diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index d1086658a07..c9abac5851b 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -11,10 +11,12 @@ /.github/CODEOWNERS @edolstra # Libraries -/lib @edolstra @nbp +/lib @edolstra @nbp @infinisil /lib/systems @nbp @ericson2314 @matthewbauer /lib/generators.nix @edolstra @nbp @Profpatsch +/lib/cli.nix @edolstra @nbp @Profpatsch /lib/debug.nix @edolstra @nbp @Profpatsch +/lib/asserts.nix @edolstra @nbp @Profpatsch # Nixpkgs Internals /default.nix @nbp @@ -29,10 +31,13 @@ /pkgs/build-support/bintools-wrapper @Ericson2314 @orivej /pkgs/build-support/setup-hooks @Ericson2314 +# Nixpkgs build-support +/pkgs/build-support/writers @lassulus @Profpatsch + # NixOS Internals -/nixos/default.nix @nbp -/nixos/lib/from-env.nix @nbp -/nixos/lib/eval-config.nix @nbp +/nixos/default.nix @nbp @infinisil +/nixos/lib/from-env.nix @nbp @infinisil +/nixos/lib/eval-config.nix @nbp @infinisil /nixos/doc/manual/configuration/abstractions.xml @nbp /nixos/doc/manual/configuration/config-file.xml @nbp /nixos/doc/manual/configuration/config-syntax.xml @nbp @@ -61,11 +66,11 @@ /doc/languages-frameworks/python.section.md @FRidh # Haskell -/pkgs/development/compilers/ghc @basvandijk @cdepillabout -/pkgs/development/haskell-modules @basvandijk @cdepillabout -/pkgs/development/haskell-modules/default.nix @basvandijk @cdepillabout -/pkgs/development/haskell-modules/generic-builder.nix @basvandijk @cdepillabout -/pkgs/development/haskell-modules/hoogle.nix @basvandijk @cdepillabout +/pkgs/development/compilers/ghc @cdepillabout +/pkgs/development/haskell-modules @cdepillabout @infinisil +/pkgs/development/haskell-modules/default.nix @cdepillabout +/pkgs/development/haskell-modules/generic-builder.nix @cdepillabout +/pkgs/development/haskell-modules/hoogle.nix @cdepillabout # Perl /pkgs/development/interpreters/perl @volth @@ -77,11 +82,12 @@ /pkgs/development/r-modules @peti # Ruby -/pkgs/development/interpreters/ruby @alyssais @zimbatm -/pkgs/development/ruby-modules @alyssais @zimbatm +/pkgs/development/interpreters/ruby @alyssais +/pkgs/development/ruby-modules @alyssais # Rust /pkgs/development/compilers/rust @Mic92 @LnL7 +/pkgs/build-support/rust @andir # Darwin-related /pkgs/stdenv/darwin @NixOS/darwin-maintainers @@ -161,7 +167,7 @@ /pkgs/top-level/emacs-packages.nix @adisbladis # VimPlugins -/pkgs/misc/vim-plugins @jonringer +/pkgs/misc/vim-plugins @jonringer @softinio # VsCode Extensions /pkgs/misc/vscode-extensions @jonringer @@ -172,6 +178,7 @@ /nixos/tests/prometheus-exporters.nix @WilliButz # PHP -/pkgs/development/interpreters/php @etu -/pkgs/top-level/php-packages.nix @etu -/pkgs/build-support/build-pecl.nix @etu +/doc/languages-frameworks/php.section.md @etu +/pkgs/development/interpreters/php @etu +/pkgs/top-level/php-packages.nix @etu +/pkgs/build-support/build-pecl.nix @etu diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 706952b208d..a50a8a507de 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -48,6 +48,15 @@ In addition to writing properly formatted commit messages, it's important to inc For package version upgrades and such a one-line commit message is usually sufficient. +## Backporting changes + +To [backport a change into a release branch](https://nixos.org/nixpkgs/manual/#submitting-changes-stable-release-branches): + +1. Take note of the commit in which the change was introduced into `master`. +2. Check out the target _release branch_, e.g. `release-19.09`. Do not use a _channel branch_ like `nixos-19.09` or `nixpkgs-19.09`. +3. Use `git cherry-pick -x `. +4. Open your backport PR. Make sure to select the release branch (e.g. `release-19.09`) as the target branch of the PR, and link to the PR in which the original change was made to `master`. + ## Reviewing contributions See the nixpkgs manual for more details on how to [Review contributions](https://nixos.org/nixpkgs/manual/#chap-reviewing-contributions). diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md index d7463385ae5..1913e321a8c 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE.md @@ -8,4 +8,4 @@ ## Technical details -Please run `nix run nixpkgs.nix-info -c nix-info -m` and paste the result. +Please run `nix-shell -p nix-info --run "nix-info -m"` and paste the result. diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 8cc9a80758d..4d3c8888f3a 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -25,8 +25,14 @@ If applicable, add screenshots to help explain your problem. **Additional context** Add any other context about the problem here. +**Notify maintainers** + + **Metadata** -Please run `nix run nixpkgs.nix-info -c nix-info -m` and paste the result. +Please run `nix-shell -p nix-info --run "nix-info -m"` and paste the result. Maintainer information: ```yaml diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 89c751f4db7..8b12c5f1aac 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -12,12 +12,8 @@ - [ ] macOS - [ ] other Linux distributions - [ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside [nixos/tests](https://github.com/NixOS/nixpkgs/blob/master/nixos/tests)) -- [ ] Tested compilation of all pkgs that depend on this change using `nix-shell -p nix-review --run "nix-review wip"` +- [ ] Tested compilation of all pkgs that depend on this change using `nix-shell -p nixpkgs-review --run "nixpkgs-review wip"` - [ ] Tested execution of all binary files (usually in `./result/bin/`) - [ ] Determined the impact on package closure size (by running `nix path-info -S` before and after) - [ ] Ensured that relevant documentation is up to date - [ ] Fits [CONTRIBUTING.md](https://github.com/NixOS/nixpkgs/blob/master/.github/CONTRIBUTING.md). - -###### Notify maintainers - -cc @ diff --git a/.gitignore b/.gitignore index b3ae9e6ea86..05ada15f43a 100644 --- a/.gitignore +++ b/.gitignore @@ -11,7 +11,11 @@ result-* .version-suffix .DS_Store +.mypy_cache /pkgs/development/libraries/qt-5/*/tmp/ /pkgs/desktops/kde-5/*/tmp/ /pkgs/development/mobile/androidenv/xml/* + +# generated by pkgs/common-updater/update-script.nix +update-git-commits.txt diff --git a/.version b/.version index 88b8320330d..3eea3c4c0e9 100644 --- a/.version +++ b/.version @@ -1 +1 @@ -20.03 \ No newline at end of file +20.09 diff --git a/COPYING b/COPYING index 9a73903d6df..a422167e117 100644 --- a/COPYING +++ b/COPYING @@ -1,4 +1,4 @@ -Copyright (c) 2003-2019 Eelco Dolstra and the Nixpkgs/NixOS contributors +Copyright (c) 2003-2020 Eelco Dolstra and the Nixpkgs/NixOS contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the diff --git a/README.md b/README.md index 15ef4048d90..edcd8dc0a00 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ * [NixOS Manual](https://nixos.org/nixos/manual) - how to install, configure, and maintain a purely-functional Linux distribution * [Nixpkgs Manual](https://nixos.org/nixpkgs/manual/) - contributing to Nixpkgs and using programming-language-specific Nix expressions -* [Nix Package Manager Manual](https://nixos.org/nix/manual) - how to write Nix expresssions (programs), and how to use Nix command line tools +* [Nix Package Manager Manual](https://nixos.org/nix/manual) - how to write Nix expressions (programs), and how to use Nix command line tools # Community @@ -24,10 +24,11 @@ * [IRC - #nixos on freenode.net](irc://irc.freenode.net/#nixos) * [NixOS Weekly](https://weekly.nixos.org/) * [Community-maintained wiki](https://nixos.wiki/) +* [Community-maintained list of ways to get in touch](https://nixos.wiki/wiki/Get_In_Touch#Chat) (Discord, Matrix, Telegram, other IRC channels, etc.) # Other Project Repositories -The sources of all offical Nix-related projects are in the [NixOS +The sources of all official Nix-related projects are in the [NixOS organization on GitHub](https://github.com/NixOS/). Here are some of the main ones: diff --git a/doc/Makefile b/doc/Makefile index e7ca31b20d7..cdef493502b 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -87,7 +87,7 @@ functions/library/generated: doc-support/result ln -rfs ./doc-support/result/function-docs functions/library/generated %.section.xml: %.section.md - pandoc $^ -w docbook+smart \ + pandoc $^ -w docbook \ -f markdown+smart \ | sed -e 's|||' \ @@ -98,7 +98,7 @@ functions/library/generated: doc-support/result | cat > $@ %.chapter.xml: %.chapter.md - pandoc $^ -w docbook+smart \ + pandoc $^ -w docbook \ --top-level-division=chapter \ -f markdown+smart \ | sed -e 's| src = fetchurl { - url = https://github.com/ssbc/patchwork/releases/download/v3.11.4/Patchwork-3.11.4-linux-x86_64.AppImage; + url = "https://github.com/ssbc/patchwork/releases/download/v3.11.4/Patchwork-3.11.4-linux-x86_64.AppImage"; sha256 = "1blsprpkvm0ws9b96gb36f0rbf8f5jgmw4x6dsb1kswr4ysf591s"; }; extraPkgs = pkgs: with pkgs; [ ]; @@ -80,7 +80,7 @@ appimageTools.wrapType2 { # or wrapType1 src specifies the AppImage file to extract. - + extraPkgs allows you to pass a function to include additional packages inside the FHS environment your AppImage is going to run in. There are a few ways to learn which dependencies an application needs: diff --git a/doc/builders/images/ocitools.xml b/doc/builders/images/ocitools.xml index f61075b242f..e8cd3472f54 100644 --- a/doc/builders/images/ocitools.xml +++ b/doc/builders/images/ocitools.xml @@ -25,7 +25,7 @@ buildContainer { args = [ (with pkgs; writeScript "run.sh" '' #!${bash}/bin/bash - ${coreutils}/bin/exec ${bash}/bin/bash + exec ${bash}/bin/bash '').outPath ]; mounts = { diff --git a/doc/builders/packages/index.xml b/doc/builders/packages/index.xml index 9f3f58a8d90..4e109bd1c59 100644 --- a/doc/builders/packages/index.xml +++ b/doc/builders/packages/index.xml @@ -18,6 +18,7 @@ + diff --git a/doc/builders/packages/urxvt.xml b/doc/builders/packages/urxvt.xml new file mode 100644 index 00000000000..f85680cecc4 --- /dev/null +++ b/doc/builders/packages/urxvt.xml @@ -0,0 +1,101 @@ +
+ Urxvt + + + Urxvt, also known as rxvt-unicode, is a highly customizable terminal emulator. + + +
+ + Configuring urxvt + + + In nixpkgs, urxvt is provided by the package + rxvt-unicode. It can be configured to include your choice + of plugins, reducing its closure size from the default configuration which + includes all available plugins. To make use of this functionality, use an + overlay or directly install an expression that overrides its configuration, + such as + rxvt-unicode.override { configure = { availablePlugins, ... }: { + plugins = with availablePlugins; [ perls resize-font vtwheel ]; + } +} + If the configure function returns an attrset without the + plugins attribute, availablePlugins + will be used automatically. + + + + In order to add plugins but also keep all default plugins installed, it is + possible to use the following method: + rxvt-unicode.override { configure = { availablePlugins, ... }: { + plugins = (builtins.attrValues availablePlugins) ++ [ custom-plugin ]; + }; +} + + + + To get a list of all the plugins available, open the Nix REPL and run + $ nix repl +:l <nixpkgs> +map (p: p.name) pkgs.rxvt-unicode.plugins + + Alternatively, if your shell is bash or zsh and have completion enabled, + simply type nixpkgs.rxvt-unicode.plugins.<tab>. + + + + In addition to plugins the options + extraDeps and perlDeps can be used + to install extra packages. + extraDeps can be used, for example, to provide + xsel (a clipboard manager) to the clipboard plugin, + without installing it globally: + rxvt-unicode.override { configure = { availablePlugins, ... }: { + pluginsDeps = [ xsel ]; + } +} + + perlDeps is a handy way to provide Perl packages to + your custom plugins (in $HOME/.urxvt/ext). For example, + if you need AnyEvent you can do: + rxvt-unicode.override { configure = { availablePlugins, ... }: { + perlDeps = with perlPackages; [ AnyEvent ]; + } +} + + +
+ +
+ + Packaging urxvt plugins + + + Urxvt plugins resides in + pkgs/applications/misc/rxvt-unicode-plugins. + To add a new plugin create an expression in a subdirectory and add the + package to the set in + pkgs/applications/misc/rxvt-unicode-plugins/default.nix. + + + + A plugin can be any kind of derivation, the only requirement is that it + should always install perl scripts in $out/lib/urxvt/perl. + Look for existing plugins for examples. + + + + If the plugin is itself a perl package that needs to be imported from + other plugins or scripts, add the following passthrough: + passthru.perlPackages = [ "self" ]; + + This will make the urxvt wrapper pick up the dependency and set up the perl + path accordingly. + + +
+ +
diff --git a/doc/contributing/quick-start.xml b/doc/contributing/quick-start.xml index 80514cba490..8e4e914d451 100644 --- a/doc/contributing/quick-start.xml +++ b/doc/contributing/quick-start.xml @@ -69,8 +69,7 @@ JDiskReport, a Java utility: pkgs/tools/misc/jdiskreport/default.nix (and the builder). Nixpkgs doesn’t have a decent stdenv for Java yet so this is pretty ad-hoc. + xlink:href="https://github.com/NixOS/nixpkgs/blob/master/pkgs/tools/misc/jdiskreport/default.nix">pkgs/tools/misc/jdiskreport/default.nix. Nixpkgs doesn’t have a decent stdenv for Java yet so this is pretty ad-hoc. diff --git a/doc/contributing/reviewing-contributions.xml b/doc/contributing/reviewing-contributions.xml index ed8f379c460..fe79d8d992b 100644 --- a/doc/contributing/reviewing-contributions.xml +++ b/doc/contributing/reviewing-contributions.xml @@ -141,10 +141,10 @@ - The nix-review tool can be used to review a pull request content in a single command. PRNUMBER should be replaced by the number at the end of the pull request title. You can also provide the full github pull request url. + The nixpkgs-review tool can be used to review a pull request content in a single command. PRNUMBER should be replaced by the number at the end of the pull request title. You can also provide the full github pull request url. -$ nix-shell -p nix-review --run "nix-review pr PRNUMBER" +$ nix-shell -p nixpkgs-review --run "nixpkgs-review pr PRNUMBER"
diff --git a/doc/contributing/submitting-changes.xml b/doc/contributing/submitting-changes.xml index 950e1ea974a..73222c1a49a 100644 --- a/doc/contributing/submitting-changes.xml +++ b/doc/contributing/submitting-changes.xml @@ -13,7 +13,7 @@ - Fork the repository on GitHub. + Fork the Nixpkgs repository on GitHub. @@ -22,15 +22,10 @@ - You can make branch from a commit of your local nixos-version. That will help you to avoid additional local compilations. Because you will receive packages from binary cache. - - - - For example: nixos-version returns 15.05.git.0998212 (Dingo). So you can do: - - - + You can make branch from a commit of your local nixos-version. That will help you to avoid additional local compilations. Because you will receive packages from binary cache. For example +$ nixos-version --hash +0998212 $ git checkout 0998212 $ git checkout -b 'fix/pkg-name-update' @@ -47,13 +42,11 @@ Make commits of logical units. - - - - If you removed pkgs, made some major NixOS changes etc., write about them in nixos/doc/manual/release-notes/rl-unstable.xml. - - - + + + + + If you removed pkgs or made some major NixOS changes, write about it in the release notes for the next stable release. For example nixos/doc/manual/release-notes/rl-2003.xml. @@ -178,7 +171,7 @@ Additional information. - Rebase you branch against current master. + Rebase your branch against current master. @@ -194,36 +187,12 @@ Additional information. - Create pull request: - - - - Write the title in format (pkg-name | nixos/<module>): improvement. - - - - If you update the pkg, write versions from -> to. - - - - - - - - Write in comment if you have tested your patch. Do not rely much on TravisCI. - - - - - If you make an improvement, write about your motivation. - - - - - Notify maintainers of the package. For example add to the message: cc @jagajaga @domenkozar. - - - + Create the pull request + + + + + Follow the contribution guidelines. @@ -317,25 +286,25 @@ Additional information.
- Tested compilation of all pkgs that depend on this change using <command>nix-review</command> + Tested compilation of all pkgs that depend on this change using <command>nixpkgs-review</command> - If you are updating a package's version, you can use nix-review to make sure all packages that depend on the updated package still compile correctly. The nix-review utility can look for and build all dependencies either based on uncommited changes with the wip option or specifying a github pull request number. + If you are updating a package's version, you can use nixpkgs-review to make sure all packages that depend on the updated package still compile correctly. The nixpkgs-review utility can look for and build all dependencies either based on uncommited changes with the wip option or specifying a github pull request number. review changes from pull request number 12345: - nix run nixpkgs.nix-review -c nix-review pr 12345 + nix run nixpkgs.nixpkgs-review -c nixpkgs-review pr 12345 review uncommitted changes: - nix run nixpkgs.nix-review -c nix-review wip + nix run nixpkgs.nixpkgs-review -c nixpkgs-review wip review changes from last commit: - nix run nixpkgs.nix-review -c nix-review rev HEAD + nix run nixpkgs.nixpkgs-review -c nixpkgs-review rev HEAD
@@ -408,7 +377,7 @@ Additional information.
Master branch - The master branch is the main development branch. + The master branch is the main development branch. It should only see non-breaking commits that do not cause mass rebuilds.
@@ -416,8 +385,8 @@ Additional information.
Staging branch - The staging branch is a development branch where mass-rebuilds go. - It should only see non-breaking mass-rebuild commits. + The staging branch is a development branch where mass-rebuilds go. + It should only see non-breaking mass-rebuild commits. That means it is not to be used for testing, and changes must have been well tested already. If the branch is already in a broken state, please refrain from adding extra new breakages. @@ -426,10 +395,10 @@ Additional information.
Staging-next branch - The staging-next branch is for stabilizing mass-rebuilds submitted to the staging branch prior to merging them into master. - Mass-rebuilds should go via the staging branch. + The staging-next branch is for stabilizing mass-rebuilds submitted to the staging branch prior to merging them into master. + Mass-rebuilds should go via the staging branch. It should only see non-breaking commits that are fixing issues blocking it from being merged into the master branch. - + If the branch is already in a broken state, please refrain from adding extra new breakages. Stabilize it for a few days and then merge into master. diff --git a/doc/functions/library/attrsets.xml b/doc/functions/library/attrsets.xml index f9234069392..3c5823c2589 100644 --- a/doc/functions/library/attrsets.xml +++ b/doc/functions/library/attrsets.xml @@ -302,7 +302,7 @@ lib.attrsets.attrValues { a = 1; b = 2; c = 3; }
<function>lib.attrsets.catAttrs</function> - catAttrs :: String -> AttrSet -> [Any] + catAttrs :: String -> [AttrSet] -> [Any] @@ -1667,4 +1667,48 @@ recursiveUpdate ]]>
+ +
+ <function>lib.attrsets.recurseIntoAttrs</function> + + recurseIntoAttrs :: AttrSet -> AttrSet + + + + + + Make various Nix tools consider the contents of the resulting + attribute set when looking for what to build, find, etc. + + + + This function only affects a single attribute set; it does not apply itself recursively for nested attribute sets. + + + + + + attrs + + + + An attribute set to scan for derivations. + + + + + + + Making Nix look inside an attribute set + {} }: +{ + myTools = pkgs.lib.recurseIntoAttrs { + inherit (pkgs) hello figlet; + }; +} +]]> + +
+
diff --git a/doc/languages-frameworks/android.section.md b/doc/languages-frameworks/android.section.md index 9a5df2523a2..6ee450eeb59 100644 --- a/doc/languages-frameworks/android.section.md +++ b/doc/languages-frameworks/android.section.md @@ -186,7 +186,7 @@ with import {}; androidenv.emulateApp { name = "emulate-MyAndroidApp"; platformVersion = "28"; - abiVersion = "x86_64"; # armeabi-v7a, mips, x86 + abiVersion = "x86"; # armeabi-v7a, mips, x86_64 systemImageType = "google_apis_playstore"; } ``` @@ -235,5 +235,5 @@ package manager uses. To update the expressions run the `generate.sh` script that is stored in the `pkgs/development/mobile/androidenv/` sub directory: ```bash -sh ./generate.sh +./generate.sh ``` diff --git a/doc/languages-frameworks/crystal.section.md b/doc/languages-frameworks/crystal.section.md index 07bfc65a553..af0853dbf75 100644 --- a/doc/languages-frameworks/crystal.section.md +++ b/doc/languages-frameworks/crystal.section.md @@ -66,6 +66,6 @@ crystal.buildCrystalPackage rec { shardsFile = ./shards.nix; crystalBinaries.mint.src = "src/mint.cr"; - buildInputs = [ openssl_1_0_2 ]; + buildInputs = [ openssl ]; } ``` diff --git a/doc/languages-frameworks/dotnet.section.md b/doc/languages-frameworks/dotnet.section.md new file mode 100644 index 00000000000..c56f4728bed --- /dev/null +++ b/doc/languages-frameworks/dotnet.section.md @@ -0,0 +1,75 @@ +# Dotnet + +## Local Development Workflow + +For local development, it's recommended to use nix-shell to create a dotnet environment: + +``` +# shell.nix +with import {}; + +mkShell { + name = "dotnet-env"; + buildInputs = [ + dotnet-sdk_3 + ]; +} +``` + +### Using many sdks in a workflow + +It's very likely that more than one sdk will be needed on a given project. Dotnet provides several different frameworks (E.g dotnetcore, aspnetcore, etc.) as well as many versions for a given framework. Normally, dotnet is able to fetch a framework and install it relative to the executable. However, this would mean writing to the nix store in nixpkgs, which is read-only. To support the many-sdk use case, one can compose an environment using `dotnetCorePackages.combinePackages`: + +``` +with import {}; + +mkShell { + name = "dotnet-env"; + buildInputs = [ + (with dotnetCorePackages; combinePackages [ + sdk_3_1 + sdk_3_0 + sdk_2_1 + ]) + ]; +} +``` + +This will produce a dotnet installation that has the dotnet 3.1, 3.0, and 2.1 sdk. The first sdk listed will have it's cli utility present in the resulting environment. Example info output: + +``` +$ dotnet --info +.NET Core SDK (reflecting any global.json): + Version: 3.1.101 + Commit: b377529961 + +... + +.NET Core SDKs installed: + 2.1.803 [/nix/store/iiv98i2jdi226dgh4jzkkj2ww7f8jgpd-dotnet-core-combined/sdk] + 3.0.102 [/nix/store/iiv98i2jdi226dgh4jzkkj2ww7f8jgpd-dotnet-core-combined/sdk] + 3.1.101 [/nix/store/iiv98i2jdi226dgh4jzkkj2ww7f8jgpd-dotnet-core-combined/sdk] + +.NET Core runtimes installed: + Microsoft.AspNetCore.All 2.1.15 [/nix/store/iiv98i2jdi226dgh4jzkkj2ww7f8jgpd-dotnet-core-combined/shared/Microsoft.AspNetCore.All] + Microsoft.AspNetCore.App 2.1.15 [/nix/store/iiv98i2jdi226dgh4jzkkj2ww7f8jgpd-dotnet-core-combined/shared/Microsoft.AspNetCore.App] + Microsoft.AspNetCore.App 3.0.2 [/nix/store/iiv98i2jdi226dgh4jzkkj2ww7f8jgpd-dotnet-core-combined/shared/Microsoft.AspNetCore.App] + Microsoft.AspNetCore.App 3.1.1 [/nix/store/iiv98i2jdi226dgh4jzkkj2ww7f8jgpd-dotnet-core-combined/shared/Microsoft.AspNetCore.App] + Microsoft.NETCore.App 2.1.15 [/nix/store/iiv98i2jdi226dgh4jzkkj2ww7f8jgpd-dotnet-core-combined/shared/Microsoft.NETCore.App] + Microsoft.NETCore.App 3.0.2 [/nix/store/iiv98i2jdi226dgh4jzkkj2ww7f8jgpd-dotnet-core-combined/shared/Microsoft.NETCore.App] + Microsoft.NETCore.App 3.1.1 [/nix/store/iiv98i2jdi226dgh4jzkkj2ww7f8jgpd-dotnet-core-combined/shared/Microsoft.NETCore.App] +``` + +## dotnet-sdk vs dotnetCorePackages.sdk + +The `dotnetCorePackages.sdk_X_Y` is preferred over the old dotnet-sdk as both major and minor version are very important for a dotnet environment. If a given minor version isn't present (or was changed), then this will likely break your ability to build a project. + +## dotnetCorePackages.sdk vs dotnetCorePackages.netcore vs dotnetCorePackages.aspnetcore + +The `dotnetCorePackages.sdk` contains both a runtime and the full sdk of a given version. The `netcore` and `aspnetcore` packages are meant to serve as minimal runtimes to deploy alongside already built applications. + +## Packaging a Dotnet Application + +Ideally, we would like to build against the sdk, then only have the dotnet runtime available in the runtime closure. + +TODO: Create closure-friendly way to package dotnet applications diff --git a/doc/languages-frameworks/gnome.xml b/doc/languages-frameworks/gnome.xml index bb68d026ae2..7671714d8a9 100644 --- a/doc/languages-frameworks/gnome.xml +++ b/doc/languages-frameworks/gnome.xml @@ -233,7 +233,7 @@ mkDerivation { - You can rely on applications depending on the library set the necessary environment variables but that it often easy to miss. Instead we recommend to patch the paths in the source code whenever possible. Here are some examples: + You can rely on applications depending on the library setting the necessary environment variables but that is often easy to miss. Instead we recommend to patch the paths in the source code whenever possible. Here are some examples: diff --git a/doc/languages-frameworks/go.xml b/doc/languages-frameworks/go.xml index bd1ee8eba27..84b146532b1 100644 --- a/doc/languages-frameworks/go.xml +++ b/doc/languages-frameworks/go.xml @@ -42,7 +42,7 @@ pet = buildGoModule rec { meta = with lib; { description = "Simple command-line snippet manager, written in Go"; - homepage = https://github.com/knqyf263/pet; + homepage = "https://github.com/knqyf263/pet"; license = licenses.mit; maintainers = with maintainers; [ kalbasit ]; platforms = platforms.linux ++ platforms.darwin; @@ -66,6 +66,15 @@ pet = buildGoModule rec { + + + modSha256 can also take null as an input. + + When `null` is used as a value, the derivation won't be a + fixed-output derivation but disable the build sandbox instead. This can be useful outside + of nixpkgs where re-generating the modSha256 on each mod.sum changes is cumbersome, + but will fail to build by Hydra, as builds with a disabled sandbox are discouraged. +
@@ -94,7 +103,7 @@ deis = buildGoPackage rec { goDeps = ./deps.nix; - buildFlags = "--tags release"; + buildFlags = [ "--tags" "release" ]; } diff --git a/doc/languages-frameworks/haskell.section.md b/doc/languages-frameworks/haskell.section.md index be5c7b7c8d1..733e75c16a7 100644 --- a/doc/languages-frameworks/haskell.section.md +++ b/doc/languages-frameworks/haskell.section.md @@ -84,37 +84,38 @@ nix-env -qaP -A nixos.haskellPackages nix-env -iA nixos.haskellPackages.cabal-install ``` -Our current default compiler is GHC 7.10.x and the `haskellPackages` set -contains packages built with that particular version. Nixpkgs contains the -latest major release of every GHC since 6.10.4, however, and there is a whole -family of package sets available that defines Hackage packages built with each -of those compilers, too: +Our current default compiler is GHC 8.8.x and the `haskellPackages` set +contains packages built with that particular version. Nixpkgs contains the last +three major releases of GHC and there is a whole family of package sets +available that defines Hackage packages built with each of those compilers, +too: ```shell -nix-env -f "" -qaP -A haskell.packages.ghc6123 -nix-env -f "" -qaP -A haskell.packages.ghc763 +nix-env -f "" -qaP -A haskell.packages.ghc865 +nix-env -f "" -qaP -A haskell.packages.ghc8101 ``` The name `haskellPackages` is really just a synonym for -`haskell.packages.ghc7102`, because we prefer that package set internally and +`haskell.packages.ghc882`, because we prefer that package set internally and recommend it to our users as their default choice, but ultimately you are free to compile your Haskell packages with any GHC version you please. The following command displays the complete list of available compilers: ``` $ nix-env -f "" -qaP -A haskell.compiler -haskell.compiler.ghc822 ghc-8.2.2 -haskell.compiler.integer-simple.ghc822 ghc-8.2.2 +haskell.compiler.ghc8101 ghc-8.10.1 +haskell.compiler.integer-simple.ghc8101 ghc-8.10.1 +haskell.compiler.ghcHEAD ghc-8.11.20200403 +haskell.compiler.integer-simple.ghcHEAD ghc-8.11.20200403 haskell.compiler.ghc822Binary ghc-8.2.2-binary haskell.compiler.ghc844 ghc-8.4.4 haskell.compiler.ghc863Binary ghc-8.6.3-binary -haskell.compiler.ghc864 ghc-8.6.4 -haskell.compiler.integer-simple.ghc864 ghc-8.6.4 haskell.compiler.ghc865 ghc-8.6.5 haskell.compiler.integer-simple.ghc865 ghc-8.6.5 haskell.compiler.ghc881 ghc-8.8.1 haskell.compiler.integer-simple.ghc881 ghc-8.8.1 -haskell.compiler.ghcHEAD ghc-8.9.20190601 -haskell.compiler.integer-simple.ghcHEAD ghc-8.9.20190601 -haskell.compiler.ghcjs84 ghcjs-8.4.0.1 +haskell.compiler.ghc882 ghc-8.8.2 +haskell.compiler.integer-simple.ghc882 ghc-8.8.2 +haskell.compiler.ghc883 ghc-8.8.3 +haskell.compiler.integer-simple.ghc883 ghc-8.8.3 haskell.compiler.ghcjs ghcjs-8.6.0.1 ``` @@ -368,7 +369,7 @@ automatically select the right version of GHC and other build tools to build, test and execute apps in an existing project downloaded from somewhere on the Internet. Pass the `--nix` flag to any `stack` command to do so, e.g. ```shell -git clone --recursive https://github.com/yesodweb/wai +git clone --recurse-submodules https://github.com/yesodweb/wai.git cd wai stack --nix build ``` diff --git a/doc/languages-frameworks/idris.section.md b/doc/languages-frameworks/idris.section.md index 8d7962d7fb9..f071b9ce178 100644 --- a/doc/languages-frameworks/idris.section.md +++ b/doc/languages-frameworks/idris.section.md @@ -96,7 +96,7 @@ build-idris-package { meta = { description = "Idris YAML lib"; - homepage = https://github.com/Heather/Idris.Yaml; + homepage = "https://github.com/Heather/Idris.Yaml"; license = lib.licenses.mit; maintainers = [ lib.maintainers.brainrape ]; }; diff --git a/doc/languages-frameworks/ocaml.xml b/doc/languages-frameworks/ocaml.xml index a0ea209b493..3f72092ec15 100644 --- a/doc/languages-frameworks/ocaml.xml +++ b/doc/languages-frameworks/ocaml.xml @@ -36,7 +36,7 @@ buildDunePackage rec { doCheck = true; meta = { - homepage = https://github.com/inhabitedtype/angstrom; + homepage = "https://github.com/inhabitedtype/angstrom"; description = "OCaml parser combinators built for speed and memory efficiency"; license = stdenv.lib.licenses.bsd3; maintainers = with stdenv.lib.maintainers; [ sternenseemann ]; @@ -63,7 +63,7 @@ buildDunePackage rec { }; meta = with stdenv.lib; { - homepage = https://github.com/flowtype/ocaml-wtf8; + homepage = "https://github.com/flowtype/ocaml-wtf8"; description = "WTF-8 is a superset of UTF-8 that allows unpaired surrogates."; license = licenses.mit; maintainers = [ maintainers.eqyiel ]; diff --git a/doc/languages-frameworks/php.section.md b/doc/languages-frameworks/php.section.md new file mode 100644 index 00000000000..a302a9a7f87 --- /dev/null +++ b/doc/languages-frameworks/php.section.md @@ -0,0 +1,112 @@ +# PHP + +## User Guide + +### Using PHP + +#### Overview + +Several versions of PHP are available on Nix, each of which having a +wide variety of extensions and libraries available. + +The attribute `php` refers to the version of PHP considered most +stable and thoroughly tested in nixpkgs for any given release of +NixOS. Note that while this version of PHP may not be the latest major +release from upstream, any version of PHP supported in nixpkgs may be +utilized by specifying the desired attribute by version, such as +`php74`. + +Only versions of PHP that are supported by upstream for the entirety +of a given NixOS release will be included in that release of +NixOS. See [PHP Supported +Versions](https://www.php.net/supported-versions.php). + +Interactive tools built on PHP are put in `php.packages`; composer is +for example available at `php.packages.composer`. + +Most extensions that come with PHP, as well as some popular +third-party ones, are available in `php.extensions`; for example, the +opcache extension shipped with PHP is available at +`php.extensions.opcache` and the third-party ImageMagick extension at +`php.extensions.imagick`. + +The different versions of PHP that nixpkgs provides is located under +attributes named based on major and minor version number; e.g., +`php74` is PHP 7.4 with commonly used extensions installed, +`php74base` is the same PHP runtime without extensions. + +#### Installing PHP with packages + +A PHP package with specific extensions enabled can be built using +`php.withExtensions`. This is a function which accepts an anonymous +function as its only argument; the function should take one argument, +the set of all extensions, and return a list of wanted extensions. For +example, a PHP package with the opcache and ImageMagick extensions +enabled: + +```nix +php.withExtensions (e: with e; [ imagick opcache ]) +``` + +Note that this will give you a package with _only_ opcache and +ImageMagick, none of the other extensions which are enabled by default +in the `php` package will be available. + +To enable building on a previous PHP package, the currently enabled +extensions are made available in its `enabledExtensions` +attribute. For example, to generate a package with all default +extensions enabled, except opcache, but with ImageMagick: + +```nix +php.withExtensions (e: + (lib.filter (e: e != php.extensions.opcache) php.enabledExtensions) + ++ [ e.imagick ]) +``` + +If you want a PHP build with extra configuration in the `php.ini` +file, you can use `php.buildEnv`. This function takes two named and +optional parameters: `extensions` and `extraConfig`. `extensions` +takes an extension specification equivalent to that of +`php.withExtensions`, `extraConfig` a string of additional `php.ini` +configuration parameters. For example, a PHP package with the opcache +and ImageMagick extensions enabled, and `memory_limit` set to `256M`: + +```nix +php.buildEnv { + extensions = e: with e; [ imagick opcache ]; + extraConfig = "memory_limit=256M"; +} +``` + +##### Example setup for `phpfpm` + +You can use the previous examples in a `phpfpm` pool called `foo` as +follows: + +```nix +let + myPhp = php.withExtensions (e: with e; [ imagick opcache ]); +in { + services.phpfpm.pools."foo".phpPackage = myPhp; +}; +``` + +```nix +let + myPhp = php.buildEnv { + extensions = e: with e; [ imagick opcache ]; + extraConfig = "memory_limit=256M"; + }; +in { + services.phpfpm.pools."foo".phpPackage = myPhp; +}; +``` + +##### Example usage with `nix-shell` + +This brings up a temporary environment that contains a PHP interpreter +with the extensions `imagick` and `opcache` enabled. + +```sh +nix-shell -p 'php.buildEnv { extensions = e: with e; [ imagick opcache ]; }' +``` diff --git a/doc/languages-frameworks/python.section.md b/doc/languages-frameworks/python.section.md index 9cb0e1eecc1..f8884785e90 100644 --- a/doc/languages-frameworks/python.section.md +++ b/doc/languages-frameworks/python.section.md @@ -72,8 +72,9 @@ Now you can use the Python interpreter, as well as the extra packages (`numpy`, ##### Environment defined in `~/.config/nixpkgs/config.nix` -If you prefer to, you could also add the environment as a package override to the Nixpkgs set, e.g. -using `config.nix`, +If you prefer you could also add the environment as a package override to the +Nixpkgs set, e.g. using `config.nix`, + ```nix { # ... @@ -83,15 +84,18 @@ using `config.nix`, } ``` and install it in your profile with + ```shell nix-env -iA nixpkgs.myEnv ``` + The environment is is installed by referring to the attribute, and considering the `nixpkgs` channel was used. ##### Environment defined in `/etc/nixos/configuration.nix` -For the sake of completeness, here's another example how to install the environment system-wide. +For the sake of completeness, here's another example how to install the +environment system-wide. ```nix { # ... @@ -109,40 +113,56 @@ into a profile. For development you may need to use multiple environments. `nix-shell` gives the possibility to temporarily load another environment, akin to `virtualenv`. -There are two methods for loading a shell with Python packages. The first and recommended method -is to create an environment with `python.buildEnv` or `python.withPackages` and load that. E.g. +There are two methods for loading a shell with Python packages. The first and +recommended method is to create an environment with `python.buildEnv` or +`python.withPackages` and load that. E.g. + ```sh $ nix-shell -p 'python35.withPackages(ps: with ps; [ numpy toolz ])' ``` + opens a shell from which you can launch the interpreter + ```sh [nix-shell:~] python3 ``` -The other method, which is not recommended, does not create an environment and requires you to list the packages directly, + +The other method, which is not recommended, does not create an environment and +requires you to list the packages directly, ```sh $ nix-shell -p python35.pkgs.numpy python35.pkgs.toolz ``` -Again, it is possible to launch the interpreter from the shell. -The Python interpreter has the attribute `pkgs` which contains all Python libraries for that specific interpreter. + +Again, it is possible to launch the interpreter from the shell. The Python +interpreter has the attribute `pkgs` which contains all Python libraries for +that specific interpreter. ##### Load environment from `.nix` expression As explained in the Nix manual, `nix-shell` can also load an expression from a `.nix` file. Say we want to have Python 3.5, `numpy` and `toolz`, like before, in an environment. Consider a `shell.nix` file with + ```nix with import {}; (python35.withPackages (ps: [ps.numpy ps.toolz])).env ``` + Executing `nix-shell` gives you again a Nix shell from which you can run Python. What's happening here? -1. We begin with importing the Nix Packages collections. `import ` imports the `` function, `{}` calls it and the `with` statement brings all attributes of `nixpkgs` in the local scope. These attributes form the main package set. +1. We begin with importing the Nix Packages collections. `import ` + imports the `` function, `{}` calls it and the `with` statement + brings all attributes of `nixpkgs` in the local scope. These attributes form + the main package set. 2. Then we create a Python 3.5 environment with the `withPackages` function. -3. The `withPackages` function expects us to provide a function as an argument that takes the set of all python packages and returns a list of packages to include in the environment. Here, we select the packages `numpy` and `toolz` from the package set. +3. The `withPackages` function expects us to provide a function as an argument + that takes the set of all python packages and returns a list of packages to + include in the environment. Here, we select the packages `numpy` and `toolz` + from the package set. To combine this with `mkShell` you can: @@ -166,20 +186,23 @@ in mkShell { A convenient option with `nix-shell` is the `--run` option, with which you can execute a command in the `nix-shell`. We can e.g. directly open a Python shell + ```sh $ nix-shell -p python35Packages.numpy python35Packages.toolz --run "python3" ``` + or run a script + ```sh $ nix-shell -p python35Packages.numpy python35Packages.toolz --run "python3 myscript.py" ``` ##### `nix-shell` as shebang -In fact, for the second use case, there is a more convenient method. You can -add a [shebang](https://en.wikipedia.org/wiki/Shebang_(Unix)) to your script +In fact, for the second use case, there is a more convenient method. You can add +a [shebang](https://en.wikipedia.org/wiki/Shebang_(Unix)) to your script specifying which dependencies `nix-shell` needs. With the following shebang, you -can just execute `./myscript.py`, and it will make available all dependencies and -run the script in the `python3` shell. +can just execute `./myscript.py`, and it will make available all dependencies +and run the script in the `python3` shell. ```py #! /usr/bin/env nix-shell @@ -218,7 +241,7 @@ buildPythonPackage rec { doCheck = false; meta = with lib; { - homepage = https://github.com/pytoolz/toolz; + homepage = "https://github.com/pytoolz/toolz"; description = "List processing tools and functional utilities"; license = licenses.bsd3; maintainers = with maintainers; [ fridh ]; @@ -270,6 +293,7 @@ with import {}; in python35.withPackages (ps: [ps.numpy my_toolz]) ).env ``` + Executing `nix-shell` will result in an environment in which you can use Python 3.5 and the `toolz` package. As you can see we had to explicitly mention for which Python version we want to build a package. @@ -311,7 +335,7 @@ buildPythonPackage rec { propagatedBuildInputs = [ numpy multipledispatch dateutil ]; meta = with lib; { - homepage = https://github.com/ContinuumIO/datashape; + homepage = "https://github.com/ContinuumIO/datashape"; description = "A data description language"; license = licenses.bsd2; maintainers = with maintainers; [ fridh ]; @@ -345,7 +369,7 @@ buildPythonPackage rec { meta = with lib; { description = "Pythonic binding for the libxml2 and libxslt libraries"; - homepage = https://lxml.de; + homepage = "https://lxml.de"; license = licenses.bsd3; maintainers = with maintainers; [ sjourdois ]; }; @@ -355,12 +379,12 @@ buildPythonPackage rec { In this example `lxml` and Nix are able to work out exactly where the relevant files of the dependencies are. This is not always the case. -The example below shows bindings to The Fastest Fourier Transform in the West, commonly known as -FFTW. On Nix we have separate packages of FFTW for the different types of floats -(`"single"`, `"double"`, `"long-double"`). The bindings need all three types, -and therefore we add all three as `buildInputs`. The bindings don't expect to -find each of them in a different folder, and therefore we have to set `LDFLAGS` -and `CFLAGS`. +The example below shows bindings to The Fastest Fourier Transform in the West, +commonly known as FFTW. On Nix we have separate packages of FFTW for the +different types of floats (`"single"`, `"double"`, `"long-double"`). The +bindings need all three types, and therefore we add all three as `buildInputs`. +The bindings don't expect to find each of them in a different folder, and +therefore we have to set `LDFLAGS` and `CFLAGS`. ```nix { lib, pkgs, buildPythonPackage, fetchPypi, numpy, scipy }: @@ -388,7 +412,7 @@ buildPythonPackage rec { meta = with lib; { description = "A pythonic wrapper around FFTW, the FFT library, presenting a unified interface for all the supported transforms"; - homepage = http://hgomersall.github.com/pyFFTW; + homepage = "http://hgomersall.github.com/pyFFTW"; license = with licenses; [ bsd2 bsd3 ]; maintainers = with maintainers; [ fridh ]; }; @@ -404,17 +428,18 @@ instead of installing the package this command creates a special link to the pro That way, you can run updated code without having to reinstall after each and every change you make. Development mode is also available. Let's see how you can use it. -In the previous Nix expression the source was fetched from an url. We can also refer to a local source instead using -`src = ./path/to/source/tree;` +In the previous Nix expression the source was fetched from an url. We can also +refer to a local source instead using `src = ./path/to/source/tree;` If we create a `shell.nix` file which calls `buildPythonPackage`, and if `src` is a local source, and if the local source has a `setup.py`, then development mode is activated. -In the following example we create a simple environment that -has a Python 3.5 version of our package in it, as well as its dependencies and -other packages we like to have in the environment, all specified with `propagatedBuildInputs`. -Indeed, we can just add any package we like to have in our environment to `propagatedBuildInputs`. +In the following example we create a simple environment that has a Python 3.5 +version of our package in it, as well as its dependencies and other packages we +like to have in the environment, all specified with `propagatedBuildInputs`. +Indeed, we can just add any package we like to have in our environment to +`propagatedBuildInputs`. ```nix with import {}; @@ -427,7 +452,8 @@ buildPythonPackage rec { } ``` -It is important to note that due to how development mode is implemented on Nix it is not possible to have multiple packages simultaneously in development mode. +It is important to note that due to how development mode is implemented on Nix +it is not possible to have multiple packages simultaneously in development mode. ### Organising your packages @@ -496,14 +522,14 @@ and in this case the `python35` interpreter is automatically used. ### Interpreters -Versions 2.7, 3.5, 3.6 and 3.7 of the CPython interpreter are available as -respectively `python27`, `python35`, `python36` and `python37`. The aliases -`python2` and `python3` correspond to respectively `python27` and +Versions 2.7, 3.5, 3.6, 3.7 and 3.8 of the CPython interpreter are available as +respectively `python27`, `python35`, `python36`, `python37` and `python38`. The +aliases `python2` and `python3` correspond to respectively `python27` and `python37`. The default interpreter, `python`, maps to `python2`. The PyPy interpreters compatible with Python 2.7 and 3 are available as `pypy27` and -`pypy3`, with aliases `pypy2` mapping to `pypy27` and `pypy` mapping to -`pypy2`. The Nix expressions for the interpreters can be -found in `pkgs/development/interpreters/python`. +`pypy3`, with aliases `pypy2` mapping to `pypy27` and `pypy` mapping to `pypy2`. +The Nix expressions for the interpreters can be found in +`pkgs/development/interpreters/python`. All packages depending on any Python interpreter get appended `out/{python.sitePackages}` to `$PYTHONPATH` if such directory @@ -532,9 +558,10 @@ Python libraries and applications that use `setuptools` or `buildPythonApplication` functions. These two functions also support installing a `wheel`. All Python packages reside in `pkgs/top-level/python-packages.nix` and all -applications elsewhere. In case a package is used as both a library and an application, -then the package should be in `pkgs/top-level/python-packages.nix` since only those packages are made -available for all interpreter versions. The preferred location for library expressions is in +applications elsewhere. In case a package is used as both a library and an +application, then the package should be in `pkgs/top-level/python-packages.nix` +since only those packages are made available for all interpreter versions. The +preferred location for library expressions is in `pkgs/development/python-modules`. It is important that these packages are called from `pkgs/top-level/python-packages.nix` and not elsewhere, to guarantee the right version of the package is built. @@ -562,6 +589,7 @@ The `buildPythonPackage` function is implemented in using setup hooks. The following is an example: + ```nix { lib, buildPythonPackage, fetchPypi, hypothesis, setuptools_scm, attrs, py, setuptools, six, pluggy }: @@ -608,38 +636,67 @@ as the interpreter unless overridden otherwise. ##### `buildPythonPackage` parameters -All parameters from `stdenv.mkDerivation` function are still supported. The following are specific to `buildPythonPackage`: +All parameters from `stdenv.mkDerivation` function are still supported. The +following are specific to `buildPythonPackage`: -* `catchConflicts ? true`: If `true`, abort package build if a package name appears more than once in dependency tree. Default is `true`. -* `disabled` ? false: If `true`, package is not built for the particular Python interpreter version. +* `catchConflicts ? true`: If `true`, abort package build if a package name + appears more than once in dependency tree. Default is `true`. +* `disabled` ? false: If `true`, package is not built for the particular Python + interpreter version. * `dontWrapPythonPrograms ? false`: Skip wrapping of python programs. -* `permitUserSite ? false`: Skip setting the `PYTHONNOUSERSITE` environment variable in wrapped programs. -* `installFlags ? []`: A list of strings. Arguments to be passed to `pip install`. To pass options to `python setup.py install`, use `--install-option`. E.g., `installFlags=["--install-option='--cpp_implementation'"]`. -* `format ? "setuptools"`: Format of the source. Valid options are `"setuptools"`, `"pyproject"`, `"flit"`, `"wheel"`, and `"other"`. `"setuptools"` is for when the source has a `setup.py` and `setuptools` is used to build a wheel, `flit`, in case `flit` should be used to build a wheel, and `wheel` in case a wheel is provided. Use `other` when a custom `buildPhase` and/or `installPhase` is needed. -* `makeWrapperArgs ? []`: A list of strings. Arguments to be passed to `makeWrapper`, which wraps generated binaries. By default, the arguments to `makeWrapper` set `PATH` and `PYTHONPATH` environment variables before calling the binary. Additional arguments here can allow a developer to set environment variables which will be available when the binary is run. For example, `makeWrapperArgs = ["--set FOO BAR" "--set BAZ QUX"]`. -* `namePrefix`: Prepends text to `${name}` parameter. In case of libraries, this defaults to `"python3.5-"` for Python 3.5, etc., and in case of applications to `""`. -* `pythonPath ? []`: List of packages to be added into `$PYTHONPATH`. Packages in `pythonPath` are not propagated (contrary to `propagatedBuildInputs`). +* `permitUserSite ? false`: Skip setting the `PYTHONNOUSERSITE` environment + variable in wrapped programs. +* `installFlags ? []`: A list of strings. Arguments to be passed to `pip + install`. To pass options to `python setup.py install`, use + `--install-option`. E.g., `installFlags=["--install-option='--cpp_implementation'"]`. +* `format ? "setuptools"`: Format of the source. Valid options are + `"setuptools"`, `"pyproject"`, `"flit"`, `"wheel"`, and `"other"`. + `"setuptools"` is for when the source has a `setup.py` and `setuptools` is + used to build a wheel, `flit`, in case `flit` should be used to build a wheel, + and `wheel` in case a wheel is provided. Use `other` when a custom + `buildPhase` and/or `installPhase` is needed. +* `makeWrapperArgs ? []`: A list of strings. Arguments to be passed to + `makeWrapper`, which wraps generated binaries. By default, the arguments to + `makeWrapper` set `PATH` and `PYTHONPATH` environment variables before calling + the binary. Additional arguments here can allow a developer to set environment + variables which will be available when the binary is run. For example, + `makeWrapperArgs = ["--set FOO BAR" "--set BAZ QUX"]`. +* `namePrefix`: Prepends text to `${name}` parameter. In case of libraries, this + defaults to `"python3.5-"` for Python 3.5, etc., and in case of applications + to `""`. +* `pythonPath ? []`: List of packages to be added into `$PYTHONPATH`. Packages + in `pythonPath` are not propagated (contrary to `propagatedBuildInputs`). * `preShellHook`: Hook to execute commands before `shellHook`. * `postShellHook`: Hook to execute commands after `shellHook`. -* `removeBinByteCode ? true`: Remove bytecode from `/bin`. Bytecode is only created when the filenames end with `.py`. +* `removeBinByteCode ? true`: Remove bytecode from `/bin`. Bytecode is only + created when the filenames end with `.py`. * `setupPyGlobalFlags ? []`: List of flags passed to `setup.py` command. * `setupPyBuildFlags ? []`: List of flags passed to `setup.py build_ext` command. -The `stdenv.mkDerivation` function accepts various parameters for describing build inputs (see "Specifying dependencies"). The following are of special -interest for Python packages, either because these are primarily used, or because their behaviour is different: +The `stdenv.mkDerivation` function accepts various parameters for describing +build inputs (see "Specifying dependencies"). The following are of special +interest for Python packages, either because these are primarily used, or +because their behaviour is different: -* `nativeBuildInputs ? []`: Build-time only dependencies. Typically executables as well as the items listed in `setup_requires`. -* `buildInputs ? []`: Build and/or run-time dependencies that need to be be compiled for the host machine. Typically non-Python libraries which are being linked. -* `checkInputs ? []`: Dependencies needed for running the `checkPhase`. These are added to `nativeBuildInputs` when `doCheck = true`. Items listed in `tests_require` go here. -* `propagatedBuildInputs ? []`: Aside from propagating dependencies, `buildPythonPackage` also injects code into and wraps executables with the paths included in this list. Items listed in `install_requires` go here. +* `nativeBuildInputs ? []`: Build-time only dependencies. Typically executables + as well as the items listed in `setup_requires`. +* `buildInputs ? []`: Build and/or run-time dependencies that need to be be + compiled for the host machine. Typically non-Python libraries which are being + linked. +* `checkInputs ? []`: Dependencies needed for running the `checkPhase`. These + are added to `nativeBuildInputs` when `doCheck = true`. Items listed in + `tests_require` go here. +* `propagatedBuildInputs ? []`: Aside from propagating dependencies, + `buildPythonPackage` also injects code into and wraps executables with the + paths included in this list. Items listed in `install_requires` go here. ##### Overriding Python packages -The `buildPythonPackage` function has a `overridePythonAttrs` method that -can be used to override the package. In the following example we create an -environment where we have the `blaze` package using an older version of `pandas`. -We override first the Python interpreter and pass -`packageOverrides` which contains the overrides for packages in the package set. +The `buildPythonPackage` function has a `overridePythonAttrs` method that can be +used to override the package. In the following example we create an environment +where we have the `blaze` package using an older version of `pandas`. We +override first the Python interpreter and pass `packageOverrides` which contains +the overrides for packages in the package set. ```nix with import {}; @@ -725,15 +782,18 @@ youtube-dl = with pythonPackages; toPythonApplication youtube-dl; #### `toPythonModule` function In some cases, such as bindings, a package is created using -`stdenv.mkDerivation` and added as attribute in `all-packages.nix`. -The Python bindings should be made available from `python-packages.nix`. -The `toPythonModule` function takes a derivation and makes certain Python-specific modifications. +`stdenv.mkDerivation` and added as attribute in `all-packages.nix`. The Python +bindings should be made available from `python-packages.nix`. The +`toPythonModule` function takes a derivation and makes certain Python-specific +modifications. + ```nix opencv = toPythonModule (pkgs.opencv.override { enablePython = true; pythonPackages = self; }); ``` + Do pay attention to passing in the right Python version! #### `python.buildEnv` function @@ -741,6 +801,7 @@ Do pay attention to passing in the right Python version! Python environments can be created using the low-level `pkgs.buildEnv` function. This example shows how to create an environment that has the Pyramid Web Framework. Saving the following as `default.nix` + ```nix with import {}; @@ -751,6 +812,7 @@ python.buildEnv.override { ``` and running `nix-build` will create + ``` /nix/store/cf1xhjwzmdki7fasgr4kz6di72ykicl5-python-2.7.8-env ``` @@ -760,6 +822,7 @@ with wrapped binaries in `bin/`. You can also use the `env` attribute to create local environments with needed packages installed. This is somewhat comparable to `virtualenv`. For example, running `nix-shell` with the following `shell.nix` + ```nix with import {}; @@ -777,7 +840,8 @@ specified packages in its path. * `extraLibs`: List of packages installed inside the environment. * `postBuild`: Shell command executed after the build of environment. * `ignoreCollisions`: Ignore file collisions inside the environment (default is `false`). -* `permitUserSite`: Skip setting the `PYTHONNOUSERSITE` environment variable in wrapped binaries in the environment. +* `permitUserSite`: Skip setting the `PYTHONNOUSERSITE` environment variable in + wrapped binaries in the environment. #### `python.withPackages` function @@ -785,15 +849,17 @@ The `python.withPackages` function provides a simpler interface to the `python.b It takes a function as an argument that is passed the set of python packages and returns the list of the packages to be included in the environment. Using the `withPackages` function, the previous example for the Pyramid Web Framework environment can be written like this: + ```nix with import {}; python.withPackages (ps: [ps.pyramid]) ``` -`withPackages` passes the correct package set for the specific interpreter version as an -argument to the function. In the above example, `ps` equals `pythonPackages`. -But you can also easily switch to using python3: +`withPackages` passes the correct package set for the specific interpreter +version as an argument to the function. In the above example, `ps` equals +`pythonPackages`. But you can also easily switch to using python3: + ```nix with import {}; @@ -802,27 +868,35 @@ python3.withPackages (ps: [ps.pyramid]) Now, `ps` is set to `python3Packages`, matching the version of the interpreter. -As `python.withPackages` simply uses `python.buildEnv` under the hood, it also supports the `env` -attribute. The `shell.nix` file from the previous section can thus be also written like this: +As `python.withPackages` simply uses `python.buildEnv` under the hood, it also +supports the `env` attribute. The `shell.nix` file from the previous section can +thus be also written like this: + ```nix with import {}; (python36.withPackages (ps: [ps.numpy ps.requests])).env ``` -In contrast to `python.buildEnv`, `python.withPackages` does not support the more advanced options -such as `ignoreCollisions = true` or `postBuild`. If you need them, you have to use `python.buildEnv`. +In contrast to `python.buildEnv`, `python.withPackages` does not support the +more advanced options such as `ignoreCollisions = true` or `postBuild`. If you +need them, you have to use `python.buildEnv`. -Python 2 namespace packages may provide `__init__.py` that collide. In that case `python.buildEnv` -should be used with `ignoreCollisions = true`. +Python 2 namespace packages may provide `__init__.py` that collide. In that case +`python.buildEnv` should be used with `ignoreCollisions = true`. #### Setup hooks -The following are setup hooks specifically for Python packages. Most of these are -used in `buildPythonPackage`. +The following are setup hooks specifically for Python packages. Most of these +are used in `buildPythonPackage`. +- `eggUnpackhook` to move an egg to the correct folder so it can be installed + with the `eggInstallHook` +- `eggBuildHook` to skip building for eggs. +- `eggInstallHook` to install eggs. - `flitBuildHook` to build a wheel using `flit`. -- `pipBuildHook` to build a wheel using `pip` and PEP 517. Note a build system (e.g. `setuptools` or `flit`) should still be added as `nativeBuildInput`. +- `pipBuildHook` to build a wheel using `pip` and PEP 517. Note a build system + (e.g. `setuptools` or `flit`) should still be added as `nativeBuildInput`. - `pipInstallHook` to install wheels. - `pytestCheckHook` to run tests with `pytest`. - `pythonCatchConflictsHook` to check whether a Python package is not already existing. @@ -830,7 +904,10 @@ used in `buildPythonPackage`. - `pythonRemoveBinBytecode` to remove bytecode from the `/bin` folder. - `setuptoolsBuildHook` to build a wheel using `setuptools`. - `setuptoolsCheckHook` to run tests with `python setup.py test`. -- `wheelUnpackHook` to move a wheel to the correct folder so it can be installed with the `pipInstallHook`. +- `venvShellHook` to source a Python 3 `venv` at the `venvDir` location. A + `venv` is created if it does not yet exist. +- `wheelUnpackHook` to move a wheel to the correct folder so it can be installed + with the `pipInstallHook`. ### Development mode @@ -852,11 +929,11 @@ pythonPackages.buildPythonPackage { } ``` -Running `nix-shell` with no arguments should give you -the environment in which the package would be built with -`nix-build`. +Running `nix-shell` with no arguments should give you the environment in which +the package would be built with `nix-build`. Shortcut to setup environments with C headers/libraries and python packages: + ```shell nix-shell -p pythonPackages.pyramid zlib libjpeg git ``` @@ -868,19 +945,22 @@ Note: There is a boolean value `lib.inNixShell` set to `true` if nix-shell is in Packages inside nixpkgs are written by hand. However many tools exist in community to help save time. No tool is preferred at the moment. -- [pypi2nix](https://github.com/nix-community/pypi2nix): Generate Nix expressions for your Python project. Note that [sharing derivations from pypi2nix with nixpkgs is possible but not encouraged](https://github.com/nix-community/pypi2nix/issues/222#issuecomment-443497376). +- [pypi2nix](https://github.com/nix-community/pypi2nix): Generate Nix + expressions for your Python project. Note that [sharing derivations from + pypi2nix with nixpkgs is possible but not + encouraged](https://github.com/nix-community/pypi2nix/issues/222#issuecomment-443497376). - [python2nix](https://github.com/proger/python2nix) by Vladimir Kirillov. ### Deterministic builds -The Python interpreters are now built deterministically. -Minor modifications had to be made to the interpreters in order to generate -deterministic bytecode. This has security implications and is relevant for -those using Python in a `nix-shell`. +The Python interpreters are now built deterministically. Minor modifications had +to be made to the interpreters in order to generate deterministic bytecode. This +has security implications and is relevant for those using Python in a +`nix-shell`. -When the environment variable `DETERMINISTIC_BUILD` is set, all bytecode will have timestamp 1. -The `buildPythonPackage` function sets `DETERMINISTIC_BUILD=1` and -[PYTHONHASHSEED=0](https://docs.python.org/3.5/using/cmdline.html#envvar-PYTHONHASHSEED). +When the environment variable `DETERMINISTIC_BUILD` is set, all bytecode will +have timestamp 1. The `buildPythonPackage` function sets `DETERMINISTIC_BUILD=1` +and [PYTHONHASHSEED=0](https://docs.python.org/3.5/using/cmdline.html#envvar-PYTHONHASHSEED). Both are also exported in `nix-shell`. @@ -895,9 +975,10 @@ example of such a situation is when `py.test` is used. #### Common issues -- Non-working tests can often be deselected. By default `buildPythonPackage` runs `python setup.py test`. - Most python modules follows the standard test protocol where the pytest runner can be used instead. - `py.test` supports a `-k` parameter to ignore test methods or classes: +* Non-working tests can often be deselected. By default `buildPythonPackage` + runs `python setup.py test`. Most python modules follows the standard test + protocol where the pytest runner can be used instead. `py.test` supports a + `-k` parameter to ignore test methods or classes: ```nix buildPythonPackage { @@ -909,7 +990,8 @@ example of such a situation is when `py.test` is used. ''; } ``` -- Tests that attempt to access `$HOME` can be fixed by using the following work-around before running tests (e.g. `preCheck`): `export HOME=$(mktemp -d)` +* Tests that attempt to access `$HOME` can be fixed by using the following + work-around before running tests (e.g. `preCheck`): `export HOME=$(mktemp -d)` ## FAQ @@ -921,8 +1003,9 @@ should also be done when packaging `A`. ### How to override a Python package? -We can override the interpreter and pass `packageOverrides`. -In the following example we rename the `pandas` package and build it. +We can override the interpreter and pass `packageOverrides`. In the following +example we rename the `pandas` package and build it. + ```nix with import {}; @@ -935,14 +1018,16 @@ with import {}; in python.withPackages(ps: [ps.pandas])).env ``` + Using `nix-build` on this expression will build an environment that contains the package `pandas` but with the new name `foo`. -All packages in the package set will use the renamed package. -A typical use case is to switch to another version of a certain package. -For example, in the Nixpkgs repository we have multiple versions of `django` and `scipy`. -In the following example we use a different version of `scipy` and create an environment that uses it. -All packages in the Python package set will now use the updated `scipy` version. +All packages in the package set will use the renamed package. A typical use case +is to switch to another version of a certain package. For example, in the +Nixpkgs repository we have multiple versions of `django` and `scipy`. In the +following example we use a different version of `scipy` and create an +environment that uses it. All packages in the Python package set will now use +the updated `scipy` version. ```nix with import {}; @@ -954,10 +1039,13 @@ with import {}; in (pkgs.python35.override {inherit packageOverrides;}).withPackages (ps: [ps.blaze]) ).env ``` + The requested package `blaze` depends on `pandas` which itself depends on `scipy`. -If you want the whole of Nixpkgs to use your modifications, then you can use `overlays` -as explained in this manual. In the following example we build a `inkscape` using a different version of `numpy`. +If you want the whole of Nixpkgs to use your modifications, then you can use +`overlays` as explained in this manual. In the following example we build a +`inkscape` using a different version of `numpy`. + ```nix let pkgs = import {}; @@ -978,19 +1066,28 @@ Executing `python setup.py bdist_wheel` in a `nix-shell `fails with ValueError: ZIP does not support timestamps before 1980 ``` -This is because files from the Nix store (which have a timestamp of the UNIX epoch of January 1, 1970) are included in the .ZIP, but .ZIP archives follow the DOS convention of counting timestamps from 1980. +This is because files from the Nix store (which have a timestamp of the UNIX +epoch of January 1, 1970) are included in the .ZIP, but .ZIP archives follow the +DOS convention of counting timestamps from 1980. -The command `bdist_wheel` reads the `SOURCE_DATE_EPOCH` environment variable, which `nix-shell` sets to 1. Unsetting this variable or giving it a value corresponding to 1980 or later enables building wheels. +The command `bdist_wheel` reads the `SOURCE_DATE_EPOCH` environment variable, +which `nix-shell` sets to 1. Unsetting this variable or giving it a value +corresponding to 1980 or later enables building wheels. Use 1980 as timestamp: + ```shell nix-shell --run "SOURCE_DATE_EPOCH=315532800 python3 setup.py bdist_wheel" ``` + or the current time: + ```shell nix-shell --run "SOURCE_DATE_EPOCH=$(date +%s) python3 setup.py bdist_wheel" ``` + or unset `SOURCE_DATE_EPOCH`: + ```shell nix-shell --run "unset SOURCE_DATE_EPOCH; python3 setup.py bdist_wheel" ``` @@ -998,13 +1095,18 @@ nix-shell --run "unset SOURCE_DATE_EPOCH; python3 setup.py bdist_wheel" ### `install_data` / `data_files` problems If you get the following error: + ``` could not create '/nix/store/6l1bvljpy8gazlsw2aw9skwwp4pmvyxw-python-2.7.8/etc': Permission denied ``` -This is a [known bug](https://github.com/pypa/setuptools/issues/130) in `setuptools`. -Setuptools `install_data` does not respect `--prefix`. An example of such package using the feature is `pkgs/tools/X11/xpra/default.nix`. + +This is a [known bug](https://github.com/pypa/setuptools/issues/130) in +`setuptools`. Setuptools `install_data` does not respect `--prefix`. An example +of such package using the feature is `pkgs/tools/X11/xpra/default.nix`. + As workaround install it as an extra `preInstall` step: + ```shell ${python.interpreter} setup.py install_data --install-dir=$out --root=$out sed -i '/ = data\_files/d' setup.py @@ -1025,36 +1127,44 @@ If you want to create a Python environment for development, then the recommended method is to use `nix-shell`, either with or without the `python.buildEnv` function. -### How to consume python modules using pip in a virtualenv like I am used to on other Operating Systems ? +### How to consume python modules using pip in a virtual environment like I am used to on other Operating Systems? -This is an example of a `default.nix` for a `nix-shell`, which allows to consume a `virtualenv` environment, -and install python modules through `pip` the traditional way. +While this approach is not very idiomatic from Nix perspective, it can still be +useful when dealing with pre-existing projects or in situations where it's not +feasible or desired to write derivations for all required dependencies. -Create this `default.nix` file, together with a `requirements.txt` and simply execute `nix-shell`. +This is an example of a `default.nix` for a `nix-shell`, which allows to consume +a virtual environment created by `venv`, and install python modules through +`pip` the traditional way. + +Create this `default.nix` file, together with a `requirements.txt` and simply +execute `nix-shell`. ```nix -with import {}; +with import { }; let - pythonPackages = python27Packages; -in - -stdenv.mkDerivation { + pythonPackages = python3Packages; +in pkgs.mkShell rec { name = "impurePythonEnv"; - - src = null; - + venvDir = "./.venv"; buildInputs = [ - # these packages are required for virtualenv and pip to work: - # - pythonPackages.virtualenv - pythonPackages.pip - # the following packages are related to the dependencies of your python - # project. - # In this particular example the python modules listed in the - # requirements.txt require the following packages to be installed locally - # in order to compile any binary extensions they may require. - # + # A python interpreter including the 'venv' module is required to bootstrap + # the environment. + pythonPackages.python + + # This execute some shell code to initialize a venv in $venvDir before + # dropping into the shell + pythonPackages.venvShellHook + + # Those are dependencies that we would like to use from nixpkgs, which will + # add them to PYTHONPATH and thus make them accessible from within the venv. + pythonPackages.numpy + pythonPackages.requests + + # In this particular example, in order to compile any binary extensions they may + # require, the python modules listed in the hypothetical requirements.txt need + # the following packages to be installed locally: taglib openssl git @@ -1064,11 +1174,55 @@ stdenv.mkDerivation { zlib ]; + # Now we can execute any commands within the virtual environment. + # This is optional and can be left out to run pip manually. + postShellHook = '' + pip install -r requirements.txt + ''; + +} +``` + +In case the supplied venvShellHook is insufficient, or when python 2 support is +needed, you can define your own shell hook and adapt to your needs like in the +following example: + +```nix +with import { }; + +let + venvDir = "./.venv"; + pythonPackages = python3Packages; +in pkgs.mkShell rec { + name = "impurePythonEnv"; + buildInputs = [ + pythonPackages.python + # Needed when using python 2.7 + # pythonPackages.virtualenv + # ... + ]; + + # This is very close to how venvShellHook is implemented, but + # adapted to use 'virtualenv' shellHook = '' - # set SOURCE_DATE_EPOCH so that we can use python wheels SOURCE_DATE_EPOCH=$(date +%s) - virtualenv --python=${pythonPackages.python.interpreter} --no-setuptools venv - export PATH=$PWD/venv/bin:$PATH + + if [ -d "${venvDir}" ]; then + echo "Skipping venv creation, '${venvDir}' already exists" + else + echo "Creating new venv environment in path: '${venvDir}'" + # Note that the module venv was only introduced in python 3, so for 2.7 + # this needs to be replaced with a call to virtualenv + ${pythonPackages.python.interpreter} -m venv "${venvDir}" + fi + + # Under some circumstances it might be necessary to add your virtual + # environment to PYTHONPATH, which you can do here too; + # PYTHONPATH=$PWD/${venvDir}/${pythonPackages.python.sitePackages}/:$PYTHONPATH + + source "${venvDir}/bin/activate" + + # As in the previous example, this is optional. pip install -r requirements.txt ''; } @@ -1100,11 +1254,11 @@ If you need to change a package's attribute(s) from `configuration.nix` you coul ``` `pythonPackages.zerobin` is now globally overridden. All packages and also the -`zerobin` NixOS service use the new definition. -Note that `python-super` refers to the old package set and `python-self` -to the new, overridden version. +`zerobin` NixOS service use the new definition. Note that `python-super` refers +to the old package set and `python-self` to the new, overridden version. -To modify only a Python package set instead of a whole Python derivation, use this snippet: +To modify only a Python package set instead of a whole Python derivation, use +this snippet: ```nix myPythonPackages = pythonPackages.override { @@ -1136,11 +1290,12 @@ self: super: { ### How to use Intel's MKL with numpy and scipy? -A `site.cfg` is created that configures BLAS based on the `blas` parameter -of the `numpy` derivation. By passing in `mkl`, `numpy` and packages depending -on `numpy` will be built with `mkl`. +A `site.cfg` is created that configures BLAS based on the `blas` parameter of +the `numpy` derivation. By passing in `mkl`, `numpy` and packages depending on +`numpy` will be built with `mkl`. The following is an overlay that configures `numpy` to use `mkl`: + ```nix self: super: { python37 = super.python37.override { @@ -1176,10 +1331,21 @@ In a `setup.py` or `setup.cfg` it is common to declare dependencies: Following rules are desired to be respected: -* Python libraries are called from `python-packages.nix` and packaged with `buildPythonPackage`. The expression of a library should be in `pkgs/development/python-modules//default.nix`. Libraries in `pkgs/top-level/python-packages.nix` are sorted quasi-alphabetically to avoid merge conflicts. -* Python applications live outside of `python-packages.nix` and are packaged with `buildPythonApplication`. +* Python libraries are called from `python-packages.nix` and packaged with + `buildPythonPackage`. The expression of a library should be in + `pkgs/development/python-modules//default.nix`. Libraries in + `pkgs/top-level/python-packages.nix` are sorted quasi-alphabetically to avoid + merge conflicts. +* Python applications live outside of `python-packages.nix` and are packaged + with `buildPythonApplication`. * Make sure libraries build for all Python interpreters. -* By default we enable tests. Make sure the tests are found and, in the case of libraries, are passing for all interpreters. If certain tests fail they can be disabled individually. Try to avoid disabling the tests altogether. In any case, when you disable tests, leave a comment explaining why. -* Commit names of Python libraries should reflect that they are Python libraries, so write for example `pythonPackages.numpy: 1.11 -> 1.12`. -* Attribute names in `python-packages.nix` should be normalized according to [PEP 0503](https://www.python.org/dev/peps/pep-0503/#normalized-names). - This means that characters should be converted to lowercase and `.` and `_` should be replaced by a single `-` (foo-bar-baz instead of Foo__Bar.baz ) +* By default we enable tests. Make sure the tests are found and, in the case of + libraries, are passing for all interpreters. If certain tests fail they can be + disabled individually. Try to avoid disabling the tests altogether. In any + case, when you disable tests, leave a comment explaining why. +* Commit names of Python libraries should reflect that they are Python + libraries, so write for example `pythonPackages.numpy: 1.11 -> 1.12`. +* Attribute names in `python-packages.nix` should be normalized according to + [PEP 0503](https://www.python.org/dev/peps/pep-0503/#normalized-names). This + means that characters should be converted to lowercase and `.` and `_` should + be replaced by a single `-` (foo-bar-baz instead of Foo__Bar.baz ) diff --git a/doc/languages-frameworks/ruby.xml b/doc/languages-frameworks/ruby.xml index b28745fd6e2..9b36801fb96 100644 --- a/doc/languages-frameworks/ruby.xml +++ b/doc/languages-frameworks/ruby.xml @@ -32,7 +32,7 @@ bundlerEnv rec { meta = with lib; { description = "A monitoring framework that aims to be simple, malleable, and scalable"; - homepage = http://sensuapp.org/; + homepage = "http://sensuapp.org/"; license = with licenses; mit; maintainers = with maintainers; [ theuni ]; platforms = platforms.unix; @@ -69,7 +69,7 @@ bundlerApp { meta = with lib; { description = "Tool and libraries for maintaining Ruby gems."; - homepage = https://github.com/nyarly/corundum; + homepage = "https://github.com/nyarly/corundum"; license = licenses.mit; maintainers = [ maintainers.nyarly ]; platforms = platforms.unix; diff --git a/doc/languages-frameworks/rust.section.md b/doc/languages-frameworks/rust.section.md index 709a0d504cf..cec3373cbee 100644 --- a/doc/languages-frameworks/rust.section.md +++ b/doc/languages-frameworks/rust.section.md @@ -16,12 +16,6 @@ cargo into the `environment.systemPackages` or bring them into scope with `nix-shell -p rustc cargo`. -> If you are using NixOS and you want to use rust without a nix expression you -> probably want to add the following in your `configuration.nix` to build -> crates with C dependencies. -> -> environment.systemPackages = [binutils gcc gnumake openssl pkgconfig] - For daily builds (beta and nightly) use either rustup from nixpkgs or use the [Rust nightlies overlay](#using-the-rust-nightlies-overlay). @@ -32,22 +26,21 @@ Rust applications are packaged by using the `buildRustPackage` helper from `rust ``` rustPlatform.buildRustPackage rec { - name = "ripgrep-${version}"; - version = "0.4.0"; + pname = "ripgrep"; + version = "11.0.2"; src = fetchFromGitHub { owner = "BurntSushi"; - repo = "ripgrep"; - rev = "${version}"; - sha256 = "0y5d1n6hkw85jb3rblcxqas2fp82h3nghssa4xqrhqnz25l799pj"; + repo = pname; + rev = version; + sha256 = "1iga3320mgi7m853la55xip514a3chqsdi1a1rwv25lr9b1p7vd3"; }; - cargoSha256 = "0q68qyl2h6i0qsz82z840myxlnjay8p1w5z7hfyr8fqp7wgwa9cx"; - verifyCargoDeps = true; + cargoSha256 = "17ldqr3asrdcsh4l29m3b5r37r5d0b3npq1lrgjmxb6vlx6a36qh"; meta = with stdenv.lib; { description = "A fast line-oriented regex search tool, similar to ag and ack"; - homepage = https://github.com/BurntSushi/ripgrep; + homepage = "https://github.com/BurntSushi/ripgrep"; license = licenses.unlicense; maintainers = [ maintainers.tailhook ]; platforms = platforms.all; @@ -60,13 +53,16 @@ all crate sources of this package. Currently it is obtained by inserting a fake checksum into the expression and building the package once. The correct checksum can be then take from the failed build. -When the `Cargo.lock`, provided by upstream, is not in sync with the -`Cargo.toml`, it is possible to use `cargoPatches` to update it. All patches -added in `cargoPatches` will also be prepended to the patches in `patches` at -build-time. +Per the instructions in the [Cargo Book](https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html) +best practices guide, Rust applications should always commit the `Cargo.lock` +file in git to ensure a reproducible build. However, a few packages do not, and +Nix depends on this file, so if it missing you can use `cargoPatches` to apply +it in the `patchPhase`. Consider sending a PR upstream with a note to the +maintainer describing why it's important to include in the application. -When `verifyCargoDeps` is set to `true`, the build will also verify that the -`cargoSha256` is not out of date by comparing the `Cargo.lock` file in both the `cargoDeps` and `src`. Note that this option changes the value of `cargoSha256` since it also copies the `Cargo.lock` in it. To avoid breaking backward-compatibility this option is not enabled by default but hopefully will be in the future. +The fetcher will verify that the `Cargo.lock` file is in sync with the `src` +attribute, and fail the build if not. It will also will compress the vendor +directory into a tar.gz archive. ### Building a crate for a different target diff --git a/doc/languages-frameworks/texlive.xml b/doc/languages-frameworks/texlive.xml index 7876cc213b6..8fa8f963b2f 100644 --- a/doc/languages-frameworks/texlive.xml +++ b/doc/languages-frameworks/texlive.xml @@ -59,6 +59,97 @@ nix-repl> texlive.collection-
+
+ Custom packages + + You may find that you need to use an external TeX package. A derivation for such package has to provide contents of the "texmf" directory in its output and provide the tlType attribute. Here is a (very verbose) example: + {}; + +let + foiltex_run = stdenvNoCC.mkDerivation { + pname = "latex-foiltex"; + version = "2.1.4b"; + passthru.tlType = "run"; + + srcs = [ + (fetchurl { + url = "http://mirrors.ctan.org/macros/latex/contrib/foiltex/foiltex.dtx"; + sha256 = "07frz0krpz7kkcwlayrwrj2a2pixmv0icbngyw92srp9fp23cqpz"; + }) + (fetchurl { + url = "http://mirrors.ctan.org/macros/latex/contrib/foiltex/foiltex.ins"; + sha256 = "09wkyidxk3n3zvqxfs61wlypmbhi1pxmjdi1kns9n2ky8ykbff99"; + }) + ]; + + unpackPhase = '' + runHook preUnpack + + for _src in $srcs; do + cp "$_src" $(stripHash "$_src") + done + + runHook postUnpack + ''; + + nativeBuildInputs = [ texlive.combined.scheme-small ]; + + dontConfigure = true; + + buildPhase = '' + runHook preBuild + + # Generate the style files + latex foiltex.ins + + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + + path="$out/tex/latex/foiltex" + mkdir -p "$path" + cp *.{cls,def,clo} "$path/" + + runHook postInstall + ''; + + meta = with lib; { + description = "A LaTeX2e class for overhead transparencies"; + license = licenses.unfreeRedistributable; + maintainers = with maintainers; [ veprbl ]; + platforms = platforms.all; + }; + }; + foiltex = { pkgs = [ foiltex_run ]; }; + + latex_with_foiltex = texlive.combine { + inherit (texlive) scheme-small; + inherit foiltex; + }; +in + runCommand "test.pdf" { + nativeBuildInputs = [ latex_with_foiltex ]; + } '' +cat >test.tex < + +
+
Known problems diff --git a/doc/languages-frameworks/vim.section.md b/doc/languages-frameworks/vim.section.md index 05a23d26cf2..4911509212e 100644 --- a/doc/languages-frameworks/vim.section.md +++ b/doc/languages-frameworks/vim.section.md @@ -261,12 +261,7 @@ deoplete-fish = super.deoplete-fish.overrideAttrs(old: { Sometimes plugins require an override that must be changed when the plugin is updated. This can cause issues when Vim plugins are auto-updated but the associated override isn't updated. For these plugins, the override should be written so that it specifies all information required to install the plugin, and running `./update.py` doesn't change the derivation for the plugin. Manually updating the override is required to update these types of plugins. An example of such a plugin is `LanguageClient-neovim`. -To add a new plugin: - - 1. run `./update.py` and create a commit named "vimPlugins: Update", - 2. add the new plugin to [vim-plugin-names](/pkgs/misc/vim-plugins/vim-plugin-names) and add overrides if required to [overrides.nix](/pkgs/misc/vim-plugins/overrides.nix), - 3. run `./update.py` again and create a commit named "vimPlugins.[name]: init at [version]" (where `name` and `version` can be found in [generated.nix](/pkgs/misc/vim-plugins/generated.nix)), and - 4. create a pull request. +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. ## Important repositories diff --git a/doc/old/cross.txt b/doc/old/cross.txt index ff9fefb04a8..9dd5b4c9993 100644 --- a/doc/old/cross.txt +++ b/doc/old/cross.txt @@ -60,7 +60,7 @@ stdenv.mkDerivation { name = "binutils-2.16.1-arm"; builder = ./builder.sh; src = fetchurl { - url = http://ftp.nluug.nl/gnu/binutils/binutils-2.16.1.tar.bz2; + url = "http://ftp.nluug.nl/gnu/binutils/binutils-2.16.1.tar.bz2"; sha256 = "1ian3kwh2vg6hr3ymrv48s04gijs539vzrq62xr76bxbhbwnz2np"; }; inherit noSysDirs; @@ -84,7 +84,7 @@ stdenv.mkDerivation { name = "linux-headers-2.6.13.1-arm"; builder = ./builder.sh; src = fetchurl { - url = http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.13.1.tar.bz2; + url = "http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.13.1.tar.bz2"; sha256 = "12qxmc827fjhaz53kjy7vyrzsaqcg78amiqsb3qm20z26w705lma"; }; } diff --git a/doc/overrides.css b/doc/overrides.css index 4c7d4a31be2..73901a3f543 100644 --- a/doc/overrides.css +++ b/doc/overrides.css @@ -1,9 +1,22 @@ .docbook .xref img[src^=images\/callouts\/], .screen img, -.programlisting img { +.programlisting img, +.literallayout img, +.synopsis img { width: 1em; } .calloutlist img { width: 1.5em; } + +.prompt, +.screen img, +.programlisting img, +.literallayout img, +.synopsis img { + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + user-select: none; +} diff --git a/doc/preface.chapter.md b/doc/preface.chapter.md index 88ca5e2e3ce..7fa65ab1102 100644 --- a/doc/preface.chapter.md +++ b/doc/preface.chapter.md @@ -37,7 +37,7 @@ security updates. More up to date packages and modules are available via the Both `nixos-unstable` and `nixpkgs` follow the `master` branch of the Nixpkgs repository, although both do lag the `master` branch by generally -[a couple of days](https://howoldis.herokuapp.com/). Updates to a channel are +[a couple of days](https://status.nixos.org/). Updates to a channel are distributed as soon as all tests for that channel pass, e.g. [this table](https://hydra.nixos.org/job/nixpkgs/trunk/unstable#tabs-constituents) shows the status of tests for the `nixpkgs` channel. diff --git a/doc/release-notes.xml b/doc/release-notes.xml index b85f61da079..7575289e755 100644 --- a/doc/release-notes.xml +++ b/doc/release-notes.xml @@ -190,7 +190,7 @@ preConfigure = "configureFlagsArray=(\"CFLAGS=-O0 -g\")"; The function fetchurl now has support for two different kinds of mirroring of files. First, it has support for content-addressable mirrors. For example, given the fetchurl call fetchurl { - url = http://releases.mozilla.org/.../firefox-2.0.0.6-source.tar.bz2; + url = "http://releases.mozilla.org/.../firefox-2.0.0.6-source.tar.bz2"; sha1 = "eb72f55e4a8bf08e8c6ef227c0ade3d068ba1082"; } fetchurl will first try to download this file from -doCheck = stdenv.hostPlatform != stdenv.buildPlatfrom; +doCheck = stdenv.hostPlatform == stdenv.buildPlatfrom; Add it to your mkDerivation invocation. diff --git a/doc/stdenv/meta.xml b/doc/stdenv/meta.xml index 9371196818a..45f7834eb2c 100644 --- a/doc/stdenv/meta.xml +++ b/doc/stdenv/meta.xml @@ -11,7 +11,7 @@ meta = with stdenv.lib; { GNU Hello is a program that prints "Hello, world!" when you run it. It is fully customizable. ''; - homepage = https://www.gnu.org/software/hello/manual/; + homepage = "https://www.gnu.org/software/hello/manual/"; license = licenses.gpl3Plus; maintainers = [ maintainers.eelco ]; platforms = platforms.all; diff --git a/doc/stdenv/multiple-output.xml b/doc/stdenv/multiple-output.xml index 83275bb2fbd..51e1cc2e024 100644 --- a/doc/stdenv/multiple-output.xml +++ b/doc/stdenv/multiple-output.xml @@ -106,7 +106,7 @@ - The reason for why glibc deviates from the convention is because referencing a library provided by glibc is a very common operation among Nix packages. For instance, third-party executables packaged by Nix are typically patched and relinked with the relevant version of glibc libraries from Nix packages (please see the documentation on patchelf for more details). + The reason for why glibc deviates from the convention is because referencing a library provided by glibc is a very common operation among Nix packages. For instance, third-party executables packaged by Nix are typically patched and relinked with the relevant version of glibc libraries from Nix packages (please see the documentation on patchelf for more details).
diff --git a/doc/stdenv/stdenv.xml b/doc/stdenv/stdenv.xml index 1e97bf6157b..e4cbdd4abb5 100644 --- a/doc/stdenv/stdenv.xml +++ b/doc/stdenv/stdenv.xml @@ -14,7 +14,7 @@ stdenv.mkDerivation { name = "libfoo-1.2.3"; src = fetchurl { - url = http://example.org/libfoo-1.2.3.tar.bz2; + url = "http://example.org/libfoo-1.2.3.tar.bz2"; sha256 = "0x2g1jqygyr5wiwg4ma1nd7w4ydpy82z9gkcv8vh2v8dn3y58v5m"; }; } @@ -1295,7 +1295,7 @@ installTargets = "install-bin install-doc"; - List of directories to search for libraries and executables from which only debugging-related symbols should be stripped. It defaults to lib bin sbin. + List of directories to search for libraries and executables from which only debugging-related symbols should be stripped. It defaults to lib lib32 lib64 libexec bin sbin. diff --git a/flake.nix b/flake.nix new file mode 100644 index 00000000000..52fd2f82a37 --- /dev/null +++ b/flake.nix @@ -0,0 +1,50 @@ +# Experimental flake interface to Nixpkgs. +# See https://github.com/NixOS/rfcs/pull/49 for details. +{ + edition = 201909; + + description = "A collection of packages for the Nix package manager"; + + outputs = { self }: + let + + jobs = import ./pkgs/top-level/release.nix { + nixpkgs = self; + }; + + lib = import ./lib; + + systems = [ "x86_64-linux" "i686-linux" "x86_64-darwin" "aarch64-linux" ]; + + forAllSystems = f: lib.genAttrs systems (system: f system); + + in + { + lib = lib // { + nixosSystem = { modules, ... } @ args: + import ./nixos/lib/eval-config.nix (args // { + modules = modules ++ + [ { system.nixos.versionSuffix = + ".${lib.substring 0 8 (self.lastModifiedDate or self.lastModified)}.${self.shortRev or "dirty"}"; + system.nixos.revision = lib.mkIf (self ? rev) self.rev; + } + ]; + }); + }; + + checks.x86_64-linux.tarball = jobs.tarball; + + htmlDocs = { + nixpkgsManual = jobs.manual; + nixosManual = (import ./nixos/release-small.nix { + nixpkgs = self; + }).nixos.manual.x86_64-linux; + }; + + legacyPackages = forAllSystems (system: import ./. { inherit system; }); + + nixosModules = { + notDetected = import ./nixos/modules/installer/scan/not-detected.nix; + }; + }; +} diff --git a/lib/attrsets.nix b/lib/attrsets.nix index 086c3d746fc..7d84c25de77 100644 --- a/lib/attrsets.nix +++ b/lib/attrsets.nix @@ -4,7 +4,7 @@ let inherit (builtins) head tail length; inherit (lib.trivial) and; - inherit (lib.strings) concatStringsSep; + inherit (lib.strings) concatStringsSep sanitizeDerivationName; inherit (lib.lists) fold concatMap concatLists; in @@ -60,7 +60,7 @@ rec { [ { name = head attrPath; value = setAttrByPath (tail attrPath) value; } ]; - /* Like `getAttrPath' without a default value. If it doesn't find the + /* Like `attrByPath' without a default value. If it doesn't find the path it will throw. Example: @@ -310,7 +310,7 @@ rec { path' = builtins.storePath path; res = { type = "derivation"; - name = builtins.unsafeDiscardStringContext (builtins.substring 33 (-1) (baseNameOf path')); + name = sanitizeDerivationName (builtins.substring 33 (-1) (baseNameOf path')); outPath = path'; outputs = [ "out" ]; out = res; @@ -473,6 +473,20 @@ rec { /* Pick the outputs of packages to place in buildInputs */ chooseDevOutputs = drvs: builtins.map getDev drvs; + /* Make various Nix tools consider the contents of the resulting + attribute set when looking for what to build, find, etc. + + This function only affects a single attribute set; it does not + apply itself recursively for nested attribute sets. + */ + recurseIntoAttrs = + attrs: attrs // { recurseForDerivations = true; }; + + /* Undo the effect of recurseIntoAttrs. + */ + dontRecurseIntoAttrs = + attrs: attrs // { recurseForDerivations = false; }; + /*** deprecated stuff ***/ zipWithNames = zipAttrsWithNames; diff --git a/lib/cli.nix b/lib/cli.nix new file mode 100644 index 00000000000..c96d4dbb043 --- /dev/null +++ b/lib/cli.nix @@ -0,0 +1,83 @@ +{ lib }: + +rec { + /* Automatically convert an attribute set to command-line options. + + This helps protect against malformed command lines and also to reduce + boilerplate related to command-line construction for simple use cases. + + `toGNUCommandLine` returns a list of nix strings. + `toGNUCommandLineShell` returns an escaped shell string. + + Example: + cli.toGNUCommandLine {} { + data = builtins.toJSON { id = 0; }; + X = "PUT"; + retry = 3; + retry-delay = null; + url = [ "https://example.com/foo" "https://example.com/bar" ]; + silent = false; + verbose = true; + } + => [ + "-X" "PUT" + "--data" "{\"id\":0}" + "--retry" "3" + "--url" "https://example.com/foo" + "--url" "https://example.com/bar" + "--verbose" + ] + + cli.toGNUCommandLineShell {} { + data = builtins.toJSON { id = 0; }; + X = "PUT"; + retry = 3; + retry-delay = null; + url = [ "https://example.com/foo" "https://example.com/bar" ]; + silent = false; + verbose = true; + } + => "'-X' 'PUT' '--data' '{\"id\":0}' '--retry' '3' '--url' 'https://example.com/foo' '--url' 'https://example.com/bar' '--verbose'"; + */ + toGNUCommandLineShell = + options: attrs: lib.escapeShellArgs (toGNUCommandLine options attrs); + + toGNUCommandLine = { + # how to string-format the option name; + # by default one character is a short option (`-`), + # more than one characters a long option (`--`). + mkOptionName ? + k: if builtins.stringLength k == 1 + then "-${k}" + else "--${k}", + + # how to format a boolean value to a command list; + # by default it’s a flag option + # (only the option name if true, left out completely if false). + mkBool ? k: v: lib.optional v (mkOptionName k), + + # how to format a list value to a command list; + # by default the option name is repeated for each value + # and `mkOption` is applied to the values themselves. + mkList ? k: v: lib.concatMap (mkOption k) v, + + # how to format any remaining value to a command list; + # on the toplevel, booleans and lists are handled by `mkBool` and `mkList`, + # though they can still appear as values of a list. + # By default, everything is printed verbatim and complex types + # are forbidden (lists, attrsets, functions). `null` values are omitted. + mkOption ? + k: v: if v == null + then [] + else [ (mkOptionName k) (lib.generators.mkValueStringDefault {} v) ] + }: + options: + let + render = k: v: + if builtins.isBool v then mkBool k v + else if builtins.isList v then mkList k v + else mkOption k v; + + in + builtins.concatLists (lib.mapAttrsToList render options); +} diff --git a/lib/customisation.nix b/lib/customisation.nix index ac234e3b8c6..dc5dd769197 100644 --- a/lib/customisation.nix +++ b/lib/customisation.nix @@ -131,7 +131,12 @@ rec { origArgs = auto // args; pkgs = f origArgs; mkAttrOverridable = name: _: makeOverridable (newArgs: (f newArgs).${name}) origArgs; - in lib.mapAttrs mkAttrOverridable pkgs; + in + if lib.isDerivation pkgs then throw + ("function `callPackages` was called on a *single* derivation " + + ''"${pkgs.name or ""}";'' + + " did you mean to use `callPackage` instead?") + else lib.mapAttrs mkAttrOverridable pkgs; /* Add attributes to each output of a derivation without changing diff --git a/lib/default.nix b/lib/default.nix index 8af53152586..d00c4abec0a 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -24,6 +24,7 @@ let # packaging customisation = callLibs ./customisation.nix; maintainers = import ../maintainers/maintainer-list.nix; + teams = callLibs ../maintainers/team-list.nix; meta = callLibs ./meta.nix; sources = callLibs ./sources.nix; versions = callLibs ./versions.nix; @@ -37,10 +38,13 @@ let licenses = callLibs ./licenses.nix; systems = callLibs ./systems; + # serialization + cli = callLibs ./cli.nix; + generators = callLibs ./generators.nix; + # misc asserts = callLibs ./asserts.nix; debug = callLibs ./debug.nix; - generators = callLibs ./generators.nix; misc = callLibs ./deprecated.nix; # domain-specific @@ -52,6 +56,9 @@ let # back-compat aliases platforms = systems.doubles; + # linux kernel configuration + kernel = callLibs ./kernel.nix; + inherit (builtins) add addErrorContext attrNames concatLists deepSeq elem elemAt filter genericClosure genList getAttr hasAttr head isAttrs isBool isInt isList isString length @@ -70,7 +77,8 @@ let genAttrs isDerivation toDerivation optionalAttrs zipAttrsWithNames zipAttrsWith zipAttrs recursiveUpdateUntil recursiveUpdate matchAttrs overrideExisting getOutput getBin - getLib getDev chooseDevOutputs zipWithNames zip; + getLib getDev chooseDevOutputs zipWithNames zip + recurseIntoAttrs dontRecurseIntoAttrs; inherit (lists) singleton forEach foldr fold foldl foldl' imap0 imap1 concatMap flatten remove findSingle findFirst any all count optional optionals toList range partition zipListsWith zipLists @@ -100,9 +108,9 @@ let inherit (sources) pathType pathIsDirectory cleanSourceFilter cleanSource sourceByRegex sourceFilesBySuffices commitIdFromGitRepo cleanSourceWith pathHasContext - canCleanSource; - inherit (modules) evalModules closeModules unifyModuleSyntax - applyIfFunction unpackSubmodule packSubmodule mergeModules + canCleanSource pathIsRegularFile pathIsGitRepo; + inherit (modules) evalModules unifyModuleSyntax + applyIfFunction mergeModules mergeModules' mergeOptionDecls evalOptionValue mergeDefinitions pushDownProperties dischargeProperties filterOverrides sortProperties fixupOptionType mkIf mkAssert mkMerge mkOverride @@ -110,7 +118,7 @@ let mkFixStrictness mkOrder mkBefore mkAfter mkAliasDefinitions mkAliasAndWrapDefinitions fixMergeModules mkRemovedOptionModule mkRenamedOptionModule mkMergedOptionModule mkChangedOptionModule - mkAliasOptionModule doRename filterModules; + mkAliasOptionModule doRename; inherit (options) isOption mkEnableOption mkSinkUndeclaredOptions mergeDefaultOption mergeOneOption mergeEqualOption getValues getFiles optionAttrSetToDocList optionAttrSetToDocList' @@ -133,7 +141,7 @@ let mergeAttrsWithFunc mergeAttrsConcatenateValues mergeAttrsNoOverride mergeAttrByFunc mergeAttrsByFuncDefaults mergeAttrsByFuncDefaultsClean mergeAttrBy - fakeSha256 fakeSha512 + fakeSri fakeSha256 fakeSha512 nixType imap; inherit (versions) splitVersion; diff --git a/lib/deprecated.nix b/lib/deprecated.nix index 155d6f0c361..8c4fe9c390c 100644 --- a/lib/deprecated.nix +++ b/lib/deprecated.nix @@ -272,6 +272,7 @@ rec { imap = imap1; # Fake hashes. Can be used as hash placeholders, when computing hash ahead isn't trivial + fakeSri = "sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="; fakeSha256 = "0000000000000000000000000000000000000000000000000000000000000000"; fakeSha512 = "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; } diff --git a/lib/generators.nix b/lib/generators.nix index a71654bec6c..efe6ea6031d 100644 --- a/lib/generators.nix +++ b/lib/generators.nix @@ -46,7 +46,10 @@ rec { else if isList v then err "lists" v # same as for lists, might want to replace else if isAttrs v then err "attrsets" v + # functions can’t be printed of course else if isFunction v then err "functions" v + # let’s not talk about floats. There is no sensible `toString` for them. + else if isFloat v then err "floats" v else err "this value is" (toString v); @@ -73,10 +76,14 @@ rec { * mkKeyValue is the same as in toINI. */ toKeyValue = { - mkKeyValue ? mkKeyValueDefault {} "=" - }: attrs: - let mkLine = k: v: mkKeyValue k v + "\n"; - in libStr.concatStrings (libAttr.mapAttrsToList mkLine attrs); + mkKeyValue ? mkKeyValueDefault {} "=", + listsAsDuplicateKeys ? false + }: + let mkLine = k: v: mkKeyValue k v + "\n"; + mkLines = if listsAsDuplicateKeys + then k: v: map (mkLine k) (if lib.isList v then v else [v]) + else k: v: [ (mkLine k v) ]; + in attrs: libStr.concatStrings (lib.concatLists (libAttr.mapAttrsToList mkLines attrs)); /* Generate an INI-style config file from an @@ -103,7 +110,9 @@ rec { # apply transformations (e.g. escapes) to section names mkSectionName ? (name: libStr.escape [ "[" "]" ] name), # format a setting line from key and value - mkKeyValue ? mkKeyValueDefault {} "=" + mkKeyValue ? mkKeyValueDefault {} "=", + # allow lists as values for duplicate keys + listsAsDuplicateKeys ? false }: attrsOfAttrs: let # map function to string for each key val @@ -112,11 +121,64 @@ rec { (libAttr.mapAttrsToList mapFn attrs); mkSection = sectName: sectValues: '' [${mkSectionName sectName}] - '' + toKeyValue { inherit mkKeyValue; } sectValues; + '' + toKeyValue { inherit mkKeyValue listsAsDuplicateKeys; } sectValues; in # map input to ini sections mapAttrsToStringsSep "\n" mkSection attrsOfAttrs; + /* Generate a git-config file from an attrset. + * + * It has two major differences from the regular INI format: + * + * 1. values are indented with tabs + * 2. sections can have sub-sections + * + * generators.toGitINI { + * url."ssh://git@github.com/".insteadOf = "https://github.com"; + * user.name = "edolstra"; + * } + * + *> [url "ssh://git@github.com/"] + *> insteadOf = https://github.com/ + *> + *> [user] + *> name = edolstra + */ + toGitINI = attrs: + with builtins; + let + mkSectionName = name: + let + containsQuote = libStr.hasInfix ''"'' name; + sections = libStr.splitString "." name; + section = head sections; + subsections = tail sections; + subsection = concatStringsSep "." subsections; + in if containsQuote || subsections == [ ] then + name + else + ''${section} "${subsection}"''; + + # generation for multiple ini values + mkKeyValue = k: v: + let mkKeyValue = mkKeyValueDefault { } " = " k; + in concatStringsSep "\n" (map (kv: "\t" + mkKeyValue kv) (lib.toList v)); + + # converts { a.b.c = 5; } to { "a.b".c = 5; } for toINI + gitFlattenAttrs = let + recurse = path: value: + if isAttrs value then + lib.mapAttrsToList (name: value: recurse ([ name ] ++ path) value) value + else if length path > 1 then { + ${concatStringsSep "." (lib.reverseList (tail path))}.${head path} = value; + } else { + ${head path} = value; + }; + in attrs: lib.foldl lib.recursiveUpdate { } (lib.flatten (recurse [ ] attrs)); + + toINI_ = toINI { inherit mkKeyValue mkSectionName; }; + in + toINI_ (gitFlattenAttrs attrs); /* Generates JSON from an arbitrary (non-function) value. * For more information see the documentation of the builtin. diff --git a/lib/kernel.nix b/lib/kernel.nix index 36ea3083828..2ce19f8cb68 100644 --- a/lib/kernel.nix +++ b/lib/kernel.nix @@ -1,12 +1,7 @@ -{ lib, version }: +{ lib }: with lib; { - # Common patterns/legacy - whenAtLeast = ver: mkIf (versionAtLeast version ver); - whenOlder = ver: mkIf (versionOlder version ver); - # range is (inclusive, exclusive) - whenBetween = verLow: verHigh: mkIf (versionAtLeast version verLow && versionOlder version verHigh); # Keeping these around in case we decide to change this horrible implementation :) @@ -18,4 +13,14 @@ with lib; module = { tristate = "m"; }; freeform = x: { freeform = x; }; + /* + Common patterns/legacy used in common-config/hardened-config.nix + */ + whenHelpers = version: { + whenAtLeast = ver: mkIf (versionAtLeast version ver); + whenOlder = ver: mkIf (versionOlder version ver); + # range is (inclusive, exclusive) + whenBetween = verLow: verHigh: mkIf (versionAtLeast version verLow && versionOlder version verHigh); + }; + } diff --git a/lib/licenses.nix b/lib/licenses.nix index 986b7fa1fdd..94bcd777f0d 100644 --- a/lib/licenses.nix +++ b/lib/licenses.nix @@ -2,7 +2,7 @@ let spdx = lic: lic // { - url = "http://spdx.org/licenses/${lic.spdxId}.html"; + url = "https://spdx.org/licenses/${lic.spdxId}.html"; }; in @@ -40,13 +40,13 @@ lib.mapAttrs (n: v: v // { shortName = n; }) { amazonsl = { fullName = "Amazon Software License"; - url = http://aws.amazon.com/asl/; + url = "https://aws.amazon.com/asl/"; free = false; }; amd = { fullName = "AMD License Agreement"; - url = http://developer.amd.com/amd-license-agreement/; + url = "https://developer.amd.com/amd-license-agreement/"; free = false; }; @@ -57,7 +57,7 @@ lib.mapAttrs (n: v: v // { shortName = n; }) { arphicpl = { fullName = "Arphic Public License"; - url = https://www.freedesktop.org/wiki/Arphic_Public_License/; + url = "https://www.freedesktop.org/wiki/Arphic_Public_License/"; }; artistic1 = spdx { @@ -107,7 +107,7 @@ lib.mapAttrs (n: v: v // { shortName = n; }) { bsl11 = { fullName = "Business Source License 1.1"; - url = https://mariadb.com/bsl11; + url = "https://mariadb.com/bsl11"; free = false; }; @@ -230,7 +230,7 @@ lib.mapAttrs (n: v: v // { shortName = n; }) { eapl = { fullName = "EPSON AVASYS PUBLIC LICENSE"; - url = http://avasys.jp/hp/menu000000700/hpg000000603.htm; + url = "https://avasys.jp/hp/menu000000700/hpg000000603.htm"; free = false; }; @@ -246,7 +246,7 @@ lib.mapAttrs (n: v: v // { shortName = n; }) { elastic = { fullName = "ELASTIC LICENSE"; - url = https://github.com/elastic/elasticsearch/blob/master/licenses/ELASTIC-LICENSE.txt; + url = "https://github.com/elastic/elasticsearch/blob/master/licenses/ELASTIC-LICENSE.txt"; free = false; }; @@ -262,7 +262,7 @@ lib.mapAttrs (n: v: v // { shortName = n; }) { epson = { fullName = "Seiko Epson Corporation Software License Agreement for Linux"; - url = https://download.ebz.epson.net/dsc/du/02/eula/global/LINUX_EN.html; + url = "https://download.ebz.epson.net/dsc/du/02/eula/global/LINUX_EN.html"; free = false; }; @@ -293,7 +293,7 @@ lib.mapAttrs (n: v: v // { shortName = n; }) { ffsl = { fullName = "Floodgap Free Software License"; - url = http://www.floodgap.com/software/ffsl/license.html; + url = "https://www.floodgap.com/software/ffsl/license.html"; free = false; }; @@ -303,12 +303,12 @@ lib.mapAttrs (n: v: v // { shortName = n; }) { g4sl = { fullName = "Geant4 Software License"; - url = https://geant4.web.cern.ch/geant4/license/LICENSE.html; + url = "https://geant4.web.cern.ch/geant4/license/LICENSE.html"; }; geogebra = { fullName = "GeoGebra Non-Commercial License Agreement"; - url = https://www.geogebra.org/license; + url = "https://www.geogebra.org/license"; free = false; }; @@ -334,12 +334,12 @@ lib.mapAttrs (n: v: v // { shortName = n; }) { gpl2ClasspathPlus = { fullName = "GNU General Public License v2.0 or later (with Classpath exception)"; - url = https://fedoraproject.org/wiki/Licensing/GPL_Classpath_Exception; + url = "https://fedoraproject.org/wiki/Licensing/GPL_Classpath_Exception"; }; gpl2Oss = { fullName = "GNU General Public License version 2 only (with OSI approved licenses linking exception)"; - url = https://www.mysql.com/about/legal/licensing/foss-exception; + url = "https://www.mysql.com/about/legal/licensing/foss-exception"; }; gpl2Plus = spdx { @@ -359,7 +359,7 @@ lib.mapAttrs (n: v: v // { shortName = n; }) { gpl3ClasspathPlus = { fullName = "GNU General Public License v3.0 or later (with Classpath exception)"; - url = https://fedoraproject.org/wiki/Licensing/GPL_Classpath_Exception; + url = "https://fedoraproject.org/wiki/Licensing/GPL_Classpath_Exception"; }; hpnd = spdx { @@ -370,7 +370,7 @@ lib.mapAttrs (n: v: v // { shortName = n; }) { # Intel's license, seems free iasl = { fullName = "iASL"; - url = http://www.calculate-linux.org/packages/licenses/iASL; + url = "https://old.calculate-linux.org/packages/licenses/iASL"; }; ijg = spdx { @@ -385,13 +385,13 @@ lib.mapAttrs (n: v: v // { shortName = n; }) { inria-compcert = { fullName = "INRIA Non-Commercial License Agreement for the CompCert verified compiler"; - url = "http://compcert.inria.fr/doc/LICENSE"; + url = "http://compcert.inria.fr/doc/LICENSE"; # https is broken free = false; }; inria-icesl = { fullName = "INRIA Non-Commercial License Agreement for IceSL"; - url = "http://shapeforge.loria.fr/icesl/EULA_IceSL_binary.pdf"; + url = "http://shapeforge.loria.fr/icesl/EULA_IceSL_binary.pdf"; # https is broken free = false; }; @@ -413,7 +413,7 @@ lib.mapAttrs (n: v: v // { shortName = n; }) { # Proprietary binaries; free to redistribute without modification. issl = { fullName = "Intel Simplified Software License"; - url = https://software.intel.com/en-us/license/intel-simplified-software-license; + url = "https://software.intel.com/en-us/license/intel-simplified-software-license"; free = false; }; @@ -469,7 +469,7 @@ lib.mapAttrs (n: v: v // { shortName = n; }) { llgpl21 = { fullName = "Lisp LGPL; GNU Lesser General Public License version 2.1 with Franz Inc. preamble for clarification of LGPL terms in context of Lisp"; - url = http://opensource.franz.com/preamble.html; + url = "https://opensource.franz.com/preamble.html"; }; lppl12 = spdx { @@ -489,11 +489,11 @@ lib.mapAttrs (n: v: v // { shortName = n; }) { miros = { fullName = "MirOS License"; - url = https://opensource.org/licenses/MirOS; + url = "https://opensource.org/licenses/MirOS"; }; # spdx.org does not (yet) differentiate between the X11 and Expat versions - # for details see http://en.wikipedia.org/wiki/MIT_License#Various_versions + # for details see https://en.wikipedia.org/wiki/MIT_License#Various_versions mit = spdx { spdxId = "MIT"; fullName = "MIT License"; @@ -536,11 +536,6 @@ lib.mapAttrs (n: v: v // { shortName = n; }) { fullName = "University of Illinois/NCSA Open Source License"; }; - notion_lgpl = { - url = "https://raw.githubusercontent.com/raboof/notion/master/LICENSE"; - fullName = "Notion modified LGPL"; - }; - nposl3 = spdx { spdxId = "NPOSL-3.0"; fullName = "Non-Profit Open Software License 3.0"; @@ -594,14 +589,14 @@ lib.mapAttrs (n: v: v // { shortName = n; }) { postman = { fullName = "Postman EULA"; - url = https://www.getpostman.com/licenses/postman_base_app; + url = "https://www.getpostman.com/licenses/postman_base_app"; free = false; }; psfl = spdx { spdxId = "Python-2.0"; fullName = "Python Software Foundation License version 2"; - #url = http://docs.python.org/license.html; + url = "https://docs.python.org/license.html"; }; publicDomain = { @@ -610,7 +605,7 @@ lib.mapAttrs (n: v: v // { shortName = n; }) { purdueBsd = { fullName = " Purdue BSD-Style License"; # also know as lsof license - url = https://enterprise.dejacode.com/licenses/public/purdue-bsd; + url = "https://enterprise.dejacode.com/licenses/public/purdue-bsd"; }; qhull = spdx { @@ -625,7 +620,7 @@ lib.mapAttrs (n: v: v // { shortName = n; }) { qwt = { fullName = "Qwt License, Version 1.0"; - url = http://qwt.sourceforge.net/qwtlicense.html; + url = "https://qwt.sourceforge.io/qwtlicense.html"; }; ruby = spdx { @@ -651,7 +646,14 @@ lib.mapAttrs (n: v: v // { shortName = n; }) { smail = { shortName = "smail"; fullName = "SMAIL General Public License"; - url = http://metadata.ftp-master.debian.org/changelogs/main/d/debianutils/debianutils_4.8.1_copyright; + url = "https://sources.debian.org/copyright/license/debianutils/4.9.1/"; + }; + + sspl = { + shortName = "SSPL"; + fullName = "Server Side Public License"; + url = "https://www.mongodb.com/licensing/server-side-public-license"; + free = false; }; tcltk = spdx { @@ -661,7 +663,7 @@ lib.mapAttrs (n: v: v // { shortName = n; }) { ufl = { fullName = "Ubuntu Font License 1.0"; - url = http://font.ubuntu.com/ufl/ubuntu-font-licence-1.0.txt; + url = "https://ubuntu.com/legal/font-licence"; }; unfree = { @@ -680,6 +682,11 @@ lib.mapAttrs (n: v: v // { shortName = n; }) { # channel and NixOS images. }; + unicode-dfs-2016 = spdx { + spdxId = "Unicode-DFS-2016"; + fullName = "Unicode License Agreement - Data Files and Software (2016)"; + }; + unlicense = spdx { spdxId = "Unlicense"; fullName = "The Unlicense"; @@ -718,7 +725,7 @@ lib.mapAttrs (n: v: v // { shortName = n; }) { wadalab = { fullName = "Wadalab Font License"; - url = https://fedoraproject.org/wiki/Licensing:Wadalab?rd=Licensing/Wadalab; + url = "https://fedoraproject.org/wiki/Licensing:Wadalab?rd=Licensing/Wadalab"; }; wtfpl = spdx { @@ -733,7 +740,7 @@ lib.mapAttrs (n: v: v // { shortName = n; }) { xfig = { fullName = "xfig"; - url = "http://mcj.sourceforge.net/authors.html#xfig"; + url = "http://mcj.sourceforge.net/authors.html#xfig"; # https is broken }; zlib = spdx { diff --git a/lib/modules.nix b/lib/modules.nix index 44db77b5d1c..c18fec66c70 100644 --- a/lib/modules.nix +++ b/lib/modules.nix @@ -41,7 +41,13 @@ rec { options = { _module.args = mkOption { - type = types.attrsOf types.unspecified; + # Because things like `mkIf` are entirely useless for + # `_module.args` (because there's no way modules can check which + # arguments were passed), we'll use `lazyAttrsOf` which drops + # support for that, in turn it's lazy in its values. This means e.g. + # a `_module.args.pkgs = import (fetchTarball { ... }) {}` won't + # start a download when `pkgs` wasn't evaluated. + type = types.lazyAttrsOf types.unspecified; internal = true; description = "Arguments passed to each module."; }; @@ -59,9 +65,12 @@ rec { }; }; - closed = closeModules (modules ++ [ internalModule ]) ({ inherit config options lib; } // specialArgs); + collected = collectModules + (specialArgs.modulesPath or "") + (modules ++ [ internalModule ]) + ({ inherit config options lib; } // specialArgs); - options = mergeModules prefix (reverseList (filterModules (specialArgs.modulesPath or "") closed)); + options = mergeModules prefix (reverseList collected); # Traverse options and extract the option values into the final # config set. At the same time, check whether all option @@ -84,61 +93,110 @@ rec { res set._definedNames else res; - result = { inherit options config; }; + result = { + inherit options; + config = removeAttrs config [ "_module" ]; + inherit (config) _module; + }; in result; + # collectModules :: (modulesPath: String) -> (modules: [ Module ]) -> (args: Attrs) -> [ Module ] + # + # Collects all modules recursively through `import` statements, filtering out + # all modules in disabledModules. + collectModules = let - # Filter disabled modules. Modules can be disabled allowing - # their implementation to be replaced. - filterModules = modulesPath: modules: - let - moduleKey = m: if isString m then toString modulesPath + "/" + m else toString m; - disabledKeys = map moduleKey (concatMap (m: m.disabledModules) modules); - in - filter (m: !(elem m.key disabledKeys)) modules; + # Like unifyModuleSyntax, but also imports paths and calls functions if necessary + loadModule = args: fallbackFile: fallbackKey: m: + if isFunction m || isAttrs m then + unifyModuleSyntax fallbackFile fallbackKey (applyIfFunction fallbackKey m args) + else unifyModuleSyntax (toString m) (toString m) (applyIfFunction (toString m) (import m) args); - /* Close a set of modules under the ‘imports’ relation. */ - closeModules = modules: args: - let - toClosureList = file: parentKey: imap1 (n: x: - if isAttrs x || isFunction x then - let key = "${parentKey}:anon-${toString n}"; in - unifyModuleSyntax file key (unpackSubmodule (applyIfFunction key) x args) - else - let file = toString x; key = toString x; in - unifyModuleSyntax file key (applyIfFunction key (import x) args)); - in - builtins.genericClosure { - startSet = toClosureList unknownModule "" modules; - operator = m: toClosureList m.file m.key m.imports; - }; + /* + Collects all modules recursively into the form + + { + disabled = [ ]; + # All modules of the main module list + modules = [ + { + key = ; + module = ; + # All modules imported by the module for key1 + modules = [ + { + key = ; + module = ; + # All modules imported by the module for key1-1 + modules = [ ... ]; + } + ... + ]; + } + ... + ]; + } + */ + collectStructuredModules = + let + collectResults = modules: { + disabled = concatLists (catAttrs "disabled" modules); + inherit modules; + }; + in parentFile: parentKey: initialModules: args: collectResults (imap1 (n: x: + let + module = loadModule args parentFile "${parentKey}:anon-${toString n}" x; + collectedImports = collectStructuredModules module._file module.key module.imports args; + in { + key = module.key; + module = module; + modules = collectedImports.modules; + disabled = module.disabledModules ++ collectedImports.disabled; + }) initialModules); + + # filterModules :: String -> { disabled, modules } -> [ Module ] + # + # Filters a structure as emitted by collectStructuredModules by removing all disabled + # modules recursively. It returns the final list of unique-by-key modules + filterModules = modulesPath: { disabled, modules }: + let + moduleKey = m: if isString m then toString modulesPath + "/" + m else toString m; + disabledKeys = map moduleKey disabled; + keyFilter = filter (attrs: ! elem attrs.key disabledKeys); + in map (attrs: attrs.module) (builtins.genericClosure { + startSet = keyFilter modules; + operator = attrs: keyFilter attrs.modules; + }); + + in modulesPath: initialModules: args: + filterModules modulesPath (collectStructuredModules unknownModule "" initialModules args); /* Massage a module into canonical form, that is, a set consisting of ‘options’, ‘config’ and ‘imports’ attributes. */ unifyModuleSyntax = file: key: m: - let metaSet = if m ? meta - then { meta = m.meta; } - else {}; + let addMeta = config: if m ? meta + then mkMerge [ config { meta = m.meta; } ] + else config; in if m ? config || m ? options then let badAttrs = removeAttrs m ["_file" "key" "disabledModules" "imports" "options" "config" "meta"]; in if badAttrs != {} then - throw "Module `${key}' has an unsupported attribute `${head (attrNames badAttrs)}'. This is caused by assignments to the top-level attributes `config' or `options'." + throw "Module `${key}' has an unsupported attribute `${head (attrNames badAttrs)}'. This is caused by introducing a top-level `config' or `options' attribute. Add configuration attributes immediately on the top level instead, or move all of them (namely: ${toString (attrNames badAttrs)}) into the explicit `config' attribute." else - { file = m._file or file; + { _file = m._file or file; key = toString m.key or key; disabledModules = m.disabledModules or []; imports = m.imports or []; options = m.options or {}; - config = mkMerge [ (m.config or {}) metaSet ]; + config = addMeta (m.config or {}); } else - { file = m._file or file; + { _file = m._file or file; key = toString m.key or key; disabledModules = m.disabledModules or []; imports = m.require or [] ++ m.imports or []; options = {}; - config = mkMerge [ (removeAttrs m ["_file" "key" "disabledModules" "require" "imports"]) metaSet ]; + config = addMeta (removeAttrs m ["_file" "key" "disabledModules" "require" "imports"]); }; applyIfFunction = key: f: args@{ config, options, lib, ... }: if isFunction f then @@ -171,17 +229,6 @@ rec { else f; - /* We have to pack and unpack submodules. We cannot wrap the expected - result of the function as we would no longer be able to list the arguments - of the submodule. (see applyIfFunction) */ - unpackSubmodule = unpack: m: args: - if isType "submodule" m then - { _file = m.file; } // (unpack m.submodule args) - else unpack m args; - - packSubmodule = file: m: - { _type = "submodule"; file = file; submodule = m; }; - /* Merge a list of modules. This will recurse over the option declarations in all modules, combining them into a single set. At the same time, for each option declaration, it will merge the @@ -189,7 +236,7 @@ rec { in the ‘value’ attribute of each option. */ mergeModules = prefix: modules: mergeModules' prefix modules - (concatMap (m: map (config: { inherit (m) file; inherit config; }) (pushDownProperties m.config)) modules); + (concatMap (m: map (config: { file = m._file; inherit config; }) (pushDownProperties m.config)) modules); mergeModules' = prefix: options: configs: let @@ -223,7 +270,7 @@ rec { ) {} modules; # an attrset 'name' => list of submodules that declare ‘name’. declsByName = byName "options" (module: option: - [{ inherit (module) file; options = option; }] + [{ inherit (module) _file; options = option; }] ) options; # an attrset 'name' => list of submodules that define ‘name’. defnsByName = byName "config" (module: value: @@ -250,7 +297,7 @@ rec { firstOption = findFirst (m: isOption m.options) "" decls; firstNonOption = findFirst (m: !isOption m.options) "" decls; in - throw "The option `${showOption loc}' in `${firstOption.file}' is a prefix of options in `${firstNonOption.file}'." + throw "The option `${showOption loc}' in `${firstOption._file}' is a prefix of options in `${firstNonOption._file}'." else mergeModules' loc decls defns )) @@ -267,7 +314,14 @@ rec { 'opts' is a list of modules. Each module has an options attribute which correspond to the definition of 'loc' in 'opt.file'. */ - mergeOptionDecls = loc: opts: + mergeOptionDecls = + let + packSubmodule = file: m: + { _file = file; imports = [ m ]; }; + coerceOption = file: opt: + if isFunction opt then packSubmodule file opt + else packSubmodule file { options = opt; }; + in loc: opts: foldl' (res: opt: let t = res.type; t' = opt.options.type; @@ -284,7 +338,7 @@ rec { bothHave "apply" || (bothHave "type" && (! typesMergeable)) then - throw "The option `${showOption loc}' in `${opt.file}' is already declared in ${showFiles res.declarations}." + throw "The option `${showOption loc}' in `${opt._file}' is already declared in ${showFiles res.declarations}." else let /* Add the modules of the current option to the list of modules @@ -293,16 +347,14 @@ rec { current option declaration as the file use for the submodule. If the submodule defines any filename, then we ignore the enclosing option file. */ options' = toList opt.options.options; - coerceOption = file: opt: - if isFunction opt then packSubmodule file opt - else packSubmodule file { options = opt; }; + getSubModules = opt.options.type.getSubModules or null; submodules = - if getSubModules != null then map (packSubmodule opt.file) getSubModules ++ res.options - else if opt.options ? options then map (coerceOption opt.file) options' ++ res.options + if getSubModules != null then map (packSubmodule opt._file) getSubModules ++ res.options + else if opt.options ? options then map (coerceOption opt._file) options' ++ res.options else res.options; in opt.options // res // - { declarations = res.declarations ++ [opt.file]; + { declarations = res.declarations ++ [opt._file]; options = submodules; } // typeSet ) { inherit loc; declarations = []; options = []; } opts; @@ -323,16 +375,9 @@ rec { else mergeDefinitions loc opt.type defs'; - - # The value with a check that it is defined - valueDefined = if res.isDefined then res.mergedValue else - # (nixos-option detects this specific error message and gives it special - # handling. If changed here, please change it there too.) - throw "The option `${showOption loc}' is used but not defined."; - # Apply the 'apply' function to the merged value. This allows options to # yield a value computed from the definitions - value = if opt ? apply then opt.apply valueDefined else valueDefined; + value = if opt ? apply then opt.apply res.mergedValue else res.mergedValue; in opt // { value = builtins.addErrorContext "while evaluating the option `${showOption loc}':" value; @@ -348,7 +393,7 @@ rec { let # Process mkMerge and mkIf properties. defs' = concatMap (m: - map (value: { inherit (m) file; inherit value; }) (dischargeProperties m.value) + map (value: { inherit (m) file; inherit value; }) (builtins.addErrorContext "while evaluating definitions from `${m.file}':" (dischargeProperties m.value)) ) defs; # Process mkOverride properties. @@ -366,11 +411,16 @@ rec { }; defsFinal = defsFinal'.values; - # Type-check the remaining definitions, and merge them. - mergedValue = foldl' (res: def: - if type.check def.value then res - else throw "The option value `${showOption loc}' in `${def.file}' is not of type `${type.description}'.") - (type.merge loc defsFinal) defsFinal; + # Type-check the remaining definitions, and merge them. Or throw if no definitions. + mergedValue = + if isDefined then + if all (def: type.check def.value) defsFinal then type.merge loc defsFinal + else let firstInvalid = findFirst (def: ! type.check def.value) null defsFinal; + in throw "The option value `${showOption loc}' in `${firstInvalid.file}' is not of type `${type.description}'." + else + # (nixos-option detects this specific error message and gives it special + # handling. If changed here, please change it there too.) + throw "The option `${showOption loc}' is used but not defined."; isDefined = defsFinal != []; @@ -717,12 +767,15 @@ rec { fromOpt = getAttrFromPath from options; toOf = attrByPath to (abort "Renaming error: option `${showOption to}' does not exist."); + toType = let opt = attrByPath to {} options; in opt.type or null; in { options = setAttrByPath from (mkOption { inherit visible; description = "Alias of ."; apply = x: use (toOf config); + } // optionalAttrs (toType != null) { + type = toType; }); config = mkMerge [ { diff --git a/lib/options.nix b/lib/options.nix index e5c0631a543..38f4f1329f2 100644 --- a/lib/options.nix +++ b/lib/options.nix @@ -159,7 +159,7 @@ rec { let ss = opt.type.getSubOptions opt.loc; in if ss != {} then optionAttrSetToDocList' opt.loc ss else []; in - [ docOption ] ++ subOptions) (collect isOption options); + [ docOption ] ++ optionals docOption.visible subOptions) (collect isOption options); /* This function recursively removes all derivation attributes from @@ -191,7 +191,14 @@ rec { Example: (showOption ["foo" "bar" "baz"]) == "foo.bar.baz" - (showOption ["foo" "bar.baz" "tux"]) == "foo.\"bar.baz\".tux" + (showOption ["foo" "bar.baz" "tux"]) == "foo.bar.baz.tux" + + Placeholders will not be quoted as they are not actual values: + (showOption ["foo" "*" "bar"]) == "foo.*.bar" + (showOption ["foo" "" "bar"]) == "foo..bar" + + Unlike attributes, options can also start with numbers: + (showOption ["windowManager" "2bwm" "enable"]) == "windowManager.2bwm.enable" */ showOption = parts: let escapeOptionPart = part: diff --git a/lib/sources.nix b/lib/sources.nix index 51bcf5559e3..ed9bce48530 100644 --- a/lib/sources.nix +++ b/lib/sources.nix @@ -9,6 +9,9 @@ rec { # Returns true if the path exists and is a directory, false otherwise pathIsDirectory = p: if builtins.pathExists p then (pathType p) == "directory" else false; + # Returns true if the path exists and is a regular file, false otherwise + pathIsRegularFile = p: if builtins.pathExists p then (pathType p) == "regular" else false; + # Bring in a path as a source, filtering out all Subversion and CVS # directories, as well as backup files (*~). cleanSourceFilter = name: type: let baseName = baseNameOf (toString name); in ! ( @@ -60,17 +63,14 @@ rec { # https://nixos.org/nix/manual/#builtin-filterSource # # name: Optional name to use as part of the store path. - # This defaults `src.name` or otherwise `baseNameOf src`. - # We recommend setting `name` whenever `src` is syntactically `./.`. - # Otherwise, you depend on `./.`'s name in the parent directory, - # which can cause inconsistent names, defeating caching. + # This defaults to `src.name` or otherwise `"source"`. # cleanSourceWith = { filter ? _path: _type: true, src, name ? null }: let isFiltered = src ? _isLibCleanSourceWith; origSrc = if isFiltered then src.origSrc else src; filter' = if isFiltered then name: type: filter name type && src.filter name type else filter; - name' = if name != null then name else if isFiltered then src.name else baseNameOf src; + name' = if name != null then name else if isFiltered then src.name else "source"; in { inherit origSrc; filter = filter'; @@ -102,6 +102,7 @@ rec { in type == "directory" || lib.any (ext: lib.hasSuffix ext base) exts; in cleanSourceWith { inherit filter; src = path; }; + pathIsGitRepo = path: (builtins.tryEval (commitIdFromGitRepo path)).success; # Get the commit id of a git repo # Example: commitIdFromGitRepo @@ -110,24 +111,45 @@ rec { with builtins; let fileName = toString path + "/" + file; packedRefsName = toString path + "/packed-refs"; - in if lib.pathExists fileName + absolutePath = base: path: + if lib.hasPrefix "/" path + then path + else toString (/. + "${base}/${path}"); + in if pathIsRegularFile path + # Resolve git worktrees. See gitrepository-layout(5) + then + let m = match "^gitdir: (.*)$" (lib.fileContents path); + in if m == null + then throw ("File contains no gitdir reference: " + path) + else + let gitDir = absolutePath (dirOf path) (lib.head m); + commonDir' = if pathIsRegularFile "${gitDir}/commondir" + then lib.fileContents "${gitDir}/commondir" + else gitDir; + commonDir = absolutePath gitDir commonDir'; + refFile = lib.removePrefix "${commonDir}/" "${gitDir}/${file}"; + in readCommitFromFile refFile commonDir + + else if pathIsRegularFile fileName + # Sometimes git stores the commitId directly in the file but + # sometimes it stores something like: «ref: refs/heads/branch-name» then let fileContent = lib.fileContents fileName; - # Sometimes git stores the commitId directly in the file but - # sometimes it stores something like: «ref: refs/heads/branch-name» matchRef = match "^ref: (.*)$" fileContent; - in if matchRef == null + in if matchRef == null then fileContent else readCommitFromFile (lib.head matchRef) path + + else if pathIsRegularFile packedRefsName # Sometimes, the file isn't there at all and has been packed away in the # packed-refs file, so we have to grep through it: - else if lib.pathExists packedRefsName then let fileContent = readFile packedRefsName; matchRef = match (".*\n([^\n ]*) " + file + "\n.*") fileContent; - in if matchRef == null + in if matchRef == null then throw ("Could not find " + file + " in " + packedRefsName) else lib.head matchRef + else throw ("Not a .git directory: " + path); in readCommitFromFile "HEAD"; diff --git a/lib/strings.nix b/lib/strings.nix index 6dbb3d3a3e8..74e3eaa0722 100644 --- a/lib/strings.nix +++ b/lib/strings.nix @@ -244,7 +244,7 @@ rec { Also note that Nix treats strings as a list of bytes and thus doesn't handle unicode. - Type: stringtoCharacters :: string -> [string] + Type: stringToCharacters :: string -> [string] Example: stringToCharacters "" @@ -315,6 +315,21 @@ rec { */ escapeNixString = s: escape ["$"] (builtins.toJSON s); + /* Quotes a string if it can't be used as an identifier directly. + + Type: string -> string + + Example: + escapeNixIdentifier "hello" + => "hello" + escapeNixIdentifier "0abc" + => "\"0abc\"" + */ + escapeNixIdentifier = s: + # Regex from https://github.com/NixOS/nix/blob/d048577909e383439c2549e849c5c2f2016c997e/src/libexpr/lexer.l#L91 + if builtins.match "[a-zA-Z_][a-zA-Z0-9_'-]*" s != null + then s else escapeNixString s; + # Obsolete - use replaceStrings instead. replaceChars = builtins.replaceStrings or ( del: new: s: @@ -678,4 +693,36 @@ rec { => "1.0" */ fileContents = file: removeSuffix "\n" (builtins.readFile file); + + + /* Creates a valid derivation name from a potentially invalid one. + + Type: sanitizeDerivationName :: String -> String + + Example: + sanitizeDerivationName "../hello.bar # foo" + => "-hello.bar-foo" + sanitizeDerivationName "" + => "unknown" + sanitizeDerivationName pkgs.hello + => "-nix-store-2g75chlbpxlrqn15zlby2dfh8hr9qwbk-hello-2.10" + */ + sanitizeDerivationName = string: lib.pipe string [ + # Get rid of string context. This is safe under the assumption that the + # resulting string is only used as a derivation name + builtins.unsafeDiscardStringContext + # Strip all leading "." + (x: builtins.elemAt (builtins.match "\\.*(.*)" x) 0) + # Split out all invalid characters + # https://github.com/NixOS/nix/blob/2.3.2/src/libstore/store-api.cc#L85-L112 + # https://github.com/NixOS/nix/blob/2242be83c61788b9c0736a92bb0b5c7bbfc40803/nix-rust/src/store/path.rs#L100-L125 + (builtins.split "[^[:alnum:]+._?=-]+") + # Replace invalid character ranges with a "-" + (concatMapStrings (s: if lib.isList s then "-" else s)) + # Limit to 211 characters (minus 4 chars for ".drv") + (x: substring (lib.max (stringLength x - 207) 0) (-1) x) + # If the result is empty, replace it with "unknown" + (x: if stringLength x == 0 then "unknown" else x) + ]; + } diff --git a/lib/systems/default.nix b/lib/systems/default.nix index 026117cc34f..210674cc639 100644 --- a/lib/systems/default.nix +++ b/lib/systems/default.nix @@ -36,9 +36,8 @@ rec { else if final.isUClibc then "uclibc" else if final.isAndroid then "bionic" else if final.isLinux /* default */ then "glibc" - else if final.isMsp430 then "newlib" - else if final.isVc4 then "newlib" else if final.isAvr then "avrlibc" + else if final.isNone then "newlib" else if final.isNetBSD then "nblibc" # TODO(@Ericson2314) think more about other operating systems else "native/impure"; @@ -66,6 +65,7 @@ rec { freebsd = "FreeBSD"; openbsd = "OpenBSD"; wasi = "Wasi"; + genode = "Genode"; }.${final.parsed.kernel.name} or null; # uname -p @@ -84,7 +84,7 @@ rec { else final.parsed.cpu.name; qemuArch = - if final.isArm then "arm" + if final.isAarch32 then "arm" else if final.isx86_64 then "x86_64" else if final.isx86 then "i386" else { diff --git a/lib/systems/doubles.nix b/lib/systems/doubles.nix index 700c895b3ab..a839b3d3d57 100644 --- a/lib/systems/doubles.nix +++ b/lib/systems/doubles.nix @@ -26,7 +26,17 @@ let "riscv32-linux" "riscv64-linux" - "aarch64-none" "avr-none" "arm-none" "i686-none" "x86_64-none" "powerpc-none" "msp430-none" "riscv64-none" "riscv32-none" "vc4-none" + "arm-none" "armv6l-none" "aarch64-none" + "avr-none" + "i686-none" "x86_64-none" + "powerpc-none" + "msp430-none" + "riscv64-none" "riscv32-none" + "vc4-none" + + "js-ghcjs" + + "aarch64-genode" "x86_64-genode" ]; allParsed = map parse.mkSystemFromString all; @@ -46,6 +56,7 @@ in { mips = filterDoubles predicates.isMips; riscv = filterDoubles predicates.isRiscV; vc4 = filterDoubles predicates.isVc4; + js = filterDoubles predicates.isJavaScript; cygwin = filterDoubles predicates.isCygwin; darwin = filterDoubles predicates.isDarwin; @@ -59,6 +70,7 @@ in { unix = filterDoubles predicates.isUnix; wasi = filterDoubles predicates.isWasi; windows = filterDoubles predicates.isWindows; + genode = filterDoubles predicates.isGenode; embedded = filterDoubles predicates.isNone; diff --git a/lib/systems/examples.nix b/lib/systems/examples.nix index cb8bc3de6c4..19b3790ecbe 100644 --- a/lib/systems/examples.nix +++ b/lib/systems/examples.nix @@ -170,8 +170,8 @@ rec { iphone64 = { config = "aarch64-apple-ios"; # config = "aarch64-apple-darwin14"; - sdkVer = "10.2"; - xcodeVer = "8.2"; + sdkVer = "12.4"; + xcodeVer = "10.3"; xcodePlatform = "iPhoneOS"; useiOSPrebuilt = true; platform = {}; @@ -180,8 +180,8 @@ rec { iphone32 = { config = "armv7a-apple-ios"; # config = "arm-apple-darwin10"; - sdkVer = "10.2"; - xcodeVer = "8.2"; + sdkVer = "12.4"; + xcodeVer = "10.3"; xcodePlatform = "iPhoneOS"; useiOSPrebuilt = true; platform = {}; @@ -190,8 +190,8 @@ rec { iphone64-simulator = { config = "x86_64-apple-ios"; # config = "x86_64-apple-darwin14"; - sdkVer = "10.2"; - xcodeVer = "8.2"; + sdkVer = "12.4"; + xcodeVer = "10.3"; xcodePlatform = "iPhoneSimulator"; useiOSPrebuilt = true; platform = {}; @@ -200,8 +200,8 @@ rec { iphone32-simulator = { config = "i686-apple-ios"; # config = "i386-apple-darwin11"; - sdkVer = "10.2"; - xcodeVer = "8.2"; + sdkVer = "12.4"; + xcodeVer = "10.3"; xcodePlatform = "iPhoneSimulator"; useiOSPrebuilt = true; platform = {}; diff --git a/lib/systems/inspect.nix b/lib/systems/inspect.nix index d1980c6dff8..90a1fb6d80c 100644 --- a/lib/systems/inspect.nix +++ b/lib/systems/inspect.nix @@ -47,6 +47,7 @@ rec { isMinGW = { kernel = kernels.windows; abi = abis.gnu; }; isWasi = { kernel = kernels.wasi; }; isGhcjs = { kernel = kernels.ghcjs; }; + isGenode = { kernel = kernels.genode; }; isNone = { kernel = kernels.none; }; isAndroid = [ { abi = abis.android; } { abi = abis.androideabi; } ]; @@ -55,9 +56,6 @@ rec { isEfi = map (family: { cpu.family = family; }) [ "x86" "arm" "aarch64" ]; - - # Deprecated after 18.03 - isArm = isAarch32; }; matchAnyAttrs = patterns: diff --git a/lib/systems/parse.nix b/lib/systems/parse.nix index 6a02dbb5152..648e7c27024 100644 --- a/lib/systems/parse.nix +++ b/lib/systems/parse.nix @@ -279,6 +279,7 @@ rec { wasi = { execFormat = wasm; families = { }; }; windows = { execFormat = pe; families = { }; }; ghcjs = { execFormat = unknown; families = { }; }; + genode = { execFormat = elf; families = { }; }; } // { # aliases # 'darwin' is the kernel for all of them. We choose macOS by default. darwin = kernels.macos; @@ -395,6 +396,8 @@ rec { then { cpu = elemAt l 0; vendor = "unknown"; kernel = elemAt l 1; abi = elemAt l 2; } else if (elemAt l 2 == "ghcjs") then { cpu = elemAt l 0; vendor = "unknown"; kernel = elemAt l 2; } + else if hasPrefix "genode" (elemAt l 2) + then { cpu = elemAt l 0; vendor = elemAt l 1; kernel = elemAt l 2; } else throw "Target specification with 3 components is ambiguous"; "4" = { cpu = elemAt l 0; vendor = elemAt l 1; kernel = elemAt l 2; abi = elemAt l 3; }; }.${toString (length l)} diff --git a/lib/tests/maintainers.nix b/lib/tests/maintainers.nix new file mode 100644 index 00000000000..60d296eecae --- /dev/null +++ b/lib/tests/maintainers.nix @@ -0,0 +1,75 @@ +# to run these tests: +# nix-build nixpkgs/lib/tests/maintainers.nix +# If nothing is output, all tests passed +{ pkgs ? import ../.. {} }: + +let + inherit (pkgs) lib; + inherit (lib) types; + + maintainerModule = { config, ... }: { + options = { + name = lib.mkOption { + type = types.str; + }; + email = lib.mkOption { + type = types.str; + }; + github = lib.mkOption { + type = types.nullOr types.str; + default = null; + }; + githubId = lib.mkOption { + type = types.nullOr types.ints.unsigned; + default = null; + }; + keys = lib.mkOption { + type = types.listOf (types.submodule { + options.longkeyid = lib.mkOption { type = types.str; }; + options.fingerprint = lib.mkOption { type = types.str; }; + }); + default = []; + }; + }; + }; + + checkMaintainer = handle: uncheckedAttrs: + let + prefix = [ "lib" "maintainers" handle ]; + checkedAttrs = (lib.modules.evalModules { + inherit prefix; + modules = [ + maintainerModule + { + _file = toString ../../maintainers/maintainer-list.nix; + config = uncheckedAttrs; + } + ]; + }).config; + + checkGithubId = lib.optional (checkedAttrs.github != null && checkedAttrs.githubId == null) '' + echo ${lib.escapeShellArg (lib.showOption prefix)}': If `github` is specified, `githubId` must be too.' + # Calling this too often would hit non-authenticated API limits, but this + # shouldn't happen since such errors will get fixed rather quickly + info=$(curl -sS https://api.github.com/users/${checkedAttrs.github}) + id=$(jq -r '.id' <<< "$info") + echo "The GitHub ID for GitHub user ${checkedAttrs.github} is $id:" + echo -e " githubId = $id;\n" + ''; + in lib.deepSeq checkedAttrs checkGithubId; + + missingGithubIds = lib.concatLists (lib.mapAttrsToList checkMaintainer lib.maintainers); + + success = pkgs.runCommandNoCC "checked-maintainers-success" {} ">$out"; + + failure = pkgs.runCommandNoCC "checked-maintainers-failure" { + nativeBuildInputs = [ pkgs.curl pkgs.jq ]; + outputHash = "sha256:${lib.fakeSha256}"; + outputHAlgo = "sha256"; + outputHashMode = "flat"; + SSL_CERT_FILE = "${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt"; + } '' + ${lib.concatStringsSep "\n" missingGithubIds} + exit 1 + ''; +in if missingGithubIds == [] then success else failure diff --git a/lib/tests/misc.nix b/lib/tests/misc.nix index b064faa1e1b..36ddd186d7b 100644 --- a/lib/tests/misc.nix +++ b/lib/tests/misc.nix @@ -3,6 +3,23 @@ # if the resulting list is empty, all tests passed with import ../default.nix; +let + + testSanitizeDerivationName = { name, expected }: + let + drv = derivation { + name = strings.sanitizeDerivationName name; + builder = "x"; + system = "x"; + }; + in { + # Evaluate the derivation so an invalid name would be caught + expr = builtins.seq drv.drvPath drv.name; + inherit expected; + }; + +in + runTests { @@ -148,7 +165,7 @@ runTests { "${builtins.storeDir}/d945ibfx9x185xf04b890y4f9g3cbb63-python-2.7.11"; in { storePath = isStorePath goodPath; - storePathDerivation = isStorePath (import ../.. {}).hello; + storePathDerivation = isStorePath (import ../.. { system = "x86_64-linux"; }).hello; storePathAppendix = isStorePath "${goodPath}/bin/python"; nonAbsolute = isStorePath (concatStrings (tail (stringToCharacters goodPath))); @@ -348,6 +365,18 @@ runTests { ''; }; + testToINIDuplicateKeys = { + expr = generators.toINI { listsAsDuplicateKeys = true; } { foo.bar = true; baz.qux = [ 1 false ]; }; + expected = '' + [baz] + qux=1 + qux=false + + [foo] + bar=true + ''; + }; + testToINIDefaultEscapes = { expr = generators.toINI {} { "no [ and ] allowed unescaped" = { @@ -441,4 +470,66 @@ runTests { expected = "«foo»"; }; + +# CLI + + testToGNUCommandLine = { + expr = cli.toGNUCommandLine {} { + data = builtins.toJSON { id = 0; }; + X = "PUT"; + retry = 3; + retry-delay = null; + url = [ "https://example.com/foo" "https://example.com/bar" ]; + silent = false; + verbose = true; + }; + + expected = [ + "-X" "PUT" + "--data" "{\"id\":0}" + "--retry" "3" + "--url" "https://example.com/foo" + "--url" "https://example.com/bar" + "--verbose" + ]; + }; + + testToGNUCommandLineShell = { + expr = cli.toGNUCommandLineShell {} { + data = builtins.toJSON { id = 0; }; + X = "PUT"; + retry = 3; + retry-delay = null; + url = [ "https://example.com/foo" "https://example.com/bar" ]; + silent = false; + verbose = true; + }; + + expected = "'-X' 'PUT' '--data' '{\"id\":0}' '--retry' '3' '--url' 'https://example.com/foo' '--url' 'https://example.com/bar' '--verbose'"; + }; + + testSanitizeDerivationNameLeadingDots = testSanitizeDerivationName { + name = "..foo"; + expected = "foo"; + }; + + testSanitizeDerivationNameAscii = testSanitizeDerivationName { + name = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~"; + expected = "-+--.-0123456789-=-?-ABCDEFGHIJKLMNOPQRSTUVWXYZ-_-abcdefghijklmnopqrstuvwxyz-"; + }; + + testSanitizeDerivationNameTooLong = testSanitizeDerivationName { + name = "This string is loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"; + expected = "loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong"; + }; + + testSanitizeDerivationNameTooLongWithInvalid = testSanitizeDerivationName { + name = "Hello there aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa &&&&&&&&"; + expected = "there-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-"; + }; + + testSanitizeDerivationNameEmpty = testSanitizeDerivationName { + name = ""; + expected = "unknown"; + }; } diff --git a/lib/tests/modules.sh b/lib/tests/modules.sh index cf344122cf4..6258244457a 100755 --- a/lib/tests/modules.sh +++ b/lib/tests/modules.sh @@ -3,7 +3,10 @@ # This script is used to test that the module system is working as expected. # By default it test the version of nixpkgs which is defined in the NIX_PATH. -cd ./modules +# https://stackoverflow.com/a/246128/6605742 +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" + +cd "$DIR"/modules pass=0 fail=0 @@ -12,7 +15,7 @@ evalConfig() { local attr=$1 shift; local script="import ./default.nix { modules = [ $@ ];}" - nix-instantiate --timeout 1 -E "$script" -A "$attr" --eval-only --show-trace + nix-instantiate --timeout 1 -E "$script" -A "$attr" --eval-only --show-trace --read-write-mode } reportFailure() { @@ -87,36 +90,36 @@ checkConfigOutput "false" "$@" ./define-force-enable.nix checkConfigOutput "false" "$@" ./define-enable-force.nix # Check mkForce with option and submodules. -checkConfigError 'attribute .*foo.* .* not found' config.loaOfSub.foo.enable ./declare-loaOfSub-any-enable.nix -checkConfigOutput 'false' config.loaOfSub.foo.enable ./declare-loaOfSub-any-enable.nix ./define-loaOfSub-foo.nix -set -- config.loaOfSub.foo.enable ./declare-loaOfSub-any-enable.nix ./define-loaOfSub-foo-enable.nix +checkConfigError 'attribute .*foo.* .* not found' config.attrsOfSub.foo.enable ./declare-attrsOfSub-any-enable.nix +checkConfigOutput 'false' config.attrsOfSub.foo.enable ./declare-attrsOfSub-any-enable.nix ./define-attrsOfSub-foo.nix +set -- config.attrsOfSub.foo.enable ./declare-attrsOfSub-any-enable.nix ./define-attrsOfSub-foo-enable.nix checkConfigOutput 'true' "$@" -checkConfigOutput 'false' "$@" ./define-force-loaOfSub-foo-enable.nix -checkConfigOutput 'false' "$@" ./define-loaOfSub-force-foo-enable.nix -checkConfigOutput 'false' "$@" ./define-loaOfSub-foo-force-enable.nix -checkConfigOutput 'false' "$@" ./define-loaOfSub-foo-enable-force.nix +checkConfigOutput 'false' "$@" ./define-force-attrsOfSub-foo-enable.nix +checkConfigOutput 'false' "$@" ./define-attrsOfSub-force-foo-enable.nix +checkConfigOutput 'false' "$@" ./define-attrsOfSub-foo-force-enable.nix +checkConfigOutput 'false' "$@" ./define-attrsOfSub-foo-enable-force.nix # Check overriding effect of mkForce on submodule definitions. -checkConfigError 'attribute .*bar.* .* not found' config.loaOfSub.bar.enable ./declare-loaOfSub-any-enable.nix ./define-loaOfSub-foo.nix -checkConfigOutput 'false' config.loaOfSub.bar.enable ./declare-loaOfSub-any-enable.nix ./define-loaOfSub-foo.nix ./define-loaOfSub-bar.nix -set -- config.loaOfSub.bar.enable ./declare-loaOfSub-any-enable.nix ./define-loaOfSub-foo.nix ./define-loaOfSub-bar-enable.nix +checkConfigError 'attribute .*bar.* .* not found' config.attrsOfSub.bar.enable ./declare-attrsOfSub-any-enable.nix ./define-attrsOfSub-foo.nix +checkConfigOutput 'false' config.attrsOfSub.bar.enable ./declare-attrsOfSub-any-enable.nix ./define-attrsOfSub-foo.nix ./define-attrsOfSub-bar.nix +set -- config.attrsOfSub.bar.enable ./declare-attrsOfSub-any-enable.nix ./define-attrsOfSub-foo.nix ./define-attrsOfSub-bar-enable.nix checkConfigOutput 'true' "$@" -checkConfigError 'attribute .*bar.* .* not found' "$@" ./define-force-loaOfSub-foo-enable.nix -checkConfigError 'attribute .*bar.* .* not found' "$@" ./define-loaOfSub-force-foo-enable.nix -checkConfigOutput 'true' "$@" ./define-loaOfSub-foo-force-enable.nix -checkConfigOutput 'true' "$@" ./define-loaOfSub-foo-enable-force.nix +checkConfigError 'attribute .*bar.* .* not found' "$@" ./define-force-attrsOfSub-foo-enable.nix +checkConfigError 'attribute .*bar.* .* not found' "$@" ./define-attrsOfSub-force-foo-enable.nix +checkConfigOutput 'true' "$@" ./define-attrsOfSub-foo-force-enable.nix +checkConfigOutput 'true' "$@" ./define-attrsOfSub-foo-enable-force.nix # Check mkIf with submodules. -checkConfigError 'attribute .*foo.* .* not found' config.loaOfSub.foo.enable ./declare-enable.nix ./declare-loaOfSub-any-enable.nix -set -- config.loaOfSub.foo.enable ./declare-enable.nix ./declare-loaOfSub-any-enable.nix -checkConfigError 'attribute .*foo.* .* not found' "$@" ./define-if-loaOfSub-foo-enable.nix -checkConfigError 'attribute .*foo.* .* not found' "$@" ./define-loaOfSub-if-foo-enable.nix -checkConfigError 'attribute .*foo.* .* not found' "$@" ./define-loaOfSub-foo-if-enable.nix -checkConfigOutput 'false' "$@" ./define-loaOfSub-foo-enable-if.nix -checkConfigOutput 'true' "$@" ./define-enable.nix ./define-if-loaOfSub-foo-enable.nix -checkConfigOutput 'true' "$@" ./define-enable.nix ./define-loaOfSub-if-foo-enable.nix -checkConfigOutput 'true' "$@" ./define-enable.nix ./define-loaOfSub-foo-if-enable.nix -checkConfigOutput 'true' "$@" ./define-enable.nix ./define-loaOfSub-foo-enable-if.nix +checkConfigError 'attribute .*foo.* .* not found' config.attrsOfSub.foo.enable ./declare-enable.nix ./declare-attrsOfSub-any-enable.nix +set -- config.attrsOfSub.foo.enable ./declare-enable.nix ./declare-attrsOfSub-any-enable.nix +checkConfigError 'attribute .*foo.* .* not found' "$@" ./define-if-attrsOfSub-foo-enable.nix +checkConfigError 'attribute .*foo.* .* not found' "$@" ./define-attrsOfSub-if-foo-enable.nix +checkConfigError 'attribute .*foo.* .* not found' "$@" ./define-attrsOfSub-foo-if-enable.nix +checkConfigOutput 'false' "$@" ./define-attrsOfSub-foo-enable-if.nix +checkConfigOutput 'true' "$@" ./define-enable.nix ./define-if-attrsOfSub-foo-enable.nix +checkConfigOutput 'true' "$@" ./define-enable.nix ./define-attrsOfSub-if-foo-enable.nix +checkConfigOutput 'true' "$@" ./define-enable.nix ./define-attrsOfSub-foo-if-enable.nix +checkConfigOutput 'true' "$@" ./define-enable.nix ./define-attrsOfSub-foo-enable-if.nix # Check disabledModules with config definitions and option declarations. set -- config.enable ./define-enable.nix ./declare-enable.nix @@ -138,7 +141,7 @@ checkConfigError 'while evaluating the module argument .*custom.* in .*import-cu checkConfigError 'infinite recursion encountered' "$@" # Check _module.check. -set -- config.enable ./declare-enable.nix ./define-enable.nix ./define-loaOfSub-foo.nix +set -- config.enable ./declare-enable.nix ./define-enable.nix ./define-attrsOfSub-foo.nix checkConfigError 'The option .* defined in .* does not exist.' "$@" checkConfigOutput "true" "$@" ./define-module-check.nix @@ -152,18 +155,61 @@ checkConfigOutput "12" config.value ./declare-coerced-value-unsound.nix checkConfigError 'The option value .* in .* is not.*8 bit signed integer.* or string convertible to it' config.value ./declare-coerced-value-unsound.nix ./define-value-string-bigint.nix checkConfigError 'unrecognised JSON value' config.value ./declare-coerced-value-unsound.nix ./define-value-string-arbitrary.nix -# Check loaOf with long list. -checkConfigOutput "1 2 3 4 5 6 7 8 9 10" config.result ./loaOf-with-long-list.nix - -# Check loaOf with many merges of lists. -checkConfigOutput "1 2 3 4 5 6 7 8 9 10" config.result ./loaOf-with-many-list-merges.nix - # Check mkAliasOptionModule. checkConfigOutput "true" config.enable ./alias-with-priority.nix checkConfigOutput "true" config.enableAlias ./alias-with-priority.nix checkConfigOutput "false" config.enable ./alias-with-priority-can-override.nix checkConfigOutput "false" config.enableAlias ./alias-with-priority-can-override.nix +# submoduleWith + +## specialArgs should work +checkConfigOutput "foo" config.submodule.foo ./declare-submoduleWith-special.nix + +## shorthandOnlyDefines config behaves as expected +checkConfigOutput "true" config.submodule.config ./declare-submoduleWith-shorthand.nix ./define-submoduleWith-shorthand.nix +checkConfigError 'is not of type `boolean' config.submodule.config ./declare-submoduleWith-shorthand.nix ./define-submoduleWith-noshorthand.nix +checkConfigError 'value is a boolean while a set was expected' config.submodule.config ./declare-submoduleWith-noshorthand.nix ./define-submoduleWith-shorthand.nix +checkConfigOutput "true" config.submodule.config ./declare-submoduleWith-noshorthand.nix ./define-submoduleWith-noshorthand.nix + +## submoduleWith should merge all modules in one swoop +checkConfigOutput "true" config.submodule.inner ./declare-submoduleWith-modules.nix +checkConfigOutput "true" config.submodule.outer ./declare-submoduleWith-modules.nix + +## Paths should be allowed as values and work as expected +checkConfigOutput "true" config.submodule.enable ./declare-submoduleWith-path.nix + +# Check that disabledModules works recursively and correctly +checkConfigOutput "true" config.enable ./disable-recursive/main.nix +checkConfigOutput "true" config.enable ./disable-recursive/{main.nix,disable-foo.nix} +checkConfigOutput "true" config.enable ./disable-recursive/{main.nix,disable-bar.nix} +checkConfigError 'The option .* defined in .* does not exist' config.enable ./disable-recursive/{main.nix,disable-foo.nix,disable-bar.nix} + +# Check that imports can depend on derivations +checkConfigOutput "true" config.enable ./import-from-store.nix + +# Check that configs can be conditional on option existence +checkConfigOutput true config.enable ./define-option-dependently.nix ./declare-enable.nix ./declare-int-positive-value.nix +checkConfigOutput 360 config.value ./define-option-dependently.nix ./declare-enable.nix ./declare-int-positive-value.nix +checkConfigOutput 7 config.value ./define-option-dependently.nix ./declare-int-positive-value.nix +checkConfigOutput true config.set.enable ./define-option-dependently-nested.nix ./declare-enable-nested.nix ./declare-int-positive-value-nested.nix +checkConfigOutput 360 config.set.value ./define-option-dependently-nested.nix ./declare-enable-nested.nix ./declare-int-positive-value-nested.nix +checkConfigOutput 7 config.set.value ./define-option-dependently-nested.nix ./declare-int-positive-value-nested.nix + +# Check attrsOf and lazyAttrsOf. Only lazyAttrsOf should be lazy, and only +# attrsOf should work with conditional definitions +# In addition, lazyAttrsOf should honor an options emptyValue +checkConfigError "is not lazy" config.isLazy ./declare-attrsOf.nix ./attrsOf-lazy-check.nix +checkConfigOutput "true" config.isLazy ./declare-lazyAttrsOf.nix ./attrsOf-lazy-check.nix +checkConfigOutput "true" config.conditionalWorks ./declare-attrsOf.nix ./attrsOf-conditional-check.nix +checkConfigOutput "false" config.conditionalWorks ./declare-lazyAttrsOf.nix ./attrsOf-conditional-check.nix +checkConfigOutput "empty" config.value.foo ./declare-lazyAttrsOf.nix ./attrsOf-conditional-check.nix + + +# Even with multiple assignments, a type error should be thrown if any of them aren't valid +checkConfigError 'The option value .* in .* is not of type .*' \ + config.value ./declare-int-unsigned-value.nix ./define-value-list.nix ./define-value-int-positive.nix + cat <; } + # If it doesn't, this should be {} + # This may be used when a value is required for `mkIf false`. This allows the extra laziness in e.g. `lazyAttrsOf`. + emptyValue ? {} , # Return a flat list of sub-options. Used to generate # documentation. getSubOptions ? prefix: {} @@ -88,7 +93,7 @@ rec { functor ? defaultFunctor name }: { _type = "option-type"; - inherit name check merge getSubOptions getSubModules substSubModules typeMerge functor; + inherit name check merge emptyValue getSubOptions getSubModules substSubModules typeMerge functor; description = if description == null then name else description; }; @@ -225,6 +230,7 @@ rec { description = "attribute set"; check = isAttrs; merge = loc: foldl' (res: def: mergeAttrs res def.value) {}; + emptyValue = { value = {}; }; }; # derivation is a reserved keyword. @@ -242,8 +248,7 @@ rec { path = mkOptionType { name = "path"; - # Hacky: there is no ‘isPath’ primop. - check = x: builtins.substring 0 1 (toString x) == "/"; + check = x: isCoercibleToString x && builtins.substring 0 1 (toString x) == "/"; merge = mergeEqualOption; }; @@ -266,6 +271,7 @@ rec { ) def.value else throw "The option value `${showOption loc}` in `${def.file}` is not a list.") defs))); + emptyValue = { value = {}; }; getSubOptions = prefix: elemType.getSubOptions (prefix ++ ["*"]); getSubModules = elemType.getSubModules; substSubModules = m: listOf (elemType.substSubModules m); @@ -274,7 +280,10 @@ rec { nonEmptyListOf = elemType: let list = addCheck (types.listOf elemType) (l: l != []); - in list // { description = "non-empty " + list.description; }; + in list // { + description = "non-empty " + list.description; + # Note: emptyValue is left as is, because another module may define an element. + }; attrsOf = elemType: mkOptionType rec { name = "attrsOf"; @@ -286,35 +295,127 @@ rec { ) # Push down position info. (map (def: mapAttrs (n: v: { inherit (def) file; value = v; }) def.value) defs))); + emptyValue = { value = {}; }; getSubOptions = prefix: elemType.getSubOptions (prefix ++ [""]); getSubModules = elemType.getSubModules; substSubModules = m: attrsOf (elemType.substSubModules m); functor = (defaultFunctor name) // { wrapped = elemType; }; }; + # A version of attrsOf that's lazy in its values at the expense of + # conditional definitions not working properly. E.g. defining a value with + # `foo.attr = mkIf false 10`, then `foo ? attr == true`, whereas with + # attrsOf it would correctly be `false`. Accessing `foo.attr` would throw an + # error that it's not defined. Use only if conditional definitions don't make sense. + lazyAttrsOf = elemType: mkOptionType rec { + name = "lazyAttrsOf"; + description = "lazy attribute set of ${elemType.description}s"; + check = isAttrs; + merge = loc: defs: + zipAttrsWith (name: defs: + let merged = mergeDefinitions (loc ++ [name]) elemType defs; + # mergedValue will trigger an appropriate error when accessed + in merged.optionalValue.value or elemType.emptyValue.value or merged.mergedValue + ) + # Push down position info. + (map (def: mapAttrs (n: v: { inherit (def) file; value = v; }) def.value) defs); + emptyValue = { value = {}; }; + getSubOptions = prefix: elemType.getSubOptions (prefix ++ [""]); + getSubModules = elemType.getSubModules; + substSubModules = m: lazyAttrsOf (elemType.substSubModules m); + functor = (defaultFunctor name) // { wrapped = elemType; }; + }; + # List or attribute set of ... loaOf = elemType: let - convertAllLists = defs: + convertAllLists = loc: defs: let padWidth = stringLength (toString (length defs)); unnamedPrefix = i: "unnamed-" + fixedWidthNumber padWidth i + "."; in - imap1 (i: convertIfList (unnamedPrefix i)) defs; - - convertIfList = unnamedPrefix: def: + imap1 (i: convertIfList loc (unnamedPrefix i)) defs; + convertIfList = loc: unnamedPrefix: def: if isList def.value then let padWidth = stringLength (toString (length def.value)); unnamed = i: unnamedPrefix + fixedWidthNumber padWidth i; + anyString = placeholder "name"; + nameAttrs = [ + { path = [ "environment" "etc" ]; + name = "target"; + } + { path = [ "containers" anyString "bindMounts" ]; + name = "mountPoint"; + } + { path = [ "programs" "ssh" "knownHosts" ]; + # hostNames is actually a list so we would need to handle it only when singleton + name = "hostNames"; + } + { path = [ "fileSystems" ]; + name = "mountPoint"; + } + { path = [ "boot" "specialFileSystems" ]; + name = "mountPoint"; + } + { path = [ "services" "znapzend" "zetup" ]; + name = "dataset"; + } + { path = [ "services" "znapzend" "zetup" anyString "destinations" ]; + name = "label"; + } + { path = [ "services" "geoclue2" "appConfig" ]; + name = "desktopID"; + } + ]; + matched = let + equals = a: b: b == anyString || a == b; + fallback = { name = "name"; }; + in findFirst ({ path, ... }: all (v: v == true) (zipListsWith equals loc path)) fallback nameAttrs; + nameAttr = matched.name; + nameValueOld = value: + if isList value then + if length value > 0 then + "[ " + concatMapStringsSep " " escapeNixString value + " ]" + else + "[ ]" + else + escapeNixString value; + nameValueNew = value: unnamed: + if isList value then + if length value > 0 then + head value + else + unnamed + else + value; + res = + { inherit (def) file; + value = listToAttrs ( + imap1 (elemIdx: elem: + { name = nameValueNew (elem.${nameAttr} or (unnamed elemIdx)) (unnamed elemIdx); + value = elem; + }) def.value); + }; + option = concatStringsSep "." loc; + sample = take 3 def.value; + more = lib.optionalString (length def.value > 3) "... "; + list = concatMapStrings (x: ''{ ${nameAttr} = ${nameValueOld (x.${nameAttr} or "unnamed")}; ...} '') sample; + set = concatMapStrings (x: ''${nameValueNew (x.${nameAttr} or "unnamed") "unnamed"} = {...}; '') sample; + msg = '' + In file ${def.file} + a list is being assigned to the option config.${option}. + This will soon be an error as type loaOf is deprecated. + See https://github.com/NixOS/nixpkgs/pull/63103 for more information. + Do + ${option} = + { ${set}${more}} + instead of + ${option} = + [ ${list}${more}] + ''; in - { inherit (def) file; - value = listToAttrs ( - imap1 (elemIdx: elem: - { name = elem.name or (unnamed elemIdx); - value = elem; - }) def.value); - } + lib.warn msg res else def; attrOnly = attrsOf elemType; @@ -322,7 +423,8 @@ rec { name = "loaOf"; description = "list or attribute set of ${elemType.description}s"; check = x: isList x || isAttrs x; - merge = loc: defs: attrOnly.merge loc (convertAllLists defs); + merge = loc: defs: attrOnly.merge loc (convertAllLists loc defs); + emptyValue = { value = {}; }; getSubOptions = prefix: elemType.getSubOptions (prefix ++ [""]); getSubModules = elemType.getSubModules; substSubModules = m: loaOf (elemType.substSubModules m); @@ -334,6 +436,7 @@ rec { name = "uniq"; inherit (elemType) description check; merge = mergeOneOption; + emptyValue = elemType.emptyValue; getSubOptions = elemType.getSubOptions; getSubModules = elemType.getSubModules; substSubModules = m: uniq (elemType.substSubModules m); @@ -351,6 +454,7 @@ rec { else if nrNulls != 0 then throw "The option `${showOption loc}` is defined both null and not null, in ${showFiles (getFiles defs)}." else elemType.merge loc defs; + emptyValue = { value = null; }; getSubOptions = elemType.getSubOptions; getSubModules = elemType.getSubModules; substSubModules = m: nullOr (elemType.substSubModules m); @@ -358,25 +462,44 @@ rec { }; # A submodule (like typed attribute set). See NixOS manual. - submodule = opts: + submodule = modules: submoduleWith { + shorthandOnlyDefinesConfig = true; + modules = toList modules; + }; + + submoduleWith = + { modules + , specialArgs ? {} + , shorthandOnlyDefinesConfig ? false + }@attrs: let - opts' = toList opts; inherit (lib.modules) evalModules; + + coerce = unify: value: if isFunction value + then setFunctionArgs (args: unify (value args)) (functionArgs value) + else unify (if shorthandOnlyDefinesConfig then { config = value; } else value); + + allModules = defs: modules ++ imap1 (n: { value, file }: + if isAttrs value || isFunction value then + # Annotate the value with the location of its definition for better error messages + coerce (lib.modules.unifyModuleSyntax file "${toString file}-${toString n}") value + else value + ) defs; + in mkOptionType rec { name = "submodule"; - check = x: isAttrs x || isFunction x; + check = x: isAttrs x || isFunction x || path.check x; merge = loc: defs: - let - coerce = def: if isFunction def then def else { config = def; }; - modules = opts' ++ map (def: { _file = def.file; imports = [(coerce def.value)]; }) defs; - in (evalModules { - inherit modules; + (evalModules { + modules = allModules defs; + inherit specialArgs; args.name = last loc; prefix = loc; }).config; + emptyValue = { value = {}; }; getSubOptions = prefix: (evalModules - { modules = opts'; inherit prefix; + { inherit modules prefix specialArgs; # This is a work-around due to the fact that some sub-modules, # such as the one included in an attribute set, expects a "args" # attribute to be given to the sub-module. As the option @@ -394,13 +517,29 @@ rec { # It shouldn't cause an issue since this is cosmetic for the manual. args.name = "‹name›"; }).options; - getSubModules = opts'; - substSubModules = m: submodule m; - functor = (defaultFunctor name) // { - # Merging of submodules is done as part of mergeOptionDecls, as we have to annotate - # each submodule with its location. - payload = []; - binOp = lhs: rhs: []; + getSubModules = modules; + substSubModules = m: submoduleWith (attrs // { + modules = m; + }); + functor = defaultFunctor name // { + type = types.submoduleWith; + payload = { + modules = modules; + specialArgs = specialArgs; + shorthandOnlyDefinesConfig = shorthandOnlyDefinesConfig; + }; + binOp = lhs: rhs: { + modules = lhs.modules ++ rhs.modules; + specialArgs = + let intersecting = builtins.intersectAttrs lhs.specialArgs rhs.specialArgs; + in if intersecting == {} + then lhs.specialArgs // rhs.specialArgs + else throw "A submoduleWith option is declared multiple times with the same specialArgs \"${toString (attrNames intersecting)}\""; + shorthandOnlyDefinesConfig = + if lhs.shorthandOnlyDefinesConfig == rhs.shorthandOnlyDefinesConfig + then lhs.shorthandOnlyDefinesConfig + else throw "A submoduleWith option is declared multiple times with conflicting shorthandOnlyDefinesConfig values"; + }; }; }; @@ -451,7 +590,7 @@ rec { tail' = tail ts; in foldl' either head' tail'; - # Either value of type `finalType` or `coercedType`, the latter is + # Either value of type `coercedType` or `finalType`, the former is # converted to `finalType` using `coerceFunc`. coercedTo = coercedType: coerceFunc: finalType: assert lib.assertMsg (coercedType.getSubModules == null) @@ -460,13 +599,14 @@ rec { mkOptionType rec { name = "coercedTo"; description = "${finalType.description} or ${coercedType.description} convertible to it"; - check = x: finalType.check x || (coercedType.check x && finalType.check (coerceFunc x)); + check = x: (coercedType.check x && finalType.check (coerceFunc x)) || finalType.check x; merge = loc: defs: let coerceVal = val: - if finalType.check val then val - else coerceFunc val; + if coercedType.check val then coerceFunc val + else val; in finalType.merge loc (map (def: def // { value = coerceVal def.value; }) defs); + emptyValue = finalType.emptyValue; getSubOptions = finalType.getSubOptions; getSubModules = finalType.getSubModules; substSubModules = m: coercedTo coercedType coerceFunc (finalType.substSubModules m); diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index ed8c612ff96..dcf96307c3b 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -1,5 +1,5 @@ /* List of NixOS maintainers. - + ```nix handle = { # Required name = "Your name"; @@ -13,39 +13,34 @@ fingerprint = "AAAA BBBB CCCC DDDD EEEE FFFF 0000 1111 2222 3333"; }]; }; + ``` - where + where - - `handle` is the handle you are going to use in nixpkgs expressions, - - `name` is your, preferably real, name, - - `email` is your maintainer email address, and - - `github` is your GitHub handle (as it appears in the URL of your profile page, `https://github.com/`), - - `githubId` is your GitHub user ID, which can be found at `https://api.github.com/users/`, - - `keys` is a list of your PGP/GPG key IDs and fingerprints. + - `handle` is the handle you are going to use in nixpkgs expressions, + - `name` is your, preferably real, name, + - `email` is your maintainer email address, and + - `github` is your GitHub handle (as it appears in the URL of your profile page, `https://github.com/`), + - `githubId` is your GitHub user ID, which can be found at `https://api.github.com/users/`, + - `keys` is a list of your PGP/GPG key IDs and fingerprints. - `handle == github` is strongly preferred whenever `github` is an acceptable attribute name and is short and convenient. + `handle == github` is strongly preferred whenever `github` is an acceptable attribute name and is short and convenient. - Add PGP/GPG keys only if you actually use them to sign commits and/or mail. + Add PGP/GPG keys only if you actually use them to sign commits and/or mail. - To get the required PGP/GPG values for a key run - ```shell - gpg --keyid-format 0xlong --fingerprint | head -n 2 - ``` + To get the required PGP/GPG values for a key run + ```shell + gpg --keyid-format 0xlong --fingerprint | head -n 2 + ``` - !!! Note that PGP/GPG values stored here are for informational purposes only, don't use this file as a source of truth. + !!! Note that PGP/GPG values stored here are for informational purposes only, don't use this file as a source of truth. - More fields may be added in the future. + More fields may be added in the future. - Please keep the list alphabetically sorted. - See `./scripts/check-maintainer-github-handles.sh` for an example on how to work with this data. - */ + Please keep the list alphabetically sorted. + See `./scripts/check-maintainer-github-handles.sh` for an example on how to work with this data. +*/ { - "00-matt" = { - name = "Matt Smith"; - email = "matt@offtopica.uk"; - github = "00-matt"; - githubId = 48835712; - }; "0x4A6F" = { email = "0x4A6F@shackspace.de"; name = "Joachim Ernst"; @@ -105,6 +100,7 @@ abbradar = { email = "ab@fmap.me"; github = "abbradar"; + githubId = 1174810; name = "Nikolay Amiantov"; }; abhi18av = { @@ -140,6 +136,7 @@ acairncross = { email = "acairncross@gmail.com"; github = "acairncross"; + githubId = 1517066; name = "Aiken Cairncross"; }; acowley = { @@ -151,6 +148,7 @@ adamt = { email = "mail@adamtulinius.dk"; github = "adamtulinius"; + githubId = 749381; name = "Adam Tulinius"; }; adelbertc = { @@ -234,6 +232,7 @@ aforemny = { email = "alexanderforemny@googlemail.com"; github = "aforemny"; + githubId = 610962; name = "Alexander Foremny"; }; afranchuk = { @@ -281,6 +280,7 @@ ak = { email = "ak@formalprivacy.com"; github = "alexanderkjeldaas"; + githubId = 339369; name = "Alexander Kjeldaas"; }; akavel = { @@ -307,6 +307,12 @@ githubId = 786394; name = "Alexander Krupenkin "; }; + albakham = { + email = "dev@geber.ga"; + github = "albakham"; + githubId = 43479487; + name = "Titouan Biteau"; + }; alexarice = { email = "alexrice999@hotmail.co.uk"; github = "alexarice"; @@ -316,6 +322,7 @@ alexbakker = { email = "ab@alexbakker.me"; github = "alexbakker"; + githubId = 2387841; name = "Alexander Bakker"; }; alexchapman = { @@ -362,9 +369,26 @@ githubId = 5892756; name = "Alec Snyder"; }; + AluisioASG = { + name = "Aluísio Augusto Silva Gonçalves"; + email = "aluisio@aasg.name"; + github = "AluisioASG"; + githubId = 1904165; + keys = [{ + longkeyid = "rsa4096/0x9FAA63E097506D9D"; + fingerprint = "7FDB 17B3 C29B 5BA6 E5A9 8BB2 9FAA 63E0 9750 6D9D"; + }]; + }; + almac = { + email = "alma.cemerlic@gmail.com"; + github = "a1mac"; + githubId = 60479013; + name = "Alma Cemerlic"; + }; alunduil = { email = "alunduil@gmail.com"; github = "alunduil"; + githubId = 169249; name = "Alex Brandt"; }; alva = { @@ -386,6 +410,7 @@ ambrop72 = { email = "ambrop7@gmail.com"; github = "ambrop72"; + githubId = 2626481; name = "Ambroz Bizjak"; }; amiddelk = { @@ -400,10 +425,15 @@ githubId = 20530052; name = "Andrew Miloradovsky"; }; - aminb = { - email = "amin@aminb.org"; - github = "aminb"; + notbandali = { name = "Amin Bandali"; + email = "bandali@gnu.org"; + github = "notbandali"; + githubId = 1254858; + keys = [{ + longkeyid = "rsa4096/0xA21A020248816103"; + fingerprint = "BE62 7373 8E61 6D6D 1B3A 08E8 A21A 0202 4881 6103"; + }]; }; aminechikhaoui = { email = "amine.chikhaoui91@gmail.com"; @@ -450,11 +480,13 @@ andreabedini = { email = "andrea@kzn.io"; github = "andreabedini"; + githubId = 69135; name = "Andrea Bedini"; }; andres = { email = "ksnixos@andres-loeh.de"; github = "kosmikus"; + githubId = 293191; name = "Andres Loeh"; }; andrestylianos = { @@ -484,6 +516,7 @@ andsild = { email = "andsild@gmail.com"; github = "andsild"; + githubId = 3808928; name = "Anders Sildnes"; }; aneeshusa = { @@ -504,12 +537,24 @@ githubId = 750786; name = "Justin Wood"; }; + anmonteiro = { + email = "anmonteiro@gmail.com"; + github = "anmonteiro"; + githubId = 661909; + name = "Antonio Nuno Monteiro"; + }; anpryl = { email = "anpryl@gmail.com"; github = "anpryl"; githubId = 5327697; name = "Anatolii Prylutskyi"; }; + antoinerg = { + email = "roygobeil.antoine@gmail.com"; + github = "antoinerg"; + githubId = 301546; + name = "Antoine Roy-Gobeil"; + }; anton-dessiatov = { email = "anton.dessiatov@gmail.com"; github = "anton-dessiatov"; @@ -525,6 +570,7 @@ antono = { email = "self@antono.info"; github = "antono"; + githubId = 7622; name = "Antono Vasiljev"; }; antonxy = { @@ -587,6 +633,12 @@ githubId = 1296771; name = "Anders Riutta"; }; + arnoldfarkas = { + email = "arnold.farkas@gmail.com"; + github = "arnoldfarkas"; + githubId = 59696216; + name = "Arnold Farkas"; + }; arobyn = { email = "shados@shados.net"; github = "shados"; @@ -615,6 +667,12 @@ githubId = 10285250; name = "Artur E. Ruuge"; }; + asbachb = { + email = "asbachb-nixpkgs-5c2a@impl.it"; + github = "asbachb"; + githubId = 1482768; + name = "Benjamin Asbach"; + }; ashalkhakov = { email = "artyom.shalkhakov@gmail.com"; github = "ashalkhakov"; @@ -669,12 +727,24 @@ githubId = 192147; name = "aszlig"; }; + atemu = { + name = "Atemu"; + email = "atemu.main+nixpkgs@gmail.com"; + github = "Atemu"; + githubId = 18599032; + }; athas = { email = "athas@sigkill.dk"; github = "athas"; githubId = 55833; name = "Troels Henriksen"; }; + atkinschang = { + email = "atkinschang+nixpkgs@gmail.com"; + github = "AtkinsChang"; + githubId = 5193600; + name = "Atkins Chang"; + }; atnnn = { email = "etienne@atnnn.com"; github = "atnnn"; @@ -683,7 +753,8 @@ }; auntie = { email = "auntieNeo@gmail.com"; - github = "auntie"; + github = "auntieNeo"; + githubId = 574938; name = "Jonathan Glines"; }; avaq = { @@ -701,6 +772,7 @@ averelld = { email = "averell+nixos@rxd4.com"; github = "averelld"; + githubId = 687218; name = "averelld"; }; avitex = { @@ -756,11 +828,13 @@ backuitist = { email = "biethb@gmail.com"; github = "backuitist"; + githubId = 1017537; name = "Bruno Bieth"; }; badi = { email = "abdulwahidc@gmail.com"; github = "badi"; + githubId = 35324; name = "Badi' Abdul-Wahid"; }; balajisivaraman = { @@ -884,6 +958,7 @@ berdario = { email = "berdario@gmail.com"; github = "berdario"; + githubId = 752835; name = "Dario Bertini"; }; bergey = { @@ -922,6 +997,12 @@ githubId = 2071583; name = "Benjamin Hipple"; }; + bhougland = { + email = "benjamin.hougland@gmail.com"; + github = "bhougland18"; + githubId = 28444296; + name = "Benjamin Hougland"; + }; binarin = { email = "binarin@binarin.ru"; github = "binarin"; @@ -944,6 +1025,12 @@ githubId = 5718007; name = "Bastian Köcher"; }; + blanky0230 = { + email = "blanky0230@gmail.com"; + github = "blanky0230"; + githubId = 5700358; + name = "Thomas Blank"; + }; blitz = { email = "js@alien8.de"; github = "blitz"; @@ -953,6 +1040,7 @@ bluescreen303 = { email = "mathijs@bluescreen303.nl"; github = "bluescreen303"; + githubId = 16330; name = "Mathijs Kwik"; }; bobakker = { @@ -982,6 +1070,7 @@ boothead = { email = "ben@perurbis.com"; github = "boothead"; + githubId = 87764; name = "Ben Ford"; }; borisbabic = { @@ -1044,6 +1133,18 @@ githubId = 7716744; name = "Berno Strik"; }; + brettlyons = { + email = "blyons@fastmail.com"; + github = "brettlyons"; + githubId = 3043718; + name = "Brett Lyons"; + }; + btlvr = { + email = "btlvr@protonmail.com"; + github = "btlvr"; + githubId = 32319131; + name = "Brett L"; + }; buffet = { email = "niclas@countingsort.com"; github = "buffet"; @@ -1074,6 +1175,21 @@ githubId = 510553; name = "Jos van Bakel"; }; + cab404 = { + email = "cab404@mailbox.org"; + github = "cab404"; + githubId = 6453661; + name = "Vladimir Serov"; + keys = [ + # compare with https://keybase.io/cab404 + { longkeyid = "1BB96810926F4E715DEF567E6BA7C26C3FDF7BB3"; + fingerprint = "rsa3072/0xCBDECF658C38079E"; + } + { longkeyid = "1EBC648C64D6045463013B3EB7EFFC271D55DB8A"; + fingerprint = "ed25519/0xB7EFFC271D55DB8A"; + } + ]; + }; calbrecht = { email = "christian.albrecht@mayflower.de"; github = "calbrecht"; @@ -1182,6 +1298,20 @@ githubId = 5949913; name = "Carlos Fernandez Sanz"; }; + cge = { + email = "cevans@evanslabs.org"; + github = "cgevans"; + githubId = 2054509; + name = "Constantine Evans"; + keys = [ + { longkeyid = "rsa4096/0xB67DB1D20A93A9F9"; + fingerprint = "32B1 6EE7 DBA5 16DE 526E 4C5A B67D B1D2 0A93 A9F9"; + } + { longkeyid = "rsa4096/0x1A1D58B86AE2AABD"; + fingerprint = "669C 1D24 5A87 DB34 6BE4 3216 1A1D 58B8 6AE2 AABD"; + } + ]; + }; chaduffy = { email = "charles@dyfis.net"; github = "charles-dyfis-net"; @@ -1300,6 +1430,12 @@ githubId = 25088352; name = "Christian Kögler"; }; + clkamp = { + email = "c@lkamp.de"; + github = "clkamp"; + githubId = 46303707; + name = "Christian Lütke-Stetzkamp"; + }; kampka = { email = "christian@kampka.net"; github = "kampka"; @@ -1355,6 +1491,7 @@ coconnor = { email = "coreyoconnor@gmail.com"; github = "coreyoconnor"; + githubId = 34317; name = "Corey O'Connor"; }; codsl = { @@ -1387,6 +1524,16 @@ githubId = 5684605; name = "Cole Scott"; }; + cole-h = { + name = "Cole Helbling"; + email = "cole.e.helbling@outlook.com"; + github = "cole-h"; + githubId = 28582702; + keys = [{ + longkeyid = "rsa4096/0xB37E0F2371016A4C"; + fingerprint = "68B8 0D57 B2E5 4AC3 EC1F 49B0 B37E 0F23 7101 6A4C"; + }]; + }; copumpkin = { email = "pumpkingod@gmail.com"; github = "copumpkin"; @@ -1432,12 +1579,13 @@ craigem = { email = "craige@mcwhirter.io"; github = "craigem"; - githubId = "6470493"; + githubId = 6470493; name = "Craige McWhirter"; }; cransom = { email = "cransom@hubns.net"; github = "cransom"; + githubId = 1957293; name = "Casey Ransom"; }; CrazedProgrammer = { @@ -1470,6 +1618,12 @@ githubId = 143982; name = "Charles Strahan"; }; + cswank = { + email = "craigswank@gmail.com"; + github = "cswank"; + githubId = 490965; + name = "Craig Swank"; + }; cwoac = { email = "oliver@codersoffortune.net"; github = "cwoac"; @@ -1478,14 +1632,16 @@ }; cypherpunk2140 = { email = "stefan.mihaila@pm.me"; - github = "cypherpunk2140"; + github = "stefan-mihaila"; githubId = 2217136; name = "Ștefan D. Mihăilă"; keys = [ - { longkeyid = "rsa4096/6E68A39BF16A3ECB"; + { + longkeyid = "rsa4096/6E68A39BF16A3ECB"; fingerprint = "CBC9 C7CC 51F0 4A61 3901 C723 6E68 A39B F16A 3ECB"; } - { longkeyid = "rsa4096/6220AD7846220A52"; + { + longkeyid = "rsa4096/6220AD7846220A52"; fingerprint = "7EAB 1447 5BBA 7DDE 7092 7276 6220 AD78 4622 0A52"; } ]; @@ -1589,6 +1745,7 @@ davidrusu = { email = "davidrusu.me@gmail.com"; github = "davidrusu"; + githubId = 1832378; name = "David Rusu"; }; davidtwco = { @@ -1682,6 +1839,7 @@ DerGuteMoritz = { email = "moritz@twoticketsplease.de"; github = "DerGuteMoritz"; + githubId = 19733; name = "Moritz Heidkamp"; }; dermetfan = { @@ -1699,10 +1857,11 @@ desiderius = { email = "didier@devroye.name"; github = "desiderius"; + githubId = 1311761; name = "Didier J. Devroye"; }; devhell = { - email = "\"^\"@regexmail.net"; + email = ''"^"@regexmail.net''; github = "devhell"; githubId = 896182; name = "devhell"; @@ -1728,6 +1887,7 @@ dgonyeo = { email = "derek@gonyeo.com"; github = "dgonyeo"; + githubId = 2439413; name = "Derek Gonyeo"; }; dhkl = { @@ -1742,6 +1902,12 @@ githubId = 11946442; name = "Dipin Hora"; }; + dirkx = { + email = "dirkx@webweaving.org"; + github = "dirkx"; + githubId = 392583; + name = "Dirk-Willem van Gulik"; + }; disassembler = { email = "disasm@gmail.com"; github = "disassembler"; @@ -1820,6 +1986,12 @@ githubId = 126339; name = "Domen Kozar"; }; + dominikh = { + email = "dominik@honnef.co"; + github = "dominikh"; + githubId = 39825; + name = "Dominik Honnef"; + }; doronbehar = { email = "me@doronbehar.com"; github = "doronbehar"; @@ -1835,6 +2007,7 @@ doublec = { email = "chris.double@double.co.nz"; github = "doublec"; + githubId = 16599; name = "Chris Double"; }; dpaetzel = { @@ -1859,6 +2032,12 @@ email = "burkett.andrew@gmail.com"; name = "Andrew Burkett"; }; + drewrisinger = { + email = "drisinger+nixpkgs@gmail.com"; + github = "drewrisinger"; + githubId = 10198051; + name = "Drew Risinger"; + }; dsferruzza = { email = "david.sferruzza@gmail.com"; github = "dsferruzza"; @@ -1885,9 +2064,16 @@ fingerprint = "5DD7 C6F6 0630 F08E DAE7 4711 1525 585D 1B43 C62A"; }]; }; + dwarfmaster = { + email = "nixpkgs@dwarfmaster.net"; + github = "dwarfmaster"; + githubId = 2025623; + name = "Luc Chabassier"; + }; dxf = { email = "dingxiangfei2009@gmail.com"; github = "dingxiangfei2009"; + githubId = 6884440; name = "Ding Xiang Fei"; }; dysinger = { @@ -1953,6 +2139,7 @@ edanaher = { email = "nixos@edanaher.net"; github = "edanaher"; + githubId = 984691; name = "Evan Danaher"; }; edef = { @@ -1961,6 +2148,12 @@ githubId = 50854; name = "edef"; }; + emantor = { + email = "rouven+nixos@czerwinskis.de"; + github = "emantor"; + githubId = 934284; + name = "Rouven Czerwinski"; + }; embr = { email = "hi@liclac.eu"; github = "liclac"; @@ -2004,7 +2197,7 @@ name = "Edward Tjörnhammar"; }; eelco = { - email = "eelco.dolstra@logicblox.com"; + email = "edolstra+nixpkgs@gmail.com"; github = "edolstra"; githubId = 1148549; name = "Eelco Dolstra"; @@ -2017,7 +2210,7 @@ }; ehmry = { email = "ehmry@posteo.net"; - github= "ehmry"; + github = "ehmry"; githubId = 537775; name = "Emery Hemingway"; }; @@ -2096,6 +2289,7 @@ emmanuelrosa = { email = "emmanuel_rosa@aol.com"; github = "emmanuelrosa"; + githubId = 13485450; name = "Emmanuel Rosa"; }; endgame = { @@ -2105,15 +2299,15 @@ name = "Jack Kelly"; }; enorris = { - name = "Eric Norris"; - email = "erictnorris@gmail.com"; - github = "ericnorris"; - githubId = 1906605; + name = "Eric Norris"; + email = "erictnorris@gmail.com"; + github = "ericnorris"; + githubId = 1906605; }; Enteee = { email = "nix@duckpond.ch"; github = "Enteee"; - githubid = 5493775; + githubId = 5493775; name = "Ente"; }; enzime = { @@ -2122,6 +2316,12 @@ githubId = 10492681; name = "Michael Hoang"; }; + eonpatapon = { + email = "eon@patapon.info"; + github = "eonpatapon"; + githubId = 418227; + name = "Jean-Philippe Braun"; + }; eperuffo = { email = "info@emanueleperuffo.com"; github = "emanueleperuffo"; @@ -2159,11 +2359,13 @@ ericdallo = { email = "ercdll1337@gmail.com"; github = "ericdallo"; + githubId = 7820865; name = "Eric Dallo"; }; ericsagnes = { email = "eric.sagnes@gmail.com"; github = "ericsagnes"; + githubId = 367880; name = "Eric Sagnes"; }; ericson2314 = { @@ -2203,6 +2405,7 @@ ertes = { email = "esz@posteo.de"; github = "ertes"; + githubId = 1855930; name = "Ertugrul Söylemez"; }; esclear = { @@ -2231,6 +2434,12 @@ fingerprint = "67FE 98F2 8C44 CF22 1828 E12F D57E FA62 5C9A 925F"; }]; }; + euank = { + email = "euank-nixpkg@euank.com"; + github = "euank"; + githubId = 2147649; + name = "Euan Kemp"; + }; evanjs = { email = "evanjsx@gmail.com"; github = "evanjs"; @@ -2249,6 +2458,12 @@ githubId = 2512008; name = "Even Brenden"; }; + evils = { + email = "evils.devils@protonmail.com"; + github = "evils-devils"; + githubId = 30512529; + name = "Evils"; + }; exfalso = { email = "0slemi0@gmail.com"; github = "exfalso"; @@ -2300,6 +2515,7 @@ fare = { email = "fahree@gmail.com"; github = "fare"; + githubId = 8073; name = "Francois-Rene Rideau"; }; farlion = { @@ -2311,6 +2527,7 @@ fdns = { email = "fdns02@gmail.com"; github = "fdns"; + githubId = 541748; name = "Felipe Espinoza"; }; ffinkdevs = { @@ -2341,10 +2558,16 @@ githubId = 415760; name = "Jonas Höglund"; }; + fishi0x01 = { + email = "fishi0x01@gmail.com"; + github = "fishi0x01"; + githubId = 10799507; + name = "Karl Fischer"; + }; Flakebi = { email = "flakebi@t-online.de"; github = "Flakebi"; - githubId = "Flakebi"; + githubId = 6499211; name = "Sebastian Neubauer"; keys = [{ longkeyid = "rsa4096/0xECC755EE583C1672"; @@ -2387,6 +2610,12 @@ githubId = 844574; name = "Daniel Austin"; }; + flyfloh = { + email = "nix@halbmastwurf.de"; + github = "flyfloh"; + githubId = 74379; + name = "Florian Pester"; + }; fmthoma = { email = "f.m.thoma@googlemail.com"; github = "fmthoma"; @@ -2425,6 +2654,7 @@ fragamus = { email = "innovative.engineer@gmail.com"; github = "fragamus"; + githubId = 119691; name = "Michael Gough"; }; @@ -2443,11 +2673,13 @@ freezeboy = { email = "freezeboy@users.noreply.github.com"; github = "freezeboy"; + githubId = 13279982; name = "freezeboy"; }; Fresheyeball = { email = "fresheyeball@gmail.com"; - github = "fresheyeball"; + github = "Fresheyeball"; + githubId = 609279; name = "Isaac Shapira"; }; fridh = { @@ -2468,6 +2700,12 @@ githubId = 1943632; name = "fro_ozen"; }; + Frostman = { + email = "me@slukjanov.name"; + github = "Frostman"; + githubId = 134872; + name = "Sergei Lukianov"; + }; frontsideair = { email = "photonia@gmail.com"; github = "frontsideair"; @@ -2478,7 +2716,7 @@ email = "ftrvxmtrx@gmail.com"; github = "ftrvxmtrx"; githubId = 248148; - name = "Siarhei Zirukin"; + name = "Sigrid Solveig Haflínudóttir"; }; fuerbringer = { email = "severin@fuerbringer.info"; @@ -2545,6 +2783,7 @@ garbas = { email = "rok@garbas.si"; github = "garbas"; + githubId = 20208; name = "Rok Garbas"; }; garrison = { @@ -2556,6 +2795,7 @@ gavin = { email = "gavin.rogers@holo.host"; github = "gavinrogers"; + githubId = 2430469; name = "Gavin Rogers"; }; gazally = { @@ -2600,6 +2840,12 @@ githubId = 3217744; name = "Peter Ferenczy"; }; + gila = { + email = "jeffry.molanus@gmail.com"; + github = "gila"; + githubId = 15957973; + name = "Jeffry Molanus"; + }; gilligan = { email = "tobias.pflug@gmail.com"; github = "gilligan"; @@ -2642,6 +2888,12 @@ githubId = 12064730; name = "Alex Ivanov"; }; + gnxlxnxx = { + email = "gnxlxnxx@web.de"; + github = "gnxlxnxx"; + githubId = 25820499; + name = "Roman Kretschmer"; + }; goibhniu = { email = "cillian.deroiste@gmail.com"; github = "cillianderoiste"; @@ -2673,9 +2925,14 @@ name = "Graham Christensen"; }; grburst = { - email = "grburst@openmailbox.org"; - github = "grburst"; - name = "Julius Elias"; + email = "GRBurst@protonmail.com"; + github = "GRBurst"; + githubId = 4647221; + name = "GRBurst"; + keys = [{ + longkeyid = "rsa4096/0x797F623868CD00C2"; + fingerprint = "7FC7 98AB 390E 1646 ED4D 8F1F 797F 6238 68CD 00C2"; + }]; }; greydot = { email = "lanablack@amok.cc"; @@ -2686,6 +2943,7 @@ gridaphobe = { email = "eric@seidel.io"; github = "gridaphobe"; + githubId = 201997; name = "Eric Seidel"; }; guibert = { @@ -2741,7 +2999,7 @@ github = "hansjoergschurr"; githubId = 9850776; name = "Hans-Jörg Schurr"; - }; + }; HaoZeke = { email = "r95g10@gmail.com"; github = "haozeke"; @@ -2815,6 +3073,7 @@ name = "Guanpeng Xu"; }; hexa = { + email = "hexa@darmstadt.ccc.de"; github = "mweinelt"; githubId = 131599; name = "Martin Weinelt"; @@ -2833,6 +3092,7 @@ email = "me@hkjn.me"; name = "Henrik Jonsson"; github = "hkjn"; + githubId = 287215; keys = [{ longkeyid = "rsa4096/0x03EFBF839A5FDC15"; fingerprint = "D618 7A03 A40A 3D56 62F5 4B46 03EF BF83 9A5F DC15"; @@ -2880,6 +3140,12 @@ githubId = 12491746; name = "Masato Yonekawa"; }; + i077 = { + email = "nixpkgs@imranhossa.in"; + github = "i077"; + githubId = 2789926; + name = "Imran Hossain"; + }; iand675 = { email = "ian@iankduncan.com"; github = "iand675"; @@ -2940,6 +3206,18 @@ githubId = 4401220; name = "Michael Eden"; }; + illiusdope = { + email = "mat@marini.ca"; + github = "illiusdope"; + githubId = 61913481; + name = "Mat Marini"; + }; + ilya-fedin = { + email = "fedin-ilja2010@ya.ru"; + github = "ilya-fedin"; + githubId = 17829319; + name = "Ilya Fedin"; + }; ilya-kolpakov = { email = "ilya.kolpakov@gmail.com"; github = "ilya-kolpakov"; @@ -2967,7 +3245,12 @@ infinisil = { email = "contact@infinisil.com"; github = "infinisil"; + githubId = 20525370; name = "Silvan Mosberger"; + keys = [{ + longkeyid = "rsa4096/0x422E9EDAE0157170"; + fingerprint = "6C2B 55D4 4E04 8266 6B7D DA1A 422E 9EDA E015 7170"; + }]; }; ingenieroariel = { email = "ariel@nunez.co"; @@ -2982,6 +3265,7 @@ name = "Michele Catalano"; }; isgy = { + name = "isgy"; email = "isgy@teiyg.com"; github = "isgy"; githubId = 13622947; @@ -2996,6 +3280,12 @@ githubId = 4458; name = "Ivan Kozik"; }; + ivan-timokhin = { + email = "nixpkgs@ivan.timokhin.name"; + name = "Ivan Timokhin"; + github = "ivan-timokhin"; + githubId = 9802104; + }; ivan-tkatchev = { email = "tkatchev@gmail.com"; name = "Ivan Tkatchev"; @@ -3010,6 +3300,12 @@ fingerprint = "7311 2700 AB4F 4CDF C68C F6A5 79C3 C47D C652 EA54"; }]; }; + ivar = { + email = "ivar.scholten@protonmail.com"; + github = "IvarWithoutBones"; + githubId = 41924494; + name = "Ivar"; + }; ivegotasthma = { email = "ivegotasthma@protonmail.com"; github = "ivegotasthma"; @@ -3041,11 +3337,13 @@ jacg = { name = "Jacek Generowicz"; email = "jacg@my-post-office.net"; - githubId = "2570854"; + github = "jacg"; + githubId = 2570854; }; jasoncarr = { email = "jcarr250@gmail.com"; github = "jasoncarr0"; + githubId = 6874204; name = "Jason Carr"; }; j-keck = { @@ -3057,6 +3355,7 @@ j03 = { email = "github@johannesloetzsch.de"; github = "johannesloetzsch"; + githubId = 175537; name = "Johannes Lötzsch"; }; jagajaga = { @@ -3144,6 +3443,7 @@ jdanek = { email = "jdanek@redhat.com"; github = "jdanekrh"; + githubId = 17877663; keys = [{ longkeyid = "ed25519/0x69275CADF15D872E"; fingerprint = "D4A6 F051 AD58 2E7C BCED 5439 6927 5CAD F15D 872E"; @@ -3162,6 +3462,12 @@ githubId = 1198065; name = "Jeffrey David Johnson"; }; + jefflabonte = { + email = "grimsleepless@protonmail.com"; + github = "jefflabonte"; + githubId = 9425955; + name = "Jean-François Labonté"; + }; jensbin = { email = "jensbin+git@pm.me"; github = "jensbin"; @@ -3176,7 +3482,8 @@ }; jeschli = { email = "jeschli@gmail.com"; - github = "jeschli"; + github = "Jeschli"; + githubId = 10786794; name = "Markus Hihn"; }; jethro = { @@ -3188,6 +3495,7 @@ jfb = { email = "james@yamtime.com"; github = "tftio"; + githubId = 143075; name = "James Felix Black"; }; jflanglois = { @@ -3247,6 +3555,7 @@ jitwit = { email = "jrn@bluefarm.ca"; github = "jitwit"; + githubId = 51518420; name = "jitwit"; }; jlesquembre = { @@ -3288,6 +3597,7 @@ joamaki = { email = "joamaki@gmail.com"; github = "joamaki"; + githubId = 1102396; name = "Jussi Maki"; }; joelburget = { @@ -3310,10 +3620,12 @@ email = "admin@cryto.net"; name = "Sven Slootweg"; github = "joepie91"; + githubId = 1663259; }; joesalisbury = { email = "salisbury.joseph@gmail.com"; github = "JosephSalisbury"; + githubId = 297653; name = "Joe Salisbury"; }; johanot = { @@ -3382,6 +3694,7 @@ jonathanmarler = { email = "johnnymarler@gmail.com"; github = "marler8997"; + githubId = 304904; name = "Jonathan Marler"; }; jonathanreeve = { @@ -3414,6 +3727,18 @@ github = "jorsn"; githubId = 4646725; }; + joshuafern = { + name = "Joshua Fern"; + email = "joshuafern@protonmail.com"; + github = "JoshuaFern"; + githubId = 4300747; + }; + jpas = { + name = "Jarrod Pas"; + email = "jarrod@jarrodpas.com"; + github = "jpas"; + githubId = 5689724; + }; jpdoyle = { email = "joethedoyle@gmail.com"; github = "jpdoyle"; @@ -3444,6 +3769,16 @@ githubId = 4611077; name = "Raymond Gauthier"; }; + jtcoolen = { + email = "jtcoolen@pm.me"; + name = "Julien Coolen"; + github = "jtcoolen"; + githubId = 54635632; + keys = [{ + longkeyid = "rsa4096/0x19642151C218F6F5"; + fingerprint = "4C68 56EE DFDA 20FB 77E8 9169 1964 2151 C218 F6F5"; + }]; + }; jtobin = { email = "jared@jtobin.io"; github = "jtobin"; @@ -3465,6 +3800,7 @@ juliendehos = { email = "dehos@lisic.univ-littoral.fr"; github = "juliendehos"; + githubId = 11947756; name = "Julien Dehos"; }; jumper149 = { @@ -3498,6 +3834,7 @@ jyp = { email = "jeanphilippe.bernardy@gmail.com"; github = "jyp"; + githubId = 27747; name = "Jean-Philippe Bernardy"; }; jzellner = { @@ -3506,6 +3843,16 @@ githubId = 66669; name = "Jeff Zellner"; }; + kaction = { + name = "Dmitry Bogatov"; + email = "KAction@disroot.org"; + github = "kaction"; + githubId = 44864956; + keys = [{ + longkeyid = "ed25519/0x749FD4DFA2E94236"; + fingerprint = "3F87 0A7C A7B4 3731 2F13 6083 749F D4DF A2E9 4236"; + }]; + }; kaiha = { email = "kai.harries@gmail.com"; github = "kaiha"; @@ -3518,6 +3865,16 @@ githubId = 87115; name = "Wael Nasreddine"; }; + kamadorueda = { + name = "Kevin Amado"; + email = "kamadorueda@gmail.com"; + github = "kamadorueda"; + githubId = 47480384; + keys = [{ + longkeyid = "rsa4096/0x04D0CEAF916A9A40"; + fingerprint = "2BE3 BAFD 793E A349 ED1F F00F 04D0 CEAF 916A 9A40"; + }]; + }; kamilchm = { email = "kamil.chm@gmail.com"; github = "kamilchm"; @@ -3527,8 +3884,15 @@ kampfschlaefer = { email = "arnold@arnoldarts.de"; github = "kampfschlaefer"; + githubId = 3831860; name = "Arnold Krille"; }; + karantan = { + name = "Gasper Vozel"; + email = "karantan@gmail.com"; + github = "karantan"; + githubId = 7062631; + }; karolchmist = { email = "info+nix@chmist.com"; name = "karolchmist"; @@ -3596,6 +3960,7 @@ kim0 = { email = "email.ahmedkamal@googlemail.com"; github = "kim0"; + githubId = 59667; name = "Ahmed Kamal"; }; kimburgess = { @@ -3619,6 +3984,7 @@ kirikaza = { email = "k@kirikaza.ru"; github = "kirikaza"; + githubId = 804677; name = "Kirill Kazakov"; }; kisonecat = { @@ -3676,6 +4042,7 @@ email = "adrian@kummerlaender.eu"; name = "Adrian Kummerlaender"; github = "KnairdA"; + githubId = 498373; }; knedlsepp = { email = "josef.kemetmueller@gmail.com"; @@ -3695,6 +4062,12 @@ githubId = 13721712; name = "Konrad Langenberg"; }; + kolbycrouch = { + email = "kjc.devel@gmail.com"; + github = "kolbycrouch"; + githubId = 6346418; + name = "Kolby Crouch"; + }; konimex = { email = "herdiansyah@netc.eu"; github = "konimex"; @@ -3704,6 +4077,7 @@ koral = { email = "koral@mailoo.org"; github = "k0ral"; + githubId = 524268; name = "Koral"; }; kovirobi = { @@ -3718,6 +4092,12 @@ githubId = 787421; name = "Kevin Quick"; }; + kraem = { + email = "me@kraem.xyz"; + github = "kraem"; + githubId = 26622971; + name = "Ronnie Ebrin"; + }; kragniz = { email = "louis@kragniz.eu"; github = "kragniz"; @@ -3736,6 +4116,12 @@ githubId = 17659803; name = "Matthias Axel Kröll"; }; + kristian-brucaj = { + email = "kbrucaj@gmail.com"; + github = "kristian-brucaj"; + githubId = 8893110; + name = "Kristian Brucaj"; + }; kristoff3r = { email = "k.soeholm@gmail.com"; github = "kristoff3r"; @@ -3751,6 +4137,7 @@ ktor = { email = "kruszewsky@gmail.com"; github = "ktor"; + githubId = 99639; name = "Pawel Kruszewski"; }; ktosiek = { @@ -3765,6 +4152,12 @@ githubId = 449813; name = "Roman Kuznetsov"; }; + kwohlfahrt = { + email = "kai.wohlfahrt@gmail.com"; + github = "kwohlfahrt"; + githubId = 2422454; + name = "Kai Wohlfahrt"; + }; kylesferrazza = { name = "Kyle Sferrazza"; email = "kyle.sferrazza@gmail.com"; @@ -3786,6 +4179,7 @@ laikq = { email = "gwen@quasebarth.de"; github = "laikq"; + githubId = 55911173; name = "Gwendolyn Quasebarth"; }; lasandell = { @@ -3803,12 +4197,20 @@ lassulus = { email = "lassulus@gmail.com"; github = "Lassulus"; + githubId = 621759; name = "Lassulus"; }; lattfein = { email = "lattfein@gmail.com"; - github = "lattfein"; - githubId = 53550838; + # Their GitHub account was deleted. + # + # See: https://github.com/NixOS/nixpkgs/pull/69007 where this + # was added but is now owned by a ghost. + # + # Possibly the username lattfein (currently github ID 56827487) is + # owned by the same person, but we should confirm before adding + # the GitHub name or ID back. + # github = "lattfein"; name = "Koki Yasuno"; }; layus = { @@ -3823,6 +4225,18 @@ githubId = 32152; name = "Luka Blaskovic"; }; + lbpdt = { + email = "nix@pdtpartners.com"; + github = "lbpdt"; + githubId = 45168934; + name = "Louis Blin"; + }; + ldelelis = { + email = "ldelelis@est.frba.utn.edu.ar"; + github = "ldelelis"; + githubId = 20250323; + name = "Lucio Delelis"; + }; ldesgoui = { email = "ldesgoui@gmail.com"; github = "ldesgoui"; @@ -3844,6 +4258,7 @@ lebastr = { email = "lebastr@gmail.com"; github = "lebastr"; + githubId = 887072; name = "Alexander Lebedev"; }; ledif = { @@ -3879,8 +4294,15 @@ leonardoce = { email = "leonardo.cecchi@gmail.com"; github = "leonardoce"; + githubId = 1572058; name = "Leonardo Cecchi"; }; + leshainc = { + email = "leshainc@fomalhaut.me"; + github = "LeshaInc"; + githubId = 42153076; + name = "Alexey Nikashkin"; + }; lethalman = { email = "lucabru@src.gnome.org"; github = "lethalman"; @@ -3893,6 +4315,16 @@ githubId = 3425311; name = "Antoine Eiche"; }; + lexuge = { + name = "Harry Ying"; + email = "lexugeyky@outlook.com"; + github = "LEXUGE"; + githubId = 13804737; + keys = [{ + longkeyid = "rsa4096/0xAE53B4C2E58EDD45"; + fingerprint = "7FE2 113A A08B 695A C8B8 DDE6 AE53 B4C2 E58E DD45"; + }]; + }; lheckemann = { email = "git@sphalerite.org"; github = "lheckemann"; @@ -3914,6 +4346,7 @@ lightbulbjim = { email = "chris@killred.net"; github = "lightbulbjim"; + githubId = 4312404; name = "Chris Rendle-Short"; }; lightdiscord = { @@ -3975,10 +4408,10 @@ }]; }; luis = { - email = "luis.nixos@gmail.com"; - github = "Luis-Hebendanz"; - githubId = 22085373; - name = "Luis Hebendanz"; + email = "luis.nixos@gmail.com"; + github = "Luis-Hebendanz"; + githubId = 22085373; + name = "Luis Hebendanz"; }; lionello = { email = "lio@lunesu.com"; @@ -4025,6 +4458,7 @@ lovek323 = { email = "jason@oconal.id.au"; github = "lovek323"; + githubId = 265084; name = "Jason O'Conal"; }; lovesegfault = { @@ -4064,13 +4498,14 @@ ltavard = { email = "laure.tavard@univ-grenoble-alpes.fr"; github = "ltavard"; + githubId = 8555953; name = "Laure Tavard"; }; - lucas8 = { - email = "luc.linux@mailoo.org"; - github = "lucas8"; - githubId = 2025623; - name = "Luc Chabassier"; + luc65r = { + email = "lucas@ransan.tk"; + github = "luc65r"; + githubId = 59375051; + name = "Lucas Ransan"; }; lucus16 = { email = "lars.jellema@gmail.com"; @@ -4090,6 +4525,16 @@ githubId = 1784379; name = "Kyohei Kadota"; }; + Luflosi = { + name = "Luflosi"; + email = "luflosi@luflosi.de"; + github = "Luflosi"; + githubId = 15217907; + keys = [{ + longkeyid = "rsa4096/0x6F987CCF224D20B9"; + fingerprint = "66D1 3048 2B5F 2069 81A6 6B83 6F98 7CCF 224D 20B9"; + }]; + }; luispedro = { email = "luis@luispedro.org"; github = "luispedro"; @@ -4117,6 +4562,7 @@ lumi = { email = "lumi@pew.im"; github = "lumi-me-not"; + githubId = 26020062; name = "lumi"; }; luz = { @@ -4135,6 +4581,12 @@ email = "wheatdoge@gmail.com"; name = "Tim Liou"; }; + m1cr0man = { + email = "lucas+nix@m1cr0man.com"; + github = "m1cr0man"; + githubId = 3044438; + name = "Lucas Savva"; + }; m3tti = { email = "mathaeus.peter.sander@gmail.com"; name = "Mathaeus Sander"; @@ -4211,12 +4663,12 @@ githubId = 50230945; name = "Marcus Boyd"; }; - marenz = { - email = "marenz@arkom.men"; - github = "marenz2569"; - githubId = 12773269; - name = "Markus Schmidl"; - }; + marenz = { + email = "marenz@arkom.men"; + github = "marenz2569"; + githubId = 12773269; + name = "Markus Schmidl"; + }; markus1189 = { email = "markus1189@gmail.com"; github = "markus1189"; @@ -4285,9 +4737,16 @@ githubId = 1711539; name = "matklad"; }; + matt-snider = { + email = "matt.snider@protonmail.com"; + github = "matt-snider"; + githubId = 11810057; + name = "Matt Snider"; + }; matthewbauer = { email = "mjbauer95@gmail.com"; github = "matthewbauer"; + githubId = 19036; name = "Matthew Bauer"; }; matthiasbeyer = { @@ -4305,6 +4764,7 @@ matti-kariluoma = { email = "matti@kariluo.ma"; github = "matti-kariluoma"; + githubId = 279868; name = "Matti Kariluoma"; }; maurer = { @@ -4313,12 +4773,30 @@ githubId = 136037; name = "Matthew Maurer"; }; + maxdamantus = { + email = "maxdamantus@gmail.com"; + github = "Maxdamantus"; + githubId = 502805; + name = "Max Zerzouri"; + }; + maxeaubrey = { + email = "maxeaubrey@gmail.com"; + github = "maxeaubrey"; + githubId = 35892750; + name = "Maxine Aubrey"; + }; mbakke = { email = "mbakke@fastmail.com"; github = "mbakke"; githubId = 1269099; name = "Marius Bakke"; }; + mbaillie = { + email = "martin@baillie.email"; + github = "martinbaillie"; + githubId = 613740; + name = "Martin Baillie"; + }; mbbx6spp = { email = "me@susanpotter.net"; github = "mbbx6spp"; @@ -4355,6 +4833,12 @@ githubId = 158568; name = "Matthias C. M. Troffaes"; }; + McSinyx = { + email = "vn.mcsinyx@gmail.com"; + github = "McSinyx"; + githubId = 13689192; + name = "Nguyễn Gia Phong"; + }; mdaiter = { email = "mdaiter8121@gmail.com"; github = "mdaiter"; @@ -4367,6 +4851,12 @@ githubId = 4378377; name = "Matthias Devlamynck"; }; + mdlayher = { + email = "mdlayher@gmail.com"; + github = "mdlayher"; + githubId = 1926905; + name = "Matt Layher"; + }; meditans = { email = "meditans@gmail.com"; github = "meditans"; @@ -4400,6 +4890,7 @@ melsigl = { email = "melanie.bianca.sigl@gmail.com"; github = "melsigl"; + githubId = 15093162; name = "Melanie B. Sigl"; }; melkor333 = { @@ -4448,7 +4939,7 @@ githubId = 668926; name = "Maximilian Güntner"; }; - mhaselsteiner = { + mhaselsteiner = { email = "magdalena.haselsteiner@gmx.at"; github = "mhaselsteiner"; githubId = 20536514; @@ -4468,6 +4959,7 @@ michaelpj = { email = "michaelpj@gmail.com"; github = "michaelpj"; + githubId = 1699466; name = "Michael Peyton Jones"; }; michalrus = { @@ -4479,6 +4971,7 @@ michelk = { email = "michel@kuhlmanns.info"; github = "michelk"; + githubId = 1404919; name = "Michel Kuhlmann"; }; michojel = { @@ -4511,6 +5004,24 @@ githubId = 3958340; name = "Eshin Kunishima"; }; + mikesperber = { + email = "sperber@deinprogramm.de"; + github = "mikesperber"; + githubId = 1387206; + name = "Mike Sperber"; + }; + mildlyincompetent = { + email = "nix@kch.dev"; + github = "mildlyincompetent"; + githubId = 19479662; + name = "Kajetan Champlewski"; + }; + millerjason = { + email = "mailings-github@millerjason.com"; + github = "millerjason"; + githubId = 7610974; + name = "Jason Miller"; + }; miltador = { email = "miltador@yandex.ua"; name = "Vasiliy Solovey"; @@ -4524,11 +5035,17 @@ minijackson = { email = "minijackson@riseup.net"; github = "minijackson"; + githubId = 1200507; name = "Rémi Nicole"; + keys = [{ + longkeyid = "rsa2048/0xFEA888C9F5D64F62"; + fingerprint = "3196 83D3 9A1B 4DE1 3DC2 51FD FEA8 88C9 F5D6 4F62"; + }]; }; mirdhyn = { email = "mirdhyn@gmail.com"; github = "mirdhyn"; + githubId = 149558; name = "Merlin Gaillard"; }; mirrexagon = { @@ -4564,6 +5081,7 @@ mkf = { email = "m@mikf.pl"; github = "mkf"; + githubId = 7753506; name = "Michał Krzysztof Feiler"; keys = [{ longkeyid = "rsa4096/0xE35C2D7C2C6AC724"; @@ -4607,12 +5125,13 @@ mmilata = { email = "martin@martinmilata.cz"; github = "mmilata"; - gitHubId = 85857; + githubId = 85857; name = "Martin Milata"; }; mmlb = { - email = "me.mmlb@mmlb.me"; + email = "manny@peekaboo.mmlb.icu"; github = "mmlb"; + githubId = 708570; name = "Manuel Mendez"; }; mnacamura = { @@ -4642,6 +5161,7 @@ Mogria = { email = "m0gr14@gmail.com"; github = "mogria"; + githubId = 754512; name = "Mogria"; }; monsieurp = { @@ -4684,6 +5204,12 @@ githubId = 118035; name = "Corbin Simpson"; }; + mothsart = { + email = "jerem.ferry@gmail.com"; + github = "mothsart"; + githubId = 10601196; + name = "Jérémie Ferry"; + }; mounium = { email = "muoniurn@gmail.com"; github = "mounium"; @@ -4693,6 +5219,7 @@ MP2E = { email = "MP2E@archlinux.us"; github = "MP2E"; + githubId = 167708; name = "Cray Elliott"; }; mpcsh = { @@ -4716,6 +5243,7 @@ mpscholten = { email = "marc@mpscholten.de"; github = "mpscholten"; + githubId = 2072185; name = "Marc Scholten"; }; mpsyco = { @@ -4733,6 +5261,7 @@ mredaelli = { email = "massimo@typish.io"; github = "mredaelli"; + githubId = 3073833; name = "Massimo Redaelli"; }; mrkkrp = { @@ -4779,6 +5308,12 @@ githubId = 133448; name = "Mikołaj Siedlarek"; }; + msm = { + email = "msm@tailcall.net"; + github = "msm-code"; + githubId = 7026881; + name = "Jarosław Jedynak"; + }; mstarzyk = { email = "mstarzyk@gmail.com"; github = "mstarzyk"; @@ -4800,6 +5335,7 @@ MtP = { email = "marko.nixos@poikonen.de"; github = "MtP76"; + githubId = 2176611; name = "Marko Poikonen"; }; mtreskin = { @@ -4820,6 +5356,12 @@ githubId = 69918; name = "Stefan Dorn"; }; + multun = { + email = "victor.collod@epita.fr"; + github = "multun"; + githubId = 5047140; + name = "Victor Collod"; + }; mvnetbiz = { email = "mvnetbiz@gmail.com"; github = "mvnetbiz"; @@ -4859,6 +5401,7 @@ nand0p = { email = "nando@hex7.com"; github = "nand0p"; + githubId = 1916245; name = "Fernando Jose Pando"; }; Nate-Devv = { @@ -4883,12 +5426,6 @@ githubId = 364510; name = "Tobias Geerinckx-Rice"; }; - ndowens = { - email = "ndowens04@gmail.com"; - github = "ndowens"; - githubId = 117743; - name = "Nathan Owens"; - }; neeasade = { email = "nathanisom27@gmail.com"; github = "neeasade"; @@ -4983,6 +5520,12 @@ githubId = 7588406; name = "Andrew R. M."; }; + nloomans = { + email = "noah@nixos.noahloomans.com"; + github = "nloomans"; + githubId = 7829481; + name = "Noah Loomans"; + }; nmattia = { email = "nicolas@nmattia.com"; github = "nmattia"; @@ -5132,6 +5675,7 @@ olynch = { email = "owen@olynch.me"; github = "olynch"; + githubId = 4728903; name = "Owen Lynch"; }; omnipotententity = { @@ -5155,6 +5699,7 @@ orbitz = { email = "mmatalka@gmail.com"; github = "orbitz"; + githubId = 75299; name = "Malcolm Matalka"; }; orivej = { @@ -5163,6 +5708,12 @@ githubId = 101514; name = "Orivej Desh"; }; + oro = { + email = "marco@orovecchia.at"; + github = "oro"; + githubId = 357005; + name = "Marco Orovecchia"; + }; osener = { email = "ozan@ozansener.com"; github = "osener"; @@ -5175,6 +5726,16 @@ githubId = 108072; name = "Slawomir Gonet"; }; + oxalica = { + email = "oxalicc@pm.me"; + github = "oxalica"; + githubId = 14816024; + name = "oxalica"; + keys = [{ + longkeyid = "rsa4096/0xCED392DE0C483D00"; + fingerprint = "5CB0 E9E5 D5D5 71F5 7F54 0FEA CED3 92DE 0C48 3D00"; + }]; + }; oxij = { email = "oxij@oxij.org"; github = "oxij"; @@ -5215,6 +5776,12 @@ githubId = 11016164; name = "Fedor Pakhomov"; }; + paluh = { + email = "paluho@gmail.com"; + github = "paluh"; + githubId = 190249; + name = "Tomasz Rybarczyk"; + }; pamplemousse = { email = "xav.maso@gmail.com"; github = "Pamplemousse"; @@ -5278,6 +5845,7 @@ pcarrier = { email = "pc@rrier.ca"; github = "pcarrier"; + githubId = 8641; name = "Pierre Carrier"; }; periklis = { @@ -5298,6 +5866,12 @@ githubId = 3250809; name = "Milan Pässler"; }; + petercommand = { + email = "petercommand@gmail.com"; + github = "petercommand"; + githubId = 1260660; + name = "petercommand"; + }; peterhoeg = { email = "peter@hoeg.com"; github = "peterhoeg"; @@ -5310,6 +5884,12 @@ githubId = 5515707; name = "Peter Romfeld"; }; + petersjt014 = { + email = "petersjt014@gmail.com"; + github = "petersjt014"; + githubId = 29493551; + name = "Josh Peters"; + }; peti = { email = "simons@cryp.to"; github = "peti"; @@ -5411,6 +5991,7 @@ plchldr = { email = "mail@oddco.de"; github = "plchldr"; + githubId = 11639001; name = "Jonas Beyer"; }; plcplc = { @@ -5434,6 +6015,7 @@ pmeunier = { email = "pierre-etienne.meunier@inria.fr"; github = "P-E-Meunier"; + githubId = 17021304; name = "Pierre-Étienne Meunier"; }; pmiddend = { @@ -5463,6 +6045,7 @@ polyrod = { email = "dc1mdp@gmail.com"; github = "polyrod"; + githubId = 24878306; name = "Maurizio Di Pietro"; }; pombeirp = { @@ -5482,11 +6065,10 @@ github = "pradyuman"; githubId = 9904569; name = "Pradyuman Vig"; - keys = [ - { longkeyid = "rsa4096/4F74D5361C4CA31E"; - fingerprint = "240B 57DE 4271 2480 7CE3 EAC8 4F74 D536 1C4C A31E"; - } - ]; + keys = [{ + longkeyid = "rsa4096/4F74D5361C4CA31E"; + fingerprint = "240B 57DE 4271 2480 7CE3 EAC8 4F74 D536 1C4C A31E"; + }]; }; prikhi = { email = "pavan.rikhi@gmail.com"; @@ -5500,10 +6082,12 @@ githubId = 7537109; name = "Michael Weiss"; keys = [ - { longkeyid = "ed25519/0x130826A6C2A389FD"; # Git only + { + longkeyid = "ed25519/0x130826A6C2A389FD"; # Git only fingerprint = "86A7 4A55 07D0 58D1 322E 37FD 1308 26A6 C2A3 89FD"; } - { longkeyid = "rsa3072/0xBCA9943DD1DF4C04"; # Email, etc. + { + longkeyid = "rsa3072/0xBCA9943DD1DF4C04"; # Email, etc. fingerprint = "AF85 991C C950 49A2 4205 1933 BCA9 943D D1DF 4C04"; } ]; @@ -5588,6 +6172,12 @@ githubId = 37715; name = "Brian McKenna"; }; + puzzlewolf = { + email = "nixos@nora.pink"; + github = "puzzlewolf"; + githubId = 23097564; + name = "Nora Widdecke"; + }; pxc = { email = "patrick.callahan@latitudeengineering.com"; name = "Patrick Callahan"; @@ -5598,6 +6188,12 @@ githubId = 4579165; name = "Danny Bautista"; }; + peelz = { + email = "peelz.dev+nixpkgs@gmail.com"; + github = "louistakepillz"; + githubId = 920910; + name = "peelz"; + }; q3k = { email = "q3k@q3k.org"; github = "q3k"; @@ -5626,9 +6222,16 @@ fingerprint = "7573 56D7 79BB B888 773E 415E 736C CDF9 EF51 BD97"; }]; }; + raboof = { + email = "arnout@bzzt.net"; + github = "raboof"; + githubId = 131856; + name = "Arnout Engelen"; + }; rafaelgg = { email = "rafael.garcia.gallego@gmail.com"; github = "rafaelgg"; + githubId = 1016742; name = "Rafael García"; }; raquelgb = { @@ -5800,8 +6403,15 @@ rickynils = { email = "rickynils@gmail.com"; github = "rickynils"; + githubId = 16779; name = "Rickard Nilsson"; }; + rika = { + email = "rika@paymentswit.ch"; + github = "NekomimiScience"; + githubId = 1810487; + name = "Rika"; + }; rileyinman = { email = "rileyminman@gmail.com"; github = "rileyinman"; @@ -5814,6 +6424,20 @@ githubId = 807447; name = "Robert Scott"; }; + risson = { + name = "Marc Schmitt"; + email = "marc.schmitt@risson.space"; + github = "rissson"; + githubId = 18313093; + keys = [ + { longkeyid = "rsa4096/0xF6FD87B15C263EC9"; + fingerprint = "8A0E 6A7C 08AB B9DE 67DE 2A13 F6FD 87B1 5C26 3EC9"; + } + { longkeyid = "ed25519/0xBBB7A6801DF1E03F"; + fingerprint = "C0A7 A9BB 115B C857 4D75 EA99 BBB7 A680 1DF1 E03F"; + } + ]; + }; rittelle = { email = "rittelle@posteo.de"; github = "rittelle"; @@ -5832,6 +6456,12 @@ githubId = 2507744; name = "Roland Koebler"; }; + rkrzr = { + email = "ops+nixpkgs@channable.com"; + github = "rkrzr"; + githubId = 82817; + name = "Robert Kreuzer"; + }; rlupton20 = { email = "richard.lupton@gmail.com"; github = "rlupton20"; @@ -5843,21 +6473,27 @@ github = "rnhmjoj"; githubId = 2817565; name = "Michele Guerini Rocco"; - keys = - [ - { longkeyid = "ed25519/0xBFBAF4C975F76450"; - fingerprint = "92B2 904F D293 C94D C4C9 3E6B BFBA F4C9 75F7 6450"; - } - ]; + keys = [{ + longkeyid = "ed25519/0xBFBAF4C975F76450"; + fingerprint = "92B2 904F D293 C94D C4C9 3E6B BFBA F4C9 75F7 6450"; + }]; + }; + roastiek = { + email = "r.dee.b.b@gmail.com"; + github = "roastiek"; + githubId = 422802; + name = "Rostislav Beneš"; }; rob = { email = "rob.vermaas@gmail.com"; github = "rbvermaa"; + githubId = 353885; name = "Rob Vermaas"; }; robberer = { email = "robberer@freakmail.de"; github = "robberer"; + githubId = 6204883; name = "Longrin Wischnewski"; }; robbinch = { @@ -5977,6 +6613,7 @@ rvolosatovs = { email = "rvolosatovs@riseup.net"; github = "rvolosatovs"; + githubId = 12877905; name = "Roman Volosatovs"; }; ryanartecona = { @@ -5988,6 +6625,7 @@ ryansydnor = { email = "ryan.t.sydnor@gmail.com"; github = "ryansydnor"; + githubId = 1832096; name = "Ryan Sydnor"; }; ryantm = { @@ -6030,17 +6668,39 @@ githubId = 766350; name = "Richard Zetterberg"; }; + s1341 = { + email = "s1341@shmarya.net"; + name = "Shmarya Rubenstein"; + github = "s1341"; + githubId = 5682183; + }; + samdoshi = { + email = "sam@metal-fish.co.uk"; + github = "samdoshi"; + githubId = 112490; + name = "Sam Doshi"; + }; samdroid-apps = { email = "sam@sam.today"; github = "samdroid-apps"; githubId = 6022042; name = "Sam Parkinson"; }; + samlich = { + email = "nixos@samli.ch"; + github = "samlich"; + githubId = 1349989; + name = "samlich"; + keys = [{ + longkeyid = "rsa4096/B1568953B1939F1C"; + fingerprint = "AE8C 0836 FDF6 3FFC 9580 C588 B156 8953 B193 9F1C"; + }]; + }; samrose = { - email = "samuel.rose@gmail.com"; - github = "samrose"; - githubId = 115821; - name = "Sam Rose"; + email = "samuel.rose@gmail.com"; + github = "samrose"; + githubId = 115821; + name = "Sam Rose"; }; samueldr = { email = "samuel@dionne-riel.com"; @@ -6057,6 +6717,7 @@ sander = { email = "s.vanderburg@tudelft.nl"; github = "svanderburg"; + githubId = 1153271; name = "Sander van der Burg"; }; sargon = { @@ -6092,6 +6753,7 @@ scalavision = { email = "scalavision@gmail.com"; github = "scalavision"; + githubId = 3958212; name = "Tom Sorlie"; }; schmitthenner = { @@ -6101,8 +6763,10 @@ name = "Fabian Schmitthenner"; }; schmittlauch = { + name = "Trolli Schmittlauch"; email = "t.schmittlauch+nixos@orlives.de"; github = "schmittlauch"; + githubId = 1479555; }; schneefux = { email = "schneefux+nixos_pkg@schneefux.xyz"; @@ -6141,8 +6805,15 @@ scubed2 = { email = "scubed2@gmail.com"; github = "scubed2"; + githubId = 7401858; name = "Sterling Stein"; }; + sdier = { + email = "scott@dier.name"; + github = "sdier"; + githubId = 11613056; + name = "Scott Dier"; + }; sdll = { email = "sasha.delly@gmail.com"; github = "sdll"; @@ -6194,7 +6865,7 @@ servalcatty = { email = "servalcat@pm.me"; github = "servalcatty"; - githubid = 51969817; + githubId = 51969817; name = "Serval"; keys = [{ longkeyid = "rsa4096/0x4A2AAAA382F8294C"; @@ -6240,6 +6911,7 @@ shazow = { email = "andrey.petrov@shazow.net"; github = "shazow"; + githubId = 6292; name = "Andrey Petrov"; }; sheenobu = { @@ -6263,13 +6935,21 @@ shlevy = { email = "shea@shealevy.com"; github = "shlevy"; + githubId = 487050; name = "Shea Levy"; }; shmish111 = { email = "shmish111@gmail.com"; github = "shmish111"; + githubId = 934267; name = "David Smith"; }; + shnarazk = { + email = "shujinarazaki@protonmail.com"; + github = "shnarazk"; + githubId = 997855; + name = "Narazaki Shuji"; + }; shou = { email = "x+g@shou.io"; github = "Shou"; @@ -6346,9 +7026,16 @@ githubId = 848812; name = "Stephan Jau"; }; + sjfloat = { + email = "steve+nixpkgs@jonescape.com"; + github = "sjfloat"; + githubId = 216167; + name = "Steve Jones"; + }; sjmackenzie = { email = "setori88@gmail.com"; github = "sjmackenzie"; + githubId = 158321; name = "Stewart Mackenzie"; }; sjourdois = { @@ -6365,6 +7052,12 @@ email = "jot.skrzyp@gmail.com"; name = "Jakub Skrzypnik"; }; + skykanin = { + email = "skykanin@users.noreply.github.com"; + github = "skykanin"; + githubId = 3789764; + name = "skykanin"; + }; sleexyz = { email = "freshdried@gmail.com"; github = "sleexyz"; @@ -6476,6 +7169,7 @@ sprock = { email = "rmason@mun.ca"; github = "sprock"; + githubId = 6391601; name = "Roger Mason"; }; spwhitt = { @@ -6487,6 +7181,7 @@ srghma = { email = "srghma@gmail.com"; github = "srghma"; + githubId = 7573215; name = "Sergei Khoma"; }; srgom = { @@ -6507,6 +7202,12 @@ githubId = 4061736; name = "Severen Redwood"; }; + sstef = { + email = "stephane@nix.frozenid.net"; + github = "fkstef"; + githubId = 8668915; + name = "Stephane Schitter"; + }; steell = { email = "steve@steellworks.com"; github = "Steell"; @@ -6698,6 +7399,7 @@ taha = { email = "xrcrod@gmail.com"; github = "tgharib"; + githubId = 6457015; name = "Taha Gharib"; }; tailhook = { @@ -6730,6 +7432,12 @@ githubId = 870673; name = "Takuo Yonezawa"; }; + talkara = { + email = "taito.horiuchi@relexsolutions.com"; + github = "talkara"; + githubId = 51232929; + name = "Taito Horiuchi"; + }; talyz = { email = "kim.lindberger@gmail.com"; github = "talyz"; @@ -6772,6 +7480,12 @@ githubId = 863327; name = "Tyler Benster"; }; + tckmn = { + email = "andy@tck.mn"; + github = "tckmn"; + githubId = 2389333; + name = "Andy Tockman"; + }; teh = { email = "tehunger@gmail.com"; github = "teh"; @@ -6799,11 +7513,13 @@ tesq0 = { email = "mikolaj.galkowski@gmail.com"; github = "tesq0"; + githubId = 26417242; name = "Mikolaj Galkowski"; }; teto = { email = "mcoudron@hotmail.com"; github = "teto"; + githubId = 886074; name = "Matthieu Coudron"; }; tex = { @@ -6818,6 +7534,12 @@ githubId = 378734; name = "TG ⊗ Θ"; }; + th0rgal = { + email = "thomas.marchand@tuta.io"; + github = "Th0rgal"; + githubId = 41830259; + name = "Thomas Marchand"; + }; thall = { email = "niclas.thall@gmail.com"; github = "thall"; @@ -6839,6 +7561,7 @@ the-kenny = { email = "moritz@tarn-vedra.de"; github = "the-kenny"; + githubId = 31167; name = "Moritz Ulrich"; }; thedavidmeister = { @@ -6856,9 +7579,15 @@ thefenriswolf = { email = "stefan.rohrbacher97@gmail.com"; github = "thefenriswolf"; - githubId = "8547242"; + githubId = 8547242; name = "Stefan Rohrbacher"; }; + "thelegy" = { + email = "mail+nixos@0jb.de"; + github = "thelegy"; + githubId = 3105057; + name = "Jan Beinke"; + }; thesola10 = { email = "thesola10@bobile.fr"; github = "thesola10"; @@ -6881,6 +7610,12 @@ githubId = 844343; name = "Thiago K. Okada"; }; + thmzlt = { + email = "git@thomazleite.com"; + github = "thmzlt"; + githubId = 7709; + name = "Thomaz Leite"; + }; ThomasMader = { email = "thomas.mader@gmail.com"; github = "ThomasMader"; @@ -6914,8 +7649,15 @@ timbertson = { email = "tim@gfxmonk.net"; github = "timbertson"; + githubId = 14172; name = "Tim Cuthbertson"; }; + timma = { + email = "kunduru.it.iitb@gmail.com"; + github = "ktrsoft"; + githubId = 12712927; + name = "Timma"; + }; timokau = { email = "timokau@zoho.com"; github = "timokau"; @@ -6951,10 +7693,10 @@ github = "tkerber"; githubId = 5722198; name = "Thomas Kerber"; - keys = [ { + keys = [{ longkeyid = "rsa4096/0x8489B911F9ED617B"; fingerprint = "556A 403F B0A2 D423 F656 3424 8489 B911 F9ED 617B"; - } ]; + }]; }; tmplt = { email = "tmplt@dragons.rocks"; @@ -6965,6 +7707,7 @@ tnias = { email = "phil@grmr.de"; github = "tnias"; + githubId = 9853194; name = "Philipp Bartsch"; }; tobim = { @@ -7060,6 +7803,7 @@ tscholak = { email = "torsten.scholak@googlemail.com"; github = "tscholak"; + githubId = 1568873; name = "Torsten Scholak"; }; tstrobel = { @@ -7072,6 +7816,12 @@ githubId = 563054; name = "Thomas Tuegel"; }; + turion = { + email = "programming@manuelbaerenz.de"; + github = "turion"; + githubId = 303489; + name = "Manuel Bärenz"; + }; tv = { email = "tv@krebsco.de"; github = "4z3"; @@ -7081,6 +7831,7 @@ tvestelind = { email = "tomas.vestelind@fripost.org"; github = "tvestelind"; + githubId = 699403; name = "Tomas Vestelind"; }; tvorog = { @@ -7092,11 +7843,13 @@ tweber = { email = "tw+nixpkgs@360vier.de"; github = "thorstenweber83"; + githubId = 9413924; name = "Thorsten Weber"; }; twey = { email = "twey@twey.co.uk"; - github = "twey"; + github = "Twey"; + githubId = 101639; name = "James ‘Twey’ Kay"; }; twhitehead = { @@ -7160,6 +7913,7 @@ uwap = { email = "me@uwap.name"; github = "uwap"; + githubId = 2212422; name = "uwap"; }; va1entin = { @@ -7177,14 +7931,21 @@ valebes = { email = "valebes@gmail.com"; github = "valebes"; - githubid = 10956211; + githubId = 10956211; name = "Valerio Besozzi"; }; valeriangalliat = { email = "val@codejam.info"; github = "valeriangalliat"; + githubId = 3929133; name = "Valérian Galliat"; }; + valodim = { + email = "look@my.amazin.horse"; + github = "valodim"; + githubId = 27813; + name = "Vincent Breitmoser"; + }; vandenoever = { email = "jos@vandenoever.info"; github = "vandenoever"; @@ -7221,9 +7982,16 @@ githubId = 797581; name = "Vincent Bernardoff"; }; + vcanadi = { + email = "vito.canadi@gmail.com"; + github = "vcanadi"; + githubId = 8889722; + name = "Vitomir Čanadi"; + }; vcunat = { name = "Vladimír Čunát"; - email = "v@cunat.cz"; # vcunat@gmail.com predominated in commits before 2019/03 + # vcunat@gmail.com predominated in commits before 2019/03 + email = "v@cunat.cz"; github = "vcunat"; githubId = 1785925; keys = [{ @@ -7267,8 +8035,8 @@ githubId = 7953163; name = "Vika Shleina"; keys = [{ - longkeyid = "rsa4096/0x5402B9B5497BACDB"; - fingerprint = "A03C D09C 36CF D9F6 1ADF AF11 5402 B9B5 497B ACDB"; + longkeyid = "rsa2048/0x4F62CD07CE64796A"; + fingerprint = "B3C0 DA1A C18B 82E8 CA8B B1D1 4F62 CD07 CE64 796A"; }]; }; vinymeuh = { @@ -7280,6 +8048,7 @@ viric = { email = "viric@viric.name"; github = "viric"; + githubId = 66664; name = "Lluís Batlle i Rossell"; }; virusdave = { @@ -7291,6 +8060,7 @@ vizanto = { email = "danny@prime.vc"; github = "vizanto"; + githubId = 326263; name = "Danny Wilson"; }; vklquevs = { @@ -7320,6 +8090,7 @@ vmchale = { email = "tmchale@wisc.edu"; github = "vmchale"; + githubId = 13259982; name = "Vanessa McHale"; }; volhovm = { @@ -7362,6 +8133,12 @@ githubId = 3889405; name = "vyp"; }; + wamserma = { + name = "Markus S. Wamser"; + email = "github-dev@mail2013.wamser.eu"; + github = "wamserma"; + githubId = 60148; + }; waynr = { name = "Wayne Warren"; email = "wayne.warren.s@gmail.com"; @@ -7438,11 +8215,12 @@ email = "worldofpeace@protonmail.ch"; github = "worldofpeace"; githubId = 28888242; - name = "Worldofpeace"; + name = "worldofpeace"; }; wscott = { email = "wsc9tt@gmail.com"; github = "wscott"; + githubId = 31487; name = "Wayne Scott"; }; wucke13 = { @@ -7475,6 +8253,12 @@ githubId = 13489144; name = "Calle Rosenquist"; }; + xe = { + email = "me@christine.website"; + github = "Xe"; + githubId = 529003; + name = "Christine Dodrill"; + }; xeji = { email = "xeji@cat3.de"; github = "xeji"; @@ -7490,6 +8274,7 @@ xnaveira = { email = "xnaveira@gmail.com"; github = "xnaveira"; + githubId = 2534411; name = "Xavier Naveira"; }; xnwdd = { @@ -7531,6 +8316,7 @@ y0no = { email = "y0no@y0no.fr"; github = "y0no"; + githubId = 2242427; name = "Yoann Ono"; }; yarny = { @@ -7609,6 +8395,12 @@ fingerprint = "85F8 E850 F8F2 F823 F934 535B EC50 6589 9AEA AF4C"; }]; }; + yvesf = { + email = "yvesf+nix@xapek.org"; + github = "yvesf"; + githubId = 179548; + name = "Yves Fischer"; + }; yvt = { email = "i@yvt.jp"; github = "yvt"; @@ -7636,6 +8428,7 @@ zalakain = { email = "ping@umazalakain.info"; github = "umazalakain"; + githubId = 1319905; name = "Uma Zalakain"; }; zaninime = { @@ -7656,6 +8449,12 @@ githubId = 250877; name = "Elmar Athmer"; }; + zakkor = { + email = "edward.dalbon@gmail.com"; + github = "zakkor"; + githubId = 6191421; + name = "Edward d'Albon"; + }; zef = { email = "zef@zef.me"; name = "Zef Hemel"; @@ -7702,6 +8501,12 @@ githubId = 1069303; name = "Kim Simmons"; }; + zowoq = { + email = "59103226+zowoq@users.noreply.github.com"; + github = "zowoq"; + githubId = 59103226; + name = "zowoq"; + }; zraexy = { email = "zraexy@gmail.com"; github = "zraexy"; @@ -7768,4 +8573,46 @@ githubId = 52650; name = "Marc Busqué"; }; + snglth = { + email = "illia@ishestakov.com"; + github = "snglth"; + githubId = 8686360; + name = "Illia Shestakov"; + }; + foxit64 = { + email = "o4nsxy05@gmail.com"; + github = "foxit64"; + githubId = 56247270; + name = "Foxit"; + }; + masaeedu = { + email = "masaeedu@gmail.com"; + github = "masaeedu"; + githubId = 3674056; + name = "Asad Saeeduddin"; + }; + ngerstle = { + name = "Nicholas Gerstle"; + email = "ngerstle@gmail.com"; + github = "ngerstle"; + githubId = 1023752; + }; + xavierzwirtz = { + email = "me@xavierzwirtz.com"; + github = "xavierzwirtz"; + githubId = 474343; + name = "Xavier Zwirtz"; + }; + ymeister = { + name = "Yuri Meister"; + email = "47071325+ymeister@users.noreply.github.com"; + github = "ymeister"; + githubId = 47071325; + }; + cpcloud = { + name = "Phillip Cloud"; + email = "417981+cpcloud@users.noreply.github.com"; + github = "cpcloud"; + githubId = 417981; + }; } diff --git a/maintainers/scripts/fetch-kde-qt.sh b/maintainers/scripts/fetch-kde-qt.sh index a267a5fa871..c6c980dd0cb 100755 --- a/maintainers/scripts/fetch-kde-qt.sh +++ b/maintainers/scripts/fetch-kde-qt.sh @@ -28,7 +28,8 @@ find . -type f | while read src; do done cat >"$SRCS" < ( # License not provided in metadata. unknown => { - licenses => [qw( unknown )], + licenses => [], amb => 1 } ); @@ -278,14 +279,8 @@ sub get_deps { foreach my $n ( $deps->required_modules ) { next if $n eq "perl"; - # Figure out whether the module is a core module by attempting - # to `use` the module in a pure Perl interpreter and checking - # whether it succeeded. Note, $^X is a magic variable holding - # the path to the running Perl interpreter. - if ( system("env -i $^X -M$n -e1 >/dev/null 2>&1") == 0 ) { - DEBUG("skipping Perl-builtin module $n"); - next; - } + my @core = Module::CoreList->find_modules(qr/^$n$/); + next if (@core); my $pkg = module_to_pkg( $cb, $n ); diff --git a/maintainers/scripts/update-luarocks-packages b/maintainers/scripts/update-luarocks-packages index 1a31d71086f..5c42080745e 100755 --- a/maintainers/scripts/update-luarocks-packages +++ b/maintainers/scripts/update-luarocks-packages @@ -19,7 +19,7 @@ export LUAROCKS_CONFIG="$NIXPKGS_PATH/maintainers/scripts/luarocks-config.lua" # 10 is a pretty arbitrary number of simultaneous jobs, but it is generally # impolite to hit a webserver with *too* many simultaneous connections :) -PARALLEL_JOBS=10 +PARALLEL_JOBS=1 exit_trap() { local lc="$BASH_COMMAND" rc=$? diff --git a/maintainers/scripts/update.nix b/maintainers/scripts/update.nix index 60c6113bf70..7c45e148e82 100755 --- a/maintainers/scripts/update.nix +++ b/maintainers/scripts/update.nix @@ -2,6 +2,7 @@ , maintainer ? null , path ? null , max-workers ? null +, include-overlays ? false , keep-going ? null }: @@ -20,9 +21,7 @@ let in [x] ++ nubOn f xs; - pkgs = import ./../../default.nix { - overlays = []; - }; + pkgs = import ./../../default.nix (if include-overlays then { } else { overlays = []; }); packagesWith = cond: return: set: nubOn (pkg: pkg.updateScript) @@ -105,7 +104,7 @@ let to run all update scripts for all packages that lists \`garbas\` as a maintainer and have \`updateScript\` defined, or: - % nix-shell maintainers/scripts/update.nix --argstr package garbas + % nix-shell maintainers/scripts/update.nix --argstr package gnome3.nautilus to run update script for specific package, or diff --git a/maintainers/team-list.nix b/maintainers/team-list.nix new file mode 100644 index 00000000000..7efff7f45ec --- /dev/null +++ b/maintainers/team-list.nix @@ -0,0 +1,42 @@ +/* List of maintainer teams. + name = { + # Required + members = [ maintainer1 maintainer2 ]; + scope = "Maintain foo packages."; + }; + + where + + - `members` is the list of maintainers belonging to the group, + - `scope` describes the scope of the group. + + More fields may be added in the future. + + Please keep the list alphabetically sorted. + */ + +{ lib }: +with lib.maintainers; { + freedesktop = { + members = [ jtojnar worldofpeace ]; + scope = "Maintain Freedesktop.org packages for graphical desktop."; + }; + + gnome = { + members = [ + hedning + jtojnar + worldofpeace + ]; + scope = "Maintain GNOME desktop environment and platform."; + }; + + podman = { + members = [ + saschagrunert + vdemeester + zowoq + ]; + scope = "Maintain podman related packages."; + }; +} diff --git a/nixos/doc/manual/configuration/abstractions.xml b/nixos/doc/manual/configuration/abstractions.xml index 5bf0635cc1a..df9ff2615e1 100644 --- a/nixos/doc/manual/configuration/abstractions.xml +++ b/nixos/doc/manual/configuration/abstractions.xml @@ -11,50 +11,46 @@ { = - [ { hostName = "example.org"; - documentRoot = "/webroot"; + { "blog.example.org" = { + documentRoot = "/webroot/blog.example.org"; adminAddr = "alice@example.org"; - enableUserDir = true; - } - { hostName = "example.org"; - documentRoot = "/webroot"; + forceSSL = true; + enableACME = true; + enablePHP = true; + }; + "wiki.example.org" = { + documentRoot = "/webroot/wiki.example.org"; adminAddr = "alice@example.org"; - enableUserDir = true; - enableSSL = true; - sslServerCert = "/root/ssl-example-org.crt"; - sslServerKey = "/root/ssl-example-org.key"; - } - ]; + forceSSL = true; + enableACME = true; + enablePHP = true; + }; + }; } It defines two virtual hosts with nearly identical configuration; the only - difference is that the second one has SSL enabled. To prevent this + difference is the document root directories. To prevent this duplication, we can use a let: let - exampleOrgCommon = - { hostName = "example.org"; - documentRoot = "/webroot"; - adminAddr = "alice@example.org"; - enableUserDir = true; + commonConfig = + { adminAddr = "alice@example.org"; + forceSSL = true; + enableACME = true; }; in { = - [ exampleOrgCommon - (exampleOrgCommon // { - enableSSL = true; - sslServerCert = "/root/ssl-example-org.crt"; - sslServerKey = "/root/ssl-example-org.key"; - }) - ]; + { "blog.example.org" = (commonConfig // { documentRoot = "/webroot/blog.example.org"; }); + "wiki.example.org" = (commonConfig // { documentRoot = "/webroot/wiki.example.com"; }); + }; } - The let exampleOrgCommon = ... - defines a variable named exampleOrgCommon. The + The let commonConfig = ... + defines a variable named commonConfig. The // operator merges two attribute sets, so the configuration of the second virtual host is the set - exampleOrgCommon extended with the SSL options. + commonConfig extended with the document root option.
@@ -63,13 +59,13 @@ in { = - let exampleOrgCommon = ...; in - [ exampleOrgCommon - (exampleOrgCommon // { ... }) - ]; + let commonConfig = ...; in + { "blog.example.org" = (commonConfig // { ... }) + "wiki.example.org" = (commonConfig // { ... }) + }; } - but not { let exampleOrgCommon = ...; in + but not { let commonConfig = ...; in ...; } since attributes (as opposed to attribute values) are not expressions. @@ -77,80 +73,29 @@ in Functions provide another method of abstraction. For instance, suppose that we want to generate lots of different virtual hosts, - all with identical configuration except for the host name. This can be done + all with identical configuration except for the document root. This can be done as follows: { = let - makeVirtualHost = name: - { hostName = name; - documentRoot = "/webroot"; + makeVirtualHost = webroot: + { documentRoot = webroot; adminAddr = "alice@example.org"; + forceSSL = true; + enableACME = true; }; in - [ (makeVirtualHost "example.org") - (makeVirtualHost "example.com") - (makeVirtualHost "example.gov") - (makeVirtualHost "example.nl") - ]; + { "example.org" = (makeVirtualHost "/webroot/example.org"); + "example.com" = (makeVirtualHost "/webroot/example.com"); + "example.gov" = (makeVirtualHost "/webroot/example.gov"); + "example.nl" = (makeVirtualHost "/webroot/example.nl"); + }; } Here, makeVirtualHost is a function that takes a single - argument name and returns the configuration for a virtual + argument webroot and returns the configuration for a virtual host. That function is then called for several names to produce the list of virtual host configurations. - - - We can further improve on this by using the function map, - which applies another function to every element in a list: - -{ - = - let - makeVirtualHost = ...; - in map makeVirtualHost - [ "example.org" "example.com" "example.gov" "example.nl" ]; -} - - (The function map is called a higher-order - function because it takes another function as an argument.) - - - - What if you need more than one argument, for instance, if we want to use a - different documentRoot for each virtual host? Then we can - make makeVirtualHost a function that takes a - set as its argument, like this: - -{ - = - let - makeVirtualHost = { name, root }: - { hostName = name; - documentRoot = root; - adminAddr = "alice@example.org"; - }; - in map makeVirtualHost - [ { name = "example.org"; root = "/sites/example.org"; } - { name = "example.com"; root = "/sites/example.com"; } - { name = "example.gov"; root = "/sites/example.gov"; } - { name = "example.nl"; root = "/sites/example.nl"; } - ]; -} - - But in this case (where every root is a subdirectory of - /sites named after the virtual host), it would have been - shorter to define makeVirtualHost as - -makeVirtualHost = name: - { hostName = name; - documentRoot = "/sites/${name}"; - adminAddr = "alice@example.org"; - }; - - Here, the construct ${...} - allows the result of an expression to be spliced into a string. - diff --git a/nixos/doc/manual/configuration/config-file.xml b/nixos/doc/manual/configuration/config-file.xml index eadafb94b8f..7ccb5b3664e 100644 --- a/nixos/doc/manual/configuration/config-file.xml +++ b/nixos/doc/manual/configuration/config-file.xml @@ -27,7 +27,7 @@ { = true; = "alice@example.org"; - = "/webroot"; + services.httpd.virtualHosts.localhost.documentRoot = "/webroot"; } defines a configuration with three option definitions that together enable @@ -50,7 +50,11 @@ httpd = { enable = true; adminAddr = "alice@example.org"; - documentRoot = "/webroot"; + virtualHosts = { + localhost = { + documentRoot = "/webroot"; + }; + }; }; }; } diff --git a/nixos/doc/manual/configuration/configuration.xml b/nixos/doc/manual/configuration/configuration.xml index 5961209bc13..507d28814ea 100644 --- a/nixos/doc/manual/configuration/configuration.xml +++ b/nixos/doc/manual/configuration/configuration.xml @@ -21,7 +21,6 @@ - diff --git a/nixos/doc/manual/configuration/declarative-packages.xml b/nixos/doc/manual/configuration/declarative-packages.xml index 5fb3bcb9f8f..cd84d1951d2 100644 --- a/nixos/doc/manual/configuration/declarative-packages.xml +++ b/nixos/doc/manual/configuration/declarative-packages.xml @@ -19,6 +19,12 @@ nixos-rebuild switch. + + + Some packages require additional global configuration such as D-Bus or systemd service registration so adding them to might not be sufficient. You are advised to check the list of options whether a NixOS module for the package does not exist. + + + You can get a list of the available packages as follows: diff --git a/nixos/doc/manual/configuration/luks-file-systems.xml b/nixos/doc/manual/configuration/luks-file-systems.xml index 8a2b107e0ee..d3007843d68 100644 --- a/nixos/doc/manual/configuration/luks-file-systems.xml +++ b/nixos/doc/manual/configuration/luks-file-systems.xml @@ -37,4 +37,38 @@ Enter passphrase for /dev/disk/by-uuid/3f6b0024-3a44-4fde-a43a-767b872abe5d: *** on an encrypted partition, it is necessary to add the following grub option: = true; +
+ FIDO2 + + + NixOS also supports unlocking your LUKS-Encrypted file system using a FIDO2 compatible token. In the following example, we will create a new FIDO2 credential + and add it as a new key to our existing device /dev/sda2: + + +# export FIDO2_LABEL="/dev/sda2 @ $HOSTNAME" +# fido2luks credential "$FIDO2_LABEL" +f1d00200108b9d6e849a8b388da457688e3dd653b4e53770012d8f28e5d3b269865038c346802f36f3da7278b13ad6a3bb6a1452e24ebeeaa24ba40eef559b1b287d2a2f80b7 + +# fido2luks -i add-key /dev/sda2 f1d00200108b9d6e849a8b388da457688e3dd653b4e53770012d8f28e5d3b269865038c346802f36f3da7278b13ad6a3bb6a1452e24ebeeaa24ba40eef559b1b287d2a2f80b7 +Password: +Password (again): +Old password: +Old password (again): +Added to key to device /dev/sda2, slot: 2 + + + To ensure that this file system is decrypted using the FIDO2 compatible key, add the following to configuration.nix: + +boot.initrd.luks.fido2Support = true; +boot.initrd.luks.devices."/dev/sda2".fido2.credential = "f1d00200108b9d6e849a8b388da457688e3dd653b4e53770012d8f28e5d3b269865038c346802f36f3da7278b13ad6a3bb6a1452e24ebeeaa24ba40eef559b1b287d2a2f80b7"; + + + You can also use the FIDO2 passwordless setup, but for security reasons, you might want to enable it only when your device is PIN protected, such as Trezor. + + +boot.initrd.luks.devices."/dev/sda2".fido2.passwordLess = true; + + +
+ diff --git a/nixos/doc/manual/configuration/modularity.xml b/nixos/doc/manual/configuration/modularity.xml index 7ad0ae80a48..532a2c615e4 100644 --- a/nixos/doc/manual/configuration/modularity.xml +++ b/nixos/doc/manual/configuration/modularity.xml @@ -36,6 +36,7 @@ { = true; = true; = true; + = [ pkgs.vim ]; } Note that both configuration.nix and diff --git a/nixos/doc/manual/configuration/network-manager.xml b/nixos/doc/manual/configuration/network-manager.xml index d103ee24978..3953e0ffe85 100644 --- a/nixos/doc/manual/configuration/network-manager.xml +++ b/nixos/doc/manual/configuration/network-manager.xml @@ -28,17 +28,21 @@ nmtui (curses-based terminal user interface). See their manual pages for details on their usage. Some desktop environments (GNOME, KDE) have their own configuration tools for NetworkManager. On XFCE, there is - no configuration tool for NetworkManager by default: by adding - networkmanagerapplet to the list of system packages, the - graphical applet will be installed and will launch automatically when XFCE is - starting (and will show in the status tray). + no configuration tool for NetworkManager by default: by enabling , the + graphical applet will be installed and will launch automatically when the graphical session is started. networking.networkmanager and networking.wireless - (WPA Supplicant) cannot be enabled at the same time: you can still connect - to the wireless networks using NetworkManager. + (WPA Supplicant) can be used together if desired. To do this you need to instruct + NetworkManager to ignore those interfaces like: + + = [ + "*" "except:type:wwan" "except:type:gsm" +]; + + Refer to the option description for the exact syntax and references to external documentation. diff --git a/nixos/doc/manual/configuration/x-windows.xml b/nixos/doc/manual/configuration/x-windows.xml index 55ad9fe6e65..06dd7c8bfb9 100644 --- a/nixos/doc/manual/configuration/x-windows.xml +++ b/nixos/doc/manual/configuration/x-windows.xml @@ -85,11 +85,14 @@ = "none+i3"; - And, finally, to enable auto-login for a user johndoe: + Every display manager in NixOS supports auto-login, here is an example + using lightdm for a user alice: - = true; - = "johndoe"; + = true; + = true; + = "alice"; + The options are named identically for all other display managers. diff --git a/nixos/doc/manual/configuration/xfce.xml b/nixos/doc/manual/configuration/xfce.xml index 027828bb936..ebf1f493c5c 100644 --- a/nixos/doc/manual/configuration/xfce.xml +++ b/nixos/doc/manual/configuration/xfce.xml @@ -9,44 +9,32 @@ = true; = "xfce"; -}; - Optionally, compton can be enabled for nice graphical + Optionally, picom can be enabled for nice graphical effects, some example settings: -services.compton = { - enable = true; - fade = true; - inactiveOpacity = "0.9"; - shadow = true; - fadeDelta = 4; +services.picom = { + enable = true; + fade = true; + inactiveOpacity = "0.9"; + shadow = true; + fadeDelta = 4; }; Some Xfce programs are not installed automatically. To install them manually (system wide), put them into your - . + from pkgs.xfce. - - Thunar Volume Support + + Thunar Plugins - To enable Thunar volume support, put - - = true; - - into your configuration.nix. - - - - Polkit Authentication Agent - - There is no authentication agent automatically installed alongside Xfce. To - allow mounting of local (non-removable) filesystems, you will need to - install one. Installing polkit_gnome, a rebuild, logout - and login did the trick. + If you'd like to add extra plugins to Thunar, add them to + . + You shouldn't just add them to . diff --git a/nixos/doc/manual/development/option-types.xml b/nixos/doc/manual/development/option-types.xml index 8fcbb627342..957349ad181 100644 --- a/nixos/doc/manual/development/option-types.xml +++ b/nixos/doc/manual/development/option-types.xml @@ -257,14 +257,68 @@ A set of sub options o. - o can be an attribute set or a function - returning an attribute set. Submodules are used in composed types to - create modular options. Submodule are detailed in + o can be an attribute set, a function + returning an attribute set, or a path to a file containing such a 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 . + + + types.submoduleWith { + modules, + specialArgs ? {}, + shorthandOnlyDefinesConfig ? false } + + + + Like types.submodule, but more flexible and with better defaults. + It has parameters + + + modules + A list of modules to use by default for this submodule type. This gets combined + with all option definitions to build the final list of modules that will be included. + + Only options defined with this argument are included in rendered documentation. + + + + specialArgs + An attribute set of extra arguments to be passed to the module functions. + The option _module.args should be used instead + for most arguments since it allows overriding. specialArgs should only be + used for arguments that can't go through the module fixed-point, because of + infinite recursion or other problems. An example is overriding the + lib argument, because lib itself is used + to define _module.args, which makes using + _module.args to define it impossible. + + + shorthandOnlyDefinesConfig + Whether definitions of this type should default to the config + section of a module (see ) if it is an attribute + set. Enabling this only has a benefit when the submodule defines an option named + config or options. In such a case it would + allow the option to be set with the-submodule.config = "value" + instead of requiring the-submodule.config.config = "value". + This is because only when modules don't set the + config or options keys, all keys are interpreted + as option definitions in the config section. Enabling this option + implicitly puts all attributes in the config section. + + + With this option enabled, defining a non-config section requires + using a function: the-submodule = { ... }: { options = { ... }; }. + + + + + @@ -298,6 +352,36 @@ An attribute set of where all the values are of t type. Multiple definitions result in the joined attribute set. + + This type is strict in its values, which in turn + means attributes cannot depend on other attributes. See + types.lazyAttrsOf for a lazy version. + + + + + + + types.lazyAttrsOf t + + + + An attribute set of where all the values are of + t type. Multiple definitions result in the + joined attribute set. This is the lazy version of types.attrsOf + , allowing attributes to depend on each other. + + This version does not fully support conditional definitions! With an + option foo of this type and a definition + foo.attr = lib.mkIf false 10, evaluating + foo ? attr will return true + even though it should be false. Accessing the value will then throw + an error. For types t that have an + emptyValue defined, that value will be returned + instead of throwing an error. So if the type of foo.attr + was lazyAttrsOf (nullOr int), null + would be returned instead for the same mkIf false definition. + diff --git a/nixos/doc/manual/development/releases.xml b/nixos/doc/manual/development/releases.xml index 9371af9984d..cc0ec78cc74 100755 --- a/nixos/doc/manual/development/releases.xml +++ b/nixos/doc/manual/development/releases.xml @@ -71,8 +71,9 @@ Update versionSuffix in - nixos/release.nix, use git log - --format=%an|wc -l to get the commit count + nixos/release.nix, use + git rev-list --count 17.09-beta + to get the commit count. @@ -187,7 +188,7 @@ - Update "Chapter 4. Upgrading NixOS" section of the manual to match + Update "Chapter 4. Upgrading NixOS" section of the manual to match new stable release version. @@ -236,6 +237,10 @@ introduced to their role, making it easier to pass on knowledge and experience. + + Release managers for the current NixOS release are tracked by GitHub team + @NixOS/nixos-release-managers. + A release manager's role and responsibilities are: diff --git a/nixos/doc/manual/development/replace-modules.xml b/nixos/doc/manual/development/replace-modules.xml index 7b103c36d90..b4a466e2294 100644 --- a/nixos/doc/manual/development/replace-modules.xml +++ b/nixos/doc/manual/development/replace-modules.xml @@ -6,8 +6,8 @@ Replace Modules - Modules that are imported can also be disabled. The option declarations and - config implementation of a disabled module will be ignored, allowing another + Modules that are imported can also be disabled. The option declarations, + config implementation and the imports of a disabled module will be ignored, allowing another to take it's place. This can be used to import a set of modules from another channel while keeping the rest of the system on a stable release. diff --git a/nixos/doc/manual/development/writing-nixos-tests.xml b/nixos/doc/manual/development/writing-nixos-tests.xml index 24efd2e3273..e5a887c18c7 100644 --- a/nixos/doc/manual/development/writing-nixos-tests.xml +++ b/nixos/doc/manual/development/writing-nixos-tests.xml @@ -419,4 +419,23 @@ machine.wait_for_unit("xautolock.service", "x-session-user") wait_for_unit, start_job and stop_job. + + + For faster dev cycles it's also possible to disable the code-linters (this shouldn't + be commited though): + +import ./make-test-python.nix { + skipLint = true; + machine = + { config, pkgs, ... }: + { configuration… + }; + + testScript = + '' + Python code… + ''; +} + + diff --git a/nixos/doc/manual/installation/installing-behind-a-proxy.xml b/nixos/doc/manual/installation/installing-behind-a-proxy.xml index 8f9baff44b5..c1ef638e876 100644 --- a/nixos/doc/manual/installation/installing-behind-a-proxy.xml +++ b/nixos/doc/manual/installation/installing-behind-a-proxy.xml @@ -40,7 +40,7 @@ networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; If you are switching networks with different proxy configurations, use the - nesting.clone option in + specialisation option in configuration.nix to switch proxies at runtime. Refer to for more information. diff --git a/nixos/doc/manual/installation/installing.xml b/nixos/doc/manual/installation/installing.xml index 4041b4ad163..0dbfb39c32b 100644 --- a/nixos/doc/manual/installation/installing.xml +++ b/nixos/doc/manual/installation/installing.xml @@ -24,8 +24,7 @@ - The NixOS manual is available on virtual console 8 (press Alt+F8 to access) - or by running nixos-help. + The NixOS manual is available by running nixos-help. diff --git a/nixos/doc/manual/installation/upgrading.xml b/nixos/doc/manual/installation/upgrading.xml index 8d3f35b7c26..92864cf2557 100644 --- a/nixos/doc/manual/installation/upgrading.xml +++ b/nixos/doc/manual/installation/upgrading.xml @@ -120,12 +120,17 @@ nixos https://nixos.org/channels/nixos-unstable to configuration.nix: = true; + = true; This enables a periodically executed systemd service named - nixos-upgrade.service. It runs nixos-rebuild - switch --upgrade to upgrade NixOS to the latest version in the - current channel. (To see when the service runs, see systemctl - list-timers.) You can also specify a channel explicitly, e.g. + nixos-upgrade.service. If the allowReboot + option is false, it runs nixos-rebuild switch + --upgrade to upgrade NixOS to the latest version in the current + channel. (To see when the service runs, see systemctl list-timers.) + If allowReboot is true, then the + system will automatically reboot if the new generation contains a different + kernel, initrd or kernel modules. + You can also specify a channel explicitly, e.g. = https://nixos.org/channels/nixos-19.09; diff --git a/nixos/doc/manual/man-nixos-install.xml b/nixos/doc/manual/man-nixos-install.xml index 45bbd5d81ff..9255ce763ef 100644 --- a/nixos/doc/manual/man-nixos-install.xml +++ b/nixos/doc/manual/man-nixos-install.xml @@ -14,6 +14,26 @@ nixos-install + + + + + + + + + + + + + + + + + + + + @@ -35,6 +55,13 @@ path + + + + + channel + + @@ -106,6 +133,12 @@ specified in /mnt/etc/nixos/configuration.nix. + + + It installs the current channel nixos in the target channel + profile (unless is specified). + + It installs the GRUB boot loader on the device specified in the option @@ -134,6 +167,23 @@ This command accepts the following options: + + / + + Increases the level of verbosity of diagnostic messages + printed on standard error. For each Nix operation, the information + printed on standard output is well-defined; any diagnostic + information is printed on standard error, never on standard + output. + Please note that this option may be specified repeatedly. + + + + / + + Print the full build logs of nix build to stderr. + + @@ -160,11 +210,23 @@ The closure must be an appropriately configured NixOS system, with boot loader and partition configuration that fits the target host. Such a closure is typically obtained with a command such as nix-build - -I nixos-config=./configuration.nix '<nixos>' -A system + -I nixos-config=./configuration.nix '<nixpkgs/nixos>' -A system --no-out-link + + + + + + + If this option is provided, do not copy the current + nixos channel to the target host. Instead, use the + specified derivation. + + + diff --git a/nixos/doc/manual/man-nixos-option.xml b/nixos/doc/manual/man-nixos-option.xml index b82f3125609..b921386d0df 100644 --- a/nixos/doc/manual/man-nixos-option.xml +++ b/nixos/doc/manual/man-nixos-option.xml @@ -14,12 +14,16 @@ nixos-option + - path + + + + - + path @@ -45,6 +49,15 @@ This command accepts the following options: + + + + + + Print all the values at or below the specified path recursively. + + + path @@ -56,16 +69,6 @@ - - - - - - - Print the values of all options. - - - diff --git a/nixos/doc/manual/man-nixos-rebuild.xml b/nixos/doc/manual/man-nixos-rebuild.xml index 495dbc8859b..f4f663b84f0 100644 --- a/nixos/doc/manual/man-nixos-rebuild.xml +++ b/nixos/doc/manual/man-nixos-rebuild.xml @@ -77,7 +77,14 @@ builder-spec + + + + flake-uri + + + @@ -129,14 +136,17 @@ Description - This command updates the system so that it corresponds to the configuration - specified in /etc/nixos/configuration.nix. Thus, every - time you modify /etc/nixos/configuration.nix or any - NixOS module, you must run nixos-rebuild to make the - changes take effect. It builds the new system in - /nix/store, runs its activation script, and stop and - (re)starts any system services if needed. Please note that user services need - to be started manually as they aren't detected by the activation script at the moment. + This command updates the system so that it corresponds to the + configuration specified in + /etc/nixos/configuration.nix or + /etc/nixos/flake.nix. Thus, every time you + modify the configuration or any other NixOS module, you must run + nixos-rebuild to make the changes take + effect. It builds the new system in + /nix/store, runs its activation script, and + stop and (re)starts any system services if needed. Please note that + user services need to be started manually as they aren't detected + by the activation script at the moment. @@ -508,6 +518,24 @@ + + + + flake-uri[name] + + + + Build the NixOS system from the specified flake. It defaults to + the directory containing the target of the symlink + /etc/nixos/flake.nix, if it exists. The + flake must contain an output named + nixosConfigurations.name. If + name is omitted, it default to the + current host name. + + + + @@ -554,6 +582,21 @@ + + + /etc/nixos/flake.nix + + + + If this file exists, then nixos-rebuild will + use it as if the option was given. This + file may be a symlink to a flake.nix in an + actual flake; thus /etc/nixos need not be a + flake. + + + + /run/current-system diff --git a/nixos/doc/manual/man-nixos-version.xml b/nixos/doc/manual/man-nixos-version.xml index e9ad8bddcac..aada08c5b4a 100644 --- a/nixos/doc/manual/man-nixos-version.xml +++ b/nixos/doc/manual/man-nixos-version.xml @@ -12,16 +12,22 @@ - nixos-version + nixos-version - + + + + + + + Description @@ -84,12 +90,16 @@ + Options + This command accepts the following options: + + @@ -107,6 +117,21 @@ + + + + + + + + Print a JSON representation of the versions of NixOS and the + top-level configuration flake. + + + + + + diff --git a/nixos/doc/manual/man-pages.xml b/nixos/doc/manual/man-pages.xml index f5a1dd2d69f..49acfe7330b 100644 --- a/nixos/doc/manual/man-pages.xml +++ b/nixos/doc/manual/man-pages.xml @@ -6,7 +6,7 @@ EelcoDolstra Author - 2007-2019Eelco Dolstra + 2007-2020Eelco Dolstra diff --git a/nixos/doc/manual/release-notes/release-notes.xml b/nixos/doc/manual/release-notes/release-notes.xml index 444862c5739..e2913b8a535 100644 --- a/nixos/doc/manual/release-notes/release-notes.xml +++ b/nixos/doc/manual/release-notes/release-notes.xml @@ -8,6 +8,7 @@ This section lists the release notes for each stable version of NixOS and current unstable revision. + diff --git a/nixos/doc/manual/release-notes/rl-2003.xml b/nixos/doc/manual/release-notes/rl-2003.xml index 5744de96b74..8f97de24ab1 100644 --- a/nixos/doc/manual/release-notes/rl-2003.xml +++ b/nixos/doc/manual/release-notes/rl-2003.xml @@ -23,6 +23,26 @@ Support is planned until the end of October 2020, handing over to 20.09. + + Core version changes: + gcc: 8.3.0 -> 9.2.0 + glibc: 2.27 -> 2.30 + linux: 4.19 -> 5.4 + mesa: 19.1.5 -> 19.3.3 + openssl: 1.0.2u -> 1.1.1d + + + Desktop version changes: + plasma5: 5.16.5 -> 5.17.5 + kdeApplications: 19.08.2 -> 19.12.3 + gnome3: 3.32 -> 3.34 + pantheon: 5.0 -> 5.1.3 + + + + Linux kernel is updated to branch 5.4 by default (from 4.19). + + Postgresql for NixOS service now defaults to v11. @@ -36,6 +56,24 @@ quirk in the boot menu. + + + GNOME 3 has been upgraded to 3.34. Please take a look at their + Release Notes + for details. + + + + + If you enable the Pantheon Desktop Manager via + , we now default to also use + + Pantheon's newly designed greeter + . + Contrary to NixOS's usual update policy, Pantheon will receive updates during the cycle of + NixOS 20.03 when backwards compatible. + + By default zfs pools will now be trimmed on a weekly basis. @@ -52,7 +90,7 @@ nixos-option has been rewritten in C++, speeding it up, improving correctness, - and adding a option which prints all options and their values. + and adding a option which prints all options and their values recursively. @@ -68,6 +106,24 @@ services.xserver.displayManager.defaultSession = "xfce+icewm"; + + + The testing driver implementation in NixOS is now in Python make-test-python.nix. + This was done by Jacek Galowicz (@tfc), and with the + collaboration of Julian Stecklina (@blitz) and + Jana Traue (@jtraue). All documentation has been updated to use this + testing driver, and a vast majority of the 286 tests in NixOS were ported to python driver. In 20.09 the Perl driver implementation, + make-test.nix, is slated for removal. This should give users of the NixOS integration framework + a transitory period to rewrite their tests to use the Python implementation. Users of the Perl driver will see + this warning everytime they use it: + +$ warning: Perl VM tests are deprecated and will be removed for 20.09. +Please update your tests to use the python test driver. +See https://github.com/NixOS/nixpkgs/pull/71684 for details. + + API compatibility is planned to be kept for at least the next release with the perl driver. + + @@ -96,6 +152,248 @@ services.xserver.displayManager.defaultSession = "xfce+icewm"; via . + + + To use Geary you should enable instead of + just adding it to . + It was created so Geary could function properly outside of GNOME. + + + + + ./config/console.nix + + + + + ./hardware/brillo.nix + + + + + ./hardware/tuxedo-keyboard.nix + + + + + ./programs/bandwhich.nix + + + + + ./programs/bash-my-aws.nix + + + + + ./programs/liboping.nix + + + + + ./programs/traceroute.nix + + + + + ./services/backup/sanoid.nix + + + + + ./services/backup/syncoid.nix + + + + + ./services/backup/zfs-replication.nix + + + + + ./services/continuous-integration/buildkite-agents.nix + + + + + ./services/databases/victoriametrics.nix + + + + + ./services/desktops/gnome3/gnome-initial-setup.nix + + + + + ./services/desktops/neard.nix + + + + + ./services/games/openarena.nix + + + + + ./services/hardware/fancontrol.nix + + + + + ./services/mail/sympa.nix + + + + + ./services/misc/freeswitch.nix + + + + + ./services/misc/mame.nix + + + + + ./services/monitoring/do-agent.nix + + + + + ./services/monitoring/prometheus/xmpp-alerts.nix + + + + + ./services/network-filesystems/orangefs/server.nix + + + + + ./services/network-filesystems/orangefs/client.nix + + + + + ./services/networking/3proxy.nix + + + + + ./services/networking/corerad.nix + + + + + ./services/networking/go-shadowsocks2.nix + + + + + ./services/networking/ntp/openntpd.nix + + + + + ./services/networking/shorewall.nix + + + + + ./services/networking/shorewall6.nix + + + + + ./services/networking/spacecookie.nix + + + + + ./services/networking/trickster.nix + + + + + ./services/networking/v2ray.nix + + + + + ./services/networking/xandikos.nix + + + + + ./services/networking/yggdrasil.nix + + + + + ./services/web-apps/dokuwiki.nix + + + + + ./services/web-apps/gotify-server.nix + + + + + ./services/web-apps/grocy.nix + + + + + ./services/web-apps/ihatemoney + + + + + ./services/web-apps/moinmoin.nix + + + + + ./services/web-apps/trac.nix + + + + + ./services/web-apps/trilium.nix + + + + + ./services/web-apps/shiori.nix + + + + + ./services/web-servers/ttyd.nix + + + + + ./services/x11/picom.nix + + + + + ./services/x11/hardware/digimend.nix + + + + + ./services/x11/imwheel.nix + + + + + ./virtualisation/cri-o.nix + + @@ -113,6 +411,17 @@ services.xserver.displayManager.defaultSession = "xfce+icewm"; + + + The dhcpcd package + does not request IPv4 addresses for tap and bridge interfaces anymore by default. + In order to still get an address on a bridge interface, one has to disable + networking.useDHCP and explicitly enable + networking.interfaces.<name>.useDHCP on + every interface, that should get an address via DHCP. This way, dhcpcd + is configured in an explicit way about which interface to run on. + + GnuPG is now built without support for a graphical passphrase entry @@ -126,7 +435,7 @@ services.xserver.displayManager.defaultSession = "xfce+icewm"; The dynamicHosts option has been removed from the - networkd + NetworkManager module. Allowing (multiple) regular users to override host entries affecting the whole system opens up a huge attack vector. There seem to be very rare cases where this might be useful. @@ -140,7 +449,7 @@ services.xserver.displayManager.defaultSession = "xfce+icewm"; - The 99-main.network file was removed. Maching all + The 99-main.network file was removed. Matching all network interfaces caused many breakages, see #18962 and #71106. @@ -168,6 +477,12 @@ services.xserver.displayManager.defaultSession = "xfce+icewm"; SDDM, GDM, or using the startx module which uses Xinitrc. + + + The Way Cooler wayland compositor has been removed, as the project has been officially canceled. + There are no more way-cooler attribute and programs.way-cooler options. + + The BEAM package set has been deleted. You will only find there the different interpreters. @@ -176,10 +491,10 @@ services.xserver.displayManager.defaultSession = "xfce+icewm"; - There is now only one Xfce package-set and module. This means attributes, xfce4-14 - xfce4-12, and xfceUnstable all now point to the latest Xfce 4.14 - packages. And in future NixOS releases will be the latest released version of Xfce available at the - time during the releases development (if viable). + There is now only one Xfce package-set and module. This means that attributes xfce4-14 + and xfceUnstable all now point to the latest Xfce 4.14 + packages. And in the future NixOS releases will be the latest released version of Xfce available at the + time of the release's development (if viable). @@ -215,7 +530,7 @@ services.xserver.displayManager.defaultSession = "xfce+icewm"; The buildRustCrate infrastructure now produces lib outputs in addition to the out output. - This has led to drastically reduced closed sizes for some rust crates since development dependencies are now in the lib output. + This has led to drastically reduced closure sizes for some rust crates since development dependencies are now in the lib output. @@ -226,6 +541,23 @@ services.xserver.displayManager.defaultSession = "xfce+icewm"; upstream issue for more information. + + + The roundcube module has been hardened. + + + + The password of the database is not written world readable in the store any more. If database.host is set to localhost, then a unix user of the same name as the database will be created and PostreSQL peer authentication will be used, removing the need for a password. Otherwise, a password is still needed and can be provided with the new option database.passwordFile, which should be set to the path of a file containing the password and readable by the user nginx only. The database.password option is insecure and deprecated. Usage of this option will print a warning. + + + + + A random des_key is set by default in the configuration of roundcube, instead of using the hardcoded and insecure default. To ensure a clean migration, all users will be logged out when you upgrade to this release. + + + + + The packages openobex and obexftp @@ -264,6 +596,14 @@ services.xserver.displayManager.defaultSession = "xfce+icewm"; in container config. + + + The kresd services deprecates the interfaces option + in favor of the listenPlain option which requires full + systemd.socket compatible + declaration which always include a port. + + Virtual console options have been reorganized and can be found under @@ -315,6 +655,437 @@ services.xserver.displayManager.defaultSession = "xfce+icewm"; + + + The awstats module has been rewritten + to serve stats via static html pages, updated on a timer, over nginx, + instead of dynamic cgi pages over apache. + + + Minor changes will be required to migrate existing configurations. Details of the + required changes can seen by looking through the awstats + module. + + + + + The httpd module no longer provides options to support serving web content without defining a virtual host. As a + result of this the services.httpd.logPerVirtualHost + option now defaults to true instead of false. Please update your + configuration to make use of services.httpd.virtualHosts. + + + The services.httpd.virtualHosts.<name> + option has changed type from a list of submodules to an attribute set of submodules, better matching + services.nginx.virtualHosts.<name>. + + + This change comes with the addition of the following options which mimic the functionality of their nginx counterparts: + services.httpd.virtualHosts.<name>.addSSL, + services.httpd.virtualHosts.<name>.forceSSL, + services.httpd.virtualHosts.<name>.onlySSL, + services.httpd.virtualHosts.<name>.enableACME, + services.httpd.virtualHosts.<name>.acmeRoot, and + services.httpd.virtualHosts.<name>.useACMEHost. + + + + + For NixOS configuration options, the loaOf type has + been deprecated and will be removed in a future release. In nixpkgs, + options of this type will be changed to attrsOf + instead. If you were using one of these in your configuration, you will + see a warning suggesting what changes will be required. + + + For example, users.users is a + loaOf option that is commonly used as follows: + +users.users = + [ { name = "me"; + description = "My personal user."; + isNormalUser = true; + } + ]; + + This should be rewritten by removing the list and using the + value of name as the name of the attribute set: + +users.users.me = + { description = "My personal user."; + isNormalUser = true; + }; + + + + For more information on this change have look at these links: + issue #1800, + PR #63103. + + + + + For NixOS modules, the types types.submodule and types.submoduleWith now support + paths as allowed values, similar to how imports supports paths. + Because of this, if you have a module that defines an option of type + either (submodule ...) path, it will break since a path + is now treated as the first type instead of the second. To fix this, change + the type to either path (submodule ...). + + + + + The Buildkite + Agent module and corresponding packages have been updated to + 3.x, and to support multiple instances of the agent running at the + same time. This means you will have to rename + services.buildkite-agent to + services.buildkite-agents.<name>. Furthermore, + the following options have been changed: + + + + + services.buildkite-agent.meta-data has been renamed to + services.buildkite-agents.<name>.tags, + to match upstreams naming for 3.x. + Its type has also changed - it now accepts an attrset of strings. + + + + + Theservices.buildkite-agent.openssh.publicKeyPath option + has been removed, as it's not necessary to deploy public keys to clone private + repositories. + + + + + services.buildkite-agent.openssh.privateKeyPath + has been renamed to + buildkite-agents.<name>.privateSshKeyPath, + as the whole openssh now only contained that single option. + + + + + services.buildkite-agents.<name>.shell + has been introduced, allowing to specify a custom shell to be used. + + + + + + + The citrix_workspace_19_3_0 package has been removed as + it will be EOLed within the lifespan of 20.03. For further information, + please refer to the support and maintenance information from upstream. + + + + + The gcc5 and gfortran5 packages have been removed. + + + + + The module has been removed. + It was only intended for use in internal NixOS tests, and gave the false impression + of it being a special display manager when it's actually LightDM. + Please use the options instead, + or any other display manager in NixOS as they all support auto-login. If you used this module specifically + because it permitted root auto-login you can override the lightdm-autologin pam module like: + +security.pam.services.lightdm-autologin.text = lib.mkForce '' + auth requisite pam_nologin.so + auth required pam_succeed_if.so quiet + auth required pam_permit.so + + account include lightdm + + password include lightdm + + session include lightdm +''; + + The difference is the: + +auth required pam_succeed_if.so quiet + + line, where default it's: + +auth required pam_succeed_if.so uid >= 1000 quiet + + not permitting users with uid's below 1000 (like root). + All other display managers in NixOS are configured like this. + + + + + There have been lots of improvements to the Mailman module. As + a result, + + + + + The + option has been renamed to . + + + + + The + option has been removed. This is because having an option + for the Hyperkitty API key meant that the API key would be + stored in the world-readable Nix store, which was a + security vulnerability. A new Hyperkitty API key will be + generated the first time the new Hyperkitty service is run, + and it will then be persisted outside of the Nix store. To + continue using Hyperkitty, you must set to + true. + + + + + Additionally, some Postfix configuration must now be set + manually instead of automatically by the Mailman module: + + = [ "hash:/var/lib/mailman/data/postfix_domains" ]; +.transport_maps = [ "hash:/var/lib/mailman/data/postfix_lmtp" ]; +.local_recipient_maps = [ "hash:/var/lib/mailman/data/postfix_lmtp" ]; + + This is because some users may want to include other values + in these lists as well, and this was not possible if they + were set automatically by the Mailman module. It would not + have been possible to just concatenate values from multiple + modules each setting the values they needed, because the + order of elements in the list is significant. + + + + + + The LLVM versions 3.5, 3.9 and 4 (including the corresponding CLang versions) have been dropped. + + + + The option has + been replaced by . + The new option allows better control of the IPv6 temporary addresses, + including completely disabling them for interfaces where they are not + needed. + + + + + Rspamd was updated to version 2.2. Read + + the upstream migration notes carefully. Please be especially + aware that some modules were removed and the default Bayes backend is + now Redis. + + + + + The *psu versions of oraclejdk8 have been removed + as they aren't provided by upstream anymore. + + + + + The module has been removed + as it used the deprecated version of dnscrypt-proxy. We've added + to use the supported version. + This module supports configuration via the Nix attribute set + , or by passing a TOML configuration file via + . + +# Example configuration: +services.dnscrypt-proxy2.enable = true; +services.dnscrypt-proxy2.settings = { + listen_addresses = [ "127.0.0.1:43" ]; + sources.public-resolvers = { + urls = [ "https://download.dnscrypt.info/resolvers-list/v2/public-resolvers.md" ]; + cache_file = "public-resolvers.md"; + minisign_key = "RWQf6LRCGA9i53mlYecO4IzT51TGPpvWucNSCh1CBM0QTaLn73Y7GFO3"; + refresh_delay = 72; + }; +}; + +services.dnsmasq.enable = true; +services.dnsmasq.servers = [ "127.0.0.1#43" ]; + + + + + + qesteidutil has been deprecated in favor of qdigidoc. + + + + + sqldeveloper_18 has been removed as it's not maintained anymore, + sqldeveloper has been updated to version 19.4. + Please note that this means that this means that the oraclejdk is now + required. For further information please read the + release notes. + + + + + Haskell env and shellFor dev shell environments now organized dependencies the same way as regular builds. + In particular, rather than receiving all the different lists of dependencies master together as one big lists, and then partitioning into Haskell and non-Hakell dependencies, they work from the original many different dependency parameters and don't need to algorithmically partition anything. + + + This means that if you incorrectly categorize a dependency, e.g. non-Haskell library dependency as a buildDepends or run-time Haskell dependency as a setupDepends, whereas things would have worked before they may not work now. + + + + + The gcc-snapshot-package has been removed. It's marked as broken for >2 years and used to point + to a fairly old snapshot from the gcc7-branch. + + + + + The nixos-build-vms8 + -script now uses the python test-driver. + + + + + The riot-web package now accepts configuration overrides as an attribute set instead of a string. + A formerly used JSON configuration can be converted to an attribute set with builtins.fromJSON. + + + The new default configuration also disables automatic guest account registration and analytics to improve privacy. + The previous behavior can be restored by setting config.riot-web.conf = { disable_guests = false; piwik = true; }. + + + + + Stand-alone usage of Upower now requires + instead of just installing into + . + + + + + nextcloud has been updated to v18.0.2. This means + that users from NixOS 19.09 can't upgrade directly since you can only move one version + forward and 19.09 uses v16.0.8. + + + To provide a safe upgrade-path and to circumvent similar issues in the future, the following + measures were taken: + + + + The pkgs.nextcloud-attribute has been removed and replaced with + versioned attributes (currently pkgs.nextcloud17 and + pkgs.nextcloud18). With this change major-releases can be backported + without breaking stuff and to make upgrade-paths easier. + + + + + Existing setups will be detected using + system.stateVersion: by default, + nextcloud17 will be used, but will raise a warning which notes + that after that deploy it's recommended to update to the latest stable version + (nextcloud18) by declaring the newly introduced setting + services.nextcloud.package. + + + + + Users with an overlay (e.g. to use nextcloud at version + v18 on 19.09) will get an evaluation error + by default. This is done to ensure that our + package-option doesn't select an + older version by accident. It's recommended to use pkgs.nextcloud18 + or to set package to + pkgs.nextcloud explicitly. + + + + + + + Please note that if you're coming from 19.03 or older, you have + to manually upgrade to 19.09 first to upgrade your server + to Nextcloud v16. + + + + + + Hydra has gained a massive performance improvement due to + some database schema + changes by adding several IDs and better indexing. However, it's necessary + to upgrade Hydra in multiple steps: + + + + At first, an older version of Hydra needs to be deployed which adds those + (nullable) columns. When having set stateVersion + to a value older than 20.03, this package will be selected + by default from the module when upgrading. Otherwise, the package can be deployed using + the following config: +{ pkgs, ... }: { + services.hydra.package = pkgs.hydra-migration; +} + + + + + Automatically fill the newly added ID columns on the server by running the following + command: + +$ hydra-backfill-ids + + + Please note that this process can take a while depending on your database-size! + + + + + + Deploy a newer version of Hydra to activate the DB optimizations. This can be done by + using hydra-unstable. This package already includes + flake-support and is + therefore compiled against pkgs.nixFlakes. + + + If your stateVersion is set to + 20.03 or greater, hydra-unstable will be used + automatically! This will break your setup if you didn't run the migration. + + + Please note that Hydra is currently not available with nixStable + as this doesn't compile anymore. + + + + + + pkgs.hydra has been removed to ensure a graceful database-migration + using the dedicated package-attributes. If you still have pkgs.hydra + defined in e.g. an overlay, an assertion error will be thrown. To circumvent this, + you need to set to pkgs.hydra + explicitly and make sure you know what you're doing! + + + + + + + The TokuDB storage engine will be disabled in mariadb 10.5. It is recommended to switch + to RocksDB. See also TokuDB. + + @@ -332,7 +1103,8 @@ services.xserver.displayManager.defaultSession = "xfce+icewm"; The nginx web server previously started its master process as root - privileged, then ran worker processes as a less privileged identity user. + privileged, then ran worker processes as a less privileged identity user + (the nginx user). This was changed to start all of nginx as a less privileged user (defined by services.nginx.user and services.nginx.group). As a consequence, all files that @@ -340,6 +1112,13 @@ services.xserver.displayManager.defaultSession = "xfce+icewm"; certificates and keys, etc.) must now be readable by this less privileged user/group. + + To continue to use the old approach, you can configure: + +services.nginx.appendConfig = let cfg = config.services.nginx; in ''user ${cfg.user} ${cfg.group};''; +systemd.services.nginx.serviceConfig.User = lib.mkForce "root"; + + @@ -355,6 +1134,108 @@ services.xserver.displayManager.defaultSession = "xfce+icewm"; now uses the short rather than full version string. + + + The ACME module has switched from simp-le to lego + which allows us to support DNS-01 challenges and wildcard certificates. The following options have been added: + security.acme.acceptTerms, + security.acme.certs.<name>.dnsProvider, + security.acme.certs.<name>.credentialsFile, + security.acme.certs.<name>.dnsPropagationCheck. + As well as this, the options security.acme.acceptTerms and either + security.acme.email or security.acme.certs.<name>.email + must be set in order to use the ACME module. + Certificates will be regenerated anew on the next renewal date. The credentials for simp-le are + preserved and thus it is possible to roll back to previous versions without breaking certificate + generation. + + + + + It is now possible to unlock LUKS-Encrypted file systems using a FIDO2 token + via . + + + + + Predictably named network interfaces get renamed in stage-1. This means that it is possible + to use the proper interface name for e.g. Dropbear setups. + + + For further reference, please read #68953 or the corresponding discourse thread. + + + + + The matrix-synapse-package has been updated to + v1.11.1. + Due to stricter requirements + for database configuration when using postgresql, the automated database setup + of the module has been removed to avoid any further edge-cases. + + + matrix-synapse expects postgresql-databases to have the options + LC_COLLATE and LC_CTYPE set to + 'C' which basically + instructs postgresql to ignore any locale-based preferences. + + + Depending on your setup, you need to incorporate one of the following changes in your setup to + upgrade to 20.03: + + If you use sqlite3 you don't need to do anything. + If you use postgresql on a different server, you don't need + to change anything as well since this module was never designed to configure remote databases. + + If you use postgresql and configured your synapse initially on + 19.09 or older, you simply need to enable postgresql-support + explicitly: +{ ... }: { + services.matrix-synapse = { + enable = true; + /* and all the other config you've defined here */ + }; + services.postgresql.enable = true; +} + + If you deploy a fresh matrix-synapse, you need to configure + the database yourself (e.g. by using the + services.postgresql.initialScript + option). An example for this can be found in the + documentation of the Matrix module. + + If you initially deployed your matrix-synapse on + nixos-unstable after the 19.09-release, + your database is misconfigured due to a regression in NixOS. For now, matrix-synapse will + startup with a warning, but it's recommended to reconfigure the database to set the values + LC_COLLATE and LC_CTYPE to + 'C'. + + + + + + + The systemd.network.links option is now respected + even when systemd-networkd is disabled. + This mirrors the behaviour of systemd - It's udev that parses .link files, + not systemd-networkd. + + + + + mongodb has been updated to version 3.4.24. + + + Please note that mongodb has been relicensed under their own + + sspl-license. Since it's not entirely free and not OSI-approved, + it's listed as non-free. This means that Hydra doesn't provide prebuilt + mongodb-packages and needs to be built locally. + + + + diff --git a/nixos/doc/manual/release-notes/rl-2009.xml b/nixos/doc/manual/release-notes/rl-2009.xml new file mode 100644 index 00000000000..0f22f4331f4 --- /dev/null +++ b/nixos/doc/manual/release-notes/rl-2009.xml @@ -0,0 +1,281 @@ +
+ Release 20.09 (“Nightingale”, 2020.09/??) + +
+ Highlights + + + In addition to numerous new and upgraded packages, this release has the + following highlights: + + + + + + Support is planned until the end of April 2021, handing over to 21.03. + + + + GNOME desktop environment was upgraded to 3.36, see its release notes. + + + + PHP now defaults to PHP 7.4, updated from 7.3. + + + + + Two new options, authorizedKeysCommand + and authorizedKeysCommandUser, have + been added to the openssh module. If you have AuthorizedKeysCommand + in your services.openssh.extraConfig you should + make use of these new options instead. + + + +
+ +
+ New Services + + + The following new services were added since the last release: + + + + + + + + +
+ +
+ Backward Incompatibilities + + + When upgrading from a previous release, please be aware of the following + incompatible changes: + + + + + + Grafana is now built without support for phantomjs by default. Phantomjs support has been + deprecated in Grafana + and the phantomjs project is + currently unmaintained. + It can still be enabled by providing phantomJsSupport = true to the package instanciation: +{ + services.grafana.package = pkgs.grafana.overrideAttrs (oldAttrs: rec { + phantomJsSupport = false; + }); +} + + + + + The supybot module now uses /var/lib/supybot + as its default stateDir path if stateVersion + is 20.09 or higher. It also enables number of + systemd sandboxing options + which may possibly interfere with some plugins. If this is the case you can disable the options through attributes in + . + + + + + The security.duosec.skey option, which stored a secret in the + nix store, has been replaced by a new + security.duosec.secretKeyFile + option for better security. + + + security.duosec.ikey has been renamed to + security.duosec.integrationKey. + + + + + The initrd SSH support now uses OpenSSH rather than Dropbear to + allow the use of Ed25519 keys and other OpenSSH-specific + functionality. Host keys must now be in the OpenSSH format, and at + least one pre-generated key must be specified. + + + If you used the + options, you'll get an error explaining how to convert your host + keys and migrate to the new + option. + Otherwise, if you don't have any host keys set, you'll need to + generate some; see the option + documentation for instructions. + + + + + Since this release there's an easy way to customize your PHP install to get a much smaller + base PHP with only wanted extensions enabled. See the following snippet installing a smaller PHP + with the extensions imagick, opcache and + pdo_mysql loaded: + + +environment.systemPackages = [ +(pkgs.php.buildEnv { extensions = pp: with pp; [ + imagick + opcache + pdo_mysql + ]; }) +]; + + The default php attribute hasn't lost any extensions - + the opcache extension was added there. + + All upstream PHP extensions are available under ]]>. + + + The updated php attribute is now easily customizable to your liking + by using extensions instead of writing config files or changing configure flags. + + Therefore we have removed the following configure flags: + + + PHP <literal>config</literal> flags that we don't read anymore: + config.php.argon2 + config.php.bcmath + config.php.bz2 + config.php.calendar + config.php.curl + config.php.exif + config.php.ftp + config.php.gd + config.php.gettext + config.php.gmp + config.php.imap + config.php.intl + config.php.ldap + config.php.libxml2 + config.php.libzip + config.php.mbstring + config.php.mysqli + config.php.mysqlnd + config.php.openssl + config.php.pcntl + config.php.pdo_mysql + config.php.pdo_odbc + config.php.pdo_pgsql + config.php.phpdbg + config.php.postgresql + config.php.readline + config.php.soap + config.php.sockets + config.php.sodium + config.php.sqlite + config.php.tidy + config.php.xmlrpc + config.php.xsl + config.php.zip + config.php.zlib + + + + + + Gollum received a major update to version 5.x and you may have to change + some links in your wiki when migrating from gollum 4.x. More information + can be found + here. + + + + + Deluge 2.x was added and is used as default for new NixOS + installations where stateVersion is >= 20.09. If you are upgrading from a previous + NixOS version, you can set service.deluge.package = pkgs.deluge-2_x + to upgrade to Deluge 2.x and migrate the state to the new format. + Be aware that backwards state migrations are not supported by Deluge. + + + + + + The NixOS options nesting.clone and + nesting.children have been deleted, and + replaced with named + configurations. + + + + Replace a nesting.clone entry with: + +{ +specialisation.example-sub-configuration = { + configuration = { + ... + }; +}; + + + + Replace a nesting.children entry with: + +{ +specialisation.example-sub-configuration = { + inheritParentConfig = false; + configuration = { + ... + }; +}; + + + + To switch to a specialised configuration at runtime you need to + run: + +# sudo /run/current-system/specialisation/example-sub-configuration/bin/switch-to-configuration test + + Before you would have used: + +# sudo /run/current-system/fine-tune/child-1/bin/switch-to-configuration test + + + + +
+ +
+ Other Notable Changes + + + + + The notmuch package move its emacs-related binaries and + emacs lisp files to a separate output. They're not part + of the default out output anymore - if you relied on the + notmuch-emacs-mua binary or the emacs lisp files, access them via + the notmuch.emacs output. + + + +
+
diff --git a/nixos/lib/eval-config.nix b/nixos/lib/eval-config.nix index 77490ca3762..c8824c2690d 100644 --- a/nixos/lib/eval-config.nix +++ b/nixos/lib/eval-config.nix @@ -41,6 +41,12 @@ let # default to the argument. That way this new default could propagate all # they way through, but has the last priority behind everything else. nixpkgs.system = lib.mkDefault system; + + # Stash the value of the `system` argument. When using `nesting.children` + # we want to have the same default value behavior (immediately above) + # without any interference from the user's configuration. + nixpkgs.initialSystem = system; + _module.args.pkgs = lib.mkIf (pkgs_ != null) (lib.mkForce pkgs_); }; }; @@ -55,7 +61,7 @@ in rec { args = extraArgs; specialArgs = { modulesPath = builtins.toString ../modules; } // specialArgs; - }) config options; + }) config options _module; # These are the extra arguments passed to every module. In # particular, Nixpkgs is passed through the "pkgs" argument. @@ -63,5 +69,5 @@ in rec { inherit baseModules extraModules modules; }; - inherit (config._module.args) pkgs; + inherit (_module.args) pkgs; } diff --git a/nixos/lib/make-ext4-fs.nix b/nixos/lib/make-ext4-fs.nix index f46d3990c06..627ac324cf5 100644 --- a/nixos/lib/make-ext4-fs.nix +++ b/nixos/lib/make-ext4-fs.nix @@ -64,7 +64,7 @@ pkgs.stdenv.mkDerivation { echo "copying files to image..." cptofs -t ext4 -i $img ./files/* / - + export EXT2FS_NO_MTAB_OK=yes # I have ended up with corrupted images sometimes, I suspect that happens when the build machine's disk gets full during the build. if ! fsck.ext4 -n -f $img; then echo "--- Fsck failed for EXT4 image of $bytes bytes (numInodes=$numInodes, numDataBlocks=$numDataBlocks) ---" @@ -72,21 +72,8 @@ pkgs.stdenv.mkDerivation { return 1 fi - ( - # Resizes **snugly** to its actual limits (or closer to) - free=$(dumpe2fs $img | grep '^Free blocks:') - blocksize=$(dumpe2fs $img | grep '^Block size:') - blocks=$(dumpe2fs $img | grep '^Block count:') - blocks=$((''${blocks##*:})) # format the number. - blocksize=$((''${blocksize##*:})) # format the number. - # System can't boot with 0 blocks free. - # Add 16MiB of free space - fudge=$(( 16 * 1024 * 1024 / blocksize )) - size=$(( blocks - ''${free##*:} + fudge )) - - echo "Resizing from $blocks blocks to $size blocks. (~ $((size*blocksize/1024/1024))MiB)" - EXT2FS_NO_MTAB_OK=yes resize2fs $img -f $size - ) + echo "Resizing to minimum allowed size" + resize2fs -M $img # And a final fsck, because of the previous truncating. fsck.ext4 -n -f $img diff --git a/nixos/lib/make-iso9660-image.sh b/nixos/lib/make-iso9660-image.sh index b7b1ab52a63..d4633d2c8d1 100644 --- a/nixos/lib/make-iso9660-image.sh +++ b/nixos/lib/make-iso9660-image.sh @@ -107,6 +107,7 @@ xorriso="xorriso -publisher nixos -graft-points -full-iso9660-filenames + -joliet ${isoBootFlags} ${usbBootFlags} ${efiBootFlags} diff --git a/nixos/lib/make-options-doc/default.nix b/nixos/lib/make-options-doc/default.nix index eee8f612410..772b7d3add9 100644 --- a/nixos/lib/make-options-doc/default.nix +++ b/nixos/lib/make-options-doc/default.nix @@ -86,7 +86,7 @@ let optionsList = lib.sort optionLess optionsListDesc; # Convert the list of options into an XML file. - optionsXML = pkgs.writeText "options.xml" (builtins.toXML optionsList); + optionsXML = builtins.toFile "options.xml" (builtins.toXML optionsList); optionsNix = builtins.listToAttrs (map (o: { name = o.name; value = removeAttrs o ["name" "visible" "internal"]; }) optionsList); @@ -133,6 +133,7 @@ in { optionsJSON = pkgs.runCommand "options.json" { meta.description = "List of NixOS options in JSON format"; + buildInputs = [ pkgs.brotli ]; } '' # Export list of options in different format. @@ -141,8 +142,11 @@ in { cp ${builtins.toFile "options.json" (builtins.unsafeDiscardStringContext (builtins.toJSON optionsNix))} $dst/options.json + brotli -9 < $dst/options.json > $dst/options.json.br + mkdir -p $out/nix-support echo "file json $dst/options.json" >> $out/nix-support/hydra-build-products + echo "file json-br $dst/options.json.br" >> $out/nix-support/hydra-build-products ''; # */ optionsDocBook = pkgs.runCommand "options-docbook.xml" {} '' diff --git a/nixos/lib/qemu-flags.nix b/nixos/lib/qemu-flags.nix index 774f66b4804..859d9e975fe 100644 --- a/nixos/lib/qemu-flags.nix +++ b/nixos/lib/qemu-flags.nix @@ -17,9 +17,9 @@ in else throw "Unknown QEMU serial device for system '${pkgs.stdenv.hostPlatform.system}'"; qemuBinary = qemuPkg: { - x86_64-linux = "${qemuPkg}/bin/qemu-kvm -cpu kvm64"; + x86_64-linux = "${qemuPkg}/bin/qemu-kvm -cpu host"; armv7l-linux = "${qemuPkg}/bin/qemu-system-arm -enable-kvm -machine virt -cpu host"; aarch64-linux = "${qemuPkg}/bin/qemu-system-aarch64 -enable-kvm -machine virt,gic-version=host -cpu host"; - x86_64-darwin = "${qemuPkg}/bin/qemu-kvm -cpu kvm64"; + x86_64-darwin = "${qemuPkg}/bin/qemu-kvm -cpu host"; }.${pkgs.stdenv.hostPlatform.system} or "${qemuPkg}/bin/qemu-kvm"; } diff --git a/nixos/lib/test-driver/test-driver.py b/nixos/lib/test-driver/test-driver.py index 7e575189209..07f27515990 100644 --- a/nixos/lib/test-driver/test-driver.py +++ b/nixos/lib/test-driver/test-driver.py @@ -1,13 +1,18 @@ #! /somewhere/python3 from contextlib import contextmanager, _GeneratorContextManager +from queue import Queue, Empty +from typing import Tuple, Any, Callable, Dict, Iterator, Optional, List from xml.sax.saxutils import XMLGenerator import _thread import atexit +import base64 +import codecs import os +import pathlib import ptpython.repl import pty -from queue import Queue, Empty import re +import shlex import shutil import socket import subprocess @@ -15,9 +20,6 @@ import sys import tempfile import time import unicodedata -from typing import Tuple, Any, Callable, Dict, Iterator, Optional, List -import shlex -import pathlib CHAR_TO_KEY = { "A": "shift-a", @@ -84,7 +86,7 @@ CHAR_TO_KEY = { # Forward references nr_tests: int -nr_succeeded: int +failed_tests: list log: "Logger" machines: "List[Machine]" @@ -100,10 +102,12 @@ def make_command(args: list) -> str: def create_vlan(vlan_nr: str) -> Tuple[str, str, "subprocess.Popen[bytes]", Any]: global log log.log("starting VDE switch for network {}".format(vlan_nr)) - vde_socket = os.path.abspath("./vde{}.ctl".format(vlan_nr)) + vde_socket = tempfile.mkdtemp( + prefix="nixos-test-vde-", suffix="-vde{}.ctl".format(vlan_nr) + ) pty_master, pty_slave = pty.openpty() vde_process = subprocess.Popen( - ["vde_switch", "-s", vde_socket, "--dirmode", "0777"], + ["vde_switch", "-s", vde_socket, "--dirmode", "0700"], bufsize=1, stdin=pty_slave, stdout=subprocess.PIPE, @@ -114,6 +118,7 @@ def create_vlan(vlan_nr: str) -> Tuple[str, str, "subprocess.Popen[bytes]", Any] fd.write("version\n") # TODO: perl version checks if this can be read from # an if not, dies. we could hang here forever. Fix it. + assert vde_process.stdout is not None vde_process.stdout.readline() if not os.path.exists(os.path.join(vde_socket, "ctl")): raise Exception("cannot start vde_switch") @@ -138,7 +143,7 @@ def retry(fn: Callable) -> None: class Logger: def __init__(self) -> None: self.logfile = os.environ.get("LOGFILE", "/dev/null") - self.logfile_handle = open(self.logfile, "wb") + self.logfile_handle = codecs.open(self.logfile, "wb") self.xml = XMLGenerator(self.logfile_handle, encoding="utf-8") self.queue: "Queue[Dict[str, str]]" = Queue(1000) @@ -221,7 +226,7 @@ class Machine: return path self.state_dir = create_dir("vm-state-{}".format(self.name)) - self.shared_dir = create_dir("{}/xchg".format(self.state_dir)) + self.shared_dir = create_dir("shared-xchg") self.booted = False self.connected = False @@ -382,7 +387,7 @@ class Machine: if state != require_state: raise Exception( "Expected unit ‘{}’ to to be in state ".format(unit) - + "'active' but it is in state ‘{}’".format(state) + + "'{}' but it is in state ‘{}’".format(require_state, state) ) def execute(self, command: str) -> Tuple[int, str]: @@ -395,7 +400,7 @@ class Machine: status_code_pattern = re.compile(r"(.*)\|\!EOF\s+(\d+)") while True: - chunk = self.shell.recv(4096).decode() + chunk = self.shell.recv(4096).decode(errors="ignore") match = status_code_pattern.match(chunk) if match: output += match[1] @@ -566,6 +571,41 @@ class Machine: if ret.returncode != 0: raise Exception("Cannot convert screenshot") + def copy_from_host_via_shell(self, source: str, target: str) -> None: + """Copy a file from the host into the guest by piping it over the + shell into the destination file. Works without host-guest shared folder. + Prefer copy_from_host for whenever possible. + """ + with open(source, "rb") as fh: + content_b64 = base64.b64encode(fh.read()).decode() + self.succeed( + f"mkdir -p $(dirname {target})", + f"echo -n {content_b64} | base64 -d > {target}", + ) + + def copy_from_host(self, source: str, target: str) -> None: + """Copy a file from the host into the guest via the `shared_dir` shared + among all the VMs (using a temporary directory). + """ + host_src = pathlib.Path(source) + vm_target = pathlib.Path(target) + with tempfile.TemporaryDirectory(dir=self.shared_dir) as shared_td: + shared_temp = pathlib.Path(shared_td) + host_intermediate = shared_temp / host_src.name + vm_shared_temp = pathlib.Path("/tmp/shared") / shared_temp.name + vm_intermediate = vm_shared_temp / host_src.name + + self.succeed(make_command(["mkdir", "-p", vm_shared_temp])) + if host_src.is_dir(): + shutil.copytree(host_src, host_intermediate) + else: + shutil.copy(host_src, host_intermediate) + self.succeed("sync") + self.succeed(make_command(["mkdir", "-p", vm_target.parent])) + self.succeed(make_command(["cp", "-r", vm_intermediate, vm_target])) + # Make sure the cleanup is synced into VM + self.succeed("sync") + def copy_from_vm(self, source: str, target_dir: str = "") -> None: """Copy a file from the VM (specified by an in-VM source path) to a path relative to `$out`. The file is copied via the `shared_dir` shared among @@ -576,7 +616,7 @@ class Machine: vm_src = pathlib.Path(source) with tempfile.TemporaryDirectory(dir=self.shared_dir) as shared_td: shared_temp = pathlib.Path(shared_td) - vm_shared_temp = pathlib.Path("/tmp/xchg") / shared_temp.name + vm_shared_temp = pathlib.Path("/tmp/shared") / shared_temp.name vm_intermediate = vm_shared_temp / vm_src.name intermediate = shared_temp / vm_src.name # Copy the file to the shared directory inside VM @@ -703,8 +743,10 @@ class Machine: self.shell, _ = self.shell_socket.accept() def process_serial_output() -> None: + assert self.process.stdout is not None for _line in self.process.stdout: - line = _line.decode("unicode_escape").replace("\r", "").rstrip() + # Ignore undecodable bytes that may occur in boot menus + line = _line.decode(errors="ignore").replace("\r", "").rstrip() eprint("{} # {}".format(self.name, line)) self.logger.enqueue({"msg": line, "machine": self.name}) @@ -841,23 +883,31 @@ def run_tests() -> None: machine.execute("sync") if nr_tests != 0: + nr_succeeded = nr_tests - len(failed_tests) eprint("{} out of {} tests succeeded".format(nr_succeeded, nr_tests)) - if nr_tests > nr_succeeded: + if len(failed_tests) > 0: + eprint( + "The following tests have failed:\n - {}".format( + "\n - ".join(failed_tests) + ) + ) sys.exit(1) @contextmanager def subtest(name: str) -> Iterator[None]: global nr_tests - global nr_succeeded + global failed_tests with log.nested(name): nr_tests += 1 try: yield - nr_succeeded += 1 return True except Exception as e: + failed_tests.append( + 'Test "{}" failed with error: "{}"'.format(name, str(e)) + ) log.log("error: {}".format(str(e))) return False @@ -866,7 +916,7 @@ def subtest(name: str) -> Iterator[None]: if __name__ == "__main__": log = Logger() - vlan_nrs = list(dict.fromkeys(os.environ["VLANS"].split())) + vlan_nrs = list(dict.fromkeys(os.environ.get("VLANS", "").split())) vde_sockets = [create_vlan(v) for v in vlan_nrs] for nr, vde_socket, _, _ in vde_sockets: os.environ["QEMU_VDE_SOCKET_{}".format(nr)] = vde_socket @@ -879,7 +929,7 @@ if __name__ == "__main__": exec("\n".join(machine_eval)) nr_tests = 0 - nr_succeeded = 0 + failed_tests = [] @atexit.register def clean_up() -> None: @@ -891,7 +941,7 @@ if __name__ == "__main__": machine.process.kill() for _, _, process, _ in vde_sockets: - process.kill() + process.terminate() log.close() tic = time.time() diff --git a/nixos/lib/testing-python.nix b/nixos/lib/testing-python.nix index c4eb9328b1d..3891adc1043 100644 --- a/nixos/lib/testing-python.nix +++ b/nixos/lib/testing-python.nix @@ -95,6 +95,8 @@ in rec { , makeCoverageReport ? false , enableOCR ? false , name ? "unnamed" + # Skip linting (mainly intended for faster dev cycles) + , skipLint ? false , ... } @ t: @@ -133,7 +135,7 @@ in rec { # Generate onvenience wrappers for running the test driver # interactively with the specified network, and for starting the # VMs from the command line. - driver = runCommand testDriverName + driver = let warn = if skipLint then lib.warn "Linting is disabled!" else lib.id; in warn (runCommand testDriverName { buildInputs = [ makeWrapper]; testScript = testScript'; preferLocalBuild = true; @@ -143,7 +145,9 @@ in rec { mkdir -p $out/bin echo -n "$testScript" > $out/test-script - ${python3Packages.black}/bin/black --check --diff $out/test-script + ${lib.optionalString (!skipLint) '' + ${python3Packages.black}/bin/black --check --diff $out/test-script + ''} ln -s ${testDriver}/bin/nixos-test-driver $out/bin/ vms=($(for i in ${toString vms}; do echo $i/bin/run-*-vm; done)) @@ -151,7 +155,7 @@ in rec { --add-flags "''${vms[*]}" \ ${lib.optionalString enableOCR "--prefix PATH : '${ocrProg}/bin:${imagemagick_tiff}/bin'"} \ - --run "export testScript=\"\$(cat $out/test-script)\"" \ + --run "export testScript=\"\$(${coreutils}/bin/cat $out/test-script)\"" \ --set VLANS '${toString vlans}' ln -s ${testDriver}/bin/nixos-test-driver $out/bin/nixos-run-vms wrapProgram $out/bin/nixos-run-vms \ @@ -160,7 +164,7 @@ in rec { --set tests 'start_all(); join_all();' \ --set VLANS '${toString vlans}' \ ${lib.optionalString (builtins.length vms == 1) "--set USE_SERIAL 1"} - ''; # " + ''); # " passMeta = drv: drv // lib.optionalAttrs (t ? meta) { meta = (drv.meta or {}) // t.meta; @@ -171,13 +175,13 @@ in rec { nodeNames = builtins.attrNames nodes; invalidNodeNames = lib.filter - (node: builtins.match "^[A-z_][A-z0-9_]+$" node == null) nodeNames; + (node: builtins.match "^[A-z_]([A-z0-9_]+)?$" node == null) nodeNames; in if lib.length invalidNodeNames > 0 then throw '' Cannot create machines out of (${lib.concatStringsSep ", " invalidNodeNames})! - All machines are referenced as perl variables in the testing framework which will break the + All machines are referenced as python variables in the testing framework which will break the script when special characters are used. Please stick to alphanumeric chars and underscores as separation. @@ -214,12 +218,12 @@ in rec { ''; testScript = '' - startAll; - $client->waitForUnit("multi-user.target"); + start_all() + client.wait_for_unit("multi-user.target") ${preBuild} - $client->succeed("env -i ${bash}/bin/bash ${buildrunner} /tmp/xchg/saved-env >&2"); + client.succeed("env -i ${bash}/bin/bash ${buildrunner} /tmp/xchg/saved-env >&2") ${postBuild} - $client->succeed("sync"); # flush all data before pulling the plug + client.succeed("sync") # flush all data before pulling the plug ''; vmRunCommand = writeText "vm-run" '' @@ -259,9 +263,12 @@ in rec { { ... }: { inherit require; + imports = [ + ../tests/common/auto.nix + ]; virtualisation.memorySize = 1024; services.xserver.enable = true; - services.xserver.displayManager.auto.enable = true; + test-support.displayManager.auto.enable = true; services.xserver.displayManager.defaultSession = "none+icewm"; services.xserver.windowManager.icewm.enable = true; }; @@ -270,7 +277,7 @@ in rec { machine = client; preBuild = '' - $client->waitForX; + client.wait_for_x() ''; } // args); diff --git a/nixos/lib/testing.nix b/nixos/lib/testing.nix index ae8ecd6270c..7d6a5c0a290 100644 --- a/nixos/lib/testing.nix +++ b/nixos/lib/testing.nix @@ -19,7 +19,11 @@ in rec { inherit pkgs; - testDriver = stdenv.mkDerivation { + testDriver = lib.warn '' + Perl VM tests are deprecated and will be removed for 20.09. + Please update your tests to use the python test driver. + See https://github.com/NixOS/nixpkgs/pull/71684 for details. + '' stdenv.mkDerivation { name = "nixos-test-driver"; buildInputs = [ makeWrapper perl ]; @@ -246,9 +250,12 @@ in rec { { ... }: { inherit require; + imports = [ + ../tests/common/auto.nix + ]; virtualisation.memorySize = 1024; services.xserver.enable = true; - services.xserver.displayManager.auto.enable = true; + test-support.displayManager.auto.enable = true; services.xserver.displayManager.defaultSession = "none+icewm"; services.xserver.windowManager.icewm.enable = true; }; diff --git a/nixos/lib/testing/jquery-ui.nix b/nixos/lib/testing/jquery-ui.nix index e65107a3c2f..05bd8dc2f94 100644 --- a/nixos/lib/testing/jquery-ui.nix +++ b/nixos/lib/testing/jquery-ui.nix @@ -4,7 +4,7 @@ stdenv.mkDerivation rec { name = "jquery-ui-1.11.4"; src = fetchurl { - url = "http://jqueryui.com/resources/download/${name}.zip"; + url = "https://jqueryui.com/resources/download/${name}.zip"; sha256 = "0ciyaj1acg08g8hpzqx6whayq206fvf4whksz2pjgxlv207lqgjh"; }; @@ -17,7 +17,7 @@ stdenv.mkDerivation rec { ''; meta = { - homepage = http://jqueryui.com/; + homepage = "https://jqueryui.com/"; description = "A library of JavaScript widgets and effects"; platforms = stdenv.lib.platforms.all; }; diff --git a/nixos/lib/testing/jquery.nix b/nixos/lib/testing/jquery.nix index e272f66a576..732fdb3ba87 100644 --- a/nixos/lib/testing/jquery.nix +++ b/nixos/lib/testing/jquery.nix @@ -29,7 +29,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "JavaScript library designed to simplify the client-side scripting of HTML"; - homepage = http://jquery.com/; + homepage = "http://jquery.com/"; license = licenses.mit; platforms = platforms.all; }; diff --git a/nixos/lib/utils.nix b/nixos/lib/utils.nix index a522834e429..21f4c7c6988 100644 --- a/nixos/lib/utils.nix +++ b/nixos/lib/utils.nix @@ -14,7 +14,7 @@ rec { # becomes dev-xyzzy. FIXME: slow. escapeSystemdPath = s: replaceChars ["/" "-" " "] ["-" "\\x2d" "\\x20"] - (if hasPrefix "/" s then substring 1 (stringLength s) s else s); + (removePrefix "/" s); # Returns a system path for a given shell package toShellPath = shell: diff --git a/nixos/maintainers/scripts/azure-new/.gitignore b/nixos/maintainers/scripts/azure-new/.gitignore new file mode 100644 index 00000000000..26905a86234 --- /dev/null +++ b/nixos/maintainers/scripts/azure-new/.gitignore @@ -0,0 +1 @@ +azure \ No newline at end of file diff --git a/nixos/maintainers/scripts/azure-new/README.md b/nixos/maintainers/scripts/azure-new/README.md new file mode 100644 index 00000000000..20e81c44ce5 --- /dev/null +++ b/nixos/maintainers/scripts/azure-new/README.md @@ -0,0 +1,42 @@ +# azure + +## Demo + +Here's a demo of this being used: https://asciinema.org/a/euXb9dIeUybE3VkstLWLbvhmp + +## Usage + +This is meant to be an example image that you can copy into your own +project and modify to your own needs. Notice that the example image +includes a built-in test user account, which by default uses your +`~/.ssh/id_ed25519.pub` as an `authorized_key`. + +Build and upload the image +```shell +$ ./upload-image.sh ./examples/basic/image.nix + +... ++ attr=azbasic ++ nix-build ./examples/basic/image.nix --out-link azure +/nix/store/qdpzknpskzw30vba92mb24xzll1dqsmd-azure-image +... +95.5 %, 0 Done, 0 Failed, 1 Pending, 0 Skipped, 1 Total, 2-sec Throughput (Mb/s): 932.9565 +... +/subscriptions/aff271ee-e9be-4441-b9bb-42f5af4cbaeb/resourceGroups/nixos-images/providers/Microsoft.Compute/images/azure-image-todo-makethisbetter +``` + +Take the output, boot an Azure VM: + +``` +img="/subscriptions/.../..." # use output from last command +./boot-vm.sh "${img}" +... +=> booted +``` + +## Future Work + +1. If the user specifies a hard-coded user, then the agent could be removed. + Probably has security benefits; definitely has closure-size benefits. + (It's likely the VM will need to be booted with a special flag. See: + https://github.com/Azure/azure-cli/issues/12775 for details.) diff --git a/nixos/maintainers/scripts/azure-new/boot-vm.sh b/nixos/maintainers/scripts/azure-new/boot-vm.sh new file mode 100755 index 00000000000..1ce3a5f9db1 --- /dev/null +++ b/nixos/maintainers/scripts/azure-new/boot-vm.sh @@ -0,0 +1,36 @@ +#!/usr/bin/env bash +set -euo pipefail +set -x + +image="${1}" +location="westus2" +group="nixos-test-vm" +vm_size="Standard_D2s_v3"; os_size=42; + +# ensure group +az group create --location "westus2" --name "${group}" +group_id="$(az group show --name "${group}" -o tsv --query "[id]")" + +# (optional) identity +if ! az identity show -n "${group}-identity" -g "${group}" &>/dev/stderr; then + az identity create --name "${group}-identity" --resource-group "${group}" +fi + +# (optional) role assignment, to the resource group, bad but not really great alternatives +identity_id="$(az identity show --name "${group}-identity" --resource-group "${group}" -o tsv --query "[id]")" +principal_id="$(az identity show --name "${group}-identity" --resource-group "${group}" -o tsv --query "[principalId]")" +until az role assignment create --assignee "${principal_id}" --role "Owner" --scope "${group_id}"; do sleep 1; done + +# boot vm +az vm create \ + --name "${group}-vm" \ + --resource-group "${group}" \ + --assign-identity "${identity_id}" \ + --size "${vm_size}" \ + --os-disk-size-gb "${os_size}" \ + --image "${image}" \ + --admin-username "${USER}" \ + --location "westus2" \ + --storage-sku "Premium_LRS" \ + --ssh-key-values "$(ssh-add -L)" + diff --git a/nixos/maintainers/scripts/azure-new/common.sh b/nixos/maintainers/scripts/azure-new/common.sh new file mode 100644 index 00000000000..eb87c3e0650 --- /dev/null +++ b/nixos/maintainers/scripts/azure-new/common.sh @@ -0,0 +1,7 @@ +export group="${AZURE_RESOURCE_GROUP:-"azure"}" +export location="${AZURE_LOCATION:-"westus2"}" + +img_file=$(echo azure/*.vhd) +img_name="$(basename "${img_file}")" +img_name="${img_name%".vhd"}" +export img_name="${img_name//[._]/-}" diff --git a/nixos/maintainers/scripts/azure-new/examples/basic/image.nix b/nixos/maintainers/scripts/azure-new/examples/basic/image.nix new file mode 100644 index 00000000000..74b12815158 --- /dev/null +++ b/nixos/maintainers/scripts/azure-new/examples/basic/image.nix @@ -0,0 +1,10 @@ +let + pkgs = (import {}); + machine = import "${pkgs.path}/nixos/lib/eval-config.nix" { + system = "x86_64-linux"; + modules = [ + ({config, ...}: { imports = [ ./system.nix ]; }) + ]; + }; +in + machine.config.system.build.azureImage diff --git a/nixos/maintainers/scripts/azure-new/examples/basic/system.nix b/nixos/maintainers/scripts/azure-new/examples/basic/system.nix new file mode 100644 index 00000000000..855bd3bab71 --- /dev/null +++ b/nixos/maintainers/scripts/azure-new/examples/basic/system.nix @@ -0,0 +1,34 @@ +{ pkgs, modulesPath, ... }: + +let username = "azurenixosuser"; +in +{ + imports = [ + "${modulesPath}/virtualisation/azure-common.nix" + "${modulesPath}/virtualisation/azure-image.nix" + ]; + + ## NOTE: This is just an example of how to hard-code a user. + ## The normal Azure agent IS included and DOES provision a user based + ## on the information passed at VM creation time. + users.users."${username}" = { + isNormalUser = true; + home = "/home/${username}"; + description = "Azure NixOS Test User"; + openssh.authorizedKeys.keys = [ (builtins.readFile ~/.ssh/id_ed25519.pub) ]; + }; + nix.trustedUsers = [ username ]; + + virtualisation.azureImage.diskSize = 2500; + + system.stateVersion = "20.03"; + boot.kernelPackages = pkgs.linuxPackages_latest; + + # test user doesn't have a password + services.openssh.passwordAuthentication = false; + security.sudo.wheelNeedsPassword = false; + + environment.systemPackages = with pkgs; [ + git file htop wget curl + ]; +} diff --git a/nixos/maintainers/scripts/azure-new/shell.nix b/nixos/maintainers/scripts/azure-new/shell.nix new file mode 100644 index 00000000000..592f1bf9056 --- /dev/null +++ b/nixos/maintainers/scripts/azure-new/shell.nix @@ -0,0 +1,13 @@ +with (import ../../../../default.nix {}); +stdenv.mkDerivation { + name = "nixcfg-azure-devenv"; + + nativeBuildInputs = [ + azure-cli + bash + cacert + azure-storage-azcopy + ]; + + AZURE_CONFIG_DIR="/tmp/azure-cli/.azure"; +} diff --git a/nixos/maintainers/scripts/azure-new/upload-image.sh b/nixos/maintainers/scripts/azure-new/upload-image.sh new file mode 100755 index 00000000000..1466dcd1f0a --- /dev/null +++ b/nixos/maintainers/scripts/azure-new/upload-image.sh @@ -0,0 +1,58 @@ +#!/usr/bin/env bash +set -euo pipefail +set -x + +image_nix="${1:-"./examples/basic/image.nix"}" + +nix-build "${image_nix}" --out-link "azure" + +group="nixos-images" +location="westus2" +img_name="nixos-image" +img_file="$(readlink -f ./azure/disk.vhd)" + +if ! az group show -n "${group}" &>/dev/null; then + az group create --name "${group}" --location "${location}" +fi + +# note: the disk access token song/dance is tedious +# but allows us to upload direct to a disk image +# thereby avoid storage accounts (and naming them) entirely! +if ! az disk show -g "${group}" -n "${img_name}" &>/dev/null; then + bytes="$(stat -c %s ${img_file})" + size="30" + az disk create \ + --resource-group "${group}" \ + --name "${img_name}" \ + --for-upload true --upload-size-bytes "${bytes}" + + timeout=$(( 60 * 60 )) # disk access token timeout + sasurl="$(\ + az disk grant-access \ + --access-level Write \ + --resource-group "${group}" \ + --name "${img_name}" \ + --duration-in-seconds ${timeout} \ + | jq -r '.accessSas' + )" + + azcopy copy "${img_file}" "${sasurl}" \ + --blob-type PageBlob + + az disk revoke-access \ + --resource-group "${group}" \ + --name "${img_name}" +fi + +if ! az image show -g "${group}" -n "${img_name}" &>/dev/null; then + diskid="$(az disk show -g "${group}" -n "${img_name}" -o json | jq -r .id)" + + az image create \ + --resource-group "${group}" \ + --name "${img_name}" \ + --source "${diskid}" \ + --os-type "linux" >/dev/null +fi + +imageid="$(az image show -g "${group}" -n "${img_name}" -o json | jq -r .id)" +echo "${imageid}" diff --git a/nixos/maintainers/scripts/azure/create-azure.sh b/nixos/maintainers/scripts/azure/create-azure.sh index 2b22cb53661..0558f8dfffc 100755 --- a/nixos/maintainers/scripts/azure/create-azure.sh +++ b/nixos/maintainers/scripts/azure/create-azure.sh @@ -1,6 +1,6 @@ -#! /bin/sh -e +#! /bin/sh -eu -export NIX_PATH=nixpkgs=../../../.. +export NIX_PATH=nixpkgs=$(dirname $(readlink -f $0))/../../../.. export NIXOS_CONFIG=$(dirname $(readlink -f $0))/../../../modules/virtualisation/azure-image.nix export TIMESTAMP=$(date +%Y%m%d%H%M) diff --git a/nixos/maintainers/scripts/ec2/amazon-image.nix b/nixos/maintainers/scripts/ec2/amazon-image.nix index 31e15537179..36f3e7af873 100644 --- a/nixos/maintainers/scripts/ec2/amazon-image.nix +++ b/nixos/maintainers/scripts/ec2/amazon-image.nix @@ -8,10 +8,15 @@ in { imports = [ ../../../modules/virtualisation/amazon-image.nix ]; - # Required to provide good EBS experience, + # Amazon recomments setting this to the highest possible value for a good EBS + # experience, which prior to 4.15 was 255. # https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/nvme-ebs-volumes.html#timeout-nvme-ebs-volumes - # TODO change value to 4294967295 when kernel is updated to 4.15 or later - config.boot.kernelParams = [ "nvme_core.io_timeout=255" ]; + config.boot.kernelParams = + let timeout = + if pkgs.lib.versionAtLeast config.boot.kernelPackages.kernel.version "4.15" + then "4294967295" + else "255"; + in [ "nvme_core.io_timeout=${timeout}" ]; options.amazonImage = { name = mkOption { diff --git a/nixos/maintainers/scripts/ec2/create-amis.sh b/nixos/maintainers/scripts/ec2/create-amis.sh index 5dc1c5aaed5..145eb49ced7 100755 --- a/nixos/maintainers/scripts/ec2/create-amis.sh +++ b/nixos/maintainers/scripts/ec2/create-amis.sh @@ -18,7 +18,7 @@ state_dir=$HOME/amis/ec2-images home_region=eu-west-1 bucket=nixos-amis -regions=(eu-west-1 eu-west-2 eu-west-3 eu-central-1 +regions=(eu-west-1 eu-west-2 eu-west-3 eu-central-1 eu-north-1 us-east-1 us-east-2 us-west-1 us-west-2 ca-central-1 ap-southeast-1 ap-southeast-2 ap-northeast-1 ap-northeast-2 diff --git a/nixos/modules/config/gtk/gtk-icon-cache.nix b/nixos/modules/config/gtk/gtk-icon-cache.nix index 86a6bfb5af4..7441f4de40e 100644 --- a/nixos/modules/config/gtk/gtk-icon-cache.nix +++ b/nixos/modules/config/gtk/gtk-icon-cache.nix @@ -77,7 +77,7 @@ with lib; if [ -w "$themedir" ]; then rm -f "$themedir"/icon-theme.cache - ${pkgs.gtk3.out}/bin/gtk-update-icon-cache --ignore-theme-index "$themedir" + ${pkgs.buildPackages.gtk3.out}/bin/gtk-update-icon-cache --ignore-theme-index "$themedir" fi done ''; diff --git a/nixos/modules/config/i18n.nix b/nixos/modules/config/i18n.nix index 45691f4839c..cc2ddda9d32 100644 --- a/nixos/modules/config/i18n.nix +++ b/nixos/modules/config/i18n.nix @@ -80,14 +80,11 @@ with lib; }; # ‘/etc/locale.conf’ is used by systemd. - environment.etc = singleton - { target = "locale.conf"; - source = pkgs.writeText "locale.conf" - '' - LANG=${config.i18n.defaultLocale} - ${concatStringsSep "\n" (mapAttrsToList (n: v: ''${n}=${v}'') config.i18n.extraLocaleSettings)} - ''; - }; + environment.etc."locale.conf".source = pkgs.writeText "locale.conf" + '' + LANG=${config.i18n.defaultLocale} + ${concatStringsSep "\n" (mapAttrsToList (n: v: ''${n}=${v}'') config.i18n.extraLocaleSettings)} + ''; }; } diff --git a/nixos/modules/config/ldap.nix b/nixos/modules/config/ldap.nix index e008497a2a6..b554f197dc4 100644 --- a/nixos/modules/config/ldap.nix +++ b/nixos/modules/config/ldap.nix @@ -28,8 +28,6 @@ let }; nslcdConfig = writeText "nslcd.conf" '' - uid nslcd - gid nslcd uri ${cfg.server} base ${cfg.base} timelimit ${toString cfg.timeLimit} @@ -224,7 +222,9 @@ in config = mkIf cfg.enable { - environment.etc = optional (!cfg.daemon.enable) ldapConfig; + environment.etc = optionalAttrs (!cfg.daemon.enable) { + "ldap.conf" = ldapConfig; + }; system.activationScripts = mkIf (!cfg.daemon.enable) { ldap = stringAfter [ "etc" "groups" "users" ] '' @@ -280,6 +280,7 @@ in Group = "nslcd"; RuntimeDirectory = [ "nslcd" ]; PIDFile = "/run/nslcd/nslcd.pid"; + AmbientCapabilities = "CAP_SYS_RESOURCE"; }; }; diff --git a/nixos/modules/config/networking.nix b/nixos/modules/config/networking.nix index 81427bb8ee6..dd36696b94d 100644 --- a/nixos/modules/config/networking.nix +++ b/nixos/modules/config/networking.nix @@ -35,12 +35,22 @@ in ''; }; + networking.hostFiles = lib.mkOption { + type = types.listOf types.path; + defaultText = lib.literalExample "Hosts from `networking.hosts` and `networking.extraHosts`"; + example = lib.literalExample ''[ "''${pkgs.my-blocklist-package}/share/my-blocklist/hosts" ]''; + description = '' + Files that should be concatenated together to form /etc/hosts. + ''; + }; + networking.extraHosts = lib.mkOption { type = types.lines; default = ""; example = "192.168.0.1 lanlocalhost"; description = '' Additional verbatim entries to be appended to /etc/hosts. + For adding hosts from derivation results, use instead. ''; }; @@ -159,6 +169,15 @@ in "::1" = [ "localhost" ]; }; + networking.hostFiles = let + stringHosts = + let + oneToString = set: ip: ip + " " + concatStringsSep " " set.${ip} + "\n"; + allToString = set: concatMapStrings (oneToString set) (attrNames set); + in pkgs.writeText "string-hosts" (allToString (filterAttrs (_: v: v != []) cfg.hosts)); + extraHosts = pkgs.writeText "extra-hosts" cfg.extraHosts; + in mkBefore [ stringHosts extraHosts ]; + environment.etc = { # /etc/services: TCP/UDP port assignments. services.source = pkgs.iana-etc + "/etc/services"; @@ -167,12 +186,8 @@ in protocols.source = pkgs.iana-etc + "/etc/protocols"; # /etc/hosts: Hostname-to-IP mappings. - hosts.text = let - oneToString = set: ip: ip + " " + concatStringsSep " " set.${ip}; - allToString = set: concatMapStringsSep "\n" (oneToString set) (attrNames set); - in '' - ${allToString (filterAttrs (_: v: v != []) cfg.hosts)} - ${cfg.extraHosts} + hosts.source = pkgs.runCommandNoCC "hosts" {} '' + cat ${escapeShellArgs cfg.hostFiles} > $out ''; # /etc/host.conf: resolver configuration file diff --git a/nixos/modules/config/pulseaudio.nix b/nixos/modules/config/pulseaudio.nix index 9baad9b5854..408d0a9c33f 100644 --- a/nixos/modules/config/pulseaudio.nix +++ b/nixos/modules/config/pulseaudio.nix @@ -215,9 +215,8 @@ in { config = mkMerge [ { - environment.etc = singleton { - target = "pulse/client.conf"; - source = clientConf; + environment.etc = { + "pulse/client.conf".source = clientConf; }; hardware.pulseaudio.configFile = mkDefault "${getBin overriddenPackage}/etc/pulse/default.pa"; @@ -228,19 +227,16 @@ in { sound.enable = true; - environment.etc = [ - { target = "asound.conf"; - source = alsaConf; } + environment.etc = { + "asound.conf".source = alsaConf; - { target = "pulse/daemon.conf"; - source = writeText "daemon.conf" (lib.generators.toKeyValue {} cfg.daemon.config); } + "pulse/daemon.conf".source = writeText "daemon.conf" + (lib.generators.toKeyValue {} cfg.daemon.config); - { target = "openal/alsoft.conf"; - source = writeText "alsoft.conf" "drivers=pulse"; } + "openal/alsoft.conf".source = writeText "alsoft.conf" "drivers=pulse"; - { target = "libao.conf"; - source = writeText "libao.conf" "default_driver=pulse"; } - ]; + "libao.conf".source = writeText "libao.conf" "default_driver=pulse"; + }; # Disable flat volumes to enable relative ones hardware.pulseaudio.daemon.config.flat-volumes = mkDefault "no"; @@ -252,6 +248,9 @@ in { security.rtkit.enable = true; systemd.packages = [ overriddenPackage ]; + + # PulseAudio is packaged with udev rules to handle various audio device quirks + services.udev.packages = [ overriddenPackage ]; }) (mkIf (cfg.extraModules != []) { @@ -275,9 +274,8 @@ in { }) (mkIf nonSystemWide { - environment.etc = singleton { - target = "pulse/default.pa"; - source = myConfigFile; + environment.etc = { + "pulse/default.pa".source = myConfigFile; }; systemd.user = { services.pulseaudio = { diff --git a/nixos/modules/config/resolvconf.nix b/nixos/modules/config/resolvconf.nix index 7d2f252a888..cc202bca6c4 100644 --- a/nixos/modules/config/resolvconf.nix +++ b/nixos/modules/config/resolvconf.nix @@ -38,6 +38,7 @@ in (mkRenamedOptionModule [ "networking" "dnsExtensionMechanism" ] [ "networking" "resolvconf" "dnsExtensionMechanism" ]) (mkRenamedOptionModule [ "networking" "extraResolvconfConf" ] [ "networking" "resolvconf" "extraConfig" ]) (mkRenamedOptionModule [ "networking" "resolvconfOptions" ] [ "networking" "resolvconf" "extraOptions" ]) + (mkRemovedOptionModule [ "networking" "resolvconf" "useHostResolvConf" ] "This option was never used for anything anyways") ]; options = { @@ -53,15 +54,6 @@ in ''; }; - useHostResolvConf = mkOption { - type = types.bool; - default = false; - description = '' - In containers, whether to use the - resolv.conf supplied by the host. - ''; - }; - dnsSingleRequest = lib.mkOption { type = types.bool; default = false; diff --git a/nixos/modules/config/swap.nix b/nixos/modules/config/swap.nix index fed3fa3bc7c..adb4e229421 100644 --- a/nixos/modules/config/swap.nix +++ b/nixos/modules/config/swap.nix @@ -58,7 +58,7 @@ let device = mkOption { example = "/dev/sda3"; type = types.str; - description = "Path of the device."; + description = "Path of the device or swap file."; }; label = mkOption { @@ -185,6 +185,8 @@ in { description = "Initialisation of swap device ${sw.device}"; wantedBy = [ "${realDevice'}.swap" ]; before = [ "${realDevice'}.swap" ]; + # If swap is encrypted, depending on rngd resolves a possible entropy starvation during boot + after = mkIf (config.security.rngd.enable && sw.randomEncryption.enable) [ "rngd.service" ]; path = [ pkgs.utillinux ] ++ optional sw.randomEncryption.enable pkgs.cryptsetup; script = diff --git a/nixos/modules/config/system-path.nix b/nixos/modules/config/system-path.nix index aba9bc0945b..4100ec89701 100644 --- a/nixos/modules/config/system-path.nix +++ b/nixos/modules/config/system-path.nix @@ -116,6 +116,7 @@ in "/lib" # FIXME: remove and update debug-info.nix "/sbin" "/share/emacs" + "/share/hunspell" "/share/nano" "/share/org" "/share/themes" diff --git a/nixos/modules/config/vte.nix b/nixos/modules/config/vte.nix index d4a8c926fef..24d32a00fd4 100644 --- a/nixos/modules/config/vte.nix +++ b/nixos/modules/config/vte.nix @@ -16,6 +16,10 @@ in { + meta = { + maintainers = teams.gnome.members; + }; + options = { programs.bash.vteIntegration = mkOption { diff --git a/nixos/modules/config/xdg/autostart.nix b/nixos/modules/config/xdg/autostart.nix index 0ee94fed818..40984cb5ec5 100644 --- a/nixos/modules/config/xdg/autostart.nix +++ b/nixos/modules/config/xdg/autostart.nix @@ -2,19 +2,23 @@ with lib; { + meta = { + maintainers = teams.freedesktop.members; + }; + options = { xdg.autostart.enable = mkOption { type = types.bool; default = true; description = '' - Whether to install files to support the + Whether to install files to support the XDG Autostart specification. ''; }; }; config = mkIf config.xdg.autostart.enable { - environment.pathsToLink = [ + environment.pathsToLink = [ "/etc/xdg/autostart" ]; }; diff --git a/nixos/modules/config/xdg/icons.nix b/nixos/modules/config/xdg/icons.nix index 4677ce090b0..c83fdc251ef 100644 --- a/nixos/modules/config/xdg/icons.nix +++ b/nixos/modules/config/xdg/icons.nix @@ -2,6 +2,10 @@ with lib; { + meta = { + maintainers = teams.freedesktop.members; + }; + options = { xdg.icons.enable = mkOption { type = types.bool; diff --git a/nixos/modules/config/xdg/menus.nix b/nixos/modules/config/xdg/menus.nix index c172692df5d..6735a7a5c43 100644 --- a/nixos/modules/config/xdg/menus.nix +++ b/nixos/modules/config/xdg/menus.nix @@ -2,19 +2,23 @@ with lib; { + meta = { + maintainers = teams.freedesktop.members; + }; + options = { xdg.menus.enable = mkOption { type = types.bool; default = true; description = '' - Whether to install files to support the + Whether to install files to support the XDG Desktop Menu specification. ''; }; }; config = mkIf config.xdg.menus.enable { - environment.pathsToLink = [ + environment.pathsToLink = [ "/share/applications" "/share/desktop-directories" "/etc/xdg/menus" diff --git a/nixos/modules/config/xdg/mime.nix b/nixos/modules/config/xdg/mime.nix index a5374c2b468..4cdb3f30994 100644 --- a/nixos/modules/config/xdg/mime.nix +++ b/nixos/modules/config/xdg/mime.nix @@ -2,6 +2,10 @@ with lib; { + meta = { + maintainers = teams.freedesktop.members; + }; + options = { xdg.mime.enable = mkOption { type = types.bool; diff --git a/nixos/modules/config/xdg/portal.nix b/nixos/modules/config/xdg/portal.nix index 95fa8e05fa3..3c7cd729c60 100644 --- a/nixos/modules/config/xdg/portal.nix +++ b/nixos/modules/config/xdg/portal.nix @@ -7,6 +7,10 @@ with lib; (mkRenamedOptionModule [ "services" "flatpak" "extraPortals" ] [ "xdg" "portal" "extraPortals" ]) ]; + meta = { + maintainers = teams.freedesktop.members; + }; + options.xdg.portal = { enable = mkEnableOption "xdg desktop integration"//{ @@ -42,6 +46,10 @@ with lib; let cfg = config.xdg.portal; packages = [ pkgs.xdg-desktop-portal ] ++ cfg.extraPortals; + joinedPortals = pkgs.symlinkJoin { + name = "xdg-portals"; + paths = cfg.extraPortals; + }; in mkIf cfg.enable { @@ -56,7 +64,7 @@ with lib; environment.variables = { GTK_USE_PORTAL = mkIf cfg.gtkUsePortal "1"; - XDG_DESKTOP_PORTAL_PATH = map (p: "${p}/share/xdg-desktop-portal/portals") cfg.extraPortals; + XDG_DESKTOP_PORTAL_DIR = "${joinedPortals}/share/xdg-desktop-portal/portals"; }; }; } diff --git a/nixos/modules/config/xdg/sounds.nix b/nixos/modules/config/xdg/sounds.nix index 14d6340fc33..0b94f550929 100644 --- a/nixos/modules/config/xdg/sounds.nix +++ b/nixos/modules/config/xdg/sounds.nix @@ -2,6 +2,10 @@ with lib; { + meta = { + maintainers = teams.freedesktop.members; + }; + options = { xdg.sounds.enable = mkOption { type = types.bool; diff --git a/nixos/modules/hardware/brightnessctl.nix b/nixos/modules/hardware/brightnessctl.nix deleted file mode 100644 index 2d54398d10d..00000000000 --- a/nixos/modules/hardware/brightnessctl.nix +++ /dev/null @@ -1,31 +0,0 @@ -{ config, lib, pkgs, ... }: - -with lib; -let - cfg = config.hardware.brightnessctl; -in -{ - - options = { - - hardware.brightnessctl = { - - enable = mkOption { - default = false; - type = types.bool; - description = '' - Enable brightnessctl in userspace. - This will allow brightness control from users in the video group. - ''; - - }; - }; - }; - - - config = mkIf cfg.enable { - services.udev.packages = with pkgs; [ brightnessctl ]; - environment.systemPackages = with pkgs; [ brightnessctl ]; - }; - -} diff --git a/nixos/modules/hardware/opengl.nix b/nixos/modules/hardware/opengl.nix index 89dc5008df5..28cddea8b79 100644 --- a/nixos/modules/hardware/opengl.nix +++ b/nixos/modules/hardware/opengl.nix @@ -43,11 +43,11 @@ in description = '' Whether to enable OpenGL drivers. This is needed to enable OpenGL support in X11 systems, as well as for Wayland compositors - like sway, way-cooler and Weston. It is enabled by default + like sway and Weston. It is enabled by default by the corresponding modules, so you do not usually have to set it yourself, only if there is no module for your wayland - compositor of choice. See services.xserver.enable, - programs.sway.enable, and programs.way-cooler.enable. + compositor of choice. See services.xserver.enable and + programs.sway.enable. ''; type = types.bool; default = false; diff --git a/nixos/modules/hardware/openrazer.nix b/nixos/modules/hardware/openrazer.nix index 883db7f2f4f..b5c3d674414 100644 --- a/nixos/modules/hardware/openrazer.nix +++ b/nixos/modules/hardware/openrazer.nix @@ -49,7 +49,7 @@ in { options = { hardware.openrazer = { - enable = mkEnableOption "OpenRazer drivers and userspace daemon."; + enable = mkEnableOption "OpenRazer drivers and userspace daemon"; verboseLogging = mkOption { type = types.bool; diff --git a/nixos/modules/hardware/raid/hpsa.nix b/nixos/modules/hardware/raid/hpsa.nix index 4d7af138292..c4977e3fd70 100644 --- a/nixos/modules/hardware/raid/hpsa.nix +++ b/nixos/modules/hardware/raid/hpsa.nix @@ -34,7 +34,7 @@ let meta = with lib; { description = "HP Smart Array CLI"; - homepage = https://downloads.linux.hpe.com/SDR/downloads/MCP/Ubuntu/pool/non-free/; + homepage = "https://downloads.linux.hpe.com/SDR/downloads/MCP/Ubuntu/pool/non-free/"; license = licenses.unfreeRedistributable; platforms = [ "x86_64-linux" ]; maintainers = with maintainers; [ volth ]; diff --git a/nixos/modules/hardware/sensor/iio.nix b/nixos/modules/hardware/sensor/iio.nix index a8bc1880002..4c359c3b172 100644 --- a/nixos/modules/hardware/sensor/iio.nix +++ b/nixos/modules/hardware/sensor/iio.nix @@ -8,7 +8,12 @@ with lib; options = { hardware.sensor.iio = { enable = mkOption { - description = "Enable this option to support IIO sensors."; + description = '' + Enable this option to support IIO sensors. + + IIO sensors are used for orientation and ambient light + sensors on some mobile devices. + ''; type = types.bool; default = false; }; diff --git a/nixos/modules/hardware/tuxedo-keyboard.nix b/nixos/modules/hardware/tuxedo-keyboard.nix new file mode 100644 index 00000000000..898eed24493 --- /dev/null +++ b/nixos/modules/hardware/tuxedo-keyboard.nix @@ -0,0 +1,35 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.hardware.tuxedo-keyboard; + tuxedo-keyboard = config.boot.kernelPackages.tuxedo-keyboard; +in + { + options.hardware.tuxedo-keyboard = { + enable = mkEnableOption '' + Enables the tuxedo-keyboard driver. + + To configure the driver, pass the options to the configuration. + There are several parameters you can change. It's best to check at the source code description which options are supported. + You can find all the supported parameters at: + + In order to use the custom lighting with the maximumg brightness and a color of 0xff0a0a one would put pass like this: + + + boot.kernelParams = [ + "tuxedo_keyboard.mode=0" + "tuxedo_keyboard.brightness=255" + "tuxedo_keyboard.color_left=0xff0a0a" + ]; + + ''; + }; + + config = mkIf cfg.enable + { + boot.kernelModules = ["tuxedo_keyboard"]; + boot.extraModulePackages = [ tuxedo-keyboard ]; + }; + } diff --git a/nixos/modules/hardware/uinput.nix b/nixos/modules/hardware/uinput.nix new file mode 100644 index 00000000000..55e86bfa6bd --- /dev/null +++ b/nixos/modules/hardware/uinput.nix @@ -0,0 +1,19 @@ +{ config, pkgs, lib, ... }: + +let + cfg = config.hardware.uinput; +in { + options.hardware.uinput = { + enable = lib.mkEnableOption "uinput support"; + }; + + config = lib.mkIf cfg.enable { + boot.kernelModules = [ "uinput" ]; + + users.groups.uinput = {}; + + services.udev.extraRules = '' + SUBSYSTEM=="misc", KERNEL=="uinput", MODE="0660", GROUP="uinput", OPTIONS+="static_node=uinput" + ''; + }; +} diff --git a/nixos/modules/hardware/usb-wwan.nix b/nixos/modules/hardware/usb-wwan.nix index 2d20421586a..679a6c6497c 100644 --- a/nixos/modules/hardware/usb-wwan.nix +++ b/nixos/modules/hardware/usb-wwan.nix @@ -21,6 +21,19 @@ with lib; ###### implementation config = mkIf config.hardware.usbWwan.enable { + # Attaches device specific handlers. services.udev.packages = with pkgs; [ usb-modeswitch-data ]; + + # Triggered by udev, usb-modeswitch creates systemd services via a + # template unit in the usb-modeswitch package. + systemd.packages = with pkgs; [ usb-modeswitch ]; + + # The systemd service requires the usb-modeswitch-data. The + # usb-modeswitch package intends to discover this via the + # filesystem at /usr/share/usb_modeswitch, and merge it with user + # configuration in /etc/usb_modeswitch.d. Configuring the correct + # path in the package is difficult, as it would cause a cyclic + # dependency. + environment.etc."usb_modeswitch.d".source = "${pkgs.usb-modeswitch-data}/share/usb_modeswitch"; }; } diff --git a/nixos/modules/hardware/video/amdgpu-pro.nix b/nixos/modules/hardware/video/amdgpu-pro.nix index 8e91e9d2baa..ec1c8c2d57a 100644 --- a/nixos/modules/hardware/video/amdgpu-pro.nix +++ b/nixos/modules/hardware/video/amdgpu-pro.nix @@ -30,7 +30,7 @@ in nixpkgs.config.xorg.abiCompat = "1.19"; services.xserver.drivers = singleton - { name = "amdgpu"; modules = [ package ]; }; + { name = "amdgpu"; modules = [ package ]; display = true; }; hardware.opengl.package = package; hardware.opengl.package32 = package32; diff --git a/nixos/modules/hardware/video/ati.nix b/nixos/modules/hardware/video/ati.nix index 0aab7bd6b92..06d3ea324d8 100644 --- a/nixos/modules/hardware/video/ati.nix +++ b/nixos/modules/hardware/video/ati.nix @@ -21,7 +21,7 @@ in nixpkgs.config.xorg.abiCompat = "1.17"; services.xserver.drivers = singleton - { name = "fglrx"; modules = [ ati_x11 ]; }; + { name = "fglrx"; modules = [ ati_x11 ]; display = true; }; hardware.opengl.package = ati_x11; hardware.opengl.package32 = pkgs.pkgsi686Linux.linuxPackages.ati_drivers_x11.override { libsOnly = true; kernel = null; }; diff --git a/nixos/modules/hardware/video/nvidia.nix b/nixos/modules/hardware/video/nvidia.nix index fcb30187fa2..7461e231402 100644 --- a/nixos/modules/hardware/video/nvidia.nix +++ b/nixos/modules/hardware/video/nvidia.nix @@ -34,26 +34,57 @@ let enabled = nvidia_x11 != null; cfg = config.hardware.nvidia; - optimusCfg = cfg.optimus_prime; + pCfg = cfg.prime; + syncCfg = pCfg.sync; + offloadCfg = pCfg.offload; + primeEnabled = syncCfg.enable || offloadCfg.enable; in { + imports = + [ + (mkRenamedOptionModule [ "hardware" "nvidia" "optimus_prime" "enable" ] [ "hardware" "nvidia" "prime" "sync" "enable" ]) + (mkRenamedOptionModule [ "hardware" "nvidia" "optimus_prime" "allowExternalGpu" ] [ "hardware" "nvidia" "prime" "sync" "allowExternalGpu" ]) + (mkRenamedOptionModule [ "hardware" "nvidia" "optimus_prime" "nvidiaBusId" ] [ "hardware" "nvidia" "prime" "nvidiaBusId" ]) + (mkRenamedOptionModule [ "hardware" "nvidia" "optimus_prime" "intelBusId" ] [ "hardware" "nvidia" "prime" "intelBusId" ]) + ]; + options = { - hardware.nvidia.modesetting.enable = lib.mkOption { - type = lib.types.bool; + hardware.nvidia.modesetting.enable = mkOption { + type = types.bool; default = false; description = '' Enable kernel modesetting when using the NVIDIA proprietary driver. Enabling this fixes screen tearing when using Optimus via PRIME (see - . This is not enabled + . This is not enabled by default because it is not officially supported by NVIDIA and would not work with SLI. ''; }; - hardware.nvidia.optimus_prime.enable = lib.mkOption { - type = lib.types.bool; + hardware.nvidia.prime.nvidiaBusId = mkOption { + type = types.str; + default = ""; + example = "PCI:1:0:0"; + description = '' + Bus ID of the NVIDIA GPU. You can find it using lspci; for example if lspci + shows the NVIDIA GPU at "01:00.0", set this option to "PCI:1:0:0". + ''; + }; + + hardware.nvidia.prime.intelBusId = mkOption { + type = types.str; + default = ""; + example = "PCI:0:2:0"; + description = '' + Bus ID of the Intel GPU. You can find it using lspci; for example if lspci + shows the Intel GPU at "00:02.0", set this option to "PCI:0:2:0". + ''; + }; + + hardware.nvidia.prime.sync.enable = mkOption { + type = types.bool; default = false; description = '' Enable NVIDIA Optimus support using the NVIDIA proprietary driver via PRIME. @@ -66,8 +97,8 @@ in be the only driver there. If this is enabled, then the bus IDs of the NVIDIA and Intel GPUs have to be - specified ( and - ). + specified ( and + ). If you enable this, you may want to also enable kernel modesetting for the NVIDIA driver () in order @@ -79,31 +110,23 @@ in ''; }; - hardware.nvidia.optimus_prime.allowExternalGpu = lib.mkOption { - type = lib.types.bool; + hardware.nvidia.prime.sync.allowExternalGpu = mkOption { + type = types.bool; default = false; description = '' Configure X to allow external NVIDIA GPUs when using optimus. ''; }; - hardware.nvidia.optimus_prime.nvidiaBusId = lib.mkOption { - type = lib.types.str; - default = ""; - example = "PCI:1:0:0"; + hardware.nvidia.prime.offload.enable = mkOption { + type = types.bool; + default = false; description = '' - Bus ID of the NVIDIA GPU. You can find it using lspci; for example if lspci - shows the NVIDIA GPU at "01:00.0", set this option to "PCI:1:0:0". - ''; - }; + Enable render offload support using the NVIDIA proprietary driver via PRIME. - hardware.nvidia.optimus_prime.intelBusId = lib.mkOption { - type = lib.types.str; - default = ""; - example = "PCI:0:2:0"; - description = '' - Bus ID of the Intel GPU. You can find it using lspci; for example if lspci - shows the Intel GPU at "00:02.0", set this option to "PCI:0:2:0". + If this is enabled, then the bus IDs of the NVIDIA and Intel GPUs have to be + specified ( and + ). ''; }; }; @@ -116,12 +139,19 @@ in } { - assertion = !optimusCfg.enable || - (optimusCfg.nvidiaBusId != "" && optimusCfg.intelBusId != ""); + assertion = primeEnabled -> pCfg.nvidiaBusId != "" && pCfg.intelBusId != ""; message = '' - When NVIDIA Optimus via PRIME is enabled, the GPU bus IDs must configured. + When NVIDIA PRIME is enabled, the GPU bus IDs must configured. ''; } + { + assertion = offloadCfg.enable -> versionAtLeast nvidia_x11.version "435.21"; + message = "NVIDIA PRIME render offload is currently only supported on versions >= 435.21."; + } + { + assertion = !(syncCfg.enable && offloadCfg.enable); + message = "Only one NVIDIA PRIME solution may be used at a time."; + } ]; # If Optimus/PRIME is enabled, we: @@ -136,36 +166,38 @@ in # - Configure the display manager to run specific `xrandr` commands which will # configure/enable displays connected to the Intel GPU. - services.xserver.drivers = singleton { + services.xserver.useGlamor = mkDefault offloadCfg.enable; + + services.xserver.drivers = optional primeEnabled { + name = "modesetting"; + display = offloadCfg.enable; + deviceSection = '' + BusID "${pCfg.intelBusId}" + ${optionalString syncCfg.enable ''Option "AccelMethod" "none"''} + ''; + } ++ singleton { name = "nvidia"; modules = [ nvidia_x11.bin ]; - deviceSection = optionalString optimusCfg.enable + display = !offloadCfg.enable; + deviceSection = optionalString primeEnabled '' - BusID "${optimusCfg.nvidiaBusId}" - ${optionalString optimusCfg.allowExternalGpu "Option \"AllowExternalGpus\""} + BusID "${pCfg.nvidiaBusId}" + ${optionalString syncCfg.allowExternalGpu "Option \"AllowExternalGpus\""} ''; screenSection = '' Option "RandRRotation" "on" - ${optionalString optimusCfg.enable "Option \"AllowEmptyInitialConfiguration\""} + ${optionalString syncCfg.enable "Option \"AllowEmptyInitialConfiguration\""} ''; }; - services.xserver.extraConfig = optionalString optimusCfg.enable - '' - Section "Device" - Identifier "nvidia-optimus-intel" - Driver "modesetting" - BusID "${optimusCfg.intelBusId}" - Option "AccelMethod" "none" - EndSection - ''; - services.xserver.serverLayoutSection = optionalString optimusCfg.enable - '' - Inactive "nvidia-optimus-intel" - ''; + services.xserver.serverLayoutSection = optionalString syncCfg.enable '' + Inactive "Device-modesetting[0]" + '' + optionalString offloadCfg.enable '' + Option "AllowNVIDIAGPUScreens" + ''; - services.xserver.displayManager.setupCommands = optionalString optimusCfg.enable '' + services.xserver.displayManager.setupCommands = optionalString syncCfg.enable '' # Added by nvidia configuration module for Optimus/PRIME. ${pkgs.xorg.xrandr}/bin/xrandr --setprovideroutputsource modesetting NVIDIA-0 ${pkgs.xorg.xrandr}/bin/xrandr --auto @@ -175,11 +207,13 @@ in source = "${nvidia_x11.bin}/share/nvidia/nvidia-application-profiles-rc"; }; - hardware.opengl.package = nvidia_x11.out; - hardware.opengl.package32 = nvidia_libs32; + hardware.opengl.package = mkIf (!offloadCfg.enable) nvidia_x11.out; + hardware.opengl.package32 = mkIf (!offloadCfg.enable) nvidia_libs32; + hardware.opengl.extraPackages = optional offloadCfg.enable nvidia_x11.out; + hardware.opengl.extraPackages32 = optional offloadCfg.enable nvidia_libs32; environment.systemPackages = [ nvidia_x11.bin nvidia_x11.settings ] - ++ lib.filter (p: p != null) [ nvidia_x11.persistenced ]; + ++ filter (p: p != null) [ nvidia_x11.persistenced ]; systemd.tmpfiles.rules = optional config.virtualisation.docker.enableNvidia "L+ /run/nvidia-docker/bin - - - - ${nvidia_x11.bin}/origBin" @@ -190,18 +224,19 @@ in # nvidia-uvm is required by CUDA applications. boot.kernelModules = [ "nvidia-uvm" ] ++ - lib.optionals config.services.xserver.enable [ "nvidia" "nvidia_modeset" "nvidia_drm" ]; + optionals config.services.xserver.enable [ "nvidia" "nvidia_modeset" "nvidia_drm" ]; # If requested enable modesetting via kernel parameter. - boot.kernelParams = optional cfg.modesetting.enable "nvidia-drm.modeset=1"; + boot.kernelParams = optional (offloadCfg.enable || cfg.modesetting.enable) "nvidia-drm.modeset=1"; # Create /dev/nvidia-uvm when the nvidia-uvm module is loaded. services.udev.extraRules = '' - KERNEL=="nvidia", RUN+="${pkgs.runtimeShell} -c 'mknod -m 666 /dev/nvidiactl c $(grep nvidia-frontend /proc/devices | cut -d \ -f 1) 255'" - KERNEL=="nvidia_modeset", RUN+="${pkgs.runtimeShell} -c 'mknod -m 666 /dev/nvidia-modeset c $(grep nvidia-frontend /proc/devices | cut -d \ -f 1) 254'" - KERNEL=="card*", SUBSYSTEM=="drm", DRIVERS=="nvidia", RUN+="${pkgs.runtimeShell} -c 'mknod -m 666 /dev/nvidia%n c $(grep nvidia-frontend /proc/devices | cut -d \ -f 1) %n'" - KERNEL=="nvidia_uvm", RUN+="${pkgs.runtimeShell} -c 'mknod -m 666 /dev/nvidia-uvm c $(grep nvidia-uvm /proc/devices | cut -d \ -f 1) 0'" + KERNEL=="nvidia", RUN+="${pkgs.runtimeShell} -c 'mknod -m 666 /dev/nvidiactl c $$(grep nvidia-frontend /proc/devices | cut -d \ -f 1) 255'" + KERNEL=="nvidia_modeset", RUN+="${pkgs.runtimeShell} -c 'mknod -m 666 /dev/nvidia-modeset c $$(grep nvidia-frontend /proc/devices | cut -d \ -f 1) 254'" + KERNEL=="card*", SUBSYSTEM=="drm", DRIVERS=="nvidia", RUN+="${pkgs.runtimeShell} -c 'mknod -m 666 /dev/nvidia%n c $$(grep nvidia-frontend /proc/devices | cut -d \ -f 1) %n'" + KERNEL=="nvidia_uvm", RUN+="${pkgs.runtimeShell} -c 'mknod -m 666 /dev/nvidia-uvm c $$(grep nvidia-uvm /proc/devices | cut -d \ -f 1) 0'" + KERNEL=="nvidia_uvm", RUN+="${pkgs.runtimeShell} -c 'mknod -m 666 /dev/nvidia-uvm-tools c $$(grep nvidia-uvm /proc/devices | cut -d \ -f 1) 0'" ''; boot.blacklistedKernelModules = [ "nouveau" "nvidiafb" ]; diff --git a/nixos/modules/hardware/wooting.nix b/nixos/modules/hardware/wooting.nix new file mode 100644 index 00000000000..ee550cbbf6b --- /dev/null +++ b/nixos/modules/hardware/wooting.nix @@ -0,0 +1,12 @@ +{ config, lib, pkgs, ... }: + +with lib; +{ + options.hardware.wooting.enable = + mkEnableOption "Enable support for Wooting keyboards"; + + config = mkIf config.hardware.wooting.enable { + environment.systemPackages = [ pkgs.wootility ]; + services.udev.packages = [ pkgs.wooting-udev-rules ]; + }; +} diff --git a/nixos/modules/i18n/input-method/ibus.nix b/nixos/modules/i18n/input-method/ibus.nix index 810e1643d31..b4746b21b65 100644 --- a/nixos/modules/i18n/input-method/ibus.nix +++ b/nixos/modules/i18n/input-method/ibus.nix @@ -64,6 +64,8 @@ in # Without dconf enabled it is impossible to use IBus programs.dconf.enable = true; + programs.dconf.profiles.ibus = "${ibusPackage}/etc/dconf/profile/ibus"; + services.dbus.packages = [ ibusAutostart ]; @@ -73,5 +75,9 @@ in QT_IM_MODULE = "ibus"; XMODIFIERS = "@im=ibus"; }; + + xdg.portal.extraPortals = mkIf config.xdg.portal.enable [ + ibusPackage + ]; }; } diff --git a/nixos/modules/installer/cd-dvd/channel.nix b/nixos/modules/installer/cd-dvd/channel.nix index ab5e7c0645f..92164d65e53 100644 --- a/nixos/modules/installer/cd-dvd/channel.nix +++ b/nixos/modules/installer/cd-dvd/channel.nix @@ -21,7 +21,9 @@ let if [ ! -e $out/nixos/nixpkgs ]; then ln -s . $out/nixos/nixpkgs fi - echo -n ${config.system.nixos.revision} > $out/nixos/.git-revision + ${optionalString (config.system.nixos.revision != null) '' + echo -n ${config.system.nixos.revision} > $out/nixos/.git-revision + ''} echo -n ${config.system.nixos.versionSuffix} > $out/nixos/.version-suffix echo ${config.system.nixos.versionSuffix} | sed -e s/pre// > $out/nixos/svn-revision ''; diff --git a/nixos/modules/installer/cd-dvd/installation-cd-base.nix b/nixos/modules/installer/cd-dvd/installation-cd-base.nix index 24070a78694..9303e8fde13 100644 --- a/nixos/modules/installer/cd-dvd/installation-cd-base.nix +++ b/nixos/modules/installer/cd-dvd/installation-cd-base.nix @@ -18,8 +18,6 @@ with lib; # ISO naming. isoImage.isoName = "${config.isoImage.isoBaseName}-${config.system.nixos.label}-${pkgs.stdenv.hostPlatform.system}.iso"; - isoImage.volumeID = substring 0 11 "NIXOS_ISO"; - # EFI booting isoImage.makeEfiBootable = true; diff --git a/nixos/modules/installer/cd-dvd/installation-cd-graphical-base.nix b/nixos/modules/installer/cd-dvd/installation-cd-graphical-base.nix index e0b558dcb0d..fa19daf1328 100644 --- a/nixos/modules/installer/cd-dvd/installation-cd-graphical-base.nix +++ b/nixos/modules/installer/cd-dvd/installation-cd-graphical-base.nix @@ -44,6 +44,9 @@ with lib; pkgs.bvi # binary editor pkgs.joe + # Include some version control tools. + pkgs.git + # Firefox for reading the manual. pkgs.firefox diff --git a/nixos/modules/installer/cd-dvd/installation-cd-graphical-gnome.nix b/nixos/modules/installer/cd-dvd/installation-cd-graphical-gnome.nix index 23c3426bff0..84394a1ecae 100644 --- a/nixos/modules/installer/cd-dvd/installation-cd-graphical-gnome.nix +++ b/nixos/modules/installer/cd-dvd/installation-cd-graphical-gnome.nix @@ -1,5 +1,4 @@ -# This module defines a NixOS installation CD that contains X11 and -# GNOME 3. +# This module defines a NixOS installation CD that contains GNOME. { lib, ... }: @@ -8,12 +7,26 @@ with lib; { imports = [ ./installation-cd-graphical-base.nix ]; + isoImage.edition = "gnome"; + services.xserver.desktopManager.gnome3.enable = true; - # Auto-login as root. - services.xserver.displayManager.gdm.autoLogin = { + # Wayland can be problematic for some hardware like Nvidia graphics cards. + services.xserver.displayManager.defaultSession = "gnome-xorg"; + + services.xserver.displayManager.gdm = { enable = true; - user = "root"; + # autoSuspend makes the machine automatically suspend after inactivity. + # It's possible someone could/try to ssh'd into the machine and obviously + # have issues because it's inactive. + # See: + # * https://github.com/NixOS/nixpkgs/pull/63790 + # * https://gitlab.gnome.org/GNOME/gnome-control-center/issues/22 + autoSuspend = false; + autoLogin = { + enable = true; + user = "nixos"; + }; }; } diff --git a/nixos/modules/installer/cd-dvd/installation-cd-graphical-kde-new-kernel.nix b/nixos/modules/installer/cd-dvd/installation-cd-graphical-plasma5-new-kernel.nix similarity index 55% rename from nixos/modules/installer/cd-dvd/installation-cd-graphical-kde-new-kernel.nix rename to nixos/modules/installer/cd-dvd/installation-cd-graphical-plasma5-new-kernel.nix index 3336d512cfd..d98325a99ac 100644 --- a/nixos/modules/installer/cd-dvd/installation-cd-graphical-kde-new-kernel.nix +++ b/nixos/modules/installer/cd-dvd/installation-cd-graphical-plasma5-new-kernel.nix @@ -1,7 +1,7 @@ { pkgs, ... }: { - imports = [ ./installation-cd-graphical-kde.nix ]; + imports = [ ./installation-cd-graphical-plasma5.nix ]; boot.kernelPackages = pkgs.linuxPackages_latest; } diff --git a/nixos/modules/installer/cd-dvd/installation-cd-graphical-kde.nix b/nixos/modules/installer/cd-dvd/installation-cd-graphical-plasma5.nix similarity index 97% rename from nixos/modules/installer/cd-dvd/installation-cd-graphical-kde.nix rename to nixos/modules/installer/cd-dvd/installation-cd-graphical-plasma5.nix index e00d3f7535b..e76e06654ac 100644 --- a/nixos/modules/installer/cd-dvd/installation-cd-graphical-kde.nix +++ b/nixos/modules/installer/cd-dvd/installation-cd-graphical-plasma5.nix @@ -8,6 +8,8 @@ with lib; { imports = [ ./installation-cd-graphical-base.nix ]; + isoImage.edition = "plasma5"; + services.xserver = { desktopManager.plasma5 = { enable = true; diff --git a/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix b/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix index bcdbffdc20b..97506045e0e 100644 --- a/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix +++ b/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix @@ -8,5 +8,7 @@ [ ./installation-cd-base.nix ]; + isoImage.edition = "minimal"; + fonts.fontconfig.enable = false; } diff --git a/nixos/modules/installer/cd-dvd/iso-image.nix b/nixos/modules/installer/cd-dvd/iso-image.nix index 11319e5f4f8..cce7cc235ec 100644 --- a/nixos/modules/installer/cd-dvd/iso-image.nix +++ b/nixos/modules/installer/cd-dvd/iso-image.nix @@ -417,8 +417,17 @@ in ''; }; + isoImage.edition = mkOption { + default = ""; + description = '' + Specifies which edition string to use in the volume ID of the generated + ISO image. + ''; + }; + isoImage.volumeID = mkOption { - default = "NIXOS_BOOT_CD"; + # nixos-$EDITION-$RELEASE-$ARCH + default = "nixos${optionalString (config.isoImage.edition != "") "-${config.isoImage.edition}"}-${config.system.nixos.release}-${pkgs.stdenv.hostPlatform.uname.processor}"; description = '' Specifies the label or volume ID of the generated ISO image. Note that the label is used by stage 1 of the boot process to @@ -474,7 +483,7 @@ in isoImage.efiSplashImage = mkOption { default = pkgs.fetchurl { - url = https://raw.githubusercontent.com/NixOS/nixos-artwork/a9e05d7deb38a8e005a2b52575a3f59a63a4dba0/bootloader/efi-background.png; + url = "https://raw.githubusercontent.com/NixOS/nixos-artwork/a9e05d7deb38a8e005a2b52575a3f59a63a4dba0/bootloader/efi-background.png"; sha256 = "18lfwmp8yq923322nlb9gxrh5qikj1wsk6g5qvdh31c4h5b1538x"; }; description = '' @@ -484,7 +493,7 @@ in isoImage.splashImage = mkOption { default = pkgs.fetchurl { - url = https://raw.githubusercontent.com/NixOS/nixos-artwork/a9e05d7deb38a8e005a2b52575a3f59a63a4dba0/bootloader/isolinux/bios-boot.png; + url = "https://raw.githubusercontent.com/NixOS/nixos-artwork/a9e05d7deb38a8e005a2b52575a3f59a63a4dba0/bootloader/isolinux/bios-boot.png"; sha256 = "1wp822zrhbg4fgfbwkr7cbkr4labx477209agzc0hr6k62fr6rxd"; }; description = '' @@ -515,6 +524,19 @@ in }; config = { + assertions = [ + { + assertion = !(stringLength config.isoImage.volumeID > 32); + # https://wiki.osdev.org/ISO_9660#The_Primary_Volume_Descriptor + # Volume Identifier can only be 32 bytes + message = let + length = stringLength config.isoImage.volumeID; + howmany = toString length; + toomany = toString (length - 32); + in + "isoImage.volumeID ${config.isoImage.volumeID} is ${howmany} characters. That is ${toomany} characters longer than the limit of 32."; + } + ]; boot.loader.grub.version = 2; @@ -569,14 +591,18 @@ in }; fileSystems."/nix/store" = - { fsType = "unionfs-fuse"; - device = "unionfs"; - options = [ "allow_other" "cow" "nonempty" "chroot=/mnt-root" "max_files=32768" "hide_meta_files" "dirs=/nix/.rw-store=rw:/nix/.ro-store=ro" ]; + { fsType = "overlay"; + device = "overlay"; + options = [ + "lowerdir=/nix/.ro-store" + "upperdir=/nix/.rw-store/store" + "workdir=/nix/.rw-store/work" + ]; }; - boot.initrd.availableKernelModules = [ "squashfs" "iso9660" "uas" ]; + boot.initrd.availableKernelModules = [ "squashfs" "iso9660" "uas" "overlay" ]; - boot.initrd.kernelModules = [ "loop" ]; + boot.initrd.kernelModules = [ "loop" "overlay" ]; # Closures to be copied to the Nix store on the CD, namely the init # script and the top-level system configuration directory. diff --git a/nixos/modules/installer/cd-dvd/system-tarball-pc.nix b/nixos/modules/installer/cd-dvd/system-tarball-pc.nix index bf8b7deb59e..f2af7dcde3d 100644 --- a/nixos/modules/installer/cd-dvd/system-tarball-pc.nix +++ b/nixos/modules/installer/cd-dvd/system-tarball-pc.nix @@ -122,11 +122,10 @@ in /* fake entry, just to have a happy stage-1. Users may boot without having stage-1 though */ - fileSystems = [ + fileSystems.fake = { mountPoint = "/"; device = "/dev/something"; - } - ]; + }; nixpkgs.config = { packageOverrides = p: { diff --git a/nixos/modules/installer/cd-dvd/system-tarball-sheevaplug.nix b/nixos/modules/installer/cd-dvd/system-tarball-sheevaplug.nix index 90a5128c02a..8408f56f94f 100644 --- a/nixos/modules/installer/cd-dvd/system-tarball-sheevaplug.nix +++ b/nixos/modules/installer/cd-dvd/system-tarball-sheevaplug.nix @@ -117,11 +117,10 @@ in /* fake entry, just to have a happy stage-1. Users may boot without having stage-1 though */ - fileSystems = [ + fileSystems.fake = { mountPoint = "/"; device = "/dev/something"; - } - ]; + }; services.mingetty = { # Some more help text. diff --git a/nixos/modules/installer/cd-dvd/system-tarball.nix b/nixos/modules/installer/cd-dvd/system-tarball.nix index b84096861f5..58098c45535 100644 --- a/nixos/modules/installer/cd-dvd/system-tarball.nix +++ b/nixos/modules/installer/cd-dvd/system-tarball.nix @@ -41,7 +41,7 @@ in # In stage 1 of the boot, mount the CD/DVD as the root FS by label # so that we don't need to know its device. - fileSystems = [ ]; + fileSystems = { }; # boot.initrd.availableKernelModules = [ "mvsdio" "reiserfs" "ext3" "ext4" ]; diff --git a/nixos/modules/installer/netboot/netboot.nix b/nixos/modules/installer/netboot/netboot.nix index 5146858cccf..95eba86bcb6 100644 --- a/nixos/modules/installer/netboot/netboot.nix +++ b/nixos/modules/installer/netboot/netboot.nix @@ -50,14 +50,18 @@ with lib; }; fileSystems."/nix/store" = - { fsType = "unionfs-fuse"; - device = "unionfs"; - options = [ "allow_other" "cow" "nonempty" "chroot=/mnt-root" "max_files=32768" "hide_meta_files" "dirs=/nix/.rw-store=rw:/nix/.ro-store=ro" ]; + { fsType = "overlay"; + device = "overlay"; + options = [ + "lowerdir=/nix/.ro-store" + "upperdir=/nix/.rw-store/store" + "workdir=/nix/.rw-store/work" + ]; }; - boot.initrd.availableKernelModules = [ "squashfs" ]; + boot.initrd.availableKernelModules = [ "squashfs" "overlay" ]; - boot.initrd.kernelModules = [ "loop" ]; + boot.initrd.kernelModules = [ "loop" "overlay" ]; # Closures to be copied to the Nix store, namely the init # script and the top-level system configuration directory. diff --git a/nixos/modules/installer/tools/nix-fallback-paths.nix b/nixos/modules/installer/tools/nix-fallback-paths.nix index d7149b35d4c..842976c3574 100644 --- a/nixos/modules/installer/tools/nix-fallback-paths.nix +++ b/nixos/modules/installer/tools/nix-fallback-paths.nix @@ -1,6 +1,6 @@ { - x86_64-linux = "/nix/store/6chjfy4j6hjwj5f8zcbbdg02i21x1qsi-nix-2.3.1"; - i686-linux = "/nix/store/xa8z7fwszjjm4kiwrxfc8xv9c1pzzm7a-nix-2.3.1"; - aarch64-linux = "/nix/store/8cac1ivcnchlpzmdjby2f71l1fwpnymr-nix-2.3.1"; - x86_64-darwin = "/nix/store/6639l9815ggdnb4aka22qcjy7p8w4hb9-nix-2.3.1"; + x86_64-linux = "/nix/store/8928ygfyf9iassfrnj76v55s6zid58ja-nix-2.3.4"; + i686-linux = "/nix/store/b5cx3nmba9ahx3wk5ybxa67k40pdpdxn-nix-2.3.4"; + aarch64-linux = "/nix/store/p6j4mis6agdjlk4j0cyg7yh58wpm3kif-nix-2.3.4"; + x86_64-darwin = "/nix/store/aizhr07dljmlbf17wfrj40x3s0b5iv3d-nix-2.3.4"; } diff --git a/nixos/modules/installer/tools/nixos-build-vms/build-vms.nix b/nixos/modules/installer/tools/nixos-build-vms/build-vms.nix index c1028a0ad7e..0c9f8522cc1 100644 --- a/nixos/modules/installer/tools/nixos-build-vms/build-vms.nix +++ b/nixos/modules/installer/tools/nixos-build-vms/build-vms.nix @@ -3,9 +3,14 @@ , networkExpr }: -let nodes = import networkExpr; in +let + nodes = builtins.mapAttrs (vm: module: { + _file = "${networkExpr}@node-${vm}"; + imports = [ module ]; + }) (import networkExpr); +in -with import ../../../../lib/testing.nix { +with import ../../../../lib/testing-python.nix { inherit system; pkgs = import ../../../../.. { inherit system config; }; }; diff --git a/nixos/modules/installer/tools/nixos-enter.sh b/nixos/modules/installer/tools/nixos-enter.sh index 4680cd8ae95..1fdd4627a90 100644 --- a/nixos/modules/installer/tools/nixos-enter.sh +++ b/nixos/modules/installer/tools/nixos-enter.sh @@ -60,15 +60,15 @@ chmod 0755 "$mountPoint/dev" "$mountPoint/sys" mount --rbind /dev "$mountPoint/dev" mount --rbind /sys "$mountPoint/sys" -# If silent, write both stdout and stderr of activation script to /dev/null -# otherwise, write both streams to stderr of this process -if [ "$silent" -eq 0 ]; then - PIPE_TARGET="/dev/stderr" -else - PIPE_TARGET="/dev/null" -fi +( + # If silent, write both stdout and stderr of activation script to /dev/null + # otherwise, write both streams to stderr of this process + if [ "$silent" -eq 1 ]; then + exec 2>/dev/null + fi -# Run the activation script. Set $LOCALE_ARCHIVE to supress some Perl locale warnings. -LOCALE_ARCHIVE="$system/sw/lib/locale/locale-archive" chroot "$mountPoint" "$system/activate" >>$PIPE_TARGET 2>&1 || true + # Run the activation script. Set $LOCALE_ARCHIVE to supress some Perl locale warnings. + LOCALE_ARCHIVE="$system/sw/lib/locale/locale-archive" chroot "$mountPoint" "$system/activate" 1>&2 || true +) exec chroot "$mountPoint" "${command[@]}" diff --git a/nixos/modules/installer/tools/nixos-generate-config.pl b/nixos/modules/installer/tools/nixos-generate-config.pl index 7f98756a7d9..a32c19a4eba 100644 --- a/nixos/modules/installer/tools/nixos-generate-config.pl +++ b/nixos/modules/installer/tools/nixos-generate-config.pl @@ -91,9 +91,6 @@ sub hasCPUFeature { } -# Detect the number of CPU cores. -my $cpus = scalar (grep {/^processor\s*:/} (split '\n', $cpuinfo)); - # Determine CPU governor to use if (-e "/sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors") { @@ -501,7 +498,7 @@ if (-f $fb_modes_file && -r $fb_modes_file) { my $console_width = $1, my $console_height = $2; if ($console_width > 1920) { push @attrs, "# High-DPI console"; - push @attrs, 'i18n.consoleFont = lib.mkDefault "${pkgs.terminus_font}/share/consolefonts/ter-u28n.psf.gz";'; + push @attrs, 'console.font = lib.mkDefault "${pkgs.terminus_font}/share/consolefonts/ter-u28n.psf.gz";'; } } @@ -562,7 +559,6 @@ my $hwConfig = <' system -I "nixos-config=$NIXOS_CONFIG" + -f '' system -I "nixos-config=$NIXOS_CONFIG" ${verbosity[@]} ${buildLogs} system=$(readlink -f $outLink) fi @@ -103,7 +111,7 @@ fi # a progress bar. nix-env --store "$mountPoint" "${extraBuildFlags[@]}" \ --extra-substituters "$sub" \ - -p $mountPoint/nix/var/nix/profiles/system --set "$system" + -p $mountPoint/nix/var/nix/profiles/system --set "$system" ${verbosity[@]} # Copy the NixOS/Nixpkgs sources to the target as the initial contents # of the NixOS channel. @@ -115,7 +123,8 @@ if [[ -z $noChannelCopy ]]; then echo "copying channel..." mkdir -p $mountPoint/nix/var/nix/profiles/per-user/root nix-env --store "$mountPoint" "${extraBuildFlags[@]}" --extra-substituters "$sub" \ - -p $mountPoint/nix/var/nix/profiles/per-user/root/channels --set "$channelPath" --quiet + -p $mountPoint/nix/var/nix/profiles/per-user/root/channels --set "$channelPath" --quiet \ + ${verbosity[@]} install -m 0700 -d $mountPoint/root/.nix-defexpr ln -sfn /nix/var/nix/profiles/per-user/root/channels $mountPoint/root/.nix-defexpr/channels fi diff --git a/nixos/modules/installer/tools/nixos-option/nixos-option.cc b/nixos/modules/installer/tools/nixos-option/nixos-option.cc index 9b92dc829cd..1a7b07a74f8 100644 --- a/nixos/modules/installer/tools/nixos-option/nixos-option.cc +++ b/nixos/modules/installer/tools/nixos-option/nixos-option.cc @@ -131,12 +131,12 @@ bool isOption(Context & ctx, const Value & v) if (v.type != tAttrs) { return false; } - const auto & atualType = v.attrs->find(ctx.underscoreType); - if (atualType == v.attrs->end()) { + const auto & actualType = v.attrs->find(ctx.underscoreType); + if (actualType == v.attrs->end()) { return false; } try { - Value evaluatedType = evaluateValue(ctx, *atualType->value); + Value evaluatedType = evaluateValue(ctx, *actualType->value); if (evaluatedType.type != tString) { return false; } @@ -197,9 +197,107 @@ void recurse(const std::function & f, Context & ctx, Value root) +bool optionTypeIs(Context & ctx, Value & v, const std::string & soughtType) { + try { + const auto & typeLookup = v.attrs->find(ctx.state.sType); + if (typeLookup == v.attrs->end()) { + return false; + } + Value type = evaluateValue(ctx, *typeLookup->value); + if (type.type != tAttrs) { + return false; + } + const auto & nameLookup = type.attrs->find(ctx.state.sName); + if (nameLookup == type.attrs->end()) { + return false; + } + Value name = evaluateValue(ctx, *nameLookup->value); + if (name.type != tString) { + return false; + } + return name.string.s == soughtType; + } catch (Error &) { + return false; + } +} + +bool isAggregateOptionType(Context & ctx, Value & v) +{ + return optionTypeIs(ctx, v, "attrsOf") || optionTypeIs(ctx, v, "listOf") || optionTypeIs(ctx, v, "loaOf"); +} + +MakeError(OptionPathError, EvalError); + +Value getSubOptions(Context & ctx, Value & option) +{ + Value getSubOptions = evaluateValue(ctx, *findAlongAttrPath(ctx.state, "type.getSubOptions", ctx.autoArgs, option)); + if (getSubOptions.type != tLambda) { + throw OptionPathError("Option's type.getSubOptions isn't a function"); + } + Value emptyString{}; + nix::mkString(emptyString, ""); + Value v; + ctx.state.callFunction(getSubOptions, emptyString, v, nix::Pos{}); + return v; +} + +// Carefully walk an option path, looking for sub-options when a path walks past +// an option value. +struct FindAlongOptionPathRet +{ + Value option; + std::string path; +}; +FindAlongOptionPathRet findAlongOptionPath(Context & ctx, const std::string & path) +{ + Strings tokens = parseAttrPath(path); + Value v = ctx.optionsRoot; + std::string processedPath; + for (auto i = tokens.begin(); i != tokens.end(); i++) { + const auto & attr = *i; + try { + bool lastAttribute = std::next(i) == tokens.end(); + v = evaluateValue(ctx, v); + if (attr.empty()) { + throw OptionPathError("empty attribute name"); + } + if (isOption(ctx, v) && optionTypeIs(ctx, v, "submodule")) { + v = getSubOptions(ctx, v); + } + if (isOption(ctx, v) && isAggregateOptionType(ctx, v)) { + auto subOptions = getSubOptions(ctx, v); + if (lastAttribute && subOptions.attrs->empty()) { + break; + } + v = subOptions; + // Note that we've consumed attr, but didn't actually use it. This is the path component that's looked + // up in the list or attribute set that doesn't name an option -- the "root" in "users.users.root.name". + } else if (v.type != tAttrs) { + throw OptionPathError("Value is %s while a set was expected", showType(v)); + } else { + const auto & next = v.attrs->find(ctx.state.symbols.create(attr)); + if (next == v.attrs->end()) { + throw OptionPathError("Attribute not found", attr, path); + } + v = *next->value; + } + processedPath = appendPath(processedPath, attr); + } catch (OptionPathError & e) { + throw OptionPathError("At '%s' in path '%s': %s", attr, path, e.msg()); + } + } + return {v, processedPath}; +} + +// Calls f on all the option names at or below the option described by `path`. +// Note that "the option described by `path`" is not trivial -- if path describes a value inside an aggregate +// option (such as users.users.root), the *option* described by that path is one path component shorter +// (eg: users.users), which results in f being called on sibling-paths (eg: users.users.nixbld1). If f +// doesn't want these, it must do its own filtering. +void mapOptions(const std::function & f, Context & ctx, const std::string & path) +{ + auto root = findAlongOptionPath(ctx, path); recurse( [f, &ctx](const std::string & path, std::variant v) { bool isOpt = std::holds_alternative(v) || isOption(ctx, std::get(v)); @@ -208,7 +306,7 @@ void mapOptions(const std::function & f, Context } return !isOpt; }, - ctx, root, ""); + ctx, root.option, root.path); } // Calls f on all the config values inside one option. @@ -294,9 +392,11 @@ void printAttrs(Context & ctx, Out & out, Value & v, const std::string & path) Out attrsOut(out, "{", "}", v.attrs->size()); for (const auto & a : v.attrs->lexicographicOrder()) { std::string name = a->name; - attrsOut << name << " = "; - printValue(ctx, attrsOut, *a->value, appendPath(path, name)); - attrsOut << ";" << Out::sep; + if (!forbiddenRecursionName(name)) { + attrsOut << name << " = "; + printValue(ctx, attrsOut, *a->value, appendPath(path, name)); + attrsOut << ";" << Out::sep; + } } } @@ -380,17 +480,26 @@ void printConfigValue(Context & ctx, Out & out, const std::string & path, std::v out << ";\n"; } -void printAll(Context & ctx, Out & out) +// Replace with std::starts_with when C++20 is available +bool starts_with(const std::string & s, const std::string & prefix) +{ + return s.size() >= prefix.size() && + std::equal(s.begin(), std::next(s.begin(), prefix.size()), prefix.begin(), prefix.end()); +} + +void printRecursive(Context & ctx, Out & out, const std::string & path) { mapOptions( - [&ctx, &out](const std::string & optionPath) { + [&ctx, &out, &path](const std::string & optionPath) { mapConfigValuesInOption( - [&ctx, &out](const std::string & configPath, std::variant v) { - printConfigValue(ctx, out, configPath, v); + [&ctx, &out, &path](const std::string & configPath, std::variant v) { + if (starts_with(configPath, path)) { + printConfigValue(ctx, out, configPath, v); + } }, optionPath, ctx); }, - ctx, ctx.optionsRoot); + ctx, path); } void printAttr(Context & ctx, Out & out, const std::string & path, Value & root) @@ -450,95 +559,17 @@ void printListing(Out & out, Value & v) } } -bool optionTypeIs(Context & ctx, Value & v, const std::string & soughtType) -{ - try { - const auto & typeLookup = v.attrs->find(ctx.state.sType); - if (typeLookup == v.attrs->end()) { - return false; - } - Value type = evaluateValue(ctx, *typeLookup->value); - if (type.type != tAttrs) { - return false; - } - const auto & nameLookup = type.attrs->find(ctx.state.sName); - if (nameLookup == type.attrs->end()) { - return false; - } - Value name = evaluateValue(ctx, *nameLookup->value); - if (name.type != tString) { - return false; - } - return name.string.s == soughtType; - } catch (Error &) { - return false; - } -} - -bool isAggregateOptionType(Context & ctx, Value & v) -{ - return optionTypeIs(ctx, v, "attrsOf") || optionTypeIs(ctx, v, "listOf") || optionTypeIs(ctx, v, "loaOf"); -} - -MakeError(OptionPathError, EvalError); - -Value getSubOptions(Context & ctx, Value & option) -{ - Value getSubOptions = evaluateValue(ctx, *findAlongAttrPath(ctx.state, "type.getSubOptions", ctx.autoArgs, option)); - if (getSubOptions.type != tLambda) { - throw OptionPathError("Option's type.getSubOptions isn't a function"); - } - Value emptyString{}; - nix::mkString(emptyString, ""); - Value v; - ctx.state.callFunction(getSubOptions, emptyString, v, nix::Pos{}); - return v; -} - -// Carefully walk an option path, looking for sub-options when a path walks past -// an option value. -Value findAlongOptionPath(Context & ctx, const std::string & path) -{ - Strings tokens = parseAttrPath(path); - Value v = ctx.optionsRoot; - for (auto i = tokens.begin(); i != tokens.end(); i++) { - const auto & attr = *i; - try { - bool lastAttribute = std::next(i) == tokens.end(); - v = evaluateValue(ctx, v); - if (attr.empty()) { - throw OptionPathError("empty attribute name"); - } - if (isOption(ctx, v) && optionTypeIs(ctx, v, "submodule")) { - v = getSubOptions(ctx, v); - } - if (isOption(ctx, v) && isAggregateOptionType(ctx, v) && !lastAttribute) { - v = getSubOptions(ctx, v); - // Note that we've consumed attr, but didn't actually use it. This is the path component that's looked - // up in the list or attribute set that doesn't name an option -- the "root" in "users.users.root.name". - } else if (v.type != tAttrs) { - throw OptionPathError("Value is %s while a set was expected", showType(v)); - } else { - const auto & next = v.attrs->find(ctx.state.symbols.create(attr)); - if (next == v.attrs->end()) { - throw OptionPathError("Attribute not found", attr, path); - } - v = *next->value; - } - } catch (OptionPathError & e) { - throw OptionPathError("At '%s' in path '%s': %s", attr, path, e.msg()); - } - } - return v; -} - void printOne(Context & ctx, Out & out, const std::string & path) { try { - Value option = findAlongOptionPath(ctx, path); + auto result = findAlongOptionPath(ctx, path); + Value & option = result.option; option = evaluateValue(ctx, option); + if (path != result.path) { + out << "Note: showing " << result.path << " instead of " << path << "\n"; + } if (isOption(ctx, option)) { - printOption(ctx, out, path, option); + printOption(ctx, out, result.path, option); } else { printListing(out, option); } @@ -552,7 +583,7 @@ void printOne(Context & ctx, Out & out, const std::string & path) int main(int argc, char ** argv) { - bool all = false; + bool recursive = false; std::string path = "."; std::string optionsExpr = "(import {}).options"; std::string configExpr = "(import {}).config"; @@ -568,8 +599,8 @@ int main(int argc, char ** argv) nix::showManPage("nixos-option"); } else if (*arg == "--version") { nix::printVersion("nixos-option"); - } else if (*arg == "--all") { - all = true; + } else if (*arg == "-r" || *arg == "--recursive") { + recursive = true; } else if (*arg == "--path") { path = nix::getArg(*arg, arg, end); } else if (*arg == "--options_expr") { @@ -598,18 +629,12 @@ int main(int argc, char ** argv) Context ctx{*state, *myArgs.getAutoArgs(*state), optionsRoot, configRoot}; Out out(std::cout); - if (all) { - if (!args.empty()) { - throw UsageError("--all cannot be used with arguments"); - } - printAll(ctx, out); - } else { - if (args.empty()) { - printOne(ctx, out, ""); - } - for (const auto & arg : args) { - printOne(ctx, out, arg); - } + auto print = recursive ? printRecursive : printOne; + if (args.empty()) { + print(ctx, out, ""); + } + for (const auto & arg : args) { + print(ctx, out, arg); } ctx.state.printStats(); diff --git a/nixos/modules/installer/tools/nixos-rebuild.sh b/nixos/modules/installer/tools/nixos-rebuild.sh index c53dc1000c4..354274478a3 100644 --- a/nixos/modules/installer/tools/nixos-rebuild.sh +++ b/nixos/modules/installer/tools/nixos-rebuild.sh @@ -3,6 +3,9 @@ if [ -x "@shell@" ]; then export SHELL="@shell@"; fi; set -e +set -o pipefail + +export PATH=@path@:$PATH showSyntax() { exec man nixos-rebuild @@ -13,6 +16,7 @@ showSyntax() { # Parse the command line. origArgs=("$@") extraBuildFlags=() +lockFlags=() action= buildNix=1 fast= @@ -22,7 +26,7 @@ repair= profile=/nix/var/nix/profiles/system buildHost= targetHost= -maybeSudo= +maybeSudo=() while [ "$#" -gt 0 ]; do i="$1"; shift 1 @@ -58,7 +62,7 @@ while [ "$#" -gt 0 ]; do j="$1"; shift 1 extraBuildFlags+=("$i" "$j") ;; - --show-trace|--keep-failed|-K|--keep-going|-k|--verbose|-v|-vv|-vvv|-vvvv|-vvvvv|--fallback|--repair|--no-build-output|-Q|-j*) + --show-trace|--keep-failed|-K|--keep-going|-k|--verbose|-v|-vv|-vvv|-vvvv|-vvvvv|--fallback|--repair|--no-build-output|-Q|-j*|-L|--refresh|--no-net) extraBuildFlags+=("$i") ;; --option) @@ -91,10 +95,24 @@ while [ "$#" -gt 0 ]; do shift 1 ;; --use-remote-sudo) - # note the trailing space - maybeSudo="sudo " + maybeSudo=(sudo --) + ;; + --flake) + flake="$1" shift 1 ;; + --recreate-lock-file|--no-update-lock-file|--no-write-lock-file|--no-registries|--commit-lock-file) + lockFlags+=("$i") + ;; + --update-input) + j="$1"; shift 1 + lockFlags+=("$i" "$j") + ;; + --override-input) + j="$1"; shift 1 + k="$1"; shift 1 + lockFlags+=("$i" "$j" "$k") + ;; *) echo "$0: unknown option \`$i'" exit 1 @@ -102,6 +120,10 @@ while [ "$#" -gt 0 ]; do esac done +if [ -n "$SUDO_USER" ]; then + maybeSudo=(sudo --) +fi + if [ -z "$buildHost" -a -n "$targetHost" ]; then buildHost="$targetHost" fi @@ -116,17 +138,17 @@ buildHostCmd() { if [ -z "$buildHost" ]; then "$@" elif [ -n "$remoteNix" ]; then - ssh $SSHOPTS "$buildHost" env PATH="$remoteNix:$PATH" "$maybeSudo$@" + ssh $SSHOPTS "$buildHost" env PATH="$remoteNix:$PATH" "${maybeSudo[@]}" "$@" else - ssh $SSHOPTS "$buildHost" "$maybeSudo$@" + ssh $SSHOPTS "$buildHost" "${maybeSudo[@]}" "$@" fi } targetHostCmd() { if [ -z "$targetHost" ]; then - "$@" + "${maybeSudo[@]}" "$@" else - ssh $SSHOPTS "$targetHost" "$maybeSudo$@" + ssh $SSHOPTS "$targetHost" "${maybeSudo[@]}" "$@" fi } @@ -200,7 +222,7 @@ fi # If ‘--upgrade’ is given, run ‘nix-channel --update nixos’. -if [ -n "$upgrade" -a -z "$_NIXOS_REBUILD_REEXEC" ]; then +if [[ -n $upgrade && -z $_NIXOS_REBUILD_REEXEC && -z $flake ]]; then nix-channel --update nixos # If there are other channels that contain a file called @@ -223,8 +245,15 @@ if [ -z "$_NIXOS_REBUILD_REEXEC" ]; then export PATH=@nix@/bin:$PATH fi +# Use /etc/nixos/flake.nix if it exists. It can be a symlink to the +# actual flake. +if [[ -z $flake && -e /etc/nixos/flake.nix ]]; then + flake="$(dirname "$(readlink -f /etc/nixos/flake.nix)")" +fi + # Re-execute nixos-rebuild from the Nixpkgs tree. -if [ -z "$_NIXOS_REBUILD_REEXEC" -a -n "$canRun" -a -z "$fast" ]; then +# FIXME: get nixos-rebuild from $flake. +if [[ -z $_NIXOS_REBUILD_REEXEC && -n $canRun && -z $fast && -z $flake ]]; then if p=$(nix-build --no-out-link --expr 'with import {}; config.system.build.nixos-rebuild' "${extraBuildFlags[@]}"); then export _NIXOS_REBUILD_REEXEC=1 exec $p/bin/nixos-rebuild "${origArgs[@]}" @@ -232,10 +261,37 @@ if [ -z "$_NIXOS_REBUILD_REEXEC" -a -n "$canRun" -a -z "$fast" ]; then fi fi +# For convenience, use the hostname as the default configuration to +# build from the flake. +if [[ -n $flake ]]; then + if [[ $flake =~ ^(.*)\#([^\#\"]*)$ ]]; then + flake="${BASH_REMATCH[1]}" + flakeAttr="${BASH_REMATCH[2]}" + fi + if [[ -z $flakeAttr ]]; then + read -r hostname < /proc/sys/kernel/hostname + if [[ -z $hostname ]]; then + hostname=default + fi + flakeAttr="nixosConfigurations.\"$hostname\"" + else + flakeAttr="nixosConfigurations.\"$flakeAttr\"" + fi +fi + +# Resolve the flake. +if [[ -n $flake ]]; then + flake=$(nix flake info --json "${extraBuildFlags[@]}" "${lockFlags[@]}" -- "$flake" | jq -r .url) +fi + # Find configuration.nix and open editor instead of building. if [ "$action" = edit ]; then - NIXOS_CONFIG=${NIXOS_CONFIG:-$(nix-instantiate --find-file nixos-config)} - exec "${EDITOR:-nano}" "$NIXOS_CONFIG" + if [[ -z $flake ]]; then + NIXOS_CONFIG=${NIXOS_CONFIG:-$(nix-instantiate --find-file nixos-config)} + exec "${EDITOR:-nano}" "$NIXOS_CONFIG" + else + exec nix edit "${lockFlags[@]}" -- "$flake#$flakeAttr" + fi exit 1 fi @@ -294,7 +350,7 @@ prebuiltNix() { remotePATH= -if [ -n "$buildNix" ]; then +if [[ -n $buildNix && -z $flake ]]; then echo "building Nix..." >&2 nixDrv= if ! nixDrv="$(nix-instantiate '' --add-root $tmpDir/nix.drv --indirect -A config.nix.package.out "${extraBuildFlags[@]}")"; then @@ -335,7 +391,7 @@ fi # Update the version suffix if we're building from Git (so that # nixos-version shows something useful). -if [ -n "$canRun" ]; then +if [[ -n $canRun && -z $flake ]]; then if nixpkgs=$(nix-instantiate --find-file nixpkgs "${extraBuildFlags[@]}"); then suffix=$($SHELL $nixpkgs/nixos/modules/installer/tools/get-version-suffix "${extraBuildFlags[@]}" || true) if [ -n "$suffix" ]; then @@ -356,15 +412,37 @@ fi if [ -z "$rollback" ]; then echo "building the system configuration..." >&2 if [ "$action" = switch -o "$action" = boot ]; then - pathToConfig="$(nixBuild '' --no-out-link -A system "${extraBuildFlags[@]}")" + if [[ -z $flake ]]; then + pathToConfig="$(nixBuild '' --no-out-link -A system "${extraBuildFlags[@]}")" + else + outLink=$tmpDir/result + nix build "$flake#$flakeAttr.config.system.build.toplevel" \ + "${extraBuildFlags[@]}" "${lockFlags[@]}" --out-link $outLink + pathToConfig="$(readlink -f $outLink)" + fi copyToTarget "$pathToConfig" targetHostCmd nix-env -p "$profile" --set "$pathToConfig" elif [ "$action" = test -o "$action" = build -o "$action" = dry-build -o "$action" = dry-activate ]; then - pathToConfig="$(nixBuild '' -A system -k "${extraBuildFlags[@]}")" + if [[ -z $flake ]]; then + pathToConfig="$(nixBuild '' -A system -k "${extraBuildFlags[@]}")" + else + nix build "$flake#$flakeAttr.config.system.build.toplevel" "${extraBuildFlags[@]}" "${lockFlags[@]}" + pathToConfig="$(readlink -f ./result)" + fi elif [ "$action" = build-vm ]; then - pathToConfig="$(nixBuild '' -A vm -k "${extraBuildFlags[@]}")" + if [[ -z $flake ]]; then + pathToConfig="$(nixBuild '' -A vm -k "${extraBuildFlags[@]}")" + else + echo "$0: 'build-vm' is not supported with '--flake'" >&2 + exit 1 + fi elif [ "$action" = build-vm-with-bootloader ]; then - pathToConfig="$(nixBuild '' -A vmWithBootLoader -k "${extraBuildFlags[@]}")" + if [[ -z $flake ]]; then + pathToConfig="$(nixBuild '' -A vmWithBootLoader -k "${extraBuildFlags[@]}")" + else + echo "$0: 'build-vm-with-bootloader' is not supported with '--flake'" >&2 + exit 1 + fi else showSyntax fi diff --git a/nixos/modules/installer/tools/nixos-version.sh b/nixos/modules/installer/tools/nixos-version.sh index 190c49a33ec..fb0fe26116a 100644 --- a/nixos/modules/installer/tools/nixos-version.sh +++ b/nixos/modules/installer/tools/nixos-version.sh @@ -6,8 +6,17 @@ case "$1" in exit 1 ;; --hash|--revision) + if ! [[ @revision@ =~ ^[0-9a-f]+$ ]]; then + echo "$0: Nixpkgs commit hash is unknown" + exit 1 + fi echo "@revision@" ;; + --json) + cat < " - + "for the NixOS manual." + "\nRun 'nixos-help' for the NixOS manual." ); }) diff --git a/nixos/modules/misc/ids.nix b/nixos/modules/misc/ids.nix index bedd87a368e..85e5534e906 100644 --- a/nixos/modules/misc/ids.nix +++ b/nixos/modules/misc/ids.nix @@ -133,7 +133,7 @@ in tcpcryptd = 93; # tcpcryptd uses a hard-coded uid. We patch it in Nixpkgs to match this choice. firebird = 95; #keys = 96; # unused - #haproxy = 97; # DynamicUser as of 2019-11-08 + #haproxy = 97; # dynamically allocated as of 2020-03-11 mongodb = 98; openldap = 99; #users = 100; # unused @@ -299,7 +299,7 @@ in couchpotato = 267; gogs = 268; pdns-recursor = 269; - kresd = 270; + #kresd = 270; # switched to "knot-resolver" with dynamic ID rpc = 271; geoip = 272; fcron = 273; @@ -448,7 +448,7 @@ in #tcpcryptd = 93; # unused firebird = 95; keys = 96; - #haproxy = 97; # DynamicUser as of 2019-11-08 + #haproxy = 97; # dynamically allocated as of 2020-03-11 #mongodb = 98; # unused openldap = 99; munin = 102; @@ -600,7 +600,7 @@ in headphones = 266; couchpotato = 267; gogs = 268; - kresd = 270; + #kresd = 270; # switched to "knot-resolver" with dynamic ID #rpc = 271; # unused #geoip = 272; # unused fcron = 273; diff --git a/nixos/modules/misc/locate.nix b/nixos/modules/misc/locate.nix index 552535c253e..dc668796c78 100644 --- a/nixos/modules/misc/locate.nix +++ b/nixos/modules/misc/locate.nix @@ -131,13 +131,6 @@ in { ++ optional (isFindutils && cfg.pruneNames != []) "findutils locate does not support pruning by directory component" ++ optional (isFindutils && cfg.pruneBindMounts) "findutils locate does not support skipping bind mounts"; - # directory creation needs to be separated from main service - # because ReadWritePaths fails when the directory doesn't already exist - systemd.tmpfiles.rules = - let dir = dirOf cfg.output; in - mkIf (dir != "/var/cache") - [ "d ${dir} 0755 root root -" ]; - systemd.services.update-locatedb = { description = "Update Locate Database"; path = mkIf (!isMLocate) [ pkgs.su ]; diff --git a/nixos/modules/misc/nixpkgs.nix b/nixos/modules/misc/nixpkgs.nix index afb74581e23..4f5a9250eaa 100644 --- a/nixos/modules/misc/nixpkgs.nix +++ b/nixos/modules/misc/nixpkgs.nix @@ -216,6 +216,14 @@ in Ignored when nixpkgs.pkgs is set. ''; }; + + initialSystem = mkOption { + type = types.str; + internal = true; + description = '' + Preserved value of system passed to eval-config.nix. + ''; + }; }; config = { @@ -228,8 +236,8 @@ in let nixosExpectedSystem = if config.nixpkgs.crossSystem != null - then config.nixpkgs.crossSystem.system - else config.nixpkgs.localSystem.system; + then config.nixpkgs.crossSystem.system or (lib.systems.parse.doubleFromSystem (lib.systems.parse.mkSystemFromString config.nixpkgs.crossSystem.config)) + else config.nixpkgs.localSystem.system or (lib.systems.parse.doubleFromSystem (lib.systems.parse.mkSystemFromString config.nixpkgs.localSystem.config)); nixosOption = if config.nixpkgs.crossSystem != null then "nixpkgs.crossSystem" diff --git a/nixos/modules/misc/version.nix b/nixos/modules/misc/version.nix index 0540b493003..ae98fba1580 100644 --- a/nixos/modules/misc/version.nix +++ b/nixos/modules/misc/version.nix @@ -4,9 +4,6 @@ with lib; let cfg = config.system.nixos; - - gitRepo = "${toString pkgs.path}/.git"; - gitCommitId = lib.substring 0 7 (commitIdFromGitRepo gitRepo); in { @@ -41,8 +38,8 @@ in nixos.revision = mkOption { internal = true; - type = types.str; - default = trivial.revisionWithDefault "master"; + type = types.nullOr types.str; + default = trivial.revisionWithDefault null; description = "The Git revision from which this NixOS configuration was built."; }; @@ -61,21 +58,34 @@ in configuration defaults in a way incompatible with stateful data. For instance, if the default version of PostgreSQL changes, the new version will probably be unable to read your - existing databases. To prevent such breakage, you can set the + existing databases. To prevent such breakage, you should set the value of this option to the NixOS release with which you want - to be compatible. The effect is that NixOS will option + to be compatible. The effect is that NixOS will use defaults corresponding to the specified release (such as using an older version of PostgreSQL). + It‘s perfectly fine and recommended to leave this value at the + release version of the first install of this system. + Changing this option will not upgrade your system. In fact it + is meant to stay constant exactly when you upgrade your system. + You should only bump this option, if you are sure that you can + or have migrated all state on your system which is affected + by this option. ''; }; defaultChannel = mkOption { internal = true; type = types.str; - default = https://nixos.org/channels/nixos-unstable; + default = "https://nixos.org/channels/nixos-unstable"; description = "Default NixOS channel to which the root user is subscribed."; }; + configurationRevision = mkOption { + type = types.nullOr types.str; + default = null; + description = "The Git revision of the top-level flake from which this configuration was built."; + }; + }; config = { @@ -84,8 +94,6 @@ in # These defaults are set here rather than up there so that # changing them would not rebuild the manual version = mkDefault (cfg.release + cfg.versionSuffix); - revision = mkIf (pathIsDirectory gitRepo) (mkDefault gitCommitId); - versionSuffix = mkIf (pathIsDirectory gitRepo) (mkDefault (".git." + gitCommitId)); }; # Generate /etc/os-release. See diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index 7650da89cbd..df08ac2959e 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -41,7 +41,6 @@ ./hardware/acpilight.nix ./hardware/all-firmware.nix ./hardware/bladeRF.nix - ./hardware/brightnessctl.nix ./hardware/brillo.nix ./hardware/ckb-next.nix ./hardware/cpu/amd-microcode.nix @@ -62,8 +61,11 @@ ./hardware/printers.nix ./hardware/raid/hpsa.nix ./hardware/steam-hardware.nix + ./hardware/tuxedo-keyboard.nix ./hardware/usb-wwan.nix ./hardware/onlykey.nix + ./hardware/wooting.nix + ./hardware/uinput.nix ./hardware/video/amdgpu.nix ./hardware/video/amdgpu-pro.nix ./hardware/video/ati.nix @@ -95,7 +97,9 @@ ./programs/adb.nix ./programs/atop.nix ./programs/autojump.nix + ./programs/bandwhich.nix ./programs/bash/bash.nix + ./programs/bash-my-aws.nix ./programs/bcc.nix ./programs/browserpass.nix ./programs/captive-browser.nix @@ -115,6 +119,7 @@ ./programs/fish.nix ./programs/freetds.nix ./programs/fuse.nix + ./programs/geary.nix ./programs/gnome-disks.nix ./programs/gnome-documents.nix ./programs/gnome-terminal.nix @@ -126,6 +131,7 @@ ./programs/java.nix ./programs/kbdlight.nix ./programs/less.nix + ./programs/liboping.nix ./programs/light.nix ./programs/mosh.nix ./programs/mininet.nix @@ -151,13 +157,13 @@ ./programs/system-config-printer.nix ./programs/thefuck.nix ./programs/tmux.nix + ./programs/traceroute.nix ./programs/tsm-client.nix ./programs/udevil.nix ./programs/usbtop.nix ./programs/venus.nix ./programs/vim.nix ./programs/wavemon.nix - ./programs/way-cooler.nix ./programs/waybar.nix ./programs/wireshark.nix ./programs/x2goserver.nix @@ -196,6 +202,7 @@ ./security/wrappers/default.nix ./security/sudo.nix ./security/systemd-confinement.nix + ./security/tpm2.nix ./services/admin/oxidized.nix ./services/admin/salt/master.nix ./services/admin/salt/minion.nix @@ -224,11 +231,14 @@ ./services/backup/restic.nix ./services/backup/restic-rest-server.nix ./services/backup/rsnapshot.nix + ./services/backup/sanoid.nix + ./services/backup/syncoid.nix ./services/backup/tarsnap.nix ./services/backup/tsm.nix ./services/backup/zfs-replication.nix ./services/backup/znapzend.nix ./services/cluster/hadoop/default.nix + ./services/cluster/k3s/default.nix ./services/cluster/kubernetes/addons/dns.nix ./services/cluster/kubernetes/addons/dashboard.nix ./services/cluster/kubernetes/addon-manager.nix @@ -241,12 +251,13 @@ ./services/cluster/kubernetes/proxy.nix ./services/cluster/kubernetes/scheduler.nix ./services/computing/boinc/client.nix - ./services/computing/torque/server.nix - ./services/computing/torque/mom.nix + ./services/computing/foldingathome/client.nix ./services/computing/slurm/slurm.nix + ./services/computing/torque/mom.nix + ./services/computing/torque/server.nix ./services/continuous-integration/buildbot/master.nix ./services/continuous-integration/buildbot/worker.nix - ./services/continuous-integration/buildkite-agent.nix + ./services/continuous-integration/buildkite-agents.nix ./services/continuous-integration/hail.nix ./services/continuous-integration/hydra/default.nix ./services/continuous-integration/gitlab-runner.nix @@ -277,6 +288,7 @@ ./services/databases/riak.nix ./services/databases/riak-cs.nix ./services/databases/stanchion.nix + ./services/databases/victoriametrics.nix ./services/databases/virtuoso.nix ./services/desktops/accountsservice.nix ./services/desktops/bamf.nix @@ -284,12 +296,12 @@ ./services/desktops/deepin/deepin.nix ./services/desktops/dleyna-renderer.nix ./services/desktops/dleyna-server.nix - ./services/desktops/pantheon/contractor.nix ./services/desktops/pantheon/files.nix ./services/desktops/flatpak.nix ./services/desktops/geoclue2.nix ./services/desktops/gsignond.nix ./services/desktops/gvfs.nix + ./services/desktops/malcontent.nix ./services/desktops/pipewire.nix ./services/desktops/gnome3/at-spi2-core.nix ./services/desktops/gnome3/chrome-gnome-shell.nix @@ -357,6 +369,7 @@ ./services/hardware/thermald.nix ./services/hardware/undervolt.nix ./services/hardware/vdr.nix + ./services/hardware/xow.nix ./services/logging/SystemdJournal2Gelf.nix ./services/logging/awstats.nix ./services/logging/fluentd.nix @@ -395,8 +408,10 @@ ./services/mail/rspamd.nix ./services/mail/rss2email.nix ./services/mail/roundcube.nix + ./services/mail/sympa.nix ./services/mail/nullmailer.nix ./services/misc/airsonic.nix + ./services/misc/ankisyncd.nix ./services/misc/apache-kafka.nix ./services/misc/autofs.nix ./services/misc/autorandr.nix @@ -422,7 +437,7 @@ ./services/misc/ethminer.nix ./services/misc/exhibitor.nix ./services/misc/felix.nix - ./services/misc/folding-at-home.nix + ./services/misc/freeswitch.nix ./services/misc/fstrim.nix ./services/misc/gammu-smsd.nix ./services/misc/geoip-updater.nix @@ -456,7 +471,6 @@ ./services/misc/nix-daemon.nix ./services/misc/nix-gc.nix ./services/misc/nix-optimise.nix - ./services/misc/nixos-manual.nix ./services/misc/nix-ssh-serve.nix ./services/misc/novacomd.nix ./services/misc/nzbget.nix @@ -472,7 +486,6 @@ ./services/misc/redmine.nix ./services/misc/rippled.nix ./services/misc/ripple-data-api.nix - ./services/misc/rogue.nix ./services/misc/serviio.nix ./services/misc/safeeyes.nix ./services/misc/sickbeard.nix @@ -523,6 +536,7 @@ ./services/monitoring/prometheus/alertmanager.nix ./services/monitoring/prometheus/exporters.nix ./services/monitoring/prometheus/pushgateway.nix + ./services/monitoring/prometheus/xmpp-alerts.nix ./services/monitoring/riemann.nix ./services/monitoring/riemann-dash.nix ./services/monitoring/riemann-tools.nix @@ -532,6 +546,7 @@ ./services/monitoring/teamviewer.nix ./services/monitoring/telegraf.nix ./services/monitoring/thanos.nix + ./services/monitoring/tuptime.nix ./services/monitoring/ups.nix ./services/monitoring/uptime.nix ./services/monitoring/vnstat.nix @@ -576,6 +591,7 @@ ./services/networking/connman.nix ./services/networking/consul.nix ./services/networking/coredns.nix + ./services/networking/corerad.nix ./services/networking/coturn.nix ./services/networking/dante.nix ./services/networking/ddclient.nix @@ -583,7 +599,7 @@ ./services/networking/dhcpd.nix ./services/networking/dnscache.nix ./services/networking/dnschain.nix - ./services/networking/dnscrypt-proxy.nix + ./services/networking/dnscrypt-proxy2.nix ./services/networking/dnscrypt-wrapper.nix ./services/networking/dnsdist.nix ./services/networking/dnsmasq.nix @@ -629,6 +645,7 @@ ./services/networking/lldpd.nix ./services/networking/logmein-hamachi.nix ./services/networking/mailpile.nix + ./services/networking/magic-wormhole-mailbox-server.nix ./services/networking/matterbridge.nix ./services/networking/mjpg-streamer.nix ./services/networking/minidlna.nix @@ -639,6 +656,7 @@ ./services/networking/miredo.nix ./services/networking/mstpd.nix ./services/networking/mtprotoproxy.nix + ./services/networking/mullvad-vpn.nix ./services/networking/murmur.nix ./services/networking/mxisd.nix ./services/networking/namecoind.nix @@ -649,6 +667,7 @@ ./services/networking/ngircd.nix ./services/networking/nghttpx/default.nix ./services/networking/nix-serve.nix + ./services/networking/nix-store-gcs-proxy.nix ./services/networking/nixops-dns.nix ./services/networking/nntp-proxy.nix ./services/networking/nsd.nix @@ -666,6 +685,7 @@ ./services/networking/ostinato.nix ./services/networking/owamp.nix ./services/networking/pdnsd.nix + ./services/networking/pixiecore.nix ./services/networking/polipo.nix ./services/networking/powerdns.nix ./services/networking/pdns-recursor.nix @@ -676,6 +696,7 @@ ./services/networking/prosody.nix ./services/networking/quagga.nix ./services/networking/quassel.nix + ./services/networking/quorum.nix ./services/networking/quicktun.nix ./services/networking/racoon.nix ./services/networking/radicale.nix @@ -691,10 +712,14 @@ ./services/networking/skydns.nix ./services/networking/shadowsocks.nix ./services/networking/shairport-sync.nix + ./services/networking/shorewall.nix + ./services/networking/shorewall6.nix ./services/networking/shout.nix ./services/networking/sniproxy.nix + ./services/networking/smartdns.nix ./services/networking/smokeping.nix ./services/networking/softether.nix + ./services/networking/spacecookie.nix ./services/networking/spiped.nix ./services/networking/squid.nix ./services/networking/sslh.nix @@ -709,6 +734,7 @@ ./services/networking/syncthing.nix ./services/networking/syncthing-relay.nix ./services/networking/syncplay.nix + ./services/networking/tailscale.nix ./services/networking/tcpcrypt.nix ./services/networking/teamspeak3.nix ./services/networking/tedicross.nix @@ -731,6 +757,7 @@ ./services/networking/wicd.nix ./services/networking/wireguard.nix ./services/networking/wpa_supplicant.nix + ./services/networking/xandikos.nix ./services/networking/xinetd.nix ./services/networking/xl2tpd.nix ./services/networking/xrdp.nix @@ -792,16 +819,22 @@ ./services/ttys/agetty.nix ./services/ttys/gpm.nix ./services/ttys/kmscon.nix + ./services/wayland/cage.nix ./services/web-apps/atlassian/confluence.nix ./services/web-apps/atlassian/crowd.nix ./services/web-apps/atlassian/jira.nix ./services/web-apps/codimd.nix ./services/web-apps/cryptpad.nix ./services/web-apps/documize.nix + ./services/web-apps/dokuwiki.nix ./services/web-apps/frab.nix + ./services/web-apps/gerrit.nix ./services/web-apps/gotify-server.nix + ./services/web-apps/grocy.nix ./services/web-apps/icingaweb2/icingaweb2.nix ./services/web-apps/icingaweb2/module-monitoring.nix + ./services/web-apps/ihatemoney + ./services/web-apps/jirafeau.nix ./services/web-apps/limesurvey.nix ./services/web-apps/mattermost.nix ./services/web-apps/mediawiki.nix @@ -815,6 +848,7 @@ ./services/web-apps/restya-board.nix ./services/web-apps/tt-rss.nix ./services/web-apps/trac.nix + ./services/web-apps/trilium.nix ./services/web-apps/selfoss.nix ./services/web-apps/shiori.nix ./services/web-apps/virtlyst.nix @@ -849,11 +883,10 @@ ./services/x11/extra-layouts.nix ./services/x11/clight.nix ./services/x11/colord.nix - ./services/x11/compton.nix + ./services/x11/picom.nix ./services/x11/unclutter.nix ./services/x11/unclutter-xfixes.nix ./services/x11/desktop-managers/default.nix - ./services/x11/display-managers/auto.nix ./services/x11/display-managers/default.nix ./services/x11/display-managers/gdm.nix ./services/x11/display-managers/lightdm.nix @@ -863,7 +896,6 @@ ./services/x11/display-managers/xpra.nix ./services/x11/fractalart.nix ./services/x11/hardware/libinput.nix - ./services/x11/hardware/multitouch.nix ./services/x11/hardware/synaptics.nix ./services/x11/hardware/wacom.nix ./services/x11/hardware/digimend.nix diff --git a/nixos/modules/profiles/hardened.nix b/nixos/modules/profiles/hardened.nix index f7b2f5c7fc1..ef8c0d74f06 100644 --- a/nixos/modules/profiles/hardened.nix +++ b/nixos/modules/profiles/hardened.nix @@ -7,19 +7,20 @@ with lib; { meta = { - maintainers = [ maintainers.joachifm ]; + maintainers = [ maintainers.joachifm maintainers.emily ]; }; boot.kernelPackages = mkDefault pkgs.linuxPackages_hardened; nix.allowedUsers = mkDefault [ "@users" ]; + environment.memoryAllocator.provider = mkDefault "scudo"; + environment.variables.SCUDO_OPTIONS = mkDefault "ZeroContents=1"; + security.hideProcessInformation = mkDefault true; security.lockKernelModules = mkDefault true; - security.allowUserNamespaces = mkDefault false; - security.protectKernelImage = mkDefault true; security.allowSimultaneousMultithreading = mkDefault false; @@ -34,15 +35,9 @@ with lib; # Slab/slub sanity checks, redzoning, and poisoning "slub_debug=FZP" - # Disable slab merging to make certain heap overflow attacks harder - "slab_nomerge" - # Overwrite free'd memory "page_poison=1" - # Disable legacy virtual syscalls - "vsyscall=none" - # Enable page allocator randomization "page_alloc.shuffle=1" ]; @@ -79,38 +74,12 @@ with lib; # (e.g., parent/child) boot.kernel.sysctl."kernel.yama.ptrace_scope" = mkOverride 500 1; - # Restrict access to kernel ring buffer (information leaks) - boot.kernel.sysctl."kernel.dmesg_restrict" = mkDefault true; - # Hide kptrs even for processes with CAP_SYSLOG boot.kernel.sysctl."kernel.kptr_restrict" = mkOverride 500 2; - # Unprivileged access to bpf() has been used for privilege escalation in - # the past - boot.kernel.sysctl."kernel.unprivileged_bpf_disabled" = mkDefault true; - # Disable bpf() JIT (to eliminate spray attacks) boot.kernel.sysctl."net.core.bpf_jit_enable" = mkDefault false; - # ... or at least apply some hardening to it - boot.kernel.sysctl."net.core.bpf_jit_harden" = mkDefault true; - - # Raise ASLR entropy for 64bit & 32bit, respectively. - # - # Note: mmap_rnd_compat_bits may not exist on 64bit. - boot.kernel.sysctl."vm.mmap_rnd_bits" = mkDefault 32; - boot.kernel.sysctl."vm.mmap_rnd_compat_bits" = mkDefault 16; - - # Allowing users to mmap() memory starting at virtual address 0 can turn a - # NULL dereference bug in the kernel into code execution with elevated - # privilege. Mitigate by enforcing a minimum base addr beyond the NULL memory - # space. This breaks applications that require mapping the 0 page, such as - # dosemu or running 16bit applications under wine. It also breaks older - # versions of qemu. - # - # The value is taken from the KSPP recommendations (Debian uses 4096). - boot.kernel.sysctl."vm.mmap_min_addr" = mkDefault 65536; - # Disable ftrace debugging boot.kernel.sysctl."kernel.ftrace_enabled" = mkDefault false; @@ -137,7 +106,4 @@ with lib; # Ignore outgoing ICMP redirects (this is ipv4 only) boot.kernel.sysctl."net.ipv4.conf.all.send_redirects" = mkDefault false; boot.kernel.sysctl."net.ipv4.conf.default.send_redirects" = mkDefault false; - - # Restrict userfaultfd syscalls to processes with the SYS_PTRACE capability - boot.kernel.sysctl."vm.unprivileged_userfaultfd" = mkDefault false; } diff --git a/nixos/modules/profiles/installation-device.nix b/nixos/modules/profiles/installation-device.nix index 4596e163404..d05c0c50e82 100644 --- a/nixos/modules/profiles/installation-device.nix +++ b/nixos/modules/profiles/installation-device.nix @@ -26,10 +26,6 @@ with lib; # Show the manual. documentation.nixos.enable = mkForce true; - services.nixosManual.showManual = true; - - # Let the user play Rogue on TTY 8 during the installation. - #services.rogue.enable = true; # Use less privileged nixos user users.users.nixos = { diff --git a/nixos/modules/programs/bandwhich.nix b/nixos/modules/programs/bandwhich.nix new file mode 100644 index 00000000000..5413044f461 --- /dev/null +++ b/nixos/modules/programs/bandwhich.nix @@ -0,0 +1,29 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let cfg = config.programs.bandwhich; +in { + meta.maintainers = with maintainers; [ filalex77 ]; + + options = { + programs.bandwhich = { + enable = mkOption { + type = types.bool; + default = false; + description = '' + Whether to add bandwhich to the global environment and configure a + setcap wrapper for it. + ''; + }; + }; + }; + + config = mkIf cfg.enable { + environment.systemPackages = with pkgs; [ bandwhich ]; + security.wrappers.bandwhich = { + source = "${pkgs.bandwhich}/bin/bandwhich"; + capabilities = "cap_net_raw,cap_net_admin+ep"; + }; + }; +} diff --git a/nixos/modules/programs/bash-my-aws.nix b/nixos/modules/programs/bash-my-aws.nix new file mode 100644 index 00000000000..15e429a7549 --- /dev/null +++ b/nixos/modules/programs/bash-my-aws.nix @@ -0,0 +1,25 @@ +{ config, pkgs, lib, ... }: + +with lib; + +let + prg = config.programs; + cfg = prg.bash-my-aws; + + initScript = '' + eval $(${pkgs.bash-my-aws}/bin/bma-init) + ''; +in + { + options = { + programs.bash-my-aws = { + enable = mkEnableOption "bash-my-aws"; + }; + }; + + config = mkIf cfg.enable { + environment.systemPackages = with pkgs; [ bash-my-aws ]; + + programs.bash.interactiveShellInit = initScript; + }; + } diff --git a/nixos/modules/programs/bash/bash.nix b/nixos/modules/programs/bash/bash.nix index 366c07c0a35..be964ce7f3f 100644 --- a/nixos/modules/programs/bash/bash.nix +++ b/nixos/modules/programs/bash/bash.nix @@ -32,6 +32,10 @@ let fi ''; + lsColors = optionalString cfg.enableLsColors '' + eval "$(${pkgs.coreutils}/bin/dircolors -b)" + ''; + bashAliases = concatStringsSep "\n" ( mapAttrsFlatten (k: v: "alias ${k}=${escapeShellArg v}") (filterAttrs (k: v: v != null) cfg.shellAliases) @@ -127,6 +131,14 @@ in type = types.bool; }; + enableLsColors = mkOption { + default = true; + description = '' + Enable extra colors in directory listings. + ''; + type = types.bool; + }; + }; }; @@ -156,6 +168,7 @@ in ${cfg.promptInit} ${bashCompletion} + ${lsColors} ${bashAliases} ${cfge.interactiveShellInit} diff --git a/nixos/modules/programs/captive-browser.nix b/nixos/modules/programs/captive-browser.nix index 55d474e5c9d..26db1675072 100644 --- a/nixos/modules/programs/captive-browser.nix +++ b/nixos/modules/programs/captive-browser.nix @@ -28,7 +28,7 @@ in browser = mkOption { type = types.str; default = concatStringsSep " " [ ''${pkgs.chromium}/bin/chromium'' - ''--user-data-dir=$HOME/.chromium-captive'' + ''--user-data-dir=''${XDG_DATA_HOME:-$HOME/.local/share}/chromium-captive'' ''--proxy-server="socks5://$PROXY"'' ''--host-resolver-rules="MAP * ~NOTFOUND , EXCLUDE localhost"'' ''--no-first-run'' diff --git a/nixos/modules/programs/dconf.nix b/nixos/modules/programs/dconf.nix index e0e2ffd80cf..6702e8efd1c 100644 --- a/nixos/modules/programs/dconf.nix +++ b/nixos/modules/programs/dconf.nix @@ -6,7 +6,10 @@ let cfg = config.programs.dconf; mkDconfProfile = name: path: - { source = path; target = "dconf/profile/${name}"; }; + { + name = "dconf/profile/${name}"; + value.source = path; + }; in { @@ -29,8 +32,8 @@ in ###### implementation config = mkIf (cfg.profiles != {} || cfg.enable) { - environment.etc = optionals (cfg.profiles != {}) - (mapAttrsToList mkDconfProfile cfg.profiles); + environment.etc = optionalAttrs (cfg.profiles != {}) + (mapAttrs' mkDconfProfile cfg.profiles); services.dbus.packages = [ pkgs.dconf ]; diff --git a/nixos/modules/programs/firejail.nix b/nixos/modules/programs/firejail.nix index 74c3e4425a7..484f9eb4440 100644 --- a/nixos/modules/programs/firejail.nix +++ b/nixos/modules/programs/firejail.nix @@ -5,28 +5,34 @@ with lib; let cfg = config.programs.firejail; - wrappedBins = pkgs.stdenv.mkDerivation { - name = "firejail-wrapped-binaries"; - nativeBuildInputs = with pkgs; [ makeWrapper ]; - buildCommand = '' + wrappedBins = pkgs.runCommand "firejail-wrapped-binaries" + { preferLocalBuild = true; + allowSubstitutes = false; + } + '' mkdir -p $out/bin ${lib.concatStringsSep "\n" (lib.mapAttrsToList (command: binary: '' - cat <<_EOF >$out/bin/${command} - #!${pkgs.stdenv.shell} -e - /run/wrappers/bin/firejail ${binary} "\$@" - _EOF - chmod 0755 $out/bin/${command} + cat <<_EOF >$out/bin/${command} + #! ${pkgs.runtimeShell} -e + exec /run/wrappers/bin/firejail ${binary} "\$@" + _EOF + chmod 0755 $out/bin/${command} '') cfg.wrappedBinaries)} ''; - }; in { options.programs.firejail = { enable = mkEnableOption "firejail"; wrappedBinaries = mkOption { - type = types.attrs; + type = types.attrsOf types.path; default = {}; + example = literalExample '' + { + firefox = "''${lib.getBin pkgs.firefox}/bin/firefox"; + mpv = "''${lib.getBin pkgs.mpv}/bin/mpv"; + } + ''; description = '' Wrap the binaries in firejail and place them in the global path. @@ -41,7 +47,7 @@ in { config = mkIf cfg.enable { security.wrappers.firejail.source = "${lib.getBin pkgs.firejail}/bin/firejail"; - environment.systemPackages = [ wrappedBins ]; + environment.systemPackages = [ pkgs.firejail ] ++ [ wrappedBins ]; }; meta.maintainers = with maintainers; [ peterhoeg ]; diff --git a/nixos/modules/programs/fish_completion-generator.patch b/nixos/modules/programs/fish_completion-generator.patch index a8c797d185a..997f38c5066 100644 --- a/nixos/modules/programs/fish_completion-generator.patch +++ b/nixos/modules/programs/fish_completion-generator.patch @@ -1,11 +1,13 @@ --- a/create_manpage_completions.py +++ b/create_manpage_completions.py -@@ -776,8 +776,6 @@ def parse_manpage_at_path(manpage_path, output_directory): - +@@ -844,10 +844,6 @@ def parse_manpage_at_path(manpage_path, output_directory): + built_command_output.insert(0, "# " + CMDNAME) - + - # Output the magic word Autogenerated so we can tell if we can overwrite this -- built_command_output.insert(1, "# Autogenerated from man page " + manpage_path) +- built_command_output.insert( +- 1, "# Autogenerated from man page " + manpage_path +- ) # built_command_output.insert(2, "# using " + parser.__class__.__name__) # XXX MISATTRIBUTES THE CULPABILE PARSER! Was really using Type2 but reporting TypeDeroffManParser - + for line in built_command_output: diff --git a/nixos/modules/programs/geary.nix b/nixos/modules/programs/geary.nix new file mode 100644 index 00000000000..5e441a75cb6 --- /dev/null +++ b/nixos/modules/programs/geary.nix @@ -0,0 +1,24 @@ +{ config, pkgs, lib, ... }: + +with lib; + +let + cfg = config.programs.geary; + +in { + meta = { + maintainers = teams.gnome.members; + }; + + options = { + programs.geary.enable = mkEnableOption "Geary, a Mail client for GNOME 3"; + }; + + config = mkIf cfg.enable { + environment.systemPackages = [ pkgs.gnome3.geary ]; + programs.dconf.enable = true; + services.gnome3.gnome-keyring.enable = true; + services.gnome3.gnome-online-accounts.enable = true; + }; +} + diff --git a/nixos/modules/programs/gnome-disks.nix b/nixos/modules/programs/gnome-disks.nix index 1cf839a6ddb..80dc2983ea5 100644 --- a/nixos/modules/programs/gnome-disks.nix +++ b/nixos/modules/programs/gnome-disks.nix @@ -6,6 +6,10 @@ with lib; { + meta = { + maintainers = teams.gnome.members; + }; + # Added 2019-08-09 imports = [ (mkRenamedOptionModule diff --git a/nixos/modules/programs/gnome-documents.nix b/nixos/modules/programs/gnome-documents.nix index bfa3d409ee3..9dd53483055 100644 --- a/nixos/modules/programs/gnome-documents.nix +++ b/nixos/modules/programs/gnome-documents.nix @@ -6,6 +6,10 @@ with lib; { + meta = { + maintainers = teams.gnome.members; + }; + # Added 2019-08-09 imports = [ (mkRenamedOptionModule diff --git a/nixos/modules/programs/gnome-terminal.nix b/nixos/modules/programs/gnome-terminal.nix index 0036677a157..f2617e5bc03 100644 --- a/nixos/modules/programs/gnome-terminal.nix +++ b/nixos/modules/programs/gnome-terminal.nix @@ -12,6 +12,10 @@ in { + meta = { + maintainers = teams.gnome.members; + }; + # Added 2019-08-19 imports = [ (mkRenamedOptionModule @@ -20,9 +24,7 @@ in ]; options = { - programs.gnome-terminal.enable = mkEnableOption "GNOME Terminal"; - }; config = mkIf cfg.enable { diff --git a/nixos/modules/programs/gnupg.nix b/nixos/modules/programs/gnupg.nix index 2d262d90657..7a3cb588ee7 100644 --- a/nixos/modules/programs/gnupg.nix +++ b/nixos/modules/programs/gnupg.nix @@ -96,7 +96,7 @@ in # This overrides the systemd user unit shipped with the gnupg package systemd.user.services.gpg-agent = mkIf (cfg.agent.pinentryFlavor != null) { serviceConfig.ExecStart = [ "" '' - ${pkgs.gnupg}/bin/gpg-agent --supervised \ + ${cfg.package}/bin/gpg-agent --supervised \ --pinentry-program ${pkgs.pinentry.${cfg.agent.pinentryFlavor}}/bin/pinentry '' ]; }; diff --git a/nixos/modules/programs/liboping.nix b/nixos/modules/programs/liboping.nix new file mode 100644 index 00000000000..4e4c235ccde --- /dev/null +++ b/nixos/modules/programs/liboping.nix @@ -0,0 +1,22 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.programs.liboping; +in { + options.programs.liboping = { + enable = mkEnableOption "liboping"; + }; + config = mkIf cfg.enable { + environment.systemPackages = with pkgs; [ liboping ]; + security.wrappers = mkMerge (map ( + exec: { + "${exec}" = { + source = "${pkgs.liboping}/bin/${exec}"; + capabilities = "cap_net_raw+p"; + }; + } + ) [ "oping" "noping" ]); + }; +} diff --git a/nixos/modules/programs/nm-applet.nix b/nixos/modules/programs/nm-applet.nix index e42219e9638..273a6dec59a 100644 --- a/nixos/modules/programs/nm-applet.nix +++ b/nixos/modules/programs/nm-applet.nix @@ -1,6 +1,10 @@ { config, lib, pkgs, ... }: { + meta = { + maintainers = lib.teams.freedesktop.members; + }; + options.programs.nm-applet.enable = lib.mkEnableOption "nm-applet"; config = lib.mkIf config.programs.nm-applet.enable { @@ -10,5 +14,7 @@ partOf = [ "graphical-session.target" ]; serviceConfig.ExecStart = "${pkgs.networkmanagerapplet}/bin/nm-applet"; }; + + services.dbus.packages = [ pkgs.gcr ]; }; } diff --git a/nixos/modules/programs/npm.nix b/nixos/modules/programs/npm.nix index b351d80c7ac..f101a44587a 100644 --- a/nixos/modules/programs/npm.nix +++ b/nixos/modules/programs/npm.nix @@ -13,7 +13,14 @@ in programs.npm = { enable = mkEnableOption "npm global config"; - npmrc = lib.mkOption { + package = mkOption { + type = types.path; + description = "The npm package version / flavor to use"; + default = pkgs.nodePackages.npm; + example = literalExample "pkgs.nodePackages_13_x.npm"; + }; + + npmrc = mkOption { type = lib.types.lines; description = '' The system-wide npm configuration. @@ -40,7 +47,7 @@ in environment.variables.NPM_CONFIG_GLOBALCONFIG = "/etc/npmrc"; - environment.systemPackages = [ pkgs.nodePackages.npm ]; + environment.systemPackages = [ cfg.package ]; }; } diff --git a/nixos/modules/programs/screen.nix b/nixos/modules/programs/screen.nix index 4fd800dbae7..728a0eb8cea 100644 --- a/nixos/modules/programs/screen.nix +++ b/nixos/modules/programs/screen.nix @@ -27,6 +27,7 @@ in environment.etc.screenrc.text = cfg.screenrc; environment.systemPackages = [ pkgs.screen ]; + security.pam.services.screen = {}; }; } diff --git a/nixos/modules/programs/shadow.nix b/nixos/modules/programs/shadow.nix index 7eaf79d864e..fc352795c01 100644 --- a/nixos/modules/programs/shadow.nix +++ b/nixos/modules/programs/shadow.nix @@ -76,22 +76,18 @@ in config.users.defaultUserShell; environment.etc = - [ { # /etc/login.defs: global configuration for pwdutils. You - # cannot login without it! - source = pkgs.writeText "login.defs" loginDefs; - target = "login.defs"; - } + { # /etc/login.defs: global configuration for pwdutils. You + # cannot login without it! + "login.defs".source = pkgs.writeText "login.defs" loginDefs; - { # /etc/default/useradd: configuration for useradd. - source = pkgs.writeText "useradd" - '' - GROUP=100 - HOME=/home - SHELL=${utils.toShellPath config.users.defaultUserShell} - ''; - target = "default/useradd"; - } - ]; + # /etc/default/useradd: configuration for useradd. + "default/useradd".source = pkgs.writeText "useradd" + '' + GROUP=100 + HOME=/home + SHELL=${utils.toShellPath config.users.defaultUserShell} + ''; + }; security.pam.services = { chsh = { rootOK = true; }; diff --git a/nixos/modules/programs/ssh.nix b/nixos/modules/programs/ssh.nix index 80198990ed1..44e65ee8a9a 100644 --- a/nixos/modules/programs/ssh.nix +++ b/nixos/modules/programs/ssh.nix @@ -61,12 +61,9 @@ in ''; }; - # Allow DSA keys for now. (These were deprecated in OpenSSH 7.0.) pubkeyAcceptedKeyTypes = mkOption { type = types.listOf types.str; - default = [ - "+ssh-dss" - ]; + default = []; example = [ "ssh-ed25519" "ssh-rsa" ]; description = '' Specifies the key types that will be used for public key authentication. @@ -75,9 +72,7 @@ in hostKeyAlgorithms = mkOption { type = types.listOf types.str; - default = [ - "+ssh-dss" - ]; + default = []; example = [ "ssh-ed25519" "ssh-rsa" ]; description = '' Specifies the host key algorithms that the client wants to use in order of preference. diff --git a/nixos/modules/programs/ssmtp.nix b/nixos/modules/programs/ssmtp.nix index f794eac8af0..c7a94739349 100644 --- a/nixos/modules/programs/ssmtp.nix +++ b/nixos/modules/programs/ssmtp.nix @@ -14,8 +14,16 @@ in { imports = [ - (mkRenamedOptionModule [ "networking" "defaultMailServer" ] [ "services" "ssmtp" ]) - (mkRenamedOptionModule [ "services" "ssmtp" "directDelivery" ] [ "services" "ssmtp" "enable" ]) + (mkRenamedOptionModule [ "networking" "defaultMailServer" "directDelivery" ] [ "services" "ssmtp" "enable" ]) + (mkRenamedOptionModule [ "networking" "defaultMailServer" "hostName" ] [ "services" "ssmtp" "hostName" ]) + (mkRenamedOptionModule [ "networking" "defaultMailServer" "domain" ] [ "services" "ssmtp" "domain" ]) + (mkRenamedOptionModule [ "networking" "defaultMailServer" "root" ] [ "services" "ssmtp" "root" ]) + (mkRenamedOptionModule [ "networking" "defaultMailServer" "useTLS" ] [ "services" "ssmtp" "useTLS" ]) + (mkRenamedOptionModule [ "networking" "defaultMailServer" "useSTARTTLS" ] [ "services" "ssmtp" "useSTARTTLS" ]) + (mkRenamedOptionModule [ "networking" "defaultMailServer" "authUser" ] [ "services" "ssmtp" "authUser" ]) + (mkRenamedOptionModule [ "networking" "defaultMailServer" "authPass" ] [ "services" "ssmtp" "authPass" ]) + (mkRenamedOptionModule [ "networking" "defaultMailServer" "authPassFile" ] [ "services" "ssmtp" "authPassFile" ]) + (mkRenamedOptionModule [ "networking" "defaultMailServer" "setSendmail" ] [ "services" "ssmtp" "setSendmail" ]) ]; options = { diff --git a/nixos/modules/programs/sway.nix b/nixos/modules/programs/sway.nix index d685a525932..364debddb0f 100644 --- a/nixos/modules/programs/sway.nix +++ b/nixos/modules/programs/sway.nix @@ -4,27 +4,33 @@ with lib; let cfg = config.programs.sway; - swayPackage = pkgs.sway; - swayWrapped = pkgs.writeShellScriptBin "sway" '' - set -o errexit + wrapperOptions = types.submodule { + options = + let + mkWrapperFeature = default: description: mkOption { + type = types.bool; + inherit default; + example = !default; + description = "Whether to make use of the ${description}"; + }; + in { + base = mkWrapperFeature true '' + base wrapper to execute extra session commands and prepend a + dbus-run-session to the sway command. + ''; + gtk = mkWrapperFeature false '' + wrapGAppsHook wrapper to execute sway with required environment + variables for GTK applications. + ''; + }; + }; - if [ ! "$_SWAY_WRAPPER_ALREADY_EXECUTED" ]; then - export _SWAY_WRAPPER_ALREADY_EXECUTED=1 - ${cfg.extraSessionCommands} - fi - - if [ "$DBUS_SESSION_BUS_ADDRESS" ]; then - export DBUS_SESSION_BUS_ADDRESS - exec ${swayPackage}/bin/sway "$@" - else - exec ${pkgs.dbus}/bin/dbus-run-session ${swayPackage}/bin/sway "$@" - fi - ''; - swayJoined = pkgs.symlinkJoin { - name = "sway-joined"; - paths = [ swayWrapped swayPackage ]; - passthru.providedSessions = [ "sway" ]; + swayPackage = pkgs.sway.override { + extraSessionCommands = cfg.extraSessionCommands; + extraOptions = cfg.extraOptions; + withBaseWrapper = cfg.wrapperFeatures.base; + withGtkWrapper = cfg.wrapperFeatures.gtk; }; in { options.programs.sway = { @@ -36,6 +42,15 @@ in { Please have a look at the "extraSessionCommands" example for running programs natively under Wayland''; + wrapperFeatures = mkOption { + type = wrapperOptions; + default = { }; + example = { gtk = true; }; + description = '' + Attribute set of features to enable in the wrapper. + ''; + }; + extraSessionCommands = mkOption { type = types.lines; default = ""; @@ -53,14 +68,30 @@ in { ''; }; + extraOptions = mkOption { + type = types.listOf types.str; + default = []; + example = [ + "--verbose" + "--debug" + "--unsupported-gpu" + "--my-next-gpu-wont-be-nvidia" + ]; + description = '' + Command line arguments passed to launch Sway. Please DO NOT report + issues if you use an unsupported GPU (proprietary drivers). + ''; + }; + extraPackages = mkOption { type = with types; listOf package; default = with pkgs; [ - swaylock swayidle swaybg - xwayland rxvt_unicode dmenu + swaylock swayidle + xwayland alacritty dmenu + rxvt-unicode # For backward compatibility (old default terminal) ]; defaultText = literalExample '' - with pkgs; [ swaylock swayidle xwayland rxvt_unicode dmenu ]; + with pkgs; [ swaylock swayidle xwayland rxvt-unicode dmenu ]; ''; example = literalExample '' with pkgs; [ @@ -76,8 +107,17 @@ in { }; config = mkIf cfg.enable { + assertions = [ + { + assertion = cfg.extraSessionCommands != "" -> cfg.wrapperFeatures.base; + message = '' + The extraSessionCommands for Sway will not be run if + wrapperFeatures.base is disabled. + ''; + } + ]; environment = { - systemPackages = [ swayJoined ] ++ cfg.extraPackages; + systemPackages = [ swayPackage ] ++ cfg.extraPackages; etc = { "sway/config".source = mkOptionDefault "${swayPackage}/etc/sway/config"; #"sway/security.d".source = mkOptionDefault "${swayPackage}/etc/sway/security.d/"; @@ -89,7 +129,7 @@ in { fonts.enableDefaultFonts = mkDefault true; programs.dconf.enable = mkDefault true; # To make a Sway session available if a display manager like SDDM is enabled: - services.xserver.displayManager.sessionPackages = [ swayJoined ]; + services.xserver.displayManager.sessionPackages = [ swayPackage ]; }; meta.maintainers = with lib.maintainers; [ gnidorah primeos colemickens ]; diff --git a/nixos/modules/programs/tmux.nix b/nixos/modules/programs/tmux.nix index ed077e3daa7..c39908751d2 100644 --- a/nixos/modules/programs/tmux.nix +++ b/nixos/modules/programs/tmux.nix @@ -52,7 +52,7 @@ let set -s escape-time ${toString cfg.escapeTime} set -g history-limit ${toString cfg.historyLimit} - ${cfg.extraTmuxConf} + ${cfg.extraConfig} ''; in { @@ -102,7 +102,7 @@ in { description = "Time in milliseconds for which tmux waits after an escape is input."; }; - extraTmuxConf = mkOption { + extraConfig = mkOption { default = ""; description = '' Additional contents of /etc/tmux.conf @@ -181,4 +181,8 @@ in { }; }; }; + + imports = [ + (lib.mkRenamedOptionModule [ "programs" "tmux" "extraTmuxConf" ] [ "programs" "tmux" "extraConfig" ]) + ]; } diff --git a/nixos/modules/programs/traceroute.nix b/nixos/modules/programs/traceroute.nix new file mode 100644 index 00000000000..4eb0be3f0e0 --- /dev/null +++ b/nixos/modules/programs/traceroute.nix @@ -0,0 +1,26 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.programs.traceroute; +in { + options = { + programs.traceroute = { + enable = mkOption { + type = types.bool; + default = false; + description = '' + Whether to configure a setcap wrapper for traceroute. + ''; + }; + }; + }; + + config = mkIf cfg.enable { + security.wrappers.traceroute = { + source = "${pkgs.traceroute}/bin/traceroute"; + capabilities = "cap_net_raw+p"; + }; + }; +} diff --git a/nixos/modules/programs/way-cooler.nix b/nixos/modules/programs/way-cooler.nix deleted file mode 100644 index f27bd42bd76..00000000000 --- a/nixos/modules/programs/way-cooler.nix +++ /dev/null @@ -1,78 +0,0 @@ -{ config, pkgs, lib, ... }: - -with lib; - -let - cfg = config.programs.way-cooler; - way-cooler = pkgs.way-cooler; - - wcWrapped = pkgs.writeShellScriptBin "way-cooler" '' - ${cfg.extraSessionCommands} - exec ${pkgs.dbus}/bin/dbus-run-session ${way-cooler}/bin/way-cooler - ''; - wcJoined = pkgs.symlinkJoin { - name = "way-cooler-wrapped"; - paths = [ wcWrapped way-cooler ]; - }; - configFile = readFile "${way-cooler}/etc/way-cooler/init.lua"; - spawnBar = '' - util.program.spawn_at_startup("lemonbar"); - ''; -in -{ - options.programs.way-cooler = { - enable = mkEnableOption "way-cooler"; - - extraSessionCommands = mkOption { - default = ""; - type = types.lines; - example = '' - export XKB_DEFAULT_LAYOUT=us,de - export XKB_DEFAULT_VARIANT=,nodeadkeys - export XKB_DEFAULT_OPTIONS=grp:caps_toggle, - ''; - description = '' - Shell commands executed just before way-cooler is started. - ''; - }; - - extraPackages = mkOption { - type = with types; listOf package; - default = with pkgs; [ - westonLite xwayland dmenu - ]; - example = literalExample '' - with pkgs; [ - westonLite xwayland dmenu - ] - ''; - description = '' - Extra packages to be installed system wide. - ''; - }; - - enableBar = mkOption { - type = types.bool; - default = true; - description = '' - Whether to enable an unofficial bar. - ''; - }; - }; - - config = mkIf cfg.enable { - environment.systemPackages = [ wcJoined ] ++ cfg.extraPackages; - - security.pam.services.wc-lock = {}; - environment.etc."way-cooler/init.lua".text = '' - ${configFile} - ${optionalString cfg.enableBar spawnBar} - ''; - - hardware.opengl.enable = mkDefault true; - fonts.enableDefaultFonts = mkDefault true; - programs.dconf.enable = mkDefault true; - }; - - meta.maintainers = with maintainers; [ gnidorah ]; -} diff --git a/nixos/modules/programs/zsh/zsh.nix b/nixos/modules/programs/zsh/zsh.nix index c66c29ed45f..930cc1987a3 100644 --- a/nixos/modules/programs/zsh/zsh.nix +++ b/nixos/modules/programs/zsh/zsh.nix @@ -15,6 +15,24 @@ let (filterAttrs (k: v: v != null) cfg.shellAliases) ); + zshStartupNotes = '' + # Note that generated /etc/zprofile and /etc/zshrc files do a lot of + # non-standard setup to make zsh usable with no configuration by default. + # + # Which means that unless you explicitly meticulously override everything + # generated, interactions between your ~/.zshrc and these files are likely + # to be rather surprising. + # + # Note however, that you can disable loading of the generated /etc/zprofile + # and /etc/zshrc (you can't disable loading of /etc/zshenv, but it is + # designed to not set anything surprising) by setting `no_global_rcs` option + # in ~/.zshenv: + # + # echo setopt no_global_rcs >> ~/.zshenv + # + # See "STARTUP/SHUTDOWN FILES" section of zsh(1) for more info. + ''; + in { @@ -69,6 +87,10 @@ in promptInit = mkOption { default = '' + # Note that to manually override this in ~/.zshrc you should run `prompt off` + # before setting your PS1 and etc. Otherwise this will likely to interact with + # your ~/.zshrc configuration in unexpected ways as the default prompt sets + # a lot of different prompt variables. autoload -U promptinit && promptinit && prompt walters && setopt prompt_sp ''; description = '' @@ -100,7 +122,8 @@ in ]; example = [ "EXTENDED_HISTORY" "RM_STAR_WAIT" ]; description = '' - Configure zsh options. + Configure zsh options. See + zshoptions1. ''; }; @@ -139,14 +162,21 @@ in # This file is read for all shells. # Only execute this file once per shell. - # But don't clobber the environment of interactive non-login children! if [ -n "$__ETC_ZSHENV_SOURCED" ]; then return; fi - export __ETC_ZSHENV_SOURCED=1 + __ETC_ZSHENV_SOURCED=1 if [ -z "$__NIXOS_SET_ENVIRONMENT_DONE" ]; then . ${config.system.build.setEnvironment} fi + HELPDIR="${pkgs.zsh}/share/zsh/$ZSH_VERSION/help" + + # Tell zsh how to find installed completions. + for p in ''${(z)NIX_PROFILES}; do + fpath+=($p/share/zsh/site-functions $p/share/zsh/$ZSH_VERSION/functions $p/share/zsh/vendor-completions) + done + + # Setup custom shell init stuff. ${cfge.shellInit} ${cfg.shellInit} @@ -161,11 +191,14 @@ in '' # /etc/zprofile: DO NOT EDIT -- this file has been generated automatically. # This file is read for login shells. + # + ${zshStartupNotes} # Only execute this file once per shell. if [ -n "$__ETC_ZPROFILE_SOURCED" ]; then return; fi __ETC_ZPROFILE_SOURCED=1 + # Setup custom login shell init stuff. ${cfge.loginShellInit} ${cfg.loginShellInit} @@ -180,38 +213,44 @@ in '' # /etc/zshrc: DO NOT EDIT -- this file has been generated automatically. # This file is read for interactive shells. + # + ${zshStartupNotes} # Only execute this file once per shell. if [ -n "$__ETC_ZSHRC_SOURCED" -o -n "$NOSYSZSHRC" ]; then return; fi __ETC_ZSHRC_SOURCED=1 - . /etc/zinputrc + ${optionalString (cfg.setOptions != []) '' + # Set zsh options. + setopt ${concatStringsSep " " cfg.setOptions} + ''} - # Don't export these, otherwise other shells (bash) will try to use same histfile + # Setup command line history. + # Don't export these, otherwise other shells (bash) will try to use same HISTFILE. SAVEHIST=${toString cfg.histSize} HISTSIZE=${toString cfg.histSize} HISTFILE=${cfg.histFile} - HELPDIR="${pkgs.zsh}/share/zsh/$ZSH_VERSION/help" + # Configure sane keyboard defaults. + . /etc/zinputrc - # Tell zsh how to find installed completions - for p in ''${(z)NIX_PROFILES}; do - fpath+=($p/share/zsh/site-functions $p/share/zsh/$ZSH_VERSION/functions $p/share/zsh/vendor-completions) - done - - ${optionalString cfg.enableGlobalCompInit "autoload -U compinit && compinit"} + ${optionalString cfg.enableGlobalCompInit '' + # Enable autocompletion. + autoload -U compinit && compinit + ''} + # Setup custom interactive shell init stuff. ${cfge.interactiveShellInit} ${cfg.interactiveShellInit} - ${optionalString (cfg.setOptions != []) "setopt ${concatStringsSep " " cfg.setOptions}"} - + # Setup aliases. ${zshAliases} + # Setup prompt. ${cfg.promptInit} - # Need to disable features to support TRAMP + # Disable some features to support TRAMP. if [ "$TERM" = dumb ]; then unsetopt zle prompt_cr prompt_subst unset RPS1 RPROMPT diff --git a/nixos/modules/rename.nix b/nixos/modules/rename.nix index daa6ff7cb15..410db8fd84e 100644 --- a/nixos/modules/rename.nix +++ b/nixos/modules/rename.nix @@ -21,10 +21,33 @@ with lib; (mkRemovedOptionModule [ "services" "firefox" "syncserver" "group" ] "") (mkRemovedOptionModule [ "services" "winstone" ] "The corresponding package was removed from nixpkgs.") (mkRemovedOptionModule [ "networking" "vpnc" ] "Use environment.etc.\"vpnc/service.conf\" instead.") - (mkRemovedOptionModule [ "environment.blcr.enable" ] "The BLCR module has been removed") - (mkRemovedOptionModule [ "services.beegfsEnable" ] "The BeeGFS module has been removed") - (mkRemovedOptionModule [ "services.beegfs" ] "The BeeGFS module has been removed") - (mkRemovedOptionModule [ "services.osquery" ] "The osquery module has been removed") + (mkRemovedOptionModule [ "environment" "blcr" "enable" ] "The BLCR module has been removed") + (mkRemovedOptionModule [ "services" "beegfsEnable" ] "The BeeGFS module has been removed") + (mkRemovedOptionModule [ "services" "beegfs" ] "The BeeGFS module has been removed") + (mkRemovedOptionModule [ "services" "osquery" ] "The osquery module has been removed") + (mkRemovedOptionModule [ "services" "fourStore" ] "The fourStore module has been removed") + (mkRemovedOptionModule [ "services" "fourStoreEndpoint" ] "The fourStoreEndpoint module has been removed") + (mkRemovedOptionModule [ "programs" "way-cooler" ] ("way-cooler is abandoned by its author: " + + "https://way-cooler.org/blog/2020/01/09/way-cooler-post-mortem.html")) + (mkRemovedOptionModule [ "services" "xserver" "multitouch" ] '' + services.xserver.multitouch (which uses xf86_input_mtrack) has been removed + as the underlying package isn't being maintained. Working alternatives are + libinput and synaptics. + '') + (mkRemovedOptionModule [ "services" "xserver" "displayManager" "auto" ] '' + The services.xserver.displayManager.auto module has been removed + because it was only intended for use in internal NixOS tests, and gave the + false impression of it being a special display manager when it's actually + LightDM. Please use the services.xserver.displayManager.lightdm.autoLogin options + instead, or any other display manager in NixOS as they all support auto-login. + '') + (mkRemovedOptionModule [ "services" "dnscrypt-proxy" ] "Use services.dnscrypt-proxy2 instead") + (mkRemovedOptionModule ["hardware" "brightnessctl" ] '' + The brightnessctl module was removed because newer versions of + brightnessctl don't require the udev rules anymore (they can use the + systemd-logind API). Instead of using the module you can now + simply add the brightnessctl package to environment.systemPackages. + '') # Do NOT add any option renames here, see top of the file ]; diff --git a/nixos/modules/security/acme.nix b/nixos/modules/security/acme.nix index 890c421b0ea..39976380e3b 100644 --- a/nixos/modules/security/acme.nix +++ b/nixos/modules/security/acme.nix @@ -1,7 +1,5 @@ { config, lib, pkgs, ... }: - with lib; - let cfg = config.security.acme; @@ -9,7 +7,8 @@ let certOpts = { name, ... }: { options = { webroot = mkOption { - type = types.str; + type = types.nullOr types.str; + default = null; example = "/var/lib/acme/acme-challenges"; description = '' Where the webroot of the HTTP vhost is located. @@ -38,7 +37,7 @@ let email = mkOption { type = types.nullOr types.str; - default = null; + default = cfg.email; description = "Contact email address for the CA to be able to reach you."; }; @@ -76,20 +75,6 @@ let ''; }; - plugins = mkOption { - type = types.listOf (types.enum [ - "cert.der" "cert.pem" "chain.pem" "external.sh" - "fullchain.pem" "full.pem" "key.der" "key.pem" "account_key.json" "account_reg.json" - ]); - default = [ "fullchain.pem" "full.pem" "key.pem" "account_key.json" "account_reg.json" ]; - description = '' - Plugins to enable. With default settings simp_le will - store public certificate bundle in fullchain.pem, - private key in key.pem and those two previous - files combined in full.pem in its state directory. - ''; - }; - directory = mkOption { type = types.str; readOnly = true; @@ -111,6 +96,67 @@ let own server roots if needed. ''; }; + + keyType = mkOption { + type = types.str; + default = "ec384"; + description = '' + Key type to use for private keys. + For an up to date list of supported values check the --key-type option + at https://go-acme.github.io/lego/usage/cli/#usage. + ''; + }; + + dnsProvider = mkOption { + type = types.nullOr types.str; + default = null; + example = "route53"; + description = '' + DNS Challenge provider. For a list of supported providers, see the "code" + field of the DNS providers listed at https://go-acme.github.io/lego/dns/. + ''; + }; + + credentialsFile = mkOption { + type = types.path; + description = '' + Path to an EnvironmentFile for the cert's service containing any required and + optional environment variables for your selected dnsProvider. + To find out what values you need to set, consult the documentation at + https://go-acme.github.io/lego/dns/ for the corresponding dnsProvider. + ''; + example = "/var/src/secrets/example.org-route53-api-token"; + }; + + dnsPropagationCheck = mkOption { + type = types.bool; + default = true; + description = '' + Toggles lego DNS propagation check, which is used alongside DNS-01 + challenge to ensure the DNS entries required are available. + ''; + }; + + ocspMustStaple = mkOption { + type = types.bool; + default = false; + description = '' + Turns on the OCSP Must-Staple TLS extension. + Make sure you know what you're doing! See: + + + + + ''; + }; + + extraLegoRenewFlags = mkOption { + type = types.listOf types.str; + default = []; + description = '' + Additional flags to pass to lego renew. + ''; + }; }; }; @@ -130,19 +176,26 @@ in (mkRemovedOptionModule [ "security" "acme" "directory"] "ACME Directory is now hardcoded to /var/lib/acme and its permisisons are managed by systemd. See https://github.com/NixOS/nixpkgs/issues/53852 for more info.") (mkRemovedOptionModule [ "security" "acme" "preDelay"] "This option has been removed. If you want to make sure that something executes before certificates are provisioned, add a RequiredBy=acme-\${cert}.service to the service you want to execute before the cert renewal") (mkRemovedOptionModule [ "security" "acme" "activationDelay"] "This option has been removed. If you want to make sure that something executes before certificates are provisioned, add a RequiredBy=acme-\${cert}.service to the service you want to execute before the cert renewal") + (mkChangedOptionModule [ "security" "acme" "validMin"] [ "security" "acme" "validMinDays"] (config: config.security.acme.validMin / (24 * 3600))) ]; options = { security.acme = { - validMin = mkOption { + validMinDays = mkOption { type = types.int; - default = 30 * 24 * 3600; - description = "Minimum remaining validity before renewal in seconds."; + default = 30; + description = "Minimum remaining validity before renewal in days."; + }; + + email = mkOption { + type = types.nullOr types.str; + default = null; + description = "Contact email address for the CA to be able to reach you."; }; renewInterval = mkOption { type = types.str; - default = "weekly"; + default = "daily"; description = '' Systemd calendar expression when to check for renewal. See systemd.time @@ -173,6 +226,15 @@ in ''; }; + acceptTerms = mkOption { + type = types.bool; + default = false; + description = '' + Accept the CA's terms of service. The default provier is Let's Encrypt, + you can find their ToS at https://letsencrypt.org/repository/ + ''; + }; + certs = mkOption { default = { }; type = with types; attrsOf (submodule certOpts); @@ -204,48 +266,100 @@ in config = mkMerge [ (mkIf (cfg.certs != { }) { + assertions = let + certs = (mapAttrsToList (k: v: v) cfg.certs); + in [ + { + assertion = all (certOpts: certOpts.dnsProvider == null || certOpts.webroot == null) certs; + message = '' + Options `security.acme.certs..dnsProvider` and + `security.acme.certs..webroot` are mutually exclusive. + ''; + } + { + assertion = cfg.email != null || all (certOpts: certOpts.email != null) certs; + message = '' + You must define `security.acme.certs..email` or + `security.acme.email` to register with the CA. + ''; + } + { + assertion = cfg.acceptTerms; + message = '' + You must accept the CA's terms of service before using + the ACME module by setting `security.acme.acceptTerms` + to `true`. For Let's Encrypt's ToS see https://letsencrypt.org/repository/ + ''; + } + ]; + systemd.services = let services = concatLists servicesLists; servicesLists = mapAttrsToList certToServices cfg.certs; certToServices = cert: data: let + # StateDirectory must be relative, and will be created under /var/lib by systemd lpath = "acme/${cert}"; - rights = if data.allowKeysForGroup then "750" else "700"; - cmdline = [ "-v" "-d" data.domain "--default_root" data.webroot "--valid_min" cfg.validMin ] - ++ optionals (data.email != null) [ "--email" data.email ] - ++ concatMap (p: [ "-f" p ]) data.plugins - ++ concatLists (mapAttrsToList (name: root: [ "-d" (if root == null then name else "${name}:${root}")]) data.extraDomains) + apath = "/var/lib/${lpath}"; + spath = "/var/lib/acme/.lego/${cert}"; + fileMode = if data.allowKeysForGroup then "640" else "600"; + globalOpts = [ "-d" data.domain "--email" data.email "--path" "." "--key-type" data.keyType ] + ++ optionals (cfg.acceptTerms) [ "--accept-tos" ] + ++ optionals (data.dnsProvider != null && !data.dnsPropagationCheck) [ "--dns.disable-cp" ] + ++ concatLists (mapAttrsToList (name: root: [ "-d" name ]) data.extraDomains) + ++ (if data.dnsProvider != null then [ "--dns" data.dnsProvider ] else [ "--http" "--http.webroot" data.webroot ]) ++ optionals (cfg.server != null || data.server != null) ["--server" (if data.server == null then cfg.server else data.server)]; + certOpts = optionals data.ocspMustStaple [ "--must-staple" ]; + runOpts = escapeShellArgs (globalOpts ++ [ "run" ] ++ certOpts); + renewOpts = escapeShellArgs (globalOpts ++ + [ "renew" "--days" (toString cfg.validMinDays) ] ++ + certOpts ++ data.extraLegoRenewFlags); acmeService = { description = "Renew ACME Certificate for ${cert}"; after = [ "network.target" "network-online.target" ]; wants = [ "network-online.target" ]; - # simp_le uses requests, which uses certifi under the hood, - # which doesn't respect the system trust store. - # At least in the acme test, we provision a fake CA, impersonating the LE endpoint. - # REQUESTS_CA_BUNDLE is a way to teach python requests to use something else - environment.REQUESTS_CA_BUNDLE = "/etc/ssl/certs/ca-certificates.crt"; + wantedBy = mkIf (!config.boot.isContainer) [ "multi-user.target" ]; serviceConfig = { Type = "oneshot"; - # With RemainAfterExit the service is considered active even - # after the main process having exited, which means when it - # gets changed, the activation phase restarts it, meaning - # the permissions of the StateDirectory get adjusted - # according to the specified group - RemainAfterExit = true; - SuccessExitStatus = [ "0" "1" ]; User = data.user; Group = data.group; PrivateTmp = true; - StateDirectory = lpath; - StateDirectoryMode = rights; - WorkingDirectory = "/var/lib/${lpath}"; - ExecStart = "${pkgs.simp_le}/bin/simp_le ${escapeShellArgs cmdline}"; + StateDirectory = "acme/.lego/${cert} acme/.lego/accounts ${lpath}"; + StateDirectoryMode = if data.allowKeysForGroup then "750" else "700"; + WorkingDirectory = spath; + # Only try loading the credentialsFile if the dns challenge is enabled + EnvironmentFile = if data.dnsProvider != null then data.credentialsFile else null; + ExecStart = pkgs.writeScript "acme-start" '' + #!${pkgs.runtimeShell} -e + test -L ${spath}/accounts -o -d ${spath}/accounts || ln -s ../accounts ${spath}/accounts + ${pkgs.lego}/bin/lego ${renewOpts} || ${pkgs.lego}/bin/lego ${runOpts} + ''; ExecStartPost = let + keyName = builtins.replaceStrings ["*"] ["_"] data.domain; script = pkgs.writeScript "acme-post-start" '' #!${pkgs.runtimeShell} -e - ${data.postRun} + cd ${apath} + + # Test that existing cert is older than new cert + KEY=${spath}/certificates/${keyName}.key + KEY_CHANGED=no + if [ -e $KEY -a $KEY -nt key.pem ]; then + KEY_CHANGED=yes + cp -p ${spath}/certificates/${keyName}.key key.pem + cp -p ${spath}/certificates/${keyName}.crt fullchain.pem + cp -p ${spath}/certificates/${keyName}.issuer.crt chain.pem + ln -sf fullchain.pem cert.pem + cat key.pem fullchain.pem > full.pem + fi + + chmod ${fileMode} *.pem + chown '${data.user}:${data.group}' *.pem + + if [ "$KEY_CHANGED" = "yes" ]; then + : # noop in case postRun is empty + ${data.postRun} + fi ''; in "+${script}"; @@ -276,17 +390,17 @@ in -out $workdir/server.crt # Copy key to destination - cp $workdir/server.key /var/lib/${lpath}/key.pem + cp $workdir/server.key ${apath}/key.pem # Create fullchain.pem (same format as "simp_le ... -f fullchain.pem" creates) - cat $workdir/{server.crt,ca.crt} > "/var/lib/${lpath}/fullchain.pem" + cat $workdir/{server.crt,ca.crt} > "${apath}/fullchain.pem" # Create full.pem for e.g. lighttpd - cat $workdir/{server.key,server.crt,ca.crt} > "/var/lib/${lpath}/full.pem" + cat $workdir/{server.key,server.crt,ca.crt} > "${apath}/full.pem" # Give key acme permissions - chown '${data.user}:${data.group}' "/var/lib/${lpath}/"{key,fullchain,full}.pem - chmod ${rights} "/var/lib/${lpath}/"{key,fullchain,full}.pem + chown '${data.user}:${data.group}' "${apath}/"{key,fullchain,full}.pem + chmod ${fileMode} "${apath}/"{key,fullchain,full}.pem ''; serviceConfig = { Type = "oneshot"; @@ -297,7 +411,7 @@ in }; unitConfig = { # Do not create self-signed key when key already exists - ConditionPathExists = "!/var/lib/${lpath}/key.pem"; + ConditionPathExists = "!${apath}/key.pem"; }; }; in ( @@ -309,10 +423,19 @@ in servicesAttr; systemd.tmpfiles.rules = - flip mapAttrsToList cfg.certs - (cert: data: "d ${data.webroot}/.well-known/acme-challenge - ${data.user} ${data.group}"); + map (data: "d ${data.webroot}/.well-known/acme-challenge - ${data.user} ${data.group}") (filter (data: data.webroot != null) (attrValues cfg.certs)); - systemd.timers = flip mapAttrs' cfg.certs (cert: data: nameValuePair + systemd.timers = let + # Allow systemd to pick a convenient time within the day + # to run the check. + # This allows the coalescing of multiple timer jobs. + # We divide by the number of certificates so that if you + # have many certificates, the renewals are distributed over + # the course of the day to avoid rate limits. + numCerts = length (attrNames cfg.certs); + _24hSecs = 60 * 60 * 24; + AccuracySec = "${toString (_24hSecs / numCerts)}s"; + in flip mapAttrs' cfg.certs (cert: data: nameValuePair ("acme-${cert}") ({ description = "Renew ACME Certificate for ${cert}"; @@ -321,8 +444,9 @@ in OnCalendar = cfg.renewInterval; Unit = "acme-${cert}.service"; Persistent = "yes"; - AccuracySec = "5m"; - RandomizedDelaySec = "1h"; + inherit AccuracySec; + # Skew randomly within the day, per https://letsencrypt.org/docs/integration-guide/. + RandomizedDelaySec = "24h"; }; }) ); @@ -334,7 +458,7 @@ in ]; meta = { - maintainers = with lib.maintainers; [ abbradar fpletz globin ]; + maintainers = with lib.maintainers; [ abbradar fpletz globin m1cr0man ]; doc = ./acme.xml; }; } diff --git a/nixos/modules/security/acme.xml b/nixos/modules/security/acme.xml index 9d0a1995e0f..2b29c117484 100644 --- a/nixos/modules/security/acme.xml +++ b/nixos/modules/security/acme.xml @@ -7,7 +7,7 @@ NixOS supports automatic domain validation & certificate retrieval and renewal using the ACME protocol. This is currently only implemented by and - for Let's Encrypt. The alternative ACME client simp_le is + for Let's Encrypt. The alternative ACME client lego is used under the hood.
diff --git a/nixos/modules/security/duosec.nix b/nixos/modules/security/duosec.nix index 997328ad9e6..71428b82f5d 100644 --- a/nixos/modules/security/duosec.nix +++ b/nixos/modules/security/duosec.nix @@ -9,10 +9,9 @@ let configFilePam = '' [duo] - ikey=${cfg.ikey} - skey=${cfg.skey} + ikey=${cfg.integrationKey} host=${cfg.host} - ${optionalString (cfg.group != "") ("group="+cfg.group)} + ${optionalString (cfg.groups != "") ("groups="+cfg.groups)} failmode=${cfg.failmode} pushinfo=${boolToStr cfg.pushinfo} autopush=${boolToStr cfg.autopush} @@ -24,22 +23,14 @@ let motd=${boolToStr cfg.motd} accept_env_factor=${boolToStr cfg.acceptEnvFactor} ''; - - loginCfgFile = optional cfg.ssh.enable - { source = pkgs.writeText "login_duo.conf" configFileLogin; - mode = "0600"; - user = "sshd"; - target = "duo/login_duo.conf"; - }; - - pamCfgFile = optional cfg.pam.enable - { source = pkgs.writeText "pam_duo.conf" configFilePam; - mode = "0600"; - user = "sshd"; - target = "duo/pam_duo.conf"; - }; in { + imports = [ + (mkRenamedOptionModule [ "security" "duosec" "group" ] [ "security" "duosec" "groups" ]) + (mkRenamedOptionModule [ "security" "duosec" "ikey" ] [ "security" "duosec" "integrationKey" ]) + (mkRemovedOptionModule [ "security" "duosec" "skey" ] "The insecure security.duosec.skey option has been replaced by a new security.duosec.secretKeyFile option. Use this new option to store a secure copy of your key instead.") + ]; + options = { security.duosec = { ssh.enable = mkOption { @@ -54,14 +45,18 @@ in description = "If enabled, protect logins with Duo Security using PAM support."; }; - ikey = mkOption { + integrationKey = mkOption { type = types.str; description = "Integration key."; }; - skey = mkOption { - type = types.str; - description = "Secret key."; + secretKeyFile = mkOption { + type = types.path; + default = null; + description = '' + A file containing your secret key. The security of your Duo application is tied to the security of your secret key. + ''; + example = "/run/keys/duo-skey"; }; host = mkOption { @@ -69,10 +64,16 @@ in description = "Duo API hostname."; }; - group = mkOption { + groups = mkOption { type = types.str; default = ""; - description = "Use Duo authentication for users only in this group."; + example = "users,!wheel,!*admin guests"; + description = '' + If specified, Duo authentication is required only for users + whose primary group or supplementary group list matches one + of the space-separated pattern lists. Refer to + for details. + ''; }; failmode = mkOption { @@ -183,21 +184,52 @@ in }; config = mkIf (cfg.ssh.enable || cfg.pam.enable) { - environment.systemPackages = [ pkgs.duo-unix ]; + environment.systemPackages = [ pkgs.duo-unix ]; - security.wrappers.login_duo.source = "${pkgs.duo-unix.out}/bin/login_duo"; - environment.etc = loginCfgFile ++ pamCfgFile; + security.wrappers.login_duo.source = "${pkgs.duo-unix.out}/bin/login_duo"; - /* If PAM *and* SSH are enabled, then don't do anything special. - If PAM isn't used, set the default SSH-only options. */ - services.openssh.extraConfig = mkIf (cfg.ssh.enable || cfg.pam.enable) ( - if cfg.pam.enable then "UseDNS no" else '' - # Duo Security configuration - ForceCommand ${config.security.wrapperDir}/login_duo - PermitTunnel no - ${optionalString (!cfg.allowTcpForwarding) '' - AllowTcpForwarding no - ''} - ''); + system.activationScripts = { + login_duo = mkIf cfg.ssh.enable '' + if test -f "${cfg.secretKeyFile}"; then + mkdir -m 0755 -p /etc/duo + + umask 0077 + conf="$(mktemp)" + { + cat ${pkgs.writeText "login_duo.conf" configFileLogin} + printf 'skey = %s\n' "$(cat ${cfg.secretKeyFile})" + } >"$conf" + + chown sshd "$conf" + mv -fT "$conf" /etc/duo/login_duo.conf + fi + ''; + pam_duo = mkIf cfg.pam.enable '' + if test -f "${cfg.secretKeyFile}"; then + mkdir -m 0755 -p /etc/duo + + umask 0077 + conf="$(mktemp)" + { + cat ${pkgs.writeText "login_duo.conf" configFilePam} + printf 'skey = %s\n' "$(cat ${cfg.secretKeyFile})" + } >"$conf" + + mv -fT "$conf" /etc/duo/pam_duo.conf + fi + ''; + }; + + /* If PAM *and* SSH are enabled, then don't do anything special. + If PAM isn't used, set the default SSH-only options. */ + services.openssh.extraConfig = mkIf (cfg.ssh.enable || cfg.pam.enable) ( + if cfg.pam.enable then "UseDNS no" else '' + # Duo Security configuration + ForceCommand ${config.security.wrapperDir}/login_duo + PermitTunnel no + ${optionalString (!cfg.allowTcpForwarding) '' + AllowTcpForwarding no + ''} + ''); }; } diff --git a/nixos/modules/security/google_oslogin.nix b/nixos/modules/security/google_oslogin.nix index 246419b681a..6f9962e1d62 100644 --- a/nixos/modules/security/google_oslogin.nix +++ b/nixos/modules/security/google_oslogin.nix @@ -59,10 +59,8 @@ in exec ${package}/bin/google_authorized_keys "$@" ''; }; - services.openssh.extraConfig = '' - AuthorizedKeysCommand /etc/ssh/authorized_keys_command_google_oslogin %u - AuthorizedKeysCommandUser nobody - ''; + services.openssh.authorizedKeysCommand = "/etc/ssh/authorized_keys_command_google_oslogin %u"; + services.openssh.authorizedKeysCommandUser = "nobody"; }; } diff --git a/nixos/modules/security/pam.nix b/nixos/modules/security/pam.nix index 0adc27c47f0..bfc2a881387 100644 --- a/nixos/modules/security/pam.nix +++ b/nixos/modules/security/pam.nix @@ -475,9 +475,9 @@ let motd = pkgs.writeText "motd" config.users.motd; - makePAMService = pamService: - { source = pkgs.writeText "${pamService.name}.pam" pamService.text; - target = "pam.d/${pamService.name}"; + makePAMService = name: service: + { name = "pam.d/${name}"; + value.source = pkgs.writeText "${name}.pam" service.text; }; in @@ -760,8 +760,7 @@ in }; }; - environment.etc = - mapAttrsToList (n: v: makePAMService v) config.security.pam.services; + environment.etc = mapAttrs' makePAMService config.security.pam.services; security.pam.services = { other.text = @@ -777,11 +776,8 @@ in ''; # Most of these should be moved to specific modules. - cups = {}; - ftp = {}; i3lock = {}; i3lock-color = {}; - screen = {}; vlock = {}; xlock = {}; xscreensaver = {}; diff --git a/nixos/modules/security/pam_mount.nix b/nixos/modules/security/pam_mount.nix index 75f58462d13..77e22a96b55 100644 --- a/nixos/modules/security/pam_mount.nix +++ b/nixos/modules/security/pam_mount.nix @@ -36,8 +36,7 @@ in config = mkIf (cfg.enable || anyPamMount) { environment.systemPackages = [ pkgs.pam_mount ]; - environment.etc = [{ - target = "security/pam_mount.conf.xml"; + environment.etc."security/pam_mount.conf.xml" = { source = let extraUserVolumes = filterAttrs (n: u: u.cryptHomeLuks != null) config.users.users; @@ -66,7 +65,7 @@ in ${concatStringsSep "\n" cfg.extraVolumes} ''; - }]; + }; }; } diff --git a/nixos/modules/security/rngd.nix b/nixos/modules/security/rngd.nix index d9d6d9c9f25..cffa1a5849f 100644 --- a/nixos/modules/security/rngd.nix +++ b/nixos/modules/security/rngd.nix @@ -37,14 +37,24 @@ in after = [ "dev-random.device" ]; + # Clean shutdown without DefaultDependencies + conflicts = [ "shutdown.target" ]; + before = [ + "sysinit.target" + "shutdown.target" + ]; + description = "Hardware RNG Entropy Gatherer Daemon"; + # rngd may have to start early to avoid entropy starvation during boot with encrypted swap + unitConfig.DefaultDependencies = false; serviceConfig = { ExecStart = "${pkgs.rng-tools}/sbin/rngd -f" + optionalString cfg.debug " -d"; + # PrivateTmp would introduce a circular dependency if /tmp is on tmpfs and swap is encrypted, + # thus depending on rngd before swap, while swap depends on rngd to avoid entropy starvation. NoNewPrivileges = true; PrivateNetwork = true; - PrivateTmp = true; ProtectSystem = "full"; ProtectHome = true; }; diff --git a/nixos/modules/security/rtkit.nix b/nixos/modules/security/rtkit.nix index f6dda21c600..a7b27cbcf21 100644 --- a/nixos/modules/security/rtkit.nix +++ b/nixos/modules/security/rtkit.nix @@ -34,9 +34,8 @@ with lib; services.dbus.packages = [ pkgs.rtkit ]; - users.users = singleton - { name = "rtkit"; - uid = config.ids.uids.rtkit; + users.users.rtkit = + { uid = config.ids.uids.rtkit; description = "RealtimeKit daemon"; }; diff --git a/nixos/modules/security/sudo.nix b/nixos/modules/security/sudo.nix index 10ee036be84..e3e43177def 100644 --- a/nixos/modules/security/sudo.nix +++ b/nixos/modules/security/sudo.nix @@ -71,23 +71,25 @@ in this is the case when configuration options are merged. ''; default = []; - example = [ - # Allow execution of any command by all users in group sudo, - # requiring a password. - { groups = [ "sudo" ]; commands = [ "ALL" ]; } + example = literalExample '' + [ + # Allow execution of any command by all users in group sudo, + # requiring a password. + { groups = [ "sudo" ]; commands = [ "ALL" ]; } - # Allow execution of "/home/root/secret.sh" by user `backup`, `database` - # and the group with GID `1006` without a password. - { users = [ "backup" "database" ]; groups = [ 1006 ]; - commands = [ { command = "/home/root/secret.sh"; options = [ "SETENV" "NOPASSWD" ]; } ]; } + # Allow execution of "/home/root/secret.sh" by user `backup`, `database` + # and the group with GID `1006` without a password. + { users = [ "backup" "database" ]; groups = [ 1006 ]; + commands = [ { command = "/home/root/secret.sh"; options = [ "SETENV" "NOPASSWD" ]; } ]; } - # Allow all users of group `bar` to run two executables as user `foo` - # with arguments being pre-set. - { groups = [ "bar" ]; runAs = "foo"; - commands = - [ "/home/baz/cmd1.sh hello-sudo" - { command = ''/home/baz/cmd2.sh ""''; options = [ "SETENV" ]; } ]; } - ]; + # Allow all users of group `bar` to run two executables as user `foo` + # with arguments being pre-set. + { groups = [ "bar" ]; runAs = "foo"; + commands = + [ "/home/baz/cmd1.sh hello-sudo" + { command = '''/home/baz/cmd2.sh ""'''; options = [ "SETENV" ]; } ]; } + ] + ''; type = with types; listOf (submodule { options = { users = mkOption { @@ -212,7 +214,7 @@ in security.pam.services.sudo = { sshAgentAuth = true; }; - environment.etc = singleton + environment.etc.sudoers = { source = pkgs.runCommand "sudoers" { @@ -222,7 +224,6 @@ in # Make sure that the sudoers file is syntactically valid. # (currently disabled - NIXOS-66) "${pkgs.buildPackages.sudo}/sbin/visudo -f $src -c && cp $src $out"; - target = "sudoers"; mode = "0440"; }; diff --git a/nixos/modules/security/tpm2.nix b/nixos/modules/security/tpm2.nix new file mode 100644 index 00000000000..13804fb82cb --- /dev/null +++ b/nixos/modules/security/tpm2.nix @@ -0,0 +1,185 @@ +{ lib, pkgs, config, ... }: +let + cfg = config.security.tpm2; + + # This snippet is taken from tpm2-tss/dist/tpm-udev.rules, but modified to allow custom user/groups + # The idea is that the tssUser is allowed to acess the TPM and kernel TPM resource manager, while + # the tssGroup is only allowed to access the kernel resource manager + # Therefore, if either of the two are null, the respective part isn't generated + udevRules = tssUser: tssGroup: '' + ${lib.optionalString (tssUser != null) ''KERNEL=="tpm[0-9]*", MODE="0660", OWNER="${tssUser}"''} + ${lib.optionalString (tssUser != null || tssGroup != null) + ''KERNEL=="tpmrm[0-9]*", MODE="0660"'' + + lib.optionalString (tssUser != null) '', OWNER="${tssUser}"'' + + lib.optionalString (tssGroup != null) '', GROUP="${tssGroup}"'' + } + ''; + +in { + options.security.tpm2 = { + enable = lib.mkEnableOption "Trusted Platform Module 2 support"; + + tssUser = lib.mkOption { + description = '' + Name of the tpm device-owner and service user, set if applyUdevRules is + set. + ''; + type = lib.types.nullOr lib.types.str; + default = if cfg.abrmd.enable then "tss" else "root"; + defaultText = ''"tss" when using the userspace resource manager,'' + + ''"root" otherwise''; + }; + + tssGroup = lib.mkOption { + description = '' + Group of the tpm kernel resource manager (tpmrm) device-group, set if + applyUdevRules is set. + ''; + type = lib.types.nullOr lib.types.str; + default = "tss"; + }; + + applyUdevRules = lib.mkOption { + description = '' + Whether to make the /dev/tpm[0-9] devices accessible by the tssUser, or + the /dev/tpmrm[0-9] by tssGroup respectively + ''; + type = lib.types.bool; + default = true; + }; + + abrmd = { + enable = lib.mkEnableOption '' + Trusted Platform 2 userspace resource manager daemon + ''; + + package = lib.mkOption { + description = "tpm2-abrmd package to use"; + type = lib.types.package; + default = pkgs.tpm2-abrmd; + defaultText = "pkgs.tpm2-abrmd"; + }; + }; + + pkcs11 = { + enable = lib.mkEnableOption '' + TPM2 PKCS#11 tool and shared library in system path + (/run/current-system/sw/lib/libtpm2_pkcs11.so) + ''; + + package = lib.mkOption { + description = "tpm2-pkcs11 package to use"; + type = lib.types.package; + default = pkgs.tpm2-pkcs11; + defaultText = "pkgs.tpm2-pkcs11"; + }; + }; + + tctiEnvironment = { + enable = lib.mkOption { + description = '' + Set common TCTI environment variables to the specified value. + The variables are + + + + TPM2TOOLS_TCTI + + + + + TPM2_PKCS11_TCTI + + + + ''; + type = lib.types.bool; + default = false; + }; + + interface = lib.mkOption { + description = '' + The name of the TPM command transmission interface (TCTI) library to + use. + ''; + type = lib.types.enum [ "tabrmd" "device" ]; + default = "device"; + }; + + deviceConf = lib.mkOption { + description = '' + Configuration part of the device TCTI, e.g. the path to the TPM device. + Applies if interface is set to "device". + The format is specified in the + + tpm2-tools repository. + ''; + type = lib.types.str; + default = "/dev/tpmrm0"; + }; + + tabrmdConf = lib.mkOption { + description = '' + Configuration part of the tabrmd TCTI, like the D-Bus bus name. + Applies if interface is set to "tabrmd". + The format is specified in the + + tpm2-tools repository. + ''; + type = lib.types.str; + default = "bus_name=com.intel.tss2.Tabrmd"; + }; + }; + }; + + config = lib.mkIf cfg.enable (lib.mkMerge [ + { + # PKCS11 tools and library + environment.systemPackages = lib.mkIf cfg.pkcs11.enable [ + (lib.getBin cfg.pkcs11.package) + (lib.getLib cfg.pkcs11.package) + ]; + + services.udev.extraRules = lib.mkIf cfg.applyUdevRules + (udevRules cfg.tssUser cfg.tssGroup); + + # Create the tss user and group only if the default value is used + users.users.${cfg.tssUser} = lib.mkIf (cfg.tssUser == "tss") { + isSystemUser = true; + }; + users.groups.${cfg.tssGroup} = lib.mkIf (cfg.tssGroup == "tss") {}; + + environment.variables = lib.mkIf cfg.tctiEnvironment.enable ( + lib.attrsets.genAttrs [ + "TPM2TOOLS_TCTI" + "TPM2_PKCS11_TCTI" + ] (_: ''${cfg.tctiEnvironment.interface}:${ + if cfg.tctiEnvironment.interface == "tabrmd" then + cfg.tctiEnvironment.tabrmdConf + else + cfg.tctiEnvironment.deviceConf + }'') + ); + } + + (lib.mkIf cfg.abrmd.enable { + systemd.services."tpm2-abrmd" = { + wantedBy = [ "multi-user.target" ]; + serviceConfig = { + Type = "dbus"; + Restart = "always"; + RestartSec = 30; + BusName = "com.intel.tss2.Tabrmd"; + StandardOutput = "syslog"; + ExecStart = "${cfg.abrmd.package}/bin/tpm2-abrmd"; + User = "tss"; + Group = "nogroup"; + }; + }; + + services.dbus.packages = lib.singleton cfg.abrmd.package; + }) + ]); + + meta.maintainers = with lib.maintainers; [ lschuermann ]; +} diff --git a/nixos/modules/services/admin/oxidized.nix b/nixos/modules/services/admin/oxidized.nix index 885eaed1de6..94b44630ba6 100644 --- a/nixos/modules/services/admin/oxidized.nix +++ b/nixos/modules/services/admin/oxidized.nix @@ -111,7 +111,7 @@ in Restart = "always"; WorkingDirectory = cfg.dataDir; KillSignal = "SIGKILL"; - PIDFile = "${cfg.dataDir}.config/oxidized/pid"; + PIDFile = "${cfg.dataDir}/.config/oxidized/pid"; }; }; }; diff --git a/nixos/modules/services/amqp/activemq/default.nix b/nixos/modules/services/amqp/activemq/default.nix index 7729da27304..160dbddcd48 100644 --- a/nixos/modules/services/amqp/activemq/default.nix +++ b/nixos/modules/services/amqp/activemq/default.nix @@ -63,9 +63,11 @@ in { javaProperties = mkOption { type = types.attrs; default = { }; - example = { - "java.net.preferIPv4Stack" = "true"; - }; + example = literalExample '' + { + "java.net.preferIPv4Stack" = "true"; + } + ''; apply = attrs: { "activemq.base" = "${cfg.baseDir}"; "activemq.data" = "${cfg.baseDir}/data"; diff --git a/nixos/modules/services/amqp/rabbitmq.nix b/nixos/modules/services/amqp/rabbitmq.nix index 697732426cc..f80d6b3f1ba 100644 --- a/nixos/modules/services/amqp/rabbitmq.nix +++ b/nixos/modules/services/amqp/rabbitmq.nix @@ -98,8 +98,8 @@ in { will be merged into these options by RabbitMQ at runtime to form the final configuration. - See http://www.rabbitmq.com/configure.html#config-items - For the distinct formats, see http://www.rabbitmq.com/configure.html#config-file-formats + See https://www.rabbitmq.com/configure.html#config-items + For the distinct formats, see https://www.rabbitmq.com/configure.html#config-file-formats ''; }; @@ -116,8 +116,8 @@ in { The contents of this option will be merged into the configItems by RabbitMQ at runtime to form the final configuration. - See the second table on http://www.rabbitmq.com/configure.html#config-items - For the distinct formats, see http://www.rabbitmq.com/configure.html#config-file-formats + See the second table on https://www.rabbitmq.com/configure.html#config-items + For the distinct formats, see https://www.rabbitmq.com/configure.html#config-file-formats ''; }; @@ -165,7 +165,10 @@ in { after = [ "network.target" "epmd.socket" ]; wants = [ "network.target" "epmd.socket" ]; - path = [ cfg.package pkgs.procps ]; + path = [ + cfg.package + pkgs.coreutils # mkdir/chown/chmod for preStart + ]; environment = { RABBITMQ_MNESIA_BASE = "${cfg.dataDir}/mnesia"; diff --git a/nixos/modules/services/audio/alsa.nix b/nixos/modules/services/audio/alsa.nix index 990398e6546..3fe76a16540 100644 --- a/nixos/modules/services/audio/alsa.nix +++ b/nixos/modules/services/audio/alsa.nix @@ -91,11 +91,7 @@ in environment.systemPackages = [ alsaUtils ]; environment.etc = mkIf (!pulseaudioEnabled && config.sound.extraConfig != "") - [ - { source = pkgs.writeText "asound.conf" config.sound.extraConfig; - target = "asound.conf"; - } - ]; + { "asound.conf".text = config.sound.extraConfig; }; # ALSA provides a udev rule for restoring volume settings. services.udev.packages = [ alsaUtils ]; diff --git a/nixos/modules/services/audio/mopidy.nix b/nixos/modules/services/audio/mopidy.nix index a534b692f17..6fd7eae5b89 100644 --- a/nixos/modules/services/audio/mopidy.nix +++ b/nixos/modules/services/audio/mopidy.nix @@ -13,11 +13,11 @@ let mopidyEnv = buildEnv { name = "mopidy-with-extensions-${mopidy.version}"; paths = closePropagation cfg.extensionPackages; - pathsToLink = [ "/${python.sitePackages}" ]; + pathsToLink = [ "/${mopidyPackages.python.sitePackages}" ]; buildInputs = [ makeWrapper ]; postBuild = '' makeWrapper ${mopidy}/bin/mopidy $out/bin/mopidy \ - --prefix PYTHONPATH : $out/${python.sitePackages} + --prefix PYTHONPATH : $out/${mopidyPackages.python.sitePackages} ''; }; in { diff --git a/nixos/modules/services/audio/mpd.nix b/nixos/modules/services/audio/mpd.nix index 7932d094197..e20591b5beb 100644 --- a/nixos/modules/services/audio/mpd.nix +++ b/nixos/modules/services/audio/mpd.nix @@ -184,19 +184,19 @@ in { }; }; - users.users = optionalAttrs (cfg.user == name) (singleton { - inherit uid; - inherit name; - group = cfg.group; - extraGroups = [ "audio" ]; - description = "Music Player Daemon user"; - home = "${cfg.dataDir}"; - }); + users.users = optionalAttrs (cfg.user == name) { + ${name} = { + inherit uid; + group = cfg.group; + extraGroups = [ "audio" ]; + description = "Music Player Daemon user"; + home = "${cfg.dataDir}"; + }; + }; - users.groups = optionalAttrs (cfg.group == name) (singleton { - inherit name; - gid = gid; - }); + users.groups = optionalAttrs (cfg.group == name) { + ${name}.gid = gid; + }; }; } diff --git a/nixos/modules/services/backup/borgbackup.nix b/nixos/modules/services/backup/borgbackup.nix index 10d42325a6b..be661b201f0 100644 --- a/nixos/modules/services/backup/borgbackup.nix +++ b/nixos/modules/services/backup/borgbackup.nix @@ -68,7 +68,7 @@ let { BORG_PASSPHRASE = passphrase; } else { }; - mkBackupService = name: cfg: + mkBackupService = name: cfg: let userHome = config.users.users.${cfg.user}.home; in nameValuePair "borgbackup-job-${name}" { @@ -98,6 +98,23 @@ let inherit (cfg) startAt; }; + # utility function around makeWrapper + mkWrapperDrv = { + original, name, set ? {} + }: + pkgs.runCommandNoCC "${name}-wrapper" { + buildInputs = [ pkgs.makeWrapper ]; + } (with lib; '' + makeWrapper "${original}" "$out/bin/${name}" \ + ${concatStringsSep " \\\n " (mapAttrsToList (name: value: ''--set ${name} "${value}"'') set)} + ''); + + mkBorgWrapper = name: cfg: mkWrapperDrv { + original = "${pkgs.borgbackup}/bin/borg"; + name = "borg-job-${name}"; + set = { BORG_REPO = cfg.repo; } // (mkPassEnv cfg) // cfg.environment; + }; + # Paths listed in ReadWritePaths must exist before service is started mkActivationScript = name: cfg: let @@ -172,14 +189,20 @@ let in { meta.maintainers = with maintainers; [ dotlambda ]; + meta.doc = ./borgbackup.xml; ###### interface options.services.borgbackup.jobs = mkOption { - description = "Deduplicating backups using BorgBackup."; + description = '' + Deduplicating backups using BorgBackup. + Adding a job will cause a borg-job-NAME wrapper to be added + to your system path, so that you can perform maintenance easily. + See also the chapter about BorgBackup in the NixOS manual. + ''; default = { }; example = literalExample '' - { + { # for a local backup rootBackup = { paths = "/"; exclude = [ "/nix" ]; @@ -192,6 +215,23 @@ in { startAt = "weekly"; }; } + { # Root backing each day up to a remote backup server. We assume that you have + # * created a password less key: ssh-keygen -N "" -t ed25519 -f /path/to/ssh_key + # best practices are: use -t ed25519, /path/to = /run/keys + # * the passphrase is in the file /run/keys/borgbackup_passphrase + # * you have initialized the repository manually + paths = [ "/etc" "/home" ]; + exclude = [ "/nix" "'**/.cache'" ]; + doInit = false; + repo = "user3@arep.repo.borgbase.com:repo"; + encryption = { + mode = "repokey-blake2"; + passCommand = "cat /path/to/passphrase"; + }; + environment = { BORG_RSH = "ssh -i /path/to/ssh_key"; }; + compression = "auto,lzma"; + startAt = "daily"; + }; ''; type = types.attrsOf (types.submodule (let globalConfig = config; in { name, config, ... }: { @@ -247,6 +287,8 @@ in { 7. If you do not want the backup to start automatically, use [ ]. + It will generate a systemd service borgbackup-job-NAME. + You may trigger it manually via systemctl restart borgbackup-job-NAME. ''; }; @@ -282,6 +324,10 @@ in { you to specify a or a . ''; + example = '' + encryption.mode = "repokey-blake2" ; + encryption.passphrase = "mySecretPassphrase" ; + ''; }; encryption.passCommand = mkOption { @@ -517,6 +563,7 @@ in { description = '' Serve BorgBackup repositories to given public SSH keys, restricting their access to the repository only. + See also the chapter about BorgBackup in the NixOS manual. Also, clients do not need to specify the absolute path when accessing the repository, i.e. user@machine:. is enough. (Note colon and dot.) ''; @@ -623,6 +670,6 @@ in { users = mkMerge (mapAttrsToList mkUsersConfig repos); - environment.systemPackages = with pkgs; [ borgbackup ]; + environment.systemPackages = with pkgs; [ borgbackup ] ++ (mapAttrsToList mkBorgWrapper jobs); }); } diff --git a/nixos/modules/services/backup/borgbackup.xml b/nixos/modules/services/backup/borgbackup.xml new file mode 100644 index 00000000000..bef7db608f8 --- /dev/null +++ b/nixos/modules/services/backup/borgbackup.xml @@ -0,0 +1,227 @@ + + BorgBackup + + Source: + modules/services/backup/borgbackup.nix + + + Upstream documentation: + + + + BorgBackup (short: Borg) + is a deduplicating backup program. Optionally, it supports compression and + authenticated encryption. + + + The main goal of Borg is to provide an efficient and secure way to backup + data. The data deduplication technique used makes Borg suitable for daily + backups since only changes are stored. The authenticated encryption technique + makes it suitable for backups to not fully trusted targets. + +
+ Configuring + + A complete list of options for the Borgbase module may be found + here. + +
+
+ Basic usage for a local backup + + + A very basic configuration for backing up to a locally accessible directory + is: + +{ + opt.services.borgbackup.jobs = { + { rootBackup = { + paths = "/"; + exclude = [ "/nix" "/path/to/local/repo" ]; + repo = "/path/to/local/repo"; + doInit = true; + encryption = { + mode = "repokey"; + passphrase = "secret"; + }; + compression = "auto,lzma"; + startAt = "weekly"; + }; + } + }; +} + + + + If you do not want the passphrase to be stored in the world-readable + Nix store, use passCommand. You find an example below. + + +
+
+ Create a borg backup server + You should use a different SSH key for each repository you write to, + because the specified keys are restricted to running borg serve and can only + access this single repository. You need the output of the generate pub file. + + + +# sudo ssh-keygen -N '' -t ed25519 -f /run/keys/id_ed25519_my_borg_repo +# cat /run/keys/id_ed25519_my_borg_repo +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAID78zmOyA+5uPG4Ot0hfAy+sLDPU1L4AiIoRYEIVbbQ/ root@nixos + + + Add the following snippet to your NixOS configuration: + +{ + services.borgbackup.repos = { + my_borg_repo = { + authorizedKeys = [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAID78zmOyA+5uPG4Ot0hfAy+sLDPU1L4AiIoRYEIVbbQ/ root@nixos" + ] ; + path = "/var/lib/my_borg_repo" ; + }; + }; +} + +
+ +
+ Backup to the borg repository server + The following NixOS snippet creates an hourly backup to the service + (on the host nixos) as created in the section above. We assume + that you have stored a secret passphrasse in the file + /run/keys/borgbackup_passphrase, which should be only + accessible by root + + + +{ + services.borgbackup.jobs = { + backupToLocalServer = { + paths = [ "/etc/nixos" ]; + doInit = true; + repo = "borg@nixos:." ; + encryption = { + mode = "repokey-blake2"; + passCommand = "cat /run/keys/borgbackup_passphrase"; + }; + environment = { BORG_RSH = "ssh -i /run/keys/id_ed25519_my_borg_repo"; }; + compression = "auto,lzma"; + startAt = "hourly"; + }; + }; +}; + + The following few commands (run as root) let you test your backup. + +> nixos-rebuild switch +...restarting the following units: polkit.service +> systemctl restart borgbackup-job-backupToLocalServer +> sleep 10 +> systemctl restart borgbackup-job-backupToLocalServer +> export BORG_PASSPHRASE=topSecrect +> borg list --rsh='ssh -i /run/keys/id_ed25519_my_borg_repo' borg@nixos:. +nixos-backupToLocalServer-2020-03-30T21:46:17 Mon, 2020-03-30 21:46:19 [84feb97710954931ca384182f5f3cb90665f35cef214760abd7350fb064786ac] +nixos-backupToLocalServer-2020-03-30T21:46:30 Mon, 2020-03-30 21:46:32 [e77321694ecd160ca2228611747c6ad1be177d6e0d894538898de7a2621b6e68] + +
+ +
+ Backup to a hosting service + + + Several companies offer (paid) + hosting services for Borg repositories. + + + To backup your home directory to borgbase you have to: + + + + + Generate a SSH key without a password, to access the remote server. E.g. + + + sudo ssh-keygen -N '' -t ed25519 -f /run/keys/id_ed25519_borgbase + + + + + Create the repository on the server by following the instructions for your + hosting server. + + + + + Initialize the repository on the server. Eg. + +sudo borg init --encryption=repokey-blake2 \ + -rsh "ssh -i /run/keys/id_ed25519_borgbase" \ + zzz2aaaaa@zzz2aaaaa.repo.borgbase.com:repo + + + +Add it to your NixOS configuration, e.g. + +{ + services.borgbackup.jobs = { + my_Remote_Backup = { + paths = [ "/" ]; + exclude = [ "/nix" "'**/.cache'" ]; + repo = "zzz2aaaaa@zzz2aaaaa.repo.borgbase.com:repo"; + encryption = { + mode = "repokey-blake2"; + passCommand = "cat /run/keys/borgbackup_passphrase"; + }; + BORG_RSH = "ssh -i /run/keys/id_ed25519_borgbase"; + compression = "auto,lzma"; + startAt = "daily"; + }; + }; +}} + + + +
+
+ Vorta backup client for the desktop + + Vorta is a backup client for macOS and Linux desktops. It integrates the + mighty BorgBackup with your desktop environment to protect your data from + disk failure, ransomware and theft. + + + It is available as a flatpak package. To enable it you must set the + following two configuration items. + + + +services.flatpak.enable = true ; +# next line is needed to avoid the Error +# Error deploying: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: +services.accounts-daemon.enable = true; + + + As a normal user you must first install, then run vorta using the + following commands: + +flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo +flatpak install flathub com.borgbase.Vorta +flatpak run --branch=stable --arch=x86_64 --command=vorta com.borgbase.Vorta + + After running flatpak install you can start Vorta also via + the KDE application menu. + + + Details about using Vorta can be found under https://vorta.borgbase.com + . + +
+
diff --git a/nixos/modules/services/backup/mysql-backup.nix b/nixos/modules/services/backup/mysql-backup.nix index dbd5605143f..f58af82773f 100644 --- a/nixos/modules/services/backup/mysql-backup.nix +++ b/nixos/modules/services/backup/mysql-backup.nix @@ -84,13 +84,14 @@ in }; config = mkIf cfg.enable { - users.users = optionalAttrs (cfg.user == defaultUser) (singleton - { name = defaultUser; + users.users = optionalAttrs (cfg.user == defaultUser) { + ${defaultUser} = { isSystemUser = true; createHome = false; home = cfg.location; group = "nogroup"; - }); + }; + }; services.mysql.ensureUsers = [{ name = cfg.user; diff --git a/nixos/modules/services/backup/restic.nix b/nixos/modules/services/backup/restic.nix index 7e8e91e4b9c..2388f1d6ca1 100644 --- a/nixos/modules/services/backup/restic.nix +++ b/nixos/modules/services/backup/restic.nix @@ -103,6 +103,34 @@ in Create the repository if it doesn't exist. ''; }; + + pruneOpts = mkOption { + type = types.listOf types.str; + default = []; + description = '' + A list of options (--keep-* et al.) for 'restic forget + --prune', to automatically prune old snapshots. The + 'forget' command is run *after* the 'backup' command, so + keep that in mind when constructing the --keep-* options. + ''; + example = [ + "--keep-daily 7" + "--keep-weekly 5" + "--keep-monthly 12" + "--keep-yearly 75" + ]; + }; + + dynamicFilesFrom = mkOption { + type = with types; nullOr str; + default = null; + description = '' + A script that produces a list of files to back up. The + results of this command are given to the '--files-from' + option. + ''; + example = "find /home/matt/git -type d -name .git"; + }; }; })); default = {}; @@ -134,25 +162,41 @@ in let extraOptions = concatMapStrings (arg: " -o ${arg}") backup.extraOptions; resticCmd = "${pkgs.restic}/bin/restic${extraOptions}"; + filesFromTmpFile = "/run/restic-backups-${name}/includes"; + backupPaths = if (backup.dynamicFilesFrom == null) + then concatStringsSep " " backup.paths + else "--files-from ${filesFromTmpFile}"; + pruneCmd = optionals (builtins.length backup.pruneOpts > 0) [ + ( resticCmd + " forget --prune " + (concatStringsSep " " backup.pruneOpts) ) + ( resticCmd + " check" ) + ]; in nameValuePair "restic-backups-${name}" ({ environment = { RESTIC_PASSWORD_FILE = backup.passwordFile; RESTIC_REPOSITORY = backup.repository; }; - path = with pkgs; [ - openssh - ]; + path = [ pkgs.openssh ]; restartIfChanged = false; serviceConfig = { Type = "oneshot"; - ExecStart = "${resticCmd} backup ${concatStringsSep " " backup.extraBackupArgs} ${concatStringsSep " " backup.paths}"; + ExecStart = [ "${resticCmd} backup ${concatStringsSep " " backup.extraBackupArgs} ${backupPaths}" ] ++ pruneCmd; User = backup.user; + RuntimeDirectory = "restic-backups-${name}"; } // optionalAttrs (backup.s3CredentialsFile != null) { EnvironmentFile = backup.s3CredentialsFile; }; - } // optionalAttrs backup.initialize { + } // optionalAttrs (backup.initialize || backup.dynamicFilesFrom != null) { preStart = '' - ${resticCmd} snapshots || ${resticCmd} init + ${optionalString (backup.initialize) '' + ${resticCmd} snapshots || ${resticCmd} init + ''} + ${optionalString (backup.dynamicFilesFrom != null) '' + ${pkgs.writeScript "dynamicFilesFromScript" backup.dynamicFilesFrom} > ${filesFromTmpFile} + ''} + ''; + } // optionalAttrs (backup.dynamicFilesFrom != null) { + postStart = '' + rm ${filesFromTmpFile} ''; }) ) config.services.restic.backups; diff --git a/nixos/modules/services/backup/sanoid.nix b/nixos/modules/services/backup/sanoid.nix new file mode 100644 index 00000000000..0472fb4ba1e --- /dev/null +++ b/nixos/modules/services/backup/sanoid.nix @@ -0,0 +1,213 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.services.sanoid; + + datasetSettingsType = with types; + (attrsOf (nullOr (oneOf [ str int bool (listOf str) ]))) // { + description = "dataset/template options"; + }; + + # Default values from https://github.com/jimsalterjrs/sanoid/blob/master/sanoid.defaults.conf + + commonOptions = { + hourly = mkOption { + description = "Number of hourly snapshots."; + type = types.ints.unsigned; + default = 48; + }; + + daily = mkOption { + description = "Number of daily snapshots."; + type = types.ints.unsigned; + default = 90; + }; + + monthly = mkOption { + description = "Number of monthly snapshots."; + type = types.ints.unsigned; + default = 6; + }; + + yearly = mkOption { + description = "Number of yearly snapshots."; + type = types.ints.unsigned; + default = 0; + }; + + autoprune = mkOption { + description = "Whether to automatically prune old snapshots."; + type = types.bool; + default = true; + }; + + autosnap = mkOption { + description = "Whether to automatically take snapshots."; + type = types.bool; + default = true; + }; + + settings = mkOption { + description = '' + Free-form settings for this template/dataset. See + + for allowed values. + ''; + type = datasetSettingsType; + }; + }; + + commonConfig = config: { + settings = { + hourly = mkDefault config.hourly; + daily = mkDefault config.daily; + monthly = mkDefault config.monthly; + yearly = mkDefault config.yearly; + autoprune = mkDefault config.autoprune; + autosnap = mkDefault config.autosnap; + }; + }; + + datasetOptions = { + useTemplate = mkOption { + description = "Names of the templates to use for this dataset."; + type = (types.listOf (types.enum (attrNames cfg.templates))) // { + description = "list of template names"; + }; + default = []; + }; + + recursive = mkOption { + description = "Whether to recursively snapshot dataset children."; + type = types.bool; + default = false; + }; + + processChildrenOnly = mkOption { + description = "Whether to only snapshot child datasets if recursing."; + type = types.bool; + default = false; + }; + }; + + datasetConfig = config: { + settings = { + use_template = mkDefault config.useTemplate; + recursive = mkDefault config.recursive; + process_children_only = mkDefault config.processChildrenOnly; + }; + }; + + # Extract pool names from configured datasets + pools = unique (map (d: head (builtins.match "([^/]+).*" d)) (attrNames cfg.datasets)); + + configFile = let + mkValueString = v: + if builtins.isList v then concatStringsSep "," v + else generators.mkValueStringDefault {} v; + + mkKeyValue = k: v: if v == null then "" + else generators.mkKeyValueDefault { inherit mkValueString; } "=" k v; + in generators.toINI { inherit mkKeyValue; } cfg.settings; + + configDir = pkgs.writeTextDir "sanoid.conf" configFile; + +in { + + # Interface + + options.services.sanoid = { + enable = mkEnableOption "Sanoid ZFS snapshotting service"; + + interval = mkOption { + type = types.str; + default = "hourly"; + example = "daily"; + description = '' + Run sanoid at this interval. The default is to run hourly. + + The format is described in + systemd.time + 7. + ''; + }; + + datasets = mkOption { + type = types.attrsOf (types.submodule ({ config, ... }: { + options = commonOptions // datasetOptions; + config = mkMerge [ (commonConfig config) (datasetConfig config) ]; + })); + default = {}; + description = "Datasets to snapshot."; + }; + + templates = mkOption { + type = types.attrsOf (types.submodule ({ config, ... }: { + options = commonOptions; + config = commonConfig config; + })); + default = {}; + description = "Templates for datasets."; + }; + + settings = mkOption { + type = types.attrsOf datasetSettingsType; + description = '' + Free-form settings written directly to the config file. See + + for allowed values. + ''; + }; + + extraArgs = mkOption { + type = types.listOf types.str; + default = []; + example = [ "--verbose" "--readonly" "--debug" ]; + description = '' + Extra arguments to pass to sanoid. See + + for allowed options. + ''; + }; + }; + + # Implementation + + config = mkIf cfg.enable { + services.sanoid.settings = mkMerge [ + (mapAttrs' (d: v: nameValuePair ("template_" + d) v.settings) cfg.templates) + (mapAttrs (d: v: v.settings) cfg.datasets) + ]; + + systemd.services.sanoid = { + description = "Sanoid snapshot service"; + serviceConfig = { + ExecStartPre = map (pool: lib.escapeShellArgs [ + "+/run/booted-system/sw/bin/zfs" "allow" + "sanoid" "snapshot,mount,destroy" pool + ]) pools; + ExecStart = lib.escapeShellArgs ([ + "${pkgs.sanoid}/bin/sanoid" + "--cron" + "--configdir" configDir + ] ++ cfg.extraArgs); + ExecStopPost = map (pool: lib.escapeShellArgs [ + "+/run/booted-system/sw/bin/zfs" "unallow" "sanoid" pool + ]) pools; + User = "sanoid"; + Group = "sanoid"; + DynamicUser = true; + RuntimeDirectory = "sanoid"; + CacheDirectory = "sanoid"; + }; + # Prevents missing snapshots during DST changes + environment.TZ = "UTC"; + after = [ "zfs.target" ]; + startAt = cfg.interval; + }; + }; + + meta.maintainers = with maintainers; [ lopsided98 ]; + } diff --git a/nixos/modules/services/backup/syncoid.nix b/nixos/modules/services/backup/syncoid.nix new file mode 100644 index 00000000000..fff119c2cf0 --- /dev/null +++ b/nixos/modules/services/backup/syncoid.nix @@ -0,0 +1,172 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.services.syncoid; +in { + + # Interface + + options.services.syncoid = { + enable = mkEnableOption "Syncoid ZFS synchronization service"; + + interval = mkOption { + type = types.str; + default = "hourly"; + example = "*-*-* *:15:00"; + description = '' + Run syncoid at this interval. The default is to run hourly. + + The format is described in + systemd.time + 7. + ''; + }; + + user = mkOption { + type = types.str; + default = "root"; + example = "backup"; + description = '' + The user for the service. Sudo or ZFS privilege delegation must be + configured to use a user other than root. + ''; + }; + + sshKey = mkOption { + type = types.nullOr types.path; + # Prevent key from being copied to store + apply = mapNullable toString; + default = null; + description = '' + SSH private key file to use to login to the remote system. Can be + overridden in individual commands. + ''; + }; + + commonArgs = mkOption { + type = types.listOf types.str; + default = []; + example = [ "--no-sync-snap" ]; + description = '' + Arguments to add to every syncoid command, unless disabled for that + command. See + + for available options. + ''; + }; + + commands = mkOption { + type = types.attrsOf (types.submodule ({ name, ... }: { + options = { + source = mkOption { + type = types.str; + example = "pool/dataset"; + description = '' + Source ZFS dataset. Can be either local or remote. Defaults to + the attribute name. + ''; + }; + + target = mkOption { + type = types.str; + example = "user@server:pool/dataset"; + description = '' + Target ZFS dataset. Can be either local + (pool/dataset) or remote + (user@server:pool/dataset). + ''; + }; + + recursive = mkOption { + type = types.bool; + default = false; + description = '' + Whether to also transfer child datasets. + ''; + }; + + sshKey = mkOption { + type = types.nullOr types.path; + # Prevent key from being copied to store + apply = mapNullable toString; + description = '' + SSH private key file to use to login to the remote system. + Defaults to option. + ''; + }; + + sendOptions = mkOption { + type = types.separatedString " "; + default = ""; + example = "Lc e"; + description = '' + Advanced options to pass to zfs send. Options are specified + without their leading dashes and separated by spaces. + ''; + }; + + recvOptions = mkOption { + type = types.separatedString " "; + default = ""; + example = "ux recordsize o compression=lz4"; + description = '' + Advanced options to pass to zfs recv. Options are specified + without their leading dashes and separated by spaces. + ''; + }; + + useCommonArgs = mkOption { + type = types.bool; + default = true; + description = '' + Whether to add the configured common arguments to this command. + ''; + }; + + extraArgs = mkOption { + type = types.listOf types.str; + default = []; + example = [ "--sshport 2222" ]; + description = "Extra syncoid arguments for this command."; + }; + }; + config = { + source = mkDefault name; + sshKey = mkDefault cfg.sshKey; + }; + })); + default = {}; + example = literalExample '' + { + "pool/test".target = "root@target:pool/test"; + } + ''; + description = "Syncoid commands to run."; + }; + }; + + # Implementation + + config = mkIf cfg.enable { + systemd.services.syncoid = { + description = "Syncoid ZFS synchronization service"; + script = concatMapStringsSep "\n" (c: lib.escapeShellArgs + ([ "${pkgs.sanoid}/bin/syncoid" ] + ++ (optionals c.useCommonArgs cfg.commonArgs) + ++ (optional c.recursive "-r") + ++ (optionals (c.sshKey != null) [ "--sshkey" c.sshKey ]) + ++ c.extraArgs + ++ [ "--sendoptions" c.sendOptions + "--recvoptions" c.recvOptions + c.source c.target + ])) (attrValues cfg.commands); + after = [ "zfs.target" ]; + serviceConfig.User = cfg.user; + startAt = cfg.interval; + }; + }; + + meta.maintainers = with maintainers; [ lopsided98 ]; + } diff --git a/nixos/modules/services/cluster/hadoop/default.nix b/nixos/modules/services/cluster/hadoop/default.nix index f0f5a6ecbfc..bfb73f68371 100644 --- a/nixos/modules/services/cluster/hadoop/default.nix +++ b/nixos/modules/services/cluster/hadoop/default.nix @@ -7,33 +7,41 @@ with lib; options.services.hadoop = { coreSite = mkOption { default = {}; - example = { - "fs.defaultFS" = "hdfs://localhost"; - }; + example = literalExample '' + { + "fs.defaultFS" = "hdfs://localhost"; + } + ''; description = "Hadoop core-site.xml definition"; }; hdfsSite = mkOption { default = {}; - example = { - "dfs.nameservices" = "namenode1"; - }; + example = literalExample '' + { + "dfs.nameservices" = "namenode1"; + } + ''; description = "Hadoop hdfs-site.xml definition"; }; mapredSite = mkOption { default = {}; - example = { - "mapreduce.map.cpu.vcores" = "1"; - }; + example = literalExample '' + { + "mapreduce.map.cpu.vcores" = "1"; + } + ''; description = "Hadoop mapred-site.xml definition"; }; yarnSite = mkOption { default = {}; - example = { - "yarn.resourcemanager.ha.id" = "resourcemanager1"; - }; + example = literalExample '' + { + "yarn.resourcemanager.ha.id" = "resourcemanager1"; + } + ''; description = "Hadoop yarn-site.xml definition"; }; diff --git a/nixos/modules/services/cluster/k3s/default.nix b/nixos/modules/services/cluster/k3s/default.nix new file mode 100644 index 00000000000..ccdf54d128e --- /dev/null +++ b/nixos/modules/services/cluster/k3s/default.nix @@ -0,0 +1,101 @@ +{ config, lib, pkgs, ... }: + +with lib; +let + cfg = config.services.k3s; +in +{ + # interface + options.services.k3s = { + enable = mkEnableOption "k3s"; + + package = mkOption { + type = types.package; + default = pkgs.k3s; + defaultText = "pkgs.k3s"; + example = literalExample "pkgs.k3s"; + description = "Package that should be used for k3s"; + }; + + role = mkOption { + description = '' + Whether k3s should run as a server or agent. + Note that the server, by default, also runs as an agent. + ''; + default = "server"; + type = types.enum [ "server" "agent" ]; + }; + + serverAddr = mkOption { + type = types.str; + description = "The k3s server to connect to. This option only makes sense for an agent."; + example = "https://10.0.0.10:6443"; + default = ""; + }; + + token = mkOption { + type = types.str; + description = "The k3s token to use when connecting to the server. This option only makes sense for an agent."; + default = ""; + }; + + docker = mkOption { + type = types.bool; + default = false; + description = "Use docker to run containers rather than the built-in containerd."; + }; + + extraFlags = mkOption { + description = "Extra flags to pass to the k3s command."; + default = ""; + example = "--no-deploy traefik --cluster-cidr 10.24.0.0/16"; + }; + + disableAgent = mkOption { + type = types.bool; + default = false; + description = "Only run the server. This option only makes sense for a server."; + }; + }; + + # implementation + + config = mkIf cfg.enable { + assertions = [ + { + assertion = cfg.role == "agent" -> cfg.serverAddr != ""; + message = "serverAddr should be set if role is 'agent'"; + } + { + assertion = cfg.role == "agent" -> cfg.token != ""; + message = "token should be set if role is 'agent'"; + } + ]; + + virtualisation.docker = mkIf cfg.docker { + enable = mkDefault true; + }; + + systemd.services.k3s = { + description = "k3s service"; + after = mkIf cfg.docker [ "docker.service" ]; + wantedBy = [ "multi-user.target" ]; + serviceConfig = { + # Taken from https://github.com/rancher/k3s/blob/v1.17.4+k3s1/contrib/ansible/roles/k3s/node/templates/k3s.service.j2 + Type = "notify"; + KillMode = "process"; + Delegate = "yes"; + Restart = "always"; + RestartSec = "5s"; + ExecStart = concatStringsSep " \\\n " ( + [ + "${cfg.package}/bin/k3s ${cfg.role}" + ] ++ (optional cfg.docker "--docker") + ++ (optional cfg.disableAgent "--disable-agent") + ++ (optional (cfg.role == "agent") "--server ${cfg.serverAddr} --token ${cfg.token}") + ++ [ cfg.extraFlags ] + ); + }; + }; + }; +} diff --git a/nixos/modules/services/cluster/kubernetes/addon-manager.nix b/nixos/modules/services/cluster/kubernetes/addon-manager.nix index 17f2dde31a7..f55079300b1 100644 --- a/nixos/modules/services/cluster/kubernetes/addon-manager.nix +++ b/nixos/modules/services/cluster/kubernetes/addon-manager.nix @@ -88,7 +88,7 @@ in services.kubernetes.addonManager.bootstrapAddons = mkIf isRBACEnabled (let - name = system:kube-addon-manager; + name = "system:kube-addon-manager"; namespace = "kube-system"; in { diff --git a/nixos/modules/services/cluster/kubernetes/default.nix b/nixos/modules/services/cluster/kubernetes/default.nix index 3605d036509..3a11a6513a4 100644 --- a/nixos/modules/services/cluster/kubernetes/default.nix +++ b/nixos/modules/services/cluster/kubernetes/default.nix @@ -266,8 +266,7 @@ in { "d /var/lib/kubernetes 0755 kubernetes kubernetes -" ]; - users.users = singleton { - name = "kubernetes"; + users.users.kubernetes = { uid = config.ids.uids.kubernetes; description = "Kubernetes user"; extraGroups = [ "docker" ]; diff --git a/nixos/modules/services/cluster/kubernetes/pki.nix b/nixos/modules/services/cluster/kubernetes/pki.nix index 733479e24c9..4275563f1a3 100644 --- a/nixos/modules/services/cluster/kubernetes/pki.nix +++ b/nixos/modules/services/cluster/kubernetes/pki.nix @@ -20,6 +20,7 @@ let size = 2048; }; CN = top.masterAddress; + hosts = cfg.cfsslAPIExtraSANs; }); cfsslAPITokenBaseName = "apitoken.secret"; @@ -66,6 +67,15 @@ in type = bool; }; + cfsslAPIExtraSANs = mkOption { + description = '' + Extra x509 Subject Alternative Names to be added to the cfssl API webserver TLS cert. + ''; + default = []; + example = [ "subdomain.example.com" ]; + type = listOf str; + }; + genCfsslAPIToken = mkOption { description = '' Whether to automatically generate cfssl API-token secret, diff --git a/nixos/modules/services/computing/boinc/client.nix b/nixos/modules/services/computing/boinc/client.nix index a7edac02538..7becf624071 100644 --- a/nixos/modules/services/computing/boinc/client.nix +++ b/nixos/modules/services/computing/boinc/client.nix @@ -99,14 +99,16 @@ in environment.systemPackages = [cfg.package]; users.users.boinc = { + group = "boinc"; createHome = false; description = "BOINC Client"; home = cfg.dataDir; isSystemUser = true; }; + users.groups.boinc = {}; systemd.tmpfiles.rules = [ - "d '${cfg.dataDir}' - boinc - - -" + "d '${cfg.dataDir}' - boinc boinc - -" ]; systemd.services.boinc = { @@ -114,7 +116,7 @@ in after = ["network.target"]; wantedBy = ["multi-user.target"]; script = '' - ${fhsEnvExecutable} --dir ${cfg.dataDir} --redirectio ${allowRemoteGuiRpcFlag} + ${fhsEnvExecutable} --dir ${cfg.dataDir} ${allowRemoteGuiRpcFlag} ''; serviceConfig = { User = "boinc"; diff --git a/nixos/modules/services/computing/foldingathome/client.nix b/nixos/modules/services/computing/foldingathome/client.nix new file mode 100644 index 00000000000..9f99af48c48 --- /dev/null +++ b/nixos/modules/services/computing/foldingathome/client.nix @@ -0,0 +1,81 @@ +{ config, lib, pkgs, ... }: +with lib; +let + cfg = config.services.foldingathome; + + args = + ["--team" "${toString cfg.team}"] + ++ lib.optionals (cfg.user != null) ["--user" cfg.user] + ++ cfg.extraArgs + ; +in +{ + imports = [ + (mkRenamedOptionModule [ "services" "foldingAtHome" ] [ "services" "foldingathome" ]) + (mkRenamedOptionModule [ "services" "foldingathome" "nickname" ] [ "services" "foldingathome" "user" ]) + (mkRemovedOptionModule [ "services" "foldingathome" "config" ] '' + Use services.foldingathome.extraArgs instead + '') + ]; + options.services.foldingathome = { + enable = mkEnableOption "Enable the Folding@home client"; + + package = mkOption { + type = types.package; + default = pkgs.fahclient; + defaultText = "pkgs.fahclient"; + description = '' + Which Folding@home client to use. + ''; + }; + + user = mkOption { + type = types.nullOr types.str; + default = null; + description = '' + The user associated with the reported computation results. This will + be used in the ranking statistics. + ''; + }; + + team = mkOption { + type = types.int; + default = 236565; + description = '' + The team ID associated with the reported computation results. This + will be used in the ranking statistics. + + By default, use the NixOS folding@home team ID is being used. + ''; + }; + + extraArgs = mkOption { + type = types.listOf types.str; + default = []; + description = '' + Extra startup options for the FAHClient. Run + FAHClient --help to find all the available options. + ''; + }; + }; + + config = mkIf cfg.enable { + systemd.services.foldingathome = { + description = "Folding@home client"; + after = [ "network.target" ]; + wantedBy = [ "multi-user.target" ]; + script = '' + exec ${cfg.package}/bin/FAHClient ${lib.escapeShellArgs args} + ''; + serviceConfig = { + DynamicUser = true; + StateDirectory = "foldingathome"; + WorkingDirectory = "%S/foldingathome"; + }; + }; + }; + + meta = { + maintainers = with lib.maintainers; [ zimbatm ]; + }; +} diff --git a/nixos/modules/services/computing/slurm/slurm.nix b/nixos/modules/services/computing/slurm/slurm.nix index c70d999ca96..050872e933f 100644 --- a/nixos/modules/services/computing/slurm/slurm.nix +++ b/nixos/modules/services/computing/slurm/slurm.nix @@ -355,6 +355,7 @@ in ExecStart = "${wrappedSlurm}/bin/slurmd"; PIDFile = "/run/slurmd.pid"; ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID"; + LimitMEMLOCK = "infinity"; }; preStart = '' diff --git a/nixos/modules/services/continuous-integration/buildbot/master.nix b/nixos/modules/services/continuous-integration/buildbot/master.nix index 9c615fbe885..e3da3092d45 100644 --- a/nixos/modules/services/continuous-integration/buildbot/master.nix +++ b/nixos/modules/services/continuous-integration/buildbot/master.nix @@ -222,19 +222,20 @@ in { }; config = mkIf cfg.enable { - users.groups = optional (cfg.group == "buildbot") { - name = "buildbot"; + users.groups = optionalAttrs (cfg.group == "buildbot") { + buildbot = { }; }; - users.users = optional (cfg.user == "buildbot") { - name = "buildbot"; - description = "Buildbot User."; - isNormalUser = true; - createHome = true; - home = cfg.home; - group = cfg.group; - extraGroups = cfg.extraGroups; - useDefaultShell = true; + users.users = optionalAttrs (cfg.user == "buildbot") { + buildbot = { + description = "Buildbot User."; + isNormalUser = true; + createHome = true; + home = cfg.home; + group = cfg.group; + extraGroups = cfg.extraGroups; + useDefaultShell = true; + }; }; systemd.services.buildbot-master = { diff --git a/nixos/modules/services/continuous-integration/buildbot/worker.nix b/nixos/modules/services/continuous-integration/buildbot/worker.nix index 49e04ca3622..52f24b8cee3 100644 --- a/nixos/modules/services/continuous-integration/buildbot/worker.nix +++ b/nixos/modules/services/continuous-integration/buildbot/worker.nix @@ -136,19 +136,20 @@ in { config = mkIf cfg.enable { services.buildbot-worker.workerPassFile = mkDefault (pkgs.writeText "buildbot-worker-password" cfg.workerPass); - users.groups = optional (cfg.group == "bbworker") { - name = "bbworker"; + users.groups = optionalAttrs (cfg.group == "bbworker") { + bbworker = { }; }; - users.users = optional (cfg.user == "bbworker") { - name = "bbworker"; - description = "Buildbot Worker User."; - isNormalUser = true; - createHome = true; - home = cfg.home; - group = cfg.group; - extraGroups = cfg.extraGroups; - useDefaultShell = true; + users.users = optionalAttrs (cfg.user == "bbworker") { + bbworker = { + description = "Buildbot Worker User."; + isNormalUser = true; + createHome = true; + home = cfg.home; + group = cfg.group; + extraGroups = cfg.extraGroups; + useDefaultShell = true; + }; }; systemd.services.buildbot-worker = { diff --git a/nixos/modules/services/continuous-integration/buildkite-agent.nix b/nixos/modules/services/continuous-integration/buildkite-agents.nix similarity index 57% rename from nixos/modules/services/continuous-integration/buildkite-agent.nix rename to nixos/modules/services/continuous-integration/buildkite-agents.nix index 32f361454bc..b0045409ae6 100644 --- a/nixos/modules/services/continuous-integration/buildkite-agent.nix +++ b/nixos/modules/services/continuous-integration/buildkite-agents.nix @@ -3,7 +3,7 @@ with lib; let - cfg = config.services.buildkite-agent; + cfg = config.services.buildkite-agents; mkHookOption = { name, description, example ? null }: { inherit name; @@ -15,7 +15,7 @@ let }; mkHookOptions = hooks: listToAttrs (map mkHookOption hooks); - hooksDir = let + hooksDir = cfg: let mkHookEntry = name: value: '' cat > $out/${name} <<'EOF' #! ${pkgs.runtimeShell} @@ -29,12 +29,13 @@ let ${concatStringsSep "\n" (mapAttrsToList mkHookEntry (filterAttrs (n: v: v != null) cfg.hooks))} ''; -in - -{ - options = { - services.buildkite-agent = { - enable = mkEnableOption "buildkite-agent"; + buildkiteOptions = { name ? "", config, ... }: { + options = { + enable = mkOption { + default = true; + type = types.bool; + description = "Whether to enable this buildkite agent"; + }; package = mkOption { default = pkgs.buildkite-agent; @@ -44,14 +45,14 @@ in }; dataDir = mkOption { - default = "/var/lib/buildkite-agent"; + default = "/var/lib/buildkite-agent-${name}"; description = "The workdir for the agent"; type = types.str; }; runtimePackages = mkOption { - default = [ pkgs.bash pkgs.nix ]; - defaultText = "[ pkgs.bash pkgs.nix ]"; + default = [ pkgs.bash pkgs.gnutar pkgs.gzip pkgs.git pkgs.nix ]; + defaultText = "[ pkgs.bash pkgs.gnutar pkgs.gzip pkgs.git pkgs.nix ]"; description = "Add programs to the buildkite-agent environment"; type = types.listOf types.package; }; @@ -68,19 +69,18 @@ in name = mkOption { type = types.str; - default = "%hostname-%n"; + default = "%hostname-${name}-%n"; description = '' - The name of the agent. + The name of the agent as seen in the buildkite dashboard. ''; }; - meta-data = mkOption { - type = types.str; - default = ""; - example = "queue=default,docker=true,ruby2=true"; + tags = mkOption { + type = types.attrsOf types.str; + default = {}; + example = { queue = "default"; docker = "true"; ruby2 ="true"; }; description = '' - Meta data for the agent. This is a comma-separated list of - key=value pairs. + Tags for the agent. ''; }; @@ -93,26 +93,20 @@ in ''; }; - openssh = - { privateKeyPath = mkOption { - type = types.path; - description = '' - Private agent key. + privateSshKeyPath = mkOption { + type = types.nullOr types.path; + default = null; + ## maximum care is taken so that secrets (ssh keys and the CI token) + ## don't end up in the Nix store. + apply = final: if final == null then null else toString final; - A run-time path to the key file, which is supposed to be provisioned - outside of Nix store. - ''; - }; - publicKeyPath = mkOption { - type = types.path; - description = '' - Public agent key. + description = '' + OpenSSH private key - A run-time path to the key file, which is supposed to be provisioned - outside of Nix store. - ''; - }; - }; + A run-time path to the key file, which is supposed to be provisioned + outside of Nix store. + ''; + }; hooks = mkHookOptions [ { name = "checkout"; @@ -173,34 +167,60 @@ in hooksPath = mkOption { type = types.path; - default = hooksDir; - defaultText = "generated from services.buildkite-agent.hooks"; + default = hooksDir config; + defaultText = "generated from services.buildkite-agents..hooks"; description = '' Path to the directory storing the hooks. - Consider using + Consider using instead. ''; }; + + shell = mkOption { + type = types.str; + default = "${pkgs.bash}/bin/bash -e -c"; + description = '' + Command that buildkite-agent 3 will execute when it spawns a shell. + ''; + }; }; }; + enabledAgents = lib.filterAttrs (n: v: v.enable) cfg; + mapAgents = function: lib.mkMerge (lib.mapAttrsToList function enabledAgents); +in +{ + options.services.buildkite-agents = mkOption { + type = types.attrsOf (types.submodule buildkiteOptions); + default = {}; + description = '' + Attribute set of buildkite agents. + The attribute key is combined with the hostname and a unique integer to + create the final agent name. This can be overridden by setting the `name` + attribute. + ''; + }; - config = mkIf config.services.buildkite-agent.enable { - users.users.buildkite-agent = - { name = "buildkite-agent"; - home = cfg.dataDir; - createHome = true; - description = "Buildkite agent user"; - extraGroups = [ "keys" ]; - isSystemUser = true; - }; + config.users.users = mapAgents (name: cfg: { + "buildkite-agent-${name}" = { + name = "buildkite-agent-${name}"; + home = cfg.dataDir; + createHome = true; + description = "Buildkite agent user"; + extraGroups = [ "keys" ]; + isSystemUser = true; + group = "buildkite-agent-${name}"; + }; + }); + config.users.groups = mapAgents (name: cfg: { + "buildkite-agent-${name}" = {}; + }); - environment.systemPackages = [ cfg.package ]; - - systemd.services.buildkite-agent = + config.systemd.services = mapAgents (name: cfg: { + "buildkite-agent-${name}" = { description = "Buildkite Agent"; wantedBy = [ "multi-user.target" ]; after = [ "network.target" ]; - path = cfg.runtimePackages ++ [ pkgs.coreutils ]; + path = cfg.runtimePackages ++ [ cfg.package pkgs.coreutils ]; environment = config.networking.proxy.envVars // { HOME = cfg.dataDir; NIX_REMOTE = "daemon"; @@ -210,17 +230,18 @@ in ## don't end up in the Nix store. preStart = let sshDir = "${cfg.dataDir}/.ssh"; + tagStr = lib.concatStringsSep "," (lib.mapAttrsToList (name: value: "${name}=${value}") cfg.tags); in - '' + optionalString (cfg.privateSshKeyPath != null) '' mkdir -m 0700 -p "${sshDir}" - cp -f "${toString cfg.openssh.privateKeyPath}" "${sshDir}/id_rsa" - cp -f "${toString cfg.openssh.publicKeyPath}" "${sshDir}/id_rsa.pub" - chmod 600 "${sshDir}"/id_rsa* - + cp -f "${toString cfg.privateSshKeyPath}" "${sshDir}/id_rsa" + chmod 600 "${sshDir}"/id_rsa + '' + '' cat > "${cfg.dataDir}/buildkite-agent.cfg" <' are mutually exclusive. + Options `services.buildkite-agents.${name}.hooksPath' and + `services.buildkite-agents.${name}.hooks.' are mutually exclusive. ''; } - ]; - }; + ]); + imports = [ - (mkRenamedOptionModule [ "services" "buildkite-agent" "token" ] [ "services" "buildkite-agent" "tokenPath" ]) - (mkRenamedOptionModule [ "services" "buildkite-agent" "openssh" "privateKey" ] [ "services" "buildkite-agent" "openssh" "privateKeyPath" ]) - (mkRenamedOptionModule [ "services" "buildkite-agent" "openssh" "publicKey" ] [ "services" "buildkite-agent" "openssh" "publicKeyPath" ]) + (mkRemovedOptionModule [ "services" "buildkite-agent"] "services.buildkite-agent has been upgraded from version 2 to version 3 and moved to an attribute set at services.buildkite-agents. Please consult the 20.03 release notes for more information.") ]; } diff --git a/nixos/modules/services/continuous-integration/gitlab-runner.nix b/nixos/modules/services/continuous-integration/gitlab-runner.nix index 3d307b1abcf..bd4cf6a37ba 100644 --- a/nixos/modules/services/continuous-integration/gitlab-runner.nix +++ b/nixos/modules/services/continuous-integration/gitlab-runner.nix @@ -120,10 +120,16 @@ in ++ optional hasDocker "docker.service"; requires = optional hasDocker "docker.service"; wantedBy = [ "multi-user.target" ]; + reloadIfChanged = true; + restartTriggers = [ + config.environment.etc."gitlab-runner/config.toml".source + ]; serviceConfig = { + StateDirectory = "gitlab-runner"; + ExecReload= "${pkgs.coreutils}/bin/kill -HUP $MAINPID"; ExecStart = ''${cfg.package.bin}/bin/gitlab-runner run \ --working-directory ${cfg.workDir} \ - --config ${configFile} \ + --config /etc/gitlab-runner/config.toml \ --service gitlab-runner \ --user gitlab-runner \ ''; @@ -138,6 +144,9 @@ in # Make the gitlab-runner command availabe so users can query the runner environment.systemPackages = [ cfg.package ]; + # Make sure the config can be reloaded on change + environment.etc."gitlab-runner/config.toml".source = configFile; + users.users.gitlab-runner = { group = "gitlab-runner"; extraGroups = optional hasDocker "docker"; diff --git a/nixos/modules/services/continuous-integration/gocd-agent/default.nix b/nixos/modules/services/continuous-integration/gocd-agent/default.nix index 8126f27c2b0..2e9e1c94857 100644 --- a/nixos/modules/services/continuous-integration/gocd-agent/default.nix +++ b/nixos/modules/services/continuous-integration/gocd-agent/default.nix @@ -135,20 +135,20 @@ in { }; config = mkIf cfg.enable { - users.groups = optional (cfg.group == "gocd-agent") { - name = "gocd-agent"; - gid = config.ids.gids.gocd-agent; + users.groups = optionalAttrs (cfg.group == "gocd-agent") { + gocd-agent.gid = config.ids.gids.gocd-agent; }; - users.users = optional (cfg.user == "gocd-agent") { - name = "gocd-agent"; - description = "gocd-agent user"; - createHome = true; - home = cfg.workDir; - group = cfg.group; - extraGroups = cfg.extraGroups; - useDefaultShell = true; - uid = config.ids.uids.gocd-agent; + users.users = optionalAttrs (cfg.user == "gocd-agent") { + gocd-agent = { + description = "gocd-agent user"; + createHome = true; + home = cfg.workDir; + group = cfg.group; + extraGroups = cfg.extraGroups; + useDefaultShell = true; + uid = config.ids.uids.gocd-agent; + }; }; systemd.services.gocd-agent = { diff --git a/nixos/modules/services/continuous-integration/gocd-server/default.nix b/nixos/modules/services/continuous-integration/gocd-server/default.nix index 8f177da129e..4fa41ac49ed 100644 --- a/nixos/modules/services/continuous-integration/gocd-server/default.nix +++ b/nixos/modules/services/continuous-integration/gocd-server/default.nix @@ -143,20 +143,20 @@ in { }; config = mkIf cfg.enable { - users.groups = optional (cfg.group == "gocd-server") { - name = "gocd-server"; - gid = config.ids.gids.gocd-server; + users.groups = optionalAttrs (cfg.group == "gocd-server") { + gocd-server.gid = config.ids.gids.gocd-server; }; - users.users = optional (cfg.user == "gocd-server") { - name = "gocd-server"; - description = "gocd-server user"; - createHome = true; - home = cfg.workDir; - group = cfg.group; - extraGroups = cfg.extraGroups; - useDefaultShell = true; - uid = config.ids.uids.gocd-server; + users.users = optionalAttrs (cfg.user == "gocd-server") { + gocd-server = { + description = "gocd-server user"; + createHome = true; + home = cfg.workDir; + group = cfg.group; + extraGroups = cfg.extraGroups; + useDefaultShell = true; + uid = config.ids.uids.gocd-server; + }; }; systemd.services.gocd-server = { diff --git a/nixos/modules/services/continuous-integration/hydra/default.nix b/nixos/modules/services/continuous-integration/hydra/default.nix index 30c5550f71c..502a5898a5d 100644 --- a/nixos/modules/services/continuous-integration/hydra/default.nix +++ b/nixos/modules/services/continuous-integration/hydra/default.nix @@ -37,6 +37,38 @@ let haveLocalDB = cfg.dbi == localDB; + inherit (config.system) stateVersion; + + hydra-package = + let + makeWrapperArgs = concatStringsSep " " (mapAttrsToList (key: value: "--set \"${key}\" \"${value}\"") hydraEnv); + in pkgs.buildEnv rec { + name = "hydra-env"; + buildInputs = [ pkgs.makeWrapper ]; + paths = [ cfg.package ]; + + postBuild = '' + if [ -L "$out/bin" ]; then + unlink "$out/bin" + fi + mkdir -p "$out/bin" + + for path in ${concatStringsSep " " paths}; do + if [ -d "$path/bin" ]; then + cd "$path/bin" + for prg in *; do + if [ -f "$prg" ]; then + rm -f "$out/bin/$prg" + if [ -x "$prg" ]; then + makeWrapper "$path/bin/$prg" "$out/bin/$prg" ${makeWrapperArgs} + fi + fi + done + fi + done + ''; + }; + in { @@ -63,8 +95,7 @@ in }; package = mkOption { - type = types.path; - default = pkgs.hydra; + type = types.package; defaultText = "pkgs.hydra"; description = "The Hydra package."; }; @@ -167,7 +198,7 @@ in buildMachinesFiles = mkOption { type = types.listOf types.path; - default = [ "/etc/nix/machines" ]; + default = optional (config.nix.buildMachines != []) "/etc/nix/machines"; example = [ "/etc/nix/machines" "/var/lib/hydra/provisioner/machines" ]; description = "List of files containing build machines."; }; @@ -194,6 +225,34 @@ in config = mkIf cfg.enable { + warnings = optional (cfg.package.migration or false) '' + You're currently deploying an older version of Hydra which is needed to + make some required database changes[1]. As soon as this is done, it's recommended + to run `hydra-backfill-ids` and set `services.hydra.package` to `pkgs.hydra-unstable` + after that. + + [1] https://github.com/NixOS/hydra/pull/711 + ''; + + services.hydra.package = with pkgs; + mkDefault ( + if pkgs ? hydra + then throw '' + The Hydra package doesn't exist anymore in `nixpkgs`! It probably exists + due to an overlay. To upgrade Hydra, you need to take two steps as some + bigger changes in the database schema were implemented recently[1]. You first + need to deploy `pkgs.hydra-migration`, run `hydra-backfill-ids` on the server + and then deploy `pkgs.hydra-unstable`. + + If you want to use `pkgs.hydra` from your overlay, please set `services.hydra.package` + explicitly to `pkgs.hydra` and make sure you know what you're doing. + + [1] https://github.com/NixOS/hydra/pull/711 + '' + else if versionOlder stateVersion "20.03" then hydra-migration + else hydra-unstable + ); + users.groups.hydra = { gid = config.ids.gids.hydra; }; @@ -237,7 +296,7 @@ in use-substitutes = ${if cfg.useSubstitutes then "1" else "0"} ''; - environment.systemPackages = [ cfg.package ]; + environment.systemPackages = [ hydra-package ]; environment.variables = hydraEnv; @@ -298,7 +357,7 @@ in chown hydra.hydra ${cfg.gcRootsDir} chmod 2775 ${cfg.gcRootsDir} ''; - serviceConfig.ExecStart = "${cfg.package}/bin/hydra-init"; + serviceConfig.ExecStart = "${hydra-package}/bin/hydra-init"; serviceConfig.PermissionsStartOnly = true; serviceConfig.User = "hydra"; serviceConfig.Type = "oneshot"; @@ -313,7 +372,7 @@ in restartTriggers = [ hydraConf ]; serviceConfig = { ExecStart = - "@${cfg.package}/bin/hydra-server hydra-server -f -h '${cfg.listenHost}' " + "@${hydra-package}/bin/hydra-server hydra-server -f -h '${cfg.listenHost}' " + "-p ${toString cfg.port} --max_spare_servers 5 --max_servers 25 " + "--max_requests 100 ${optionalString cfg.debugServer "-d"}"; User = "hydra-www"; @@ -326,15 +385,15 @@ in { wantedBy = [ "multi-user.target" ]; requires = [ "hydra-init.service" ]; after = [ "hydra-init.service" "network.target" ]; - path = [ cfg.package pkgs.nettools pkgs.openssh pkgs.bzip2 config.nix.package ]; + path = [ hydra-package pkgs.nettools pkgs.openssh pkgs.bzip2 config.nix.package ]; restartTriggers = [ hydraConf ]; environment = env // { PGPASSFILE = "${baseDir}/pgpass-queue-runner"; # grrr IN_SYSTEMD = "1"; # to get log severity levels }; serviceConfig = - { ExecStart = "@${cfg.package}/bin/hydra-queue-runner hydra-queue-runner -v --option build-use-substitutes ${boolToString cfg.useSubstitutes}"; - ExecStopPost = "${cfg.package}/bin/hydra-queue-runner --unlock"; + { ExecStart = "@${hydra-package}/bin/hydra-queue-runner hydra-queue-runner -v"; + ExecStopPost = "${hydra-package}/bin/hydra-queue-runner --unlock"; User = "hydra-queue-runner"; Restart = "always"; @@ -348,11 +407,11 @@ in { wantedBy = [ "multi-user.target" ]; requires = [ "hydra-init.service" ]; after = [ "hydra-init.service" "network.target" ]; - path = with pkgs; [ cfg.package nettools jq ]; + path = with pkgs; [ hydra-package nettools jq ]; restartTriggers = [ hydraConf ]; environment = env; serviceConfig = - { ExecStart = "@${cfg.package}/bin/hydra-evaluator hydra-evaluator"; + { ExecStart = "@${hydra-package}/bin/hydra-evaluator hydra-evaluator"; User = "hydra"; Restart = "always"; WorkingDirectory = baseDir; @@ -364,7 +423,7 @@ in after = [ "hydra-init.service" ]; environment = env; serviceConfig = - { ExecStart = "@${cfg.package}/bin/hydra-update-gc-roots hydra-update-gc-roots"; + { ExecStart = "@${hydra-package}/bin/hydra-update-gc-roots hydra-update-gc-roots"; User = "hydra"; }; startAt = "2,14:15"; @@ -375,7 +434,7 @@ in after = [ "hydra-init.service" ]; environment = env; serviceConfig = - { ExecStart = "@${cfg.package}/bin/hydra-send-stats hydra-send-stats"; + { ExecStart = "@${hydra-package}/bin/hydra-send-stats hydra-send-stats"; User = "hydra"; }; }; @@ -389,7 +448,7 @@ in PGPASSFILE = "${baseDir}/pgpass-queue-runner"; }; serviceConfig = - { ExecStart = "@${cfg.package}/bin/hydra-notify hydra-notify"; + { ExecStart = "@${hydra-package}/bin/hydra-notify hydra-notify"; # FIXME: run this under a less privileged user? User = "hydra-queue-runner"; Restart = "always"; diff --git a/nixos/modules/services/continuous-integration/jenkins/default.nix b/nixos/modules/services/continuous-integration/jenkins/default.nix index 0ec90671388..1477c471f8a 100644 --- a/nixos/modules/services/continuous-integration/jenkins/default.nix +++ b/nixos/modules/services/continuous-integration/jenkins/default.nix @@ -150,20 +150,20 @@ in { pkgs.dejavu_fonts ]; - users.groups = optional (cfg.group == "jenkins") { - name = "jenkins"; - gid = config.ids.gids.jenkins; + users.groups = optionalAttrs (cfg.group == "jenkins") { + jenkins.gid = config.ids.gids.jenkins; }; - users.users = optional (cfg.user == "jenkins") { - name = "jenkins"; - description = "jenkins user"; - createHome = true; - home = cfg.home; - group = cfg.group; - extraGroups = cfg.extraGroups; - useDefaultShell = true; - uid = config.ids.uids.jenkins; + users.users = optionalAttrs (cfg.user == "jenkins") { + jenkins = { + description = "jenkins user"; + createHome = true; + home = cfg.home; + group = cfg.group; + extraGroups = cfg.extraGroups; + useDefaultShell = true; + uid = config.ids.uids.jenkins; + }; }; systemd.services.jenkins = { diff --git a/nixos/modules/services/continuous-integration/jenkins/slave.nix b/nixos/modules/services/continuous-integration/jenkins/slave.nix index 92deabc3dd3..3c0e6f78e74 100644 --- a/nixos/modules/services/continuous-integration/jenkins/slave.nix +++ b/nixos/modules/services/continuous-integration/jenkins/slave.nix @@ -50,19 +50,19 @@ in { }; config = mkIf (cfg.enable && !masterCfg.enable) { - users.groups = optional (cfg.group == "jenkins") { - name = "jenkins"; - gid = config.ids.gids.jenkins; + users.groups = optionalAttrs (cfg.group == "jenkins") { + jenkins.gid = config.ids.gids.jenkins; }; - users.users = optional (cfg.user == "jenkins") { - name = "jenkins"; - description = "jenkins user"; - createHome = true; - home = cfg.home; - group = cfg.group; - useDefaultShell = true; - uid = config.ids.uids.jenkins; + users.users = optionalAttrs (cfg.user == "jenkins") { + jenkins = { + description = "jenkins user"; + createHome = true; + home = cfg.home; + group = cfg.group; + useDefaultShell = true; + uid = config.ids.uids.jenkins; + }; }; }; } diff --git a/nixos/modules/services/databases/cockroachdb.nix b/nixos/modules/services/databases/cockroachdb.nix index 268fdcc819f..35fb46d69d8 100644 --- a/nixos/modules/services/databases/cockroachdb.nix +++ b/nixos/modules/services/databases/cockroachdb.nix @@ -153,7 +153,7 @@ in defaultText = "pkgs.cockroachdb"; description = '' The CockroachDB derivation to use for running the service. - + This would primarily be useful to enable Enterprise Edition features in your own custom CockroachDB build (Nixpkgs CockroachDB binaries only contain open source features and open source code). @@ -171,17 +171,17 @@ in environment.systemPackages = [ crdb ]; - users.users = optionalAttrs (cfg.user == "cockroachdb") (singleton - { name = "cockroachdb"; + users.users = optionalAttrs (cfg.user == "cockroachdb") { + cockroachdb = { description = "CockroachDB Server User"; uid = config.ids.uids.cockroachdb; group = cfg.group; - }); + }; + }; - users.groups = optionalAttrs (cfg.group == "cockroachdb") (singleton - { name = "cockroachdb"; - gid = config.ids.gids.cockroachdb; - }); + users.groups = optionalAttrs (cfg.group == "cockroachdb") { + cockroachdb.gid = config.ids.gids.cockroachdb; + }; networking.firewall.allowedTCPPorts = lib.optionals cfg.openPorts [ cfg.http.port cfg.listen.port ]; diff --git a/nixos/modules/services/databases/foundationdb.nix b/nixos/modules/services/databases/foundationdb.nix index 8f8d0da7c8d..18727acc7c7 100644 --- a/nixos/modules/services/databases/foundationdb.nix +++ b/nixos/modules/services/databases/foundationdb.nix @@ -341,17 +341,17 @@ in environment.systemPackages = [ pkg ]; - users.users = optionalAttrs (cfg.user == "foundationdb") (singleton - { name = "foundationdb"; + users.users = optionalAttrs (cfg.user == "foundationdb") { + foundationdb = { description = "FoundationDB User"; uid = config.ids.uids.foundationdb; group = cfg.group; - }); + }; + }; - users.groups = optionalAttrs (cfg.group == "foundationdb") (singleton - { name = "foundationdb"; - gid = config.ids.gids.foundationdb; - }); + users.groups = optionalAttrs (cfg.group == "foundationdb") { + foundationdb.gid = config.ids.gids.foundationdb; + }; networking.firewall.allowedTCPPortRanges = mkIf cfg.openFirewall [ { from = cfg.listenPortStart; diff --git a/nixos/modules/services/databases/influxdb.nix b/nixos/modules/services/databases/influxdb.nix index 2f176a03872..dd5d69b1147 100644 --- a/nixos/modules/services/databases/influxdb.nix +++ b/nixos/modules/services/databases/influxdb.nix @@ -182,15 +182,15 @@ in ''; }; - users.users = optional (cfg.user == "influxdb") { - name = "influxdb"; - uid = config.ids.uids.influxdb; - description = "Influxdb daemon user"; + users.users = optionalAttrs (cfg.user == "influxdb") { + influxdb = { + uid = config.ids.uids.influxdb; + description = "Influxdb daemon user"; + }; }; - users.groups = optional (cfg.group == "influxdb") { - name = "influxdb"; - gid = config.ids.gids.influxdb; + users.groups = optionalAttrs (cfg.group == "influxdb") { + influxdb.gid = config.ids.gids.influxdb; }; }; diff --git a/nixos/modules/services/databases/memcached.nix b/nixos/modules/services/databases/memcached.nix index d1dfdb41bf4..89ff957babf 100644 --- a/nixos/modules/services/databases/memcached.nix +++ b/nixos/modules/services/databases/memcached.nix @@ -64,10 +64,9 @@ in config = mkIf config.services.memcached.enable { - users.users = optional (cfg.user == "memcached") { - name = "memcached"; - description = "Memcached server user"; - isSystemUser = true; + users.users = optionalAttrs (cfg.user == "memcached") { + memcached.description = "Memcached server user"; + memcached.isSystemUser = true; }; environment.systemPackages = [ memcached ]; diff --git a/nixos/modules/services/databases/mysql.nix b/nixos/modules/services/databases/mysql.nix index 6af32700fc7..f9e657f5774 100644 --- a/nixos/modules/services/databases/mysql.nix +++ b/nixos/modules/services/databases/mysql.nix @@ -10,16 +10,13 @@ let isMariaDB = lib.getName mysql == lib.getName pkgs.mariadb; - isMysqlAtLeast57 = - (lib.getName mysql == lib.getName pkgs.mysql57) - && (builtins.compareVersions mysql.version "5.7" >= 0); - mysqldOptions = "--user=${cfg.user} --datadir=${cfg.dataDir} --basedir=${mysql}"; - # For MySQL 5.7+, --insecure creates the root user without password - # (earlier versions and MariaDB do this by default). - installOptions = - "${mysqldOptions} ${lib.optionalString isMysqlAtLeast57 "--insecure"}"; + + settingsFile = pkgs.writeText "my.cnf" ( + generators.toINI { listsAsDuplicateKeys = true; } cfg.settings + + optionalString (cfg.extraOptions != null) "[mysqld]\n${cfg.extraOptions}" + ); in @@ -76,9 +73,64 @@ in description = "Location where MySQL stores its table files"; }; + configFile = mkOption { + type = types.path; + default = settingsFile; + defaultText = "settingsFile"; + description = '' + Override the configuration file used by MySQL. By default, + NixOS generates one automatically from . + ''; + example = literalExample '' + pkgs.writeText "my.cnf" ''' + [mysqld] + datadir = /var/lib/mysql + bind-address = 127.0.0.1 + port = 3336 + plugin-load-add = auth_socket.so + + !includedir /etc/mysql/conf.d/ + '''; + ''; + }; + + settings = mkOption { + type = with types; attrsOf (attrsOf (oneOf [ bool int str (listOf str) ])); + default = {}; + description = '' + MySQL configuration. Refer to + , + , + and + for details on supported values. + + + + MySQL configuration options such as --quick should be treated as + boolean options and provided values such as true, false, + 1, or 0. See the provided example below. + + + ''; + example = literalExample '' + { + mysqld = { + key_buffer_size = "6G"; + table_cache = 1600; + log-error = "/var/log/mysql_err.log"; + plugin-load-add = [ "server_audit" "ed25519=auth_ed25519" ]; + }; + mysqldump = { + quick = true; + max_allowed_packet = "16M"; + }; + } + ''; + }; + extraOptions = mkOption { - type = types.lines; - default = ""; + type = with types; nullOr lines; + default = null; example = '' key_buffer_size = 6G table_cache = 1600 @@ -252,10 +304,27 @@ in config = mkIf config.services.mysql.enable { + warnings = optional (cfg.extraOptions != null) "services.mysql.`extraOptions` is deprecated, please use services.mysql.`settings`."; + services.mysql.dataDir = mkDefault (if versionAtLeast config.system.stateVersion "17.09" then "/var/lib/mysql" else "/var/mysql"); + services.mysql.settings.mysqld = mkMerge [ + { + datadir = cfg.dataDir; + bind-address = mkIf (cfg.bind != null) cfg.bind; + port = cfg.port; + plugin-load-add = optional (cfg.ensureUsers != []) "auth_socket.so"; + } + (mkIf (cfg.replication.role == "master" || cfg.replication.role == "slave") { + log-bin = "mysql-bin-${toString cfg.replication.serverId}"; + log-bin-index = "mysql-bin-${toString cfg.replication.serverId}.index"; + relay-log = "mysql-relay-bin"; + server-id = cfg.replication.serverId; + }) + ]; + users.users.mysql = { description = "MySQL server user"; group = "mysql"; @@ -266,25 +335,7 @@ in environment.systemPackages = [mysql]; - environment.etc."my.cnf".text = - '' - [mysqld] - port = ${toString cfg.port} - datadir = ${cfg.dataDir} - ${optionalString (cfg.bind != null) "bind-address = ${cfg.bind}" } - ${optionalString (cfg.replication.role == "master" || cfg.replication.role == "slave") - '' - log-bin=mysql-bin-${toString cfg.replication.serverId} - log-bin-index=mysql-bin-${toString cfg.replication.serverId}.index - relay-log=mysql-relay-bin - server-id = ${toString cfg.replication.serverId} - ''} - ${optionalString (cfg.ensureUsers != []) - '' - plugin-load-add = auth_socket.so - ''} - ${cfg.extraOptions} - ''; + environment.etc."my.cnf".source = cfg.configFile; systemd.tmpfiles.rules = [ "d '${cfg.dataDir}' 0700 ${cfg.user} mysql -" @@ -297,7 +348,7 @@ in after = [ "network.target" ]; wantedBy = [ "multi-user.target" ]; - restartTriggers = [ config.environment.etc."my.cnf".source ]; + restartTriggers = [ cfg.configFile ]; unitConfig.RequiresMountsFor = "${cfg.dataDir}"; @@ -307,9 +358,14 @@ in pkgs.nettools ]; - preStart = '' + preStart = if isMariaDB then '' if ! test -e ${cfg.dataDir}/mysql; then - ${mysql}/bin/mysql_install_db --defaults-file=/etc/my.cnf ${installOptions} + ${mysql}/bin/mysql_install_db --defaults-file=/etc/my.cnf ${mysqldOptions} + touch /tmp/mysql_init + fi + '' else '' + if ! test -e ${cfg.dataDir}/mysql; then + ${mysql}/bin/mysqld --defaults-file=/etc/my.cnf ${mysqldOptions} --initialize-insecure touch /tmp/mysql_init fi ''; @@ -320,6 +376,8 @@ in Type = if hasNotify then "notify" else "simple"; RuntimeDirectory = "mysqld"; RuntimeDirectoryMode = "0755"; + Restart = "on-abort"; + RestartSec = "5s"; # The last two environment variables are used for starting Galera clusters ExecStart = "${mysql}/bin/mysqld --defaults-file=/etc/my.cnf ${mysqldOptions} $_WSREP_NEW_CLUSTER $_WSREP_START_POSITION"; ExecStartPost = diff --git a/nixos/modules/services/databases/neo4j.nix b/nixos/modules/services/databases/neo4j.nix index 29a83300ec1..09b453e7584 100644 --- a/nixos/modules/services/databases/neo4j.nix +++ b/nixos/modules/services/databases/neo4j.nix @@ -650,8 +650,7 @@ in { environment.systemPackages = [ cfg.package ]; - users.users = singleton { - name = "neo4j"; + users.users.neo4j = { uid = config.ids.uids.neo4j; description = "Neo4j daemon user"; home = cfg.directories.home; diff --git a/nixos/modules/services/databases/openldap.nix b/nixos/modules/services/databases/openldap.nix index 5bf57a1bf9c..809f61cfa81 100644 --- a/nixos/modules/services/databases/openldap.nix +++ b/nixos/modules/services/databases/openldap.nix @@ -259,6 +259,8 @@ in ${openldap.out}/bin/slapadd ${configOpts} -l ${dataFile} ''} chown -R "${cfg.user}:${cfg.group}" "${cfg.dataDir}" + + ${openldap}/bin/slaptest ${configOpts} ''; serviceConfig.ExecStart = "${openldap.out}/libexec/slapd -d '${cfg.logLevel}' " + diff --git a/nixos/modules/services/databases/postgresql.nix b/nixos/modules/services/databases/postgresql.nix index c8fdd89d0d8..0b79a996dc7 100644 --- a/nixos/modules/services/databases/postgresql.nix +++ b/nixos/modules/services/databases/postgresql.nix @@ -20,7 +20,9 @@ let listen_addresses = '${if cfg.enableTCPIP then "*" else "localhost"}' port = ${toString cfg.port} ${cfg.extraConfig} - ''; + ''; + + groupAccessAvailable = versionAtLeast postgresql.version "11.0"; in @@ -88,6 +90,16 @@ in ''; }; + initdbArgs = mkOption { + type = with types; listOf str; + default = []; + example = [ "--data-checksums" "--allow-group-access" ]; + description = '' + Additional arguments passed to initdb during data dir + initialisation. + ''; + }; + initialScript = mkOption { type = types.nullOr types.path; default = null; @@ -220,7 +232,7 @@ in ###### implementation - config = mkIf config.services.postgresql.enable { + config = mkIf cfg.enable { services.postgresql.package = # Note: when changing the default, make it conditional on @@ -232,13 +244,14 @@ in else throw "postgresql_9_4 was removed, please upgrade your postgresql version."); services.postgresql.dataDir = - mkDefault (if versionAtLeast config.system.stateVersion "17.09" then "/var/lib/postgresql/${config.services.postgresql.package.psqlSchema}" - else "/var/db/postgresql"); + mkDefault (if versionAtLeast config.system.stateVersion "17.09" + then "/var/lib/postgresql/${cfg.package.psqlSchema}" + else "/var/db/postgresql"); services.postgresql.authentication = mkAfter '' # Generated file; do not edit! - local all all ident + local all all peer host all all 127.0.0.1/32 md5 host all all ::1/128 md5 ''; @@ -284,7 +297,7 @@ in '' # Initialise the database. if ! test -e ${cfg.dataDir}/PG_VERSION; then - initdb -U ${cfg.superUser} + initdb -U ${cfg.superUser} ${concatStringsSep " " cfg.initdbArgs} # See postStart! touch "${cfg.dataDir}/.first_startup" fi @@ -293,8 +306,12 @@ in ln -sfn "${pkgs.writeText "recovery.conf" cfg.recoveryConfig}" \ "${cfg.dataDir}/recovery.conf" ''} + ${optionalString (!groupAccessAvailable) '' + # postgresql pre 11.0 doesn't start if state directory mode is group accessible + chmod 0700 "${cfg.dataDir}" + ''} - exec postgres + exec postgres ''; serviceConfig = @@ -303,7 +320,7 @@ in Group = "postgres"; PermissionsStartOnly = true; RuntimeDirectory = "postgresql"; - Type = if lib.versionAtLeast cfg.package.version "9.6" + Type = if versionAtLeast cfg.package.version "9.6" then "notify" else "simple"; @@ -352,5 +369,5 @@ in }; meta.doc = ./postgresql.xml; - meta.maintainers = with lib.maintainers; [ thoughtpolice ]; + meta.maintainers = with lib.maintainers; [ thoughtpolice danbst ]; } diff --git a/nixos/modules/services/databases/postgresql.xml b/nixos/modules/services/databases/postgresql.xml index 72d4a8249a3..07af4c937f0 100644 --- a/nixos/modules/services/databases/postgresql.xml +++ b/nixos/modules/services/databases/postgresql.xml @@ -7,12 +7,10 @@ - Source: - modules/services/databases/postgresql.nix + Source: modules/services/databases/postgresql.nix - Upstream documentation: - + Upstream documentation: @@ -23,18 +21,12 @@ Configuring - To enable PostgreSQL, add the following to your - configuration.nix: + To enable PostgreSQL, add the following to your configuration.nix: = true; = pkgs.postgresql_11; - Note that you are required to specify the desired version of PostgreSQL - (e.g. pkgs.postgresql_11). Since upgrading your - PostgreSQL version requires a database dump and reload (see below), NixOS - cannot provide a default value for - such as the most recent - release of PostgreSQL. + Note that you are required to specify the desired version of PostgreSQL (e.g. pkgs.postgresql_11). Since upgrading your PostgreSQL version requires a database dump and reload (see below), NixOS cannot provide a default value for such as the most recent release of PostgreSQL. - By default, PostgreSQL stores its databases in - /var/lib/postgresql/$psqlSchema. You can override this using - , e.g. + By default, PostgreSQL stores its databases in /var/lib/postgresql/$psqlSchema. You can override this using , e.g. = "/data/postgresql"; @@ -63,25 +53,83 @@ Type "help" for help. Upgrading - FIXME: document dump/upgrade/load cycle. + Major PostgreSQL upgrade requires PostgreSQL downtime and a few imperative steps to be called. To simplify this process, use the following NixOS module: + + containers.temp-pg.config.services.postgresql = { + enable = true; + package = pkgs.postgresql_12; + ## set a custom new dataDir + # dataDir = "/some/data/dir"; + }; + environment.systemPackages = + let newpg = config.containers.temp-pg.config.services.postgresql; + in [ + (pkgs.writeScriptBin "upgrade-pg-cluster" '' + set -x + export OLDDATA="${config.services.postgresql.dataDir}" + export NEWDATA="${newpg.dataDir}" + export OLDBIN="${config.services.postgresql.package}/bin" + export NEWBIN="${newpg.package}/bin" + + install -d -m 0700 -o postgres -g postgres "$NEWDATA" + cd "$NEWDATA" + sudo -u postgres $NEWBIN/initdb -D "$NEWDATA" + + systemctl stop postgresql # old one + + sudo -u postgres $NEWBIN/pg_upgrade \ + --old-datadir "$OLDDATA" --new-datadir "$NEWDATA" \ + --old-bindir $OLDBIN --new-bindir $NEWBIN \ + "$@" + '') + ]; + + + + The upgrade process is: + + + + + + Rebuild nixos configuration with the configuration above added to your configuration.nix. Alternatively, add that into separate file and reference it in imports list. + + + + + Login as root (sudo su -) + + + + + Run upgrade-pg-cluster. It will stop old postgresql, initialize new one and migrate old one to new one. You may supply arguments like --jobs 4 and --link to speedup migration process. See for details. + + + + + Change postgresql package in NixOS configuration to the one you were upgrading to, and change dataDir to the one you have migrated to. Rebuild NixOS. This should start new postgres using upgraded data directory. + + + + + After upgrade you may want to ANALYZE new db. + + +
Options - A complete list of options for the PostgreSQL module may be found - here. + A complete list of options for the PostgreSQL module may be found here.
Plugins - Plugins collection for each PostgreSQL version can be accessed with - .pkgs. For example, for - pkgs.postgresql_11 package, its plugin collection is - accessed by pkgs.postgresql_11.pkgs: + Plugins collection for each PostgreSQL version can be accessed with .pkgs. For example, for pkgs.postgresql_11 package, its plugin collection is accessed by pkgs.postgresql_11.pkgs: $ nix repl '<nixpkgs>' @@ -98,8 +146,9 @@ postgresql_11.pkgs.pg_partman postgresql_11.pkgs.pgroonga ... + - To add plugins via NixOS configuration, set services.postgresql.extraPlugins: + To add plugins via NixOS configuration, set services.postgresql.extraPlugins: = pkgs.postgresql_11; = with pkgs.postgresql_11.pkgs; [ @@ -108,10 +157,9 @@ postgresql_11.pkgs.pg_partman postgresql_11.pkgs.pgroonga ]; + - You can build custom PostgreSQL-with-plugins (to be used outside of NixOS) using - function .withPackages. For example, creating a custom - PostgreSQL package in an overlay can look like: + You can build custom PostgreSQL-with-plugins (to be used outside of NixOS) using function .withPackages. For example, creating a custom PostgreSQL package in an overlay can look like: self: super: { postgresql_custom = self.postgresql_11.withPackages (ps: [ @@ -121,8 +169,9 @@ self: super: { } + - Here's a recipe on how to override a particular plugin through an overlay: + Here's a recipe on how to override a particular plugin through an overlay: self: super: { postgresql_11 = super.postgresql_11.override { this = self.postgresql_11; } // { diff --git a/nixos/modules/services/databases/redis.nix b/nixos/modules/services/databases/redis.nix index 70895fa53e4..5c817422aae 100644 --- a/nixos/modules/services/databases/redis.nix +++ b/nixos/modules/services/databases/redis.nix @@ -150,10 +150,20 @@ in requirePass = mkOption { type = with types; nullOr str; default = null; - description = "Password for database (STORED PLAIN TEXT, WORLD-READABLE IN NIX STORE)"; + description = '' + Password for database (STORED PLAIN TEXT, WORLD-READABLE IN NIX STORE). + Use requirePassFile to store it outside of the nix store in a dedicated file. + ''; example = "letmein!"; }; + requirePassFile = mkOption { + type = with types; nullOr path; + default = null; + description = "File with password for the database."; + example = "/run/keys/redis-password"; + }; + appendOnly = mkOption { type = types.bool; default = false; @@ -192,6 +202,10 @@ in ###### implementation config = mkIf config.services.redis.enable { + assertions = [{ + assertion = cfg.requirePass != null -> cfg.requirePassFile == null; + message = "You can only set one services.redis.requirePass or services.redis.requirePassFile"; + }]; boot.kernel.sysctl = (mkMerge [ { "vm.nr_hugepages" = "0"; } ( mkIf cfg.vmOverCommit { "vm.overcommit_memory" = "1"; } ) @@ -208,21 +222,26 @@ in environment.systemPackages = [ cfg.package ]; - systemd.services.redis = - { description = "Redis Server"; + systemd.services.redis = { + description = "Redis Server"; - wantedBy = [ "multi-user.target" ]; - after = [ "network.target" ]; + wantedBy = [ "multi-user.target" ]; + after = [ "network.target" ]; - serviceConfig = { - ExecStart = "${cfg.package}/bin/redis-server ${redisConfig}"; - RuntimeDirectory = "redis"; - StateDirectory = "redis"; - Type = "notify"; - User = "redis"; - }; + preStart = '' + install -m 600 ${redisConfig} /run/redis/redis.conf + '' + optionalString (cfg.requirePassFile != null) '' + password=$(cat ${escapeShellArg cfg.requirePassFile}) + echo "requirePass $password" >> /run/redis/redis.conf + ''; + + serviceConfig = { + ExecStart = "${cfg.package}/bin/redis-server /run/redis/redis.conf"; + RuntimeDirectory = "redis"; + StateDirectory = "redis"; + Type = "notify"; + User = "redis"; }; - + }; }; - } diff --git a/nixos/modules/services/databases/victoriametrics.nix b/nixos/modules/services/databases/victoriametrics.nix new file mode 100644 index 00000000000..cb6bf8508fb --- /dev/null +++ b/nixos/modules/services/databases/victoriametrics.nix @@ -0,0 +1,70 @@ +{ config, pkgs, lib, ... }: +let cfg = config.services.victoriametrics; in +{ + options.services.victoriametrics = with lib; { + enable = mkEnableOption "victoriametrics"; + package = mkOption { + type = types.package; + default = pkgs.victoriametrics; + defaultText = "pkgs.victoriametrics"; + description = '' + The VictoriaMetrics distribution to use. + ''; + }; + listenAddress = mkOption { + default = ":8428"; + type = types.str; + description = '' + The listen address for the http interface. + ''; + }; + retentionPeriod = mkOption { + type = types.int; + default = 1; + description = '' + Retention period in months. + ''; + }; + extraOptions = mkOption { + type = types.listOf types.str; + default = []; + description = '' + Extra options to pass to VictoriaMetrics. See the README: + or victoriametrics -help for more + information. + ''; + }; + }; + config = lib.mkIf cfg.enable { + systemd.services.victoriametrics = { + description = "VictoriaMetrics time series database"; + after = [ "network.target" ]; + serviceConfig = { + Restart = "on-failure"; + RestartSec = 1; + StartLimitBurst = 5; + StateDirectory = "victoriametrics"; + DynamicUser = true; + ExecStart = '' + ${cfg.package}/bin/victoria-metrics \ + -storageDataPath=/var/lib/victoriametrics \ + -httpListenAddr ${cfg.listenAddress} + -retentionPeriod ${toString cfg.retentionPeriod} + ${lib.escapeShellArgs cfg.extraOptions} + ''; + }; + wantedBy = [ "multi-user.target" ]; + + postStart = + let + bindAddr = (lib.optionalString (lib.hasPrefix ":" cfg.listenAddress) "127.0.0.1") + cfg.listenAddress; + in + lib.mkBefore '' + until ${lib.getBin pkgs.curl}/bin/curl -s -o /dev/null http://${bindAddr}/ping; do + sleep 1; + done + ''; + }; + }; +} diff --git a/nixos/modules/services/databases/virtuoso.nix b/nixos/modules/services/databases/virtuoso.nix index 6ffc44a5274..0cc027cb1d7 100644 --- a/nixos/modules/services/databases/virtuoso.nix +++ b/nixos/modules/services/databases/virtuoso.nix @@ -54,9 +54,8 @@ with lib; config = mkIf cfg.enable { - users.users = singleton - { name = virtuosoUser; - uid = config.ids.uids.virtuoso; + users.users.${virtuosoUser} = + { uid = config.ids.uids.virtuoso; description = "virtuoso user"; home = stateDir; }; diff --git a/nixos/modules/services/desktops/accountsservice.nix b/nixos/modules/services/desktops/accountsservice.nix index c48036a99e8..ae2ecb5ffeb 100644 --- a/nixos/modules/services/desktops/accountsservice.nix +++ b/nixos/modules/services/desktops/accountsservice.nix @@ -6,6 +6,10 @@ with lib; { + meta = { + maintainers = teams.freedesktop.members; + }; + ###### interface options = { diff --git a/nixos/modules/services/desktops/bamf.nix b/nixos/modules/services/desktops/bamf.nix index 0928ee81a64..4b35146d084 100644 --- a/nixos/modules/services/desktops/bamf.nix +++ b/nixos/modules/services/desktops/bamf.nix @@ -5,6 +5,10 @@ with lib; { + meta = { + maintainers = with maintainers; [ worldofpeace ]; + }; + ###### interface options = { diff --git a/nixos/modules/services/desktops/gnome3/at-spi2-core.nix b/nixos/modules/services/desktops/gnome3/at-spi2-core.nix index cca98c43dc7..492242e3296 100644 --- a/nixos/modules/services/desktops/gnome3/at-spi2-core.nix +++ b/nixos/modules/services/desktops/gnome3/at-spi2-core.nix @@ -6,6 +6,10 @@ with lib; { + meta = { + maintainers = teams.gnome.members; + }; + ###### interface options = { @@ -18,6 +22,9 @@ with lib; description = '' Whether to enable at-spi2-core, a service for the Assistive Technologies available on the GNOME platform. + + Enable this if you get the error or warning + The name org.a11y.Bus was not provided by any .service files. ''; }; diff --git a/nixos/modules/services/desktops/gnome3/chrome-gnome-shell.nix b/nixos/modules/services/desktops/gnome3/chrome-gnome-shell.nix index 3d2b3ed85e3..3c7f217b18d 100644 --- a/nixos/modules/services/desktops/gnome3/chrome-gnome-shell.nix +++ b/nixos/modules/services/desktops/gnome3/chrome-gnome-shell.nix @@ -4,6 +4,10 @@ with lib; { + meta = { + maintainers = teams.gnome.members; + }; + ###### interface options = { services.gnome3.chrome-gnome-shell.enable = mkEnableOption '' diff --git a/nixos/modules/services/desktops/gnome3/evolution-data-server.nix b/nixos/modules/services/desktops/gnome3/evolution-data-server.nix index 7e312a1b81e..bd62d16f61c 100644 --- a/nixos/modules/services/desktops/gnome3/evolution-data-server.nix +++ b/nixos/modules/services/desktops/gnome3/evolution-data-server.nix @@ -6,6 +6,10 @@ with lib; { + meta = { + maintainers = teams.gnome.members; + }; + ###### interface options = { @@ -16,7 +20,7 @@ with lib; type = types.bool; default = false; description = '' - Whether to enable Evolution Data Server, a collection of services for + Whether to enable Evolution Data Server, a collection of services for storing addressbooks and calendars. ''; }; diff --git a/nixos/modules/services/desktops/gnome3/glib-networking.nix b/nixos/modules/services/desktops/gnome3/glib-networking.nix index fcd58509d6f..7e667b6b1f0 100644 --- a/nixos/modules/services/desktops/gnome3/glib-networking.nix +++ b/nixos/modules/services/desktops/gnome3/glib-networking.nix @@ -6,6 +6,10 @@ with lib; { + meta = { + maintainers = teams.gnome.members; + }; + ###### interface options = { diff --git a/nixos/modules/services/desktops/gnome3/gnome-initial-setup.nix b/nixos/modules/services/desktops/gnome3/gnome-initial-setup.nix index d715d52c2d0..c391ad9694c 100644 --- a/nixos/modules/services/desktops/gnome3/gnome-initial-setup.nix +++ b/nixos/modules/services/desktops/gnome3/gnome-initial-setup.nix @@ -44,6 +44,10 @@ in { + meta = { + maintainers = teams.gnome.members; + }; + ###### interface options = { diff --git a/nixos/modules/services/desktops/gnome3/gnome-keyring.nix b/nixos/modules/services/desktops/gnome3/gnome-keyring.nix index db60445ef77..2916a3c82b3 100644 --- a/nixos/modules/services/desktops/gnome3/gnome-keyring.nix +++ b/nixos/modules/services/desktops/gnome3/gnome-keyring.nix @@ -6,6 +6,10 @@ with lib; { + meta = { + maintainers = teams.gnome.members; + }; + ###### interface options = { @@ -35,6 +39,8 @@ with lib; services.dbus.packages = [ pkgs.gnome3.gnome-keyring pkgs.gcr ]; + xdg.portal.extraPortals = [ pkgs.gnome3.gnome-keyring ]; + security.pam.services.login.enableGnomeKeyring = true; security.wrappers.gnome-keyring-daemon = { diff --git a/nixos/modules/services/desktops/gnome3/gnome-online-accounts.nix b/nixos/modules/services/desktops/gnome3/gnome-online-accounts.nix index 748a025414a..3f9ced5e86b 100644 --- a/nixos/modules/services/desktops/gnome3/gnome-online-accounts.nix +++ b/nixos/modules/services/desktops/gnome3/gnome-online-accounts.nix @@ -6,6 +6,10 @@ with lib; { + meta = { + maintainers = teams.gnome.members; + }; + ###### interface options = { diff --git a/nixos/modules/services/desktops/gnome3/gnome-online-miners.nix b/nixos/modules/services/desktops/gnome3/gnome-online-miners.nix index d406bf6f5e3..39d669e8b30 100644 --- a/nixos/modules/services/desktops/gnome3/gnome-online-miners.nix +++ b/nixos/modules/services/desktops/gnome3/gnome-online-miners.nix @@ -6,6 +6,10 @@ with lib; { + meta = { + maintainers = teams.gnome.members; + }; + ###### interface options = { diff --git a/nixos/modules/services/desktops/gnome3/gnome-remote-desktop.nix b/nixos/modules/services/desktops/gnome3/gnome-remote-desktop.nix index 021f4f9534b..164a0a44f8c 100644 --- a/nixos/modules/services/desktops/gnome3/gnome-remote-desktop.nix +++ b/nixos/modules/services/desktops/gnome3/gnome-remote-desktop.nix @@ -4,6 +4,10 @@ with lib; { + meta = { + maintainers = teams.gnome.members; + }; + ###### interface options = { services.gnome3.gnome-remote-desktop = { @@ -13,6 +17,8 @@ with lib; ###### implementation config = mkIf config.services.gnome3.gnome-remote-desktop.enable { + services.pipewire.enable = true; + systemd.packages = [ pkgs.gnome3.gnome-remote-desktop ]; }; } diff --git a/nixos/modules/services/desktops/gnome3/gnome-settings-daemon.nix b/nixos/modules/services/desktops/gnome3/gnome-settings-daemon.nix index 2f83fd653bd..1c33ed064a1 100644 --- a/nixos/modules/services/desktops/gnome3/gnome-settings-daemon.nix +++ b/nixos/modules/services/desktops/gnome3/gnome-settings-daemon.nix @@ -12,6 +12,10 @@ in { + meta = { + maintainers = teams.gnome.members; + }; + imports = [ (mkRemovedOptionModule ["services" "gnome3" "gnome-settings-daemon" "package"] diff --git a/nixos/modules/services/desktops/gnome3/gnome-user-share.nix b/nixos/modules/services/desktops/gnome3/gnome-user-share.nix index f8396287770..f2fe8b41a9e 100644 --- a/nixos/modules/services/desktops/gnome3/gnome-user-share.nix +++ b/nixos/modules/services/desktops/gnome3/gnome-user-share.nix @@ -6,6 +6,10 @@ with lib; { + meta = { + maintainers = teams.gnome.members; + }; + ###### interface options = { diff --git a/nixos/modules/services/desktops/gnome3/rygel.nix b/nixos/modules/services/desktops/gnome3/rygel.nix index 55d5e703aa1..917a1d6541e 100644 --- a/nixos/modules/services/desktops/gnome3/rygel.nix +++ b/nixos/modules/services/desktops/gnome3/rygel.nix @@ -4,6 +4,10 @@ with lib; { + meta = { + maintainers = teams.gnome.members; + }; + ###### interface options = { services.gnome3.rygel = { @@ -26,5 +30,7 @@ with lib; services.dbus.packages = [ pkgs.gnome3.rygel ]; systemd.packages = [ pkgs.gnome3.rygel ]; + + environment.etc."rygel.conf".source = "${pkgs.gnome3.rygel}/etc/rygel.conf"; }; } diff --git a/nixos/modules/services/desktops/gnome3/sushi.nix b/nixos/modules/services/desktops/gnome3/sushi.nix index 7a4389038b2..83b17365d5d 100644 --- a/nixos/modules/services/desktops/gnome3/sushi.nix +++ b/nixos/modules/services/desktops/gnome3/sushi.nix @@ -6,6 +6,10 @@ with lib; { + meta = { + maintainers = teams.gnome.members; + }; + ###### interface options = { diff --git a/nixos/modules/services/desktops/gnome3/tracker-miners.nix b/nixos/modules/services/desktops/gnome3/tracker-miners.nix index b390d8368c6..f2af4024927 100644 --- a/nixos/modules/services/desktops/gnome3/tracker-miners.nix +++ b/nixos/modules/services/desktops/gnome3/tracker-miners.nix @@ -6,6 +6,10 @@ with lib; { + meta = { + maintainers = teams.gnome.members; + }; + ###### interface options = { @@ -25,7 +29,6 @@ with lib; }; - ###### implementation config = mkIf config.services.gnome3.tracker-miners.enable { diff --git a/nixos/modules/services/desktops/gnome3/tracker.nix b/nixos/modules/services/desktops/gnome3/tracker.nix index 2e829274226..cd196e38553 100644 --- a/nixos/modules/services/desktops/gnome3/tracker.nix +++ b/nixos/modules/services/desktops/gnome3/tracker.nix @@ -6,6 +6,10 @@ with lib; { + meta = { + maintainers = teams.gnome.members; + }; + ###### interface options = { diff --git a/nixos/modules/services/desktops/gvfs.nix b/nixos/modules/services/desktops/gvfs.nix index 1d002eac41d..250ea6d4575 100644 --- a/nixos/modules/services/desktops/gvfs.nix +++ b/nixos/modules/services/desktops/gvfs.nix @@ -12,6 +12,10 @@ in { + meta = { + maintainers = teams.gnome.members; + }; + # Added 2019-08-19 imports = [ (mkRenamedOptionModule diff --git a/nixos/modules/services/desktops/malcontent.nix b/nixos/modules/services/desktops/malcontent.nix new file mode 100644 index 00000000000..5d6912595b5 --- /dev/null +++ b/nixos/modules/services/desktops/malcontent.nix @@ -0,0 +1,37 @@ +# Malcontent daemon. + +{ config, lib, pkgs, ... }: + +with lib; + +{ + + ###### interface + + options = { + + services.malcontent = { + + enable = mkEnableOption "Malcontent, parental control support for applications"; + + }; + + }; + + + ###### implementation + + config = mkIf config.services.malcontent.enable { + + environment.systemPackages = with pkgs; [ + malcontent + malcontent-ui + ]; + + services.dbus.packages = [ pkgs.malcontent ]; + + services.accounts-daemon.enable = true; + + }; + +} diff --git a/nixos/modules/services/desktops/pantheon/contractor.nix b/nixos/modules/services/desktops/pantheon/contractor.nix deleted file mode 100644 index 2638a21df73..00000000000 --- a/nixos/modules/services/desktops/pantheon/contractor.nix +++ /dev/null @@ -1,41 +0,0 @@ -# Contractor - -{ config, pkgs, lib, ... }: - -with lib; - -{ - - meta.maintainers = pkgs.pantheon.maintainers; - - ###### interface - - options = { - - services.pantheon.contractor = { - - enable = mkEnableOption "contractor, a desktop-wide extension service used by pantheon"; - - }; - - }; - - - ###### implementation - - config = mkIf config.services.pantheon.contractor.enable { - - environment.systemPackages = with pkgs.pantheon; [ - contractor - extra-elementary-contracts - ]; - - services.dbus.packages = [ pkgs.pantheon.contractor ]; - - environment.pathsToLink = [ - "/share/contractor" - ]; - - }; - -} diff --git a/nixos/modules/services/desktops/pantheon/files.nix b/nixos/modules/services/desktops/pantheon/files.nix index 577aad6c298..8cee9f42b62 100644 --- a/nixos/modules/services/desktops/pantheon/files.nix +++ b/nixos/modules/services/desktops/pantheon/files.nix @@ -6,33 +6,8 @@ with lib; { - meta.maintainers = pkgs.pantheon.maintainers; - - ###### interface - - options = { - - services.pantheon.files = { - - enable = mkEnableOption "pantheon files daemon"; - - }; - - }; - - - ###### implementation - - config = mkIf config.services.pantheon.files.enable { - - environment.systemPackages = [ - pkgs.pantheon.elementary-files - ]; - - services.dbus.packages = [ - pkgs.pantheon.elementary-files - ]; - - }; + imports = [ + (mkRemovedOptionModule [ "services" "pantheon" "files" "enable" ] "Use `environment.systemPackages [ pkgs.pantheon.elementary-files ];`") + ]; } diff --git a/nixos/modules/services/desktops/pipewire.nix b/nixos/modules/services/desktops/pipewire.nix index 13f3d61e84c..5aee59cfdcc 100644 --- a/nixos/modules/services/desktops/pipewire.nix +++ b/nixos/modules/services/desktops/pipewire.nix @@ -8,6 +8,11 @@ let packages = with pkgs; [ pipewire ]; in { + + meta = { + maintainers = teams.freedesktop.members; + }; + ###### interface options = { services.pipewire = { @@ -33,5 +38,4 @@ in { systemd.user.sockets.pipewire.wantedBy = lib.mkIf cfg.socketActivation [ "sockets.target" ]; }; - meta.maintainers = with lib.maintainers; [ jtojnar ]; } diff --git a/nixos/modules/services/desktops/telepathy.nix b/nixos/modules/services/desktops/telepathy.nix index f5401c18098..34596bf7818 100644 --- a/nixos/modules/services/desktops/telepathy.nix +++ b/nixos/modules/services/desktops/telepathy.nix @@ -6,6 +6,10 @@ with lib; { + meta = { + maintainers = teams.gnome.members; + }; + ###### interface options = { diff --git a/nixos/modules/services/desktops/tumbler.nix b/nixos/modules/services/desktops/tumbler.nix index a833e99ff8c..a09079517f0 100644 --- a/nixos/modules/services/desktops/tumbler.nix +++ b/nixos/modules/services/desktops/tumbler.nix @@ -18,6 +18,10 @@ in "") ]; + meta = { + maintainers = with maintainers; [ worldofpeace ]; + }; + ###### interface options = { diff --git a/nixos/modules/services/desktops/zeitgeist.nix b/nixos/modules/services/desktops/zeitgeist.nix index 20c82ccdd56..cf7dd5fe3a1 100644 --- a/nixos/modules/services/desktops/zeitgeist.nix +++ b/nixos/modules/services/desktops/zeitgeist.nix @@ -5,6 +5,11 @@ with lib; { + + meta = { + maintainers = with maintainers; [ worldofpeace ]; + }; + ###### interface options = { diff --git a/nixos/modules/services/development/jupyter/default.nix b/nixos/modules/services/development/jupyter/default.nix index f20860af6e1..e598b018645 100644 --- a/nixos/modules/services/development/jupyter/default.nix +++ b/nixos/modules/services/development/jupyter/default.nix @@ -118,15 +118,15 @@ in { in { displayName = "Python 3 for machine learning"; argv = [ - "$ {env.interpreter}" + "''${env.interpreter}" "-m" "ipykernel_launcher" "-f" "{connection_file}" ]; language = "python"; - logo32 = "$ {env.sitePackages}/ipykernel/resources/logo-32x32.png"; - logo64 = "$ {env.sitePackages}/ipykernel/resources/logo-64x64.png"; + logo32 = "''${env.sitePackages}/ipykernel/resources/logo-32x32.png"; + logo64 = "''${env.sitePackages}/ipykernel/resources/logo-64x64.png"; }; } ''; diff --git a/nixos/modules/services/editors/infinoted.nix b/nixos/modules/services/editors/infinoted.nix index be366761694..8b997ccbf66 100644 --- a/nixos/modules/services/editors/infinoted.nix +++ b/nixos/modules/services/editors/infinoted.nix @@ -111,14 +111,15 @@ in { }; config = mkIf (cfg.enable) { - users.users = optional (cfg.user == "infinoted") - { name = "infinoted"; - description = "Infinoted user"; - group = cfg.group; - isSystemUser = true; + users.users = optionalAttrs (cfg.user == "infinoted") + { infinoted = { + description = "Infinoted user"; + group = cfg.group; + isSystemUser = true; + }; }; - users.groups = optional (cfg.group == "infinoted") - { name = "infinoted"; + users.groups = optionalAttrs (cfg.group == "infinoted") + { infinoted = { }; }; systemd.services.infinoted = diff --git a/nixos/modules/services/games/factorio.nix b/nixos/modules/services/games/factorio.nix index f3831156f45..4b2e1a3c07f 100644 --- a/nixos/modules/services/games/factorio.nix +++ b/nixos/modules/services/games/factorio.nix @@ -4,14 +4,13 @@ with lib; let cfg = config.services.factorio; - factorio = pkgs.factorio-headless; name = "Factorio"; stateDir = "/var/lib/${cfg.stateDirName}"; mkSavePath = name: "${stateDir}/saves/${name}.zip"; configFile = pkgs.writeText "factorio.conf" '' use-system-read-write-data-directories=true [path] - read-data=${factorio}/share/factorio/data + read-data=${cfg.package}/share/factorio/data write-data=${stateDir} ''; serverSettings = { @@ -37,7 +36,7 @@ let only_admins_can_pause_the_game = true; autosave_only_on_server = true; admins = []; - }; + } // cfg.extraSettings; serverSettingsFile = pkgs.writeText "server-settings.json" (builtins.toJSON (filterAttrsRecursive (n: v: v != null) serverSettings)); modDir = pkgs.factorio-utils.mkModDirDrv cfg.mods; in @@ -115,6 +114,14 @@ in Description of the game that will appear in the listing. ''; }; + extraSettings = mkOption { + type = types.attrs; + default = {}; + example = { admins = [ "username" ];}; + description = '' + Extra game configuration that will go into server-settings.json + ''; + }; public = mkOption { type = types.bool; default = false; @@ -136,6 +143,15 @@ in Your factorio.com login credentials. Required for games with visibility public. ''; }; + package = mkOption { + type = types.package; + default = pkgs.factorio-headless; + defaultText = "pkgs.factorio-headless"; + example = "pkgs.factorio-headless-experimental"; + description = '' + Factorio version to use. This defaults to the stable channel. + ''; + }; password = mkOption { type = types.nullOr types.str; default = null; @@ -184,7 +200,7 @@ in preStart = toString [ "test -e ${stateDir}/saves/${cfg.saveName}.zip" "||" - "${factorio}/bin/factorio" + "${cfg.package}/bin/factorio" "--config=${cfg.configFile}" "--create=${mkSavePath cfg.saveName}" (optionalString (cfg.mods != []) "--mod-directory=${modDir}") @@ -197,7 +213,7 @@ in StateDirectory = cfg.stateDirName; UMask = "0007"; ExecStart = toString [ - "${factorio}/bin/factorio" + "${cfg.package}/bin/factorio" "--config=${cfg.configFile}" "--port=${toString cfg.port}" "--start-server=${mkSavePath cfg.saveName}" diff --git a/nixos/modules/services/hardware/actkbd.nix b/nixos/modules/services/hardware/actkbd.nix index 4168140b287..daa407ca1f0 100644 --- a/nixos/modules/services/hardware/actkbd.nix +++ b/nixos/modules/services/hardware/actkbd.nix @@ -83,7 +83,7 @@ in See actkbd README for documentation. - The example shows a piece of what does when enabled. + The example shows a piece of what does when enabled. ''; }; diff --git a/nixos/modules/services/hardware/bluetooth.nix b/nixos/modules/services/hardware/bluetooth.nix index 11d67418a31..dfa39e7f602 100644 --- a/nixos/modules/services/hardware/bluetooth.nix +++ b/nixos/modules/services/hardware/bluetooth.nix @@ -74,9 +74,9 @@ in { environment.systemPackages = [ bluez-bluetooth ]; - environment.etc = singleton { - source = pkgs.writeText "main.conf" (generators.toINI { } cfg.config + optionalString (cfg.extraConfig != null) cfg.extraConfig); - target = "bluetooth/main.conf"; + environment.etc."bluetooth/main.conf"= { + source = pkgs.writeText "main.conf" + (generators.toINI { } cfg.config + optionalString (cfg.extraConfig != null) cfg.extraConfig); }; services.udev.packages = [ bluez-bluetooth ]; diff --git a/nixos/modules/services/hardware/fwupd.nix b/nixos/modules/services/hardware/fwupd.nix index 51877970a8b..e586af25c2b 100644 --- a/nixos/modules/services/hardware/fwupd.nix +++ b/nixos/modules/services/hardware/fwupd.nix @@ -53,7 +53,7 @@ in { blacklistPlugins = mkOption { type = types.listOf types.str; - default = [ "test" ]; + default = []; example = [ "udev" ]; description = '' Allow blacklisting specific plugins @@ -91,6 +91,9 @@ in { ###### implementation config = mkIf cfg.enable { + # Disable test related plug-ins implicitly so that users do not have to care about them. + services.fwupd.blacklistPlugins = cfg.package.defaultBlacklistedPlugins; + environment.systemPackages = [ cfg.package ]; environment.etc = { diff --git a/nixos/modules/services/hardware/irqbalance.nix b/nixos/modules/services/hardware/irqbalance.nix index b139154432c..c79e0eb83ec 100644 --- a/nixos/modules/services/hardware/irqbalance.nix +++ b/nixos/modules/services/hardware/irqbalance.nix @@ -13,18 +13,12 @@ in config = mkIf cfg.enable { - systemd.services = { - irqbalance = { - description = "irqbalance daemon"; - path = [ pkgs.irqbalance ]; - serviceConfig = - { ExecStart = "${pkgs.irqbalance}/bin/irqbalance --foreground"; }; - wantedBy = [ "multi-user.target" ]; - }; - }; - environment.systemPackages = [ pkgs.irqbalance ]; + systemd.services.irqbalance.wantedBy = ["multi-user.target"]; + + systemd.packages = [ pkgs.irqbalance ]; + }; } diff --git a/nixos/modules/services/hardware/sane_extra_backends/brscan4.nix b/nixos/modules/services/hardware/sane_extra_backends/brscan4.nix index f6ed4e25e9c..6f49a1ab6d4 100644 --- a/nixos/modules/services/hardware/sane_extra_backends/brscan4.nix +++ b/nixos/modules/services/hardware/sane_extra_backends/brscan4.nix @@ -67,11 +67,11 @@ in { options = { - hardware.sane.brscan4.enable = + hardware.sane.brscan4.enable = mkEnableOption "Brother's brscan4 scan backend" // { description = '' When enabled, will automatically register the "brscan4" sane - backend and bring configuration files to their expected location. + backend and bring configuration files to their expected location. ''; }; @@ -95,14 +95,11 @@ in pkgs.brscan4 ]; - environment.etc = singleton { - target = "opt/brother/scanner/brscan4"; - source = "${etcFiles}/etc/opt/brother/scanner/brscan4"; - }; + environment.etc."opt/brother/scanner/brscan4" = + { source = "${etcFiles}/etc/opt/brother/scanner/brscan4"; }; assertions = [ { assertion = all (x: !(null != x.ip && null != x.nodename)) netDeviceList; - message = '' When describing a network device as part of the attribute list `hardware.sane.brscan4.netDevices`, only one of its `ip` or `nodename` diff --git a/nixos/modules/services/hardware/sane_extra_backends/brscan4_etc_files.nix b/nixos/modules/services/hardware/sane_extra_backends/brscan4_etc_files.nix index 6bf31982b71..ec0457bbd58 100644 --- a/nixos/modules/services/hardware/sane_extra_backends/brscan4_etc_files.nix +++ b/nixos/modules/services/hardware/sane_extra_backends/brscan4_etc_files.nix @@ -63,7 +63,7 @@ stdenv.mkDerivation { meta = { description = "Brother brscan4 sane backend driver etc files"; - homepage = http://www.brother.com; + homepage = "http://www.brother.com"; platforms = stdenv.lib.platforms.linux; license = stdenv.lib.licenses.unfree; maintainers = with stdenv.lib.maintainers; [ jraygauthier ]; diff --git a/nixos/modules/services/hardware/tcsd.nix b/nixos/modules/services/hardware/tcsd.nix index 3876280ee6b..68cb5d791aa 100644 --- a/nixos/modules/services/hardware/tcsd.nix +++ b/nixos/modules/services/hardware/tcsd.nix @@ -137,15 +137,15 @@ in serviceConfig.ExecStart = "${pkgs.trousers}/sbin/tcsd -f -c ${tcsdConf}"; }; - users.users = optionalAttrs (cfg.user == "tss") (singleton - { name = "tss"; + users.users = optionalAttrs (cfg.user == "tss") { + tss = { group = "tss"; uid = config.ids.uids.tss; - }); + }; + }; - users.groups = optionalAttrs (cfg.group == "tss") (singleton - { name = "tss"; - gid = config.ids.gids.tss; - }); + users.groups = optionalAttrs (cfg.group == "tss") { + tss.gid = config.ids.gids.tss; + }; }; } diff --git a/nixos/modules/services/hardware/tlp.nix b/nixos/modules/services/hardware/tlp.nix index adc1881a525..3962d7b1598 100644 --- a/nixos/modules/services/hardware/tlp.nix +++ b/nixos/modules/services/hardware/tlp.nix @@ -1,39 +1,26 @@ { config, lib, pkgs, ... }: - with lib; - let - -cfg = config.services.tlp; - -enableRDW = config.networking.networkmanager.enable; - -tlp = pkgs.tlp.override { - inherit enableRDW; -}; - -# XXX: We can't use writeTextFile + readFile here because it triggers -# TLP build to get the .drv (even on --dry-run). -confFile = pkgs.runCommand "tlp" - { config = cfg.extraConfig; - passAsFile = [ "config" ]; - preferLocalBuild = true; - } - '' - cat ${tlp}/etc/default/tlp > $out - cat $configPath >> $out - ''; - + cfg = config.services.tlp; + enableRDW = config.networking.networkmanager.enable; + tlp = pkgs.tlp.override { inherit enableRDW; }; + # TODO: Use this for having proper parameters in the future + mkTlpConfig = tlpConfig: generators.toKeyValue { + mkKeyValue = generators.mkKeyValueDefault { + mkValueString = val: + if isInt val then toString val + else if isString val then val + else if true == val then "1" + else if false == val then "0" + else if isList val then "\"" + (concatStringsSep " " val) + "\"" + else err "invalid value provided to mkTlpConfig:" (toString val); + } "="; + } tlpConfig; in - { - ###### interface - options = { - services.tlp = { - enable = mkOption { type = types.bool; default = false; @@ -45,76 +32,64 @@ in default = ""; description = "Additional configuration variables for TLP"; }; - }; - }; - ###### implementation - config = mkIf cfg.enable { + boot.kernelModules = [ "msr" ]; - powerManagement.scsiLinkPolicy = null; - powerManagement.cpuFreqGovernor = null; - powerManagement.cpufreq.max = null; - powerManagement.cpufreq.min = null; + environment.etc = { + "tlp.conf".text = cfg.extraConfig; + } // optionalAttrs enableRDW { + "NetworkManager/dispatcher.d/99tlp-rdw-nm".source = + "${tlp}/etc/NetworkManager/dispatcher.d/99tlp-rdw-nm"; + }; - systemd.sockets.systemd-rfkill.enable = false; + environment.systemPackages = [ tlp ]; - systemd.services = { - "systemd-rfkill@".enable = false; - systemd-rfkill.enable = false; - - tlp = { - description = "TLP system startup/shutdown"; - - after = [ "multi-user.target" ]; - wantedBy = [ "multi-user.target" ]; - before = [ "shutdown.target" ]; - restartTriggers = [ confFile ]; - - serviceConfig = { - Type = "oneshot"; - RemainAfterExit = true; - ExecStart = "${tlp}/bin/tlp init start"; - ExecStop = "${tlp}/bin/tlp init stop"; - }; - }; - - tlp-sleep = { - description = "TLP suspend/resume"; - - wantedBy = [ "sleep.target" ]; - before = [ "sleep.target" ]; - - unitConfig = { - StopWhenUnneeded = true; - }; - - serviceConfig = { - Type = "oneshot"; - RemainAfterExit = true; - ExecStart = "${tlp}/bin/tlp suspend"; - ExecStop = "${tlp}/bin/tlp resume"; - }; - }; + # FIXME: When the config is parametrized we need to move these into a + # conditional on the relevant options being enabled. + powerManagement = { + scsiLinkPolicy = null; + cpuFreqGovernor = null; + cpufreq.max = null; + cpufreq.min = null; }; services.udev.packages = [ tlp ]; - environment.etc = [{ source = confFile; - target = "default/tlp"; - } - ] ++ optional enableRDW { - source = "${tlp}/etc/NetworkManager/dispatcher.d/99tlp-rdw-nm"; - target = "NetworkManager/dispatcher.d/99tlp-rdw-nm"; - }; + systemd = { + packages = [ tlp ]; + # XXX: These must always be disabled/masked according to [1]. + # + # [1]: https://github.com/linrunner/TLP/blob/a9ada09e0821f275ce5f93dc80a4d81a7ff62ae4/tlp-stat.in#L319 + sockets.systemd-rfkill.enable = false; + services.systemd-rfkill.enable = false; - environment.systemPackages = [ tlp ]; - - boot.kernelModules = [ "msr" ]; + services.tlp = { + # XXX: The service should reload whenever the configuration changes, + # otherwise newly set power options remain inactive until reboot (or + # manual unit restart.) + restartTriggers = [ config.environment.etc."tlp.conf".source ]; + # XXX: When using systemd.packages (which we do above) the [Install] + # section of systemd units does not work (citation needed) so we manually + # enforce it here. + wantedBy = [ "multi-user.target" ]; + }; + services.tlp-sleep = { + # XXX: When using systemd.packages (which we do above) the [Install] + # section of systemd units does not work (citation needed) so we manually + # enforce it here. + before = [ "sleep.target" ]; + wantedBy = [ "sleep.target" ]; + # XXX: `tlp suspend` requires /var/lib/tlp to exist in order to save + # some stuff in there. There is no way, that I know of, to do this in + # the package itself, so we do it here instead making sure the unit + # won't fail due to the save dir not existing. + serviceConfig.StateDirectory = "tlp"; + }; + }; }; - } diff --git a/nixos/modules/services/hardware/udev.nix b/nixos/modules/services/hardware/udev.nix index 83ab93bd7cf..168056a475e 100644 --- a/nixos/modules/services/hardware/udev.nix +++ b/nixos/modules/services/hardware/udev.nix @@ -221,8 +221,8 @@ in type = types.lines; description = '' Additional hwdb files. They'll be written - into file 10-local.hwdb. Thus they are - read before all other files. + into file 99-local.hwdb. Thus they are + read after all other files. ''; }; @@ -281,13 +281,10 @@ in boot.kernelParams = mkIf (!config.networking.usePredictableInterfaceNames) [ "net.ifnames=0" ]; environment.etc = - [ { source = udevRules; - target = "udev/rules.d"; - } - { source = hwdbBin; - target = "udev/hwdb.bin"; - } - ]; + { + "udev/rules.d".source = udevRules; + "udev/hwdb.bin".source = hwdbBin; + }; system.requiredKernelConfig = with config.lib.kernelConfig; [ (isEnabled "UNIX") diff --git a/nixos/modules/services/hardware/usbmuxd.nix b/nixos/modules/services/hardware/usbmuxd.nix index 39bbcaf4627..11a4b0a858f 100644 --- a/nixos/modules/services/hardware/usbmuxd.nix +++ b/nixos/modules/services/hardware/usbmuxd.nix @@ -43,15 +43,16 @@ in config = mkIf cfg.enable { - users.users = optional (cfg.user == defaultUserGroup) { - name = cfg.user; - description = "usbmuxd user"; - group = cfg.group; - isSystemUser = true; + users.users = optionalAttrs (cfg.user == defaultUserGroup) { + ${cfg.user} = { + description = "usbmuxd user"; + group = cfg.group; + isSystemUser = true; + }; }; - users.groups = optional (cfg.group == defaultUserGroup) { - name = cfg.group; + users.groups = optionalAttrs (cfg.group == defaultUserGroup) { + ${cfg.group} = { }; }; # Give usbmuxd permission for Apple devices diff --git a/nixos/modules/services/hardware/xow.nix b/nixos/modules/services/hardware/xow.nix new file mode 100644 index 00000000000..a18d60ad83b --- /dev/null +++ b/nixos/modules/services/hardware/xow.nix @@ -0,0 +1,17 @@ +{ config, pkgs, lib, ... }: + +let + cfg = config.services.hardware.xow; +in { + options.services.hardware.xow = { + enable = lib.mkEnableOption "xow as a systemd service"; + }; + + config = lib.mkIf cfg.enable { + hardware.uinput.enable = true; + + systemd.packages = [ pkgs.xow ]; + + services.udev.packages = [ pkgs.xow ]; + }; +} diff --git a/nixos/modules/services/logging/awstats.nix b/nixos/modules/services/logging/awstats.nix index a92ff3bee49..5939d7808f7 100644 --- a/nixos/modules/services/logging/awstats.nix +++ b/nixos/modules/services/logging/awstats.nix @@ -4,31 +4,117 @@ with lib; let cfg = config.services.awstats; - httpd = config.services.httpd; package = pkgs.awstats; -in + configOpts = {name, config, ...}: { + options = { + type = mkOption{ + type = types.enum [ "mail" "web" ]; + default = "web"; + example = "mail"; + description = '' + The type of log being collected. + ''; + }; + domain = mkOption { + type = types.str; + default = name; + description = "The domain name to collect stats for."; + example = "example.com"; + }; -{ - options.services.awstats = { - enable = mkOption { - type = types.bool; - default = cfg.service.enable; - description = '' - Enable the awstats program (but not service). - Currently only simple httpd (Apache) configs are supported, - and awstats plugins may not work correctly. - ''; + logFile = mkOption { + type = types.str; + example = "/var/spool/nginx/logs/access.log"; + description = '' + The log file to be scanned. + + For mail, set this to + + journalctl $OLD_CURSOR -u postfix.service | ''${pkgs.perl}/bin/perl ''${pkgs.awstats.out}/share/awstats/tools/maillogconvert.pl standard | + + ''; + }; + + logFormat = mkOption { + type = types.str; + default = "1"; + description = '' + The log format being used. + + For mail, set this to + + %time2 %email %email_r %host %host_r %method %url %code %bytesd + + ''; + }; + + hostAliases = mkOption { + type = types.listOf types.str; + default = []; + example = "[ \"www.example.org\" ]"; + description = '' + List of aliases the site has. + ''; + }; + + extraConfig = mkOption { + type = types.attrsOf types.str; + default = {}; + example = literalExample '' + { + "ValidHTTPCodes" = "404"; + } + ''; + description = "Extra configuration to be appendend to awstats.\${name}.conf."; + }; + + webService = { + enable = mkEnableOption "awstats web service"; + + hostname = mkOption { + type = types.str; + default = config.domain; + description = "The hostname the web service appears under."; + }; + + urlPrefix = mkOption { + type = types.str; + default = "/awstats"; + description = "The URL prefix under which the awstats pages appear."; + }; + }; }; - vardir = mkOption { + }; + webServices = filterAttrs (name: value: value.webService.enable) cfg.configs; +in +{ + imports = [ + (mkRemovedOptionModule [ "services" "awstats" "service" "enable" ] "Please enable per domain with `services.awstats.configs..webService.enable`") + (mkRemovedOptionModule [ "services" "awstats" "service" "urlPrefix" ] "Please set per domain with `services.awstats.configs..webService.urlPrefix`") + (mkRenamedOptionModule [ "services" "awstats" "vardir" ] [ "services" "awstats" "dataDir" ]) + ]; + + options.services.awstats = { + enable = mkEnableOption "awstats"; + + dataDir = mkOption { type = types.path; default = "/var/lib/awstats"; - description = "The directory where variable awstats data will be stored."; + description = "The directory where awstats data will be stored."; }; - extraConfig = mkOption { - type = types.lines; - default = ""; - description = "Extra configuration to be appendend to awstats.conf."; + configs = mkOption { + type = types.attrsOf (types.submodule configOpts); + default = {}; + example = literalExample '' + { + "mysite" = { + domain = "example.com"; + logFile = "/var/spool/nginx/logs/access.log"; + }; + } + ''; + description = "Attribute set of domains to collect stats for."; }; updateAt = mkOption { @@ -42,75 +128,129 @@ in 7) ''; }; - - service = { - enable = mkOption { - type = types.bool; - default = false; - description = ''Enable the awstats web service. This switches on httpd.''; - }; - urlPrefix = mkOption { - type = types.str; - default = "/awstats"; - description = "The URL prefix under which the awstats service appears."; - }; - }; }; config = mkIf cfg.enable { environment.systemPackages = [ package.bin ]; - /* TODO: - - heed config.services.httpd.logPerVirtualHost, etc. - - Can't AllowToUpdateStatsFromBrowser, as CGI scripts don't have permission - to read the logs, and our httpd config apparently doesn't an option for that. - */ - environment.etc."awstats/awstats.conf".source = pkgs.runCommand "awstats.conf" + + environment.etc = mapAttrs' (name: opts: + nameValuePair "awstats/awstats.${name}.conf" { + source = pkgs.runCommand "awstats.${name}.conf" { preferLocalBuild = true; } - ( let - logFormat = - if httpd.logFormat == "combined" then "1" else - if httpd.logFormat == "common" then "4" else - throw "awstats service doesn't support Apache log format `${httpd.logFormat}`"; - in + ('' + sed \ + '' + # set up mail stats + + optionalString (opts.type == "mail") + '' + -e 's|^\(LogType\)=.*$|\1=M|' \ + -e 's|^\(LevelForBrowsersDetection\)=.*$|\1=0|' \ + -e 's|^\(LevelForOSDetection\)=.*$|\1=0|' \ + -e 's|^\(LevelForRefererAnalyze\)=.*$|\1=0|' \ + -e 's|^\(LevelForRobotsDetection\)=.*$|\1=0|' \ + -e 's|^\(LevelForSearchEnginesDetection\)=.*$|\1=0|' \ + -e 's|^\(LevelForFileTypesDetection\)=.*$|\1=0|' \ + -e 's|^\(LevelForWormsDetection\)=.*$|\1=0|' \ + -e 's|^\(ShowMenu\)=.*$|\1=1|' \ + -e 's|^\(ShowSummary\)=.*$|\1=HB|' \ + -e 's|^\(ShowMonthStats\)=.*$|\1=HB|' \ + -e 's|^\(ShowDaysOfMonthStats\)=.*$|\1=HB|' \ + -e 's|^\(ShowDaysOfWeekStats\)=.*$|\1=HB|' \ + -e 's|^\(ShowHoursStats\)=.*$|\1=HB|' \ + -e 's|^\(ShowDomainsStats\)=.*$|\1=0|' \ + -e 's|^\(ShowHostsStats\)=.*$|\1=HB|' \ + -e 's|^\(ShowAuthenticatedUsers\)=.*$|\1=0|' \ + -e 's|^\(ShowRobotsStats\)=.*$|\1=0|' \ + -e 's|^\(ShowEMailSenders\)=.*$|\1=HBML|' \ + -e 's|^\(ShowEMailReceivers\)=.*$|\1=HBML|' \ + -e 's|^\(ShowSessionsStats\)=.*$|\1=0|' \ + -e 's|^\(ShowPagesStats\)=.*$|\1=0|' \ + -e 's|^\(ShowFileTypesStats\)=.*$|\1=0|' \ + -e 's|^\(ShowFileSizesStats\)=.*$|\1=0|' \ + -e 's|^\(ShowBrowsersStats\)=.*$|\1=0|' \ + -e 's|^\(ShowOSStats\)=.*$|\1=0|' \ + -e 's|^\(ShowOriginStats\)=.*$|\1=0|' \ + -e 's|^\(ShowKeyphrasesStats\)=.*$|\1=0|' \ + -e 's|^\(ShowKeywordsStats\)=.*$|\1=0|' \ + -e 's|^\(ShowMiscStats\)=.*$|\1=0|' \ + -e 's|^\(ShowHTTPErrorsStats\)=.*$|\1=0|' \ + -e 's|^\(ShowSMTPErrorsStats\)=.*$|\1=1|' \ + '' + + + # common options + '' + -e 's|^\(DirData\)=.*$|\1="${cfg.dataDir}/${name}"|' \ + -e 's|^\(DirIcons\)=.*$|\1="icons"|' \ + -e 's|^\(CreateDirDataIfNotExists\)=.*$|\1=1|' \ + -e 's|^\(SiteDomain\)=.*$|\1="${name}"|' \ + -e 's|^\(LogFile\)=.*$|\1="${opts.logFile}"|' \ + -e 's|^\(LogFormat\)=.*$|\1="${opts.logFormat}"|' \ + '' + + + # extra config + concatStringsSep "\n" (mapAttrsToList (n: v: '' + -e 's|^\(${n}\)=.*$|\1="${v}"|' \ + '') opts.extraConfig) + + + '' + < '${package.out}/wwwroot/cgi-bin/awstats.model.conf' > "$out" + ''); + }) cfg.configs; + + # create data directory with the correct permissions + systemd.tmpfiles.rules = + [ "d '${cfg.dataDir}' 755 root root - -" ] ++ + mapAttrsToList (name: opts: "d '${cfg.dataDir}/${name}' 755 root root - -") cfg.configs ++ + [ "Z '${cfg.dataDir}' 755 root root - -" ]; + + # nginx options + services.nginx.virtualHosts = mapAttrs'(name: opts: { + name = opts.webService.hostname; + value = { + locations = { + "${opts.webService.urlPrefix}/css/" = { + alias = "${package.out}/wwwroot/css/"; + }; + "${opts.webService.urlPrefix}/icons/" = { + alias = "${package.out}/wwwroot/icon/"; + }; + "${opts.webService.urlPrefix}/" = { + alias = "${cfg.dataDir}/${name}/"; + extraConfig = '' + autoindex on; + ''; + }; + }; + }; + }) webServices; + + # update awstats + systemd.services = mkIf (cfg.updateAt != null) (mapAttrs' (name: opts: + nameValuePair "awstats-${name}-update" { + description = "update awstats for ${name}"; + script = optionalString (opts.type == "mail") '' - sed \ - -e 's|^\(DirData\)=.*$|\1="${cfg.vardir}"|' \ - -e 's|^\(DirIcons\)=.*$|\1="icons"|' \ - -e 's|^\(CreateDirDataIfNotExists\)=.*$|\1=1|' \ - -e 's|^\(SiteDomain\)=.*$|\1="${httpd.hostName}"|' \ - -e 's|^\(LogFile\)=.*$|\1="${httpd.logDir}/access_log"|' \ - -e 's|^\(LogFormat\)=.*$|\1=${logFormat}|' \ - < '${package.out}/wwwroot/cgi-bin/awstats.model.conf' > "$out" - echo '${cfg.extraConfig}' >> "$out" - ''); - - systemd.tmpfiles.rules = optionals cfg.service.enable [ - "d '${cfg.vardir}' - ${httpd.user} ${httpd.group} - -" - "Z '${cfg.vardir}' - ${httpd.user} ${httpd.group} - -" - ]; - - # The httpd sub-service showing awstats. - services.httpd = optionalAttrs cfg.service.enable { - enable = true; - extraConfig = '' - Alias ${cfg.service.urlPrefix}/classes "${package.out}/wwwroot/classes/" - Alias ${cfg.service.urlPrefix}/css "${package.out}/wwwroot/css/" - Alias ${cfg.service.urlPrefix}/icons "${package.out}/wwwroot/icon/" - ScriptAlias ${cfg.service.urlPrefix}/ "${package.out}/wwwroot/cgi-bin/" - - - Options None - Require all granted - - ''; - }; - - systemd.services.awstats-update = mkIf (cfg.updateAt != null) { - description = "awstats log collector"; - script = "exec '${package.bin}/bin/awstats' -update -config=awstats.conf"; - startAt = cfg.updateAt; - }; + if [[ -f "${cfg.dataDir}/${name}-cursor" ]]; then + CURSOR="$(cat "${cfg.dataDir}/${name}-cursor" | tr -d '\n')" + if [[ -n "$CURSOR" ]]; then + echo "Using cursor: $CURSOR" + export OLD_CURSOR="--cursor $CURSOR" + fi + fi + NEW_CURSOR="$(journalctl $OLD_CURSOR -u postfix.service --show-cursor | tail -n 1 | tr -d '\n' | sed -e 's#^-- cursor: \(.*\)#\1#')" + echo "New cursor: $NEW_CURSOR" + ${package.bin}/bin/awstats -update -config=${name} + if [ -n "$NEW_CURSOR" ]; then + echo -n "$NEW_CURSOR" > ${cfg.dataDir}/${name}-cursor + fi + '' + '' + ${package.out}/share/awstats/tools/awstats_buildstaticpages.pl \ + -config=${name} -update -dir=${cfg.dataDir}/${name} \ + -awstatsprog=${package.bin}/bin/awstats + ''; + startAt = cfg.updateAt; + }) cfg.configs); }; } diff --git a/nixos/modules/services/logging/logcheck.nix b/nixos/modules/services/logging/logcheck.nix index 6d8be5b926d..4296b2270c2 100644 --- a/nixos/modules/services/logging/logcheck.nix +++ b/nixos/modules/services/logging/logcheck.nix @@ -213,13 +213,14 @@ in mapAttrsToList writeIgnoreRule cfg.ignore ++ mapAttrsToList writeIgnoreCronRule cfg.ignoreCron; - users.users = optionalAttrs (cfg.user == "logcheck") (singleton - { name = "logcheck"; + users.users = optionalAttrs (cfg.user == "logcheck") { + logcheck = { uid = config.ids.uids.logcheck; shell = "/bin/sh"; description = "Logcheck user account"; extraGroups = cfg.extraGroups; - }); + }; + }; system.activationScripts.logcheck = '' mkdir -m 700 -p /var/{lib,lock}/logcheck diff --git a/nixos/modules/services/mail/dovecot.nix b/nixos/modules/services/mail/dovecot.nix index 2cda8c49f5e..230a2ae3f82 100644 --- a/nixos/modules/services/mail/dovecot.nix +++ b/nixos/modules/services/mail/dovecot.nix @@ -14,18 +14,34 @@ let base_dir = ${baseDir} protocols = ${concatStringsSep " " cfg.protocols} sendmail_path = /run/wrappers/bin/sendmail + # defining mail_plugins must be done before the first protocol {} filter because of https://doc.dovecot.org/configuration_manual/config_file/config_file_syntax/#variable-expansion + mail_plugins = $mail_plugins ${concatStringsSep " " cfg.mailPlugins.globally.enable} '' - (if cfg.sslServerCert == null then '' - ssl = no - disable_plaintext_auth = no - '' else '' - ssl_cert = <${cfg.sslServerCert} - ssl_key = <${cfg.sslServerKey} - ${optionalString (cfg.sslCACert != null) ("ssl_ca = <" + cfg.sslCACert)} - ssl_dh = <${config.security.dhparams.params.dovecot2.path} - disable_plaintext_auth = yes - '') + ( + concatStringsSep "\n" ( + mapAttrsToList ( + protocol: plugins: '' + protocol ${protocol} { + mail_plugins = $mail_plugins ${concatStringsSep " " plugins.enable} + } + '' + ) cfg.mailPlugins.perProtocol + ) + ) + + ( + if cfg.sslServerCert == null then '' + ssl = no + disable_plaintext_auth = no + '' else '' + ssl_cert = <${cfg.sslServerCert} + ssl_key = <${cfg.sslServerKey} + ${optionalString (cfg.sslCACert != null) ("ssl_ca = <" + cfg.sslCACert)} + ssl_dh = <${config.security.dhparams.params.dovecot2.path} + disable_plaintext_auth = yes + '' + ) '' default_internal_user = ${cfg.user} @@ -45,55 +61,58 @@ let } '' - (optionalString cfg.enablePAM '' - userdb { - driver = passwd - } - - passdb { - driver = pam - args = ${optionalString cfg.showPAMFailure "failure_show_msg=yes"} dovecot2 - } - '') - - (optionalString (cfg.sieveScripts != {}) '' - plugin { - ${concatStringsSep "\n" (mapAttrsToList (to: from: "sieve_${to} = ${stateDir}/sieve/${to}") cfg.sieveScripts)} - } - '') - - (optionalString (cfg.mailboxes != []) '' - protocol imap { - namespace inbox { - inbox=yes - ${concatStringsSep "\n" (map mailboxConfig cfg.mailboxes)} + ( + optionalString cfg.enablePAM '' + userdb { + driver = passwd } - } - '') - (optionalString cfg.enableQuota '' - mail_plugins = $mail_plugins quota - service quota-status { - executable = ${dovecotPkg}/libexec/dovecot/quota-status -p postfix - inet_listener { - port = ${cfg.quotaPort} + passdb { + driver = pam + args = ${optionalString cfg.showPAMFailure "failure_show_msg=yes"} dovecot2 } - client_limit = 1 - } + '' + ) - protocol imap { - mail_plugins = $mail_plugins imap_quota - } + ( + optionalString (cfg.sieveScripts != {}) '' + plugin { + ${concatStringsSep "\n" (mapAttrsToList (to: from: "sieve_${to} = ${stateDir}/sieve/${to}") cfg.sieveScripts)} + } + '' + ) - plugin { - quota_rule = *:storage=${cfg.quotaGlobalPerUser} - quota = maildir:User quota # per virtual mail user quota # BUG/FIXME broken, we couldn't get this working - quota_status_success = DUNNO - quota_status_nouser = DUNNO - quota_status_overquota = "552 5.2.2 Mailbox is full" - quota_grace = 10%% - } - '') + ( + optionalString (cfg.mailboxes != []) '' + protocol imap { + namespace inbox { + inbox=yes + ${concatStringsSep "\n" (map mailboxConfig cfg.mailboxes)} + } + } + '' + ) + + ( + optionalString cfg.enableQuota '' + service quota-status { + executable = ${dovecotPkg}/libexec/dovecot/quota-status -p postfix + inet_listener { + port = ${cfg.quotaPort} + } + client_limit = 1 + } + + plugin { + quota_rule = *:storage=${cfg.quotaGlobalPerUser} + quota = maildir:User quota # per virtual mail user quota # BUG/FIXME broken, we couldn't get this working + quota_status_success = DUNNO + quota_status_nouser = DUNNO + quota_status_overquota = "552 5.2.2 Mailbox is full" + quota_grace = 10%% + } + '' + ) cfg.extraConfig ]; @@ -107,7 +126,7 @@ let mailbox "${mailbox.name}" { auto = ${toString mailbox.auto} '' + optionalString (mailbox.specialUse != null) '' - special_use = \${toString mailbox.specialUse} + special_use = \${toString mailbox.specialUse} '' + "}"; mailboxes = { ... }: { @@ -160,7 +179,7 @@ in protocols = mkOption { type = types.listOf types.str; - default = [ ]; + default = []; description = "Additional listeners to start when Dovecot is enabled."; }; @@ -183,6 +202,43 @@ in description = "Additional entries to put verbatim into Dovecot's config file."; }; + mailPlugins = + let + plugins = hint: types.submodule { + options = { + enable = mkOption { + type = types.listOf types.str; + default = []; + description = "mail plugins to enable as a list of strings to append to the ${hint} $mail_plugins configuration variable"; + }; + }; + }; + in + mkOption { + type = with types; submodule { + options = { + globally = mkOption { + description = "Additional entries to add to the mail_plugins variable for all protocols"; + type = plugins "top-level"; + example = { enable = [ "virtual" ]; }; + default = { enable = []; }; + }; + perProtocol = mkOption { + description = "Additional entries to add to the mail_plugins variable, per protocol"; + type = attrsOf (plugins "corresponding per-protocol"); + default = {}; + example = { imap = [ "imap_acl" ]; }; + }; + }; + }; + description = "Additional entries to add to the mail_plugins variable, globally and per protocol"; + example = { + globally.enable = [ "acl" ]; + perProtocol.imap.enable = [ "imap_acl" ]; + }; + default = { globally.enable = []; perProtocol = {}; }; + }; + configFile = mkOption { type = types.nullOr types.path; default = null; @@ -305,41 +361,43 @@ in enable = true; params.dovecot2 = {}; }; - services.dovecot2.protocols = - optional cfg.enableImap "imap" - ++ optional cfg.enablePop3 "pop3" - ++ optional cfg.enableLmtp "lmtp"; + services.dovecot2.protocols = + optional cfg.enableImap "imap" + ++ optional cfg.enablePop3 "pop3" + ++ optional cfg.enableLmtp "lmtp"; - users.users = [ - { name = "dovenull"; - uid = config.ids.uids.dovenull2; - description = "Dovecot user for untrusted logins"; - group = "dovenull"; - } - ] ++ optional (cfg.user == "dovecot2") - { name = "dovecot2"; - uid = config.ids.uids.dovecot2; - description = "Dovecot user"; - group = cfg.group; - } - ++ optional (cfg.createMailUser && cfg.mailUser != null) - ({ name = cfg.mailUser; - description = "Virtual Mail User"; - } // optionalAttrs (cfg.mailGroup != null) { - group = cfg.mailGroup; - }); + services.dovecot2.mailPlugins = mkIf cfg.enableQuota { + globally.enable = [ "quota" ]; + perProtocol.imap.enable = [ "imap_quota" ]; + }; - users.groups = optional (cfg.group == "dovecot2") - { name = "dovecot2"; - gid = config.ids.gids.dovecot2; - } - ++ optional (cfg.createMailUser && cfg.mailGroup != null) - { name = cfg.mailGroup; - } - ++ singleton - { name = "dovenull"; - gid = config.ids.gids.dovenull2; - }; + users.users = { + dovenull = + { + uid = config.ids.uids.dovenull2; + description = "Dovecot user for untrusted logins"; + group = "dovenull"; + }; + } // optionalAttrs (cfg.user == "dovecot2") { + dovecot2 = + { + uid = config.ids.uids.dovecot2; + description = "Dovecot user"; + group = cfg.group; + }; + } // optionalAttrs (cfg.createMailUser && cfg.mailUser != null) { + ${cfg.mailUser} = + { description = "Virtual Mail User"; } // optionalAttrs (cfg.mailGroup != null) + { group = cfg.mailGroup; }; + }; + + users.groups = { + dovenull.gid = config.ids.gids.dovenull2; + } // optionalAttrs (cfg.group == "dovecot2") { + dovecot2.gid = config.ids.gids.dovecot2; + } // optionalAttrs (cfg.createMailUser && cfg.mailGroup != null) { + ${cfg.mailGroup} = {}; + }; environment.etc."dovecot/modules".source = modulesDir; environment.etc."dovecot/dovecot.conf".source = cfg.configFile; @@ -367,15 +425,19 @@ in rm -rf ${stateDir}/sieve '' + optionalString (cfg.sieveScripts != {}) '' mkdir -p ${stateDir}/sieve - ${concatStringsSep "\n" (mapAttrsToList (to: from: '' - if [ -d '${from}' ]; then - mkdir '${stateDir}/sieve/${to}' - cp -p "${from}/"*.sieve '${stateDir}/sieve/${to}' - else - cp -p '${from}' '${stateDir}/sieve/${to}' - fi - ${pkgs.dovecot_pigeonhole}/bin/sievec '${stateDir}/sieve/${to}' - '') cfg.sieveScripts)} + ${concatStringsSep "\n" ( + mapAttrsToList ( + to: from: '' + if [ -d '${from}' ]; then + mkdir '${stateDir}/sieve/${to}' + cp -p "${from}/"*.sieve '${stateDir}/sieve/${to}' + else + cp -p '${from}' '${stateDir}/sieve/${to}' + fi + ${pkgs.dovecot_pigeonhole}/bin/sievec '${stateDir}/sieve/${to}' + '' + ) cfg.sieveScripts + )} chown -R '${cfg.mailUser}:${cfg.mailGroup}' '${stateDir}/sieve' ''; }; @@ -383,17 +445,21 @@ in environment.systemPackages = [ dovecotPkg ]; assertions = [ - { assertion = intersectLists cfg.protocols [ "pop3" "imap" ] != []; + { + assertion = intersectLists cfg.protocols [ "pop3" "imap" ] != []; message = "dovecot needs at least one of the IMAP or POP3 listeners enabled"; } - { assertion = (cfg.sslServerCert == null) == (cfg.sslServerKey == null) - && (cfg.sslCACert != null -> !(cfg.sslServerCert == null || cfg.sslServerKey == null)); + { + assertion = (cfg.sslServerCert == null) == (cfg.sslServerKey == null) + && (cfg.sslCACert != null -> !(cfg.sslServerCert == null || cfg.sslServerKey == null)); message = "dovecot needs both sslServerCert and sslServerKey defined for working crypto"; } - { assertion = cfg.showPAMFailure -> cfg.enablePAM; + { + assertion = cfg.showPAMFailure -> cfg.enablePAM; message = "dovecot is configured with showPAMFailure while enablePAM is disabled"; } - { assertion = cfg.sieveScripts != {} -> (cfg.mailUser != null && cfg.mailGroup != null); + { + assertion = cfg.sieveScripts != {} -> (cfg.mailUser != null && cfg.mailGroup != null); message = "dovecot requires mailUser and mailGroup to be set when sieveScripts is set"; } ]; diff --git a/nixos/modules/services/mail/dspam.nix b/nixos/modules/services/mail/dspam.nix index 72b8c4c08b9..766ebc8095a 100644 --- a/nixos/modules/services/mail/dspam.nix +++ b/nixos/modules/services/mail/dspam.nix @@ -86,16 +86,16 @@ in { config = mkIf cfg.enable (mkMerge [ { - users.users = optionalAttrs (cfg.user == "dspam") (singleton - { name = "dspam"; + users.users = optionalAttrs (cfg.user == "dspam") { + dspam = { group = cfg.group; uid = config.ids.uids.dspam; - }); + }; + }; - users.groups = optionalAttrs (cfg.group == "dspam") (singleton - { name = "dspam"; - gid = config.ids.gids.dspam; - }); + users.groups = optionalAttrs (cfg.group == "dspam") { + dspam.gid = config.ids.gids.dspam; + }; environment.systemPackages = [ dspam ]; diff --git a/nixos/modules/services/mail/exim.nix b/nixos/modules/services/mail/exim.nix index 47812dd1e40..892fbd33214 100644 --- a/nixos/modules/services/mail/exim.nix +++ b/nixos/modules/services/mail/exim.nix @@ -87,15 +87,13 @@ in systemPackages = [ cfg.package ]; }; - users.users = singleton { - name = cfg.user; + users.users.${cfg.user} = { description = "Exim mail transfer agent user"; uid = config.ids.uids.exim; group = cfg.group; }; - users.groups = singleton { - name = cfg.group; + users.groups.${cfg.group} = { gid = config.ids.gids.exim; }; diff --git a/nixos/modules/services/mail/mailman.nix b/nixos/modules/services/mail/mailman.nix index e917209f3d1..f5e78b18293 100644 --- a/nixos/modules/services/mail/mailman.nix +++ b/nixos/modules/services/mail/mailman.nix @@ -6,37 +6,18 @@ let cfg = config.services.mailman; - mailmanPyEnv = pkgs.python3.withPackages (ps: with ps; [mailman mailman-hyperkitty]); + # This deliberately doesn't use recursiveUpdate so users can + # override the defaults. + settings = { + DEFAULT_FROM_EMAIL = cfg.siteOwner; + SERVER_EMAIL = cfg.siteOwner; + ALLOWED_HOSTS = [ "localhost" "127.0.0.1" ] ++ cfg.webHosts; + COMPRESS_OFFLINE = true; + STATIC_ROOT = "/var/lib/mailman-web/static"; + MEDIA_ROOT = "/var/lib/mailman-web/media"; + } // cfg.webSettings; - mailmanExe = with pkgs; stdenv.mkDerivation { - name = "mailman-" + python3Packages.mailman.version; - buildInputs = [makeWrapper]; - unpackPhase = ":"; - installPhase = '' - mkdir -p $out/bin - makeWrapper ${mailmanPyEnv}/bin/mailman $out/bin/mailman \ - --set MAILMAN_CONFIG_FILE /etc/mailman.cfg - ''; - }; - - mailmanWeb = pkgs.python3Packages.mailman-web.override { - serverEMail = cfg.siteOwner; - archiverKey = cfg.hyperkittyApiKey; - allowedHosts = cfg.webHosts; - }; - - mailmanWebPyEnv = pkgs.python3.withPackages (x: with x; [mailman-web]); - - mailmanWebExe = with pkgs; stdenv.mkDerivation { - inherit (mailmanWeb) name; - buildInputs = [makeWrapper]; - unpackPhase = ":"; - installPhase = '' - mkdir -p $out/bin - makeWrapper ${mailmanWebPyEnv}/bin/django-admin $out/bin/mailman-web \ - --set DJANGO_SETTINGS_MODULE settings - ''; - }; + settingsJSON = pkgs.writeText "settings.json" (builtins.toJSON settings); mailmanCfg = '' [mailman] @@ -53,30 +34,42 @@ let etc_dir: /etc ext_dir: $etc_dir/mailman.d pid_file: /run/mailman/master.pid - '' + optionalString (cfg.hyperkittyApiKey != null) '' + '' + optionalString cfg.hyperkitty.enable '' + [archiver.hyperkitty] class: mailman_hyperkitty.Archiver enable: yes - configuration: ${pkgs.writeText "mailman-hyperkitty.cfg" mailmanHyperkittyCfg} + configuration: /var/lib/mailman/mailman-hyperkitty.cfg ''; - mailmanHyperkittyCfg = '' + mailmanHyperkittyCfg = pkgs.writeText "mailman-hyperkitty.cfg" '' [general] # This is your HyperKitty installation, preferably on the localhost. This # address will be used by Mailman to forward incoming emails to HyperKitty # for archiving. It does not need to be publicly available, in fact it's # better if it is not. - base_url: ${cfg.hyperkittyBaseUrl} + base_url: ${cfg.hyperkitty.baseUrl} # Shared API key, must be the identical to the value in HyperKitty's # settings. - api_key: ${cfg.hyperkittyApiKey} + api_key: @API_KEY@ ''; in { ###### interface + imports = [ + (mkRenamedOptionModule [ "services" "mailman" "hyperkittyBaseUrl" ] + [ "services" "mailman" "hyperkitty" "baseUrl" ]) + + (mkRemovedOptionModule [ "services" "mailman" "hyperkittyApiKey" ] '' + The Hyperkitty API key is now generated on first run, and not + stored in the world-readable Nix store. To continue using + Hyperkitty, you must set services.mailman.hyperkitty.enable = true. + '') + ]; + options = { services.mailman = { @@ -87,9 +80,17 @@ in { description = "Enable Mailman on this host. Requires an active Postfix installation."; }; + package = mkOption { + type = types.package; + default = pkgs.mailman; + defaultText = "pkgs.mailman"; + example = "pkgs.mailman.override { archivers = []; }"; + description = "Mailman package to use"; + }; + siteOwner = mkOption { type = types.str; - default = "postmaster@example.org"; + example = "postmaster@example.org"; description = '' Certain messages that must be delivered to a human, but which can't be delivered to a list owner (e.g. a bounce from a list owner), will @@ -99,12 +100,13 @@ in { webRoot = mkOption { type = types.path; - default = "${mailmanWeb}/${pkgs.python3.sitePackages}"; - defaultText = "pkgs.python3Packages.mailman-web"; + default = "${pkgs.mailman-web}/${pkgs.python3.sitePackages}"; + defaultText = "\${pkgs.mailman-web}/\${pkgs.python3.sitePackages}"; description = '' The web root for the Hyperkity + Postorius apps provided by Mailman. This variable can be set, of course, but it mainly exists so that site - admins can refer to it in their own hand-written httpd configuration files. + admins can refer to it in their own hand-written web server + configuration files. ''; }; @@ -120,26 +122,35 @@ in { ''; }; - hyperkittyBaseUrl = mkOption { + webUser = mkOption { type = types.str; - default = "http://localhost/hyperkitty/"; + default = config.services.httpd.user; description = '' - Where can Mailman connect to Hyperkitty's internal API, preferably on - localhost? + User to run mailman-web as ''; }; - hyperkittyApiKey = mkOption { - type = types.nullOr types.str; - default = null; + webSettings = mkOption { + type = types.attrs; + default = {}; description = '' - The shared secret used to authenticate Mailman's internal - communication with Hyperkitty. Must be set to enable support for the - Hyperkitty archiver. Note that this secret is going to be visible to - all local users in the Nix store. + Overrides for the default mailman-web Django settings. ''; }; + hyperkitty = { + enable = mkEnableOption "the Hyperkitty archiver for Mailman"; + + baseUrl = mkOption { + type = types.str; + default = "http://localhost/hyperkitty/"; + description = '' + Where can Mailman connect to Hyperkitty's internal API, preferably on + localhost? + ''; + }; + }; + }; }; @@ -147,25 +158,58 @@ in { config = mkIf cfg.enable { - assertions = [ - { assertion = cfg.enable -> config.services.postfix.enable; + assertions = let + inherit (config.services) postfix; + + requirePostfixHash = optionPath: dataFile: + with lib; + let + expected = "hash:/var/lib/mailman/data/${dataFile}"; + value = attrByPath optionPath [] postfix; + in + { assertion = postfix.enable -> isList value && elem expected value; + message = '' + services.postfix.${concatStringsSep "." optionPath} must contain + "${expected}". + See . + ''; + }; + in [ + { assertion = postfix.enable; message = "Mailman requires Postfix"; } + (requirePostfixHash [ "relayDomains" ] "postfix_domains") + (requirePostfixHash [ "config" "transport_maps" ] "postfix_lmtp") + (requirePostfixHash [ "config" "local_recipient_maps" ] "postfix_lmtp") ]; users.users.mailman = { description = "GNU Mailman"; isSystemUser = true; }; - environment = { - systemPackages = [ mailmanExe mailmanWebExe pkgs.sassc ]; - etc."mailman.cfg".text = mailmanCfg; - }; + environment.etc."mailman.cfg".text = mailmanCfg; + + environment.etc."mailman3/settings.py".text = '' + import os + + # Required by mailman_web.settings, but will be overridden when + # settings_local.json is loaded. + os.environ["SECRET_KEY"] = "" + + from mailman_web.settings import * + + import json + + with open('${settingsJSON}') as f: + globals().update(json.load(f)) + + with open('/var/lib/mailman-web/settings_local.json') as f: + globals().update(json.load(f)) + ''; + + environment.systemPackages = [ cfg.package ] ++ (with pkgs; [ mailman-web ]); services.postfix = { - relayDomains = [ "hash:/var/lib/mailman/data/postfix_domains" ]; recipientDelimiter = "+"; # bake recipient addresses in mail envelopes via VERP config = { - transport_maps = [ "hash:/var/lib/mailman/data/postfix_lmtp" ]; - local_recipient_maps = [ "hash:/var/lib/mailman/data/postfix_lmtp" ]; owner_request_special = "no"; # Mailman handles -owner addresses on its own }; }; @@ -173,34 +217,79 @@ in { systemd.services.mailman = { description = "GNU Mailman Master Process"; after = [ "network.target" ]; + restartTriggers = [ config.environment.etc."mailman.cfg".source ]; wantedBy = [ "multi-user.target" ]; serviceConfig = { - ExecStart = "${mailmanExe}/bin/mailman start"; - ExecStop = "${mailmanExe}/bin/mailman stop"; + ExecStart = "${cfg.package}/bin/mailman start"; + ExecStop = "${cfg.package}/bin/mailman stop"; User = "mailman"; Type = "forking"; - StateDirectory = "mailman"; - StateDirectoryMode = "0700"; RuntimeDirectory = "mailman"; PIDFile = "/run/mailman/master.pid"; }; }; - systemd.services.mailman-web = { - description = "Init Postorius DB"; - before = [ "httpd.service" ]; - requiredBy = [ "httpd.service" ]; + systemd.services.mailman-settings = { + description = "Generate settings files (including secrets) for Mailman"; + before = [ "mailman.service" "mailman-web.service" "hyperkitty.service" "httpd.service" "uwsgi.service" ]; + requiredBy = [ "mailman.service" "mailman-web.service" "hyperkitty.service" "httpd.service" "uwsgi.service" ]; + path = with pkgs; [ jq ]; script = '' - ${mailmanWebExe}/bin/mailman-web migrate - rm -rf static - ${mailmanWebExe}/bin/mailman-web collectstatic - ${mailmanWebExe}/bin/mailman-web compress + mailmanDir=/var/lib/mailman + mailmanWebDir=/var/lib/mailman-web + + mailmanCfg=$mailmanDir/mailman-hyperkitty.cfg + mailmanWebCfg=$mailmanWebDir/settings_local.json + + install -m 0700 -o mailman -g nogroup -d $mailmanDir + install -m 0700 -o ${cfg.webUser} -g nogroup -d $mailmanWebDir + + if [ ! -e $mailmanWebCfg ]; then + hyperkittyApiKey=$(tr -dc A-Za-z0-9 < /dev/urandom | head -c 64) + secretKey=$(tr -dc A-Za-z0-9 < /dev/urandom | head -c 64) + + mailmanWebCfgTmp=$(mktemp) + jq -n '.MAILMAN_ARCHIVER_KEY=$archiver_key | .SECRET_KEY=$secret_key' \ + --arg archiver_key "$hyperkittyApiKey" \ + --arg secret_key "$secretKey" \ + >"$mailmanWebCfgTmp" + chown ${cfg.webUser} "$mailmanWebCfgTmp" + mv -n "$mailmanWebCfgTmp" $mailmanWebCfg + fi + + hyperkittyApiKey="$(jq -r .MAILMAN_ARCHIVER_KEY $mailmanWebCfg)" + mailmanCfgTmp=$(mktemp) + sed "s/@API_KEY@/$hyperkittyApiKey/g" ${mailmanHyperkittyCfg} >"$mailmanCfgTmp" + chown mailman "$mailmanCfgTmp" + mv "$mailmanCfgTmp" $mailmanCfg ''; serviceConfig = { - User = config.services.httpd.user; Type = "oneshot"; - StateDirectory = "mailman-web"; - StateDirectoryMode = "0700"; + # RemainAfterExit makes restartIfChanged work for this service, so + # downstream services will get updated automatically when things like + # services.mailman.hyperkitty.baseUrl change. Otherwise users have to + # restart things manually, which is confusing. + RemainAfterExit = "yes"; + }; + }; + + systemd.services.mailman-web = { + description = "Init Postorius DB"; + before = [ "httpd.service" "uwsgi.service" ]; + requiredBy = [ "httpd.service" "uwsgi.service" ]; + restartTriggers = [ config.environment.etc."mailman3/settings.py".source ]; + script = '' + ${pkgs.mailman-web}/bin/mailman-web migrate + rm -rf static + ${pkgs.mailman-web}/bin/mailman-web collectstatic + ${pkgs.mailman-web}/bin/mailman-web compress + ''; + serviceConfig = { + User = cfg.webUser; + Type = "oneshot"; + # Similar to mailman-settings.service, this makes restartTriggers work + # properly for this service. + RemainAfterExit = "yes"; WorkingDirectory = "/var/lib/mailman-web"; }; }; @@ -208,86 +297,94 @@ in { systemd.services.mailman-daily = { description = "Trigger daily Mailman events"; startAt = "daily"; + restartTriggers = [ config.environment.etc."mailman.cfg".source ]; serviceConfig = { - ExecStart = "${mailmanExe}/bin/mailman digests --send"; + ExecStart = "${cfg.package}/bin/mailman digests --send"; User = "mailman"; }; }; systemd.services.hyperkitty = { - enable = cfg.hyperkittyApiKey != null; + inherit (cfg.hyperkitty) enable; description = "GNU Hyperkitty QCluster Process"; after = [ "network.target" ]; + restartTriggers = [ config.environment.etc."mailman3/settings.py".source ]; wantedBy = [ "mailman.service" "multi-user.target" ]; serviceConfig = { - ExecStart = "${mailmanWebExe}/bin/mailman-web qcluster"; - User = config.services.httpd.user; + ExecStart = "${pkgs.mailman-web}/bin/mailman-web qcluster"; + User = cfg.webUser; WorkingDirectory = "/var/lib/mailman-web"; }; }; systemd.services.hyperkitty-minutely = { - enable = cfg.hyperkittyApiKey != null; + inherit (cfg.hyperkitty) enable; description = "Trigger minutely Hyperkitty events"; startAt = "minutely"; + restartTriggers = [ config.environment.etc."mailman3/settings.py".source ]; serviceConfig = { - ExecStart = "${mailmanWebExe}/bin/mailman-web runjobs minutely"; - User = config.services.httpd.user; + ExecStart = "${pkgs.mailman-web}/bin/mailman-web runjobs minutely"; + User = cfg.webUser; WorkingDirectory = "/var/lib/mailman-web"; }; }; systemd.services.hyperkitty-quarter-hourly = { - enable = cfg.hyperkittyApiKey != null; + inherit (cfg.hyperkitty) enable; description = "Trigger quarter-hourly Hyperkitty events"; startAt = "*:00/15"; + restartTriggers = [ config.environment.etc."mailman3/settings.py".source ]; serviceConfig = { - ExecStart = "${mailmanWebExe}/bin/mailman-web runjobs quarter_hourly"; - User = config.services.httpd.user; + ExecStart = "${pkgs.mailman-web}/bin/mailman-web runjobs quarter_hourly"; + User = cfg.webUser; WorkingDirectory = "/var/lib/mailman-web"; }; }; systemd.services.hyperkitty-hourly = { - enable = cfg.hyperkittyApiKey != null; + inherit (cfg.hyperkitty) enable; description = "Trigger hourly Hyperkitty events"; startAt = "hourly"; + restartTriggers = [ config.environment.etc."mailman3/settings.py".source ]; serviceConfig = { - ExecStart = "${mailmanWebExe}/bin/mailman-web runjobs hourly"; - User = config.services.httpd.user; + ExecStart = "${pkgs.mailman-web}/bin/mailman-web runjobs hourly"; + User = cfg.webUser; WorkingDirectory = "/var/lib/mailman-web"; }; }; systemd.services.hyperkitty-daily = { - enable = cfg.hyperkittyApiKey != null; + inherit (cfg.hyperkitty) enable; description = "Trigger daily Hyperkitty events"; startAt = "daily"; + restartTriggers = [ config.environment.etc."mailman3/settings.py".source ]; serviceConfig = { - ExecStart = "${mailmanWebExe}/bin/mailman-web runjobs daily"; - User = config.services.httpd.user; + ExecStart = "${pkgs.mailman-web}/bin/mailman-web runjobs daily"; + User = cfg.webUser; WorkingDirectory = "/var/lib/mailman-web"; }; }; systemd.services.hyperkitty-weekly = { - enable = cfg.hyperkittyApiKey != null; + inherit (cfg.hyperkitty) enable; description = "Trigger weekly Hyperkitty events"; startAt = "weekly"; + restartTriggers = [ config.environment.etc."mailman3/settings.py".source ]; serviceConfig = { - ExecStart = "${mailmanWebExe}/bin/mailman-web runjobs weekly"; - User = config.services.httpd.user; + ExecStart = "${pkgs.mailman-web}/bin/mailman-web runjobs weekly"; + User = cfg.webUser; WorkingDirectory = "/var/lib/mailman-web"; }; }; systemd.services.hyperkitty-yearly = { - enable = cfg.hyperkittyApiKey != null; + inherit (cfg.hyperkitty) enable; description = "Trigger yearly Hyperkitty events"; startAt = "yearly"; + restartTriggers = [ config.environment.etc."mailman3/settings.py".source ]; serviceConfig = { - ExecStart = "${mailmanWebExe}/bin/mailman-web runjobs yearly"; - User = config.services.httpd.user; + ExecStart = "${pkgs.mailman-web}/bin/mailman-web runjobs yearly"; + User = cfg.webUser; WorkingDirectory = "/var/lib/mailman-web"; }; }; diff --git a/nixos/modules/services/mail/mlmmj.nix b/nixos/modules/services/mail/mlmmj.nix index 7ae00f3e501..d58d93c4214 100644 --- a/nixos/modules/services/mail/mlmmj.nix +++ b/nixos/modules/services/mail/mlmmj.nix @@ -94,8 +94,7 @@ in config = mkIf cfg.enable { - users.users = singleton { - name = cfg.user; + users.users.${cfg.user} = { description = "mlmmj user"; home = stateDir; createHome = true; @@ -104,8 +103,7 @@ in useDefaultShell = true; }; - users.groups = singleton { - name = cfg.group; + users.groups.${cfg.group} = { gid = config.ids.gids.mlmmj; }; diff --git a/nixos/modules/services/mail/nullmailer.nix b/nixos/modules/services/mail/nullmailer.nix index 2c2910e0aa9..fe3f8ef9b39 100644 --- a/nixos/modules/services/mail/nullmailer.nix +++ b/nixos/modules/services/mail/nullmailer.nix @@ -201,15 +201,12 @@ with lib; }; users = { - users = singleton { - name = cfg.user; + users.${cfg.user} = { description = "Nullmailer relay-only mta user"; group = cfg.group; }; - groups = singleton { - name = cfg.group; - }; + groups.${cfg.group} = { }; }; systemd.tmpfiles.rules = [ diff --git a/nixos/modules/services/mail/opendkim.nix b/nixos/modules/services/mail/opendkim.nix index 6431531d5eb..eb6a426684d 100644 --- a/nixos/modules/services/mail/opendkim.nix +++ b/nixos/modules/services/mail/opendkim.nix @@ -91,16 +91,16 @@ in { config = mkIf cfg.enable { - users.users = optionalAttrs (cfg.user == "opendkim") (singleton - { name = "opendkim"; + users.users = optionalAttrs (cfg.user == "opendkim") { + opendkim = { group = cfg.group; uid = config.ids.uids.opendkim; - }); + }; + }; - users.groups = optionalAttrs (cfg.group == "opendkim") (singleton - { name = "opendkim"; - gid = config.ids.gids.opendkim; - }); + users.groups = optionalAttrs (cfg.group == "opendkim") { + opendkim.gid = config.ids.gids.opendkim; + }; environment.systemPackages = [ pkgs.opendkim ]; diff --git a/nixos/modules/services/mail/postfix.nix b/nixos/modules/services/mail/postfix.nix index df438a0c69d..19e11b31d9c 100644 --- a/nixos/modules/services/mail/postfix.nix +++ b/nixos/modules/services/mail/postfix.nix @@ -612,10 +612,7 @@ in { environment = { - etc = singleton - { source = "/var/lib/postfix/conf"; - target = "postfix"; - }; + etc.postfix.source = "/var/lib/postfix/conf"; # This makes it comfortable to run 'postqueue/postdrop' for example. systemPackages = [ pkgs.postfix ]; @@ -655,21 +652,20 @@ in setgid = true; }; - users.users = optional (user == "postfix") - { name = "postfix"; - description = "Postfix mail server user"; - uid = config.ids.uids.postfix; - group = group; + users.users = optionalAttrs (user == "postfix") + { postfix = { + description = "Postfix mail server user"; + uid = config.ids.uids.postfix; + group = group; + }; }; users.groups = - optional (group == "postfix") - { name = group; - gid = config.ids.gids.postfix; + optionalAttrs (group == "postfix") + { ${group}.gid = config.ids.gids.postfix; } - ++ optional (setgidGroup == "postdrop") - { name = setgidGroup; - gid = config.ids.gids.postdrop; + // optionalAttrs (setgidGroup == "postdrop") + { ${setgidGroup}.gid = config.ids.gids.postdrop; }; systemd.services.postfix = diff --git a/nixos/modules/services/mail/postsrsd.nix b/nixos/modules/services/mail/postsrsd.nix index 8f12a16906c..2ebc675ab10 100644 --- a/nixos/modules/services/mail/postsrsd.nix +++ b/nixos/modules/services/mail/postsrsd.nix @@ -90,16 +90,16 @@ in { services.postsrsd.domain = mkDefault config.networking.hostName; - users.users = optionalAttrs (cfg.user == "postsrsd") (singleton - { name = "postsrsd"; + users.users = optionalAttrs (cfg.user == "postsrsd") { + postsrsd = { group = cfg.group; uid = config.ids.uids.postsrsd; - }); + }; + }; - users.groups = optionalAttrs (cfg.group == "postsrsd") (singleton - { name = "postsrsd"; - gid = config.ids.gids.postsrsd; - }); + users.groups = optionalAttrs (cfg.group == "postsrsd") { + postsrsd.gid = config.ids.gids.postsrsd; + }; systemd.services.postsrsd = { description = "PostSRSd SRS rewriting server"; diff --git a/nixos/modules/services/mail/roundcube.nix b/nixos/modules/services/mail/roundcube.nix index 36dda619ad0..21e92cfee01 100644 --- a/nixos/modules/services/mail/roundcube.nix +++ b/nixos/modules/services/mail/roundcube.nix @@ -5,6 +5,9 @@ with lib; let cfg = config.services.roundcube; fpm = config.services.phpfpm.pools.roundcube; + localDB = cfg.database.host == "localhost"; + user = cfg.database.username; + phpWithPspell = pkgs.php.withExtensions (e: [ e.pspell ] ++ pkgs.php.enabledExtensions); in { options.services.roundcube = { @@ -44,7 +47,10 @@ in username = mkOption { type = types.str; default = "roundcube"; - description = "Username for the postgresql connection"; + description = '' + Username for the postgresql connection. + If database.host is set to localhost, a unix user and group of the same name will be created as well. + ''; }; host = mkOption { type = types.str; @@ -58,7 +64,12 @@ in }; password = mkOption { type = types.str; - description = "Password for the postgresql connection"; + description = "Password for the postgresql connection. Do not use: the password will be stored world readable in the store; use passwordFile instead."; + default = ""; + }; + passwordFile = mkOption { + type = types.str; + description = "Password file for the postgresql connection. Must be readable by user nginx. Ignored if database.host is set to localhost, as peer authentication will be used."; }; dbname = mkOption { type = types.str; @@ -75,6 +86,15 @@ in ''; }; + dicts = mkOption { + type = types.listOf types.package; + default = []; + example = literalExample "with pkgs.aspellDicts; [ en fr de ]"; + description = '' + List of aspell dictionnaries for spell checking. If empty, spell checking is disabled. + ''; + }; + extraConfig = mkOption { type = types.lines; default = ""; @@ -83,14 +103,27 @@ in }; config = mkIf cfg.enable { + # backward compatibility: if password is set but not passwordFile, make one. + services.roundcube.database.passwordFile = mkIf (!localDB && cfg.database.password != "") (mkDefault ("${pkgs.writeText "roundcube-password" cfg.database.password}")); + warnings = lib.optional (!localDB && cfg.database.password != "") "services.roundcube.database.password is deprecated and insecure; use services.roundcube.database.passwordFile instead"; + environment.etc."roundcube/config.inc.php".text = '' '${dict.fullName}'") cfg.dicts}); + ${cfg.extraConfig} ''; @@ -116,12 +149,26 @@ in }; }; - services.postgresql = mkIf (cfg.database.host == "localhost") { + services.postgresql = mkIf localDB { enable = true; + ensureDatabases = [ cfg.database.dbname ]; + ensureUsers = [ { + name = cfg.database.username; + ensurePermissions = { + "DATABASE ${cfg.database.username}" = "ALL PRIVILEGES"; + }; + } ]; }; + users.users.${user} = mkIf localDB { + group = user; + isSystemUser = true; + createHome = false; + }; + users.groups.${user} = mkIf localDB {}; + services.phpfpm.pools.roundcube = { - user = "nginx"; + user = if localDB then user else "nginx"; phpOptions = '' error_log = 'stderr' log_errors = on @@ -140,12 +187,12 @@ in "pm.max_requests" = 500; "catch_workers_output" = true; }; + phpPackage = phpWithPspell; + phpEnv.ASPELL_CONF = "dict-dir ${pkgs.aspellWithDicts (_: cfg.dicts)}/lib/aspell"; }; systemd.services.phpfpm-roundcube.after = [ "roundcube-setup.service" ]; - systemd.services.roundcube-setup = let - pgSuperUser = config.services.postgresql.superUser; - in mkMerge [ + systemd.services.roundcube-setup = mkMerge [ (mkIf (cfg.database.host == "localhost") { requires = [ "postgresql.service" ]; after = [ "postgresql.service" ]; @@ -153,22 +200,31 @@ in }) { wantedBy = [ "multi-user.target" ]; - script = '' - mkdir -p /var/lib/roundcube - if [ ! -f /var/lib/roundcube/db-created ]; then - if [ "${cfg.database.host}" = "localhost" ]; then - ${pkgs.sudo}/bin/sudo -u ${pgSuperUser} psql postgres -c "create role ${cfg.database.username} with login password '${cfg.database.password}'"; - ${pkgs.sudo}/bin/sudo -u ${pgSuperUser} psql postgres -c "create database ${cfg.database.dbname} with owner ${cfg.database.username}"; - fi - PGPASSWORD="${cfg.database.password}" ${pkgs.postgresql}/bin/psql -U ${cfg.database.username} \ - -f ${cfg.package}/SQL/postgres.initial.sql \ - -h ${cfg.database.host} ${cfg.database.dbname} - touch /var/lib/roundcube/db-created + script = let + psql = "${lib.optionalString (!localDB) "PGPASSFILE=${cfg.database.passwordFile}"} ${pkgs.postgresql}/bin/psql ${lib.optionalString (!localDB) "-h ${cfg.database.host} -U ${cfg.database.username} "} ${cfg.database.dbname}"; + in + '' + version="$(${psql} -t <<< "select value from system where name = 'roundcube-version';" || true)" + if ! (grep -E '[a-zA-Z0-9]' <<< "$version"); then + ${psql} -f ${cfg.package}/SQL/postgres.initial.sql fi - ${pkgs.php}/bin/php ${cfg.package}/bin/update.sh + if [ ! -f /var/lib/roundcube/des_key ]; then + base64 /dev/urandom | head -c 24 > /var/lib/roundcube/des_key; + # we need to log out everyone in case change the des_key + # from the default when upgrading from nixos 19.09 + ${psql} <<< 'TRUNCATE TABLE session;' + fi + + ${phpWithPspell}/bin/php ${cfg.package}/bin/update.sh ''; - serviceConfig.Type = "oneshot"; + serviceConfig = { + Type = "oneshot"; + StateDirectory = "roundcube"; + User = if localDB then user else "nginx"; + # so that the des_key is not world readable + StateDirectoryMode = "0700"; + }; } ]; }; diff --git a/nixos/modules/services/mail/rspamd.nix b/nixos/modules/services/mail/rspamd.nix index f156595e6f8..aacdbe2aeed 100644 --- a/nixos/modules/services/mail/rspamd.nix +++ b/nixos/modules/services/mail/rspamd.nix @@ -374,15 +374,13 @@ in # Allow users to run 'rspamc' and 'rspamadm'. environment.systemPackages = [ pkgs.rspamd ]; - users.users = singleton { - name = cfg.user; + users.users.${cfg.user} = { description = "rspamd daemon"; uid = config.ids.uids.rspamd; group = cfg.group; }; - users.groups = singleton { - name = cfg.group; + users.groups.${cfg.group} = { gid = config.ids.gids.rspamd; }; diff --git a/nixos/modules/services/mail/rss2email.nix b/nixos/modules/services/mail/rss2email.nix index c1e5964c453..7f8d2adac64 100644 --- a/nixos/modules/services/mail/rss2email.nix +++ b/nixos/modules/services/mail/rss2email.nix @@ -91,6 +91,8 @@ in { }; }; + environment.systemPackages = with pkgs; [ rss2email ]; + services.rss2email.config.to = cfg.to; systemd.tmpfiles.rules = [ diff --git a/nixos/modules/services/mail/spamassassin.nix b/nixos/modules/services/mail/spamassassin.nix index 1fe77ce5a0c..2d5fb40fad3 100644 --- a/nixos/modules/services/mail/spamassassin.nix +++ b/nixos/modules/services/mail/spamassassin.nix @@ -5,16 +5,6 @@ with lib; let cfg = config.services.spamassassin; spamassassin-local-cf = pkgs.writeText "local.cf" cfg.config; - spamassassin-init-pre = pkgs.writeText "init.pre" cfg.initPreConf; - - spamdEnv = pkgs.buildEnv { - name = "spamd-env"; - paths = []; - postBuild = '' - ln -sf ${spamassassin-init-pre} $out/init.pre - ln -sf ${spamassassin-local-cf} $out/local.cf - ''; - }; in @@ -65,8 +55,9 @@ in }; initPreConf = mkOption { - type = types.str; + type = with types; either str path; description = "The SpamAssassin init.pre config."; + apply = val: if builtins.isPath val then val else pkgs.writeText "init.pre" val; default = '' # @@ -120,30 +111,26 @@ in }; config = mkIf cfg.enable { + environment.etc."mail/spamassassin/init.pre".source = cfg.initPreConf; + environment.etc."mail/spamassassin/local.cf".source = spamassassin-local-cf; # Allow users to run 'spamc'. + environment.systemPackages = [ pkgs.spamassassin ]; - environment = { - etc = singleton { source = spamdEnv; target = "spamassassin"; }; - systemPackages = [ pkgs.spamassassin ]; - }; - - users.users = singleton { - name = "spamd"; + users.users.spamd = { description = "Spam Assassin Daemon"; uid = config.ids.uids.spamd; group = "spamd"; }; - users.groups = singleton { - name = "spamd"; + users.groups.spamd = { gid = config.ids.gids.spamd; }; systemd.services.sa-update = { script = '' set +e - ${pkgs.su}/bin/su -s "${pkgs.bash}/bin/bash" -c "${pkgs.spamassassin}/bin/sa-update --gpghomedir=/var/lib/spamassassin/sa-update-keys/ --siteconfigpath=${spamdEnv}/" spamd + ${pkgs.su}/bin/su -s "${pkgs.bash}/bin/bash" -c "${pkgs.spamassassin}/bin/sa-update --gpghomedir=/var/lib/spamassassin/sa-update-keys/" spamd v=$? set -e @@ -174,7 +161,7 @@ in after = [ "network.target" ]; serviceConfig = { - ExecStart = "${pkgs.spamassassin}/bin/spamd ${optionalString cfg.debug "-D"} --username=spamd --groupname=spamd --siteconfigpath=${spamdEnv} --virtual-config-dir=/var/lib/spamassassin/user-%u --allow-tell --pidfile=/run/spamd.pid"; + ExecStart = "${pkgs.spamassassin}/bin/spamd ${optionalString cfg.debug "-D"} --username=spamd --groupname=spamd --virtual-config-dir=/var/lib/spamassassin/user-%u --allow-tell --pidfile=/run/spamd.pid"; ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID"; }; @@ -185,7 +172,7 @@ in mkdir -p /var/lib/spamassassin chown spamd:spamd /var/lib/spamassassin -R set +e - ${pkgs.su}/bin/su -s "${pkgs.bash}/bin/bash" -c "${pkgs.spamassassin}/bin/sa-update --gpghomedir=/var/lib/spamassassin/sa-update-keys/ --siteconfigpath=${spamdEnv}/" spamd + ${pkgs.su}/bin/su -s "${pkgs.bash}/bin/bash" -c "${pkgs.spamassassin}/bin/sa-update --gpghomedir=/var/lib/spamassassin/sa-update-keys/" spamd v=$? set -e if [ $v -gt 1 ]; then diff --git a/nixos/modules/services/mail/sympa.nix b/nixos/modules/services/mail/sympa.nix new file mode 100644 index 00000000000..0cad09927b2 --- /dev/null +++ b/nixos/modules/services/mail/sympa.nix @@ -0,0 +1,594 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.services.sympa; + dataDir = "/var/lib/sympa"; + user = "sympa"; + group = "sympa"; + pkg = pkgs.sympa; + fqdns = attrNames cfg.domains; + usingNginx = cfg.web.enable && cfg.web.server == "nginx"; + mysqlLocal = cfg.database.createLocally && cfg.database.type == "MySQL"; + pgsqlLocal = cfg.database.createLocally && cfg.database.type == "PostgreSQL"; + + sympaSubServices = [ + "sympa-archive.service" + "sympa-bounce.service" + "sympa-bulk.service" + "sympa-task.service" + ]; + + # common for all services including wwsympa + commonServiceConfig = { + StateDirectory = "sympa"; + ProtectHome = true; + ProtectSystem = "full"; + ProtectControlGroups = true; + }; + + # wwsympa has its own service config + sympaServiceConfig = srv: { + Type = "simple"; + Restart = "always"; + ExecStart = "${pkg}/bin/${srv}.pl --foreground"; + PIDFile = "/run/sympa/${srv}.pid"; + User = user; + Group = group; + + # avoid duplicating log messageges in journal + StandardError = "null"; + } // commonServiceConfig; + + configVal = value: + if isBool value then + if value then "on" else "off" + else toString value; + configGenerator = c: concatStrings (flip mapAttrsToList c (key: val: "${key}\t${configVal val}\n")); + + mainConfig = pkgs.writeText "sympa.conf" (configGenerator cfg.settings); + robotConfig = fqdn: domain: pkgs.writeText "${fqdn}-robot.conf" (configGenerator domain.settings); + + transport = pkgs.writeText "transport.sympa" (concatStringsSep "\n" (flip map fqdns (domain: '' + ${domain} error:User unknown in recipient table + sympa@${domain} sympa:sympa@${domain} + listmaster@${domain} sympa:listmaster@${domain} + bounce@${domain} sympabounce:sympa@${domain} + abuse-feedback-report@${domain} sympabounce:sympa@${domain} + ''))); + + virtual = pkgs.writeText "virtual.sympa" (concatStringsSep "\n" (flip map fqdns (domain: '' + sympa-request@${domain} postmaster@localhost + sympa-owner@${domain} postmaster@localhost + ''))); + + listAliases = pkgs.writeText "list_aliases.tt2" '' + #--- [% list.name %]@[% list.domain %]: list transport map created at [% date %] + [% list.name %]@[% list.domain %] sympa:[% list.name %]@[% list.domain %] + [% list.name %]-request@[% list.domain %] sympa:[% list.name %]-request@[% list.domain %] + [% list.name %]-editor@[% list.domain %] sympa:[% list.name %]-editor@[% list.domain %] + #[% list.name %]-subscribe@[% list.domain %] sympa:[% list.name %]-subscribe@[%list.domain %] + [% list.name %]-unsubscribe@[% list.domain %] sympa:[% list.name %]-unsubscribe@[% list.domain %] + [% list.name %][% return_path_suffix %]@[% list.domain %] sympabounce:[% list.name %]@[% list.domain %] + ''; + + enabledFiles = filterAttrs (n: v: v.enable) cfg.settingsFile; +in +{ + + ###### interface + options.services.sympa = with types; { + + enable = mkEnableOption "Sympa mailing list manager"; + + lang = mkOption { + type = str; + default = "en_US"; + example = "cs"; + description = '' + Default Sympa language. + See + for available options. + ''; + }; + + listMasters = mkOption { + type = listOf str; + example = [ "postmaster@sympa.example.org" ]; + description = '' + The list of the email addresses of the listmasters + (users authorized to perform global server commands). + ''; + }; + + mainDomain = mkOption { + type = nullOr str; + default = null; + example = "lists.example.org"; + description = '' + Main domain to be used in sympa.conf. + If null, one of the is chosen for you. + ''; + }; + + domains = mkOption { + type = attrsOf (submodule ({ name, config, ... }: { + options = { + webHost = mkOption { + type = nullOr str; + default = null; + example = "archive.example.org"; + description = '' + Domain part of the web interface URL (no web interface for this domain if null). + DNS record of type A (or AAAA or CNAME) has to exist with this value. + ''; + }; + webLocation = mkOption { + type = str; + default = "/"; + example = "/sympa"; + description = "URL path part of the web interface."; + }; + settings = mkOption { + type = attrsOf (oneOf [ str int bool ]); + default = {}; + example = { + default_max_list_members = 3; + }; + description = '' + The robot.conf configuration file as key value set. + See + for list of configuration parameters. + ''; + }; + }; + + config.settings = mkIf (cfg.web.enable && config.webHost != null) { + wwsympa_url = mkDefault "https://${config.webHost}${strings.removeSuffix "/" config.webLocation}"; + }; + })); + + description = '' + Email domains handled by this instance. There have + to be MX records for keys of this attribute set. + ''; + example = literalExample '' + { + "lists.example.org" = { + webHost = "lists.example.org"; + webLocation = "/"; + }; + "sympa.example.com" = { + webHost = "example.com"; + webLocation = "/sympa"; + }; + } + ''; + }; + + database = { + type = mkOption { + type = enum [ "SQLite" "PostgreSQL" "MySQL" ]; + default = "SQLite"; + example = "MySQL"; + description = "Database engine to use."; + }; + + host = mkOption { + type = nullOr str; + default = null; + description = '' + Database host address. + + For MySQL, use localhost to connect using Unix domain socket. + + For PostgreSQL, use path to directory (e.g. /run/postgresql) + to connect using Unix domain socket located in this directory. + + Use null to fall back on Sympa default, or when using + . + ''; + }; + + port = mkOption { + type = nullOr port; + default = null; + description = "Database port. Use null for default port."; + }; + + name = mkOption { + type = str; + default = if cfg.database.type == "SQLite" then "${dataDir}/sympa.sqlite" else "sympa"; + defaultText = ''if database.type == "SQLite" then "${dataDir}/sympa.sqlite" else "sympa"''; + description = '' + Database name. When using SQLite this must be an absolute + path to the database file. + ''; + }; + + user = mkOption { + type = nullOr str; + default = user; + description = "Database user. The system user name is used as a default."; + }; + + passwordFile = mkOption { + type = nullOr path; + default = null; + example = "/run/keys/sympa-dbpassword"; + description = '' + A file containing the password for . + ''; + }; + + createLocally = mkOption { + type = bool; + default = true; + description = "Whether to create a local database automatically."; + }; + }; + + web = { + enable = mkOption { + type = bool; + default = true; + description = "Whether to enable Sympa web interface."; + }; + + server = mkOption { + type = enum [ "nginx" "none" ]; + default = "nginx"; + description = '' + The webserver used for the Sympa web interface. Set it to `none` if you want to configure it yourself. + Further nginx configuration can be done by adapting + . + ''; + }; + + https = mkOption { + type = bool; + default = true; + description = '' + Whether to use HTTPS. When nginx integration is enabled, this option forces SSL and enables ACME. + Please note that Sympa web interface always uses https links even when this option is disabled. + ''; + }; + + fcgiProcs = mkOption { + type = ints.positive; + default = 2; + description = "Number of FastCGI processes to fork."; + }; + }; + + mta = { + type = mkOption { + type = enum [ "postfix" "none" ]; + default = "postfix"; + description = '' + Mail transfer agent (MTA) integration. Use none if you want to configure it yourself. + + The postfix integration sets up local Postfix instance that will pass incoming + messages from configured domains to Sympa. You still need to configure at least outgoing message + handling using e.g. . + ''; + }; + }; + + settings = mkOption { + type = attrsOf (oneOf [ str int bool ]); + default = {}; + example = literalExample '' + { + default_home = "lists"; + viewlogs_page_size = 50; + } + ''; + description = '' + The sympa.conf configuration file as key value set. + See + for list of configuration parameters. + ''; + }; + + settingsFile = mkOption { + type = attrsOf (submodule ({ name, config, ... }: { + options = { + enable = mkOption { + type = bool; + default = true; + description = "Whether this file should be generated. This option allows specific files to be disabled."; + }; + text = mkOption { + default = null; + type = nullOr lines; + description = "Text of the file."; + }; + source = mkOption { + type = path; + description = "Path of the source file."; + }; + }; + + config.source = mkIf (config.text != null) (mkDefault (pkgs.writeText "sympa-${baseNameOf name}" config.text)); + })); + default = {}; + example = literalExample '' + { + "list_data/lists.example.org/help" = { + text = "subject This list provides help to users"; + }; + } + ''; + description = "Set of files to be linked in ${dataDir}."; + }; + }; + + ###### implementation + + config = mkIf cfg.enable { + + services.sympa.settings = (mapAttrs (_: v: mkDefault v) { + domain = if cfg.mainDomain != null then cfg.mainDomain else head fqdns; + listmaster = concatStringsSep "," cfg.listMasters; + lang = cfg.lang; + + home = "${dataDir}/list_data"; + arc_path = "${dataDir}/arc"; + bounce_path = "${dataDir}/bounce"; + + sendmail = "${pkgs.system-sendmail}/bin/sendmail"; + + db_type = cfg.database.type; + db_name = cfg.database.name; + } + // (optionalAttrs (cfg.database.host != null) { + db_host = cfg.database.host; + }) + // (optionalAttrs mysqlLocal { + db_host = "localhost"; # use unix domain socket + }) + // (optionalAttrs pgsqlLocal { + db_host = "/run/postgresql"; # use unix domain socket + }) + // (optionalAttrs (cfg.database.port != null) { + db_port = cfg.database.port; + }) + // (optionalAttrs (cfg.database.user != null) { + db_user = cfg.database.user; + }) + // (optionalAttrs (cfg.mta.type == "postfix") { + sendmail_aliases = "${dataDir}/sympa_transport"; + aliases_program = "${pkgs.postfix}/bin/postmap"; + aliases_db_type = "hash"; + }) + // (optionalAttrs cfg.web.enable { + static_content_path = "${dataDir}/static_content"; + css_path = "${dataDir}/static_content/css"; + pictures_path = "${dataDir}/static_content/pictures"; + mhonarc = "${pkgs.perlPackages.MHonArc}/bin/mhonarc"; + })); + + services.sympa.settingsFile = { + "virtual.sympa" = mkDefault { source = virtual; }; + "transport.sympa" = mkDefault { source = transport; }; + "etc/list_aliases.tt2" = mkDefault { source = listAliases; }; + } + // (flip mapAttrs' cfg.domains (fqdn: domain: + nameValuePair "etc/${fqdn}/robot.conf" (mkDefault { source = robotConfig fqdn domain; }))); + + environment = { + systemPackages = [ pkg ]; + }; + + users.users.${user} = { + description = "Sympa mailing list manager user"; + group = group; + home = dataDir; + createHome = false; + isSystemUser = true; + }; + + users.groups.${group} = {}; + + assertions = [ + { assertion = cfg.database.createLocally -> cfg.database.user == user; + message = "services.sympa.database.user must be set to ${user} if services.sympa.database.createLocally is set to true"; + } + { assertion = cfg.database.createLocally -> cfg.database.passwordFile == null; + message = "a password cannot be specified if services.sympa.database.createLocally is set to true"; + } + ]; + + systemd.tmpfiles.rules = [ + "d ${dataDir} 0711 ${user} ${group} - -" + "d ${dataDir}/etc 0700 ${user} ${group} - -" + "d ${dataDir}/spool 0700 ${user} ${group} - -" + "d ${dataDir}/list_data 0700 ${user} ${group} - -" + "d ${dataDir}/arc 0700 ${user} ${group} - -" + "d ${dataDir}/bounce 0700 ${user} ${group} - -" + "f ${dataDir}/sympa_transport 0600 ${user} ${group} - -" + + # force-copy static_content so it's up to date with package + # set permissions for wwsympa which needs write access (...) + "R ${dataDir}/static_content - - - - -" + "C ${dataDir}/static_content 0711 ${user} ${group} - ${pkg}/var/lib/sympa/static_content" + "e ${dataDir}/static_content/* 0711 ${user} ${group} - -" + + "d /run/sympa 0755 ${user} ${group} - -" + ] + ++ (flip concatMap fqdns (fqdn: [ + "d ${dataDir}/etc/${fqdn} 0700 ${user} ${group} - -" + "d ${dataDir}/list_data/${fqdn} 0700 ${user} ${group} - -" + ])) + #++ (flip mapAttrsToList enabledFiles (k: v: + # "L+ ${dataDir}/${k} - - - - ${v.source}" + #)) + ++ (concatLists (flip mapAttrsToList enabledFiles (k: v: [ + # sympa doesn't handle symlinks well (e.g. fails to create locks) + # force-copy instead + "R ${dataDir}/${k} - - - - -" + "C ${dataDir}/${k} 0700 ${user} ${group} - ${v.source}" + ]))); + + systemd.services.sympa = { + description = "Sympa mailing list manager"; + + wantedBy = [ "multi-user.target" ]; + after = [ "network-online.target" ]; + wants = sympaSubServices; + before = sympaSubServices; + serviceConfig = sympaServiceConfig "sympa_msg"; + + preStart = '' + umask 0077 + + cp -f ${mainConfig} ${dataDir}/etc/sympa.conf + ${optionalString (cfg.database.passwordFile != null) '' + chmod u+w ${dataDir}/etc/sympa.conf + echo -n "db_passwd " >> ${dataDir}/etc/sympa.conf + cat ${cfg.database.passwordFile} >> ${dataDir}/etc/sympa.conf + ''} + + ${optionalString (cfg.mta.type == "postfix") '' + ${pkgs.postfix}/bin/postmap hash:${dataDir}/virtual.sympa + ${pkgs.postfix}/bin/postmap hash:${dataDir}/transport.sympa + ''} + ${pkg}/bin/sympa_newaliases.pl + ${pkg}/bin/sympa.pl --health_check + ''; + }; + systemd.services.sympa-archive = { + description = "Sympa mailing list manager (archiving)"; + bindsTo = [ "sympa.service" ]; + serviceConfig = sympaServiceConfig "archived"; + }; + systemd.services.sympa-bounce = { + description = "Sympa mailing list manager (bounce processing)"; + bindsTo = [ "sympa.service" ]; + serviceConfig = sympaServiceConfig "bounced"; + }; + systemd.services.sympa-bulk = { + description = "Sympa mailing list manager (message distribution)"; + bindsTo = [ "sympa.service" ]; + serviceConfig = sympaServiceConfig "bulk"; + }; + systemd.services.sympa-task = { + description = "Sympa mailing list manager (task management)"; + bindsTo = [ "sympa.service" ]; + serviceConfig = sympaServiceConfig "task_manager"; + }; + + systemd.services.wwsympa = mkIf usingNginx { + wantedBy = [ "multi-user.target" ]; + after = [ "sympa.service" ]; + serviceConfig = { + Type = "forking"; + PIDFile = "/run/sympa/wwsympa.pid"; + Restart = "always"; + ExecStart = ''${pkgs.spawn_fcgi}/bin/spawn-fcgi \ + -u ${user} \ + -g ${group} \ + -U nginx \ + -M 0600 \ + -F ${toString cfg.web.fcgiProcs} \ + -P /run/sympa/wwsympa.pid \ + -s /run/sympa/wwsympa.socket \ + -- ${pkg}/lib/sympa/cgi/wwsympa.fcgi + ''; + + } // commonServiceConfig; + }; + + services.nginx.enable = mkIf usingNginx true; + services.nginx.virtualHosts = mkIf usingNginx (let + vHosts = unique (remove null (mapAttrsToList (_k: v: v.webHost) cfg.domains)); + hostLocations = host: map (v: v.webLocation) (filter (v: v.webHost == host) (attrValues cfg.domains)); + httpsOpts = optionalAttrs cfg.web.https { forceSSL = mkDefault true; enableACME = mkDefault true; }; + in + genAttrs vHosts (host: { + locations = genAttrs (hostLocations host) (loc: { + extraConfig = '' + include ${config.services.nginx.package}/conf/fastcgi_params; + + fastcgi_pass unix:/run/sympa/wwsympa.socket; + fastcgi_split_path_info ^(${loc})(.*)$; + + fastcgi_param PATH_INFO $fastcgi_path_info; + fastcgi_param SCRIPT_FILENAME ${pkg}/lib/sympa/cgi/wwsympa.fcgi; + ''; + }) // { + "/static-sympa/".alias = "${dataDir}/static_content/"; + }; + } // httpsOpts)); + + services.postfix = mkIf (cfg.mta.type == "postfix") { + enable = true; + recipientDelimiter = "+"; + config = { + virtual_alias_maps = [ "hash:${dataDir}/virtual.sympa" ]; + virtual_mailbox_maps = [ + "hash:${dataDir}/transport.sympa" + "hash:${dataDir}/sympa_transport" + "hash:${dataDir}/virtual.sympa" + ]; + virtual_mailbox_domains = [ "hash:${dataDir}/transport.sympa" ]; + transport_maps = [ + "hash:${dataDir}/transport.sympa" + "hash:${dataDir}/sympa_transport" + ]; + }; + masterConfig = { + "sympa" = { + type = "unix"; + privileged = true; + chroot = false; + command = "pipe"; + args = [ + "flags=hqRu" + "user=${user}" + "argv=${pkg}/libexec/queue" + "\${nexthop}" + ]; + }; + "sympabounce" = { + type = "unix"; + privileged = true; + chroot = false; + command = "pipe"; + args = [ + "flags=hqRu" + "user=${user}" + "argv=${pkg}/libexec/bouncequeue" + "\${nexthop}" + ]; + }; + }; + }; + + services.mysql = optionalAttrs mysqlLocal { + enable = true; + package = mkDefault pkgs.mariadb; + ensureDatabases = [ cfg.database.name ]; + ensureUsers = [ + { name = cfg.database.user; + ensurePermissions = { "${cfg.database.name}.*" = "ALL PRIVILEGES"; }; + } + ]; + }; + + services.postgresql = optionalAttrs pgsqlLocal { + enable = true; + ensureDatabases = [ cfg.database.name ]; + ensureUsers = [ + { name = cfg.database.user; + ensurePermissions = { "DATABASE ${cfg.database.name}" = "ALL PRIVILEGES"; }; + } + ]; + }; + + }; + + meta.maintainers = with maintainers; [ mmilata sorki ]; +} diff --git a/nixos/modules/services/misc/airsonic.nix b/nixos/modules/services/misc/airsonic.nix index c296e048cea..5cc2ff7f4bd 100644 --- a/nixos/modules/services/misc/airsonic.nix +++ b/nixos/modules/services/misc/airsonic.nix @@ -138,6 +138,7 @@ in { services.nginx = mkIf (cfg.virtualHost != null) { enable = true; + recommendedProxySettings = true; virtualHosts.${cfg.virtualHost} = { locations.${cfg.contextPath}.proxyPass = "http://${cfg.listenAddress}:${toString cfg.port}"; }; diff --git a/nixos/modules/services/misc/ankisyncd.nix b/nixos/modules/services/misc/ankisyncd.nix new file mode 100644 index 00000000000..5fc19649d3d --- /dev/null +++ b/nixos/modules/services/misc/ankisyncd.nix @@ -0,0 +1,79 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.services.ankisyncd; + + name = "ankisyncd"; + + stateDir = "/var/lib/${name}"; + + authDbPath = "${stateDir}/auth.db"; + + sessionDbPath = "${stateDir}/session.db"; + + configFile = pkgs.writeText "ankisyncd.conf" (lib.generators.toINI {} { + sync_app = { + host = cfg.host; + port = cfg.port; + data_root = stateDir; + auth_db_path = authDbPath; + session_db_path = sessionDbPath; + + base_url = "/sync/"; + base_media_url = "/msync/"; + }; + }); +in + { + options.services.ankisyncd = { + enable = mkEnableOption "ankisyncd"; + + package = mkOption { + type = types.package; + default = pkgs.ankisyncd; + defaultText = literalExample "pkgs.ankisyncd"; + description = "The package to use for the ankisyncd command."; + }; + + host = mkOption { + type = types.str; + default = "localhost"; + description = "ankisyncd host"; + }; + + port = mkOption { + type = types.int; + default = 27701; + description = "ankisyncd port"; + }; + + openFirewall = mkOption { + default = false; + type = types.bool; + description = "Whether to open the firewall for the specified port."; + }; + }; + + config = mkIf cfg.enable { + networking.firewall.allowedTCPPorts = mkIf cfg.openFirewall [ cfg.port ]; + + environment.etc."ankisyncd/ankisyncd.conf".source = configFile; + + systemd.services.ankisyncd = { + description = "ankisyncd - Anki sync server"; + after = [ "network.target" ]; + wantedBy = [ "multi-user.target" ]; + path = [ cfg.package ]; + + serviceConfig = { + Type = "simple"; + DynamicUser = true; + StateDirectory = name; + ExecStart = "${cfg.package}/bin/ankisyncd"; + Restart = "always"; + }; + }; + }; + } diff --git a/nixos/modules/services/misc/apache-kafka.nix b/nixos/modules/services/misc/apache-kafka.nix index 46308f74dc9..f3a650a260f 100644 --- a/nixos/modules/services/misc/apache-kafka.nix +++ b/nixos/modules/services/misc/apache-kafka.nix @@ -124,8 +124,7 @@ in { environment.systemPackages = [cfg.package]; - users.users = singleton { - name = "apache-kafka"; + users.users.apache-kafka = { uid = config.ids.uids.apache-kafka; description = "Apache Kafka daemon user"; home = head cfg.logDirs; diff --git a/nixos/modules/services/misc/autorandr.nix b/nixos/modules/services/misc/autorandr.nix index 4708e16e2a6..cf7fb5f78d3 100644 --- a/nixos/modules/services/misc/autorandr.nix +++ b/nixos/modules/services/misc/autorandr.nix @@ -48,5 +48,5 @@ in { }; - meta.maintainers = with maintainers; [ gnidorah ma27 ]; + meta.maintainers = with maintainers; [ gnidorah ]; } diff --git a/nixos/modules/services/misc/bepasty.nix b/nixos/modules/services/misc/bepasty.nix index 87d36068144..f69832e5b2b 100644 --- a/nixos/modules/services/misc/bepasty.nix +++ b/nixos/modules/services/misc/bepasty.nix @@ -168,16 +168,12 @@ in }) ) cfg.servers; - users.users = [{ - uid = config.ids.uids.bepasty; - name = user; - group = group; - home = default_home; - }]; + users.users.${user} = + { uid = config.ids.uids.bepasty; + group = group; + home = default_home; + }; - users.groups = [{ - name = group; - gid = config.ids.gids.bepasty; - }]; + users.groups.${group}.gid = config.ids.gids.bepasty; }; } diff --git a/nixos/modules/services/misc/cgminer.nix b/nixos/modules/services/misc/cgminer.nix index b1cf5a7d110..9fcae645269 100644 --- a/nixos/modules/services/misc/cgminer.nix +++ b/nixos/modules/services/misc/cgminer.nix @@ -110,11 +110,12 @@ in config = mkIf config.services.cgminer.enable { - users.users = optionalAttrs (cfg.user == "cgminer") (singleton - { name = "cgminer"; + users.users = optionalAttrs (cfg.user == "cgminer") { + cgminer = { uid = config.ids.uids.cgminer; description = "Cgminer user"; - }); + }; + }; environment.systemPackages = [ cfg.package ]; diff --git a/nixos/modules/services/misc/couchpotato.nix b/nixos/modules/services/misc/couchpotato.nix index 528af486b41..f5163cf86cf 100644 --- a/nixos/modules/services/misc/couchpotato.nix +++ b/nixos/modules/services/misc/couchpotato.nix @@ -29,17 +29,14 @@ in }; }; - users.users = singleton - { name = "couchpotato"; - group = "couchpotato"; + users.users.couchpotato = + { group = "couchpotato"; home = "/var/lib/couchpotato/"; description = "CouchPotato daemon user"; uid = config.ids.uids.couchpotato; }; - users.groups = singleton - { name = "couchpotato"; - gid = config.ids.gids.couchpotato; - }; + users.groups.couchpotato = + { gid = config.ids.gids.couchpotato; }; }; } diff --git a/nixos/modules/services/misc/dictd.nix b/nixos/modules/services/misc/dictd.nix index 8d3e294622d..d175854d2d1 100644 --- a/nixos/modules/services/misc/dictd.nix +++ b/nixos/modules/services/misc/dictd.nix @@ -45,18 +45,14 @@ in # get the command line client on system path to make some use of the service environment.systemPackages = [ pkgs.dict ]; - users.users = singleton - { name = "dictd"; - group = "dictd"; + users.users.dictd = + { group = "dictd"; description = "DICT.org dictd server"; home = "${dictdb}/share/dictd"; uid = config.ids.uids.dictd; }; - users.groups = singleton - { name = "dictd"; - gid = config.ids.gids.dictd; - }; + users.groups.dictd.gid = config.ids.gids.dictd; systemd.services.dictd = { description = "DICT.org Dictionary Server"; diff --git a/nixos/modules/services/misc/disnix.nix b/nixos/modules/services/misc/disnix.nix index c21cb2afc3c..b7b6eb7cd66 100644 --- a/nixos/modules/services/misc/disnix.nix +++ b/nixos/modules/services/misc/disnix.nix @@ -61,10 +61,7 @@ in ++ optional cfg.useWebServiceInterface "${pkgs.dbus_java}/share/java/dbus.jar"; services.tomcat.webapps = optional cfg.useWebServiceInterface pkgs.DisnixWebService; - users.groups = singleton - { name = "disnix"; - gid = config.ids.gids.disnix; - }; + users.groups.disnix.gid = config.ids.gids.disnix; systemd.services = { disnix = mkIf cfg.enableMultiUser { diff --git a/nixos/modules/services/misc/dysnomia.nix b/nixos/modules/services/misc/dysnomia.nix index 33a6fb15264..4b52963500d 100644 --- a/nixos/modules/services/misc/dysnomia.nix +++ b/nixos/modules/services/misc/dysnomia.nix @@ -177,7 +177,7 @@ in wrapper = {}; } // lib.optionalAttrs (config.services.httpd.enable) { apache-webapplication = { - documentRoot = config.services.httpd.documentRoot; + documentRoot = config.services.httpd.virtualHosts.localhost.documentRoot; }; } // lib.optionalAttrs (config.services.tomcat.axis2.enable) { axis2-webservice = {}; } // lib.optionalAttrs (config.services.ejabberd.enable) { ejabberd-dump = { diff --git a/nixos/modules/services/misc/etcd.nix b/nixos/modules/services/misc/etcd.nix index e4d5322f9b5..7322e1c080b 100644 --- a/nixos/modules/services/misc/etcd.nix +++ b/nixos/modules/services/misc/etcd.nix @@ -186,8 +186,7 @@ in { environment.systemPackages = [ pkgs.etcdctl ]; - users.users = singleton { - name = "etcd"; + users.users.etcd = { uid = config.ids.uids.etcd; description = "Etcd daemon user"; home = cfg.dataDir; diff --git a/nixos/modules/services/misc/ethminer.nix b/nixos/modules/services/misc/ethminer.nix index 2958cf21447..95afb0460fb 100644 --- a/nixos/modules/services/misc/ethminer.nix +++ b/nixos/modules/services/misc/ethminer.nix @@ -71,7 +71,7 @@ in maxPower = mkOption { type = types.int; - default = 115; + default = 113; description = "Miner max watt usage."; }; @@ -92,7 +92,9 @@ in serviceConfig = { DynamicUser = true; + ExecStartPre = "${pkgs.ethminer}/bin/.ethminer-wrapped --list-devices"; ExecStartPost = optional (cfg.toolkit == "cuda") "+${getBin config.boot.kernelPackages.nvidia_x11}/bin/nvidia-smi -pl ${toString cfg.maxPower}"; + Restart = "always"; }; environment = { diff --git a/nixos/modules/services/misc/exhibitor.nix b/nixos/modules/services/misc/exhibitor.nix index 74f4f671f46..f8c79f892da 100644 --- a/nixos/modules/services/misc/exhibitor.nix +++ b/nixos/modules/services/misc/exhibitor.nix @@ -410,8 +410,7 @@ in sed -i 's/'"$replace_what"'/'"$replace_with"'/g' ${cfg.baseDir}/zookeeper/bin/zk*.sh ''; }; - users.users = singleton { - name = "zookeeper"; + users.users.zookeeper = { uid = config.ids.uids.zookeeper; description = "Zookeeper daemon user"; home = cfg.baseDir; diff --git a/nixos/modules/services/misc/felix.nix b/nixos/modules/services/misc/felix.nix index 1c5ece86825..188e45abc58 100644 --- a/nixos/modules/services/misc/felix.nix +++ b/nixos/modules/services/misc/felix.nix @@ -47,14 +47,10 @@ in ###### implementation config = mkIf cfg.enable { - users.groups = singleton - { name = "osgi"; - gid = config.ids.gids.osgi; - }; + users.groups.osgi.gid = config.ids.gids.osgi; - users.users = singleton - { name = "osgi"; - uid = config.ids.uids.osgi; + users.users.osgi = + { uid = config.ids.uids.osgi; description = "OSGi user"; home = "/homeless-shelter"; }; diff --git a/nixos/modules/services/misc/folding-at-home.nix b/nixos/modules/services/misc/folding-at-home.nix deleted file mode 100644 index 122c89ce068..00000000000 --- a/nixos/modules/services/misc/folding-at-home.nix +++ /dev/null @@ -1,68 +0,0 @@ -{ config, lib, pkgs, ... }: -with lib; -let - stateDir = "/var/lib/foldingathome"; - cfg = config.services.foldingAtHome; - fahUser = "foldingathome"; -in { - - ###### interface - - options = { - - services.foldingAtHome = { - - enable = mkOption { - default = false; - description = '' - Whether to enable the Folding@Home to use idle CPU time. - ''; - }; - - nickname = mkOption { - default = "Anonymous"; - description = '' - A unique handle for statistics. - ''; - }; - - config = mkOption { - default = ""; - description = '' - Extra configuration. Contents will be added verbatim to the - configuration file. - ''; - }; - - }; - - }; - - ###### implementation - - config = mkIf cfg.enable { - - users.users = singleton - { name = fahUser; - uid = config.ids.uids.foldingathome; - description = "Folding@Home user"; - home = stateDir; - }; - - systemd.services.foldingathome = { - after = [ "network.target" ]; - wantedBy = [ "multi-user.target" ]; - preStart = '' - mkdir -m 0755 -p ${stateDir} - chown ${fahUser} ${stateDir} - cp -f ${pkgs.writeText "client.cfg" cfg.config} ${stateDir}/client.cfg - ''; - script = "${pkgs.su}/bin/su -s ${pkgs.runtimeShell} ${fahUser} -c 'cd ${stateDir}; ${pkgs.foldingathome}/bin/fah6'"; - }; - - services.foldingAtHome.config = '' - [settings] - username=${cfg.nickname} - ''; - }; -} diff --git a/nixos/modules/services/misc/freeswitch.nix b/nixos/modules/services/misc/freeswitch.nix new file mode 100644 index 00000000000..0de5ba42811 --- /dev/null +++ b/nixos/modules/services/misc/freeswitch.nix @@ -0,0 +1,103 @@ +{ config, lib, pkgs, ...}: +with lib; +let + cfg = config.services.freeswitch; + pkg = cfg.package; + configDirectory = pkgs.runCommand "freeswitch-config-d" { } '' + mkdir -p $out + cp -rT ${cfg.configTemplate} $out + chmod -R +w $out + ${concatStringsSep "\n" (mapAttrsToList (fileName: filePath: '' + mkdir -p $out/$(dirname ${fileName}) + cp ${filePath} $out/${fileName} + '') cfg.configDir)} + ''; + configPath = if cfg.enableReload + then "/etc/freeswitch" + else configDirectory; +in { + options = { + services.freeswitch = { + enable = mkEnableOption "FreeSWITCH"; + enableReload = mkOption { + default = false; + type = types.bool; + description = '' + Issue the reloadxml command to FreeSWITCH when configuration directory changes (instead of restart). + See FreeSWITCH documentation for more info. + The configuration directory is exposed at /etc/freeswitch. + See also systemd.services.*.restartIfChanged. + ''; + }; + configTemplate = mkOption { + type = types.path; + default = "${config.services.freeswitch.package}/share/freeswitch/conf/vanilla"; + defaultText = literalExample "\${config.services.freeswitch.package}/share/freeswitch/conf/vanilla"; + example = literalExample "\${config.services.freeswitch.package}/share/freeswitch/conf/minimal"; + description = '' + Configuration template to use. + See available templates in FreeSWITCH repository. + You can also set your own configuration directory. + ''; + }; + configDir = mkOption { + type = with types; attrsOf path; + default = { }; + example = literalExample '' + { + "freeswitch.xml" = ./freeswitch.xml; + "dialplan/default.xml" = pkgs.writeText "dialplan-default.xml" ''' + [xml lines] + '''; + } + ''; + description = '' + Override file in FreeSWITCH config template directory. + Each top-level attribute denotes a file path in the configuration directory, its value is the file path. + See FreeSWITCH documentation for more info. + Also check available templates in FreeSWITCH repository. + ''; + }; + package = mkOption { + type = types.package; + default = pkgs.freeswitch; + defaultText = literalExample "pkgs.freeswitch"; + example = literalExample "pkgs.freeswitch"; + description = '' + FreeSWITCH package. + ''; + }; + }; + }; + config = mkIf cfg.enable { + environment.etc.freeswitch = mkIf cfg.enableReload { + source = configDirectory; + }; + systemd.services.freeswitch-config-reload = mkIf cfg.enableReload { + before = [ "freeswitch.service" ]; + wantedBy = [ "multi-user.target" ]; + restartTriggers = [ configDirectory ]; + serviceConfig = { + ExecStart = "${pkgs.systemd}/bin/systemctl try-reload-or-restart freeswitch.service"; + RemainAfterExit = true; + Type = "oneshot"; + }; + }; + systemd.services.freeswitch = { + description = "Free and open-source application server for real-time communication"; + after = [ "network.target" ]; + wantedBy = [ "multi-user.target" ]; + serviceConfig = { + DynamicUser = true; + StateDirectory = "freeswitch"; + ExecStart = "${pkg}/bin/freeswitch -nf \\ + -mod ${pkg}/lib/freeswitch/mod \\ + -conf ${configPath} \\ + -base /var/lib/freeswitch"; + ExecReload = "${pkg}/bin/fs_cli -x reloadxml"; + Restart = "always"; + RestartSec = "5s"; + }; + }; + }; +} diff --git a/nixos/modules/services/misc/gitea.nix b/nixos/modules/services/misc/gitea.nix index 258476dd9fe..38910a5a005 100644 --- a/nixos/modules/services/misc/gitea.nix +++ b/nixos/modules/services/misc/gitea.nix @@ -364,7 +364,7 @@ in ''} sed -e "s,#secretkey#,$KEY,g" \ -e "s,#dbpass#,$DBPASS,g" \ - -e "s,#jwtsecet#,$JWTSECET,g" \ + -e "s,#jwtsecret#,$JWTSECRET,g" \ -e "s,#mailerpass#,$MAILERPASSWORD,g" \ -i ${runConfig} chmod 640 ${runConfig} ${secretKey} ${jwtSecret} diff --git a/nixos/modules/services/misc/gitlab.nix b/nixos/modules/services/misc/gitlab.nix index 61d0ce0aef8..aa958985379 100644 --- a/nixos/modules/services/misc/gitlab.nix +++ b/nixos/modules/services/misc/gitlab.nix @@ -633,20 +633,14 @@ in { # Use postfix to send out mails. services.postfix.enable = mkDefault true; - users.users = [ - { name = cfg.user; - group = cfg.group; + users.users.${cfg.user} = + { group = cfg.group; home = "${cfg.statePath}/home"; shell = "${pkgs.bash}/bin/bash"; uid = config.ids.uids.gitlab; - } - ]; + }; - users.groups = [ - { name = cfg.group; - gid = config.ids.gids.gitlab; - } - ]; + users.groups.${cfg.group}.gid = config.ids.gids.gitlab; systemd.tmpfiles.rules = [ "d /run/gitlab 0755 ${cfg.user} ${cfg.group} -" diff --git a/nixos/modules/services/misc/gpsd.nix b/nixos/modules/services/misc/gpsd.nix index 3bfcb636a3c..f954249942a 100644 --- a/nixos/modules/services/misc/gpsd.nix +++ b/nixos/modules/services/misc/gpsd.nix @@ -86,17 +86,13 @@ in config = mkIf cfg.enable { - users.users = singleton - { name = "gpsd"; - inherit uid; + users.users.gpsd = + { inherit uid; description = "gpsd daemon user"; home = "/var/empty"; }; - users.groups = singleton - { name = "gpsd"; - inherit gid; - }; + users.groups.gpsd = { inherit gid; }; systemd.services.gpsd = { description = "GPSD daemon"; diff --git a/nixos/modules/services/misc/headphones.nix b/nixos/modules/services/misc/headphones.nix index 4a77045be28..3ee0a4458bd 100644 --- a/nixos/modules/services/misc/headphones.nix +++ b/nixos/modules/services/misc/headphones.nix @@ -59,19 +59,19 @@ in config = mkIf cfg.enable { - users.users = optionalAttrs (cfg.user == name) (singleton { - name = name; - uid = config.ids.uids.headphones; - group = cfg.group; - description = "headphones user"; - home = cfg.dataDir; - createHome = true; - }); + users.users = optionalAttrs (cfg.user == name) { + ${name} = { + uid = config.ids.uids.headphones; + group = cfg.group; + description = "headphones user"; + home = cfg.dataDir; + createHome = true; + }; + }; - users.groups = optionalAttrs (cfg.group == name) (singleton { - name = name; - gid = config.ids.gids.headphones; - }); + users.groups = optionalAttrs (cfg.group == name) { + ${name}.gid = config.ids.gids.headphones; + }; systemd.services.headphones = { description = "Headphones Server"; diff --git a/nixos/modules/services/misc/home-assistant.nix b/nixos/modules/services/misc/home-assistant.nix index 74702c97f55..86033d02bf3 100644 --- a/nixos/modules/services/misc/home-assistant.nix +++ b/nixos/modules/services/misc/home-assistant.nix @@ -11,6 +11,9 @@ let (recursiveUpdate defaultConfig cfg.config) else cfg.config)); configFile = pkgs.runCommand "configuration.yaml" { preferLocalBuild = true; } '' ${pkgs.remarshal}/bin/json2yaml -i ${configJSON} -o $out + # Hack to support secrets, that are encoded as custom yaml objects, + # https://www.home-assistant.io/docs/configuration/secrets/ + sed -i -e "s/'\!secret \(.*\)'/\!secret \1/" $out ''; lovelaceConfigJSON = pkgs.writeText "ui-lovelace.json" @@ -93,11 +96,28 @@ in { config = mkOption { default = null; - type = with types; nullOr attrs; + # Migrate to new option types later: https://github.com/NixOS/nixpkgs/pull/75584 + type = with lib.types; let + valueType = nullOr (oneOf [ + bool + int + float + str + (lazyAttrsOf valueType) + (listOf valueType) + ]) // { + description = "Yaml value"; + emptyValue.value = {}; + }; + in valueType; example = literalExample '' { homeassistant = { name = "Home"; + latitude = "!secret latitude"; + longitude = "!secret longitude"; + elevation = "!secret elevation"; + unit_system = "metric"; time_zone = "UTC"; }; frontend = { }; @@ -108,6 +128,8 @@ in { description = '' Your configuration.yaml as a Nix attribute set. Beware that setting this option will delete your previous configuration.yaml. + Secrets + are encoded as strings as shown in the example. ''; }; @@ -242,6 +264,7 @@ in { home = cfg.configDir; createHome = true; group = "hass"; + extraGroups = [ "dialout" ]; uid = config.ids.uids.hass; }; diff --git a/nixos/modules/services/misc/matrix-synapse.nix b/nixos/modules/services/misc/matrix-synapse.nix index 0bda8980720..703bc9416f8 100644 --- a/nixos/modules/services/misc/matrix-synapse.nix +++ b/nixos/modules/services/misc/matrix-synapse.nix @@ -31,7 +31,6 @@ bind_host: "${cfg.bind_host}" ''} server_name: "${cfg.server_name}" pid_file: "/run/matrix-synapse.pid" -web_client: ${boolToString cfg.web_client} ${optionalString (cfg.public_baseurl != null) '' public_baseurl: "${cfg.public_baseurl}" ''} @@ -111,6 +110,9 @@ app_service_config_files: ${builtins.toJSON cfg.app_service_config_files} ${cfg.extraConfig} ''; + + hasLocalPostgresDB = let args = cfg.database_args; in + usePostgresql && (!(args ? host) || (elem args.host [ "localhost" "127.0.0.1" "::1" ])); in { options = { services.matrix-synapse = { @@ -199,13 +201,6 @@ in { This is also the last part of your UserID. ''; }; - web_client = mkOption { - type = types.bool; - default = false; - description = '' - Whether to serve a web client from the HTTP/HTTPS root resource. - ''; - }; public_baseurl = mkOption { type = types.nullOr types.str; default = null; @@ -354,13 +349,6 @@ in { The database engine name. Can be sqlite or psycopg2. ''; }; - create_local_database = mkOption { - type = types.bool; - default = true; - description = '' - Whether to create a local database automatically. - ''; - }; database_name = mkOption { type = types.str; default = "matrix-synapse"; @@ -657,32 +645,40 @@ in { }; config = mkIf cfg.enable { - users.users = [ - { name = "matrix-synapse"; + assertions = [ + { assertion = hasLocalPostgresDB -> config.services.postgresql.enable; + message = '' + Cannot deploy matrix-synapse with a configuration for a local postgresql database + and a missing postgresql service. Since 20.03 it's mandatory to manually configure the + database (please read the thread in https://github.com/NixOS/nixpkgs/pull/80447 for + further reference). + + If you + - try to deploy a fresh synapse, you need to configure the database yourself. An example + for this can be found in + - update your existing matrix-synapse instance, you simply need to add `services.postgresql.enable = true` + to your configuration. + + For further information about this update, please read the release-notes of 20.03 carefully. + ''; + } + ]; + + users.users.matrix-synapse = { group = "matrix-synapse"; home = cfg.dataDir; createHome = true; shell = "${pkgs.bash}/bin/bash"; uid = config.ids.uids.matrix-synapse; - } ]; + }; - users.groups = [ - { name = "matrix-synapse"; - gid = config.ids.gids.matrix-synapse; - } ]; - - services.postgresql = mkIf (usePostgresql && cfg.create_local_database) { - enable = mkDefault true; - ensureDatabases = [ cfg.database_name ]; - ensureUsers = [{ - name = cfg.database_user; - ensurePermissions = { "DATABASE \"${cfg.database_name}\"" = "ALL PRIVILEGES"; }; - }]; + users.groups.matrix-synapse = { + gid = config.ids.gids.matrix-synapse; }; systemd.services.matrix-synapse = { description = "Synapse Matrix homeserver"; - after = [ "network.target" ] ++ lib.optional config.services.postgresql.enable "postgresql.service" ; + after = [ "network.target" ] ++ optional hasLocalPostgresDB "postgresql.service"; wantedBy = [ "multi-user.target" ]; preStart = '' ${cfg.package}/bin/homeserver \ @@ -711,6 +707,13 @@ in { The `trusted_third_party_id_servers` option as been removed in `matrix-synapse` v1.4.0 as the behavior is now obsolete. '') + (mkRemovedOptionModule [ "services" "matrix-synapse" "create_local_database" ] '' + Database configuration must be done manually. An exemplary setup is demonstrated in + + '') + (mkRemovedOptionModule [ "services" "matrix-synapse" "web_client" ] "") ]; + meta.doc = ./matrix-synapse.xml; + } diff --git a/nixos/doc/manual/configuration/matrix.xml b/nixos/modules/services/misc/matrix-synapse.xml similarity index 61% rename from nixos/doc/manual/configuration/matrix.xml rename to nixos/modules/services/misc/matrix-synapse.xml index ef8d5cbda88..2f2ac27eeb9 100644 --- a/nixos/doc/manual/configuration/matrix.xml +++ b/nixos/modules/services/misc/matrix-synapse.xml @@ -33,6 +33,7 @@ installation instructions of Synapse . +{ pkgs, ... }: let fqdn = let @@ -40,26 +41,35 @@ let in join config.networking.hostName config.networking.domain; in { networking = { - hostName = "myhostname"; - domain = "example.org"; + hostName = "myhostname"; + domain = "example.org"; }; - networking.firewall.allowedTCPPorts = [ 80 443 ]; + networking.firewall.allowedTCPPorts = [ 80 443 ]; + + services.postgresql.enable = true; + services.postgresql.initialScript = pkgs.writeText "synapse-init.sql" '' + CREATE ROLE "matrix-synapse" WITH LOGIN PASSWORD 'synapse'; + CREATE DATABASE "matrix-synapse" WITH OWNER "matrix-synapse" + TEMPLATE template0 + LC_COLLATE = "C" + LC_CTYPE = "C"; + ''; services.nginx = { - enable = true; + enable = true; # only recommendedProxySettings and recommendedGzipSettings are strictly required, # but the rest make sense as well - recommendedTlsSettings = true; - recommendedOptimisation = true; - recommendedGzipSettings = true; - recommendedProxySettings = true; + recommendedTlsSettings = true; + recommendedOptimisation = true; + recommendedGzipSettings = true; + recommendedProxySettings = true; - virtualHosts = { + virtualHosts = { # This host section can be placed on a different host than the rest, # i.e. to delegate from the host being accessible as ${config.networking.domain} # to another host actually running the Matrix homeserver. "${config.networking.domain}" = { - locations."= /.well-known/matrix/server".extraConfig = + locations."= /.well-known/matrix/server".extraConfig = let # use 443 instead of the default 8448 port to unite # the client-server and server-server port for simplicity @@ -68,7 +78,7 @@ in { add_header Content-Type application/json; return 200 '${builtins.toJSON server}'; ''; - locations."= /.well-known/matrix/client".extraConfig = + locations."= /.well-known/matrix/client".extraConfig = let client = { "m.homeserver" = { "base_url" = "https://${fqdn}"; }; @@ -84,34 +94,37 @@ in { # Reverse proxy for Matrix client-server and server-server communication ${fqdn} = { - enableACME = true; - forceSSL = true; + enableACME = true; + forceSSL = true; # Or do a redirect instead of the 404, or whatever is appropriate for you. # But do not put a Matrix Web client here! See the Riot Web section below. - locations."/".extraConfig = '' + locations."/".extraConfig = '' return 404; ''; # forward all Matrix API calls to the synapse Matrix homeserver locations."/_matrix" = { - proxyPass = "http://[::1]:8008"; # without a trailing / + proxyPass = "http://[::1]:8008"; # without a trailing / }; }; }; }; services.matrix-synapse = { - enable = true; - server_name = config.networking.domain; - listeners = [ + enable = true; + server_name = config.networking.domain; + listeners = [ { - port = 8008; - bind_address = "::1"; - type = "http"; - tls = false; - x_forwarded = true; - resources = [ - { names = [ "client" "federation" ]; compress = false; } + port = 8008; + bind_address = "::1"; + type = "http"; + tls = false; + x_forwarded = true; + resources = [ + { + names = [ "client" "federation" ]; + compress = false; + } ]; } ]; @@ -135,10 +148,10 @@ in { If you want to run a server with public registration by anybody, you can - then enable . Otherwise, or you can generate a registration secret with + then enable services.matrix-synapse.enable_registration = + true;. Otherwise, or you can generate a registration secret with pwgen -s 64 1 and set it with - . To + . To create a new user or admin, run the following after you have set the secret and have rebuilt NixOS: @@ -154,8 +167,8 @@ Success! @your-username:example.org. Note that the registration secret ends up in the nix store and therefore is world-readable by any user on your machine, so it makes sense to only temporarily activate the - option until a better solution - for NixOS is in place. + registration_shared_secret + option until a better solution for NixOS is in place.
@@ -177,15 +190,24 @@ Success! Matrix Now! for a list of existing clients and their supported featureset. -services.nginx.virtualHosts."riot.${fqdn}" = { - enableACME = true; - forceSSL = true; - serverAliases = [ - "riot.${config.networking.domain}" - ]; +{ + services.nginx.virtualHosts."riot.${fqdn}" = { + enableACME = true; + forceSSL = true; + serverAliases = [ + "riot.${config.networking.domain}" + ]; - root = pkgs.riot-web; -}; + root = pkgs.riot-web.override { + conf = { + default_server_config."m.homeserver" = { + "base_url" = "${config.networking.domain}"; + "server_name" = "${fqdn}"; + }; + }; + }; + }; +} diff --git a/nixos/modules/services/misc/mediatomb.nix b/nixos/modules/services/misc/mediatomb.nix index 107fb57fe1c..529f584a201 100644 --- a/nixos/modules/services/misc/mediatomb.nix +++ b/nixos/modules/services/misc/mediatomb.nix @@ -266,19 +266,19 @@ in { serviceConfig.User = "${cfg.user}"; }; - users.groups = optionalAttrs (cfg.group == "mediatomb") (singleton { - name = "mediatomb"; - gid = gid; - }); + users.groups = optionalAttrs (cfg.group == "mediatomb") { + mediatomb.gid = gid; + }; - users.users = optionalAttrs (cfg.user == "mediatomb") (singleton { - name = "mediatomb"; - isSystemUser = true; - group = cfg.group; - home = "${cfg.dataDir}"; - createHome = true; - description = "Mediatomb DLNA Server User"; - }); + users.users = optionalAttrs (cfg.user == "mediatomb") { + mediatomb = { + isSystemUser = true; + group = cfg.group; + home = "${cfg.dataDir}"; + createHome = true; + description = "Mediatomb DLNA Server User"; + }; + }; networking.firewall = { allowedUDPPorts = [ 1900 cfg.port ]; diff --git a/nixos/modules/services/misc/nix-daemon.nix b/nixos/modules/services/misc/nix-daemon.nix index 24780446d50..0c2407e1dd2 100644 --- a/nixos/modules/services/misc/nix-daemon.nix +++ b/nixos/modules/services/misc/nix-daemon.nix @@ -12,8 +12,9 @@ let isNix23 = versionAtLeast nixVersion "2.3pre"; - makeNixBuildUser = nr: - { name = "nixbld${toString nr}"; + makeNixBuildUser = nr: { + name = "nixbld${toString nr}"; + value = { description = "Nix build user ${toString nr}"; /* For consistency with the setgid(2), setuid(2), and setgroups(2) @@ -23,8 +24,9 @@ let group = "nixbld"; extraGroups = [ "nixbld" ]; }; + }; - nixbldUsers = map makeNixBuildUser (range 1 cfg.nrBuildUsers); + nixbldUsers = listToAttrs (map makeNixBuildUser (range 1 cfg.nrBuildUsers)); nixConf = assert versionAtLeast nixVersion "2.2"; @@ -90,13 +92,14 @@ in maxJobs = mkOption { type = types.either types.int (types.enum ["auto"]); - default = 1; + default = "auto"; example = 64; description = '' - This option defines the maximum number of jobs that Nix will try - to build in parallel. The default is 1. You should generally - set it to the total number of logical cores in your system (e.g., 16 - for two CPUs with 4 cores each and hyper-threading). + This option defines the maximum number of jobs that Nix will try to + build in parallel. The default is auto, which means it will use all + available logical cores. It is recommend to set it to the total + number of logical cores in your system (e.g., 16 for two CPUs with 4 + cores each and hyper-threading). ''; }; @@ -280,7 +283,7 @@ in trustedBinaryCaches = mkOption { type = types.listOf types.str; default = [ ]; - example = [ http://hydra.nixos.org/ ]; + example = [ "http://hydra.nixos.org/" ]; description = '' List of binary cache URLs that non-root users can use (in addition to those specified using @@ -374,6 +377,59 @@ in If enabled (the default), checks that Nix can parse the generated nix.conf. ''; }; + + registry = mkOption { + type = types.attrsOf (types.submodule ( + let + inputAttrs = types.attrsOf (types.oneOf [types.str types.int types.bool types.package]); + in + { config, name, ... }: + { options = { + from = mkOption { + type = inputAttrs; + example = { type = "indirect"; id = "nixpkgs"; }; + description = "The flake reference to be rewritten."; + }; + to = mkOption { + type = inputAttrs; + example = { type = "github"; owner = "my-org"; repo = "my-nixpkgs"; }; + description = "The flake reference to which is to be rewritten."; + }; + flake = mkOption { + type = types.unspecified; + default = null; + example = literalExample "nixpkgs"; + description = '' + The flake input to which is to be rewritten. + ''; + }; + exact = mkOption { + type = types.bool; + default = true; + description = '' + Whether the reference needs to match exactly. If set, + a reference like nixpkgs does not + match with a reference like nixpkgs/nixos-20.03. + ''; + }; + }; + config = { + from = mkDefault { type = "indirect"; id = name; }; + to = mkIf (config.flake != null) + ({ type = "path"; + path = config.flake.outPath; + } // lib.filterAttrs + (n: v: n == "lastModified" || n == "rev" || n == "revCount" || n == "narHash") + config.flake); + }; + } + )); + default = {}; + description = '' + A system-wide flake registry. + ''; + }; + }; }; @@ -388,6 +444,11 @@ in environment.etc."nix/nix.conf".source = nixConf; + environment.etc."nix/registry.json".text = builtins.toJSON { + version = 2; + flakes = mapAttrsToList (n: v: { inherit (v) from to exact; }) cfg.registry; + }; + # List of machines for distributed Nix builds in the format # expected by build-remote.pl. environment.etc."nix/machines" = @@ -445,7 +506,7 @@ in users.users = nixbldUsers; - services.xserver.displayManager.hiddenUsers = map ({ name, ... }: name) nixbldUsers; + services.xserver.displayManager.hiddenUsers = attrNames nixbldUsers; system.activationScripts.nix = stringAfter [ "etc" "users" ] '' diff --git a/nixos/modules/services/misc/nixos-manual.nix b/nixos/modules/services/misc/nixos-manual.nix deleted file mode 100644 index 20ba3d8ef0b..00000000000 --- a/nixos/modules/services/misc/nixos-manual.nix +++ /dev/null @@ -1,73 +0,0 @@ -# This module optionally starts a browser that shows the NixOS manual -# on one of the virtual consoles which is useful for the installation -# CD. - -{ config, lib, pkgs, ... }: - -with lib; - -let - cfg = config.services.nixosManual; - cfgd = config.documentation; -in - -{ - - options = { - - # TODO(@oxij): rename this to `.enable` eventually. - services.nixosManual.showManual = mkOption { - type = types.bool; - default = false; - description = '' - Whether to show the NixOS manual on one of the virtual - consoles. - ''; - }; - - services.nixosManual.ttyNumber = mkOption { - type = types.int; - default = 8; - description = '' - Virtual console on which to show the manual. - ''; - }; - - services.nixosManual.browser = mkOption { - type = types.path; - default = "${pkgs.w3m-nographics}/bin/w3m"; - description = '' - Browser used to show the manual. - ''; - }; - - }; - - - config = mkMerge [ - (mkIf cfg.showManual { - assertions = singleton { - assertion = cfgd.enable && cfgd.nixos.enable; - message = "Can't enable `services.nixosManual.showManual` without `documentation.nixos.enable`"; - }; - }) - (mkIf (cfg.showManual && cfgd.enable && cfgd.nixos.enable) { - boot.extraTTYs = [ "tty${toString cfg.ttyNumber}" ]; - - systemd.services.nixos-manual = { - description = "NixOS Manual"; - wantedBy = [ "multi-user.target" ]; - serviceConfig = { - ExecStart = "${cfg.browser} ${config.system.build.manual.manualHTMLIndex}"; - StandardInput = "tty"; - StandardOutput = "tty"; - TTYPath = "/dev/tty${toString cfg.ttyNumber}"; - TTYReset = true; - TTYVTDisallocate = true; - Restart = "always"; - }; - }; - }) - ]; - -} diff --git a/nixos/modules/services/misc/octoprint.nix b/nixos/modules/services/misc/octoprint.nix index 8950010773c..651ed374388 100644 --- a/nixos/modules/services/misc/octoprint.nix +++ b/nixos/modules/services/misc/octoprint.nix @@ -86,16 +86,16 @@ in config = mkIf cfg.enable { - users.users = optionalAttrs (cfg.user == "octoprint") (singleton - { name = "octoprint"; + users.users = optionalAttrs (cfg.user == "octoprint") { + octoprint = { group = cfg.group; uid = config.ids.uids.octoprint; - }); + }; + }; - users.groups = optionalAttrs (cfg.group == "octoprint") (singleton - { name = "octoprint"; - gid = config.ids.gids.octoprint; - }); + users.groups = optionalAttrs (cfg.group == "octoprint") { + octoprint.gid = config.ids.gids.octoprint; + }; systemd.tmpfiles.rules = [ "d '${cfg.stateDir}' - ${cfg.user} ${cfg.group} - -" diff --git a/nixos/modules/services/misc/paperless.nix b/nixos/modules/services/misc/paperless.nix index 3985dc0b303..bfaf760fb83 100644 --- a/nixos/modules/services/misc/paperless.nix +++ b/nixos/modules/services/misc/paperless.nix @@ -123,9 +123,9 @@ in config = mkIf cfg.enable { systemd.tmpfiles.rules = [ - "d '${cfg.dataDir}' - ${cfg.user} ${cfg.user} - -" + "d '${cfg.dataDir}' - ${cfg.user} ${config.users.users.${cfg.user}.group} - -" ] ++ (optional cfg.consumptionDirIsPublic - "d '${cfg.consumptionDir}' 777 ${cfg.user} ${cfg.user} - -" + "d '${cfg.consumptionDir}' 777 - - - -" # If the consumption dir is not created here, it's automatically created by # 'manage' with the default permissions. ); @@ -169,17 +169,15 @@ in }; users = optionalAttrs (cfg.user == defaultUser) { - users = [{ - name = defaultUser; + users.${defaultUser} = { group = defaultUser; uid = config.ids.uids.paperless; home = cfg.dataDir; - }]; + }; - groups = [{ - name = defaultUser; + groups.${defaultUser} = { gid = config.ids.gids.paperless; - }]; + }; }; }; } diff --git a/nixos/modules/services/misc/parsoid.nix b/nixos/modules/services/misc/parsoid.nix index 61626e78f8b..09b7f977bfb 100644 --- a/nixos/modules/services/misc/parsoid.nix +++ b/nixos/modules/services/misc/parsoid.nix @@ -6,7 +6,7 @@ let cfg = config.services.parsoid; - parsoid = pkgs.nodePackages."parsoid-git://github.com/abbradar/parsoid#stable"; + parsoid = pkgs.nodePackages.parsoid; confTree = { worker_heartbeat_timeout = 300000; @@ -98,8 +98,29 @@ in wantedBy = [ "multi-user.target" ]; after = [ "network.target" ]; serviceConfig = { - User = "nobody"; ExecStart = "${parsoid}/lib/node_modules/parsoid/bin/server.js -c ${confFile} -n ${toString cfg.workers}"; + + DynamicUser = true; + User = "parsoid"; + Group = "parsoid"; + + CapabilityBoundingSet = ""; + NoNewPrivileges = true; + ProtectSystem = "strict"; + ProtectHome = true; + PrivateTmp = true; + PrivateDevices = true; + ProtectHostname = true; + ProtectKernelTunables = true; + ProtectKernelModules = true; + ProtectControlGroups = true; + RestrictAddressFamilies = [ "AF_INET" "AF_INET6" ]; + RestrictNamespaces = true; + LockPersonality = true; + #MemoryDenyWriteExecute = true; + RestrictRealtime = true; + RestrictSUIDSGID = true; + RemoveIPC = true; }; }; diff --git a/nixos/modules/services/misc/redmine.nix b/nixos/modules/services/misc/redmine.nix index bf9a6914a48..1febdba0c8f 100644 --- a/nixos/modules/services/misc/redmine.nix +++ b/nixos/modules/services/misc/redmine.nix @@ -66,7 +66,7 @@ in type = types.package; default = pkgs.redmine; description = "Which Redmine package to use."; - example = "pkgs.redmine.override { ruby = pkgs.ruby_2_4; }"; + example = "pkgs.redmine.override { ruby = pkgs.ruby_2_7; }"; }; user = mkOption { @@ -132,7 +132,7 @@ in example = literalExample '' { dkuk-redmine_alex_skin = builtins.fetchurl { - url = https://bitbucket.org/dkuk/redmine_alex_skin/get/1842ef675ef3.zip; + url = "https://bitbucket.org/dkuk/redmine_alex_skin/get/1842ef675ef3.zip"; sha256 = "0hrin9lzyi50k4w2bd2b30vrf1i4fi1c0gyas5801wn8i7kpm9yl"; }; } @@ -146,7 +146,7 @@ in example = literalExample '' { redmine_env_auth = builtins.fetchurl { - url = https://github.com/Intera/redmine_env_auth/archive/0.6.zip; + url = "https://github.com/Intera/redmine_env_auth/archive/0.6.zip"; sha256 = "0yyr1yjd8gvvh832wdc8m3xfnhhxzk2pk3gm2psg5w9jdvd6skak"; }; } @@ -367,17 +367,17 @@ in }; - users.users = optionalAttrs (cfg.user == "redmine") (singleton - { name = "redmine"; + users.users = optionalAttrs (cfg.user == "redmine") { + redmine = { group = cfg.group; home = cfg.stateDir; uid = config.ids.uids.redmine; - }); + }; + }; - users.groups = optionalAttrs (cfg.group == "redmine") (singleton - { name = "redmine"; - gid = config.ids.gids.redmine; - }); + users.groups = optionalAttrs (cfg.group == "redmine") { + redmine.gid = config.ids.gids.redmine; + }; warnings = optional (cfg.database.password != "") ''config.services.redmine.database.password will be stored as plaintext diff --git a/nixos/modules/services/misc/ripple-data-api.nix b/nixos/modules/services/misc/ripple-data-api.nix index 042b496d35e..9fab462f7e3 100644 --- a/nixos/modules/services/misc/ripple-data-api.nix +++ b/nixos/modules/services/misc/ripple-data-api.nix @@ -185,9 +185,8 @@ in { ]; }; - users.users = singleton - { name = "ripple-data-api"; - description = "Ripple data api user"; + users.users.ripple-data-api = + { description = "Ripple data api user"; uid = config.ids.uids.ripple-data-api; }; }; diff --git a/nixos/modules/services/misc/rippled.nix b/nixos/modules/services/misc/rippled.nix index cdf61730de3..ef34e3a779f 100644 --- a/nixos/modules/services/misc/rippled.nix +++ b/nixos/modules/services/misc/rippled.nix @@ -406,9 +406,8 @@ in config = mkIf cfg.enable { - users.users = singleton - { name = "rippled"; - description = "Ripple server user"; + users.users.rippled = + { description = "Ripple server user"; uid = config.ids.uids.rippled; home = cfg.databasePath; createHome = true; diff --git a/nixos/modules/services/misc/rogue.nix b/nixos/modules/services/misc/rogue.nix deleted file mode 100644 index aae02e384c9..00000000000 --- a/nixos/modules/services/misc/rogue.nix +++ /dev/null @@ -1,62 +0,0 @@ -# Execute the game `rogue' on tty 9. Mostly used by the NixOS -# installation CD. - -{ config, lib, pkgs, ... }: - -with lib; - -let - - cfg = config.services.rogue; - -in - -{ - ###### interface - - options = { - - services.rogue.enable = mkOption { - type = types.bool; - default = false; - description = '' - Whether to enable the Rogue game on one of the virtual - consoles. - ''; - }; - - services.rogue.tty = mkOption { - type = types.str; - default = "tty9"; - description = '' - Virtual console on which to run Rogue. - ''; - }; - - }; - - - ###### implementation - - config = mkIf cfg.enable { - - boot.extraTTYs = [ cfg.tty ]; - - systemd.services.rogue = - { description = "Rogue dungeon crawling game"; - wantedBy = [ "multi-user.target" ]; - serviceConfig = - { ExecStart = "${pkgs.rogue}/bin/rogue"; - StandardInput = "tty"; - StandardOutput = "tty"; - TTYPath = "/dev/${cfg.tty}"; - TTYReset = true; - TTYVTDisallocate = true; - WorkingDirectory = "/tmp"; - Restart = "always"; - }; - }; - - }; - -} diff --git a/nixos/modules/services/misc/serviio.nix b/nixos/modules/services/misc/serviio.nix index 9868192724b..0ead6a81691 100644 --- a/nixos/modules/services/misc/serviio.nix +++ b/nixos/modules/services/misc/serviio.nix @@ -63,20 +63,15 @@ in { }; }; - users.users = [ - { - name = "serviio"; - group = "serviio"; + users.users.serviio = + { group = "serviio"; home = cfg.dataDir; description = "Serviio Media Server User"; createHome = true; isSystemUser = true; - } - ]; + }; - users.groups = [ - { name = "serviio";} - ]; + users.groups.serviio = { }; networking.firewall = { allowedTCPPorts = [ diff --git a/nixos/modules/services/misc/sickbeard.nix b/nixos/modules/services/misc/sickbeard.nix index 5cfbbe516ae..a32dbfa3108 100644 --- a/nixos/modules/services/misc/sickbeard.nix +++ b/nixos/modules/services/misc/sickbeard.nix @@ -63,19 +63,19 @@ in config = mkIf cfg.enable { - users.users = optionalAttrs (cfg.user == name) (singleton { - name = name; - uid = config.ids.uids.sickbeard; - group = cfg.group; - description = "sickbeard user"; - home = cfg.dataDir; - createHome = true; - }); + users.users = optionalAttrs (cfg.user == name) { + ${name} = { + uid = config.ids.uids.sickbeard; + group = cfg.group; + description = "sickbeard user"; + home = cfg.dataDir; + createHome = true; + }; + }; - users.groups = optionalAttrs (cfg.group == name) (singleton { - name = name; - gid = config.ids.gids.sickbeard; - }); + users.groups = optionalAttrs (cfg.group == name) { + ${name}.gid = config.ids.gids.sickbeard; + }; systemd.services.sickbeard = { description = "Sickbeard Server"; diff --git a/nixos/modules/services/misc/siproxd.nix b/nixos/modules/services/misc/siproxd.nix index dcaf73aca44..ae7b27de8e7 100644 --- a/nixos/modules/services/misc/siproxd.nix +++ b/nixos/modules/services/misc/siproxd.nix @@ -161,8 +161,7 @@ in config = mkIf cfg.enable { - users.users = singleton { - name = "siproxyd"; + users.users.siproxyd = { uid = config.ids.uids.siproxd; }; diff --git a/nixos/modules/services/misc/sssd.nix b/nixos/modules/services/misc/sssd.nix index 6b64045dde8..36008d25741 100644 --- a/nixos/modules/services/misc/sssd.nix +++ b/nixos/modules/services/misc/sssd.nix @@ -88,9 +88,7 @@ in { exec ${pkgs.sssd}/bin/sss_ssh_authorizedkeys "$@" ''; }; - services.openssh.extraConfig = '' - AuthorizedKeysCommand /etc/ssh/authorized_keys_command - AuthorizedKeysCommandUser nobody - ''; + services.openssh.authorizedKeysCommand = "/etc/ssh/authorized_keys_command"; + services.openssh.authorizedKeysCommandUser = "nobody"; })]; } diff --git a/nixos/modules/services/misc/taskserver/default.nix b/nixos/modules/services/misc/taskserver/default.nix index 8a57277fafe..a894caed1a3 100644 --- a/nixos/modules/services/misc/taskserver/default.nix +++ b/nixos/modules/services/misc/taskserver/default.nix @@ -368,16 +368,16 @@ in { (mkIf cfg.enable { environment.systemPackages = [ nixos-taskserver ]; - users.users = optional (cfg.user == "taskd") { - name = "taskd"; - uid = config.ids.uids.taskd; - description = "Taskserver user"; - group = cfg.group; + users.users = optionalAttrs (cfg.user == "taskd") { + taskd = { + uid = config.ids.uids.taskd; + description = "Taskserver user"; + group = cfg.group; + }; }; - users.groups = optional (cfg.group == "taskd") { - name = "taskd"; - gid = config.ids.gids.taskd; + users.groups = optionalAttrs (cfg.group == "taskd") { + taskd.gid = config.ids.gids.taskd; }; services.taskserver.config = { diff --git a/nixos/modules/services/misc/uhub.nix b/nixos/modules/services/misc/uhub.nix index 753580c3e40..d1b38831028 100644 --- a/nixos/modules/services/misc/uhub.nix +++ b/nixos/modules/services/misc/uhub.nix @@ -41,31 +41,31 @@ in enable = mkOption { type = types.bool; default = false; - description = "Whether to enable the uhub ADC hub."; + description = "Whether to enable the uhub ADC hub."; }; port = mkOption { type = types.int; default = 1511; - description = "TCP port to bind the hub to."; + description = "TCP port to bind the hub to."; }; address = mkOption { type = types.str; default = "any"; - description = "Address to bind the hub to."; + description = "Address to bind the hub to."; }; enableTLS = mkOption { type = types.bool; default = false; - description = "Whether to enable TLS support."; + description = "Whether to enable TLS support."; }; hubConfig = mkOption { type = types.lines; default = ""; - description = "Contents of uhub configuration file."; + description = "Contents of uhub configuration file."; }; aclConfig = mkOption { @@ -77,11 +77,11 @@ in plugins = { authSqlite = { - enable = mkOption { + enable = mkOption { type = types.bool; default = false; description = "Whether to enable the Sqlite authentication database plugin"; - }; + }; file = mkOption { type = types.path; example = "/var/db/uhub-users"; @@ -161,14 +161,8 @@ in config = mkIf cfg.enable { users = { - users = singleton { - name = "uhub"; - uid = config.ids.uids.uhub; - }; - groups = singleton { - name = "uhub"; - gid = config.ids.gids.uhub; - }; + users.uhub.uid = config.ids.uids.uhub; + groups.uhub.gid = config.ids.gids.uhub; }; systemd.services.uhub = { diff --git a/nixos/modules/services/misc/zoneminder.nix b/nixos/modules/services/misc/zoneminder.nix index d7f7324580c..d5b3537068d 100644 --- a/nixos/modules/services/misc/zoneminder.nix +++ b/nixos/modules/services/misc/zoneminder.nix @@ -77,6 +77,8 @@ in { `config.services.zoneminder.database.createLocally` to true. Otherwise, when set to `false` (the default), you will have to create the database and database user as well as populate the database yourself. + Additionally, you will need to run `zmupdate.pl` yourself when + upgrading to a newer version. ''; webserver = mkOption { @@ -330,6 +332,8 @@ in { ${config.services.mysql.package}/bin/mysql < ${pkg}/share/zoneminder/db/zm_create.sql touch "/var/lib/${dirName}/db-created" fi + + ${zoneminder}/bin/zmupdate.pl -nointeractive ''; serviceConfig = { User = user; diff --git a/nixos/modules/services/misc/zookeeper.nix b/nixos/modules/services/misc/zookeeper.nix index 5d91e44a199..f6af7c75eba 100644 --- a/nixos/modules/services/misc/zookeeper.nix +++ b/nixos/modules/services/misc/zookeeper.nix @@ -146,8 +146,7 @@ in { ''; }; - users.users = singleton { - name = "zookeeper"; + users.users.zookeeper = { uid = config.ids.uids.zookeeper; description = "Zookeeper daemon user"; home = cfg.dataDir; diff --git a/nixos/modules/services/monitoring/cadvisor.nix b/nixos/modules/services/monitoring/cadvisor.nix index 695a8c42e85..655a6934a26 100644 --- a/nixos/modules/services/monitoring/cadvisor.nix +++ b/nixos/modules/services/monitoring/cadvisor.nix @@ -135,7 +135,6 @@ in { serviceConfig.TimeoutStartSec=300; }; - virtualisation.docker.enable = mkDefault true; }) ]; } diff --git a/nixos/modules/services/monitoring/collectd.nix b/nixos/modules/services/monitoring/collectd.nix index 731ac743b7c..ef3663c62e0 100644 --- a/nixos/modules/services/monitoring/collectd.nix +++ b/nixos/modules/services/monitoring/collectd.nix @@ -129,9 +129,10 @@ in { }; }; - users.users = optional (cfg.user == "collectd") { - name = "collectd"; - isSystemUser = true; + users.users = optionalAttrs (cfg.user == "collectd") { + collectd = { + isSystemUser = true; + }; }; }; } diff --git a/nixos/modules/services/monitoring/datadog-agent.nix b/nixos/modules/services/monitoring/datadog-agent.nix index 02a9f316fc3..2c5fe47242e 100644 --- a/nixos/modules/services/monitoring/datadog-agent.nix +++ b/nixos/modules/services/monitoring/datadog-agent.nix @@ -22,9 +22,9 @@ let # Generate Datadog configuration files for each configured checks. # This works because check configurations have predictable paths, # and because JSON is a valid subset of YAML. - makeCheckConfigs = entries: mapAttrsToList (name: conf: { - source = pkgs.writeText "${name}-check-conf.yaml" (builtins.toJSON conf); - target = "datadog-agent/conf.d/${name}.d/conf.yaml"; + makeCheckConfigs = entries: mapAttrs' (name: conf: { + name = "datadog-agent/conf.d/${name}.d/conf.yaml"; + value.source = pkgs.writeText "${name}-check-conf.yaml" (builtins.toJSON conf); }) entries; defaultChecks = { @@ -34,10 +34,11 @@ let # Assemble all check configurations and the top-level agent # configuration. - etcfiles = with pkgs; with builtins; [{ - source = writeText "datadog.yaml" (toJSON ddConf); - target = "datadog-agent/datadog.yaml"; - }] ++ makeCheckConfigs (cfg.checks // defaultChecks); + etcfiles = with pkgs; with builtins; + { "datadog-agent/datadog.yaml" = { + source = writeText "datadog.yaml" (toJSON ddConf); + }; + } // makeCheckConfigs (cfg.checks // defaultChecks); # Apply the configured extraIntegrations to the provided agent # package. See the documentation of `dd-agent/integrations-core.nix` @@ -204,7 +205,7 @@ in { config = mkIf cfg.enable { environment.systemPackages = [ datadogPkg pkgs.sysstat pkgs.procps pkgs.iproute ]; - users.extraUsers.datadog = { + users.users.datadog = { description = "Datadog Agent User"; uid = config.ids.uids.datadog; group = "datadog"; @@ -212,7 +213,7 @@ in { createHome = true; }; - users.extraGroups.datadog.gid = config.ids.gids.datadog; + users.groups.datadog.gid = config.ids.gids.datadog; systemd.services = let makeService = attrs: recursiveUpdate { @@ -224,7 +225,7 @@ in { Restart = "always"; RestartSec = 2; }; - restartTriggers = [ datadogPkg ] ++ map (etc: etc.source) etcfiles; + restartTriggers = [ datadogPkg ] ++ attrNames etcfiles; } attrs; in { datadog-agent = makeService { diff --git a/nixos/modules/services/monitoring/dd-agent/dd-agent.nix b/nixos/modules/services/monitoring/dd-agent/dd-agent.nix index 5ee6b092a6a..e91717fb205 100644 --- a/nixos/modules/services/monitoring/dd-agent/dd-agent.nix +++ b/nixos/modules/services/monitoring/dd-agent/dd-agent.nix @@ -78,37 +78,35 @@ let etcfiles = let defaultConfd = import ./dd-agent-defaults.nix; - in (map (f: { source = "${pkgs.dd-agent}/agent/conf.d-system/${f}"; - target = "dd-agent/conf.d/${f}"; - }) defaultConfd) ++ [ - { source = ddConf; - target = "dd-agent/datadog.conf"; - } - { source = diskConfig; - target = "dd-agent/conf.d/disk.yaml"; - } - { source = networkConfig; - target = "dd-agent/conf.d/network.yaml"; - } ] ++ - (optional (cfg.postgresqlConfig != null) - { source = postgresqlConfig; - target = "dd-agent/conf.d/postgres.yaml"; - }) ++ - (optional (cfg.nginxConfig != null) - { source = nginxConfig; - target = "dd-agent/conf.d/nginx.yaml"; - }) ++ - (optional (cfg.mongoConfig != null) - { source = mongoConfig; - target = "dd-agent/conf.d/mongo.yaml"; - }) ++ - (optional (cfg.processConfig != null) - { source = processConfig; - target = "dd-agent/conf.d/process.yaml"; - }) ++ - (optional (cfg.jmxConfig != null) - { source = jmxConfig; - target = "dd-agent/conf.d/jmx.yaml"; + in + listToAttrs (map (f: { + name = "dd-agent/conf.d/${f}"; + value.source = "${pkgs.dd-agent}/agent/conf.d-system/${f}"; + }) defaultConfd) // + { + "dd-agent/datadog.conf".source = ddConf; + "dd-agent/conf.d/disk.yaml".source = diskConfig; + "dd-agent/conf.d/network.yaml".source = networkConfig; + } // + (optionalAttrs (cfg.postgresqlConfig != null) + { + "dd-agent/conf.d/postgres.yaml".source = postgresqlConfig; + }) // + (optionalAttrs (cfg.nginxConfig != null) + { + "dd-agent/conf.d/nginx.yaml".source = nginxConfig; + }) // + (optionalAttrs (cfg.mongoConfig != null) + { + "dd-agent/conf.d/mongo.yaml".source = mongoConfig; + }) // + (optionalAttrs (cfg.processConfig != null) + { + "dd-agent/conf.d/process.yaml".source = processConfig; + }) // + (optionalAttrs (cfg.jmxConfig != null) + { + "dd-agent/conf.d/jmx.yaml".source = jmxConfig; }); in { diff --git a/nixos/modules/services/monitoring/fusion-inventory.nix b/nixos/modules/services/monitoring/fusion-inventory.nix index fe19ed56195..9b65c76ce02 100644 --- a/nixos/modules/services/monitoring/fusion-inventory.nix +++ b/nixos/modules/services/monitoring/fusion-inventory.nix @@ -46,8 +46,7 @@ in { config = mkIf cfg.enable { - users.users = singleton { - name = "fusion-inventory"; + users.users.fusion-inventory = { description = "FusionInventory user"; isSystemUser = true; }; diff --git a/nixos/modules/services/monitoring/graphite.nix b/nixos/modules/services/monitoring/graphite.nix index f7874af3df2..64d9d61950d 100644 --- a/nixos/modules/services/monitoring/graphite.nix +++ b/nixos/modules/services/monitoring/graphite.nix @@ -39,8 +39,6 @@ let GRAPHITE_URL = cfg.seyren.graphiteUrl; } // cfg.seyren.extraConfig; - pagerConfig = pkgs.writeText "alarms.yaml" cfg.pager.alerts; - configDir = pkgs.buildEnv { name = "graphite-config"; paths = lists.filter (el: el != null) [ @@ -61,12 +59,10 @@ let carbonEnv = { PYTHONPATH = let - cenv = pkgs.python.buildEnv.override { - extraLibs = [ pkgs.python27Packages.carbon ]; + cenv = pkgs.python3.buildEnv.override { + extraLibs = [ pkgs.python3Packages.carbon ]; }; - cenvPack = "${cenv}/${pkgs.python.sitePackages}"; - # opt/graphite/lib contains twisted.plugins.carbon-cache - in "${cenvPack}/opt/graphite/lib:${cenvPack}"; + in "${cenv}/${pkgs.python3.sitePackages}"; GRAPHITE_ROOT = dataDir; GRAPHITE_CONF_DIR = configDir; GRAPHITE_STORAGE_DIR = dataDir; @@ -74,6 +70,10 @@ let in { + imports = [ + (mkRemovedOptionModule ["services" "graphite" "pager"] "") + ]; + ###### interface options.services.graphite = { @@ -132,7 +132,7 @@ in { finders = mkOption { description = "List of finder plugins to load."; default = []; - example = literalExample "[ pkgs.python27Packages.influxgraph ]"; + example = literalExample "[ pkgs.python3Packages.influxgraph ]"; type = types.listOf types.package; }; @@ -159,8 +159,8 @@ in { package = mkOption { description = "Package to use for graphite api."; - default = pkgs.python27Packages.graphite_api; - defaultText = "pkgs.python27Packages.graphite_api"; + default = pkgs.python3Packages.graphite_api; + defaultText = "pkgs.python3Packages.graphite_api"; type = types.package; }; @@ -344,49 +344,6 @@ in { }; }; - pager = { - enable = mkOption { - description = '' - Whether to enable graphite-pager service. For more information visit - - ''; - default = false; - type = types.bool; - }; - - redisUrl = mkOption { - description = "Redis connection string."; - default = "redis://localhost:${toString config.services.redis.port}/"; - type = types.str; - }; - - graphiteUrl = mkOption { - description = "URL to your graphite service."; - default = "http://${cfg.web.listenAddress}:${toString cfg.web.port}"; - type = types.str; - }; - - alerts = mkOption { - description = "Alerts configuration for graphite-pager."; - default = '' - alerts: - - target: constantLine(100) - warning: 90 - critical: 200 - name: Test - ''; - example = '' - pushbullet_key: pushbullet_api_key - alerts: - - target: stats.seatgeek.app.deal_quality.venue_info_cache.hit - warning: .5 - critical: 1 - name: Deal quality venue cache hits - ''; - type = types.lines; - }; - }; - beacon = { enable = mkEnableOption "graphite beacon"; @@ -409,7 +366,7 @@ in { environment = carbonEnv; serviceConfig = { RuntimeDirectory = name; - ExecStart = "${pkgs.pythonPackages.twisted}/bin/twistd ${carbonOpts name}"; + ExecStart = "${pkgs.python3Packages.twisted}/bin/twistd ${carbonOpts name}"; User = "graphite"; Group = "graphite"; PermissionsStartOnly = true; @@ -431,7 +388,7 @@ in { environment = carbonEnv; serviceConfig = { RuntimeDirectory = name; - ExecStart = "${pkgs.pythonPackages.twisted}/bin/twistd ${carbonOpts name}"; + ExecStart = "${pkgs.python3Packages.twisted}/bin/twistd ${carbonOpts name}"; User = "graphite"; Group = "graphite"; PIDFile="/run/${name}/${name}.pid"; @@ -447,7 +404,7 @@ in { environment = carbonEnv; serviceConfig = { RuntimeDirectory = name; - ExecStart = "${pkgs.pythonPackages.twisted}/bin/twistd ${carbonOpts name}"; + ExecStart = "${pkgs.python3Packages.twisted}/bin/twistd ${carbonOpts name}"; User = "graphite"; Group = "graphite"; PIDFile="/run/${name}/${name}.pid"; @@ -457,19 +414,11 @@ in { (mkIf (cfg.carbon.enableCache || cfg.carbon.enableAggregator || cfg.carbon.enableRelay) { environment.systemPackages = [ - pkgs.pythonPackages.carbon + pkgs.python3Packages.carbon ]; }) - (mkIf cfg.web.enable (let - python27' = pkgs.python27.override { - packageOverrides = self: super: { - django = self.django_1_8; - django_tagging = self.django_tagging_0_4_3; - }; - }; - pythonPackages = python27'.pkgs; - in { + (mkIf cfg.web.enable ({ systemd.services.graphiteWeb = { description = "Graphite Web Interface"; wantedBy = [ "multi-user.target" ]; @@ -477,28 +426,27 @@ in { path = [ pkgs.perl ]; environment = { PYTHONPATH = let - penv = pkgs.python.buildEnv.override { + penv = pkgs.python3.buildEnv.override { extraLibs = [ - pythonPackages.graphite-web - pythonPackages.pysqlite + pkgs.python3Packages.graphite-web ]; }; - penvPack = "${penv}/${pkgs.python.sitePackages}"; + penvPack = "${penv}/${pkgs.python3.sitePackages}"; in concatStringsSep ":" [ "${graphiteLocalSettingsDir}" - "${penvPack}/opt/graphite/webapp" "${penvPack}" # explicitly adding pycairo in path because it cannot be imported via buildEnv - "${pkgs.pythonPackages.pycairo}/${pkgs.python.sitePackages}" + "${pkgs.python3Packages.pycairo}/${pkgs.python3.sitePackages}" ]; DJANGO_SETTINGS_MODULE = "graphite.settings"; + GRAPHITE_SETTINGS_MODULE = "graphite_local_settings"; GRAPHITE_CONF_DIR = configDir; GRAPHITE_STORAGE_DIR = dataDir; LD_LIBRARY_PATH = "${pkgs.cairo.out}/lib"; }; serviceConfig = { ExecStart = '' - ${pkgs.python27Packages.waitress-django}/bin/waitress-serve-django \ + ${pkgs.python3Packages.waitress-django}/bin/waitress-serve-django \ --host=${cfg.web.listenAddress} --port=${toString cfg.web.port} ''; User = "graphite"; @@ -510,7 +458,7 @@ in { mkdir -p ${dataDir}/{whisper/,log/webapp/} chmod 0700 ${dataDir}/{whisper/,log/webapp/} - ${pkgs.pythonPackages.django_1_8}/bin/django-admin.py migrate --noinput + ${pkgs.python3Packages.django}/bin/django-admin.py migrate --noinput chown -R graphite:graphite ${dataDir} @@ -518,16 +466,16 @@ in { fi # Only collect static files when graphite_web changes. - if ! [ "${dataDir}/current_graphite_web" -ef "${pythonPackages.graphite-web}" ]; then + if ! [ "${dataDir}/current_graphite_web" -ef "${pkgs.python3Packages.graphite-web}" ]; then mkdir -p ${staticDir} - ${pkgs.pythonPackages.django_1_8}/bin/django-admin.py collectstatic --noinput --clear + ${pkgs.python3Packages.django}/bin/django-admin.py collectstatic --noinput --clear chown -R graphite:graphite ${staticDir} - ln -sfT "${pythonPackages.graphite-web}" "${dataDir}/current_graphite_web" + ln -sfT "${pkgs.python3Packages.graphite-web}" "${dataDir}/current_graphite_web" fi ''; }; - environment.systemPackages = [ pythonPackages.graphite-web ]; + environment.systemPackages = [ pkgs.python3Packages.graphite-web ]; })) (mkIf cfg.api.enable { @@ -537,16 +485,16 @@ in { after = [ "network.target" ]; environment = { PYTHONPATH = let - aenv = pkgs.python.buildEnv.override { - extraLibs = [ cfg.api.package pkgs.cairo pkgs.pythonPackages.cffi ] ++ cfg.api.finders; + aenv = pkgs.python3.buildEnv.override { + extraLibs = [ cfg.api.package pkgs.cairo pkgs.python3Packages.cffi ] ++ cfg.api.finders; }; - in "${aenv}/${pkgs.python.sitePackages}"; + in "${aenv}/${pkgs.python3.sitePackages}"; GRAPHITE_API_CONFIG = graphiteApiConfig; LD_LIBRARY_PATH = "${pkgs.cairo.out}/lib"; }; serviceConfig = { ExecStart = '' - ${pkgs.python27Packages.waitress}/bin/waitress-serve \ + ${pkgs.python3Packages.waitress}/bin/waitress-serve \ --host=${cfg.api.listenAddress} --port=${toString cfg.api.port} \ graphite_api.app:app ''; @@ -591,34 +539,13 @@ in { services.mongodb.enable = mkDefault true; }) - (mkIf cfg.pager.enable { - systemd.services.graphitePager = { - description = "Graphite Pager Alerting Daemon"; - wantedBy = [ "multi-user.target" ]; - after = [ "network.target" "redis.service" ]; - environment = { - REDIS_URL = cfg.pager.redisUrl; - GRAPHITE_URL = cfg.pager.graphiteUrl; - }; - serviceConfig = { - ExecStart = "${pkgs.pythonPackages.graphitepager}/bin/graphite-pager --config ${pagerConfig}"; - User = "graphite"; - Group = "graphite"; - }; - }; - - services.redis.enable = mkDefault true; - - environment.systemPackages = [ pkgs.pythonPackages.graphitepager ]; - }) - (mkIf cfg.beacon.enable { systemd.services.graphite-beacon = { description = "Grpahite Beacon Alerting Daemon"; wantedBy = [ "multi-user.target" ]; serviceConfig = { ExecStart = '' - ${pkgs.pythonPackages.graphite_beacon}/bin/graphite-beacon \ + ${pkgs.python3Packages.graphite_beacon}/bin/graphite-beacon \ --config=${pkgs.writeText "graphite-beacon.json" (builtins.toJSON cfg.beacon.config)} ''; User = "graphite"; @@ -630,10 +557,9 @@ in { (mkIf ( cfg.carbon.enableCache || cfg.carbon.enableAggregator || cfg.carbon.enableRelay || cfg.web.enable || cfg.api.enable || - cfg.seyren.enable || cfg.pager.enable || cfg.beacon.enable + cfg.seyren.enable || cfg.beacon.enable ) { - users.users = singleton { - name = "graphite"; + users.users.graphite = { uid = config.ids.uids.graphite; description = "Graphite daemon user"; home = dataDir; diff --git a/nixos/modules/services/monitoring/heapster.nix b/nixos/modules/services/monitoring/heapster.nix index 6da0831b4c5..0a9dfa12eaa 100644 --- a/nixos/modules/services/monitoring/heapster.nix +++ b/nixos/modules/services/monitoring/heapster.nix @@ -49,8 +49,7 @@ in { }; }; - users.users = singleton { - name = "heapster"; + users.users.heapster = { uid = config.ids.uids.heapster; description = "Heapster user"; }; diff --git a/nixos/modules/services/monitoring/munin.nix b/nixos/modules/services/monitoring/munin.nix index 8af0650c738..1ebf7ee6a76 100644 --- a/nixos/modules/services/monitoring/munin.nix +++ b/nixos/modules/services/monitoring/munin.nix @@ -317,18 +317,16 @@ in environment.systemPackages = [ pkgs.munin ]; - users.users = [{ - name = "munin"; + users.users.munin = { description = "Munin monitoring user"; group = "munin"; uid = config.ids.uids.munin; home = "/var/lib/munin"; - }]; + }; - users.groups = [{ - name = "munin"; + users.groups.munin = { gid = config.ids.gids.munin; - }]; + }; }) (mkIf nodeCfg.enable { diff --git a/nixos/modules/services/monitoring/nagios.nix b/nixos/modules/services/monitoring/nagios.nix index 6a3b9776946..9ac6869068f 100644 --- a/nixos/modules/services/monitoring/nagios.nix +++ b/nixos/modules/services/monitoring/nagios.nix @@ -8,6 +8,7 @@ let nagiosState = "/var/lib/nagios"; nagiosLogDir = "/var/log/nagios"; + urlPath = "/nagios"; nagiosObjectDefs = cfg.objectDefs; @@ -16,32 +17,39 @@ let preferLocalBuild = true; } "mkdir -p $out; ln -s $nagiosObjectDefs $out/"; - nagiosCfgFile = pkgs.writeText "nagios.cfg" - '' - # Paths for state and logs. - log_file=${nagiosLogDir}/current - log_archive_path=${nagiosLogDir}/archive - status_file=${nagiosState}/status.dat - object_cache_file=${nagiosState}/objects.cache - temp_file=${nagiosState}/nagios.tmp - lock_file=/run/nagios.lock # Not used I think. - state_retention_file=${nagiosState}/retention.dat - query_socket=${nagiosState}/nagios.qh - check_result_path=${nagiosState} - command_file=${nagiosState}/nagios.cmd - - # Configuration files. - #resource_file=resource.cfg - cfg_dir=${nagiosObjectDefsDir} - - # Uid/gid that the daemon runs under. - nagios_user=nagios - nagios_group=nagios - - # Misc. options. - illegal_macro_output_chars=`~$&|'"<> - retain_state_information=1 - ''; # " + nagiosCfgFile = let + default = { + log_file="${nagiosLogDir}/current"; + log_archive_path="${nagiosLogDir}/archive"; + status_file="${nagiosState}/status.dat"; + object_cache_file="${nagiosState}/objects.cache"; + temp_file="${nagiosState}/nagios.tmp"; + lock_file="/run/nagios.lock"; + state_retention_file="${nagiosState}/retention.dat"; + query_socket="${nagiosState}/nagios.qh"; + check_result_path="${nagiosState}"; + command_file="${nagiosState}/nagios.cmd"; + cfg_dir="${nagiosObjectDefsDir}"; + nagios_user="nagios"; + nagios_group="nagios"; + illegal_macro_output_chars="`~$&|'\"<>"; + retain_state_information="1"; + }; + lines = mapAttrsToList (key: value: "${key}=${value}") (default // cfg.extraConfig); + content = concatStringsSep "\n" lines; + file = pkgs.writeText "nagios.cfg" content; + validated = pkgs.runCommand "nagios-checked.cfg" {preferLocalBuild=true;} '' + cp ${file} nagios.cfg + # nagios checks the existence of /var/lib/nagios, but + # it does not exists in the build sandbox, so we fake it + mkdir lib + lib=$(readlink -f lib) + sed -i s@=${nagiosState}@=$lib@ nagios.cfg + ${pkgs.nagios}/bin/nagios -v nagios.cfg && cp ${file} $out + ''; + defaultCfgFile = if cfg.validateConfig then validated else file; + in + if cfg.mainConfigFile == null then defaultCfgFile else cfg.mainConfigFile; # Plain configuration for the Nagios web-interface with no # authentication. @@ -49,12 +57,12 @@ let '' main_config_file=${cfg.mainConfigFile} use_authentication=0 - url_html_path=${cfg.urlPath} + url_html_path=${urlPath} ''; extraHttpdConfig = '' - ScriptAlias ${cfg.urlPath}/cgi-bin ${pkgs.nagios}/sbin + ScriptAlias ${urlPath}/cgi-bin ${pkgs.nagios}/sbin Options ExecCGI @@ -62,7 +70,7 @@ let SetEnv NAGIOS_CGI_CONFIG ${cfg.cgiConfigFile} - Alias ${cfg.urlPath} ${pkgs.nagios}/share + Alias ${urlPath} ${pkgs.nagios}/share Options None @@ -72,16 +80,15 @@ let in { + imports = [ + (mkRemovedOptionModule [ "services" "nagios" "urlPath" ] "The urlPath option has been removed as it is hard coded to /nagios in the nagios package.") + ]; + + meta.maintainers = with lib.maintainers; [ symphorien ]; + options = { services.nagios = { - enable = mkOption { - default = false; - description = " - Whether to use Nagios to monitor - your system or network. - "; - }; + enable = mkEnableOption "Nagios to monitor your system or network."; objectDefs = mkOption { description = " @@ -89,12 +96,14 @@ in the hosts, host groups, services and contacts for the network that you want Nagios to monitor. "; + type = types.listOf types.path; + example = literalExample "[ ./objects.cfg ]"; }; plugins = mkOption { type = types.listOf types.package; - default = [pkgs.nagiosPluginsOfficial pkgs.ssmtp]; - defaultText = "[pkgs.nagiosPluginsOfficial pkgs.ssmtp]"; + default = with pkgs; [ nagiosPluginsOfficial ssmtp mailutils ]; + defaultText = "[pkgs.nagiosPluginsOfficial pkgs.ssmtp pkgs.mailutils]"; description = " Packages to be added to the Nagios PATH. Typically used to add plugins, but can be anything. @@ -102,14 +111,29 @@ in }; mainConfigFile = mkOption { - type = types.package; - default = nagiosCfgFile; - defaultText = "nagiosCfgFile"; + type = types.nullOr types.package; + default = null; description = " - Derivation for the main configuration file of Nagios. + If non-null, overrides the main configuration file of Nagios. "; }; + extraConfig = mkOption { + type = types.attrsOf types.str; + example = { + debug_level = "-1"; + debug_file = "/var/log/nagios/debug.log"; + }; + default = {}; + description = "Configuration to add to /etc/nagios.cfg"; + }; + + validateConfig = mkOption { + type = types.bool; + default = pkgs.stdenv.hostPlatform == pkgs.stdenv.buildPlatform; + description = "if true, the syntax of the nagios configuration file is checked at build time"; + }; + cgiConfigFile = mkOption { type = types.package; default = nagiosCGICfgFile; @@ -121,6 +145,7 @@ in }; enableWebInterface = mkOption { + type = types.bool; default = false; description = " Whether to enable the Nagios web interface. You should also @@ -128,13 +153,20 @@ in "; }; - urlPath = mkOption { - default = "/nagios"; - description = " - The URL path under which the Nagios web interface appears. - That is, you can access the Nagios web interface through - http://server/urlPath. - "; + virtualHost = mkOption { + type = types.submodule (import ../web-servers/apache-httpd/vhost-options.nix); + example = literalExample '' + { hostName = "example.org"; + adminAddr = "webmaster@example.org"; + enableSSL = true; + sslServerCert = "/var/lib/acme/example.org/full.pem"; + sslServerKey = "/var/lib/acme/example.org/key.pem"; + } + ''; + description = '' + Apache configuration can be done by adapting . + See for further information. + ''; }; }; }; @@ -152,16 +184,12 @@ in # This isn't needed, it's just so that the user can type "nagiostats # -c /etc/nagios.cfg". - environment.etc = [ - { source = cfg.mainConfigFile; - target = "nagios.cfg"; - } - ]; + environment.etc."nagios.cfg".source = nagiosCfgFile; environment.systemPackages = [ pkgs.nagios ]; systemd.services.nagios = { description = "Nagios monitoring daemon"; - path = [ pkgs.nagios ]; + path = [ pkgs.nagios ] ++ cfg.plugins; wantedBy = [ "multi-user.target" ]; after = [ "network.target" ]; @@ -172,16 +200,13 @@ in RestartSec = 2; LogsDirectory = "nagios"; StateDirectory = "nagios"; + ExecStart = "${pkgs.nagios}/bin/nagios /etc/nagios.cfg"; + X-ReloadIfChanged = nagiosCfgFile; }; - - script = '' - for i in ${toString cfg.plugins}; do - export PATH=$i/bin:$i/sbin:$i/libexec:$PATH - done - exec ${pkgs.nagios}/bin/nagios ${cfg.mainConfigFile} - ''; }; - services.httpd.extraConfig = optionalString cfg.enableWebInterface extraHttpdConfig; + services.httpd.virtualHosts = optionalAttrs cfg.enableWebInterface { + ${cfg.virtualHost.hostName} = mkMerge [ cfg.virtualHost { extraConfig = extraHttpdConfig; } ]; + }; }; } diff --git a/nixos/modules/services/monitoring/netdata.nix b/nixos/modules/services/monitoring/netdata.nix index 3ffde8e9bce..a5233a46e34 100644 --- a/nixos/modules/services/monitoring/netdata.nix +++ b/nixos/modules/services/monitoring/netdata.nix @@ -9,10 +9,12 @@ let mkdir -p $out/libexec/netdata/plugins.d ln -s /run/wrappers/bin/apps.plugin $out/libexec/netdata/plugins.d/apps.plugin ln -s /run/wrappers/bin/freeipmi.plugin $out/libexec/netdata/plugins.d/freeipmi.plugin + ln -s /run/wrappers/bin/perf.plugin $out/libexec/netdata/plugins.d/perf.plugin + ln -s /run/wrappers/bin/slabinfo.plugin $out/libexec/netdata/plugins.d/slabinfo.plugin ''; plugins = [ - "${pkgs.netdata}/libexec/netdata/plugins.d" + "${cfg.package}/libexec/netdata/plugins.d" "${wrappedPlugins}/libexec/netdata/plugins.d" ] ++ cfg.extraPluginPaths; @@ -35,6 +37,13 @@ in { services.netdata = { enable = mkEnableOption "netdata"; + package = mkOption { + type = types.package; + default = pkgs.netdata; + defaultText = "pkgs.netdata"; + description = "Netdata package to use."; + }; + user = mkOption { type = types.str; default = "netdata"; @@ -141,10 +150,11 @@ in { path = (with pkgs; [ curl gawk which ]) ++ lib.optional cfg.python.enable (pkgs.python3.withPackages cfg.python.extraPackages); serviceConfig = { - Environment="PYTHONPATH=${pkgs.netdata}/libexec/netdata/python.d/python_modules"; - ExecStart = "${pkgs.netdata}/bin/netdata -P /run/netdata/netdata.pid -D -c ${configFile}"; + Environment="PYTHONPATH=${cfg.package}/libexec/netdata/python.d/python_modules"; + ExecStart = "${cfg.package}/bin/netdata -P /run/netdata/netdata.pid -D -c ${configFile}"; ExecReload = "${pkgs.utillinux}/bin/kill -s HUP -s USR1 -s USR2 $MAINPID"; TimeoutStopSec = 60; + Restart = "on-failure"; # User and group User = cfg.user; Group = cfg.group; @@ -159,7 +169,7 @@ in { systemd.enableCgroupAccounting = true; security.wrappers."apps.plugin" = { - source = "${pkgs.netdata}/libexec/netdata/plugins.d/apps.plugin.org"; + source = "${cfg.package}/libexec/netdata/plugins.d/apps.plugin.org"; capabilities = "cap_dac_read_search,cap_sys_ptrace+ep"; owner = cfg.user; group = cfg.group; @@ -167,25 +177,42 @@ in { }; security.wrappers."freeipmi.plugin" = { - source = "${pkgs.netdata}/libexec/netdata/plugins.d/freeipmi.plugin.org"; + source = "${cfg.package}/libexec/netdata/plugins.d/freeipmi.plugin.org"; capabilities = "cap_dac_override,cap_fowner+ep"; owner = cfg.user; group = cfg.group; permissions = "u+rx,g+rx,o-rwx"; }; + security.wrappers."perf.plugin" = { + source = "${cfg.package}/libexec/netdata/plugins.d/perf.plugin.org"; + capabilities = "cap_sys_admin+ep"; + owner = cfg.user; + group = cfg.group; + permissions = "u+rx,g+rx,o-rx"; + }; + + security.wrappers."slabinfo.plugin" = { + source = "${cfg.package}/libexec/netdata/plugins.d/slabinfo.plugin.org"; + capabilities = "cap_dac_override+ep"; + owner = cfg.user; + group = cfg.group; + permissions = "u+rx,g+rx,o-rx"; + }; + security.pam.loginLimits = [ { domain = "netdata"; type = "soft"; item = "nofile"; value = "10000"; } { domain = "netdata"; type = "hard"; item = "nofile"; value = "30000"; } ]; - users.users = optional (cfg.user == defaultUser) { - name = defaultUser; - isSystemUser = true; + users.users = optionalAttrs (cfg.user == defaultUser) { + ${defaultUser} = { + isSystemUser = true; + }; }; - users.groups = optional (cfg.group == defaultUser) { - name = defaultUser; + users.groups = optionalAttrs (cfg.group == defaultUser) { + ${defaultUser} = { }; }; }; diff --git a/nixos/modules/services/monitoring/prometheus/alertmanager.nix b/nixos/modules/services/monitoring/prometheus/alertmanager.nix index 9af6b1d94f3..1b02ebf3704 100644 --- a/nixos/modules/services/monitoring/prometheus/alertmanager.nix +++ b/nixos/modules/services/monitoring/prometheus/alertmanager.nix @@ -18,9 +18,11 @@ let in checkedConfig yml; cmdlineArgs = cfg.extraFlags ++ [ - "--config.file ${alertmanagerYml}" + "--config.file /tmp/alert-manager-substituted.yaml" "--web.listen-address ${cfg.listenAddress}:${toString cfg.port}" "--log.level ${cfg.logLevel}" + "--storage.path /var/lib/alertmanager" + (toString (map (peer: "--cluster.peer ${peer}:9094") cfg.clusterPeers)) ] ++ (optional (cfg.webExternalUrl != null) "--web.external-url ${cfg.webExternalUrl}" ) ++ (optional (cfg.logFormat != null) @@ -120,6 +122,14 @@ in { ''; }; + clusterPeers = mkOption { + type = types.listOf types.str; + default = []; + description = '' + Initial peers for HA cluster. + ''; + }; + extraFlags = mkOption { type = types.listOf types.str; default = []; @@ -127,6 +137,18 @@ in { Extra commandline options when launching the Alertmanager. ''; }; + + environmentFile = mkOption { + type = types.nullOr types.path; + default = null; + example = "/root/alertmanager.env"; + description = '' + File to load as environment file. Environment variables + from this file will be interpolated into the config file + using envsubst with this syntax: + $ENVIRONMENT ''${VARIABLE} + ''; + }; }; }; @@ -143,10 +165,16 @@ in { systemd.services.alertmanager = { wantedBy = [ "multi-user.target" ]; - after = [ "network.target" ]; + after = [ "network-online.target" ]; + preStart = '' + ${lib.getBin pkgs.envsubst}/bin/envsubst -o "/tmp/alert-manager-substituted.yaml" \ + -i "${alertmanagerYml}" + ''; serviceConfig = { Restart = "always"; - DynamicUser = true; + StateDirectory = "alertmanager"; + DynamicUser = true; # implies PrivateTmp + EnvironmentFile = lib.mkIf (cfg.environmentFile != null) cfg.environmentFile; WorkingDirectory = "/tmp"; ExecStart = "${cfg.package}/bin/alertmanager" + optionalString (length cmdlineArgs != 0) (" \\\n " + diff --git a/nixos/modules/services/monitoring/prometheus/default.nix b/nixos/modules/services/monitoring/prometheus/default.nix index b67f697ca0d..84a72afac2f 100644 --- a/nixos/modules/services/monitoring/prometheus/default.nix +++ b/nixos/modules/services/monitoring/prometheus/default.nix @@ -9,16 +9,17 @@ let # a wrapper that verifies that the configuration is valid promtoolCheck = what: name: file: - pkgs.runCommand - "${name}-${replaceStrings [" "] [""] what}-checked" - { buildInputs = [ cfg.package ]; } '' - ln -s ${file} $out - promtool ${what} $out - ''; + if cfg.checkConfig then + pkgs.runCommandNoCCLocal + "${name}-${replaceStrings [" "] [""] what}-checked" + { buildInputs = [ cfg.package ]; } '' + ln -s ${file} $out + promtool ${what} $out + '' else file; # Pretty-print JSON to a file writePrettyJSON = name: x: - pkgs.runCommand name { preferLocalBuild = true; } '' + pkgs.runCommandNoCCLocal name {} '' echo '${builtins.toJSON x}' | ${pkgs.jq}/bin/jq . > $out ''; @@ -601,6 +602,20 @@ in { if Prometheus is served via a reverse proxy). ''; }; + + checkConfig = mkOption { + type = types.bool; + default = true; + description = '' + Check configuration with promtool + check. The call to promtool is + subject to sandboxing by Nix. When credentials are stored in + external files (password_file, + bearer_token_file, etc), they will not be + visible to promtool and it will report + errors, despite a correct configuration. + ''; + }; }; config = mkIf cfg.enable { diff --git a/nixos/modules/services/monitoring/prometheus/exporters.nix b/nixos/modules/services/monitoring/prometheus/exporters.nix index 36ebffa4463..f9ad1457fc8 100644 --- a/nixos/modules/services/monitoring/prometheus/exporters.nix +++ b/nixos/modules/services/monitoring/prometheus/exporters.nix @@ -29,6 +29,7 @@ let "fritzbox" "json" "mail" + "mikrotik" "minio" "nextcloud" "nginx" @@ -197,13 +198,25 @@ in config = mkMerge ([{ assertions = [ { - assertion = (cfg.snmp.configurationPath == null) != (cfg.snmp.configuration == null); + assertion = cfg.snmp.enable -> ( + (cfg.snmp.configurationPath == null) != (cfg.snmp.configuration == null) + ); message = '' Please ensure you have either `services.prometheus.exporters.snmp.configuration' or `services.prometheus.exporters.snmp.configurationPath' set! ''; } { - assertion = (cfg.mail.configFile == null) != (cfg.mail.configuration == {}); + assertion = cfg.mikrotik.enable -> ( + (cfg.mikrotik.configFile == null) != (cfg.mikrotik.configuration == null) + ); + message = '' + Please specify either `services.prometheus.exporters.mikrotik.configuration' + or `services.prometheus.exporters.mikrotik.configFile'. + ''; + } { + assertion = cfg.mail.enable -> ( + (cfg.mail.configFile == null) != (cfg.mail.configuration == null) + ); message = '' Please specify either 'services.prometheus.exporters.mail.configuration' or 'services.prometheus.exporters.mail.configFile'. diff --git a/nixos/modules/services/monitoring/prometheus/exporters/blackbox.nix b/nixos/modules/services/monitoring/prometheus/exporters/blackbox.nix index 8a90afa9984..fe8d905da3f 100644 --- a/nixos/modules/services/monitoring/prometheus/exporters/blackbox.nix +++ b/nixos/modules/services/monitoring/prometheus/exporters/blackbox.nix @@ -61,7 +61,7 @@ in { ExecStart = '' ${pkgs.prometheus-blackbox-exporter}/bin/blackbox_exporter \ --web.listen-address ${cfg.listenAddress}:${toString cfg.port} \ - --config.file ${adjustedConfigFile} \ + --config.file ${escapeShellArg adjustedConfigFile} \ ${concatStringsSep " \\\n " cfg.extraFlags} ''; ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID"; diff --git a/nixos/modules/services/monitoring/prometheus/exporters/collectd.nix b/nixos/modules/services/monitoring/prometheus/exporters/collectd.nix index 1cc34641809..97210463027 100644 --- a/nixos/modules/services/monitoring/prometheus/exporters/collectd.nix +++ b/nixos/modules/services/monitoring/prometheus/exporters/collectd.nix @@ -66,7 +66,7 @@ in serviceConfig = { ExecStart = '' ${pkgs.prometheus-collectd-exporter}/bin/collectd_exporter \ - -log.format ${cfg.logFormat} \ + -log.format ${escapeShellArg cfg.logFormat} \ -log.level ${cfg.logLevel} \ -web.listen-address ${cfg.listenAddress}:${toString cfg.port} \ ${collectSettingsArgs} \ diff --git a/nixos/modules/services/monitoring/prometheus/exporters/dnsmasq.nix b/nixos/modules/services/monitoring/prometheus/exporters/dnsmasq.nix index e9fa26cb1f5..68afba21d64 100644 --- a/nixos/modules/services/monitoring/prometheus/exporters/dnsmasq.nix +++ b/nixos/modules/services/monitoring/prometheus/exporters/dnsmasq.nix @@ -30,7 +30,7 @@ in ${pkgs.prometheus-dnsmasq-exporter}/bin/dnsmasq_exporter \ --listen ${cfg.listenAddress}:${toString cfg.port} \ --dnsmasq ${cfg.dnsmasqListenAddress} \ - --leases_path ${cfg.leasesPath} \ + --leases_path ${escapeShellArg cfg.leasesPath} \ ${concatStringsSep " \\\n " cfg.extraFlags} ''; }; diff --git a/nixos/modules/services/monitoring/prometheus/exporters/dovecot.nix b/nixos/modules/services/monitoring/prometheus/exporters/dovecot.nix index a01074758ff..aba3533e439 100644 --- a/nixos/modules/services/monitoring/prometheus/exporters/dovecot.nix +++ b/nixos/modules/services/monitoring/prometheus/exporters/dovecot.nix @@ -64,7 +64,7 @@ in ${pkgs.prometheus-dovecot-exporter}/bin/dovecot_exporter \ --web.listen-address ${cfg.listenAddress}:${toString cfg.port} \ --web.telemetry-path ${cfg.telemetryPath} \ - --dovecot.socket-path ${cfg.socketPath} \ + --dovecot.socket-path ${escapeShellArg cfg.socketPath} \ --dovecot.scopes ${concatStringsSep "," cfg.scopes} \ ${concatStringsSep " \\\n " cfg.extraFlags} ''; diff --git a/nixos/modules/services/monitoring/prometheus/exporters/json.nix b/nixos/modules/services/monitoring/prometheus/exporters/json.nix index 82a55bafc98..bd0026b55f7 100644 --- a/nixos/modules/services/monitoring/prometheus/exporters/json.nix +++ b/nixos/modules/services/monitoring/prometheus/exporters/json.nix @@ -27,7 +27,7 @@ in ExecStart = '' ${pkgs.prometheus-json-exporter}/bin/prometheus-json-exporter \ --port ${toString cfg.port} \ - ${cfg.url} ${cfg.configFile} \ + ${cfg.url} ${escapeShellArg cfg.configFile} \ ${concatStringsSep " \\\n " cfg.extraFlags} ''; }; diff --git a/nixos/modules/services/monitoring/prometheus/exporters/mail.nix b/nixos/modules/services/monitoring/prometheus/exporters/mail.nix index 7d8c6fb6140..18c5c4dd162 100644 --- a/nixos/modules/services/monitoring/prometheus/exporters/mail.nix +++ b/nixos/modules/services/monitoring/prometheus/exporters/mail.nix @@ -90,7 +90,7 @@ let Timeout until mails are considered "didn't make it". ''; }; - disableFileDelition = mkOption { + disableFileDeletion = mkOption { type = types.bool; default = false; description = '' @@ -127,8 +127,8 @@ in ''; }; configuration = mkOption { - type = types.submodule exporterOptions; - default = {}; + type = types.nullOr (types.submodule exporterOptions); + default = null; description = '' Specify the mailexporter configuration file to use. ''; @@ -147,8 +147,9 @@ in ExecStart = '' ${pkgs.prometheus-mail-exporter}/bin/mailexporter \ --web.listen-address ${cfg.listenAddress}:${toString cfg.port} \ + --web.telemetry-path ${cfg.telemetryPath} \ --config.file ${ - if cfg.configuration != {} then configurationFile else cfg.configFile + if cfg.configuration != null then configurationFile else (escapeShellArg cfg.configFile) } \ ${concatStringsSep " \\\n " cfg.extraFlags} ''; diff --git a/nixos/modules/services/monitoring/prometheus/exporters/mikrotik.nix b/nixos/modules/services/monitoring/prometheus/exporters/mikrotik.nix new file mode 100644 index 00000000000..62c2cc56847 --- /dev/null +++ b/nixos/modules/services/monitoring/prometheus/exporters/mikrotik.nix @@ -0,0 +1,66 @@ +{ config, lib, pkgs, options }: + +with lib; + +let + cfg = config.services.prometheus.exporters.mikrotik; +in +{ + port = 9436; + extraOpts = { + configFile = mkOption { + type = types.nullOr types.path; + default = null; + description = '' + Path to a mikrotik exporter configuration file. Mutually exclusive with + option. + ''; + example = literalExample "./mikrotik.yml"; + }; + + configuration = mkOption { + type = types.nullOr types.attrs; + default = null; + description = '' + Mikrotik exporter configuration as nix attribute set. Mutually exclusive with + option. + + See + for the description of the configuration file format. + ''; + example = literalExample '' + { + devices = [ + { + name = "my_router"; + address = "10.10.0.1"; + user = "prometheus"; + password = "changeme"; + } + ]; + features = { + bgp = true; + dhcp = true; + routes = true; + optics = true; + }; + } + ''; + }; + }; + serviceOpts = let + configFile = if cfg.configFile != null + then cfg.configFile + else "${pkgs.writeText "mikrotik-exporter.yml" (builtins.toJSON cfg.configuration)}"; + in { + serviceConfig = { + # -port is misleading name, it actually accepts address too + ExecStart = '' + ${pkgs.prometheus-mikrotik-exporter}/bin/mikrotik-exporter \ + -config-file=${escapeShellArg configFile} \ + -port=${cfg.listenAddress}:${toString cfg.port} \ + ${concatStringsSep " \\\n " cfg.extraFlags} + ''; + }; + }; +} diff --git a/nixos/modules/services/monitoring/prometheus/exporters/minio.nix b/nixos/modules/services/monitoring/prometheus/exporters/minio.nix index ab3e3d7d5d5..d6dd62f871b 100644 --- a/nixos/modules/services/monitoring/prometheus/exporters/minio.nix +++ b/nixos/modules/services/monitoring/prometheus/exporters/minio.nix @@ -54,8 +54,8 @@ in ${pkgs.prometheus-minio-exporter}/bin/minio-exporter \ -web.listen-address ${cfg.listenAddress}:${toString cfg.port} \ -minio.server ${cfg.minioAddress} \ - -minio.access-key ${cfg.minioAccessKey} \ - -minio.access-secret ${cfg.minioAccessSecret} \ + -minio.access-key ${escapeShellArg cfg.minioAccessKey} \ + -minio.access-secret ${escapeShellArg cfg.minioAccessSecret} \ ${optionalString cfg.minioBucketStats "-minio.bucket-stats"} \ ${concatStringsSep " \\\n " cfg.extraFlags} ''; diff --git a/nixos/modules/services/monitoring/prometheus/exporters/nextcloud.nix b/nixos/modules/services/monitoring/prometheus/exporters/nextcloud.nix index 5f9a52053f7..aee6bd5e66c 100644 --- a/nixos/modules/services/monitoring/prometheus/exporters/nextcloud.nix +++ b/nixos/modules/services/monitoring/prometheus/exporters/nextcloud.nix @@ -50,7 +50,7 @@ in -u ${cfg.username} \ -t ${cfg.timeout} \ -l ${cfg.url} \ - -p @${cfg.passwordFile} \ + -p ${escapeShellArg "@${cfg.passwordFile}"} \ ${concatStringsSep " \\\n " cfg.extraFlags} ''; }; diff --git a/nixos/modules/services/monitoring/prometheus/exporters/nginx.nix b/nixos/modules/services/monitoring/prometheus/exporters/nginx.nix index ba852fea433..56cddfc55b7 100644 --- a/nixos/modules/services/monitoring/prometheus/exporters/nginx.nix +++ b/nixos/modules/services/monitoring/prometheus/exporters/nginx.nix @@ -30,7 +30,17 @@ in Whether to perform certificate verification for https. ''; }; - + constLabels = mkOption { + type = types.listOf types.str; + default = []; + example = [ + "label1=value1" + "label2=value2" + ]; + description = '' + A list of constant labels that will be used in every metric. + ''; + }; }; serviceOpts = { serviceConfig = { @@ -40,6 +50,7 @@ in --nginx.ssl-verify ${toString cfg.sslVerify} \ --web.listen-address ${cfg.listenAddress}:${toString cfg.port} \ --web.telemetry-path ${cfg.telemetryPath} \ + --prometheus.const-labels ${concatStringsSep "," cfg.constLabels} \ ${concatStringsSep " \\\n " cfg.extraFlags} ''; }; diff --git a/nixos/modules/services/monitoring/prometheus/exporters/postfix.nix b/nixos/modules/services/monitoring/prometheus/exporters/postfix.nix index f40819e826b..3b6ef1631f8 100644 --- a/nixos/modules/services/monitoring/prometheus/exporters/postfix.nix +++ b/nixos/modules/services/monitoring/prometheus/exporters/postfix.nix @@ -67,15 +67,15 @@ in ${pkgs.prometheus-postfix-exporter}/bin/postfix_exporter \ --web.listen-address ${cfg.listenAddress}:${toString cfg.port} \ --web.telemetry-path ${cfg.telemetryPath} \ - --postfix.showq_path ${cfg.showqPath} \ + --postfix.showq_path ${escapeShellArg cfg.showqPath} \ ${concatStringsSep " \\\n " (cfg.extraFlags ++ optional cfg.systemd.enable "--systemd.enable" ++ optional cfg.systemd.enable (if cfg.systemd.slice != null then "--systemd.slice ${cfg.systemd.slice}" else "--systemd.unit ${cfg.systemd.unit}") ++ optional (cfg.systemd.enable && (cfg.systemd.journalPath != null)) - "--systemd.jounal_path ${cfg.systemd.journalPath}" - ++ optional (!cfg.systemd.enable) "--postfix.logfile_path ${cfg.logfilePath}")} + "--systemd.journal_path ${escapeShellArg cfg.systemd.journalPath}" + ++ optional (!cfg.systemd.enable) "--postfix.logfile_path ${escapeShellArg cfg.logfilePath}")} ''; }; }; diff --git a/nixos/modules/services/monitoring/prometheus/exporters/snmp.nix b/nixos/modules/services/monitoring/prometheus/exporters/snmp.nix index fe7ae8a8ac9..045e48a3d0f 100644 --- a/nixos/modules/services/monitoring/prometheus/exporters/snmp.nix +++ b/nixos/modules/services/monitoring/prometheus/exporters/snmp.nix @@ -19,7 +19,7 @@ in configuration = mkOption { type = types.nullOr types.attrs; - default = {}; + default = null; description = '' Snmp exporter configuration as nix attribute set. Mutually exclusive with 'configurationPath' option. ''; @@ -36,15 +36,15 @@ in }; logFormat = mkOption { - type = types.str; - default = "logger:stderr"; + type = types.enum ["logfmt" "json"]; + default = "logfmt"; description = '' - Set the log target and format. + Output format of log messages. ''; }; logLevel = mkOption { - type = types.enum ["debug" "info" "warn" "error" "fatal"]; + type = types.enum ["debug" "info" "warn" "error"]; default = "info"; description = '' Only log messages with the given severity or above. @@ -54,13 +54,13 @@ in serviceOpts = let configFile = if cfg.configurationPath != null then cfg.configurationPath - else "${pkgs.writeText "snmp-eporter-conf.yml" (builtins.toJSON cfg.configuration)}"; + else "${pkgs.writeText "snmp-exporter-conf.yml" (builtins.toJSON cfg.configuration)}"; in { serviceConfig = { ExecStart = '' ${pkgs.prometheus-snmp-exporter.bin}/bin/snmp_exporter \ - --config.file=${configFile} \ - --log.format=${cfg.logFormat} \ + --config.file=${escapeShellArg configFile} \ + --log.format=${escapeShellArg cfg.logFormat} \ --log.level=${cfg.logLevel} \ --web.listen-address=${cfg.listenAddress}:${toString cfg.port} \ ${concatStringsSep " \\\n " cfg.extraFlags} diff --git a/nixos/modules/services/monitoring/prometheus/exporters/unifi.nix b/nixos/modules/services/monitoring/prometheus/exporters/unifi.nix index 9aa0f1b85aa..8d0e8764001 100644 --- a/nixos/modules/services/monitoring/prometheus/exporters/unifi.nix +++ b/nixos/modules/services/monitoring/prometheus/exporters/unifi.nix @@ -55,8 +55,8 @@ in ${pkgs.prometheus-unifi-exporter}/bin/unifi_exporter \ -telemetry.addr ${cfg.listenAddress}:${toString cfg.port} \ -unifi.addr ${cfg.unifiAddress} \ - -unifi.username ${cfg.unifiUsername} \ - -unifi.password ${cfg.unifiPassword} \ + -unifi.username ${escapeShellArg cfg.unifiUsername} \ + -unifi.password ${escapeShellArg cfg.unifiPassword} \ -unifi.timeout ${cfg.unifiTimeout} \ ${optionalString cfg.unifiInsecure "-unifi.insecure" } \ ${concatStringsSep " \\\n " cfg.extraFlags} diff --git a/nixos/modules/services/monitoring/prometheus/exporters/varnish.nix b/nixos/modules/services/monitoring/prometheus/exporters/varnish.nix index 12153fa021e..5b5a6e18fcd 100644 --- a/nixos/modules/services/monitoring/prometheus/exporters/varnish.nix +++ b/nixos/modules/services/monitoring/prometheus/exporters/varnish.nix @@ -74,10 +74,10 @@ in ${pkgs.prometheus-varnish-exporter}/bin/prometheus_varnish_exporter \ --web.listen-address ${cfg.listenAddress}:${toString cfg.port} \ --web.telemetry-path ${cfg.telemetryPath} \ - --varnishstat-path ${cfg.varnishStatPath} \ + --varnishstat-path ${escapeShellArg cfg.varnishStatPath} \ ${concatStringsSep " \\\n " (cfg.extraFlags ++ optional (cfg.healthPath != null) "--web.health-path ${cfg.healthPath}" - ++ optional (cfg.instance != null) "-n ${cfg.instance}" + ++ optional (cfg.instance != null) "-n ${escapeShellArg cfg.instance}" ++ optional cfg.noExit "--no-exit" ++ optional cfg.withGoMetrics "--with-go-metrics" ++ optional cfg.verbose "--verbose" diff --git a/nixos/modules/services/monitoring/prometheus/exporters/wireguard.nix b/nixos/modules/services/monitoring/prometheus/exporters/wireguard.nix index 374f83a2939..04421fc2d25 100644 --- a/nixos/modules/services/monitoring/prometheus/exporters/wireguard.nix +++ b/nixos/modules/services/monitoring/prometheus/exporters/wireguard.nix @@ -59,7 +59,7 @@ in { ${optionalString cfg.verbose "-v"} \ ${optionalString cfg.singleSubnetPerField "-s"} \ ${optionalString cfg.withRemoteIp "-r"} \ - ${optionalString (cfg.wireguardConfig != null) "-n ${cfg.wireguardConfig}"} + ${optionalString (cfg.wireguardConfig != null) "-n ${escapeShellArg cfg.wireguardConfig}"} ''; }; }; diff --git a/nixos/modules/services/monitoring/prometheus/xmpp-alerts.nix b/nixos/modules/services/monitoring/prometheus/xmpp-alerts.nix new file mode 100644 index 00000000000..44b15cb2034 --- /dev/null +++ b/nixos/modules/services/monitoring/prometheus/xmpp-alerts.nix @@ -0,0 +1,47 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.services.prometheus.xmpp-alerts; + + configFile = pkgs.writeText "prometheus-xmpp-alerts.yml" (builtins.toJSON cfg.configuration); + +in + +{ + options.services.prometheus.xmpp-alerts = { + + enable = mkEnableOption "XMPP Web hook service for Alertmanager"; + + configuration = mkOption { + type = types.attrs; + description = "Configuration as attribute set which will be converted to YAML"; + }; + + }; + + config = mkIf cfg.enable { + systemd.services.prometheus-xmpp-alerts = { + wantedBy = [ "multi-user.target" ]; + after = [ "network-online.target" ]; + wants = [ "network-online.target" ]; + serviceConfig = { + ExecStart = "${pkgs.prometheus-xmpp-alerts}/bin/prometheus-xmpp-alerts --config ${configFile}"; + Restart = "on-failure"; + DynamicUser = true; + PrivateTmp = true; + PrivateDevices = true; + ProtectHome = true; + ProtectSystem = "strict"; + ProtectKernelTunables = true; + ProtectKernelModules = true; + ProtectControlGroups = true; + NoNewPrivileges = true; + SystemCallArchitectures = "native"; + RestrictAddressFamilies = [ "AF_INET" "AF_INET6" ]; + SystemCallFilter = [ "@system-service" ]; + }; + }; + }; +} diff --git a/nixos/modules/services/monitoring/statsd.nix b/nixos/modules/services/monitoring/statsd.nix index ea155821ecc..30b2916a992 100644 --- a/nixos/modules/services/monitoring/statsd.nix +++ b/nixos/modules/services/monitoring/statsd.nix @@ -125,8 +125,7 @@ in message = "Only builtin backends (graphite, console, repeater) or backends enumerated in `pkgs.nodePackages` are allowed!"; }) cfg.backends; - users.users = singleton { - name = "statsd"; + users.users.statsd = { uid = config.ids.uids.statsd; description = "Statsd daemon user"; }; diff --git a/nixos/modules/services/monitoring/sysstat.nix b/nixos/modules/services/monitoring/sysstat.nix index d668faa53cc..ca2cff82723 100644 --- a/nixos/modules/services/monitoring/sysstat.nix +++ b/nixos/modules/services/monitoring/sysstat.nix @@ -5,15 +5,10 @@ let in { options = { services.sysstat = { - enable = mkOption { - type = types.bool; - default = false; - description = '' - Whether to enable sar system activity collection. - ''; - }; + enable = mkEnableOption "sar system activity collection"; collect-frequency = mkOption { + type = types.str; default = "*:00/10"; description = '' OnCalendar specification for sysstat-collect @@ -21,6 +16,7 @@ in { }; collect-args = mkOption { + type = types.str; default = "1 1"; description = '' Arguments to pass sa1 when collecting statistics @@ -33,13 +29,13 @@ in { systemd.services.sysstat = { description = "Resets System Activity Logs"; wantedBy = [ "multi-user.target" ]; - preStart = "test -d /var/log/sa || mkdir -p /var/log/sa"; serviceConfig = { User = "root"; RemainAfterExit = true; Type = "oneshot"; ExecStart = "${pkgs.sysstat}/lib/sa/sa1 --boot"; + LogsDirectory = "sa"; }; }; diff --git a/nixos/modules/services/monitoring/telegraf.nix b/nixos/modules/services/monitoring/telegraf.nix index d8786732668..5d131557e8b 100644 --- a/nixos/modules/services/monitoring/telegraf.nix +++ b/nixos/modules/services/monitoring/telegraf.nix @@ -63,10 +63,9 @@ in { }; }; - users.users = [{ - name = "telegraf"; + users.users.telegraf = { uid = config.ids.uids.telegraf; description = "telegraf daemon user"; - }]; + }; }; } diff --git a/nixos/modules/services/monitoring/tuptime.nix b/nixos/modules/services/monitoring/tuptime.nix new file mode 100644 index 00000000000..731260a5c20 --- /dev/null +++ b/nixos/modules/services/monitoring/tuptime.nix @@ -0,0 +1,84 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + + cfg = config.services.tuptime; + +in { + + options.services.tuptime = { + + enable = mkEnableOption "the total uptime service"; + + timer = { + enable = mkOption { + type = types.bool; + default = true; + description = "Whether to regularly log uptime to detect bad shutdowns."; + }; + + period = mkOption { + type = types.str; + default = "*:0/5"; + description = "systemd calendar event"; + }; + }; + }; + + + config = mkIf cfg.enable { + + environment.systemPackages = [ pkgs.tuptime ]; + + users.users.tuptime.description = "tuptime database owner"; + + systemd = { + services = { + + tuptime = { + description = "the total uptime service"; + documentation = [ "man:tuptime(1)" ]; + after = [ "time-sync.target" ]; + wantedBy = [ "multi-user.target" ]; + serviceConfig = { + StateDirectory = "tuptime"; + Type = "oneshot"; + User = "tuptime"; + RemainAfterExit = true; + ExecStart = "${pkgs.tuptime}/bin/tuptime -x"; + ExecStop = "${pkgs.tuptime}/bin/tuptime -xg"; + }; + }; + + tuptime-oneshot = mkIf cfg.timer.enable { + description = "the tuptime scheduled execution unit"; + serviceConfig = { + StateDirectory = "tuptime"; + Type = "oneshot"; + User = "tuptime"; + ExecStart = "${pkgs.tuptime}/bin/tuptime -x"; + }; + }; + }; + + timers.tuptime = mkIf cfg.timer.enable { + description = "the tuptime scheduled execution timer"; + # this timer should be started if the service is started + # even if the timer was previously stopped + wantedBy = [ "tuptime.service" "timers.target" ]; + # this timer should be stopped if the service is stopped + partOf = [ "tuptime.service" ]; + timerConfig = { + OnBootSec = "1min"; + OnCalendar = cfg.timer.period; + Unit = "tuptime-oneshot.service"; + }; + }; + }; + }; + + meta.maintainers = [ maintainers.evils ]; + +} diff --git a/nixos/modules/services/monitoring/ups.nix b/nixos/modules/services/monitoring/ups.nix index 1bdc4e4410f..a45e806d4ad 100644 --- a/nixos/modules/services/monitoring/ups.nix +++ b/nixos/modules/services/monitoring/ups.nix @@ -214,14 +214,12 @@ in environment.NUT_STATEPATH = "/var/lib/nut/"; }; - environment.etc = [ - { source = pkgs.writeText "nut.conf" + environment.etc = { + "nut/nut.conf".source = pkgs.writeText "nut.conf" '' MODE = ${cfg.mode} ''; - target = "nut/nut.conf"; - } - { source = pkgs.writeText "ups.conf" + "nut/ups.conf".source = pkgs.writeText "ups.conf" '' maxstartdelay = ${toString cfg.maxStartDelay} @@ -229,25 +227,15 @@ in "} ''; - target = "nut/ups.conf"; - } - { source = cfg.schedulerRules; - target = "nut/upssched.conf"; - } + "nut/upssched.conf".source = cfg.schedulerRules; # These file are containing private informations and thus should not # be stored inside the Nix store. /* - { source = ; - target = "nut/upsd.conf"; - } - { source = ; - target = "nut/upsd.users"; - } - { source = ; - target = "nut/upsmon.conf; - } + "nut/upsd.conf".source = ""; + "nut/upsd.users".source = ""; + "nut/upsmon.conf".source = ""; */ - ]; + }; power.ups.schedulerRules = mkDefault "${pkgs.nut}/etc/upssched.conf.sample"; @@ -259,21 +247,16 @@ in /* - users.users = [ - { name = "nut"; - uid = 84; + users.users.nut = + { uid = 84; home = "/var/lib/nut"; createHome = true; group = "nut"; description = "UPnP A/V Media Server user"; - } - ]; + }; - users.groups = [ - { name = "nut"; - gid = 84; - } - ]; + users.groups."nut" = + { gid = 84; }; */ }; diff --git a/nixos/modules/services/network-filesystems/ceph.nix b/nixos/modules/services/network-filesystems/ceph.nix index 543a7b25d5d..d17959a6a30 100644 --- a/nixos/modules/services/network-filesystems/ceph.nix +++ b/nixos/modules/services/network-filesystems/ceph.nix @@ -371,15 +371,14 @@ in in generators.toINI {} totalConfig; - users.users = singleton { - name = "ceph"; + users.users.ceph = { uid = config.ids.uids.ceph; description = "Ceph daemon user"; group = "ceph"; extraGroups = [ "disk" ]; }; - users.groups = singleton { - name = "ceph"; + + users.groups.ceph = { gid = config.ids.gids.ceph; }; diff --git a/nixos/modules/services/network-filesystems/davfs2.nix b/nixos/modules/services/network-filesystems/davfs2.nix index 100d458d536..4b6f85e4a2c 100644 --- a/nixos/modules/services/network-filesystems/davfs2.nix +++ b/nixos/modules/services/network-filesystems/davfs2.nix @@ -57,18 +57,19 @@ in environment.systemPackages = [ pkgs.davfs2 ]; environment.etc."davfs2/davfs2.conf".source = cfgFile; - users.groups = optionalAttrs (cfg.davGroup == "davfs2") (singleton { - name = "davfs2"; - gid = config.ids.gids.davfs2; - }); + users.groups = optionalAttrs (cfg.davGroup == "davfs2") { + davfs2.gid = config.ids.gids.davfs2; + }; + + users.users = optionalAttrs (cfg.davUser == "davfs2") { + davfs2 = { + createHome = false; + group = cfg.davGroup; + uid = config.ids.uids.davfs2; + description = "davfs2 user"; + }; + }; - users.users = optionalAttrs (cfg.davUser == "davfs2") (singleton { - name = "davfs2"; - createHome = false; - group = cfg.davGroup; - uid = config.ids.uids.davfs2; - description = "davfs2 user"; - }); }; } diff --git a/nixos/modules/services/network-filesystems/drbd.nix b/nixos/modules/services/network-filesystems/drbd.nix index 4ab74ed8e1c..916e7eaaaa9 100644 --- a/nixos/modules/services/network-filesystems/drbd.nix +++ b/nixos/modules/services/network-filesystems/drbd.nix @@ -47,10 +47,8 @@ let cfg = config.services.drbd; in options drbd usermode_helper=/run/current-system/sw/bin/drbdadm ''; - environment.etc = singleton - { source = pkgs.writeText "drbd.conf" cfg.config; - target = "drbd.conf"; - }; + environment.etc.drbd.conf = + { source = pkgs.writeText "drbd.conf" cfg.config; }; systemd.services.drbd = { after = [ "systemd-udev.settle.service" "network.target" ]; diff --git a/nixos/modules/services/network-filesystems/kbfs.nix b/nixos/modules/services/network-filesystems/kbfs.nix index 263b70d04a5..a43ac656f66 100644 --- a/nixos/modules/services/network-filesystems/kbfs.nix +++ b/nixos/modules/services/network-filesystems/kbfs.nix @@ -1,6 +1,7 @@ { config, lib, pkgs, ... }: with lib; let + inherit (config.security) wrapperDir; cfg = config.services.kbfs; in { @@ -17,6 +18,16 @@ in { description = "Whether to mount the Keybase filesystem."; }; + enableRedirector = mkOption { + type = types.bool; + default = false; + description = '' + Whether to enable the Keybase root redirector service, allowing + any user to access KBFS files via /keybase, + which will show different contents depending on the requester. + ''; + }; + mountPoint = mkOption { type = types.str; default = "%h/keybase"; @@ -41,26 +52,67 @@ in { ###### implementation - config = mkIf cfg.enable { + config = mkIf cfg.enable (mkMerge [ + { + # Upstream: https://github.com/keybase/client/blob/master/packaging/linux/systemd/kbfs.service + systemd.user.services.kbfs = { + description = "Keybase File System"; - systemd.user.services.kbfs = { - description = "Keybase File System"; - requires = [ "keybase.service" ]; - after = [ "keybase.service" ]; - path = [ "/run/wrappers" ]; - unitConfig.ConditionUser = "!@system"; - serviceConfig = { - ExecStartPre = "${pkgs.coreutils}/bin/mkdir -p ${cfg.mountPoint}"; - ExecStart = "${pkgs.kbfs}/bin/kbfsfuse ${toString cfg.extraFlags} ${cfg.mountPoint}"; - ExecStopPost = "/run/wrappers/bin/fusermount -u ${cfg.mountPoint}"; - Restart = "on-failure"; - PrivateTmp = true; + # Note that the "Requires" directive will cause a unit to be restarted whenever its dependency is restarted. + # Do not issue a hard dependency on keybase, because kbfs can reconnect to a restarted service. + # Do not issue a hard dependency on keybase-redirector, because it's ok if it fails (e.g., if it is disabled). + wants = [ "keybase.service" ] ++ optional cfg.enableRedirector "keybase-redirector.service"; + path = [ "/run/wrappers" ]; + unitConfig.ConditionUser = "!@system"; + + serviceConfig = { + Type = "notify"; + # Keybase notifies from a forked process + EnvironmentFile = [ + "-%E/keybase/keybase.autogen.env" + "-%E/keybase/keybase.env" + ]; + ExecStartPre = [ + "${pkgs.coreutils}/bin/mkdir -p \"${cfg.mountPoint}\"" + "-${wrapperDir}/fusermount -uz \"${cfg.mountPoint}\"" + ]; + ExecStart = "${pkgs.kbfs}/bin/kbfsfuse ${toString cfg.extraFlags} \"${cfg.mountPoint}\""; + ExecStop = "${wrapperDir}/fusermount -uz \"${cfg.mountPoint}\""; + Restart = "on-failure"; + PrivateTmp = true; + }; + wantedBy = [ "default.target" ]; }; - wantedBy = [ "default.target" ]; - }; - services.keybase.enable = true; + services.keybase.enable = true; - environment.systemPackages = [ pkgs.kbfs ]; - }; + environment.systemPackages = [ pkgs.kbfs ]; + } + + (mkIf cfg.enableRedirector { + security.wrappers."keybase-redirector".source = "${pkgs.kbfs}/bin/redirector"; + + systemd.tmpfiles.rules = [ "d /keybase 0755 root root 0" ]; + + # Upstream: https://github.com/keybase/client/blob/master/packaging/linux/systemd/keybase-redirector.service + systemd.user.services.keybase-redirector = { + description = "Keybase Root Redirector for KBFS"; + wants = [ "keybase.service" ]; + unitConfig.ConditionUser = "!@system"; + + serviceConfig = { + EnvironmentFile = [ + "-%E/keybase/keybase.autogen.env" + "-%E/keybase/keybase.env" + ]; + # Note: The /keybase mount point is not currently configurable upstream. + ExecStart = "${wrapperDir}/keybase-redirector /keybase"; + Restart = "on-failure"; + PrivateTmp = true; + }; + + wantedBy = [ "default.target" ]; + }; + }) + ]); } diff --git a/nixos/modules/services/network-filesystems/netatalk.nix b/nixos/modules/services/network-filesystems/netatalk.nix index 1dd869043f0..5422d4dd4e2 100644 --- a/nixos/modules/services/network-filesystems/netatalk.nix +++ b/nixos/modules/services/network-filesystems/netatalk.nix @@ -98,13 +98,14 @@ in Set of AFP volumes to export. See man apf.conf for more information. ''; - example = + example = literalExample '' { srv = { path = "/srv"; "read only" = true; "hosts allow" = "10.1.0.0/16 10.2.1.100 2001:0db8:1234::/48"; }; - }; + } + ''; }; extmap = mkOption { diff --git a/nixos/modules/services/network-filesystems/openafs/client.nix b/nixos/modules/services/network-filesystems/openafs/client.nix index 79c4b7aee06..677111814a0 100644 --- a/nixos/modules/services/network-filesystems/openafs/client.nix +++ b/nixos/modules/services/network-filesystems/openafs/client.nix @@ -9,7 +9,7 @@ let cfg = config.services.openafsClient; cellServDB = pkgs.fetchurl { - url = http://dl.central.org/dl/cellservdb/CellServDB.2018-05-14; + url = "http://dl.central.org/dl/cellservdb/CellServDB.2018-05-14"; sha256 = "1wmjn6mmyy2r8p10nlbdzs4nrqxy8a9pjyrdciy5nmppg4053rk2"; }; diff --git a/nixos/modules/services/network-filesystems/rsyncd.nix b/nixos/modules/services/network-filesystems/rsyncd.nix index b17ec3aa930..ccad64cfdb2 100644 --- a/nixos/modules/services/network-filesystems/rsyncd.nix +++ b/nixos/modules/services/network-filesystems/rsyncd.nix @@ -74,13 +74,14 @@ in See man rsyncd.conf for options. ''; type = types.attrsOf (types.attrsOf types.str); - example = + example = literalExample '' { srv = { path = "/srv"; "read only" = "yes"; comment = "Public rsync share."; }; - }; + } + ''; }; user = mkOption { diff --git a/nixos/modules/services/network-filesystems/samba.nix b/nixos/modules/services/network-filesystems/samba.nix index a3c22ce6948..a115590ccaa 100644 --- a/nixos/modules/services/network-filesystems/samba.nix +++ b/nixos/modules/services/network-filesystems/samba.nix @@ -189,7 +189,7 @@ in See man smb.conf for options. ''; type = types.attrsOf (types.attrsOf types.unspecified); - example = + example = literalExample '' { public = { path = "/srv/public"; "read only" = true; @@ -197,7 +197,8 @@ in "guest ok" = "yes"; comment = "Public samba share."; }; - }; + } + ''; }; }; diff --git a/nixos/modules/services/networking/3proxy.nix b/nixos/modules/services/networking/3proxy.nix index 26aa1667946..ae8a4958ca9 100644 --- a/nixos/modules/services/networking/3proxy.nix +++ b/nixos/modules/services/networking/3proxy.nix @@ -334,10 +334,12 @@ in { nsrecord = mkOption { type = types.attrsOf types.str; default = { }; - example = { - "files.local" = "192.168.1.12"; - "site.local" = "192.168.1.43"; - }; + example = literalExample '' + { + "files.local" = "192.168.1.12"; + "site.local" = "192.168.1.43"; + } + ''; description = "Adds static nsrecords."; }; }; diff --git a/nixos/modules/services/networking/bind.nix b/nixos/modules/services/networking/bind.nix index d09c6735e12..e3b95afb3d8 100644 --- a/nixos/modules/services/networking/bind.nix +++ b/nixos/modules/services/networking/bind.nix @@ -178,9 +178,8 @@ in networking.resolvconf.useLocalResolver = mkDefault true; - users.users = singleton - { name = bindUser; - uid = config.ids.uids.bind; + users.users.${bindUser} = + { uid = config.ids.uids.bind; description = "BIND daemon user"; }; diff --git a/nixos/modules/services/networking/bitlbee.nix b/nixos/modules/services/networking/bitlbee.nix index 274b3617160..01a16698384 100644 --- a/nixos/modules/services/networking/bitlbee.nix +++ b/nixos/modules/services/networking/bitlbee.nix @@ -161,16 +161,14 @@ in config = mkMerge [ (mkIf config.services.bitlbee.enable { - users.users = singleton { - name = "bitlbee"; + users.users.bitlbee = { uid = bitlbeeUid; description = "BitlBee user"; home = "/var/lib/bitlbee"; createHome = true; }; - users.groups = singleton { - name = "bitlbee"; + users.groups.bitlbee = { gid = config.ids.gids.bitlbee; }; diff --git a/nixos/modules/services/networking/charybdis.nix b/nixos/modules/services/networking/charybdis.nix index da26246e703..43829d36e41 100644 --- a/nixos/modules/services/networking/charybdis.nix +++ b/nixos/modules/services/networking/charybdis.nix @@ -71,15 +71,13 @@ in config = mkIf cfg.enable (lib.mkMerge [ { - users.users = singleton { - name = cfg.user; + users.users.${cfg.user} = { description = "Charybdis IRC daemon user"; uid = config.ids.uids.ircd; group = cfg.group; }; - users.groups = singleton { - name = cfg.group; + users.groups.${cfg.group} = { gid = config.ids.gids.ircd; }; diff --git a/nixos/modules/services/networking/cjdns.nix b/nixos/modules/services/networking/cjdns.nix index 3fb85b16cbe..5f8ac96b229 100644 --- a/nixos/modules/services/networking/cjdns.nix +++ b/nixos/modules/services/networking/cjdns.nix @@ -29,17 +29,13 @@ let }; # Additional /etc/hosts entries for peers with an associated hostname - cjdnsExtraHosts = import (pkgs.runCommand "cjdns-hosts" {} - # Generate a builder that produces an output usable as a Nix string value - '' - exec >$out - echo \'\' - ${concatStringsSep "\n" (mapAttrsToList (k: v: - optionalString (v.hostname != "") - "echo $(${pkgs.cjdns}/bin/publictoip6 ${v.publicKey}) ${v.hostname}") - (cfg.ETHInterface.connectTo // cfg.UDPInterface.connectTo))} - echo \'\' - ''); + cjdnsExtraHosts = pkgs.runCommandNoCC "cjdns-hosts" {} '' + exec >$out + ${concatStringsSep "\n" (mapAttrsToList (k: v: + optionalString (v.hostname != "") + "echo $(${pkgs.cjdns}/bin/publictoip6 ${v.publicKey}) ${v.hostname}") + (cfg.ETHInterface.connectTo // cfg.UDPInterface.connectTo))} + ''; parseModules = x: x // { connectTo = mapAttrs (name: value: { inherit (value) password publicKey; }) x.connectTo; }; @@ -144,13 +140,15 @@ in connectTo = mkOption { type = types.attrsOf ( types.submodule ( connectToSubmodule ) ); default = { }; - example = { - "192.168.1.1:27313" = { - hostname = "homer.hype"; - password = "5kG15EfpdcKNX3f2GSQ0H1HC7yIfxoCoImnO5FHM"; - publicKey = "371zpkgs8ss387tmr81q04mp0hg1skb51hw34vk1cq644mjqhup0.k"; - }; - }; + example = literalExample '' + { + "192.168.1.1:27313" = { + hostname = "homer.hype"; + password = "5kG15EfpdcKNX3f2GSQ0H1HC7yIfxoCoImnO5FHM"; + publicKey = "371zpkgs8ss387tmr81q04mp0hg1skb51hw34vk1cq644mjqhup0.k"; + }; + } + ''; description = '' Credentials for making UDP tunnels. ''; @@ -189,13 +187,15 @@ in connectTo = mkOption { type = types.attrsOf ( types.submodule ( connectToSubmodule ) ); default = { }; - example = { - "01:02:03:04:05:06" = { - hostname = "homer.hype"; - password = "5kG15EfpdcKNX3f2GSQ0H1HC7yIfxoCoImnO5FHM"; - publicKey = "371zpkgs8ss387tmr81q04mp0hg1skb51hw34vk1cq644mjqhup0.k"; - }; - }; + example = literalExample '' + { + "01:02:03:04:05:06" = { + hostname = "homer.hype"; + password = "5kG15EfpdcKNX3f2GSQ0H1HC7yIfxoCoImnO5FHM"; + publicKey = "371zpkgs8ss387tmr81q04mp0hg1skb51hw34vk1cq644mjqhup0.k"; + }; + } + ''; description = '' Credentials for connecting look similar to UDP credientials except they begin with the mac address. @@ -278,7 +278,7 @@ in }; }; - networking.extraHosts = mkIf cfg.addExtraHosts cjdnsExtraHosts; + networking.hostFiles = mkIf cfg.addExtraHosts [ cjdnsExtraHosts ]; assertions = [ { assertion = ( cfg.ETHInterface.bind != "" || cfg.UDPInterface.bind != "" || cfg.confFile != null ); diff --git a/nixos/modules/services/networking/connman.nix b/nixos/modules/services/networking/connman.nix index 8402be939fe..6ccc2dffb26 100644 --- a/nixos/modules/services/networking/connman.nix +++ b/nixos/modules/services/networking/connman.nix @@ -11,6 +11,7 @@ let ${cfg.extraConfig} ''; + enableIwd = cfg.wifi.backend == "iwd"; in { imports = [ @@ -56,6 +57,17 @@ in { ''; }; + wifi = { + backend = mkOption { + type = types.enum [ "wpa_supplicant" "iwd" ]; + default = "wpa_supplicant"; + description = '' + Specify the Wi-Fi backend used. + Currently supported are or . + ''; + }; + }; + extraFlags = mkOption { type = with types; listOf str; default = [ ]; @@ -65,6 +77,13 @@ in { ''; }; + package = mkOption { + type = types.path; + description = "The connman package / build flavor"; + default = connman; + example = literalExample "pkgs.connmanFull"; + }; + }; }; @@ -77,24 +96,29 @@ in { assertion = !config.networking.useDHCP; message = "You can not use services.connman with networking.useDHCP"; }{ - assertion = config.networking.wireless.enable; - message = "You must use services.connman with networking.wireless"; - }{ + # TODO: connman seemingly can be used along network manager and + # connmanFull supports this - so this should be worked out somehow assertion = !config.networking.networkmanager.enable; message = "You can not use services.connman with networking.networkmanager"; }]; - environment.systemPackages = [ connman ]; + environment.systemPackages = [ cfg.package ]; systemd.services.connman = { description = "Connection service"; wantedBy = [ "multi-user.target" ]; - after = [ "syslog.target" ]; + after = [ "syslog.target" ] ++ optional enableIwd "iwd.service"; + requires = optional enableIwd "iwd.service"; serviceConfig = { Type = "dbus"; BusName = "net.connman"; Restart = "on-failure"; - ExecStart = "${pkgs.connman}/sbin/connmand --config=${configFile} --nodaemon ${toString cfg.extraFlags}"; + ExecStart = toString ([ + "${cfg.package}/sbin/connmand" + "--config=${configFile}" + "--nodaemon" + ] ++ optional enableIwd "--wifi=iwd_agent" + ++ cfg.extraFlags); StandardOutput = "null"; }; }; @@ -107,7 +131,7 @@ in { serviceConfig = { Type = "dbus"; BusName = "net.connman.vpn"; - ExecStart = "${pkgs.connman}/sbin/connman-vpnd -n"; + ExecStart = "${cfg.package}/sbin/connman-vpnd -n"; StandardOutput = "null"; }; }; @@ -117,7 +141,7 @@ in { serviceConfig = { Name = "net.connman.vpn"; before = [ "connman" ]; - ExecStart = "${pkgs.connman}/sbin/connman-vpnd -n"; + ExecStart = "${cfg.package}/sbin/connman-vpnd -n"; User = "root"; SystemdService = "connman-vpn.service"; }; @@ -125,7 +149,12 @@ in { networking = { useDHCP = false; - wireless.enable = true; + wireless = { + enable = mkIf (!enableIwd) true; + iwd = mkIf enableIwd { + enable = true; + }; + }; networkmanager.enable = false; }; }; diff --git a/nixos/modules/services/networking/corerad.nix b/nixos/modules/services/networking/corerad.nix new file mode 100644 index 00000000000..1a2c4aec665 --- /dev/null +++ b/nixos/modules/services/networking/corerad.nix @@ -0,0 +1,46 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.services.corerad; +in { + meta = { + maintainers = with maintainers; [ mdlayher ]; + }; + + options.services.corerad = { + enable = mkEnableOption "CoreRAD IPv6 NDP RA daemon"; + + configFile = mkOption { + type = types.path; + example = literalExample "\"\${pkgs.corerad}/etc/corerad/corerad.toml\""; + description = "Path to CoreRAD TOML configuration file."; + }; + + package = mkOption { + default = pkgs.corerad; + defaultText = literalExample "pkgs.corerad"; + type = types.package; + description = "CoreRAD package to use."; + }; + }; + + config = mkIf cfg.enable { + systemd.services.corerad = { + description = "CoreRAD IPv6 NDP RA daemon"; + after = [ "network.target" ]; + wantedBy = [ "multi-user.target" ]; + serviceConfig = { + LimitNPROC = 512; + LimitNOFILE = 1048576; + CapabilityBoundingSet = "CAP_NET_ADMIN CAP_NET_RAW"; + AmbientCapabilities = "CAP_NET_ADMIN CAP_NET_RAW"; + NoNewPrivileges = true; + DynamicUser = true; + ExecStart = "${getBin cfg.package}/bin/corerad -c=${cfg.configFile}"; + Restart = "on-failure"; + }; + }; + }; +} diff --git a/nixos/modules/services/networking/coturn.nix b/nixos/modules/services/networking/coturn.nix index c430ce5af92..1bfbc307c59 100644 --- a/nixos/modules/services/networking/coturn.nix +++ b/nixos/modules/services/networking/coturn.nix @@ -294,16 +294,14 @@ in { }; config = mkIf cfg.enable { - users.users = [ - { name = "turnserver"; - uid = config.ids.uids.turnserver; + users.users.turnserver = + { uid = config.ids.uids.turnserver; description = "coturn TURN server user"; - } ]; - users.groups = [ - { name = "turnserver"; - gid = config.ids.gids.turnserver; + }; + users.groups.turnserver = + { gid = config.ids.gids.turnserver; members = [ "turnserver" ]; - } ]; + }; systemd.services.coturn = { description = "coturn TURN server"; diff --git a/nixos/modules/services/networking/dhcpcd.nix b/nixos/modules/services/networking/dhcpcd.nix index 7b278603455..c0619211c2f 100644 --- a/nixos/modules/services/networking/dhcpcd.nix +++ b/nixos/modules/services/networking/dhcpcd.nix @@ -19,7 +19,7 @@ let map (i: i.name) (filter (i: if i.useDHCP != null then !i.useDHCP else i.ipv4.addresses != [ ]) interfaces) ++ mapAttrsToList (i: _: i) config.networking.sits ++ concatLists (attrValues (mapAttrs (n: v: v.interfaces) config.networking.bridges)) - ++ concatLists (attrValues (mapAttrs (n: v: v.interfaces) config.networking.vswitches)) + ++ flatten (concatMap (i: attrNames (filterAttrs (_: config: config.type != "internal") i.interfaces)) (attrValues config.networking.vswitches)) ++ concatLists (attrValues (mapAttrs (n: v: v.interfaces) config.networking.bonds)) ++ config.networking.dhcpcd.denyInterfaces; @@ -59,6 +59,16 @@ let # Use the list of allowed interfaces if specified ${optionalString (allowInterfaces != null) "allowinterfaces ${toString allowInterfaces}"} + # Immediately fork to background if specified, otherwise wait for IP address to be assigned + ${{ + background = "background"; + any = "waitip"; + ipv4 = "waitip 4"; + ipv6 = "waitip 6"; + both = "waitip 4\nwaitip 6"; + if-carrier-up = ""; + }.${cfg.wait}} + ${cfg.extraConfig} ''; @@ -146,6 +156,21 @@ in ''; }; + networking.dhcpcd.wait = mkOption { + type = types.enum [ "background" "any" "ipv4" "ipv6" "both" "if-carrier-up" ]; + default = "any"; + description = '' + This option specifies when the dhcpcd service will fork to background. + If set to "background", dhcpcd will fork to background immediately. + If set to "ipv4" or "ipv6", dhcpcd will wait for the corresponding IP + address to be assigned. If set to "any", dhcpcd will wait for any type + (IPv4 or IPv6) to be assigned. If set to "both", dhcpcd will wait for + both an IPv4 and an IPv6 address before forking. + The option "if-carrier-up" is equivalent to "any" if either ethernet + is plugged nor WiFi is powered, and to "background" otherwise. + ''; + }; + }; @@ -165,6 +190,8 @@ in before = [ "network-online.target" ]; after = [ "systemd-udev-settle.service" ]; + restartTriggers = [ exitHook ]; + # Stopping dhcpcd during a reconfiguration is undesirable # because it brings down the network interfaces configured by # dhcpcd. So do a "systemctl restart" instead. @@ -177,7 +204,7 @@ in serviceConfig = { Type = "forking"; PIDFile = "/run/dhcpcd.pid"; - ExecStart = "@${dhcpcd}/sbin/dhcpcd dhcpcd -w --quiet ${optionalString cfg.persistent "--persistent"} --config ${dhcpcdConf}"; + ExecStart = "@${dhcpcd}/sbin/dhcpcd dhcpcd --quiet ${optionalString cfg.persistent "--persistent"} --config ${dhcpcdConf}"; ExecReload = "${dhcpcd}/sbin/dhcpcd --rebind"; Restart = "always"; }; @@ -185,11 +212,7 @@ in environment.systemPackages = [ dhcpcd ]; - environment.etc = - [ { source = exitHook; - target = "dhcpcd.exit-hook"; - } - ]; + environment.etc."dhcpcd.exit-hook".source = exitHook; powerManagement.resumeCommands = mkIf config.systemd.services.dhcpcd.enable '' diff --git a/nixos/modules/services/networking/dnscache.nix b/nixos/modules/services/networking/dnscache.nix index d123bca9321..d06032daecc 100644 --- a/nixos/modules/services/networking/dnscache.nix +++ b/nixos/modules/services/networking/dnscache.nix @@ -61,10 +61,12 @@ in { Table of {hostname: server} pairs to use as authoritative servers for hosts (and subhosts). If entry for @ is not specified predefined list of root servers is used. ''; - example = { - "@" = ["8.8.8.8" "8.8.4.4"]; - "example.com" = ["192.168.100.100"]; - }; + example = literalExample '' + { + "@" = ["8.8.8.8" "8.8.4.4"]; + "example.com" = ["192.168.100.100"]; + } + ''; }; forwardOnly = mkOption { diff --git a/nixos/modules/services/networking/dnschain.nix b/nixos/modules/services/networking/dnschain.nix index 2586f2d74e9..003609ea705 100644 --- a/nixos/modules/services/networking/dnschain.nix +++ b/nixos/modules/services/networking/dnschain.nix @@ -147,8 +147,7 @@ in ''; }; - users.users = singleton { - name = username; + users.users.${username} = { description = "DNSChain daemon user"; home = dataDir; createHome = true; diff --git a/nixos/modules/services/networking/dnscrypt-proxy.nix b/nixos/modules/services/networking/dnscrypt-proxy.nix deleted file mode 100644 index 8edcf925dbf..00000000000 --- a/nixos/modules/services/networking/dnscrypt-proxy.nix +++ /dev/null @@ -1,328 +0,0 @@ -{ config, lib, pkgs, ... }: -with lib; - -let - cfg = config.services.dnscrypt-proxy; - - stateDirectory = "/var/lib/dnscrypt-proxy"; - - # The minisign public key used to sign the upstream resolver list. - # This is somewhat more flexible than preloading the key as an - # embedded string. - upstreamResolverListPubKey = pkgs.fetchurl { - url = https://raw.githubusercontent.com/dyne/dnscrypt-proxy/master/minisign.pub; - sha256 = "18lnp8qr6ghfc2sd46nn1rhcpr324fqlvgsp4zaigw396cd7vnnh"; - }; - - # Internal flag indicating whether the upstream resolver list is used. - useUpstreamResolverList = cfg.customResolver == null; - - # The final local address. - localAddress = "${cfg.localAddress}:${toString cfg.localPort}"; - - # The final resolvers list path. - resolverList = "${stateDirectory}/dnscrypt-resolvers.csv"; - - # Build daemon command line - - resolverArgs = - if (cfg.customResolver == null) - then - [ "-L ${resolverList}" - "-R ${cfg.resolverName}" - ] - else with cfg.customResolver; - [ "-N ${name}" - "-k ${key}" - "-r ${address}:${toString port}" - ]; - - daemonArgs = - [ "-a ${localAddress}" ] - ++ resolverArgs - ++ cfg.extraArgs; -in - -{ - meta = { - maintainers = with maintainers; [ joachifm ]; - doc = ./dnscrypt-proxy.xml; - }; - - options = { - # Before adding another option, consider whether it could - # equally well be passed via extraArgs. - - services.dnscrypt-proxy = { - enable = mkOption { - default = false; - type = types.bool; - description = "Whether to enable the DNSCrypt client proxy"; - }; - - localAddress = mkOption { - default = "127.0.0.1"; - type = types.str; - description = '' - Listen for DNS queries to relay on this address. The only reason to - change this from its default value is to proxy queries on behalf - of other machines (typically on the local network). - ''; - }; - - localPort = mkOption { - default = 53; - type = types.int; - description = '' - Listen for DNS queries to relay on this port. The default value - assumes that the DNSCrypt proxy should relay DNS queries directly. - When running as a forwarder for another DNS client, set this option - to a different value; otherwise leave the default. - ''; - }; - - resolverName = mkOption { - default = "random"; - example = "dnscrypt.eu-nl"; - type = types.nullOr types.str; - description = '' - The name of the DNSCrypt resolver to use, taken from - ${resolverList}. The default is to - pick a random non-logging resolver that supports DNSSEC. - ''; - }; - - customResolver = mkOption { - default = null; - description = '' - Use an unlisted resolver (e.g., a private DNSCrypt provider). For - advanced users only. If specified, this option takes precedence. - ''; - type = types.nullOr (types.submodule ({ ... }: { options = { - address = mkOption { - type = types.str; - description = "IP address"; - example = "208.67.220.220"; - }; - - port = mkOption { - type = types.int; - description = "Port"; - default = 443; - }; - - name = mkOption { - type = types.str; - description = "Fully qualified domain name"; - example = "2.dnscrypt-cert.example.com"; - }; - - key = mkOption { - type = types.str; - description = "Public key"; - example = "B735:1140:206F:225D:3E2B:D822:D7FD:691E:A1C3:3CC8:D666:8D0C:BE04:BFAB:CA43:FB79"; - }; - }; })); - }; - - extraArgs = mkOption { - default = []; - type = types.listOf types.str; - description = '' - Additional command-line arguments passed verbatim to the daemon. - See dnscrypt-proxy - 8 for details. - ''; - example = [ "-X libdcplugin_example_cache.so,--min-ttl=60" ]; - }; - }; - }; - - config = mkIf cfg.enable (mkMerge [{ - assertions = [ - { assertion = (cfg.customResolver != null) || (cfg.resolverName != null); - message = "please configure upstream DNSCrypt resolver"; - } - ]; - - # make man 8 dnscrypt-proxy work - environment.systemPackages = [ pkgs.dnscrypt-proxy ]; - - users.users.dnscrypt-proxy = { - description = "dnscrypt-proxy daemon user"; - isSystemUser = true; - group = "dnscrypt-proxy"; - }; - users.groups.dnscrypt-proxy = {}; - - systemd.sockets.dnscrypt-proxy = { - description = "dnscrypt-proxy listening socket"; - documentation = [ "man:dnscrypt-proxy(8)" ]; - - wantedBy = [ "sockets.target" ]; - - socketConfig = { - ListenStream = localAddress; - ListenDatagram = localAddress; - }; - }; - - systemd.services.dnscrypt-proxy = { - description = "dnscrypt-proxy daemon"; - documentation = [ "man:dnscrypt-proxy(8)" ]; - - before = [ "nss-lookup.target" ]; - after = [ "network.target" ]; - requires = [ "dnscrypt-proxy.socket "]; - - serviceConfig = { - NonBlocking = "true"; - ExecStart = "${pkgs.dnscrypt-proxy}/bin/dnscrypt-proxy ${toString daemonArgs}"; - ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID"; - - User = "dnscrypt-proxy"; - - PrivateTmp = true; - PrivateDevices = true; - ProtectHome = true; - }; - }; - } - - (mkIf config.security.apparmor.enable { - systemd.services.dnscrypt-proxy.after = [ "apparmor.service" ]; - - security.apparmor.profiles = singleton (pkgs.writeText "apparmor-dnscrypt-proxy" '' - ${pkgs.dnscrypt-proxy}/bin/dnscrypt-proxy { - /dev/null rw, - /dev/random r, - /dev/urandom r, - - /etc/passwd r, - /etc/group r, - ${config.environment.etc."nsswitch.conf".source} r, - - ${getLib pkgs.glibc}/lib/*.so mr, - ${pkgs.tzdata}/share/zoneinfo/** r, - - network inet stream, - network inet6 stream, - network inet dgram, - network inet6 dgram, - - ${getLib pkgs.dnscrypt-proxy}/lib/dnscrypt-proxy/libdcplugin*.so mr, - - ${getLib pkgs.gcc.cc}/lib/libssp.so.* mr, - ${getLib pkgs.libsodium}/lib/libsodium.so.* mr, - ${getLib pkgs.systemd}/lib/libsystemd.so.* mr, - ${getLib pkgs.utillinuxMinimal.out}/lib/libmount.so.* mr, - ${getLib pkgs.utillinuxMinimal.out}/lib/libblkid.so.* mr, - ${getLib pkgs.utillinuxMinimal.out}/lib/libuuid.so.* mr, - ${getLib pkgs.xz}/lib/liblzma.so.* mr, - ${getLib pkgs.libgcrypt}/lib/libgcrypt.so.* mr, - ${getLib pkgs.libgpgerror}/lib/libgpg-error.so.* mr, - ${getLib pkgs.libcap}/lib/libcap.so.* mr, - ${getLib pkgs.lz4}/lib/liblz4.so.* mr, - ${getLib pkgs.attr}/lib/libattr.so.* mr, # */ - - ${resolverList} r, - - /run/systemd/notify rw, - } - ''); - }) - - (mkIf useUpstreamResolverList { - systemd.services.init-dnscrypt-proxy-statedir = { - description = "Initialize dnscrypt-proxy state directory"; - - wantedBy = [ "dnscrypt-proxy.service" ]; - before = [ "dnscrypt-proxy.service" ]; - - script = '' - mkdir -pv ${stateDirectory} - chown -c dnscrypt-proxy:dnscrypt-proxy ${stateDirectory} - cp -uv \ - ${pkgs.dnscrypt-proxy}/share/dnscrypt-proxy/dnscrypt-resolvers.csv \ - ${stateDirectory} - ''; - - serviceConfig = { - Type = "oneshot"; - RemainAfterExit = true; - }; - }; - - systemd.services.update-dnscrypt-resolvers = { - description = "Update list of DNSCrypt resolvers"; - - requires = [ "init-dnscrypt-proxy-statedir.service" ]; - after = [ "init-dnscrypt-proxy-statedir.service" ]; - - path = with pkgs; [ curl diffutils dnscrypt-proxy minisign ]; - script = '' - cd ${stateDirectory} - domain=raw.githubusercontent.com - get="curl -fSs --resolve $domain:443:$(hostip -r 8.8.8.8 $domain | head -1)" - $get -o dnscrypt-resolvers.csv.tmp \ - https://$domain/dyne/dnscrypt-proxy/master/dnscrypt-resolvers.csv - $get -o dnscrypt-resolvers.csv.minisig.tmp \ - https://$domain/dyne/dnscrypt-proxy/master/dnscrypt-resolvers.csv.minisig - mv dnscrypt-resolvers.csv.minisig{.tmp,} - if ! minisign -q -V -p ${upstreamResolverListPubKey} \ - -m dnscrypt-resolvers.csv.tmp -x dnscrypt-resolvers.csv.minisig ; then - echo "failed to verify resolver list!" >&2 - exit 1 - fi - [[ -f dnscrypt-resolvers.csv ]] && mv dnscrypt-resolvers.csv{,.old} - mv dnscrypt-resolvers.csv{.tmp,} - if cmp dnscrypt-resolvers.csv{,.old} ; then - echo "no change" - else - echo "resolver list updated" - fi - ''; - - serviceConfig = { - PrivateTmp = true; - PrivateDevices = true; - ProtectHome = true; - ProtectSystem = "strict"; - ReadWritePaths = "${dirOf stateDirectory} ${stateDirectory}"; - SystemCallFilter = "~@mount"; - }; - }; - - systemd.timers.update-dnscrypt-resolvers = { - wantedBy = [ "timers.target" ]; - timerConfig = { - OnBootSec = "5min"; - OnUnitActiveSec = "6h"; - }; - }; - }) - ]); - - imports = [ - (mkRenamedOptionModule [ "services" "dnscrypt-proxy" "port" ] [ "services" "dnscrypt-proxy" "localPort" ]) - - (mkChangedOptionModule - [ "services" "dnscrypt-proxy" "tcpOnly" ] - [ "services" "dnscrypt-proxy" "extraArgs" ] - (config: - let val = getAttrFromPath [ "services" "dnscrypt-proxy" "tcpOnly" ] config; in - optional val "-T")) - - (mkChangedOptionModule - [ "services" "dnscrypt-proxy" "ephemeralKeys" ] - [ "services" "dnscrypt-proxy" "extraArgs" ] - (config: - let val = getAttrFromPath [ "services" "dnscrypt-proxy" "ephemeralKeys" ] config; in - optional val "-E")) - - (mkRemovedOptionModule [ "services" "dnscrypt-proxy" "resolverList" ] '' - The current resolver listing from upstream is always used - unless a custom resolver is specified. - '') - ]; -} diff --git a/nixos/modules/services/networking/dnscrypt-proxy.xml b/nixos/modules/services/networking/dnscrypt-proxy.xml deleted file mode 100644 index afc7880392a..00000000000 --- a/nixos/modules/services/networking/dnscrypt-proxy.xml +++ /dev/null @@ -1,66 +0,0 @@ - - DNSCrypt client proxy - - The DNSCrypt client proxy relays DNS queries to a DNSCrypt enabled upstream - resolver. The traffic between the client and the upstream resolver is - encrypted and authenticated, mitigating the risk of MITM attacks, DNS - poisoning attacks, and third-party snooping (assuming the upstream is - trustworthy). - - - Basic configuration - - - To enable the client proxy, set - - = true; - - - - - Enabling the client proxy does not alter the system nameserver; to relay - local queries, prepend 127.0.0.1 to - . - - - - As a forwarder for another DNS client - - - To run the DNSCrypt proxy client as a forwarder for another DNS client, - change the default proxy listening port to a non-standard value and point - the other client to it: - - = 43; - - - - - dnsmasq - - -{ - = true; - = [ "127.0.0.1#43" ]; -} - - - - - - unbound - - -{ - = true; - = [ "127.0.0.1@43" ]; -} - - - - - diff --git a/nixos/modules/services/networking/dnscrypt-proxy2.nix b/nixos/modules/services/networking/dnscrypt-proxy2.nix new file mode 100644 index 00000000000..e48eb729103 --- /dev/null +++ b/nixos/modules/services/networking/dnscrypt-proxy2.nix @@ -0,0 +1,61 @@ +{ config, lib, pkgs, ... }: with lib; + +let + cfg = config.services.dnscrypt-proxy2; +in + +{ + options.services.dnscrypt-proxy2 = { + enable = mkEnableOption "dnscrypt-proxy2"; + + settings = mkOption { + description = '' + Attrset that is converted and passed as TOML config file. + For available params, see: + ''; + example = literalExample '' + { + sources.public-resolvers = { + urls = [ "https://download.dnscrypt.info/resolvers-list/v2/public-resolvers.md" ]; + cache_file = "public-resolvers.md"; + minisign_key = "RWQf6LRCGA9i53mlYecO4IzT51TGPpvWucNSCh1CBM0QTaLn73Y7GFO3"; + refresh_delay = 72; + }; + } + ''; + type = types.attrs; + default = {}; + }; + + configFile = mkOption { + description = '' + Path to TOML config file. See: + If this option is set, it will override any configuration done in options.services.dnscrypt-proxy2.settings. + ''; + example = "/etc/dnscrypt-proxy/dnscrypt-proxy.toml"; + type = types.path; + default = pkgs.runCommand "dnscrypt-proxy.toml" { + json = builtins.toJSON cfg.settings; + passAsFile = [ "json" ]; + } '' + ${pkgs.remarshal}/bin/json2toml < $jsonPath > $out + ''; + defaultText = literalExample "TOML file generated from services.dnscrypt-proxy2.settings"; + }; + }; + + config = mkIf cfg.enable { + + networking.nameservers = lib.mkDefault [ "127.0.0.1" ]; + + systemd.services.dnscrypt-proxy2 = { + after = [ "network.target" ]; + wantedBy = [ "multi-user.target" ]; + serviceConfig = { + AmbientCapabilities = "CAP_NET_BIND_SERVICE"; + DynamicUser = true; + ExecStart = "${pkgs.dnscrypt-proxy2}/bin/dnscrypt-proxy -config ${cfg.configFile}"; + }; + }; + }; +} diff --git a/nixos/modules/services/networking/dnsmasq.nix b/nixos/modules/services/networking/dnsmasq.nix index 714a5903bff..377d7bc5705 100644 --- a/nixos/modules/services/networking/dnsmasq.nix +++ b/nixos/modules/services/networking/dnsmasq.nix @@ -86,8 +86,7 @@ in services.dbus.packages = [ dnsmasq ]; - users.users = singleton { - name = "dnsmasq"; + users.users.dnsmasq = { uid = config.ids.uids.dnsmasq; description = "Dnsmasq daemon user"; }; diff --git a/nixos/modules/services/networking/ejabberd.nix b/nixos/modules/services/networking/ejabberd.nix index 6a38f85c48a..a5af25b983b 100644 --- a/nixos/modules/services/networking/ejabberd.nix +++ b/nixos/modules/services/networking/ejabberd.nix @@ -94,18 +94,18 @@ in { config = mkIf cfg.enable { environment.systemPackages = [ cfg.package ]; - users.users = optionalAttrs (cfg.user == "ejabberd") (singleton - { name = "ejabberd"; + users.users = optionalAttrs (cfg.user == "ejabberd") { + ejabberd = { group = cfg.group; home = cfg.spoolDir; createHome = true; uid = config.ids.uids.ejabberd; - }); + }; + }; - users.groups = optionalAttrs (cfg.group == "ejabberd") (singleton - { name = "ejabberd"; - gid = config.ids.gids.ejabberd; - }); + users.groups = optionalAttrs (cfg.group == "ejabberd") { + ejabberd.gid = config.ids.gids.ejabberd; + }; systemd.services.ejabberd = { description = "ejabberd server"; diff --git a/nixos/modules/services/networking/firewall.nix b/nixos/modules/services/networking/firewall.nix index 15aaf741067..cdc3a172ea7 100644 --- a/nixos/modules/services/networking/firewall.nix +++ b/nixos/modules/services/networking/firewall.nix @@ -546,9 +546,13 @@ in options nf_conntrack nf_conntrack_helper=1 ''; - assertions = [ { assertion = (cfg.checkReversePath != false) || kernelHasRPFilter; - message = "This kernel does not support rpfilter"; } - ]; + assertions = [ + # This is approximately "checkReversePath -> kernelHasRPFilter", + # but the checkReversePath option can include non-boolean + # values. + { assertion = cfg.checkReversePath == false || kernelHasRPFilter; + message = "This kernel does not support rpfilter"; } + ]; systemd.services.firewall = { description = "Firewall"; diff --git a/nixos/modules/services/networking/freeradius.nix b/nixos/modules/services/networking/freeradius.nix index e192b70c129..f3fdd576b65 100644 --- a/nixos/modules/services/networking/freeradius.nix +++ b/nixos/modules/services/networking/freeradius.nix @@ -10,14 +10,15 @@ let { description = "FreeRadius server"; wantedBy = ["multi-user.target"]; - after = ["network-online.target"]; - wants = ["network-online.target"]; + after = ["network.target"]; + wants = ["network.target"]; preStart = '' ${pkgs.freeradius}/bin/radiusd -C -d ${cfg.configDir} -l stdout ''; serviceConfig = { - ExecStart = "${pkgs.freeradius}/bin/radiusd -f -d ${cfg.configDir} -l stdout -xx"; + ExecStart = "${pkgs.freeradius}/bin/radiusd -f -d ${cfg.configDir} -l stdout" + + optionalString cfg.debug " -xx"; ExecReload = [ "${pkgs.freeradius}/bin/radiusd -C -d ${cfg.configDir} -l stdout" "${pkgs.coreutils}/bin/kill -HUP $MAINPID" @@ -41,6 +42,16 @@ let ''; }; + debug = mkOption { + type = types.bool; + default = false; + description = '' + Whether to enable debug logging for freeradius (-xx + option). This should not be left on, since it includes + sensitive data such as passwords in the logs. + ''; + }; + }; in @@ -66,6 +77,7 @@ in }; systemd.services.freeradius = freeradiusService cfg; + warnings = optional cfg.debug "Freeradius debug logging is enabled. This will log passwords in plaintext to the journal!"; }; diff --git a/nixos/modules/services/networking/gale.nix b/nixos/modules/services/networking/gale.nix index 7083d87c407..cb954fd836b 100644 --- a/nixos/modules/services/networking/gale.nix +++ b/nixos/modules/services/networking/gale.nix @@ -104,14 +104,13 @@ in systemPackages = [ pkgs.gale ]; }; - users.users = [{ - name = cfg.user; + users.users.${cfg.user} = { description = "Gale daemon"; uid = config.ids.uids.gale; group = cfg.group; home = home; createHome = true; - }]; + }; users.groups = [{ name = cfg.group; diff --git a/nixos/modules/services/networking/git-daemon.nix b/nixos/modules/services/networking/git-daemon.nix index a638a3083fb..52c895215fb 100644 --- a/nixos/modules/services/networking/git-daemon.nix +++ b/nixos/modules/services/networking/git-daemon.nix @@ -104,16 +104,16 @@ in config = mkIf cfg.enable { - users.users = if cfg.user != "git" then {} else singleton - { name = "git"; + users.users = optionalAttrs (cfg.user == "git") { + git = { uid = config.ids.uids.git; description = "Git daemon user"; }; + }; - users.groups = if cfg.group != "git" then {} else singleton - { name = "git"; - gid = config.ids.gids.git; - }; + users.groups = optionalAttrs (cfg.group == "git") { + git.gid = config.ids.gids.git; + }; systemd.services.git-daemon = { after = [ "network.target" ]; diff --git a/nixos/modules/services/networking/gnunet.nix b/nixos/modules/services/networking/gnunet.nix index 178a832c166..69d4ed04775 100644 --- a/nixos/modules/services/networking/gnunet.nix +++ b/nixos/modules/services/networking/gnunet.nix @@ -42,6 +42,7 @@ in services.gnunet = { enable = mkOption { + type = types.bool; default = false; description = '' Whether to run the GNUnet daemon. GNUnet is GNU's anonymous @@ -51,6 +52,7 @@ in fileSharing = { quota = mkOption { + type = types.int; default = 1024; description = '' Maximum file system usage (in MiB) for file sharing. @@ -60,6 +62,7 @@ in udp = { port = mkOption { + type = types.port; default = 2086; # assigned by IANA description = '' The UDP port for use by GNUnet. @@ -69,6 +72,7 @@ in tcp = { port = mkOption { + type = types.port; default = 2086; # assigned by IANA description = '' The TCP port for use by GNUnet. @@ -78,6 +82,7 @@ in load = { maxNetDownBandwidth = mkOption { + type = types.int; default = 50000; description = '' Maximum bandwidth usage (in bits per second) for GNUnet @@ -86,6 +91,7 @@ in }; maxNetUpBandwidth = mkOption { + type = types.int; default = 50000; description = '' Maximum bandwidth usage (in bits per second) for GNUnet @@ -94,6 +100,7 @@ in }; hardNetUpBandwidth = mkOption { + type = types.int; default = 0; description = '' Hard bandwidth limit (in bits per second) when uploading @@ -111,6 +118,7 @@ in }; extraOptions = mkOption { + type = types.lines; default = ""; description = '' Additional options that will be copied verbatim in `gnunet.conf'. diff --git a/nixos/modules/services/networking/hans.nix b/nixos/modules/services/networking/hans.nix index 4f60300f5ff..8334dc68d62 100644 --- a/nixos/modules/services/networking/hans.nix +++ b/nixos/modules/services/networking/hans.nix @@ -135,8 +135,7 @@ in }; }; - users.users = singleton { - name = hansUser; + users.users.${hansUser} = { description = "Hans daemon user"; isSystemUser = true; }; diff --git a/nixos/modules/services/networking/haproxy.nix b/nixos/modules/services/networking/haproxy.nix index aff71e5e97d..4678829986c 100644 --- a/nixos/modules/services/networking/haproxy.nix +++ b/nixos/modules/services/networking/haproxy.nix @@ -26,6 +26,18 @@ with lib; ''; }; + user = mkOption { + type = types.str; + default = "haproxy"; + description = "User account under which haproxy runs."; + }; + + group = mkOption { + type = types.str; + default = "haproxy"; + description = "Group account under which haproxy runs."; + }; + config = mkOption { type = types.nullOr types.lines; default = null; @@ -49,7 +61,8 @@ with lib; after = [ "network.target" ]; wantedBy = [ "multi-user.target" ]; serviceConfig = { - DynamicUser = true; + User = cfg.user; + Group = cfg.group; Type = "notify"; # when running the config test, don't be quiet so we can see what goes wrong ExecStartPre = "${pkgs.haproxy}/sbin/haproxy -c -f ${haproxyCfg}"; @@ -60,5 +73,16 @@ with lib; AmbientCapabilities = "CAP_NET_BIND_SERVICE"; }; }; + + users.users = optionalAttrs (cfg.user == "haproxy") { + haproxy = { + group = cfg.group; + isSystemUser = true; + }; + }; + + users.groups = optionalAttrs (cfg.group == "haproxy") { + haproxy = {}; + }; }; } diff --git a/nixos/modules/services/networking/i2pd.nix b/nixos/modules/services/networking/i2pd.nix index e2c2275b551..93a21fd4c97 100644 --- a/nixos/modules/services/networking/i2pd.nix +++ b/nixos/modules/services/networking/i2pd.nix @@ -159,7 +159,7 @@ let (strOpt "defaulturl" cfg.addressbook.defaulturl) ] ++ (optionalEmptyList "subscriptions" cfg.addressbook.subscriptions) ++ (flip map - (collect (proto: proto ? port && proto ? address && proto ? name) cfg.proto) + (collect (proto: proto ? port && proto ? address) cfg.proto) (proto: let protoOpts = [ (sec proto.name) (boolOpt "enabled" proto.enable) @@ -606,7 +606,7 @@ in outTunnels = mkOption { default = {}; - type = with types; loaOf (submodule ( + type = with types; attrsOf (submodule ( { name, ... }: { options = { destinationPort = mkOption { @@ -627,7 +627,7 @@ in inTunnels = mkOption { default = {}; - type = with types; loaOf (submodule ( + type = with types; attrsOf (submodule ( { name, ... }: { options = { inPort = mkOption { diff --git a/nixos/modules/services/networking/iodine.nix b/nixos/modules/services/networking/iodine.nix index 97b5843bbcf..46051d7044b 100644 --- a/nixos/modules/services/networking/iodine.nix +++ b/nixos/modules/services/networking/iodine.nix @@ -9,6 +9,8 @@ let iodinedUser = "iodined"; + /* is this path made unreadable by ProtectHome = true ? */ + isProtected = x: hasPrefix "/root" x || hasPrefix "/home" x; in { imports = [ @@ -35,45 +37,48 @@ in corresponding attribute name. ''; example = literalExample '' - { - foo = { - server = "tunnel.mdomain.com"; - relay = "8.8.8.8"; - extraConfig = "-v"; + { + foo = { + server = "tunnel.mdomain.com"; + relay = "8.8.8.8"; + extraConfig = "-v"; + } } - } ''; - type = types.attrsOf (types.submodule ( - { - options = { - server = mkOption { - type = types.str; - default = ""; - description = "Domain or Subdomain of server running iodined"; - example = "tunnel.mydomain.com"; - }; + type = types.attrsOf ( + types.submodule ( + { + options = { + server = mkOption { + type = types.str; + default = ""; + description = "Hostname of server running iodined"; + example = "tunnel.mydomain.com"; + }; - relay = mkOption { - type = types.str; - default = ""; - description = "DNS server to use as a intermediate relay to the iodined server"; - example = "8.8.8.8"; - }; + relay = mkOption { + type = types.str; + default = ""; + description = "DNS server to use as an intermediate relay to the iodined server"; + example = "8.8.8.8"; + }; - extraConfig = mkOption { - type = types.str; - default = ""; - description = "Additional command line parameters"; - example = "-l 192.168.1.10 -p 23"; - }; + extraConfig = mkOption { + type = types.str; + default = ""; + description = "Additional command line parameters"; + example = "-l 192.168.1.10 -p 23"; + }; - passwordFile = mkOption { - type = types.str; - default = ""; - description = "File that contains password"; - }; - }; - })); + passwordFile = mkOption { + type = types.str; + default = ""; + description = "Path to a file containing the password."; + }; + }; + } + ) + ); }; server = { @@ -121,34 +126,69 @@ in boot.kernelModules = [ "tun" ]; systemd.services = - let - createIodineClientService = name: cfg: - { - description = "iodine client - ${name}"; - after = [ "network.target" ]; - wantedBy = [ "multi-user.target" ]; - script = "exec ${pkgs.iodine}/bin/iodine -f -u ${iodinedUser} ${cfg.extraConfig} ${optionalString (cfg.passwordFile != "") "< \"${cfg.passwordFile}\""} ${cfg.relay} ${cfg.server}"; - serviceConfig = { - RestartSec = "30s"; - Restart = "always"; - }; - }; - in - listToAttrs ( - mapAttrsToList - (name: value: nameValuePair "iodine-${name}" (createIodineClientService name value)) - cfg.clients - ) // { - iodined = mkIf (cfg.server.enable) { - description = "iodine, ip over dns server daemon"; - after = [ "network.target" ]; - wantedBy = [ "multi-user.target" ]; - script = "exec ${pkgs.iodine}/bin/iodined -f -u ${iodinedUser} ${cfg.server.extraConfig} ${optionalString (cfg.server.passwordFile != "") "< \"${cfg.server.passwordFile}\""} ${cfg.server.ip} ${cfg.server.domain}"; - }; - }; + let + createIodineClientService = name: cfg: + { + description = "iodine client - ${name}"; + after = [ "network.target" ]; + wantedBy = [ "multi-user.target" ]; + script = "exec ${pkgs.iodine}/bin/iodine -f -u ${iodinedUser} ${cfg.extraConfig} ${optionalString (cfg.passwordFile != "") "< \"${builtins.toString cfg.passwordFile}\""} ${cfg.relay} ${cfg.server}"; + serviceConfig = { + RestartSec = "30s"; + Restart = "always"; - users.users = singleton { - name = iodinedUser; + # hardening : + # Filesystem access + ProtectSystem = "strict"; + ProtectHome = if isProtected cfg.passwordFile then "read-only" else "true" ; + PrivateTmp = true; + ReadWritePaths = "/dev/net/tun"; + PrivateDevices = false; + ProtectKernelTunables = true; + ProtectKernelModules = true; + ProtectControlGroups = true; + # Caps + NoNewPrivileges = true; + # Misc. + LockPersonality = true; + RestrictRealtime = true; + PrivateMounts = true; + MemoryDenyWriteExecute = true; + }; + }; + in + listToAttrs ( + mapAttrsToList + (name: value: nameValuePair "iodine-${name}" (createIodineClientService name value)) + cfg.clients + ) // { + iodined = mkIf (cfg.server.enable) { + description = "iodine, ip over dns server daemon"; + after = [ "network.target" ]; + wantedBy = [ "multi-user.target" ]; + script = "exec ${pkgs.iodine}/bin/iodined -f -u ${iodinedUser} ${cfg.server.extraConfig} ${optionalString (cfg.server.passwordFile != "") "< \"${builtins.toString cfg.server.passwordFile}\""} ${cfg.server.ip} ${cfg.server.domain}"; + serviceConfig = { + # Filesystem access + ProtectSystem = "strict"; + ProtectHome = if isProtected cfg.server.passwordFile then "read-only" else "true" ; + PrivateTmp = true; + ReadWritePaths = "/dev/net/tun"; + PrivateDevices = false; + ProtectKernelTunables = true; + ProtectKernelModules = true; + ProtectControlGroups = true; + # Caps + NoNewPrivileges = true; + # Misc. + LockPersonality = true; + RestrictRealtime = true; + PrivateMounts = true; + MemoryDenyWriteExecute = true; + }; + }; + }; + + users.users.${iodinedUser} = { uid = config.ids.uids.iodined; description = "Iodine daemon user"; }; diff --git a/nixos/modules/services/networking/ircd-hybrid/default.nix b/nixos/modules/services/networking/ircd-hybrid/default.nix index f5abe61a1ba..b236552eb65 100644 --- a/nixos/modules/services/networking/ircd-hybrid/default.nix +++ b/nixos/modules/services/networking/ircd-hybrid/default.nix @@ -112,9 +112,8 @@ in config = mkIf config.services.ircdHybrid.enable { - users.users = singleton - { name = "ircd"; - description = "IRCD owner"; + users.users.ircd = + { description = "IRCD owner"; group = "ircd"; uid = config.ids.uids.ircd; }; diff --git a/nixos/modules/services/networking/iwd.nix b/nixos/modules/services/networking/iwd.nix index 839fa48d9a4..6be67a8b96f 100644 --- a/nixos/modules/services/networking/iwd.nix +++ b/nixos/modules/services/networking/iwd.nix @@ -23,12 +23,7 @@ in { systemd.packages = [ pkgs.iwd ]; systemd.services.iwd.wantedBy = [ "multi-user.target" ]; - - systemd.tmpfiles.rules = [ - "d /var/lib/iwd 0700 root root -" - "d /var/lib/ead 0700 root root -" - ]; }; - meta.maintainers = with lib.maintainers; [ mic92 ]; + meta.maintainers = with lib.maintainers; [ mic92 dtzWill ]; } diff --git a/nixos/modules/services/networking/keybase.nix b/nixos/modules/services/networking/keybase.nix index 85f52be8a6a..495102cb7ee 100644 --- a/nixos/modules/services/networking/keybase.nix +++ b/nixos/modules/services/networking/keybase.nix @@ -24,13 +24,18 @@ in { config = mkIf cfg.enable { + # Upstream: https://github.com/keybase/client/blob/master/packaging/linux/systemd/keybase.service systemd.user.services.keybase = { description = "Keybase service"; unitConfig.ConditionUser = "!@system"; + environment.KEYBASE_SERVICE_TYPE = "systemd"; serviceConfig = { - ExecStart = '' - ${pkgs.keybase}/bin/keybase service --auto-forked - ''; + Type = "notify"; + EnvironmentFile = [ + "-%E/keybase/keybase.autogen.env" + "-%E/keybase/keybase.env" + ]; + ExecStart = "${pkgs.keybase}/bin/keybase service"; Restart = "on-failure"; PrivateTmp = true; }; diff --git a/nixos/modules/services/networking/kippo.nix b/nixos/modules/services/networking/kippo.nix index bdea6a1d1ca..553415a2f32 100644 --- a/nixos/modules/services/networking/kippo.nix +++ b/nixos/modules/services/networking/kippo.nix @@ -73,12 +73,11 @@ in ${cfg.extraConfig} ''; - users.users = singleton { - name = "kippo"; + users.users.kippo = { description = "kippo web server privilege separation user"; uid = 108; # why does config.ids.uids.kippo give an error? }; - users.groups = singleton { name = "kippo";gid=108; }; + users.groups.kippo.gid = 108; systemd.services.kippo = with pkgs; { description = "Kippo Web Server"; diff --git a/nixos/modules/services/networking/knot.nix b/nixos/modules/services/networking/knot.nix index 1cc1dd3f2f6..12ff89fe849 100644 --- a/nixos/modules/services/networking/knot.nix +++ b/nixos/modules/services/networking/knot.nix @@ -5,14 +5,16 @@ with lib; let cfg = config.services.knot; - configFile = pkgs.writeText "knot.conf" cfg.extraConfig; - socketFile = "/run/knot/knot.sock"; + configFile = pkgs.writeTextFile { + name = "knot.conf"; + text = (concatMapStringsSep "\n" (file: "include: ${file}") cfg.keyFiles) + "\n" + + cfg.extraConfig; + checkPhase = lib.optionalString (cfg.keyFiles == []) '' + ${cfg.package}/bin/knotc --config=$out conf-check + ''; + }; - knotConfCheck = file: pkgs.runCommand "knot-config-checked" - { buildInputs = [ cfg.package ]; } '' - ln -s ${configFile} $out - knotc --config=${configFile} conf-check - ''; + socketFile = "/run/knot/knot.sock"; knot-cli-wrappers = pkgs.stdenv.mkDerivation { name = "knot-cli-wrappers"; @@ -45,6 +47,19 @@ in { ''; }; + keyFiles = mkOption { + type = types.listOf types.path; + default = []; + description = '' + A list of files containing additional configuration + to be included using the include directive. This option + allows to include configuration like TSIG keys without + exposing them to the nix store readable to any process. + Note that using this option will also disable configuration + checks at build time. + ''; + }; + extraConfig = mkOption { type = types.lines; default = ""; @@ -56,6 +71,7 @@ in { package = mkOption { type = types.package; default = pkgs.knot-dns; + defaultText = "pkgs.knot-dns"; description = '' Which Knot DNS package to use ''; @@ -64,6 +80,13 @@ in { }; config = mkIf config.services.knot.enable { + users.users.knot = { + isSystemUser = true; + group = "knot"; + description = "Knot daemon user"; + }; + + users.groups.knot.gid = null; systemd.services.knot = { unitConfig.Documentation = "man:knotd(8) man:knot.conf(5) man:knotc(8) https://www.knot-dns.cz/docs/${cfg.package.version}/html/"; description = cfg.package.meta.description; @@ -73,12 +96,12 @@ in { serviceConfig = { Type = "notify"; - ExecStart = "${cfg.package}/bin/knotd --config=${knotConfCheck configFile} --socket=${socketFile} ${concatStringsSep " " cfg.extraArgs}"; + ExecStart = "${cfg.package}/bin/knotd --config=${configFile} --socket=${socketFile} ${concatStringsSep " " cfg.extraArgs}"; ExecReload = "${knot-cli-wrappers}/bin/knotc reload"; CapabilityBoundingSet = "CAP_NET_BIND_SERVICE CAP_SETPCAP"; AmbientCapabilities = "CAP_NET_BIND_SERVICE CAP_SETPCAP"; NoNewPrivileges = true; - DynamicUser = "yes"; + User = "knot"; RuntimeDirectory = "knot"; StateDirectory = "knot"; StateDirectoryMode = "0700"; @@ -92,4 +115,3 @@ in { environment.systemPackages = [ knot-cli-wrappers ]; }; } - diff --git a/nixos/modules/services/networking/kresd.nix b/nixos/modules/services/networking/kresd.nix index fc516c01230..c5a84eebd46 100644 --- a/nixos/modules/services/networking/kresd.nix +++ b/nixos/modules/services/networking/kresd.nix @@ -3,16 +3,53 @@ with lib; let - cfg = config.services.kresd; - package = pkgs.knot-resolver; - configFile = pkgs.writeText "kresd.conf" cfg.extraConfig; -in + # Convert systemd-style address specification to kresd config line(s). + # On Nix level we don't attempt to precisely validate the address specifications. + mkListen = kind: addr: let + al_v4 = builtins.match "([0-9.]\+):([0-9]\+)" addr; + al_v6 = builtins.match "\\[(.\+)]:([0-9]\+)" addr; + al_portOnly = builtins.match "()([0-9]\+)" addr; + al = findFirst (a: a != null) + (throw "services.kresd.*: incorrect address specification '${addr}'") + [ al_v4 al_v6 al_portOnly ]; + port = last al; + addrSpec = if al_portOnly == null then "'${head al}'" else "{'::', '127.0.0.1'}"; + in # freebind is set for compatibility with earlier kresd services; + # it could be configurable, for example. + '' + net.listen(${addrSpec}, ${port}, { kind = '${kind}', freebind = true }) + ''; -{ + configFile = pkgs.writeText "kresd.conf" ( + optionalString (cfg.listenDoH != []) '' + modules.load('http') + '' + + concatMapStrings (mkListen "dns") cfg.listenPlain + + concatMapStrings (mkListen "tls") cfg.listenTLS + + concatMapStrings (mkListen "doh") cfg.listenDoH + + cfg.extraConfig + ); + + package = if cfg.listenDoH == [] + then pkgs.knot-resolver # never force `extraFeatures = false` + else pkgs.knot-resolver.override { extraFeatures = true; }; +in { meta.maintainers = [ maintainers.vcunat /* upstream developer */ ]; + imports = [ + (mkChangedOptionModule [ "services" "kresd" "interfaces" ] [ "services" "kresd" "listenPlain" ] + (config: + let value = getAttrFromPath [ "services" "kresd" "interfaces" ] config; + in map + (iface: if elem ":" (stringToCharacters iface) then "[${iface}]:53" else "${iface}:53") # Syntax depends on being IPv6 or IPv4. + value + ) + ) + (mkRemovedOptionModule [ "services" "kresd" "cacheDir" ] "Please use (bind-)mounting instead.") + ]; + ###### interface options.services.kresd = { enable = mkOption { @@ -21,8 +58,8 @@ in description = '' Whether to enable knot-resolver domain name server. DNSSEC validation is turned on by default. - You can run sudo nc -U /run/kresd/control - and give commands interactively to kresd. + You can run sudo nc -U /run/knot-resolver/control/1 + and give commands interactively to kresd@1.service. ''; }; extraConfig = mkOption { @@ -32,18 +69,13 @@ in Extra lines to be added verbatim to the generated configuration file. ''; }; - cacheDir = mkOption { - type = types.path; - default = "/var/cache/kresd"; - description = '' - Directory for caches. They are intended to survive reboots. - ''; - }; - interfaces = mkOption { + listenPlain = mkOption { type = with types; listOf str; - default = [ "::1" "127.0.0.1" ]; + default = [ "[::1]:53" "127.0.0.1:53" ]; + example = [ "53" ]; description = '' - What addresses the server should listen on. (UDP+TCP 53) + What addresses and ports the server should listen on. + For detailed syntax see ListenStream in man systemd.socket. ''; }; listenTLS = mkOption { @@ -51,86 +83,63 @@ in default = []; example = [ "198.51.100.1:853" "[2001:db8::1]:853" "853" ]; description = '' - Addresses on which kresd should provide DNS over TLS (see RFC 7858). + Addresses and ports on which kresd should provide DNS over TLS (see RFC 7858). For detailed syntax see ListenStream in man systemd.socket. ''; }; + listenDoH = mkOption { + type = with types; listOf str; + default = []; + example = [ "198.51.100.1:443" "[2001:db8::1]:443" "443" ]; + description = '' + Addresses and ports on which kresd should provide DNS over HTTPS (see RFC 8484). + For detailed syntax see ListenStream in man systemd.socket. + ''; + }; + instances = mkOption { + type = types.ints.unsigned; + default = 1; + description = '' + The number of instances to start. They will be called kresd@{1,2,...}.service. + Knot Resolver uses no threads, so this is the way to scale. + You can dynamically start/stop them at will, so this is just system default. + ''; + }; # TODO: perhaps options for more common stuff like cache size or forwarding }; ###### implementation config = mkIf cfg.enable { - environment.etc."kresd.conf".source = configFile; # not required + environment.etc."knot-resolver/kresd.conf".source = configFile; # not required - users.users = singleton - { name = "kresd"; - uid = config.ids.uids.kresd; - group = "kresd"; + users.users.knot-resolver = + { isSystemUser = true; + group = "knot-resolver"; description = "Knot-resolver daemon user"; }; - users.groups = singleton - { name = "kresd"; - gid = config.ids.gids.kresd; - }; + users.groups.knot-resolver.gid = null; - systemd.sockets.kresd = rec { - wantedBy = [ "sockets.target" ]; - before = wantedBy; - listenStreams = map - # Syntax depends on being IPv6 or IPv4. - (iface: if elem ":" (stringToCharacters iface) then "[${iface}]:53" else "${iface}:53") - cfg.interfaces; - socketConfig = { - ListenDatagram = listenStreams; - FreeBind = true; - FileDescriptorName = "dns"; - }; + systemd.packages = [ package ]; # the units are patched inside the package a bit + + systemd.targets.kresd = { # configure units started by default + wantedBy = [ "multi-user.target" ]; + wants = [ "kres-cache-gc.service" ] + ++ map (i: "kresd@${toString i}.service") (range 1 cfg.instances); + }; + systemd.services."kresd@".serviceConfig = { + ExecStart = "${package}/bin/kresd --noninteractive " + + "-c ${package}/lib/knot-resolver/distro-preconfig.lua -c ${configFile}"; + # Ensure correct ownership in case UID or GID changes. + CacheDirectory = "knot-resolver"; + CacheDirectoryMode = "0750"; }; - systemd.sockets.kresd-tls = mkIf (cfg.listenTLS != []) rec { - wantedBy = [ "sockets.target" ]; - before = wantedBy; - partOf = [ "kresd.socket" ]; - listenStreams = cfg.listenTLS; - socketConfig = { - FileDescriptorName = "tls"; - FreeBind = true; - Service = "kresd.service"; - }; - }; + environment.etc."tmpfiles.d/knot-resolver.conf".source = + "${package}/lib/tmpfiles.d/knot-resolver.conf"; - systemd.sockets.kresd-control = rec { - wantedBy = [ "sockets.target" ]; - before = wantedBy; - partOf = [ "kresd.socket" ]; - listenStreams = [ "/run/kresd/control" ]; - socketConfig = { - FileDescriptorName = "control"; - Service = "kresd.service"; - SocketMode = "0660"; # only root user/group may connect and control kresd - }; - }; - - systemd.tmpfiles.rules = [ "d '${cfg.cacheDir}' 0770 kresd kresd - -" ]; - - systemd.services.kresd = { - description = "Knot-resolver daemon"; - - serviceConfig = { - User = "kresd"; - Type = "notify"; - WorkingDirectory = cfg.cacheDir; - Restart = "on-failure"; - Sockets = [ "kresd.socket" "kresd-control.socket" ] - ++ optional (cfg.listenTLS != []) "kresd-tls.socket"; - }; - - # Trust anchor goes from dns-root-data by default. - script = '' - exec '${package}/bin/kresd' --config '${configFile}' --forks=1 - ''; - - requires = [ "kresd.socket" ]; - }; + # Try cleaning up the previously default location of cache file. + # Note that /var/cache/* should always be safe to remove. + # TODO: remove later, probably between 20.09 and 21.03 + systemd.tmpfiles.rules = [ "R /var/cache/kresd" ]; }; } diff --git a/nixos/modules/services/networking/magic-wormhole-mailbox-server.nix b/nixos/modules/services/networking/magic-wormhole-mailbox-server.nix new file mode 100644 index 00000000000..09d357cd2b6 --- /dev/null +++ b/nixos/modules/services/networking/magic-wormhole-mailbox-server.nix @@ -0,0 +1,28 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.services.magic-wormhole-mailbox-server; + dataDir = "/var/lib/magic-wormhole-mailbox-server;"; + python = pkgs.python3.withPackages (py: [ py.magic-wormhole-mailbox-server py.twisted ]); +in +{ + options.services.magic-wormhole-mailbox-server = { + enable = mkEnableOption "Enable Magic Wormhole Mailbox Server"; + }; + + config = mkIf cfg.enable { + systemd.services.magic-wormhole-mailbox-server = { + after = [ "network.target" ]; + wantedBy = [ "multi-user.target" ]; + serviceConfig = { + DynamicUser = true; + ExecStart = "${python}/bin/twistd --nodaemon wormhole-mailbox"; + WorkingDirectory = dataDir; + StateDirectory = baseNameOf dataDir; + }; + }; + + }; +} diff --git a/nixos/modules/services/networking/matterbridge.nix b/nixos/modules/services/networking/matterbridge.nix index 682eaa6eb29..b8b4f37c84a 100644 --- a/nixos/modules/services/networking/matterbridge.nix +++ b/nixos/modules/services/networking/matterbridge.nix @@ -92,14 +92,15 @@ in warnings = optional options.services.matterbridge.configFile.isDefined "The option services.matterbridge.configFile is insecure and should be replaced with services.matterbridge.configPath"; - users.users = optional (cfg.user == "matterbridge") - { name = "matterbridge"; - group = "matterbridge"; - isSystemUser = true; + users.users = optionalAttrs (cfg.user == "matterbridge") + { matterbridge = { + group = "matterbridge"; + isSystemUser = true; + }; }; - users.groups = optional (cfg.group == "matterbridge") - { name = "matterbridge"; + users.groups = optionalAttrs (cfg.group == "matterbridge") + { matterbridge = { }; }; systemd.services.matterbridge = { @@ -110,7 +111,7 @@ in serviceConfig = { User = cfg.user; Group = cfg.group; - ExecStart = "${pkgs.matterbridge.bin}/bin/matterbridge -conf ${matterbridgeConfToml}"; + ExecStart = "${pkgs.matterbridge}/bin/matterbridge -conf ${matterbridgeConfToml}"; Restart = "always"; RestartSec = "10"; }; diff --git a/nixos/modules/services/networking/minidlna.nix b/nixos/modules/services/networking/minidlna.nix index 3ddea3c9757..c580ba47dad 100644 --- a/nixos/modules/services/networking/minidlna.nix +++ b/nixos/modules/services/networking/minidlna.nix @@ -95,6 +95,22 @@ in ''; }; + services.minidlna.announceInterval = mkOption { + type = types.int; + default = 895; + description = + '' + The interval between announces (in seconds). + + By default miniDLNA will announce its presence on the network + approximately every 15 minutes. + + Many people prefer shorter announce intervals (e.g. 60 seconds) + on their home networks, especially when DLNA clients are + started on demand. + ''; + }; + services.minidlna.config = mkOption { type = types.lines; description = @@ -144,6 +160,7 @@ in ${concatMapStrings (dir: '' media_dir=${dir} '') cfg.mediaDirs} + notify_interval=${toString cfg.announceInterval} ${cfg.extraConfig} ''; diff --git a/nixos/modules/services/networking/mjpg-streamer.nix b/nixos/modules/services/networking/mjpg-streamer.nix index e0a6c112e3c..dbc35e2e71c 100644 --- a/nixos/modules/services/networking/mjpg-streamer.nix +++ b/nixos/modules/services/networking/mjpg-streamer.nix @@ -49,10 +49,11 @@ in { config = mkIf cfg.enable { - users.users = optional (cfg.user == "mjpg-streamer") { - name = "mjpg-streamer"; - uid = config.ids.uids.mjpg-streamer; - group = cfg.group; + users.users = optionalAttrs (cfg.user == "mjpg-streamer") { + mjpg-streamer = { + uid = config.ids.uids.mjpg-streamer; + group = cfg.group; + }; }; systemd.services.mjpg-streamer = { diff --git a/nixos/modules/services/networking/monero.nix b/nixos/modules/services/networking/monero.nix index 98a3456f639..b9536430868 100644 --- a/nixos/modules/services/networking/monero.nix +++ b/nixos/modules/services/networking/monero.nix @@ -197,17 +197,15 @@ in config = mkIf cfg.enable { - users.users = singleton { - name = "monero"; + users.users.monero = { uid = config.ids.uids.monero; description = "Monero daemon user"; home = dataDir; createHome = true; }; - users.groups = singleton { - name = "monero"; - gid = config.ids.gids.monero; + users.groups.monero = { + gid = config.ids.gids.monero; }; systemd.services.monero = { diff --git a/nixos/modules/services/networking/mullvad-vpn.nix b/nixos/modules/services/networking/mullvad-vpn.nix new file mode 100644 index 00000000000..cc98414257c --- /dev/null +++ b/nixos/modules/services/networking/mullvad-vpn.nix @@ -0,0 +1,43 @@ +{ config, lib, pkgs, ... }: +let + cfg = config.services.mullvad-vpn; +in +with lib; +{ + options.services.mullvad-vpn.enable = mkOption { + type = types.bool; + default = false; + description = '' + This option enables Mullvad VPN daemon. + ''; + }; + + config = mkIf cfg.enable { + boot.kernelModules = [ "tun" ]; + + systemd.services.mullvad-daemon = { + description = "Mullvad VPN daemon"; + wantedBy = [ "multi-user.target" ]; + wants = [ "network.target" ]; + after = [ + "network-online.target" + "NetworkManager.service" + "systemd-resolved.service" + ]; + path = [ + pkgs.iproute + # Needed for ping + "/run/wrappers" + ]; + serviceConfig = { + StartLimitBurst = 5; + StartLimitIntervalSec = 20; + ExecStart = "${pkgs.mullvad-vpn}/bin/mullvad-daemon -v --disable-stdout-timestamps"; + Restart = "always"; + RestartSec = 1; + }; + }; + }; + + meta.maintainers = [ maintainers.xfix ]; +} diff --git a/nixos/modules/services/networking/mxisd.nix b/nixos/modules/services/networking/mxisd.nix index a3d61922e57..482d6ff456b 100644 --- a/nixos/modules/services/networking/mxisd.nix +++ b/nixos/modules/services/networking/mxisd.nix @@ -93,23 +93,19 @@ in { }; config = mkIf cfg.enable { - users.users = [ + users.users.mxisd = { - name = "mxisd"; group = "mxisd"; home = cfg.dataDir; createHome = true; shell = "${pkgs.bash}/bin/bash"; uid = config.ids.uids.mxisd; - } - ]; + }; - users.groups = [ + users.groups.mxisd = { - name = "mxisd"; gid = config.ids.gids.mxisd; - } - ]; + }; systemd.services.mxisd = { description = "a federated identity server for the matrix ecosystem"; diff --git a/nixos/modules/services/networking/namecoind.nix b/nixos/modules/services/networking/namecoind.nix index 43a9a0b2598..ead7f085943 100644 --- a/nixos/modules/services/networking/namecoind.nix +++ b/nixos/modules/services/networking/namecoind.nix @@ -154,16 +154,14 @@ in config = ${configFile} ''; - users.users = singleton { - name = "namecoin"; + users.users.namecoin = { uid = config.ids.uids.namecoin; description = "Namecoin daemon user"; home = dataDir; createHome = true; }; - users.groups = singleton { - name = "namecoin"; + users.groups.namecoin = { gid = config.ids.gids.namecoin; }; diff --git a/nixos/modules/services/networking/nat.nix b/nixos/modules/services/networking/nat.nix index f1238bc6b16..21ae9eb8b6d 100644 --- a/nixos/modules/services/networking/nat.nix +++ b/nixos/modules/services/networking/nat.nix @@ -65,10 +65,10 @@ let let m = builtins.match "([0-9.]+):([0-9-]+)" fwd.destination; destinationIP = if (m == null) then throw "bad ip:ports `${fwd.destination}'" else elemAt m 0; - destinationPorts = if (m == null) then throw "bad ip:ports `${fwd.destination}'" else elemAt m 1; + destinationPorts = if (m == null) then throw "bad ip:ports `${fwd.destination}'" else builtins.replaceStrings ["-"] [":"] (elemAt m 1); in '' # Allow connections to ${loopbackip}:${toString fwd.sourcePort} from the host itself - iptables -w -t nat -A OUTPUT \ + iptables -w -t nat -A nixos-nat-out \ -d ${loopbackip} -p ${fwd.proto} \ --dport ${builtins.toString fwd.sourcePort} \ -j DNAT --to-destination ${fwd.destination} diff --git a/nixos/modules/services/networking/ndppd.nix b/nixos/modules/services/networking/ndppd.nix index 92088623517..77e979a8a42 100644 --- a/nixos/modules/services/networking/ndppd.nix +++ b/nixos/modules/services/networking/ndppd.nix @@ -43,7 +43,7 @@ let timeout = mkOption { type = types.int; description = '' - Controls how long to wait for a Neighbor Advertisment Message before + Controls how long to wait for a Neighbor Advertisment Message before invalidating the entry, in milliseconds. ''; default = 500; @@ -51,7 +51,7 @@ let ttl = mkOption { type = types.int; description = '' - Controls how long a valid or invalid entry remains in the cache, in + Controls how long a valid or invalid entry remains in the cache, in milliseconds. ''; default = 30000; @@ -142,7 +142,11 @@ in { messages, and respond to them according to a set of rules. ''; default = {}; - example = { eth0.rules."1111::/64" = {}; }; + example = literalExample '' + { + eth0.rules."1111::/64" = {}; + } + ''; }; }; @@ -161,7 +165,25 @@ in { documentation = [ "man:ndppd(1)" "man:ndppd.conf(5)" ]; after = [ "network-pre.target" ]; wantedBy = [ "multi-user.target" ]; - serviceConfig.ExecStart = "${pkgs.ndppd}/bin/ndppd -c ${ndppdConf}"; + serviceConfig = { + ExecStart = "${pkgs.ndppd}/bin/ndppd -c ${ndppdConf}"; + + # Sandboxing + CapabilityBoundingSet = "CAP_NET_RAW CAP_NET_ADMIN"; + ProtectSystem = "strict"; + ProtectHome = true; + PrivateTmp = true; + PrivateDevices = true; + ProtectKernelTunables = true; + ProtectKernelModules = true; + ProtectControlGroups = true; + RestrictAddressFamilies = "AF_INET6 AF_PACKET AF_NETLINK"; + RestrictNamespaces = true; + LockPersonality = true; + MemoryDenyWriteExecute = true; + RestrictRealtime = true; + RestrictSUIDSGID = true; + }; }; }; } diff --git a/nixos/modules/services/networking/networkmanager.nix b/nixos/modules/services/networking/networkmanager.nix index 53029b59067..6f24141b33c 100644 --- a/nixos/modules/services/networking/networkmanager.nix +++ b/nixos/modules/services/networking/networkmanager.nix @@ -131,6 +131,10 @@ let in { + meta = { + maintainers = teams.freedesktop.members; + }; + ###### interface options = { @@ -308,6 +312,7 @@ in { if [ "$2" != "up" ]; then logger "exit: event $2 != up" + exit fi # coreutils and iproute are in PATH too @@ -361,62 +366,59 @@ in { } ]; - environment.etc = with pkgs; [ - { source = configFile; - target = "NetworkManager/NetworkManager.conf"; + environment.etc = with pkgs; { + "NetworkManager/NetworkManager.conf".source = configFile; + + "NetworkManager/VPN/nm-openvpn-service.name".source = + "${networkmanager-openvpn}/lib/NetworkManager/VPN/nm-openvpn-service.name"; + + "NetworkManager/VPN/nm-vpnc-service.name".source = + "${networkmanager-vpnc}/lib/NetworkManager/VPN/nm-vpnc-service.name"; + + "NetworkManager/VPN/nm-openconnect-service.name".source = + "${networkmanager-openconnect}/lib/NetworkManager/VPN/nm-openconnect-service.name"; + + "NetworkManager/VPN/nm-fortisslvpn-service.name".source = + "${networkmanager-fortisslvpn}/lib/NetworkManager/VPN/nm-fortisslvpn-service.name"; + + "NetworkManager/VPN/nm-l2tp-service.name".source = + "${networkmanager-l2tp}/lib/NetworkManager/VPN/nm-l2tp-service.name"; + + "NetworkManager/VPN/nm-iodine-service.name".source = + "${networkmanager-iodine}/lib/NetworkManager/VPN/nm-iodine-service.name"; } - { source = "${networkmanager-openvpn}/lib/NetworkManager/VPN/nm-openvpn-service.name"; - target = "NetworkManager/VPN/nm-openvpn-service.name"; - } - { source = "${networkmanager-vpnc}/lib/NetworkManager/VPN/nm-vpnc-service.name"; - target = "NetworkManager/VPN/nm-vpnc-service.name"; - } - { source = "${networkmanager-openconnect}/lib/NetworkManager/VPN/nm-openconnect-service.name"; - target = "NetworkManager/VPN/nm-openconnect-service.name"; - } - { source = "${networkmanager-fortisslvpn}/lib/NetworkManager/VPN/nm-fortisslvpn-service.name"; - target = "NetworkManager/VPN/nm-fortisslvpn-service.name"; - } - { source = "${networkmanager-l2tp}/lib/NetworkManager/VPN/nm-l2tp-service.name"; - target = "NetworkManager/VPN/nm-l2tp-service.name"; - } - { source = "${networkmanager-iodine}/lib/NetworkManager/VPN/nm-iodine-service.name"; - target = "NetworkManager/VPN/nm-iodine-service.name"; - } - ] ++ optional (cfg.appendNameservers != [] || cfg.insertNameservers != []) - { source = overrideNameserversScript; - target = "NetworkManager/dispatcher.d/02overridedns"; - } - ++ lib.imap1 (i: s: { - inherit (s) source; - target = "NetworkManager/dispatcher.d/${dispatcherTypesSubdirMap.${s.type}}03userscript${lib.fixedWidthNumber 4 i}"; - mode = "0544"; - }) cfg.dispatcherScripts - ++ optional cfg.enableStrongSwan - { source = "${pkgs.networkmanager_strongswan}/lib/NetworkManager/VPN/nm-strongswan-service.name"; - target = "NetworkManager/VPN/nm-strongswan-service.name"; - }; + // optionalAttrs (cfg.appendNameservers != [] || cfg.insertNameservers != []) + { + "NetworkManager/dispatcher.d/02overridedns".source = overrideNameserversScript; + } + // optionalAttrs cfg.enableStrongSwan + { + "NetworkManager/VPN/nm-strongswan-service.name".source = + "${pkgs.networkmanager_strongswan}/lib/NetworkManager/VPN/nm-strongswan-service.name"; + } + // listToAttrs (lib.imap1 (i: s: + { + name = "NetworkManager/dispatcher.d/${dispatcherTypesSubdirMap.${s.type}}03userscript${lib.fixedWidthNumber 4 i}"; + value = { mode = "0544"; inherit (s) source; }; + }) cfg.dispatcherScripts); environment.systemPackages = cfg.packages; - users.groups = [{ - name = "networkmanager"; - gid = config.ids.gids.networkmanager; - } - { - name = "nm-openvpn"; - gid = config.ids.gids.nm-openvpn; - }]; - users.users = [{ - name = "nm-openvpn"; - uid = config.ids.uids.nm-openvpn; - extraGroups = [ "networkmanager" ]; - } - { - name = "nm-iodine"; - isSystemUser = true; - group = "networkmanager"; - }]; + users.groups = { + networkmanager.gid = config.ids.gids.networkmanager; + nm-openvpn.gid = config.ids.gids.nm-openvpn; + }; + + users.users = { + nm-openvpn = { + uid = config.ids.uids.nm-openvpn; + extraGroups = [ "networkmanager" ]; + }; + nm-iodine = { + isSystemUser = true; + group = "networkmanager"; + }; + }; systemd.packages = cfg.packages; diff --git a/nixos/modules/services/networking/nftables.nix b/nixos/modules/services/networking/nftables.nix index ad7c013a544..ec9d9753cfe 100644 --- a/nixos/modules/services/networking/nftables.nix +++ b/nixos/modules/services/networking/nftables.nix @@ -52,7 +52,7 @@ in ip protocol icmp icmp type { destination-unreachable, router-advertisement, time-exceeded, parameter-problem } accept # allow "ping" - ip6 nexthdr icmp icmpv6 type echo-request accept + ip6 nexthdr icmpv6 icmpv6 type echo-request accept ip protocol icmp icmp type echo-request accept # accept SSH connections (required for a server) diff --git a/nixos/modules/services/networking/nix-store-gcs-proxy.nix b/nixos/modules/services/networking/nix-store-gcs-proxy.nix new file mode 100644 index 00000000000..3f2ce5bca4d --- /dev/null +++ b/nixos/modules/services/networking/nix-store-gcs-proxy.nix @@ -0,0 +1,75 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + opts = { name, config, ... }: { + options = { + enable = mkOption { + default = true; + type = types.bool; + example = true; + description = "Whether to enable proxy for this bucket"; + }; + bucketName = mkOption { + type = types.str; + default = name; + example = "my-bucket-name"; + description = "Name of Google storage bucket"; + }; + address = mkOption { + type = types.str; + example = "localhost:3000"; + description = "The address of the proxy."; + }; + }; + }; + enabledProxies = lib.filterAttrs (n: v: v.enable) config.services.nix-store-gcs-proxy; + mapProxies = function: lib.mkMerge (lib.mapAttrsToList function enabledProxies); +in +{ + options.services.nix-store-gcs-proxy = mkOption { + type = types.attrsOf (types.submodule opts); + default = {}; + description = '' + An attribute set describing an HTTP to GCS proxy that allows us to use GCS + bucket via HTTP protocol. + ''; + }; + + config.systemd.services = mapProxies (name: cfg: { + "nix-store-gcs-proxy-${name}" = { + description = "A HTTP nix store that proxies requests to Google Storage"; + wantedBy = ["multi-user.target"]; + + serviceConfig = { + RestartSec = 5; + StartLimitInterval = 10; + ExecStart = '' + ${pkgs.nix-store-gcs-proxy}/bin/nix-store-gcs-proxy \ + --bucket-name ${cfg.bucketName} \ + --addr ${cfg.address} + ''; + + DynamicUser = true; + + ProtectSystem = "strict"; + ProtectHome = true; + PrivateTmp = true; + PrivateDevices = true; + PrivateMounts = true; + PrivateUsers = true; + + ProtectKernelTunables = true; + ProtectKernelModules = true; + ProtectControlGroups = true; + + NoNewPrivileges = true; + LockPersonality = true; + RestrictRealtime = true; + }; + }; + }); + + meta.maintainers = [ maintainers.mrkkrp ]; +} diff --git a/nixos/modules/services/networking/nntp-proxy.nix b/nixos/modules/services/networking/nntp-proxy.nix index d24d6f77a49..cc061bf6e3b 100644 --- a/nixos/modules/services/networking/nntp-proxy.nix +++ b/nixos/modules/services/networking/nntp-proxy.nix @@ -210,9 +210,8 @@ in config = mkIf cfg.enable { - users.users = singleton - { name = proxyUser; - uid = config.ids.uids.nntp-proxy; + users.users.${proxyUser} = + { uid = config.ids.uids.nntp-proxy; description = "NNTP-Proxy daemon user"; }; diff --git a/nixos/modules/services/networking/nsd.nix b/nixos/modules/services/networking/nsd.nix index bc0966e6b8e..429580e5c6c 100644 --- a/nixos/modules/services/networking/nsd.nix +++ b/nixos/modules/services/networking/nsd.nix @@ -244,7 +244,7 @@ let }; data = mkOption { - type = types.str; + type = types.lines; default = ""; example = ""; description = '' @@ -484,7 +484,7 @@ in }; extraConfig = mkOption { - type = types.str; + type = types.lines; default = ""; description = '' Extra nsd config. @@ -899,13 +899,9 @@ in environment.systemPackages = [ nsdPkg ]; - users.groups = singleton { - name = username; - gid = config.ids.gids.nsd; - }; + users.groups.${username}.gid = config.ids.gids.nsd; - users.users = singleton { - name = username; + users.users.${username} = { description = "NSD service user"; home = stateDir; createHome = true; diff --git a/nixos/modules/services/networking/ntp/chrony.nix b/nixos/modules/services/networking/ntp/chrony.nix index c74476c7a15..f1062edaa05 100644 --- a/nixos/modules/services/networking/ntp/chrony.nix +++ b/nixos/modules/services/networking/ntp/chrony.nix @@ -79,14 +79,10 @@ in environment.systemPackages = [ pkgs.chrony ]; - users.groups = singleton - { name = "chrony"; - gid = config.ids.gids.chrony; - }; + users.groups.chrony.gid = config.ids.gids.chrony; - users.users = singleton - { name = "chrony"; - uid = config.ids.uids.chrony; + users.users.chrony = + { uid = config.ids.uids.chrony; group = "chrony"; description = "chrony daemon user"; home = stateDir; @@ -96,6 +92,11 @@ in systemd.services.systemd-timedated.environment = { SYSTEMD_TIMEDATED_NTP_SERVICES = "chronyd.service"; }; + systemd.tmpfiles.rules = [ + "d ${stateDir} 0755 chrony chrony - -" + "f ${keyFile} 0640 chrony chrony -" + ]; + systemd.services.chronyd = { description = "chrony NTP daemon"; @@ -107,13 +108,6 @@ in path = [ pkgs.chrony ]; - preStart = '' - mkdir -m 0755 -p ${stateDir} - touch ${keyFile} - chmod 0640 ${keyFile} - chown chrony:chrony ${stateDir} ${keyFile} - ''; - unitConfig.ConditionCapability = "CAP_SYS_TIME"; serviceConfig = { Type = "simple"; @@ -122,7 +116,7 @@ in ProtectHome = "yes"; ProtectSystem = "full"; PrivateTmp = "yes"; - + StateDirectory = "chrony"; }; }; diff --git a/nixos/modules/services/networking/ntp/ntpd.nix b/nixos/modules/services/networking/ntp/ntpd.nix index 1197c84f045..54ff054d84c 100644 --- a/nixos/modules/services/networking/ntp/ntpd.nix +++ b/nixos/modules/services/networking/ntp/ntpd.nix @@ -23,6 +23,8 @@ let restrict -6 ::1 ${toString (map (server: "server " + server + " iburst\n") cfg.servers)} + + ${cfg.extraConfig} ''; ntpFlags = "-c ${configFile} -u ${ntpUser}:nogroup ${toString cfg.extraFlags}"; @@ -81,6 +83,17 @@ in ''; }; + extraConfig = mkOption { + type = types.lines; + default = ""; + example = '' + fudge 127.127.1.0 stratum 10 + ''; + description = '' + Additional text appended to ntp.conf. + ''; + }; + extraFlags = mkOption { type = types.listOf types.str; description = "Extra flags passed to the ntpd command."; @@ -104,9 +117,8 @@ in systemd.services.systemd-timedated.environment = { SYSTEMD_TIMEDATED_NTP_SERVICES = "ntpd.service"; }; - users.users = singleton - { name = ntpUser; - uid = config.ids.uids.ntp; + users.users.${ntpUser} = + { uid = config.ids.uids.ntp; description = "NTP daemon user"; home = stateDir; }; diff --git a/nixos/modules/services/networking/ntp/openntpd.nix b/nixos/modules/services/networking/ntp/openntpd.nix index 471d15b1687..67a04d48d30 100644 --- a/nixos/modules/services/networking/ntp/openntpd.nix +++ b/nixos/modules/services/networking/ntp/openntpd.nix @@ -60,8 +60,7 @@ in environment.etc."ntpd.conf".text = configFile; - users.users = singleton { - name = "ntp"; + users.users.ntp = { uid = config.ids.uids.ntp; description = "OpenNTP daemon user"; home = "/var/empty"; diff --git a/nixos/modules/services/networking/owamp.nix b/nixos/modules/services/networking/owamp.nix index dbb2e3b4c40..637ed618b89 100644 --- a/nixos/modules/services/networking/owamp.nix +++ b/nixos/modules/services/networking/owamp.nix @@ -17,16 +17,13 @@ in ###### implementation config = mkIf cfg.enable { - users.users = singleton { - name = "owamp"; + users.users.owamp = { group = "owamp"; description = "Owamp daemon"; isSystemUser = true; }; - users.groups = singleton { - name = "owamp"; - }; + users.groups.owamp = { }; systemd.services.owamp = { description = "Owamp server"; diff --git a/nixos/modules/services/networking/pdnsd.nix b/nixos/modules/services/networking/pdnsd.nix index f5b174dd7b7..24b5bbc5104 100644 --- a/nixos/modules/services/networking/pdnsd.nix +++ b/nixos/modules/services/networking/pdnsd.nix @@ -62,15 +62,13 @@ in }; config = mkIf cfg.enable { - users.users = singleton { - name = pdnsdUser; + users.users.${pdnsdUser} = { uid = config.ids.uids.pdnsd; group = pdnsdGroup; description = "pdnsd user"; }; - users.groups = singleton { - name = pdnsdGroup; + users.groups.${pdnsdGroup} = { gid = config.ids.gids.pdnsd; }; diff --git a/nixos/modules/services/networking/pixiecore.nix b/nixos/modules/services/networking/pixiecore.nix new file mode 100644 index 00000000000..0e32f182e2a --- /dev/null +++ b/nixos/modules/services/networking/pixiecore.nix @@ -0,0 +1,134 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.services.pixiecore; +in +{ + meta.maintainers = with maintainers; [ bbigras danderson ]; + + options = { + services.pixiecore = { + enable = mkEnableOption "Pixiecore"; + + openFirewall = mkOption { + type = types.bool; + default = false; + description = '' + Open ports (67, 69 UDP and 4011, 'port', 'statusPort' TCP) in the firewall for Pixiecore. + ''; + }; + + mode = mkOption { + description = "Which mode to use"; + default = "boot"; + type = types.enum [ "api" "boot" ]; + }; + + debug = mkOption { + type = types.bool; + default = false; + description = "Log more things that aren't directly related to booting a recognized client"; + }; + + dhcpNoBind = mkOption { + type = types.bool; + default = false; + description = "Handle DHCP traffic without binding to the DHCP server port"; + }; + + kernel = mkOption { + type = types.str or types.path; + default = ""; + description = "Kernel path. Ignored unless mode is set to 'boot'"; + }; + + initrd = mkOption { + type = types.str or types.path; + default = ""; + description = "Initrd path. Ignored unless mode is set to 'boot'"; + }; + + cmdLine = mkOption { + type = types.str; + default = ""; + description = "Kernel commandline arguments. Ignored unless mode is set to 'boot'"; + }; + + listen = mkOption { + type = types.str; + default = "0.0.0.0"; + description = "IPv4 address to listen on"; + }; + + port = mkOption { + type = types.port; + default = 80; + description = "Port to listen on for HTTP"; + }; + + statusPort = mkOption { + type = types.port; + default = 80; + description = "HTTP port for status information (can be the same as --port)"; + }; + + apiServer = mkOption { + type = types.str; + example = "localhost:8080"; + description = "host:port to connect to the API. Ignored unless mode is set to 'api'"; + }; + + extraArguments = mkOption { + type = types.listOf types.str; + default = []; + description = "Additional command line arguments to pass to Pixiecore"; + }; + }; + }; + + config = mkIf cfg.enable { + users.groups.pixiecore = {}; + users.users.pixiecore = { + description = "Pixiecore daemon user"; + group = "pixiecore"; + }; + + networking.firewall = mkIf cfg.openFirewall { + allowedTCPPorts = [ 4011 cfg.port cfg.statusPort ]; + allowedUDPPorts = [ 67 69 ]; + }; + + systemd.services.pixiecore = { + description = "Pixiecore server"; + after = [ "network.target"]; + wants = [ "network.target"]; + wantedBy = [ "multi-user.target"]; + serviceConfig = { + User = "pixiecore"; + Restart = "always"; + AmbientCapabilities = [ "cap_net_bind_service" ] ++ optional cfg.dhcpNoBind "cap_net_raw"; + ExecStart = + let + argString = + if cfg.mode == "boot" + then [ "boot" cfg.kernel ] + ++ optional (cfg.initrd != "") cfg.initrd + ++ optional (cfg.cmdLine != "") "--cmdline=${lib.escapeShellArg cfg.cmdLine}" + else [ "api" cfg.apiServer ]; + in + '' + ${pkgs.pixiecore}/bin/pixiecore \ + ${lib.escapeShellArgs argString} \ + ${optionalString cfg.debug "--debug"} \ + ${optionalString cfg.dhcpNoBind "--dhcp-no-bind"} \ + --listen-addr ${lib.escapeShellArg cfg.listen} \ + --port ${toString cfg.port} \ + --status-port ${toString cfg.statusPort} \ + ${escapeShellArgs cfg.extraArguments} + ''; + }; + }; + }; +} diff --git a/nixos/modules/services/networking/polipo.nix b/nixos/modules/services/networking/polipo.nix index dbe3b738097..1ff9388346b 100644 --- a/nixos/modules/services/networking/polipo.nix +++ b/nixos/modules/services/networking/polipo.nix @@ -85,17 +85,15 @@ in config = mkIf cfg.enable { - users.users = singleton - { name = "polipo"; - uid = config.ids.uids.polipo; + users.users.polipo = + { uid = config.ids.uids.polipo; description = "Polipo caching proxy user"; home = "/var/cache/polipo"; createHome = true; }; - users.groups = singleton - { name = "polipo"; - gid = config.ids.gids.polipo; + users.groups.polipo = + { gid = config.ids.gids.polipo; members = [ "polipo" ]; }; diff --git a/nixos/modules/services/networking/pppd.nix b/nixos/modules/services/networking/pppd.nix index e96c27bd84b..c1cbdb46176 100644 --- a/nixos/modules/services/networking/pppd.nix +++ b/nixos/modules/services/networking/pppd.nix @@ -64,11 +64,13 @@ in enabledConfigs = filter (f: f.enable) (attrValues cfg.peers); mkEtc = peerCfg: { - "ppp/peers/${peerCfg.name}".text = peerCfg.config; + name = "ppp/peers/${peerCfg.name}"; + value.text = peerCfg.config; }; mkSystemd = peerCfg: { - "pppd-${peerCfg.name}" = { + name = "pppd-${peerCfg.name}"; + value = { restartTriggers = [ config.environment.etc."ppp/peers/${peerCfg.name}".source ]; before = [ "network.target" ]; wants = [ "network.target" ]; @@ -124,11 +126,11 @@ in }; }; - etcFiles = map mkEtc enabledConfigs; - systemdConfigs = map mkSystemd enabledConfigs; + etcFiles = listToAttrs (map mkEtc enabledConfigs); + systemdConfigs = listToAttrs (map mkSystemd enabledConfigs); in mkIf cfg.enable { - environment.etc = mkMerge etcFiles; - systemd.services = mkMerge systemdConfigs; + environment.etc = etcFiles; + systemd.services = systemdConfigs; }; } diff --git a/nixos/modules/services/networking/prayer.nix b/nixos/modules/services/networking/prayer.nix index c936417e68c..9c9eeba23da 100644 --- a/nixos/modules/services/networking/prayer.nix +++ b/nixos/modules/services/networking/prayer.nix @@ -72,17 +72,14 @@ in config = mkIf config.services.prayer.enable { environment.systemPackages = [ prayer ]; - users.users = singleton - { name = prayerUser; - uid = config.ids.uids.prayer; + users.users.${prayerUser} = + { uid = config.ids.uids.prayer; description = "Prayer daemon user"; home = stateDir; }; - users.groups = singleton - { name = prayerGroup; - gid = config.ids.gids.prayer; - }; + users.groups.${prayerGroup} = + { gid = config.ids.gids.prayer; }; systemd.services.prayer = { wantedBy = [ "multi-user.target" ]; diff --git a/nixos/modules/services/networking/quassel.nix b/nixos/modules/services/networking/quassel.nix index b495b3948fb..52ecd90b7c6 100644 --- a/nixos/modules/services/networking/quassel.nix +++ b/nixos/modules/services/networking/quassel.nix @@ -92,17 +92,21 @@ in message = "Quassel needs a certificate file in order to require SSL"; }]; - users.users = mkIf (cfg.user == null) [ - { name = "quassel"; + users.users = optionalAttrs (cfg.user == null) { + quassel = { + name = "quassel"; description = "Quassel IRC client daemon"; group = "quassel"; uid = config.ids.uids.quassel; - }]; + }; + }; - users.groups = mkIf (cfg.user == null) [ - { name = "quassel"; + users.groups = optionalAttrs (cfg.user == null) { + quassel = { + name = "quassel"; gid = config.ids.gids.quassel; - }]; + }; + }; systemd.tmpfiles.rules = [ "d '${cfg.dataDir}' - ${user} - - -" diff --git a/nixos/modules/services/networking/quorum.nix b/nixos/modules/services/networking/quorum.nix new file mode 100644 index 00000000000..2f612c9db68 --- /dev/null +++ b/nixos/modules/services/networking/quorum.nix @@ -0,0 +1,229 @@ +{ config, pkgs, lib, ... }: +let + + inherit (lib) mkEnableOption mkIf mkOption literalExample types optionalString; + + cfg = config.services.quorum; + dataDir = "/var/lib/quorum"; + genesisFile = pkgs.writeText "genesis.json" (builtins.toJSON cfg.genesis); + staticNodesFile = pkgs.writeText "static-nodes.json" (builtins.toJSON cfg.staticNodes); + +in { + options = { + + services.quorum = { + enable = mkEnableOption "Quorum blockchain daemon"; + + user = mkOption { + type = types.str; + default = "quorum"; + description = "The user as which to run quorum."; + }; + + group = mkOption { + type = types.str; + default = cfg.user; + description = "The group as which to run quorum."; + }; + + port = mkOption { + type = types.port; + default = 21000; + description = "Override the default port on which to listen for connections."; + }; + + nodekeyFile = mkOption { + type = types.path; + default = "${dataDir}/nodekey"; + description = "Path to the nodekey."; + }; + + staticNodes = mkOption { + type = types.listOf types.str; + default = []; + example = [ "enode://dd333ec28f0a8910c92eb4d336461eea1c20803eed9cf2c056557f986e720f8e693605bba2f4e8f289b1162e5ac7c80c914c7178130711e393ca76abc1d92f57@0.0.0.0:30303?discport=0" ]; + description = "List of validator nodes."; + }; + + privateconfig = mkOption { + type = types.str; + default = "ignore"; + description = "Configuration of privacy transaction manager."; + }; + + syncmode = mkOption { + type = types.enum [ "fast" "full" "light" ]; + default = "full"; + description = "Blockchain sync mode."; + }; + + blockperiod = mkOption { + type = types.int; + default = 5; + description = "Default minimum difference between two consecutive block's timestamps in seconds."; + }; + + permissioned = mkOption { + type = types.bool; + default = true; + description = "Allow only a defined list of nodes to connect."; + }; + + rpc = { + enable = mkOption { + type = types.bool; + default = true; + description = "Enable RPC interface."; + }; + + address = mkOption { + type = types.str; + default = "0.0.0.0"; + description = "Listening address for RPC connections."; + }; + + port = mkOption { + type = types.port; + default = 22004; + description = "Override the default port on which to listen for RPC connections."; + }; + + api = mkOption { + type = types.str; + default = "admin,db,eth,debug,miner,net,shh,txpool,personal,web3,quorum,istanbul"; + description = "API's offered over the HTTP-RPC interface."; + }; + }; + + ws = { + enable = mkOption { + type = types.bool; + default = true; + description = "Enable WS-RPC interface."; + }; + + address = mkOption { + type = types.str; + default = "0.0.0.0"; + description = "Listening address for WS-RPC connections."; + }; + + port = mkOption { + type = types.port; + default = 8546; + description = "Override the default port on which to listen for WS-RPC connections."; + }; + + api = mkOption { + type = types.str; + default = "admin,db,eth,debug,miner,net,shh,txpool,personal,web3,quorum,istanbul"; + description = "API's offered over the WS-RPC interface."; + }; + + origins = mkOption { + type = types.str; + default = "*"; + description = "Origins from which to accept websockets requests"; + }; + }; + + genesis = mkOption { + type = types.nullOr types.attrs; + default = null; + example = literalExample '' { + alloc = { + a47385db68718bdcbddc2d2bb7c54018066ec111 = { + balance = "1000000000000000000000000000"; + }; + }; + coinbase = "0x0000000000000000000000000000000000000000"; + config = { + byzantiumBlock = 4; + chainId = 494702925; + eip150Block = 2; + eip155Block = 3; + eip158Block = 3; + homesteadBlock = 1; + isQuorum = true; + istanbul = { + epoch = 30000; + policy = 0; + }; + }; + difficulty = "0x1"; + extraData = "0x0000000000000000000000000000000000000000000000000000000000000000f85ad59438f0508111273d8e482f49410ca4078afc86a961b8410000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0"; + gasLimit = "0x2FEFD800"; + mixHash = "0x63746963616c2062797a616e74696e65201111756c7420746f6c6572616e6365"; + nonce = "0x0"; + parentHash = "0x0000000000000000000000000000000000000000000000000000000000000000"; + timestamp = "0x00"; + }''; + description = "Blockchain genesis settings."; + }; + }; + }; + + config = mkIf cfg.enable { + environment.systemPackages = [ pkgs.quorum ]; + systemd.tmpfiles.rules = [ + "d '${dataDir}' 0770 '${cfg.user}' '${cfg.group}' - -" + ]; + systemd.services.quorum = { + description = "Quorum daemon"; + after = [ "network.target" ]; + wantedBy = [ "multi-user.target" ]; + environment = { + PRIVATE_CONFIG = "${cfg.privateconfig}"; + }; + preStart = '' + if [ ! -d ${dataDir}/geth ]; then + if [ ! -d ${dataDir}/keystore ]; then + echo ERROR: You need to create a wallet before initializing your genesis file, run: + echo # su -s /bin/sh - quorum + echo $ geth --datadir ${dataDir} account new + echo and configure your genesis file accordingly. + exit 1; + fi + ln -s ${staticNodesFile} ${dataDir}/static-nodes.json + ${pkgs.quorum}/bin/geth --datadir ${dataDir} init ${genesisFile} + fi + ''; + serviceConfig = { + User = cfg.user; + Group = cfg.group; + ExecStart = ''${pkgs.quorum}/bin/geth \ + --nodiscover \ + --verbosity 5 \ + --nodekey ${cfg.nodekeyFile} \ + --istanbul.blockperiod ${toString cfg.blockperiod} \ + --syncmode ${cfg.syncmode} \ + ${optionalString (cfg.permissioned) + "--permissioned"} \ + --mine --minerthreads 1 \ + ${optionalString (cfg.rpc.enable) + "--rpc --rpcaddr ${cfg.rpc.address} --rpcport ${toString cfg.rpc.port} --rpcapi ${cfg.rpc.api}"} \ + ${optionalString (cfg.ws.enable) + "--ws --wsaddr ${cfg.ws.address} --wsport ${toString cfg.ws.port} --wsapi ${cfg.ws.api} --wsorigins ${cfg.ws.origins}"} \ + --emitcheckpoints \ + --datadir ${dataDir} \ + --port ${toString cfg.port}''; + Restart = "on-failure"; + + # Hardening measures + PrivateTmp = "true"; + ProtectSystem = "full"; + NoNewPrivileges = "true"; + PrivateDevices = "true"; + MemoryDenyWriteExecute = "true"; + }; + }; + users.users.${cfg.user} = { + name = cfg.user; + group = cfg.group; + description = "Quorum daemon user"; + home = dataDir; + isSystemUser = true; + }; + users.groups.${cfg.group} = {}; + }; +} diff --git a/nixos/modules/services/networking/radicale.nix b/nixos/modules/services/networking/radicale.nix index 1daced4a6c7..30bf22586f8 100644 --- a/nixos/modules/services/networking/radicale.nix +++ b/nixos/modules/services/networking/radicale.nix @@ -59,18 +59,15 @@ in config = mkIf cfg.enable { environment.systemPackages = [ cfg.package ]; - users.users = singleton - { name = "radicale"; - uid = config.ids.uids.radicale; + users.users.radicale = + { uid = config.ids.uids.radicale; description = "radicale user"; home = "/var/lib/radicale"; createHome = true; }; - users.groups = singleton - { name = "radicale"; - gid = config.ids.gids.radicale; - }; + users.groups.radicale = + { gid = config.ids.gids.radicale; }; systemd.services.radicale = { description = "A Simple Calendar and Contact Server"; diff --git a/nixos/modules/services/networking/resilio.nix b/nixos/modules/services/networking/resilio.nix index 9b25aa57583..e74e03fc0b0 100644 --- a/nixos/modules/services/networking/resilio.nix +++ b/nixos/modules/services/networking/resilio.nix @@ -244,7 +244,7 @@ in group = "rslsync"; }; - users.groups = [ { name = "rslsync"; } ]; + users.groups.rslsync = {}; systemd.services.resilio = with pkgs; { description = "Resilio Sync Service"; diff --git a/nixos/modules/services/networking/rxe.nix b/nixos/modules/services/networking/rxe.nix index a6a069ec50c..c7d174a00de 100644 --- a/nixos/modules/services/networking/rxe.nix +++ b/nixos/modules/services/networking/rxe.nix @@ -5,20 +5,6 @@ with lib; let cfg = config.networking.rxe; - runRxeCmd = cmd: ifcs: - concatStrings ( map (x: "${pkgs.rdma-core}/bin/rxe_cfg -n ${cmd} ${x};") ifcs); - - startScript = pkgs.writeShellScriptBin "rxe-start" '' - ${pkgs.rdma-core}/bin/rxe_cfg -n start - ${runRxeCmd "add" cfg.interfaces} - ${pkgs.rdma-core}/bin/rxe_cfg - ''; - - stopScript = pkgs.writeShellScriptBin "rxe-stop" '' - ${runRxeCmd "remove" cfg.interfaces } - ${pkgs.rdma-core}/bin/rxe_cfg -n stop - ''; - in { ###### interface @@ -31,9 +17,8 @@ in { example = [ "eth0" ]; description = '' Enable RDMA on the listed interfaces. The corresponding virtual - RDMA interfaces will be named rxe0 ... rxeN where the ordering - will be as they are named in the list. UDP port 4791 must be - open on the respective ethernet interfaces. + RDMA interfaces will be named rxe_<interface>. + UDP port 4791 must be open on the respective ethernet interfaces. ''; }; }; @@ -44,7 +29,6 @@ in { config = mkIf cfg.enable { systemd.services.rxe = { - path = with pkgs; [ kmod rdma-core ]; description = "RoCE interfaces"; wantedBy = [ "multi-user.target" ]; @@ -54,8 +38,13 @@ in { serviceConfig = { Type = "oneshot"; RemainAfterExit = true; - ExecStart = "${startScript}/bin/rxe-start"; - ExecStop = "${stopScript}/bin/rxe-stop"; + ExecStart = map ( x: + "${pkgs.iproute}/bin/rdma link add rxe_${x} type rxe netdev ${x}" + ) cfg.interfaces; + + ExecStop = map ( x: + "${pkgs.iproute}/bin/rdma link delete rxe_${x}" + ) cfg.interfaces; }; }; }; diff --git a/nixos/modules/services/networking/shairport-sync.nix b/nixos/modules/services/networking/shairport-sync.nix index 68e005ab81d..2e988e0ca2e 100644 --- a/nixos/modules/services/networking/shairport-sync.nix +++ b/nixos/modules/services/networking/shairport-sync.nix @@ -55,9 +55,8 @@ in services.avahi.publish.enable = true; services.avahi.publish.userServices = true; - users.users = singleton - { name = cfg.user; - description = "Shairport user"; + users.users.${cfg.user} = + { description = "Shairport user"; isSystemUser = true; createHome = true; home = "/var/lib/shairport-sync"; diff --git a/nixos/modules/services/networking/shorewall.nix b/nixos/modules/services/networking/shorewall.nix new file mode 100644 index 00000000000..16383be2530 --- /dev/null +++ b/nixos/modules/services/networking/shorewall.nix @@ -0,0 +1,70 @@ +{ config, lib, pkgs, ... }: +let + types = lib.types; + cfg = config.services.shorewall; +in { + options = { + services.shorewall = { + enable = lib.mkOption { + type = types.bool; + default = false; + description = '' + Whether to enable Shorewall IPv4 Firewall. + + + Enabling this service WILL disable the existing NixOS + firewall! Default firewall rules provided by packages are not + considered at the moment. + + + ''; + }; + package = lib.mkOption { + type = types.package; + default = pkgs.shorewall; + defaultText = "pkgs.shorewall"; + description = "The shorewall package to use."; + }; + configs = lib.mkOption { + type = types.attrsOf types.lines; + default = {}; + description = '' + This option defines the Shorewall configs. + The attribute name defines the name of the config, + and the attribute value defines the content of the config. + ''; + apply = lib.mapAttrs (name: text: pkgs.writeText "${name}" text); + }; + }; + }; + + config = lib.mkIf cfg.enable { + systemd.services.firewall.enable = false; + systemd.services.shorewall = { + description = "Shorewall IPv4 Firewall"; + after = [ "ipset.target" ]; + before = [ "network-pre.target" ]; + wants = [ "network-pre.target" ]; + wantedBy = [ "multi-user.target" ]; + reloadIfChanged = true; + restartTriggers = lib.attrValues cfg.configs; + serviceConfig = { + Type = "oneshot"; + RemainAfterExit = "yes"; + ExecStart = "${cfg.package}/bin/shorewall start"; + ExecReload = "${cfg.package}/bin/shorewall reload"; + ExecStop = "${cfg.package}/bin/shorewall stop"; + }; + preStart = '' + install -D -d -m 750 /var/lib/shorewall + install -D -d -m 755 /var/lock/subsys + touch /var/log/shorewall.log + chown 750 /var/log/shorewall.log + ''; + }; + environment = { + etc = lib.mapAttrs' (name: conf: lib.nameValuePair "shorewall/${name}" {source=conf;}) cfg.configs; + systemPackages = [ cfg.package ]; + }; + }; +} diff --git a/nixos/modules/services/networking/shorewall6.nix b/nixos/modules/services/networking/shorewall6.nix new file mode 100644 index 00000000000..e081aedc6c3 --- /dev/null +++ b/nixos/modules/services/networking/shorewall6.nix @@ -0,0 +1,70 @@ +{ config, lib, pkgs, ... }: +let + types = lib.types; + cfg = config.services.shorewall6; +in { + options = { + services.shorewall6 = { + enable = lib.mkOption { + type = types.bool; + default = false; + description = '' + Whether to enable Shorewall IPv6 Firewall. + + + Enabling this service WILL disable the existing NixOS + firewall! Default firewall rules provided by packages are not + considered at the moment. + + + ''; + }; + package = lib.mkOption { + type = types.package; + default = pkgs.shorewall; + defaultText = "pkgs.shorewall"; + description = "The shorewall package to use."; + }; + configs = lib.mkOption { + type = types.attrsOf types.lines; + default = {}; + description = '' + This option defines the Shorewall configs. + The attribute name defines the name of the config, + and the attribute value defines the content of the config. + ''; + apply = lib.mapAttrs (name: text: pkgs.writeText "${name}" text); + }; + }; + }; + + config = lib.mkIf cfg.enable { + systemd.services.firewall.enable = false; + systemd.services.shorewall6 = { + description = "Shorewall IPv6 Firewall"; + after = [ "ipset.target" ]; + before = [ "network-pre.target" ]; + wants = [ "network-pre.target" ]; + wantedBy = [ "multi-user.target" ]; + reloadIfChanged = true; + restartTriggers = lib.attrValues cfg.configs; + serviceConfig = { + Type = "oneshot"; + RemainAfterExit = "yes"; + ExecStart = "${cfg.package}/bin/shorewall6 start"; + ExecReload = "${cfg.package}/bin/shorewall6 reload"; + ExecStop = "${cfg.package}/bin/shorewall6 stop"; + }; + preStart = '' + install -D -d -m 750 /var/lib/shorewall6 + install -D -d -m 755 /var/lock/subsys + touch /var/log/shorewall6.log + chown 750 /var/log/shorewall6.log + ''; + }; + environment = { + etc = lib.mapAttrs' (name: conf: lib.nameValuePair "shorewall6/${name}" {source=conf;}) cfg.configs; + systemPackages = [ cfg.package ]; + }; + }; +} diff --git a/nixos/modules/services/networking/shout.nix b/nixos/modules/services/networking/shout.nix index e548ec66962..a808a7f39d0 100644 --- a/nixos/modules/services/networking/shout.nix +++ b/nixos/modules/services/networking/shout.nix @@ -82,8 +82,7 @@ in { }; config = mkIf cfg.enable { - users.users = singleton { - name = "shout"; + users.users.shout = { uid = config.ids.uids.shout; description = "Shout daemon user"; home = shoutHome; diff --git a/nixos/modules/services/networking/smartdns.nix b/nixos/modules/services/networking/smartdns.nix new file mode 100644 index 00000000000..f1888af7041 --- /dev/null +++ b/nixos/modules/services/networking/smartdns.nix @@ -0,0 +1,61 @@ +{ lib, pkgs, config, ... }: + +with lib; + +let + inherit (lib.types) attrsOf coercedTo listOf oneOf str int bool; + cfg = config.services.smartdns; + + confFile = pkgs.writeText "smartdns.conf" (with generators; + toKeyValue { + mkKeyValue = mkKeyValueDefault { + mkValueString = v: + if isBool v then + if v then "yes" else "no" + else + mkValueStringDefault { } v; + } " "; + listsAsDuplicateKeys = + true; # Allowing duplications because we need to deal with multiple entries with the same key. + } cfg.settings); +in { + options.services.smartdns = { + enable = mkEnableOption "SmartDNS DNS server"; + + bindPort = mkOption { + type = types.port; + default = 53; + description = "DNS listening port number."; + }; + + settings = mkOption { + type = + let atom = oneOf [ str int bool ]; + in attrsOf (coercedTo atom toList (listOf atom)); + example = literalExample '' + { + bind = ":5353 -no-rule -group example"; + cache-size = 4096; + server-tls = [ "8.8.8.8:853" "1.1.1.1:853" ]; + server-https = "https://cloudflare-dns.com/dns-query -exclude-default-group"; + prefetch-domain = true; + speed-check-mode = "ping,tcp:80"; + }; + ''; + description = '' + A set that will be generated into configuration file, see the SmartDNS README for details of configuration parameters. + You could override the options here like by writing settings.bind = ":5353 -no-rule -group example";. + ''; + }; + }; + + config = lib.mkIf cfg.enable { + services.smartdns.settings.bind = mkDefault ":${toString cfg.bindPort}"; + + systemd.packages = [ pkgs.smartdns ]; + systemd.services.smartdns.wantedBy = [ "multi-user.target" ]; + environment.etc."smartdns/smartdns.conf".source = confFile; + environment.etc."default/smartdns".source = + "${pkgs.smartdns}/etc/default/smartdns"; + }; +} diff --git a/nixos/modules/services/networking/smokeping.nix b/nixos/modules/services/networking/smokeping.nix index b48b0b3a9d6..37ee2a80389 100644 --- a/nixos/modules/services/networking/smokeping.nix +++ b/nixos/modules/services/networking/smokeping.nix @@ -280,8 +280,7 @@ in fping6.source = "${pkgs.fping}/bin/fping6"; }; environment.systemPackages = [ pkgs.fping ]; - users.users = singleton { - name = cfg.user; + users.users.${cfg.user} = { isNormalUser = false; isSystemUser = true; uid = config.ids.uids.smokeping; diff --git a/nixos/modules/services/networking/spacecookie.nix b/nixos/modules/services/networking/spacecookie.nix new file mode 100644 index 00000000000..c4d06df6ad4 --- /dev/null +++ b/nixos/modules/services/networking/spacecookie.nix @@ -0,0 +1,83 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.services.spacecookie; + configFile = pkgs.writeText "spacecookie.json" (lib.generators.toJSON {} { + inherit (cfg) hostname port root; + }); +in { + + options = { + + services.spacecookie = { + + enable = mkEnableOption "spacecookie"; + + hostname = mkOption { + type = types.str; + default = "localhost"; + description = "The hostname the service is reachable via. Clients will use this hostname for further requests after loading the initial gopher menu."; + }; + + port = mkOption { + type = types.port; + default = 70; + description = "Port the gopher service should be exposed on."; + }; + + root = mkOption { + type = types.path; + default = "/srv/gopher"; + description = "The root directory spacecookie serves via gopher."; + }; + }; + }; + + config = mkIf cfg.enable { + + systemd.sockets.spacecookie = { + description = "Socket for the Spacecookie Gopher Server"; + wantedBy = [ "sockets.target" ]; + listenStreams = [ "[::]:${toString cfg.port}" ]; + socketConfig = { + BindIPv6Only = "both"; + }; + }; + + systemd.services.spacecookie = { + description = "Spacecookie Gopher Server"; + wantedBy = [ "multi-user.target" ]; + requires = [ "spacecookie.socket" ]; + + serviceConfig = { + Type = "notify"; + ExecStart = "${pkgs.haskellPackages.spacecookie}/bin/spacecookie ${configFile}"; + FileDescriptorStoreMax = 1; + + DynamicUser = true; + + ProtectSystem = "strict"; + ProtectHome = true; + PrivateTmp = true; + PrivateDevices = true; + PrivateMounts = true; + PrivateUsers = true; + + ProtectKernelTunables = true; + ProtectKernelModules = true; + ProtectControlGroups = true; + + CapabilityBoundingSet = ""; + NoNewPrivileges = true; + LockPersonality = true; + RestrictRealtime = true; + + # AF_UNIX for communication with systemd + # AF_INET replaced by BindIPv6Only=both + RestrictAddressFamilies = "AF_UNIX AF_INET6"; + }; + }; + }; +} diff --git a/nixos/modules/services/networking/ssh/sshd.nix b/nixos/modules/services/networking/ssh/sshd.nix index b0e2e303cbc..17f31e3a488 100644 --- a/nixos/modules/services/networking/ssh/sshd.nix +++ b/nixos/modules/services/networking/ssh/sshd.nix @@ -9,15 +9,15 @@ let # This middle-ground solution ensures *an* sshd can do their basic validation # on the configuration. validationPackage = if pkgs.stdenv.buildPlatform == pkgs.stdenv.hostPlatform - then [ cfgc.package ] - else [ pkgs.buildPackages.openssh ]; + then cfgc.package + else pkgs.buildPackages.openssh; sshconf = pkgs.runCommand "sshd.conf-validated" { nativeBuildInputs = [ validationPackage ]; } '' cat >$out <ipsec.conf file. diff --git a/nixos/modules/services/networking/stubby.nix b/nixos/modules/services/networking/stubby.nix index b38bcd4cec0..c5e0f929a12 100644 --- a/nixos/modules/services/networking/stubby.nix +++ b/nixos/modules/services/networking/stubby.nix @@ -72,6 +72,7 @@ let resolution_type: GETDNS_RESOLUTION_STUB dns_transport_list: ${fallbacks} + appdata_dir: "/var/cache/stubby" tls_authentication: ${cfg.authenticationMode} tls_query_padding_blocksize: ${toString cfg.queryPaddingBlocksize} edns_client_subnet_private: ${if cfg.subnetPrivate then "1" else "0"} @@ -204,10 +205,12 @@ in wantedBy = [ "multi-user.target" ]; serviceConfig = { + Type = "notify"; AmbientCapabilities = "CAP_NET_BIND_SERVICE"; CapabilityBoundingSet = "CAP_NET_BIND_SERVICE"; ExecStart = "${pkgs.stubby}/bin/stubby -C ${confFile} ${optionalString cfg.debugLogging "-l"}"; DynamicUser = true; + CacheDirectory = "stubby"; }; }; }; diff --git a/nixos/modules/services/networking/supplicant.nix b/nixos/modules/services/networking/supplicant.nix index 35c1e649e2e..b5b9989ce18 100644 --- a/nixos/modules/services/networking/supplicant.nix +++ b/nixos/modules/services/networking/supplicant.nix @@ -39,8 +39,6 @@ let bindsTo = deps; after = deps; before = [ "network.target" ]; - # Receive restart event after resume - partOf = [ "post-resume.target" ]; path = [ pkgs.coreutils ]; diff --git a/nixos/modules/services/networking/supybot.nix b/nixos/modules/services/networking/supybot.nix index 64eb1106832..dc9fb31ffd0 100644 --- a/nixos/modules/services/networking/supybot.nix +++ b/nixos/modules/services/networking/supybot.nix @@ -3,32 +3,35 @@ with lib; let - cfg = config.services.supybot; - + isStateDirHome = hasPrefix "/home/" cfg.stateDir; + isStateDirVar = cfg.stateDir == "/var/lib/supybot"; + pyEnv = pkgs.python3.withPackages (p: [ p.limnoria ] ++ (cfg.extraPackages p)); in - { - options = { services.supybot = { enable = mkOption { + type = types.bool; default = false; - description = "Enable Supybot, an IRC bot"; + description = "Enable Supybot, an IRC bot (also known as Limnoria)."; }; stateDir = mkOption { - # Setting this to /var/lib/supybot caused useradd to fail - default = "/home/supybot"; + type = types.path; + default = if versionAtLeast config.system.stateVersion "20.09" + then "/var/lib/supybot" + else "/home/supybot"; + defaultText = "/var/lib/supybot"; description = "The root directory, logs and plugins are stored here"; }; configFile = mkOption { type = types.path; description = '' - Path to a supybot config file. This can be generated by + Path to initial supybot config file. This can be generated by running supybot-wizard. Note: all paths should include the full path to the stateDir @@ -36,44 +39,72 @@ in ''; }; + plugins = mkOption { + type = types.attrsOf types.path; + default = {}; + description = '' + Attribute set of additional plugins that will be symlinked to the + plugin subdirectory. + + Please note that you still need to add the plugins to the config + file (or with !load) using their attribute name. + ''; + example = literalExample '' + let + plugins = pkgs.fetchzip { + url = "https://github.com/ProgVal/Supybot-plugins/archive/57c2450c.zip"; + sha256 = "077snf84ibnva3sbpzdfpfma6hcdw7dflwnhg6pw7mgnf0nd84qd"; + }; + in + { + Wikipedia = "''${plugins}/Wikipedia"; + Decide = ./supy-decide; + } + ''; + }; + + extraPackages = mkOption { + default = p: []; + description = '' + Extra Python packages available to supybot plugins. The + value must be a function which receives the attrset defined + in python3Packages as the sole argument. + ''; + example = literalExample ''p: [ p.lxml p.requests ]''; + }; + }; }; - config = mkIf cfg.enable { - environment.systemPackages = [ pkgs.pythonPackages.limnoria ]; + environment.systemPackages = [ pkgs.python3Packages.limnoria ]; - users.users = singleton { - name = "supybot"; + users.users.supybot = { uid = config.ids.uids.supybot; group = "supybot"; description = "Supybot IRC bot user"; home = cfg.stateDir; - createHome = true; + isSystemUser = true; }; users.groups.supybot = { - name = "supybot"; gid = config.ids.gids.supybot; }; systemd.services.supybot = { description = "Supybot, an IRC bot"; + documentation = [ "https://limnoria.readthedocs.io/" ]; after = [ "network.target" ]; wantedBy = [ "multi-user.target" ]; - path = [ pkgs.pythonPackages.limnoria ]; preStart = '' - cd ${cfg.stateDir} - mkdir -p backup conf data plugins logs/plugins tmp web - ln -sf ${cfg.configFile} supybot.cfg # This needs to be created afresh every time - rm -f supybot.cfg.bak + rm -f '${cfg.stateDir}/supybot.cfg.bak' ''; serviceConfig = { - ExecStart = "${pkgs.pythonPackages.limnoria}/bin/supybot ${cfg.stateDir}/supybot.cfg"; + ExecStart = "${pyEnv}/bin/supybot ${cfg.stateDir}/supybot.cfg"; PIDFile = "/run/supybot.pid"; User = "supybot"; Group = "supybot"; @@ -81,8 +112,50 @@ in Restart = "on-abort"; StartLimitInterval = "5m"; StartLimitBurst = "1"; + + NoNewPrivileges = true; + PrivateDevices = true; + PrivateMounts = true; + PrivateTmp = true; + ProtectControlGroups = true; + ProtectKernelModules = true; + ProtectKernelTunables = true; + RestrictAddressFamilies = [ "AF_INET" "AF_INET6" ]; + RestrictSUIDSGID = true; + SystemCallArchitectures = "native"; + RestrictNamespaces = true; + RestrictRealtime = true; + LockPersonality = true; + MemoryDenyWriteExecute = true; + RemoveIPC = true; + ProtectHostname = true; + CapabilityBoundingSet = ""; + ProtectSystem = "full"; + } + // optionalAttrs isStateDirVar { + StateDirectory = "supybot"; + ProtectSystem = "strict"; + } + // optionalAttrs (!isStateDirHome) { + ProtectHome = true; }; }; + systemd.tmpfiles.rules = [ + "d '${cfg.stateDir}' 0700 supybot supybot - -" + "d '${cfg.stateDir}/backup' 0750 supybot supybot - -" + "d '${cfg.stateDir}/conf' 0750 supybot supybot - -" + "d '${cfg.stateDir}/data' 0750 supybot supybot - -" + "d '${cfg.stateDir}/plugins' 0750 supybot supybot - -" + "d '${cfg.stateDir}/logs' 0750 supybot supybot - -" + "d '${cfg.stateDir}/logs/plugins' 0750 supybot supybot - -" + "d '${cfg.stateDir}/tmp' 0750 supybot supybot - -" + "d '${cfg.stateDir}/web' 0750 supybot supybot - -" + "L '${cfg.stateDir}/supybot.cfg' - - - - ${cfg.configFile}" + ] + ++ (flip mapAttrsToList cfg.plugins (name: dest: + "L+ '${cfg.stateDir}/plugins/${name}' - - - - ${dest}" + )); + }; } diff --git a/nixos/modules/services/networking/syncthing.nix b/nixos/modules/services/networking/syncthing.nix index b3f2af5b179..e717d78feed 100644 --- a/nixos/modules/services/networking/syncthing.nix +++ b/nixos/modules/services/networking/syncthing.nix @@ -112,12 +112,12 @@ in { addresses = [ "tcp://192.168.0.10:51820" ]; }; }; - type = types.attrsOf (types.submodule ({ config, ... }: { + type = types.attrsOf (types.submodule ({ name, ... }: { options = { name = mkOption { type = types.str; - default = config._module.args.name; + default = name; description = '' Name of the device ''; @@ -169,13 +169,15 @@ in { description = '' folders which should be shared by syncthing. ''; - example = { - "/home/user/sync" = { - id = "syncme"; - devices = [ "bigbox" ]; - }; - }; - type = types.attrsOf (types.submodule ({ config, ... }: { + example = literalExample '' + { + "/home/user/sync" = { + id = "syncme"; + devices = [ "bigbox" ]; + }; + } + ''; + type = types.attrsOf (types.submodule ({ name, ... }: { options = { enable = mkOption { @@ -190,7 +192,7 @@ in { path = mkOption { type = types.str; - default = config._module.args.name; + default = name; description = '' The path to the folder which should be shared. ''; @@ -198,7 +200,7 @@ in { id = mkOption { type = types.str; - default = config._module.args.name; + default = name; description = '' The id of the folder. Must be the same on all devices. ''; @@ -206,7 +208,7 @@ in { label = mkOption { type = types.str; - default = config._module.args.name; + default = name; description = '' The label of the folder. ''; @@ -484,6 +486,24 @@ in { -gui-address=${cfg.guiAddress} \ -home=${cfg.configDir} ''; + MemoryDenyWriteExecute = true; + NoNewPrivileges = true; + PrivateDevices = true; + PrivateMounts = true; + PrivateTmp = true; + PrivateUsers = true; + ProtectControlGroups = true; + ProtectHostname = true; + ProtectKernelModules = true; + ProtectKernelTunables = true; + RestrictNamespaces = true; + RestrictRealtime = true; + RestrictSUIDSGID = true; + CapabilityBoundingSet = [ + "~CAP_SYS_PTRACE" "~CAP_SYS_ADMIN" + "~CAP_SETGID" "~CAP_SETUID" "~CAP_SETPCAP" + "~CAP_SYS_TIME" "~CAP_KILL" + ]; }; }; syncthing-init = mkIf ( diff --git a/nixos/modules/services/networking/tailscale.nix b/nixos/modules/services/networking/tailscale.nix new file mode 100644 index 00000000000..513c42b4011 --- /dev/null +++ b/nixos/modules/services/networking/tailscale.nix @@ -0,0 +1,46 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let cfg = config.services.tailscale; +in { + meta.maintainers = with maintainers; [ danderson mbaillie ]; + + options.services.tailscale = { + enable = mkEnableOption "Tailscale client daemon"; + + port = mkOption { + type = types.port; + default = 41641; + description = "The port to listen on for tunnel traffic (0=autoselect)."; + }; + }; + + config = mkIf cfg.enable { + systemd.services.tailscale = { + description = "Tailscale client daemon"; + + after = [ "network-pre.target" ]; + wants = [ "network-pre.target" ]; + wantedBy = [ "multi-user.target" ]; + + unitConfig = { + StartLimitIntervalSec = 0; + StartLimitBurst = 0; + }; + + serviceConfig = { + ExecStart = + "${pkgs.tailscale}/bin/tailscaled --port ${toString cfg.port}"; + + RuntimeDirectory = "tailscale"; + RuntimeDirectoryMode = 755; + + StateDirectory = "tailscale"; + StateDirectoryMode = 700; + + Restart = "on-failure"; + }; + }; + }; +} diff --git a/nixos/modules/services/networking/tcpcrypt.nix b/nixos/modules/services/networking/tcpcrypt.nix index a0ccb995009..18f2e135124 100644 --- a/nixos/modules/services/networking/tcpcrypt.nix +++ b/nixos/modules/services/networking/tcpcrypt.nix @@ -29,8 +29,7 @@ in config = mkIf cfg.enable { - users.users = singleton { - name = "tcpcryptd"; + users.users.tcpcryptd = { uid = config.ids.uids.tcpcryptd; description = "tcpcrypt daemon user"; }; diff --git a/nixos/modules/services/networking/tox-bootstrapd.nix b/nixos/modules/services/networking/tox-bootstrapd.nix index 1d349215169..f88e34827d0 100644 --- a/nixos/modules/services/networking/tox-bootstrapd.nix +++ b/nixos/modules/services/networking/tox-bootstrapd.nix @@ -56,9 +56,8 @@ in config = mkIf config.services.toxBootstrapd.enable { - users.users = singleton - { name = "tox-bootstrapd"; - uid = config.ids.uids.tox-bootstrapd; + users.users.tox-bootstrapd = + { uid = config.ids.uids.tox-bootstrapd; description = "Tox bootstrap daemon user"; inherit home; createHome = true; diff --git a/nixos/modules/services/networking/unifi.nix b/nixos/modules/services/networking/unifi.nix index c922ba15960..4bdfa8143dc 100644 --- a/nixos/modules/services/networking/unifi.nix +++ b/nixos/modules/services/networking/unifi.nix @@ -147,8 +147,10 @@ in }) mountPoints; systemd.tmpfiles.rules = [ - "e '${stateDir}' 0700 unifi - - -" + "d '${stateDir}' 0700 unifi - - -" "d '${stateDir}/data' 0700 unifi - - -" + "d '${stateDir}/webapps' 0700 unifi - - -" + "L+ '${stateDir}/webapps/ROOT' - - - - ${cfg.unifiPackage}/webapps/ROOT" ]; systemd.services.unifi = { @@ -161,17 +163,6 @@ in # This a HACK to fix missing dependencies of dynamic libs extracted from jars environment.LD_LIBRARY_PATH = with pkgs.stdenv; "${cc.cc.lib}/lib"; - preStart = '' - # Create the volatile webapps - rm -rf "${stateDir}/webapps" - mkdir -p "${stateDir}/webapps" - ln -s "${cfg.unifiPackage}/webapps/ROOT" "${stateDir}/webapps/ROOT" - ''; - - postStop = '' - rm -rf "${stateDir}/webapps" - ''; - serviceConfig = { Type = "simple"; ExecStart = "${(removeSuffix "\n" cmd)} start"; diff --git a/nixos/modules/services/networking/vsftpd.nix b/nixos/modules/services/networking/vsftpd.nix index 90093d9a78d..b3e20184423 100644 --- a/nixos/modules/services/networking/vsftpd.nix +++ b/nixos/modules/services/networking/vsftpd.nix @@ -133,8 +133,8 @@ let ${optionalString cfg.enableVirtualUsers '' guest_enable=YES guest_username=vsftpd - pam_service_name=vsftpd ''} + pam_service_name=vsftpd ${cfg.extraConfig} ''; @@ -279,21 +279,22 @@ in message = "vsftpd: If enableVirtualUsers is true, you need to setup both the userDbPath and localUsers options."; }]; - users.users = - [ { name = "vsftpd"; - uid = config.ids.uids.vsftpd; - description = "VSFTPD user"; - home = if cfg.localRoot != null - then cfg.localRoot # <= Necessary for virtual users. - else "/homeless-shelter"; - } - ] ++ optional cfg.anonymousUser - { name = "ftp"; + users.users = { + "vsftpd" = { + uid = config.ids.uids.vsftpd; + description = "VSFTPD user"; + home = if cfg.localRoot != null + then cfg.localRoot # <= Necessary for virtual users. + else "/homeless-shelter"; + }; + } // optionalAttrs cfg.anonymousUser { + "ftp" = { name = "ftp"; uid = config.ids.uids.ftp; group = "ftp"; description = "Anonymous FTP user"; home = cfg.anonymousUserHome; }; + }; users.groups.ftp.gid = config.ids.gids.ftp; diff --git a/nixos/modules/services/networking/wg-quick.nix b/nixos/modules/services/networking/wg-quick.nix index b770d47d269..ff1bdeed9f4 100644 --- a/nixos/modules/services/networking/wg-quick.nix +++ b/nixos/modules/services/networking/wg-quick.nix @@ -302,7 +302,7 @@ in { ###### implementation config = mkIf (cfg.interfaces != {}) { - boot.extraModulePackages = [ kernel.wireguard ]; + boot.extraModulePackages = optional (versionOlder kernel.kernel.version "5.6") kernel.wireguard; environment.systemPackages = [ pkgs.wireguard-tools ]; # This is forced to false for now because the default "--validmark" rpfilter we apply on reverse path filtering # breaks the wg-quick routing because wireguard packets leave with a fwmark from wireguard. diff --git a/nixos/modules/services/networking/wireguard.nix b/nixos/modules/services/networking/wireguard.nix index 980961225c9..e8f83f6dd8b 100644 --- a/nixos/modules/services/networking/wireguard.nix +++ b/nixos/modules/services/networking/wireguard.nix @@ -151,7 +151,7 @@ let publicKey = mkOption { example = "xTIBA5rboUvnH4htodjb6e697QjLERt1NAB4mZqp8Dg="; type = types.str; - description = "The base64 public key the peer."; + description = "The base64 public key of the peer."; }; presharedKey = mkOption { @@ -428,14 +428,14 @@ in ++ (attrValues ( mapAttrs (name: value: { assertion = value.generatePrivateKeyFile -> (value.privateKey == null); - message = "networking.wireguard.interfaces.${name}.generatePrivateKey must not be set if networking.wireguard.interfaces.${name}.privateKey is set."; + message = "networking.wireguard.interfaces.${name}.generatePrivateKeyFile must not be set if networking.wireguard.interfaces.${name}.privateKey is set."; }) cfg.interfaces)) ++ map ({ interfaceName, peer, ... }: { assertion = (peer.presharedKey == null) || (peer.presharedKeyFile == null); message = "networking.wireguard.interfaces.${interfaceName} peer «${peer.publicKey}» has both presharedKey and presharedKeyFile set, but only one can be used."; }) all_peers; - boot.extraModulePackages = [ kernel.wireguard ]; + boot.extraModulePackages = optional (versionOlder kernel.kernel.version "5.6") kernel.wireguard; environment.systemPackages = [ pkgs.wireguard-tools ]; systemd.services = diff --git a/nixos/modules/services/networking/wpa_supplicant.nix b/nixos/modules/services/networking/wpa_supplicant.nix index 8f05c3949fb..de0f11595a9 100644 --- a/nixos/modules/services/networking/wpa_supplicant.nix +++ b/nixos/modules/services/networking/wpa_supplicant.nix @@ -233,6 +233,7 @@ in { path = [ pkgs.wpa_supplicant ]; script = '' + iface_args="-s -u -D${cfg.driver} -c ${configFile}" ${if ifaces == [] then '' for i in $(cd /sys/class/net && echo *); do DEVTYPE= @@ -240,14 +241,14 @@ in { if [ -e "$UEVENT_PATH" ]; then source "$UEVENT_PATH" if [ "$DEVTYPE" = "wlan" -o -e /sys/class/net/$i/wireless ]; then - ifaces="$ifaces''${ifaces:+ -N} -i$i" + args+="''${args:+ -N} -i$i $iface_args" fi fi done '' else '' - ifaces="${concatStringsSep " -N " (map (i: "-i${i}") ifaces)}" + args="${concatMapStringsSep " -N " (i: "-i${i} $iface_args") ifaces}" ''} - exec wpa_supplicant -s -u -D${cfg.driver} -c ${configFile} $ifaces + exec wpa_supplicant $args ''; }; diff --git a/nixos/modules/services/networking/xandikos.nix b/nixos/modules/services/networking/xandikos.nix new file mode 100644 index 00000000000..87c029156b9 --- /dev/null +++ b/nixos/modules/services/networking/xandikos.nix @@ -0,0 +1,148 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.services.xandikos; +in +{ + + options = { + services.xandikos = { + enable = mkEnableOption "Xandikos CalDAV and CardDAV server"; + + package = mkOption { + type = types.package; + default = pkgs.xandikos; + defaultText = "pkgs.xandikos"; + description = "The Xandikos package to use."; + }; + + address = mkOption { + type = types.str; + default = "localhost"; + description = '' + The IP address on which Xandikos will listen. + By default listens on localhost. + ''; + }; + + port = mkOption { + type = types.port; + default = 8080; + description = "The port of the Xandikos web application"; + }; + + routePrefix = mkOption { + type = types.str; + default = "/"; + description = '' + Path to Xandikos. + Useful when Xandikos is behind a reverse proxy. + ''; + }; + + extraOptions = mkOption { + default = []; + type = types.listOf types.str; + example = literalExample '' + [ "--autocreate" + "--defaults" + "--current-user-principal user" + "--dump-dav-xml" + ] + ''; + description = '' + Extra command line arguments to pass to xandikos. + ''; + }; + + nginx = mkOption { + default = {}; + description = '' + Configuration for nginx reverse proxy. + ''; + + type = types.submodule { + options = { + enable = mkOption { + type = types.bool; + default = false; + description = '' + Configure the nginx reverse proxy settings. + ''; + }; + + hostName = mkOption { + type = types.str; + description = '' + The hostname use to setup the virtualhost configuration + ''; + }; + }; + }; + }; + + }; + + }; + + config = mkIf cfg.enable ( + mkMerge [ + { + meta.maintainers = [ lib.maintainers."0x4A6F" ]; + + systemd.services.xandikos = { + description = "A Simple Calendar and Contact Server"; + after = [ "network.target" ]; + wantedBy = [ "multi-user.target" ]; + + serviceConfig = { + User = "xandikos"; + Group = "xandikos"; + DynamicUser = "yes"; + RuntimeDirectory = "xandikos"; + StateDirectory = "xandikos"; + StateDirectoryMode = "0700"; + PrivateDevices = true; + # Sandboxing + CapabilityBoundingSet = "CAP_NET_RAW CAP_NET_ADMIN"; + ProtectSystem = "strict"; + ProtectHome = true; + PrivateTmp = true; + ProtectKernelTunables = true; + ProtectKernelModules = true; + ProtectControlGroups = true; + RestrictAddressFamilies = "AF_INET AF_INET6 AF_UNIX AF_PACKET AF_NETLINK"; + RestrictNamespaces = true; + LockPersonality = true; + MemoryDenyWriteExecute = true; + RestrictRealtime = true; + RestrictSUIDSGID = true; + ExecStart = '' + ${cfg.package}/bin/xandikos \ + --directory /var/lib/xandikos \ + --listen_address ${cfg.address} \ + --port ${toString cfg.port} \ + --route-prefix ${cfg.routePrefix} \ + ${lib.concatStringsSep " " cfg.extraOptions} + ''; + }; + }; + } + + ( + mkIf cfg.nginx.enable { + services.nginx = { + enable = true; + virtualHosts."${cfg.nginx.hostName}" = { + locations."/" = { + proxyPass = "http://${cfg.address}:${toString cfg.port}/"; + }; + }; + }; + } + ) + ] + ); +} diff --git a/nixos/modules/services/networking/zerotierone.nix b/nixos/modules/services/networking/zerotierone.nix index 764af3846fe..cf39ed065a7 100644 --- a/nixos/modules/services/networking/zerotierone.nix +++ b/nixos/modules/services/networking/zerotierone.nix @@ -38,10 +38,13 @@ in config = mkIf cfg.enable { systemd.services.zerotierone = { description = "ZeroTierOne"; - path = [ cfg.package ]; - bindsTo = [ "network-online.target" ]; - after = [ "network-online.target" ]; + wantedBy = [ "multi-user.target" ]; + after = [ "network.target" ]; + wants = [ "network-online.target" ]; + + path = [ cfg.package ]; + preStart = '' mkdir -p /var/lib/zerotier-one/networks.d chmod 700 /var/lib/zerotier-one @@ -53,6 +56,7 @@ in ExecStart = "${cfg.package}/bin/zerotier-one -p${toString cfg.port}"; Restart = "always"; KillMode = "process"; + TimeoutStopSec = 5; }; }; @@ -63,5 +67,16 @@ in networking.firewall.allowedUDPPorts = [ cfg.port ]; environment.systemPackages = [ cfg.package ]; + + # Prevent systemd from potentially changing the MAC address + systemd.network.links."50-zerotier" = { + matchConfig = { + OriginalName = "zt*"; + }; + linkConfig = { + AutoNegotiation = false; + MACAddressPolicy = "none"; + }; + }; }; } diff --git a/nixos/modules/services/networking/znc/default.nix b/nixos/modules/services/networking/znc/default.nix index 0a9848a4934..a7315896c50 100644 --- a/nixos/modules/services/networking/znc/default.nix +++ b/nixos/modules/services/networking/znc/default.nix @@ -287,20 +287,22 @@ in ''; }; - users.users = optional (cfg.user == defaultUser) - { name = defaultUser; - description = "ZNC server daemon owner"; - group = defaultUser; - uid = config.ids.uids.znc; - home = cfg.dataDir; - createHome = true; + users.users = optionalAttrs (cfg.user == defaultUser) { + ${defaultUser} = + { description = "ZNC server daemon owner"; + group = defaultUser; + uid = config.ids.uids.znc; + home = cfg.dataDir; + createHome = true; + }; }; - users.groups = optional (cfg.user == defaultUser) - { name = defaultUser; - gid = config.ids.gids.znc; - members = [ defaultUser ]; - }; + users.groups = optionalAttrs (cfg.user == defaultUser) { + ${defaultUser} = + { gid = config.ids.gids.znc; + members = [ defaultUser ]; + }; + }; }; } diff --git a/nixos/modules/services/printing/cupsd.nix b/nixos/modules/services/printing/cupsd.nix index cc35be49bc3..59306d625e6 100644 --- a/nixos/modules/services/printing/cupsd.nix +++ b/nixos/modules/services/printing/cupsd.nix @@ -288,9 +288,8 @@ in config = mkIf config.services.printing.enable { - users.users = singleton - { name = "cups"; - uid = config.ids.uids.cups; + users.users.cups = + { uid = config.ids.uids.cups; group = "lp"; description = "CUPS printing services"; }; diff --git a/nixos/modules/services/scheduling/atd.nix b/nixos/modules/services/scheduling/atd.nix index a32907647a0..cefe72b0e99 100644 --- a/nixos/modules/services/scheduling/atd.nix +++ b/nixos/modules/services/scheduling/atd.nix @@ -57,22 +57,16 @@ in security.pam.services.atd = {}; - users.users = singleton - { name = "atd"; - uid = config.ids.uids.atd; + users.users.atd = + { uid = config.ids.uids.atd; description = "atd user"; home = "/var/empty"; }; - users.groups = singleton - { name = "atd"; - gid = config.ids.gids.atd; - }; + users.groups.atd.gid = config.ids.gids.atd; systemd.services.atd = { description = "Job Execution Daemon (atd)"; - after = [ "systemd-udev-settle.service" ]; - wants = [ "systemd-udev-settle.service" ]; wantedBy = [ "multi-user.target" ]; path = [ at ]; diff --git a/nixos/modules/services/scheduling/fcron.nix b/nixos/modules/services/scheduling/fcron.nix index e43ca014e14..42bed21bf25 100644 --- a/nixos/modules/services/scheduling/fcron.nix +++ b/nixos/modules/services/scheduling/fcron.nix @@ -86,7 +86,8 @@ in services.fcron.systab = systemCronJobs; - environment.etc = + environment.etc = listToAttrs + (map (x: { name = x.target; value = x; }) [ (allowdeny "allow" (cfg.allow)) (allowdeny "deny" cfg.deny) # see man 5 fcron.conf @@ -112,7 +113,7 @@ in gid = config.ids.gids.fcron; mode = "0644"; } - ]; + ]); environment.systemPackages = [ pkgs.fcron ]; users.users.fcron = { diff --git a/nixos/modules/services/search/hound.nix b/nixos/modules/services/search/hound.nix index 6740928db9a..7a44489efe6 100644 --- a/nixos/modules/services/search/hound.nix +++ b/nixos/modules/services/search/hound.nix @@ -88,19 +88,19 @@ in { }; config = mkIf cfg.enable { - users.groups = optional (cfg.group == "hound") { - name = "hound"; - gid = config.ids.gids.hound; + users.groups = optionalAttrs (cfg.group == "hound") { + hound.gid = config.ids.gids.hound; }; - users.users = optional (cfg.user == "hound") { - name = "hound"; - description = "hound code search"; - createHome = true; - home = cfg.home; - group = cfg.group; - extraGroups = cfg.extraGroups; - uid = config.ids.uids.hound; + users.users = optionalAttrs (cfg.user == "hound") { + hound = { + description = "hound code search"; + createHome = true; + home = cfg.home; + group = cfg.group; + extraGroups = cfg.extraGroups; + uid = config.ids.uids.hound; + }; }; systemd.services.hound = { diff --git a/nixos/modules/services/search/kibana.nix b/nixos/modules/services/search/kibana.nix index 43a63aa8fdc..2beb265ee5d 100644 --- a/nixos/modules/services/search/kibana.nix +++ b/nixos/modules/services/search/kibana.nix @@ -198,8 +198,7 @@ in { environment.systemPackages = [ cfg.package ]; - users.users = singleton { - name = "kibana"; + users.users.kibana = { uid = config.ids.uids.kibana; description = "Kibana service user"; home = cfg.dataDir; diff --git a/nixos/modules/services/search/solr.nix b/nixos/modules/services/search/solr.nix index 5ef7d9893a4..a8615a20a1c 100644 --- a/nixos/modules/services/search/solr.nix +++ b/nixos/modules/services/search/solr.nix @@ -13,19 +13,11 @@ in services.solr = { enable = mkEnableOption "Solr"; - # default to the 8.x series not forcing major version upgrade of those on the 7.x series package = mkOption { type = types.package; - default = if versionAtLeast config.system.stateVersion "19.09" - then pkgs.solr_8 - else pkgs.solr_7 - ; + default = pkgs.solr; defaultText = "pkgs.solr"; - description = '' - Which Solr package to use. This defaults to version 7.x if - system.stateVersion < 19.09 and version 8.x - otherwise. - ''; + description = "Which Solr package to use."; }; port = mkOption { @@ -100,18 +92,18 @@ in }; }; - users.users = optionalAttrs (cfg.user == "solr") (singleton - { name = "solr"; + users.users = optionalAttrs (cfg.user == "solr") { + solr = { group = cfg.group; home = cfg.stateDir; createHome = true; uid = config.ids.uids.solr; - }); + }; + }; - users.groups = optionalAttrs (cfg.group == "solr") (singleton - { name = "solr"; - gid = config.ids.gids.solr; - }); + users.groups = optionalAttrs (cfg.group == "solr") { + solr.gid = config.ids.gids.solr; + }; }; diff --git a/nixos/modules/services/security/bitwarden_rs/default.nix b/nixos/modules/services/security/bitwarden_rs/default.nix index d1817db0755..903a5327037 100644 --- a/nixos/modules/services/security/bitwarden_rs/default.nix +++ b/nixos/modules/services/security/bitwarden_rs/default.nix @@ -18,15 +18,33 @@ let else key + toUpper x) "" parts; in if builtins.match "[A-Z0-9_]+" name != null then name else partsToEnvVar parts; - configFile = pkgs.writeText "bitwarden_rs.env" (concatMapStrings (s: s + "\n") ( - (concatLists (mapAttrsToList (name: value: - if value != null then [ "${nameToEnvVar name}=${if isBool value then boolToString value else toString value}" ] else [] - ) cfg.config)))); + # Due to the different naming schemes allowed for config keys, + # we can only check for values consistently after converting them to their corresponding environment variable name. + configEnv = + let + configEnv = listToAttrs (concatLists (mapAttrsToList (name: value: + if value != null then [ (nameValuePair (nameToEnvVar name) (if isBool value then boolToString value else toString value)) ] else [] + ) cfg.config)); + in { DATA_FOLDER = "/var/lib/bitwarden_rs"; } // optionalAttrs (!(configEnv ? WEB_VAULT_ENABLED) || configEnv.WEB_VAULT_ENABLED == "true") { + WEB_VAULT_FOLDER = "${pkgs.bitwarden_rs-vault}/share/bitwarden_rs/vault"; + } // configEnv; + + configFile = pkgs.writeText "bitwarden_rs.env" (concatStrings (mapAttrsToList (name: value: "${name}=${value}\n") configEnv)); + + bitwarden_rs = pkgs.bitwarden_rs.override { inherit (cfg) dbBackend; }; in { options.services.bitwarden_rs = with types; { enable = mkEnableOption "bitwarden_rs"; + dbBackend = mkOption { + type = enum [ "sqlite" "mysql" "postgresql" ]; + default = "sqlite"; + description = '' + Which database backend bitwarden_rs will be using. + ''; + }; + backupDir = mkOption { type = nullOr str; default = null; @@ -40,7 +58,7 @@ in { default = {}; example = literalExample '' { - domain = https://bw.domain.tld:8443; + domain = "https://bw.domain.tld:8443"; signupsAllowed = true; rocketPort = 8222; rocketLog = "critical"; @@ -56,23 +74,20 @@ in { even though foo2 would have been converted to FOO_2. This allows working around any potential future conflicting naming conventions. - Based on the attributes passed to this config option a environment file will be generated + Based on the attributes passed to this config option an environment file will be generated that is passed to bitwarden_rs's systemd service. The available configuration options can be found in - the environment template file. + the environment template file. ''; - apply = config: optionalAttrs config.webVaultEnabled { - webVaultFolder = "${pkgs.bitwarden_rs-vault}/share/bitwarden_rs/vault"; - } // config; }; }; config = mkIf cfg.enable { - services.bitwarden_rs.config = { - dataFolder = "/var/lib/bitwarden_rs"; - webVaultEnabled = mkDefault true; - }; + assertions = [ { + assertion = cfg.backupDir != null -> cfg.dbBackend == "sqlite"; + message = "Backups for database backends other than sqlite will need customization"; + } ]; users.users.bitwarden_rs = { inherit group; @@ -87,7 +102,7 @@ in { User = user; Group = group; EnvironmentFile = configFile; - ExecStart = "${pkgs.bitwarden_rs}/bin/bitwarden_rs"; + ExecStart = "${bitwarden_rs}/bin/bitwarden_rs"; LimitNOFILE = "1048576"; LimitNPROC = "64"; PrivateTmp = "true"; @@ -109,6 +124,7 @@ in { path = with pkgs; [ sqlite ]; serviceConfig = { SyslogIdentifier = "backup-bitwarden_rs"; + Type = "oneshot"; User = mkDefault user; Group = mkDefault group; ExecStart = "${pkgs.bash}/bin/bash ${./backup.sh}"; diff --git a/nixos/modules/services/security/certmgr.nix b/nixos/modules/services/security/certmgr.nix index e89078883eb..94c0ba14117 100644 --- a/nixos/modules/services/security/certmgr.nix +++ b/nixos/modules/services/security/certmgr.nix @@ -113,7 +113,7 @@ in otherCert = "/var/certmgr/specs/other-cert.json"; } ''; - type = with types; attrsOf (either (submodule { + type = with types; attrsOf (either path (submodule { options = { service = mkOption { type = nullOr str; @@ -148,7 +148,7 @@ in description = "certmgr spec request object."; }; }; - }) path); + })); description = '' Certificate specs as described by: diff --git a/nixos/modules/services/security/clamav.nix b/nixos/modules/services/security/clamav.nix index ef5bde7907e..aaf6fb0479b 100644 --- a/nixos/modules/services/security/clamav.nix +++ b/nixos/modules/services/security/clamav.nix @@ -83,18 +83,15 @@ in config = mkIf (cfg.updater.enable || cfg.daemon.enable) { environment.systemPackages = [ pkg ]; - users.users = singleton { - name = clamavUser; + users.users.${clamavUser} = { uid = config.ids.uids.clamav; group = clamavGroup; description = "ClamAV daemon user"; home = stateDir; }; - users.groups = singleton { - name = clamavGroup; - gid = config.ids.gids.clamav; - }; + users.groups.${clamavGroup} = + { gid = config.ids.gids.clamav; }; environment.etc."clamav/freshclam.conf".source = freshclamConfigFile; environment.etc."clamav/clamd.conf".source = clamdConfigFile; diff --git a/nixos/modules/services/security/fail2ban.nix b/nixos/modules/services/security/fail2ban.nix index 716ae7a2d2f..3f84f9c2560 100644 --- a/nixos/modules/services/security/fail2ban.nix +++ b/nixos/modules/services/security/fail2ban.nix @@ -6,15 +6,32 @@ let cfg = config.services.fail2ban; - fail2banConf = pkgs.writeText "fail2ban.conf" cfg.daemonConfig; + fail2banConf = pkgs.writeText "fail2ban.local" cfg.daemonConfig; - jailConf = pkgs.writeText "jail.conf" - (concatStringsSep "\n" (attrValues (flip mapAttrs cfg.jails (name: def: + jailConf = pkgs.writeText "jail.local" '' + [INCLUDES] + + before = paths-nixos.conf + + ${concatStringsSep "\n" (attrValues (flip mapAttrs cfg.jails (name: def: optionalString (def != "") '' [${name}] ${def} - '')))); + '')))} + ''; + + pathsConf = pkgs.writeText "paths-nixos.conf" '' + # NixOS + + [INCLUDES] + + before = paths-common.conf + + after = paths-overrides.local + + [DEFAULT] + ''; in @@ -31,21 +48,135 @@ in description = "Whether to enable the fail2ban service."; }; + package = mkOption { + default = pkgs.fail2ban; + type = types.package; + example = "pkgs.fail2ban_0_11"; + description = "The fail2ban package to use for running the fail2ban service."; + }; + + packageFirewall = mkOption { + default = pkgs.iptables; + type = types.package; + example = "pkgs.nftables"; + description = "The firewall package used by fail2ban service."; + }; + + banaction = mkOption { + default = "iptables-multiport"; + type = types.str; + example = "nftables-multiport"; + description = '' + Default banning action (e.g. iptables, iptables-new, iptables-multiport, + shorewall, etc) It is used to define action_* variables. Can be overridden + globally or per section within jail.local file + ''; + }; + + banaction-allports = mkOption { + default = "iptables-allport"; + type = types.str; + example = "nftables-allport"; + description = '' + Default banning action (e.g. iptables, iptables-new, iptables-multiport, + shorewall, etc) It is used to define action_* variables. Can be overridden + globally or per section within jail.local file + ''; + }; + + bantime-increment.enable = mkOption { + default = false; + type = types.bool; + description = '' + Allows to use database for searching of previously banned ip's to increase + a default ban time using special formula, default it is banTime * 1, 2, 4, 8, 16, 32... + ''; + }; + + bantime-increment.rndtime = mkOption { + default = "4m"; + type = types.str; + example = "8m"; + description = '' + "bantime-increment.rndtime" is the max number of seconds using for mixing with random time + to prevent "clever" botnets calculate exact time IP can be unbanned again + ''; + }; + + bantime-increment.maxtime = mkOption { + default = "10h"; + type = types.str; + example = "48h"; + description = '' + "bantime-increment.maxtime" is the max number of seconds using the ban time can reach (don't grows further) + ''; + }; + + bantime-increment.factor = mkOption { + default = "1"; + type = types.str; + example = "4"; + description = '' + "bantime-increment.factor" is a coefficient to calculate exponent growing of the formula or common multiplier, + default value of factor is 1 and with default value of formula, the ban time grows by 1, 2, 4, 8, 16 ... + ''; + }; + + bantime-increment.formula = mkOption { + default = "ban.Time * (1<<(ban.Count if ban.Count<20 else 20)) * banFactor"; + type = types.str; + example = "ban.Time * math.exp(float(ban.Count+1)*banFactor)/math.exp(1*banFactor)"; + description = '' + "bantime-increment.formula" used by default to calculate next value of ban time, default value bellow, + the same ban time growing will be reached by multipliers 1, 2, 4, 8, 16, 32... + ''; + }; + + bantime-increment.multipliers = mkOption { + default = "1 2 4 8 16 32 64"; + type = types.str; + example = "2 4 16 128"; + description = '' + "bantime-increment.multipliers" used to calculate next value of ban time instead of formula, coresponding + previously ban count and given "bantime.factor" (for multipliers default is 1); + following example grows ban time by 1, 2, 4, 8, 16 ... and if last ban count greater as multipliers count, + always used last multiplier (64 in example), for factor '1' and original ban time 600 - 10.6 hours + ''; + }; + + bantime-increment.overalljails = mkOption { + default = false; + type = types.bool; + example = true; + description = '' + "bantime-increment.overalljails" (if true) specifies the search of IP in the database will be executed + cross over all jails, if false (dafault), only current jail of the ban IP will be searched + ''; + }; + + ignoreIP = mkOption { + default = [ ]; + type = types.listOf types.str; + example = [ "192.168.0.0/16" "2001:DB8::42" ]; + description = '' + "ignoreIP" can be a list of IP addresses, CIDR masks or DNS hosts. Fail2ban will not ban a host which + matches an address in this list. Several addresses can be defined using space (and/or comma) separator. + ''; + }; + daemonConfig = mkOption { - default = - '' - [Definition] - loglevel = INFO - logtarget = SYSLOG - socket = /run/fail2ban/fail2ban.sock - pidfile = /run/fail2ban/fail2ban.pid - ''; + default = '' + [Definition] + logtarget = SYSLOG + socket = /run/fail2ban/fail2ban.sock + pidfile = /run/fail2ban/fail2ban.pid + dbfile = /var/lib/fail2ban/fail2ban.sqlite3 + ''; type = types.lines; - description = - '' - The contents of Fail2ban's main configuration file. It's - generally not necessary to change it. - ''; + description = '' + The contents of Fail2ban's main configuration file. It's + generally not necessary to change it. + ''; }; jails = mkOption { @@ -65,88 +196,111 @@ in } ''; type = types.attrsOf types.lines; - description = - '' - The configuration of each Fail2ban “jail”. A jail - consists of an action (such as blocking a port using - iptables) that is triggered when a - filter applied to a log file triggers more than a certain - number of times in a certain time period. Actions are - defined in /etc/fail2ban/action.d, - while filters are defined in - /etc/fail2ban/filter.d. - ''; + description = '' + The configuration of each Fail2ban “jail”. A jail + consists of an action (such as blocking a port using + iptables) that is triggered when a + filter applied to a log file triggers more than a certain + number of times in a certain time period. Actions are + defined in /etc/fail2ban/action.d, + while filters are defined in + /etc/fail2ban/filter.d. + ''; }; }; }; - ###### implementation config = mkIf cfg.enable { - environment.systemPackages = [ pkgs.fail2ban ]; + warnings = mkIf (config.networking.firewall.enable == false && config.networking.nftables.enable == false) [ + "fail2ban can not be used without a firewall" + ]; - environment.etc."fail2ban/fail2ban.conf".source = fail2banConf; - environment.etc."fail2ban/jail.conf".source = jailConf; - environment.etc."fail2ban/action.d".source = "${pkgs.fail2ban}/etc/fail2ban/action.d/*.conf"; - environment.etc."fail2ban/filter.d".source = "${pkgs.fail2ban}/etc/fail2ban/filter.d/*.conf"; + environment.systemPackages = [ cfg.package ]; - systemd.services.fail2ban = - { description = "Fail2ban Intrusion Prevention System"; + environment.etc = { + "fail2ban/fail2ban.local".source = fail2banConf; + "fail2ban/jail.local".source = jailConf; + "fail2ban/fail2ban.conf".source = "${cfg.package}/etc/fail2ban/fail2ban.conf"; + "fail2ban/jail.conf".source = "${cfg.package}/etc/fail2ban/jail.conf"; + "fail2ban/paths-common.conf".source = "${cfg.package}/etc/fail2ban/paths-common.conf"; + "fail2ban/paths-nixos.conf".source = pathsConf; + "fail2ban/action.d".source = "${cfg.package}/etc/fail2ban/action.d/*.conf"; + "fail2ban/filter.d".source = "${cfg.package}/etc/fail2ban/filter.d/*.conf"; + }; - wantedBy = [ "multi-user.target" ]; - after = [ "network.target" ]; - partOf = optional config.networking.firewall.enable "firewall.service"; + systemd.services.fail2ban = { + description = "Fail2ban Intrusion Prevention System"; - restartTriggers = [ fail2banConf jailConf ]; - path = [ pkgs.fail2ban pkgs.iptables pkgs.iproute ]; + wantedBy = [ "multi-user.target" ]; + after = [ "network.target" ]; + partOf = optional config.networking.firewall.enable "firewall.service"; - preStart = - '' - mkdir -p /var/lib/fail2ban - ''; + restartTriggers = [ fail2banConf jailConf pathsConf ]; + reloadIfChanged = true; - unitConfig.Documentation = "man:fail2ban(1)"; + path = [ cfg.package cfg.packageFirewall pkgs.iproute ]; - serviceConfig = - { Type = "forking"; - ExecStart = "${pkgs.fail2ban}/bin/fail2ban-client -x start"; - ExecStop = "${pkgs.fail2ban}/bin/fail2ban-client stop"; - ExecReload = "${pkgs.fail2ban}/bin/fail2ban-client reload"; - PIDFile = "/run/fail2ban/fail2ban.pid"; - Restart = "always"; + unitConfig.Documentation = "man:fail2ban(1)"; - ReadOnlyDirectories = "/"; - ReadWriteDirectories = "/run/fail2ban /var/tmp /var/lib"; - PrivateTmp = "true"; - RuntimeDirectory = "fail2ban"; - CapabilityBoundingSet = "CAP_DAC_READ_SEARCH CAP_NET_ADMIN CAP_NET_RAW"; - }; + serviceConfig = { + ExecStart = "${cfg.package}/bin/fail2ban-server -xf start"; + ExecStop = "${cfg.package}/bin/fail2ban-server stop"; + ExecReload = "${cfg.package}/bin/fail2ban-server reload"; + Type = "simple"; + Restart = "on-failure"; + PIDFile = "/run/fail2ban/fail2ban.pid"; + # Capabilities + CapabilityBoundingSet = [ "CAP_AUDIT_READ" "CAP_DAC_READ_SEARCH" "CAP_NET_ADMIN" "CAP_NET_RAW" ]; + # Security + NoNewPrivileges = true; + # Directory + RuntimeDirectory = "fail2ban"; + RuntimeDirectoryMode = "0750"; + StateDirectory = "fail2ban"; + StateDirectoryMode = "0750"; + LogsDirectory = "fail2ban"; + LogsDirectoryMode = "0750"; + # Sandboxing + ProtectSystem = "strict"; + ProtectHome = true; + PrivateTmp = true; + PrivateDevices = true; + ProtectHostname = true; + ProtectKernelTunables = true; + ProtectKernelModules = true; + ProtectControlGroups = true; }; + }; # Add some reasonable default jails. The special "DEFAULT" jail # sets default values for all other jails. - services.fail2ban.jails.DEFAULT = - '' - ignoreip = 127.0.0.1/8 - bantime = 600 - findtime = 600 - maxretry = 3 - backend = systemd - enabled = true - ''; - + services.fail2ban.jails.DEFAULT = '' + ${optionalString cfg.bantime-increment.enable '' + # Bantime incremental + bantime.increment = ${if cfg.bantime-increment.enable then "true" else "false"} + bantime.maxtime = ${cfg.bantime-increment.maxtime} + bantime.factor = ${cfg.bantime-increment.factor} + bantime.formula = ${cfg.bantime-increment.formula} + bantime.multipliers = ${cfg.bantime-increment.multipliers} + bantime.overalljails = ${if cfg.bantime-increment.overalljails then "true" else "false"} + ''} + # Miscellaneous options + ignoreip = 127.0.0.1/8 ${optionalString config.networking.enableIPv6 "::1"} ${concatStringsSep " " cfg.ignoreIP} + maxretry = 3 + backend = systemd + # Actions + banaction = ${cfg.banaction} + banaction_allports = ${cfg.banaction-allports} + ''; # Block SSH if there are too many failing connection attempts. - services.fail2ban.jails.ssh-iptables = - '' - filter = sshd - action = iptables-multiport[name=SSH, port="${concatMapStringsSep "," (p: toString p) config.services.openssh.ports}", protocol=tcp] - maxretry = 5 - ''; - + services.fail2ban.jails.sshd = mkDefault '' + enabled = true + port = ${concatMapStringsSep "," (p: toString p) config.services.openssh.ports} + ''; }; - } diff --git a/nixos/modules/services/security/fprot.nix b/nixos/modules/services/security/fprot.nix index 47449039146..f203f2abc03 100644 --- a/nixos/modules/services/security/fprot.nix +++ b/nixos/modules/services/security/fprot.nix @@ -48,22 +48,18 @@ in { services.fprot.updater.licenseKeyfile = mkDefault "${pkgs.fprot}/opt/f-prot/license.key"; environment.systemPackages = [ pkgs.fprot ]; - environment.etc = singleton { + environment.etc."f-prot.conf" = { source = "${pkgs.fprot}/opt/f-prot/f-prot.conf"; - target = "f-prot.conf"; }; - users.users = singleton - { name = fprotUser; - uid = config.ids.uids.fprot; + users.users.${fprotUser} = + { uid = config.ids.uids.fprot; description = "F-Prot daemon user"; home = stateDir; }; - users.groups = singleton - { name = fprotGroup; - gid = config.ids.gids.fprot; - }; + users.groups.${fprotGroup} = + { gid = config.ids.gids.fprot; }; services.cron.systemCronJobs = [ "*/${toString cfg.updater.frequency} * * * * root start fprot-updater" ]; diff --git a/nixos/modules/services/security/sshguard.nix b/nixos/modules/services/security/sshguard.nix index 4a174564dd2..e7a9cefdef3 100644 --- a/nixos/modules/services/security/sshguard.nix +++ b/nixos/modules/services/security/sshguard.nix @@ -92,8 +92,11 @@ in { "-o cat" "-n1" ] ++ (map (name: "-t ${escapeShellArg name}") cfg.services)); + backend = if config.networking.nftables.enable + then "sshg-fw-nft-sets" + else "sshg-fw-ipset"; in '' - BACKEND="${pkgs.sshguard}/libexec/sshg-fw-ipset" + BACKEND="${pkgs.sshguard}/libexec/${backend}" LOGREADER="LANG=C ${pkgs.systemd}/bin/journalctl ${args}" ''; @@ -104,7 +107,9 @@ in { after = [ "network.target" ]; partOf = optional config.networking.firewall.enable "firewall.service"; - path = with pkgs; [ iptables ipset iproute systemd ]; + path = with pkgs; if config.networking.nftables.enable + then [ nftables iproute systemd ] + else [ iptables ipset iproute systemd ]; # The sshguard ipsets must exist before we invoke # iptables. sshguard creates the ipsets after startup if @@ -112,14 +117,14 @@ in { # the iptables rules because postStart races with the creation # of the ipsets. So instead, we create both the ipsets and # firewall rules before sshguard starts. - preStart = '' + preStart = optionalString config.networking.firewall.enable '' ${pkgs.ipset}/bin/ipset -quiet create -exist sshguard4 hash:net family inet ${pkgs.ipset}/bin/ipset -quiet create -exist sshguard6 hash:net family inet6 ${pkgs.iptables}/bin/iptables -I INPUT -m set --match-set sshguard4 src -j DROP ${pkgs.iptables}/bin/ip6tables -I INPUT -m set --match-set sshguard6 src -j DROP ''; - postStop = '' + postStop = optionalString config.networking.firewall.enable '' ${pkgs.iptables}/bin/iptables -D INPUT -m set --match-set sshguard4 src -j DROP ${pkgs.iptables}/bin/ip6tables -D INPUT -m set --match-set sshguard6 src -j DROP ${pkgs.ipset}/bin/ipset -quiet destroy sshguard4 diff --git a/nixos/modules/services/security/torify.nix b/nixos/modules/services/security/torify.nix index 08da726437e..39551190dd3 100644 --- a/nixos/modules/services/security/torify.nix +++ b/nixos/modules/services/security/torify.nix @@ -25,6 +25,7 @@ in services.tor.tsocks = { enable = mkOption { + type = types.bool; default = false; description = '' Whether to build tsocks wrapper script to relay application traffic via Tor. @@ -40,6 +41,7 @@ in }; server = mkOption { + type = types.str; default = "localhost:9050"; example = "192.168.0.20"; description = '' @@ -48,6 +50,7 @@ in }; config = mkOption { + type = types.lines; default = ""; description = '' Extra configuration. Contents will be added verbatim to TSocks diff --git a/nixos/modules/services/security/torsocks.nix b/nixos/modules/services/security/torsocks.nix index c60c745443b..47ac95c4626 100644 --- a/nixos/modules/services/security/torsocks.nix +++ b/nixos/modules/services/security/torsocks.nix @@ -112,10 +112,9 @@ in config = mkIf cfg.enable { environment.systemPackages = [ pkgs.torsocks (wrapTorsocks "torsocks-faster" cfg.fasterServer) ]; - environment.etc = - [ { source = pkgs.writeText "torsocks.conf" (configFile cfg.server); - target = "tor/torsocks.conf"; - } - ]; + environment.etc."tor/torsocks.conf" = + { + source = pkgs.writeText "torsocks.conf" (configFile cfg.server); + }; }; } diff --git a/nixos/modules/services/security/vault.nix b/nixos/modules/services/security/vault.nix index b0ab8fadcbe..6a8a3a93327 100644 --- a/nixos/modules/services/security/vault.nix +++ b/nixos/modules/services/security/vault.nix @@ -135,6 +135,7 @@ in User = "vault"; Group = "vault"; ExecStart = "${cfg.package}/bin/vault server -config ${configFile}"; + ExecReload = "${pkgs.coreutils}/bin/kill -SIGHUP $MAINPID"; PrivateDevices = true; PrivateTmp = true; ProtectSystem = "full"; diff --git a/nixos/modules/services/system/dbus.nix b/nixos/modules/services/system/dbus.nix index 936646a5fd7..4a60fec1ca8 100644 --- a/nixos/modules/services/system/dbus.nix +++ b/nixos/modules/services/system/dbus.nix @@ -68,10 +68,7 @@ in environment.systemPackages = [ pkgs.dbus.daemon pkgs.dbus ]; - environment.etc = singleton - { source = configDir; - target = "dbus-1"; - }; + environment.etc."dbus-1".source = configDir; users.users.messagebus = { uid = config.ids.uids.messagebus; diff --git a/nixos/modules/services/system/localtime.nix b/nixos/modules/services/system/localtime.nix index c3c0b432b49..74925c5e2c4 100644 --- a/nixos/modules/services/system/localtime.nix +++ b/nixos/modules/services/system/localtime.nix @@ -35,6 +35,10 @@ in { # Install the systemd unit. systemd.packages = [ pkgs.localtime.out ]; + users.users.localtimed = { + description = "Taskserver user"; + }; + systemd.services.localtime = { wantedBy = [ "multi-user.target" ]; serviceConfig.Restart = "on-failure"; diff --git a/nixos/modules/services/torrent/deluge.nix b/nixos/modules/services/torrent/deluge.nix index 0c72505395d..2f1e7300ca3 100644 --- a/nixos/modules/services/torrent/deluge.nix +++ b/nixos/modules/services/torrent/deluge.nix @@ -5,6 +5,7 @@ with lib; let cfg = config.services.deluge; cfg_web = config.services.deluge.web; + isDeluge1 = versionOlder cfg.package.version "2.0.0"; openFilesLimit = 4096; listenPortsDefault = [ 6881 6889 ]; @@ -18,11 +19,11 @@ let preStart = if cfg.declarative then '' if [ -e ${declarativeLockFile} ]; then # Was declarative before, no need to back up anything - ln -sf ${configFile} ${configDir}/core.conf + ${if isDeluge1 then "ln -sf" else "cp"} ${configFile} ${configDir}/core.conf ln -sf ${cfg.authFile} ${configDir}/auth else # Declarative for the first time, backup stateful files - ln -sb --suffix=.stateful ${configFile} ${configDir}/core.conf + ${if isDeluge1 then "ln -s" else "cp"} -b --suffix=.stateful ${configFile} ${configDir}/core.conf ln -sb --suffix=.stateful ${cfg.authFile} ${configDir}/auth echo "Autogenerated file that signifies that this server configuration is managed declaratively by NixOS" \ > ${declarativeLockFile} @@ -144,6 +145,14 @@ in { This always contains unzip, gnutar, xz, p7zip and bzip2. ''; }; + + package = mkOption { + type = types.package; + example = literalExample "pkgs.deluge-1_x"; + description = '' + Deluge package to use. + ''; + }; }; deluge.web = { @@ -170,6 +179,13 @@ in { config = mkIf cfg.enable { + services.deluge.package = mkDefault ( + if versionAtLeast config.system.stateVersion "20.09" then + pkgs.deluge-2_x + else + pkgs.deluge-1_x + ); + # Provide a default set of `extraPackages`. services.deluge.extraPackages = with pkgs; [ unzip gnutar xz p7zip bzip2 ]; @@ -189,10 +205,10 @@ in { after = [ "network.target" ]; description = "Deluge BitTorrent Daemon"; wantedBy = [ "multi-user.target" ]; - path = [ pkgs.deluge ] ++ cfg.extraPackages; + path = [ cfg.package ] ++ cfg.extraPackages; serviceConfig = { ExecStart = '' - ${pkgs.deluge}/bin/deluged \ + ${cfg.package}/bin/deluged \ --do-not-daemonize \ --config ${configDir} ''; @@ -212,10 +228,11 @@ in { requires = [ "deluged.service" ]; description = "Deluge BitTorrent WebUI"; wantedBy = [ "multi-user.target" ]; - path = [ pkgs.deluge ]; + path = [ cfg.package ]; serviceConfig = { ExecStart = '' - ${pkgs.deluge}/bin/deluge-web \ + ${cfg.package}/bin/deluge-web \ + ${optionalString (!isDeluge1) "--do-not-daemonize"} \ --config ${configDir} \ --port ${toString cfg.web.port} ''; @@ -234,7 +251,7 @@ in { }) ]; - environment.systemPackages = [ pkgs.deluge ]; + environment.systemPackages = [ cfg.package ]; users.users = mkIf (cfg.user == "deluge") { deluge = { diff --git a/nixos/modules/services/torrent/transmission.nix b/nixos/modules/services/torrent/transmission.nix index f7a88867b61..fd28b94f7be 100644 --- a/nixos/modules/services/torrent/transmission.nix +++ b/nixos/modules/services/torrent/transmission.nix @@ -23,7 +23,8 @@ let for DIR in "${homeDir}" "${settingsDir}" "${fullSettings.download-dir}" "${fullSettings.incomplete-dir}"; do mkdir -p "$DIR" done - chmod 700 "${homeDir}" "${settingsDir}" + chmod 755 "${homeDir}" + chmod 700 "${settingsDir}" chmod ${downloadDirPermissions} "${fullSettings.download-dir}" "${fullSettings.incomplete-dir}" cp -f ${settingsFile} ${settingsDir}/settings.json ''; @@ -118,7 +119,7 @@ in # 1) Only the "transmission" user and group have access to torrents. # 2) Optionally update/force specific fields into the configuration file. serviceConfig.ExecStartPre = preStart; - serviceConfig.ExecStart = "${pkgs.transmission}/bin/transmission-daemon -f --port ${toString config.services.transmission.port}"; + serviceConfig.ExecStart = "${pkgs.transmission}/bin/transmission-daemon -f --port ${toString config.services.transmission.port} --config-dir ${settingsDir}"; serviceConfig.ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID"; serviceConfig.User = cfg.user; serviceConfig.Group = cfg.group; @@ -129,19 +130,23 @@ in # It's useful to have transmission in path, e.g. for remote control environment.systemPackages = [ pkgs.transmission ]; - users.users = optionalAttrs (cfg.user == "transmission") (singleton - { name = "transmission"; + users.users = optionalAttrs (cfg.user == "transmission") ({ + transmission = { + name = "transmission"; group = cfg.group; uid = config.ids.uids.transmission; description = "Transmission BitTorrent user"; home = homeDir; createHome = true; - }); + }; + }); - users.groups = optionalAttrs (cfg.group == "transmission") (singleton - { name = "transmission"; + users.groups = optionalAttrs (cfg.group == "transmission") ({ + transmission = { + name = "transmission"; gid = config.ids.gids.transmission; - }); + }; + }); # AppArmor profile security.apparmor.profiles = mkIf apparmor [ diff --git a/nixos/modules/services/ttys/agetty.nix b/nixos/modules/services/ttys/agetty.nix index f127d8a0276..f3a629f7af7 100644 --- a/nixos/modules/services/ttys/agetty.nix +++ b/nixos/modules/services/ttys/agetty.nix @@ -102,7 +102,7 @@ in enable = mkDefault config.boot.isContainer; }; - environment.etc = singleton + environment.etc.issue = { # Friendly greeting on the virtual consoles. source = pkgs.writeText "issue" '' @@ -110,7 +110,6 @@ in ${config.services.mingetty.helpLine} ''; - target = "issue"; }; }; diff --git a/nixos/modules/services/wayland/cage.nix b/nixos/modules/services/wayland/cage.nix new file mode 100644 index 00000000000..c59ca9983a6 --- /dev/null +++ b/nixos/modules/services/wayland/cage.nix @@ -0,0 +1,99 @@ +{ config, pkgs, lib, ... }: + +with lib; + +let + cfg = config.services.cage; +in { + options.services.cage.enable = mkEnableOption "cage kiosk service"; + + options.services.cage.user = mkOption { + type = types.str; + default = "demo"; + description = '' + User to log-in as. + ''; + }; + + options.services.cage.extraArguments = mkOption { + type = types.listOf types.str; + default = []; + defaultText = "[]"; + description = "Additional command line arguments to pass to Cage."; + example = ["-d"]; + }; + + options.services.cage.program = mkOption { + type = types.path; + default = "${pkgs.xterm}/bin/xterm"; + description = '' + Program to run in cage. + ''; + }; + + config = mkIf cfg.enable { + + # The service is partially based off of the one provided in the + # cage wiki at + # https://github.com/Hjdskes/cage/wiki/Starting-Cage-on-boot-with-systemd. + systemd.services."cage-tty1" = { + enable = true; + after = [ + "systemd-user-sessions.service" + "plymouth-start.service" + "plymouth-quit.service" + "systemd-logind.service" + "getty@tty1.service" + ]; + before = [ "graphical.target" ]; + wants = [ "dbus.socket" "systemd-logind.service" "plymouth-quit.service"]; + wantedBy = [ "graphical.target" ]; + conflicts = [ "getty@tty1.service" ]; + + restartIfChanged = false; + unitConfig.ConditionPathExists = "/dev/tty1"; + serviceConfig = { + ExecStart = '' + ${pkgs.cage}/bin/cage \ + ${escapeShellArgs cfg.extraArguments} \ + -- ${cfg.program} + ''; + User = cfg.user; + + IgnoreSIGPIPE = "no"; + + # Log this user with utmp, letting it show up with commands 'w' and + # 'who'. This is needed since we replace (a)getty. + UtmpIdentifier = "%n"; + UtmpMode = "user"; + # A virtual terminal is needed. + TTYPath = "/dev/tty1"; + TTYReset = "yes"; + TTYVHangup = "yes"; + TTYVTDisallocate = "yes"; + # Fail to start if not controlling the virtual terminal. + StandardInput = "tty-fail"; + StandardOutput = "syslog"; + StandardError = "syslog"; + # Set up a full (custom) user session for the user, required by Cage. + PAMName = "cage"; + }; + }; + + security.pam.services.cage.text = '' + auth required pam_unix.so nullok + account required pam_unix.so + session required pam_unix.so + session required ${pkgs.systemd}/lib/security/pam_systemd.so + ''; + + hardware.opengl.enable = mkDefault true; + + systemd.targets.graphical.wants = [ "cage-tty1.service" ]; + + systemd.defaultUnit = "graphical.target"; + }; + + meta.maintainers = with lib.maintainers; [ matthewbauer flokli ]; + +} diff --git a/nixos/modules/services/web-apps/codimd.nix b/nixos/modules/services/web-apps/codimd.nix index 5f56f8ed5a0..751f81649dd 100644 --- a/nixos/modules/services/web-apps/codimd.nix +++ b/nixos/modules/services/web-apps/codimd.nix @@ -156,7 +156,7 @@ in }; useCDN = mkOption { type = types.bool; - default = true; + default = false; description = '' Whether to use CDN resources or not. ''; diff --git a/nixos/modules/services/web-apps/documize.nix b/nixos/modules/services/web-apps/documize.nix index 1b90299aa23..a5f48e744fd 100644 --- a/nixos/modules/services/web-apps/documize.nix +++ b/nixos/modules/services/web-apps/documize.nix @@ -130,7 +130,7 @@ in { config = mkIf cfg.enable { systemd.services.documize-server = { description = "Documize Wiki"; - documentation = [ https://documize.com/ ]; + documentation = [ "https://documize.com/" ]; wantedBy = [ "multi-user.target" ]; serviceConfig = { diff --git a/nixos/modules/services/web-apps/dokuwiki.nix b/nixos/modules/services/web-apps/dokuwiki.nix new file mode 100644 index 00000000000..07af7aa0dfe --- /dev/null +++ b/nixos/modules/services/web-apps/dokuwiki.nix @@ -0,0 +1,272 @@ +{ config, lib, pkgs, ... }: + +let + + inherit (lib) mkEnableOption mkForce mkIf mkMerge mkOption optionalAttrs recursiveUpdate types; + + cfg = config.services.dokuwiki; + + user = config.services.nginx.user; + group = config.services.nginx.group; + + dokuwikiAclAuthConfig = pkgs.writeText "acl.auth.php" '' + # acl.auth.php + # + # + # Access Control Lists + # + ${toString cfg.acl} + ''; + + dokuwikiLocalConfig = pkgs.writeText "local.php" '' + + Mutually exclusive with services.dokuwiki.aclFile + Set this to a value other than null to take precedence over aclFile option. + ''; + }; + + aclFile = mkOption { + type = types.nullOr types.path; + default = null; + description = '' + Location of the dokuwiki acl rules. Mutually exclusive with services.dokuwiki.acl + Mutually exclusive with services.dokuwiki.acl which is preferred. + Consult documentation for further instructions. + Example: + ''; + }; + + aclUse = mkOption { + type = types.bool; + default = true; + description = '' + Necessary for users to log in into the system. + Also limits anonymous users. When disabled, + everyone is able to create and edit content. + ''; + }; + + pluginsConfig = mkOption { + type = types.lines; + default = '' + $plugins['authad'] = 0; + $plugins['authldap'] = 0; + $plugins['authmysql'] = 0; + $plugins['authpgsql'] = 0; + ''; + description = '' + List of the dokuwiki (un)loaded plugins. + ''; + }; + + superUser = mkOption { + type = types.nullOr types.str; + default = "@admin"; + description = '' + You can set either a username, a list of usernames (“admin1,admin2”), + or the name of a group by prepending an @ char to the groupname + Consult documentation for further instructions. + ''; + }; + + usersFile = mkOption { + type = types.nullOr types.path; + default = null; + description = '' + Location of the dokuwiki users file. List of users. Format: + login:passwordhash:Real Name:email:groups,comma,separated + Create passwordHash easily by using:$ mkpasswd -5 password `pwgen 8 1` + Example: + ''; + }; + + extraConfig = mkOption { + type = types.nullOr types.lines; + default = null; + example = '' + $conf['title'] = 'My Wiki'; + $conf['userewrite'] = 1; + ''; + description = '' + DokuWiki configuration. Refer to + + for details on supported values. + ''; + }; + + poolConfig = mkOption { + type = with types; attrsOf (oneOf [ str int bool ]); + default = { + "pm" = "dynamic"; + "pm.max_children" = 32; + "pm.start_servers" = 2; + "pm.min_spare_servers" = 2; + "pm.max_spare_servers" = 4; + "pm.max_requests" = 500; + }; + description = '' + Options for the dokuwiki PHP pool. See the documentation on php-fpm.conf + for details on configuration directives. + ''; + }; + + nginx = mkOption { + type = types.submodule ( + recursiveUpdate + (import ../web-servers/nginx/vhost-options.nix { inherit config lib; }) + { + # Enable encryption by default, + options.forceSSL.default = true; + options.enableACME.default = true; + } + ); + default = {forceSSL = true; enableACME = true;}; + example = { + serverAliases = [ + "wiki.\${config.networking.domain}" + ]; + enableACME = false; + }; + description = '' + With this option, you can customize the nginx virtualHost which already has sensible defaults for DokuWiki. + ''; + }; + }; + + # implementation + + config = mkIf cfg.enable { + + warnings = mkIf (cfg.superUser == null) ["Not setting services.dokuwiki.superUser will impair your ability to administer DokuWiki"]; + + assertions = [ + { + assertion = cfg.aclUse -> (cfg.acl != null || cfg.aclFile != null); + message = "Either services.dokuwiki.acl or services.dokuwiki.aclFile is mandatory when aclUse is true"; + } + { + assertion = cfg.usersFile != null -> cfg.aclUse != false; + message = "services.dokuwiki.aclUse must be true when usersFile is not null"; + } + ]; + + services.phpfpm.pools.dokuwiki = { + inherit user; + inherit group; + phpEnv = { + DOKUWIKI_LOCAL_CONFIG = "${dokuwikiLocalConfig}"; + DOKUWIKI_PLUGINS_LOCAL_CONFIG = "${dokuwikiPluginsLocalConfig}"; + } //optionalAttrs (cfg.usersFile != null) { + DOKUWIKI_USERS_AUTH_CONFIG = "${cfg.usersFile}"; + } //optionalAttrs (cfg.aclUse) { + DOKUWIKI_ACL_AUTH_CONFIG = if (cfg.acl != null) then "${dokuwikiAclAuthConfig}" else "${toString cfg.aclFile}"; + }; + + settings = { + "listen.mode" = "0660"; + "listen.owner" = user; + "listen.group" = group; + } // cfg.poolConfig; + }; + + services.nginx = { + enable = true; + + virtualHosts = { + ${cfg.hostName} = mkMerge [ cfg.nginx { + root = mkForce "${pkgs.dokuwiki}/share/dokuwiki/"; + extraConfig = "fastcgi_param HTTPS on;"; + + locations."~ /(conf/|bin/|inc/|install.php)" = { + extraConfig = "deny all;"; + }; + + locations."~ ^/data/" = { + root = "${cfg.stateDir}"; + extraConfig = "internal;"; + }; + + locations."~ ^/lib.*\.(js|css|gif|png|ico|jpg|jpeg)$" = { + extraConfig = "expires 365d;"; + }; + + locations."/" = { + priority = 1; + index = "doku.php"; + extraConfig = ''try_files $uri $uri/ @dokuwiki;''; + }; + + locations."@dokuwiki" = { + extraConfig = '' + # rewrites "doku.php/" out of the URLs if you set the userwrite setting to .htaccess in dokuwiki config page + rewrite ^/_media/(.*) /lib/exe/fetch.php?media=$1 last; + rewrite ^/_detail/(.*) /lib/exe/detail.php?media=$1 last; + rewrite ^/_export/([^/]+)/(.*) /doku.php?do=export_$1&id=$2 last; + rewrite ^/(.*) /doku.php?id=$1&$args last; + ''; + }; + + locations."~ \.php$" = { + extraConfig = '' + try_files $uri $uri/ /doku.php; + include ${pkgs.nginx}/conf/fastcgi_params; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + fastcgi_param REDIRECT_STATUS 200; + fastcgi_pass unix:${config.services.phpfpm.pools.dokuwiki.socket}; + fastcgi_param HTTPS on; + ''; + }; + }]; + }; + + }; + + systemd.tmpfiles.rules = [ + "d ${cfg.stateDir}/attic 0750 ${user} ${group} - -" + "d ${cfg.stateDir}/cache 0750 ${user} ${group} - -" + "d ${cfg.stateDir}/index 0750 ${user} ${group} - -" + "d ${cfg.stateDir}/locks 0750 ${user} ${group} - -" + "d ${cfg.stateDir}/media 0750 ${user} ${group} - -" + "d ${cfg.stateDir}/media_attic 0750 ${user} ${group} - -" + "d ${cfg.stateDir}/media_meta 0750 ${user} ${group} - -" + "d ${cfg.stateDir}/meta 0750 ${user} ${group} - -" + "d ${cfg.stateDir}/pages 0750 ${user} ${group} - -" + "d ${cfg.stateDir}/tmp 0750 ${user} ${group} - -" + ]; + + }; +} diff --git a/nixos/modules/services/web-apps/frab.nix b/nixos/modules/services/web-apps/frab.nix index a9a30b40922..1b5890d6b0c 100644 --- a/nixos/modules/services/web-apps/frab.nix +++ b/nixos/modules/services/web-apps/frab.nix @@ -173,15 +173,13 @@ in config = mkIf cfg.enable { environment.systemPackages = [ frab-rake ]; - users.users = [ - { name = cfg.user; - group = cfg.group; + users.users.${cfg.user} = + { group = cfg.group; home = "${cfg.statePath}"; isSystemUser = true; - } - ]; + }; - users.groups = [ { name = cfg.group; } ]; + users.groups.${cfg.group} = { }; systemd.tmpfiles.rules = [ "d '${cfg.statePath}/system/attachments' - ${cfg.user} ${cfg.group} - -" diff --git a/nixos/modules/services/web-apps/gerrit.nix b/nixos/modules/services/web-apps/gerrit.nix new file mode 100644 index 00000000000..b184c0754d4 --- /dev/null +++ b/nixos/modules/services/web-apps/gerrit.nix @@ -0,0 +1,218 @@ +{ config, lib, pkgs, ... }: + +with lib; +let + cfg = config.services.gerrit; + + # NixOS option type for git-like configs + gitIniType = with types; + let + primitiveType = either str (either bool int); + multipleType = either primitiveType (listOf primitiveType); + sectionType = lazyAttrsOf multipleType; + supersectionType = lazyAttrsOf (either multipleType sectionType); + in lazyAttrsOf supersectionType; + + gerritConfig = pkgs.writeText "gerrit.conf" ( + lib.generators.toGitINI cfg.settings + ); + + # Wrap the gerrit java with all the java options so it can be called + # like a normal CLI app + gerrit-cli = pkgs.writeShellScriptBin "gerrit" '' + set -euo pipefail + jvmOpts=( + ${lib.escapeShellArgs cfg.jvmOpts} + -Xmx${cfg.jvmHeapLimit} + ) + exec ${cfg.jvmPackage}/bin/java \ + "''${jvmOpts[@]}" \ + -jar ${cfg.package}/webapps/${cfg.package.name}.war \ + "$@" + ''; + + gerrit-plugins = pkgs.runCommand + "gerrit-plugins" + { + buildInputs = [ gerrit-cli ]; + } + '' + shopt -s nullglob + mkdir $out + + for name in ${toString cfg.builtinPlugins}; do + echo "Installing builtin plugin $name.jar" + gerrit cat plugins/$name.jar > $out/$name.jar + done + + for file in ${toString cfg.plugins}; do + name=$(echo "$file" | cut -d - -f 2-) + echo "Installing plugin $name" + ln -sf "$file" $out/$name + done + ''; +in +{ + options = { + services.gerrit = { + enable = mkEnableOption "Gerrit service"; + + package = mkOption { + type = types.package; + default = pkgs.gerrit; + description = "Gerrit package to use"; + }; + + jvmPackage = mkOption { + type = types.package; + default = pkgs.jre_headless; + defaultText = "pkgs.jre_headless"; + description = "Java Runtime Environment package to use"; + }; + + jvmOpts = mkOption { + type = types.listOf types.str; + default = [ + "-Dflogger.backend_factory=com.google.common.flogger.backend.log4j.Log4jBackendFactory#getInstance" + "-Dflogger.logging_context=com.google.gerrit.server.logging.LoggingContext#getInstance" + ]; + description = "A list of JVM options to start gerrit with."; + }; + + jvmHeapLimit = mkOption { + type = types.str; + default = "1024m"; + description = '' + How much memory to allocate to the JVM heap + ''; + }; + + listenAddress = mkOption { + type = types.str; + default = "[::]:8080"; + description = '' + hostname:port to listen for HTTP traffic. + + This is bound using the systemd socket activation. + ''; + }; + + settings = mkOption { + type = gitIniType; + default = {}; + description = '' + Gerrit configuration. This will be generated to the + etc/gerrit.config file. + ''; + }; + + plugins = mkOption { + type = types.listOf types.package; + default = []; + description = '' + List of plugins to add to Gerrit. Each derivation is a jar file + itself where the name of the derivation is the name of plugin. + ''; + }; + + builtinPlugins = mkOption { + type = types.listOf (types.enum cfg.package.passthru.plugins); + default = []; + description = '' + List of builtins plugins to install. Those are shipped in the + gerrit.war file. + ''; + }; + + serverId = mkOption { + type = types.str; + description = '' + Set a UUID that uniquely identifies the server. + + This can be generated with + nix-shell -p utillinux --run uuidgen. + ''; + }; + }; + }; + + config = mkIf cfg.enable { + + services.gerrit.settings = { + cache.directory = "/var/cache/gerrit"; + container.heapLimit = cfg.jvmHeapLimit; + gerrit.basePath = lib.mkDefault "git"; + gerrit.serverId = cfg.serverId; + httpd.inheritChannel = "true"; + httpd.listenUrl = lib.mkDefault "http://${cfg.listenAddress}"; + index.type = lib.mkDefault "lucene"; + }; + + # Add the gerrit CLI to the system to run `gerrit init` and friends. + environment.systemPackages = [ gerrit-cli ]; + + systemd.sockets.gerrit = { + unitConfig.Description = "Gerrit HTTP socket"; + wantedBy = [ "sockets.target" ]; + listenStreams = [ cfg.listenAddress ]; + }; + + systemd.services.gerrit = { + description = "Gerrit"; + + wantedBy = [ "multi-user.target" ]; + requires = [ "gerrit.socket" ]; + after = [ "gerrit.socket" "network.target" ]; + + path = [ + gerrit-cli + pkgs.bash + pkgs.coreutils + pkgs.git + pkgs.openssh + ]; + + environment = { + GERRIT_HOME = "%S/gerrit"; + GERRIT_TMP = "%T"; + HOME = "%S/gerrit"; + XDG_CONFIG_HOME = "%S/gerrit/.config"; + }; + + preStart = '' + set -euo pipefail + + # bootstrap if nothing exists + if [[ ! -d git ]]; then + gerrit init --batch --no-auto-start + fi + + # install gerrit.war for the plugin manager + rm -rf bin + mkdir bin + ln -sfv ${cfg.package}/webapps/${cfg.package.name}.war bin/gerrit.war + + # copy the config, keep it mutable because Gerrit + ln -sfv ${gerritConfig} etc/gerrit.config + + # install the plugins + rm -rf plugins + ln -sv ${gerrit-plugins} plugins + '' + ; + + serviceConfig = { + CacheDirectory = "gerrit"; + DynamicUser = true; + ExecStart = "${gerrit-cli}/bin/gerrit daemon --console-log"; + LimitNOFILE = 4096; + StandardInput = "socket"; + StandardOutput = "journal"; + StateDirectory = "gerrit"; + WorkingDirectory = "%S/gerrit"; + }; + }; + }; + + meta.maintainers = with lib.maintainers; [ edef zimbatm ]; +} diff --git a/nixos/modules/services/web-apps/grocy.nix b/nixos/modules/services/web-apps/grocy.nix new file mode 100644 index 00000000000..568bdfd0c42 --- /dev/null +++ b/nixos/modules/services/web-apps/grocy.nix @@ -0,0 +1,172 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.services.grocy; +in { + options.services.grocy = { + enable = mkEnableOption "grocy"; + + hostName = mkOption { + type = types.str; + description = '' + FQDN for the grocy instance. + ''; + }; + + nginx.enableSSL = mkOption { + type = types.bool; + default = true; + description = '' + Whether or not to enable SSL (with ACME and let's encrypt) + for the grocy vhost. + ''; + }; + + phpfpm.settings = mkOption { + type = with types; attrsOf (oneOf [ int str bool ]); + default = { + "pm" = "dynamic"; + "php_admin_value[error_log]" = "stderr"; + "php_admin_flag[log_errors]" = true; + "listen.owner" = "nginx"; + "catch_workers_output" = true; + "pm.max_children" = "32"; + "pm.start_servers" = "2"; + "pm.min_spare_servers" = "2"; + "pm.max_spare_servers" = "4"; + "pm.max_requests" = "500"; + }; + + description = '' + Options for grocy's PHPFPM pool. + ''; + }; + + dataDir = mkOption { + type = types.str; + default = "/var/lib/grocy"; + description = '' + Home directory of the grocy user which contains + the application's state. + ''; + }; + + settings = { + currency = mkOption { + type = types.str; + default = "USD"; + example = "EUR"; + description = '' + ISO 4217 code for the currency to display. + ''; + }; + + culture = mkOption { + type = types.enum [ "de" "en" "da" "en_GB" "es" "fr" "hu" "it" "nl" "no" "pl" "pt_BR" "ru" "sk_SK" "sv_SE" "tr" ]; + default = "en"; + description = '' + Display language of the frontend. + ''; + }; + + calendar = { + showWeekNumber = mkOption { + default = true; + type = types.bool; + description = '' + Show the number of the weeks in the calendar views. + ''; + }; + firstDayOfWeek = mkOption { + default = null; + type = types.nullOr (types.enum (range 0 6)); + description = '' + Which day of the week (0=Sunday, 1=Monday etc.) should be the + first day. + ''; + }; + }; + }; + }; + + config = mkIf cfg.enable { + environment.etc."grocy/config.php".text = '' + + + Grocy + + Grocy is a web-based self-hosted groceries + & household management solution for your home. + + +
+ Basic usage + + A very basic configuration may look like this: +{ pkgs, ... }: +{ + services.grocy = { + enable = true; + hostName = "grocy.tld"; + }; +} + This configures a simple vhost using nginx + which listens to grocy.tld with fully configured ACME/LE (this can be + disabled by setting services.grocy.nginx.enableSSL + to false). After the initial setup the credentials admin:admin + can be used to login. + + + The application's state is persisted at /var/lib/grocy/grocy.db in a + sqlite3 database. The migration is applied when requesting the /-route + of the application. + +
+ +
+ Settings + + The configuration for grocy is located at /etc/grocy/config.php. + By default, the following settings can be defined in the NixOS-configuration: +{ pkgs, ... }: +{ + services.grocy.settings = { + # The default currency in the system for invoices etc. + # Please note that exchange rates aren't taken into account, this + # is just the setting for what's shown in the frontend. + currency = "EUR"; + + # The display language (and locale configuration) for grocy. + culture = "de"; + + calendar = { + # Whether or not to show the week-numbers + # in the calendar. + showWeekNumber = true; + + # Index of the first day to be shown in the calendar (0=Sunday, 1=Monday, + # 2=Tuesday and so on). + firstDayOfWeek = 2; + }; + }; +} + + + If you want to alter the configuration file on your own, you can do this manually with + an expression like this: +{ lib, ... }: +{ + environment.etc."grocy/config.php".text = lib.mkAfter '' + // Arbitrary PHP code in grocy's configuration file + ''; +} + +
+ + diff --git a/nixos/modules/services/web-apps/ihatemoney/default.nix b/nixos/modules/services/web-apps/ihatemoney/default.nix new file mode 100644 index 00000000000..68769ac8c03 --- /dev/null +++ b/nixos/modules/services/web-apps/ihatemoney/default.nix @@ -0,0 +1,141 @@ +{ config, pkgs, lib, ... }: +with lib; +let + cfg = config.services.ihatemoney; + user = "ihatemoney"; + group = "ihatemoney"; + db = "ihatemoney"; + python3 = config.services.uwsgi.package.python3; + pkg = python3.pkgs.ihatemoney; + toBool = x: if x then "True" else "False"; + configFile = pkgs.writeText "ihatemoney.cfg" '' + from secrets import token_hex + # load a persistent secret key + SECRET_KEY_FILE = "/var/lib/ihatemoney/secret_key" + SECRET_KEY = "" + try: + with open(SECRET_KEY_FILE) as f: + SECRET_KEY = f.read() + except FileNotFoundError: + pass + if not SECRET_KEY: + print("ihatemoney: generating a new secret key") + SECRET_KEY = token_hex(50) + with open(SECRET_KEY_FILE, "w") as f: + f.write(SECRET_KEY) + del token_hex + del SECRET_KEY_FILE + + # "normal" configuration + DEBUG = False + SQLALCHEMY_DATABASE_URI = '${ + if cfg.backend == "sqlite" + then "sqlite:////var/lib/ihatemoney/ihatemoney.sqlite" + else "postgresql:///${db}"}' + SQLALCHEMY_TRACK_MODIFICATIONS = False + MAIL_DEFAULT_SENDER = ("${cfg.defaultSender.name}", "${cfg.defaultSender.email}") + ACTIVATE_DEMO_PROJECT = ${toBool cfg.enableDemoProject} + ADMIN_PASSWORD = "${toString cfg.adminHashedPassword /*toString null == ""*/}" + ALLOW_PUBLIC_PROJECT_CREATION = ${toBool cfg.enablePublicProjectCreation} + ACTIVATE_ADMIN_DASHBOARD = ${toBool cfg.enableAdminDashboard} + + ${cfg.extraConfig} + ''; +in + { + options.services.ihatemoney = { + enable = mkEnableOption "ihatemoney webapp. Note that this will set uwsgi to emperor mode running as root"; + backend = mkOption { + type = types.enum [ "sqlite" "postgresql" ]; + default = "sqlite"; + description = '' + The database engine to use for ihatemoney. + If postgresql is selected, then a database called + ${db} will be created. If you disable this option, + it will however not be removed. + ''; + }; + adminHashedPassword = mkOption { + type = types.nullOr types.str; + default = null; + description = "The hashed password of the administrator. To obtain it, run ihatemoney generate_password_hash"; + }; + uwsgiConfig = mkOption { + type = types.attrs; + example = { + http = ":8000"; + }; + description = "Additionnal configuration of the UWSGI vassal running ihatemoney. It should notably specify on which interfaces and ports the vassal should listen."; + }; + defaultSender = { + name = mkOption { + type = types.str; + default = "Budget manager"; + description = "The display name of the sender of ihatemoney emails"; + }; + email = mkOption { + type = types.str; + default = "ihatemoney@${config.networking.hostName}"; + description = "The email of the sender of ihatemoney emails"; + }; + }; + enableDemoProject = mkEnableOption "access to the demo project in ihatemoney"; + enablePublicProjectCreation = mkEnableOption "permission to create projects in ihatemoney by anyone"; + enableAdminDashboard = mkEnableOption "ihatemoney admin dashboard"; + extraConfig = mkOption { + type = types.str; + default = ""; + description = "Extra configuration appended to ihatemoney's configuration file. It is a python file, so pay attention to indentation."; + }; + }; + config = mkIf cfg.enable { + services.postgresql = mkIf (cfg.backend == "postgresql") { + enable = true; + ensureDatabases = [ db ]; + ensureUsers = [ { + name = user; + ensurePermissions = { + "DATABASE ${db}" = "ALL PRIVILEGES"; + }; + } ]; + }; + systemd.services.postgresql = mkIf (cfg.backend == "postgresql") { + wantedBy = [ "uwsgi.service" ]; + before = [ "uwsgi.service" ]; + }; + systemd.tmpfiles.rules = [ + "d /var/lib/ihatemoney 770 ${user} ${group}" + ]; + users = { + users.${user} = { + isSystemUser = true; + inherit group; + }; + groups.${group} = {}; + }; + services.uwsgi = { + enable = true; + plugins = [ "python3" ]; + # the vassal needs to be able to setuid + user = "root"; + group = "root"; + instance = { + type = "emperor"; + vassals.ihatemoney = { + type = "normal"; + strict = true; + uid = user; + gid = group; + # apparently flask uses threads: https://github.com/spiral-project/ihatemoney/commit/c7815e48781b6d3a457eaff1808d179402558f8c + enable-threads = true; + module = "wsgi:application"; + chdir = "${pkg}/${pkg.pythonModule.sitePackages}/ihatemoney"; + env = [ "IHATEMONEY_SETTINGS_FILE_PATH=${configFile}" ]; + pythonPackages = self: [ self.ihatemoney ]; + } // cfg.uwsgiConfig; + }; + }; + }; + } + + diff --git a/nixos/modules/services/web-apps/jirafeau.nix b/nixos/modules/services/web-apps/jirafeau.nix new file mode 100644 index 00000000000..4f181257ef7 --- /dev/null +++ b/nixos/modules/services/web-apps/jirafeau.nix @@ -0,0 +1,169 @@ +{ config, lib, pkgs, ... }: + +with lib; +let + cfg = config.services.jirafeau; + + group = config.services.nginx.group; + user = config.services.nginx.user; + + withTrailingSlash = str: if hasSuffix "/" str then str else "${str}/"; + + localConfig = pkgs.writeText "config.local.php" '' + for supported + values. + ''; + }; + + hostName = mkOption { + type = types.str; + default = "localhost"; + description = "URL of instance. Must have trailing slash."; + }; + + maxUploadSizeMegabytes = mkOption { + type = types.int; + default = 0; + description = "Maximum upload size of accepted files."; + }; + + maxUploadTimeout = mkOption { + type = types.str; + default = "30m"; + description = let + nginxCoreDocumentation = "http://nginx.org/en/docs/http/ngx_http_core_module.html"; + in + '' + Timeout for reading client request bodies and headers. Refer to + and + for accepted values. + ''; + }; + + nginxConfig = mkOption { + type = types.submodule + (import ../web-servers/nginx/vhost-options.nix { inherit config lib; }); + default = {}; + example = { + serverAliases = [ "wiki.\${config.networking.domain}" ]; + }; + description = "Extra configuration for the nginx virtual host of Jirafeau."; + }; + + package = mkOption { + type = types.package; + default = pkgs.jirafeau; + defaultText = "pkgs.jirafeau"; + description = "Jirafeau package to use"; + example = "pkgs.jirafeau"; + }; + + poolConfig = mkOption { + type = with types; attrsOf (oneOf [ str int bool ]); + default = { + "pm" = "dynamic"; + "pm.max_children" = 32; + "pm.start_servers" = 2; + "pm.min_spare_servers" = 2; + "pm.max_spare_servers" = 4; + "pm.max_requests" = 500; + }; + description = '' + Options for Jirafeau PHP pool. See documentation on php-fpm.conf for + details on configuration directives. + ''; + }; + }; + + + config = mkIf cfg.enable { + services = { + nginx = { + enable = true; + virtualHosts."${cfg.hostName}" = mkMerge [ + cfg.nginxConfig + { + extraConfig = let + clientMaxBodySize = + if cfg.maxUploadSizeMegabytes == 0 then "0" else "${cfg.maxUploadSizeMegabytes}m"; + in + '' + index index.php; + client_max_body_size ${clientMaxBodySize}; + client_body_timeout ${cfg.maxUploadTimeout}; + client_header_timeout ${cfg.maxUploadTimeout}; + ''; + locations = { + "~ \\.php$".extraConfig = '' + include ${pkgs.nginx}/conf/fastcgi_params; + fastcgi_split_path_info ^(.+\.php)(/.+)$; + fastcgi_index index.php; + fastcgi_pass unix:${config.services.phpfpm.pools.jirafeau.socket}; + fastcgi_param PATH_INFO $fastcgi_path_info; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + ''; + }; + root = mkForce "${cfg.package}"; + } + ]; + }; + + phpfpm.pools.jirafeau = { + inherit group user; + phpEnv."JIRAFEAU_CONFIG" = "${localConfig}"; + settings = { + "listen.mode" = "0660"; + "listen.owner" = user; + "listen.group" = group; + } // cfg.poolConfig; + }; + }; + + systemd.tmpfiles.rules = [ + "d ${cfg.dataDir} 0750 ${user} ${group} - -" + "d ${cfg.dataDir}/files/ 0750 ${user} ${group} - -" + "d ${cfg.dataDir}/links/ 0750 ${user} ${group} - -" + "d ${cfg.dataDir}/async/ 0750 ${user} ${group} - -" + ]; + }; +} diff --git a/nixos/modules/services/web-apps/limesurvey.nix b/nixos/modules/services/web-apps/limesurvey.nix index bd524524130..56265e80957 100644 --- a/nixos/modules/services/web-apps/limesurvey.nix +++ b/nixos/modules/services/web-apps/limesurvey.nix @@ -3,7 +3,7 @@ let inherit (lib) mkDefault mkEnableOption mkForce mkIf mkMerge mkOption; - inherit (lib) mapAttrs optional optionalString types; + inherit (lib) literalExample mapAttrs optional optionalString types; cfg = config.services.limesurvey; fpm = config.services.phpfpm.pools.limesurvey; @@ -100,19 +100,15 @@ in }; virtualHost = mkOption { - type = types.submodule ({ - options = import ../web-servers/apache-httpd/per-server-options.nix { - inherit lib; - forMainServer = false; - }; - }); - example = { - hostName = "survey.example.org"; - enableSSL = true; - adminAddr = "webmaster@example.org"; - sslServerCert = "/var/lib/acme/survey.example.org/full.pem"; - sslServerKey = "/var/lib/acme/survey.example.org/key.pem"; - }; + type = types.submodule (import ../web-servers/apache-httpd/vhost-options.nix); + example = literalExample '' + { + hostName = "survey.example.org"; + adminAddr = "webmaster@example.org"; + forceSSL = true; + enableACME = true; + } + ''; description = '' Apache configuration can be done by adapting services.httpd.virtualHosts.<name>. See for further information. @@ -184,7 +180,7 @@ in config = { tempdir = "${stateDir}/tmp"; uploaddir = "${stateDir}/upload"; - force_ssl = mkIf cfg.virtualHost.enableSSL "on"; + force_ssl = mkIf (cfg.virtualHost.addSSL || cfg.virtualHost.forceSSL || cfg.virtualHost.onlySSL) "on"; config.defaultlang = "en"; }; }; @@ -215,38 +211,36 @@ in enable = true; adminAddr = mkDefault cfg.virtualHost.adminAddr; extraModules = [ "proxy_fcgi" ]; - virtualHosts = [ (mkMerge [ - cfg.virtualHost { - documentRoot = mkForce "${pkg}/share/limesurvey"; - extraConfig = '' - Alias "/tmp" "${stateDir}/tmp" - - AllowOverride all - Require all granted - Options -Indexes +FollowSymlinks - + virtualHosts.${cfg.virtualHost.hostName} = mkMerge [ cfg.virtualHost { + documentRoot = mkForce "${pkg}/share/limesurvey"; + extraConfig = '' + Alias "/tmp" "${stateDir}/tmp" + + AllowOverride all + Require all granted + Options -Indexes +FollowSymlinks + - Alias "/upload" "${stateDir}/upload" - - AllowOverride all - Require all granted - Options -Indexes - + Alias "/upload" "${stateDir}/upload" + + AllowOverride all + Require all granted + Options -Indexes + - - - - SetHandler "proxy:unix:${fpm.socket}|fcgi://localhost/" - - + + + + SetHandler "proxy:unix:${fpm.socket}|fcgi://localhost/" + + - AllowOverride all - Options -Indexes - DirectoryIndex index.php - - ''; - } - ]) ]; + AllowOverride all + Options -Indexes + DirectoryIndex index.php + + ''; + } ]; }; systemd.tmpfiles.rules = [ diff --git a/nixos/modules/services/web-apps/mattermost.nix b/nixos/modules/services/web-apps/mattermost.nix index 8c7fc4056ad..853347bf86e 100644 --- a/nixos/modules/services/web-apps/mattermost.nix +++ b/nixos/modules/services/web-apps/mattermost.nix @@ -6,14 +6,18 @@ let cfg = config.services.mattermost; - defaultConfig = builtins.fromJSON (readFile "${pkgs.mattermost}/config/config.json"); + defaultConfig = builtins.fromJSON (builtins.replaceStrings [ "\\u0026" ] [ "&" ] + (readFile "${pkgs.mattermost}/config/config.json") + ); + + database = "postgres://${cfg.localDatabaseUser}:${cfg.localDatabasePassword}@localhost:5432/${cfg.localDatabaseName}?sslmode=disable&connect_timeout=10"; mattermostConf = foldl recursiveUpdate defaultConfig [ { ServiceSettings.SiteURL = cfg.siteUrl; ServiceSettings.ListenAddress = cfg.listenAddress; TeamSettings.SiteName = cfg.siteName; SqlSettings.DriverName = "postgres"; - SqlSettings.DataSource = "postgres://${cfg.localDatabaseUser}:${cfg.localDatabasePassword}@localhost:5432/${cfg.localDatabaseName}?sslmode=disable&connect_timeout=10"; + SqlSettings.DataSource = database; } cfg.extraConfig ]; @@ -146,17 +150,17 @@ in config = mkMerge [ (mkIf cfg.enable { - users.users = optionalAttrs (cfg.user == "mattermost") (singleton { - name = "mattermost"; - group = cfg.group; - uid = config.ids.uids.mattermost; - home = cfg.statePath; - }); + users.users = optionalAttrs (cfg.user == "mattermost") { + mattermost = { + group = cfg.group; + uid = config.ids.uids.mattermost; + home = cfg.statePath; + }; + }; - users.groups = optionalAttrs (cfg.group == "mattermost") (singleton { - name = "mattermost"; - gid = config.ids.gids.mattermost; - }); + users.groups = optionalAttrs (cfg.group == "mattermost") { + mattermost.gid = config.ids.gids.mattermost; + }; services.postgresql.enable = cfg.localDatabaseCreate; @@ -175,7 +179,9 @@ in mkdir -p ${cfg.statePath}/{data,config,logs} ln -sf ${pkgs.mattermost}/{bin,fonts,i18n,templates,client} ${cfg.statePath} '' + lib.optionalString (!cfg.mutableConfig) '' - ln -sf ${mattermostConfJSON} ${cfg.statePath}/config/config.json + rm -f ${cfg.statePath}/config/config.json + cp ${mattermostConfJSON} ${cfg.statePath}/config/config.json + ${pkgs.mattermost}/bin/mattermost config migrate ${cfg.statePath}/config/config.json ${database} '' + lib.optionalString cfg.mutableConfig '' if ! test -e "${cfg.statePath}/config/.initial-created"; then rm -f ${cfg.statePath}/config/config.json @@ -201,7 +207,8 @@ in PermissionsStartOnly = true; User = cfg.user; Group = cfg.group; - ExecStart = "${pkgs.mattermost}/bin/mattermost"; + ExecStart = "${pkgs.mattermost}/bin/mattermost" + + (lib.optionalString (!cfg.mutableConfig) " -c ${database}"); WorkingDirectory = "${cfg.statePath}"; Restart = "always"; RestartSec = "10"; @@ -227,4 +234,3 @@ in }) ]; } - diff --git a/nixos/modules/services/web-apps/mediawiki.nix b/nixos/modules/services/web-apps/mediawiki.nix index 43edc04e1a4..e9ed53857d8 100644 --- a/nixos/modules/services/web-apps/mediawiki.nix +++ b/nixos/modules/services/web-apps/mediawiki.nix @@ -64,7 +64,7 @@ let $wgScriptPath = ""; ## The protocol and server name to use in fully-qualified URLs - $wgServer = "${if cfg.virtualHost.enableSSL then "https" else "http"}://${cfg.virtualHost.hostName}"; + $wgServer = "${if cfg.virtualHost.addSSL || cfg.virtualHost.forceSSL || cfg.virtualHost.onlySSL then "https" else "http"}://${cfg.virtualHost.hostName}"; ## The URL path to static resources (images, scripts, etc.) $wgResourceBasePath = $wgScriptPath; @@ -290,19 +290,13 @@ in }; virtualHost = mkOption { - type = types.submodule ({ - options = import ../web-servers/apache-httpd/per-server-options.nix { - inherit lib; - forMainServer = false; - }; - }); + type = types.submodule (import ../web-servers/apache-httpd/vhost-options.nix); example = literalExample '' { hostName = "mediawiki.example.org"; - enableSSL = true; adminAddr = "webmaster@example.org"; - sslServerCert = "/var/lib/acme/mediawiki.example.org/full.pem"; - sslServerKey = "/var/lib/acme/mediawiki.example.org/key.pem"; + forceSSL = true; + enableACME = true; } ''; description = '' @@ -389,31 +383,28 @@ in services.httpd = { enable = true; - adminAddr = mkDefault cfg.virtualHost.adminAddr; extraModules = [ "proxy_fcgi" ]; - virtualHosts = [ (mkMerge [ - cfg.virtualHost { - documentRoot = mkForce "${pkg}/share/mediawiki"; - extraConfig = '' - - - - SetHandler "proxy:unix:${fpm.socket}|fcgi://localhost/" - - + virtualHosts.${cfg.virtualHost.hostName} = mkMerge [ cfg.virtualHost { + documentRoot = mkForce "${pkg}/share/mediawiki"; + extraConfig = '' + + + + SetHandler "proxy:unix:${fpm.socket}|fcgi://localhost/" + + - Require all granted - DirectoryIndex index.php - AllowOverride All - - '' + optionalString (cfg.uploadsDir != null) '' - Alias "/images" "${cfg.uploadsDir}" - - Require all granted - - ''; - } - ]) ]; + Require all granted + DirectoryIndex index.php + AllowOverride All + + '' + optionalString (cfg.uploadsDir != null) '' + Alias "/images" "${cfg.uploadsDir}" + + Require all granted + + ''; + } ]; }; systemd.tmpfiles.rules = [ diff --git a/nixos/modules/services/web-apps/moinmoin.nix b/nixos/modules/services/web-apps/moinmoin.nix index 0fee64be0bb..dc7abce2a5c 100644 --- a/nixos/modules/services/web-apps/moinmoin.nix +++ b/nixos/modules/services/web-apps/moinmoin.nix @@ -299,5 +299,5 @@ in ]))); }; - meta.maintainers = with lib.maintainers; [ b42 ]; + meta.maintainers = with lib.maintainers; [ mmilata ]; } diff --git a/nixos/modules/services/web-apps/moodle.nix b/nixos/modules/services/web-apps/moodle.nix index ac59f9e0012..1196780cf6e 100644 --- a/nixos/modules/services/web-apps/moodle.nix +++ b/nixos/modules/services/web-apps/moodle.nix @@ -32,7 +32,7 @@ let 'dbcollation' => 'utf8mb4_unicode_ci', ); - $CFG->wwwroot = '${if cfg.virtualHost.enableSSL then "https" else "http"}://${cfg.virtualHost.hostName}'; + $CFG->wwwroot = '${if cfg.virtualHost.addSSL || cfg.virtualHost.forceSSL || cfg.virtualHost.onlySSL then "https" else "http"}://${cfg.virtualHost.hostName}'; $CFG->dataroot = '${stateDir}'; $CFG->admin = 'admin'; @@ -140,19 +140,15 @@ in }; virtualHost = mkOption { - type = types.submodule ({ - options = import ../web-servers/apache-httpd/per-server-options.nix { - inherit lib; - forMainServer = false; - }; - }); - example = { - hostName = "moodle.example.org"; - enableSSL = true; - adminAddr = "webmaster@example.org"; - sslServerCert = "/var/lib/acme/moodle.example.org/full.pem"; - sslServerKey = "/var/lib/acme/moodle.example.org/key.pem"; - }; + type = types.submodule (import ../web-servers/apache-httpd/vhost-options.nix); + example = literalExample '' + { + hostName = "moodle.example.org"; + adminAddr = "webmaster@example.org"; + forceSSL = true; + enableACME = true; + } + ''; description = '' Apache configuration can be done by adapting . See for further information. @@ -241,22 +237,20 @@ in enable = true; adminAddr = mkDefault cfg.virtualHost.adminAddr; extraModules = [ "proxy_fcgi" ]; - virtualHosts = [ (mkMerge [ - cfg.virtualHost { - documentRoot = mkForce "${cfg.package}/share/moodle"; - extraConfig = '' - - - - SetHandler "proxy:unix:${fpm.socket}|fcgi://localhost/" - - - Options -Indexes - DirectoryIndex index.php - - ''; - } - ]) ]; + virtualHosts.${cfg.virtualHost.hostName} = mkMerge [ cfg.virtualHost { + documentRoot = mkForce "${cfg.package}/share/moodle"; + extraConfig = '' + + + + SetHandler "proxy:unix:${fpm.socket}|fcgi://localhost/" + + + Options -Indexes + DirectoryIndex index.php + + ''; + } ]; }; systemd.tmpfiles.rules = [ diff --git a/nixos/modules/services/web-apps/nextcloud.nix b/nixos/modules/services/web-apps/nextcloud.nix index e3a2db398e6..5f6f2bc7a16 100644 --- a/nixos/modules/services/web-apps/nextcloud.nix +++ b/nixos/modules/services/web-apps/nextcloud.nix @@ -6,31 +6,32 @@ let cfg = config.services.nextcloud; fpm = config.services.phpfpm.pools.nextcloud; - phpPackage = pkgs.php73; - phpPackages = pkgs.php73Packages; + phpPackage = + let + base = pkgs.php74; + in + base.buildEnv { + extensions = e: with e; + base.enabledExtensions ++ [ + apcu redis memcached imagick + ]; + extraConfig = phpOptionsStr; + }; toKeyValue = generators.toKeyValue { mkKeyValue = generators.mkKeyValueDefault {} " = "; }; - phpOptionsExtensions = '' - ${optionalString cfg.caching.apcu "extension=${phpPackages.apcu}/lib/php/extensions/apcu.so"} - ${optionalString cfg.caching.redis "extension=${phpPackages.redis}/lib/php/extensions/redis.so"} - ${optionalString cfg.caching.memcached "extension=${phpPackages.memcached}/lib/php/extensions/memcached.so"} - extension=${phpPackages.imagick}/lib/php/extensions/imagick.so - zend_extension = opcache.so - opcache.enable = 1 - ''; phpOptions = { upload_max_filesize = cfg.maxUploadSize; post_max_size = cfg.maxUploadSize; memory_limit = cfg.maxUploadSize; } // cfg.phpOptions; - phpOptionsStr = phpOptionsExtensions + (toKeyValue phpOptions); + phpOptionsStr = toKeyValue phpOptions; occ = pkgs.writeScriptBin "nextcloud-occ" '' - #! ${pkgs.stdenv.shell} - cd ${pkgs.nextcloud} + #! ${pkgs.runtimeShell} + cd ${cfg.package} sudo=exec if [[ "$USER" != nextcloud ]]; then sudo='exec /run/wrappers/bin/sudo -u nextcloud --preserve-env=NEXTCLOUD_CONFIG_DIR' @@ -38,10 +39,11 @@ let export NEXTCLOUD_CONFIG_DIR="${cfg.home}/config" $sudo \ ${phpPackage}/bin/php \ - -c ${pkgs.writeText "php.ini" phpOptionsStr}\ occ $* ''; + inherit (config.system) stateVersion; + in { options.services.nextcloud = { enable = mkEnableOption "nextcloud"; @@ -62,7 +64,12 @@ in { https = mkOption { type = types.bool; default = false; - description = "Enable if there is a TLS terminating proxy in front of nextcloud."; + description = "Use https for generated links."; + }; + package = mkOption { + type = types.package; + description = "Which package to use for the Nextcloud instance."; + relatedPackages = [ "nextcloud17" "nextcloud18" ]; }; maxUploadSize = mkOption { @@ -229,6 +236,15 @@ in { ''; }; + trustedProxies = mkOption { + type = types.listOf types.str; + default = []; + description = '' + Trusted proxies, to provide if the nextcloud installation is being + proxied to secure against e.g. spoofing. + ''; + }; + overwriteProtocol = mkOption { type = types.nullOr (types.enum [ "http" "https" ]); default = null; @@ -300,10 +316,40 @@ in { } ]; - warnings = optional (cfg.poolConfig != null) '' - Using config.services.nextcloud.poolConfig is deprecated and will become unsupported in a future release. - Please migrate your configuration to config.services.nextcloud.poolSettings. - ''; + warnings = [] + ++ (optional (cfg.poolConfig != null) '' + Using config.services.nextcloud.poolConfig is deprecated and will become unsupported in a future release. + Please migrate your configuration to config.services.nextcloud.poolSettings. + '') + ++ (optional (versionOlder cfg.package.version "18") '' + A legacy Nextcloud install (from before NixOS 20.03) may be installed. + + You're currently deploying an older version of Nextcloud. This may be needed + since Nextcloud doesn't allow major version upgrades that skip multiple + versions (i.e. an upgrade from 16 is possible to 17, but not 16 to 18). + + It is assumed that Nextcloud will be upgraded from version 16 to 17. + + * If this is a fresh install, there will be no upgrade to do now. + + * If this server already had Nextcloud installed, first deploy this to your + server, and wait until the upgrade to 17 is finished. + + Then, set `services.nextcloud.package` to `pkgs.nextcloud18` to upgrade to + Nextcloud version 18. + ''); + + services.nextcloud.package = with pkgs; + mkDefault ( + if pkgs ? nextcloud + then throw '' + The `pkgs.nextcloud`-attribute has been removed. If it's supposed to be the default + nextcloud defined in an overlay, please set `services.nextcloud.package` to + `pkgs.nextcloud`. + '' + else if versionOlder stateVersion "20.03" then nextcloud17 + else nextcloud18 + ); } { systemd.timers.nextcloud-cron = { @@ -352,6 +398,7 @@ in { ${optionalString (c.dbpassFile != null) "'dbpassword' => nix_read_pwd(),"} 'dbtype' => '${c.dbtype}', 'trusted_domains' => ${writePhpArrary ([ cfg.hostName ] ++ c.extraTrustedDomains)}, + 'trusted_proxies' => ${writePhpArrary (c.trustedProxies)}, ]; ''; occInstallCmd = let @@ -397,7 +444,7 @@ in { path = [ occ ]; script = '' chmod og+x ${cfg.home} - ln -sf ${pkgs.nextcloud}/apps ${cfg.home}/ + ln -sf ${cfg.package}/apps ${cfg.home}/ mkdir -p ${cfg.home}/config ${cfg.home}/data ${cfg.home}/store-apps ln -sf ${overrideConfig} ${cfg.home}/config/override.config.php @@ -419,7 +466,7 @@ in { environment.NEXTCLOUD_CONFIG_DIR = "${cfg.home}/config"; serviceConfig.Type = "oneshot"; serviceConfig.User = "nextcloud"; - serviceConfig.ExecStart = "${phpPackage}/bin/php -f ${pkgs.nextcloud}/cron.php"; + serviceConfig.ExecStart = "${phpPackage}/bin/php -f ${cfg.package}/cron.php"; }; nextcloud-update-plugins = mkIf cfg.autoUpdateApps.enable { serviceConfig.Type = "oneshot"; @@ -433,7 +480,7 @@ in { pools.nextcloud = { user = "nextcloud"; group = "nginx"; - phpOptions = phpOptionsExtensions + phpOptionsStr; + phpOptions = phpOptionsStr; phpPackage = phpPackage; phpEnv = { NEXTCLOUD_CONFIG_DIR = "${cfg.home}/config"; @@ -461,7 +508,7 @@ in { enable = true; virtualHosts = { ${cfg.hostName} = { - root = pkgs.nextcloud; + root = cfg.package; locations = { "= /robots.txt" = { priority = 100; @@ -523,10 +570,11 @@ in { add_header X-Robots-Tag none; add_header X-Download-Options noopen; add_header X-Permitted-Cross-Domain-Policies none; + add_header X-Frame-Options sameorigin; add_header Referrer-Policy no-referrer; access_log off; ''; - "~ \\.(?:png|html|ttf|ico|jpg|jpeg)$".extraConfig = '' + "~ \\.(?:png|html|ttf|ico|jpg|jpeg|bcmap|mp4|webm)$".extraConfig = '' try_files $uri /index.php$request_uri; access_log off; ''; @@ -537,6 +585,7 @@ in { add_header X-Robots-Tag none; add_header X-Download-Options noopen; add_header X-Permitted-Cross-Domain-Policies none; + add_header X-Frame-Options sameorigin; add_header Referrer-Policy no-referrer; add_header Strict-Transport-Security "max-age=15552000; includeSubDomains" always; error_page 403 /core/templates/403.php; diff --git a/nixos/modules/services/web-apps/nextcloud.xml b/nixos/modules/services/web-apps/nextcloud.xml index d66e0f0c299..fc454f8ba25 100644 --- a/nixos/modules/services/web-apps/nextcloud.xml +++ b/nixos/modules/services/web-apps/nextcloud.xml @@ -113,5 +113,53 @@ maintenance:install! This command tries to install the application and can cause unwanted side-effects! + + + Nextcloud doesn't allow to move more than one major-version forward. If you're e.g. on + v16, you cannot upgrade to v18, you need to upgrade to + v17 first. This is ensured automatically as long as the + stateVersion is declared properly. In that case + the oldest version available (one major behind the one from the previous NixOS + release) will be selected by default and the module will generate a warning that reminds + the user to upgrade to latest Nextcloud after that deploy. + +
+ +
+ Maintainer information + + + As stated in the previous paragraph, we must provide a clean upgrade-path for Nextcloud + since it cannot move more than one major version forward on a single upgrade. This chapter + adds some notes how Nextcloud updates should be rolled out in the future. + + + + While minor and patch-level updates are no problem and can be done directly in the + package-expression (and should be backported to supported stable branches after that), + major-releases should be added in a new attribute (e.g. Nextcloud v19.0.0 + should be available in nixpkgs as pkgs.nextcloud19). + To provide simple upgrade paths it's generally useful to backport those as well to stable + branches. As long as the package-default isn't altered, this won't break existing setups. + After that, the versioning-warning in the nextcloud-module should be + updated to make sure that the + package-option selects the latest version + on fresh setups. + + + + If major-releases will be abandoned by upstream, we should check first if those are needed + in NixOS for a safe upgrade-path before removing those. In that case we shold keep those + packages, but mark them as insecure in an expression like this (in + <nixpkgs/pkgs/servers/nextcloud/default.nix>): +/* ... */ +{ + nextcloud17 = generic { + version = "17.0.x"; + sha256 = "0000000000000000000000000000000000000000000000000000"; + insecure = true; + }; +} +
diff --git a/nixos/modules/services/web-apps/restya-board.nix b/nixos/modules/services/web-apps/restya-board.nix index 2c2f36ac598..9d0a3f65253 100644 --- a/nixos/modules/services/web-apps/restya-board.nix +++ b/nixos/modules/services/web-apps/restya-board.nix @@ -116,7 +116,7 @@ in }; passwordFile = mkOption { - type = types.nullOr types.str; + type = types.nullOr types.path; default = null; description = '' The database user's password. 'null' if no password is set. @@ -285,7 +285,7 @@ in sed -i "s/^.*'R_DB_PASSWORD'.*$/define('R_DB_PASSWORD', 'restya');/g" "${runDir}/server/php/config.inc.php" '' else '' sed -i "s/^.*'R_DB_HOST'.*$/define('R_DB_HOST', '${cfg.database.host}');/g" "${runDir}/server/php/config.inc.php" - sed -i "s/^.*'R_DB_PASSWORD'.*$/define('R_DB_PASSWORD', '$(<${cfg.database.dbPassFile})');/g" "${runDir}/server/php/config.inc.php" + sed -i "s/^.*'R_DB_PASSWORD'.*$/define('R_DB_PASSWORD', ${if cfg.database.passwordFile == null then "''" else "'file_get_contents(${cfg.database.passwordFile})'"});/g" "${runDir}/server/php/config.inc.php ''} sed -i "s/^.*'R_DB_PORT'.*$/define('R_DB_PORT', '${toString cfg.database.port}');/g" "${runDir}/server/php/config.inc.php" sed -i "s/^.*'R_DB_NAME'.*$/define('R_DB_NAME', '${cfg.database.name}');/g" "${runDir}/server/php/config.inc.php" diff --git a/nixos/modules/services/web-apps/trilium.nix b/nixos/modules/services/web-apps/trilium.nix new file mode 100644 index 00000000000..6f47193c62b --- /dev/null +++ b/nixos/modules/services/web-apps/trilium.nix @@ -0,0 +1,137 @@ +{ config, lib, pkgs, ... }: + +let + cfg = config.services.trilium-server; + configIni = pkgs.writeText "trilium-config.ini" '' + [General] + # Instance name can be used to distinguish between different instances + instanceName=${cfg.instanceName} + + # Disable automatically generating desktop icon + noDesktopIcon=true + + [Network] + # host setting is relevant only for web deployments - set the host on which the server will listen + host=${cfg.host} + # port setting is relevant only for web deployments, desktop builds run on random free port + port=${toString cfg.port} + # true for TLS/SSL/HTTPS (secure), false for HTTP (unsecure). + https=false + ''; +in +{ + + options.services.trilium-server = with lib; { + enable = mkEnableOption "trilium-server"; + + dataDir = mkOption { + type = types.str; + default = "/var/lib/trilium"; + description = '' + The directory storing the nodes database and the configuration. + ''; + }; + + instanceName = mkOption { + type = types.str; + default = "Trilium"; + description = '' + Instance name used to distinguish between different instances + ''; + }; + + host = mkOption { + type = types.str; + default = "127.0.0.1"; + description = '' + The host address to bind to (defaults to localhost). + ''; + }; + + port = mkOption { + type = types.int; + default = 8080; + description = '' + The port number to bind to. + ''; + }; + + nginx = mkOption { + default = {}; + description = '' + Configuration for nginx reverse proxy. + ''; + + type = types.submodule { + options = { + enable = mkOption { + type = types.bool; + default = false; + description = '' + Configure the nginx reverse proxy settings. + ''; + }; + + hostName = mkOption { + type = types.str; + description = '' + The hostname use to setup the virtualhost configuration + ''; + }; + }; + }; + }; + }; + + config = lib.mkIf cfg.enable (lib.mkMerge [ + { + meta.maintainers = with lib.maintainers; [ kampka ]; + + users.groups.trilium = {}; + users.users.trilium = { + description = "Trilium User"; + group = "trilium"; + home = cfg.dataDir; + isSystemUser = true; + }; + + systemd.services.trilium-server = { + wantedBy = [ "multi-user.target" ]; + environment.TRILIUM_DATA_DIR = cfg.dataDir; + serviceConfig = { + ExecStart = "${pkgs.trilium-server}/bin/trilium-server"; + User = "trilium"; + Group = "trilium"; + PrivateTmp = "true"; + }; + }; + + systemd.tmpfiles.rules = [ + "d ${cfg.dataDir} 0750 trilium trilium - -" + "L+ ${cfg.dataDir}/config.ini - - - - ${configIni}" + ]; + + } + + (lib.mkIf cfg.nginx.enable { + services.nginx = { + enable = true; + virtualHosts."${cfg.nginx.hostName}" = { + locations."/" = { + proxyPass = "http://${cfg.host}:${toString cfg.port}/"; + extraConfig = '' + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection 'upgrade'; + proxy_set_header Host $host; + proxy_cache_bypass $http_upgrade; + ''; + }; + extraConfig = '' + client_max_body_size 0; + ''; + }; + }; + }) + ]); +} diff --git a/nixos/modules/services/web-apps/wordpress.nix b/nixos/modules/services/web-apps/wordpress.nix index 13d21a0b4ae..5fbe53221ae 100644 --- a/nixos/modules/services/web-apps/wordpress.nix +++ b/nixos/modules/services/web-apps/wordpress.nix @@ -3,7 +3,7 @@ let inherit (lib) mkDefault mkEnableOption mkForce mkIf mkMerge mkOption types; inherit (lib) any attrValues concatMapStringsSep flatten literalExample; - inherit (lib) mapAttrs' mapAttrsToList nameValuePair optional optionalAttrs optionalString; + inherit (lib) mapAttrs mapAttrs' mapAttrsToList nameValuePair optional optionalAttrs optionalString; eachSite = config.services.wordpress; user = "wordpress"; @@ -105,7 +105,7 @@ let name = "embed-pdf-viewer-plugin"; # Download the theme from the wordpress site src = pkgs.fetchurl { - url = https://downloads.wordpress.org/plugin/embed-pdf-viewer.2.0.3.zip; + url = "https://downloads.wordpress.org/plugin/embed-pdf-viewer.2.0.3.zip"; sha256 = "1rhba5h5fjlhy8p05zf0p14c9iagfh96y91r36ni0rmk6y891lyd"; }; # We need unzip to build this package @@ -132,7 +132,7 @@ let name = "responsive-theme"; # Download the theme from the wordpress site src = pkgs.fetchurl { - url = https://downloads.wordpress.org/theme/responsive.3.14.zip; + url = "https://downloads.wordpress.org/theme/responsive.3.14.zip"; sha256 = "0rjwm811f4aa4q43r77zxlpklyb85q08f9c8ns2akcarrvj5ydx3"; }; # We need unzip to build this package @@ -209,18 +209,12 @@ let }; virtualHost = mkOption { - type = types.submodule ({ - options = import ../web-servers/apache-httpd/per-server-options.nix { - inherit lib; - forMainServer = false; - }; - }); + type = types.submodule (import ../web-servers/apache-httpd/vhost-options.nix); example = literalExample '' { - enableSSL = true; adminAddr = "webmaster@example.org"; - sslServerCert = "/var/lib/acme/wordpress.example.org/full.pem"; - sslServerKey = "/var/lib/acme/wordpress.example.org/key.pem"; + forceSSL = true; + enableACME = true; } ''; description = '' @@ -304,41 +298,37 @@ in services.httpd = { enable = true; extraModules = [ "proxy_fcgi" ]; - virtualHosts = mapAttrsToList (hostName: cfg: - (mkMerge [ - cfg.virtualHost { - documentRoot = mkForce "${pkg hostName cfg}/share/wordpress"; - extraConfig = '' - - - - SetHandler "proxy:unix:${config.services.phpfpm.pools."wordpress-${hostName}".socket}|fcgi://localhost/" - - + virtualHosts = mapAttrs (hostName: cfg: mkMerge [ cfg.virtualHost { + documentRoot = mkForce "${pkg hostName cfg}/share/wordpress"; + extraConfig = '' + + + + SetHandler "proxy:unix:${config.services.phpfpm.pools."wordpress-${hostName}".socket}|fcgi://localhost/" + + - # standard wordpress .htaccess contents - - RewriteEngine On - RewriteBase / - RewriteRule ^index\.php$ - [L] - RewriteCond %{REQUEST_FILENAME} !-f - RewriteCond %{REQUEST_FILENAME} !-d - RewriteRule . /index.php [L] - + # standard wordpress .htaccess contents + + RewriteEngine On + RewriteBase / + RewriteRule ^index\.php$ - [L] + RewriteCond %{REQUEST_FILENAME} !-f + RewriteCond %{REQUEST_FILENAME} !-d + RewriteRule . /index.php [L] + - DirectoryIndex index.php - Require all granted - Options +FollowSymLinks - + DirectoryIndex index.php + Require all granted + Options +FollowSymLinks + - # https://wordpress.org/support/article/hardening-wordpress/#securing-wp-config-php - - Require all denied - - ''; - } - ]) - ) eachSite; + # https://wordpress.org/support/article/hardening-wordpress/#securing-wp-config-php + + Require all denied + + ''; + } ]) eachSite; }; systemd.tmpfiles.rules = flatten (mapAttrsToList (hostName: cfg: [ diff --git a/nixos/modules/services/web-apps/youtrack.nix b/nixos/modules/services/web-apps/youtrack.nix index 830edac20ba..b4d653d2d77 100644 --- a/nixos/modules/services/web-apps/youtrack.nix +++ b/nixos/modules/services/web-apps/youtrack.nix @@ -46,9 +46,11 @@ in https://www.jetbrains.com/help/youtrack/standalone/YouTrack-Java-Start-Parameters.html for more information. ''; - example = { - "jetbrains.youtrack.overrideRootPassword" = "tortuga"; - }; + example = literalExample '' + { + "jetbrains.youtrack.overrideRootPassword" = "tortuga"; + } + ''; type = types.attrsOf types.str; }; diff --git a/nixos/modules/services/web-apps/zabbix.nix b/nixos/modules/services/web-apps/zabbix.nix index 09538726b7c..00719512834 100644 --- a/nixos/modules/services/web-apps/zabbix.nix +++ b/nixos/modules/services/web-apps/zabbix.nix @@ -113,19 +113,15 @@ in }; virtualHost = mkOption { - type = types.submodule ({ - options = import ../web-servers/apache-httpd/per-server-options.nix { - inherit lib; - forMainServer = false; - }; - }); - example = { - hostName = "zabbix.example.org"; - enableSSL = true; - adminAddr = "webmaster@example.org"; - sslServerCert = "/var/lib/acme/zabbix.example.org/full.pem"; - sslServerKey = "/var/lib/acme/zabbix.example.org/key.pem"; - }; + type = types.submodule (import ../web-servers/apache-httpd/vhost-options.nix); + example = literalExample '' + { + hostName = "zabbix.example.org"; + adminAddr = "webmaster@example.org"; + forceSSL = true; + enableACME = true; + } + ''; description = '' Apache configuration can be done by adapting services.httpd.virtualHosts.<name>. See for further information. @@ -190,23 +186,21 @@ in enable = true; adminAddr = mkDefault cfg.virtualHost.adminAddr; extraModules = [ "proxy_fcgi" ]; - virtualHosts = [ (mkMerge [ - cfg.virtualHost { - documentRoot = mkForce "${cfg.package}/share/zabbix"; - extraConfig = '' - - - - SetHandler "proxy:unix:${fpm.socket}|fcgi://localhost/" - - - AllowOverride all - Options -Indexes - DirectoryIndex index.php - - ''; - } - ]) ]; + virtualHosts.${cfg.virtualHost.hostName} = mkMerge [ cfg.virtualHost { + documentRoot = mkForce "${cfg.package}/share/zabbix"; + extraConfig = '' + + + + SetHandler "proxy:unix:${fpm.socket}|fcgi://localhost/" + + + AllowOverride all + Options -Indexes + DirectoryIndex index.php + + ''; + } ]; }; users.users.${user} = mapAttrs (name: mkDefault) { diff --git a/nixos/modules/services/web-servers/apache-httpd/default.nix b/nixos/modules/services/web-servers/apache-httpd/default.nix index 850d3052533..832c8b30ee9 100644 --- a/nixos/modules/services/web-servers/apache-httpd/default.nix +++ b/nixos/modules/services/web-servers/apache-httpd/default.nix @@ -4,36 +4,34 @@ with lib; let - mainCfg = config.services.httpd; + cfg = config.services.httpd; runtimeDir = "/run/httpd"; - httpd = mainCfg.package.out; + pkg = cfg.package.out; - httpdConf = mainCfg.configFile; + httpdConf = cfg.configFile; - php = mainCfg.phpPackage.override { apacheHttpd = httpd.dev; /* otherwise it only gets .out */ }; + php = cfg.phpPackage.override { apacheHttpd = pkg.dev; /* otherwise it only gets .out */ }; phpMajorVersion = lib.versions.major (lib.getVersion php); - mod_perl = pkgs.apacheHttpdPackages.mod_perl.override { apacheHttpd = httpd; }; + mod_perl = pkgs.apacheHttpdPackages.mod_perl.override { apacheHttpd = pkg; }; - defaultListen = cfg: if cfg.enableSSL - then [{ip = "*"; port = 443;}] - else [{ip = "*"; port = 80;}]; + vhosts = attrValues cfg.virtualHosts; - getListen = cfg: - if cfg.listen == [] - then defaultListen cfg - else cfg.listen; + mkListenInfo = hostOpts: + if hostOpts.listen != [] then hostOpts.listen + else ( + optional (hostOpts.onlySSL || hostOpts.addSSL || hostOpts.forceSSL) { ip = "*"; port = 443; ssl = true; } ++ + optional (!hostOpts.onlySSL) { ip = "*"; port = 80; ssl = false; } + ); - listenToString = l: "${l.ip}:${toString l.port}"; + listenInfo = unique (concatMap mkListenInfo vhosts); - allHosts = [mainCfg] ++ mainCfg.virtualHosts; - - enableSSL = any (vhost: vhost.enableSSL) allHosts; - - enableUserDir = any (vhost: vhost.enableUserDir) allHosts; + enableHttp2 = any (vhost: vhost.http2) vhosts; + enableSSL = any (listen: listen.ssl) listenInfo; + enableUserDir = any (vhost: vhost.enableUserDir) vhosts; # NOTE: generally speaking order of modules is very important modules = @@ -43,23 +41,19 @@ let "mime" "autoindex" "negotiation" "dir" "alias" "rewrite" "unixd" "slotmem_shm" "socache_shmcb" - "mpm_${mainCfg.multiProcessingModule}" + "mpm_${cfg.multiProcessingModule}" ] - ++ (if mainCfg.multiProcessingModule == "prefork" then [ "cgi" ] else [ "cgid" ]) + ++ (if cfg.multiProcessingModule == "prefork" then [ "cgi" ] else [ "cgid" ]) + ++ optional enableHttp2 "http2" ++ optional enableSSL "ssl" ++ optional enableUserDir "userdir" - ++ optional mainCfg.enableMellon { name = "auth_mellon"; path = "${pkgs.apacheHttpdPackages.mod_auth_mellon}/modules/mod_auth_mellon.so"; } - ++ optional mainCfg.enablePHP { name = "php${phpMajorVersion}"; path = "${php}/modules/libphp${phpMajorVersion}.so"; } - ++ optional mainCfg.enablePerl { name = "perl"; path = "${mod_perl}/modules/mod_perl.so"; } - ++ mainCfg.extraModules; + ++ optional cfg.enableMellon { name = "auth_mellon"; path = "${pkgs.apacheHttpdPackages.mod_auth_mellon}/modules/mod_auth_mellon.so"; } + ++ optional cfg.enablePHP { name = "php${phpMajorVersion}"; path = "${php}/modules/libphp${phpMajorVersion}.so"; } + ++ optional cfg.enablePerl { name = "perl"; path = "${mod_perl}/modules/mod_perl.so"; } + ++ cfg.extraModules; - - allDenied = "Require all denied"; - allGranted = "Require all granted"; - - - loggingConf = (if mainCfg.logFormat != "none" then '' - ErrorLog ${mainCfg.logDir}/error.log + loggingConf = (if cfg.logFormat != "none" then '' + ErrorLog ${cfg.logDir}/error.log LogLevel notice @@ -68,7 +62,7 @@ let LogFormat "%{Referer}i -> %U" referer LogFormat "%{User-agent}i" agent - CustomLog ${mainCfg.logDir}/access.log ${mainCfg.logFormat} + CustomLog ${cfg.logDir}/access.log ${cfg.logFormat} '' else '' ErrorLog /dev/null ''); @@ -90,174 +84,208 @@ let sslConf = '' - SSLSessionCache shmcb:${runtimeDir}/ssl_scache(512000) + + SSLSessionCache shmcb:${runtimeDir}/ssl_scache(512000) - Mutex posixsem + Mutex posixsem - SSLRandomSeed startup builtin - SSLRandomSeed connect builtin + SSLRandomSeed startup builtin + SSLRandomSeed connect builtin - SSLProtocol ${mainCfg.sslProtocols} - SSLCipherSuite ${mainCfg.sslCiphers} - SSLHonorCipherOrder on + SSLProtocol ${cfg.sslProtocols} + SSLCipherSuite ${cfg.sslCiphers} + SSLHonorCipherOrder on + ''; mimeConf = '' - TypesConfig ${httpd}/conf/mime.types + TypesConfig ${pkg}/conf/mime.types AddType application/x-x509-ca-cert .crt AddType application/x-pkcs7-crl .crl AddType application/x-httpd-php .php .phtml - MIMEMagicFile ${httpd}/conf/magic + MIMEMagicFile ${pkg}/conf/magic ''; + mkVHostConf = hostOpts: + let + adminAddr = if hostOpts.adminAddr != null then hostOpts.adminAddr else cfg.adminAddr; + listen = filter (listen: !listen.ssl) (mkListenInfo hostOpts); + listenSSL = filter (listen: listen.ssl) (mkListenInfo hostOpts); - perServerConf = isMainServer: cfg: let + useACME = hostOpts.enableACME || hostOpts.useACMEHost != null; + sslCertDir = + if hostOpts.enableACME then config.security.acme.certs.${hostOpts.hostName}.directory + else if hostOpts.useACMEHost != null then config.security.acme.certs.${hostOpts.useACMEHost}.directory + else abort "This case should never happen."; - # Canonical name must not include a trailing slash. - canonicalNames = - let defaultPort = (head (defaultListen cfg)).port; in - map (port: - (if cfg.enableSSL then "https" else "http") + "://" + - cfg.hostName + - (if port != defaultPort then ":${toString port}" else "") - ) (map (x: x.port) (getListen cfg)); + sslServerCert = if useACME then "${sslCertDir}/full.pem" else hostOpts.sslServerCert; + sslServerKey = if useACME then "${sslCertDir}/key.pem" else hostOpts.sslServerKey; + sslServerChain = if useACME then "${sslCertDir}/fullchain.pem" else hostOpts.sslServerChain; - maybeDocumentRoot = fold (svc: acc: - if acc == null then svc.documentRoot else assert svc.documentRoot == null; acc - ) null ([ cfg ]); + acmeChallenge = optionalString useACME '' + Alias /.well-known/acme-challenge/ "${hostOpts.acmeRoot}/.well-known/acme-challenge/" + + AllowOverride None + Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec + Require method GET POST OPTIONS + Require all granted + + ''; + in + optionalString (listen != []) '' + + ServerName ${hostOpts.hostName} + ${concatMapStrings (alias: "ServerAlias ${alias}\n") hostOpts.serverAliases} + ServerAdmin ${adminAddr} + + SSLEngine off + + ${acmeChallenge} + ${if hostOpts.forceSSL then '' + + RewriteEngine on + RewriteCond %{REQUEST_URI} !^/.well-known/acme-challenge [NC] + RewriteCond %{HTTPS} off + RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} + + '' else mkVHostCommonConf hostOpts} + + '' + + optionalString (listenSSL != []) '' + + ServerName ${hostOpts.hostName} + ${concatMapStrings (alias: "ServerAlias ${alias}\n") hostOpts.serverAliases} + ServerAdmin ${adminAddr} + SSLEngine on + SSLCertificateFile ${sslServerCert} + SSLCertificateKeyFile ${sslServerKey} + ${optionalString (sslServerChain != null) "SSLCertificateChainFile ${sslServerChain}"} + ${optionalString hostOpts.http2 "Protocols h2 h2c http/1.1"} + ${acmeChallenge} + ${mkVHostCommonConf hostOpts} + + '' + ; - documentRoot = if maybeDocumentRoot != null then maybeDocumentRoot else - pkgs.runCommand "empty" { preferLocalBuild = true; } "mkdir -p $out"; + mkVHostCommonConf = hostOpts: + let + documentRoot = if hostOpts.documentRoot != null + then hostOpts.documentRoot + else pkgs.runCommand "empty" { preferLocalBuild = true; } "mkdir -p $out" + ; - documentRootConf = '' - DocumentRoot "${documentRoot}" + mkLocations = locations: concatStringsSep "\n" (map (config: '' + + ${optionalString (config.proxyPass != null) '' + + ProxyPass ${config.proxyPass} + ProxyPassReverse ${config.proxyPass} + + ''} + ${optionalString (config.index != null) '' + + DirectoryIndex ${config.index} + + ''} + ${optionalString (config.alias != null) '' + + Alias "${config.alias}" + + ''} + ${config.extraConfig} + + '') (sortProperties (mapAttrsToList (k: v: v // { location = k; }) locations))); + in + '' + ${optionalString cfg.logPerVirtualHost '' + ErrorLog ${cfg.logDir}/error-${hostOpts.hostName}.log + CustomLog ${cfg.logDir}/access-${hostOpts.hostName}.log ${hostOpts.logFormat} + ''} - - Options Indexes FollowSymLinks - AllowOverride None - ${allGranted} - - ''; + ${optionalString (hostOpts.robotsEntries != "") '' + Alias /robots.txt ${pkgs.writeText "robots.txt" hostOpts.robotsEntries} + ''} - # If this is a vhost, the include the entries for the main server as well. - robotsTxt = concatStringsSep "\n" (filter (x: x != "") ([ cfg.robotsEntries ] ++ lib.optional (!isMainServer) mainCfg.robotsEntries)); + DocumentRoot "${documentRoot}" - in '' - ${concatStringsSep "\n" (map (n: "ServerName ${n}") canonicalNames)} + + Options Indexes FollowSymLinks + AllowOverride None + Require all granted + - ${concatMapStrings (alias: "ServerAlias ${alias}\n") cfg.serverAliases} + ${optionalString hostOpts.enableUserDir '' + UserDir public_html + UserDir disabled root + + AllowOverride FileInfo AuthConfig Limit Indexes + Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec + + Require all granted + + + Require all denied + + + ''} - ${if cfg.sslServerCert != null then '' - SSLCertificateFile ${cfg.sslServerCert} - SSLCertificateKeyFile ${cfg.sslServerKey} - ${if cfg.sslServerChain != null then '' - SSLCertificateChainFile ${cfg.sslServerChain} - '' else ""} - '' else ""} + ${optionalString (hostOpts.globalRedirect != null && hostOpts.globalRedirect != "") '' + RedirectPermanent / ${hostOpts.globalRedirect} + ''} - ${if cfg.enableSSL then '' - SSLEngine on - '' else if enableSSL then /* i.e., SSL is enabled for some host, but not this one */ - '' - SSLEngine off - '' else ""} + ${ + let makeDirConf = elem: '' + Alias ${elem.urlPath} ${elem.dir}/ + + Options +Indexes + Require all granted + AllowOverride All + + ''; + in concatMapStrings makeDirConf hostOpts.servedDirs + } - ${if isMainServer || cfg.adminAddr != null then '' - ServerAdmin ${cfg.adminAddr} - '' else ""} - - ${if !isMainServer && mainCfg.logPerVirtualHost then '' - ErrorLog ${mainCfg.logDir}/error-${cfg.hostName}.log - CustomLog ${mainCfg.logDir}/access-${cfg.hostName}.log ${cfg.logFormat} - '' else ""} - - ${optionalString (robotsTxt != "") '' - Alias /robots.txt ${pkgs.writeText "robots.txt" robotsTxt} - ''} - - ${if isMainServer || maybeDocumentRoot != null then documentRootConf else ""} - - ${if cfg.enableUserDir then '' - - UserDir public_html - UserDir disabled root - - - AllowOverride FileInfo AuthConfig Limit Indexes - Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec - - ${allGranted} - - - ${allDenied} - - - - '' else ""} - - ${if cfg.globalRedirect != null && cfg.globalRedirect != "" then '' - RedirectPermanent / ${cfg.globalRedirect} - '' else ""} - - ${ - let makeFileConf = elem: '' - Alias ${elem.urlPath} ${elem.file} - ''; - in concatMapStrings makeFileConf cfg.servedFiles - } - - ${ - let makeDirConf = elem: '' - Alias ${elem.urlPath} ${elem.dir}/ - - Options +Indexes - ${allGranted} - AllowOverride All - - ''; - in concatMapStrings makeDirConf cfg.servedDirs - } - - ${cfg.extraConfig} - ''; + ${mkLocations hostOpts.locations} + ${hostOpts.extraConfig} + '' + ; confFile = pkgs.writeText "httpd.conf" '' - ServerRoot ${httpd} - + ServerRoot ${pkg} + ServerName ${config.networking.hostName} DefaultRuntimeDir ${runtimeDir}/runtime PidFile ${runtimeDir}/httpd.pid - ${optionalString (mainCfg.multiProcessingModule != "prefork") '' + ${optionalString (cfg.multiProcessingModule != "prefork") '' # mod_cgid requires this. ScriptSock ${runtimeDir}/cgisock ''} - MaxClients ${toString mainCfg.maxClients} - MaxRequestsPerChild ${toString mainCfg.maxRequestsPerChild} + MaxClients ${toString cfg.maxClients} + MaxRequestsPerChild ${toString cfg.maxRequestsPerChild} ${let - listen = concatMap getListen allHosts; - toStr = listen: "Listen ${listenToString listen}\n"; - uniqueListen = uniqList {inputList = map toStr listen;}; - in concatStrings uniqueListen + toStr = listen: "Listen ${listen.ip}:${toString listen.port} ${if listen.ssl then "https" else "http"}"; + uniqueListen = uniqList {inputList = map toStr listenInfo;}; + in concatStringsSep "\n" uniqueListen } - User ${mainCfg.user} - Group ${mainCfg.group} + User ${cfg.user} + Group ${cfg.group} ${let mkModule = module: - if isString module then { name = module; path = "${httpd}/modules/mod_${module}.so"; } + if isString module then { name = module; path = "${pkg}/modules/mod_${module}.so"; } else if isAttrs module then { inherit (module) name path; } else throw "Expecting either a string or attribute set including a name and path."; in @@ -267,53 +295,45 @@ let AddHandler type-map var - ${allDenied} + Require all denied ${mimeConf} ${loggingConf} ${browserHacks} - Include ${httpd}/conf/extra/httpd-default.conf - Include ${httpd}/conf/extra/httpd-autoindex.conf - Include ${httpd}/conf/extra/httpd-multilang-errordoc.conf - Include ${httpd}/conf/extra/httpd-languages.conf + Include ${pkg}/conf/extra/httpd-default.conf + Include ${pkg}/conf/extra/httpd-autoindex.conf + Include ${pkg}/conf/extra/httpd-multilang-errordoc.conf + Include ${pkg}/conf/extra/httpd-languages.conf TraceEnable off - ${if enableSSL then sslConf else ""} + ${sslConf} # Fascist default - deny access to everything. Options FollowSymLinks AllowOverride None - ${allDenied} + Require all denied # But do allow access to files in the store so that we don't have # to generate clauses for every generated file that we # want to serve. - ${allGranted} + Require all granted - # Generate directives for the main server. - ${perServerConf true mainCfg} + ${cfg.extraConfig} - ${let - makeVirtualHost = vhost: '' - - ${perServerConf false vhost} - - ''; - in concatMapStrings makeVirtualHost mainCfg.virtualHosts - } + ${concatMapStringsSep "\n" mkVHostConf vhosts} ''; # Generate the PHP configuration file. Should probably be factored # out into a separate module. phpIni = pkgs.runCommand "php.ini" - { options = mainCfg.phpOptions; + { options = cfg.phpOptions; preferLocalBuild = true; } '' @@ -329,19 +349,30 @@ in imports = [ (mkRemovedOptionModule [ "services" "httpd" "extraSubservices" ] "Most existing subservices have been ported to the NixOS module system. Please update your configuration accordingly.") (mkRemovedOptionModule [ "services" "httpd" "stateDir" ] "The httpd module now uses /run/httpd as a runtime directory.") + + # virtualHosts options + (mkRemovedOptionModule [ "services" "httpd" "documentRoot" ] "Please define a virtual host using `services.httpd.virtualHosts`.") + (mkRemovedOptionModule [ "services" "httpd" "enableSSL" ] "Please define a virtual host using `services.httpd.virtualHosts`.") + (mkRemovedOptionModule [ "services" "httpd" "enableUserDir" ] "Please define a virtual host using `services.httpd.virtualHosts`.") + (mkRemovedOptionModule [ "services" "httpd" "globalRedirect" ] "Please define a virtual host using `services.httpd.virtualHosts`.") + (mkRemovedOptionModule [ "services" "httpd" "hostName" ] "Please define a virtual host using `services.httpd.virtualHosts`.") + (mkRemovedOptionModule [ "services" "httpd" "listen" ] "Please define a virtual host using `services.httpd.virtualHosts`.") + (mkRemovedOptionModule [ "services" "httpd" "robotsEntries" ] "Please define a virtual host using `services.httpd.virtualHosts`.") + (mkRemovedOptionModule [ "services" "httpd" "servedDirs" ] "Please define a virtual host using `services.httpd.virtualHosts`.") + (mkRemovedOptionModule [ "services" "httpd" "servedFiles" ] "Please define a virtual host using `services.httpd.virtualHosts`.") + (mkRemovedOptionModule [ "services" "httpd" "serverAliases" ] "Please define a virtual host using `services.httpd.virtualHosts`.") + (mkRemovedOptionModule [ "services" "httpd" "sslServerCert" ] "Please define a virtual host using `services.httpd.virtualHosts`.") + (mkRemovedOptionModule [ "services" "httpd" "sslServerChain" ] "Please define a virtual host using `services.httpd.virtualHosts`.") + (mkRemovedOptionModule [ "services" "httpd" "sslServerKey" ] "Please define a virtual host using `services.httpd.virtualHosts`.") ]; - ###### interface + # interface options = { services.httpd = { - enable = mkOption { - type = types.bool; - default = false; - description = "Whether to enable the Apache HTTP Server."; - }; + enable = mkEnableOption "the Apache HTTP Server"; package = mkOption { type = types.package; @@ -368,7 +399,7 @@ in default = ""; description = '' Configuration lines appended to the generated Apache - configuration file. Note that this mechanism may not work + configuration file. Note that this mechanism will not work when is overridden. ''; }; @@ -383,7 +414,7 @@ in ] ''; description = '' - Additional Apache modules to be used. These can be + Additional Apache modules to be used. These can be specified as a string in the case of modules distributed with Apache, or as an attribute set specifying the name and path of the @@ -391,9 +422,25 @@ in ''; }; + adminAddr = mkOption { + type = types.str; + example = "admin@example.org"; + description = "E-mail address of the server administrator."; + }; + + logFormat = mkOption { + type = types.str; + default = "common"; + example = "combined"; + description = '' + Log format for log files. Possible values are: combined, common, referer, agent. + See for more details. + ''; + }; + logPerVirtualHost = mkOption { type = types.bool; - default = false; + default = true; description = '' If enabled, each virtual host gets its own access.log and @@ -406,8 +453,7 @@ in type = types.str; default = "wwwrun"; description = '' - User account under which httpd runs. The account is created - automatically if it doesn't exist. + User account under which httpd runs. ''; }; @@ -415,8 +461,7 @@ in type = types.str; default = "wwwrun"; description = '' - Group under which httpd runs. The account is created - automatically if it doesn't exist. + Group under which httpd runs. ''; }; @@ -424,31 +469,33 @@ in type = types.path; default = "/var/log/httpd"; description = '' - Directory for Apache's log files. It is created automatically. + Directory for Apache's log files. It is created automatically. ''; }; virtualHosts = mkOption { - type = types.listOf (types.submodule ( - { options = import ./per-server-options.nix { - inherit lib; - forMainServer = false; + type = with types; attrsOf (submodule (import ./vhost-options.nix)); + default = { + localhost = { + documentRoot = "${pkg}/htdocs"; + }; + }; + example = literalExample '' + { + "foo.example.com" = { + forceSSL = true; + documentRoot = "/var/www/foo.example.com" + }; + "bar.example.com" = { + addSSL = true; + documentRoot = "/var/www/bar.example.com"; }; - })); - default = []; - example = [ - { hostName = "foo"; - documentRoot = "/data/webroot-foo"; } - { hostName = "bar"; - documentRoot = "/data/webroot-bar"; - } - ]; + ''; description = '' - Specification of the virtual hosts served by Apache. Each + Specification of the virtual hosts served by Apache. Each element should be an attribute set specifying the - configuration of the virtual host. The available options - are the non-global options permissible for the main host. + configuration of the virtual host. ''; }; @@ -486,17 +533,18 @@ in '' date.timezone = "CET" ''; - description = - "Options appended to the PHP configuration file php.ini."; + description = '' + Options appended to the PHP configuration file php.ini. + ''; }; multiProcessingModule = mkOption { - type = types.str; + type = types.enum [ "event" "prefork" "worker" ]; default = "prefork"; example = "worker"; description = '' - Multi-processing module to be used by Apache. Available + Multi-processing module to be used by Apache. Available modules are prefork (the default; handles each request in a separate child process), worker (hybrid approach that starts a @@ -518,8 +566,9 @@ in type = types.int; default = 0; example = 500; - description = - "Maximum number of httpd requests answered per httpd child (prefork), 0 means unlimited"; + description = '' + Maximum number of httpd requests answered per httpd child (prefork), 0 means unlimited. + ''; }; sslCiphers = mkOption { @@ -530,44 +579,74 @@ in sslProtocols = mkOption { type = types.str; - default = "All -SSLv2 -SSLv3 -TLSv1"; + default = "All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1"; example = "All -SSLv2 -SSLv3"; description = "Allowed SSL/TLS protocol versions."; }; - } - - # Include the options shared between the main server and virtual hosts. - // (import ./per-server-options.nix { - inherit lib; - forMainServer = true; - }); + }; }; + # implementation - ###### implementation + config = mkIf cfg.enable { - config = mkIf config.services.httpd.enable { + assertions = [ + { + assertion = all (hostOpts: !hostOpts.enableSSL) vhosts; + message = '' + The option `services.httpd.virtualHosts..enableSSL` no longer has any effect; please remove it. + Select one of `services.httpd.virtualHosts..addSSL`, `services.httpd.virtualHosts..forceSSL`, + or `services.httpd.virtualHosts..onlySSL`. + ''; + } + { + assertion = all (hostOpts: with hostOpts; !(addSSL && onlySSL) && !(forceSSL && onlySSL) && !(addSSL && forceSSL)) vhosts; + message = '' + Options `services.httpd.virtualHosts..addSSL`, + `services.httpd.virtualHosts..onlySSL` and `services.httpd.virtualHosts..forceSSL` + are mutually exclusive. + ''; + } + { + assertion = all (hostOpts: !(hostOpts.enableACME && hostOpts.useACMEHost != null)) vhosts; + message = '' + Options `services.httpd.virtualHosts..enableACME` and + `services.httpd.virtualHosts..useACMEHost` are mutually exclusive. + ''; + } + ]; - assertions = [ { assertion = mainCfg.enableSSL == true - -> mainCfg.sslServerCert != null - && mainCfg.sslServerKey != null; - message = "SSL is enabled for httpd, but sslServerCert and/or sslServerKey haven't been specified."; } - ]; + warnings = + mapAttrsToList (name: hostOpts: '' + Using config.services.httpd.virtualHosts."${name}".servedFiles is deprecated and will become unsupported in a future release. Your configuration will continue to work as is but please migrate your configuration to config.services.httpd.virtualHosts."${name}".locations before the 20.09 release of NixOS. + '') (filterAttrs (name: hostOpts: hostOpts.servedFiles != []) cfg.virtualHosts); - users.users = optionalAttrs (mainCfg.user == "wwwrun") (singleton - { name = "wwwrun"; - group = mainCfg.group; + users.users = optionalAttrs (cfg.user == "wwwrun") { + wwwrun = { + group = cfg.group; description = "Apache httpd user"; uid = config.ids.uids.wwwrun; - }); + }; + }; - users.groups = optionalAttrs (mainCfg.group == "wwwrun") (singleton - { name = "wwwrun"; - gid = config.ids.gids.wwwrun; - }); + users.groups = optionalAttrs (cfg.group == "wwwrun") { + wwwrun.gid = config.ids.gids.wwwrun; + }; - environment.systemPackages = [httpd]; + security.acme.certs = mapAttrs (name: hostOpts: { + user = cfg.user; + group = mkDefault cfg.group; + email = if hostOpts.adminAddr != null then hostOpts.adminAddr else cfg.adminAddr; + webroot = hostOpts.acmeRoot; + extraDomains = genAttrs hostOpts.serverAliases (alias: null); + postRun = "systemctl reload httpd.service"; + }) (filterAttrs (name: hostOpts: hostOpts.enableACME) cfg.virtualHosts); + + environment.systemPackages = [ pkg ]; + + # required for "apachectl configtest" + environment.etc."httpd/httpd.conf".source = httpdConf; services.httpd.phpOptions = '' @@ -604,42 +683,56 @@ in "access_compat" ]; + systemd.tmpfiles.rules = + let + svc = config.systemd.services.httpd.serviceConfig; + in + [ + "d '${cfg.logDir}' 0700 ${svc.User} ${svc.Group}" + "Z '${cfg.logDir}' - ${svc.User} ${svc.Group}" + ]; + systemd.services.httpd = + let + vhostsACME = filter (hostOpts: hostOpts.enableACME) vhosts; + in { description = "Apache HTTPD"; wantedBy = [ "multi-user.target" ]; - after = [ "network.target" "fs.target" ]; + wants = concatLists (map (hostOpts: [ "acme-${hostOpts.hostName}.service" "acme-selfsigned-${hostOpts.hostName}.service" ]) vhostsACME); + after = [ "network.target" "fs.target" ] ++ map (hostOpts: "acme-selfsigned-${hostOpts.hostName}.service") vhostsACME; path = - [ httpd pkgs.coreutils pkgs.gnugrep ] - ++ optional mainCfg.enablePHP pkgs.system-sendmail; # Needed for PHP's mail() function. + [ pkg pkgs.coreutils pkgs.gnugrep ] + ++ optional cfg.enablePHP pkgs.system-sendmail; # Needed for PHP's mail() function. environment = - optionalAttrs mainCfg.enablePHP { PHPRC = phpIni; } - // optionalAttrs mainCfg.enableMellon { LD_LIBRARY_PATH = "${pkgs.xmlsec}/lib"; }; + optionalAttrs cfg.enablePHP { PHPRC = phpIni; } + // optionalAttrs cfg.enableMellon { LD_LIBRARY_PATH = "${pkgs.xmlsec}/lib"; }; preStart = '' - mkdir -m 0700 -p ${mainCfg.logDir} - # Get rid of old semaphores. These tend to accumulate across # server restarts, eventually preventing it from restarting # successfully. - for i in $(${pkgs.utillinux}/bin/ipcs -s | grep ' ${mainCfg.user} ' | cut -f2 -d ' '); do + for i in $(${pkgs.utillinux}/bin/ipcs -s | grep ' ${cfg.user} ' | cut -f2 -d ' '); do ${pkgs.utillinux}/bin/ipcrm -s $i done ''; - serviceConfig.ExecStart = "@${httpd}/bin/httpd httpd -f ${httpdConf}"; - serviceConfig.ExecStop = "${httpd}/bin/httpd -f ${httpdConf} -k graceful-stop"; - serviceConfig.ExecReload = "${httpd}/bin/httpd -f ${httpdConf} -k graceful"; - serviceConfig.Group = mainCfg.group; - serviceConfig.Type = "forking"; - serviceConfig.PIDFile = "${runtimeDir}/httpd.pid"; - serviceConfig.Restart = "always"; - serviceConfig.RestartSec = "5s"; - serviceConfig.RuntimeDirectory = "httpd httpd/runtime"; - serviceConfig.RuntimeDirectoryMode = "0750"; + serviceConfig = { + ExecStart = "@${pkg}/bin/httpd httpd -f ${httpdConf}"; + ExecStop = "${pkg}/bin/httpd -f ${httpdConf} -k graceful-stop"; + ExecReload = "${pkg}/bin/httpd -f ${httpdConf} -k graceful"; + User = "root"; + Group = cfg.group; + Type = "forking"; + PIDFile = "${runtimeDir}/httpd.pid"; + Restart = "always"; + RestartSec = "5s"; + RuntimeDirectory = "httpd httpd/runtime"; + RuntimeDirectoryMode = "0750"; + }; }; }; diff --git a/nixos/modules/services/web-servers/apache-httpd/location-options.nix b/nixos/modules/services/web-servers/apache-httpd/location-options.nix new file mode 100644 index 00000000000..8ea88f94f97 --- /dev/null +++ b/nixos/modules/services/web-servers/apache-httpd/location-options.nix @@ -0,0 +1,54 @@ +{ config, lib, name, ... }: +let + inherit (lib) mkOption types; +in +{ + options = { + + proxyPass = mkOption { + type = with types; nullOr str; + default = null; + example = "http://www.example.org/"; + description = '' + Sets up a simple reverse proxy as described by . + ''; + }; + + index = mkOption { + type = with types; nullOr str; + default = null; + example = "index.php index.html"; + description = '' + Adds DirectoryIndex directive. See . + ''; + }; + + alias = mkOption { + type = with types; nullOr path; + default = null; + example = "/your/alias/directory"; + description = '' + Alias directory for requests. See . + ''; + }; + + extraConfig = mkOption { + type = types.lines; + default = ""; + description = '' + These lines go to the end of the location verbatim. + ''; + }; + + priority = mkOption { + type = types.int; + default = 1000; + description = '' + Order of this location block in relation to the others in the vhost. + The semantics are the same as with `lib.mkOrder`. Smaller values have + a greater priority. + ''; + }; + + }; +} diff --git a/nixos/modules/services/web-servers/apache-httpd/per-server-options.nix b/nixos/modules/services/web-servers/apache-httpd/per-server-options.nix deleted file mode 100644 index c36207d5460..00000000000 --- a/nixos/modules/services/web-servers/apache-httpd/per-server-options.nix +++ /dev/null @@ -1,174 +0,0 @@ -# This file defines the options that can be used both for the Apache -# main server configuration, and for the virtual hosts. (The latter -# has additional options that affect the web server as a whole, like -# the user/group to run under.) - -{ forMainServer, lib }: - -with lib; - -{ - - hostName = mkOption { - type = types.str; - default = "localhost"; - description = "Canonical hostname for the server."; - }; - - serverAliases = mkOption { - type = types.listOf types.str; - default = []; - example = ["www.example.org" "www.example.org:8080" "example.org"]; - description = '' - Additional names of virtual hosts served by this virtual host configuration. - ''; - }; - - listen = mkOption { - type = types.listOf (types.submodule ( - { - options = { - port = mkOption { - type = types.int; - description = "port to listen on"; - }; - ip = mkOption { - type = types.str; - default = "*"; - description = "Ip to listen on. 0.0.0.0 for ipv4 only, * for all."; - }; - }; - } )); - description = '' - List of { /* ip: "*"; */ port = 80;} to listen on - ''; - - default = []; - }; - - enableSSL = mkOption { - type = types.bool; - default = false; - description = "Whether to enable SSL (https) support."; - }; - - # Note: sslServerCert and sslServerKey can be left empty, but this - # only makes sense for virtual hosts (they will inherit from the - # main server). - - sslServerCert = mkOption { - type = types.nullOr types.path; - default = null; - example = "/var/host.cert"; - description = "Path to server SSL certificate."; - }; - - sslServerKey = mkOption { - type = types.path; - example = "/var/host.key"; - description = "Path to server SSL certificate key."; - }; - - sslServerChain = mkOption { - type = types.nullOr types.path; - default = null; - example = "/var/ca.pem"; - description = "Path to server SSL chain file."; - }; - - adminAddr = mkOption ({ - type = types.nullOr types.str; - example = "admin@example.org"; - description = "E-mail address of the server administrator."; - } // (if forMainServer then {} else {default = null;})); - - documentRoot = mkOption { - type = types.nullOr types.path; - default = null; - example = "/data/webserver/docs"; - description = '' - The path of Apache's document root directory. If left undefined, - an empty directory in the Nix store will be used as root. - ''; - }; - - servedDirs = mkOption { - type = types.listOf types.attrs; - default = []; - example = [ - { urlPath = "/nix"; - dir = "/home/eelco/Dev/nix-homepage"; - } - ]; - description = '' - This option provides a simple way to serve static directories. - ''; - }; - - servedFiles = mkOption { - type = types.listOf types.attrs; - default = []; - example = [ - { urlPath = "/foo/bar.png"; - file = "/home/eelco/some-file.png"; - } - ]; - description = '' - This option provides a simple way to serve individual, static files. - ''; - }; - - extraConfig = mkOption { - type = types.lines; - default = ""; - example = '' - - Options FollowSymlinks - AllowOverride All - - ''; - description = '' - These lines go to httpd.conf verbatim. They will go after - directories and directory aliases defined by default. - ''; - }; - - enableUserDir = mkOption { - type = types.bool; - default = false; - description = '' - Whether to enable serving ~/public_html as - /~username. - ''; - }; - - globalRedirect = mkOption { - type = types.nullOr types.str; - default = null; - example = http://newserver.example.org/; - description = '' - If set, all requests for this host are redirected permanently to - the given URL. - ''; - }; - - logFormat = mkOption { - type = types.str; - default = "common"; - example = "combined"; - description = '' - Log format for Apache's log files. Possible values are: combined, common, referer, agent. - ''; - }; - - robotsEntries = mkOption { - type = types.lines; - default = ""; - example = "Disallow: /foo/"; - description = '' - Specification of pages to be ignored by web crawlers. See for details. - ''; - }; - -} diff --git a/nixos/modules/services/web-servers/apache-httpd/vhost-options.nix b/nixos/modules/services/web-servers/apache-httpd/vhost-options.nix new file mode 100644 index 00000000000..2e806afb42c --- /dev/null +++ b/nixos/modules/services/web-servers/apache-httpd/vhost-options.nix @@ -0,0 +1,275 @@ +{ config, lib, name, ... }: +let + inherit (lib) literalExample mkOption nameValuePair types; +in +{ + options = { + + hostName = mkOption { + type = types.str; + default = name; + description = "Canonical hostname for the server."; + }; + + serverAliases = mkOption { + type = types.listOf types.str; + default = []; + example = ["www.example.org" "www.example.org:8080" "example.org"]; + description = '' + Additional names of virtual hosts served by this virtual host configuration. + ''; + }; + + listen = mkOption { + type = with types; listOf (submodule ({ + options = { + port = mkOption { + type = types.port; + description = "Port to listen on"; + }; + ip = mkOption { + type = types.str; + default = "*"; + description = "IP to listen on. 0.0.0.0 for IPv4 only, * for all."; + }; + ssl = mkOption { + type = types.bool; + default = false; + description = "Whether to enable SSL (https) support."; + }; + }; + })); + default = []; + example = [ + { ip = "195.154.1.1"; port = 443; ssl = true;} + { ip = "192.154.1.1"; port = 80; } + { ip = "*"; port = 8080; } + ]; + description = '' + Listen addresses and ports for this virtual host. + + This option overrides addSSL, forceSSL and onlySSL. + + ''; + }; + + enableSSL = mkOption { + type = types.bool; + visible = false; + default = false; + }; + + addSSL = mkOption { + type = types.bool; + default = false; + description = '' + Whether to enable HTTPS in addition to plain HTTP. This will set defaults for + listen to listen on all interfaces on the respective default + ports (80, 443). + ''; + }; + + onlySSL = mkOption { + type = types.bool; + default = false; + description = '' + Whether to enable HTTPS and reject plain HTTP connections. This will set + defaults for listen to listen on all interfaces on port 443. + ''; + }; + + forceSSL = mkOption { + type = types.bool; + default = false; + description = '' + Whether to add a separate nginx server block that permanently redirects (301) + all plain HTTP traffic to HTTPS. This will set defaults for + listen to listen on all interfaces on the respective default + ports (80, 443), where the non-SSL listens are used for the redirect vhosts. + ''; + }; + + enableACME = mkOption { + type = types.bool; + default = false; + description = '' + Whether to ask Let's Encrypt to sign a certificate for this vhost. + Alternately, you can use an existing certificate through . + ''; + }; + + useACMEHost = mkOption { + type = types.nullOr types.str; + default = null; + description = '' + A host of an existing Let's Encrypt certificate to use. + This is useful if you have many subdomains and want to avoid hitting the + rate limit. + Alternately, you can generate a certificate through . + Note that this option does not create any certificates, nor it does add subdomains to existing ones – you will need to create them manually using . + ''; + }; + + acmeRoot = mkOption { + type = types.str; + default = "/var/lib/acme/acme-challenges"; + description = "Directory for the acme challenge which is PUBLIC, don't put certs or keys in here"; + }; + + sslServerCert = mkOption { + type = types.path; + example = "/var/host.cert"; + description = "Path to server SSL certificate."; + }; + + sslServerKey = mkOption { + type = types.path; + example = "/var/host.key"; + description = "Path to server SSL certificate key."; + }; + + sslServerChain = mkOption { + type = types.nullOr types.path; + default = null; + example = "/var/ca.pem"; + description = "Path to server SSL chain file."; + }; + + http2 = mkOption { + type = types.bool; + default = false; + description = '' + Whether to enable HTTP 2. HTTP/2 is supported in all multi-processing modules that come with httpd. However, if you use the prefork mpm, there will + be severe restrictions. Refer to for details. + ''; + }; + + adminAddr = mkOption { + type = types.nullOr types.str; + default = null; + example = "admin@example.org"; + description = "E-mail address of the server administrator."; + }; + + documentRoot = mkOption { + type = types.nullOr types.path; + default = null; + example = "/data/webserver/docs"; + description = '' + The path of Apache's document root directory. If left undefined, + an empty directory in the Nix store will be used as root. + ''; + }; + + servedDirs = mkOption { + type = types.listOf types.attrs; + default = []; + example = [ + { urlPath = "/nix"; + dir = "/home/eelco/Dev/nix-homepage"; + } + ]; + description = '' + This option provides a simple way to serve static directories. + ''; + }; + + servedFiles = mkOption { + type = types.listOf types.attrs; + default = []; + example = [ + { urlPath = "/foo/bar.png"; + file = "/home/eelco/some-file.png"; + } + ]; + description = '' + This option provides a simple way to serve individual, static files. + + + This option has been deprecated and will be removed in a future + version of NixOS. You can achieve the same result by making use of + the locations.<name>.alias option. + + ''; + }; + + extraConfig = mkOption { + type = types.lines; + default = ""; + example = '' + + Options FollowSymlinks + AllowOverride All + + ''; + description = '' + These lines go to httpd.conf verbatim. They will go after + directories and directory aliases defined by default. + ''; + }; + + enableUserDir = mkOption { + type = types.bool; + default = false; + description = '' + Whether to enable serving ~/public_html as + /~username. + ''; + }; + + globalRedirect = mkOption { + type = types.nullOr types.str; + default = null; + example = "http://newserver.example.org/"; + description = '' + If set, all requests for this host are redirected permanently to + the given URL. + ''; + }; + + logFormat = mkOption { + type = types.str; + default = "common"; + example = "combined"; + description = '' + Log format for Apache's log files. Possible values are: combined, common, referer, agent. + ''; + }; + + robotsEntries = mkOption { + type = types.lines; + default = ""; + example = "Disallow: /foo/"; + description = '' + Specification of pages to be ignored by web crawlers. See for details. + ''; + }; + + locations = mkOption { + type = with types; attrsOf (submodule (import ./location-options.nix)); + default = {}; + example = literalExample '' + { + "/" = { + proxyPass = "http://localhost:3000"; + }; + "/foo/bar.png" = { + alias = "/home/eelco/some-file.png"; + }; + }; + ''; + description = '' + Declarative location config. See for details. + ''; + }; + + }; + + config = { + + locations = builtins.listToAttrs (map (elem: nameValuePair elem.urlPath { alias = elem.file; }) config.servedFiles); + + }; +} diff --git a/nixos/modules/services/web-servers/caddy.nix b/nixos/modules/services/web-servers/caddy.nix index 132c50735d9..0e6e10a5f47 100644 --- a/nixos/modules/services/web-servers/caddy.nix +++ b/nixos/modules/services/web-servers/caddy.nix @@ -64,32 +64,38 @@ in { config = mkIf cfg.enable { systemd.services.caddy = { description = "Caddy web server"; + # upstream unit: https://github.com/caddyserver/caddy/blob/master/dist/init/linux-systemd/caddy.service after = [ "network-online.target" ]; + wants = [ "network-online.target" ]; # systemd-networkd-wait-online.service wantedBy = [ "multi-user.target" ]; environment = mkIf (versionAtLeast config.system.stateVersion "17.09") { CADDYPATH = cfg.dataDir; }; serviceConfig = { ExecStart = '' - ${cfg.package}/bin/caddy -root=/var/tmp -conf=${configFile} \ + ${cfg.package}/bin/caddy -log stdout -log-timestamps=false \ + -root=/var/tmp -conf=${configFile} \ -ca=${cfg.ca} -email=${cfg.email} ${optionalString cfg.agree "-agree"} ''; - ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID"; + ExecReload = "${pkgs.coreutils}/bin/kill -USR1 $MAINPID"; Type = "simple"; User = "caddy"; Group = "caddy"; - Restart = "on-failure"; - StartLimitInterval = 86400; - StartLimitBurst = 5; + Restart = "on-abnormal"; + StartLimitIntervalSec = 14400; + StartLimitBurst = 10; AmbientCapabilities = "cap_net_bind_service"; CapabilityBoundingSet = "cap_net_bind_service"; NoNewPrivileges = true; - LimitNPROC = 64; + LimitNPROC = 512; LimitNOFILE = 1048576; PrivateTmp = true; PrivateDevices = true; ProtectHome = true; ProtectSystem = "full"; ReadWriteDirectories = cfg.dataDir; + KillMode = "mixed"; + KillSignal = "SIGQUIT"; + TimeoutStopSec = "5s"; }; }; diff --git a/nixos/modules/services/web-servers/nginx/default.nix b/nixos/modules/services/web-servers/nginx/default.nix index 9b476ba7f1e..8d49dc66eb1 100644 --- a/nixos/modules/services/web-servers/nginx/default.nix +++ b/nixos/modules/services/web-servers/nginx/default.nix @@ -46,6 +46,15 @@ let } '')); + commonHttpConfig = '' + # The mime type definitions included with nginx are very incomplete, so + # we use a list of mime types from the mailcap package, which is also + # used by most other Linux distributions by default. + include ${pkgs.mailcap}/etc/nginx/mime.types; + include ${cfg.package}/conf/fastcgi.conf; + include ${cfg.package}/conf/uwsgi_params; + ''; + configFile = pkgs.writers.writeNginxConfig "nginx.conf" '' pid /run/nginx/nginx.pid; error_log ${cfg.logError}; @@ -61,12 +70,7 @@ let ${optionalString (cfg.httpConfig == "" && cfg.config == "") '' http { - # The mime type definitions included with nginx are very incomplete, so - # we use a list of mime types from the mailcap package, which is also - # used by most other Linux distributions by default. - include ${pkgs.mailcap}/etc/nginx/mime.types; - include ${cfg.package}/conf/fastcgi.conf; - include ${cfg.package}/conf/uwsgi_params; + ${commonHttpConfig} ${optionalString (cfg.resolver.addresses != []) '' resolver ${toString cfg.resolver.addresses} ${optionalString (cfg.resolver.valid != "") "valid=${cfg.resolver.valid}"} ${optionalString (!cfg.resolver.ipv6) "ipv6=off"}; @@ -79,7 +83,7 @@ let tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; - types_hash_max_size 2048; + types_hash_max_size 4096; ''} ssl_protocols ${cfg.sslProtocols}; @@ -87,10 +91,17 @@ let ${optionalString (cfg.sslDhparam != null) "ssl_dhparam ${cfg.sslDhparam};"} ${optionalString (cfg.recommendedTlsSettings) '' - ssl_session_cache shared:SSL:42m; - ssl_session_timeout 23m; - ssl_ecdh_curve secp384r1; - ssl_prefer_server_ciphers on; + # Keep in sync with https://ssl-config.mozilla.org/#server=nginx&config=intermediate + + ssl_session_timeout 1d; + ssl_session_cache shared:SSL:10m; + # Breaks forward secrecy: https://github.com/mozilla/server-side-tls/issues/135 + ssl_session_tickets off; + # We don't enable insecure ciphers by default, so this allows + # clients to pick the most performant, per https://github.com/mozilla/server-side-tls/issues/260 + ssl_prefer_server_ciphers off; + + # OCSP stapling ssl_stapling on; ssl_stapling_verify on; ''} @@ -165,9 +176,7 @@ let ${optionalString (cfg.httpConfig != "") '' http { - include ${cfg.package}/conf/mime.types; - include ${cfg.package}/conf/fastcgi.conf; - include ${cfg.package}/conf/uwsgi_params; + ${commonHttpConfig} ${cfg.httpConfig} }''} @@ -178,6 +187,8 @@ let then "/etc/nginx/nginx.conf" else configFile; + execCommand = "${cfg.package}/bin/nginx -c '${configPath}' -p '${cfg.stateDir}'"; + vhosts = concatStringsSep "\n" (mapAttrsToList (vhostName: vhost: let onlySSL = vhost.onlySSL || vhost.enableSSL; @@ -485,8 +496,9 @@ in sslCiphers = mkOption { type = types.str; - default = "EECDH+aRSA+AESGCM:EDH+aRSA:EECDH+aRSA:+AES256:+AES128:+SHA1:!CAMELLIA:!SEED:!3DES:!DES:!RC4:!eNULL"; - description = "Ciphers to choose from when negotiating tls handshakes."; + # Keep in sync with https://ssl-config.mozilla.org/#server=nginx&config=intermediate + default = "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384"; + description = "Ciphers to choose from when negotiating TLS handshakes."; }; sslProtocols = mkOption { @@ -671,6 +683,7 @@ in systemd.tmpfiles.rules = [ "d '${cfg.stateDir}' 0750 ${cfg.user} ${cfg.group} - -" "d '${cfg.stateDir}/logs' 0750 ${cfg.user} ${cfg.group} - -" + "Z '${cfg.stateDir}' - ${cfg.user} ${cfg.group} - -" ]; systemd.services.nginx = { @@ -681,10 +694,10 @@ in stopIfChanged = false; preStart = '' ${cfg.preStart} - ${cfg.package}/bin/nginx -c '${configPath}' -p '${cfg.stateDir}' -t + ${execCommand} -t ''; serviceConfig = { - ExecStart = "${cfg.package}/bin/nginx -c '${configPath}' -p '${cfg.stateDir}'"; + ExecStart = execCommand; ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID"; Restart = "always"; RestartSec = "10s"; @@ -705,11 +718,18 @@ in }; systemd.services.nginx-config-reload = mkIf cfg.enableReload { - wantedBy = [ "nginx.service" ]; + wants = [ "nginx.service" ]; + wantedBy = [ "multi-user.target" ]; restartTriggers = [ configFile ]; + # commented, because can cause extra delays during activate for this config: + # services.nginx.virtualHosts."_".locations."/".proxyPass = "http://blabla:3000"; + # stopIfChanged = false; + serviceConfig.Type = "oneshot"; + serviceConfig.TimeoutSec = 60; script = '' if ${pkgs.systemd}/bin/systemctl -q is-active nginx.service ; then - ${pkgs.systemd}/bin/systemctl reload nginx.service + ${execCommand} -t && \ + ${pkgs.systemd}/bin/systemctl reload nginx.service fi ''; serviceConfig.RemainAfterExit = true; @@ -730,15 +750,16 @@ in listToAttrs acmePairs ); - users.users = optionalAttrs (cfg.user == "nginx") (singleton - { name = "nginx"; + users.users = optionalAttrs (cfg.user == "nginx") { + nginx = { group = cfg.group; uid = config.ids.uids.nginx; - }); + }; + }; + + users.groups = optionalAttrs (cfg.group == "nginx") { + nginx.gid = config.ids.gids.nginx; + }; - users.groups = optionalAttrs (cfg.group == "nginx") (singleton - { name = "nginx"; - gid = config.ids.gids.nginx; - }); }; } diff --git a/nixos/modules/services/web-servers/nginx/gitweb.nix b/nixos/modules/services/web-servers/nginx/gitweb.nix index 272fd148018..f7fb07bb797 100644 --- a/nixos/modules/services/web-servers/nginx/gitweb.nix +++ b/nixos/modules/services/web-servers/nginx/gitweb.nix @@ -3,8 +3,9 @@ with lib; let - cfg = config.services.gitweb; - package = pkgs.gitweb.override (optionalAttrs cfg.gitwebTheme { + cfg = config.services.nginx.gitweb; + gitwebConfig = config.services.gitweb; + package = pkgs.gitweb.override (optionalAttrs gitwebConfig.gitwebTheme { gitwebTheme = true; }); @@ -17,13 +18,45 @@ in default = false; type = types.bool; description = '' - If true, enable gitweb in nginx. Access it at http://yourserver/gitweb + If true, enable gitweb in nginx. + ''; + }; + + location = mkOption { + default = "/gitweb"; + type = types.str; + description = '' + Location to serve gitweb on. + ''; + }; + + user = mkOption { + default = "nginx"; + type = types.str; + description = '' + Existing user that the CGI process will belong to. (Default almost surely will do.) + ''; + }; + + group = mkOption { + default = "nginx"; + type = types.str; + description = '' + Group that the CGI process will belong to. (Set to config.services.gitolite.group if you are using gitolite.) + ''; + }; + + virtualHost = mkOption { + default = "_"; + type = types.str; + description = '' + VirtualHost to serve gitweb on. Default is catch-all. ''; }; }; - config = mkIf config.services.nginx.gitweb.enable { + config = mkIf cfg.enable { systemd.services.gitweb = { description = "GitWeb service"; @@ -32,22 +65,22 @@ in FCGI_SOCKET_PATH = "/run/gitweb/gitweb.sock"; }; serviceConfig = { - User = "nginx"; - Group = "nginx"; + User = cfg.user; + Group = cfg.group; RuntimeDirectory = [ "gitweb" ]; }; wantedBy = [ "multi-user.target" ]; }; services.nginx = { - virtualHosts.default = { - locations."/gitweb/static/" = { + virtualHosts.${cfg.virtualHost} = { + locations."${cfg.location}/static/" = { alias = "${package}/static/"; }; - locations."/gitweb/" = { + locations."${cfg.location}/" = { extraConfig = '' include ${pkgs.nginx}/conf/fastcgi_params; - fastcgi_param GITWEB_CONFIG ${cfg.gitwebConfigFile}; + fastcgi_param GITWEB_CONFIG ${gitwebConfig.gitwebConfigFile}; fastcgi_pass unix:/run/gitweb/gitweb.sock; ''; }; diff --git a/nixos/modules/services/web-servers/phpfpm/default.nix b/nixos/modules/services/web-servers/phpfpm/default.nix index 2c73da10394..3db19c781d0 100644 --- a/nixos/modules/services/web-servers/phpfpm/default.nix +++ b/nixos/modules/services/web-servers/phpfpm/default.nix @@ -47,6 +47,7 @@ let Path to the unix socket file on which to accept FastCGI requests. This option is read-only and managed by NixOS. ''; + example = "${runtimeDir}/.sock"; }; listen = mkOption { diff --git a/nixos/modules/services/web-servers/tomcat.nix b/nixos/modules/services/web-servers/tomcat.nix index 68261c50324..6d12925829f 100644 --- a/nixos/modules/services/web-servers/tomcat.nix +++ b/nixos/modules/services/web-servers/tomcat.nix @@ -194,14 +194,10 @@ in config = mkIf config.services.tomcat.enable { - users.groups = singleton - { name = "tomcat"; - gid = config.ids.gids.tomcat; - }; + users.groups.tomcat.gid = config.ids.gids.tomcat; - users.users = singleton - { name = "tomcat"; - uid = config.ids.uids.tomcat; + users.users.tomcat = + { uid = config.ids.uids.tomcat; description = "Tomcat user"; home = "/homeless-shelter"; extraGroups = cfg.extraGroups; diff --git a/nixos/modules/services/web-servers/traefik.nix b/nixos/modules/services/web-servers/traefik.nix index 5b0fc467ea4..4ab7307c3b6 100644 --- a/nixos/modules/services/web-servers/traefik.nix +++ b/nixos/modules/services/web-servers/traefik.nix @@ -4,56 +4,102 @@ with lib; let cfg = config.services.traefik; - configFile = - if cfg.configFile == null then - pkgs.runCommand "config.toml" { - buildInputs = [ pkgs.remarshal ]; - preferLocalBuild = true; - } '' - remarshal -if json -of toml \ - < ${pkgs.writeText "config.json" (builtins.toJSON cfg.configOptions)} \ - > $out - '' - else cfg.configFile; - + jsonValue = with types; + let + valueType = nullOr (oneOf [ + bool + int + float + str + (lazyAttrsOf valueType) + (listOf valueType) + ]) // { + description = "JSON value"; + emptyValue.value = { }; + }; + in valueType; + dynamicConfigFile = if cfg.dynamicConfigFile == null then + pkgs.runCommand "config.toml" { + buildInputs = [ pkgs.remarshal ]; + preferLocalBuild = true; + } '' + remarshal -if json -of toml \ + < ${ + pkgs.writeText "dynamic_config.json" + (builtins.toJSON cfg.dynamicConfigOptions) + } \ + > $out + '' + else + cfg.dynamicConfigFile; + staticConfigFile = if cfg.staticConfigFile == null then + pkgs.runCommand "config.toml" { + buildInputs = [ pkgs.yj ]; + preferLocalBuild = true; + } '' + yj -jt -i \ + < ${ + pkgs.writeText "static_config.json" (builtins.toJSON + (recursiveUpdate cfg.staticConfigOptions { + providers.file.filename = "${dynamicConfigFile}"; + })) + } \ + > $out + '' + else + cfg.staticConfigFile; in { options.services.traefik = { enable = mkEnableOption "Traefik web server"; - configFile = mkOption { + staticConfigFile = mkOption { default = null; - example = literalExample "/path/to/config.toml"; + example = literalExample "/path/to/static_config.toml"; type = types.nullOr types.path; description = '' - Path to verbatim traefik.toml to use. - (Using that option has precedence over configOptions) + Path to traefik's static configuration to use. + (Using that option has precedence over staticConfigOptions and dynamicConfigOptions) ''; }; - configOptions = mkOption { + staticConfigOptions = mkOption { description = '' - Config for Traefik. + Static configuration for Traefik. ''; - type = types.attrs; - default = { - defaultEntryPoints = ["http"]; - entryPoints.http.address = ":80"; - }; + type = jsonValue; + default = { entryPoints.http.address = ":80"; }; example = { - defaultEntrypoints = [ "http" ]; - web.address = ":8080"; + entryPoints.web.address = ":8080"; entryPoints.http.address = ":80"; - file = {}; - frontends = { - frontend1 = { - backend = "backend1"; - routes.test_1.rule = "Host:localhost"; - }; - }; - backends.backend1 = { - servers.server1.url = "http://localhost:8000"; + api = { }; + }; + }; + + dynamicConfigFile = mkOption { + default = null; + example = literalExample "/path/to/dynamic_config.toml"; + type = types.nullOr types.path; + description = '' + Path to traefik's dynamic configuration to use. + (Using that option has precedence over dynamicConfigOptions) + ''; + }; + + dynamicConfigOptions = mkOption { + description = '' + Dynamic configuration for Traefik. + ''; + type = jsonValue; + default = { }; + example = { + http.routers.router1 = { + rule = "Host(`localhost`)"; + service = "service1"; }; + + http.services.service1.loadBalancer.servers = + [{ url = "http://localhost:8080"; }]; }; }; @@ -61,7 +107,7 @@ in { default = "/var/lib/traefik"; type = types.path; description = '' - Location for any persistent data traefik creates, ie. acme + Location for any persistent data traefik creates, ie. acme ''; }; @@ -84,16 +130,15 @@ in { }; config = mkIf cfg.enable { - systemd.tmpfiles.rules = [ - "d '${cfg.dataDir}' 0700 traefik traefik - -" - ]; + systemd.tmpfiles.rules = [ "d '${cfg.dataDir}' 0700 traefik traefik - -" ]; systemd.services.traefik = { description = "Traefik web server"; after = [ "network-online.target" ]; wantedBy = [ "multi-user.target" ]; serviceConfig = { - ExecStart = ''${cfg.package.bin}/bin/traefik --configfile=${configFile}''; + ExecStart = + "${cfg.package}/bin/traefik --configfile=${staticConfigFile}"; Type = "simple"; User = "traefik"; Group = cfg.group; @@ -120,6 +165,6 @@ in { isSystemUser = true; }; - users.groups.traefik = {}; + users.groups.traefik = { }; }; } diff --git a/nixos/modules/services/web-servers/unit/default.nix b/nixos/modules/services/web-servers/unit/default.nix index b07212580a5..f8a18954fc9 100644 --- a/nixos/modules/services/web-servers/unit/default.nix +++ b/nixos/modules/services/web-servers/unit/default.nix @@ -111,7 +111,7 @@ in { AmbientCapabilities = [ "CAP_NET_BIND_SERVICE" "CAP_SETGID" "CAP_SETUID" ]; # Security NoNewPrivileges = true; - # Sanboxing + # Sandboxing ProtectSystem = "full"; ProtectHome = true; RuntimeDirectory = "unit"; @@ -129,14 +129,16 @@ in { }; }; - users.users = optionalAttrs (cfg.user == "unit") (singleton { - name = "unit"; - group = cfg.group; - isSystemUser = true; - }); + users.users = optionalAttrs (cfg.user == "unit") { + unit = { + group = cfg.group; + isSystemUser = true; + }; + }; + + users.groups = optionalAttrs (cfg.group == "unit") { + unit = { }; + }; - users.groups = optionalAttrs (cfg.group == "unit") (singleton { - name = "unit"; - }); }; } diff --git a/nixos/modules/services/web-servers/uwsgi.nix b/nixos/modules/services/web-servers/uwsgi.nix index af70f32f32d..4b74c329e3d 100644 --- a/nixos/modules/services/web-servers/uwsgi.nix +++ b/nixos/modules/services/web-servers/uwsgi.nix @@ -5,10 +5,6 @@ with lib; let cfg = config.services.uwsgi; - uwsgi = pkgs.uwsgi.override { - plugins = cfg.plugins; - }; - buildCfg = name: c: let plugins = @@ -23,8 +19,8 @@ let python = if hasPython2 && hasPython3 then throw "`plugins` attribute in UWSGI configuration shouldn't contain both python2 and python3" - else if hasPython2 then uwsgi.python2 - else if hasPython3 then uwsgi.python3 + else if hasPython2 then cfg.package.python2 + else if hasPython3 then cfg.package.python3 else null; pythonEnv = python.withPackages (c.pythonPackages or (self: [])); @@ -36,7 +32,7 @@ let inherit plugins; } // removeAttrs c [ "type" "pythonPackages" ] // optionalAttrs (python != null) { - pythonpath = "${pythonEnv}/${python.sitePackages}"; + pyhome = "${pythonEnv}"; env = # Argh, uwsgi expects list of key-values there instead of a dictionary. let env' = c.env or []; @@ -77,6 +73,11 @@ in { description = "Where uWSGI communication sockets can live"; }; + package = mkOption { + type = types.package; + internal = true; + }; + instance = mkOption { type = types.attrs; default = { @@ -138,7 +139,7 @@ in { ''; serviceConfig = { Type = "notify"; - ExecStart = "${uwsgi}/bin/uwsgi --uid ${cfg.user} --gid ${cfg.group} --json ${buildCfg "server" cfg.instance}/server.json"; + ExecStart = "${cfg.package}/bin/uwsgi --uid ${cfg.user} --gid ${cfg.group} --json ${buildCfg "server" cfg.instance}/server.json"; ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID"; ExecStop = "${pkgs.coreutils}/bin/kill -INT $MAINPID"; NotifyAccess = "main"; @@ -146,15 +147,19 @@ in { }; }; - users.users = optionalAttrs (cfg.user == "uwsgi") (singleton - { name = "uwsgi"; + users.users = optionalAttrs (cfg.user == "uwsgi") { + uwsgi = { group = cfg.group; uid = config.ids.uids.uwsgi; - }); + }; + }; - users.groups = optionalAttrs (cfg.group == "uwsgi") (singleton - { name = "uwsgi"; - gid = config.ids.gids.uwsgi; - }); + users.groups = optionalAttrs (cfg.group == "uwsgi") { + uwsgi.gid = config.ids.gids.uwsgi; + }; + + services.uwsgi.package = pkgs.uwsgi.override { + inherit (cfg) plugins; + }; }; } diff --git a/nixos/modules/services/x11/desktop-managers/default.nix b/nixos/modules/services/x11/desktop-managers/default.nix index 970fa620c6b..ea6aac9f6c9 100644 --- a/nixos/modules/services/x11/desktop-managers/default.nix +++ b/nixos/modules/services/x11/desktop-managers/default.nix @@ -68,21 +68,15 @@ in scripts before forwarding the value to the displayManager. ''; - apply = list: { - list = map (d: d // { - manage = "desktop"; - start = d.start - + optionalString (needBGCond d) '' - if [ -e $HOME/.background-image ]; then - ${pkgs.feh}/bin/feh --bg-${cfg.wallpaper.mode} ${optionalString cfg.wallpaper.combineScreens "--no-xinerama"} $HOME/.background-image - else - # Use a solid black background as fallback - ${pkgs.xorg.xsetroot}/bin/xsetroot -solid black - fi - ''; - }) list; - needBGPackages = [] != filter needBGCond list; - }; + apply = map (d: d // { + manage = "desktop"; + start = d.start + + optionalString (needBGCond d) '' + if [ -e $HOME/.background-image ]; then + ${pkgs.feh}/bin/feh --bg-${cfg.wallpaper.mode} ${optionalString cfg.wallpaper.combineScreens "--no-xinerama"} $HOME/.background-image + fi + ''; + }); }; default = mkOption { @@ -100,5 +94,5 @@ in }; - config.services.xserver.displayManager.session = cfg.session.list; + config.services.xserver.displayManager.session = cfg.session; } diff --git a/nixos/modules/services/x11/desktop-managers/enlightenment.nix b/nixos/modules/services/x11/desktop-managers/enlightenment.nix index 04e82599b94..32c9a40e535 100644 --- a/nixos/modules/services/x11/desktop-managers/enlightenment.nix +++ b/nixos/modules/services/x11/desktop-managers/enlightenment.nix @@ -38,7 +38,7 @@ in pkgs.gtk2 # To get GTK's themes. pkgs.tango-icon-theme - pkgs.gnome2.gnome_icon_theme + pkgs.gnome-icon-theme pkgs.xorg.xcursorthemes ]; @@ -68,10 +68,7 @@ in security.wrappers = (import "${e.enlightenment}/e-wrappers.nix").security.wrappers; - environment.etc = singleton - { source = xcfg.xkbDir; - target = "X11/xkb"; - }; + environment.etc."X11/xkb".source = xcfg.xkbDir; fonts.fonts = [ pkgs.dejavu_fonts pkgs.ubuntu_font_family ]; diff --git a/nixos/modules/services/x11/desktop-managers/gnome3.nix b/nixos/modules/services/x11/desktop-managers/gnome3.nix index 6d9bd284bc7..ac8e70c52bc 100644 --- a/nixos/modules/services/x11/desktop-managers/gnome3.nix +++ b/nixos/modules/services/x11/desktop-managers/gnome3.nix @@ -57,6 +57,10 @@ in { + meta = { + maintainers = teams.gnome.members; + }; + options = { services.gnome3 = { @@ -144,7 +148,7 @@ in services.gnome3.core-shell.enable = true; services.gnome3.core-utilities.enable = mkDefault true; - services.xserver.displayManager.sessionPackages = [ pkgs.gnome3.gnome-session ]; + services.xserver.displayManager.sessionPackages = [ pkgs.gnome3.gnome-session.sessions ]; environment.extraInit = '' ${concatMapStrings (p: '' @@ -180,7 +184,7 @@ in wmCommand = "${pkgs.gnome3.metacity}/bin/metacity"; } ++ cfg.flashback.customSessions); - security.pam.services.gnome-screensaver = { + security.pam.services.gnome-flashback = { enableGnomeKeyring = true; }; @@ -191,9 +195,10 @@ in inherit (wm) wmName; }) cfg.flashback.customSessions); - services.dbus.packages = [ - pkgs.gnome3.gnome-screensaver - ]; + # gnome-panel needs these for menu applet + environment.sessionVariables.XDG_DATA_DIRS = [ "${pkgs.gnome3.gnome-flashback}/share" ]; + # TODO: switch to sessionVariables (resolve conflict) + environment.variables.XDG_CONFIG_DIRS = [ "${pkgs.gnome3.gnome-flashback}/etc/xdg" ]; }) (mkIf serviceCfg.core-os-services.enable { @@ -249,11 +254,16 @@ in services.system-config-printer.enable = (mkIf config.services.printing.enable (mkDefault true)); services.telepathy.enable = mkDefault true; - systemd.packages = with pkgs.gnome3; [ vino gnome-session ]; + systemd.packages = with pkgs.gnome3; [ + gnome-session + gnome-shell + ]; services.avahi.enable = mkDefault true; - xdg.portal.extraPortals = [ pkgs.gnome3.gnome-shell ]; + xdg.portal.extraPortals = [ + pkgs.gnome3.gnome-shell + ]; services.geoclue2.enable = mkDefault true; services.geoclue2.enableDemoAgent = false; # GNOME has its own geoclue agent @@ -298,7 +308,7 @@ in environment = mkForce {}; }; - # Adapt from https://gitlab.gnome.org/GNOME/gnome-build-meta/blob/gnome-3-32/elements/core/meta-gnome-core-shell.bst + # Adapt from https://gitlab.gnome.org/GNOME/gnome-build-meta/blob/gnome-3-36/elements/core/meta-gnome-core-shell.bst environment.systemPackages = with pkgs.gnome3; [ adwaita-icon-theme gnome-backgrounds @@ -317,18 +327,16 @@ in pkgs.hicolor-icon-theme pkgs.shared-mime-info # for update-mime-database pkgs.xdg-user-dirs # Update user dirs as described in http://freedesktop.org/wiki/Software/xdg-user-dirs/ - vino ]; }) - # Adapt from https://gitlab.gnome.org/GNOME/gnome-build-meta/blob/gnome-3-32/elements/core/meta-gnome-core-utilities.bst + # Adapt from https://gitlab.gnome.org/GNOME/gnome-build-meta/blob/gnome-3-36/elements/core/meta-gnome-core-utilities.bst (mkIf serviceCfg.core-utilities.enable { environment.systemPackages = (with pkgs.gnome3; removePackagesByName [ baobab cheese eog epiphany - geary gedit gnome-calculator gnome-calendar @@ -355,6 +363,7 @@ in # Enable default programs programs.evince.enable = mkDefault true; programs.file-roller.enable = mkDefault true; + programs.geary.enable = mkDefault true; programs.gnome-disks.enable = mkDefault true; programs.gnome-terminal.enable = mkDefault true; programs.seahorse.enable = mkDefault true; diff --git a/nixos/modules/services/x11/desktop-managers/kodi.nix b/nixos/modules/services/x11/desktop-managers/kodi.nix index 65a7b9c628e..e997b9a1134 100644 --- a/nixos/modules/services/x11/desktop-managers/kodi.nix +++ b/nixos/modules/services/x11/desktop-managers/kodi.nix @@ -20,7 +20,7 @@ in services.xserver.desktopManager.session = [{ name = "kodi"; start = '' - ${pkgs.kodi}/bin/kodi --lircdev /run/lirc/lircd --standalone & + LIRC_SOCKET_PATH=/run/lirc/lircd ${pkgs.kodi}/bin/kodi --standalone & waitPID=$! ''; }]; diff --git a/nixos/modules/services/x11/desktop-managers/mate.nix b/nixos/modules/services/x11/desktop-managers/mate.nix index fe63f36cf96..f236c14fcf3 100644 --- a/nixos/modules/services/x11/desktop-managers/mate.nix +++ b/nixos/modules/services/x11/desktop-managers/mate.nix @@ -44,35 +44,35 @@ in config = mkIf cfg.enable { - services.xserver.desktopManager.session = singleton { - name = "mate"; - bgSupport = true; - start = '' - export XDG_MENU_PREFIX=mate- + services.xserver.displayManager.sessionPackages = [ + pkgs.mate.mate-session-manager + ]; - # Let caja find extensions - export CAJA_EXTENSION_DIRS=$CAJA_EXTENSION_DIRS''${CAJA_EXTENSION_DIRS:+:}${config.system.path}/lib/caja/extensions-2.0 + services.xserver.displayManager.sessionCommands = '' + if test "$XDG_CURRENT_DESKTOP" = "MATE"; then + export XDG_MENU_PREFIX=mate- - # Let caja extensions find gsettings schemas - ${concatMapStrings (p: '' + # Let caja find extensions + export CAJA_EXTENSION_DIRS=$CAJA_EXTENSION_DIRS''${CAJA_EXTENSION_DIRS:+:}${config.system.path}/lib/caja/extensions-2.0 + + # Let caja extensions find gsettings schemas + ${concatMapStrings (p: '' if [ -d "${p}/lib/caja/extensions-2.0" ]; then - ${addToXDGDirs p} + ${addToXDGDirs p} fi - '') - config.environment.systemPackages - } + '') config.environment.systemPackages} - # Let mate-panel find applets - export MATE_PANEL_APPLETS_DIR=$MATE_PANEL_APPLETS_DIR''${MATE_PANEL_APPLETS_DIR:+:}${config.system.path}/share/mate-panel/applets - export MATE_PANEL_EXTRA_MODULES=$MATE_PANEL_EXTRA_MODULES''${MATE_PANEL_EXTRA_MODULES:+:}${config.system.path}/lib/mate-panel/applets + # Add mate-control-center paths to some XDG variables because its schemas are needed by mate-settings-daemon, and mate-settings-daemon is a dependency for mate-control-center (that is, they are mutually recursive) + ${addToXDGDirs pkgs.mate.mate-control-center} + fi + ''; - # Add mate-control-center paths to some XDG variables because its schemas are needed by mate-settings-daemon, and mate-settings-daemon is a dependency for mate-control-center (that is, they are mutually recursive) - ${addToXDGDirs pkgs.mate.mate-control-center} + # Let mate-panel find applets + environment.sessionVariables."MATE_PANEL_APPLETS_DIR" = "${config.system.path}/share/mate-panel/applets"; + environment.sessionVariables."MATE_PANEL_EXTRA_MODULES" = "${config.system.path}/lib/mate-panel/applets"; - ${pkgs.mate.mate-session-manager}/bin/mate-session ${optionalString cfg.debug "--debug"} & - waitPID=$! - ''; - }; + # Debugging + environment.sessionVariables.MATE_SESSION_DEBUG = mkIf cfg.debug "1"; environment.systemPackages = pkgs.mate.basePackages ++ @@ -86,6 +86,7 @@ in pkgs.shared-mime-info pkgs.xdg-user-dirs # Update user dirs as described in https://freedesktop.org/wiki/Software/xdg-user-dirs/ pkgs.mate.mate-settings-daemon + pkgs.yelp # for 'Contents' in 'Help' menus ]; programs.dconf.enable = true; @@ -98,7 +99,6 @@ in services.gnome3.at-spi2-core.enable = true; services.gnome3.gnome-keyring.enable = true; - services.gnome3.gnome-settings-daemon.enable = true; services.udev.packages = [ pkgs.mate.mate-settings-daemon ]; services.gvfs.enable = true; services.upower.enable = config.powerManagement.enable; diff --git a/nixos/modules/services/x11/desktop-managers/pantheon.nix b/nixos/modules/services/x11/desktop-managers/pantheon.nix index e07d5b5eaad..01fe230b8a4 100644 --- a/nixos/modules/services/x11/desktop-managers/pantheon.nix +++ b/nixos/modules/services/x11/desktop-managers/pantheon.nix @@ -5,6 +5,7 @@ with lib; let cfg = config.services.xserver.desktopManager.pantheon; + serviceCfg = config.services.pantheon; nixos-gsettings-desktop-schemas = pkgs.pantheon.elementary-gsettings-schemas.override { extraGSettingsOverridePackages = cfg.extraGSettingsOverridePackages; @@ -15,10 +16,23 @@ in { - meta.maintainers = pkgs.pantheon.maintainers; + meta = { + doc = ./pantheon.xml; + maintainers = pkgs.pantheon.maintainers; + }; options = { + services.pantheon = { + + contractor = { + enable = mkEnableOption "contractor, a desktop-wide extension service used by Pantheon"; + }; + + apps.enable = mkEnableOption "Pantheon default applications"; + + }; + services.xserver.desktopManager.pantheon = { enable = mkOption { type = types.bool; @@ -41,6 +55,18 @@ in ]; }; + extraWingpanelIndicators = mkOption { + default = null; + type = with types; nullOr (listOf package); + description = "Indicators to add to Wingpanel."; + }; + + extraSwitchboardPlugs = mkOption { + default = null; + type = with types; nullOr (listOf package); + description = "Plugs to add to Switchboard."; + }; + extraGSettingsOverrides = mkOption { default = ""; type = types.lines; @@ -67,148 +93,204 @@ in }; - config = mkIf cfg.enable { + config = mkMerge [ + (mkIf cfg.enable { - services.xserver.displayManager.sessionPackages = [ pkgs.pantheon.elementary-session-settings ]; + services.xserver.displayManager.sessionPackages = [ pkgs.pantheon.elementary-session-settings ]; - # Ensure lightdm is used when Pantheon is enabled - # Without it screen locking will be nonfunctional because of the use of lightlocker + # Ensure lightdm is used when Pantheon is enabled + # Without it screen locking will be nonfunctional because of the use of lightlocker + warnings = optional (config.services.xserver.displayManager.lightdm.enable != true) + '' + Using Pantheon without LightDM as a displayManager will break screenlocking from the UI. + ''; - warnings = optional (config.services.xserver.displayManager.lightdm.enable != true) - '' - Using Pantheon without LightDM as a displayManager will break screenlocking from the UI. + services.xserver.displayManager.lightdm.greeters.pantheon.enable = mkDefault true; + + # Without this, elementary LightDM greeter will pre-select non-existent `default` session + # https://github.com/elementary/greeter/issues/368 + services.xserver.displayManager.defaultSession = "pantheon"; + + services.xserver.displayManager.sessionCommands = '' + if test "$XDG_CURRENT_DESKTOP" = "Pantheon"; then + ${concatMapStrings (p: '' + if [ -d "${p}/share/gsettings-schemas/${p.name}" ]; then + export XDG_DATA_DIRS=$XDG_DATA_DIRS''${XDG_DATA_DIRS:+:}${p}/share/gsettings-schemas/${p.name} + fi + + if [ -d "${p}/lib/girepository-1.0" ]; then + export GI_TYPELIB_PATH=$GI_TYPELIB_PATH''${GI_TYPELIB_PATH:+:}${p}/lib/girepository-1.0 + export LD_LIBRARY_PATH=$LD_LIBRARY_PATH''${LD_LIBRARY_PATH:+:}${p}/lib + fi + '') cfg.sessionPath} + fi ''; - services.xserver.displayManager.lightdm.greeters.pantheon.enable = mkDefault true; + # Default services + hardware.bluetooth.enable = mkDefault true; + hardware.pulseaudio.enable = mkDefault true; + security.polkit.enable = true; + services.accounts-daemon.enable = true; + services.bamf.enable = true; + services.colord.enable = mkDefault true; + services.tumbler.enable = mkDefault true; + services.system-config-printer.enable = (mkIf config.services.printing.enable (mkDefault true)); + services.dbus.packages = with pkgs.pantheon; [ + switchboard-plug-power + elementary-default-settings # accountsservice extensions + ]; + services.pantheon.apps.enable = mkDefault true; + services.pantheon.contractor.enable = mkDefault true; + services.gnome3.at-spi2-core.enable = true; + services.gnome3.evolution-data-server.enable = true; + services.gnome3.glib-networking.enable = true; + services.gnome3.gnome-keyring.enable = true; + services.gvfs.enable = true; + services.gnome3.rygel.enable = mkDefault true; + services.gsignond.enable = mkDefault true; + services.gsignond.plugins = with pkgs.gsignondPlugins; [ lastfm mail oauth ]; + services.udisks2.enable = true; + services.upower.enable = config.powerManagement.enable; + services.xserver.libinput.enable = mkDefault true; + services.xserver.updateDbusEnvironment = true; + services.zeitgeist.enable = mkDefault true; + services.geoclue2.enable = mkDefault true; + # pantheon has pantheon-agent-geoclue2 + services.geoclue2.enableDemoAgent = false; + services.geoclue2.appConfig."io.elementary.desktop.agent-geoclue2" = { + isAllowed = true; + isSystem = true; + }; + # Use gnome-settings-daemon fork + services.udev.packages = [ + pkgs.pantheon.elementary-settings-daemon + ]; + systemd.packages = [ + pkgs.pantheon.elementary-settings-daemon + ]; + programs.dconf.enable = true; + networking.networkmanager.enable = mkDefault true; - # Without this, Elementary LightDM greeter will pre-select non-existent `default` session - # https://github.com/elementary/greeter/issues/368 - services.xserver.displayManager.defaultSession = "pantheon"; - - services.xserver.displayManager.sessionCommands = '' - if test "$XDG_CURRENT_DESKTOP" = "Pantheon"; then - ${concatMapStrings (p: '' - if [ -d "${p}/share/gsettings-schemas/${p.name}" ]; then - export XDG_DATA_DIRS=$XDG_DATA_DIRS''${XDG_DATA_DIRS:+:}${p}/share/gsettings-schemas/${p.name} - fi - - if [ -d "${p}/lib/girepository-1.0" ]; then - export GI_TYPELIB_PATH=$GI_TYPELIB_PATH''${GI_TYPELIB_PATH:+:}${p}/lib/girepository-1.0 - export LD_LIBRARY_PATH=$LD_LIBRARY_PATH''${LD_LIBRARY_PATH:+:}${p}/lib - fi - '') cfg.sessionPath} - fi - ''; - - hardware.bluetooth.enable = mkDefault true; - hardware.pulseaudio.enable = mkDefault true; - security.polkit.enable = true; - services.accounts-daemon.enable = true; - services.bamf.enable = true; - services.colord.enable = mkDefault true; - services.pantheon.files.enable = mkDefault true; - services.tumbler.enable = mkDefault true; - services.system-config-printer.enable = (mkIf config.services.printing.enable (mkDefault true)); - services.dbus.packages = with pkgs.pantheon; [ - switchboard-plug-power - elementary-default-settings - ]; - services.pantheon.contractor.enable = mkDefault true; - services.gnome3.at-spi2-core.enable = true; - services.gnome3.evolution-data-server.enable = true; - services.gnome3.glib-networking.enable = true; - # TODO: gnome-keyring's xdg autostarts will still be in the environment (from elementary-session-settings) if disabled forcefully - services.gnome3.gnome-keyring.enable = true; - services.gnome3.gnome-settings-daemon.enable = true; - services.udev.packages = [ pkgs.pantheon.elementary-settings-daemon ]; - services.gvfs.enable = true; - services.gnome3.rygel.enable = mkDefault true; - services.gsignond.enable = mkDefault true; - services.gsignond.plugins = with pkgs.gsignondPlugins; [ lastfm mail oauth ]; - services.udisks2.enable = true; - services.upower.enable = config.powerManagement.enable; - services.xserver.libinput.enable = mkDefault true; - services.xserver.updateDbusEnvironment = true; - services.zeitgeist.enable = mkDefault true; - services.geoclue2.enable = mkDefault true; - # pantheon has pantheon-agent-geoclue2 - services.geoclue2.enableDemoAgent = false; - services.geoclue2.appConfig."io.elementary.desktop.agent-geoclue2" = { - isAllowed = true; - isSystem = true; - }; - - programs.dconf.enable = true; - programs.evince.enable = mkDefault true; - programs.file-roller.enable = mkDefault true; - # Otherwise you can't store NetworkManager Secrets with - # "Store the password only for this user" - programs.nm-applet.enable = true; - - # Shell integration for VTE terminals - programs.bash.vteIntegration = mkDefault true; - programs.zsh.vteIntegration = mkDefault true; - - # Harmonize Qt5 applications under Pantheon - qt5.enable = true; - qt5.platformTheme = "gnome"; - qt5.style = "adwaita"; - - networking.networkmanager.enable = mkDefault true; - - # Override GSettings schemas - environment.sessionVariables.NIX_GSETTINGS_OVERRIDES_DIR = "${nixos-gsettings-desktop-schemas}/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas"; - - environment.sessionVariables.GNOME_SESSION_DEBUG = mkIf cfg.debug "1"; - - # Settings from elementary-default-settings - environment.sessionVariables.GTK_CSD = "1"; - environment.sessionVariables.GTK3_MODULES = [ "pantheon-filechooser-module" ]; - environment.etc."gtk-3.0/settings.ini".source = "${pkgs.pantheon.elementary-default-settings}/etc/gtk-3.0/settings.ini"; - - environment.pathsToLink = [ - # FIXME: modules should link subdirs of `/share` rather than relying on this - "/share" - ]; - - environment.systemPackages = - pkgs.pantheon.artwork ++ pkgs.pantheon.desktop ++ pkgs.pantheon.services ++ cfg.sessionPath - ++ (with pkgs; gnome3.removePackagesByName - ([ - gnome3.geary - gnome3.epiphany - gnome3.gnome-font-viewer - ] ++ pantheon.apps) config.environment.pantheon.excludePackages) - ++ (with pkgs; - [ - adwaita-qt + # Global environment + environment.systemPackages = with pkgs; [ desktop-file-utils glib - glib-networking gnome-menus gnome3.adwaita-icon-theme gtk3.out hicolor-icon-theme lightlocker onboard - plank qgnomeplatform shared-mime-info sound-theme-freedesktop xdg-user-dirs - ]); + ] ++ (with pkgs.pantheon; [ + # Artwork + elementary-gtk-theme + elementary-icon-theme + elementary-sound-theme + elementary-wallpapers - fonts.fonts = with pkgs; [ - open-sans - roboto-mono - pantheon.elementary-redacted-script # needed by screenshot-tool - ]; + # Desktop + elementary-default-settings + elementary-dock + elementary-session-settings + elementary-shortcut-overlay + gala + (switchboard-with-plugs.override { + plugs = cfg.extraSwitchboardPlugs; + }) + (wingpanel-with-indicators.override { + indicators = cfg.extraWingpanelIndicators; + }) - fonts.fontconfig.defaultFonts = { - monospace = [ "Roboto Mono" ]; - sansSerif = [ "Open Sans" ]; - }; + # Services + elementary-capnet-assist + elementary-dpms-helper + elementary-notifications + elementary-settings-daemon + pantheon-agent-geoclue2 + pantheon-agent-polkit + ]) ++ (gnome3.removePackagesByName [ + gnome3.geary + gnome3.epiphany + gnome3.gnome-font-viewer + ] config.environment.pantheon.excludePackages); - }; + programs.evince.enable = mkDefault true; + programs.file-roller.enable = mkDefault true; + # Settings from elementary-default-settings + environment.sessionVariables.GTK_CSD = "1"; + environment.sessionVariables.GTK3_MODULES = [ "pantheon-filechooser-module" ]; + environment.etc."gtk-3.0/settings.ini".source = "${pkgs.pantheon.elementary-default-settings}/etc/gtk-3.0/settings.ini"; + + # Override GSettings schemas + environment.sessionVariables.NIX_GSETTINGS_OVERRIDES_DIR = "${nixos-gsettings-desktop-schemas}/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas"; + + environment.sessionVariables.GNOME_SESSION_DEBUG = mkIf cfg.debug "1"; + + environment.pathsToLink = [ + # FIXME: modules should link subdirs of `/share` rather than relying on this + "/share" + ]; + + # Otherwise you can't store NetworkManager Secrets with + # "Store the password only for this user" + programs.nm-applet.enable = true; + + # Shell integration for VTE terminals + programs.bash.vteIntegration = mkDefault true; + programs.zsh.vteIntegration = mkDefault true; + + # Harmonize Qt5 applications under Pantheon + qt5.enable = true; + qt5.platformTheme = "gnome"; + qt5.style = "adwaita"; + + # Default Fonts + fonts.fonts = with pkgs; [ + open-sans + roboto-mono + ]; + + fonts.fontconfig.defaultFonts = { + monospace = [ "Roboto Mono" ]; + sansSerif = [ "Open Sans" ]; + }; + }) + + (mkIf serviceCfg.apps.enable { + environment.systemPackages = (with pkgs.pantheon; pkgs.gnome3.removePackagesByName [ + elementary-calculator + elementary-calendar + elementary-camera + elementary-code + elementary-files + elementary-music + elementary-photos + elementary-screenshot-tool + elementary-terminal + elementary-videos + ] config.environment.pantheon.excludePackages); + + # needed by screenshot-tool + fonts.fonts = [ + pkgs.pantheon.elementary-redacted-script + ]; + }) + + (mkIf serviceCfg.contractor.enable { + environment.systemPackages = with pkgs.pantheon; [ + contractor + extra-elementary-contracts + ]; + + environment.pathsToLink = [ + "/share/contractor" + ]; + }) + + ]; } diff --git a/nixos/modules/services/x11/desktop-managers/pantheon.xml b/nixos/modules/services/x11/desktop-managers/pantheon.xml new file mode 100644 index 00000000000..9541f2cfd4e --- /dev/null +++ b/nixos/modules/services/x11/desktop-managers/pantheon.xml @@ -0,0 +1,114 @@ + + Pantheon Destkop + + Pantheon is the desktop environment created for the elementary OS distribution. It is written from scratch in Vala, utilizing GNOME technologies with GTK 3 and Granite. + +
+ Enabling Pantheon + + + All of Pantheon is working in NixOS and the applications should be available, aside from a few exceptions. To enable Pantheon, set + + = true; + + This automatically enables LightDM and Pantheon's LightDM greeter. If you'd like to disable this, set + + = false; + = false; + + but please be aware using Pantheon without LightDM as a display manager will break screenlocking from the UI. The NixOS module for Pantheon installs all of Pantheon's default applications. If you'd like to not install Pantheon's apps, set + + = false; + + You can also use to remove any other app (like geary). + +
+
+ Wingpanel and Switchboard plugins + + + Wingpanel and Switchboard work differently than they do in other distributions, as far as using plugins. You cannot install a plugin globally (like with ) to start using it. You should instead be using the following options: + + + + + + + + + + + + + to configure the programs with plugs or indicators. + + + + The difference in NixOS is both these programs are patched to load plugins from a directory that is the value of an environment variable. All of which is controlled in Nix. If you need to configure the particular packages manually you can override the packages like: + +wingpanel-with-indicators.override { + indicators = [ + pkgs.some-special-indicator + ]; +}; + +switchboard-with-plugs.override { + plugs = [ + pkgs.some-special-plug + ]; +}; + + please note that, like how the NixOS options describe these as extra plugins, this would only add to the default plugins included with the programs. If for some reason you'd like to configure which plugins to use exactly, both packages have an argument for this: + +wingpanel-with-indicators.override { + useDefaultIndicators = false; + indicators = specialListOfIndicators; +}; + +switchboard-with-plugs.override { + useDefaultPlugs = false; + plugs = specialListOfPlugs; +}; + + this could be most useful for testing a particular plug-in in isolation. + +
+
+ FAQ + + + + + I have switched from a different desktop and Pantheon’s theming looks messed up. + + + + Open Switchboard and go to: AdministrationAboutRestore Default SettingsRestore Settings. This will reset any dconf settings to their Pantheon defaults. Note this could reset certain GNOME specific preferences if that desktop was used prior. + + + + + + I cannot enable both GNOME 3 and Pantheon. + + + + This is a known issue and there is no known workaround. + + + + + + Does AppCenter work, or is it available? + + + + AppCenter has been available since 20.03, but it is of little use. This is because there is no functioning PackageKit backend for Nix 2.0. In the near future you will be able to install Flatpak applications from AppCenter on NixOS. See this issue. + + + + +
+
diff --git a/nixos/modules/services/x11/desktop-managers/plasma5.nix b/nixos/modules/services/x11/desktop-managers/plasma5.nix index fce274477b6..60ef0159ff1 100644 --- a/nixos/modules/services/x11/desktop-managers/plasma5.nix +++ b/nixos/modules/services/x11/desktop-managers/plasma5.nix @@ -8,6 +8,137 @@ let cfg = xcfg.desktopManager.plasma5; inherit (pkgs) kdeApplications plasma5 libsForQt5 qt5; + inherit (pkgs) writeText; + + pulseaudio = config.hardware.pulseaudio; + pactl = "${getBin pulseaudio.package}/bin/pactl"; + startplasma-x11 = "${getBin plasma5.plasma-workspace}/bin/startplasma-x11"; + sed = "${getBin pkgs.gnused}/bin/sed"; + + gtkrc2 = writeText "gtkrc-2.0" '' + # Default GTK+ 2 config for NixOS Plasma 5 + include "/run/current-system/sw/share/themes/Breeze/gtk-2.0/gtkrc" + style "user-font" + { + font_name="Sans Serif Regular" + } + widget_class "*" style "user-font" + gtk-font-name="Sans Serif Regular 10" + gtk-theme-name="Breeze" + gtk-icon-theme-name="breeze" + gtk-fallback-icon-theme="hicolor" + gtk-cursor-theme-name="breeze_cursors" + gtk-toolbar-style=GTK_TOOLBAR_ICONS + gtk-menu-images=1 + gtk-button-images=1 + ''; + + gtk3_settings = writeText "settings.ini" '' + [Settings] + gtk-font-name=Sans Serif Regular 10 + gtk-theme-name=Breeze + gtk-icon-theme-name=breeze + gtk-fallback-icon-theme=hicolor + gtk-cursor-theme-name=breeze_cursors + gtk-toolbar-style=GTK_TOOLBAR_ICONS + gtk-menu-images=1 + gtk-button-images=1 + ''; + + kcminputrc = writeText "kcminputrc" '' + [Mouse] + cursorTheme=breeze_cursors + cursorSize=0 + ''; + + activationScript = '' + ${set_XDG_CONFIG_HOME} + + # The KDE icon cache is supposed to update itself automatically, but it uses + # the timestamp on the icon theme directory as a trigger. This doesn't work + # on NixOS because the timestamp never changes. As a workaround, delete the + # icon cache at login and session activation. + # See also: http://lists-archives.org/kde-devel/26175-what-when-will-icon-cache-refresh.html + rm -fv $HOME/.cache/icon-cache.kcache + + # xdg-desktop-settings generates this empty file but + # it makes kbuildsyscoca5 fail silently. To fix this + # remove that menu if it exists. + rm -fv ''${XDG_CONFIG_HOME}/menus/applications-merged/xdg-desktop-menu-dummy.menu + + # Qt writes a weird ‘libraryPath’ line to + # ~/.config/Trolltech.conf that causes the KDE plugin + # paths of previous KDE invocations to be searched. + # Obviously using mismatching KDE libraries is potentially + # disastrous, so here we nuke references to the Nix store + # in Trolltech.conf. A better solution would be to stop + # Qt from doing this wackiness in the first place. + trolltech_conf="''${XDG_CONFIG_HOME}/Trolltech.conf" + if [ -e "$trolltech_conf" ]; then + ${sed} -i "$trolltech_conf" -e '/nix\\store\|nix\/store/ d' + fi + + # Remove the kbuildsyscoca5 cache. It will be regenerated + # immediately after. This is necessary for kbuildsyscoca5 to + # recognize that software that has been removed. + rm -fv $HOME/.cache/ksycoca* + + ${pkgs.libsForQt5.kservice}/bin/kbuildsycoca5 + ''; + + set_XDG_CONFIG_HOME = '' + # Set the default XDG_CONFIG_HOME if it is unset. + # Per the XDG Base Directory Specification: + # https://specifications.freedesktop.org/basedir-spec/latest + # 1. Never export this variable! If it is unset, then child processes are + # expected to set the default themselves. + # 2. Contaminate / if $HOME is unset; do not check if $HOME is set. + XDG_CONFIG_HOME=''${XDG_CONFIG_HOME:-$HOME/.config} + ''; + + startplasma = + '' + ${set_XDG_CONFIG_HOME} + mkdir -p "''${XDG_CONFIG_HOME}" + + '' + + optionalString pulseaudio.enable '' + # Load PulseAudio module for routing support. + # See also: http://colin.guthr.ie/2009/10/so-how-does-the-kde-pulseaudio-support-work-anyway/ + ${pactl} load-module module-device-manager "do_routing=1" + + '' + + '' + ${activationScript} + + # Create default configurations if Plasma has never been started. + kdeglobals="''${XDG_CONFIG_HOME}/kdeglobals" + if ! [ -f "$kdeglobals" ] + then + kcminputrc="''${XDG_CONFIG_HOME}/kcminputrc" + if ! [ -f "$kcminputrc" ] + then + cat ${kcminputrc} >"$kcminputrc" + fi + + gtkrc2="$HOME/.gtkrc-2.0" + if ! [ -f "$gtkrc2" ] + then + cat ${gtkrc2} >"$gtkrc2" + fi + + gtk3_settings="''${XDG_CONFIG_HOME}/gtk-3.0/settings.ini" + if ! [ -f "$gtk3_settings" ] + then + mkdir -p "$(dirname "$gtk3_settings")" + cat ${gtk3_settings} >"$gtk3_settings" + fi + fi + + '' + + '' + exec "${startplasma-x11}" + ''; in @@ -41,27 +172,7 @@ in services.xserver.desktopManager.session = singleton { name = "plasma5"; bgSupport = true; - start = '' - # Load PulseAudio module for routing support. - # See http://colin.guthr.ie/2009/10/so-how-does-the-kde-pulseaudio-support-work-anyway/ - ${optionalString config.hardware.pulseaudio.enable '' - ${getBin config.hardware.pulseaudio.package}/bin/pactl load-module module-device-manager "do_routing=1" - ''} - - if [ -f "$HOME/.config/kdeglobals" ] - then - # Remove extraneous font style names. - # See also: https://phabricator.kde.org/D9070 - ${getBin pkgs.gnused}/bin/sed -i "$HOME/.config/kdeglobals" \ - -e '/^fixed=/ s/,Regular$//' \ - -e '/^font=/ s/,Regular$//' \ - -e '/^menuFont=/ s/,Regular$//' \ - -e '/^smallestReadableFont=/ s/,Regular$//' \ - -e '/^toolBarFont=/ s/,Regular$//' - fi - - exec "${getBin plasma5.plasma-workspace}/bin/startkde" - ''; + start = startplasma; }; security.wrappers = { @@ -137,6 +248,7 @@ in libkscreen libksysguard milou + plasma-browser-integration plasma-integration polkit-kde-agent systemsettings @@ -183,10 +295,7 @@ in "/share" ]; - environment.etc = singleton { - source = xcfg.xkbDir; - target = "X11/xkb"; - }; + environment.etc."X11/xkb".source = xcfg.xkbDir; # Enable GTK applications to load SVG icons services.xserver.gdk-pixbuf.modulePackages = [ pkgs.librsvg ]; @@ -229,29 +338,7 @@ in xdg.portal.extraPortals = [ pkgs.xdg-desktop-portal-kde ]; # Update the start menu for each user that is currently logged in - system.userActivationScripts.plasmaSetup = '' - # The KDE icon cache is supposed to update itself - # automatically, but it uses the timestamp on the icon - # theme directory as a trigger. Since in Nix the - # timestamp is always the same, this doesn't work. So as - # a workaround, nuke the icon cache on login. This isn't - # perfect, since it may require logging out after - # installing new applications to update the cache. - # See http://lists-archives.org/kde-devel/26175-what-when-will-icon-cache-refresh.html - rm -fv $HOME/.cache/icon-cache.kcache - - # xdg-desktop-settings generates this empty file but - # it makes kbuildsyscoca5 fail silently. To fix this - # remove that menu if it exists. - rm -fv $HOME/.config/menus/applications-merged/xdg-desktop-menu-dummy.menu - - # Remove the kbuildsyscoca5 cache. It will be regenerated - # immediately after. This is necessary for kbuildsyscoca5 to - # recognize that software that has been removed. - rm -fv $HOME/.cache/ksycoca* - - ${pkgs.libsForQt5.kservice}/bin/kbuildsycoca5 - ''; + system.userActivationScripts.plasmaSetup = activationScript; }) ]; diff --git a/nixos/modules/services/x11/desktop-managers/xfce.nix b/nixos/modules/services/x11/desktop-managers/xfce.nix index a08b1947f65..d39b4d64904 100644 --- a/nixos/modules/services/x11/desktop-managers/xfce.nix +++ b/nixos/modules/services/x11/desktop-managers/xfce.nix @@ -8,6 +8,10 @@ in { + meta = { + maintainers = with maintainers; [ worldofpeace ]; + }; + imports = [ # added 2019-08-18 # needed to preserve some semblance of UI familarity @@ -129,6 +133,7 @@ in services.xserver.desktopManager.session = [{ name = "xfce"; + desktopNames = [ "XFCE" ]; bgSupport = true; start = '' ${pkgs.runtimeShell} ${pkgs.xfce.xfce4-session.xinitrc} & diff --git a/nixos/modules/services/x11/display-managers/account-service-util.nix b/nixos/modules/services/x11/display-managers/account-service-util.nix index 1dbe703b566..2b08c62d0ad 100644 --- a/nixos/modules/services/x11/display-managers/account-service-util.nix +++ b/nixos/modules/services/x11/display-managers/account-service-util.nix @@ -3,6 +3,7 @@ , gobject-introspection , python3 , wrapGAppsHook +, lib }: python3.pkgs.buildPythonApplication { @@ -36,4 +37,8 @@ python3.pkgs.buildPythonApplication { cp $src $out/bin/set-session chmod +x $out/bin/set-session ''; + + meta = with lib; { + maintainers = with maintainers; [ worldofpeace ]; + }; } diff --git a/nixos/modules/services/x11/display-managers/default.nix b/nixos/modules/services/x11/display-managers/default.nix index 2d809b5cc9f..2a7a19e7695 100644 --- a/nixos/modules/services/x11/display-managers/default.nix +++ b/nixos/modules/services/x11/display-managers/default.nix @@ -54,14 +54,6 @@ let exec &> >(tee ~/.xsession-errors) ''} - # Start PulseAudio if enabled. - ${optionalString (config.hardware.pulseaudio.enable) '' - # Publish access credentials in the root window. - if ${config.hardware.pulseaudio.package.out}/bin/pulseaudio --dump-modules | grep module-x11-publish &> /dev/null; then - ${config.hardware.pulseaudio.package.out}/bin/pactl load-module module-x11-publish "display=$DISPLAY" - fi - ''} - # Tell systemd about our $DISPLAY and $XAUTHORITY. # This is needed by the ssh-agent unit. # @@ -141,9 +133,11 @@ let ''; dmDefault = cfg.desktopManager.default; + # fallback default for cases when only default wm is set + dmFallbackDefault = if dmDefault != null then dmDefault else "none"; wmDefault = cfg.windowManager.default; - defaultSessionFromLegacyOptions = concatStringsSep "+" (filter (s: s != null) ([ dmDefault ] ++ optional (wmDefault != "none") wmDefault)); + defaultSessionFromLegacyOptions = dmFallbackDefault + optionalString (wmDefault != null && wmDefault != "none") "+${wmDefault}"; in @@ -358,7 +352,7 @@ in { c = wmDefault; t = "- services.xserver.windowManager.default"; } ]))} Please use - services.xserver.displayManager.defaultSession = "${concatStringsSep "+" (filter (s: s != null) [ dmDefault wmDefault ])}"; + services.xserver.displayManager.defaultSession = "${defaultSessionFromLegacyOptions}"; instead. '' ]; @@ -380,7 +374,7 @@ in wms = filter (s: s.manage == "window") cfg.displayManager.session; # Script responsible for starting the window manager and the desktop manager. - xsession = wm: dm: pkgs.writeScript "xsession" '' + xsession = dm: wm: pkgs.writeScript "xsession" '' #! ${pkgs.bash}/bin/bash # Legacy session script used to construct .desktop files from @@ -410,6 +404,9 @@ in (dm: wm: let sessionName = "${dm.name}${optionalString (wm.name != "none") ("+" + wm.name)}"; script = xsession dm wm; + desktopNames = if dm ? desktopNames + then concatStringsSep ";" dm.desktopNames + else sessionName; in optional (dm.name != "none" || wm.name != "none") (pkgs.writeTextFile { @@ -425,6 +422,7 @@ in TryExec=${script} Exec=${script} Name=${sessionName} + DesktopNames=${desktopNames} ''; } // { providedSessions = [ sessionName ]; diff --git a/nixos/modules/services/x11/display-managers/gdm.nix b/nixos/modules/services/x11/display-managers/gdm.nix index 6630f012f04..d7bef68e5bc 100644 --- a/nixos/modules/services/x11/display-managers/gdm.nix +++ b/nixos/modules/services/x11/display-managers/gdm.nix @@ -38,6 +38,10 @@ in { + meta = { + maintainers = teams.gnome.members; + }; + ###### interface options = { @@ -159,27 +163,34 @@ in GDM_X_SESSION_WRAPPER = "${xSessionWrapper}"; }; execCmd = "exec ${gdm}/bin/gdm"; - preStart = optionalString config.hardware.pulseaudio.enable '' - mkdir -p /run/gdm/.config/pulse - ln -sf ${pulseConfig} /run/gdm/.config/pulse/default.pa - chown -R gdm:gdm /run/gdm/.config - '' + optionalString config.services.gnome3.gnome-initial-setup.enable '' - # Create stamp file for gnome-initial-setup to prevent run. - mkdir -p /run/gdm/.config - cat - > /run/gdm/.config/gnome-initial-setup-done <<- EOF - yes - EOF - '' + optionalString (defaultSessionName != null) '' + preStart = optionalString (defaultSessionName != null) '' # Set default session in session chooser to a specified values – basically ignore session history. ${setSessionScript}/bin/set-session ${cfg.sessionData.autologinSession} ''; }; + systemd.tmpfiles.rules = [ + "d /run/gdm/.config 0711 gdm gdm" + ] ++ optionals config.hardware.pulseaudio.enable [ + "d /run/gdm/.config/pulse 0711 gdm gdm" + "L+ /run/gdm/.config/pulse/${pulseConfig.name} - - - - ${pulseConfig}" + ] ++ optionals config.services.gnome3.gnome-initial-setup.enable [ + # Create stamp file for gnome-initial-setup to prevent it starting in GDM. + "f /run/gdm/.config/gnome-initial-setup-done 0711 gdm gdm - yes" + ]; + + # Otherwise GDM will not be able to start correctly and display Wayland sessions + systemd.packages = with pkgs.gnome3; [ gnome-session gnome-shell ]; + environment.systemPackages = [ pkgs.gnome3.adwaita-icon-theme ]; + systemd.services.display-manager.wants = [ # Because sd_login_monitor_new requires /run/systemd/machines "systemd-machined.service" # setSessionScript wants AccountsService "accounts-daemon.service" + # Failed to open gpu '/dev/dri/card0': GDBus.Error:org.freedesktop.DBus.Error.AccessDenied: Operation not permitted + # https://github.com/NixOS/nixpkgs/pull/25311#issuecomment-609417621 + "systemd-udev-settle.service" ]; systemd.services.display-manager.after = [ @@ -189,6 +200,7 @@ in "getty@tty${gdm.initialVT}.service" "plymouth-quit.service" "plymouth-start.service" + "systemd-udev-settle.service" ]; systemd.services.display-manager.conflicts = [ "getty@tty${gdm.initialVT}.service" diff --git a/nixos/modules/services/x11/display-managers/lightdm-greeters/mini.nix b/nixos/modules/services/x11/display-managers/lightdm-greeters/mini.nix index 0025f9b3603..16d7fdf15cf 100644 --- a/nixos/modules/services/x11/display-managers/lightdm-greeters/mini.nix +++ b/nixos/modules/services/x11/display-managers/lightdm-greeters/mini.nix @@ -14,7 +14,9 @@ let user = ${cfg.user} show-password-label = true password-label-text = Password: + invalid-password-text = Invalid Password show-input-cursor = true + password-alignment = right [greeter-hotkeys] mod-key = meta @@ -26,6 +28,8 @@ let [greeter-theme] font = Sans font-size = 1em + font-weight = bold + font-style = normal text-color = "#080800" error-color = "#F8F8F0" background-image = "${ldmcfg.background}" @@ -36,6 +40,8 @@ let layout-space = 15 password-color = "#F8F8F0" password-background-color = "#1B1D1E" + password-border-color = "#080800" + password-border-width = 2px ${cfg.extraConfig} ''; diff --git a/nixos/modules/services/x11/display-managers/lightdm-greeters/pantheon.nix b/nixos/modules/services/x11/display-managers/lightdm-greeters/pantheon.nix index 77c94114e6d..087c6b9c38a 100644 --- a/nixos/modules/services/x11/display-managers/lightdm-greeters/pantheon.nix +++ b/nixos/modules/services/x11/display-managers/lightdm-greeters/pantheon.nix @@ -10,6 +10,10 @@ let in { + meta = { + maintainers = with maintainers; [ worldofpeace ]; + }; + options = { services.xserver.displayManager.lightdm.greeters.pantheon = { diff --git a/nixos/modules/services/x11/display-managers/lightdm-greeters/tiny.nix b/nixos/modules/services/x11/display-managers/lightdm-greeters/tiny.nix new file mode 100644 index 00000000000..a9ba8e6280d --- /dev/null +++ b/nixos/modules/services/x11/display-managers/lightdm-greeters/tiny.nix @@ -0,0 +1,92 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + + dmcfg = config.services.xserver.displayManager; + ldmcfg = dmcfg.lightdm; + cfg = ldmcfg.greeters.tiny; + +in +{ + options = { + + services.xserver.displayManager.lightdm.greeters.tiny = { + + enable = mkOption { + type = types.bool; + default = false; + description = '' + Whether to enable lightdm-tiny-greeter as the lightdm greeter. + + Note that this greeter starts only the default X session. + You can configure the default X session using + . + ''; + }; + + label = { + user = mkOption { + type = types.str; + default = "Username"; + description = '' + The string to represent the user_text label. + ''; + }; + + pass = mkOption { + type = types.str; + default = "Password"; + description = '' + The string to represent the pass_text label. + ''; + }; + }; + + + extraConfig = mkOption { + type = types.lines; + default = ""; + description = '' + Section to describe style and ui. + ''; + }; + + }; + + }; + + config = mkIf (ldmcfg.enable && cfg.enable) { + + services.xserver.displayManager.lightdm.greeters.gtk.enable = false; + + nixpkgs.config.lightdm-tiny-greeter.conf = + let + configHeader = '' + #include + static const char *user_text = "${cfg.label.user}"; + static const char *pass_text = "${cfg.label.pass}"; + static const char *session = "${dmcfg.defaultSession}"; + ''; + in + optionalString (cfg.extraConfig != "") + (configHeader + cfg.extraConfig); + + services.xserver.displayManager.lightdm.greeter = + mkDefault { + package = pkgs.lightdm-tiny-greeter.xgreeters; + name = "lightdm-tiny-greeter"; + }; + + assertions = [ + { + assertion = dmcfg.defaultSession != null; + message = '' + Please set: services.xserver.displayManager.defaultSession + ''; + } + ]; + + }; +} diff --git a/nixos/modules/services/x11/display-managers/lightdm.nix b/nixos/modules/services/x11/display-managers/lightdm.nix index f7face0adb7..479548863b4 100644 --- a/nixos/modules/services/x11/display-managers/lightdm.nix +++ b/nixos/modules/services/x11/display-managers/lightdm.nix @@ -69,6 +69,10 @@ let in { + meta = { + maintainers = with maintainers; [ worldofpeace ]; + }; + # Note: the order in which lightdm greeter modules are imported # here determines the default: later modules (if enable) are # preferred. @@ -77,6 +81,7 @@ in ./lightdm-greeters/mini.nix ./lightdm-greeters/enso-os.nix ./lightdm-greeters/pantheon.nix + ./lightdm-greeters/tiny.nix ]; options = { diff --git a/nixos/modules/services/x11/extra-layouts.nix b/nixos/modules/services/x11/extra-layouts.nix index 1af98a1318b..f48216ff446 100644 --- a/nixos/modules/services/x11/extra-layouts.nix +++ b/nixos/modules/services/x11/extra-layouts.nix @@ -141,7 +141,7 @@ in }); xkbcomp = super.xorg.xkbcomp.overrideAttrs (old: { - configureFlags = "--with-xkb-config-root=${self.xkb_patched}/share/X11/xkb"; + configureFlags = [ "--with-xkb-config-root=${self.xkb_patched}/share/X11/xkb" ]; }); }; @@ -158,6 +158,12 @@ in }); + environment.sessionVariables = { + # runtime override supported by multiple libraries e. g. libxkbcommon + # https://xkbcommon.org/doc/current/group__include-path.html + XKB_CONFIG_ROOT = "${pkgs.xkb_patched}/etc/X11/xkb"; + }; + services.xserver = { xkbDir = "${pkgs.xkb_patched}/etc/X11/xkb"; exportConfiguration = config.services.xserver.displayManager.startx.enable; diff --git a/nixos/modules/services/x11/hardware/libinput.nix b/nixos/modules/services/x11/hardware/libinput.nix index 71065dfc26b..9548ecb8ef6 100644 --- a/nixos/modules/services/x11/hardware/libinput.nix +++ b/nixos/modules/services/x11/hardware/libinput.nix @@ -184,7 +184,11 @@ in { '' Option "DragLockButtons" "L1 B1 L2 B2" ''; - description = "Additional options for libinput touchpad driver."; + description = '' + Additional options for libinput touchpad driver. See + libinput4 + for available options."; + ''; }; }; @@ -198,12 +202,13 @@ in { environment.systemPackages = [ pkgs.xorg.xf86inputlibinput ]; - environment.etc = [ - (let cfgPath = "X11/xorg.conf.d/40-libinput.conf"; in { - source = pkgs.xorg.xf86inputlibinput.out + "/share/" + cfgPath; - target = cfgPath; - }) - ]; + environment.etc = + let cfgPath = "X11/xorg.conf.d/40-libinput.conf"; + in { + ${cfgPath} = { + source = pkgs.xorg.xf86inputlibinput.out + "/share/" + cfgPath; + }; + }; services.udev.packages = [ pkgs.libinput.out ]; diff --git a/nixos/modules/services/x11/hardware/multitouch.nix b/nixos/modules/services/x11/hardware/multitouch.nix deleted file mode 100644 index c03bb3b494f..00000000000 --- a/nixos/modules/services/x11/hardware/multitouch.nix +++ /dev/null @@ -1,94 +0,0 @@ -{ config, lib, pkgs, ... }: - -with lib; - -let cfg = config.services.xserver.multitouch; - disabledTapConfig = '' - Option "MaxTapTime" "0" - Option "MaxTapMove" "0" - Option "TapButton1" "0" - Option "TapButton2" "0" - Option "TapButton3" "0" - ''; -in { - - options = { - - services.xserver.multitouch = { - - enable = mkOption { - default = false; - description = "Whether to enable multitouch touchpad support."; - }; - - invertScroll = mkOption { - default = false; - type = types.bool; - description = "Whether to invert scrolling direction à la OSX Lion"; - }; - - ignorePalm = mkOption { - default = false; - type = types.bool; - description = "Whether to ignore touches detected as being the palm (i.e when typing)"; - }; - - tapButtons = mkOption { - type = types.bool; - default = true; - description = "Whether to enable tap buttons."; - }; - - buttonsMap = mkOption { - type = types.listOf types.int; - default = [3 2 0]; - example = [1 3 2]; - description = "Remap touchpad buttons."; - apply = map toString; - }; - - additionalOptions = mkOption { - type = types.str; - default = ""; - example = '' - Option "ScaleDistance" "50" - Option "RotateDistance" "60" - ''; - description = '' - Additional options for mtrack touchpad driver. - ''; - }; - - }; - - }; - - config = mkIf cfg.enable { - - services.xserver.modules = [ pkgs.xf86_input_mtrack ]; - - services.xserver.config = - '' - # Automatically enable the multitouch driver - Section "InputClass" - MatchIsTouchpad "on" - Identifier "Touchpads" - Driver "mtrack" - Option "IgnorePalm" "${boolToString cfg.ignorePalm}" - Option "ClickFinger1" "${builtins.elemAt cfg.buttonsMap 0}" - Option "ClickFinger2" "${builtins.elemAt cfg.buttonsMap 1}" - Option "ClickFinger3" "${builtins.elemAt cfg.buttonsMap 2}" - ${optionalString (!cfg.tapButtons) disabledTapConfig} - ${optionalString cfg.invertScroll '' - Option "ScrollUpButton" "5" - Option "ScrollDownButton" "4" - Option "ScrollLeftButton" "7" - Option "ScrollRightButton" "6" - ''} - ${cfg.additionalOptions} - EndSection - ''; - - }; - -} diff --git a/nixos/modules/services/x11/compton.nix b/nixos/modules/services/x11/picom.nix similarity index 89% rename from nixos/modules/services/x11/compton.nix rename to nixos/modules/services/x11/picom.nix index 61174672e2d..e3bd21be73e 100644 --- a/nixos/modules/services/x11/compton.nix +++ b/nixos/modules/services/x11/picom.nix @@ -5,7 +5,7 @@ with builtins; let - cfg = config.services.compton; + cfg = config.services.picom; pairOf = x: with types; addCheck (listOf x) (y: length y == 2); @@ -31,20 +31,24 @@ let (key: value: "${toString key}=${mkValueString value};") v) + " }" - else abort "compton.mkValueString: unexpected type (v = ${v})"; + else abort "picom.mkValueString: unexpected type (v = ${v})"; in "${escape [ sep ] k}${sep}${mkValueString v};") attrs); - configFile = pkgs.writeText "compton.conf" (toConf cfg.settings); + configFile = pkgs.writeText "picom.conf" (toConf cfg.settings); in { - options.services.compton = { + imports = [ + (mkAliasOptionModule [ "services" "compton" ] [ "services" "picom" ]) + ]; + + options.services.picom = { enable = mkOption { type = types.bool; default = false; description = '' - Whether of not to enable Compton as the X.org composite manager. + Whether of not to enable Picom as the X.org composite manager. ''; }; @@ -85,7 +89,7 @@ in { ]; description = '' List of conditions of windows that should not be faded. - See compton(1) man page for more examples. + See picom(1) man page for more examples. ''; }; @@ -125,7 +129,7 @@ in { ]; description = '' List of conditions of windows that should have no shadow. - See compton(1) man page for more examples. + See picom(1) man page for more examples. ''; }; @@ -192,7 +196,7 @@ in { apply = x: let res = x != "none"; - msg = "The type of services.compton.vSync has changed to bool:" + msg = "The type of services.picom.vSync has changed to bool:" + " interpreting ${x} as ${boolToString res}"; in if isBool x then x @@ -222,13 +226,13 @@ in { type = loaOf (types.either configTypes (loaOf (types.either configTypes (loaOf configTypes)))); default = {}; description = '' - Additional Compton configuration. + Additional Picom configuration. ''; }; }; config = mkIf cfg.enable { - services.compton.settings = let + services.picom.settings = let # Hard conversion to float, literally lib.toInt but toFloat toFloat = str: let may_be_float = builtins.fromJSON str; @@ -264,8 +268,8 @@ in { refresh-rate = mkDefault cfg.refreshRate; }; - systemd.user.services.compton = { - description = "Compton composite manager"; + systemd.user.services.picom = { + description = "Picom composite manager"; wantedBy = [ "graphical-session.target" ]; partOf = [ "graphical-session.target" ]; @@ -275,13 +279,13 @@ in { }; serviceConfig = { - ExecStart = "${pkgs.compton}/bin/compton --config ${configFile}"; + ExecStart = "${pkgs.picom}/bin/picom --config ${configFile}"; RestartSec = 3; Restart = "always"; }; }; - environment.systemPackages = [ pkgs.compton ]; + environment.systemPackages = [ pkgs.picom ]; }; meta.maintainers = with lib.maintainers; [ rnhmjoj ]; diff --git a/nixos/modules/services/x11/unclutter.nix b/nixos/modules/services/x11/unclutter.nix index 2478aaabb79..56e30c79d1f 100644 --- a/nixos/modules/services/x11/unclutter.nix +++ b/nixos/modules/services/x11/unclutter.nix @@ -32,7 +32,7 @@ in { default = 1; }; - threeshold = mkOption { + threshold = mkOption { description = "Minimum number of pixels considered cursor movement"; type = types.int; default = 1; @@ -61,7 +61,7 @@ in { serviceConfig.ExecStart = '' ${cfg.package}/bin/unclutter \ -idle ${toString cfg.timeout} \ - -jitter ${toString (cfg.threeshold - 1)} \ + -jitter ${toString (cfg.threshold - 1)} \ ${optionalString cfg.keystroke "-keystroke"} \ ${concatMapStrings (x: " -"+x) cfg.extraOptions} \ -not ${concatStringsSep " " cfg.excluded} \ @@ -72,6 +72,11 @@ in { }; }; + imports = [ + (mkRenamedOptionModule [ "services" "unclutter" "threeshold" ] + [ "services" "unclutter" "threshold" ]) + ]; + meta.maintainers = with lib.maintainers; [ rnhmjoj ]; } diff --git a/nixos/modules/services/x11/urxvtd.nix b/nixos/modules/services/x11/urxvtd.nix index 9bfcfa9b065..867ac38a944 100644 --- a/nixos/modules/services/x11/urxvtd.nix +++ b/nixos/modules/services/x11/urxvtd.nix @@ -18,10 +18,10 @@ in { }; package = mkOption { - default = pkgs.rxvt_unicode-with-plugins; - defaultText = "pkgs.rxvt_unicode-with-plugins"; + default = pkgs.rxvt-unicode; + defaultText = "pkgs.rxvt-unicode"; description = '' - Package to install. Usually pkgs.rxvt_unicode-with-plugins or pkgs.rxvt_unicode + Package to install. Usually pkgs.rxvt-unicode. ''; type = types.package; }; diff --git a/nixos/modules/services/x11/xserver.nix b/nixos/modules/services/x11/xserver.nix index 1f6ee7cfffd..6aec1c0753a 100644 --- a/nixos/modules/services/x11/xserver.nix +++ b/nixos/modules/services/x11/xserver.nix @@ -331,9 +331,9 @@ in }; xkbOptions = mkOption { - type = types.str; + type = types.commas; default = "terminate:ctrl_alt_bksp"; - example = "grp:caps_toggle, grp_led:scroll"; + example = "grp:caps_toggle,grp_led:scroll"; description = '' X keyboard options; layout switching goes here. ''; @@ -556,8 +556,7 @@ in services.xserver.displayManager.lightdm.enable = let dmconf = cfg.displayManager; - default = !( dmconf.auto.enable - || dmconf.gdm.enable + default = !(dmconf.gdm.enable || dmconf.sddm.enable || dmconf.xpra.enable ); in mkIf (default) true; @@ -574,7 +573,7 @@ in then { modules = [xorg.${"xf86video" + name}]; } else null) knownVideoDrivers; - in optional (driver != null) ({ inherit name; modules = []; driverName = name; } // driver)); + in optional (driver != null) ({ inherit name; modules = []; driverName = name; display = true; } // driver)); assertions = [ { assertion = config.security.polkit.enable; @@ -590,19 +589,15 @@ in ]; environment.etc = - (optionals cfg.exportConfiguration - [ { source = "${configFile}"; - target = "X11/xorg.conf"; - } - # -xkbdir command line option does not seems to be passed to xkbcomp. - { source = "${cfg.xkbDir}"; - target = "X11/xkb"; - } - ]) - # localectl looks into 00-keyboard.conf - ++ [ + (optionalAttrs cfg.exportConfiguration { - text = '' + "X11/xorg.conf".source = "${configFile}"; + # -xkbdir command line option does not seems to be passed to xkbcomp. + "X11/xkb".source = "${cfg.xkbDir}"; + }) + # localectl looks into 00-keyboard.conf + //{ + "X11/xorg.conf.d/00-keyboard.conf".text = '' Section "InputClass" Identifier "Keyboard catchall" MatchIsKeyboard "on" @@ -612,16 +607,12 @@ in Option "XkbVariant" "${cfg.xkbVariant}" EndSection ''; - target = "X11/xorg.conf.d/00-keyboard.conf"; } - ] # Needed since 1.18; see https://bugs.freedesktop.org/show_bug.cgi?id=89023#c5 - ++ (let cfgPath = "/X11/xorg.conf.d/10-evdev.conf"; in - [{ - source = xorg.xf86inputevdev.out + "/share" + cfgPath; - target = cfgPath; - }] - ); + // (let cfgPath = "/X11/xorg.conf.d/10-evdev.conf"; in + { + ${cfgPath}.source = xorg.xf86inputevdev.out + "/share" + cfgPath; + }); environment.systemPackages = [ xorg.xorgserver.out @@ -660,8 +651,7 @@ in systemd.services.display-manager = { description = "X11 Server"; - after = [ "systemd-udev-settle.service" "acpid.service" "systemd-logind.service" ]; - wants = [ "systemd-udev-settle.service" ]; + after = [ "acpid.service" "systemd-logind.service" ]; restartIfChanged = false; @@ -749,7 +739,7 @@ in ${cfg.serverLayoutSection} # Reference the Screen sections for each driver. This will # cause the X server to try each in turn. - ${flip concatMapStrings cfg.drivers (d: '' + ${flip concatMapStrings (filter (d: d.display) cfg.drivers) (d: '' Screen "Screen-${d.name}[0]" '')} EndSection @@ -773,42 +763,44 @@ in ${driver.deviceSection or ""} ${xrandrDeviceSection} EndSection + ${optionalString driver.display '' - Section "Screen" - Identifier "Screen-${driver.name}[0]" - Device "Device-${driver.name}[0]" - ${optionalString (cfg.monitorSection != "") '' - Monitor "Monitor[0]" - ''} + Section "Screen" + Identifier "Screen-${driver.name}[0]" + Device "Device-${driver.name}[0]" + ${optionalString (cfg.monitorSection != "") '' + Monitor "Monitor[0]" + ''} - ${cfg.screenSection} - ${driver.screenSection or ""} + ${cfg.screenSection} + ${driver.screenSection or ""} - ${optionalString (cfg.defaultDepth != 0) '' - DefaultDepth ${toString cfg.defaultDepth} - ''} + ${optionalString (cfg.defaultDepth != 0) '' + DefaultDepth ${toString cfg.defaultDepth} + ''} - ${optionalString - (driver.name != "virtualbox" && - (cfg.resolutions != [] || - cfg.extraDisplaySettings != "" || - cfg.virtualScreen != null)) - (let - f = depth: - '' - SubSection "Display" - Depth ${toString depth} - ${optionalString (cfg.resolutions != []) - "Modes ${concatMapStrings (res: ''"${toString res.x}x${toString res.y}"'') cfg.resolutions}"} - ${cfg.extraDisplaySettings} - ${optionalString (cfg.virtualScreen != null) - "Virtual ${toString cfg.virtualScreen.x} ${toString cfg.virtualScreen.y}"} - EndSubSection - ''; - in concatMapStrings f [8 16 24] - )} + ${optionalString + (driver.name != "virtualbox" && + (cfg.resolutions != [] || + cfg.extraDisplaySettings != "" || + cfg.virtualScreen != null)) + (let + f = depth: + '' + SubSection "Display" + Depth ${toString depth} + ${optionalString (cfg.resolutions != []) + "Modes ${concatMapStrings (res: ''"${toString res.x}x${toString res.y}"'') cfg.resolutions}"} + ${cfg.extraDisplaySettings} + ${optionalString (cfg.virtualScreen != null) + "Virtual ${toString cfg.virtualScreen.x} ${toString cfg.virtualScreen.y}"} + EndSubSection + ''; + in concatMapStrings f [8 16 24] + )} - EndSection + EndSection + ''} '')} ${xrandrMonitorSections} diff --git a/nixos/modules/system/activation/no-clone.nix b/nixos/modules/system/activation/no-clone.nix index 7f458443526..912420347dc 100644 --- a/nixos/modules/system/activation/no-clone.nix +++ b/nixos/modules/system/activation/no-clone.nix @@ -4,6 +4,5 @@ with lib; { boot.loader.grub.device = mkOverride 0 "nodev"; - nesting.children = mkOverride 0 []; - nesting.clone = mkOverride 0 []; + specialisation = mkOverride 0 {}; } diff --git a/nixos/modules/system/activation/switch-to-configuration.pl b/nixos/modules/system/activation/switch-to-configuration.pl index 641cf9faadc..b82d69b3bb8 100644 --- a/nixos/modules/system/activation/switch-to-configuration.pl +++ b/nixos/modules/system/activation/switch-to-configuration.pl @@ -183,7 +183,7 @@ while (my ($unit, $state) = each %{$activePrev}) { # active after the system has resumed, which probably # should not be the case. Just ignore it. if ($unit ne "suspend.target" && $unit ne "hibernate.target" && $unit ne "hybrid-sleep.target") { - unless (boolIsTrue($unitInfo->{'RefuseManualStart'} // "no")) { + unless (boolIsTrue($unitInfo->{'RefuseManualStart'} // "no") || boolIsTrue($unitInfo->{'X-OnlyManualStart'} // "no")) { $unitsToStart{$unit} = 1; recordUnit($startListFile, $unit); # Don't spam the user with target units that always get started. @@ -222,7 +222,7 @@ while (my ($unit, $state) = each %{$activePrev}) { $unitsToReload{$unit} = 1; recordUnit($reloadListFile, $unit); } - elsif (!boolIsTrue($unitInfo->{'X-RestartIfChanged'} // "yes") || boolIsTrue($unitInfo->{'RefuseManualStop'} // "no") ) { + elsif (!boolIsTrue($unitInfo->{'X-RestartIfChanged'} // "yes") || boolIsTrue($unitInfo->{'RefuseManualStop'} // "no") || boolIsTrue($unitInfo->{'X-OnlyManualStart'} // "no")) { $unitsToSkip{$unit} = 1; } else { if (!boolIsTrue($unitInfo->{'X-StopIfChanged'} // "yes")) { diff --git a/nixos/modules/system/activation/top-level.nix b/nixos/modules/system/activation/top-level.nix index f67d2900561..f6739977fa4 100644 --- a/nixos/modules/system/activation/top-level.nix +++ b/nixos/modules/system/activation/top-level.nix @@ -11,20 +11,16 @@ let # you can provide an easy way to boot the same configuration # as you use, but with another kernel # !!! fix this - cloner = inheritParent: list: - map (childConfig: + children = mapAttrs (childName: childConfig: (import ../../../lib/eval-config.nix { inherit baseModules; + system = config.nixpkgs.initialSystem; modules = - (optionals inheritParent modules) + (optionals childConfig.inheritParentConfig modules) ++ [ ./no-clone.nix ] - ++ [ childConfig ]; + ++ [ childConfig.configuration ]; }).config.system.build.toplevel - ) list; - - children = - cloner false config.nesting.children - ++ cloner true config.nesting.clone; + ) config.specialisation; systemBuilder = let @@ -74,14 +70,11 @@ let echo -n "$configurationName" > $out/configuration-name echo -n "systemd ${toString config.systemd.package.interfaceVersion}" > $out/init-interface-version echo -n "$nixosLabel" > $out/nixos-version - echo -n "${pkgs.stdenv.hostPlatform.system}" > $out/system + echo -n "${config.boot.kernelPackages.stdenv.hostPlatform.system}" > $out/system - mkdir $out/fine-tune - childCount=0 - for i in $children; do - childCount=$(( childCount + 1 )) - ln -s $i $out/fine-tune/child-$childCount - done + mkdir $out/specialisation + ${concatStringsSep "\n" + (mapAttrsToList (name: path: "ln -s ${path} $out/specialisation/${name}") children)} mkdir $out/bin export localeArchive="${config.i18n.glibcLocales}/lib/locale/locale-archive" @@ -111,7 +104,6 @@ let shell = "${pkgs.bash}/bin/sh"; su = "${pkgs.shadow.su}/bin/su"; - inherit children; kernelParams = config.boot.kernelParams; installBootLoader = config.system.build.installBootLoader @@ -142,6 +134,11 @@ let in { + imports = [ + (mkRemovedOptionModule [ "nesting" "clone" ] "Use `specialisation.«name» = { inheritParentConfig = true; configuration = { ... }; }` instead.") + (mkRemovedOptionModule [ "nesting" "children" ] "Use `specialisation.«name».configuration = { ... }` instead.") + ]; + options = { system.build = mkOption { @@ -153,26 +150,35 @@ in ''; }; - nesting.children = mkOption { - default = []; + specialisation = mkOption { + default = {}; + example = lib.literalExample "{ fewJobsManyCores.configuration = { nix.buildCores = 0; nix.maxJobs = 1; }; }"; description = '' - Additional configurations to build. - ''; - }; + Additional configurations to build. If + inheritParentConfig is true, the system + will be based on the overall system configuration. - nesting.clone = mkOption { - default = []; - description = '' - Additional configurations to build based on the current - configuration which then has a lower priority. - - To switch to a cloned configuration (e.g. child-1) - at runtime, run + To switch to a specialised configuration + (e.g. fewJobsManyCores) at runtime, run: - # sudo /run/current-system/fine-tune/child-1/bin/switch-to-configuration test + # sudo /run/current-system/specialisation/fewJobsManyCores/bin/switch-to-configuration test ''; + type = types.attrsOf (types.submodule ( + { ... }: { + options.inheritParentConfig = mkOption { + type = types.bool; + default = true; + description = "Include the entire system's configuration. Set to false to make a completely differently configured system."; + }; + + options.configuration = mkOption { + default = {}; + description = "Arbitrary NixOS configuration options."; + }; + }) + ); }; system.boot.loader.id = mkOption { diff --git a/nixos/modules/system/boot/initrd-network.nix b/nixos/modules/system/boot/initrd-network.nix index cb8fc957a99..0ab6e626b34 100644 --- a/nixos/modules/system/boot/initrd-network.nix +++ b/nixos/modules/system/boot/initrd-network.nix @@ -6,7 +6,11 @@ let cfg = config.boot.initrd.network; - dhcpinterfaces = lib.attrNames (lib.filterAttrs (iface: v: v.useDHCP == true) (config.networking.interfaces or {})); + dhcpInterfaces = lib.attrNames (lib.filterAttrs (iface: v: v.useDHCP == true) (config.networking.interfaces or {})); + doDhcp = config.networking.useDHCP || dhcpInterfaces != []; + dhcpIfShellExpr = if config.networking.useDHCP + then "$(ls /sys/class/net/ | grep -v ^lo$)" + else lib.concatMapStringsSep " " lib.escapeShellArg dhcpInterfaces; udhcpcScript = pkgs.writeScript "udhcp-script" '' @@ -62,6 +66,16 @@ in ''; }; + boot.initrd.network.flushBeforeStage2 = mkOption { + type = types.bool; + default = true; + description = '' + Whether to clear the configuration of the interfaces that were set up in + the initrd right before stage 2 takes over. Stage 2 will do the regular network + configuration based on the NixOS networking options. + ''; + }; + boot.initrd.network.udhcpc.extraArgs = mkOption { default = []; type = types.listOf types.str; @@ -89,49 +103,45 @@ in boot.initrd.kernelModules = [ "af_packet" ]; boot.initrd.extraUtilsCommands = '' - copy_bin_and_libs ${pkgs.mkinitcpio-nfs-utils}/bin/ipconfig + copy_bin_and_libs ${pkgs.klibc}/lib/klibc/bin.static/ipconfig ''; boot.initrd.preLVMCommands = mkBefore ( # Search for interface definitions in command line. '' + ifaces="" for o in $(cat /proc/cmdline); do case $o in ip=*) - ipconfig $o && hasNetwork=1 + ipconfig $o && ifaces="$ifaces $(echo $o | cut -d: -f6)" ;; esac done '' # Otherwise, use DHCP. - + optionalString (config.networking.useDHCP || dhcpinterfaces != []) '' - if [ -z "$hasNetwork" ]; then + + optionalString doDhcp '' + # Bring up all interfaces. + for iface in ${dhcpIfShellExpr}; do + echo "bringing up network interface $iface..." + ip link set "$iface" up && ifaces="$ifaces $iface" + done - # Bring up all interfaces. - for iface in $(ls /sys/class/net/); do - echo "bringing up network interface $iface..." - ip link set "$iface" up - done - - # Acquire DHCP leases. - for iface in ${ if config.networking.useDHCP then - "$(ls /sys/class/net/ | grep -v ^lo$)" - else - lib.concatMapStringsSep " " lib.escapeShellArg dhcpinterfaces - }; do - echo "acquiring IP address via DHCP on $iface..." - udhcpc --quit --now -i $iface -O staticroutes --script ${udhcpcScript} ${udhcpcArgs} && hasNetwork=1 - done - fi + # Acquire DHCP leases. + for iface in ${dhcpIfShellExpr}; do + echo "acquiring IP address via DHCP on $iface..." + udhcpc --quit --now -i $iface -O staticroutes --script ${udhcpcScript} ${udhcpcArgs} + done '' - + '' - if [ -n "$hasNetwork" ]; then - echo "networking is up!" - ${cfg.postCommands} - fi - ''); + + cfg.postCommands); + + boot.initrd.postMountCommands = mkIf cfg.flushBeforeStage2 '' + for iface in $ifaces; do + ip address flush "$iface" + ip link down "$iface" + done + ''; }; diff --git a/nixos/modules/system/boot/initrd-ssh.nix b/nixos/modules/system/boot/initrd-ssh.nix index 2d3e3b05c98..60760487a1d 100644 --- a/nixos/modules/system/boot/initrd-ssh.nix +++ b/nixos/modules/system/boot/initrd-ssh.nix @@ -10,19 +10,21 @@ in { - options = { - - boot.initrd.network.ssh.enable = mkOption { + options.boot.initrd.network.ssh = { + enable = mkOption { type = types.bool; default = false; description = '' Start SSH service during initrd boot. It can be used to debug failing boot on a remote server, enter pasphrase for an encrypted partition etc. Service is killed when stage-1 boot is finished. + + The sshd configuration is largely inherited from + . ''; }; - boot.initrd.network.ssh.port = mkOption { + port = mkOption { type = types.int; default = 22; description = '' @@ -30,7 +32,7 @@ in ''; }; - boot.initrd.network.ssh.shell = mkOption { + shell = mkOption { type = types.str; default = "/bin/ash"; description = '' @@ -38,95 +40,163 @@ in ''; }; - boot.initrd.network.ssh.hostRSAKey = mkOption { - type = types.nullOr types.path; - default = null; + hostKeys = mkOption { + type = types.listOf (types.either types.str types.path); + default = []; + example = [ + "/etc/secrets/initrd/ssh_host_rsa_key" + "/etc/secrets/initrd/ssh_host_ed25519_key" + ]; description = '' - RSA SSH private key file in the Dropbear format. + Specify SSH host keys to import into the initrd. - WARNING: Unless your bootloader supports initrd secrets, this key is - contained insecurely in the global Nix store. Do NOT use your regular - SSH host private keys for this purpose or you'll expose them to - regular users! + To generate keys, use + ssh-keygen1: + + + # ssh-keygen -t rsa -N "" -f /etc/secrets/initrd/ssh_host_rsa_key + # ssh-keygen -t ed25519 -N "" -f /etc/secrets/initrd/ssh_host_ed25519_key + + + + + Unless your bootloader supports initrd secrets, these keys + are stored insecurely in the global Nix store. Do NOT use + your regular SSH host private keys for this purpose or + you'll expose them to regular users! + + + Additionally, even if your initrd supports secrets, if + you're using initrd SSH to unlock an encrypted disk then + using your regular host keys exposes the private keys on + your unencrypted boot partition. + + ''; }; - boot.initrd.network.ssh.hostDSSKey = mkOption { - type = types.nullOr types.path; - default = null; - description = '' - DSS SSH private key file in the Dropbear format. - - WARNING: Unless your bootloader supports initrd secrets, this key is - contained insecurely in the global Nix store. Do NOT use your regular - SSH host private keys for this purpose or you'll expose them to - regular users! - ''; - }; - - boot.initrd.network.ssh.hostECDSAKey = mkOption { - type = types.nullOr types.path; - default = null; - description = '' - ECDSA SSH private key file in the Dropbear format. - - WARNING: Unless your bootloader supports initrd secrets, this key is - contained insecurely in the global Nix store. Do NOT use your regular - SSH host private keys for this purpose or you'll expose them to - regular users! - ''; - }; - - boot.initrd.network.ssh.authorizedKeys = mkOption { + authorizedKeys = mkOption { type = types.listOf types.str; default = config.users.users.root.openssh.authorizedKeys.keys; + defaultText = "config.users.users.root.openssh.authorizedKeys.keys"; description = '' Authorized keys for the root user on initrd. - Note that Dropbear doesn't support OpenSSH's Ed25519 key type. ''; }; - }; - config = mkIf (config.boot.initrd.network.enable && cfg.enable) { + imports = + map (opt: mkRemovedOptionModule ([ "boot" "initrd" "network" "ssh" ] ++ [ opt ]) '' + The initrd SSH functionality now uses OpenSSH rather than Dropbear. + + If you want to keep your existing initrd SSH host keys, convert them with + $ dropbearconvert dropbear openssh dropbear_host_$type_key ssh_host_$type_key + and then set options.boot.initrd.network.ssh.hostKeys. + '') [ "hostRSAKey" "hostDSSKey" "hostECDSAKey" ]; + + config = let + # Nix complains if you include a store hash in initrd path names, so + # as an awful hack we drop the first character of the hash. + initrdKeyPath = path: if isString path + then path + else let name = builtins.baseNameOf path; in + builtins.unsafeDiscardStringContext ("/etc/ssh/" + + substring 1 (stringLength name) name); + + sshdCfg = config.services.openssh; + + sshdConfig = '' + Port ${toString cfg.port} + + PasswordAuthentication no + ChallengeResponseAuthentication no + + ${flip concatMapStrings cfg.hostKeys (path: '' + HostKey ${initrdKeyPath path} + '')} + + KexAlgorithms ${concatStringsSep "," sshdCfg.kexAlgorithms} + Ciphers ${concatStringsSep "," sshdCfg.ciphers} + MACs ${concatStringsSep "," sshdCfg.macs} + + LogLevel ${sshdCfg.logLevel} + + ${if sshdCfg.useDns then '' + UseDNS yes + '' else '' + UseDNS no + ''} + ''; + in mkIf (config.boot.initrd.network.enable && cfg.enable) { assertions = [ - { assertion = cfg.authorizedKeys != []; + { + assertion = cfg.authorizedKeys != []; message = "You should specify at least one authorized key for initrd SSH"; } + + { + assertion = cfg.hostKeys != []; + message = '' + You must now pre-generate the host keys for initrd SSH. + See the boot.initrd.network.ssh.hostKeys documentation + for instructions. + ''; + } ]; boot.initrd.extraUtilsCommands = '' - copy_bin_and_libs ${pkgs.dropbear}/bin/dropbear + copy_bin_and_libs ${pkgs.openssh}/bin/sshd cp -pv ${pkgs.glibc.out}/lib/libnss_files.so.* $out/lib ''; boot.initrd.extraUtilsCommandsTest = '' - $out/bin/dropbear -V + # sshd requires a host key to check config, so we pass in the test's + echo -n ${escapeShellArg sshdConfig} | + $out/bin/sshd -t -f /dev/stdin \ + -h ${../../../tests/initrd-network-ssh/ssh_host_ed25519_key} ''; boot.initrd.network.postCommands = '' echo '${cfg.shell}' > /etc/shells echo 'root:x:0:0:root:/root:${cfg.shell}' > /etc/passwd + echo 'sshd:x:1:1:sshd:/var/empty:/bin/nologin' >> /etc/passwd echo 'passwd: files' > /etc/nsswitch.conf - mkdir -p /var/log + mkdir -p /var/log /var/empty touch /var/log/lastlog - mkdir -p /etc/dropbear + mkdir -p /etc/ssh + echo -n ${escapeShellArg sshdConfig} > /etc/ssh/sshd_config + + echo "export PATH=$PATH" >> /etc/profile + echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH" >> /etc/profile mkdir -p /root/.ssh ${concatStrings (map (key: '' echo ${escapeShellArg key} >> /root/.ssh/authorized_keys '') cfg.authorizedKeys)} - dropbear -s -j -k -E -p ${toString cfg.port} ${optionalString (cfg.hostRSAKey == null && cfg.hostDSSKey == null && cfg.hostECDSAKey == null) "-R"} + ${flip concatMapStrings cfg.hostKeys (path: '' + # keys from Nix store are world-readable, which sshd doesn't like + chmod 0600 "${initrdKeyPath path}" + '')} + + /bin/sshd -e ''; - boot.initrd.secrets = - (optionalAttrs (cfg.hostRSAKey != null) { "/etc/dropbear/dropbear_rsa_host_key" = cfg.hostRSAKey; }) // - (optionalAttrs (cfg.hostDSSKey != null) { "/etc/dropbear/dropbear_dss_host_key" = cfg.hostDSSKey; }) // - (optionalAttrs (cfg.hostECDSAKey != null) { "/etc/dropbear/dropbear_ecdsa_host_key" = cfg.hostECDSAKey; }); + boot.initrd.postMountCommands = '' + # Stop sshd cleanly before stage 2. + # + # If you want to keep it around to debug post-mount SSH issues, + # run `touch /.keep_sshd` (either from an SSH session or in + # another initrd hook like preDeviceCommands). + if ! [ -e /.keep_sshd ]; then + pkill -x sshd + fi + ''; + boot.initrd.secrets = listToAttrs + (map (path: nameValuePair (initrdKeyPath path) path) cfg.hostKeys); }; } diff --git a/nixos/modules/system/boot/kernel.nix b/nixos/modules/system/boot/kernel.nix index 8a309f3bc5f..43871f439f7 100644 --- a/nixos/modules/system/boot/kernel.nix +++ b/nixos/modules/system/boot/kernel.nix @@ -101,7 +101,12 @@ in type = types.bool; default = false; description = '' - Whether to activate VESA video mode on boot. + (Deprecated) This option, if set, activates the VESA 800x600 video + mode on boot and disables kernel modesetting. It is equivalent to + specifying [ "vga=0x317" "nomodeset" ] in the + option. This option is + deprecated as of 2020: Xorg now works better with modesetting, and + you might want a different VESA vga setting, anyway. ''; }; @@ -187,140 +192,144 @@ in ###### implementation - config = mkIf (!config.boot.isContainer) { + config = mkMerge + [ (mkIf config.boot.initrd.enable { + boot.initrd.availableKernelModules = + [ # Note: most of these (especially the SATA/PATA modules) + # shouldn't be included by default since nixos-generate-config + # detects them, but I'm keeping them for now for backwards + # compatibility. - system.build = { inherit kernel; }; + # Some SATA/PATA stuff. + "ahci" + "sata_nv" + "sata_via" + "sata_sis" + "sata_uli" + "ata_piix" + "pata_marvell" - system.modulesTree = [ kernel ] ++ config.boot.extraModulePackages; + # Standard SCSI stuff. + "sd_mod" + "sr_mod" - # Implement consoleLogLevel both in early boot and using sysctl - # (so you don't need to reboot to have changes take effect). - boot.kernelParams = - [ "loglevel=${toString config.boot.consoleLogLevel}" ] ++ - optionals config.boot.vesa [ "vga=0x317" "nomodeset" ]; + # SD cards and internal eMMC drives. + "mmc_block" - boot.kernel.sysctl."kernel.printk" = mkDefault config.boot.consoleLogLevel; + # Support USB keyboards, in case the boot fails and we only have + # a USB keyboard, or for LUKS passphrase prompt. + "uhci_hcd" + "ehci_hcd" + "ehci_pci" + "ohci_hcd" + "ohci_pci" + "xhci_hcd" + "xhci_pci" + "usbhid" + "hid_generic" "hid_lenovo" "hid_apple" "hid_roccat" + "hid_logitech_hidpp" "hid_logitech_dj" - boot.kernelModules = [ "loop" "atkbd" ]; + ] ++ optionals (pkgs.stdenv.isi686 || pkgs.stdenv.isx86_64) [ + # Misc. x86 keyboard stuff. + "pcips2" "atkbd" "i8042" - boot.initrd.availableKernelModules = - [ # Note: most of these (especially the SATA/PATA modules) - # shouldn't be included by default since nixos-generate-config - # detects them, but I'm keeping them for now for backwards - # compatibility. + # x86 RTC needed by the stage 2 init script. + "rtc_cmos" + ]; - # Some SATA/PATA stuff. - "ahci" - "sata_nv" - "sata_via" - "sata_sis" - "sata_uli" - "ata_piix" - "pata_marvell" + boot.initrd.kernelModules = + [ # For LVM. + "dm_mod" + ]; + }) - # Standard SCSI stuff. - "sd_mod" - "sr_mod" + (mkIf (!config.boot.isContainer) { + system.build = { inherit kernel; }; - # SD cards and internal eMMC drives. - "mmc_block" + system.modulesTree = [ kernel ] ++ config.boot.extraModulePackages; - # Support USB keyboards, in case the boot fails and we only have - # a USB keyboard, or for LUKS passphrase prompt. - "uhci_hcd" - "ehci_hcd" - "ehci_pci" - "ohci_hcd" - "ohci_pci" - "xhci_hcd" - "xhci_pci" - "usbhid" - "hid_generic" "hid_lenovo" "hid_apple" "hid_roccat" - "hid_logitech_hidpp" "hid_logitech_dj" + # Implement consoleLogLevel both in early boot and using sysctl + # (so you don't need to reboot to have changes take effect). + boot.kernelParams = + [ "loglevel=${toString config.boot.consoleLogLevel}" ] ++ + optionals config.boot.vesa [ "vga=0x317" "nomodeset" ]; - ] ++ optionals (pkgs.stdenv.isi686 || pkgs.stdenv.isx86_64) [ - # Misc. x86 keyboard stuff. - "pcips2" "atkbd" "i8042" + boot.kernel.sysctl."kernel.printk" = mkDefault config.boot.consoleLogLevel; - # x86 RTC needed by the stage 2 init script. - "rtc_cmos" - ]; + boot.kernelModules = [ "loop" "atkbd" ]; - boot.initrd.kernelModules = - [ # For LVM. - "dm_mod" - ]; + # The Linux kernel >= 2.6.27 provides firmware. + hardware.firmware = [ kernel ]; - # The Linux kernel >= 2.6.27 provides firmware. - hardware.firmware = [ kernel ]; - - # Create /etc/modules-load.d/nixos.conf, which is read by - # systemd-modules-load.service to load required kernel modules. - environment.etc = singleton - { target = "modules-load.d/nixos.conf"; - source = kernelModulesConf; - }; - - systemd.services.systemd-modules-load = - { wantedBy = [ "multi-user.target" ]; - restartTriggers = [ kernelModulesConf ]; - serviceConfig = - { # Ignore failed module loads. Typically some of the - # modules in ‘boot.kernelModules’ are "nice to have but - # not required" (e.g. acpi-cpufreq), so we don't want to - # barf on those. - SuccessExitStatus = "0 1"; + # Create /etc/modules-load.d/nixos.conf, which is read by + # systemd-modules-load.service to load required kernel modules. + environment.etc = + { "modules-load.d/nixos.conf".source = kernelModulesConf; }; - }; - lib.kernelConfig = { - isYes = option: { - assertion = config: config.isYes option; - message = "CONFIG_${option} is not yes!"; - configLine = "CONFIG_${option}=y"; - }; + systemd.services.systemd-modules-load = + { wantedBy = [ "multi-user.target" ]; + restartTriggers = [ kernelModulesConf ]; + serviceConfig = + { # Ignore failed module loads. Typically some of the + # modules in ‘boot.kernelModules’ are "nice to have but + # not required" (e.g. acpi-cpufreq), so we don't want to + # barf on those. + SuccessExitStatus = "0 1"; + }; + }; - isNo = option: { - assertion = config: config.isNo option; - message = "CONFIG_${option} is not no!"; - configLine = "CONFIG_${option}=n"; - }; + lib.kernelConfig = { + isYes = option: { + assertion = config: config.isYes option; + message = "CONFIG_${option} is not yes!"; + configLine = "CONFIG_${option}=y"; + }; - isModule = option: { - assertion = config: config.isModule option; - message = "CONFIG_${option} is not built as a module!"; - configLine = "CONFIG_${option}=m"; - }; + isNo = option: { + assertion = config: config.isNo option; + message = "CONFIG_${option} is not no!"; + configLine = "CONFIG_${option}=n"; + }; - ### Usually you will just want to use these two - # True if yes or module - isEnabled = option: { - assertion = config: config.isEnabled option; - message = "CONFIG_${option} is not enabled!"; - configLine = "CONFIG_${option}=y"; - }; + isModule = option: { + assertion = config: config.isModule option; + message = "CONFIG_${option} is not built as a module!"; + configLine = "CONFIG_${option}=m"; + }; - # True if no or omitted - isDisabled = option: { - assertion = config: config.isDisabled option; - message = "CONFIG_${option} is not disabled!"; - configLine = "CONFIG_${option}=n"; - }; - }; + ### Usually you will just want to use these two + # True if yes or module + isEnabled = option: { + assertion = config: config.isEnabled option; + message = "CONFIG_${option} is not enabled!"; + configLine = "CONFIG_${option}=y"; + }; - # The config options that all modules can depend upon - system.requiredKernelConfig = with config.lib.kernelConfig; [ - # !!! Should this really be needed? - (isYes "MODULES") - (isYes "BINFMT_ELF") - ] ++ (optional (randstructSeed != "") (isYes "GCC_PLUGIN_RANDSTRUCT")); + # True if no or omitted + isDisabled = option: { + assertion = config: config.isDisabled option; + message = "CONFIG_${option} is not disabled!"; + configLine = "CONFIG_${option}=n"; + }; + }; - # nixpkgs kernels are assumed to have all required features - assertions = if config.boot.kernelPackages.kernel ? features then [] else - let cfg = config.boot.kernelPackages.kernel.config; in map (attrs: - { assertion = attrs.assertion cfg; inherit (attrs) message; } - ) config.system.requiredKernelConfig; + # The config options that all modules can depend upon + system.requiredKernelConfig = with config.lib.kernelConfig; + [ + # !!! Should this really be needed? + (isYes "MODULES") + (isYes "BINFMT_ELF") + ] ++ (optional (randstructSeed != "") (isYes "GCC_PLUGIN_RANDSTRUCT")); - }; + # nixpkgs kernels are assumed to have all required features + assertions = if config.boot.kernelPackages.kernel ? features then [] else + let cfg = config.boot.kernelPackages.kernel.config; in map (attrs: + { assertion = attrs.assertion cfg; inherit (attrs) message; } + ) config.system.requiredKernelConfig; + + }) + + ]; } diff --git a/nixos/modules/system/boot/loader/grub/grub.nix b/nixos/modules/system/boot/loader/grub/grub.nix index 9a4db84f7b7..c775632a4aa 100644 --- a/nixos/modules/system/boot/loader/grub/grub.nix +++ b/nixos/modules/system/boot/loader/grub/grub.nix @@ -224,7 +224,11 @@ in extraConfig = mkOption { default = ""; - example = "serial; terminal_output.serial"; + example = '' + serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1 + terminal_input --append serial + terminal_output --append serial + ''; type = types.lines; description = '' Additional GRUB commands inserted in the configuration file @@ -584,7 +588,7 @@ in { boot.loader.grub.splashImage = mkDefault ( if cfg.version == 1 then pkgs.fetchurl { - url = http://www.gnome-look.org/CONTENT/content-files/36909-soft-tux.xpm.gz; + url = "http://www.gnome-look.org/CONTENT/content-files/36909-soft-tux.xpm.gz"; sha256 = "14kqdx2lfqvh40h6fjjzqgff1mwk74dmbjvmqphi6azzra7z8d59"; } # GRUB 1.97 doesn't support gzipped XPMs. @@ -630,7 +634,7 @@ in boot.loader.grub.extraPrepareConfig = concatStrings (mapAttrsToList (n: v: '' - ${pkgs.coreutils}/bin/cp -pf "${v}" "/boot/${n}" + ${pkgs.coreutils}/bin/cp -pf "${v}" "@bootPath@/${n}" '') config.boot.loader.grub.extraFiles); assertions = [ diff --git a/nixos/modules/system/boot/loader/grub/install-grub.pl b/nixos/modules/system/boot/loader/grub/install-grub.pl index a09c5dc4761..8df18cbd901 100644 --- a/nixos/modules/system/boot/loader/grub/install-grub.pl +++ b/nixos/modules/system/boot/loader/grub/install-grub.pl @@ -409,7 +409,7 @@ $conf .= "$extraEntries\n" unless $extraEntriesBeforeNixOS; # Find all the children of the current default configuration # Do not search for grand children -my @links = sort (glob "$defaultConfig/fine-tune/*"); +my @links = sort (glob "$defaultConfig/specialisation/*"); foreach my $link (@links) { my $entryName = ""; @@ -425,7 +425,8 @@ foreach my $link (@links) { if ($cfgName) { $entryName = $cfgName; } else { - $entryName = "($date - $version)"; + my $linkname = basename($link); + $entryName = "($linkname - $date - $version)"; } addEntry("NixOS - $entryName", $link); } @@ -475,6 +476,9 @@ if ($grubVersion == 2) { } } +# extraPrepareConfig could refer to @bootPath@, which we have to substitute +$extraPrepareConfig =~ s/\@bootPath\@/$bootPath/g; + # Run extraPrepareConfig in sh if ($extraPrepareConfig ne "") { system((get("shell"), "-c", $extraPrepareConfig)); diff --git a/nixos/modules/system/boot/loader/grub/memtest.nix b/nixos/modules/system/boot/loader/grub/memtest.nix index 94e5a14174b..71e50dd0577 100644 --- a/nixos/modules/system/boot/loader/grub/memtest.nix +++ b/nixos/modules/system/boot/loader/grub/memtest.nix @@ -1,4 +1,4 @@ -# This module adds Memtest86+ to the GRUB boot menu. +# This module adds Memtest86+/Memtest86 to the GRUB boot menu. { config, lib, pkgs, ... }: @@ -6,6 +6,7 @@ with lib; let memtest86 = pkgs.memtest86plus; + efiSupport = config.boot.loader.grub.efiSupport; cfg = config.boot.loader.grub.memtest86; in @@ -18,8 +19,11 @@ in default = false; type = types.bool; description = '' - Make Memtest86+, a memory testing program, available from the - GRUB boot menu. + Make Memtest86+ (or MemTest86 if EFI support is enabled), + a memory testing program, available from the + GRUB boot menu. MemTest86 is an unfree program, so + this requires allowUnfree to be set to + true. ''; }; @@ -75,19 +79,38 @@ in }; }; - config = mkIf cfg.enable { + config = mkMerge [ + (mkIf (cfg.enable && efiSupport) { + assertions = [ + { + assertion = cfg.params == []; + message = "Parameters are not available for MemTest86"; + } + ]; - boot.loader.grub.extraEntries = - if config.boot.loader.grub.version == 2 then - '' - menuentry "Memtest86+" { - linux16 @bootRoot@/memtest.bin ${toString cfg.params} - } - '' - else - throw "Memtest86+ is not supported with GRUB 1."; + boot.loader.grub.extraFiles = { + "memtest86.efi" = "${pkgs.memtest86-efi}/BOOTX64.efi"; + }; - boot.loader.grub.extraFiles."memtest.bin" = "${memtest86}/memtest.bin"; + boot.loader.grub.extraEntries = '' + menuentry "Memtest86" { + chainloader /memtest86.efi + } + ''; + }) - }; + (mkIf (cfg.enable && !efiSupport) { + boot.loader.grub.extraEntries = + if config.boot.loader.grub.version == 2 then + '' + menuentry "Memtest86+" { + linux16 @bootRoot@/memtest.bin ${toString cfg.params} + } + '' + else + throw "Memtest86+ is not supported with GRUB 1."; + + boot.loader.grub.extraFiles."memtest.bin" = "${memtest86}/memtest.bin"; + }) + ]; } diff --git a/nixos/modules/system/boot/loader/init-script/init-script-builder.sh b/nixos/modules/system/boot/loader/init-script/init-script-builder.sh index 08d4ab14c9c..6f48d2539ac 100644 --- a/nixos/modules/system/boot/loader/init-script/init-script-builder.sh +++ b/nixos/modules/system/boot/loader/init-script/init-script-builder.sh @@ -69,7 +69,7 @@ addEntry "NixOS - Default" $defaultConfig "" # Add all generations of the system profile to the menu, in reverse # (most recent to least recent) order. -for link in $((ls -d $defaultConfig/fine-tune/* ) | sort -n); do +for link in $((ls -d $defaultConfig/specialisation/* ) | sort -n); do date=$(stat --printf="%y\n" $link | sed 's/\..*//') addEntry "NixOS - variation" $link "" done diff --git a/nixos/modules/system/boot/luksroot.nix b/nixos/modules/system/boot/luksroot.nix index 0bb8396a44f..31f1e22cda3 100644 --- a/nixos/modules/system/boot/luksroot.nix +++ b/nixos/modules/system/boot/luksroot.nix @@ -4,6 +4,7 @@ with lib; let luks = config.boot.initrd.luks; + kernelPackages = config.boot.kernelPackages; commonFunctions = '' die() { @@ -139,7 +140,7 @@ let umount /crypt-ramfs 2>/dev/null ''; - openCommand = name': { name, device, header, keyFile, keyFileSize, keyFileOffset, allowDiscards, yubikey, gpgCard, fallbackToPassword, ... }: assert name' == name; + openCommand = name': { name, device, header, keyFile, keyFileSize, keyFileOffset, allowDiscards, yubikey, gpgCard, fido2, fallbackToPassword, ... }: assert name' == name; let csopen = "cryptsetup luksOpen ${device} ${name} ${optionalString allowDiscards "--allow-discards"} ${optionalString (header != null) "--header=${header}"}"; cschange = "cryptsetup luksChangeKey ${device} ${optionalString (header != null) "--header=${header}"}"; @@ -387,7 +388,31 @@ let } ''} - ${if (luks.yubikeySupport && (yubikey != null)) || (luks.gpgSupport && (gpgCard != null)) then '' + ${optionalString (luks.fido2Support && (fido2.credential != null)) '' + + open_with_hardware() { + local passsphrase + + ${if fido2.passwordLess then '' + export passphrase="" + '' else '' + read -rsp "FIDO2 salt for ${device}: " passphrase + echo + ''} + ${optionalString (lib.versionOlder kernelPackages.kernel.version "5.4") '' + echo "On systems with Linux Kernel < 5.4, it might take a while to initialize the CRNG, you might want to use linuxPackages_latest." + echo "Please move your mouse to create needed randomness." + ''} + echo "Waiting for your FIDO2 device..." + fido2luks -i open ${device} ${name} ${fido2.credential} --await-dev ${toString fido2.gracePeriod} --salt string:$passphrase + if [ $? -ne 0 ]; then + echo "No FIDO2 key found, falling back to normal open procedure" + open_normally + fi + } + ''} + + ${if (luks.yubikeySupport && (yubikey != null)) || (luks.gpgSupport && (gpgCard != null)) || (luks.fido2Support && (fido2.credential != null)) then '' open_with_hardware '' else '' open_normally @@ -608,6 +633,31 @@ in }); }; + fido2 = { + credential = mkOption { + default = null; + example = "f1d00200d8dc783f7fb1e10ace8da27f8312d72692abfca2f7e4960a73f48e82e1f7571f6ebfcee9fb434f9886ccc8fcc52a6614d8d2"; + type = types.str; + description = "The FIDO2 credential ID."; + }; + + gracePeriod = mkOption { + default = 10; + type = types.int; + description = "Time in seconds to wait for the FIDO2 key."; + }; + + passwordLess = mkOption { + default = false; + type = types.bool; + description = '' + Defines whatever to use an empty string as a default salt. + + Enable only when your device is PIN protected, such as Trezor. + ''; + }; + }; + yubikey = mkOption { default = null; description = '' @@ -706,6 +756,15 @@ in and a Yubikey to work with this feature. ''; }; + + boot.initrd.luks.fido2Support = mkOption { + default = false; + type = types.bool; + description = '' + Enables support for authenticating with FIDO2 devices. + ''; + }; + }; config = mkIf (luks.devices != {} || luks.forceLuksSupportInInitrd) { @@ -714,6 +773,14 @@ in [ { assertion = !(luks.gpgSupport && luks.yubikeySupport); message = "Yubikey and GPG Card may not be used at the same time."; } + + { assertion = !(luks.gpgSupport && luks.fido2Support); + message = "FIDO2 and GPG Card may not be used at the same time."; + } + + { assertion = !(luks.fido2Support && luks.yubikeySupport); + message = "FIDO2 and Yubikey may not be used at the same time."; + } ]; # actually, sbp2 driver is the one enabling the DMA attack, but this needs to be tested @@ -753,6 +820,11 @@ in chmod +x $out/bin/openssl-wrap ''} + ${optionalString luks.fido2Support '' + copy_bin_and_libs ${pkgs.fido2luks}/bin/fido2luks + ''} + + ${optionalString luks.gpgSupport '' copy_bin_and_libs ${pkgs.gnupg}/bin/gpg copy_bin_and_libs ${pkgs.gnupg}/bin/gpg-agent @@ -783,6 +855,9 @@ in $out/bin/gpg-agent --version $out/bin/scdaemon --version ''} + ${optionalString luks.fido2Support '' + $out/bin/fido2luks --version + ''} ''; boot.initrd.preFailCommands = postCommands; diff --git a/nixos/modules/system/boot/networkd.nix b/nixos/modules/system/boot/networkd.nix index 58d914d0810..3078f84f6e9 100644 --- a/nixos/modules/system/boot/networkd.nix +++ b/nixos/modules/system/boot/networkd.nix @@ -49,12 +49,17 @@ let (assertValueOneOf "Kind" [ "bond" "bridge" "dummy" "gre" "gretap" "ip6gre" "ip6tnl" "ip6gretap" "ipip" "ipvlan" "macvlan" "macvtap" "sit" "tap" "tun" "veth" "vlan" "vti" "vti6" - "vxlan" "geneve" "vrf" "vcan" "vxcan" "wireguard" "netdevsim" + "vxlan" "geneve" "vrf" "vcan" "vxcan" "wireguard" "netdevsim" "xfrm" ]) (assertByteFormat "MTUBytes") (assertMacAddress "MACAddress") ]; + checkVRF = checkUnitConfig "VRF" [ + (assertOnlyFields [ "Table" ]) + (assertMinimum "Table" 0) + ]; + # NOTE The PrivateKey directive is missing on purpose here, please # do not add it to this list. The nix store is world-readable let's # refrain ourselves from providing a footgun. @@ -62,7 +67,12 @@ let (assertOnlyFields [ "PrivateKeyFile" "ListenPort" "FwMark" ]) - (assertRange "FwMark" 1 4294967295) + # The following check won't work on nix <= 2.2 + # see https://github.com/NixOS/nix/pull/2378 + # + # Add this again when we'll have drop the + # nix < 2.2 support. + # (assertRange "FwMark" 1 4294967295) ]; # NOTE The PresharedKey directive is missing on purpose here, please @@ -172,6 +182,19 @@ let (assertValueOneOf "AllSlavesActive" boolValues) ]; + checkXfrm = checkUnitConfig "Xfrm" [ + (assertOnlyFields [ + "InterfaceId" "Independent" + ]) + # The following check won't work on nix <= 2.2 + # see https://github.com/NixOS/nix/pull/2378 + # + # Add this again when we'll have drop the + # nix < 2.2 support. + # (assertRange "InterfaceId" 1 4294967295) + (assertValueOneOf "Independent" boolValues) + ]; + checkNetwork = checkUnitConfig "Network" [ (assertOnlyFields [ "Description" "DHCP" "DHCPServer" "LinkLocalAddressing" "IPv4LLRoute" @@ -182,7 +205,7 @@ let "IPv6HopLimit" "IPv4ProxyARP" "IPv6ProxyNDP" "IPv6ProxyNDPAddress" "IPv6PrefixDelegation" "IPv6MTUBytes" "Bridge" "Bond" "VRF" "VLAN" "IPVLAN" "MACVLAN" "VXLAN" "Tunnel" "ActiveSlave" "PrimarySlave" - "ConfigureWithoutCarrier" + "ConfigureWithoutCarrier" "Xfrm" ]) # Note: For DHCP the values both, none, v4, v6 are deprecated (assertValueOneOf "DHCP" ["yes" "no" "ipv4" "ipv6" "both" "none" "v4" "v6"]) @@ -222,6 +245,26 @@ let (assertValueOneOf "AutoJoin" boolValues) ]; + checkRoutingPolicyRule = checkUnitConfig "RoutingPolicyRule" [ + (assertOnlyFields [ + "TypeOfService" "From" "To" "FirewallMark" "Table" "Priority" + "IncomingInterface" "OutgoingInterface" "SourcePort" "DestinationPort" + "IPProtocol" "InvertRule" "Family" + ]) + (assertRange "TypeOfService" 0 255) + # The following check won't work on nix <= 2.2 + # see https://github.com/NixOS/nix/pull/2378 + # + # Add this again when we'll have drop the + # nix < 2.2 support. + # (assertRange "FirewallMark" 1 4294967295) + (assertInt "Priority") + (assertPort "SourcePort") + (assertPort "DestinationPort") + (assertValueOneOf "InvertRule" boolValues) + (assertValueOneOf "Family" ["ipv4" "ipv6" "both"]) + ]; + checkRoute = checkUnitConfig "Route" [ (assertOnlyFields [ "Gateway" "GatewayOnLink" "Destination" "Source" "Metric" @@ -312,6 +355,14 @@ let }; linkOptions = commonNetworkOptions // { + # overwrite enable option from above + enable = mkOption { + default = true; + type = types.bool; + description = '' + Whether to enable this .link unit. It's handled by udev no matter if systemd-networkd is enabled or not + ''; + }; linkConfig = mkOption { default = {}; @@ -341,6 +392,21 @@ let ''; }; + vrfConfig = mkOption { + default = {}; + example = { Table = 2342; }; + type = types.addCheck (types.attrsOf unitOption) checkVRF; + description = '' + Each attribute in this set specifies an option in the + [VRF] section of the unit. See + systemd.netdev + 5 for details. + A detailed explanation about how VRFs work can be found in the + kernel + docs. + ''; + }; + wireguardConfig = mkOption { default = {}; example = { @@ -477,6 +543,18 @@ let ''; }; + xfrmConfig = mkOption { + default = {}; + example = { InterfaceId = 1; }; + type = types.addCheck (types.attrsOf unitOption) checkXfrm; + description = '' + Each attribute in this set specifies an option in the + [Xfrm] section of the unit. See + systemd.netdev + 5 for details. + ''; + }; + }; addressOptions = { @@ -495,6 +573,22 @@ let }; }; + routingPolicyRulesOptions = { + options = { + routingPolicyRuleConfig = mkOption { + default = { }; + example = { routingPolicyRuleConfig = { Table = 10; IncomingInterface = "eth1"; Family = "both"; } ;}; + type = types.addCheck (types.attrsOf unitOption) checkRoutingPolicyRule; + description = '' + Each attribute in this set specifies an option in the + [RoutingPolicyRule] section of the unit. See + systemd.network + 5 for details. + ''; + }; + }; + }; + routeOptions = { options = { routeConfig = mkOption { @@ -712,6 +806,16 @@ let ''; }; + xfrm = mkOption { + default = [ ]; + type = types.listOf types.str; + description = '' + A list of xfrm interfaces to be added to the network section of the + unit. See systemd.network + 5 for details. + ''; + }; + addresses = mkOption { default = [ ]; type = with types; listOf (submodule addressOptions); @@ -722,6 +826,16 @@ let ''; }; + routingPolicyRules = mkOption { + default = [ ]; + type = with types; listOf (submodule routingPolicyRulesOptions); + description = '' + A list of routing policy rules sections to be added to the unit. See + systemd.network + 5 for details. + ''; + }; + routes = mkOption { default = [ ]; type = with types; listOf (submodule routeOptions); @@ -809,6 +923,16 @@ let [Bond] ${attrsToSection def.bondConfig} + ''} + ${optionalString (def.xfrmConfig != { }) '' + [Xfrm] + ${attrsToSection def.xfrmConfig} + + ''} + ${optionalString (def.vrfConfig != { }) '' + [VRF] + ${attrsToSection def.vrfConfig} + ''} ${optionalString (def.wireguardConfig != { }) '' [WireGuard] @@ -847,6 +971,7 @@ let ${concatStringsSep "\n" (map (s: "MACVLAN=${s}") def.macvlan)} ${concatStringsSep "\n" (map (s: "VXLAN=${s}") def.vxlan)} ${concatStringsSep "\n" (map (s: "Tunnel=${s}") def.tunnel)} + ${concatStringsSep "\n" (map (s: "Xfrm=${s}") def.xfrm)} ${optionalString (def.dhcpConfig != { }) '' [DHCP] @@ -867,15 +992,20 @@ let [Route] ${attrsToSection x.routeConfig} + '')} + ${flip concatMapStrings def.routingPolicyRules (x: '' + [RoutingPolicyRule] + ${attrsToSection x.routingPolicyRuleConfig} + '')} ${def.extraConfig} ''; }; - unitFiles = map (name: { - target = "systemd/network/${name}"; - source = "${cfg.units.${name}.unit}/${name}"; - }) (attrNames cfg.units); + unitFiles = listToAttrs (map (name: { + name = "systemd/network/${name}"; + value.source = "${cfg.units.${name}.unit}/${name}"; + }) (attrNames cfg.units)); in { @@ -911,9 +1041,10 @@ in systemd.network.units = mkOption { description = "Definition of networkd units."; default = {}; + internal = true; type = with types; attrsOf (submodule ( { name, config, ... }: - { options = concreteUnitOptions; + { options = mapAttrs (_: x: x // { internal = true; }) concreteUnitOptions; config = { unit = mkDefault (makeUnit name config); }; @@ -922,44 +1053,49 @@ in }; - config = mkIf config.systemd.network.enable { + config = mkMerge [ + # .link units are honored by udev, no matter if systemd-networkd is enabled or not. + { + systemd.network.units = mapAttrs' (n: v: nameValuePair "${n}.link" (linkToUnit n v)) cfg.links; + environment.etc = unitFiles; + } - users.users.systemd-network.group = "systemd-network"; + (mkIf config.systemd.network.enable { - systemd.additionalUpstreamSystemUnits = [ - "systemd-networkd.service" "systemd-networkd-wait-online.service" - ]; + users.users.systemd-network.group = "systemd-network"; - systemd.network.units = mapAttrs' (n: v: nameValuePair "${n}.link" (linkToUnit n v)) cfg.links - // mapAttrs' (n: v: nameValuePair "${n}.netdev" (netdevToUnit n v)) cfg.netdevs - // mapAttrs' (n: v: nameValuePair "${n}.network" (networkToUnit n v)) cfg.networks; + systemd.additionalUpstreamSystemUnits = [ + "systemd-networkd.service" "systemd-networkd-wait-online.service" + ]; - environment.etc = unitFiles; + systemd.network.units = mapAttrs' (n: v: nameValuePair "${n}.netdev" (netdevToUnit n v)) cfg.netdevs + // mapAttrs' (n: v: nameValuePair "${n}.network" (networkToUnit n v)) cfg.networks; - systemd.services.systemd-networkd = { - wantedBy = [ "multi-user.target" ]; - restartTriggers = map (f: f.source) (unitFiles); - # prevent race condition with interface renaming (#39069) - requires = [ "systemd-udev-settle.service" ]; - after = [ "systemd-udev-settle.service" ]; - }; - - systemd.services.systemd-networkd-wait-online = { - wantedBy = [ "network-online.target" ]; - }; - - systemd.services."systemd-network-wait-online@" = { - description = "Wait for Network Interface %I to be Configured"; - conflicts = [ "shutdown.target" ]; - requisite = [ "systemd-networkd.service" ]; - after = [ "systemd-networkd.service" ]; - serviceConfig = { - Type = "oneshot"; - RemainAfterExit = true; - ExecStart = "${config.systemd.package}/lib/systemd/systemd-networkd-wait-online -i %I"; + systemd.services.systemd-networkd = { + wantedBy = [ "multi-user.target" ]; + restartTriggers = attrNames unitFiles; + # prevent race condition with interface renaming (#39069) + requires = [ "systemd-udev-settle.service" ]; + after = [ "systemd-udev-settle.service" ]; }; - }; - services.resolved.enable = mkDefault true; - }; + systemd.services.systemd-networkd-wait-online = { + wantedBy = [ "network-online.target" ]; + }; + + systemd.services."systemd-network-wait-online@" = { + description = "Wait for Network Interface %I to be Configured"; + conflicts = [ "shutdown.target" ]; + requisite = [ "systemd-networkd.service" ]; + after = [ "systemd-networkd.service" ]; + serviceConfig = { + Type = "oneshot"; + RemainAfterExit = true; + ExecStart = "${config.systemd.package}/lib/systemd/systemd-networkd-wait-online -i %I"; + }; + }; + + services.resolved.enable = mkDefault true; + }) + ]; } diff --git a/nixos/modules/system/boot/stage-1-init.sh b/nixos/modules/system/boot/stage-1-init.sh index f520bf54ad1..607aec87f01 100644 --- a/nixos/modules/system/boot/stage-1-init.sh +++ b/nixos/modules/system/boot/stage-1-init.sh @@ -210,6 +210,8 @@ done # Create device nodes in /dev. @preDeviceCommands@ echo "running udev..." +mkdir -p /etc/systemd +ln -sfn @linkUnits@ /etc/systemd/network mkdir -p /etc/udev ln -sfn @udevRules@ /etc/udev/rules.d mkdir -p /dev/.mdadm @@ -266,7 +268,7 @@ checkFS() { return 0 fi - # Device might be already mounted manually + # Device might be already mounted manually # e.g. NBD-device or the host filesystem of the file which contains encrypted root fs if mount | grep -q "^$device on "; then echo "skip checking already mounted $device" @@ -334,8 +336,10 @@ mountFS() { # Filter out x- options, which busybox doesn't do yet. local optionsFiltered="$(IFS=,; for i in $options; do if [ "${i:0:2}" != "x-" ]; then echo -n $i,; fi; done)" + # Prefix (lower|upper|work)dir with /mnt-root (overlayfs) + local optionsPrefixed="$( echo "$optionsFiltered" | sed -E 's#\<(lowerdir|upperdir|workdir)=#\1=/mnt-root#g' )" - echo "$device /mnt-root$mountPoint $fsType $optionsFiltered" >> /etc/fstab + echo "$device /mnt-root$mountPoint $fsType $optionsPrefixed" >> /etc/fstab checkFS "$device" "$fsType" @@ -349,15 +353,16 @@ mountFS() { elif [ "$fsType" = f2fs ]; then echo "resizing $device..." fsck.f2fs -fp "$device" - resize.f2fs "$device" + resize.f2fs "$device" fi ;; esac - # Create backing directories for unionfs-fuse. - if [ "$fsType" = unionfs-fuse ]; then - for i in $(IFS=:; echo ${options##*,dirs=}); do - mkdir -m 0700 -p /mnt-root"${i%=*}" + # Create backing directories for overlayfs + if [ "$fsType" = overlay ]; then + for i in upper work; do + dir="$( echo "$optionsPrefixed" | grep -o "${i}dir=[^,]*" )" + mkdir -m 0700 -p "${dir##*=}" done fi diff --git a/nixos/modules/system/boot/stage-1.nix b/nixos/modules/system/boot/stage-1.nix index 4c2d130d5a5..dfd158e2d75 100644 --- a/nixos/modules/system/boot/stage-1.nix +++ b/nixos/modules/system/boot/stage-1.nix @@ -120,6 +120,7 @@ let # Copy udev. copy_bin_and_libs ${udev}/lib/systemd/systemd-udevd + copy_bin_and_libs ${udev}/lib/systemd/systemd-sysctl copy_bin_and_libs ${udev}/bin/udevadm for BIN in ${udev}/lib/udev/*_id; do copy_bin_and_libs $BIN @@ -136,12 +137,17 @@ let ''} # Copy secrets if needed. + # + # TODO: move out to a separate script; see #85000. ${optionalString (!config.boot.loader.supportsInitrdSecrets) (concatStringsSep "\n" (mapAttrsToList (dest: source: let source' = if source == null then dest else source; in '' mkdir -p $(dirname "$out/secrets/${dest}") - cp -a ${source'} "$out/secrets/${dest}" + # Some programs (e.g. ssh) doesn't like secrets to be + # symlinks, so we use `cp -L` here to match the + # behaviour when secrets are natively supported. + cp -Lr ${source'} "$out/secrets/${dest}" '' ) config.boot.initrd.secrets)) } @@ -198,6 +204,14 @@ let ''; # */ + linkUnits = pkgs.runCommand "link-units" { + allowedReferences = [ extraUtils ]; + preferLocalBuild = true; + } '' + mkdir -p $out + cp -v ${udev}/lib/systemd/network/*.link $out/ + ''; + udevRules = pkgs.runCommand "udev-rules" { allowedReferences = [ extraUtils ]; preferLocalBuild = true; @@ -208,7 +222,9 @@ let cp -v ${udev}/lib/udev/rules.d/60-cdrom_id.rules $out/ cp -v ${udev}/lib/udev/rules.d/60-persistent-storage.rules $out/ + cp -v ${udev}/lib/udev/rules.d/75-net-description.rules $out/ cp -v ${udev}/lib/udev/rules.d/80-drivers.rules $out/ + cp -v ${udev}/lib/udev/rules.d/80-net-setup-link.rules $out/ cp -v ${pkgs.lvm2}/lib/udev/rules.d/*.rules $out/ ${config.boot.initrd.extraUdevRulesCommands} @@ -222,7 +238,7 @@ let --replace ${pkgs.lvm2}/sbin ${extraUtils}/bin \ --replace ${pkgs.mdadm}/sbin ${extraUtils}/sbin \ --replace ${pkgs.bash}/bin/sh ${extraUtils}/bin/sh \ - --replace ${udev}/bin/udevadm ${extraUtils}/bin/udevadm + --replace ${udev} ${extraUtils} done # Work around a bug in QEMU, which doesn't implement the "READ @@ -257,7 +273,7 @@ let ${pkgs.buildPackages.busybox}/bin/ash -n $target ''; - inherit udevRules extraUtils modulesClosure; + inherit linkUnits udevRules extraUtils modulesClosure; inherit (config.boot) resumeDevice; @@ -379,6 +395,17 @@ in ''; }; + boot.initrd.enable = mkOption { + type = types.bool; + default = !config.boot.isContainer; + defaultText = "!config.boot.isContainer"; + description = '' + Whether to enable the NixOS initial RAM disk (initrd). This may be + needed to perform some initialisation tasks (like mounting + network/encrypted file systems) before continuing the boot process. + ''; + }; + boot.initrd.prepend = mkOption { default = [ ]; type = types.listOf types.str; @@ -544,7 +571,7 @@ in }; - config = mkIf (!config.boot.isContainer) { + config = mkIf config.boot.initrd.enable { assertions = [ { assertion = any (fs: fs.mountPoint == "/") fileSystems; message = "The ‘fileSystems’ option does not specify your root file system."; @@ -554,6 +581,25 @@ in message = "boot.resumeDevice has to be an absolute path." + " Old \"x:y\" style is no longer supported."; } + # TODO: remove when #85000 is fixed + { assertion = !config.boot.loader.supportsInitrdSecrets -> + all (source: + builtins.isPath source || + (builtins.isString source && hasPrefix source builtins.storeDir)) + (attrValues config.boot.initrd.secrets); + message = '' + boot.loader.initrd.secrets values must be unquoted paths when + using a bootloader that doesn't natively support initrd + secrets, e.g.: + + boot.initrd.secrets = { + "/etc/secret" = /path/to/secret; + }; + + Note that this will result in all secrets being stored + world-readable in the Nix store! + ''; + } ]; system.build = diff --git a/nixos/modules/system/boot/systemd-lib.nix b/nixos/modules/system/boot/systemd-lib.nix index 28ad4f121bb..fa109394fed 100644 --- a/nixos/modules/system/boot/systemd-lib.nix +++ b/nixos/modules/system/boot/systemd-lib.nix @@ -59,6 +59,11 @@ in rec { optional (attr ? ${name} && ! isMacAddress attr.${name}) "Systemd ${group} field `${name}' must be a valid mac address."; + isPort = i: i >= 0 && i <= 65535; + + assertPort = name: group: attr: + optional (attr ? ${name} && ! isPort attr.${name}) + "Error on the systemd ${group} field `${name}': ${attr.name} is not a valid port number."; assertValueOneOf = name: values: group: attr: optional (attr ? ${name} && !elem attr.${name} values) @@ -109,7 +114,9 @@ in rec { (if isList value then value else [value])) as)); - generateUnits = type: units: upstreamUnits: upstreamWants: + generateUnits = generateUnits' true; + + generateUnits' = allowCollisions: type: units: upstreamUnits: upstreamWants: pkgs.runCommand "${type}-units" { preferLocalBuild = true; allowSubstitutes = false; @@ -147,7 +154,13 @@ in rec { done # Symlink all units provided listed in systemd.packages. - for i in ${toString cfg.packages}; do + packages="${toString cfg.packages}" + + # Filter duplicate directories + declare -A unique_packages + for k in $packages ; do unique_packages[$k]=1 ; done + + for i in ''${!unique_packages[@]}; do for fn in $i/etc/systemd/${type}/* $i/lib/systemd/${type}/*; do if ! [[ "$fn" =~ .wants$ ]]; then if [[ -d "$fn" ]]; then @@ -171,8 +184,13 @@ in rec { if [ "$(readlink -f $i/$fn)" = /dev/null ]; then ln -sfn /dev/null $out/$fn else - mkdir -p $out/$fn.d - ln -s $i/$fn $out/$fn.d/overrides.conf + ${if allowCollisions then '' + mkdir -p $out/$fn.d + ln -s $i/$fn $out/$fn.d/overrides.conf + '' else '' + echo "Found multiple derivations configuring $fn!" + exit 1 + ''} fi else ln -fs $i/$fn $out/ diff --git a/nixos/modules/system/boot/systemd-nspawn.nix b/nixos/modules/system/boot/systemd-nspawn.nix index 3ddd45b1348..06ea5ee49f7 100644 --- a/nixos/modules/system/boot/systemd-nspawn.nix +++ b/nixos/modules/system/boot/systemd-nspawn.nix @@ -116,7 +116,7 @@ in { in mkMerge [ (mkIf (cfg != {}) { - environment.etc."systemd/nspawn".source = mkIf (cfg != {}) (generateUnits "nspawn" units [] []); + environment.etc."systemd/nspawn".source = mkIf (cfg != {}) (generateUnits' false "nspawn" units [] []); }) { systemd.targets.multi-user.wants = [ "machines.target" ]; @@ -126,7 +126,7 @@ in { systemd.services."systemd-nspawn@".serviceConfig.ExecStart = [ "" # deliberately empty. signals systemd to override the ExecStart # Only difference between upstream is that we do not pass the -U flag - "${pkgs.systemd}/bin/systemd-nspawn --quiet --keep-unit --boot --link-journal=try-guest --network-veth --settings=override --machine=%i" + "${config.systemd.package}/bin/systemd-nspawn --quiet --keep-unit --boot --link-journal=try-guest --network-veth --settings=override --machine=%i" ]; } ]; diff --git a/nixos/modules/system/boot/systemd.nix b/nixos/modules/system/boot/systemd.nix index 7951dcc816a..7f207e6c7ef 100644 --- a/nixos/modules/system/boot/systemd.nix +++ b/nixos/modules/system/boot/systemd.nix @@ -240,7 +240,7 @@ let serviceConfig = { name, config, ... }: { config = mkMerge [ { # Default path for systemd services. Should be quite minimal. - path = + path = mkAfter [ pkgs.coreutils pkgs.findutils pkgs.gnugrep @@ -697,6 +697,16 @@ in ''; }; + systemd.sleep.extraConfig = mkOption { + default = ""; + type = types.lines; + example = "HibernateDelaySec=1h"; + description = '' + Extra config options for systemd sleep state logic. + See sleep.conf.d(5) man page for available options. + ''; + }; + systemd.user.extraConfig = mkOption { default = ""; type = types.lines; @@ -776,6 +786,18 @@ in ''; }; + systemd.suppressedSystemUnits = mkOption { + default = [ ]; + type = types.listOf types.str; + example = [ "systemd-backlight@.service" ]; + description = '' + A list of units to suppress when generating system systemd configuration directory. This has + priority over upstream units, , and + . The main purpose of this is to + suppress a upstream systemd unit with any modifications made to it by other NixOS modules. + ''; + }; + }; @@ -808,8 +830,11 @@ in done ${concatStrings (mapAttrsToList (exec: target: "ln -s ${target} $out/${exec};\n") links)} ''; + + enabledUpstreamSystemUnits = filter (n: ! elem n cfg.suppressedSystemUnits) upstreamSystemUnits; + enabledUnits = filterAttrs (n: v: ! elem n cfg.suppressedSystemUnits) cfg.units; in ({ - "systemd/system".source = generateUnits "system" cfg.units upstreamSystemUnits upstreamSystemWants; + "systemd/system".source = generateUnits "system" enabledUnits enabledUpstreamSystemUnits upstreamSystemWants; "systemd/user".source = generateUnits "user" cfg.user.units upstreamUserUnits []; @@ -817,7 +842,6 @@ in [Manager] ${optionalString config.systemd.enableCgroupAccounting '' DefaultCPUAccounting=yes - DefaultBlockIOAccounting=yes DefaultIOAccounting=yes DefaultBlockIOAccounting=yes DefaultIPAccounting=yes @@ -863,17 +887,22 @@ in "systemd/sleep.conf".text = '' [Sleep] + ${config.systemd.sleep.extraConfig} ''; # install provided sysctl snippets "sysctl.d/50-coredump.conf".source = "${systemd}/example/sysctl.d/50-coredump.conf"; "sysctl.d/50-default.conf".source = "${systemd}/example/sysctl.d/50-default.conf"; + "tmpfiles.d/home.conf".source = "${systemd}/example/tmpfiles.d/home.conf"; "tmpfiles.d/journal-nocow.conf".source = "${systemd}/example/tmpfiles.d/journal-nocow.conf"; + "tmpfiles.d/portables.conf".source = "${systemd}/example/tmpfiles.d/portables.conf"; "tmpfiles.d/static-nodes-permissions.conf".source = "${systemd}/example/tmpfiles.d/static-nodes-permissions.conf"; "tmpfiles.d/systemd.conf".source = "${systemd}/example/tmpfiles.d/systemd.conf"; + "tmpfiles.d/systemd-nologin.conf".source = "${systemd}/example/tmpfiles.d/systemd-nologin.conf"; "tmpfiles.d/systemd-nspawn.conf".source = "${systemd}/example/tmpfiles.d/systemd-nspawn.conf"; "tmpfiles.d/systemd-tmp.conf".source = "${systemd}/example/tmpfiles.d/systemd-tmp.conf"; + "tmpfiles.d/tmp.conf".source = "${systemd}/example/tmpfiles.d/tmp.conf"; "tmpfiles.d/var.conf".source = "${systemd}/example/tmpfiles.d/var.conf"; "tmpfiles.d/x11.conf".source = "${systemd}/example/tmpfiles.d/x11.conf"; diff --git a/nixos/modules/system/etc/etc.nix b/nixos/modules/system/etc/etc.nix index 57ade288096..1f4d54a1ae2 100644 --- a/nixos/modules/system/etc/etc.nix +++ b/nixos/modules/system/etc/etc.nix @@ -94,7 +94,7 @@ in default = 0; type = types.int; description = '' - UID of created file. Only takes affect when the file is + UID of created file. Only takes effect when the file is copied (that is, the mode is not 'symlink'). ''; }; @@ -103,7 +103,7 @@ in default = 0; type = types.int; description = '' - GID of created file. Only takes affect when the file is + GID of created file. Only takes effect when the file is copied (that is, the mode is not 'symlink'). ''; }; @@ -113,7 +113,7 @@ in type = types.str; description = '' User name of created file. - Only takes affect when the file is copied (that is, the mode is not 'symlink'). + Only takes effect when the file is copied (that is, the mode is not 'symlink'). Changing this option takes precedence over uid. ''; }; @@ -123,7 +123,7 @@ in type = types.str; description = '' Group name of created file. - Only takes affect when the file is copied (that is, the mode is not 'symlink'). + Only takes effect when the file is copied (that is, the mode is not 'symlink'). Changing this option takes precedence over gid. ''; }; diff --git a/nixos/modules/tasks/auto-upgrade.nix b/nixos/modules/tasks/auto-upgrade.nix index 7fe06699191..e70004e643e 100644 --- a/nixos/modules/tasks/auto-upgrade.nix +++ b/nixos/modules/tasks/auto-upgrade.nix @@ -24,7 +24,7 @@ let cfg = config.system.autoUpgrade; in channel = mkOption { type = types.nullOr types.str; default = null; - example = https://nixos.org/channels/nixos-14.12-small; + example = "https://nixos.org/channels/nixos-14.12-small"; description = '' The URI of the NixOS channel to use for automatic upgrades. By default, this is the channel set using @@ -63,6 +63,19 @@ let cfg = config.system.autoUpgrade; in ''; }; + randomizedDelaySec = mkOption { + default = "0"; + type = types.str; + example = "45min"; + description = '' + Add a randomized delay before each automatic upgrade. + The delay will be chozen between zero and this value. + This value must be a time span in the format specified by + systemd.time + 7 + ''; + }; + }; }; @@ -109,6 +122,8 @@ let cfg = config.system.autoUpgrade; in startAt = cfg.dates; }; + systemd.timers.nixos-upgrade.timerConfig.RandomizedDelaySec = cfg.randomizedDelaySec; + }; } diff --git a/nixos/modules/tasks/encrypted-devices.nix b/nixos/modules/tasks/encrypted-devices.nix index 2c9231f5523..bc0933f16fe 100644 --- a/nixos/modules/tasks/encrypted-devices.nix +++ b/nixos/modules/tasks/encrypted-devices.nix @@ -65,7 +65,7 @@ in boot.initrd = { luks = { devices = - map (dev: { name = dev.encrypted.label; device = dev.encrypted.blkDev; } ) keylessEncDevs; + builtins.listToAttrs (map (dev: { name = dev.encrypted.label; value = { device = dev.encrypted.blkDev; }; }) keylessEncDevs); forceLuksSupportInInitrd = true; }; postMountCommands = diff --git a/nixos/modules/tasks/filesystems.nix b/nixos/modules/tasks/filesystems.nix index 688c77cb22d..0ade74b957a 100644 --- a/nixos/modules/tasks/filesystems.nix +++ b/nixos/modules/tasks/filesystems.nix @@ -304,6 +304,11 @@ in in listToAttrs (map formatDevice (filter (fs: fs.autoFormat) fileSystems)); + systemd.tmpfiles.rules = [ + "d /run/keys 0750 root ${toString config.ids.gids.keys}" + "z /run/keys 0750 root ${toString config.ids.gids.keys}" + ]; + # Sync mount options with systemd's src/core/mount-setup.c: mount_table. boot.specialFileSystems = { "/proc" = { fsType = "proc"; options = [ "nosuid" "noexec" "nodev" ]; }; @@ -312,8 +317,8 @@ in "/dev/shm" = { fsType = "tmpfs"; options = [ "nosuid" "nodev" "strictatime" "mode=1777" "size=${config.boot.devShmSize}" ]; }; "/dev/pts" = { fsType = "devpts"; options = [ "nosuid" "noexec" "mode=620" "ptmxmode=0666" "gid=${toString config.ids.gids.tty}" ]; }; - # To hold secrets that shouldn't be written to disk (generally used for NixOps, harmless elsewhere) - "/run/keys" = { fsType = "ramfs"; options = [ "nosuid" "nodev" "mode=750" "gid=${toString config.ids.gids.keys}" ]; }; + # To hold secrets that shouldn't be written to disk + "/run/keys" = { fsType = "ramfs"; options = [ "nosuid" "nodev" "mode=750" ]; }; } // optionalAttrs (!config.boot.isContainer) { # systemd-nspawn populates /sys by itself, and remounting it causes all # kinds of weird issues (most noticeably, waiting for host disk device diff --git a/nixos/modules/tasks/filesystems/btrfs.nix b/nixos/modules/tasks/filesystems/btrfs.nix index 48be18c7102..f64493e1a3c 100644 --- a/nixos/modules/tasks/filesystems/btrfs.nix +++ b/nixos/modules/tasks/filesystems/btrfs.nix @@ -118,12 +118,17 @@ in fs' = utils.escapeSystemdPath fs; in nameValuePair "btrfs-scrub-${fs'}" { description = "btrfs scrub on ${fs}"; + # scrub prevents suspend2ram or proper shutdown + conflicts = [ "shutdown.target" "sleep.target" ]; + before = [ "shutdown.target" "sleep.target" ]; serviceConfig = { - Type = "oneshot"; + # simple and not oneshot, otherwise ExecStop is not used + Type = "simple"; Nice = 19; IOSchedulingClass = "idle"; ExecStart = "${pkgs.btrfs-progs}/bin/btrfs scrub start -B ${fs}"; + ExecStop = "${pkgs.btrfs-progs}/bin/btrfs scrub cancel ${fs}"; }; }; in listToAttrs (map scrubService cfgScrub.fileSystems); diff --git a/nixos/modules/tasks/filesystems/zfs.nix b/nixos/modules/tasks/filesystems/zfs.nix index d14ba98ec48..43347161a84 100644 --- a/nixos/modules/tasks/filesystems/zfs.nix +++ b/nixos/modules/tasks/filesystems/zfs.nix @@ -433,6 +433,7 @@ in services.zfs.zed.settings = { ZED_EMAIL_PROG = mkDefault "${pkgs.mailutils}/bin/mail"; + PATH = lib.makeBinPath [ packages.zfsUser pkgs.utillinux pkgs.gawk pkgs.gnused pkgs.gnugrep pkgs.coreutils pkgs.curl ]; }; environment.etc = genAttrs @@ -478,6 +479,7 @@ in createImportService = pool: nameValuePair "zfs-import-${pool}" { description = "Import ZFS pool \"${pool}\""; + # we need systemd-udev-settle until https://github.com/zfsonlinux/zfs/pull/4943 is merged requires = [ "systemd-udev-settle.service" ]; after = [ "systemd-udev-settle.service" "systemd-modules-load.service" ]; wantedBy = (getPoolMounts pool) ++ [ "local-fs.target" ]; @@ -623,7 +625,11 @@ in after = [ "zfs-import.target" ]; path = [ packages.zfsUser ]; startAt = cfgTrim.interval; - serviceConfig.ExecStart = "${pkgs.runtimeShell} -c 'zpool list -H -o name | xargs --no-run-if-empty -n1 zpool trim'"; + # By default we ignore errors returned by the trim command, in case: + # - HDDs are mixed with SSDs + # - There is a SSDs in a pool that is currently trimmed. + # - There are only HDDs and we would set the system in a degraded state + serviceConfig.ExecStart = ''${pkgs.runtimeShell} -c 'for pool in $(zpool list -H -o name); do zpool trim $pool; done || true' ''; }; }) ]; diff --git a/nixos/modules/tasks/network-interfaces-scripted.nix b/nixos/modules/tasks/network-interfaces-scripted.nix index 1726d05115e..9720d90217c 100644 --- a/nixos/modules/tasks/network-interfaces-scripted.nix +++ b/nixos/modules/tasks/network-interfaces-scripted.nix @@ -10,7 +10,7 @@ let slaves = concatMap (i: i.interfaces) (attrValues cfg.bonds) ++ concatMap (i: i.interfaces) (attrValues cfg.bridges) - ++ concatMap (i: i.interfaces) (attrValues cfg.vswitches) + ++ concatMap (i: attrNames (filterAttrs (_: config: config.type != "internal") i.interfaces)) (attrValues cfg.vswitches) ++ concatMap (i: [i.interface]) (attrValues cfg.macvlans) ++ concatMap (i: [i.interface]) (attrValues cfg.vlans); @@ -237,6 +237,38 @@ let ''; }; + createNetworkLink = i: + let + deviceDependency = if (config.boot.isContainer || i.name == "lo") + then [] + else [ (subsystemDevice i.name) ]; + in + nameValuePair "network-link-${i.name}" + { description = "Link configuration of ${i.name}"; + wantedBy = [ "network-interfaces.target" ]; + before = [ "network-interfaces.target" ]; + bindsTo = deviceDependency; + after = [ "network-pre.target" ] ++ deviceDependency; + path = [ pkgs.iproute ]; + serviceConfig = { + Type = "oneshot"; + RemainAfterExit = true; + }; + script = + '' + echo "Configuring link..." + '' + optionalString (i.macAddress != null) '' + echo "setting MAC address to ${i.macAddress}..." + ip link set "${i.name}" address "${i.macAddress}" + '' + optionalString (i.mtu != null) '' + echo "setting MTU to ${toString i.mtu}..." + ip link set "${i.name}" mtu "${toString i.mtu}" + '' + '' + echo -n "bringing up interface... " + ip link set "${i.name}" up && echo "done" || (echo "failed"; exit 1) + ''; + }; + createTunDevice = i: nameValuePair "${i.name}-netdev" { description = "Virtual Network Interface ${i.name}"; bindsTo = [ "dev-net-tun.device" ]; @@ -291,13 +323,19 @@ let ${optionalString config.virtualisation.libvirtd.enable '' # Enslave dynamically added interfaces which may be lost on nixos-rebuild - for uri in qemu:///system lxc:///; do - for dom in $(${pkgs.libvirt}/bin/virsh -c $uri list --name); do - ${pkgs.libvirt}/bin/virsh -c $uri dumpxml "$dom" | \ - ${pkgs.xmlstarlet}/bin/xmlstarlet sel -t -m "//domain/devices/interface[@type='bridge'][source/@bridge='${n}'][target/@dev]" -v "concat('ip link set ',target/@dev,' master ',source/@bridge,';')" | \ - ${pkgs.bash}/bin/bash + # + # if `libvirtd.service` is not running, do not use `virsh` which would try activate it via 'libvirtd.socket' and thus start it out-of-order. + # `libvirtd.service` will set up bridge interfaces when it will start normally. + # + if ${pkgs.systemd}/bin/systemctl --quiet is-active 'libvirtd.service'; then + for uri in qemu:///system lxc:///; do + for dom in $(${pkgs.libvirt}/bin/virsh -c $uri list --name); do + ${pkgs.libvirt}/bin/virsh -c $uri dumpxml "$dom" | \ + ${pkgs.xmlstarlet}/bin/xmlstarlet sel -t -m "//domain/devices/interface[@type='bridge'][source/@bridge='${n}'][target/@dev]" -v "concat('ip link set ',target/@dev,' master ',source/@bridge,';')" | \ + ${pkgs.bash}/bin/bash + done done - done + fi ''} # Enable stp on the interface @@ -336,34 +374,47 @@ let createVswitchDevice = n: v: nameValuePair "${n}-netdev" (let - deps = concatLists (map deviceDependency v.interfaces); + deps = concatLists (map deviceDependency (attrNames (filterAttrs (_: config: config.type != "internal") v.interfaces))); + internalConfigs = concatMap (i: ["network-link-${i}.service" "network-addresses-${i}.service"]) (attrNames (filterAttrs (_: config: config.type == "internal") v.interfaces)); ofRules = pkgs.writeText "vswitch-${n}-openFlowRules" v.openFlowRules; in { description = "Open vSwitch Interface ${n}"; - wantedBy = [ "network-setup.service" "vswitchd.service" ] ++ deps; - bindsTo = [ "vswitchd.service" (subsystemDevice n) ] ++ deps; - partOf = [ "network-setup.service" "vswitchd.service" ]; - after = [ "network-pre.target" "vswitchd.service" ] ++ deps; - before = [ "network-setup.service" ]; + wantedBy = [ "network-setup.service" (subsystemDevice n) ] ++ internalConfigs; + # before = [ "network-setup.service" ]; + # should work without internalConfigs dependencies because address/link configuration depends + # on the device, which is created by ovs-vswitchd with type=internal, but it does not... + before = [ "network-setup.service" ] ++ internalConfigs; + partOf = [ "network-setup.service" ]; # shutdown the bridge when network is shutdown + bindsTo = [ "ovs-vswitchd.service" ]; # requires ovs-vswitchd to be alive at all times + after = [ "network-pre.target" "ovs-vswitchd.service" ] ++ deps; # start switch after physical interfaces and vswitch daemon + wants = deps; # if one or more interface fails, the switch should continue to run serviceConfig.Type = "oneshot"; serviceConfig.RemainAfterExit = true; path = [ pkgs.iproute config.virtualisation.vswitch.package ]; + preStart = '' + echo "Resetting Open vSwitch ${n}..." + ovs-vsctl --if-exists del-br ${n} -- add-br ${n} \ + -- set bridge ${n} protocols=${concatStringsSep "," v.supportedOpenFlowVersions} + ''; script = '' - echo "Removing old Open vSwitch ${n}..." - ovs-vsctl --if-exists del-br ${n} - - echo "Adding Open vSwitch ${n}..." - ovs-vsctl -- add-br ${n} ${concatMapStrings (i: " -- add-port ${n} ${i}") v.interfaces} \ + echo "Configuring Open vSwitch ${n}..." + ovs-vsctl ${concatStrings (mapAttrsToList (name: config: " -- add-port ${n} ${name}" + optionalString (config.vlan != null) " tag=${toString config.vlan}") v.interfaces)} \ + ${concatStrings (mapAttrsToList (name: config: optionalString (config.type != null) " -- set interface ${name} type=${config.type}") v.interfaces)} \ ${concatMapStrings (x: " -- set-controller ${n} " + x) v.controllers} \ ${concatMapStrings (x: " -- " + x) (splitString "\n" v.extraOvsctlCmds)} + echo "Adding OpenFlow rules for Open vSwitch ${n}..." - ovs-ofctl add-flows ${n} ${ofRules} + ovs-ofctl --protocols=${v.openFlowVersion} add-flows ${n} ${ofRules} ''; postStop = '' + echo "Cleaning Open vSwitch ${n}" + echo "Shuting down internal ${n} interface" ip link set ${n} down || true - ovs-ofctl del-flows ${n} || true - ovs-vsctl --if-exists del-br ${n} + echo "Deleting flows for ${n}" + ovs-ofctl --protocols=${v.openFlowVersion} del-flows ${n} || true + echo "Deleting Open vSwitch ${n}" + ovs-vsctl --if-exists del-br ${n} || true ''; }); @@ -476,9 +527,9 @@ let # Remove Dead Interfaces ip link show "${n}" >/dev/null 2>&1 && ip link delete "${n}" ip link add link "${v.interface}" name "${n}" type vlan id "${toString v.id}" - - # We try to bring up the logical VLAN interface. If the master - # interface the logical interface is dependent upon is not up yet we will + + # We try to bring up the logical VLAN interface. If the master + # interface the logical interface is dependent upon is not up yet we will # fail to immediately bring up the logical interface. The resulting logical # interface will brought up later when the master interface is up. ip link set "${n}" up || true @@ -489,6 +540,7 @@ let }); in listToAttrs ( + map createNetworkLink interfaces ++ map configureAddrs interfaces ++ map createTunDevice (filter (i: i.virtual) interfaces)) // mapAttrs' createBridgeDevice cfg.bridges diff --git a/nixos/modules/tasks/network-interfaces-systemd.nix b/nixos/modules/tasks/network-interfaces-systemd.nix index e25dc0c0b39..23e1e611a71 100644 --- a/nixos/modules/tasks/network-interfaces-systemd.nix +++ b/nixos/modules/tasks/network-interfaces-systemd.nix @@ -1,4 +1,4 @@ -{ config, lib, utils, ... }: +{ config, lib, utils, pkgs, ... }: with utils; with lib; @@ -18,7 +18,10 @@ let concatLists (map (bond: bond.interfaces) (attrValues cfg.bonds)) ++ concatLists (map (bridge: bridge.interfaces) (attrValues cfg.bridges)) ++ map (sit: sit.dev) (attrValues cfg.sits) - ++ map (vlan: vlan.interface) (attrValues cfg.vlans); + ++ map (vlan: vlan.interface) (attrValues cfg.vlans) + # add dependency to physical or independently created vswitch member interface + # TODO: warn the user that any address configured on those interfaces will be useless + ++ concatMap (i: attrNames (filterAttrs (_: config: config.type != "internal") i.interfaces)) (attrValues cfg.vswitches); in @@ -51,11 +54,6 @@ in networking.dhcpcd.enable = mkDefault false; - systemd.services.network-local-commands = { - after = [ "systemd-networkd.service" ]; - bindsTo = [ "systemd-networkd.service" ]; - }; - systemd.network = let domains = cfg.search ++ (optional (cfg.domain != null) cfg.domain); @@ -96,7 +94,12 @@ in address = forEach (interfaceIps i) (ip: "${ip.address}/${toString ip.prefixLength}"); networkConfig.IPv6PrivacyExtensions = "kernel"; - } ]; + linkConfig = optionalAttrs (i.macAddress != null) { + MACAddress = i.macAddress; + } // optionalAttrs (i.mtu != null) { + MTUBytes = toString i.mtu; + }; + }]; }))) (mkMerge (flip mapAttrsToList cfg.bridges (name: bridge: { netdevs."40-${name}" = { @@ -233,6 +236,63 @@ in # This forces the network interface creator to initialize slaves. networking.interfaces = listToAttrs (map (i: nameValuePair i { }) slaves); + systemd.services = let + # We must escape interfaces due to the systemd interpretation + subsystemDevice = interface: + "sys-subsystem-net-devices-${escapeSystemdPath interface}.device"; + # support for creating openvswitch switches + createVswitchDevice = n: v: nameValuePair "${n}-netdev" + (let + deps = map subsystemDevice (attrNames (filterAttrs (_: config: config.type != "internal") v.interfaces)); + ofRules = pkgs.writeText "vswitch-${n}-openFlowRules" v.openFlowRules; + in + { description = "Open vSwitch Interface ${n}"; + wantedBy = [ "network.target" (subsystemDevice n) ]; + # and create bridge before systemd-networkd starts because it might create internal interfaces + before = [ "systemd-networkd.service" ]; + # shutdown the bridge when network is shutdown + partOf = [ "network.target" ]; + # requires ovs-vswitchd to be alive at all times + bindsTo = [ "ovs-vswitchd.service" ]; + # start switch after physical interfaces and vswitch daemon + after = [ "network-pre.target" "ovs-vswitchd.service" ] ++ deps; + wants = deps; # if one or more interface fails, the switch should continue to run + serviceConfig.Type = "oneshot"; + serviceConfig.RemainAfterExit = true; + path = [ pkgs.iproute config.virtualisation.vswitch.package ]; + preStart = '' + echo "Resetting Open vSwitch ${n}..." + ovs-vsctl --if-exists del-br ${n} -- add-br ${n} \ + -- set bridge ${n} protocols=${concatStringsSep "," v.supportedOpenFlowVersions} + ''; + script = '' + echo "Configuring Open vSwitch ${n}..." + ovs-vsctl ${concatStrings (mapAttrsToList (name: config: " -- add-port ${n} ${name}" + optionalString (config.vlan != null) " tag=${toString config.vlan}") v.interfaces)} \ + ${concatStrings (mapAttrsToList (name: config: optionalString (config.type != null) " -- set interface ${name} type=${config.type}") v.interfaces)} \ + ${concatMapStrings (x: " -- set-controller ${n} " + x) v.controllers} \ + ${concatMapStrings (x: " -- " + x) (splitString "\n" v.extraOvsctlCmds)} + + + echo "Adding OpenFlow rules for Open vSwitch ${n}..." + ovs-ofctl --protocols=${v.openFlowVersion} add-flows ${n} ${ofRules} + ''; + postStop = '' + echo "Cleaning Open vSwitch ${n}" + echo "Shuting down internal ${n} interface" + ip link set ${n} down || true + echo "Deleting flows for ${n}" + ovs-ofctl --protocols=${v.openFlowVersion} del-flows ${n} || true + echo "Deleting Open vSwitch ${n}" + ovs-vsctl --if-exists del-br ${n} || true + ''; + }); + in mapAttrs' createVswitchDevice cfg.vswitches + // { + "network-local-commands" = { + after = [ "systemd-networkd.service" ]; + bindsTo = [ "systemd-networkd.service" ]; + }; + }; }; } diff --git a/nixos/modules/tasks/network-interfaces.nix b/nixos/modules/tasks/network-interfaces.nix index 31e2ed1cd1e..44677d417ea 100644 --- a/nixos/modules/tasks/network-interfaces.nix +++ b/nixos/modules/tasks/network-interfaces.nix @@ -13,7 +13,7 @@ let slaves = concatMap (i: i.interfaces) (attrValues cfg.bonds) ++ concatMap (i: i.interfaces) (attrValues cfg.bridges) - ++ concatMap (i: i.interfaces) (attrValues cfg.vswitches); + ++ concatMap (i: attrNames (filterAttrs (name: config: ! (config.type == "internal" || hasAttr name cfg.interfaces)) i.interfaces)) (attrValues cfg.vswitches); slaveIfs = map (i: cfg.interfaces.${i}) (filter (i: cfg.interfaces ? ${i}) slaves); @@ -143,13 +143,34 @@ let description = "Name of the interface."; }; - preferTempAddress = mkOption { - type = types.bool; - default = cfg.enableIPv6; - defaultText = literalExample "config.networking.enableIPv6"; + tempAddress = mkOption { + type = types.enum [ "default" "enabled" "disabled" ]; + default = if cfg.enableIPv6 then "default" else "disabled"; + defaultText = literalExample ''if cfg.enableIPv6 then "default" else "disabled"''; description = '' - When using SLAAC prefer a temporary (IPv6) address over the EUI-64 - address for originating connections. This is used to reduce tracking. + When IPv6 is enabled with SLAAC, this option controls the use of + temporary address (aka privacy extensions). This is used to reduce tracking. + The three possible values are: + + + + + "default" to generate temporary addresses and use + them by default; + + + + + "enabled" to generate temporary addresses but keep + using the standard EUI-64 ones by default; + + + + + "disabled" to completely disable temporary addresses. + + + ''; }; @@ -287,6 +308,11 @@ let let defined = x: x != "_mkMergedOptionModule"; in [ + (mkChangedOptionModule [ "preferTempAddress" ] [ "tempAddress" ] + (config: + let bool = getAttrFromPath [ "preferTempAddress" ] config; + in if bool then "default" else "enabled" + )) (mkRenamedOptionModule [ "ip4" ] [ "ipv4" "addresses"]) (mkRenamedOptionModule [ "ip6" ] [ "ipv6" "addresses"]) (mkRemovedOptionModule [ "subnetMask" ] '' @@ -310,6 +336,32 @@ let }; + vswitchInterfaceOpts = {name, ...}: { + + options = { + + name = mkOption { + description = "Name of the interface"; + example = "eth0"; + type = types.str; + }; + + vlan = mkOption { + description = "Vlan tag to apply to interface"; + example = 10; + type = types.nullOr types.int; + default = null; + }; + + type = mkOption { + description = "Openvswitch type to assign to interface"; + example = "internal"; + type = types.nullOr types.str; + default = null; + }; + }; + }; + hexChars = stringToCharacters "0123456789abcdef"; isHexString = s: all (c: elem c hexChars) (stringToCharacters (toLower s)); @@ -460,8 +512,8 @@ in networking.vswitches = mkOption { default = { }; example = - { vs0.interfaces = [ "eth0" "eth1" ]; - vs1.interfaces = [ "eth2" "wlan0" ]; + { vs0.interfaces = { eth0 = { }; lo1 = { type="internal"; }; }; + vs1.interfaces = [ { name = "eth2"; } { name = "lo2"; type="internal"; } ]; }; description = '' @@ -478,9 +530,8 @@ in interfaces = mkOption { example = [ "eth0" "eth1" ]; - type = types.listOf types.str; - description = - "The physical network interfaces connected by the vSwitch."; + description = "The physical network interfaces connected by the vSwitch."; + type = with types; loaOf (submodule vswitchInterfaceOpts); }; controllers = mkOption { @@ -504,6 +555,25 @@ in ''; }; + # TODO: custom "openflow version" type, with list from existing openflow protocols + supportedOpenFlowVersions = mkOption { + type = types.listOf types.str; + example = [ "OpenFlow10" "OpenFlow13" "OpenFlow14" ]; + default = [ "OpenFlow13" ]; + description = '' + Supported versions to enable on this switch. + ''; + }; + + # TODO: use same type as elements from supportedOpenFlowVersions + openFlowVersion = mkOption { + type = types.str; + default = "OpenFlow13"; + description = '' + Version of OpenFlow protocol to use when communicating with the switch internally (e.g. with openFlowRules). + ''; + }; + extraOvsctlCmds = mkOption { type = types.lines; default = ""; @@ -564,19 +634,23 @@ in networking.bonds = let - driverOptionsExample = { - miimon = "100"; - mode = "active-backup"; - }; + driverOptionsExample = '' + { + miimon = "100"; + mode = "active-backup"; + } + ''; in mkOption { default = { }; - example = literalExample { - bond0 = { - interfaces = [ "eth0" "wlan0" ]; - driverOptions = driverOptionsExample; - }; - anotherBond.interfaces = [ "enp4s0f0" "enp4s0f1" "enp5s0f0" "enp5s0f1" ]; - }; + example = literalExample '' + { + bond0 = { + interfaces = [ "eth0" "wlan0" ]; + driverOptions = ${driverOptionsExample}; + }; + anotherBond.interfaces = [ "enp4s0f0" "enp4s0f1" "enp5s0f0" "enp5s0f1" ]; + } + ''; description = '' This option allows you to define bond devices that aggregate multiple, underlying networking interfaces together. The value of this option is @@ -661,12 +735,14 @@ in networking.macvlans = mkOption { default = { }; - example = literalExample { - wan = { - interface = "enp2s0"; - mode = "vepa"; - }; - }; + example = literalExample '' + { + wan = { + interface = "enp2s0"; + mode = "vepa"; + }; + } + ''; description = '' This option allows you to define macvlan interfaces which should be automatically created. @@ -694,18 +770,20 @@ in networking.sits = mkOption { default = { }; - example = literalExample { - hurricane = { - remote = "10.0.0.1"; - local = "10.0.0.22"; - ttl = 255; - }; - msipv6 = { - remote = "192.168.0.1"; - dev = "enp3s0"; - ttl = 127; - }; - }; + example = literalExample '' + { + hurricane = { + remote = "10.0.0.1"; + local = "10.0.0.22"; + ttl = 255; + }; + msipv6 = { + remote = "192.168.0.1"; + dev = "enp3s0"; + ttl = 127; + }; + } + ''; description = '' This option allows you to define 6-to-4 interfaces which should be automatically created. ''; @@ -756,16 +834,18 @@ in networking.vlans = mkOption { default = { }; - example = literalExample { - vlan0 = { - id = 3; - interface = "enp3s0"; - }; - vlan1 = { - id = 1; - interface = "wlan0"; - }; - }; + example = literalExample '' + { + vlan0 = { + id = 3; + interface = "enp3s0"; + }; + vlan1 = { + id = 1; + interface = "wlan0"; + }; + } + ''; description = '' This option allows you to define vlan devices that tag packets @@ -798,24 +878,26 @@ in networking.wlanInterfaces = mkOption { default = { }; - example = literalExample { - wlan-station0 = { - device = "wlp6s0"; - }; - wlan-adhoc0 = { - type = "ibss"; - device = "wlp6s0"; - mac = "02:00:00:00:00:01"; - }; - wlan-p2p0 = { - device = "wlp6s0"; - mac = "02:00:00:00:00:02"; - }; - wlan-ap0 = { - device = "wlp6s0"; - mac = "02:00:00:00:00:03"; - }; - }; + example = literalExample '' + { + wlan-station0 = { + device = "wlp6s0"; + }; + wlan-adhoc0 = { + type = "ibss"; + device = "wlp6s0"; + mac = "02:00:00:00:00:01"; + }; + wlan-p2p0 = { + device = "wlp6s0"; + mac = "02:00:00:00:00:02"; + }; + wlan-ap0 = { + device = "wlp6s0"; + mac = "02:00:00:00:00:03"; + }; + } + ''; description = '' Creating multiple WLAN interfaces on top of one physical WLAN device (NIC). @@ -945,10 +1027,15 @@ in The networking.interfaces."${i.name}" must not have any defined ips when it is a slave. ''; })) ++ (forEach interfaces (i: { - assertion = i.preferTempAddress -> cfg.enableIPv6; + assertion = i.tempAddress != "disabled" -> cfg.enableIPv6; message = '' Temporary addresses are only needed when IPv6 is enabled. ''; + })) ++ (forEach interfaces (i: { + assertion = (i.virtual && i.virtualType == "tun") -> i.macAddress == null; + message = '' + Setting a MAC Address for tun device ${i.name} isn't supported. + ''; })) ++ [ { assertion = cfg.hostId == null || (stringLength cfg.hostId == 8 && isHexString cfg.hostId); @@ -973,8 +1060,11 @@ in "net.ipv6.conf.all.forwarding" = mkDefault (any (i: i.proxyARP) interfaces); } // listToAttrs (flip concatMap (filter (i: i.proxyARP) interfaces) (i: forEach [ "4" "6" ] (v: nameValuePair "net.ipv${v}.conf.${replaceChars ["."] ["/"] i.name}.proxy_arp" true))) - // listToAttrs (forEach (filter (i: i.preferTempAddress) interfaces) - (i: nameValuePair "net.ipv6.conf.${replaceChars ["."] ["/"] i.name}.use_tempaddr" 2)); + // listToAttrs (forEach interfaces + (i: let + opt = i.tempAddress; + val = { disabled = 0; enabled = 1; default = 2; }.${opt}; + in nameValuePair "net.ipv6.conf.${replaceChars ["."] ["/"] i.name}.use_tempaddr" val)); # Capabilities won't work unless we have at-least a 4.3 Linux # kernel because we need the ambient capability @@ -1055,38 +1145,7 @@ in ${cfg.localCommands} ''; }; - } // (listToAttrs (forEach interfaces (i: - let - deviceDependency = if (config.boot.isContainer || i.name == "lo") - then [] - else [ (subsystemDevice i.name) ]; - in - nameValuePair "network-link-${i.name}" - { description = "Link configuration of ${i.name}"; - wantedBy = [ "network-interfaces.target" ]; - before = [ "network-interfaces.target" ]; - bindsTo = deviceDependency; - after = [ "network-pre.target" ] ++ deviceDependency; - path = [ pkgs.iproute ]; - serviceConfig = { - Type = "oneshot"; - RemainAfterExit = true; - }; - script = - '' - echo "Configuring link..." - '' + optionalString (i.macAddress != null) '' - echo "setting MAC address to ${i.macAddress}..." - ip link set "${i.name}" address "${i.macAddress}" - '' + optionalString (i.mtu != null) '' - echo "setting MTU to ${toString i.mtu}..." - ip link set "${i.name}" mtu "${toString i.mtu}" - '' + '' - echo -n "bringing up interface... " - ip link set "${i.name}" up && echo "done" || (echo "failed"; exit 1) - ''; - }))); - + }; services.mstpd = mkIf needsMstpd { enable = true; }; virtualisation.vswitch = mkIf (cfg.vswitches != { }) { enable = true; }; @@ -1103,10 +1162,18 @@ in (pkgs.writeTextFile rec { name = "ipv6-privacy-extensions.rules"; destination = "/etc/udev/rules.d/99-${name}"; - text = concatMapStrings (i: '' - # enable IPv6 privacy addresses but prefer EUI-64 addresses for ${i.name} - ACTION=="add", SUBSYSTEM=="net", RUN+="${pkgs.procps}/bin/sysctl net.ipv6.conf.${replaceChars ["."] ["/"] i.name}.use_tempaddr=1" - '') (filter (i: !i.preferTempAddress) interfaces); + text = concatMapStrings (i: + let + opt = i.tempAddress; + val = if opt == "disabled" then 0 else 1; + msg = if opt == "disabled" + then "completely disable IPv6 privacy addresses" + else "enable IPv6 privacy addresses but prefer EUI-64 addresses"; + in + '' + # override to ${msg} for ${i.name} + ACTION=="add", SUBSYSTEM=="net", RUN+="${pkgs.procps}/bin/sysctl net.ipv6.conf.${replaceChars ["."] ["/"] i.name}.use_tempaddr=${toString val}" + '') (filter (i: i.tempAddress != "default") interfaces); }) ] ++ lib.optional (cfg.wlanInterfaces != {}) (pkgs.writeTextFile { diff --git a/nixos/modules/tasks/powertop.nix b/nixos/modules/tasks/powertop.nix index 609831506e1..e8064f9fa80 100644 --- a/nixos/modules/tasks/powertop.nix +++ b/nixos/modules/tasks/powertop.nix @@ -15,6 +15,7 @@ in { systemd.services = { powertop = { wantedBy = [ "multi-user.target" ]; + after = [ "multi-user.target" ]; description = "Powertop tunings"; path = [ pkgs.kmod ]; serviceConfig = { diff --git a/nixos/modules/testing/service-runner.nix b/nixos/modules/testing/service-runner.nix index 17d5e337690..99a9f979068 100644 --- a/nixos/modules/testing/service-runner.nix +++ b/nixos/modules/testing/service-runner.nix @@ -12,7 +12,10 @@ let sub run { my ($cmd) = @_; - my @args = split " ", $cmd; + my @args = (); + while ($cmd =~ /([^ \t\n']+)|(\'([^'])\')\s*/g) { + push @args, $1; + } my $prog; if (substr($args[0], 0, 1) eq "@") { $prog = substr($args[0], 1); @@ -48,15 +51,20 @@ let '') service.environment)} # Run the ExecStartPre program. FIXME: this could be a list. - my $preStart = '${service.serviceConfig.ExecStartPre or ""}'; - if ($preStart ne "") { + my $preStart = < /root/.nix-channels @@ -48,7 +48,7 @@ in { wantedBy = [ "multi-user.target" ]; after = [ "multi-user.target" ]; requires = [ "network-online.target" ]; - + restartIfChanged = false; unitConfig.X-StopOnRemoval = false; @@ -58,4 +58,3 @@ in { }; }; } - diff --git a/nixos/modules/virtualisation/azure-common.nix b/nixos/modules/virtualisation/azure-common.nix index 03239991b95..8efa177e30d 100644 --- a/nixos/modules/virtualisation/azure-common.nix +++ b/nixos/modules/virtualisation/azure-common.nix @@ -15,6 +15,8 @@ with lib; boot.loader.grub.version = 2; boot.loader.timeout = 0; + boot.growPartition = true; + # Don't put old configurations in the GRUB menu. The user has no # way to select them anyway. boot.loader.grub.configurationLimit = 0; diff --git a/nixos/modules/virtualisation/azure-image.nix b/nixos/modules/virtualisation/azure-image.nix index e91dd72ff5d..21fd58e5c90 100644 --- a/nixos/modules/virtualisation/azure-image.nix +++ b/nixos/modules/virtualisation/azure-image.nix @@ -2,27 +2,38 @@ with lib; let - diskSize = 2048; + cfg = config.virtualisation.azureImage; in { - system.build.azureImage = import ../../lib/make-disk-image.nix { - name = "azure-image"; - postVM = '' - ${pkgs.vmTools.qemu}/bin/qemu-img convert -f raw -o subformat=fixed,force_size -O vpc $diskImage $out/disk.vhd - ''; - configFile = ./azure-config-user.nix; - format = "raw"; - inherit diskSize; - inherit config lib pkgs; - }; - imports = [ ./azure-common.nix ]; + + options = { + virtualisation.azureImage.diskSize = mkOption { + type = with types; int; + default = 2048; + description = '' + Size of disk image. Unit is MB. + ''; + }; + }; + config = { + system.build.azureImage = import ../../lib/make-disk-image.nix { + name = "azure-image"; + postVM = '' + ${pkgs.vmTools.qemu}/bin/qemu-img convert -f raw -o subformat=fixed,force_size -O vpc $diskImage $out/disk.vhd + rm $diskImage + ''; + configFile = ./azure-config-user.nix; + format = "raw"; + inherit (cfg) diskSize; + inherit config lib pkgs; + }; - # Azure metadata is available as a CD-ROM drive. - fileSystems."/metadata".device = "/dev/sr0"; + # Azure metadata is available as a CD-ROM drive. + fileSystems."/metadata".device = "/dev/sr0"; - systemd.services.fetch-ssh-keys = - { description = "Fetch host keys and authorized_keys for root user"; + systemd.services.fetch-ssh-keys = { + description = "Fetch host keys and authorized_keys for root user"; wantedBy = [ "sshd.service" "waagent.service" ]; before = [ "sshd.service" "waagent.service" ]; @@ -54,6 +65,6 @@ in serviceConfig.RemainAfterExit = true; serviceConfig.StandardError = "journal+console"; serviceConfig.StandardOutput = "journal+console"; - }; - + }; + }; } diff --git a/nixos/modules/virtualisation/containers.nix b/nixos/modules/virtualisation/containers.nix index 09678ce9ea7..dad211ef55b 100644 --- a/nixos/modules/virtualisation/containers.nix +++ b/nixos/modules/virtualisation/containers.nix @@ -225,12 +225,6 @@ let fi ${concatStringsSep "\n" (mapAttrsToList renderExtraVeth cfg.extraVeths)} fi - - # Get the leader PID so that we can signal it in - # preStop. We can't use machinectl there because D-Bus - # might be shutting down. FIXME: in systemd 219 we can - # just signal systemd-nspawn to do a clean shutdown. - machinectl show "$INSTANCE" | sed 's/Leader=\(.*\)/\1/;t;d' > "/run/containers/$INSTANCE.pid" '' ); @@ -615,9 +609,11 @@ in bindMounts = mkOption { type = with types; loaOf (submodule bindMountOpts); default = {}; - example = { "/home" = { hostPath = "/home/alice"; - isReadOnly = false; }; - }; + example = literalExample '' + { "/home" = { hostPath = "/home/alice"; + isReadOnly = false; }; + } + ''; description = '' @@ -715,14 +711,7 @@ in postStart = postStartScript dummyConfig; - preStop = - '' - pid="$(cat /run/containers/$INSTANCE.pid)" - if [ -n "$pid" ]; then - kill -RTMIN+4 "$pid" - fi - rm -f "/run/containers/$INSTANCE.pid" - ''; + preStop = "machinectl poweroff $INSTANCE"; restartIfChanged = false; diff --git a/nixos/modules/virtualisation/docker-containers.nix b/nixos/modules/virtualisation/docker-containers.nix index 59b0943f591..5ab990a3d7c 100644 --- a/nixos/modules/virtualisation/docker-containers.nix +++ b/nixos/modules/virtualisation/docker-containers.nix @@ -10,11 +10,24 @@ let options = { image = mkOption { - type = types.str; + type = with types; str; description = "Docker image to run."; example = "library/hello-world"; }; + imageFile = mkOption { + type = with types; nullOr package; + default = null; + description = '' + Path to an image file to load instead of pulling from a registry. + If defined, do not pull from registry. + + You still need to set the image attribute, as it + will be used as the image name for docker to start a container. + ''; + example = literalExample "pkgs.dockerTools.buildDockerImage {...};"; + }; + cmd = mkOption { type = with types; listOf str; default = []; @@ -26,7 +39,7 @@ let entrypoint = mkOption { type = with types; nullOr str; - description = "Overwrite the default entrypoint of the image."; + description = "Override the default entrypoint of the image."; default = null; example = "/bin/my-app"; }; @@ -132,7 +145,7 @@ let Note that this is a list of "src:dst" strings to allow for src to refer to - /nix/store paths, which would difficult with an + /nix/store paths, which would be difficult with an attribute set. There are also a variety of mount options available as a third field; please refer to the @@ -153,6 +166,24 @@ let example = "/var/lib/hello_world"; }; + dependsOn = mkOption { + type = with types; listOf str; + default = []; + description = '' + Define which other containers this one depends on. They will be added to both After and Requires for the unit. + + Use the same name as the attribute under services.docker-containers. + ''; + example = literalExample '' + services.docker-containers = { + node1 = {}; + node2 = { + dependsOn = [ "node1" ]; + } + } + ''; + }; + extraDockerOptions = mkOption { type = with types; listOf str; default = []; @@ -161,18 +192,39 @@ let ["--network=host"] ''; }; + + autoStart = mkOption { + type = types.bool; + default = true; + description = '' + When enabled, the container is automatically started on boot. + If this option is set to false, the container has to be started on-demand via its service. + ''; + }; }; }; - mkService = name: container: { - wantedBy = [ "multi-user.target" ]; - after = [ "docker.service" "docker.socket" ]; - requires = [ "docker.service" "docker.socket" ]; + mkService = name: container: let + mkAfter = map (x: "docker-${x}.service") container.dependsOn; + in rec { + wantedBy = [] ++ optional (container.autoStart) "multi-user.target"; + after = [ "docker.service" "docker.socket" ] ++ mkAfter; + requires = after; + path = [ pkgs.docker ]; + + preStart = '' + docker rm -f ${name} || true + ${optionalString (container.imageFile != null) '' + docker load -i ${container.imageFile} + ''} + ''; + postStop = "docker rm -f ${name} || true"; + serviceConfig = { ExecStart = concatStringsSep " \\\n " ([ "${pkgs.docker}/bin/docker run" "--rm" - "--name=%n" + "--name=${name}" "--log-driver=${container.log-driver}" ] ++ optional (container.entrypoint != null) "--entrypoint=${escapeShellArg container.entrypoint}" @@ -185,9 +237,8 @@ let ++ [container.image] ++ map escapeShellArg container.cmd ); - ExecStartPre = "-${pkgs.docker}/bin/docker rm -f %n"; - ExecStop = "${pkgs.docker}/bin/docker stop %n"; - ExecStopPost = "-${pkgs.docker}/bin/docker rm -f %n"; + + ExecStop = ''${pkgs.bash}/bin/sh -c "[ $SERVICE_RESULT = success ] || docker stop ${name}"''; ### There is no generalized way of supporting `reload` for docker ### containers. Some containers may respond well to SIGHUP sent to their diff --git a/nixos/modules/virtualisation/hyperv-guest.nix b/nixos/modules/virtualisation/hyperv-guest.nix index 0f1f052880c..adc2810a993 100644 --- a/nixos/modules/virtualisation/hyperv-guest.nix +++ b/nixos/modules/virtualisation/hyperv-guest.nix @@ -32,7 +32,7 @@ in { ]; kernelParams = [ - "video=hyperv_fb:${cfg.videoMode}" + "video=hyperv_fb:${cfg.videoMode} elevator=noop" ]; }; diff --git a/nixos/modules/virtualisation/hyperv-image.nix b/nixos/modules/virtualisation/hyperv-image.nix new file mode 100644 index 00000000000..be2f12b7d01 --- /dev/null +++ b/nixos/modules/virtualisation/hyperv-image.nix @@ -0,0 +1,69 @@ +{ config, pkgs, lib, ... }: + +with lib; + +let + cfg = config.hyperv; + +in { + options = { + hyperv = { + baseImageSize = mkOption { + type = types.int; + default = 2048; + description = '' + The size of the hyper-v base image in MiB. + ''; + }; + vmDerivationName = mkOption { + type = types.str; + default = "nixos-hyperv-${config.system.nixos.label}-${pkgs.stdenv.hostPlatform.system}"; + description = '' + The name of the derivation for the hyper-v appliance. + ''; + }; + vmFileName = mkOption { + type = types.str; + default = "nixos-${config.system.nixos.label}-${pkgs.stdenv.hostPlatform.system}.vhdx"; + description = '' + The file name of the hyper-v appliance. + ''; + }; + }; + }; + + config = { + system.build.hypervImage = import ../../lib/make-disk-image.nix { + name = cfg.vmDerivationName; + postVM = '' + ${pkgs.vmTools.qemu}/bin/qemu-img convert -f raw -o subformat=dynamic -O vhdx $diskImage $out/${cfg.vmFileName} + ''; + format = "raw"; + diskSize = cfg.baseImageSize; + partitionTableType = "efi"; + inherit config lib pkgs; + }; + + fileSystems."/" = { + device = "/dev/disk/by-label/nixos"; + autoResize = true; + fsType = "ext4"; + }; + + fileSystems."/boot" = { + device = "/dev/disk/by-label/ESP"; + fsType = "vfat"; + }; + + boot.growPartition = true; + + boot.loader.grub = { + version = 2; + device = "nodev"; + efiSupport = true; + efiInstallAsRemovable = true; + }; + + virtualisation.hypervGuest.enable = true; + }; +} diff --git a/nixos/modules/virtualisation/kvmgt.nix b/nixos/modules/virtualisation/kvmgt.nix index 36ef6d17df6..0902d2dc2cb 100644 --- a/nixos/modules/virtualisation/kvmgt.nix +++ b/nixos/modules/virtualisation/kvmgt.nix @@ -19,7 +19,8 @@ in { virtualisation.kvmgt = { enable = mkEnableOption '' KVMGT (iGVT-g) VGPU support. Allows Qemu/KVM guests to share host's Intel integrated graphics card. - Currently only one graphical device can be shared + Currently only one graphical device can be shared. To allow users to access the device without root add them + to the kvm group: users.extraUsers.<yourusername>.extraGroups = [ "kvm" ]; ''; # multi GPU support is under the question device = mkOption { @@ -35,9 +36,7 @@ in { and find info about device via cat /sys/bus/pci/devices/*/mdev_supported_types/i915-GVTg_V5_4/description ''; example = { - i915-GVTg_V5_8 = { - uuid = "a297db4a-f4c2-11e6-90f6-d3b88d6c9525"; - }; + i915-GVTg_V5_8.uuid = "a297db4a-f4c2-11e6-90f6-d3b88d6c9525"; }; }; }; @@ -50,10 +49,7 @@ in { }; boot.kernelModules = [ "kvmgt" ]; - - boot.extraModprobeConfig = '' - options i915 enable_gvt=1 - ''; + boot.kernelParams = [ "i915.enable_gvt=1" ]; systemd.paths = mapAttrs' (name: value: nameValuePair "kvmgt-${name}" { @@ -65,6 +61,10 @@ in { } ) cfg.vgpus; + services.udev.extraRules = '' + SUBSYSTEM=="vfio", OWNER="root", GROUP="kvm" + ''; + systemd.services = mapAttrs' (name: value: nameValuePair "kvmgt-${name}" { description = "KVMGT VGPU ${name}"; diff --git a/nixos/modules/virtualisation/libvirtd.nix b/nixos/modules/virtualisation/libvirtd.nix index 52d852894ce..4f22099443f 100644 --- a/nixos/modules/virtualisation/libvirtd.nix +++ b/nixos/modules/virtualisation/libvirtd.nix @@ -214,14 +214,14 @@ in { }; systemd.services.libvirtd = { - description = "Libvirt Virtual Machine Management Daemon"; - - wantedBy = [ "multi-user.target" ]; requires = [ "libvirtd-config.service" ]; after = [ "systemd-udev-settle.service" "libvirtd-config.service" ] - ++ optional vswitch.enable "vswitchd.service"; + ++ optional vswitch.enable "ovs-vswitchd.service"; - environment.LIBVIRTD_ARGS = ''--config "${configFile}" ${concatStringsSep " " cfg.extraOptions}''; + environment.LIBVIRTD_ARGS = escapeShellArgs ( + [ "--config" configFile + "--timeout" "120" # from ${libvirt}/var/lib/sysconfig/libvirtd + ] ++ cfg.extraOptions); path = [ cfg.qemuPackage ] # libvirtd requires qemu-img to manage disk images ++ optional vswitch.enable vswitch.package; @@ -266,5 +266,8 @@ in { serviceConfig.ExecStart = "@${pkgs.libvirt}/sbin/virtlockd virtlockd"; restartIfChanged = false; }; + + systemd.sockets.libvirtd .wantedBy = [ "sockets.target" ]; + systemd.sockets.libvirtd-tcp.wantedBy = [ "sockets.target" ]; }; } diff --git a/nixos/modules/virtualisation/lxc.nix b/nixos/modules/virtualisation/lxc.nix index 9b5adaf0824..f484d5ee59a 100644 --- a/nixos/modules/virtualisation/lxc.nix +++ b/nixos/modules/virtualisation/lxc.nix @@ -58,7 +58,7 @@ in '' This is the config file for managing unprivileged user network administration access in LXC. See - lxc-user-net5 + lxc-usernet5 . ''; }; diff --git a/nixos/modules/virtualisation/lxd.nix b/nixos/modules/virtualisation/lxd.nix index b4934a86cf5..de48d3a780e 100644 --- a/nixos/modules/virtualisation/lxd.nix +++ b/nixos/modules/virtualisation/lxd.nix @@ -7,6 +7,7 @@ with lib; let cfg = config.virtualisation.lxd; + zfsCfg = config.boot.zfs; in @@ -26,11 +27,40 @@ in lxc command line tool, among others. ''; }; + + package = mkOption { + type = types.package; + default = pkgs.lxd; + defaultText = "pkgs.lxd"; + description = '' + The LXD package to use. + ''; + }; + + lxcPackage = mkOption { + type = types.package; + default = pkgs.lxc; + defaultText = "pkgs.lxc"; + description = '' + The LXC package to use with LXD (required for AppArmor profiles). + ''; + }; + + zfsPackage = mkOption { + type = types.package; + default = with pkgs; if zfsCfg.enableUnstable then zfsUnstable else zfs; + defaultText = "pkgs.zfs"; + description = '' + The ZFS package to use with LXD. + ''; + }; + zfsSupport = mkOption { type = types.bool; default = false; description = '' - enables lxd to use zfs as a storage for containers. + Enables lxd to use zfs as a storage for containers. + This option is enabled by default if a zfs pool is configured with nixos. ''; @@ -54,15 +84,15 @@ in config = mkIf cfg.enable { - environment.systemPackages = [ pkgs.lxd ]; + environment.systemPackages = [ cfg.package ]; security.apparmor = { enable = true; profiles = [ - "${pkgs.lxc}/etc/apparmor.d/usr.bin.lxc-start" - "${pkgs.lxc}/etc/apparmor.d/lxc-containers" + "${cfg.lxcPackage}/etc/apparmor.d/usr.bin.lxc-start" + "${cfg.lxcPackage}/etc/apparmor.d/lxc-containers" ]; - packages = [ pkgs.lxc ]; + packages = [ cfg.lxcPackage ]; }; systemd.services.lxd = { @@ -71,14 +101,14 @@ in wantedBy = [ "multi-user.target" ]; after = [ "systemd-udev-settle.service" ]; - path = lib.optional cfg.zfsSupport pkgs.zfs; + path = lib.optional cfg.zfsSupport cfg.zfsPackage; preStart = '' mkdir -m 0755 -p /var/lib/lxc/rootfs ''; serviceConfig = { - ExecStart = "@${pkgs.lxd.bin}/bin/lxd lxd --group lxd"; + ExecStart = "@${cfg.package.bin}/bin/lxd lxd --group lxd"; Type = "simple"; KillMode = "process"; # when stopping, leave the containers alone LimitMEMLOCK = "infinity"; diff --git a/nixos/modules/virtualisation/openvswitch.nix b/nixos/modules/virtualisation/openvswitch.nix index 6b8ad83661f..c6a3ceddc3e 100644 --- a/nixos/modules/virtualisation/openvswitch.nix +++ b/nixos/modules/virtualisation/openvswitch.nix @@ -124,7 +124,7 @@ in { ''; }; - systemd.services.vswitchd = { + systemd.services.ovs-vswitchd = { description = "Open_vSwitch Daemon"; wantedBy = [ "multi-user.target" ]; bindsTo = [ "ovsdb.service" ]; @@ -139,6 +139,8 @@ in { PIDFile = "/run/openvswitch/ovs-vswitchd.pid"; # Use service type 'forking' to correctly determine when vswitchd is ready. Type = "forking"; + Restart = "always"; + RestartSec = 3; }; }; @@ -182,4 +184,7 @@ in { ''; }; })])); + + meta.maintainers = with maintainers; [ netixx ]; + } diff --git a/nixos/modules/virtualisation/virtualbox-image.nix b/nixos/modules/virtualisation/virtualbox-image.nix index ab65523592d..788b4d9d976 100644 --- a/nixos/modules/virtualisation/virtualbox-image.nix +++ b/nixos/modules/virtualisation/virtualbox-image.nix @@ -45,10 +45,41 @@ in { The file name of the VirtualBox appliance. ''; }; + params = mkOption { + type = with types; attrsOf (oneOf [ str int bool (listOf str) ]); + example = { + audio = "alsa"; + rtcuseutc = "on"; + usb = "off"; + }; + description = '' + Parameters passed to the Virtualbox appliance. + + Run VBoxManage modifyvm --help to see more options. + ''; + }; }; }; config = { + + virtualbox.params = mkMerge [ + (mapAttrs (name: mkDefault) { + acpi = "on"; + vram = 32; + nictype1 = "virtio"; + nic1 = "nat"; + audiocontroller = "ac97"; + audio = "alsa"; + audioout = "on"; + rtcuseutc = "on"; + usb = "on"; + usbehci = "on"; + mouse = "usbtablet"; + }) + (mkIf (pkgs.stdenv.hostPlatform.system == "i686-linux") { pae = "on"; }) + ]; + system.build.virtualBoxOVA = import ../../lib/make-disk-image.nix { name = cfg.vmDerivationName; @@ -69,12 +100,8 @@ in { VBoxManage createvm --name "$vmName" --register \ --ostype ${if pkgs.stdenv.hostPlatform.system == "x86_64-linux" then "Linux26_64" else "Linux26"} VBoxManage modifyvm "$vmName" \ - --memory ${toString cfg.memorySize} --acpi on --vram 32 \ - ${optionalString (pkgs.stdenv.hostPlatform.system == "i686-linux") "--pae on"} \ - --nictype1 virtio --nic1 nat \ - --audiocontroller ac97 --audio alsa --audioout on \ - --rtcuseutc on \ - --usb on --usbehci on --mouse usbtablet + --memory ${toString cfg.memorySize} \ + ${lib.cli.toGNUCommandLineShell { } cfg.params} VBoxManage storagectl "$vmName" --name SATA --add sata --portcount 4 --bootable on --hostiocache on VBoxManage storageattach "$vmName" --storagectl SATA --port 0 --device 0 --type hdd \ --medium disk.vmdk diff --git a/nixos/modules/virtualisation/xen-dom0.nix b/nixos/modules/virtualisation/xen-dom0.nix index 6fd54c52758..7f0af9901b9 100644 --- a/nixos/modules/virtualisation/xen-dom0.nix +++ b/nixos/modules/virtualisation/xen-dom0.nix @@ -233,26 +233,19 @@ in environment.etc = - [ { source = "${cfg.package}/etc/xen/xl.conf"; - target = "xen/xl.conf"; - } - { source = "${cfg.package}/etc/xen/scripts"; - target = "xen/scripts"; - } - { text = '' - source ${cfg.package}/etc/default/xendomains + { + "xen/xl.conf".source = "${cfg.package}/etc/xen/xl.conf"; + "xen/scripts".source = "${cfg.package}/etc/xen/scripts"; + "default/xendomains".text = '' + source ${cfg.package}/etc/default/xendomains - ${cfg.domains.extraConfig} - ''; - target = "default/xendomains"; - } - ] - ++ lib.optionals (builtins.compareVersions cfg.package.version "4.10" >= 0) [ + ${cfg.domains.extraConfig} + ''; + } + // optionalAttrs (builtins.compareVersions cfg.package.version "4.10" >= 0) { # in V 4.10 oxenstored requires /etc/xen/oxenstored.conf to start - { source = "${cfg.package}/etc/xen/oxenstored.conf"; - target = "xen/oxenstored.conf"; - } - ]; + "xen/oxenstored.conf".source = "${cfg.package}/etc/xen/oxenstored.conf"; + }; # Xen provides udev rules. services.udev.packages = [ cfg.package ]; diff --git a/nixos/release-combined.nix b/nixos/release-combined.nix index ca9c6f9a7f9..87783c66095 100644 --- a/nixos/release-combined.nix +++ b/nixos/release-combined.nix @@ -38,109 +38,105 @@ in rec { nixpkgs = nixpkgsSrc; })) [ "unstable" ]; - tested = pkgs.lib.hydraJob (pkgs.releaseTools.aggregate { - name = "nixos-${nixos.channel.version}"; - meta = { - description = "Release-critical builds for the NixOS channel"; - maintainers = with pkgs.lib.maintainers; [ eelco fpletz ]; - }; - constituents = - let - # Except for the given systems, return the system-specific constituent - except = systems: x: map (system: x.${system}) (pkgs.lib.subtractLists systems supportedSystems); - all = x: except [] x; - in [ - nixos.channel - (all nixos.dummy) - (all nixos.manual) - - nixos.iso_graphical.x86_64-linux or [] - nixos.iso_minimal.aarch64-linux or [] - nixos.iso_minimal.i686-linux or [] - nixos.iso_minimal.x86_64-linux or [] - nixos.ova.x86_64-linux or [] - nixos.sd_image.aarch64-linux or [] - - #(all nixos.tests.containers) - (all nixos.tests.containers-imperative) - (all nixos.tests.containers-ip) - nixos.tests.chromium.x86_64-linux or [] - (all nixos.tests.firefox) - (all nixos.tests.firewall) - (all nixos.tests.fontconfig-default-fonts) - (all nixos.tests.gnome3-xorg) - (all nixos.tests.gnome3) - (all nixos.tests.pantheon) - nixos.tests.installer.zfsroot.x86_64-linux or [] # ZFS is 64bit only - (except ["aarch64-linux"] nixos.tests.installer.lvm) - (except ["aarch64-linux"] nixos.tests.installer.luksroot) - (except ["aarch64-linux"] nixos.tests.installer.separateBoot) - (except ["aarch64-linux"] nixos.tests.installer.separateBootFat) - (except ["aarch64-linux"] nixos.tests.installer.simple) - (except ["aarch64-linux"] nixos.tests.installer.simpleLabels) - (except ["aarch64-linux"] nixos.tests.installer.simpleProvided) - (except ["aarch64-linux"] nixos.tests.installer.simpleUefiSystemdBoot) - (except ["aarch64-linux"] nixos.tests.installer.swraid) - (except ["aarch64-linux"] nixos.tests.installer.btrfsSimple) - (except ["aarch64-linux"] nixos.tests.installer.btrfsSubvols) - (except ["aarch64-linux"] nixos.tests.installer.btrfsSubvolDefault) - (except ["aarch64-linux"] nixos.tests.boot.biosCdrom) - #(except ["aarch64-linux"] nixos.tests.boot.biosUsb) # disabled due to issue #15690 - (except ["aarch64-linux"] nixos.tests.boot.uefiCdrom) - (except ["aarch64-linux"] nixos.tests.boot.uefiUsb) - (all nixos.tests.boot-stage1) - (all nixos.tests.hibernate) - nixos.tests.docker.x86_64-linux or [] - (all nixos.tests.ecryptfs) - (all nixos.tests.env) - (all nixos.tests.ipv6) - (all nixos.tests.i3wm) - # 2018-06-06: keymap tests temporarily removed from tested job - # since non-deterministic failure are blocking the channel (#41538) - #(all nixos.tests.keymap.azerty) - #(all nixos.tests.keymap.colemak) - #(all nixos.tests.keymap.dvorak) - #(all nixos.tests.keymap.dvp) - #(all nixos.tests.keymap.neo) - #(all nixos.tests.keymap.qwertz) - (all nixos.tests.plasma5) - (all nixos.tests.lightdm) - (all nixos.tests.login) - (all nixos.tests.misc) - (all nixos.tests.mutableUsers) - (all nixos.tests.nat.firewall) - (all nixos.tests.nat.firewall-conntrack) - (all nixos.tests.nat.standalone) - (all nixos.tests.networking.scripted.loopback) - (all nixos.tests.networking.scripted.static) - (all nixos.tests.networking.scripted.dhcpSimple) - (all nixos.tests.networking.scripted.dhcpOneIf) - (all nixos.tests.networking.scripted.bond) - (all nixos.tests.networking.scripted.bridge) - (all nixos.tests.networking.scripted.macvlan) - (all nixos.tests.networking.scripted.sit) - (all nixos.tests.networking.scripted.vlan) - (all nixos.tests.nfs3.simple) - (all nixos.tests.nfs4.simple) - (all nixos.tests.openssh) - (all nixos.tests.php-pcre) - (all nixos.tests.predictable-interface-names.predictable) - (all nixos.tests.predictable-interface-names.unpredictable) - (all nixos.tests.predictable-interface-names.predictableNetworkd) - (all nixos.tests.predictable-interface-names.unpredictableNetworkd) - (all nixos.tests.printing) - (all nixos.tests.proxy) - (all nixos.tests.sddm.default) - (all nixos.tests.simple) - (all nixos.tests.switchTest) - (all nixos.tests.udisks2) - (all nixos.tests.xfce) - - nixpkgs.tarball - (all allSupportedNixpkgs.emacs) - # The currently available aarch64 JDK is unfree - (except ["aarch64-linux"] allSupportedNixpkgs.jdk) + tested = + let + onFullSupported = x: map (system: "${x}.${system}") supportedSystems; + onAllSupported = x: map (system: "${x}.${system}") (supportedSystems ++ limitedSupportedSystems); + onSystems = systems: x: map (system: "${x}.${system}") + (pkgs.lib.intersectLists systems (supportedSystems ++ limitedSupportedSystems)); + in pkgs.releaseTools.aggregate { + name = "nixos-${nixos.channel.version}"; + meta = { + description = "Release-critical builds for the NixOS channel"; + maintainers = with pkgs.lib.maintainers; [ eelco fpletz ]; + }; + constituents = pkgs.lib.concatLists [ + [ "nixos.channel" ] + (onFullSupported "nixos.dummy") + (onAllSupported "nixos.iso_minimal") + (onSystems ["x86_64-linux"] "nixos.iso_plasma5") + (onFullSupported "nixos.manual") + (onSystems ["x86_64-linux"] "nixos.ova") + (onSystems ["aarch64-linux"] "nixos.sd_image") + (onSystems ["x86_64-linux"] "nixos.tests.boot.biosCdrom") + (onSystems ["x86_64-linux"] "nixos.tests.boot.biosUsb") + (onFullSupported "nixos.tests.boot-stage1") + (onSystems ["x86_64-linux"] "nixos.tests.boot.uefiCdrom") + (onSystems ["x86_64-linux"] "nixos.tests.boot.uefiUsb") + (onSystems ["x86_64-linux"] "nixos.tests.chromium") + (onFullSupported "nixos.tests.containers-imperative") + (onFullSupported "nixos.tests.containers-ip") + (onSystems ["x86_64-linux"] "nixos.tests.docker") + (onFullSupported "nixos.tests.ecryptfs") + (onFullSupported "nixos.tests.env") + (onFullSupported "nixos.tests.firefox-esr") + (onFullSupported "nixos.tests.firefox") + (onFullSupported "nixos.tests.firewall") + (onFullSupported "nixos.tests.fontconfig-default-fonts") + (onFullSupported "nixos.tests.gnome3") + (onFullSupported "nixos.tests.gnome3-xorg") + (onFullSupported "nixos.tests.hardened") + (onSystems ["x86_64-linux"] "nixos.tests.hibernate") + (onFullSupported "nixos.tests.i3wm") + (onSystems ["x86_64-linux"] "nixos.tests.installer.btrfsSimple") + (onSystems ["x86_64-linux"] "nixos.tests.installer.btrfsSubvolDefault") + (onSystems ["x86_64-linux"] "nixos.tests.installer.btrfsSubvols") + (onSystems ["x86_64-linux"] "nixos.tests.installer.luksroot") + (onSystems ["x86_64-linux"] "nixos.tests.installer.lvm") + (onSystems ["x86_64-linux"] "nixos.tests.installer.separateBootFat") + (onSystems ["x86_64-linux"] "nixos.tests.installer.separateBoot") + (onSystems ["x86_64-linux"] "nixos.tests.installer.simpleLabels") + (onSystems ["x86_64-linux"] "nixos.tests.installer.simpleProvided") + (onSystems ["x86_64-linux"] "nixos.tests.installer.simpleUefiSystemdBoot") + (onSystems ["x86_64-linux"] "nixos.tests.installer.simple") + (onSystems ["x86_64-linux"] "nixos.tests.installer.swraid") + (onFullSupported "nixos.tests.ipv6") + (onFullSupported "nixos.tests.keymap.azerty") + (onFullSupported "nixos.tests.keymap.colemak") + (onFullSupported "nixos.tests.keymap.dvorak") + (onFullSupported "nixos.tests.keymap.dvp") + (onFullSupported "nixos.tests.keymap.neo") + (onFullSupported "nixos.tests.keymap.qwertz") + (onFullSupported "nixos.tests.latestKernel.hardened") + (onFullSupported "nixos.tests.latestKernel.login") + (onFullSupported "nixos.tests.lightdm") + (onFullSupported "nixos.tests.login") + (onFullSupported "nixos.tests.misc") + (onFullSupported "nixos.tests.mutableUsers") + (onFullSupported "nixos.tests.nat.firewall-conntrack") + (onFullSupported "nixos.tests.nat.firewall") + (onFullSupported "nixos.tests.nat.standalone") + (onFullSupported "nixos.tests.networking.scripted.bond") + (onFullSupported "nixos.tests.networking.scripted.bridge") + (onFullSupported "nixos.tests.networking.scripted.dhcpOneIf") + (onFullSupported "nixos.tests.networking.scripted.dhcpSimple") + (onFullSupported "nixos.tests.networking.scripted.loopback") + (onFullSupported "nixos.tests.networking.scripted.macvlan") + (onFullSupported "nixos.tests.networking.scripted.sit") + (onFullSupported "nixos.tests.networking.scripted.static") + (onFullSupported "nixos.tests.networking.scripted.vlan") + (onFullSupported "nixos.tests.nfs3.simple") + (onFullSupported "nixos.tests.nfs4.simple") + (onFullSupported "nixos.tests.openssh") + (onFullSupported "nixos.tests.pantheon") + (onFullSupported "nixos.tests.php.fpm") + (onFullSupported "nixos.tests.php.pcre") + (onFullSupported "nixos.tests.plasma5") + (onFullSupported "nixos.tests.predictable-interface-names.predictableNetworkd") + (onFullSupported "nixos.tests.predictable-interface-names.predictable") + (onFullSupported "nixos.tests.predictable-interface-names.unpredictableNetworkd") + (onFullSupported "nixos.tests.predictable-interface-names.unpredictable") + (onFullSupported "nixos.tests.printing") + (onFullSupported "nixos.tests.proxy") + (onFullSupported "nixos.tests.sddm.default") + (onFullSupported "nixos.tests.simple") + (onFullSupported "nixos.tests.switchTest") + (onFullSupported "nixos.tests.udisks2") + (onFullSupported "nixos.tests.xfce") + (onSystems ["i686-linux"] "nixos.tests.zfs.installer") + (onFullSupported "nixpkgs.emacs") + (onFullSupported "nixpkgs.jdk") + ["nixpkgs.tarball"] ]; - }); - + }; } diff --git a/nixos/release-small.nix b/nixos/release-small.nix index 74c16e990f3..6da2c59cedd 100644 --- a/nixos/release-small.nix +++ b/nixos/release-small.nix @@ -28,7 +28,7 @@ let in rec { nixos = { - inherit (nixos') channel manual iso_minimal dummy; + inherit (nixos') channel manual options iso_minimal dummy; tests = { inherit (nixos'.tests) containers-imperative @@ -40,7 +40,7 @@ in rec { nat nfs3 openssh - php-pcre + php predictable-interface-names proxy simple; @@ -82,18 +82,43 @@ in rec { vim; }; - tested = lib.hydraJob (pkgs.releaseTools.aggregate { + tested = pkgs.releaseTools.aggregate { name = "nixos-${nixos.channel.version}"; meta = { description = "Release-critical builds for the NixOS channel"; maintainers = [ lib.maintainers.eelco ]; }; constituents = - let all = x: map (system: x.${system}) supportedSystems; in - [ nixpkgs.tarball - (all nixpkgs.jdk) - ] - ++ lib.collect lib.isDerivation nixos; - }); + [ "nixos.channel" + "nixos.dummy.x86_64-linux" + "nixos.iso_minimal.x86_64-linux" + "nixos.manual.x86_64-linux" + "nixos.tests.boot.biosCdrom.x86_64-linux" + "nixos.tests.containers-imperative.x86_64-linux" + "nixos.tests.containers-ip.x86_64-linux" + "nixos.tests.firewall.x86_64-linux" + "nixos.tests.installer.lvm.x86_64-linux" + "nixos.tests.installer.separateBoot.x86_64-linux" + "nixos.tests.installer.simple.x86_64-linux" + "nixos.tests.ipv6.x86_64-linux" + "nixos.tests.login.x86_64-linux" + "nixos.tests.misc.x86_64-linux" + "nixos.tests.nat.firewall-conntrack.x86_64-linux" + "nixos.tests.nat.firewall.x86_64-linux" + "nixos.tests.nat.standalone.x86_64-linux" + "nixos.tests.nfs3.simple.x86_64-linux" + "nixos.tests.openssh.x86_64-linux" + "nixos.tests.php.fpm.x86_64-linux" + "nixos.tests.php.pcre.x86_64-linux" + "nixos.tests.predictable-interface-names.predictable.x86_64-linux" + "nixos.tests.predictable-interface-names.predictableNetworkd.x86_64-linux" + "nixos.tests.predictable-interface-names.unpredictable.x86_64-linux" + "nixos.tests.predictable-interface-names.unpredictableNetworkd.x86_64-linux" + "nixos.tests.proxy.x86_64-linux" + "nixos.tests.simple.x86_64-linux" + "nixpkgs.jdk.x86_64-linux" + "nixpkgs.tarball" + ]; + }; } diff --git a/nixos/release.nix b/nixos/release.nix index f40b5fa9bd7..6107f352971 100644 --- a/nixos/release.nix +++ b/nixos/release.nix @@ -20,7 +20,7 @@ let allTestsForSystem = system: import ./tests/all-tests.nix { inherit system; - pkgs = import nixpkgs { inherit system; }; + pkgs = import ./.. { inherit system; }; callTest = t: { ${system} = hydraJob t.test; }; @@ -28,7 +28,7 @@ let allTests = foldAttrs recursiveUpdate {} (map allTestsForSystem supportedSystems); - pkgs = import nixpkgs { system = "x86_64-linux"; }; + pkgs = import ./.. { system = "x86_64-linux"; }; versionModule = @@ -41,7 +41,7 @@ let makeIso = { module, type, system, ... }: - with import nixpkgs { inherit system; }; + with import ./.. { inherit system; }; hydraJob ((import lib/eval-config.nix { inherit system; @@ -54,7 +54,7 @@ let makeSdImage = { module, system, ... }: - with import nixpkgs { inherit system; }; + with import ./.. { inherit system; }; hydraJob ((import lib/eval-config.nix { inherit system; @@ -65,7 +65,7 @@ let makeSystemTarball = { module, maintainers ? ["viric"], system }: - with import nixpkgs { inherit system; }; + with import ./.. { inherit system; }; let @@ -149,9 +149,9 @@ in rec { inherit system; }); - iso_graphical = forMatchingSystems [ "x86_64-linux" ] (system: makeIso { - module = ./modules/installer/cd-dvd/installation-cd-graphical-kde.nix; - type = "graphical"; + iso_plasma5 = forMatchingSystems [ "x86_64-linux" ] (system: makeIso { + module = ./modules/installer/cd-dvd/installation-cd-graphical-plasma5.nix; + type = "plasma5"; inherit system; }); @@ -188,7 +188,7 @@ in rec { # A bootable VirtualBox virtual appliance as an OVA file (i.e. packaged OVF). ova = forMatchingSystems [ "x86_64-linux" ] (system: - with import nixpkgs { inherit system; }; + with import ./.. { inherit system; }; hydraJob ((import lib/eval-config.nix { inherit system; @@ -204,12 +204,13 @@ in rec { # A disk image that can be imported to Amazon EC2 and registered as an AMI amazonImage = forMatchingSystems [ "x86_64-linux" "aarch64-linux" ] (system: - with import nixpkgs { inherit system; }; + with import ./.. { inherit system; }; hydraJob ((import lib/eval-config.nix { inherit system; modules = - [ versionModule + [ configuration + versionModule ./maintainers/scripts/ec2/amazon-image.nix ]; }).config.system.build.amazonImage) diff --git a/nixos/tests/3proxy.nix b/nixos/tests/3proxy.nix index b8e1dac0e89..3e2061d7e42 100644 --- a/nixos/tests/3proxy.nix +++ b/nixos/tests/3proxy.nix @@ -1,4 +1,4 @@ -import ./make-test.nix ({ pkgs, ...} : { +import ./make-test-python.nix ({ pkgs, ...} : { name = "3proxy"; meta = with pkgs.stdenv.lib.maintainers; { maintainers = [ misuzu ]; @@ -134,29 +134,52 @@ import ./make-test.nix ({ pkgs, ...} : { }; testScript = '' - startAll; - - $peer1->waitForUnit("3proxy.service"); + peer1.wait_for_unit("3proxy.service") + peer1.wait_for_open_port("9999") # test none auth - $peer0->succeed("${pkgs.wget}/bin/wget -e use_proxy=yes -e http_proxy=http://192.168.0.2:3128 -S -O /dev/null http://216.58.211.112:9999"); - $peer0->succeed("${pkgs.wget}/bin/wget -e use_proxy=yes -e http_proxy=http://192.168.0.2:3128 -S -O /dev/null http://192.168.0.2:9999"); - $peer0->succeed("${pkgs.wget}/bin/wget -e use_proxy=yes -e http_proxy=http://192.168.0.2:3128 -S -O /dev/null http://127.0.0.1:9999"); + peer0.succeed( + "${pkgs.wget}/bin/wget -e use_proxy=yes -e http_proxy=http://192.168.0.2:3128 -S -O /dev/null http://216.58.211.112:9999" + ) + peer0.succeed( + "${pkgs.wget}/bin/wget -e use_proxy=yes -e http_proxy=http://192.168.0.2:3128 -S -O /dev/null http://192.168.0.2:9999" + ) + peer0.succeed( + "${pkgs.wget}/bin/wget -e use_proxy=yes -e http_proxy=http://192.168.0.2:3128 -S -O /dev/null http://127.0.0.1:9999" + ) - $peer2->waitForUnit("3proxy.service"); + peer2.wait_for_unit("3proxy.service") + peer2.wait_for_open_port("9999") # test iponly auth - $peer0->succeed("${pkgs.wget}/bin/wget -e use_proxy=yes -e http_proxy=http://192.168.0.3:3128 -S -O /dev/null http://216.58.211.113:9999"); - $peer0->fail("${pkgs.wget}/bin/wget -e use_proxy=yes -e http_proxy=http://192.168.0.3:3128 -S -O /dev/null http://192.168.0.3:9999"); - $peer0->fail("${pkgs.wget}/bin/wget -e use_proxy=yes -e http_proxy=http://192.168.0.3:3128 -S -O /dev/null http://127.0.0.1:9999"); + peer0.succeed( + "${pkgs.wget}/bin/wget -e use_proxy=yes -e http_proxy=http://192.168.0.3:3128 -S -O /dev/null http://216.58.211.113:9999" + ) + peer0.fail( + "${pkgs.wget}/bin/wget -e use_proxy=yes -e http_proxy=http://192.168.0.3:3128 -S -O /dev/null http://192.168.0.3:9999" + ) + peer0.fail( + "${pkgs.wget}/bin/wget -e use_proxy=yes -e http_proxy=http://192.168.0.3:3128 -S -O /dev/null http://127.0.0.1:9999" + ) - $peer3->waitForUnit("3proxy.service"); + peer3.wait_for_unit("3proxy.service") + peer3.wait_for_open_port("9999") # test strong auth - $peer0->succeed("${pkgs.wget}/bin/wget -e use_proxy=yes -e http_proxy=http://admin:bigsecret\@192.168.0.4:3128 -S -O /dev/null http://216.58.211.114:9999"); - $peer0->fail("${pkgs.wget}/bin/wget -e use_proxy=yes -e http_proxy=http://admin:bigsecret\@192.168.0.4:3128 -S -O /dev/null http://192.168.0.4:9999"); - $peer0->fail("${pkgs.wget}/bin/wget -e use_proxy=yes -e http_proxy=http://192.168.0.4:3128 -S -O /dev/null http://216.58.211.114:9999"); - $peer0->fail("${pkgs.wget}/bin/wget -e use_proxy=yes -e http_proxy=http://192.168.0.4:3128 -S -O /dev/null http://192.168.0.4:9999"); - $peer0->fail("${pkgs.wget}/bin/wget -e use_proxy=yes -e http_proxy=http://192.168.0.4:3128 -S -O /dev/null http://127.0.0.1:9999"); + peer0.succeed( + "${pkgs.wget}/bin/wget -e use_proxy=yes -e http_proxy=http://admin:bigsecret\@192.168.0.4:3128 -S -O /dev/null http://216.58.211.114:9999" + ) + peer0.fail( + "${pkgs.wget}/bin/wget -e use_proxy=yes -e http_proxy=http://admin:bigsecret\@192.168.0.4:3128 -S -O /dev/null http://192.168.0.4:9999" + ) + peer0.fail( + "${pkgs.wget}/bin/wget -e use_proxy=yes -e http_proxy=http://192.168.0.4:3128 -S -O /dev/null http://216.58.211.114:9999" + ) + peer0.fail( + "${pkgs.wget}/bin/wget -e use_proxy=yes -e http_proxy=http://192.168.0.4:3128 -S -O /dev/null http://192.168.0.4:9999" + ) + peer0.fail( + "${pkgs.wget}/bin/wget -e use_proxy=yes -e http_proxy=http://192.168.0.4:3128 -S -O /dev/null http://127.0.0.1:9999" + ) ''; }) diff --git a/nixos/tests/acme.nix b/nixos/tests/acme.nix index 6bd315ff1ea..693f02962f4 100644 --- a/nixos/tests/acme.nix +++ b/nixos/tests/acme.nix @@ -1,54 +1,82 @@ let - commonConfig = ./common/letsencrypt/common.nix; + commonConfig = ./common/acme/client; + + dnsScript = {writeScript, dnsAddress, bash, curl}: writeScript "dns-hook.sh" '' + #!${bash}/bin/bash + set -euo pipefail + echo '[INFO]' "[$2]" 'dns-hook.sh' $* + if [ "$1" = "present" ]; then + ${curl}/bin/curl --data '{"host": "'"$2"'", "value": "'"$3"'"}' http://${dnsAddress}:8055/set-txt + else + ${curl}/bin/curl --data '{"host": "'"$2"'"}' http://${dnsAddress}:8055/clear-txt + fi + ''; + in import ./make-test-python.nix { name = "acme"; nodes = rec { - letsencrypt = ./common/letsencrypt; + acme = { nodes, lib, ... }: { + imports = [ ./common/acme/server ]; + networking.nameservers = lib.mkForce [ + nodes.dnsserver.config.networking.primaryIPAddress + ]; + }; - acmeStandalone = { config, pkgs, ... }: { - imports = [ commonConfig ]; - networking.firewall.allowedTCPPorts = [ 80 ]; - networking.extraHosts = '' - ${config.networking.primaryIPAddress} standalone.com - ''; - security.acme = { - server = "https://acme-v02.api.letsencrypt.org/dir"; - certs."standalone.com" = { - webroot = "/var/lib/acme/acme-challenges"; + dnsserver = { nodes, pkgs, ... }: { + networking.firewall.allowedTCPPorts = [ 8055 53 ]; + networking.firewall.allowedUDPPorts = [ 53 ]; + systemd.services.pebble-challtestsrv = { + enable = true; + description = "Pebble ACME challenge test server"; + wantedBy = [ "network.target" ]; + serviceConfig = { + ExecStart = "${pkgs.pebble}/bin/pebble-challtestsrv -dns01 ':53' -defaultIPv6 '' -defaultIPv4 '${nodes.webserver.config.networking.primaryIPAddress}'"; + # Required to bind on privileged ports. + AmbientCapabilities = [ "CAP_NET_BIND_SERVICE" ]; }; }; - systemd.targets."acme-finished-standalone.com" = {}; - systemd.services."acme-standalone.com" = { - wants = [ "acme-finished-standalone.com.target" ]; - before = [ "acme-finished-standalone.com.target" ]; + }; + + acmeStandalone = { nodes, lib, config, pkgs, ... }: { + imports = [ commonConfig ]; + networking.nameservers = lib.mkForce [ + nodes.dnsserver.config.networking.primaryIPAddress + ]; + networking.firewall.allowedTCPPorts = [ 80 ]; + security.acme.certs."standalone.test" = { + webroot = "/var/lib/acme/acme-challenges"; + }; + systemd.targets."acme-finished-standalone.test" = {}; + systemd.services."acme-standalone.test" = { + wants = [ "acme-finished-standalone.test.target" ]; + before = [ "acme-finished-standalone.test.target" ]; }; services.nginx.enable = true; - services.nginx.virtualHosts."standalone.com" = { + services.nginx.virtualHosts."standalone.test" = { locations."/.well-known/acme-challenge".root = "/var/lib/acme/acme-challenges"; }; }; - webserver = { config, pkgs, ... }: { + webserver = { nodes, config, pkgs, lib, ... }: { imports = [ commonConfig ]; networking.firewall.allowedTCPPorts = [ 80 443 ]; - - networking.extraHosts = '' - ${config.networking.primaryIPAddress} a.example.com - ${config.networking.primaryIPAddress} b.example.com - ''; + networking.nameservers = lib.mkForce [ + nodes.dnsserver.config.networking.primaryIPAddress + ]; # A target remains active. Use this to probe the fact that # a service fired eventhough it is not RemainAfterExit - systemd.targets."acme-finished-a.example.com" = {}; - systemd.services."acme-a.example.com" = { - wants = [ "acme-finished-a.example.com.target" ]; - before = [ "acme-finished-a.example.com.target" ]; + systemd.targets."acme-finished-a.example.test" = {}; + systemd.services."acme-a.example.test" = { + wants = [ "acme-finished-a.example.test.target" ]; + before = [ "acme-finished-a.example.test.target" ]; + after = [ "nginx.service" ]; }; services.nginx.enable = true; - services.nginx.virtualHosts."a.example.com" = { + services.nginx.virtualHosts."a.example.test" = { enableACME = true; forceSSL = true; locations."/".root = pkgs.runCommand "docroot" {} '' @@ -57,37 +85,65 @@ in import ./make-test-python.nix { ''; }; - security.acme.server = "https://acme-v02.api.letsencrypt.org/dir"; + security.acme.server = "https://acme.test/dir"; - nesting.clone = [ - ({pkgs, ...}: { - - networking.extraHosts = '' - ${config.networking.primaryIPAddress} b.example.com + specialisation.second-cert.configuration = {pkgs, ...}: { + systemd.targets."acme-finished-b.example.test" = {}; + systemd.services."acme-b.example.test" = { + wants = [ "acme-finished-b.example.test.target" ]; + before = [ "acme-finished-b.example.test.target" ]; + after = [ "nginx.service" ]; + }; + services.nginx.virtualHosts."b.example.test" = { + enableACME = true; + forceSSL = true; + locations."/".root = pkgs.runCommand "docroot" {} '' + mkdir -p "$out" + echo hello world > "$out/index.html" ''; - systemd.targets."acme-finished-b.example.com" = {}; - systemd.services."acme-b.example.com" = { - wants = [ "acme-finished-b.example.com.target" ]; - before = [ "acme-finished-b.example.com.target" ]; - }; - services.nginx.virtualHosts."b.example.com" = { - enableACME = true; - forceSSL = true; - locations."/".root = pkgs.runCommand "docroot" {} '' - mkdir -p "$out" - echo hello world > "$out/index.html" - ''; - }; - }) - ]; + }; + }; + specialisation.dns-01.configuration = {pkgs, config, nodes, lib, ...}: { + security.acme.certs."example.test" = { + domain = "*.example.test"; + dnsProvider = "exec"; + dnsPropagationCheck = false; + credentialsFile = with pkgs; writeText "wildcard.env" '' + EXEC_PATH=${dnsScript { inherit writeScript bash curl; dnsAddress = nodes.dnsserver.config.networking.primaryIPAddress; }} + ''; + user = config.services.nginx.user; + group = config.services.nginx.group; + }; + systemd.targets."acme-finished-example.test" = {}; + systemd.services."acme-example.test" = { + wants = [ "acme-finished-example.test.target" ]; + before = [ "acme-finished-example.test.target" "nginx.service" ]; + wantedBy = [ "nginx.service" ]; + }; + services.nginx.virtualHosts."c.example.test" = { + forceSSL = true; + sslCertificate = config.security.acme.certs."example.test".directory + "/cert.pem"; + sslTrustedCertificate = config.security.acme.certs."example.test".directory + "/full.pem"; + sslCertificateKey = config.security.acme.certs."example.test".directory + "/key.pem"; + locations."/".root = pkgs.runCommand "docroot" {} '' + mkdir -p "$out" + echo hello world > "$out/index.html" + ''; + }; + }; }; - client = commonConfig; + client = {nodes, lib, ...}: { + imports = [ commonConfig ]; + networking.nameservers = lib.mkForce [ + nodes.dnsserver.config.networking.primaryIPAddress + ]; + }; }; testScript = {nodes, ...}: let - newServerSystem = nodes.webserver2.config.system.build.toplevel; + newServerSystem = nodes.webserver.config.system.build.toplevel; switchToNewServer = "${newServerSystem}/bin/switch-to-configuration test"; in # Note, wait_for_unit does not work for oneshot services that do not have RemainAfterExit=true, @@ -97,37 +153,58 @@ in import ./make-test-python.nix { # can use them to probe that a oneshot fired. It is a bit ugly, but it is the best we can do '' client.start() - letsencrypt.start() + dnsserver.start() + + acme.wait_for_unit("default.target") + dnsserver.wait_for_unit("pebble-challtestsrv.service") + client.succeed( + 'curl --data \'{"host": "acme.test", "addresses": ["${nodes.acme.config.networking.primaryIPAddress}"]}\' http://${nodes.dnsserver.config.networking.primaryIPAddress}:8055/add-a' + ) + client.succeed( + 'curl --data \'{"host": "standalone.test", "addresses": ["${nodes.acmeStandalone.config.networking.primaryIPAddress}"]}\' http://${nodes.dnsserver.config.networking.primaryIPAddress}:8055/add-a' + ) + + acme.start() acmeStandalone.start() - letsencrypt.wait_for_unit("default.target") - letsencrypt.wait_for_unit("pebble.service") + acme.wait_for_unit("default.target") + acme.wait_for_unit("pebble.service") with subtest("can request certificate with HTTPS-01 challenge"): acmeStandalone.wait_for_unit("default.target") - acmeStandalone.succeed("systemctl start acme-standalone.com.service") - acmeStandalone.wait_for_unit("acme-finished-standalone.com.target") + acmeStandalone.succeed("systemctl start acme-standalone.test.service") + acmeStandalone.wait_for_unit("acme-finished-standalone.test.target") client.wait_for_unit("default.target") - client.succeed("curl https://acme-v02.api.letsencrypt.org:15000/roots/0 > /tmp/ca.crt") - client.succeed( - "curl https://acme-v02.api.letsencrypt.org:15000/intermediate-keys/0 >> /tmp/ca.crt" - ) + client.succeed("curl https://acme.test:15000/roots/0 > /tmp/ca.crt") + client.succeed("curl https://acme.test:15000/intermediate-keys/0 >> /tmp/ca.crt") with subtest("Can request certificate for nginx service"): - webserver.wait_for_unit("acme-finished-a.example.com.target") + webserver.wait_for_unit("acme-finished-a.example.test.target") client.succeed( - "curl --cacert /tmp/ca.crt https://a.example.com/ | grep -qF 'hello world'" + "curl --cacert /tmp/ca.crt https://a.example.test/ | grep -qF 'hello world'" ) with subtest("Can add another certificate for nginx service"): webserver.succeed( - "/run/current-system/fine-tune/child-1/bin/switch-to-configuration test" + "/run/current-system/specialisation/second-cert/bin/switch-to-configuration test" ) - webserver.wait_for_unit("acme-finished-b.example.com.target") + webserver.wait_for_unit("acme-finished-b.example.test.target") client.succeed( - "curl --cacert /tmp/ca.crt https://b.example.com/ | grep -qF 'hello world'" + "curl --cacert /tmp/ca.crt https://b.example.test/ | grep -qF 'hello world'" + ) + + with subtest("Can request wildcard certificates using DNS-01 challenge"): + webserver.succeed( + "${switchToNewServer}" + ) + webserver.succeed( + "/run/current-system/specialisation/dns-01/bin/switch-to-configuration test" + ) + webserver.wait_for_unit("acme-finished-example.test.target") + client.succeed( + "curl --cacert /tmp/ca.crt https://c.example.test/ | grep -qF 'hello world'" ) ''; } diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix index 6413895c4c5..b0c9c7bc225 100644 --- a/nixos/tests/all-tests.nix +++ b/nixos/tests/all-tests.nix @@ -22,7 +22,7 @@ let in { _3proxy = handleTest ./3proxy.nix {}; - acme = handleTestOn ["x86_64-linux"] ./acme.nix {}; + acme = handleTest ./acme.nix {}; atd = handleTest ./atd.nix {}; automysqlbackup = handleTest ./automysqlbackup.nix {}; avahi = handleTest ./avahi.nix {}; @@ -32,13 +32,14 @@ in bees = handleTest ./bees.nix {}; bind = handleTest ./bind.nix {}; bittorrent = handleTest ./bittorrent.nix {}; - #blivet = handleTest ./blivet.nix {}; # broken since 2017-07024 + buildkite-agents = handleTest ./buildkite-agents.nix {}; boot = handleTestOn ["x86_64-linux"] ./boot.nix {}; # syslinux is unsupported on aarch64 boot-stage1 = handleTest ./boot-stage1.nix {}; borgbackup = handleTest ./borgbackup.nix {}; buildbot = handleTest ./buildbot.nix {}; caddy = handleTest ./caddy.nix {}; cadvisor = handleTestOn ["x86_64-linux"] ./cadvisor.nix {}; + cage = handleTest ./cage.nix {}; cassandra = handleTest ./cassandra.nix {}; ceph-single-node = handleTestOn ["x86_64-linux"] ./ceph-single-node.nix {}; ceph-multi-node = handleTestOn ["x86_64-linux"] ./ceph-multi-node.nix {}; @@ -50,6 +51,7 @@ in cloud-init = handleTest ./cloud-init.nix {}; codimd = handleTest ./codimd.nix {}; consul = handleTest ./consul.nix {}; + cockroachdb = handleTestOn ["x86_64-linux"] ./cockroachdb.nix {}; containers-bridge = handleTest ./containers-bridge.nix {}; containers-ephemeral = handleTest ./containers-ephemeral.nix {}; containers-extra_veth = handleTest ./containers-extra_veth.nix {}; @@ -61,10 +63,11 @@ in containers-portforward = handleTest ./containers-portforward.nix {}; containers-restart_networking = handleTest ./containers-restart_networking.nix {}; containers-tmpfs = handleTest ./containers-tmpfs.nix {}; + corerad = handleTest ./corerad.nix {}; couchdb = handleTest ./couchdb.nix {}; deluge = handleTest ./deluge.nix {}; dhparams = handleTest ./dhparams.nix {}; - dnscrypt-proxy = handleTestOn ["x86_64-linux"] ./dnscrypt-proxy.nix {}; + dnscrypt-proxy2 = handleTestOn ["x86_64-linux"] ./dnscrypt-proxy2.nix {}; docker = handleTestOn ["x86_64-linux"] ./docker.nix {}; docker-containers = handleTestOn ["x86_64-linux"] ./docker-containers.nix {}; docker-edge = handleTestOn ["x86_64-linux"] ./docker-edge.nix {}; @@ -73,6 +76,7 @@ in docker-tools = handleTestOn ["x86_64-linux"] ./docker-tools.nix {}; docker-tools-overlay = handleTestOn ["x86_64-linux"] ./docker-tools-overlay.nix {}; documize = handleTest ./documize.nix {}; + dokuwiki = handleTest ./dokuwiki.nix {}; dovecot = handleTest ./dovecot.nix {}; # ec2-config doesn't work in a sandbox as the simulated ec2 instance needs network access #ec2-config = (handleTestOn ["x86_64-linux"] ./ec2.nix {}).boot-ec2-config or {}; @@ -86,13 +90,18 @@ in fancontrol = handleTest ./fancontrol.nix {}; ferm = handleTest ./ferm.nix {}; firefox = handleTest ./firefox.nix {}; + firefox-esr = handleTest ./firefox.nix { esr = true; }; firewall = handleTest ./firewall.nix {}; fish = handleTest ./fish.nix {}; flannel = handleTestOn ["x86_64-linux"] ./flannel.nix {}; fluentd = handleTest ./fluentd.nix {}; fontconfig-default-fonts = handleTest ./fontconfig-default-fonts.nix {}; + freeswitch = handleTest ./freeswitch.nix {}; fsck = handleTest ./fsck.nix {}; + gerrit = handleTest ./gerrit.nix {}; gotify-server = handleTest ./gotify-server.nix {}; + grocy = handleTest ./grocy.nix {}; + gitdaemon = handleTest ./gitdaemon.nix {}; gitea = handleTest ./gitea.nix {}; gitlab = handleTest ./gitlab.nix {}; gitolite = handleTest ./gitolite.nix {}; @@ -113,35 +122,46 @@ in handbrake = handleTestOn ["x86_64-linux"] ./handbrake.nix {}; haproxy = handleTest ./haproxy.nix {}; hardened = handleTest ./hardened.nix {}; - hibernate = handleTest ./hibernate.nix {}; + # 9pnet_virtio used to mount /nix partition doesn't support + # hibernation. This test happens to work on x86_64-linux but + # not on other platforms. + hibernate = handleTestOn ["x86_64-linux"] ./hibernate.nix {}; hitch = handleTest ./hitch {}; hocker-fetchdocker = handleTest ./hocker-fetchdocker {}; home-assistant = handleTest ./home-assistant.nix {}; hound = handleTest ./hound.nix {}; hydra = handleTest ./hydra {}; + hydra-db-migration = handleTest ./hydra/db-migration.nix {}; i3wm = handleTest ./i3wm.nix {}; icingaweb2 = handleTest ./icingaweb2.nix {}; iftop = handleTest ./iftop.nix {}; + ihatemoney = handleTest ./ihatemoney.nix {}; incron = handleTest ./incron.nix {}; influxdb = handleTest ./influxdb.nix {}; initrd-network-ssh = handleTest ./initrd-network-ssh {}; initrdNetwork = handleTest ./initrd-network.nix {}; installer = handleTest ./installer.nix {}; + iodine = handleTest ./iodine.nix {}; ipv6 = handleTest ./ipv6.nix {}; jackett = handleTest ./jackett.nix {}; jellyfin = handleTest ./jellyfin.nix {}; jenkins = handleTest ./jenkins.nix {}; + jirafeau = handleTest ./jirafeau.nix {}; + k3s = handleTest ./k3s.nix {}; kafka = handleTest ./kafka.nix {}; + keepalived = handleTest ./keepalived.nix {}; kerberos = handleTest ./kerberos/default.nix {}; kernel-latest = handleTest ./kernel-latest.nix {}; kernel-lts = handleTest ./kernel-lts.nix {}; kernel-testing = handleTest ./kernel-testing.nix {}; keymap = handleTest ./keymap.nix {}; knot = handleTest ./knot.nix {}; + krb5 = discoverTests (import ./krb5 {}); kubernetes.dns = handleTestOn ["x86_64-linux"] ./kubernetes/dns.nix {}; # kubernetes.e2e should eventually replace kubernetes.rbac when it works #kubernetes.e2e = handleTestOn ["x86_64-linux"] ./kubernetes/e2e.nix {}; kubernetes.rbac = handleTestOn ["x86_64-linux"] ./kubernetes/rbac.nix {}; + latestKernel.hardened = handleTest ./hardened.nix { latestKernel = true; }; latestKernel.login = handleTest ./login.nix { latestKernel = true; }; ldap = handleTest ./ldap.nix {}; leaps = handleTest ./leaps.nix {}; @@ -153,6 +173,7 @@ in #logstash = handleTest ./logstash.nix {}; lorri = handleTest ./lorri/default.nix {}; magnetico = handleTest ./magnetico.nix {}; + magic-wormhole-mailbox-server = handleTest ./magic-wormhole-mailbox-server.nix {}; mailcatcher = handleTest ./mailcatcher.nix {}; mathics = handleTest ./mathics.nix {}; matomo = handleTest ./matomo.nix {}; @@ -178,12 +199,13 @@ in mysql = handleTest ./mysql.nix {}; mysqlBackup = handleTest ./mysql-backup.nix {}; mysqlReplication = handleTest ./mysql-replication.nix {}; + nagios = handleTest ./nagios.nix {}; nat.firewall = handleTest ./nat.nix { withFirewall = true; }; nat.firewall-conntrack = handleTest ./nat.nix { withFirewall = true; withConntrackHelpers = true; }; nat.standalone = handleTest ./nat.nix { withFirewall = false; }; ndppd = handleTest ./ndppd.nix {}; neo4j = handleTest ./neo4j.nix {}; - nesting = handleTest ./nesting.nix {}; + specialisation = handleTest ./specialisation.nix {}; netdata = handleTest ./netdata.nix {}; networking.networkd = handleTest ./networking.nix { networkd = true; }; networking.scripted = handleTest ./networking.nix { networkd = false; }; @@ -196,6 +218,8 @@ in nfs4 = handleTest ./nfs { version = 4; }; nghttpx = handleTest ./nghttpx.nix {}; nginx = handleTest ./nginx.nix {}; + nginx-etag = handleTest ./nginx-etag.nix {}; + nginx-pubhtml = handleTest ./nginx-pubhtml.nix {}; nginx-sso = handleTest ./nginx-sso.nix {}; nix-ssh-serve = handleTest ./nix-ssh-serve.nix {}; nixos-generate-config = handleTest ./nixos-generate-config.nix {}; @@ -206,8 +230,7 @@ in openldap = handleTest ./openldap.nix {}; opensmtpd = handleTest ./opensmtpd.nix {}; openssh = handleTest ./openssh.nix {}; - # openstack-image-userdata doesn't work in a sandbox as the simulated openstack instance needs network access - #openstack-image-userdata = (handleTestOn ["x86_64-linux"] ./openstack-image.nix {}).userdata or {}; + openstack-image-userdata = (handleTestOn ["x86_64-linux"] ./openstack-image.nix {}).userdata or {}; openstack-image-metadata = (handleTestOn ["x86_64-linux"] ./openstack-image.nix {}).metadata or {}; orangefs = handleTest ./orangefs.nix {}; os-prober = handleTestOn ["x86_64-linux"] ./os-prober.nix {}; @@ -221,7 +244,7 @@ in peerflix = handleTest ./peerflix.nix {}; pgjwt = handleTest ./pgjwt.nix {}; pgmanage = handleTest ./pgmanage.nix {}; - php-pcre = handleTest ./php-pcre.nix {}; + php = handleTest ./php {}; plasma5 = handleTest ./plasma5.nix {}; plotinus = handleTest ./plotinus.nix {}; postgis = handleTest ./postgis.nix {}; @@ -237,11 +260,13 @@ in prosodyMysql = handleTest ./xmpp/prosody-mysql.nix {}; proxy = handleTest ./proxy.nix {}; quagga = handleTest ./quagga.nix {}; + quorum = handleTest ./quorum.nix {}; rabbitmq = handleTest ./rabbitmq.nix {}; radarr = handleTest ./radarr.nix {}; radicale = handleTest ./radicale.nix {}; redis = handleTest ./redis.nix {}; redmine = handleTest ./redmine.nix {}; + restic = handleTest ./restic.nix {}; roundcube = handleTest ./roundcube.nix {}; rspamd = handleTest ./rspamd.nix {}; rss2email = handleTest ./rss2email.nix {}; @@ -249,7 +274,9 @@ in runInMachine = handleTest ./run-in-machine.nix {}; rxe = handleTest ./rxe.nix {}; samba = handleTest ./samba.nix {}; + sanoid = handleTest ./sanoid.nix {}; sddm = handleTest ./sddm.nix {}; + service-runner = handleTest ./service-runner.nix {}; shiori = handleTest ./shiori.nix {}; signal-desktop = handleTest ./signal-desktop.nix {}; simple = handleTest ./simple.nix {}; @@ -257,17 +284,20 @@ in smokeping = handleTest ./smokeping.nix {}; snapper = handleTest ./snapper.nix {}; solr = handleTest ./solr.nix {}; + spacecookie = handleTest ./spacecookie.nix {}; sonarr = handleTest ./sonarr.nix {}; strongswan-swanctl = handleTest ./strongswan-swanctl.nix {}; sudo = handleTest ./sudo.nix {}; switchTest = handleTest ./switch-test.nix {}; + sympa = handleTest ./sympa.nix {}; syncthing-init = handleTest ./syncthing-init.nix {}; syncthing-relay = handleTest ./syncthing-relay.nix {}; systemd = handleTest ./systemd.nix {}; systemd-analyze = handleTest ./systemd-analyze.nix {}; systemd-confinement = handleTest ./systemd-confinement.nix {}; systemd-timesyncd = handleTest ./systemd-timesyncd.nix {}; - systemd-networkd-wireguard = handleTest ./systemd-networkd-wireguard.nix {}; + systemd-networkd-vrf = handleTest ./systemd-networkd-vrf.nix {}; + systemd-networkd = handleTest ./systemd-networkd.nix {}; systemd-nspawn = handleTest ./systemd-nspawn.nix {}; pdns-recursor = handleTest ./pdns-recursor.nix {}; taskserver = handleTest ./taskserver.nix {}; @@ -276,19 +306,26 @@ in timezone = handleTest ./timezone.nix {}; tinydns = handleTest ./tinydns.nix {}; tor = handleTest ./tor.nix {}; + # traefik test relies on docker-containers + traefik = handleTestOn ["x86_64-linux"] ./traefik.nix {}; transmission = handleTest ./transmission.nix {}; trac = handleTest ./trac.nix {}; + trilium-server = handleTestOn ["x86_64-linux"] ./trilium-server.nix {}; trezord = handleTest ./trezord.nix {}; trickster = handleTest ./trickster.nix {}; + tuptime = handleTest ./tuptime.nix {}; udisks2 = handleTest ./udisks2.nix {}; upnp = handleTest ./upnp.nix {}; uwsgi = handleTest ./uwsgi.nix {}; vault = handleTest ./vault.nix {}; + victoriametrics = handleTest ./victoriametrics.nix {}; virtualbox = handleTestOn ["x86_64-linux"] ./virtualbox.nix {}; + wg-quick = handleTest ./wireguard/wg-quick.nix {}; wireguard = handleTest ./wireguard {}; wireguard-generated = handleTest ./wireguard/generated.nix {}; wireguard-namespaces = handleTest ./wireguard/namespaces.nix {}; wordpress = handleTest ./wordpress.nix {}; + xandikos = handleTest ./xandikos.nix {}; xautolock = handleTest ./xautolock.nix {}; xfce = handleTest ./xfce.nix {}; xmonad = handleTest ./xmonad.nix {}; @@ -296,6 +333,7 @@ in xss-lock = handleTest ./xss-lock.nix {}; yabar = handleTest ./yabar.nix {}; yggdrasil = handleTest ./yggdrasil.nix {}; + zfs = handleTest ./zfs.nix {}; zsh-history = handleTest ./zsh-history.nix {}; zookeeper = handleTest ./zookeeper.nix {}; } diff --git a/nixos/tests/bittorrent.nix b/nixos/tests/bittorrent.nix index e5be652c711..0a97d5556a2 100644 --- a/nixos/tests/bittorrent.nix +++ b/nixos/tests/bittorrent.nix @@ -18,6 +18,17 @@ let externalRouterAddress = "80.100.100.1"; externalClient2Address = "80.100.100.2"; externalTrackerAddress = "80.100.100.3"; + + transmissionConfig = { ... }: { + environment.systemPackages = [ pkgs.transmission ]; + services.transmission = { + enable = true; + settings = { + dht-enabled = false; + message-level = 3; + }; + }; + }; in { @@ -26,88 +37,79 @@ in maintainers = [ domenkozar eelco rob bobvanderlinden ]; }; - nodes = - { tracker = - { pkgs, ... }: - { environment.systemPackages = [ pkgs.transmission ]; + nodes = { + tracker = { pkgs, ... }: { + imports = [ transmissionConfig ]; - virtualisation.vlans = [ 1 ]; - networking.interfaces.eth1.ipv4.addresses = [ - { address = externalTrackerAddress; prefixLength = 24; } - ]; + virtualisation.vlans = [ 1 ]; + networking.firewall.enable = false; + networking.interfaces.eth1.ipv4.addresses = [ + { address = externalTrackerAddress; prefixLength = 24; } + ]; - # We need Apache on the tracker to serve the torrents. - services.httpd.enable = true; - services.httpd.adminAddr = "foo@example.org"; - services.httpd.documentRoot = "/tmp"; - - networking.firewall.enable = false; - - services.opentracker.enable = true; - - services.transmission.enable = true; - services.transmission.settings.dht-enabled = false; - services.transmission.settings.port-forwaring-enabled = false; - }; - - router = - { pkgs, nodes, ... }: - { virtualisation.vlans = [ 1 2 ]; - networking.nat.enable = true; - networking.nat.internalInterfaces = [ "eth2" ]; - networking.nat.externalInterface = "eth1"; - networking.firewall.enable = true; - networking.firewall.trustedInterfaces = [ "eth2" ]; - networking.interfaces.eth0.ipv4.addresses = []; - networking.interfaces.eth1.ipv4.addresses = [ - { address = externalRouterAddress; prefixLength = 24; } - ]; - networking.interfaces.eth2.ipv4.addresses = [ - { address = internalRouterAddress; prefixLength = 24; } - ]; - services.miniupnpd = { - enable = true; - externalInterface = "eth1"; - internalIPs = [ "eth2" ]; - appendConfig = '' - ext_ip=${externalRouterAddress} - ''; + # We need Apache on the tracker to serve the torrents. + services.httpd = { + enable = true; + virtualHosts = { + "torrentserver.org" = { + adminAddr = "foo@example.org"; + documentRoot = "/tmp"; }; }; - - client1 = - { pkgs, nodes, ... }: - { environment.systemPackages = [ pkgs.transmission pkgs.miniupnpc ]; - virtualisation.vlans = [ 2 ]; - networking.interfaces.eth0.ipv4.addresses = []; - networking.interfaces.eth1.ipv4.addresses = [ - { address = internalClient1Address; prefixLength = 24; } - ]; - networking.defaultGateway = internalRouterAddress; - networking.firewall.enable = false; - services.transmission.enable = true; - services.transmission.settings.dht-enabled = false; - services.transmission.settings.message-level = 3; - }; - - client2 = - { pkgs, ... }: - { environment.systemPackages = [ pkgs.transmission ]; - virtualisation.vlans = [ 1 ]; - networking.interfaces.eth0.ipv4.addresses = []; - networking.interfaces.eth1.ipv4.addresses = [ - { address = externalClient2Address; prefixLength = 24; } - ]; - networking.firewall.enable = false; - services.transmission.enable = true; - services.transmission.settings.dht-enabled = false; - services.transmission.settings.port-forwaring-enabled = false; - }; + }; + services.opentracker.enable = true; }; - testScript = - { nodes, ... }: - '' + router = { pkgs, nodes, ... }: { + virtualisation.vlans = [ 1 2 ]; + networking.nat.enable = true; + networking.nat.internalInterfaces = [ "eth2" ]; + networking.nat.externalInterface = "eth1"; + networking.firewall.enable = true; + networking.firewall.trustedInterfaces = [ "eth2" ]; + networking.interfaces.eth0.ipv4.addresses = []; + networking.interfaces.eth1.ipv4.addresses = [ + { address = externalRouterAddress; prefixLength = 24; } + ]; + networking.interfaces.eth2.ipv4.addresses = [ + { address = internalRouterAddress; prefixLength = 24; } + ]; + services.miniupnpd = { + enable = true; + externalInterface = "eth1"; + internalIPs = [ "eth2" ]; + appendConfig = '' + ext_ip=${externalRouterAddress} + ''; + }; + }; + + client1 = { pkgs, nodes, ... }: { + imports = [ transmissionConfig ]; + environment.systemPackages = [ pkgs.miniupnpc ]; + + virtualisation.vlans = [ 2 ]; + networking.interfaces.eth0.ipv4.addresses = []; + networking.interfaces.eth1.ipv4.addresses = [ + { address = internalClient1Address; prefixLength = 24; } + ]; + networking.defaultGateway = internalRouterAddress; + networking.firewall.enable = false; + }; + + client2 = { pkgs, ... }: { + imports = [ transmissionConfig ]; + + virtualisation.vlans = [ 1 ]; + networking.interfaces.eth0.ipv4.addresses = []; + networking.interfaces.eth1.ipv4.addresses = [ + { address = externalClient2Address; prefixLength = 24; } + ]; + networking.firewall.enable = false; + }; + }; + + testScript = { nodes, ... }: '' start_all() # Wait for network and miniupnpd. @@ -159,5 +161,4 @@ in "cmp /tmp/test.tar.bz2 ${file}" ) ''; - }) diff --git a/nixos/tests/blivet.nix b/nixos/tests/blivet.nix deleted file mode 100644 index 2adc2ee1eee..00000000000 --- a/nixos/tests/blivet.nix +++ /dev/null @@ -1,87 +0,0 @@ -import ./make-test.nix ({ pkgs, ... }: with pkgs.python2Packages; rec { - name = "blivet"; - meta = with pkgs.stdenv.lib.maintainers; { - maintainers = [ aszlig ]; - }; - - machine = { - environment.systemPackages = [ pkgs.python blivet mock ]; - boot.supportedFilesystems = [ "btrfs" "jfs" "reiserfs" "xfs" ]; - virtualisation.memorySize = 768; - }; - - debugBlivet = false; - debugProgramCalls = false; - - pythonTestRunner = pkgs.writeText "run-blivet-tests.py" '' - import sys - import logging - - from unittest import TestLoader - from unittest.runner import TextTestRunner - - ${pkgs.lib.optionalString debugProgramCalls '' - blivet_program_log = logging.getLogger("program") - blivet_program_log.setLevel(logging.DEBUG) - blivet_program_log.addHandler(logging.StreamHandler(sys.stderr)) - ''} - - ${pkgs.lib.optionalString debugBlivet '' - blivet_log = logging.getLogger("blivet") - blivet_log.setLevel(logging.DEBUG) - blivet_log.addHandler(logging.StreamHandler(sys.stderr)) - ''} - - runner = TextTestRunner(verbosity=2, failfast=False, buffer=False) - result = runner.run(TestLoader().discover('tests/', pattern='*_test.py')) - sys.exit(not result.wasSuccessful()) - ''; - - blivetTest = pkgs.writeScript "blivet-test.sh" '' - #!${pkgs.stdenv.shell} -e - - # Use the hosts temporary directory, because we have a tmpfs within the VM - # and we don't want to increase the memory size of the VM for no reason. - mkdir -p /tmp/xchg/bigtmp - TMPDIR=/tmp/xchg/bigtmp - export TMPDIR - - cp -Rd "${blivet.src}/tests" . - - # Skip SELinux tests - rm -f tests/formats_test/selinux_test.py - - # Race conditions in growing/shrinking during resync - rm -f tests/devicelibs_test/mdraid_* - - # Deactivate small BTRFS device test, because it fails with newer btrfsprogs - sed -i -e '/^class *BTRFSAsRootTestCase3(/,/^[^ ]/ { - /^class *BTRFSAsRootTestCase3(/d - /^$/d - /^ /d - }' tests/devicelibs_test/btrfs_test.py - - # How on earth can these tests ever work even upstream? O_o - sed -i -e '/def testDiskChunk[12]/,/^ *[^ ]/{n; s/^ */&return # /}' \ - tests/partitioning_test.py - - # fix hardcoded temporary directory - sed -i \ - -e '1i import tempfile' \ - -e 's|_STORE_FILE_PATH = .*|_STORE_FILE_PATH = tempfile.gettempdir()|' \ - -e 's|DEFAULT_STORE_SIZE = .*|DEFAULT_STORE_SIZE = 409600|' \ - tests/loopbackedtestcase.py - - PYTHONPATH=".:$(< "${pkgs.stdenv.mkDerivation { - name = "blivet-pythonpath"; - buildInputs = [ blivet mock ]; - buildCommand = "echo \"$PYTHONPATH\" > \"$out\""; - }}")" python "${pythonTestRunner}" - ''; - - testScript = '' - $machine->waitForUnit("multi-user.target"); - $machine->succeed("${blivetTest}"); - $machine->execute("rm -rf /tmp/xchg/bigtmp"); - ''; -}) diff --git a/nixos/tests/buildbot.nix b/nixos/tests/buildbot.nix index f5c8c4863b6..0d979dc2d05 100644 --- a/nixos/tests/buildbot.nix +++ b/nixos/tests/buildbot.nix @@ -1,12 +1,11 @@ +# Test ensures buildbot master comes up correctly and workers can connect + { system ? builtins.currentSystem, config ? {}, pkgs ? import ../.. { inherit system config; } }: -with import ../lib/testing.nix { inherit system pkgs; }; - -# Test ensures buildbot master comes up correctly and workers can connect -makeTest { +import ./make-test-python.nix { name = "buildbot"; nodes = { @@ -39,75 +38,76 @@ makeTest { services.openssh.enable = true; networking.firewall.allowedTCPPorts = [ 22 9418 ]; environment.systemPackages = with pkgs; [ git ]; + systemd.services.git-daemon = { + description = "Git daemon for the test"; + wantedBy = [ "multi-user.target" ]; + after = [ "network.target" "sshd.service" ]; + + serviceConfig.Restart = "always"; + path = with pkgs; [ coreutils git openssh ]; + environment = { HOME = "/root"; }; + preStart = '' + git config --global user.name 'Nobody Fakeuser' + git config --global user.email 'nobody\@fakerepo.com' + rm -rvf /srv/repos/fakerepo.git /tmp/fakerepo + mkdir -pv /srv/repos/fakerepo ~/.ssh + ssh-keyscan -H gitrepo > ~/.ssh/known_hosts + cat ~/.ssh/known_hosts + + mkdir -p /src/repos/fakerepo + cd /srv/repos/fakerepo + rm -rf * + git init + echo -e '#!/bin/sh\necho fakerepo' > fakerepo.sh + cat fakerepo.sh + touch .git/git-daemon-export-ok + git add fakerepo.sh .git/git-daemon-export-ok + git commit -m fakerepo + ''; + script = '' + git daemon --verbose --export-all --base-path=/srv/repos --reuseaddr + ''; + }; }; }; testScript = '' - #Start up and populate fake repo - $gitrepo->waitForUnit("multi-user.target"); - print($gitrepo->execute(" \ - git config --global user.name 'Nobody Fakeuser' && \ - git config --global user.email 'nobody\@fakerepo.com' && \ - rm -rvf /srv/repos/fakerepo.git /tmp/fakerepo && \ - mkdir -pv /srv/repos/fakerepo ~/.ssh && \ - ssh-keyscan -H gitrepo > ~/.ssh/known_hosts && \ - cat ~/.ssh/known_hosts && \ - cd /srv/repos/fakerepo && \ - git init && \ - echo -e '#!/bin/sh\necho fakerepo' > fakerepo.sh && \ - cat fakerepo.sh && \ - touch .git/git-daemon-export-ok && \ - git add fakerepo.sh .git/git-daemon-export-ok && \ - git commit -m fakerepo && \ - git daemon --verbose --export-all --base-path=/srv/repos --reuseaddr & \ - ")); + gitrepo.wait_for_unit("git-daemon.service") + gitrepo.wait_for_unit("multi-user.target") - # Test gitrepo - $bbmaster->waitForUnit("network-online.target"); - #$bbmaster->execute("nc -z gitrepo 9418"); - print($bbmaster->execute(" \ - rm -rfv /tmp/fakerepo && \ - git clone git://gitrepo/fakerepo /tmp/fakerepo && \ - pwd && \ - ls -la && \ - ls -la /tmp/fakerepo \ - ")); + with subtest("Repo is accessible via git daemon"): + bbmaster.wait_for_unit("network-online.target") + bbmaster.succeed("rm -rfv /tmp/fakerepo") + bbmaster.succeed("git clone git://gitrepo/fakerepo /tmp/fakerepo") - # Test start master and connect worker - $bbmaster->waitForUnit("buildbot-master.service"); - $bbmaster->waitUntilSucceeds("curl -s --head http://bbmaster:8010") =~ /200 OK/; - $bbworker->waitForUnit("network-online.target"); - $bbworker->execute("nc -z bbmaster 8010"); - $bbworker->execute("nc -z bbmaster 9989"); - $bbworker->waitForUnit("buildbot-worker.service"); - print($bbworker->execute("ls -la /home/bbworker/worker")); + with subtest("Master service and worker successfully connect"): + bbmaster.wait_for_unit("buildbot-master.service") + bbmaster.wait_until_succeeds("curl --fail -s --head http://bbmaster:8010") + bbworker.wait_for_unit("network-online.target") + bbworker.succeed("nc -z bbmaster 8010") + bbworker.succeed("nc -z bbmaster 9989") + bbworker.wait_for_unit("buildbot-worker.service") + with subtest("Stop buildbot worker"): + bbmaster.succeed("systemctl -l --no-pager status buildbot-master") + bbmaster.succeed("systemctl stop buildbot-master") + bbworker.fail("nc -z bbmaster 8010") + bbworker.fail("nc -z bbmaster 9989") + bbworker.succeed("systemctl -l --no-pager status buildbot-worker") + bbworker.succeed("systemctl stop buildbot-worker") - # Test stop buildbot master and worker - print($bbmaster->execute(" \ - systemctl -l --no-pager status buildbot-master && \ - systemctl stop buildbot-master \ - ")); - $bbworker->fail("nc -z bbmaster 8010"); - $bbworker->fail("nc -z bbmaster 9989"); - print($bbworker->execute(" \ - systemctl -l --no-pager status buildbot-worker && \ - systemctl stop buildbot-worker && \ - ls -la /home/bbworker/worker \ - ")); - - - # Test buildbot daemon mode - $bbmaster->execute("buildbot create-master /tmp"); - $bbmaster->execute("mv -fv /tmp/master.cfg.sample /tmp/master.cfg"); - $bbmaster->execute("sed -i 's/8010/8011/' /tmp/master.cfg"); - $bbmaster->execute("buildbot start /tmp"); - $bbworker->execute("nc -z bbmaster 8011"); - $bbworker->waitUntilSucceeds("curl -s --head http://bbmaster:8011") =~ /200 OK/; - $bbmaster->execute("buildbot stop /tmp"); - $bbworker->fail("nc -z bbmaster 8011"); - + with subtest("Buildbot daemon mode works"): + bbmaster.succeed( + "buildbot create-master /tmp", + "mv -fv /tmp/master.cfg.sample /tmp/master.cfg", + "sed -i 's/8010/8011/' /tmp/master.cfg", + "buildbot start /tmp", + "nc -z bbmaster 8011", + ) + bbworker.wait_until_succeeds("curl --fail -s --head http://bbmaster:8011") + bbmaster.wait_until_succeeds("buildbot stop /tmp") + bbworker.fail("nc -z bbmaster 8011") ''; meta.maintainers = with pkgs.stdenv.lib.maintainers; [ nand0p ]; -} +} {} diff --git a/nixos/tests/buildkite-agents.nix b/nixos/tests/buildkite-agents.nix new file mode 100644 index 00000000000..a6f33e0143c --- /dev/null +++ b/nixos/tests/buildkite-agents.nix @@ -0,0 +1,31 @@ +import ./make-test-python.nix ({ pkgs, ... }: + +{ + name = "buildkite-agent"; + meta = with pkgs.stdenv.lib.maintainers; { + maintainers = [ flokli ]; + }; + + machine = { pkgs, ... }: { + services.buildkite-agents = { + one = { + privateSshKeyPath = (import ./ssh-keys.nix pkgs).snakeOilPrivateKey; + tokenPath = (pkgs.writeText "my-token" "5678"); + }; + two = { + tokenPath = (pkgs.writeText "my-token" "1234"); + }; + }; + }; + + testScript = '' + start_all() + # we can't wait on the unit to start up, as we obviously can't connect to buildkite, + # but we can look whether files are set up correctly + + machine.wait_for_file("/var/lib/buildkite-agent-one/buildkite-agent.cfg") + machine.wait_for_file("/var/lib/buildkite-agent-one/.ssh/id_rsa") + + machine.wait_for_file("/var/lib/buildkite-agent-two/buildkite-agent.cfg") + ''; +}) diff --git a/nixos/tests/caddy.nix b/nixos/tests/caddy.nix index fc10df0c79b..144d83179a1 100644 --- a/nixos/tests/caddy.nix +++ b/nixos/tests/caddy.nix @@ -20,35 +20,33 @@ import ./make-test-python.nix ({ pkgs, ... }: { } ''; - nesting.clone = [ - { - services.caddy.config = lib.mkForce '' - http://localhost { - gzip + specialisation.etag.configuration = { + services.caddy.config = lib.mkForce '' + http://localhost { + gzip - root ${ - pkgs.runCommand "testdir2" {} '' - mkdir "$out" - echo changed > "$out/example.html" - '' - } + root ${ + pkgs.runCommand "testdir2" {} '' + mkdir "$out" + echo changed > "$out/example.html" + '' } - ''; - } + } + ''; + }; - { - services.caddy.config = '' - http://localhost:8080 { - } - ''; - } - ]; + specialisation.config-reload.configuration = { + services.caddy.config = '' + http://localhost:8080 { + } + ''; + }; }; }; testScript = { nodes, ... }: let - etagSystem = "${nodes.webserver.config.system.build.toplevel}/fine-tune/child-1"; - justReloadSystem = "${nodes.webserver.config.system.build.toplevel}/fine-tune/child-2"; + etagSystem = "${nodes.webserver.config.system.build.toplevel}/specialisation/etag"; + justReloadSystem = "${nodes.webserver.config.system.build.toplevel}/specialisation/config-reload"; in '' url = "http://localhost/example.html" webserver.wait_for_unit("caddy") @@ -77,7 +75,7 @@ import ./make-test-python.nix ({ pkgs, ... }: { assert old_etag != new_etag, "Old ETag {} is the same as {}".format( old_etag, new_etag ) - + with subtest("config is reloaded on nixos-rebuild switch"): webserver.succeed( "${justReloadSystem}/bin/switch-to-configuration test >&2" diff --git a/nixos/tests/cage.nix b/nixos/tests/cage.nix new file mode 100644 index 00000000000..a6f73e00c06 --- /dev/null +++ b/nixos/tests/cage.nix @@ -0,0 +1,43 @@ +import ./make-test-python.nix ({ pkgs, ...} : + +{ + name = "cage"; + meta = with pkgs.stdenv.lib.maintainers; { + maintainers = [ matthewbauer flokli ]; + }; + + machine = { ... }: + + { + imports = [ ./common/user-account.nix ]; + services.cage = { + enable = true; + user = "alice"; + program = "${pkgs.xterm}/bin/xterm -cm -pc"; # disable color and bold to make OCR easier + }; + + # this needs a fairly recent kernel, otherwise: + # [backend/drm/util.c:215] Unable to add DRM framebuffer: No such file or directory + # [backend/drm/legacy.c:15] Virtual-1: Failed to set CRTC: No such file or directory + # [backend/drm/util.c:215] Unable to add DRM framebuffer: No such file or directory + # [backend/drm/legacy.c:15] Virtual-1: Failed to set CRTC: No such file or directory + # [backend/drm/drm.c:618] Failed to initialize renderer on connector 'Virtual-1': initial page-flip failed + # [backend/drm/drm.c:701] Failed to initialize renderer for plane + boot.kernelPackages = pkgs.linuxPackages_latest; + + virtualisation.memorySize = 1024; + }; + + enableOCR = true; + + testScript = { nodes, ... }: let + user = nodes.machine.config.users.users.alice; + in '' + with subtest("Wait for cage to boot up"): + start_all() + machine.wait_for_file("/run/user/${toString user.uid}/wayland-0.lock") + machine.wait_until_succeeds("pgrep xterm") + machine.wait_for_text("alice@machine") + machine.screenshot("screen") + ''; +}) diff --git a/nixos/tests/ceph-multi-node.nix b/nixos/tests/ceph-multi-node.nix index 52a0b5caf23..22fe5cada48 100644 --- a/nixos/tests/ceph-multi-node.nix +++ b/nixos/tests/ceph-multi-node.nix @@ -19,6 +19,12 @@ let key = "AQBEEJNac00kExAAXEgy943BGyOpVH1LLlHafQ=="; uuid = "5e97a838-85b6-43b0-8950-cb56d554d1e5"; }; + osd2 = { + name = "2"; + ip = "192.168.1.4"; + key = "AQAdyhZeIaUlARAAGRoidDAmS6Vkp546UFEf5w=="; + uuid = "ea999274-13d0-4dd5-9af9-ad25a324f72f"; + }; }; generateCephConfig = { daemonConfig }: { enable = true; @@ -72,35 +78,20 @@ let }; }; }; - networkOsd0 = { + networkOsd = osd: { dhcpcd.enable = false; interfaces.eth1.ipv4.addresses = pkgs.lib.mkOverride 0 [ - { address = cfg.osd0.ip; prefixLength = 24; } + { address = osd.ip; prefixLength = 24; } ]; firewall = { allowedTCPPortRanges = [ { from = 6800; to = 7300; } ]; }; }; - cephConfigOsd0 = generateCephConfig { daemonConfig = { - osd = { - enable = true; - daemons = [ cfg.osd0.name ]; - }; - }; }; - networkOsd1 = { - dhcpcd.enable = false; - interfaces.eth1.ipv4.addresses = pkgs.lib.mkOverride 0 [ - { address = cfg.osd1.ip; prefixLength = 24; } - ]; - firewall = { - allowedTCPPortRanges = [ { from = 6800; to = 7300; } ]; - }; - }; - cephConfigOsd1 = generateCephConfig { daemonConfig = { + cephConfigOsd = osd: generateCephConfig { daemonConfig = { osd = { enable = true; - daemons = [ cfg.osd1.name ]; + daemons = [ osd.name ]; }; }; }; @@ -114,6 +105,7 @@ let monA.wait_for_unit("network.target") osd0.wait_for_unit("network.target") osd1.wait_for_unit("network.target") + osd2.wait_for_unit("network.target") # Bootstrap ceph-mon daemon monA.succeed( @@ -145,8 +137,9 @@ let monA.succeed("cp /etc/ceph/ceph.client.admin.keyring /tmp/shared") osd0.succeed("cp /tmp/shared/ceph.client.admin.keyring /etc/ceph") osd1.succeed("cp /tmp/shared/ceph.client.admin.keyring /etc/ceph") + osd2.succeed("cp /tmp/shared/ceph.client.admin.keyring /etc/ceph") - # Bootstrap both OSDs + # Bootstrap OSDs osd0.succeed( "mkfs.xfs /dev/vdb", "mkdir -p /var/lib/ceph/osd/ceph-${cfg.osd0.name}", @@ -161,6 +154,13 @@ let "ceph-authtool --create-keyring /var/lib/ceph/osd/ceph-${cfg.osd1.name}/keyring --name osd.${cfg.osd1.name} --add-key ${cfg.osd1.key}", 'echo \'{"cephx_secret": "${cfg.osd1.key}"}\' | ceph osd new ${cfg.osd1.uuid} -i -', ) + osd2.succeed( + "mkfs.xfs /dev/vdb", + "mkdir -p /var/lib/ceph/osd/ceph-${cfg.osd2.name}", + "mount /dev/vdb /var/lib/ceph/osd/ceph-${cfg.osd2.name}", + "ceph-authtool --create-keyring /var/lib/ceph/osd/ceph-${cfg.osd2.name}/keyring --name osd.${cfg.osd2.name} --add-key ${cfg.osd2.key}", + 'echo \'{"cephx_secret": "${cfg.osd2.key}"}\' | ceph osd new ${cfg.osd2.uuid} -i -', + ) # Initialize the OSDs with regular filestore osd0.succeed( @@ -173,20 +173,25 @@ let "chown -R ceph:ceph /var/lib/ceph/osd", "systemctl start ceph-osd-${cfg.osd1.name}", ) - monA.wait_until_succeeds("ceph osd stat | grep -e '2 osds: 2 up[^,]*, 2 in'") + osd2.succeed( + "ceph-osd -i ${cfg.osd2.name} --mkfs --osd-uuid ${cfg.osd2.uuid}", + "chown -R ceph:ceph /var/lib/ceph/osd", + "systemctl start ceph-osd-${cfg.osd2.name}", + ) + monA.wait_until_succeeds("ceph osd stat | grep -e '3 osds: 3 up[^,]*, 3 in'") monA.wait_until_succeeds("ceph -s | grep 'mgr: ${cfg.monA.name}(active,'") monA.wait_until_succeeds("ceph -s | grep 'HEALTH_OK'") monA.succeed( - "ceph osd pool create multi-node-test 100 100", + "ceph osd pool create multi-node-test 128 128", "ceph osd pool ls | grep 'multi-node-test'", "ceph osd pool rename multi-node-test multi-node-other-test", "ceph osd pool ls | grep 'multi-node-other-test'", ) - monA.wait_until_succeeds("ceph -s | grep '1 pools, 100 pgs'") + monA.wait_until_succeeds("ceph -s | grep '1 pools, 128 pgs'") monA.succeed("ceph osd pool set multi-node-other-test size 2") monA.wait_until_succeeds("ceph -s | grep 'HEALTH_OK'") - monA.wait_until_succeeds("ceph -s | grep '100 active+clean'") + monA.wait_until_succeeds("ceph -s | grep '128 active+clean'") monA.fail( "ceph osd pool ls | grep 'multi-node-test'", "ceph osd pool delete multi-node-other-test multi-node-other-test --yes-i-really-really-mean-it", @@ -196,16 +201,18 @@ let monA.crash() osd0.crash() osd1.crash() + osd2.crash() # Start it up osd0.start() osd1.start() + osd2.start() monA.start() # Ensure the cluster comes back up again monA.succeed("ceph -s | grep 'mon: 1 daemons'") monA.wait_until_succeeds("ceph -s | grep 'quorum ${cfg.monA.name}'") - monA.wait_until_succeeds("ceph osd stat | grep -e '2 osds: 2 up[^,]*, 2 in'") + monA.wait_until_succeeds("ceph osd stat | grep -e '3 osds: 3 up[^,]*, 3 in'") monA.wait_until_succeeds("ceph -s | grep 'mgr: ${cfg.monA.name}(active,'") monA.wait_until_succeeds("ceph -s | grep 'HEALTH_OK'") ''; @@ -217,8 +224,9 @@ in { nodes = { monA = generateHost { pkgs = pkgs; cephConfig = cephConfigMonA; networkConfig = networkMonA; }; - osd0 = generateHost { pkgs = pkgs; cephConfig = cephConfigOsd0; networkConfig = networkOsd0; }; - osd1 = generateHost { pkgs = pkgs; cephConfig = cephConfigOsd1; networkConfig = networkOsd1; }; + osd0 = generateHost { pkgs = pkgs; cephConfig = cephConfigOsd cfg.osd0; networkConfig = networkOsd cfg.osd0; }; + osd1 = generateHost { pkgs = pkgs; cephConfig = cephConfigOsd cfg.osd1; networkConfig = networkOsd cfg.osd1; }; + osd2 = generateHost { pkgs = pkgs; cephConfig = cephConfigOsd cfg.osd2; networkConfig = networkOsd cfg.osd2; }; }; testScript = testscript; diff --git a/nixos/tests/ceph-single-node.nix b/nixos/tests/ceph-single-node.nix index da92a73e14d..01c4b413845 100644 --- a/nixos/tests/ceph-single-node.nix +++ b/nixos/tests/ceph-single-node.nix @@ -17,6 +17,11 @@ let key = "AQBEEJNac00kExAAXEgy943BGyOpVH1LLlHafQ=="; uuid = "5e97a838-85b6-43b0-8950-cb56d554d1e5"; }; + osd2 = { + name = "2"; + key = "AQAdyhZeIaUlARAAGRoidDAmS6Vkp546UFEf5w=="; + uuid = "ea999274-13d0-4dd5-9af9-ad25a324f72f"; + }; }; generateCephConfig = { daemonConfig }: { enable = true; @@ -30,7 +35,7 @@ let generateHost = { pkgs, cephConfig, networkConfig, ... }: { virtualisation = { memorySize = 512; - emptyDiskImages = [ 20480 20480 ]; + emptyDiskImages = [ 20480 20480 20480 ]; vlans = [ 1 ]; }; @@ -65,7 +70,7 @@ let }; osd = { enable = true; - daemons = [ cfg.osd0.name cfg.osd1.name ]; + daemons = [ cfg.osd0.name cfg.osd1.name cfg.osd2.name ]; }; }; }; @@ -104,39 +109,46 @@ let monA.wait_until_succeeds("ceph -s | grep 'quorum ${cfg.monA.name}'") monA.wait_until_succeeds("ceph -s | grep 'mgr: ${cfg.monA.name}(active,'") - # Bootstrap both OSDs + # Bootstrap OSDs monA.succeed( "mkfs.xfs /dev/vdb", "mkfs.xfs /dev/vdc", + "mkfs.xfs /dev/vdd", "mkdir -p /var/lib/ceph/osd/ceph-${cfg.osd0.name}", "mount /dev/vdb /var/lib/ceph/osd/ceph-${cfg.osd0.name}", "mkdir -p /var/lib/ceph/osd/ceph-${cfg.osd1.name}", "mount /dev/vdc /var/lib/ceph/osd/ceph-${cfg.osd1.name}", + "mkdir -p /var/lib/ceph/osd/ceph-${cfg.osd2.name}", + "mount /dev/vdd /var/lib/ceph/osd/ceph-${cfg.osd2.name}", "ceph-authtool --create-keyring /var/lib/ceph/osd/ceph-${cfg.osd0.name}/keyring --name osd.${cfg.osd0.name} --add-key ${cfg.osd0.key}", "ceph-authtool --create-keyring /var/lib/ceph/osd/ceph-${cfg.osd1.name}/keyring --name osd.${cfg.osd1.name} --add-key ${cfg.osd1.key}", + "ceph-authtool --create-keyring /var/lib/ceph/osd/ceph-${cfg.osd2.name}/keyring --name osd.${cfg.osd2.name} --add-key ${cfg.osd2.key}", 'echo \'{"cephx_secret": "${cfg.osd0.key}"}\' | ceph osd new ${cfg.osd0.uuid} -i -', 'echo \'{"cephx_secret": "${cfg.osd1.key}"}\' | ceph osd new ${cfg.osd1.uuid} -i -', + 'echo \'{"cephx_secret": "${cfg.osd2.key}"}\' | ceph osd new ${cfg.osd2.uuid} -i -', ) # Initialize the OSDs with regular filestore monA.succeed( "ceph-osd -i ${cfg.osd0.name} --mkfs --osd-uuid ${cfg.osd0.uuid}", "ceph-osd -i ${cfg.osd1.name} --mkfs --osd-uuid ${cfg.osd1.uuid}", + "ceph-osd -i ${cfg.osd2.name} --mkfs --osd-uuid ${cfg.osd2.uuid}", "chown -R ceph:ceph /var/lib/ceph/osd", "systemctl start ceph-osd-${cfg.osd0.name}", "systemctl start ceph-osd-${cfg.osd1.name}", + "systemctl start ceph-osd-${cfg.osd2.name}", ) - monA.wait_until_succeeds("ceph osd stat | grep -e '2 osds: 2 up[^,]*, 2 in'") + monA.wait_until_succeeds("ceph osd stat | grep -e '3 osds: 3 up[^,]*, 3 in'") monA.wait_until_succeeds("ceph -s | grep 'mgr: ${cfg.monA.name}(active,'") monA.wait_until_succeeds("ceph -s | grep 'HEALTH_OK'") monA.succeed( - "ceph osd pool create single-node-test 100 100", + "ceph osd pool create single-node-test 128 128", "ceph osd pool ls | grep 'single-node-test'", "ceph osd pool rename single-node-test single-node-other-test", "ceph osd pool ls | grep 'single-node-other-test'", ) - monA.wait_until_succeeds("ceph -s | grep '1 pools, 100 pgs'") + monA.wait_until_succeeds("ceph -s | grep '1 pools, 128 pgs'") monA.succeed( "ceph osd getcrushmap -o crush", "crushtool -d crush -o decrushed", @@ -146,7 +158,7 @@ let "ceph osd pool set single-node-other-test size 2", ) monA.wait_until_succeeds("ceph -s | grep 'HEALTH_OK'") - monA.wait_until_succeeds("ceph -s | grep '100 active+clean'") + monA.wait_until_succeeds("ceph -s | grep '128 active+clean'") monA.fail( "ceph osd pool ls | grep 'multi-node-test'", "ceph osd pool delete single-node-other-test single-node-other-test --yes-i-really-really-mean-it", @@ -161,11 +173,12 @@ let monA.wait_for_unit("ceph-mgr-${cfg.monA.name}") monA.wait_for_unit("ceph-osd-${cfg.osd0.name}") monA.wait_for_unit("ceph-osd-${cfg.osd1.name}") + monA.wait_for_unit("ceph-osd-${cfg.osd2.name}") # Ensure the cluster comes back up again monA.succeed("ceph -s | grep 'mon: 1 daemons'") monA.wait_until_succeeds("ceph -s | grep 'quorum ${cfg.monA.name}'") - monA.wait_until_succeeds("ceph osd stat | grep -e '2 osds: 2 up[^,]*, 2 in'") + monA.wait_until_succeeds("ceph osd stat | grep -e '3 osds: 3 up[^,]*, 3 in'") monA.wait_until_succeeds("ceph -s | grep 'mgr: ${cfg.monA.name}(active,'") monA.wait_until_succeeds("ceph -s | grep 'HEALTH_OK'") ''; diff --git a/nixos/tests/certmgr.nix b/nixos/tests/certmgr.nix index cb69f35e862..ef32f54400e 100644 --- a/nixos/tests/certmgr.nix +++ b/nixos/tests/certmgr.nix @@ -9,8 +9,8 @@ let inherit action; authority = { file = { - group = "nobody"; - owner = "nobody"; + group = "nginx"; + owner = "nginx"; path = "/tmp/${host}-ca.pem"; }; label = "www_ca"; @@ -18,14 +18,14 @@ let remote = "localhost:8888"; }; certificate = { - group = "nobody"; - owner = "nobody"; + group = "nginx"; + owner = "nginx"; path = "/tmp/${host}-cert.pem"; }; private_key = { - group = "nobody"; + group = "nginx"; mode = "0600"; - owner = "nobody"; + owner = "nginx"; path = "/tmp/${host}-key.pem"; }; request = { diff --git a/nixos/tests/chromium.nix b/nixos/tests/chromium.nix index af5db2a3dbe..fc5d3a5c52f 100644 --- a/nixos/tests/chromium.nix +++ b/nixos/tests/chromium.nix @@ -8,7 +8,7 @@ } }: -with import ../lib/testing.nix { inherit system pkgs; }; +with import ../lib/testing-python.nix { inherit system pkgs; }; with pkgs.lib; mapAttrs (channel: chromiumPkg: makeTest rec { @@ -21,9 +21,11 @@ mapAttrs (channel: chromiumPkg: makeTest rec { enableOCR = true; + user = "alice"; + machine.imports = [ ./common/user-account.nix ./common/x11.nix ]; machine.virtualisation.memorySize = 2047; - machine.services.xserver.displayManager.auto.user = "alice"; + machine.test-support.displayManager.auto.user = user; machine.environment.systemPackages = [ chromiumPkg ]; startupHTML = pkgs.writeText "chromium-startup.html" '' @@ -36,7 +38,7 @@ mapAttrs (channel: chromiumPkg: makeTest rec { @@ -47,155 +49,218 @@ mapAttrs (channel: chromiumPkg: makeTest rec { xdoScript = pkgs.writeText "${name}.xdo" text; in "${pkgs.xdotool}/bin/xdotool '${xdoScript}'"; in '' + import shlex + from contextlib import contextmanager, _GeneratorContextManager + + # Run as user alice - sub ru ($) { - my $esc = $_[0] =~ s/'/'\\${"'"}'/gr; - return "su - alice -c '$esc'"; - } + def ru(cmd): + return "su - ${user} -c " + shlex.quote(cmd) - sub createNewWin { - $machine->nest("creating a new Chromium window", sub { - $machine->execute(ru "${xdo "new-window" '' - search --onlyvisible --name "startup done" - windowfocus --sync - windowactivate --sync - ''}"); - $machine->execute(ru "${xdo "new-window" '' - key Ctrl+n - ''}"); - }); - } - sub closeWin { - Machine::retry sub { - $machine->execute(ru "${xdo "close-window" '' - search --onlyvisible --name "new tab" - windowfocus --sync - windowactivate --sync - ''}"); - $machine->execute(ru "${xdo "close-window" '' - key Ctrl+w - ''}"); - for (1..20) { - my ($status, $out) = $machine->execute(ru "${xdo "wait-for-close" '' - search --onlyvisible --name "new tab" - ''}"); - return 1 if $status != 0; - $machine->sleep(1); - } - } - } + def create_new_win(): + with machine.nested("Creating a new Chromium window"): + machine.execute( + ru( + "${xdo "new-window" '' + search --onlyvisible --name "startup done" + windowfocus --sync + windowactivate --sync + ''}" + ) + ) + machine.execute( + ru( + "${xdo "new-window" '' + key Ctrl+n + ''}" + ) + ) - sub waitForNewWin { - my $ret = 0; - $machine->nest("waiting for new Chromium window to appear", sub { - for (1..20) { - my ($status, $out) = $machine->execute(ru "${xdo "wait-for-window" '' - search --onlyvisible --name "new tab" - windowfocus --sync - windowactivate --sync - ''}"); - if ($status == 0) { - $ret = 1; - # XXX: Somehow Chromium is not accepting keystrokes for a few - # seconds after a new window has appeared, so let's wait a while. - $machine->sleep(10); + def close_win(): + def try_close(_): + machine.execute( + ru( + "${xdo "close-window" '' + search --onlyvisible --name "new tab" + windowfocus --sync + windowactivate --sync + ''}" + ) + ) + machine.execute( + ru( + "${xdo "close-window" '' + key Ctrl+w + ''}" + ) + ) + for _ in range(1, 20): + status, out = machine.execute( + ru( + "${xdo "wait-for-close" '' + search --onlyvisible --name "new tab" + ''}" + ) + ) + if status != 0: + return True + machine.sleep(1) + return False - last; - } - $machine->sleep(1); - } - }); - return $ret; - } + retry(try_close) - sub createAndWaitForNewWin { - for (1..3) { - createNewWin; - return 1 if waitForNewWin; - } - die "new window didn't appear within 60 seconds"; - } - sub testNewWin { - my ($desc, $code) = @_; - createAndWaitForNewWin; - subtest($desc, $code); - closeWin; - } + def wait_for_new_win(): + ret = False + with machine.nested("Waiting for new Chromium window to appear"): + for _ in range(1, 20): + status, out = machine.execute( + ru( + "${xdo "wait-for-window" '' + search --onlyvisible --name "new tab" + windowfocus --sync + windowactivate --sync + ''}" + ) + ) + if status == 0: + ret = True + machine.sleep(10) + break + machine.sleep(1) + return ret - $machine->waitForX; - my $url = "file://${startupHTML}"; - $machine->execute(ru "ulimit -c unlimited; chromium \"$url\" & disown"); - $machine->waitForText(qr/startup done/); - $machine->waitUntilSucceeds(ru "${xdo "check-startup" '' - search --sync --onlyvisible --name "startup done" - # close first start help popup - key -delay 1000 Escape - windowfocus --sync - windowactivate --sync - ''}"); + def create_and_wait_for_new_win(): + for _ in range(1, 3): + create_new_win() + if wait_for_new_win(): + return True + assert False, "new window did not appear within 60 seconds" - createAndWaitForNewWin; - $machine->screenshot("empty_windows"); - closeWin; - $machine->screenshot("startup_done"); + @contextmanager + def test_new_win(description): + create_and_wait_for_new_win() + with machine.nested(description): + yield + close_win() - testNewWin "check sandbox", sub { - $machine->succeed(ru "${xdo "type-url" '' - search --sync --onlyvisible --name "new tab" - windowfocus --sync - type --delay 1000 "chrome://sandbox" - ''}"); - $machine->succeed(ru "${xdo "submit-url" '' - search --sync --onlyvisible --name "new tab" - windowfocus --sync - key --delay 1000 Return - ''}"); + machine.wait_for_x() - $machine->screenshot("sandbox_info"); + url = "file://${startupHTML}" + machine.succeed(ru(f'ulimit -c unlimited; chromium "{url}" & disown')) + machine.wait_for_text("startup done") + machine.wait_until_succeeds( + ru( + "${xdo "check-startup" '' + search --sync --onlyvisible --name "startup done" + # close first start help popup + key -delay 1000 Escape + windowfocus --sync + windowactivate --sync + ''}" + ) + ) - $machine->succeed(ru "${xdo "find-window" '' - search --sync --onlyvisible --name "sandbox status" - windowfocus --sync - ''}"); - $machine->succeed(ru "${xdo "copy-sandbox-info" '' - key --delay 1000 Ctrl+a Ctrl+c - ''}"); + create_and_wait_for_new_win() + machine.screenshot("empty_windows") + close_win() - my $clipboard = $machine->succeed(ru "${pkgs.xclip}/bin/xclip -o"); - die "sandbox not working properly: $clipboard" - unless $clipboard =~ /layer 1 sandbox.*namespace/mi - && $clipboard =~ /pid namespaces.*yes/mi - && $clipboard =~ /network namespaces.*yes/mi - && $clipboard =~ /seccomp.*sandbox.*yes/mi - && $clipboard =~ /you are adequately sandboxed/mi; + machine.screenshot("startup_done") - $machine->sleep(1); - $machine->succeed(ru "${xdo "find-window-after-copy" '' - search --onlyvisible --name "sandbox status" - ''}"); + with test_new_win("check sandbox"): + machine.succeed( + ru( + "${xdo "type-url" '' + search --sync --onlyvisible --name "new tab" + windowfocus --sync + type --delay 1000 "chrome://sandbox" + ''}" + ) + ) - my $clipboard = $machine->succeed(ru "echo void | ${pkgs.xclip}/bin/xclip -i"); - $machine->succeed(ru "${xdo "copy-sandbox-info" '' - key --delay 1000 Ctrl+a Ctrl+c - ''}"); + machine.succeed( + ru( + "${xdo "submit-url" '' + search --sync --onlyvisible --name "new tab" + windowfocus --sync + key --delay 1000 Return + ''}" + ) + ) - my $clipboard = $machine->succeed(ru "${pkgs.xclip}/bin/xclip -o"); - die "copying twice in a row does not work properly: $clipboard" - unless $clipboard =~ /layer 1 sandbox.*namespace/mi - && $clipboard =~ /pid namespaces.*yes/mi - && $clipboard =~ /network namespaces.*yes/mi - && $clipboard =~ /seccomp.*sandbox.*yes/mi - && $clipboard =~ /you are adequately sandboxed/mi; + machine.screenshot("sandbox_info") - $machine->screenshot("afer_copy_from_chromium"); - }; + machine.succeed( + ru( + "${xdo "find-window" '' + search --sync --onlyvisible --name "sandbox status" + windowfocus --sync + ''}" + ) + ) + machine.succeed( + ru( + "${xdo "copy-sandbox-info" '' + key --delay 1000 Ctrl+a Ctrl+c + ''}" + ) + ) - $machine->shutdown; + clipboard = machine.succeed( + ru("${pkgs.xclip}/bin/xclip -o") + ) + + filters = [ + "layer 1 sandbox.*namespace", + "pid namespaces.*yes", + "network namespaces.*yes", + "seccomp.*sandbox.*yes", + "you are adequately sandboxed", + ] + if not all( + re.search(filter, clipboard, flags=re.DOTALL | re.IGNORECASE) + for filter in filters + ): + assert False, f"sandbox not working properly: {clipboard}" + + machine.sleep(1) + machine.succeed( + ru( + "${xdo "find-window-after-copy" '' + search --onlyvisible --name "sandbox status" + ''}" + ) + ) + + clipboard = machine.succeed( + ru( + "echo void | ${pkgs.xclip}/bin/xclip -i" + ) + ) + machine.succeed( + ru( + "${xdo "copy-sandbox-info" '' + key --delay 1000 Ctrl+a Ctrl+c + ''}" + ) + ) + + clipboard = machine.succeed( + ru("${pkgs.xclip}/bin/xclip -o") + ) + if not all( + re.search(filter, clipboard, flags=re.DOTALL | re.IGNORECASE) + for filter in filters + ): + assert False, f"copying twice in a row does not work properly: {clipboard}" + + machine.screenshot("after_copy_from_chromium") + + machine.shutdown() ''; }) channelMap diff --git a/nixos/tests/cockroachdb.nix b/nixos/tests/cockroachdb.nix index 496283fddc7..d0cc5e19837 100644 --- a/nixos/tests/cockroachdb.nix +++ b/nixos/tests/cockroachdb.nix @@ -1,7 +1,7 @@ # This performs a full 'end-to-end' test of a multi-node CockroachDB cluster # using the built-in 'cockroach workload' command, to simulate a semi-realistic # test load. It generally takes anywhere from 3-5 minutes to run and 1-2GB of -# RAM (though each of 3 workers gets 1GB allocated) +# RAM (though each of 3 workers gets 2GB allocated) # # CockroachDB requires synchronized system clocks within a small error window # (~500ms by default) on each node in order to maintain a multi-node cluster. @@ -55,7 +55,7 @@ let { # Bank/TPC-C benchmarks take some memory to complete - virtualisation.memorySize = 1024; + virtualisation.memorySize = 2048; # Install the KVM PTP "Virtualized Clock" driver. This allows a /dev/ptp0 # device to appear as a reference clock, synchronized to the host clock. @@ -88,6 +88,8 @@ let services.cockroachdb.listen.address = myAddr; services.cockroachdb.join = lib.mkIf (joinNode != null) joinNode; + systemd.services.chronyd.unitConfig.ConditionPathExists = "/dev/ptp0"; + # Hold startup until Chrony has performed its first measurement (which # will probably result in a full timeskip, thanks to makestep) systemd.services.cockroachdb.preStart = '' @@ -95,7 +97,7 @@ let ''; }; -in import ./make-test.nix ({ pkgs, ...} : { +in import ./make-test-python.nix ({ pkgs, ...} : { name = "cockroachdb"; meta.maintainers = with pkgs.stdenv.lib.maintainers; [ thoughtpolice ]; @@ -110,17 +112,13 @@ in import ./make-test.nix ({ pkgs, ...} : { # there's otherwise no way to guarantee that node1 will start before the others try # to join it. testScript = '' - $node1->start; - $node1->waitForUnit("cockroachdb"); - - $node2->start; - $node2->waitForUnit("cockroachdb"); - - $node3->start; - $node3->waitForUnit("cockroachdb"); - - $node1->mustSucceed("cockroach sql --host=192.168.1.1 --insecure -e 'SHOW ALL CLUSTER SETTINGS' 2>&1"); - $node1->mustSucceed("cockroach workload init bank 'postgresql://root\@192.168.1.1:26257?sslmode=disable'"); - $node1->mustSucceed("cockroach workload run bank --duration=1m 'postgresql://root\@192.168.1.1:26257?sslmode=disable'"); + for node in node1, node2, node3: + node.start() + node.wait_for_unit("cockroachdb") + node1.succeed( + "cockroach sql --host=192.168.1.1 --insecure -e 'SHOW ALL CLUSTER SETTINGS' 2>&1", + "cockroach workload init bank 'postgresql://root@192.168.1.1:26257?sslmode=disable'", + "cockroach workload run bank --duration=1m 'postgresql://root@192.168.1.1:26257?sslmode=disable'", + ) ''; }) diff --git a/nixos/tests/common/acme/client/default.nix b/nixos/tests/common/acme/client/default.nix new file mode 100644 index 00000000000..80893da0252 --- /dev/null +++ b/nixos/tests/common/acme/client/default.nix @@ -0,0 +1,15 @@ +{ lib, nodes, pkgs, ... }: + +let + acme-ca = nodes.acme.config.test-support.acme.caCert; +in + +{ + security.acme = { + server = "https://acme.test/dir"; + email = "hostmaster@example.test"; + acceptTerms = true; + }; + + security.pki.certificateFiles = [ acme-ca ]; +} diff --git a/nixos/tests/common/letsencrypt/default.nix b/nixos/tests/common/acme/server/default.nix similarity index 81% rename from nixos/tests/common/letsencrypt/default.nix rename to nixos/tests/common/acme/server/default.nix index 110a2520971..1a0ee882572 100644 --- a/nixos/tests/common/letsencrypt/default.nix +++ b/nixos/tests/common/acme/server/default.nix @@ -1,27 +1,27 @@ # The certificate for the ACME service is exported as: # -# config.test-support.letsencrypt.caCert +# config.test-support.acme.caCert # # This value can be used inside the configuration of other test nodes to inject # the snakeoil certificate into security.pki.certificateFiles or into package # overlays. # # Another value that's needed if you don't use a custom resolver (see below for -# notes on that) is to add the letsencrypt node as a nameserver to every node +# notes on that) is to add the acme node as a nameserver to every node # that needs to acquire certificates using ACME, because otherwise the API host -# for letsencrypt.org can't be resolved. +# for acme.test can't be resolved. # # A configuration example of a full node setup using this would be this: # # { -# letsencrypt = import ./common/letsencrypt; +# acme = import ./common/acme/server; # # example = { nodes, ... }: { # networking.nameservers = [ -# nodes.letsencrypt.config.networking.primaryIPAddress +# nodes.acme.config.networking.primaryIPAddress # ]; # security.pki.certificateFiles = [ -# nodes.letsencrypt.config.test-support.letsencrypt.caCert +# nodes.acme.config.test-support.acme.caCert # ]; # }; # } @@ -33,9 +33,9 @@ # override networking.nameservers like this: # # { -# letsencrypt = { nodes, ... }: { -# imports = [ ./common/letsencrypt ]; -# networking.nameservers = [ +# acme = { nodes, lib, ... }: { +# imports = [ ./common/acme/server ]; +# networking.nameservers = lib.mkForce [ # nodes.myresolver.config.networking.primaryIPAddress # ]; # }; @@ -55,16 +55,16 @@ let snakeOilCerts = import ./snakeoil-certs.nix; - wfeDomain = "acme-v02.api.letsencrypt.org"; + wfeDomain = "acme.test"; wfeCertFile = snakeOilCerts.${wfeDomain}.cert; wfeKeyFile = snakeOilCerts.${wfeDomain}.key; - siteDomain = "letsencrypt.org"; + siteDomain = "acme.test"; siteCertFile = snakeOilCerts.${siteDomain}.cert; siteKeyFile = snakeOilCerts.${siteDomain}.key; pebble = pkgs.pebble; resolver = let - message = "You need to define a resolver for the letsencrypt test module."; + message = "You need to define a resolver for the acme test module."; firstNS = lib.head config.networking.nameservers; in if config.networking.nameservers == [] then throw message else firstNS; @@ -76,15 +76,16 @@ let httpPort = 80; tlsPort = 443; ocspResponderURL = "http://0.0.0.0:4002"; + strict = true; }; pebbleConfFile = pkgs.writeText "pebble.conf" (builtins.toJSON pebbleConf); pebbleDataDir = "/root/pebble"; in { - imports = [ ../resolver.nix ]; + imports = [ ../../resolver.nix ]; - options.test-support.letsencrypt.caCert = lib.mkOption { + options.test-support.acme.caCert = lib.mkOption { type = lib.types.path; description = '' A certificate file to use with the nodes attribute to @@ -98,7 +99,7 @@ in { resolver.enable = let isLocalResolver = config.networking.nameservers == [ "127.0.0.1" ]; in lib.mkOverride 900 isLocalResolver; - letsencrypt.caCert = snakeOilCerts.ca.cert; + acme.caCert = snakeOilCerts.ca.cert; }; # This has priority 140, because modules/testing/test-instrumentation.nix @@ -126,8 +127,7 @@ in { ''; serviceConfig = { # Required to bind on privileged ports. - User = "root"; - Group = "root"; + AmbientCapabilities = [ "CAP_NET_BIND_SERVICE" ]; }; }; }; diff --git a/nixos/tests/common/letsencrypt/mkcerts.nix b/nixos/tests/common/acme/server/mkcerts.nix similarity index 94% rename from nixos/tests/common/letsencrypt/mkcerts.nix rename to nixos/tests/common/acme/server/mkcerts.nix index e7ac2bae46b..2474019cbac 100644 --- a/nixos/tests/common/letsencrypt/mkcerts.nix +++ b/nixos/tests/common/acme/server/mkcerts.nix @@ -1,10 +1,9 @@ { pkgs ? import {} , lib ? pkgs.lib - -, domains ? [ "acme-v02.api.letsencrypt.org" "letsencrypt.org" ] +, domains ? [ "acme.test" ] }: -pkgs.runCommand "letsencrypt-snakeoil-ca" { +pkgs.runCommand "acme-snakeoil-ca" { nativeBuildInputs = [ pkgs.openssl ]; } '' addpem() { diff --git a/nixos/tests/common/letsencrypt/mkcerts.sh b/nixos/tests/common/acme/server/mkcerts.sh similarity index 100% rename from nixos/tests/common/letsencrypt/mkcerts.sh rename to nixos/tests/common/acme/server/mkcerts.sh diff --git a/nixos/tests/common/acme/server/snakeoil-certs.nix b/nixos/tests/common/acme/server/snakeoil-certs.nix new file mode 100644 index 00000000000..fd537c3260f --- /dev/null +++ b/nixos/tests/common/acme/server/snakeoil-certs.nix @@ -0,0 +1,171 @@ +# Generated via mkcert.sh in the same directory. +{ + ca.key = builtins.toFile "ca.key" '' + -----BEGIN PRIVATE KEY----- + MIIJQwIBADANBgkqhkiG9w0BAQEFAASCCS0wggkpAgEAAoICAQDCnVZGEn68ezXl + DWE5gjsCPqutR4nxw/wvIbAxB2Vk2WeQ6HGvt2Jdrz5qer2IXd76YtpQeqd+ffet + aLtMeFTr+Xy9yqEpx2AfvmEEcLnuiWbsUGZzsHwW7/4kPgAFBy9TwJn/k892lR6u + QYa0QS39CX85kLMZ/LZXUyClIBa+IxT1OovmGqMOr4nGASRQP6d/nnyn41Knat/d + tpyaa5zgfYwA6YW6UxcywvBSpMOXM0/82BFZGyALt3nQ+ffmrtKcvMjsNLBFaslV + +zYO1PMbLbTCW8SmJTjhzuapXtBHruvoe24133XWlvcP1ylaTx0alwiQWJr1XEOU + WLEFTgOTeRyiVDxDunpz+7oGcwzcdOG8nCgd6w0aYaECz1zvS3FYTQz+MiqmEkx6 + s4bj1U90I0kwUJbeWjjrGO7Y9Qq4i19GafDg7cAMn9eHCiNbNrPj6t/gfaVbCrbk + m3ZVjkvLTQ2mb2lv7+tVii45227iNPuNS6lx2FVlr/DXiRrOVfghPvoOxUfXzogJ + hZLV4Zki+ycbGQa5w8YMDYCv4c08dKA7AatVhNS60c1zgQNjuWF3BvocSySyGUon + VT6h1DYlJ9YAqgqNpedgNR9kpp034SMhB7dj9leB6LRMA+c1fG/T+1lDbkA+vope + pt4+30oDcCTYfEifl1HwqNw/bXDm1wIDAQABAoICABPbd/UYaAQVUk93yQbUKe81 + s9CvbvzTMYUhm9e02Hyszitz/D2gqZHDksvMkFA8u8aylXIGwdZfRglUmV/ZG1kk + kLzQ0xbvN/ilNUL9uYsETBMqtPly9YZloHnUNa5NqF+UVGJGk7GWz5WaLANybx3V + fTzDbfLl3TkVy0vt9UQbUkUfXyzwZNjXwmgIr8rcY9vasP90a3eXqRX3Tw1Wk6A4 + TzO8oB994O0WBO150Fc6Lhwvc72yzddENlLDXq8UAXtqq9mmGqJKnhZ+1mo3AkMw + q7P1JyCIxcAMm26GtRvLVljXV0x5640kxDrCin6jeeW/qWkJEW6dpmuZjR5scmLI + /9n8H+fGzdZH8bOPPotMy12doj3vJqvew3p0eIkmVctYMJKD0j/CWjvKJNE3Yx4O + Ls47X/dEypX6anR1HQUXcpd6JfRWdIJANo2Duaz+HYbyA88bHcJL9shFYcjLs3sX + R/TvnnKHvw/ud7XBgvLGwGAf/cDEuLI2tv+V7tkMGrMUv+gUJNZaJaCpdt+1iUwO + QFq8APyBNn6FFw54TwXWfSjfSNh3geIMLHuErYVu9MIXvB7Yhh+ZvLcfLbmckhAX + wb39RRHnCWvnw5Bm9hnsDhqfDsIoP+2wvUkViyHOmrKi8nSJhSk19C8AuQtSVcJg + 5op+epEmjt70GHt52nuBAoIBAQD2a4Ftp4QxWE2d6oAFI6WPrX7nAwI5/ezCbO/h + yoYAn6ucTVnn5/5ITJ8V4WTWZ4lkoZP3YSJiCyBhs8fN63J+RaJ/bFRblHDns1HA + 2nlMVdNLg6uOfjgUJ8Y6xVM0J2dcFtwIFyK5pfZ7loxMZfvuovg74vDOi2vnO3dO + 16DP3zUx6B/yIt57CYn8NWTq+MO2bzKUnczUQRx0yEzPOfOmVbcqGP8f7WEdDWXm + 7scjjN53OPyKzLOVEhOMsUhIMBMO25I9ZpcVkyj3/nj+fFLf/XjOTM00M/S/KnOj + RwaWffx6mSYS66qNc5JSsojhIiYyiGVEWIznBpNWDU35y/uXAoIBAQDKLj0dyig2 + kj1r3HvdgK4sRULqBQFMqE9ylxDmpJxAj6/A8hJ0RCBR57vnIIZMzK4+6K0l3VBJ + ukzXJHJLPkZ0Uuo2zLuRLkyjBECH6KYznyTkUVRn50Oq6IoP6WTCfd3Eg+7AKYY1 + VFo2iR8sxeSQQ+AylFy6QcQ1xPIW30Jj1/LFjrRdRggapPEekpJec0pEqhasT8rR + UFhRL2NdZnL5b7ZlsJc7gZKEJgNfxgzaCzloqLcjCgGpOhLKx0fFsNOqHcbIGMwG + 6wQCOyNghQJ6AZtRD5TYCJow92FchWjoTIaMJ8RjMKQmxpiwM6wQG4J78Hd3mbhf + q0hiQhPHaNbBAoIBAFeIeMFq8BpXM7sUwcURlI4lIx8Mgo33FVM7PzsFpfQyw9MR + 5w3p6vnjvd8X4aoHvVZxzw3hA0WwjiAmrKMJL/KK6d45rP2bDUBBAplvAgeLtTLt + 4tMLIwCF4HSgA55TIPQlaqO1FDC+M4BTSiMZVxS970/WnZPBEuNgzFDFZ+pvb4X6 + 3t40ZLNwAAQHM4IEPAFiHqWMKGZ9eo5BWIeEHnjHmfjqSDYfLJAVYk1WJIcMUzom + lA76CBC8CxW/I94AtcRhWuFUv/Z5/+OYEYLUxtuqPm+J+JrCmf4OJmWppT1wI2+p + V00BSeRVWXTm1piieM8ahF5y1hp6y3uV3k0NmKECggEBAMC42Ms3s6NpPSE+99eJ + 3P0YPJOkl7uByNGbTKH+kW89SDRsy8iGVCSe9892gm5cwU/4LWyljO3qp2qBNG2i + /DfP/bCk8bqPXsAZwoWK8DrO3bTCDepJWYhlx40pVkHLBwVXGdOVAXh+YswPY2cj + cB9QhDrSj52AKU9z36yLvtY7uBA3Wph6tCjpx2n0H4/m6AmR9LDmEpf5tWYV/OrA + SKKaqUw/y7kOZyKOtbKqr/98qYmpIYFF/ZVZZSZkVXcNeoZzgdOlR37ksVqLEsrj + nxu7wli/uItBj/FTLjyqcvjUUYDyO1KtwBuyPUPgzYhBIN2Rt9+K6WRQelwnToFL + 30ECggEBALzozykZj2sr3z8tQQRZuXLGotUFGsQCB8ikeqoeB8FbNNkC+qgflQGv + zLRB2KWOvnboc94wVgBJH43xG0HBibZnBhUO8/HBI/WlmyEj9KQ/ZskUK4GVZkB6 + r/81ASLwH+P/rqrLEjcp1SIPPevjzCWD9VYR5m/qPHLNxStwGSrPjtPzgaFxhq84 + Jl+YVmNqVlrOKYYfIPh8exPLiTti3wfM61pVYFv56PI2gd5ysMWYnuN+vK0sbmZh + cIWwykcKlODIngI7IzYqt8NuIJI0jrYyHgtUw4jaJzdF4mEOplGONxdz15jAGHtg + JUsBXFNz132nP4iIr3UKrPedQZijSi4= + -----END PRIVATE KEY----- + ''; + ca.cert = builtins.toFile "ca.cert" '' + -----BEGIN CERTIFICATE----- + MIIFDzCCAvegAwIBAgIUTRDYSWJvmlhwIR3pzVrIQfnboLEwDQYJKoZIhvcNAQEL + BQAwFjEUMBIGA1UEAwwLU25ha2VvaWwgQ0EwIBcNMjAwMzIyMjI1NjE3WhgPMjEy + MDAyMjcyMjU2MTdaMBYxFDASBgNVBAMMC1NuYWtlb2lsIENBMIICIjANBgkqhkiG + 9w0BAQEFAAOCAg8AMIICCgKCAgEAwp1WRhJ+vHs15Q1hOYI7Aj6rrUeJ8cP8LyGw + MQdlZNlnkOhxr7diXa8+anq9iF3e+mLaUHqnfn33rWi7THhU6/l8vcqhKcdgH75h + BHC57olm7FBmc7B8Fu/+JD4ABQcvU8CZ/5PPdpUerkGGtEEt/Ql/OZCzGfy2V1Mg + pSAWviMU9TqL5hqjDq+JxgEkUD+nf558p+NSp2rf3bacmmuc4H2MAOmFulMXMsLw + UqTDlzNP/NgRWRsgC7d50Pn35q7SnLzI7DSwRWrJVfs2DtTzGy20wlvEpiU44c7m + qV7QR67r6HtuNd911pb3D9cpWk8dGpcIkFia9VxDlFixBU4Dk3kcolQ8Q7p6c/u6 + BnMM3HThvJwoHesNGmGhAs9c70txWE0M/jIqphJMerOG49VPdCNJMFCW3lo46xju + 2PUKuItfRmnw4O3ADJ/XhwojWzaz4+rf4H2lWwq25Jt2VY5Ly00Npm9pb+/rVYou + Odtu4jT7jUupcdhVZa/w14kazlX4IT76DsVH186ICYWS1eGZIvsnGxkGucPGDA2A + r+HNPHSgOwGrVYTUutHNc4EDY7lhdwb6HEskshlKJ1U+odQ2JSfWAKoKjaXnYDUf + ZKadN+EjIQe3Y/ZXgei0TAPnNXxv0/tZQ25APr6KXqbePt9KA3Ak2HxIn5dR8Kjc + P21w5tcCAwEAAaNTMFEwHQYDVR0OBBYEFCIoeYSYjtMiPrmxfHmcrsZkyTpvMB8G + A1UdIwQYMBaAFCIoeYSYjtMiPrmxfHmcrsZkyTpvMA8GA1UdEwEB/wQFMAMBAf8w + DQYJKoZIhvcNAQELBQADggIBAHPdwOgAxyhIhbqFObNftW8K3sptorB/Fj6jwYCm + mHleFueqQnjTHMWsflOjREvQp1M307FWooGj+KQkjwvAyDc/Hmy7WgJxBg9p3vc+ + /Xf/e7ZfBl8rv7vH8VXW/BC1vVsILdFncrgTrP8/4psV50/cl1F4+nPBiekvvxwZ + k+R7SgeSvcWT7YlOG8tm1M3al4F4mWzSRkYjkrXmwRCKAiya9xcGSt0Bob+LoM/O + mpDGV/PMC1WAoDc1mMuXN2hSc0n68xMcuFs+dj/nQYn8uL5pzOxpX9560ynKyLDv + yOzQlM2VuZ7H2hSIeYOFgrtHJJwhDtzjmUNDQpQdp9Fx+LONQTS1VLCTXND2i/3F + 10X6PkdnLEn09RiPt5qy20pQkICxoEydmlwpFs32musYfJPdBPkZqZWrwINBv2Wb + HfOmEB4xUvXufZ5Ju5icgggBkyNA3PCLo0GZFRrMtvA7i9IXOcXNR+njhKa9246V + QQfeWiz05RmIvgShJYVsnZWtael8ni366d+UXypBYncohimyNlAD1n+Bh3z0PvBB + +FK4JgOSeouM4SuBHdwmlZ/H0mvfUG81Y8Jbrw0yuRHtuCtX5HpN5GKpZPHDE7aQ + fEShVB/GElC3n3DvgK9OJBeVVhYQgUEfJi4rsSxt3cdEI0NrdckUoZbApWVJ3CBc + F8Y7 + -----END CERTIFICATE----- + ''; + "acme.test".key = builtins.toFile "acme.test.key" '' + -----BEGIN RSA PRIVATE KEY----- + MIIJKAIBAAKCAgEAlgQTZjKfs3aHw0J993k7jFAs+hVRPf//zHMAiUkPKUYPTSl1 + TxS/bPbhWzSoom00j4SLhGGGhbd+lnvTg0uvKbxskgATfw5clbm1ZN+gx4DuxwjL + V3xIxpeSY+PKzs5z8w/k+AJh+zOPyXwH3ut3C+ogp1S/5IhmzV3a/yU/6k0zpGxj + N6ZPRTXFrz93I1pPeCkJz90l7tj+2uFc9xtM20NQX52f0Y2oShcG8fKdNZVzuHHk + ZXkrZIhou55/nRy2jKgFeD3GQQfa9rwPWrVybQ6tKMMkoazB/Unky9xcTI2LJarf + xgHDO9v9yFBvmR4UM8B3kM82NHoENtHaZ2mmiMGZzTEQlf8xwYyHFrqBFIVRWEUr + 7rr/O5Qr9gIN0T4u367HCexVYAKzbO2P9h75czzjMMoGkbXze9SMQ/ikrxEmwAHg + r1Xxh6iQYmgPNk8AR3d9+o2I7WJZMUYZARLnuhVr9BNXv510iqZTqX8lcyL5fEj3 + ST4Ab+H7rfevZt6NU26iJLBYAjrA2mSvH+wvkboxrgSS8xYPkOW8NLNEbbodzofI + pB+SaK53OIk0bj9c1YAgrSNER/TDTgDXrWUNrlfVZ/M7+AEdeU06wi7sVhVif6OB + D3OpgKSNjeE6TuJH80Pi5MWugSFBr792Xb6uhVoPiVOFN+qiGB6UkwBgSKkCAwEA + AQKCAgAmN7OZfZwh5DiCDhZ5TXFWNba/n16rJOTN+R5R20L5iNetGLrCAs8hu2N+ + ENRFTPzu8x14BEB5IF4niDRCZq2hPFeMemh9HfOIUV9c63vSV459NkhXaVpA/axV + tlqchQwVCB+U70Z28JPZCLgYmnQhnOvktTqNxhIqj5aTGbJGxpQ5d0Nvkfbv8tsB + 4nE/mGpWel39jqFzT+Tdbjx414Ok+GkpcsacZDJTbbpfOSfD1uc8PgepskzTt8y2 + v5JTPFVlUAjUsSgouQ+XfCGNQlx8XBjRIaXbal+hX4niRald91FTr0yC7UAHp+vn + dFZ586fB526OfbuZctxP+vZhEhFSseQKxHQ0tB8me81xH44daVNr9PPUM69FDT3j + ygJaUJjNEG3vVzePCDzhmxTmz2/rAClp77WTWziBWDoA6YWDDzhgNPrXWzLIbZIx + ue9ZbGEOh/u5ZzrEXxKCz9FjDe9wQu3TeYUe0M+ejzwWgn7zdWDvjjmtLUUuun2Y + wW7WANpu32qvB/V+qssw4O63tbRiwneRCnb8AF2ixgyWr6xyZwch4kacv1KMiixf + gO/5GTj7ba5GcdGoktJb29cUEgz13yPd106RsHK4vcggFxfMbOVauNRIo6ddLwyS + 8UMxLf2i2cToOLkHZrIb8FgimmzRoBd3yYzwVJBydiVcsrHQAQKCAQEAxlzFYCiQ + hjEtblGnrkOC7Hx6HvqMelViOkGN8Y9VczG4GhwntmSE2nbpaAKhFBGdLfuSI3tJ + Lf24f0IGgAhzPmpo2TjbxPO3YSKFTH71fznVBhtQ1iSxwZ1InXktnuhot6VSDx6A + sbHSy1hMFy3nj+Zj5+fQ89tclzBzG9bCShaauO39KrPMwKi6CYoYdGhXBC3+OpHY + zBNvmDTxG2kW8L42rlf14EH4pAlgKs4eeZbpcbZ6fXURP2hToHJ8swyKw/1p12WA + cc19BKFJXL8nNP4uCf/fI0mVYpytz5KwUzG+z+umDqk+RRCH4mNB28xvEEuEyp/e + /C5Is+WrlDAA6QKCAQEAwZsK4AJ/w4Xf4Q/SsnZJO9bfP1ejJjzKElt8rG28JXeb + +FjykZZ6vw2gt2Boest2n9N4fBwaRkaHVtVS4iAmaDXozTlcvCLs2rVjPSguuQtW + 80CKg6+dux+6gFN8IGzDCiX3pWUnhhiXvCcRYEcvgpH6GA5vuCNrXrjH0JFC0kef + aaDMGMTbzhc2IIRztmWU4v8YJSSy5KOkIQLWO+7u9aGx9IqT5/z3gx3XrItyl0Bk + aQmZEh7JOSyhmGhhf5LdeTLu2YgRw3/tzS+lPMX3+UPw99k9MdTOFn2pww5AdRmg + aBIzV+/LBYG0pPRl0D8/6yzGVBPuUDQpmK9Z3gsxwQKCAQEAnNkMZN2Ocd1+6+V7 + LmtJog9HTSmWXMEZG7FsOJ661Yxx44txx2IyPsCaDNlPXxwSaiKrSo0Yr1oZQd8G + XsTPw4HGiETSWijQTulJ99PH8SLck6iTwdBgEhV5LrN75FQnQVdizHu1DUzrvkiC + Wi29FWb6howiCEDjNNVln5SwKn83NpVQgyyK8ag4+oQMlDdQ3wgzJ0Ld53hS3Eq4 + f5EYR6JQgIki7YGcxrB3L0GujTxMONMuhfdEfRvUTGFawwVe0FyYDW7AIrx2Z2vV + I5YuvVNjOhrt6OwtSD1VnnWCITaLh8LwmlUu3NOWbudHUzKSe5MLXGEPo95BNKad + hl5yyQKCAQBNo0gMJtRnawMpdLfwewDJL1SdSR6S0ePS0r8/Qk4l1D5GrByyB183 + yFY/0zhyra7nTt1NH9PlhJj3WFqBdZURSzUNP0iR5YuH9R9Twg5ihEqdB6/EOSOO + i521okTvl83q/ui9ecAMxUXr3NrZ+hHyUWmyRe/FLub6uCzg1a+vNauWpzXRZPgk + QCijh5oDdd7r3JIpKvtWNs01s7aHmDxZYjtDrmK7sDTtboUzm0QbpWXevUuV+aSF + +gDfZlRa3WFVHfisYSWGeYG6O7YOlfDoE7fJHGOu3QC8Ai6Wmtt8Wgd6VHokdHO8 + xJPVZnCBvyt5up3Zz5hMr25S3VazdVfBAoIBAHVteqTGqWpKFxekGwR0RqE30wmN + iIEwFhgOZ8sQ+6ViZJZUR4Nn2fchn2jVwF8V8J1GrJbTknqzAwdXtO3FbgfmmyF2 + 9VbS/GgomXhA9vJkM4KK3Iwo/y/nE9hRhtzuVE0QPudz2fyfaDgnWjcNM59064tH + 88361LVJm3ixyWSBD41UZ7NgWWJX1y2f073vErsfcPpavF5lhn1oSkQnOlgMJsnl + 24qeuzAgTWu/2rFpIA2EK30Bgvsl3pjJxHwyNDAgklV7C783LIoAHi7VO7tzZ6iF + dmD5XLfcUZc3eaB7XehNQKBXDGLJeI5AFmjsHka5GUoitkU2PFrg/3+nJmg= + -----END RSA PRIVATE KEY----- + ''; + "acme.test".cert = builtins.toFile "acme.test.cert" '' + -----BEGIN CERTIFICATE----- + MIIEoTCCAokCAgKaMA0GCSqGSIb3DQEBCwUAMBYxFDASBgNVBAMMC1NuYWtlb2ls + IENBMCAXDTIwMDMyMjIyNTYxOFoYDzIxMjAwMjI3MjI1NjE4WjAUMRIwEAYDVQQD + DAlhY21lLnRlc3QwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCWBBNm + Mp+zdofDQn33eTuMUCz6FVE9///McwCJSQ8pRg9NKXVPFL9s9uFbNKiibTSPhIuE + YYaFt36We9ODS68pvGySABN/DlyVubVk36DHgO7HCMtXfEjGl5Jj48rOznPzD+T4 + AmH7M4/JfAfe63cL6iCnVL/kiGbNXdr/JT/qTTOkbGM3pk9FNcWvP3cjWk94KQnP + 3SXu2P7a4Vz3G0zbQ1BfnZ/RjahKFwbx8p01lXO4ceRleStkiGi7nn+dHLaMqAV4 + PcZBB9r2vA9atXJtDq0owyShrMH9SeTL3FxMjYslqt/GAcM72/3IUG+ZHhQzwHeQ + zzY0egQ20dpnaaaIwZnNMRCV/zHBjIcWuoEUhVFYRSvuuv87lCv2Ag3RPi7frscJ + 7FVgArNs7Y/2HvlzPOMwygaRtfN71IxD+KSvESbAAeCvVfGHqJBiaA82TwBHd336 + jYjtYlkxRhkBEue6FWv0E1e/nXSKplOpfyVzIvl8SPdJPgBv4fut969m3o1TbqIk + sFgCOsDaZK8f7C+RujGuBJLzFg+Q5bw0s0Rtuh3Oh8ikH5Jornc4iTRuP1zVgCCt + I0RH9MNOANetZQ2uV9Vn8zv4AR15TTrCLuxWFWJ/o4EPc6mApI2N4TpO4kfzQ+Lk + xa6BIUGvv3Zdvq6FWg+JU4U36qIYHpSTAGBIqQIDAQABMA0GCSqGSIb3DQEBCwUA + A4ICAQBCDs0V4z00Ze6Ask3qDOLAPo4k85QCfItlRZmwl2XbPZq7kbe13MqF2wxx + yiLalm6veK+ehU9MYN104hJZnuce5iEcZurk+8A+Pwn1Ifz+oWKVbUtUP3uV8Sm3 + chktJ2H1bebXtNJE5TwvdHiUkXU9ywQt2FkxiTSl6+eac7JKEQ8lVN/o6uYxF5ds + +oIZplb7bv2XxsRCzq55F2tJX7fIzqXrSa+lQTnfLGmDVMAQX4TRB/lx0Gqd1a9y + qGfFnZ7xVyW97f6PiL8MoxPfd2I2JzrzGyP/igNbFOW0ho1OwfxVmvZeS7fQSc5e + +qu+nwnFfl0S4cHRif3G3zmz8Ryx9LM5TYkH41qePIHxoEO2sV0DgWJvbSjysV2S + EU2a31dJ0aZ+z6YtZVpHlujKMVzxVTrqj74trS4LvU5h/9hv7e1gjYdox1TO0HMK + mtDfgBevB21Tvxpz67Ijf31HvfTmCerKJEOjGnbYmyYpMeMNSONRDcToWk8sUwvi + OWa5jlUFRAxgXNM09vCTPi9aRUhcFqACqfAd6I1NqGVlfplLWrc7SWaSa+PsLfBf + 4EOZfk8iEKBVeYXNjg+CcD8j8yk/oEs816/jpihIk8haCDRWYWGKyyGnwn6OQb8d + MdRO2b7Oi/AAmEF3jMlICqv286GIYK5qTKk2/CKHlOLPnsWEuA== + -----END CERTIFICATE----- + ''; +} diff --git a/nixos/modules/services/x11/display-managers/auto.nix b/nixos/tests/common/auto.nix similarity index 93% rename from nixos/modules/services/x11/display-managers/auto.nix rename to nixos/tests/common/auto.nix index 1068a344e0c..2c21a8d5167 100644 --- a/nixos/modules/services/x11/display-managers/auto.nix +++ b/nixos/tests/common/auto.nix @@ -5,7 +5,7 @@ with lib; let dmcfg = config.services.xserver.displayManager; - cfg = dmcfg.auto; + cfg = config.test-support.displayManager.auto; in @@ -15,7 +15,7 @@ in options = { - services.xserver.displayManager.auto = { + test-support.displayManager.auto = { enable = mkOption { default = false; diff --git a/nixos/tests/common/ec2.nix b/nixos/tests/common/ec2.nix index 1e69b63191a..ba087bb6009 100644 --- a/nixos/tests/common/ec2.nix +++ b/nixos/tests/common/ec2.nix @@ -25,7 +25,7 @@ with pkgs.lib; my $imageDir = ($ENV{'TMPDIR'} // "/tmp") . "/vm-state-machine"; mkdir $imageDir, 0700; my $diskImage = "$imageDir/machine.qcow2"; - system("qemu-img create -f qcow2 -o backing_file=${image}/nixos.qcow2 $diskImage") == 0 or die; + system("qemu-img create -f qcow2 -o backing_file=${image} $diskImage") == 0 or die; system("qemu-img resize $diskImage 10G") == 0 or die; # Note: we use net=169.0.0.0/8 rather than @@ -35,7 +35,7 @@ with pkgs.lib; # again when it deletes link-local addresses.) Ideally we'd # turn off the DHCP server, but qemu does not have an option # to do that. - my $startCommand = "qemu-kvm -m 768"; + my $startCommand = "qemu-kvm -m 1024"; $startCommand .= " -device virtio-net-pci,netdev=vlan0"; $startCommand .= " -netdev 'user,id=vlan0,net=169.0.0.0/8,guestfwd=tcp:169.254.169.254:80-cmd:${pkgs.micro-httpd}/bin/micro_httpd ${metaData}'"; $startCommand .= " -drive file=$diskImage,if=virtio,werror=report"; diff --git a/nixos/tests/common/letsencrypt/common.nix b/nixos/tests/common/letsencrypt/common.nix deleted file mode 100644 index c530de817bf..00000000000 --- a/nixos/tests/common/letsencrypt/common.nix +++ /dev/null @@ -1,9 +0,0 @@ -{ lib, nodes, pkgs, ... }: let - letsencrypt-ca = nodes.letsencrypt.config.test-support.letsencrypt.caCert; -in { - networking.nameservers = [ - nodes.letsencrypt.config.networking.primaryIPAddress - ]; - - security.pki.certificateFiles = [ letsencrypt-ca ]; -} diff --git a/nixos/tests/common/letsencrypt/snakeoil-certs.nix b/nixos/tests/common/letsencrypt/snakeoil-certs.nix deleted file mode 100644 index ca4f71ae688..00000000000 --- a/nixos/tests/common/letsencrypt/snakeoil-certs.nix +++ /dev/null @@ -1,254 +0,0 @@ -# Generated via mkcert.sh in the same directory. -{ - ca.key = builtins.toFile "ca.key" '' - -----BEGIN PRIVATE KEY----- - MIIJQgIBADANBgkqhkiG9w0BAQEFAASCCSwwggkoAgEAAoICAQDQ0b23I1srJZwR - 2MMdvSJK5pcwLfrXU+4gEZEnWNyT8yeVweya+8vmNNOlvK3zxf+ZiY/7aQ0RZJMO - h2+VdlgHmr2QKhQTf1HwfZA/06FolD3/DcS+DMJMSTVr179/XLndeVVZUqU7tjvB - AWKSIS8H2hSF1UOPi9gBDR8MwCP6Qgj8WYhbkt9q47/lO96qAmm6U1F+Q7RYM9ZQ - IWI81N0Ms5wJocg7n6S19iV66ePh7APapZFYup61gFGWfahmA217ELIZd56n8yjO - F0epb9sC0XpYCDRrYKBWLqPiv+6wvdZtZvALItyIv08ZwXlBkFg3LbAAhPnf0Vxz - pYysQmyyyzkgy252n+Sie0kx+B4qm6fOkpfgYlPSVTb2dXx/be/SE08u0a9FO0fZ - pkByWEZJUUwngsJgLUa7MorQf3avxozfC25XqvzbieZfSXlA7mOUclZbC/WUFpyj - MlyJU2eCQ8wSwsPXl91oxcYlOkuVLgd41gr9pGXQSuKIkrgbfkftjg2tDC+7g7O8 - qrdF42FjbZjIx/74AasmsGh4GTQtiSkvEnTstioC6aCV44DlJWbBIMvkyawubjUl - Ppij0H66Y9Q4tEc/ktc7oGQfqqluyLb43TeobTPHALsNeAYb39rMtBo5DDCUc81s - fuDMhMr/oYXKrFstUsg5AY6mJaRG0QIDAQABAoICAF5ZVfmoPOoKzTB3GvmV2iez - dj4rmDmwT1gn98iqasdiRtFwVGJWQHNcDQDGdmY9YNZThD2Y4nGoWpVm9jC2zuFo - thusF3QTw8cARKvCCBzDVhumce1YwHVNYpi+W2TFValOyBRathN7rBXxdUMHQUOv - 8jPh/uudyNP4xL2zFs5dBchW/7g4bT/TdYGyglGYU4L/YEPHfXWYvk1oOAW6O8Ig - aPElKt5drEMW2yplATSzua4RvtEzSMBDIRn43pxxEgdXrNC67nF9+ULc2+Efi/oD - Ad9CncSiXO9zlVK/W655p6e4qd6uOqyCm8/MTegkuub7eplRe8D3zGjoNN4kCQ4S - rckVvIDDb6vZk7PKx9F7GWIqaG/YvFFFKO1MrAZg7SguFA6PtGOYAFocT03P6KXT - l2SnZQWKyxUAlh4tOBGlRFgGCx/krRIKbgNYn/qk/ezcRl8c7GpOPh+b7Icoq7u3 - l4tIVBBHqS8uGgtyi+YwuJeht2MV1aEcSkykKLh2ipp8tb6spORJUkhjawDjvxeQ - GztN30Xh2riTXYZ0HExVTtJa8jyvFyp/97ptPIJXaVt2A2KIS3sBFHKnpY+/OrQg - uUauYgi13WFHsKOxZL9GYGk7Ujd8bw4CEcJFxKY7bhpGVI6Du7NRkUDWN0+0yusI - 2szCJ7+ZqJkrc1+GrI/RAoIBAQDseAEggOLYZkpU2Pht15ZbxjM9ayT2ANq1+RTu - LjJx4gv2/o/XJCfMZCL0b9TJqtYeH+N6G9oDRJ99VIhUPedhWSYdj9Qj+rPd++TS - bp+MoSjmfUfxLTDrmFHL7ppquAE65aDy3B5c+OCb0I4X6CILUf0LynBzgl4kdrzN - U6BG3Mt0RiGPojlPV82B9ZUF/09YAz7BIz9X3KMhze1Gps5OeGuUnc9O2IAJYkrj - ur9H2YlNS4w+IjRLAXSXUqC8bqPZp6WTo1G/rlyAkIRXCGN90uk5JQvXoj9immFO - WaylbdcNG3YcGutreYeZL/UIWF6zCdc6pYG0cCBJS6S/RN7FAoIBAQDiERrLuUbV - 3fx/a8uMeZop6hXtQpF7jlFxqUmza7QSvBuwks4QVJF+qMSiSvKDkCKqZD4qVf4N - TMxEj5vNR0PbnmDshyKJNGVjEauKJSb65CFDUcL1eR/A/oJvxiIdN1Z4cPrpnRux - /zIfPuYfYHpdz52buxxmlD7bfwYmVKVpnzjB9z0I1CasZ5uqB0Z8H0OLyUu8S4ju - RfkKBDMgVl2q96i8ZvX4C1b7XuimIUqv4WHq5+ejcYirgrYtUbBIaDU3/LORcJdy - /K76L1/up70RTDUYYm/HKaRy+vMTpUsZJ7Qbh0hrvQkUvNQ1HXjprW2AePIYi33N - h3mb1ulqw4idAoIBAQCsn0YjVjNDShkFK4bfmLv4rw2Ezoyi0SjYIsb2wN6uaBfX - 7SlQIuKywH8L9f9eYMoCH8FNyLs0G4paUbVb2fzpAc1jUzXINiHL8TCvtXXfkV5s - NBSqqRTHR+CegMZVFZJATpVZ9PptYHmHBY5VQW5o2SdizhudFxRmhg95zIx6boBP - l0q0sfYoR66MKpzpTeG8HFJZZ8O7/iNQcCXAp9B/VEUkrrdBlaaSMyD8cb1lVBZ5 - SKdOTGXkQ2G7feQ86n/OSiYDSvxIc56vc9BIQKVwmuEKiFLGzXh8ILrcGXaBJVgS - B3QHPFeTk5o7Z9j2iJxJEuv9sginkhrfpsrTnhEJAoIBACkrUkTtjd/e2F/gIqaH - crLVZX7a06G7rktTuA9LuvR6e1Rxt8Mzk3eMhprDqVyaQCXlsYiGNoj3hm+p84az - xsDVG/OXPIveFeSv0ByNXYbtSr12w1lu4ICGGP0ACTBm5oFymc83hFarEdas3r2y - FTbGW36D2c04jCXvARCz85fDnlN8kgnskMpu5+NUBdsO2n83fmphGyPBbHQNhb4K - 3G4JQhplab/tWL7YbufqQi67jdh4uS+Duo75c/HW4ZKeH6r9gzomVf5j0/3N6NuO - gpkG1tiE/LQ5ejBSUTgvrvh6yYsF3QN53pB/PuoZXu63Xay62ePsa1GlrVjbD5EY - 4OUCggEAJFr7F7AQLMJTAxHFLCsZZ0ZZ+tXYclBC4eHPkZ6sD5jvL3KIpW3Q7jXk - oIoD/XEX4B+Qe5M3jQJ/Y5ZJETHcgfcHZbDpCKN2WHQgldQbAJiFd4GY1OegdVsr - 7TC8jh3Q2eYjzL8u4z7LSNI6aQSv1eWE7S1Q5j/sX/YYDR4W3CBMeIUpqoDWpn87 - czbIRyA/4L0Y/HLpg/ZCbvtJZbsQwYXhyqfbjlm4BRQ6JiC5uEBKvuDRUXToBJta - JU8XMm+Ae5Ogrw7P6hg68dWpagfjb7UZ7Zxv+VDsbrU6KsDcyGCAwrrRZou/6KUG - Eq4OVTSu/s8gmY94tgbjeOaLUPEPmg== - -----END PRIVATE KEY----- - ''; - ca.cert = builtins.toFile "ca.cert" '' - -----BEGIN CERTIFICATE----- - MIIFDzCCAvegAwIBAgIUU9rbCLTuvaI6gjSsFsJJjfLWIX8wDQYJKoZIhvcNAQEL - BQAwFjEUMBIGA1UEAwwLU25ha2VvaWwgQ0EwIBcNMTkxMDE4MDc1NDEyWhgPMjEx - OTA5MjQwNzU0MTJaMBYxFDASBgNVBAMMC1NuYWtlb2lsIENBMIICIjANBgkqhkiG - 9w0BAQEFAAOCAg8AMIICCgKCAgEA0NG9tyNbKyWcEdjDHb0iSuaXMC3611PuIBGR - J1jck/MnlcHsmvvL5jTTpbyt88X/mYmP+2kNEWSTDodvlXZYB5q9kCoUE39R8H2Q - P9OhaJQ9/w3EvgzCTEk1a9e/f1y53XlVWVKlO7Y7wQFikiEvB9oUhdVDj4vYAQ0f - DMAj+kII/FmIW5LfauO/5TveqgJpulNRfkO0WDPWUCFiPNTdDLOcCaHIO5+ktfYl - eunj4ewD2qWRWLqetYBRln2oZgNtexCyGXeep/MozhdHqW/bAtF6WAg0a2CgVi6j - 4r/usL3WbWbwCyLciL9PGcF5QZBYNy2wAIT539Fcc6WMrEJssss5IMtudp/kontJ - MfgeKpunzpKX4GJT0lU29nV8f23v0hNPLtGvRTtH2aZAclhGSVFMJ4LCYC1GuzKK - 0H92r8aM3wtuV6r824nmX0l5QO5jlHJWWwv1lBacozJciVNngkPMEsLD15fdaMXG - JTpLlS4HeNYK/aRl0EriiJK4G35H7Y4NrQwvu4OzvKq3ReNhY22YyMf++AGrJrBo - eBk0LYkpLxJ07LYqAumgleOA5SVmwSDL5MmsLm41JT6Yo9B+umPUOLRHP5LXO6Bk - H6qpbsi2+N03qG0zxwC7DXgGG9/azLQaOQwwlHPNbH7gzITK/6GFyqxbLVLIOQGO - piWkRtECAwEAAaNTMFEwHQYDVR0OBBYEFAZcEiVphGxBT4OWXbM6lKu96dvbMB8G - A1UdIwQYMBaAFAZcEiVphGxBT4OWXbM6lKu96dvbMA8GA1UdEwEB/wQFMAMBAf8w - DQYJKoZIhvcNAQELBQADggIBAGJ5Jnxq1IQ++IRYxCE7r7BqzzF+HTx0EWKkSOmt - eSPqeOdhC26hJlclgGZXAF/Xosmn8vkSQMHhj/jr4HI0VF9IyvDUJm8AKsnOgu/7 - DUey3lEUdOtJpTG9NyTOcrzxToMJ+hWlFLZKxx2dk4FLIvTLjmo1VHM97Bat7XYW - IrL9RRIZ25V+eCYtlR7XYjceGFQ0rCdp8SFIQwC6C/AH2tV3b1AJFsND9PcoLu7c - //fH+WUQCcD/N0grdC/QCX7AFWzd4rKQ8gjfND4TSYFTSDwW10Mud4kAVhY2P1sY - Y3ZpnxWrCHbIZMbszlbMyD+cjsCBnNvOtYGm7pDut/371rllVcB/uOWYWMCtKPoj - 0elPrwNMrK+P+wceNBCRQO+9gwzB589F2morFTtsob/qtpAygW8Sfl8M+iLWXeYS - c3LBLnj0TpgXKRWg7wgIWKSZx9v6pgy70U0qvkjNS1XseUCPf7hfAbxT3xF+37Dw - zZRwF4WAWqdnJoOey21mgc+a2DQzqtykA6KfHgCqNFfDbQXPXvNy25DDThbk+paX - G2M2EWtr+Nv9s/zm7Xv/pOXlgMFavaj+ikqZ4wfJf6c/sMOdZJtMA4TsYtAJgbc8 - ts+0eymTq4v5S8/fW51Lbjw6hc1Kcm8k7NbHSi9sEjBfxFLTZNQ5eb4NGr9Od3sU - kgwJ - -----END CERTIFICATE----- - ''; - "acme-v02.api.letsencrypt.org".key = builtins.toFile "acme-v02.api.letsencrypt.org.key" '' - -----BEGIN RSA PRIVATE KEY----- - MIIJKQIBAAKCAgEApny0WhfDwEXe6WDTCw8qBuMAPDr88pj6kbhQWfzAW2c0TggJ - Etjs9dktENeTpSl14nnLVMiSYIJPYY3KbOIFQH1qDaOuQ7NaOhj9CdMTm5r9bl+C - YAyqLIMQ9AAZDhUcQjOy3moiL7ClFHlkFYuEzZBO9DF7hJpfUFIs0Idg50mNoZh/ - K/fb4P2skNjfCjjomTRUmZHxT6G00ImSTtSaYbN/WHut1xXwJvOoT1nlEA/PghKm - JJ9ZuRMSddUJmjL+sT09L8LVkK8CKeHi4r58DHM0D0u8owIFV9qsXd5UvZHaNgvQ - 4OAWGukMX+TxRuqkUZkaj84vnNL+ttEMl4jedw0ImzNtCOYehDyTPRkfng5PLWMS - vWbwyP8jDd2578mSbx5BF7ypYX366+vknjIFyZ5WezcC1pscIHxLoEwuhuf+knN+ - kFkLOHeYbqQrU6mxSnu9q0hnNvGUkTP0a/1aLOGRfQ5C/pxpE/Rebi8qfM/OJFd4 - mSxGL93JUTXWAItiIeBnQpIne65/Ska9dWynOEfIb0okdet3kfmNHz3zc17dZ5g4 - AdOSCgHAlQgFt/Qd8W6xXUe4C5Mfv2ctxRrfQhDwtB6rMByPwzImnciC2h3vCwD3 - vS/vjUyWICyhZyi2LZDUQz+sCKBXCYYcYh8ThFO40j5x1OnYMq7XQvyl8QkCAwEA - AQKCAgBSAfdssWwRF9m3p6QNPIj9H3AMOxpB/azffqTFzsSJwYp4LWkayZPfffy+ - 4RGvN38D8e6ActP3ifjEGu3tOGBR5fUJhujeHEiDea+a2Ug9S9kuNwmnelWQ23bM - Wgf9cdSbn4+qEymHyEFolmsAWdsuzri1fHJVXR06GWBNz4GiLA8B3HY4GD1M1Gfe - aZVkGagpXyeVBdiR2xuP5VQWVI8/NQWzdiipW/sRlNABVkyI3uDeN4VzYLL3gTeE - p021kQz4DSxIjHZacHpmWwhBnIbKMy0fo7TlrqcnIWXqTwv63Q9Zs/RN8NOyqb0Y - t1NKFWafcwUsdOnrG9uv/cVwF1FNE8puydaOi8rL1zAeK89JH8NRQ02wohR9w8qy - b2tB6DyGMtuqBt8Il6GA16ZoEuaXeayvlsvDEmG1cS9ZwBvfgrVPAmlm2AYdIf5B - RHIJu4BJC6Nn2ehVLqxx1QDhog3SOnAsCmcfg5g/fCwxcVMLIhODFoiKYGeMitDG - Q4e5JKcOg+RR8PT/n4eY4rUDBGtsR+Nw8S2DWgXmSufyfDtKCjZB4IuLWPS29tNh - zF6iYfoiTWzrSs/yqPSKIFpv+PWZwkKSvjdxia6lSBYYEON4W2QICEtiEs+SvcG4 - 0eIqWM+rRmPnJyMfGqX6GCs3rHDQB2VNJPBCYPQalJ/KwZumAQKCAQEA0ezM6qPJ - 1JM/fddgeQ50h0T9TRXVUTCISxXza+l4NuFt1NdqUOdHsGtbL1JR4GaQUG8qD1/P - R39YgnQEQimxpmYLCZkobkwPxTZm9oiMXpcJrlN4PB5evaWShRSv3mgigpt3Wzml - Td+2R9RoA/hvF/wEyIvaWznYOyugBC7GXs20dNnZDULhUapeQu7r6JvgmxBOby7S - 0FbhGplBiSDETzZURqzH/GMJKaJtNgyyVf3Hbg4mZAQDWoBRr+8HxsNbDkxP6e91 - QrPHy2VZFiaTmJfoxRhyMTn7/JZaLJaUHDOniOsdMj/V7vMCgpfBqh5vR8bKzuPy - ZINggpcFPp1IYQKCAQEAywc7AQoktMBCru/3vzBqUveXbR3RKzNyZCTH5CMm3UNH - zmblFgqF2nxzNil21GqAXzSwZk5FyHbkeD3yvEZm+bXzsZTDNokAwoiTgyrr2tf8 - GLMlCHHl5euIh1xHuyg/oKajVGOoXUXK8piqiDpQKd3Zwc6u2oyQlh+gYTPKh+7i - ilipkYawoE6teb6JUGpvU+d27INgNhB2oDEXY3pG2PbV+wv229ykSZxh1sJUdDwT - a8eTg+3pCGXtOZiJoQTFwKUlD2WYTGqS4Gx6dIJco5k+ZikGNST1JGE64Jl4MZdI - rtyvpcYblh5Q14sJGvp4kWYS9tjEM8pA+4Z9th3JqQKCAQEAkidH0+UM1A9gmQCm - jiHeR39ky5Jz3f7oJT63J15479yrVxBTWNhtNQrJhXzOvGkr+JQsuF+ANMsYmFql - zFqy8KMC9D/JwmD6adeif+o5sHF/r/s1LsYGOAtao4TvnOzrefs7ciwERt+GTSQ4 - 9uq0jgJMYkPcVr9DKI8K7V6ThdW52dECKRVzQiRXVEp7vIsqKUuFECuNYrfaKWai - FhLWGkA9FKee5L0e1/naB1N3ph72Bk2btO6GVzAXr2HADEZe0umWiczJ2xLH+3go - Oh/JiufYi8ClYFh6dDVJutlrbOcZsV3gCegfzikqijmWABcIavSgpsJVNF2zh7gV - Uq62gQKCAQAdO2FHeQpn6/at8WceY/4rC/MFhvGC4tlpidIuCtGhsfo4wZ/iWImF - N73u4nF1jBAHpTJwyHxLrLKgjWrRqOFSutvniZ/BzmAJolh63kcvL0Hg3IpMePm8 - 7PivZJ3/WIAwxU1m7SJkq5PY8ho7mwnHvWWI/hU26l42/z68QBS9FawQd0uS5G2x - 5yIbEU/8ABcfYYhB7XiA0EYEMo1HiWeB/ag5iTN13ILbBmUf4sL+KVgygH3A1RRk - XSiWzluij2lZn22ClgIjnoSfQ38uH0bvVzUgyG9YX4XcQxOTGwWvPjT82FGB8NAw - ARVqs14QQFfzt1qrp/I38rsAfBDFk+xhAoIBAQCEKNk/oJcy9t/jMIbLcn6z3aCc - Fn8GBPSXtFj0t6weN5lHof+cggw4owMFWQQyAXxo/K6NnKNydMPZ5qjtLsHNpbpQ - aT1Or0/1YR1bJ8Lo82B4QM++7F761GWQPvE/tyrfPkfkWl92ITIpmnlw4wycRlkq - 9anI2fnj1nIZwixzE2peb6PcsZU2HOs9uZ5RRd9wia696I7IpNibs4O4J2WTm4va - +NeYif3V2g9qwgT0Va0c9/Jlg3b58R0vA8j/VCU5I0TyXpkB3Xapx+pvEdZ3viUL - mXZaVotmWjgBXGDtd2VQg2ZiAMXHn3RzXSgV4Z+A/XacRs75h9bNw0ZJYrz1 - -----END RSA PRIVATE KEY----- - ''; - "acme-v02.api.letsencrypt.org".cert = builtins.toFile "acme-v02.api.letsencrypt.org.cert" '' - -----BEGIN CERTIFICATE----- - MIIEtDCCApwCAgKaMA0GCSqGSIb3DQEBCwUAMBYxFDASBgNVBAMMC1NuYWtlb2ls - IENBMCAXDTE5MTAxODA3NTQxM1oYDzIxMTkwOTI0MDc1NDEzWjAnMSUwIwYDVQQD - DBxhY21lLXYwMi5hcGkubGV0c2VuY3J5cHQub3JnMIICIjANBgkqhkiG9w0BAQEF - AAOCAg8AMIICCgKCAgEApny0WhfDwEXe6WDTCw8qBuMAPDr88pj6kbhQWfzAW2c0 - TggJEtjs9dktENeTpSl14nnLVMiSYIJPYY3KbOIFQH1qDaOuQ7NaOhj9CdMTm5r9 - bl+CYAyqLIMQ9AAZDhUcQjOy3moiL7ClFHlkFYuEzZBO9DF7hJpfUFIs0Idg50mN - oZh/K/fb4P2skNjfCjjomTRUmZHxT6G00ImSTtSaYbN/WHut1xXwJvOoT1nlEA/P - ghKmJJ9ZuRMSddUJmjL+sT09L8LVkK8CKeHi4r58DHM0D0u8owIFV9qsXd5UvZHa - NgvQ4OAWGukMX+TxRuqkUZkaj84vnNL+ttEMl4jedw0ImzNtCOYehDyTPRkfng5P - LWMSvWbwyP8jDd2578mSbx5BF7ypYX366+vknjIFyZ5WezcC1pscIHxLoEwuhuf+ - knN+kFkLOHeYbqQrU6mxSnu9q0hnNvGUkTP0a/1aLOGRfQ5C/pxpE/Rebi8qfM/O - JFd4mSxGL93JUTXWAItiIeBnQpIne65/Ska9dWynOEfIb0okdet3kfmNHz3zc17d - Z5g4AdOSCgHAlQgFt/Qd8W6xXUe4C5Mfv2ctxRrfQhDwtB6rMByPwzImnciC2h3v - CwD3vS/vjUyWICyhZyi2LZDUQz+sCKBXCYYcYh8ThFO40j5x1OnYMq7XQvyl8QkC - AwEAATANBgkqhkiG9w0BAQsFAAOCAgEAkx0GLPuCvKSLTHxVLh5tP4jxSGG/zN37 - PeZLu3QJTdRdRc8bgeOGXAVEVFbqOLTNTsuY1mvpiv2V6wxR6nns+PIHeLY/UOdc - mOreKPtMU2dWPp3ybec2Jwii6PhAXZJ26AKintmug1psMw7662crR3SCnn85/CvW - 192vhr5gM1PqLBIlbsX0tAqxAwBe1YkxBb9vCq8NVghJlKme49xnwGULMTGs15MW - hIPx6sW93zwrGiTsDImH49ILGF+NcX1AgAq90nG0j/l5zhDgXGJglX+K1xP99X1R - de3I4uoufPa5q+Pjmhy7muL+o4Qt0D0Vm86RqqjTkNPsr7gAJtt66A7TJrYiIoKn - GTIBsgM6egeFLLYQsT0ap/59HJismO2Pjx4Jk/jHOkC8TJsXQNRq1Km76VMBnuc0 - 2CMoD9pb38GjUUH94D4hJK4Ls/gJMF3ftKUyR8Sr/LjE6qU6Yj+ZpeEQP4kW9ANq - Lv9KSNDQQpRTL4LwGLTGomksLTQEekge7/q4J2TQRZNYJ/mxnrBKRcv9EAMgBMXq - Q+7GHtKDv9tJVlMfG/MRD3CMuuSRiT3OVbvMMkFzsPkqxYAP1CqE/JGvh67TzKI+ - MUfXKehA6TKuxrTVqCtoFIfGaqA9IWyoRTtugYq/xssB9ESeEYGeaM1A9Yueqz+h - KkBZO00jHSE= - -----END CERTIFICATE----- - ''; - "letsencrypt.org".key = builtins.toFile "letsencrypt.org.key" '' - -----BEGIN RSA PRIVATE KEY----- - MIIJKgIBAAKCAgEA9dpdPEyzD3/BBds7tA/51s+WmLFyWuFrq4yMd2R+vi5gvK7n - lLNVKhYgiTmK2Um+UEpGucJqZHcTSZA1Bz4S/8ND/AI9I6EmwvBinY5/PubxEALk - 9YiDA+IzH8ZGFM8wXg7fMbbJAsyv+SHAtr2jmCsggrpuD5fgzs2p+F2q0+oVoeFw - MAOUdAf2jNtNLEj2Q6MiR5Xq+wFOcRtXlNlXWIX3NrmubO/xOpDNpsyjyYC5Ld+W - 06MS5bTHSdv56AkUg2PugMChj15TOddEJIK8zPXFTlMYye9SKwjhNUZovfe4xXCa - Tj2nmzrcuMKLz+S3sKQeTWjiRcY3w4zTlAbhtGXDjXjhMObrHoWM8e3cTL4NJMvt - tNStXficxbeTbIiYu+7dtF0q+iWaZqexc6PdAaIpFZ0XSw+i5iLdQZmBwzY7NLlH - pQupfh6ze0qDUVZAMDubo4JKUTBzH6QTuhHx+uUm7Lc8YdNArn7o/vMZDQym1Eia - xKxZuCGaqFvq8ZK4nBVsHfcXbhF/XD2HMid3t7ImbREVu9qnc+En+acU/SJaaL3r - jMW6HLVMr6+vQrCzYkvLzKYpoUm9D1Kcn6d8Ofxl2iCaY9CkMr5/6J1p1wcTdcN7 - IVQ/DFBeTDauyWbyZkO/lPoZoakWyXOx9S9tgClzhFmNgRkZv9wN+QguNDcCAwEA - AQKCAgEA0ndlacGfaJ1NeN39dmBW2XZMzdrassJXkjx34528gsLhPaXdyobbWXQn - 1lHUc7+VlNaBRXUR73+gm1FAlDqnuRxIjuy7ukyzCh8PzSG3/PlnVPWlXCzJPAHh - EkqCpD3agirpF34LBsKDwxsKB2bBLft9kWxX3DGA2olmAKDvJQs4CaUcjX4DEHHg - tyTmJAsyByUYq3/D8a1koZ9ukpadF8NXpxm+ILQoJqLf6vM1I8N2w7atP/BStSLV - mH0gq2tajEB4ZPCDXmC5jsKiKz9gsXWUu0CX8AdYqE6pvRnRgQ8Ytq1265QMb+8s - FV82oXqDZkyZRFuNmX3fLyDX39kkTcVS37S56Gzk4EzDWE/u2RXCAPeWla2zUFYI - hg8X4ZAwbZRODtK2cZTuCZEILM/iKmtSgHC+aQhp18EUAefa7WGrRD4AvbTxH4VF - ek60bwISBk5Mhf39MwqIiQxGOFmfLsQReZvzH4jI5zfDXf/0yZ/1SdGeu6+Walt0 - V81Ua/DB6zshHpeSP74HMuJHZ4DOQfcV/ndyzvoP84pAjenSx6O034OwQTkpoMI/ - f/2rK8kdzYSL4f//kFMuRLqmAwOmAFYB2oMo0/YaIoQ4vgTHDKTSxj5mbno56GdT - huMAVMKskaCSVbyMB/xyQG7senLItVv+HafVk6ChMUbkIjv9zgECggEBAP+ux1RG - cETGjK2U3CRoHGxR7FwaX6hkSokG+aFdVLer+WUrZmR8Ccvh2ALpm8K1G6TTk/5X - ZeVX4+1VFYDeTHMN8g20usS5mw3v2GF3fGxGLe4q56l4/4kKMZOrSBuWH4niiIKD - 0QogdzWkpQJ93nMbZxZ5lk+lRZVf3qSm6nzyP468ndrfI57Ov5OUIWZ7KhTUH9IK - 8/urUk+lEvyzQmNTlt5ZZXRz7cR01K8chx1zevVAyynzSuGjTysaBN7LTT0v3yVu - 96yKNsxJvuIz2+4qSjhbnN4jH+feN0VsdF3+Qkru0lBmLVgJl4X67XFaAKMDU9yv - 3alS53Pkol+Dy1cCggEBAPYodofHC1ydoOmCvUAq4oJNtyI4iIOY/ch3sxVhkNyi - KBscQqbay/DiXFiNl+NsemzB1PrHzvCaqKcBKw537XzeKqUgYuVLkFGubf9bDhXi - wSRcYbU/oNTgiTgXPW8wH60uIoLaiNi1/YjO2zh4GEY/kFqSuD54Y91iFmcC75bv - OjCNugnRdpRjOFhaeNx75tdverR37w3APVZuBSv3bJlMPCtaf+fEAKxJxeqCs3Oq - rtsw2TQ4TqfE8/w9qPCVv3bQbMbO48SwjxAz47qH2h3qGu3Ov8badeARe+Ou7nuI - U13gPuPOhPXIQP/MYOyamPJdFyng1b8vyNsfjOcWMiECggEAEkMgl6NkV3U7DRbp - 1mvdQ9tiH33+wR9Qt5LY966b43aUHKbJ7Hlzla1u6V5YMsMO02oNUwhZDdWGQShn - ncnC+iDP3iy/flenfIpaETQgnfcxRqan31H2Joqk2eBNCTNi001r5K6XmrqQ6TL2 - WkQ1RFF7vn42vz+VxcKQO4B0lTIUWhSczcpMWAZ6ZocZD6HScqRoFW+U16/39Bpd - TdFb944742vNNFEndXXGzy8hc3gRGz1ihX+MJKuuduyn1mX9AVbPAHR5mkhQ+6x0 - xuFfXxaEMJxSiwdFOyGDHyFM+n2zrHh8ayOxL22X9gjjNspv6zTMo6GoGnUCdSOq - eVoHhwKCAQEAot5O3rOB/vuEljwcv7IgQJrvCsNg/8FgWR1p7kGpuXHJG3btWrz1 - pyH+e9DjqGQD9KWjJ3LAp02NPUJ2nJIZHj9Y8/yjspb2nDTPLt+uSCjKJibBt0ys - O219HRGzYjfzHYCi8PVrCggQAk7rmUdMuF4iQutE4ICDgtz9eZbls3YBiFKdvxVK - Yg/sHflucmPAbtah13prPyvs6ZzN6zNANYXNYdn1OwHieBwvyWRFG8jY/MorTHPd - BwA3drPNbbGHBzQMZNZKub8gSVYr3SU52gUlYCclmIq+50xqLlF2FWIz1q8irVPd - gUnIR/eQQbxgaivRwbGze1ZAjUsozVVQQQKCAQEA9uAKU3O06bEUGj+L0G+7R7r/ - bi2DNi2kLJ7jyq+n0OqcHEQ1zFK4LAPaXY0yMYXieUzhivMGLSNDiubGO2/KxkFF - REXUFgYWZYMwrKsUuscybB64cQDwzD0oXrhvEa2PHecdG6AZ63iLcHaaDzyCPID/ - wtljekLO2jbJ5esXZd016lykFfUd/K4KP1DGyI2Dkq6q0gTc/Y36gDAcPhIWtzna - UujYCe3a8DWCElH4geKXaB5ABbV1eJ8Lch599lXJ9Hszem6QNosFsPaHDCcqLS9H - yy2WA6CY2LVU7kONN+O0kxs2fVbxIkI+d/LZyX/yIGlkXcAzL07llIlrTAYebQ== - -----END RSA PRIVATE KEY----- - ''; - "letsencrypt.org".cert = builtins.toFile "letsencrypt.org.cert" '' - -----BEGIN CERTIFICATE----- - MIIEpzCCAo8CAgKaMA0GCSqGSIb3DQEBCwUAMBYxFDASBgNVBAMMC1NuYWtlb2ls - IENBMCAXDTE5MTAxODA3NTQxNVoYDzIxMTkwOTI0MDc1NDE1WjAaMRgwFgYDVQQD - DA9sZXRzZW5jcnlwdC5vcmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC - AQD12l08TLMPf8EF2zu0D/nWz5aYsXJa4WurjIx3ZH6+LmC8rueUs1UqFiCJOYrZ - Sb5QSka5wmpkdxNJkDUHPhL/w0P8Aj0joSbC8GKdjn8+5vEQAuT1iIMD4jMfxkYU - zzBeDt8xtskCzK/5IcC2vaOYKyCCum4Pl+DOzan4XarT6hWh4XAwA5R0B/aM200s - SPZDoyJHler7AU5xG1eU2VdYhfc2ua5s7/E6kM2mzKPJgLkt35bToxLltMdJ2/no - CRSDY+6AwKGPXlM510QkgrzM9cVOUxjJ71IrCOE1Rmi997jFcJpOPaebOty4wovP - 5LewpB5NaOJFxjfDjNOUBuG0ZcONeOEw5usehYzx7dxMvg0ky+201K1d+JzFt5Ns - iJi77t20XSr6JZpmp7Fzo90BoikVnRdLD6LmIt1BmYHDNjs0uUelC6l+HrN7SoNR - VkAwO5ujgkpRMHMfpBO6EfH65Sbstzxh00Cufuj+8xkNDKbUSJrErFm4IZqoW+rx - kricFWwd9xduEX9cPYcyJ3e3siZtERW72qdz4Sf5pxT9IlpoveuMxboctUyvr69C - sLNiS8vMpimhSb0PUpyfp3w5/GXaIJpj0KQyvn/onWnXBxN1w3shVD8MUF5MNq7J - ZvJmQ7+U+hmhqRbJc7H1L22AKXOEWY2BGRm/3A35CC40NwIDAQABMA0GCSqGSIb3 - DQEBCwUAA4ICAQBbJwE+qc0j6JGHWe0TGjv1viJU3WuyJkMRi+ejx0p/k7Ntp5An - 2wLC7b/lVP/Nh+PKY/iXWn/BErv2MUo4POc1g8svgxsmMMh5KGGieIfGs7xT+JMH - dzZZM+pUpIB5fEO5JfjiOEOKDdAvRSs0mTAVYZEokGkXSNWyylvEaA16mHtMgPjo - Lm75d0O66RfJDdd/hTl8umGpF7kEGW1qYk2QmuPr7AqOa8na7olL5fMPh6Q7yRqx - GIS9JKQ0fWl8Ngk09WfwUN/kEMcp9Jl5iunNRkbpUJIM/lHFkSA7yOFFL+dVWzd4 - 2r+ddJXTFzW8Rwt65l8SV2MEhijEamKva3mqKLIRWxDsfFVT1T04LWFtnzMW4Z29 - UHF9Pi7XSyKz0Y/Lz31mNTkjJYbOvbnwok8lc3wFWHc+lummZk8IkCq8xfqzwmwX - Ow6EV+Q6VaQpOHumQZ12pBBLtL8DyDhWaRUgVy2vYpwYsMYa5BFMcKCynjlSewo9 - G2hNoW45cQZP1qHltRR9Xad7SaP7iTETDCiR7AWOqSpDipSh9eMfVW97ZbSfz+vl - xl8PZEZMTRIIRVXsPP+E8gtDUhUQp2+Vcz8r6q71qslXM09xl/501uaNjCc3hH2R - iw2N77Lho1F3FrBbHdML3RYHZI55eC9iQw6R4S+R4b+iWLJoHzHrW61itg== - -----END CERTIFICATE----- - ''; -} diff --git a/nixos/tests/common/resolver.nix b/nixos/tests/common/resolver.nix index 6be8d1d18e6..09a74de20fa 100644 --- a/nixos/tests/common/resolver.nix +++ b/nixos/tests/common/resolver.nix @@ -18,7 +18,7 @@ defining this option needs to be explicitly imported. The reason this option exists is for the - nixos/tests/common/letsencrypt module, which + nixos/tests/common/acme/server module, which needs that option to disable the resolver once the user has set its own resolver. ''; diff --git a/nixos/tests/common/user-account.nix b/nixos/tests/common/user-account.nix index 9cd531a1f96..a57ee2d59ae 100644 --- a/nixos/tests/common/user-account.nix +++ b/nixos/tests/common/user-account.nix @@ -4,6 +4,7 @@ { isNormalUser = true; description = "Alice Foobar"; password = "foobar"; + uid = 1000; }; users.users.bob = diff --git a/nixos/tests/common/x11.nix b/nixos/tests/common/x11.nix index 5ad0ac20fac..0d76a0e972f 100644 --- a/nixos/tests/common/x11.nix +++ b/nixos/tests/common/x11.nix @@ -1,9 +1,14 @@ { lib, ... }: -{ services.xserver.enable = true; +{ + imports = [ + ./auto.nix + ]; + + services.xserver.enable = true; # Automatically log in. - services.xserver.displayManager.auto.enable = true; + test-support.displayManager.auto.enable = true; # Use IceWM as the window manager. # Don't use a desktop manager. diff --git a/nixos/tests/containers-imperative.nix b/nixos/tests/containers-imperative.nix index 61df74042cb..c4f2002918f 100644 --- a/nixos/tests/containers-imperative.nix +++ b/nixos/tests/containers-imperative.nix @@ -46,6 +46,15 @@ import ./make-test-python.nix ({ pkgs, ...} : { }; } ''; + brokenCfg = pkgs.writeText "broken.nix" '' + { + assertions = [ + { assertion = false; + message = "I never evaluate"; + } + ]; + } + ''; in '' with subtest("Make sure we have a NixOS tree (required by ‘nixos-container create’)"): machine.succeed("PAGER=cat nix-env -qa -A nixos.hello >&2") @@ -130,5 +139,11 @@ import ./make-test-python.nix ({ pkgs, ...} : { with subtest("Ensure that the container path is gone"): print(machine.succeed("ls -lsa /var/lib/containers")) machine.succeed(f"test ! -e /var/lib/containers/{id1}") + + with subtest("Ensure that a failed container creation doesn'leave any state"): + machine.fail( + "nixos-container create b0rk --config-file ${brokenCfg}" + ) + machine.succeed(f"test ! -e /var/lib/containers/b0rk") ''; }) diff --git a/nixos/tests/corerad.nix b/nixos/tests/corerad.nix new file mode 100644 index 00000000000..741fa448f68 --- /dev/null +++ b/nixos/tests/corerad.nix @@ -0,0 +1,70 @@ +import ./make-test-python.nix ( + { + nodes = { + router = {config, pkgs, ...}: { + config = { + # This machines simulates a router with IPv6 forwarding and a static IPv6 address. + boot.kernel.sysctl = { + "net.ipv6.conf.all.forwarding" = true; + }; + networking.interfaces.eth1 = { + ipv6.addresses = [ { address = "fd00:dead:beef:dead::1"; prefixLength = 64; } ]; + }; + services.corerad = { + enable = true; + # Serve router advertisements to the client machine with prefix information matching + # any IPv6 /64 prefixes configured on this interface. + configFile = pkgs.writeText "corerad.toml" '' + [[interfaces]] + name = "eth1" + advertise = true + [[interfaces.prefix]] + prefix = "::/64" + ''; + }; + }; + }; + client = {config, pkgs, ...}: { + # Use IPv6 SLAAC from router advertisements, and install rdisc6 so we can + # trigger one immediately. + config = { + boot.kernel.sysctl = { + "net.ipv6.conf.all.autoconf" = true; + }; + environment.systemPackages = with pkgs; [ + ndisc6 + ]; + }; + }; + }; + + testScript = '' + start_all() + + with subtest("Wait for CoreRAD and network ready"): + # Ensure networking is online and CoreRAD is ready. + router.wait_for_unit("network-online.target") + client.wait_for_unit("network-online.target") + router.wait_for_unit("corerad.service") + + # Ensure the client can reach the router. + client.wait_until_succeeds("ping -c 1 fd00:dead:beef:dead::1") + + with subtest("Verify SLAAC on client"): + # Trigger a router solicitation and verify a SLAAC address is assigned from + # the prefix configured on the router. + client.wait_until_succeeds("rdisc6 -1 -r 10 eth1") + client.wait_until_succeeds( + "ip -6 addr show dev eth1 | grep -q 'fd00:dead:beef:dead:'" + ) + + addrs = client.succeed("ip -6 addr show dev eth1") + + assert ( + "fd00:dead:beef:dead:" in addrs + ), "SLAAC prefix was not found in client addresses after router advertisement" + assert ( + "/64 scope global temporary" in addrs + ), "SLAAC temporary address was not configured on client after router advertisement" + ''; + }) diff --git a/nixos/tests/deluge.nix b/nixos/tests/deluge.nix index 37689c3d913..3cf179a3821 100644 --- a/nixos/tests/deluge.nix +++ b/nixos/tests/deluge.nix @@ -5,9 +5,10 @@ import ./make-test-python.nix ({ pkgs, ...} : { }; nodes = { - simple = { + simple1 = { services.deluge = { enable = true; + package = pkgs.deluge-1_x; web = { enable = true; openFirewall = true; @@ -15,50 +16,92 @@ import ./make-test-python.nix ({ pkgs, ...} : { }; }; - declarative = - { ... }: + declarative1 = { + services.deluge = { + enable = true; + package = pkgs.deluge-1_x; + openFirewall = true; + declarative = true; + config = { + allow_remote = true; + download_location = "/var/lib/deluge/my-download"; + daemon_port = 58846; + listen_ports = [ 6881 6889 ]; + }; + web = { + enable = true; + port = 3142; + }; + authFile = pkgs.writeText "deluge-auth" '' + localclient:a7bef72a890:10 + andrew:password:10 + user3:anotherpass:5 + ''; + }; + }; - { - services.deluge = { + simple2 = { + services.deluge = { + enable = true; + package = pkgs.deluge-2_x; + web = { enable = true; openFirewall = true; - declarative = true; - config = { - allow_remote = true; - download_location = "/var/lib/deluge/my-download"; - daemon_port = 58846; - listen_ports = [ 6881 6889 ]; - }; - web = { - enable = true; - port = 3142; - }; - authFile = pkgs.writeText "deluge-auth" '' - localclient:a7bef72a890:10 - andrew:password:10 - user3:anotherpass:5 - ''; }; - environment.systemPackages = [ pkgs.deluge ]; }; + }; + + declarative2 = { + services.deluge = { + enable = true; + package = pkgs.deluge-2_x; + openFirewall = true; + declarative = true; + config = { + allow_remote = true; + download_location = "/var/lib/deluge/my-download"; + daemon_port = 58846; + listen_ports = [ 6881 6889 ]; + }; + web = { + enable = true; + port = 3142; + }; + authFile = pkgs.writeText "deluge-auth" '' + localclient:a7bef72a890:10 + andrew:password:10 + user3:anotherpass:5 + ''; + }; + }; }; testScript = '' start_all() - simple.wait_for_unit("deluged") - simple.wait_for_unit("delugeweb") - simple.wait_for_open_port("8112") - declarative.wait_for_unit("network.target") - declarative.wait_until_succeeds("curl --fail http://simple:8112") + simple1.wait_for_unit("deluged") + simple2.wait_for_unit("deluged") + simple1.wait_for_unit("delugeweb") + simple2.wait_for_unit("delugeweb") + simple1.wait_for_open_port("8112") + simple2.wait_for_open_port("8112") + declarative1.wait_for_unit("network.target") + declarative2.wait_for_unit("network.target") + declarative1.wait_until_succeeds("curl --fail http://simple1:8112") + declarative2.wait_until_succeeds("curl --fail http://simple2:8112") - declarative.wait_for_unit("deluged") - declarative.wait_for_unit("delugeweb") - declarative.wait_until_succeeds("curl --fail http://declarative:3142") - declarative.succeed("deluge-console 'help' | grep -q 'rm - Remove a torrent'") - declarative.succeed( - "deluge-console 'connect 127.0.0.1:58846 andrew password; help' | grep -q 'rm - Remove a torrent'" + declarative1.wait_for_unit("deluged") + declarative2.wait_for_unit("deluged") + declarative1.wait_for_unit("delugeweb") + declarative2.wait_for_unit("delugeweb") + declarative1.wait_until_succeeds("curl --fail http://declarative1:3142") + declarative2.wait_until_succeeds("curl --fail http://declarative2:3142") + declarative1.succeed( + "deluge-console 'connect 127.0.0.1:58846 andrew password; help' | grep -q 'rm.*Remove a torrent'" + ) + declarative2.succeed( + "deluge-console 'connect 127.0.0.1:58846 andrew password; help' | grep -q 'rm.*Remove a torrent'" ) ''; }) diff --git a/nixos/tests/dnscrypt-proxy.nix b/nixos/tests/dnscrypt-proxy2.nix similarity index 50% rename from nixos/tests/dnscrypt-proxy.nix rename to nixos/tests/dnscrypt-proxy2.nix index 98153d5c904..b614d912a9f 100644 --- a/nixos/tests/dnscrypt-proxy.nix +++ b/nixos/tests/dnscrypt-proxy2.nix @@ -1,5 +1,5 @@ import ./make-test-python.nix ({ pkgs, ... }: { - name = "dnscrypt-proxy"; + name = "dnscrypt-proxy2"; meta = with pkgs.stdenv.lib.maintainers; { maintainers = [ joachifm ]; }; @@ -13,9 +13,16 @@ import ./make-test-python.nix ({ pkgs, ... }: { { security.apparmor.enable = true; - services.dnscrypt-proxy.enable = true; - services.dnscrypt-proxy.localPort = localProxyPort; - services.dnscrypt-proxy.extraArgs = [ "-X libdcplugin_example.so" ]; + services.dnscrypt-proxy2.enable = true; + services.dnscrypt-proxy2.settings = { + listen_addresses = [ "127.0.0.1:${toString localProxyPort}" ]; + sources.public-resolvers = { + urls = [ "https://download.dnscrypt.info/resolvers-list/v2/public-resolvers.md" ]; + cache_file = "public-resolvers.md"; + minisign_key = "RWQf6LRCGA9i53mlYecO4IzT51TGPpvWucNSCh1CBM0QTaLn73Y7GFO3"; + refresh_delay = 72; + }; + }; services.dnsmasq.enable = true; services.dnsmasq.servers = [ "127.0.0.1#${toString localProxyPort}" ]; @@ -24,12 +31,6 @@ import ./make-test-python.nix ({ pkgs, ... }: { testScript = '' client.wait_for_unit("dnsmasq") - - # The daemon is socket activated; sending a single ping should activate it. - client.fail("systemctl is-active dnscrypt-proxy") - client.execute( - "${pkgs.iputils}/bin/ping -c1 example.com" - ) - client.wait_until_succeeds("systemctl is-active dnscrypt-proxy") + client.wait_for_unit("dnscrypt-proxy2") ''; }) diff --git a/nixos/tests/docker-containers.nix b/nixos/tests/docker-containers.nix index 97255273520..0e318a52d9f 100644 --- a/nixos/tests/docker-containers.nix +++ b/nixos/tests/docker-containers.nix @@ -1,29 +1,27 @@ # Test Docker containers as systemd units -import ./make-test.nix ({ pkgs, lib, ... }: { +import ./make-test-python.nix ({ pkgs, lib, ... }: { name = "docker-containers"; meta = { - maintainers = with lib.maintainers; [ benley ]; + maintainers = with lib.maintainers; [ benley mkaito ]; }; nodes = { - docker = { pkgs, ... }: - { - virtualisation.docker.enable = true; + docker = { pkgs, ... }: { + virtualisation.docker.enable = true; - virtualisation.dockerPreloader.images = [ pkgs.dockerTools.examples.nginx ]; - - docker-containers.nginx = { - image = "nginx-container"; - ports = ["8181:80"]; - }; + docker-containers.nginx = { + image = "nginx-container"; + imageFile = pkgs.dockerTools.examples.nginx; + ports = ["8181:80"]; }; + }; }; testScript = '' - startAll; - $docker->waitForUnit("docker-nginx.service"); - $docker->waitForOpenPort(8181); - $docker->waitUntilSucceeds("curl http://localhost:8181|grep Hello"); + start_all() + docker.wait_for_unit("docker-nginx.service") + docker.wait_for_open_port(8181) + docker.wait_until_succeeds("curl http://localhost:8181 | grep Hello") ''; }) diff --git a/nixos/tests/docker-tools.nix b/nixos/tests/docker-tools.nix index 9ab1a71f331..51b472fcf9c 100644 --- a/nixos/tests/docker-tools.nix +++ b/nixos/tests/docker-tools.nix @@ -1,84 +1,158 @@ # this test creates a simple GNU image with docker tools and sees if it executes -import ./make-test.nix ({ pkgs, ... }: { +import ./make-test-python.nix ({ pkgs, ... }: { name = "docker-tools"; meta = with pkgs.stdenv.lib.maintainers; { maintainers = [ lnl7 ]; }; nodes = { - docker = - { ... }: { - virtualisation = { - diskSize = 2048; - docker.enable = true; - }; + docker = { ... }: { + virtualisation = { + diskSize = 2048; + docker.enable = true; }; + }; }; - testScript = - '' - $docker->waitForUnit("sockets.target"); + testScript = with pkgs.dockerTools; '' + unix_time_second1 = "1970-01-01T00:00:01Z" - # Ensure Docker images use a stable date by default - $docker->succeed("docker load --input='${pkgs.dockerTools.examples.bash}'"); - $docker->succeed("[ '1970-01-01T00:00:01Z' = \"\$(docker inspect ${pkgs.dockerTools.examples.bash.imageName} | ${pkgs.jq}/bin/jq -r .[].Created)\" ]"); + docker.wait_for_unit("sockets.target") - $docker->succeed("docker run --rm ${pkgs.dockerTools.examples.bash.imageName} bash --version"); - $docker->succeed("docker rmi ${pkgs.dockerTools.examples.bash.imageName}"); + with subtest("Ensure Docker images use a stable date by default"): + docker.succeed( + "docker load --input='${examples.bash}'" + ) + assert unix_time_second1 in docker.succeed( + "docker inspect ${examples.bash.imageName} " + + "| ${pkgs.jq}/bin/jq -r .[].Created", + ) - # Check if the nix store is correctly initialized by listing dependencies of the installed Nix binary - $docker->succeed("docker load --input='${pkgs.dockerTools.examples.nix}'"); - $docker->succeed("docker run --rm ${pkgs.dockerTools.examples.nix.imageName} nix-store -qR ${pkgs.nix}"); - $docker->succeed("docker rmi ${pkgs.dockerTools.examples.nix.imageName}"); + docker.succeed("docker run --rm ${examples.bash.imageName} bash --version") + docker.succeed("docker rmi ${examples.bash.imageName}") - # To test the pullImage tool - $docker->succeed("docker load --input='${pkgs.dockerTools.examples.nixFromDockerHub}'"); - $docker->succeed("docker run --rm nix:2.2.1 nix-store --version"); - $docker->succeed("docker rmi nix:2.2.1"); + with subtest( + "Check if the nix store is correctly initialized by listing " + "dependencies of the installed Nix binary" + ): + docker.succeed( + "docker load --input='${examples.nix}'", + "docker run --rm ${examples.nix.imageName} nix-store -qR ${pkgs.nix}", + "docker rmi ${examples.nix.imageName}", + ) - # To test runAsRoot and entry point - $docker->succeed("docker load --input='${pkgs.dockerTools.examples.nginx}'"); - $docker->succeed("docker run --name nginx -d -p 8000:80 ${pkgs.dockerTools.examples.nginx.imageName}"); - $docker->waitUntilSucceeds('curl http://localhost:8000/'); - $docker->succeed("docker rm --force nginx"); - $docker->succeed("docker rmi '${pkgs.dockerTools.examples.nginx.imageName}'"); + with subtest("The pullImage tool works"): + docker.succeed( + "docker load --input='${examples.nixFromDockerHub}'", + "docker run --rm nix:2.2.1 nix-store --version", + "docker rmi nix:2.2.1", + ) - # An pulled image can be used as base image - $docker->succeed("docker load --input='${pkgs.dockerTools.examples.onTopOfPulledImage}'"); - $docker->succeed("docker run --rm ontopofpulledimage hello"); - $docker->succeed("docker rmi ontopofpulledimage"); + with subtest("runAsRoot and entry point work"): + docker.succeed( + "docker load --input='${examples.nginx}'", + "docker run --name nginx -d -p 8000:80 ${examples.nginx.imageName}", + ) + docker.wait_until_succeeds("curl http://localhost:8000/") + docker.succeed( + "docker rm --force nginx", "docker rmi '${examples.nginx.imageName}'", + ) - # Regression test for issue #34779 - $docker->succeed("docker load --input='${pkgs.dockerTools.examples.runAsRootExtraCommands}'"); - $docker->succeed("docker run --rm runasrootextracommands cat extraCommands"); - $docker->succeed("docker run --rm runasrootextracommands cat runAsRoot"); - $docker->succeed("docker rmi '${pkgs.dockerTools.examples.runAsRootExtraCommands.imageName}'"); + with subtest("A pulled image can be used as base image"): + docker.succeed( + "docker load --input='${examples.onTopOfPulledImage}'", + "docker run --rm ontopofpulledimage hello", + "docker rmi ontopofpulledimage", + ) - # Ensure Docker images can use an unstable date - $docker->succeed("docker load --input='${pkgs.dockerTools.examples.bash}'"); - $docker->succeed("[ '1970-01-01T00:00:01Z' != \"\$(docker inspect ${pkgs.dockerTools.examples.unstableDate.imageName} | ${pkgs.jq}/bin/jq -r .[].Created)\" ]"); + with subtest("Regression test for issue #34779"): + docker.succeed( + "docker load --input='${examples.runAsRootExtraCommands}'", + "docker run --rm runasrootextracommands cat extraCommands", + "docker run --rm runasrootextracommands cat runAsRoot", + "docker rmi '${examples.runAsRootExtraCommands.imageName}'", + ) - # Ensure Layered Docker images work - $docker->succeed("docker load --input='${pkgs.dockerTools.examples.layered-image}'"); - $docker->succeed("docker run --rm ${pkgs.dockerTools.examples.layered-image.imageName}"); - $docker->succeed("docker run --rm ${pkgs.dockerTools.examples.layered-image.imageName} cat extraCommands"); + with subtest("Ensure Docker images can use an unstable date"): + docker.succeed( + "docker load --input='${examples.bash}'" + ) + assert unix_time_second1 not in docker.succeed( + "docker inspect ${examples.unstableDate.imageName} " + + "| ${pkgs.jq}/bin/jq -r .[].Created" + ) - # Ensure building an image on top of a layered Docker images work - $docker->succeed("docker load --input='${pkgs.dockerTools.examples.layered-on-top}'"); - $docker->succeed("docker run --rm ${pkgs.dockerTools.examples.layered-on-top.imageName}"); + with subtest("Ensure Layered Docker images work"): + docker.succeed( + "docker load --input='${examples.layered-image}'", + "docker run --rm ${examples.layered-image.imageName}", + "docker run --rm ${examples.layered-image.imageName} cat extraCommands", + ) - # Ensure layers are shared between images - $docker->succeed("docker load --input='${pkgs.dockerTools.examples.another-layered-image}'"); - $docker->succeed("docker inspect ${pkgs.dockerTools.examples.layered-image.imageName} | ${pkgs.jq}/bin/jq -r '.[] | .RootFS.Layers | .[]' | sort > layers1.sha256"); - $docker->succeed("docker inspect ${pkgs.dockerTools.examples.another-layered-image.imageName} | ${pkgs.jq}/bin/jq -r '.[] | .RootFS.Layers | .[]' | sort > layers2.sha256"); - $docker->succeed('[ $(comm -1 -2 layers1.sha256 layers2.sha256 | wc -l) -ne 0 ]'); + with subtest("Ensure building an image on top of a layered Docker images work"): + docker.succeed( + "docker load --input='${examples.layered-on-top}'", + "docker run --rm ${examples.layered-on-top.imageName}", + ) - # Ensure order of layers is correct - $docker->succeed("docker load --input='${pkgs.dockerTools.examples.layersOrder}'"); - $docker->succeed("docker run --rm ${pkgs.dockerTools.examples.layersOrder.imageName} cat /tmp/layer1 | grep -q layer1"); - # This is to be sure the order of layers of the parent image is preserved - $docker->succeed("docker run --rm ${pkgs.dockerTools.examples.layersOrder.imageName} cat /tmp/layer2 | grep -q layer2"); - $docker->succeed("docker run --rm ${pkgs.dockerTools.examples.layersOrder.imageName} cat /tmp/layer3 | grep -q layer3"); - ''; + + def set_of_layers(image_name): + return set( + docker.succeed( + f"docker inspect {image_name} " + + "| ${pkgs.jq}/bin/jq -r '.[] | .RootFS.Layers | .[]'" + ).split() + ) + + + with subtest("Ensure layers are shared between images"): + docker.succeed( + "docker load --input='${examples.another-layered-image}'" + ) + layers1 = set_of_layers("${examples.layered-image.imageName}") + layers2 = set_of_layers("${examples.another-layered-image.imageName}") + assert bool(layers1 & layers2) + + with subtest("Ensure order of layers is correct"): + docker.succeed( + "docker load --input='${examples.layersOrder}'" + ) + + for index in 1, 2, 3: + assert f"layer{index}" in docker.succeed( + f"docker run --rm ${examples.layersOrder.imageName} cat /tmp/layer{index}" + ) + + with subtest("Ensure image with only 2 layers can be loaded"): + docker.succeed( + "docker load --input='${examples.two-layered-image}'" + ) + + with subtest( + "Ensure the bulk layer doesn't miss store paths (regression test for #78744)" + ): + docker.succeed( + "docker load --input='${pkgs.dockerTools.examples.bulk-layer}'", + # Ensure the two output paths (ls and hello) are in the layer + "docker run bulk-layer ls /bin/hello", + ) + + with subtest("Ensure correct behavior when no store is needed"): + # This check tests two requirements simultaneously + # 1. buildLayeredImage can build images that don't need a store. + # 2. Layers of symlinks are eliminated by the customization layer. + # + docker.succeed( + "docker load --input='${pkgs.dockerTools.examples.no-store-paths}'" + ) + + # Busybox will not recognize argv[0] and print an error message with argv[0], + # but it confirms that the custom-true symlink is present. + docker.succeed("docker run --rm no-store-paths custom-true |& grep custom-true") + + # This check may be loosened to allow an *empty* store rather than *no* store. + docker.succeed("docker run --rm no-store-paths ls /") + docker.fail("docker run --rm no-store-paths ls /nix/store") + ''; }) diff --git a/nixos/tests/dokuwiki.nix b/nixos/tests/dokuwiki.nix new file mode 100644 index 00000000000..38bde10f47e --- /dev/null +++ b/nixos/tests/dokuwiki.nix @@ -0,0 +1,29 @@ +import ./make-test-python.nix ({ lib, ... }: + +with lib; + +{ + name = "dokuwiki"; + meta.maintainers = with maintainers; [ maintainers."1000101" ]; + + nodes.machine = + { pkgs, ... }: + { services.dokuwiki = { + enable = true; + acl = " "; + superUser = null; + nginx = { + forceSSL = false; + enableACME = false; + }; + }; + }; + + testScript = '' + machine.start() + machine.wait_for_unit("phpfpm-dokuwiki.service") + machine.wait_for_unit("nginx.service") + machine.wait_for_open_port(80) + machine.succeed("curl -sSfL http://localhost/ | grep 'DokuWiki'") + ''; +}) diff --git a/nixos/tests/dovecot.nix b/nixos/tests/dovecot.nix index c19850f418b..bcbe234fd80 100644 --- a/nixos/tests/dovecot.nix +++ b/nixos/tests/dovecot.nix @@ -8,7 +8,7 @@ import ./make-test-python.nix { services.dovecot2.protocols = [ "imap" "pop3" ]; environment.systemPackages = let sendTestMail = pkgs.writeScriptBin "send-testmail" '' - #!${pkgs.stdenv.shell} + #!${pkgs.runtimeShell} exec sendmail -vt <start; + + # amazon-init must succeed. if it fails, make the test fail + # immediately instead of timing out in waitForFile. + $machine->waitForUnit('amazon-init.service'); + $machine->waitForFile("/etc/testFile"); $machine->succeed("cat /etc/testFile | grep -q 'whoa'"); diff --git a/nixos/tests/elk.nix b/nixos/tests/elk.nix index b33d98b85d6..d3dc6dde135 100644 --- a/nixos/tests/elk.nix +++ b/nixos/tests/elk.nix @@ -6,20 +6,11 @@ # NIXPKGS_ALLOW_UNFREE=1 nix-build nixos/tests/elk.nix -A ELK-6 --arg enableUnfree true }: -with import ../lib/testing.nix { inherit system pkgs; }; -with pkgs.lib; - let esUrl = "http://localhost:9200"; - totalHits = message : - "curl --silent --show-error '${esUrl}/_search' -H 'Content-Type: application/json' " + - ''-d '{\"query\" : { \"match\" : { \"message\" : \"${message}\"}}}' '' + - "| jq .hits.total"; - mkElkTest = name : elk : - let elasticsearchGe7 = builtins.compareVersions elk.elasticsearch.version "7" >= 0; - in makeTest { + import ./make-test-python.nix ({ inherit name; meta = with pkgs.stdenv.lib.maintainers; { maintainers = [ eelco offline basvandijk ]; @@ -50,15 +41,15 @@ let elk.journalbeat.version "6" < 0; in { enable = true; package = elk.journalbeat; - extraConfig = mkOptionDefault ('' + extraConfig = pkgs.lib.mkOptionDefault ('' logging: to_syslog: true level: warning metrics.enabled: false output.elasticsearch: hosts: [ "127.0.0.1:9200" ] - ${optionalString lt6 "template.enabled: false"} - '' + optionalString (!lt6) '' + ${pkgs.lib.optionalString lt6 "template.enabled: false"} + '' + pkgs.lib.optionalString (!lt6) '' journalbeat.inputs: - paths: [] seek: cursor @@ -99,8 +90,7 @@ let }; elasticsearch-curator = { - # The current version of curator (5.6) doesn't support elasticsearch >= 7.0.0. - enable = !elasticsearchGe7; + enable = true; actionYAML = '' --- actions: @@ -130,11 +120,23 @@ let }; testScript = '' - startAll; + import json - # Wait until elasticsearch is listening for connections. - $one->waitForUnit("elasticsearch.service"); - $one->waitForOpenPort(9200); + + def total_hits(message): + dictionary = {"query": {"match": {"message": message}}} + return ( + "curl --silent --show-error '${esUrl}/_search' " + + "-H 'Content-Type: application/json' " + + "-d '{}' ".format(json.dumps(dictionary)) + + "| jq .hits.total" + ) + + + start_all() + + one.wait_for_unit("elasticsearch.service") + one.wait_for_open_port(9200) # Continue as long as the status is not "red". The status is probably # "yellow" instead of "green" because we are using a single elasticsearch @@ -142,42 +144,43 @@ let # # TODO: extend this test with multiple elasticsearch nodes # and see if the status turns "green". - $one->waitUntilSucceeds( - "curl --silent --show-error '${esUrl}/_cluster/health' " . - "| jq .status | grep -v red"); + one.wait_until_succeeds( + "curl --silent --show-error '${esUrl}/_cluster/health' | jq .status | grep -v red" + ) - # Perform some simple logstash tests. - $one->waitForUnit("logstash.service"); - $one->waitUntilSucceeds("cat /tmp/logstash.out | grep flowers"); - $one->waitUntilSucceeds("cat /tmp/logstash.out | grep -v dragons"); + with subtest("Perform some simple logstash tests"): + one.wait_for_unit("logstash.service") + one.wait_until_succeeds("cat /tmp/logstash.out | grep flowers") + one.wait_until_succeeds("cat /tmp/logstash.out | grep -v dragons") - # See if kibana is healthy. - $one->waitForUnit("kibana.service"); - $one->waitUntilSucceeds( - "curl --silent --show-error 'http://localhost:5601/api/status' " . - "| jq .status.overall.state | grep green"); + with subtest("Kibana is healthy"): + one.wait_for_unit("kibana.service") + one.wait_until_succeeds( + "curl --silent --show-error 'http://localhost:5601/api/status' | jq .status.overall.state | grep green" + ) - # See if logstash messages arive in elasticsearch. - $one->waitUntilSucceeds("${totalHits "flowers"} | grep -v 0"); - $one->waitUntilSucceeds("${totalHits "dragons"} | grep 0"); + with subtest("Logstash messages arive in elasticsearch"): + one.wait_until_succeeds(total_hits("flowers") + " | grep -v 0") + one.wait_until_succeeds(total_hits("dragons") + " | grep 0") - # Test if a message logged to the journal - # is ingested by elasticsearch via journalbeat. - $one->waitForUnit("journalbeat.service"); - $one->execute("echo 'Supercalifragilisticexpialidocious' | systemd-cat"); - $one->waitUntilSucceeds( - "${totalHits "Supercalifragilisticexpialidocious"} | grep -v 0"); + with subtest( + "A message logged to the journal is ingested by elasticsearch via journalbeat" + ): + one.wait_for_unit("journalbeat.service") + one.execute("echo 'Supercalifragilisticexpialidocious' | systemd-cat") + one.wait_until_succeeds( + total_hits("Supercalifragilisticexpialidocious") + " | grep -v 0" + ) - '' + optionalString (!elasticsearchGe7) '' - # Test elasticsearch-curator. - $one->systemctl("stop logstash"); - $one->systemctl("start elasticsearch-curator"); - $one->waitUntilSucceeds( - "! curl --silent --show-error '${esUrl}/_cat/indices' " . - "| grep logstash | grep -q ^$1"); + with subtest("Elasticsearch-curator works"): + one.systemctl("stop logstash") + one.systemctl("start elasticsearch-curator") + one.wait_until_succeeds( + '! curl --silent --show-error "${esUrl}/_cat/indices" | grep logstash | grep -q ^' + ) ''; - }; -in mapAttrs mkElkTest { + }) {}; +in pkgs.lib.mapAttrs mkElkTest { ELK-6 = if enableUnfree then { diff --git a/nixos/tests/fenics.nix b/nixos/tests/fenics.nix new file mode 100644 index 00000000000..7252d19e4e6 --- /dev/null +++ b/nixos/tests/fenics.nix @@ -0,0 +1,50 @@ +import ./make-test-python.nix ({ pkgs, ... }: + +let + fenicsScript = pkgs.writeScript "poisson.py" '' + #!/usr/bin/env python + from dolfin import * + + mesh = UnitSquareMesh(4, 4) + V = FunctionSpace(mesh, "Lagrange", 1) + + def boundary(x): + return x[0] < DOLFIN_EPS or x[0] > 1.0 - DOLFIN_EPS + + u0 = Constant(0.0) + bc = DirichletBC(V, u0, boundary) + + u = TrialFunction(V) + v = TestFunction(V) + f = Expression("10*exp(-(pow(x[0] - 0.5, 2) + pow(x[1] - 0.5, 2)) / 0.02)", degree=2) + g = Expression("sin(5*x[0])", degree=2) + a = inner(grad(u), grad(v))*dx + L = f*v*dx + g*v*ds + + u = Function(V) + solve(a == L, u, bc) + print(u) + ''; +in +{ + name = "fenics"; + meta = { + maintainers = with pkgs.stdenv.lib.maintainers; [ knedlsepp ]; + }; + + nodes = { + fenicsnode = { pkgs, ... }: { + environment.systemPackages = with pkgs; [ + gcc + (python3.withPackages (ps: with ps; [ fenics ])) + ]; + virtualisation.memorySize = 512; + }; + }; + testScript = + { nodes, ... }: + '' + start_all() + node1.succeed("${fenicsScript}") + ''; +}) diff --git a/nixos/tests/firefox.nix b/nixos/tests/firefox.nix index 56ddabbae77..7071baceba7 100644 --- a/nixos/tests/firefox.nix +++ b/nixos/tests/firefox.nix @@ -1,4 +1,4 @@ -import ./make-test-python.nix ({ pkgs, ... }: { +import ./make-test-python.nix ({ pkgs, esr ? false, ... }: { name = "firefox"; meta = with pkgs.stdenv.lib.maintainers; { maintainers = [ eelco shlevy ]; @@ -8,7 +8,9 @@ import ./make-test-python.nix ({ pkgs, ... }: { { pkgs, ... }: { imports = [ ./common/x11.nix ]; - environment.systemPackages = [ pkgs.firefox pkgs.xdotool ]; + environment.systemPackages = + (if esr then [ pkgs.firefox-esr ] else [ pkgs.firefox ]) + ++ [ pkgs.xdotool ]; }; testScript = '' diff --git a/nixos/tests/flannel.nix b/nixos/tests/flannel.nix index 9991c5eaa32..7615732c20c 100644 --- a/nixos/tests/flannel.nix +++ b/nixos/tests/flannel.nix @@ -1,20 +1,24 @@ -import ./make-test.nix ({ pkgs, ...} : { +import ./make-test-python.nix ({ lib, ...} : { name = "flannel"; - meta = with pkgs.stdenv.lib.maintainers; { + meta = with lib.maintainers; { maintainers = [ offline ]; }; nodes = let - flannelConfig = { + flannelConfig = { pkgs, ... } : { services.flannel = { enable = true; + backend = { + Type = "udp"; + Port = 8285; + }; network = "10.1.0.0/16"; iface = "eth1"; etcd.endpoints = ["http://etcd:2379"]; }; - networking.firewall.allowedUDPPorts = [ 8472 ]; + networking.firewall.allowedUDPPorts = [ 8285 ]; }; in { etcd = { ... }: { @@ -32,25 +36,22 @@ import ./make-test.nix ({ pkgs, ...} : { networking.firewall.allowedTCPPorts = [ 2379 ]; }; - node1 = { ... }: { - require = [flannelConfig]; - }; - - node2 = { ... }: { - require = [flannelConfig]; - }; + node1 = flannelConfig; + node2 = flannelConfig; }; testScript = '' - startAll; + start_all() - $node1->waitForUnit("flannel.service"); - $node2->waitForUnit("flannel.service"); + node1.wait_for_unit("flannel.service") + node2.wait_for_unit("flannel.service") - my $ip1 = $node1->succeed("ip -4 addr show flannel.1 | grep -oP '(?<=inet).*(?=/)'"); - my $ip2 = $node2->succeed("ip -4 addr show flannel.1 | grep -oP '(?<=inet).*(?=/)'"); + node1.wait_until_succeeds("ip l show dev flannel0") + ip1 = node1.succeed("ip -4 addr show flannel0 | grep -oP '(?<=inet).*(?=/)'") + node2.wait_until_succeeds("ip l show dev flannel0") + ip2 = node2.succeed("ip -4 addr show flannel0 | grep -oP '(?<=inet).*(?=/)'") - $node1->waitUntilSucceeds("ping -c 1 $ip2"); - $node2->waitUntilSucceeds("ping -c 1 $ip1"); + node1.wait_until_succeeds(f"ping -c 1 {ip2}") + node2.wait_until_succeeds(f"ping -c 1 {ip1}") ''; }) diff --git a/nixos/tests/freeswitch.nix b/nixos/tests/freeswitch.nix new file mode 100644 index 00000000000..349d0e7bc6f --- /dev/null +++ b/nixos/tests/freeswitch.nix @@ -0,0 +1,29 @@ +import ./make-test-python.nix ({ pkgs, ...} : { + name = "freeswitch"; + meta = with pkgs.stdenv.lib.maintainers; { + maintainers = [ misuzu ]; + }; + nodes = { + node0 = { config, lib, ... }: { + networking.useDHCP = false; + networking.interfaces.eth1 = { + ipv4.addresses = [ + { + address = "192.168.0.1"; + prefixLength = 24; + } + ]; + }; + services.freeswitch = { + enable = true; + enableReload = true; + configTemplate = "${config.services.freeswitch.package}/share/freeswitch/conf/minimal"; + }; + }; + }; + testScript = '' + node0.wait_for_unit("freeswitch.service") + # Wait for SIP port to be open + node0.wait_for_open_port("5060") + ''; +}) diff --git a/nixos/tests/gerrit.nix b/nixos/tests/gerrit.nix new file mode 100644 index 00000000000..6cee64a2009 --- /dev/null +++ b/nixos/tests/gerrit.nix @@ -0,0 +1,55 @@ +import ./make-test-python.nix ({ pkgs, ... }: + +let + lfs = pkgs.fetchurl { + url = "https://gerrit-ci.gerritforge.com/job/plugin-lfs-bazel-master/90/artifact/bazel-bin/plugins/lfs/lfs.jar"; + sha256 = "023b0kd8djm3cn1lf1xl67yv3j12yl8bxccn42lkfmwxjwjfqw6h"; + }; + +in { + name = "gerrit"; + + meta = with pkgs.stdenv.lib.maintainers; { + maintainers = [ flokli zimbatm ]; + }; + + nodes = { + server = + { config, pkgs, ... }: { + networking.firewall.allowedTCPPorts = [ 80 2222 ]; + + virtualisation.memorySize = 1024; + + services.gerrit = { + enable = true; + serverId = "aa76c84b-50b0-4711-a0a0-1ee30e45bbd0"; + listenAddress = "[::]:80"; + jvmHeapLimit = "1g"; + + plugins = [ lfs ]; + builtinPlugins = [ "hooks" "webhooks" ]; + settings = { + gerrit.canonicalWebUrl = "http://server"; + lfs.plugin = "lfs"; + plugins.allowRemoteAdmin = true; + sshd.listenAddress = "[::]:2222"; + sshd.advertisedAddress = "[::]:2222"; + }; + }; + }; + + client = + { ... }: { + }; + }; + + testScript = '' + start_all() + server.wait_for_unit("gerrit.service") + server.wait_for_open_port(80) + client.succeed("curl http://server") + + server.wait_for_open_port(2222) + client.succeed("nc -z server 2222") + ''; +}) diff --git a/nixos/tests/gitdaemon.nix b/nixos/tests/gitdaemon.nix new file mode 100644 index 00000000000..b610caf06fb --- /dev/null +++ b/nixos/tests/gitdaemon.nix @@ -0,0 +1,64 @@ +import ./make-test-python.nix ({ pkgs, ... }: + +let + hashes = pkgs.writeText "hashes" '' + b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c /project/bar + ''; +in { + name = "gitdaemon"; + + meta = with pkgs.stdenv.lib.maintainers; { + maintainers = [ tilpner ]; + }; + + nodes = { + server = + { config, ... }: { + networking.firewall.allowedTCPPorts = [ config.services.gitDaemon.port ]; + + environment.systemPackages = [ pkgs.git ]; + + services.gitDaemon = { + enable = true; + basePath = "/git"; + }; + }; + + client = + { pkgs, ... }: { + environment.systemPackages = [ pkgs.git ]; + }; + }; + + testScript = '' + start_all() + + with subtest("create project.git"): + server.succeed( + "mkdir /git", + "git init --bare /git/project.git", + "touch /git/project.git/git-daemon-export-ok", + ) + + with subtest("add file to project.git"): + server.succeed( + "git clone /git/project.git /project", + "echo foo > /project/bar", + "git config --global user.email 'you@example.com'", + "git config --global user.name 'Your Name'", + "git -C /project add bar", + "git -C /project commit -m 'quux'", + "git -C /project push", + "rm -r /project", + ) + + with subtest("git daemon starts"): + server.wait_for_unit("git-daemon.service") + + with subtest("client can clone project.git"): + client.succeed( + "git clone git://server/project.git /project", + "sha256sum -c ${hashes}", + ) + ''; +}) diff --git a/nixos/tests/glusterfs.nix b/nixos/tests/glusterfs.nix index 8f9cb8973d5..cb07bc09511 100644 --- a/nixos/tests/glusterfs.nix +++ b/nixos/tests/glusterfs.nix @@ -4,10 +4,11 @@ let client = { pkgs, ... } : { environment.systemPackages = [ pkgs.glusterfs ]; fileSystems = pkgs.lib.mkVMOverride - [ { mountPoint = "/gluster"; - fsType = "glusterfs"; - device = "server1:/gv0"; - } ]; + { "/gluster" = + { device = "server1:/gv0"; + fsType = "glusterfs"; + }; + }; }; server = { pkgs, ... } : { @@ -22,11 +23,11 @@ let virtualisation.emptyDiskImages = [ 1024 ]; fileSystems = pkgs.lib.mkVMOverride - [ { mountPoint = "/data"; - device = "/dev/disk/by-label/data"; - fsType = "ext4"; - } - ]; + { "/data" = + { device = "/dev/disk/by-label/data"; + fsType = "ext4"; + }; + }; }; in { name = "glusterfs"; diff --git a/nixos/tests/gnome3-xorg.nix b/nixos/tests/gnome3-xorg.nix index aa03501f6a5..b59badcd5de 100644 --- a/nixos/tests/gnome3-xorg.nix +++ b/nixos/tests/gnome3-xorg.nix @@ -1,41 +1,79 @@ -import ./make-test.nix ({ pkgs, ...} : { +import ./make-test-python.nix ({ pkgs, lib, ...} : { name = "gnome3-xorg"; - meta = with pkgs.stdenv.lib.maintainers; { - maintainers = pkgs.gnome3.maintainers; + meta = with lib; { + maintainers = teams.gnome.members; }; - machine = - { ... }: + machine = { nodes, ... }: let + user = nodes.machine.config.users.users.alice; + in { imports = [ ./common/user-account.nix ]; services.xserver.enable = true; - services.xserver.displayManager.gdm.enable = false; - services.xserver.displayManager.lightdm.enable = true; - services.xserver.displayManager.lightdm.autoLogin.enable = true; - services.xserver.displayManager.lightdm.autoLogin.user = "alice"; + services.xserver.displayManager.gdm = { + enable = true; + autoLogin = { + enable = true; + user = user.name; + }; + }; + services.xserver.desktopManager.gnome3.enable = true; services.xserver.displayManager.defaultSession = "gnome-xorg"; virtualisation.memorySize = 1024; }; - testScript = - '' - $machine->waitForX; + testScript = { nodes, ... }: let + user = nodes.machine.config.users.users.alice; + uid = toString user.uid; + bus = "DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/${uid}/bus"; + xauthority = "/run/user/${uid}/gdm/Xauthority"; + display = "DISPLAY=:0.0"; + env = "${bus} XAUTHORITY=${xauthority} ${display}"; + gdbus = "${env} gdbus"; + su = command: "su - ${user.name} -c '${env} ${command}'"; - # wait for alice to be logged in - $machine->waitForUnit("default.target","alice"); + # Call javascript in gnome shell, returns a tuple (success, output), where + # `success` is true if the dbus call was successful and output is what the + # javascript evaluates to. + eval = "call --session -d org.gnome.Shell -o /org/gnome/Shell -m org.gnome.Shell.Eval"; - # Check that logging in has given the user ownership of devices. - $machine->succeed("getfacl -p /dev/snd/timer | grep -q alice"); + # False when startup is done + startingUp = su "${gdbus} ${eval} Main.layoutManager._startingUp"; - $machine->succeed("su - alice -c 'DISPLAY=:0.0 gnome-terminal &'"); - $machine->succeed("xauth merge ~alice/.Xauthority"); - $machine->waitForWindow(qr/alice.*machine/); - $machine->succeed("timeout 900 bash -c 'while read msg; do if [[ \$msg =~ \"GNOME Shell started\" ]]; then break; fi; done < <(journalctl -f)'"); - $machine->sleep(10); - $machine->screenshot("screen"); + # Start gnome-terminal + gnomeTerminalCommand = su "gnome-terminal"; + + # Hopefully gnome-terminal's wm class + wmClass = su "${gdbus} ${eval} global.display.focus_window.wm_class"; + in '' + with subtest("Login to GNOME Xorg with GDM"): + machine.wait_for_x() + # Wait for alice to be logged in" + machine.wait_for_unit("default.target", "${user.name}") + machine.wait_for_file("${xauthority}") + machine.succeed("xauth merge ${xauthority}") + # Check that logging in has given the user ownership of devices + assert "alice" in machine.succeed("getfacl -p /dev/snd/timer") + + with subtest("Wait for GNOME Shell"): + # correct output should be (true, 'false') + machine.wait_until_succeeds( + "${startingUp} | grep -q 'true,..false'" + ) + + with subtest("Open Gnome Terminal"): + machine.succeed( + "${gnomeTerminalCommand}" + ) + # correct output should be (true, '"Gnome-terminal"') + machine.wait_until_succeeds( + "${wmClass} | grep -q 'true,...Gnome-terminal'" + ) + machine.sleep(20) + machine.screenshot("screen") ''; }) diff --git a/nixos/tests/gnome3.nix b/nixos/tests/gnome3.nix index ab363efb6a1..17e72c5f651 100644 --- a/nixos/tests/gnome3.nix +++ b/nixos/tests/gnome3.nix @@ -1,7 +1,7 @@ -import ./make-test.nix ({ pkgs, ...} : { +import ./make-test-python.nix ({ pkgs, lib, ...} : { name = "gnome3"; - meta = with pkgs.stdenv.lib.maintainers; { - maintainers = pkgs.gnome3.maintainers; + meta = with lib; { + maintainers = teams.gnome.members; }; machine = @@ -24,41 +24,53 @@ import ./make-test.nix ({ pkgs, ...} : { virtualisation.memorySize = 1024; }; - testScript = let + testScript = { nodes, ... }: let # Keep line widths somewhat managable - bus = "DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus"; + user = nodes.machine.config.users.users.alice; + uid = toString user.uid; + bus = "DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/${uid}/bus"; gdbus = "${bus} gdbus"; + su = command: "su - ${user.name} -c '${command}'"; + # Call javascript in gnome shell, returns a tuple (success, output), where # `success` is true if the dbus call was successful and output is what the # javascript evaluates to. eval = "call --session -d org.gnome.Shell -o /org/gnome/Shell -m org.gnome.Shell.Eval"; + # False when startup is done - startingUp = "${gdbus} ${eval} Main.layoutManager._startingUp"; + startingUp = su "${gdbus} ${eval} Main.layoutManager._startingUp"; + + # Start gnome-terminal + gnomeTerminalCommand = su "${bus} gnome-terminal"; + # Hopefully gnome-terminal's wm class - wmClass = "${gdbus} ${eval} global.display.focus_window.wm_class"; + wmClass = su "${gdbus} ${eval} global.display.focus_window.wm_class"; in '' - # wait for gdm to start - $machine->waitForUnit("display-manager.service"); + with subtest("Login to GNOME with GDM"): + # wait for gdm to start + machine.wait_for_unit("display-manager.service") + # wait for the wayland server + machine.wait_for_file("/run/user/${uid}/wayland-0") + # wait for alice to be logged in + machine.wait_for_unit("default.target", "${user.name}") + # check that logging in has given the user ownership of devices + assert "alice" in machine.succeed("getfacl -p /dev/snd/timer") - # wait for alice to be logged in - $machine->waitForUnit("default.target","alice"); + with subtest("Wait for GNOME Shell"): + # correct output should be (true, 'false') + machine.wait_until_succeeds( + "${startingUp} | grep -q 'true,..false'" + ) - # Check that logging in has given the user ownership of devices. - $machine->succeed("getfacl -p /dev/snd/timer | grep -q alice"); - - # Wait for the wayland server - $machine->waitForFile("/run/user/1000/wayland-0"); - - # Wait for gnome shell, correct output should be "(true, 'false')" - $machine->waitUntilSucceeds("su - alice -c '${startingUp} | grep -q true,..false'"); - - # open a terminal - $machine->succeed("su - alice -c '${bus} gnome-terminal'"); - # and check it's there - $machine->waitUntilSucceeds("su - alice -c '${wmClass} | grep -q gnome-terminal-server'"); - - # wait to get a nice screenshot - $machine->sleep(20); - $machine->screenshot("screen"); + with subtest("Open Gnome Terminal"): + machine.succeed( + "${gnomeTerminalCommand}" + ) + # correct output should be (true, '"gnome-terminal-server"') + machine.wait_until_succeeds( + "${wmClass} | grep -q 'gnome-terminal-server'" + ) + machine.sleep(20) + machine.screenshot("screen") ''; }) diff --git a/nixos/tests/graphite.nix b/nixos/tests/graphite.nix index 27a87bdbb9f..71776a94cbd 100644 --- a/nixos/tests/graphite.nix +++ b/nixos/tests/graphite.nix @@ -1,41 +1,50 @@ -import ./make-test.nix ({ pkgs, ... } : +import ./make-test-python.nix ({ pkgs, ... } : { name = "graphite"; + meta = { + # Fails on dependency `python-2.7-Twisted`'s test suite + # complaining `ImportError: No module named zope.interface`. + broken = true; + }; nodes = { one = { ... }: { virtualisation.memorySize = 1024; time.timeZone = "UTC"; services.graphite = { - web.enable = true; + web = { + enable = true; + extraConfig = '' + SECRET_KEY = "abcd"; + ''; + }; api = { enable = true; port = 8082; - finders = [ pkgs.python27Packages.influxgraph ]; + finders = [ pkgs.python3Packages.influxgraph ]; }; carbon.enableCache = true; - seyren.enable = true; - pager.enable = true; + seyren.enable = false; # Implicitely requires openssl-1.0.2u which is marked insecure beacon.enable = true; }; }; }; testScript = '' - startAll; - $one->waitForUnit("default.target"); - $one->waitForUnit("graphiteWeb.service"); - $one->waitForUnit("graphiteApi.service"); - $one->waitForUnit("graphitePager.service"); - $one->waitForUnit("graphite-beacon.service"); - $one->waitForUnit("carbonCache.service"); - $one->waitForUnit("seyren.service"); + start_all() + one.wait_for_unit("default.target") + one.wait_for_unit("graphiteWeb.service") + one.wait_for_unit("graphiteApi.service") + one.wait_for_unit("graphite-beacon.service") + one.wait_for_unit("carbonCache.service") # The services above are of type "simple". systemd considers them active immediately # even if they're still in preStart (which takes quite long for graphiteWeb). # Wait for ports to open so we're sure the services are up and listening. - $one->waitForOpenPort(8080); - $one->waitForOpenPort(2003); - $one->succeed("echo \"foo 1 `date +%s`\" | nc -N localhost 2003"); - $one->waitUntilSucceeds("curl 'http://localhost:8080/metrics/find/?query=foo&format=treejson' --silent | grep foo >&2"); + one.wait_for_open_port(8080) + one.wait_for_open_port(2003) + one.succeed('echo "foo 1 `date +%s`" | nc -N localhost 2003') + one.wait_until_succeeds( + "curl 'http://localhost:8080/metrics/find/?query=foo&format=treejson' --silent | grep foo >&2" + ) ''; }) diff --git a/nixos/tests/grocy.nix b/nixos/tests/grocy.nix new file mode 100644 index 00000000000..7fa479ed2c4 --- /dev/null +++ b/nixos/tests/grocy.nix @@ -0,0 +1,47 @@ +import ./make-test-python.nix ({ pkgs, ... }: { + name = "grocy"; + meta = with pkgs.stdenv.lib.maintainers; { + maintainers = [ ma27 ]; + }; + + machine = { pkgs, ... }: { + services.grocy = { + enable = true; + hostName = "localhost"; + nginx.enableSSL = false; + }; + environment.systemPackages = [ pkgs.jq ]; + }; + + testScript = '' + machine.start() + machine.wait_for_open_port(80) + machine.wait_for_unit("multi-user.target") + + machine.succeed("curl -sSf http://localhost") + + machine.succeed( + "curl -c cookies -sSf -X POST http://localhost/login -d 'username=admin&password=admin'" + ) + + cookie = machine.succeed( + "grep -v '^#' cookies | awk '{ print $7 }' | sed -e '/^$/d' | perl -pe 'chomp'" + ) + + machine.succeed( + f"curl -sSf -X POST http://localhost/api/objects/tasks -b 'grocy_session={cookie}' " + + '-d \'{"assigned_to_user_id":1,"name":"Test Task","due_date":"1970-01-01"}\''' + + " --header 'Content-Type: application/json'" + ) + + task_name = machine.succeed( + f"curl -sSf http://localhost/api/tasks -b 'grocy_session={cookie}' --header 'Accept: application/json' | jq '.[].name' | xargs echo | perl -pe 'chomp'" + ) + + assert task_name == "Test Task" + + machine.succeed("curl -sSfI http://localhost/api/tasks 2>&1 | grep '401 Unauthorized'") + + machine.shutdown() + ''; +}) diff --git a/nixos/tests/haka.nix b/nixos/tests/haka.nix index 6277ebb4933..3ca19cb0971 100644 --- a/nixos/tests/haka.nix +++ b/nixos/tests/haka.nix @@ -1,6 +1,6 @@ # This test runs haka and probes it with hakactl -import ./make-test.nix ({ pkgs, ...} : { +import ./make-test-python.nix ({ pkgs, ...} : { name = "haka"; meta = with pkgs.stdenv.lib.maintainers; { maintainers = [ tvestelind ]; @@ -15,10 +15,10 @@ import ./make-test.nix ({ pkgs, ...} : { }; testScript = '' - startAll; + start_all() - $haka->waitForUnit("haka.service"); - $haka->succeed("hakactl status"); - $haka->succeed("hakactl stop"); + haka.wait_for_unit("haka.service") + haka.succeed("hakactl status") + haka.succeed("hakactl stop") ''; }) diff --git a/nixos/tests/haproxy.nix b/nixos/tests/haproxy.nix index b6fed3e2108..79f34b07faf 100644 --- a/nixos/tests/haproxy.nix +++ b/nixos/tests/haproxy.nix @@ -23,12 +23,14 @@ import ./make-test-python.nix ({ pkgs, ...}: { }; services.httpd = { enable = true; - documentRoot = pkgs.writeTextDir "index.txt" "We are all good!"; - adminAddr = "notme@yourhost.local"; - listen = [{ - ip = "::1"; - port = 8000; - }]; + virtualHosts.localhost = { + documentRoot = pkgs.writeTextDir "index.txt" "We are all good!"; + adminAddr = "notme@yourhost.local"; + listen = [{ + ip = "::1"; + port = 8000; + }]; + }; }; }; }; diff --git a/nixos/tests/hardened.nix b/nixos/tests/hardened.nix index cbf76f9e558..5ed0dfcf9ab 100644 --- a/nixos/tests/hardened.nix +++ b/nixos/tests/hardened.nix @@ -1,4 +1,4 @@ -import ./make-test.nix ({ pkgs, ...} : { +import ./make-test.nix ({ pkgs, latestKernel ? false, ... } : { name = "hardened"; meta = with pkgs.stdenv.lib.maintainers; { maintainers = [ joachifm ]; @@ -10,6 +10,8 @@ import ./make-test.nix ({ pkgs, ...} : { { users.users.alice = { isNormalUser = true; extraGroups = [ "proc" ]; }; users.users.sybil = { isNormalUser = true; group = "wheel"; }; imports = [ ../modules/profiles/hardened.nix ]; + boot.kernelPackages = + lib.mkIf latestKernel pkgs.linuxPackages_latest_hardened; environment.memoryAllocator.provider = "graphene-hardened"; nix.useSandbox = false; virtualisation.emptyDiskImages = [ 4096 ]; @@ -23,7 +25,9 @@ import ./make-test.nix ({ pkgs, ...} : { options = [ "noauto" ]; }; }; - boot.extraModulePackages = [ config.boot.kernelPackages.wireguard ]; + boot.extraModulePackages = + optional (versionOlder config.boot.kernelPackages.kernel.version "5.6") + config.boot.kernelPackages.wireguard; boot.kernelModules = [ "wireguard" ]; }; @@ -76,7 +80,8 @@ import ./make-test.nix ({ pkgs, ...} : { # Test userns subtest "userns", sub { - $machine->fail("unshare --user"); + $machine->succeed("unshare --user true"); + $machine->fail("su -l alice -c 'unshare --user true'"); }; # Test dmesg restriction diff --git a/nixos/tests/hitch/default.nix b/nixos/tests/hitch/default.nix index 10612025641..904d12619d7 100644 --- a/nixos/tests/hitch/default.nix +++ b/nixos/tests/hitch/default.nix @@ -16,7 +16,7 @@ import ../make-test-python.nix ({ pkgs, ... }: services.httpd = { enable = true; - documentRoot = ./example; + virtualHosts.localhost.documentRoot = ./example; adminAddr = "noone@testing.nowhere"; }; }; diff --git a/nixos/tests/home-assistant.nix b/nixos/tests/home-assistant.nix index 6b53914fd85..80dca43f1f3 100644 --- a/nixos/tests/home-assistant.nix +++ b/nixos/tests/home-assistant.nix @@ -1,11 +1,10 @@ -import ./make-test.nix ({ pkgs, ... }: +import ./make-test-python.nix ({ pkgs, ... }: let configDir = "/var/lib/foobar"; apiPassword = "some_secret"; mqttPassword = "another_secret"; hassCli = "hass-cli --server http://hass:8123 --password '${apiPassword}'"; - in { name = "home-assistant"; meta = with pkgs.stdenv.lib; { @@ -69,36 +68,44 @@ in { }; testScript = '' - startAll; - $hass->waitForUnit("home-assistant.service"); + start_all() + hass.wait_for_unit("home-assistant.service") + with subtest("Check that YAML configuration file is in place"): + hass.succeed("test -L ${configDir}/configuration.yaml") + with subtest("lovelace config is copied because lovelaceConfigWritable = true"): + hass.succeed("test -f ${configDir}/ui-lovelace.yaml") + with subtest("Check that Home Assistant's web interface and API can be reached"): + hass.wait_for_open_port(8123) + hass.succeed("curl --fail http://localhost:8123/states") + assert "API running" in hass.succeed( + "curl --fail -H 'x-ha-access: ${apiPassword}' http://localhost:8123/api/" + ) + with subtest("Toggle a binary sensor using MQTT"): + assert '"state": "off"' in hass.succeed( + "curl http://localhost:8123/api/states/binary_sensor.mqtt_binary_sensor -H 'x-ha-access: ${apiPassword}'" + ) + hass.wait_until_succeeds( + "mosquitto_pub -V mqttv311 -t home-assistant/test -u homeassistant -P '${mqttPassword}' -m let_there_be_light" + ) + assert '"state": "on"' in hass.succeed( + "curl http://localhost:8123/api/states/binary_sensor.mqtt_binary_sensor -H 'x-ha-access: ${apiPassword}'" + ) + with subtest("Toggle a binary sensor using hass-cli"): + assert '"state": "on"' in hass.succeed( + "${hassCli} --output json state get binary_sensor.mqtt_binary_sensor" + ) + hass.succeed( + "${hassCli} state edit binary_sensor.mqtt_binary_sensor --json='{\"state\": \"off\"}'" + ) + assert '"state": "off"' in hass.succeed( + "curl http://localhost:8123/api/states/binary_sensor.mqtt_binary_sensor -H 'x-ha-access: ${apiPassword}'" + ) + with subtest("Print log to ease debugging"): + output_log = hass.succeed("cat ${configDir}/home-assistant.log") + print("\n### home-assistant.log ###\n") + print(output_log + "\n") - # The config is specified using a Nix attribute set, - # converted from JSON to YAML, and linked to the config dir - $hass->succeed("test -L ${configDir}/configuration.yaml"); - # The lovelace config is copied because lovelaceConfigWritable = true - $hass->succeed("test -f ${configDir}/ui-lovelace.yaml"); - - # Check that Home Assistant's web interface and API can be reached - $hass->waitForOpenPort(8123); - $hass->succeed("curl --fail http://localhost:8123/states"); - $hass->succeed("curl --fail -H 'x-ha-access: ${apiPassword}' http://localhost:8123/api/ | grep -qF 'API running'"); - - # Toggle a binary sensor using MQTT - $hass->succeed("curl http://localhost:8123/api/states/binary_sensor.mqtt_binary_sensor -H 'x-ha-access: ${apiPassword}' | grep -qF '\"state\": \"off\"'"); - $hass->waitUntilSucceeds("mosquitto_pub -V mqttv311 -t home-assistant/test -u homeassistant -P '${mqttPassword}' -m let_there_be_light"); - $hass->succeed("curl http://localhost:8123/api/states/binary_sensor.mqtt_binary_sensor -H 'x-ha-access: ${apiPassword}' | grep -qF '\"state\": \"on\"'"); - - # Toggle a binary sensor using hass-cli - $hass->succeed("${hassCli} --output json state get binary_sensor.mqtt_binary_sensor | grep -qF '\"state\": \"on\"'"); - $hass->succeed("${hassCli} state edit binary_sensor.mqtt_binary_sensor --json='{\"state\": \"off\"}'"); - $hass->succeed("curl http://localhost:8123/api/states/binary_sensor.mqtt_binary_sensor -H 'x-ha-access: ${apiPassword}' | grep -qF '\"state\": \"off\"'"); - - # Print log to ease debugging - my $log = $hass->succeed("cat ${configDir}/home-assistant.log"); - print "\n### home-assistant.log ###\n"; - print "$log\n"; - - # Check that no errors were logged - $hass->fail("cat ${configDir}/home-assistant.log | grep -qF ERROR"); + with subtest("Check that no errors were logged"): + assert "ERROR" not in output_log ''; }) diff --git a/nixos/tests/hydra/common.nix b/nixos/tests/hydra/common.nix new file mode 100644 index 00000000000..f612717dc96 --- /dev/null +++ b/nixos/tests/hydra/common.nix @@ -0,0 +1,47 @@ +{ system, ... }: +{ + baseConfig = { pkgs, ... }: let + trivialJob = pkgs.writeTextDir "trivial.nix" '' + { trivial = builtins.derivation { + name = "trivial"; + system = "${system}"; + builder = "/bin/sh"; + allowSubstitutes = false; + preferLocalBuild = true; + args = ["-c" "echo success > $out; exit 0"]; + }; + } + ''; + + createTrivialProject = pkgs.stdenv.mkDerivation { + name = "create-trivial-project"; + dontUnpack = true; + buildInputs = [ pkgs.makeWrapper ]; + installPhase = "install -m755 -D ${./create-trivial-project.sh} $out/bin/create-trivial-project.sh"; + postFixup = '' + wrapProgram "$out/bin/create-trivial-project.sh" --prefix PATH ":" ${pkgs.stdenv.lib.makeBinPath [ pkgs.curl ]} --set EXPR_PATH ${trivialJob} + ''; + }; + in { + virtualisation.memorySize = 2048; + time.timeZone = "UTC"; + environment.systemPackages = [ createTrivialProject pkgs.jq ]; + services.hydra = { + enable = true; + # Hydra needs those settings to start up, so we add something not harmfull. + hydraURL = "example.com"; + notificationSender = "example@example.com"; + extraConfig = '' + email_notification = 1 + ''; + }; + services.postfix.enable = true; + nix = { + buildMachines = [{ + hostName = "localhost"; + systems = [ system ]; + }]; + binaryCaches = []; + }; + }; +} diff --git a/nixos/tests/hydra/db-migration.nix b/nixos/tests/hydra/db-migration.nix new file mode 100644 index 00000000000..cf74acfd67a --- /dev/null +++ b/nixos/tests/hydra/db-migration.nix @@ -0,0 +1,92 @@ +{ system ? builtins.currentSystem +, pkgs ? import ../../.. { inherit system; } +, ... +}: + +let inherit (import ./common.nix { inherit system; }) baseConfig; in + +with import ../../lib/testing-python.nix { inherit system pkgs; }; +with pkgs.lib; + +{ mig = makeTest { + name = "hydra-db-migration"; + meta = with pkgs.stdenv.lib.maintainers; { + maintainers = [ ma27 ]; + }; + + nodes = { + original = { pkgs, lib, ... }: { + imports = [ baseConfig ]; + + # An older version of Hydra before the db change + # for testing purposes. + services.hydra.package = pkgs.hydra-migration.overrideAttrs (old: { + inherit (old) pname; + version = "2020-02-06"; + src = pkgs.fetchFromGitHub { + owner = "NixOS"; + repo = "hydra"; + rev = "2b4f14963b16b21ebfcd6b6bfa7832842e9b2afc"; + sha256 = "16q0cffcsfx5pqd91n9k19850c1nbh4vvbd9h8yi64ihn7v8bick"; + }; + }); + }; + + migration_phase1 = { pkgs, lib, ... }: { + imports = [ baseConfig ]; + services.hydra.package = pkgs.hydra-migration; + }; + + finished = { pkgs, lib, ... }: { + imports = [ baseConfig ]; + services.hydra.package = pkgs.hydra-unstable; + }; + }; + + testScript = { nodes, ... }: let + next = nodes.migration_phase1.config.system.build.toplevel; + finished = nodes.finished.config.system.build.toplevel; + in '' + original.start() + original.wait_for_unit("multi-user.target") + original.wait_for_unit("postgresql.service") + original.wait_for_unit("hydra-init.service") + original.require_unit_state("hydra-queue-runner.service") + original.require_unit_state("hydra-evaluator.service") + original.require_unit_state("hydra-notify.service") + original.succeed("hydra-create-user admin --role admin --password admin") + original.wait_for_open_port(3000) + original.succeed("create-trivial-project.sh") + original.wait_until_succeeds( + 'curl -L -s http://localhost:3000/build/1 -H "Accept: application/json" | jq .buildstatus | xargs test 0 -eq' + ) + + out = original.succeed("su -l postgres -c 'psql -d hydra <<< \"\\d+ jobs\" -A'") + assert "jobset_id" not in out + + original.succeed( + "${next}/bin/switch-to-configuration test >&2" + ) + original.wait_for_unit("hydra-init.service") + + out = original.succeed("su -l postgres -c 'psql -d hydra <<< \"\\d+ jobs\" -A'") + assert "jobset_id|integer|||" in out + + original.succeed("hydra-backfill-ids") + + original.succeed( + "${finished}/bin/switch-to-configuration test >&2" + ) + original.wait_for_unit("hydra-init.service") + + out = original.succeed("su -l postgres -c 'psql -d hydra <<< \"\\d+ jobs\" -A'") + assert "jobset_id|integer||not null|" in out + + original.wait_until_succeeds( + 'curl -L -s http://localhost:3000/build/1 -H "Accept: application/json" | jq .buildstatus | xargs test 0 -eq' + ) + + original.shutdown() + ''; + }; +} diff --git a/nixos/tests/hydra/default.nix b/nixos/tests/hydra/default.nix index 6ca05a2c779..2336e4033d6 100644 --- a/nixos/tests/hydra/default.nix +++ b/nixos/tests/hydra/default.nix @@ -3,98 +3,57 @@ , pkgs ? import ../../.. { inherit system config; } }: +with import ../../lib/testing-python.nix { inherit system pkgs; }; +with pkgs.lib; + let - trivialJob = pkgs.writeTextDir "trivial.nix" '' - { trivial = builtins.derivation { - name = "trivial"; - system = "${system}"; - builder = "/bin/sh"; - allowSubstitutes = false; - preferLocalBuild = true; - args = ["-c" "echo success > $out; exit 0"]; - }; - } - ''; + inherit (import ./common.nix { inherit system; }) baseConfig; - createTrivialProject = pkgs.stdenv.mkDerivation { - name = "create-trivial-project"; - dontUnpack = true; - buildInputs = [ pkgs.makeWrapper ]; - installPhase = "install -m755 -D ${./create-trivial-project.sh} $out/bin/create-trivial-project.sh"; - postFixup = '' - wrapProgram "$out/bin/create-trivial-project.sh" --prefix PATH ":" ${pkgs.stdenv.lib.makeBinPath [ pkgs.curl ]} --set EXPR_PATH ${trivialJob} + hydraPkgs = { + inherit (pkgs) hydra-migration hydra-unstable; + }; + + makeHydraTest = with pkgs.lib; name: package: makeTest { + name = "hydra-${name}"; + meta = with pkgs.stdenv.lib.maintainers; { + maintainers = [ pstn lewo ma27 ]; + }; + + machine = { pkgs, lib, ... }: { + imports = [ baseConfig ]; + services.hydra = { inherit package; }; + }; + + testScript = '' + # let the system boot up + machine.wait_for_unit("multi-user.target") + # test whether the database is running + machine.wait_for_unit("postgresql.service") + # test whether the actual hydra daemons are running + machine.wait_for_unit("hydra-init.service") + machine.require_unit_state("hydra-queue-runner.service") + machine.require_unit_state("hydra-evaluator.service") + machine.require_unit_state("hydra-notify.service") + + machine.succeed("hydra-create-user admin --role admin --password admin") + + # create a project with a trivial job + machine.wait_for_open_port(3000) + + # make sure the build as been successfully built + machine.succeed("create-trivial-project.sh") + + machine.wait_until_succeeds( + 'curl -L -s http://localhost:3000/build/1 -H "Accept: application/json" | jq .buildstatus | xargs test 0 -eq' + ) + + machine.wait_until_succeeds( + 'journalctl -eu hydra-notify.service -o cat | grep -q "sending mail notification to hydra@localhost"' + ) ''; }; - callTest = f: f { inherit system pkgs; }; - - hydraPkgs = { - inherit (pkgs) nixStable nixUnstable; - }; - - tests = pkgs.lib.flip pkgs.lib.mapAttrs hydraPkgs (name: nix: - callTest (import ../make-test.nix ({ pkgs, lib, ... }: - { - name = "hydra-with-${name}"; - meta = with pkgs.stdenv.lib.maintainers; { - maintainers = [ pstn lewo ma27 ]; - }; - - machine = { pkgs, ... }: - { - virtualisation.memorySize = 1024; - time.timeZone = "UTC"; - - environment.systemPackages = [ createTrivialProject pkgs.jq ]; - services.hydra = { - enable = true; - - #Hydra needs those settings to start up, so we add something not harmfull. - hydraURL = "example.com"; - notificationSender = "example@example.com"; - - package = pkgs.hydra.override { inherit nix; }; - - extraConfig = '' - email_notification = 1 - ''; - }; - services.postfix.enable = true; - nix = { - buildMachines = [{ - hostName = "localhost"; - systems = [ system ]; - }]; - - binaryCaches = []; - }; - }; - - testScript = '' - # let the system boot up - $machine->waitForUnit("multi-user.target"); - # test whether the database is running - $machine->waitForUnit("postgresql.service"); - # test whether the actual hydra daemons are running - $machine->waitForUnit("hydra-init.service"); - $machine->requireActiveUnit("hydra-queue-runner.service"); - $machine->requireActiveUnit("hydra-evaluator.service"); - $machine->requireActiveUnit("hydra-notify.service"); - - $machine->succeed("hydra-create-user admin --role admin --password admin"); - - # create a project with a trivial job - $machine->waitForOpenPort(3000); - - # make sure the build as been successfully built - $machine->succeed("create-trivial-project.sh"); - - $machine->waitUntilSucceeds('curl -L -s http://localhost:3000/build/1 -H "Accept: application/json" | jq .buildstatus | xargs test 0 -eq'); - - $machine->waitUntilSucceeds('journalctl -eu hydra-notify.service -o cat | grep -q "sending mail notification to hydra@localhost"'); - ''; - }))); - in - tests + +mapAttrs makeHydraTest hydraPkgs diff --git a/nixos/tests/i3wm.nix b/nixos/tests/i3wm.nix index 126178d1187..b527aa706ad 100644 --- a/nixos/tests/i3wm.nix +++ b/nixos/tests/i3wm.nix @@ -6,7 +6,7 @@ import ./make-test-python.nix ({ pkgs, ...} : { machine = { lib, ... }: { imports = [ ./common/x11.nix ./common/user-account.nix ]; - services.xserver.displayManager.auto.user = "alice"; + test-support.displayManager.auto.user = "alice"; services.xserver.displayManager.defaultSession = lib.mkForce "none+i3"; services.xserver.windowManager.i3.enable = true; }; diff --git a/nixos/tests/ihatemoney.nix b/nixos/tests/ihatemoney.nix new file mode 100644 index 00000000000..7df0ea0b691 --- /dev/null +++ b/nixos/tests/ihatemoney.nix @@ -0,0 +1,55 @@ +let + f = backend: import ./make-test-python.nix ({ pkgs, ... }: { + name = "ihatemoney-${backend}"; + machine = { lib, ... }: { + services.ihatemoney = { + enable = true; + enablePublicProjectCreation = true; + inherit backend; + uwsgiConfig = { + http = ":8000"; + }; + }; + boot.cleanTmpDir = true; + # ihatemoney needs a local smtp server otherwise project creation just crashes + services.opensmtpd = { + enable = true; + serverConfiguration = '' + listen on lo + action foo relay + match from any for any action foo + ''; + }; + }; + testScript = '' + machine.wait_for_open_port(8000) + machine.wait_for_unit("uwsgi.service") + + assert '"yay"' in machine.succeed( + "curl -X POST http://localhost:8000/api/projects -d 'name=yay&id=yay&password=yay&contact_email=yay\@example.com'" + ) + owner, timestamp = machine.succeed( + "stat --printf %U:%G___%Y /var/lib/ihatemoney/secret_key" + ).split("___") + assert "ihatemoney:ihatemoney" == owner + + with subtest("Restart machine and service"): + machine.shutdown() + machine.start() + machine.wait_for_open_port(8000) + machine.wait_for_unit("uwsgi.service") + + with subtest("check that the database is really persistent"): + machine.succeed("curl --basic -u yay:yay http://localhost:8000/api/projects/yay") + + with subtest("check that the secret key is really persistent"): + timestamp2 = machine.succeed("stat --printf %Y /var/lib/ihatemoney/secret_key") + assert timestamp == timestamp2 + + assert "ihatemoney" in machine.succeed("curl http://localhost:8000") + ''; + }); +in { + ihatemoney-sqlite = f "sqlite"; + ihatemoney-postgresql = f "postgresql"; +} diff --git a/nixos/tests/initdb.nix b/nixos/tests/initdb.nix deleted file mode 100644 index 749d7857a13..00000000000 --- a/nixos/tests/initdb.nix +++ /dev/null @@ -1,26 +0,0 @@ -let - pkgs = import { }; -in -with import { inherit pkgs; system = builtins.currentSystem; }; -with pkgs.lib; - -makeTest { - name = "pg-initdb"; - - machine = {...}: - { - documentation.enable = false; - services.postgresql.enable = true; - services.postgresql.package = pkgs.postgresql_9_6; - environment.pathsToLink = [ - "/share/postgresql" - ]; - }; - - testScript = '' - $machine->start; - $machine->succeed("sudo -u postgres initdb -D /tmp/testpostgres2"); - $machine->shutdown; - ''; - - } \ No newline at end of file diff --git a/nixos/tests/initrd-network-ssh/default.nix b/nixos/tests/initrd-network-ssh/default.nix index 73d9f938e22..017de688208 100644 --- a/nixos/tests/initrd-network-ssh/default.nix +++ b/nixos/tests/initrd-network-ssh/default.nix @@ -3,7 +3,7 @@ import ../make-test-python.nix ({ lib, ... }: { name = "initrd-network-ssh"; meta = with lib.maintainers; { - maintainers = [ willibutz ]; + maintainers = [ willibutz emily ]; }; nodes = with lib; { @@ -17,9 +17,9 @@ import ../make-test-python.nix ({ lib, ... }: enable = true; ssh = { enable = true; - authorizedKeys = [ "${readFile ./openssh.pub}" ]; + authorizedKeys = [ (readFile ./id_ed25519.pub) ]; port = 22; - hostRSAKey = ./dropbear.priv; + hostKeys = [ ./ssh_host_ed25519_key ]; }; }; boot.initrd.preLVMCommands = '' @@ -42,11 +42,11 @@ import ../make-test-python.nix ({ lib, ... }: "${toString (head (splitString " " ( toString (elemAt (splitString "\n" config.networking.extraHosts) 2) )))} " - "${readFile ./dropbear.pub}" + "${readFile ./ssh_host_ed25519_key.pub}" ]; }; sshKey = { - source = ./openssh.priv; # dont use this anywhere else + source = ./id_ed25519; mode = "0600"; }; }; @@ -56,7 +56,17 @@ import ../make-test-python.nix ({ lib, ... }: testScript = '' start_all() client.wait_for_unit("network.target") - client.wait_until_succeeds("ping -c 1 server") + + + def ssh_is_up(_) -> bool: + status, _ = client.execute("nc -z server 22") + return status == 0 + + + with client.nested("waiting for SSH server to come up"): + retry(ssh_is_up) + + client.succeed( "ssh -i /etc/sshKey -o UserKnownHostsFile=/etc/knownHosts server 'touch /fnord'" ) diff --git a/nixos/tests/initrd-network-ssh/dropbear.priv b/nixos/tests/initrd-network-ssh/dropbear.priv deleted file mode 100644 index af340535f0a..00000000000 Binary files a/nixos/tests/initrd-network-ssh/dropbear.priv and /dev/null differ diff --git a/nixos/tests/initrd-network-ssh/dropbear.pub b/nixos/tests/initrd-network-ssh/dropbear.pub deleted file mode 100644 index 385c625522a..00000000000 --- a/nixos/tests/initrd-network-ssh/dropbear.pub +++ /dev/null @@ -1 +0,0 @@ -ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCzJ0OniLB91MpPC86I1m3wwJeAc+Gme7bAuaLIU/cSfPwxT5NO7MfCp0Pu94gYDKtDXMs/wXg0bTAVDeAFFkdIj6kBBumEmQLCTL48q2UxDIXVLT/E/AAgj6q7WwgCg7fwm4Vjn4z7aUyBx8EfRy+5/SQyeYla3D/lFYgMi5x4D6J+yeR+JPAptDE/IR5IizNV7mY0ZcoXYyHrrehI1tTYEEqjX13ZqS4OCBFWwHe1QHhRNM+jHhcATbgikjAj8FyFPtLvc+dSVtkuhQktQl36Bi8zMUQcV6+mM7Ln6DBcDlM9urHKLYPTWmUAyhxM955iglOn5z0RaAIcyNMT6hz0rHaNf0BIlmbXoTC0XGjHh/OnoOEC/zg0JqgQTnPiU45K4TnRSSXp2GfiDfiQAK0+HaXACkjuFR68u7WCZpB1Bse1OgKNClFqtRhIr5DilUb2/e5DCCmFkddMUcjmYqzZdbXNt7fo8CFULe+mbiCp8+tMg4aRTaDZ/Hk93nCvGE5TP2ypEMbfL6nRVKvXOjhdvSQQgKwx+O003FDEHCSG0Bpageh7yVpna+SPrbGklce7MjTpbx3iIwmvKpQ6asnK1L3KkahpY1S3NhQ+/S3Gs8KWQ5LAU+d3xiPX3jfIVHsCIIyxHDbwcJvxM4MFBFQpqRMD6E+LoM9RHjl4C9k2iQ== tmtynkky@duuni diff --git a/nixos/tests/initrd-network-ssh/generate-keys.nix b/nixos/tests/initrd-network-ssh/generate-keys.nix index 0183e12d7a8..3d7978890ab 100644 --- a/nixos/tests/initrd-network-ssh/generate-keys.nix +++ b/nixos/tests/initrd-network-ssh/generate-keys.nix @@ -1,12 +1,10 @@ with import ../../.. {}; runCommand "gen-keys" { - buildInputs = [ dropbear openssh ]; + buildInputs = [ openssh ]; } '' mkdir $out - dropbearkey -t rsa -f $out/dropbear.priv -s 4096 | sed -n 2p > $out/dropbear.pub - ssh-keygen -q -t rsa -b 4096 -N "" -f client - mv client $out/openssh.priv - mv client.pub $out/openssh.pub + ssh-keygen -q -t ed25519 -N "" -f $out/ssh_host_ed25519_key + ssh-keygen -q -t ed25519 -N "" -f $out/id_ed25519 '' diff --git a/nixos/tests/initrd-network-ssh/id_ed25519 b/nixos/tests/initrd-network-ssh/id_ed25519 new file mode 100644 index 00000000000..f914b3f712f --- /dev/null +++ b/nixos/tests/initrd-network-ssh/id_ed25519 @@ -0,0 +1,7 @@ +-----BEGIN OPENSSH PRIVATE KEY----- +b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW +QyNTUxOQAAACAVcX+32Yqig25RxRA8bel/f604wV0p/63um+Oku/3vfwAAAJi/AJZMvwCW +TAAAAAtzc2gtZWQyNTUxOQAAACAVcX+32Yqig25RxRA8bel/f604wV0p/63um+Oku/3vfw +AAAEAPLjQusjrB90Lk3996G3AbtTeK+XweNgxaegYnml/A/RVxf7fZiqKDblHFEDxt6X9/ +rTjBXSn/re6b46S7/e9/AAAAEG5peGJsZEBsb2NhbGhvc3QBAgMEBQ== +-----END OPENSSH PRIVATE KEY----- diff --git a/nixos/tests/initrd-network-ssh/id_ed25519.pub b/nixos/tests/initrd-network-ssh/id_ed25519.pub new file mode 100644 index 00000000000..40de4a8ac60 --- /dev/null +++ b/nixos/tests/initrd-network-ssh/id_ed25519.pub @@ -0,0 +1 @@ +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBVxf7fZiqKDblHFEDxt6X9/rTjBXSn/re6b46S7/e9/ nixbld@localhost diff --git a/nixos/tests/initrd-network-ssh/openssh.priv b/nixos/tests/initrd-network-ssh/openssh.priv deleted file mode 100644 index 816d65435fd..00000000000 --- a/nixos/tests/initrd-network-ssh/openssh.priv +++ /dev/null @@ -1,51 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIIJKAIBAAKCAgEA7+9A2PCPOTAlFmrablrUWA+VZdAuLfM6JXeHsOF7ZbC2F6lv -WmvDM925DQqhiAjcgWnt5WHWS5Y+b7lGnuzT7fyKegXd80nCRmqlpSG3srX0/lxR -aQAJLzfoDjcsF+ceswQo6GSsYnCHVxMNs007gbbVY3f7o+sWZtLdxJPD2iHvl5Zr -LK0d1RLMmU6cfIhIABlL0S8EWiv29RROepsCQnS0dnK2b+von1SCYoggvAMe2ToA -IAJ8+uqaYfGAyn9q8fjZiRHxLmKDq90tKoCUL5r/2dmEIE+t8T/3PfHoq1QzZts9 -W9idhBdT21dEXBtGyoMtckp5njk5m82LQDYiOXkuSoIUhSOteh5g7fBv1BtVSERx -Jg3UeJjPeGKFwdnzapmAKC2w/6V8xcIINNA+fhZA7B9fD1RAi2TECZ+gyMYDc4T+ -USlMSm9cfvSOrf2+5ngtFb84nHjqvClxCMLu+bCWK8HamqUzhE/a5LbR+48E7PyG -s3KV+sWFN9KOnakTjj/6iQhXZRhgeAK39F2XTk5Ms5Y+BRSStnMoMZA2grIV+jHi -1zbWokVqXPI5YRo5isR/PgtKAV6FfNWumcYoFJ9F40pMHQ6hJVEmtrCBx7EApSl3 -mSGbQJUmilLC51qNhwQRbD//ZtpIrN82HTMKzZ6kj7kDCdsff+wsnkIXmmMCAwEA -AQKCAgA4tMINw6UF7hQF3VEsnbjr6xrzCiWv5HlMm5htPI1OdlpC81+G7ksfOfrf -UzDkFrwOtftsqBfem268Nvyy2OQprfMIbdSMCFWrEM9/XJ2u1gRGDYmMGF8TUtI8 -cduw9oWx53zHl+uKBHBoKu+k/c7flFeQf63wisIroRCawhWau0SF/h3sXCndzuie -Hw8q+4aQx2m80bDkotlmCNuXbIU3MZ/pEql9gDLlXTLHmMaryM0EqAmZhx0ErGe6 -WDqJIV4kPB0loSDwRoY6GzbugZ8ENUzcruTkQhCpIOYNNNw5idfwKkaxK1vm+SBv -iYt1fVjYyfH2vhVKSNoNsaGEloa1u4Dymt/FpFztEpRzHXcw93N8BdLxJ4OUhzm2 -iAbpiyjniTIeAVVi7BUwLXh5WAx8nT0eeb1zKoZg1p1ciK5cYl1Uel7j8xRycsSW -3YgmtuPqY4Agbc9v3eXbQZNDk48JFMEqpIxk97FAkRYpzfxg5Qq14WJCp60CkdRt -T60hXy8lT/BcI8OWLfGJuBbsVLNRiC7PpwqRKQAinXSv134FpP7jrhpkMybs2oIS -5obRG7J5OfOTp925erG5mrpwqa3BPkgqx347Wj9z8quOZyuhi+XaPvqmPtvs5JOl -4RCqjt6RQlHm7xos9ZZGI4jDAIFaFWgyVZrYplOgwxWma4DTgQKCAQEA9+tizQRU -lF0lxNcEPvsFnYJo80Y+MQK9VdtlhR19YuSfwP1NCaMG1MhQ+PVBVmepOwJMRJR7 -9PLfOouNMfixKBGP12dtStMuh7jowq/BxhRI6JWp3RhTZ1yJ9ouzHze7IDrEBa6w -p0hUu9H0Sbt51LXbC3JmTyhbdhfry559DfyGW1Ma/bv/pihL9B5Y7sNf1thNp1gi -GbQ9B+o2Yyw8ZD8zY+sl+aYDSWyCtcBV/KXEF74Bkfs/a5ExJ00X0jYj/TAp2ray -T4PY0FR8wN/O10bFLP9j+Xa/ywbcPhoj8nvVRIg9VfWT/QaEd+KR0EZVxdjCCqne -enbSQksTpAZNwQKCAQEA98E+BMmS+yHUVUhNZABtQ5avwuV4+DoSN8KTp3xwQ0CH -m9fWxSDs12FdyMhDxrJPeywvHtZ18/7cl3dr8wnFVE0s4ongnRDXsNk5xN6J3AaO -KqW4HF9cbwZqzLILy8TrO+EK/EQV9FypbrxqvxAlP1kezIA2CJNzVRAgimSuV/H7 -05HTnp5W06fjtEf8U1CUrdNetoSROUo1j/IMGPYGlsBFYAGrj5y/BlKd+3T3kjRp -Xje7HpiykjrZHn0WDp04Ln+u9nveEewXmHKch313emt7HpW0xspp8JM8OZtEKozk -D5PfYdBfMJJOUlqovCCzTTJ6kNOahknKXFeO/qs5IwKCAQEAjF0/zhWikXF/fcfD -Bql2z2vTYdEmSvdjHSYff1Nn90K71DdVk5wytOxJM/sfp/z+yoMNjVKIL/IGQw5Z -va4xFx+CUhGjxlZ0pLEjT37U9gHsGYsK5jvslLvG/MixfH5AOwoqi5ERQVTpbIF9 -jvVPEAh6YSu/ExglWGJIxTsRUIblxvTxdjEnl/p+rlM0RNJnA6vpo1J51BXA7CdF -7bZQ5u0Feo/bK1I70ClYg/DGfkmYEV0pZG5cxNkqfDbgwsqWa7YGLGd94xkh+ymq -jETqxeWyozxhbQ83nYpfzeVc7t//qlJ8b5uf0wUKoRmtNr9rtp13lzP/21REzPXW -w+oxwQKCAQAoAf2Y2lAw25KlPuq4ZlU+n9u8FkBFnWMJvBMJ7c9XHNmJMf6NkLaO -RTvWy3geYvbwxf7J9QnRH+vRTciR05cY+Olxn6A03N5nwXxRrToH3MsiWeZ0NnX/ -u8KNUYcUHbV60ulqOThuYHQ/3I9EUUAijaqqjV2sXts19ke68W0x6HKpBJhuudT9 -ktPzbdhyP8Xyl/pocNnerXwexZBsi3Ye6+eIDFz+8OnsBHVcgNPluS72tvsxgqj7 -ciNTiBGCxKKo55eCWBhRPpXE2WUrf/hGPYsBMl2h6FfZMH1+M/N7B4tgdJmS+woU -Ftws8lTjJEiwA6HFN1ZxrwLNjJobx9yPAoIBAE0igsBuWWn6rXeOPylYg4264XOq -8gb94pte2n9amDgCzyCn8m6AL3snLC/AoCD19DK+gyK0ukoesXPa3iX6w2xv69ZC -urDx36Jhd4zrJb4QsFPoeKfDP+UvNVZaS41vipRRzY/y11em15prUZ4U8FA/UT1Y -FzkBo9r6iUZRnyBLppMuEfWASDtuRNmeIHynoT1AcQOH3l9vR210iEpmAuJr0CYA -bvTuz3UzzGGEAuIUvuaiRtkfKY52jBmiEr7SSPCr1HvLj3Ccz8bgjgR2kiXmcU50 -1zLnaPAD44LZ/0Fjqj+PimQGT6K7CNXPllmYh7MvoU52g3SVPf6rHlIR0Nc= ------END RSA PRIVATE KEY----- diff --git a/nixos/tests/initrd-network-ssh/openssh.pub b/nixos/tests/initrd-network-ssh/openssh.pub deleted file mode 100644 index 5b72b8085f2..00000000000 --- a/nixos/tests/initrd-network-ssh/openssh.pub +++ /dev/null @@ -1 +0,0 @@ -ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDv70DY8I85MCUWatpuWtRYD5Vl0C4t8zold4ew4XtlsLYXqW9aa8Mz3bkNCqGICNyBae3lYdZLlj5vuUae7NPt/Ip6Bd3zScJGaqWlIbeytfT+XFFpAAkvN+gONywX5x6zBCjoZKxicIdXEw2zTTuBttVjd/uj6xZm0t3Ek8PaIe+XlmssrR3VEsyZTpx8iEgAGUvRLwRaK/b1FE56mwJCdLR2crZv6+ifVIJiiCC8Ax7ZOgAgAnz66pph8YDKf2rx+NmJEfEuYoOr3S0qgJQvmv/Z2YQgT63xP/c98eirVDNm2z1b2J2EF1PbV0RcG0bKgy1ySnmeOTmbzYtANiI5eS5KghSFI616HmDt8G/UG1VIRHEmDdR4mM94YoXB2fNqmYAoLbD/pXzFwgg00D5+FkDsH18PVECLZMQJn6DIxgNzhP5RKUxKb1x+9I6t/b7meC0VvziceOq8KXEIwu75sJYrwdqapTOET9rkttH7jwTs/IazcpX6xYU30o6dqROOP/qJCFdlGGB4Arf0XZdOTkyzlj4FFJK2cygxkDaCshX6MeLXNtaiRWpc8jlhGjmKxH8+C0oBXoV81a6ZxigUn0XjSkwdDqElUSa2sIHHsQClKXeZIZtAlSaKUsLnWo2HBBFsP/9m2kis3zYdMwrNnqSPuQMJ2x9/7CyeQheaYw== tmtynkky@duuni diff --git a/nixos/tests/initrd-network-ssh/ssh_host_ed25519_key b/nixos/tests/initrd-network-ssh/ssh_host_ed25519_key new file mode 100644 index 00000000000..f1e29459b7a --- /dev/null +++ b/nixos/tests/initrd-network-ssh/ssh_host_ed25519_key @@ -0,0 +1,7 @@ +-----BEGIN OPENSSH PRIVATE KEY----- +b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW +QyNTUxOQAAACDP9Mz6qlxdQqA4omrgbOlVsxSGONCJstjW9zqquajlIAAAAJg0WGFGNFhh +RgAAAAtzc2gtZWQyNTUxOQAAACDP9Mz6qlxdQqA4omrgbOlVsxSGONCJstjW9zqquajlIA +AAAEA0Hjs7LfFPdTf3ThGx6GNKvX0ItgzgXs91Z3oGIaF6S8/0zPqqXF1CoDiiauBs6VWz +FIY40Imy2Nb3Oqq5qOUgAAAAEG5peGJsZEBsb2NhbGhvc3QBAgMEBQ== +-----END OPENSSH PRIVATE KEY----- diff --git a/nixos/tests/initrd-network-ssh/ssh_host_ed25519_key.pub b/nixos/tests/initrd-network-ssh/ssh_host_ed25519_key.pub new file mode 100644 index 00000000000..3aa1587e1dc --- /dev/null +++ b/nixos/tests/initrd-network-ssh/ssh_host_ed25519_key.pub @@ -0,0 +1 @@ +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIM/0zPqqXF1CoDiiauBs6VWzFIY40Imy2Nb3Oqq5qOUg nixbld@localhost diff --git a/nixos/tests/initrd-network.nix b/nixos/tests/initrd-network.nix index 4796ff9b7c8..9c35b730576 100644 --- a/nixos/tests/initrd-network.nix +++ b/nixos/tests/initrd-network.nix @@ -1,4 +1,4 @@ -import ./make-test-python.nix ({ pkgs, ...} : { +import ./make-test-python.nix ({ pkgs, lib, ...} : { name = "initrd-network"; meta.maintainers = [ pkgs.stdenv.lib.maintainers.eelco ]; @@ -8,15 +8,26 @@ import ./make-test-python.nix ({ pkgs, ...} : { boot.initrd.network.enable = true; boot.initrd.network.postCommands = '' + ip addr show + ip route show ip addr | grep 10.0.2.15 || exit 1 ping -c1 10.0.2.2 || exit 1 ''; + # Check if cleanup was done correctly + boot.initrd.postMountCommands = lib.mkAfter + '' + ip addr show + ip route show + ip addr | grep 10.0.2.15 && exit 1 + ping -c1 10.0.2.2 && exit 1 + ''; }; testScript = '' start_all() machine.wait_for_unit("multi-user.target") - machine.succeed("ip link >&2") + machine.succeed("ip addr show >&2") + machine.succeed("ip route show >&2") ''; }) diff --git a/nixos/tests/installed-tests/default.nix b/nixos/tests/installed-tests/default.nix index 8e997ee4aeb..b6bdfea2277 100644 --- a/nixos/tests/installed-tests/default.nix +++ b/nixos/tests/installed-tests/default.nix @@ -90,7 +90,10 @@ in graphene = callInstalledTest ./graphene.nix {}; ibus = callInstalledTest ./ibus.nix {}; libgdata = callInstalledTest ./libgdata.nix {}; + glib-testing = callInstalledTest ./glib-testing.nix {}; + libjcat = callInstalledTest ./libjcat.nix {}; libxmlb = callInstalledTest ./libxmlb.nix {}; + malcontent = callInstalledTest ./malcontent.nix {}; ostree = callInstalledTest ./ostree.nix {}; xdg-desktop-portal = callInstalledTest ./xdg-desktop-portal.nix {}; } diff --git a/nixos/tests/installed-tests/fwupd.nix b/nixos/tests/installed-tests/fwupd.nix index b9f761e9958..6a0ceb57dda 100644 --- a/nixos/tests/installed-tests/fwupd.nix +++ b/nixos/tests/installed-tests/fwupd.nix @@ -1,11 +1,11 @@ -{ pkgs, makeInstalledTest, ... }: +{ pkgs, lib, makeInstalledTest, ... }: makeInstalledTest { tested = pkgs.fwupd; testConfig = { services.fwupd.enable = true; - services.fwupd.blacklistPlugins = []; # don't blacklist test plugin + services.fwupd.blacklistPlugins = lib.mkForce []; # don't blacklist test plugin services.fwupd.enableTestRemote = true; virtualisation.memorySize = 768; }; diff --git a/nixos/tests/installed-tests/glib-testing.nix b/nixos/tests/installed-tests/glib-testing.nix new file mode 100644 index 00000000000..7a06cf792bd --- /dev/null +++ b/nixos/tests/installed-tests/glib-testing.nix @@ -0,0 +1,5 @@ +{ pkgs, makeInstalledTest, ... }: + +makeInstalledTest { + tested = pkgs.glib-testing; +} diff --git a/nixos/tests/installed-tests/libjcat.nix b/nixos/tests/installed-tests/libjcat.nix new file mode 100644 index 00000000000..41493a73089 --- /dev/null +++ b/nixos/tests/installed-tests/libjcat.nix @@ -0,0 +1,5 @@ +{ pkgs, makeInstalledTest, ... }: + +makeInstalledTest { + tested = pkgs.libjcat; +} diff --git a/nixos/tests/installed-tests/malcontent.nix b/nixos/tests/installed-tests/malcontent.nix new file mode 100644 index 00000000000..d4e214c4198 --- /dev/null +++ b/nixos/tests/installed-tests/malcontent.nix @@ -0,0 +1,5 @@ +{ pkgs, makeInstalledTest, ... }: + +makeInstalledTest { + tested = pkgs.malcontent; +} diff --git a/nixos/tests/installed-tests/xdg-desktop-portal.nix b/nixos/tests/installed-tests/xdg-desktop-portal.nix index b16008ff4ad..90529d37ee0 100644 --- a/nixos/tests/installed-tests/xdg-desktop-portal.nix +++ b/nixos/tests/installed-tests/xdg-desktop-portal.nix @@ -2,4 +2,8 @@ makeInstalledTest { tested = pkgs.xdg-desktop-portal; + + # Ton of breakage. + # https://github.com/flatpak/xdg-desktop-portal/pull/428 + meta.broken = true; } diff --git a/nixos/tests/installer.nix b/nixos/tests/installer.nix index eb1f4f192dd..c5abd458ec9 100644 --- a/nixos/tests/installer.nix +++ b/nixos/tests/installer.nix @@ -3,7 +3,7 @@ pkgs ? import ../.. { inherit system config; } }: -with import ../lib/testing.nix { inherit system pkgs; }; +with import ../lib/testing-python.nix { inherit system pkgs; }; with pkgs.lib; let @@ -65,163 +65,194 @@ let # partitions and filesystems. testScriptFun = { bootLoader, createPartitions, grubVersion, grubDevice, grubUseEfi , grubIdentifier, preBootCommands, extraConfig - , testCloneConfig + , testSpecialisationConfig }: - let - iface = if grubVersion == 1 then "ide" else "virtio"; - isEfi = bootLoader == "systemd-boot" || (bootLoader == "grub" && grubUseEfi); - - # FIXME don't duplicate the -enable-kvm etc. flags here yet again! - qemuFlags = - (if system == "x86_64-linux" then "-m 768 " else "-m 512 ") + - (optionalString (system == "x86_64-linux") "-cpu kvm64 ") + - (optionalString (system == "aarch64-linux") "-enable-kvm -machine virt,gic-version=host -cpu host "); - - hdFlags = ''hda => "vm-state-machine/machine.qcow2", hdaInterface => "${iface}", '' - + optionalString isEfi (if pkgs.stdenv.isAarch64 - then ''bios => "${pkgs.OVMF.fd}/FV/QEMU_EFI.fd", '' - else ''bios => "${pkgs.OVMF.fd}/FV/OVMF.fd", ''); + let iface = if grubVersion == 1 then "ide" else "virtio"; + isEfi = bootLoader == "systemd-boot" || (bootLoader == "grub" && grubUseEfi); + bios = if pkgs.stdenv.isAarch64 then "QEMU_EFI.fd" else "OVMF.fd"; in if !isEfi && !(pkgs.stdenv.isi686 || pkgs.stdenv.isx86_64) then throw "Non-EFI boot methods are only supported on i686 / x86_64" else '' + def assemble_qemu_flags(): + flags = "-cpu host" + ${if system == "x86_64-linux" + then ''flags += " -m 768"'' + else ''flags += " -m 512 -enable-kvm -machine virt,gic-version=host"'' + } + return flags - $machine->start; - # Make sure that we get a login prompt etc. - $machine->succeed("echo hello"); - #$machine->waitForUnit('getty@tty2'); - #$machine->waitForUnit("rogue"); - $machine->waitForUnit("nixos-manual"); + qemu_flags = {"qemuFlags": assemble_qemu_flags()} - # Wait for hard disks to appear in /dev - $machine->succeed("udevadm settle"); + hd_flags = { + "hdaInterface": "${iface}", + "hda": "vm-state-machine/machine.qcow2", + } + ${optionalString isEfi '' + hd_flags.update( + bios="${pkgs.OVMF.fd}/FV/${bios}" + )'' + } + default_flags = {**hd_flags, **qemu_flags} + + + def create_machine_named(name): + return create_machine({**default_flags, "name": "boot-after-install"}) + + + machine.start() + + with subtest("Assert readiness of login prompt"): + machine.succeed("echo hello") + + with subtest("Wait for hard disks to appear in /dev"): + machine.succeed("udevadm settle") - # Partition the disk. ${createPartitions} - # Create the NixOS configuration. - $machine->succeed("nixos-generate-config --root /mnt"); + with subtest("Create the NixOS configuration"): + machine.succeed("nixos-generate-config --root /mnt") + machine.succeed("cat /mnt/etc/nixos/hardware-configuration.nix >&2") + machine.copy_from_host( + "${ makeConfig { + inherit bootLoader grubVersion grubDevice grubIdentifier + grubUseEfi extraConfig; + } + }", + "/mnt/etc/nixos/configuration.nix", + ) - $machine->succeed("cat /mnt/etc/nixos/hardware-configuration.nix >&2"); + with subtest("Perform the installation"): + machine.succeed("nixos-install < /dev/null >&2") - $machine->copyFileFromHost( - "${ makeConfig { inherit bootLoader grubVersion grubDevice grubIdentifier grubUseEfi extraConfig; } }", - "/mnt/etc/nixos/configuration.nix"); + with subtest("Do it again to make sure it's idempotent"): + machine.succeed("nixos-install < /dev/null >&2") - # Perform the installation. - $machine->succeed("nixos-install < /dev/null >&2"); - - # Do it again to make sure it's idempotent. - $machine->succeed("nixos-install < /dev/null >&2"); - - $machine->succeed("umount /mnt/boot || true"); - $machine->succeed("umount /mnt"); - $machine->succeed("sync"); - - $machine->shutdown; + with subtest("Shutdown system after installation"): + machine.succeed("umount /mnt/boot || true") + machine.succeed("umount /mnt") + machine.succeed("sync") + machine.shutdown() # Now see if we can boot the installation. - $machine = createMachine({ ${hdFlags} qemuFlags => "${qemuFlags}", name => "boot-after-install" }); + machine = create_machine_named("boot-after-install") # For example to enter LUKS passphrase. ${preBootCommands} - # Did /boot get mounted? - $machine->waitForUnit("local-fs.target"); + with subtest("Assert that /boot get mounted"): + machine.wait_for_unit("local-fs.target") + ${if bootLoader == "grub" + then ''machine.succeed("test -e /boot/grub")'' + else ''machine.succeed("test -e /boot/loader/loader.conf")'' + } - ${if bootLoader == "grub" then - ''$machine->succeed("test -e /boot/grub");'' - else - ''$machine->succeed("test -e /boot/loader/loader.conf");'' - } + with subtest("Check whether /root has correct permissions"): + assert "700" in machine.succeed("stat -c '%a' /root") - # Check whether /root has correct permissions. - $machine->succeed("stat -c '%a' /root") =~ /700/ or die; + with subtest("Assert swap device got activated"): + # uncomment once https://bugs.freedesktop.org/show_bug.cgi?id=86930 is resolved + machine.wait_for_unit("swap.target") + machine.succeed("cat /proc/swaps | grep -q /dev") - # Did the swap device get activated? - # uncomment once https://bugs.freedesktop.org/show_bug.cgi?id=86930 is resolved - $machine->waitForUnit("swap.target"); - $machine->succeed("cat /proc/swaps | grep -q /dev"); + with subtest("Check that the store is in good shape"): + machine.succeed("nix-store --verify --check-contents >&2") - # Check that the store is in good shape - $machine->succeed("nix-store --verify --check-contents >&2"); + with subtest("Check whether the channel works"): + machine.succeed("nix-env -iA nixos.procps >&2") + assert ".nix-profile" in machine.succeed("type -tP ps | tee /dev/stderr") - # Check whether the channel works. - $machine->succeed("nix-env -iA nixos.procps >&2"); - $machine->succeed("type -tP ps | tee /dev/stderr") =~ /.nix-profile/ - or die "nix-env failed"; + with subtest( + "Check that the daemon works, and that non-root users can run builds " + "(this will build a new profile generation through the daemon)" + ): + machine.succeed("su alice -l -c 'nix-env -iA nixos.procps' >&2") - # Check that the daemon works, and that non-root users can run builds (this will build a new profile generation through the daemon) - $machine->succeed("su alice -l -c 'nix-env -iA nixos.procps' >&2"); + with subtest("Configure system with writable Nix store on next boot"): + # we're not using copy_from_host here because the installer image + # doesn't know about the host-guest sharing mechanism. + machine.copy_from_host_via_shell( + "${ makeConfig { + inherit bootLoader grubVersion grubDevice grubIdentifier + grubUseEfi extraConfig; + forceGrubReinstallCount = 1; + } + }", + "/etc/nixos/configuration.nix", + ) - # We need a writable Nix store on next boot. - $machine->copyFileFromHost( - "${ makeConfig { inherit bootLoader grubVersion grubDevice grubIdentifier grubUseEfi extraConfig; forceGrubReinstallCount = 1; } }", - "/etc/nixos/configuration.nix"); + with subtest("Check whether nixos-rebuild works"): + machine.succeed("nixos-rebuild switch >&2") - # Check whether nixos-rebuild works. - $machine->succeed("nixos-rebuild switch >&2"); + with subtest("Test nixos-option"): + kernel_modules = machine.succeed("nixos-option boot.initrd.kernelModules") + assert "virtio_console" in kernel_modules + assert "List of modules" in kernel_modules + assert "qemu-guest.nix" in kernel_modules - # Test nixos-option. - $machine->succeed("nixos-option boot.initrd.kernelModules | grep virtio_console"); - $machine->succeed("nixos-option boot.initrd.kernelModules | grep 'List of modules'"); - $machine->succeed("nixos-option boot.initrd.kernelModules | grep qemu-guest.nix"); - - $machine->shutdown; + machine.shutdown() # Check whether a writable store build works - $machine = createMachine({ ${hdFlags} qemuFlags => "${qemuFlags}", name => "rebuild-switch" }); + machine = create_machine_named("rebuild-switch") ${preBootCommands} - $machine->waitForUnit("multi-user.target"); - $machine->copyFileFromHost( - "${ makeConfig { inherit bootLoader grubVersion grubDevice grubIdentifier grubUseEfi extraConfig; forceGrubReinstallCount = 2; } }", - "/etc/nixos/configuration.nix"); - $machine->succeed("nixos-rebuild boot >&2"); - $machine->shutdown; + machine.wait_for_unit("multi-user.target") + + # we're not using copy_from_host here because the installer image + # doesn't know about the host-guest sharing mechanism. + machine.copy_from_host_via_shell( + "${ makeConfig { + inherit bootLoader grubVersion grubDevice grubIdentifier + grubUseEfi extraConfig; + forceGrubReinstallCount = 2; + } + }", + "/etc/nixos/configuration.nix", + ) + machine.succeed("nixos-rebuild boot >&2") + machine.shutdown() # And just to be sure, check that the machine still boots after # "nixos-rebuild switch". - $machine = createMachine({ ${hdFlags} qemuFlags => "${qemuFlags}", "boot-after-rebuild-switch" }); + machine = create_machine_named("boot-after-rebuild-switch") ${preBootCommands} - $machine->waitForUnit("network.target"); - $machine->shutdown; + machine.wait_for_unit("network.target") + machine.shutdown() # Tests for validating clone configuration entries in grub menu - ${optionalString testCloneConfig '' - # Reboot Machine - $machine = createMachine({ ${hdFlags} qemuFlags => "${qemuFlags}", name => "clone-default-config" }); - ${preBootCommands} - $machine->waitForUnit("multi-user.target"); + '' + + optionalString testSpecialisationConfig '' + # Reboot Machine + machine = create_machine_named("clone-default-config") + ${preBootCommands} + machine.wait_for_unit("multi-user.target") - # Booted configuration name should be Home - # This is not the name that shows in the grub menu. - # The default configuration is always shown as "Default" - $machine->succeed("cat /run/booted-system/configuration-name >&2"); - $machine->succeed("cat /run/booted-system/configuration-name | grep Home"); + with subtest("Booted configuration name should be 'Home'"): + # This is not the name that shows in the grub menu. + # The default configuration is always shown as "Default" + machine.succeed("cat /run/booted-system/configuration-name >&2") + assert "Home" in machine.succeed("cat /run/booted-system/configuration-name") - # We should find **not** a file named /etc/gitconfig - $machine->fail("test -e /etc/gitconfig"); + with subtest("We should **not** find a file named /etc/gitconfig"): + machine.fail("test -e /etc/gitconfig") - # Set grub to boot the second configuration - $machine->succeed("grub-reboot 1"); + with subtest("Set grub to boot the second configuration"): + machine.succeed("grub-reboot 1") - $machine->shutdown; + machine.shutdown() - # Reboot Machine - $machine = createMachine({ ${hdFlags} qemuFlags => "${qemuFlags}", name => "clone-alternate-config" }); - ${preBootCommands} + # Reboot Machine + machine = create_machine_named("clone-alternate-config") + ${preBootCommands} - $machine->waitForUnit("multi-user.target"); - # Booted configuration name should be Work - $machine->succeed("cat /run/booted-system/configuration-name >&2"); - $machine->succeed("cat /run/booted-system/configuration-name | grep Work"); + machine.wait_for_unit("multi-user.target") + with subtest("Booted configuration name should be Work"): + machine.succeed("cat /run/booted-system/configuration-name >&2") + assert "Work" in machine.succeed("cat /run/booted-system/configuration-name") - # We should find a file named /etc/gitconfig - $machine->succeed("test -e /etc/gitconfig"); - - $machine->shutdown; - ''} + with subtest("We should find a file named /etc/gitconfig"): + machine.succeed("test -e /etc/gitconfig") + machine.shutdown() ''; @@ -231,7 +262,7 @@ let , bootLoader ? "grub" # either "grub" or "systemd-boot" , grubVersion ? 2, grubDevice ? "/dev/vda", grubIdentifier ? "uuid", grubUseEfi ? false , enableOCR ? false, meta ? {} - , testCloneConfig ? false + , testSpecialisationConfig ? false }: makeTest { inherit enableOCR; @@ -243,80 +274,80 @@ let nodes = { # The configuration of the machine used to run "nixos-install". - machine = - { pkgs, ... }: + machine = { pkgs, ... }: { + imports = [ + ../modules/profiles/installation-device.nix + ../modules/profiles/base.nix + extraInstallerConfig + ]; - { imports = - [ ../modules/profiles/installation-device.nix - ../modules/profiles/base.nix - extraInstallerConfig - ]; + virtualisation.diskSize = 8 * 1024; + virtualisation.memorySize = 1024; - virtualisation.diskSize = 8 * 1024; - virtualisation.memorySize = 1024; + # Use a small /dev/vdb as the root disk for the + # installer. This ensures the target disk (/dev/vda) is + # the same during and after installation. + virtualisation.emptyDiskImages = [ 512 ]; + virtualisation.bootDevice = + if grubVersion == 1 then "/dev/sdb" else "/dev/vdb"; + virtualisation.qemu.diskInterface = + if grubVersion == 1 then "scsi" else "virtio"; - # Use a small /dev/vdb as the root disk for the - # installer. This ensures the target disk (/dev/vda) is - # the same during and after installation. - virtualisation.emptyDiskImages = [ 512 ]; - virtualisation.bootDevice = - if grubVersion == 1 then "/dev/sdb" else "/dev/vdb"; - virtualisation.qemu.diskInterface = - if grubVersion == 1 then "scsi" else "virtio"; + boot.loader.systemd-boot.enable = mkIf (bootLoader == "systemd-boot") true; - boot.loader.systemd-boot.enable = mkIf (bootLoader == "systemd-boot") true; + hardware.enableAllFirmware = mkForce false; - hardware.enableAllFirmware = mkForce false; + # The test cannot access the network, so any packages we + # need must be included in the VM. + system.extraDependencies = with pkgs; [ + desktop-file-utils + docbook5 + docbook_xsl_ns + libxml2.bin + libxslt.bin + nixos-artwork.wallpapers.simple-dark-gray-bottom + ntp + perlPackages.ListCompare + perlPackages.XMLLibXML + shared-mime-info + sudo + texinfo + unionfs-fuse + xorg.lndir - # The test cannot access the network, so any packages we - # need must be included in the VM. - system.extraDependencies = with pkgs; - [ sudo - libxml2.bin - libxslt.bin - desktop-file-utils - docbook5 - docbook_xsl_ns - unionfs-fuse - ntp - nixos-artwork.wallpapers.simple-dark-gray-bottom - perlPackages.XMLLibXML - perlPackages.ListCompare - shared-mime-info - texinfo - xorg.lndir + # add curl so that rather than seeing the test attempt to download + # curl's tarball, we see what it's trying to download + curl + ] + ++ optional (bootLoader == "grub" && grubVersion == 1) pkgs.grub + ++ optionals (bootLoader == "grub" && grubVersion == 2) [ + pkgs.grub2 + pkgs.grub2_efi + ]; - # add curl so that rather than seeing the test attempt to download - # curl's tarball, we see what it's trying to download - curl - ] - ++ optional (bootLoader == "grub" && grubVersion == 1) pkgs.grub - ++ optionals (bootLoader == "grub" && grubVersion == 2) [ pkgs.grub2 pkgs.grub2_efi ]; - - nix.binaryCaches = mkForce [ ]; - nix.extraOptions = - '' - hashed-mirrors = - connect-timeout = 1 - ''; - }; + nix.binaryCaches = mkForce [ ]; + nix.extraOptions = '' + hashed-mirrors = + connect-timeout = 1 + ''; + }; }; testScript = testScriptFun { inherit bootLoader createPartitions preBootCommands grubVersion grubDevice grubIdentifier grubUseEfi extraConfig - testCloneConfig; + testSpecialisationConfig; }; }; - makeLuksRootTest = name: luksFormatOpts: makeInstallerTest name - { createPartitions = '' - $machine->succeed( + makeLuksRootTest = name: luksFormatOpts: makeInstallerTest name { + createPartitions = '' + machine.succeed( "flock /dev/vda parted --script /dev/vda -- mklabel msdos" - . " mkpart primary ext2 1M 50MB" # /boot - . " mkpart primary linux-swap 50M 1024M" - . " mkpart primary 1024M -1s", # LUKS + + " mkpart primary ext2 1M 50MB" # /boot + + " mkpart primary linux-swap 50M 1024M" + + " mkpart primary 1024M -1s", # LUKS "udevadm settle", "mkswap /dev/vda2 -L swap", "swapon -L swap", @@ -328,77 +359,74 @@ let "mkfs.ext3 -L boot /dev/vda1", "mkdir -p /mnt/boot", "mount LABEL=boot /mnt/boot", - ); - ''; - extraConfig = '' - boot.kernelParams = lib.mkAfter [ "console=tty0" ]; - ''; - enableOCR = true; - preBootCommands = '' - $machine->start; - $machine->waitForText(qr/Passphrase for/); - $machine->sendChars("supersecret\n"); - ''; - }; + ) + ''; + extraConfig = '' + boot.kernelParams = lib.mkAfter [ "console=tty0" ]; + ''; + enableOCR = true; + preBootCommands = '' + machine.start() + machine.wait_for_text("Passphrase for") + machine.send_chars("supersecret\n") + ''; + }; # The (almost) simplest partitioning scheme: a swap partition and # one big filesystem partition. - simple-test-config = { createPartitions = - '' - $machine->succeed( - "flock /dev/vda parted --script /dev/vda -- mklabel msdos" - . " mkpart primary linux-swap 1M 1024M" - . " mkpart primary ext2 1024M -1s", - "udevadm settle", - "mkswap /dev/vda1 -L swap", - "swapon -L swap", - "mkfs.ext3 -L nixos /dev/vda2", - "mount LABEL=nixos /mnt", - ); - ''; - }; + simple-test-config = { + createPartitions = '' + machine.succeed( + "flock /dev/vda parted --script /dev/vda -- mklabel msdos" + + " mkpart primary linux-swap 1M 1024M" + + " mkpart primary ext2 1024M -1s", + "udevadm settle", + "mkswap /dev/vda1 -L swap", + "swapon -L swap", + "mkfs.ext3 -L nixos /dev/vda2", + "mount LABEL=nixos /mnt", + ) + ''; + }; - simple-uefi-grub-config = - { createPartitions = - '' - $machine->succeed( - "flock /dev/vda parted --script /dev/vda -- mklabel gpt" - . " mkpart ESP fat32 1M 50MiB" # /boot - . " set 1 boot on" - . " mkpart primary linux-swap 50MiB 1024MiB" - . " mkpart primary ext2 1024MiB -1MiB", # / - "udevadm settle", - "mkswap /dev/vda2 -L swap", - "swapon -L swap", - "mkfs.ext3 -L nixos /dev/vda3", - "mount LABEL=nixos /mnt", - "mkfs.vfat -n BOOT /dev/vda1", - "mkdir -p /mnt/boot", - "mount LABEL=BOOT /mnt/boot", - ); - ''; - bootLoader = "grub"; - grubUseEfi = true; - }; + simple-uefi-grub-config = { + createPartitions = '' + machine.succeed( + "flock /dev/vda parted --script /dev/vda -- mklabel gpt" + + " mkpart ESP fat32 1M 50MiB" # /boot + + " set 1 boot on" + + " mkpart primary linux-swap 50MiB 1024MiB" + + " mkpart primary ext2 1024MiB -1MiB", # / + "udevadm settle", + "mkswap /dev/vda2 -L swap", + "swapon -L swap", + "mkfs.ext3 -L nixos /dev/vda3", + "mount LABEL=nixos /mnt", + "mkfs.vfat -n BOOT /dev/vda1", + "mkdir -p /mnt/boot", + "mount LABEL=BOOT /mnt/boot", + ) + ''; + bootLoader = "grub"; + grubUseEfi = true; + }; - clone-test-extraconfig = { extraConfig = - '' - environment.systemPackages = [ pkgs.grub2 ]; - boot.loader.grub.configurationName = "Home"; - nesting.clone = [ - { - boot.loader.grub.configurationName = lib.mkForce "Work"; + specialisation-test-extraconfig = { + extraConfig = '' + environment.systemPackages = [ pkgs.grub2 ]; + boot.loader.grub.configurationName = "Home"; + specialisation.work.configuration = { + boot.loader.grub.configurationName = lib.mkForce "Work"; - environment.etc = { - "gitconfig".text = " - [core] - gitproxy = none for work.com - "; - }; - } - ]; - ''; - testCloneConfig = true; + environment.etc = { + "gitconfig".text = " + [core] + gitproxy = none for work.com + "; + }; + }; + ''; + testSpecialisationConfig = true; }; @@ -412,138 +440,129 @@ in { simple = makeInstallerTest "simple" simple-test-config; # Test cloned configurations with the simple grub configuration - simpleClone = makeInstallerTest "simpleClone" (simple-test-config // clone-test-extraconfig); + simpleSpecialised = makeInstallerTest "simpleSpecialised" (simple-test-config // specialisation-test-extraconfig); # Simple GPT/UEFI configuration using systemd-boot with 3 partitions: ESP, swap & root filesystem - simpleUefiSystemdBoot = makeInstallerTest "simpleUefiSystemdBoot" - { createPartitions = - '' - $machine->succeed( - "flock /dev/vda parted --script /dev/vda -- mklabel gpt" - . " mkpart ESP fat32 1M 50MiB" # /boot - . " set 1 boot on" - . " mkpart primary linux-swap 50MiB 1024MiB" - . " mkpart primary ext2 1024MiB -1MiB", # / - "udevadm settle", - "mkswap /dev/vda2 -L swap", - "swapon -L swap", - "mkfs.ext3 -L nixos /dev/vda3", - "mount LABEL=nixos /mnt", - "mkfs.vfat -n BOOT /dev/vda1", - "mkdir -p /mnt/boot", - "mount LABEL=BOOT /mnt/boot", - ); - ''; - bootLoader = "systemd-boot"; - }; + simpleUefiSystemdBoot = makeInstallerTest "simpleUefiSystemdBoot" { + createPartitions = '' + machine.succeed( + "flock /dev/vda parted --script /dev/vda -- mklabel gpt" + + " mkpart ESP fat32 1M 50MiB" # /boot + + " set 1 boot on" + + " mkpart primary linux-swap 50MiB 1024MiB" + + " mkpart primary ext2 1024MiB -1MiB", # / + "udevadm settle", + "mkswap /dev/vda2 -L swap", + "swapon -L swap", + "mkfs.ext3 -L nixos /dev/vda3", + "mount LABEL=nixos /mnt", + "mkfs.vfat -n BOOT /dev/vda1", + "mkdir -p /mnt/boot", + "mount LABEL=BOOT /mnt/boot", + ) + ''; + bootLoader = "systemd-boot"; + }; simpleUefiGrub = makeInstallerTest "simpleUefiGrub" simple-uefi-grub-config; # Test cloned configurations with the uefi grub configuration - simpleUefiGrubClone = makeInstallerTest "simpleUefiGrubClone" (simple-uefi-grub-config // clone-test-extraconfig); + simpleUefiGrubSpecialisation = makeInstallerTest "simpleUefiGrubSpecialisation" (simple-uefi-grub-config // specialisation-test-extraconfig); # Same as the previous, but now with a separate /boot partition. - separateBoot = makeInstallerTest "separateBoot" - { createPartitions = - '' - $machine->succeed( - "flock /dev/vda parted --script /dev/vda -- mklabel msdos" - . " mkpart primary ext2 1M 50MB" # /boot - . " mkpart primary linux-swap 50MB 1024M" - . " mkpart primary ext2 1024M -1s", # / - "udevadm settle", - "mkswap /dev/vda2 -L swap", - "swapon -L swap", - "mkfs.ext3 -L nixos /dev/vda3", - "mount LABEL=nixos /mnt", - "mkfs.ext3 -L boot /dev/vda1", - "mkdir -p /mnt/boot", - "mount LABEL=boot /mnt/boot", - ); - ''; - }; + separateBoot = makeInstallerTest "separateBoot" { + createPartitions = '' + machine.succeed( + "flock /dev/vda parted --script /dev/vda -- mklabel msdos" + + " mkpart primary ext2 1M 50MB" # /boot + + " mkpart primary linux-swap 50MB 1024M" + + " mkpart primary ext2 1024M -1s", # / + "udevadm settle", + "mkswap /dev/vda2 -L swap", + "swapon -L swap", + "mkfs.ext3 -L nixos /dev/vda3", + "mount LABEL=nixos /mnt", + "mkfs.ext3 -L boot /dev/vda1", + "mkdir -p /mnt/boot", + "mount LABEL=boot /mnt/boot", + ) + ''; + }; # Same as the previous, but with fat32 /boot. - separateBootFat = makeInstallerTest "separateBootFat" - { createPartitions = - '' - $machine->succeed( - "flock /dev/vda parted --script /dev/vda -- mklabel msdos" - . " mkpart primary ext2 1M 50MB" # /boot - . " mkpart primary linux-swap 50MB 1024M" - . " mkpart primary ext2 1024M -1s", # / - "udevadm settle", - "mkswap /dev/vda2 -L swap", - "swapon -L swap", - "mkfs.ext3 -L nixos /dev/vda3", - "mount LABEL=nixos /mnt", - "mkfs.vfat -n BOOT /dev/vda1", - "mkdir -p /mnt/boot", - "mount LABEL=BOOT /mnt/boot", - ); - ''; - }; + separateBootFat = makeInstallerTest "separateBootFat" { + createPartitions = '' + machine.succeed( + "flock /dev/vda parted --script /dev/vda -- mklabel msdos" + + " mkpart primary ext2 1M 50MB" # /boot + + " mkpart primary linux-swap 50MB 1024M" + + " mkpart primary ext2 1024M -1s", # / + "udevadm settle", + "mkswap /dev/vda2 -L swap", + "swapon -L swap", + "mkfs.ext3 -L nixos /dev/vda3", + "mount LABEL=nixos /mnt", + "mkfs.vfat -n BOOT /dev/vda1", + "mkdir -p /mnt/boot", + "mount LABEL=BOOT /mnt/boot", + ) + ''; + }; # zfs on / with swap - zfsroot = makeInstallerTest "zfs-root" - { - extraInstallerConfig = { - boot.supportedFilesystems = [ "zfs" ]; - }; - - extraConfig = '' - boot.supportedFilesystems = [ "zfs" ]; - - # Using by-uuid overrides the default of by-id, and is unique - # to the qemu disks, as they don't produce by-id paths for - # some reason. - boot.zfs.devNodes = "/dev/disk/by-uuid/"; - networking.hostId = "00000000"; - ''; - - createPartitions = - '' - $machine->succeed( - "flock /dev/vda parted --script /dev/vda -- mklabel msdos" - . " mkpart primary linux-swap 1M 1024M" - . " mkpart primary 1024M -1s", - "udevadm settle", - - "mkswap /dev/vda1 -L swap", - "swapon -L swap", - - "zpool create rpool /dev/vda2", - "zfs create -o mountpoint=legacy rpool/root", - "mount -t zfs rpool/root /mnt", - - "udevadm settle" - ); - ''; + zfsroot = makeInstallerTest "zfs-root" { + extraInstallerConfig = { + boot.supportedFilesystems = [ "zfs" ]; }; + extraConfig = '' + boot.supportedFilesystems = [ "zfs" ]; + + # Using by-uuid overrides the default of by-id, and is unique + # to the qemu disks, as they don't produce by-id paths for + # some reason. + boot.zfs.devNodes = "/dev/disk/by-uuid/"; + networking.hostId = "00000000"; + ''; + + createPartitions = '' + machine.succeed( + "flock /dev/vda parted --script /dev/vda -- mklabel msdos" + + " mkpart primary linux-swap 1M 1024M" + + " mkpart primary 1024M -1s", + "udevadm settle", + "mkswap /dev/vda1 -L swap", + "swapon -L swap", + "zpool create rpool /dev/vda2", + "zfs create -o mountpoint=legacy rpool/root", + "mount -t zfs rpool/root /mnt", + "udevadm settle", + ) + ''; + }; + # Create two physical LVM partitions combined into one volume group # that contains the logical swap and root partitions. - lvm = makeInstallerTest "lvm" - { createPartitions = - '' - $machine->succeed( - "flock /dev/vda parted --script /dev/vda -- mklabel msdos" - . " mkpart primary 1M 2048M" # PV1 - . " set 1 lvm on" - . " mkpart primary 2048M -1s" # PV2 - . " set 2 lvm on", - "udevadm settle", - "pvcreate /dev/vda1 /dev/vda2", - "vgcreate MyVolGroup /dev/vda1 /dev/vda2", - "lvcreate --size 1G --name swap MyVolGroup", - "lvcreate --size 2G --name nixos MyVolGroup", - "mkswap -f /dev/MyVolGroup/swap -L swap", - "swapon -L swap", - "mkfs.xfs -L nixos /dev/MyVolGroup/nixos", - "mount LABEL=nixos /mnt", - ); - ''; - }; + lvm = makeInstallerTest "lvm" { + createPartitions = '' + machine.succeed( + "flock /dev/vda parted --script /dev/vda -- mklabel msdos" + + " mkpart primary 1M 2048M" # PV1 + + " set 1 lvm on" + + " mkpart primary 2048M -1s" # PV2 + + " set 2 lvm on", + "udevadm settle", + "pvcreate /dev/vda1 /dev/vda2", + "vgcreate MyVolGroup /dev/vda1 /dev/vda2", + "lvcreate --size 1G --name swap MyVolGroup", + "lvcreate --size 2G --name nixos MyVolGroup", + "mkswap -f /dev/MyVolGroup/swap -L swap", + "swapon -L swap", + "mkfs.xfs -L nixos /dev/MyVolGroup/nixos", + "mount LABEL=nixos /mnt", + ) + ''; + }; # Boot off an encrypted root partition with the default LUKS header format luksroot = makeLuksRootTest "luksroot-format1" ""; @@ -557,14 +576,14 @@ in { # Test whether opening encrypted filesystem with keyfile # Checks for regression of missing cryptsetup, when no luks device without # keyfile is configured - encryptedFSWithKeyfile = makeInstallerTest "encryptedFSWithKeyfile" - { createPartitions = '' - $machine->succeed( + encryptedFSWithKeyfile = makeInstallerTest "encryptedFSWithKeyfile" { + createPartitions = '' + machine.succeed( "flock /dev/vda parted --script /dev/vda -- mklabel msdos" - . " mkpart primary ext2 1M 50MB" # /boot - . " mkpart primary linux-swap 50M 1024M" - . " mkpart primary 1024M 1280M" # LUKS with keyfile - . " mkpart primary 1280M -1s", + + " mkpart primary ext2 1M 50MB" # /boot + + " mkpart primary linux-swap 50M 1024M" + + " mkpart primary 1024M 1280M" # LUKS with keyfile + + " mkpart primary 1280M -1s", "udevadm settle", "mkswap /dev/vda2 -L swap", "swapon -L swap", @@ -579,89 +598,88 @@ in { "cryptsetup luksOpen --key-file /mnt/keyfile /dev/vda3 crypt", "mkfs.ext3 -L test /dev/mapper/crypt", "cryptsetup luksClose crypt", - "mkdir -p /mnt/test" - ); - ''; - extraConfig = '' - fileSystems."/test" = - { device = "/dev/disk/by-label/test"; - fsType = "ext3"; - encrypted.enable = true; - encrypted.blkDev = "/dev/vda3"; - encrypted.label = "crypt"; - encrypted.keyFile = "/mnt-root/keyfile"; - }; - ''; - }; + "mkdir -p /mnt/test", + ) + ''; + extraConfig = '' + fileSystems."/test" = { + device = "/dev/disk/by-label/test"; + fsType = "ext3"; + encrypted.enable = true; + encrypted.blkDev = "/dev/vda3"; + encrypted.label = "crypt"; + encrypted.keyFile = "/mnt-root/keyfile"; + }; + ''; + }; - - swraid = makeInstallerTest "swraid" - { createPartitions = - '' - $machine->succeed( - "flock /dev/vda parted --script /dev/vda --" - . " mklabel msdos" - . " mkpart primary ext2 1M 100MB" # /boot - . " mkpart extended 100M -1s" - . " mkpart logical 102M 2102M" # md0 (root), first device - . " mkpart logical 2103M 4103M" # md0 (root), second device - . " mkpart logical 4104M 4360M" # md1 (swap), first device - . " mkpart logical 4361M 4617M", # md1 (swap), second device - "udevadm settle", - "ls -l /dev/vda* >&2", - "cat /proc/partitions >&2", - "udevadm control --stop-exec-queue", - "mdadm --create --force /dev/md0 --metadata 1.2 --level=raid1 --raid-devices=2 /dev/vda5 /dev/vda6", - "mdadm --create --force /dev/md1 --metadata 1.2 --level=raid1 --raid-devices=2 /dev/vda7 /dev/vda8", - "udevadm control --start-exec-queue", - "udevadm settle", - "mkswap -f /dev/md1 -L swap", - "swapon -L swap", - "mkfs.ext3 -L nixos /dev/md0", - "mount LABEL=nixos /mnt", - "mkfs.ext3 -L boot /dev/vda1", - "mkdir /mnt/boot", - "mount LABEL=boot /mnt/boot", - "udevadm settle", - ); - ''; - preBootCommands = '' - $machine->start; - $machine->fail("dmesg | grep 'immediate safe mode'"); - ''; - }; + swraid = makeInstallerTest "swraid" { + createPartitions = '' + machine.succeed( + "flock /dev/vda parted --script /dev/vda --" + + " mklabel msdos" + + " mkpart primary ext2 1M 100MB" # /boot + + " mkpart extended 100M -1s" + + " mkpart logical 102M 2102M" # md0 (root), first device + + " mkpart logical 2103M 4103M" # md0 (root), second device + + " mkpart logical 4104M 4360M" # md1 (swap), first device + + " mkpart logical 4361M 4617M", # md1 (swap), second device + "udevadm settle", + "ls -l /dev/vda* >&2", + "cat /proc/partitions >&2", + "udevadm control --stop-exec-queue", + "mdadm --create --force /dev/md0 --metadata 1.2 --level=raid1 " + + "--raid-devices=2 /dev/vda5 /dev/vda6", + "mdadm --create --force /dev/md1 --metadata 1.2 --level=raid1 " + + "--raid-devices=2 /dev/vda7 /dev/vda8", + "udevadm control --start-exec-queue", + "udevadm settle", + "mkswap -f /dev/md1 -L swap", + "swapon -L swap", + "mkfs.ext3 -L nixos /dev/md0", + "mount LABEL=nixos /mnt", + "mkfs.ext3 -L boot /dev/vda1", + "mkdir /mnt/boot", + "mount LABEL=boot /mnt/boot", + "udevadm settle", + ) + ''; + preBootCommands = '' + machine.start() + machine.fail("dmesg | grep 'immediate safe mode'") + ''; + }; # Test a basic install using GRUB 1. - grub1 = makeInstallerTest "grub1" - { createPartitions = - '' - $machine->succeed( - "flock /dev/sda parted --script /dev/sda -- mklabel msdos" - . " mkpart primary linux-swap 1M 1024M" - . " mkpart primary ext2 1024M -1s", - "udevadm settle", - "mkswap /dev/sda1 -L swap", - "swapon -L swap", - "mkfs.ext3 -L nixos /dev/sda2", - "mount LABEL=nixos /mnt", - "mkdir -p /mnt/tmp", - ); - ''; - grubVersion = 1; - grubDevice = "/dev/sda"; - }; + grub1 = makeInstallerTest "grub1" { + createPartitions = '' + machine.succeed( + "flock /dev/sda parted --script /dev/sda -- mklabel msdos" + + " mkpart primary linux-swap 1M 1024M" + + " mkpart primary ext2 1024M -1s", + "udevadm settle", + "mkswap /dev/sda1 -L swap", + "swapon -L swap", + "mkfs.ext3 -L nixos /dev/sda2", + "mount LABEL=nixos /mnt", + "mkdir -p /mnt/tmp", + ) + ''; + grubVersion = 1; + grubDevice = "/dev/sda"; + }; # Test using labels to identify volumes in grub simpleLabels = makeInstallerTest "simpleLabels" { createPartitions = '' - $machine->succeed( - "sgdisk -Z /dev/vda", - "sgdisk -n 1:0:+1M -n 2:0:+1G -N 3 -t 1:ef02 -t 2:8200 -t 3:8300 -c 3:root /dev/vda", - "mkswap /dev/vda2 -L swap", - "swapon -L swap", - "mkfs.ext4 -L root /dev/vda3", - "mount LABEL=root /mnt", - ); + machine.succeed( + "sgdisk -Z /dev/vda", + "sgdisk -n 1:0:+1M -n 2:0:+1G -N 3 -t 1:ef02 -t 2:8200 -t 3:8300 -c 3:root /dev/vda", + "mkswap /dev/vda2 -L swap", + "swapon -L swap", + "mkfs.ext4 -L root /dev/vda3", + "mount LABEL=root /mnt", + ) ''; grubIdentifier = "label"; }; @@ -670,22 +688,23 @@ in { # TODO: Fix udev so the symlinks are unneeded in /dev/disks simpleProvided = makeInstallerTest "simpleProvided" { createPartitions = '' - my $UUID = "\$(blkid -s UUID -o value /dev/vda2)"; - $machine->succeed( - "sgdisk -Z /dev/vda", - "sgdisk -n 1:0:+1M -n 2:0:+100M -n 3:0:+1G -N 4 -t 1:ef02 -t 2:8300 -t 3:8200 -t 4:8300 -c 2:boot -c 4:root /dev/vda", - "mkswap /dev/vda3 -L swap", - "swapon -L swap", - "mkfs.ext4 -L boot /dev/vda2", - "mkfs.ext4 -L root /dev/vda4", - ); - $machine->execute("ln -s ../../vda2 /dev/disk/by-uuid/$UUID"); - $machine->execute("ln -s ../../vda4 /dev/disk/by-label/root"); - $machine->succeed( - "mount /dev/disk/by-label/root /mnt", - "mkdir /mnt/boot", - "mount /dev/disk/by-uuid/$UUID /mnt/boot" - ); + uuid = "$(blkid -s UUID -o value /dev/vda2)" + machine.succeed( + "sgdisk -Z /dev/vda", + "sgdisk -n 1:0:+1M -n 2:0:+100M -n 3:0:+1G -N 4 -t 1:ef02 -t 2:8300 " + + "-t 3:8200 -t 4:8300 -c 2:boot -c 4:root /dev/vda", + "mkswap /dev/vda3 -L swap", + "swapon -L swap", + "mkfs.ext4 -L boot /dev/vda2", + "mkfs.ext4 -L root /dev/vda4", + ) + machine.execute(f"ln -s ../../vda2 /dev/disk/by-uuid/{uuid}") + machine.execute("ln -s ../../vda4 /dev/disk/by-label/root") + machine.succeed( + "mount /dev/disk/by-label/root /mnt", + "mkdir /mnt/boot", + f"mount /dev/disk/by-uuid/{uuid} /mnt/boot", + ) ''; grubIdentifier = "provided"; }; @@ -693,61 +712,62 @@ in { # Simple btrfs grub testing btrfsSimple = makeInstallerTest "btrfsSimple" { createPartitions = '' - $machine->succeed( - "sgdisk -Z /dev/vda", - "sgdisk -n 1:0:+1M -n 2:0:+1G -N 3 -t 1:ef02 -t 2:8200 -t 3:8300 -c 3:root /dev/vda", - "mkswap /dev/vda2 -L swap", - "swapon -L swap", - "mkfs.btrfs -L root /dev/vda3", - "mount LABEL=root /mnt", - ); + machine.succeed( + "sgdisk -Z /dev/vda", + "sgdisk -n 1:0:+1M -n 2:0:+1G -N 3 -t 1:ef02 -t 2:8200 -t 3:8300 -c 3:root /dev/vda", + "mkswap /dev/vda2 -L swap", + "swapon -L swap", + "mkfs.btrfs -L root /dev/vda3", + "mount LABEL=root /mnt", + ) ''; }; # Test to see if we can detect /boot and /nix on subvolumes btrfsSubvols = makeInstallerTest "btrfsSubvols" { createPartitions = '' - $machine->succeed( - "sgdisk -Z /dev/vda", - "sgdisk -n 1:0:+1M -n 2:0:+1G -N 3 -t 1:ef02 -t 2:8200 -t 3:8300 -c 3:root /dev/vda", - "mkswap /dev/vda2 -L swap", - "swapon -L swap", - "mkfs.btrfs -L root /dev/vda3", - "btrfs device scan", - "mount LABEL=root /mnt", - "btrfs subvol create /mnt/boot", - "btrfs subvol create /mnt/nixos", - "btrfs subvol create /mnt/nixos/default", - "umount /mnt", - "mount -o defaults,subvol=nixos/default LABEL=root /mnt", - "mkdir /mnt/boot", - "mount -o defaults,subvol=boot LABEL=root /mnt/boot", - ); + machine.succeed( + "sgdisk -Z /dev/vda", + "sgdisk -n 1:0:+1M -n 2:0:+1G -N 3 -t 1:ef02 -t 2:8200 -t 3:8300 -c 3:root /dev/vda", + "mkswap /dev/vda2 -L swap", + "swapon -L swap", + "mkfs.btrfs -L root /dev/vda3", + "btrfs device scan", + "mount LABEL=root /mnt", + "btrfs subvol create /mnt/boot", + "btrfs subvol create /mnt/nixos", + "btrfs subvol create /mnt/nixos/default", + "umount /mnt", + "mount -o defaults,subvol=nixos/default LABEL=root /mnt", + "mkdir /mnt/boot", + "mount -o defaults,subvol=boot LABEL=root /mnt/boot", + ) ''; }; # Test to see if we can detect default and aux subvolumes correctly btrfsSubvolDefault = makeInstallerTest "btrfsSubvolDefault" { createPartitions = '' - $machine->succeed( - "sgdisk -Z /dev/vda", - "sgdisk -n 1:0:+1M -n 2:0:+1G -N 3 -t 1:ef02 -t 2:8200 -t 3:8300 -c 3:root /dev/vda", - "mkswap /dev/vda2 -L swap", - "swapon -L swap", - "mkfs.btrfs -L root /dev/vda3", - "btrfs device scan", - "mount LABEL=root /mnt", - "btrfs subvol create /mnt/badpath", - "btrfs subvol create /mnt/badpath/boot", - "btrfs subvol create /mnt/nixos", - "btrfs subvol set-default \$(btrfs subvol list /mnt | grep 'nixos' | awk '{print \$2}') /mnt", - "umount /mnt", - "mount -o defaults LABEL=root /mnt", - "mkdir -p /mnt/badpath/boot", # Help ensure the detection mechanism is actually looking up subvolumes - "mkdir /mnt/boot", - "mount -o defaults,subvol=badpath/boot LABEL=root /mnt/boot", - ); + machine.succeed( + "sgdisk -Z /dev/vda", + "sgdisk -n 1:0:+1M -n 2:0:+1G -N 3 -t 1:ef02 -t 2:8200 -t 3:8300 -c 3:root /dev/vda", + "mkswap /dev/vda2 -L swap", + "swapon -L swap", + "mkfs.btrfs -L root /dev/vda3", + "btrfs device scan", + "mount LABEL=root /mnt", + "btrfs subvol create /mnt/badpath", + "btrfs subvol create /mnt/badpath/boot", + "btrfs subvol create /mnt/nixos", + "btrfs subvol set-default " + + "$(btrfs subvol list /mnt | grep 'nixos' | awk '{print \$2}') /mnt", + "umount /mnt", + "mount -o defaults LABEL=root /mnt", + "mkdir -p /mnt/badpath/boot", # Help ensure the detection mechanism + # is actually looking up subvolumes + "mkdir /mnt/boot", + "mount -o defaults,subvol=badpath/boot LABEL=root /mnt/boot", + ) ''; }; - } diff --git a/nixos/tests/iodine.nix b/nixos/tests/iodine.nix new file mode 100644 index 00000000000..41fb2e7778d --- /dev/null +++ b/nixos/tests/iodine.nix @@ -0,0 +1,64 @@ +import ./make-test-python.nix ( + { pkgs, ... }: let + domain = "whatever.example.com"; + password = "false;foo;exit;withspecialcharacters"; + in + { + name = "iodine"; + nodes = { + server = + { ... }: + + { + networking.firewall = { + allowedUDPPorts = [ 53 ]; + trustedInterfaces = [ "dns0" ]; + }; + boot.kernel.sysctl = { + "net.ipv4.ip_forward" = 1; + "net.ipv6.ip_forward" = 1; + }; + + services.iodine.server = { + enable = true; + ip = "10.53.53.1/24"; + passwordFile = "${builtins.toFile "password" password}"; + inherit domain; + }; + + # test resource: accessible only via tunnel + services.openssh = { + enable = true; + openFirewall = false; + }; + }; + + client = + { ... }: { + services.iodine.clients.testClient = { + # test that ProtectHome is "read-only" + passwordFile = "/root/pw"; + relay = "server"; + server = domain; + }; + systemd.tmpfiles.rules = [ + "f /root/pw 0666 root root - ${password}" + ]; + environment.systemPackages = [ + pkgs.nagiosPluginsOfficial + ]; + }; + + }; + + testScript = '' + start_all() + + server.wait_for_unit("sshd") + server.wait_for_unit("iodined") + client.wait_for_unit("iodine-testClient") + + client.succeed("check_ssh -H 10.53.53.1") + ''; + } +) diff --git a/nixos/tests/jirafeau.nix b/nixos/tests/jirafeau.nix new file mode 100644 index 00000000000..0f5af7f718a --- /dev/null +++ b/nixos/tests/jirafeau.nix @@ -0,0 +1,22 @@ +import ./make-test-python.nix ({ lib, ... }: + +with lib; + +{ + name = "jirafeau"; + meta.maintainers = with maintainers; [ davidtwco ]; + + nodes.machine = { pkgs, ... }: { + services.jirafeau = { + enable = true; + }; + }; + + testScript = '' + machine.start() + machine.wait_for_unit("phpfpm-jirafeau.service") + machine.wait_for_unit("nginx.service") + machine.wait_for_open_port(80) + machine.succeed("curl -sSfL http://localhost/ | grep 'Jirafeau'") + ''; +}) diff --git a/nixos/tests/k3s.nix b/nixos/tests/k3s.nix new file mode 100644 index 00000000000..5bda6f493f0 --- /dev/null +++ b/nixos/tests/k3s.nix @@ -0,0 +1,78 @@ +import ./make-test-python.nix ({ pkgs, ... }: + +let + # A suitable k3s pause image, also used for the test pod + pauseImage = pkgs.dockerTools.buildImage { + name = "test.local/pause"; + tag = "local"; + contents = with pkgs; [ tini coreutils busybox ]; + config.Entrypoint = [ "/bin/tini" "--" "/bin/sleep" "inf" ]; + }; + testPodYaml = pkgs.writeText "test.yml" '' + # Don't use the default service account because there's a race where it may + # not be created yet; make our own instead. + apiVersion: v1 + kind: ServiceAccount + metadata: + name: test + --- + apiVersion: v1 + kind: Pod + metadata: + name: test + spec: + serviceAccountName: test + containers: + - name: test + image: test.local/pause:local + imagePullPolicy: Never + command: ["sh", "-c", "sleep inf"] + ''; +in +{ + name = "k3s"; + meta = with pkgs.stdenv.lib.maintainers; { + maintainers = [ euank ]; + }; + + nodes = { + k3s = + { pkgs, ... }: { + environment.systemPackages = [ pkgs.k3s pkgs.gzip ]; + + # k3s uses enough resources the default vm fails. + virtualisation.memorySize = pkgs.lib.mkDefault 1536; + virtualisation.diskSize = pkgs.lib.mkDefault 4096; + + services.k3s.enable = true; + services.k3s.role = "server"; + services.k3s.package = pkgs.k3s; + # Slightly reduce resource usage + services.k3s.extraFlags = "--no-deploy coredns,servicelb,traefik,local-storage,metrics-server --pause-image test.local/pause:local"; + + users.users = { + noprivs = { + isNormalUser = true; + description = "Can't access k3s by default"; + password = "*"; + }; + }; + }; + }; + + testScript = '' + start_all() + + k3s.wait_for_unit("k3s") + k3s.succeed("k3s kubectl cluster-info") + k3s.fail("sudo -u noprivs k3s kubectl cluster-info") + # k3s.succeed("k3s check-config") # fails with the current nixos kernel config, uncomment once this passes + + k3s.succeed( + "zcat ${pauseImage} | k3s ctr image import -" + ) + + k3s.succeed("k3s kubectl apply -f ${testPodYaml}") + k3s.succeed("k3s kubectl wait --for 'condition=Ready' pod/test") + ''; +}) diff --git a/nixos/tests/kafka.nix b/nixos/tests/kafka.nix index 48ca98da8fa..d29c802b47b 100644 --- a/nixos/tests/kafka.nix +++ b/nixos/tests/kafka.nix @@ -3,11 +3,10 @@ pkgs ? import ../.. { inherit system config; } }: -with import ../lib/testing.nix { inherit system pkgs; }; with pkgs.lib; let - makeKafkaTest = name: kafkaPackage: (makeTest { + makeKafkaTest = name: kafkaPackage: (import ./make-test-python.nix ({ inherit name; meta = with pkgs.stdenv.lib.maintainers; { maintainers = [ nequissimus ]; @@ -45,24 +44,40 @@ let }; testScript = '' - startAll; + start_all() - $zookeeper1->waitForUnit("default.target"); - $zookeeper1->waitForUnit("zookeeper.service"); - $zookeeper1->waitForOpenPort(2181); + zookeeper1.wait_for_unit("default.target") + zookeeper1.wait_for_unit("zookeeper.service") + zookeeper1.wait_for_open_port(2181) - $kafka->waitForUnit("default.target"); - $kafka->waitForUnit("apache-kafka.service"); - $kafka->waitForOpenPort(9092); + kafka.wait_for_unit("default.target") + kafka.wait_for_unit("apache-kafka.service") + kafka.wait_for_open_port(9092) - $kafka->waitUntilSucceeds("${kafkaPackage}/bin/kafka-topics.sh --create --zookeeper zookeeper1:2181 --partitions 1 --replication-factor 1 --topic testtopic"); - $kafka->mustSucceed("echo 'test 1' | ${kafkaPackage}/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic testtopic"); + kafka.wait_until_succeeds( + "${kafkaPackage}/bin/kafka-topics.sh --create " + + "--zookeeper zookeeper1:2181 --partitions 1 " + + "--replication-factor 1 --topic testtopic" + ) + kafka.succeed( + "echo 'test 1' | " + + "${kafkaPackage}/bin/kafka-console-producer.sh " + + "--broker-list localhost:9092 --topic testtopic" + ) '' + (if name == "kafka_0_9" then '' - $kafka->mustSucceed("${kafkaPackage}/bin/kafka-console-consumer.sh --zookeeper zookeeper1:2181 --topic testtopic --from-beginning --max-messages 1 | grep 'test 1'"); + assert "test 1" in kafka.succeed( + "${kafkaPackage}/bin/kafka-console-consumer.sh " + + "--zookeeper zookeeper1:2181 --topic testtopic " + + "--from-beginning --max-messages 1" + ) '' else '' - $kafka->mustSucceed("${kafkaPackage}/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic testtopic --from-beginning --max-messages 1 | grep 'test 1'"); + assert "test 1" in kafka.succeed( + "${kafkaPackage}/bin/kafka-console-consumer.sh " + + "--bootstrap-server localhost:9092 --topic testtopic " + + "--from-beginning --max-messages 1" + ) ''); - }); + }) { inherit system; }); in with pkgs; { kafka_0_9 = makeKafkaTest "kafka_0_9" apacheKafka_0_9; @@ -74,4 +89,5 @@ in with pkgs; { kafka_2_1 = makeKafkaTest "kafka_2_1" apacheKafka_2_1; kafka_2_2 = makeKafkaTest "kafka_2_2" apacheKafka_2_2; kafka_2_3 = makeKafkaTest "kafka_2_3" apacheKafka_2_3; + kafka_2_4 = makeKafkaTest "kafka_2_4" apacheKafka_2_4; } diff --git a/nixos/tests/keepalived.nix b/nixos/tests/keepalived.nix new file mode 100644 index 00000000000..d0bf9d46520 --- /dev/null +++ b/nixos/tests/keepalived.nix @@ -0,0 +1,42 @@ +import ./make-test-python.nix ({ pkgs, ... }: { + name = "keepalived"; + + nodes = { + node1 = { pkgs, ... }: { + networking.firewall.extraCommands = "iptables -A INPUT -p vrrp -j ACCEPT"; + services.keepalived.enable = true; + services.keepalived.vrrpInstances.test = { + interface = "eth1"; + state = "MASTER"; + priority = 50; + virtualIps = [{ addr = "192.168.1.200"; }]; + virtualRouterId = 1; + }; + environment.systemPackages = [ pkgs.tcpdump ]; + }; + node2 = { pkgs, ... }: { + networking.firewall.extraCommands = "iptables -A INPUT -p vrrp -j ACCEPT"; + services.keepalived.enable = true; + services.keepalived.vrrpInstances.test = { + interface = "eth1"; + state = "MASTER"; + priority = 100; + virtualIps = [{ addr = "192.168.1.200"; }]; + virtualRouterId = 1; + }; + environment.systemPackages = [ pkgs.tcpdump ]; + }; + }; + + testScript = '' + # wait for boot time delay to pass + for node in [node1, node2]: + node.wait_until_succeeds( + "systemctl show -p LastTriggerUSecMonotonic keepalived-boot-delay.timer | grep -vq 'LastTriggerUSecMonotonic=0'" + ) + node.wait_for_unit("keepalived") + node2.wait_until_succeeds("ip addr show dev eth1 | grep -q 192.168.1.200") + node1.fail("ip addr show dev eth1 | grep -q 192.168.1.200") + node1.succeed("ping -c1 192.168.1.200") + ''; +}) diff --git a/nixos/tests/kexec.nix b/nixos/tests/kexec.nix index b13b4131091..ec0cd9796b0 100644 --- a/nixos/tests/kexec.nix +++ b/nixos/tests/kexec.nix @@ -1,9 +1,15 @@ # Test whether fast reboots via kexec work. -import ./make-test.nix ({ pkgs, ...} : { +import ./make-test-python.nix ({ pkgs, lib, ...} : { name = "kexec"; - meta = with pkgs.stdenv.lib.maintainers; { + meta = with lib.maintainers; { maintainers = [ eelco ]; + # Currently hangs forever; last output is: + # machine # [ 10.239914] dhcpcd[707]: eth0: adding default route via fe80::2 + # machine: waiting for the VM to finish booting + # machine # Cannot find the ESP partition mount point. + # machine # [ 28.681197] nscd[692]: 692 checking for monitored file `/etc/netgroup': No such file or directory + broken = true; }; machine = { ... }: @@ -11,9 +17,9 @@ import ./make-test.nix ({ pkgs, ...} : { testScript = '' - $machine->waitForUnit("multi-user.target"); - $machine->execute("systemctl kexec &"); - $machine->{connected} = 0; - $machine->waitForUnit("multi-user.target"); + machine.wait_for_unit("multi-user.target") + machine.execute("systemctl kexec &") + machine.connected = False + machine.wait_for_unit("multi-user.target") ''; }) diff --git a/nixos/tests/keymap.nix b/nixos/tests/keymap.nix index 2b4c1ab7b05..09d5d2a6c9e 100644 --- a/nixos/tests/keymap.nix +++ b/nixos/tests/keymap.nix @@ -3,14 +3,13 @@ pkgs ? import ../.. { inherit system config; } }: -with import ../lib/testing.nix { inherit system pkgs; }; +with import ../lib/testing-python.nix { inherit system pkgs; }; let readyFile = "/tmp/readerReady"; resultFile = "/tmp/readerResult"; testReader = pkgs.writeScript "test-input-reader" '' - #!${pkgs.stdenv.shell} rm -f ${resultFile} ${resultFile}.tmp logger "testReader: START: Waiting for $1 characters, expecting '$2'." touch ${readyFile} @@ -27,56 +26,75 @@ let ''; - mkKeyboardTest = layout: { extraConfig ? {}, tests }: with pkgs.lib; let - combinedTests = foldAttrs (acc: val: acc ++ val) [] (builtins.attrValues tests); - perlStr = val: "'${escape ["'" "\\"] val}'"; - lq = length combinedTests.qwerty; - le = length combinedTests.expect; - msg = "length mismatch between qwerty (${toString lq}) and expect (${toString le}) lists!"; - send = concatMapStringsSep ", " perlStr combinedTests.qwerty; - expect = if (lq == le) then concatStrings combinedTests.expect else throw msg; - - in makeTest { + mkKeyboardTest = layout: { extraConfig ? {}, tests }: with pkgs.lib; makeTest { name = "keymap-${layout}"; + machine.console.keyMap = mkOverride 900 layout; machine.services.xserver.desktopManager.xterm.enable = false; - machine.i18n.consoleKeyMap = mkOverride 900 layout; machine.services.xserver.layout = mkOverride 900 layout; machine.imports = [ ./common/x11.nix extraConfig ]; testScript = '' + import json + import shlex - sub mkTest ($$) { - my ($desc, $cmd) = @_; - subtest $desc, sub { - # prepare and start testReader - $machine->execute("rm -f ${readyFile} ${resultFile}"); - $machine->succeed("$cmd ${testReader} ${toString le} ".q(${escapeShellArg expect} & )); + def run_test_case(cmd, xorg_keymap, test_case_name, inputs, expected): + with subtest(test_case_name): + assert len(inputs) == len(expected) + machine.execute("rm -f ${readyFile} ${resultFile}") - if ($desc eq "Xorg keymap") { - # make sure the xterm window is open and has focus - $machine->waitForWindow(qr/testterm/); - $machine->waitUntilSucceeds("${pkgs.xdotool}/bin/xdotool search --sync --onlyvisible --class testterm windowfocus --sync"); - } + # set up process that expects all the keys to be entered + machine.succeed( + "{} {} {} {} &".format( + cmd, + "${testReader}", + len(inputs), + shlex.quote("".join(expected)), + ) + ) - # wait for reader to be ready - $machine->waitForFile("${readyFile}"); - $machine->sleep(1); + if xorg_keymap: + # make sure the xterm window is open and has focus + machine.wait_for_window("testterm") + machine.wait_until_succeeds( + "${pkgs.xdotool}/bin/xdotool search --sync --onlyvisible " + "--class testterm windowfocus --sync" + ) - # send all keys - foreach ((${send})) { $machine->sendKeys($_); }; + # wait for reader to be ready + machine.wait_for_file("${readyFile}") + machine.sleep(1) - # wait for result and check - $machine->waitForFile("${resultFile}"); - $machine->succeed("grep -q 'PASS:' ${resultFile}"); - }; - }; + # send all keys + for key in inputs: + machine.send_key(key) - $machine->waitForX; + # wait for result and check + machine.wait_for_file("${resultFile}") + machine.succeed("grep -q 'PASS:' ${resultFile}") - mkTest "VT keymap", "openvt -sw --"; - mkTest "Xorg keymap", "DISPLAY=:0 xterm -title testterm -class testterm -fullscreen -e"; + + with open("${pkgs.writeText "tests.json" (builtins.toJSON tests)}") as json_file: + tests = json.load(json_file) + + keymap_environments = { + "VT Keymap": "openvt -sw --", + "Xorg Keymap": "DISPLAY=:0 xterm -title testterm -class testterm -fullscreen -e", + } + + machine.wait_for_x() + + for keymap_env_name, command in keymap_environments.items(): + with subtest(keymap_env_name): + for test_case_name, test_data in tests.items(): + run_test_case( + command, + False, + test_case_name, + test_data["qwerty"], + test_data["expect"], + ) ''; }; @@ -89,7 +107,7 @@ in pkgs.lib.mapAttrs mkKeyboardTest { altgr.expect = [ "~" "#" "{" "[" "|" ]; }; - extraConfig.i18n.consoleKeyMap = "azerty/fr"; + extraConfig.console.keyMap = "azerty/fr"; extraConfig.services.xserver.layout = "fr"; }; @@ -99,7 +117,7 @@ in pkgs.lib.mapAttrs mkKeyboardTest { homerow.expect = [ "a" "r" "s" "t" "n" "e" "i" "o" ]; }; - extraConfig.i18n.consoleKeyMap = "colemak/colemak"; + extraConfig.console.keyMap = "colemak/colemak"; extraConfig.services.xserver.layout = "us"; extraConfig.services.xserver.xkbVariant = "colemak"; }; @@ -151,7 +169,7 @@ in pkgs.lib.mapAttrs mkKeyboardTest { altgr.expect = [ "@" "|" "{" "[" "]" "}" ]; }; - extraConfig.i18n.consoleKeyMap = "de"; + extraConfig.console.keyMap = "de"; extraConfig.services.xserver.layout = "de"; }; } diff --git a/nixos/tests/knot.nix b/nixos/tests/knot.nix index 0588cf86ac0..8bab917a351 100644 --- a/nixos/tests/knot.nix +++ b/nixos/tests/knot.nix @@ -28,6 +28,13 @@ let name = "knot-zones"; paths = [ exampleZone delegatedZone ]; }; + # DO NOT USE pkgs.writeText IN PRODUCTION. This put secrets in the nix store! + tsigFile = pkgs.writeText "tsig.conf" '' + key: + - id: slave_key + algorithm: hmac-sha256 + secret: zOYgOgnzx3TGe5J5I/0kxd7gTcxXhLYMEq3Ek3fY37s= + ''; in { name = "knot"; meta = with pkgs.stdenv.lib.maintainers; { @@ -48,6 +55,7 @@ in { }; services.knot.enable = true; services.knot.extraArgs = [ "-v" ]; + services.knot.keyFiles = [ tsigFile ]; services.knot.extraConfig = '' server: listen: 0.0.0.0@53 @@ -56,6 +64,7 @@ in { acl: - id: slave_acl address: 192.168.0.2 + key: slave_key action: transfer remote: @@ -103,6 +112,7 @@ in { ]; }; services.knot.enable = true; + services.knot.keyFiles = [ tsigFile ]; services.knot.extraArgs = [ "-v" ]; services.knot.extraConfig = '' server: @@ -117,6 +127,7 @@ in { remote: - id: master address: 192.168.0.1@53 + key: slave_key template: - id: default @@ -155,10 +166,10 @@ in { ]; }; environment.systemPackages = [ pkgs.knot-dns ]; - }; + }; }; - testScript = { nodes, ... }: let + testScript = { nodes, ... }: let master4 = (lib.head nodes.master.config.networking.interfaces.eth1.ipv4.addresses).address; master6 = (lib.head nodes.master.config.networking.interfaces.eth1.ipv6.addresses).address; diff --git a/nixos/tests/krb5/deprecated-config.nix b/nixos/tests/krb5/deprecated-config.nix index 7d7926309c9..be6ebce9e05 100644 --- a/nixos/tests/krb5/deprecated-config.nix +++ b/nixos/tests/krb5/deprecated-config.nix @@ -1,7 +1,7 @@ # Verifies that the configuration suggested in deprecated example values # will result in the expected output. -import ../make-test.nix ({ pkgs, ...} : { +import ../make-test-python.nix ({ pkgs, ...} : { name = "krb5-with-deprecated-config"; meta = with pkgs.stdenv.lib.maintainers; { maintainers = [ eqyiel ]; @@ -43,6 +43,8 @@ import ../make-test.nix ({ pkgs, ...} : { ''; in '' - $machine->succeed("diff /etc/krb5.conf ${snapshot}"); + machine.succeed( + "diff /etc/krb5.conf ${snapshot}" + ) ''; }) diff --git a/nixos/tests/krb5/example-config.nix b/nixos/tests/krb5/example-config.nix index f01cf6988ee..be195b51393 100644 --- a/nixos/tests/krb5/example-config.nix +++ b/nixos/tests/krb5/example-config.nix @@ -1,7 +1,7 @@ # Verifies that the configuration suggested in (non-deprecated) example values # will result in the expected output. -import ../make-test.nix ({ pkgs, ...} : { +import ../make-test-python.nix ({ pkgs, ...} : { name = "krb5-with-example-config"; meta = with pkgs.stdenv.lib.maintainers; { maintainers = [ eqyiel ]; @@ -101,6 +101,8 @@ import ../make-test.nix ({ pkgs, ...} : { default = SYSLOG:NOTICE ''; in '' - $machine->succeed("diff /etc/krb5.conf ${snapshot}"); + machine.succeed( + "diff /etc/krb5.conf ${snapshot}" + ) ''; }) diff --git a/nixos/tests/kubernetes/dns.nix b/nixos/tests/kubernetes/dns.nix index 46bcb01a526..638942e1540 100644 --- a/nixos/tests/kubernetes/dns.nix +++ b/nixos/tests/kubernetes/dns.nix @@ -3,8 +3,6 @@ with import ./base.nix { inherit system; }; let domain = "my.zyx"; - certs = import ./certs.nix { externalDomain = domain; kubelets = [ "machine1" "machine2" ]; }; - redisPod = pkgs.writeText "redis-pod.json" (builtins.toJSON { kind = "Pod"; apiVersion = "v1"; diff --git a/nixos/tests/limesurvey.nix b/nixos/tests/limesurvey.nix index ad66ada106b..7228fcb8331 100644 --- a/nixos/tests/limesurvey.nix +++ b/nixos/tests/limesurvey.nix @@ -1,21 +1,26 @@ -import ./make-test.nix ({ pkgs, ... }: { +import ./make-test-python.nix ({ pkgs, ... }: { name = "limesurvey"; meta.maintainers = [ pkgs.stdenv.lib.maintainers.aanderse ]; - machine = - { ... }: - { services.limesurvey.enable = true; - services.limesurvey.virtualHost.hostName = "example.local"; - services.limesurvey.virtualHost.adminAddr = "root@example.local"; - - # limesurvey won't work without a dot in the hostname - networking.hosts."127.0.0.1" = [ "example.local" ]; + machine = { ... }: { + services.limesurvey = { + enable = true; + virtualHost = { + hostName = "example.local"; + adminAddr = "root@example.local"; + }; }; - testScript = '' - startAll; + # limesurvey won't work without a dot in the hostname + networking.hosts."127.0.0.1" = [ "example.local" ]; + }; - $machine->waitForUnit('phpfpm-limesurvey.service'); - $machine->succeed('curl http://example.local/') =~ /The following surveys are available/ or die; + testScript = '' + start_all() + + machine.wait_for_unit("phpfpm-limesurvey.service") + assert "The following surveys are available" in machine.succeed( + "curl http://example.local/" + ) ''; }) diff --git a/nixos/tests/lorri/default.nix b/nixos/tests/lorri/default.nix index 53074385a65..198171082d8 100644 --- a/nixos/tests/lorri/default.nix +++ b/nixos/tests/lorri/default.nix @@ -15,12 +15,12 @@ import ../make-test-python.nix { # Start the daemon and wait until it is ready machine.execute("lorri daemon > lorri.stdout 2> lorri.stderr &") - machine.wait_until_succeeds("grep --fixed-strings 'lorri: ready' lorri.stdout") + machine.wait_until_succeeds("grep --fixed-strings 'ready' lorri.stdout") # Ping the daemon - machine.execute("lorri ping_ $(readlink -f shell.nix)") + machine.succeed("lorri internal__ping shell.nix") # Wait for the daemon to finish the build - machine.wait_until_succeeds("grep --fixed-strings 'OutputPaths' lorri.stdout") + machine.wait_until_succeeds("grep --fixed-strings 'Completed' lorri.stdout") ''; } diff --git a/nixos/tests/magic-wormhole-mailbox-server.nix b/nixos/tests/magic-wormhole-mailbox-server.nix new file mode 100644 index 00000000000..144a07e1349 --- /dev/null +++ b/nixos/tests/magic-wormhole-mailbox-server.nix @@ -0,0 +1,38 @@ +import ./make-test-python.nix ({ pkgs, ... }: { + name = "magic-wormhole-mailbox-server"; + meta = with pkgs.stdenv.lib.maintainers; { + maintainers = [ mmahut ]; + }; + + nodes = { + server = { ... }: { + networking.firewall.allowedTCPPorts = [ 4000 ]; + services.magic-wormhole-mailbox-server.enable = true; + }; + + client_alice = { ... }: { + networking.firewall.enable = false; + environment.systemPackages = [ pkgs.magic-wormhole ]; + }; + + client_bob = { ... }: { + environment.systemPackages = [ pkgs.magic-wormhole ]; + }; + }; + + testScript = '' + start_all() + + # Start the wormhole relay server + server.wait_for_unit("magic-wormhole-mailbox-server.service") + server.wait_for_open_port(4000) + + # Create a secret file and send it to Bob + client_alice.succeed("echo mysecret > secretfile") + client_alice.succeed("wormhole --relay-url=ws://server:4000/v1 send -0 secretfile &") + + # Retrieve a secret file from Alice and check its content + client_bob.succeed("wormhole --relay-url=ws://server:4000/v1 receive -0 --accept-file") + client_bob.succeed("grep mysecret secretfile") + ''; +}) diff --git a/nixos/tests/matrix-synapse.nix b/nixos/tests/matrix-synapse.nix index fca53009083..f3623aa3c09 100644 --- a/nixos/tests/matrix-synapse.nix +++ b/nixos/tests/matrix-synapse.nix @@ -35,12 +35,31 @@ in { nodes = { # Since 0.33.0, matrix-synapse doesn't allow underscores in server names - serverpostgres = args: { + serverpostgres = { pkgs, ... }: { services.matrix-synapse = { enable = true; database_type = "psycopg2"; tls_certificate_path = "${cert}"; tls_private_key_path = "${key}"; + database_args = { + password = "synapse"; + }; + }; + services.postgresql = { + enable = true; + + # The database name and user are configured by the following options: + # - services.matrix-synapse.database_name + # - services.matrix-synapse.database_user + # + # The values used here represent the default values of the module. + initialScript = pkgs.writeText "synapse-init.sql" '' + CREATE ROLE "matrix-synapse" WITH LOGIN PASSWORD 'synapse'; + CREATE DATABASE "matrix-synapse" WITH OWNER "matrix-synapse" + TEMPLATE template0 + LC_COLLATE = "C" + LC_CTYPE = "C"; + ''; }; }; diff --git a/nixos/tests/misc.nix b/nixos/tests/misc.nix index ca28bc31cf1..17260ce6406 100644 --- a/nixos/tests/misc.nix +++ b/nixos/tests/misc.nix @@ -1,6 +1,6 @@ # Miscellaneous small tests that don't warrant their own VM run. -import ./make-test.nix ({ pkgs, ...} : rec { +import ./make-test-python.nix ({ pkgs, ...} : rec { name = "misc"; meta = with pkgs.stdenv.lib.maintainers; { maintainers = [ eelco ]; @@ -34,109 +34,97 @@ import ./make-test.nix ({ pkgs, ...} : rec { testScript = '' - subtest "nix-db", sub { - my $json = $machine->succeed("nix path-info --json ${foo}"); - $json =~ /"narHash":"sha256:0afw0d9j1hvwiz066z93jiddc33nxg6i6qyp26vnqyglpyfivlq5"/ or die "narHash not set"; - $json =~ /"narSize":128/ or die "narSize not set"; - }; + import json - subtest "nixos-version", sub { - $machine->succeed("[ `nixos-version | wc -w` = 2 ]"); - }; - subtest "nixos-rebuild", sub { - $machine->succeed("nixos-rebuild --help | grep 'NixOS module' "); - }; + def get_path_info(path): + result = machine.succeed(f"nix path-info --json {path}") + parsed = json.loads(result) + return parsed - # Sanity check for uid/gid assignment. - subtest "users-groups", sub { - $machine->succeed("[ `id -u messagebus` = 4 ]"); - $machine->succeed("[ `id -g messagebus` = 4 ]"); - $machine->succeed("[ `getent group users` = 'users:x:100:' ]"); - }; - # Regression test for GMP aborts on QEMU. - subtest "gmp", sub { - $machine->succeed("expr 1 + 2"); - }; + with subtest("nix-db"): + info = get_path_info("${foo}") - # Test that the swap file got created. - subtest "swapfile", sub { - $machine->waitForUnit("root-swapfile.swap"); - $machine->succeed("ls -l /root/swapfile | grep 134217728"); - }; + if ( + info[0]["narHash"] + != "sha256:0afw0d9j1hvwiz066z93jiddc33nxg6i6qyp26vnqyglpyfivlq5" + ): + raise Exception("narHash not set") - # Test whether kernel.poweroff_cmd is set. - subtest "poweroff_cmd", sub { - $machine->succeed("[ -x \"\$(cat /proc/sys/kernel/poweroff_cmd)\" ]") - }; + if info[0]["narSize"] != 128: + raise Exception("narSize not set") - # Test whether the blkio controller is properly enabled. - subtest "blkio-cgroup", sub { - $machine->succeed("[ -n \"\$(cat /sys/fs/cgroup/blkio/blkio.sectors)\" ]") - }; + with subtest("nixos-version"): + machine.succeed("[ `nixos-version | wc -w` = 2 ]") - # Test whether we have a reboot record in wtmp. - subtest "reboot-wtmp", sub { - $machine->shutdown; - $machine->waitForUnit('multi-user.target'); - $machine->succeed("last | grep reboot >&2"); - }; + with subtest("nixos-rebuild"): + assert "NixOS module" in machine.succeed("nixos-rebuild --help") - # Test whether we can override environment variables. - subtest "override-env-var", sub { - $machine->succeed('[ "$EDITOR" = emacs ]'); - }; + with subtest("Sanity check for uid/gid assignment"): + assert "4" == machine.succeed("id -u messagebus").strip() + assert "4" == machine.succeed("id -g messagebus").strip() + assert "users:x:100:" == machine.succeed("getent group users").strip() - # Test whether hostname (and by extension nss_myhostname) works. - subtest "hostname", sub { - $machine->succeed('[ "`hostname`" = machine ]'); - #$machine->succeed('[ "`hostname -s`" = machine ]'); - }; + with subtest("Regression test for GMP aborts on QEMU."): + machine.succeed("expr 1 + 2") - # Test whether systemd-udevd automatically loads modules for our hardware. - $machine->succeed("systemctl start systemd-udev-settle.service"); - subtest "udev-auto-load", sub { - $machine->waitForUnit('systemd-udev-settle.service'); - $machine->succeed('lsmod | grep mousedev'); - }; + with subtest("the swap file got created"): + machine.wait_for_unit("root-swapfile.swap") + machine.succeed("ls -l /root/swapfile | grep 134217728") - # Test whether systemd-tmpfiles-clean works. - subtest "tmpfiles", sub { - $machine->succeed('touch /tmp/foo'); - $machine->succeed('systemctl start systemd-tmpfiles-clean'); - $machine->succeed('[ -e /tmp/foo ]'); - $machine->succeed('date -s "@$(($(date +%s) + 1000000))"'); # move into the future - $machine->succeed('systemctl start systemd-tmpfiles-clean'); - $machine->fail('[ -e /tmp/foo ]'); - }; + with subtest("whether kernel.poweroff_cmd is set"): + machine.succeed('[ -x "$(cat /proc/sys/kernel/poweroff_cmd)" ]') - # Test whether automounting works. - subtest "automount", sub { - $machine->fail("grep '/tmp2 tmpfs' /proc/mounts"); - $machine->succeed("touch /tmp2/x"); - $machine->succeed("grep '/tmp2 tmpfs' /proc/mounts"); - }; + with subtest("whether the blkio controller is properly enabled"): + machine.succeed("[ -e /sys/fs/cgroup/blkio/blkio.reset_stats ]") - subtest "shell-vars", sub { - $machine->succeed('[ -n "$NIX_PATH" ]'); - }; + with subtest("whether we have a reboot record in wtmp"): + machine.shutdown + machine.wait_for_unit("multi-user.target") + machine.succeed("last | grep reboot >&2") - subtest "nix-db", sub { - $machine->succeed("nix-store -qR /run/current-system | grep nixos-"); - }; + with subtest("whether we can override environment variables"): + machine.succeed('[ "$EDITOR" = emacs ]') - # Test sysctl - subtest "sysctl", sub { - $machine->waitForUnit("systemd-sysctl.service"); - $machine->succeed('[ `sysctl -ne vm.swappiness` = 1 ]'); - $machine->execute('sysctl vm.swappiness=60'); - $machine->succeed('[ `sysctl -ne vm.swappiness` = 60 ]'); - }; + with subtest("whether hostname (and by extension nss_myhostname) works"): + assert "machine" == machine.succeed("hostname").strip() + assert "machine" == machine.succeed("hostname -s").strip() - # Test boot parameters - subtest "bootparam", sub { - $machine->succeed('grep -Fq vsyscall=emulate /proc/cmdline'); - }; + with subtest("whether systemd-udevd automatically loads modules for our hardware"): + machine.succeed("systemctl start systemd-udev-settle.service") + machine.wait_for_unit("systemd-udev-settle.service") + assert "mousedev" in machine.succeed("lsmod") + + with subtest("whether systemd-tmpfiles-clean works"): + machine.succeed( + "touch /tmp/foo", "systemctl start systemd-tmpfiles-clean", "[ -e /tmp/foo ]" + ) + # move into the future + machine.succeed( + 'date -s "@$(($(date +%s) + 1000000))"', + "systemctl start systemd-tmpfiles-clean", + ) + machine.fail("[ -e /tmp/foo ]") + + with subtest("whether automounting works"): + machine.fail("grep '/tmp2 tmpfs' /proc/mounts") + machine.succeed("touch /tmp2/x") + machine.succeed("grep '/tmp2 tmpfs' /proc/mounts") + + with subtest("shell-vars"): + machine.succeed('[ -n "$NIX_PATH" ]') + + with subtest("nix-db"): + machine.succeed("nix-store -qR /run/current-system | grep nixos-") + + with subtest("Test sysctl"): + machine.wait_for_unit("systemd-sysctl.service") + assert "1" == machine.succeed("sysctl -ne vm.swappiness").strip() + machine.execute("sysctl vm.swappiness=60") + assert "60" == machine.succeed("sysctl -ne vm.swappiness").strip() + + with subtest("Test boot parameters"): + assert "vsyscall=emulate" in machine.succeed("cat /proc/cmdline") ''; }) diff --git a/nixos/tests/mongodb.nix b/nixos/tests/mongodb.nix index 9ebf84eed23..a637ec4bfc0 100644 --- a/nixos/tests/mongodb.nix +++ b/nixos/tests/mongodb.nix @@ -1,42 +1,52 @@ # This test start mongodb, runs a query using mongo shell -import ./make-test-python.nix ({ pkgs, ...} : let - testQuery = pkgs.writeScript "nixtest.js" '' - db.greetings.insert({ "greeting": "hello" }); - print(db.greetings.findOne().greeting); - ''; -in { - name = "mongodb"; - meta = with pkgs.stdenv.lib.maintainers; { - maintainers = [ bluescreen303 offline cstrahan rvl phile314 ]; - }; +import ./make-test-python.nix ({ pkgs, ... }: + let + testQuery = pkgs.writeScript "nixtest.js" '' + db.greetings.insert({ "greeting": "hello" }); + print(db.greetings.findOne().greeting); + ''; - nodes = { - one = - { ... }: - { - services = { - mongodb.enable = true; - mongodb.enableAuth = true; - mongodb.initialRootPassword = "root"; - mongodb.initialScript = pkgs.writeText "mongodb_initial.js" '' - db = db.getSiblingDB("nixtest"); - db.createUser({user:"nixtest",pwd:"nixtest",roles:[{role:"readWrite",db:"nixtest"}]}); - ''; - mongodb.extraConfig = '' - # Allow starting engine with only a small virtual disk - storage.journal.enabled: false - storage.mmapv1.smallFiles: true - ''; - }; - }; + runMongoDBTest = pkg: '' + node.execute("(rm -rf data || true) && mkdir data") + node.execute( + "${pkg}/bin/mongod --fork --logpath logs --dbpath data" + ) + node.wait_for_open_port(27017) + + assert "hello" in node.succeed( + "mongo ${testQuery}" + ) + + node.execute( + "${pkg}/bin/mongod --shutdown --dbpath data" + ) + node.wait_for_closed_port(27017) + ''; + + in { + name = "mongodb"; + meta = with pkgs.stdenv.lib.maintainers; { + maintainers = [ bluescreen303 offline cstrahan rvl phile314 ]; }; - testScript = '' - start_all() - one.wait_for_unit("mongodb.service") - one.succeed( - "mongo -u nixtest -p nixtest nixtest ${testQuery} | grep -q hello" - ) - ''; -}) + nodes = { + node = {...}: { + environment.systemPackages = with pkgs; [ + mongodb-3_4 + mongodb-3_6 + mongodb-4_0 + ]; + }; + }; + + testScript = '' + node.start() + '' + + runMongoDBTest pkgs.mongodb-3_4 + + runMongoDBTest pkgs.mongodb-3_6 + + runMongoDBTest pkgs.mongodb-4_0 + + '' + node.shutdown() + ''; + }) diff --git a/nixos/tests/mpd.nix b/nixos/tests/mpd.nix index 895b7e2014c..60aef586ad5 100644 --- a/nixos/tests/mpd.nix +++ b/nixos/tests/mpd.nix @@ -5,7 +5,7 @@ import ./make-test-python.nix ({ pkgs, lib, ... }: # License: http://creativecommons.org/licenses/by-sa/4.0/ name = "Blue_Wave_Theory-Skyhawk_Beach.mp3"; - url = https://freemusicarchive.org/file/music/ccCommunity/Blue_Wave_Theory/Surf_Music_Month_Challenge/Blue_Wave_Theory_-_04_-_Skyhawk_Beach.mp3; + url = "https://freemusicarchive.org/file/music/ccCommunity/Blue_Wave_Theory/Surf_Music_Month_Challenge/Blue_Wave_Theory_-_04_-_Skyhawk_Beach.mp3"; sha256 = "0xw417bxkx4gqqy139bb21yldi37xx8xjfxrwaqa0gyw19dl6mgp"; }; diff --git a/nixos/tests/mumble.nix b/nixos/tests/mumble.nix index 652d49a24b1..e9b6d14c6a1 100644 --- a/nixos/tests/mumble.nix +++ b/nixos/tests/mumble.nix @@ -1,4 +1,4 @@ -import ./make-test.nix ({ pkgs, ...} : +import ./make-test-python.nix ({ pkgs, ...} : let client = { pkgs, ... }: { @@ -24,50 +24,50 @@ in }; testScript = '' - startAll; + start_all() - $server->waitForUnit("murmur.service"); - $client1->waitForX; - $client2->waitForX; + server.wait_for_unit("murmur.service") + client1.wait_for_x() + client2.wait_for_x() - $client1->execute("mumble mumble://client1\@server/test &"); - $client2->execute("mumble mumble://client2\@server/test &"); + client1.execute("mumble mumble://client1\@server/test &") + client2.execute("mumble mumble://client2\@server/test &") # cancel client audio configuration - $client1->waitForWindow(qr/Audio Tuning Wizard/); - $client2->waitForWindow(qr/Audio Tuning Wizard/); - $server->sleep(5); # wait because mumble is slow to register event handlers - $client1->sendKeys("esc"); - $client2->sendKeys("esc"); + client1.wait_for_window(r"Audio Tuning Wizard") + client2.wait_for_window(r"Audio Tuning Wizard") + server.sleep(5) # wait because mumble is slow to register event handlers + client1.send_key("esc") + client2.send_key("esc") # cancel client cert configuration - $client1->waitForWindow(qr/Certificate Management/); - $client2->waitForWindow(qr/Certificate Management/); - $server->sleep(5); # wait because mumble is slow to register event handlers - $client1->sendKeys("esc"); - $client2->sendKeys("esc"); + client1.wait_for_window(r"Certificate Management") + client2.wait_for_window(r"Certificate Management") + server.sleep(5) # wait because mumble is slow to register event handlers + client1.send_key("esc") + client2.send_key("esc") # accept server certificate - $client1->waitForWindow(qr/^Mumble$/); - $client2->waitForWindow(qr/^Mumble$/); - $server->sleep(5); # wait because mumble is slow to register event handlers - $client1->sendChars("y"); - $client2->sendChars("y"); - $server->sleep(5); # wait because mumble is slow to register event handlers + client1.wait_for_window(r"^Mumble$") + client2.wait_for_window(r"^Mumble$") + server.sleep(5) # wait because mumble is slow to register event handlers + client1.send_chars("y") + client2.send_chars("y") + server.sleep(5) # wait because mumble is slow to register event handlers # sometimes the wrong of the 2 windows is focused, we switch focus and try pressing "y" again - $client1->sendKeys("alt-tab"); - $client2->sendKeys("alt-tab"); - $server->sleep(5); # wait because mumble is slow to register event handlers - $client1->sendChars("y"); - $client2->sendChars("y"); + client1.send_key("alt-tab") + client2.send_key("alt-tab") + server.sleep(5) # wait because mumble is slow to register event handlers + client1.send_chars("y") + client2.send_chars("y") # Find clients in logs - $server->waitUntilSucceeds("journalctl -eu murmur -o cat | grep -q client1"); - $server->waitUntilSucceeds("journalctl -eu murmur -o cat | grep -q client2"); + server.wait_until_succeeds("journalctl -eu murmur -o cat | grep -q client1") + server.wait_until_succeeds("journalctl -eu murmur -o cat | grep -q client2") - $server->sleep(5); # wait to get screenshot - $client1->screenshot("screen1"); - $client2->screenshot("screen2"); + server.sleep(5) # wait to get screenshot + client1.screenshot("screen1") + client2.screenshot("screen2") ''; }) diff --git a/nixos/tests/mysql.nix b/nixos/tests/mysql.nix index 2c0d212c2f1..11c1dabf936 100644 --- a/nixos/tests/mysql.nix +++ b/nixos/tests/mysql.nix @@ -22,11 +22,33 @@ import ./make-test-python.nix ({ pkgs, ...} : { services.mysql.package = pkgs.mysql57; }; + mysql80 = + { pkgs, ... }: + + { + # prevent oom: + # Kernel panic - not syncing: Out of memory: compulsory panic_on_oom is enabled + virtualisation.memorySize = 1024; + + services.mysql.enable = true; + services.mysql.initialDatabases = [ + { name = "testdb"; schema = ./testdb.sql; } + { name = "empty_testdb"; } + ]; + # note that using pkgs.writeText here is generally not a good idea, + # as it will store the password in world-readable /nix/store ;) + services.mysql.initialScript = pkgs.writeText "mysql-init.sql" '' + CREATE USER 'passworduser'@'localhost' IDENTIFIED BY 'password123'; + ''; + services.mysql.package = pkgs.mysql80; + }; + mariadb = { pkgs, ... }: { users.users.testuser = { }; + users.users.testuser2 = { }; services.mysql.enable = true; services.mysql.initialScript = pkgs.writeText "mariadb-init.sql" '' ALTER USER root@localhost IDENTIFIED WITH unix_socket; @@ -34,20 +56,30 @@ import ./make-test-python.nix ({ pkgs, ...} : { DELETE FROM mysql.user WHERE user = '''; FLUSH PRIVILEGES; ''; - services.mysql.ensureDatabases = [ "testdb" ]; + services.mysql.ensureDatabases = [ "testdb" "testdb2" ]; services.mysql.ensureUsers = [{ name = "testuser"; ensurePermissions = { "testdb.*" = "ALL PRIVILEGES"; }; + } { + name = "testuser2"; + ensurePermissions = { + "testdb2.*" = "ALL PRIVILEGES"; + }; }]; + services.mysql.settings = { + mysqld = { + plugin-load-add = [ "ha_tokudb.so" "ha_rocksdb.so" ]; + }; + }; services.mysql.package = pkgs.mariadb; }; }; testScript = '' - start_all + start_all() mysql.wait_for_unit("mysql") mysql.succeed("echo 'use empty_testdb;' | mysql -u root") @@ -55,6 +87,12 @@ import ./make-test-python.nix ({ pkgs, ...} : { # ';' acts as no-op, just check whether login succeeds with the user created from the initialScript mysql.succeed("echo ';' | mysql -u passworduser --password=password123") + mysql80.wait_for_unit("mysql") + mysql80.succeed("echo 'use empty_testdb;' | mysql -u root") + mysql80.succeed("echo 'use testdb; select * from tests;' | mysql -u root -N | grep 4") + # ';' acts as no-op, just check whether login succeeds with the user created from the initialScript + mysql80.succeed("echo ';' | mysql -u passworduser --password=password123") + mariadb.wait_for_unit("mysql") mariadb.succeed( "echo 'use testdb; create table tests (test_id INT, PRIMARY KEY (test_id));' | sudo -u testuser mysql -u testuser" @@ -62,8 +100,44 @@ import ./make-test-python.nix ({ pkgs, ...} : { mariadb.succeed( "echo 'use testdb; insert into tests values (42);' | sudo -u testuser mysql -u testuser" ) + # Ensure testuser2 is not able to insert into testdb as mysql testuser2 + mariadb.fail( + "echo 'use testdb; insert into tests values (23);' | sudo -u testuser2 mysql -u testuser2" + ) + # Ensure testuser2 is not able to authenticate as mysql testuser + mariadb.fail( + "echo 'use testdb; insert into tests values (23);' | sudo -u testuser2 mysql -u testuser" + ) mariadb.succeed( "echo 'use testdb; select test_id from tests;' | sudo -u testuser mysql -u testuser -N | grep 42" ) + + # Check if TokuDB plugin works + mariadb.succeed( + "echo 'use testdb; create table tokudb (test_id INT, PRIMARY KEY (test_id)) ENGINE = TokuDB;' | sudo -u testuser mysql -u testuser" + ) + mariadb.succeed( + "echo 'use testdb; insert into tokudb values (25);' | sudo -u testuser mysql -u testuser" + ) + mariadb.succeed( + "echo 'use testdb; select test_id from tokudb;' | sudo -u testuser mysql -u testuser -N | grep 25" + ) + mariadb.succeed( + "echo 'use testdb; drop table tokudb;' | sudo -u testuser mysql -u testuser" + ) + + # Check if RocksDB plugin works + mariadb.succeed( + "echo 'use testdb; create table rocksdb (test_id INT, PRIMARY KEY (test_id)) ENGINE = RocksDB;' | sudo -u testuser mysql -u testuser" + ) + mariadb.succeed( + "echo 'use testdb; insert into rocksdb values (28);' | sudo -u testuser mysql -u testuser" + ) + mariadb.succeed( + "echo 'use testdb; select test_id from rocksdb;' | sudo -u testuser mysql -u testuser -N | grep 28" + ) + mariadb.succeed( + "echo 'use testdb; drop table rocksdb;' | sudo -u testuser mysql -u testuser" + ) ''; }) diff --git a/nixos/tests/nagios.nix b/nixos/tests/nagios.nix new file mode 100644 index 00000000000..6f5d4447287 --- /dev/null +++ b/nixos/tests/nagios.nix @@ -0,0 +1,116 @@ +import ./make-test-python.nix ( + { pkgs, ... }: { + name = "nagios"; + meta = with pkgs.stdenv.lib.maintainers; { + maintainers = [ symphorien ]; + }; + + machine = { lib, ... }: let + writer = pkgs.writeShellScript "write" '' + set -x + echo "$@" >> /tmp/notifications + ''; + in + { + # tested service + services.sshd.enable = true; + # nagios + services.nagios = { + enable = true; + # make state transitions faster + extraConfig.interval_length = "5"; + objectDefs = + (map (x: "${pkgs.nagios}/etc/objects/${x}.cfg") [ "templates" "timeperiods" "commands" ]) ++ [ + ( + pkgs.writeText "objects.cfg" '' + # notifications are written to /tmp/notifications + define command { + command_name notify-host-by-file + command_line ${writer} "$HOSTNAME is $HOSTSTATE$" + } + define command { + command_name notify-service-by-file + command_line ${writer} "$SERVICEDESC$ is $SERVICESTATE$" + } + + # nagios boilerplate + define contact { + contact_name alice + alias alice + host_notifications_enabled 1 + service_notifications_enabled 1 + service_notification_period 24x7 + host_notification_period 24x7 + service_notification_options w,u,c,r,f,s + host_notification_options d,u,r,f,s + service_notification_commands notify-service-by-file + host_notification_commands notify-host-by-file + email foo@example.com + } + define contactgroup { + contactgroup_name admins + alias Admins + members alice + } + define hostgroup{ + hostgroup_name allhosts + alias All hosts + } + + # monitored objects + define host { + use generic-host + host_name localhost + alias localhost + address localhost + hostgroups allhosts + contact_groups admins + # make state transitions faster. + max_check_attempts 2 + check_interval 1 + retry_interval 1 + } + define service { + use generic-service + host_name localhost + service_description ssh + check_command check_ssh + # make state transitions faster. + max_check_attempts 2 + check_interval 1 + retry_interval 1 + } + '' + ) + ]; + }; + }; + + testScript = { ... }: '' + with subtest("ensure sshd starts"): + machine.wait_for_unit("sshd.service") + + + with subtest("ensure nagios starts"): + machine.wait_for_file("/var/log/nagios/current") + + + def assert_notify(text): + machine.wait_for_file("/tmp/notifications") + real = machine.succeed("cat /tmp/notifications").strip() + print(f"got {real!r}, expected {text!r}") + assert text == real + + + with subtest("ensure we get a notification when sshd is down"): + machine.succeed("systemctl stop sshd") + assert_notify("ssh is CRITICAL") + + + with subtest("ensure tests can succeed"): + machine.succeed("systemctl start sshd") + machine.succeed("rm /tmp/notifications") + assert_notify("ssh is OK") + ''; + } +) diff --git a/nixos/tests/nesting.nix b/nixos/tests/nesting.nix deleted file mode 100644 index 6388b67a6e4..00000000000 --- a/nixos/tests/nesting.nix +++ /dev/null @@ -1,44 +0,0 @@ -import ./make-test-python.nix { - name = "nesting"; - nodes = { - clone = { pkgs, ... }: { - environment.systemPackages = [ pkgs.cowsay ]; - nesting.clone = [ - ({ pkgs, ... }: { - environment.systemPackages = [ pkgs.hello ]; - }) - ]; - }; - children = { pkgs, ... }: { - environment.systemPackages = [ pkgs.cowsay ]; - nesting.children = [ - ({ pkgs, ... }: { - environment.systemPackages = [ pkgs.hello ]; - }) - ]; - }; - }; - testScript = '' - clone.wait_for_unit("default.target") - clone.succeed("cowsay hey") - clone.fail("hello") - - with subtest("Nested clones do inherit from parent"): - clone.succeed( - "/run/current-system/fine-tune/child-1/bin/switch-to-configuration test" - ) - clone.succeed("cowsay hey") - clone.succeed("hello") - - children.wait_for_unit("default.target") - children.succeed("cowsay hey") - children.fail("hello") - - with subtest("Nested children do not inherit from parent"): - children.succeed( - "/run/current-system/fine-tune/child-1/bin/switch-to-configuration test" - ) - children.fail("cowsay hey") - children.succeed("hello") - ''; -} diff --git a/nixos/tests/netdata.nix b/nixos/tests/netdata.nix index 8dd5eafb097..4ddc96e8bc2 100644 --- a/nixos/tests/netdata.nix +++ b/nixos/tests/netdata.nix @@ -25,6 +25,7 @@ import ./make-test-python.nix ({ pkgs, ...} : { # check if the netdata main page loads. netdata.succeed("curl --fail http://localhost:19999/") + netdata.succeed("sleep 4") # check if netdata can read disk ops for root owned processes. # if > 0, successful. verifies both netdata working and diff --git a/nixos/tests/networking-proxy.nix b/nixos/tests/networking-proxy.nix index ab908c96e5e..bae9c66ed61 100644 --- a/nixos/tests/networking-proxy.nix +++ b/nixos/tests/networking-proxy.nix @@ -10,7 +10,7 @@ let default-config = { virtualisation.memorySize = 128; }; -in import ./make-test.nix ({ pkgs, ...} : { +in import ./make-test-python.nix ({ pkgs, ...} : { name = "networking-proxy"; meta = with pkgs.stdenv.lib.maintainers; { maintainers = [ ]; @@ -66,46 +66,70 @@ in import ./make-test.nix ({ pkgs, ...} : { testScript = '' - startAll; + from typing import Dict, Optional - # no proxy at all - print $machine->execute("env | grep -i proxy"); - print $machine->execute("su - alice -c 'env | grep -i proxy'"); - $machine->mustFail("env | grep -i proxy"); - $machine->mustFail("su - alice -c 'env | grep -i proxy'"); - # Use a default proxy option - print $machine2->execute("env | grep -i proxy"); - print $machine2->execute("su - alice -c 'env | grep -i proxy'"); - $machine2->mustSucceed("env | grep -i proxy"); - $machine2->mustSucceed("su - alice -c 'env | grep -i proxy'"); + def get_machine_env(machine: Machine, user: Optional[str] = None) -> Dict[str, str]: + """ + Gets the environment from a given machine, and returns it as a + dictionary in the form: + {"lowercase_var_name": "value"} - # explicitly set each proxy option - print $machine3->execute("env | grep -i proxy"); - print $machine3->execute("su - alice -c 'env | grep -i proxy'"); - $machine3->mustSucceed("env | grep -i http_proxy | grep 123"); - $machine3->mustSucceed("env | grep -i https_proxy | grep 456"); - $machine3->mustSucceed("env | grep -i rsync_proxy | grep 789"); - $machine3->mustSucceed("env | grep -i ftp_proxy | grep 101112"); - $machine3->mustSucceed("env | grep -i no_proxy | grep 131415"); - $machine3->mustSucceed("su - alice -c 'env | grep -i http_proxy | grep 123'"); - $machine3->mustSucceed("su - alice -c 'env | grep -i https_proxy | grep 456'"); - $machine3->mustSucceed("su - alice -c 'env | grep -i rsync_proxy | grep 789'"); - $machine3->mustSucceed("su - alice -c 'env | grep -i ftp_proxy | grep 101112'"); - $machine3->mustSucceed("su - alice -c 'env | grep -i no_proxy | grep 131415'"); + Duplicate environment variables with the same name + (e.g. "foo" and "FOO") are handled in an undefined manner. + """ + if user is not None: + env = machine.succeed("su - {} -c 'env -0'".format(user)) + else: + env = machine.succeed("env -0") + ret = {} + for line in env.split("\0"): + if "=" not in line: + continue - # set default proxy option + some other specifics - print $machine4->execute("env | grep -i proxy"); - print $machine4->execute("su - alice -c 'env | grep -i proxy'"); - $machine4->mustSucceed("env | grep -i http_proxy | grep 000"); - $machine4->mustSucceed("env | grep -i https_proxy | grep 000"); - $machine4->mustSucceed("env | grep -i rsync_proxy | grep 123"); - $machine4->mustSucceed("env | grep -i ftp_proxy | grep 000"); - $machine4->mustSucceed("env | grep -i no_proxy | grep 131415"); - $machine4->mustSucceed("su - alice -c 'env | grep -i http_proxy | grep 000'"); - $machine4->mustSucceed("su - alice -c 'env | grep -i https_proxy | grep 000'"); - $machine4->mustSucceed("su - alice -c 'env | grep -i rsync_proxy | grep 123'"); - $machine4->mustSucceed("su - alice -c 'env | grep -i ftp_proxy | grep 000'"); - $machine4->mustSucceed("su - alice -c 'env | grep -i no_proxy | grep 131415'"); + key, val = line.split("=", 1) + ret[key.lower()] = val + return ret + + + start_all() + + with subtest("no proxy"): + assert "proxy" not in machine.succeed("env").lower() + assert "proxy" not in machine.succeed("su - alice -c env").lower() + + with subtest("default proxy"): + assert "proxy" in machine2.succeed("env").lower() + assert "proxy" in machine2.succeed("su - alice -c env").lower() + + with subtest("explicitly-set proxy"): + env = get_machine_env(machine3) + assert "123" in env["http_proxy"] + assert "456" in env["https_proxy"] + assert "789" in env["rsync_proxy"] + assert "101112" in env["ftp_proxy"] + assert "131415" in env["no_proxy"] + + env = get_machine_env(machine3, "alice") + assert "123" in env["http_proxy"] + assert "456" in env["https_proxy"] + assert "789" in env["rsync_proxy"] + assert "101112" in env["ftp_proxy"] + assert "131415" in env["no_proxy"] + + with subtest("default proxy + some other specifics"): + env = get_machine_env(machine4) + assert "000" in env["http_proxy"] + assert "000" in env["https_proxy"] + assert "123" in env["rsync_proxy"] + assert "000" in env["ftp_proxy"] + assert "131415" in env["no_proxy"] + + env = get_machine_env(machine4, "alice") + assert "000" in env["http_proxy"] + assert "000" in env["https_proxy"] + assert "123" in env["rsync_proxy"] + assert "000" in env["ftp_proxy"] + assert "131415" in env["no_proxy"] ''; }) diff --git a/nixos/tests/networking.nix b/nixos/tests/networking.nix index 9448a104073..3d8ab761a44 100644 --- a/nixos/tests/networking.nix +++ b/nixos/tests/networking.nix @@ -200,6 +200,7 @@ let useDHCP = false; interfaces.eth1 = { ipv4.addresses = mkOverride 0 [ ]; + mtu = 1343; useDHCP = true; }; interfaces.eth2.ipv4.addresses = mkOverride 0 [ ]; @@ -216,6 +217,9 @@ let with subtest("Wait until we have an ip address on each interface"): client.wait_until_succeeds("ip addr show dev eth1 | grep -q '192.168.1'") + with subtest("ensure MTU is set"): + assert "mtu 1343" in client.succeed("ip link show dev eth1") + with subtest("Test vlan 1"): client.wait_until_succeeds("ping -c 1 192.168.1.1") client.wait_until_succeeds("ping -c 1 192.168.1.2") @@ -455,11 +459,14 @@ let ipv4.addresses = [ { address = "192.168.1.1"; prefixLength = 24; } ]; ipv6.addresses = [ { address = "2001:1470:fffd:2096::"; prefixLength = 64; } ]; virtual = true; + mtu = 1342; + macAddress = "02:de:ad:be:ef:01"; }; networking.interfaces.tun0 = { ipv4.addresses = [ { address = "192.168.1.2"; prefixLength = 24; } ]; ipv6.addresses = [ { address = "2001:1470:fffd:2097::"; prefixLength = 64; } ]; virtual = true; + mtu = 1343; }; }; @@ -471,7 +478,7 @@ let with subtest("Wait for networking to come up"): machine.start() - machine.wait_for_unit("network-online.target") + machine.wait_for_unit("network.target") with subtest("Test interfaces set up"): list = machine.succeed("ip tuntap list | sort").strip() @@ -486,7 +493,12 @@ let """.format( list, targetList ) - + with subtest("Test MTU and MAC Address are configured"): + assert "mtu 1342" in machine.succeed("ip link show dev tap0") + assert "mtu 1343" in machine.succeed("ip link show dev tun0") + assert "02:de:ad:be:ef:01" in machine.succeed("ip link show dev tap0") + '' # network-addresses-* only exist in scripted networking + + optionalString (!networkd) '' with subtest("Test interfaces clean up"): machine.succeed("systemctl stop network-addresses-tap0") machine.sleep(10) @@ -533,7 +545,7 @@ let useNetworkd = networkd; useDHCP = false; interfaces.eth1 = { - preferTempAddress = true; + tempAddress = "default"; ipv4.addresses = mkOverride 0 [ ]; ipv6.addresses = mkOverride 0 [ ]; useDHCP = true; @@ -546,7 +558,7 @@ let useNetworkd = networkd; useDHCP = false; interfaces.eth1 = { - preferTempAddress = false; + tempAddress = "enabled"; ipv4.addresses = mkOverride 0 [ ]; ipv6.addresses = mkOverride 0 [ ]; useDHCP = true; @@ -602,17 +614,17 @@ let }; testScript = '' - targetIPv4Table = """ - 10.0.0.0/16 proto static scope link mtu 1500 - 192.168.1.0/24 proto kernel scope link src 192.168.1.2 - 192.168.2.0/24 via 192.168.1.1 proto static - """.strip() + targetIPv4Table = [ + "10.0.0.0/16 proto static scope link mtu 1500", + "192.168.1.0/24 proto kernel scope link src 192.168.1.2", + "192.168.2.0/24 via 192.168.1.1 proto static", + ] - targetIPv6Table = """ - 2001:1470:fffd:2097::/64 proto kernel metric 256 pref medium - 2001:1470:fffd:2098::/64 via fdfd:b3f0::1 proto static metric 1024 pref medium - fdfd:b3f0::/48 proto static metric 1024 pref medium - """.strip() + targetIPv6Table = [ + "2001:1470:fffd:2097::/64 proto kernel metric 256 pref medium", + "2001:1470:fffd:2098::/64 via fdfd:b3f0::1 proto static metric 1024 pref medium", + "fdfd:b3f0::/48 proto static metric 1024 pref medium", + ] machine.start() machine.wait_for_unit("network.target") @@ -620,9 +632,9 @@ let with subtest("test routing tables"): ipv4Table = machine.succeed("ip -4 route list dev eth0 | head -n3").strip() ipv6Table = machine.succeed("ip -6 route list dev eth0 | head -n3").strip() - assert ( - ipv4Table == targetIPv4Table - ), """ + assert [ + l.strip() for l in ipv4Table.splitlines() + ] == targetIPv4Table, """ The IPv4 routing table does not match the expected one: Result: {} @@ -631,9 +643,9 @@ let """.format( ipv4Table, targetIPv4Table ) - assert ( - ipv6Table == targetIPv6Table - ), """ + assert [ + l.strip() for l in ipv6Table.splitlines() + ] == targetIPv6Table, """ The IPv6 routing table does not match the expected one: Result: {} @@ -655,6 +667,31 @@ let ), "The IPv6 routing table has not been properly cleaned:\n{}".format(ipv6Residue) ''; }; + # even with disabled networkd, systemd.network.links should work + # (as it's handled by udev, not networkd) + link = { + name = "Link"; + nodes.client = { pkgs, ... }: { + virtualisation.vlans = [ 1 ]; + networking = { + useNetworkd = networkd; + useDHCP = false; + }; + systemd.network.links."50-foo" = { + matchConfig = { + Name = "foo"; + Driver = "dummy"; + }; + linkConfig.MTUBytes = "1442"; + }; + }; + testScript = '' + print(client.succeed("ip l add name foo type dummy")) + print(client.succeed("stat /etc/systemd/network/50-foo.link")) + client.succeed("udevadm settle") + assert "mtu 1442" in client.succeed("ip l show dummy0") + ''; + }; }; in mapAttrs (const (attrs: makeTest (attrs // { diff --git a/nixos/tests/nextcloud/basic.nix b/nixos/tests/nextcloud/basic.nix index 75862feb202..92ac5c46e8f 100644 --- a/nixos/tests/nextcloud/basic.nix +++ b/nixos/tests/nextcloud/basic.nix @@ -32,7 +32,7 @@ in { testScript = let withRcloneEnv = pkgs.writeScript "with-rclone-env" '' - #!${pkgs.stdenv.shell} + #!${pkgs.runtimeShell} export RCLONE_CONFIG_NEXTCLOUD_TYPE=webdav export RCLONE_CONFIG_NEXTCLOUD_URL="http://nextcloud/remote.php/webdav/" export RCLONE_CONFIG_NEXTCLOUD_VENDOR="nextcloud" @@ -41,12 +41,12 @@ in { "''${@}" ''; copySharedFile = pkgs.writeScript "copy-shared-file" '' - #!${pkgs.stdenv.shell} + #!${pkgs.runtimeShell} echo 'hi' | ${withRcloneEnv} ${pkgs.rclone}/bin/rclone rcat nextcloud:test-shared-file ''; diffSharedFile = pkgs.writeScript "diff-shared-file" '' - #!${pkgs.stdenv.shell} + #!${pkgs.runtimeShell} diff <(echo 'hi') <(${pkgs.rclone}/bin/rclone cat nextcloud:test-shared-file) ''; in '' diff --git a/nixos/tests/nextcloud/with-mysql-and-memcached.nix b/nixos/tests/nextcloud/with-mysql-and-memcached.nix index b9ba5888187..8db630be893 100644 --- a/nixos/tests/nextcloud/with-mysql-and-memcached.nix +++ b/nixos/tests/nextcloud/with-mysql-and-memcached.nix @@ -61,14 +61,14 @@ in { testScript = let configureMemcached = pkgs.writeScript "configure-memcached" '' - #!${pkgs.stdenv.shell} + #!${pkgs.runtimeShell} nextcloud-occ config:system:set memcached_servers 0 0 --value 127.0.0.1 --type string nextcloud-occ config:system:set memcached_servers 0 1 --value 11211 --type integer nextcloud-occ config:system:set memcache.local --value '\OC\Memcache\APCu' --type string nextcloud-occ config:system:set memcache.distributed --value '\OC\Memcache\Memcached' --type string ''; withRcloneEnv = pkgs.writeScript "with-rclone-env" '' - #!${pkgs.stdenv.shell} + #!${pkgs.runtimeShell} export RCLONE_CONFIG_NEXTCLOUD_TYPE=webdav export RCLONE_CONFIG_NEXTCLOUD_URL="http://nextcloud/remote.php/webdav/" export RCLONE_CONFIG_NEXTCLOUD_VENDOR="nextcloud" @@ -76,12 +76,12 @@ in { export RCLONE_CONFIG_NEXTCLOUD_PASS="$(${pkgs.rclone}/bin/rclone obscure ${adminpass})" ''; copySharedFile = pkgs.writeScript "copy-shared-file" '' - #!${pkgs.stdenv.shell} + #!${pkgs.runtimeShell} echo 'hi' | ${pkgs.rclone}/bin/rclone rcat nextcloud:test-shared-file ''; diffSharedFile = pkgs.writeScript "diff-shared-file" '' - #!${pkgs.stdenv.shell} + #!${pkgs.runtimeShell} diff <(echo 'hi') <(${pkgs.rclone}/bin/rclone cat nextcloud:test-shared-file) ''; in '' diff --git a/nixos/tests/nextcloud/with-postgresql-and-redis.nix b/nixos/tests/nextcloud/with-postgresql-and-redis.nix index 324853350af..95219cac9be 100644 --- a/nixos/tests/nextcloud/with-postgresql-and-redis.nix +++ b/nixos/tests/nextcloud/with-postgresql-and-redis.nix @@ -60,14 +60,14 @@ in { testScript = let configureRedis = pkgs.writeScript "configure-redis" '' - #!${pkgs.stdenv.shell} + #!${pkgs.runtimeShell} nextcloud-occ config:system:set redis 'host' --value 'localhost' --type string nextcloud-occ config:system:set redis 'port' --value 6379 --type integer nextcloud-occ config:system:set memcache.local --value '\OC\Memcache\Redis' --type string nextcloud-occ config:system:set memcache.locking --value '\OC\Memcache\Redis' --type string ''; withRcloneEnv = pkgs.writeScript "with-rclone-env" '' - #!${pkgs.stdenv.shell} + #!${pkgs.runtimeShell} export RCLONE_CONFIG_NEXTCLOUD_TYPE=webdav export RCLONE_CONFIG_NEXTCLOUD_URL="http://nextcloud/remote.php/webdav/" export RCLONE_CONFIG_NEXTCLOUD_VENDOR="nextcloud" @@ -76,12 +76,12 @@ in { "''${@}" ''; copySharedFile = pkgs.writeScript "copy-shared-file" '' - #!${pkgs.stdenv.shell} + #!${pkgs.runtimeShell} echo 'hi' | ${pkgs.rclone}/bin/rclone rcat nextcloud:test-shared-file ''; diffSharedFile = pkgs.writeScript "diff-shared-file" '' - #!${pkgs.stdenv.shell} + #!${pkgs.runtimeShell} diff <(echo 'hi') <(${pkgs.rclone}/bin/rclone cat nextcloud:test-shared-file) ''; in '' diff --git a/nixos/tests/nfs/simple.nix b/nixos/tests/nfs/simple.nix index a1a09ee0f45..c49ebddc2fd 100644 --- a/nixos/tests/nfs/simple.nix +++ b/nixos/tests/nfs/simple.nix @@ -5,13 +5,13 @@ let client = { pkgs, ... }: { fileSystems = pkgs.lib.mkVMOverride - [ { mountPoint = "/data"; - # nfs4 exports the export with fsid=0 as a virtual root directory - device = if (version == 4) then "server:/" else "server:/data"; - fsType = "nfs"; - options = [ "vers=${toString version}" ]; - } - ]; + { "/data" = + { # nfs4 exports the export with fsid=0 as a virtual root directory + device = if (version == 4) then "server:/" else "server:/data"; + fsType = "nfs"; + options = [ "vers=${toString version}" ]; + }; + }; networking.firewall.enable = false; # FIXME: only open statd }; diff --git a/nixos/tests/nginx-etag.nix b/nixos/tests/nginx-etag.nix new file mode 100644 index 00000000000..63ab2e0c6c2 --- /dev/null +++ b/nixos/tests/nginx-etag.nix @@ -0,0 +1,89 @@ +import ./make-test-python.nix { + name = "nginx-etag"; + + nodes = { + server = { pkgs, lib, ... }: { + networking.firewall.enable = false; + services.nginx.enable = true; + services.nginx.virtualHosts.server = { + root = pkgs.runCommandLocal "testdir" {} '' + mkdir "$out" + cat > "$out/test.js" < "$out/index.html" < +
test
+ + EOF + ''; + }; + + specialisation.pass-checks.configuration = { + services.nginx.virtualHosts.server = { + root = lib.mkForce (pkgs.runCommandLocal "testdir2" {} '' + mkdir "$out" + cat > "$out/test.js" < "$out/index.html" < +
test
+ + EOF + ''); + }; + }; + }; + + client = { pkgs, lib, ... }: { + virtualisation.memorySize = 512; + environment.systemPackages = let + testRunner = pkgs.writers.writePython3Bin "test-runner" { + libraries = [ pkgs.python3Packages.selenium ]; + } '' + import os + import time + + from selenium.webdriver import Firefox + from selenium.webdriver.firefox.options import Options + + options = Options() + options.add_argument('--headless') + driver = Firefox(options=options) + + driver.implicitly_wait(20) + driver.get('http://server/') + driver.find_element_by_xpath('//div[@foo="bar"]') + open('/tmp/passed_stage1', 'w') + + while not os.path.exists('/tmp/proceed'): + time.sleep(0.5) + + driver.get('http://server/') + driver.find_element_by_xpath('//div[@foo="yay"]') + open('/tmp/passed', 'w') + ''; + in [ pkgs.firefox-unwrapped pkgs.geckodriver testRunner ]; + }; + }; + + testScript = { nodes, ... }: let + inherit (nodes.server.config.system.build) toplevel; + newSystem = "${toplevel}/specialisation/pass-checks"; + in '' + start_all() + + server.wait_for_unit("nginx.service") + client.wait_for_unit("multi-user.target") + client.execute("test-runner &") + client.wait_for_file("/tmp/passed_stage1") + + server.succeed( + "${newSystem}/bin/switch-to-configuration test >&2" + ) + client.succeed("touch /tmp/proceed") + + client.wait_for_file("/tmp/passed") + ''; +} diff --git a/nixos/tests/nginx-pubhtml.nix b/nixos/tests/nginx-pubhtml.nix new file mode 100644 index 00000000000..432913cb42d --- /dev/null +++ b/nixos/tests/nginx-pubhtml.nix @@ -0,0 +1,20 @@ +import ./make-test-python.nix { + name = "nginx-pubhtml"; + + machine = { pkgs, ... }: { + services.nginx.enable = true; + services.nginx.virtualHosts.localhost = { + locations."~ ^/\\~([a-z0-9_]+)(/.*)?$".alias = "/home/$1/public_html$2"; + }; + users.users.foo.isNormalUser = true; + }; + + testScript = '' + machine.wait_for_unit("nginx") + machine.wait_for_open_port(80) + machine.succeed("chmod 0711 /home/foo") + machine.succeed("su -c 'mkdir -p /home/foo/public_html' foo") + machine.succeed("su -c 'echo bar > /home/foo/public_html/bar.txt' foo") + machine.succeed('test "$(curl -fvvv http://localhost/~foo/bar.txt)" = bar') + ''; +} diff --git a/nixos/tests/nginx-sso.nix b/nixos/tests/nginx-sso.nix index e19992cb6bf..8834fc31c38 100644 --- a/nixos/tests/nginx-sso.nix +++ b/nixos/tests/nginx-sso.nix @@ -1,4 +1,4 @@ -import ./make-test.nix ({ pkgs, ... }: { +import ./make-test-python.nix ({ pkgs, ... }: { name = "nginx-sso"; meta = { maintainers = with pkgs.stdenv.lib.maintainers; [ delroth ]; @@ -27,18 +27,22 @@ import ./make-test.nix ({ pkgs, ... }: { }; testScript = '' - startAll; + start_all() - $machine->waitForUnit("nginx-sso.service"); - $machine->waitForOpenPort(8080); + machine.wait_for_unit("nginx-sso.service") + machine.wait_for_open_port(8080) - # No valid user -> 401. - $machine->fail("curl -sSf http://localhost:8080/auth"); + with subtest("No valid user -> 401"): + machine.fail("curl -sSf http://localhost:8080/auth") - # Valid user but no matching ACL -> 403. - $machine->fail("curl -sSf -H 'Authorization: Token MyToken' http://localhost:8080/auth"); + with subtest("Valid user but no matching ACL -> 403"): + machine.fail( + "curl -sSf -H 'Authorization: Token MyToken' http://localhost:8080/auth" + ) - # Valid user and matching ACL -> 200. - $machine->succeed("curl -sSf -H 'Authorization: Token MyToken' -H 'X-Application: MyApp' http://localhost:8080/auth"); + with subtest("Valid user and matching ACL -> 200"): + machine.succeed( + "curl -sSf -H 'Authorization: Token MyToken' -H 'X-Application: MyApp' http://localhost:8080/auth" + ) ''; }) diff --git a/nixos/tests/nginx.nix b/nixos/tests/nginx.nix index d0b7306ae83..18822f09568 100644 --- a/nixos/tests/nginx.nix +++ b/nixos/tests/nginx.nix @@ -4,10 +4,10 @@ # 2. whether the ETag header is properly generated whenever we're serving # files in Nix store paths # 3. nginx doesn't restart on configuration changes (only reloads) -import ./make-test.nix ({ pkgs, ... }: { +import ./make-test-python.nix ({ pkgs, ... }: { name = "nginx"; meta = with pkgs.stdenv.lib.maintainers; { - maintainers = [ mbbx6spp ]; + maintainers = [ mbbx6spp danbst ]; }; nodes = { @@ -42,70 +42,88 @@ import ./make-test.nix ({ pkgs, ... }: { services.nginx.enableReload = true; - nesting.clone = [ - { - services.nginx.virtualHosts.localhost = { - root = lib.mkForce (pkgs.runCommand "testdir2" {} '' - mkdir "$out" - echo content changed > "$out/index.html" - ''); - }; - } + specialisation.etagSystem.configuration = { + services.nginx.virtualHosts.localhost = { + root = lib.mkForce (pkgs.runCommand "testdir2" {} '' + mkdir "$out" + echo content changed > "$out/index.html" + ''); + }; + }; - { - services.nginx.virtualHosts."1.my.test".listen = [ { addr = "127.0.0.1"; port = 8080; }]; - } + specialisation.justReloadSystem.configuration = { + services.nginx.virtualHosts."1.my.test".listen = [ { addr = "127.0.0.1"; port = 8080; }]; + }; - { - services.nginx.package = pkgs.nginxUnstable; - } - ]; + specialisation.reloadRestartSystem.configuration = { + services.nginx.package = pkgs.nginxUnstable; + }; + + specialisation.reloadWithErrorsSystem.configuration = { + services.nginx.package = pkgs.nginxUnstable; + services.nginx.virtualHosts."!@$$(#*%".locations."~@#*$*!)".proxyPass = ";;;"; + }; }; - }; testScript = { nodes, ... }: let - etagSystem = "${nodes.webserver.config.system.build.toplevel}/fine-tune/child-1"; - justReloadSystem = "${nodes.webserver.config.system.build.toplevel}/fine-tune/child-2"; - reloadRestartSystem = "${nodes.webserver.config.system.build.toplevel}/fine-tune/child-3"; + etagSystem = "${nodes.webserver.config.system.build.toplevel}/specialisation/etagSystem"; + justReloadSystem = "${nodes.webserver.config.system.build.toplevel}/specialisation/justReloadSystem"; + reloadRestartSystem = "${nodes.webserver.config.system.build.toplevel}/specialisation/reloadRestartSystem"; + reloadWithErrorsSystem = "${nodes.webserver.config.system.build.toplevel}/specialisation/reloadWithErrorsSystem"; in '' - my $url = 'http://localhost/index.html'; + url = "http://localhost/index.html" - sub checkEtag { - my $etag = $webserver->succeed( - 'curl -v '.$url.' 2>&1 | sed -n -e "s/^< [Ee][Tt][Aa][Gg]: *//p"' - ); - $etag =~ s/\r?\n$//; - my $httpCode = $webserver->succeed( - 'curl -w "%{http_code}" -X HEAD -H \'If-None-Match: '.$etag.'\' '.$url - ); - chomp $httpCode; - die "HTTP code is not 304" unless $httpCode == 304; - return $etag; - } - $webserver->waitForUnit("nginx"); - $webserver->waitForOpenPort("80"); + def check_etag(): + etag = webserver.succeed( + f'curl -v {url} 2>&1 | sed -n -e "s/^< etag: *//ip"' + ).rstrip() + http_code = webserver.succeed( + f"curl -w '%{{http_code}}' --head --fail -H 'If-None-Match: {etag}' {url}" + ) + assert http_code.split("\n")[-1] == "304" - subtest "check ETag if serving Nix store paths", sub { - my $oldEtag = checkEtag; - $webserver->succeed("${etagSystem}/bin/switch-to-configuration test >&2"); - $webserver->sleep(1); # race condition - my $newEtag = checkEtag; - die "Old ETag $oldEtag is the same as $newEtag" if $oldEtag eq $newEtag; - }; + return etag - subtest "config is reloaded on nixos-rebuild switch", sub { - $webserver->succeed("${justReloadSystem}/bin/switch-to-configuration test >&2"); - $webserver->waitForOpenPort("8080"); - $webserver->fail("journalctl -u nginx | grep -q -i stopped"); - $webserver->succeed("journalctl -u nginx | grep -q -i reloaded"); - }; - subtest "restart when nginx package changes", sub { - $webserver->succeed("${reloadRestartSystem}/bin/switch-to-configuration test >&2"); - $webserver->waitForUnit("nginx"); - $webserver->succeed("journalctl -u nginx | grep -q -i stopped"); - }; + webserver.wait_for_unit("nginx") + webserver.wait_for_open_port(80) + + with subtest("check ETag if serving Nix store paths"): + old_etag = check_etag() + webserver.succeed( + "${etagSystem}/bin/switch-to-configuration test >&2" + ) + webserver.sleep(1) + new_etag = check_etag() + assert old_etag != new_etag + + with subtest("config is reloaded on nixos-rebuild switch"): + webserver.succeed( + "${justReloadSystem}/bin/switch-to-configuration test >&2" + ) + webserver.wait_for_open_port(8080) + webserver.fail("journalctl -u nginx | grep -q -i stopped") + webserver.succeed("journalctl -u nginx | grep -q -i reloaded") + + with subtest("restart when nginx package changes"): + webserver.succeed( + "${reloadRestartSystem}/bin/switch-to-configuration test >&2" + ) + webserver.wait_for_unit("nginx") + webserver.succeed("journalctl -u nginx | grep -q -i stopped") + + with subtest("nixos-rebuild --switch should fail when there are configuration errors"): + webserver.fail( + "${reloadWithErrorsSystem}/bin/switch-to-configuration test >&2" + ) + webserver.succeed("[[ $(systemctl is-failed nginx-config-reload) == failed ]]") + webserver.succeed("[[ $(systemctl is-failed nginx) == active ]]") + # just to make sure operation is idempotent. During development I had a situation + # when first time it shows error, but stops showing it on subsequent rebuilds + webserver.fail( + "${reloadWithErrorsSystem}/bin/switch-to-configuration test >&2" + ) ''; }) diff --git a/nixos/tests/nsd.nix b/nixos/tests/nsd.nix index c3c91e71b5c..bcc14e817a8 100644 --- a/nixos/tests/nsd.nix +++ b/nixos/tests/nsd.nix @@ -5,7 +5,7 @@ let # for a host utility with IPv6 support environment.systemPackages = [ pkgs.bind ]; }; -in import ./make-test.nix ({ pkgs, ...} : { +in import ./make-test-python.nix ({ pkgs, ...} : { name = "nsd"; meta = with pkgs.stdenv.lib.maintainers; { maintainers = [ aszlig ]; @@ -65,37 +65,35 @@ in import ./make-test.nix ({ pkgs, ...} : { }; testScript = '' - startAll; + start_all() - $clientv4->waitForUnit("network.target"); - $clientv6->waitForUnit("network.target"); - $server->waitForUnit("nsd.service"); + clientv4.wait_for_unit("network.target") + clientv6.wait_for_unit("network.target") + server.wait_for_unit("nsd.service") - sub assertHost { - my ($type, $rr, $query, $expected) = @_; - my $self = $type eq 4 ? $clientv4 : $clientv6; - my $out = $self->succeed("host -$type -t $rr $query"); - $self->log("output: $out"); - chomp $out; - die "DNS IPv$type query on $query gave '$out' instead of '$expected'" - if ($out !~ $expected); - } - foreach (4, 6) { - subtest "ipv$_", sub { - assertHost($_, "a", "example.com", qr/has no [^ ]+ record/); - assertHost($_, "aaaa", "example.com", qr/has no [^ ]+ record/); + def assert_host(type, rr, query, expected): + self = clientv4 if type == 4 else clientv6 + out = self.succeed(f"host -{type} -t {rr} {query}").rstrip() + self.log(f"output: {out}") + assert re.search( + expected, out + ), f"DNS IPv{type} query on {query} gave '{out}' instead of '{expected}'" - assertHost($_, "soa", "example.com", qr/SOA.*?noc\.example\.com/); - assertHost($_, "a", "ipv4.example.com", qr/address 1.2.3.4$/); - assertHost($_, "aaaa", "ipv6.example.com", qr/address abcd::eeff$/); - assertHost($_, "a", "deleg.example.com", qr/address 9.8.7.6$/); - assertHost($_, "aaaa", "deleg.example.com", qr/address fedc::bbaa$/); + for ipv in 4, 6: + with subtest(f"IPv{ipv}"): + assert_host(ipv, "a", "example.com", "has no [^ ]+ record") + assert_host(ipv, "aaaa", "example.com", "has no [^ ]+ record") - assertHost($_, "a", "root", qr/address 1.8.7.4$/); - assertHost($_, "aaaa", "root", qr/address acbd::4$/); - }; - } + assert_host(ipv, "soa", "example.com", "SOA.*?noc\.example\.com") + assert_host(ipv, "a", "ipv4.example.com", "address 1.2.3.4$") + assert_host(ipv, "aaaa", "ipv6.example.com", "address abcd::eeff$") + + assert_host(ipv, "a", "deleg.example.com", "address 9.8.7.6$") + assert_host(ipv, "aaaa", "deleg.example.com", "address fedc::bbaa$") + + assert_host(ipv, "a", "root", "address 1.8.7.4$") + assert_host(ipv, "aaaa", "root", "address acbd::4$") ''; }) diff --git a/nixos/tests/openarena.nix b/nixos/tests/openarena.nix index b315426532b..395ed9153ea 100644 --- a/nixos/tests/openarena.nix +++ b/nixos/tests/openarena.nix @@ -1,41 +1,71 @@ -import ./make-test-python.nix ({ pkgs, ...} : { - name = "openarena"; - meta = with pkgs.stdenv.lib.maintainers; { - maintainers = [ tomfitzhenry ]; - }; +import ./make-test-python.nix ({ pkgs, ...} : - machine = +let + client = { pkgs, ... }: - { imports = []; - environment.systemPackages = with pkgs; [ - socat - ]; - services.openarena = { - enable = true; - extraFlags = [ - "+set dedicated 2" - "+set sv_hostname 'My NixOS server'" - "+map oa_dm1" - ]; - }; + { imports = [ ./common/x11.nix ]; + hardware.opengl.driSupport = true; + environment.systemPackages = [ pkgs.openarena ]; + }; + +in { + name = "openarena"; + meta = with pkgs.stdenv.lib.maintainers; { + maintainers = [ fpletz ]; + }; + + nodes = + { server = + { services.openarena = { + enable = true; + extraFlags = [ "+set g_gametype 0" "+map oa_dm7" "+addbot Angelyss" "+addbot Arachna" ]; + openPorts = true; + }; + }; + + client1 = client; + client2 = client; }; testScript = '' - machine.wait_for_unit("openarena.service") - machine.wait_until_succeeds("ss --numeric --udp --listening | grep -q 27960") + start_all() - # The log line containing 'resolve address' is last and only message that occurs after - # the server starts accepting clients. - machine.wait_until_succeeds( - "journalctl -u openarena.service | grep 'resolve address: dpmaster.deathmask.net'" + server.wait_for_unit("openarena") + server.wait_until_succeeds("ss --numeric --udp --listening | grep -q 27960") + + client1.wait_for_x() + client2.wait_for_x() + + client1.execute("openarena +set r_fullscreen 0 +set name Foo +connect server &") + client2.execute("openarena +set r_fullscreen 0 +set name Bar +connect server &") + + server.wait_until_succeeds( + "journalctl -u openarena -e | grep -q 'Foo.*entered the game'" + ) + server.wait_until_succeeds( + "journalctl -u openarena -e | grep -q 'Bar.*entered the game'" ) - # Check it's possible to join the server. - # Can't use substring match instead of grep because the output is not utf-8 - machine.succeed( - "echo -n -e '\\xff\\xff\\xff\\xffgetchallenge' | socat - UDP4-DATAGRAM:127.0.0.1:27960 | grep -q challengeResponse" - ) + server.sleep(10) # wait for a while to get a nice screenshot + + client1.screenshot("screen_client1_1") + client2.screenshot("screen_client2_1") + + client1.block() + + server.sleep(10) + + client1.screenshot("screen_client1_2") + client2.screenshot("screen_client2_2") + + client1.unblock() + + server.sleep(10) + + client1.screenshot("screen_client1_3") + client2.screenshot("screen_client2_3") ''; + }) diff --git a/nixos/tests/opensmtpd.nix b/nixos/tests/opensmtpd.nix index e6f52db1d98..17c1a569ba0 100644 --- a/nixos/tests/opensmtpd.nix +++ b/nixos/tests/opensmtpd.nix @@ -121,5 +121,5 @@ import ./make-test-python.nix { client.succeed("check-mail-landed >&2") ''; - meta.timeout = 30; + meta.timeout = 1800; } diff --git a/nixos/tests/openstack-image.nix b/nixos/tests/openstack-image.nix index d0225016ab7..97c9137fe1d 100644 --- a/nixos/tests/openstack-image.nix +++ b/nixos/tests/openstack-image.nix @@ -16,8 +16,14 @@ let ../maintainers/scripts/openstack/openstack-image.nix ../modules/testing/test-instrumentation.nix ../modules/profiles/qemu-guest.nix + { + # Needed by nixos-rebuild due to lack of network access. + system.extraDependencies = with pkgs; [ + stdenv + ]; + } ]; - }).config.system.build.openstackImage; + }).config.system.build.openstackImage + "/nixos.qcow2"; sshKeys = import ./ssh-keys.nix pkgs; snakeOilPrivateKey = sshKeys.snakeOilPrivateKey.text; diff --git a/nixos/tests/orangefs.nix b/nixos/tests/orangefs.nix index 46d7a6a72f8..24b7737058c 100644 --- a/nixos/tests/orangefs.nix +++ b/nixos/tests/orangefs.nix @@ -10,11 +10,11 @@ let virtualisation.emptyDiskImages = [ 4096 ]; fileSystems = pkgs.lib.mkVMOverride - [ { mountPoint = "/data"; - device = "/dev/disk/by-label/data"; - fsType = "ext4"; - } - ]; + { "/data" = + { device = "/dev/disk/by-label/data"; + fsType = "ext4"; + }; + }; services.orangefs.server = { enable = true; diff --git a/nixos/tests/os-prober.nix b/nixos/tests/os-prober.nix index 5407a62339f..6a38f5ca531 100644 --- a/nixos/tests/os-prober.nix +++ b/nixos/tests/os-prober.nix @@ -51,6 +51,8 @@ let hashed-mirrors = connect-timeout = 1 ''; + # save some memory + documentation.enable = false; }; # /etc/nixos/configuration.nix for the vm configFile = pkgs.writeText "configuration.nix" '' diff --git a/nixos/tests/php/default.nix b/nixos/tests/php/default.nix new file mode 100644 index 00000000000..9ab14f722d0 --- /dev/null +++ b/nixos/tests/php/default.nix @@ -0,0 +1,7 @@ +{ system ? builtins.currentSystem, + config ? {}, + pkgs ? import ../../.. { inherit system config; } +}: { + fpm = import ./fpm.nix { inherit system pkgs; }; + pcre = import ./pcre.nix { inherit system pkgs; }; +} diff --git a/nixos/tests/php/fpm.nix b/nixos/tests/php/fpm.nix new file mode 100644 index 00000000000..e93a3183418 --- /dev/null +++ b/nixos/tests/php/fpm.nix @@ -0,0 +1,55 @@ +import ../make-test-python.nix ({pkgs, ...}: { + name = "php-fpm-nginx-test"; + meta.maintainers = with pkgs.stdenv.lib.maintainers; [ etu ]; + + machine = { config, lib, pkgs, ... }: { + services.nginx = { + enable = true; + + virtualHosts."phpfpm" = let + testdir = pkgs.writeTextDir "web/index.php" " - ''; + ''; in '' Alias / ${testRoot}/ @@ -30,11 +27,11 @@ import ./make-test-python.nix ({ ...}: { }; }; testScript = { ... }: - '' - machine.wait_for_unit("httpd.service") - # Ensure php evaluation by matching on the var_dump syntax - assert 'string(${toString (builtins.stringLength testString)}) "${testString}"' in machine.succeed( - "curl -vvv -s http://127.0.0.1:80/index.php" - ) - ''; + '' + machine.wait_for_unit("httpd.service") + # Ensure php evaluation by matching on the var_dump syntax + assert 'string(${toString (builtins.stringLength testString)}) "${testString}"' in machine.succeed( + "curl -vvv -s http://127.0.0.1:80/index.php" + ) + ''; }) diff --git a/nixos/tests/plotinus.nix b/nixos/tests/plotinus.nix index 609afe7b214..39a4234dbf7 100644 --- a/nixos/tests/plotinus.nix +++ b/nixos/tests/plotinus.nix @@ -1,4 +1,4 @@ -import ./make-test.nix ({ pkgs, ... }: { +import ./make-test-python.nix ({ pkgs, ... }: { name = "plotinus"; meta = { maintainers = pkgs.plotinus.meta.maintainers; @@ -12,16 +12,17 @@ import ./make-test.nix ({ pkgs, ... }: { environment.systemPackages = [ pkgs.gnome3.gnome-calculator pkgs.xdotool ]; }; - testScript = - '' - $machine->waitForX; - $machine->succeed("gnome-calculator &"); - $machine->waitForWindow(qr/gnome-calculator/); - $machine->succeed("xdotool search --sync --onlyvisible --class gnome-calculator windowfocus --sync key ctrl+shift+p"); - $machine->sleep(5); # wait for the popup - $machine->succeed("xdotool key --delay 100 p r e f e r e n c e s Return"); - $machine->waitForWindow(qr/Preferences/); - $machine->screenshot("screen"); - ''; - + testScript = '' + machine.wait_for_x() + machine.succeed("gnome-calculator &") + machine.wait_for_window("gnome-calculator") + machine.succeed( + "xdotool search --sync --onlyvisible --class gnome-calculator " + + "windowfocus --sync key --clearmodifiers --delay 1 'ctrl+shift+p'" + ) + machine.sleep(5) # wait for the popup + machine.succeed("xdotool key --delay 100 p r e f e r e n c e s Return") + machine.wait_for_window("Preferences") + machine.screenshot("screen") + ''; }) diff --git a/nixos/tests/postgresql-wal-receiver.nix b/nixos/tests/postgresql-wal-receiver.nix index 791b041ba95..372dd9d8c1c 100644 --- a/nixos/tests/postgresql-wal-receiver.nix +++ b/nixos/tests/postgresql-wal-receiver.nix @@ -6,17 +6,24 @@ with import ../lib/testing.nix { inherit system pkgs; }; with pkgs.lib; let + makePostgresqlWalReceiverTest = subTestName: postgresqlPackage: let + postgresqlDataDir = "/var/db/postgresql/test"; replicationUser = "wal_receiver_user"; replicationSlot = "wal_receiver_slot"; replicationConn = "postgresql://${replicationUser}@localhost"; baseBackupDir = "/tmp/pg_basebackup"; walBackupDir = "/tmp/pg_wal"; - recoveryConf = pkgs.writeText "recovery.conf" '' + atLeast12 = versionAtLeast postgresqlPackage.version "12.0"; + restoreCommand = '' restore_command = 'cp ${walBackupDir}/%f %p' ''; - makePostgresqlWalReceiverTest = subTestName: postgresqlPackage: makeTest { + recoveryFile = if atLeast12 + then pkgs.writeTextDir "recovery.signal" "" + else pkgs.writeTextDir "recovery.conf" "${restoreCommand}"; + + in makeTest { name = "postgresql-wal-receiver-${subTestName}"; meta.maintainers = with maintainers; [ pacien ]; @@ -29,6 +36,9 @@ let wal_level = archive # alias for replica on pg >= 9.6 max_wal_senders = 10 max_replication_slots = 10 + '' + optionalString atLeast12 '' + ${restoreCommand} + recovery_end_command = 'touch recovery.done' ''; authentication = '' host replication ${replicationUser} all trust @@ -45,6 +55,9 @@ let slot = replicationSlot; directory = walBackupDir; }; + # This is only to speedup test, it isn't time racing. Service is set to autorestart always, + # default 60sec is fine for real system, but is too much for a test + systemd.services.postgresql-wal-receiver-main.serviceConfig.RestartSec = mkForce 5; }; testScript = '' @@ -70,7 +83,7 @@ let # prepare WAL and recovery $machine->succeed('chmod a+rX -R ${walBackupDir}'); $machine->execute('for part in ${walBackupDir}/*.partial; do mv $part ''${part%%.*}; done'); # make use of partial segments too - $machine->succeed('cp ${recoveryConf} ${postgresqlDataDir}/recovery.conf && chmod 666 ${postgresqlDataDir}/recovery.conf'); + $machine->succeed('cp ${recoveryFile}/* ${postgresqlDataDir}/ && chmod 666 ${postgresqlDataDir}/recovery*'); # replay WAL $machine->systemctl('start postgresql'); diff --git a/nixos/tests/postgresql.nix b/nixos/tests/postgresql.nix index e71c3888288..3201e22555e 100644 --- a/nixos/tests/postgresql.nix +++ b/nixos/tests/postgresql.nix @@ -29,11 +29,15 @@ let machine = {...}: { - services.postgresql.enable = true; - services.postgresql.package = postgresql-package; + services.postgresql = { + enable = true; + package = postgresql-package; + }; - services.postgresqlBackup.enable = true; - services.postgresqlBackup.databases = optional (!backup-all) "postgres"; + services.postgresqlBackup = { + enable = true; + databases = optional (!backup-all) "postgres"; + }; }; testScript = let @@ -49,23 +53,32 @@ let machine.start() machine.wait_for_unit("postgresql") - # postgresql should be available just after unit start - machine.succeed( - "cat ${test-sql} | sudo -u postgres psql" - ) - machine.shutdown() # make sure that postgresql survive restart (bug #1735) - time.sleep(2) - machine.start() - machine.wait_for_unit("postgresql") + with subtest("Postgresql is available just after unit start"): + machine.succeed( + "cat ${test-sql} | sudo -u postgres psql" + ) + + with subtest("Postgresql survives restart (bug #1735)"): + machine.shutdown() + time.sleep(2) + machine.start() + machine.wait_for_unit("postgresql") + machine.fail(check_count("SELECT * FROM sth;", 3)) machine.succeed(check_count("SELECT * FROM sth;", 5)) machine.fail(check_count("SELECT * FROM sth;", 4)) machine.succeed(check_count("SELECT xpath('/test/text()', doc) FROM xmltest;", 1)) - # Check backup service - machine.succeed("systemctl start ${backupService}.service") - machine.succeed("zcat /var/backup/postgresql/${backupName}.sql.gz | grep 'ok'") - machine.succeed("stat -c '%a' /var/backup/postgresql/${backupName}.sql.gz | grep 600") + with subtest("Backup service works"): + machine.succeed( + "systemctl start ${backupService}.service", + "zcat /var/backup/postgresql/${backupName}.sql.gz | grep 'ok'", + "stat -c '%a' /var/backup/postgresql/${backupName}.sql.gz | grep 600", + ) + + with subtest("Initdb works"): + machine.succeed("sudo -u postgres initdb -D /tmp/testpostgres2") + machine.shutdown() ''; diff --git a/nixos/tests/predictable-interface-names.nix b/nixos/tests/predictable-interface-names.nix index 83883477a5c..bab091d57ac 100644 --- a/nixos/tests/predictable-interface-names.nix +++ b/nixos/tests/predictable-interface-names.nix @@ -17,6 +17,12 @@ in pkgs.lib.listToAttrs (pkgs.lib.crossLists (predictable: withNetworkd: { networking.useNetworkd = withNetworkd; networking.dhcpcd.enable = !withNetworkd; networking.useDHCP = !withNetworkd; + + # Check if predictable interface names are working in stage-1 + boot.initrd.postDeviceCommands = '' + ip link + ip link show eth0 ${if predictable then "&&" else "||"} exit 1 + ''; }; testScript = '' diff --git a/nixos/tests/printing.nix b/nixos/tests/printing.nix index 4d0df289cf7..355c94a0386 100644 --- a/nixos/tests/printing.nix +++ b/nixos/tests/printing.nix @@ -1,19 +1,18 @@ # Test printing via CUPS. -import ./make-test.nix ({pkgs, ... }: +import ./make-test-python.nix ({pkgs, ... }: let printingServer = startWhenNeeded: { services.printing.enable = true; services.printing.startWhenNeeded = startWhenNeeded; services.printing.listenAddresses = [ "*:631" ]; services.printing.defaultShared = true; - services.printing.extraConf = - '' - - Order allow,deny - Allow from all - - ''; + services.printing.extraConf = '' + + Order allow,deny + Allow from all + + ''; networking.firewall.allowedTCPPorts = [ 631 ]; # Add a HP Deskjet printer connected via USB to the server. hardware.printers.ensurePrinters = [{ @@ -34,9 +33,7 @@ let hardware.printers.ensureDefaultPrinter = "DeskjetRemote"; }; -in - -{ +in { name = "printing"; meta = with pkgs.stdenv.lib.maintainers; { maintainers = [ domenkozar eelco matthewbauer ]; @@ -50,65 +47,91 @@ in serviceClient = { ... }: (printingClient false); }; - testScript = - '' - startAll; + testScript = '' + import os + import re + import sys - # Make sure that cups is up on both sides. - $serviceServer->waitForUnit("cups.service"); - $serviceClient->waitForUnit("cups.service"); - # wait until cups is fully initialized and ensure-printers has executed with 10s delay - $serviceClient->sleep(20); - $socketActivatedClient->waitUntilSucceeds("systemctl status ensure-printers | grep -q -E 'code=exited, status=0/SUCCESS'"); - sub testPrinting { - my ($client, $server) = (@_); - my $clientHostname = $client->name(); - my $serverHostname = $server->name(); - $client->succeed("lpstat -r") =~ /scheduler is running/ or die; - # Test that UNIX socket is used for connections. - $client->succeed("lpstat -H") =~ "/var/run/cups/cups.sock" or die; - # Test that HTTP server is available too. - $client->succeed("curl --fail http://localhost:631/"); - $client->succeed("curl --fail http://$serverHostname:631/"); - $server->fail("curl --fail --connect-timeout 2 http://$clientHostname:631/"); - # Do some status checks. - $client->succeed("lpstat -a") =~ /DeskjetRemote accepting requests/ or die; - $client->succeed("lpstat -h $serverHostname:631 -a") =~ /DeskjetLocal accepting requests/ or die; - $client->succeed("cupsdisable DeskjetRemote"); - $client->succeed("lpq") =~ /DeskjetRemote is not ready.*no entries/s or die; - $client->succeed("cupsenable DeskjetRemote"); - $client->succeed("lpq") =~ /DeskjetRemote is ready.*no entries/s or die; - # Test printing various file types. - foreach my $file ("${pkgs.groff.doc}/share/doc/*/examples/mom/penguin.pdf", - "${pkgs.groff.doc}/share/doc/*/meref.ps", - "${pkgs.cups.out}/share/doc/cups/images/cups.png", - "${pkgs.pcre.doc}/share/doc/pcre/pcre.txt") - { - $file =~ /([^\/]*)$/; my $fn = $1; - subtest "print $fn", sub { - # Print the file on the client. - $client->succeed("lp $file"); - $client->waitUntilSucceeds("lpq | grep -q -E 'active.*root.*$fn'"); - # Ensure that a raw PCL file appeared in the server's queue - # (showing that the right filters have been applied). Of - # course, since there is no actual USB printer attached, the - # file will stay in the queue forever. - $server->waitForFile("/var/spool/cups/d*-001"); - $server->waitUntilSucceeds("lpq -a | grep -q -E '$fn'"); - # Delete the job on the client. It should disappear on the - # server as well. - $client->succeed("lprm"); - $client->waitUntilSucceeds("lpq -a | grep -q -E 'no entries'"); - Machine::retry sub { - return 1 if $server->succeed("lpq -a") =~ /no entries/; - }; - # The queue is empty already, so this should be safe. - # Otherwise, pairs of "c*"-"d*-001" files might persist. - $server->execute("rm /var/spool/cups/*"); - }; - } - } - testPrinting($serviceClient, $serviceServer); - testPrinting($socketActivatedClient, $socketActivatedServer); + start_all() + + with subtest("Make sure that cups is up on both sides"): + serviceServer.wait_for_unit("cups.service") + serviceClient.wait_for_unit("cups.service") + + with subtest( + "Wait until cups is fully initialized and ensure-printers has " + "executed with 10s delay" + ): + serviceClient.sleep(20) + socketActivatedClient.wait_until_succeeds( + "systemctl status ensure-printers | grep -q -E 'code=exited, status=0/SUCCESS'" + ) + + + def test_printing(client, server): + assert "scheduler is running" in client.succeed("lpstat -r") + + with subtest("UNIX socket is used for connections"): + assert "/var/run/cups/cups.sock" in client.succeed("lpstat -H") + with subtest("HTTP server is available too"): + client.succeed("curl --fail http://localhost:631/") + client.succeed(f"curl --fail http://{server.name}:631/") + server.fail(f"curl --fail --connect-timeout 2 http://{client.name}:631/") + + with subtest("LP status checks"): + assert "DeskjetRemote accepting requests" in client.succeed("lpstat -a") + assert "DeskjetLocal accepting requests" in client.succeed( + f"lpstat -h {server.name}:631 -a" + ) + client.succeed("cupsdisable DeskjetRemote") + out = client.succeed("lpq") + print(out) + assert re.search( + "DeskjetRemote is not ready.*no entries", + client.succeed("lpq"), + flags=re.DOTALL, + ) + client.succeed("cupsenable DeskjetRemote") + assert re.match( + "DeskjetRemote is ready.*no entries", client.succeed("lpq"), flags=re.DOTALL + ) + + # Test printing various file types. + for file in [ + "${pkgs.groff.doc}/share/doc/*/examples/mom/penguin.pdf", + "${pkgs.groff.doc}/share/doc/*/meref.ps", + "${pkgs.cups.out}/share/doc/cups/images/cups.png", + "${pkgs.pcre.doc}/share/doc/pcre/pcre.txt", + ]: + file_name = os.path.basename(file) + with subtest(f"print {file_name}"): + # Print the file on the client. + print(client.succeed("lpq")) + client.succeed(f"lp {file}") + client.wait_until_succeeds( + f"lpq; lpq | grep -q -E 'active.*root.*{file_name}'" + ) + + # Ensure that a raw PCL file appeared in the server's queue + # (showing that the right filters have been applied). Of + # course, since there is no actual USB printer attached, the + # file will stay in the queue forever. + server.wait_for_file("/var/spool/cups/d*-001") + server.wait_until_succeeds(f"lpq -a | grep -q -E '{file_name}'") + + # Delete the job on the client. It should disappear on the + # server as well. + client.succeed("lprm") + client.wait_until_succeeds("lpq -a | grep -q -E 'no entries'") + + retry(lambda _: "no entries" in server.succeed("lpq -a")) + + # The queue is empty already, so this should be safe. + # Otherwise, pairs of "c*"-"d*-001" files might persist. + server.execute("rm /var/spool/cups/*") + + + test_printing(serviceClient, serviceServer) + test_printing(socketActivatedClient, socketActivatedServer) ''; }) diff --git a/nixos/tests/prometheus-exporters.nix b/nixos/tests/prometheus-exporters.nix index 563f2472647..4fc3668cfaf 100644 --- a/nixos/tests/prometheus-exporters.nix +++ b/nixos/tests/prometheus-exporters.nix @@ -224,7 +224,7 @@ let after = [ "postfix.service" ]; requires = [ "postfix.service" ]; preStart = '' - mkdir -p 0600 mail-exporter/new + mkdir -p -m 0700 mail-exporter/new ''; serviceConfig = { ProtectHome = true; @@ -245,6 +245,46 @@ let ''; }; + mikrotik = { + exporterConfig = { + enable = true; + extraFlags = [ "-timeout=1s" ]; + configuration = { + devices = [ + { + name = "router"; + address = "192.168.42.48"; + user = "prometheus"; + password = "shh"; + } + ]; + features = { + bgp = true; + dhcp = true; + dhcpl = true; + dhcpv6 = true; + health = true; + routes = true; + poe = true; + pools = true; + optics = true; + w60g = true; + wlansta = true; + wlanif = true; + monitor = true; + ipsec = true; + }; + }; + }; + exporterTest = '' + wait_for_unit("prometheus-mikrotik-exporter.service") + wait_for_open_port(9436) + succeed( + "curl -sSf http://localhost:9436/metrics | grep -q 'mikrotik_scrape_collector_success{device=\"router\"} 0'" + ) + ''; + }; + nextcloud = { exporterConfig = { enable = true; @@ -287,7 +327,7 @@ let services.nginx = { enable = true; statusPage = true; - virtualHosts."/".extraConfig = "return 204;"; + virtualHosts."test".extraConfig = "return 204;"; }; }; exporterTest = '' @@ -363,6 +403,7 @@ let }; metricProvider = { services.rspamd.enable = true; + virtualisation.memorySize = 1024; }; exporterTest = '' wait_for_unit("rspamd.service") diff --git a/nixos/tests/proxy.nix b/nixos/tests/proxy.nix index 1f39e903cdd..6a14a9af59a 100644 --- a/nixos/tests/proxy.nix +++ b/nixos/tests/proxy.nix @@ -1,96 +1,90 @@ -import ./make-test.nix ({ pkgs, ...} : +import ./make-test-python.nix ({ pkgs, ...} : let - - backend = - { pkgs, ... }: - - { services.httpd.enable = true; - services.httpd.adminAddr = "foo@example.org"; - services.httpd.documentRoot = "${pkgs.valgrind.doc}/share/doc/valgrind/html"; - networking.firewall.allowedTCPPorts = [ 80 ]; + backend = { pkgs, ... }: { + services.httpd = { + enable = true; + adminAddr = "foo@example.org"; + virtualHosts.localhost.documentRoot = "${pkgs.valgrind.doc}/share/doc/valgrind/html"; }; - -in - -{ + networking.firewall.allowedTCPPorts = [ 80 ]; + }; +in { name = "proxy"; meta = with pkgs.stdenv.lib.maintainers; { maintainers = [ eelco ]; }; - nodes = - { proxy = - { nodes, ... }: + nodes = { + proxy = { nodes, ... }: { + services.httpd = { + enable = true; + adminAddr = "bar@example.org"; + extraModules = [ "proxy_balancer" "lbmethod_byrequests" ]; + extraConfig = '' + ExtendedStatus on + ''; + virtualHosts.localhost = { + extraConfig = '' + + Require all granted + SetHandler server-status + - { services.httpd.enable = true; - services.httpd.adminAddr = "bar@example.org"; - services.httpd.extraModules = [ "proxy_balancer" "lbmethod_byrequests" ]; + + Require all granted + BalancerMember http://${nodes.backend1.config.networking.hostName} retry=0 + BalancerMember http://${nodes.backend2.config.networking.hostName} retry=0 + - services.httpd.extraConfig = - '' - ExtendedStatus on + ProxyStatus full + ProxyPass /server-status ! + ProxyPass / balancer://cluster/ + ProxyPassReverse / balancer://cluster/ - - Require all granted - SetHandler server-status - - - - Require all granted - BalancerMember http://${nodes.backend1.config.networking.hostName} retry=0 - BalancerMember http://${nodes.backend2.config.networking.hostName} retry=0 - - - ProxyStatus full - ProxyPass /server-status ! - ProxyPass / balancer://cluster/ - ProxyPassReverse / balancer://cluster/ - - # For testing; don't want to wait forever for dead backend servers. - ProxyTimeout 5 - ''; - - networking.firewall.allowedTCPPorts = [ 80 ]; + # For testing; don't want to wait forever for dead backend servers. + ProxyTimeout 5 + ''; }; - - backend1 = backend; - backend2 = backend; - - client = { ... }: { }; + }; + networking.firewall.allowedTCPPorts = [ 80 ]; }; - testScript = - '' - startAll; + backend1 = backend; + backend2 = backend; - $proxy->waitForUnit("httpd"); - $backend1->waitForUnit("httpd"); - $backend2->waitForUnit("httpd"); - $client->waitForUnit("network.target"); + client = { ... }: { }; + }; - # With the back-ends up, the proxy should work. - $client->succeed("curl --fail http://proxy/"); + testScript = '' + start_all() - $client->succeed("curl --fail http://proxy/server-status"); + proxy.wait_for_unit("httpd") + backend1.wait_for_unit("httpd") + backend2.wait_for_unit("httpd") + client.wait_for_unit("network.target") - # Block the first back-end. - $backend1->block; + # With the back-ends up, the proxy should work. + client.succeed("curl --fail http://proxy/") - # The proxy should still work. - $client->succeed("curl --fail http://proxy/"); + client.succeed("curl --fail http://proxy/server-status") - $client->succeed("curl --fail http://proxy/"); + # Block the first back-end. + backend1.block() - # Block the second back-end. - $backend2->block; + # The proxy should still work. + client.succeed("curl --fail http://proxy/") + client.succeed("curl --fail http://proxy/") - # Now the proxy should fail as well. - $client->fail("curl --fail http://proxy/"); + # Block the second back-end. + backend2.block() - # But if the second back-end comes back, the proxy should start - # working again. - $backend2->unblock; - $client->succeed("curl --fail http://proxy/"); - ''; + # Now the proxy should fail as well. + client.fail("curl --fail http://proxy/") + + # But if the second back-end comes back, the proxy should start + # working again. + backend2.unblock() + client.succeed("curl --fail http://proxy/") + ''; }) diff --git a/nixos/tests/quorum.nix b/nixos/tests/quorum.nix new file mode 100644 index 00000000000..846d2a93018 --- /dev/null +++ b/nixos/tests/quorum.nix @@ -0,0 +1,79 @@ +import ./make-test-python.nix ({ pkgs, ... }: { + name = "quorum"; + meta = with pkgs.stdenv.lib.maintainers; { + maintainers = [ mmahut ]; + }; + + nodes = { + machine = { ... }: { + services.quorum = { + enable = true; + permissioned = false; + staticNodes = [ "enode://dd333ec28f0a8910c92eb4d336461eea1c20803eed9cf2c056557f986e720f8e693605bba2f4e8f289b1162e5ac7c80c914c7178130711e393ca76abc1d92f57@0.0.0.0:30303?discport=0" ]; + genesis = { + alloc = { + "189d23d201b03ae1cf9113672df29a5d672aefa3" = { + balance = "0x446c3b15f9926687d2c40534fdb564000000000000"; + }; + "44b07d2c28b8ed8f02b45bd84ac7d9051b3349e6" = { + balance = "0x446c3b15f9926687d2c40534fdb564000000000000"; + }; + "4c1ccd426833b9782729a212c857f2f03b7b4c0d" = { + balance = "0x446c3b15f9926687d2c40534fdb564000000000000"; + }; + "7ae555d0f6faad7930434abdaac2274fd86ab516" = { + balance = "0x446c3b15f9926687d2c40534fdb564000000000000"; + }; + c1056df7c02b6f1a353052eaf0533cc7cb743b52 = { + balance = "0x446c3b15f9926687d2c40534fdb564000000000000"; + }; + }; + coinbase = "0x0000000000000000000000000000000000000000"; + config = { + byzantiumBlock = 1; + chainId = 10; + eip150Block = 1; + eip150Hash = + "0x0000000000000000000000000000000000000000000000000000000000000000"; + eip155Block = 1; + eip158Block = 1; + isQuorum = true; + istanbul = { + epoch = 30000; + policy = 0; + }; + }; + difficulty = "0x1"; + extraData = + "0x0000000000000000000000000000000000000000000000000000000000000000f8aff869944c1ccd426833b9782729a212c857f2f03b7b4c0d94189d23d201b03ae1cf9113672df29a5d672aefa39444b07d2c28b8ed8f02b45bd84ac7d9051b3349e694c1056df7c02b6f1a353052eaf0533cc7cb743b52947ae555d0f6faad7930434abdaac2274fd86ab516b8410000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0"; + gasLimit = "0xe0000000"; + gasUsed = "0x0"; + mixHash = + "0x63746963616c2062797a616e74696e65206661756c7420746f6c6572616e6365"; + nonce = "0x0"; + number = "0x0"; + parentHash = + "0x0000000000000000000000000000000000000000000000000000000000000000"; + timestamp = "0x5cffc201"; + }; + }; + }; + }; + + testScript = '' + start_all() + machine.wait_until_succeeds("mkdir -p /var/lib/quorum/keystore") + machine.wait_until_succeeds( + 'echo \{\\"address\\":\\"9377bc3936de934c497e22917b81aa8774ac3bb0\\",\\"crypto\\":\{\\"cipher\\":\\"aes-128-ctr\\",\\"ciphertext\\":\\"ad8341d8ef225650403fd366c955f41095e438dd966a3c84b3d406818c1e366c\\",\\"cipherparams\\":\{\\"iv\\":\\"2a09f7a72fd6dff7c43150ff437e6ac2\\"\},\\"kdf\\":\\"scrypt\\",\\"kdfparams\\":\{\\"dklen\\":32,\\"n\\":262144,\\"p\\":1,\\"r\\":8,\\"salt\\":\\"d1a153845bb80cd6274c87c5bac8ac09fdfac5ff131a6f41b5ed319667f12027\\"\},\\"mac\\":\\"a9621ad88fa1d042acca6fc2fcd711f7e05bfbadea3f30f379235570c8e270d3\\"\},\\"id\\":\\"89e847a3-1527-42f6-a321-77de0a14ce02\\",\\"version\\":3\}\\" > /var/lib/quorum/keystore/UTC--2020-03-23T11-08-34.144812212Z--9377bc3936de934c497e22917b81aa8774ac3bb0' + ) + machine.wait_until_succeeds( + "echo fe2725c4e8f7617764b845e8d939a65c664e7956eb47ed7d934573f16488efc1 > /var/lib/quorum/nodekey" + ) + machine.wait_until_succeeds("systemctl restart quorum") + machine.wait_for_unit("quorum.service") + machine.sleep(15) + machine.wait_until_succeeds( + 'geth attach /var/lib/quorum/geth.ipc --exec "eth.accounts" | grep 0x9377bc3936de934c497e22917b81aa8774ac3bb0' + ) + ''; +}) diff --git a/nixos/tests/rabbitmq.nix b/nixos/tests/rabbitmq.nix index 8e7f34d06e3..f403e4ac2ed 100644 --- a/nixos/tests/rabbitmq.nix +++ b/nixos/tests/rabbitmq.nix @@ -15,7 +15,7 @@ import ./make-test-python.nix ({ pkgs, ... }: { machine.wait_for_unit("rabbitmq.service") machine.wait_until_succeeds( - 'su -s ${pkgs.stdenv.shell} rabbitmq -c "rabbitmqctl status"' + 'su -s ${pkgs.runtimeShell} rabbitmq -c "rabbitmqctl status"' ) ''; }) diff --git a/nixos/tests/redmine.nix b/nixos/tests/redmine.nix index f0f4cbf6a21..73eb684f33a 100644 --- a/nixos/tests/redmine.nix +++ b/nixos/tests/redmine.nix @@ -15,13 +15,13 @@ let services.redmine.database.type = "mysql2"; services.redmine.plugins = { redmine_env_auth = pkgs.fetchurl { - url = https://github.com/Intera/redmine_env_auth/archive/0.7.zip; + url = "https://github.com/Intera/redmine_env_auth/archive/0.7.zip"; sha256 = "1xb8lyarc7mpi86yflnlgyllh9hfwb9z304f19dx409gqpia99sc"; }; }; services.redmine.themes = { dkuk-redmine_alex_skin = pkgs.fetchurl { - url = https://bitbucket.org/dkuk/redmine_alex_skin/get/1842ef675ef3.zip; + url = "https://bitbucket.org/dkuk/redmine_alex_skin/get/1842ef675ef3.zip"; sha256 = "0hrin9lzyi50k4w2bd2b30vrf1i4fi1c0gyas5801wn8i7kpm9yl"; }; }; @@ -43,13 +43,13 @@ let services.redmine.database.type = "postgresql"; services.redmine.plugins = { redmine_env_auth = pkgs.fetchurl { - url = https://github.com/Intera/redmine_env_auth/archive/0.7.zip; + url = "https://github.com/Intera/redmine_env_auth/archive/0.7.zip"; sha256 = "1xb8lyarc7mpi86yflnlgyllh9hfwb9z304f19dx409gqpia99sc"; }; }; services.redmine.themes = { dkuk-redmine_alex_skin = pkgs.fetchurl { - url = https://bitbucket.org/dkuk/redmine_alex_skin/get/1842ef675ef3.zip; + url = "https://bitbucket.org/dkuk/redmine_alex_skin/get/1842ef675ef3.zip"; sha256 = "0hrin9lzyi50k4w2bd2b30vrf1i4fi1c0gyas5801wn8i7kpm9yl"; }; }; diff --git a/nixos/tests/restic.nix b/nixos/tests/restic.nix new file mode 100644 index 00000000000..67bb7f1933d --- /dev/null +++ b/nixos/tests/restic.nix @@ -0,0 +1,63 @@ +import ./make-test-python.nix ( + { pkgs, ... }: + + let + password = "some_password"; + repository = "/tmp/restic-backup"; + passwordFile = pkgs.writeText "password" "correcthorsebatterystaple"; + in + { + name = "restic"; + + meta = with pkgs.stdenv.lib.maintainers; { + maintainers = [ bbigras ]; + }; + + nodes = { + server = + { ... }: + { + services.restic.backups = { + remotebackup = { + inherit repository; + passwordFile = "${passwordFile}"; + initialize = true; + paths = [ "/opt" ]; + pruneOpts = [ + "--keep-daily 2" + "--keep-weekly 1" + "--keep-monthly 1" + "--keep-yearly 99" + ]; + }; + }; + }; + }; + + testScript = '' + server.start() + server.wait_for_unit("dbus.socket") + server.fail( + "${pkgs.restic}/bin/restic -r ${repository} -p ${passwordFile} snapshots" + ) + server.succeed( + "mkdir -p /opt", + "touch /opt/some_file", + "timedatectl set-time '2016-12-13 13:45'", + "systemctl start restic-backups-remotebackup.service", + '${pkgs.restic}/bin/restic -r ${repository} -p ${passwordFile} snapshots -c | grep -e "^1 snapshot"', + "timedatectl set-time '2017-12-13 13:45'", + "systemctl start restic-backups-remotebackup.service", + "timedatectl set-time '2018-12-13 13:45'", + "systemctl start restic-backups-remotebackup.service", + "timedatectl set-time '2018-12-14 13:45'", + "systemctl start restic-backups-remotebackup.service", + "timedatectl set-time '2018-12-15 13:45'", + "systemctl start restic-backups-remotebackup.service", + "timedatectl set-time '2018-12-16 13:45'", + "systemctl start restic-backups-remotebackup.service", + '${pkgs.restic}/bin/restic -r ${repository} -p ${passwordFile} snapshots -c | grep -e "^4 snapshot"', + ) + ''; + } +) diff --git a/nixos/tests/riak.nix b/nixos/tests/riak.nix index 68a9b7315b3..6915779e7e9 100644 --- a/nixos/tests/riak.nix +++ b/nixos/tests/riak.nix @@ -1,21 +1,18 @@ -import ./make-test.nix { +import ./make-test-python.nix ({ lib, pkgs, ... }: { name = "riak"; + meta = with lib.maintainers; { + maintainers = [ filalex77 ]; + }; - nodes = { - master = - { pkgs, ... }: - - { - services.riak.enable = true; - services.riak.package = pkgs.riak; - }; + machine = { + services.riak.enable = true; + services.riak.package = pkgs.riak; }; testScript = '' - startAll; + machine.start() - $master->waitForUnit("riak"); - $master->sleep(20); # Hopefully this is long enough!! - $master->succeed("riak ping 2>&1"); + machine.wait_for_unit("riak") + machine.wait_until_succeeds("riak ping 2>&1") ''; -} +}) diff --git a/nixos/tests/roundcube.nix b/nixos/tests/roundcube.nix index 1897b53e283..97e1125694b 100644 --- a/nixos/tests/roundcube.nix +++ b/nixos/tests/roundcube.nix @@ -12,6 +12,7 @@ import ./make-test-python.nix ({ pkgs, ...} : { database.password = "not production"; package = pkgs.roundcube.withPlugins (plugins: [ plugins.persistent_login ]); plugins = [ "persistent_login" ]; + dicts = with pkgs.aspellDicts; [ en fr de ]; }; services.nginx.virtualHosts.roundcube = { forceSSL = false; diff --git a/nixos/tests/rsyslogd.nix b/nixos/tests/rsyslogd.nix index f17e61814c5..50523920c60 100644 --- a/nixos/tests/rsyslogd.nix +++ b/nixos/tests/rsyslogd.nix @@ -3,40 +3,38 @@ pkgs ? import ../.. { inherit system config; } }: -with import ../lib/testing.nix { inherit system pkgs; }; +with import ../lib/testing-python.nix { inherit system pkgs; }; with pkgs.lib; { test1 = makeTest { name = "rsyslogd-test1"; - meta.maintainers = [ maintainers.aanderse ]; + meta.maintainers = [ pkgs.stdenv.lib.maintainers.aanderse ]; - machine = - { config, pkgs, ... }: - { services.rsyslogd.enable = true; - services.journald.forwardToSyslog = false; - }; + machine = { config, pkgs, ... }: { + services.rsyslogd.enable = true; + services.journald.forwardToSyslog = false; + }; # ensure rsyslogd isn't receiving messages from journald if explicitly disabled testScript = '' - $machine->waitForUnit("default.target"); - $machine->fail("test -f /var/log/messages"); + machine.wait_for_unit("default.target") + machine.fail("test -f /var/log/messages") ''; }; test2 = makeTest { name = "rsyslogd-test2"; - meta.maintainers = [ maintainers.aanderse ]; + meta.maintainers = [ pkgs.stdenv.lib.maintainers.aanderse ]; - machine = - { config, pkgs, ... }: - { services.rsyslogd.enable = true; - }; + machine = { config, pkgs, ... }: { + services.rsyslogd.enable = true; + }; # ensure rsyslogd is receiving messages from journald testScript = '' - $machine->waitForUnit("default.target"); - $machine->succeed("test -f /var/log/messages"); + machine.wait_for_unit("default.target") + machine.succeed("test -f /var/log/messages") ''; }; } diff --git a/nixos/tests/run-in-machine.nix b/nixos/tests/run-in-machine.nix index 339a4b9a740..67840f3e9fe 100644 --- a/nixos/tests/run-in-machine.nix +++ b/nixos/tests/run-in-machine.nix @@ -3,7 +3,7 @@ pkgs ? import ../.. { inherit system config; } }: -with import ../lib/testing.nix { inherit system pkgs; }; +with import ../lib/testing-python.nix { inherit system pkgs; }; let output = runInMachine { diff --git a/nixos/tests/rxe.nix b/nixos/tests/rxe.nix index 194a2e3d2b9..10753c4ed0c 100644 --- a/nixos/tests/rxe.nix +++ b/nixos/tests/rxe.nix @@ -28,7 +28,7 @@ in { # Test if rxe interface comes up server.wait_for_unit("default.target") server.succeed("systemctl status rxe.service") - server.succeed("ibv_devices | grep rxe0") + server.succeed("ibv_devices | grep rxe_eth1") client.wait_for_unit("default.target") diff --git a/nixos/tests/sanoid.nix b/nixos/tests/sanoid.nix new file mode 100644 index 00000000000..284b38932cc --- /dev/null +++ b/nixos/tests/sanoid.nix @@ -0,0 +1,90 @@ +import ./make-test-python.nix ({ pkgs, ... }: let + inherit (import ./ssh-keys.nix pkgs) + snakeOilPrivateKey snakeOilPublicKey; + + commonConfig = { pkgs, ... }: { + virtualisation.emptyDiskImages = [ 2048 ]; + boot.supportedFilesystems = [ "zfs" ]; + environment.systemPackages = [ pkgs.parted ]; + }; +in { + name = "sanoid"; + meta = with pkgs.stdenv.lib.maintainers; { + maintainers = [ lopsided98 ]; + }; + + nodes = { + source = { ... }: { + imports = [ commonConfig ]; + networking.hostId = "daa82e91"; + + programs.ssh.extraConfig = '' + UserKnownHostsFile=/dev/null + StrictHostKeyChecking=no + ''; + + services.sanoid = { + enable = true; + templates.test = { + hourly = 12; + daily = 1; + monthly = 1; + yearly = 1; + + autosnap = true; + }; + datasets."pool/test".useTemplate = [ "test" ]; + }; + + services.syncoid = { + enable = true; + sshKey = "/root/.ssh/id_ecdsa"; + commonArgs = [ "--no-sync-snap" ]; + commands."pool/test".target = "root@target:pool/test"; + }; + }; + target = { ... }: { + imports = [ commonConfig ]; + networking.hostId = "dcf39d36"; + + services.openssh.enable = true; + users.users.root.openssh.authorizedKeys.keys = [ snakeOilPublicKey ]; + }; + }; + + testScript = '' + source.succeed( + "mkdir /tmp/mnt", + "parted --script /dev/vdb -- mklabel msdos mkpart primary 1024M -1s", + "udevadm settle", + "zpool create pool /dev/vdb1", + "zfs create -o mountpoint=legacy pool/test", + "mount -t zfs pool/test /tmp/mnt", + "udevadm settle", + ) + target.succeed( + "parted --script /dev/vdb -- mklabel msdos mkpart primary 1024M -1s", + "udevadm settle", + "zpool create pool /dev/vdb1", + "udevadm settle", + ) + + source.succeed("mkdir -m 700 /root/.ssh") + source.succeed( + "cat '${snakeOilPrivateKey}' > /root/.ssh/id_ecdsa" + ) + source.succeed("chmod 600 /root/.ssh/id_ecdsa") + + source.succeed("touch /tmp/mnt/test.txt") + source.systemctl("start --wait sanoid.service") + + target.wait_for_open_port(22) + source.systemctl("start --wait syncoid.service") + target.succeed( + "mkdir /tmp/mnt", + "zfs set mountpoint=legacy pool/test", + "mount -t zfs pool/test /tmp/mnt", + ) + target.succeed("cat /tmp/mnt/test.txt") + ''; +}) diff --git a/nixos/tests/service-runner.nix b/nixos/tests/service-runner.nix new file mode 100644 index 00000000000..adb3fcd36d7 --- /dev/null +++ b/nixos/tests/service-runner.nix @@ -0,0 +1,36 @@ +import ./make-test-python.nix ({ pkgs, ... }: { + name = "service-runner"; + meta = with pkgs.stdenv.lib.maintainers; { + maintainers = [ roberth ]; + }; + + nodes = { + machine = { pkgs, lib, ... }: { + services.nginx.enable = true; + services.nginx.virtualHosts.machine.root = pkgs.runCommand "webroot" {} '' + mkdir $out + echo 'yay' >$out/index.html + ''; + systemd.services.nginx.enable = false; + }; + + }; + + testScript = { nodes, ... }: '' + url = "http://localhost/index.html" + + with subtest("check systemd.services.nginx.runner"): + machine.fail(f"curl {url}") + machine.succeed( + """ + mkdir -p /run/nginx /var/spool/nginx/logs + ${nodes.machine.config.systemd.services.nginx.runner} & + echo $!>my-nginx.pid + """ + ) + machine.wait_for_open_port(80) + machine.succeed(f"curl {url}") + machine.succeed("kill -INT $(cat my-nginx.pid)") + machine.wait_for_closed_port(80) + ''; +}) diff --git a/nixos/tests/signal-desktop.nix b/nixos/tests/signal-desktop.nix index c746d46dc55..e4b830e9e23 100644 --- a/nixos/tests/signal-desktop.nix +++ b/nixos/tests/signal-desktop.nix @@ -15,8 +15,9 @@ import ./make-test-python.nix ({ pkgs, ...} : ]; services.xserver.enable = true; - services.xserver.displayManager.auto.user = "alice"; + test-support.displayManager.auto.user = "alice"; environment.systemPackages = [ pkgs.signal-desktop ]; + virtualisation.memorySize = 1024; }; enableOCR = true; diff --git a/nixos/tests/slurm.nix b/nixos/tests/slurm.nix index 17527378cf0..d0e62d15437 100644 --- a/nixos/tests/slurm.nix +++ b/nixos/tests/slurm.nix @@ -119,7 +119,7 @@ in { with subtest("can_start_slurmctld"): control.succeed("systemctl restart slurmctld") - control.waitForUnit("slurmctld.service") + control.wait_for_unit("slurmctld.service") with subtest("can_start_slurmd"): for node in [node1, node2, node3]: diff --git a/nixos/tests/solr.nix b/nixos/tests/solr.nix index 2108e851bc5..dc5770e16bc 100644 --- a/nixos/tests/solr.nix +++ b/nixos/tests/solr.nix @@ -1,40 +1,37 @@ -{ system ? builtins.currentSystem, - config ? {}, - pkgs ? import ../.. { inherit system config; } -}: +import ./make-test-python.nix ({ pkgs, ... }: -with import ../lib/testing.nix { inherit system pkgs; }; -with pkgs.lib; +{ + name = "solr"; + meta.maintainers = [ pkgs.stdenv.lib.maintainers.aanderse ]; -let - solrTest = package: makeTest { - machine = - { config, pkgs, ... }: - { - # Ensure the virtual machine has enough memory for Solr to avoid the following error: - # - # OpenJDK 64-Bit Server VM warning: - # INFO: os::commit_memory(0x00000000e8000000, 402653184, 0) - # failed; error='Cannot allocate memory' (errno=12) - # - # There is insufficient memory for the Java Runtime Environment to continue. - # Native memory allocation (mmap) failed to map 402653184 bytes for committing reserved memory. - virtualisation.memorySize = 2000; + machine = + { config, pkgs, ... }: + { + # Ensure the virtual machine has enough memory for Solr to avoid the following error: + # + # OpenJDK 64-Bit Server VM warning: + # INFO: os::commit_memory(0x00000000e8000000, 402653184, 0) + # failed; error='Cannot allocate memory' (errno=12) + # + # There is insufficient memory for the Java Runtime Environment to continue. + # Native memory allocation (mmap) failed to map 402653184 bytes for committing reserved memory. + virtualisation.memorySize = 2000; - services.solr.enable = true; - services.solr.package = package; - }; + services.solr.enable = true; + }; - testScript = '' - startAll; + testScript = '' + start_all() - $machine->waitForUnit('solr.service'); - $machine->waitForOpenPort('8983'); - $machine->succeed('curl --fail http://localhost:8983/solr/'); + machine.wait_for_unit("solr.service") + machine.wait_for_open_port(8983) + machine.succeed("curl --fail http://localhost:8983/solr/") - # adapted from pkgs.solr/examples/films/README.txt - $machine->succeed('sudo -u solr solr create -c films'); - $machine->succeed(q(curl http://localhost:8983/solr/films/schema -X POST -H 'Content-type:application/json' --data-binary '{ + # adapted from pkgs.solr/examples/films/README.txt + machine.succeed("sudo -u solr solr create -c films") + assert '"status":0' in machine.succeed( + """ + curl http://localhost:8983/solr/films/schema -X POST -H 'Content-type:application/json' --data-binary '{ "add-field" : { "name":"name", "type":"text_general", @@ -46,20 +43,14 @@ let "type":"pdate", "stored":true } - }')) =~ /"status":0/ or die; - $machine->succeed('sudo -u solr post -c films ${pkgs.solr}/example/films/films.json'); - $machine->succeed('curl http://localhost:8983/solr/films/query?q=name:batman') =~ /"name":"Batman Begins"/ or die; - ''; - }; -in -{ - solr_7 = solrTest pkgs.solr_7 // { - name = "solr_7"; - meta.maintainers = [ lib.maintainers.aanderse ]; - }; - - solr_8 = solrTest pkgs.solr_8 // { - name = "solr_8"; - meta.maintainers = [ lib.maintainers.aanderse ]; - }; -} + }' + """ + ) + machine.succeed( + "sudo -u solr post -c films ${pkgs.solr}/example/films/films.json" + ) + assert '"name":"Batman Begins"' in machine.succeed( + "curl http://localhost:8983/solr/films/query?q=name:batman" + ) + ''; +}) diff --git a/nixos/tests/spacecookie.nix b/nixos/tests/spacecookie.nix new file mode 100644 index 00000000000..6eff32a2e75 --- /dev/null +++ b/nixos/tests/spacecookie.nix @@ -0,0 +1,51 @@ +let + gopherRoot = "/tmp/gopher"; + gopherHost = "gopherd"; + fileContent = "Hello Gopher!"; + fileName = "file.txt"; +in + import ./make-test-python.nix ({...}: { + name = "spacecookie"; + nodes = { + ${gopherHost} = { + networking.firewall.allowedTCPPorts = [ 70 ]; + systemd.services.spacecookie = { + preStart = '' + mkdir -p ${gopherRoot}/directory + echo "${fileContent}" > ${gopherRoot}/${fileName} + ''; + }; + + services.spacecookie = { + enable = true; + root = gopherRoot; + hostname = gopherHost; + }; + }; + + client = {}; + }; + + testScript = '' + start_all() + ${gopherHost}.wait_for_open_port(70) + ${gopherHost}.wait_for_unit("spacecookie.service") + client.wait_for_unit("network.target") + + fileResponse = client.succeed("curl -s gopher://${gopherHost}//${fileName}") + + # the file response should return our created file exactly + if not (fileResponse == "${fileContent}\n"): + raise Exception("Unexpected file response") + + # sanity check on the directory listing: we serve a directory and a file + # via gopher, so the directory listing should have exactly two entries, + # one with gopher file type 0 (file) and one with file type 1 (directory). + dirResponse = client.succeed("curl -s gopher://${gopherHost}") + dirEntries = [l[0] for l in dirResponse.split("\n") if len(l) > 0] + dirEntries.sort() + + if not (["0", "1"] == dirEntries): + raise Exception("Unexpected directory response") + ''; + }) diff --git a/nixos/tests/specialisation.nix b/nixos/tests/specialisation.nix new file mode 100644 index 00000000000..b8d4b8279f4 --- /dev/null +++ b/nixos/tests/specialisation.nix @@ -0,0 +1,43 @@ +import ./make-test-python.nix { + name = "specialisation"; + nodes = { + inheritconf = { pkgs, ... }: { + environment.systemPackages = [ pkgs.cowsay ]; + specialisation.inheritconf.configuration = { pkgs, ... }: { + environment.systemPackages = [ pkgs.hello ]; + }; + }; + noinheritconf = { pkgs, ... }: { + environment.systemPackages = [ pkgs.cowsay ]; + specialisation.noinheritconf = { + inheritParentConfig = false; + configuration = { pkgs, ... }: { + environment.systemPackages = [ pkgs.hello ]; + }; + }; + }; + }; + testScript = '' + inheritconf.wait_for_unit("default.target") + inheritconf.succeed("cowsay hey") + inheritconf.fail("hello") + + with subtest("Nested clones do inherit from parent"): + inheritconf.succeed( + "/run/current-system/specialisation/inheritconf/bin/switch-to-configuration test" + ) + inheritconf.succeed("cowsay hey") + inheritconf.succeed("hello") + + noinheritconf.wait_for_unit("default.target") + noinheritconf.succeed("cowsay hey") + noinheritconf.fail("hello") + + with subtest("Nested children do not inherit from parent"): + noinheritconf.succeed( + "/run/current-system/specialisation/noinheritconf/bin/switch-to-configuration test" + ) + noinheritconf.fail("cowsay hey") + noinheritconf.succeed("hello") + ''; +} diff --git a/nixos/tests/switch-test.nix b/nixos/tests/switch-test.nix index 7076bd77b77..9ef96cec5ef 100644 --- a/nixos/tests/switch-test.nix +++ b/nixos/tests/switch-test.nix @@ -22,7 +22,7 @@ import ./make-test-python.nix ({ pkgs, ...} : { # Ensures failures pass through using pipefail, otherwise failing to # switch-to-configuration is hidden by the success of `tee`. stderrRunner = pkgs.writeScript "stderr-runner" '' - #! ${pkgs.stdenv.shell} + #! ${pkgs.runtimeShell} set -e set -o pipefail exec env -i "$@" | tee /dev/stderr diff --git a/nixos/tests/sympa.nix b/nixos/tests/sympa.nix new file mode 100644 index 00000000000..280691f7cb4 --- /dev/null +++ b/nixos/tests/sympa.nix @@ -0,0 +1,36 @@ +import ./make-test-python.nix ({ pkgs, lib, ... }: { + name = "sympa"; + meta.maintainers = with lib.maintainers; [ mmilata ]; + + machine = + { ... }: + { + virtualisation.memorySize = 1024; + + services.sympa = { + enable = true; + domains = { + "lists.example.org" = { + webHost = "localhost"; + }; + }; + listMasters = [ "joe@example.org" ]; + web.enable = true; + web.https = false; + database = { + type = "PostgreSQL"; + createLocally = true; + }; + }; + }; + + testScript = '' + start_all() + + machine.wait_for_unit("sympa.service") + machine.wait_for_unit("wwsympa.service") + assert "Mailing lists service" in machine.succeed( + "curl --insecure -L http://localhost/" + ) + ''; +}) diff --git a/nixos/tests/systemd-confinement.nix b/nixos/tests/systemd-confinement.nix index b7b10fb36aa..f22836e227b 100644 --- a/nixos/tests/systemd-confinement.nix +++ b/nixos/tests/systemd-confinement.nix @@ -3,14 +3,14 @@ import ./make-test.nix { machine = { pkgs, lib, ... }: let testServer = pkgs.writeScript "testserver.sh" '' - #!${pkgs.stdenv.shell} + #!${pkgs.runtimeShell} export PATH=${lib.escapeShellArg "${pkgs.coreutils}/bin"} - ${lib.escapeShellArg pkgs.stdenv.shell} 2>&1 + ${lib.escapeShellArg pkgs.runtimeShell} 2>&1 echo "exit-status:$?" ''; testClient = pkgs.writeScriptBin "chroot-exec" '' - #!${pkgs.stdenv.shell} -e + #!${pkgs.runtimeShell} -e output="$(echo "$@" | nc -NU "/run/test$(< /teststep).sock")" ret="$(echo "$output" | sed -nre '$s/^exit-status:([0-9]+)$/\1/p')" echo "$output" | head -n -1 diff --git a/nixos/tests/systemd-networkd-vrf.nix b/nixos/tests/systemd-networkd-vrf.nix new file mode 100644 index 00000000000..af7813a2e60 --- /dev/null +++ b/nixos/tests/systemd-networkd-vrf.nix @@ -0,0 +1,221 @@ +import ./make-test-python.nix ({ pkgs, lib, ... }: let + inherit (import ./ssh-keys.nix pkgs) snakeOilPrivateKey snakeOilPublicKey; +in { + name = "systemd-networkd-vrf"; + meta.maintainers = with lib.maintainers; [ ma27 ]; + + nodes = { + client = { pkgs, ... }: { + virtualisation.vlans = [ 1 2 ]; + + networking = { + useDHCP = false; + useNetworkd = true; + firewall.checkReversePath = "loose"; + }; + + systemd.network = { + enable = true; + + netdevs."10-vrf1" = { + netdevConfig = { + Kind = "vrf"; + Name = "vrf1"; + MTUBytes = "1300"; + }; + vrfConfig.Table = 23; + }; + netdevs."10-vrf2" = { + netdevConfig = { + Kind = "vrf"; + Name = "vrf2"; + MTUBytes = "1300"; + }; + vrfConfig.Table = 42; + }; + + networks."10-vrf1" = { + matchConfig.Name = "vrf1"; + networkConfig.IPForward = "yes"; + routes = [ + { routeConfig = { Destination = "192.168.1.2"; Metric = "100"; }; } + ]; + }; + networks."10-vrf2" = { + matchConfig.Name = "vrf2"; + networkConfig.IPForward = "yes"; + routes = [ + { routeConfig = { Destination = "192.168.2.3"; Metric = "100"; }; } + ]; + }; + + networks."10-eth1" = { + matchConfig.Name = "eth1"; + linkConfig.RequiredForOnline = "no"; + networkConfig = { + VRF = "vrf1"; + Address = "192.168.1.1"; + IPForward = "yes"; + }; + }; + networks."10-eth2" = { + matchConfig.Name = "eth2"; + linkConfig.RequiredForOnline = "no"; + networkConfig = { + VRF = "vrf2"; + Address = "192.168.2.1"; + IPForward = "yes"; + }; + }; + }; + }; + + node1 = { pkgs, ... }: { + virtualisation.vlans = [ 1 ]; + networking = { + useDHCP = false; + useNetworkd = true; + }; + + services.openssh.enable = true; + users.users.root.openssh.authorizedKeys.keys = [ snakeOilPublicKey ]; + + systemd.network = { + enable = true; + + networks."10-eth1" = { + matchConfig.Name = "eth1"; + linkConfig.RequiredForOnline = "no"; + networkConfig = { + Address = "192.168.1.2"; + IPForward = "yes"; + }; + }; + }; + }; + + node2 = { pkgs, ... }: { + virtualisation.vlans = [ 2 ]; + networking = { + useDHCP = false; + useNetworkd = true; + }; + + systemd.network = { + enable = true; + + networks."10-eth2" = { + matchConfig.Name = "eth2"; + linkConfig.RequiredForOnline = "no"; + networkConfig = { + Address = "192.168.2.3"; + IPForward = "yes"; + }; + }; + }; + }; + + node3 = { pkgs, ... }: { + virtualisation.vlans = [ 2 ]; + networking = { + useDHCP = false; + useNetworkd = true; + }; + + systemd.network = { + enable = true; + + networks."10-eth2" = { + matchConfig.Name = "eth2"; + linkConfig.RequiredForOnline = "no"; + networkConfig = { + Address = "192.168.2.4"; + IPForward = "yes"; + }; + }; + }; + }; + }; + + testScript = '' + def compare_tables(expected, actual): + assert ( + expected == actual + ), """ + Routing tables don't match! + Expected: + {} + Actual: + {} + """.format( + expected, actual + ) + + + start_all() + + client.wait_for_unit("network.target") + node1.wait_for_unit("network.target") + node2.wait_for_unit("network.target") + node3.wait_for_unit("network.target") + + client_ipv4_table = """ + 192.168.1.2 dev vrf1 proto static metric 100 + 192.168.2.3 dev vrf2 proto static metric 100 + """.strip() + vrf1_table = """ + broadcast 192.168.1.0 dev eth1 proto kernel scope link src 192.168.1.1 + 192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.1 + local 192.168.1.1 dev eth1 proto kernel scope host src 192.168.1.1 + broadcast 192.168.1.255 dev eth1 proto kernel scope link src 192.168.1.1 + """.strip() + vrf2_table = """ + broadcast 192.168.2.0 dev eth2 proto kernel scope link src 192.168.2.1 + 192.168.2.0/24 dev eth2 proto kernel scope link src 192.168.2.1 + local 192.168.2.1 dev eth2 proto kernel scope host src 192.168.2.1 + broadcast 192.168.2.255 dev eth2 proto kernel scope link src 192.168.2.1 + """.strip() + + # Check that networkd properly configures the main routing table + # and the routing tables for the VRF. + with subtest("check vrf routing tables"): + compare_tables( + client_ipv4_table, client.succeed("ip -4 route list | head -n2").strip() + ) + compare_tables( + vrf1_table, client.succeed("ip -4 route list table 23 | head -n4").strip() + ) + compare_tables( + vrf2_table, client.succeed("ip -4 route list table 42 | head -n4").strip() + ) + + # Ensure that other nodes are reachable via ICMP through the VRF. + with subtest("icmp through vrf works"): + client.succeed("ping -c5 192.168.1.2") + client.succeed("ping -c5 192.168.2.3") + + # Test whether SSH through a VRF IP is possible. + # (Note: this seems to be an issue on Linux 5.x, so I decided to add this to + # ensure that we catch this when updating the default kernel). + # with subtest("tcp traffic through vrf works"): + # node1.wait_for_open_port(22) + # client.succeed( + # "cat ${snakeOilPrivateKey} > privkey.snakeoil" + # ) + # client.succeed("chmod 600 privkey.snakeoil") + # client.succeed( + # "ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i privkey.snakeoil root@192.168.1.2 true" + # ) + + # Only configured routes through the VRF from the main routing table should + # work. Additional IPs are only reachable when binding to the vrf interface. + with subtest("only routes from main routing table work by default"): + client.fail("ping -c5 192.168.2.4") + client.succeed("ping -I vrf2 -c5 192.168.2.4") + + client.shutdown() + node1.shutdown() + node2.shutdown() + node3.shutdown() + ''; +}) diff --git a/nixos/tests/systemd-networkd-wireguard.nix b/nixos/tests/systemd-networkd.nix similarity index 65% rename from nixos/tests/systemd-networkd-wireguard.nix rename to nixos/tests/systemd-networkd.nix index be5c0da981d..319e5e94ece 100644 --- a/nixos/tests/systemd-networkd-wireguard.nix +++ b/nixos/tests/systemd-networkd.nix @@ -41,15 +41,25 @@ let generateNodeConf = { lib, pkgs, config, privk, pubk, peerId, nodeId, ...}: { { routeConfig = { Gateway = "10.0.0.${nodeId}"; Destination = "10.0.0.0/24"; }; } ]; }; - "90-eth1" = { + "30-eth1" = { matchConfig = { Name = "eth1"; }; - address = [ "192.168.1.${nodeId}/24" ]; + address = [ + "192.168.1.${nodeId}/24" + "fe80::${nodeId}/64" + ]; + routingPolicyRules = [ + { routingPolicyRuleConfig = { Table = 10; IncomingInterface = "eth1"; Family = "both"; };} + { routingPolicyRuleConfig = { Table = 20; OutgoingInterface = "eth1"; };} + { routingPolicyRuleConfig = { Table = 30; From = "192.168.1.1"; To = "192.168.1.2"; SourcePort = 666 ; DestinationPort = 667; };} + { routingPolicyRuleConfig = { Table = 40; IPProtocol = "tcp"; InvertRule = true; };} + { routingPolicyRuleConfig = { Table = 50; IncomingInterface = "eth1"; Family = "ipv4"; };} + ]; }; }; }; }; in import ./make-test-python.nix ({pkgs, ... }: { - name = "networkd-wireguard"; + name = "networkd"; meta = with pkgs.stdenv.lib.maintainers; { maintainers = [ ninjatrappeur ]; }; @@ -76,9 +86,28 @@ testScript = '' start_all() node1.wait_for_unit("systemd-networkd-wait-online.service") node2.wait_for_unit("systemd-networkd-wait-online.service") + + # ================================ + # Wireguard + # ================================ node1.succeed("ping -c 5 10.0.0.2") node2.succeed("ping -c 5 10.0.0.1") # Is the fwmark set? node2.succeed("wg | grep -q 42") + + # ================================ + # Routing Policies + # ================================ + # Testing all the routingPolicyRuleConfig members: + # Table + IncomingInterface + node1.succeed("sudo ip rule | grep 'from all iif eth1 lookup 10'") + # OutgoingInterface + node1.succeed("sudo ip rule | grep 'from all oif eth1 lookup 20'") + # From + To + SourcePort + DestinationPort + node1.succeed( + "sudo ip rule | grep 'from 192.168.1.1 to 192.168.1.2 sport 666 dport 667 lookup 30'" + ) + # IPProtocol + InvertRule + node1.succeed("sudo ip rule | grep 'not from all ipproto tcp lookup 40'") ''; }) diff --git a/nixos/tests/systemd.nix b/nixos/tests/systemd.nix index 4b71b4d6759..ca2e36a443e 100644 --- a/nixos/tests/systemd.nix +++ b/nixos/tests/systemd.nix @@ -1,4 +1,4 @@ -import ./make-test.nix ({ pkgs, ... }: { +import ./make-test-python.nix ({ pkgs, ... }: { name = "systemd"; machine = { lib, ... }: { @@ -19,10 +19,10 @@ import ./make-test.nix ({ pkgs, ... }: { systemd.extraConfig = "DefaultEnvironment=\"XXX_SYSTEM=foo\""; systemd.user.extraConfig = "DefaultEnvironment=\"XXX_USER=bar\""; services.journald.extraConfig = "Storage=volatile"; - services.xserver.displayManager.auto.user = "alice"; + test-support.displayManager.auto.user = "alice"; systemd.shutdown.test = pkgs.writeScript "test.shutdown" '' - #!${pkgs.stdenv.shell} + #!${pkgs.runtimeShell} PATH=${lib.makeBinPath (with pkgs; [ utillinux coreutils ])} mount -t 9p shared -o trans=virtio,version=9p2000.L /tmp/shared touch /tmp/shared/shutdown-test @@ -53,50 +53,69 @@ import ./make-test.nix ({ pkgs, ... }: { }; testScript = '' - $machine->waitForX; + import re + import subprocess + + machine.wait_for_x() # wait for user services - $machine->waitForUnit("default.target","alice"); + machine.wait_for_unit("default.target", "alice") # Regression test for https://github.com/NixOS/nixpkgs/issues/35415 - subtest "configuration files are recognized by systemd", sub { - $machine->succeed('test -e /system_conf_read'); - $machine->succeed('test -e /home/alice/user_conf_read'); - $machine->succeed('test -z $(ls -1 /var/log/journal)'); - }; + with subtest("configuration files are recognized by systemd"): + machine.succeed("test -e /system_conf_read") + machine.succeed("test -e /home/alice/user_conf_read") + machine.succeed("test -z $(ls -1 /var/log/journal)") # Regression test for https://github.com/NixOS/nixpkgs/issues/50273 - subtest "DynamicUser actually allocates a user", sub { - $machine->succeed('systemd-run --pty --property=Type=oneshot --property=DynamicUser=yes --property=User=iamatest whoami | grep iamatest'); - }; + with subtest("DynamicUser actually allocates a user"): + assert "iamatest" in machine.succeed( + "systemd-run --pty --property=Type=oneshot --property=DynamicUser=yes --property=User=iamatest whoami" + ) # Regression test for https://github.com/NixOS/nixpkgs/issues/35268 - subtest "file system with x-initrd.mount is not unmounted", sub { - $machine->succeed('mountpoint -q /test-x-initrd-mount'); - $machine->shutdown; - system('qemu-img', 'convert', '-O', 'raw', - 'vm-state-machine/empty2.qcow2', 'x-initrd-mount.raw'); - my $extinfo = `${pkgs.e2fsprogs}/bin/dumpe2fs x-initrd-mount.raw`; - die "File system was not cleanly unmounted: $extinfo" - unless $extinfo =~ /^Filesystem state: *clean$/m; - }; + with subtest("file system with x-initrd.mount is not unmounted"): + machine.succeed("mountpoint -q /test-x-initrd-mount") + machine.shutdown() - subtest "systemd-shutdown works", sub { - $machine->shutdown; - $machine->waitForUnit('multi-user.target'); - $machine->succeed('test -e /tmp/shared/shutdown-test'); - }; + subprocess.check_call( + [ + "qemu-img", + "convert", + "-O", + "raw", + "vm-state-machine/empty0.qcow2", + "x-initrd-mount.raw", + ] + ) + extinfo = subprocess.check_output( + [ + "${pkgs.e2fsprogs}/bin/dumpe2fs", + "x-initrd-mount.raw", + ] + ).decode("utf-8") + assert ( + re.search(r"^Filesystem state: *clean$", extinfo, re.MULTILINE) is not None + ), ("File system was not cleanly unmounted: " + extinfo) - # Test settings from /etc/sysctl.d/50-default.conf are applied - subtest "systemd sysctl settings are applied", sub { - $machine->waitForUnit('multi-user.target'); - $machine->succeed('sysctl net.core.default_qdisc | grep -q "fq_codel"'); - }; + with subtest("systemd-shutdown works"): + machine.shutdown() + machine.wait_for_unit("multi-user.target") + machine.succeed("test -e /tmp/shared/shutdown-test") - # Test cgroup accounting is enabled - subtest "systemd cgroup accounting is enabled", sub { - $machine->waitForUnit('multi-user.target'); - $machine->succeed('systemctl show testservice1.service -p IOAccounting | grep -q "yes"'); - $machine->succeed('systemctl status testservice1.service | grep -q "CPU:"'); - }; + # Test settings from /etc/sysctl.d/50-default.conf are applied + with subtest("systemd sysctl settings are applied"): + machine.wait_for_unit("multi-user.target") + assert "fq_codel" in machine.succeed("sysctl net.core.default_qdisc") + + # Test cgroup accounting is enabled + with subtest("systemd cgroup accounting is enabled"): + machine.wait_for_unit("multi-user.target") + assert "yes" in machine.succeed( + "systemctl show testservice1.service -p IOAccounting" + ) + + retcode, output = machine.execute("systemctl status testservice1.service") + assert retcode in [0, 3] # https://bugs.freedesktop.org/show_bug.cgi?id=77507 + assert "CPU:" in output ''; }) diff --git a/nixos/tests/tinydns.nix b/nixos/tests/tinydns.nix index c7740d5ade3..b80e3451700 100644 --- a/nixos/tests/tinydns.nix +++ b/nixos/tests/tinydns.nix @@ -21,6 +21,6 @@ import ./make-test-python.nix ({ lib, ...} : { testScript = '' nameserver.start() nameserver.wait_for_unit("tinydns.service") - nameserver.succeed("host bla.foo.bar | grep '1\.2\.3\.4'") + nameserver.succeed("host bla.foo.bar 192.168.1.1 | grep '1\.2\.3\.4'") ''; }) diff --git a/nixos/tests/traefik.nix b/nixos/tests/traefik.nix new file mode 100644 index 00000000000..0e21a7cf843 --- /dev/null +++ b/nixos/tests/traefik.nix @@ -0,0 +1,87 @@ +# Test Traefik as a reverse proxy of a local web service +# and a Docker container. +import ./make-test-python.nix ({ pkgs, ... }: { + name = "traefik"; + meta = with pkgs.stdenv.lib.maintainers; { + maintainers = [ joko ]; + }; + + nodes = { + client = { config, pkgs, ... }: { + environment.systemPackages = [ pkgs.curl ]; + }; + traefik = { config, pkgs, ... }: { + docker-containers.nginx = { + extraDockerOptions = [ + "-l" "traefik.enable=true" + "-l" "traefik.http.routers.nginx.entrypoints=web" + "-l" "traefik.http.routers.nginx.rule=Host(`nginx.traefik.test`)" + ]; + image = "nginx-container"; + imageFile = pkgs.dockerTools.examples.nginx; + }; + + networking.firewall.allowedTCPPorts = [ 80 ]; + + services.traefik = { + enable = true; + + dynamicConfigOptions = { + http.routers.simplehttp = { + rule = "Host(`simplehttp.traefik.test`)"; + entryPoints = [ "web" ]; + service = "simplehttp"; + }; + + http.services.simplehttp = { + loadBalancer.servers = [{ + url = "http://127.0.0.1:8000"; + }]; + }; + }; + + staticConfigOptions = { + global = { + checkNewVersion = false; + sendAnonymousUsage = false; + }; + + entryPoints.web.address = ":80"; + + providers.docker.exposedByDefault = false; + }; + }; + + systemd.services.simplehttp = { + script = "${pkgs.python3}/bin/python -m http.server 8000"; + serviceConfig.Type = "simple"; + wantedBy = [ "multi-user.target" ]; + }; + + users.users.traefik.extraGroups = [ "docker" ]; + }; + }; + + testScript = '' + start_all() + + traefik.wait_for_unit("docker-nginx.service") + traefik.wait_until_succeeds("docker ps | grep nginx-container") + traefik.wait_for_unit("simplehttp.service") + traefik.wait_for_unit("traefik.service") + traefik.wait_for_open_port(80) + traefik.wait_for_unit("multi-user.target") + + client.wait_for_unit("multi-user.target") + + with subtest("Check that a container can be reached via Traefik"): + assert "Hello from NGINX" in client.succeed( + "curl -sSf -H Host:nginx.traefik.test http://traefik/" + ) + + with subtest("Check that dynamic configuration works"): + assert "Directory listing for " in client.succeed( + "curl -sSf -H Host:simplehttp.traefik.test http://traefik/" + ) + ''; +}) diff --git a/nixos/tests/trilium-server.nix b/nixos/tests/trilium-server.nix new file mode 100644 index 00000000000..6346575b33d --- /dev/null +++ b/nixos/tests/trilium-server.nix @@ -0,0 +1,53 @@ +import ./make-test-python.nix ({ ... }: { + name = "trilium-server"; + nodes = { + default = { + services.trilium-server.enable = true; + }; + configured = { + services.trilium-server = { + enable = true; + dataDir = "/data/trilium"; + }; + }; + + nginx = { + services.trilium-server = { + enable = true; + nginx.enable = true; + nginx.hostName = "trilium.example.com"; + }; + }; + }; + + testScript = + '' + start_all() + + with subtest("by default works without configuration"): + default.wait_for_unit("trilium-server.service") + + with subtest("by default available on port 8080"): + default.wait_for_unit("trilium-server.service") + default.wait_for_open_port(8080) + # we output to /dev/null here to avoid a python UTF-8 decode error + # but the check will still fail if the service doesn't respond + default.succeed("curl --fail -o /dev/null 127.0.0.1:8080") + + with subtest("by default creates empty document"): + default.wait_for_unit("trilium-server.service") + default.succeed("test -f /var/lib/trilium/document.db") + + with subtest("configured with custom data store"): + configured.wait_for_unit("trilium-server.service") + configured.succeed("test -f /data/trilium/document.db") + + with subtest("nginx with custom host name"): + nginx.wait_for_unit("trilium-server.service") + nginx.wait_for_unit("nginx.service") + + nginx.succeed( + "curl --resolve 'trilium.example.com:80:127.0.0.1' http://trilium.example.com/" + ) + ''; +}) diff --git a/nixos/tests/tuptime.nix b/nixos/tests/tuptime.nix new file mode 100644 index 00000000000..36ce2b1ae19 --- /dev/null +++ b/nixos/tests/tuptime.nix @@ -0,0 +1,29 @@ +import ./make-test-python.nix ({ pkgs, ...} : { + name = "tuptime"; + meta = with pkgs.stdenv.lib.maintainers; { + maintainers = [ evils ]; + }; + + machine = { pkgs, ... }: { + imports = [ ../modules/profiles/minimal.nix ]; + services.tuptime.enable = true; + }; + + testScript = + '' + # see if it starts + start_all() + machine.wait_for_unit("multi-user.target") + machine.succeed("tuptime | grep 'System startups:[[:blank:]]*1'") + machine.succeed("tuptime | grep 'System uptime:[[:blank:]]*100.0%'") + machine.shutdown() + + # restart machine and see if it correctly reports the reboot + machine.start() + machine.wait_for_unit("multi-user.target") + machine.succeed("tuptime | grep 'System startups:[[:blank:]]*2'") + machine.succeed("tuptime | grep 'System shutdowns:[[:blank:]]*1 ok'") + machine.shutdown() + ''; +}) + diff --git a/nixos/tests/udisks2.nix b/nixos/tests/udisks2.nix index 0cbfa0c4c7b..64f5b6c40d2 100644 --- a/nixos/tests/udisks2.nix +++ b/nixos/tests/udisks2.nix @@ -3,7 +3,7 @@ import ./make-test-python.nix ({ pkgs, ... }: let stick = pkgs.fetchurl { - url = http://nixos.org/~eelco/nix/udisks-test.img.xz; + url = "http://nixos.org/~eelco/nix/udisks-test.img.xz"; sha256 = "0was1xgjkjad91nipzclaz5biv3m4b2nk029ga6nk7iklwi19l8b"; }; diff --git a/nixos/tests/upnp.nix b/nixos/tests/upnp.nix index d2e7fdd4fbe..a7d837ea070 100644 --- a/nixos/tests/upnp.nix +++ b/nixos/tests/upnp.nix @@ -56,9 +56,11 @@ in networking.firewall.enable = false; services.httpd.enable = true; - services.httpd.listen = [{ ip = "*"; port = 9000; }]; - services.httpd.adminAddr = "foo@example.org"; - services.httpd.documentRoot = "/tmp"; + services.httpd.virtualHosts.localhost = { + listen = [{ ip = "*"; port = 9000; }]; + adminAddr = "foo@example.org"; + documentRoot = "/tmp"; + }; }; client2 = diff --git a/nixos/tests/victoriametrics.nix b/nixos/tests/victoriametrics.nix new file mode 100644 index 00000000000..73ef8b72861 --- /dev/null +++ b/nixos/tests/victoriametrics.nix @@ -0,0 +1,31 @@ +# This test runs influxdb and checks if influxdb is up and running + +import ./make-test-python.nix ({ pkgs, ...} : { + name = "victoriametrics"; + meta = with pkgs.stdenv.lib.maintainers; { + maintainers = [ yorickvp ]; + }; + + nodes = { + one = { ... }: { + services.victoriametrics.enable = true; + }; + }; + + testScript = '' + start_all() + + one.wait_for_unit("victoriametrics.service") + + # write some points and run simple query + out = one.succeed( + "curl -d 'measurement,tag1=value1,tag2=value2 field1=123,field2=1.23' -X POST 'http://localhost:8428/write'" + ) + cmd = """curl -s -G 'http://localhost:8428/api/v1/export' -d 'match={__name__!=""}'""" + # data takes a while to appear + one.wait_until_succeeds(f"[[ $({cmd} | wc -l) -ne 0 ]]") + out = one.succeed(cmd) + assert '"values":[123]' in out + assert '"values":[1.23]' in out + ''; +}) diff --git a/nixos/tests/virtualbox.nix b/nixos/tests/virtualbox.nix index 32637d2c1ef..aec8da6a2af 100644 --- a/nixos/tests/virtualbox.nix +++ b/nixos/tests/virtualbox.nix @@ -23,7 +23,7 @@ let guestAdditions = pkgs.linuxPackages.virtualboxGuestAdditions; miniInit = '' - #!${pkgs.stdenv.shell} -xe + #!${pkgs.runtimeShell} -xe export PATH="${lib.makeBinPath [ pkgs.coreutils pkgs.utillinux ]}" mkdir -p /run/dbus @@ -80,7 +80,7 @@ let touch /mnt-root/boot-done hostname "${vmName}" mkdir -p /nix/store - unshare -m ${escapeShellArg pkgs.stdenv.shell} -c ' + unshare -m ${escapeShellArg pkgs.runtimeShell} -c ' mount -t vboxsf nixstore /nix/store exec "$stage2Init" ' @@ -356,7 +356,7 @@ let virtualisation.qemu.options = if useKvmNestedVirt then ["-cpu" "kvm64,vmx=on"] else []; virtualisation.virtualbox.host.enable = true; - services.xserver.displayManager.auto.user = "alice"; + test-support.displayManager.auto.user = "alice"; users.users.alice.extraGroups = let inherit (config.virtualisation.virtualbox.host) enableHardening; in lib.mkIf enableHardening (lib.singleton "vboxusers"); diff --git a/nixos/tests/wireguard/default.nix b/nixos/tests/wireguard/default.nix index 8206823a918..e3bc31c600f 100644 --- a/nixos/tests/wireguard/default.nix +++ b/nixos/tests/wireguard/default.nix @@ -1,97 +1,71 @@ -let - wg-snakeoil-keys = import ./snakeoil-keys.nix; -in +import ../make-test-python.nix ({ pkgs, lib, ...} : + let + wg-snakeoil-keys = import ./snakeoil-keys.nix; + peer = (import ./make-peer.nix) { inherit lib; }; + in + { + name = "wireguard"; + meta = with pkgs.stdenv.lib.maintainers; { + maintainers = [ ma27 ]; + }; -import ../make-test-python.nix ({ pkgs, ...} : { - name = "wireguard"; - meta = with pkgs.stdenv.lib.maintainers; { - maintainers = [ ma27 ]; - }; + nodes = { + peer0 = peer { + ip4 = "192.168.0.1"; + ip6 = "fd00::1"; + extraConfig = { + networking.firewall.allowedUDPPorts = [ 23542 ]; + networking.wireguard.interfaces.wg0 = { + ips = [ "10.23.42.1/32" "fc00::1/128" ]; + listenPort = 23542; - nodes = { - peer0 = { lib, ... }: { - boot.kernel.sysctl = { - "net.ipv6.conf.all.forwarding" = "1"; - "net.ipv6.conf.default.forwarding" = "1"; - "net.ipv4.ip_forward" = "1"; - }; + inherit (wg-snakeoil-keys.peer0) privateKey; - networking.useDHCP = false; - networking.interfaces.eth1 = { - ipv4.addresses = lib.singleton { - address = "192.168.0.1"; - prefixLength = 24; - }; - ipv6.addresses = lib.singleton { - address = "fd00::1"; - prefixLength = 64; + peers = lib.singleton { + allowedIPs = [ "10.23.42.2/32" "fc00::2/128" ]; + + inherit (wg-snakeoil-keys.peer1) publicKey; + }; + }; }; }; - networking.firewall.allowedUDPPorts = [ 23542 ]; - networking.wireguard.interfaces.wg0 = { - ips = [ "10.23.42.1/32" "fc00::1/128" ]; - listenPort = 23542; + peer1 = peer { + ip4 = "192.168.0.2"; + ip6 = "fd00::2"; + extraConfig = { + networking.wireguard.interfaces.wg0 = { + ips = [ "10.23.42.2/32" "fc00::2/128" ]; + listenPort = 23542; + allowedIPsAsRoutes = false; - inherit (wg-snakeoil-keys.peer0) privateKey; + inherit (wg-snakeoil-keys.peer1) privateKey; - peers = lib.singleton { - allowedIPs = [ "10.23.42.2/32" "fc00::2/128" ]; + peers = lib.singleton { + allowedIPs = [ "0.0.0.0/0" "::/0" ]; + endpoint = "192.168.0.1:23542"; + persistentKeepalive = 25; - inherit (wg-snakeoil-keys.peer1) publicKey; + inherit (wg-snakeoil-keys.peer0) publicKey; + }; + + postSetup = let inherit (pkgs) iproute; in '' + ${iproute}/bin/ip route replace 10.23.42.1/32 dev wg0 + ${iproute}/bin/ip route replace fc00::1/128 dev wg0 + ''; + }; }; }; }; - peer1 = { pkgs, lib, ... }: { - boot.kernel.sysctl = { - "net.ipv6.conf.all.forwarding" = "1"; - "net.ipv6.conf.default.forwarding" = "1"; - "net.ipv4.ip_forward" = "1"; - }; + testScript = '' + start_all() - networking.useDHCP = false; - networking.interfaces.eth1 = { - ipv4.addresses = lib.singleton { - address = "192.168.0.2"; - prefixLength = 24; - }; - ipv6.addresses = lib.singleton { - address = "fd00::2"; - prefixLength = 64; - }; - }; + peer0.wait_for_unit("wireguard-wg0.service") + peer1.wait_for_unit("wireguard-wg0.service") - networking.wireguard.interfaces.wg0 = { - ips = [ "10.23.42.2/32" "fc00::2/128" ]; - listenPort = 23542; - allowedIPsAsRoutes = false; - - inherit (wg-snakeoil-keys.peer1) privateKey; - - peers = lib.singleton { - allowedIPs = [ "0.0.0.0/0" "::/0" ]; - endpoint = "192.168.0.1:23542"; - persistentKeepalive = 25; - - inherit (wg-snakeoil-keys.peer0) publicKey; - }; - - postSetup = let inherit (pkgs) iproute; in '' - ${iproute}/bin/ip route replace 10.23.42.1/32 dev wg0 - ${iproute}/bin/ip route replace fc00::1/128 dev wg0 - ''; - }; - }; - }; - - testScript = '' - start_all() - - peer0.wait_for_unit("wireguard-wg0.service") - peer1.wait_for_unit("wireguard-wg0.service") - - peer1.succeed("ping -c5 fc00::1") - peer1.succeed("ping -c5 10.23.42.1") - ''; -}) + peer1.succeed("ping -c5 fc00::1") + peer1.succeed("ping -c5 10.23.42.1") + ''; + } +) diff --git a/nixos/tests/wireguard/make-peer.nix b/nixos/tests/wireguard/make-peer.nix new file mode 100644 index 00000000000..d2740549738 --- /dev/null +++ b/nixos/tests/wireguard/make-peer.nix @@ -0,0 +1,23 @@ +{ lib, ... }: { ip4, ip6, extraConfig }: +lib.mkMerge [ + { + boot.kernel.sysctl = { + "net.ipv6.conf.all.forwarding" = "1"; + "net.ipv6.conf.default.forwarding" = "1"; + "net.ipv4.ip_forward" = "1"; + }; + + networking.useDHCP = false; + networking.interfaces.eth1 = { + ipv4.addresses = [{ + address = ip4; + prefixLength = 24; + }]; + ipv6.addresses = [{ + address = ip6; + prefixLength = 64; + }]; + }; + } + extraConfig +] diff --git a/nixos/tests/wireguard/wg-quick.nix b/nixos/tests/wireguard/wg-quick.nix new file mode 100644 index 00000000000..7354dd01a34 --- /dev/null +++ b/nixos/tests/wireguard/wg-quick.nix @@ -0,0 +1,63 @@ +import ../make-test-python.nix ({ pkgs, lib, ... }: + let + wg-snakeoil-keys = import ./snakeoil-keys.nix; + peer = (import ./make-peer.nix) { inherit lib; }; + in + { + name = "wg-quick"; + meta = with pkgs.stdenv.lib.maintainers; { + maintainers = [ xwvvvvwx ]; + }; + + nodes = { + peer0 = peer { + ip4 = "192.168.0.1"; + ip6 = "fd00::1"; + extraConfig = { + networking.firewall.allowedUDPPorts = [ 23542 ]; + networking.wg-quick.interfaces.wg0 = { + address = [ "10.23.42.1/32" "fc00::1/128" ]; + listenPort = 23542; + + inherit (wg-snakeoil-keys.peer0) privateKey; + + peers = lib.singleton { + allowedIPs = [ "10.23.42.2/32" "fc00::2/128" ]; + + inherit (wg-snakeoil-keys.peer1) publicKey; + }; + }; + }; + }; + + peer1 = peer { + ip4 = "192.168.0.2"; + ip6 = "fd00::2"; + extraConfig = { + networking.wg-quick.interfaces.wg0 = { + address = [ "10.23.42.2/32" "fc00::2/128" ]; + inherit (wg-snakeoil-keys.peer1) privateKey; + + peers = lib.singleton { + allowedIPs = [ "0.0.0.0/0" "::/0" ]; + endpoint = "192.168.0.1:23542"; + persistentKeepalive = 25; + + inherit (wg-snakeoil-keys.peer0) publicKey; + }; + }; + }; + }; + }; + + testScript = '' + start_all() + + peer0.wait_for_unit("wg-quick-wg0.service") + peer1.wait_for_unit("wg-quick-wg0.service") + + peer1.succeed("ping -c5 fc00::1") + peer1.succeed("ping -c5 10.23.42.1") + ''; + } +) diff --git a/nixos/tests/xandikos.nix b/nixos/tests/xandikos.nix new file mode 100644 index 00000000000..0fded20ff1a --- /dev/null +++ b/nixos/tests/xandikos.nix @@ -0,0 +1,70 @@ +import ./make-test-python.nix ( + { pkgs, lib, ... }: + + { + name = "xandikos"; + + meta.maintainers = [ lib.maintainers."0x4A6F" ]; + + nodes = { + xandikos_client = {}; + xandikos_default = { + networking.firewall.allowedTCPPorts = [ 8080 ]; + services.xandikos.enable = true; + }; + xandikos_proxy = { + networking.firewall.allowedTCPPorts = [ 80 8080 ]; + services.xandikos.enable = true; + services.xandikos.address = "localhost"; + services.xandikos.port = 8080; + services.xandikos.routePrefix = "/xandikos/"; + services.xandikos.extraOptions = [ + "--defaults" + ]; + services.nginx = { + enable = true; + recommendedProxySettings = true; + virtualHosts."xandikos" = { + serverName = "xandikos.local"; + basicAuth.xandikos = "snakeOilPassword"; + locations."/xandikos/" = { + proxyPass = "http://localhost:8080/"; + }; + }; + }; + }; + }; + + testScript = '' + start_all() + + with subtest("Xandikos default"): + xandikos_default.wait_for_unit("multi-user.target") + xandikos_default.wait_for_unit("xandikos.service") + xandikos_default.wait_for_open_port(8080) + xandikos_default.succeed("curl --fail http://localhost:8080/") + xandikos_default.succeed( + "curl -s --fail --location http://localhost:8080/ | grep -qi Xandikos" + ) + xandikos_client.wait_for_unit("network.target") + xandikos_client.fail("curl --fail http://xandikos_default:8080/") + + with subtest("Xandikos proxy"): + xandikos_proxy.wait_for_unit("multi-user.target") + xandikos_proxy.wait_for_unit("xandikos.service") + xandikos_proxy.wait_for_open_port(8080) + xandikos_proxy.succeed("curl --fail http://localhost:8080/") + xandikos_proxy.succeed( + "curl -s --fail --location http://localhost:8080/ | grep -qi Xandikos" + ) + xandikos_client.wait_for_unit("network.target") + xandikos_client.fail("curl --fail http://xandikos_proxy:8080/") + xandikos_client.succeed( + "curl -s --fail -u xandikos:snakeOilPassword -H 'Host: xandikos.local' http://xandikos_proxy/xandikos/ | grep -qi Xandikos" + ) + xandikos_client.succeed( + "curl -s --fail -u xandikos:snakeOilPassword -H 'Host: xandikos.local' http://xandikos_proxy/xandikos/user/ | grep -qi Xandikos" + ) + ''; + } +) diff --git a/nixos/tests/xautolock.nix b/nixos/tests/xautolock.nix index 10e92b40e95..4a8d3f4cebf 100644 --- a/nixos/tests/xautolock.nix +++ b/nixos/tests/xautolock.nix @@ -9,7 +9,7 @@ with lib; nodes.machine = { imports = [ ./common/x11.nix ./common/user-account.nix ]; - services.xserver.displayManager.auto.user = "bob"; + test-support.displayManager.auto.user = "bob"; services.xserver.xautolock.enable = true; services.xserver.xautolock.time = 1; }; diff --git a/nixos/tests/xfce.nix b/nixos/tests/xfce.nix index 3ea96b38363..99065669661 100644 --- a/nixos/tests/xfce.nix +++ b/nixos/tests/xfce.nix @@ -4,12 +4,20 @@ import ./make-test-python.nix ({ pkgs, ...} : { machine = { pkgs, ... }: - { imports = [ ./common/user-account.nix ]; + { + imports = [ + ./common/user-account.nix + ]; services.xserver.enable = true; - services.xserver.displayManager.auto.enable = true; - services.xserver.displayManager.auto.user = "alice"; + services.xserver.displayManager.lightdm = { + enable = true; + autoLogin = { + enable = true; + user = "alice"; + }; + }; services.xserver.desktopManager.xfce.enable = true; diff --git a/nixos/tests/xmonad.nix b/nixos/tests/xmonad.nix index ef711f8dcf6..56baae8b9d3 100644 --- a/nixos/tests/xmonad.nix +++ b/nixos/tests/xmonad.nix @@ -6,7 +6,7 @@ import ./make-test-python.nix ({ pkgs, ...} : { machine = { pkgs, ... }: { imports = [ ./common/x11.nix ./common/user-account.nix ]; - services.xserver.displayManager.auto.user = "alice"; + test-support.displayManager.auto.user = "alice"; services.xserver.displayManager.defaultSession = "none+xmonad"; services.xserver.windowManager.xmonad = { enable = true; diff --git a/nixos/tests/xrdp.nix b/nixos/tests/xrdp.nix index 1aceeffb955..6d7f2b9249f 100644 --- a/nixos/tests/xrdp.nix +++ b/nixos/tests/xrdp.nix @@ -14,7 +14,7 @@ import ./make-test-python.nix ({ pkgs, ...} : { client = { pkgs, ... }: { imports = [ ./common/x11.nix ./common/user-account.nix ]; - services.xserver.displayManager.auto.user = "alice"; + test-support.displayManager.auto.user = "alice"; environment.systemPackages = [ pkgs.freerdp ]; services.xrdp.enable = true; services.xrdp.defaultWindowManager = "${pkgs.icewm}/bin/icewm"; diff --git a/nixos/tests/xss-lock.nix b/nixos/tests/xss-lock.nix index 3a7dea07d53..b77bbbbb3c4 100644 --- a/nixos/tests/xss-lock.nix +++ b/nixos/tests/xss-lock.nix @@ -10,12 +10,12 @@ with lib; simple = { imports = [ ./common/x11.nix ./common/user-account.nix ]; programs.xss-lock.enable = true; - services.xserver.displayManager.auto.user = "alice"; + test-support.displayManager.auto.user = "alice"; }; custom_lockcmd = { pkgs, ... }: { imports = [ ./common/x11.nix ./common/user-account.nix ]; - services.xserver.displayManager.auto.user = "alice"; + test-support.displayManager.auto.user = "alice"; programs.xss-lock = { enable = true; diff --git a/nixos/tests/yabar.nix b/nixos/tests/yabar.nix index 9108004d4df..b374ef29680 100644 --- a/nixos/tests/yabar.nix +++ b/nixos/tests/yabar.nix @@ -11,7 +11,7 @@ with lib; machine = { imports = [ ./common/x11.nix ./common/user-account.nix ]; - services.xserver.displayManager.auto.user = "bob"; + test-support.displayManager.auto.user = "bob"; programs.yabar.enable = true; programs.yabar.bars = { diff --git a/nixos/tests/zfs.nix b/nixos/tests/zfs.nix index 8f844aca416..7ba60ee9806 100644 --- a/nixos/tests/zfs.nix +++ b/nixos/tests/zfs.nix @@ -3,12 +3,10 @@ pkgs ? import ../.. { inherit system config; } }: -with import ../lib/testing.nix { inherit system pkgs; }; +with import ../lib/testing-python.nix { inherit system pkgs; }; let - makeTest = import ./make-test-python.nix; - makeZfsTest = name: { kernelPackage ? pkgs.linuxPackages_latest , enableUnstable ? false @@ -20,41 +18,33 @@ let maintainers = [ adisbladis ]; }; - machine = { pkgs, ... }: - { - virtualisation.emptyDiskImages = [ 4096 ]; - networking.hostId = "deadbeef"; - boot.kernelPackages = kernelPackage; - boot.supportedFilesystems = [ "zfs" ]; - boot.zfs.enableUnstable = enableUnstable; + machine = { pkgs, ... }: { + virtualisation.emptyDiskImages = [ 4096 ]; + networking.hostId = "deadbeef"; + boot.kernelPackages = kernelPackage; + boot.supportedFilesystems = [ "zfs" ]; + boot.zfs.enableUnstable = enableUnstable; - environment.systemPackages = with pkgs; [ - parted - ]; - }; + environment.systemPackages = [ pkgs.parted ]; + }; testScript = '' - machine.succeed("modprobe zfs") - machine.succeed("zpool status") - - machine.succeed("ls /dev") - machine.succeed( - "mkdir /tmp/mnt", - - "udevadm settle", - "parted --script /dev/vdb mklabel msdos", - "parted --script /dev/vdb -- mkpart primary 1024M -1s", - "udevadm settle", - - "zpool create rpool /dev/vdb1", - "zfs create -o mountpoint=legacy rpool/root", - "mount -t zfs rpool/root /tmp/mnt", - "udevadm settle", - - "umount /tmp/mnt", - "zpool destroy rpool", - "udevadm settle" + "modprobe zfs", + "zpool status", + "ls /dev", + "mkdir /tmp/mnt", + "udevadm settle", + "parted --script /dev/vdb mklabel msdos", + "parted --script /dev/vdb -- mkpart primary 1024M -1s", + "udevadm settle", + "zpool create rpool /dev/vdb1", + "zfs create -o mountpoint=legacy rpool/root", + "mount -t zfs rpool/root /tmp/mnt", + "udevadm settle", + "umount /tmp/mnt", + "zpool destroy rpool", + "udevadm settle", ) '' + extraTest; @@ -69,18 +59,17 @@ in { enableUnstable = true; extraTest = '' machine.succeed( - "echo password | zpool create -o altroot=\"/tmp/mnt\" -O encryption=aes-256-gcm -O keyformat=passphrase rpool /dev/vdb1", - "zfs create -o mountpoint=legacy rpool/root", - "mount -t zfs rpool/root /tmp/mnt", - "udevadm settle", - - "umount /tmp/mnt", - "zpool destroy rpool", - "udevadm settle" + 'echo password | zpool create -o altroot="/tmp/mnt" ' + + "-O encryption=aes-256-gcm -O keyformat=passphrase rpool /dev/vdb1", + "zfs create -o mountpoint=legacy rpool/root", + "mount -t zfs rpool/root /tmp/mnt", + "udevadm settle", + "umount /tmp/mnt", + "zpool destroy rpool", + "udevadm settle", ) ''; }; installer = (import ./installer.nix { }).zfsroot; - } diff --git a/pkgs/applications/accessibility/contrast/default.nix b/pkgs/applications/accessibility/contrast/default.nix index 3e03cf2da73..192bf041c64 100644 --- a/pkgs/applications/accessibility/contrast/default.nix +++ b/pkgs/applications/accessibility/contrast/default.nix @@ -19,7 +19,7 @@ rustPlatform.buildRustPackage rec { pname = "contrast"; - version = "0.0.2"; + version = "0.0.3"; src = fetchFromGitLab { domain = "gitlab.gnome.org"; @@ -27,10 +27,10 @@ rustPlatform.buildRustPackage rec { owner = "design"; repo = "contrast"; rev = version; - sha256 = "0rm705zrk9rfv31pwbqxrswi5v6vhnghxa8dgxjmcrh00l8dm6j9"; + sha256 = "0kk3mv7a6y258109xvgicmsi0lw0rcs00gfyivl5hdz7qh47iccy"; }; - cargoSha256 = "06vgc89d93fhjcyy9d1v6lf8kr34pl5bbpwbv2jpfahpj9y84bgj"; + cargoSha256 = "0vi8nv4hkhsgqgz36xacwkk5cxirg6li44nbmk3x7vx7c64hzybq"; nativeBuildInputs = [ desktop-file-utils @@ -40,6 +40,7 @@ rustPlatform.buildRustPackage rec { pkgconfig python3 wrapGAppsHook + glib # for glib-compile-resources ]; buildInputs = [ @@ -63,7 +64,7 @@ rustPlatform.buildRustPackage rec { meta = with stdenv.lib; { description = "Checks whether the contrast between two colors meet the WCAG requirements"; - homepage = https://gitlab.gnome.org/World/design/contrast; + homepage = "https://gitlab.gnome.org/World/design/contrast"; license = licenses.gpl3; maintainers = with maintainers; [ jtojnar ]; }; diff --git a/pkgs/applications/accessibility/dasher/default.nix b/pkgs/applications/accessibility/dasher/default.nix new file mode 100644 index 00000000000..43844d0c66b --- /dev/null +++ b/pkgs/applications/accessibility/dasher/default.nix @@ -0,0 +1,55 @@ +{ stdenv, lib, fetchFromGitHub +, autoreconfHook, pkgconfig, wrapGAppsHook +, glib, gtk3, expat, gnome-doc-utils, which +, at-spi2-core, dbus +, libxslt, libxml2 +, speechSupport ? true, speechd ? null +}: + +assert speechSupport -> speechd != null; + +stdenv.mkDerivation { + pname = "dasher"; + version = "2018-04-03"; + + src = fetchFromGitHub { + owner = "dasher-project"; + repo = "dasher"; + rev = "9ab12462e51d17a38c0ddc7f7ffe1cb5fe83b627"; + sha256 = "1r9xn966nx3pv2bidd6i3pxmprvlw6insnsb38zabmac609h9d9s"; + }; + + prePatch = '' + # tries to invoke git for something, probably fetching the ref + echo "true" > build-aux/mkversion + ''; + + configureFlags = lib.optional (!speechSupport) "--disable-speech"; + + nativeBuildInputs = [ + autoreconfHook + wrapGAppsHook + pkgconfig + # doc generation + gnome-doc-utils + which + libxslt libxml2 + ]; + + buildInputs = [ + glib + gtk3 + expat + # at-spi2 needs dbus to be recognized by pkg-config + at-spi2-core dbus + ] ++ lib.optional speechSupport speechd; + + meta = { + homepage = "http://www.inference.org.uk/dasher/"; + description = "Information-efficient text-entry interface, driven by natural continuous pointing gestures"; + license = lib.licenses.gpl2; + maintainers = [ lib.maintainers.Profpatsch ]; + platforms = lib.platforms.all; + }; + +} diff --git a/pkgs/applications/accessibility/mousetweaks/default.nix b/pkgs/applications/accessibility/mousetweaks/default.nix index e4fd66679a7..b645bc61848 100644 --- a/pkgs/applications/accessibility/mousetweaks/default.nix +++ b/pkgs/applications/accessibility/mousetweaks/default.nix @@ -41,7 +41,7 @@ stdenv.mkDerivation rec { The features can be activated and configured through the Universal Access panel of the GNOME Control Center. ''; - homepage = https://wiki.gnome.org/Projects/Mousetweaks; + homepage = "https://wiki.gnome.org/Projects/Mousetweaks"; license = licenses.gpl2; platforms = platforms.linux; maintainers = [ maintainers.johnazoidberg ]; diff --git a/pkgs/applications/audio/AMB-plugins/default.nix b/pkgs/applications/audio/AMB-plugins/default.nix index d9a05e0bf66..2e2af8f3a9a 100644 --- a/pkgs/applications/audio/AMB-plugins/default.nix +++ b/pkgs/applications/audio/AMB-plugins/default.nix @@ -25,7 +25,7 @@ stdenv.mkDerivation rec { Mono and stereo to B-format panning, horizontal rotator, square, hexagon and cube decoders. ''; version = version; - homepage = http://kokkinizita.linuxaudio.org/linuxaudio/ladspa/index.html; + homepage = "http://kokkinizita.linuxaudio.org/linuxaudio/ladspa/index.html"; license = stdenv.lib.licenses.gpl2Plus; maintainers = [ stdenv.lib.maintainers.magnetophon ]; platforms = stdenv.lib.platforms.linux; diff --git a/pkgs/applications/audio/FIL-plugins/default.nix b/pkgs/applications/audio/FIL-plugins/default.nix index cf383c1dd49..253e724cd31 100644 --- a/pkgs/applications/audio/FIL-plugins/default.nix +++ b/pkgs/applications/audio/FIL-plugins/default.nix @@ -29,7 +29,7 @@ stdenv.mkDerivation rec { This should make this plugin a good candidate for use in systems that allow automation of plugin control ports, such as Ardour, or for stage use. ''; version = version; - homepage = http://kokkinizita.linuxaudio.org/linuxaudio/ladspa/index.html; + homepage = "http://kokkinizita.linuxaudio.org/linuxaudio/ladspa/index.html"; license = stdenv.lib.licenses.gpl2Plus; maintainers = [ stdenv.lib.maintainers.magnetophon ]; platforms = stdenv.lib.platforms.linux; diff --git a/pkgs/applications/audio/MMA/default.nix b/pkgs/applications/audio/MMA/default.nix index 42f8af99e6f..8b7629bc908 100644 --- a/pkgs/applications/audio/MMA/default.nix +++ b/pkgs/applications/audio/MMA/default.nix @@ -1,12 +1,12 @@ { stdenv, fetchurl, makeWrapper, python3, alsaUtils, timidity }: stdenv.mkDerivation rec { - version = "19.08"; + version = "20.02"; pname = "mma"; src = fetchurl { url = "https://www.mellowood.ca/mma/mma-bin-${version}.tar.gz"; - sha256 = "02g2q9f1hbrj1v4mbf7zx2571vqpfla5803hcjpkdkvn8g0dwci0"; + sha256 = "0i9c3f14j7wy2c86ky83f2vgmg5bihnnwsmpkq13fgqjsaf0qwnv"; }; buildInputs = [ makeWrapper python3 alsaUtils timidity ]; @@ -19,6 +19,7 @@ sed -i 's@/usr/bin/timidity@/${timidity}/bin/timidity@g' mma-splitrec sed -i 's@/usr/bin/timidity@/${timidity}/bin/timidity@g' util/mma-splitrec.py find . -type f | xargs sed -i 's@/usr/bin/env python@${python3.interpreter}@g' + find . -type f | xargs sed -i 's@/usr/bin/python@${python3.interpreter}@g' ''; installPhase = '' @@ -60,7 +61,7 @@ meta = { description = "Creates MIDI tracks for a soloist to perform over from a user supplied file containing chords"; - homepage = http://www.mellowood.ca/mma/index.html; + homepage = "https://www.mellowood.ca/mma/index.html"; license = stdenv.lib.licenses.gpl2; maintainers = [ stdenv.lib.maintainers.magnetophon ]; platforms = stdenv.lib.platforms.linux; diff --git a/pkgs/applications/audio/a2jmidid/default.nix b/pkgs/applications/audio/a2jmidid/default.nix index 28331720048..64468bddc85 100644 --- a/pkgs/applications/audio/a2jmidid/default.nix +++ b/pkgs/applications/audio/a2jmidid/default.nix @@ -18,11 +18,11 @@ in stdenv.mkDerivation { patches = [ (fetchpatch { - url = https://repo.or.cz/a2jmidid.git/patch/24e3b8e543256ae8fdfb4b75eb9fd775f07c46e2; + url = "https://repo.or.cz/a2jmidid.git/patch/24e3b8e543256ae8fdfb4b75eb9fd775f07c46e2"; sha256 = "1nxrvnhxlgqc9wbxnp1gnpw4wjyzxvymwcg1gh2nqzmssgfykfkc"; }) (fetchpatch { - url = https://repo.or.cz/a2jmidid.git/patch/7f82da7eb2f540a94db23331be98d42a58ddc269; + url = "https://repo.or.cz/a2jmidid.git/patch/7f82da7eb2f540a94db23331be98d42a58ddc269"; sha256 = "1nab9zf0agbcj5pvhl90pz0cx1d204d4janqflc5ymjhy8jyrsdv"; }) ]; diff --git a/pkgs/applications/audio/aacgain/default.nix b/pkgs/applications/audio/aacgain/default.nix index 5892351225d..194514c65b5 100644 --- a/pkgs/applications/audio/aacgain/default.nix +++ b/pkgs/applications/audio/aacgain/default.nix @@ -55,7 +55,7 @@ stdenv.mkDerivation { meta = with stdenv.lib; { description = "ReplayGain for AAC files"; - homepage = https://aacgain.altosdesign.com; + homepage = "https://aacgain.altosdesign.com"; license = licenses.gpl2; platforms = platforms.linux; maintainers = [ maintainers.robbinch ]; diff --git a/pkgs/applications/audio/abcde/default.nix b/pkgs/applications/audio/abcde/default.nix index adb38d4bbba..4cb28e512a7 100644 --- a/pkgs/applications/audio/abcde/default.nix +++ b/pkgs/applications/audio/abcde/default.nix @@ -46,7 +46,7 @@ in ''; meta = with stdenv.lib; { - homepage = http://abcde.einval.com/wiki/; + homepage = "http://abcde.einval.com/wiki/"; license = licenses.gpl2Plus; maintainers = with maintainers; [ gebner ]; description = "Command-line audio CD ripper"; diff --git a/pkgs/applications/audio/adlplug/default.nix b/pkgs/applications/audio/adlplug/default.nix index 631e0c9cca5..bc626cbad11 100644 --- a/pkgs/applications/audio/adlplug/default.nix +++ b/pkgs/applications/audio/adlplug/default.nix @@ -1,5 +1,6 @@ { stdenv, fetchFromGitHub, cmake, pkgconfig, libjack2, alsaLib , freetype, libX11, libXrandr, libXinerama, libXext, libXcursor +, fetchpatch , adlplugChip ? "-DADLplug_CHIP=OPL3" , pname ? "ADLplug" }: @@ -15,6 +16,15 @@ stdenv.mkDerivation rec { fetchSubmodules = true; }; + patches = [ + (fetchpatch { + url = "https://raw.githubusercontent.com/jpcima/ADLplug/83636c55bec1b86cabf634b9a6d56d07f00ecc61/resources/patch/juce-gcc9.patch"; + sha256 = "15hkdb76n9lgjsrpczj27ld9b4804bzrgw89g95cj4sc8wwkplyy"; + extraPrefix = "thirdparty/JUCE/"; + stripLen = 1; + }) + ]; + cmakeFlags = [ adlplugChip ]; buildInputs = [ diff --git a/pkgs/applications/audio/aeolus/default.nix b/pkgs/applications/audio/aeolus/default.nix index 389052d30e1..bfd75b4e75c 100644 --- a/pkgs/applications/audio/aeolus/default.nix +++ b/pkgs/applications/audio/aeolus/default.nix @@ -4,11 +4,11 @@ stdenv.mkDerivation rec { pname = "aeolus"; - version = "0.9.7"; + version = "0.9.8"; src = fetchurl { url = "https://kokkinizita.linuxaudio.org/linuxaudio/downloads/${pname}-${version}.tar.bz2"; - sha256 = "0lhbr95hmbfj8ynbcpawn7jzjbpvrkm6k2yda39yhqk1bzg38v2k"; + sha256 = "1zfr3567mwbqsfybkhg03n5dvmhllk88c9ayb10qzz2nh6d7g2qn"; }; buildInputs = [ @@ -20,11 +20,11 @@ stdenv.mkDerivation rec { preBuild = "cd source"; - makeFlags = "DESTDIR= PREFIX=$(out)"; + makeFlags = [ "DESTDIR=" "PREFIX=$(out)" ]; meta = { description = "Synthetized (not sampled) pipe organ emulator"; - homepage = http://kokkinizita.linuxaudio.org/linuxaudio/aeolus/index.html; + homepage = "http://kokkinizita.linuxaudio.org/linuxaudio/aeolus/index.html"; license = stdenv.lib.licenses.lgpl3; platforms = stdenv.lib.platforms.linux; maintainers = [ stdenv.lib.maintainers.nico202 ]; diff --git a/pkgs/applications/audio/airwave/default.nix b/pkgs/applications/audio/airwave/default.nix index 737e73421c9..176d1d4cfb3 100644 --- a/pkgs/applications/audio/airwave/default.nix +++ b/pkgs/applications/audio/airwave/default.nix @@ -22,6 +22,7 @@ let }; nativeBuildInputs = [ unzip ]; installPhase = "cp -r . $out"; + meta.license = stdenv.lib.licenses.unfree; }; wine-wow64 = wine.override { @@ -62,7 +63,7 @@ multiStdenv.mkDerivation { # Cf. https://github.com/phantom-code/airwave/issues/57 hardeningDisable = [ "format" ]; - cmakeFlags = "-DVSTSDK_PATH=${vst-sdk}/VST2_SDK"; + cmakeFlags = [ "-DVSTSDK_PATH=${vst-sdk}/VST2_SDK" ]; postInstall = '' mv $out/bin $out/libexec @@ -82,7 +83,7 @@ multiStdenv.mkDerivation { protocol to correctly embed the plugin editor into the host window. ''; - homepage = https://github.com/phantom-code/airwave; + homepage = "https://github.com/phantom-code/airwave"; license = licenses.mit; platforms = [ "x86_64-linux" ]; maintainers = with maintainers; [ michalrus ]; diff --git a/pkgs/applications/audio/aj-snapshot/default.nix b/pkgs/applications/audio/aj-snapshot/default.nix index 5c379b57ad6..f781aad905d 100644 --- a/pkgs/applications/audio/aj-snapshot/default.nix +++ b/pkgs/applications/audio/aj-snapshot/default.nix @@ -24,7 +24,7 @@ stdenv.mkDerivation rec { You can also run aj-snapshot in daemon mode if you want to have your connections continually restored. ''; - homepage = http://aj-snapshot.sourceforge.net/; + homepage = "http://aj-snapshot.sourceforge.net/"; license = licenses.gpl2; maintainers = [ maintainers.mrVanDalo ]; platforms = platforms.all; diff --git a/pkgs/applications/audio/amarok/default.nix b/pkgs/applications/audio/amarok/default.nix index cd951701e77..25fceb357cc 100644 --- a/pkgs/applications/audio/amarok/default.nix +++ b/pkgs/applications/audio/amarok/default.nix @@ -14,7 +14,7 @@ mkDerivation rec { # master has the Qt5 version as of April 2018 but a formal release has not # yet been made so change this back to the proper upstream when such a # release is out - url = git://anongit.kde.org/amarok.git; + url = "git://anongit.kde.org/amarok.git"; # url = "mirror://kde/stable/${pname}/${version}/src/${name}.tar.xz"; rev = "457fbda25a85a102bfda92aa7137e7ef5e4c8b00"; sha256 = "1ig2mg8pqany6m2zplkrvldcv4ibxwsypnyv5igm7nz7ax82cd5j"; diff --git a/pkgs/applications/audio/ams/default.nix b/pkgs/applications/audio/ams/default.nix new file mode 100644 index 00000000000..e6c4fbe802e --- /dev/null +++ b/pkgs/applications/audio/ams/default.nix @@ -0,0 +1,48 @@ +{ stdenv +, fetchgit +, automake +, alsaLib +, ladspaH +, libjack2 +, fftw +, zita-alsa-pcmi +, qt5 +, pkg-config +, autoreconfHook +}: + +stdenv.mkDerivation rec { + name = "ams"; + version = "unstable-2019-04-27"; + + src = fetchgit { + url = "https://git.code.sf.net/p/alsamodular/ams.git"; + sha256 = "0qdyz5llpa94f3qx1xi1mz97vl5jyrj1mqff28p5g9i5rxbbk8z9"; + rev = "3250bbcfea331c4fcb9845305eebded80054973d"; + }; + + nativeBuildInputs = [ + autoreconfHook + pkg-config + qt5.wrapQtAppsHook + ]; + + buildInputs = [ + alsaLib + ladspaH + libjack2 + fftw + zita-alsa-pcmi + ] ++ (with qt5; [ + qtbase + qttools + ]); + + meta = with stdenv.lib; { + description = "Realtime modular synthesizer for ALSA"; + homepage = "http://alsamodular.sourceforge.net"; + license = licenses.gpl2; + platforms = platforms.linux; + maintainers = with maintainers; [ sjfloat ]; + }; +} diff --git a/pkgs/applications/audio/ardour/default.nix b/pkgs/applications/audio/ardour/default.nix index 30a4e052d77..fadfedf5384 100644 --- a/pkgs/applications/audio/ardour/default.nix +++ b/pkgs/applications/audio/ardour/default.nix @@ -1,14 +1,51 @@ -{ stdenv, fetchgit, alsaLib, aubio, boost, cairomm, curl, doxygen -, fftwSinglePrec, flac, glibc, glibmm, graphviz, gtkmm2, libjack2 -, libgnomecanvas, libgnomecanvasmm, liblo, libmad, libogg, librdf -, librdf_raptor, librdf_rasqal, libsamplerate, libsigcxx, libsndfile -, libusb, libuuid, libxml2, libxslt, lilv, lv2, makeWrapper -, perl, pkgconfig, python2, rubberband, serd, sord, sratom -, taglib, vampSDK, dbus, fftw, pango, suil, libarchive -, wafHook }: - +{ stdenv +, fetchgit +, alsaLib +, aubio +, boost +, cairomm +, curl +, doxygen +, fftwSinglePrec +, flac +, glibc +, glibmm +, graphviz +, gtkmm2 +, libjack2 +, liblo +, libogg +, libsamplerate +, libsigcxx +, libsndfile +, libusb1 +, fluidsynth_1 +, hidapi +, libltc +, qm-dsp +, libxml2 +, lilv +, lrdf +, lv2 +, makeWrapper +, perl +, pkg-config +, itstool +, python2 +, rubberband +, serd +, sord +, sratom +, taglib +, vamp-plugin-sdk +, dbus +, fftw +, pango +, suil +, libarchive +, wafHook +}: let - # Ardour git repo uses a mix of annotated and lightweight tags. Annotated # tags are used for MAJOR.MINOR versioning, and lightweight tags are used # in-between; MAJOR.MINOR.REV where REV is the number of commits since the @@ -18,10 +55,7 @@ let # Version to build. tag = "5.12"; - -in - -stdenv.mkDerivation rec { +in stdenv.mkDerivation rec { name = "ardour-${tag}"; src = fetchgit { @@ -30,46 +64,84 @@ stdenv.mkDerivation rec { sha256 = "0mla5lm51ryikc2rrk53max2m7a5ds6i1ai921l2h95wrha45nkr"; }; - nativeBuildInputs = [ wafHook ]; - buildInputs = - [ alsaLib aubio boost cairomm curl doxygen dbus fftw fftwSinglePrec flac - glibmm graphviz gtkmm2 libjack2 libgnomecanvas libgnomecanvasmm liblo - libmad libogg librdf librdf_raptor librdf_rasqal libsamplerate - libsigcxx libsndfile libusb libuuid libxml2 libxslt lilv lv2 - makeWrapper pango perl pkgconfig python2 rubberband serd sord - sratom suil taglib vampSDK libarchive - ]; + nativeBuildInputs = [ + wafHook + makeWrapper + pkg-config + itstool + doxygen + graphviz # for dot + perl + python2 + ]; - # ardour's wscript has a "tarball" target but that required the git revision - # be available. Since this is an unzipped tarball fetched from github we - # have to do that ourself. - patchPhase = '' - printf '#include "libs/ardour/ardour/revision.h"\nnamespace ARDOUR { const char* revision = \"${tag}-${builtins.substring 0 8 src.rev}\"; }\n' > libs/ardour/revision.cc - sed 's|/usr/include/libintl.h|${glibc.dev}/include/libintl.h|' -i wscript - patchShebangs ./tools/ - ''; + buildInputs = [ + alsaLib + aubio + boost + cairomm + curl + dbus + fftw + fftwSinglePrec + flac + glibmm + gtkmm2 + libjack2 + liblo + libogg + libsamplerate + libsigcxx + libsndfile + libusb1 + fluidsynth_1 + hidapi + libltc + qm-dsp + libxml2 + lilv + lrdf + lv2 + pango + rubberband + serd + sord + sratom + suil + taglib + vamp-plugin-sdk + libarchive + ]; wafConfigureFlags = [ "--optimize" "--docs" + "--use-external-libs" + "--freedesktop" "--with-backends=jack,alsa,dummy" ]; + NIX_CFLAGS_COMPILE = "-I${qm-dsp}/include/qm-dsp"; + + # ardour's wscript has a "tarball" target but that required the git revision + # be available. Since this is an unzipped tarball fetched from github we + # have to do that ourself. + postPatch = '' + printf '#include "libs/ardour/ardour/revision.h"\nnamespace ARDOUR { const char* revision = \"${tag}-${builtins.substring 0 8 src.rev}\"; }\n' > libs/ardour/revision.cc + patchShebangs ./tools/ + ''; + postInstall = '' - # Install desktop file - mkdir -p "$out/share/applications" - cat > "$out/share/applications/ardour.desktop" << EOF - [Desktop Entry] - Name=Ardour 5 - GenericName=Digital Audio Workstation - Comment=Multitrack harddisk recorder - Exec=$out/bin/ardour5 - Icon=$out/share/ardour5/resources/Ardour-icon_256px.png - Terminal=false - Type=Application - X-MultipleArgs=false - Categories=GTK;Audio;AudioVideoEditing;AudioVideo;Video; - EOF + # wscript does not install these for some reason + install -vDm 644 "build/gtk2_ardour/ardour.xml" \ + -t "$out/share/mime/packages" + install -vDm 644 "build/gtk2_ardour/ardour5.desktop" \ + -t "$out/share/applications" + for size in 16 22 32 48 256 512; do + install -vDm 644 "gtk2_ardour/resources/Ardour-icon_''${size}px.png" \ + "$out/share/icons/hicolor/''${size}x''${size}/apps/ardour5.png" + done + install -vDm 644 "ardour.1"* -t "$out/share/man/man1" ''; meta = with stdenv.lib; { @@ -83,7 +155,7 @@ stdenv.mkDerivation rec { Please consider supporting the ardour project financially: https://community.ardour.org/node/8288 ''; - homepage = http://ardour.org/; + homepage = "http://ardour.org/"; license = licenses.gpl2; platforms = platforms.linux; maintainers = [ maintainers.goibhniu maintainers.fps ]; diff --git a/pkgs/applications/audio/ario/default.nix b/pkgs/applications/audio/ario/default.nix index 4b48f5f1eea..99a09e7ee33 100644 --- a/pkgs/applications/audio/ario/default.nix +++ b/pkgs/applications/audio/ario/default.nix @@ -19,7 +19,7 @@ stdenv.mkDerivation rec { meta = { description = "GTK client for MPD (Music player daemon)"; - homepage = http://ario-player.sourceforge.net/; + homepage = "http://ario-player.sourceforge.net/"; license = stdenv.lib.licenses.gpl2Plus; maintainers = [ stdenv.lib.maintainers.garrison ]; platforms = stdenv.lib.platforms.all; diff --git a/pkgs/applications/audio/artyFX/default.nix b/pkgs/applications/audio/artyFX/default.nix index 4b76ebdf605..0265e0f75ec 100644 --- a/pkgs/applications/audio/artyFX/default.nix +++ b/pkgs/applications/audio/artyFX/default.nix @@ -15,7 +15,7 @@ stdenv.mkDerivation rec { buildInputs = [ cairomm cmake libjack2 libpthreadstubs libXdmcp libxshmfence libsndfile lv2 ntk ]; meta = with stdenv.lib; { - homepage = http://openavproductions.com/artyfx/; + homepage = "http://openavproductions.com/artyfx/"; description = "A LV2 plugin bundle of artistic realtime effects"; license = licenses.gpl2; maintainers = [ maintainers.magnetophon ]; diff --git a/pkgs/applications/audio/asunder/default.nix b/pkgs/applications/audio/asunder/default.nix index 5a0b6797a24..7d90ac36f36 100644 --- a/pkgs/applications/audio/asunder/default.nix +++ b/pkgs/applications/audio/asunder/default.nix @@ -38,7 +38,7 @@ stdenv.mkDerivation rec { meta = { description = "A graphical Audio CD ripper and encoder for Linux"; - homepage = http://littlesvr.ca/asunder/index.php; + homepage = "http://littlesvr.ca/asunder/index.php"; license = licenses.gpl2; maintainers = with maintainers; [ mudri ]; platforms = platforms.linux; diff --git a/pkgs/applications/audio/aucatctl/default.nix b/pkgs/applications/audio/aucatctl/default.nix new file mode 100644 index 00000000000..4aff3e1f7bf --- /dev/null +++ b/pkgs/applications/audio/aucatctl/default.nix @@ -0,0 +1,37 @@ +{ stdenv, fetchurl, sndio, libbsd }: + +stdenv.mkDerivation rec { + pname = "aucatctl"; + version = "0.1"; + + src = fetchurl { + url = "http://www.sndio.org/${pname}-${version}.tar.gz"; + sha256 = "524f2fae47db785234f166551520d9605b9a27551ca438bd807e3509ce246cf0"; + }; + + buildInputs = [ sndio ] + ++ stdenv.lib.optional (!stdenv.isDarwin && !stdenv.targetPlatform.isBSD) + libbsd; + + outputs = [ "out" "man" ]; + + preBuild = '' + makeFlagsArray+=("PREFIX=$out") + '' + stdenv.lib.optionalString + (!stdenv.isDarwin && !stdenv.targetPlatform.isBSD) '' + makeFlagsArray+=(LDADD="-lsndio -lbsd") + + # Fix warning about implicit declaration of function 'strlcpy' + substituteInPlace aucatctl.c \ + --replace '#include ' '#include ' + ''; + + meta = with stdenv.lib; { + description = + "The aucatctl utility sends MIDI messages to control sndiod and/or aucat volumes"; + homepage = "http://www.sndio.org"; + license = licenses.isc; + maintainers = with maintainers; [ sna ]; + platforms = platforms.unix; + }; +} diff --git a/pkgs/applications/audio/audacious/default.nix b/pkgs/applications/audio/audacious/default.nix index 12e8237d485..b06175f37f3 100644 --- a/pkgs/applications/audio/audacious/default.nix +++ b/pkgs/applications/audio/audacious/default.nix @@ -60,7 +60,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Audio player"; - homepage = https://audacious-media-player.org/; + homepage = "https://audacious-media-player.org/"; maintainers = with maintainers; [ eelco ramkromberg ]; platforms = with platforms; linux; license = with licenses; [ diff --git a/pkgs/applications/audio/audacious/qt-5.nix b/pkgs/applications/audio/audacious/qt-5.nix index baf7b108e50..45525571a64 100644 --- a/pkgs/applications/audio/audacious/qt-5.nix +++ b/pkgs/applications/audio/audacious/qt-5.nix @@ -81,7 +81,7 @@ mkDerivation { meta = with lib; { description = "Audio player"; - homepage = https://audacious-media-player.org/; + homepage = "https://audacious-media-player.org/"; maintainers = with maintainers; [ ttuegel ]; platforms = with platforms; linux; license = with licenses; [ diff --git a/pkgs/applications/audio/audacity/default.nix b/pkgs/applications/audio/audacity/default.nix index 2fd3e5c27fe..a1f4b9ad950 100644 --- a/pkgs/applications/audio/audacity/default.nix +++ b/pkgs/applications/audio/audacity/default.nix @@ -28,7 +28,7 @@ stdenv.mkDerivation rec { ]; # audacity only looks for lame and ffmpeg at runtime, so we need to link them in manually - NIX_LDFLAGS = [ + NIX_LDFLAGS = toString [ # LAME "-lmp3lame" # ffmpeg @@ -57,7 +57,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Sound editor with graphical UI"; - homepage = http://audacityteam.org/; + homepage = "http://audacityteam.org/"; license = licenses.gpl2Plus; platforms = intersectLists platforms.linux platforms.x86; # fails on ARM maintainers = with maintainers; [ the-kenny ]; diff --git a/pkgs/applications/audio/audio-recorder/default.nix b/pkgs/applications/audio/audio-recorder/default.nix index 534b87e9fa7..eee293b76c2 100644 --- a/pkgs/applications/audio/audio-recorder/default.nix +++ b/pkgs/applications/audio/audio-recorder/default.nix @@ -36,7 +36,7 @@ stdenv.mkDerivation rec { automatically record your Skype calls. It supports several audio (output) formats such as OGG audio, Flac, MP3 and WAV. ''; - homepage = https://launchpad.net/~audio-recorder; + homepage = "https://launchpad.net/~audio-recorder"; license = licenses.gpl3; platforms = platforms.linux; maintainers = [ maintainers.msteen ]; diff --git a/pkgs/applications/audio/aumix/default.nix b/pkgs/applications/audio/aumix/default.nix index db5f081c4ed..5bc7f843258 100644 --- a/pkgs/applications/audio/aumix/default.nix +++ b/pkgs/applications/audio/aumix/default.nix @@ -21,7 +21,7 @@ stdenv.mkDerivation rec { Aumix adjusts an audio mixer from X, the console, a terminal, the command line or a script. ''; - homepage = http://www.jpj.net/~trevor/aumix.html; + homepage = "http://www.jpj.net/~trevor/aumix.html"; license = stdenv.lib.licenses.gpl2Plus; maintainers = [ ]; diff --git a/pkgs/applications/audio/avldrums-lv2/default.nix b/pkgs/applications/audio/avldrums-lv2/default.nix deleted file mode 100644 index eeb0f67d193..00000000000 --- a/pkgs/applications/audio/avldrums-lv2/default.nix +++ /dev/null @@ -1,29 +0,0 @@ -{ stdenv, fetchFromGitHub, pkgconfig, pango, cairo, libGLU, lv2 }: - -stdenv.mkDerivation rec { - pname = "avldrums.lv2"; - version = "0.4.0"; - - src = fetchFromGitHub { - owner = "x42"; - repo = pname; - rev = "v${version}"; - sha256 = "1z70rcq6z3gkb4fm8dm9hs31bslwr97zdh2n012fzki9b9rdj5qv"; - fetchSubmodules = true; - }; - - installFlags = "PREFIX=$(out)"; - - nativeBuildInputs = [ pkgconfig ]; - buildInputs = [ - pango cairo libGLU lv2 - ]; - - meta = with stdenv.lib; { - description = "Dedicated AVLDrumkits LV2 Plugin"; - homepage = http://x42-plugins.com/x42/x42-avldrums; - license = licenses.gpl2; - maintainers = [ maintainers.magnetophon ]; - platforms = [ "i686-linux" "x86_64-linux" ]; - }; -} diff --git a/pkgs/applications/audio/axoloti/default.nix b/pkgs/applications/audio/axoloti/default.nix index fb9b3c9513f..3d907e421b3 100644 --- a/pkgs/applications/audio/axoloti/default.nix +++ b/pkgs/applications/audio/axoloti/default.nix @@ -88,7 +88,7 @@ stdenv.mkDerivation rec { ''; meta = with stdenv.lib; { - homepage = http://www.axoloti.com; + homepage = "http://www.axoloti.com"; description = '' Sketching embedded digital audio algorithms. diff --git a/pkgs/applications/audio/axoloti/dfu-util.nix b/pkgs/applications/audio/axoloti/dfu-util.nix index e9fa6daecfe..80ec696c645 100644 --- a/pkgs/applications/audio/axoloti/dfu-util.nix +++ b/pkgs/applications/audio/axoloti/dfu-util.nix @@ -23,7 +23,7 @@ stdenv.mkDerivation rec { phones. With dfu-util you are able to download firmware to your device or upload firmware from it. ''; - homepage = http://dfu-util.sourceforge.net; + homepage = "http://dfu-util.sourceforge.net"; license = licenses.gpl2Plus; platforms = platforms.unix; maintainers = [ ]; diff --git a/pkgs/applications/audio/axoloti/libusb1.nix b/pkgs/applications/audio/axoloti/libusb1.nix index 1a6ebd346cc..49b788f6653 100644 --- a/pkgs/applications/audio/axoloti/libusb1.nix +++ b/pkgs/applications/audio/axoloti/libusb1.nix @@ -30,7 +30,7 @@ stdenv.mkDerivation rec { ''; meta = with stdenv.lib; { - homepage = http://www.libusb.info; + homepage = "http://www.libusb.info"; description = "User-space USB library"; platforms = platforms.unix; license = licenses.lgpl21; diff --git a/pkgs/applications/audio/baudline/default.nix b/pkgs/applications/audio/baudline/default.nix index c35df95b24c..0d95675d1e6 100644 --- a/pkgs/applications/audio/baudline/default.nix +++ b/pkgs/applications/audio/baudline/default.nix @@ -59,7 +59,7 @@ stdenv.mkDerivation rec { displays, and continuous capture tools for hunting down and studying elusive signal characteristics. ''; - homepage = http://www.baudline.com/; + homepage = "http://www.baudline.com/"; # See http://www.baudline.com/faq.html#licensing_terms. # (Do NOT (re)distribute on hydra.) license = licenses.unfree; diff --git a/pkgs/applications/audio/beast/default.nix b/pkgs/applications/audio/beast/default.nix deleted file mode 100644 index 29cecb16999..00000000000 --- a/pkgs/applications/audio/beast/default.nix +++ /dev/null @@ -1,38 +0,0 @@ -{ stdenv, fetchurl, zlib, guile, libart_lgpl, pkgconfig, intltool -, gtk2, glib, libogg, libvorbis, libgnomecanvas, gettext, perl }: - -stdenv.mkDerivation rec { - name = "beast-0.7.1"; - - src = fetchurl { - url = "https://ftp.gtk.org/pub/beast/v0.7/${name}.tar.bz2"; - sha256 = "0jyl1i1918rsn4296w07fsf6wx3clvad522m3bzgf8ms7gxivg5l"; - }; - - buildInputs = - [ zlib guile libart_lgpl pkgconfig intltool gtk2 glib - libogg libvorbis libgnomecanvas gettext - ]; - - patchPhase = '' - unset patchPhase; patchPhase - sed 's=-DG_DISABLE_DEPRECATED==g' -i `find -type f` # the patches didn't remove all occurences - sed 's=/bin/bash=/${stdenv.shell}=g' -i `find -type f` - sed 's=/usr/bin/perl=/${perl}/bin/perl=g' -i `find -type f` - ''; - - patches = - [ (fetchurl { - url = mirror://gentoo/distfiles/beast-0.7.1-guile-1.8.diff.bz2; - sha256 = "dc5194deff4b0a0eec368a69090db682d0c3113044ce2c2ed017ddfec9d3814e"; - }) - ./patch.patch # patches taken from gentoo - ]; - - meta = with stdenv.lib; { - description = "A music composition and modular synthesis application"; - homepage = http://beast.gtk.org; - license = with licenses; [ gpl2 lgpl21 ]; - broken = true; - }; -} diff --git a/pkgs/applications/audio/bitmeter/default.nix b/pkgs/applications/audio/bitmeter/default.nix index 6f471f3a028..ac05a9367cc 100644 --- a/pkgs/applications/audio/bitmeter/default.nix +++ b/pkgs/applications/audio/bitmeter/default.nix @@ -14,13 +14,13 @@ stdenv.mkDerivation rec { patches = [ (fetchurl { - url = https://gitweb.gentoo.org/repo/gentoo.git/plain/media-sound/bitmeter/files/bitmeter-1.2-fix-build-system.patch; + url = "https://gitweb.gentoo.org/repo/gentoo.git/plain/media-sound/bitmeter/files/bitmeter-1.2-fix-build-system.patch"; sha256 = "021mz6933iw7mpk6b9cbjr8naj6smbq1hwqjszlyx72qbwrrid7k"; }) ]; meta = with stdenv.lib; { - homepage = http://devel.tlrmx.org/audio/bitmeter/; + homepage = "http://devel.tlrmx.org/audio/bitmeter/"; description = "Also known as jack bitscope. Useful to detect denormals"; license = licenses.gpl2; maintainers = [ maintainers.magnetophon ]; diff --git a/pkgs/applications/audio/bitwig-studio/bitwig-studio1.nix b/pkgs/applications/audio/bitwig-studio/bitwig-studio1.nix index 83586847190..910c1cfe51b 100644 --- a/pkgs/applications/audio/bitwig-studio/bitwig-studio1.nix +++ b/pkgs/applications/audio/bitwig-studio/bitwig-studio1.nix @@ -90,7 +90,7 @@ stdenv.mkDerivation rec { production, performance and DJing, with a focus on flexible editing tools and a super-fast workflow. ''; - homepage = https://www.bitwig.com/; + homepage = "https://www.bitwig.com/"; license = licenses.unfree; platforms = [ "x86_64-linux" ]; maintainers = with maintainers; [ michalrus mrVanDalo ]; diff --git a/pkgs/applications/audio/bitwig-studio/bitwig-studio3.nix b/pkgs/applications/audio/bitwig-studio/bitwig-studio3.nix index dd59ac5080f..64ee40e038c 100644 --- a/pkgs/applications/audio/bitwig-studio/bitwig-studio3.nix +++ b/pkgs/applications/audio/bitwig-studio/bitwig-studio3.nix @@ -1,16 +1,23 @@ -{ fetchurl, bitwig-studio1, - pulseaudio }: +{ fetchurl, bitwig-studio1, pulseaudio, xorg }: bitwig-studio1.overrideAttrs (oldAttrs: rec { name = "bitwig-studio-${version}"; - version = "3.0.3"; + version = "3.1.2"; src = fetchurl { url = "https://downloads.bitwig.com/stable/${version}/bitwig-studio-${version}.deb"; - sha256 = "162l95imq2fb4blfkianlkymm690by9ri73xf9zigknqf0gacgsa"; + sha256 = "07djn52lz43ls6fa4k1ncz3m1nc5zv2j93hwyavnr66r0hlqy7l9"; }; - runtimeDependencies = [ - pulseaudio - ]; + buildInputs = oldAttrs.buildInputs ++ [ xorg.libXtst ]; + + runtimeDependencies = [ pulseaudio ]; + + installPhase = '' + ${oldAttrs.installPhase} + + # recover commercial jre + rm -f $out/libexec/lib/jre + cp -r opt/bitwig-studio/lib/jre $out/libexec/lib + ''; }) diff --git a/pkgs/applications/audio/bristol/default.nix b/pkgs/applications/audio/bristol/default.nix index 504900d6595..704b888e229 100644 --- a/pkgs/applications/audio/bristol/default.nix +++ b/pkgs/applications/audio/bristol/default.nix @@ -26,7 +26,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "A range of synthesiser, electric piano and organ emulations"; - homepage = http://bristol.sourceforge.net; + homepage = "http://bristol.sourceforge.net"; license = licenses.gpl3; platforms = ["x86_64-linux" "i686-linux"]; maintainers = [ maintainers.goibhniu ]; diff --git a/pkgs/applications/audio/bs1770gain/default.nix b/pkgs/applications/audio/bs1770gain/default.nix index 2dee463aeee..76a78935619 100644 --- a/pkgs/applications/audio/bs1770gain/default.nix +++ b/pkgs/applications/audio/bs1770gain/default.nix @@ -16,7 +16,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "A audio/video loudness scanner implementing ITU-R BS.1770"; license = licenses.gpl2Plus; - homepage = http://bs1770gain.sourceforge.net/; + homepage = "http://bs1770gain.sourceforge.net/"; platforms = platforms.all; }; } diff --git a/pkgs/applications/audio/bsequencer/default.nix b/pkgs/applications/audio/bsequencer/default.nix index b91554f5716..e63124e8547 100644 --- a/pkgs/applications/audio/bsequencer/default.nix +++ b/pkgs/applications/audio/bsequencer/default.nix @@ -19,7 +19,7 @@ stdenv.mkDerivation rec { installFlags = [ "PREFIX=$(out)" ]; meta = with stdenv.lib; { - homepage = https://github.com/sjaehn/BSEQuencer; + homepage = "https://github.com/sjaehn/BSEQuencer"; description = "Multi channel MIDI step sequencer LV2 plugin"; maintainers = [ maintainers.magnetophon ]; platforms = platforms.linux; diff --git a/pkgs/applications/audio/bshapr/default.nix b/pkgs/applications/audio/bshapr/default.nix index 732a8cf1ce2..a2f96bc288c 100644 --- a/pkgs/applications/audio/bshapr/default.nix +++ b/pkgs/applications/audio/bshapr/default.nix @@ -2,13 +2,13 @@ stdenv.mkDerivation rec { pname = "BShapr"; - version = "0.6"; + version = "0.8"; src = fetchFromGitHub { owner = "sjaehn"; repo = pname; rev = "v${version}"; - sha256 = "0mi8f0svq1h9cmmxyskcazr5x2q4dls3j9jc6ahi5rlk7i0bpa74"; + sha256 = "0jlq5rjicc4fxlpk869dg0l5bwwz8k9aj2wfk9v89b0qw8l8kaxl"; }; nativeBuildInputs = [ pkgconfig ]; @@ -19,7 +19,7 @@ stdenv.mkDerivation rec { installFlags = [ "PREFIX=$(out)" ]; meta = with stdenv.lib; { - homepage = https://github.com/sjaehn/BShapr; + homepage = "https://github.com/sjaehn/BShapr"; description = "Beat / envelope shaper LV2 plugin"; maintainers = [ maintainers.magnetophon ]; platforms = platforms.linux; diff --git a/pkgs/applications/audio/bslizr/default.nix b/pkgs/applications/audio/bslizr/default.nix index 3273d7de68c..bae2407ec7b 100644 --- a/pkgs/applications/audio/bslizr/default.nix +++ b/pkgs/applications/audio/bslizr/default.nix @@ -2,13 +2,13 @@ stdenv.mkDerivation rec { pname = "BSlizr"; - version = "1.2.2"; + version = "1.2.6"; src = fetchFromGitHub { owner = "sjaehn"; repo = pname; rev = "${version}"; - sha256 = "0q92ygz17iiriwzqylmaxd5ml2bhqy3n6c3f7g71n4hn9z3bl3s1"; + sha256 = "1l0znwvvqd2s24c652q54pkizlh86mvmr8h0qqp9xma0i575fcrh"; }; nativeBuildInputs = [ pkgconfig ]; @@ -19,7 +19,7 @@ stdenv.mkDerivation rec { installFlags = [ "PREFIX=$(out)" ]; meta = with stdenv.lib; { - homepage = https://github.com/sjaehn/BSlizr; + homepage = "https://github.com/sjaehn/BSlizr"; description = "Sequenced audio slicing effect LV2 plugin (step sequencer effect)"; maintainers = [ maintainers.magnetophon ]; platforms = platforms.linux; diff --git a/pkgs/applications/audio/cadence/default.nix b/pkgs/applications/audio/cadence/default.nix index cd1d837e1dd..4f4ad4b8c5b 100644 --- a/pkgs/applications/audio/cadence/default.nix +++ b/pkgs/applications/audio/cadence/default.nix @@ -1,14 +1,23 @@ { stdenv -, mkDerivation +, a2jmidid +, coreutils , lib +, libjack2 +, fetchpatch , fetchzip +, jack_capture , pkgconfig +, pulseaudioFull , qtbase , makeWrapper -, python3Packages +, mkDerivation +, python3 }: +#ladish missing, claudia can't work. +#pulseaudio needs fixes (patchShebangs .pa ...) +#desktop needs icons and exec fixing. - mkDerivation rec { +mkDerivation rec { version = "0.9.1"; pname = "cadence"; @@ -17,21 +26,39 @@ sha256 = "07z8grnnpkd0nf3y3r6qjlk1jlzrbhdrp9mnhrhhmws54p1bhl20"; }; + patches = [ + # Fix installation without DESTDIR + (fetchpatch { + url = "https://github.com/falkTX/Cadence/commit/1fd3275e7daf4b75f59ef1f85a9e2e93bd5c0731.patch"; + sha256 = "0q791jsh8vmjg678dzhbp1ykq8xrrlxl1mbgs3g8if1ccj210vd8"; + }) + ]; + + postPatch = '' + libjackso=$(realpath ${lib.makeLibraryPath [libjack2]}/libjack.so.0); + substituteInPlace ./src/jacklib.py --replace libjack.so.0 $libjackso + substituteInPlace ./src/cadence.py --replace "/usr/bin/pulseaudio" \ + "${lib.makeBinPath[pulseaudioFull]}/pulseaudio" + substituteInPlace ./c++/jackbridge/JackBridge.cpp --replace libjack.so.0 $libjackso + ''; + nativeBuildInputs = [ pkgconfig ]; buildInputs = [ qtbase + jack_capture + pulseaudioFull + ((python3.withPackages (ps: with ps; [ + pyqt5 + dbus-python + ]))) ]; makeFlags = [ - "PREFIX=''" - "DESTDIR=${placeholder "out"}" - ]; - - propagatedBuildInputs = with python3Packages; [ - pyqt5_with_qtwebkit + "PREFIX=${placeholder "out"}" + "SYSCONFDIR=${placeholder "out"}/etc" ]; dontWrapQtApps = true; @@ -56,14 +83,15 @@ }; in lib.mapAttrsToList (script: source: '' rm -f ${script} - makeWrapper ${python3Packages.python.interpreter} ${script} \ - --set PYTHONPATH "$PYTHONPATH:${outRef}/share/cadence" \ - ''${qtWrapperArgs[@]} \ - --add-flags "-O ${source}" + makeQtWrapper ${source} ${script} \ + --prefix PATH : "${lib.makeBinPath [ + jack_capture # cadence-render + pulseaudioFull # cadence, cadence-session-start + ]}" '') scriptAndSource; meta = { - homepage = https://github.com/falkTX/Cadence/; + homepage = "https://github.com/falkTX/Cadence/"; description = "Collection of tools useful for audio production"; license = stdenv.lib.licenses.gpl2Plus; maintainers = with stdenv.lib.maintainers; [ genesis worldofpeace ]; diff --git a/pkgs/applications/audio/calf/default.nix b/pkgs/applications/audio/calf/default.nix index 0106e8b4584..bbeef4c395a 100644 --- a/pkgs/applications/audio/calf/default.nix +++ b/pkgs/applications/audio/calf/default.nix @@ -18,7 +18,7 @@ stdenv.mkDerivation rec { ]; meta = with stdenv.lib; { - homepage = http://calf-studio-gear.org; + homepage = "http://calf-studio-gear.org"; description = "A set of high quality open source audio plugins for musicians"; license = licenses.lgpl2; maintainers = [ maintainers.goibhniu ]; diff --git a/pkgs/applications/audio/cantata/default.nix b/pkgs/applications/audio/cantata/default.nix index 876889416da..799cefc7819 100644 --- a/pkgs/applications/audio/cantata/default.nix +++ b/pkgs/applications/audio/cantata/default.nix @@ -1,5 +1,5 @@ -{ mkDerivation, lib, fetchFromGitHub, cmake, pkgconfig, vlc -, qtbase, qtmultimedia, qtsvg, qttools +{ mkDerivation, lib, fetchFromGitHub, cmake, pkgconfig +, qtbase, qtsvg, qttools # Cantata doesn't build with cdparanoia enabled so we disable that # default for now until I (or someone else) figure it out. @@ -9,12 +9,14 @@ , withMusicbrainz ? false, libmusicbrainz5 , withTaglib ? true, taglib, taglib_extras +, withHttpStream ? true, qtmultimedia , withReplaygain ? true, ffmpeg, speex, mpg123 , withMtp ? true, libmtp , withOnlineServices ? true , withDevices ? true, udisks2 , withDynamic ? true , withHttpServer ? true +, withLibVlc ? false, vlc , withStreams ? true }: @@ -26,9 +28,10 @@ assert withMtp -> withTaglib; assert withMusicbrainz -> withCdda && withTaglib; assert withOnlineServices -> withTaglib; assert withReplaygain -> withTaglib; +assert withLibVlc -> withHttpStream; let - version = "2.3.3"; + version = "2.4.1"; pname = "cantata"; fstat = x: fn: "-DENABLE_" + fn + "=" + (if x then "ON" else "OFF"); fstats = x: map (fstat x); @@ -42,18 +45,20 @@ in mkDerivation { owner = "CDrummond"; repo = "cantata"; rev = "v${version}"; - sha256 = "1m651fmdbnb50glym75kzma0bllvqbmrb2afp1g9g5cxm1898c0f"; + sha256 = "0ix7xp352bziwz31mw79y7wxxmdn6060p8ry2px243ni1lz1qx1c"; }; - buildInputs = [ vlc qtbase qtmultimedia qtsvg ] + buildInputs = [ qtbase qtsvg ] ++ lib.optionals withTaglib [ taglib taglib_extras ] ++ lib.optionals withReplaygain [ ffmpeg speex mpg123 ] + ++ lib.optional withHttpStream qtmultimedia ++ lib.optional withCdda cdparanoia ++ lib.optional withCddb libcddb ++ lib.optional withLame lame ++ lib.optional withMtp libmtp ++ lib.optional withMusicbrainz libmusicbrainz5 - ++ lib.optional withUdisks udisks2; + ++ lib.optional withUdisks udisks2 + ++ lib.optional withLibVlc vlc; nativeBuildInputs = [ cmake pkgconfig qttools ]; @@ -62,6 +67,7 @@ in mkDerivation { cmakeFlags = lib.flatten [ (fstats withTaglib [ "TAGLIB" "TAGLIB_EXTRAS" ]) (fstats withReplaygain [ "FFMPEG" "MPG123" "SPEEXDSP" ]) + (fstat withHttpStream "HTTP_STREAM_PLAYBACK") (fstat withCdda "CDPARANOIA") (fstat withCddb "CDDB") (fstat withLame "LAME") @@ -71,13 +77,14 @@ in mkDerivation { (fstat withDynamic "DYNAMIC") (fstat withDevices "DEVICES_SUPPORT") (fstat withHttpServer "HTTP_SERVER") + (fstat withLibVlc "LIBVLC") (fstat withStreams "STREAMS") (fstat withUdisks "UDISKS2") "-DENABLE_HTTPS_SUPPORT=ON" ]; meta = with lib; { - homepage = https://github.com/cdrummond/cantata; + homepage = "https://github.com/cdrummond/cantata"; description = "A graphical client for MPD"; license = licenses.gpl3; maintainers = with maintainers; [ peterhoeg ]; diff --git a/pkgs/applications/audio/caps/default.nix b/pkgs/applications/audio/caps/default.nix index eabbf866837..dc8511bf500 100644 --- a/pkgs/applications/audio/caps/default.nix +++ b/pkgs/applications/audio/caps/default.nix @@ -22,7 +22,7 @@ stdenv.mkDerivation rec { considerations are latency-free realtime operation, modesty of resource demands and meaningful control interfaces. ''; - homepage = http://www.quitte.de/dsp/caps.html; + homepage = "http://www.quitte.de/dsp/caps.html"; license = stdenv.lib.licenses.gpl3; maintainers = [ stdenv.lib.maintainers.astsmtl ]; platforms = stdenv.lib.platforms.linux; diff --git a/pkgs/applications/audio/carla/default.nix b/pkgs/applications/audio/carla/default.nix index 98a4ddd29d6..bf297d8a83c 100644 --- a/pkgs/applications/audio/carla/default.nix +++ b/pkgs/applications/audio/carla/default.nix @@ -15,13 +15,13 @@ assert withGtk3 -> gtk3 != null; stdenv.mkDerivation rec { pname = "carla"; - version = "2.0.0"; + version = "2.1"; src = fetchFromGitHub { owner = "falkTX"; repo = pname; rev = "v${version}"; - sha256 = "0fqgncqlr86n38yy7pa118mswfacmfczj7w9xx6c6k0jav3wk29k"; + sha256 = "074y40yrgl3qrdr3a5vn0scsw0qv77r5p5m6gc89zhf20ic8ajzc"; }; nativeBuildInputs = [ @@ -39,12 +39,15 @@ stdenv.mkDerivation rec { ++ optional withGtk2 gtk2 ++ optional withGtk3 gtk3; + enableParallelBuilding = true; + installFlags = [ "PREFIX=$(out)" ]; dontWrapQtApps = true; postFixup = '' # Also sets program_PYTHONPATH and program_PATH variables wrapPythonPrograms + wrapPythonProgramsIn "$out/share/carla/resources" "$out $pythonPath" find "$out/share/carla" -maxdepth 1 -type f -not -name "*.py" -print0 | while read -d "" f; do patchPythonScript "$f" @@ -56,10 +59,16 @@ stdenv.mkDerivation rec { --prefix PATH : "$program_PATH:${which}/bin" \ --set PYTHONNOUSERSITE true done + + find "$out/share/carla/resources" -maxdepth 1 -type f -not -name "*.py" -print0 | while read -d "" f; do + wrapQtApp "$f" \ + --prefix PATH : "$program_PATH:${which}/bin" \ + --set PYTHONNOUSERSITE true + done ''; meta = with stdenv.lib; { - homepage = http://kxstudio.sf.net/carla; + homepage = "http://kxstudio.sf.net/carla"; description = "An audio plugin host"; longDescription = '' It currently supports LADSPA (including LRDF), DSSI, LV2, VST2/3 diff --git a/pkgs/applications/audio/caudec/default.nix b/pkgs/applications/audio/caudec/default.nix index 1ab39311258..c9539095863 100644 --- a/pkgs/applications/audio/caudec/default.nix +++ b/pkgs/applications/audio/caudec/default.nix @@ -31,7 +31,7 @@ stdenv.mkDerivation { ''; meta = with stdenv.lib; { - homepage = http://caudec.net/; + homepage = "http://caudec.net/"; description = "A multiprocess audio converter that supports many formats (FLAC, MP3, Ogg Vorbis, Windows codecs and many more)"; license = licenses.gpl3; platforms = platforms.linux ++ platforms.darwin; diff --git a/pkgs/applications/audio/cava/default.nix b/pkgs/applications/audio/cava/default.nix index 5c5c262056e..2bdca386bf4 100644 --- a/pkgs/applications/audio/cava/default.nix +++ b/pkgs/applications/audio/cava/default.nix @@ -30,7 +30,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Console-based Audio Visualizer for Alsa"; - homepage = https://github.com/karlstav/cava; + homepage = "https://github.com/karlstav/cava"; license = licenses.mit; maintainers = with maintainers; [ offline mirrexagon ]; platforms = platforms.linux; diff --git a/pkgs/applications/audio/cd-discid/default.nix b/pkgs/applications/audio/cd-discid/default.nix index 76f76c1e750..2ceb5f6d09a 100644 --- a/pkgs/applications/audio/cd-discid/default.nix +++ b/pkgs/applications/audio/cd-discid/default.nix @@ -10,13 +10,13 @@ stdenv.mkDerivation rec { sha256 = "0qrcvn7227qaayjcd5rm7z0k5q89qfy5qkdgwr5pd7ih0va8rmpz"; }; - installFlags = "PREFIX=$(out) INSTALL=install"; + installFlags = [ "PREFIX=$(out)" "INSTALL=install" ]; buildInputs = [] ++ stdenv.lib.optional stdenv.isDarwin IOKit; meta = with stdenv.lib; { - homepage = http://linukz.org/cd-discid.shtml; + homepage = "http://linukz.org/cd-discid.shtml"; license = licenses.gpl2Plus; maintainers = [ maintainers.rycee ]; platforms = platforms.unix; diff --git a/pkgs/applications/audio/cdparanoia/default.nix b/pkgs/applications/audio/cdparanoia/default.nix index 4e517ee636e..0658305723c 100644 --- a/pkgs/applications/audio/cdparanoia/default.nix +++ b/pkgs/applications/audio/cdparanoia/default.nix @@ -35,7 +35,7 @@ stdenv.mkDerivation rec { ''; meta = with stdenv.lib; { - homepage = https://xiph.org/paranoia; + homepage = "https://xiph.org/paranoia"; description = "A tool and library for reading digital audio from CDs"; license = with licenses; [ gpl2Plus lgpl21Plus ]; platforms = platforms.unix; diff --git a/pkgs/applications/audio/cheesecutter/0001-fix-impure-build-date-display.patch b/pkgs/applications/audio/cheesecutter/0001-fix-impure-build-date-display.patch new file mode 100644 index 00000000000..2e2746f4341 --- /dev/null +++ b/pkgs/applications/audio/cheesecutter/0001-fix-impure-build-date-display.patch @@ -0,0 +1,26 @@ +diff --git a/src/ct2util.d b/src/ct2util.d +index 523cadc..e462b09 100644 +--- a/src/ct2util.d ++++ b/src/ct2util.d +@@ -105,7 +105,7 @@ int main(string[] args) { + speeds.length = 32; + masks.length = 32; + void printheader() { +- enum hdr = "CheeseCutter 2 utilities" ~ com.util.versionInfo; ++ enum hdr = "CheeseCutter 2 utilities"; + writefln(hdr); + writefln("\nUsage: \t%s <-o outfile>",args[0]); + writefln("\t%s import <-o outfile>",args[0]); +diff --git a/src/ui/ui.d b/src/ui/ui.d +index e418dda..21af408 100644 +--- a/src/ui/ui.d ++++ b/src/ui/ui.d +@@ -231,7 +231,7 @@ class Infobar : Window { + + screen.clrtoeol(0, headerColor); + +- enum hdr = "CheeseCutter 2.9" ~ com.util.versionInfo; ++ enum hdr = "CheeseCutter 2.9"; + screen.cprint(4, 0, 1, headerColor, hdr); + screen.cprint(screen.width - 14, 0, 1, headerColor, "F12 = Help"); + int c1 = audio.player.isPlaying ? 13 : 12; diff --git a/pkgs/applications/audio/cheesecutter/default.nix b/pkgs/applications/audio/cheesecutter/default.nix new file mode 100644 index 00000000000..732c2968fde --- /dev/null +++ b/pkgs/applications/audio/cheesecutter/default.nix @@ -0,0 +1,48 @@ +{ stdenv, lib, fetchFromGitHub, fetchpatch +, acme, ldc, patchelf +, SDL +}: + +stdenv.mkDerivation rec { + pname = "cheesecutter"; + version = "unstable-2019-12-06"; + + src = fetchFromGitHub { + owner = "theyamo"; + repo = "CheeseCutter"; + rev = "6b433c5512d693262742a93c8bfdfb353d4be853"; + sha256 = "1szlcg456b208w1237581sg21x69mqlh8cr6v8yvbhxdz9swxnwy"; + }; + + nativeBuildInputs = [ acme ldc patchelf ]; + + buildInputs = [ SDL ]; + + patches = [ + ./0001-fix-impure-build-date-display.patch + ]; + + makefile = "Makefile.ldc"; + + installPhase = '' + for exe in {ccutter,ct2util}; do + install -D $exe $out/bin/$exe + done + + mkdir -p $out/share/cheesecutter/example_tunes + cp -r tunes/* $out/share/cheesecutter/example_tunes + ''; + + postFixup = '' + rpath=$(patchelf --print-rpath $out/bin/ccutter) + patchelf --set-rpath "$rpath:${lib.makeLibraryPath buildInputs}" $out/bin/ccutter + ''; + + meta = with lib; { + description = "A tracker program for composing music for the SID chip."; + homepage = "https://github.com/theyamo/CheeseCutter/"; + license = licenses.gpl2; + platforms = [ "x86_64-linux" "i686-linux" "x86_64-darwin" ]; + maintainers = with maintainers; [ OPNA2608 ]; + }; +} diff --git a/pkgs/applications/audio/chuck/default.nix b/pkgs/applications/audio/chuck/default.nix index 692485d0dcf..6970296cbd9 100644 --- a/pkgs/applications/audio/chuck/default.nix +++ b/pkgs/applications/audio/chuck/default.nix @@ -19,8 +19,8 @@ stdenv.mkDerivation rec { patches = [ ./darwin-limits.patch ]; - NIX_CFLAGS_COMPILE = lib.optional stdenv.isDarwin "-Wno-missing-sysroot"; - NIX_LDFLAGS = lib.optional stdenv.isDarwin "-framework MultitouchSupport"; + NIX_CFLAGS_COMPILE = lib.optionalString stdenv.isDarwin "-Wno-missing-sysroot"; + NIX_LDFLAGS = lib.optionalString stdenv.isDarwin "-framework MultitouchSupport"; postPatch = '' substituteInPlace src/core/makefile.x/makefile.osx \ @@ -33,7 +33,7 @@ stdenv.mkDerivation rec { meta = with lib; { description = "Programming language for real-time sound synthesis and music creation"; - homepage = http://chuck.cs.princeton.edu; + homepage = "http://chuck.cs.princeton.edu"; license = licenses.gpl2; platforms = platforms.unix; maintainers = with maintainers; [ ftrvxmtrx ]; diff --git a/pkgs/applications/audio/clementine/default.nix b/pkgs/applications/audio/clementine/default.nix index 0a374c26142..4a32b099d15 100644 --- a/pkgs/applications/audio/clementine/default.nix +++ b/pkgs/applications/audio/clementine/default.nix @@ -77,7 +77,7 @@ let inherit src patches nativeBuildInputs postPatch; # gst_plugins needed for setup-hooks - buildInputs = buildInputs ++ [ makeWrapper gst_plugins ]; + buildInputs = buildInputs ++ [ makeWrapper ] ++ gst_plugins; cmakeFlags = [ "-DUSE_SYSTEM_PROJECTM=ON" ]; @@ -91,7 +91,7 @@ let ''; meta = with stdenv.lib; { - homepage = http://www.clementine-player.org; + homepage = "http://www.clementine-player.org"; description = "A multiplatform music player"; license = licenses.gpl3Plus; platforms = platforms.linux; @@ -125,12 +125,12 @@ let mkdir -p $out/share for dir in applications icons kde4; do - ln -s "$free/share/$dir" "$out/share/$dir" + ln -s "${free}/share/$dir" "$out/share/$dir" done ''; enableParallelBuilding = true; meta = with stdenv.lib; { - homepage = http://www.clementine-player.org; + homepage = "http://www.clementine-player.org"; description = "Spotify integration for Clementine"; # The blob itself is Apache-licensed, although libspotify is unfree. license = licenses.asl20; diff --git a/pkgs/applications/audio/clerk/default.nix b/pkgs/applications/audio/clerk/default.nix index 4da2228c6c1..3c78295db67 100644 --- a/pkgs/applications/audio/clerk/default.nix +++ b/pkgs/applications/audio/clerk/default.nix @@ -23,7 +23,7 @@ stdenv.mkDerivation { meta = with stdenv.lib; { description = "An MPD client built on top of rofi"; - homepage = https://github.com/carnager/clerk; + homepage = "https://github.com/carnager/clerk"; license = licenses.mit; maintainers = with maintainers; [ anderspapitto ]; }; diff --git a/pkgs/applications/audio/cmt/default.nix b/pkgs/applications/audio/cmt/default.nix new file mode 100644 index 00000000000..96cc3c57319 --- /dev/null +++ b/pkgs/applications/audio/cmt/default.nix @@ -0,0 +1,33 @@ +{ stdenv +, fetchurl +, ladspaH +}: + +stdenv.mkDerivation rec { + name = "cmt"; + version = "1.17"; + + src = fetchurl { + url = "http://www.ladspa.org/download/${name}_${version}.tgz"; + sha256 = "07xd0xmwpa0j12813jpf87fr9hwzihii5l35mp8ady7xxfmxfmpb"; + }; + + buildInputs = [ ladspaH ]; + + preBuild = '' + cd src + ''; + + installFlags = [ "INSTALL_PLUGINS_DIR=${placeholder "out"}/lib/ladspa" ]; + preInstall = '' + mkdir -p $out/lib/ladspa + ''; + + meta = with stdenv.lib; { + description = "Computer Music Toolkit"; + homepage = "https://www.ladspa.org/cmt"; + license = licenses.gpl2; + platforms = platforms.linux; + maintainers = with maintainers; [ sjfloat ]; + }; +} diff --git a/pkgs/applications/audio/cmus/default.nix b/pkgs/applications/audio/cmus/default.nix index b88951c0fc5..3e5916ba098 100644 --- a/pkgs/applications/audio/cmus/default.nix +++ b/pkgs/applications/audio/cmus/default.nix @@ -122,13 +122,13 @@ stdenv.mkDerivation rec { buildInputs = [ ncurses ] ++ stdenv.lib.optional stdenv.cc.isClang clangGCC ++ stdenv.lib.optionals stdenv.isDarwin [ libiconv CoreAudio ] - ++ concatMap (a: a.deps) opts; + ++ flatten (concatMap (a: a.deps) opts); makeFlags = [ "LD=$(CC)" ]; meta = with stdenv.lib; { description = "Small, fast and powerful console music player for Linux and *BSD"; - homepage = https://cmus.github.io/; + homepage = "https://cmus.github.io/"; license = licenses.gpl2; maintainers = [ maintainers.oxij ]; platforms = platforms.linux ++ platforms.darwin; diff --git a/pkgs/applications/audio/cmusfm/default.nix b/pkgs/applications/audio/cmusfm/default.nix index 54f1050da46..6695b9a7237 100644 --- a/pkgs/applications/audio/cmusfm/default.nix +++ b/pkgs/applications/audio/cmusfm/default.nix @@ -28,7 +28,7 @@ stdenv.mkDerivation { + run `cmusfm init` to generate configuration file under ~/.config/cmus/cmusfm.conf + Inside cmus run `:set status_display_program=cmusfm` to set up cmusfm ''; - homepage = https://github.com/Arkq/cmusfm/; + homepage = "https://github.com/Arkq/cmusfm/"; maintainers = with stdenv.lib.maintainers; [ CharlesHD ]; license = licenses.gpl3Plus; platforms = platforms.linux ++ platforms.darwin; diff --git a/pkgs/applications/audio/cozy-audiobooks/default.nix b/pkgs/applications/audio/cozy-audiobooks/default.nix index 865bc130db9..a5947bd37f1 100644 --- a/pkgs/applications/audio/cozy-audiobooks/default.nix +++ b/pkgs/applications/audio/cozy-audiobooks/default.nix @@ -75,7 +75,7 @@ python3Packages.buildPythonApplication rec { meta = with stdenv.lib; { description = "A modern audio book player for Linux using GTK 3"; - homepage = https://cozy.geigi.de/; + homepage = "https://cozy.geigi.de/"; maintainers = [ maintainers.makefu ]; license = licenses.gpl3; }; diff --git a/pkgs/applications/audio/crip/default.nix b/pkgs/applications/audio/crip/default.nix index f7bf919c221..0181ede26dd 100644 --- a/pkgs/applications/audio/crip/default.nix +++ b/pkgs/applications/audio/crip/default.nix @@ -58,7 +58,7 @@ stdenv.mkDerivation rec { ''; meta = { - homepage = http://bach.dynet.com/crip/; + homepage = "http://bach.dynet.com/crip/"; description = "Terminal-based ripper/encoder/tagger tool for creating Ogg Vorbis/FLAC files"; license = stdenv.lib.licenses.gpl1; platforms = stdenv.lib.platforms.linux; diff --git a/pkgs/applications/audio/csa/default.nix b/pkgs/applications/audio/csa/default.nix index 0b8afada020..756c21892fb 100644 --- a/pkgs/applications/audio/csa/default.nix +++ b/pkgs/applications/audio/csa/default.nix @@ -14,7 +14,7 @@ stdenv.mkDerivation rec { postInstall = "rm $out/lib/ladspa/celllm_3890.*"; meta = with stdenv.lib; { - homepage = https://sourceforge.net/projects/csa/; + homepage = "https://sourceforge.net/projects/csa/"; description = "A group of LADSPA Audio plugins for FM broadcast and more"; longDescription = '' CSA means : Contrôle Signal Audio. diff --git a/pkgs/applications/audio/csound/csound-qt/default.nix b/pkgs/applications/audio/csound/csound-qt/default.nix index d16d9331821..895609d3c02 100644 --- a/pkgs/applications/audio/csound/csound-qt/default.nix +++ b/pkgs/applications/audio/csound/csound-qt/default.nix @@ -42,7 +42,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "CsoundQt is a frontend for Csound with editor, integrated help, widgets and other features."; - homepage = https://csoundqt.github.io/; + homepage = "https://csoundqt.github.io/"; license = licenses.gpl2; platforms = platforms.linux; maintainers = with maintainers; [ hlolli ]; diff --git a/pkgs/applications/audio/csound/default.nix b/pkgs/applications/audio/csound/default.nix index 758448c2fb3..4b426609fea 100644 --- a/pkgs/applications/audio/csound/default.nix +++ b/pkgs/applications/audio/csound/default.nix @@ -42,7 +42,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Sound design, audio synthesis, and signal processing system, providing facilities for music composition and performance on all major operating systems and platforms"; - homepage = http://www.csounds.com/; + homepage = "http://www.csounds.com/"; license = licenses.gpl2; maintainers = [maintainers.marcweber]; platforms = platforms.linux; diff --git a/pkgs/applications/audio/deadbeef/default.nix b/pkgs/applications/audio/deadbeef/default.nix index a6ca5b3639d..4c2323fbe8a 100644 --- a/pkgs/applications/audio/deadbeef/default.nix +++ b/pkgs/applications/audio/deadbeef/default.nix @@ -59,22 +59,15 @@ assert remoteSupport -> curl != null; stdenv.mkDerivation rec { pname = "deadbeef"; - version = "1.8.0"; + version = "1.8.3"; src = fetchFromGitHub { owner = "DeaDBeeF-Player"; repo = "deadbeef"; rev = version; - sha256 = "126i5qlkpv7pvi1mmc9y0jhqs6jjspsj7j615n2ddvsb2jsps81c"; + sha256 = "0n0q7zfl56gnadcqqp5rg7sbh1xvfcmp7cvmh2ax07037b346qig"; }; - patches = [ - # Fix broken symbol name - # https://github.com/NixOS/nixpkgs/pull/59187#issuecomment-480977993 - # will be fixed in deadbeef 1.8.1 - ./fix-wildmidi.patch - ]; - buildInputs = with stdenv.lib; [ jansson ] ++ optional gtk2Support gtk2 ++ optionals gtk3Support [ gtk3 gsettings-desktop-schemas ] @@ -115,7 +108,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Ultimate Music Player for GNU/Linux"; - homepage = http://deadbeef.sourceforge.net/; + homepage = "http://deadbeef.sourceforge.net/"; license = licenses.gpl2; platforms = [ "x86_64-linux" "i686-linux" ]; maintainers = [ maintainers.abbradar ]; diff --git a/pkgs/applications/audio/deadbeef/fix-wildmidi.patch b/pkgs/applications/audio/deadbeef/fix-wildmidi.patch deleted file mode 100644 index c37308459bb..00000000000 --- a/pkgs/applications/audio/deadbeef/fix-wildmidi.patch +++ /dev/null @@ -1,19 +0,0 @@ ---- a/plugins/wildmidi/src/wildmidi_lib.c -+++ b/plugins/wildmidi/src/wildmidi_lib.c -@@ -394,11 +394,11 @@ free_gauss (void) { - } - } - --unsigned long int delay_size[4][2]; --signed long int a[5][2]; --signed long int b[5][2]; --signed long int gain_in[4]; --signed long int gain_out[4]; -+static unsigned long int delay_size[4][2]; -+static signed long int a[5][2]; -+static signed long int b[5][2]; -+static signed long int gain_in[4]; -+static signed long int gain_out[4]; - - void init_lowpass (void) { - float c = 0; diff --git a/pkgs/applications/audio/deadbeef/plugins/headerbar-gtk3.nix b/pkgs/applications/audio/deadbeef/plugins/headerbar-gtk3.nix index b26360f0c46..337d570a935 100644 --- a/pkgs/applications/audio/deadbeef/plugins/headerbar-gtk3.nix +++ b/pkgs/applications/audio/deadbeef/plugins/headerbar-gtk3.nix @@ -22,7 +22,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Plug-in that adds GTK 3 header bar to the DeaDBeeF music player"; - homepage = https://github.com/saivert/ddb_misc_headerbar_GTK3; + homepage = "https://github.com/saivert/ddb_misc_headerbar_GTK3"; license = licenses.gpl2Plus; maintainers = [ maintainers.jtojnar ]; platforms = platforms.linux; diff --git a/pkgs/applications/audio/deadbeef/plugins/infobar.nix b/pkgs/applications/audio/deadbeef/plugins/infobar.nix index 8a81101983f..294d3a0ad8b 100644 --- a/pkgs/applications/audio/deadbeef/plugins/infobar.nix +++ b/pkgs/applications/audio/deadbeef/plugins/infobar.nix @@ -26,7 +26,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { broken = true; # crashes DeaDBeeF and is abandoned (https://bitbucket.org/dsimbiriatin/deadbeef-infobar/issues/38/infobar-causes-deadbeef-180-to-crash) description = "DeaDBeeF Infobar Plugin"; - homepage = https://bitbucket.org/dsimbiriatin/deadbeef-infobar; + homepage = "https://bitbucket.org/dsimbiriatin/deadbeef-infobar"; license = licenses.gpl2Plus; maintainers = [ maintainers.jtojnar ]; platforms = platforms.linux; diff --git a/pkgs/applications/audio/deadbeef/plugins/mpris2.nix b/pkgs/applications/audio/deadbeef/plugins/mpris2.nix index 5b27f3c3f32..95606a869b7 100644 --- a/pkgs/applications/audio/deadbeef/plugins/mpris2.nix +++ b/pkgs/applications/audio/deadbeef/plugins/mpris2.nix @@ -15,7 +15,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "MPRISv2 plugin for the DeaDBeeF music player"; - homepage = https://github.com/Serranya/deadbeef-mpris2-plugin/; + homepage = "https://github.com/Serranya/deadbeef-mpris2-plugin/"; license = licenses.gpl2; platforms = platforms.linux; maintainers = [ maintainers.abbradar ]; diff --git a/pkgs/applications/audio/denemo/default.nix b/pkgs/applications/audio/denemo/default.nix index f3adec4fece..1438b066061 100644 --- a/pkgs/applications/audio/denemo/default.nix +++ b/pkgs/applications/audio/denemo/default.nix @@ -33,7 +33,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Music notation and composition software used with lilypond"; - homepage = http://denemo.org; + homepage = "http://denemo.org"; license = licenses.gpl3; platforms = platforms.linux; maintainers = [ maintainers.olynch ]; diff --git a/pkgs/applications/audio/dfasma/default.nix b/pkgs/applications/audio/dfasma/default.nix index 1785ca60060..7965cbd83fd 100644 --- a/pkgs/applications/audio/dfasma/default.nix +++ b/pkgs/applications/audio/dfasma/default.nix @@ -59,7 +59,7 @@ in stdenv.mkDerivation rec { there are basic functionalities to align the signals in time and amplitude, this software does not aim to be an audio editor. ''; - homepage = http://gillesdegottex.github.io/dfasma/; + homepage = "http://gillesdegottex.github.io/dfasma/"; license = [ licenses.gpl3Plus reaperFork.meta.license ]; platforms = platforms.linux; }; diff --git a/pkgs/applications/audio/dirt/default.nix b/pkgs/applications/audio/dirt/default.nix index 1fcdda40896..5e0cf3616fe 100644 --- a/pkgs/applications/audio/dirt/default.nix +++ b/pkgs/applications/audio/dirt/default.nix @@ -21,7 +21,7 @@ stdenv.mkDerivation { meta = with stdenv.lib; { description = "An unimpressive thingie for playing bits of samples with some level of accuracy"; - homepage = https://github.com/tidalcycles/Dirt; + homepage = "https://github.com/tidalcycles/Dirt"; license = licenses.gpl3; maintainers = with maintainers; [ anderspapitto ]; platforms = with platforms; linux; diff --git a/pkgs/applications/audio/distrho/default.nix b/pkgs/applications/audio/distrho/default.nix index 054fc758d64..0f651f47a48 100644 --- a/pkgs/applications/audio/distrho/default.nix +++ b/pkgs/applications/audio/distrho/default.nix @@ -9,13 +9,13 @@ let else "linux"; in stdenv.mkDerivation rec { pname = "distrho-ports"; - version = "2018-04-16"; + version = "unstable-2019-10-09"; src = fetchFromGitHub { owner = "DISTRHO"; repo = "DISTRHO-Ports"; - rev = version; - sha256 = "0l4zwl4mli8jzch32a1fh7c88r9q17xnkxsdw17ds5hadnxlk12v"; + rev = "7e62235e809e59770d0d91d2c48c3f50ce7c027a"; + sha256 = "10hpsjcmk0cgcsic9r1wxyja9x6q9wb8w8254dlrnzyswl54r1f8"; }; configurePhase = '' @@ -26,7 +26,7 @@ in stdenv.mkDerivation rec { runHook postConfigure ''; - patchPhase = '' + postPatch = '' sed -e "s#@./scripts#sh scripts#" -i Makefile ''; @@ -37,10 +37,10 @@ in stdenv.mkDerivation rec { libXinerama libXrender ladspa-sdk ]; - makeFlags = "PREFIX=$(out)"; + makeFlags = [ "PREFIX=$(out)" ]; meta = with stdenv.lib; { - homepage = http://distrho.sourceforge.net; + homepage = "http://distrho.sourceforge.net"; description = "A collection of cross-platform audio effects and plugins"; longDescription = '' Includes: diff --git a/pkgs/applications/audio/dr14_tmeter/default.nix b/pkgs/applications/audio/dr14_tmeter/default.nix index ea0ce8cb5f3..fbf25384eef 100644 --- a/pkgs/applications/audio/dr14_tmeter/default.nix +++ b/pkgs/applications/audio/dr14_tmeter/default.nix @@ -23,7 +23,7 @@ python3Packages.buildPythonApplication rec { meta = with stdenv.lib; { description = "Compute the DR14 of a given audio file according to the procedure described by the Pleasurize Music Foundation"; license = licenses.gpl3Plus; - homepage = http://dr14tmeter.sourceforge.net/; + homepage = "http://dr14tmeter.sourceforge.net/"; maintainers = [ maintainers.adisbladis ]; }; } diff --git a/pkgs/applications/audio/dragonfly-reverb/default.nix b/pkgs/applications/audio/dragonfly-reverb/default.nix index da915f3fc3e..99c07ba8f5f 100644 --- a/pkgs/applications/audio/dragonfly-reverb/default.nix +++ b/pkgs/applications/audio/dragonfly-reverb/default.nix @@ -2,13 +2,13 @@ stdenv.mkDerivation rec { pname = "dragonfly-reverb"; - version = "2.0.0"; + version = "3.0.0"; src = fetchFromGitHub { owner = "michaelwillis"; repo = "dragonfly-reverb"; rev = version; - sha256 = "1qrbv4kk5v6ynx424h1i54qj0w8v6vpw81b759jawxvzzprpgq72"; + sha256 = "1z2x33lzpd26dv1p29ca7vy8mjfzkfpin35iq46spwd9k3sqn1ja"; fetchSubmodules = true; }; @@ -26,7 +26,7 @@ stdenv.mkDerivation rec { mkdir -p $out/lib/lv2/ mkdir -p $out/lib/vst/ cd bin - for bin in DragonflyHallReverb DragonflyRoomReverb; do + for bin in DragonflyEarlyReflections DragonflyPlateReverb DragonflyHallReverb DragonflyRoomReverb; do cp -a $bin $out/bin/ cp -a $bin-vst.so $out/lib/vst/ cp -a $bin.lv2/ $out/lib/lv2/ ; @@ -34,7 +34,7 @@ stdenv.mkDerivation rec { ''; meta = with stdenv.lib; { - homepage = https://github.com/michaelwillis/dragonfly-reverb; + homepage = "https://github.com/michaelwillis/dragonfly-reverb"; description = "A hall-style reverb based on freeverb3 algorithms"; maintainers = [ maintainers.magnetophon ]; license = licenses.gpl3; diff --git a/pkgs/applications/audio/drumgizmo/default.nix b/pkgs/applications/audio/drumgizmo/default.nix index 2581f223c91..454befd55f9 100644 --- a/pkgs/applications/audio/drumgizmo/default.nix +++ b/pkgs/applications/audio/drumgizmo/default.nix @@ -20,7 +20,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "An LV2 sample based drum plugin"; - homepage = https://www.drumgizmo.org; + homepage = "https://www.drumgizmo.org"; license = licenses.lgpl3; platforms = platforms.linux; maintainers = [ maintainers.goibhniu maintainers.nico202 ]; diff --git a/pkgs/applications/audio/drumkv1/default.nix b/pkgs/applications/audio/drumkv1/default.nix index b926ff09d22..ae32a5f41a3 100644 --- a/pkgs/applications/audio/drumkv1/default.nix +++ b/pkgs/applications/audio/drumkv1/default.nix @@ -2,11 +2,11 @@ mkDerivation rec { pname = "drumkv1"; - version = "0.9.11"; + version = "0.9.13"; src = fetchurl { url = "mirror://sourceforge/drumkv1/${pname}-${version}.tar.gz"; - sha256 = "1wnjn175l0mz51k9pjf3pdzv54c4jlh63saavld9lm6zfgfs13d7"; + sha256 = "1h88sakxs0b20k8v2sh14y05fin1zqmhnid6h9mk9c37ixxg58ia"; }; buildInputs = [ libjack2 alsaLib libsndfile liblo lv2 qt5.qtbase qt5.qttools ]; @@ -15,7 +15,7 @@ mkDerivation rec { meta = with lib; { description = "An old-school drum-kit sampler synthesizer with stereo fx"; - homepage = http://drumkv1.sourceforge.net/; + homepage = "http://drumkv1.sourceforge.net/"; license = licenses.gpl2Plus; platforms = platforms.linux; maintainers = [ maintainers.goibhniu ]; diff --git a/pkgs/applications/audio/easytag/default.nix b/pkgs/applications/audio/easytag/default.nix index 4c2b97e727f..3f294342da7 100644 --- a/pkgs/applications/audio/easytag/default.nix +++ b/pkgs/applications/audio/easytag/default.nix @@ -33,7 +33,7 @@ in stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "View and edit tags for various audio files"; - homepage = https://wiki.gnome.org/Apps/EasyTAG; + homepage = "https://wiki.gnome.org/Apps/EasyTAG"; license = licenses.gpl2Plus; maintainers = with maintainers; [ ]; platforms = platforms.linux; diff --git a/pkgs/applications/audio/ecasound/default.nix b/pkgs/applications/audio/ecasound/default.nix index 6c9cd628a51..13c48fc12af 100644 --- a/pkgs/applications/audio/ecasound/default.nix +++ b/pkgs/applications/audio/ecasound/default.nix @@ -15,11 +15,11 @@ stdenv.mkDerivation rec { pname = "ecasound"; - version = "2.9.2"; + version = "2.9.3"; src = fetchurl { url = "https://ecasound.seul.org/download/ecasound-${version}.tar.gz"; - sha256 = "15rcs28fq2wfvfs66p5na7adq88b55qszbhshpizgdbyqzgr2jf1"; + sha256 = "1m7njfjdb7sqf0lhgc4swihgdr4snkg8v02wcly08wb5ar2fr2s6"; }; buildInputs = [ alsaLib audiofile libjack2 liblo liboil libsamplerate libsndfile lilv lv2 ]; @@ -27,6 +27,6 @@ stdenv.mkDerivation rec { meta = { description = "Ecasound is a software package designed for multitrack audio processing"; license = with stdenv.lib.licenses; [ gpl2 lgpl21 ]; - homepage = http://nosignal.fi/ecasound/; + homepage = "http://nosignal.fi/ecasound/"; }; } diff --git a/pkgs/applications/audio/eflite/default.nix b/pkgs/applications/audio/eflite/default.nix index 2338c0ed376..f9a579512ca 100644 --- a/pkgs/applications/audio/eflite/default.nix +++ b/pkgs/applications/audio/eflite/default.nix @@ -36,7 +36,7 @@ stdenv.mkDerivation rec { CFLAGS = stdenv.lib.optionalString debug " -DDEBUG=2"; meta = { - homepage = http://eflite.sourceforge.net; + homepage = "http://eflite.sourceforge.net"; description = "EFlite is a speech server for screen readers"; longDescription = '' EFlite is a speech server for Emacspeak and other screen diff --git a/pkgs/applications/audio/elisa/default.nix b/pkgs/applications/audio/elisa/default.nix deleted file mode 100644 index 37c95430627..00000000000 --- a/pkgs/applications/audio/elisa/default.nix +++ /dev/null @@ -1,37 +0,0 @@ -{ mkDerivation, fetchFromGitHub, lib -, extra-cmake-modules, kdoctools, wrapGAppsHook -, qtmultimedia, qtquickcontrols2, qtwebsockets -, kconfig, kcmutils, kcrash, kdeclarative, kfilemetadata, kinit, kirigami2 -, baloo, vlc -}: - -mkDerivation rec { - pname = "elisa"; - version = "0.4.2"; - - src = fetchFromGitHub { - owner = "KDE"; - repo = "elisa"; - rev = "v${version}"; - sha256 = "0q098zaajwbpkrarrsdzpjhpsq2nxkqaxwzhr2gjlg08j9vqkpfm"; - }; - - buildInputs = [ vlc ]; - - nativeBuildInputs = [ extra-cmake-modules kdoctools wrapGAppsHook ]; - - propagatedBuildInputs = [ - qtmultimedia qtquickcontrols2 qtwebsockets - kconfig kcmutils kcrash kdeclarative kfilemetadata kinit kirigami2 - baloo - ]; - - enableParallelBuilding = true; - - meta = with lib; { - description = "Elisa Music Player"; - license = licenses.gpl3; - maintainers = with maintainers; [ peterhoeg ]; - inherit (kconfig.meta) platforms; - }; -} diff --git a/pkgs/applications/audio/ensemble-chorus/default.nix b/pkgs/applications/audio/ensemble-chorus/default.nix index 5940203d04d..e2413a4fe87 100644 --- a/pkgs/applications/audio/ensemble-chorus/default.nix +++ b/pkgs/applications/audio/ensemble-chorus/default.nix @@ -19,7 +19,7 @@ stdenv.mkDerivation rec { ]; meta = with stdenv.lib; { - homepage = https://github.com/jpcima/ensemble-chorus; + homepage = "https://github.com/jpcima/ensemble-chorus"; description = "Digital model of electronic string ensemble chorus"; maintainers = [ maintainers.magnetophon ]; platforms = platforms.linux; diff --git a/pkgs/applications/audio/eq10q/default.nix b/pkgs/applications/audio/eq10q/default.nix index 0308fad831d..cc3a3c9ac1f 100644 --- a/pkgs/applications/audio/eq10q/default.nix +++ b/pkgs/applications/audio/eq10q/default.nix @@ -14,14 +14,12 @@ stdenv.mkDerivation rec { patches = [ (fetchpatch { # glibc 2.27 compatibility - url = https://sources.debian.org/data/main/e/eq10q/2.2~repack0-2.1/debian/patches/05-pow10.patch; + url = "https://sources.debian.org/data/main/e/eq10q/2.2~repack0-2.1/debian/patches/05-pow10.patch"; sha256 = "07b0wf6k4xqgigv4h095bzfaw8r218wa36r9w1817jcys13r6c5r"; }) ]; - installFlags = '' - DESTDIR=$(out) - ''; + installFlags = [ "DESTDIR=$(out)" ]; fixupPhase = '' cp -r $out/var/empty/local/lib $out @@ -39,7 +37,7 @@ stdenv.mkDerivation rec { 64 bits floating point internal audio processing. Nice GUI with powerful metering for every plugin. ''; - homepage = http://eq10q.sourceforge.net/; + homepage = "http://eq10q.sourceforge.net/"; license = stdenv.lib.licenses.gpl3; maintainers = [ stdenv.lib.maintainers.magnetophon ]; platforms = stdenv.lib.platforms.linux; diff --git a/pkgs/applications/audio/espeak/default.nix b/pkgs/applications/audio/espeak/default.nix index 6b5101b50b5..aa68fd5363d 100644 --- a/pkgs/applications/audio/espeak/default.nix +++ b/pkgs/applications/audio/espeak/default.nix @@ -28,7 +28,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Compact open source software speech synthesizer"; - homepage = http://espeak.sourceforge.net/; + homepage = "http://espeak.sourceforge.net/"; license = licenses.gpl3Plus; platforms = platforms.linux; }; diff --git a/pkgs/applications/audio/espeak/edit.nix b/pkgs/applications/audio/espeak/edit.nix index 8d7db50fd32..6bcffcbc5c3 100644 --- a/pkgs/applications/audio/espeak/edit.nix +++ b/pkgs/applications/audio/espeak/edit.nix @@ -53,7 +53,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Phoneme editor for espeak"; - homepage = http://espeak.sourceforge.net/; + homepage = "http://espeak.sourceforge.net/"; license = licenses.gpl3Plus; platforms = platforms.linux; }; diff --git a/pkgs/applications/audio/eteroj.lv2/default.nix b/pkgs/applications/audio/eteroj.lv2/default.nix index bbfe1ad5623..c86e7b5e9ba 100644 --- a/pkgs/applications/audio/eteroj.lv2/default.nix +++ b/pkgs/applications/audio/eteroj.lv2/default.nix @@ -16,7 +16,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "OSC injection/ejection from/to UDP/TCP/Serial for LV2"; - homepage = https://open-music-kontrollers.ch/lv2/eteroj; + homepage = "https://open-music-kontrollers.ch/lv2/eteroj"; license = licenses.artistic2; maintainers = with maintainers; [ magnetophon ]; }; diff --git a/pkgs/applications/audio/faust/faust1.nix b/pkgs/applications/audio/faust/faust1.nix index 687608b4352..64b8e724431 100644 --- a/pkgs/applications/audio/faust/faust1.nix +++ b/pkgs/applications/audio/faust/faust1.nix @@ -17,8 +17,8 @@ let }; meta = with stdenv.lib; { - homepage = http://faust.grame.fr/; - downloadPage = https://sourceforge.net/projects/faudiostream/files/; + homepage = "http://faust.grame.fr/"; + downloadPage = "https://sourceforge.net/projects/faudiostream/files/"; license = licenses.gpl2; platforms = platforms.linux; maintainers = with maintainers; [ magnetophon pmahoney ]; diff --git a/pkgs/applications/audio/faust/faust2.nix b/pkgs/applications/audio/faust/faust2.nix index 21cd3fbdb25..33df1ce5d4e 100644 --- a/pkgs/applications/audio/faust/faust2.nix +++ b/pkgs/applications/audio/faust/faust2.nix @@ -3,31 +3,36 @@ , fetchFromGitHub , makeWrapper , pkgconfig +, cmake , llvm , emscripten , openssl , libsndfile , libmicrohttpd +, gnutls +, libtasn1 +, p11-kit , vim +, which }: with stdenv.lib.strings; let - version = "2.5.23"; + version = "unstable-2020-03-20"; src = fetchFromGitHub { owner = "grame-cncm"; repo = "faust"; - rev = version; - sha256 = "1pci8ac6sqrm3mb3yikmmr3iy35g3nj4iihazif1amqkbdz719rc"; + rev = "2782088d4485f1c572755f41e7a072b41cb7148a"; + sha256 = "1l7bi2mq10s5wm8g4cdipg8gndd478x897qv0h7nqi1s2q9nq99p"; fetchSubmodules = true; }; meta = with stdenv.lib; { - homepage = http://faust.grame.fr/; - downloadPage = https://sourceforge.net/projects/faudiostream/files/; + homepage = "http://faust.grame.fr/"; + downloadPage = "https://sourceforge.net/projects/faudiostream/files/"; license = licenses.gpl2; platforms = platforms.linux; maintainers = with maintainers; [ magnetophon pmahoney ]; @@ -40,8 +45,8 @@ let inherit src; - nativeBuildInputs = [ makeWrapper pkgconfig vim ]; - buildInputs = [ llvm emscripten openssl libsndfile libmicrohttpd ]; + nativeBuildInputs = [ makeWrapper pkgconfig cmake vim which ]; + buildInputs = [ llvm emscripten openssl libsndfile libmicrohttpd gnutls libtasn1 p11-kit ]; passthru = { @@ -50,39 +55,13 @@ let preConfigure = '' - makeFlags="$makeFlags prefix=$out LLVM_CONFIG='${llvm}/bin/llvm-config' world" - - # The faust makefiles use 'system ?= $(shell uname -s)' but nix - # defines 'system' env var, so undefine that so faust detects the - # correct system. - unset system - # sed -e "232s/LLVM_STATIC_LIBS/LLVMLIBS/" -i compiler/Makefile.unix - - # The makefile sets LLVM_ depending on the current llvm - # version, but the detection code is quite brittle. - # - # Failing to properly detect the llvm version means that the macro - # LLVM_VERSION ends up being the raw output of `llvm-config --version`, while - # the code assumes that it's set to a symbol like `LLVM_35`. Two problems result: - # * :0:1: error: macro names must be identifiers.; and - # * a bunch of undefined reference errors due to conditional definitions relying on - # LLVM_XY being defined. - # - # For now, fix this by 1) pinning the llvm version; 2) manually setting LLVM_VERSION - # to something the makefile will recognize. - sed '52iLLVM_VERSION=${stdenv.lib.getVersion llvm}' -i compiler/Makefile.unix + cd build ''; - postPatch = '' - # fix build with llvm 5.0.2 by adding it to the list of known versions - # TODO: check if still needed on next update - substituteInPlace compiler/Makefile.unix \ - --replace "5.0.0 5.0.1" "5.0.0 5.0.1 5.0.2" + cmakeFlags = '' + -C ../backends/all.cmake -C ../targets/all.cmake .. ''; - # Remove most faust2appl scripts since they won't run properly - # without additional paths setup. See faust.wrap, - # faust.wrapWithBuildEnv. postInstall = '' # syntax error when eval'd directly pattern="faust2!(*@(atomsnippets|graph|graphviewer|md|plot|sig|sigviewer|svg))" @@ -90,10 +69,6 @@ let ''; postFixup = '' - # Set faustpath explicitly. - substituteInPlace "$out"/bin/faustpath \ - --replace "/usr/local /usr /opt /opt/local" "$out" - # The 'faustoptflags' is 'source'd into other faust scripts and # not used as an executable, so patch 'uname' usage directly # rather than use makeWrapper. @@ -160,8 +135,6 @@ let # 'faustoptflags' to absolute paths. for script in "$out"/bin/*; do substituteInPlace "$script" \ - --replace ". faustpath" ". '${faust}/bin/faustpath'" \ - --replace ". faustoptflags" ". '${faust}/bin/faustoptflags'" \ --replace " error " "echo" done ''; @@ -200,19 +173,22 @@ let propagatedBuildInputs = [ faust ] ++ propagatedBuildInputs; + libPath = stdenv.lib.makeLibraryPath propagatedBuildInputs; postFixup = '' # export parts of the build environment for script in "$out"/bin/*; do wrapProgram "$script" \ + --set FAUSTLDDIR "${faust}/lib" \ --set FAUSTLIB "${faust}/share/faust" \ - --set FAUST_LIB_PATH "${faust}/share/faust" \ --set FAUSTINC "${faust}/include/faust" \ + --set FAUSTARCH "${faust}/share/faust" \ --prefix PATH : "$PATH" \ --prefix PKG_CONFIG_PATH : "$PKG_CONFIG_PATH" \ --set NIX_CFLAGS_COMPILE "$NIX_CFLAGS_COMPILE" \ - --set NIX_LDFLAGS "$NIX_LDFLAGS" + --set NIX_LDFLAGS "$NIX_LDFLAGS -lpthread" \ + --prefix LIBRARY_PATH $libPath done ''; }); diff --git a/pkgs/applications/audio/faust/faust2jack.nix b/pkgs/applications/audio/faust/faust2jack.nix index 7762ca39369..f032f435a35 100644 --- a/pkgs/applications/audio/faust/faust2jack.nix +++ b/pkgs/applications/audio/faust/faust2jack.nix @@ -1,6 +1,7 @@ { faust , gtk2 , jack2Full +, alsaLib , opencv , libsndfile }: @@ -18,6 +19,7 @@ faust.wrapWithBuildEnv { propagatedBuildInputs = [ gtk2 jack2Full + alsaLib opencv libsndfile ]; diff --git a/pkgs/applications/audio/faust/faust2jackrust.nix b/pkgs/applications/audio/faust/faust2jackrust.nix new file mode 100644 index 00000000000..2562237424e --- /dev/null +++ b/pkgs/applications/audio/faust/faust2jackrust.nix @@ -0,0 +1,18 @@ +{ stdenv +, faust +, libjack2 +, cargo +, binutils +, gcc +, gnumake +, openssl +, pkgconfig + +}: + +faust.wrapWithBuildEnv { + + baseName = "faust2jackrust"; + + propagatedBuildInputs = [ libjack2 cargo binutils gcc gnumake openssl pkgconfig ]; +} diff --git a/pkgs/applications/audio/faust/faust2jaqt.nix b/pkgs/applications/audio/faust/faust2jaqt.nix index 5a015e5ca31..144d19cb01e 100644 --- a/pkgs/applications/audio/faust/faust2jaqt.nix +++ b/pkgs/applications/audio/faust/faust2jaqt.nix @@ -3,6 +3,7 @@ , opencv , qt4 , libsndfile +, which }: faust.wrapWithBuildEnv { @@ -19,6 +20,7 @@ faust.wrapWithBuildEnv { opencv qt4 libsndfile + which ]; } diff --git a/pkgs/applications/audio/faust/faust2lv2.nix b/pkgs/applications/audio/faust/faust2lv2.nix index 3472ce5047e..51d956b1403 100644 --- a/pkgs/applications/audio/faust/faust2lv2.nix +++ b/pkgs/applications/audio/faust/faust2lv2.nix @@ -2,6 +2,7 @@ , faust , lv2 , qt4 +, which }: @@ -9,6 +10,6 @@ faust.wrapWithBuildEnv { baseName = "faust2lv2"; - propagatedBuildInputs = [ boost lv2 qt4 ]; + propagatedBuildInputs = [ boost lv2 qt4 which ]; } diff --git a/pkgs/applications/audio/faust/faustlive.nix b/pkgs/applications/audio/faust/faustlive.nix index 3b6ca9e4053..90bd8bc60ad 100644 --- a/pkgs/applications/audio/faust/faustlive.nix +++ b/pkgs/applications/audio/faust/faustlive.nix @@ -29,7 +29,7 @@ stdenv.mkDerivation { together the convenience of a standalone interpreted language with the efficiency of a compiled language. It's ideal for fast prototyping. ''; - homepage = http://faust.grame.fr/; + homepage = "http://faust.grame.fr/"; license = licenses.gpl3; }; } diff --git a/pkgs/applications/audio/flac/default.nix b/pkgs/applications/audio/flac/default.nix index df3aa987c3f..bd8b9bea82b 100644 --- a/pkgs/applications/audio/flac/default.nix +++ b/pkgs/applications/audio/flac/default.nix @@ -15,7 +15,7 @@ stdenv.mkDerivation rec { outputs = [ "bin" "dev" "out" "man" "doc" ]; meta = with stdenv.lib; { - homepage = https://xiph.org/flac/; + homepage = "https://xiph.org/flac/"; description = "Library and tools for encoding and decoding the FLAC lossless audio file format"; platforms = platforms.all; license = licenses.bsd3; diff --git a/pkgs/applications/audio/flac123/default.nix b/pkgs/applications/audio/flac123/default.nix index 19ed2352355..6f13b710eff 100644 --- a/pkgs/applications/audio/flac123/default.nix +++ b/pkgs/applications/audio/flac123/default.nix @@ -13,7 +13,7 @@ stdenv.mkDerivation rec { buildInputs = [ flac libao libogg popt ]; meta = with stdenv.lib; { - homepage = http://flac-tools.sourceforge.net/; + homepage = "http://flac-tools.sourceforge.net/"; description = "A command-line program for playing FLAC audio files"; license = licenses.gpl2Plus; platforms = platforms.all; diff --git a/pkgs/applications/audio/flacon/default.nix b/pkgs/applications/audio/flacon/default.nix index 9dd5da4c1a9..1da40e75415 100644 --- a/pkgs/applications/audio/flacon/default.nix +++ b/pkgs/applications/audio/flacon/default.nix @@ -1,6 +1,7 @@ -{ stdenv, lib, fetchFromGitHub, cmake, qt5, libuchardet, pkgconfig, makeWrapper +{ stdenv, lib, fetchFromGitHub, cmake, libuchardet, pkgconfig , shntool, flac, opusTools, vorbis-tools, mp3gain, lame, wavpack, vorbisgain , gtk3 +, qtbase, qttools, wrapQtAppsHook }: stdenv.mkDerivation rec { @@ -14,8 +15,8 @@ stdenv.mkDerivation rec { sha256 = "05pvg5xhc2azwzld08m81r4b2krqdbcbm5lmdvg2zkk67xq9pqyd"; }; - nativeBuildInputs = [ cmake pkgconfig makeWrapper ]; - buildInputs = [ qt5.qtbase qt5.qttools libuchardet ]; + nativeBuildInputs = [ cmake pkgconfig wrapQtAppsHook ]; + buildInputs = [ qtbase qttools libuchardet ]; postInstall = '' wrapProgram $out/bin/flacon \ @@ -26,9 +27,9 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Extracts audio tracks from an audio CD image to separate tracks."; - homepage = https://flacon.github.io/; + homepage = "https://flacon.github.io/"; license = licenses.lgpl21; platforms = platforms.linux; - maintainers = with maintainers; [ ndowens nico202 ]; + maintainers = with maintainers; [ snglth ]; }; } diff --git a/pkgs/applications/audio/fluidsynth/default.nix b/pkgs/applications/audio/fluidsynth/default.nix index 8e2895bf847..9d9772cde29 100644 --- a/pkgs/applications/audio/fluidsynth/default.nix +++ b/pkgs/applications/audio/fluidsynth/default.nix @@ -40,7 +40,7 @@ stdenv.mkDerivation { meta = with lib; { description = "Real-time software synthesizer based on the SoundFont 2 specifications"; - homepage = http://www.fluidsynth.org; + homepage = "http://www.fluidsynth.org"; license = licenses.lgpl21Plus; maintainers = with maintainers; [ goibhniu lovek323 ]; platforms = platforms.unix; diff --git a/pkgs/applications/audio/fmit/default.nix b/pkgs/applications/audio/fmit/default.nix index ee45217e490..114cf5e192f 100644 --- a/pkgs/applications/audio/fmit/default.nix +++ b/pkgs/applications/audio/fmit/default.nix @@ -46,7 +46,7 @@ mkDerivation rec { FMIT is a graphical utility for tuning musical instruments, with error and volume history, and advanced features. ''; - homepage = http://gillesdegottex.github.io/fmit/; + homepage = "http://gillesdegottex.github.io/fmit/"; license = licenses.gpl3Plus; platforms = platforms.linux; }; diff --git a/pkgs/applications/audio/fmsynth/default.nix b/pkgs/applications/audio/fmsynth/default.nix index 248967e06e6..d957c7ec33d 100644 --- a/pkgs/applications/audio/fmsynth/default.nix +++ b/pkgs/applications/audio/fmsynth/default.nix @@ -41,7 +41,7 @@ stdenv.mkDerivation { - Full floating point implementation optimized for SIMD - Hard real-time constraints ''; - homepage = https://github.com/Themaister/libfmsynth; + homepage = "https://github.com/Themaister/libfmsynth"; license = stdenv.lib.licenses.mit; maintainers = [ stdenv.lib.maintainers.magnetophon ]; platforms = stdenv.lib.platforms.linux; diff --git a/pkgs/applications/audio/fomp/default.nix b/pkgs/applications/audio/fomp/default.nix index a92d331baad..a712eef0650 100644 --- a/pkgs/applications/audio/fomp/default.nix +++ b/pkgs/applications/audio/fomp/default.nix @@ -2,18 +2,18 @@ stdenv.mkDerivation rec { pname = "fomp"; - version = "1.0.0"; + version = "1.2.0"; src = fetchurl { url = "https://download.drobilla.net/${pname}-${version}.tar.bz2"; - sha256 = "1hh2xhknanqn3iwp12ihl6bf8p7bqxryms9qk7mh21lixl42b8k5"; + sha256 = "01ld6yjrqrki6zwac8lmwmqkr5rv0sdham4pfbfkjwck4hi1gqqw"; }; nativeBuildInputs = [ pkgconfig wafHook ]; buildInputs = [ lv2 python2 ]; meta = with stdenv.lib; { - homepage = http://drobilla.net/software/fomp/; + homepage = "http://drobilla.net/software/fomp/"; description = "An LV2 port of the MCP, VCO, FIL, and WAH plugins by Fons Adriaensen"; license = licenses.gpl2; maintainers = [ maintainers.magnetophon ]; diff --git a/pkgs/applications/audio/foo-yc20/default.nix b/pkgs/applications/audio/foo-yc20/default.nix index b17561e1567..643b648fa88 100644 --- a/pkgs/applications/audio/foo-yc20/default.nix +++ b/pkgs/applications/audio/foo-yc20/default.nix @@ -13,7 +13,7 @@ stdenv.mkDerivation { nativeBuildInputs = [ pkgconfig ]; buildInputs = [ libjack2 gtk2 lv2 faust ]; - makeFlags = "PREFIX=$(out)"; + makeFlags = [ "PREFIX=$(out)" ]; # remove lv2 until https://github.com/sampov2/foo-yc20/issues/6 is resolved postInstallFixup = "rm -rf $out/lib/lv2"; @@ -21,7 +21,7 @@ stdenv.mkDerivation { meta = { broken = true; # see: https://github.com/sampov2/foo-yc20/issues/7 description = "A Faust implementation of a 1969 designed Yamaha combo organ, the YC-20"; - homepage = https://github.com/sampov2/foo-yc20; + homepage = "https://github.com/sampov2/foo-yc20"; license = "BSD"; maintainers = [ stdenv.lib.maintainers.magnetophon ]; platforms = stdenv.lib.platforms.linux; diff --git a/pkgs/applications/audio/freewheeling/default.nix b/pkgs/applications/audio/freewheeling/default.nix index a2588093309..6ee120f3d1a 100644 --- a/pkgs/applications/audio/freewheeling/default.nix +++ b/pkgs/applications/audio/freewheeling/default.nix @@ -25,7 +25,8 @@ stdenv.mkDerivation rec { configureFlags = oldAttrs.configureFlags ++ [ "--enable-openssl-compatibility" ]; })) ]; - NIX_CFLAGS_COMPILE = makeSDLFlags [ SDL SDL_ttf SDL_gfx ] ++ [ "-I${libxml2.dev}/include/libxml2" ]; + NIX_CFLAGS_COMPILE = toString + (makeSDLFlags [ SDL SDL_ttf SDL_gfx ] ++ [ "-I${libxml2.dev}/include/libxml2" ]); hardeningDisable = [ "format" ]; @@ -43,7 +44,7 @@ stdenv.mkDerivation rec { software, released under the GNU GPL license. '' ; - homepage = http://freewheeling.sourceforge.net; + homepage = "http://freewheeling.sourceforge.net"; license = stdenv.lib.licenses.gpl2; maintainers = [ stdenv.lib.maintainers.sepi ]; platforms = stdenv.lib.platforms.linux; diff --git a/pkgs/applications/audio/ft2-clone/default.nix b/pkgs/applications/audio/ft2-clone/default.nix new file mode 100644 index 00000000000..e80239553f1 --- /dev/null +++ b/pkgs/applications/audio/ft2-clone/default.nix @@ -0,0 +1,30 @@ +{ stdenv +, fetchFromGitHub +, cmake +, alsaLib +, SDL2 +}: + +stdenv.mkDerivation rec { + pname = "ft2-clone"; + version = "1.15"; + + src = fetchFromGitHub { + owner = "8bitbubsy"; + repo = "ft2-clone"; + rev = "v${version}"; + sha256 = "19xgdaij71gpvq216zjlp60zmfdl2a8kf8sc3bpk8a4d4xh4n151"; + }; + + nativeBuildInputs = [ cmake ]; + buildInputs = [ SDL2 ] ++ stdenv.lib.optional stdenv.isLinux alsaLib; + + meta = with stdenv.lib; { + description = "A highly accurate clone of the classic Fasttracker II software for MS-DOS"; + homepage = "https://16-bits.org/ft2.php"; + license = licenses.bsd3; + maintainers = with maintainers; [ fgaz ]; + platforms = platforms.all; + }; +} + diff --git a/pkgs/applications/audio/game-music-emu/default.nix b/pkgs/applications/audio/game-music-emu/default.nix index d95b3eea596..51f895ea2d5 100644 --- a/pkgs/applications/audio/game-music-emu/default.nix +++ b/pkgs/applications/audio/game-music-emu/default.nix @@ -12,7 +12,7 @@ stdenv.mkDerivation rec { buildInputs = [ cmake ]; meta = with stdenv.lib; { - homepage = https://bitbucket.org/mpyne/game-music-emu/wiki/Home; + homepage = "https://bitbucket.org/mpyne/game-music-emu/wiki/Home"; description = "A collection of video game music file emulators"; license = licenses.lgpl21Plus; platforms = platforms.all; diff --git a/pkgs/applications/audio/giada/default.nix b/pkgs/applications/audio/giada/default.nix index 8907011c16f..eff1d6411a1 100644 --- a/pkgs/applications/audio/giada/default.nix +++ b/pkgs/applications/audio/giada/default.nix @@ -5,13 +5,13 @@ stdenv.mkDerivation rec { pname = "giada"; - version = "0.16.0"; + version = "0.16.1"; src = fetchFromGitHub { owner = "monocasual"; repo = pname; rev = "v${version}"; - sha256 = "1lbxqa4kwzjdd79whrjgh8li453z4ckkjx4s4qzmrv7aqa2xmfsf"; + sha256 = "0b3lhjs6myml5r5saky15523sbc3qr43r9rh047vhsiafmqdvfq1"; }; configureFlags = [ "--target=linux" ]; diff --git a/pkgs/applications/audio/gigedit/default.nix b/pkgs/applications/audio/gigedit/default.nix index b8ec2d7116f..08eec313508 100644 --- a/pkgs/applications/audio/gigedit/default.nix +++ b/pkgs/applications/audio/gigedit/default.nix @@ -20,7 +20,7 @@ stdenv.mkDerivation rec { enableParallelBuilding = true; meta = with stdenv.lib; { - homepage = http://www.linuxsampler.org; + homepage = "http://www.linuxsampler.org"; description = "Gigasampler file access library"; license = licenses.gpl2; maintainers = [ maintainers.goibhniu ]; diff --git a/pkgs/applications/audio/gjay/default.nix b/pkgs/applications/audio/gjay/default.nix index 42285ba4bf8..9e016c68608 100644 --- a/pkgs/applications/audio/gjay/default.nix +++ b/pkgs/applications/audio/gjay/default.nix @@ -17,7 +17,7 @@ stdenv.mkDerivation { meta = with stdenv.lib; { description = "Generates playlists such that each song sounds good following the previous song"; - homepage = http://gjay.sourceforge.net/; + homepage = "http://gjay.sourceforge.net/"; license = licenses.gpl2; maintainers = with maintainers; [ pSub ]; platforms = with platforms; linux; diff --git a/pkgs/applications/audio/gmpc/default.nix b/pkgs/applications/audio/gmpc/default.nix index cae35b62519..7ae02ae38d8 100644 --- a/pkgs/applications/audio/gmpc/default.nix +++ b/pkgs/applications/audio/gmpc/default.nix @@ -10,7 +10,7 @@ stdenv.mkDerivation rec { libmpd = stdenv.mkDerivation { name = "libmpd-11.8.17"; src = fetchurl { - url = http://download.sarine.nl/Programs/gmpc/11.8/libmpd-11.8.17.tar.gz; + url = "http://download.sarine.nl/Programs/gmpc/11.8/libmpd-11.8.17.tar.gz"; sha256 = "10vspwsgr8pwf3qp2bviw6b2l8prgdiswgv7qiqiyr0h1mmk487y"; }; patches = [ ./libmpd-11.8.17-remove-strndup.patch ]; @@ -31,7 +31,7 @@ stdenv.mkDerivation rec { ]; meta = with stdenv.lib; { - homepage = https://gmpclient.org; + homepage = "https://gmpclient.org"; description = "A GTK2 frontend for Music Player Daemon"; license = licenses.gpl2; maintainers = []; diff --git a/pkgs/applications/audio/gmu/default.nix b/pkgs/applications/audio/gmu/default.nix index 8446855d190..bfe9f72d664 100644 --- a/pkgs/applications/audio/gmu/default.nix +++ b/pkgs/applications/audio/gmu/default.nix @@ -24,7 +24,7 @@ stdenv.mkDerivation rec { ''; meta = { - homepage = http://wejp.k.vu/projects/gmu; + homepage = "http://wejp.k.vu/projects/gmu"; description = "Open source music player for portable gaming consoles and handhelds"; license = stdenv.lib.licenses.gpl2; }; diff --git a/pkgs/applications/audio/gnaural/default.nix b/pkgs/applications/audio/gnaural/default.nix deleted file mode 100644 index f5887e870db..00000000000 --- a/pkgs/applications/audio/gnaural/default.nix +++ /dev/null @@ -1,19 +0,0 @@ -{ stdenv, fetchurl, pkgconfig, gtk2, libsndfile, portaudio }: - -stdenv.mkDerivation rec { - name = "gnaural-1.0.20110606"; - nativeBuildInputs = [ pkgconfig ]; - buildInputs = [ gtk2 libsndfile portaudio ]; - src = fetchurl { - url = "mirror://sourceforge/gnaural/Gnaural/${name}.tar.gz"; - sha256 = "0p9rasz1jmxf16vnpj17g3vzdjygcyz3l6nmbq6wr402l61f1vy5"; - }; - meta = with stdenv.lib; - { description = "Auditory binaural-beat generator"; - homepage = http://gnaural.sourceforge.net/; - license = licenses.gpl2; - maintainers = [ maintainers.ehmry ]; - platforms = platforms.linux; - broken = true; - }; -} diff --git a/pkgs/applications/audio/gnome-podcasts/default.nix b/pkgs/applications/audio/gnome-podcasts/default.nix index 7a44ebe6769..d5bec0c09e5 100644 --- a/pkgs/applications/audio/gnome-podcasts/default.nix +++ b/pkgs/applications/audio/gnome-podcasts/default.nix @@ -9,7 +9,6 @@ , rustc , python3 , pkgconfig -, gnome3 , glib , libhandy , gtk3 @@ -32,7 +31,7 @@ rustPlatform.buildRustPackage rec { sha256 = "0vy5i77bv8c22ldhrnr4z6kx22zqnb1lg3s7y8673bqjgd7dppi0"; }; - cargoSha256 = "1h0n8zclb8a1b1ri83viiwwzlj3anm38m4cp38aqyf6q40qga35q"; + cargoSha256 = "1dlbdxsf9p2jzrsclm43k95y8m3zcd41qd9ajg1ii3fpnahi58kd"; nativeBuildInputs = [ meson @@ -43,6 +42,7 @@ rustPlatform.buildRustPackage rec { rustc python3 wrapGAppsHook + glib ]; buildInputs = [ @@ -73,9 +73,9 @@ rustPlatform.buildRustPackage rec { meta = with stdenv.lib; { description = "Listen to your favorite podcasts"; - homepage = https://wiki.gnome.org/Apps/Podcasts; + homepage = "https://wiki.gnome.org/Apps/Podcasts"; license = licenses.gpl3; - maintainers = gnome3.maintainers; + maintainers = teams.gnome.members; platforms = platforms.unix; }; } diff --git a/pkgs/applications/audio/google-play-music-desktop-player/default.nix b/pkgs/applications/audio/google-play-music-desktop-player/default.nix index b51b72f1c8a..509d3ddcf75 100644 --- a/pkgs/applications/audio/google-play-music-desktop-player/default.nix +++ b/pkgs/applications/audio/google-play-music-desktop-player/default.nix @@ -1,14 +1,15 @@ -{ stdenv, alsaLib, atk, cairo, cups, dbus, dpkg, expat, fontconfig, freetype +{ stdenv, alsaLib, atk, at-spi2-atk, cairo, cups, dbus, dpkg, expat, fontconfig, freetype , fetchurl, GConf, gdk-pixbuf, glib, gtk2, gtk3, libpulseaudio, makeWrapper, nspr , nss, pango, udev, xorg }: let - version = "4.6.1"; + version = "4.7.1"; deps = [ alsaLib atk + at-spi2-atk cairo cups dbus @@ -48,7 +49,7 @@ stdenv.mkDerivation { src = fetchurl { url = "https://github.com/MarshallOfSound/Google-Play-Music-Desktop-Player-UNOFFICIAL-/releases/download/v${version}/google-play-music-desktop-player_${version}_amd64.deb"; - sha256 = "0dyn2fxhcri9d9nmcprszs6yg79gsr09bjfzzb1p10yjmi77cj2g"; + sha256 = "1ljm9c5sv6wa7pa483yq03wq9j1h1jdh8363z5m2imz407yzgm5r"; }; dontBuild = true; @@ -72,7 +73,7 @@ stdenv.mkDerivation { ''; meta = { - homepage = https://www.googleplaymusicdesktopplayer.com/; + homepage = "https://www.googleplaymusicdesktopplayer.com/"; description = "A beautiful cross platform Desktop Player for Google Play Music"; license = stdenv.lib.licenses.mit; platforms = [ "x86_64-linux" ]; diff --git a/pkgs/applications/audio/gpodder/default.nix b/pkgs/applications/audio/gpodder/default.nix index b972aae7de8..1905699e516 100644 --- a/pkgs/applications/audio/gpodder/default.nix +++ b/pkgs/applications/audio/gpodder/default.nix @@ -5,14 +5,14 @@ python3Packages.buildPythonApplication rec { pname = "gpodder"; - version = "3.10.11"; + version = "3.10.13"; format = "other"; src = fetchFromGitHub { owner = pname; repo = pname; rev = version; - sha256 = "15f5z3cnch9lpzbz73l4wjykv9n74y8djz5db53la2ql4ihaxfz9"; + sha256 = "1h542syaxsx1hslfzlk3fx1nbp190zjw35kigw7a1kx1jwvfwapg"; }; patches = [ @@ -73,7 +73,7 @@ python3Packages.buildPythonApplication rec { gPodder downloads and manages free audio and video content (podcasts) for you. Listen directly on your computer or on your mobile devices. ''; - homepage = http://gpodder.org/; + homepage = "http://gpodder.org/"; license = licenses.gpl3; platforms = platforms.linux ++ platforms.darwin; maintainers = with maintainers; [ skeidel mic92 ]; diff --git a/pkgs/applications/audio/gradio/default.nix b/pkgs/applications/audio/gradio/default.nix index 487b0a730d8..384235fc065 100644 --- a/pkgs/applications/audio/gradio/default.nix +++ b/pkgs/applications/audio/gradio/default.nix @@ -63,7 +63,7 @@ in stdenv.mkDerivation { patches = [ ./0001-Remove-post-install-script-that-hardcodes-paths.patch ]; meta = with stdenv.lib; { - homepage = https://github.com/haecker-felix/gradio; + homepage = "https://github.com/haecker-felix/gradio"; description = "A GTK3 app for finding and listening to internet radio stations"; license = licenses.gpl3; platforms = platforms.linux; diff --git a/pkgs/applications/audio/grandorgue/default.nix b/pkgs/applications/audio/grandorgue/default.nix new file mode 100644 index 00000000000..e2ba4ee2244 --- /dev/null +++ b/pkgs/applications/audio/grandorgue/default.nix @@ -0,0 +1,32 @@ +{ lib, stdenv, fetchsvn, cmake, pkg-config, gcc, pkgconfig, fftwFloat, alsaLib +, zlib, wavpack, wxGTK31, udev, jackaudioSupport ? false, libjack2 +, includeDemo ? true }: + +stdenv.mkDerivation rec { + pname = "grandorgue"; + rev = "2333"; + version = "0.3.1-r${rev}"; + src = fetchsvn { + url = "https://svn.code.sf.net/p/ourorgan/svn/trunk"; + inherit rev; + sha256 = "0xzjdc2g4gja2lpmn21xhdskv43qpbpzkbb05jfqv6ma2zwffzz1"; + }; + + nativeBuildInputs = [ cmake pkg-config ]; + + buildInputs = [ pkgconfig fftwFloat alsaLib zlib wavpack wxGTK31 udev ] + ++ lib.optional jackaudioSupport libjack2; + + cmakeFlags = lib.optional (!jackaudioSupport) [ + "-DRTAUDIO_USE_JACK=OFF" + "-DRTMIDI_USE_JACK=OFF" + ] ++ lib.optional (!includeDemo) "-DINSTALL_DEMO=OFF"; + + meta = { + description = "Virtual Pipe Organ Software"; + homepage = "https://sourceforge.net/projects/ourorgan"; + license = stdenv.lib.licenses.gpl2; + platforms = stdenv.lib.platforms.linux; + maintainers = [ stdenv.lib.maintainers.puzzlewolf ]; + }; +} diff --git a/pkgs/applications/audio/gtklick/default.nix b/pkgs/applications/audio/gtklick/default.nix index b653ae5ca58..a81834c1fff 100644 --- a/pkgs/applications/audio/gtklick/default.nix +++ b/pkgs/applications/audio/gtklick/default.nix @@ -27,7 +27,7 @@ pythonPackages.buildPythonApplication rec { ''; meta = { - homepage = http://das.nasophon.de/gtklick/; + homepage = "http://das.nasophon.de/gtklick/"; description = "Simple metronome with an easy-to-use GTK interface"; license = stdenv.lib.licenses.gpl2Plus; }; diff --git a/pkgs/applications/audio/gtkpod/default.nix b/pkgs/applications/audio/gtkpod/default.nix index fd3632ee155..1f293fe2d79 100644 --- a/pkgs/applications/audio/gtkpod/default.nix +++ b/pkgs/applications/audio/gtkpod/default.nix @@ -26,7 +26,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "GTK Manager for an Apple ipod"; - homepage = http://gtkpod.sourceforge.net; + homepage = "http://gtkpod.sourceforge.net"; license = licenses.gpl2Plus; platforms = platforms.linux; maintainers = [ maintainers.skeidel ]; diff --git a/pkgs/applications/audio/guitarix/default.nix b/pkgs/applications/audio/guitarix/default.nix index 91f4b1dcdfe..095cd79b56e 100644 --- a/pkgs/applications/audio/guitarix/default.nix +++ b/pkgs/applications/audio/guitarix/default.nix @@ -1,7 +1,7 @@ { stdenv, fetchurl, gettext, intltool, pkgconfig, python2 , avahi, bluez, boost, eigen, fftw, glib, glib-networking , glibmm, gsettings-desktop-schemas, gtkmm2, libjack2 -, ladspaH, libav, librdf, libsndfile, lilv, lv2, serd, sord, sratom +, ladspaH, libav, libsndfile, lilv, lrdf, lv2, serd, sord, sratom , wrapGAppsHook, zita-convolver, zita-resampler, curl, wafHook , optimizationSupport ? false # Enable support for native CPU extensions }: @@ -12,19 +12,19 @@ in stdenv.mkDerivation rec { pname = "guitarix"; - version = "0.38.1"; + version = "0.39.0"; src = fetchurl { url = "mirror://sourceforge/guitarix/guitarix2-${version}.tar.xz"; - sha256 = "0bw7xnrx062nwb1bfj9x660h7069ncmz77szcs8icpqxrvhs7z80"; + sha256 = "1nn80m1qagfhvv69za60f0w6ck87vmk77qmqarj7fbr8avwg63s9"; }; nativeBuildInputs = [ gettext intltool wrapGAppsHook pkgconfig python2 wafHook ]; buildInputs = [ avahi bluez boost eigen fftw glib glibmm glib-networking.out - gsettings-desktop-schemas gtkmm2 libjack2 ladspaH libav librdf - libsndfile lilv lv2 serd sord sratom zita-convolver + gsettings-desktop-schemas gtkmm2 libjack2 ladspaH libav + libsndfile lilv lrdf lv2 serd sord sratom zita-convolver zita-resampler curl ]; @@ -62,7 +62,7 @@ stdenv.mkDerivation rec { clean-sounds, nice overdrive, fat distortion and a diversity of crazy sounds never heard before. ''; - homepage = http://guitarix.sourceforge.net/; + homepage = "http://guitarix.sourceforge.net/"; license = licenses.gpl3Plus; maintainers = with maintainers; [ astsmtl goibhniu ]; platforms = platforms.linux; diff --git a/pkgs/applications/audio/gxmatcheq-lv2/default.nix b/pkgs/applications/audio/gxmatcheq-lv2/default.nix index 1d5579d74c0..b2d99e0eba8 100644 --- a/pkgs/applications/audio/gxmatcheq-lv2/default.nix +++ b/pkgs/applications/audio/gxmatcheq-lv2/default.nix @@ -22,7 +22,7 @@ stdenv.mkDerivation rec { installFlags = [ "INSTALL_DIR=$(out)/lib/lv2" ]; meta = with stdenv.lib; { - homepage = https://github.com/brummer10/GxMatchEQ.lv2; + homepage = "https://github.com/brummer10/GxMatchEQ.lv2"; description = "Matching Equalizer to apply EQ curve from one source to another source"; maintainers = [ maintainers.magnetophon ]; license = licenses.gpl3; diff --git a/pkgs/applications/audio/gxplugins-lv2/default.nix b/pkgs/applications/audio/gxplugins-lv2/default.nix index 1f4323eb9d5..077bb407020 100644 --- a/pkgs/applications/audio/gxplugins-lv2/default.nix +++ b/pkgs/applications/audio/gxplugins-lv2/default.nix @@ -26,7 +26,7 @@ stdenv.mkDerivation rec { ''; meta = with stdenv.lib; { - homepage = https://github.com/brummer10/GxPlugins.lv2; + homepage = "https://github.com/brummer10/GxPlugins.lv2"; description = "A set of extra lv2 plugins from the guitarix project"; maintainers = [ maintainers.magnetophon ]; license = licenses.gpl3; diff --git a/pkgs/applications/audio/helio-workstation/default.nix b/pkgs/applications/audio/helio-workstation/default.nix index bfd211316a7..3ada3224e33 100644 --- a/pkgs/applications/audio/helio-workstation/default.nix +++ b/pkgs/applications/audio/helio-workstation/default.nix @@ -38,7 +38,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "One music sequencer for all major platforms, both desktop and mobile"; - homepage = https://helio.fm/; + homepage = "https://helio.fm/"; license = licenses.gpl3; maintainers = [ maintainers.suhr ]; platforms = [ "x86_64-linux" ]; diff --git a/pkgs/applications/audio/helm/default.nix b/pkgs/applications/audio/helm/default.nix index 428490e119a..8459967a363 100644 --- a/pkgs/applications/audio/helm/default.nix +++ b/pkgs/applications/audio/helm/default.nix @@ -34,7 +34,7 @@ ''; meta = with stdenv.lib; { - homepage = http://tytel.org/helm; + homepage = "http://tytel.org/helm"; description = "A free, cross-platform, polyphonic synthesizer"; longDescription = '' A free, cross-platform, polyphonic synthesizer. diff --git a/pkgs/applications/audio/hybridreverb2/default.nix b/pkgs/applications/audio/hybridreverb2/default.nix index 19aac1bd1e9..3f1fac79623 100644 --- a/pkgs/applications/audio/hybridreverb2/default.nix +++ b/pkgs/applications/audio/hybridreverb2/default.nix @@ -40,7 +40,7 @@ stdenv.mkDerivation rec { ''; meta = with stdenv.lib; { - homepage = http://www2.ika.ruhr-uni-bochum.de/HybridReverb2; + homepage = "http://www2.ika.ruhr-uni-bochum.de/HybridReverb2"; description = "Reverb effect using hybrid impulse convolution"; license = licenses.gpl2Plus; maintainers = [ maintainers.magnetophon ]; diff --git a/pkgs/applications/audio/hydrogen/default.nix b/pkgs/applications/audio/hydrogen/default.nix index 50093f8a61d..b3aff4e4c50 100644 --- a/pkgs/applications/audio/hydrogen/default.nix +++ b/pkgs/applications/audio/hydrogen/default.nix @@ -1,5 +1,6 @@ -{ stdenv, fetchurl, alsaLib, boost, cmake, glib, lash, libjack2, libarchive -, liblrdf, libsndfile, pkgconfig, qt4 }: +{ stdenv, fetchurl, pkgconfig, cmake +, alsaLib, boost, glib, lash, libjack2, libarchive, libsndfile, lrdf, qt4 +}: stdenv.mkDerivation rec { version = "0.9.7"; @@ -10,14 +11,14 @@ stdenv.mkDerivation rec { sha256 = "1dy2jfkdw0nchars4xi4isrz66fqn53a9qk13bqza7lhmsg3s3qy"; }; - nativeBuildInputs = [ pkgconfig ]; + nativeBuildInputs = [ pkgconfig cmake ]; buildInputs = [ - alsaLib boost cmake glib lash libjack2 libarchive liblrdf libsndfile qt4 + alsaLib boost glib lash libjack2 libarchive libsndfile lrdf qt4 ]; meta = with stdenv.lib; { description = "Advanced drum machine"; - homepage = http://www.hydrogen-music.org; + homepage = "http://www.hydrogen-music.org"; license = licenses.gpl2; platforms = platforms.linux; maintainers = [ maintainers.goibhniu ]; diff --git a/pkgs/applications/audio/i-score/default.nix b/pkgs/applications/audio/i-score/default.nix index f3928499413..daedb9b9820 100644 --- a/pkgs/applications/audio/i-score/default.nix +++ b/pkgs/applications/audio/i-score/default.nix @@ -77,7 +77,7 @@ stdenv.mkDerivation rec { meta = { description = "An interactive sequencer for the intermedia arts"; - homepage = http://i-score.org/; + homepage = "http://i-score.org/"; license = stdenv.lib.licenses.cecill20; maintainers = [ stdenv.lib.maintainers.magnetophon ]; platforms = stdenv.lib.platforms.linux; diff --git a/pkgs/applications/audio/iannix/default.nix b/pkgs/applications/audio/iannix/default.nix index a893390d74e..2d4a2e9265a 100644 --- a/pkgs/applications/audio/iannix/default.nix +++ b/pkgs/applications/audio/iannix/default.nix @@ -22,7 +22,7 @@ stdenv.mkDerivation { meta = { description = "Graphical open-source sequencer,"; - homepage = https://www.iannix.org/; + homepage = "https://www.iannix.org/"; license = stdenv.lib.licenses.lgpl3; platforms = stdenv.lib.platforms.linux; maintainers = [ stdenv.lib.maintainers.nico202 ]; diff --git a/pkgs/applications/audio/id3v2/default.nix b/pkgs/applications/audio/id3v2/default.nix index 0fdb3b2a4a1..75d999ede1d 100644 --- a/pkgs/applications/audio/id3v2/default.nix +++ b/pkgs/applications/audio/id3v2/default.nix @@ -21,7 +21,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "A command line editor for id3v2 tags"; - homepage = http://id3v2.sourceforge.net/; + homepage = "http://id3v2.sourceforge.net/"; license = licenses.gpl2Plus; platforms = with platforms; unix; }; diff --git a/pkgs/applications/audio/infamousPlugins/default.nix b/pkgs/applications/audio/infamousPlugins/default.nix index 341c4181842..2cfe77ec291 100644 --- a/pkgs/applications/audio/infamousPlugins/default.nix +++ b/pkgs/applications/audio/infamousPlugins/default.nix @@ -15,7 +15,7 @@ stdenv.mkDerivation rec { buildInputs = [ cairomm lv2 libpthreadstubs libXdmcp libXft ntk pcre fftwFloat zita-resampler ]; meta = with stdenv.lib; { - homepage = https://ssj71.github.io/infamousPlugins; + homepage = "https://ssj71.github.io/infamousPlugins"; description = "A collection of open-source LV2 plugins"; longDescription = '' These are audio plugins in the LV2 format, developed for linux. Most are suitable for live use. diff --git a/pkgs/applications/audio/ingen/default.nix b/pkgs/applications/audio/ingen/default.nix index 1e249b51fb7..c5d4b3f87f4 100644 --- a/pkgs/applications/audio/ingen/default.nix +++ b/pkgs/applications/audio/ingen/default.nix @@ -1,23 +1,24 @@ { stdenv, fetchgit, boost, ganv, glibmm, gtkmm2, libjack2, lilv -, lv2Unstable, makeWrapper, pkgconfig, python, raul, rdflib, serd, sord, sratom +, lv2, makeWrapper, pkgconfig, python, raul, rdflib, serd, sord, sratom , wafHook , suil }: stdenv.mkDerivation rec { - name = "ingen-unstable-${rev}"; - rev = "2017-07-22"; + pname = "ingen"; + version = "unstable-2019-12-09"; + name = "${pname}-${version}"; src = fetchgit { - url = "https://git.drobilla.net/cgit.cgi/ingen.git"; - rev = "cc4a4db33f4d126a07a4a498e053c5fb9a883be3"; - sha256 = "1gmwmml486r9zq4w65v91mfaz36af9zzyjkmi74m8qmh67ffqn3w"; + url = "https://gitlab.com/drobilla/ingen.git"; + rev = "e32f32a360f2bf8f017ea347b6d1e568c0beaf68"; + sha256 = "0wjn2i3j7jb0bmxymg079xpk4iplb91q0xqqnvnpvyldrr7gawlb"; deepClone = true; }; nativeBuildInputs = [ pkgconfig wafHook ]; buildInputs = [ - boost ganv glibmm gtkmm2 libjack2 lilv lv2Unstable makeWrapper + boost ganv glibmm gtkmm2 libjack2 lilv lv2 makeWrapper python raul serd sord sratom suil ]; @@ -37,8 +38,8 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "A modular audio processing system using JACK and LV2 or LADSPA plugins"; - homepage = http://drobilla.net/software/ingen; - license = licenses.gpl3; + homepage = "http://drobilla.net/software/ingen"; + license = licenses.agpl3Plus; maintainers = [ maintainers.goibhniu ]; platforms = platforms.linux; }; diff --git a/pkgs/applications/audio/ir.lv2/default.nix b/pkgs/applications/audio/ir.lv2/default.nix index 9d3656a81f9..f9f58ab5ec1 100644 --- a/pkgs/applications/audio/ir.lv2/default.nix +++ b/pkgs/applications/audio/ir.lv2/default.nix @@ -27,7 +27,7 @@ stdenv.mkDerivation rec { ''; meta = with stdenv.lib; { - homepage = http://factorial.hu/plugins/lv2/ir; + homepage = "http://factorial.hu/plugins/lv2/ir"; description = "Zero-latency, realtime, high performance signal convolver especially for creating reverb effects"; license = licenses.gpl2; maintainers = [ maintainers.magnetophon ]; diff --git a/pkgs/applications/audio/jaaa/default.nix b/pkgs/applications/audio/jaaa/default.nix index 92b2f8ac515..80f15935af2 100644 --- a/pkgs/applications/audio/jaaa/default.nix +++ b/pkgs/applications/audio/jaaa/default.nix @@ -23,7 +23,7 @@ stdenv.mkDerivation rec { ''; meta = with stdenv.lib; { - homepage = http://kokkinizita.linuxaudio.org/linuxaudio/index.html; + homepage = "http://kokkinizita.linuxaudio.org/linuxaudio/index.html"; description = "JACK and ALSA Audio Analyser"; license = licenses.gpl2; maintainers = [ maintainers.magnetophon ]; diff --git a/pkgs/applications/audio/jack-capture/default.nix b/pkgs/applications/audio/jack-capture/default.nix index c62ccc4fc88..e443a0a5269 100644 --- a/pkgs/applications/audio/jack-capture/default.nix +++ b/pkgs/applications/audio/jack-capture/default.nix @@ -23,7 +23,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "A program for recording soundfiles with jack"; - homepage = http://archive.notam02.no/arkiv/src; + homepage = "http://archive.notam02.no/arkiv/src"; license = licenses.gpl2; maintainers = [ maintainers.goibhniu ]; platforms = stdenv.lib.platforms.linux; diff --git a/pkgs/applications/audio/jack-oscrolloscope/default.nix b/pkgs/applications/audio/jack-oscrolloscope/default.nix index 5bad5453504..08263f2abdd 100644 --- a/pkgs/applications/audio/jack-oscrolloscope/default.nix +++ b/pkgs/applications/audio/jack-oscrolloscope/default.nix @@ -19,7 +19,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "A simple waveform viewer for JACK"; - homepage = http://das.nasophon.de/jack_oscrolloscope; + homepage = "http://das.nasophon.de/jack_oscrolloscope"; license = licenses.gpl2; maintainers = [ maintainers.goibhniu ]; platforms = stdenv.lib.platforms.linux; diff --git a/pkgs/applications/audio/jack-rack/default.nix b/pkgs/applications/audio/jack-rack/default.nix index 26a717dbd6e..d13dbcc1688 100644 --- a/pkgs/applications/audio/jack-rack/default.nix +++ b/pkgs/applications/audio/jack-rack/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, pkgconfig, libjack2, ladspaH, gtk2, alsaLib, libxml2, librdf }: +{ stdenv, fetchurl, pkgconfig, libjack2, ladspaH, gtk2, alsaLib, libxml2, lrdf }: stdenv.mkDerivation rec { name = "jack-rack-1.4.7"; src = fetchurl { @@ -6,12 +6,8 @@ stdenv.mkDerivation rec { sha256 = "1lmibx9gicagcpcisacj6qhq6i08lkl5x8szysjqvbgpxl9qg045"; }; nativeBuildInputs = [ pkgconfig ]; - buildInputs = [ libjack2 ladspaH gtk2 alsaLib libxml2 librdf ]; - NIX_LDFLAGS = [ - "-ldl" - "-lm" - "-lpthread" - ]; + buildInputs = [ libjack2 ladspaH gtk2 alsaLib libxml2 lrdf ]; + NIX_LDFLAGS = "-ldl -lm -lpthread"; meta = { description = ''An effects "rack" for the JACK low latency audio API''; @@ -21,7 +17,7 @@ stdenv.mkDerivation rec { be controlled using the ALSA sequencer. It's phat; it turns your computer into an effects box. ''; - homepage = http://jack-rack.sourceforge.net/; + homepage = "http://jack-rack.sourceforge.net/"; license = stdenv.lib.licenses.gpl2Plus; maintainers = [ stdenv.lib.maintainers.astsmtl ]; platforms = stdenv.lib.platforms.linux; diff --git a/pkgs/applications/audio/jackmeter/default.nix b/pkgs/applications/audio/jackmeter/default.nix index e44dfddd37b..2a75b384af5 100644 --- a/pkgs/applications/audio/jackmeter/default.nix +++ b/pkgs/applications/audio/jackmeter/default.nix @@ -13,7 +13,7 @@ stdenv.mkDerivation rec { meta = { description = "Console jack loudness meter"; - homepage = https://www.aelius.com/njh/jackmeter/; + homepage = "https://www.aelius.com/njh/jackmeter/"; license = stdenv.lib.licenses.gpl2; maintainers = [ stdenv.lib.maintainers.marcweber ]; platforms = stdenv.lib.platforms.linux; diff --git a/pkgs/applications/audio/jackmix/default.nix b/pkgs/applications/audio/jackmix/default.nix index fe7c83dd56f..c3a46439ba7 100644 --- a/pkgs/applications/audio/jackmix/default.nix +++ b/pkgs/applications/audio/jackmix/default.nix @@ -3,15 +3,14 @@ stdenv.mkDerivation { name = "jackmix-0.5.2"; src = fetchurl { - url = https://github.com/kampfschlaefer/jackmix/archive/v0.5.2.tar.gz; + url = "https://github.com/kampfschlaefer/jackmix/archive/v0.5.2.tar.gz"; sha256 = "18f5v7g66mgarhs476frvayhch7fy4nyjf2xivixc061ipn0m82j"; }; patches = [ ./no_error.patch ]; - nativeBuildInputs = [ pkgconfig ]; + nativeBuildInputs = [ scons.py2 pkgconfig ]; buildInputs = [ - scons qt4 lash jack @@ -23,7 +22,7 @@ stdenv.mkDerivation { meta = { description = "Matrix-Mixer for the Jack-Audio-connection-Kit"; - homepage = http://www.arnoldarts.de/jackmix/; + homepage = "http://www.arnoldarts.de/jackmix/"; license = stdenv.lib.licenses.gpl2; maintainers = [ stdenv.lib.maintainers.kampfschlaefer ]; platforms = stdenv.lib.platforms.linux; diff --git a/pkgs/applications/audio/jalv/default.nix b/pkgs/applications/audio/jalv/default.nix index a40d5101b34..bbf66a74bc5 100644 --- a/pkgs/applications/audio/jalv/default.nix +++ b/pkgs/applications/audio/jalv/default.nix @@ -1,23 +1,23 @@ -{ stdenv, fetchurl, gtk2, libjack2, lilv, lv2, pkgconfig, python +{ stdenv, fetchurl, gtk3, libjack2, lilv, lv2, pkgconfig, python , serd, sord , sratom, suil, wafHook }: stdenv.mkDerivation rec { pname = "jalv"; - version = "1.6.2"; + version = "1.6.4"; src = fetchurl { url = "https://download.drobilla.net/${pname}-${version}.tar.bz2"; - sha256 = "13al2hb9s3m7jgbg051x704bmzmcg4wb56cfh8z588kiyh0mxpaa"; + sha256 = "1wwfn7yzbs37s2rdlfjgks63svd5g14yyzd2gdl7h0z12qncwsy2"; }; nativeBuildInputs = [ pkgconfig wafHook ]; buildInputs = [ - gtk2 libjack2 lilv lv2 python serd sord sratom suil + gtk3 libjack2 lilv lv2 python serd sord sratom suil ]; meta = with stdenv.lib; { description = "A simple but fully featured LV2 host for Jack"; - homepage = http://drobilla.net/software/jalv; + homepage = "http://drobilla.net/software/jalv"; license = licenses.isc; maintainers = [ maintainers.goibhniu ]; platforms = platforms.linux; diff --git a/pkgs/applications/audio/jamin/default.nix b/pkgs/applications/audio/jamin/default.nix index 3511a08682c..a9b423320a0 100644 --- a/pkgs/applications/audio/jamin/default.nix +++ b/pkgs/applications/audio/jamin/default.nix @@ -6,7 +6,7 @@ stdenv.mkDerivation { name = "jamin-0.95.0"; src = fetchurl { - url = mirror://sourceforge/jamin/jamin-0.95.0.tar.gz; + url = "mirror://sourceforge/jamin/jamin-0.95.0.tar.gz"; sha256 = "0g5v74cm0q3p3pzl6xmnp4rqayaymfli7c6z8s78h9rgd24fwbvn"; }; @@ -14,14 +14,14 @@ stdenv.mkDerivation { buildInputs = [ fftwFloat gtk2 ladspaPlugins libjack2 liblo libxml2 makeWrapper ] ++ (with perlPackages; [ perl XMLParser ]); - NIX_LDFLAGS = [ "-ldl" ]; + NIX_LDFLAGS = "-ldl"; postInstall = '' wrapProgram $out/bin/jamin --set LADSPA_PATH ${ladspaPlugins}/lib/ladspa ''; meta = with stdenv.lib; { - homepage = http://jamin.sourceforge.net; + homepage = "http://jamin.sourceforge.net"; description = "JACK Audio Mastering interface"; license = licenses.gpl2; maintainers = [ maintainers.nico202 ]; diff --git a/pkgs/applications/audio/japa/default.nix b/pkgs/applications/audio/japa/default.nix index a9eb15aabf3..426fea21107 100644 --- a/pkgs/applications/audio/japa/default.nix +++ b/pkgs/applications/audio/japa/default.nix @@ -22,7 +22,7 @@ stdenv.mkDerivation rec { meta = { description = "A 'perceptual' or 'psychoacoustic' audio spectrum analyser for JACK and ALSA"; - homepage = http://kokkinizita.linuxaudio.org/linuxaudio/index.html; + homepage = "http://kokkinizita.linuxaudio.org/linuxaudio/index.html"; license = stdenv.lib.licenses.gpl2; maintainers = [ stdenv.lib.maintainers.magnetophon ]; platforms = stdenv.lib.platforms.linux; diff --git a/pkgs/applications/audio/keyfinder/default.nix b/pkgs/applications/audio/keyfinder/default.nix index d47fc3b6190..710c1e80792 100644 --- a/pkgs/applications/audio/keyfinder/default.nix +++ b/pkgs/applications/audio/keyfinder/default.nix @@ -34,7 +34,7 @@ stdenv.mkDerivation rec { management, no track suggestions, no media player. Just a fast, efficient workflow tool. ''; - homepage = http://www.ibrahimshaath.co.uk/keyfinder/; + homepage = "http://www.ibrahimshaath.co.uk/keyfinder/"; license = licenses.gpl3Plus; platforms = platforms.linux; }; diff --git a/pkgs/applications/audio/kid3/default.nix b/pkgs/applications/audio/kid3/default.nix index 75ffd083a5a..cfcad390f4c 100644 --- a/pkgs/applications/audio/kid3/default.nix +++ b/pkgs/applications/audio/kid3/default.nix @@ -9,11 +9,11 @@ stdenv.mkDerivation rec { pname = "kid3"; - version = "3.8.0"; + version = "3.8.2"; src = fetchurl { url = "mirror://sourceforge/project/kid3/kid3/${version}/${pname}-${version}.tar.gz"; - sha256 = "1a6ixkkdp1fl3arylx06w73mwf26i0ibyplwwcn2kw5xsfxmbjp6"; + sha256 = "051y77swpi9isx275gwzl4fn3igd2dmixbszv9m3h0h9lqhcjrvr"; }; nativeBuildInputs = [ wrapQtAppsHook ]; @@ -64,7 +64,7 @@ stdenv.mkDerivation rec { - Edit synchronized lyrics and event timing codes, import and export LRC files ''; - homepage = http://kid3.sourceforge.net/; + homepage = "http://kid3.sourceforge.net/"; license = licenses.lgpl2Plus; maintainers = [ maintainers.AndersonTorres ]; platforms = platforms.linux; diff --git a/pkgs/applications/audio/klick/default.nix b/pkgs/applications/audio/klick/default.nix index f33245d8f1c..9ff063c1c80 100644 --- a/pkgs/applications/audio/klick/default.nix +++ b/pkgs/applications/audio/klick/default.nix @@ -16,7 +16,7 @@ stdenv.mkDerivation rec { NIX_CFLAGS_COMPILE = "-fpermissive"; meta = { - homepage = http://das.nasophon.de/klick/; + homepage = "http://das.nasophon.de/klick/"; description = "Advanced command-line metronome for JACK"; license = stdenv.lib.licenses.gpl2Plus; platforms = stdenv.lib.platforms.linux; diff --git a/pkgs/applications/audio/ladspa-plugins/default.nix b/pkgs/applications/audio/ladspa-plugins/default.nix index 44186abc3c4..a0fc8631fb3 100644 --- a/pkgs/applications/audio/ladspa-plugins/default.nix +++ b/pkgs/applications/audio/ladspa-plugins/default.nix @@ -21,7 +21,7 @@ stdenv.mkDerivation rec { ''; meta = with stdenv.lib; { - homepage = http://plugin.org.uk/; + homepage = "http://plugin.org.uk/"; description = "LADSPA format audio plugins"; license = licenses.gpl2; maintainers = [ maintainers.magnetophon ]; diff --git a/pkgs/applications/audio/ladspa-sdk/default.nix b/pkgs/applications/audio/ladspa-sdk/default.nix index a7779ee8aee..76acd1daba7 100644 --- a/pkgs/applications/audio/ladspa-sdk/default.nix +++ b/pkgs/applications/audio/ladspa-sdk/default.nix @@ -20,7 +20,7 @@ stdenv.mkDerivation rec { ten example LADSPA plugins and three example programs (applyplugin, analyseplugin and listplugins). ''; - homepage = http://www.ladspa.org/ladspa_sdk/overview.html; + homepage = "http://www.ladspa.org/ladspa_sdk/overview.html"; license = stdenv.lib.licenses.lgpl2; maintainers = [ stdenv.lib.maintainers.magnetophon ]; platforms = stdenv.lib.platforms.linux; diff --git a/pkgs/applications/audio/ladspa-sdk/ladspah.nix b/pkgs/applications/audio/ladspa-sdk/ladspah.nix index 3fad5de1de5..d51aa3b75e1 100644 --- a/pkgs/applications/audio/ladspa-sdk/ladspah.nix +++ b/pkgs/applications/audio/ladspa-sdk/ladspah.nix @@ -18,7 +18,7 @@ stdenv.mkDerivation rec { The ladspa.h API header file from the LADSPA SDK. For the full SDK, use the ladspa-sdk package. ''; - homepage = http://www.ladspa.org/ladspa_sdk/overview.html; + homepage = "http://www.ladspa.org/ladspa_sdk/overview.html"; license = stdenv.lib.licenses.lgpl2; maintainers = [ stdenv.lib.maintainers.magnetophon ]; platforms = stdenv.lib.platforms.all; diff --git a/pkgs/applications/audio/lash/default.nix b/pkgs/applications/audio/lash/default.nix index e96972b0d1b..cb0a3ee05e1 100644 --- a/pkgs/applications/audio/lash/default.nix +++ b/pkgs/applications/audio/lash/default.nix @@ -18,11 +18,7 @@ stdenv.mkDerivation rec { buildInputs = [ alsaLib gtk2 libjack2 libxml2 makeWrapper pkgconfig readline ]; propagatedBuildInputs = [ libuuid ]; - NIX_LDFLAGS = [ - "-lm" - "-lpthread" - "-luuid" - ]; + NIX_LDFLAGS = "-lm -lpthread -luuid"; postInstall = '' for i in lash_control lash_panel @@ -35,7 +31,7 @@ stdenv.mkDerivation rec { longDescription = '' Session management system for GNU/Linux audio applications. ''; - homepage = https://www.nongnu.org/lash; + homepage = "https://www.nongnu.org/lash"; license = licenses.gpl2Plus; platforms = platforms.linux; maintainers = [ maintainers.goibhniu ]; diff --git a/pkgs/applications/audio/lastfmsubmitd/default.nix b/pkgs/applications/audio/lastfmsubmitd/default.nix index 3135a00334c..efafc5b05b1 100644 --- a/pkgs/applications/audio/lastfmsubmitd/default.nix +++ b/pkgs/applications/audio/lastfmsubmitd/default.nix @@ -14,7 +14,7 @@ pythonPackages.buildPythonApplication rec { installCommand = "python setup.py install --prefix=$out"; meta = { - homepage = https://www.red-bean.com/decklin/lastfmsubmitd/; + homepage = "https://www.red-bean.com/decklin/lastfmsubmitd/"; license = lib.licenses.mit; description = "An last.fm audio scrobbler and daemon"; }; diff --git a/pkgs/applications/audio/lingot/default.nix b/pkgs/applications/audio/lingot/default.nix index d2ec92e0654..bf45a466d30 100644 --- a/pkgs/applications/audio/lingot/default.nix +++ b/pkgs/applications/audio/lingot/default.nix @@ -1,25 +1,45 @@ -{ stdenv, fetchurl, pkgconfig, intltool, gtk2, alsaLib, libglade }: +{ stdenv +, fetchurl +, pkg-config +, intltool +, gtk3 +, wrapGAppsHook +, alsaLib +, libpulseaudio +, fftw +}: -stdenv.mkDerivation { - name = "lingot-0.9.1"; +stdenv.mkDerivation rec { + pname = "lingot"; + version = "1.0.1"; src = fetchurl { - url = mirror://savannah/lingot/lingot-0.9.1.tar.gz; - sha256 = "0ygras6ndw2fylwxx86ac11pcr2y2bcfvvgiwrh92z6zncx254gc"; + url = "mirror://savannah/${pname}/${pname}-${version}.tar.gz"; + sha256 = "cbjHe7mI6DhKDsv0yGHYOPe5hShKjhj3VTKrmBbGoA8="; }; - hardeningDisable = [ "format" ]; + nativeBuildInputs = [ + pkg-config + intltool + wrapGAppsHook + ]; - nativeBuildInputs = [ pkgconfig ]; - buildInputs = [ intltool gtk2 alsaLib libglade ]; + buildInputs = [ + gtk3 + alsaLib + libpulseaudio + fftw + ]; - configureFlags = [ "--disable-jack" ]; + configureFlags = [ + "--disable-jack" + ]; meta = { description = "Not a Guitar-Only tuner"; - homepage = https://www.nongnu.org/lingot/; + homepage = "https://www.nongnu.org/lingot/"; license = stdenv.lib.licenses.gpl2Plus; platforms = with stdenv.lib.platforms; linux; - maintainers = with stdenv.lib.maintainers; [viric]; + maintainers = with stdenv.lib.maintainers; [ viric ]; }; } diff --git a/pkgs/applications/audio/linuxband/default.nix b/pkgs/applications/audio/linuxband/default.nix index b5a99150cb2..cd9ca5e2674 100644 --- a/pkgs/applications/audio/linuxband/default.nix +++ b/pkgs/applications/audio/linuxband/default.nix @@ -29,7 +29,7 @@ in stdenv.mkDerivation rec { meta = { description = "A GUI front-end for MMA: Type in the chords, choose the groove and it will play an accompaniment"; - homepage = http://linuxband.org/; + homepage = "http://linuxband.org/"; license = stdenv.lib.licenses.gpl2; maintainers = [ stdenv.lib.maintainers.magnetophon ]; platforms = stdenv.lib.platforms.linux; diff --git a/pkgs/applications/audio/linuxsampler/default.nix b/pkgs/applications/audio/linuxsampler/default.nix index f13f10d15e8..6b6cfd55926 100644 --- a/pkgs/applications/audio/linuxsampler/default.nix +++ b/pkgs/applications/audio/linuxsampler/default.nix @@ -21,7 +21,7 @@ stdenv.mkDerivation rec { enableParallelBuilding = true; meta = with stdenv.lib; { - homepage = http://www.linuxsampler.org; + homepage = "http://www.linuxsampler.org"; description = "Sampler backend"; longDescription = '' Includes sampler engine, audio and MIDI drivers, network layer diff --git a/pkgs/applications/audio/lmms/default.nix b/pkgs/applications/audio/lmms/default.nix index 99503fc3942..c243e9beb23 100644 --- a/pkgs/applications/audio/lmms/default.nix +++ b/pkgs/applications/audio/lmms/default.nix @@ -5,13 +5,13 @@ mkDerivation rec { pname = "lmms"; - version = "1.2.0-rc7"; + version = "1.2.1"; src = fetchFromGitHub { owner = "LMMS"; repo = "lmms"; rev = "v${version}"; - sha256 = "1hshzf2sbdfw37y9rz1ksgvn81kp2n23dp74lsaasc2n7wzjwdis"; + sha256 = "08k2nfj0rw9mahr7pr90n79wviqmjmflrgcljc6y3x30v84wbp26"; fetchSubmodules = true; }; @@ -41,7 +41,7 @@ mkDerivation rec { meta = with stdenv.lib; { description = "DAW similar to FL Studio (music production software)"; - homepage = https://lmms.io; + homepage = "https://lmms.io"; license = licenses.gpl2Plus; platforms = [ "x86_64-linux" "i686-linux" ]; maintainers = with maintainers; [ goibhniu yegortimoshenko ]; diff --git a/pkgs/applications/audio/lollypop/default.nix b/pkgs/applications/audio/lollypop/default.nix index 2d2062696d7..e4b8b906fa6 100644 --- a/pkgs/applications/audio/lollypop/default.nix +++ b/pkgs/applications/audio/lollypop/default.nix @@ -12,6 +12,10 @@ , desktop-file-utils , totem-pl-parser , gobject-introspection +, glib-networking +, gdk-pixbuf +, glib +, pango , wrapGAppsHook , lastFMSupport ? true , youtubeSupport ? true @@ -19,7 +23,7 @@ python3.pkgs.buildPythonApplication rec { pname = "lollypop"; - version = "1.2.16"; + version = "1.2.35"; format = "other"; doCheck = false; @@ -28,7 +32,7 @@ python3.pkgs.buildPythonApplication rec { url = "https://gitlab.gnome.org/World/lollypop"; rev = "refs/tags/${version}"; fetchSubmodules = true; - sha256 = "0rl4a5npjh5sm3kih11cs2j7ik894nlygllbw4j5pn9n9v66x51w"; + sha256 = "19nw9qh17yyi9ih1nwngbbwjx1vr26haqhmzsdqf0yjgsgf9vldx"; }; nativeBuildInputs = [ @@ -42,6 +46,9 @@ python3.pkgs.buildPythonApplication rec { ]; buildInputs = with gst_all_1; [ + gdk-pixbuf + glib + glib-networking gst-libav gst-plugins-bad gst-plugins-base @@ -50,6 +57,7 @@ python3.pkgs.buildPythonApplication rec { gstreamer gtk3 libsoup + pango totem-pl-parser ] ++ lib.optional lastFMSupport libsecret; @@ -86,7 +94,7 @@ python3.pkgs.buildPythonApplication rec { meta = with lib; { changelog = "https://gitlab.gnome.org/World/lollypop/tags/${version}"; description = "A modern music player for GNOME"; - homepage = https://wiki.gnome.org/Apps/Lollypop; + homepage = "https://wiki.gnome.org/Apps/Lollypop"; license = licenses.gpl3Plus; maintainers = with maintainers; [ worldofpeace ]; platforms = platforms.linux; diff --git a/pkgs/applications/audio/lsp-plugins/default.nix b/pkgs/applications/audio/lsp-plugins/default.nix index 47d8f165ad0..d530aff9faa 100644 --- a/pkgs/applications/audio/lsp-plugins/default.nix +++ b/pkgs/applications/audio/lsp-plugins/default.nix @@ -1,39 +1,28 @@ { stdenv, fetchFromGitHub, pkgconfig, makeWrapper , libsndfile, jack2Full , libGLU, libGL, lv2, cairo -, ladspaH, php, expat }: +, ladspaH, php }: stdenv.mkDerivation rec { pname = "lsp-plugins"; - version = "1.1.10"; + version = "1.1.19"; src = fetchFromGitHub { owner = "sadko4u"; repo = pname; rev = "${pname}-${version}"; - sha256 = "09gmwzh1gq1q2lxn8fc1bpdh02h8vr7r0i040c1nx256wgfsarqb"; + sha256 = "1wiph3vxhydc6mr9hn2c6crd4cx592l2zv0wrzgmpnlm1lflzpbg"; }; - nativeBuildInputs = [ pkgconfig php expat ]; - buildInputs = [ jack2Full libsndfile libGLU libGL lv2 cairo ladspaH makeWrapper ]; + nativeBuildInputs = [ pkgconfig php makeWrapper ]; + buildInputs = [ jack2Full libsndfile libGLU libGL lv2 cairo ladspaH ]; makeFlags = [ - "BIN_PATH=$(out)/bin" - "LIB_PATH=$(out)/lib" - "DOC_PATH=$(out)/share/doc" + "PREFIX=${placeholder ''out''}" + "ETC_PATH=$(out)/etc" ]; - NIX_CFLAGS_COMPILE = [ "-DLSP_NO_EXPERIMENTAL" ]; - - patchPhase = '' - runHook prePatch - substituteInPlace Makefile --replace "/usr/lib" "$out/lib" - substituteInPlace ./include/container/jack/main.h --replace "/usr/lib" "$out/lib" - substituteInPlace ./include/container/vst/main.h --replace "/usr/lib" "$out/lib" - # for https://github.com/sadko4u/lsp-plugins/issues/7#issuecomment-426561549 : - sed -i '/X11__NET_WM_WINDOW_TYPE_DOCK;/d' ./src/ui/ws/x11/X11Window.cpp - runHook postPatch - ''; + NIX_CFLAGS_COMPILE = "-DLSP_NO_EXPERIMENTAL"; doCheck = true; @@ -45,7 +34,7 @@ stdenv.mkDerivation rec { runHook postCheck ''; - buildFlags = "release"; + buildFlags = [ "release" ]; meta = with stdenv.lib; { description = "Collection of open-source audio plugins"; @@ -151,9 +140,9 @@ stdenv.mkDerivation rec { - Delay Compensator Stereo - Verzögerungsausgleicher Stereo - Delay Compensator x2 Stereo - Verzögerungsausgleicher x2 Stereo ''; - homepage = https://lsp-plug.in; + homepage = "https://lsp-plug.in"; maintainers = with maintainers; [ magnetophon ]; license = licenses.gpl2; - platforms = [ "x86_64-linux" ]; + platforms = platforms.linux; }; } diff --git a/pkgs/applications/audio/luppp/default.nix b/pkgs/applications/audio/luppp/default.nix index fdba836a6ae..c1494ffc333 100644 --- a/pkgs/applications/audio/luppp/default.nix +++ b/pkgs/applications/audio/luppp/default.nix @@ -31,7 +31,7 @@ stdenv.mkDerivation rec { ]; meta = with stdenv.lib; { - homepage = http://openavproductions.com/luppp/; + homepage = "http://openavproductions.com/luppp/"; description = "A music creation tool, intended for live use"; license = licenses.gpl3Plus; maintainers = with maintainers; [ prusnak ]; diff --git a/pkgs/applications/audio/lv2bm/default.nix b/pkgs/applications/audio/lv2bm/default.nix index f1eddb62624..aee910f56eb 100644 --- a/pkgs/applications/audio/lv2bm/default.nix +++ b/pkgs/applications/audio/lv2bm/default.nix @@ -19,7 +19,7 @@ stdenv.mkDerivation { ''; meta = with stdenv.lib; { - homepage = https://github.com/portalmod/lv2bm; + homepage = "https://github.com/portalmod/lv2bm"; description = "A benchmark tool for LV2 plugins"; license = licenses.gpl3; maintainers = [ maintainers.magnetophon ]; diff --git a/pkgs/applications/audio/magnetophonDSP/CharacterCompressor/default.nix b/pkgs/applications/audio/magnetophonDSP/CharacterCompressor/default.nix index 6488d1bd65e..e16198696a6 100644 --- a/pkgs/applications/audio/magnetophonDSP/CharacterCompressor/default.nix +++ b/pkgs/applications/audio/magnetophonDSP/CharacterCompressor/default.nix @@ -30,7 +30,7 @@ stdenv.mkDerivation rec { meta = { description = "A compressor with character. For jack and lv2"; - homepage = https://github.com/magnetophon/CharacterCompressor; + homepage = "https://github.com/magnetophon/CharacterCompressor"; license = stdenv.lib.licenses.gpl3; maintainers = [ stdenv.lib.maintainers.magnetophon ]; }; diff --git a/pkgs/applications/audio/magnetophonDSP/CompBus/default.nix b/pkgs/applications/audio/magnetophonDSP/CompBus/default.nix index c5728b6e8b7..1ccc9f3fcd5 100644 --- a/pkgs/applications/audio/magnetophonDSP/CompBus/default.nix +++ b/pkgs/applications/audio/magnetophonDSP/CompBus/default.nix @@ -36,7 +36,7 @@ stdenv.mkDerivation rec { meta = { description = "A group of compressors mixed into a bus, sidechained from that mix bus. For jack and lv2"; - homepage = https://github.com/magnetophon/CompBus; + homepage = "https://github.com/magnetophon/CompBus"; license = stdenv.lib.licenses.gpl3; maintainers = [ stdenv.lib.maintainers.magnetophon ]; }; diff --git a/pkgs/applications/audio/magnetophonDSP/ConstantDetuneChorus/default.nix b/pkgs/applications/audio/magnetophonDSP/ConstantDetuneChorus/default.nix index 331e58c4bd2..d5ed7e85b69 100644 --- a/pkgs/applications/audio/magnetophonDSP/ConstantDetuneChorus/default.nix +++ b/pkgs/applications/audio/magnetophonDSP/ConstantDetuneChorus/default.nix @@ -26,7 +26,7 @@ stdenv.mkDerivation rec { meta = { description = "A chorus algorithm that maintains constant and symmetric detuning depth (in cents), regardless of modulation rate. For jack and lv2"; - homepage = https://github.com/magnetophon/constant-detune-chorus; + homepage = "https://github.com/magnetophon/constant-detune-chorus"; license = stdenv.lib.licenses.gpl3; maintainers = [ stdenv.lib.maintainers.magnetophon ]; }; diff --git a/pkgs/applications/audio/magnetophonDSP/LazyLimiter/default.nix b/pkgs/applications/audio/magnetophonDSP/LazyLimiter/default.nix index 046ee70e990..6d119394d5d 100644 --- a/pkgs/applications/audio/magnetophonDSP/LazyLimiter/default.nix +++ b/pkgs/applications/audio/magnetophonDSP/LazyLimiter/default.nix @@ -26,7 +26,7 @@ stdenv.mkDerivation rec { meta = { description = "A fast yet clean lookahead limiter for jack and lv2"; - homepage = https://magnetophon.github.io/LazyLimiter/; + homepage = "https://magnetophon.github.io/LazyLimiter/"; license = stdenv.lib.licenses.gpl2; maintainers = [ stdenv.lib.maintainers.magnetophon ]; }; diff --git a/pkgs/applications/audio/magnetophonDSP/MBdistortion/default.nix b/pkgs/applications/audio/magnetophonDSP/MBdistortion/default.nix index aa7da17dafd..0eb68e65eae 100644 --- a/pkgs/applications/audio/magnetophonDSP/MBdistortion/default.nix +++ b/pkgs/applications/audio/magnetophonDSP/MBdistortion/default.nix @@ -26,7 +26,7 @@ stdenv.mkDerivation rec { meta = { description = "Mid-side multiband distortion for jack and lv2"; - homepage = https://github.com/magnetophon/MBdistortion; + homepage = "https://github.com/magnetophon/MBdistortion"; license = stdenv.lib.licenses.gpl2; maintainers = [ stdenv.lib.maintainers.magnetophon ]; }; diff --git a/pkgs/applications/audio/magnetophonDSP/RhythmDelay/default.nix b/pkgs/applications/audio/magnetophonDSP/RhythmDelay/default.nix index ae05866e57d..be8ad72d28d 100644 --- a/pkgs/applications/audio/magnetophonDSP/RhythmDelay/default.nix +++ b/pkgs/applications/audio/magnetophonDSP/RhythmDelay/default.nix @@ -26,7 +26,7 @@ stdenv.mkDerivation rec { meta = { description = "Tap a rhythm into your delay! For jack and lv2"; - homepage = https://github.com/magnetophon/RhythmDelay; + homepage = "https://github.com/magnetophon/RhythmDelay"; license = stdenv.lib.licenses.gpl3; maintainers = [ stdenv.lib.maintainers.magnetophon ]; }; diff --git a/pkgs/applications/audio/magnetophonDSP/VoiceOfFaust/default.nix b/pkgs/applications/audio/magnetophonDSP/VoiceOfFaust/default.nix index 718bbdaf49e..dce2db4cb77 100644 --- a/pkgs/applications/audio/magnetophonDSP/VoiceOfFaust/default.nix +++ b/pkgs/applications/audio/magnetophonDSP/VoiceOfFaust/default.nix @@ -49,7 +49,7 @@ stdenv.mkDerivation rec { meta = { description = "Turn your voice into a synthesizer"; - homepage = https://github.com/magnetophon/VoiceOfFaust; + homepage = "https://github.com/magnetophon/VoiceOfFaust"; license = stdenv.lib.licenses.gpl3; maintainers = [ stdenv.lib.maintainers.magnetophon ]; }; diff --git a/pkgs/applications/audio/magnetophonDSP/faustCompressors/default.nix b/pkgs/applications/audio/magnetophonDSP/faustCompressors/default.nix index fece392ab1c..172b5ed3891 100644 --- a/pkgs/applications/audio/magnetophonDSP/faustCompressors/default.nix +++ b/pkgs/applications/audio/magnetophonDSP/faustCompressors/default.nix @@ -13,6 +13,8 @@ stdenv.mkDerivation rec { buildInputs = [ faust2jaqt faust2lv2 ]; buildPhase = '' + echo "hack out autoComp.dsp due to https://github.com/grame-cncm/faust/407/issues " + rm autoComp.dsp for f in *.dsp; do echo "compiling standalone from" $f @@ -39,7 +41,7 @@ stdenv.mkDerivation rec { meta = { description = "A collection of bread and butter compressors"; - homepage = https://github.com/magnetophon/faustCompressors; + homepage = "https://github.com/magnetophon/faustCompressors"; license = stdenv.lib.licenses.gpl3; maintainers = [ stdenv.lib.maintainers.magnetophon ]; }; diff --git a/pkgs/applications/audio/magnetophonDSP/pluginUtils/default.nix b/pkgs/applications/audio/magnetophonDSP/pluginUtils/default.nix index 356e95bf97c..11d51d756ab 100644 --- a/pkgs/applications/audio/magnetophonDSP/pluginUtils/default.nix +++ b/pkgs/applications/audio/magnetophonDSP/pluginUtils/default.nix @@ -33,7 +33,7 @@ stdenv.mkDerivation rec { meta = { description = "Some simple utility lv2 plugins"; - homepage = https://github.com/magnetophon/pluginUtils; + homepage = "https://github.com/magnetophon/pluginUtils"; license = stdenv.lib.licenses.gpl3; maintainers = [ stdenv.lib.maintainers.magnetophon ]; }; diff --git a/pkgs/applications/audio/magnetophonDSP/shelfMultiBand/default.nix b/pkgs/applications/audio/magnetophonDSP/shelfMultiBand/default.nix index 292cd3dfd86..360cee243c3 100644 --- a/pkgs/applications/audio/magnetophonDSP/shelfMultiBand/default.nix +++ b/pkgs/applications/audio/magnetophonDSP/shelfMultiBand/default.nix @@ -30,7 +30,7 @@ stdenv.mkDerivation rec { meta = { description = "A multiband compressor made from shelving filters."; - homepage = https://github.com/magnetophon/shelfMultiBand; + homepage = "https://github.com/magnetophon/shelfMultiBand"; license = stdenv.lib.licenses.gpl3; maintainers = [ stdenv.lib.maintainers.magnetophon ]; }; diff --git a/pkgs/applications/audio/mda-lv2/default.nix b/pkgs/applications/audio/mda-lv2/default.nix index 61f2bc33f7f..2464abb6585 100644 --- a/pkgs/applications/audio/mda-lv2/default.nix +++ b/pkgs/applications/audio/mda-lv2/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, fftwSinglePrec, lv2, pkgconfig, python, wafHook }: +{ stdenv, fetchurl, fftwSinglePrec, lv2, pkgconfig, wafHook }: stdenv.mkDerivation rec { pname = "mda-lv2"; @@ -10,10 +10,10 @@ stdenv.mkDerivation rec { }; nativeBuildInputs = [ pkgconfig wafHook ]; - buildInputs = [ fftwSinglePrec lv2 python ]; + buildInputs = [ fftwSinglePrec lv2 ]; meta = with stdenv.lib; { - homepage = http://drobilla.net/software/mda-lv2/; + homepage = "http://drobilla.net/software/mda-lv2/"; description = "An LV2 port of the MDA plugins by Paul Kellett"; license = licenses.gpl2Plus; maintainers = [ maintainers.goibhniu ]; diff --git a/pkgs/applications/audio/meterbridge/default.nix b/pkgs/applications/audio/meterbridge/default.nix index 4d2fa0e15b4..9d807358cd5 100644 --- a/pkgs/applications/audio/meterbridge/default.nix +++ b/pkgs/applications/audio/meterbridge/default.nix @@ -18,7 +18,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Various meters (VU, PPM, DPM, JF, SCO) for Jack Audio Connection Kit"; - homepage = http://plugin.org.uk/meterbridge/; + homepage = "http://plugin.org.uk/meterbridge/"; license = licenses.gpl2; platforms = platforms.linux; maintainers = [ maintainers.nico202 ]; diff --git a/pkgs/applications/audio/meters_lv2/default.nix b/pkgs/applications/audio/meters_lv2/default.nix index 12383dcbbda..cd9523d2710 100644 --- a/pkgs/applications/audio/meters_lv2/default.nix +++ b/pkgs/applications/audio/meters_lv2/default.nix @@ -38,7 +38,7 @@ stdenv.mkDerivation { meta = with stdenv.lib; { description = "Collection of audio level meters with GUI in LV2 plugin format"; - homepage = http://x42.github.io/meters.lv2/; + homepage = "http://x42.github.io/meters.lv2/"; maintainers = with maintainers; [ ehmry ]; license = licenses.gpl2; platforms = platforms.linux; diff --git a/pkgs/applications/audio/mhwaveedit/default.nix b/pkgs/applications/audio/mhwaveedit/default.nix index e4d6c0293df..67204260da2 100644 --- a/pkgs/applications/audio/mhwaveedit/default.nix +++ b/pkgs/applications/audio/mhwaveedit/default.nix @@ -31,7 +31,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Graphical program for editing, playing and recording sound files"; - homepage = https://github.com/magnush/mhwaveedit; + homepage = "https://github.com/magnush/mhwaveedit"; license = licenses.gpl2Plus; platforms = platforms.linux; maintainers = [ maintainers.goibhniu ]; diff --git a/pkgs/applications/audio/mid2key/default.nix b/pkgs/applications/audio/mid2key/default.nix index 3c5660724d3..071b18e5a8a 100644 --- a/pkgs/applications/audio/mid2key/default.nix +++ b/pkgs/applications/audio/mid2key/default.nix @@ -17,7 +17,7 @@ stdenv.mkDerivation rec { installPhase = "mkdir -p $out/bin && mv mid2key $out/bin"; meta = with stdenv.lib; { - homepage = http://code.google.com/p/mid2key/; + homepage = "http://code.google.com/p/mid2key/"; description = "A simple tool which maps midi notes to simulated keystrokes"; license = licenses.gpl3; maintainers = [ maintainers.goibhniu ]; diff --git a/pkgs/applications/audio/midas/m32edit.nix b/pkgs/applications/audio/midas/m32edit.nix index c8a751c235b..6af11d42e31 100644 --- a/pkgs/applications/audio/midas/m32edit.nix +++ b/pkgs/applications/audio/midas/m32edit.nix @@ -5,5 +5,5 @@ callPackage ./generic.nix (args // { type = "M32"; version = "3.2"; sha256 = "1cds6qinz37086l6pmmgrzrxadygjr2z96sjjyznnai2wz4z2nrd"; - homepage = http://www.musictri.be/Categories/Midas/Mixers/Digital/M32/p/P0B3I/downloads; + homepage = "http://www.musictri.be/Categories/Midas/Mixers/Digital/M32/p/P0B3I/downloads"; }) diff --git a/pkgs/applications/audio/midas/x32edit.nix b/pkgs/applications/audio/midas/x32edit.nix index 4aacfcc89a3..7e364ff984a 100644 --- a/pkgs/applications/audio/midas/x32edit.nix +++ b/pkgs/applications/audio/midas/x32edit.nix @@ -5,5 +5,5 @@ callPackage ./generic.nix (args // { type = "X32"; version = "3.2"; sha256 = "1lzmhd0sqnlzc0khpwm82sfi48qhv7rg153a57qjih7hhhy41mzk"; - homepage = http://www.musictri.be/Categories/Behringer/Mixers/Digital/X32/p/P0ASF/downloads; + homepage = "http://www.musictri.be/Categories/Behringer/Mixers/Digital/X32/p/P0ASF/downloads"; }) diff --git a/pkgs/applications/audio/midisheetmusic/default.nix b/pkgs/applications/audio/midisheetmusic/default.nix index 48052fc4ec8..388fc2a1b3e 100644 --- a/pkgs/applications/audio/midisheetmusic/default.nix +++ b/pkgs/applications/audio/midisheetmusic/default.nix @@ -54,7 +54,7 @@ in stdenv.mkDerivation { meta = with stdenv.lib; { description = "Convert MIDI Files to Piano Sheet Music for two hands"; - homepage = http://midisheetmusic.com; + homepage = "http://midisheetmusic.com"; license = licenses.gpl2; maintainers = [ maintainers.gnidorah ]; platforms = platforms.linux; diff --git a/pkgs/applications/audio/mikmod/default.nix b/pkgs/applications/audio/mikmod/default.nix index 42fa8b7621a..9be303cb652 100644 --- a/pkgs/applications/audio/mikmod/default.nix +++ b/pkgs/applications/audio/mikmod/default.nix @@ -12,7 +12,7 @@ stdenv.mkDerivation rec { meta = { description = "Tracker music player for the terminal"; - homepage = http://mikmod.shlomifish.org/; + homepage = "http://mikmod.shlomifish.org/"; license = stdenv.lib.licenses.gpl2Plus; maintainers = with stdenv.lib.maintainers; [ ]; platforms = with stdenv.lib.platforms; linux; diff --git a/pkgs/applications/audio/milkytracker/default.nix b/pkgs/applications/audio/milkytracker/default.nix index 7f86e2c2071..d7b9e5a6355 100644 --- a/pkgs/applications/audio/milkytracker/default.nix +++ b/pkgs/applications/audio/milkytracker/default.nix @@ -16,9 +16,12 @@ stdenv.mkDerivation rec { buildInputs = [ SDL2 alsaLib libjack2 lhasa perl rtmidi zlib zziplib ]; + # Somehow this does not get set automatically + cmakeFlags = [ "-DSDL2MAIN_LIBRARY=${SDL2}/lib/libSDL2.so" ]; + meta = with stdenv.lib; { description = "Music tracker application, similar to Fasttracker II"; - homepage = http://milkytracker.org; + homepage = "http://milkytracker.org"; license = licenses.gpl3Plus; platforms = [ "x86_64-linux" "i686-linux" ]; maintainers = with maintainers; [ zoomulator ]; diff --git a/pkgs/applications/audio/mimic/default.nix b/pkgs/applications/audio/mimic/default.nix index e91b2c9360d..e33e69ad78c 100644 --- a/pkgs/applications/audio/mimic/default.nix +++ b/pkgs/applications/audio/mimic/default.nix @@ -26,7 +26,7 @@ stdenv.mkDerivation rec { meta = { description = "Mycroft's TTS engine, based on CMU's Flite (Festival Lite)"; - homepage = https://mimic.mycroft.ai/; + homepage = "https://mimic.mycroft.ai/"; license = stdenv.lib.licenses.free; platforms = stdenv.lib.platforms.linux; maintainers = [ stdenv.lib.maintainers.noneucat ]; diff --git a/pkgs/applications/audio/mimms/default.nix b/pkgs/applications/audio/mimms/default.nix index 2d301a8b6a9..47e9fa306dc 100644 --- a/pkgs/applications/audio/mimms/default.nix +++ b/pkgs/applications/audio/mimms/default.nix @@ -15,7 +15,7 @@ pythonPackages.buildPythonApplication rec { ''; meta = { - homepage = https://savannah.nongnu.org/projects/mimms/; + homepage = "https://savannah.nongnu.org/projects/mimms/"; license = stdenv.lib.licenses.gpl3; description = "An mms (e.g. mms://) stream downloader"; diff --git a/pkgs/applications/audio/mixxx/default.nix b/pkgs/applications/audio/mixxx/default.nix index 5cf9b1b8ab7..f889d9e1e8d 100644 --- a/pkgs/applications/audio/mixxx/default.nix +++ b/pkgs/applications/audio/mixxx/default.nix @@ -1,26 +1,38 @@ -{ stdenv, mkDerivation, fetchFromGitHub, chromaprint +{ stdenv, mkDerivation, fetchurl, fetchFromGitHub, chromaprint , fftw, flac, faad2, glibcLocales, mp4v2 , libid3tag, libmad, libopus, libshout, libsndfile, libusb1, libvorbis , libGLU, libxcb, lilv, lv2, opusfile , pkgconfig, portaudio, portmidi, protobuf, qtbase, qtscript, qtsvg -, qtx11extras, rubberband, scons, sqlite, taglib, upower, vampSDK +, qtx11extras, rubberband, scons, sqlite, taglib, upower, vamp-plugin-sdk }: +let + # Because libshout 2.4.2 and newer seem to break streaming in mixxx, build it + # with 2.4.1 instead. + libshout241 = libshout.overrideAttrs (o: rec { + name = "libshout-2.4.1"; + src = fetchurl { + url = "http://downloads.xiph.org/releases/libshout/${name}.tar.gz"; + sha256 = "0kgjpf8jkgyclw11nilxi8vyjk4s8878x23qyxnvybbgqbgbib7k"; + }; + }); +in mkDerivation rec { pname = "mixxx"; - version = "2.2.2"; + version = "2.2.3"; src = fetchFromGitHub { owner = "mixxxdj"; repo = "mixxx"; rev = "release-${version}"; - sha256 = "0dmkvcsgq7abxqd4wms8c4w0mr5c53z7n5r8jgzp4swz9nmfjpfg"; + sha256 = "1h7q25fv62c5m74d4cn1m6mpanmqpbl2wqbch4qvn488jb2jw1dv"; }; + nativeBuildInputs = [ scons.py2 ]; buildInputs = [ - chromaprint fftw flac faad2 glibcLocales mp4v2 libid3tag libmad libopus libshout libsndfile + chromaprint fftw flac faad2 glibcLocales mp4v2 libid3tag libmad libopus libshout241 libsndfile libusb1 libvorbis libxcb libGLU lilv lv2 opusfile pkgconfig portaudio portmidi protobuf qtbase qtscript qtsvg - qtx11extras rubberband scons sqlite taglib upower vampSDK + qtx11extras rubberband sqlite taglib upower vamp-plugin-sdk ]; enableParallelBuilding = true; @@ -37,7 +49,7 @@ mkDerivation rec { ]; meta = with stdenv.lib; { - homepage = https://mixxx.org; + homepage = "https://mixxx.org"; description = "Digital DJ mixing software"; license = licenses.gpl2Plus; maintainers = [ maintainers.aszlig maintainers.goibhniu maintainers.bfortz ]; diff --git a/pkgs/applications/audio/moc/default.nix b/pkgs/applications/audio/moc/default.nix index 89d062d584e..18b5a980633 100644 --- a/pkgs/applications/audio/moc/default.nix +++ b/pkgs/applications/audio/moc/default.nix @@ -57,7 +57,7 @@ in stdenv.mkDerivation rec { ++ opt midiSupport timidity ++ opt modplugSupport libmodplug ++ opt mp3Support libmad - ++ opt musepackSupport [ libmpc libmpcdec taglib ] + ++ stdenv.lib.optionals musepackSupport [ libmpc libmpcdec taglib ] ++ opt vorbisSupport libvorbis ++ opt speexSupport speex ++ opt (ffmpegSupport && !withffmpeg4) ffmpeg @@ -96,7 +96,7 @@ in stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "An ncurses console audio player designed to be powerful and easy to use"; - homepage = http://moc.daper.net/; + homepage = "http://moc.daper.net/"; license = licenses.gpl2; maintainers = with maintainers; [ aethelz pSub jagajaga ]; platforms = platforms.linux; diff --git a/pkgs/applications/audio/mod-distortion/default.nix b/pkgs/applications/audio/mod-distortion/default.nix index c20f04ec947..765def25d60 100644 --- a/pkgs/applications/audio/mod-distortion/default.nix +++ b/pkgs/applications/audio/mod-distortion/default.nix @@ -16,7 +16,7 @@ stdenv.mkDerivation { installFlags = [ "INSTALL_PATH=$(out)/lib/lv2" ]; meta = with stdenv.lib; { - homepage = https://github.com/portalmod/mod-distortion; + homepage = "https://github.com/portalmod/mod-distortion"; description = "Analog distortion emulation lv2 plugins"; license = licenses.gpl3; maintainers = [ maintainers.magnetophon ]; diff --git a/pkgs/applications/audio/mopidy/default.nix b/pkgs/applications/audio/mopidy/default.nix index 2df54fa7fb4..0b9f8153302 100644 --- a/pkgs/applications/audio/mopidy/default.nix +++ b/pkgs/applications/audio/mopidy/default.nix @@ -1,44 +1,41 @@ -{ stdenv, fetchFromGitHub, pythonPackages, wrapGAppsHook -, gst_all_1, glib-networking, gobject-introspection -}: +{ newScope, python }: -pythonPackages.buildPythonApplication rec { - pname = "mopidy"; - version = "2.3.1"; +# Create a custom scope so we are consistent in which python version is used + +let + callPackage = newScope self; + + self = { + + inherit python; + pythonPackages = python.pkgs; + + mopidy = callPackage ./mopidy.nix { }; + + mopidy-gmusic = callPackage ./gmusic.nix { }; + + mopidy-local-images = callPackage ./local-images.nix { }; + + mopidy-local-sqlite = callPackage ./local-sqlite.nix { }; + + mopidy-spotify = callPackage ./spotify.nix { }; + + mopidy-moped = callPackage ./moped.nix { }; + + mopidy-mopify = callPackage ./mopify.nix { }; + + mopidy-mpd = callPackage ./mpd.nix { }; + + mopidy-spotify-tunigo = callPackage ./spotify-tunigo.nix { }; + + mopidy-youtube = callPackage ./youtube.nix { }; + + mopidy-soundcloud = callPackage ./soundcloud.nix { }; + + mopidy-musicbox-webclient = callPackage ./musicbox-webclient.nix { }; + + mopidy-iris = callPackage ./iris.nix { }; - src = fetchFromGitHub { - owner = "mopidy"; - repo = "mopidy"; - rev = "v${version}"; - sha256 = "1qdflxr0an6l2m3j90h55bzyj7rjlkkwmxx945hwv8xi472rcgdj"; }; - nativeBuildInputs = [ wrapGAppsHook ]; - - buildInputs = with gst_all_1; [ - gst-plugins-base gst-plugins-good gst-plugins-ugly gst-plugins-bad - glib-networking gobject-introspection - ]; - - propagatedBuildInputs = with pythonPackages; [ - gst-python pygobject3 pykka tornado_4 requests setuptools - ] ++ stdenv.lib.optional (!stdenv.isDarwin) dbus-python; - - # There are no tests - doCheck = false; - - preFixup = '' - gappsWrapperArgs+=(--prefix GST_PLUGIN_SYSTEM_PATH : "$GST_PLUGIN_SYSTEM_PATH") - ''; - - meta = with stdenv.lib; { - homepage = https://www.mopidy.com/; - description = '' - An extensible music server that plays music from local disk, Spotify, - SoundCloud, Google Play Music, and more - ''; - license = licenses.asl20; - maintainers = [ maintainers.fpletz ]; - hydraPlatforms = []; - }; -} +in self diff --git a/pkgs/applications/audio/mopidy/gmusic.nix b/pkgs/applications/audio/mopidy/gmusic.nix index 8c173140efd..3dea9156f8f 100644 --- a/pkgs/applications/audio/mopidy/gmusic.nix +++ b/pkgs/applications/audio/mopidy/gmusic.nix @@ -19,7 +19,7 @@ pythonPackages.buildPythonApplication rec { doCheck = false; meta = with stdenv.lib; { - homepage = https://www.mopidy.com/; + homepage = "https://www.mopidy.com/"; description = "Mopidy extension for playing music from Google Play Music"; license = licenses.asl20; maintainers = [ maintainers.jgillich ]; diff --git a/pkgs/applications/audio/mopidy/iris.nix b/pkgs/applications/audio/mopidy/iris.nix index 88cdde2ceb2..2badfd6a0b1 100644 --- a/pkgs/applications/audio/mopidy/iris.nix +++ b/pkgs/applications/audio/mopidy/iris.nix @@ -1,18 +1,17 @@ -{ stdenv, pythonPackages, mopidy, mopidy-local-images }: +{ stdenv, python3Packages, mopidy, mopidy-local-images }: -pythonPackages.buildPythonApplication rec { +python3Packages.buildPythonApplication rec { pname = "Mopidy-Iris"; - version = "3.43.0"; + version = "3.46.0"; - src = pythonPackages.fetchPypi { + src = python3Packages.fetchPypi { inherit pname version; - sha256 = "1qg9xyjf27dp0810h4kdliyfb8r3kvi37lq8r93d01xwfphdzs05"; + sha256 = "0c7b6zbcj4bq5qsxvhjwqclrl1k2hs3wb50pfjbw7gs7m3gm2b7d"; }; propagatedBuildInputs = [ mopidy - mopidy-local-images - ] ++ (with pythonPackages; [ + ] ++ (with python3Packages; [ configobj requests tornado_4 @@ -22,7 +21,7 @@ pythonPackages.buildPythonApplication rec { doCheck = false; meta = with stdenv.lib; { - homepage = https://github.com/jaedb/Iris; + homepage = "https://github.com/jaedb/Iris"; description = "A fully-functional Mopidy web client encompassing Spotify and many other backends"; license = licenses.asl20; maintainers = [ maintainers.rvolosatovs ]; diff --git a/pkgs/applications/audio/mopidy/local-images.nix b/pkgs/applications/audio/mopidy/local-images.nix index 2ffc736572b..085fe855e8a 100644 --- a/pkgs/applications/audio/mopidy/local-images.nix +++ b/pkgs/applications/audio/mopidy/local-images.nix @@ -24,7 +24,7 @@ pythonPackages.buildPythonApplication rec { ]; meta = with stdenv.lib; { - homepage = https://github.com/mopidy/mopidy-local-images; + homepage = "https://github.com/mopidy/mopidy-local-images"; description = "Mopidy local library proxy extension for handling embedded album art"; license = licenses.asl20; maintainers = [ maintainers.rvolosatovs ]; diff --git a/pkgs/applications/audio/mopidy/local-sqlite.nix b/pkgs/applications/audio/mopidy/local-sqlite.nix index 6d0cc370ff3..23e01c02a0f 100644 --- a/pkgs/applications/audio/mopidy/local-sqlite.nix +++ b/pkgs/applications/audio/mopidy/local-sqlite.nix @@ -17,7 +17,7 @@ pythonPackages.buildPythonApplication rec { ]; meta = with stdenv.lib; { - homepage = https://github.com/mopidy/mopidy-local-sqlite; + homepage = "https://github.com/mopidy/mopidy-local-sqlite"; description = "Mopidy SQLite local library extension"; license = licenses.asl20; maintainers = [ maintainers.rvolosatovs ]; diff --git a/pkgs/applications/audio/mopidy/moped.nix b/pkgs/applications/audio/mopidy/moped.nix index d41fb12ae8d..ffd9af76d17 100644 --- a/pkgs/applications/audio/mopidy/moped.nix +++ b/pkgs/applications/audio/mopidy/moped.nix @@ -17,7 +17,7 @@ pythonPackages.buildPythonApplication rec { doCheck = false; meta = with stdenv.lib; { - homepage = https://github.com/martijnboland/moped; + homepage = "https://github.com/martijnboland/moped"; description = "A web client for Mopidy"; license = licenses.mit; maintainers = []; diff --git a/pkgs/applications/audio/mopidy/mopidy.nix b/pkgs/applications/audio/mopidy/mopidy.nix new file mode 100644 index 00000000000..ae65d9b2f6e --- /dev/null +++ b/pkgs/applications/audio/mopidy/mopidy.nix @@ -0,0 +1,44 @@ +{ stdenv, fetchFromGitHub, pythonPackages, wrapGAppsHook +, gst_all_1, glib-networking, gobject-introspection +}: + +pythonPackages.buildPythonApplication rec { + pname = "mopidy"; + version = "3.0.2"; + + src = fetchFromGitHub { + owner = "mopidy"; + repo = "mopidy"; + rev = "v${version}"; + sha256 = "1n9lpgq0p112cjgsrc1cd6mnffk56y36g2c5skk9cqzw27qrkd15"; + }; + + nativeBuildInputs = [ wrapGAppsHook ]; + + buildInputs = with gst_all_1; [ + gst-plugins-base gst-plugins-good gst-plugins-ugly gst-plugins-bad + glib-networking gobject-introspection + ]; + + propagatedBuildInputs = with pythonPackages; [ + gst-python pygobject3 pykka tornado_4 requests setuptools + ] ++ stdenv.lib.optional (!stdenv.isDarwin) dbus-python; + + # There are no tests + doCheck = false; + + preFixup = '' + gappsWrapperArgs+=(--prefix GST_PLUGIN_SYSTEM_PATH : "$GST_PLUGIN_SYSTEM_PATH") + ''; + + meta = with stdenv.lib; { + homepage = "https://www.mopidy.com/"; + description = '' + An extensible music server that plays music from local disk, Spotify, + SoundCloud, Google Play Music, and more + ''; + license = licenses.asl20; + maintainers = [ maintainers.fpletz ]; + hydraPlatforms = []; + }; +} diff --git a/pkgs/applications/audio/mopidy/mopify.nix b/pkgs/applications/audio/mopidy/mopify.nix index b657f69e26e..a9902ca4172 100644 --- a/pkgs/applications/audio/mopidy/mopify.nix +++ b/pkgs/applications/audio/mopidy/mopify.nix @@ -15,7 +15,7 @@ pythonPackages.buildPythonApplication rec { doCheck = false; meta = with stdenv.lib; { - homepage = https://github.com/dirkgroenen/mopidy-mopify; + homepage = "https://github.com/dirkgroenen/mopidy-mopify"; description = "A mopidy webclient based on the Spotify webbased interface"; license = licenses.gpl3; maintainers = [ maintainers.Gonzih ]; diff --git a/pkgs/applications/audio/mopidy/mpd.nix b/pkgs/applications/audio/mopidy/mpd.nix new file mode 100644 index 00000000000..4dd32ea3aa3 --- /dev/null +++ b/pkgs/applications/audio/mopidy/mpd.nix @@ -0,0 +1,24 @@ +{ stdenv, python3Packages, mopidy }: + +python3Packages.buildPythonApplication rec { + pname = "Mopidy-MPD"; + version = "3.0.0"; + + src = python3Packages.fetchPypi { + inherit pname version; + sha256 = "0prjli4352521igcsfcgmk97jmzgbfy4ik8hnli37wgvv252wiac"; + }; + + propagatedBuildInputs = [mopidy]; + + # no tests implemented + doCheck = false; + pythonImportsCheck = [ "mopidy_mpd" ]; + + meta = with stdenv.lib; { + homepage = "https://github.com/mopidy/mopidy-mpd"; + description = "Mopidy extension for controlling playback from MPD clients"; + license = licenses.asl20; + maintainers = [ maintainers.tomahna ]; + }; +} diff --git a/pkgs/applications/audio/mopidy/spotify.nix b/pkgs/applications/audio/mopidy/spotify.nix index 483852455aa..32019c74f86 100644 --- a/pkgs/applications/audio/mopidy/spotify.nix +++ b/pkgs/applications/audio/mopidy/spotify.nix @@ -2,11 +2,11 @@ pythonPackages.buildPythonApplication rec { pname = "mopidy-spotify"; - version = "3.1.0"; + version = "4.0.1"; src = fetchurl { url = "https://github.com/mopidy/mopidy-spotify/archive/v${version}.tar.gz"; - sha256 = "1mh87w4j0ypvsrnax7kkjgfxfpnw3l290jvfzg56b8qlwf20khjl"; + sha256 = "1ac8r8050i5r3ag1hlblbcyskqjqz7wgamndbzsmw52qi6hxk44f"; }; propagatedBuildInputs = [ mopidy pythonPackages.pyspotify ]; @@ -14,7 +14,7 @@ pythonPackages.buildPythonApplication rec { doCheck = false; meta = with stdenv.lib; { - homepage = https://www.mopidy.com/; + homepage = "https://www.mopidy.com/"; description = "Mopidy extension for playing music from Spotify"; license = licenses.asl20; maintainers = []; diff --git a/pkgs/applications/audio/mp3blaster/default.nix b/pkgs/applications/audio/mp3blaster/default.nix index 727133be78d..2943a31454a 100644 --- a/pkgs/applications/audio/mp3blaster/default.nix +++ b/pkgs/applications/audio/mp3blaster/default.nix @@ -21,7 +21,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "An audio player for the text console"; - homepage = http://www.mp3blaster.org/; + homepage = "http://www.mp3blaster.org/"; license = licenses.gpl2; maintainers = with maintainers; [ earldouglas ]; platforms = platforms.all; diff --git a/pkgs/applications/audio/mp3gain/default.nix b/pkgs/applications/audio/mp3gain/default.nix index 233aebfa147..f2b4564c7cc 100644 --- a/pkgs/applications/audio/mp3gain/default.nix +++ b/pkgs/applications/audio/mp3gain/default.nix @@ -19,7 +19,7 @@ stdenv.mkDerivation { meta = { description = "Lossless mp3 normalizer with statistical analysis"; - homepage = http://mp3gain.sourceforge.net/; + homepage = "http://mp3gain.sourceforge.net/"; license = stdenv.lib.licenses.lgpl21; platforms = stdenv.lib.platforms.linux; maintainers = [ stdenv.lib.maintainers.devhell ]; diff --git a/pkgs/applications/audio/mp3info/default.nix b/pkgs/applications/audio/mp3info/default.nix index 6700f21fc8c..69ca271d27d 100644 --- a/pkgs/applications/audio/mp3info/default.nix +++ b/pkgs/applications/audio/mp3info/default.nix @@ -35,7 +35,7 @@ stdenv.mkDerivation rec { other attributes in a pre-defined or user-specifiable output format. ''; - homepage = http://www.ibiblio.org/mp3info/; + homepage = "http://www.ibiblio.org/mp3info/"; license = stdenv.lib.licenses.gpl2Plus; diff --git a/pkgs/applications/audio/mp3splt/default.nix b/pkgs/applications/audio/mp3splt/default.nix index f067c5af6df..323854575ea 100644 --- a/pkgs/applications/audio/mp3splt/default.nix +++ b/pkgs/applications/audio/mp3splt/default.nix @@ -18,7 +18,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Utility to split mp3, ogg vorbis and FLAC files without decoding"; - homepage = https://sourceforge.net/projects/mp3splt/; + homepage = "https://sourceforge.net/projects/mp3splt/"; license = licenses.gpl2; maintainers = [ maintainers.bosu ]; platforms = platforms.unix; diff --git a/pkgs/applications/audio/mp3val/default.nix b/pkgs/applications/audio/mp3val/default.nix index 6c35779f6c4..636fb7d9b9a 100644 --- a/pkgs/applications/audio/mp3val/default.nix +++ b/pkgs/applications/audio/mp3val/default.nix @@ -29,7 +29,7 @@ stdenv.mkDerivation rec { also other MPEG versions and layers. The tool is also aware of the most common types of tags (ID3v1, ID3v2, APEv2). ''; - homepage = http://mp3val.sourceforge.net/index.shtml; + homepage = "http://mp3val.sourceforge.net/index.shtml"; license = stdenv.lib.licenses.gpl2; platforms = stdenv.lib.platforms.unix; maintainers = [ stdenv.lib.maintainers.devhell ]; diff --git a/pkgs/applications/audio/mpc/default.nix b/pkgs/applications/audio/mpc/default.nix index 1e8d73ce560..a226b720df9 100644 --- a/pkgs/applications/audio/mpc/default.nix +++ b/pkgs/applications/audio/mpc/default.nix @@ -17,7 +17,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "A minimalist command line interface to MPD"; - homepage = https://www.musicpd.org/clients/mpc/; + homepage = "https://www.musicpd.org/clients/mpc/"; license = licenses.gpl2; maintainers = with maintainers; [ algorith ]; platforms = with platforms; linux ++ darwin; diff --git a/pkgs/applications/audio/mpc123/default.nix b/pkgs/applications/audio/mpc123/default.nix index f024e5a6a1d..ef5cb169a2c 100644 --- a/pkgs/applications/audio/mpc123/default.nix +++ b/pkgs/applications/audio/mpc123/default.nix @@ -21,7 +21,7 @@ stdenv.mkDerivation rec { ''; meta = { - homepage = http://mpc123.sourceforge.net/; + homepage = "http://mpc123.sourceforge.net/"; description = "A Musepack (.mpc) audio player"; diff --git a/pkgs/applications/audio/mpg123/default.nix b/pkgs/applications/audio/mpg123/default.nix index 6c4b9a43176..53e66e580da 100644 --- a/pkgs/applications/audio/mpg123/default.nix +++ b/pkgs/applications/audio/mpg123/default.nix @@ -18,7 +18,7 @@ stdenv.mkDerivation rec { meta = { description = "Fast console MPEG Audio Player and decoder library"; - homepage = http://mpg123.org; + homepage = "http://mpg123.org"; license = stdenv.lib.licenses.lgpl21; maintainers = [ stdenv.lib.maintainers.ftrvxmtrx ]; platforms = stdenv.lib.platforms.unix; diff --git a/pkgs/applications/audio/mpg321/default.nix b/pkgs/applications/audio/mpg321/default.nix index fdefcf7e77d..63b8e2d867a 100644 --- a/pkgs/applications/audio/mpg321/default.nix +++ b/pkgs/applications/audio/mpg321/default.nix @@ -31,11 +31,11 @@ stdenv.mkDerivation rec { buildInputs = [libao libid3tag libmad zlib] ++ stdenv.lib.optional stdenv.isLinux alsaLib; - installTargets = "install install-man"; + installTargets = [ "install" "install-man" ]; meta = with stdenv.lib; { description = "Command-line MP3 player"; - homepage = http://mpg321.sourceforge.net/; + homepage = "http://mpg321.sourceforge.net/"; license = licenses.gpl2; maintainers = [ maintainers.rycee ]; platforms = platforms.gnu ++ platforms.linux; diff --git a/pkgs/applications/audio/mup/default.nix b/pkgs/applications/audio/mup/default.nix new file mode 100644 index 00000000000..347cddca856 --- /dev/null +++ b/pkgs/applications/audio/mup/default.nix @@ -0,0 +1,41 @@ +{ stdenv, fetchurl, autoreconfHook, bison, flex, ghostscript, groff, netpbm +, fltk, libXinerama, libXpm, libjpeg +}: + +stdenv.mkDerivation rec { + pname = "mup"; + version = "6.7"; + + src = fetchurl { + url = "http://www.arkkra.com/ftp/pub/unix/mup${builtins.replaceStrings ["."] [""] version}src.tar.gz"; + sha256 = "1y1qknhib1isdjsbv833w3nxzyfljkfgp1gmjwly60l55q60frpk"; + }; + + nativeBuildInputs = [ autoreconfHook bison flex ghostscript groff netpbm ]; + + buildInputs = [ fltk libXinerama libXpm libjpeg ]; + + patches = [ ./ghostscript-permit-file-write.patch ]; + + postPatch = '' + for f in Makefile.am doc/Makefile.am doc/htmldocs/Makefile.am src/mupmate/Preferences.C; do + substituteInPlace $f --replace doc/packages doc + done + substituteInPlace src/mupprnt/mupprnt --replace 'mup ' $out/bin/mup' ' + substituteInPlace src/mupdisp/genfile.c --replace '"mup"' '"'$out/bin/mup'"' + substituteInPlace src/mupmate/Preferences.C \ + --replace '"mup"' '"'$out/bin/mup'"' \ + --replace '"gv"' '"xdg-open"' \ + --replace /usr/share/doc $out/share/doc + ''; + + enableParallelBuilding = false; # Undeclared dependencies + https://stackoverflow.com/a/19822767/1687334 for prolog.ps. + + meta = with stdenv.lib; { + homepage = "http://www.arkkra.com/"; + description = "Music typesetting program (ASCII to PostScript and MIDI)"; + license = licenses.bsd3; + maintainers = with maintainers; [ orivej ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/applications/audio/mup/ghostscript-permit-file-write.patch b/pkgs/applications/audio/mup/ghostscript-permit-file-write.patch new file mode 100644 index 00000000000..5059e71001f --- /dev/null +++ b/pkgs/applications/audio/mup/ghostscript-permit-file-write.patch @@ -0,0 +1,5 @@ +--- a/src/mup/Makefile.am ++++ b/src/mup/Makefile.am +@@ -39 +39 @@ fontdata.c: prolog.ps ../../tools/mup/getfontinfo.ps ../../LICENSE +- $(GS) -sDEVICE=nullpage -sOutputFile=/dev/null -dQUIET - < ../../tools/mup/getfontinfo.ps | $(SED) -e "/Warning:/d" >> fontdata.c ++ $(GS) -sDEVICE=nullpage -sOutputFile=/dev/null -dQUIET --permit-file-write=charnames:fontinit - < ../../tools/mup/getfontinfo.ps | $(SED) -e "/Warning:/d" >> fontdata.c diff --git a/pkgs/applications/audio/muse/default.nix b/pkgs/applications/audio/muse/default.nix index 372c8faf773..87f86306b48 100644 --- a/pkgs/applications/audio/muse/default.nix +++ b/pkgs/applications/audio/muse/default.nix @@ -1,24 +1,33 @@ -{ stdenv -, fetchFromGitHub -, libjack2 -, qt5 -, cmake -, libsndfile -, libsamplerate -, ladspaH -, fluidsynth -, alsaLib -, rtaudio -, lash -, dssi -, liblo -, pkgconfig -, gitAndTools +{ stdenv, fetchFromGitHub, cmake, pkgconfig, qttools, wrapQtAppsHook +, alsaLib, dssi, fluidsynth, ladspaH, lash, libinstpatch, libjack2, liblo +, libsamplerate, libsndfile, lilv, lrdf, lv2, qtsvg, rtaudio, rubberband, sord }: -stdenv.mkDerivation { +stdenv.mkDerivation rec { pname = "muse-sequencer"; - version = "3.1pre1"; + version = "3.1.0"; + + src = fetchFromGitHub { + owner = "muse-sequencer"; + repo = "muse"; + rev = "muse_${builtins.replaceStrings ["."] ["_"] version}"; + sha256 = "08k25652w88xf2i79lw305x1phpk7idrww9jkqwcs8q6wzgmz8aq"; + }; + + sourceRoot = "source/muse3"; + + prePatch = '' + chmod u+w $NIX_BUILD_TOP + ''; + + patches = [ ./fix-parallel-building.patch ]; + + nativeBuildInputs = [ cmake pkgconfig qttools wrapQtAppsHook ]; + + buildInputs = [ + alsaLib dssi fluidsynth ladspaH lash libinstpatch libjack2 liblo + libsamplerate libsndfile lilv lrdf lv2 qtsvg rtaudio rubberband sord + ]; meta = with stdenv.lib; { homepage = "https://www.muse-sequencer.org/"; @@ -31,49 +40,7 @@ stdenv.mkDerivation { MusE aims to be a complete multitrack virtual studio for Linux, it is published under the GNU General Public License. ''; - license = stdenv.lib.licenses.gpl2; + license = licenses.gpl2Plus; + maintainers = with maintainers; [ orivej ]; }; - - src = - fetchFromGitHub { - owner = "muse-sequencer"; - repo = "muse"; - rev = "2167ae053c16a633d8377acdb1debaac10932838"; - sha256 = "0rsdx8lvcbz5bapnjvypw8h8bq587s9z8cf2znqrk6ah38s6fsrf"; - }; - - - nativeBuildInputs = [ - pkgconfig - gitAndTools.gitFull - ]; - - buildInputs = [ - libjack2 - qt5.qtsvg - qt5.qttools - cmake - libsndfile - libsamplerate - ladspaH - fluidsynth - alsaLib - rtaudio - lash - dssi - liblo - ]; - - sourceRoot = "source/muse3"; - - buildPhase = '' - cd .. - bash compile_muse.sh - ''; - - installPhase = '' - mkdir $out - cd build - make install - ''; } diff --git a/pkgs/applications/audio/muse/fix-parallel-building.patch b/pkgs/applications/audio/muse/fix-parallel-building.patch new file mode 100644 index 00000000000..a11970b7111 --- /dev/null +++ b/pkgs/applications/audio/muse/fix-parallel-building.patch @@ -0,0 +1,93 @@ +To confirm these dependencies, run in a fresh build tree: + + +ninja muse/components/CMakeFiles/components.dir/confmport.o + +In file included from ../muse/components/confmport.cpp:48: +../muse/mplugins/midifilterimpl.h:28:10: fatal error: +ui_midifilter.h: No such file or directory + + +ninja muse/waveedit/CMakeFiles/waveedit.dir/wavecanvas.o + +In file included from ../muse/waveedit/wavecanvas.cpp:72: +../muse/components/copy_on_write.h:26:10: fatal error: +ui_copy_on_write_base.h: No such file or directory + + +ninja muse/instruments/CMakeFiles/instruments.dir/editinstrument.o + +In file included from ../muse/instruments/editinstrument.cpp:58: +../muse/components/editevent.h:26:10: fatal error: +ui_editnotedialogbase.h: No such file or directory + + +ninja muse/liste/CMakeFiles/liste.dir/listedit.o + +In file included from ../muse/liste/listedit.cpp:37: +../muse/components/editevent.h:26:10: fatal error: +ui_editnotedialogbase.h: No such file or directory + + +ninja muse/mixer/CMakeFiles/mixer.dir/rack.o + +In file included from ../muse/mixer/rack.cpp:49: +../muse/components/plugindialog.h:4:10: fatal error: +ui_plugindialogbase.h: No such file or directory + + +ninja muse/midiedit/CMakeFiles/midiedit.dir/drumedit.o + +In file included from /build/source/muse3/muse/midiedit/drumedit.cpp:64: +/build/source/muse3/muse/components/filedialog.h:29:10: fatal error: +ui_fdialogbuttons.h: No such file or directory + + +--- a/muse/components/CMakeLists.txt ++++ b/muse/components/CMakeLists.txt +@@ -343,4 +343,5 @@ set_target_properties( components + target_link_libraries ( components + ${QT_LIBRARIES} ++ mplugins + widgets + xml_module +--- a/muse/waveedit/CMakeLists.txt ++++ b/muse/waveedit/CMakeLists.txt +@@ -79,4 +79,5 @@ set_target_properties( waveedit + target_link_libraries( waveedit + ${QT_LIBRARIES} ++ components + widgets + ) +--- a/muse/instruments/CMakeLists.txt ++++ b/muse/instruments/CMakeLists.txt +@@ -78,4 +78,5 @@ set_target_properties( instruments + target_link_libraries ( instruments + ${QT_LIBRARIES} ++ components + icons + widgets +--- a/muse/liste/CMakeLists.txt ++++ b/muse/liste/CMakeLists.txt +@@ -65,4 +65,5 @@ set_target_properties( liste + target_link_libraries ( liste + ${QT_LIBRARIES} ++ components + awl + widgets +--- a/muse/mixer/CMakeLists.txt ++++ b/muse/mixer/CMakeLists.txt +@@ -87,4 +87,5 @@ set_target_properties ( mixer + target_link_libraries ( mixer + ${QT_LIBRARIES} ++ components + widgets + ) +--- a/muse/midiedit/CMakeLists.txt ++++ b/muse/midiedit/CMakeLists.txt +@@ -93,4 +93,5 @@ set_target_properties( midiedit + target_link_libraries ( midiedit + ${QT_LIBRARIES} ++ components + al + ctrl diff --git a/pkgs/applications/audio/musescore/darwin.nix b/pkgs/applications/audio/musescore/darwin.nix index 8b08aed62b8..8870a144c9f 100644 --- a/pkgs/applications/audio/musescore/darwin.nix +++ b/pkgs/applications/audio/musescore/darwin.nix @@ -25,10 +25,10 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Music notation and composition software"; - homepage = https://musescore.org/; + homepage = "https://musescore.org/"; license = licenses.gpl2; platforms = platforms.darwin; maintainers = with maintainers; [ yurrriq ]; - repositories.git = https://github.com/musescore/MuseScore; + repositories.git = "https://github.com/musescore/MuseScore"; }; } diff --git a/pkgs/applications/audio/musescore/default.nix b/pkgs/applications/audio/musescore/default.nix index 5368fcb6165..063a05a72f3 100644 --- a/pkgs/applications/audio/musescore/default.nix +++ b/pkgs/applications/audio/musescore/default.nix @@ -6,11 +6,11 @@ mkDerivation rec { pname = "musescore"; - version = "3.2.3"; + version = "3.4.2"; src = fetchzip { url = "https://github.com/musescore/MuseScore/releases/download/v${version}/MuseScore-${version}.zip"; - sha256 = "17mr0c8whw6vz86lp1j36rams4h8virc4z68fld0q3rpq6g05szs"; + sha256 = "1laskvp40dncs12brkgvk7wl0qrvzy52rn7nf3b67ps1vmd130gp"; stripRoot = false; }; @@ -31,10 +31,10 @@ mkDerivation rec { meta = with stdenv.lib; { description = "Music notation and composition software"; - homepage = https://musescore.org/; + homepage = "https://musescore.org/"; license = licenses.gpl2; - maintainers = with maintainers; [ vandenoever ]; + maintainers = with maintainers; [ vandenoever turion ]; platforms = platforms.linux; - repositories.git = https://github.com/musescore/MuseScore; + repositories.git = "https://github.com/musescore/MuseScore"; }; } diff --git a/pkgs/applications/audio/musescore/remove_qtwebengine_install_hack.patch b/pkgs/applications/audio/musescore/remove_qtwebengine_install_hack.patch index 53a0c90ce46..57a6092d585 100644 --- a/pkgs/applications/audio/musescore/remove_qtwebengine_install_hack.patch +++ b/pkgs/applications/audio/musescore/remove_qtwebengine_install_hack.patch @@ -1,12 +1,9 @@ ---- a/mscore/CMakeLists.txt -+++ b/mscore/CMakeLists.txt -@@ -660,22 +660,6 @@ if (MINGW) - else (MINGW) - - if ( NOT MSVC ) --## install qwebengine core +--- a/main/CMakeLists.txt ++++ b/main/CMakeLists.txt +@@ -220,16 +219,0 @@ else (MINGW) +- ## install qwebengine core - if (NOT APPLE AND USE_WEBENGINE) -- install(FILES +- install(PROGRAMS - ${QT_INSTALL_LIBEXECS}/QtWebEngineProcess - DESTINATION bin - ) @@ -20,6 +17,3 @@ - ) - endif(NOT APPLE AND USE_WEBENGINE) - - target_link_libraries(mscore - ${ALSA_LIB} - ${QT_LIBRARIES} diff --git a/pkgs/applications/audio/musly/default.nix b/pkgs/applications/audio/musly/default.nix index e7a9e22c2d6..b1e8822cdcf 100644 --- a/pkgs/applications/audio/musly/default.nix +++ b/pkgs/applications/audio/musly/default.nix @@ -17,7 +17,7 @@ stdenv.mkDerivation { '' else ""; meta = with stdenv.lib; { - homepage = https://www.musly.org; + homepage = "https://www.musly.org"; description = "A fast and high-quality audio music similarity library written in C/C++"; longDescription = '' Musly analyzes the the audio signal of music pieces to estimate their similarity. diff --git a/pkgs/applications/audio/ncmpc/default.nix b/pkgs/applications/audio/ncmpc/default.nix index 58eb5462ef8..c08e4f7f4ff 100644 --- a/pkgs/applications/audio/ncmpc/default.nix +++ b/pkgs/applications/audio/ncmpc/default.nix @@ -10,13 +10,13 @@ assert pcreSupport -> pcre != null; stdenv.mkDerivation rec { pname = "ncmpc"; - version = "0.36"; + version = "0.37"; src = fetchFromGitHub { owner = "MusicPlayerDaemon"; repo = "ncmpc"; rev = "v${version}"; - sha256 = "1ssmk1p43gjhcqi86sh6b7csqpwwpf3hs32cmnylv6pmbcwbs69h"; + sha256 = "1b0vd0h49kjg4nxjfjrcg8gzplz93ryr6xyfha2pvhlrzdd2d1lj"; }; buildInputs = [ glib ncurses mpd_clientlib boost ] @@ -30,7 +30,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Curses-based interface for MPD (music player daemon)"; - homepage = https://www.musicpd.org/clients/ncmpc/; + homepage = "https://www.musicpd.org/clients/ncmpc/"; license = licenses.gpl2Plus; platforms = platforms.all; maintainers = with maintainers; [ fpletz ]; diff --git a/pkgs/applications/audio/ncmpcpp/default.nix b/pkgs/applications/audio/ncmpcpp/default.nix index 2ba36b4a50d..f8adc522fcb 100644 --- a/pkgs/applications/audio/ncmpcpp/default.nix +++ b/pkgs/applications/audio/ncmpcpp/default.nix @@ -33,7 +33,7 @@ stdenv.mkDerivation rec { meta = { description = "A featureful ncurses based MPD client inspired by ncmpc"; - homepage = https://ncmpcpp.rybczak.net/; + homepage = "https://ncmpcpp.rybczak.net/"; license = licenses.gpl2Plus; maintainers = with maintainers; [ jfrankenau koral lovek323 ]; platforms = platforms.all; diff --git a/pkgs/applications/audio/ncpamixer/default.nix b/pkgs/applications/audio/ncpamixer/default.nix index 53ed9b3297c..32d8df2f048 100644 --- a/pkgs/applications/audio/ncpamixer/default.nix +++ b/pkgs/applications/audio/ncpamixer/default.nix @@ -25,7 +25,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "An ncurses mixer for PulseAudio inspired by pavucontrol"; - homepage = https://github.com/fulhax/ncpamixer; + homepage = "https://github.com/fulhax/ncpamixer"; license = licenses.mit; platforms = platforms.linux; maintainers = with maintainers; [ StijnDW ]; diff --git a/pkgs/applications/audio/ncspot/default.nix b/pkgs/applications/audio/ncspot/default.nix index 136f6fc1427..bee1065328a 100644 --- a/pkgs/applications/audio/ncspot/default.nix +++ b/pkgs/applications/audio/ncspot/default.nix @@ -2,26 +2,28 @@ , withALSA ? true, alsaLib ? null , withPulseAudio ? false, libpulseaudio ? null , withPortAudio ? false, portaudio ? null +, withMPRIS ? false, dbus ? null }: let features = [ "cursive/pancurses-backend" ] ++ lib.optional withALSA "alsa_backend" ++ lib.optional withPulseAudio "pulseaudio_backend" - ++ lib.optional withPortAudio "portaudio_backend"; + ++ lib.optional withPortAudio "portaudio_backend" + ++ lib.optional withMPRIS "mpris"; in rustPlatform.buildRustPackage rec { pname = "ncspot"; - version = "0.1.1"; + version = "0.1.3"; src = fetchFromGitHub { owner = "hrkfdn"; repo = "ncspot"; rev = "v${version}"; - sha256 = "0ldisr45w6ys1j62qv99ssqfg5q9dwrrzxh2maggyrx1zqdlsk6m"; + sha256 = "144a7wn5l64fhvj8vgwl7z4bp8lbq0pb0dl38x9y4wkqmdh6wrli"; }; - cargoSha256 = "0k765hinqxfm30li1z66m1chsv69v6hiz109q2zlkxzg937qbnjh"; + cargoSha256 = "19gn0v7j1ly3ywgflfj27pnrwjiiy17m3g1z0kzagxpjy2xi2qxy"; cargoBuildFlags = [ "--no-default-features" "--features" "${lib.concatStringsSep "," features}" ]; @@ -30,7 +32,8 @@ rustPlatform.buildRustPackage rec { buildInputs = [ ncurses openssl ] ++ lib.optional withALSA alsaLib ++ lib.optional withPulseAudio libpulseaudio - ++ lib.optional withPortAudio portaudio; + ++ lib.optional withPortAudio portaudio + ++ lib.optional withMPRIS dbus; doCheck = false; diff --git a/pkgs/applications/audio/netease-cloud-music/default.nix b/pkgs/applications/audio/netease-cloud-music/default.nix index 76dcba304a3..c4cc291d026 100644 --- a/pkgs/applications/audio/netease-cloud-music/default.nix +++ b/pkgs/applications/audio/netease-cloud-music/default.nix @@ -68,13 +68,12 @@ in stdenv.mkDerivation rec { wrapProgram $out/bin/netease-cloud-music \ --prefix LD_LIBRARY_PATH : "${runtimeLibs}" \ - --set QT_AUTO_SCREEN_SCALE_FACTOR 1 \ --set QCEF_INSTALL_PATH "${deepin.qcef}/lib/qcef" ''; meta = { description = "Client for Netease Cloud Music service"; - homepage = https://music.163.com; + homepage = "https://music.163.com"; platforms = [ "i686-linux" "x86_64-linux" ]; maintainers = [ stdenv.lib.maintainers.mlatus ]; license = stdenv.lib.licenses.unfreeRedistributable; diff --git a/pkgs/applications/audio/noise-repellent/default.nix b/pkgs/applications/audio/noise-repellent/default.nix index 146e13f34de..3b2f233c6af 100644 --- a/pkgs/applications/audio/noise-repellent/default.nix +++ b/pkgs/applications/audio/noise-repellent/default.nix @@ -2,13 +2,13 @@ stdenv.mkDerivation rec { pname = "noise-repellent"; - version = "unstable-2018-12-29"; + version = "0.1.5"; src = fetchFromGitHub { owner = "lucianodato"; repo = pname; - rev = "9efdd0b41ec184a792087c87cbf5382f455e33ec"; - sha256 = "0pn9cxapfvb5l62q86bchyfll1290vi0rhrzarb1jpc4ix7kz53c"; + rev = version; + sha256 = "0hb89x9i2knzan46q4nwscf5zmnb2nwf4w13xl2c0y1mx1ls1mwl"; fetchSubmodules = true; }; @@ -21,7 +21,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "An lv2 plugin for broadband noise reduction"; - homepage = https://github.com/lucianodato/noise-repellent; + homepage = "https://github.com/lucianodato/noise-repellent"; license = licenses.gpl3; maintainers = [ maintainers.magnetophon ]; platforms = [ "x86_64-linux" "i686-linux" "x86_64-darwin" "i686-darwin" ]; diff --git a/pkgs/applications/audio/non/default.nix b/pkgs/applications/audio/non/default.nix index 5f8c82b98d0..9b4b147c230 100644 --- a/pkgs/applications/audio/non/default.nix +++ b/pkgs/applications/audio/non/default.nix @@ -1,5 +1,5 @@ { stdenv, fetchFromGitHub, pkgconfig, python2, cairo, libjpeg, ntk, libjack2 -, libsndfile, ladspaH, liblrdf, liblo, libsigcxx, wafHook +, libsndfile, ladspaH, liblo, libsigcxx, lrdf, wafHook }: stdenv.mkDerivation { @@ -14,12 +14,12 @@ stdenv.mkDerivation { nativeBuildInputs = [ pkgconfig wafHook ]; buildInputs = [ python2 cairo libjpeg ntk libjack2 libsndfile - ladspaH liblrdf liblo libsigcxx + ladspaH liblo libsigcxx lrdf ]; meta = { description = "Lightweight and lightning fast modular Digital Audio Workstation"; - homepage = http://non.tuxfamily.org; + homepage = "http://non.tuxfamily.org"; license = stdenv.lib.licenses.lgpl21; platforms = stdenv.lib.platforms.linux; maintainers = [ stdenv.lib.maintainers.nico202 ]; diff --git a/pkgs/applications/audio/nootka/default.nix b/pkgs/applications/audio/nootka/default.nix new file mode 100644 index 00000000000..b0d4843aecd --- /dev/null +++ b/pkgs/applications/audio/nootka/default.nix @@ -0,0 +1,31 @@ +{ stdenv, fetchurl, cmake +, alsaLib, fftwSinglePrec, libjack2, libpulseaudio, libvorbis, soundtouch, qtbase +}: + +stdenv.mkDerivation rec { + name = "nootka-1.4.7"; + + src = fetchurl { + url = "mirror://sourceforge/nootka/${name}-source.tar.bz2"; + sha256 = "1y9wlwri74v2z9dwbcfjs7xri54yra24vpwq19xi2lfv1nbs518x"; + }; + + nativeBuildInputs = [ cmake ]; + buildInputs = [ + alsaLib fftwSinglePrec libjack2 libpulseaudio libvorbis soundtouch qtbase + ]; + + cmakeFlags = [ + "-DCMAKE_INCLUDE_PATH=${libjack2}/include/jack;${libpulseaudio.dev}/include/pulse" + "-DENABLE_JACK=ON" + "-DENABLE_PULSEAUDIO=ON" + ]; + + meta = with stdenv.lib; { + description = "Application for practicing playing musical scores and ear training"; + homepage = "https://nootka.sourceforge.io/"; + license = licenses.gpl3Plus; + maintainers = with maintainers; [ orivej ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/applications/audio/nootka/unstable.nix b/pkgs/applications/audio/nootka/unstable.nix new file mode 100644 index 00000000000..16df55c1dfb --- /dev/null +++ b/pkgs/applications/audio/nootka/unstable.nix @@ -0,0 +1,33 @@ +{ stdenv, fetchurl, cmake +, alsaLib, fftwSinglePrec, libjack2, libpulseaudio, libvorbis, soundtouch +, qtbase, qtdeclarative, qtquickcontrols2 +}: + +stdenv.mkDerivation rec { + name = "nootka-1.7.0-beta1"; + + src = fetchurl { + url = "mirror://sourceforge/nootka/${name}-source.tar.bz2"; + sha256 = "13b50vnpr1zx2mrgkc8fmhsyfa19rqq1rksvn31145dy6fk1f3gc"; + }; + + nativeBuildInputs = [ cmake ]; + buildInputs = [ + alsaLib fftwSinglePrec libjack2 libpulseaudio libvorbis soundtouch + qtbase qtdeclarative qtquickcontrols2 + ]; + + cmakeFlags = [ + "-DCMAKE_INCLUDE_PATH=${libjack2}/include/jack;${libpulseaudio.dev}/include/pulse" + "-DENABLE_JACK=ON" + "-DENABLE_PULSEAUDIO=ON" + ]; + + meta = with stdenv.lib; { + description = "Application for practicing playing musical scores and ear training"; + homepage = "https://nootka.sourceforge.io/"; + license = licenses.gpl3Plus; + maintainers = with maintainers; [ orivej ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/applications/audio/normalize/default.nix b/pkgs/applications/audio/normalize/default.nix index 490ecc967bb..0aa26411693 100644 --- a/pkgs/applications/audio/normalize/default.nix +++ b/pkgs/applications/audio/normalize/default.nix @@ -12,7 +12,7 @@ stdenv.mkDerivation rec { buildInputs = [ libmad ]; meta = with stdenv.lib; { - homepage = https://www.nongnu.org/normalize/; + homepage = "https://www.nongnu.org/normalize/"; description = "Audio file normalizer"; license = licenses.gpl2; platforms = platforms.unix; diff --git a/pkgs/applications/audio/nova-filters/default.nix b/pkgs/applications/audio/nova-filters/default.nix index 0bb970500bd..bc5a3efc59a 100644 --- a/pkgs/applications/audio/nova-filters/default.nix +++ b/pkgs/applications/audio/nova-filters/default.nix @@ -5,7 +5,7 @@ stdenv.mkDerivation { pname = "nova-filters"; src = fetchurl { - url = https://klingt.org/~tim/nova-filters/nova-filters_0.2-2.tar.gz; + url = "https://klingt.org/~tim/nova-filters/nova-filters_0.2-2.tar.gz"; sha256 = "16064vvl2w5lz4xi3lyjk4xx7fphwsxc14ajykvndiz170q32s6i"; }; @@ -23,7 +23,7 @@ stdenv.mkDerivation { meta = with stdenv.lib; { description = "LADSPA plugins based on filters of nova"; - homepage = http://klingt.org/~tim/nova-filters/; + homepage = "http://klingt.org/~tim/nova-filters/"; license = licenses.gpl2Plus; maintainers = [ maintainers.magnetophon ]; platforms = platforms.linux; diff --git a/pkgs/applications/audio/openmpt123/default.nix b/pkgs/applications/audio/openmpt123/default.nix index 08c5c1a5c36..aebc7dc7baa 100644 --- a/pkgs/applications/audio/openmpt123/default.nix +++ b/pkgs/applications/audio/openmpt123/default.nix @@ -2,14 +2,14 @@ , usePulseAudio ? config.pulseaudio or false, libpulseaudio }: let - version = "0.4.9"; + version = "0.4.11"; in stdenv.mkDerivation { pname = "openmpt123"; inherit version; src = fetchurl { url = "https://lib.openmpt.org/files/libopenmpt/src/libopenmpt-${version}+release.autotools.tar.gz"; - sha256 = "02kjwwh9d9i4rnfzqzr18pvcklc46yrs9mvdmjqx7kxg3c28hkqm"; + sha256 = "1g96bpwh419s429wb387lkmhjsn3ldsjrzrb8h9p3wva5z6943i6"; }; enableParallelBuilding = true; @@ -19,11 +19,11 @@ in stdenv.mkDerivation { buildInputs = [ zlib mpg123 libogg libvorbis portaudio libsndfile flac ] ++ stdenv.lib.optional usePulseAudio libpulseaudio; - configureFlags = stdenv.lib.optional (!usePulseAudio) [ "--without-pulseaudio" ]; + configureFlags = stdenv.lib.optional (!usePulseAudio) "--without-pulseaudio"; meta = with stdenv.lib; { description = "A cross-platform command-line based module file player"; - homepage = https://lib.openmpt.org/libopenmpt/; + homepage = "https://lib.openmpt.org/libopenmpt/"; license = licenses.bsd3; maintainers = with maintainers; [ gnidorah ]; platforms = platforms.linux; diff --git a/pkgs/applications/audio/opus-tools/default.nix b/pkgs/applications/audio/opus-tools/default.nix index 69fa75d85f4..9d95c362d92 100644 --- a/pkgs/applications/audio/opus-tools/default.nix +++ b/pkgs/applications/audio/opus-tools/default.nix @@ -12,7 +12,7 @@ stdenv.mkDerivation rec { meta = { description = "Tools to work with opus encoded audio streams"; - homepage = http://www.opus-codec.org/; + homepage = "http://www.opus-codec.org/"; license = stdenv.lib.licenses.bsd2; maintainers = with stdenv.lib.maintainers; [ ]; platforms = with stdenv.lib.platforms; unix; diff --git a/pkgs/applications/audio/opusfile/default.nix b/pkgs/applications/audio/opusfile/default.nix index 25636863793..c09b3f415d8 100644 --- a/pkgs/applications/audio/opusfile/default.nix +++ b/pkgs/applications/audio/opusfile/default.nix @@ -15,7 +15,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "High-level API for decoding and seeking in .opus files"; - homepage = http://www.opus-codec.org/; + homepage = "http://www.opus-codec.org/"; license = licenses.bsd3; platforms = platforms.linux ++ platforms.darwin; maintainers = with maintainers; [ ]; diff --git a/pkgs/applications/audio/padthv1/default.nix b/pkgs/applications/audio/padthv1/default.nix index 6d97a2da739..911bb4c8c77 100644 --- a/pkgs/applications/audio/padthv1/default.nix +++ b/pkgs/applications/audio/padthv1/default.nix @@ -2,11 +2,11 @@ mkDerivation rec { pname = "padthv1"; - version = "0.9.11"; + version = "0.9.13"; src = fetchurl { url = "mirror://sourceforge/padthv1/${pname}-${version}.tar.gz"; - sha256 = "02yfwyirjqxa075yqdnci9b9k57kdmkjvn9gnpdbnjp887pds76g"; + sha256 = "1c1zllph86qswcxddz4vpsj6r9w21hbv4gkba0pyd3q7pbfqr7nz"; }; buildInputs = [ libjack2 alsaLib libsndfile liblo lv2 qt5.qtbase qt5.qttools fftw ]; @@ -15,7 +15,7 @@ mkDerivation rec { meta = with stdenv.lib; { description = "polyphonic additive synthesizer"; - homepage = http://padthv1.sourceforge.net/; + homepage = "http://padthv1.sourceforge.net/"; license = licenses.gpl2Plus; platforms = platforms.linux; maintainers = [ maintainers.magnetophon ]; diff --git a/pkgs/applications/audio/pamix/default.nix b/pkgs/applications/audio/pamix/default.nix index 2507f08e9e5..cc5d84d9471 100644 --- a/pkgs/applications/audio/pamix/default.nix +++ b/pkgs/applications/audio/pamix/default.nix @@ -22,7 +22,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Pulseaudio terminal mixer"; - homepage = https://github.com/patroclos/PAmix; + homepage = "https://github.com/patroclos/PAmix"; license = licenses.mit; platforms = platforms.linux; maintainers = with maintainers; [ ericsagnes ]; diff --git a/pkgs/applications/audio/pamixer/default.nix b/pkgs/applications/audio/pamixer/default.nix index 7c452096785..71d85248599 100644 --- a/pkgs/applications/audio/pamixer/default.nix +++ b/pkgs/applications/audio/pamixer/default.nix @@ -28,7 +28,7 @@ stdenv.mkDerivation rec { - Increase / Decrease the volume for a device - Mute or unmute a device ''; - homepage = https://github.com/cdemoulins/pamixer; + homepage = "https://github.com/cdemoulins/pamixer"; license = licenses.gpl3; platforms = platforms.linux; }; diff --git a/pkgs/applications/audio/paprefs/default.nix b/pkgs/applications/audio/paprefs/default.nix index 9c59b5466c7..b5ec1206ce3 100644 --- a/pkgs/applications/audio/paprefs/default.nix +++ b/pkgs/applications/audio/paprefs/default.nix @@ -40,7 +40,7 @@ stdenv.mkDerivation rec { dialog for the PulseAudio sound server. ''; - homepage = http://freedesktop.org/software/pulseaudio/paprefs/; + homepage = "http://freedesktop.org/software/pulseaudio/paprefs/"; license = licenses.gpl2Plus; diff --git a/pkgs/applications/audio/parlatype/default.nix b/pkgs/applications/audio/parlatype/default.nix index fb5fe47f4f2..e4728b9b9c4 100644 --- a/pkgs/applications/audio/parlatype/default.nix +++ b/pkgs/applications/audio/parlatype/default.nix @@ -2,13 +2,13 @@ stdenv.mkDerivation rec { pname = "parlatype"; - version = "1.6.2"; + version = "2.0"; src = fetchFromGitHub { owner = "gkarsay"; repo = pname; rev = "v${version}"; - sha256 = "157423f40l8nd5da6y0qjmg4l3125zailp98w2hda3mxxn1j5ix3"; + sha256 = "026i19vkdq35rldbjp1wglamr22a1330iv736mmgbd8fs7vz22nx"; }; nativeBuildInputs = [ @@ -61,7 +61,7 @@ stdenv.mkDerivation rec { It plays audio sources to transcribe them in your favourite text application. It’s intended to be useful for journalists, students, scientists and whoever needs to transcribe audio files. ''; - homepage = https://gkarsay.github.io/parlatype/; + homepage = "https://gkarsay.github.io/parlatype/"; license = licenses.gpl3Plus; maintainers = [ maintainers.melchips ]; platforms = platforms.linux; diff --git a/pkgs/applications/audio/patchage/default.nix b/pkgs/applications/audio/patchage/default.nix index e7c4cab9af1..ac679d6dd94 100644 --- a/pkgs/applications/audio/patchage/default.nix +++ b/pkgs/applications/audio/patchage/default.nix @@ -6,7 +6,7 @@ stdenv.mkDerivation { pname = "patchage"; version = "1.0.1"; src = fetchsvn { - url = http://svn.drobilla.net/lad/trunk/patchage/; + url = "http://svn.drobilla.net/lad/trunk/patchage/"; rev = "5821"; sha256 = "1ar64l0sg468qzxj7i6ppgfqjpm92awcp5lzskamrf3ln17lrgj7"; }; @@ -18,7 +18,7 @@ stdenv.mkDerivation { meta = { description = "Modular patch bay for Jack and ALSA systems"; - homepage = http://non.tuxfamily.org; + homepage = "http://non.tuxfamily.org"; license = stdenv.lib.licenses.lgpl3; platforms = stdenv.lib.platforms.linux; maintainers = [ stdenv.lib.maintainers.nico202 ]; diff --git a/pkgs/applications/audio/paulstretch/default.nix b/pkgs/applications/audio/paulstretch/default.nix index b9a3f39affb..f6cee7672f7 100644 --- a/pkgs/applications/audio/paulstretch/default.nix +++ b/pkgs/applications/audio/paulstretch/default.nix @@ -52,7 +52,7 @@ stdenv.mkDerivation { special effects by "spectral smoothing" the sounds. It can transform any sound/music to a texture. ''; - homepage = http://hypermammut.sourceforge.net/paulstretch/; + homepage = "http://hypermammut.sourceforge.net/paulstretch/"; platforms = platforms.linux; license = licenses.gpl2; }; diff --git a/pkgs/applications/audio/pavucontrol/default.nix b/pkgs/applications/audio/pavucontrol/default.nix index fee86cb5bca..301e44168d3 100644 --- a/pkgs/applications/audio/pavucontrol/default.nix +++ b/pkgs/applications/audio/pavucontrol/default.nix @@ -1,5 +1,5 @@ { fetchurl, stdenv, pkgconfig, intltool, libpulseaudio, gtkmm3 -, libcanberra-gtk3, makeWrapper, gnome3 }: +, libcanberra-gtk3, gnome3, wrapGAppsHook }: stdenv.mkDerivation rec { pname = "pavucontrol"; @@ -10,16 +10,10 @@ stdenv.mkDerivation rec { sha256 = "1qhlkl3g8d7h72xjskii3g1l7la2cavwp69909pzmbi2jyn5pi4g"; }; - preFixup = '' - wrapProgram "$out/bin/pavucontrol" \ - --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \ - --prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS" - ''; - - buildInputs = [ libpulseaudio gtkmm3 libcanberra-gtk3 makeWrapper + buildInputs = [ libpulseaudio gtkmm3 libcanberra-gtk3 gnome3.adwaita-icon-theme ]; - nativeBuildInputs = [ pkgconfig intltool ]; + nativeBuildInputs = [ pkgconfig intltool wrapGAppsHook ]; configureFlags = [ "--disable-lynx" ]; @@ -32,7 +26,7 @@ stdenv.mkDerivation rec { easily control the volume of all clients, sinks, etc. ''; - homepage = http://freedesktop.org/software/pulseaudio/pavucontrol/; + homepage = "http://freedesktop.org/software/pulseaudio/pavucontrol/"; license = stdenv.lib.licenses.gpl2Plus; diff --git a/pkgs/applications/audio/pd-plugins/cyclone/default.nix b/pkgs/applications/audio/pd-plugins/cyclone/default.nix index 6440f6e787f..56f1ec518de 100644 --- a/pkgs/applications/audio/pd-plugins/cyclone/default.nix +++ b/pkgs/applications/audio/pd-plugins/cyclone/default.nix @@ -25,7 +25,7 @@ stdenv.mkDerivation rec { meta = { description = "A library of PureData classes, bringing some level of compatibility between Max/MSP and Pd environments"; - homepage = http://puredata.info/downloads/cyclone; + homepage = "http://puredata.info/downloads/cyclone"; license = stdenv.lib.licenses.tcltk; maintainers = [ stdenv.lib.maintainers.magnetophon ]; platforms = stdenv.lib.platforms.linux; diff --git a/pkgs/applications/audio/pd-plugins/helmholtz/default.nix b/pkgs/applications/audio/pd-plugins/helmholtz/default.nix index 6c7a4b03ef5..be5a385d308 100644 --- a/pkgs/applications/audio/pd-plugins/helmholtz/default.nix +++ b/pkgs/applications/audio/pd-plugins/helmholtz/default.nix @@ -38,7 +38,7 @@ stdenv.mkDerivation { meta = { description = "Time domain pitch tracker for Pure Data"; - homepage = http://www.katjaas.nl/helmholtz/helmholtz.html; + homepage = "http://www.katjaas.nl/helmholtz/helmholtz.html"; license = stdenv.lib.licenses.bsd3; maintainers = [ stdenv.lib.maintainers.magnetophon ]; platforms = stdenv.lib.platforms.linux; diff --git a/pkgs/applications/audio/pd-plugins/maxlib/default.nix b/pkgs/applications/audio/pd-plugins/maxlib/default.nix index 21ba375200b..aec793c4ee8 100644 --- a/pkgs/applications/audio/pd-plugins/maxlib/default.nix +++ b/pkgs/applications/audio/pd-plugins/maxlib/default.nix @@ -25,7 +25,7 @@ stdenv.mkDerivation rec { meta = { description = "A library of non-tilde externals for puredata, by Miller Puckette"; - homepage = http://puredata.info/downloads/maxlib; + homepage = "http://puredata.info/downloads/maxlib"; license = stdenv.lib.licenses.gpl2; maintainers = [ stdenv.lib.maintainers.magnetophon ]; platforms = stdenv.lib.platforms.linux; diff --git a/pkgs/applications/audio/pd-plugins/mrpeach/default.nix b/pkgs/applications/audio/pd-plugins/mrpeach/default.nix index 028a4667cb2..cefee430ad5 100644 --- a/pkgs/applications/audio/pd-plugins/mrpeach/default.nix +++ b/pkgs/applications/audio/pd-plugins/mrpeach/default.nix @@ -54,7 +54,7 @@ stdenv.mkDerivation { meta = { description = "A collection of Pd objectclasses for OSC-messages"; - homepage = http://puredata.info/downloads/osc; + homepage = "http://puredata.info/downloads/osc"; license = stdenv.lib.licenses.gpl2; maintainers = [ stdenv.lib.maintainers.magnetophon ]; platforms = stdenv.lib.platforms.linux; diff --git a/pkgs/applications/audio/pd-plugins/puremapping/default.nix b/pkgs/applications/audio/pd-plugins/puremapping/default.nix index c214d3fcf40..7a5014664d5 100644 --- a/pkgs/applications/audio/pd-plugins/puremapping/default.nix +++ b/pkgs/applications/audio/pd-plugins/puremapping/default.nix @@ -23,7 +23,7 @@ stdenv.mkDerivation rec { meta = { description = "Set of externals to facilitate the use of sensors within Pure Data and to create complex relations between input and output of a dynamic system"; - homepage = http://www.chnry.net/ch/?090-Pure-Mapping&lang=en; + homepage = "http://www.chnry.net/ch/?090-Pure-Mapping&lang=en"; license = stdenv.lib.licenses.gpl1; maintainers = [ stdenv.lib.maintainers.magnetophon ]; platforms = stdenv.lib.platforms.linux; diff --git a/pkgs/applications/audio/pd-plugins/timbreid/default.nix b/pkgs/applications/audio/pd-plugins/timbreid/default.nix index fa9660fbbf6..e68610a0226 100644 --- a/pkgs/applications/audio/pd-plugins/timbreid/default.nix +++ b/pkgs/applications/audio/pd-plugins/timbreid/default.nix @@ -37,7 +37,7 @@ stdenv.mkDerivation rec { meta = { description = "A collection of audio feature analysis externals for puredata"; - homepage = http://williambrent.conflations.com/pages/research.html; + homepage = "http://williambrent.conflations.com/pages/research.html"; license = stdenv.lib.licenses.gpl3; maintainers = [ stdenv.lib.maintainers.magnetophon ]; platforms = stdenv.lib.platforms.linux; diff --git a/pkgs/applications/audio/pd-plugins/zexy/default.nix b/pkgs/applications/audio/pd-plugins/zexy/default.nix index cc307417c06..4f826908136 100644 --- a/pkgs/applications/audio/pd-plugins/zexy/default.nix +++ b/pkgs/applications/audio/pd-plugins/zexy/default.nix @@ -28,7 +28,7 @@ stdenv.mkDerivation rec { meta = { description = "The swiss army knife for puredata"; - homepage = http://puredata.info/downloads/zexy; + homepage = "http://puredata.info/downloads/zexy"; license = stdenv.lib.licenses.gpl2; maintainers = [ stdenv.lib.maintainers.magnetophon ]; platforms = stdenv.lib.platforms.linux; diff --git a/pkgs/applications/audio/petrifoo/default.nix b/pkgs/applications/audio/petrifoo/default.nix index 8bbeffb1f7a..322eba2b952 100644 --- a/pkgs/applications/audio/petrifoo/default.nix +++ b/pkgs/applications/audio/petrifoo/default.nix @@ -19,7 +19,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "MIDI controllable audio sampler"; longDescription = "a fork of Specimen"; - homepage = http://petri-foo.sourceforge.net; + homepage = "http://petri-foo.sourceforge.net"; license = licenses.gpl2Plus; platforms = platforms.linux; maintainers = [ maintainers.goibhniu ]; diff --git a/pkgs/applications/audio/pianobar/default.nix b/pkgs/applications/audio/pianobar/default.nix index 26b94f306bc..28173d34b78 100644 --- a/pkgs/applications/audio/pianobar/default.nix +++ b/pkgs/applications/audio/pianobar/default.nix @@ -1,11 +1,11 @@ { fetchurl, stdenv, pkgconfig, libao, json_c, libgcrypt, ffmpeg, curl }: stdenv.mkDerivation rec { - name = "pianobar-2019.02.14"; + name = "pianobar-2020.04.05"; src = fetchurl { url = "http://6xq.net/projects/pianobar/${name}.tar.bz2"; - sha256 = "07z21vmlqpmvb3294r384iqbx972rwcx6chrdlkfv4hlnc9h7gf0"; + sha256 = "1034f9ilj9xjw12d6n4vadhl5jzrx0jv8gq1w0rg9hfc55mkn5vc"; }; nativeBuildInputs = [ pkgconfig ]; @@ -13,7 +13,7 @@ stdenv.mkDerivation rec { libao json_c libgcrypt ffmpeg curl ]; - makeFlags="PREFIX=$(out)"; + makeFlags = [ "PREFIX=$(out)" ]; CC = "gcc"; CFLAGS = "-std=c99"; diff --git a/pkgs/applications/audio/pianobooster/default.nix b/pkgs/applications/audio/pianobooster/default.nix index fee456ae717..4832fce1e96 100644 --- a/pkgs/applications/audio/pianobooster/default.nix +++ b/pkgs/applications/audio/pianobooster/default.nix @@ -1,35 +1,31 @@ -{ stdenv, fetchurl, alsaLib, cmake, libGLU, libGL, makeWrapper, qt4 }: +{ stdenv, fetchFromGitHub, cmake, pkg-config, qttools +, alsaLib, ftgl, libGLU, libjack2, qtbase, rtmidi +}: -stdenv.mkDerivation { +stdenv.mkDerivation rec { pname = "pianobooster"; - version = "0.6.4b"; + version = "0.7.2b"; - src = fetchurl { - url = "mirror://sourceforge/pianobooster/pianobooster-src-0.6.4b.tar.gz"; - sha256 = "1xwyap0288xcl0ihjv52vv4ijsjl0yq67scc509aia4plmlm6l35"; + src = fetchFromGitHub { + owner = "captnfab"; + repo = "PianoBooster"; + rev = "v${version}"; + sha256 = "03xcdnlpsij22ca3i6xj19yqzn3q2ch0d32r73v0c96nm04gvhjj"; }; - patches = [ - ./pianobooster-0.6.4b-cmake.patch - ./pianobooster-0.6.4b-cmake-gcc4.7.patch + nativeBuildInputs = [ cmake pkg-config qttools ]; + + buildInputs = [ alsaLib ftgl libGLU libjack2 qtbase rtmidi ]; + + cmakeFlags = [ + "-DOpenGL_GL_PREFERENCE=GLVND" ]; - preConfigure = "cd src"; - - buildInputs = [ alsaLib cmake makeWrapper libGLU libGL qt4 ]; - NIX_LDFLAGS = [ "-lGL" "-lpthread" ]; - - postInstall = '' - wrapProgram $out/bin/pianobooster \ - --prefix LD_LIBRARY_PATH : ${libGL}/lib \ - --prefix LD_LIBRARY_PATH : ${libGLU}/lib - ''; - meta = with stdenv.lib; { description = "A MIDI file player that teaches you how to play the piano"; - homepage = http://pianobooster.sourceforge.net; - license = licenses.gpl3; + homepage = "https://github.com/captnfab/PianoBooster"; + license = licenses.gpl3Plus; platforms = platforms.linux; - maintainers = [ maintainers.goibhniu ]; + maintainers = with maintainers; [ goibhniu orivej ]; }; } diff --git a/pkgs/applications/audio/pianobooster/pianobooster-0.6.4b-cmake-gcc4.7.patch b/pkgs/applications/audio/pianobooster/pianobooster-0.6.4b-cmake-gcc4.7.patch deleted file mode 100644 index 2b1b28c5a84..00000000000 --- a/pkgs/applications/audio/pianobooster/pianobooster-0.6.4b-cmake-gcc4.7.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- pianobooster-src-0.6.4b/src/CMakeLists.txt.orig 2013-04-06 10:48:02.469532914 -0700 -+++ pianobooster-src-0.6.4b/src/CMakeLists.txt 2013-04-06 10:48:12.989532445 -0700 -@@ -203,8 +203,6 @@ - ${PIANOBOOSTER_UI_HDRS} ) - ENDIF(WIN32) - --SET_TARGET_PROPERTIES(pianobooster PROPERTIES LINK_FLAGS "-mwindows") -- - IF (USE_PCH) - ADD_PRECOMPILED_HEADER( pianobooster ${CMAKE_CURRENT_SOURCE_DIR}/precompile/precompile.h ) - ENDIF (USE_PCH) diff --git a/pkgs/applications/audio/pianobooster/pianobooster-0.6.4b-cmake.patch b/pkgs/applications/audio/pianobooster/pianobooster-0.6.4b-cmake.patch deleted file mode 100644 index 8cdd8738e2b..00000000000 --- a/pkgs/applications/audio/pianobooster/pianobooster-0.6.4b-cmake.patch +++ /dev/null @@ -1,44 +0,0 @@ ---- pianobooster-src-0.6.4b/src/CMakeLists.txt.orig -+++ pianobooster-src-0.6.4b/src/CMakeLists.txt -@@ -2,12 +2,6 @@ - # for the debug build type cmake -DCMAKE_BUILD_TYPE=Debug - SET(CMAKE_BUILD_TYPE Release) - SET(CMAKE_VERBOSE_MAKEFILE OFF) --SET(USE_FLUIDSYNTH OFF) -- --# The inplace directory is mainly for windows builds --# SET(FLUIDSYNTH_INPLACE_DIR C:/download/misc/ljb/fluidsynth-1.0.9) --SET(FLUIDSYNTH_INPLACE_DIR /home/louis/build/fluidsynth-1.0.9) -- - - # Testing precompiled headers it does not work -- leave as OFF. - SET(USE_PCH OFF) -@@ -78,18 +72,7 @@ - ADD_DEFINITIONS(-DPB_USE_FLUIDSYNTH) - MESSAGE("Building using fluidsynth") - SET( PB_BASE_SRCS MidiDeviceFluidSynth.cpp ) -- -- IF(FLUIDSYNTH_INPLACE_DIR) -- INCLUDE_DIRECTORIES(${FLUIDSYNTH_INPLACE_DIR}/include/) -- IF(WIN32) -- LINK_LIBRARIES( ${FLUIDSYNTH_INPLACE_DIR}/src/.libs/libfluidsynth.dll.a) -- ENDIF(WIN32) -- IF(UNIX) -- LINK_LIBRARIES(${FLUIDSYNTH_INPLACE_DIR}/src/.libs/libfluidsynth.so) -- ENDIF(UNIX) -- ELSEIF(FLUIDSYNTH_INPLACE_DIR) -- LINK_LIBRARIES( fluidsynth) -- ENDIF(FLUIDSYNTH_INPLACE_DIR) -+ LINK_LIBRARIES(fluidsynth) - ENDIF(USE_FLUIDSYNTH) - - -@@ -214,8 +197,6 @@ - INSTALL(TARGETS pianobooster RUNTIME DESTINATION bin) - #INSTALL( index.docbook INSTALL_DESTINATION ${HTML_INSTALL_DIR}/en SUBDIR kmidimon ) - --INSTALL( FILES ../README.txt DESTINATION share/doc/pianobooster ) -- - INSTALL ( FILES images/pianobooster.png DESTINATION share/pixmaps ) - - diff --git a/pkgs/applications/audio/picard/default.nix b/pkgs/applications/audio/picard/default.nix index b40ab6d4f7a..5830e1eefb8 100644 --- a/pkgs/applications/audio/picard/default.nix +++ b/pkgs/applications/audio/picard/default.nix @@ -1,19 +1,36 @@ -{ stdenv, python3Packages, fetchFromGitHub, gettext, chromaprint, qt5 }: +{ stdenv, python3Packages, fetchFromGitHub, gettext, chromaprint, qt5 +, enablePlayback ? true +, gst_all_1 +}: let pythonPackages = python3Packages; + pyqt5 = if enablePlayback then + pythonPackages.pyqt5_with_qtmultimedia + else + pythonPackages.pyqt5 + ; in pythonPackages.buildPythonApplication rec { pname = "picard"; - version = "2.2.3"; + version = "2.3.1"; src = fetchFromGitHub { owner = "metabrainz"; repo = pname; rev = "release-${version}"; - sha256 = "0lb4pzl03mr5hrzrzva99rxqd5yfip62b7sjmlg4j0imw8mxaj16"; + sha256 = "0xalg4dvaqb396h4s6gzxnplgv1lcvsczmmrlhyrj0kfj10amhsj"; }; - nativeBuildInputs = [ gettext qt5.wrapQtAppsHook qt5.qtbase ]; + nativeBuildInputs = [ gettext qt5.wrapQtAppsHook qt5.qtbase ] + ++ stdenv.lib.optionals (pyqt5.multimediaEnabled) [ + qt5.qtmultimedia.bin + gst_all_1.gstreamer + gst_all_1.gst-vaapi + gst_all_1.gst-libav + gst_all_1.gst-plugins-base + gst_all_1.gst-plugins-good + ] + ; propagatedBuildInputs = with pythonPackages; [ pyqt5 @@ -27,13 +44,17 @@ in pythonPackages.buildPythonApplication rec { substituteInPlace setup.cfg --replace "‘" "'" ''; - installPhase = '' - python setup.py install --prefix="$out" - wrapQtApp $out/bin/picard - ''; + # In order to spare double wrapping, we use: + preFixup = '' + makeWrapperArgs+=("''${qtWrapperArgs[@]}") + '' + + stdenv.lib.optionalString (pyqt5.multimediaEnabled) '' + makeWrapperArgs+=(--prefix GST_PLUGIN_SYSTEM_PATH_1_0 : "$GST_PLUGIN_SYSTEM_PATH_1_0") + '' + ; meta = with stdenv.lib; { - homepage = http://musicbrainz.org/doc/MusicBrainz_Picard; + homepage = "https://picard.musicbrainz.org/"; description = "The official MusicBrainz tagger"; maintainers = with maintainers; [ ehmry ]; license = licenses.gpl2; diff --git a/pkgs/applications/audio/pithos/default.nix b/pkgs/applications/audio/pithos/default.nix index 20a6e928cef..6c3ffebc8c9 100644 --- a/pkgs/applications/audio/pithos/default.nix +++ b/pkgs/applications/audio/pithos/default.nix @@ -29,7 +29,7 @@ pythonPackages.buildPythonApplication rec { meta = with stdenv.lib; { description = "Pandora Internet Radio player for GNOME"; - homepage = https://pithos.github.io/; + homepage = "https://pithos.github.io/"; license = licenses.gpl3; maintainers = with maintainers; [ obadz ]; }; diff --git a/pkgs/applications/audio/playbar2/default.nix b/pkgs/applications/audio/playbar2/default.nix index 8c21dc8f2ad..15385e91927 100644 --- a/pkgs/applications/audio/playbar2/default.nix +++ b/pkgs/applications/audio/playbar2/default.nix @@ -29,7 +29,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Mpris2 Client for Plasma5"; - homepage = https://github.com/audoban/PlayBar2; + homepage = "https://github.com/audoban/PlayBar2"; license = licenses.gpl3; platforms = platforms.linux; maintainers = with maintainers; [ pjones ]; diff --git a/pkgs/applications/audio/plugin-torture/default.nix b/pkgs/applications/audio/plugin-torture/default.nix index f444ad6cb32..3c852cf450e 100644 --- a/pkgs/applications/audio/plugin-torture/default.nix +++ b/pkgs/applications/audio/plugin-torture/default.nix @@ -21,7 +21,7 @@ stdenv.mkDerivation { ''; meta = with stdenv.lib; { - homepage = https://github.com/cth103/plugin-torture; + homepage = "https://github.com/cth103/plugin-torture"; description = "A tool to test LADSPA and LV2 plugins"; license = licenses.gpl2; maintainers = [ maintainers.magnetophon ]; diff --git a/pkgs/applications/audio/pmidi/default.nix b/pkgs/applications/audio/pmidi/default.nix index f9b3fbae213..0da86ca9bd1 100644 --- a/pkgs/applications/audio/pmidi/default.nix +++ b/pkgs/applications/audio/pmidi/default.nix @@ -14,7 +14,7 @@ stdenv.mkDerivation { buildInputs = [ alsaLib ]; meta = with stdenv.lib; { - homepage = http://www.parabola.me.uk/alsa/pmidi.html; + homepage = "http://www.parabola.me.uk/alsa/pmidi.html"; description = "A straightforward command line program to play midi files through the ALSA sequencer"; maintainers = with maintainers; [ lheckemann ]; license = licenses.gpl2; diff --git a/pkgs/applications/audio/polyphone/default.nix b/pkgs/applications/audio/polyphone/default.nix new file mode 100644 index 00000000000..270d51840d7 --- /dev/null +++ b/pkgs/applications/audio/polyphone/default.nix @@ -0,0 +1,49 @@ +{ stdenv, mkDerivation, fetchFromGitHub, qmake, pkgconfig, alsaLib, libjack2, portaudio, libogg, flac, libvorbis, rtmidi, qtsvg }: + +mkDerivation rec { + version = "2.2.0"; + pname = "polyphone"; + + src = fetchFromGitHub { + owner = "davy7125"; + repo = "polyphone"; + rev = version; + sha256 = "0w5pidzhpwpggjn5la384fvjzkvprvrnidb06068whci11kgpbp7"; + }; + + buildInputs = [ + alsaLib + libjack2 + portaudio + libogg + flac + libvorbis + rtmidi + qtsvg + ]; + + nativeBuildInputs = [ qmake pkgconfig ]; + + preConfigure = '' + cd ./sources/ + ''; + + installPhase = '' + install -d $out/bin + install -m755 bin/polyphone $out/bin/ + ''; + + qmakeFlags = [ + "DEFINES+=USE_LOCAL_STK" + "DEFINES+=USE_LOCAL_QCUSTOMPLOT" + "INCLUDEPATH+=${libjack2}/include/jack" + ]; + + meta = with stdenv.lib; { + description = "A soundfont editor for creating musical instruments"; + homepage = "https://www.polyphone-soundfonts.com/"; + license = licenses.gpl3; + maintainers = [ maintainers.maxdamantus ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/applications/audio/ponymix/default.nix b/pkgs/applications/audio/ponymix/default.nix index 6d168ec5661..6c289a97384 100644 --- a/pkgs/applications/audio/ponymix/default.nix +++ b/pkgs/applications/audio/ponymix/default.nix @@ -18,7 +18,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "CLI PulseAudio Volume Control"; - homepage = https://github.com/falconindy/ponymix; + homepage = "https://github.com/falconindy/ponymix"; license = licenses.mit; platforms = platforms.linux; maintainers = with maintainers; [ ericsagnes ]; diff --git a/pkgs/applications/audio/praat/default.nix b/pkgs/applications/audio/praat/default.nix index 9414f4211d7..2fb8e30a64d 100644 --- a/pkgs/applications/audio/praat/default.nix +++ b/pkgs/applications/audio/praat/default.nix @@ -23,7 +23,7 @@ stdenv.mkDerivation rec { meta = { description = "Doing phonetics by computer"; - homepage = http://www.fon.hum.uva.nl/praat/; + homepage = "http://www.fon.hum.uva.nl/praat/"; license = stdenv.lib.licenses.gpl2Plus; # Has some 3rd-party code in it though platforms = stdenv.lib.platforms.linux; }; diff --git a/pkgs/applications/audio/projectm/default.nix b/pkgs/applications/audio/projectm/default.nix index e7aace763a1..205a3ad287e 100644 --- a/pkgs/applications/audio/projectm/default.nix +++ b/pkgs/applications/audio/projectm/default.nix @@ -14,7 +14,7 @@ stdenv.mkDerivation { meta = { description = "Music Visualizer"; - homepage = http://projectm.sourceforge.net/; + homepage = "http://projectm.sourceforge.net/"; license = stdenv.lib.licenses.lgpl21Plus; platforms = stdenv.lib.platforms.linux; }; @@ -25,7 +25,7 @@ stdenv.mkDerivation { }; patch_gcc6 = fetchpatch { - url = https://raw.githubusercontent.com/gentoo/gentoo/45abd63abc6644b6e177c057b5b42d894dbf8e29/media-libs/libprojectm/files/libprojectm-2.1.0-fix-c++14.patch; + url = "https://raw.githubusercontent.com/gentoo/gentoo/45abd63abc6644b6e177c057b5b42d894dbf8e29/media-libs/libprojectm/files/libprojectm-2.1.0-fix-c++14.patch"; sha256 = "1i50scxv1jlqvb3jm3sql89a7wqckxhlpvnhz20vvmm1kii6lrsn"; }; @@ -37,15 +37,15 @@ stdenv.mkDerivation { nativeBuildInputs = [ pkgconfig cmake ]; - cmakeFlags = '' - -DprojectM_FONT_MENU=${ttf_bitstream_vera}/share/fonts/truetype/VeraMono.ttf - -DprojectM_FONT_TITLE=${ttf_bitstream_vera}/share/fonts/truetype/Vera.ttf - -DINCLUDE-PROJECTM-TEST=OFF - -DINCLUDE-PROJECTM-QT=${if withQt then "ON" else "OFF"} - -DINCLUDE-PROJECTM-LIBVISUAL=${if withLibvisual then "ON" else "OFF"} - -DINCLUDE-PROJECTM-JACK=${if withJack then "ON" else "OFF"} - -DINCLUDE-PROJECTM-PULSEAUDIO=${if withPulseAudio then "ON" else "OFF"} - ''; + cmakeFlags = [ + "-DprojectM_FONT_MENU=${ttf_bitstream_vera}/share/fonts/truetype/VeraMono.ttf" + "-DprojectM_FONT_TITLE=${ttf_bitstream_vera}/share/fonts/truetype/Vera.ttf" + "-DINCLUDE-PROJECTM-TEST=OFF" + "-DINCLUDE-PROJECTM-QT=${if withQt then "ON" else "OFF"}" + "-DINCLUDE-PROJECTM-LIBVISUAL=${if withLibvisual then "ON" else "OFF"}" + "-DINCLUDE-PROJECTM-JACK=${if withJack then "ON" else "OFF"}" + "-DINCLUDE-PROJECTM-PULSEAUDIO=${if withPulseAudio then "ON" else "OFF"}" + ]; buildInputs = with stdenv.lib; [ glew ftgl ] diff --git a/pkgs/applications/audio/pt2-clone/default.nix b/pkgs/applications/audio/pt2-clone/default.nix new file mode 100644 index 00000000000..2f21e3ea56b --- /dev/null +++ b/pkgs/applications/audio/pt2-clone/default.nix @@ -0,0 +1,30 @@ +{ stdenv +, fetchFromGitHub +, cmake +, alsaLib +, SDL2 +}: + +stdenv.mkDerivation rec { + pname = "pt2-clone"; + version = "1.07"; + + src = fetchFromGitHub { + owner = "8bitbubsy"; + repo = "pt2-clone"; + rev = "v${version}"; + sha256 = "0g2bp9n05ng2fvqw86pb941zamcqnfz1l066wvh5j3av1w22khi8"; + }; + + nativeBuildInputs = [ cmake ]; + buildInputs = [ SDL2 ] ++ stdenv.lib.optional stdenv.isLinux alsaLib; + + meta = with stdenv.lib; { + description = "A highly accurate clone of the classic ProTracker 2.3D software for Amiga"; + homepage = "https://16-bits.org/pt2.php"; + license = licenses.bsd3; + maintainers = with maintainers; [ fgaz ]; + platforms = platforms.all; + }; +} + diff --git a/pkgs/applications/audio/puddletag/default.nix b/pkgs/applications/audio/puddletag/default.nix index 3a6cd298557..a0813fa0c80 100644 --- a/pkgs/applications/audio/puddletag/default.nix +++ b/pkgs/applications/audio/puddletag/default.nix @@ -29,7 +29,7 @@ python2Packages.buildPythonApplication rec { meta = with stdenv.lib; { description = "An audio tag editor similar to the Windows program, Mp3tag"; - homepage = https://docs.puddletag.net; + homepage = "https://docs.puddletag.net"; license = licenses.gpl3; maintainers = with maintainers; [ peterhoeg ]; platforms = platforms.linux; diff --git a/pkgs/applications/audio/pulseaudio-ctl/default.nix b/pkgs/applications/audio/pulseaudio-ctl/default.nix index 6b7d242e1f6..125dafc132e 100644 --- a/pkgs/applications/audio/pulseaudio-ctl/default.nix +++ b/pkgs/applications/audio/pulseaudio-ctl/default.nix @@ -33,7 +33,7 @@ in stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Control pulseaudio volume from the shell or mapped to keyboard shortcuts. No need for alsa-utils."; - homepage = https://bbs.archlinux.org/viewtopic.php?id=124513; + homepage = "https://bbs.archlinux.org/viewtopic.php?id=124513"; license = licenses.mit; maintainers = with maintainers; [ peterhoeg ]; platforms = platforms.linux; diff --git a/pkgs/applications/audio/pulseaudio-dlna/default.nix b/pkgs/applications/audio/pulseaudio-dlna/default.nix index a9f56cca001..75990d593df 100644 --- a/pkgs/applications/audio/pulseaudio-dlna/default.nix +++ b/pkgs/applications/audio/pulseaudio-dlna/default.nix @@ -16,10 +16,10 @@ assert vorbisSupport -> vorbisTools != null; let zeroconf = pythonPackages.callPackage ./zeroconf.nix { }; - -in pythonPackages.buildPythonApplication { +in +pythonPackages.buildPythonApplication { pname = "pulseaudio-dlna"; - version = "2017-11-01"; + version = "unstable-2017-11-01"; src = fetchFromGitHub { owner = "masmu"; @@ -28,12 +28,9 @@ in pythonPackages.buildPythonApplication { sha256 = "1dfn7036vrq49kxv4an7rayypnm5dlawsf02pfsldw877hzdamqk"; }; - # pulseaudio-dlna has no tests - doCheck = false; - propagatedBuildInputs = with pythonPackages; [ dbus-python docopt requests setproctitle protobuf psutil futures - chardet notify2 netifaces pyroute2 pygobject2 lxml ] + chardet notify2 netifaces pyroute2 pygobject2 lxml setuptools ] ++ [ zeroconf ] ++ stdenv.lib.optional mp3Support lame ++ stdenv.lib.optional opusSupport opusTools @@ -42,12 +39,15 @@ in pythonPackages.buildPythonApplication { ++ stdenv.lib.optional soxSupport sox ++ stdenv.lib.optional vorbisSupport vorbisTools; + # upstream has no tests + checkPhase = '' + $out/bin/pulseaudio-dlna --help > /dev/null + ''; + meta = with stdenv.lib; { description = "A lightweight streaming server which brings DLNA / UPNP and Chromecast support to PulseAudio and Linux"; - homepage = https://github.com/masmu/pulseaudio-dlna; - + homepage = "https://github.com/masmu/pulseaudio-dlna"; license = licenses.gpl3Plus; - maintainers = with maintainers; [ mog ]; platforms = platforms.linux; }; diff --git a/pkgs/applications/audio/pulseaudio-dlna/zeroconf.nix b/pkgs/applications/audio/pulseaudio-dlna/zeroconf.nix index 328bd8b0b04..efe39aa1600 100644 --- a/pkgs/applications/audio/pulseaudio-dlna/zeroconf.nix +++ b/pkgs/applications/audio/pulseaudio-dlna/zeroconf.nix @@ -23,7 +23,7 @@ buildPythonPackage rec { meta = with stdenv.lib; { description = "A pure python implementation of multicast DNS service discovery"; - homepage = https://github.com/jstasiak/python-zeroconf; + homepage = "https://github.com/jstasiak/python-zeroconf"; license = licenses.lgpl21; maintainers = [ ]; }; diff --git a/pkgs/applications/audio/pulseaudio-modules-bt/default.nix b/pkgs/applications/audio/pulseaudio-modules-bt/default.nix index b8082c12c64..2511cf0f20a 100644 --- a/pkgs/applications/audio/pulseaudio-modules-bt/default.nix +++ b/pkgs/applications/audio/pulseaudio-modules-bt/default.nix @@ -75,7 +75,7 @@ in stdenv.mkDerivation rec { ''; meta = with stdenv.lib; { - homepage = https://github.com/EHfive/pulseaudio-modules-bt; + homepage = "https://github.com/EHfive/pulseaudio-modules-bt"; description = "LDAC, aptX, aptX HD, AAC codecs (A2DP Audio) support for Linux PulseAudio"; platforms = platforms.linux; license = licenses.mit; diff --git a/pkgs/applications/audio/pulseeffects/default.nix b/pkgs/applications/audio/pulseeffects/default.nix index 2d941f74c73..2972849a2d4 100644 --- a/pkgs/applications/audio/pulseeffects/default.nix +++ b/pkgs/applications/audio/pulseeffects/default.nix @@ -46,13 +46,13 @@ let ]; in stdenv.mkDerivation rec { pname = "pulseeffects"; - version = "4.6.9"; + version = "4.7.2"; src = fetchFromGitHub { owner = "wwmm"; repo = "pulseeffects"; rev = "v${version}"; - sha256 = "0ag19hvf50ip7z1s8jziy4pm8c72w7qq9zzgb4967l6v17rar4yh"; + sha256 = "1yga25da5bpg12zkikp6dn4wqhn9f7r10awvjzfcz8s6w9xlz6rx"; }; nativeBuildInputs = [ @@ -101,7 +101,7 @@ in stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Limiter, compressor, reverberation, equalizer and auto volume effects for Pulseaudio applications"; - homepage = https://github.com/wwmm/pulseeffects; + homepage = "https://github.com/wwmm/pulseeffects"; license = licenses.gpl3; maintainers = with maintainers; [ jtojnar ]; platforms = platforms.linux; diff --git a/pkgs/applications/audio/puredata/default.nix b/pkgs/applications/audio/puredata/default.nix index 5886a465409..9880a65d0ca 100644 --- a/pkgs/applications/audio/puredata/default.nix +++ b/pkgs/applications/audio/puredata/default.nix @@ -30,7 +30,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = ''A real-time graphical programming environment for audio, video, and graphical processing''; - homepage = http://puredata.info; + homepage = "http://puredata.info"; license = licenses.bsd3; platforms = platforms.linux; maintainers = [ maintainers.goibhniu ]; diff --git a/pkgs/applications/audio/qjackctl/default.nix b/pkgs/applications/audio/qjackctl/default.nix index 84cc11b8bf3..87666940c15 100644 --- a/pkgs/applications/audio/qjackctl/default.nix +++ b/pkgs/applications/audio/qjackctl/default.nix @@ -1,14 +1,14 @@ { stdenv, mkDerivation, fetchurl, pkgconfig, alsaLib, libjack2, dbus, qtbase, qttools, qtx11extras }: mkDerivation rec { - version = "0.6.0"; + version = "0.6.2"; pname = "qjackctl"; # some dependencies such as killall have to be installed additionally src = fetchurl { url = "mirror://sourceforge/qjackctl/${pname}-${version}.tar.gz"; - sha256 = "1kddvxxhwvw1ps1c1drr08hxqci7jw4jwr8h1d9isb8agydfxmcx"; + sha256 = "1rjhdyp0wzhlqr4cn80rh1qhby998cpqv81j1bbb9hfsiq77viqy"; }; buildInputs = [ @@ -26,7 +26,7 @@ mkDerivation rec { meta = with stdenv.lib; { description = "A Qt application to control the JACK sound server daemon"; - homepage = http://qjackctl.sourceforge.net/; + homepage = "http://qjackctl.sourceforge.net/"; license = licenses.gpl2Plus; maintainers = [ maintainers.goibhniu ]; platforms = platforms.linux; diff --git a/pkgs/applications/audio/qmidiarp/default.nix b/pkgs/applications/audio/qmidiarp/default.nix new file mode 100644 index 00000000000..4bbfe79a2c9 --- /dev/null +++ b/pkgs/applications/audio/qmidiarp/default.nix @@ -0,0 +1,49 @@ +{ stdenv +, fetchgit +, automake +, autoreconfHook +, lv2 +, pkg-config +, qt5 +, alsaLib +, libjack2 +}: + +stdenv.mkDerivation rec { + name = "qmidiarp"; + version = "0.6.5"; + + src = fetchgit { + url = "https://git.code.sf.net/p/qmidiarp/code"; + sha256 = "1g2143gzfbihqr2zi3k2v1yn1x3mwfbb2khmcd4m4cq3hcwhhlx9"; + rev = "qmidiarp-0.6.5"; + }; + + nativeBuildInputs = [ + autoreconfHook + pkg-config + qt5.wrapQtAppsHook + ]; + + buildInputs = [ + alsaLib + lv2 + libjack2 + ] ++ (with qt5; [ + qttools + ]); + + meta = with stdenv.lib; { + description = "An advanced MIDI arpeggiator"; + longDescription = '' + An advanced MIDI arpeggiator, programmable step sequencer and LFO for Linux. + It can hold any number of arpeggiator, sequencer, or LFO modules running in + parallel. + ''; + + homepage = "http://qmidiarp.sourceforge.net"; + license = licenses.gpl2; + platforms = platforms.linux; + maintainers = with maintainers; [ sjfloat ]; + }; +} diff --git a/pkgs/applications/audio/qmidinet/default.nix b/pkgs/applications/audio/qmidinet/default.nix index 01a33db5293..10cbcb5d5b1 100644 --- a/pkgs/applications/audio/qmidinet/default.nix +++ b/pkgs/applications/audio/qmidinet/default.nix @@ -1,25 +1,25 @@ -{ stdenv, fetchurl, pkgconfig, qt5, alsaLib, libjack2 }: +{ mkDerivation, lib, fetchurl, pkgconfig, qtbase, qttools, alsaLib, libjack2 }: -stdenv.mkDerivation rec { - version = "0.6.0"; +mkDerivation rec { + version = "0.6.1"; pname = "qmidinet"; src = fetchurl { url = "mirror://sourceforge/qmidinet/${pname}-${version}.tar.gz"; - sha256 = "07hgk3a8crx262rm1fzggqarz8f1ml910vwgd32mbvlarws5cv0n"; + sha256 = "1nvbvx3wg2s6s7r4x6m2pm9nx7pdz00ghw9h10wfqi2s474mwip0"; }; hardeningDisable = [ "format" ]; - buildInputs = [ qt5.qtbase qt5.qttools alsaLib libjack2 ]; + buildInputs = [ qtbase qttools alsaLib libjack2 ]; nativeBuildInputs = [ pkgconfig ]; - meta = with stdenv.lib; { + meta = with lib; { description = "A MIDI network gateway application that sends and receives MIDI data (ALSA Sequencer and/or JACK MIDI) over the network"; - homepage = http://qmidinet.sourceforge.net/; + homepage = "http://qmidinet.sourceforge.net/"; license = licenses.gpl2Plus; maintainers = [ maintainers.magnetophon ]; - platforms = stdenv.lib.platforms.linux; + platforms = platforms.linux; }; } diff --git a/pkgs/applications/audio/qmmp/default.nix b/pkgs/applications/audio/qmmp/default.nix index aee373329ce..fe7b9f8ba66 100644 --- a/pkgs/applications/audio/qmmp/default.nix +++ b/pkgs/applications/audio/qmmp/default.nix @@ -29,11 +29,11 @@ # handle that. mkDerivation rec { - name = "qmmp-1.3.4"; + name = "qmmp-1.3.7"; src = fetchurl { url = "http://qmmp.ylsoftware.com/files/${name}.tar.bz2"; - sha256 = "0j9vgm6216w7arwl919p9rps0a9r6s4415spl3qkpifhwlk90zg0"; + sha256 = "13mk8p7bfl3fkavpqyhpcxkxb8a4f5d4qc1lasyf7wls3ghrdag7"; }; nativeBuildInputs = [ cmake pkgconfig ]; @@ -55,10 +55,10 @@ mkDerivation rec { meta = with stdenv.lib; { description = "Qt-based audio player that looks like Winamp"; - homepage = http://qmmp.ylsoftware.com/; + homepage = "http://qmmp.ylsoftware.com/"; license = licenses.gpl2; platforms = platforms.linux; maintainers = [ maintainers.bjornfor ]; - repositories.svn = http://qmmp.googlecode.com/svn/; + repositories.svn = "http://qmmp.googlecode.com/svn/"; }; } diff --git a/pkgs/applications/audio/qsampler/default.nix b/pkgs/applications/audio/qsampler/default.nix index 69cc5e6e89f..1f65b374838 100644 --- a/pkgs/applications/audio/qsampler/default.nix +++ b/pkgs/applications/audio/qsampler/default.nix @@ -3,11 +3,11 @@ mkDerivation rec { pname = "qsampler"; - version = "0.6.0"; + version = "0.6.1"; src = fetchurl { url = "mirror://sourceforge/qsampler/${pname}-${version}.tar.gz"; - sha256 = "1krhjyd67hvnv6sgndwq81lfvnb4qkhc7da1119fn2lzl7hx9wh3"; + sha256 = "1wr7k739zx2nz00b810f60g9k3y92w05nfci987hw7y2sks9rd8j"; }; nativeBuildInputs = [ autoconf automake libtool pkgconfig qttools ]; @@ -18,7 +18,7 @@ mkDerivation rec { enableParallelBuilding = true; meta = with stdenv.lib; { - homepage = http://www.linuxsampler.org; + homepage = "http://www.linuxsampler.org"; description = "Graphical frontend to LinuxSampler"; license = licenses.gpl2; maintainers = [ maintainers.goibhniu ]; diff --git a/pkgs/applications/audio/qsynth/default.nix b/pkgs/applications/audio/qsynth/default.nix index aab854d24ad..5da8f4cd462 100644 --- a/pkgs/applications/audio/qsynth/default.nix +++ b/pkgs/applications/audio/qsynth/default.nix @@ -4,11 +4,11 @@ mkDerivation rec { pname = "qsynth"; - version = "0.6.0"; + version = "0.6.2"; src = fetchurl { url = "mirror://sourceforge/qsynth/${pname}-${version}.tar.gz"; - sha256 = "173v0jqybi5szxxvj4n6wyg9sj54rmm6pxwhynx8wkm7nsbh0aij"; + sha256 = "0cp6vrqrj37rv3a7qfvqrg64j7zwpfj60y5b83mlkzvmg1sgjnlv"; }; nativeBuildInputs = [ autoconf pkgconfig ]; @@ -19,7 +19,7 @@ mkDerivation rec { meta = with stdenv.lib; { description = "Fluidsynth GUI"; - homepage = https://sourceforge.net/projects/qsynth; + homepage = "https://sourceforge.net/projects/qsynth"; license = licenses.gpl2Plus; maintainers = with maintainers; [ goibhniu ]; platforms = platforms.linux; diff --git a/pkgs/applications/audio/qtractor/default.nix b/pkgs/applications/audio/qtractor/default.nix index 46dafb72c41..344927bce77 100644 --- a/pkgs/applications/audio/qtractor/default.nix +++ b/pkgs/applications/audio/qtractor/default.nix @@ -5,11 +5,11 @@ stdenv.mkDerivation rec { pname = "qtractor"; - version = "0.9.11"; + version = "0.9.13"; src = fetchurl { url = "mirror://sourceforge/${pname}/${pname}-${version}.tar.gz"; - sha256 = "02cpjlf3j4sm74hz88r1frnlycs52rs11mzplr2q8plji3ic5w50"; + sha256 = "1hwxdjlzsf1z6xl82s4bdfxa2bfisklrfx361zbzskmg9iymw1gy"; }; nativeBuildInputs = [ @@ -23,9 +23,11 @@ stdenv.mkDerivation rec { suil ]; + enableParallelBuilding = true; + meta = with stdenv.lib; { description = "Audio/MIDI multi-track sequencer"; - homepage = http://qtractor.sourceforge.net; + homepage = "http://qtractor.sourceforge.net"; license = licenses.gpl2Plus; platforms = platforms.linux; maintainers = [ maintainers.goibhniu ]; diff --git a/pkgs/applications/audio/qtscrobbler/default.nix b/pkgs/applications/audio/qtscrobbler/default.nix index 68e8e6402ac..5b84989a7c4 100644 --- a/pkgs/applications/audio/qtscrobbler/default.nix +++ b/pkgs/applications/audio/qtscrobbler/default.nix @@ -26,7 +26,7 @@ stdenv.mkDerivation rec { It is able to gather this information from Apple iPods or DAPs running the Rockbox replacement firmware. ''; - homepage = http://qtscrob.sourceforge.net; + homepage = "http://qtscrob.sourceforge.net"; license = licenses.gpl2; maintainers = [ maintainers.vanzef ]; platforms = platforms.linux; diff --git a/pkgs/applications/audio/quodlibet/default.nix b/pkgs/applications/audio/quodlibet/default.nix index 573dca518e3..704e20cc8c5 100644 --- a/pkgs/applications/audio/quodlibet/default.nix +++ b/pkgs/applications/audio/quodlibet/default.nix @@ -18,7 +18,7 @@ python3.pkgs.buildPythonApplication rec { nativeBuildInputs = [ wrapGAppsHook gettext ]; - checkInputs = with python3.pkgs; [ pytest pytest_xdist pyflakes pycodestyle polib xvfb_run dbus.daemon glibcLocales ]; + checkInputs = [ gdk-pixbuf ] ++ (with python3.pkgs; [ pytest pytest_xdist polib xvfb_run dbus.daemon glibcLocales ]); buildInputs = [ gnome3.adwaita-icon-theme libsoup glib glib-networking gtk3 webkitgtk gdk-pixbuf keybinder3 gtksourceview libmodplug libappindicator-gtk3 kakasi gobject-introspection ] ++ (if xineBackend then [ xineLib ] else with gst_all_1; @@ -33,13 +33,23 @@ python3.pkgs.buildPythonApplication rec { LC_ALL = "en_US.UTF-8"; + pytestFlags = stdenv.lib.optionals (xineBackend || !withGstPlugins) [ + "--ignore=tests/plugin/test_replaygain.py" + ] ++ [ + # 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" + ]; + checkPhase = '' runHook preCheck - env XDG_DATA_DIRS="$out/share:${gtk3}/share/gsettings-schemas/${gtk3.name}:$XDG_DATA_DIRS" \ + env XDG_DATA_DIRS="$out/share:${gtk3}/share/gsettings-schemas/${gtk3.name}:$XDG_ICON_DIRS:$XDG_DATA_DIRS" \ HOME=$(mktemp -d) \ xvfb-run -s '-screen 0 800x600x24' dbus-run-session \ --config-file=${dbus.daemon}/share/dbus-1/session.conf \ - py.test${stdenv.lib.optionalString (xineBackend || !withGstPlugins) " --ignore=tests/plugin/test_replaygain.py"} + py.test $pytestFlags runHook postCheck ''; @@ -64,7 +74,6 @@ python3.pkgs.buildPythonApplication rec { ''; maintainers = with maintainers; [ coroa sauyon ]; - homepage = https://quodlibet.readthedocs.io/en/latest/; - broken = true; + homepage = "https://quodlibet.readthedocs.io/en/latest/"; }; } diff --git a/pkgs/applications/audio/r128gain/default.nix b/pkgs/applications/audio/r128gain/default.nix new file mode 100644 index 00000000000..fb2b3063276 --- /dev/null +++ b/pkgs/applications/audio/r128gain/default.nix @@ -0,0 +1,43 @@ +{ lib +, fetchFromGitHub +, substituteAll +, ffmpeg +, python3Packages +, sox +}: + +python3Packages.buildPythonApplication rec { + pname = "r128gain"; + version = "1.0.1"; + + src = fetchFromGitHub { + owner = "desbma"; + repo = "r128gain"; + rev = version; + sha256 = "0fnxis2g7mw8mb0cz9bws909lrndli7ml54nnzda49vc2fhbjwxr"; + }; + + patches = [ + ( + substituteAll { + src = ./ffmpeg-location.patch; + inherit ffmpeg; + } + ) + ]; + + propagatedBuildInputs = with python3Packages; [ crcmod ffmpeg-python mutagen tqdm ]; + checkInputs = with python3Packages; [ requests sox ]; + + # Testing downloads media files for testing, which requires the + # sandbox to be disabled. + doCheck = false; + + meta = with lib; { + description = "Fast audio loudness scanner & tagger (ReplayGain v2 / R128)"; + homepage = "https://github.com/desbma/r128gain"; + license = licenses.lgpl2Plus; + maintainers = [ maintainers.AluisioASG ]; + platforms = platforms.all; + }; +} diff --git a/pkgs/applications/audio/r128gain/ffmpeg-location.patch b/pkgs/applications/audio/r128gain/ffmpeg-location.patch new file mode 100644 index 00000000000..ff118024011 --- /dev/null +++ b/pkgs/applications/audio/r128gain/ffmpeg-location.patch @@ -0,0 +1,31 @@ +diff --git i/r128gain/__init__.py w/r128gain/__init__.py +index 53fc3ef..f144e15 100755 +--- i/r128gain/__init__.py ++++ w/r128gain/__init__.py +@@ -78,7 +78,7 @@ def get_ffmpeg_lib_versions(ffmpeg_path=None): + Example: 0x3040100 for FFmpeg 3.4.1 + """ + r = collections.OrderedDict() +- cmd = (ffmpeg_path or "ffmpeg", "-version") ++ cmd = (ffmpeg_path or "@ffmpeg@/bin/ffmpeg", "-version") + output = subprocess.run(cmd, + check=True, + stdout=subprocess.PIPE, +@@ -156,7 +156,7 @@ def get_r128_loudness(audio_filepaths, *, calc_peak=True, enable_ffmpeg_threadin + os.devnull, + **additional_ffmpeg_args, + f="null"), +- cmd=ffmpeg_path or "ffmpeg") ++ cmd=ffmpeg_path or "@ffmpeg@/bin/ffmpeg") + + # run + logger().debug(cmd_to_string(cmd)) +@@ -740,7 +740,7 @@ def cl_main(): + help="Maximum number of tracks to scan in parallel. If not specified, autodetect CPU count") + arg_parser.add_argument("-f", + "--ffmpeg-path", +- default=shutil.which("ffmpeg"), ++ default="@ffmpeg@/bin/ffmpeg", + help="""Full file path of ffmpeg executable (only needed if not in PATH). + If not specified, autodetect""") + arg_parser.add_argument("-d", diff --git a/pkgs/applications/audio/radiotray-ng/default.nix b/pkgs/applications/audio/radiotray-ng/default.nix index a64e407b39b..014906594a7 100644 --- a/pkgs/applications/audio/radiotray-ng/default.nix +++ b/pkgs/applications/audio/radiotray-ng/default.nix @@ -92,7 +92,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "An internet radio player for linux"; - homepage = https://github.com/ebruck/radiotray-ng; + homepage = "https://github.com/ebruck/radiotray-ng"; license = licenses.gpl3; maintainers = with maintainers; [ dtzWill ]; platforms = platforms.all; diff --git a/pkgs/applications/audio/rakarrack/default.nix b/pkgs/applications/audio/rakarrack/default.nix index 36302458a75..4548f9ba624 100644 --- a/pkgs/applications/audio/rakarrack/default.nix +++ b/pkgs/applications/audio/rakarrack/default.nix @@ -19,7 +19,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Multi-effects processor emulating a guitar effects pedalboard"; - homepage = http://rakarrack.sourceforge.net; + homepage = "http://rakarrack.sourceforge.net"; license = licenses.gpl2; platforms = platforms.linux; maintainers = [ maintainers.goibhniu ]; diff --git a/pkgs/applications/audio/reaper/default.nix b/pkgs/applications/audio/reaper/default.nix index 236c42b5293..2e63a3e8c7c 100644 --- a/pkgs/applications/audio/reaper/default.nix +++ b/pkgs/applications/audio/reaper/default.nix @@ -52,7 +52,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Digital audio workstation"; - homepage = https://www.reaper.fm/; + homepage = "https://www.reaper.fm/"; license = licenses.unfree; platforms = [ "x86_64-linux" ]; maintainers = with maintainers; [ jfrankenau ]; diff --git a/pkgs/applications/audio/redoflacs/default.nix b/pkgs/applications/audio/redoflacs/default.nix index e32fd42af32..140b163e25c 100644 --- a/pkgs/applications/audio/redoflacs/default.nix +++ b/pkgs/applications/audio/redoflacs/default.nix @@ -1,39 +1,49 @@ -{ stdenv, fetchFromGitHub, makeWrapper -, flac, sox }: +{ stdenv +, lib +, fetchFromGitHub +, makeWrapper +, installShellFiles +, flac +, sox +, withAucdtect ? false +, aucdtect ? null +}: stdenv.mkDerivation rec { pname = "redoflacs"; - version = "0.30.20150202"; + version = "0.30.20190903"; src = fetchFromGitHub { - owner = "sirjaren"; - repo = "redoflacs"; - rev = "86c6f5becca0909dcb2a0cb9ed747a575d7a4735"; - sha256 = "1gzlmh4vnf2fl0x8ig2n1f76082ngldsv85i27dv15y2m1kffw2j"; + owner = "sirjaren"; + repo = "redoflacs"; + rev = "4ca544cbc075d0865884906208cb2b8bc318cf9e"; + sha256 = "19lcl09d4ngz2zzwd8dnnxx41ddvznhar6ggrlf1xvkr5gd7lafp"; }; dontBuild = true; - nativeBuildInputs = [ makeWrapper ]; + nativeBuildInputs = [ installShellFiles makeWrapper ]; installPhase = '' runHook preInstall install -Dm755 -t $out/bin redoflacs install -Dm644 -t $out/share/doc/redoflacs LICENSE *.md + installManPage redoflacs.1 runHook postInstall ''; postFixup = '' wrapProgram $out/bin/redoflacs \ - --prefix PATH : ${stdenv.lib.makeBinPath [ flac sox ]} + --prefix PATH : ${stdenv.lib.makeBinPath ([ flac sox ] ++ lib.optional withAucdtect aucdtect)} ''; - meta = with stdenv.lib; { + meta = with lib; { description = "Parallel BASH commandline FLAC compressor, verifier, organizer, analyzer, and retagger"; - homepage = src.meta.homepage; - license = licenses.gpl2; - platforms = platforms.all; + homepage = src.meta.homepage; + license = licenses.gpl2; + maintainers = with maintainers; [ peterhoeg ]; + platforms = platforms.all; }; } diff --git a/pkgs/applications/audio/renoise/default.nix b/pkgs/applications/audio/renoise/default.nix index 7b2d92ad59d..1cbd5b3afa2 100644 --- a/pkgs/applications/audio/renoise/default.nix +++ b/pkgs/applications/audio/renoise/default.nix @@ -14,7 +14,7 @@ in stdenv.mkDerivation rec { pname = "renoise"; - version = "3.2.0"; + version = "3.2.1"; src = if stdenv.hostPlatform.system == "x86_64-linux" then @@ -24,7 +24,7 @@ stdenv.mkDerivation rec { "https://files.renoise.com/demo/Renoise_${urlVersion version}_Demo_Linux.tar.gz" "https://web.archive.org/web/https://files.renoise.com/demo/Renoise_${urlVersion version}_Demo_Linux.tar.gz" ]; - sha256 = "0cfczzpk1ddz61nk4d72fydbm5nbgxqp95v81by2n87s1wffjjhi"; + sha256 = "0dhcidgnjzd4abw0xw1waj9mazp03nbvjcr2xx09l8gnfrkvny46"; } else releasePath @@ -60,7 +60,7 @@ stdenv.mkDerivation rec { meta = { description = "Modern tracker-based DAW"; - homepage = https://www.renoise.com/; + homepage = "https://www.renoise.com/"; license = licenses.unfree; maintainers = []; platforms = [ "x86_64-linux" ]; diff --git a/pkgs/applications/audio/rhvoice/default.nix b/pkgs/applications/audio/rhvoice/default.nix index e3eb750496b..7a0a8a59a08 100644 --- a/pkgs/applications/audio/rhvoice/default.nix +++ b/pkgs/applications/audio/rhvoice/default.nix @@ -15,7 +15,7 @@ in stdenv.mkDerivation { }; nativeBuildInputs = [ - scons pkgconfig + scons.py2 pkgconfig ]; buildInputs = [ @@ -33,7 +33,7 @@ in stdenv.mkDerivation { meta = { description = "A free and open source speech synthesizer for Russian language and others"; - homepage = https://github.com/Olga-Yakovleva/RHVoice/wiki; + homepage = "https://github.com/Olga-Yakovleva/RHVoice/wiki"; license = lib.licenses.gpl3; maintainers = with lib.maintainers; [ berce ]; platforms = with lib.platforms; all; diff --git a/pkgs/applications/audio/rhythmbox/default.nix b/pkgs/applications/audio/rhythmbox/default.nix index 24b342a26a9..79560451e54 100644 --- a/pkgs/applications/audio/rhythmbox/default.nix +++ b/pkgs/applications/audio/rhythmbox/default.nix @@ -17,13 +17,13 @@ }: let pname = "rhythmbox"; - version = "3.4.3"; + version = "3.4.4"; in stdenv.mkDerivation rec { name = "${pname}-${version}"; src = fetchurl { url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; - sha256 = "1yx3n7p9vmv23jsv98fxwq95n78awdxqm8idhyhxx2d6vk4w1hgx"; + sha256 = "142xcvw4l19jyr5i72nbnrihs953pvrrzcbijjn9dxmxszbv03pf"; }; nativeBuildInputs = [ @@ -58,7 +58,7 @@ in stdenv.mkDerivation rec { }; meta = with stdenv.lib; { - homepage = https://wiki.gnome.org/Apps/Rhythmbox; + homepage = "https://wiki.gnome.org/Apps/Rhythmbox"; description = "A music playing application for GNOME"; license = licenses.gpl2; platforms = platforms.linux; diff --git a/pkgs/applications/audio/rkrlv2/default.nix b/pkgs/applications/audio/rkrlv2/default.nix index 0ff23102e75..59979c41083 100644 --- a/pkgs/applications/audio/rkrlv2/default.nix +++ b/pkgs/applications/audio/rkrlv2/default.nix @@ -18,7 +18,7 @@ stdenv.mkDerivation rec { meta = { description = "Rakarrak effects ported to LV2"; - homepage = https://github.com/ssj71/rkrlv2; + homepage = "https://github.com/ssj71/rkrlv2"; license = stdenv.lib.licenses.gpl3; maintainers = [ stdenv.lib.maintainers.joelmo ]; platforms = stdenv.lib.platforms.linux; diff --git a/pkgs/applications/audio/rofi-mpd/default.nix b/pkgs/applications/audio/rofi-mpd/default.nix index 9def4a292f6..ef57466ec84 100644 --- a/pkgs/applications/audio/rofi-mpd/default.nix +++ b/pkgs/applications/audio/rofi-mpd/default.nix @@ -2,16 +2,16 @@ python3Packages.buildPythonApplication rec { pname = "rofi-mpd"; - version = "1.1.0"; + version = "2.2.0"; src = fetchFromGitHub { owner = "JakeStanger"; repo = "Rofi_MPD"; rev = "v${version}"; - sha256 = "0pdra1idgas3yl9z9v7b002igwg2c1mv0yw2ffb8rsbx88x4gbai"; + sha256 = "1b0y8706mmrxhiyz8g6znisllc35j8g7sz8gfjll9svysjmvb6lc"; }; - propagatedBuildInputs = with python3Packages; [ mutagen mpd2 ]; + propagatedBuildInputs = with python3Packages; [ mutagen mpd2 toml appdirs ]; # upstream doesn't contain a test suite doCheck = false; diff --git a/pkgs/applications/audio/rosegarden/default.nix b/pkgs/applications/audio/rosegarden/default.nix index 9445bf3723c..921c8fff67a 100644 --- a/pkgs/applications/audio/rosegarden/default.nix +++ b/pkgs/applications/audio/rosegarden/default.nix @@ -1,21 +1,22 @@ -{ stdenv, fetchurl, cmake, makedepend, perl, pkgconfig, qttools -, dssi, fftwSinglePrec, ladspaH, ladspaPlugins, libjack2 -, liblo, liblrdf, libsamplerate, libsndfile, lirc ? null, qtbase }: +{ stdenv, fetchurl, cmake, makedepend, perl, pkgconfig, qttools, wrapQtAppsHook +, dssi, fftwSinglePrec, ladspaH, ladspaPlugins, libjack2, alsaLib +, liblo, libsamplerate, libsndfile, lirc ? null, lrdf, qtbase }: stdenv.mkDerivation (rec { - version = "19.06"; + version = "19.12"; pname = "rosegarden"; src = fetchurl { url = "mirror://sourceforge/rosegarden/${pname}-${version}.tar.bz2"; - sha256 = "169qb58v2s8va59hzkih8nqb2aipsqlrbfs8q39ywqa8w5d60gcc"; + sha256 = "1qcaxc6hdzva7kwxxhgl95437fagjbxzv4mihsgpr7y9qk08ppw1"; }; patchPhase = '' substituteInPlace src/CMakeLists.txt --replace svnheader svnversion ''; - nativeBuildInputs = [ cmake makedepend perl pkgconfig qttools ]; + nativeBuildInputs = + [ cmake makedepend perl pkgconfig qttools wrapQtAppsHook ]; buildInputs = [ dssi @@ -24,17 +25,18 @@ stdenv.mkDerivation (rec { ladspaPlugins libjack2 liblo - liblrdf libsamplerate libsndfile lirc + lrdf qtbase + alsaLib ]; enableParallelBuilding = true; meta = with stdenv.lib; { - homepage = https://www.rosegardenmusic.com/; + homepage = "https://www.rosegardenmusic.com/"; description = "Music composition and editing environment"; longDescription = '' Rosegarden is a music composition and editing environment based around diff --git a/pkgs/applications/audio/samplv1/default.nix b/pkgs/applications/audio/samplv1/default.nix index 4874969b633..86f8f666d80 100644 --- a/pkgs/applications/audio/samplv1/default.nix +++ b/pkgs/applications/audio/samplv1/default.nix @@ -2,11 +2,11 @@ stdenv.mkDerivation rec { pname = "samplv1"; - version = "0.9.11"; + version = "0.9.13"; src = fetchurl { url = "mirror://sourceforge/samplv1/${pname}-${version}.tar.gz"; - sha256 = "17zs8kvvwqv00bm4lxpn09a5hxjlbz7k5mkl3k7jspw7rqn3djf2"; + sha256 = "0clsp6s5qfnh0xaxbd35vq2ppi72q9dfayrzlgl73800a8p7gh9m"; }; buildInputs = [ libjack2 alsaLib liblo libsndfile lv2 qt5.qtbase qt5.qttools]; @@ -15,7 +15,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "An old-school all-digital polyphonic sampler synthesizer with stereo fx"; - homepage = http://samplv1.sourceforge.net/; + homepage = "http://samplv1.sourceforge.net/"; license = licenses.gpl2Plus; platforms = platforms.linux; maintainers = [ maintainers.goibhniu ]; diff --git a/pkgs/applications/audio/schismtracker/default.nix b/pkgs/applications/audio/schismtracker/default.nix index f902b2dd41b..b50dd78ff1a 100644 --- a/pkgs/applications/audio/schismtracker/default.nix +++ b/pkgs/applications/audio/schismtracker/default.nix @@ -22,7 +22,7 @@ stdenv.mkDerivation rec { meta = { description = "Music tracker application, free reimplementation of Impulse Tracker"; - homepage = http://schismtracker.org/; + homepage = "http://schismtracker.org/"; license = stdenv.lib.licenses.gpl2; platforms = [ "x86_64-linux" "i686-linux" ]; maintainers = [ stdenv.lib.maintainers.ftrvxmtrx ]; diff --git a/pkgs/applications/audio/seq24/default.nix b/pkgs/applications/audio/seq24/default.nix index 9bab024f021..c8347d70b1d 100644 --- a/pkgs/applications/audio/seq24/default.nix +++ b/pkgs/applications/audio/seq24/default.nix @@ -16,7 +16,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Minimal loop based midi sequencer"; - homepage = http://www.filter24.org/seq24; + homepage = "http://www.filter24.org/seq24"; license = licenses.gpl2; platforms = platforms.linux; maintainers = with maintainers; [ goibhniu ]; diff --git a/pkgs/applications/audio/setbfree/default.nix b/pkgs/applications/audio/setbfree/default.nix index 5a90ee65947..a7500f8c6a5 100644 --- a/pkgs/applications/audio/setbfree/default.nix +++ b/pkgs/applications/audio/setbfree/default.nix @@ -4,11 +4,11 @@ stdenv.mkDerivation rec { pname = "setbfree"; - version = "0.8.10"; + version = "0.8.11"; src = fetchzip { url = "https://github.com/pantherb/setBfree/archive/v${version}.tar.gz"; - sha256 = "1hpj8qb5mhkqm4yy8mzzrrq0ljw22y807qly90vjkg61ascyina4"; + sha256 = "0c2wc8nkrzsy0yic4y7hjz320m3d20r8152j9dk8nsnmgjmyr2ir"; }; postPatch = '' diff --git a/pkgs/applications/audio/sfizz/default.nix b/pkgs/applications/audio/sfizz/default.nix new file mode 100644 index 00000000000..d785d378065 --- /dev/null +++ b/pkgs/applications/audio/sfizz/default.nix @@ -0,0 +1,32 @@ +{ stdenv, fetchFromGitHub , cmake, libjack2, libsndfile }: + +stdenv.mkDerivation rec { + pname = "sfizz"; + version = "unstable-2020-01-24"; + + src = fetchFromGitHub { + owner = "sfztools"; + repo = pname; + rev = "b9c332777853cb35faeeda2ff4bf34ea7121ffb9"; + sha256 = "0wzgwpcwal5a7ifrm1hx8y6vx832qixk9ilp8wkjnsdxj6i88p2c"; + fetchSubmodules = true; + }; + + nativeBuildInputs = [ cmake ]; + + buildInputs = [ libjack2 libsndfile ]; + + cmakeFlags = [ + "-DCMAKE_BUILD_TYPE=Release" + "-DSFIZZ_TESTS=ON" + ]; + + meta = with stdenv.lib; { + homepage = "https://github.com/sfztools/sfizz"; + description = "SFZ jack client and LV2 plugin"; + license = licenses.bsd2; + maintainers = [ maintainers.magnetophon ]; + platforms = platforms.all; + badPlatforms = platforms.darwin; + }; +} diff --git a/pkgs/applications/audio/sfxr-qt/default.nix b/pkgs/applications/audio/sfxr-qt/default.nix index 615a8a8c660..165f8446c76 100644 --- a/pkgs/applications/audio/sfxr-qt/default.nix +++ b/pkgs/applications/audio/sfxr-qt/default.nix @@ -10,12 +10,12 @@ mkDerivation rec { pname = "sfxr-qt"; - version = "1.2.0"; + version = "1.3.0"; src = fetchFromGitHub { owner = "agateau"; repo = "sfxr-qt"; rev = version; - sha256 = "1ndw1dcmzvkrc6gnb0y057zb4lqlhwrv18jlbx26w3s4xrbxqr41"; + sha256 = "15yjgjl1c5k816mnpc09104zq0ack2a3mjsxmhcik7cmjkfiipr5"; fetchSubmodules = true; }; nativeBuildInputs = [ @@ -27,10 +27,9 @@ mkDerivation rec { qtquickcontrols2 SDL ]; - configurePhase = "cmake . -DCMAKE_INSTALL_PREFIX=$out"; meta = with lib; { - homepage = https://github.com/agateau/sfxr-qt; + homepage = "https://github.com/agateau/sfxr-qt"; description = "A sound effect generator, QtQuick port of sfxr"; license = licenses.gpl2; maintainers = with maintainers; [ fgaz ]; diff --git a/pkgs/applications/audio/shntool/default.nix b/pkgs/applications/audio/shntool/default.nix index e3bfc60a40a..de18f3c2ce8 100644 --- a/pkgs/applications/audio/shntool/default.nix +++ b/pkgs/applications/audio/shntool/default.nix @@ -5,7 +5,7 @@ stdenv.mkDerivation { pname = "shntool"; src = fetchurl { - url = http://www.etree.org/shnutils/shntool/dist/src/shntool-3.0.10.tar.gz; + url = "http://www.etree.org/shnutils/shntool/dist/src/shntool-3.0.10.tar.gz"; sha256 = "00i1rbjaaws3drkhiczaign3lnbhr161b7rbnjr8z83w8yn2wc3l"; }; @@ -13,7 +13,7 @@ stdenv.mkDerivation { meta = { description = "Multi-purpose WAVE data processing and reporting utility"; - homepage = http://www.etree.org/shnutils/shntool/; + homepage = "http://www.etree.org/shnutils/shntool/"; license = stdenv.lib.licenses.gpl2Plus; platforms = stdenv.lib.platforms.all; maintainers = with stdenv.lib.maintainers; [ jcumming ]; diff --git a/pkgs/applications/audio/shortwave/default.nix b/pkgs/applications/audio/shortwave/default.nix new file mode 100644 index 00000000000..d26d314cd3e --- /dev/null +++ b/pkgs/applications/audio/shortwave/default.nix @@ -0,0 +1,87 @@ +{ stdenv +, fetchFromGitLab +, cargo +, dbus +, desktop-file-utils +, gdk-pixbuf +, gettext +, glib +, gst_all_1 +, gtk3 +, libhandy +, meson +, ninja +, openssl +, pkg-config +, python3 +, rust +, rustc +, rustPlatform +, sqlite +, wrapGAppsHook +}: + +rustPlatform.buildRustPackage rec { + pname = "shortwave"; + version = "1.0.1"; + + src = fetchFromGitLab { + domain = "gitlab.gnome.org"; + owner = "World"; + repo = "Shortwave"; + rev = version; + sha256 = "13lhlh75vw02vkcknl4nvy0yvpdf0qx811mmyja8bzs4rj1j9kr8"; + }; + + cargoSha256 = "0aph5z54a6i5p8ga5ghhx1c9hjc8zdw5pkv9inmanca0bq3hkdlh"; + + nativeBuildInputs = [ + cargo + desktop-file-utils + gettext + glib # for glib-compile-schemas + meson + ninja + pkg-config + python3 + rustc + wrapGAppsHook + ]; + + buildInputs = [ + dbus + gdk-pixbuf + glib + gtk3 + libhandy + openssl + sqlite + ] ++ (with gst_all_1; [ + gstreamer + gst-plugins-base + gst-plugins-good + gst-plugins-bad + ]); + + # Don't use buildRustPackage phases, only use it for rust deps setup + configurePhase = null; + buildPhase = null; + checkPhase = null; + installPhase = null; + + postPatch = '' + patchShebangs build-aux/meson/postinstall.py + ''; + + meta = with stdenv.lib; { + homepage = "https://gitlab.gnome.org/World/Shortwave"; + description = "Find and listen to internet radio stations"; + longDescription = '' + Shortwave is a streaming audio player designed for the GNOME + desktop. It is the successor to the older Gradio application. + ''; + maintainers = with maintainers; [ lasandell ]; + license = licenses.gpl3Plus; + platforms = platforms.linux; + }; +} diff --git a/pkgs/applications/audio/sidplayfp/default.nix b/pkgs/applications/audio/sidplayfp/default.nix index aff8c173d9f..b0a50bbf128 100644 --- a/pkgs/applications/audio/sidplayfp/default.nix +++ b/pkgs/applications/audio/sidplayfp/default.nix @@ -14,7 +14,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "A SID player using libsidplayfp"; - homepage = https://sourceforge.net/projects/sidplay-residfp/; + homepage = "https://sourceforge.net/projects/sidplay-residfp/"; license = with licenses; [ gpl2Plus ]; maintainers = with maintainers; [ dezgeg ]; platforms = with platforms; linux; diff --git a/pkgs/applications/audio/sisco.lv2/default.nix b/pkgs/applications/audio/sisco.lv2/default.nix index f95655f5e9a..07215fc42f8 100644 --- a/pkgs/applications/audio/sisco.lv2/default.nix +++ b/pkgs/applications/audio/sisco.lv2/default.nix @@ -36,7 +36,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Simple audio oscilloscope with variable time scale, triggering, cursors and numeric readout in LV2 plugin format"; - homepage = http://x42.github.io/sisco.lv2/; + homepage = "http://x42.github.io/sisco.lv2/"; license = licenses.gpl2; maintainers = [ maintainers.e-user ]; platforms = platforms.linux; diff --git a/pkgs/applications/audio/snapcast/default.nix b/pkgs/applications/audio/snapcast/default.nix index 21a36cecbe5..531a633f05d 100644 --- a/pkgs/applications/audio/snapcast/default.nix +++ b/pkgs/applications/audio/snapcast/default.nix @@ -59,7 +59,7 @@ stdenv.mkDerivation rec { meta = with lib; { description = "Synchronous multi-room audio player"; - homepage = https://github.com/badaix/snapcast; + homepage = "https://github.com/badaix/snapcast"; maintainers = with maintainers; [ fpletz ]; license = licenses.gpl3; }; diff --git a/pkgs/applications/audio/snd/default.nix b/pkgs/applications/audio/snd/default.nix index 2ba9d4f50c3..9bc8fcb6694 100644 --- a/pkgs/applications/audio/snd/default.nix +++ b/pkgs/applications/audio/snd/default.nix @@ -4,11 +4,11 @@ }: stdenv.mkDerivation rec { - name = "snd-19.9"; + name = "snd-20.2"; src = fetchurl { url = "mirror://sourceforge/snd/${name}.tar.gz"; - sha256 = "13s8fahpsjygjdrcwmprcrz23ny3klaj2rh2xzdv3bfs69gxvhys"; + sha256 = "0ip4sfyxqlbghlggipmvvqjqs1a7qas0zcmzw8d1nwg6krjkfj0r"; }; nativeBuildInputs = [ pkgconfig ]; @@ -20,7 +20,7 @@ stdenv.mkDerivation rec { meta = { description = "Sound editor"; - homepage = http://ccrma.stanford.edu/software/snd; + homepage = "http://ccrma.stanford.edu/software/snd"; platforms = stdenv.lib.platforms.linux; license = stdenv.lib.licenses.free; maintainers = with stdenv.lib.maintainers; [ ]; diff --git a/pkgs/applications/audio/sndpeek/default.nix b/pkgs/applications/audio/sndpeek/default.nix index ecdafdaeadd..d239fda11ae 100644 --- a/pkgs/applications/audio/sndpeek/default.nix +++ b/pkgs/applications/audio/sndpeek/default.nix @@ -26,7 +26,7 @@ stdenv.mkDerivation rec { libXext libXi ]; - buildFlags = "linux-alsa"; + buildFlags = [ "linux-alsa" ]; installPhase = '' mkdir -p $out/bin @@ -49,7 +49,7 @@ stdenv.mkDerivation rec { * available on MacOS X, Linux, and Windows under GPL * part of the sndtools distribution. ''; - homepage = https://soundlab.cs.princeton.edu/software/sndpeek/; + homepage = "https://soundlab.cs.princeton.edu/software/sndpeek/"; license = licenses.gpl2; maintainers = [ maintainers.laikq ]; }; diff --git a/pkgs/applications/audio/sonata/default.nix b/pkgs/applications/audio/sonata/default.nix index b9293fe2729..68eefadf411 100644 --- a/pkgs/applications/audio/sonata/default.nix +++ b/pkgs/applications/audio/sonata/default.nix @@ -61,7 +61,7 @@ in buildPythonApplication rec { - Commandline control - Available in 24 languages ''; - homepage = https://www.nongnu.org/sonata/; + homepage = "https://www.nongnu.org/sonata/"; license = stdenv.lib.licenses.gpl3; platforms = stdenv.lib.platforms.linux; maintainers = [ stdenv.lib.maintainers.rvl ]; diff --git a/pkgs/applications/audio/sonic-lineup/default.nix b/pkgs/applications/audio/sonic-lineup/default.nix new file mode 100644 index 00000000000..b837eb07cf1 --- /dev/null +++ b/pkgs/applications/audio/sonic-lineup/default.nix @@ -0,0 +1,38 @@ +{ stdenv, fetchurl, alsaLib, boost, bzip2, fftw, fftwFloat, libfishsound +, libid3tag, liblo, libmad, liboggz, libpulseaudio, libsamplerate +, libsndfile, lrdf, opusfile, portaudio, rubberband, serd, sord, capnproto +, wrapQtAppsHook, pkgconfig +}: + +stdenv.mkDerivation rec { + pname = "sonic-lineup"; + version = "1.0.1"; + + src = fetchurl { + url = "https://code.soundsoftware.ac.uk/attachments/download/2610/${pname}-${version}.tar.gz"; + sha256 = "0w4v5zr81d8fh97y820r0vj1rrbl0kwgvhfkdnyl4hiabs97b1i7"; + }; + + buildInputs = + [ alsaLib boost bzip2 fftw fftwFloat libfishsound libid3tag liblo + libmad liboggz libpulseaudio libsamplerate libsndfile lrdf opusfile + portaudio rubberband serd sord capnproto + ]; + + nativeBuildInputs = [ pkgconfig wrapQtAppsHook ]; + + enableParallelBuilding = true; + + # comment out the tests + preConfigure = '' + sed -i 's/sub_test_svcore_/#sub_test_svcore_/' sonic-lineup.pro + ''; + + meta = with stdenv.lib; { + description = "Comparative visualisation of related audio recordings"; + homepage = "https://www.sonicvisualiser.org/sonic-lineup/"; + license = licenses.gpl2Plus; + maintainers = [ maintainers.vandenoever ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/applications/audio/sonic-pi/default.nix b/pkgs/applications/audio/sonic-pi/default.nix index ac72a26b0ee..534ea135880 100644 --- a/pkgs/applications/audio/sonic-pi/default.nix +++ b/pkgs/applications/audio/sonic-pi/default.nix @@ -105,5 +105,7 @@ mkDerivation rec { license = lib.licenses.mit; maintainers = with lib.maintainers; [ Phlogistique kamilchm ]; platforms = lib.platforms.linux; + # sonic-pi depends on ruby 2.4 which we don't support anymore + broken = true; }; } diff --git a/pkgs/applications/audio/sonic-visualiser/default.nix b/pkgs/applications/audio/sonic-visualiser/default.nix index 501d097f29f..e8b6a4d4313 100644 --- a/pkgs/applications/audio/sonic-visualiser/default.nix +++ b/pkgs/applications/audio/sonic-visualiser/default.nix @@ -1,23 +1,25 @@ # TODO add plugins having various licenses, see http://www.vamp-plugins.org/download.html { stdenv, fetchurl, alsaLib, bzip2, fftw, libjack2, libX11, liblo -, libmad, libogg, librdf, librdf_raptor, librdf_rasqal, libsamplerate -, libsndfile, pkgconfig, libpulseaudio, qtbase, redland -, qmake, rubberband, serd, sord, vampSDK, fftwFloat +, libmad, libogg, lrdf, librdf_raptor, librdf_rasqal, libsamplerate +, libsndfile, pkgconfig, libpulseaudio, qtbase, qtsvg, redland +, rubberband, serd, sord, vamp-plugin-sdk, fftwFloat +, capnproto, liboggz, libfishsound, libid3tag, opusfile +, wrapQtAppsHook }: stdenv.mkDerivation rec { pname = "sonic-visualiser"; - version = "2.4.1"; + version = "4.0.1"; src = fetchurl { - url = "https://code.soundsoftware.ac.uk/attachments/download/1185/${pname}-${version}.tar.gz"; - sha256 = "06nlha70kgrby16nyhngrv5q846xagnxdinv608v7ga7vpywwmyb"; + url = "https://code.soundsoftware.ac.uk/attachments/download/2607/${pname}-${version}.tar.gz"; + sha256 = "14674adzp3chilymna236qyvci3b1zmi3wyz696wk7bcd3ndpsg6"; }; buildInputs = - [ libsndfile qtbase fftw fftwFloat bzip2 librdf rubberband - libsamplerate vampSDK alsaLib librdf_raptor librdf_rasqal redland + [ libsndfile qtbase qtsvg fftw fftwFloat bzip2 lrdf rubberband + libsamplerate vamp-plugin-sdk alsaLib librdf_raptor librdf_rasqal redland serd sord # optional @@ -26,31 +28,29 @@ stdenv.mkDerivation rec { libpulseaudio libmad libogg # ? - # fishsound + libfishsound liblo libX11 + capnproto + liboggz + libid3tag + opusfile ]; - nativeBuildInputs = [ pkgconfig qmake ]; + nativeBuildInputs = [ pkgconfig wrapQtAppsHook ]; - configurePhase = '' - for i in sonic-visualiser svapp svcore svgui; - do cd $i && qmake PREFIX=$out && cd ..; - done - ''; + enableParallelBuilding = true; - installPhase = '' - mkdir -p $out/{bin,share/sonic-visualiser} - cp sonic-visualiser $out/bin/ - cp -r samples $out/share/sonic-visualiser/ + # comment out the tests + preConfigure = '' + sed -i 's/sub_test_svcore_/#sub_test_svcore_/' sonic-visualiser.pro ''; meta = with stdenv.lib; { description = "View and analyse contents of music audio files"; - homepage = http://www.sonicvisualiser.org/; + homepage = "https://www.sonicvisualiser.org/"; license = licenses.gpl2Plus; maintainers = [ maintainers.goibhniu maintainers.marcweber ]; platforms = platforms.linux; - broken = true; }; } diff --git a/pkgs/applications/audio/sooperlooper/default.nix b/pkgs/applications/audio/sooperlooper/default.nix index 768b40a1138..3fb111db851 100644 --- a/pkgs/applications/audio/sooperlooper/default.nix +++ b/pkgs/applications/audio/sooperlooper/default.nix @@ -37,7 +37,7 @@ stdenv.mkDerivation rec { ''; version = version; - homepage = http://essej.net/sooperlooper/index.html; + homepage = "http://essej.net/sooperlooper/index.html"; license = stdenv.lib.licenses.gpl2; maintainers = [ stdenv.lib.maintainers.magnetophon ]; platforms = stdenv.lib.platforms.linux; diff --git a/pkgs/applications/audio/sorcer/default.nix b/pkgs/applications/audio/sorcer/default.nix index 5d8ae0928c9..7601f942868 100644 --- a/pkgs/applications/audio/sorcer/default.nix +++ b/pkgs/applications/audio/sorcer/default.nix @@ -20,7 +20,7 @@ stdenv.mkDerivation rec { ''; meta = with stdenv.lib; { - homepage = http://openavproductions.com/sorcer/; + homepage = "http://openavproductions.com/sorcer/"; description = "A wavetable LV2 plugin synth, targeted at the electronic / dubstep genre"; license = licenses.gpl3; maintainers = [ maintainers.magnetophon ]; diff --git a/pkgs/applications/audio/sound-juicer/default.nix b/pkgs/applications/audio/sound-juicer/default.nix index 7f22a03c1bb..dcad0cec1e8 100644 --- a/pkgs/applications/audio/sound-juicer/default.nix +++ b/pkgs/applications/audio/sound-juicer/default.nix @@ -27,13 +27,12 @@ in stdenv.mkDerivation rec{ passthru = { updateScript = gnome3.updateScript { packageName = pname; - attrPath = "gnome3.${pname}"; }; }; meta = with stdenv.lib; { description = "A Gnome CD Ripper"; - homepage = https://wiki.gnome.org/Apps/SoundJuicer; + homepage = "https://wiki.gnome.org/Apps/SoundJuicer"; maintainers = [ maintainers.bdimcheff ]; license = licenses.gpl2; platforms = platforms.linux; diff --git a/pkgs/applications/audio/soundscape-renderer/default.nix b/pkgs/applications/audio/soundscape-renderer/default.nix index 5b5f01eef5c..741211bd90d 100644 --- a/pkgs/applications/audio/soundscape-renderer/default.nix +++ b/pkgs/applications/audio/soundscape-renderer/default.nix @@ -20,7 +20,7 @@ stdenv.mkDerivation { version = "2016-11-03"; src = fetchgit { - url = https://github.com/SoundScapeRenderer/ssr; + url = "https://github.com/SoundScapeRenderer/ssr"; rev = "0dd0136dd24e47b63d8a4e05de467f5c7b047ec9"; sha256 = "095x2spv9bmg6pi71mpajnghbqj58ziflg16f9854awx0qp9d8x7"; }; @@ -45,7 +45,7 @@ stdenv.mkDerivation { ''; meta = { - homepage = http://spatialaudio.net/ssr/; + homepage = "http://spatialaudio.net/ssr/"; description = "The SoundScape Renderer (SSR) is a tool for real-time spatial audio reproduction"; license = stdenv.lib.licenses.gpl3; maintainers = [ stdenv.lib.maintainers.fridh ]; diff --git a/pkgs/applications/audio/soundtracker/default.nix b/pkgs/applications/audio/soundtracker/default.nix new file mode 100644 index 00000000000..ce73203c959 --- /dev/null +++ b/pkgs/applications/audio/soundtracker/default.nix @@ -0,0 +1,51 @@ +{ stdenv +, fetchurl +, pkg-config +, autoconf +, gtk2 +, alsaLib +, SDL +, jack2 +, goocanvas # graphical envelope editing +}: + +stdenv.mkDerivation rec { + pname = "soundtracker"; + version = "1.0.0.1"; + + src = fetchurl { + # Past releases get moved to the "old releases" directory. + # Only the latest release (currently a prerelease) is at the top level. + url = "mirror://sourceforge/soundtracker/old%20releases/soundtracker-${version}.tar.bz2"; + sha256 = "1ggliswz5ngmlnrnyhv3x1arh5w77an0ww9p53cddp9aas5q11jm"; + }; + + nativeBuildInputs = [ + pkg-config + autoconf + ]; + buildInputs = [ + gtk2 + SDL + jack2 + goocanvas + ] ++ stdenv.lib.optional stdenv.isLinux alsaLib; + + meta = with stdenv.lib; { + description = "A music tracking tool similar in design to the DOS program FastTracker and the Amiga legend ProTracker"; + longDescription = '' + SoundTracker is a pattern-oriented music editor (similar to the DOS + program 'FastTracker'). Samples are lined up on tracks and patterns + which are then arranged to a song. Supported module formats are XM and + MOD; the player code is the one from OpenCP. A basic sample recorder + and editor is also included. + ''; + homepage = "http://www.soundtracker.org/"; + downloadPage = "https://sourceforge.net/projects/soundtracker/files/"; + license = licenses.gpl2Plus; + maintainers = with maintainers; [ fgaz ]; + platforms = platforms.all; + # gdk/gdkx.h not found + broken = stdenv.isDarwin; + }; +} diff --git a/pkgs/applications/audio/spectmorph/default.nix b/pkgs/applications/audio/spectmorph/default.nix index 7544a3520c7..d8209dad02d 100644 --- a/pkgs/applications/audio/spectmorph/default.nix +++ b/pkgs/applications/audio/spectmorph/default.nix @@ -2,10 +2,10 @@ stdenv.mkDerivation rec { pname = "spectmorph"; - version = "0.5.0"; + version = "0.5.1"; src = fetchurl { url = "http://spectmorph.org/files/releases/${pname}-${version}.tar.bz2"; - sha256 = "003wznv3sy1b4g55vqii9pr3i3bb3zmj7nqvwrz7vjsfn2xyd1bn"; + sha256 = "06jrfx5g9c56swxn78lix0gyrjkhi21l9wqs56knp8iqcgfi3m0s"; }; buildInputs = [ libjack2 lv2 glib qt5.qtbase libao cairo libsndfile fftwFloat ]; @@ -14,7 +14,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Allows to analyze samples of musical instruments, and to combine them (morphing) to construct hybrid sounds"; - homepage = http://spectmorph.org; + homepage = "http://spectmorph.org"; license = licenses.gpl3; platforms = [ "x86_64-linux" "i686-linux" ]; maintainers = [ maintainers.magnetophon ]; diff --git a/pkgs/applications/audio/spectrojack/default.nix b/pkgs/applications/audio/spectrojack/default.nix index 4c1682b1e0b..35534750d0c 100644 --- a/pkgs/applications/audio/spectrojack/default.nix +++ b/pkgs/applications/audio/spectrojack/default.nix @@ -23,7 +23,7 @@ stdenv.mkDerivation rec { meta = { description = "A little spectrogram/audiogram/sonogram/whatever for JACK"; - homepage = http://sed.free.fr/spectrojack; + homepage = "http://sed.free.fr/spectrojack"; license = stdenv.lib.licenses.publicDomain; maintainers = with stdenv.lib.maintainers; [ sleexyz ]; platforms = with stdenv.lib.platforms; linux; diff --git a/pkgs/applications/audio/speech-denoiser/default.nix b/pkgs/applications/audio/speech-denoiser/default.nix index 6598d24fb07..706a6956c5d 100644 --- a/pkgs/applications/audio/speech-denoiser/default.nix +++ b/pkgs/applications/audio/speech-denoiser/default.nix @@ -34,7 +34,7 @@ stdenv.mkDerivation { meta = with stdenv.lib; { description = "Speech denoise lv2 plugin based on RNNoise library"; - homepage = https://github.com/lucianodato/speech-denoiser; + homepage = "https://github.com/lucianodato/speech-denoiser"; license = licenses.lgpl3; maintainers = [ maintainers.magnetophon ]; platforms = platforms.linux; diff --git a/pkgs/applications/audio/spek/default.nix b/pkgs/applications/audio/spek/default.nix index f4922e388c4..88b22c59ae5 100644 --- a/pkgs/applications/audio/spek/default.nix +++ b/pkgs/applications/audio/spek/default.nix @@ -19,7 +19,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Analyse your audio files by showing their spectrogram"; - homepage = http://spek.cc/; + homepage = "http://spek.cc/"; license = licenses.gpl3; platforms = platforms.all; maintainers = [ maintainers.bjornfor ]; diff --git a/pkgs/applications/audio/split2flac/default.nix b/pkgs/applications/audio/split2flac/default.nix index 3c9565df919..efad434e307 100644 --- a/pkgs/applications/audio/split2flac/default.nix +++ b/pkgs/applications/audio/split2flac/default.nix @@ -54,7 +54,7 @@ in stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Split flac/ape/wv/wav + cue sheet into separate tracks"; - homepage = https://github.com/ftrvxmtrx/split2flac; + homepage = "https://github.com/ftrvxmtrx/split2flac"; license = licenses.mit; platforms = platforms.all; maintainers = with maintainers; [ jfrankenau ]; diff --git a/pkgs/applications/audio/spotify-tui/default.nix b/pkgs/applications/audio/spotify-tui/default.nix index bd4aaf5a2d6..5f9cf2720cd 100644 --- a/pkgs/applications/audio/spotify-tui/default.nix +++ b/pkgs/applications/audio/spotify-tui/default.nix @@ -2,25 +2,26 @@ rustPlatform.buildRustPackage rec { pname = "spotify-tui"; - version = "0.10.0"; + version = "0.17.1"; src = fetchFromGitHub { owner = "Rigellute"; repo = "spotify-tui"; rev = "v${version}"; - sha256 = "10wrlfi50lsf6qjsi9qklw2mk2fbf0jib7f841v842l9k9zw0hrg"; + sha256 = "1gsddjinxmglm05hhphclax08d9pig1f0wjjs3bbcq096fydxgfs"; }; - cargoSha256 = "140m3pryvbc96xvl5ymz68msrx93rmvvy0y8skvc40yxwl401inc"; + cargoSha256 = "1y398ypckk3gw1sfzf97xzwf5d5z3kxlcpn3bccmsfr59kvkf661"; - nativeBuildInputs = [ pkgconfig python3 ]; + nativeBuildInputs = [ pkgconfig ] ++ stdenv.lib.optionals stdenv.isLinux [ python3 ]; buildInputs = [ openssl ] - ++ stdenv.lib.optional stdenv.isLinux libxcb + ++ stdenv.lib.optional stdenv.isLinux libxcb ++ stdenv.lib.optionals stdenv.isDarwin [ AppKit Security ]; meta = with stdenv.lib; { description = "Spotify for the terminal written in Rust"; - homepage = https://github.com/Rigellute/spotify-tui; + homepage = "https://github.com/Rigellute/spotify-tui"; + changelog = "https://github.com/Rigellute/spotify-tui/releases/tag/v${version}"; license = licenses.mit; maintainers = with maintainers; [ jwijenbergh ]; platforms = platforms.all; diff --git a/pkgs/applications/audio/spotify/default.nix b/pkgs/applications/audio/spotify/default.nix index bc95ec625bb..245d96dee01 100644 --- a/pkgs/applications/audio/spotify/default.nix +++ b/pkgs/applications/audio/spotify/default.nix @@ -10,14 +10,14 @@ let # If an update breaks things, one of those might have valuable info: # https://aur.archlinux.org/packages/spotify/ # https://community.spotify.com/t5/Desktop-Linux - version = "1.1.10.546.ge08ef575-19"; + version = "1.1.26.501.gbe11e53b-15"; # To get the latest stable revision: # curl -H 'X-Ubuntu-Series: 16' 'https://api.snapcraft.io/api/v1/snaps/details/spotify?channel=stable' | jq '.download_url,.version,.last_updated' # To get general information: # curl -H 'Snap-Device-Series: 16' 'https://api.snapcraft.io/v2/snaps/info/spotify' | jq '.' # More examples of api usage: # https://github.com/canonical-websites/snapcraft.io/blob/master/webapp/publisher/snaps/views.py - rev = "36"; + rev = "41"; deps = [ @@ -56,6 +56,8 @@ let xorg.libXScrnSaver xorg.libXtst xorg.libxcb + xorg.libSM + xorg.libICE zlib ]; @@ -75,7 +77,7 @@ stdenv.mkDerivation { # https://community.spotify.com/t5/Desktop-Linux/Redistribute-Spotify-on-Linux-Distributions/td-p/1695334 src = fetchurl { url = "https://api.snapcraft.io/api/v1/snaps/download/pOBIoZ2LrCB3rDohMxoYGnbN14EHOgD7_${rev}.snap"; - sha512 = "c49f1a86a9b737e64a475bbe62754a36f607669e908eb725a2395f0a0a6b95968e0c8ce27ab2c8b6c92fe8cbacb1ef58de11c79b92dc0f58c2c6d3a140706a1f"; + sha512 = "41bc8d20388bab39058d0709d99b1c8e324ea37af217620797356b8bc0b24aedbe801eaaa6e00a93e94e26765602e5dc27ad423ce2e777b4bec1b92daf04f81e"; }; buildInputs = [ squashfsTools makeWrapper ]; @@ -156,10 +158,10 @@ stdenv.mkDerivation { ''; meta = with stdenv.lib; { - homepage = https://www.spotify.com/; + homepage = "https://www.spotify.com/"; description = "Play music from the Spotify music service"; license = licenses.unfree; - maintainers = with maintainers; [ eelco ftrvxmtrx sheenobu mudri timokau ]; + maintainers = with maintainers; [ eelco ftrvxmtrx sheenobu mudri timokau ma27 ]; platforms = [ "x86_64-linux" ]; }; } diff --git a/pkgs/applications/audio/spotifyd/default.nix b/pkgs/applications/audio/spotifyd/default.nix index 36ab017c5cb..121f9cbc960 100644 --- a/pkgs/applications/audio/spotifyd/default.nix +++ b/pkgs/applications/audio/spotifyd/default.nix @@ -2,25 +2,28 @@ , withALSA ? true, alsaLib ? null , withPulseAudio ? false, libpulseaudio ? null , withPortAudio ? false, portaudio ? null +, withMpris ? false +, withKeyring ? false +, dbus ? null }: rustPlatform.buildRustPackage rec { pname = "spotifyd"; - version = "0.2.20"; + version = "0.2.24"; src = fetchFromGitHub { owner = "Spotifyd"; repo = "spotifyd"; rev = "v${version}"; - sha256 = "1hf4wpk7r0s4jpjhxaz67y1hd8jx9ns5imd85r3cdg4lxf3j5gph"; + sha256 = "08i0zm7kgprixqjpgaxk7xid1njgj6lmi896jf9fsjqzdzlblqk8"; }; - cargoSha256 = "1h3fis47hmxvppiv1icjhgp48nd46gayfcmzfjs34q6jask90n0w"; + cargoSha256 = "0200apqbx769ggjnjr0m72g61ikhml2xak5n1il2pvfx1yf5nw0n"; cargoBuildFlags = [ "--no-default-features" "--features" - "${stdenv.lib.optionalString withALSA "alsa_backend,"}${stdenv.lib.optionalString withPulseAudio "pulseaudio_backend,"}${stdenv.lib.optionalString withPortAudio "portaudio_backend,"}" + "${stdenv.lib.optionalString withALSA "alsa_backend,"}${stdenv.lib.optionalString withPulseAudio "pulseaudio_backend,"}${stdenv.lib.optionalString withPortAudio "portaudio_backend,"}${stdenv.lib.optionalString withMpris "dbus_mpris,"}${stdenv.lib.optionalString withKeyring "dbus_keyring,"}" ]; nativeBuildInputs = [ pkgconfig ]; @@ -28,7 +31,8 @@ rustPlatform.buildRustPackage rec { buildInputs = [ openssl ] ++ stdenv.lib.optional withALSA alsaLib ++ stdenv.lib.optional withPulseAudio libpulseaudio - ++ stdenv.lib.optional withPortAudio portaudio; + ++ stdenv.lib.optional withPortAudio portaudio + ++ stdenv.lib.optional (withMpris || withKeyring) dbus; doCheck = false; diff --git a/pkgs/applications/audio/spotifywm/default.nix b/pkgs/applications/audio/spotifywm/default.nix index 2380c8e5d9e..a51e82f29c4 100644 --- a/pkgs/applications/audio/spotifywm/default.nix +++ b/pkgs/applications/audio/spotifywm/default.nix @@ -22,7 +22,7 @@ stdenv.mkDerivation { ''; meta = with stdenv.lib; { - homepage = https://github.com/dasJ/spotifywm; + homepage = "https://github.com/dasJ/spotifywm"; description = "Wrapper around Spotify that correctly sets class name before opening the window"; license = licenses.mit; platforms = platforms.linux; diff --git a/pkgs/applications/audio/squeezelite/default.nix b/pkgs/applications/audio/squeezelite/default.nix index 3184f89ced9..de135706ad3 100644 --- a/pkgs/applications/audio/squeezelite/default.nix +++ b/pkgs/applications/audio/squeezelite/default.nix @@ -1,19 +1,56 @@ -{ stdenv, fetchFromGitHub, alsaLib, faad2, flac, libmad, libvorbis, mpg123 }: +{ stdenv, fetchFromGitHub +, alsaLib, flac, libmad, libvorbis, mpg123 +, dsdSupport ? true +, faad2Support ? true, faad2 +, ffmpegSupport ? true, ffmpeg +, opusSupport ? true, opusfile +, resampleSupport ? true, soxr +, sslSupport ? true, openssl +}: -stdenv.mkDerivation { - name = "squeezelite-git-2018-08-14"; +let + concatStringsSep = stdenv.lib.concatStringsSep; + optional = stdenv.lib.optional; + opts = [ "-DLINKALL" ] + ++ optional dsdSupport "-DDSD" + ++ optional (!faad2Support) "-DNO_FAAD" + ++ optional ffmpegSupport "-DFFMPEG" + ++ optional opusSupport "-DOPUS" + ++ optional resampleSupport "-DRESAMPLE" + ++ optional sslSupport "-DUSE_SSL"; + +in stdenv.mkDerivation { + pname = "squeezelite"; + + # versions are specified in `squeezelite.h` + # see https://github.com/ralph-irving/squeezelite/issues/29 + version = "1.9.6.1196"; src = fetchFromGitHub { owner = "ralph-irving"; repo = "squeezelite"; - rev = "ecb6e3696a42113994640e5345d0b5ca2e77d28b"; - sha256 = "0di3d5qy8fhawijq6bxy524fgffvzl08dprrws0fs2j1a70fs0fh"; + rev = "2b508464dce2cbdb2a3089c58df2a6fbc36328c0"; + sha256 = "024ypr1da2r079k3hgiifzd3d3wcfprhbl5zdm40zm0c7frzmr8i"; }; - buildInputs = [ alsaLib faad2 flac libmad libvorbis mpg123 ]; + buildInputs = [ alsaLib flac libmad libvorbis mpg123 ] + ++ optional faad2Support faad2 + ++ optional ffmpegSupport ffmpeg + ++ optional opusSupport opusfile + ++ optional resampleSupport soxr + ++ optional sslSupport openssl; enableParallelBuilding = true; + postPatch = '' + substituteInPlace opus.c \ + --replace "" "" + ''; + + preBuild = '' + export OPTS="${concatStringsSep " " opts}" + ''; + installPhase = '' runHook preInstall @@ -25,8 +62,9 @@ stdenv.mkDerivation { meta = with stdenv.lib; { description = "Lightweight headless squeezebox client emulator"; - homepage = https://github.com/ralph-irving/squeezelite; - license = licenses.gpl3; + homepage = "https://github.com/ralph-irving/squeezelite"; + license = with licenses; [ gpl3 ] ++ optional dsdSupport bsd2; + maintainers = with maintainers; [ samdoshi ]; platforms = platforms.linux; }; } diff --git a/pkgs/applications/audio/squishyball/default.nix b/pkgs/applications/audio/squishyball/default.nix index 496ce779ffb..e6dd48018e7 100644 --- a/pkgs/applications/audio/squishyball/default.nix +++ b/pkgs/applications/audio/squishyball/default.nix @@ -42,7 +42,7 @@ stdenv.mkDerivation rec { comparisons of groups of up to ten samples; this is the default mode of operation. ''; - homepage = https://svn.xiph.org/trunk/squishyball; + homepage = "https://svn.xiph.org/trunk/squishyball"; license = licenses.gpl2Plus; maintainers = with maintainers; [ michalrus ]; platforms = platforms.linux; diff --git a/pkgs/applications/audio/ssrc/default.nix b/pkgs/applications/audio/ssrc/default.nix index 1247bbc19f9..9d519e14147 100644 --- a/pkgs/applications/audio/ssrc/default.nix +++ b/pkgs/applications/audio/ssrc/default.nix @@ -33,7 +33,7 @@ stdenv.mkDerivation rec { ''; version = version; - homepage = http://shibatch.sourceforge.net/; + homepage = "http://shibatch.sourceforge.net/"; license = licenses.gpl2; maintainers = with maintainers; [ leenaars]; platforms = with platforms; [ linux ] ; diff --git a/pkgs/applications/audio/stone-phaser/default.nix b/pkgs/applications/audio/stone-phaser/default.nix index 6e64ebc7fb3..d36b28df978 100644 --- a/pkgs/applications/audio/stone-phaser/default.nix +++ b/pkgs/applications/audio/stone-phaser/default.nix @@ -25,7 +25,7 @@ stdenv.mkDerivation rec { installFlags = [ "PREFIX=$(out)" ]; meta = with stdenv.lib; { - homepage = https://github.com/jpcima/stone-phaser; + homepage = "https://github.com/jpcima/stone-phaser"; description = "A classic analog phaser effect, made with DPF and Faust"; maintainers = [ maintainers.magnetophon ]; platforms = platforms.linux; diff --git a/pkgs/applications/audio/strawberry/default.nix b/pkgs/applications/audio/strawberry/default.nix index 07e7bb84c56..6c565911eb4 100644 --- a/pkgs/applications/audio/strawberry/default.nix +++ b/pkgs/applications/audio/strawberry/default.nix @@ -35,13 +35,13 @@ mkDerivation rec { pname = "strawberry"; - version = "0.6.7"; + version = "0.6.9"; src = fetchFromGitHub { owner = "jonaski"; repo = pname; rev = version; - sha256 = "14bw4hmysrbl4havz03s3wl8bv76380wddf5zzrjvfjjpwn333r6"; + sha256 = "0ssyqa14j54sja2dzhzrznbf1bbl0nc62p4jh2pd6fhinpw8y6dk"; }; buildInputs = [ diff --git a/pkgs/applications/audio/streamripper/default.nix b/pkgs/applications/audio/streamripper/default.nix index efa87a2f72c..55ed40c2fb8 100644 --- a/pkgs/applications/audio/streamripper/default.nix +++ b/pkgs/applications/audio/streamripper/default.nix @@ -13,7 +13,7 @@ stdenv.mkDerivation rec { buildInputs = [ glib libogg libvorbis libmad ]; meta = with stdenv.lib; { - homepage = http://streamripper.sourceforge.net/; + homepage = "http://streamripper.sourceforge.net/"; description = "Application that lets you record streaming mp3 to your hard drive"; license = licenses.gpl2; maintainers = with maintainers; [ the-kenny ]; diff --git a/pkgs/applications/audio/string-machine/default.nix b/pkgs/applications/audio/string-machine/default.nix new file mode 100644 index 00000000000..67053baa35f --- /dev/null +++ b/pkgs/applications/audio/string-machine/default.nix @@ -0,0 +1,36 @@ +{ stdenv, fetchFromGitHub, boost, cairo, lv2, pkg-config }: + +stdenv.mkDerivation rec { + pname = "string-machine"; + version = "unstable-2020-01-20"; + + src = fetchFromGitHub { + owner = "jpcima"; + repo = pname; + rev = "188082dd0beb9a3c341035604841c53675fe66c4"; + sha256 = "0l9xrzp3f0hk6h320qh250a0n1nbd6qhjmab21sjmrlb4ngy672v"; + fetchSubmodules = true; + }; + + postPatch = '' + patchShebangs ./dpf/utils/generate-ttl.sh + ''; + + nativeBuildInputs = [ pkg-config ]; + + buildInputs = [ + boost cairo lv2 + ]; + + makeFlags = [ + "PREFIX=$(out)" + ]; + + meta = with stdenv.lib; { + homepage = "https://github.com/jpcima/string-machine"; + description = "Digital model of electronic string ensemble instrument"; + maintainers = [ maintainers.magnetophon ]; + platforms = intersectLists platforms.linux platforms.x86; + license = licenses.boost; + }; +} diff --git a/pkgs/applications/audio/sunvox/default.nix b/pkgs/applications/audio/sunvox/default.nix index 1a3d1a96c85..48ad9bc971c 100644 --- a/pkgs/applications/audio/sunvox/default.nix +++ b/pkgs/applications/audio/sunvox/default.nix @@ -13,11 +13,11 @@ let in stdenv.mkDerivation rec { pname = "SunVox"; - version = "1.9.4c"; + version = "1.9.5d"; src = fetchurl { url = "http://www.warmplace.ru/soft/sunvox/sunvox-${version}.zip"; - sha256 = "19c1a4e28459e31e1a19986f219d4caa4eb2cb5bc9f6aa994abdbb2ebf6ac4ac"; + sha256 = "15pyc3dk4dqlivgzki8sv7xpwg3bbn5xv9338g16a0dbn7s3kich"; }; buildInputs = [ unzip ]; diff --git a/pkgs/applications/audio/svox/default.nix b/pkgs/applications/audio/svox/default.nix index 8acd8e0b88b..0f8e5143883 100644 --- a/pkgs/applications/audio/svox/default.nix +++ b/pkgs/applications/audio/svox/default.nix @@ -31,11 +31,11 @@ stdenv.mkDerivation { cp lang/*.bin $out/share/pico/lang ''; - NIX_CFLAGS_COMPILE = [ "-include stdint.h" ]; + NIX_CFLAGS_COMPILE = "-include stdint.h"; meta = with stdenv.lib; { description = "Text-to-speech engine"; - homepage = https://android.googlesource.com/platform/external/svox; + homepage = "https://android.googlesource.com/platform/external/svox"; platforms = platforms.linux; license = licenses.asl20; maintainers = with maintainers; [ abbradar ]; diff --git a/pkgs/applications/audio/swh-lv2/default.nix b/pkgs/applications/audio/swh-lv2/default.nix index b59752d7cc3..02499d54476 100644 --- a/pkgs/applications/audio/swh-lv2/default.nix +++ b/pkgs/applications/audio/swh-lv2/default.nix @@ -20,7 +20,7 @@ stdenv.mkDerivation rec { installPhase = "make install-system"; meta = with stdenv.lib; { - homepage = http://plugin.org.uk; + homepage = "http://plugin.org.uk"; description = "LV2 version of Steve Harris' SWH plugins"; longDescription = '' SWH plugins include: diff --git a/pkgs/applications/audio/synthv1/default.nix b/pkgs/applications/audio/synthv1/default.nix index 349c7acc3db..6339dad7f37 100644 --- a/pkgs/applications/audio/synthv1/default.nix +++ b/pkgs/applications/audio/synthv1/default.nix @@ -2,11 +2,11 @@ mkDerivation rec { pname = "synthv1"; - version = "0.9.11"; + version = "0.9.13"; src = fetchurl { url = "mirror://sourceforge/synthv1/${pname}-${version}.tar.gz"; - sha256 = "116k2vca9dygvsd684wvxm61p0l1xrrgdph4qrrprlsr6vj0llgm"; + sha256 = "0bb48myvgvqcibwm68qhd4852pjr2g19rasf059a799d1hzgfq3l"; }; buildInputs = [ qtbase qttools libjack2 alsaLib liblo lv2 ]; @@ -15,7 +15,7 @@ mkDerivation rec { meta = with stdenv.lib; { description = "An old-school 4-oscillator subtractive polyphonic synthesizer with stereo fx"; - homepage = https://synthv1.sourceforge.io/; + homepage = "https://synthv1.sourceforge.io/"; license = licenses.gpl2Plus; platforms = platforms.linux; maintainers = [ maintainers.goibhniu ]; diff --git a/pkgs/applications/audio/tambura/default.nix b/pkgs/applications/audio/tambura/default.nix index 030bb2c01a7..96f9bb7053e 100644 --- a/pkgs/applications/audio/tambura/default.nix +++ b/pkgs/applications/audio/tambura/default.nix @@ -26,7 +26,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "A FAUST patch inspired by the Indian Tambura/Tanpura - a four string drone instrument, known for its unique rich harmonic timbre"; - homepage = https://github.com/olilarkin/Tambura; + homepage = "https://github.com/olilarkin/Tambura"; license = licenses.gpl2; maintainers = [ maintainers.magnetophon ]; }; diff --git a/pkgs/applications/audio/tetraproc/default.nix b/pkgs/applications/audio/tetraproc/default.nix index 40362fdd496..8780e54bb7c 100644 --- a/pkgs/applications/audio/tetraproc/default.nix +++ b/pkgs/applications/audio/tetraproc/default.nix @@ -35,7 +35,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Converts the A-format signals from a tetrahedral Ambisonic microphone into B-format signals ready for recording"; - homepage = http://kokkinizita.linuxaudio.org/linuxaudio/; + homepage = "http://kokkinizita.linuxaudio.org/linuxaudio/"; license = licenses.gpl2; maintainers = with maintainers; [ magnetophon ]; platforms = platforms.linux; diff --git a/pkgs/applications/audio/timemachine/default.nix b/pkgs/applications/audio/timemachine/default.nix index 8c7ed20e748..8be43346bc0 100644 --- a/pkgs/applications/audio/timemachine/default.nix +++ b/pkgs/applications/audio/timemachine/default.nix @@ -4,12 +4,12 @@ stdenv.mkDerivation rec { pname = "timemachine"; - version = "0.3.3"; + version = "0.3.4"; src = fetchFromGitHub { owner = "swh"; repo = "timemachine"; rev = "v${version}"; - sha256 = "1jsvd29wiqigxyqxl2xjklla11fwyjy68vqivcnlr9f2af4ylym8"; + sha256 = "16fgyw6jnscx9279dczv72092dddghwlp53rkfw469kcgvjhwx0z"; }; nativeBuildInputs = [ pkgconfig ]; @@ -19,13 +19,11 @@ stdenv.mkDerivation rec { preConfigure = "./autogen.sh"; - NIX_LDFLAGS = [ - "-lm" - ]; + NIX_LDFLAGS = "-lm"; meta = { description = "JACK audio recorder"; - homepage = http://plugin.org.uk/timemachine/; + homepage = "http://plugin.org.uk/timemachine/"; license = stdenv.lib.licenses.lgpl2; platforms = stdenv.lib.platforms.linux; maintainers = [ stdenv.lib.maintainers.nico202 ]; diff --git a/pkgs/applications/audio/tony/default.nix b/pkgs/applications/audio/tony/default.nix new file mode 100644 index 00000000000..011d8025364 --- /dev/null +++ b/pkgs/applications/audio/tony/default.nix @@ -0,0 +1,37 @@ +{ stdenv, fetchurl, pkgconfig, wrapQtAppsHook +, alsaLib, boost, bzip2, fftw, fftwFloat, libX11, libfishsound, libid3tag +, libjack2, liblo, libmad, libogg, liboggz, libpulseaudio, libsamplerate +, libsndfile, lrdf, opusfile, qtbase, qtsvg, rubberband, serd, sord +}: + +stdenv.mkDerivation rec { + name = "tony-2.1.1"; + + src = fetchurl { + url = "https://code.soundsoftware.ac.uk/attachments/download/2616/${name}.tar.gz"; + sha256 = "03g2bmlj08lmgvh54dyd635xccjn730g4wwlhpvsw04bffz8b7fp"; + }; + + nativeBuildInputs = [ pkgconfig wrapQtAppsHook ]; + + buildInputs = [ + alsaLib boost bzip2 fftw fftwFloat libX11 libfishsound libid3tag + libjack2 liblo libmad libogg liboggz libpulseaudio libsamplerate + libsndfile lrdf opusfile qtbase qtsvg rubberband serd sord + ]; + + # comment out the tests + preConfigure = '' + sed -i 's/sub_test_svcore_/#sub_test_svcore_/' tony.pro + ''; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "Pitch and note annotation of unaccompanied melody"; + homepage = "https://www.sonicvisualiser.org/tony/"; + license = licenses.gpl2Plus; + maintainers = with maintainers; [ orivej ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/applications/audio/transcode/default.nix b/pkgs/applications/audio/transcode/default.nix index d7d5b65375e..c7ee3914f25 100644 --- a/pkgs/applications/audio/transcode/default.nix +++ b/pkgs/applications/audio/transcode/default.nix @@ -20,7 +20,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Suite of command line utilities for transcoding video and audio codecs, and for converting between different container formats"; - homepage = http://www.transcoding.org/; + homepage = "http://www.transcoding.org/"; license = licenses.lgpl2Plus; platforms = platforms.linux; }; diff --git a/pkgs/applications/audio/transcribe/default.nix b/pkgs/applications/audio/transcribe/default.nix index 8eb846ac9c5..d9469fa4b7a 100644 --- a/pkgs/applications/audio/transcribe/default.nix +++ b/pkgs/applications/audio/transcribe/default.nix @@ -64,7 +64,7 @@ stdenv.mkDerivation rec { has many transcription-specific features not found on conventional music players. ''; - homepage = https://www.seventhstring.com/xscribe/; + homepage = "https://www.seventhstring.com/xscribe/"; license = licenses.unfree; platforms = platforms.linux; maintainers = with maintainers; [ michalrus ]; diff --git a/pkgs/applications/audio/traverso/default.nix b/pkgs/applications/audio/traverso/default.nix index 9188003ce66..504e6ae9644 100644 --- a/pkgs/applications/audio/traverso/default.nix +++ b/pkgs/applications/audio/traverso/default.nix @@ -7,7 +7,7 @@ stdenv.mkDerivation { version = "0.49.6"; src = fetchurl { - url = "http://traverso-daw.org/traverso-0.49.6.tar.gz"; + url = "https://traverso-daw.org/traverso-0.49.6.tar.gz"; sha256 = "12f7x8kw4fw1j0xkwjrp54cy4cv1ql0zwz2ba5arclk4pf6bhl7q"; }; @@ -23,7 +23,7 @@ stdenv.mkDerivation { meta = with stdenv.lib; { description = "Cross-platform multitrack audio recording and audio editing suite"; - homepage = http://traverso-daw.org/; + homepage = "https://traverso-daw.org/"; license = with licenses; [ gpl2Plus lgpl21Plus ]; platforms = platforms.all; maintainers = with maintainers; [ coconnor ]; diff --git a/pkgs/applications/audio/tree-from-tags/Gemfile.lock b/pkgs/applications/audio/tree-from-tags/Gemfile.lock index 2ef77caa6f6..0ae90c1aebb 100644 --- a/pkgs/applications/audio/tree-from-tags/Gemfile.lock +++ b/pkgs/applications/audio/tree-from-tags/Gemfile.lock @@ -10,4 +10,4 @@ DEPENDENCIES taglib-ruby BUNDLED WITH - 1.16.3 + 2.1.4 diff --git a/pkgs/applications/audio/tree-from-tags/default.nix b/pkgs/applications/audio/tree-from-tags/default.nix index 521133cb08f..3b25b4218f1 100644 --- a/pkgs/applications/audio/tree-from-tags/default.nix +++ b/pkgs/applications/audio/tree-from-tags/default.nix @@ -30,7 +30,7 @@ EOF meta = with stdenv.lib; { description = "Create file hierarchies from media tags"; - homepage = https://www.emacswiki.org/emacs/Bongo; + homepage = "https://www.emacswiki.org/emacs/Bongo"; platforms = ruby.meta.platforms; maintainers = [ maintainers.livnev maintainers.dbrock ]; license = licenses.gpl2Plus; diff --git a/pkgs/applications/audio/uade123/default.nix b/pkgs/applications/audio/uade123/default.nix index 844eea11f51..9130461e4d7 100644 --- a/pkgs/applications/audio/uade123/default.nix +++ b/pkgs/applications/audio/uade123/default.nix @@ -17,7 +17,7 @@ in stdenv.mkDerivation { meta = with stdenv.lib; { description = "Plays old Amiga tunes through UAE emulation and cloned m68k-assembler Eagleplayer API"; - homepage = http://zakalwe.fi/uade/; + homepage = "http://zakalwe.fi/uade/"; license = licenses.gpl2; maintainers = [ stdenv.lib.maintainers.gnidorah ]; platforms = stdenv.lib.platforms.unix; diff --git a/pkgs/applications/audio/vcv-rack/default.nix b/pkgs/applications/audio/vcv-rack/default.nix index c0bbd6e71db..2aa09ec0be8 100644 --- a/pkgs/applications/audio/vcv-rack/default.nix +++ b/pkgs/applications/audio/vcv-rack/default.nix @@ -79,7 +79,7 @@ with stdenv.lib; stdenv.mkDerivation rec { nativeBuildInputs = [ makeWrapper pkgconfig ]; buildInputs = [ alsaLib curl glew glfw gtk2-x11 jansson libjack2 libsamplerate libzip rtaudio rtmidi speex ]; - buildFlags = "Rack"; + buildFlags = [ "Rack" ]; installPhase = '' install -D -m755 -t $out/bin Rack @@ -93,7 +93,7 @@ with stdenv.lib; stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Open-source virtual modular synthesizer"; - homepage = http://vcvrack.com/; + homepage = "https://vcvrack.com/"; # The source is BSD-3 licensed, some of the art is CC-BY-NC 4.0 or under a # no-derivatives clause license = with licenses; [ bsd3 cc-by-nc-40 unfreeRedistributable ]; diff --git a/pkgs/applications/audio/vimpc/default.nix b/pkgs/applications/audio/vimpc/default.nix index 7f02ea9cefe..bcbfa6d3874 100644 --- a/pkgs/applications/audio/vimpc/default.nix +++ b/pkgs/applications/audio/vimpc/default.nix @@ -22,7 +22,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "A vi/vim inspired client for the Music Player Daemon (mpd)"; - homepage = https://github.com/boysetsfrog/vimpc; + homepage = "https://github.com/boysetsfrog/vimpc"; license = licenses.gpl3; platforms = platforms.linux; maintainers = with maintainers; [ pSub ]; diff --git a/pkgs/applications/audio/vkeybd/default.nix b/pkgs/applications/audio/vkeybd/default.nix index 485edaa1ff2..0e8f12823d1 100644 --- a/pkgs/applications/audio/vkeybd/default.nix +++ b/pkgs/applications/audio/vkeybd/default.nix @@ -24,7 +24,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Virtual MIDI keyboard"; - homepage = http://www.alsa-project.org/~tiwai/alsa.html; + homepage = "https://www.alsa-project.org/~tiwai/alsa.html"; license = licenses.gpl2Plus; platforms = platforms.linux; maintainers = [ maintainers.goibhniu ]; diff --git a/pkgs/applications/audio/vocal/default.nix b/pkgs/applications/audio/vocal/default.nix index c26d8b6d360..6ef992ffff6 100644 --- a/pkgs/applications/audio/vocal/default.nix +++ b/pkgs/applications/audio/vocal/default.nix @@ -7,6 +7,7 @@ , pantheon , gtk3 , glib +, glib-networking , libxml2 , webkitgtk , clutter-gtk @@ -56,14 +57,22 @@ stdenv.mkDerivation rec { pantheon.granite sqlite webkitgtk + glib-networking ]; + passthru = { + updateScript = pantheon.updateScript { + attrPath = pname; + }; + }; + + meta = with stdenv.lib; { description = "The podcast client for the modern free desktop"; longDescription = '' Vocal is a powerful, fast, and intuitive application that helps users find new podcasts, manage their libraries, and enjoy the best that indepedent audio and video publishing has to offer. Vocal features full support for both episode downloading and streaming, native system integration, iTunes store search and top 100 charts (with international results support), iTunes link parsing, OPML importing and exporting, and so much more. Plus, it has great smart features like automatically keeping your library clean from old files, and the ability to set custom skip intervals. ''; - homepage = https://github.com/needle-and-thread/vocal; + homepage = "https://github.com/needle-and-thread/vocal"; license = licenses.gpl3Plus; maintainers = with maintainers; [ worldofpeace ]; platforms = platforms.linux; diff --git a/pkgs/applications/audio/vorbis-tools/default.nix b/pkgs/applications/audio/vorbis-tools/default.nix index f815ac02e6e..2270e56e62a 100644 --- a/pkgs/applications/audio/vorbis-tools/default.nix +++ b/pkgs/applications/audio/vorbis-tools/default.nix @@ -3,14 +3,14 @@ let debPatch = fetchzip { - url = "mirror://debian/pool/main/v/vorbis-tools/vorbis-tools_1.4.0-6.debian.tar.xz"; - sha256 = "1xmmpdvxyr84lazlg23c6ck5ic97ga2rkiqabb1d98ix2zdzyqz5"; + url = "mirror://debian/pool/main/v/vorbis-tools/vorbis-tools_1.4.0-11.debian.tar.xz"; + sha256 = "0kvmd5nslyqplkdb7pnmqj47ir3y5lmaxd12wmrnqh679a8jhcyi"; }; in stdenv.mkDerivation { name = "vorbis-tools-1.4.0"; src = fetchurl { - url = http://downloads.xiph.org/releases/vorbis/vorbis-tools-1.4.0.tar.gz; + url = "http://downloads.xiph.org/releases/vorbis/vorbis-tools-1.4.0.tar.gz"; sha256 = "1g12bnh5ah08v529y72kfdz5lhvy75iaz7f9jskyby23m9dkk2d3"; }; @@ -29,7 +29,7 @@ stdenv.mkDerivation { A set of command-line tools to manipulate Ogg Vorbis audio files, notably the `ogg123' player and the `oggenc' encoder. ''; - homepage = https://xiph.org/vorbis/; + homepage = "https://xiph.org/vorbis/"; license = licenses.gpl2; platforms = platforms.all; }; diff --git a/pkgs/applications/audio/waon/default.nix b/pkgs/applications/audio/waon/default.nix index b27fdbffb7d..bc05547e641 100644 --- a/pkgs/applications/audio/waon/default.nix +++ b/pkgs/applications/audio/waon/default.nix @@ -22,7 +22,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "A Wave-to-Notes transcriber"; - homepage = https://kichiki.github.io/WaoN/; + homepage = "https://kichiki.github.io/WaoN/"; license = licenses.gpl2; maintainers = [ maintainers.puckipedia ]; platforms = platforms.all; diff --git a/pkgs/applications/audio/wavegain/default.nix b/pkgs/applications/audio/wavegain/default.nix index 5f56fb7297f..d9b13f53273 100644 --- a/pkgs/applications/audio/wavegain/default.nix +++ b/pkgs/applications/audio/wavegain/default.nix @@ -16,7 +16,7 @@ stdenv.mkDerivation { meta = { description = "ReplayGain for wave files"; - homepage = https://github.com/MestreLion/wavegain; + homepage = "https://github.com/MestreLion/wavegain"; license = stdenv.lib.licenses.lgpl21; platforms = stdenv.lib.platforms.linux; maintainers = [ stdenv.lib.maintainers.robbinch ]; diff --git a/pkgs/applications/audio/whipper/default.nix b/pkgs/applications/audio/whipper/default.nix index ff278d4d7f2..5cbc9a07b6c 100644 --- a/pkgs/applications/audio/whipper/default.nix +++ b/pkgs/applications/audio/whipper/default.nix @@ -53,7 +53,7 @@ python3.pkgs.buildPythonApplication rec { ''; meta = with stdenv.lib; { - homepage = https://github.com/whipper-team/whipper; + homepage = "https://github.com/whipper-team/whipper"; description = "A CD ripper aiming for accuracy over speed"; maintainers = with maintainers; [ rycee emily ]; license = licenses.gpl3Plus; diff --git a/pkgs/applications/audio/wolf-shaper/default.nix b/pkgs/applications/audio/wolf-shaper/default.nix index 13bf1d674c7..7d42a3c4e7b 100644 --- a/pkgs/applications/audio/wolf-shaper/default.nix +++ b/pkgs/applications/audio/wolf-shaper/default.nix @@ -38,7 +38,7 @@ stdenv.mkDerivation rec { ''; meta = with stdenv.lib; { - homepage = https://pdesaulniers.github.io/wolf-shaper/; + homepage = "https://pdesaulniers.github.io/wolf-shaper/"; description = "Waveshaper plugin with spline-based graph editor"; license = licenses.gpl3; maintainers = [ maintainers.magnetophon ]; diff --git a/pkgs/applications/audio/x42-avldrums/default.nix b/pkgs/applications/audio/x42-avldrums/default.nix new file mode 100644 index 00000000000..fb05a50b4e5 --- /dev/null +++ b/pkgs/applications/audio/x42-avldrums/default.nix @@ -0,0 +1,31 @@ +{ stdenv, fetchFromGitHub, pkgconfig, cairo, glib, libGLU, lv2, pango }: + +stdenv.mkDerivation rec { + pname = "x42-avldrums"; + version = "0.4.1"; + + src = fetchFromGitHub { + owner = "x42"; + repo = "avldrums.lv2"; + rev = "v${version}"; + sha256 = "1vwdp3d8qzd493qa99ddya7iql67bbfxmbcl8hk96lxif2lhmyws"; + fetchSubmodules = true; + }; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ cairo glib libGLU lv2 pango ]; + + makeFlags = [ + "PREFIX=$(out)" + ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "Drum sample player LV2 plugin dedicated to Glen MacArthur's AVLdrums"; + homepage = "https://x42-plugins.com/x42/x42-avldrums"; + maintainers = with maintainers; [ magnetophon orivej ]; + license = licenses.gpl2Plus; + platforms = platforms.linux; + }; +} diff --git a/pkgs/applications/audio/x42-gmsynth/default.nix b/pkgs/applications/audio/x42-gmsynth/default.nix new file mode 100644 index 00000000000..7a96e3fd4f2 --- /dev/null +++ b/pkgs/applications/audio/x42-gmsynth/default.nix @@ -0,0 +1,30 @@ +{ stdenv, fetchFromGitHub, pkgconfig, glib, lv2 }: + +stdenv.mkDerivation rec { + pname = "x42-gmsynth"; + version = "0.4.1"; + + src = fetchFromGitHub { + owner = "x42"; + repo = "gmsynth.lv2"; + rev = "v${version}"; + sha256 = "08dvdj8r17sfl6l18g2b8abgls2irkbrq5vhrfai01hp2m0rlm34"; + }; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ glib lv2 ]; + + makeFlags = [ + "PREFIX=$(out)" + ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "Chris Colins' General User soundfont player LV2 plugin"; + homepage = "https://x42-plugins.com/x42/x42-gmsynth"; + maintainers = with maintainers; [ orivej ]; + license = licenses.gpl2Plus; + platforms = platforms.linux; + }; +} diff --git a/pkgs/applications/audio/x42-plugins/default.nix b/pkgs/applications/audio/x42-plugins/default.nix index 967f3f4f92b..8ec53b0c66a 100644 --- a/pkgs/applications/audio/x42-plugins/default.nix +++ b/pkgs/applications/audio/x42-plugins/default.nix @@ -3,12 +3,12 @@ , libGLU, lv2, gtk2, cairo, pango, fftwFloat, zita-convolver }: stdenv.mkDerivation rec { - version = "20191013"; + version = "20200114"; pname = "x42-plugins"; src = fetchurl { url = "https://gareus.org/misc/x42-plugins/${pname}-${version}.tar.xz"; - sha256 = "18kn1bmc0s6dp834kc51ibifzzn3bxwya4p8s8yq9f4mpmkghi24"; + sha256 = "02f8wnsl9wg7pgf4sshr0hdjfjkwln870ffgjmb01nqk37v7hiyn"; }; nativeBuildInputs = [ pkgconfig ]; @@ -33,7 +33,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Collection of LV2 plugins by Robin Gareus"; - homepage = https://github.com/x42/x42-plugins; + homepage = "https://github.com/x42/x42-plugins"; maintainers = with maintainers; [ magnetophon ]; license = licenses.gpl2; platforms = [ "i686-linux" "x86_64-linux" ]; diff --git a/pkgs/applications/audio/yasr/default.nix b/pkgs/applications/audio/yasr/default.nix index c8902f1dda4..68423197f3c 100644 --- a/pkgs/applications/audio/yasr/default.nix +++ b/pkgs/applications/audio/yasr/default.nix @@ -18,7 +18,7 @@ stdenv.mkDerivation rec { ]; # taken from the debian yasr package meta = { - homepage = http://yasr.sourceforge.net; + homepage = "http://yasr.sourceforge.net"; description = "A general-purpose console screen reader"; longDescription = "Yasr is a general-purpose console screen reader for GNU/Linux and other Unix-like operating systems."; platforms = stdenv.lib.platforms.linux; diff --git a/pkgs/applications/audio/ympd/default.nix b/pkgs/applications/audio/ympd/default.nix index 7976f747717..8f86d6e7ba9 100644 --- a/pkgs/applications/audio/ympd/default.nix +++ b/pkgs/applications/audio/ympd/default.nix @@ -15,7 +15,7 @@ stdenv.mkDerivation rec { buildInputs = [ cmake mpd_clientlib openssl ]; meta = { - homepage = https://www.ympd.org; + homepage = "https://www.ympd.org"; description = "Standalone MPD Web GUI written in C, utilizing Websockets and Bootstrap/JS"; maintainers = [ stdenv.lib.maintainers.siddharthist ]; platforms = stdenv.lib.platforms.unix; diff --git a/pkgs/applications/audio/yoshimi/default.nix b/pkgs/applications/audio/yoshimi/default.nix index 24620d91ff5..f8ea58fef3c 100644 --- a/pkgs/applications/audio/yoshimi/default.nix +++ b/pkgs/applications/audio/yoshimi/default.nix @@ -6,11 +6,11 @@ assert stdenv ? glibc; stdenv.mkDerivation rec { pname = "yoshimi"; - version = "1.6.0.3"; + version = "1.7.0.1"; src = fetchurl { url = "mirror://sourceforge/yoshimi/${pname}-${version}.tar.bz2"; - sha256 = "1z2mnmm299ng6jcwa61dzr1ilwa5fjgsggxl2wa5smji6b4npmx7"; + sha256 = "1pkqrrr51vlxh96vy0c0rf5ijjvymys4brsw9rv1bdp1bb8izw6c"; }; buildInputs = [ @@ -36,7 +36,7 @@ stdenv.mkDerivation rec { ZynAddSubFX along with very good Jack and Alsa midi/audio functionality on Linux ''; - homepage = http://yoshimi.sourceforge.net; + homepage = "http://yoshimi.sourceforge.net"; license = licenses.gpl2; platforms = platforms.linux; maintainers = [ maintainers.goibhniu ]; diff --git a/pkgs/applications/audio/zam-plugins/default.nix b/pkgs/applications/audio/zam-plugins/default.nix index a8236b4b60f..a34773513d9 100644 --- a/pkgs/applications/audio/zam-plugins/default.nix +++ b/pkgs/applications/audio/zam-plugins/default.nix @@ -2,13 +2,13 @@ stdenv.mkDerivation { pname = "zam-plugins"; - version = "3.11"; + version = "3.12"; src = fetchgit { url = "https://github.com/zamaudio/zam-plugins.git"; deepClone = true; - rev = "af338057e42dd5d07cba1889bfc74eda517c6147"; - sha256 = "1qbskhcvy2k2xv0f32lw13smz5g72v0yy47zv6vnhnaiaqf3f2d5"; + rev = "87fdee6e87dbee75c1088e2327ea59c1ab1522e4"; + sha256 = "0kz0xygff3ca1v9nqi0dvrzy9whbzqxrls5b7hydi808d795893n"; }; nativeBuildInputs = [ pkgconfig ]; @@ -25,7 +25,7 @@ stdenv.mkDerivation { enableParallelBuilding = true; meta = with stdenv.lib; { - homepage = http://www.zamaudio.com/?p=976; + homepage = "http://www.zamaudio.com/?p=976"; description = "A collection of LV2/LADSPA/VST/JACK audio plugins by ZamAudio"; license = licenses.gpl2Plus; maintainers = [ maintainers.magnetophon ]; diff --git a/pkgs/applications/audio/zita-ajbridge/default.nix b/pkgs/applications/audio/zita-ajbridge/default.nix new file mode 100644 index 00000000000..ad2ea53e9f7 --- /dev/null +++ b/pkgs/applications/audio/zita-ajbridge/default.nix @@ -0,0 +1,31 @@ +{ stdenv, fetchurl, alsaLib, libjack2, zita-alsa-pcmi, zita-resampler }: + +stdenv.mkDerivation rec { + name = "zita-ajbridge-0.8.4"; + + src = fetchurl { + url = "https://kokkinizita.linuxaudio.org/linuxaudio/downloads/${name}.tar.bz2"; + sha256 = "0g5v0l0zmqh049mhv62n8s5bpm0yrlby7mkxxhs5qwadp8v4w9mw"; + }; + + buildInputs = [ alsaLib libjack2 zita-alsa-pcmi zita-resampler ]; + + preConfigure = '' + cd ./source/ + ''; + + makeFlags = [ + "PREFIX=$(out)" + "MANDIR=$(out)/share/man/man1" + ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "Connect additional ALSA devices to JACK"; + homepage = "http://kokkinizita.linuxaudio.org/linuxaudio/index.html"; + license = licenses.gpl3Plus; + maintainers = with maintainers; [ orivej ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/applications/audio/zita-at1/default.nix b/pkgs/applications/audio/zita-at1/default.nix new file mode 100644 index 00000000000..d357febd882 --- /dev/null +++ b/pkgs/applications/audio/zita-at1/default.nix @@ -0,0 +1,36 @@ +{ stdenv, fetchurl +, cairo, fftwSinglePrec, libX11, libXft, libclthreads, libclxclient, libjack2 +, xorgproto, zita-resampler +}: + +stdenv.mkDerivation rec { + name = "zita-at1-0.6.2"; + + src = fetchurl { + url = "https://kokkinizita.linuxaudio.org/linuxaudio/downloads/${name}.tar.bz2"; + sha256 = "0mxfn61zvhlq3r1mqipyqzjbanrfdkk8x4nxbz8nlbdk0bf3vfqr"; + }; + + buildInputs = [ + cairo fftwSinglePrec libX11 libXft libclthreads libclxclient libjack2 + xorgproto zita-resampler + ]; + + preConfigure = '' + cd ./source/ + ''; + + makeFlags = [ + "PREFIX=$(out)" + ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "Autotuner Jack application to correct the pitch of vocal tracks"; + homepage = "https://kokkinizita.linuxaudio.org/linuxaudio/index.html"; + license = licenses.gpl3Plus; + maintainers = with maintainers; [ orivej ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/applications/audio/zita-njbridge/default.nix b/pkgs/applications/audio/zita-njbridge/default.nix index 1ec6946cf38..3a293cfc026 100644 --- a/pkgs/applications/audio/zita-njbridge/default.nix +++ b/pkgs/applications/audio/zita-njbridge/default.nix @@ -24,7 +24,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "command line Jack clients to transmit full quality multichannel audio over a local IP network"; - homepage = http://kokkinizita.linuxaudio.org/linuxaudio/index.html; + homepage = "http://kokkinizita.linuxaudio.org/linuxaudio/index.html"; license = licenses.gpl3; maintainers = [ maintainers.magnetophon ]; platforms = platforms.linux; diff --git a/pkgs/applications/audio/zynaddsubfx/default.nix b/pkgs/applications/audio/zynaddsubfx/default.nix index e22bf9ed653..9a432f73d3f 100644 --- a/pkgs/applications/audio/zynaddsubfx/default.nix +++ b/pkgs/applications/audio/zynaddsubfx/default.nix @@ -22,7 +22,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "High quality software synthesizer"; - homepage = http://zynaddsubfx.sourceforge.net; + homepage = "http://zynaddsubfx.sourceforge.net"; license = licenses.gpl2; platforms = platforms.linux; maintainers = [ maintainers.goibhniu maintainers.nico202 ]; diff --git a/pkgs/applications/backup/areca/default.nix b/pkgs/applications/backup/areca/default.nix index d02aa4b8444..b4d644430dd 100644 --- a/pkgs/applications/backup/areca/default.nix +++ b/pkgs/applications/backup/areca/default.nix @@ -45,7 +45,7 @@ stdenv.mkDerivation { ''; meta = with stdenv.lib; { - homepage = http://www.areca-backup.org/; + homepage = "http://www.areca-backup.org/"; description = "An Open Source personal backup solution"; license = licenses.gpl2; maintainers = with maintainers; [ pSub ]; diff --git a/pkgs/applications/backup/deja-dup/default.nix b/pkgs/applications/backup/deja-dup/default.nix index d19314ce9ce..d283dc7107d 100644 --- a/pkgs/applications/backup/deja-dup/default.nix +++ b/pkgs/applications/backup/deja-dup/default.nix @@ -33,14 +33,14 @@ stdenv.mkDerivation rec { pname = "deja-dup"; - version = "40.4"; + version = "40.6"; src = fetchFromGitLab { domain = "gitlab.gnome.org"; owner = "World"; repo = pname; rev = version; - sha256 = "0x9z8z1mh1sxi28ilml3pvbc0g6ghcbyiy002rziwwlarxnbwkky"; + sha256 = "1d4g34g660wv42a4k2511bxrh90z0vdl3v7ahg0m45phijg9n2n1"; }; patches = [ diff --git a/pkgs/applications/backup/vorta/default.nix b/pkgs/applications/backup/vorta/default.nix new file mode 100644 index 00000000000..1a4d1832c7e --- /dev/null +++ b/pkgs/applications/backup/vorta/default.nix @@ -0,0 +1,42 @@ +{ buildPythonApplication, fetchFromGitHub, lib, paramiko, peewee, pyqt5 +, python-dateutil, APScheduler, psutil, qdarkstyle, secretstorage +, appdirs, setuptools, qt5 +}: + +buildPythonApplication rec { + pname = "vorta"; + version = "0.6.24"; + + src = fetchFromGitHub { + owner = "borgbase"; + repo = "vorta"; + rev = "v${version}"; + sha256 = "1xc4cng4npc7g739qd909a8wim6s6sn8h8bb1wpxzg4gcnfyin8z"; + }; + + postPatch = '' + sed -i -e '/setuptools_git/d' -e '/pytest-runner/d' setup.cfg + ''; + + nativeBuildInputs = [ qt5.wrapQtAppsHook ]; + + propagatedBuildInputs = [ + paramiko peewee pyqt5 python-dateutil APScheduler psutil qdarkstyle + secretstorage appdirs setuptools + ]; + + # QT setup in tests broken. + doCheck = false; + + postFixup = '' + wrapQtApp $out/bin/vorta + ''; + + meta = with lib; { + license = licenses.gpl3; + homepage = "https://vorta.borgbase.com/"; + maintainers = with maintainers; [ ma27 ]; + description = "Desktop Backup Client for Borg"; + platforms = platforms.linux; + }; +} diff --git a/pkgs/applications/blockchains/aeon/default.nix b/pkgs/applications/blockchains/aeon/default.nix index d65889be3ac..5e0c25466eb 100644 --- a/pkgs/applications/blockchains/aeon/default.nix +++ b/pkgs/applications/blockchains/aeon/default.nix @@ -4,7 +4,7 @@ }: let - version = "0.12.9.0"; + version = "0.13.0.0"; in stdenv.mkDerivation { pname = "aeon"; @@ -15,7 +15,7 @@ stdenv.mkDerivation { repo = "aeon"; rev = "v${version}-aeon"; fetchSubmodules = true; - sha256 = "194nxf8c8ihkmdsxyhkhrxc2xiinipifk0ng1rmxiiyr2gjgxzga"; + sha256 = "07d87n1j4dc9gfwj6xy5jdpryn45095xdh961g6xjnjzc5fivjch"; }; nativeBuildInputs = [ cmake pkgconfig git doxygen graphviz ]; @@ -35,7 +35,7 @@ stdenv.mkDerivation { meta = with stdenv.lib; { description = "Private, secure, untraceable currency"; - homepage = http://www.aeon.cash/; + homepage = "http://www.aeon.cash/"; license = licenses.bsd3; maintainers = [ maintainers.aij ]; platforms = [ "x86_64-linux" ]; diff --git a/pkgs/applications/blockchains/bitcoin-abc.nix b/pkgs/applications/blockchains/bitcoin-abc.nix index d872204c6b0..afc5b40f9db 100644 --- a/pkgs/applications/blockchains/bitcoin-abc.nix +++ b/pkgs/applications/blockchains/bitcoin-abc.nix @@ -7,13 +7,13 @@ with stdenv.lib; mkDerivation rec { name = "bitcoin" + (toString (optional (!withGui) "d")) + "-abc-" + version; - version = "0.20.8"; + version = "0.21.3"; src = fetchFromGitHub { owner = "bitcoin-ABC"; repo = "bitcoin-abc"; rev = "v${version}"; - sha256 = "0srjc11i7azqn3flipjwzm67w20ji24yslkmchy1a834fyb1gmx1"; + sha256 = "1pzdgghbsss2qjfgl42lvkbs5yc5q6jnzqnp24lljmrh341g2zn4"; }; patches = [ ./fix-bitcoin-qt-build.patch ]; @@ -37,7 +37,7 @@ mkDerivation rec { Bitcoin ABC is a fork of the Bitcoin Core software project. ''; - homepage = https://bitcoinabc.org/; + homepage = "https://bitcoinabc.org/"; maintainers = with maintainers; [ lassulus ]; license = licenses.mit; broken = stdenv.isDarwin; diff --git a/pkgs/applications/blockchains/bitcoin-classic.nix b/pkgs/applications/blockchains/bitcoin-classic.nix index ddce5c3f715..01c1264567c 100644 --- a/pkgs/applications/blockchains/bitcoin-classic.nix +++ b/pkgs/applications/blockchains/bitcoin-classic.nix @@ -45,7 +45,7 @@ stdenv.mkDerivation rec { will continue to release updates that are in line with Satoshi’s whitepaper & vision, and are agreed upon by the community. ''; - homepage = https://bitcoinclassic.com/; + homepage = "https://bitcoinclassic.com/"; maintainers = with maintainers; [ jefdaj ]; license = licenses.mit; broken = stdenv.isDarwin; diff --git a/pkgs/applications/blockchains/bitcoin-gold.nix b/pkgs/applications/blockchains/bitcoin-gold.nix new file mode 100644 index 00000000000..7205e882c31 --- /dev/null +++ b/pkgs/applications/blockchains/bitcoin-gold.nix @@ -0,0 +1,70 @@ +{ stdenv +, fetchFromGitHub +, openssl +, boost +, libevent +, autoreconfHook +, db4 +, pkgconfig +, protobuf +, hexdump +, zeromq +, libsodium +, withGui +, qtbase ? null +, qttools ? null +, wrapQtAppsHook ? null +}: + +with stdenv.lib; + +stdenv.mkDerivation rec { + + pname = "bitcoin" + toString (optional (!withGui) "d") + "-gold"; + version = "0.15.2"; + + src = fetchFromGitHub { + owner = "BTCGPU"; + repo = "BTCGPU"; + rev = "v${version}"; + sha256 = "0grd1cd8d2nsrxl27la85kcan09z73fn70ncr9km4iccaj5pg12h"; + }; + + nativeBuildInputs = [ + autoreconfHook + pkgconfig + hexdump + ] ++ optionals withGui [ + wrapQtAppsHook + ]; + + buildInputs = [ + openssl + boost + libevent + db4 + zeromq + libsodium + ] ++ optionals withGui [ + qtbase + qttools + protobuf + ]; + + enableParallelBuilding = true; + + configureFlags = [ + "--with-boost-libdir=${boost.out}/lib" + ] ++ optionals withGui [ + "--with-gui=qt5" + "--with-qt-bindir=${qtbase.dev}/bin:${qttools.dev}/bin" + ]; + + meta = { + description = "BTG is a cryptocurrency with Bitcoin fundamentals, mined on common GPUs instead of specialty ASICs"; + homepage = "https://bitcoingold.org/"; + license = licenses.mit; + maintainers = [ maintainers.mmahut ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/applications/blockchains/bitcoin-unlimited.nix b/pkgs/applications/blockchains/bitcoin-unlimited.nix index c0d51e66db3..f755efaa0e1 100644 --- a/pkgs/applications/blockchains/bitcoin-unlimited.nix +++ b/pkgs/applications/blockchains/bitcoin-unlimited.nix @@ -57,7 +57,7 @@ stdenv.mkDerivation rec { support Bitcoin conflict resolution as originally envisioned by its founder - consider running a Bitcoin Unlimited client. ''; - homepage = https://www.bitcoinunlimited.info/; + homepage = "https://www.bitcoinunlimited.info/"; maintainers = with maintainers; [ DmitryTsygankov ]; license = licenses.mit; broken = stdenv.isDarwin; diff --git a/pkgs/applications/blockchains/bitcoin.nix b/pkgs/applications/blockchains/bitcoin.nix index 2fa8ea6467c..15094a1eee4 100644 --- a/pkgs/applications/blockchains/bitcoin.nix +++ b/pkgs/applications/blockchains/bitcoin.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, pkgconfig, autoreconfHook, openssl, db48, boost, zeromq, rapidcheck +{ stdenv, fetchurl, pkgconfig, autoreconfHook, openssl, db48, boost, zeromq, rapidcheck, hexdump , zlib, miniupnpc, qtbase ? null, qttools ? null, wrapQtAppsHook ? null, utillinux, python3, qrencode, libevent , withGui }: @@ -31,6 +31,7 @@ in stdenv.mkDerivation rec { nativeBuildInputs = [ pkgconfig autoreconfHook ] + ++ optional stdenv.isDarwin hexdump ++ optional withGui wrapQtAppsHook; buildInputs = [ openssl db48 boost zlib zeromq miniupnpc libevent] @@ -72,10 +73,9 @@ in stdenv.mkDerivation rec { parties. Users hold the crypto keys to their own money and transact directly with each other, with the help of a P2P network to check for double-spending. ''; - homepage = http://www.bitcoin.org/; + homepage = "http://www.bitcoin.org/"; maintainers = with maintainers; [ roconnor AndersonTorres ]; license = licenses.mit; - # bitcoin needs hexdump to build, which doesn't seem to build on darwin at the moment. - platforms = platforms.linux; + platforms = platforms.unix; }; } diff --git a/pkgs/applications/blockchains/btcdeb/default.nix b/pkgs/applications/blockchains/btcdeb/default.nix new file mode 100644 index 00000000000..9a8db94401c --- /dev/null +++ b/pkgs/applications/blockchains/btcdeb/default.nix @@ -0,0 +1,30 @@ +{ stdenv +, fetchFromGitHub +, autoreconfHook +, pkgconfig +, openssl +}: + +with stdenv.lib; +stdenv.mkDerivation rec { + pname = "btcdeb"; + version = "0.2.19"; + + src = fetchFromGitHub { + owner = "kallewoof"; + repo = pname; + rev = "fb2dace4cd115dc9529a81515cee855b8ce94784"; + sha256 = "0l0niamcjxmgyvc6w0wiygfgwsjam3ypv8mvjglgsj50gyv1vnb3"; + }; + + nativeBuildInputs = [ pkgconfig autoreconfHook ]; + buildInputs = [ openssl ]; + + meta = { + description = "Bitcoin Script Debugger"; + homepage = "https://github.com/kallewoof/btcdeb"; + license = licenses.mit; + maintainers = with maintainers; [ akru ]; + platforms = platforms.unix; + }; +} diff --git a/pkgs/applications/blockchains/clightning.nix b/pkgs/applications/blockchains/clightning.nix index f6c9fee7a1c..61765913464 100644 --- a/pkgs/applications/blockchains/clightning.nix +++ b/pkgs/applications/blockchains/clightning.nix @@ -4,11 +4,11 @@ with stdenv.lib; stdenv.mkDerivation rec { pname = "clightning"; - version = "0.8.0"; + version = "0.8.1"; src = fetchurl { url = "https://github.com/ElementsProject/lightning/releases/download/v${version}/clightning-v${version}.zip"; - sha256 = "053e43bbe71564e9be8b2b56346a88986646ef6849a0af67cece01858b93306a"; + sha256 = "079d3yx7yr7qrilqgaayvn18lxl8h6a1gwwbsgm5xsyxj4vdlz7r"; }; enableParallelBuilding = true; @@ -42,7 +42,7 @@ stdenv.mkDerivation rec { Bitcoin, enabling secure and instant transfer of funds between any two parties for any amount. ''; - homepage = https://github.com/ElementsProject/lightning; + homepage = "https://github.com/ElementsProject/lightning"; maintainers = with maintainers; [ jb55 ]; license = licenses.mit; platforms = platforms.linux; diff --git a/pkgs/applications/blockchains/cryptop/default.nix b/pkgs/applications/blockchains/cryptop/default.nix index 01c47b320de..f0bcda57930 100644 --- a/pkgs/applications/blockchains/cryptop/default.nix +++ b/pkgs/applications/blockchains/cryptop/default.nix @@ -15,7 +15,7 @@ buildPythonApplication rec { doCheck = false; meta = { - homepage = https://github.com/huwwp/cryptop; + homepage = "https://github.com/huwwp/cryptop"; description = "Command line Cryptocurrency Portfolio"; license = with lib.licenses; [ mit ]; maintainers = with lib.maintainers; [ bhipple ]; diff --git a/pkgs/applications/blockchains/dashpay.nix b/pkgs/applications/blockchains/dashpay.nix index 03dcd6cb54e..d0c3fed4350 100644 --- a/pkgs/applications/blockchains/dashpay.nix +++ b/pkgs/applications/blockchains/dashpay.nix @@ -36,7 +36,7 @@ stdenv.mkDerivation rec { with instant transactions. It allows you to keep your finances private as you make transactions without waits, similar to cash. ''; - homepage = https://www.dash.org; + homepage = "https://www.dash.org"; maintainers = with maintainers; [ AndersonTorres ]; platforms = platforms.unix; }; diff --git a/pkgs/applications/blockchains/dero.nix b/pkgs/applications/blockchains/dero.nix index 0ab63bb5395..8aa693d2871 100644 --- a/pkgs/applications/blockchains/dero.nix +++ b/pkgs/applications/blockchains/dero.nix @@ -3,13 +3,13 @@ stdenv.mkDerivation rec { pname = "dero"; - version = "0.11.6"; + version = "0.11.7"; src = fetchFromGitHub { owner = "deroproject"; repo = "dero"; rev = "v${version}"; - sha256 = "0jc5rh2ra4wra04dwv9sydid5ij5930s38mhzq3qkdjyza1ahmsr"; + sha256 = "1v8b9wbmqbpyf4jpc0v276qzk3hc5fpddcmwvv5k5yfi30nmbh5c"; }; nativeBuildInputs = [ cmake pkgconfig ]; diff --git a/pkgs/applications/blockchains/digibyte.nix b/pkgs/applications/blockchains/digibyte.nix new file mode 100644 index 00000000000..0d0fc081a11 --- /dev/null +++ b/pkgs/applications/blockchains/digibyte.nix @@ -0,0 +1,69 @@ +{ stdenv +, fetchFromGitHub +, openssl +, boost +, libevent +, autoreconfHook +, db4 +, pkgconfig +, protobuf +, hexdump +, zeromq +, withGui +, qtbase ? null +, qttools ? null +, wrapQtAppsHook ? null +}: + +with stdenv.lib; + +stdenv.mkDerivation rec { + pname = "digibyte"; + version = "7.17.2"; + + name = pname + toString (optional (!withGui) "d") + "-" + version; + + src = fetchFromGitHub { + owner = pname; + repo = pname; + rev = "v${version}"; + sha256 = "04czj7mx3wpbx4832npk686p9pg5zb6qwlcvnmvqf31hm5qylbxj"; + }; + + nativeBuildInputs = [ + autoreconfHook + pkgconfig + hexdump + ] ++ optionals withGui [ + wrapQtAppsHook + ]; + + buildInputs = [ + openssl + boost + libevent + db4 + zeromq + ] ++ optionals withGui [ + qtbase + qttools + protobuf + ]; + + enableParallelBuilding = true; + + configureFlags = [ + "--with-boost-libdir=${boost.out}/lib" + ] ++ optionals withGui [ + "--with-gui=qt5" + "--with-qt-bindir=${qtbase.dev}/bin:${qttools.dev}/bin" + ]; + + meta = { + description = "DigiByte (DGB) is a rapidly growing decentralized, global blockchain"; + homepage = "https://digibyte.io/"; + license = licenses.mit; + maintainers = [ maintainers.mmahut ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/applications/blockchains/dogecoin.nix b/pkgs/applications/blockchains/dogecoin.nix index 02744e50647..b1ebebdd213 100644 --- a/pkgs/applications/blockchains/dogecoin.nix +++ b/pkgs/applications/blockchains/dogecoin.nix @@ -33,7 +33,7 @@ stdenv.mkDerivation rec { internet currency." It is named after a famous Internet meme, the "Doge" - a Shiba Inu dog. ''; - homepage = http://www.dogecoin.com/; + homepage = "http://www.dogecoin.com/"; license = licenses.mit; maintainers = with maintainers; [ edwtjo offline AndersonTorres ]; platforms = platforms.linux; diff --git a/pkgs/applications/blockchains/ethabi.nix b/pkgs/applications/blockchains/ethabi.nix index 5bc81a6daf6..ad574c82b46 100644 --- a/pkgs/applications/blockchains/ethabi.nix +++ b/pkgs/applications/blockchains/ethabi.nix @@ -1,10 +1,8 @@ { stdenv, fetchFromGitHub, rustPlatform }: -with rustPlatform; - -buildRustPackage rec { +rustPlatform.buildRustPackage rec { pname = "ethabi"; - version = "7.0.0"; + version = "11.0.0"; src = fetchFromGitHub { owner = "paritytech"; @@ -13,13 +11,11 @@ buildRustPackage rec { sha256 = "1gqd3vwsvv1wvi659qcdywgmh41swblpwmmxb033k8irw581dwq4"; }; - cargoSha256 = "0zkdai31jf8f5syklaxq43ydjvp5xclr8pd6y1q6vkwjz6z49hzm"; - - cargoBuildFlags = ["--features cli"]; + cargoSha256 = "1hx8qw51rl7sn9jmnclw0hc4rx619hf78hpaih5mvny3k0zgiwpm"; meta = with stdenv.lib; { description = "Ethereum function call encoding (ABI) utility"; - homepage = https://github.com/ethcore/ethabi/; + homepage = "https://github.com/ethcore/ethabi/"; maintainers = [ maintainers.dbrock ]; license = licenses.gpl3; inherit version; diff --git a/pkgs/applications/blockchains/exodus/default.nix b/pkgs/applications/blockchains/exodus/default.nix index bc354a5213e..758673229af 100644 --- a/pkgs/applications/blockchains/exodus/default.nix +++ b/pkgs/applications/blockchains/exodus/default.nix @@ -1,29 +1,30 @@ { stdenv, lib, fetchurl, unzip, glib, systemd, nss, nspr, gtk3-x11, gnome2, atk, cairo, gdk-pixbuf, xorg, xorg_sys_opengl, utillinux, alsaLib, dbus, at-spi2-atk, -cups, vivaldi-ffmpeg-codecs, libpulseaudio }: +cups, vivaldi-ffmpeg-codecs, libpulseaudio, at-spi2-core }: stdenv.mkDerivation rec { pname = "exodus"; - version = "19.5.24"; + version = "20.1.30"; src = fetchurl { - url = "https://exodusbin.azureedge.net/releases/${pname}-linux-x64-${version}.zip"; - sha256 = "1yx296i525qmpqh8f2vax7igffg826nr8cyq1l0if35374bdsqdw"; + url = "https://downloads.exodus.io/releases/${pname}-linux-x64-${version}.zip"; + sha256 = "0jns5zqjm0gqn18ypghbgk6gb713mh7p44ax1r8y4vcwijlp5nql"; }; sourceRoot = "."; unpackCmd = '' - ${unzip}/bin/unzip "$src" -x "Exodus*/lib*so" + ${unzip}/bin/unzip "$src" -x "Exodus*/lib*so" ''; installPhase = '' - mkdir -p $out/bin $out/share/applications - cd Exodus-linux-x64 - cp -r . $out - ln -s $out/Exodus $out/bin/Exodus - ln -s $out/exodus.desktop $out/share/applications - substituteInPlace $out/share/applications/exodus.desktop \ - --replace 'Exec=bash -c "cd `dirname %k` && ./Exodus"' "Exec=Exodus" + mkdir -p $out/bin $out/share/applications + cd Exodus-linux-x64 + cp -r . $out + ln -s $out/Exodus $out/bin/Exodus + ln -s $out/bin/Exodus $out/bin/exodus + ln -s $out/exodus.desktop $out/share/applications + substituteInPlace $out/share/applications/exodus.desktop \ + --replace 'Exec=bash -c "cd `dirname %k` && ./Exodus"' "Exec=Exodus" ''; dontPatchELF = true; @@ -31,35 +32,36 @@ stdenv.mkDerivation rec { preFixup = let libPath = lib.makeLibraryPath [ - glib - nss - nspr - gtk3-x11 - gnome2.pango - atk - cairo - gdk-pixbuf - xorg.libX11 - xorg.libxcb - xorg.libXcomposite - xorg.libXcursor - xorg.libXdamage - xorg.libXext - xorg.libXfixes - xorg.libXi - xorg.libXrender - xorg.libXtst - xorg_sys_opengl - utillinux - xorg.libXrandr - xorg.libXScrnSaver - alsaLib - dbus.lib - at-spi2-atk - cups.lib - libpulseaudio - systemd - vivaldi-ffmpeg-codecs + glib + nss + nspr + gtk3-x11 + gnome2.pango + atk + cairo + gdk-pixbuf + xorg.libX11 + xorg.libxcb + xorg.libXcomposite + xorg.libXcursor + xorg.libXdamage + xorg.libXext + xorg.libXfixes + xorg.libXi + xorg.libXrender + xorg.libXtst + xorg_sys_opengl + utillinux + xorg.libXrandr + xorg.libXScrnSaver + alsaLib + dbus.lib + at-spi2-atk + at-spi2-core + cups.lib + libpulseaudio + systemd + vivaldi-ffmpeg-codecs ]; in '' patchelf \ diff --git a/pkgs/applications/blockchains/freicoin.nix b/pkgs/applications/blockchains/freicoin.nix index 6cf84f76f91..cc28fff96c4 100644 --- a/pkgs/applications/blockchains/freicoin.nix +++ b/pkgs/applications/blockchains/freicoin.nix @@ -30,7 +30,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Peer-to-peer currency with demurrage fee"; - homepage = http://freicoi.in/; + homepage = "http://freicoi.in/"; license = licenses.mit; maintainers = [ maintainers.viric ]; platforms = platforms.linux; diff --git a/pkgs/applications/blockchains/go-ethereum.nix b/pkgs/applications/blockchains/go-ethereum.nix index 34cfe868c0b..6a443571d0f 100644 --- a/pkgs/applications/blockchains/go-ethereum.nix +++ b/pkgs/applications/blockchains/go-ethereum.nix @@ -2,18 +2,19 @@ buildGoModule rec { pname = "go-ethereum"; - version = "1.9.9"; + version = "1.9.13"; src = fetchFromGitHub { owner = "ethereum"; repo = pname; rev = "v${version}"; - sha256 = "00fhqn0b9grqz8iigzbijg7b1va58vccjb15fpy6yfr301z3ib1q"; + sha256 = "1yqqflp73yvjy6bp05xd1nv5fc6p1nx7g4spbssxf3ws96pdh425"; }; - modSha256 = "1rn1x3qc23wfcx9c61sw1sc6iqwvv2b9pv006lk1az4zbwh09dbm"; + modSha256 = "07xrw3fivfpbkg4mp8ghrj1bishfas82dbd780fymgs2h74iigf3"; subPackages = [ + "cmd/abidump" "cmd/abigen" "cmd/bootnode" "cmd/checkpoint-admin" diff --git a/pkgs/applications/blockchains/ledger-live-desktop/default.nix b/pkgs/applications/blockchains/ledger-live-desktop/default.nix index d5e84a71d27..edc68f9d0c7 100644 --- a/pkgs/applications/blockchains/ledger-live-desktop/default.nix +++ b/pkgs/applications/blockchains/ledger-live-desktop/default.nix @@ -2,12 +2,12 @@ let pname = "ledger-live-desktop"; - version = "1.18.2"; + version = "2.1.0"; name = "${pname}-${version}"; src = fetchurl { url = "https://github.com/LedgerHQ/${pname}/releases/download/v${version}/${pname}-${version}-linux-x86_64.AppImage"; - sha256 = "1giy8xg1yfv7b7gh98dmfc05wh54xqpd53nanacwcc7lakzizqnn"; + sha256 = "1ywvdqmq8asczhmvc6ai2v6di1f5q19x3ygqlinwz8d1hrj3496r"; }; appimageContents = appimageTools.extractType2 { diff --git a/pkgs/applications/blockchains/litecoin.nix b/pkgs/applications/blockchains/litecoin.nix index 33ac2be1832..ec1658b595d 100644 --- a/pkgs/applications/blockchains/litecoin.nix +++ b/pkgs/applications/blockchains/litecoin.nix @@ -1,33 +1,37 @@ -{ stdenv, fetchFromGitHub +{ stdenv, mkDerivation, fetchFromGitHub , pkgconfig, autoreconfHook , openssl, db48, boost, zlib, miniupnpc -, glib, protobuf, utillinux, qt4, qrencode +, glib, protobuf, utillinux, qrencode , AppKit , withGui ? true, libevent +, qtbase, qttools +, zeromq }: with stdenv.lib; -stdenv.mkDerivation rec { +mkDerivation rec { name = "litecoin" + (toString (optional (!withGui) "d")) + "-" + version; - version = "0.16.3"; + version = "0.17.1"; src = fetchFromGitHub { owner = "litecoin-project"; repo = "litecoin"; rev = "v${version}"; - sha256 = "0vc184qfdkjky1qffa7309k6973k4197bkzwcmffc9r5sdfhrhkp"; + sha256 = "08a0ghs4aa9m3qv3ppydyshfibykdwxk07i1vcqvg0ycqisdpb7y"; }; nativeBuildInputs = [ pkgconfig autoreconfHook ]; - buildInputs = [ openssl db48 boost zlib + buildInputs = [ openssl db48 boost zlib zeromq miniupnpc glib protobuf utillinux libevent ] ++ optionals stdenv.isDarwin [ AppKit ] - ++ optionals withGui [ qt4 qrencode ]; + ++ optionals withGui [ qtbase qttools qrencode ]; configureFlags = [ "--with-boost-libdir=${boost.out}/lib" ] - ++ optionals withGui [ "--with-gui=qt4" ]; + ++ optionals withGui [ + "--with-gui=qt5" + "--with-qt-bindir=${qtbase.dev}/bin:${qttools.dev}/bin" ]; enableParallelBuilding = true; @@ -42,7 +46,7 @@ stdenv.mkDerivation rec { the regular computers and GPUs most people already have. The Litecoin network is scheduled to produce 84 million currency units. ''; - homepage = https://litecoin.org/; + homepage = "https://litecoin.org/"; platforms = platforms.unix; license = licenses.mit; broken = stdenv.isDarwin; diff --git a/pkgs/applications/blockchains/lnd.nix b/pkgs/applications/blockchains/lnd.nix index fd18b3fa399..dd45746c8df 100644 --- a/pkgs/applications/blockchains/lnd.nix +++ b/pkgs/applications/blockchains/lnd.nix @@ -2,16 +2,16 @@ buildGoModule rec { pname = "lnd"; - version = "0.8.1-beta"; + version = "0.9.0-beta"; src = fetchFromGitHub { owner = "lightningnetwork"; repo = "lnd"; rev = "v${version}"; - sha256 = "0f9fx2y66l3wxiax2vl2966avamjarkv3vbn9dy0wbxkwg4pfayb"; + sha256 = "1hq105s9ykp6nsn4iicjnl3mwspqkbfsswkx7sgzv3jggg08fkq9"; }; - modSha256 = "1i6xw2amkg4azvzybcl4pqxif9c0mv8ayrhz9hm8x85bz7i6a787"; + modSha256 = "1pvcvpiz6ck8xkgpypchrq9kgkik0jxd7f3jhihbgldsh4zaqiaq"; meta = with lib; { description = "Lightning Network Daemon"; diff --git a/pkgs/applications/blockchains/mist.nix b/pkgs/applications/blockchains/mist.nix index 2990b44c7f4..9dd564d715c 100644 --- a/pkgs/applications/blockchains/mist.nix +++ b/pkgs/applications/blockchains/mist.nix @@ -8,7 +8,7 @@ let meta = with stdenv.lib; { description = "Browse and use Ðapps on the Ethereum network"; - homepage = https://github.com/ethereum/mist; + homepage = "https://github.com/ethereum/mist"; license = licenses.gpl3; maintainers = with maintainers; []; platforms = [ "x86_64-linux" "i686-linux" ]; diff --git a/pkgs/applications/blockchains/monero-gui/default.nix b/pkgs/applications/blockchains/monero-gui/default.nix index 7082794bba7..48a6d81b6ba 100644 --- a/pkgs/applications/blockchains/monero-gui/default.nix +++ b/pkgs/applications/blockchains/monero-gui/default.nix @@ -1,38 +1,39 @@ -{ stdenv, wrapQtAppsHook, makeDesktopItem, fetchFromGitHub -, qtbase, qmake, qtmultimedia, qttools -, qtgraphicaleffects, qtdeclarative -, qtlocation, qtquickcontrols, qtquickcontrols2 -, qtwebchannel, qtwebengine, qtx11extras, qtxmlpatterns +{ stdenv, wrapQtAppsHook, makeDesktopItem +, fetchFromGitHub, qmake, qttools, pkgconfig +, qtbase, qtdeclarative, qtgraphicaleffects +, qtmultimedia, qtxmlpatterns +, qtquickcontrols, qtquickcontrols2 , monero, unbound, readline, boost, libunwind -, libsodium, pcsclite, zeromq, cppzmq, pkgconfig -, hidapi, randomx +, libsodium, pcsclite, zeromq, cppzmq +, hidapi, libusb, protobuf, randomx }: with stdenv.lib; stdenv.mkDerivation rec { pname = "monero-gui"; - version = "0.15.0.1"; + version = "0.15.0.4"; src = fetchFromGitHub { owner = "monero-project"; repo = "monero-gui"; rev = "v${version}"; - sha256 = "08j8kkncdn57xql0bhmlzjpjkdfhqbpda1p07r797q8qi0nl4w8n"; + sha256 = "12m5fgnxkr11q2arx1m5ccpxqm5ljcvm6l547dwqn297zs5jim4z"; }; nativeBuildInputs = [ qmake pkgconfig wrapQtAppsHook ]; buildInputs = [ - qtbase qtmultimedia qtgraphicaleffects - qtdeclarative qtlocation - qtquickcontrols qtquickcontrols2 - qtwebchannel qtwebengine qtx11extras - qtxmlpatterns monero unbound readline + qtbase qtdeclarative qtgraphicaleffects + qtmultimedia qtquickcontrols qtquickcontrols2 + qtxmlpatterns + monero unbound readline boost libunwind libsodium pcsclite zeromq - cppzmq hidapi randomx + cppzmq hidapi libusb protobuf randomx ]; + NIX_CFLAGS_COMPILE = [ "-Wno-error=format-security" ]; + patches = [ ./move-log-file.patch ]; postPatch = '' @@ -78,7 +79,7 @@ stdenv.mkDerivation rec { meta = { description = "Private, secure, untraceable currency"; - homepage = https://getmonero.org/; + homepage = "https://getmonero.org/"; license = licenses.bsd3; platforms = platforms.all; badPlatforms = platforms.darwin; diff --git a/pkgs/applications/blockchains/monero-gui/move-log-file.patch b/pkgs/applications/blockchains/monero-gui/move-log-file.patch index e540f1960d6..6d3313624e3 100644 --- a/pkgs/applications/blockchains/monero-gui/move-log-file.patch +++ b/pkgs/applications/blockchains/monero-gui/move-log-file.patch @@ -1,15 +1,14 @@ -diff --git a/main.cpp b/main.cpp -index a51568d..5a9f683 100644 ---- a/main.cpp -+++ b/main.cpp -@@ -152,7 +152,9 @@ int main(int argc, char *argv[]) +diff --git a/src/main/main.cpp b/src/main/main.cpp +index c5210e5f..45794d72 100644 +--- a/src/main/main.cpp ++++ b/src/main/main.cpp +@@ -220,6 +220,9 @@ int main(int argc, char *argv[]) QCommandLineOption logPathOption(QStringList() << "l" << "log-file", QCoreApplication::translate("main", "Log to specified file"), QCoreApplication::translate("main", "file")); -- + logPathOption.setDefaultValue( + QStandardPaths::writableLocation(QStandardPaths::CacheLocation) + + "/monero-wallet-gui.log"); - parser.addOption(logPathOption); - parser.addHelpOption(); - parser.process(app); + + QCommandLineOption testQmlOption("test-qml"); + testQmlOption.setFlags(QCommandLineOption::HiddenFromHelp); diff --git a/pkgs/applications/blockchains/monero/default.nix b/pkgs/applications/blockchains/monero/default.nix index 7eb4238679e..2a04beb9379 100644 --- a/pkgs/applications/blockchains/monero/default.nix +++ b/pkgs/applications/blockchains/monero/default.nix @@ -2,7 +2,7 @@ , cmake, pkgconfig , boost, miniupnpc, openssl, unbound, cppzmq , zeromq, pcsclite, readline, libsodium, hidapi -, python3Packages, randomx, rapidjson +, pythonProtobuf, randomx, rapidjson, libusb , CoreData, IOKit, PCSC }: @@ -26,7 +26,7 @@ stdenv.mkDerivation rec { boost miniupnpc openssl unbound cppzmq zeromq pcsclite readline libsodium hidapi randomx rapidjson - python3Packages.protobuf + pythonProtobuf libusb ] ++ stdenv.lib.optionals stdenv.isDarwin [ IOKit CoreData PCSC ]; cmakeFlags = [ @@ -37,7 +37,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Private, secure, untraceable currency"; - homepage = https://getmonero.org/; + homepage = "https://getmonero.org/"; license = licenses.bsd3; platforms = platforms.all; maintainers = with maintainers; [ ehmry rnhmjoj ]; diff --git a/pkgs/applications/blockchains/namecoin.nix b/pkgs/applications/blockchains/namecoin.nix index 4b8dc5525dc..02f2249862d 100644 --- a/pkgs/applications/blockchains/namecoin.nix +++ b/pkgs/applications/blockchains/namecoin.nix @@ -3,14 +3,14 @@ with stdenv.lib; stdenv.mkDerivation rec { - version = "nc0.15.99-name-tab-beta2"; + version = "nc0.19.1"; name = "namecoin" + toString (optional (!withGui) "d") + "-" + version; src = fetchFromGitHub { owner = "namecoin"; repo = "namecoin-core"; rev = version; - sha256 = "1r0v0yvlazmidxp6xhapbdawqb8fhzrdp11d4an5vgxa208s6wdf"; + sha256 = "13rdvngrl2w0gk7km3sd9fy8yxzgxlkcwn50ajsbrhgzl8kx4q7m"; }; nativeBuildInputs = [ @@ -40,7 +40,7 @@ stdenv.mkDerivation rec { meta = { description = "Decentralized open source information registration and transfer system based on the Bitcoin cryptocurrency"; - homepage = https://namecoin.org; + homepage = "https://namecoin.org"; license = licenses.mit; maintainers = with maintainers; [ doublec AndersonTorres infinisil ]; platforms = platforms.linux; diff --git a/pkgs/applications/blockchains/nano-wallet/default.nix b/pkgs/applications/blockchains/nano-wallet/default.nix index 2b7ae5d9c6e..664e2674062 100644 --- a/pkgs/applications/blockchains/nano-wallet/default.nix +++ b/pkgs/applications/blockchains/nano-wallet/default.nix @@ -4,13 +4,13 @@ stdenv.mkDerivation rec { pname = "nano-wallet"; - version = "19.0"; + version = "20.0"; src = fetchFromGitHub { owner = "nanocurrency"; repo = "raiblocks"; rev = "V${version}"; - sha256 = "1y5fc4cvfqh33imjkh91sqhy5bb9kh0icwyvdgm1cl564vnjax80"; + sha256 = "12nrjjd89yjzx20d85ccmp395pl0djpx0x0qb8dgka8xfy11k7xn"; fetchSubmodules = true; }; @@ -53,7 +53,7 @@ stdenv.mkDerivation rec { meta = { inherit version; description = "Wallet for Nano cryptocurrency"; - homepage = https://nano.org/en/wallet/; + homepage = "https://nano.org/en/wallet/"; license = lib.licenses.bsd2; # Fails on Darwin. See: # https://github.com/NixOS/nixpkgs/pull/39295#issuecomment-386800962 diff --git a/pkgs/applications/blockchains/parity-ui/default.nix b/pkgs/applications/blockchains/parity-ui/default.nix index 0615aed2ca0..b18c121607a 100644 --- a/pkgs/applications/blockchains/parity-ui/default.nix +++ b/pkgs/applications/blockchains/parity-ui/default.nix @@ -40,7 +40,7 @@ in stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "UI for Parity. Fast, light, robust Ethereum implementation"; - homepage = http://parity.io; + homepage = "http://parity.io"; license = licenses.gpl3; maintainers = [ maintainers.sorpaas ]; platforms = platforms.linux; diff --git a/pkgs/applications/blockchains/parity/beta.nix b/pkgs/applications/blockchains/parity/beta.nix deleted file mode 100644 index ffa509d2320..00000000000 --- a/pkgs/applications/blockchains/parity/beta.nix +++ /dev/null @@ -1,6 +0,0 @@ -let - version = "2.6.6"; - sha256 = "1gx5qg9c588d5m564bnbly86663yrzb2hmlgv9zplwba7p0lpphl"; - cargoSha256 = "1xqmnirx2r91q5gy1skxl0f79xvaqzimq3l0cj4xvfms7mpdfbg1"; -in - import ./parity.nix { inherit version sha256 cargoSha256; } diff --git a/pkgs/applications/blockchains/parity/default.nix b/pkgs/applications/blockchains/parity/default.nix index 1b5870b429b..e390b78b86d 100644 --- a/pkgs/applications/blockchains/parity/default.nix +++ b/pkgs/applications/blockchains/parity/default.nix @@ -1,6 +1,46 @@ -let - version = "2.5.11"; - sha256 = "1x2p559g2f30520v3kn46n737l5s1kwrn962dv73s6mb6n1lhs55"; - cargoSha256 = "16nf6y0hyffwdhxn1w4ms4zycs5lkzir8sj6c2lgsabig057hb6z"; -in - import ./parity.nix { inherit version sha256 cargoSha256; } +{ lib +, fetchFromGitHub +, rustPlatform +, cmake +, llvmPackages +, openssl +, pkg-config +, systemd +}: + +rustPlatform.buildRustPackage rec { + pname = "parity"; + version = "2.7.2"; + + src = fetchFromGitHub { + owner = "paritytech"; + repo = "parity-ethereum"; + rev = "v${version}"; + sha256 = "09cvqk0h9c26famh3f1nc3g74cd0zk6klys977yr1f13bgqmzx0x"; + }; + + cargoSha256 = "1fdymy8hvn137i5y4flyhlxwjxkd2cd6gq81i1429gk7j3h085ig"; + + LIBCLANG_PATH = "${llvmPackages.libclang}/lib"; + nativeBuildInputs = [ + cmake + llvmPackages.clang + llvmPackages.libclang + pkg-config + ]; + + buildInputs = [ openssl systemd ]; + + cargoBuildFlags = [ "--features final" ]; + + # test result: FAILED. 88 passed; 13 failed; 0 ignored; 0 measured; 0 filtered out + doCheck = false; + + meta = with lib; { + description = "Fast, light, robust Ethereum implementation"; + homepage = "http://parity.io"; + license = licenses.gpl3; + maintainers = with maintainers; [ akru xrelkd ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/applications/blockchains/parity/parity.nix b/pkgs/applications/blockchains/parity/parity.nix deleted file mode 100644 index 7f28d97bf81..00000000000 --- a/pkgs/applications/blockchains/parity/parity.nix +++ /dev/null @@ -1,44 +0,0 @@ -{ version -, sha256 -, cargoSha256 -}: - -{ lib -, fetchFromGitHub -, rustPlatform - -, cmake -, openssl -, pkgconfig -, systemd -}: - -rustPlatform.buildRustPackage { - pname = "parity"; - inherit version; - inherit cargoSha256; - - src = fetchFromGitHub { - owner = "paritytech"; - repo = "parity-ethereum"; - rev = "v${version}"; - inherit sha256; - }; - - nativeBuildInputs = [ cmake pkgconfig ]; - - buildInputs = [ openssl systemd ]; - - cargoBuildFlags = [ "--features final" ]; - - # test result: FAILED. 80 passed; 12 failed; 0 ignored; 0 measured; 0 filtered out - doCheck = false; - - meta = with lib; { - description = "Fast, light, robust Ethereum implementation"; - homepage = "http://parity.io"; - license = licenses.gpl3; - maintainers = with maintainers; [ akru xrelkd ]; - platforms = platforms.linux; - }; -} diff --git a/pkgs/applications/blockchains/particl/particl-core.nix b/pkgs/applications/blockchains/particl/particl-core.nix index 613d57cd9c8..5cb94b8bd54 100644 --- a/pkgs/applications/blockchains/particl/particl-core.nix +++ b/pkgs/applications/blockchains/particl/particl-core.nix @@ -45,7 +45,7 @@ stdenv.mkDerivation rec { An open source, decentralized privacy platform built for global person to person eCommerce. RPC daemon and CLI client only. ''; - homepage = https://particl.io/; + homepage = "https://particl.io/"; maintainers = with maintainers; [ demyanrogozhin ]; license = licenses.mit; platforms = platforms.unix; diff --git a/pkgs/applications/blockchains/pivx.nix b/pkgs/applications/blockchains/pivx.nix index 22fdc7f51c5..600e462b390 100644 --- a/pkgs/applications/blockchains/pivx.nix +++ b/pkgs/applications/blockchains/pivx.nix @@ -10,13 +10,13 @@ with stdenv.lib; stdenv.mkDerivation rec { name = "pivx-${version}"; - version = "3.4.0"; + version = "4.0.2"; src = fetchFromGitHub { owner = "PIVX-Project"; repo= "PIVX"; rev = "v${version}"; - sha256 = "1fqccdqhbwyvix0ihhbgg2w048i6bhfmazr36h2cn4j65n1fgmi2"; + sha256 = "12lnp318k8dx1sar24zfmv2imnzs30srssnlpb31y7hcxhz0wpc5"; }; nativeBuildInputs = [ pkgconfig autoreconfHook ] ++ optionals withGui [ wrapQtAppsHook ]; @@ -53,7 +53,7 @@ stdenv.mkDerivation rec { Zero Knowledge cryptography proofs for industry-leading transaction anonymity. ''; license = licenses.mit; - homepage = https://www.dash.org; + homepage = "https://www.dash.org"; maintainers = with maintainers; [ wucke13 ]; platforms = platforms.unix; # TODO diff --git a/pkgs/applications/blockchains/polkadot/default.nix b/pkgs/applications/blockchains/polkadot/default.nix index b50b14258cc..a919a305419 100644 --- a/pkgs/applications/blockchains/polkadot/default.nix +++ b/pkgs/applications/blockchains/polkadot/default.nix @@ -11,21 +11,27 @@ rustPlatform.buildRustPackage rec { src = fetchFromGitHub { owner = "paritytech"; + # N.B. In 2018, the thing that was "polkadot" was split off into its own + # repo, so if this package is ever updated it should be changed to + # paritytech/polkadot, as per comment here: + # https://github.com/paritytech/polkadot#note repo = "substrate"; rev = "19f4f4d4df3bb266086b4e488739f73d3d5e588c"; sha256 = "0v7g03rbml2afw0splmyjh9nqpjg0ldjw09hyc0jqd3qlhgxiiyj"; - }; + }; - cargoSha256 = "0gc3w0cwdyk8f7cgpp9sfawczk3n6wd7q0nhfvk87sry71b8vvwq"; + cargoSha256 = "1h5v7c7xi2r2wzh1pj6xidrg7dx23w3rjm88mggpq7574arijk4i"; buildInputs = [ pkgconfig openssl openssl.dev ]; meta = with stdenv.lib; { description = "Polkadot Node Implementation"; - homepage = https://polkadot.network; + homepage = "https://polkadot.network"; license = licenses.gpl3; maintainers = [ maintainers.akru ]; platforms = platforms.linux; + # Last attempt at building this was on v0.7.22 + # https://github.com/paritytech/polkadot/releases broken = true; }; } diff --git a/pkgs/applications/blockchains/quorum.nix b/pkgs/applications/blockchains/quorum.nix new file mode 100644 index 00000000000..49bc0be108f --- /dev/null +++ b/pkgs/applications/blockchains/quorum.nix @@ -0,0 +1,35 @@ +{ stdenv, fetchFromGitHub, buildGoPackage, git, which }: + +buildGoPackage rec { + pname = "quorum"; + version = "2.5.0"; + + goPackagePath = "github.com/jpmorganchase/quorum"; + + src = fetchFromGitHub { + owner = "jpmorganchase"; + repo = pname; + rev = "v${version}"; + sha256 = "0xfdaqp9bj5dkw12gy19lxj73zh7w80j051xclsvnd41sfah86ll"; + }; + + buildInputs = [ git which ]; + + buildPhase = '' + cd "go/src/$goPackagePath" + make geth bootnode swarm + ''; + + installPhase = '' + mkdir -pv $bin/bin + cp -v build/bin/geth build/bin/bootnode build/bin/swarm $bin/bin + ''; + + meta = with stdenv.lib; { + description = "A permissioned implementation of Ethereum supporting data privacy"; + homepage = "https://www.goquorum.com/"; + license = licenses.lgpl3; + maintainers = with maintainers; [ mmahut ]; + platforms = subtractLists ["aarch64-linux"] platforms.linux; + }; +} diff --git a/pkgs/applications/blockchains/stellar-core.nix b/pkgs/applications/blockchains/stellar-core.nix index 4c3f9fe0760..6bb717a0344 100644 --- a/pkgs/applications/blockchains/stellar-core.nix +++ b/pkgs/applications/blockchains/stellar-core.nix @@ -39,7 +39,7 @@ in stdenv.mkDerivation { instances of stellar-core on the network. Optionally, stellar-core can store historical records of the ledger and participate in consensus. ''; - homepage = https://www.stellar.org/; + homepage = "https://www.stellar.org/"; platforms = [ "x86_64-linux" ]; maintainers = with maintainers; [ chris-martin ]; license = licenses.asl20; diff --git a/pkgs/applications/blockchains/tessera.nix b/pkgs/applications/blockchains/tessera.nix new file mode 100644 index 00000000000..84f7925d218 --- /dev/null +++ b/pkgs/applications/blockchains/tessera.nix @@ -0,0 +1,26 @@ +{ stdenv, fetchurl, makeWrapper, jre }: + +stdenv.mkDerivation rec { + pname = "tessera"; + version = "0.10.2"; + + src = fetchurl { + url = "https://oss.sonatype.org/service/local/repositories/releases/content/com/jpmorgan/quorum/${pname}-app/${version}/${pname}-app-${version}-app.jar"; + sha256 = "1zn8w7q0q5man0407kb82lw4mlvyiy9whq2f6izf2b5415f9s0m4"; + }; + + nativeBuildInputs = [ makeWrapper ]; + + dontUnpack = true; + + installPhase = '' + makeWrapper ${jre}/bin/java $out/bin/tessera --add-flags "-jar $src" + ''; + + meta = with stdenv.lib; { + description = "Enterprise Implementation of Quorum's transaction manager"; + homepage = "https://github.com/jpmorganchase/tessera"; + license = licenses.asl20; + maintainers = with maintainers; [ mmahut ]; + }; +} diff --git a/pkgs/applications/blockchains/vertcoin.nix b/pkgs/applications/blockchains/vertcoin.nix new file mode 100644 index 00000000000..1b8b0376331 --- /dev/null +++ b/pkgs/applications/blockchains/vertcoin.nix @@ -0,0 +1,69 @@ +{ stdenv +, fetchFromGitHub +, openssl +, boost +, libevent +, autoreconfHook +, db4 +, pkgconfig +, protobuf +, hexdump +, zeromq +, withGui +, qtbase ? null +, qttools ? null +, wrapQtAppsHook ? null +}: + +with stdenv.lib; + +stdenv.mkDerivation rec { + pname = "vertcoin"; + version = "0.14.0"; + + name = pname + toString (optional (!withGui) "d") + "-" + version; + + src = fetchFromGitHub { + owner = pname + "-project"; + repo = pname + "-core"; + rev = version; + sha256 = "00vnmrhn5mad58dyiz8rxgsrn0663ii6fdbcqm20mv1l313k4882"; + }; + + nativeBuildInputs = [ + autoreconfHook + pkgconfig + hexdump + ] ++ optionals withGui [ + wrapQtAppsHook + ]; + + buildInputs = [ + openssl + boost + libevent + db4 + zeromq + ] ++ optionals withGui [ + qtbase + qttools + protobuf + ]; + + enableParallelBuilding = true; + + configureFlags = [ + "--with-boost-libdir=${boost.out}/lib" + ] ++ optionals withGui [ + "--with-gui=qt5" + "--with-qt-bindir=${qtbase.dev}/bin:${qttools.dev}/bin" + ]; + + meta = { + description = "A digital currency with mining decentralisation and ASIC resistance as a key focus"; + homepage = "https://vertcoin.org/"; + license = licenses.mit; + maintainers = [ maintainers.mmahut ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/applications/blockchains/wasabiwallet/default.nix b/pkgs/applications/blockchains/wasabiwallet/default.nix index 9599dc9407c..6b9630fa6b7 100644 --- a/pkgs/applications/blockchains/wasabiwallet/default.nix +++ b/pkgs/applications/blockchains/wasabiwallet/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, makeDesktopItem, openssl, xorg, curl, fontconfig, krb5, zlib, dotnet-sdk }: +{ stdenv, fetchurl, makeDesktopItem, openssl, xorg, curl, fontconfig, krb5, zlib, dotnet-netcore }: stdenv.mkDerivation rec { pname = "wasabiwallet"; @@ -27,7 +27,7 @@ stdenv.mkDerivation rec { cd $out/opt/${pname} for i in $(find . -type f -name '*.so') wassabee do - patchelf --set-rpath ${stdenv.lib.makeLibraryPath [ openssl stdenv.cc.cc.lib xorg.libX11 curl fontconfig.lib krb5 zlib dotnet-sdk ]} $i + patchelf --set-rpath ${stdenv.lib.makeLibraryPath [ openssl stdenv.cc.cc.lib xorg.libX11 curl fontconfig.lib krb5 zlib dotnet-netcore ]} $i done patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" wassabee ln -s $out/opt/${pname}/wassabee $out/bin/${pname} diff --git a/pkgs/applications/blockchains/wownero.nix b/pkgs/applications/blockchains/wownero.nix index 8b25e098b2f..1094d7f0f7b 100644 --- a/pkgs/applications/blockchains/wownero.nix +++ b/pkgs/applications/blockchains/wownero.nix @@ -39,7 +39,7 @@ stdenv.mkDerivation rec { signatures using different participants for the same tx outputs on opposing forks. ''; - homepage = http://wownero.org/; + homepage = "https://wownero.org/"; license = licenses.bsd3; platforms = platforms.linux; maintainers = with maintainers; [ fuwa ]; diff --git a/pkgs/applications/blockchains/zcash/default.nix b/pkgs/applications/blockchains/zcash/default.nix index f6114b3c213..e2c57d514cd 100644 --- a/pkgs/applications/blockchains/zcash/default.nix +++ b/pkgs/applications/blockchains/zcash/default.nix @@ -7,15 +7,19 @@ with stdenv.lib; stdenv.mkDerivation rec { pname = "zcash"; - version = "2.1.0-1"; + version = "2.1.1-1"; src = fetchFromGitHub { owner = "zcash"; repo = "zcash"; rev = "v${version}"; - sha256 = "05bnn4lxrrcv1ha3jdfrgwg4ar576161n3j9d4gpc14ww3zgf9vz"; + sha256 = "1g5zlfzfp31my8w8nlg5fncpr2y95iv9fm04x57sjb93rgmjdh5n"; }; + patchPhase = '' + sed -i"" 's,-fvisibility=hidden,,g' src/Makefile.am + ''; + nativeBuildInputs = [ autoreconfHook pkgconfig ]; buildInputs = [ gtest gmock gmp openssl wget db62 boost17x zlib protobuf libevent libsodium librustzcash ] @@ -23,17 +27,15 @@ stdenv.mkDerivation rec { configureFlags = [ "--with-boost-libdir=${boost17x.out}/lib" ]; - patchPhase = '' - sed -i"" 's,-fvisibility=hidden,,g' src/Makefile.am - ''; - postInstall = '' cp zcutil/fetch-params.sh $out/bin/zcash-fetch-params ''; + enableParallelBuilding = true; + meta = { description = "Peer-to-peer, anonymous electronic cash system"; - homepage = https://z.cash/; + homepage = "https://z.cash/"; maintainers = with maintainers; [ rht tkerber ]; license = licenses.mit; platforms = platforms.linux; diff --git a/pkgs/applications/blockchains/zcash/librustzcash/default.nix b/pkgs/applications/blockchains/zcash/librustzcash/default.nix index 31703f8fb2a..6cd2ae018fb 100644 --- a/pkgs/applications/blockchains/zcash/librustzcash/default.nix +++ b/pkgs/applications/blockchains/zcash/librustzcash/default.nix @@ -1,17 +1,17 @@ { stdenv, fetchFromGitHub, rustPlatform }: rustPlatform.buildRustPackage rec { - pname = "librustzcash-unstable"; - version = "2018-10-27"; + pname = "librustzcash"; + version = "0.1.0"; src = fetchFromGitHub { owner = "zcash"; repo = "librustzcash"; - rev = "06da3b9ac8f278e5d4ae13088cf0a4c03d2c13f5"; - sha256 = "0md0pp3k97iv7kfjpfkg14pjanhrql4vafa8ggbxpkajv1j4xldv"; + rev = version; + sha256 = "0d28k29sgzrg9clynz29kpw50kbkp0a4dfdayqhmpjmsh05y6261"; }; - cargoSha256 = "166v8cxlpfslbs5gljbh7wp0lxqakayw47ikxm9r9a39n7j36mq1"; + cargoSha256 = "1wzyrcmcbrna6rjzw19c4lq30didzk4w6fs6wmvxp0xfg4qqdlax"; installPhase = '' mkdir -p $out/lib @@ -20,11 +20,12 @@ rustPlatform.buildRustPackage rec { cp librustzcash/include/librustzcash.h $out/include/ ''; + # The tests do pass, but they take an extremely long time to run. doCheck = false; meta = with stdenv.lib; { description = "Rust-language assets for Zcash"; - homepage = https://github.com/zcash/librustzcash; + homepage = "https://github.com/zcash/librustzcash"; maintainers = with maintainers; [ rht tkerber ]; license = with licenses; [ mit asl20 ]; platforms = platforms.unix; diff --git a/pkgs/applications/display-managers/lightdm-enso-os-greeter/default.nix b/pkgs/applications/display-managers/lightdm-enso-os-greeter/default.nix index 3128f125cd9..488ef4cfedd 100644 --- a/pkgs/applications/display-managers/lightdm-enso-os-greeter/default.nix +++ b/pkgs/applications/display-managers/lightdm-enso-os-greeter/default.nix @@ -7,7 +7,7 @@ stdenv.mkDerivation { pname = "lightdm-enso-os-greeter"; src = fetchgit { - url = https://github.com/nick92/Enso-OS; + url = "https://github.com/nick92/Enso-OS"; rev = "ed48330bfd986072bd82ac542ed8f8a7365c6427"; sha256 = "11jm181jq1vbn83h235avpdxz7pqq6prqyzki5yryy53mkj4kgxz"; }; @@ -60,7 +60,7 @@ stdenv.mkDerivation { A fork of pantheon greeter that positions elements in a central and vertigal manner and adds a blur effect to the background ''; - homepage = https://github.com/nick92/Enso-OS; + homepage = "https://github.com/nick92/Enso-OS"; platforms = platforms.linux; license = licenses.gpl3; maintainers = with maintainers; [ diff --git a/pkgs/applications/display-managers/lightdm-mini-greeter/default.nix b/pkgs/applications/display-managers/lightdm-mini-greeter/default.nix index b5b26d7cc43..256ecd59f4e 100644 --- a/pkgs/applications/display-managers/lightdm-mini-greeter/default.nix +++ b/pkgs/applications/display-managers/lightdm-mini-greeter/default.nix @@ -2,13 +2,13 @@ stdenv.mkDerivation rec { pname = "lightdm-mini-greeter"; - version = "0.3.4"; + version = "0.4.0"; src = fetchFromGitHub { owner = "prikhi"; repo = "lightdm-mini-greeter"; rev = version; - sha256 = "1qi0bsqi8z2zv3303ww0kd7bciz6qx8na5bkvgrqlwyvq31czai5"; + sha256 = "10hga7pmfyjdvj4xwm3djwrhk50brcpycj3p3c57pa0vnx4ill3s"; }; nativeBuildInputs = [ autoreconfHook pkgconfig wrapGAppsHook ]; @@ -29,9 +29,10 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "A minimal, configurable, single-user GTK3 LightDM greeter"; - homepage = https://github.com/prikhi/lightdm-mini-greeter; + homepage = "https://github.com/prikhi/lightdm-mini-greeter"; license = licenses.gpl3; maintainers = with maintainers; [ mnacamura prikhi ]; platforms = platforms.linux; + changelog = "https://github.com/prikhi/lightdm-mini-greeter/blob/master/CHANGELOG.md"; }; } diff --git a/pkgs/applications/display-managers/lightdm-tiny-greeter/default.nix b/pkgs/applications/display-managers/lightdm-tiny-greeter/default.nix new file mode 100644 index 00000000000..7e37d134874 --- /dev/null +++ b/pkgs/applications/display-managers/lightdm-tiny-greeter/default.nix @@ -0,0 +1,46 @@ +{ stdenv, linkFarm, lightdm-tiny-greeter, fetchFromGitHub +, pkgconfig, lightdm, gtk3, glib, wrapGAppsHook, conf ? "" }: + +stdenv.mkDerivation rec { + pname = "lightdm-tiny-greeter"; + version = "1.2"; + + src = fetchFromGitHub { + owner = "off-world"; + repo = "lightdm-tiny-greeter"; + rev = version; + sha256 = "08azpj7b5qgac9bgi1xvd6qy6x2nb7iapa0v40ggr3d1fabyhrg6"; + }; + + nativeBuildInputs = [ pkgconfig wrapGAppsHook ]; + buildInputs = [ lightdm gtk3 glib ]; + + postUnpack = if conf != "" then '' + cp ${builtins.toFile "config.h" conf} source/config.h + '' else ""; + + buildPhase = '' + mkdir -p $out/bin $out/share/xgreeters + make ${pname} + mv ${pname} $out/bin/. + mv lightdm-tiny-greeter.desktop $out/share/xgreeters + ''; + + installPhase = '' + substituteInPlace "$out/share/xgreeters/lightdm-tiny-greeter.desktop" \ + --replace "Exec=lightdm-tiny-greeter" "Exec=$out/bin/lightdm-tiny-greeter" + ''; + + passthru.xgreeters = linkFarm "lightdm-tiny-greeter-xgreeters" [{ + path = "${lightdm-tiny-greeter}/share/xgreeters/lightdm-tiny-greeter.desktop"; + name = "lightdm-tiny-greeter.desktop"; + }]; + + meta = with stdenv.lib; { + description = "A tiny multi user lightdm greeter"; + homepage = "https://github.com/off-world/lightdm-tiny-greeter"; + license = licenses.bsd3; + maintainers = with maintainers; [ edwtjo ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/applications/display-managers/lightdm/default.nix b/pkgs/applications/display-managers/lightdm/default.nix index 952aa285637..1a65ebd3357 100644 --- a/pkgs/applications/display-managers/lightdm/default.nix +++ b/pkgs/applications/display-managers/lightdm/default.nix @@ -85,6 +85,12 @@ stdenv.mkDerivation rec { sha256 = "1zyx1qqajrmqcf9hbsapd39gmdanswd9l78rq7q6rdy4692il3yn"; }) + # https://github.com/canonical/lightdm/pull/104 + (fetchpatch { + url = "https://github.com/canonical/lightdm/commit/03f218981733e50d810767f9d04e42ee156f7feb.patch"; + sha256 = "07w18m2gpk29z6ym4y3lzsmg5dk3ffn39sq6lac26ap7narf4ma7"; + }) + # Hardcode plymouth to fix transitions. # For some reason it can't find `plymouth` # even when it's in PATH in environment.systemPackages. @@ -122,7 +128,7 @@ stdenv.mkDerivation rec { ''; meta = { - homepage = https://github.com/CanonicalLtd/lightdm; + homepage = "https://github.com/CanonicalLtd/lightdm"; description = "A cross-desktop display manager"; platforms = platforms.linux; license = licenses.gpl3; diff --git a/pkgs/applications/display-managers/lightdm/gtk-greeter.nix b/pkgs/applications/display-managers/lightdm/gtk-greeter.nix index 91fe3e5b22f..ab7dd90801c 100644 --- a/pkgs/applications/display-managers/lightdm/gtk-greeter.nix +++ b/pkgs/applications/display-managers/lightdm/gtk-greeter.nix @@ -46,7 +46,7 @@ stdenv.mkDerivation rec { configureFlagsArray+=( --enable-at-spi-command="${at-spi2-core}/libexec/at-spi-bus-launcher --launch-immediately" ) ''; - NIX_CFLAGS_COMPILE = [ "-Wno-error=deprecated-declarations" ]; + NIX_CFLAGS_COMPILE = "-Wno-error=deprecated-declarations"; installFlags = [ "localstatedir=\${TMPDIR}" @@ -64,7 +64,7 @@ stdenv.mkDerivation rec { }]; meta = with stdenv.lib; { - homepage = https://launchpad.net/lightdm-gtk-greeter; + homepage = "https://launchpad.net/lightdm-gtk-greeter"; platforms = platforms.linux; license = licenses.gpl3; maintainers = with maintainers; [ ocharles ]; diff --git a/pkgs/applications/display-managers/ly/default.nix b/pkgs/applications/display-managers/ly/default.nix index 2f0a770bc71..f16dd62bb1a 100644 --- a/pkgs/applications/display-managers/ly/default.nix +++ b/pkgs/applications/display-managers/ly/default.nix @@ -23,7 +23,7 @@ stdenv.mkDerivation rec { meta = with lib; { description = "TUI display manager"; license = licenses.wtfpl; - homepage = https://github.com/cylgom/ly; + homepage = "https://github.com/cylgom/ly"; maintainers = [ maintainers.spacekookie ]; }; } diff --git a/pkgs/applications/display-managers/sddm/default.nix b/pkgs/applications/display-managers/sddm/default.nix index 735e83a0842..3ebeaa6262b 100644 --- a/pkgs/applications/display-managers/sddm/default.nix +++ b/pkgs/applications/display-managers/sddm/default.nix @@ -60,7 +60,7 @@ in mkDerivation { meta = with lib; { description = "QML based X11 display manager"; - homepage = https://github.com/sddm/sddm; + homepage = "https://github.com/sddm/sddm"; maintainers = with maintainers; [ abbradar ttuegel ]; platforms = platforms.linux; license = licenses.gpl2Plus; diff --git a/pkgs/applications/editors/aewan/default.nix b/pkgs/applications/editors/aewan/default.nix index 1bd73bebe03..56a144bdfb8 100644 --- a/pkgs/applications/editors/aewan/default.nix +++ b/pkgs/applications/editors/aewan/default.nix @@ -13,7 +13,7 @@ stdenv.mkDerivation rec { meta = { description = "Ascii-art Editor Without A Name"; - homepage = http://aewan.sourceforge.net/; + homepage = "http://aewan.sourceforge.net/"; license = stdenv.lib.licenses.gpl2Plus; platforms = stdenv.lib.platforms.unix; }; diff --git a/pkgs/applications/editors/amp/default.nix b/pkgs/applications/editors/amp/default.nix index 31d0806df8a..9be6d56ab34 100644 --- a/pkgs/applications/editors/amp/default.nix +++ b/pkgs/applications/editors/amp/default.nix @@ -3,20 +3,19 @@ rustPlatform.buildRustPackage rec { pname = "amp"; - # The latest release (0.5.2) does not compile, so we use a git snapshot instead. - version = "unstable-2019-06-09"; + version = "0.6.2"; src = fetchFromGitHub { owner = "jmacdonald"; repo = pname; - rev = "2c88e82a88ada8a5fd2620ef225192395a4533a2"; - sha256 = "0ha1xiabq31s687gkrnszf3zc7b3sfdl79iyg5ygbc49mzvarp8c"; + rev = version; + sha256 = "0l1vpcfq6jrq2dkrmsa4ghwdpp7c54f46gz3n7nk0i41b12hnigw"; }; - cargoSha256 = "1bvj2zg19ak4vi47vjkqlybz011kn5zq1j7zznr76zrryacw4lz1"; + cargoSha256 = "09v991rl2w4c4jh7ga7q1lk6wyl2vr71j5cpniij8mcvszrz78qf"; - nativeBuildInputs = [ cmake pkgconfig ]; - buildInputs = [ openssl python3 xorg.libxcb libgit2 ] ++ stdenv.lib.optionals stdenv.isDarwin + nativeBuildInputs = [ cmake pkgconfig python3 ]; + buildInputs = [ openssl xorg.libxcb libgit2 ] ++ stdenv.lib.optionals stdenv.isDarwin (with darwin.apple_sdk.frameworks; [ curl Security AppKit ]); # Tests need to write to the theme directory in HOME. diff --git a/pkgs/applications/editors/android-studio/common.nix b/pkgs/applications/editors/android-studio/common.nix index 05a997c62ff..0625431462c 100644 --- a/pkgs/applications/editors/android-studio/common.nix +++ b/pkgs/applications/editors/android-studio/common.nix @@ -22,6 +22,7 @@ , freetype , libpulseaudio , libGL +, libuuid , libX11 , libxcb , libXcomposite @@ -115,6 +116,7 @@ let dbus expat libpulseaudio + libuuid libX11 libxcb libXcomposite @@ -183,9 +185,16 @@ in runCommand IntelliJ IDEA. ''; homepage = if channel == "stable" - then https://developer.android.com/studio/index.html - else https://developer.android.com/studio/preview/index.html; - license = licenses.asl20; + then "https://developer.android.com/studio/index.html" + else "https://developer.android.com/studio/preview/index.html"; + license = with licenses; [ asl20 unfree ]; # The code is under Apache-2.0, but: + # If one selects Help -> Licenses in Android Studio, the dialog shows the following: + # "Android Studio includes proprietary code subject to separate license, + # including JetBrains CLion(R) (www.jetbrains.com/clion) and IntelliJ(R) + # IDEA Community Edition (www.jetbrains.com/idea)." + # Also: For actual development the Android SDK is required and the Google + # binaries are also distributed as proprietary software (unlike the + # source-code itself). platforms = [ "x86_64-linux" ]; maintainers = with maintainers; [ primeos ]; }; diff --git a/pkgs/applications/editors/android-studio/default.nix b/pkgs/applications/editors/android-studio/default.nix index fcd15355a10..a6b99e58351 100644 --- a/pkgs/applications/editors/android-studio/default.nix +++ b/pkgs/applications/editors/android-studio/default.nix @@ -8,19 +8,19 @@ let inherit (gnome2) GConf gnome_vfs; }; stableVersion = { - version = "3.5.3.0"; # "Android Studio 3.5.3" - build = "191.6010548"; - sha256Hash = "1nsm4d3vdx90szqd78a8mjq65xc9m5ipd35cqrlx3c3ny900sqxg"; + version = "3.6.3.0"; # "Android Studio 3.6.3" + build = "192.6392135"; + sha256Hash = "0apxmp341m7mbpm2df3qvsbaifwy6yqq746kbhbwlw8bn9hrzv1k"; }; betaVersion = { - version = "3.6.0.18"; # "Android Studio 3.6 RC 1" - build = "192.6071332"; - sha256Hash = "0xpcihr5xxr9l1kv6aflywshs8fww3s7di0g98mz475whhxwzf3q"; + version = "4.0.0.13"; # "Android Studio 4.0 Beta 4" + build = "193.6348893"; + sha256Hash = "0lchi3l50826n1af1z24yclpf27v2q5p1zjbvcmn37wz46d4s4g2"; }; latestVersion = { # canary & dev - version = "4.0.0.6"; # "Android Studio 4.0 Canary 6" - build = "193.6052267"; - sha256Hash = "1naxyfnrj7milqha7xbwbcvyi81a7fqb7jsm03hhq5xs2sw55m1c"; + version = "4.1.0.6"; # "Android Studio 4.1 Canary 6" + build = "193.6381907"; + sha256Hash = "0sa5plr96m90wv5hi9bqwa11j6k8k9wa0ji8qmlimdhnpyzhsdrx"; }; in { # Attributes are named by their corresponding release channels diff --git a/pkgs/applications/editors/apostrophe/default.nix b/pkgs/applications/editors/apostrophe/default.nix new file mode 100644 index 00000000000..623f86a61c2 --- /dev/null +++ b/pkgs/applications/editors/apostrophe/default.nix @@ -0,0 +1,56 @@ +{ stdenv, fetchFromGitLab, meson, ninja, cmake +, wrapGAppsHook, pkgconfig, desktop-file-utils +, appstream-glib, pythonPackages, glib, gobject-introspection +, gtk3, webkitgtk, glib-networking, gnome3, gspell, texlive +, shared-mime-info, haskellPackages}: + +let + pythonEnv = pythonPackages.python.withPackages(p: with p; + [ regex setuptools python-Levenshtein pyenchant pygobject3 pycairo pypandoc ]); + texliveDist = texlive.combined.scheme-medium; + +in stdenv.mkDerivation rec { + pname = "apostrophe"; + version = "unstable-2020-03-29"; + + src = fetchFromGitLab { + owner = "somas"; + repo = pname; + domain = "gitlab.gnome.org"; + rev = "219fa8976e3b8a6f0cea15cfefe4e336423f2bdb"; + sha256 = "192n5qs3x6rx62mqxd6wajwm453pns8kjyz5v3xc891an6bm1kqx"; + }; + + nativeBuildInputs = [ meson ninja cmake pkgconfig desktop-file-utils + appstream-glib wrapGAppsHook ]; + + buildInputs = [ glib pythonEnv gobject-introspection gtk3 + gnome3.adwaita-icon-theme webkitgtk gspell texliveDist + glib-networking ]; + + postPatch = '' + patchShebangs --build build-aux/meson_post_install.py + + substituteInPlace ${pname}/config.py --replace "/usr/share/${pname}" "$out/share/${pname}" + + # get rid of unused distributed dependencies + rm -r ${pname}/pylocales + ''; + + preFixup = '' + gappsWrapperArgs+=( + --prefix PYTHONPATH : "$out/lib/python${pythonEnv.pythonVersion}/site-packages/" + --prefix PATH : "${texliveDist}/bin" + --prefix PATH : "${haskellPackages.pandoc-citeproc}/bin" + --prefix XDG_DATA_DIRS : "${shared-mime-info}/share" + ) + ''; + + meta = with stdenv.lib; { + homepage = "https://gitlab.gnome.org/somas/apostrophe"; + description = "A distraction free Markdown editor for GNU/Linux"; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = [ maintainers.sternenseemann ]; + }; +} diff --git a/pkgs/applications/editors/aseprite/allegro-glibc-2.30.patch b/pkgs/applications/editors/aseprite/allegro-glibc-2.30.patch new file mode 100644 index 00000000000..94c70da276c --- /dev/null +++ b/pkgs/applications/editors/aseprite/allegro-glibc-2.30.patch @@ -0,0 +1,8 @@ +diff --git a/src/she/CMakeLists.txt b/src/she/CMakeLists.txt +index 4909ff1..02fa145 100644 +--- a/src/she/CMakeLists.txt ++++ b/src/she/CMakeLists.txt +@@ -23,2 +23,3 @@ if(USE_ALLEG4_BACKEND) + add_definitions(-DUSE_MOUSE_POLLER) ++ add_definitions(-DALLEGRO_NO_FIX_ALIASES) + endif() diff --git a/pkgs/applications/editors/aseprite/default.nix b/pkgs/applications/editors/aseprite/default.nix index 170fde7b9ca..4ba8932fec2 100644 --- a/pkgs/applications/editors/aseprite/default.nix +++ b/pkgs/applications/editors/aseprite/default.nix @@ -6,12 +6,16 @@ , cmark }: +# Unfree version is not redistributable: +# https://dev.aseprite.org/2016/09/01/new-source-code-license/ +# Consider supporting the developer: https://aseprite.org/#buy + let skia = callPackage ./skia.nix {}; in stdenv.mkDerivation rec { pname = "aseprite"; - version = if unfree then "1.2.11" else "1.1.7"; + version = if unfree then "1.2.16.3" else "1.1.7"; src = fetchFromGitHub { owner = "aseprite"; @@ -19,7 +23,7 @@ stdenv.mkDerivation rec { rev = "v${version}"; fetchSubmodules = true; sha256 = if unfree - then "1illr51jpg5g6nx29rav9dllyy5lzyyn7lj2fhrnpz1ysqgaq5p8" + then "16yn7y9xdc5jd50cq7bmsm320gv23pp71lr8hg2nmynzc8ibyda8" else "0gd49lns2bpzbkwax5jf9x1xmg1j8ij997kcxr2596cwiswnw4di"; }; @@ -36,7 +40,9 @@ stdenv.mkDerivation rec { skia libGL ]; - patches = lib.optionals unfree [ + patches = if !unfree then [ + ./allegro-glibc-2.30.patch + ] else [ (fetchpatch { url = "https://github.com/lfont/aseprite/commit/f1ebc47012d3fed52306ed5922787b4b98cc0a7b.patch"; sha256 = "03xg7x6b9iv7z18vzlqxhcfphmx4v3qhs9f5rgf38ppyklca5jyw"; @@ -92,8 +98,10 @@ stdenv.mkDerivation rec { enableParallelBuilding = true; + passthru = { inherit skia; }; + meta = with lib; { - homepage = https://www.aseprite.org/; + homepage = "https://www.aseprite.org/"; description = "Animated sprite editor & pixel art tool"; license = if unfree then licenses.unfree else licenses.gpl2; longDescription = diff --git a/pkgs/applications/editors/aseprite/skia.nix b/pkgs/applications/editors/aseprite/skia.nix index 8bf2adf484e..141d51bed0f 100644 --- a/pkgs/applications/editors/aseprite/skia.nix +++ b/pkgs/applications/editors/aseprite/skia.nix @@ -1,11 +1,19 @@ { stdenv, lib, fetchFromGitHub, fetchgit, python2, gn, ninja -, fontconfig, expat, icu58, libjpeg, libpng, libwebp, zlib +, fontconfig, expat, icu58, libglvnd, libjpeg, libpng, libwebp, zlib , mesa, libX11 }: let # skia-deps.nix is generated by: ./skia-make-deps.sh 'angle2|dng_sdk|piex|sfntly' depSrcs = import ./skia-deps.nix { inherit fetchgit; }; + gnOld = gn.overrideAttrs (oldAttrs: rec { + version = "20190403"; + src = fetchgit { + url = "https://gn.googlesource.com/gn"; + rev = "64b846c96daeb3eaf08e26d8a84d8451c6cb712b"; + sha256 = "1v2kzsshhxn0ck6gd5w16gi2m3higwd9vkyylmsczxfxnw8skgpy"; + }; + }); in stdenv.mkDerivation { name = "skia-aseprite-m71"; @@ -14,14 +22,14 @@ stdenv.mkDerivation { owner = "aseprite"; repo = "skia"; # latest commit from aseprite-m71 branch - rev = "89e4ca4352d05adc892f5983b108433f29b2c0c2"; + rev = "89e4ca4352d05adc892f5983b108433f29b2c0c2"; # TODO: Remove the gnOld override sha256 = "0n3vrkswvi6rib9zv2pzi18h3j5wm7flmgkgaikcm6q7iw4l2c7x"; }; - nativeBuildInputs = [ python2 gn ninja ]; + nativeBuildInputs = [ python2 gnOld ninja ]; buildInputs = [ - fontconfig expat icu58 libjpeg libpng libwebp zlib + fontconfig expat icu58 libglvnd libjpeg libpng libwebp zlib mesa libX11 ]; diff --git a/pkgs/applications/editors/atom/default.nix b/pkgs/applications/editors/atom/default.nix index 26deee3b859..fbe08dbfe7b 100644 --- a/pkgs/applications/editors/atom/default.nix +++ b/pkgs/applications/editors/atom/default.nix @@ -3,14 +3,14 @@ let versions = { atom = { - version = "1.36.1"; - sha256 = "1m7q2r3zx463k7kpqb364piqrr69wrhs033ibzxdx9y7r4204qp4"; + version = "1.42.0"; + sha256 = "1ira528nwxi30jfwyivlac3wkkqb9d2z4jhxwq5m7mnpm5yli6jy"; }; atom-beta = { - version = "1.37.0"; + version = "1.43.0"; beta = 0; - sha256 = "0aq8r5vfgq7r31qajjgcg4n5a57a2m8fvq6fzy9vq5gawkvmaxxx"; + sha256 = "06if3w5hx7njmyal0012zawn8f5af1z4bjcbzj2c0gd15nlsgm95"; }; }; @@ -74,7 +74,7 @@ let meta = with stdenv.lib; { description = "A hackable text editor for the 21st Century"; - homepage = https://atom.io/; + homepage = "https://atom.io/"; license = licenses.mit; maintainers = with maintainers; [ offline nequissimus ysndr ]; platforms = platforms.x86_64; diff --git a/pkgs/applications/editors/atom/env.nix b/pkgs/applications/editors/atom/env.nix index 46dd4a22864..cf783053679 100644 --- a/pkgs/applications/editors/atom/env.nix +++ b/pkgs/applications/editors/atom/env.nix @@ -1,6 +1,6 @@ { stdenv, lib, zlib, glib, alsaLib, dbus, gtk3, atk, pango, freetype, fontconfig , libgnome-keyring3, gdk-pixbuf, cairo, cups, expat, libgpgerror, nspr -, gconf, nss, xorg, libcap, systemd, libnotify, libsecret +, gconf, nss, xorg, libcap, systemd, libnotify, libsecret, libuuid, at-spi2-atk }: let @@ -10,7 +10,7 @@ let xorg.libXrender xorg.libX11 xorg.libXext xorg.libXdamage xorg.libXtst xorg.libXcomposite xorg.libXi xorg.libXfixes xorg.libXrandr xorg.libXcursor xorg.libxkbfile xorg.libXScrnSaver libcap systemd libnotify - xorg.libxcb libsecret + xorg.libxcb libsecret libuuid at-spi2-atk ]; libPathNative = lib.makeLibraryPath packages; diff --git a/pkgs/applications/editors/bless/default.nix b/pkgs/applications/editors/bless/default.nix new file mode 100644 index 00000000000..b3c3caae4e4 --- /dev/null +++ b/pkgs/applications/editors/bless/default.nix @@ -0,0 +1,80 @@ +{ stdenv +, fetchFromGitHub +, autoreconfHook +, pkgconfig +, mono +, gtk-sharp-2_0 +, gettext +, makeWrapper +, glib +, gtk2-x11 +, gnome2 +}: + +stdenv.mkDerivation rec { + pname = "bless"; + version = "0.6.2"; + + src = fetchFromGitHub { + owner = "afrantzis"; + repo = pname; + rev = "v${version}"; + sha256 = "04ra2mcx3pkhzbhcz0zwfmbpqj6cwisrypi6xbc2d6pxd4hdafn1"; + }; + + buildInputs = [ + gtk-sharp-2_0 + mono + # runtime only deps + glib + gtk2-x11 + gnome2.libglade + ]; + + nativeBuildInputs = [ + pkgconfig + autoreconfHook + gettext + makeWrapper + ]; + + configureFlags = [ + # scrollkeeper is a gnome2 package, so it must be old and we shouldn't really support it + # NOTE: that sadly doesn't turn off the compilation of the manual with scrollkeeper, so we have to fake the binaries below + "--without-scrollkeeper" + ]; + + autoreconfPhase = '' + mkdir _bin + + # this fakes the scrollkeeper commands, to keep the build happy + for f in scrollkeeper-preinstall scrollkeeper-update; do + echo "true" > ./_bin/$f + chmod +x ./_bin/$f + done + + export PATH="$PWD/_bin:$PATH" + + # and it also wants to install that file + touch ./doc/user/bless-manual.omf + + # patch mono path + sed "s|^mono|${mono}/bin/mono|g" -i src/bless-script.in + + ./autogen.sh + ''; + + preFixup = '' + MPATH="${gtk-sharp-2_0}/lib/mono/gtk-sharp-2.0:${glib.out}/lib:${gtk2-x11}/lib:${gnome2.libglade}/lib:${gtk-sharp-2_0}/lib" + wrapProgram $out/bin/bless --prefix MONO_PATH : "$MPATH" --prefix LD_LIBRARY_PATH : "$MPATH" + ''; + + meta = with stdenv.lib; { + homepage = "https://github.com/afrantzis/bless"; + description = "Gtk# Hex Editor"; + maintainers = [ maintainers.mkg20001 ]; + license = licenses.gpl2; + platforms = platforms.linux; + badPlatforms = [ "aarch64-linux" ]; + }; +} diff --git a/pkgs/applications/editors/bluefish/default.nix b/pkgs/applications/editors/bluefish/default.nix index f78f7fbf914..ff1daef8b80 100644 --- a/pkgs/applications/editors/bluefish/default.nix +++ b/pkgs/applications/editors/bluefish/default.nix @@ -16,7 +16,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "A powerful editor targeted towards programmers and webdevelopers"; - homepage = http://bluefish.openoffice.nl/; + homepage = "http://bluefish.openoffice.nl/"; license = licenses.gpl3Plus; maintainers = [maintainers.vbgl]; platforms = platforms.all; diff --git a/pkgs/applications/editors/brackets/default.nix b/pkgs/applications/editors/brackets/default.nix index 439b721632d..3e01bcdb0f9 100644 --- a/pkgs/applications/editors/brackets/default.nix +++ b/pkgs/applications/editors/brackets/default.nix @@ -50,7 +50,7 @@ stdenv.mkDerivation rec { meta = { description = "An open source code editor for the web, written in JavaScript, HTML and CSS"; - homepage = http://brackets.io/; + homepage = "http://brackets.io/"; license = licenses.mit; maintainers = [ maintainers.matejc ]; platforms = [ "x86_64-linux" ]; diff --git a/pkgs/applications/editors/bvi/default.nix b/pkgs/applications/editors/bvi/default.nix index 2e79b80d610..8a61e0252bc 100644 --- a/pkgs/applications/editors/bvi/default.nix +++ b/pkgs/applications/editors/bvi/default.nix @@ -13,7 +13,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Hex editor with vim style keybindings"; - homepage = http://bvi.sourceforge.net/download.html; + homepage = "http://bvi.sourceforge.net/download.html"; license = licenses.gpl2; maintainers = with maintainers; [ pSub ]; platforms = with platforms; linux ++ darwin; diff --git a/pkgs/applications/editors/bviplus/default.nix b/pkgs/applications/editors/bviplus/default.nix index 2c6b153370e..2cf094c091a 100644 --- a/pkgs/applications/editors/bviplus/default.nix +++ b/pkgs/applications/editors/bviplus/default.nix @@ -2,24 +2,24 @@ stdenv.mkDerivation rec { pname = "bviplus"; - version = "0.9.4"; + version = "1.0"; src = fetchurl { url = "mirror://sourceforge/project/bviplus/bviplus/${version}/bviplus-${version}.tgz"; - sha256 = "10x6fbn8v6i0y0m40ja30pwpyqksnn8k2vqd290vxxlvlhzah4zb"; + sha256 = "08q2fdyiirabbsp5qpn3v8jxp4gd85l776w6gqvrbjwqa29a8arg"; }; buildInputs = [ ncurses ]; - makeFlags = "PREFIX=$(out)"; + makeFlags = [ "PREFIX=$(out)" ]; buildFlags = [ "CFLAGS=-fgnu89-inline" ]; meta = with stdenv.lib; { description = "Ncurses based hex editor with a vim-like interface"; - homepage = http://bviplus.sourceforge.net; + homepage = "http://bviplus.sourceforge.net"; license = licenses.gpl3; platforms = platforms.linux; maintainers = with maintainers; [ cstrahan ]; diff --git a/pkgs/applications/editors/codeblocks/default.nix b/pkgs/applications/editors/codeblocks/default.nix index 72642cfbe63..4e2ac8a50f1 100644 --- a/pkgs/applications/editors/codeblocks/default.nix +++ b/pkgs/applications/editors/codeblocks/default.nix @@ -22,7 +22,7 @@ stdenv.mkDerivation rec { preConfigure = "substituteInPlace ./configure --replace /usr/bin/file ${file}/bin/file"; postConfigure = optionalString stdenv.isLinux "substituteInPlace libtool --replace ldconfig ${stdenv.cc.libc.bin}/bin/ldconfig"; configureFlags = [ "--enable-pch=no" ] - ++ optional contribPlugins [ "--with-contrib-plugins" "--with-boost-libdir=${boost}/lib" ]; + ++ optionals contribPlugins [ "--with-contrib-plugins" "--with-boost-libdir=${boost}/lib" ]; meta = { maintainers = [ maintainers.linquize ]; @@ -34,7 +34,7 @@ stdenv.mkDerivation rec { It is designed to be very extensible and fully configurable. Finally, an IDE with all the features you need, having a consistent look, feel and operation across platforms. ''; - homepage = http://www.codeblocks.org; + homepage = "http://www.codeblocks.org"; license = licenses.gpl3; }; } diff --git a/pkgs/applications/editors/dhex/default.nix b/pkgs/applications/editors/dhex/default.nix index efb3a2f9ffa..0a635b7ba82 100644 --- a/pkgs/applications/editors/dhex/default.nix +++ b/pkgs/applications/editors/dhex/default.nix @@ -25,7 +25,7 @@ stdenv.mkDerivation rec { meta = { description = "A themeable hex editor with diff mode"; - homepage = http://www.dettus.net/dhex/; + homepage = "http://www.dettus.net/dhex/"; license = stdenv.lib.licenses.gpl2; maintainers = with stdenv.lib.maintainers; [qknight]; platforms = with stdenv.lib.platforms; linux; diff --git a/pkgs/applications/editors/dit/default.nix b/pkgs/applications/editors/dit/default.nix index 2f83b0b8d99..f973e67599c 100644 --- a/pkgs/applications/editors/dit/default.nix +++ b/pkgs/applications/editors/dit/default.nix @@ -2,11 +2,11 @@ stdenv.mkDerivation rec { pname = "dit"; - version = "0.5"; + version = "0.6"; src = fetchurl { url = "https://hisham.hm/dit/releases/${version}/${pname}-${version}.tar.gz"; - sha256 = "05vhr1gl3bb5fg49v84xhmjaqdjw6djampvylw10ydvbpnpvjvjc"; + sha256 = "0ryvm54xxkg2gcgz4r8zdxrl6j2h8mgg9nfqmdmdr31qkcj8wjsq"; }; buildInputs = [ ncurses lua ] @@ -20,7 +20,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "A console text editor for Unix that you already know how to use"; - homepage = https://hisham.hm/dit/; + homepage = "https://hisham.hm/dit/"; license = licenses.gpl2; platforms = with platforms; linux; maintainers = with maintainers; [ davidak ]; diff --git a/pkgs/applications/editors/eclipse/build-eclipse.nix b/pkgs/applications/editors/eclipse/build-eclipse.nix index 6ae9eb078e2..8b6a0c164e9 100644 --- a/pkgs/applications/editors/eclipse/build-eclipse.nix +++ b/pkgs/applications/editors/eclipse/build-eclipse.nix @@ -1,5 +1,5 @@ { stdenv, makeDesktopItem, freetype, fontconfig, libX11, libXrender -, zlib, jdk, glib, gtk3, libXtst, gsettings-desktop-schemas, webkitgtk +, zlib, jdk, glib, gtk, libXtst, gsettings-desktop-schemas, webkitgtk , makeWrapper, ... }: { name, src ? builtins.getAttr stdenv.hostPlatform.system sources, sources ? null, description }: @@ -18,7 +18,7 @@ stdenv.mkDerivation rec { }; buildInputs = [ - fontconfig freetype glib gsettings-desktop-schemas gtk3 jdk libX11 + fontconfig freetype glib gsettings-desktop-schemas gtk jdk libX11 libXrender libXtst makeWrapper zlib ] ++ stdenv.lib.optional (webkitgtk != null) webkitgtk; @@ -41,7 +41,7 @@ stdenv.mkDerivation rec { makeWrapper $out/eclipse/eclipse $out/bin/eclipse \ --prefix PATH : ${jdk}/bin \ - --prefix LD_LIBRARY_PATH : ${stdenv.lib.makeLibraryPath ([ glib gtk3 libXtst ] ++ stdenv.lib.optional (webkitgtk != null) webkitgtk)} \ + --prefix LD_LIBRARY_PATH : ${stdenv.lib.makeLibraryPath ([ glib gtk libXtst ] ++ stdenv.lib.optional (webkitgtk != null) webkitgtk)} \ --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH" \ --add-flags "-configuration \$HOME/.eclipse/''${productId}_$productVersion/configuration" @@ -53,7 +53,7 @@ stdenv.mkDerivation rec { ''; # */ meta = { - homepage = http://www.eclipse.org/; + homepage = "http://www.eclipse.org/"; inherit description; platforms = [ "x86_64-linux" ]; }; diff --git a/pkgs/applications/editors/eclipse/default.nix b/pkgs/applications/editors/eclipse/default.nix index 13db2d13567..66bdfb15c69 100644 --- a/pkgs/applications/editors/eclipse/default.nix +++ b/pkgs/applications/editors/eclipse/default.nix @@ -1,6 +1,6 @@ { stdenv, fetchurl, makeDesktopItem, makeWrapper , freetype, fontconfig, libX11, libXrender, zlib -, glib, gtk3, libXtst, jdk, gsettings-desktop-schemas +, glib, gtk3, gtk2, libXtst, jdk, jdk8, gsettings-desktop-schemas , webkitgtk ? null # for internal web browser , buildEnv, runCommand , callPackage @@ -13,16 +13,16 @@ assert stdenv ? glibc; let platform_major = "4"; - platform_minor = "13"; - year = "2019"; - month = "09"; - timestamp = "201909161045"; - + platform_minor = "15"; + year = "2020"; + month = "03"; + timestamp = "${year}${month}050155"; + gtk = gtk3; in rec { - buildEclipse = import ./build-eclipse.nix { + buildEclipse = callPackage ./build-eclipse.nix { inherit stdenv makeDesktopItem freetype fontconfig libX11 libXrender zlib - jdk glib gtk3 libXtst gsettings-desktop-schemas webkitgtk + jdk glib gtk libXtst gsettings-desktop-schemas webkitgtk makeWrapper; }; @@ -30,11 +30,11 @@ in rec { eclipse-cpp = buildEclipse { name = "eclipse-cpp-${platform_major}.${platform_minor}"; - description = "Eclipse IDE for C/C++ Developers, Oxygen release"; + description = "Eclipse IDE for C/C++ Developers"; src = fetchurl { - url = "https://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/technology/epp/downloads/release/${year}-${month}/R/eclipse-cpp-${year}-${month}-R-linux-gtk-x86_64.tar.gz"; - sha512 = "0s9wvxd1bahlcdw7l6cyfi59p78j6gym3a3mn1z6dm6swxgyb2wjjl7hx8bkg0zs8x31bwllpdq22y2vcm6j57h40v53l3xkhy73m8v"; + url = "https://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/technology/epp/downloads/release/${year}-${month}/R/eclipse-cpp-${year}-${month}-R-incubation-linux-gtk-x86_64.tar.gz"; + sha512 = "2wy4a3p347fajr9zsfz1zlvz6jpy3vficdry27m5fs0azfmxmy2cfns5hh18sin4xqq3jvqppfqxh41rzcpcmiq12zhc6cz42brqgxw"; }; }; @@ -46,7 +46,7 @@ in rec { src = fetchurl { url = "https://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/technology/epp/downloads/release/${year}-${month}/R/eclipse-modeling-${year}-${month}-R-linux-gtk-x86_64.tar.gz"; - sha512 = "09nc7ipv67h0gr7lkxsbxrgj9gn48348asn03ylcvflyrcxghqs8n11a75rwvdj98igdzpw922saicx5lqq5g2flfqiga97lwwhfiz5"; + sha512 = "0qccsclay9000sqrymm8hkg70a4jcvd70vymw1kkxsklcs7dnrhch55an98gbzf9r0jgd1ap62a4hyxlnm6hdqqniwcgdza0i4nwwgj"; }; }; @@ -58,25 +58,20 @@ in rec { src = fetchurl { url = "https://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/eclipse/downloads/drops${platform_major}/R-${platform_major}.${platform_minor}-${timestamp}/eclipse-platform-${platform_major}.${platform_minor}-linux-gtk-x86_64.tar.gz"; - sha512 = "2c40wwrc2ip32n0m5cs8ds0g7cs7018acw8gjkd23msa4pr9x9511c3dj6rbnn1hwzf9yjq6vnjmib5qarxd3vly76jwxhf867l1f7v"; + sha512 = "01rv5x7qqm0a2p30828z2snms3nb2kjx9si63sr5rdkdgr3vbh6xq8n8fn757dqazmpz9zskmwxxmbxnwycfllhgb8msb77pcy3fpg7"; }; }; ### Eclipse Scala SDK - eclipse-scala-sdk = buildEclipse { - name = "eclipse-scala-sdk-4.4.1"; - description = "Eclipse IDE for Scala Developers"; - src = - if stdenv.hostPlatform.system == "x86_64-linux" then - fetchurl { # tested - url = https://downloads.typesafe.com/scalaide-pack/4.4.1-vfinal-luna-211-20160504/scala-SDK-4.4.1-vfinal-2.11-linux.gtk.x86_64.tar.gz; - sha256 = "4c2d1ac68384e12a11a851cf0fc7757aea087eba69329b21d539382a65340d27"; - } - else - fetchurl { # untested - url = https://downloads.typesafe.com/scalaide-pack/4.4.1-vfinal-luna-211-20160504/scala-SDK-4.4.1-vfinal-2.11-linux.gtk.x86.tar.gz; - sha256 = "35383cb09567187e14a30c15de9fd9aa0eef99e4bbb342396ce3acd11fb5cbac"; + eclipse-scala-sdk = + buildEclipse.override { jdk = jdk8; gtk = gtk2; } { + name = "eclipse-scala-sdk-4.7.0"; + description = "Eclipse IDE for Scala Developers"; + src = + fetchurl { + url = "https://downloads.typesafe.com/scalaide-pack/4.7.0-vfinal-oxygen-212-20170929/scala-SDK-4.7.0-vfinal-2.12-linux.gtk.x86_64.tar.gz"; + sha256 = "1n5w2a7mh9ajv6fxcas1gpgwb04pdxbr9v5dzr67gsz5bhahq4ya"; }; }; @@ -88,7 +83,7 @@ in rec { src = fetchurl { url = "https://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/eclipse/downloads/drops${platform_major}/R-${platform_major}.${platform_minor}-${timestamp}/eclipse-SDK-${platform_major}.${platform_minor}-linux-gtk-x86_64.tar.gz"; - sha512 = "2vm646d1crzzzysll3p5pjfljfjzxx4qd37dqcp6xjm91zg8iskli688h0lgla0rmbwz5kj509jp22m4rxkp3cbgd006dd0jr3icdls"; + sha512 = "33ra8qslwz73240xzjvr751lpl94drlcf425a7kxngq1qla2cda7gxr71bxlr9fm2hrqq0h097ihmg0ix9hv2dmwnc76gp4hwwrlk41"; }; }; @@ -100,7 +95,7 @@ in rec { src = fetchurl { url = "https://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/technology/epp/downloads/release/${year}-${month}/R/eclipse-java-${year}-${month}-R-linux-gtk-x86_64.tar.gz"; - sha512 = "3zyxqd8iwrfgjjg91dfi4bda61rd2717hy53swmbygi48zaaam70swx997yp5qzxwjp3macdslfk6sqhq2qlcdwcdl6dmkry018jh7b"; + sha512 = "0ffa1q19z31j8i552mp9zg4v0p4iv002cvlzh49ia8hi0hgk75pbkp6vxlr75jz0as03n71f0ww8xbflji31qgwfmy6rs1rzqihfff9"; }; }; diff --git a/pkgs/applications/editors/eclipse/plugins.nix b/pkgs/applications/editors/eclipse/plugins.nix index b2fdeafd37c..fab7317868a 100644 --- a/pkgs/applications/editors/eclipse/plugins.nix +++ b/pkgs/applications/editors/eclipse/plugins.nix @@ -106,7 +106,7 @@ rec { }; meta = with stdenv.lib; { - homepage = https://github.com/tobiasmelcher/EclipseAceJump; + homepage = "https://github.com/tobiasmelcher/EclipseAceJump"; description = "Provides fast jumps to text based on initial letter"; license = licenses.mit; platforms = platforms.all; @@ -153,7 +153,7 @@ rec { meta = with stdenv.lib; { description = "A powerful parser generator for processing structured text or binary files"; - homepage = https://www.antlr.org/; + homepage = "https://www.antlr.org/"; license = licenses.bsd3; platforms = platforms.all; maintainers = [ maintainers.rycee ]; @@ -176,7 +176,7 @@ rec { meta = with stdenv.lib; { description = "A powerful parser generator for processing structured text or binary files"; - homepage = https://www.antlr.org/; + homepage = "https://www.antlr.org/"; license = licenses.bsd3; platforms = platforms.all; maintainers = [ maintainers.rycee ]; @@ -198,7 +198,7 @@ rec { }; meta = with stdenv.lib; { - homepage = http://andrei.gmxhome.de/anyedit/; + homepage = "http://andrei.gmxhome.de/anyedit/"; description = "Adds new tools to the context menu of text-based editors"; license = licenses.epl10; platforms = platforms.all; @@ -221,7 +221,7 @@ rec { }; meta = with stdenv.lib; { - homepage = https://github.com/cypher256/eclipse-encoding-plugin; + homepage = "https://github.com/cypher256/eclipse-encoding-plugin"; description = "Show file encoding and line ending for the active editor in the eclipse status bar"; license = licenses.epl10; platforms = platforms.all; @@ -244,7 +244,7 @@ rec { }; meta = with stdenv.lib; { - homepage = http://andrei.gmxhome.de/bytecode/; + homepage = "http://andrei.gmxhome.de/bytecode/"; description = "Shows disassembled bytecode of current java editor or class file"; license = licenses.bsd2; platforms = platforms.all; @@ -254,16 +254,16 @@ rec { cdt = buildEclipseUpdateSite rec { name = "cdt-${version}"; - version = "9.9.0"; + version = "9.11.0"; src = fetchzip { stripRoot = false; - url = "https://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/tools/cdt/releases/9.9/${name}/${name}.zip"; - sha256 = "1vgx7ggilfwmx0bjrhk7mwlwg1c8lb141ilj3vzwxivlffihy054"; + url = "https://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/tools/cdt/releases/9.11/${name}/${name}.zip"; + sha256 = "1730w6rbv649nzfalfd10p2ph0z9rbrrcflga0n1dpmg181xh9lk"; }; meta = with stdenv.lib; { - homepage = https://eclipse.org/cdt/; + homepage = "https://eclipse.org/cdt/"; description = "C/C++ development tooling"; license = licenses.epl10; platforms = platforms.all; @@ -282,7 +282,7 @@ rec { }; meta = with stdenv.lib; { - homepage = https://eclipse-cs.sourceforge.net/; + homepage = "https://eclipse-cs.sourceforge.net/"; description = "Checkstyle integration into the Eclipse IDE"; license = licenses.lgpl21; platforms = platforms.all; @@ -306,7 +306,7 @@ rec { }; meta = with stdenv.lib; { - homepage = http://eclipsecolorthemes.org/; + homepage = "http://eclipsecolorthemes.org/"; description = "Plugin to switch color themes conveniently and without side effects"; license = licenses.epl10; platforms = platforms.all; @@ -339,7 +339,7 @@ rec { propagatedBuildInputs = [ zest ]; meta = with stdenv.lib; { - homepage = http://www2.cs.tum.edu/projects/cup/eclipse.php; + homepage = "http://www2.cs.tum.edu/projects/cup/eclipse.php"; description = "IDE for developing CUP based parsers"; platforms = platforms.all; maintainers = [ maintainers.romildo ]; @@ -367,7 +367,7 @@ rec { }; meta = with stdenv.lib; { - homepage = https://www.drools.org/; + homepage = "https://www.drools.org/"; description = "Drools is a Business Rules Management System (BRMS) solution"; license = licenses.asl20; }; @@ -384,7 +384,7 @@ rec { }; meta = with stdenv.lib; { - homepage = https://www.eclemma.org/; + homepage = "https://www.eclemma.org/"; description = "EclEmma is a free Java code coverage tool for Eclipse"; license = licenses.epl10; platforms = platforms.all; @@ -407,7 +407,7 @@ rec { }; meta = with stdenv.lib; { - homepage = http://findbugs.sourceforge.net/; + homepage = "http://findbugs.sourceforge.net/"; description = "Plugin that uses static analysis to look for bugs in Java code"; license = licenses.epl10; platforms = platforms.all; @@ -426,7 +426,7 @@ rec { }; meta = with stdenv.lib; { - homepage = http://gnuarmeclipse.livius.net/; + homepage = "http://gnuarmeclipse.livius.net/"; description = "GNU ARM Eclipse Plug-ins"; license = licenses.epl10; platforms = platforms.all; @@ -465,7 +465,7 @@ rec { meta = with stdenv.lib; { description = "Adds support for JSON files to Eclipse"; - homepage = https://github.com/boothen/Json-Eclipse-Plugin; + homepage = "https://github.com/boothen/Json-Eclipse-Plugin"; license = licenses.epl10; platforms = platforms.all; maintainers = [ maintainers.rycee ]; @@ -474,16 +474,16 @@ rec { jdt = buildEclipseUpdateSite rec { name = "jdt-${version}"; - version = "4.13"; + version = "4.15"; src = fetchzip { stripRoot = false; - url = https://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/eclipse/downloads/drops4/R-4.13-201909161045/org.eclipse.jdt-4.13.zip; - sha256 = "0sfpxph0cszcx1cihzzjn60qid8sxgl2xyr9x46fld4ian5a7vbr"; + url = "https://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/eclipse/downloads/drops4/R-${version}-202003050155/org.eclipse.jdt-${version}.zip"; + sha256 = "1dm4qgfb6rm7w0dk8br071c7wy0ybp7zrwvr3i02c2bxzy2psz7q"; }; meta = with stdenv.lib; { - homepage = https://www.eclipse.org/jdt/; + homepage = "https://www.eclipse.org/jdt/"; description = "Eclipse Java development tools"; license = licenses.epl10; platforms = platforms.all; @@ -506,7 +506,7 @@ rec { }; meta = with stdenv.lib; { - homepage = https://github.com/angelozerr/jdt-codemining; + homepage = "https://github.com/angelozerr/jdt-codemining"; description = "Provides JDT Java CodeMining"; license = licenses.epl10; platforms = platforms.all; @@ -532,7 +532,7 @@ rec { }; meta = with stdenv.lib; { - homepage = https://github.com/RustDT; + homepage = "https://github.com/RustDT"; description = "Rust development tooling"; license = licenses.epl10; platforms = platforms.all; @@ -549,7 +549,7 @@ rec { }; meta = with stdenv.lib; { - homepage = http://scala-ide.org/; + homepage = "http://scala-ide.org/"; description = "The Scala IDE for Eclipse"; license = licenses.bsd3; platforms = platforms.all; @@ -568,7 +568,7 @@ rec { }; meta = with stdenv.lib; { - homepage = https://spotbugs.github.io/; + homepage = "https://spotbugs.github.io/"; description = "Plugin that uses static analysis to look for bugs in Java code"; license = licenses.lgpl21; platforms = platforms.all; @@ -591,7 +591,7 @@ rec { }; meta = with stdenv.lib; { - homepage = https://testng.org/doc/; + homepage = "https://testng.org/doc/"; description = "Eclipse plugin for the TestNG testing framework"; license = licenses.asl20; platforms = platforms.all; @@ -636,7 +636,7 @@ rec { }; meta = with stdenv.lib; { - homepage = https://github.com/oyse/yedit; + homepage = "https://github.com/oyse/yedit"; description = "A YAML editor plugin for Eclipse"; license = licenses.epl10; platforms = platforms.all; @@ -654,7 +654,7 @@ rec { }; meta = with stdenv.lib; { - homepage = https://www.eclipse.org/gef/zest/; + homepage = "https://www.eclipse.org/gef/zest/"; description = "The Eclipse Visualization Toolkit"; platforms = platforms.all; maintainers = [ maintainers.romildo ]; diff --git a/pkgs/applications/editors/ed/default.nix b/pkgs/applications/editors/ed/default.nix index 90a7eeffb04..37d055e2685 100644 --- a/pkgs/applications/editors/ed/default.nix +++ b/pkgs/applications/editors/ed/default.nix @@ -3,11 +3,11 @@ stdenv.mkDerivation (rec { name = "ed-${version}"; - version = "1.15"; + version = "1.16"; src = fetchurl { url = "mirror://gnu/ed/${name}.tar.lz"; - sha256 = "0x6ivy5k0d7dy5z9g8q8nipr89m4qbk2ink2898qq43smp08ji5d"; + sha256 = "0b4b1lwizvng9bvpcjnmpj2i80xz9xw2w8nfff27b2h4mca7mh6g"; }; nativeBuildInputs = [ lzip ]; @@ -30,7 +30,7 @@ stdenv.mkDerivation (rec { license = stdenv.lib.licenses.gpl3Plus; - homepage = https://www.gnu.org/software/ed/; + homepage = "https://www.gnu.org/software/ed/"; maintainers = [ ]; platforms = stdenv.lib.platforms.unix; diff --git a/pkgs/applications/editors/edbrowse/default.nix b/pkgs/applications/editors/edbrowse/default.nix index 1161fc8256c..c43640b6524 100644 --- a/pkgs/applications/editors/edbrowse/default.nix +++ b/pkgs/applications/editors/edbrowse/default.nix @@ -13,8 +13,8 @@ stdenv.mkDerivation rec { done ''; - makeFlags = [ - "-C src" + makeFlags = [ + "-C" "src" "prefix=${placeholder "out"}" ]; diff --git a/pkgs/applications/editors/edit/default.nix b/pkgs/applications/editors/edit/default.nix index 27c13c0cb39..05220600261 100644 --- a/pkgs/applications/editors/edit/default.nix +++ b/pkgs/applications/editors/edit/default.nix @@ -5,7 +5,7 @@ stdenv.mkDerivation { version = "20160425"; src = fetchgit { - url = git://c9x.me/ed.git; + url = "git://c9x.me/ed.git"; rev = "323d49b68c5e804ed3b8cada0e2274f1589b3484"; sha256 = "0wv8i3ii7cd9bqhjpahwp2g5fcmyk365nc7ncmvl79cxbz3f7y8v"; }; @@ -31,7 +31,7 @@ stdenv.mkDerivation { meta = with stdenv.lib; { description = "A relaxing mix of Vi and ACME"; - homepage = http://c9x.me/edit; + homepage = "http://c9x.me/edit"; license = licenses.publicDomain; maintainers = [ maintainers.vrthra ]; platforms = platforms.linux; diff --git a/pkgs/applications/editors/elvis/default.nix b/pkgs/applications/editors/elvis/default.nix index 4b7e4c8a3ca..3a6c8c97b22 100644 --- a/pkgs/applications/editors/elvis/default.nix +++ b/pkgs/applications/editors/elvis/default.nix @@ -39,7 +39,7 @@ stdenv.mkDerivation { configureFlags = [ "--ioctl=termios" ]; meta = { - homepage = http://elvis.vi-editor.org/; + homepage = "http://elvis.vi-editor.org/"; description = "A vi clone for Unix and other operating systems"; license = stdenv.lib.licenses.free; }; diff --git a/pkgs/applications/editors/emacs-modes/cedet/default.nix b/pkgs/applications/editors/emacs-modes/cedet/default.nix index 5fbe095c4f3..45f20fccad9 100644 --- a/pkgs/applications/editors/emacs-modes/cedet/default.nix +++ b/pkgs/applications/editors/emacs-modes/cedet/default.nix @@ -43,7 +43,7 @@ stdenv.mkDerivation rec { license = stdenv.lib.licenses.gpl2Plus; - homepage = http://cedet.sourceforge.net/; + homepage = "http://cedet.sourceforge.net/"; # Fails with `semantic-idle.el:42:1:Error: Invalid function: class-p` broken = true; diff --git a/pkgs/applications/editors/emacs-modes/color-theme-solarized/default.nix b/pkgs/applications/editors/emacs-modes/color-theme-solarized/default.nix index 33f2ad79ea0..ba54e5f4341 100644 --- a/pkgs/applications/editors/emacs-modes/color-theme-solarized/default.nix +++ b/pkgs/applications/editors/emacs-modes/color-theme-solarized/default.nix @@ -25,7 +25,7 @@ stdenv.mkDerivation { meta = with stdenv.lib; { description = "Precision colors for machines and people"; - homepage = http://ethanschoonover.com/solarized; + homepage = "http://ethanschoonover.com/solarized"; maintainers = [ maintainers.samuelrivas ]; license = licenses.mit; platforms = platforms.all; diff --git a/pkgs/applications/editors/emacs-modes/elpa-generated.nix b/pkgs/applications/editors/emacs-modes/elpa-generated.nix index a8d9a38729f..9ae07c1c900 100644 --- a/pkgs/applications/editors/emacs-modes/elpa-generated.nix +++ b/pkgs/applications/editors/emacs-modes/elpa-generated.nix @@ -39,10 +39,10 @@ elpaBuild { pname = "ada-mode"; ename = "ada-mode"; - version = "6.2.1"; + version = "7.0.1"; src = fetchurl { - url = "https://elpa.gnu.org/packages/ada-mode-6.2.1.tar"; - sha256 = "0lg2y28qs8ls70d43ikhy5zcwadh5ddfw4k59p7sqb79w0y3lbnq"; + url = "https://elpa.gnu.org/packages/ada-mode-7.0.1.tar"; + sha256 = "0iqninv4wf4ap8axk9m0gi39j3kq4jpbpdc8hczd34xrp83ml46a"; }; packageRequires = [ emacs uniquify-files wisi ]; meta = { @@ -208,10 +208,10 @@ elpaBuild { pname = "async"; ename = "async"; - version = "1.9.2"; + version = "1.9.3"; src = fetchurl { - url = "https://elpa.gnu.org/packages/async-1.9.2.tar"; - sha256 = "17fnvrj7jww29sav6a6jpizclg4w2962m6h37akpii71gf0vrffw"; + url = "https://elpa.gnu.org/packages/async-1.9.3.tar"; + sha256 = "1pmfjrlapvhkjqcal8x95w190hm9wsgxb3byc22rc1gf5z0p52c8"; }; packageRequires = [ cl-lib nadvice ]; meta = { @@ -223,10 +223,10 @@ elpaBuild { pname = "auctex"; ename = "auctex"; - version = "12.1.2"; + version = "12.2.0"; src = fetchurl { - url = "https://elpa.gnu.org/packages/auctex-12.1.2.tar"; - sha256 = "1yibg2anpmyr2a27wm4xqjsvsi9km2jzb56bf7cwyj8dnjfsd11n"; + url = "https://elpa.gnu.org/packages/auctex-12.2.0.tar"; + sha256 = "0j919l3q5sq6h1k1kmk4kyv0vkzl4f98fxcd64v34x5q1ahjhg48"; }; packageRequires = [ cl-lib emacs ]; meta = { @@ -324,14 +324,29 @@ license = lib.licenses.free; }; }) {}; + bluetooth = callPackage ({ dash, elpaBuild, emacs, fetchurl, lib }: + elpaBuild { + pname = "bluetooth"; + ename = "bluetooth"; + version = "0.1.2"; + src = fetchurl { + url = "https://elpa.gnu.org/packages/bluetooth-0.1.2.el"; + sha256 = "1vp2vpyq0ybjni35ics1mg1kiwgvc7x12dlmvygy78sqp52sfkcv"; + }; + packageRequires = [ dash emacs ]; + meta = { + homepage = "https://elpa.gnu.org/packages/bluetooth.html"; + license = lib.licenses.free; + }; + }) {}; bnf-mode = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib }: elpaBuild { pname = "bnf-mode"; ename = "bnf-mode"; - version = "0.4.2"; + version = "0.4.4"; src = fetchurl { - url = "https://elpa.gnu.org/packages/bnf-mode-0.4.2.tar"; - sha256 = "04wl563hxgjbhz6hhwvysdfvdni9fm7kahy5wxkyqxi1sy64gn7d"; + url = "https://elpa.gnu.org/packages/bnf-mode-0.4.4.tar"; + sha256 = "0acr3x96zknxs90dc9mpnrwiaa81883h36lx5q1lxfn78vjfw14x"; }; packageRequires = [ cl-lib emacs ]; meta = { @@ -542,10 +557,10 @@ elpaBuild { pname = "company"; ename = "company"; - version = "0.9.10"; + version = "0.9.12"; src = fetchurl { - url = "https://elpa.gnu.org/packages/company-0.9.10.tar"; - sha256 = "1w6a11rzsx5iyxn76xarzbghm460j0ampqxlh4j12bswvbn7swnd"; + url = "https://elpa.gnu.org/packages/company-0.9.12.tar"; + sha256 = "1vcgfccdc06alba3jl6dg7ms20wdzdhaqikh7id5lbawb00hc10j"; }; packageRequires = [ emacs ]; meta = { @@ -640,10 +655,10 @@ elpaBuild { pname = "csv-mode"; ename = "csv-mode"; - version = "1.9"; + version = "1.12"; src = fetchurl { - url = "https://elpa.gnu.org/packages/csv-mode-1.9.el"; - sha256 = "0sdnyi9in904k49yy5imapypnmk75lv14k9c1yyjhjpalvvh6br1"; + url = "https://elpa.gnu.org/packages/csv-mode-1.12.tar"; + sha256 = "0bya12smlrzwv4cbcmch4kg1fazp4k0ndrh1z17ix9p8c14d0v1j"; }; packageRequires = [ cl-lib emacs ]; meta = { @@ -711,21 +726,16 @@ license = lib.licenses.free; }; }) {}; - debbugs = callPackage ({ cl-lib ? null - , elpaBuild - , emacs - , fetchurl - , lib - , soap-client }: + debbugs = callPackage ({ elpaBuild, emacs, fetchurl, lib, soap-client }: elpaBuild { pname = "debbugs"; ename = "debbugs"; - version = "0.20"; + version = "0.22"; src = fetchurl { - url = "https://elpa.gnu.org/packages/debbugs-0.20.tar"; - sha256 = "03mmb1zvbqlsznl5agq8k3xrlcz310vnsa2zn0y8myanm4ra51zm"; + url = "https://elpa.gnu.org/packages/debbugs-0.22.tar"; + sha256 = "05ik9qv539b5c1nzxkk3lk23bqj4vqgmfmd8x367abhb7c9gix2z"; }; - packageRequires = [ cl-lib emacs soap-client ]; + packageRequires = [ emacs soap-client ]; meta = { homepage = "https://elpa.gnu.org/packages/debbugs.html"; license = lib.licenses.free; @@ -810,10 +820,10 @@ elpaBuild { pname = "dired-git-info"; ename = "dired-git-info"; - version = "0.2"; + version = "0.3.1"; src = fetchurl { - url = "https://elpa.gnu.org/packages/dired-git-info-0.2.el"; - sha256 = "1pxn6kmgnynil13gp3m0y8hhkvciy3dcd55psj70pkrj50555dqx"; + url = "https://elpa.gnu.org/packages/dired-git-info-0.3.1.el"; + sha256 = "1kd0rpw7l32wvwi7q8s0inx4bc66xrl7hkllnlicyczsnzw2z52z"; }; packageRequires = [ emacs ]; meta = { @@ -915,10 +925,10 @@ elpaBuild { pname = "ebdb"; ename = "ebdb"; - version = "0.6.11"; + version = "0.6.13"; src = fetchurl { - url = "https://elpa.gnu.org/packages/ebdb-0.6.11.tar"; - sha256 = "1ljcp4vy8z5xbcrlf33xgi63a2px4fhx6928qhwr7sy7jwil2s6n"; + url = "https://elpa.gnu.org/packages/ebdb-0.6.13.tar"; + sha256 = "1nxbp7w4xxij07q8manc15b896sl10yh2h1cg88prdqbw1wk62qr"; }; packageRequires = [ cl-lib emacs seq ]; meta = { @@ -975,10 +985,10 @@ elpaBuild { pname = "eev"; ename = "eev"; - version = "20190902"; + version = "20200224"; src = fetchurl { - url = "https://elpa.gnu.org/packages/eev-20190902.tar"; - sha256 = "09rk01ykvvmmzadkz8y064iil2sm6ql6qz0rj0jjlnyymi58lj69"; + url = "https://elpa.gnu.org/packages/eev-20200224.tar"; + sha256 = "1r1wh001ikg34axihffrhzl0n8r0w42s2hac2jys8sil1hqvx306"; }; packageRequires = [ emacs ]; meta = { @@ -995,10 +1005,10 @@ elpaBuild { pname = "eglot"; ename = "eglot"; - version = "1.4"; + version = "1.5"; src = fetchurl { - url = "https://elpa.gnu.org/packages/eglot-1.4.tar"; - sha256 = "1f2p08ly17jcjyh8bif5zhmzhx3z5y9z20v6z24z939bqk8c1pdq"; + url = "https://elpa.gnu.org/packages/eglot-1.5.tar"; + sha256 = "00ifgz9r9xvy19zsz1yfls6n1acvms14p86nbw0x6ldjgvpf279i"; }; packageRequires = [ emacs flymake jsonrpc ]; meta = { @@ -1056,6 +1066,21 @@ license = lib.licenses.free; }; }) {}; + elisp-benchmarks = callPackage ({ elpaBuild, fetchurl, lib }: + elpaBuild { + pname = "elisp-benchmarks"; + ename = "elisp-benchmarks"; + version = "1.4"; + src = fetchurl { + url = "https://elpa.gnu.org/packages/elisp-benchmarks-1.4.tar"; + sha256 = "18ia04aq4pqa8374x60g3g66jqmm17c6n904naa0jhqphlgam8pb"; + }; + packageRequires = []; + meta = { + homepage = "https://elpa.gnu.org/packages/elisp-benchmarks.html"; + license = lib.licenses.free; + }; + }) {}; enwc = callPackage ({ elpaBuild, emacs, fetchurl, lib }: elpaBuild { pname = "enwc"; @@ -1128,6 +1153,21 @@ license = lib.licenses.free; }; }) {}; + expand-region = callPackage ({ elpaBuild, fetchurl, lib }: + elpaBuild { + pname = "expand-region"; + ename = "expand-region"; + version = "0.11.0"; + src = fetchurl { + url = "https://elpa.gnu.org/packages/expand-region-0.11.0.tar"; + sha256 = "1q6xaqkv40z4c6rgdkxqqkvxgsaj8yjqjrxi40kz5y0ck3bjrk0i"; + }; + packageRequires = []; + meta = { + homepage = "https://elpa.gnu.org/packages/expand-region.html"; + license = lib.licenses.free; + }; + }) {}; exwm = callPackage ({ elpaBuild, fetchurl, lib, xelb }: elpaBuild { pname = "exwm"; @@ -1327,10 +1367,10 @@ elpaBuild { pname = "gnorb"; ename = "gnorb"; - version = "1.6.3"; + version = "1.6.5"; src = fetchurl { - url = "https://elpa.gnu.org/packages/gnorb-1.6.3.tar"; - sha256 = "14cdldlvq2fx0j9g1bbzb6dq7yp9rw6bv39sls67i2p35h3gc2gd"; + url = "https://elpa.gnu.org/packages/gnorb-1.6.5.tar"; + sha256 = "1har3j8gb65mawrwn93939jg157wbap138qa1z1myznrrish6vzc"; }; packageRequires = [ cl-lib ]; meta = { @@ -1379,10 +1419,10 @@ elpaBuild { pname = "gnus-mock"; ename = "gnus-mock"; - version = "0.4.2"; + version = "0.4.4"; src = fetchurl { - url = "https://elpa.gnu.org/packages/gnus-mock-0.4.2.tar"; - sha256 = "04ddmdm2hykgr2y9g2yzmjp3fszhaywwnxhiy608cpvqdjwlwhn7"; + url = "https://elpa.gnu.org/packages/gnus-mock-0.4.4.tar"; + sha256 = "0v94z800f1y3ylbgbrw4nslqm7j2jr592g402nxgj9rlldazzxg0"; }; packageRequires = []; meta = { @@ -1521,10 +1561,10 @@ elpaBuild { pname = "hyperbole"; ename = "hyperbole"; - version = "7.0.3"; + version = "7.0.6"; src = fetchurl { - url = "https://elpa.gnu.org/packages/hyperbole-7.0.3.tar"; - sha256 = "1mvplaxfjji00gg8rkhidfsdl8knwi6c0ai149zm4djsfaww3ikh"; + url = "https://elpa.gnu.org/packages/hyperbole-7.0.6.tar"; + sha256 = "08gi4v76s53nfmn3s0qcxc3zii0pspjfd6ry7jq1kgm3z34x8hab"; }; packageRequires = [ emacs ]; meta = { @@ -1532,7 +1572,7 @@ license = lib.licenses.free; }; }) {}; - ioccur = callPackage ({ elpaBuild, fetchurl, lib }: + ioccur = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib }: elpaBuild { pname = "ioccur"; ename = "ioccur"; @@ -1541,7 +1581,7 @@ url = "https://elpa.gnu.org/packages/ioccur-2.4.el"; sha256 = "1isid3kgsi5qkz27ipvmp9v5knx0qigmv7lz12mqdkwv8alns1p9"; }; - packageRequires = []; + packageRequires = [ cl-lib emacs ]; meta = { homepage = "https://elpa.gnu.org/packages/ioccur.html"; license = lib.licenses.free; @@ -1566,10 +1606,10 @@ elpaBuild { pname = "ivy"; ename = "ivy"; - version = "0.12.0"; + version = "0.13.0"; src = fetchurl { - url = "https://elpa.gnu.org/packages/ivy-0.12.0.tar"; - sha256 = "14q9kh48iabrnhwcmhlvgk7sg4a0j5c3zjp0yzj1ijrz5zbdhxxz"; + url = "https://elpa.gnu.org/packages/ivy-0.13.0.tar"; + sha256 = "18r9vb9v7hvdkylchn436sgh7ji9avhry1whjip8zrn0c1bnqmk8"; }; packageRequires = [ emacs ]; meta = { @@ -1596,10 +1636,10 @@ elpaBuild { pname = "javaimp"; ename = "javaimp"; - version = "0.6.1"; + version = "0.7.1"; src = fetchurl { - url = "https://elpa.gnu.org/packages/javaimp-0.6.1.tar"; - sha256 = "1piaj3sgw6a05g9dhkbrn5n490w01z1rxa7axh3vg1xqbs6rv7lw"; + url = "https://elpa.gnu.org/packages/javaimp-0.7.1.tar"; + sha256 = "0i93akp9jhlpgbm454wkjhir8cbzhfjb97cxxlk8n4pgzbh481l3"; }; packageRequires = []; meta = { @@ -1656,10 +1696,10 @@ elpaBuild { pname = "jsonrpc"; ename = "jsonrpc"; - version = "1.0.7"; + version = "1.0.9"; src = fetchurl { - url = "https://elpa.gnu.org/packages/jsonrpc-1.0.7.el"; - sha256 = "19z35gjphl4mlgpznfhlccgipnmbb3c1dvax48f4hw8qwksfcac1"; + url = "https://elpa.gnu.org/packages/jsonrpc-1.0.9.el"; + sha256 = "1ncsdv9pr2zsfa9mxm4n68fppnkpm410mh72r7h5f8yj17lz00ss"; }; packageRequires = [ emacs ]; meta = { @@ -1802,16 +1842,16 @@ license = lib.licenses.free; }; }) {}; - loccur = callPackage ({ cl-lib ? null, elpaBuild, fetchurl, lib }: + loccur = callPackage ({ elpaBuild, emacs, fetchurl, lib }: elpaBuild { pname = "loccur"; ename = "loccur"; - version = "1.2.3"; + version = "1.2.4"; src = fetchurl { - url = "https://elpa.gnu.org/packages/loccur-1.2.3.el"; - sha256 = "09pxp03g4pg95cpqiadyv9dz6qrwd9igrkwrhm4s38cscmqm7dzq"; + url = "https://elpa.gnu.org/packages/loccur-1.2.4.el"; + sha256 = "00f1ifa4z5ay90bd2002fmj83d7xqzrcr9018q8crlypmpxkyh7j"; }; - packageRequires = [ cl-lib ]; + packageRequires = [ emacs ]; meta = { homepage = "https://elpa.gnu.org/packages/loccur.html"; license = lib.licenses.free; @@ -1821,10 +1861,10 @@ elpaBuild { pname = "map"; ename = "map"; - version = "2.0"; + version = "2.1"; src = fetchurl { - url = "https://elpa.gnu.org/packages/map-2.0.el"; - sha256 = "1djygpvk1qgldg9my0lh8n2z1n6acz3y5ws7sv2w08hvxdlxz857"; + url = "https://elpa.gnu.org/packages/map-2.1.el"; + sha256 = "0ydz5w1n4vwhhzxxj003s7jv8n1wjijwfryk5z93bwhnr0cak0i0"; }; packageRequires = [ emacs ]; meta = { @@ -1967,6 +2007,36 @@ license = lib.licenses.free; }; }) {}; + modus-operandi-theme = callPackage ({ elpaBuild, emacs, fetchurl, lib }: + elpaBuild { + pname = "modus-operandi-theme"; + ename = "modus-operandi-theme"; + version = "0.6.0"; + src = fetchurl { + url = "https://elpa.gnu.org/packages/modus-operandi-theme-0.6.0.el"; + sha256 = "10smvzaxp90lsg0g61s2nzmfxwnlrxq9dv4rn771vlhra249y08v"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://elpa.gnu.org/packages/modus-operandi-theme.html"; + license = lib.licenses.free; + }; + }) {}; + modus-vivendi-theme = callPackage ({ elpaBuild, emacs, fetchurl, lib }: + elpaBuild { + pname = "modus-vivendi-theme"; + ename = "modus-vivendi-theme"; + version = "0.6.0"; + src = fetchurl { + url = "https://elpa.gnu.org/packages/modus-vivendi-theme-0.6.0.el"; + sha256 = "1b7wkz779f020gpil4spbdzmg2fx6l48wk1138564cv9kx3nkkz2"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://elpa.gnu.org/packages/modus-vivendi-theme.html"; + license = lib.licenses.free; + }; + }) {}; multishell = callPackage ({ cl-lib ? null, elpaBuild, fetchurl, lib }: elpaBuild { pname = "multishell"; @@ -2070,10 +2140,10 @@ elpaBuild { pname = "nhexl-mode"; ename = "nhexl-mode"; - version = "1.3"; + version = "1.5"; src = fetchurl { - url = "https://elpa.gnu.org/packages/nhexl-mode-1.3.el"; - sha256 = "1fcy4ybr12dvswmzaqkv4798snb1x1y7ldxwrsgjv5sx7bb5j60z"; + url = "https://elpa.gnu.org/packages/nhexl-mode-1.5.el"; + sha256 = "0qvxfg7sv4iqyjxzaim6b4v9k5hav36qd4vkf9jwzw6p5fri8w8d"; }; packageRequires = [ cl-lib emacs ]; meta = { @@ -2145,10 +2215,10 @@ elpaBuild { pname = "oauth2"; ename = "oauth2"; - version = "0.11"; + version = "0.12"; src = fetchurl { - url = "https://elpa.gnu.org/packages/oauth2-0.11.el"; - sha256 = "0ydkc9jazsnbbvfhd47mql52y7k06n3z7r0naqxkwb99j9blqsmp"; + url = "https://elpa.gnu.org/packages/oauth2-0.12.el"; + sha256 = "1rfyfy0h7shr3fmd8lh6s2i3ahfh28wb5fqiqlsjwspn5h77ll29"; }; packageRequires = []; meta = { @@ -2160,10 +2230,10 @@ elpaBuild { pname = "objed"; ename = "objed"; - version = "0.8.1"; + version = "0.8.3"; src = fetchurl { - url = "https://elpa.gnu.org/packages/objed-0.8.1.tar"; - sha256 = "06jfvz7avh28p1ghyd1aik5lz8k9fnv1fcxh9npm1iyvh810y5zj"; + url = "https://elpa.gnu.org/packages/objed-0.8.3.tar"; + sha256 = "1s38d6bvggdk5p45ww1jb4gxifzgjwgw1m6ar920nlg0j4fgbcvr"; }; packageRequires = [ cl-lib emacs ]; meta = { @@ -2220,10 +2290,10 @@ elpaBuild { pname = "org"; ename = "org"; - version = "9.2.6"; + version = "9.3.6"; src = fetchurl { - url = "https://elpa.gnu.org/packages/org-9.2.6.tar"; - sha256 = "0ikd78k4yw4sm5x7l3dsbvfcmvnv5qna2mxirr560gvcnzhr0zg4"; + url = "https://elpa.gnu.org/packages/org-9.3.6.tar"; + sha256 = "0jwpgfzjvf1hd3mx582pw86hysdryaqzp69hk6azi9kmq4bzk87d"; }; packageRequires = []; meta = { @@ -2235,10 +2305,10 @@ elpaBuild { pname = "org-edna"; ename = "org-edna"; - version = "1.0.2"; + version = "1.1.1"; src = fetchurl { - url = "https://elpa.gnu.org/packages/org-edna-1.0.2.tar"; - sha256 = "005pmnqr41s2w72gahq9bf4l5kw601i19ypiqfnb8aq0f4acjr3d"; + url = "https://elpa.gnu.org/packages/org-edna-1.1.1.tar"; + sha256 = "1hfkdjbjnhbwb27vgs43ywl4kn2lqc037f4xppp2v0s97850za8r"; }; packageRequires = [ emacs org seq ]; meta = { @@ -2250,10 +2320,10 @@ elpaBuild { pname = "orgalist"; ename = "orgalist"; - version = "1.9"; + version = "1.11"; src = fetchurl { - url = "https://elpa.gnu.org/packages/orgalist-1.9.el"; - sha256 = "1rmmcyiiqkq54hn74nhzxzl4nvd902hv6gq341jwhrm7yiagffi6"; + url = "https://elpa.gnu.org/packages/orgalist-1.11.el"; + sha256 = "0zbqkk540rax32s8szp5zgz3a02zw88fc1dmjmyw6h3ls04m91kl"; }; packageRequires = [ emacs ]; meta = { @@ -2265,10 +2335,10 @@ elpaBuild { pname = "osc"; ename = "osc"; - version = "0.1"; + version = "0.2"; src = fetchurl { - url = "https://elpa.gnu.org/packages/osc-0.1.el"; - sha256 = "09nzbbzvxfrjm91wawbv6bg6fqlcx1qi0711qc73yfrbc8ndsnsb"; + url = "https://elpa.gnu.org/packages/osc-0.2.el"; + sha256 = "1b1ck9kb9mkyd7nlj4cqahsshar6h8mpvqss6n3dp4cl3r6dk1sw"; }; packageRequires = []; meta = { @@ -2385,10 +2455,10 @@ elpaBuild { pname = "phps-mode"; ename = "phps-mode"; - version = "0.3.1"; + version = "0.3.38"; src = fetchurl { - url = "https://elpa.gnu.org/packages/phps-mode-0.3.1.tar"; - sha256 = "1h6s5k156mbbkaysb07vcb13k3izs91pwigzcfh6jvv3lak4azg5"; + url = "https://elpa.gnu.org/packages/phps-mode-0.3.38.tar"; + sha256 = "1m8f1z259c66k0hf0cfjqidfd0cra2c2mb7k5lj71v1kfckwj6bh"; }; packageRequires = [ emacs ]; meta = { @@ -2430,10 +2500,10 @@ elpaBuild { pname = "posframe"; ename = "posframe"; - version = "0.5.0"; + version = "0.6.0"; src = fetchurl { - url = "https://elpa.gnu.org/packages/posframe-0.5.0.el"; - sha256 = "1fjnpwg1fj9j54nymh802vd4viggrg3qnqwh52281n7zv6xfv0qb"; + url = "https://elpa.gnu.org/packages/posframe-0.6.0.el"; + sha256 = "14x2jgjn8di03rrad4x4mn8fhcqibk1j5c0ya0vmv8648fki6i9d"; }; packageRequires = [ emacs ]; meta = { @@ -2505,10 +2575,10 @@ elpaBuild { pname = "rainbow-mode"; ename = "rainbow-mode"; - version = "1.0.1"; + version = "1.0.3"; src = fetchurl { - url = "https://elpa.gnu.org/packages/rainbow-mode-1.0.1.el"; - sha256 = "0cpga4ax635rfpj7y2vmh7ank0yw00dcy20gjg1mj74r97by8csf"; + url = "https://elpa.gnu.org/packages/rainbow-mode-1.0.3.el"; + sha256 = "0cpwqllhv3cb0gii22cj9i731rk3sbf2drm5m52w5yclm8sfr339"; }; packageRequires = []; meta = { @@ -2721,16 +2791,16 @@ license = lib.licenses.free; }; }) {}; - relint = callPackage ({ elpaBuild, fetchurl, lib, xr }: + relint = callPackage ({ elpaBuild, emacs, fetchurl, lib, xr }: elpaBuild { pname = "relint"; ename = "relint"; - version = "1.10"; + version = "1.15"; src = fetchurl { - url = "https://elpa.gnu.org/packages/relint-1.10.el"; - sha256 = "1l0lh4pkksw7brmhhbaikwzs4zkgd2962ks1zy7m262dvkhxjfv8"; + url = "https://elpa.gnu.org/packages/relint-1.15.tar"; + sha256 = "0sxmdsacj8my942k8j76m2y68nzab7190acv7cwgflc5n4f07yxa"; }; - packageRequires = [ xr ]; + packageRequires = [ emacs xr ]; meta = { homepage = "https://elpa.gnu.org/packages/relint.html"; license = lib.licenses.free; @@ -2911,10 +2981,10 @@ elpaBuild { pname = "sml-mode"; ename = "sml-mode"; - version = "6.9"; + version = "6.10"; src = fetchurl { - url = "https://elpa.gnu.org/packages/sml-mode-6.9.el"; - sha256 = "1bdg9ywpvj85hxqah9w1raxlcrhkyx67nw22jwd1bd5j0fhmgqij"; + url = "https://elpa.gnu.org/packages/sml-mode-6.10.el"; + sha256 = "01yf0s474r9xhj6nbs14ljn9ccxb5yy758i17c8nmgmqvm8fx7sb"; }; packageRequires = [ cl-lib emacs ]; meta = { @@ -2986,10 +3056,10 @@ elpaBuild { pname = "sql-indent"; ename = "sql-indent"; - version = "1.4"; + version = "1.5"; src = fetchurl { - url = "https://elpa.gnu.org/packages/sql-indent-1.4.tar"; - sha256 = "1nilxfm30nb2la1463729rgbgbma7igkf0z325k8cbapqanb1wgl"; + url = "https://elpa.gnu.org/packages/sql-indent-1.5.tar"; + sha256 = "07k5rn9hbxppnka7nq0a3a6zyqqa1hp8j6qrb344js6zyak0cb63"; }; packageRequires = [ cl-lib ]; meta = { @@ -3001,10 +3071,10 @@ elpaBuild { pname = "ssh-deploy"; ename = "ssh-deploy"; - version = "3.1.10"; + version = "3.1.11"; src = fetchurl { - url = "https://elpa.gnu.org/packages/ssh-deploy-3.1.10.tar"; - sha256 = "0gckc6yhgi8pn3s8vdyzz8x1s2d4wmsw6yjwsaqcr5nra50glbpg"; + url = "https://elpa.gnu.org/packages/ssh-deploy-3.1.11.tar"; + sha256 = "1xd09kfn7lqw6jzfkrn0p5agdpcz1z9zbazqigylpqfcywr5snhk"; }; packageRequires = [ emacs ]; meta = { @@ -3016,10 +3086,10 @@ elpaBuild { pname = "stream"; ename = "stream"; - version = "2.2.4"; + version = "2.2.5"; src = fetchurl { - url = "https://elpa.gnu.org/packages/stream-2.2.4.tar"; - sha256 = "1fdjjxfnpzfv5jsy0wmmnrsk821bg8d3magsng609fb2pkwvk1ij"; + url = "https://elpa.gnu.org/packages/stream-2.2.5.tar"; + sha256 = "00c3n4gyxzv7vczqms0d62kl8zsmjfyxa92mwxn2snyx857a9jfw"; }; packageRequires = [ emacs ]; meta = { @@ -3046,10 +3116,10 @@ elpaBuild { pname = "svg-clock"; ename = "svg-clock"; - version = "1.0"; + version = "1.1"; src = fetchurl { - url = "https://elpa.gnu.org/packages/svg-clock-1.0.el"; - sha256 = "0j6zk7fsv72af12phqdw8axbn2y8y4rfgxiab1p3pxq3y7k47jid"; + url = "https://elpa.gnu.org/packages/svg-clock-1.1.el"; + sha256 = "12wf4dd3vgbq1v3363cil4wr2skx60xy546jc69ycyk0jq7plcq3"; }; packageRequires = [ emacs svg ]; meta = { @@ -3117,7 +3187,11 @@ license = lib.licenses.free; }; }) {}; - timerfunctions = callPackage ({ cl-lib ? null, elpaBuild, fetchurl, lib }: + timerfunctions = callPackage ({ cl-lib ? null + , elpaBuild + , emacs + , fetchurl + , lib }: elpaBuild { pname = "timerfunctions"; ename = "timerfunctions"; @@ -3126,7 +3200,7 @@ url = "https://elpa.gnu.org/packages/timerfunctions-1.4.2.el"; sha256 = "122q8nv08pz1mkgilvi9qfrs7rsnc5picr7jyz2jpnvpd9qw6jw5"; }; - packageRequires = [ cl-lib ]; + packageRequires = [ cl-lib emacs ]; meta = { homepage = "https://elpa.gnu.org/packages/timerfunctions.html"; license = lib.licenses.free; @@ -3151,10 +3225,10 @@ elpaBuild { pname = "tramp"; ename = "tramp"; - version = "2.4.2.2"; + version = "2.4.3.3"; src = fetchurl { - url = "https://elpa.gnu.org/packages/tramp-2.4.2.2.tar"; - sha256 = "0bjfnxxyn8xgw10ybnjrza2gfwqifa3q7rh0bp6pidlhg45718p8"; + url = "https://elpa.gnu.org/packages/tramp-2.4.3.3.tar"; + sha256 = "1di9ia59k6x7j9r8flwf05r160j30nrg0jvq5fjc9iazag9lniyw"; }; packageRequires = [ emacs ]; meta = { @@ -3211,10 +3285,10 @@ elpaBuild { pname = "undo-tree"; ename = "undo-tree"; - version = "0.6.5"; + version = "0.7.4"; src = fetchurl { - url = "https://elpa.gnu.org/packages/undo-tree-0.6.5.el"; - sha256 = "0bs97xyxwfkjvzax9llg0zsng0vyndnrxj5d2n5mmynaqcn89d37"; + url = "https://elpa.gnu.org/packages/undo-tree-0.7.4.el"; + sha256 = "018ixl802f076sfyf4gkacpgrdpybin88jd8vq9zgyvc6x2dalfa"; }; packageRequires = []; meta = { @@ -3241,10 +3315,10 @@ elpaBuild { pname = "uniquify-files"; ename = "uniquify-files"; - version = "1.0.1"; + version = "1.0.2"; src = fetchurl { - url = "https://elpa.gnu.org/packages/uniquify-files-1.0.1.tar"; - sha256 = "0c4lf25503z71wz9f0v6ag5lmqfxz94lmq65xvzvhmqvkxvsgpm5"; + url = "https://elpa.gnu.org/packages/uniquify-files-1.0.2.tar"; + sha256 = "1vib79wsz5k94b9z0wiwhbzsdm70y9dla6szw2bb75245cx3kr0h"; }; packageRequires = [ emacs ]; meta = { @@ -3291,6 +3365,21 @@ license = lib.licenses.free; }; }) {}; + vcard = callPackage ({ elpaBuild, emacs, fetchurl, lib }: + elpaBuild { + pname = "vcard"; + ename = "vcard"; + version = "0.1"; + src = fetchurl { + url = "https://elpa.gnu.org/packages/vcard-0.1.tar"; + sha256 = "1awcm2s292r2nkyz5bwjaga46jsh5rn92469wrg1ag843mlyxbd0"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://elpa.gnu.org/packages/vcard.html"; + license = lib.licenses.free; + }; + }) {}; vcl-mode = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild { pname = "vcl-mode"; @@ -3327,10 +3416,10 @@ elpaBuild { pname = "verilog-mode"; ename = "verilog-mode"; - version = "2019.9.23.4801067"; + version = "2020.2.23.232634261"; src = fetchurl { - url = "https://elpa.gnu.org/packages/verilog-mode-2019.9.23.4801067.el"; - sha256 = "0jaba2cqiiknjqc7qz6047hpjd87hznl6b154ai1900i52kjbs21"; + url = "https://elpa.gnu.org/packages/verilog-mode-2020.2.23.232634261.el"; + sha256 = "07r2nzyfwmpv1299q1v768ai14rdgq7y4bvz5xsnp4qj3g06p0f6"; }; packageRequires = []; meta = { @@ -3480,10 +3569,10 @@ elpaBuild { pname = "websocket"; ename = "websocket"; - version = "1.11.1"; + version = "1.12"; src = fetchurl { - url = "https://elpa.gnu.org/packages/websocket-1.11.1.tar"; - sha256 = "09s8qyi012djmm3vrj1qg1zqqy0h0cbcfzfkhybvqi4amy4jgliw"; + url = "https://elpa.gnu.org/packages/websocket-1.12.tar"; + sha256 = "0ap4z80c6pzpb69wrx0hsvwzignxmd2b9xy974by9gf5xm2wpa8w"; }; packageRequires = [ cl-lib ]; meta = { @@ -3506,6 +3595,21 @@ license = lib.licenses.free; }; }) {}; + windower = callPackage ({ elpaBuild, emacs, fetchurl, lib }: + elpaBuild { + pname = "windower"; + ename = "windower"; + version = "0.0.1"; + src = fetchurl { + url = "https://elpa.gnu.org/packages/windower-0.0.1.el"; + sha256 = "19xizbfbnzhhmhlqy20ir1a1y87bjwrq67bcawxy6nxpkwbizsv7"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://elpa.gnu.org/packages/windower.html"; + license = lib.licenses.free; + }; + }) {}; windresize = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild { pname = "windresize"; @@ -3525,10 +3629,10 @@ elpaBuild { pname = "wisi"; ename = "wisi"; - version = "2.2.1"; + version = "3.0.1"; src = fetchurl { - url = "https://elpa.gnu.org/packages/wisi-2.2.1.tar"; - sha256 = "1qvhx8bpms7gri7y6wniwqd6nmqxj4lip5l3sphbq2kjf4zq4qd4"; + url = "https://elpa.gnu.org/packages/wisi-3.0.1.tar"; + sha256 = "01961apbirdi4y8qx2wb01f04knkw3hyin3ndrkjlkfslqbsnzzv"; }; packageRequires = [ emacs seq ]; meta = { @@ -3575,10 +3679,10 @@ elpaBuild { pname = "xclip"; ename = "xclip"; - version = "1.9"; + version = "1.10"; src = fetchurl { - url = "https://elpa.gnu.org/packages/xclip-1.9.el"; - sha256 = "0xbs6fw0dfm5iynhdx62cwixzizjkrwrib6n0fjnsj31kajbkf3y"; + url = "https://elpa.gnu.org/packages/xclip-1.10.el"; + sha256 = "0i3i9kwfg8qmhcmqhhnrb1kljgwkccv63s9q1mjwqfjldyfh8j8i"; }; packageRequires = []; meta = { @@ -3616,16 +3720,16 @@ license = lib.licenses.free; }; }) {}; - xr = callPackage ({ elpaBuild, fetchurl, lib }: + xr = callPackage ({ elpaBuild, emacs, fetchurl, lib }: elpaBuild { pname = "xr"; ename = "xr"; - version = "1.13"; + version = "1.18"; src = fetchurl { - url = "https://elpa.gnu.org/packages/xr-1.13.tar"; - sha256 = "1km4x92pii8c4bcimks4xzhmwpypdf183z0zh7raj062jz4jb74r"; + url = "https://elpa.gnu.org/packages/xr-1.18.tar"; + sha256 = "1nq9pj47sxgpkw97c2xrkhgcwh3zsfd2a22qiqbl4i9zf2l9yy91"; }; - packageRequires = []; + packageRequires = [ emacs ]; meta = { homepage = "https://elpa.gnu.org/packages/xr.html"; license = lib.licenses.free; @@ -3635,10 +3739,10 @@ elpaBuild { pname = "yasnippet"; ename = "yasnippet"; - version = "0.13.0"; + version = "0.14.0"; src = fetchurl { - url = "https://elpa.gnu.org/packages/yasnippet-0.13.0.tar"; - sha256 = "1klnvyy8az3h7i7yrpbhad4ka9p9vlgf918ha1vf7i3wbcbm0s5z"; + url = "https://elpa.gnu.org/packages/yasnippet-0.14.0.tar"; + sha256 = "1lbil3dyz43nmr2lvx9vhpybqynpb7shg7m1xl1f7j4vm4dh0r08"; }; packageRequires = [ cl-lib ]; meta = { diff --git a/pkgs/applications/editors/emacs-modes/ess-R-object-popup/default.nix b/pkgs/applications/editors/emacs-modes/ess-R-object-popup/default.nix index 077e72f5576..5beaed58240 100644 --- a/pkgs/applications/editors/emacs-modes/ess-R-object-popup/default.nix +++ b/pkgs/applications/editors/emacs-modes/ess-R-object-popup/default.nix @@ -16,7 +16,7 @@ stdenv.mkDerivation { meta = { description = "Popup descriptions of R objects"; - homepage = https://github.com/myuhe/ess-R-object-popup.el; + homepage = "https://github.com/myuhe/ess-R-object-popup.el"; platforms = stdenv.lib.platforms.all; }; } diff --git a/pkgs/applications/editors/emacs-modes/helm-words/default.nix b/pkgs/applications/editors/emacs-modes/helm-words/default.nix index c6e1c5a50f4..00879463276 100644 --- a/pkgs/applications/editors/emacs-modes/helm-words/default.nix +++ b/pkgs/applications/editors/emacs-modes/helm-words/default.nix @@ -16,7 +16,7 @@ stdenv.mkDerivation { meta = { description = "Emacs major mode for jade and stylus"; - homepage = https://github.com/brianc/helm-words; + homepage = "https://github.com/brianc/helm-words"; license = stdenv.lib.licenses.gpl3; platforms = stdenv.lib.platforms.all; }; diff --git a/pkgs/applications/editors/emacs-modes/hol_light/default.nix b/pkgs/applications/editors/emacs-modes/hol_light/default.nix index 255b30d60ed..34b74374b23 100644 --- a/pkgs/applications/editors/emacs-modes/hol_light/default.nix +++ b/pkgs/applications/editors/emacs-modes/hol_light/default.nix @@ -5,7 +5,7 @@ stdenv.mkDerivation rec { version = "73"; src = fetchsvn { - url = http://seanmcl-ocaml-lib.googlecode.com/svn/trunk/workshop/software/emacs; + url = "http://seanmcl-ocaml-lib.googlecode.com/svn/trunk/workshop/software/emacs"; rev = version; sha256 = "3ca83098960439da149a47e1caff32536601559a77f04822be742a390c67feb7"; }; @@ -18,7 +18,7 @@ stdenv.mkDerivation rec { meta = { description = "A HOL Light mode for Emacs"; - homepage = http://www.cl.cam.ac.uk/~jrh13/hol-light/; + homepage = "http://www.cl.cam.ac.uk/~jrh13/hol-light/"; license = stdenv.lib.licenses.gpl2Plus; platforms = stdenv.lib.platforms.all; maintainers = [ stdenv.lib.maintainers.thoughtpolice ]; diff --git a/pkgs/applications/editors/emacs-modes/hsc3/default.nix b/pkgs/applications/editors/emacs-modes/hsc3/default.nix index 75b72516a3c..6c2db85d794 100644 --- a/pkgs/applications/editors/emacs-modes/hsc3/default.nix +++ b/pkgs/applications/editors/emacs-modes/hsc3/default.nix @@ -9,7 +9,7 @@ in stdenv.mkDerivation { pname = "hsc3-mode"; inherit version; src = fetchurl { - url = mirror://hackage/hsc3-0.15/hsc3-0.15.tar.gz; + url = "mirror://hackage/hsc3-0.15/hsc3-0.15.tar.gz"; sha256 = "2f3b15655419cf8ebe25ab1c6ec22993b2589b4ffca7c3a75ce478ca78a0bde6"; }; @@ -21,7 +21,7 @@ in stdenv.mkDerivation { ''; meta = { - homepage = http://rd.slavepianos.org/?t=hsc3; + homepage = "http://rd.slavepianos.org/?t=hsc3"; description = "hsc3 mode package for Emacs"; platforms = stdenv.lib.platforms.unix; }; diff --git a/pkgs/applications/editors/emacs-modes/icicles/default.nix b/pkgs/applications/editors/emacs-modes/icicles/default.nix index 27dcd1063bf..94634292228 100644 --- a/pkgs/applications/editors/emacs-modes/icicles/default.nix +++ b/pkgs/applications/editors/emacs-modes/icicles/default.nix @@ -34,7 +34,7 @@ stdenv.mkDerivation rec { installPhase = "mkdir -p $out/share/emacs/site-lisp/emacswiki/${pname}-${version}/; cp *.el *.elc $out/share/emacs/site-lisp/emacswiki/${pname}-${version}/"; meta = { - homepage = https://www.emacswiki.org/emacs/Icicles; + homepage = "https://www.emacswiki.org/emacs/Icicles"; description = "Enhance Emacs minibuffer input with cycling and powerful completion"; license = stdenv.lib.licenses.gpl2Plus; platforms = emacs.meta.platforms; diff --git a/pkgs/applications/editors/emacs-modes/libgenerated.nix b/pkgs/applications/editors/emacs-modes/libgenerated.nix index 0529fce2b16..57bccc60818 100644 --- a/pkgs/applications/editors/emacs-modes/libgenerated.nix +++ b/pkgs/applications/editors/emacs-modes/libgenerated.nix @@ -77,7 +77,7 @@ in { url = "https://raw.githubusercontent.com/melpa/melpa/${commit}/recipes/${ename}"; inherit sha256; }; - packageRequires = lib.optional (! isNull deps) + packageRequires = lib.optionals (! isNull deps) (map (dep: pkgargs.${dep} or self.${dep} or null) deps); meta = (sourceArgs.meta or {}) // { diff --git a/pkgs/applications/editors/emacs-modes/manual-packages.nix b/pkgs/applications/editors/emacs-modes/manual-packages.nix index d773de4375c..f04319f23de 100644 --- a/pkgs/applications/editors/emacs-modes/manual-packages.nix +++ b/pkgs/applications/editors/emacs-modes/manual-packages.nix @@ -52,6 +52,19 @@ }; }; + agda-input = self.trivialBuild { + pname = "agda-input"; + + inherit (external.Agda) src version; + + postUnpack = "mv $sourceRoot/src/data/emacs-mode/agda-input.el $sourceRoot"; + + meta = { + description = "Standalone package providing the agda-input method without building Agda."; + inherit (external.Agda.meta) homepage license; + }; + }; + ess-R-object-popup = callPackage ./ess-R-object-popup { }; @@ -113,6 +126,8 @@ perl-completion = callPackage ./perl-completion { }; + pod-mode = callPackage ./pod-mode { }; + railgun = callPackage ./railgun { }; structured-haskell-mode = self.shm; diff --git a/pkgs/applications/editors/emacs-modes/melpa-packages.nix b/pkgs/applications/editors/emacs-modes/melpa-packages.nix index e15da80b3b1..5c9456b76a6 100644 --- a/pkgs/applications/editors/emacs-modes/melpa-packages.nix +++ b/pkgs/applications/editors/emacs-modes/melpa-packages.nix @@ -111,6 +111,11 @@ env NIXPKGS_ALLOW_BROKEN=1 nix-instantiate --show-trace ../../../../ -A emacsPac flycheck-rtags = fix-rtags super.flycheck-rtags; + gnuplot = super.gnuplot.overrideAttrs (old: { + nativeBuildInputs = + (old.nativeBuildInputs or []) ++ [ pkgs.autoreconfHook ]; + }); + pdf-tools = super.pdf-tools.overrideAttrs(old: { nativeBuildInputs = [ external.pkgconfig ]; buildInputs = with external; old.buildInputs ++ [ autoconf automake libpng zlib poppler ]; diff --git a/pkgs/applications/editors/emacs-modes/ocaml/default.nix b/pkgs/applications/editors/emacs-modes/ocaml/default.nix index becc2dc5dc9..4240263dd0b 100644 --- a/pkgs/applications/editors/emacs-modes/ocaml/default.nix +++ b/pkgs/applications/editors/emacs-modes/ocaml/default.nix @@ -25,7 +25,7 @@ in stdenv.mkDerivation { ''; meta = { - homepage = http://caml.inria.fr; + homepage = "http://caml.inria.fr"; description = "OCaml mode package for Emacs"; platforms = stdenv.lib.platforms.unix; }; diff --git a/pkgs/applications/editors/emacs-modes/org-generated.nix b/pkgs/applications/editors/emacs-modes/org-generated.nix index 8d70794a754..302f5adcfb1 100644 --- a/pkgs/applications/editors/emacs-modes/org-generated.nix +++ b/pkgs/applications/editors/emacs-modes/org-generated.nix @@ -6,7 +6,7 @@ ename = "org"; version = "20191203"; src = fetchurl { - url = "http://orgmode.org/elpa/org-20191203.tar"; + url = "https://orgmode.org/elpa/org-20191203.tar"; sha256 = "1fcgiswjnqmfzx3xkmlqyyhc4a8ms07vdsv7nkizgxqdh9hwfm2q"; }; packageRequires = []; @@ -21,7 +21,7 @@ ename = "org-plus-contrib"; version = "20191203"; src = fetchurl { - url = "http://orgmode.org/elpa/org-plus-contrib-20191203.tar"; + url = "https://orgmode.org/elpa/org-plus-contrib-20191203.tar"; sha256 = "1kvw95492acb7gqn8gxbp1vg4fyw80w43yvflxnfxdf6jnnw2wah"; }; packageRequires = []; diff --git a/pkgs/applications/editors/emacs-modes/org-mac-link/default.nix b/pkgs/applications/editors/emacs-modes/org-mac-link/default.nix index 241ec3b42c9..93af03ce229 100644 --- a/pkgs/applications/editors/emacs-modes/org-mac-link/default.nix +++ b/pkgs/applications/editors/emacs-modes/org-mac-link/default.nix @@ -24,7 +24,7 @@ stdenv.mkDerivation { meta = { description = "Insert org-mode links to items selected in various Mac apps"; - homepage = http://orgmode.org/worg/org-contrib/org-mac-link.html; + homepage = "https://orgmode.org/worg/org-contrib/org-mac-link.html"; license = stdenv.lib.licenses.gpl3; platforms = stdenv.lib.platforms.all; }; diff --git a/pkgs/applications/editors/emacs-modes/perl-completion/default.nix b/pkgs/applications/editors/emacs-modes/perl-completion/default.nix index 9f251f54d6a..7f2454c811a 100644 --- a/pkgs/applications/editors/emacs-modes/perl-completion/default.nix +++ b/pkgs/applications/editors/emacs-modes/perl-completion/default.nix @@ -17,7 +17,7 @@ stdenv.mkDerivation { meta = { description = "Minor mode provides useful features for editing perl codes"; - homepage = http://emacswiki.org/emacs/PerlCompletion; + homepage = "http://emacswiki.org/emacs/PerlCompletion"; platforms = stdenv.lib.platforms.all; }; } diff --git a/pkgs/applications/editors/emacs-modes/pod-mode/default.nix b/pkgs/applications/editors/emacs-modes/pod-mode/default.nix new file mode 100644 index 00000000000..549633b7dfb --- /dev/null +++ b/pkgs/applications/editors/emacs-modes/pod-mode/default.nix @@ -0,0 +1,18 @@ +{ trivialBuild, lib, fetchurl }: + +trivialBuild rec { + pname = "pod-mode"; + version = "1.04"; + + src = fetchurl { + url = "mirror://cpan/authors/id/F/FL/FLORA/pod-mode-${version}.tar.gz"; + sha256 = "1wr0khymkaa65blrc5nya607c1a3sjsww49bbf8f0a6176as71sv"; + }; + + meta = with lib; { + description = "Major mode for editing .pod-files"; + license = licenses.gpl2Plus; + maintainers = with maintainers; [ qyliss ]; + platforms = platforms.all; + }; +} diff --git a/pkgs/applications/editors/emacs-modes/prolog/default.nix b/pkgs/applications/editors/emacs-modes/prolog/default.nix index 337a1585b1b..7f5a097daa9 100644 --- a/pkgs/applications/editors/emacs-modes/prolog/default.nix +++ b/pkgs/applications/editors/emacs-modes/prolog/default.nix @@ -14,7 +14,7 @@ stdenv.mkDerivation { ''; meta = { - homepage = http://bruda.ca/emacs/prolog_mode_for_emacs/; + homepage = "http://bruda.ca/emacs/prolog_mode_for_emacs/"; description = "Prolog mode for Emacs"; license = stdenv.lib.licenses.gpl2Plus; diff --git a/pkgs/applications/editors/emacs-modes/railgun/default.nix b/pkgs/applications/editors/emacs-modes/railgun/default.nix index ba716e1dd13..8ca8d1feaa1 100644 --- a/pkgs/applications/editors/emacs-modes/railgun/default.nix +++ b/pkgs/applications/editors/emacs-modes/railgun/default.nix @@ -16,7 +16,7 @@ stdenv.mkDerivation { meta = { description = "Propel yourself through a rails project with the power of magnets"; - homepage = https://github.com/mbriggs/railgun.el; + homepage = "https://github.com/mbriggs/railgun.el"; platforms = stdenv.lib.platforms.all; }; } diff --git a/pkgs/applications/editors/emacs-modes/recipes-archive-melpa.json b/pkgs/applications/editors/emacs-modes/recipes-archive-melpa.json index 7a29ea7cd1d..b512d5f5c75 100644 --- a/pkgs/applications/editors/emacs-modes/recipes-archive-melpa.json +++ b/pkgs/applications/editors/emacs-modes/recipes-archive-melpa.json @@ -31,20 +31,20 @@ "url": "https://git.sr.ht/~zge/nullpointer-emacs", "unstable": { "version": [ - 20190902, - 929 + 20200313, + 1542 ], - "commit": "87efcc058f40e8a38a613cb479a2affba9f0ebe5", - "sha256": "0cdh64z1mass9fl05n9xn1q82ka38iar27g5dsidkfhlg6wqxmlk" + "commit": "1d29192a3c28ba088d93410bfcdd4bee0abb6610", + "sha256": "02kmfzkrl35y599w5yal5d7rjb3xi02zhvb8q0m3iw4mbm16sw28" }, "stable": { "version": [ 0, - 1, - 1 + 3, + 0 ], - "commit": "129585c4096e78f46b741c7729915f666bfee501", - "sha256": "0jplfnp4cn5vgj99g0ks0g9k2ij8yz1h24c6ghbz0hxd5bh5g889" + "commit": "1d29192a3c28ba088d93410bfcdd4bee0abb6610", + "sha256": "02kmfzkrl35y599w5yal5d7rjb3xi02zhvb8q0m3iw4mbm16sw28" } }, { @@ -82,21 +82,20 @@ }, { "ename": "4clojure", - "commit": "7fabdb05de9b8ec18a3a566f99688b50443b6b44", - "sha256": "09bmdxkkp676sn1sbbly44k99i47w83yznq950nkxv6x8753ifgk", + "commit": "3fea8d290fe4d71b954ad6b68a8d182e40ee1e13", + "sha256": "1cqab8kh4varf5hasvhkia39fa8qmmqycica7mbcvp33n8w3941j", "fetcher": "github", - "repo": "losingkeys/4clojure.el", + "repo": "emacsorphanage/4clojure", "unstable": { "version": [ - 20131014, - 2207 + 20200123, + 2008 ], "deps": [ - "json", "request" ], - "commit": "3cdfd356c24cd3518397d29ae833f56a4d20b4ca", - "sha256": "1fybicg46fc5jjqv7g2d3dnj1x9n58m2fg9x6qxn9l8qlzk9yxkq" + "commit": "557eecb5da50fedd92840021c8b08d87dfdc782b", + "sha256": "19x653lzc1dxil4ix257hciidbdmbhaxhs6qhlkwi9ygjrlrgvnk" } }, { @@ -234,16 +233,16 @@ "repo": "abstools/abs-mode", "unstable": { "version": [ - 20191013, - 926 + 20200220, + 1701 ], "deps": [ "erlang", "flymake", "maude-mode" ], - "commit": "5332dc875e0a285f64dd075b204fb6de5ba719ad", - "sha256": "1p2nsc4in8w407irsfihm8q0fh5am8vrd53gg5q78hhybazr53cf" + "commit": "2db38537e9c481c38477997467bc98ee00607d7a", + "sha256": "006l73nacbr45y81ypj3x91nd1pnqppvgrlc6wmysma14lndazqx" }, "stable": { "version": [ @@ -284,10 +283,10 @@ }, { "ename": "ac-alchemist", - "commit": "ef9037aa41a8d9467838495bb235db32c19cc417", - "sha256": "02ll3hcixgdb8zyszn78714gy1h2q0vkhpbnwap9302mr2racwl0", + "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b", + "sha256": "0cakni8lvkhgdrzwa2cdqwnkbaiac1fn4j2lqgmx33z7hmrk8am6", "fetcher": "github", - "repo": "syohex/emacs-ac-alchemist", + "repo": "emacsorphanage/ac-alchemist", "unstable": { "version": [ 20150908, @@ -335,10 +334,10 @@ }, { "ename": "ac-capf", - "commit": "929da263f57b904c50f5f17b09d4c4b480999c97", - "sha256": "1drgk5iz2wp3rxzd39pj0n4cfmm5z8zqlp50jw5z7ffbbg35qxbm", + "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b", + "sha256": "08a1ywyv5l1npbkpmg3wmprnqk837bmbwjpcgf5di9a2j33xqbin", "fetcher": "github", - "repo": "syohex/emacs-ac-capf", + "repo": "emacsorphanage/ac-capf", "unstable": { "version": [ 20151101, @@ -517,10 +516,10 @@ }, { "ename": "ac-emoji", - "commit": "15f591f9cba367b071046fef5ae01bbbd0475ce3", - "sha256": "0msh3dh89jzk6hxva34gp9d5pazchgdknxjbi72z26rss9bkp1mw", + "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b", + "sha256": "06cwaasv2bsxr86wsjc21ggibcyqfp352wnc8i5fbr4ypd3vbk42", "fetcher": "github", - "repo": "syohex/emacs-ac-emoji", + "repo": "emacsorphanage/ac-emoji", "unstable": { "version": [ 20150823, @@ -548,10 +547,10 @@ }, { "ename": "ac-etags", - "commit": "fda9c7def8bc54af4ab17dc049dd94324c8f10fa", - "sha256": "0ag49k9izrs4ikzac9lifvvwhcn5n89lr2vb20pngsvg1czdyhzb", + "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b", + "sha256": "1qy6v37v7lx93lnpgh5bf2ccxpg2ldzwgdyigqmby9fy0wzwr8sf", "fetcher": "github", - "repo": "syohex/emacs-ac-etags", + "repo": "emacsorphanage/ac-etags", "unstable": { "version": [ 20161001, @@ -583,15 +582,15 @@ "repo": "xiaohanyu/ac-geiser", "unstable": { "version": [ - 20130929, - 647 + 20200318, + 824 ], "deps": [ "auto-complete", "geiser" ], - "commit": "502d18a8a0bd4b5fdd495a99299ba2a632c5cd9a", - "sha256": "0h2kakb4f5hgzf5l2kpqngalcmc4402lkg1pvs88c8z4rqp2vfvz" + "commit": "93818c936ee7e2f1ba1b315578bde363a7d43d05", + "sha256": "00n2qa26yilaj837n1yp6lbqa4gf30nkkbvanl7m9ih7k48ssqmw" }, "stable": { "version": [ @@ -815,10 +814,10 @@ }, { "ename": "ac-ispell", - "commit": "b41acb7387ebef9af2906fa16298b64d6431bfb0", - "sha256": "1vsy2qjh60n5lavivpqhhcpg5pk8zz2r0wy1sb65capn841zdi67", + "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b", + "sha256": "0npbrvwww6mi8q8x3cc6sf02x1b3ns2w7499lip7ymbr1zi9gdxg", "fetcher": "github", - "repo": "syohex/emacs-ac-ispell", + "repo": "emacsorphanage/ac-ispell", "unstable": { "version": [ 20151101, @@ -961,8 +960,8 @@ "auto-complete", "yasnippet" ], - "commit": "84aa4f0c4ffafa2c2fdfbcb16662abac0a571013", - "sha256": "1miz6nwsdbc9n3jc7qcb0mvf2yp0k9a7pyl0ifbdjjr2160m2lql" + "commit": "7b8db219080b714a7b8ba452ddb82bd08f7db152", + "sha256": "1zm04hqy6dg57swk05qvl5idzb11camcdmh7lrh6mqsvrcsvym2q" }, "stable": { "version": [ @@ -987,8 +986,8 @@ "repo": "xcwen/ac-php", "unstable": { "version": [ - 20191023, - 1045 + 20200103, + 656 ], "deps": [ "dash", @@ -998,8 +997,8 @@ "s", "xcscope" ], - "commit": "84aa4f0c4ffafa2c2fdfbcb16662abac0a571013", - "sha256": "1miz6nwsdbc9n3jc7qcb0mvf2yp0k9a7pyl0ifbdjjr2160m2lql" + "commit": "7b8db219080b714a7b8ba452ddb82bd08f7db152", + "sha256": "1zm04hqy6dg57swk05qvl5idzb11camcdmh7lrh6mqsvrcsvym2q" }, "stable": { "version": [ @@ -1021,10 +1020,10 @@ }, { "ename": "ac-racer", - "commit": "e4318daf4dbb6864ee41f41287c89010fb811641", - "sha256": "1vkvh8y3ckvzvqxj4i2k6jqri94121wbfjziybli74qba8dca4yp", + "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b", + "sha256": "0vxnc6q2khxf5xl3k8lwvjg5biqxasr4vm9k3c8033xwl6in299r", "fetcher": "github", - "repo": "syohex/emacs-ac-racer", + "repo": "emacsorphanage/ac-racer", "unstable": { "version": [ 20170114, @@ -1058,27 +1057,27 @@ "repo": "Andersbakken/rtags", "unstable": { "version": [ - 20181117, - 1949 + 20191222, + 920 ], "deps": [ "auto-complete", "rtags" ], - "commit": "f2633f565fc5e7e6958993ef105225f4e68e43ba", - "sha256": "1bjgr7wa82ccrc25r7agfaq3iz7xlp1qchvkmkx3xy59jv4yafjz" + "commit": "d370c09007d299dc6b6aae719bf728b95dd426c5", + "sha256": "0hakpd1dwhn2nkfhx4hli0l7hf3p1g8vpyrrczq45smfsz73d96x" }, "stable": { "version": [ - 3, - 23 + 2, + 38 ], "deps": [ "auto-complete", "rtags" ], - "commit": "7169ed577d676690a3c6f0025b54e8477d80eacf", - "sha256": "1i94dizg3wvkvq8c2pf5bzkx8zwzcfi4p3l73c779y145bygssnq" + "commit": "9687ccdb9e539981e7934e768ea5c84464a61139", + "sha256": "1r6l7dgr2ch586zrdi5l8fhdj4qdva8ldz7cjvi2byc2pd2xs8rx" } }, { @@ -1213,11 +1212,11 @@ "repo": "tam17aki/ace-isearch", "unstable": { "version": [ - 20190630, - 1552 + 20200205, + 1105 ], - "commit": "e296077a5f74782a2d103b08551e0d673217393f", - "sha256": "05cd35rnglz5a1z03s7iqa4sbar1b35mwrx821y7pg7mxl5xbb14" + "commit": "cb6d7306cb5d2d4d36cb3803c0eaf779d88c2666", + "sha256": "1lrgjz7a4s50shc74kx6k958i1ayv5pfncsrjb3n87bvrx9wq6g3" }, "stable": { "version": [ @@ -1361,14 +1360,14 @@ "repo": "abo-abo/ace-link", "unstable": { "version": [ - 20191017, - 941 + 20200210, + 2031 ], "deps": [ "avy" ], - "commit": "483d0ea9d1e13884f13e54093b41082884325878", - "sha256": "1m4zcw27m99jlbjy5dyxxp4069pgwswqhyrps3c3zsnzs8hf1j0z" + "commit": "9b22793789263b2e2fc06ca8b6073bb01211df9b", + "sha256": "0ik2v881rnik58zvxczjg847fvc9vf493h85rv8q72hb7zi9p0gy" }, "stable": { "version": [ @@ -1450,8 +1449,8 @@ "deps": [ "avy-menu" ], - "commit": "708e160747870657ea46815e3913f2c4805737e1", - "sha256": "186464acrg1k80s4mnmi2dj9fjn03a6knb9hzm85prk65wigy2cs" + "commit": "02b22bdb40a5828dbd0a2af290034adb761743f0", + "sha256": "12b6s99d0wzs4q827kn5zr56vrp3x1kf2pxp4cr8z5hikylfswcs" }, "stable": { "version": [ @@ -1474,44 +1473,44 @@ "repo": "abo-abo/ace-window", "unstable": { "version": [ - 20191022, - 1203 + 20200311, + 1025 ], "deps": [ "avy" ], - "commit": "edbbb1b77c3fb939e4d9057443bc1897321d0095", - "sha256": "1n8w6svks0pmslzg5zz1sny4hfnvych06cwzs3bvbmnfm4x6maqh" + "commit": "7003c88cd9cad58dc35c7cd13ebc61c355fb5be7", + "sha256": "0f3r40d5yxp2pm2j0nn86s29nqj8py0jxjbj50v4ci3hsd92d8jl" }, "stable": { "version": [ 0, - 9, + 10, 0 ], "deps": [ "avy" ], - "commit": "eef897e590c4ce63c28fd29ebff3c97aec8a69ae", - "sha256": "07mcdzjmgrqdvjs94f2n5bkrf5vrq2fwzz256wbm3wzqxqkfy1q6" + "commit": "7003c88cd9cad58dc35c7cd13ebc61c355fb5be7", + "sha256": "0f3r40d5yxp2pm2j0nn86s29nqj8py0jxjbj50v4ci3hsd92d8jl" } }, { "ename": "achievements", - "commit": "83ec19a4ebac6b2d0fd84939b393848f82620978", - "sha256": "1pwlibq87ph20z2pssk5hbgs6v8kdym9193jjdx2rxp0nic4k0cr", - "fetcher": "bitbucket", + "commit": "2790c00a79df237cf853a00f094fdeca9e532a9a", + "sha256": "1cl2rlmfhs5mhh5rjdr66a0mszy9hb50z8fxn1c081cnqd6iw8a2", + "fetcher": "gitlab", "repo": "gvol/emacs-achievements", "unstable": { "version": [ - 20150530, - 1826 + 20150531, + 1317 ], "deps": [ "keyfreq" ], - "commit": "18a422131c12aff723dde17bae08989efd93232e", - "sha256": "0nk1zhqx0lvckjc98b36125148zgx1l2axln8gvkdwlhrd2cc6vj" + "commit": "c8275ee492d56255999d58f2988129ab29145182", + "sha256": "14p9lmnrpsnx94ycvsqmfxnk5kws0cman4a6fbnikl35ma8zc01x" } }, { @@ -1564,8 +1563,8 @@ "repo": "pauldub/activity-watch-mode", "unstable": { "version": [ - 20190916, - 1212 + 20200130, + 805 ], "deps": [ "cl-lib", @@ -1573,14 +1572,14 @@ "projectile", "request" ], - "commit": "fb7e415484fa65f03660f59e2799bc2bcb9441ff", - "sha256": "1dzla3j6s3s5fnh8y9xq0k869fbdmzvqgbbvk6dphhzwi1wwhlzm" + "commit": "153d93eac0b9511dc00b50c2ba409c085b58602b", + "sha256": "18idfbdrk3b2y573g2ld5sqkb9j216ixik679qj7qdnwa2b7m2xx" }, "stable": { "version": [ 1, 1, - 0 + 1 ], "deps": [ "cl-lib", @@ -1588,8 +1587,8 @@ "projectile", "request" ], - "commit": "fb7e415484fa65f03660f59e2799bc2bcb9441ff", - "sha256": "1dzla3j6s3s5fnh8y9xq0k869fbdmzvqgbbvk6dphhzwi1wwhlzm" + "commit": "153d93eac0b9511dc00b50c2ba409c085b58602b", + "sha256": "18idfbdrk3b2y573g2ld5sqkb9j216ixik679qj7qdnwa2b7m2xx" } }, { @@ -1600,20 +1599,26 @@ "repo": "gonewest818/adafruit-wisdom.el", "unstable": { "version": [ - 20180225, - 52 + 20200217, + 306 ], - "commit": "aafc01726f1b3160321d40160298a0e1b054b382", - "sha256": "18p55zghycsx88dn0iw610fklkhi5chzycrpjb4xzs5x1l5l2v08" + "deps": [ + "request" + ], + "commit": "86bb7249bd4b0c8ebaf749f69f00c8faeff11063", + "sha256": "062m653pyzddwjf75a6clsdkihfg35b3phbbff6vdyymg77608f2" }, "stable": { "version": [ 0, - 2, - 1 + 3, + 0 ], - "commit": "2b353f9029f359eb4eb4f0364bd2fbbedf081e42", - "sha256": "0zyqnwmrj7yigk1z9baqxmzxnwhpxfjz9r1gl090harl69hdp67d" + "deps": [ + "request" + ], + "commit": "50414eaac3dbeb67a1329833b912d26b164873eb", + "sha256": "0s6xrg9g7f4cv745k4zmxhgqr68qajfr6hi6wpyab330y0hd1m0v" } }, { @@ -1844,11 +1849,11 @@ "repo": "vietor/agtags", "unstable": { "version": [ - 20190709, - 950 + 20191112, + 142 ], - "commit": "f81b70412216277f4a3a78a9ad9042279d624e6f", - "sha256": "0481zjrmg834d2ik0vpdan9l083q17ln13rcg4hnbhl1dmzz960p" + "commit": "8813eb055dfd3faf1021c7d02fed0dabd8e518c1", + "sha256": "0xj394fiqsyh32g21mcp64srs8dlf0ixaildyla1gm27v8cgiakb" } }, { @@ -1859,26 +1864,26 @@ "repo": "takaxp/ah", "unstable": { "version": [ - 20191004, - 250 + 20191212, + 652 ], - "commit": "218b9ffacb615e7a307ee30c18d072ce3e33aad6", - "sha256": "16ak8bbha079lkg7gxxngysry6bgilqi3dz4aa2yd5w9y25rv6va" + "commit": "938c78327aad94d5f8e8d86ffd9808a687f3e953", + "sha256": "1zzhy5ajr6ivmj4jbbmaznxfqgxl4xy21s2r4wip668w8kw02h4m" } }, { "ename": "ahg", - "commit": "5b7972602399f9df9139cff177e38653bb0f43ed", - "sha256": "0kw138lfzwp54fmly3jzzml11y7fhcjp3w0irmwdzr68lc206lr4", - "fetcher": "bitbucket", - "repo": "agriggio/ahg", + "commit": "eb2493e54641d6ca54461f237d3b7d30067a639f", + "sha256": "1za0hsk6mz6h958mqh4wcv3jv02qdbwi28cwnk90fpkkn43grwdi", + "fetcher": "git", + "url": "https://bitbucket.org/agriggio/ahg", "unstable": { "version": [ - 20190903, - 1349 + 20200304, + 741 ], - "commit": "c85d951d7376425156911e5f3cd7535b4ecfbfc3", - "sha256": "0j5h1yjhg7lj3zxznfzy7mqj2c2r4cwdg8xik3wlk2cnm27fhgz6" + "commit": "0ece48646ef7a8c813005934cc13f984b9998707", + "sha256": "0ypck79bmv4pa8l555kgij69jbpkv4fz9w91qs30lacjmrj0nha5" } }, { @@ -1889,11 +1894,11 @@ "repo": "ralesi/ahk-mode", "unstable": { "version": [ - 20190323, - 623 + 20191221, + 2202 ], - "commit": "66e02a3b44d672787b1f13a30008801a9efca65b", - "sha256": "15x1hwar0i89y2vbjrfp7d0b2fj48zqribfm4323k1fc18hbzrb7" + "commit": "377f79484cc43458f66c1ba5a61459b77e363591", + "sha256": "0vf9pg2yjldzm4nzvzw0w2cvrnxj4xpm3ymsnpzdd55mp7q3y1ag" }, "stable": { "version": [ @@ -2040,14 +2045,14 @@ "repo": "wlemuel/alarm-clock", "unstable": { "version": [ - 20190212, - 507 + 20191204, + 716 ], "deps": [ "f" ], - "commit": "5fb19ed061d6ee92ac0df1f1ec766c155d50867d", - "sha256": "0w43s1rh7j2qnm32db6pzqr04z7jm2lfbdz0lzrx4j61hnwmsx9g" + "commit": "644f331071f8b09a898fae490541908b5054d2e6", + "sha256": "0yf2mikpxnfl673rv0w7xp1cvlkgvlmzgaixva3ppz6f0wg3vgz6" }, "stable": { "version": [ @@ -2153,16 +2158,16 @@ "repo": "jwiegley/alert", "unstable": { "version": [ - 20190816, - 2205 + 20200303, + 2118 ], "deps": [ "cl-lib", "gntp", "log4e" ], - "commit": "b5ef49bbb871867ac03d2943a720576336cd7025", - "sha256": "00lhx0gd1myzjfp59hjk0z44xf0cr4njvzwjdacahim7gz3hhicd" + "commit": "7046393272686c7a1a9b3e7f7b1d825d2e5250a6", + "sha256": "1s93ijkax0s78qn79c364ainmq7jq4gc95akl9wra642ql6hz3iq" }, "stable": { "version": [ @@ -2219,14 +2224,14 @@ "repo": "rubikitch/all-ext", "unstable": { "version": [ - 20170115, - 205 + 20200315, + 1443 ], "deps": [ "all" ], - "commit": "9f4ef84a147cf4e0af6ef45826d6cb3558db6b88", - "sha256": "0gdrsi9n9i1ibijkgk5kyjdjdmnsccfbpifpv679371glap9f68b" + "commit": "c865c62506af2c9edc7705a7c24dc8b70d5d4de2", + "sha256": "16r0ll7wsfsrymwm78gnnrfawafan9gbwiymqfmij3m9riqss7y0" } }, { @@ -2237,26 +2242,26 @@ "repo": "domtronn/all-the-icons.el", "unstable": { "version": [ - 20191025, - 43 + 20200326, + 1553 ], "deps": [ "memoize" ], - "commit": "605deef5560429ccf66063ee9337b24c68820397", - "sha256": "15ibvcqn678visphmaffy5yh6jaczzzhhlxj4vnsywg5bdzxch3m" + "commit": "f6cbb51c152dd60be5718218600a4ec14d9fd6cc", + "sha256": "0a59m1vv0s7czsccfalqyyp3v4lhydn1wbvyxkzy8i9fsjqbyxsa" }, "stable": { "version": [ - 3, - 2, - 0 + 4, + 0, + 1 ], "deps": [ "memoize" ], - "commit": "52d1f2d36468146c93aaf11399f581401a233306", - "sha256": "1sdl33117lccznj38021lwcdnpi9nxmym295q6y460y4dm4lx0jn" + "commit": "d363bb3e73909be013fcf35e1458bb654ec5bbaa", + "sha256": "0yh7gnv9xfqn8q4rzaa6wpyn9575vyfxy7d3afly2mqsb367fgm5" } }, { @@ -2267,14 +2272,14 @@ "repo": "jtbm37/all-the-icons-dired", "unstable": { "version": [ - 20170418, - 2131 + 20200327, + 758 ], "deps": [ "all-the-icons" ], - "commit": "980b7747d6c4a7992a1ec56afad908956db0a519", - "sha256": "1pvbgyxfj4j205nj1r02045f1y4wgavdsk7f45hxkkhms1rj8jyy" + "commit": "816987d339630e43f77a5a64ef308e95d341dda7", + "sha256": "01wgxdw222pz2sv7x9jwlislkasaw01bkq1nkpdp4jwl816aza8l" } }, { @@ -2296,6 +2301,36 @@ "sha256": "0yi3nbhx7cdxq2192kh5ra2n0a3qg20p342prz3a0bm3w7q2ym11" } }, + { + "ename": "all-the-icons-ibuffer", + "commit": "3b3899fbae1e54e4385e1edfc8cc88d5ff0080d1", + "sha256": "08p4jj932x6xrq8ylx1hl9a3i2x8mm6l1jxi21akgjszf4s41mix", + "fetcher": "github", + "repo": "seagle0128/all-the-icons-ibuffer", + "unstable": { + "version": [ + 20200319, + 1625 + ], + "deps": [ + "all-the-icons" + ], + "commit": "3ee9e32f480329e94e45f86538343b0ddc7ddd4f", + "sha256": "1cs9027q26nfm5k3182mbmmhj8s8y2nv47gsyamwpjqdma0sbl73" + }, + "stable": { + "version": [ + 1, + 2, + 0 + ], + "deps": [ + "all-the-icons" + ], + "commit": "ee0409588ebaee1aada351f1a75abcdc999ac9e2", + "sha256": "0afq5wjh74ks8hrsb9m41h1m9gyc0hvp2qmy4b1ls9kffgnk7ri2" + } + }, { "ename": "all-the-icons-ivy", "commit": "9496e6bb6f03f35444fb204860bc50e5e1b36214", @@ -2311,8 +2346,8 @@ "all-the-icons", "ivy" ], - "commit": "babea626db20773de4c408acb2788e2b9c8277e3", - "sha256": "03fssygwia1gv35y6mzifnkg5cb4klaq240jfqmyfji9jq95jzrd" + "commit": "a70cbfa1effe36efc946a823a580cec686d5e88d", + "sha256": "17h7gscrvdi9rygagwzcqzbw6dbfvwmv7jbi8pjkj1c06p3kbq8i" }, "stable": { "version": [ @@ -2328,6 +2363,38 @@ "sha256": "03fssygwia1gv35y6mzifnkg5cb4klaq240jfqmyfji9jq95jzrd" } }, + { + "ename": "all-the-icons-ivy-rich", + "commit": "66c873f1b542404d8982385ff7f6defe5b68f0ff", + "sha256": "16q294s61310aisqkhznzml2g05x24grzm93ga1wnyksn20wm9l2", + "fetcher": "github", + "repo": "seagle0128/all-the-icons-ivy-rich", + "unstable": { + "version": [ + 20200324, + 550 + ], + "deps": [ + "all-the-icons", + "ivy-rich" + ], + "commit": "a9a4389c1930a5a071857b4d450eaecb21f4d6b9", + "sha256": "133vl3awl3qxxd2ka8zdr33v6s8hrjpsv4bv2db5j8jz35m0hx9d" + }, + "stable": { + "version": [ + 1, + 2, + 0 + ], + "deps": [ + "all-the-icons", + "ivy-rich" + ], + "commit": "3e02da9a166df7ebea25aae476efd7b8d74d63e0", + "sha256": "0p91yvpqy7xjkz2mcpq6c8kjfxqfw9byxprqg2qqnzg421c5yv6x" + } + }, { "ename": "almost-mono-themes", "commit": "71ca87a0dd28f911dd988e1c208896b1ec5bfcc7", @@ -2336,11 +2403,11 @@ "repo": "cryon/almost-mono-themes", "unstable": { "version": [ - 20190527, - 654 + 20200211, + 2126 ], - "commit": "c3a85c1a665530a5d830665969725cdba8eceb75", - "sha256": "034k32xkr5ma415hlkbl35z0jxc4sa1inf87hg3y6lrlfl83fyjh" + "commit": "2f5935a1a9d042751c7135cac79875886edb2556", + "sha256": "1q1ry37rcpzwwl2bwf3j8nmhap7v72fg0hdzxlls89gm3jl3nb97" } }, { @@ -2378,6 +2445,15 @@ 20190701, 1246 ], + "commit": "ded8cbff05f4f2fc4d023c5ee08ebe8b1bdb9ca9", + "sha256": "1v8sir3c0akv5sb8yg01zh0n6qqd4hp95sahbx01z1200g0phcaw" + }, + "stable": { + "version": [ + 0, + 0, + 4 + ], "commit": "7dcd9cdcc41cfb991801ea1e2f5b3c925a5309ee", "sha256": "19xg4ng3p49zvn1y7vagrfiiwvc2fynwibr6cmj7qam1y64lw90c" } @@ -2431,11 +2507,11 @@ "repo": "crystal-ameba/ameba.el", "unstable": { "version": [ - 20190720, - 1845 + 20200103, + 1454 ], - "commit": "8383f07d760a31a0737be9b7bdaff2f1cff67bfd", - "sha256": "066ccpaszidjvwy18bvkrf37ws60363cnbvcl1sfd7k6nynbdar6" + "commit": "0c4925ae0e998818326adcb47ed27ddf9761c7dc", + "sha256": "0jh0pfyqdks9xk43765vgm4569a8ny01pk3gy2p3vr5gdgfdm4a3" }, "stable": { "version": [ @@ -2492,8 +2568,8 @@ 20180207, 1745 ], - "commit": "536966adf882446165a1f756830028faa792c7a9", - "sha256": "07bpv8dag40qjnm5000pgzpazj4whfxf93x2vprz26sg3mjfx0nf" + "commit": "f5a163626e04abda2d3c168f703c3f330f302a7c", + "sha256": "1z08mdl3i4nfs4ln64sks3b4vbir4r8czscrdqyvq4izr6j05j2f" } }, { @@ -2511,6 +2587,24 @@ "sha256": "18z9jl5d19a132k6g1dvwqfbbdh5cx66b2qxlcjsfiqxlxglc2sa" } }, + { + "ename": "amread-mode", + "commit": "2155dbd9bdf7b1f6f500c11ad1796c2ba2ddadec", + "sha256": "19wafb0aszphdmx9ayiazvq2avj9kqhanszh714n397810ak7k0v", + "fetcher": "github", + "repo": "stardiviner/amread-mode", + "unstable": { + "version": [ + 20200322, + 843 + ], + "deps": [ + "cl-lib" + ], + "commit": "76ebe8d56b4d19f2bf75f54479f0e7ecc9cbaac9", + "sha256": "09jmllb9an992mzgncxral8i7j532l8i80yvvqwaqwv9azwab5sd" + } + }, { "ename": "amx", "commit": "c55bfad05343b2b0f3150fd2b4adb07a1768c1c0", @@ -2519,25 +2613,25 @@ "repo": "DarwinAwardWinner/amx", "unstable": { "version": [ - 20190419, - 330 + 20200215, + 1901 ], "deps": [ "s" ], - "commit": "b46e77d8ef9d1edf225e67055001f7e85048f842", - "sha256": "0hrgq6kmfqx21y0dpvhwd82rap75lnn2lzlhria893yvqc7phzn5" + "commit": "e512e74e8368f9b1cf83bee16dd2522f3b1dbeea", + "sha256": "08vx7rd36j4ls7a7i2vn7mf74vbzcyrzzv0wzqzyb8ihv4qhjc0g" }, "stable": { "version": [ 3, - 2 + 3 ], "deps": [ "s" ], - "commit": "260e7c013690d412ec8d965c282572505596636d", - "sha256": "0bb8y1dmzyqkrb4mg6zndcsxppby3glridv2aap2pv05gv8kx7mj" + "commit": "394734e42aa8c43940df358e77a69248b42f2a9c", + "sha256": "0ikjzs119g57cwh2v3jmy63lggqc0ib99q5gsl93slkk4y2ihavw" } }, { @@ -2548,8 +2642,8 @@ "repo": "pythonic-emacs/anaconda-mode", "unstable": { "version": [ - 20191001, - 2056 + 20200129, + 1718 ], "deps": [ "dash", @@ -2557,8 +2651,8 @@ "pythonic", "s" ], - "commit": "1b31c03756b989b674969bb1eb45ac809e59313b", - "sha256": "0h6afysc7c5a379bd9scdb27g0r1ncqinz7gnspqlqri205dmj33" + "commit": "10299bd9ff38c4f0da1d892905d02ef828e7fdce", + "sha256": "0s5pxfjcsmyrqc5pa2lqx6mxzwy3g8mc3iaxbj313sn1nly26vjw" }, "stable": { "version": [ @@ -2709,6 +2803,21 @@ "sha256": "0h9i0iimanbvhbqy0cj9na335rs961pvhxjj4k8y53qc73xm102a" } }, + { + "ename": "anki-connect", + "commit": "1f2c391b543a6b98b9f171f8638c003737424e52", + "sha256": "09mvw1qppn1nrjyn7gfq1bfxn9hyh5kpxz30m1rrfwjjgw4lw4x6", + "fetcher": "github", + "repo": "lujun9972/anki-connect.el", + "unstable": { + "version": [ + 20191123, + 1858 + ], + "commit": "1324f0c248aa2c6e73d6cf93fad6119d699f7dae", + "sha256": "055nzb0dki4fmgmfhq83x7gciyp74r36a233hnl9lyd8wmb2hvqf" + } + }, { "ename": "anki-editor", "commit": "8155d649e4b129d0c72da6bb2b1aac66c8483491", @@ -2724,8 +2833,8 @@ "dash", "request" ], - "commit": "084ffad14fa700ad1ba95d8cbfe4a8f6052e2408", - "sha256": "0zjd5yid333shvjm4zy3p7zdpa09xcl96gc4wvi2paxjad6iqhwz" + "commit": "546774a453ef4617b1bcb0d1626e415c67cc88df", + "sha256": "1if610hq5j8rbjh1caw5bwbgnsn231awwxqbpwvrh966kdxzl4qf" } }, { @@ -2763,6 +2872,26 @@ "sha256": "0ryyyihvvrcipj2bkx24cx1ibgcymnsbn79ibvmhb3wbad3hr072" } }, + { + "ename": "anki-vocabulary", + "commit": "2ee1509faf58c4ea1bddcfd6f103e63c5c466c69", + "sha256": "11rl81s268l605lwzni29w366h2csnj4snl0nq12m9mvywv2dx2n", + "fetcher": "github", + "repo": "lujun9972/anki-vocabulary.el", + "unstable": { + "version": [ + 20200103, + 325 + ], + "deps": [ + "anki-connect", + "s", + "youdao-dictionary" + ], + "commit": "863fe0219577f996ab126f1b7902db3c2cc59b2b", + "sha256": "0mfch10hvs5czgc3lj75s02bbf36gfdk3xvry717g8gqqa37j581" + } + }, { "ename": "annalist", "commit": "2298cf2894029267c77a8aa06f4fa8d9d7c3e4f0", @@ -2801,11 +2930,11 @@ "repo": "bastibe/annotate.el", "unstable": { "version": [ - 20191022, - 633 + 20200317, + 1703 ], - "commit": "54aefdec8d7d366d0987aec9242f035a52c54aa2", - "sha256": "11iqz6kncnzcnmxk2m037pmyflv6svq32r52cjw254fc3dvm39i0" + "commit": "44b378b16ad407c36e8cf728e671c17116d854b6", + "sha256": "1xhmgadi4maci25si3mf854d0ammz7w9l317r4m81v1gkdfvv8wi" }, "stable": { "version": [ @@ -2954,20 +3083,26 @@ "repo": "zellio/ansible-vault-mode", "unstable": { "version": [ - 20190126, - 1936 + 20200305, + 2240 ], - "commit": "4fe490f524b79748c9f23026bb88d8f516b4ef40", - "sha256": "17kbjlssxa9b2fcp8vf2xs2k5y6jgpw277mj2gbv173b0i7v1fjd" + "deps": [ + "seq" + ], + "commit": "c4fe4b0af2ac7f9d32acee234716ab31fa824cef", + "sha256": "1xif6vv53rpc2k974pqckmzck55zhdhzyfl54kdp25w93xbs3js4" }, "stable": { "version": [ 0, - 3, - 4 + 4, + 1 ], - "commit": "57cf7e6da30250587c28ebf592d7bca9a3bae1df", - "sha256": "1m9r3vicmljypq6mhgr86lzgi26dnnlp7g0jbl9bjdk48xfg79wb" + "deps": [ + "seq" + ], + "commit": "9a50ed6b73222e9973c08d79b6955e57ed3b7d97", + "sha256": "1xif6vv53rpc2k974pqckmzck55zhdhzyfl54kdp25w93xbs3js4" } }, { @@ -3065,17 +3200,17 @@ }, { "ename": "anzu", - "commit": "855ea20024b606314f8590129259747cac0bcc97", - "sha256": "181hzwy9bc0zfhax26p20q9cjibrmi9ngps5fa3ja5g6scxfs9g1", + "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b", + "sha256": "0m9wwq5fl7g6gfzv6m9hlrjf8nvqn1q7nqif1x93sh7q3vfwgxzl", "fetcher": "github", - "repo": "syohex/emacs-anzu", + "repo": "emacsorphanage/anzu", "unstable": { "version": [ - 20190303, - 1701 + 20200328, + 2019 ], - "commit": "592f8ee6d0b1bc543943b36a30063c2d1aac4b22", - "sha256": "123zbnl36vi0gkffd6m6mkskhmjmm0am23j45w1mbmfyq03r1d8b" + "commit": "61cb32aa61f9bd088c519ea3cc96b81e241efed7", + "sha256": "1b2zjich6mvypycsrz5jkpv5mbaj77jka17vcc5ss2390dad92f8" }, "stable": { "version": [ @@ -3128,6 +3263,30 @@ "sha256": "1grs2x51k8pa6sgfa82s5pwwdfv7zw46ccw0zvd2rvzbhpq21p2z" } }, + { + "ename": "apdl-mode", + "commit": "2fd3f323919b8eebba081689c93bb918d0af1359", + "sha256": "11in64hcs5gmvviv986043r68l34byi31v5vibwqx63qg8k3gqfn", + "fetcher": "github", + "repo": "dieter-wilhelm/apdl-mode", + "unstable": { + "version": [ + 20200329, + 2024 + ], + "commit": "af7764828555486a78727194a001193d03dc12f0", + "sha256": "1p5w7kzmmsc3ayh4rvmd0a9g9wchvddhr22dx3jl7dx42s3sig5m" + }, + "stable": { + "version": [ + 20, + 3, + 0 + ], + "commit": "17bbc63239d2b791887c3d263fa7b4e8ea9d0ccb", + "sha256": "0g9nf0853c56w8vpzys4rxw6ki887ajr3h7cgqb295aa16bg65x7" + } + }, { "ename": "apel", "commit": "4976446a8ae40980d502186615902fc05c15ec7c", @@ -3151,25 +3310,25 @@ "repo": "w-vi/apib-mode", "unstable": { "version": [ - 20170520, - 1358 + 20200101, + 1017 ], "deps": [ "markdown-mode" ], - "commit": "6cc7c6f21b8e415b1718bb6a07ab2182e9e9dde6", - "sha256": "1717f78kaqkmbhfwb9kzsv5wi2zabcbwb4wh1jklhcaalvmk3z7d" + "commit": "c6dd05201f6eb9295736d8668a79a7510d11159e", + "sha256": "0f5zph67h0pr445ykllz0pix2dg2kdxl0g5mhxaggdydizf24p45" }, "stable": { "version": [ 0, - 7 + 8 ], "deps": [ "markdown-mode" ], - "commit": "6cc7c6f21b8e415b1718bb6a07ab2182e9e9dde6", - "sha256": "1717f78kaqkmbhfwb9kzsv5wi2zabcbwb4wh1jklhcaalvmk3z7d" + "commit": "c6dd05201f6eb9295736d8668a79a7510d11159e", + "sha256": "0f5zph67h0pr445ykllz0pix2dg2kdxl0g5mhxaggdydizf24p45" } }, { @@ -3183,8 +3342,8 @@ 20180602, 2231 ], - "commit": "e4c9c57d6620a788ec8a715ff1bb50542edea3a6", - "sha256": "0xpb8mmssajy42r2h1m9inhv1chx19wkp5p0p63nwpk7mhjj8bis" + "commit": "a4fb21d96027369307b22439a4a6c765ee272f44", + "sha256": "19v92dgbwrb66bj5zs4fh0knba286i32afi42mvjmgagf228x6ka" }, "stable": { "version": [ @@ -3221,10 +3380,10 @@ }, { "ename": "applescript-mode", - "commit": "576e42b33a5245e1aae0f0d879fd18762342db32", - "sha256": "0rj03xw8yx79xj9ahdwfxicxna0a0lykn2n39xng5gnm4bh2n6z4", + "commit": "3fea8d290fe4d71b954ad6b68a8d182e40ee1e13", + "sha256": "1ihf4b2r14ikjkqpibqv1ipjgdq7q1pkhw7rs3ph1gzg5j552waf", "fetcher": "github", - "repo": "ieure/applescript-mode", + "repo": "emacsorphanage/applescript-mode", "unstable": { "version": [ 20090321, @@ -3242,11 +3401,11 @@ "repo": "vietor/aproject", "unstable": { "version": [ - 20190724, - 600 + 20190730, + 152 ], - "commit": "a044d8e612a8973f958b6a4e03cefca2194874de", - "sha256": "1gpwx704bvza8ccly1vph9b3c146pxry2rldln8g66hfp3v49fw0" + "commit": "b534e2a62738ad59a8a3cddd386466c145dad3b2", + "sha256": "08nhfa845cn20kx0q9rchs24imfmvpywi1b8mn40d1lw587yr519" }, "stable": { "version": [ @@ -3265,11 +3424,11 @@ "repo": "waymondo/apropospriate-theme", "unstable": { "version": [ - 20190724, - 1729 + 20191220, + 2017 ], - "commit": "c46432a5559630380abee9ead387eba2db28ad15", - "sha256": "102i0qq3p28rgc870j4nviw7ns5ldxxybq3lg4y723idrim71ypc" + "commit": "543341f0836b24e001375c530c4706e9345ec1e3", + "sha256": "03917db85x4c2a1ba94wmik21wwnwf9xpz6wc0d0ay0zkkvqsn5g" }, "stable": { "version": [ @@ -3296,6 +3455,25 @@ "sha256": "1svicgmiibnim47fhlik3fgs0d6427and5h61s3rhvfj3352d9li" } }, + { + "ename": "aqi", + "commit": "4218547747cdbe33aab3c59338cd2dc9da869cda", + "sha256": "1dzvf3i648ssavrdy4v1ckvf2gkywa3cc4zgddb8dj4ihpivm6bc", + "fetcher": "github", + "repo": "zzkt/aqi", + "unstable": { + "version": [ + 20200215, + 1334 + ], + "deps": [ + "let-alist", + "request" + ], + "commit": "5fe8b035b2b6bc165728444bb8e9792d14b7409d", + "sha256": "1wbpjz5jgpph6c6wk29dxz8r368ai6jx9cb4y2mdcpngig8kmazm" + } + }, { "ename": "arc-dark-theme", "commit": "f8c9060669b262f0588643bd8758edac578834bc", @@ -3339,11 +3517,11 @@ "repo": "rubikitch/archive-region", "unstable": { "version": [ - 20140201, - 2342 + 20200316, + 1425 ], - "commit": "0d357d4c42a6a248c457f358f81b20fd20fede2f", - "sha256": "03pmwgvlxxlp4wh0sg5czpx1i88i43lz8lwdbfa6l28g1sv0f264" + "commit": "53cd2d96ea7c33f320353982b36854f25c900c2e", + "sha256": "1c3ji0asnhdls8pa5hbqg65kc35jc6yndib7cx1zvnpb8pjlvbbr" } }, { @@ -3483,6 +3661,24 @@ "sha256": "1yvirfmvf6v5khl7zhx2ddv9bbxnx1qhwfzi0gy2nmbxlykb6s2j" } }, + { + "ename": "ascii-table", + "commit": "d6d5599ff68bf9125a9825ddd2a00009242bf2e1", + "sha256": "0p3dyxzs5xaq17209nnf2cqs87hz2b1k3x1nkq4jvhn71v4jcaj1", + "fetcher": "github", + "repo": "lassik/emacs-ascii-table", + "unstable": { + "version": [ + 20200329, + 1744 + ], + "deps": [ + "cl-lib" + ], + "commit": "572b62c8305b8c26082a17e15bc2f53066ddcb5a", + "sha256": "1k1wfbwzn9gjv7hmc7ffr3r211vxrxassryar6gnajmj9xbzwcgi" + } + }, { "ename": "asilea", "commit": "858e673c66e876d80f41d47d307c944d7bdb147d", @@ -3539,25 +3735,43 @@ "repo": "phillord/assess", "unstable": { "version": [ - 20190102, - 1011 + 20200211, + 1817 ], "deps": [ "m-buffer" ], - "commit": "0781fd79c4040dbceed42dc79edab4ec661c2593", - "sha256": "15ismdk8fl6xjgkjh9nkn8kgg7rpy2ra7924r1iddlfs2q8l8p4w" + "commit": "5bac045b273623772b6a2d820997d50f7ab4e466", + "sha256": "0mq59wz9anvywazl7d01fis1z7z7fsp9c7pymrc8rgmz77xpwnqx" }, "stable": { "version": [ 0, - 5 + 6 ], "deps": [ "m-buffer" ], - "commit": "0781fd79c4040dbceed42dc79edab4ec661c2593", - "sha256": "15ismdk8fl6xjgkjh9nkn8kgg7rpy2ra7924r1iddlfs2q8l8p4w" + "commit": "5bac045b273623772b6a2d820997d50f7ab4e466", + "sha256": "0mq59wz9anvywazl7d01fis1z7z7fsp9c7pymrc8rgmz77xpwnqx" + } + }, + { + "ename": "astyle", + "commit": "b495f29653edd15cef8eb3c9ea4d8aea35b0ac75", + "sha256": "0vchbm2lb9qa66fspyylyv0snmrxjfpzc332j0k7pkp6cmi08fnh", + "fetcher": "github", + "repo": "storvik/emacs-astyle", + "unstable": { + "version": [ + 20200328, + 616 + ], + "deps": [ + "reformatter" + ], + "commit": "04ff2941f08c4b731fe6a18ee1697436d1ca1cc0", + "sha256": "0midga1dz9yl7mzn6syb3iwnfpzvnfpqnxi9rsv63rqnrm36qy4q" } }, { @@ -3571,8 +3785,8 @@ 20191024, 1100 ], - "commit": "5ca12cc51bb02b5926adf9a7976ba9ca08a1ea21", - "sha256": "16cwpzbi8xpmw25xnn9535djpgwwdjv4q4yh47mqfav3x5nqwgpk" + "commit": "ec4bf74de602b97df1f306d51acf4cda45184aac", + "sha256": "1j505ijrgd0rwh69jl7677sgf5ryjwp160nrp0w0bskisrf028d7" } }, { @@ -3583,20 +3797,20 @@ "repo": "jwiegley/emacs-async", "unstable": { "version": [ - 20191009, - 1018 + 20200113, + 1745 ], - "commit": "67c369555de998eaabd60056dead038c6c50b8fd", - "sha256": "0hhpyxb3d531jb2f3wvzx25183f0anm8nxv6mh0p825q2gkm6ly7" + "commit": "86aef2c38e7d35e8509b7feeee3e989d825eba91", + "sha256": "1slxlpxjggyg5q8xppn9csh54j93b2hc4v8lcn85ymw2hp3rsib9" }, "stable": { "version": [ 1, 9, - 3 + 4 ], - "commit": "caad15ce64c1aac5e17d480c59ee6c85ebcb6bb2", - "sha256": "1zsnb6dy8p6y68xgidv3dfxaga4biramfw8fq7wac0sc50vc98vq" + "commit": "67c369555de998eaabd60056dead038c6c50b8fd", + "sha256": "0hhpyxb3d531jb2f3wvzx25183f0anm8nxv6mh0p825q2gkm6ly7" } }, { @@ -3607,14 +3821,59 @@ "repo": "chuntaro/emacs-async-await", "unstable": { "version": [ - 20191006, - 422 + 20200117, + 828 ], "deps": [ + "iter2", "promise" ], - "commit": "c1348cc02ed54ccf49b7f39f1ebbf7df17e63c74", - "sha256": "18li54j0rnx64nnaw2wp2nl92msdryb7sjxmaip6b88q9qiwkdi5" + "commit": "deef2bb343463f5196545f1dd8c2a32d0cb3b146", + "sha256": "0aav9qdswnw7ynqlzn0sm34as5fj2d85syxgg8zjabzp6646ay29" + }, + "stable": { + "version": [ + 1, + 1 + ], + "deps": [ + "iter2", + "promise" + ], + "commit": "deef2bb343463f5196545f1dd8c2a32d0cb3b146", + "sha256": "0aav9qdswnw7ynqlzn0sm34as5fj2d85syxgg8zjabzp6646ay29" + } + }, + { + "ename": "atcoder-tools", + "commit": "314396ec5a51460ad679ee9fcf3aa3970cd44229", + "sha256": "1rlsqqc7p351yyzmad4dvxrp5aj2788sg04019ybk83kacy0y5hf", + "fetcher": "github", + "repo": "sei40kr/emacs-atcoder-tools", + "unstable": { + "version": [ + 20200109, + 1236 + ], + "deps": [ + "f", + "s" + ], + "commit": "cfe61ed18ea9b3b1bfb6f9e7d80a47599680cd1f", + "sha256": "04v775vsy01h7wv2p4nc26d0p9ss8106v4whqfgd0c1rrkh5012p" + }, + "stable": { + "version": [ + 0, + 4, + 0 + ], + "deps": [ + "f", + "s" + ], + "commit": "780fabbe5b3c890b3ae764e26b188603be294daa", + "sha256": "1pvnwzp0i1s19cyyzrkcannhx1jizvylxsr7qcipfiy2kmf8sbhz" } }, { @@ -3696,8 +3955,8 @@ "repo": "jyp/attrap", "unstable": { "version": [ - 20190927, - 940 + 20200114, + 1928 ], "deps": [ "dash", @@ -3705,13 +3964,13 @@ "flycheck", "s" ], - "commit": "0e4a2848d0a0cb509a54dbee6dd7b04f96c17737", - "sha256": "0ds3ca3pw1aab4y0fzlv76imbnlccky5mphd10zdikmrnwdhsm2w" + "commit": "4cf3e4a16255997e7c3c39682a72866a0a37dd4b", + "sha256": "0wqc7bqx9rvk8r7fd3x84h8p01v97s6w2jf29nnjb59xakwp22i7" }, "stable": { "version": [ 1, - 0 + 1 ], "deps": [ "dash", @@ -3719,8 +3978,38 @@ "flycheck", "s" ], - "commit": "a971acb251e343d4c6b0253f69dcce0c2cee0fac", - "sha256": "0p93y151730ga7v9xa5gkp306s32qw53086i829fcbxf83c2wslv" + "commit": "4cf3e4a16255997e7c3c39682a72866a0a37dd4b", + "sha256": "0wqc7bqx9rvk8r7fd3x84h8p01v97s6w2jf29nnjb59xakwp22i7" + } + }, + { + "ename": "auctex-cluttex", + "commit": "d08e481ad618a44f9bfa38c68ca30e67a6727538", + "sha256": "05cbiihq0k9d13l8xgd67yanxmj57hajcm2x2v3ils3lfkphqm5w", + "fetcher": "github", + "repo": "tsuu32/auctex-cluttex", + "unstable": { + "version": [ + 20200311, + 1453 + ], + "deps": [ + "auctex" + ], + "commit": "76fba4a1a918ce8a276fa0e22f026ad9a45a47dc", + "sha256": "1rd92s2c08z3l2r2wxcs46bbri4rj0d0aym36v89pwq0fcqqx2ry" + }, + "stable": { + "version": [ + 0, + 1, + 0 + ], + "deps": [ + "auctex" + ], + "commit": "e358f7148092d8ed64703641b5621e130cce458d", + "sha256": "1whzcp9wvpwn1c33n7mqxx8v6g4apg3cq5h2ffl74423ysymry71" } }, { @@ -3850,11 +4139,11 @@ "repo": "DamienCassou/auth-password-store", "unstable": { "version": [ - 20190813, - 1026 + 20191126, + 1242 ], - "commit": "847a1f54ed48856b4dfaaa184583ef2c84173edf", - "sha256": "0g48z5w6n3c54zqfpx65dfyl9jqbl15idvbb1hhw2pd9f9r8fykk" + "commit": "ff4940c647786914b3cbef69103d96a4ea334111", + "sha256": "1swrr8wjrfzjy3x11lfby2jckw5fgvpaywhg2pzmwwvf9mr9xzdg" }, "stable": { "version": [ @@ -3914,20 +4203,20 @@ "deps": [ "packed" ], - "commit": "c46fb16c919d1f821cd69a43cc6e396757c51b2f", - "sha256": "06xfvn9s7kh3c0md431css5hz5yd3b2x6x788hx75hy3r7azi73s" + "commit": "3e92c5b1a94b0cf43f2d624180a1cb01df92afd8", + "sha256": "1f270axx8cpl1fgrwaxjbwyhkacp1b9whmn9f3mjpwkr55ih7wgl" }, "stable": { "version": [ 1, 5, - 1 + 2 ], "deps": [ "packed" ], - "commit": "e6bbb1371324c8884af3b201e9adbc9296eb2ff4", - "sha256": "1jyn7yvbvk7cydy3pzwqlb0yxf5cxdiipa1gnigdk9wdbj68wjjk" + "commit": "3e92c5b1a94b0cf43f2d624180a1cb01df92afd8", + "sha256": "1f270axx8cpl1fgrwaxjbwyhkacp1b9whmn9f3mjpwkr55ih7wgl" } }, { @@ -4282,11 +4571,11 @@ "repo": "mattfidler/auto-indent-mode.el", "unstable": { "version": [ - 20190925, - 231 + 20191112, + 1418 ], - "commit": "8dffa08ab631bf9c388d076958f4da735eaa3e3a", - "sha256": "0y8k1mc7fk59j36khrrp9g65yaklp39s93gk9l1vmp33rclshqg8" + "commit": "ebb1ee5ca24f3040c34b9455502a0e94f19903d0", + "sha256": "19p73jws7iddgs14cnfz9lb5ggyicqk08pasf66fkcvyhzydnwkm" }, "stable": { "version": [ @@ -4400,15 +4689,24 @@ }, { "ename": "auto-rename-tag", - "commit": "ec27ae185c0308c445e461dc84f398483ca08c5a", - "sha256": "0ysm559b2p2v2v39cssx5cviy2qb78cjvhmy76hih09qimg2azrz", + "commit": "cdd1f8002636bf02c7a3d3d0a075758972eaf228", + "sha256": "05ln7dj57f3rjhmvbwy6fpn71ln4fw94qiw120qby199da1an28f", "fetcher": "github", - "repo": "elpa-host/auto-rename-tag", + "repo": "jcs-elpa/auto-rename-tag", "unstable": { "version": [ 20190525, 628 ], + "commit": "27ca700cb2f61a1040013600c5744d68a27cbd8d", + "sha256": "1hydigzi82zana6ivcj4nxqvdnh3973594ag6zlgw9nijilih64r" + }, + "stable": { + "version": [ + 0, + 0, + 2 + ], "commit": "4bd41b3107d3971c9533f9d0c8718c299669cb78", "sha256": "1g6kllnl625h6vmnps15a7ivpxq3k6s4vdxj50dj2i76g19wi2cn" } @@ -4428,6 +4726,24 @@ "sha256": "0ckjijjpqpbv9yrqfnl3x9hcdwwdgvm5r2vyx1a9nk4d3i0hd9i5" } }, + { + "ename": "auto-scroll-mode", + "commit": "195041c70d2807184d4d8c711bcd3f54b8dfc73a", + "sha256": "1hvnhszn1cqzw42wn7w0hrq7wn161alg2w6xpd53ydg61g31i68n", + "fetcher": "github", + "repo": "stardiviner/auto-scroll-mode", + "unstable": { + "version": [ + 20200316, + 134 + ], + "deps": [ + "cl-lib" + ], + "commit": "a23669a8747e71ca5b1003b923f7a3d3834740e3", + "sha256": "033msm39fdhm6iqd7khjsqvxrv4314h8klsq3g06zsrgpmjki1xr" + } + }, { "ename": "auto-shell-command", "commit": "ea710bfa77fee7c2688eea8258ca9d2105d1896e", @@ -4468,14 +4784,14 @@ "repo": "ncaq/auto-sudoedit", "unstable": { "version": [ - 20190821, - 209 + 20200122, + 857 ], "deps": [ "f" ], - "commit": "b589d7c8653204fe07b3355a51d5b622ac6a647a", - "sha256": "10ini7q91gbkvmk6j7fcybgdv5jrhfpk6dfwyl2vcb1nlkxfbnzc" + "commit": "bfad607be640bed3a107e36c91b091e136c1c9ec", + "sha256": "0nwnmqhfy4378p43a12bc32y4qqw349xjkrdh6x7fkdsd4wpf7f4" } }, { @@ -4506,16 +4822,16 @@ "repo": "robert-zaremba/auto-virtualenvwrapper.el", "unstable": { "version": [ - 20181006, - 937 + 20191120, + 1159 ], "deps": [ "cl-lib", "s", "virtualenvwrapper" ], - "commit": "72cc9168db475e8328019f9592493560dab832a5", - "sha256": "1cvc2k5x0ircnpppwwmm813h7c59pyswz4dfgwqqrk325zcnp80f" + "commit": "6380e8986d593655021f7f884d0d21895d7e63ad", + "sha256": "18k7azy456l7qizn3xnpb2dkj58gfrxy5q77dwplgakyvkr13y8p" } }, { @@ -4567,6 +4883,39 @@ "sha256": "0cfx447185shbiadhbar72bgqwzmbia82f8a2py215hgw9wrgqr9" } }, + { + "ename": "autobuild", + "commit": "c738dea2608e68ec0758cb9d5fde1af472f49f1e", + "sha256": "0k5s86xcva3v0zg3dcpkrrcvxxk93gfp7nb80dvac8dyk1qx99bd", + "fetcher": "github", + "repo": "erjoalgo/autobuild", + "unstable": { + "version": [ + 20200209, + 2005 + ], + "deps": [ + "cl-lib" + ], + "commit": "b5ac7436be372dffc97280f4b835f61ab6b716d5", + "sha256": "138kzn20gfy6dj15nkfwsz7lz91n6ffsjzz2kkmclnfkazxixjhq" + } + }, + { + "ename": "autocrypt", + "commit": "c5aac210984709f020f96f3ca166185900accddf", + "sha256": "1y5p5n2p2qk638i1as3wbfz82r08jv4q91470xz9r1gkdnn1xyx8", + "fetcher": "git", + "url": "https://git.sr.ht/~zge/autocrypt", + "unstable": { + "version": [ + 20200327, + 1958 + ], + "commit": "f970fb51c80d582dcc6682106388d6a870ef2c83", + "sha256": "0qfawvnjyc0rrvr5zhkq7ngllrf5h9z3wsi2a75s74545d6nyyjq" + } + }, { "ename": "autodisass-java-bytecode", "commit": "a094845521d76754a29435012af5fba9f7975a8e", @@ -4669,8 +5018,8 @@ 20190331, 2230 ], - "commit": "e9dc7907eb8e9cf9a016bd73e6a96421534a70ae", - "sha256": "0ga1vbkaxjybxr3l5laakxvy9cbf82lrrsjqi67krh7s303az0bl" + "commit": "052881b101d8c2d11c89ae4f1befe7a999de987e", + "sha256": "0k9sjjsqxnrh0cq6m3cd9rk44n0rjbjgqcbfv6fg33a0gpybvryf" } }, { @@ -4761,11 +5110,11 @@ "repo": "avkoval/avk-emacs-themes", "unstable": { "version": [ - 20181128, - 745 + 20191220, + 625 ], - "commit": "cadbfb4c9cd6812d63b69076a9d90514bfd2db66", - "sha256": "07isy168fnvyy25z1wwyr6740bmwmff6c3yfcdy7dnypcj9whllr" + "commit": "e97ec20d07cc9093661f51853375063bcdc91993", + "sha256": "14011k7rafibjpfd7g903a81pml176m7hxvvgd8a65vgqx52q4d3" } }, { @@ -4776,14 +5125,14 @@ "repo": "abo-abo/avy", "unstable": { "version": [ - 20190925, - 1054 + 20200311, + 1106 ], "deps": [ "cl-lib" ], - "commit": "87394c9a880104a08d0f0e2d4149ac2d70cc192f", - "sha256": "1n1ngl9w8h889apkgvnz4z9lwks66qkwfb20jw5jh8p8kxyz7m16" + "commit": "3bf83140fad4c28f2dc4c7107b9d8fef84d17cb9", + "sha256": "1zicf7xynvxdx0pvg0zshvllabmjprvprjgg54phcbqlilcrq0hk" }, "stable": { "version": [ @@ -4832,8 +5181,8 @@ "deps": [ "avy" ], - "commit": "e1d0097edbfc7c1b056323732e341482551ca660", - "sha256": "0kc98ksm7cfpsf21b3hb2xfkiq0y1hnk1i8900gch7gws2q2fml8" + "commit": "aee6878a8c2f18c3ac3bd34d608783b52cd708e0", + "sha256": "1526a6cqaa16x5gi2fsdi9brqa54n3m0dvrnkd85w6sgaz33cpiz" }, "stable": { "version": [ @@ -4937,14 +5286,14 @@ "repo": "baron42bba/aws-snippets", "unstable": { "version": [ - 20190207, - 1047 + 20191203, + 1553 ], "deps": [ "yasnippet" ], - "commit": "9cb1edaaa86609b51a7fbf39ec643cc5ae80eaa1", - "sha256": "1rzfzb19h5d0ikysxi0xcbyvv733kdmcmydpc7wwq9qkb31wck56" + "commit": "557d19a0bc486e0fddb597b2be5087769d9bd47e", + "sha256": "1s71h8limqxql9qhkp7bmq9k9j1mkazvc0lh92a6wd7hk6xg1hi1" } }, { @@ -4970,11 +5319,11 @@ "url": "https://bitbucket.org/pdo/axiom-environment", "unstable": { "version": [ - 20190323, - 1924 + 20200109, + 2207 ], - "commit": "505d85ffc051a7725344c960b1255597dab17780", - "sha256": "1251xc58nc2h6n4dibfdp7z85y609dkpc499ga8j9s0nwif009fs" + "commit": "2c5384b994266008a20558db4ffe0525e66c0f5f", + "sha256": "17f40w9r4whz0v007pp13w060jq87ag42p21hcj93c14py5s4g67" } }, { @@ -5077,26 +5426,26 @@ "repo": "tarsius/backline", "unstable": { "version": [ - 20181111, - 832 + 20200104, + 1851 ], "deps": [ "outline-minor-faces" ], - "commit": "cfaaaed812674d7e474a8800a7452b4a5ba6d637", - "sha256": "12n4401sbwxq08ifidmxmbpg5877n308lwhwz4f8xbx9yijd0sas" + "commit": "dc541a6daf82ab73774904ae9ccecd13e3c2af48", + "sha256": "0410p7144k2kh1bz050h45zrfd98j10sbx409la5x01l9xrmb03y" }, "stable": { "version": [ 0, 1, - 3 + 5 ], "deps": [ "outline-minor-faces" ], - "commit": "ac58abcf0fa818392f5810ffba1243416caf0ae6", - "sha256": "0pzz7dr46k0b0i7f3vi9y3jgx83kcx3shsvaizccg83wz1rhz505" + "commit": "cde271f5e01ed44de239f776c3d0bb27e30953de", + "sha256": "0j1w2ig3rick6lnq668jkzjhrfy8cg3xgra5sj1qpxygdspfjyp9" } }, { @@ -5220,11 +5569,11 @@ "url": "https://git.sr.ht/~zge/bang", "unstable": { "version": [ - 20190819, - 1339 + 20200325, + 1053 ], - "commit": "87b5ad3c81ccf0f2435e3c26ad7f9a1d6191ddb9", - "sha256": "10cybpw6wks2p21g1cz9rr6chvhv1s7jasrnzbcgpg8vkzb3dj48" + "commit": "11e121aed7f5fe90700bd3f49d987bff0a796c2d", + "sha256": "0y6rdfhywjp0d4l39hjhlzzwp64wgd3xrvr80c2f6xbc74c6l5hk" }, "stable": { "version": [ @@ -5267,11 +5616,11 @@ "repo": "fkie-cad/bap-mode", "unstable": { "version": [ - 20190401, - 1546 + 20200128, + 1354 ], - "commit": "9f493b4ec852ec126c80afefa784f8a8d020e309", - "sha256": "0q4grzhrg52i2a3hq9dgsp9i38wi7jcsr09a6k4sxszrf90n030d" + "commit": "8969679f60db0aa918d35f40d959c0a9c723b111", + "sha256": "1i5yhqig104j33cyhkhil4d1wfvnldkvrk2wgxbm4p01xw1rs6cq" } }, { @@ -5312,11 +5661,11 @@ "repo": "belak/base16-emacs", "unstable": { "version": [ - 20190924, - 1827 + 20191031, + 1607 ], - "commit": "4cee70262967efce31997443645f83b08aa33df1", - "sha256": "0q56qp1wrgcsabqi25npz0y3f7hw7w9zq8nkpvxhzgg105szgy17" + "commit": "9eba6874c80ab429bf5cbf6c76bb0399d3d2a2cb", + "sha256": "0ag5fsr3377rz6xfa0b9j54r90zh0yiz98kpa27xzhky4f5jpdah" }, "stable": { "version": [ @@ -5335,11 +5684,11 @@ "repo": "szermatt/emacs-bash-completion", "unstable": { "version": [ - 20190820, - 1804 + 20191126, + 1824 ], - "commit": "504dd26b1de326ec03d2c45f2d2db1ad59481adf", - "sha256": "041zrjlc0n3l1r8gyd78i14jkl2mf3pfsk37malmsllf3067ambz" + "commit": "96ce14af9674f3e605bacca87abc0c23b8f13cd5", + "sha256": "1w3yvpcdjq9a6m2q2lz23dib2ijmfgn4w2z2g5y9wkpdmx48k655" }, "stable": { "version": [ @@ -5426,8 +5775,8 @@ "repo": "AlonTzarafi/battle-haxe", "unstable": { "version": [ - 20190729, - 1219 + 20200222, + 56 ], "deps": [ "async", @@ -5439,8 +5788,8 @@ "helm", "s" ], - "commit": "8c6760969fdc2de0598e22b48c7f14202e08519f", - "sha256": "0vrbayhrsb5rvlbrh7wkbgzzx9iwf0cqh04k330diibh9jcn76f4" + "commit": "64d20c9ea3fd503fdefafda122e7095c192e72a3", + "sha256": "15ykwqg100vjl014awwwzmch84vwqyrlm46c22w9x3dgqk8yxyi2" } }, { @@ -5451,11 +5800,11 @@ "repo": "codesuki/bazel-mode", "unstable": { "version": [ - 20191002, - 333 + 20191110, + 2228 ], - "commit": "13a8efc7b388b3ac45dd981898953bd98dd1b3d3", - "sha256": "17b4q3crzaxmsrh98jrnnnlyyjlbqq3mzxdvw44cbzy4d4qqcaps" + "commit": "7798e33cba5db14eb2c06ddcbc4e8fa361eb679c", + "sha256": "0gjm8276qj3a5kmh2qg93yadjhc2gcny058zpxwr6sialq9p7iwz" }, "stable": { "version": [ @@ -5505,11 +5854,11 @@ "url": "https://git.savannah.nongnu.org/git/bbdb.git", "unstable": { "version": [ - 20190927, - 1617 + 20200102, + 403 ], - "commit": "2bbe645ae71d84ad518e03dec698d4154af2f9f0", - "sha256": "1f18pzwm7p4k1ycnrx80la4wxlph59kv7zh18sk4iz3k6a3j3nnh" + "commit": "45529e315ba861f9df2914f9b88d2f7b991d5595", + "sha256": "0iim6394q02yw5rcyjs7ym16v9jbq5pwqsbpwc98ckg26063p3fi" }, "stable": { "version": [ @@ -5750,20 +6099,20 @@ "repo": "DamienCassou/beginend", "unstable": { "version": [ - 20190708, - 1856 + 20200203, + 1035 ], - "commit": "66e9fbf77fbe248e15a17bd095645a48d40560b4", - "sha256": "0d373cfc6wkb4b5aq42vwr12i47ravhhsyi5zdq90wlqm6c7fbvj" + "commit": "3ab68d77839060f5e85bbf9455846b68cc63ef00", + "sha256": "049r18sa4646rhp2cidpdnk09c87xxf52d6mffq82xphzsniqarz" }, "stable": { "version": [ 2, - 0, + 1, 0 ], - "commit": "a06a479c2279da9e852cf42628b6dfa466fff0bd", - "sha256": "1jbhg73g1rrkbwql5vi2b0ys9avfazmwzwgd90gkzwavw0ch9cvl" + "commit": "0710e25138c1cec40ccf78d704741143c5bac735", + "sha256": "1ic5z3qb5sc3mjrjdlg0rqm2l59a43gwnakagns4cilln2a3xdg8" } }, { @@ -5828,6 +6177,53 @@ "sha256": "0j508n860dp4in1psnkcriqck6by1jvnscalyff5na8hx6xgyysm" } }, + { + "ename": "bento", + "commit": "aad104fd26adb419c5da1e3472807244794e8949", + "sha256": "0a7yaikvaxxk8wmr7f9darpwb4r17rkzxcxaagfypn8n5kswddj4", + "fetcher": "github", + "repo": "returntocorp/bento-emacs", + "unstable": { + "version": [ + 20191024, + 2123 + ], + "deps": [ + "f", + "flycheck" + ], + "commit": "31546a03475fc2b3ffd3159fe1beda55f7762224", + "sha256": "0ny0bably9h4ak2fr01z4a80mp9kjalzhw232a92n8dvmz4b7mq7" + }, + "stable": { + "version": [ + 0, + 1, + 0 + ], + "deps": [ + "f", + "flycheck" + ], + "commit": "116839c7d50342e62a2832715ba850d8bf04362e", + "sha256": "0gxqy2l1a4pddh4pdci2nyflmv76rhl8wx3zmh5j0aqk5ahh1ln5" + } + }, + { + "ename": "berrys-theme", + "commit": "d7043d5fcdf995a6278c8a92aa451ce4b58694b3", + "sha256": "1fn2n7li6fs9zibjzp07y6wdn3a64nsib8d23l7sl7jyzib6vbqa", + "fetcher": "github", + "repo": "vbuzin/berrys-theme", + "unstable": { + "version": [ + 20191201, + 1609 + ], + "commit": "888a14206b2fb3dc45b5273aeb05075f3e0b5f60", + "sha256": "1a75pa7gckdqwrcm25a2ic4cq1la42z939qqzj6nnqyjsj3sbn00" + } + }, { "ename": "bert", "commit": "89635cd11621b04a8575629ec1bf196fb3ea5d43", @@ -5851,11 +6247,11 @@ "repo": "technomancy/better-defaults", "unstable": { "version": [ - 20190917, - 1545 + 20200209, + 1717 ], - "commit": "01b8f00235c37bddf3e1a949e943dc0c9980863a", - "sha256": "0qniwfdip1ksxwx52xwsx9sgy7vfcsixsccmx877w4rlv893plah" + "commit": "fc9a03138c959f0d24301c6401f800eb6e7d3af9", + "sha256": "1hi1xxc99z0pkbj8w63fx3qsy4sq5b3gdc2ccyk0gnbzw2sfc93j" }, "stable": { "version": [ @@ -5875,11 +6271,11 @@ "repo": "gilbertw1/better-jumper", "unstable": { "version": [ - 20191021, - 1647 + 20200103, + 1413 ], - "commit": "3aa1a8a7662d4188633daf7d75a23e13ebdd902b", - "sha256": "1rn4mxh9anqk582x0x7v32dw6m5i96aapdpfpzsxs519wxs3j9q4" + "commit": "6d240032ca213ccb3347e25f26c29b6822bf03a7", + "sha256": "0vdrdd0q4rlpyxgwbc31zz8f6sr7sy0gdw84sb1dy9bpq6qvdbdw" } }, { @@ -5890,19 +6286,20 @@ "repo": "killdash9/better-shell", "unstable": { "version": [ - 20180625, - 1316 + 20191025, + 1737 ], - "commit": "cfcd9d57f87ad68cd72bf4935fd1aaa1d9f059a9", - "sha256": "1z2c2w7p9clijzsfjhcghl76ycy6s0lyymxglzzk7js5np8idmdr" + "commit": "70c787b981caeef8c5f8012b170eb7b9f167cd13", + "sha256": "0i87d1xrg4gvszm52wdrx81g49lh75ycdfxkxhlrckbw7nkrjchz" }, "stable": { "version": [ 1, - 2 + 2, + 1 ], - "commit": "f231404b6f8efce33b48e31e5b1566108d0ba000", - "sha256": "1g5bljvigga856ksyvgix9hk0pp9nzic088kp0bqx0zqvcl82v0b" + "commit": "70c787b981caeef8c5f8012b170eb7b9f167cd13", + "sha256": "0i87d1xrg4gvszm52wdrx81g49lh75ycdfxkxhlrckbw7nkrjchz" } }, { @@ -6063,8 +6460,8 @@ "a", "pdf-tools" ], - "commit": "5f3e67448cc98fe2875115163849acae4d9e8526", - "sha256": "1w0dhyr4i0nx0g70smgclcfsbv6cfilb7df330njzaqk8j2gdfws" + "commit": "eab07dae119129066624e692c1c75a53b2ab10a5", + "sha256": "1q9g8kza6hv6pv1sjzkl6b4gxcx6fsvv8lk5w7kk9gpws5vjz5bz" } }, { @@ -6075,14 +6472,14 @@ "repo": "pzorin/bibretrieve", "unstable": { "version": [ - 20190725, - 1539 + 20191124, + 1855 ], "deps": [ "auctex" ], - "commit": "3a21f5b349b7c83fc9dcaf8773ee7b4749599f0d", - "sha256": "0ppaajc559lv9aqk3jlcjm2id2wj6qiby9hq9kmc1avfns25cp30" + "commit": "81dc8e0db3629cc180eafb2bc34b60dcd8980316", + "sha256": "00zya2h6f5fpfxyi893fz3kpbbdhd8yq6b8g42bvxc5bfbknfhwc" } }, { @@ -6100,8 +6497,8 @@ "dash", "s" ], - "commit": "aeba96368f2a06959e4fe945375ce2a54d34b189", - "sha256": "077shjz9sd0k0akvxzzgjd8a626ck650xxlhp2ws4gs7rjd7a823" + "commit": "0116bbb04840d20a6b087e6d9c921bb1c2489a8f", + "sha256": "0vcdi0q6rbs3qqlpccy9hdv82zrx61gdj3fn444qashk84s085vf" } }, { @@ -6127,20 +6524,20 @@ "repo": "tarsius/bicycle", "unstable": { "version": [ - 20180909, - 2126 + 20200103, + 1237 ], - "commit": "ab81d259a71827ff54872c64d13d56aedc9a212e", - "sha256": "1hjd7syqvg13yji2w5a6fjgg4gjka2rk7lc7m1d7w05dw1ad76jh" + "commit": "91d9f946690df0a1ed866f2cd1eab1b2e7c7480a", + "sha256": "0pkn99srwyvyibz5zxkh58csbf598x26f31mpizacx3bs4nys0qb" }, "stable": { "version": [ 0, - 2, - 0 + 3, + 1 ], - "commit": "42a5db3514019d539500a67f913411f5533a1eb3", - "sha256": "1nanf0dp7kqzs2mc8gzr9qzn9v6q86sdr35pzysdl41xqydxpsrd" + "commit": "91d9f946690df0a1ed866f2cd1eab1b2e7c7480a", + "sha256": "0pkn99srwyvyibz5zxkh58csbf598x26f31mpizacx3bs4nys0qb" } }, { @@ -6151,20 +6548,20 @@ "repo": "riscy/bifocal-mode", "unstable": { "version": [ - 20190623, - 2236 + 20200325, + 539 ], - "commit": "c354fc32b0a666203f5c546bb2d2c397cb003391", - "sha256": "0wzsbrj1rhfl6qgjnphbh6ijfbjdr2wid7mqzz49ykcb9ldm7kjj" + "commit": "773a6dde790c4a240e643a9071e4c7bce09d40de", + "sha256": "11dirb13hblfa95hqqshrsjri4d4qzcq5qhhnd4xqajdchr62758" }, "stable": { "version": [ 0, 0, - 5 + 6 ], - "commit": "add30c678488cec04976a85ba8cda20805938a01", - "sha256": "01j8s6c3qm4scxy1dk07l41y0n55gz83zzfi254kc2vyx02vqg7f" + "commit": "773a6dde790c4a240e643a9071e4c7bce09d40de", + "sha256": "11dirb13hblfa95hqqshrsjri4d4qzcq5qhhnd4xqajdchr62758" } }, { @@ -6211,8 +6608,8 @@ "bind-key", "key-chord" ], - "commit": "4714d73b61bdb378f6e9e3f3838cae1abbf65ea0", - "sha256": "19m31nh2bd7rrlh53wy1hf6sxcqk4qn4wkm5w1c16314d5w56w5s" + "commit": "c873d5529c9c80cb58222f22873a4f081c307cb2", + "sha256": "0jbq3w9ijsbl5gblhr24b0rh4gyp1xx696g20l438a7sbsk4b531" }, "stable": { "version": [ @@ -6235,11 +6632,11 @@ "repo": "jwiegley/use-package", "unstable": { "version": [ - 20180513, - 430 + 20191110, + 416 ], - "commit": "4714d73b61bdb378f6e9e3f3838cae1abbf65ea0", - "sha256": "19m31nh2bd7rrlh53wy1hf6sxcqk4qn4wkm5w1c16314d5w56w5s" + "commit": "c873d5529c9c80cb58222f22873a4f081c307cb2", + "sha256": "0jbq3w9ijsbl5gblhr24b0rh4gyp1xx696g20l438a7sbsk4b531" }, "stable": { "version": [ @@ -6282,11 +6679,11 @@ "repo": "cute-jumper/bing-dict.el", "unstable": { "version": [ - 20190723, - 122 + 20200216, + 110 ], - "commit": "52718ae3a3abfa5e5457239ee7ddf8f0c23a79a7", - "sha256": "1kn8kmljn0pj0hz7dj7r7nxw43xd6acndaqq92d02mla12hiqayz" + "commit": "1d581aaa9622b34f8fb83af5579fa252aa24cfef", + "sha256": "1v0ncgnj9vv2r0qbwiipg63rlhnfjz8q23jx3la2l22l0i2lyivb" }, "stable": { "version": [ @@ -6330,11 +6727,11 @@ "repo": "Wilfred/bison-mode", "unstable": { "version": [ - 20160617, - 552 + 20200226, + 47 ], - "commit": "314af3b7af7eb897fd3932616cb8600a85228cea", - "sha256": "0ymjgwyi73vl81i7v1g2ad09lxp4mhp47r6zcijqa5hbx9l1skik" + "commit": "675df47193accaf30ca44e142523b2b3bb122979", + "sha256": "08yg51pzpry5gy29fdbrrb7s5j5c5fxsrhgy0ncp0vl082fs1bv9" } }, { @@ -6440,11 +6837,34 @@ "repo": "pythonic-emacs/blacken", "unstable": { "version": [ - 20191024, - 1230 + 20191123, + 1547 ], - "commit": "2d75594b8b016597f1c2ffa15f9974a0fa825d8d", - "sha256": "0l76km14qgj9vww8znl92dfqcbn6vlb1qngcwp35q8fwxi5biy9l" + "commit": "a09f8e2564739792a1b86bc8a6ce41039db3bbf8", + "sha256": "0cs9nmi30dknrw6p2xvx9np1zmzpsn3bs93lhfiqy2a4ylf96brl" + } + }, + { + "ename": "blackout", + "commit": "9128d87569dc74b90f57dd65edead7199f5c7911", + "sha256": "06gxgald2vchfwhbiaap7rfjk7kirfv4yjc4r98g998v96bilw64", + "fetcher": "github", + "repo": "raxod502/blackout", + "unstable": { + "version": [ + 20200326, + 1640 + ], + "commit": "87498cc91916c2f41d28e93fd80102c42b93ccf6", + "sha256": "156mnqwcpv3zl5pklqvmayq5j76hm4jc3has4qydfygz8fhx1zhy" + }, + "stable": { + "version": [ + 1, + 0 + ], + "commit": "87822abd1ed46411368ef91752a7f51c0ef2aee0", + "sha256": "0n0889vsm3lzswkcdgdykgv3vz4pb9s88wwkinc5bn70vc187byp" } }, { @@ -6479,8 +6899,8 @@ "deps": [ "eimp" ], - "commit": "a4c538c52f2371f4a184e4c905584c6decf7b407", - "sha256": "1vzpigvkzcglanardsy0pi8ficsdxrfgwnh1jyx12pnxzqyb879m" + "commit": "39562f02acc1113595cb253a85bb3b9da743ddd2", + "sha256": "0wzdln3rqqvckkc63q5sb83kimnyk6hrc4slbxhwapdfk53gz0j9" } }, { @@ -6498,6 +6918,30 @@ "sha256": "1bpyhsjfdjfa1iw9kv7fsl30vz48qllqgjg1rsxdl3vcripcbc9z" } }, + { + "ename": "blitzmax-mode", + "commit": "a1a59a8ac5bb12507e58cde85b09e7f19ce72a82", + "sha256": "1isqkmc6g412l7gbg0bmyfsl975wjv7fv753z1mi0bzr7ihv5ckz", + "fetcher": "github", + "repo": "Sodaware/blitzmax-mode", + "unstable": { + "version": [ + 20200211, + 2205 + ], + "commit": "4814c35007035f0e26e0fadc50fffc4ab6d298ad", + "sha256": "160jd2rn1lgwgnm1ygdcsz1z0yxg9f1ps9wxqkv30xnkbnnxq10c" + }, + "stable": { + "version": [ + 1, + 0, + 0 + ], + "commit": "d772deff2464d48d018bbe43b1e4b3745a4ac886", + "sha256": "0gzm2qzwbaqfmfi1vhcx23w9v1mcs6kx5kijncn9hbvhi0640j76" + } + }, { "ename": "bln-mode", "commit": "ee12ef97df241b7405feee69c1e66b3c1a67204b", @@ -6623,26 +7067,26 @@ "repo": "sergeyklay/bnf-mode", "unstable": { "version": [ - 20190611, - 519 + 20200323, + 1348 ], "deps": [ "cl-lib" ], - "commit": "eb1a2edb2d798e9fb84fcefb7b646f1c5edc18e9", - "sha256": "0s7rq0mhc2kxczs3v2k71zq9imndxw8b4aw1m8zzgbbnq9qn0q3f" + "commit": "d88eef69ae66ea1ffa21a65317afe84c9ddb0814", + "sha256": "1bci2w8drwgcli9hqg55izaxpwq4fvqdigvlrfc0524s7021ij24" }, "stable": { "version": [ 0, 4, - 2 + 4 ], "deps": [ "cl-lib" ], - "commit": "2f217ecf76fa775da4b28de7dd2b615460d9f8ad", - "sha256": "17nhy9mwaji230d3dhi3d40wibqviapa5h60mlm20mc5b2vb0vyd" + "commit": "4a7aff6a3a691826ea4add9f519c854b9611d780", + "sha256": "1hnkvwl0as2s4aayqahclqclsriigqv51h8yafx0za1xfh4snfzv" } }, { @@ -6811,16 +7255,16 @@ "repo": "jyp/boon", "unstable": { "version": [ - 20191001, - 1211 + 20200212, + 1535 ], "deps": [ "dash", "expand-region", "multiple-cursors" ], - "commit": "b17880bd39863b8f4acc7c8597fbf3f01b36e047", - "sha256": "0ad8vgn1sg1rmldh8nnavlgkjqb5ild5744wr4crmx6p9wyab298" + "commit": "19bc70fa6f9e5c001f8ac714ce90af14788f35dd", + "sha256": "0ippdjd4j8y1xx438pvxiw0h0my6zdmvnbpay3fckrssirhi1m6l" }, "stable": { "version": [ @@ -6844,30 +7288,30 @@ "repo": "emacscollective/borg", "unstable": { "version": [ - 20190902, - 1510 + 20200223, + 1448 ], "deps": [ "dash", "epkg", "magit" ], - "commit": "e4a53ec687a1e2f75276c2f2c2b568266887fe10", - "sha256": "1s01gwnpqrkr60r0xn27231854qpqqbqphiy200x7hmkq93wzlhv" + "commit": "3cfb35f5c54a76f200272ed11b4a39f11a57552c", + "sha256": "1y4c7bdy4vzv630d3yxhgq3v29q5f071d30kig4wwv460nai7c4c" }, "stable": { "version": [ 3, 1, - 1 + 2 ], "deps": [ "dash", "epkg", "magit" ], - "commit": "940af3d437b299ef81ce73da4e4ec8c2f52d7a79", - "sha256": "0lg2inxzfz6pcblynna4fyi5lxnmbrpl095d6574d0pnn22zdx5a" + "commit": "3f9fc2281e9ae873873998782c98c57c5ebb0555", + "sha256": "1k889m4095lm97lphcwcrsl53vhgas7iha594mmk8cs7sm5csjy1" } }, { @@ -7007,6 +7451,72 @@ "sha256": "1nzgjgzidyrplfs4jl8nikd5wwvb4rmrnm51qxmw9y2if0hpq0jd" } }, + { + "ename": "brazilian-holidays", + "commit": "111f2736e864e7cc8be6beb00eebb62f4d614e8c", + "sha256": "1akqv0xd03vq46s8rzpk2hmjvy676dgnivaq8n5myagjkj9bmw3r", + "fetcher": "github", + "repo": "jadler/brazilian-holidays", + "unstable": { + "version": [ + 20191211, + 330 + ], + "commit": "13a480f03eb3729e6f203ce77dfd4de5e1203a3d", + "sha256": "1980267q70b7m16jsxc433cdqzr15q8dz5cwpkhla52wfdf1s184" + }, + "stable": { + "version": [ + 2, + 1, + 0 + ], + "commit": "13a480f03eb3729e6f203ce77dfd4de5e1203a3d", + "sha256": "1980267q70b7m16jsxc433cdqzr15q8dz5cwpkhla52wfdf1s184" + } + }, + { + "ename": "brf", + "commit": "203e7d21e2387866107740ead4ec28787d82ebfb", + "sha256": "0439bzzzy6kx536zh9azxrdmfpb69xrr8axxg5q7989892iaqi5m", + "fetcher": "git", + "url": "https://bitbucket.org/MikeWoolley/brf-mode", + "unstable": { + "version": [ + 20200329, + 1531 + ], + "deps": [ + "fringe-helper" + ], + "commit": "f1ae0c5eb74f62af109ebaf18e8663d6f51270cb", + "sha256": "1pzxz5irx6ysa8nhl9x50v8l5r2cvd6pafj71q4i5lrxv9a1dkl1" + } + }, + { + "ename": "brightscript-mode", + "commit": "9acbba1c180ea7c03156009c08285697a7aae419", + "sha256": "0g0lwmd53v6lqihksqdirl12rz6a9ljp9zdm1xpd4wbqz72w17jw", + "fetcher": "github", + "repo": "viseztrance/brightscript-mode", + "unstable": { + "version": [ + 20200321, + 2126 + ], + "commit": "51f2d43e08960aa65a67273101733636026790a6", + "sha256": "0dzgkpaqlrqfzsmb61idlrp91vs3lrcymbdd4k6ls58kdv75v1j8" + }, + "stable": { + "version": [ + 1, + 0, + 0 + ], + "commit": "01405633a14269ab26d053ca6f1494c987d24195", + "sha256": "0952smngj32an30v2bqgfc14xrl90xwr4a038w01cdgg9k848g7y" + } + }, { "ename": "broadcast", "commit": "6ed51896112e702a8b853059884aad50d37738c2", @@ -7030,21 +7540,21 @@ "repo": "rmuslimov/browse-at-remote", "unstable": { "version": [ - 20190213, - 1929 + 20200308, + 639 ], "deps": [ "cl-lib", "f", "s" ], - "commit": "1a9392e9d1fad4e1aafb25b68b4e6857fde8f564", - "sha256": "1shpkzyg0lf3s5199qhy7kcanx55yk27sgbsc1pbkv0crkh8dv14" + "commit": "6aecae4b5d202e582425fc8aa2c9c2b6a4779f25", + "sha256": "0c93ilvxmfv28a05fs2lbdyc2q308anjw0xvbkg7dc0blg0fgb05" }, "stable": { "version": [ 0, - 10, + 14, 0 ], "deps": [ @@ -7052,8 +7562,8 @@ "f", "s" ], - "commit": "47bab994640f086939c30cc6416e770ad067e950", - "sha256": "0vhia7xmszcb3lxrb8wh93a3knjfzj48h8nhj4fh8zj1pjz6args" + "commit": "771a3079e27f397d2f5a9470b945980fa68ee048", + "sha256": "0bx4ns0jb0sqrjk1nsspvl3mhz3n12925azf7brlwb1vcgnji09v" } }, { @@ -7064,11 +7574,11 @@ "repo": "browse-kill-ring/browse-kill-ring", "unstable": { "version": [ - 20171219, - 1908 + 20200210, + 921 ], - "commit": "8debc43e41d7e51532698331c6f283905890b904", - "sha256": "18yg35raks0kbzg5wjay6liingdcv4glyzl9n14sgr9vzc7h96f9" + "commit": "1ef72cc6accd94cd7032c02b1b2c78ae7f1d1965", + "sha256": "0mil32g7hcw376jibs5hdyv00xbaql3m4a27rwqaafg0x59avxdj" }, "stable": { "version": [ @@ -7238,11 +7748,11 @@ "repo": "joehakimrahme/buckwalter.el", "unstable": { "version": [ - 20190204, - 1451 + 20191119, + 1950 ], - "commit": "d4a7785eef05491ac4eb3150b75c473480bb51cb", - "sha256": "1i0kkn2qziakpy0ax8rc1pjdb6r881gybqhl5dwmwsd8gkfhddy5" + "commit": "1ef6f210f38c0686bc5b445b9704190f168f30ea", + "sha256": "054gbfdaqfj5psb3f06ba46x38gd9xak28h1la5b1szdzj61f23i" } }, { @@ -7291,15 +7801,15 @@ "repo": "plandes/buffer-manage", "unstable": { "version": [ - 20190815, - 502 + 20191015, + 1730 ], "deps": [ "choice-program", "dash" ], - "commit": "47852b908a0d9a059e9f8cd7797229ecf6259b8c", - "sha256": "1zxlw2kkkfa0pgxzk7qcjxy77g0r3grnnv4sa6zjhmh9kh7jgf75" + "commit": "4fd0e6f9f3da31bc805be2000adf2c91088dd39b", + "sha256": "1an2w2s2xnmcj2knnax4mpv4wzcq31bvqcbhwasm39yzjlz7j5s9" }, "stable": { "version": [ @@ -7410,6 +7920,60 @@ "sha256": "0x9bcnya47pf78p6ksdvs1ca5arvbgyi1q8b9yxq55fg3k9523ln" } }, + { + "ename": "buffer-wrap", + "commit": "446fb5528644d9e51a10ade59de97e248729d3f3", + "sha256": "1fdk490hwz1mf4ldw8bh0w2byxi03qwdapgdgcvzir3s913gagrw", + "fetcher": "github", + "repo": "jcs-elpa/buffer-wrap", + "unstable": { + "version": [ + 20200223, + 605 + ], + "commit": "460f90bc024b6c287ed8afac3ff1bed2a147c777", + "sha256": "07r50iiiyhbqbia9c8c3kz1hvqjs6dkb8rkqpq4yyv3vd1kc9qnb" + }, + "stable": { + "version": [ + 0, + 1, + 1 + ], + "commit": "813a3dab3007a34fa27cf0a1ae687dc0eae98240", + "sha256": "0m2ryic16083ab0x6qwfrxrpsgq84s518vn0cbfcxycblpdh89al" + } + }, + { + "ename": "bufler", + "commit": "b50d5939113ca9a8ad1ba606f3d3030f110a800b", + "sha256": "0y1gfpb99777sxizxvqyffsmbv6ib4zasi2dyrf8imf4z45r6adh", + "fetcher": "github", + "repo": "alphapapa/bufler.el", + "unstable": { + "version": [ + 20200318, + 2005 + ], + "deps": [ + "dash", + "dash-functional", + "f", + "magit-section", + "pretty-hydra" + ], + "commit": "39e756a23196d12792a3af4a06ab024d8235ee19", + "sha256": "1b9ddgdd7b6x6353f8s6cv97xqsmmka6vwmv68sq75104wr189w5" + }, + "stable": { + "version": [ + 0, + 1 + ], + "commit": "2eca0959657030c5853020da017fe98a19bba3f1", + "sha256": "0yqgaqz41sbfdbvjxf773p5m2qsr4mm22j2qgn3mp0z1r5dx67ai" + } + }, { "ename": "bufshow", "commit": "543a734795eed11aa47a8e1348d14e362b341af0", @@ -7442,11 +8006,11 @@ "repo": "arnested/bug-reference-github", "unstable": { "version": [ - 20180128, - 1314 + 20200206, + 2158 ], - "commit": "f570a0532bfb44f095b42cf68ab1f69799101137", - "sha256": "09rbxgrk7jp9xajya6nccj0ak7fc48wyxq4sfmjmy3q1qfszdsc3" + "commit": "c9512a010f19633e69f1d4b1597eff7048b21112", + "sha256": "0nyxd9dnvvdvjik94m9frbbhcf9axi50vpcs0mk0xy5raxq3scf7" }, "stable": { "version": [ @@ -7576,15 +8140,15 @@ "repo": "endofunky/bundler.el", "unstable": { "version": [ - 20190701, - 1013 + 20200129, + 1338 ], "deps": [ "cl-lib", "inf-ruby" ], - "commit": "05a91d68e21e129b6c4d5462c888ea249c2ea001", - "sha256": "0x37bilxl3shx5mdm00d3m2z5srfsy3y588w9971i8r7y2sfngna" + "commit": "43efb6be4ed118b06d787ce7fbcffd68a31732a7", + "sha256": "1r7x3xw4l5bp4dfqk2v2nrd2yl0rs064gw75nx99ifm92n7nkmgh" }, "stable": { "version": [ @@ -7711,19 +8275,19 @@ "repo": "jorgenschaefer/emacs-buttercup", "unstable": { "version": [ - 20191006, - 1305 + 20200308, + 2200 ], - "commit": "c2d75e9a48c93f96d1bc7f1bf151d69adb417abf", - "sha256": "1nzx39pf3lqbbc5h9r7qx30jm5r8g3k2zqc5hpmizv8d4l23fhcx" + "commit": "b360e3501703d8829a7dfc2d141e8c7c32c9bcfe", + "sha256": "0b3xkykfw8888zdg5w45kzij0d547j67crpc62mizh0fnc5naqvr" }, "stable": { "version": [ 1, - 18 + 21 ], - "commit": "c2d75e9a48c93f96d1bc7f1bf151d69adb417abf", - "sha256": "1nzx39pf3lqbbc5h9r7qx30jm5r8g3k2zqc5hpmizv8d4l23fhcx" + "commit": "0dbd474460e4c314bf8bc6e4d3dec647081538c9", + "sha256": "1ra5r56k539q6l98msxdn4vfd7k6jm00g8cdhs6hpwvb1blj8di2" } }, { @@ -7764,11 +8328,11 @@ "repo": "rolandwalker/button-lock", "unstable": { "version": [ - 20150223, - 1354 + 20200309, + 1323 ], - "commit": "f9082feb329432fcf2ac49a95e64bed9fda24d58", - "sha256": "06qjvybf65ffrcnhhbqs333lg51fawaxnva3jvdg7zbrsv4m9acl" + "commit": "9afe0f4d05910b0cccc94cb6d4d880119f3b0528", + "sha256": "1d893isxvchrqxw6iaknbv8l31rgalfc4hmppf0l87gxp5y9hxa2" }, "stable": { "version": [ @@ -8157,8 +8721,8 @@ "repo": "beacoder/call-graph", "unstable": { "version": [ - 20190828, - 2340 + 20200211, + 240 ], "deps": [ "anaconda-mode", @@ -8167,8 +8731,8 @@ "ivy", "tree-mode" ], - "commit": "8ccb0323651155e3407ee5649b1a0355fd70ffe2", - "sha256": "0xflaqv88saq6i2wdggrwh06i9svp7v5070rmd860wg1pwi0qm81" + "commit": "768a1b2169dca60a130204065dbc54bdff415b0f", + "sha256": "12f9wc3kp3pafip283yr8qd5s93nmcf84b07i72fv69nxxi4a41q" }, "stable": { "version": [ @@ -8335,15 +8899,15 @@ "repo": "kwrooijen/cargo.el", "unstable": { "version": [ - 20190902, - 754 + 20191224, + 47 ], "deps": [ "markdown-mode", "rust-mode" ], - "commit": "39a77e48a16d69b2e841084a3dbbbd083f166a21", - "sha256": "0wyqqc22my842ag999hnfijycfck888z1pbm6acaa6h6cczm1ya9" + "commit": "dc9ff35c2861d524ac4d65020c5320eec71acacf", + "sha256": "0nng284i5jygsnbda6ycrm2wv8rw47z8ilcs6r1z0w1gv3p012fd" }, "stable": { "version": [ @@ -8623,11 +9187,11 @@ "repo": "skk-dev/ddskk", "unstable": { "version": [ - 20151205, - 1343 + 20200314, + 1557 ], - "commit": "ad61579af269291b4446f4bab0a58522cc454f1c", - "sha256": "0aisilp9wl9w8l6nsiy963wvja38pp57g3skdf6qbm5ak8bb3244" + "commit": "37593d191b255d8633231099c70b1b26b3da0d39", + "sha256": "02pn3pxawl6268sy981iqialzyj9zy9dz6ci9jrkvbc8gp9gcvwh" } }, { @@ -8638,16 +9202,16 @@ "repo": "MaskRay/emacs-ccls", "unstable": { "version": [ - 20190927, - 246 + 20200327, + 1915 ], "deps": [ "dash", "lsp-mode", "projectile" ], - "commit": "b1acc336f27d8a3bbc750c2dc3be915a4ac1afea", - "sha256": "1qgfxc5d1hb32ks1fxpx7agpw7dvnkz99wydlflc9fqq75g8v142" + "commit": "17ec7bb4cf362b7268c24e070e841f0dfac1c919", + "sha256": "08pndwbw6wcpysnvhkqfvrw91ac0np31swiq0yv3dr2x0sq70cp5" } }, { @@ -8673,11 +9237,11 @@ "repo": "skk-dev/ddskk", "unstable": { "version": [ - 20151205, - 1343 + 20200314, + 1557 ], - "commit": "ad61579af269291b4446f4bab0a58522cc454f1c", - "sha256": "0aisilp9wl9w8l6nsiy963wvja38pp57g3skdf6qbm5ak8bb3244" + "commit": "37593d191b255d8633231099c70b1b26b3da0d39", + "sha256": "02pn3pxawl6268sy981iqialzyj9zy9dz6ci9jrkvbc8gp9gcvwh" } }, { @@ -8688,11 +9252,11 @@ "repo": "cdominik/cdlatex", "unstable": { "version": [ - 20191006, - 1030 + 20200305, + 809 ], - "commit": "fea53d325bdc32e9b299971f906101f41d24e77e", - "sha256": "0gn2h9p60dbz6xcz2fn0p7vpg1bwsh2kn4n76yd9z1p40j1fn93a" + "commit": "a5cb624ef5f9e3d51fce6faa8dc153277f61043a", + "sha256": "0gicai05d21909mjjvfc6194ygrqg2pbff60pjh3w593c4l4jmcj" }, "stable": { "version": [ @@ -8811,15 +9375,27 @@ "repo": "ema2159/centaur-tabs", "unstable": { "version": [ - 20191020, - 237 + 20200325, + 1236 ], "deps": [ "cl-lib", "powerline" ], - "commit": "6a788ff518570d161674b4a7033f0a7a763b7417", - "sha256": "0a7nka9iha4c049gyb9qxdapgi33s5s5kav6r5p73wajx6iryzmz" + "commit": "e6bf9f5257fa5401695e0e33d0376a0821ac2f2f", + "sha256": "1gm06par7pglwj25ydvlp1n2vniq6283mm0g4s53ra77ywsz73jv" + }, + "stable": { + "version": [ + 3, + 1 + ], + "deps": [ + "cl-lib", + "powerline" + ], + "commit": "af50f87d40697a4e5d6097e2042111fc4a930b40", + "sha256": "1c3szcv87gjlm2bndasrx9q46x699cxapmhfs2zs08yk6gc1yfji" } }, { @@ -8934,17 +9510,17 @@ 20171115, 2108 ], - "commit": "510a0d3506cca601195d53d0ce885a25b4084e1b", - "sha256": "07mdkfzfr12mava0ms17g4z1k6lbbrbbchjnljilkjcgccv20gg6" + "commit": "f09d88781a5557d4b2b7d039757cc5e9a7ddd275", + "sha256": "10zr6a3z7gzvqvn5fb4l7hg9wi5vhmkdln0c44gskmikdsm173x1" }, "stable": { "version": [ 3, - 14, + 15, 0 ], - "commit": "44c447317b7ab87f973f21170a9c17a58b1c75c8", - "sha256": "0fk4x7qn7dsc7jqgbr3bpnphq7a1s4faqjci1j08cnigb3b5x585" + "commit": "76bc1fad91478de7064380c31d333e1975cf8126", + "sha256": "1amjzy3v7rhc6djl1ldqnhpd4m3prh7lfyd5hyb9fp0v8jhyg3w2" } }, { @@ -9052,11 +9628,11 @@ "repo": "emacsmirror/cg", "unstable": { "version": [ - 20190316, - 2206 + 20200305, + 1845 ], - "commit": "9349600829ca1758306e703a649874f8c63955fa", - "sha256": "1s3s37g99x19zxnq0xbiy95kjhm2hb09saxic2basapcp0sdfbwh" + "commit": "b0e4cca3d8a28054b3af2f592b528903c7e7c111", + "sha256": "06ff0blmixn38z013pxj0a5qqn6aw09kv50zzyx5prdyzb57fx6h" } }, { @@ -9067,11 +9643,11 @@ "repo": "challenger-deep-theme/emacs", "unstable": { "version": [ - 20181205, - 1834 + 20191114, + 1339 ], - "commit": "96b7b1e2a9a3f8ffcbc36a1f37251b1232539d89", - "sha256": "1wvxblnn9qp75r33w3mlbjgqlq8dbh6m38snwkc45071vdqfkyk0" + "commit": "b8427b5c87948a183e2dd2b8920a54fbaae2738b", + "sha256": "05vgax8arz6l0a4x0gsh7gs0qasjf09xj973nb7k3w8gyzmy1z95" } }, { @@ -9130,8 +9706,8 @@ "deps": [ "avy-menu" ], - "commit": "e73949b26406a397a70624f6086183cb41ce1353", - "sha256": "1v3zqazw89i0v68ga262s1ljf3g7s838vx6hirdy1xc2qxfqqmlk" + "commit": "22d0e061f170d59d7cf6bcd948c11fa0266b7771", + "sha256": "1m29vg4cispsd8nl8lpmv5fify1208nrf8h7nkl17pplrk7hqhwb" }, "stable": { "version": [ @@ -9201,19 +9777,19 @@ "repo": "davep/cheat-sh.el", "unstable": { "version": [ - 20170802, - 1118 + 20200226, + 1021 ], - "commit": "e90445124f3f145a047779e42d070a3c5e150f70", - "sha256": "06avap8w833syhz7pdpsm73nbsgbwzmpagd7f3khzaf6r6c90jmn" + "commit": "52293c366044e44c8f6b648a312433345e4718ad", + "sha256": "098b70gvyr74ygzbpyfvpn2zzlij47bzvqqj89igh10s4lxj0lzb" }, "stable": { "version": [ 1, - 7 + 8 ], - "commit": "6409bb66241255cc9a0362f2acdcb0b34344f9f2", - "sha256": "1nmsja1s45fs93v2vbalfralixvzp88rgv47vf9p80i7x6w2149m" + "commit": "bd970d7c576b8720d63a1e7fd88ea8a943f2160b", + "sha256": "027ws9hz84d4j00bfl5s0id8jcv2yqjkjmph1890w37miwj62cjf" } }, { @@ -9517,6 +10093,40 @@ "sha256": "1apzb0jccw91gdynqa1722bbalzj4kp9fq25zzw1rxsrgh3mgmc5" } }, + { + "ename": "chronometrist", + "commit": "35d03fe9c066e7388d5ff4adad1afa1e30145995", + "sha256": "09dil46qjn7y55y7qax92l7mcw8g1bsb1mjqc92zgln96asi25kj", + "fetcher": "git", + "url": "https://framagit.org/contrapunctus/chronometrist/", + "unstable": { + "version": [ + 20200324, + 653 + ], + "deps": [ + "dash", + "s", + "seq" + ], + "commit": "dc0fb3bed6b893ecb924f5b1228ab718325cc808", + "sha256": "08mzv8rijsagkj4ykxlgr99axp0kxnz36d3iaffkqzyv50cm4r6f" + }, + "stable": { + "version": [ + 0, + 4, + 2 + ], + "deps": [ + "dash", + "s", + "seq" + ], + "commit": "cc791cd61ee4580c9786f8c58d9e1964e0ff0c64", + "sha256": "1ccy7qz1wcmggqlf3hwigbqq4wrx1amds4x9bxz9py6bypglyjc5" + } + }, { "ename": "chronos", "commit": "53648c5699fc03e50774270f9560c727e2c22873", @@ -9573,8 +10183,8 @@ "repo": "clojure-emacs/cider", "unstable": { "version": [ - 20191019, - 1042 + 20200328, + 1555 ], "deps": [ "clojure-mode", @@ -9585,13 +10195,13 @@ "sesman", "spinner" ], - "commit": "aba6567a12cdec01334f16f009e0c3c41b7aeb35", - "sha256": "1k3c4xrznyy3mya3n72y8c2brp0x3mr0pq6paw1wfdwzz9mn3764" + "commit": "dfc13f9c199920522ee02feac1d5da1c0b578b6b", + "sha256": "12yifir74qicryl5v5gl80s5m2qvlb09ck6jywx20yin3jkw6l58" }, "stable": { "version": [ 0, - 23, + 24, 0 ], "deps": [ @@ -9603,8 +10213,8 @@ "sesman", "spinner" ], - "commit": "ce42702154709ef5d991e2732511c50d69de256c", - "sha256": "05yjkqc6d4grq9z5pxmv3anqh4zlhfg4v46jlccp6ynh030g7axs" + "commit": "bfcf9157a970c9423fe27c5021f445b509e71280", + "sha256": "1y7fngd47c5dz6sdf4b5w5lxdw5jmm4wa98l4h48badl8cn6m1vl" } }, { @@ -9777,14 +10387,14 @@ "repo": "jorgenschaefer/circe", "unstable": { "version": [ - 20191006, - 1434 + 20200125, + 2110 ], "deps": [ "cl-lib" ], - "commit": "e4af7143bd32907d0bf922bee53a96399f0376fa", - "sha256": "1ccxin0vp3z8lxcfm9bci06jkwy0nwasdwg95wp9hdnccpr63s38" + "commit": "e5bf5f89741a9c43aa406491e94dd8d58c302fb4", + "sha256": "104l0b9n9ia7zrha20yaxp6c09wg1h5l5a8b988k6mhyj9a1w1aw" }, "stable": { "version": [ @@ -9837,8 +10447,8 @@ "repo": "andras-simonyi/citeproc-el", "unstable": { "version": [ - 20190914, - 613 + 20200305, + 2126 ], "deps": [ "dash", @@ -9848,8 +10458,8 @@ "s", "string-inflection" ], - "commit": "fd2188e5d76ca78723567ae3b369ae542402e633", - "sha256": "0a924bpb15259dlv8ry5bhlq61yczy31fnsbvx2lhzf9r0i06vvc" + "commit": "1884b5c88ad4eb35450a7acf053594369ccb1b22", + "sha256": "0dr4fx14kmahg533ij92ycn1a8kagbadfml9iyziisllxypmjrzf" }, "stable": { "version": [ @@ -9899,14 +10509,14 @@ "repo": "skeeto/cl-lib-highlight", "unstable": { "version": [ - 20140127, - 2112 + 20200210, + 1951 ], "deps": [ "cl-lib" ], - "commit": "fd1b308e6e989791d1df14438efa6b77d20f7c7e", - "sha256": "1mc8kayw8fmvpl0z09v6i68s2lharlwpzff0cvcsfn0an2imj2d0" + "commit": "72afc4dd0107c357543244d09903767f49651c5c", + "sha256": "1ndjjdada219fgs68np4r7vg50s2h6060wd6wf0x3pnj8b0ca5wm" }, "stable": { "version": [ @@ -9952,14 +10562,14 @@ "repo": "emacsmirror/clang-format", "unstable": { "version": [ - 20191019, - 1213 + 20191121, + 1708 ], "deps": [ "cl-lib" ], - "commit": "113b767848ec1568f538e547d7c456a07d66b598", - "sha256": "1p2zz810nam5ciljd6hvln0qv9f8j53niry47fgwgsvwg527savx" + "commit": "2d6a4526a2518b7c0059a8a0dfee156e90a49369", + "sha256": "1l64r9rr59g26mlph6r8pkn8vzadmh3mh8gvv398kz8skayfa55f" } }, { @@ -10067,6 +10677,29 @@ "sha256": "0w34ixzk8vs2nv5xr7l1b3k0crl1lqvbq6gs5r4b8rhsx9b6c1mb" } }, + { + "ename": "clipetty", + "commit": "3f6895244ad88e79d9e5d98dd0ba28be96c79595", + "sha256": "0471hrl5nw4v83fglgnsa5yh810idbsliwvrm2b5i6zwgn3mndci", + "fetcher": "github", + "repo": "spudlyo/clipetty", + "unstable": { + "version": [ + 20200327, + 2241 + ], + "commit": "7ee3f9c52f70f80820a8c66fb6f796d6e01dd92d", + "sha256": "1vgk4ci5di0dxm2ql02g1h484nd6abqiv2xa7fh2d9rbkfh9px30" + }, + "stable": { + "version": [ + 0, + 1 + ], + "commit": "8430e1c01ae701fb85bb12703fe59a0f04fd0a6f", + "sha256": "0k3srxvy5r7hbwbr8r65l9gc7nynqrqx5hc39s3xgx3ddq66wq4i" + } + }, { "ename": "cliphist", "commit": "82d86dae4ad8efc8ef342883c164c56e43079171", @@ -10161,43 +10794,42 @@ "repo": "clojure-emacs/clj-refactor.el", "unstable": { "version": [ - 20190618, - 716 + 20200229, + 1105 ], "deps": [ "cider", "clojure-mode", - "edn", "hydra", "inflections", "multiple-cursors", "paredit", + "parseedn", "seq", "yasnippet" ], - "commit": "50d2d8aad5e0bd8002173b300f8419d72ceab7af", - "sha256": "012mck2bqngx7s11d37q1h8ig5c167bn5b5rg40jn4vsybhyp2f5" + "commit": "92d372393a031e5fa73ef926447afe72b574cb45", + "sha256": "0lnis1qwk1gyxgapl06d7ww1mlb9a8ahl8zwa7y2n3jrgfm25qp4" }, "stable": { "version": [ 2, - 4, + 5, 0 ], "deps": [ "cider", "clojure-mode", - "edn", "hydra", "inflections", "multiple-cursors", "paredit", - "s", + "parseedn", "seq", "yasnippet" ], - "commit": "3d5d1fbf28bfcc00f917cd96d6784968dcbbc962", - "sha256": "1z9278syijnzxfwlghz7bps3jp4cdl0fxg6igwpjfl8ln56hxazk" + "commit": "92d372393a031e5fa73ef926447afe72b574cb45", + "sha256": "0lnis1qwk1gyxgapl06d7ww1mlb9a8ahl8zwa7y2n3jrgfm25qp4" } }, { @@ -10340,11 +10972,11 @@ "repo": "clojure-emacs/clojure-mode", "unstable": { "version": [ - 20190914, - 1029 + 20200326, + 1542 ], - "commit": "147bf84189ef672161b2229ddc5c35713323ad59", - "sha256": "1m80pabpqc1lkc5zlcalqz6r6ppslj7zqx00b1c35innhzm7dzw0" + "commit": "2f8f3ce4974a5290a99077fcc9b36f1c42309b55", + "sha256": "145wpnbv3g2l7i6nckcs7bcrv8fj28gzpz3n0dl8vqlw0qb7hmgr" }, "stable": { "version": [ @@ -10364,14 +10996,14 @@ "repo": "clojure-emacs/clojure-mode", "unstable": { "version": [ - 20190712, - 639 + 20200320, + 823 ], "deps": [ "clojure-mode" ], - "commit": "147bf84189ef672161b2229ddc5c35713323ad59", - "sha256": "1m80pabpqc1lkc5zlcalqz6r6ppslj7zqx00b1c35innhzm7dzw0" + "commit": "2f8f3ce4974a5290a99077fcc9b36f1c42309b55", + "sha256": "145wpnbv3g2l7i6nckcs7bcrv8fj28gzpz3n0dl8vqlw0qb7hmgr" }, "stable": { "version": [ @@ -10456,16 +11088,16 @@ "repo": "clojure-emacs/clomacs", "unstable": { "version": [ - 20190925, - 1509 + 20191201, + 200 ], "deps": [ "cider", "s", "simple-httpd" ], - "commit": "292c8f5370a2c74094da46ede990b5e7cc8b55b8", - "sha256": "1rv57wqr09vl0caz4wjr0kqvhgvl5y1x6818v8m55rm2z8rim11i" + "commit": "88b8fc6d1b7105adae009578ef24fedaf157f341", + "sha256": "13rhnncqj8666g2v7493i8xh79mczjrmg24p12knzhkslxdnv9hp" }, "stable": { "version": [ @@ -10490,26 +11122,26 @@ "repo": "emacscollective/closql", "unstable": { "version": [ - 20190731, - 1450 + 20191229, + 1814 ], "deps": [ "emacsql-sqlite" ], - "commit": "70b98dbae53611d10a461d9b4a6f71086910dcef", - "sha256": "1wvhrihg663f61yzc7f0vha2abjdnlwbk0gjcwakdfk1bhwf5ikh" + "commit": "1e78f96dc976badb59067c986f7766cce89405cc", + "sha256": "03nknirj5jd3yf842amb274269fyiinr325g1x2snf1zgqfm3csn" }, "stable": { "version": [ 1, 0, - 0 + 1 ], "deps": [ "emacsql-sqlite" ], - "commit": "012b94f8695e194455111fd54eff0b94dd0dd0db", - "sha256": "1xhpfjjkjqfc1k2rj77cscclz5r7gpvv3hi202x178vdcpipjwar" + "commit": "92f8f2dba684b7c9cc60821aa5668d336544ab99", + "sha256": "0q8val0v4hryr0miliqjf38y4aybrihzncr0p1mwba861jlpy86n" } }, { @@ -10535,11 +11167,11 @@ "repo": "vallyscode/cloud-theme", "unstable": { "version": [ - 20190901, - 1701 + 20200221, + 2201 ], - "commit": "08090f00738809306fa156aac60d85ad6be9e672", - "sha256": "17a5xdn2m7gdaw71b79xs1cprh4jqgwsfgmb52gz2yaxb20hg7xy" + "commit": "bdac53baf1c38f83a16091db515047f7d42dac14", + "sha256": "0ikhngr4cq4v6dgj59fffbdd6z9pdfcckgblsk3xs26frqqqxknf" } }, { @@ -10618,14 +11250,14 @@ "repo": "Lindydancer/cmake-font-lock", "unstable": { "version": [ - 20190728, - 1901 + 20200103, + 1702 ], "deps": [ "cmake-mode" ], - "commit": "e0ceaaae19c13b66f781512e3295bfc6707b56f4", - "sha256": "03gsyn95dlmsn15bl353bphi3qy7ccn5bss3f7n97kf38bllh0yf" + "commit": "9e0fcd1ee2cf316f661f2d652368b12f83a4ec9c", + "sha256": "0m1i5ijiwsxral544xd4nygcr1qbackaghjfgr8pfb5yfwgdxifh" } }, { @@ -10673,19 +11305,17 @@ 20190710, 1319 ], - "commit": "5a3f539cd50621298d15df639c29a9c09aace443", - "sha256": "07jv0xpszir2vz0i6ixdaq4ra32b5icj3sr4wdm3faf052xnv3my" + "commit": "887eb6b7680685ae9bc8697f30bf6406df2d318e", + "sha256": "1lcfn79fn3cn0sdhw5f50l8830w6lh0j7lhrz7la27sg4ag5rmg0" }, "stable": { "version": [ 3, - 16, - 0, - -1, - 2 + 17, + 0 ], - "commit": "92780281c2e8a46223b262b152caa9c8329373b1", - "sha256": "1qia99zl24n56wlpxigs1hmma5b1sydifcwd4v542p2jiwciwmny" + "commit": "e3185e3d1b92a95c18f22f70b3cef6944dd019eb", + "sha256": "1r8nnaisx10d5r3kzyfz4af9mwb5f0nzz8nmn3xvnr12rryg2bwl" } }, { @@ -10753,11 +11383,11 @@ "repo": "tumashu/cnfonts", "unstable": { "version": [ - 20190314, - 1132 + 20200327, + 101 ], - "commit": "c31d13cc3c320fd5bf24bf8309c6d982a25c49ee", - "sha256": "0c50xacgcbk3kbkxbg713bmaidpmkhnsb89pn9v8p8rk5nz06b89" + "commit": "d741332ad4bcd9a136d5dc4974a050da8ca28888", + "sha256": "1f2nrklzvm0b09d1s5rxvzahc32rs5qdqx910a45fj95hlw2w2wc" }, "stable": { "version": [ @@ -10855,14 +11485,14 @@ "repo": "xuchunyang/code-stats-emacs", "unstable": { "version": [ - 20190407, - 236 + 20200216, + 2020 ], "deps": [ "request" ], - "commit": "15242297279cb0dee01fbb93ef7536e337e20bb7", - "sha256": "1f2fmxpijggk804pa2m86z2n9kp11n4w5k83a7l2qw6c855ax8lx" + "commit": "055c9ce9c1b630d062305919cbffb9cf88fd24a8", + "sha256": "12rydfm05i1qvav1c73wwlk63i8mvqi148hdx1fks7al4lkhg2nl" }, "stable": { "version": [ @@ -10911,10 +11541,10 @@ }, { "ename": "codic", - "commit": "acc9b816796b9f142c53f90593952b43c962d2d8", - "sha256": "0fq2qfqhkd6injgl66vcpd61j67shl9xj260aj6cgb2nriq0jxgn", + "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b", + "sha256": "05pa2a74c4ra7qqv3da3bx623vf36qrk5dm1jx1a4x1vbpgv5mz0", "fetcher": "github", - "repo": "syohex/emacs-codic", + "repo": "emacsorphanage/codic", "unstable": { "version": [ 20150926, @@ -10964,11 +11594,11 @@ "repo": "defunkt/coffee-mode", "unstable": { "version": [ - 20170324, - 940 + 20200315, + 1133 ], - "commit": "86ab8aae8662e8eff54d3013010b9c693b16eac5", - "sha256": "0hf06wp6cpsm7fivwkph6xvc2r39xww8q3aibp4nprlrwcmmv2al" + "commit": "35a41c7d8233eac0b267d9593e67fb8b6235e134", + "sha256": "11jppi95j9229qmj1747kfa602640kjz1xf5254ph3nhljxb0nsv" }, "stable": { "version": [ @@ -11009,14 +11639,14 @@ "repo": "patbl/colemak-evil", "unstable": { "version": [ - 20171015, - 2307 + 20200326, + 2359 ], "deps": [ "evil" ], - "commit": "192c779281ae1fbf2405dcdb55b3c5b2a1d0b3d1", - "sha256": "1clnvr7n6mx5b8pq1c6zchq7n1g8ip8hwgzc61ywrmiyv0v8rnc6" + "commit": "981bdcb1a48c6d9139493abe7e25fabe126e43c3", + "sha256": "0dqyqaqr71z4mipb4g5jxdw96lzb108fd5w4wi27023hfll3j1hc" } }, { @@ -11042,14 +11672,14 @@ "repo": "ankurdave/color-identifiers-mode", "unstable": { "version": [ - 20190805, - 1455 + 20200129, + 144 ], "deps": [ "dash" ], - "commit": "58fc8706a8f44e8df4678eec8ce15636fd4db758", - "sha256": "04splp4nvfva2cv87gwmga9ak4fk1x8z087lbz0x46qy9sj0dpz4" + "commit": "923ed4789c5ab66369ac4dda7eedb910951684a6", + "sha256": "1d502n6bpdscgpqfanax1h0iirgpq8x56vh6bbpzg9i042i3z7ls" }, "stable": { "version": [ @@ -11135,20 +11765,20 @@ "repo": "emacs-jp/replace-colorthemes", "unstable": { "version": [ - 20161219, - 1144 + 20200315, + 929 ], - "commit": "4f7da6f955f7c584c5dfab2dc170f9a3debd80f8", - "sha256": "08wmllq3smg7cp7jspmvd67z5vzmxvi136c6j87r1gsgprhgmhw4" + "commit": "6c25e4f29e1c75dabd350e04c190e81f7bca3cc3", + "sha256": "0fi0w7mjardvblqwvii9grgfzd11mjr2c35vzbq5dx01ydfib387" }, "stable": { "version": [ 0, 0, - 2 + 3 ], - "commit": "7107540d22e8ff045e0707de84c8b179fd829302", - "sha256": "0apvqrva3f7valjrxpslln8460kpr82z4zazj3lg3j82k102zla9" + "commit": "4f7da6f955f7c584c5dfab2dc170f9a3debd80f8", + "sha256": "08wmllq3smg7cp7jspmvd67z5vzmxvi136c6j87r1gsgprhgmhw4" } }, { @@ -11159,14 +11789,14 @@ "repo": "purcell/color-theme-sanityinc-solarized", "unstable": { "version": [ - 20190206, - 59 + 20200304, + 2156 ], "deps": [ "cl-lib" ], - "commit": "54daf1e5a0fbee6682cade1f59171daf185239e3", - "sha256": "0z9p9lbngrv8yx9asmz6x89183gw2v75l990hr8m0aydfbfn6gnz" + "commit": "c688337aaae9f47128a841479e4191858ac147f6", + "sha256": "0a16fn7h0yljlgg1scy82w5r6awd7gk6xf1qd83cx8kj2cg7k7vb" }, "stable": { "version": [ @@ -11185,11 +11815,11 @@ "repo": "purcell/color-theme-sanityinc-tomorrow", "unstable": { "version": [ - 20191025, - 423 + 20200220, + 1500 ], - "commit": "7f76f4c4e055bda2c2e633e6d913b5b9e205ed42", - "sha256": "12i0snv7nhf2annjb74nwk9m6bh1a812sgg44v87kcj5p4mq87hf" + "commit": "437bdd7a96fee751c6f817aff0100dd44bb07b23", + "sha256": "0cjbl7m6a0mmiiidn7w7hcggc58l5503swfnasbzyd1pzdrnn15y" }, "stable": { "version": [ @@ -11226,11 +11856,19 @@ "url": "https://git.sr.ht/~lthms/colorless-themes.el", "unstable": { "version": [ - 20190927, - 1305 + 20200325, + 1307 ], - "commit": "12678144d17edf36d34e6bcdc5435593e191d96d", - "sha256": "0fld15h92193bnbmka3ikq27hggxvsikzlzq4pi2n3kknq9hyh56" + "commit": "2b4c341640c8191a39e4bc28d6cd04c7d6dcbb37", + "sha256": "0ni9cnrv464fk840i1ll241kzkiy1zc6nfrbdv3ciixxdxbshxbn" + }, + "stable": { + "version": [ + 0, + 2 + ], + "commit": "8e539097185704444a5dd5545924de92c11ba767", + "sha256": "1p16vxai8dj1vy4ahflwij1ldx00jzrjcinpgpc7wgh6ka748v11" } }, { @@ -11287,6 +11925,19 @@ "cl-lib", "s" ], + "commit": "b0491d5340c5f5c516b44aa7bfef6f6cf2998484", + "sha256": "0d6pxwi5mbb98zzx3j55w221541674d69pxmf55yji6hly8yqavv" + }, + "stable": { + "version": [ + 0, + 0, + 5 + ], + "deps": [ + "cl-lib", + "s" + ], "commit": "e3c6a3a88c8f7e3ce7a5c6756b47a7aba7ffe149", "sha256": "0c3pcgr95nhf2yx66hxiwwl6k2fqz8cpmr0y0fxzahkmvc4c9zi6" } @@ -11299,11 +11950,11 @@ "repo": "cyrus-and/comb", "unstable": { "version": [ - 20190918, - 14 + 20200114, + 1325 ], - "commit": "a68fd0274592e8dcca28a337c9ee913cb84efa9b", - "sha256": "1n2nk8nhvfiz8dw863q91k04jrmafirdi0mj88awq9ibpw453vzz" + "commit": "bd8e11b8593bc48f81ce01c0657d5a7977cafdf6", + "sha256": "0ndz25x1l0rzn5j8xg9ql2s2lgin1893kzf722chyk8147qwb0i8" }, "stable": { "version": [ @@ -11323,20 +11974,20 @@ "repo": "matthewbauer/comint-hyperlink", "unstable": { "version": [ - 20191022, - 1451 + 20191104, + 2224 ], - "commit": "bd5a5e95f0e451a774fc5b197456f47f9eb4c50b", - "sha256": "0wri4ygdkyq54107hg0ij2nxzbpk8irfd2x2c94qkx97yql4yj54" + "commit": "a7878825788ff6b9d6b8a5adf0214a028bad895e", + "sha256": "19fww5aciqx4h67hpmzf564n0ygzg69v1sk1qjyhbs27pq5zrjmq" }, "stable": { "version": [ 0, 1, - 5 + 6 ], - "commit": "bd5a5e95f0e451a774fc5b197456f47f9eb4c50b", - "sha256": "0wri4ygdkyq54107hg0ij2nxzbpk8irfd2x2c94qkx97yql4yj54" + "commit": "a7878825788ff6b9d6b8a5adf0214a028bad895e", + "sha256": "19fww5aciqx4h67hpmzf564n0ygzg69v1sk1qjyhbs27pq5zrjmq" } }, { @@ -11347,11 +11998,11 @@ "repo": "hying-caritas/comint-intercept", "unstable": { "version": [ - 20170317, - 1228 + 20200106, + 454 ], - "commit": "a329abf01fa8e0c6b02b46b29bcb421a21120dc5", - "sha256": "0qswlafav415fh1dwqjsjmqlbnsjdl9gl3nzzya76ql5f0gb7svb" + "commit": "3c9a6125e450435b79ab5e6466f830e57c5e0a30", + "sha256": "06cvphbnhb89h4ss3y87lladb0dcsrkij8pfv65ky06brc1jl0hx" } }, { @@ -11496,8 +12147,8 @@ 20181213, 1045 ], - "commit": "9a825ae98166c9dbbf106e7be62ee69dd9f0342f", - "sha256": "1x30iyvvxggbh7xvp8lwpirvpqijchqf2fdaw4xrlbw5vajlaxcx" + "commit": "dede0f8ecb72156fa6ae81198ea570ead02997ff", + "sha256": "1ykicd6yp495s7795mlfwd54lp0427j8mw6ajbqsw2c2w0f7jcjr" }, "stable": { "version": [ @@ -11595,20 +12246,20 @@ "repo": "company-mode/company-mode", "unstable": { "version": [ - 20190907, - 1149 + 20200324, + 2145 ], - "commit": "f6974e3103497afe01da2ad4d2ea3668ad68bc27", - "sha256": "0pi6n1ggxb2i8x8f2wf1il8wcm6rd6ilvgbbh7ni95by1c987vbp" + "commit": "61ddd9afb58879267bf947b152a68f3dbadb9259", + "sha256": "097xy8ar6dms4zn7ymxxgmhap096fs8nc5j3js5srzmv14rswm36" }, "stable": { "version": [ 0, 9, - 10 + 12 ], - "commit": "3eda0ba23921d43b733f7975e56d490a34b9f30b", - "sha256": "0shmv48bq9l5xm60dwx9lqyq6b39y3d7qjxdlah7dpipv5vhra42" + "commit": "490d3e4e7ef3fbc90fb3e8747f902bf839a924cc", + "sha256": "0c31amc6gyfkmb1ii6mm56c75za1yxkj2iyhrjc45nn2mrh7yj7a" } }, { @@ -11619,8 +12270,8 @@ "repo": "pythonic-emacs/company-anaconda", "unstable": { "version": [ - 20181025, - 1305 + 20200129, + 1830 ], "deps": [ "anaconda-mode", @@ -11629,8 +12280,8 @@ "dash", "s" ], - "commit": "398fad19160cc1d0e31dcb1d4a3f88de7a2d355d", - "sha256": "182cijh6l82jj1r7iwd93h3np9c8fvcibjhv7860rk9ik41n7wil" + "commit": "a31354ca8ea35c0b2c1f6bb2b1a02a6cfb5e564b", + "sha256": "05qaxb3qpz3bi6c88qspf50sh15hzc01354zhj0amd07bmqzhwfg" }, "stable": { "version": [ @@ -11657,26 +12308,26 @@ "repo": "krzysztof-magosa/company-ansible", "unstable": { "version": [ - 20190301, - 2111 + 20200306, + 1441 ], "deps": [ "company" ], - "commit": "c31efced8a9b461de5982ed94c234fda3df96f10", - "sha256": "0d2c3ckmwn36fwhvwfvqg86hfd2jwkg2n301chhxzs03v0mc03mx" + "commit": "79dd421b161efa49fbdffad57fa40edb41f484a3", + "sha256": "0b05n6m47vyhirxfqzapzl4gf179aks1296qsw1sw8v84kb5kl0x" }, "stable": { "version": [ 0, - 7, - 1 + 8, + 0 ], "deps": [ "company" ], - "commit": "c6dc714e3a15f89671ae5e8fe668858b20ef63e8", - "sha256": "01nly13i2bs77lrvkm26i96vrrigbxpb9cakski9fv3xrvfxq9bv" + "commit": "2ea0be24f003dc64a30412df76298152be29103c", + "sha256": "1h3cl975k7lbk8x0r0f2yjw8nc5w455npc3nn4jx5nynirvz3i7n" } }, { @@ -11730,15 +12381,15 @@ "url": "https://bitbucket.org/pdo/axiom-environment", "unstable": { "version": [ - 20171024, - 2010 + 20191027, + 1928 ], "deps": [ "axiom-environment", "company" ], - "commit": "505d85ffc051a7725344c960b1255597dab17780", - "sha256": "1251xc58nc2h6n4dibfdp7z85y609dkpc499ga8j9s0nwif009fs" + "commit": "2c5384b994266008a20558db4ffe0525e66c0f5f", + "sha256": "17f40w9r4whz0v007pp13w060jq87ag42p21hcj93c14py5s4g67" } }, { @@ -11839,8 +12490,8 @@ "repo": "cpitclaudel/company-coq", "unstable": { "version": [ - 20191004, - 1358 + 20200130, + 2058 ], "deps": [ "cl-lib", @@ -11849,8 +12500,8 @@ "dash", "yasnippet" ], - "commit": "109f86ddbb87313b8ef763ae97d9445230b6d051", - "sha256": "1y2dl262g2l6zsjmlmmi6fk3p83wv2j8qh83x5j09dj1j1vyx4hy" + "commit": "f9dba9ddff7da99a93d8a6e26d9b1d813bc96b2f", + "sha256": "1hl8gr8afx2i5bia7vq3vn4shbaz8fps3h30ldvq141kfvmcp8jm" }, "stable": { "version": [ @@ -11869,6 +12520,36 @@ "sha256": "0dxi4h8xqq5647k7h89s4pi8nwyj3brlhsckrv3p3b1g4dr6mk3b" } }, + { + "ename": "company-ctags", + "commit": "b548dbf4a388d2f69205786351a1d4336e0c0e88", + "sha256": "17j7cl5b6vd7ymbci83s0nfs8zn4h8zvir57cp9wl2z5wcjyxzcn", + "fetcher": "github", + "repo": "redguardtoo/company-ctags", + "unstable": { + "version": [ + 20200209, + 47 + ], + "deps": [ + "company" + ], + "commit": "fa5a3f7b765fc0e42a378fa2293be4c2817fe04e", + "sha256": "1wgxmy1pwwc7mvgw9bx3vvaay1pirzghvpqs6d9mnx1wbzn1x29b" + }, + "stable": { + "version": [ + 0, + 0, + 3 + ], + "deps": [ + "company" + ], + "commit": "3d21eaa511b5f0ca55205f203d28fd10ea1d3b39", + "sha256": "0lj5gkj2dl0c7sva8bi3bng2gm90sjq15g7w8r9nz70666szdr1i" + } + }, { "ename": "company-dcd", "commit": "ad5be8c53911271fba03a88da7e9d518c6508ffe", @@ -12018,28 +12699,28 @@ "repo": "dunn/company-emoji", "unstable": { "version": [ - 20180925, - 2008 + 20191226, + 1915 ], "deps": [ "cl-lib", "company" ], - "commit": "f0d91d5be0077b20b418a3ba37d36f431fae322f", - "sha256": "0aqqi1ksyglx7w347a99flpfa9pm1jakdvsgk4jr2ahv6j13nawg" + "commit": "fc45b56f3e2081d794f243bce705e77d4e29fc06", + "sha256": "0r9zcbm3nb3zw5cwrkl098v5b49jbga5404bj7j55g6k4rwkjar2" }, "stable": { "version": [ 2, 5, - 1 + 2 ], "deps": [ "cl-lib", "company" ], - "commit": "271909be44f86bcc294739ca45992cdc3caee39f", - "sha256": "1rihgld1wxwfdpqv7d9gcgd8xpnms5kpw61z30y18fmkxhhmid3c" + "commit": "fc45b56f3e2081d794f243bce705e77d4e29fc06", + "sha256": "0r9zcbm3nb3zw5cwrkl098v5b49jbga5404bj7j55g6k4rwkjar2" } }, { @@ -12127,6 +12808,19 @@ "company", "s" ], + "commit": "2af24f053465ab370566a49c231d541ca9509850", + "sha256": "0ki049jpd4xymagaxd4zvnj3bm7d7d797xa1bm8lfi701m2jjlgg" + }, + "stable": { + "version": [ + 0, + 5, + 3 + ], + "deps": [ + "company", + "s" + ], "commit": "a97f55b60f427e536e637898d12792154d134aab", "sha256": "1iw1vk1pgdacvfh17n45kk98rxml3f6kxnijmpp7fzz4q07yiv7w" } @@ -12167,10 +12861,10 @@ }, { "ename": "company-ghci", - "commit": "3416586d4d782cdd61a56159c5f80a0ca9b3ddf4", - "sha256": "11sygcn8jb4rcc1hfiadhsyanbhsmnalpz2qvh5iaba0l165bsgg", + "commit": "cdd1f8002636bf02c7a3d3d0a075758972eaf228", + "sha256": "1qps4bgnmwbaml3dhx3lkcznngl8w5j58pacw35kbk4q8r69s4kx", "fetcher": "github", - "repo": "orimh/company-ghci", + "repo": "horellana/company-ghci", "unstable": { "version": [ 20190707, @@ -12218,8 +12912,8 @@ "company", "go-mode" ], - "commit": "7fb65232883f19a8305706b4b4ff32916ffbcaf5", - "sha256": "09yqziccv9mg5jlmhw8gslpcwwiiah0hs05nq0qnsbdnvc8bs4lr" + "commit": "939b4a677f2f843ea13d9dd90206d57111f0ceb9", + "sha256": "1yfw8y6czkqgxpyfdxwvkcrsmwbca7l0lr4jqmnpmm5m5rylcwr9" }, "stable": { "version": [ @@ -12321,22 +13015,22 @@ }, { "ename": "company-jedi", - "commit": "bded1840a39fbf1e014c01276eb2f9c5a4fc218f", - "sha256": "1krrgrjq967c3j02y0i345yx6w4crisnj1k3bhih6j849fvy3fvj", + "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b", + "sha256": "0a1p00jcvslm7h08kzdf6by9v4lf850jb2ki8gl8hgdcf5yvkdyi", "fetcher": "github", - "repo": "syohex/emacs-company-jedi", + "repo": "emacsorphanage/company-jedi", "unstable": { "version": [ - 20151217, - 321 + 20200324, + 25 ], "deps": [ "cl-lib", "company", "jedi-core" ], - "commit": "2f54e791e10f5dc0ff164bfe97f1878359fab6f6", - "sha256": "0bpqswcc6a65wms0pdk9rsad9jiigmx2l1jaqr8bz4va945qdlhg" + "commit": "5232fbc1fdbfc81b1dd883afb720338c3e39556b", + "sha256": "155dba3qim7r8xhrv6dkhzhcc2km9761g5d3qmgd37jnk0mmd8l0" }, "stable": { "version": [ @@ -12371,8 +13065,8 @@ "lean-mode", "s" ], - "commit": "b5ba739f68ef731c03247bf6db2708502c8ac46c", - "sha256": "1dx0a76l7w3ck23sdjymigk1hycqiawfwv24yz6wqyy74f1pcyjf" + "commit": "65b55b1711fb61129312044d5ac7e6a2c2ee245c", + "sha256": "1zmw8950qhry2ixk2ng0pg4j0vwx11nvjlrpab9jg6x47ys9j65n" } }, { @@ -12440,27 +13134,27 @@ "repo": "vspinu/company-math", "unstable": { "version": [ - 20190507, - 2006 + 20200131, + 2337 ], "deps": [ "company", "math-symbol-lists" ], - "commit": "600e49449644f6835f9dc3501bc58461999e8ab9", - "sha256": "1ps2lpkzn8mjbpcbvvy1qz3xbgrh6951x8y9bsd1fm32drdph9lh" + "commit": "a796053590012e6a15c8b527b521ffc15d137bd0", + "sha256": "1y1fw926insgdl7ib9ynxjrxf3p6wfjkfxvf5vgdca7267cvcll1" }, "stable": { "version": [ 1, - 3 + 4 ], "deps": [ "company", "math-symbol-lists" ], - "commit": "7e7f8c71f57b12f9bcbbf01f2bbcc59343ad76d4", - "sha256": "0akqhhjvzsg0lbqx4bbkfkzijidwgi3bb32sxl3yxz7zfm9pbhn2" + "commit": "a796053590012e6a15c8b527b521ffc15d137bd0", + "sha256": "1y1fw926insgdl7ib9ynxjrxf3p6wfjkfxvf5vgdca7267cvcll1" } }, { @@ -12483,6 +13177,25 @@ "sha256": "0sfa674g1qm280s0pc3n6qiiphj5i9ibknckx5capkrkxb5cwpkw" } }, + { + "ename": "company-native-complete", + "commit": "b112834a7ab05829fbc9101151bf82440bf6e551", + "sha256": "18f62r8y9k5flkqhzz6sr2w3srdhb6cpzrcyl98pv0zy3dq49lp4", + "fetcher": "github", + "repo": "CeleritasCelery/emacs-native-shell-complete", + "unstable": { + "version": [ + 20200315, + 2144 + ], + "deps": [ + "company", + "native-complete" + ], + "commit": "11803df3706fb23d58e418a14ce981204a64e847", + "sha256": "0maljdxigd4fvrm7pv3ssyywl3c1zhfpqdymq933iig7d2hrwxm1" + } + }, { "ename": "company-nginx", "commit": "fb8843cddfa9133ea9e2790e8a1d8051cd4dabea", @@ -12546,8 +13259,8 @@ "company", "nixos-options" ], - "commit": "45c8d90748304c90e1503c9fa8db0443f3d4bd89", - "sha256": "0hsr8acsvfb42drb8f2wkpgqyh3csny7l82qv4k2l83xf022cs1d" + "commit": "977b9a505ffc8b33b70ec7742f90e469b3168297", + "sha256": "07vidk3bnby1ch51i67llfdx2q8xc4ax5hvlrc3f72y9gkcpir4x" }, "stable": { "version": [ @@ -12564,6 +13277,38 @@ "sha256": "1lm7rkgf7q5g4ji6v1masfbhxdpwni8d77dapsy5k9p73cr2aqld" } }, + { + "ename": "company-org-roam", + "commit": "546d4c869c4d2a0981a572b5653f5e9ab8bcec47", + "sha256": "0kxf4fhs8ikw06ljdkk4ky1fb83xpmknasp7kyd3lpdk63cfvijh", + "fetcher": "github", + "repo": "jethrokuan/company-org-roam", + "unstable": { + "version": [ + 20200329, + 609 + ], + "deps": [ + "company", + "dash", + "org-roam" + ], + "commit": "0d14bf56f53b1fcf14418d3e545785f4857b5f06", + "sha256": "0kjf3pqlb95m1z057sjkqmsi1qhh3d4snp29gk3fzz278bc7sl45" + }, + "stable": { + "version": [ + 0, + 1 + ], + "deps": [ + "company", + "org-roam" + ], + "commit": "a4c3f60883de783b190d4eb8bcc85f5912d9393a", + "sha256": "087z699i7y0q72s5qc7ks09bzin9cl3gm3aqs4ka99lzg676lrl8" + } + }, { "ename": "company-php", "commit": "ac283f1b65c3ba6278e9d3236e5a19734e42b123", @@ -12580,8 +13325,8 @@ "cl-lib", "company" ], - "commit": "84aa4f0c4ffafa2c2fdfbcb16662abac0a571013", - "sha256": "1miz6nwsdbc9n3jc7qcb0mvf2yp0k9a7pyl0ifbdjjr2160m2lql" + "commit": "7b8db219080b714a7b8ba452ddb82bd08f7db152", + "sha256": "1zm04hqy6dg57swk05qvl5idzb11camcdmh7lrh6mqsvrcsvym2q" }, "stable": { "version": [ @@ -12606,15 +13351,15 @@ "repo": "emacs-php/phpactor.el", "unstable": { "version": [ - 20190823, - 1219 + 20200121, + 1218 ], "deps": [ "company", "phpactor" ], - "commit": "a12ec67ce9de9e96c89548052ae323a277cba846", - "sha256": "031i5s3cv9z2d6vnwbf91291fgafcqg61km9b3z7p9bk91vbkxsy" + "commit": "31fe2ea4dbd5c2f23efd6a4ec2ec881a4ced6b05", + "sha256": "0j52n0vs85q7zz5xfqw4rgrjjpr7mzfiqbzk7vwkcdmpnax608w5" }, "stable": { "version": [ @@ -12666,8 +13411,8 @@ "company", "pollen-mode" ], - "commit": "819edf830e9519f8ca57e9cef31211e3f444d11a", - "sha256": "0c06kfbyk2g0kxwlh6g3r7ij06ip6x9ni0bin24drwr0qj2vis2d" + "commit": "d0a33591498013886c2c4676e204cd684954e82a", + "sha256": "0lg65hzdjwbc3dav79f3jm7251yyq8ghcbccvkb32vwz281xhjnh" } }, { @@ -12678,15 +13423,28 @@ "repo": "tumashu/company-posframe", "unstable": { "version": [ - 20190626, - 759 + 20200327, + 148 ], "deps": [ "company", "posframe" ], - "commit": "849867a05efdc1a93ef989e3a0f8944522bf16b3", - "sha256": "1q1iflh9sx90g53hl5hkgv5g09jm3am87mg3nysq1rjkm40d1nc1" + "commit": "18b83d29dae75239e22ca73d91eb09ceca5e77c4", + "sha256": "0gb3y80qhk1xgdx0iglcj78wvnbxnaiyvfgg0bmfvhswjii80160" + }, + "stable": { + "version": [ + 0, + 1, + 0 + ], + "deps": [ + "company", + "posframe" + ], + "commit": "361de25739e866843b770638669f5bdf7ed95610", + "sha256": "0azmln9mssc52563vs5g3z3ajv4p6908c94v3fij1q0bdvlmcv6g" } }, { @@ -12697,27 +13455,27 @@ "repo": "raxod502/prescient.el", "unstable": { "version": [ - 20190921, - 3 + 20191224, + 220 ], "deps": [ "company", "prescient" ], - "commit": "82a90c4142c369f4090a42536179c6029d3fdafd", - "sha256": "0n919w068j73dnlxfzsvzh7j385phi4z718pi6xq6cygkjkq9zq8" + "commit": "a194852e8022762843052e58a9d0fbdaa1df0fe5", + "sha256": "0da4s32fza42vdiqhh7cdim08by5i4909q93ivxkmgrmqfgdvz0p" }, "stable": { "version": [ - 3, - 3 + 4, + 0 ], "deps": [ "company", "prescient" ], - "commit": "2f01b640e3a487718dbc481d14406005c0212ed9", - "sha256": "1wqk1g8fjpcbpiz32k7arnisncd4n9zs84dn3qn9y8ggjzldqy91" + "commit": "ad9fbe8a17fe74b27a39bcc034f3da1865663387", + "sha256": "008hxy1vasnyz36wwg44gikpi80ng75hj85nrswk60b7z7cznbmr" } }, { @@ -12741,10 +13499,10 @@ }, { "ename": "company-quickhelp", - "commit": "022cc4fee54bb0194822947c70058145e2980b94", - "sha256": "042bwv0wd4hksbm528zb7pbllzk83p8qjq5f8z46p84c8mmxfp9g", + "commit": "651679c2430c69294d1a1870fd206b7ea69ab017", + "sha256": "0g4l12j85g129p9li4p7rsji263qy05hgkb7qi7k1ik5s2bm7jdw", "fetcher": "github", - "repo": "expez/company-quickhelp", + "repo": "company-mode/company-quickhelp", "unstable": { "version": [ 20180525, @@ -12771,6 +13529,38 @@ "sha256": "08ccsfvwdpzpj0gai3xrdb2bv1nl6myjkxsc5774pbvlq9nkfdvr" } }, + { + "ename": "company-quickhelp-terminal", + "commit": "f5fa4121cd4e2a49adfd23929c73f385cf7d1264", + "sha256": "13pig4bkfhwvpak78v85dzmrv7hwqd3pz4s5y8cb7xa033i1v78s", + "fetcher": "github", + "repo": "jcs-elpa/company-quickhelp-terminal", + "unstable": { + "version": [ + 20200309, + 245 + ], + "deps": [ + "company-quickhelp", + "popup" + ], + "commit": "0a7c86258b3069adbeb0889e21c6977390d00f4f", + "sha256": "0zbzbm4hchp1a8m0bdcp9d97i0yx3kkhp5vbs0m5pr2h13xdc7vj" + }, + "stable": { + "version": [ + 0, + 0, + 2 + ], + "deps": [ + "company-quickhelp", + "popup" + ], + "commit": "344e30202fb38e1947b8b17f403bb7b2208936fe", + "sha256": "1gzmx8zz93261m9kks2hdgdhfs9vz8gsdxx5xkldbnz4g1wbmh2a" + } + }, { "ename": "company-racer", "commit": "c4671a674dbc1620a41e0ff99508892a25eec2ad", @@ -12806,8 +13596,8 @@ "company", "s" ], - "commit": "33935e96540201adab43f3a765d62289eba9e286", - "sha256": "1sp4109fbj6cxq6v9lmkpkrlr6is340ibaqpslkkjyacjv6sv4cm" + "commit": "275ef708f08d3bf0eb30632148e5c6184eeaacdb", + "sha256": "118cgw5lsffqdqz95mnkw36mmnsbg9m52r2np4m7v14mjjwr9fby" } }, { @@ -12854,27 +13644,27 @@ "repo": "Andersbakken/rtags", "unstable": { "version": [ - 20190821, - 449 + 20191222, + 920 ], "deps": [ "company", "rtags" ], - "commit": "f2633f565fc5e7e6958993ef105225f4e68e43ba", - "sha256": "1bjgr7wa82ccrc25r7agfaq3iz7xlp1qchvkmkx3xy59jv4yafjz" + "commit": "d370c09007d299dc6b6aae719bf728b95dd426c5", + "sha256": "0hakpd1dwhn2nkfhx4hli0l7hf3p1g8vpyrrczq45smfsz73d96x" }, "stable": { "version": [ - 3, - 23 + 2, + 38 ], "deps": [ "company", "rtags" ], - "commit": "7169ed577d676690a3c6f0025b54e8477d80eacf", - "sha256": "1i94dizg3wvkvq8c2pf5bzkx8zwzcfi4p3l73c779y145bygssnq" + "commit": "9687ccdb9e539981e7934e768ea5c84464a61139", + "sha256": "1r6l7dgr2ch586zrdi5l8fhdj4qdva8ldz7cjvi2byc2pd2xs8rx" } }, { @@ -12927,21 +13717,22 @@ "company", "solidity-mode" ], - "commit": "47f15b2663a6cf92ae6ebf655841a9509ad79017", - "sha256": "0zhr5fcv8vlkcnya36y9smpgw7ylb0fkx0px8zr0zhr2f9xgjmph" + "commit": "b190993dcb8376e80fb1d9b71f3ed6170bd2a341", + "sha256": "0s5xk38k3mc1d40dszlcgfpn5rvb7nsnnpmgr3c0bwqa4xh6yqrg" }, "stable": { "version": [ 0, 1, - 9 + 10 ], "deps": [ "cl-lib", - "company" + "company", + "solidity-mode" ], - "commit": "d0ff4dea49540f37301d869f2797fca2492f55d5", - "sha256": "1wcy5z4wggn3zs9h1kyvm0ji51ppjcqdmym3mmxbrhan6a0kq724" + "commit": "93412f211fad7dfc3b02aa226856fc52b6a15c22", + "sha256": "06zqs7p22h1jkm3zs1i16wvch6rnzzb3m8d5r9r51clzpasf6zy8" } }, { @@ -12980,6 +13771,38 @@ "sha256": "01dh0wdaydiai4v13r8g05rpiwqr5qqi34wif8vbk2mrr25wc7i9" } }, + { + "ename": "company-stan", + "commit": "33fd0382da97c7397b1e4435860e7344d70399b8", + "sha256": "064476s2gccjmwhrc406460k3aqc80giqqyjbii8243964rdx4p0", + "fetcher": "github", + "repo": "stan-dev/stan-mode", + "unstable": { + "version": [ + 20200221, + 2025 + ], + "deps": [ + "company", + "stan-mode" + ], + "commit": "599a0440086c660e6823622b35058f6d2d6d9637", + "sha256": "0mm0kpyihpd55hx14smlm0ayz05zw750fihhqhxqc258y8y73m5y" + }, + "stable": { + "version": [ + 10, + 1, + 0 + ], + "deps": [ + "company", + "stan-mode" + ], + "commit": "599a0440086c660e6823622b35058f6d2d6d9637", + "sha256": "0mm0kpyihpd55hx14smlm0ayz05zw750fihhqhxqc258y8y73m5y" + } + }, { "ename": "company-statistics", "commit": "89d05b43f31ec157ce8e7bfba4b7c9119bda6dd2", @@ -13036,8 +13859,8 @@ "repo": "TommyX12/company-tabnine", "unstable": { "version": [ - 20190829, - 1801 + 20200327, + 2137 ], "deps": [ "cl-lib", @@ -13046,8 +13869,8 @@ "s", "unicode-escape" ], - "commit": "81b7440a7253e1753cf41932237fd64c1c1e44b6", - "sha256": "15nmli9drrb25d5xn31v1ja2hmc9kgpn2hjj6b2azj391yw0q4a3" + "commit": "e986a4ad0d0e0174b08f1fb94c4f804a98a344e4", + "sha256": "1g5qv1fg22x1nkj696n12ixa2akgzivdc5q7yzy502kqjg67mkx5" } }, { @@ -13129,15 +13952,15 @@ "repo": "Wilfred/company-try-hard", "unstable": { "version": [ - 20150902, - 2206 + 20191106, + 2105 ], "deps": [ "company", "dash" ], - "commit": "70b94cfc40c576af404e743133979048e1bd2610", - "sha256": "1isnk2i64kppsr23nr6qm5kwxxwcp4xazjwvm2chyzl4vbvp03p2" + "commit": "8a417255b4da9f2e3889f6024755290dcc5884d1", + "sha256": "14b3sad9a7dr8j7xhnspk905ybidqz8h4hx2rw4bgl25imhmlysz" } }, { @@ -13213,8 +14036,8 @@ "s", "ycmd" ], - "commit": "6f4f7384b82203cccf208e3ec09252eb079439f9", - "sha256": "1bl86x8nqw4jqzb8pfm6hm316hmk1bx8v3qz7wq9z92hb67ck2kn" + "commit": "bc81b992f79100c98f56b7b83caf64cb8ea60477", + "sha256": "0kwm5q2sv2xrsmnr0gc2fimp6b2cvwh5mhqsmcc3lgs32m4j1kwv" }, "stable": { "version": [ @@ -13242,11 +14065,41 @@ "repo": "jjzmajic/compdef", "unstable": { "version": [ - 20190929, - 655 + 20200304, + 611 ], - "commit": "67104a38763cc819644f711248b170a43bce151b", - "sha256": "1f6y6cr67gps9jp5hd20xszfd3k26v70g6z4g5db6wdkvlnc2wkg" + "commit": "30fb5846ed851efee641ce8c5d8879ad36cd7ac6", + "sha256": "0qn99jynafjyxc6fy9z888h7j7drs2mz34acwq8yh22v314x2639" + } + }, + { + "ename": "competitive-programming-snippets", + "commit": "0100042ee1356dd709d8bbeec4539ddc64317baa", + "sha256": "1mdkv2pn83mgj7yy4xf8nkm9bvxldiy7gdx4bpv36b9xw5zz6q6r", + "fetcher": "github", + "repo": "sei40kr/competitive-programming-snippets", + "unstable": { + "version": [ + 20200122, + 1558 + ], + "deps": [ + "yasnippet" + ], + "commit": "b0245fcbabf035d89b80150add5d6a47859ab555", + "sha256": "07l495vv3by6r62i48jbfyr5pp1p6896cz25gkc7p3xqwrhi2min" + }, + "stable": { + "version": [ + 1, + 1, + 4 + ], + "deps": [ + "yasnippet" + ], + "commit": "b0245fcbabf035d89b80150add5d6a47859ab555", + "sha256": "07l495vv3by6r62i48jbfyr5pp1p6896cz25gkc7p3xqwrhi2min" } }, { @@ -13281,18 +14134,19 @@ "repo": "emacs-php/composer.el", "unstable": { "version": [ - 20180923, - 1140 + 20200214, + 1119 ], "deps": [ + "cl-lib", "f", "php-runtime", "request", "s", "seq" ], - "commit": "6c1578b2352c81cc9a22616a70db2a14b7d2b67f", - "sha256": "0fijw3kcl4vyc5x7a1syqslsj13mwkq1k3bs4p60v2jg1fxqarrb" + "commit": "8b4867e30efcdf10c6d9a74822aa281404377818", + "sha256": "1605fk7nkzjshn6faxw0ycn45a1wbivpmlmyaxcqzjhmawavky6b" }, "stable": { "version": [ @@ -13319,14 +14173,14 @@ "repo": "daviderestivo/comware-router-mode", "unstable": { "version": [ - 20190923, - 542 + 20200106, + 2011 ], "deps": [ "dash" ], - "commit": "17d8bf8bcf2d7551480cd9a4785c3a6e832e6d8a", - "sha256": "0dm5gvaxgbn2flj0k6y6w0nw4ia02lhwpkh3iawv00lqndxqjrv6" + "commit": "e6e2d9ca71a7a46c0e4ebeb30e4994c2a8b5fe0d", + "sha256": "16x9xbf3km6k8xjivlf2ill7pmvrmaf3c35baznixm6hwdcv4wib" } }, { @@ -13367,8 +14221,8 @@ "repo": "necaris/conda.el", "unstable": { "version": [ - 20191001, - 1753 + 20200120, + 1721 ], "deps": [ "dash", @@ -13376,8 +14230,8 @@ "pythonic", "s" ], - "commit": "ffafcc47ddc58b53b5dac19f6f0f745b316d4522", - "sha256": "02pvi03blbfkyzy46ma7zg1xfgikxnxrs3silraaym25bn633rn5" + "commit": "335474e409774e31125fe320a4a54c8d92bf5fa2", + "sha256": "10aadbvsg6qy11nfkmc5rvivjvyak6501srmjl6lvzxsw8q79fj4" }, "stable": { "version": [ @@ -13511,19 +14365,19 @@ "repo": "myrkr/dictionary-el", "unstable": { "version": [ - 20140718, - 329 + 20191111, + 446 ], - "commit": "6edc1d0a4156d33c3da0c1649c308b809fda46e1", - "sha256": "0g95q3yggzxr8d2gjxamfwx8xbzf182naxpb265r7v9awd35bqk5" + "commit": "c9cad101100975e88873636bfd426b7a19304ebd", + "sha256": "0zsjbpq0s0xdxd9r541f04bj1khhgzhdlzr0m4p17zjh1zardbpi" }, "stable": { "version": [ 1, - 10 + 11 ], - "commit": "9ef1672ecd367827381bbbc9af93685980083c5c", - "sha256": "05xfgn9sabi1ykk8zbk2vza1g8pdrg08j5cb58f50nda3q8ndf4s" + "commit": "c9cad101100975e88873636bfd426b7a19304ebd", + "sha256": "0zsjbpq0s0xdxd9r541f04bj1khhgzhdlzr0m4p17zjh1zardbpi" } }, { @@ -13823,14 +14677,14 @@ "repo": "abo-abo/swiper", "unstable": { "version": [ - 20191024, - 1621 + 20200319, + 1329 ], "deps": [ "swiper" ], - "commit": "c8120fb614425bf76bee687183f70b4b4c2ffc9d", - "sha256": "1m62yv9fxw1456v92li3acrwchqs9n56g150nwdppsic5vwlzgnz" + "commit": "64f05f4735bba8b708bc12cfc2cbfb7fb7706787", + "sha256": "16b75jw0by1f8divymfygjbp5mikc2bjz4nqd907mdsndf8k6i8q" }, "stable": { "version": [ @@ -13903,15 +14757,28 @@ "repo": "hlissner/emacs-counsel-css", "unstable": { "version": [ - 20180302, - 1036 + 20191031, + 345 ], "deps": [ "cl-lib", "counsel" ], - "commit": "0536af00236cdce1ed08b40dd46c917e8b4b8869", - "sha256": "04qm5dqxnl4s0axbrin7a7dpj3h8rx096q01bwzfs10qsdx3l7c0" + "commit": "61a38c9d50fa9d1e38b2fa550d07130eb9322524", + "sha256": "0c8assn7dc8dhzyzk37x7y8s266pvr6hs0vh13y65z0sgxk59i2w" + }, + "stable": { + "version": [ + 1, + 0, + 7 + ], + "deps": [ + "cl-lib", + "counsel" + ], + "commit": "61a38c9d50fa9d1e38b2fa550d07130eb9322524", + "sha256": "0c8assn7dc8dhzyzk37x7y8s266pvr6hs0vh13y65z0sgxk59i2w" } }, { @@ -13922,16 +14789,16 @@ "repo": "nathankot/counsel-dash", "unstable": { "version": [ - 20191021, - 1648 + 20200103, + 1411 ], "deps": [ "cl-lib", "counsel", "dash-docs" ], - "commit": "7027868d483b51d949b9f20fb8f34b122ca61520", - "sha256": "0h3f5pxnmb21pq4hh7k4w8jzflz1k2ap7nwpjc222w0q6x6jrbjp" + "commit": "370d5f6f14b5294d0eb717f7b2a6a8e93df1ed24", + "sha256": "1fn38vbz46ijarjvhgw7iy7dj9s2a2miy95fyy9f8b5sj8nrdfvz" }, "stable": { "version": [ @@ -13957,28 +14824,26 @@ "repo": "redguardtoo/counsel-etags", "unstable": { "version": [ - 20191014, - 50 + 20200320, + 19 ], "deps": [ - "counsel", - "ivy" + "counsel" ], - "commit": "b08ed51b763e29fc5deb2952eb7e5ba7c3677b4a", - "sha256": "055iwjwkdbwirgm707xgar5afx2nr2kvrsdg5bnw96yvwvby6x4r" + "commit": "0abd7a1b6abaf59a01774ca05f51cc0c6ce7f287", + "sha256": "0kfj3b8gx95pa7yaps25javmag2bnlz5zn802wf0x81np4d3hgjs" }, "stable": { "version": [ 1, - 8, - 9 + 9, + 6 ], "deps": [ - "counsel", - "ivy" + "counsel" ], - "commit": "fda1f77eb8548c4451894886ef5e99815dfc1bf8", - "sha256": "0rmdl93kgyydwa96yclds9vwly41bpk8v18cbqc1x266w6v77dr9" + "commit": "9fae8adc833919ffe33ca51d8e3db67e5be13666", + "sha256": "0831ylsl6d1ldrvvg5cs0yl33mh8s5hgxjp38kcy912mc7b1x0q1" } }, { @@ -14008,15 +14873,15 @@ "repo": "FelipeLema/emacs-counsel-gtags", "unstable": { "version": [ - 20190923, - 1842 + 20200101, + 1701 ], "deps": [ "counsel", "seq" ], - "commit": "baac1a718aaa3ad6c439ab48903b12013de2cec0", - "sha256": "18bwis4j6j4plcdwxml3jdqzd9l8wi0k9kwmyqf9nbqx9f54klqr" + "commit": "5d2a8c2c2d358e374a576cf8a3a67f7997a8839b", + "sha256": "0qx7gdxgd28grz8pn57kb9qrsvdiysci6hya1fif3iqb1hbyg2mn" }, "stable": { "version": [ @@ -14030,6 +14895,37 @@ "sha256": "07kxv56p340a913673h30q65814ji7lwc6gsn9vcr18rsdaj7qwi" } }, + { + "ename": "counsel-jq", + "commit": "556a010fac8da34a655e5bb2bee331c8af24b283", + "sha256": "07lmpzrz03kqa0xklrz0vxpgiadsnvy96vlwwp14nswr6i3r5hia", + "fetcher": "github", + "repo": "200ok-ch/counsel-jq", + "unstable": { + "version": [ + 20191207, + 1334 + ], + "deps": [ + "ivy", + "swiper" + ], + "commit": "b14dfc5c18d991c3b3051c3cbb244d5923b3a327", + "sha256": "0f5h7nnqrkzbyxi4mgzahqzylszrqb25l3i24ml8yra2a23nl2w8" + }, + "stable": { + "version": [ + 1, + 0, + 0 + ], + "deps": [ + "swiper" + ], + "commit": "33d709f5b73a68093ec9414c774844d5f4983aee", + "sha256": "120i4j4bw3v1ybcwrfpn0v7jphhk7hhlp738m60fck97p9lwfyy0" + } + }, { "ename": "counsel-notmuch", "commit": "54fe0be4e8e8b90cd2dc3cc8b9c573694c8f773b", @@ -14113,28 +15009,28 @@ "repo": "ericdanan/counsel-projectile", "unstable": { "version": [ - 20191010, - 1427 + 20200214, + 1450 ], "deps": [ "counsel", "projectile" ], - "commit": "ace17b9a3243e934314860f161f0ed71e4922730", - "sha256": "06l8rr11ki31a35vmvfdhvvvsgm8nbx8v2wsn4d12y42i86sdfv5" + "commit": "b556ed8995f375e57496f3482aef4b0def565de8", + "sha256": "105lvn2bmz6lgxx5y6k9gnhkl4p8igxwgnfz5anxlcv32w7q21pw" }, "stable": { "version": [ 0, 3, - 0 + 1 ], "deps": [ "counsel", "projectile" ], - "commit": "d64e5275c578a494102852c466a3696bde466739", - "sha256": "1inc4ndl0ysfwvxk4avbgpj4qi9rc93da6476a5c81xmwpsv8wmq" + "commit": "d71a3274cfa9d7425f1bcee3eb2dfed9714ac16d", + "sha256": "1k4n5lw6wwbgpwv0dg9dw0bjzi0hvbgkzrs1zmq36yhfz6y8gwnh" } }, { @@ -14163,14 +15059,14 @@ "repo": "Lautaro-Garcia/counsel-spotify", "unstable": { "version": [ - 20190406, - 2025 + 20200326, + 156 ], "deps": [ "ivy" ], - "commit": "f484e6efd3994704cfd16c87c298fbfa12d442cc", - "sha256": "0b5hykw3n96f0m50176hk639sbzdykhnp52xlp8g6l7p807x27w9" + "commit": "5d23a898483de19cb60773492c9846facb8ae281", + "sha256": "0k9m8xi9p5w2qnpz0zmdf52ip6viws06qq5rssgvb0cr888iqib2" } }, { @@ -14222,6 +15118,25 @@ "sha256": "18qlwyjqxap2qfbz14ma6yqp4p3v4q2y8idc355s4szjdd2as2lr" } }, + { + "ename": "counsel-web", + "commit": "0dc010d5e4de5c5830ffac3ec0565faac4da7c19", + "sha256": "0phrna7bm20vmbnnxrri90i7qnbwcwkxrmycbaxkai5l2rk0ijy8", + "fetcher": "github", + "repo": "mnewt/counsel-web", + "unstable": { + "version": [ + 20200313, + 5 + ], + "deps": [ + "counsel", + "request" + ], + "commit": "35c648b4cdd9f266ab54512a0fec2a3ca55d5bc6", + "sha256": "128vl9a5w8v2xzfi5xn9cqshxmcfq2pcmnkkqcxfmi401m2lm0bx" + } + }, { "ename": "counsel-world-clock", "commit": "7d9da8c45e7d06647f9591d80e83f851a7f3af85", @@ -14275,8 +15190,8 @@ "f", "s" ], - "commit": "803592baf1fb210415d943689af2bf5b79cdd24e", - "sha256": "0wp89sq9jy97cvsihqn9dk62m7rp6154c00214f84xb1vab7bcpw" + "commit": "9e6f4af7a07e281913f9f50f20dbbf6f26807563", + "sha256": "1w27hi64wcd86pw4ds2w4yldfm0wsk15f9mpcinyb68sj1p7sn9y" } }, { @@ -14287,15 +15202,15 @@ "repo": "trezona-lecomte/coverage", "unstable": { "version": [ - 20191008, - 2203 + 20191113, + 1958 ], "deps": [ "cl-lib", "ov" ], - "commit": "2d9b662673a0f165c6929d8b7fb264f5ffb2ebcd", - "sha256": "0pdn309kcyrvb8bgzgjmy26mcgbfkr6p1d37ww6qjk9hps0jy92r" + "commit": "6e3c6f2dcb759a76086adeeb1fdfe83e4f082482", + "sha256": "1l2vpyv22f77r2nd1bxf4mggmarb621dl7fnskp5hizhc5sfxi4f" }, "stable": { "version": [ @@ -14372,20 +15287,32 @@ }, { "ename": "cpp-auto-include", - "commit": "5323c0ab6d3e471951738a00ce7036e6ff2665d2", - "sha256": "1a1zv7zbd1l2vbgi42zd60mqnsv7a35is4drf2dmp5dw1nh08z73", + "commit": "e745bff580b3fa8a982f2bdfafbc9e238de47b7f", + "sha256": "0nzq7k656iy5x4hp7646rxqd0wyf0aspbjdsr8xfkgdp8m3yvaz5", "fetcher": "github", - "repo": "syohex/emacs-cpp-auto-include", + "repo": "emacsorphanage/cpp-auto-include", "unstable": { "version": [ - 20160426, - 412 + 20191221, + 2319 ], "deps": [ "cl-lib" ], - "commit": "f3b9bfa668fcd38da8a9dbef0e33a536be239468", - "sha256": "1qnmmk97963j92d4h7vjf27dmiwnjk6q2ls0xy0xx5rg0y7firjf" + "commit": "08208ca7b9dc4ac940ce9ca1f79424d2f3d3d391", + "sha256": "0yspf51h5b7wbqvi9lbd22chyw799n5d05xdzl5axg0i33lzk7bq" + }, + "stable": { + "version": [ + 0, + 2, + 0 + ], + "deps": [ + "cl-lib" + ], + "commit": "08208ca7b9dc4ac940ce9ca1f79424d2f3d3d391", + "sha256": "0yspf51h5b7wbqvi9lbd22chyw799n5d05xdzl5axg0i33lzk7bq" } }, { @@ -14723,11 +15650,11 @@ "repo": "crystal-lang-tools/emacs-crystal-mode", "unstable": { "version": [ - 20190604, - 1254 + 20191121, + 1447 ], - "commit": "34124f546ff5c1136aed95bf0059015f9f6a1d60", - "sha256": "09cmbw190w6aiwwc2bg349xx6vcv9b9ajw8m70ajb3653qnq3mw4" + "commit": "2428b016243e78a0312cf6b3ba6939e7169a1405", + "sha256": "0al65ldsbmm15h4y79i8avk63qq1y7fqzzad8p327z6d42zfm1qj" }, "stable": { "version": [ @@ -14780,11 +15707,11 @@ "repo": "josteink/csharp-mode", "unstable": { "version": [ - 20190717, - 1024 + 20191126, + 1928 ], - "commit": "30ae13607c9d8174ab488ff58cd0dfe4e5cbd0c2", - "sha256": "0wzrlda3nvrpzghb2nkh4apdbx9fbdq5sdbasz0ym0h9m0cbyc24" + "commit": "57bd21bda4edc16671a85c7d6d51484e40a6e640", + "sha256": "0chl9lzxn1mq59vy5lsim2iiy2hl20rg3d7ri41ljksjcfz9ki6v" }, "stable": { "version": [ @@ -14804,16 +15731,17 @@ "repo": "hlolli/csound-mode", "unstable": { "version": [ - 20191005, - 807 + 20200326, + 2154 ], "deps": [ + "dash", "highlight", "multi", "shut-up" ], - "commit": "7d3f78477c725719be9c4a98b403a5aa409e4202", - "sha256": "154xnfspbx2fsk32h34ljw7mzsbsdymscmi0rqdc6r9bbbwapwqw" + "commit": "f278a0e13ecd6b00cd7b056a2e36021322bed8ea", + "sha256": "1axib3rgy7kdyprpp8cs94rc9yr34faii4n9f70jjkk6x7pr398m" }, "stable": { "version": [ @@ -15142,6 +16070,21 @@ "sha256": "1y685qfdkjyl7dwyvivlgc2lwp102vy6hvcb9zynw84c49f726sn" } }, + { + "ename": "curl-to-elisp", + "commit": "11453864d71c7853bc743341db7ca071126ca160", + "sha256": "16qyw6yx5vlm32ikmgxhf162jjl1nq7lmrcn6g43fkk93id0374n", + "fetcher": "github", + "repo": "xuchunyang/curl-to-elisp", + "unstable": { + "version": [ + 20200321, + 953 + ], + "commit": "79da15f739984e3ce3e0b137df3634582abb4546", + "sha256": "04qjap6wsjd8kdz47bz1a11h1bdn7bmlvfg6y0bqy5yq55f4ampa" + } + }, { "ename": "cursor-test", "commit": "6439f7561cfab4f6f3beb132d2a65e94b3deba9e", @@ -15210,11 +16153,11 @@ "repo": "n3mo/cyberpunk-theme.el", "unstable": { "version": [ - 20190717, - 1509 + 20200115, + 1720 ], - "commit": "9779fc4c9f89b14c8c8bb238dd4ed6428ed30ba9", - "sha256": "1pgam947hcan24s2p0vswvjvg3kn39z8qmzpz433ilxd4wd2qz1c" + "commit": "07edefdec3956fba9076fe98cdc33df7bf617afc", + "sha256": "0swjbc61ii88j4myxfl5inn2j46jpf7giqd1kf0rjdyrc8zmj08h" }, "stable": { "version": [ @@ -15284,8 +16227,8 @@ 20190713, 1339 ], - "commit": "f72f6a564ff32ec9af83df5c474de0374e29a266", - "sha256": "0vr44v674nsv7jsglmxvwcdm254rmvz4bxkak99rv39lkq2rvc09" + "commit": "78e3705cca65e1456ce26221690dca74c71735c1", + "sha256": "1mr0q76p7yw9wv48qwp66nw95c1k3x2yly1vfvdq3phbb8xr6g4q" }, "stable": { "version": [ @@ -15323,17 +16266,17 @@ 20190111, 2150 ], - "commit": "a32a29e8aaa688e0507d374ab47e641eb1a427c4", - "sha256": "1ry1jcdkl0mcjlpa1lp2mdrp03mcrvkvx5p3y4f4d6h4bjk5zk65" + "commit": "6a30fecff5decdf20029763afea6183de3177dc3", + "sha256": "1qdxr4wdl7mmbahsdhybq4qmc6ahf2h342gf6y99y6jkj8akvjy3" }, "stable": { "version": [ 0, 29, - 13 + 16 ], - "commit": "d4610f39a43a658cee1862c899a9696d8a9c9f5f", - "sha256": "0ljf2rhyhzih28x2rp95xyajvvjsmk6lirfshf6h6nlcwbh5i9c7" + "commit": "c8425604fc3e4ea846016689942fa98e886b5f4f", + "sha256": "1794w6d9ams691ah8sah93vzb97wpss0j36z0fcn3sfvnf8kvpby" } }, { @@ -15421,11 +16364,11 @@ "repo": "cbowdon/daemons.el", "unstable": { "version": [ - 20190923, - 1644 + 20200129, + 929 ], - "commit": "fac6c8bdd295138ddfc830dd94637c3e45a0823e", - "sha256": "1mpbshib5il4sxricirqlx37cy2kcfmd3x1szg7xk7i3ghayp0df" + "commit": "9320c6af524f923f20aa95c1a48b7ae41c3005a8", + "sha256": "0wlv3vjhw6v6q5br4bassw34k4kai6nrw10av4y6nkvw58i5b3h7" }, "stable": { "version": [ @@ -15475,11 +16418,11 @@ "repo": "rails-to-cosmos/danneskjold-theme", "unstable": { "version": [ - 20190731, - 917 + 20200223, + 1128 ], - "commit": "f88bf1d8c3d26ad03b3faf0d91c1ad8521c7feef", - "sha256": "0biv8aglzj2g77dq1y6pad7k1nihgzb54am4wslvh2b3d6r25rnd" + "commit": "c6776c5f40587429a4fd6e9c52008bb9242ef692", + "sha256": "0qh21ry2vjsvr7yz110c6ggn8bhxdq2x37mwqalpibyx81clh3nw" } }, { @@ -15490,8 +16433,25 @@ "repo": "jyp/dante", "unstable": { "version": [ - 20191004, - 1233 + 20200131, + 1211 + ], + "deps": [ + "company", + "dash", + "f", + "flycheck", + "haskell-mode", + "lcr", + "s" + ], + "commit": "4955bc7363e250d22579bc34b0b4ab6611c0766c", + "sha256": "06xagrjl00iwvaf0cli3dhhvvn4x7ysvkir4120lwc9ispzc077m" + }, + "stable": { + "version": [ + 1, + 6 ], "deps": [ "company", @@ -15504,23 +16464,6 @@ ], "commit": "38b589417294c7ea44bf65b73b8046d950f9531b", "sha256": "1mnmn635552zlwd4zr68jbvdjipl6gi4mi6wiyck28fsmq8kw96h" - }, - "stable": { - "version": [ - 1, - 5 - ], - "deps": [ - "company", - "dash", - "f", - "flycheck", - "haskell-mode", - "lcr", - "s" - ], - "commit": "3bd1bfdd775a309565a850e37dfbd42f1b33068e", - "sha256": "0f76snwsy735r7pl3gdzvajsmpd12qkj03lyjxq1x44a79a1gfwk" } }, { @@ -15531,8 +16474,8 @@ "repo": "emacs-lsp/dap-mode", "unstable": { "version": [ - 20191019, - 1707 + 20200325, + 546 ], "deps": [ "bui", @@ -15540,16 +16483,16 @@ "dash-functional", "f", "lsp-mode", - "s", - "tree-mode" + "lsp-treemacs", + "s" ], - "commit": "dd71e3fefb40f84d13d7630c6233c6c768d1134b", - "sha256": "0s0a9n30bzf70p512r0hgipx5b7jrphnj3r2r6b6xva4ndbp7laj" + "commit": "e2086fc9fbde4413f779b314bd5a93f808a3fb78", + "sha256": "1ig4s5aimd7zfyaa4fgb584lpzmi38kbfqc4jncifh0i69mi6x9k" }, "stable": { "version": [ 0, - 2 + 3 ], "deps": [ "bui", @@ -15558,10 +16501,11 @@ "f", "lsp-mode", "s", - "tree-mode" + "tree-mode", + "treemacs" ], - "commit": "240da34149e2d8893b647f15ff30f217aba4ac89", - "sha256": "1y3s28xb66w8yynwlavn6d7ysjv0d5ziyga5fjyj0jk1037mjg6y" + "commit": "4e25c8334f2ace87275f86b11f0ed969c2f20def", + "sha256": "0zajvq6p1d0lzha58yzaacbc060krhlj6m4v4lg9w1c9vdyshin3" } }, { @@ -15790,26 +16734,26 @@ }, { "ename": "dash", - "commit": "57eed8767c3e98614259c408dc0b5c54d3473883", - "sha256": "0azm47900bk2frpjsgy108fr3p1jk4h9kmp4b5j5pibgsm26azgz", + "commit": "2853d2fcf46eda788e5a3ea08815d0a2bf9d9d32", + "sha256": "1z55hwp6xzbn44xbz6fzpcgbp1b1sf37amryl8p54likj3i21i8n", "fetcher": "github", "repo": "magnars/dash.el", "unstable": { "version": [ - 20191024, - 1908 + 20200119, + 2310 ], - "commit": "9631947f2fbeed58b1d07a3ebc1340a3626b2823", - "sha256": "0mbhi7rzahsl0i8i8ifga39f7s4z4ppagr52cs28xldkc3344ahf" + "commit": "721436b04da4e2795387cb48a98ac6de37ece0fd", + "sha256": "153f55dqkhs8w2xlf6b88wp5vlkap7h8vjd9wxh4jp2ram5g4l1n" }, "stable": { "version": [ 2, - 16, + 17, 0 ], - "commit": "258c324d9840901db83b2cabef3fa75bba57c1ba", - "sha256": "150k48llqz2mb66vbznpyj47r6g16amfl7hbg8q46djq8mp7zc2v" + "commit": "721436b04da4e2795387cb48a98ac6de37ece0fd", + "sha256": "153f55dqkhs8w2xlf6b88wp5vlkap7h8vjd9wxh4jp2ram5g4l1n" } }, { @@ -15869,26 +16813,26 @@ "repo": "magnars/dash.el", "unstable": { "version": [ - 20180107, - 1618 + 20191109, + 1327 ], "deps": [ "dash" ], - "commit": "9631947f2fbeed58b1d07a3ebc1340a3626b2823", - "sha256": "0mbhi7rzahsl0i8i8ifga39f7s4z4ppagr52cs28xldkc3344ahf" + "commit": "721436b04da4e2795387cb48a98ac6de37ece0fd", + "sha256": "153f55dqkhs8w2xlf6b88wp5vlkap7h8vjd9wxh4jp2ram5g4l1n" }, "stable": { "version": [ 2, - 16, + 17, 0 ], "deps": [ "dash" ], - "commit": "258c324d9840901db83b2cabef3fa75bba57c1ba", - "sha256": "150k48llqz2mb66vbznpyj47r6g16amfl7hbg8q46djq8mp7zc2v" + "commit": "721436b04da4e2795387cb48a98ac6de37ece0fd", + "sha256": "153f55dqkhs8w2xlf6b88wp5vlkap7h8vjd9wxh4jp2ram5g4l1n" } }, { @@ -15899,26 +16843,26 @@ "repo": "emacs-dashboard/emacs-dashboard", "unstable": { "version": [ - 20191009, - 1129 + 20200306, + 1344 ], "deps": [ "page-break-lines" ], - "commit": "224fb2cb067d0f1f95fbbe8aa4073154cd255410", - "sha256": "1ndffcfhavb1pa8f2g8mbbi8w2386r1av5dfns1gz9fdzi6pqlz4" + "commit": "bf38867ae80902d58207974b4a2bba4249324599", + "sha256": "1ksa1rq6xmyxc4srj1n3l0rd66zcz9br8k2bp3pzriljqvk8l753" }, "stable": { "version": [ 1, - 6, + 7, 0 ], "deps": [ "page-break-lines" ], - "commit": "5b66b65c4c7536f43e8e58b3f7055e5bd6381cda", - "sha256": "1g6g8vad1kdmv1zxp95a8sn70idl26isqjb3xk1r95pqnx1cn591" + "commit": "8dda82fcd4d0954f37a472ad68fb8df55195820e", + "sha256": "1qv4cqjy2s2d2bysbq10vq1axpbd8qc3jn1s1r81lxqkcja8zasa" } }, { @@ -15940,6 +16884,40 @@ "sha256": "1dvv10xn2mh0nh85cd78y23cn8p9ygdhj4k7xs4fa6r7bhp0xvqm" } }, + { + "ename": "dashboard-ls", + "commit": "656977197e0030525c52b14de8f6e1faa042daeb", + "sha256": "10dsdzps7kh3v5p5grdjwf2xjr7rvaiqp57fg9vh4pficvhylqaa", + "fetcher": "github", + "repo": "jcs-elpa/dashboard-ls", + "unstable": { + "version": [ + 20200329, + 1443 + ], + "deps": [ + "dashboard", + "f", + "s" + ], + "commit": "9026fd157f94b023a7b660a418b66ad638b14272", + "sha256": "1r78w47897qd9ki24mqxl3kgr2anzybfqv5x91y4xsvrk0siir64" + }, + "stable": { + "version": [ + 0, + 1, + 2 + ], + "deps": [ + "dashboard", + "f", + "s" + ], + "commit": "9026fd157f94b023a7b660a418b66ad638b14272", + "sha256": "1r78w47897qd9ki24mqxl3kgr2anzybfqv5x91y4xsvrk0siir64" + } + }, { "ename": "dashboard-project-status", "commit": "dfc05873c6532c866d89c4cc07eb84b447a25c70", @@ -16040,8 +17018,8 @@ 20190630, 933 ], - "commit": "ca8e3bd421ac59adf5bdd279ccf007f04dd61c1e", - "sha256": "1mx295zh3mf5arj63bswkm8ypjrdiwfxm27746nr2kblwjliy9px" + "commit": "386dbe73678705d6107cd5c9bdeb4f7c97632360", + "sha256": "0mdsvrwn6g33arcby02v6m9kfyymq7svgnvpvkvkvfdswcrns4mn" } }, { @@ -16052,26 +17030,26 @@ "repo": "doublep/datetime", "unstable": { "version": [ - 20190404, - 1837 + 20200208, + 1629 ], "deps": [ "extmap" ], - "commit": "8c6d6fc991766e6bf9cefc4ea4b04eeae8116a84", - "sha256": "0c5y304pvns8jhy4fpz4jmbfxdgz8ms04hgrnsb0g168szc9g0s9" + "commit": "0ae7addb2c46133393f59011b2aecc08de49b8d1", + "sha256": "1df6c5wsn6nwqvfx11d7x3wkjazri3946fwy0m9i6mx18yac38h0" }, "stable": { "version": [ 0, 6, - 4 + 5 ], "deps": [ "extmap" ], - "commit": "8c6d6fc991766e6bf9cefc4ea4b04eeae8116a84", - "sha256": "0c5y304pvns8jhy4fpz4jmbfxdgz8ms04hgrnsb0g168szc9g0s9" + "commit": "4a480b66179f016100a582af170a76cda19c980a", + "sha256": "0j7k6157fvzl1395ybnrgcz697h6cjk9v445nnfi7q0l8vylbfvm" } }, { @@ -16174,15 +17152,15 @@ "repo": "skk-dev/ddskk", "unstable": { "version": [ - 20190423, - 1234 + 20200325, + 1337 ], "deps": [ "ccc", "cdb" ], - "commit": "ad61579af269291b4446f4bab0a58522cc454f1c", - "sha256": "0aisilp9wl9w8l6nsiy963wvja38pp57g3skdf6qbm5ak8bb3244" + "commit": "37593d191b255d8633231099c70b1b26b3da0d39", + "sha256": "02pn3pxawl6268sy981iqialzyj9zy9dz6ci9jrkvbc8gp9gcvwh" } }, { @@ -16193,15 +17171,15 @@ "repo": "conao3/ddskk-posframe.el", "unstable": { "version": [ - 20190816, - 1855 + 20191123, + 1632 ], "deps": [ "ddskk", "posframe" ], - "commit": "f062a2a2a0fb3746ba01a7f56d051adf4cf4c7d8", - "sha256": "1lkvbix25p5jlhz5164vnyfldq1fk7m10w6q7q4rm2plnmxfbv1y" + "commit": "8a37953b37d397ba406bc308eb908bd966d34af6", + "sha256": "0qm2hb2m3gqzqblgy3d5krxkjbwyhiivzbjfiq9yygh5v729d3as" }, "stable": { "version": [ @@ -16224,16 +17202,16 @@ "repo": "Wilfred/deadgrep", "unstable": { "version": [ - 20191002, - 2 + 20200202, + 1520 ], "deps": [ "dash", "s", "spinner" ], - "commit": "e1ea4a358cfdac7551d0c6bf6ae70a4e191c1528", - "sha256": "161mb7kyr70k24kl25lms8v8b87fi5q66zj9hlbhzwksdxpa9z30" + "commit": "3ec95398d09719a9dbdc3a67d29d22ca224516cf", + "sha256": "0rxzm30md5s87s6j1aqgjxa9kb637v11b7q194l8zzhf457ky6la" }, "stable": { "version": [ @@ -16406,11 +17384,11 @@ "repo": "purcell/default-text-scale", "unstable": { "version": [ - 20190615, - 247 + 20191226, + 2234 ], - "commit": "dc7e2004be736544149643de2673a5506c83dbaf", - "sha256": "15y3yxv6r8480cir4i97f6j5z2yxx002w9h73xng37w24s105l5w" + "commit": "bfc0987c37e93742255d3b23d86c17096fda8e7e", + "sha256": "1kbmq9ssp1i58bcmnk0g0ijhwsa80qm5xwwzhzcskrmxb6dg88j2" }, "stable": { "version": [ @@ -16445,6 +17423,46 @@ "sha256": "0xy9zb6wwkgwhcxdnslqk52bq3z24chgk6prqi4ks0qcf2bwyh5h" } }, + { + "ename": "define-it", + "commit": "c3b4c0c6a715b4302cc6cb6171b185883f2a87e2", + "sha256": "0y9l0dy4l1k9j5fis652rypxm5r6qmdxgb5msihbyl8acbwdhhr2", + "fetcher": "github", + "repo": "jcs-elpa/define-it", + "unstable": { + "version": [ + 20191230, + 1409 + ], + "deps": [ + "google-translate", + "popup", + "pos-tip", + "request", + "s", + "wiki-summary" + ], + "commit": "4e769b94c4ec81d9c1eac9dda0e22c869a07aa7c", + "sha256": "0amwslk4hawjzjbdakx7ggclw3y9ackl2vnmrr0pw17m5ccsr10b" + }, + "stable": { + "version": [ + 0, + 2, + 4 + ], + "deps": [ + "google-translate", + "popup", + "pos-tip", + "request", + "s", + "wiki-summary" + ], + "commit": "ec13795cd1185706fcc81ea627d3680f65283891", + "sha256": "05wq0apnljclpjn3ifwl31vx3rlwv9kns5yva26sd8ks7kjyqizj" + } + }, { "ename": "define-word", "commit": "e318b30d8b2b89981f4b89d78e5a46e77d3de412", @@ -16453,11 +17471,11 @@ "repo": "abo-abo/define-word", "unstable": { "version": [ - 20190506, - 1525 + 20191031, + 1736 ], - "commit": "11bfee628aee082a9a3a2fd5f083cbdb05d5d00a", - "sha256": "1yrhrvqiyp4cv6bpvdrkc5zfwflb1jx8kmivjkpv6765pnr11zp8" + "commit": "d8c76d503be3d561221631067ec5274e7c147248", + "sha256": "18yy7gw8x3y9sk3v7xpd59p425qc36dymj0wgk6mzarfq5rhv79h" }, "stable": { "version": [ @@ -16653,20 +17671,20 @@ "repo": "DamienCassou/desktop-environment", "unstable": { "version": [ - 20190701, - 1306 + 20200225, + 1042 ], - "commit": "d2706dd2d83cf9f3672a74b0b3fc490cc84b0f78", - "sha256": "1ymxxa1jpcg6c0wwxz8qi453bgik07yh297fsf4a03hh07rpx8a0" + "commit": "dbcf3d9411d53908de09ab0d34932d19c8117144", + "sha256": "12lqwc3aqrly85ihdrh4k4vwglqypbi250fl0aasbbiwpbnraawa" }, "stable": { "version": [ 0, - 2, - 2 + 3, + 0 ], - "commit": "284c38fcb5b10746255ee4123eaa549e028df0c8", - "sha256": "14ija2rrz3zjhjbzxg84j5fq6xph4ah7w9bkqnq37by040cydvhw" + "commit": "57de5e018baa1c7667230cae657c80ca765ae912", + "sha256": "195n99xvxyh4cfxjpfa1h1maalqrxf7nyi0bh3lqa1z6z5bdb6x2" } }, { @@ -16764,11 +17782,11 @@ "repo": "redguardtoo/dianyou", "unstable": { "version": [ - 20190604, - 1215 + 20191120, + 39 ], - "commit": "46d3328998ed20b37c4b52722d52d4d579e4f5d3", - "sha256": "1n437mjk9j4jdn0jzrra1m5q6x3wmk1r54rcafhbfnl6b8ji81jl" + "commit": "da7443a680bd8db75884355314e9352cd8c68d05", + "sha256": "099iiwp52rfnxgwhiaxdaridhcjdp3qchmskxmb1j5dz757c6w1c" }, "stable": { "version": [ @@ -16791,8 +17809,8 @@ 20190702, 2148 ], - "commit": "97f37cfb27ca85eec2f30c630ed356f2fd1f65e3", - "sha256": "0xqag57bmgwxvkz1k458xlrxnp3vg1kvaaapxpr3zb1dwqvvcyn8" + "commit": "964dd7bf60a8e8abc880ef5b73319bc65d5ea5e3", + "sha256": "1w1hffypsx41n63yrpz0lcyzia4x4lis0sja8gksik7dvwwkyhwb" }, "stable": { "version": [ @@ -16831,15 +17849,15 @@ "repo": "cqql/dictcc.el", "unstable": { "version": [ - 20190807, - 1504 + 20200209, + 1810 ], "deps": [ "cl-lib", "ivy" ], - "commit": "33df7c64ee5bb9faf77a4b80cd123d35a15ad706", - "sha256": "1dxn41p4bmi7l8lz6kp56qhb4v2qi7x8wijyicd3715amsagl2jc" + "commit": "e07ebfc577b904b3387705a91395ac873e42c727", + "sha256": "0wi3iz31qizd3xsys1pyfr2zfn03x27lrja5s8170s27zqkwm56j" }, "stable": { "version": [ @@ -16863,23 +17881,27 @@ "repo": "myrkr/dictionary-el", "unstable": { "version": [ - 20190403, - 1918 + 20191111, + 446 ], "deps": [ "connection", "link" ], - "commit": "6edc1d0a4156d33c3da0c1649c308b809fda46e1", - "sha256": "0g95q3yggzxr8d2gjxamfwx8xbzf182naxpb265r7v9awd35bqk5" + "commit": "c9cad101100975e88873636bfd426b7a19304ebd", + "sha256": "0zsjbpq0s0xdxd9r541f04bj1khhgzhdlzr0m4p17zjh1zardbpi" }, "stable": { "version": [ 1, - 10 + 11 ], - "commit": "9ef1672ecd367827381bbbc9af93685980083c5c", - "sha256": "05xfgn9sabi1ykk8zbk2vza1g8pdrg08j5cb58f50nda3q8ndf4s" + "deps": [ + "connection", + "link" + ], + "commit": "c9cad101100975e88873636bfd426b7a19304ebd", + "sha256": "0zsjbpq0s0xdxd9r541f04bj1khhgzhdlzr0m4p17zjh1zardbpi" } }, { @@ -16906,6 +17928,21 @@ "sha256": "1rdmhsrlqn19a140i3099fp7f9wnlglp760rnrjp5p840wzfm74q" } }, + { + "ename": "diff-at-point", + "commit": "d342698c94e145ecfebf204c1099dbe765b39c71", + "sha256": "1gjjnxafsxrhpxz3zs5kbdmy5wmhcqqfkgryzzc0mmm9iqbskd3j", + "fetcher": "gitlab", + "repo": "ideasman42/emacs-diff-at-point", + "unstable": { + "version": [ + 20200106, + 441 + ], + "commit": "c26027d701f2a1512e0a2b18e4b34f02e9140ee0", + "sha256": "1c5pibjmpkw7fi26vnsvv5yjg4y851jccwymzwa06gbxb3jf5ggc" + } + }, { "ename": "diff-hl", "commit": "855ea20024b606314f8590129259747cac0bcc97", @@ -16914,14 +17951,14 @@ "repo": "dgutov/diff-hl", "unstable": { "version": [ - 20190707, - 2243 + 20200329, + 1724 ], "deps": [ "cl-lib" ], - "commit": "374b1d4b34876219218da7a539e7301259b56958", - "sha256": "0i7x6qgr3nydcwhw72sbc8z9x9dfhgkf0dqj9nakvx36vn1bblbq" + "commit": "7fce94f7d5eebea06aed153b0f574567182c8d2b", + "sha256": "11m9ab7ymvbsxgddwxwcr8mrll3m67lnib8bpmb9vmh16zb2mzcl" }, "stable": { "version": [ @@ -17016,19 +18053,20 @@ "repo": "retroj/digistar-mode", "unstable": { "version": [ - 20160218, - 1955 + 20200322, + 2109 ], - "commit": "15288b1e1a04b79b5ab7097fdd26d48b2ff41076", - "sha256": "0qxdfv1p0140fqcxh677hhxwpx1fihvwhvh76pysn4q4pcfr6ldr" + "commit": "567fff3933f80f00f53610e7b08f75bb636b12c0", + "sha256": "0252lhkv2r8gy4512frhdh381xrf64nspvfm2hp7bkhz47dlrs7y" }, "stable": { "version": [ 0, - 4 + 6, + 1 ], - "commit": "0dcde58ec6e473042e55d4f283b223554546de5b", - "sha256": "0jzwaivsqh66py9hd3dg1ys5rc3p6pn8ndpwpvgyivk4pg6zhhj6" + "commit": "8b350b7a143219b3f927cb3a1aeb16a299363f05", + "sha256": "1sxfzirl8kgzmq8l9l868yl92mz1r8yk58fnxf7p6z4y0pdlcqfg" } }, { @@ -17097,8 +18135,8 @@ 20160818, 949 ], - "commit": "79b81724b951fedffdd3113f473c18990af837a9", - "sha256": "1fclhpcrsi09z2np7q3dq3hhb3pqxsvv1l2dqis27afxnb1zshr3" + "commit": "5515f2e8657ef14adcc34aa5b05383a2684328ae", + "sha256": "044f337k5swz9bgfmisk6mqr5gjfv3y7zclqspdw846ka4kwpr2z" }, "stable": { "version": [ @@ -17117,20 +18155,20 @@ "repo": "tarsius/dim-autoload", "unstable": { "version": [ - 20180318, - 2027 + 20200103, + 1239 ], - "commit": "2d879932741ac8e3afd4dd03071b61170eae353d", - "sha256": "0nw9q569771z6y8zkpmcg5flr71732s6kckywjvpixqnxxa579iy" + "commit": "c8dc02259d6c1aa25fb58742ae8b181f83b39a13", + "sha256": "0k9m57zrdpabb6b34j9xy3cmcpzni89wq71pzzwgdi47p1n4r4vd" }, "stable": { "version": [ 2, 0, - 1 + 3 ], - "commit": "788320fe089fafbdf1cb09d2ab4d29d64a804e21", - "sha256": "0iyhjww7p274x418n1iw1xj2fkmn5k9icav0jyzbwmy83a2nmr52" + "commit": "c8dc02259d6c1aa25fb58742ae8b181f83b39a13", + "sha256": "0k9m57zrdpabb6b34j9xy3cmcpzni89wq71pzzwgdi47p1n4r4vd" } }, { @@ -17141,11 +18179,11 @@ "repo": "myrjola/diminish.el", "unstable": { "version": [ - 20170419, - 1736 + 20191127, + 1326 ], - "commit": "565a983a39d2e2cffab5df13b34f3b6116723208", - "sha256": "173lzj9l7a4wcfvdq6akvfyyyriy5c30b4vhhv51hs051dmn02d0" + "commit": "6ec6ebc391371418efc6c98d70b013f34af5a2ee", + "sha256": "0q8pihj9fwq9w978ycmvzv8kq8ksrdf8zfadjy8i2iwc4ib0jg7y" }, "stable": { "version": [ @@ -17167,6 +18205,15 @@ 20190921, 1647 ], + "commit": "0b1262f947b3ce03dca17879caec808a7d091bf4", + "sha256": "0yrzp7jdw04hj3ag3379l6kb9vpd1vcvqqf4z5yb3i28b5d7s136" + }, + "stable": { + "version": [ + 0, + 0, + 3 + ], "commit": "e137baa5e258a7938c713253fc9cc63f8674f841", "sha256": "03068nyfb3cz0lz8z3qcwjlsvqaw9dfg3g8w13gmpwsmxaxlbv3i" } @@ -17179,20 +18226,20 @@ "repo": "gonewest818/dimmer.el", "unstable": { "version": [ - 20191024, - 1711 + 20200329, + 35 ], - "commit": "52652c54f2714ec931f3fc3709c66b109b1b81e2", - "sha256": "14s7pc2sac50vai7clxcxws3hyrcskimd8byp43q4a3fhqsjys93" + "commit": "5298af739ce30bacadda892b620858b95709c84b", + "sha256": "0dlgk66mcbzdbpw0xn6l7fxjayvgczccsx0igda9745pwm8yvy9z" }, "stable": { "version": [ 0, - 3, - 0 + 4, + 2 ], - "commit": "12fc52a6570ec25020281735f5a0ca780a9105af", - "sha256": "1jv9rrv15nb5hpwcaqlpjj932gyisrkwbv11czkg3v0bn7qn6yif" + "commit": "e45bf2d064a8ecdea2b4caf646ece2d0adc1d84e", + "sha256": "0dw0qh5hm1x76s5cqxvylvmjgy0jwy11xm258g6kmx6w1k6r1d2l" } }, { @@ -17289,8 +18336,8 @@ "dash", "dired-hacks-utils" ], - "commit": "ae39981d7cc58206cfeb377d6621bdd9000fd472", - "sha256": "0q4fk5cg04pj83kpn1mvfqsjsr99ffqxayfnb7vcgdc33g19afjv" + "commit": "f49a8bbf95f70671a74a24f7f4de453b2686be46", + "sha256": "0b5mk501sy3b2ak46yyy8qcl5f5fsc9py750n962qfh2zs1amrbs" } }, { @@ -17309,8 +18356,8 @@ "dired-hacks-utils", "f" ], - "commit": "ae39981d7cc58206cfeb377d6621bdd9000fd472", - "sha256": "0q4fk5cg04pj83kpn1mvfqsjsr99ffqxayfnb7vcgdc33g19afjv" + "commit": "f49a8bbf95f70671a74a24f7f4de453b2686be46", + "sha256": "0b5mk501sy3b2ak46yyy8qcl5f5fsc9py750n962qfh2zs1amrbs" } }, { @@ -17427,8 +18474,8 @@ "repo": "Fuco1/dired-hacks", "unstable": { "version": [ - 20190211, - 2020 + 20191105, + 1404 ], "deps": [ "cl-lib", @@ -17436,8 +18483,29 @@ "dired-hacks-utils", "f" ], - "commit": "ae39981d7cc58206cfeb377d6621bdd9000fd472", - "sha256": "0q4fk5cg04pj83kpn1mvfqsjsr99ffqxayfnb7vcgdc33g19afjv" + "commit": "f49a8bbf95f70671a74a24f7f4de453b2686be46", + "sha256": "0b5mk501sy3b2ak46yyy8qcl5f5fsc9py750n962qfh2zs1amrbs" + } + }, + { + "ename": "dired-git", + "commit": "640074b41e5b70e3b32484ea850a681e9026a9cf", + "sha256": "09qh6zjpyasqlsjnakal6a5i04pkhps51b064470rgg855jfh9li", + "fetcher": "github", + "repo": "conao3/dired-git.el", + "unstable": { + "version": [ + 20200130, + 743 + ], + "deps": [ + "all-the-icons", + "async", + "async-await", + "ppp" + ], + "commit": "11938721f7202aa784cc493027e3a0ec2c0d39b5", + "sha256": "1b5vc9hc26cs1dq7lmvm5gly4h6ahpp0dnlbxi8p4mza12yhnrwi" } }, { @@ -17454,8 +18522,8 @@ "deps": [ "dash" ], - "commit": "ae39981d7cc58206cfeb377d6621bdd9000fd472", - "sha256": "0q4fk5cg04pj83kpn1mvfqsjsr99ffqxayfnb7vcgdc33g19afjv" + "commit": "f49a8bbf95f70671a74a24f7f4de453b2686be46", + "sha256": "0b5mk501sy3b2ak46yyy8qcl5f5fsc9py750n962qfh2zs1amrbs" } }, { @@ -17530,17 +18598,17 @@ }, { "ename": "dired-k", - "commit": "7f8a828b2fbfa11c4b74192d9d0cfa0ad34b3da7", - "sha256": "0lghdmy9qcjykscfxvfrz8cpp87qc0vfd03vw8nfpvwcs2sd28i8", + "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b", + "sha256": "1nimv6rzk0rrzvniirrsxzd78f4yil1aajcxyra2nmx7dr4xszqh", "fetcher": "github", - "repo": "syohex/emacs-dired-k", + "repo": "emacsorphanage/dired-k", "unstable": { "version": [ - 20170313, - 1503 + 20200322, + 2035 ], - "commit": "c50e8f73358060a448bff66db2d330b52bbeffc1", - "sha256": "14yvsv7cvfviszii0bj0qf094rmnwzssinrqrkpxg4jil2n4bb9d" + "commit": "1f90cf6ac932ad30ccfefec27ea7e514c24ab335", + "sha256": "1bmpn18z42i8dy331yrks5gsivpvwj677yc58iw66ckjnyjnyjps" }, "stable": { "version": [ @@ -17559,11 +18627,11 @@ "repo": "thomp/dired-launch", "unstable": { "version": [ - 20180607, - 1841 + 20200318, + 1715 ], - "commit": "ad45940f76ef2f6c3bb55e998829b311de191dae", - "sha256": "057nqlvqnq30gxfidmynp33040bgdq4gbwk0qdm294c5ap2af5yj" + "commit": "1f73233065ddb077adb7019ae33efd8acce9b561", + "sha256": "1sc0y7ffvyq5785gcmlgkkblz1nyyx4a5h1m1bi50zkqpna1pxbf" } }, { @@ -17581,8 +18649,8 @@ "dash", "dired-hacks-utils" ], - "commit": "ae39981d7cc58206cfeb377d6621bdd9000fd472", - "sha256": "0q4fk5cg04pj83kpn1mvfqsjsr99ffqxayfnb7vcgdc33g19afjv" + "commit": "f49a8bbf95f70671a74a24f7f4de453b2686be46", + "sha256": "0b5mk501sy3b2ak46yyy8qcl5f5fsc9py750n962qfh2zs1amrbs" } }, { @@ -17600,8 +18668,8 @@ "dash", "dired-hacks-utils" ], - "commit": "ae39981d7cc58206cfeb377d6621bdd9000fd472", - "sha256": "0q4fk5cg04pj83kpn1mvfqsjsr99ffqxayfnb7vcgdc33g19afjv" + "commit": "f49a8bbf95f70671a74a24f7f4de453b2686be46", + "sha256": "0b5mk501sy3b2ak46yyy8qcl5f5fsc9py750n962qfh2zs1amrbs" } }, { @@ -17648,8 +18716,8 @@ "dash", "dired-hacks-utils" ], - "commit": "ae39981d7cc58206cfeb377d6621bdd9000fd472", - "sha256": "0q4fk5cg04pj83kpn1mvfqsjsr99ffqxayfnb7vcgdc33g19afjv" + "commit": "f49a8bbf95f70671a74a24f7f4de453b2686be46", + "sha256": "0b5mk501sy3b2ak46yyy8qcl5f5fsc9py750n962qfh2zs1amrbs" } }, { @@ -17667,8 +18735,8 @@ "dash", "dired-hacks-utils" ], - "commit": "ae39981d7cc58206cfeb377d6621bdd9000fd472", - "sha256": "0q4fk5cg04pj83kpn1mvfqsjsr99ffqxayfnb7vcgdc33g19afjv" + "commit": "f49a8bbf95f70671a74a24f7f4de453b2686be46", + "sha256": "0b5mk501sy3b2ak46yyy8qcl5f5fsc9py750n962qfh2zs1amrbs" } }, { @@ -17694,11 +18762,11 @@ "repo": "Vifon/dired-rifle.el", "unstable": { "version": [ - 20181012, - 2131 + 20200308, + 2358 ], - "commit": "a4f7b1e798397688b9c00d3507fcd395ece17a40", - "sha256": "09jp54drbx1hb4fj6bzh8ava7nk56pp500xsa9712vscg1f38fpz" + "commit": "99e4110c80d65ca43e2b0ec078e3202995e392d7", + "sha256": "034qak8kdp7laz1ylqy9np5ajhwf741mdl0bj5kb7rrrsijxada6" } }, { @@ -17732,27 +18800,27 @@ "repo": "stsquad/dired-rsync", "unstable": { "version": [ - 20190508, - 1605 + 20200308, + 1150 ], "deps": [ "dash", "s" ], - "commit": "d7eb558c4efa73d9e1f50709dbd2374041c0f1a9", - "sha256": "074xy2wipdn2lvm7kxyf7rpsgp7hc62f7h1n77am7p4i7j5alw1f" + "commit": "bfd5c155be1cb6b71c83e5f41116c81b6532b6d5", + "sha256": "096lqsq4bh5fgxhfscvmscd5v8d4ji88wks2chi92h9v85sha3b6" }, "stable": { "version": [ 0, - 4 + 5 ], "deps": [ "dash", "s" ], - "commit": "9233e7c2afe0ff654a63ce6a0546a06c3e921494", - "sha256": "0jzbn0izxqgz719gb6fpr60zbcb6w1ama13ngpvrig82nlhs37fv" + "commit": "707f527a5448f8fd881321f1d60e49821d3efe60", + "sha256": "1nq3d8py2zsji835wilg514z5j180k371pwqsqrmnnhq1cj4fkia" } }, { @@ -17763,14 +18831,14 @@ "repo": "jojojames/dired-sidebar", "unstable": { "version": [ - 20191024, - 116 + 20200226, + 333 ], "deps": [ "dired-subtree" ], - "commit": "21ccb6723bea69f2e2ca25998268d8a039f904cc", - "sha256": "0mck4qk6srbbf8xnn2sg11j822z4ybxvgavvy402d5sli515i8ca" + "commit": "5f88a4570eae9645be06ff22542f110aeb70dd7d", + "sha256": "0l1wr7g4lfqmvhw3vir6fmwxmid9sasxlf5pxxvh0z8kps53f0cn" }, "stable": { "version": [ @@ -17793,20 +18861,20 @@ "repo": "crocket/dired-single", "unstable": { "version": [ - 20180824, - 312 + 20200303, + 1144 ], - "commit": "b0ccca83df0542c5525c047ae283c0eadf500f5c", - "sha256": "14q8lp1x1b78ra9mk90n6dyrm1j9ny5pr7valgpkg8agqyqn7xmn" + "commit": "90ade369ba478fdebf61957f837c0b10cef128b1", + "sha256": "08qm8s77kfx9yfhm10vivhq15jrndvd29azkv4y1wd9qsrh5ylk0" }, "stable": { "version": [ 0, - 1, - 3 + 2, + 0 ], - "commit": "5b002927fd8c7f954eec187227ac59dcaa8edfa3", - "sha256": "0mfvyjbx7l7a1sfq47m6rb507xxw92nykkkpzmi2mpwv30f1c22j" + "commit": "27120d6a079541e994105e3f969032d3ae7edaa4", + "sha256": "14q8lp1x1b78ra9mk90n6dyrm1j9ny5pr7valgpkg8agqyqn7xmn" } }, { @@ -17824,8 +18892,8 @@ "dash", "dired-hacks-utils" ], - "commit": "ae39981d7cc58206cfeb377d6621bdd9000fd472", - "sha256": "0q4fk5cg04pj83kpn1mvfqsjsr99ffqxayfnb7vcgdc33g19afjv" + "commit": "f49a8bbf95f70671a74a24f7f4de453b2686be46", + "sha256": "0b5mk501sy3b2ak46yyy8qcl5f5fsc9py750n962qfh2zs1amrbs" } }, { @@ -17883,11 +18951,11 @@ "repo": "purcell/diredfl", "unstable": { "version": [ - 20190629, - 231 + 20191227, + 2028 ], - "commit": "d5aa50a5269d7374bc8ea981d3871729424d165d", - "sha256": "0jwzlf0nhn5699l5xjhszix0y1539zdxyy6434srf31cgr7q84cw" + "commit": "83567d00affce66a4e501563eddd0bd436ac48d0", + "sha256": "11xkvywcfv27gr0dpgprmmnjqfxmxdmcpa2kq0vqnxrblg6ijwbr" }, "stable": { "version": [ @@ -17929,34 +18997,34 @@ "repo": "wbolster/emacs-direnv", "unstable": { "version": [ - 20191016, - 1907 + 20200319, + 2357 ], "deps": [ "dash" ], - "commit": "fd0b6bbd5e3eaf6aa48bccd4a1ff3048bfb2c69b", - "sha256": "0py0if1wl61y6f55s4p8y11rjvrgx3yk2v5n1q2xl3gg7f4ra136" + "commit": "1daf479b9b7600ce9681f2a980deae7fcb2f3d59", + "sha256": "08hwjd1xmq6hxab537zm11kwqhwnc1dfznfqzy66c4agl9z9a7vx" }, "stable": { "version": [ 2, - 0, + 1, 0 ], "deps": [ "dash" ], - "commit": "468f2fb20d825dd7134e4efbaff3666917cd4ec3", - "sha256": "005ibyzsx1fdyrl5iyhqpb1bg83mphzahq7zvw58x00syyqi2z49" + "commit": "1f93e3f9cae5ec171939fe5c1fe9744a28fa6576", + "sha256": "0xkqn4604k2imas6azy1www56br8ls4iv9a44pxcd8h94j1fp44d" } }, { "ename": "direx", - "commit": "a4b0903466d63b1c87abc002b0e064e36a8cddd3", - "sha256": "1x3rnrhhyrrvgry9n7kc0734la1zp4gc4bpy50f2qpfd452jwqdm", + "commit": "7856a62fb86415c88aa72b574895328c93c10a09", + "sha256": "0qp3pidsa9gwz8vhcfg3l5vl6w8071gk04amba8cpc0w3a9pps95", "fetcher": "github", - "repo": "m2ym/direx-el", + "repo": "emacsorphanage/direx", "unstable": { "version": [ 20170422, @@ -18051,11 +19119,11 @@ "repo": "purcell/disable-mouse", "unstable": { "version": [ - 20181225, - 2206 + 20200304, + 2159 ], - "commit": "689ea9f3d702529a5b5ac2493e28eefca65c7abb", - "sha256": "0na9kkx2rjakgxq416cr2wjdggzf4ycki7jj7ywpra966zldf84s" + "commit": "a8318f5f21716316053cc092ab9abb43cb681fe0", + "sha256": "0z9749hd3x1z2sf3lyzx2rrcfarixmfg0hnc5xsckkgyb7gbn6hq" }, "stable": { "version": [ @@ -18262,11 +19330,11 @@ "repo": "mnp/dispwatch", "unstable": { "version": [ - 20190903, - 356 + 20191130, + 52 ], - "commit": "04e7ecb52636e27a8e2e670c6e8977c12ed989e6", - "sha256": "0yv4gl86z9wx81n1hadha01iqcinp2c3414hg5iypv2j7n129kri" + "commit": "93aac853215d0902e7a30a6dd2b99d796da77df4", + "sha256": "186294rkmhwbh8x054w1hnqykp1iydxd490irl542j5alinv43qk" } }, { @@ -18341,14 +19409,14 @@ "repo": "unhammer/dix", "unstable": { "version": [ - 20191023, - 1357 + 20200108, + 1057 ], "deps": [ "cl-lib" ], - "commit": "466df0a7f5ab6ab19150bef92f7d1aac0dec2467", - "sha256": "1gb21rsczwcwhqc9bpw77zikwr2ycqmvks6n0y8mdrj3kc6qvzgc" + "commit": "391832823f3f9835d957bc0224e122b376e5d825", + "sha256": "1h7wxi1nk6051arzx8671sf3m178ci9gs3a78h4hp8z0jrz364kz" }, "stable": { "version": [ @@ -18378,8 +19446,8 @@ "dix", "evil" ], - "commit": "466df0a7f5ab6ab19150bef92f7d1aac0dec2467", - "sha256": "1gb21rsczwcwhqc9bpw77zikwr2ycqmvks6n0y8mdrj3kc6qvzgc" + "commit": "391832823f3f9835d957bc0224e122b376e5d825", + "sha256": "1h7wxi1nk6051arzx8671sf3m178ci9gs3a78h4hp8z0jrz364kz" }, "stable": { "version": [ @@ -18418,20 +19486,20 @@ "repo": "muffinmad/emacs-django-commands", "unstable": { "version": [ - 20190320, - 722 + 20191107, + 1830 ], - "commit": "1b19436a1160d1552207d4356d5e78793dabe100", - "sha256": "1zb8mf0dgdr83n61a54m5grhdr6nz75zrgwczpzfl3f66xkvfci9" + "commit": "bef7ca848d6d1721ebb22b181c50dcfbef16e434", + "sha256": "1zd98xkbxvikp4sf5nxf6vb2sk7a5s3q9ida0l5f4z4jc48xx5zm" }, "stable": { "version": [ 1, 3, - 2 + 3 ], - "commit": "1b19436a1160d1552207d4356d5e78793dabe100", - "sha256": "1zb8mf0dgdr83n61a54m5grhdr6nz75zrgwczpzfl3f66xkvfci9" + "commit": "bef7ca848d6d1721ebb22b181c50dcfbef16e434", + "sha256": "1zd98xkbxvikp4sf5nxf6vb2sk7a5s3q9ida0l5f4z4jc48xx5zm" } }, { @@ -18686,19 +19754,19 @@ "repo": "Silex/docker.el", "unstable": { "version": [ - 20191005, - 650 + 20200218, + 1257 ], "deps": [ "dash", "docker-tramp", "json-mode", - "magit-popup", "s", - "tablist" + "tablist", + "transient" ], - "commit": "5027a3d541b1dcbb2f7ec0bac04a30dceeca7ce8", - "sha256": "1n4k5ar9h2a11f68nqdgmqnwpnlym5862vls89wkjqxl02ss34zn" + "commit": "a2092b3b170214587127b6c05f386504cae6981b", + "sha256": "1q3fgh3sjly62h86yvjqhr7j1yyrsfygk4rqkx0p7a052s2qvqi7" }, "stable": { "version": [ @@ -18831,14 +19899,14 @@ "repo": "spotify/dockerfile-mode", "unstable": { "version": [ - 20190505, - 1807 + 20200106, + 2126 ], "deps": [ "s" ], - "commit": "ed73e82dcc636dad00d1a8c3b32a49136d25ee60", - "sha256": "0lri2rnx4lr23vqfphkpq39cd4xfgzkvz1xsz7ccdvl4qj0k7fdl" + "commit": "d31f7685ebc5832d957e25070a930aa42984327d", + "sha256": "1br73dsls42fn4rwagljkpa3l4wwj6f7jxfn3gmgl6c54z81av3v" }, "stable": { "version": [ @@ -18849,6 +19917,21 @@ "sha256": "1cmh8pwwa6dhl4w66wy8s5yqxs326mnaalg1ig2yhl4bjk8gi4m2" } }, + { + "ename": "doct", + "commit": "f075d73b3269eec73dda992ce2bee67ccdfe4911", + "sha256": "0z4h2pmlmzaz2726pmd2y7g63k5ncw4fwd5jh5rv744f5pxxfs2m", + "fetcher": "github", + "repo": "progfolio/doct", + "unstable": { + "version": [ + 20200329, + 1548 + ], + "commit": "e788ec71dafdd57a5c0eb3633794abbe3355f0c9", + "sha256": "19zqhcjpb23h4nn9h22jn1gh7a53y5v8f52809scl3vif0ch9b2h" + } + }, { "ename": "dokuwiki", "commit": "e608f40d00a3b2a80a6997da00e7d04f76d8ef0d", @@ -18920,8 +20003,8 @@ 20181110, 1857 ], - "commit": "6421d9e28d57cb73212c61ab7304abfe6f950ec9", - "sha256": "1j9ibjg6fx5iqlhxjqjcr9j9jy1n75cwcqslddzlp80p4qz9ms1k" + "commit": "da4fa915a2a659001eea04498d790cdd8cac1fce", + "sha256": "1xlh20vc43ywljjw13cp0aj4h9qackhqqzm0yi5g881lcyng2ca1" } }, { @@ -18961,21 +20044,21 @@ "repo": "seagle0128/doom-modeline", "unstable": { "version": [ - 20191025, - 624 + 20200322, + 636 ], "deps": [ "all-the-icons", "dash", "shrink-path" ], - "commit": "59b1f7fe24fef9027d60942c44bfaa93df149a3d", - "sha256": "0jc65qxnjnid30y2ilp0a7yqa41qz9jzflp9cmky49hgwjaph33n" + "commit": "0642f7107102e88fb8818da02e6612c6855537ff", + "sha256": "1wmsrvzbvixzps6zp1d2r5fn7gkfwvjz2ksjqd6a8sd4swdx9ggk" }, "stable": { "version": [ 2, - 6, + 9, 2 ], "deps": [ @@ -18983,8 +20066,8 @@ "dash", "shrink-path" ], - "commit": "c7eb0fb93e11c2252dc9f1a928e26627f3f4b3a3", - "sha256": "1swbjrmfyq496rg03xm6vz5w00bsz06nly7mffvxy74jc3f6d5fc" + "commit": "e6d690bae01cb68e7171857fe07ac914d7a19f4b", + "sha256": "0k5rppzpycl1aggg6cvwvgxylgvjbxksvdah8fkrrmx3dwcr2y3p" } }, { @@ -18995,14 +20078,14 @@ "repo": "hlissner/emacs-doom-themes", "unstable": { "version": [ - 20191024, - 1803 + 20200327, + 1325 ], "deps": [ "cl-lib" ], - "commit": "bb587d06f883cf4362fbfb3df2f989367fccb0fe", - "sha256": "0k8i6xg6dg5i0kgyj73qiy5kn4aa8c2g7caijg76914dmxvm3ikc" + "commit": "bbb3725af973485424f6ca716b648923defa176c", + "sha256": "0pybwshmcfj0ll2hjcdrqdqbf6crn10pjlkbiyf3k23w5ayaql49" }, "stable": { "version": [ @@ -19041,20 +20124,20 @@ "repo": "preetpalS/emacs-dotenv-mode", "unstable": { "version": [ - 20180207, - 1914 + 20191027, + 2129 ], - "commit": "f4c52bcd5313379b9f2460db7f7a33119dfa96ea", - "sha256": "1fplkhxnsgdrg10iqsmw162zny2idz4vvv35spsb9j0hsk8imclc" + "commit": "e3701bf739bde44f6484eb7753deadaf691b73fb", + "sha256": "0ys1czramj3c8zbnxxc599bqc0nqp3nnn3n45ac9cjglx5iaydq3" }, "stable": { "version": [ 0, 2, - 4 + 5 ], - "commit": "f4c52bcd5313379b9f2460db7f7a33119dfa96ea", - "sha256": "1fplkhxnsgdrg10iqsmw162zny2idz4vvv35spsb9j0hsk8imclc" + "commit": "e3701bf739bde44f6484eb7753deadaf691b73fb", + "sha256": "0ys1czramj3c8zbnxxc599bqc0nqp3nnn3n45ac9cjglx5iaydq3" } }, { @@ -19083,8 +20166,8 @@ 20190325, 1917 ], - "commit": "215ab684a204965497c4f841b110f0621ff1f09f", - "sha256": "0ns51z9fmqkypnm8s0lzkglds073rlbq8n0v78s84l82bir0kwzv" + "commit": "b61df3561ea9bed1848cf69b6bb53f7fdf6916dc", + "sha256": "063jw3b94l43j31piygjcjzqp2gf828xr3da1hd3qimp25c9fsv6" }, "stable": { "version": [ @@ -19210,8 +20293,8 @@ 20161021, 1211 ], - "commit": "4953f1c8a68472e157a0dcd0a7e35a4ec2577133", - "sha256": "1i7k7d2gnzd2izplhdmjbkcxvkwnc3y3y0hrcp2rq60bjpkcl1gv" + "commit": "a69e364532fffa451d1f12ade8fadb9cdbd8318c", + "sha256": "12pwfv0j54idvn061l3qxf0vrrl56085n517izh8x6jkgxjcx7k0" }, "stable": { "version": [ @@ -19231,20 +20314,20 @@ "repo": "dracula/emacs", "unstable": { "version": [ - 20191022, - 2033 + 20200324, + 1726 ], - "commit": "320cc8cfc67e33c86045ef3e79b7627b91b9b517", - "sha256": "0pzlwxsa823sbcf2nq2lw303cld2jc2siaaiafld0qc4xasg9zyn" + "commit": "e4672e22885772d2be0c75df03c4f805f1acf5fa", + "sha256": "0pb0q8grybzl3sh75km93n1cvk7wh5c2r2nbm8rkwzzhxrhrvffl" }, "stable": { "version": [ 1, - 5, - 1 + 7, + 0 ], - "commit": "66e429f4d576346661ae3a111bafaa06febc1d94", - "sha256": "0lyy8vjzzcfcj4hm7scxl4cg4qm67rprzdj7dmyc3907yad4n023" + "commit": "7751d4d3115c5e873b73b670248c49ce8910997e", + "sha256": "15y2djc5jljlvls1x9kp50m1kp0dcksmyixafsyimj66xpq9ngh0" } }, { @@ -19297,10 +20380,10 @@ }, { "ename": "drawille", - "commit": "3416586d4d782cdd61a56159c5f80a0ca9b3ddf4", - "sha256": "0nkhy00jx06a7899dgyajidah29p9536mvjr7cyqm99ari70m7y9", + "commit": "e45ddc0c886fd2bd89ef24c99110c9faf0a05776", + "sha256": "1rsnp3zfp4y6bjdwr2adys91gc4jph3cgwkbj9r1d07xvh5fpfwm", "fetcher": "github", - "repo": "josuah/drawille-el", + "repo": "emacsattic/drawille", "unstable": { "version": [ 20160418, @@ -19374,14 +20457,14 @@ "repo": "arnested/drupal-mode", "unstable": { "version": [ - 20171120, - 2309 + 20200210, + 2222 ], "deps": [ "php-mode" ], - "commit": "47fda0a38a5b197f4606137d9c3b7d44aaeaa886", - "sha256": "1rg46prsymxc9lyhk7cbr53089p970mmmybiir2qsyx2s4m6mnfl" + "commit": "ee1a24c96a7487bb9df8dd15656be7d8330028f0", + "sha256": "1h0p1z0s02vn7b4p2kj6jr49y245wjf5grcv0n5riqds2s863q2v" }, "stable": { "version": [ @@ -19407,8 +20490,8 @@ 20130520, 1655 ], - "commit": "cddf1dbc71fb4c5c4c50317db6830467fa97cff0", - "sha256": "0fr275b7k66widp0mmbm7mjmk76hgxk89h3rcfva4wwkflhymhhl" + "commit": "4087c28c89a884ee050961c57166e6b09085f59d", + "sha256": "1hjs8jbbflj56dm87mkzray75dlczy6p58lpkr8lvh7wnim4pd6a" }, "stable": { "version": [ @@ -19443,8 +20526,8 @@ "repo": "dtk01/dtk", "unstable": { "version": [ - 20191016, - 103 + 20200315, + 1931 ], "deps": [ "cl-lib", @@ -19452,8 +20535,8 @@ "s", "seq" ], - "commit": "abf5f50fd2bd2697f0c07991ab05e0132ae7f50d", - "sha256": "0zdmsqlb4ph9cdpl0gvvyizjdgygwdmww5vnsz3h84chzpza9x5q" + "commit": "d21a5b7958da058bb53d36fe9234089409f62c5e", + "sha256": "0w46yr5d108z2pipvh449p15qnm6mnix21pbnq3alczilzxzf9lw" } }, { @@ -19479,19 +20562,19 @@ "repo": "jscheid/dtrt-indent", "unstable": { "version": [ - 20191019, - 2141 + 20200306, + 1054 ], - "commit": "48221c928b72746d18c1e284c45748a0c2f1691f", - "sha256": "0jmlb54b0qrp2mr9cnbzki1vy7i0wv5y1h03ns8acwa2hmpjk30a" + "commit": "1569b712ea691a9b8df12af5ee8c8a4aa4853e45", + "sha256": "1149s9ym30nfdbb2ndk5ypl5wb984an6n37gycra15j3z15d60mh" }, "stable": { "version": [ - 0, - 9 + 1, + 0 ], - "commit": "48221c928b72746d18c1e284c45748a0c2f1691f", - "sha256": "0jmlb54b0qrp2mr9cnbzki1vy7i0wv5y1h03ns8acwa2hmpjk30a" + "commit": "1569b712ea691a9b8df12af5ee8c8a4aa4853e45", + "sha256": "1149s9ym30nfdbb2ndk5ypl5wb984an6n37gycra15j3z15d60mh" } }, { @@ -19561,8 +20644,8 @@ "repo": "jacktasia/dumb-jump", "unstable": { "version": [ - 20190928, - 1758 + 20200306, + 513 ], "deps": [ "dash", @@ -19570,8 +20653,8 @@ "popup", "s" ], - "commit": "34fb76982dafc62f8105c520aece4c3ceccb7307", - "sha256": "1f6hgrklnbadr15qnsb4icn3xa589cs3ms2jvn1fndbhv4ms2hv3" + "commit": "e8e9b0c2d1eda594fd40db9c64e93a70b426641b", + "sha256": "0m8771bzz972zf2lhv7f4z2x0rnnfc0iidb5jpz072wr3v52kark" }, "stable": { "version": [ @@ -19615,17 +20698,17 @@ 20191016, 1241 ], - "commit": "72ed306bc42175675c0cf227c7073d3522c683da", - "sha256": "0m8xy6fgv33j7r414959fy4i0d0lq8pl6qfnwrzln21a5j99dvah" + "commit": "d864995d98479a21fb88fcf6d24b8262f2fdeae2", + "sha256": "091c58yvvwly070dgzz1202njlp695fzq85873v4dak1rwxisrwh" }, "stable": { "version": [ - 1, - 11, - 4 + 2, + 4, + 0 ], - "commit": "f7ac8f5c8fed67d31c2a63669006829263c2fe6d", - "sha256": "1bbicrfsrcc67v4q5qfi2vbzpqhzj5v55z9vkp6sljwnwfvm8jzr" + "commit": "ccd447e41a711f8a52bc854d71dba8677c900c34", + "sha256": "0i8b84mi38r431z4a1yh4xnn9z5mnk1g3di0qz6h4lsxq8pg2m0v" } }, { @@ -19660,20 +20743,20 @@ }, { "ename": "dyalog-mode", - "commit": "e608f40d00a3b2a80a6997da00e7d04f76d8ef0d", - "sha256": "0w61inyfvxiyihx5z9fk1ckawcd3cr6xiradbbwzmn25k99gkbgr", - "fetcher": "bitbucket", + "commit": "1a8f86df54f1243fea71e1e73ed0b9fb049032bd", + "sha256": "00mbkl275g8x3w341nsi90ffm5cfalnrfzx8ww1hnxc86q5ldivw", + "fetcher": "github", "repo": "harsman/dyalog-mode", "unstable": { "version": [ - 20191002, - 1352 + 20200301, + 1149 ], "deps": [ "cl-lib" ], - "commit": "4e214c1804eefde07b1dcd2ea07b8e41f33d7ee7", - "sha256": "1vq1fhn8x6i6wmccwiq482dbrdpn5cllkdn3v0ki0427a8gwkdal" + "commit": "5dceeefaed6fbedb680bb6cc9aba14fb5f890310", + "sha256": "137kgixsdkw2rqj1402gc31gd6hdbna7bx5j1xxhyiig2x2b3aqx" } }, { @@ -19813,10 +20896,10 @@ }, { "ename": "e2wm-R", - "commit": "9a3ba9843bdf275815b149e4c4b0a947bbc5e614", - "sha256": "09v4fz178lch4d6m801ipclfxm2qrap5601aysnzyvc2apvyr3sh", + "commit": "c52a1ea0afa8e5f439b7ac987b79c49eb08fe95a", + "sha256": "195qgcdkz1913bvr8pk0yakp83phfn8i7gjv9s0zi8alwwpm3cw9", "fetcher": "github", - "repo": "myuhe/e2wm-R.el", + "repo": "emacsattic/e2wm-R", "unstable": { "version": [ 20151230, @@ -19981,16 +21064,16 @@ "repo": "aki2o/e2wm-term", "unstable": { "version": [ - 20141009, - 1308 + 20200322, + 729 ], "deps": [ "e2wm", "log4e", "yaxception" ], - "commit": "65b5ac88043d5c4048920a048f3599904ca55981", - "sha256": "0qv3kh6q3q7vgfsd8x25x8agi3fp96dkpjnxdidkwk6k8h9n0jzw" + "commit": "74362d6271e736272df32ea807c5a22e4df54a50", + "sha256": "1cr2mp1visx4fnxc73sk6gw7wnl1mxfb624rm1sxz7wwry8b8fx9" }, "stable": { "version": [ @@ -20015,26 +21098,26 @@ "repo": "redguardtoo/eacl", "unstable": { "version": [ - 20190801, - 213 + 20191230, + 1057 ], "deps": [ "ivy" ], - "commit": "8b54294af9c0ad8d6e40932b2b384fe760e56209", - "sha256": "1iyw3gs0ab6vi5x2r6m0caf984yg0fqbn3mmsqmnap2pk1cr259w" + "commit": "a25c28f4ee1126d1ee51dae22843f3440520f1a3", + "sha256": "0pz894saz6ncira9ag9aqmfw394v56sfxldv25phh3z44y1ij01z" }, "stable": { "version": [ 2, 0, - 1 + 2 ], "deps": [ "ivy" ], - "commit": "ba6a95838422ec33191beaa12b3e43b67c105abc", - "sha256": "0ksn11sm3g1ja5lpjz3hrzzw8b480mfcb3q589m52qjgvvn5iyfv" + "commit": "e074682aa18bed4fd68068a48ccaa970ae6d4e33", + "sha256": "1kb14p8004kaqxq765nv5rn8xniw53g4zafcy9wkv9b88bixb7q9" } }, { @@ -20075,28 +21158,28 @@ "repo": "masasam/emacs-easy-hugo", "unstable": { "version": [ - 20191013, - 1814 + 20200209, + 743 ], "deps": [ "popup", "request" ], - "commit": "0ff8033adc13ada55259e6c2fad27de143325917", - "sha256": "0hk7kcl598d43fi9k6c278syz7f11szpmi6x6v0vjaah805a07jb" + "commit": "30145bb0bd5b04d9c413f5ace2fd0e52b2519663", + "sha256": "1i3wjkxksmq4d364sc56243p847rkyzzh10xj1j5a3zm69g3v53z" }, "stable": { "version": [ 3, - 8, - 43 + 9, + 45 ], "deps": [ "popup", "request" ], - "commit": "02f7f06d9d1e66cef6df9768dc2400217f488a6f", - "sha256": "17l7zpc7vcn4g19q78fj1pxmh63x5xf081x4f79d1v23fnakqrdb" + "commit": "30145bb0bd5b04d9c413f5ace2fd0e52b2519663", + "sha256": "1i3wjkxksmq4d364sc56243p847rkyzzh10xj1j5a3zm69g3v53z" } }, { @@ -20107,26 +21190,26 @@ "repo": "masasam/emacs-easy-jekyll", "unstable": { "version": [ - 20191013, - 750 + 20200209, + 651 ], "deps": [ "request" ], - "commit": "c6f6640848df1b73fa04cba10a7a22dc9cc49db3", - "sha256": "1m1xn4b6dny1h7vq99c18s8lmxps2xzh5zy8bzms241p2d5zbbvk" + "commit": "3582ed543b3e9f5c32834f530abeba92ef0b4244", + "sha256": "0bqp6z1c1bf5gbj4rz717q47cj54ral2gagz8b6d7ihyn7398qq6" }, "stable": { "version": [ 2, - 2, - 23 + 4, + 24 ], "deps": [ "request" ], - "commit": "23d95261dce28a73e4ab11b10f447bde829b8a1f", - "sha256": "08y6v7rz33pw2crq3lq06sp7lvg2ww9afdwa41bp5i2xrlz069x7" + "commit": "75f057caf54714b4e8a0934107f1ff8a05fc5349", + "sha256": "1753wf817z65sd23bkispsxyk67sd4r2yx9k6f1ncaywcl0z974k" } }, { @@ -20284,26 +21367,41 @@ "repo": "joostkremers/ebib", "unstable": { "version": [ - 20191015, - 1716 + 20200327, + 1040 ], "deps": [ "parsebib" ], - "commit": "622faff85836383d8cc1a40ca65904338247785c", - "sha256": "0y75jdcd10l77ggxk7fd9ppkygm77iw35vscnj0yfms72qajava9" + "commit": "f57e138d56bd293f30a64c33ab8b374758acfb08", + "sha256": "0h8bxy6p91hhx6mvzbxv2j3cr6bxcdbpgbaqa9ibcaxy72d9xrjp" }, "stable": { "version": [ 2, - 17, - 3 + 22, + 1 ], "deps": [ "parsebib" ], - "commit": "7a1e570e3d540e4c8d30bf1d23b62a30c1ae65a6", - "sha256": "1ifqa0scvq872yhvb6p6x2y8yilbnf754rdbqa69s0rvv9qzhvw9" + "commit": "cd37aaa9a11e3b2232b8aa12cfe9a8ae9b830b10", + "sha256": "0spiz5r2y4pdpyc4d3f9w228giq0j9rm8f5h5akzn5rwiq9pfkwz" + } + }, + { + "ename": "ebuku", + "commit": "2f38ff73025a8645e9a93d27dc2c19446920737b", + "sha256": "0f9gm24cw81hfczas7w5k7dcr5n255ffskp926ks4wwvl4bpvdpq", + "fetcher": "github", + "repo": "flexibeast/ebuku", + "unstable": { + "version": [ + 20200203, + 1122 + ], + "commit": "2f1af38469966c788483cbce4ab70436f72cf30d", + "sha256": "15liiczqjf8p2jr9356zrj65ijp5gdrnb5i7m09armyhb8282rmg" } }, { @@ -20368,11 +21466,11 @@ "repo": "abo-abo/eclipse-theme", "unstable": { "version": [ - 20191007, - 1354 + 20191113, + 1518 ], - "commit": "0381586948f4b0d56f43c4587afd618063834986", - "sha256": "0rzq6qfy7ssy4mmaysjw1l78xs2pgnhfl8wzad7yaig3hs71p81k" + "commit": "dcf97865512ed450f9d5137c1a05e12edb5b7f80", + "sha256": "0nv0cwn9pjvy54b2pv9ncr6xmh6nnrdcdyqmcahrzmlvgy4ks8ra" } }, { @@ -20662,17 +21760,35 @@ }, { "ename": "edit-at-point", - "commit": "a63b22f357b2d08b12fb86c27261ab4d687c5f7f", - "sha256": "1mijasr4ww6vcjfyk7jdv4mh7w2rrspqbbmqayiy2918qg2x01df", + "commit": "2c01af1911a0c8856e3dee09b6d233f821d67814", + "sha256": "0ris81wld73h70arvc7zpzvk2wqqmzbpa090vak71w9xgw1jfr36", "fetcher": "github", - "repo": "enoson/edit-at-point.el", + "repo": "emacsattic/edit-at-point", "unstable": { "version": [ - 20150716, - 1324 + 20191013, + 1218 ], - "commit": "3b800c11685102e1eab62ec71c5fc1589ebb81a7", - "sha256": "0crwdgng377sy1zbq7kqkz24v697mlzgdsvkdp1m8r7ympikkj6w" + "commit": "28c85a65c9c61f2aff50bc5e93f61cde26a5d9c0", + "sha256": "1wciwx9zk28r21v9ampjd8wn19g19ia7hiq1x0hami479dxwinfc" + } + }, + { + "ename": "edit-chrome-textarea", + "commit": "d9e8d07ed13d190a8a7eab75a59ec5b9a01d97a8", + "sha256": "0xp7925y04gr09j204r01jq7hqjp32gqsazwsbih4fkx0n30aqbs", + "fetcher": "github", + "repo": "xuchunyang/edit-chrome-textarea.el", + "unstable": { + "version": [ + 20200324, + 1513 + ], + "deps": [ + "websocket" + ], + "commit": "7074fe87c2df4aa7afecb7513326f5d481dcf92d", + "sha256": "17kbakpr6d79cih1fmvnrivs0vk41fw0njhb5y6dbml6ppi11i57" } }, { @@ -20702,11 +21818,11 @@ "repo": "Fanael/edit-indirect", "unstable": { "version": [ - 20180422, - 1807 + 20191103, + 1013 ], - "commit": "de645d8144e8a08f039a9c88185121ec81d957ef", - "sha256": "0xg6p3ccch9k920xhhpyhn5mkgc0sfyxsn8l1wsc6vbbp5h7wlad" + "commit": "935ded353b9ed3da67bc61abf245c21b58d88864", + "sha256": "0yghm0l4wickhqc29ykjjg98xb91djr1f6n6ihc7ymsv0yhw5wc4" }, "stable": { "version": [ @@ -20809,14 +21925,14 @@ "repo": "editorconfig/editorconfig-emacs", "unstable": { "version": [ - 20191025, - 806 + 20200212, + 739 ], "deps": [ "cl-lib" ], - "commit": "59c734af576b6ea505718a2294eae9f3facac477", - "sha256": "0v3ymgbh4ap5sw71aa7ycxd0yj4qga5ngsshd80i2cg9pn5qz0aj" + "commit": "19de0ec1bac67c5a76a4dd3d8ffe6c5411ace1af", + "sha256": "187vcflpbv4zpbzdsxw5i6c9j6dva7v3d3skh3b6wybjzh6ib4jf" }, "stable": { "version": [ @@ -20949,14 +22065,14 @@ }, { "ename": "edts", - "commit": "782db7fba2713bfa17d9305ae15b0a9e1985445b", - "sha256": "0f0rbd0mqqwn743qmr1g5mmi1sbmlcglclww8jxvbvb61jq8vspr", + "commit": "92b0d3a2af833e0f11e6a935d54eba5e3879d690", + "sha256": "1363k9fh1z7r6hxccsqx2a1d688kldr4h6vp91hwph7ihk4868il", "fetcher": "github", - "repo": "tjarvstrand/edts", + "repo": "sebastiw/edts", "unstable": { "version": [ - 20171030, - 709 + 20200304, + 1709 ], "deps": [ "auto-complete", @@ -20967,8 +22083,8 @@ "popup", "s" ], - "commit": "6ef4bdf571235ee1b078db321402270cabff7fda", - "sha256": "1nzf8wdv0hs4kp69cy3blwxh18c2bkxr4d4y6ggdp0vmwv41j3zi" + "commit": "22eb59692a792c6769ae0b2b9f9a2583133764b8", + "sha256": "015irp4vd4s2j2iw4p0r98kb60xyjbrpvckj8iixsja3qj8b63rw" }, "stable": { "version": [ @@ -20988,11 +22104,11 @@ "repo": "ajgrf/edwina", "unstable": { "version": [ - 20190821, - 1850 + 20200113, + 1714 ], - "commit": "8d6f7ce117c622e19576888fbff9145615683815", - "sha256": "12rvmr8r85k9hfgbz2qwp0ryvy4qdarr82hq16ilppq5vlkiar02" + "commit": "c5368716a504c93407fd8cb4ef925a8d8eb62698", + "sha256": "0rsi1v9rr76crbgb7f13g31rfq5bjk0hchqr356h97xlqr39168y" }, "stable": { "version": [ @@ -21065,8 +22181,8 @@ "deps": [ "dash" ], - "commit": "d98524799f95c6c6bd972e52790e7e6b9003725c", - "sha256": "1zyni0z4bnns37f7ylxm99pdgggd8942lkwjkl8x4qglpb9ibiri" + "commit": "64511754e123687930afdb5b05cfcc24a30fbbcb", + "sha256": "1bxf5wssmpgnidf228frzw347fx8fvcqsj8rpg83fz315i16nydb" }, "stable": { "version": [ @@ -21105,6 +22221,21 @@ "sha256": "1ak23v9gqj6x104mzgihn0hi7w0kr76q1sl929wmbb9h8s3a54q8" } }, + { + "ename": "egg-timer", + "commit": "a8fbafbeec955fb9bb421519de1e3d09d9812c66", + "sha256": "1q3l8hxymk3vxa0nf8pydy4k9qnbzzzpgkp86c9d744smal5xn3v", + "fetcher": "github", + "repo": "wpcarro/egg-timer.el", + "unstable": { + "version": [ + 20200217, + 1650 + ], + "commit": "e3542aeb80905956b94373a222a9cbac04e6497e", + "sha256": "0pq6ni2kvdps7j8pdlv16cka198sv29axp9xrp7c755k82pydhk4" + } + }, { "ename": "egison-mode", "commit": "3416586d4d782cdd61a56159c5f80a0ca9b3ddf4", @@ -21113,20 +22244,20 @@ "repo": "egison/egison", "unstable": { "version": [ - 20190714, - 236 + 20200107, + 2333 ], - "commit": "65dff2c90834dda505ccd1d8401f3e86689aadef", - "sha256": "1mw2cjflh1r5irj0362rvg90gklrxj1b5kwcdjq9brj26g3fzpc9" + "commit": "6ea43326d142b714363042a27e06d3487f7845d7", + "sha256": "0pvaz69rjaz8m32s4chq7kavf20njb78l380xl97blj9h0yry1l4" }, "stable": { "version": [ 3, - 9, - 1 + 10, + 3 ], - "commit": "9fbaf81114ffd3550801457257c983a077a7e17e", - "sha256": "0iz9hcx9s5l7c0y73ik6l7whjymgc0q4vfdr73y85cmnwfyi7fk5" + "commit": "79ab16f093aa3b2373422d0044f3119467755f5e", + "sha256": "0fisq0g3css641fh7y9vhagkfbsm2rfw9pnzyz434cr41wnjmjfz" } }, { @@ -21137,15 +22268,15 @@ "repo": "joaotavora/eglot", "unstable": { "version": [ - 20191024, - 1132 + 20200320, + 852 ], "deps": [ "flymake", "jsonrpc" ], - "commit": "32ba9d09ec40c68b086e6ff0a2d7c3bdd8393df0", - "sha256": "059bm1chzxvfs46izshc2q1fgg1c0gpffasjg5lgh49vk66jmyxf" + "commit": "2209779972eee595ff6ea8e75c002f7e5726b0c8", + "sha256": "08mfgg9s76wmjzvpdirnm8rsa3fsvlvjivxjdn53aj1pnky55z8d" }, "stable": { "version": [ @@ -21160,6 +22291,38 @@ "sha256": "1x6nlsc93scq8lidx1l5ipi7r7s0p63m2vwkl77p3v59glir15cb" } }, + { + "ename": "eglot-jl", + "commit": "5f04bf5d68dc12aa3f3fd66591d45cc894e59df6", + "sha256": "0ffbxzhx1fqgqlfk8gqdgyfsc98rqw7mbrdd99qx9gds1pzzx4r8", + "fetcher": "github", + "repo": "non-Jedi/eglot-jl", + "unstable": { + "version": [ + 20200120, + 1457 + ], + "deps": [ + "eglot", + "julia-mode" + ], + "commit": "94e84fe0d14585192dca53e1e962bec7596f095c", + "sha256": "0dsnyp30c9nrglv4ifv6g272sa6pgrn5f75ak81z4pkdhdn6wvnb" + }, + "stable": { + "version": [ + 1, + 1, + 1 + ], + "deps": [ + "eglot", + "julia-mode" + ], + "commit": "94e84fe0d14585192dca53e1e962bec7596f095c", + "sha256": "0dsnyp30c9nrglv4ifv6g272sa6pgrn5f75ak81z4pkdhdn6wvnb" + } + }, { "ename": "ego", "commit": "855ea20024b606314f8590129259747cac0bcc97", @@ -21191,11 +22354,11 @@ "url": "https://framagit.org/eide/eide.git", "unstable": { "version": [ - 20191001, - 2003 + 20191213, + 2119 ], - "commit": "eafa97e61383ef943bd6c3f8c7d50953257d4ae1", - "sha256": "1gdiblh6c7wsdrsrlh933xdx74nwrda7gq860lv05lc0a5j860mj" + "commit": "2153a68b58910e7892b16cc32414e2be99e33f36", + "sha256": "17fbxijpiachsb16ngbv7wpy9f4m0456bc5q9g7z8qi28dgzlz9p" }, "stable": { "version": [ @@ -21230,29 +22393,26 @@ "repo": "millejoh/emacs-ipython-notebook", "unstable": { "version": [ - 20191020, - 1934 + 20200328, + 2131 ], "deps": [ - "auto-complete", + "anaphora", "dash", "deferred", - "markdown-mode", "polymode", "request", - "s", - "skewer-mode", "websocket" ], - "commit": "876cba2049751b39f9f12929afb75aacc034ea64", - "sha256": "0jy9rhh7arbg9y1yng2gk48dvk2cifmdn9wnzf0sifn8m8cld8fv" + "commit": "6fc75f20aa0b6666e743ce674c6da526f88793b1", + "sha256": "10cm3pvpjrqy76xd9067ayn108z34014cyaal4vj2l69yrkfr0m1" }, "stable": { "version": [ 0, 16, 2, - 2 + 3 ], "deps": [ "auto-complete", @@ -21265,8 +22425,8 @@ "skewer-mode", "websocket" ], - "commit": "4399f92b6b5d23240e8f447b36521b8db2a650a3", - "sha256": "12zq35ab84j6rhwnq6flp3ljm17ild95nv73mxgig9vsrvx1y57v" + "commit": "42f8efc54bfb915248972490a4b438b8d5bda381", + "sha256": "0jnqi8pq83s8q0dy2y1518yz8lsc0graqrqf8frss21fcj7ny22g" } }, { @@ -21319,8 +22479,8 @@ "repo": "kostafey/ejc-sql", "unstable": { "version": [ - 20190924, - 1423 + 20200325, + 1455 ], "deps": [ "auto-complete", @@ -21329,8 +22489,8 @@ "direx", "spinner" ], - "commit": "99f2928624e19efc4eb7736e0e722161d9781fc5", - "sha256": "0xqhma6l1zmmkxsb1b3pzdwjz95237r2ibkhqrqfys30wi5xkk1z" + "commit": "5bf46fc49b7827604ee82d56b80eee36630b562d", + "sha256": "0dcnzq9l1mnfrn7rq8kvyfkbw36r6iagp61c0p757xwfawsaxns4" }, "stable": { "version": [ @@ -21413,8 +22573,8 @@ 20181006, 225 ], - "commit": "29b43a17559bbf38d7a1db1edd5b524cacc4401f", - "sha256": "011i33igq9df0bcmk938yibgj4b417ri2pz16j6klwnnbl8dqkq3" + "commit": "456fea0866ee71cb5a68eb65e9464565674081bf", + "sha256": "1hcjf88xjgkgp5wv7ccnfifnmpdj33csx6xm7rrdal3cy0f3ydj8" }, "stable": { "version": [ @@ -21527,11 +22687,11 @@ "repo": "raxod502/el-patch", "unstable": { "version": [ - 20190702, - 2147 + 20191114, + 1639 ], - "commit": "1ea0645280f8e3d9a6858ec9050f4e260b52f6ce", - "sha256": "025yglv0wkm2gx4yncyqwgvl9h5zcnap3508qb824jncla5jnb92" + "commit": "4744d6b1a5405001cb75f2c362a681964367319c", + "sha256": "1l4rjvdrdzvgq5zq6njg6gv0b7p6j545h4v27mpyxfh3z5jc8c49" }, "stable": { "version": [ @@ -21608,15 +22768,15 @@ "repo": "eschulte/el-sprunge", "unstable": { "version": [ - 20140107, - 139 + 20200312, + 1212 ], "deps": [ "htmlize", "web-server" ], - "commit": "37855ec60aeb4d565c49a4d711edc7341e9a22cb", - "sha256": "04k1fz0ypmfzgwamncp2vz0lq54bq6y7c8k9nm39csp2564vmbbc" + "commit": "e4365ea0bdf60969817619376bdcc98003fec33d", + "sha256": "13d2dr5r9nv97ma3abcnhqgq86rqwqlwvq64z3hm0qibsxxajdhq" } }, { @@ -21756,11 +22916,11 @@ "repo": "Mstrodl/elcord", "unstable": { "version": [ - 20190713, - 2309 + 20200322, + 2027 ], - "commit": "1e1cf35cd9f0a5d6f4a3757860e066d7ac482c39", - "sha256": "0mfsd4f7494k9p9wm6wn7abcacxv8lxsfjnj6cbin7b8992rgq01" + "commit": "94b0afb9bac32fa72354517347646166d6bec986", + "sha256": "11gj67d83hx9wfjf4j277jy8jxf97i6bd9r8r057v4i8301qh91p" } }, { @@ -21796,6 +22956,30 @@ "sha256": "0l9ah3ijlidjshwkazfcdasm3hmigw8dcyqgi9pmpv0kw9096y64" } }, + { + "ename": "eldev", + "commit": "dd7ae513905a4e4cc23078239ecf2d5f346f1226", + "sha256": "11vxhssii5h5c3qm8iwg8d5zrxas3nzl391h9dl83v9h1pg98kg1", + "fetcher": "github", + "repo": "doublep/eldev", + "unstable": { + "version": [ + 20200315, + 1527 + ], + "commit": "98fc3206c36bf6384bf333f93b4ae3d9382f5c57", + "sha256": "0a6a20n4nwfnzh0fbndpf3f77mchax4sdc2bwhn66yncm9kikjyh" + }, + "stable": { + "version": [ + 0, + 2, + 1 + ], + "commit": "77e1e90efa6622c6784ef10f26e6f845aca5ee3e", + "sha256": "0ip9dnyh53m2yd92bp0jddm3db4fbcpm9zniqij9anvzhjdfqx1b" + } + }, { "ename": "eldoc-box", "commit": "aac2e64f9e0d06b95bdf0dece214263f75470ea8", @@ -21804,11 +22988,11 @@ "repo": "casouri/eldoc-box", "unstable": { "version": [ - 20191008, - 1427 + 20200316, + 1956 ], - "commit": "033df7175d454708460818c66ad9a8c589540ca9", - "sha256": "16shcbq8hl2xmbzyfk727sbbxflrkpms48y715hw4iy2a2qxnbwq" + "commit": "7fa3b78d073c235ad945fc28d692c5f5fb60860a", + "sha256": "06cy6dsn3drfk0jkc10b96qzvi5rfhkjy7cib5dk2kqgg615is6d" }, "stable": { "version": [ @@ -21866,15 +23050,45 @@ "repo": "stardiviner/eldoc-overlay", "unstable": { "version": [ - 20190223, - 543 + 20200328, + 619 ], "deps": [ "inline-docs", "quick-peek" ], - "commit": "cfec077d9a699c88265af2e9480d5e76a3b3f833", - "sha256": "0c16i6y7675rzif5gj9s6rz3nc59339yp4fn27a56sly42qfnh9f" + "commit": "ec318acb564ac5679285b51b7d979410d393fac9", + "sha256": "0dx1b9d7zyqcwsnhl18hyrkmrc0zy68zwhp81d43fw84gjb4jcx8" + } + }, + { + "ename": "eldoc-stan", + "commit": "e4ae4feacc7d83ad2acc8db83cf6339b6c63ec3e", + "sha256": "0ah6fbz039lyb9xf4q379h7y0df18r1vyri6nq3lmhj3zw3042n1", + "fetcher": "github", + "repo": "stan-dev/stan-mode", + "unstable": { + "version": [ + 20200221, + 2025 + ], + "deps": [ + "stan-mode" + ], + "commit": "599a0440086c660e6823622b35058f6d2d6d9637", + "sha256": "0mm0kpyihpd55hx14smlm0ayz05zw750fihhqhxqc258y8y73m5y" + }, + "stable": { + "version": [ + 10, + 1, + 0 + ], + "deps": [ + "stan-mode" + ], + "commit": "599a0440086c660e6823622b35058f6d2d6d9637", + "sha256": "0mm0kpyihpd55hx14smlm0ayz05zw750fihhqhxqc258y8y73m5y" } }, { @@ -21931,11 +23145,11 @@ "repo": "xwl/electric-spacing", "unstable": { "version": [ - 20161209, - 1957 + 20200223, + 838 ], - "commit": "9d0f8a213133f2619a4e9dfbba3b00d4348c07b0", - "sha256": "1wzf8q2k2iwnm9b5kj16bwif7g0qc7ll3cjs20gbmcnq5xmhwx9f" + "commit": "83568a7f2f0e2f0983e348b6e4adc0fc75b98adf", + "sha256": "03710cr8jvr22c9j3c266460aln26j7y9vqj6qm3mmzhsr3v7q2c" } }, { @@ -21985,20 +23199,20 @@ "repo": "skeeto/elfeed", "unstable": { "version": [ - 20190903, - 1137 + 20200209, + 1942 ], - "commit": "69b0320156cbf7e395efa670464d4651f708332f", - "sha256": "1nkd1ll8fjnnkqqz6x4yr7lij6kknh4mh30qf3g4kzg5gmwhbx6q" + "commit": "d0405e63863e54a01200740a6717ac875eceabc1", + "sha256": "1pbcs4i9d1v8pmgrsxnacnbdrcswifpbnrb613z18caj1a17nl02" }, "stable": { "version": [ 3, - 2, + 3, 0 ], - "commit": "63b26ee83fd58afdf8f0b3d2c04cdc9cd956772c", - "sha256": "0m0a35210pb4yf6m8mzaq6nkl9x6fphjjqyl3dzygnmmzxkc8aw2" + "commit": "9b5a0ce648cdaa59f7c96414ee868038e08ea29d", + "sha256": "0j8a94val4ml7g1vcjgzk1w89h55sxfdrwnncmz6qbh1y2xsz8c5" } }, { @@ -22054,28 +23268,60 @@ "repo": "fasheng/elfeed-protocol", "unstable": { "version": [ - 20190616, - 301 + 20200307, + 1242 ], "deps": [ "cl-lib", "elfeed" ], - "commit": "92961499adfdef3c038af3dff24b435e9fb4bc1a", - "sha256": "0sybvs9wwf8bvf9615pvhgswz3g6d34hic22smcy7byrlq8hrba5" + "commit": "328dcf40def951ddc193f3d6ccb01cb58f9fc1cd", + "sha256": "0zqgkx6s9dcy6la62vlv4c12wx5a505pc1hhxiwhhpp93r61bh1z" }, "stable": { "version": [ 0, - 5, - 9 + 7, + 5 ], "deps": [ "cl-lib", "elfeed" ], - "commit": "c5faca15ccfe7e03dc4ee1372a07671c20015737", - "sha256": "1cdg111dgpphlpv2csv9nr5p2zjk3qss7bf0y8485nnzcin4ip9f" + "commit": "bffe74f0f7d7126691f6a9dd9eadf8714545dfe0", + "sha256": "16cmm59lwkgq0yj0pg9sn46afvqqjjx06xv5sc96vgwvn1n0lfi7" + } + }, + { + "ename": "elfeed-score", + "commit": "e981f8adeb5015d966e733496280d5cea457228d", + "sha256": "0jag1ksmnql61303a51i2lizd2yk4cjlsm2hksqqjk46cwv2cvl7", + "fetcher": "github", + "repo": "sp1ff/elfeed-score", + "unstable": { + "version": [ + 20200328, + 1855 + ], + "deps": [ + "cl-lib", + "elfeed" + ], + "commit": "916c47b3590b2ff3c5075dcc1def4b36a4b14947", + "sha256": "1vhchbyy3c79cgvdz12wnryklr5g1bwh02d604zj2wca3b0199w4" + }, + "stable": { + "version": [ + 0, + 4, + 4 + ], + "deps": [ + "cl-lib", + "elfeed" + ], + "commit": "916c47b3590b2ff3c5075dcc1def4b36a4b14947", + "sha256": "1vhchbyy3c79cgvdz12wnryklr5g1bwh02d604zj2wca3b0199w4" } }, { @@ -22086,28 +23332,28 @@ "repo": "skeeto/elfeed", "unstable": { "version": [ - 20190906, - 2012 + 20191123, + 1738 ], "deps": [ "elfeed", "simple-httpd" ], - "commit": "69b0320156cbf7e395efa670464d4651f708332f", - "sha256": "1nkd1ll8fjnnkqqz6x4yr7lij6kknh4mh30qf3g4kzg5gmwhbx6q" + "commit": "d0405e63863e54a01200740a6717ac875eceabc1", + "sha256": "1pbcs4i9d1v8pmgrsxnacnbdrcswifpbnrb613z18caj1a17nl02" }, "stable": { "version": [ 3, - 2, + 3, 0 ], "deps": [ "elfeed", "simple-httpd" ], - "commit": "63b26ee83fd58afdf8f0b3d2c04cdc9cd956772c", - "sha256": "0m0a35210pb4yf6m8mzaq6nkl9x6fphjjqyl3dzygnmmzxkc8aw2" + "commit": "9b5a0ce648cdaa59f7c96414ee868038e08ea29d", + "sha256": "0j8a94val4ml7g1vcjgzk1w89h55sxfdrwnncmz6qbh1y2xsz8c5" } }, { @@ -22118,14 +23364,14 @@ "repo": "TobiasZawada/elgrep", "unstable": { "version": [ - 20191022, - 1746 + 20191203, + 1227 ], "deps": [ "async" ], - "commit": "13cfea5df14a24fe71afe6efd167caf107497698", - "sha256": "1g4rnc3y5ivz5ix0xvcai9wiq4kzqnv8skggq9vx1691p3s847nl" + "commit": "c475cee98bc607746901318ef9da463c96d5e04e", + "sha256": "02jfpi8bvjxw5jnjjpzq87xf1xjly745k8s74jc9lpginip3kj95" }, "stable": { "version": [ @@ -22196,20 +23442,20 @@ "repo": "xuchunyang/elisp-demos", "unstable": { "version": [ - 20191025, - 1021 + 20200329, + 2310 ], - "commit": "0c4948c08b8616f3e24fa8b6deb758f199e12fda", - "sha256": "1nqkzicika1ndw0m62xjaa0szfpz7ls15m2fbhk91sqk1lwf213x" + "commit": "57dd4ae3e47ecca6cb9eee87328f159b3eb53702", + "sha256": "15cjv97240nnmjjbdx9iqz4qwxvbxxsyjllcjwbmkkbpv6x91b89" }, "stable": { "version": [ - 2019, - 10, - 25 + 2020, + 2, + 19 ], - "commit": "0c4948c08b8616f3e24fa8b6deb758f199e12fda", - "sha256": "1nqkzicika1ndw0m62xjaa0szfpz7ls15m2fbhk91sqk1lwf213x" + "commit": "7cc5ae4eac5bd8f38ade9ba1c28ad6faaba82160", + "sha256": "0mckgaz92v3y2vlkggx9kd51fd1mahylw39c42l51dyv8wscm7sc" } }, { @@ -22265,20 +23511,28 @@ "repo": "gonewest818/elisp-lint", "unstable": { "version": [ - 20180224, - 2042 + 20200324, + 2217 ], - "commit": "04b0d36ec0e4dc1bb54c2bf4c2d16b2af8cf6a39", - "sha256": "04hxpfgvkh4ivaxqbhnp3j68i1kqzg1v19bssnvcagll2mm4r3xg" + "deps": [ + "dash", + "package-lint" + ], + "commit": "35a3fcc3131c243206fa914b8562cda771eab8c5", + "sha256": "09ibaq3mjnw3vm1rwrljdcgybxly2fk9gjdim39s9fpgar4ys12p" }, "stable": { "version": [ 0, - 2, + 4, 0 ], - "commit": "9d894e99377859171ee54cb7d2b2e7f2cc7c267c", - "sha256": "11pvqskjhxxsyxmy8wllqwa0qg0j9280h0m5rzjghgsdcnlisyvq" + "deps": [ + "dash", + "package-lint" + ], + "commit": "2b645266be8010a6a49c6d0ebf6a3ad5bd290ff4", + "sha256": "1gg9ik0x67cnldzsclp45i7gf190y9pxl11k3grdkrkqjiph1375" } }, { @@ -22337,25 +23591,25 @@ "repo": "purcell/elisp-slime-nav", "unstable": { "version": [ - 20160128, - 1909 + 20200304, + 2201 ], "deps": [ "cl-lib" ], - "commit": "be36d66b4781eab7218bff419f3ec79573bbd15c", - "sha256": "0q0nisc0k4dl67n8c1068g32z8a642dawmq1h9licad71c42s95p" + "commit": "9ab52362600af9f97f1590f05a295538025170b3", + "sha256": "08k4zlawjkb0ldn4lgrhih8nzln398x7dwzpipqfyrmp0xziywma" }, "stable": { "version": [ 0, - 9 + 10 ], "deps": [ "cl-lib" ], - "commit": "0e96d9f1f0d334f09414b509d44d5c000b51f432", - "sha256": "11vyy0bvzbs1h1kggikrvhd658j7c730w0pdp6qkm60rigvfi1ih" + "commit": "9ab52362600af9f97f1590f05a295538025170b3", + "sha256": "08k4zlawjkb0ldn4lgrhih8nzln398x7dwzpipqfyrmp0xziywma" } }, { @@ -22366,14 +23620,14 @@ "repo": "elixir-editors/emacs-elixir", "unstable": { "version": [ - 20190831, - 2225 + 20200121, + 623 ], "deps": [ "pkg-info" ], - "commit": "5c50dcedd890f14e0ede33b74ddf86607b037239", - "sha256": "0hi8ly4jplhlh4mrmwlhz44w50ccjbc4w12jkacjc82gay8m8yfa" + "commit": "231291ecadc479295d83fee619049030940bfbe5", + "sha256": "0lzzgdd1fkswij0d9rh6gyyvhf6z5m0az1hhvyighi45al3mj78s" }, "stable": { "version": [ @@ -22426,15 +23680,15 @@ "repo": "walseb/ellocate", "unstable": { "version": [ - 20190920, - 1407 + 20200112, + 1931 ], "deps": [ "f", "s" ], - "commit": "55b49500090247728d5abcd3670527a394ba16e4", - "sha256": "0gilc9z2mb53mp5702izdrbyjbmvij20jn8zgji1z629ckjivwh7" + "commit": "81405082f68f0577c9f176d3d4f034a7142aba59", + "sha256": "0amzbazg53956h1h5ppxd9psr1d1fwvlpm27kpfvhw5ipqzp3ws4" } }, { @@ -22445,33 +23699,32 @@ "repo": "jcollard/elm-mode", "unstable": { "version": [ - 20190815, - 555 + 20200301, + 19 ], "deps": [ "dash", "f", - "let-alist", "reformatter", - "s", - "seq" + "s" ], - "commit": "834fb5037424c47155518ed27537ef7ad6addcc5", - "sha256": "1jqp9n28xgxbp1xfqw1vpv9h5q41xirxcfj9257p2gvk1lg1w7jr" + "commit": "3f042ec430e7d915bfdca21d4f4d6201a882434b", + "sha256": "16b66kv49bslnnhya2a9q0zshcwx58017sy0ab451j5zsq42v2qh" }, "stable": { "version": [ 0, - 20, - 3 + 21, + 0 ], "deps": [ + "dash", "f", - "let-alist", + "reformatter", "s" ], - "commit": "29f50a940113d793a21998f3bb414fdd9b0c5daa", - "sha256": "02c7xl9w81140l7p9kywr5qwsdyv92nxdhzqcxjk0r09x7s0cvsk" + "commit": "5df694e307cf8fa5a3555d800984aa4ebb40664f", + "sha256": "0iwk4fmw8hq3ry4ky1zc7lgl4cpbnrjyk74c2xzddfspi3ks41fd" } }, { @@ -22515,15 +23768,15 @@ "repo": "Silex/elmacro", "unstable": { "version": [ - 20190823, - 1308 + 20191208, + 1057 ], "deps": [ "dash", "s" ], - "commit": "5bf9ba6009226b95e5ba0f50489ccced475753e3", - "sha256": "1x4wnsshf9h10mp51x92vs5rxw5had4gmw6zz4f53czx1ymcv16a" + "commit": "ba4086ef241dadfc2b1ce1bcfa56e12dbb89ef58", + "sha256": "0q29h3y6q1xkz2jx9bvrk8nvmisv1di2l79yc3zrw5k4hirq8j2a" }, "stable": { "version": [ @@ -22739,26 +23992,26 @@ }, { "ename": "elpher", - "commit": "df2162816fed4d5da7ee5adafbf547eed8815418", - "sha256": "1csy26ra6kgm2rnf1s6bj254r18zkaf6y7kb3rrjm1msw3vjvvr2", - "fetcher": "github", - "repo": "tgvaughan/elpher", + "commit": "d87a0f3142e0a59842608576961707c98374f954", + "sha256": "1i52q6xsyabl8gg8cd29d24gnw6aac69pjif2yh0rijxvbcl2a86", + "fetcher": "git", + "url": "git://thelambdalab.xyz/elpher.git", "unstable": { "version": [ - 20191014, - 1459 + 20191212, + 1858 ], - "commit": "798c375e25d988da94915f2949c51cb8669faf86", - "sha256": "1sp322h4m2n35q65hp9myfgh9nc53pddr5bg133n9gyp7sywq7w8" + "commit": "3f56dde4342dcfecc2b8b4d1c6e07436d2ab9991", + "sha256": "0872dis1zin58fljbyzvvyd5z6c27cw8ikxgd8s57addbi4s6ffh" }, "stable": { "version": [ 2, - 3, - 6 + 5, + 2 ], - "commit": "798c375e25d988da94915f2949c51cb8669faf86", - "sha256": "1sp322h4m2n35q65hp9myfgh9nc53pddr5bg133n9gyp7sywq7w8" + "commit": "12629c283e0e3e62561d1456a2f8842b3524df57", + "sha256": "023ih6bgqf98jgzqy03nplwxhabaj9x9dqk3c8bmd50ndgrspc7q" } }, { @@ -22769,11 +24022,11 @@ "repo": "twlz0ne/elpl", "unstable": { "version": [ - 20190704, - 1130 + 20191229, + 1929 ], - "commit": "341dd89aa2a0315ec63d476d79057be8b5f5386f", - "sha256": "04m9dinhgwgqry7yblc9wryv8sikprqflijjfdk8319c7kiddl3h" + "commit": "48ecee2aa7b3d085a3deff809fb3ae31ae4ef9dd", + "sha256": "06xqww1r3i2hlr4hyg4n2l9zbpiki3g90b51jylaiabj4gqfswzv" } }, { @@ -22784,8 +24037,8 @@ "repo": "jorgenschaefer/elpy", "unstable": { "version": [ - 20191024, - 2007 + 20200329, + 1830 ], "deps": [ "company", @@ -22794,25 +24047,24 @@ "s", "yasnippet" ], - "commit": "ddc1689f9bc6719568feb522e54054f2b2cb64e8", - "sha256": "16m96l1krpg3d2xnbr7jc65pqvczlkdpydp9gyh1b2qmhg0hqhf3" + "commit": "fc54812f5f53889842e7e707727e50d9589443ca", + "sha256": "1jdpg6vq88kxg1wfhp9hwnvfadxazmznzscfhvr967fbgq46w6qj" }, "stable": { "version": [ 1, - 31, + 33, 0 ], "deps": [ "company", - "find-file-in-project", "highlight-indentation", "pyvenv", "s", "yasnippet" ], - "commit": "54ed6fe219689e187286c8808041b6f61718b025", - "sha256": "0bvmgqs3c80bhs9v5ymgadv7vk4iamha10y7rl09pixmjm4mzagk" + "commit": "b69ae7652e5efdda2e3dc650cd425b987ddd65ad", + "sha256": "1g9x67dvg5al6i9hnjcyi0zjsz71iv2jbinpzj7gcx77d0dn3cpk" } }, { @@ -22860,8 +24112,8 @@ "repo": "emacs-elsa/Elsa", "unstable": { "version": [ - 20191002, - 2030 + 20200225, + 1440 ], "deps": [ "cl-lib", @@ -22869,8 +24121,8 @@ "f", "trinary" ], - "commit": "b43236e5e183249726b93f13e09c56a081817804", - "sha256": "0j0qppbhmb43nh1j1hrsyg6m0710m25i12sc9k9s2drz9wva7jc3" + "commit": "5ac373088eca10581e848ad42f5e278aedcd85c0", + "sha256": "11q5bh1mxc3z8a2zxs157pf7aqld9vddcffibgawh4r8q661ys03" } }, { @@ -22903,15 +24155,15 @@ "repo": "jeffgran/elscreen-buffer-group", "unstable": { "version": [ - 20190621, - 225 + 20200109, + 2338 ], "deps": [ "cl-lib", "elscreen" ], - "commit": "c78fc19b8a80415997b191fc08bf6768449ea12e", - "sha256": "1g8dm3vqgws9grhl435s7f1n26vpgyp5kvfryv98idqa7aqj3wvq" + "commit": "b48e71d4782adfeb2958f227d78c04164d26e4bd", + "sha256": "13wfnkg42k1fk1dbf7zspxfp116xm1z4j6pc82wk8lz5k5xjlpzq" } }, { @@ -23098,20 +24350,20 @@ "repo": "emacscollective/elx", "unstable": { "version": [ - 20191021, - 1312 + 20191226, + 1614 ], - "commit": "a37c328eac07936ccb3e3e225a764c10e81fd3db", - "sha256": "02dy68df31fgdw0isxckg3nysnagxfxy65kgvcndbpb8prvpm0md" + "commit": "4cbdcd79524db4a71abbf761a3945617086f5d09", + "sha256": "1gb2sh2mcx8va8lgyc46pch9fswfm761935806myi9fl1v67ayk6" }, "stable": { "version": [ 1, - 2, - 8 + 3, + 0 ], - "commit": "457fca9d4bb0429b08c8f4e675f8b1f3e48297e3", - "sha256": "0vpvdnmg95nk9bmrjysbpfwbyzxhipdqh9xfphxi2n63sd0vzk7z" + "commit": "4cbdcd79524db4a71abbf761a3945617086f5d09", + "sha256": "1gb2sh2mcx8va8lgyc46pch9fswfm761935806myi9fl1v67ayk6" } }, { @@ -23275,14 +24527,14 @@ "repo": "cireu/emacsql-sqlite3", "unstable": { "version": [ - 20190926, - 1542 + 20200117, + 1922 ], "deps": [ "emacsql" ], - "commit": "e3c434ac212d77f112d4dc9e70784ed2ac48c649", - "sha256": "08szs2v7cz4155d2hv7ja40n81r3ph395gr5himi496a6q9kdggr" + "commit": "82b90d493dba404473b515ffd670e0dd0dba1248", + "sha256": "1azv9mllvyjzqjkjw9n5rmdj79fa8srbpmx61w6vm25bl9f62vpf" } }, { @@ -23293,34 +24545,35 @@ "repo": "marcowahl/emacsshot", "unstable": { "version": [ - 20190715, - 1808 + 20191206, + 944 ], - "commit": "1b5c080135b963c9a7f2d34230b3134a9fb3d345", - "sha256": "0bklypf31y374xqhq3b24srfbr95bi3km9nrxy2wwcak8ia20pg5" + "commit": "fe958b11056f3c671ebdd604d5aa574323284ca5", + "sha256": "0zg52b3hl0rp9hjz04546kngssxs0l64dm01bwp9hapy7pichbci" }, "stable": { "version": [ 0, - 4 + 5, + 0 ], - "commit": "f2f8996d877ece5469c459c9bb7f33fe43c95822", - "sha256": "00q344vgihl2s0snibfwsjvxqkbvy2jlqnnid7qw5gcni673b2hl" + "commit": "f0add6820d250875f7d7c21aa5d813dc73dbcf96", + "sha256": "18bnw6yb41ki1xvkhi07v7fqx3var928majgd6613ra9nirnyqnj" } }, { "ename": "emamux", - "commit": "6de1ed3dfccb9f7e7b8586e8334af472a4988840", - "sha256": "1pg0gzi8rn0yafssrsiqdyj5dbfy984srq1r4dpp8p3bi3n0fkfz", + "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b", + "sha256": "0y75dnaz65fwk8d9l6n1bkbj32rcmzaf58fhj686b1n55bsz3xz6", "fetcher": "github", - "repo": "syohex/emacs-emamux", + "repo": "emacsorphanage/emamux", "unstable": { "version": [ - 20170227, - 337 + 20200315, + 1220 ], - "commit": "39f57786b2cdd3844888df42d71c7bd251f07158", - "sha256": "184669qynz1m93s9nv5pdc8m4bnvqa56wz472nsq4xhixz44jjsv" + "commit": "6172131d78038f0b1490e24bac60534bf4ad3b30", + "sha256": "1cv9b15lj2663aik9s0s2bj05vv4zfzz2w7wjbj6s5vlnf5byfnl" }, "stable": { "version": [ @@ -23333,10 +24586,10 @@ }, { "ename": "emamux-ruby-test", - "commit": "f11759710881bdf5a77bd309acb03a6699cc7fd6", - "sha256": "1l1hp2dggjlc287qkfyj21w9lri4agh91g5x707qqq8nicdlv3xm", + "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b", + "sha256": "1lk2fpqnmzh1gsbp9pkh36lgr76sf2mbf12577xs4scia7xr29bc", "fetcher": "github", - "repo": "syohex/emamux-ruby-test", + "repo": "emacsorphanage/emamux-ruby-test", "unstable": { "version": [ 20130812, @@ -23382,14 +24635,14 @@ "repo": "madnificent/ember-mode", "unstable": { "version": [ - 20190928, - 1451 + 20200208, + 1423 ], "deps": [ "cl-lib" ], - "commit": "f0324b20b6f4e6154a7ea787a2f4d6be464a90e1", - "sha256": "0mlj9q1k49wjx1n7dghmpk3pbbqyl4ljgdk7j23lmrq6hbmc4vf4" + "commit": "a587c423041b2fcb065fd5b6a03b2899b764e462", + "sha256": "0x5fnrflbgafwcqr6v0jj6522j2j086s7msh2mr6yysmrfjhx2zk" } }, { @@ -23526,25 +24779,25 @@ "url": "https://git.savannah.gnu.org/git/emms.git", "unstable": { "version": [ - 20190905, - 2111 + 20200212, + 1825 ], "deps": [ "cl-lib" ], - "commit": "2bad5e6cf7442cff492cafe896c47719ae77b8fb", - "sha256": "1bxaa1mzx5l1pp16j14y66cywpr174y6q7rhk5qr60lfjjfgj3h6" + "commit": "2767c660562d35f02f9b272252a697804d70dd14", + "sha256": "1jg5m9684kdxvgfqvf56x5c7fqnlqf0mmqqlrrvl5di3n79cfmsb" }, "stable": { "version": [ 5, - 2 + 3 ], "deps": [ "cl-lib" ], - "commit": "2253146e5607e12f62b0c1c474fded1219da2d5d", - "sha256": "0r0ai788mn5f3kf5wrp6jywncl2z3gpjif41pm5m0892y7l0vh9i" + "commit": "a8075b52fa75c5b53892214e6ca89fe0b42a04bf", + "sha256": "0jp96s0pglmrcgcyn9cp4rn2qlk9rf0dq6avrr5wiigjjkl33fip" } }, { @@ -23739,26 +24992,26 @@ "repo": "syl20bnr/emacs-emoji-cheat-sheet-plus", "unstable": { "version": [ - 20150617, - 1331 + 20200202, + 1404 ], "deps": [ "helm" ], - "commit": "96a003127d646a2683d81ca906a17eace0a6413e", - "sha256": "1rk7am0xvpnv98yi7a62wlyh576md4n2ddj7nm201bjd4wdl2yxk" + "commit": "ffcc84d7060dfa000148e7f8be4fd6701593a74f", + "sha256": "1na7mn9pgnwf9a1fbpb5k36aczzc7506ld5xm7mqpqgwshdxk0hq" }, "stable": { "version": [ 1, 2, - 1 + 2 ], "deps": [ "helm" ], - "commit": "96a003127d646a2683d81ca906a17eace0a6413e", - "sha256": "1rk7am0xvpnv98yi7a62wlyh576md4n2ddj7nm201bjd4wdl2yxk" + "commit": "ffcc84d7060dfa000148e7f8be4fd6701593a74f", + "sha256": "1na7mn9pgnwf9a1fbpb5k36aczzc7506ld5xm7mqpqgwshdxk0hq" } }, { @@ -23800,6 +25053,38 @@ "sha256": "0xdlqsrwdf0smi5z9rjj46nwrrfpl0gzanf0jmdg8zzn62l6ldck" } }, + { + "ename": "emoji-github", + "commit": "64d18d6bb06d2d747b101845d3ed298787abaec0", + "sha256": "09b9kyx1zzi1i2m4isvnhb5526589vscv81xg35pgxwv6ilkky4z", + "fetcher": "github", + "repo": "jcs-elpa/emoji-github", + "unstable": { + "version": [ + 20200323, + 233 + ], + "deps": [ + "emojify", + "request" + ], + "commit": "43f63c0dd64aae6c8054c2dad617bf810abdfadd", + "sha256": "0wcxsy3q8912kf87bn3mi2si010i5dd99yinf23nhb2nqvqgiw94" + }, + "stable": { + "version": [ + 0, + 2, + 2 + ], + "deps": [ + "emojify", + "request" + ], + "commit": "5d1512fb30c65018a507ef549d92c668d8221da3", + "sha256": "00dj0kfllyhiklylj4cjcv64zjaxs6a4cc79f8pppmzvf1spivvz" + } + }, { "ename": "emoji-recall", "commit": "8f03b34d3e8e5edf9888c71b6e4bd2e1a5aec016", @@ -23823,15 +25108,15 @@ "repo": "iqbalansari/emacs-emojify", "unstable": { "version": [ - 20191017, - 420 + 20200309, + 553 ], "deps": [ "ht", "seq" ], - "commit": "4c84ef9502988b52b1e296630bcee7f7c62cfc02", - "sha256": "11v7br4j1yx1hqqlv2phkxn3jx2qa3vrb4cq61ymfdx82v8j78jj" + "commit": "e05217ee668db3ffb537528408ce8004fadb75c0", + "sha256": "1blhvzrvjabh81si1h9iznldfp6mkchd31ig68byqfjvi6d34nxq" }, "stable": { "version": [ @@ -23887,8 +25172,8 @@ "repo": "Wilfred/emacs-refactor", "unstable": { "version": [ - 20190810, - 2133 + 20191122, + 1911 ], "deps": [ "cl-lib", @@ -23901,8 +25186,8 @@ "projectile", "s" ], - "commit": "ed430d55bd7504cb51d9f2b9e1b3c4b4ca93dafc", - "sha256": "154vzwxw3mlxxjmvi8aqxmpww6b4gvrcq6aw7w1gi3yb048pgkyy" + "commit": "8038ab88a000a835ca73af2068b1ef536bc7e33c", + "sha256": "1d27y6chxjf4k9cgsk93xjf1wq9lrv0516lpnqqlp2rdd7m3nv7y" }, "stable": { "version": [ @@ -23962,23 +25247,26 @@ "repo": "hrs/engine-mode", "unstable": { "version": [ - 20181222, - 2027 + 20191105, + 750 ], "deps": [ "cl-lib" ], - "commit": "117a9c0cbc1ff8ade7f17cd40d1d2f5eb24f51a3", - "sha256": "1pm6xi0bcab3mpmvy8g449d5iv8s3cjqqvm2rcnlz1d6223pszh0" + "commit": "96b3488a6de2f50b8ba3a101e04ebcbe9821a989", + "sha256": "1xka8i4cdvp5r2v2mkli1zz17x1sdsnmszbhqav2rf94v656d91i" }, "stable": { "version": [ 2, - 0, - 0 + 1, + 1 ], - "commit": "243d04691475b47a4453ad7106d8268ca14d9f28", - "sha256": "02xas46nl28mascqsyr1zcd4hn15bh0fjv2xlxv1kmrj0pis94ml" + "deps": [ + "cl-lib" + ], + "commit": "96b3488a6de2f50b8ba3a101e04ebcbe9821a989", + "sha256": "1xka8i4cdvp5r2v2mkli1zz17x1sdsnmszbhqav2rf94v656d91i" } }, { @@ -23989,18 +25277,18 @@ "repo": "zenspider/enhanced-ruby-mode", "unstable": { "version": [ - 20191005, - 2306 + 20191111, + 2243 ], - "commit": "3b97c6f7c4e0e462b74d57d3a0164f6b6f9b498e", - "sha256": "07qk8pbwp8bk5dmcsnmyw08b6nzy7dh4asdraw8ml0rpdcqvvlxf" + "commit": "732331b99a0884dd7fc0149658d4090886857656", + "sha256": "12wip0l6xyqgvxvjvid1rh61yizk1r9y7xl1jz2sjds7kv6aw0kf" }, "stable": { "version": [ - 20190408 + 20191111 ], - "commit": "5c5ea7532bfff3c12c2a554d68c5def1dd984a40", - "sha256": "1asr52rg3230avq2bwl06nnrgkym98i7gas0xrs2vqyyaxbcpb1h" + "commit": "4e058f36a455c90816fd9615a4a7a63a8c8b8cc8", + "sha256": "1jpiyjb5291jk6pd649d6i8nxaazqjznb3zpksp7ykrqqgw4wgjm" } }, { @@ -24029,21 +25317,21 @@ }, { "ename": "eno", - "commit": "a63b22f357b2d08b12fb86c27261ab4d687c5f7f", - "sha256": "1pcbvka3g32j1a2j7slw4jm80qpsk3ldziy5n4l02xpnqw6iwy6q", + "commit": "2c01af1911a0c8856e3dee09b6d233f821d67814", + "sha256": "1agnkykmq8d6mw4cwdw772zzsrwdd28v8m37894w2c80cxmjjrbq", "fetcher": "github", - "repo": "enoson/eno.el", + "repo": "emacsattic/eno", "unstable": { "version": [ - 20160110, - 1034 + 20191013, + 1239 ], "deps": [ "dash", "edit-at-point" ], - "commit": "40075bb1ed9e62f42c5799f3d3721734742ed417", - "sha256": "1qimqrvk0myqfi2l3viigkx1ld90qpjgi1gs6xhw2g51r8x4i3in" + "commit": "c5c6193687c0bede1ddf507c430cf8b0a6d272d9", + "sha256": "1khi2x0v2f7kn74s5mszp4f5qsdp6v91b98y8gyzhrxic7n083q4" } }, { @@ -24097,8 +25385,8 @@ "repo": "youngker/eopengrok.el", "unstable": { "version": [ - 20160904, - 659 + 20200205, + 624 ], "deps": [ "cl-lib", @@ -24106,8 +25394,8 @@ "magit", "s" ], - "commit": "78f734328aaf19c52720415c037708ece1944c4c", - "sha256": "1c5kzq3h7gr0459z364dyq5m8vq0ydclw5wphqj9fyg28mxjj6ns" + "commit": "6fa16c4ccaaebaef64dca0d3d29904c45fd6597d", + "sha256": "1y6n5b9pk4c3badzhwm7qv1jw60p34z55ljwhaaqlnmv7nq1qnj3" }, "stable": { "version": [ @@ -24183,28 +25471,28 @@ "repo": "emacscollective/epkg", "unstable": { "version": [ - 20190807, - 846 + 20200309, + 546 ], "deps": [ "closql", "dash" ], - "commit": "80098a45909d50aa089d344c6e24cbbae1481513", - "sha256": "0r5h8wdw58maqmda2ldg5j3fmjsih95ikzg34gxfk18sw7r50rpv" + "commit": "37f06fd2daca6a7afa163ceb0ccccd450af85e68", + "sha256": "18prjspaz4wlfrk2zzzzpxs4z8dkxxx68sbq2b4bdgg34fgnj02z" }, "stable": { "version": [ 3, 2, - 1 + 2 ], "deps": [ "closql", "dash" ], - "commit": "1aaa64402bf91575ee81bf240c4c52320f68088d", - "sha256": "0ij44yp72y1flcjp2q6yfbrnr4bnzjflgcsksl3djr9nhb73cd5a" + "commit": "ca211c5225aa550374d77629dd9b87e2b0b0d992", + "sha256": "1pxz611qb3m33r6343h0xhwqvvhjl131zyc2klplzgb23rkm8lk0" } }, { @@ -24325,15 +25613,15 @@ "repo": "emacsomancer/equake", "unstable": { "version": [ - 20191013, - 1847 + 20200214, + 1651 ], "deps": [ "dash", "tco" ], - "commit": "e8561fe7fc69be9d230437cd164c8be3a7bfb911", - "sha256": "0ivrpgbavjdfn0451d3sl0v9vxpigpqkkjxl80kip7xwdxnlg7mw" + "commit": "2039faac5f649f586d86d5ace10204d5a510fe0e", + "sha256": "1zg1bxwpqgzak5nvcwlcv9k8lkpa071kpnh11yv7s74ykvxa49l0" } }, { @@ -24359,45 +25647,25 @@ "repo": "atomontage/erc-crypt", "unstable": { "version": [ - 20191002, - 2159 + 20200103, + 1329 ], "deps": [ "cl-lib" ], - "commit": "8844d418fe249daf425eb0b0e3a41abe6c0ee805", - "sha256": "0v2bgiw08xkscyy0rskmhwk4h9zf8jxmmv3znr65qxhzaf0l4cxb" + "commit": "26e16e0fc3af78e70b095f47995d2a368f8de61d", + "sha256": "197sj97j7mc9jwhamra4narnypdg3xpxy5rb95an5gqqzhy9bccm" }, "stable": { "version": [ 1, - 8 + 9 ], "deps": [ "cl-lib" ], - "commit": "85706aba3ea03ea15fcf53c611c4257b9ae9c7b0", - "sha256": "1akxy2mh11bjjhhr9vfc09dj3dy2zrz8p1jynnyc7d5iiy0ai3bc" - } - }, - { - "ename": "erc-hipchatify", - "commit": "b60e01e7064ce486fdac3d1b39fd4a1296b0dac5", - "sha256": "1a4gl05i757vvap0rzrfwms7mhw80sa84gvbwafrvj3x11rja24x", - "fetcher": "bitbucket", - "repo": "seanfarley/erc-hipchatify", - "unstable": { - "version": [ - 20170314, - 1637 - ], - "deps": [ - "alert", - "request", - "s" - ], - "commit": "a532275136920aa1a66a1817cfc5880a01974dab", - "sha256": "0av0y65hz7fbiiqzmk5mmw6jv7fivhcd1w3s2xn5y5jpgps56mrc" + "commit": "2a597b39a929f6dff2b7da6439fcee6d2b25d3e6", + "sha256": "0jgkhwfgvy8lw6mws1m44vzh16514xxv34fivghc8kzn5w5ghwv7" } }, { @@ -24408,20 +25676,20 @@ "repo": "leathekd/erc-hl-nicks", "unstable": { "version": [ - 20180415, - 1946 + 20200317, + 16 ], - "commit": "756c4438a8245ccd3e389bf6c9850ee8453783ec", - "sha256": "0c82rxpl5v7bbxirf1ksg06xv5xcddh8nkrpj7i6nvfarwdfnk4f" + "commit": "a67fe361c8f2aa20fc235447fbb898f424b51439", + "sha256": "0k57scxa8rm859fqsm8srhps7rlq06jzazhjbwnadzrh8i5fyvra" }, "stable": { "version": [ 1, 3, - 3 + 4 ], - "commit": "756c4438a8245ccd3e389bf6c9850ee8453783ec", - "sha256": "0c82rxpl5v7bbxirf1ksg06xv5xcddh8nkrpj7i6nvfarwdfnk4f" + "commit": "a67fe361c8f2aa20fc235447fbb898f424b51439", + "sha256": "0k57scxa8rm859fqsm8srhps7rlq06jzazhjbwnadzrh8i5fyvra" } }, { @@ -24746,15 +26014,15 @@ "repo": "ergoemacs/ergoemacs-mode", "unstable": { "version": [ - 20190527, - 348 + 20200319, + 1250 ], "deps": [ "cl-lib", "undo-tree" ], - "commit": "7d3656541a00cc04ba4cefa31c0d127adb5a260a", - "sha256": "1rw237xiw5nz736l5jdmlsa11l14qvzdac0wqymi80a0rfwqikga" + "commit": "4a6ba06d9c618e9380d059fa25ed677b45d134a7", + "sha256": "0wgdzxla6kz1zfc3vfd8wc2j40kq023z7b83m2k435hcqdffark8" }, "stable": { "version": [ @@ -24798,20 +26066,21 @@ "repo": "erlang/otp", "unstable": { "version": [ - 20191023, - 843 + 20200313, + 1030 ], - "commit": "8342a099cf94cef4de1c845841bbffd15ecac4a6", - "sha256": "09c25njcaivglr3k955d8difsq447vpzjplnsfj4ikl37jfi78rs" + "commit": "f805a35f696d965b297de3988a2340f86bfe88ba", + "sha256": "102yzbgmqyy5m74zhr8kaai17dyhg8k6w0ykxyvmb0q7ghwaq01s" }, "stable": { "version": [ - 22, - 1, - 4 + 23, + 0, + -1, + 2 ], - "commit": "6611181ae71422a1c66798718b37474641a090a9", - "sha256": "1n9pf1zxnl5dmv4xihgw7x8a1a4s1wfygr54rzsqw0bjjc86r7ym" + "commit": "a24425668beed38e04039c292361e09c4826683f", + "sha256": "1i91p2hsajcwjqv10ri6jj2a94g68mb6fmxqx47g50fbc5f0dqj5" } }, { @@ -24864,11 +26133,11 @@ "repo": "rejeep/ert-async.el", "unstable": { "version": [ - 20151011, - 1359 + 20200105, + 1031 ], - "commit": "f64a7ed5b0d2900c9a3d8cc33294bf8a79bc8526", - "sha256": "0hn9i405nfhjd1h9vnwj43nxbbz00khrwkjq0acfyxjaz1shfac9" + "commit": "948cf2faa10e085bda3739034ca5ea1912893433", + "sha256": "1ixkh6bghrg1criczhdvr9igjcdsijadaqvywyjj6bfwd8ql5x39" }, "stable": { "version": [ @@ -24953,8 +26222,8 @@ "repo": "rejeep/ert-runner.el", "unstable": { "version": [ - 20180831, - 1145 + 20200321, + 2158 ], "deps": [ "ansi", @@ -24964,13 +26233,13 @@ "s", "shut-up" ], - "commit": "90b8fdd5970ef76a4649be60003b37f82cdc1a65", - "sha256": "04nxmyzncacj2wmzd84vv9wkkr2dk9lcb10dvygqmg3p1gadnwzz" + "commit": "1829f05c46b0baaae160d900f89c8881f4fcdbcc", + "sha256": "08gygn9fjank5gpi4v6ynrkn0jbknxbwsn7md4p9ndygdbmnkf98" }, "stable": { "version": [ 0, - 7, + 8, 0 ], "deps": [ @@ -24981,8 +26250,8 @@ "s", "shut-up" ], - "commit": "00056c37817f15b1870ccedd13cedf102e3194dd", - "sha256": "0rdgdslspzb4s0n4a68hnwfm8vm8baasa8nzrdinf0nryn7rrhbf" + "commit": "1829f05c46b0baaae160d900f89c8881f4fcdbcc", + "sha256": "08gygn9fjank5gpi4v6ynrkn0jbknxbwsn7md4p9ndygdbmnkf98" } }, { @@ -25022,8 +26291,8 @@ "repo": "dakrone/es-mode", "unstable": { "version": [ - 20191024, - 1952 + 20191119, + 2018 ], "deps": [ "cl-lib", @@ -25032,8 +26301,8 @@ "s", "spark" ], - "commit": "6170a2e0976aaa66df364b949c7e109f1202a60f", - "sha256": "1bg6v34cid0kxqlm1qmr934nxqn5bnnd3jmll2i0gfk4w13igm69" + "commit": "9e5bcb290b38d5bd143e0ee480ed49147cfd3504", + "sha256": "13f7s8hk5d3psxp4qzzsqnwawsjj59cmjhmg1zi2c90qhvna78vn" }, "stable": { "version": [ @@ -25301,15 +26570,15 @@ "repo": "xuchunyang/eshell-git-prompt", "unstable": { "version": [ - 20170909, - 1452 + 20200109, + 2250 ], "deps": [ "cl-lib", "dash" ], - "commit": "b6bb2d7bd4e393b4170b29891cfefb72ae020aab", - "sha256": "02i00an9wa8ns66xq900la68m7pd4hwv95g83cvf22bypivx7p2y" + "commit": "48ee35774c9b8d0e2d96110e3ae84bac60f43dfd", + "sha256": "1w0drk4sfljshcnlvvn028v4lzqznglfx8ly0mfridsm85xws3pw" }, "stable": { "version": [ @@ -25327,25 +26596,25 @@ }, { "ename": "eshell-prompt-extras", - "commit": "3416586d4d782cdd61a56159c5f80a0ca9b3ddf4", - "sha256": "0zkdb9a8dibk832b5hzb6wjich3l0lah5p64805rgd4qskzj10gx", + "commit": "cdd1f8002636bf02c7a3d3d0a075758972eaf228", + "sha256": "1k0cig7chdm349bp6rz9z105njs9bxicnpkcm4v0nrnk59ynj2h6", "fetcher": "github", - "repo": "kaihaosw/eshell-prompt-extras", + "repo": "zwild/eshell-prompt-extras", "unstable": { "version": [ - 20181229, - 1418 + 20200319, + 322 ], - "commit": "5a328e1b9112c7f31ce2da7cde340f96626546b6", - "sha256": "0fwlvrzjygs12dcp89wy3rb3wa03mrvbzpmpvmz4x6dfpr7csznk" + "commit": "1801b3aeccf1363f138fe01ee99d892d10fc2a07", + "sha256": "1dgfd9yf4ikn5whqpxyliyp21vs1h852wjfqy5lmxzhnzic1xsi1" }, "stable": { "version": [ - 0, - 96 + 1, + 0 ], - "commit": "7581c109673c40aceff278cd524273f50ffe170d", - "sha256": "1m1jisjz974cfz89i6l2zq666yzhsqipc6dmqlrm8mw81fxsfm1h" + "commit": "356a540f9365b2f37f8a8cfb9c0e0e1994d12f4a", + "sha256": "0gb07mns23dgqqr6qfy7d6ndizy15sqgbgfaig6k5xbjnwi02v9g" } }, { @@ -25356,14 +26625,14 @@ "repo": "4DA/eshell-toggle", "unstable": { "version": [ - 20190526, - 1452 + 20200107, + 2230 ], "deps": [ "dash" ], - "commit": "2eb91974047f5caf8df3bf3af5014be2cc95ddac", - "sha256": "1iblhp0jvki2lm1jg1g93r3zvxvpjv3pi0xssivypq3bpy22v6cr" + "commit": "ddfbe0a693497c4d4bc5494a19970ba4f6ab9033", + "sha256": "0xqrp8pwbmfxjdqipgpw5nw633mvhjjjm3k3j9sh9xdpmw05hhws" } }, { @@ -25398,26 +26667,25 @@ "repo": "xuchunyang/eshell-z", "unstable": { "version": [ - 20190823, - 2341 + 20191116, + 333 ], "deps": [ "cl-lib" ], - "commit": "ee30761bd368df5f2e55c744ccc44089c7a46b6d", - "sha256": "0ywwvm1xx0p2iqzqmbb908147l8zlyf7gqsz0mgrzj0amqx1rhg2" + "commit": "337cb241e17bd472bd3677ff166a0800f684213c", + "sha256": "13dwaq8q23rwmrkpy3gvf7aswrkk6b9ak5221xl7n0bld4wdhq3j" }, "stable": { "version": [ 0, - 3, - 2 + 4 ], "deps": [ "cl-lib" ], - "commit": "96ec3f5f8a801c893d2c6a6b140e333ef2bfd8b5", - "sha256": "1aac4m814jgxwpz7lbyx5r4z5dmawp4sk7pwbx0zqpnbcsaq5wwc" + "commit": "337cb241e17bd472bd3677ff166a0800f684213c", + "sha256": "13dwaq8q23rwmrkpy3gvf7aswrkk6b9ak5221xl7n0bld4wdhq3j" } }, { @@ -25458,8 +26726,8 @@ "deps": [ "dash" ], - "commit": "98c669e3653bf94c236c54946c6faba7f782ef0d", - "sha256": "1v4s3srn6cc4rbb8hg3wri8c3vnijkyz582qmpyf1vd44mldfq4x" + "commit": "0c431141be9a408c28aead152ea454df0804364f", + "sha256": "0yyssbgfi3fg3dbfrzsy9sms42z87apk6amql8pijwzb3b735jc2" }, "stable": { "version": [ @@ -25550,11 +26818,11 @@ "repo": "walseb/espy", "unstable": { "version": [ - 20180929, - 1602 + 20200317, + 2333 ], - "commit": "b64a99185c96c20d4d4caa3daf1f5510b039bd6a", - "sha256": "1i8wc55rihah39i95w0rryp5scq8v3zyk4cayw5pz8g5bbl8w4zb" + "commit": "2c01be937a5e5bde62921684a0b27300705fb4e0", + "sha256": "1nnnr184y29g1svxqxlqyg5irzrf1xmay4p78jfv8v07sisl90kp" } }, { @@ -25571,8 +26839,8 @@ "deps": [ "pcsv" ], - "commit": "bc4047e09b8f6c34802db86095cd465935670dce", - "sha256": "05f8n24yvzm3zjvc1523ib44wv76ms5sn6mv8s1wrjsl190av0rn" + "commit": "08a779a821f8d32c1a1985d8d9eb6cf21646ce2e", + "sha256": "18dvg2yagk9qyn3xfnhgfv192vyqzahzfy8xgc1fnm7a1l0gcg2x" } }, { @@ -25590,8 +26858,8 @@ "esqlite", "helm" ], - "commit": "bc4047e09b8f6c34802db86095cd465935670dce", - "sha256": "05f8n24yvzm3zjvc1523ib44wv76ms5sn6mv8s1wrjsl190av0rn" + "commit": "08a779a821f8d32c1a1985d8d9eb6cf21646ce2e", + "sha256": "18dvg2yagk9qyn3xfnhgfv192vyqzahzfy8xgc1fnm7a1l0gcg2x" } }, { @@ -25602,14 +26870,14 @@ "repo": "emacs-ess/ESS", "unstable": { "version": [ - 20191014, - 1343 + 20200328, + 1547 ], "deps": [ "julia-mode" ], - "commit": "d31b96e02cb4c5d71effab893da9cd81f30d0470", - "sha256": "0rbasf6kfyyd6r72cqm6sr791f70q95447c240dvx2kjqp1jhckm" + "commit": "1c2387fdba509c1c9d072150f65ccc318a570870", + "sha256": "0llsjqrvabcvpd2nhixiklwmm2lisywif77iwfrsdc6lfxp8cdd0" }, "stable": { "version": [ @@ -25744,25 +27012,26 @@ "repo": "jschaf/esup", "unstable": { "version": [ - 20180727, - 342 + 20200318, + 2256 ], "deps": [ "cl-lib" ], - "commit": "0877d7831d0bf60e33097df135a889da153243c8", - "sha256": "0c9g9nhszxzyab57y48vj95wqzdjj441vvm2pnx1dyij7g0abqpl" + "commit": "c9c95e245068d15d8e2732098af9a5d2bc8ec931", + "sha256": "0i4cwwvs5zs8g2ajrrkqgrpxzywsa255rc1g7a6bxzvg9hk77f4k" }, "stable": { "version": [ 0, - 6 + 7, + 1 ], "deps": [ "cl-lib" ], - "commit": "53355b13dc9f1636ba681ffff830162ebbd3b223", - "sha256": "1a4b8390azimlrr5ayxvaks1w7009vfbm56q11ybx00xxrd26v43" + "commit": "49e05d4f96adfbf71e608a78d23bbf148a8a7fc0", + "sha256": "020svy3r1m7xs38vcinad8kjd4622wvh4scfmjpklbln8r99n178" } }, { @@ -25776,8 +27045,8 @@ 20171129, 807 ], - "commit": "5548ceba17deae0c3c6d0092672edc4de3c75ce3", - "sha256": "00vv8a75wdklygdyr4km9mc2ismxak69c45jmcny41xl44rp9x8m" + "commit": "193d199305e7abcb5ed795b9bc5434ded20ae60e", + "sha256": "1cbzdwfndz6pdmb3vzb6l2smxb2l47sncmkccya0nzlvvhz3p8c0" }, "stable": { "version": [ @@ -25925,16 +27194,16 @@ "repo": "kaz-yos/eval-in-repl", "unstable": { "version": [ - 20171122, - 1343 + 20191116, + 1107 ], "deps": [ "ace-window", "dash", "paredit" ], - "commit": "fea05a5b81d74ac53cb2a83aa83a73d9526bcc42", - "sha256": "0xm1ggdaihy1cyg4b3b9x1n93bp4qiv30p1mfzmmqm6w89z1agf0" + "commit": "0fe2d3fa0fd1739ec096f149dc067b586e05c75c", + "sha256": "0gswgn99pqikw44mp4v6b4bxvh6bj132gq5x3swvkmi3f56l0bry" }, "stable": { "version": [ @@ -25959,26 +27228,26 @@ "repo": "hchbaw/eval-sexp-fu.el", "unstable": { "version": [ - 20190109, - 809 + 20191128, + 825 ], "deps": [ "cl-lib" ], - "commit": "e1d7165383c941b3f11c2715707adc3d91d129a0", - "sha256": "01mpnpgmlnfbi2yw9dxz5iw72mw3lk223bj172i4fnx3xdrrxbij" + "commit": "36d2fe3bcf602e15ca10a7f487da103515ef391a", + "sha256": "19rv0kwajq0j8inglp84sml23ci74wdcvp5bl6zxbw5skqpf6phr" }, "stable": { "version": [ 0, - 5, + 6, 0 ], "deps": [ "cl-lib" ], - "commit": "e1d7165383c941b3f11c2715707adc3d91d129a0", - "sha256": "01mpnpgmlnfbi2yw9dxz5iw72mw3lk223bj172i4fnx3xdrrxbij" + "commit": "36d2fe3bcf602e15ca10a7f487da103515ef391a", + "sha256": "19rv0kwajq0j8inglp84sml23ci74wdcvp5bl6zxbw5skqpf6phr" } }, { @@ -26051,44 +27320,44 @@ }, { "ename": "evil", - "commit": "440482c0edac8ee8bd4fe22f6bc5c1607f34c7ad", - "sha256": "1d36r6mi5nvrwnk4a9338wmhr72fcbrwj0r8gmvivpjdngjy4k39", + "commit": "69567536a89f0294726ae58f748386a8d336c55e", + "sha256": "0nbfhynlv213rjl6jh4lji1q94s99q4iv18mnd3x23r91sx7ssm3", "fetcher": "github", "repo": "emacs-evil/evil", "unstable": { "version": [ - 20190729, - 704 + 20200304, + 1421 ], "deps": [ "cl-lib", "goto-chg", "undo-tree" ], - "commit": "874beba2cb243c325eca08fb7badff567f3c9494", - "sha256": "1h7s3bapv7g1z87ygmrsisbjjzpwhbsds5ywj2srpifd4llrxa4m" + "commit": "296932406a0b55474fe4b6cb8db8b7d5e05633aa", + "sha256": "1gvmvczdfgq07chj98gqg5j2zyfdrq3znl8l6a81mbrjbvsyvmd3" }, "stable": { "version": [ 1, - 2, - 14 + 14, + 0 ], "deps": [ "cl-lib", "goto-chg", "undo-tree" ], - "commit": "3766a521a60e6fb0073220199425de478de759ad", - "sha256": "1833w397xhac5g3pp25szr2gyvclxy91aw27azvbmsx94pyk2a3q" + "commit": "4dc63903d9688e2ce838a220b0e24d8f14a64c12", + "sha256": "17xrn3s6a4afmls8fw8nnxa1jq9dmj2qqrxa2vngh50hxpz8840p" } }, { "ename": "evil-anzu", - "commit": "06b0609b56016d938b28d56d9eeb6305116b38af", - "sha256": "19cmc61l370mm4h2m6jw5pdcsvj4wcv9zpa8z7k1fjg57mwmmn70", + "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b", + "sha256": "08cc33wjq5853c0hqwn30342ylkfldy7xg7yd2ak0apjxnz4qr40", "fetcher": "github", - "repo": "syohex/emacs-evil-anzu", + "repo": "emacsorphanage/evil-anzu", "unstable": { "version": [ 20170124, @@ -26171,14 +27440,14 @@ "repo": "YourFin/evil-better-visual-line", "unstable": { "version": [ - 20181026, - 1028 + 20200123, + 2045 ], "deps": [ "evil" ], - "commit": "15f77e67fcc3c48db323ccd8c8c4bc249e2911b8", - "sha256": "05wzq663p3irrmd5b2yg001qf8m9wmaj3mnsc76fad184m03g81r" + "commit": "4373f930ab1a8d3a2a90e68540967702313b2ce9", + "sha256": "0dnh932ib3hhphprm1jjh1hdwnj96d6cnfc64rj2y4mgxji4y19l" } }, { @@ -26260,16 +27529,16 @@ "repo": "emacs-evil/evil-collection", "unstable": { "version": [ - 20191025, - 41 + 20200327, + 722 ], "deps": [ "annalist", "cl-lib", "evil" ], - "commit": "61bb63e8f9849980913a0b616b1f53e535724af4", - "sha256": "0cr5r7r4ns1jy9bcf7bq5xiq6kap3knj2in6k226ykklqn5r6zk9" + "commit": "2df9bedfa48bdc22e46bf4d43f6e2792d4cafbea", + "sha256": "17737k612gl5bhkkq8fdivk9rxbcypfl9hnm3mbp5v2wpr8chw3a" }, "stable": { "version": [ @@ -26475,15 +27744,15 @@ "repo": "Dewdrops/evil-exchange", "unstable": { "version": [ - 20170511, - 259 + 20200118, + 252 ], "deps": [ "cl-lib", "evil" ], - "commit": "47691537815150715e64e6f6ec79be7746c96120", - "sha256": "0bjpn4yqig17ddym6wqq5fm1b294q74hzcbj9a6gs97fqiwf88xa" + "commit": "3030e21ee16a42dfce7f7cf86147b778b3f5d8c1", + "sha256": "0zchmnzkq7bz2c4hl95xwnz5w243ya4ryi6hgbdss7mc9rnyyarh" } }, { @@ -26588,14 +27857,14 @@ "repo": "edkolev/evil-goggles", "unstable": { "version": [ - 20181123, - 1946 + 20200101, + 1935 ], "deps": [ "evil" ], - "commit": "78454a7e8bd609edf0d93cb0a7f9ed576dd33546", - "sha256": "1yn72wmrda670h0bz3gdqh6k44ja60wkk9f4hijh9w1hw0vazk20" + "commit": "08a22058fd6a167f9f1b684c649008caef571459", + "sha256": "1p3vjrij63v9nrcyj3b5jsqzv9y7dgv9i1inx1q7x3s90vndavac" } }, { @@ -26794,15 +28063,15 @@ "repo": "emacs-evil/evil-magit", "unstable": { "version": [ - 20191007, - 1744 + 20200302, + 1611 ], "deps": [ "evil", "magit" ], - "commit": "1decef941f252bfd862be50d99bfbc0660dfa18c", - "sha256": "0n1c9cll6j05kj56vkdp0xnph8dha98780s0bl8ligx90abapbsl" + "commit": "0b79aa33a478770865716dc0e09f95d91ec042a2", + "sha256": "0qxapq9nl1yr3ryg1q9n2ajffm308fai115mbvwmjl9sd6x2p3ly" }, "stable": { "version": [ @@ -26886,15 +28155,15 @@ "repo": "gabesoft/evil-mc", "unstable": { "version": [ - 20190916, - 348 + 20200228, + 1535 ], "deps": [ "cl-lib", "evil" ], - "commit": "1cabb869fe70cef49f7dc06f015c3ade1a969c8c", - "sha256": "0p83p90faq1p02lmsfs7zrnky3cyzgy8z4m83a81r9kakjzhkrnb" + "commit": "4d4c0172e4c7f80acc1d0e73d5fb3e536929b262", + "sha256": "1a5glj1n5dyhdaas5b8m3v2p36s1w9qcpmj7gnfxyp75iy0rqlbs" }, "stable": { "version": [ @@ -26957,16 +28226,16 @@ "repo": "hlissner/evil-multiedit", "unstable": { "version": [ - 20190103, - 715 + 20200229, + 528 ], "deps": [ "cl-lib", "evil", "iedit" ], - "commit": "cb35914ffabb4f65d22ab2f812ff6e7622cc5c26", - "sha256": "19h3kqylqzbjv4297wkzzxdmn9yxbg6z4ga4ssrqri90xs7m3rw3" + "commit": "9f271e0e6048297692f80ed6c5ae8994ac523abc", + "sha256": "03imayy9afv084yl6g4kg6qis3mikllpbbizd2fya7njbsnpbpq1" }, "stable": { "version": [ @@ -26991,20 +28260,20 @@ "repo": "redguardtoo/evil-nerd-commenter", "unstable": { "version": [ - 20190801, - 148 + 20200324, + 2310 ], - "commit": "7132693a4cc684dff232839fed45a8a54d832646", - "sha256": "0kw9ikdax8b55g19c61n8aznavzms61rqr6lwiw37dsc1589nr3k" + "commit": "4387407615258d5e95f71bfb425cbe92dd813290", + "sha256": "0v31gbn423g20lqksvbc72z325lh0qjmgz8nhy8ygqli4b2msvzb" }, "stable": { "version": [ 3, - 3, - 8 + 5, + 1 ], - "commit": "f510a491c17192ce235bb7ce7589cacf99db8482", - "sha256": "0qd5a89mzvdyhd8lm13iwp220vzpd6dajwx54frlc5bzsxdmg6vc" + "commit": "fa40dab8d2f010db17e1e62dfd245c1504d0542f", + "sha256": "0dn712k54qsxy82jqbqip77k5i3zv8m7afj2yi39zqx28iqvic0z" } }, { @@ -27085,27 +28354,26 @@ "repo": "Somelauw/evil-org-mode", "unstable": { "version": [ - 20180323, - 2306 + 20200101, + 2017 ], "deps": [ "evil" ], - "commit": "b6d652a9163d3430a9e0933a554bdbee5244bbf6", - "sha256": "176hrw7y7nczffbyhsa167b8rvfacsmcafm2gpkrdjqlrikbmrhl" + "commit": "9d4be14118bf27094a30dbff349b815f098aacbf", + "sha256": "1fxxfkinb0gq4p5b686r7z4jrkv98zfgh5z889zkjacncv8ibswn" }, "stable": { "version": [ - 0, 1, - 1 + 0, + 2 ], "deps": [ - "evil", - "org" + "evil" ], - "commit": "2d7c58dbeca0d4ac7b4eab5f47b77946951f27e9", - "sha256": "09l0ph9rc941kr718zq0dw27fq6l7rb0h2003ihw7q0a5yr8fpk7" + "commit": "9d4be14118bf27094a30dbff349b815f098aacbf", + "sha256": "1fxxfkinb0gq4p5b686r7z4jrkv98zfgh5z889zkjacncv8ibswn" } }, { @@ -27116,8 +28384,20 @@ "repo": "mamapanda/evil-owl", "unstable": { "version": [ - 20190828, - 435 + 20200113, + 405 + ], + "deps": [ + "evil" + ], + "commit": "ed5a98644a9cf321de213b50df6473de9f3a71ed", + "sha256": "03afn47fgz3bxifmpwlmckpkl9nc237lc0khmaks0jfpmzcbkagc" + }, + "stable": { + "version": [ + 0, + 0, + 1 ], "deps": [ "evil" @@ -27301,26 +28581,26 @@ "repo": "porras/evil-ruby-text-objects", "unstable": { "version": [ - 20190821, - 1527 + 20200323, + 1552 ], "deps": [ "evil" ], - "commit": "0ddc4c256a0c778fa65d75b707f20df874e5b5fa", - "sha256": "1ppwcyfy5dssswfzd16i1rx14si5r80mdvrnfwaf9jr3c2ws23lg" + "commit": "32983d91be83ed903b6ef9655e00f69beed2572c", + "sha256": "0qha7xxqxh7c6n6r26r49y85inxcbr4nvxlv2zzj0qkifw7f9ana" }, "stable": { "version": [ 0, - 1, + 2, 0 ], "deps": [ "evil" ], - "commit": "93cfc5ae3da0ffb19319e301734c51ecb43506b5", - "sha256": "0jizvchrisrdc7bl6xfc59axyjz1dmr6hi36jyv1bdwyayj2ifqi" + "commit": "e69abb6aad7687222cb47a8a64dc4dd66ef96a9e", + "sha256": "0m1ilv4w4rlg8005cqp5l5dwdhqnrf1mb44qmvd8qwkl2rvslsbs" } }, { @@ -27392,15 +28672,15 @@ "repo": "hlissner/evil-snipe", "unstable": { "version": [ - 20180731, - 1731 + 20200103, + 923 ], "deps": [ "cl-lib", "evil" ], - "commit": "8dd076cc56eb9b04494e4e303b86a959b048350b", - "sha256": "05zlmkyl1gms7pk2izh67j7xk4mb5y94jpyx63lg59yc391p5p07" + "commit": "3ec8adfd4990f95fa0fab2b7019ead3596857673", + "sha256": "0q689f52saky3rfap351n4bkjn0kpg7xkjias926affqpghywb1r" }, "stable": { "version": [ @@ -27461,8 +28741,8 @@ "evil", "string-inflection" ], - "commit": "008b74a9b2994abfb4ff5b679b8a5a26fd45e98a", - "sha256": "0lwwrd9n0ha2xn5a053s8a1l05zya4smf61yc5c1s4fqv0xai9fj" + "commit": "6913de02a210487c063cd63ecf27b17a24797870", + "sha256": "1wyd903yvp8lxbhavsr4grn79hkxcsz71mcvy3hrvnf7ifhw514a" }, "stable": { "version": [ @@ -27486,26 +28766,26 @@ "repo": "emacs-evil/evil-surround", "unstable": { "version": [ - 20191013, - 1656 + 20191217, + 1131 ], "deps": [ "evil" ], - "commit": "d210e1fc2cf1c2d095471cefa700a0d1703f4ab6", - "sha256": "1dh716rnyirr580r5y0zvqqx7dbxh459y7r0pcvz8jck5ipiryx7" + "commit": "9b0b17f06cef9bac81ee4800d121265e54718a17", + "sha256": "15v2spg5rhddr97pxjfvxj36sh7knp753a9qpw8v5zjnp65kf2kn" }, "stable": { "version": [ 1, - 0, - 4 + 1, + 0 ], "deps": [ "evil" ], - "commit": "5ad01dfa86424c4b22cd1dfa375f13bd8c656f43", - "sha256": "1ajsi6xn8mliwzl24h6pp9rd91z7f20yvkphr9q7k6zpjrd7fb9q" + "commit": "9b0b17f06cef9bac81ee4800d121265e54718a17", + "sha256": "15v2spg5rhddr97pxjfvxj36sh7knp753a9qpw8v5zjnp65kf2kn" } }, { @@ -27516,11 +28796,11 @@ "repo": "wbolster/evil-swap-keys", "unstable": { "version": [ - 20170726, - 1820 + 20191105, + 1426 ], - "commit": "56bc201e265a6bd482a7c41a7c81d2238341ef3a", - "sha256": "0n0hl0plaghz9rjssabxwfzm46kr6564hpfh6hn8lzla4rf1q5zs" + "commit": "b5ef105499f998b5667da40da30c073229a213ea", + "sha256": "1kawq9c64cmkdjy03sfppjn7g9anxnmds3ip7cgj1j0yym0glyfq" }, "stable": { "version": [ @@ -27577,26 +28857,26 @@ "repo": "emacs-evil/evil", "unstable": { "version": [ - 20190104, - 1026 + 20200304, + 911 ], "deps": [ "evil" ], - "commit": "874beba2cb243c325eca08fb7badff567f3c9494", - "sha256": "1h7s3bapv7g1z87ygmrsisbjjzpwhbsds5ywj2srpifd4llrxa4m" + "commit": "296932406a0b55474fe4b6cb8db8b7d5e05633aa", + "sha256": "1gvmvczdfgq07chj98gqg5j2zyfdrq3znl8l6a81mbrjbvsyvmd3" }, "stable": { "version": [ 1, - 2, - 14 + 14, + 0 ], "deps": [ "evil" ], - "commit": "3766a521a60e6fb0073220199425de478de759ad", - "sha256": "1833w397xhac5g3pp25szr2gyvclxy91aw27azvbmsx94pyk2a3q" + "commit": "4dc63903d9688e2ce838a220b0e24d8f14a64c12", + "sha256": "17xrn3s6a4afmls8fw8nnxa1jq9dmj2qqrxa2vngh50hxpz8840p" } }, { @@ -27700,10 +28980,10 @@ }, { "ename": "evil-textobj-line", - "commit": "24bf766525ffdaded519ac9f78ae89d8ab5108ef", - "sha256": "158w524qzj0f03ihid2fisxyf1g7vwpv3ckfkzi7c2l549jnsdsa", + "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b", + "sha256": "1jwhg56nhf5iv7zbfdzi6ygikc49bnrqh1r5kd98n5wxz9vz2h75", "fetcher": "github", - "repo": "syohex/evil-textobj-line", + "repo": "emacsorphanage/evil-textobj-line", "unstable": { "version": [ 20150729, @@ -27743,14 +29023,14 @@ "repo": "mamapanda/evil-traces", "unstable": { "version": [ - 20190906, - 538 + 20191214, + 558 ], "deps": [ "evil" ], - "commit": "1931e3ea2c64b4aec393a9c25063c330deff55e3", - "sha256": "12p9lfxscs182vbd4dy0m5gacs3d4kyprbz5yndpwvl8g2qsqplz" + "commit": "bc25cae9fa5ab0ba1507827f0944f52ce0ca7462", + "sha256": "0xz2yjgz6h2d6h7gfhnvrylh8gj0s7vf45bvqa450j5579gz5sqz" } }, { @@ -27809,15 +29089,15 @@ "repo": "alexmurray/evil-vimish-fold", "unstable": { "version": [ - 20171030, - 1151 + 20200122, + 117 ], "deps": [ "evil", "vimish-fold" ], - "commit": "c617fecb91303f8c63f85a6101a503fdc88aae84", - "sha256": "05zm0gngdamfs5cqnjq4lh7253hdj0lggdgfphl56ynblhf8qf36" + "commit": "b6e0e6b91b8cd047e80debef1a536d9d49eef31a", + "sha256": "14qhfhk3d4c7v4jhr909dbxy8222flpqwk73bwg0pqwpkcifyv7n" } }, { @@ -27952,19 +29232,52 @@ "repo": "jjzmajic/ewal", "unstable": { "version": [ - 20190911, - 1319 + 20200305, + 230 ], - "commit": "17d5fda0b912813eb754f23547ad019e55a679da", - "sha256": "1p7y91hdd4qn0w09k8p1xna9c9lhqxsl4vlgmm214ybbvacrgm1n" + "commit": "4ecc355dae9c7d648cd2874e01a15dfa02b9350d", + "sha256": "1v444nfrzz0lkybrgfics5kc8gncbvvs23qlq1pkz7ann6q84ip0" }, "stable": { "version": [ 0, - 2 + 2, + 1 ], - "commit": "f822c0b26635c69a62e36cbc9696eb35b425ca61", - "sha256": "1qgb10mhjgpk51pwbd726pzcn48730kw9q7nfib8r4rqsgk1r9ar" + "commit": "732a2f4abb480f9f5a3249af822d8eb1e90324e3", + "sha256": "09dgs0g5hcf5hris8i1w6w7wxarzmsagyc3l50rflvxy3djhlbkd" + } + }, + { + "ename": "ewal-doom-themes", + "commit": "5f59228fa54a9733f549c1ba531cd90d4350fb62", + "sha256": "14blxk8dkr0hkhf1hd75xk0zzx6qxavynymhbwbvbf3m0mp64x6l", + "fetcher": "gitlab", + "repo": "jjzmajic/ewal", + "unstable": { + "version": [ + 20200301, + 839 + ], + "deps": [ + "doom-themes", + "ewal" + ], + "commit": "4ecc355dae9c7d648cd2874e01a15dfa02b9350d", + "sha256": "1v444nfrzz0lkybrgfics5kc8gncbvvs23qlq1pkz7ann6q84ip0" + }, + "stable": { + "version": [ + 0, + 2, + 1 + ], + "deps": [ + "doom-themes", + "ewal" + ], + "commit": "732a2f4abb480f9f5a3249af822d8eb1e90324e3", + "sha256": "09dgs0g5hcf5hris8i1w6w7wxarzmsagyc3l50rflvxy3djhlbkd" } }, { @@ -27981,19 +29294,20 @@ "deps": [ "ewal" ], - "commit": "17d5fda0b912813eb754f23547ad019e55a679da", - "sha256": "1p7y91hdd4qn0w09k8p1xna9c9lhqxsl4vlgmm214ybbvacrgm1n" + "commit": "4ecc355dae9c7d648cd2874e01a15dfa02b9350d", + "sha256": "1v444nfrzz0lkybrgfics5kc8gncbvvs23qlq1pkz7ann6q84ip0" }, "stable": { "version": [ 0, - 2 + 2, + 1 ], "deps": [ "ewal" ], - "commit": "f822c0b26635c69a62e36cbc9696eb35b425ca61", - "sha256": "1qgb10mhjgpk51pwbd726pzcn48730kw9q7nfib8r4rqsgk1r9ar" + "commit": "732a2f4abb480f9f5a3249af822d8eb1e90324e3", + "sha256": "09dgs0g5hcf5hris8i1w6w7wxarzmsagyc3l50rflvxy3djhlbkd" } }, { @@ -28011,20 +29325,21 @@ "ewal", "spacemacs-theme" ], - "commit": "17d5fda0b912813eb754f23547ad019e55a679da", - "sha256": "1p7y91hdd4qn0w09k8p1xna9c9lhqxsl4vlgmm214ybbvacrgm1n" + "commit": "4ecc355dae9c7d648cd2874e01a15dfa02b9350d", + "sha256": "1v444nfrzz0lkybrgfics5kc8gncbvvs23qlq1pkz7ann6q84ip0" }, "stable": { "version": [ 0, - 2 + 2, + 1 ], "deps": [ "ewal", "spacemacs-theme" ], - "commit": "f822c0b26635c69a62e36cbc9696eb35b425ca61", - "sha256": "1qgb10mhjgpk51pwbd726pzcn48730kw9q7nfib8r4rqsgk1r9ar" + "commit": "732a2f4abb480f9f5a3249af822d8eb1e90324e3", + "sha256": "09dgs0g5hcf5hris8i1w6w7wxarzmsagyc3l50rflvxy3djhlbkd" } }, { @@ -28088,8 +29403,8 @@ "deps": [ "evil" ], - "commit": "88266fa7fcfbef704032f671b94f756f2f98bd4f", - "sha256": "0nmm7pvs81429a4zpal6aidfd1n58yavv3skscrav5r0wnlbz773" + "commit": "d5daea30176d48e74c9d063ac9bfc240ebeb97d0", + "sha256": "18mb7ik15yygfyjr5y2awbn5lrr3b9z1f31gnfslvrlav2nl1m7d" }, "stable": { "version": [ @@ -28112,11 +29427,11 @@ "repo": "purcell/exec-path-from-shell", "unstable": { "version": [ - 20190426, - 2227 + 20191229, + 112 ], - "commit": "3cfedb8791397ed50ee66bc0a7cbee5b9d78245c", - "sha256": "1mrwsc12j44q9cv9sjz3hhr7pd4z4vj30ha320zlh7pcacs973js" + "commit": "d17c4e0b73fc5ffeb2bc28156785c6bdda058654", + "sha256": "0nxrdfr9y37ws647qbb0c25l2vwapkqp3qhxwds20jwkskpqa7vm" }, "stable": { "version": [ @@ -28218,11 +29533,11 @@ "repo": "magnars/expand-region.el", "unstable": { "version": [ - 20190416, - 538 + 20200304, + 1839 ], - "commit": "1c31447730443d98f90f65dfcb752f347d46ad1b", - "sha256": "07jm8hm3zsm556l10gw83dw0mpm2d9d8x5blqbdmmp5zsf0y5kqb" + "commit": "ea6b4cbb9985ddae532bd2faf9bb00570c9f2781", + "sha256": "1pc3nnyb6cy4x6xnm25kdhmjmfm2rar7cnxsfck2wg5nm11p0klm" }, "stable": { "version": [ @@ -28302,11 +29617,11 @@ "repo": "extemporelang/extempore-emacs-mode", "unstable": { "version": [ - 20190917, - 1031 + 20200312, + 224 ], - "commit": "848ad0084f27b92d1cf98dabffbad29f959a642d", - "sha256": "00wr025php7nl33x541s9rjm99hj0jbdcmnw9ljx5hqpm04aqm7c" + "commit": "9f370d6cba7f115896579b634c7550923503a4ab", + "sha256": "11qm9f850zm8l26q75j9mlbl5ydiyw7alan47h4nyfihpl4498qz" } }, { @@ -28343,8 +29658,8 @@ 20181028, 1645 ], - "commit": "1139b57d8f4276fe56b8416fdaf4745f2cdfe7c3", - "sha256": "0jgyscjfparnby0whrmbgvsab2a7qkaqhysmh3s3jh635fndm253" + "commit": "187f621cb2d9413595cb47917641e5692e3b37cd", + "sha256": "1h9d7fgvy9xz9rw6kf5q606j2k54xqmvva028d929h8aibb6pch2" }, "stable": { "version": [ @@ -28382,11 +29697,11 @@ "repo": "agzam/exwm-edit", "unstable": { "version": [ - 20191017, - 107 + 20200126, + 27 ], - "commit": "80c1cbecafde96a59e620d8fa7e5510a5a7bbd3d", - "sha256": "14qnnz3sa8ldhp8lgmvn7xh43prf6ajir90xxij3qaw85km25yi9" + "commit": "bc25ba094b383be3c650ca0b7e1534efe2bb154f", + "sha256": "1z1ya9xgknka3dy3b3x8zzfkxdx5jqsi8q5aqkvxjxa6n7mmqdwv" } }, { @@ -28415,16 +29730,16 @@ "repo": "walseb/exwm-firefox-evil", "unstable": { "version": [ - 20190608, - 2230 + 20200206, + 2212 ], "deps": [ "evil", "exwm", "exwm-firefox-core" ], - "commit": "69e8eff0e5443183713213386c450ebfef3b4d0a", - "sha256": "1h8h7v1cwbqbdk168vqz8ndb4zgxlkx28dyy0b315vib226vkxq6" + "commit": "14643ee53a506ddcb5d2e06cb9f1be7310cd00b1", + "sha256": "12rhsy5f662maip1sma0vi364xb8swb7g59r4dmafjv3b52gxik8" } }, { @@ -28593,20 +29908,18 @@ "repo": "thblt/eziam-theme-emacs", "unstable": { "version": [ - 20190720, - 1720 + 20200327, + 1810 ], - "commit": "a0cafce1c49f3830fe96dacd49f4732b53166603", - "sha256": "0vhmv47i07zrnvy5b6gd3ws2gnnviifv04b6dafa96xr3063n2cp" + "commit": "7a585de01b6fee081eaa167b09d7e12d02cf4149", + "sha256": "11v8rbaiaihpky1m7azbflz77mwg76nbg8hsgybs86wyjk5797dv" }, "stable": { "version": [ - 1, - 1, - 1 + 3 ], - "commit": "a0cafce1c49f3830fe96dacd49f4732b53166603", - "sha256": "0vhmv47i07zrnvy5b6gd3ws2gnnviifv04b6dafa96xr3063n2cp" + "commit": "e0c0daa37c3d70880052b3d55fcda05b92d575a6", + "sha256": "0jv0l1hcb33cinqivckhp18a8fkxpg38pkdyva1zripgz1ldjvxc" } }, { @@ -28617,15 +29930,15 @@ "repo": "rejeep/f.el", "unstable": { "version": [ - 20190109, - 906 + 20191110, + 1357 ], "deps": [ "dash", "s" ], - "commit": "8191672377816a1975414cc1f116fd3b94b30bd0", - "sha256": "1b9wq6r6v44y11ldcj8czmah4ciibkm2261q4z9awd7v7iqlzf07" + "commit": "1814209e2ff43cf2e6d38c4cd476218915f550fb", + "sha256": "1l9lff15vbji9phpx4jrg8bmw2bkspzmhcgawchf5ylg2sb6yymm" }, "stable": { "version": [ @@ -28791,19 +30104,19 @@ "repo": "WJCFerguson/emacs-faff-theme", "unstable": { "version": [ - 20191018, - 2049 + 20200304, + 1414 ], - "commit": "1c9729d18642f45f867c46744796f831c8d85042", - "sha256": "004llls46rvdw0ig75bwpgh758xwcwnqxxx3bgc3xi59mbwmpk5n" + "commit": "3a2f4b567de490ee7af32ecca46de741e7fd7d6a", + "sha256": "0h3i61md4w6zsjarqan0s3p3kxz5af6ic3fww4ly6s8q1nv57xsc" }, "stable": { "version": [ 2, - 8 + 9 ], - "commit": "1c9729d18642f45f867c46744796f831c8d85042", - "sha256": "004llls46rvdw0ig75bwpgh758xwcwnqxxx3bgc3xi59mbwmpk5n" + "commit": "0aaa15181eab4088a57ad69ba2c93b2663453c31", + "sha256": "0xg20g9qqmi1x94d8f0gqwxgxpyzirs61nj86507bqn2c4n00r7v" } }, { @@ -28872,14 +30185,14 @@ "repo": "jrosdahl/fancy-dabbrev", "unstable": { "version": [ - 20190921, - 1811 + 20200129, + 1933 ], "deps": [ "popup" ], - "commit": "2d9c55ce0ef20cd405c597bbac8b204cfaeee77a", - "sha256": "0ap13sxycvwg5dxvm65qkp11816hz4vvw3828q730y9j30fizn0r" + "commit": "158e1e54055cafe5da9122a59519e8b3ed1057cf", + "sha256": "06616lzvv6vdc2i37gy47zw3rb4yjml83vn5py2k30ck8gl4fhs2" } }, { @@ -28906,6 +30219,29 @@ "sha256": "0vcr1gnqawvc1yclqs23jvxm6bqix8kpflf1c7znb0wzxmz9kx7y" } }, + { + "ename": "fantom-theme", + "commit": "e5cb6a9f6a657b72a00a39c118d90416ae2f343c", + "sha256": "18p82f82hr1sx8w9lmjxr3hvvy4ddxvyd245v32vjay5zc730y33", + "fetcher": "github", + "repo": "adsva/fantom-emacs-theme", + "unstable": { + "version": [ + 20200328, + 604 + ], + "commit": "2c1c7fd53086c2ff86ee0961642c3b58e2343c08", + "sha256": "1clvpjsf241fdkk3915zjqb4wivsjsvc9phf633pzbvi61qwhaap" + }, + "stable": { + "version": [ + 1, + 0 + ], + "commit": "70cef2886ca90c93bcafc869bcc77bad1e390c33", + "sha256": "1q15wx53zq6b9f567anrfmfpj04f3r6wz28w4237f9lg62yqhm9x" + } + }, { "ename": "farmhouse-theme", "commit": "3b0d427db8ab66d2fe323366b0837595b3b59afa", @@ -29137,6 +30473,36 @@ "sha256": "1fas0fpvym2lyzybwm44gly9jz6a2fpp72yxnwfbqqjkfgk9910y" } }, + { + "ename": "feather", + "commit": "ffb7d037679110473a8c3f9e98f737ecaba37c40", + "sha256": "1k3sxwpibk5sdim4pzfi83pzsm4vnq0xl006dy76pv363r9mvs21", + "fetcher": "github", + "repo": "conao3/feather.el", + "unstable": { + "version": [ + 20200321, + 1237 + ], + "deps": [ + "async", + "async-await", + "page-break-lines", + "ppp" + ], + "commit": "529b7ec69f1694d7dc8aacb5066cf4ddcf24cc58", + "sha256": "0flph6yv5fj5ladksjqfpj9j8p2jcc102kbc833bvx1cnmjx7qk4" + }, + "stable": { + "version": [ + 0, + 0, + 1 + ], + "commit": "4cb69055cfc42841bad1de072f69dd6923899766", + "sha256": "1fq5ysxwiaah56rizkc47vjqi8906af3ga1n1frvrvap8m9vdz4m" + } + }, { "ename": "feature-mode", "commit": "0a70991695f9ff305f12cfa45e0a597f4a782ba3", @@ -29183,19 +30549,19 @@ "repo": "technomancy/fennel-mode", "unstable": { "version": [ - 20190927, - 4 + 20200206, + 2001 ], - "commit": "deea7b971edf238f9018053de4e02fe931064694", - "sha256": "0bkpys736r70l9q7r101ghhik6lv14j303xf6sd8xk55v23wh1b8" + "commit": "c02f4a9ed1b9c26f9cfc3237906c2844f5937622", + "sha256": "1bcdicgp3wlxpdzardx1ry9js192dy26q8af6pdlvrnxqvdl2asm" } }, { "ename": "fetch", - "commit": "7e808952551936dd8eaf0158d6ca929d10712dc5", - "sha256": "1jqc6pspgcrdzm7ij46r1q6vpjq7il5dy2xyxwn2c1ky5a80paby", + "commit": "cdd1f8002636bf02c7a3d3d0a075758972eaf228", + "sha256": "0mph6kri9p0g38ll1cakpgfaz1krkyhi1382kybg1xyfy17jisg3", "fetcher": "github", - "repo": "crshd/fetch.el", + "repo": "cbrst/fetch.el", "unstable": { "version": [ 20131201, @@ -29205,6 +30571,38 @@ "sha256": "0pjw9fb3n08yd38680ifdn2wlnw2k6q97lzhqb2259mywsycyqy8" } }, + { + "ename": "ffmpeg-player", + "commit": "c3b60e5e699e0731ba195e5ea0760c218b3df4e9", + "sha256": "03ni2m92rjsz1dclw3gl983aganv9s88mczxw06lpmflrc5w0ac6", + "fetcher": "github", + "repo": "jcs-elpa/ffmpeg-player", + "unstable": { + "version": [ + 20200224, + 554 + ], + "deps": [ + "f", + "s" + ], + "commit": "9a80e1d42a4b01879a7585485384af6431b34651", + "sha256": "129mfslbp15d9z83r38lcqxnfx3n5jldaja5qbdgrmlw14irgx0r" + }, + "stable": { + "version": [ + 0, + 2, + 0 + ], + "deps": [ + "f", + "s" + ], + "commit": "214c08b362daa138d2e17883a6b4d096f22f5ebb", + "sha256": "0w2afgdd3pasrqi9apnmp0qqg4qvd0skizybrnyi9abnc0bp9v7x" + } + }, { "ename": "fic-mode", "commit": "0fda2b54a0ff0b6fc3bd6d20cfcbbf63cae5380f", @@ -29280,8 +30678,8 @@ 20190706, 804 ], - "commit": "504cb41eabded459de6990da6cddb3cb24474b39", - "sha256": "191ahvir06xv9ql3ynsx0nc884rlnxzdk1rvr2lp7vhxv7x0vgqw" + "commit": "01e6a919507a832ee001a2a0fc257657f8b04b72", + "sha256": "15557rkbi3d40q2zs5vkgkpbya4c4ksnh2a07d8l7x457zah4fbn" } }, { @@ -29292,11 +30690,11 @@ "repo": "alpaker/Fill-Column-Indicator", "unstable": { "version": [ - 20171209, - 1924 + 20191109, + 10 ], - "commit": "a284bb50789c97d7ef9021214260b3ce7cc220e3", - "sha256": "0cjnqw22vq760nzzq4pn9vf89s5w0kl877c5f9ks03c617q656nn" + "commit": "3d88b8a4a3eeabb8d1c9ef27d3c6f5d98517be77", + "sha256": "1rklnjsqz8krqjll35xd5xwg79xqwh0sldwbcnymkjwywbky8yhh" }, "stable": { "version": [ @@ -29417,26 +30815,26 @@ "repo": "technomancy/find-file-in-project", "unstable": { "version": [ - 20190914, - 524 + 20200227, + 1204 ], "deps": [ "ivy" ], - "commit": "79baa7026803b3d877857493da3041ddf6eed050", - "sha256": "0q5lcfg7bpid8rl04c9qml062pyi6sqgdcvhrqxm9mcfyjq5zg72" + "commit": "acedab403f69f242fa41012c20078500d46aa9e8", + "sha256": "0p21vm6xz6093nic2wwgly18a85xki3wp0a2vy4hgy0dl7qici86" }, "stable": { "version": [ 5, 7, - 7 + 10 ], "deps": [ "ivy" ], - "commit": "85f0fc4ab29e4339732c19be314a4920888803b2", - "sha256": "1skjbh7m0cck2rwmgzrrds51gipqf1jqghyfx15drc1n6kwivx3h" + "commit": "e5bd59c52ddf3cd59bbaa4247770d7b2957a6ea3", + "sha256": "156sfd5xs831sdlkf7p5m20hzznv1zlf9nm3pfm8n8ixp13fnzj0" } }, { @@ -29470,11 +30868,11 @@ "repo": "thisirs/find-temp-file", "unstable": { "version": [ - 20170107, - 1339 + 20200117, + 2254 ], - "commit": "513005d19d72d71f34481ee00158dd57bd93206f", - "sha256": "129jnn16vxmp6r9gx8k4rvv6spag5q0if52b5fhsybicnsl35mrz" + "commit": "2bfcdba0d6a8a0e6faa080cb04ff0f7ed06491ba", + "sha256": "1fr48mkrwxmpjk5lrznrr6nhnj8h6d3v984261nm44c0rzziq7vj" } }, { @@ -29553,6 +30951,21 @@ "sha256": "0lwgbd9zwdv7qs39c3fp4hrc17d9wrwwjgba7a14zwrhb27m7j07" } }, + { + "ename": "fira-code-mode", + "commit": "0dc34b2d3cfd5e48df0fbe2086b8b4be1358dea4", + "sha256": "09i3xyk1xj7j895xmjwmxl1gaw73j9y22c5mgnavq0sm3fbpk4w0", + "fetcher": "github", + "repo": "jming422/fira-code-mode", + "unstable": { + "version": [ + 20200316, + 1708 + ], + "commit": "64c4e655ea6ef29c7e720a5bf9281e865f2e3fa7", + "sha256": "0c11lfwdibx35wwvpq3vl4img4rz2slslqhlqaqbab212ii9jsmy" + } + }, { "ename": "firecode-theme", "commit": "641d1959bd31598fcdacd39a3d1bb077dcccfa5c", @@ -29633,11 +31046,11 @@ "repo": "wasamasa/firestarter", "unstable": { "version": [ - 20161219, - 1323 + 20200116, + 2023 ], - "commit": "4d6b106f325ac1802eabce3c8a7cd0a4c7a32864", - "sha256": "13daz15v0sshl7lxcg1xcbpl64gklgh50pzk0qxmn5ygw7nlifn0" + "commit": "eecd8f97a09bbfbc03113b71fa3c8b92766e3956", + "sha256": "1a7cp4rfa9r707pg7g9xhhs7nj79gva8fnmbq6ck0hxyllcabwa7" }, "stable": { "version": [ @@ -29657,11 +31070,11 @@ "repo": "IBM/firrtl-mode", "unstable": { "version": [ - 20190224, - 344 + 20200329, + 2002 ], - "commit": "e55c555809037b7aaf2367ad2255f0a27addd23a", - "sha256": "1nsihyx9znblc4kxyk06r7alhd4wh67312zwp9discgyf4ksm572" + "commit": "fa40141411a876ce7a1a9d6d3fe47134bc1fa954", + "sha256": "1pj7b8ppkbjp8q5dzw5v086v8lp1gv1il6qc65l4nlm8p5iicvzq" } }, { @@ -29672,19 +31085,19 @@ "repo": "Ambrevar/emacs-fish-completion", "unstable": { "version": [ - 20190904, - 254 + 20191103, + 1210 ], - "commit": "0a9a63e2cac24bfdf7dbedb5c6ab7faca23d3bfe", - "sha256": "1rp5y1hpdr08v374cvkqjb2i47lni0yl866wssm73ch9ql30y22n" + "commit": "10384881817b5ae38cf6197a077a663420090d2c", + "sha256": "17lqip1i1rrsvxzz4bx9rqf1fvwd3hriwg3sj6qxmfc8pylnp37q" }, "stable": { "version": [ 1, - 1 + 2 ], - "commit": "e5b9b65a077319dfdb2faca9ef847db3ef55d0db", - "sha256": "1pjqnbyjmj64q5nwq1mrdxcls4fp5y0b6zqs785i0s6wdvrm4021" + "commit": "10384881817b5ae38cf6197a077a663420090d2c", + "sha256": "17lqip1i1rrsvxzz4bx9rqf1fvwd3hriwg3sj6qxmfc8pylnp37q" } }, { @@ -29695,11 +31108,11 @@ "repo": "wwwjfy/emacs-fish", "unstable": { "version": [ - 20190921, - 526 + 20200213, + 2137 ], - "commit": "688c82decad108029b0434e3bce6c3d129ede6f3", - "sha256": "1s961nhwxpb9xyc26rxpn6hvwn63sng452l03mm2ply32b247f9p" + "commit": "db257db81058b0b12f788c324c264cc59b9a5bf4", + "sha256": "1f6viga13k90ws8v18az3vh3rdc5vd28xkpx9vfv3542bx1np1im" }, "stable": { "version": [ @@ -29711,6 +31124,30 @@ "sha256": "1s961nhwxpb9xyc26rxpn6hvwn63sng452l03mm2ply32b247f9p" } }, + { + "ename": "fit-text-scale", + "commit": "5ccb1803a5783834685c4bdf40e6b1e876ea3ea4", + "sha256": "0w4wg7zl9082q558dyj1hk021ry1sig5w5abnn90plvjc65xs72q", + "fetcher": "gitlab", + "repo": "marcowahl/fit-text-scale", + "unstable": { + "version": [ + 20200315, + 2120 + ], + "commit": "387acab18f9f4064c051771cf666b8550718dc27", + "sha256": "0mrl112vjsl6ddjv0j2pg97s6zk8c2qb92wqsq775ahr1cbhvbw7" + }, + "stable": { + "version": [ + 1, + 1, + 3 + ], + "commit": "75f74aa14bb38ab00f184ae0a51262eaab07a27c", + "sha256": "1nc1p4qbpvnqq2vi7pck3zygahhippvy2xgqmha4lpq5f996lmyx" + } + }, { "ename": "fix-input", "commit": "7d31f907997d1d07ec794a4f09824f43818f035c", @@ -29722,8 +31159,8 @@ 20190713, 1349 ], - "commit": "d4199bd1e2c4d4e1ff120fc683c526fda0877266", - "sha256": "18wbclnqwzgnab6jr32mfsldr1373ivf6v84f4xbj5j6k7n8b6q6" + "commit": "d3e17161d137fb75baf1449741ccaadb949e127a", + "sha256": "18yk3vs4v7n8zmxv80ss7bd94zmr14nring0d5bavax65b4wqk59" }, "stable": { "version": [ @@ -29772,8 +31209,8 @@ "deps": [ "cl-lib" ], - "commit": "53f8d77bfdb8087949a80a62e90a17ebefc9ce98", - "sha256": "1kwvjmp88yrbi2psnlv1kcg9gqxnx85qbhgnz8izpic0qnv76f1g" + "commit": "8d023f13710a90ae4da644d5485bf2be2646b6a1", + "sha256": "0pb5sd5cpz4173xi9kzgl9jx69169aymk94kdr6xgzhqda7iwy7p" }, "stable": { "version": [ @@ -29843,6 +31280,21 @@ "sha256": "1l9jbzavyi75li64jqfs000s1m8iw9xvsv8mg0bw1div6bc7vq7s" } }, + { + "ename": "flames-of-freedom", + "commit": "71883f7c1e28695701244bab6368aa528ff339f3", + "sha256": "1xj4kznx94xxzvxgx74dqd4flljzacygfvp6xr1lsvvm9wvb4m9h", + "fetcher": "github", + "repo": "wiz21b/FlamesOfFreedom", + "unstable": { + "version": [ + 20191202, + 1637 + ], + "commit": "5e47ff27cfa2f7c06081be2ffefe91a731efd012", + "sha256": "1xgrd2ybf8g488fq698xv30bqzcv1swxqnds61slj99w6k2gm29i" + } + }, { "ename": "flappymacs", "commit": "a63b22f357b2d08b12fb86c27261ab4d687c5f7f", @@ -29965,15 +31417,15 @@ "repo": "plandes/flex-compile", "unstable": { "version": [ - 20190707, - 2000 + 20191019, + 18 ], "deps": [ "buffer-manage", "dash" ], - "commit": "21f992b502309cb047d91a64de48958d565f751f", - "sha256": "1fqnaclmvv46ij5q8nmj571cjynsbgyp40idg8lcv1fvx56hj44c" + "commit": "df113f0b25ef73c5a246330ef9fa69ab936df174", + "sha256": "11hdabn2ayg2nrp7mg8vp9ywb1yl6nw4z7y7rxv70n0h4blnwn9n" }, "stable": { "version": [ @@ -30011,14 +31463,14 @@ "repo": "wanderlust/flim", "unstable": { "version": [ - 20190526, - 1034 + 20200303, + 319 ], "deps": [ "apel" ], - "commit": "e4bd54fd7d335215b54f7ef27ed974c8cd68d472", - "sha256": "0sl3skyqqzanjrp34hd1rh8wvdgsj2cm7k7hx5kc5ipggp77720r" + "commit": "f303f2f6c124bc8635add96d3326a2209749437b", + "sha256": "08gxrpzxxfgbxznvpj00bjvh8l7afg2h2vaj6iasis9724f3mgl6" } }, { @@ -30094,15 +31546,15 @@ "repo": "Fuco1/flow-js2-mode", "unstable": { "version": [ - 20190814, - 1402 + 20191213, + 1004 ], "deps": [ "flow-minor-mode", "js2-mode" ], - "commit": "bfb23b73d47ea9902bcdc13b48511b23d704fd22", - "sha256": "1pz2mhavs0jbfq8qswzvz3fz7nw7glcysybjyng9i0463vr8cwc9" + "commit": "7520bdda70287e8d57b3f41033b1e0ca59a3be95", + "sha256": "1d0g5v3nwy2wyjgh1f1s27bb8nxcfhq6yq3d7scgbnd6v6anyxxv" } }, { @@ -30113,11 +31565,11 @@ "repo": "an-sh/flow-minor-mode", "unstable": { "version": [ - 20180315, - 1824 + 20191214, + 1309 ], - "commit": "d1b32a7dd0d33c6a00a106da5f4b2323602cbd3e", - "sha256": "169r4ib9qg9q6fm3p0p23qs1qx4pa9pg1qvyq4ysr85i7kwygppl" + "commit": "5db3936d9eba8ccb2beca476afc84675b7b161ca", + "sha256": "1rnihrhkr1xpwsl6c4cgg75slsqs31bckrlkgw1252ihpl9laa6p" }, "stable": { "version": [ @@ -30166,11 +31618,11 @@ "repo": "MetroWind/flucui-theme", "unstable": { "version": [ - 20190321, - 2313 + 20200204, + 1930 ], - "commit": "ec4b20dd5471ee20d5dd6d2e140225ad607550dc", - "sha256": "0bazkkdv3gyyxv3ci9wgwnm3mn9yzb1l8h2mjap5xzy4hm6zj627" + "commit": "01a3df3530474da7b4303e4eea2ed1fae00d1776", + "sha256": "1bfnpligs32mpizrz9fb1pyp1zxq2rmympcg9pqrgpkdlxvs6xrf" } }, { @@ -30181,11 +31633,11 @@ "repo": "amake/flutter.el", "unstable": { "version": [ - 20190924, - 118 + 20200226, + 640 ], - "commit": "4d59cf0a08426c66c1d80c1a98d6245645b9a54d", - "sha256": "03x9cq4mah211379zx34dvmmdf86yc3wa9m71g7z1g1374pq036v" + "commit": "ec92a4df842ad7e5bd8f60a648ffe7b004abb09d", + "sha256": "1l7nd01p5p9l2a4k2rl61vjs337sagx4m3qr4isvhvy2bk2cppmy" } }, { @@ -30196,15 +31648,15 @@ "repo": "amake/flutter.el", "unstable": { "version": [ - 20190729, - 401 + 20200221, + 1415 ], "deps": [ "flutter", "flycheck" ], - "commit": "4d59cf0a08426c66c1d80c1a98d6245645b9a54d", - "sha256": "03x9cq4mah211379zx34dvmmdf86yc3wa9m71g7z1g1374pq036v" + "commit": "ec92a4df842ad7e5bd8f60a648ffe7b004abb09d", + "sha256": "1l7nd01p5p9l2a4k2rl61vjs337sagx4m3qr4isvhvy2bk2cppmy" } }, { @@ -30233,14 +31685,14 @@ "repo": "lewang/flx", "unstable": { "version": [ - 20151030, - 1812 + 20191115, + 659 ], "deps": [ "cl-lib" ], - "commit": "46040d0b096a0340d91235561f27a959a61d0fef", - "sha256": "0zysqnxa6kgnyfgknsin7pk25a8dy8208qw2yzan93cabplgqszy" + "commit": "17f5c9cb2af18aa6f52910ff4a5a63591261ced5", + "sha256": "1zny29byq08vic9pzxfkchdary7dsk9ygc1lcb8drai4kd9g5jk8" }, "stable": { "version": [ @@ -30270,8 +31722,8 @@ "cl-lib", "flx" ], - "commit": "46040d0b096a0340d91235561f27a959a61d0fef", - "sha256": "0zysqnxa6kgnyfgknsin7pk25a8dy8208qw2yzan93cabplgqszy" + "commit": "17f5c9cb2af18aa6f52910ff4a5a63591261ced5", + "sha256": "1zny29byq08vic9pzxfkchdary7dsk9ygc1lcb8drai4kd9g5jk8" }, "stable": { "version": [ @@ -30295,15 +31747,15 @@ "repo": "PythonNut/flx-isearch", "unstable": { "version": [ - 20180103, - 514 + 20191119, + 515 ], "deps": [ "cl-lib", "flx" ], - "commit": "f132fd6367e369885ab3a865fbfe20eee989bc0b", - "sha256": "1dcvfl4fyhgw0rhfhixzlzjfr99fisa83f7lmlwzz2zs96myhhkz" + "commit": "a44097fb8f539a193c2f09a37ea52a68f2c51839", + "sha256": "051cpdggssmbz2zhr26q2831a8g2n66r5f1aqbvczg3kfw1axpkq" } }, { @@ -30314,8 +31766,8 @@ "repo": "flycheck/flycheck", "unstable": { "version": [ - 20191022, - 1117 + 20200329, + 2344 ], "deps": [ "dash", @@ -30323,8 +31775,8 @@ "pkg-info", "seq" ], - "commit": "0eaf67211b83c062e598694d2ba4efb444dc1dc6", - "sha256": "1pb8clscs5gwfldnpy6bvczzpnj7j01hzr9c3p2xi1driszs35md" + "commit": "1751a4e9f8f6f20706a1620429422f101eabcd38", + "sha256": "10w9fgcwyni5iid7sfzrza155wrh481gdylwrwa7v640a9jmbyls" }, "stable": { "version": [ @@ -30348,14 +31800,14 @@ "repo": "crystal-ameba/ameba.el", "unstable": { "version": [ - 20190720, - 1845 + 20191226, + 1011 ], "deps": [ "flycheck" ], - "commit": "8383f07d760a31a0737be9b7bdaff2f1cff67bfd", - "sha256": "066ccpaszidjvwy18bvkrf37ws60363cnbvcl1sfd7k6nynbdar6" + "commit": "0c4925ae0e998818326adcb47ed27ddf9761c7dc", + "sha256": "0jh0pfyqdks9xk43765vgm4569a8ny01pk3gy2p3vr5gdgfdm4a3" }, "stable": { "version": [ @@ -30444,15 +31896,15 @@ "repo": "flycheck/flycheck-cask", "unstable": { "version": [ - 20160928, - 926 + 20191030, + 2253 ], "deps": [ "dash", "flycheck" ], - "commit": "c3a51147eddeb7347de81f6a498fc96538bac499", - "sha256": "1jw8n6df2hpnjrsqzdd70j0ya3yjzkcy5gm6zx9acqfx88zlgb9m" + "commit": "3457ae553c4feaf8168008f063d78fdde8fb5f94", + "sha256": "0fw5ikifp0n8jjkcg328hg1sklsgd7b8bsd538dvymk6qhx223zc" }, "stable": { "version": [ @@ -30469,10 +31921,10 @@ }, { "ename": "flycheck-checkbashisms", - "commit": "f5678ea5aef4dc8a517d6d9381a64f182645d344", - "sha256": "1rq0ymlr1dl39v0sfyjmdv4pq3q9116cz9wvgpvfgalq8759q5sz", + "commit": "cdd1f8002636bf02c7a3d3d0a075758972eaf228", + "sha256": "1gjfv3zkgc07wgrxia509pdl2z23a29m5x1p0w8bdjrp5zc4j7pw", "fetcher": "github", - "repo": "Gnouc/flycheck-checkbashisms", + "repo": "cuonglm/flycheck-checkbashisms", "unstable": { "version": [ 20190403, @@ -30533,14 +31985,14 @@ "repo": "alexmurray/flycheck-clang-analyzer", "unstable": { "version": [ - 20190724, - 542 + 20200320, + 428 ], "deps": [ "flycheck" ], - "commit": "223faa244502150d08a34898858a0b4806c92d4c", - "sha256": "1di3d9y0p8g8mndwkzkiiq2svsgk05rnzf7bzfnhig2fchg7ipap" + "commit": "7e1bf9853a34828c7f81d824dc4785f1620f2006", + "sha256": "1iw3vjdnskbk8zlbyvxiwlisj72d7q8nz8n55ffwz3v44ymzhya6" } }, { @@ -30551,26 +32003,26 @@ "repo": "ch1bo/flycheck-clang-tidy", "unstable": { "version": [ - 20191004, - 801 + 20191030, + 814 ], "deps": [ "flycheck" ], - "commit": "eb82f734529380217c0cd2a53c0d74102eedc301", - "sha256": "14hclnacnawmcqf0s3cd84an222blfh8vhan9yyyd0wgzg8llxhh" + "commit": "2ae5542960785604a2974548f89e10407e2ccfc1", + "sha256": "0gpvavwmb4zp5c5b8z60jcsza0zsb29hsg4sapp9d35hk3ranbx5" }, "stable": { "version": [ 0, - 2, + 3, 0 ], "deps": [ "flycheck" ], - "commit": "130e933a7089f4523648b5f45d08a658d540d5f3", - "sha256": "0cqw2kfi5lcwpzvv6c39ygzhaswjmcwx55z8nmfh87syqh54wj2y" + "commit": "2f89698ab0d78818875d5ef08d0b470a9ffc402f", + "sha256": "1l4jla3vlyx37nz9hjaihy9pi3ywbrg3512k2zp9cdis7130mvrb" } }, { @@ -30607,8 +32059,8 @@ "deps": [ "flycheck" ], - "commit": "353e3481a20fbd577ad79db8bbc6113ce179c195", - "sha256": "1xgvz2mdacyr7jszrpxs9lm30y0p72ahin98lr385gvsa8gknmhm" + "commit": "f652a8dc4cff01e78bba50b555bae7ba6115b552", + "sha256": "09k87wfz4m16r32g6ry4jl2zagh1gpgfd9sik54wvyky24s605y4" }, "stable": { "version": [ @@ -30631,16 +32083,16 @@ "repo": "clojure-emacs/squiggly-clojure", "unstable": { "version": [ - 20190611, - 2351 + 20191215, + 2227 ], "deps": [ "cider", "flycheck", "let-alist" ], - "commit": "4c5d0c723bd564d632a4b93046679ed19d0e49d9", - "sha256": "17g5z02gjpyb5nwgwwcc0lxzd4l2jg0q2bndbxscsf5iw41p0irq" + "commit": "592c4f89efb5112784cbf94c9ea6fdd045771b62", + "sha256": "0yyy1c385jn0m6ql7vf9za4waqznr4mvv7fd234ygcbvhqn4pfdz" }, "stable": { "version": [ @@ -30757,8 +32209,8 @@ "deps": [ "flycheck" ], - "commit": "34124f546ff5c1136aed95bf0059015f9f6a1d60", - "sha256": "09cmbw190w6aiwwc2bg349xx6vcv9b9ajw8m70ajb3653qnq3mw4" + "commit": "2428b016243e78a0312cf6b3ba6939e7169a1405", + "sha256": "0al65ldsbmm15h4y79i8avk63qq1y7fqzzad8p327z6d42zfm1qj" }, "stable": { "version": [ @@ -30968,6 +32420,25 @@ "sha256": "0wmp4q1jzb6giwrv8ajgqriy155mcc7jnj5sycpfk3hw6q74js66" } }, + { + "ename": "flycheck-drstring", + "commit": "2070680f0d883ea61def1b7a9487c4524886a579", + "sha256": "08hyh39wyphh2lr879y2havw0wfgppq0v763j0sa5hpvaf0y46h7", + "fetcher": "github", + "repo": "danielmartin/flycheck-drstring", + "unstable": { + "version": [ + 20200210, + 1903 + ], + "deps": [ + "flycheck", + "swift-mode" + ], + "commit": "d8d5a560e792a6657ef5ac69934c74f1ed51372d", + "sha256": "0vcp3zbpi5vb8cs01fzb4268gj9ijq9qndqarwnls8w9wky4548w" + } + }, { "ename": "flycheck-dtrace", "commit": "cdcdd10fbcd58a5c67e4d07632212e7dedf42dbe", @@ -31032,15 +32503,14 @@ "repo": "emacs-elsa/flycheck-elsa", "unstable": { "version": [ - 20190211, - 1921 + 20200203, + 1758 ], "deps": [ - "cask", "seq" ], - "commit": "c0a226d2520681bb0c16cd31504b620e43ee743c", - "sha256": "07605v5insay9jgj274ysdksk4cck49y5gsqzjz7js8f6p526k75" + "commit": "6274e6d5391bcdca46164b3238b045ca21c353a2", + "sha256": "0dr52dqxsgswswbkdbv0dax57k41j58n5wf3gny6yz52626kv8n8" } }, { @@ -31131,8 +32601,8 @@ "deps": [ "flycheck" ], - "commit": "422f6e4b77b27fd7370f0c88437ac5072c9d3413", - "sha256": "16117njpia9046snp1y2yapqmnzgbsan5dvaw3ih5pqmnqjjqdkd" + "commit": "1e3eede14da405b914a7d8b00300846e4393cb83", + "sha256": "10gskp8ch904s3lw7g4sixfhwyx74grdivdl2wnsvd44im9zlw6c" }, "stable": { "version": [ @@ -31173,25 +32643,59 @@ "url": "https://git.deparis.io/flycheck-grammalecte/", "unstable": { "version": [ - 20191003, - 1844 + 20200308, + 1452 ], "deps": [ "flycheck" ], - "commit": "11cc5a0480dbdd4a9fa2bc12184b3fb56efc5cf3", - "sha256": "1x7y0sjq1p7idzsy2bdqhdll8vj2ci45cd5jn8qgzv02kms65djp" + "commit": "ca4b87d22474d3337db72e19f88105f557f44867", + "sha256": "0wj81xfy3wlgdlnhhyhz5lfkl6sfb2ajwb6s8f2y4bcvqa8gz3qj" + }, + "stable": { + "version": [ + 1, + 0 + ], + "deps": [ + "flycheck" + ], + "commit": "ca4b87d22474d3337db72e19f88105f557f44867", + "sha256": "0wj81xfy3wlgdlnhhyhz5lfkl6sfb2ajwb6s8f2y4bcvqa8gz3qj" + } + }, + { + "ename": "flycheck-grammarly", + "commit": "5fdf51167be86e0871125d5548bddc0c926b79dd", + "sha256": "0rdgb9ig3gda33xwl8p9c11gf274v02zibzd660ncp0cipapvqp7", + "fetcher": "github", + "repo": "jcs-elpa/flycheck-grammarly", + "unstable": { + "version": [ + 20200203, + 446 + ], + "deps": [ + "cl-lib", + "flycheck", + "grammarly" + ], + "commit": "72425743364f4fd9516f94546a7432457e1e7df0", + "sha256": "17dl0g9f58gc9rkk87kg1bqy6qqz225ng7ymdg2ikhd8i2pd2zkw" }, "stable": { "version": [ 0, - 9 + 1, + 4 ], "deps": [ - "flycheck" + "cl-lib", + "flycheck", + "grammarly" ], - "commit": "d1ca6d9d4d64aa343598018134506930434ac5e0", - "sha256": "0s7kbs764nhq4nlfbbilz5clvadcyz5bi0ksrbm9kczhagisxnjv" + "commit": "1bcb11c3c7878c1b0d73318399e572e9a15587b1", + "sha256": "1daw5mmif1nzg4yr5zm42bzzfg1n4qxps3pkcisga11mbp9g553r" } }, { @@ -31202,8 +32706,8 @@ "repo": "flycheck/flycheck-haskell", "unstable": { "version": [ - 20190907, - 2035 + 20200218, + 753 ], "deps": [ "dash", @@ -31212,8 +32716,8 @@ "let-alist", "seq" ], - "commit": "4b585264826a9f0f35d121dd52aa0e381f336d69", - "sha256": "1cz8yxb06acm77jlr0mk9kx79v6pnhb97p2601pik9rndr824c2a" + "commit": "23cfb9387faf6f70b421bb4c11b6847f0db38dfc", + "sha256": "0s36fcqvmi3kmvhmmb0vrbgjkxjpx9wkj343f0rjjz1rh4b3n7qv" }, "stable": { "version": [ @@ -31261,6 +32765,38 @@ "sha256": "136mdg21a8sqxhijsjsvpli7r7sb40nmf80p6gmgb1ghwmhlm8k3" } }, + { + "ename": "flycheck-indent", + "commit": "b1c1163d5acc402716c4a6cf877f13665138b74b", + "sha256": "0d6wa3w377s22psbficabyqi03z8kp32662yxcly1dlv5zyyh6nd", + "fetcher": "github", + "repo": "conao3/indent-lint.el", + "unstable": { + "version": [ + 20200129, + 2046 + ], + "deps": [ + "flycheck", + "indent-lint" + ], + "commit": "23ef4bab5509e2e7fb1f4a194895a9510fa7c797", + "sha256": "00ipp87hjiymraiv6xy0lqzhn9h3wcrw7z4dkzb2934d7bd08j29" + }, + "stable": { + "version": [ + 1, + 0, + 0 + ], + "deps": [ + "flycheck", + "indent-lint" + ], + "commit": "5601a716d4daeb444642736ddef420cbc1047968", + "sha256": "0ndpdqdcg2rlrw5z86gyj46qsmsilh3a4snyyybi87kk5ajk2k64" + } + }, { "ename": "flycheck-indicator", "commit": "25d59829ca2f4fbedfee500885b45bc358faf47b", @@ -31473,25 +33009,25 @@ "repo": "purcell/flycheck-ledger", "unstable": { "version": [ - 20180819, - 321 + 20200304, + 2204 ], "deps": [ "flycheck" ], - "commit": "0fdb067ebbcc8bc1a3f9d2109e341049516b71da", - "sha256": "1p7sns041iqsnmmhkcx2651plz3wrb2nr3s78w2pd7kagx5hwksb" + "commit": "628e25ba66604946085571652a94a54f4d1ad96f", + "sha256": "1djrj3is0dzrl2703bw7bclf33dp4xqmy144q7xj5pvpb9v3kf50" }, "stable": { "version": [ 0, - 4 + 5 ], "deps": [ "flycheck" ], - "commit": "9401b6c83f60bfd29edfc62fee76f75e17a3a41e", - "sha256": "1pdssw5k88ym5fczllfjv26sp4brlyrywnlzq5baha5pq91h9cb6" + "commit": "628e25ba66604946085571652a94a54f4d1ad96f", + "sha256": "1djrj3is0dzrl2703bw7bclf33dp4xqmy144q7xj5pvpb9v3kf50" } }, { @@ -31558,15 +33094,15 @@ "repo": "tomekowal/flycheck-mix", "unstable": { "version": [ - 20190714, - 958 + 20200211, + 1414 ], "deps": [ "elixir-mode", "flycheck" ], - "commit": "04681608e52ac660f74989a045579da75bc489f2", - "sha256": "0lszvz83xkzna349vmks7p63v5r7039lmk22m796gd7ynhw7k7qy" + "commit": "d3c075f61ace6695919e90239cee6567cce09638", + "sha256": "19bvnryfxz4idw1dgp90mpjbp3512423m3xqgczskv4csns4hw1q" }, "stable": { "version": [ @@ -31596,8 +33132,8 @@ "deps": [ "flycheck" ], - "commit": "c796a2f18884bfc2afeec1fb2060da0f4044ddee", - "sha256": "09q676m4izyr50c49rsk8dsq7bys227d782x9r2kdld0fr7c7hpd" + "commit": "f8fdd59ccb9ddc7d81efbf3dde096dc66e3f9fa1", + "sha256": "08rwmvddla2h0wjiljl8qab87chsyc42hzap2mqih2n7finvzj4f" }, "stable": { "version": [ @@ -31620,14 +33156,14 @@ "repo": "lbolla/emacs-flycheck-mypy", "unstable": { "version": [ - 20180907, - 1016 + 20200113, + 1336 ], "deps": [ "flycheck" ], - "commit": "6f99166f5229c7b4298cff1818b7eaece1c9c8bd", - "sha256": "06rdwjljhficbdf74qzlxsy02xhd8msp79fx75nwbxbd84q6dr5w" + "commit": "12a77ee8ee3f6e774365f63be3cd5aede6462dd5", + "sha256": "187v8877wh247j26d5h2qcnc8i3fmqgyzfvjjjlw9sswqgrln6m7" } }, { @@ -31688,26 +33224,26 @@ "repo": "GyazSquare/flycheck-objc-clang", "unstable": { "version": [ - 20190421, - 1049 + 20191116, + 1015 ], "deps": [ "flycheck" ], - "commit": "b46ad43637cebf8467cf596d3e7b5f5d371789e9", - "sha256": "0qiva3sfxy0ilf062yd5kyirmimlc5nnl6954ijmf7r31z57n64z" + "commit": "683d52e7bc3aeabd966c546a1d835d4c7191509b", + "sha256": "0aymv9y06gzkh1m0jl693wsqvbh3cc5fp5z2yprmqzc98w1lh8bs" }, "stable": { "version": [ - 3, + 4, 0, 0 ], "deps": [ "flycheck" ], - "commit": "b46ad43637cebf8467cf596d3e7b5f5d371789e9", - "sha256": "0qiva3sfxy0ilf062yd5kyirmimlc5nnl6954ijmf7r31z57n64z" + "commit": "683d52e7bc3aeabd966c546a1d835d4c7191509b", + "sha256": "0aymv9y06gzkh1m0jl693wsqvbh3cc5fp5z2yprmqzc98w1lh8bs" } }, { @@ -31751,27 +33287,27 @@ "repo": "purcell/flycheck-package", "unstable": { "version": [ - 20191007, - 51 + 20200304, + 2151 ], "deps": [ "flycheck", "package-lint" ], - "commit": "d76e04009f2548581fc9e9a84f79f1a3112f1096", - "sha256": "1jndjq5mnhxmjvhaay4f07p5dbz4zsqv1zhyr98v8zc5dv7qkkfk" + "commit": "caea75f77dc7668c7aa0ebcd48f677e3522b5d77", + "sha256": "1x63rwpyzcn99jzhyxh91l3hp2j55wspxdv5rhvnpbar5nlqlbz1" }, "stable": { "version": [ 0, - 12 + 13 ], "deps": [ "flycheck", "package-lint" ], - "commit": "afe8a49343d90d08ee72ac6f993d424dcc39cc38", - "sha256": "19pz8h01yacfqsyh5940pam6vigvavsqg6qd84994d7mmzl534qa" + "commit": "e867b83dc84f1f8870eea069a71fa2a24cbcd5c9", + "sha256": "1b7javiqbcfzh1xkrjld9f5xrmld69gvnjz72mqpqmzbilfvmdpq" } }, { @@ -31811,6 +33347,25 @@ "sha256": "0gys38rlx9lx35bia6nj7kfhz1v5xfrirgf8adwk7b2hfjazrsib" } }, + { + "ename": "flycheck-pest", + "commit": "f0c1b89d79456ecaa22b95f3c292799f5d1aa133", + "sha256": "06nvryshinagp26idjcb1r98k39x4k82cjj735l9kiwpiag53ash", + "fetcher": "github", + "repo": "ksqsf/pest-mode", + "unstable": { + "version": [ + 20200317, + 1503 + ], + "deps": [ + "flycheck", + "pest-mode" + ], + "commit": "4ae88a9c81d499bbe99978ff0216b645fed70023", + "sha256": "1zc7dmgp3s9q33wkvw6i7zzlcaa65ixx3hxb78m62lk2a7fzb3ih" + } + }, { "ename": "flycheck-phpstan", "commit": "5a2b6cc39957e6d7185bd2bdfa3755e5b1f474a6", @@ -31819,28 +33374,28 @@ "repo": "emacs-php/phpstan.el", "unstable": { "version": [ - 20190626, - 1902 + 20200122, + 1256 ], "deps": [ "flycheck", "phpstan" ], - "commit": "81bcfa59d1e5708239d8c32d99cd84405449fb64", - "sha256": "1m4vk7v3aafj64qqs0aa9m1w8fbjziq0l6c9k4n10yr8dnm5j9aw" + "commit": "a1c30ca634107551c20c846b5316ca5697adb06d", + "sha256": "0b7rnzk1zkrzh978bmh2dsy78f0sb4ia1w06khyqiby52m27q9k1" }, "stable": { "version": [ 0, 3, - 2 + 3 ], "deps": [ "flycheck", "phpstan" ], - "commit": "de74ebfcbce53a08daf95d324d7447dede094222", - "sha256": "01x5gf7z0iqx601z3g4cdq6cv27aflxw5kmqrwrj0aijcb7nb9c6" + "commit": "535e172e1c561bc7b8c706b4e03bbf71689bd83a", + "sha256": "1hn1rdgymv81rm8nkibnc5jazgjrx3sz4w1lin85rgypzbfaf6wk" } }, { @@ -31983,15 +33538,15 @@ "repo": "alexmurray/flycheck-posframe", "unstable": { "version": [ - 20190712, - 515 + 20191214, + 1109 ], "deps": [ "flycheck", "posframe" ], - "commit": "13f8c7c7b3b51c9e7e518ae47500755642315a0e", - "sha256": "0q66shznczxvbzhq4n88lyl9lsw5dlqxfbl5k4pf7li23q8qsn9v" + "commit": "2b3e94c2e427ec9831c513007460c5ea9e2225a3", + "sha256": "1hmplb61xvz6p2b2pv6pg5bv7q7mirmgr0n1by1hj1w479g8rps3" } }, { @@ -32020,25 +33575,25 @@ "repo": "msherry/flycheck-pycheckers", "unstable": { "version": [ - 20191003, - 1712 + 20200206, + 2158 ], "deps": [ "flycheck" ], - "commit": "c6a404cb6325ce17d682bbe24cf7f226b342860b", - "sha256": "0pj422carpmzsl87z272i76z35sjpjngwr5hps3jzpc1ln50rym2" + "commit": "c5349c0fb3b719469b7e66dbdfbe58d0813f6a74", + "sha256": "02886xggdb09880jp57cah3fmf1nm77gvb0aaws8j4abl278g7x5" }, "stable": { "version": [ 0, - 13 + 14 ], "deps": [ "flycheck" ], - "commit": "680ed9bc1bfb6dc043294b705f5b6d87ca5a1700", - "sha256": "1d2caskc87kdclj6gsymnf8bxhyn4n9r9816z76hx88pn16xxqh5" + "commit": "c5349c0fb3b719469b7e66dbdfbe58d0813f6a74", + "sha256": "02886xggdb09880jp57cah3fmf1nm77gvb0aaws8j4abl278g7x5" } }, { @@ -32078,6 +33633,37 @@ "sha256": "0f58127197q6yfylz53nigyn7v91pcsdd91ywfgq5lrl0f5fvmdy" } }, + { + "ename": "flycheck-relint", + "commit": "e20128460e942a78a88bd9e6389a8fcbb14343ad", + "sha256": "1q443078jf6cxzwxz6mc4m9drzfcd86q0lcw5vszmfyzn35nwyzb", + "fetcher": "github", + "repo": "purcell/flycheck-relint", + "unstable": { + "version": [ + 20200320, + 2223 + ], + "deps": [ + "flycheck", + "relint" + ], + "commit": "296cf8e2f9e85ab0c1c591816b50ecd7c766060c", + "sha256": "148xh1alng4s3ydnhwjjrcmq1390pn6ymjszaamrzljwfqzh85ky" + }, + "stable": { + "version": [ + 0, + 5 + ], + "deps": [ + "flycheck", + "relint" + ], + "commit": "296cf8e2f9e85ab0c1c591816b50ecd7c766060c", + "sha256": "148xh1alng4s3ydnhwjjrcmq1390pn6ymjszaamrzljwfqzh85ky" + } + }, { "ename": "flycheck-rtags", "commit": "3dea16daf0d72188c8b4043534f0833fe9b04e07", @@ -32086,27 +33672,27 @@ "repo": "Andersbakken/rtags", "unstable": { "version": [ - 20180619, - 824 + 20191222, + 920 ], "deps": [ "flycheck", "rtags" ], - "commit": "f2633f565fc5e7e6958993ef105225f4e68e43ba", - "sha256": "1bjgr7wa82ccrc25r7agfaq3iz7xlp1qchvkmkx3xy59jv4yafjz" + "commit": "d370c09007d299dc6b6aae719bf728b95dd426c5", + "sha256": "0hakpd1dwhn2nkfhx4hli0l7hf3p1g8vpyrrczq45smfsz73d96x" }, "stable": { "version": [ - 3, - 23 + 2, + 38 ], "deps": [ "flycheck", "rtags" ], - "commit": "7169ed577d676690a3c6f0025b54e8477d80eacf", - "sha256": "1i94dizg3wvkvq8c2pf5bzkx8zwzcfi4p3l73c779y145bygssnq" + "commit": "9687ccdb9e539981e7934e768ea5c84464a61139", + "sha256": "1r6l7dgr2ch586zrdi5l8fhdj4qdva8ldz7cjvi2byc2pd2xs8rx" } }, { @@ -32163,6 +33749,38 @@ "sha256": "139q43ldvymfxns8zv7gxasn3sg0rn4i9yz08wgk50psg5zq5mjr" } }, + { + "ename": "flycheck-stan", + "commit": "e1d19cd6b80080aad5eff159c1bc7f7585bcd655", + "sha256": "15dxj6lklnavs3lfs8l7wq0wmqfmsss919cjw6jy8hgfbnf27wyx", + "fetcher": "github", + "repo": "stan-dev/stan-mode", + "unstable": { + "version": [ + 20200221, + 2025 + ], + "deps": [ + "flycheck", + "stan-mode" + ], + "commit": "599a0440086c660e6823622b35058f6d2d6d9637", + "sha256": "0mm0kpyihpd55hx14smlm0ayz05zw750fihhqhxqc258y8y73m5y" + }, + "stable": { + "version": [ + 10, + 1, + 0 + ], + "deps": [ + "flycheck", + "stan-mode" + ], + "commit": "599a0440086c660e6823622b35058f6d2d6d9637", + "sha256": "0mm0kpyihpd55hx14smlm0ayz05zw750fihhqhxqc258y8y73m5y" + } + }, { "ename": "flycheck-status-emoji", "commit": "5abd6aaa8d2bf55ae75cd217820763531f91958b", @@ -32233,26 +33851,26 @@ "repo": "GyazSquare/flycheck-swift3", "unstable": { "version": [ - 20190421, - 110 + 20191116, + 1113 ], "deps": [ "flycheck" ], - "commit": "811a765a0106bbdc8d6a721b22a2a97f3527df7c", - "sha256": "0gsiisshqml1s56p9k8lw5fd3mlnk2i9j886ybc7ahkkpq8sfdwz" + "commit": "62c93add8ff65d335f6ef8a3123d2d4f53339df5", + "sha256": "0jh8mb9zscj7bzvis6fplc142s7iqy6hhhwfy2lz34yp4n6ap1p0" }, "stable": { "version": [ 3, - 0, + 1, 0 ], "deps": [ "flycheck" ], - "commit": "811a765a0106bbdc8d6a721b22a2a97f3527df7c", - "sha256": "0gsiisshqml1s56p9k8lw5fd3mlnk2i9j886ybc7ahkkpq8sfdwz" + "commit": "62c93add8ff65d335f6ef8a3123d2d4f53339df5", + "sha256": "0jh8mb9zscj7bzvis6fplc142s7iqy6hhhwfy2lz34yp4n6ap1p0" } }, { @@ -32273,6 +33891,25 @@ "sha256": "0v1n9q5kcncd9dyfl0xwr378in8law41ciazdfd38ks0xjjppqvh" } }, + { + "ename": "flycheck-swiftx", + "commit": "fe5b92702eb8bc9af8f344a4d34c91b69d1e38e2", + "sha256": "0f00iir9xxlckn51xs7k72j26jw404nnyyb3kc8wpmy55dhzshw3", + "fetcher": "github", + "repo": "nhojb/flycheck-swiftx", + "unstable": { + "version": [ + 20191129, + 2207 + ], + "deps": [ + "flycheck", + "xcode-project" + ], + "commit": "94ead32e879c055902e3edb78af1193f21339e5f", + "sha256": "1r49cyhpqw469j832nqdywjh1zc37q9innxwj2hnvvw9hz69g2wm" + } + }, { "ename": "flycheck-tcl", "commit": "fafc86df6c15348711f16302bb86c0ee08c08454", @@ -32435,8 +34072,8 @@ "deps": [ "flycheck" ], - "commit": "c2b273d84f15bd03464d6722391e595d7c179a5c", - "sha256": "0snj6kkshk8bivwsnhp7kiyhzcn7x6952vw098wgzwqw2hgdkq97" + "commit": "1e9fe3b2d3e42d551b94473816a8eeee637b446c", + "sha256": "1w7b6v1zlq8c95pddx6a2rffmgghv90dpnzz6vczg37hyad3a2np" }, "stable": { "version": [ @@ -32487,8 +34124,8 @@ "let-alist", "ycmd" ], - "commit": "6f4f7384b82203cccf208e3ec09252eb079439f9", - "sha256": "1bl86x8nqw4jqzb8pfm6hm316hmk1bx8v3qz7wq9z92hb67ck2kn" + "commit": "bc81b992f79100c98f56b7b83caf64cb8ea60477", + "sha256": "0kwm5q2sv2xrsmnr0gc2fimp6b2cvwh5mhqsmcc3lgs32m4j1kwv" }, "stable": { "version": [ @@ -32687,20 +34324,20 @@ "repo": "orzechowskid/flymake-eslint", "unstable": { "version": [ - 20190828, - 128 + 20191129, + 1558 ], - "commit": "86268e1faf904bc8844dea313fe1bdaf02398ae9", - "sha256": "1xsj29z0qmijdb97cpy11dmqw8536amdz76664yzzn5gzin12fw7" + "commit": "6e2d376f84ddf9af593072954c97e9c82ab85331", + "sha256": "1pkigdarkjk2gpqjrfavg68bwihaazjzf1rr9fmrqkgis5hz3zf7" }, "stable": { "version": [ 1, - 3, - 4 + 5, + 0 ], - "commit": "d4be92ea779ea333b599fd125817f943a676a63a", - "sha256": "1x0ipsg0gd5lflx7kyyaz7zv6xnjzmhh1k32f01qr69zarf31nw0" + "commit": "6e2d376f84ddf9af593072954c97e9c82ab85331", + "sha256": "1pkigdarkjk2gpqjrfavg68bwihaazjzf1rr9fmrqkgis5hz3zf7" } }, { @@ -32757,6 +34394,24 @@ "sha256": "1wxsk6vy9hm8gi5cvhmxmqv9415q8k2yp8636s4fb1xcp1zalysk" } }, + { + "ename": "flymake-golangci", + "commit": "76c98b2e204eb2a733295037cbf13b60d1cad97b", + "sha256": "13p29d7b3pchyiw1rbdaif7h6jhzfg635ix8z2kzkqg9bvkxxr7y", + "fetcher": "gitlab", + "repo": "shackra/flymake-golangci", + "unstable": { + "version": [ + 20191028, + 1927 + ], + "deps": [ + "flymake-easy" + ], + "commit": "dfc31a1a6ae3f087b49fe6f5f21b3866780aa91c", + "sha256": "1py7ssjz4q5r28c8lzga5qi8x4gmdg3z0ga0cyskiba6krvv45ry" + } + }, { "ename": "flymake-google-cpplint", "commit": "01f8e5c2b63e80f0411860fde38bf694df3bfc8f", @@ -32877,6 +34532,24 @@ "sha256": "1ygg51r4ym4x7h4svizwllsvr72x9np6jvjqpk8ayv3w2fpb9l31" } }, + { + "ename": "flymake-joker", + "commit": "1b40ad24abac91b6beb550e743cdcece8c3ab849", + "sha256": "1wflpdqdczjsvkqnlr6p4qv1s7865lr4gpm9aq7gcfqwb0fm7pbw", + "fetcher": "github", + "repo": "beetleman/flymake-joker", + "unstable": { + "version": [ + 20200315, + 1429 + ], + "deps": [ + "flymake-quickdef" + ], + "commit": "fc132beedac9e6f415b72e578e77318fd13af9ee", + "sha256": "1pqi6d1kgn5s6bkabi8jxk26ffwqq7g3rl3xgas49rn9vgqwqmq1" + } + }, { "ename": "flymake-jshint", "commit": "144511ce3378b468751b1ee627b77a2d22fe8dfc", @@ -33040,6 +34713,24 @@ "sha256": "11r982h5fhjkmm9ld8wfdip0ghinw523nm1w4fmy830g0bbkgkrq" } }, + { + "ename": "flymake-pest", + "commit": "747e1b060e3aa78b91d61abcf2c9a4dc0d4aaf7e", + "sha256": "17bsvrd1g7d5b0z5psx0bvg2ym0bi7dh1vvl8a45dnzpig141f36", + "fetcher": "github", + "repo": "ksqsf/pest-mode", + "unstable": { + "version": [ + 20200317, + 1503 + ], + "deps": [ + "pest-mode" + ], + "commit": "4ae88a9c81d499bbe99978ff0216b645fed70023", + "sha256": "1zc7dmgp3s9q33wkvw6i7zzlcaa65ixx3hxb78m62lk2a7fzb3ih" + } + }, { "ename": "flymake-php", "commit": "cae2ac3513e371a256be0f1a7468e38e686c2487", @@ -33142,20 +34833,20 @@ "repo": "karlotness/flymake-quickdef", "unstable": { "version": [ - 20190727, - 2028 + 20200308, + 2342 ], - "commit": "5b3980a7c1763171e8cdb28ebfd5f4eaad32f9f9", - "sha256": "0rhg29jcpa4314ld9shhvf81m1ar8xp2853hxm94bxpnnza5d8x7" + "commit": "150c5839768a3d32f988f9dc08052978a68f2ad7", + "sha256": "19gfd539l97j8xbrq1fw83b54mxbcamlz9m896088d3p01zf8b0g" }, "stable": { "version": [ - 0, 1, - 1 + 0, + 0 ], - "commit": "53bf206f1a71b2fc12f49741832a94f6498ae6a6", - "sha256": "0wqfn068ylb30f8988knrcd9v3r3xck5yb1fj9jnrw2bs6qxxc57" + "commit": "150c5839768a3d32f988f9dc08052978a68f2ad7", + "sha256": "19gfd539l97j8xbrq1fw83b54mxbcamlz9m896088d3p01zf8b0g" } }, { @@ -33286,11 +34977,11 @@ "repo": "federicotdn/flymake-shellcheck", "unstable": { "version": [ - 20181214, - 24 + 20200329, + 2005 ], - "commit": "e22385a9e752e58b18d4c6371e6ff1602bb764f2", - "sha256": "0gfk2wsi72n4zkgjpqasdn83zrxlzm735q6c3gs1sfqd7h1jqnwq" + "commit": "bb413006afc23105a0f84df6fb82504a06483a55", + "sha256": "09cqn0255pxim34v5zfypbzr4clfd2ajlsyxpc9h64wg6v9876y5" } }, { @@ -33403,19 +35094,52 @@ "repo": "d12frosted/flyspell-correct", "unstable": { "version": [ - 20190408, - 1010 + 20200215, + 1408 ], - "commit": "a0852074bab130a711ba6b4696a7cb8059dac8db", - "sha256": "088cnxz4gnm0ps5myns861cjdnskvbxj70p5bimwbb4cvlp3v322" + "commit": "e765d1a3d9621decd478aa3fd08b53425da93a87", + "sha256": "195id7zscwbhmgv5jhcrvr65y4rwszdr4qz8l6w5bz5zxik2mxwp" }, "stable": { "version": [ 0, - 5 + 6, + 1 ], - "commit": "a9b53c52ab350aead0851e140d813cfd7b1bd680", - "sha256": "1r9hmz7sihhy7npv6nxp04sy57glzmfax5d67mwn96fdnc0yhlnd" + "commit": "7b4cf8c9ba5ac65e3bb2b62f5b72d45f4c9cf7b6", + "sha256": "1m5da6r82hk0c2x3lw03qnkk79sx67875afw0ybblj3cmfk6szd1" + } + }, + { + "ename": "flyspell-correct-avy-menu", + "commit": "be7986f018c7029a8e581059bec31ed23a464e0a", + "sha256": "1mwdg1q7818kl5r9rnsqd11p9b2clcm0bxph4i1rll9rvggfgjp6", + "fetcher": "github", + "repo": "d12frosted/flyspell-correct", + "unstable": { + "version": [ + 20200215, + 1337 + ], + "deps": [ + "avy-menu", + "flyspell-correct" + ], + "commit": "e765d1a3d9621decd478aa3fd08b53425da93a87", + "sha256": "195id7zscwbhmgv5jhcrvr65y4rwszdr4qz8l6w5bz5zxik2mxwp" + }, + "stable": { + "version": [ + 0, + 6, + 1 + ], + "deps": [ + "avy-menu", + "flyspell-correct" + ], + "commit": "7b4cf8c9ba5ac65e3bb2b62f5b72d45f4c9cf7b6", + "sha256": "1m5da6r82hk0c2x3lw03qnkk79sx67875afw0ybblj3cmfk6szd1" } }, { @@ -33426,27 +35150,28 @@ "repo": "d12frosted/flyspell-correct", "unstable": { "version": [ - 20181205, - 1932 + 20200215, + 1337 ], "deps": [ "flyspell-correct", "helm" ], - "commit": "a0852074bab130a711ba6b4696a7cb8059dac8db", - "sha256": "088cnxz4gnm0ps5myns861cjdnskvbxj70p5bimwbb4cvlp3v322" + "commit": "e765d1a3d9621decd478aa3fd08b53425da93a87", + "sha256": "195id7zscwbhmgv5jhcrvr65y4rwszdr4qz8l6w5bz5zxik2mxwp" }, "stable": { "version": [ 0, - 5 + 6, + 1 ], "deps": [ "flyspell-correct", "helm" ], - "commit": "a9b53c52ab350aead0851e140d813cfd7b1bd680", - "sha256": "1r9hmz7sihhy7npv6nxp04sy57glzmfax5d67mwn96fdnc0yhlnd" + "commit": "7b4cf8c9ba5ac65e3bb2b62f5b72d45f4c9cf7b6", + "sha256": "1m5da6r82hk0c2x3lw03qnkk79sx67875afw0ybblj3cmfk6szd1" } }, { @@ -33457,27 +35182,28 @@ "repo": "d12frosted/flyspell-correct", "unstable": { "version": [ - 20181205, - 1932 + 20200215, + 1503 ], "deps": [ "flyspell-correct", "ivy" ], - "commit": "a0852074bab130a711ba6b4696a7cb8059dac8db", - "sha256": "088cnxz4gnm0ps5myns861cjdnskvbxj70p5bimwbb4cvlp3v322" + "commit": "e765d1a3d9621decd478aa3fd08b53425da93a87", + "sha256": "195id7zscwbhmgv5jhcrvr65y4rwszdr4qz8l6w5bz5zxik2mxwp" }, "stable": { "version": [ 0, - 5 + 6, + 1 ], "deps": [ "flyspell-correct", "ivy" ], - "commit": "a9b53c52ab350aead0851e140d813cfd7b1bd680", - "sha256": "1r9hmz7sihhy7npv6nxp04sy57glzmfax5d67mwn96fdnc0yhlnd" + "commit": "7b4cf8c9ba5ac65e3bb2b62f5b72d45f4c9cf7b6", + "sha256": "1m5da6r82hk0c2x3lw03qnkk79sx67875afw0ybblj3cmfk6szd1" } }, { @@ -33488,27 +35214,28 @@ "repo": "d12frosted/flyspell-correct", "unstable": { "version": [ - 20181205, - 1932 + 20200204, + 521 ], "deps": [ "flyspell-correct", "popup" ], - "commit": "a0852074bab130a711ba6b4696a7cb8059dac8db", - "sha256": "088cnxz4gnm0ps5myns861cjdnskvbxj70p5bimwbb4cvlp3v322" + "commit": "e765d1a3d9621decd478aa3fd08b53425da93a87", + "sha256": "195id7zscwbhmgv5jhcrvr65y4rwszdr4qz8l6w5bz5zxik2mxwp" }, "stable": { "version": [ 0, - 5 + 6, + 1 ], "deps": [ "flyspell-correct", "popup" ], - "commit": "a9b53c52ab350aead0851e140d813cfd7b1bd680", - "sha256": "1r9hmz7sihhy7npv6nxp04sy57glzmfax5d67mwn96fdnc0yhlnd" + "commit": "7b4cf8c9ba5ac65e3bb2b62f5b72d45f4c9cf7b6", + "sha256": "1m5da6r82hk0c2x3lw03qnkk79sx67875afw0ybblj3cmfk6szd1" } }, { @@ -33624,26 +35351,26 @@ "repo": "larstvei/Focus", "unstable": { "version": [ - 20190318, - 242 + 20191209, + 2210 ], "deps": [ "cl-lib" ], - "commit": "ab42b8779929beeb7878c7fb3d3ccd80d9327c7f", - "sha256": "079v1syid7h2vr2ya6hs6hl0pgj60qdsw60mqw4cj2zllmkrkwj4" + "commit": "5f3f20e7f22fb9fd7c48abce8bd38061d97e4bc0", + "sha256": "0a55i4bychfnnzjg67a9h4j130hchcg44446dwwx1l1h48i692dw" }, "stable": { "version": [ - 0, 1, - 1 + 0, + 0 ], "deps": [ "cl-lib" ], - "commit": "75202c9445f52eab6fb82f00006f37cd20dae6b2", - "sha256": "1v9y3dp7sd4rsm31myp3l1jxpwjw3madajb6yz9rw0yhdirfwgbg" + "commit": "5f3f20e7f22fb9fd7c48abce8bd38061d97e4bc0", + "sha256": "0a55i4bychfnnzjg67a9h4j130hchcg44446dwwx1l1h48i692dw" } }, { @@ -33736,11 +35463,11 @@ "repo": "magnars/fold-this.el", "unstable": { "version": [ - 20190723, - 811 + 20191107, + 1816 ], - "commit": "74752dc6b6c0e73826b33198a552bb440b04f275", - "sha256": "01lv0ibkcimlyg3g7ffzw0fqfmvbshj30gg8j7niq6m3rkphxk4a" + "commit": "c3912c738cf0515f65162479c55999e2992afce5", + "sha256": "0cnfkz2bjyk0fkbxa80h500f7pig7q0rdifmj56d4whzhg2jsicg" }, "stable": { "version": [ @@ -33767,6 +35494,21 @@ "sha256": "0ghj0nw2zlrppsgl6x2nda9fj4w04rz6647v9823wxhfirrgnd5z" } }, + { + "ename": "font-lock-cl", + "commit": "b7a2635ceb34f49f84f35e11c14521592a9d330f", + "sha256": "1d8r3d558ipk324hpgfm4fv4kxk6mhvkka3aqd4kcv8zv0k79iq3", + "fetcher": "github", + "repo": "font-lock-cl/font-lock-cl", + "unstable": { + "version": [ + 20200321, + 533 + ], + "commit": "1a54066611da213626ab69ea426ba3c63ece3438", + "sha256": "1c7n099b8dkrcrvxsva7da1m1z01p0acbyj271lix9w331h9gbf6" + } + }, { "ename": "font-lock-profiler", "commit": "b372892a29376bc3f0101ea5865efead41e1df26", @@ -33831,10 +35573,10 @@ }, { "ename": "fontawesome", - "commit": "93b92f10802ceffc353db3d220dccfd47ea7fa41", - "sha256": "07hn4s929xklc74j8s6pd61rxmxw3911dq47wql77vb5pijv6dr3", + "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b", + "sha256": "1xqq0ndq6hndpyar11qlylkdgqpq5kxhbayyjbad3vbm6r5i9nri", "fetcher": "github", - "repo": "syohex/emacs-fontawesome", + "repo": "emacsorphanage/fontawesome", "unstable": { "version": [ 20170305, @@ -33890,8 +35632,8 @@ 20191004, 1850 ], - "commit": "5f3e67448cc98fe2875115163849acae4d9e8526", - "sha256": "1w0dhyr4i0nx0g70smgclcfsbv6cfilb7df330njzaqk8j2gdfws" + "commit": "eab07dae119129066624e692c1c75a53b2ab10a5", + "sha256": "1q9g8kza6hv6pv1sjzkl6b4gxcx6fsvv8lk5w7kk9gpws5vjz5bz" } }, { @@ -33902,11 +35644,11 @@ "repo": "k-talo/foreign-regexp.el", "unstable": { "version": [ - 20180224, - 1121 + 20200325, + 50 ], - "commit": "2ec5c44f27c2396ee487aa0ed77ae47d143fa5aa", - "sha256": "0zww0q8x99sfwzf05pk7blsi3v8xiw4xgmlwnv1qlf2qxjkz1xhb" + "commit": "e2dd47f2160cadc194eb156e7c76c3c869e6706e", + "sha256": "0bqhabpv992ss8rw3fgym6q5kq1d6b9ycs0a5ndgjpcz19rmlr66" } }, { @@ -33968,8 +35710,8 @@ "repo": "magit/forge", "unstable": { "version": [ - 20191017, - 1801 + 20200309, + 937 ], "deps": [ "closql", @@ -33981,8 +35723,8 @@ "markdown-mode", "transient" ], - "commit": "63cbf81f166fc71861d8e3d246df8e5ccedcb9bb", - "sha256": "1yf2xjx3459py6rji740jm8bmh2pv66ghnbjxsvjd4jf9kcdav83" + "commit": "2e2d26cf428012f0ece53a81cde02179e72648aa", + "sha256": "0mpim6699cda3ds8gv1f2y021gssjrw9rg7w9b8h1ifhrl54x0qn" }, "stable": { "version": [ @@ -34037,14 +35779,28 @@ "repo": "lassik/emacs-format-all-the-code", "unstable": { "version": [ - 20191024, - 2151 + 20200219, + 1628 ], "deps": [ - "cl-lib" + "cl-lib", + "language-id" ], - "commit": "a1d3ad48f21086788cd1effaf30227308a18d98f", - "sha256": "0xa3ajx6izb086r4gwxfsqwrlnyil6yrqgl8mhv14zfs93k7w8p6" + "commit": "8c8c47a863a397d947999fff4358caf20bafca0a", + "sha256": "0ayb57p114z64ppf74g2wpm2g2iga2vrl8rhay7fnfv1j2i4xjss" + }, + "stable": { + "version": [ + 0, + 3, + 0 + ], + "deps": [ + "cl-lib", + "language-id" + ], + "commit": "8c8c47a863a397d947999fff4358caf20bafca0a", + "sha256": "0ayb57p114z64ppf74g2wpm2g2iga2vrl8rhay7fnfv1j2i4xjss" } }, { @@ -34168,20 +35924,26 @@ "repo": "rnkn/fountain-mode", "unstable": { "version": [ - 20191004, - 351 + 20200312, + 1315 ], - "commit": "05db0789ceb658fbbed74381ba59c4583a004673", - "sha256": "0yibcya5v7ddkrn8dwan0bk6mmb7js8gr0h419nx4rrsgjzwd4sq" + "deps": [ + "seq" + ], + "commit": "92fdd9c8a5e405cd77ee6f338351b9ebc8976038", + "sha256": "0wa28wdd3kgxwaaiay0mha4w87x2p8z01vfn93y1256awx8kgg78" }, "stable": { "version": [ - 2, - 8, - 0 + 3, + 0, + 3 ], - "commit": "05db0789ceb658fbbed74381ba59c4583a004673", - "sha256": "0yibcya5v7ddkrn8dwan0bk6mmb7js8gr0h419nx4rrsgjzwd4sq" + "deps": [ + "seq" + ], + "commit": "974c9df2c73cf52030dfe0c771d97d3d37bd08e4", + "sha256": "0103rnq9x07a11930jgcg04ayd7npri9wd2j2ghr510y7sm86p0d" } }, { @@ -34323,20 +36085,20 @@ "repo": "tarsius/frameshot", "unstable": { "version": [ - 20181219, - 2100 + 20200103, + 1238 ], - "commit": "d0b76e4a5d9d112690bf27155f7c34a1ae5548b4", - "sha256": "149v1lxxl6kz0pwb68x65vj0fghrsfyir00qrcsl90vc5yp76ra3" + "commit": "1b5974f0cc7c2a34e5f9fab6b25578dad7df3dbf", + "sha256": "1rcx0la0njg3ij0xgw7l1wl8nlvdd0bj40v51wvmdybyiba7cdx6" }, "stable": { "version": [ 0, 2, - 2 + 4 ], - "commit": "3830aae976603ff4e41e09fdca7554594075694c", - "sha256": "1sbxr78gl822gl0ky7iz1wb558ch9gp7igg4aq63gjlq6wfx2v93" + "commit": "1b5974f0cc7c2a34e5f9fab6b25578dad7df3dbf", + "sha256": "1rcx0la0njg3ij0xgw7l1wl8nlvdd0bj40v51wvmdybyiba7cdx6" } }, { @@ -34372,8 +36134,8 @@ "a", "dash" ], - "commit": "31ef9ff4af1a4fed3dcc24ea74037feea8795c87", - "sha256": "051aihjdg3x22svaxhwylpi8i6s2x9j8syvsj1jgilgjjdy15l6j" + "commit": "6d57aee131d96315aedf6cb7d6e5d6d09bf71503", + "sha256": "1hxjvfys5kqwvl21jj5sfb6bpqxdgdhsrniq821y324glc8s38xc" } }, { @@ -34384,15 +36146,15 @@ "url": "https://git.launchpad.net/frecentf.el", "unstable": { "version": [ - 20191024, - 1342 + 20191204, + 312 ], "deps": [ "frecency", "persist" ], - "commit": "80ca5bca1dcdc99876f28758ba4fbd3c41ad2458", - "sha256": "06cmpd3628hvlaqcnp8p75mk0ss2rhgk517xqfng95gn8wqmy4ah" + "commit": "1d5d641fdd93480db2374276e85ec652af0565c5", + "sha256": "01l92rz4hll2v5k0xppmszcpy0r6lxgm4cql0zxkcj5yhgzjmrln" } }, { @@ -34440,6 +36202,30 @@ "sha256": "0ggkflx4lhyxqr7sgf1f3z0i3glmqyvl4bn16clh9ybl14q22rli" } }, + { + "ename": "freeze-it", + "commit": "0b50aa7ce66a827ddd975eddf8e95ba655e05239", + "sha256": "03wnmp6m9ss3vvzibajjdvzbgh2ydvq95xk9k2rhrgjj9pdz5ml8", + "fetcher": "github", + "repo": "rnkn/freeze-it", + "unstable": { + "version": [ + 20200322, + 700 + ], + "commit": "0e2ddd99dc1211800d55e874c1bd078f879e0d9c", + "sha256": "08jdlwn8da8cgkpwpx8834rhx8is5iigq0cv3abbydmz5lrd72nl" + }, + "stable": { + "version": [ + 0, + 1, + 2 + ], + "commit": "cf53f31e4f266b7f0b12e091de074e763c7d565b", + "sha256": "0drznbwci4swfxmmdvkm14qmpb9y9pykyflhh69l5fdxiigpdlb8" + } + }, { "ename": "fringe-current-line", "commit": "eaaa6f7f2f753a7c8489415ae406c4169eda9fa8", @@ -34487,16 +36273,16 @@ "repo": "waymondo/frog-jump-buffer", "unstable": { "version": [ - 20190810, - 1749 + 20200114, + 1826 ], "deps": [ "avy", "dash", "frog-menu" ], - "commit": "2d7b342785ae27d45f5d252272df6eb773c78e20", - "sha256": "1z00by8hiss1r2lwmzrl8pnz6jykia2849dqqm4l3z5rf6lwvc0f" + "commit": "1eb289c9b2a4bbebb3065076750f54216ac9c718", + "sha256": "0qlwjk3a13gb3glib9irgpyx94j933kflky7pbnrl17a53pnryrw" } }, { @@ -34524,44 +36310,35 @@ }, { "ename": "fsharp-mode", - "commit": "dc45611e2b629d8bc5f74555368f964420b79541", - "sha256": "07pkj30cawh0diqhrp3jkshgsd0i3y34rdnjb4af8mr7dsbsxb6z", + "commit": "7a41e8a101b1b76870402eb8f60130be9e9f189d", + "sha256": "1bcgy40z5d1663rafh4vhbm8d24yxnbw23sagki4427sywinl11x", "fetcher": "github", - "repo": "rneatherway/emacs-fsharp-mode-bin", + "repo": "fsharp/emacs-fsharp-mode", "unstable": { "version": [ - 20190609, - 1317 + 20191130, + 1857 ], "deps": [ - "company", - "company-quickhelp", "dash", - "flycheck", - "popup", - "pos-tip", + "eglot", "s" ], - "commit": "e2a63296681d65969d9c21144a22c6fd2f9dd57d", - "sha256": "0llv82jhfmxnblhihnc07z343780dsd2167xjm4vrpcqvlpp50g8" + "commit": "8c86e38b93aac55f57d5baf3a9575b45b54cd16a", + "sha256": "08c8v5wnb7fi4pbi5ivkhi3l4nf8mhn9b9829nkpz1l5q9lmz263" }, "stable": { "version": [ 1, - 9, - 14 + 10 ], "deps": [ - "company", - "company-quickhelp", "dash", - "flycheck", - "popup", - "pos-tip", + "eglot", "s" ], - "commit": "e2a63296681d65969d9c21144a22c6fd2f9dd57d", - "sha256": "0llv82jhfmxnblhihnc07z343780dsd2167xjm4vrpcqvlpp50g8" + "commit": "4a1df3342931f09edc933cb481da70cc5a5ef268", + "sha256": "0dkfd4nlc0hxikvby1271y6zppsvcc0jr12m2w1zrng1pqx666di" } }, { @@ -34572,8 +36349,8 @@ "repo": "FStarLang/fstar-mode.el", "unstable": { "version": [ - 20190815, - 1357 + 20200305, + 1654 ], "deps": [ "company", @@ -34583,8 +36360,8 @@ "quick-peek", "yasnippet" ], - "commit": "5af6fea23d1631f3f6653f804f17cd1b7358ca6b", - "sha256": "1wpr8hsvf923k7fwadl6j47k50vvfhzvpgrpj91j8208g8br87l8" + "commit": "aaaf2568881d3e5e08f8cbd04a9add49912552ad", + "sha256": "1wqbfz8sbvfl7v31a1i6mc6c8p5fyp8yflj87lavpk1d0h5dl8ly" }, "stable": { "version": [ @@ -34614,8 +36391,8 @@ "deps": [ "cl-lib" ], - "commit": "522d176762a24c8b1ed453800e21be0e5130e078", - "sha256": "1cnjinms4i6axmjxw26s2pnkbf9n47vx2s1c8c3b4qyjlb623cl6" + "commit": "2d85dafa9872fa34b463f6473e61a1ed71c17788", + "sha256": "0zwrlvp2i0n4imba84cc0hsivyaxv4sy98bsqfwpy65xm94h0d96" }, "stable": { "version": [ @@ -34684,8 +36461,8 @@ "deps": [ "cl-lib" ], - "commit": "d6a5217f7f2a5a5edcb75140f3fa69b3a50f1cdd", - "sha256": "0m43qnhp6ibsskpjkxc86p3lrjsjc0ndqml3lbd65s79x4x7i3fi" + "commit": "2c4497f5d66898f5f4cbde3abe97402880e46c2c", + "sha256": "0jnkri7d23hh392lfc3gwjlis4a0pgn0jpbhm4md94ap263yyylc" }, "stable": { "version": [ @@ -34768,29 +36545,29 @@ "repo": "diku-dk/futhark-mode", "unstable": { "version": [ - 20191020, - 1746 + 20200123, + 931 ], "deps": [ "cl-lib" ], - "commit": "da6aa3895b5ccfad297446e9547c0604cd3c6e09", - "sha256": "02v508shs94w145m7j9ic04ybr26h8md9jhhcd0l2bcggpgqyvxa" + "commit": "ca22b1e5fe46125b968c3da46e0bc9780b32e346", + "sha256": "1zkqlacxmiwprx8xbnp6phf3gh3faxghxv0j90019k0g3dq9l3ws" } }, { "ename": "fuz", - "commit": "aed40e85cf9a9906ca7a9fe34469083d21254e42", - "sha256": "0bpm2p5i8zyjsbn4d7i7rghwbap9mw4f5a5q47r6nxnr0fciarz5", + "commit": "2d3139563902bb1cb8aa48a517747f12a1ca1746", + "sha256": "0xmi3r7mhxc38rjmx2p0lhsn0gch21hhbr2s0gxy1h29mhgvy3sb", "fetcher": "github", - "repo": "cireu/fuz.el", + "repo": "rustify-emacs/fuz.el", "unstable": { "version": [ - 20190810, - 507 + 20200104, + 524 ], - "commit": "56f08351c2ae91e010f6a5e810f11ae74d76deb0", - "sha256": "15fymhj82phj407bcnc64p16kv3nc860xbsnlnj7i8qvcnl3jpdl" + "commit": "0b6b64cebde5675be3a28520ee16234db48d3b8b", + "sha256": "1bddjr3rpmvkrljq5ipjm42d59m2897cpfhmiah3rcb4c6ra40m1" }, "stable": { "version": [ @@ -34967,19 +36744,19 @@ "repo": "ShiroTakeda/gams-mode", "unstable": { "version": [ - 20181112, - 601 + 20200131, + 1335 ], - "commit": "210bd355dd2075bde3fd76c880aa489a25a54cb5", - "sha256": "1xvga0hjwcjvz9vpdn2pxq84wp6f3hrq8g55hhpr4gqxx7yg1bwj" + "commit": "bb4e8a223c8aac5ec9268d1cfcf1a9ea9b3d8a49", + "sha256": "084xjxj03d0ghh1lgrgwlkzf78y3szh47m3qva4r344yg0051yz3" }, "stable": { "version": [ 6, - 5 + 6 ], - "commit": "3022e9f8411628e6a210fb5843d858b15a7513f5", - "sha256": "06hc8yy1g2vyvib8yrhwzs8fvgxnrxlw6iyzi7phjp9fgr3cp504" + "commit": "bb4e8a223c8aac5ec9268d1cfcf1a9ea9b3d8a49", + "sha256": "084xjxj03d0ghh1lgrgwlkzf78y3szh47m3qva4r344yg0051yz3" } }, { @@ -34999,17 +36776,17 @@ }, { "ename": "gap-mode", - "commit": "83ec19a4ebac6b2d0fd84939b393848f82620978", - "sha256": "07whab3gi4b8gsvy5ijmjnj700lw0rm3bnr1769byhnpi7qpqin2", - "fetcher": "bitbucket", + "commit": "2790c00a79df237cf853a00f094fdeca9e532a9a", + "sha256": "1xq50vkw4sgfjv2sfc3ddybjzbaxq97xwgjxjkd8k6v5f755qn29", + "fetcher": "gitlab", "repo": "gvol/gap-mode", "unstable": { "version": [ - 20180809, - 445 + 20191110, + 2237 ], - "commit": "00f251070b10ba72d0548955ca125498fcaaf40c", - "sha256": "0rk5smpzpdqzpmb5cp2l40042i51z3f40fkd3hma40id0ql2gy2w" + "commit": "62adb8935033eead7fbf2c107c2dfb79afa53c67", + "sha256": "1rhhls2ylc2jg3mman3zq0mknmmwhll09d9dxrqmk5262d2f7vw4" } }, { @@ -35044,26 +36821,35 @@ "repo": "koral/gcmh", "unstable": { "version": [ - 20190807, - 2023 + 20200315, + 950 ], - "commit": "f542908b9ae4405d70fa70f42bd62618c5de4b95", - "sha256": "0mpi6x06kg5a7dr13q69irv58j3rda62fbscm5b7d1b9vlp4vcqi" + "commit": "9e241e0a9f921b04407050a0f0fada3d0c3b254a", + "sha256": "0k2qwkj0lacdb5kmvx2ip17wn7bg01y5166bi9lk9zzk3jbh70d3" } }, { "ename": "gdscript-mode", - "commit": "52f99eafb2e80a7fa13a98add98b03a147f35e8b", - "sha256": "0v4ab5xxpq1kya2is5qq61fmfgxgvbigyz7wp907z3mc00kg2818", + "commit": "b4414989beecd113ec405116402a5232ac32cb85", + "sha256": "1clakvkjifqhi847p6zrxxfkr5s3hv33qsh7r96w04pihyd38q9l", "fetcher": "github", - "repo": "AdamBark/gdscript-mode", + "repo": "GDQuest/emacs-gdscript-mode", "unstable": { "version": [ - 20180118, - 456 + 20200328, + 1820 ], - "commit": "31af5283eaec207bc864022a28e2824132471eaf", - "sha256": "0f24zsklkhhvj6qdyid2j1qcyhjnncxjma93zhr0klvn5j1z3aar" + "commit": "56a864ecff99ae314b838b755cf26af66f4f9323", + "sha256": "0mlvvagdr2bj13ibms1vq8p9zp10ag4qhyfklkj93lg6j744qav4" + }, + "stable": { + "version": [ + 1, + 0, + 2 + ], + "commit": "361439f28bd10649c9f58f1d3290b4ee63ee4f54", + "sha256": "1ymblv04as076yfi3inmc3s66j0nqslqvfx34s3da6s8g8zi0ash" } }, { @@ -35151,19 +36937,20 @@ "repo": "jaor/geiser", "unstable": { "version": [ - 20191023, - 424 + 20200327, + 2213 ], - "commit": "526d5ed4c2437d5d9a87dce67551451448bd853e", - "sha256": "04lw0kqyk5v3iicqajqbvnim8nc3a3539xwyd4hyg2w835pkvakr" + "commit": "9b45785173dc61a2897b17edf27df9407d1d94ce", + "sha256": "0r21fs262jzzpilynnlnqc9bd42fbq7hn522dfnx93jjmni35kjc" }, "stable": { "version": [ 0, - 10 + 11, + 2 ], - "commit": "775d1d734a677274fbbf4af780592bb3768d3f9b", - "sha256": "086qlii1w7sqxwnxwxvc4d6d71p829jabhgwvi0l0bjkxn7bx8pq" + "commit": "51252bcb35d6afe006487b73c1e2276210b4ed83", + "sha256": "1khi1bghsjx6cs5acizmlbw9z19s4qycnji9krdbn42cbpv0rysv" } }, { @@ -35174,14 +36961,14 @@ "repo": "noctuid/general.el", "unstable": { "version": [ - 20191001, - 450 + 20200320, + 2340 ], "deps": [ "cl-lib" ], - "commit": "f38fb2294bd29261374b772f765730f2fa168b3e", - "sha256": "1aqi5axkwfng6rm52sblf738c7rffp10sqs69dvkh2fv3ps8q28i" + "commit": "14ad4c888b34eb8ebd946d26917aaf2dd4fcce29", + "sha256": "09hp8aavimlhasnxl5z74pk6afvjpcpd6fpv7j2amdmyhbflxv9h" } }, { @@ -35220,6 +37007,53 @@ "sha256": "08cw1fa25kbhbq2sp1cpn90bz38i9hjfdj93xf6wvki55b52s0nn" } }, + { + "ename": "geoip", + "commit": "40336cd135414e1c6f478705e5873eaa396554b0", + "sha256": "0j70gl9423ghrjp4k250kq8xpngxa8pzlpivpksyzzj32s7dy1nw", + "fetcher": "github", + "repo": "xuchunyang/geoip.el", + "unstable": { + "version": [ + 20200310, + 911 + ], + "commit": "25eb1278788b942c38405c233d3614a1de92ddea", + "sha256": "0nbgbqxmpq6c487yx4igph58zmaslqn7z92x9b1xymw58fnlyrm6" + } + }, + { + "ename": "geolocation", + "commit": "fddc094aa08365c0e04f0d8f2f19a47908964f50", + "sha256": "03mxy8dfmy8db8rx9j7q1lvzy11grz0bd3054ckwgmlb6ng7d72q", + "fetcher": "github", + "repo": "gonewest818/geolocation.el", + "unstable": { + "version": [ + 20200308, + 2324 + ], + "deps": [ + "deferred", + "request-deferred" + ], + "commit": "83ab28e64bc067016b5344dffe93e380e9807e9c", + "sha256": "0ns7pgi4gbpfb192n9fdhv12zflq74jdmqc518rgh7hqlyp26mf4" + }, + "stable": { + "version": [ + 0, + 2, + 0 + ], + "deps": [ + "deferred", + "request-deferred" + ], + "commit": "83ab28e64bc067016b5344dffe93e380e9807e9c", + "sha256": "0ns7pgi4gbpfb192n9fdhv12zflq74jdmqc518rgh7hqlyp26mf4" + } + }, { "ename": "german-holidays", "commit": "bf5b3807ff989b13f95e8d6fad2f26a42ff0643c", @@ -35244,6 +37078,27 @@ "sha256": "0344w4sbd6wlgl13j163v0hzjw9nwhvpr5s7658xsdd90wp4i701" } }, + { + "ename": "gerrit", + "commit": "3b966a2476cf10234686e49d808bcbabe0686891", + "sha256": "1ikkd2xjr1n8p43pwycfrsfy9fkib83mf8l0p4bjrjszfcb9ln4v", + "fetcher": "github", + "repo": "thisch/gerrit.el", + "unstable": { + "version": [ + 20200226, + 2137 + ], + "deps": [ + "dash", + "hydra", + "magit", + "s" + ], + "commit": "36870fd34ad681f907a57a2d82b2002735878614", + "sha256": "0h9v4ajp50wpg3zz0p7klyi705ynfy2mka0hpzz81kgpq8q8f46z" + } + }, { "ename": "gerrit-download", "commit": "18725e799efd1694ff2397b6c877f926ac5f4ce8", @@ -35529,31 +37384,28 @@ "repo": "magit/ghub", "unstable": { "version": [ - 20191007, - 1420 + 20200309, + 936 ], "deps": [ - "dash", "let-alist", "treepy" ], - "commit": "e19cd86ca4768a6d89285123933baa3f1460d696", - "sha256": "1d6f8sxlsl0fpkzwbpnaw77d1a5pkg63zfvf6a2fxir357lbdizx" + "commit": "a8bf337534ec583906db77a3d56f7d1b84bda952", + "sha256": "0cpbz79k6q5ang47qw4j3i99qz093xc40k8lsc9j21g07fihxiv5" }, "stable": { "version": [ 3, - 2, + 3, 0 ], "deps": [ - "dash", - "graphql", "let-alist", "treepy" ], - "commit": "b04c7d9a3318316ef67a5d360582d990dc9f6098", - "sha256": "0lp52qygyavddl1lrgsyb6mq7hcf9h89dy2pzya3mb2va49f0vvl" + "commit": "eec071aa9e2810c8ce2f2522e6be8d78f579069d", + "sha256": "1229g0d9f4ywwjndx32x4z5jdr0kzyi44hjxmy0sifwfmg9nn251" } }, { @@ -35564,15 +37416,15 @@ "repo": "vermiculus/ghub-plus", "unstable": { "version": [ - 20181113, - 32 + 20191229, + 1748 ], "deps": [ "apiwrap", "ghub" ], - "commit": "51ebffe549286b3c0b0565a373f44f4d64fc57af", - "sha256": "11fr6ri95a9wkc0mqrkhjxz1fm2cb52151fc88k73l93mggib3ak" + "commit": "b1adef2402d7599911d4dd447a987a0cea04e6fe", + "sha256": "0bzri6s5mwvgir9smkz68d5cgcf4glpdmcj8dz8rjxziwrg6k5bz" }, "stable": { "version": [ @@ -35595,11 +37447,19 @@ "repo": "Ambrevar/emacs-gif-screencast", "unstable": { "version": [ - 20190326, - 849 + 20200327, + 1332 ], - "commit": "248d1e158405e6cba2c65ecaed40e2c59b089cd8", - "sha256": "19xqi5mgalnnhb4hw0fh7py2s2dllldx1xxbhwhknkdpifai8hl8" + "commit": "e39786458fb30e2e9683094c75c6c2cef537d9c4", + "sha256": "135mkyi8kqsxs0a3qa20splvx4xhl8k91s48yy6gwlz6m81vwvb5" + }, + "stable": { + "version": [ + 1, + 1 + ], + "commit": "9522f7e41d07b59afe21e28abbf186f78be3eab6", + "sha256": "1g1by8lvf8c9vzm4wwsi5kp285kaj0ahsl54048ympin4pi0njw9" } }, { @@ -35733,8 +37593,8 @@ 20180925, 2003 ], - "commit": "8f6290c76e7827d5a198e7dc04516bcfb2128c06", - "sha256": "0ns6m856i9j18fsg96mm66k0xwdxrnnmnzgr296f4f6gqvx7kia8" + "commit": "50df0630eba2a931146f676d349b29bde6b6b37b", + "sha256": "181yd1nwg5mvk8i5y49fmqzk6jp0rzx3zl50qq59d48jlj4l5f9f" }, "stable": { "version": [ @@ -35754,20 +37614,69 @@ "repo": "ryuslash/git-auto-commit-mode", "unstable": { "version": [ - 20191008, - 429 + 20200322, + 2007 ], - "commit": "2f05046731330c8643fc21c40a6840d40d70fc26", - "sha256": "156zfq2dwm5liffjhc1yhbwwh6vvfc2m4m9shj11glbzy9ggfqsf" + "commit": "dd0c2441de0f5ff8c69c8260d9450d0b607e3e55", + "sha256": "0r7jry1sbqsp7c1vxf7fchc7ivmnccfrflg52379v3gmpvd8s0kn" }, "stable": { "version": [ 4, - 5, + 6, 0 ], - "commit": "3db70af7d3659d1fe0ed2edf34cae23708a6d511", - "sha256": "1w3v9pmlmdxl4pglsb6j0igp13lbzg5bhbr1rv2vll93m6zxmyma" + "commit": "ae69e61233417a7f14efba35e42bd842b707aeb0", + "sha256": "0nrx3wnn2jii4yiv9c1cbbll4bgll5j73ypp1fi82kk99n0d8372" + } + }, + { + "ename": "git-backup", + "commit": "07d8ba2d036abeeb585f9dfd0399ae97fd1e2415", + "sha256": "094sh80zyidzavf0b4nfpryi164x24mi4bs8jqcwvlyg91vn9b96", + "fetcher": "github", + "repo": "antham/git-backup", + "unstable": { + "version": [ + 20191209, + 2144 + ], + "deps": [ + "s" + ], + "commit": "643c8c292c128ac3d0c4d80f2d4a2e19db711e6c", + "sha256": "0k7blj6s31llvznwsj94kwpnahb6ga58vkx6542ibdmcgdb59n1d" + }, + "stable": { + "version": [ + 0, + 0, + 1 + ], + "deps": [ + "s" + ], + "commit": "e28d7af2d1c58fa5b8068223eb83a73f044e6a6c", + "sha256": "1kx5pmm7hrcppryb39z289dab5h0w6hwk0jk1bmvbg9lzf9hqz3q" + } + }, + { + "ename": "git-backup-ivy", + "commit": "51d979059ab570a0e43264dfa081e7241dc3a2b5", + "sha256": "1yfyq6i2cfm0kdjkzrc5pql2k5hsk9wwhz220blcizldw142p236", + "fetcher": "github", + "repo": "walseb/git-backup-ivy", + "unstable": { + "version": [ + 20191224, + 1254 + ], + "deps": [ + "git-backup", + "ivy" + ], + "commit": "0a6226c37b63660e6b246bc9bbcf919e44270a99", + "sha256": "081dfbxs417zv2dds4i16ak6dri41cfn012sbfmalp8qslpclb6z" } }, { @@ -35793,15 +37702,15 @@ "repo": "10sr/git-command-el", "unstable": { "version": [ - 20191025, - 627 + 20191028, + 333 ], "deps": [ "term-run", "with-editor" ], - "commit": "af9dfa8c88837839d0fc67f71a7a78f1e14aa826", - "sha256": "1pfy7qclr6v5q7ibxwish82xp515qyi05az16a6zbm9g1cm9sav4" + "commit": "a773d40da39dfb1c6ecf2b0758aa370ddea8f06d", + "sha256": "01b2h88a6fxy23p9ggwlj5vv30aw16m8fnqxx9yr9c6yv8p9f5cl" }, "stable": { "version": [ @@ -35826,15 +37735,16 @@ "repo": "magit/magit", "unstable": { "version": [ - 20190928, - 1746 + 20200207, + 1819 ], "deps": [ "dash", + "transient", "with-editor" ], - "commit": "8b3172fc495d83830573461f877ed390e6408e0b", - "sha256": "09wcf1s7xnw4ssmg8bha94zw9ax9mz3prl5krl1l634740ajy6h4" + "commit": "236c44518d30c43c7035be32f02ba615d148b5ef", + "sha256": "0fbcx8qfymvd1i96a21gzsd4882qz6xlgccvba0dam8h9aninqf6" }, "stable": { "version": [ @@ -35906,17 +37816,17 @@ }, { "ename": "git-gutter", - "commit": "81f0f525680fea98e804f39dbde1dada887e8821", - "sha256": "19s344i95piixlzq4mjgmgjw7cy8af02z6hg89jjjdbxrfl4i2fg", + "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b", + "sha256": "1vcrjxg9pckixsbfmvpf0624s990nx33qn0p6xhnag4jn81ih03x", "fetcher": "github", - "repo": "syohex/emacs-git-gutter", + "repo": "emacsorphanage/git-gutter", "unstable": { "version": [ - 20161105, - 1356 + 20200326, + 1814 ], - "commit": "00c05264af046b5ce248e5b0bc42f117d9c27a09", - "sha256": "1c7byzv27sqcal0z7113s1897prxhynk6y89mq1fjlxmr0g20vzb" + "commit": "2c3242116a42dbbe30fc0844d1ec3c41074cdaba", + "sha256": "18gbns5mjwr5kirgpzjp4iqmj130qa5m1hs4phx1057qdq11ihrr" }, "stable": { "version": [ @@ -35962,22 +37872,22 @@ }, { "ename": "git-gutter-fringe", - "commit": "81f0f525680fea98e804f39dbde1dada887e8821", - "sha256": "10k07dzmkxsxzwc70vpv05rxjyps9494y6k7yhlv8d46x7xjyp0z", + "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b", + "sha256": "1i8vvh2si3fdgq1m0yyzs9qbw5jzykp4qgl3ksm4xrimlw1ln4vc", "fetcher": "github", - "repo": "syohex/emacs-git-gutter-fringe", + "repo": "emacsorphanage/git-gutter-fringe", "unstable": { "version": [ - 20170113, - 533 + 20200323, + 2249 ], "deps": [ "cl-lib", "fringe-helper", "git-gutter" ], - "commit": "16226caab44174301f1659f7bf8cc67a76153445", - "sha256": "1y77gjl0yznamdj0f55d418zb75k22izisjg7ikvrfsl2yfqf3pm" + "commit": "da19a474137876b29b5658ee7e9ae366f2b65c1d", + "sha256": "015qaaap2cvy4cxl31r27z48zbgd9vyj6rac9yv3caw5zsvzlkiv" }, "stable": { "version": [ @@ -36032,20 +37942,21 @@ "repo": "akirak/git-identity.el", "unstable": { "version": [ - 20191006, - 443 + 20200124, + 1856 ], "deps": [ "dash", "f", "hydra" ], - "commit": "747ea7c2694754719261c2845cdd9f5f8b3aae20", - "sha256": "1hg2na6djk2ca4hdsnk3n04yk8q6cdjf6zm63142wgkmzd31qplx" + "commit": "8471e6f8ef6c502dc999e513b552d6b23974d40d", + "sha256": "1w4dnrc0dq0brdq0dpk5lj7ji50v5b7q32f1ghkvx50i7a3dslvq" }, "stable": { "version": [ 0, + 1, 1 ], "deps": [ @@ -36053,8 +37964,8 @@ "f", "hydra" ], - "commit": "fcfcb054c08b9a391add639123faf7f700b57af4", - "sha256": "1lyz4cwlskwfgh6jgvpbyc9c119znc651gwl4bchbqr97bgq2nqm" + "commit": "d5b8dcfc9f93aecfcd9c6fb212742c165d48173f", + "sha256": "1dblc0vlnkm1b16pgi40yr21wh45larb7818l9q8p9nbpxcjinh2" } }, { @@ -36104,11 +38015,11 @@ "repo": "sshaw/git-link", "unstable": { "version": [ - 20190829, - 145 + 20191119, + 1420 ], - "commit": "267bd81c228bdab434172dbef896f3f3b82713fa", - "sha256": "04xa6lp8wkjb6zs096bf4sz124grcjj15xv1h009bmn2j95rggj6" + "commit": "2fb0e4be8801e7d53e02fc7f14ec0f9a14586ba2", + "sha256": "1y5qw5iyblj14zjvw4is51qyvmy2z0f0iba7cqr628zn9q1fqll6" }, "stable": { "version": [ @@ -36122,20 +38033,20 @@ }, { "ename": "git-messenger", - "commit": "e791293133f30e5d96c4b29e972f9016c06c476d", - "sha256": "1rnqsv389why13cy6462vyq12qc2zk58p01m3hsazp1gpfw2hfzn", + "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b", + "sha256": "0nmxx7543x7cl40m69lmyb5fv68gzdwbr8dq18qbi5kapvhg5b8y", "fetcher": "github", - "repo": "syohex/emacs-git-messenger", + "repo": "emacsorphanage/git-messenger", "unstable": { "version": [ - 20170102, - 440 + 20200321, + 2337 ], "deps": [ "popup" ], - "commit": "83815915eb8c1cb47443ff34bca3fecf7d2edf3a", - "sha256": "1jkfzcn8gl3s5y2hwqkac7lm88q80hgcp66zvy7vnylka1scb6lz" + "commit": "2d64e62e33be9f881ebb019afc183caac9c62eda", + "sha256": "1w23qjc740bxj95gdzjcy3qldfmx4y19dhcrzh83l9wfz4y566c7" }, "stable": { "version": [ @@ -36157,15 +38068,15 @@ "repo": "kidd/git-msg-prefix.el", "unstable": { "version": [ - 20180118, - 1446 + 20191031, + 1304 ], "deps": [ "dash", "s" ], - "commit": "848f2c7475f5e4937b09f55e85ea89a3be5f8588", - "sha256": "0ab6qjq5nky15vj88j5s8sh7gp9lbwgxrfqsc08bg6gdf2rx2dvx" + "commit": "43f6b31c1090371260a2f15b2117a7666920bee7", + "sha256": "01fcf0qqy24ji0ka9gh91gdrp81ilq2xjwah3rv2b90yjk8wib60" } }, { @@ -36176,11 +38087,11 @@ "repo": "10sr/git-ps1-mode-el", "unstable": { "version": [ - 20181115, - 349 + 20200113, + 704 ], - "commit": "b9188e26a64fa6f8678da6cbf5e3e865065f4f04", - "sha256": "0l9y6x53li7fqfrwb4037psn92xciylanj0fmmy8jy6n51dlzxyn" + "commit": "6762a309bd593d26258dfbf43e7bc21254a70fbf", + "sha256": "1xrp9c7ih5xvq9mhd4h2vwn47khmiycdinzhn4kmp69xy1a93b2c" }, "stable": { "version": [ @@ -36236,6 +38147,38 @@ "sha256": "1pz4l1xnq6s67w5yq9107vm8dg7rqf8n9dmbn90jys97c722g70n" } }, + { + "ename": "git-walktree", + "commit": "10bccf74f0bfd3788a7a07956b9f46fe40ff81e8", + "sha256": "1iyxncq8bgh4hlsll7agsxnw5038g712aglh4qczg202kdq1qcnz", + "fetcher": "github", + "repo": "10sr/git-walktree-el", + "unstable": { + "version": [ + 20191101, + 302 + ], + "deps": [ + "cl-lib", + "git" + ], + "commit": "162d9073286c256502df4baa9845790b9f4c2f05", + "sha256": "17z0csy00i56l7mmz2xhc1pmq044m17r4xy1azp775h9k9y2n6m9" + }, + "stable": { + "version": [ + 0, + 1, + 0 + ], + "deps": [ + "cl-lib", + "git" + ], + "commit": "a1a5490b89d193724ec637818baf2d8edf97c638", + "sha256": "13ksz3syz96n3qzk4spwyq8g8xl8riqdlh9glp92v3hg2h3d5nbs" + } + }, { "ename": "git-wip-timemachine", "commit": "81b5dd5765f52efdb88fdc14f48af641a18b3dcb", @@ -36276,8 +38219,8 @@ 20180318, 1956 ], - "commit": "33c6a116a5b298e20eb39ebb154a51c4dd37c06d", - "sha256": "1l129z6hdqyzpmk6wcjlp9nxrlhfdgrq9ql8rqq57z28sa88abld" + "commit": "55468314a5f6b77d2c96be62c7005ac94545e217", + "sha256": "08hy7rbfazs6grkpk54i82bz0i0c74zcjk96cip8970h6jn3mj72" }, "stable": { "version": [ @@ -36324,8 +38267,8 @@ 20180318, 1956 ], - "commit": "33c6a116a5b298e20eb39ebb154a51c4dd37c06d", - "sha256": "1l129z6hdqyzpmk6wcjlp9nxrlhfdgrq9ql8rqq57z28sa88abld" + "commit": "55468314a5f6b77d2c96be62c7005ac94545e217", + "sha256": "08hy7rbfazs6grkpk54i82bz0i0c74zcjk96cip8970h6jn3mj72" }, "stable": { "version": [ @@ -36406,16 +38349,16 @@ "repo": "10sr/github-elpa", "unstable": { "version": [ - 20180831, - 811 + 20200129, + 417 ], "deps": [ "commander", "git", "package-build" ], - "commit": "279b6c352859cfd519ea8726eafed84d6875c418", - "sha256": "0qhsi6qayjxg15wyjbj4sjhq4y6nhb9vd8nhc8qx26qlmvmnd0mg" + "commit": "04a55c723ffcd84dd35e5438e7e2b9f1cce08d42", + "sha256": "19jidx1v3awga0d95shdcz5vgwfw4svpgs5l43d4l340lz84c4dk" }, "stable": { "version": [ @@ -36528,16 +38471,17 @@ "repo": "charignon/github-review", "unstable": { "version": [ - 20190830, - 1639 + 20200314, + 438 ], "deps": [ "dash", + "deferred", "ghub", "s" ], - "commit": "a13a3b4f1b6114a32af843971a145ab880f51232", - "sha256": "0injfpxzgfhmqalba845j5l5cdcxxqz43knhxwinf36g52nfabl0" + "commit": "50c6bcc7cf4d7193577b3f74eea4dd72f2b7795b", + "sha256": "0khsxsqzx81y5krj06i8v84qsb3z86b1z17knyr1xizrd2lmraqp" } }, { @@ -36616,8 +38560,8 @@ 20180318, 1956 ], - "commit": "33c6a116a5b298e20eb39ebb154a51c4dd37c06d", - "sha256": "1l129z6hdqyzpmk6wcjlp9nxrlhfdgrq9ql8rqq57z28sa88abld" + "commit": "55468314a5f6b77d2c96be62c7005ac94545e217", + "sha256": "08hy7rbfazs6grkpk54i82bz0i0c74zcjk96cip8970h6jn3mj72" }, "stable": { "version": [ @@ -36637,11 +38581,19 @@ "repo": "xuchunyang/gitignore-templates.el", "unstable": { "version": [ - 20180327, - 1326 + 20200228, + 1419 ], - "commit": "b0705b8de4cbdd631c64c4e0024d62ba4ad68052", - "sha256": "1f0lcyw7yrdfmv0h8b87kz0pdrzhy28fzv688z4aaw964qn8jz0k" + "commit": "b147d1930645dda76dbd48fb6f4f7f790353de26", + "sha256": "17g66y8swy8pjkrv0in9bb1qbaq04ixn5wp6h7r54nfvjlnl1rza" + }, + "stable": { + "version": [ + 1, + 0 + ], + "commit": "b147d1930645dda76dbd48fb6f4f7f790353de26", + "sha256": "17g66y8swy8pjkrv0in9bb1qbaq04ixn5wp6h7r54nfvjlnl1rza" } }, { @@ -36836,6 +38788,21 @@ "sha256": "059m30vvp71y630pcam6qfv5bxc35ygj26wcg28p56pccxxyj3q9" } }, + { + "ename": "global-tags", + "commit": "2bf3f3de312becb948000a21b280c990a03c8aa0", + "sha256": "0zfjfn92dnz7x5k67fphch6a5n7nyigapcg20gsz34xshdnnsz3z", + "fetcher": "git", + "url": "https://git.launchpad.net/global-tags.el", + "unstable": { + "version": [ + 20191104, + 1328 + ], + "commit": "8ac8790790d833e2979103f7f5a14b37382ff323", + "sha256": "05swwpslvy3c7yv7v5g6q4s82ff623lpbdkasmq3q8jhmbjsx92k" + } + }, { "ename": "glsl-mode", "commit": "c416822d54df436f29dcf9a5f26398685fdc17a2", @@ -36973,6 +38940,29 @@ "sha256": "1aca65g4rfpsm4yk5k2bj6kbb2wrf6s14m8jgv1p94mqmzkj7rlq" } }, + { + "ename": "gnome-screencast", + "commit": "628db4fa9d74c60290bf0e81cbb7ffdd08bd4a68", + "sha256": "0h16zj0lyg76g6561q8xbazyidwbr8bd146lw8s68vdgmn6k9qn3", + "fetcher": "github", + "repo": "juergenhoetzel/emacs-gnome-screencast", + "unstable": { + "version": [ + 20200115, + 2230 + ], + "commit": "8c5e787230b2b8a51520ab970d5b505cbbc8f32f", + "sha256": "1zalx97b92vxjczm798arxyxhl29hla9c9j4da9ykpyspf3wry4d" + }, + "stable": { + "version": [ + 1, + 4 + ], + "commit": "261844a88c75f10d98b60577ac8121fcd6721564", + "sha256": "0qc5dj14fj3wa36kf3d6n0ijd49lpxmgnn1qw5qqbz29k12w5sqf" + } + }, { "ename": "gnomenm", "commit": "dd98221d3498528efb0f2d943102d32ebd7b34b3", @@ -37024,26 +39014,26 @@ "repo": "lokedhs/gnu-apl-mode", "unstable": { "version": [ - 20181217, - 854 + 20200108, + 1633 ], - "commit": "3b5b13abeb424e8ed399379fdefc168422664def", - "sha256": "0nhbfzfwl44ffvhzrnkjxaxz2nfrp1a7zcy6fg6cm13c2z40jslp" + "commit": "7f84eb307e9765fadcd1e0a9201ae562724ef1c9", + "sha256": "0aqlgsl19p2vlagdvahxxhqdcvmr8g7wlziwjvm2pina3lqfw4wc" } }, { "ename": "gnuplot", - "commit": "78be03893e4b0502ce999375e5630d32bda56ac1", - "sha256": "06c5gqf02fkra8c52xck1lqvf4yg45zfibyf9zqmnbwk7p2jxrds", + "commit": "be594de074dc3513c773d78c38e823be53061612", + "sha256": "1cz3db40r72cfqazg0w85fx5249d98wkxvjjjcn8dhwnmqymqigi", "fetcher": "github", - "repo": "bruceravel/gnuplot-mode", + "repo": "emacsorphanage/gnuplot", "unstable": { "version": [ - 20141231, - 2137 + 20200322, + 53 ], - "commit": "21f9046e3f5caad41b750b5c9cee02fa4fd20fb9", - "sha256": "1gm116479gdwc4hr3nyv1id692dcd1sx7w2a80pvmgr35ybccn7c" + "commit": "f0001c30010b2899e36d7d89046322467e923088", + "sha256": "1qnlcfzaihwc6kxdr1h2mrhccnhlwsdqwmcygxi2s01q2ifq1nc1" }, "stable": { "version": [ @@ -37181,6 +39171,15 @@ ], "commit": "3968667bfded60fbbf33f2fba3170e2b6501ec43", "sha256": "0rxaxc7b0dkhsd5547hngq24bdvnxig5a7xp9jir59fp2k8xd4aw" + }, + "stable": { + "version": [ + 1, + 0, + 0 + ], + "commit": "3968667bfded60fbbf33f2fba3170e2b6501ec43", + "sha256": "0rxaxc7b0dkhsd5547hngq24bdvnxig5a7xp9jir59fp2k8xd4aw" } }, { @@ -37232,10 +39231,10 @@ }, { "ename": "go-add-tags", - "commit": "55d3b893bd68d3d2d86ecdbb4ed442edd256516a", - "sha256": "0nvas44rsvqzk2ay5bhzkbrnzql13vnxq9pk4lp4mvp86dda9qim", + "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b", + "sha256": "0syra7h9wixiq3g4ydamvzw2vc0852zcx5ij0rhw103hrvhrzcjd", "fetcher": "github", - "repo": "syohex/emacs-go-add-tags", + "repo": "emacsorphanage/go-add-tags", "unstable": { "version": [ 20161123, @@ -37273,8 +39272,8 @@ "deps": [ "auto-complete" ], - "commit": "7fb65232883f19a8305706b4b4ff32916ffbcaf5", - "sha256": "09yqziccv9mg5jlmhw8gslpcwwiiah0hs05nq0qnsbdnvc8bs4lr" + "commit": "939b4a677f2f843ea13d9dd90206d57111f0ceb9", + "sha256": "1yfw8y6czkqgxpyfdxwvkcrsmwbca7l0lr4jqmnpmm5m5rylcwr9" }, "stable": { "version": [ @@ -37295,11 +39294,11 @@ "url": "https://git.sr.ht/~zge/go-capf", "unstable": { "version": [ - 20190629, - 727 + 20200216, + 936 ], - "commit": "728e290b182239260937efcf816d904122c423ca", - "sha256": "0s8hwpd882gpxnmlz3y6987gc5c2kawsdkqic5d4kfd8v9yc0psx" + "commit": "9e66ce4ef4307e9f0e73e65f6bb2f287ed2c940b", + "sha256": "1sgsxd511xw1g707c0d58j3xzxfbay7k5b7hyamd2fnh30pw2hb3" }, "stable": { "version": [ @@ -37332,10 +39331,10 @@ }, { "ename": "go-direx", - "commit": "032c0c3cd04f36f1bc66bb7d9d789d354c620a09", - "sha256": "0dq5d7fsld4hww8fl68c18qp6fl3781dqqwd98cg68bihw2wwni7", + "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b", + "sha256": "0x9yrbbcwsc5kf88d1j75g02yndavgb4g4wwhy9ml58a6d6kq5y3", "fetcher": "github", - "repo": "syohex/emacs-go-direx", + "repo": "emacsorphanage/go-direx", "unstable": { "version": [ 20150316, @@ -37393,10 +39392,10 @@ }, { "ename": "go-eldoc", - "commit": "6ce1190db06cc214746215dd27648eded5fe5140", - "sha256": "1k115dirfqxdnb6hdzlw41xdy2dxp38g3vq5wlvslqggha7gzhkk", + "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b", + "sha256": "1x8qwmn8b2wc79dqqx89c3l1m9sj08hgdwh5lwrlp1l80vhfp3sr", "fetcher": "github", - "repo": "syohex/emacs-go-eldoc", + "repo": "emacsorphanage/go-eldoc", "unstable": { "version": [ 20170305, @@ -37518,8 +39517,8 @@ "cl-lib", "go-mode" ], - "commit": "a414da86a48e490baeb24386fad495b47ec56fd9", - "sha256": "0q1m18g9n77x7znmmqmpqj3lmkw7g4jp7fp9cj2psi04bmvcsnr6" + "commit": "85a20dac6cee1e4bcfff554a665bcb7cd21dc0d9", + "sha256": "09xivjss1vlpqyp8cbv6652sgy3rxp00ml7f76prx22cwfpq67db" }, "stable": { "version": [ @@ -37561,10 +39560,10 @@ }, { "ename": "go-impl", - "commit": "aa1a0845cc1a6970018b397d13394aaa8147e5d0", - "sha256": "09frwpwc080rfpwkb63yv47dyj741lrpyrp65sq2bn4sf03xw0cx", + "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b", + "sha256": "1vi986ymza88cpjlxjz88na1w9dq4dr9d82vdbpav762vz828h9i", "fetcher": "github", - "repo": "syohex/emacs-go-impl", + "repo": "emacsorphanage/go-impl", "unstable": { "version": [ 20170125, @@ -37611,11 +39610,11 @@ "repo": "dominikh/go-mode.el", "unstable": { "version": [ - 20191022, - 2037 + 20200309, + 303 ], - "commit": "a414da86a48e490baeb24386fad495b47ec56fd9", - "sha256": "0q1m18g9n77x7znmmqmpqj3lmkw7g4jp7fp9cj2psi04bmvcsnr6" + "commit": "85a20dac6cee1e4bcfff554a665bcb7cd21dc0d9", + "sha256": "09xivjss1vlpqyp8cbv6652sgy3rxp00ml7f76prx22cwfpq67db" }, "stable": { "version": [ @@ -37719,8 +39718,8 @@ "deps": [ "go-mode" ], - "commit": "a414da86a48e490baeb24386fad495b47ec56fd9", - "sha256": "0q1m18g9n77x7znmmqmpqj3lmkw7g4jp7fp9cj2psi04bmvcsnr6" + "commit": "85a20dac6cee1e4bcfff554a665bcb7cd21dc0d9", + "sha256": "09xivjss1vlpqyp8cbv6652sgy3rxp00ml7f76prx22cwfpq67db" }, "stable": { "version": [ @@ -37845,17 +39844,26 @@ }, { "ename": "god-mode", - "commit": "2dff8dc08583048f9b7b4cb6d8f05a18dd4e8b42", - "sha256": "01xx2byjh6vlckaxamm2x2qzicd9qc8h6amyjg0bxz3932a4llaa", + "commit": "c4f8b0a0766bcff6b716b9e35da25c00b8a91abd", + "sha256": "0l8hdn227axan7ryx6z4fbk9nqsb50bmhwqxgy3g8g19vqhflhfr", "fetcher": "github", - "repo": "chrisdone/god-mode", + "repo": "emacsorphanage/god-mode", "unstable": { "version": [ - 20180117, - 1134 + 20200329, + 209 ], - "commit": "344167ed9b4c212273dd056e7481cf1373b461d0", - "sha256": "0y7phh7amrdphv9dkf0304z2knyas745ir59ybngh1a55dfc2mf4" + "commit": "b82ce18ae4db2078c03d92946e21808c1f325f15", + "sha256": "1a490s5s8884rhb35gw4dxdzk2djvdiw4zsp9866sfrwh7xcama4" + }, + "stable": { + "version": [ + 2, + 16, + 0 + ], + "commit": "b82ce18ae4db2078c03d92946e21808c1f325f15", + "sha256": "1a490s5s8884rhb35gw4dxdzk2djvdiw4zsp9866sfrwh7xcama4" } }, { @@ -37908,11 +39916,11 @@ "repo": "roman/golden-ratio.el", "unstable": { "version": [ - 20150819, - 1120 + 20191028, + 1732 ], - "commit": "72b028808b41d23fa3f7e8c0d23d2c475e7b46ae", - "sha256": "0wdw89n7ngxpcdigv8c01h4i84hsdh0y7xq6jdj1i6mnajl8gk92" + "commit": "007911d8a431b72670f5fe5f0e5b4380c2777a31", + "sha256": "1dkc25yj47jlrji0v9xjxj3d3hhgnxxb5ia91zlby1mil7r9cwv1" }, "stable": { "version": [ @@ -37967,16 +39975,16 @@ 20180221, 2015 ], - "commit": "16217165b5de779cb6a5e4fc81fa9c1166fda457", - "sha256": "0jhwmwc0vykcmf164na0pnadl8gv7184b6pf3xayknwmzdw6vd7h" + "commit": "738671d3881b9731cc63024d5d88cf28db875626", + "sha256": "0jkiz4py59jjnkyxbxifpf7bsar11lbgmj5jiq2kic5k03shkn9c" } }, { "ename": "gom-mode", - "commit": "0a1e5f505e048b36c12de36b23b779beeaefc45f", - "sha256": "07zr38gzqb3ds9mpf94c1vhl1rqd0cjh4g4j2bz86q16c0rnmp7m", + "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b", + "sha256": "0qwqvkdvxmwnijj60jvqzwvikw1avrg6i66cl74qbqqcqkhazbpz", "fetcher": "github", - "repo": "syohex/emacs-gom-mode", + "repo": "emacsorphanage/gom-mode", "unstable": { "version": [ 20131008, @@ -37986,6 +39994,24 @@ "sha256": "1anjzlg53kjdqfjcdahbxy8zk9hdha075c1f9nzrnnbbqvmirbbb" } }, + { + "ename": "gomacro-mode", + "commit": "ce33236843b8eb266769f588e8d8341b056ccf2c", + "sha256": "0gfx9z8cb3lakr1c6irjmcb7fv3val349vxibwlxjbmax689r5v5", + "fetcher": "github", + "repo": "storvik/gomacro-mode", + "unstable": { + "version": [ + 20200326, + 1103 + ], + "deps": [ + "go-mode" + ], + "commit": "3112e56d2d5e645a3e0fd877f3e810dbccbf989f", + "sha256": "1f3y46q7djr1riz7x26gc7a1gf9p8sfdrnlqyiwzmi9vkk6h8wdz" + } + }, { "ename": "google", "commit": "45237d37da807559498bb958184e05109f880070", @@ -38012,8 +40038,8 @@ 20180130, 1736 ], - "commit": "83a9e8d7ca3d47239cb0a7bf532de791e6df3ba6", - "sha256": "01m0wxy5a7g82dc04kfjhh1hx7g5d04974b2jhbgsab38hdgggpd" + "commit": "305ac8725a166ed42e3f5dd3f80d6de2cf840ef1", + "sha256": "05znbhy98pyc6r7dii8drw4p8vy6f5b3zk0hmlw8w73vcwia59ay" } }, { @@ -38173,8 +40199,8 @@ "hydra", "s" ], - "commit": "bbd27f6a0a77f484e2a3f082d70dc69da63ae52a", - "sha256": "01lqirxgw7svxy1fdv49mvcbhpslf64in6c4dk36b8xhngyqbilf" + "commit": "6a73bf352e8d893f89cad36c958c4db2b5e35e07", + "sha256": "0ydiq55ylm8ph2r5nlv9p7a5bnnxk3c9731l7mbzdhd43f734dld" }, "stable": { "version": [ @@ -38194,16 +40220,16 @@ "repo": "nlamirault/gotest.el", "unstable": { "version": [ - 20180617, - 1333 + 20191128, + 1111 ], "deps": [ "f", "go-mode", "s" ], - "commit": "36e09a6bf1face4c56d4a7707935c992786e0076", - "sha256": "1aqjyhp7qdss3iqfxamp45006fgfxdgvhf7lqjnjs2xqzvmvsq80" + "commit": "70f63eafda1f6a2f0a01a9320cc4d2edee9a17b2", + "sha256": "090xf2w5zgffndpjvg4qfdm77cpsc8vpr00h6j0skjpr3bni79cx" }, "stable": { "version": [ @@ -38255,6 +40281,15 @@ 20190418, 829 ], + "commit": "c0209143fbeafcc9ba93bc2333dd08e72211fa20", + "sha256": "15plzc33vyhmfm7bxhvnfr25yvjj6fdr1zp2dvsj8jryj4gb6gkz" + }, + "stable": { + "version": [ + 0, + 0, + 1 + ], "commit": "366cf84c30fc8e675e9cbab1091ead6f3cd0d399", "sha256": "1y2ay0r0rqayvw8wlbf8advjbhvzz7sa16k272mxszxzp7xmnr71" } @@ -38286,35 +40321,6 @@ "sha256": "0kpalpssfrwcqrmp47i3j2x04m01fm7cspwsm6fks8pn71lagcwm" } }, - { - "ename": "goto-gem", - "commit": "a52b516b7b10bdada2f64499c8f43f85a236f254", - "sha256": "0i79z1isdbnqmz5rlqjjys68l27nl90m1gzks4f9d6dsgfryhgwx", - "fetcher": "gitlab", - "repo": "pidu/goto-gem", - "unstable": { - "version": [ - 20140729, - 1845 - ], - "deps": [ - "s" - ], - "commit": "e3206f11f48bb7e798514a4ca2c2f60649613e5e", - "sha256": "0j2hdxqfsifm0d8ilwcw7np6mvn4xm58xglzh42gigj2fxv87g99" - }, - "stable": { - "version": [ - 1, - 2 - ], - "deps": [ - "s" - ], - "commit": "6f5bd405c096ef879fed1298c09d0daa0bae5dac", - "sha256": "188q7jr1y872as3w32m8lf6vwl2by1ibgdk6zk7dhpcjwd0ik7x7" - } - }, { "ename": "goto-last-change", "commit": "d68945f5845e5e44fb6c11726a56acd4dc56e101", @@ -38365,6 +40371,15 @@ 20190308, 736 ], + "commit": "1f0afb261a4e4a1b0a2fae3959b0ce5d30bce2a1", + "sha256": "03csbs9mh9jjw21sncvnlmm97waazy0c57jp1jynwhzzsbp0k0rs" + }, + "stable": { + "version": [ + 0, + 0, + 5 + ], "commit": "772fb942777a321b4698add1b94cff157f23a93b", "sha256": "16zil8kjv7lfmy11g88p1cm24j9db319fgkwzsgf2vzp1m15l0pc" } @@ -38377,8 +40392,8 @@ "repo": "vmware/govmomi", "unstable": { "version": [ - 20180524, - 2023 + 20191213, + 2131 ], "deps": [ "dash", @@ -38386,14 +40401,14 @@ "magit-popup", "s" ], - "commit": "f01505d273e85c71261f91457191e65fcb971be3", - "sha256": "1yirkw804z53xl0i3znyj4dxkqspwibkim80mp9901ncn10k21y6" + "commit": "a01612b9850519603bfef116bd7bddd9c8e3b975", + "sha256": "0kbnhm6m7sf1j63yykrn4p7ykkjvvair3x95wi4b59icc6ydvwv7" }, "stable": { "version": [ 0, - 21, - 0 + 22, + 2 ], "deps": [ "dash", @@ -38401,8 +40416,8 @@ "magit-popup", "s" ], - "commit": "a0fef816799db3e430bb7a5ac951e7835fe4d56b", - "sha256": "0mig8w0szxqcii3gihrsm8n8hzziq9l6axc5z32nw9kiy9bi4130" + "commit": "e7df0c1118c15c0b35fe08f183ca084269ea6542", + "sha256": "0lm1jaw5bpz7z4gibbbhswjr7qdhxkgbawr5bnykprsmp663i3nm" } }, { @@ -38475,14 +40490,14 @@ "repo": "xuchunyang/grab-x-link", "unstable": { "version": [ - 20180205, - 1146 + 20191113, + 848 ], "deps": [ "cl-lib" ], - "commit": "d19f0c0da0ddc55005a4c1cdc2b8c5de8bea1e8c", - "sha256": "1l9jg2w8ym169b5dhg3k5vksbmicg4n1a55x7ddjysf8n887cpid" + "commit": "d898db46e4864118359fdedfe915e180de3fe290", + "sha256": "0npz0da2rcckv0zcf2f8vpjcdnii3z99x6c5c4z7jd4xgkp004xs" }, "stable": { "version": [ @@ -38561,8 +40576,8 @@ 20160504, 911 ], - "commit": "09226f852cb3167f23012df8f77318037f5fe9c5", - "sha256": "1gq8zwnyqxdf2i9agwky9nhc0nz6g7y0jfi8vjvxgak8dyilrfma" + "commit": "cafdd98e06a3bbff213f3ccb163de2c42d412b66", + "sha256": "07809alyxind4n0rb1h3x19hgq7ihpn128xljlz38d9xvp0r48z3" }, "stable": { "version": [ @@ -38605,6 +40620,42 @@ "sha256": "0xnj0wp0na53l0y8fiaah50ij4r80j8a29hbjbcicska21p5w1s1" } }, + { + "ename": "grammarly", + "commit": "1bbf7e3434cea3d0f6f72747ea653188ce25f68f", + "sha256": "0h0gikvbyraflm921jmf2jkj1nfgxsdq1ybih449zbhxkvb494d4", + "fetcher": "github", + "repo": "jcs-elpa/grammarly", + "unstable": { + "version": [ + 20200126, + 420 + ], + "deps": [ + "cl-lib", + "request", + "s", + "websocket" + ], + "commit": "709bf3124b6e130efcede8b38fc2fed38699e19b", + "sha256": "1lz74qqzznv5c6pnsnnp0x0k16q663pkqakvwpg69lavcg68ysxh" + }, + "stable": { + "version": [ + 0, + 1, + 2 + ], + "deps": [ + "cl-lib", + "request", + "s", + "websocket" + ], + "commit": "cd2e75f21989a586c9cc71540fc6e3b5df8a5ce0", + "sha256": "1v7lwwx9iyksh5aaav97vd5pm07k93fkv5v4h96s8i3hyrbcgd74" + } + }, { "ename": "grandshell-theme", "commit": "f0a8eb0eefe88b4ea683a4743c0f8393506e014b", @@ -38749,20 +40800,20 @@ "repo": "ppareit/graphviz-dot-mode", "unstable": { "version": [ - 20191012, - 849 + 20200304, + 432 ], - "commit": "096ca0130f0bcbbacc0107a86e3cdfecdb88a087", - "sha256": "1y8szyj3g96vb8ybc7ynkbpm98wpflrx1q5cbbxygx3y21lv8dpw" + "commit": "3642a0a5f41a80c8ecef7c6143d514200b80e194", + "sha256": "16aq9zz4dnccngk9q1k2qa0mwd63cycwrzdkvzg4nn6ikq6w7wnp" }, "stable": { "version": [ 0, 4, - 1 + 2 ], - "commit": "1574c504d9810f34a85e2ff49b6f7648c2be5f27", - "sha256": "03l6zkkxhbcxj5i13hzjv6ypmzaw70zqqagh7ix1kdn33kpp37jj" + "commit": "80b9c5e7f464c70cfa423e5ee3237581bc69d643", + "sha256": "1v1p85wk73nfsvv66qf90flgf9dqhmv15z1r7q4zmc4ifklqn08m" } }, { @@ -38957,8 +41008,8 @@ "cl-lib", "dash" ], - "commit": "5a4e3efdf775755c1bbefcfe4b461c1166d81d7d", - "sha256": "00q7l4a3c0ay6g5ff9bfa2qgkiswsyh4s6pqnpg0zpzhvv5710f5" + "commit": "58f6edc18510d871e4f5ef63ef60665cbc204e96", + "sha256": "04mk5wi2i4mx58mfzl4zk10lm58yliczsw5vpxqmikz8gbripqqx" }, "stable": { "version": [ @@ -38989,21 +41040,6 @@ "sha256": "14c09m9p6556rrf0qfad4zsv7qxa5flamzg6fa83cxh0qfg7wjbp" } }, - { - "ename": "grin", - "commit": "855ea20024b606314f8590129259747cac0bcc97", - "sha256": "0rak710fp9c7wx39qn4dc9d0xfjr5w7hwklxh99v1x1ihkla9378", - "fetcher": "bitbucket", - "repo": "dariusp686/emacs-grin", - "unstable": { - "version": [ - 20110806, - 658 - ], - "commit": "f541aa22da52b8ff2f7af79bc5e4b58b9f5db8be", - "sha256": "0rqpgc50z86j4waijfm6kw4zjmzqfii6nnvyix4rkd4y3ryny1x2" - } - }, { "ename": "grip-mode", "commit": "de97f1c15b3ab53ca5e314b679c289705302bb64", @@ -39012,20 +41048,20 @@ "repo": "seagle0128/grip-mode", "unstable": { "version": [ - 20191022, - 808 + 20200312, + 1136 ], - "commit": "8fd4102a25c2dd9ccbbee082bc61d8f44eb5ed74", - "sha256": "0ylmn54znwhqv9m88zizgzi08ks0vxf1vxqsk4mk2a94ycw1xfkc" + "commit": "9615c4774727a719d38313a679d70f2a2c6aca68", + "sha256": "01imyi1l33ng78m6c5g4pma5gy4j7jy7dwmqwsqgwbws08qdbwgr" }, "stable": { "version": [ 2, - 1, - 2 + 2, + 1 ], - "commit": "8fd4102a25c2dd9ccbbee082bc61d8f44eb5ed74", - "sha256": "0ylmn54znwhqv9m88zizgzi08ks0vxf1vxqsk4mk2a94ycw1xfkc" + "commit": "9615c4774727a719d38313a679d70f2a2c6aca68", + "sha256": "01imyi1l33ng78m6c5g4pma5gy4j7jy7dwmqwsqgwbws08qdbwgr" } }, { @@ -39094,15 +41130,15 @@ "repo": "Groovy-Emacs-Modes/groovy-emacs-modes", "unstable": { "version": [ - 20190930, - 2356 + 20191031, + 2256 ], "deps": [ "dash", "s" ], - "commit": "09226f852cb3167f23012df8f77318037f5fe9c5", - "sha256": "1gq8zwnyqxdf2i9agwky9nhc0nz6g7y0jfi8vjvxgak8dyilrfma" + "commit": "cafdd98e06a3bbff213f3ccb163de2c42d412b66", + "sha256": "07809alyxind4n0rb1h3x19hgq7ihpn128xljlz38d9xvp0r48z3" }, "stable": { "version": [ @@ -39124,11 +41160,11 @@ "repo": "rexim/gruber-darker-theme", "unstable": { "version": [ - 20180529, - 712 + 20200227, + 2238 ], - "commit": "c7687ec0511941db1371dcd70b31061d74aa5668", - "sha256": "1dn4vb07wrnc6w94563isx8jfv6vbpp04kh0jfqjmc7nbmyzpaf2" + "commit": "7f95ce96079eb22b9214435ed25c5af98f60b482", + "sha256": "1zdqbjhcb8b1f4szzjmkzhpxcg17dqfp91882h95f1x9c2an5gdw" }, "stable": { "version": [ @@ -39179,14 +41215,14 @@ "repo": "greduan/emacs-theme-gruvbox", "unstable": { "version": [ - 20190720, - 337 + 20200307, + 1522 ], "deps": [ "autothemer" ], - "commit": "37548041b6c541b69ab6d18b53f7513781a1f2b3", - "sha256": "08cmwspkijrfr1k0p7ady44vxjv27yjp7kj3achp024j4g2jvybc" + "commit": "647796a42951a807ee1694a648442b3d83057e43", + "sha256": "0j0w6g0pr1p90wjyrwl21y0hlvjms8ba4yw90sd89lnzn7ncscm8" }, "stable": { "version": [ @@ -39285,8 +41321,8 @@ 20191007, 1500 ], - "commit": "cb026a595de8a9244b16e06876f10c60dce18676", - "sha256": "12az34hx714y0wqhxllpc8nk1rwh8s4lhhnvkzbqwki94qyqm87c" + "commit": "338e6dca6d749cfc85195907bba593f9f6855715", + "sha256": "1nl2ji5wvmfzchxpnmsgxn4v2lybyymyyh99lw3riqg6gb0phl9l" } }, { @@ -39297,14 +41333,14 @@ "repo": "tmalsburg/guess-language.el", "unstable": { "version": [ - 20190325, - 1436 + 20200326, + 1725 ], "deps": [ "cl-lib" ], - "commit": "e64d88f287a547198e4c96e2fff543e103f2b456", - "sha256": "0dmbr7gylnc1dsjaldfw51nmli66lizs1w5a8p1zacpf7w5kf7x2" + "commit": "f4ce91eba3c479d08fedf0a3ced6c1265a7838ca", + "sha256": "0z7agqi5sgjjidhmnrv7615737xk7p1s6pdhr6swjcr117dq44fm" } }, { @@ -39379,8 +41415,8 @@ "repo": "alezost/guix.el", "unstable": { "version": [ - 20190913, - 1624 + 20200219, + 1821 ], "deps": [ "bui", @@ -39389,15 +41425,14 @@ "geiser", "magit-popup" ], - "commit": "24918011d2f1a78d63f39bf0c462b7dab190629a", - "sha256": "1maag50nbgwygc6w7lbna1ml20f3k4dvxzjm3fgdqmfypi5ag891" + "commit": "3b5990618e70494aa89ff18c58ff24f369005323", + "sha256": "1w5dhacl451cbi8s6y49dcgzkxyai9ggrkpkf16kpmgwf7j0rapk" }, "stable": { "version": [ 0, 5, - 1, - 1 + 2 ], "deps": [ "bui", @@ -39406,8 +41441,8 @@ "geiser", "magit-popup" ], - "commit": "c4c96663fefe7e007c372e7d24d6e7016b70e4ee", - "sha256": "1730q2dm84f15ycjdf3dgl2j8770mhr6qnyzxgac3zzkjr8pyvq7" + "commit": "c2796e68868c91253b6aca422a9ae07363aa03a9", + "sha256": "0i0bvv3wd3fd22mffa62076mi1cnzwyphibqiimll23kngg507b2" } }, { @@ -39557,14 +41592,14 @@ "repo": "hhvm/hack-mode", "unstable": { "version": [ - 20190809, - 1810 + 20191218, + 1628 ], "deps": [ "s" ], - "commit": "6ccad0581775eb5a777382b37175c1ec230ae5cb", - "sha256": "0yixpz25bi7cbji7jk2azkpbnxvc56fymsg2zxvwjrb8dh6gwapk" + "commit": "fd6a661b091490920804d043303596f9e60a5dd7", + "sha256": "1x4nymp53rdm1d0jjkz0mha4d8y8wzmakf65d56fn5mnziqh2l5d" }, "stable": { "version": [ @@ -39578,30 +41613,6 @@ "sha256": "1s06m8bam7wlhqw0gbc443lfrz51mj05pzvbmjzqadqn4240v4jw" } }, - { - "ename": "hack-time-mode", - "commit": "6481dc9f487c5677f2baf1bffdf8f2297185345e", - "sha256": "0vz72ykl679a69sb0r2h9ymcr3xms7bij1w6vxndlfw5v9hg3hk5", - "fetcher": "gitlab", - "repo": "marcowahl/hack-time-mode", - "unstable": { - "version": [ - 20190827, - 956 - ], - "commit": "74465859154314228482b4f41fcda726c82c71c9", - "sha256": "1q9k7r09y532fcvzjkgcqnk5hdms55hrshawgxhiz3qwxxc3svsi" - }, - "stable": { - "version": [ - 0, - 1, - 1 - ], - "commit": "df8e86ab04beb655bf5b3860f8bea41cf1fbc3eb", - "sha256": "1n4kirb65r4s8k2kiga857fk8zylk14ibq0k2vdx5b8axbz71ggh" - } - }, { "ename": "hacker-typer", "commit": "3416586d4d782cdd61a56159c5f80a0ca9b3ddf4", @@ -39789,6 +41800,24 @@ "sha256": "1njrpb1s2v9skyfbgb28clrxyvyp8i4b8kwa68ynvq3vjb4fnws6" } }, + { + "ename": "handle", + "commit": "da5debb55f7b34dcbcea81675bddd872bdb7fd69", + "sha256": "032rfk3hiv0ps0p332gkf67vqs5nif8hhraiv3zlybxblzhcxaw1", + "fetcher": "gitlab", + "repo": "jjzmajic/handle", + "unstable": { + "version": [ + 20191029, + 856 + ], + "deps": [ + "parent-mode" + ], + "commit": "e27b2d0b229923f81a2c8afa3e9c65ae9e84a0da", + "sha256": "1w77p85ww1fjqgybi75s9bayqxyfvy040nr0gvsv3lmkri2mhglm" + } + }, { "ename": "handlebars-mode", "commit": "855ea20024b606314f8590129259747cac0bcc97", @@ -40014,19 +42043,19 @@ "repo": "haskell/haskell-mode", "unstable": { "version": [ - 20190926, - 313 + 20200315, + 140 ], - "commit": "1bee161d3cea973d4ee3ff7acf980bf2cdeb83e2", - "sha256": "1vjxqqa08cxhsk69rcf0kn7bsfp6c5a9jax777h7ljc39fzcpf8q" + "commit": "7032966ee76b23520001af916d9184b4a2d7a689", + "sha256": "0mk2fw33j1k8m6w0b6p15n7zl52kbwjda0p2zzvxbhlk3cvqmgd0" }, "stable": { "version": [ - 16, + 17, 1 ], - "commit": "d2ea5239bf02f3917a78a5c2dcbc5b6f6dd1b359", - "sha256": "1qk36y0v9fzass6785il65c6wb5cfj4ihhwkvgnzmbafpa8p4dvq" + "commit": "17357211a16394884a981fe0c062f94250b40300", + "sha256": "0izcasi2v02zh08c863h43m8mmsldzy8pck43cllrfn0zf24v2qn" } }, { @@ -40112,8 +42141,8 @@ "deps": [ "avy-menu" ], - "commit": "e5eb3cb72a3e86be9a682169885194941ce8ef40", - "sha256": "0mhlp053s7j632pckzsj585wkda6akg1pq70r4wj78mwmcrbm6qh" + "commit": "4a0d1d9beb3be8ff4a1857eb920c916734dcc8e1", + "sha256": "1sp07lqvxxcl625qr9ka7idvci3j0p77ll90pwzykr5cs7r3lzl2" }, "stable": { "version": [ @@ -40143,8 +42172,8 @@ "f", "magit-popup" ], - "commit": "98bd4046a9fca6eb98a7466694871325d787ca57", - "sha256": "1jd69blrwafc3x3l663zwfck07nrvij1p8xsprzjvx3hzyci7bdb" + "commit": "9ef133ed831a95a2b9990a46a3c57f1918d0274f", + "sha256": "08h795hplyy7d0yqxvdfx3ylb7gkjplyriyq0w9dsv6ggvmc5hhl" }, "stable": { "version": [ @@ -40199,17 +42228,17 @@ }, { "ename": "haxe-mode", - "commit": "6c2287c7b4c543e92ccfab120388b2c05174d2db", - "sha256": "14grb7lcaw57rzqlyy4ja10068r59i2ifxk0q177p4yg8rm519cy", + "commit": "31ab3513c2d048ee6d8277916e29987f981b81ca", + "sha256": "1h5v0vza8pyqf76hmzwgavh2zzrzwfjl4xdcc469bb6c59gzvhmr", "fetcher": "github", - "repo": "jcs-elpa/haxe-mode", + "repo": "emacsorphanage/haxe-mode", "unstable": { "version": [ - 20190703, - 619 + 20200204, + 1015 ], - "commit": "ed99906a808ff4a00bf6b0e231c30c240a563954", - "sha256": "1lnx8qrqix2n3bvw8blqc7msghfy1w1dzyga9s8c9z5pawqrbm85" + "commit": "9449b2b8bc733faa130d3ab68b97ac1ae1db3bff", + "sha256": "1xpjwzd8vd41hs3i3yy4l1w0q0pk8s12bgky5q524n03pdq4n756" }, "stable": { "version": [ @@ -40280,17 +42309,17 @@ }, { "ename": "hcl-mode", - "commit": "66b441525dc300b364d9be0358ae1e0fa2a8b4fe", - "sha256": "1wrs9kj6ahsdnbn3fdaqhclq1ia6w4x726hjvl6pyk01sb0spnin", + "commit": "979fe43b4f9325a4fccad6998763af2b44431b30", + "sha256": "0kvyvjv19fag60vv9qv0j91jmj8nilamcwqd1mj70qcj35pwlp60", "fetcher": "github", - "repo": "syohex/emacs-hcl-mode", + "repo": "purcell/emacs-hcl-mode", "unstable": { "version": [ - 20170107, - 827 + 20200315, + 2129 ], - "commit": "0f2c5ec7e7bcf77c8548e8cac8721ea935ca1b5e", - "sha256": "0qggby20h8sir4cs5af9y6b2cibix3r067sadygsrvx9ml17indw" + "commit": "c3d1158ad1a64f06aa8986ab1cdea6b7fbdd4bf7", + "sha256": "0qza5pgpzcabik3592dk25glsv9zcg84pn1jzm43f9b1j9w5iv4i" }, "stable": { "version": [ @@ -40348,21 +42377,21 @@ "repo": "emacs-helm/helm", "unstable": { "version": [ - 20191023, - 1610 + 20200325, + 757 ], "deps": [ "async", "helm-core", "popup" ], - "commit": "1341b84aedd972e01396036ce4d496e70282dcac", - "sha256": "0nimmkvlvh811swzhynwddd2y06jx27a1s0cl5zmc9y5r4ycpxns" + "commit": "0181b7ef468def6ef5547c7241b5c4c854816166", + "sha256": "09yvc6jpcb93fwa5blgzaqpk3f3v5h6m2hxajih1y6fxrdaxgnhq" }, "stable": { "version": [ 3, - 5, + 6, 0 ], "deps": [ @@ -40370,8 +42399,8 @@ "helm-core", "popup" ], - "commit": "610d06e4c170b76ba5a687fe479842cd18420b0a", - "sha256": "07bijcnfkv60l3swasxv53x32l6glds05mxnbb3xbnmkgm1pm9if" + "commit": "ac3c49be00df1efecc76ef0b33db2884039579b8", + "sha256": "0miq2q52pbicijp7pmj0widk252qixswywc03d120s4hya2b7vd7" } }, { @@ -40395,10 +42424,10 @@ }, { "ename": "helm-ack", - "commit": "258d447778525c26c65a5819ba1edc00e2bb65e5", - "sha256": "1a8sc5gd2g57dl9g18wyydfmihy74yniwhjr27h7vxylnf2g3pni", + "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b", + "sha256": "124w7grwindyv86xfshfm70h0xfq29ns067pchk8dcbjbgh9yl7b", "fetcher": "github", - "repo": "syohex/emacs-helm-ack", + "repo": "emacsorphanage/helm-ack", "unstable": { "version": [ 20141030, @@ -40465,31 +42494,31 @@ }, { "ename": "helm-ag", - "commit": "81f0f525680fea98e804f39dbde1dada887e8821", - "sha256": "050qh5xqh8lwkgmz3jxm8gql5nd7bq8sp9q6mzm2z7367qy4qqyf", + "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b", + "sha256": "0jzfycbaz88r6scsiw74prcnbvilsaphljdys6i5k9g5rhn5sxh5", "fetcher": "github", - "repo": "syohex/emacs-helm-ag", + "repo": "emacsorphanage/helm-ag", "unstable": { "version": [ - 20170209, - 1545 + 20200328, + 533 ], "deps": [ "helm" ], - "commit": "2fc02c4ead29bf0db06fd70740cc7c364cb650ac", - "sha256": "1gnn0byywbld6afcq1vp92cjvy4wlag9d1wgymnqn86c3b1bcf21" + "commit": "ad3ef038584007fbf1b7d6e727be1f18e39a8730", + "sha256": "06gjbc1rkxg13nb2hr3gm65zyzpxv77pvsz7b7c9i3qfw782zsax" }, "stable": { "version": [ 0, - 58 + 59 ], "deps": [ "helm" ], - "commit": "39ed137823665fca2fa5b215f7c3e8701173f7b7", - "sha256": "0a6yls52pkqsaj6s5nsi70kzpvssdvb87bfnp8gp26q2y3syx4ni" + "commit": "79373d7f1616d175a5e0730e1e0c3855f04bd945", + "sha256": "0vsz2b5qw4qahlf74059z4p1grinhfz28f0psw4c3qf4jasv3b9j" } }, { @@ -40615,8 +42644,8 @@ "repo": "tmalsburg/helm-bibtex", "unstable": { "version": [ - 20190918, - 1116 + 20191028, + 1313 ], "deps": [ "biblio", @@ -40627,8 +42656,8 @@ "parsebib", "s" ], - "commit": "5a26b35c3fa223d4c74262137f34bb2f325c4411", - "sha256": "0nw35f2qr5pqswz1rbkgwvd2wmvg8hzjf419w9iffx1m858k99rf" + "commit": "d4471232be26793fbf56c0ac3690b5f537c378b9", + "sha256": "1bkzhic6qckb267025il1r3xcpz99kisphxiafni1pxvf9jafr0j" }, "stable": { "version": [ @@ -40947,14 +42976,14 @@ "repo": "xuchunyang/helm-chrome-history", "unstable": { "version": [ - 20190714, - 324 + 20191031, + 1233 ], "deps": [ "helm-core" ], - "commit": "5c37ac3f1abdb02af80fc57878b22d872dfecc80", - "sha256": "0sjxjizcj4znhx64pvah6cdg5wy9v4zgrvj691y3fqw2ydb3467d" + "commit": "f9002d4c12df65a99830376b126dbbeae3ef2148", + "sha256": "18vgy5kaj0cmrar7ahcxiy9jva006zd7yfcgyi5h99yv62g76j72" } }, { @@ -41203,26 +43232,26 @@ "repo": "emacs-helm/helm", "unstable": { "version": [ - 20191013, - 626 + 20200306, + 1417 ], "deps": [ "async" ], - "commit": "1341b84aedd972e01396036ce4d496e70282dcac", - "sha256": "0nimmkvlvh811swzhynwddd2y06jx27a1s0cl5zmc9y5r4ycpxns" + "commit": "0181b7ef468def6ef5547c7241b5c4c854816166", + "sha256": "09yvc6jpcb93fwa5blgzaqpk3f3v5h6m2hxajih1y6fxrdaxgnhq" }, "stable": { "version": [ 3, - 5, + 6, 0 ], "deps": [ "async" ], - "commit": "610d06e4c170b76ba5a687fe479842cd18420b0a", - "sha256": "07bijcnfkv60l3swasxv53x32l6glds05mxnbb3xbnmkgm1pm9if" + "commit": "ac3c49be00df1efecc76ef0b33db2884039579b8", + "sha256": "0miq2q52pbicijp7pmj0widk252qixswywc03d120s4hya2b7vd7" } }, { @@ -41267,14 +43296,14 @@ "repo": "emacsorphanage/helm-css-scss", "unstable": { "version": [ - 20140627, - 25 + 20191230, + 1549 ], "deps": [ "helm" ], - "commit": "ab8348aa98e0daa2f1b771e35bdb06bfacbe5016", - "sha256": "01a3pahpsxb7d15dkfgxypl7gzqb4dy4f36lmid1w77b9rhs6nph" + "commit": "48b996f73af1fef8d6e88a1c545d98f8c50b0cf3", + "sha256": "1xadlsg4c52anbk3dqz6blkrid8lzsd28rw402gy17vnk7lwg9i7" } }, { @@ -41285,16 +43314,16 @@ "repo": "danlamanna/helm-ctest", "unstable": { "version": [ - 20180821, - 1005 + 20191031, + 1435 ], "deps": [ "dash", "helm-core", "s" ], - "commit": "0c73689692a290f56080e95325c15362e90d529b", - "sha256": "143vyd64w3gycc68jcsji474nz2ggda58hgwq6hyiwb7s0gm1gd3" + "commit": "2a29cfb4ec583da247fa2ae7bac88790b1223e40", + "sha256": "11am95crkf409w3ph17x55v0xx2gy4spb4qc6z5f7vbxgwyaa4a6" } }, { @@ -41386,14 +43415,14 @@ "repo": "emacs-helm/helm-dictionary", "unstable": { "version": [ - 20160817, - 2033 + 20191110, + 2202 ], "deps": [ "helm" ], - "commit": "805ce850d4cbe811227d9c9b16cc51f652198f3f", - "sha256": "0ambb6i8ipz5y0mnc8jd07j3iiwb7ah87pw8x8pi3phv1r80l0k1" + "commit": "6a21ac1ba424ffa87b3b3e1b53d0fdd529844a28", + "sha256": "1qpcly4v7yf6ncp951gl1c18riln86xgyasf66n56qj26mfq8bhq" } }, { @@ -41543,16 +43572,16 @@ "repo": "emacs-helm/helm-emms", "unstable": { "version": [ - 20191001, - 1414 + 20200322, + 1309 ], "deps": [ "cl-lib", "emms", "helm" ], - "commit": "77f5dab62f9962e376dad99452f29edd0b5dc75a", - "sha256": "108ksri1a5hmfjbflqmm486zv3j0sy89xsdjs39q3xrr1s4gbc4q" + "commit": "37e5aa029abfa5a5c48636314de8157142944fa2", + "sha256": "0r1ai6xhzayyik30w2sx9n62bxxwm12vfmjspv0daqif9az8y3vg" }, "stable": { "version": [ @@ -41730,15 +43759,28 @@ "repo": "emacs-helm/helm-exwm", "unstable": { "version": [ - 20180827, - 837 + 20200325, + 1022 ], "deps": [ "exwm", "helm" ], - "commit": "e21c6ffabadd2fe8d6c7805b6027cc59a6f914e9", - "sha256": "11fyqk3h9cqynifc2zzqn0czrcj082wkdg1qhbj97nl4gcj787rl" + "commit": "00ddb4d2a127087a0b99f0a440562bd54408572d", + "sha256": "0g4k01ps14bp2az8v6dcag9llg045k2b4kdis81xx4lvw76znr9v" + }, + "stable": { + "version": [ + 0, + 0, + 2 + ], + "deps": [ + "exwm", + "helm" + ], + "commit": "00ddb4d2a127087a0b99f0a440562bd54408572d", + "sha256": "0g4k01ps14bp2az8v6dcag9llg045k2b4kdis81xx4lvw76znr9v" } }, { @@ -41816,15 +43858,15 @@ "repo": "emacs-helm/helm-firefox", "unstable": { "version": [ - 20161202, - 1317 + 20200306, + 1408 ], "deps": [ "cl-lib", "helm" ], - "commit": "b290734807ee68e7a7aface2af781d86e1fd5950", - "sha256": "02m05fy5qf5xfd5dh402pibbzwzmcfgqymqigkbdfyjbfbljl3zx" + "commit": "7065e01188ed17b86a7b4f01b95ace575a15eef1", + "sha256": "0kk7d73hcrxcnsrq803zp5lh1hyk30nahb6wdlalqvkczksgpkml" }, "stable": { "version": [ @@ -41839,6 +43881,37 @@ "sha256": "08mjsi2f9s29fkk35cj1rrparjnkm836qmbfdwdz7y51f9varjbs" } }, + { + "ename": "helm-fish-completion", + "commit": "0e73cbca73b5be3fa107c045083c765b5dc5d9e8", + "sha256": "1farkigcif15yb8nz6kb99hc9qf7kpf39z2vmsjp62c936rrsxls", + "fetcher": "github", + "repo": "emacs-helm/helm-fish-completion", + "unstable": { + "version": [ + 20191230, + 1717 + ], + "deps": [ + "fish-completion", + "helm" + ], + "commit": "b579193c9eca37e45ac54b66114032e9fb78aa69", + "sha256": "1aydd2f0xmyrkl9hhxcrgzgrpl2qna1krzgaprw0y7gcvg0p09b4" + }, + "stable": { + "version": [ + 0, + 2 + ], + "deps": [ + "fish-completion", + "helm" + ], + "commit": "dff0fdfdbf70ad41fa2da031197836a84384e635", + "sha256": "089gp2k22xwn33z8brpyb7r18vpyralq2cwxj1xsc8b2sj9s4896" + } + }, { "ename": "helm-flx", "commit": "f1418d260f34d698cec611978001c7fd1d1a8a89", @@ -41944,21 +44017,21 @@ }, { "ename": "helm-fuz", - "commit": "7b411e46e9246beb36acb3e468980e84c77c6015", - "sha256": "1j3fpmqn526pkrrms578fm470svqd2yran4mpxjx0xps45nsklsc", + "commit": "2d3139563902bb1cb8aa48a517747f12a1ca1746", + "sha256": "1c6mm698kzk0armpla4i5xn5fh8pwhim6gj4cblk0wwf2av2r58b", "fetcher": "github", - "repo": "cireu/fuz.el", + "repo": "rustify-emacs/fuz.el", "unstable": { "version": [ - 20191024, - 1133 + 20200104, + 524 ], "deps": [ "fuz", "helm" ], - "commit": "56f08351c2ae91e010f6a5e810f11ae74d76deb0", - "sha256": "15fymhj82phj407bcnc64p16kv3nc860xbsnlnj7i8qvcnl3jpdl" + "commit": "0b6b64cebde5675be3a28520ee16234db48d3b8b", + "sha256": "1bddjr3rpmvkrljq5ipjm42d59m2897cpfhmiah3rcb4c6ra40m1" }, "stable": { "version": [ @@ -42351,20 +44424,20 @@ }, { "ename": "helm-gtags", - "commit": "81f0f525680fea98e804f39dbde1dada887e8821", - "sha256": "1kbpfqhhbxmp3f70h91x2fws9mhx87zx4nzjjl29lpl93vf8xckl", + "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b", + "sha256": "0qcn6hmm26irlljcq93c6ap0k1kihdakr2jpgzvdbm8km2cxrm47", "fetcher": "github", - "repo": "syohex/emacs-helm-gtags", + "repo": "emacsorphanage/helm-gtags", "unstable": { "version": [ - 20170116, - 529 + 20200321, + 1456 ], "deps": [ "helm" ], - "commit": "108e93d0d099ebb7b98847388f368311cf177033", - "sha256": "0hfshcnzrrvf08yw4xz5c93g9pw6bvjp2bmv0s6acrsjqgwhx158" + "commit": "ff4329fec2cc1f53b404054ddab4cd16faef7241", + "sha256": "14jjjk258hg2d47d8fgg6qb410ij16400anx5kcghi2680a92f2w" }, "stable": { "version": [ @@ -42555,10 +44628,10 @@ }, { "ename": "helm-ispell", - "commit": "edc42b26027dcd7daf0d6f2bd19ca4736fc12d6d", - "sha256": "0qyj6whgb2p0v231wn6pvx4awvl1wxppppqqbx5255j8r1f3l1b0", + "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b", + "sha256": "14slvcjyqd1ryymh63an7r2z1882dybwpq73bb50xkwrk7rs0389", "fetcher": "github", - "repo": "syohex/emacs-helm-ispell", + "repo": "emacsorphanage/helm-ispell", "unstable": { "version": [ 20151231, @@ -42729,8 +44802,8 @@ "helm", "lean-mode" ], - "commit": "b5ba739f68ef731c03247bf6db2708502c8ac46c", - "sha256": "1dx0a76l7w3ck23sdjymigk1hycqiawfwv24yz6wqyy74f1pcyjf" + "commit": "65b55b1711fb61129312044d5ac7e6a2c2ee245c", + "sha256": "1zmw8950qhry2ixk2ng0pg4j0vwx11nvjlrpab9jg6x47ys9j65n" } }, { @@ -42797,14 +44870,14 @@ "repo": "emacs-helm/helm-ls-git", "unstable": { "version": [ - 20190630, - 737 + 20191127, + 510 ], "deps": [ "helm" ], - "commit": "ab825ea050f88babf6f8d340424f9359f3c6036f", - "sha256": "1i71q2d7bv7hc6793is7c1qcykadad5ggpabspac8wg9db360g2b" + "commit": "18c53b62bc758b9d8ad4e94a94f58d143ccb29db", + "sha256": "0r4dj6422g2zsbm2kig369j39lw4d68zpcr2xr02p02sfyhg1c0f" }, "stable": { "version": [ @@ -42876,16 +44949,16 @@ "repo": "emacs-lsp/helm-lsp", "unstable": { "version": [ - 20190423, - 548 + 20200103, + 1659 ], "deps": [ "dash", "helm", "lsp-mode" ], - "commit": "3a58ca4cfd94b9ab1e15e819d3b16ef568e8889b", - "sha256": "0wh5zai3s17ss2q8wcdd6d87hv1h3nbyrxxs4js9cas8m6y2ssjv" + "commit": "6f62659cc528b7e37ffcc8fb356633acd7031be8", + "sha256": "1gf3pzrcxrymlj677mghxf4yrqiqa90y3ip1g1f1h186wnwa2vcg" } }, { @@ -42896,16 +44969,30 @@ "repo": "montag451/helm-lxc", "unstable": { "version": [ - 20190116, - 2050 + 20200323, + 816 ], "deps": [ "cl-lib", "helm", "lxc-tramp" ], - "commit": "a4e17dda329ec39a3dac5751ddcef1145b3d91c1", - "sha256": "1z6d752682b21ydp7s5a9jkhjqw7nbascv21qcs9418ydisl8q8d" + "commit": "37fe2d7ed97967edf59a3b68b1434910516ae24f", + "sha256": "1xnkwmdcdjfvslahhslw2xnlcym9fvb3m8384c455bas6s180qxh" + }, + "stable": { + "version": [ + 0, + 2, + 0 + ], + "deps": [ + "cl-lib", + "helm", + "lxc-tramp" + ], + "commit": "02812daf09d5ffb02abef7a8e0fa1f7b7c472d67", + "sha256": "14x69laf6mfz766w6lrzj5a430jr0lrilk60ywc6i1wlpcs2v10v" } }, { @@ -42916,11 +45003,11 @@ "repo": "abo-abo/helm-make", "unstable": { "version": [ - 20190729, - 1221 + 20200228, + 1742 ], - "commit": "6f3d9a0feed47c1d6a9b82baef2e2663ac496514", - "sha256": "0xgx1qr3ypnqnv38850zxak7rga9mn3d428szz80r6438nl8hlb0" + "commit": "a52b3a34ade00e695a412bc0c5873d4f4d22c323", + "sha256": "1jqihwh24f190zsc3a2xc7ja6j6q3nl742a0m9d6fiw28aijg34f" }, "stable": { "version": [ @@ -43085,8 +45172,8 @@ "helm", "nixos-options" ], - "commit": "45c8d90748304c90e1503c9fa8db0443f3d4bd89", - "sha256": "0hsr8acsvfb42drb8f2wkpgqyh3csny7l82qv4k2l83xf022cs1d" + "commit": "977b9a505ffc8b33b70ec7742f90e469b3168297", + "sha256": "07vidk3bnby1ch51i67llfdx2q8xc4ax5hvlrc3f72y9gkcpir4x" }, "stable": { "version": [ @@ -43135,10 +45222,10 @@ }, { "ename": "helm-open-github", - "commit": "81f0f525680fea98e804f39dbde1dada887e8821", - "sha256": "1wqlwg21s9pjgcrwr8kdrppinmjn235nadkp4003g0md1d64zxpx", + "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b", + "sha256": "1lqjaprgybs4svnrgxvnbbzrkibgkf1zvhbg4ipiljz7h1byzqs7", "fetcher": "github", - "repo": "syohex/emacs-helm-open-github", + "repo": "emacsorphanage/helm-open-github", "unstable": { "version": [ 20170220, @@ -43172,14 +45259,14 @@ "repo": "emacs-helm/helm-org", "unstable": { "version": [ - 20190819, - 617 + 20200311, + 633 ], "deps": [ "helm" ], - "commit": "542dda7bc9a3b9dfb439e4f8a1e5f60cfb6cc256", - "sha256": "1xa32w80icrykpyfb89fhb0s4l7ysi0sc7f7lfwqz5najwbgqipl" + "commit": "b7a18dfc17e8b933956d61d68c435eee03a96c24", + "sha256": "0sbk8c05v28xz7mdpzrlawn5iwf3hkkr1fj8lsi861l4fhjbmcap" }, "stable": { "version": [ @@ -43210,8 +45297,8 @@ "helm", "s" ], - "commit": "dbda48031bad6fec1e130ee6e0d1a3bfea8ad8b8", - "sha256": "058zvh7cdall7dl3xay9ibcjvs13fbqp8fli3lz980pinmsds3r2" + "commit": "abc14bb85427a6585aa354894eaef6926881d585", + "sha256": "1ggj84b8wgd8xj6a442wfccvyaqg605zpikx19vqzwymaqbay85f" }, "stable": { "version": [ @@ -43343,21 +45430,21 @@ }, { "ename": "helm-perldoc", - "commit": "81f0f525680fea98e804f39dbde1dada887e8821", - "sha256": "1qx0g81qcqanjiz5fxysagjhsxaj31g6nsi2hhdgq4x4nqrlmrhb", + "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b", + "sha256": "1xl075bg35lc48zxnwbvyr7dqcz8cxk3v87i9v506kqwfmfpiz95", "fetcher": "github", - "repo": "syohex/emacs-helm-perldoc", + "repo": "emacsorphanage/helm-perldoc", "unstable": { "version": [ - 20160918, - 556 + 20200315, + 1716 ], "deps": [ "deferred", "helm-core" ], - "commit": "1979f9f67814c11ec9498502237c89a5e1153100", - "sha256": "0fvjw8sqnwnjx978y7fghvgp5dznx31hx0pjp4iih01xa1hcwbnc" + "commit": "6f3526f07f3df3059dbde779f8e681f5f1fee6ea", + "sha256": "1g7f2vdvzh9qhk8lviii86w7cb06a60kz6gvv8gnbqx88mndqclq" }, "stable": { "version": [ @@ -43432,15 +45519,15 @@ "repo": "tumashu/helm-posframe", "unstable": { "version": [ - 20191013, - 1027 + 20200118, + 2302 ], "deps": [ "helm", "posframe" ], - "commit": "86d6e6e4c32839dec96ef51ae3917d45259165a4", - "sha256": "0byb477lxxyys9q1kwyh37y46jlyk7j1q3xq6cllq47k2gnaix72" + "commit": "7970f9397ba7d148e590e4ffb340bf6c7c0602fc", + "sha256": "0106fsdzp3911spylrixqkgpnjnfg491f0rmbqmn4hc1shnc2sbk" } }, { @@ -43621,10 +45708,10 @@ }, { "ename": "helm-pydoc", - "commit": "81f0f525680fea98e804f39dbde1dada887e8821", - "sha256": "1sh7gqqiwk85kx89l1sihlkb8ff1g9n460nwj1y1bsrpfl6if4j7", + "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b", + "sha256": "0a2vn7xgvcil8vp40jiljff83hwb2ysb240amd8darxbfxz1j9mi", "fetcher": "github", - "repo": "syohex/emacs-helm-pydoc", + "repo": "emacsorphanage/helm-pydoc", "unstable": { "version": [ 20160918, @@ -43850,10 +45937,10 @@ }, { "ename": "helm-robe", - "commit": "e7018f57f6f0e4bd71e172ae23c050b44276581b", - "sha256": "1gi4nkm9xvnxv0frmhiiw8dkmnmhfpr9n0b6jpidlvr8xr4s5kyw", + "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b", + "sha256": "143azbrj32mk0xv0i7wpvwcj4lqvphbjj3rbcpwnx76rywi3iqp7", "fetcher": "github", - "repo": "syohex/emacs-helm-robe", + "repo": "emacsorphanage/helm-robe", "unstable": { "version": [ 20151209, @@ -43905,27 +45992,27 @@ "repo": "Andersbakken/rtags", "unstable": { "version": [ - 20170813, - 411 + 20191222, + 920 ], "deps": [ "helm", "rtags" ], - "commit": "f2633f565fc5e7e6958993ef105225f4e68e43ba", - "sha256": "1bjgr7wa82ccrc25r7agfaq3iz7xlp1qchvkmkx3xy59jv4yafjz" + "commit": "d370c09007d299dc6b6aae719bf728b95dd426c5", + "sha256": "0hakpd1dwhn2nkfhx4hli0l7hf3p1g8vpyrrczq45smfsz73d96x" }, "stable": { "version": [ - 3, - 23 + 2, + 38 ], "deps": [ "helm", "rtags" ], - "commit": "7169ed577d676690a3c6f0025b54e8477d80eacf", - "sha256": "1i94dizg3wvkvq8c2pf5bzkx8zwzcfi4p3l73c779y145bygssnq" + "commit": "9687ccdb9e539981e7934e768ea5c84464a61139", + "sha256": "1r6l7dgr2ch586zrdi5l8fhdj4qdva8ldz7cjvi2byc2pd2xs8rx" } }, { @@ -44101,6 +46188,40 @@ "sha256": "0mrpjhpijdrq353fnfvdj9l9xfsz390qlcvifcair9732ma7i8l0" } }, + { + "ename": "helm-sly", + "commit": "4dbeeaca23d938116bf23177a71f38b16276d2c6", + "sha256": "1ikrn07b2glyix6n08v6yydiisi17acfmv1cpbq6is5f3zwqcgmx", + "fetcher": "github", + "repo": "emacs-helm/helm-sly", + "unstable": { + "version": [ + 20191104, + 1054 + ], + "deps": [ + "cl-lib", + "helm", + "sly" + ], + "commit": "b1567c27c0b421b9e25e350f0c83b9c7fe0fee6b", + "sha256": "0ihcqysz5cvn94rrvjz5l4whzmxcjrfrinas180x8iycpyvzkwk6" + }, + "stable": { + "version": [ + 0, + 4, + 1 + ], + "deps": [ + "cl-lib", + "helm", + "sly" + ], + "commit": "9a4d91ba738ca06ceab2dea3c1e09fd45a67d488", + "sha256": "0b2dx9nzh5233lkix3lz81c9cv626lk2hjpcjiikwvyp6y0q92ys" + } + }, { "ename": "helm-smex", "commit": "85568bd732da952053148e07b95e53f7caf5f62c", @@ -44219,6 +46340,26 @@ "sha256": "037gri2r9y135av8gbgi9d8k90qs8jlax0bimzcbwdkyhibhzrcp" } }, + { + "ename": "helm-switch-shell", + "commit": "d585f1f9d6eaccf5150b0e7db530b61beb4ebcf4", + "sha256": "1x1qp9l9ahx85m6yqnf00ids1xlm75l6v8rdig77kzzmazpvc707", + "fetcher": "github", + "repo": "jamesnvc/helm-switch-shell", + "unstable": { + "version": [ + 20191223, + 1418 + ], + "deps": [ + "dash", + "helm", + "s" + ], + "commit": "690e20f0d95f81151b34cb424a201f39d93eb430", + "sha256": "08p9dfjkf1ssnzd8n69a10mkvdvm8w229fy32z95dh9vbxsp7aqv" + } + }, { "ename": "helm-swoop", "commit": "7a4e84530b4607a277fc3b678fe7b34b1c5e3b4f", @@ -44227,14 +46368,14 @@ "repo": "emacsorphanage/helm-swoop", "unstable": { "version": [ - 20191008, - 401 + 20200321, + 231 ], "deps": [ "helm" ], - "commit": "884d2f5840108f0171d38fa19ae2334560f5c2d9", - "sha256": "0x6pspamns2hb2a7x01pwzs1zbzi1p0vq6rwrczjh978n2plrqjq" + "commit": "069dc0b3970f1e796e34b7789ae51b1b7979ee30", + "sha256": "1jf1573r8v4mda1xiszrz51qarb1ii31cyk0v3ci16bi9dpp8swb" }, "stable": { "version": [ @@ -44350,20 +46491,20 @@ }, { "ename": "helm-themes", - "commit": "81f0f525680fea98e804f39dbde1dada887e8821", - "sha256": "0r7kyd0i0spwi7xkjrpm2kyphrsl3hqm5pw96nd3ia0jiwp8550j", + "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b", + "sha256": "15qs23f467j99wybjd0n6dacgik5ibf96jn00j9fip55v8rp66gj", "fetcher": "github", - "repo": "syohex/emacs-helm-themes", + "repo": "emacsorphanage/helm-themes", "unstable": { "version": [ - 20160918, - 545 + 20200323, + 712 ], "deps": [ "helm-core" ], - "commit": "1160af42590b0d845a55e65e1e782d9e4027fd6e", - "sha256": "0856h8rnbgrxp3v3jpfmwq7kcdm1ymd4gcfvh0h27mk05113vz53" + "commit": "244121903650c2d25a233d12b378060cf8b010e7", + "sha256": "0ii70wn3vadx8a36q2frmsvrmlpz1w58qgn2w3knjivj195knliw" }, "stable": { "version": [ @@ -44547,14 +46688,14 @@ "repo": "brotzeit/helm-xref", "unstable": { "version": [ - 20190930, - 1646 + 20191108, + 859 ], "deps": [ "helm" ], - "commit": "bbd9a858c9eaceb6d3efab0a25d9caff32b3750c", - "sha256": "0hvgcpc47ki5arln473qq3qpcg5j83qjk6cmm9k1xqvjkyv19prl" + "commit": "6b4a8bd91f5eaf82f51bd31b03f6587387fe6983", + "sha256": "03b57sm98v25bqyy9d2pccfnlfxkvaxmvismhxmai4kfv8d84azj" } }, { @@ -44658,8 +46799,8 @@ "repo": "Wilfred/helpful", "unstable": { "version": [ - 20191001, - 9 + 20200111, + 2324 ], "deps": [ "dash", @@ -44668,8 +46809,8 @@ "f", "s" ], - "commit": "e2609e4ae9e058bd8be6239681b2f22195628f28", - "sha256": "00id29w31mq6ikaa95dp0m6l9hcmvm4m0z3mfgyj4713vnm162s0" + "commit": "c54e9ddbd6a77858048c1a4c4b549de98af8f88e", + "sha256": "0x339wxhwma1i27j52wnbhc541633dxqmx1wyxg3yp78aciyrfhv" }, "stable": { "version": [ @@ -44933,6 +47074,21 @@ "sha256": "0dfzjgxfkcw4wisbyldsm1km18pfp9j8xgadn6qnsz11l55bpgyp" } }, + { + "ename": "hidepw", + "commit": "f2ee7663bcedaffa935b8379cc77168035cb1f14", + "sha256": "0qnvlcjldg1mcb5ilcy538sbf294glrx5g1a7vbmspdm3wby7lna", + "fetcher": "github", + "repo": "jekor/hidepw", + "unstable": { + "version": [ + 20200326, + 112 + ], + "commit": "73f099da79d73fe4087472df3469d8b9b20a59f2", + "sha256": "1lcm5nfpcrvy3700g1zzi89j59n0508xvk3v66x9px5aq6a8xk2j" + } + }, { "ename": "hideshow-org", "commit": "3de48eee24a5cca9c8b7dba2d6d01dfbc679d8d6", @@ -44959,8 +47115,8 @@ 20190425, 842 ], - "commit": "a1d13c40102e833192c3bd6acf930013bdcbc819", - "sha256": "1hg3hvz11ncsh7xhsgv0id4szypj7cv2cffqnk3hphyl073dyic6" + "commit": "be2634dc1f08a5e781d02ef301c727246863756f", + "sha256": "05v3p2n92xjz035m5p0m5wd85ygngbvjd8y09r5sx1mi5ya2k0v2" }, "stable": { "version": [ @@ -45453,11 +47609,11 @@ "repo": "PythonNut/historian.el", "unstable": { "version": [ - 20190111, - 313 + 20200203, + 1927 ], - "commit": "64f4ef8cd4e417dfa090138a2d4ea1e72fd4456a", - "sha256": "0py43kml7fcf1k28pali7n9nhsjp003j02cpynqcz6hmk8zr7b48" + "commit": "ac1bea7d99dd6965c72fabeb72d5fdc38c5380a4", + "sha256": "13pray3iapy6vbd1y1y7fqcnjpsvgfz2z7j1a1awzd8ifp12g9cp" } }, { @@ -45567,17 +47723,17 @@ }, { "ename": "hl-block-mode", - "commit": "d2fbba8cc73a5d567b525ce2c0a15f35379f29e8", - "sha256": "16z49k1rn8n1f64fidff0jyhn3h4pmklys9plr96nbd4lvm80msj", - "fetcher": "github", + "commit": "68b7cb0ffe90cd56e2ca6e91e33668be586a1da7", + "sha256": "17ghc2hbvckp68blk8izwmx6far9ampalik2f9idz27982h49ia8", + "fetcher": "gitlab", "repo": "ideasman42/emacs-hl-block-mode", "unstable": { "version": [ - 20190520, - 30 + 20200118, + 310 ], - "commit": "fcefe78a1df2dccb85821d23e6c6ea2a60eedcbc", - "sha256": "1r9p7lz0bidr499f7l3w5c9q2ypzhqxn7n1k95wmdmbg8l5jnxxd" + "commit": "6a8f871d7aa5d0d58b7c6ede281f8f8965124c9e", + "sha256": "1jdqz3cfncka4rdqxa4qg7f8dhkwx2h9s16gd3xqjwh8xrpf9qnd" } }, { @@ -45646,20 +47802,20 @@ "repo": "tarsius/hl-todo", "unstable": { "version": [ - 20191024, - 1036 + 20200103, + 1239 ], - "commit": "823ca3751e4cac6e936800ddf2f19d6f96eeb422", - "sha256": "16isym4dp6vbc9f1pa1q1x1hwhm7nd61rr5y4inf58wllgflnb7f" + "commit": "3bba4591c54951d2abab113ec5e58a6319808ca9", + "sha256": "1i5mdmkbrxqx75grwl01pywbgl8pasr00mq6fidspp0aligsbg6w" }, "stable": { "version": [ 3, - 0, - 0 + 1, + 1 ], - "commit": "487d349b7b8d6738223d5dd10957dd10b45eb9f3", - "sha256": "07xcc04ivpl5sbgb55qz84mz6wa500h0awzw1zq1ba5mfjjq8hls" + "commit": "5d2ea49f83a7e6953f9d71de94dee478d08f9543", + "sha256": "1v51mlq13wr890ijwcwf0ymmc768cipj7a1nvmbmwh7y4ymlrsgn" } }, { @@ -45741,16 +47897,16 @@ "repo": "thanhvg/emacs-hnreader", "unstable": { "version": [ - 20190909, - 258 + 20200321, + 1900 ], "deps": [ "org", "promise", "request" ], - "commit": "7e68beff596a7c67ff436be5cc29660acd46f5df", - "sha256": "0yynfz8bw7nvzk05zxypn183y6hf243s55kxfiicnxx7shag217i" + "commit": "5dd287e932e2398aab0f34cb23b99457b81ac370", + "sha256": "0ynq9dg00frk1sriraglzsszxpx51mpfdkbd1iqdz648rlhzyp3m" } }, { @@ -45839,28 +47995,28 @@ "repo": "dunn/homebrew-mode", "unstable": { "version": [ - 20160615, - 1320 + 20200205, + 224 ], "deps": [ "dash", "inf-ruby" ], - "commit": "d422307aee2f897d1a92e3b959c3214bc54cbe38", - "sha256": "1z4d0niz8q24f2z8rnfnc2rlmkffkf7qc57qn4695jbkzb7galfz" + "commit": "8c04b040656dc99719efd7663c10f26f74df4a47", + "sha256": "0hqpj9fqq0b4nj7ya93jgkagafixqkinyr7qj8dsy2j1q458ynzf" }, "stable": { "version": [ - 1, - 3, - 6 + 2, + 0, + 0 ], "deps": [ "dash", "inf-ruby" ], - "commit": "d422307aee2f897d1a92e3b959c3214bc54cbe38", - "sha256": "1z4d0niz8q24f2z8rnfnc2rlmkffkf7qc57qn4695jbkzb7galfz" + "commit": "8c04b040656dc99719efd7663c10f26f74df4a47", + "sha256": "0hqpj9fqq0b4nj7ya93jgkagafixqkinyr7qj8dsy2j1q458ynzf" } }, { @@ -45913,6 +48069,21 @@ "sha256": "1yvz9d5h7npxhsdf6s9fgxpmqk5ixx91iwivbhzcz935gs2886hc" } }, + { + "ename": "horizon-theme", + "commit": "e2021dcf9db816a28cdc3fda226dc58431d7baca", + "sha256": "1532ab1blkxyfjcalr2vzp6yk9mkxnxh9yim2v9l0h7j17ddmw2v", + "fetcher": "github", + "repo": "aodhneine/horizon-theme.el", + "unstable": { + "version": [ + 20200129, + 1957 + ], + "commit": "5bed6dd5bb9faf7d113b19f61cbca98da6262a3e", + "sha256": "0nhx0j3ffd24v9hvwfwwrp3bhx1105g9vwz543hn6yagx63y4vxz" + } + }, { "ename": "horoscope", "commit": "180248c19160940a208b32fa7a9660a838f68de5", @@ -45936,15 +48107,15 @@ "repo": "ryoung786/hound.el", "unstable": { "version": [ - 20170627, - 1959 + 20200122, + 1700 ], "deps": [ "cl-lib", "request" ], - "commit": "0c5a250ef82870dca737a429b6e9b9db93874ed3", - "sha256": "0kf2nhp5k3gk82ad1k9qi4aysqhw36x4mcdhg6kjckmcakfjw3g6" + "commit": "35e2cdc81fcc904b450a7ef3ec00fd25df6a4431", + "sha256": "04pb5yhv4ysmm9ngpipxglbwd6msxr4d0jd64mixxq77g2yfmfm4" }, "stable": { "version": [ @@ -45960,6 +48131,30 @@ "sha256": "1zyd6350mbah7wjz7qrwyh9pr4jpk5i1v8p7cfmdlja92fpqj9rh" } }, + { + "ename": "hover", + "commit": "0dea54ebe452094c141e99f724a5fbfffe9381f0", + "sha256": "1vnxga7bbv96la2jjvh3r71j3fgaz59v81q7z5yixgn7vxrcvvc9", + "fetcher": "github", + "repo": "ericdallo/hover.el", + "unstable": { + "version": [ + 20200321, + 1819 + ], + "commit": "cf1cd543f68525732e0a9178c96a5f83a3cabc7f", + "sha256": "1yjfvx94ipps91fr8qbgafpkdp38yhlbzvggyi97g91ib2pxfals" + }, + "stable": { + "version": [ + 1, + 1, + 0 + ], + "commit": "cf1cd543f68525732e0a9178c96a5f83a3cabc7f", + "sha256": "1yjfvx94ipps91fr8qbgafpkdp38yhlbzvggyi97g91ib2pxfals" + } + }, { "ename": "howdoi", "commit": "d08f4d6c8bdf16f47d2474f92273fd214179cb18", @@ -45983,16 +48178,16 @@ "repo": "thanhvg/emacs-howdoyou", "unstable": { "version": [ - 20190921, - 259 + 20191118, + 2222 ], "deps": [ "org", "promise", "request" ], - "commit": "8ebfcb2b8f708110040c5a3e6f4f0d46f33b025c", - "sha256": "1rsmz7av9ij11j307ncly78dhncyb7lxdcgpy0plfsyja3kw3m5q" + "commit": "ef7f42c14f0f4aec475b74d56931daa36aded6c8", + "sha256": "1a1wr86z5368zwvlgyp979x1ypz38m2w2qnp5607vjjplcrcmay2" } }, { @@ -46009,8 +48204,8 @@ "deps": [ "cl-lib" ], - "commit": "e011a70f5955b8eb2e30f7baf2f3833fc6d3216f", - "sha256": "0p8gphaqkyl9cmbs85vi31jgbc56j6ghwf5zhn523sy22vcw5j0j" + "commit": "4f550d35935abc943e37e1f2da78c52218ac7c8d", + "sha256": "1rcyqyb48lsqpsa65ggd7ks88rk53frjhgrwr357b057kcqjic4n" } }, { @@ -46039,14 +48234,14 @@ "repo": "Wilfred/ht.el", "unstable": { "version": [ - 20190924, - 704 + 20200217, + 2331 ], "deps": [ "dash" ], - "commit": "66c5f9131242697fabaede5566d87ecda4c14b1f", - "sha256": "0mip7v2w89wjs2nw4c198y7rpf9i7wsrjibmcnnzwxhcm1sidjnh" + "commit": "fff8c43f0e03d5b98deb9f988522b839ce2ca253", + "sha256": "0v89jrz0igkj1w4jxi365nqny2vqr1wjmrvknzdlrm7g0islinwc" }, "stable": { "version": [ @@ -46159,19 +48354,19 @@ "repo": "hniksic/emacs-htmlize", "unstable": { "version": [ - 20180923, - 1829 + 20191111, + 2130 ], - "commit": "8db0aa6aab77475a732b7363f0d57bd3933c18fd", - "sha256": "19hwcqla1mnp5k8mll4in1pimqpa8zmqd8yfmxkikldmwwsilaq0" + "commit": "86f22f211e9230857197c42a9823d3f05381deed", + "sha256": "0n117rb4d9dydl01b65d09rp8bmkir3m09zs02dhlmqmljpy25w8" }, "stable": { "version": [ 1, - 54 + 55 ], - "commit": "a8b73f1393b2d73541ba4a8fd716c0d07ce50276", - "sha256": "1d5hj8wibp1lxs697y7i4yrpv9gqq821gxmpqqkn2jwrb70nsngl" + "commit": "682edbf751f5c255bfd4af0eb714a8bce0737cec", + "sha256": "0gi3xshscpa53qrj8yplfsqahcilc2ybcc2p7gnh5nbnf2n1n97x" } }, { @@ -46185,6 +48380,15 @@ 20190517, 511 ], + "commit": "35c62dd95c580fad49f84c5270cd69810455fedd", + "sha256": "1gh6acc21lfnng4hlgf6wv5pv4zcs9j44i25grrac0714sa2lm81" + }, + "stable": { + "version": [ + 0, + 0, + 2 + ], "commit": "3260d9267b51019328c30a6317f28e4a2dd7d522", "sha256": "15rfg4z8lhwadgnr58r3skmzmkxs5phnqr1ap4bjd9pq618amdbn" } @@ -46326,6 +48530,21 @@ "sha256": "0pcr39x8yxl5aa0sz20gw20ixz5imw5m19bzhzbzyn7slr65hlqn" } }, + { + "ename": "humanoid-themes", + "commit": "3f4a3e3f257a02c4d702ddc38f5aff5a9411e21e", + "sha256": "070y1xrfabpzc4rdj7qhxa6yl8fdv4p7imi8yivbv0cwx3rpx75s", + "fetcher": "github", + "repo": "humanoid-colors/emacs-humanoid-themes", + "unstable": { + "version": [ + 20200310, + 940 + ], + "commit": "57d7db70904faeeba9ccd0151e4ebf889403a40d", + "sha256": "0vxfq6gycgkfypyk91mwf2jg1mkldxpkd2v39j2nmlgbbw1ldaka" + } + }, { "ename": "hungarian-holidays", "commit": "0c2dc20ce4b878a32c540744016a40f6cc2a657a", @@ -46349,11 +48568,11 @@ "repo": "nflath/hungry-delete", "unstable": { "version": [ - 20170412, - 102 + 20200309, + 209 ], - "commit": "0434458d3f6b2b585f332271feaa054bf4ec96d7", - "sha256": "04g8gdfqpzdhxf5rnl2k49f2klmzxwys79aib7xs30i0n8c8qb7d" + "commit": "4a341cfa3a19185c5ecb687970e299082e1144e3", + "sha256": "1gwksvvizz3kdpfzgwp45l1idjbrn8kz4jf0zx4fva20mh6mjz01" }, "stable": { "version": [ @@ -46484,15 +48703,15 @@ "repo": "abo-abo/hydra", "unstable": { "version": [ - 20190821, - 939 + 20200306, + 913 ], "deps": [ "cl-lib", "lv" ], - "commit": "74b32f3ff004cd2ad7707722ffa7f85e8233a845", - "sha256": "0gp1j8n65v3r849c3h3xmn7c133wyh68szksqjwn1lzd2mpdnfny" + "commit": "16fa8d109ec5799931a793b2e866ea9d593bee84", + "sha256": "1l6pi5ldmdcgv5qyg3kk1x8sxb639brzbfj0iddy5752hmg08g3h" }, "stable": { "version": [ @@ -46630,19 +48849,19 @@ "repo": "muffinmad/emacs-ibuffer-project", "unstable": { "version": [ - 20190925, - 1105 + 20200210, + 2252 ], - "commit": "7de4f54a959de3254a98662777269ec7a08adbc9", - "sha256": "06p12hxnrbcjdwr8b1rmbm7b4hwkhp7lsrw4j6fnnf1hi27hngsq" + "commit": "8cc8c96cb15874dd55cdbfce759f528de0046f9f", + "sha256": "0ysjyirw9gkrs8wivvvxfgdq8radpkl6nhh2a0ac3s42vrwbf9g1" }, "stable": { "version": [ - 1, - 1 + 2, + 0 ], - "commit": "a29ed1f415902f21b5b17bf36ce1a0e46e29400c", - "sha256": "0b5d5gdqinnqfll82i994jmg6y4va2fallvh0d8g0978y3xx8vnp" + "commit": "8cc8c96cb15874dd55cdbfce759f528de0046f9f", + "sha256": "0ysjyirw9gkrs8wivvvxfgdq8radpkl6nhh2a0ac3s42vrwbf9g1" } }, { @@ -46653,25 +48872,25 @@ "repo": "purcell/ibuffer-projectile", "unstable": { "version": [ - 20181202, - 352 + 20200304, + 2205 ], "deps": [ "projectile" ], - "commit": "76496214144687cee0b5139be2e61b1e400cac87", - "sha256": "0vv9xwb1qd5x8zhqmmsn1nrpd11cql9hxb7483nsdhcfwl4apqav" + "commit": "504b0edaa0d937ce60ccc8fdf09f2dae0a90fbaf", + "sha256": "18cqxnwzzbkcj9jcaw89b210432yzhrl1dwsv48p0jbhfnr17k41" }, "stable": { "version": [ 0, - 2 + 3 ], "deps": [ "projectile" ], - "commit": "8b225dc779088ce65b81d8d86dc5d394baa53e2e", - "sha256": "1zcnp61c9cp2kvns3v499hifk072rxm4rhw4pvdv2mm966vcxzvc" + "commit": "504b0edaa0d937ce60ccc8fdf09f2dae0a90fbaf", + "sha256": "18cqxnwzzbkcj9jcaw89b210432yzhrl1dwsv48p0jbhfnr17k41" } }, { @@ -46739,25 +48958,25 @@ "repo": "purcell/ibuffer-vc", "unstable": { "version": [ - 20181225, - 2227 + 20200304, + 2207 ], "deps": [ "cl-lib" ], - "commit": "64cb03887bcae6127e80f0d9342c33206e21d2d2", - "sha256": "1ayqa7l5ny7g01pb3917w2phnsdfw69scw3lk6bpa773pq00n2vi" + "commit": "1249c1e30cf11badfe032ac3b1058f24ba510ace", + "sha256": "1mgn7b786j4hwq1ks012hxxgvrfn5rz90adi2j190gmjz60rc5g5" }, "stable": { "version": [ 0, - 10 + 11 ], "deps": [ "cl-lib" ], - "commit": "b2bac7aa69335933ebb2e6f34259fa96d2c8d46a", - "sha256": "0bqdi5w120256g74k0j4jj81x804x1gcg4dxa74w3mb6fl5xlvs8" + "commit": "1249c1e30cf11badfe032ac3b1058f24ba510ace", + "sha256": "1mgn7b786j4hwq1ks012hxxgvrfn5rz90adi2j190gmjz60rc5g5" } }, { @@ -46997,16 +49216,16 @@ "repo": "DarwinAwardWinner/ido-completing-read-plus", "unstable": { "version": [ - 20190719, - 4 + 20200310, + 25 ], "deps": [ "cl-lib", "memoize", - "s" + "seq" ], - "commit": "fcb6fa0c2f5989b2e79f2dc1ef57d03e455cce44", - "sha256": "1wq5gbr87f6c3bbsndkg50ndf6s21pzz49dmxaa4sckjs2ax9mzx" + "commit": "98d3a6e56b1d3652da7b47f49f76d77f82ea80ba", + "sha256": "0rmqyxb0cr3avm6lzz26r2d9fmja2csrh3whmky8h2giz79mjf7d" }, "stable": { "version": [ @@ -47036,8 +49255,8 @@ "deps": [ "dash" ], - "commit": "a142ff1c33df23ed9665497d0dcae2943b3c706a", - "sha256": "0967709jyp9s04i6gi90axgqzhz03cdf1j1w39yrkds6q1b6v7jw" + "commit": "a814e25cb272401bdfee94cb98d915119d307414", + "sha256": "040mpwwldivyapmj0pjxsk8drgi113k7rpx8ym4jqz1hah5n33s1" }, "stable": { "version": [ @@ -47082,8 +49301,8 @@ "flx-ido", "migemo" ], - "commit": "aa93aa05947eb6c106bb9523ff3163b8574c4eac", - "sha256": "0k6zidi0ch4z9fg74k968pz7r0hzj56kccbf48k0is0fnzl4isxq" + "commit": "da64f2fe3849492d35e155d81a817308a4853473", + "sha256": "0r8z8ingq83nkab9khpl9gspihv28gy721hcs0yh1d74wyjc71cr" } }, { @@ -47177,20 +49396,20 @@ }, { "ename": "ido-migemo", - "commit": "8550601b8989f9838dfa7848977b2509b8e16175", - "sha256": "02hbwchwx2bcwdxz7gz555699l7n9wisfikax1j6idn167n4wdpi", + "commit": "c52a1ea0afa8e5f439b7ac987b79c49eb08fe95a", + "sha256": "0dpgr9lxj7g7kciw4w7y1qmah91z2b2vwj9xyn8m6f6grihg7p2l", "fetcher": "github", - "repo": "myuhe/ido-migemo.el", + "repo": "emacsattic/ido-migemo", "unstable": { "version": [ - 20150921, - 2244 + 20191017, + 1919 ], "deps": [ "migemo" ], - "commit": "e71114a92dd69cb46abf3fb71a09ce27506fcf77", - "sha256": "15iajhrgy989pn91ijcd1mq2015bkaacaplm79rmb0ggxhh8vq38" + "commit": "09a2cc175b500cab7655a25ffc982e78d46ca669", + "sha256": "0my4bvi2b4c5q8wdsdhypyk6w6n63pw0240kx3r6kb85l9rg95r3" } }, { @@ -47222,8 +49441,8 @@ "deps": [ "dash" ], - "commit": "522af5d55b3d4cd6885f3b4100913566c202cec4", - "sha256": "0yh8px5ffx4pjmy97v1z9nwxb3qgzc5pdaj9nn6lsdxv9z7w5p3v" + "commit": "6a0bfeaca2e334b47b4f38ab80d63f53535b189e", + "sha256": "0q4w0akmnwk42ldbzqxbr7swz026q8wr1g27bl4i4k25bidqlx9q" }, "stable": { "version": [ @@ -47639,20 +49858,20 @@ "repo": "tarsius/imake", "unstable": { "version": [ - 20180318, - 2259 + 20200103, + 1238 ], - "commit": "a61f409c517ec274e1ec81f3f00c178108c226fb", - "sha256": "0l75z8i0zpl7jwbmv3jqh896dikdvjh1l8qgwn7xh2hi1zjwybwh" + "commit": "100d62c7095743fadddfad5b9e0740ee386ba4cf", + "sha256": "0wpfl74v7xnvsk3ribxkfyy4p5p9j2wskrcf0naavqpgm6fc6jvr" }, "stable": { "version": [ 1, 0, - 1 + 3 ], - "commit": "7df5fb9684a0288313ef5f64594078d477105959", - "sha256": "0xc19ir5ak1bfq0ag48ql5rj58zd565csgxhpa30s9lvvkc8kvr5" + "commit": "100d62c7095743fadddfad5b9e0740ee386ba4cf", + "sha256": "0wpfl74v7xnvsk3ribxkfyy4p5p9j2wskrcf0naavqpgm6fc6jvr" } }, { @@ -47793,20 +50012,20 @@ "repo": "petergardfjall/emacs-immaterial-theme", "unstable": { "version": [ - 20190412, - 1115 + 20200308, + 1330 ], - "commit": "176178a57c5b342b04bebd3107c29c6d12086cf5", - "sha256": "0bsx0dh802x58vza9whgkkj6j16c6pcz7gdpvan50dmzs0h0pfz6" + "commit": "19c46859e041a0c0e7f40a9157a6c4d0d660f441", + "sha256": "0nx1g7caypnkid7bzhm4gg44cmpikpz1qz1cp11y6rlq1lwrb1d9" }, "stable": { "version": [ 0, - 1, - 3 + 4, + 2 ], - "commit": "176178a57c5b342b04bebd3107c29c6d12086cf5", - "sha256": "0bsx0dh802x58vza9whgkkj6j16c6pcz7gdpvan50dmzs0h0pfz6" + "commit": "19c46859e041a0c0e7f40a9157a6c4d0d660f441", + "sha256": "0nx1g7caypnkid7bzhm4gg44cmpikpz1qz1cp11y6rlq1lwrb1d9" } }, { @@ -47856,16 +50075,15 @@ "repo": "skeeto/impatient-mode", "unstable": { "version": [ - 20181002, - 1231 + 20200327, + 1619 ], "deps": [ - "cl-lib", "htmlize", "simple-httpd" ], - "commit": "96f6a05f8de74e19d570217fe83f0734623ddb0c", - "sha256": "1qddy3b3fmxgkpl10p0hvmgrzhkrxyxg72sxxg5ndfwvjpf2rf91" + "commit": "fc84f4a333d47ca853842570cf35e659753a3ebe", + "sha256": "14zycqky7xkmbfacmfdqbmq1qs3sj2r41nfmg09dv0hl97pavir8" }, "stable": { "version": [ @@ -47913,10 +50131,10 @@ }, { "ename": "import-popwin", - "commit": "a6f0629515f36e2e98839a6894ca8c0f58862dc2", - "sha256": "0vkw6y09m68bvvn1wzah4gzm69z099xnqhn359xfns2ljm74bvgy", + "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b", + "sha256": "0ax0s2jkfmjlnvj741n58m52srppzcn58l4vqq5gvmqj3dbh9rhd", "fetcher": "github", - "repo": "syohex/emacs-import-popwin", + "repo": "emacsorphanage/import-popwin", "unstable": { "version": [ 20170218, @@ -47955,8 +50173,8 @@ "epc", "f" ], - "commit": "bbc131278f8cd62f3e71b6f4a86b0c91792a3524", - "sha256": "19p4nrpk4g8lxh2rhkgsjrf4xaqi9yp4p2pxrf69lygb54rzbdly" + "commit": "86f17856db194c5f18b30f35df40fb029d5544b5", + "sha256": "0cak79lnlbfigl6lh3c5wzphxssq78vyd9xxj3zi7ln5q9ijl6pp" }, "stable": { "version": [ @@ -47979,11 +50197,11 @@ "repo": "zk-phi/indent-guide", "unstable": { "version": [ - 20170221, - 1127 + 20191106, + 240 ], - "commit": "d64f43011c72068e008621e620009ec592b35913", - "sha256": "1zjxfwbbmg95llpkvgbwdgk6cx7g9x48y3i4v75r8d4iy2xndgq8" + "commit": "7fc710748f9e5a086acfe77970f117df89ee9749", + "sha256": "055cpcj57k14v2vdpc1an6dww5ncvfpxghpgw1spv53wzgv8vzkq" }, "stable": { "version": [ @@ -48001,11 +50219,52 @@ "repo": "terlar/indent-info.el", "unstable": { "version": [ - 20180423, - 1912 + 20200128, + 1052 ], - "commit": "d218b4cb3726476caee91db6f6c920856ab992bc", - "sha256": "0z427rvvhw5raql5391sajm4rk1n2y8khsy2wqr7r66fdv5hg2mg" + "commit": "9548f14e7f0f7220d6cd1b8e88756b89fc57c471", + "sha256": "1hmrg1pyzcldqh858j3zpb6y0ap4x6142m56pas0lyh65d2wzggk" + }, + "stable": { + "version": [ + 0, + 2, + 0 + ], + "commit": "4713807101bff80b342d0f847da9006be001141b", + "sha256": "0sprs5qgrbvgxd6k8h8fyybxdxfd3izhvk1bh13vg238qbn09a26" + } + }, + { + "ename": "indent-lint", + "commit": "2cd74b5fe81e9b2dcdd9f40e8d5693335629f6ec", + "sha256": "1wy8cpyiljjg3315pwivpzlz5cjnxpcigx3pv7rrx5lvdzapz5v8", + "fetcher": "github", + "repo": "conao3/indent-lint.el", + "unstable": { + "version": [ + 20200129, + 2046 + ], + "deps": [ + "async", + "async-await" + ], + "commit": "23ef4bab5509e2e7fb1f4a194895a9510fa7c797", + "sha256": "00ipp87hjiymraiv6xy0lqzhn9h3wcrw7z4dkzb2934d7bd08j29" + }, + "stable": { + "version": [ + 1, + 0, + 0 + ], + "deps": [ + "async", + "async-await" + ], + "commit": "5601a716d4daeb444642736ddef420cbc1047968", + "sha256": "0ndpdqdcg2rlrw5z86gyj46qsmsilh3a4snyyybi87kk5ajk2k64" } }, { @@ -48039,8 +50298,8 @@ 20190424, 1547 ], - "commit": "a5450fe467393194bc2458c0d5e0a06c91bf117a", - "sha256": "0phbs9cx73vg9k9gp60vhlrn065skpva6gx0abp0g6rbzys2qx0b" + "commit": "c941cde1205642c6b933ae6abbc47d199f609df0", + "sha256": "0523x5am383j1msaiflffa98mm05y38v4jvj144hbrhrdk3vykrs" } }, { @@ -48070,8 +50329,8 @@ "repo": "NicolasPetton/Indium", "unstable": { "version": [ - 20191022, - 2128 + 20200116, + 1247 ], "deps": [ "company", @@ -48080,8 +50339,8 @@ "json-process-client", "seq" ], - "commit": "9614d63fa5a5126bd5b68d62410894371da081bf", - "sha256": "1cvc9nk1cbym0ah6z0zmgv9bywj3lxvcaflywmavnn4gvxg67m9n" + "commit": "59f12cb1bc73bb399e00b2c6c69d21bdcb9c0955", + "sha256": "06x20zapygdgh7i2nr3c8xk8znrpp69yl5vpz08kkix7vssr9sxx" }, "stable": { "version": [ @@ -48123,14 +50382,14 @@ "repo": "clojure-emacs/inf-clojure", "unstable": { "version": [ - 20191008, - 843 + 20200118, + 1533 ], "deps": [ "clojure-mode" ], - "commit": "173d0e7f118b0009bf210be115485160abf554b1", - "sha256": "1514vrdpl467bj4k1qg48fk3526x7cx66px49jy8ynayfs0dhgjc" + "commit": "49390d9dfde1d6354629b7662edd0ee422477f4a", + "sha256": "1jhh4ablxmwy4diai6jhki5ifiw1d0fcza7l9gy8iqqnd1yc2m25" }, "stable": { "version": [ @@ -48198,11 +50457,11 @@ "repo": "nonsequitur/inf-ruby", "unstable": { "version": [ - 20190927, - 1649 + 20200327, + 1418 ], - "commit": "fd8d392fefd1d99eb58fc597d537d0d7df29c334", - "sha256": "0axnjqgamy762ky5al56aryx0mp2b2i9almw9gkjcvxm7nc6zlq9" + "commit": "41e5ed3a886fca56990486f1987bb3bae0dbd54b", + "sha256": "12qgd2p664rh0ks5kq6sxaqi5nlmxrzj5p0kpqrx40caicj6jfpl" }, "stable": { "version": [ @@ -48254,8 +50513,16 @@ 20180604, 2122 ], - "commit": "af443795af20481af91ac54a489b20f6a9d90b0a", - "sha256": "0r938pp10szrqiv37ryzfir4h5pg68farm56cpnh9hh8cnix6nrh" + "commit": "97db34d23cb05b23e50c15875ee84f5d3236e0db", + "sha256": "0z1cya3mhgh5ibj3dgwzii1fkbzsq7zjjzg6hfdv3pd4a7722qlx" + }, + "stable": { + "version": [ + 0, + 1 + ], + "commit": "f65e89ad0c2a7acdef1dc182947d59287f371783", + "sha256": "0vd8d3dgqgqhrkmmvvf90ac04hcng03q32niwd54c0xj63hcxg8l" } }, { @@ -48289,14 +50556,14 @@ "repo": "ubolonton/info-colors", "unstable": { "version": [ - 20180205, - 1150 + 20200125, + 1447 ], "deps": [ "cl-lib" ], - "commit": "a8ebb7b8efa314c08ea8110d8b1876afb562bb45", - "sha256": "0wvyf2w5s184kwacs6lbpjryx6hziayvdrl3crxir8gmg2kcv07m" + "commit": "47ee73cc19b1049eef32c9f3e264ea7ef2aaf8a5", + "sha256": "1zmiik1ba7xspbk2g8igr1rscxxzxpzjrzspxjcw9khw6z4iwr51" }, "stable": { "version": [ @@ -48315,11 +50582,11 @@ "repo": "oitofelix/info-rename-buffer", "unstable": { "version": [ - 20191005, - 2346 + 20200328, + 1450 ], - "commit": "c983ae687481f39b8fd0d4ee9d85fd82b6a4ba03", - "sha256": "068flcy4rdzwjpzqqlxpcpcqjxd5f11xq00g55ph17vzxf4iwk3c" + "commit": "87fb263b18717538fd04878e3358e1e720415db8", + "sha256": "07ylrbl9i2d09nspj481hkgcq9vs4ikvl86sfj7594zzdyy6b8qx" } }, { @@ -48392,20 +50659,20 @@ "repo": "zonuexe/init-open-recentf.el", "unstable": { "version": [ - 20161206, - 1445 + 20200321, + 737 ], - "commit": "7d8fb124806291f7f6ef2ec3a664ea25899b6d68", - "sha256": "0vswa7304s7m6cirbaky9rmrxjb2aylvif2vg2p6l274k37c4jyh" + "commit": "369304d6adb6875948c4534419c4f303ac23c4f6", + "sha256": "1i41xcjj0kdhn7m29jb5gq2j2cyxn424y4lwx6s3fjj1ckx808ii" }, "stable": { "version": [ 0, - 0, - 3 + 2, + 1 ], - "commit": "a4f5338a14302d44fa5aebb1ddc7aff3dc9abbe3", - "sha256": "0iph5cpz2dva1rnvp5xynmkndny87z308pziadk1qgf05mc0i61d" + "commit": "369304d6adb6875948c4534419c4f303ac23c4f6", + "sha256": "1i41xcjj0kdhn7m29jb5gq2j2cyxn424y4lwx6s3fjj1ckx808ii" } }, { @@ -48448,17 +50715,17 @@ }, { "ename": "inkpot-theme", - "commit": "dd3e02aaf8865d8038b9c590c8545e7a1b21d620", - "sha256": "1m3iygb8vbqcnsxsnwr7g2mq1n2a9r7qxp3pgm1fpwz1lngvaagf", - "fetcher": "github", + "commit": "68b7cb0ffe90cd56e2ca6e91e33668be586a1da7", + "sha256": "1avgzjwppmmhdmljwpy75acylm3f74d3x0q94ld2n1yhi8xx40i9", + "fetcher": "gitlab", "repo": "ideasman42/emacs-inkpot-theme", "unstable": { "version": [ - 20190907, - 1024 + 20191218, + 2038 ], - "commit": "f6f148eebef72939b90a1822c1c3a257e22f802e", - "sha256": "0jxh9plw699b7w6vi6km4154ixgn5w8a1hx9v99s0icf8rpvrcnw" + "commit": "ed488fcbc8c015121a4b1acd8d08db229fd6735a", + "sha256": "14y87fvav10wjc88bbi1pwy8lxnqcdk4cahwhd9cg5bhsqwhm32m" } }, { @@ -48502,17 +50769,17 @@ }, { "ename": "inlineR", - "commit": "3a7228e5f23a4e66f4510b2f6fc41c36aa791991", - "sha256": "1fflq2gkpfn3jkv4a6yywzmxsq6qszfid1ri85ass1ppw6scdvzw", + "commit": "c52a1ea0afa8e5f439b7ac987b79c49eb08fe95a", + "sha256": "0f6bh46ljz01bysm96dzd9iygfh6zgd4w6g8h3kb8lk07brm7227", "fetcher": "github", - "repo": "myuhe/inlineR.el", + "repo": "emacsattic/inlineR", "unstable": { "version": [ - 20120520, - 1432 + 20191017, + 1920 ], - "commit": "29357186beca825e3d0451b700ec09b9ed65e37b", - "sha256": "15nasjknmzy57ilj1gaz3w5sj8b3ijcpgwcd6w2r9xhgcl86m40q" + "commit": "bf6450a3540aa3538546d312324c41befd0a4e54", + "sha256": "05by3mzz8gw13c42m2z3cr13zng62mbany0hvixx3jmn1q4hj9r0" }, "stable": { "version": [ @@ -48531,11 +50798,11 @@ "url": "https://git.sr.ht/~zge/kaomoji", "unstable": { "version": [ - 20190701, - 1823 + 20200325, + 2248 ], - "commit": "b144e48f02f29bb25651a63d9691e9de10f0171b", - "sha256": "0i5wx60hvkriyas6g0599x35xnln77v0136z2k1rp332m9450299" + "commit": "b943fe73327acc08dcd431eb8168a01609b9ab76", + "sha256": "13fk3b80gmgmr0d5296csvjfyjdq1jdxy3iahaj5mbhb9m3ganpc" }, "stable": { "version": [ @@ -48558,8 +50825,8 @@ 20180403, 1214 ], - "commit": "7bfea92ba1dae9d13d442e2f84f9fb6c05a0a9bd", - "sha256": "01f2p58qsny7p9l6vrra0i2m2g1k05p39m0bzi906zm5awx7l0rr" + "commit": "af5f95ff98e2432837f5aa848ba38dd626e82fce", + "sha256": "0rdh4bzwq60m641r41kbsgzpkx8hxl7vx82y1cf7zp8zk8la4pd8" }, "stable": { "version": [ @@ -48594,11 +50861,11 @@ "url": "https://git.carcosa.net/jmcbray/emacs-instapaper.git", "unstable": { "version": [ - 20130104, - 1421 + 20110419, + 1355 ], - "commit": "8daa0058ede70025e9f020656abe0e0d01cd8f89", - "sha256": "0krscid3yz2b7kv75gd9fs92zgfl7pnl77dbp5gycv5rmw5mivp8" + "commit": "f21531bcb935e7e9b9e8df83dd0e0838adbf9b1b", + "sha256": "1ckkdkwhhyc8nwz293m18i526817gldd8br193px0hwfaxqlxadl" }, "stable": { "version": [ @@ -48683,11 +50950,11 @@ "repo": "rudolfochrist/interleave", "unstable": { "version": [ - 20171004, - 624 + 20191129, + 958 ], - "commit": "87549df30cbc681baf86b238bd14c7cf7ec11fc4", - "sha256": "07430hsyq9q90rjzxq7ifq4mlfc8k8b7l6b31s7xk1xm2snbky6b" + "commit": "383eb955bf0084a6e6ec03c9bd34511e20e0407d", + "sha256": "11bm00pw0bg8z6b5gyfmb2iss5libp6m4x0mc8agazabxzhmzyx9" }, "stable": { "version": [ @@ -48707,16 +50974,16 @@ "repo": "commercialhaskell/intero", "unstable": { "version": [ - 20190919, - 216 + 20200125, + 848 ], "deps": [ "company", "flycheck", "haskell-mode" ], - "commit": "3848723cbeeaf61ca13e2a44c5b87a7fcd66b7c5", - "sha256": "14cg856gsla77qfxv4sivg7mw7mpv3pqk7l4nrh4vna9ziy78z3m" + "commit": "fdb0550a2ddb5692d470336aa4a057717d572695", + "sha256": "0myjhj416cbvlfv2x9h624nygfis94jaw9gqf75sjv6y4inkzy73" }, "stable": { "version": [ @@ -48827,11 +51094,14 @@ "repo": "thierryvolpiatto/ioccur", "unstable": { "version": [ - 20130822, - 548 + 20200326, + 1341 ], - "commit": "4c0ef992a6fcd2aed62e3866d56650463108ab5a", - "sha256": "1rz5wf19lg1lnm0h73ynhb0vl3c99k7vpipay2f8jls24pv60bra" + "deps": [ + "cl-lib" + ], + "commit": "59350b2066d61444f93c8a51b16353e746486e4c", + "sha256": "1055db76008a5nkb243ciq680fg4nn5yzkdv4x8sd1mq1hrs33qh" } }, { @@ -48991,15 +51261,15 @@ "repo": "Sarcasm/irony-mode", "unstable": { "version": [ - 20191009, - 2139 + 20200130, + 849 ], "deps": [ "cl-lib", "json" ], - "commit": "e630c497f973fa4d1f0fd0e0fd87fb9d18666986", - "sha256": "0n2nfcq58md1p2xdhq1smh8v7lsyj0ci7ma5xyd6bkg5rvhsh10i" + "commit": "5f75fc0c9274f4622470e2324e2f4457087aa643", + "sha256": "107ry1jxl7qiqa0ackn03whygndkabg20s7szl5xm1l87vx5xghc" }, "stable": { "version": [ @@ -49066,6 +51336,18 @@ "deps": [ "cl-lib" ], + "commit": "4d660afa365c82c3ed00f685b53f0d2358972d36", + "sha256": "0klngpw69kdh3l9jrvjq63xlgpqd86j8rrvivrzipddmplppz9gy" + }, + "stable": { + "version": [ + 0, + 0, + 7 + ], + "deps": [ + "cl-lib" + ], "commit": "462b8100451b947367aed2970c2669ea6d15edbd", "sha256": "0b8ncpi6kps7fx3fmgfwd2czaal52laf2k6pn46yh110sz6dl30m" } @@ -49220,8 +51502,8 @@ 20190113, 1424 ], - "commit": "fc1fcea5379bc7728a25dd81546886213e3db6fa", - "sha256": "1gvm5gfgmcw4mibi8899x9ry1zqm3ij6yl0dnmdqmv9dbv1zlqp2" + "commit": "698ffb93954817be0064ca6739f295d846707439", + "sha256": "10v6il7811w2907d8w2c28lnn29nlhdinlwwb7wy7rzl2vfinbm9" }, "stable": { "version": [ @@ -49296,11 +51578,11 @@ "repo": "abo-abo/swiper", "unstable": { "version": [ - 20191021, - 1017 + 20200319, + 1247 ], - "commit": "d2052bab4eecebab84e75b8a10b66f66a8574425", - "sha256": "0kxv03mb00ia48vk05xb6bqhkphjjh2pry6r2f5pyag0wgh5vyma" + "commit": "64f05f4735bba8b708bc12cfc2cbfb7fb7706787", + "sha256": "16b75jw0by1f8divymfygjbp5mikc2bjz4nqd907mdsndf8k6i8q" }, "stable": { "version": [ @@ -49320,8 +51602,8 @@ "repo": "tmalsburg/helm-bibtex", "unstable": { "version": [ - 20190918, - 1116 + 20191028, + 1313 ], "deps": [ "biblio", @@ -49332,8 +51614,8 @@ "s", "swiper" ], - "commit": "5a26b35c3fa223d4c74262137f34bb2f325c4411", - "sha256": "0nw35f2qr5pqswz1rbkgwvd2wmvg8hzjf419w9iffx1m858k99rf" + "commit": "d4471232be26793fbf56c0ac3690b5f537c378b9", + "sha256": "1bkzhic6qckb267025il1r3xcpz99kisphxiafni1pxvf9jafr0j" }, "stable": { "version": [ @@ -49354,6 +51636,27 @@ "sha256": "0arhy051945lxjqg77b275ny9nsv60cqj0qfpmvd8xkc07lqfn23" } }, + { + "ename": "ivy-clipmenu", + "commit": "17561e8af89bcb4da3d29a1acc04b8ff508af65b", + "sha256": "1zn5ccbsr1vniyznj597k98dy752g2ilfp8sznh4w2sljwxd74gi", + "fetcher": "github", + "repo": "wpcarro/ivy-clipmenu.el", + "unstable": { + "version": [ + 20200302, + 1419 + ], + "deps": [ + "dash", + "f", + "ivy", + "s" + ], + "commit": "ef25acf3f058fe1ede3a29fae2e9cdac8b08cd17", + "sha256": "1yzvaf95pncfi1r3xj8h6393dfvx291q3ahdwpp7qn3jh71kjx6k" + } + }, { "ename": "ivy-clojuredocs", "commit": "ef20e3b6fa8d4586d6f17a4e9a6746390dbb2b50", @@ -49406,6 +51709,24 @@ "sha256": "0slisbnfcdx8jv0p67ag6s4l0m0jmrwcpm5a2jm6sai9x67ayn4l" } }, + { + "ename": "ivy-emoji", + "commit": "f1121a85321a3184d1fa990ae86f5d1f3b04f145", + "sha256": "0sp8z7r1kffgfm4jrn5cqfi335vaynn27hs9345ybrxi3r4a3c0g", + "fetcher": "github", + "repo": "sbozzolo/ivy-emoji", + "unstable": { + "version": [ + 20200316, + 2351 + ], + "deps": [ + "ivy" + ], + "commit": "a1b7d32048278afd9b06536a8af96f533639d146", + "sha256": "0h3051qq6xjc7gkl2a8if9b9ak6wnlc4gmh268s8jvi0nd8dfw2z" + } + }, { "ename": "ivy-erlang-complete", "commit": "ac1b9e350d3f066e4e56202ebb443134d5fc3669", @@ -49414,8 +51735,8 @@ "repo": "s-kostyaev/ivy-erlang-complete", "unstable": { "version": [ - 20190910, - 426 + 20191112, + 1137 ], "deps": [ "async", @@ -49423,14 +51744,14 @@ "erlang", "ivy" ], - "commit": "95bb7da0f7d0e89b6732d1d14d4bc49007b8b794", - "sha256": "0jnpfxzzcgyrk7zdfnprchl6b15558zhn12a1pf3h3z6d3zyirql" + "commit": "c443dba0c466d36bef01a8985474f5da0a5a65fe", + "sha256": "0f0qr6h4y891lzlfi3k0a555qg0jw79fl9bfgv5fxi06m24q4683" }, "stable": { "version": [ 0, 3, - 1 + 2 ], "deps": [ "async", @@ -49438,8 +51759,8 @@ "erlang", "ivy" ], - "commit": "62e2b14ff25b0c143c882cb38d029b216acc3dd6", - "sha256": "0sbxmj3ap0navgi7lxlgwb9ykfb8khgh7nl1hmqfh2jn9vx2s568" + "commit": "7d60ed111dbfd34ab6ec1b07c06e2d16a5380b9a", + "sha256": "0z34ljmwr0hmkaq5z85p87vljywpv3nnsvhp1zc8cw4hvqarcjqg" } }, { @@ -49473,27 +51794,35 @@ } }, { - "ename": "ivy-feedwrangler", - "commit": "cf1c112939545f6d157111eabcb573738b09ef7c", - "sha256": "1mxm37biix8c0s32gfv4pidffvlgdz5i9325zk71fhgfzqwkf5vx", + "ename": "ivy-fuz", + "commit": "578c150cb8f61058f8003554d372944a990d7a7d", + "sha256": "1z7r4fw1kl4vnfd5n6d628xwqhlr1768yfpj55gg28bq5lfx725h", "fetcher": "github", - "repo": "asimpson/ivy-feedwrangler", + "repo": "Silex/ivy-fuz.el", "unstable": { "version": [ - 20180618, - 1522 + 20191222, + 946 ], - "commit": "051eac49cae32b16fab2e06ff0115cd8fb5dc499", - "sha256": "1irp76kbg8d7wmgvfjbb4c3wmd29bdrl503jkq4w52fl57g94cvj" + "deps": [ + "fuz", + "ivy" + ], + "commit": "f171ac73422a4bae1503d63d804e691482ed35b2", + "sha256": "0ir1ighdlkh7ff1n607rwqyw2m9x9gr1ss4abdx6walajs7q3dki" }, "stable": { "version": [ + 1, 0, - 4, - 2 + 0 ], - "commit": "051eac49cae32b16fab2e06ff0115cd8fb5dc499", - "sha256": "1irp76kbg8d7wmgvfjbb4c3wmd29bdrl503jkq4w52fl57g94cvj" + "deps": [ + "fuz", + "ivy" + ], + "commit": "f171ac73422a4bae1503d63d804e691482ed35b2", + "sha256": "0ir1ighdlkh7ff1n607rwqyw2m9x9gr1ss4abdx6walajs7q3dki" } }, { @@ -49548,8 +51877,8 @@ "historian", "ivy" ], - "commit": "64f4ef8cd4e417dfa090138a2d4ea1e72fd4456a", - "sha256": "0py43kml7fcf1k28pali7n9nhsjp003j02cpynqcz6hmk8zr7b48" + "commit": "ac1bea7d99dd6965c72fabeb72d5fdc38c5380a4", + "sha256": "13pray3iapy6vbd1y1y7fqcnjpsvgfz2z7j1a1awzd8ifp12g9cp" } }, { @@ -49567,8 +51896,8 @@ "hydra", "ivy" ], - "commit": "d2052bab4eecebab84e75b8a10b66f66a8574425", - "sha256": "0kxv03mb00ia48vk05xb6bqhkphjjh2pry6r2f5pyag0wgh5vyma" + "commit": "64f05f4735bba8b708bc12cfc2cbfb7fb7706787", + "sha256": "16b75jw0by1f8divymfygjbp5mikc2bjz4nqd907mdsndf8k6i8q" }, "stable": { "version": [ @@ -49645,15 +51974,15 @@ "repo": "akirak/ivy-omni-org", "unstable": { "version": [ - 20191013, - 423 + 20200125, + 807 ], "deps": [ "dash", "ivy" ], - "commit": "8d856238a5d93abec3b896f643a69960b50e821d", - "sha256": "026cz4pdcpnqcavsh1wgh2xpwp7n6wrd4d62bk8rc1caf49y0i26" + "commit": "113477ae46ec857c5794fc0a031c1e579615f0a9", + "sha256": "1j9gwl3azh6y24yiy2s9p9yh6vhs2rmydv2496ivwxqnq9md5b49" } }, { @@ -49732,15 +52061,15 @@ "repo": "tumashu/ivy-posframe", "unstable": { "version": [ - 20190928, - 554 + 20191226, + 637 ], "deps": [ "ivy", "posframe" ], - "commit": "81f2ea14ddbdd4b840f18dd13ad3e30a6b791b4a", - "sha256": "0b5sip1lc61hxi6bpvkv96vy83xb7cjblssjnzm9yxlniqc778b9" + "commit": "6d697ff00ac406b919eba8665b1bc18a2b423cda", + "sha256": "05zhfhml8bd1zi1msy6zjkimirwq59i9fwa0mxy9l88si3dmb2hb" } }, { @@ -49751,27 +52080,27 @@ "repo": "raxod502/prescient.el", "unstable": { "version": [ - 20191025, - 354 + 20191224, + 220 ], "deps": [ "ivy", "prescient" ], - "commit": "82a90c4142c369f4090a42536179c6029d3fdafd", - "sha256": "0n919w068j73dnlxfzsvzh7j385phi4z718pi6xq6cygkjkq9zq8" + "commit": "a194852e8022762843052e58a9d0fbdaa1df0fe5", + "sha256": "0da4s32fza42vdiqhh7cdim08by5i4909q93ivxkmgrmqfgdvz0p" }, "stable": { "version": [ - 3, - 3 + 4, + 0 ], "deps": [ "ivy", "prescient" ], - "commit": "2f01b640e3a487718dbc481d14406005c0212ed9", - "sha256": "1wqk1g8fjpcbpiz32k7arnisncd4n9zs84dn3qn9y8ggjzldqy91" + "commit": "ad9fbe8a17fe74b27a39bcc034f3da1865663387", + "sha256": "008hxy1vasnyz36wwg44gikpi80ng75hj85nrswk60b7z7cznbmr" } }, { @@ -49813,26 +52142,26 @@ "repo": "Yevgnen/ivy-rich", "unstable": { "version": [ - 20191025, - 432 + 20200322, + 1326 ], "deps": [ "ivy" ], - "commit": "3f571704fa50e47174c92938d19c945a3bdf09b5", - "sha256": "00fcawjrfqzgnzcij1yrvnzbfqdghvgg94fihf97qs4qd79zzxb6" + "commit": "596874d1469667f896b83731914d7d4456025553", + "sha256": "0yym3l24zzn1yjg3fjkq7lpvpp9w7wi2vl161v53pmg1v94xig6s" }, "stable": { "version": [ 0, 1, - 4 + 6 ], "deps": [ "ivy" ], - "commit": "25e36b10eff7fd299fcc03f15288b4fff33974e4", - "sha256": "070y28ldp5dvh12b7qv27mqdgxiq2dll7fx432hb2i6mk8lz5hpp" + "commit": "840e13314774a40b69f10f0a15ce1d6af4187b12", + "sha256": "1ra18v6lgz3m6asm6d5b92zn1x22yiz4cwxd9b54dnvwi11121m7" } }, { @@ -49843,27 +52172,27 @@ "repo": "Andersbakken/rtags", "unstable": { "version": [ - 20190821, - 1946 + 20191222, + 920 ], "deps": [ "ivy", "rtags" ], - "commit": "f2633f565fc5e7e6958993ef105225f4e68e43ba", - "sha256": "1bjgr7wa82ccrc25r7agfaq3iz7xlp1qchvkmkx3xy59jv4yafjz" + "commit": "d370c09007d299dc6b6aae719bf728b95dd426c5", + "sha256": "0hakpd1dwhn2nkfhx4hli0l7hf3p1g8vpyrrczq45smfsz73d96x" }, "stable": { "version": [ - 3, - 23 + 2, + 38 ], "deps": [ "ivy", "rtags" ], - "commit": "7169ed577d676690a3c6f0025b54e8477d80eacf", - "sha256": "1i94dizg3wvkvq8c2pf5bzkx8zwzcfi4p3l73c779y145bygssnq" + "commit": "9687ccdb9e539981e7934e768ea5c84464a61139", + "sha256": "1r6l7dgr2ch586zrdi5l8fhdj4qdva8ldz7cjvi2byc2pd2xs8rx" } }, { @@ -49874,14 +52203,14 @@ "repo": "Kungsgeten/ivy-todo", "unstable": { "version": [ - 20171208, - 1609 + 20200323, + 2005 ], "deps": [ "ivy" ], - "commit": "964e347cea1a6097854d7113f5b07f6c5ef81df0", - "sha256": "07208qdk1a77dgh9qmpn164x5mgkzvprsdvb7y35ax12r2q541b8" + "commit": "d74501cd334b7d709659946c5e02b21cfd5507de", + "sha256": "0j9cdzr5s7zi6qf4cax8bc2jrprgaz85mfvc9cx52ryd3yn8l6g0" } }, { @@ -49910,14 +52239,14 @@ "repo": "alexmurray/ivy-xref", "unstable": { "version": [ - 20190611, - 1305 + 20191126, + 401 ], "deps": [ "ivy" ], - "commit": "1a35fc0f070388701b05b0a455cbe262e924d547", - "sha256": "0d71nm9d9ajp5i6dnl8h1hw9jqp8gd1ajgninb1h13i80rplzl9k" + "commit": "3d4c35fe2b243d948d8fe02a1f0d76a249d63de9", + "sha256": "1c0k1in2hpfwfd7m5r8623d58kxsrfl6pwpgdrkk3077vdgbwiip" } }, { @@ -49937,8 +52266,8 @@ "ivy", "yasnippet" ], - "commit": "32580b4fd23ebf9ca7dde96704f7d53df6e253cd", - "sha256": "1wfg6mmd5gl1qgvayyzpxlkh9s7jgn20y8l1vh1zbj1czvv51xp8" + "commit": "ebf05761cd890bccd8072051f988dae7ab11c9ce", + "sha256": "01dc8hv464r3q3d6whix76sqwfkjcvhdg55jmw0ck9jwmhwsvc7x" } }, { @@ -50074,10 +52403,10 @@ }, { "ename": "jabber", - "commit": "ef7dbf3c2ffee5a4d71466ce037c618e0434a346", - "sha256": "04d2jdzs3c790ms70px8xvyip1liqvd3jy2mbs8qqbwyiccb74xx", - "fetcher": "git", - "url": "https://github.com/legoscia/emacs-jabber.git", + "commit": "d29cc2a26829e678467664d6b2f5c171dc9dbd25", + "sha256": "0vsmj33qh07amkdlp5i0ldspxsw8pp16lwcq97i1xk59glif0n2f", + "fetcher": "github", + "repo": "legoscia/emacs-jabber", "unstable": { "version": [ 20180927, @@ -50117,11 +52446,11 @@ "url": "https://bitbucket.org/sbarbit/jack-connect", "unstable": { "version": [ - 20190311, - 1920 + 20200325, + 1639 ], - "commit": "3be5f03ba39ffab65e974cf1624cf38588639dcb", - "sha256": "1lb7z060jrbr0ijzif5p3qg70lg21h1a6jyzyfqfhwf2iwa3mkcj" + "commit": "c227d1ed3016960c8666a60e4215bbb029436bc7", + "sha256": "1w66dpn0cmdqwgjd1528cd2739ijxhsr62zyx2arlr9ldrnqy5f6" } }, { @@ -50180,11 +52509,11 @@ "repo": "ALSchwalm/janet-mode", "unstable": { "version": [ - 20190917, - 124 + 20191201, + 2353 ], - "commit": "349eba576455f1c8f40acaa77ef222bf6432c4e7", - "sha256": "0c0idb1rfp7n99jq1jmjvgmv77f38jrvxjy95lx27j743i8zkb7d" + "commit": "62a1ca33ac443e23869bc83dd2149cc014bb5132", + "sha256": "02chr2dcyf3946pg2wysybca559n2vm9lyb65zx6h6pvqhmg4kwp" } }, { @@ -50467,8 +52796,8 @@ "repo": "jdee-emacs/jdee", "unstable": { "version": [ - 20190418, - 1626 + 20191102, + 1426 ], "deps": [ "dash", @@ -50476,8 +52805,8 @@ "memoize", "s" ], - "commit": "b9ce633d68ece00dac03d3eeddc4477de53e5e38", - "sha256": "0gwcl9c0y2s9xyrajwrwiaklfd8as9hmmq0lbrd7fy4q0l0vpr98" + "commit": "b510a29f1fc1bea218a6230fb219922775687c78", + "sha256": "0c0jfi3gg85ccid7h9ll0a160lsjb11wxqncs4qnz75d3npmgsw9" } }, { @@ -50636,15 +52965,15 @@ "repo": "rmuslimov/jenkins.el", "unstable": { "version": [ - 20190521, - 400 + 20200115, + 2133 ], "deps": [ "dash", "json" ], - "commit": "9c7b9d4cb39eff7d6ac4d0cbd5ebc103dc86cac2", - "sha256": "1s49xmpc975q1ffb5c7cjrcwpa4a7kcakri26f5vqy3hn1h0c2v7" + "commit": "29e27a685ec971b518251ce0e66a0b67d78ea395", + "sha256": "0ms9i4dww801q09n4wzjpaqd6k89xdkn5vx3i565p748kp9lqhz6" } }, { @@ -50670,8 +52999,8 @@ "repo": "emiller88/emacs-jest", "unstable": { "version": [ - 20181216, - 459 + 20200318, + 237 ], "deps": [ "cl-lib", @@ -50682,8 +53011,23 @@ "projectile", "s" ], - "commit": "4c3b718b6a6fd4bf1d6209be1beffa33f6156b90", - "sha256": "18hqsk81f846nrx5wcbm4c0v8a500aag9ki435ls4axsv0ka7n2b" + "commit": "b51be19c1de9e82ee1dc62921be2222fc5685eed", + "sha256": "1jdphlhp9vxvkj51cswqfgka910216snyjhql700x4dgpmvkcv56" + } + }, + { + "ename": "jest-test-mode", + "commit": "767499b7048cc0f1e47dff17f66f1e2fe8b023b5", + "sha256": "09vwidm49bw8kb4a9vax4rgbzk1ndg0fkdaj9k9sy973rapb213a", + "fetcher": "github", + "repo": "rymndhng/jest-test-mode", + "unstable": { + "version": [ + 20200329, + 506 + ], + "commit": "f04d08db36715d7509fd68448f74f917c6c1a382", + "sha256": "1pmzls19wpg60ql0b5l6rhml8hh8mzpbc0dgylzhps1jghi055s1" } }, { @@ -50919,11 +53263,11 @@ "repo": "ljos/jq-mode", "unstable": { "version": [ - 20190718, - 913 + 20200317, + 852 ], - "commit": "a439bd395e0ad6b6110789b8f10d0efbe1fe889d", - "sha256": "18r9igkxy7ymj5xran806f6cy099gb19mg8minchs98jsjjmka9g" + "commit": "bc904840f27fe7b0e6dbdaeb912a7175a3837110", + "sha256": "0w5cgys1yfhirhsvj4n5k6km2xwyqvlnbv0m0sim1vavizzfmda4" }, "stable": { "version": [ @@ -50980,8 +53324,8 @@ 20180807, 1352 ], - "commit": "b4fec1497c76d36f7d8a2aad44983f8b6f501180", - "sha256": "0s80f6sq3ly9wiz5az1imrn5lyqhn0cdlq0vvfadk2ycvb370989" + "commit": "306abcfb9f6e46962061a34b68d4f6baa8c7aba4", + "sha256": "1pifplr4qr9667bbbqgqg39v8dyglvg6ljglkjga0d2n39am7r2q" }, "stable": { "version": [ @@ -51016,20 +53360,20 @@ "repo": "redguardtoo/js-comint", "unstable": { "version": [ - 20190606, - 6 + 20200117, + 615 ], - "commit": "ab8953bdf0176b1fadd7a3bb621f848ec5dc1f0c", - "sha256": "0li5za8zamwpr6cdz4b171wa0njana0ddmclrkbw1imkarb4yhp5" + "commit": "0dedaf4753fbe8cdbab14aa85f05d7673cbee8b6", + "sha256": "09wfafrklkybfg44skn1lg2hvcj4gfdv908dq87w1r4wv6ibkvka" }, "stable": { "version": [ 1, - 1, - 1 + 2, + 0 ], - "commit": "83e932e4a83d1a69098ee87e0ab911d299368e60", - "sha256": "1r2fwsdfkbqnm4n4dwlp7gc267ghj4vd0naj431w7pl529dmrb6x" + "commit": "0dedaf4753fbe8cdbab14aa85f05d7673cbee8b6", + "sha256": "09wfafrklkybfg44skn1lg2hvcj4gfdv908dq87w1r4wv6ibkvka" } }, { @@ -51093,14 +53437,14 @@ "repo": "sooqua/js-react-redux-yasnippets", "unstable": { "version": [ - 20190911, - 1259 + 20200316, + 1144 ], "deps": [ "yasnippet" ], - "commit": "70785d126a28ffcb314fb4b354319418586e06b1", - "sha256": "0adlnjkcq0kpadc1dqwfzrrk0xd4jc0rc4k8hbj6nh4dhc7shnk0" + "commit": "9f509043f01fa59bff4daf31b2e95d63f8deab4a", + "sha256": "00icd76y7sp3cby6n1mkxma4h6aqkrq6cqsnbqrpsgq99qqy30my" } }, { @@ -51171,14 +53515,14 @@ "repo": "mooz/js2-mode", "unstable": { "version": [ - 20190815, - 1327 + 20200211, + 2057 ], "deps": [ "cl-lib" ], - "commit": "b3841a7a304d9d1328fdb0868fbbecf0c2f9831f", - "sha256": "0rl9vz194c29ljiwgk7xfcgc047hi2ybda7mlj3r1plhk80768n6" + "commit": "fe53814dc2a0db2e95ac06083362e43923bf83fc", + "sha256": "0b30c5valf58md5h5zm45nkx9xdszwi4kz12qfzh27fyn46gdwjq" }, "stable": { "version": [ @@ -51231,10 +53575,10 @@ }, { "ename": "js3-mode", - "commit": "805a7c7fee2bafd8785813963bf91ac1ca417fd1", - "sha256": "12s5qf6zfcv4m5kqxvh9b4zgwf433x39a210d957gjjp5mywbb1r", + "commit": "cdd1f8002636bf02c7a3d3d0a075758972eaf228", + "sha256": "0iqhqq9wkhpgw1n83x6f8qib0agc626cv0qah73v6497ra9ri8ni", "fetcher": "github", - "repo": "thomblake/js3-mode", + "repo": "tamzinblake/js3-mode", "unstable": { "version": [ 20160515, @@ -51335,14 +53679,14 @@ "repo": "DamienCassou/json-navigator", "unstable": { "version": [ - 20190131, - 1031 + 20191213, + 755 ], "deps": [ "hierarchy" ], - "commit": "f4cde60c4203fc70cc7ff22ed1d6579159ce2598", - "sha256": "0xrjbx6rkm8a6pmzhdph0r6l468hj827dvvq2hxhcm8v5gk6m690" + "commit": "afd902e0b5cde37fad4786515a695d17f1625286", + "sha256": "0gn19qn11n86rn9b6knp9fb5jx9m2q1khhm4vnh0vjck7jxi9sqr" }, "stable": { "version": [ @@ -51494,11 +53838,11 @@ "repo": "mgyucht/jsonnet-mode", "unstable": { "version": [ - 20181211, - 1853 + 20200218, + 2217 ], - "commit": "2b90b4e12a11c42df0f1e5db327a50555b6ff023", - "sha256": "0j1dggxq1rm47cbi7khask40sj1wrcd0jki4m7j15qaxw7ryihhm" + "commit": "d8b486c8376a4785a7f2dc8a16fe1f2d82c6bfae", + "sha256": "0xpy699jh6ia46brd7i2qrfi0zrcdrhj3dc8d275va9w8a78paks" }, "stable": { "version": [ @@ -51550,30 +53894,6 @@ "sha256": "16jgmabcqrjb3v9c6q711jqn9dna88bmzm4880mdry69ixwcydxy" } }, - { - "ename": "jsx-mode", - "commit": "7dea24e922f18c1f7e1b97da07ba2e4f33170557", - "sha256": "1lnjnyn8qf3biqr92z443z6b58dly7glksp1g986vgqzdprq3n1b", - "fetcher": "github", - "repo": "jsx/jsx-mode.el", - "unstable": { - "version": [ - 20130908, - 1724 - ], - "commit": "47213429c09259126cddb5742482cfc444c70d50", - "sha256": "1g648r0wrd8m5ggl5jrplmj7jmr68bh2ykyii5wv30zfba97r1sh" - }, - "stable": { - "version": [ - 0, - 1, - 10 - ], - "commit": "1ca260b76f6e6251c528ed89501597a5b456c179", - "sha256": "1wx28rr5dk238yz07xn95v88qmv10c1gz9pcxard2kszpnmrn6dx" - } - }, { "ename": "jtags", "commit": "caaa21f235c4864f6008fb454d0a970a2fd22a86", @@ -51597,11 +53917,19 @@ "repo": "JuliaEditorSupport/julia-emacs", "unstable": { "version": [ - 20191002, - 1352 + 20200324, + 1652 ], - "commit": "ad6a4944feb61f5c7238cfaf6c99ae63544315c2", - "sha256": "1m4w0ha5zkclmdfr6wrpbwz1xqvjclbl63vxfsiq6qwmdajrq97g" + "commit": "1c122f1dff8dd2674245b2ce5e43b62504864bfd", + "sha256": "1ki42xx7vws8hb5vr1rgm2aih4qadf9qva8c4zq1hzmzq5j74jry" + }, + "stable": { + "version": [ + 0, + 4 + ], + "commit": "8bfc709716a257521cb386f20b8932e83db930a9", + "sha256": "1w131jb9mhvyjxa0p93iwfhzidgbcs6b8i6jg79yisqb9wchik99" } }, { @@ -51612,11 +53940,14 @@ "repo": "tpapp/julia-repl", "unstable": { "version": [ - 20190908, - 1717 + 20200310, + 1145 ], - "commit": "b8155b8a1e23e1ad740fd7bd49b5d841b1365c7d", - "sha256": "0qdn70h6k03l3xmv4xmbvrs1lx632jihhmkvjxk5hp4nk5phh9rk" + "deps": [ + "s" + ], + "commit": "5fa04de4e76e10d5ee37d4244f48ddae4503faa1", + "sha256": "1xnb3r5999ipkkvh7fl2kr0yy0j3vmnw7a6n23m9ps4fvy6hpl9n" }, "stable": { "version": [ @@ -51646,6 +53977,50 @@ "sha256": "182r7x7w3xnx7c54izz3rlz0khcwh7v21m89qpq99f9dvcs6273k" } }, + { + "ename": "julia-snail", + "commit": "4b80da8bdccaa0992deb07cef7ea4a582d9707ae", + "sha256": "0yljiqgamm5gjr1dbzjfqvnrijhgrpjd7gj8and1w33s1d2qh8gd", + "fetcher": "github", + "repo": "gcv/julia-snail", + "unstable": { + "version": [ + 20200327, + 602 + ], + "deps": [ + "cl-lib", + "dash", + "julia-mode", + "parsec", + "s", + "spinner", + "vterm" + ], + "commit": "c293f0db0203708e49139cb3b32e5826056ef972", + "sha256": "1fyw36c5f70j53jl03yk79pgr0x4q89mwyb77n9xcbscdhaxv3s2" + }, + "stable": { + "version": [ + 1, + 0, + 0, + -2, + 6 + ], + "deps": [ + "cl-lib", + "dash", + "julia-mode", + "parsec", + "s", + "spinner", + "vterm" + ], + "commit": "596f59774edf213c4c4885992dda158de145be03", + "sha256": "0x8mlvq264ihhcdbkljhaij6hsvlh8s4fmrd8x970c7i3qi3hh7k" + } + }, { "ename": "jumblr", "commit": "b47000c35a181c03263e85e8955eb4b4c9e69e4d", @@ -51778,8 +54153,8 @@ "repo": "dzop/emacs-jupyter", "unstable": { "version": [ - 20191019, - 1519 + 20200329, + 828 ], "deps": [ "cl-lib", @@ -51787,8 +54162,8 @@ "websocket", "zmq" ], - "commit": "9e3c1633586982e278f072dfaaabd115fa4d19f7", - "sha256": "08aig8b2xh9yr5dqj6jivv54vc93277xffmmd3q0k5ghf4087c8n" + "commit": "b691d38483b6540d42d482a32d35eb54178e5658", + "sha256": "1lp6xg71snlsaffl7afrgjcs99l2axc5xrbkrncc50zjhxlimxrr" }, "stable": { "version": [ @@ -52035,10 +54410,10 @@ }, { "ename": "kanban", - "commit": "855ea20024b606314f8590129259747cac0bcc97", - "sha256": "1j4qv3xcg0gk07yx3b4kayiy1n3w8yq1r78h07613iljx2ny91fz", - "fetcher": "bitbucket", - "repo": "ArneBab/kanban.el", + "commit": "c5c918900ad97075d788b3de658cddbb0c94f5d0", + "sha256": "04sy524zz5y99pb1nvlvqf9qyk57mrlmjqbjy44crl34ypi8gik6", + "fetcher": "hg", + "url": "https://hg.sr.ht/~arnebab/kanban.el", "unstable": { "version": [ 20170418, @@ -52105,28 +54480,28 @@ "repo": "ogdenwebb/emacs-kaolin-themes", "unstable": { "version": [ - 20190921, - 751 + 20200324, + 1349 ], "deps": [ "autothemer", "cl-lib" ], - "commit": "97c8d71977f12e4b791bdd0646c3e128bbe9fc1b", - "sha256": "0jv817fpbvadqvl44xf9ai8iw2w6jhlc3gsvb9by6cr6rbqyz9js" + "commit": "9877c12ad412e79b3d88423f911be1ff59a72e0e", + "sha256": "079si7dhl45rx2vf8kf8srflk6nd6yxqz44xbsrh0s39gpp9v5dh" }, "stable": { "version": [ 1, 5, - 2 + 4 ], "deps": [ "autothemer", "cl-lib" ], - "commit": "6b335f4cb203e40c7ee331ecc91f7d95feb23acb", - "sha256": "052lyf5dc6p70dla6ggb24941aaz7lsdzgmkyc7rqxvm0xhm8d2d" + "commit": "db1c43915fe68f31fffa00159b4198c32e87c8ed", + "sha256": "038bqg66m5cpg1w70la3jr57rq9fngmb1g67z27lpqcf3xf416xc" } }, { @@ -52223,6 +54598,30 @@ "sha256": "07aqzfg2nn35bkikrmk1lszqkc6h8vn2551m22mwc19lmdx94p2i" } }, + { + "ename": "keepass-mode", + "commit": "350528855b482abee717d9d0515279e41ea9265e", + "sha256": "0vgkx8iz7vzavdkpgfxpnn6pcsnrfhf0vgx2m17rqv3g8ryb38hs", + "fetcher": "github", + "repo": "ifosch/keepass-mode", + "unstable": { + "version": [ + 20200216, + 723 + ], + "commit": "09dcc1da15808b5b6c22bc5d0cb4e2ba5d425ef8", + "sha256": "0r3aczydp6435alirl9c2gbb1a92c9mv6ibk9h57ds30z9ia31jr" + }, + "stable": { + "version": [ + 0, + 0, + 2 + ], + "commit": "ad073eaab4f96ca033df023736d195dc3b611897", + "sha256": "0kyzcws47ch3pkw9ijb4gjr7l933c3mrxc9bsy16ddkc8dvl7yng" + } + }, { "ename": "kerl", "commit": "166afdc776689b0da93576dbeaa71ff6dfb627db", @@ -52322,11 +54721,11 @@ "repo": "federicotdn/key-quiz", "unstable": { "version": [ - 20190721, - 1357 + 20200226, + 2129 ], - "commit": "f4a27da3c09dbee62d63dd756bc44652f6319692", - "sha256": "1bw3ywjv49bmkxkcjfr8pnshy2kxklfx253cd1qaplw1g28d0plb" + "commit": "1ee67f3f8977d95785e021f7896685de1979137e", + "sha256": "0cv0naq2g8z52vgf1p4mb55ww30bp2kpj1jp5cjnql1hxsvbx0mm" } }, { @@ -52367,20 +54766,20 @@ "repo": "tarsius/keycast", "unstable": { "version": [ - 20191023, - 2135 + 20200103, + 1239 ], - "commit": "ab41be43b6d9efd5eff5ad7f22a997cc41e8daf0", - "sha256": "17hpyfkmr8ij3pr2cpl189svar2w5m01glmzvr95br6qmcifvvqa" + "commit": "adb55497c0f16e90069d6e5e86b4f9f65f13624b", + "sha256": "1sprdfx0gvyqmq0fkf4bf56q3d8xxig2vxi38nzjx90llzvka35q" }, "stable": { "version": [ - 0, 1, - 4 + 0, + 1 ], - "commit": "fe416461b15543138ad4fef8ef5e2c364a6b5b2c", - "sha256": "15q2kc7mlmr856ldh6bkba26zq8fwia26cv1gsqwj3jmhml6mlq1" + "commit": "adb55497c0f16e90069d6e5e86b4f9f65f13624b", + "sha256": "1sprdfx0gvyqmq0fkf4bf56q3d8xxig2vxi38nzjx90llzvka35q" } }, { @@ -52444,8 +54843,8 @@ "deps": [ "cl-lib" ], - "commit": "9c665c8c219d18866403897936427bb408e3d6b9", - "sha256": "1dhdk4f6q340n0r9n8jld2n2fykp7m40x23n7sw4wpm8g151gxin" + "commit": "e5fe9d585ce882f1ba9afa5d894eaa82c79be4f4", + "sha256": "12m1jy8m8i39b809qbxx9g3r066jxhqwfyf5mqbd1lzlaw63b1i7" }, "stable": { "version": [ @@ -52464,26 +54863,26 @@ "repo": "tarsius/keymap-utils", "unstable": { "version": [ - 20180318, - 2237 + 20191222, + 2258 ], "deps": [ "cl-lib" ], - "commit": "1ad766dbc111ec78b1a292da97b9bd4856cd2ff7", - "sha256": "0imx8zp21bm066bzdynvasylrlhw0gr8mpk2bwkz8j1y5lsp54v8" + "commit": "0b9bb7f4959ca54f0827b202f513ec7508c11e0e", + "sha256": "11y1vdrj2isn00mh428ynzqnfxjsg0138wx0bs619j0pv6d3j09g" }, "stable": { "version": [ 3, 0, - 1 + 2 ], "deps": [ "cl-lib" ], - "commit": "1ad766dbc111ec78b1a292da97b9bd4856cd2ff7", - "sha256": "0imx8zp21bm066bzdynvasylrlhw0gr8mpk2bwkz8j1y5lsp54v8" + "commit": "0b9bb7f4959ca54f0827b202f513ec7508c11e0e", + "sha256": "11y1vdrj2isn00mh428ynzqnfxjsg0138wx0bs619j0pv6d3j09g" } }, { @@ -52601,6 +55000,36 @@ "sha256": "0xq835xzywks4b4kaz5i0pp759i23kibs5gkvvxasw0dncqh7j5c" } }, + { + "ename": "khardel", + "commit": "d0dafe07d355f705b268b19460cf071ab878961f", + "sha256": "0h9dhlzjrci4q5p18fwwizs31f4gyz8d5jq011bvzcvz9q1q75sp", + "fetcher": "github", + "repo": "DamienCassou/khardel", + "unstable": { + "version": [ + 20191124, + 1257 + ], + "deps": [ + "yaml-mode" + ], + "commit": "5ee835a4429c58dec3900e4fa3d7cc1e778c969b", + "sha256": "0k2q0m7g9bj4k5xc4cldhi7cfbb114g016abyzq3q3jaymja195z" + }, + "stable": { + "version": [ + 0, + 2, + 0 + ], + "deps": [ + "yaml-mode" + ], + "commit": "5ee835a4429c58dec3900e4fa3d7cc1e778c969b", + "sha256": "0k2q0m7g9bj4k5xc4cldhi7cfbb114g016abyzq3q3jaymja195z" + } + }, { "ename": "kibit-helper", "commit": "f7fee551ca9ed226f1285dffe87027e1e1047f65", @@ -52645,8 +55074,8 @@ "deps": [ "cl-lib" ], - "commit": "fec16e7e5bf603c6971230f344882ce7a0d04e90", - "sha256": "0p1zd1kyw48xf40zvbssmkf8cj6gb0lln4xdnx3v2hh1m2mr3xs5" + "commit": "e77fcf46284afa1fd13499db695745112f41c8cd", + "sha256": "0c65qnsibcppyrf3bqp4blv2bfamisfwgxqy90z0gkbxzw9q4lxw" }, "stable": { "version": [ @@ -52757,17 +55186,19 @@ 20180702, 2029 ], - "commit": "7947abfbb77cb50c6d7cce7c8739ab630e028034", - "sha256": "0qcwnq5wmc9yd253yi4x6b3v2p5d9vwb3skq9qv9igc0nhmq9gvb" + "commit": "26228b202e821824afd8b2536234b26c23ae1b9d", + "sha256": "1329xyhriha7037lnsg8bf4xqkc20f0h3bv7xifm2i40ib0z3wlx" }, "stable": { "version": [ - 1, - 11, + 2, + 0, + 0, + -1, 1 ], - "commit": "39c17457bae91baf8fe710dc989791e45879f136", - "sha256": "1rl56b7j3d6d57hx4c155brfv988ngcvc342ma09i630lh7gxpf5" + "commit": "ae0fa0cab3025e517452f44b91dd7d95182f39b2", + "sha256": "1ca9ggkbhfbr9d938nmg5klgmf5ayji0i201hcragjqj7hak18ia" } }, { @@ -52778,15 +55209,15 @@ "repo": "stardiviner/kiwix.el", "unstable": { "version": [ - 20191016, - 951 + 20200315, + 332 ], "deps": [ "cl-lib", "request" ], - "commit": "1fdcfcc6c080b5232cf588460283e16180a81dc9", - "sha256": "0088bnizccf372yivkw07x541ispmak8yy6ri2kqa15pkmszjfjh" + "commit": "d5e5780f3c933f873e1a19458c1ea269e9a57afe", + "sha256": "1p7fqw1j1kphvqb09c8s5lyqkxi7fd0gfpvyp0g0v0shdxydb9ix" }, "stable": { "version": [ @@ -52945,11 +55376,11 @@ "repo": "Emacs-Kotlin-Mode-Maintainers/kotlin-mode", "unstable": { "version": [ - 20191021, - 1834 + 20191102, + 1510 ], - "commit": "6aa6d56c0a04e655e3cbfd1ab7904a45b73ae21c", - "sha256": "1kdka9yqbh3m8nb3rpvax1fpjij7r3r2j2whys5cyvvrjfmp8hlh" + "commit": "ab610996820b5cbdb032edbf8747661131603ab8", + "sha256": "1dcaiwxymrch1vfzssjizv6l9isc68xcf8987c0l71zmzmrq1s7s" } }, { @@ -53011,6 +55442,30 @@ "sha256": "192s6hz71i0d8bwxn2pdl9yggs2l5fd6jxlxmry8fpk04qg3lqrg" } }, + { + "ename": "kubectx-mode", + "commit": "e1a9badd46f8900a1d6355cb2c703788ed66e8fb", + "sha256": "0g73yf3kl1f1c40p1na29hli4q0ligy0dh0lxc21k9mj57dbnzyg", + "fetcher": "github", + "repo": "terjesannum/emacs-kubectx-mode", + "unstable": { + "version": [ + 20200116, + 1918 + ], + "commit": "f08687ae5403eb18bbeffc6dafdfde469bdb9a36", + "sha256": "1yml417gj8ds3fiy0vvrv9vxnjyis157hcmhyn491hb67bd6xl5j" + }, + "stable": { + "version": [ + 1, + 2, + 0 + ], + "commit": "f08687ae5403eb18bbeffc6dafdfde469bdb9a36", + "sha256": "1yml417gj8ds3fiy0vvrv9vxnjyis157hcmhyn491hb67bd6xl5j" + } + }, { "ename": "kubel", "commit": "6fe35f90b858d0b6710b4bae8a2b80f97f1b8228", @@ -53019,14 +55474,55 @@ "repo": "abrochard/kubel", "unstable": { "version": [ - 20191014, - 2010 + 20200316, + 207 ], "deps": [ + "dash", + "s", "transient" ], - "commit": "9ed130c6e5d35b5fa41156f9ec62aa50365c23e0", - "sha256": "0xqjsng9fdf96h0sa01d0sza5qpkl14r2ccf0mmcg3l7c2xw8ibl" + "commit": "db3a999c028ffeeeb49936e8b921c364bf8f437e", + "sha256": "1ai33jma22agrxww6dcgsh6dbv5h36gixgs0b6n1q4d5v7k6d9q3" + }, + "stable": { + "version": [ + 2, + 0 + ], + "commit": "6fafe9c2b8edcb9df96965a315474c83a90b1809", + "sha256": "1q1wkwsx9dyjw1b6cxnz1w0xi8r75x7n6iq18v038ny2k110m6g9" + } + }, + { + "ename": "kubel-evil", + "commit": "659b07e3acaa7f1738632b614098c0bdb7850969", + "sha256": "1rvzgkrw88m2im1gadpxz9galjzcnpfmqlim5020vy8lxi558zcj", + "fetcher": "github", + "repo": "abrochard/kubel", + "unstable": { + "version": [ + 20200312, + 1349 + ], + "deps": [ + "evil", + "kubel" + ], + "commit": "db3a999c028ffeeeb49936e8b921c364bf8f437e", + "sha256": "1ai33jma22agrxww6dcgsh6dbv5h36gixgs0b6n1q4d5v7k6d9q3" + }, + "stable": { + "version": [ + 2, + 0 + ], + "deps": [ + "evil", + "kubel" + ], + "commit": "6fafe9c2b8edcb9df96965a315474c83a90b1809", + "sha256": "1q1wkwsx9dyjw1b6cxnz1w0xi8r75x7n6iq18v038ny2k110m6g9" } }, { @@ -53037,29 +55533,30 @@ "repo": "chrisbarrett/kubernetes-el", "unstable": { "version": [ - 20190822, - 913 + 20200114, + 436 ], "deps": [ "dash", "magit", "magit-popup" ], - "commit": "7ef0e4be3a788bf45914308d6e2158384e3f605b", - "sha256": "0zmjv1wndhy4j0mamz6phadp37zc6kgn4byln2p7pbwc7r9mzmlj" + "commit": "cc33d8c7bb114c34809ee86020b9e635eff0017b", + "sha256": "11bi1z28rf2ldx20mqgq6yfkpc1af9kgvjzrz3w3dcf074jp89lb" }, "stable": { "version": [ 0, - 12, + 13, 0 ], "deps": [ "dash", - "magit" + "magit", + "magit-popup" ], - "commit": "d4ce5eb5da1ea0879b7d3266d97aecc8aee2807c", - "sha256": "1asjmxw24bvaapjaljj37pv9cbvqqw7577q1mds4lnicvnbdsxzi" + "commit": "8ae9dc2340620c7d8efb2347723b25bde5a6fba0", + "sha256": "0di3vcq8c8j8avjlic7bhvbq4p27cvzyklm26wiq4rga88vjhyb0" } }, { @@ -53070,28 +55567,28 @@ "repo": "chrisbarrett/kubernetes-el", "unstable": { "version": [ - 20171123, - 219 + 20191108, + 615 ], "deps": [ "evil", "kubernetes" ], - "commit": "7ef0e4be3a788bf45914308d6e2158384e3f605b", - "sha256": "0zmjv1wndhy4j0mamz6phadp37zc6kgn4byln2p7pbwc7r9mzmlj" + "commit": "cc33d8c7bb114c34809ee86020b9e635eff0017b", + "sha256": "11bi1z28rf2ldx20mqgq6yfkpc1af9kgvjzrz3w3dcf074jp89lb" }, "stable": { "version": [ 0, - 12, + 13, 0 ], "deps": [ "evil", "kubernetes" ], - "commit": "d4ce5eb5da1ea0879b7d3266d97aecc8aee2807c", - "sha256": "1asjmxw24bvaapjaljj37pv9cbvqqw7577q1mds4lnicvnbdsxzi" + "commit": "8ae9dc2340620c7d8efb2347723b25bde5a6fba0", + "sha256": "0di3vcq8c8j8avjlic7bhvbq4p27cvzyklm26wiq4rga88vjhyb0" } }, { @@ -53138,14 +55635,14 @@ "repo": "emacsfodder/kurecolor", "unstable": { "version": [ - 20180401, - 1221 + 20200113, + 2027 ], "deps": [ "s" ], - "commit": "a27153f6a01f38226920772dc4917b73166da5e6", - "sha256": "04av67q5841jli6rp39hav3a5gr2vcf3db4qsv553i23ffplb955" + "commit": "3fc84840cbbd75e646cafa2fd3a00004b55e37ec", + "sha256": "0y8wj8f2wzhg5vl4kjrqny3333616s4lcil085190yyb7mjakvn5" }, "stable": { "version": [ @@ -53198,11 +55695,11 @@ "repo": "MetroWind/lab-theme", "unstable": { "version": [ - 20190320, - 1827 + 20200204, + 1931 ], - "commit": "17a21954725eae3bf7b77f724d7783936eb33742", - "sha256": "0q1j5h4nxpckfd5apwl4iqhgdnjpy2fjf9kqfknyiz7c7h7424d0" + "commit": "2cd61072d2b4c563d961f80918fc6b1dc45f7ba4", + "sha256": "0jwslzxjyclr4iw8ir0glcj5iasgx2z9i16qn7705sdmdmbzkdwz" } }, { @@ -53213,11 +55710,11 @@ "repo": "ksjogo/labburn-theme", "unstable": { "version": [ - 20170502, - 907 + 20200309, + 1556 ], - "commit": "e95334acd8a73fbe8e156f70e047014a87e92e66", - "sha256": "0ai8gr4an4d44lgin7kdzydn2d0a98jb8mv0n9b93bq160lbmkwj" + "commit": "d11537a2060df7e992217ede8f65d6c11de49458", + "sha256": "0aqdl3hq76r315h2h75lxgbyb7hw3hdg49n72frm1wx7hj372d0g" }, "stable": { "version": [ @@ -53237,11 +55734,11 @@ "repo": "HenryNewcomer/laguna-theme", "unstable": { "version": [ - 20190714, - 1830 + 20191229, + 19 ], - "commit": "66c613692b9f0c71050a236e98dbc54cb410946b", - "sha256": "0kms0m65mpmk9j5i1f4ag8a8hja1msn73z2f2gby440l07c8hcjy" + "commit": "0da19f68ba22a39c02d83063f5b4936401ce4d97", + "sha256": "1r8di1cmhcx2vfk3fsydx24spib1fi4wihnxa41favnkjzklz9jv" } }, { @@ -53300,26 +55797,26 @@ "repo": "mhayashi1120/Emacs-langtool", "unstable": { "version": [ - 20190303, - 2227 + 20200117, + 441 ], "deps": [ "cl-lib" ], - "commit": "81f2b8a07b29bbdd558db4b68dd904f4c0eb10a4", - "sha256": "01w765n5bib060f0hci34f0vchf90b4r8gr1ng2c4yx20dvdjnqh" + "commit": "a71ed02ce06920ae3cafd6708de1c21811ce14c3", + "sha256": "1ars70nx8gxb8szlp6jyqjll9gr7j9z5cd9ip1izqv00si6p1fvn" }, "stable": { "version": [ 2, 0, - 0 + 4 ], "deps": [ "cl-lib" ], - "commit": "d93286722cff3fecf8641a4a6c3b0691f30362fe", - "sha256": "17xa055705n4jb7nafqvqgl0a6fdaxp3b3q8q0gsv5vzycsc74ga" + "commit": "adb80f55665db65a46fc552d364386d3cc703d94", + "sha256": "15bbyc0fqdn7d0k8zrn71jljkq9cc8a5rcllywvph46lnfnqy3p6" } }, { @@ -53348,25 +55845,63 @@ "repo": "lassik/emacs-language-id", "unstable": { "version": [ - 20190207, - 1057 + 20200321, + 724 ], "deps": [ "cl-lib" ], - "commit": "9145c75eaa41a7a9deda928f704b99db056d3e9d", - "sha256": "10dwrb610jdal6ifpj34mmy8qqbca2sgfmvn4p4qpcc967sv4f1r" + "commit": "756f238b4fda63f6e0980f627869eb3c03d13f66", + "sha256": "18i1l7vpfa0y5zpy9hbcrkp79n30n7pkf0kasq718cj8ggczj120" }, "stable": { "version": [ 0, - 1 + 4, + 2 ], "deps": [ "cl-lib" ], - "commit": "9145c75eaa41a7a9deda928f704b99db056d3e9d", - "sha256": "10dwrb610jdal6ifpj34mmy8qqbca2sgfmvn4p4qpcc967sv4f1r" + "commit": "2c7b8599fc7fb56b0c820a9ae9f08053c71a8738", + "sha256": "10vrx3vfg8glrqngbyhwgkg5maib8ihv03psdd6qjhd0kik83498" + } + }, + { + "ename": "lastfm", + "commit": "0b87a3465eece39cb2f73a90dedf97dd0dd970c2", + "sha256": "06gy4br99r8l9ak2ac7js9nyw4v5b94a8ja4pkik49l90qgss93m", + "fetcher": "github", + "repo": "mihaiolteanu/lastfm.el", + "unstable": { + "version": [ + 20200320, + 1839 + ], + "deps": [ + "anaphora", + "elquery", + "memoize", + "request", + "s" + ], + "commit": "54636059512adec0176950e8fce3b9bf7423619d", + "sha256": "1ffvh71vgsdv118hhz0x2xfmqb2bayk7i3mdxc1ybs2vrdggnim4" + }, + "stable": { + "version": [ + 1, + 2 + ], + "deps": [ + "anaphora", + "elquery", + "memoize", + "request", + "s" + ], + "commit": "96568f07324ba32804be9352016956694923f5f3", + "sha256": "04a563g6rby8374azpfjdagbgdylcg2glfx5wdx5agd98bs15j28" } }, { @@ -53377,15 +55912,15 @@ "repo": "storvik/emacs-lastpass", "unstable": { "version": [ - 20171208, - 1016 + 20200320, + 2117 ], "deps": [ "cl-lib", "seq" ], - "commit": "a4529ce70b8187ed9ac4972997df152af58ef2eb", - "sha256": "1h4h7swww2is7qblqi5r1vh26a9lfl52c0yq7rgwd1pqclffgc8m" + "commit": "ac472f844bd1e109c62479253cbc40bb5e50ed8f", + "sha256": "07bh7vkczzpmkbxxyyhn912b5rjm975a49y1bq08y4vd006zsq4x" } }, { @@ -53445,16 +55980,16 @@ }, { "ename": "latex-pretty-symbols", - "commit": "5b7972602399f9df9139cff177e38653bb0f43ed", - "sha256": "1f2s2f64bmsx89a3crm4skhdi4pq9w18z9skxw3i3ydaj15s8jgl", - "fetcher": "bitbucket", - "repo": "mortiferus/latex-pretty-symbols.el", + "commit": "f96a50861bdb87133690d64af85e132cc504f13c", + "sha256": "1idxv83vvx29xavyzzm5vh5f3bb0yb1p6688csxaaikaj9fsa5gs", + "fetcher": "github", + "repo": "epa095/latex-pretty-symbols.el", "unstable": { "version": [ 20151112, 1044 ], - "commit": "ef4ea64c09ea182f38ecb88dfb31d58ed5e6063e", + "commit": "83d5888147bb734a94dfd4847a11e975a7d86ba8", "sha256": "0h9hncf2ghfkd3i3342ajj1niykhfr0aais3j6sjg1vkm16xbr3b" } }, @@ -53572,6 +56107,35 @@ "sha256": "0pbpns387fmalkakbdl2q7d2y720m7ai7mnydsinjwlkdrshvj4g" } }, + { + "ename": "lavenderless-theme", + "commit": "f21ef334dd997fb96e0306cd56538279644765f8", + "sha256": "1lbk654d4y5fg4j71kqmfq3xx8dr9rib2zcv9njaip77zjzbbxid", + "fetcher": "git", + "url": "https://git.sr.ht/~lthms/colorless-themes.el", + "unstable": { + "version": [ + 20200213, + 2057 + ], + "deps": [ + "colorless-themes" + ], + "commit": "2b4c341640c8191a39e4bc28d6cd04c7d6dcbb37", + "sha256": "0ni9cnrv464fk840i1ll241kzkiy1zc6nfrbdv3ciixxdxbshxbn" + }, + "stable": { + "version": [ + 0, + 2 + ], + "deps": [ + "colorless-themes" + ], + "commit": "8e539097185704444a5dd5545924de92c11ba767", + "sha256": "1p16vxai8dj1vy4ahflwij1ldx00jzrjcinpgpc7wgh6ka748v11" + } + }, { "ename": "lcb-mode", "commit": "fd1380a9ba363f62f297e3ab2995341258b51fd1", @@ -53633,20 +56197,20 @@ "repo": "conao3/leaf.el", "unstable": { "version": [ - 20191023, - 1053 + 20200327, + 1411 ], - "commit": "d2e3367ca53718275a02c205ad68925c4c878d2a", - "sha256": "1785ydsjnbg1ldfjgwny2jv2xp1jq52bkbvxczc03zlfzi8vdp5k" + "commit": "199045bfe411afc30cb7c7d18b8a6b03edebeae1", + "sha256": "0apaa5w2zfycigdf8d7x3h8aw8m11mz8b6l2d546dlbvxr5yra28" }, "stable": { "version": [ 3, - 5, + 6, 0 ], - "commit": "c8ca1ecc892229dc16019fe3a7eb98a7307e746f", - "sha256": "1rgd59146wad92yc64las0qgx67k2ifgsw1vwhp40xvkd7kb0r6d" + "commit": "c0a0fca2f9c83909c49729af75664411b4affab8", + "sha256": "18vrk19273xlg2nhkf7fvvhspnsfgk4dxa42x2q5599p9z7aph00" } }, { @@ -53657,14 +56221,14 @@ "repo": "conao3/leaf-keywords.el", "unstable": { "version": [ - 20190911, - 1658 + 20200328, + 845 ], "deps": [ "leaf" ], - "commit": "29cae76ea7817fe3719f4ebf6751cf434567e4d0", - "sha256": "0qsmixhn7jjlzxnxjs77nmyzqh6q0q9ssgjj7gnp3i4llv2jlj3y" + "commit": "3164f1f4b98be9efa9e28170cc9b8d14a10b3e56", + "sha256": "165x864rn9ha8dd3k62xgdp97fi961x75p6a7nldl0znzan65691" }, "stable": { "version": [ @@ -53684,8 +56248,8 @@ "repo": "leanprover/lean-mode", "unstable": { "version": [ - 20190914, - 958 + 20200319, + 838 ], "deps": [ "dash", @@ -53694,8 +56258,8 @@ "flycheck", "s" ], - "commit": "b5ba739f68ef731c03247bf6db2708502c8ac46c", - "sha256": "1dx0a76l7w3ck23sdjymigk1hycqiawfwv24yz6wqyy74f1pcyjf" + "commit": "65b55b1711fb61129312044d5ac7e6a2c2ee245c", + "sha256": "1zmw8950qhry2ixk2ng0pg4j0vwx11nvjlrpab9jg6x47ys9j65n" } }, { @@ -53738,6 +56302,21 @@ "sha256": "1k58rhk5p819cvfa6zg7j3ysvzhq6dc433fzhh1ff0gwga2vrqbz" } }, + { + "ename": "learn-ocaml", + "commit": "6110b273c4f3bb8eddf1b79dbfa82f9c01600182", + "sha256": "17fah2109s9dzavmbsw5bgpjb4m9r2j9rgpf38av3bd89qba416z", + "fetcher": "github", + "repo": "pfitaxel/learn-ocaml.el", + "unstable": { + "version": [ + 20200224, + 2229 + ], + "commit": "e3424b3ae3f7d85ef020d030c2fa58df86ed8955", + "sha256": "0a8x2c0lxa0xihpbc9i1dvn1l00nsmawl1nv3i06r6iq5486pqdn" + } + }, { "ename": "ledger-import", "commit": "4a1e2a9546b8b40f5f880197cb8166a6a715451f", @@ -53746,14 +56325,14 @@ "repo": "DamienCassou/ledger-import", "unstable": { "version": [ - 20190502, - 456 + 20200302, + 943 ], "deps": [ "ledger-mode" ], - "commit": "6911708e373e2cbdb3868df7711ef07925ed36bf", - "sha256": "15vz5fy5yr4m3b77nikqln3y5bihjdmrzgxbp56hz83dqkkcnc4l" + "commit": "955e915fef9d46c968ef9101f7770870e2d2d80f", + "sha256": "018f7k4j8q1ka36winv2higjp8vmm90vss7vwyck9hg4w708m85p" }, "stable": { "version": [ @@ -53776,20 +56355,20 @@ "repo": "ledger/ledger-mode", "unstable": { "version": [ - 20191008, - 1420 + 20200328, + 1927 ], - "commit": "214fad3ff8096bbd53cc079f71cfb845d12bfaa8", - "sha256": "05yjq15c7jj70vc5xp4k4h56nzybgibp48srkzjx8220q1w9656m" + "commit": "bfa25a92d0cf63c5316b5aa8d50bd6809297ea9e", + "sha256": "1gx9brcwdmwhk0w2p93szdla5bgn25f1bsi9lna2l8ax1sn3l5kd" }, "stable": { "version": [ - 3, - 1, - 1 + 4, + 0, + 0 ], - "commit": "96c4e81eed52e0ef514dc15a6ea6d877b3409a2a", - "sha256": "12q6wblwnb6y5c1882jz14742fqbm6p5jpzlvz7p90ylqfl7h989" + "commit": "964630f80e0e80dad83134a3660f56948390173a", + "sha256": "1r5rcyxd6d1rqwamzpvqdbkbdf1zbj75aaciqijrklnm59ps244y" } }, { @@ -53815,8 +56394,8 @@ "repo": "kaiwk/leetcode.el", "unstable": { "version": [ - 20191011, - 800 + 20200101, + 1111 ], "deps": [ "aio", @@ -53824,8 +56403,23 @@ "graphql", "spinner" ], - "commit": "86e9e167c10eed487cf6715a764527d84ccb35fa", - "sha256": "0mq4a2jv5lpy4wcfhp2cg63gdyqjv10ffb2702yjyd24nqmh3q76" + "commit": "28b78c45c86570cb1e3538f275eb4de1cf28cd04", + "sha256": "1c9zsh4ikflgqjrkjbilfqjjb0g698mqy2g5b210ssbivvkvncb5" + }, + "stable": { + "version": [ + 0, + 1, + 10 + ], + "deps": [ + "aio", + "dash", + "graphql", + "spinner" + ], + "commit": "28b78c45c86570cb1e3538f275eb4de1cf28cd04", + "sha256": "1c9zsh4ikflgqjrkjbilfqjjb0g698mqy2g5b210ssbivvkvncb5" } }, { @@ -53836,11 +56430,11 @@ "repo": "jorgenschaefer/legalese", "unstable": { "version": [ - 20150820, - 1724 + 20200119, + 2248 ], - "commit": "ec23e69d18329456beed9546a1d6c72f96db91cf", - "sha256": "05zpc8b2pyjz76fvmgr7zkl56g6nf6hi4nmxdg6gkw8fx6p8i19f" + "commit": "e465471d2d5a62d35073d93e0f8d40387a82e302", + "sha256": "0xg4pyyyzd637i7shhq1frbva5rmy2j7y9cnf7zmms6a5qq4k1af" } }, { @@ -53999,11 +56593,11 @@ "repo": "fniessen/emacs-leuven-theme", "unstable": { "version": [ - 20190831, - 1008 + 20200122, + 1934 ], - "commit": "026da5d614864a60bb151f0e75240a938e41923b", - "sha256": "008ynbzcszsbyj3pi9cm6ig1ks059xprkyhd74dnw8grlddwfimd" + "commit": "4bf80c2bb1e679b6e42e8d6547d6f33996830f73", + "sha256": "152731dwf0q1i1p5cjd3fwznl100vzsjk45ks1wxw4zv0w59q399" } }, { @@ -54067,26 +56661,26 @@ "repo": "DamienCassou/libbcel", "unstable": { "version": [ - 20190919, - 1948 + 20191203, + 654 ], "deps": [ "request" ], - "commit": "f3eab975b7222eb4441743744eb8697bd82b57ec", - "sha256": "1sj2ijphaabkayiry0vzx0digrz5dkacl78agrv0lz51m8r5c4fd" + "commit": "df466d31544c53d8550f9c08e58b70adc559c48c", + "sha256": "1l8m47aklx98m89i9d3kj9dd521xkicipgbfnpiyjzqmaw1bh6zm" }, "stable": { "version": [ 0, - 3, + 4, 0 ], "deps": [ "request" ], - "commit": "f3eab975b7222eb4441743744eb8697bd82b57ec", - "sha256": "1sj2ijphaabkayiry0vzx0digrz5dkacl78agrv0lz51m8r5c4fd" + "commit": "d02a38898016bba314802b1f6a07317e52ea6c63", + "sha256": "1z5ydhv9qyk0g9b25n4m0xbvdy0j4y009iq8v2vy1m8c09lzp1v9" } }, { @@ -54127,11 +56721,11 @@ "repo": "magit/libegit2", "unstable": { "version": [ - 20190810, - 1757 + 20200223, + 1431 ], - "commit": "60e1e7d360b376534c4b6258ddf7d5b5f0a68133", - "sha256": "18y3wdfy6pnyv0slggagdyy41mjwsprnr57ab1qmyz5dd8ryfwwn" + "commit": "6c3b89276a149b2d009882f756a9edf866671f05", + "sha256": "1r59bw0dggjf6ry2vbl0vddd5hxxh1mshr5h2bk9z74gy04cfi4y" } }, { @@ -54157,20 +56751,20 @@ "repo": "mpdel/libmpdel", "unstable": { "version": [ - 20191015, - 803 + 20200105, + 1537 ], - "commit": "983c27d11becf0078bc5b416746f171e7e238d6d", - "sha256": "0m8kb480v2cx3jniy73bim1g7kjsrvhh02li9d0qv7smala59nl3" + "commit": "95cb45ecea933e7befb2a5a6a6e7d15651c8746a", + "sha256": "0g0gsah4y12d2hrk2rsraxqjnd52fkikr0pgcrbrv2mcnqhs8c5m" }, "stable": { "version": [ 1, - 1, - 1 + 2, + 0 ], - "commit": "5cec415bd9db566088ec44b8bb4dd0a9cc76ccdc", - "sha256": "0qx7h6y9ih6qkijspzpn8gfpxjb486qrp0g4b9fpfzp8igc2ddik" + "commit": "a9d67cea595bfeff73cf6281fa735df98dee9a45", + "sha256": "1nzs6g2mg3jhfhhfcxjhd9sbvwzhmr6j6mc80ln2nr4gzjqgaa4k" } }, { @@ -54225,6 +56819,18 @@ "deps": [ "cl-lib" ], + "commit": "f50f8474db7c9b26ab3cf56d08e5184209f25cec", + "sha256": "1frf77ilyadrzil8sjp3rpr6v7j1nmmk1dz84d0kf8yr2cl48d9h" + }, + "stable": { + "version": [ + 0, + 2, + 3 + ], + "deps": [ + "cl-lib" + ], "commit": "ea7fc43210b5293beac4ac453b1bdde415f5183e", "sha256": "13vspm2c53ph25li4xd77q2v7rqwsszsy8a842ivcgn0k3qn6w0r" } @@ -54240,8 +56846,8 @@ 20180219, 1024 ], - "commit": "fefdee6fb6f7467b5afee6a591f677d7981b60bf", - "sha256": "0l176qgqvm9ia0z17y0wag38drhjz748qc4241g5y7ia2n20y3mb" + "commit": "d083a9f0c74830bd77b794babb09fe0f0fdb3854", + "sha256": "1fgd2kfwh7gl4yxrmvv8yrv6wvvwy6y0nwibqqsy55698a1qb2fm" }, "stable": { "version": [ @@ -54322,19 +56928,19 @@ "repo": "myrkr/dictionary-el", "unstable": { "version": [ - 20140718, - 329 + 20191111, + 446 ], - "commit": "6edc1d0a4156d33c3da0c1649c308b809fda46e1", - "sha256": "0g95q3yggzxr8d2gjxamfwx8xbzf182naxpb265r7v9awd35bqk5" + "commit": "c9cad101100975e88873636bfd426b7a19304ebd", + "sha256": "0zsjbpq0s0xdxd9r541f04bj1khhgzhdlzr0m4p17zjh1zardbpi" }, "stable": { "version": [ 1, - 10 + 11 ], - "commit": "9ef1672ecd367827381bbbc9af93685980083c5c", - "sha256": "05xfgn9sabi1ykk8zbk2vza1g8pdrg08j5cb58f50nda3q8ndf4s" + "commit": "c9cad101100975e88873636bfd426b7a19304ebd", + "sha256": "0zsjbpq0s0xdxd9r541f04bj1khhgzhdlzr0m4p17zjh1zardbpi" } }, { @@ -54345,15 +56951,15 @@ "repo": "noctuid/link-hint.el", "unstable": { "version": [ - 20190721, - 1844 + 20200205, + 2244 ], "deps": [ "avy", "cl-lib" ], - "commit": "4db4e6fb82bfffd00f540e3a489013f6a8173871", - "sha256": "0rphww249vqk7lassihapw836h6f9w7qnz45qhb07j7d82bxy7pr" + "commit": "0d9cabcdb783ddc834ede6dcb1bed627c3acd303", + "sha256": "1ybzxc421wyy34w71lgbdfx7vgy9j6va9jjv1mkxa0zxqpdar974" } }, { @@ -54455,11 +57061,11 @@ "repo": "marcowahl/lisp-butt-mode", "unstable": { "version": [ - 20191024, - 1229 + 20191128, + 835 ], - "commit": "47007084d0893373731fabd828c4d4f28058f8e1", - "sha256": "10hc9021q9paxcr0n1pcl6pfyz73an53mvfz8aa1bym931v0fdvb" + "commit": "9eca319bdbb96dac4d44d19cd21937ed82a67268", + "sha256": "1biyvcwrqgyy7dmrv6i972lrcr5xhsyjq5nwc035c341jcxkp0g5" }, "stable": { "version": [ @@ -54509,8 +57115,8 @@ "repo": "abo-abo/lispy", "unstable": { "version": [ - 20191016, - 1250 + 20200323, + 1616 ], "deps": [ "ace-window", @@ -54519,8 +57125,8 @@ "iedit", "zoutline" ], - "commit": "9f48176fe9a170848be0a07506d50e29b5f0dba3", - "sha256": "1410nghcficskk44jh1afgxwapmkhahc22bm7584rxrwbw7rl26s" + "commit": "b07ab5d8374c75bd1401b320fda17486325bc96d", + "sha256": "0gknqazf8pihn903518a5hmy5ggqmmq40rxz4kq2nfblpm6s5zkz" }, "stable": { "version": [ @@ -54571,16 +57177,16 @@ "repo": "noctuid/lispyville", "unstable": { "version": [ - 20190719, - 141 + 20200129, + 243 ], "deps": [ "cl-lib", "evil", "lispy" ], - "commit": "56198f1c4488a52a0d0512c717dff36e8b9fbfd0", - "sha256": "1zrhn5pgjvwprwnsr85zs4rhs7mijyq3wbd5s0ff96m9n1dbj6vp" + "commit": "25a70126ea807653e0a8c512d4128c90ed673d7a", + "sha256": "0h4zz3k5chipswpp7abmd9agwacrss1dd5981x70wblpabdxm39m" } }, { @@ -54714,14 +57320,45 @@ "repo": "Fuco1/litable", "unstable": { "version": [ - 20160922, - 1559 + 20200130, + 1329 ], "deps": [ "dash" ], - "commit": "b0278f3f8dcff424bfbdfdefb545b1fbff33206f", - "sha256": "0bny40hv9a024n01clxns351cs4j4ifhgcc7m4743xncqf612p7g" + "commit": "02247ca284cbc79f3afb783d62ed092bfc5b8d83", + "sha256": "0c84fvc33ddicfi8blkcd6dv1lagjnlk9bwjj88zcvg48fnykqvr" + } + }, + { + "ename": "litanize", + "commit": "772ac9f0328ce5d184c2e126f6dd79a161a6d6c4", + "sha256": "1z4l0sk8gbramq900qf14vay0n5v2wd88yswawqrnhkhmqwl3qxm", + "fetcher": "github", + "repo": "zzkt/litanizer", + "unstable": { + "version": [ + 20200211, + 621 + ], + "deps": [ + "enlive", + "s" + ], + "commit": "ba73259e35b4649884ba56542d3a55f43bd3b80b", + "sha256": "0147dqzhphnhxrcjxnbjk258j7g7y0rpbw6q3xrd340j9fk1q60k" + }, + "stable": { + "version": [ + 0, + 2 + ], + "deps": [ + "enlive", + "s" + ], + "commit": "ce74f10540d6b335c4d0966cbabcf5099531280e", + "sha256": "1gzpvl7pgawikkhprja6p94ymsjbsbklqjgdvhzca835mx1g4aw4" } }, { @@ -54773,10 +57410,10 @@ }, { "ename": "literate-coffee-mode", - "commit": "855ea20024b606314f8590129259747cac0bcc97", - "sha256": "18fdgay7xfgza75z3xma666f414m9dn7d50w94wzzmv7ja74sp64", + "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b", + "sha256": "00zd5i6wpn95sslz0gd7m1h1fw7w07swszfqwaphkbqfwckgll6m", "fetcher": "github", - "repo": "syohex/emacs-literate-coffee-mode", + "repo": "emacsorphanage/literate-coffee-mode", "unstable": { "version": [ 20170211, @@ -54808,14 +57445,14 @@ "repo": "jingtaozf/literate-elisp", "unstable": { "version": [ - 20191012, - 606 + 20200327, + 620 ], "deps": [ "cl-lib" ], - "commit": "fb3b376de483d6923bb067caa01ebdb65a0161c2", - "sha256": "07difczbj38xzgxi0cig5zb05c9pn0fsbk00mmvfhk5rgxyfc71s" + "commit": "732d649136051a4b6d43c2fabeb5233c3e5f16d7", + "sha256": "1d4p6s9dj5368ywfpp46pysxvcqwsiacih3n1hia9c4y7p0xx4cz" }, "stable": { "version": [ @@ -54899,20 +57536,20 @@ "repo": "donkirkby/live-py-plugin", "unstable": { "version": [ - 20191021, - 102 + 20200329, + 2216 ], - "commit": "4890a53082b4cacd8c64484dfae2037153453c8c", - "sha256": "015hh2mzm3b9kijl0dsxs3y2m6dxdwvblszy6ckp5j2qv32bmydn" + "commit": "18587cf78fa22d61a7365238da852be4a55c0656", + "sha256": "0141svf43miy1xyfc4wi3lrv0jyx97qbg9yhnxwlxz5i6gdrnyza" }, "stable": { "version": [ - 2, - 25, + 4, + 0, 1 ], - "commit": "b0e4f264c464ece407be9b8ccaf2f82c026f7c47", - "sha256": "1fpkfplpgvacwl7jiziqlh46dasnh8j7d2aihrghac7kkqnrhk2c" + "commit": "0cc8f0a31ef815e26eb7da314a516e908ba25838", + "sha256": "13wbsapnq5p75c27smzsgmmgzjbx7x2vbj7b7707bm6cakqjwdzv" } }, { @@ -54992,17 +57629,17 @@ }, { "ename": "lms", - "commit": "b8be8497494b8543a8257c9ea92444baf7674951", - "sha256": "1ckrh6qbh5y2y3yzl2iyq8nqlpy4qp6vzc72ijcgayvcflb01vr1", - "fetcher": "bitbucket", - "repo": "inigoserna/lms.el", + "commit": "7d6c24152f88dad15ef9f304c0016a97ede71dab", + "sha256": "1nksla9i7b4nmnzppyw6fq5kzh8jyqjfxn45g60c4mi2mn3p95a1", + "fetcher": "hg", + "url": "https://hg.serna.eu/emacs/lms", "unstable": { "version": [ - 20181216, - 2246 + 20191102, + 3 ], - "commit": "38302acf2aa3718ce62cc4c5f1fde96feb25a2ed", - "sha256": "0da14qr7lgkfxksnhf37ss5w6wxkw9qv5hvxk7z76jyzwqdc6w4x" + "commit": "0967d3bada2ab70784a944d56c81691b8e87dbd8", + "sha256": "15ksvdf2cfa8hwvazdza56iln244xlv1l65gydhjw8388hr7gbr0" } }, { @@ -55013,14 +57650,14 @@ "repo": "daviderestivo/load-bash-alias", "unstable": { "version": [ - 20181220, - 1755 + 20200106, + 2015 ], "deps": [ "seq" ], - "commit": "50df445bace7896318f10c58d26b673635704215", - "sha256": "0m84ylx4j4bp898xc43yrkrk3csr2ppv3c51nirx5gdc5hnhykxj" + "commit": "999c613898085b37b9e16b60be1cbeaa9986d368", + "sha256": "1qhcx7c954q1liw3glhvbg5bph96j9bwf808g6l066n04xj5347i" } }, { @@ -55244,17 +57881,17 @@ }, { "ename": "lognav-mode", - "commit": "ad86b93f4982a0c6291c771e12c8f42ace3b88f9", - "sha256": "1941scifg3nn7gmnki3sa9zvwsbb84w5lw2xjmdx0sh8rbxaw8gb", - "fetcher": "bitbucket", - "repo": "ellisvelo/lognav-mode", + "commit": "a5b0dadc609d13737d56657c17a945f10e840222", + "sha256": "1fg2j63f6yaf4011vla36p1p0pjixzisff4wj80vh634yqvwp4ys", + "fetcher": "hg", + "url": "https://hg.osdn.net/view/lognav-mode/lognav-mode", "unstable": { "version": [ - 20190217, - 1632 + 20191124, + 1011 ], - "commit": "bec9f3eba66e1b58153f3d74ea21e6022d735791", - "sha256": "19axhlcny5i4hfrhxivalxrhpghy2czj92cflq0gb5b6ar6zgkyg" + "commit": "7eb9cd2af5b47116fe475870b41dded55052c14c", + "sha256": "10f3im4x55ag6mhrrsjkylmaxm5s7dj7mwmppzm2yvs1nq0fxa79" } }, { @@ -55295,27 +57932,42 @@ "repo": "doublep/logview", "unstable": { "version": [ - 20181027, - 1757 + 20200125, + 1808 ], "deps": [ "datetime", "extmap" ], - "commit": "bd662d467dbd7c93cfe1e3058e4f11c49314fd6a", - "sha256": "03s4q5xdz84cjn4qkfhsc3l9y3v5avrl2i5dby4bgsg2zj7n7f73" + "commit": "638dbd4833c6387be3849d0097b5b1a14c619afb", + "sha256": "1arzz27vf6r62m7qhfq049n5zw1x2zbbrvmlnvbd9yaanlgrf0hc" }, "stable": { "version": [ 0, - 12 + 13 ], "deps": [ "datetime", "extmap" ], - "commit": "bd662d467dbd7c93cfe1e3058e4f11c49314fd6a", - "sha256": "03s4q5xdz84cjn4qkfhsc3l9y3v5avrl2i5dby4bgsg2zj7n7f73" + "commit": "638dbd4833c6387be3849d0097b5b1a14c619afb", + "sha256": "1arzz27vf6r62m7qhfq049n5zw1x2zbbrvmlnvbd9yaanlgrf0hc" + } + }, + { + "ename": "lol-data-dragon", + "commit": "c54747f74db0d3c270682c8994e3babdac9d36c4", + "sha256": "18aydjkv331gkbsyxgvrrlw37v2m2g65alz82287nwjswgns4pia", + "fetcher": "github", + "repo": "xuchunyang/lol-data-dragon.el", + "unstable": { + "version": [ + 20200321, + 2142 + ], + "commit": "6f53bb3971daad60bd0529d1e3889d5f9fedf235", + "sha256": "0xblv8l6krp3581m0xava95pm6wcsjm3rsl47dsvzpgns1kyz8lx" } }, { @@ -55448,6 +58100,25 @@ "sha256": "1hwm7yxbwvb27pa35cgcxyjfjdjhk2a33i417q2akc7vppdbcmzh" } }, + { + "ename": "lsp-docker", + "commit": "f592ec9b1d6a05e1e115d4b313be108c8e47ee67", + "sha256": "1xmkwhgkcsf52hngb811n2q7q4rav75wwjz7zin6x17vfv8hqifx", + "fetcher": "github", + "repo": "emacs-lsp/lsp-docker", + "unstable": { + "version": [ + 20200222, + 505 + ], + "deps": [ + "dash", + "lsp-mode" + ], + "commit": "f46e56e554c9207d5ab5b9aebf994df8b41955f3", + "sha256": "1281qrskwwjz3x3mi99a6sp9694wbd08myhy0nlba6493ip8wbhz" + } + }, { "ename": "lsp-elixir", "commit": "c875a05e68d09ecf37f7e13149f2624c70164ea3", @@ -55474,15 +58145,15 @@ "repo": "emacs-lsp/lsp-haskell", "unstable": { "version": [ - 20190602, - 825 + 20200309, + 2144 ], "deps": [ "haskell-mode", "lsp-mode" ], - "commit": "64106be79350f9ce6903d22c66b29761dadb5001", - "sha256": "1d2jvcsx0x7w7f9q93gdi4x2fc6ymyr7d213m9ca5jj52rxjfsm2" + "commit": "582fa27c8894db888c92b5e53527b8deec82ea7f", + "sha256": "1jrvd8gnd7hc9xksryb35a2qzwwv7q6ncpcsb2l9ryfl5xd26i0a" } }, { @@ -55503,6 +58174,26 @@ "sha256": "0ghw2as9fbnfhrr1nbqk97jcl7yb451xpmfbksxh7mvjm3lhmyvz" } }, + { + "ename": "lsp-ivy", + "commit": "51af5cfe26bdf1482fb707fbcc5e9ea49b99eb14", + "sha256": "0yw72n0gyzv60nx4ycn979yzqwxv4hqrbi39g5finxmwjjf4rha9", + "fetcher": "github", + "repo": "emacs-lsp/lsp-ivy", + "unstable": { + "version": [ + 20200327, + 1007 + ], + "deps": [ + "dash", + "ivy", + "lsp-mode" + ], + "commit": "39b90e7aef755b6e7756f2ae306d66b01cb4d18d", + "sha256": "1nss84rzpa1lwxx9sr28nsq1p6z82ifs7n7dh4zl6xm7rl7cr9pz" + } + }, { "ename": "lsp-java", "commit": "c03cb07862c5f35487fb4fb3cc44623774724717", @@ -55511,8 +58202,8 @@ "repo": "emacs-lsp/lsp-java", "unstable": { "version": [ - 20191016, - 1709 + 20200327, + 2019 ], "deps": [ "dash", @@ -55524,8 +58215,8 @@ "request", "treemacs" ], - "commit": "52f61a539b9627122b39d9aff3885a1d94247d9a", - "sha256": "1hhkssgbv4s1q9ypav6k4siwnhmqhjhsdag3d6vs9jhsswysds0f" + "commit": "5c6953441916c1e2e76ab0c41384ea6f57a18a5e", + "sha256": "13070b986jg1xd8chbr6am8915zg8wjk8mn9zlmn0d9k45zw1gsv" }, "stable": { "version": [ @@ -55579,8 +58270,8 @@ "julia-mode", "lsp-mode" ], - "commit": "6b0d1a3f32c5e6c5b4c0993f30303569a9e9e9bd", - "sha256": "11jisy6161j4mpqyi06slfr3l7cmmnp7xc6701hszmvl935znn3l" + "commit": "da66e78eb601b1652c3a9096e0ceea6b852aa6a0", + "sha256": "1xn7470lm322lqkkbg95qmzaadk85z3f2f3cx34iq00cmkkppcng" }, "stable": { "version": [ @@ -55604,23 +58295,25 @@ "repo": "emacs-lsp/lsp-mode", "unstable": { "version": [ - 20191024, - 2132 + 20200329, + 1431 ], "deps": [ "dash", "dash-functional", "f", "ht", + "lv", "markdown-mode", "spinner" ], - "commit": "287cedc45a4ae1bf947f9341446cee0d15992d97", - "sha256": "1adwqkd0fi6zfwyk0nwkl6dcf4c8qsxl6bxwfg423b3v4r0av7mm" + "commit": "9835e93f5526110bdeb164e42d8da16c1e39feb7", + "sha256": "0vd0vdbhfv31r63cygg40bzfj2v66k3zqd66hmkfzghhjl9d4q9f" }, "stable": { "version": [ 6, + 2, 1 ], "deps": [ @@ -55628,11 +58321,34 @@ "dash-functional", "f", "ht", + "lv", "markdown-mode", "spinner" ], - "commit": "50ddaf439cd62033d3bc0d12cca341fb0d4e1382", - "sha256": "0jn5slhv9zfs446a5966bfg9dq144g22v79wnkx9hxq7if78p652" + "commit": "5c8addac9d57dff268d2f6e825522fd5353e5e3e", + "sha256": "0f9d0zhblcjzrpggqclww2g7fyjky5rzpp7zj424005ahv0zd3xf" + } + }, + { + "ename": "lsp-mssql", + "commit": "abe823ce7ab99c2c45a74a36713064d441ee8165", + "sha256": "0imhby806kyp0nb5fk04kxy6w90n8s5j5ckf8pky8wvasl9anf4i", + "fetcher": "github", + "repo": "emacs-lsp/lsp-mssql", + "unstable": { + "version": [ + 20191204, + 1150 + ], + "deps": [ + "dash", + "f", + "ht", + "lsp-mode", + "lsp-treemacs" + ], + "commit": "e16e91d6a2a6cdb406ee9b98cfb47f7a32e41d61", + "sha256": "1fyghfl1acrghf8lisg760cgxw4rnz29ym4mzlznc0lb80d43cg3" } }, { @@ -55709,17 +58425,28 @@ "repo": "emacs-lsp/lsp-python-ms", "unstable": { "version": [ - 20191024, - 2219 + 20200223, + 2136 ], "deps": [ "cl-lib", - "json", - "lsp-mode", - "python" + "lsp-mode" ], - "commit": "2760d4f7c87af4af9f9917e51de0263f6ed574ac", - "sha256": "133jqzmqyhl3wi9zs38cpfli5ybz598hbjw22j393rkbl210x6jl" + "commit": "5d0c799099aa5810858174f390e28fff3894bc06", + "sha256": "002h0i93blsv092pnfmzsfx0pj98r9glki0ki9n7gxg1z3nb0ybp" + }, + "stable": { + "version": [ + 0, + 6, + 0 + ], + "deps": [ + "cl-lib", + "lsp-mode" + ], + "commit": "5d0c799099aa5810858174f390e28fff3894bc06", + "sha256": "002h0i93blsv092pnfmzsfx0pj98r9glki0ki9n7gxg1z3nb0ybp" } }, { @@ -55767,8 +58494,8 @@ "repo": "emacs-lsp/lsp-treemacs", "unstable": { "version": [ - 20190924, - 1757 + 20200220, + 534 ], "deps": [ "dash", @@ -55778,8 +58505,8 @@ "lsp-mode", "treemacs" ], - "commit": "76c304df80256bb3314b177af3db27cf2f527b87", - "sha256": "0dai66jmpisf0h2qaiq32mzdzmnlzh5k2fi00wzg3l25vj13vvdr" + "commit": "2e3606eebfa8bd909b45b88e59d8eecc6afea4a2", + "sha256": "08xpf677jj1cnfkbpb148h3wld8lvlarp2yq89539nfcmajx53ch" } }, { @@ -55790,8 +58517,8 @@ "repo": "emacs-lsp/lsp-ui", "unstable": { "version": [ - 20191023, - 1558 + 20200311, + 1837 ], "deps": [ "dash", @@ -55799,13 +58526,13 @@ "lsp-mode", "markdown-mode" ], - "commit": "f25367c8b56921d2af42dd6b1dc1a8cd82ce6021", - "sha256": "0v1wi8nkikc35jxwnm6znwzw7xabw3kg3nn90zc03ysr3kn2gc61" + "commit": "134d9b725d21f8889f3dc72dddc418c6c6561f0e", + "sha256": "1ajza32nj4l5m0x9kghlwc2plavd507wajna6cdk5z276lyrn38a" }, "stable": { "version": [ 6, - 0 + 2 ], "deps": [ "dash", @@ -55813,8 +58540,8 @@ "lsp-mode", "markdown-mode" ], - "commit": "a8c50a93952afae3cd8948fecf4c1a3dc7f3e094", - "sha256": "1r4327fd8cvjxfwkddp5c4bdskyncbs4sx9m3z2w4d773y2jrakc" + "commit": "207bc8d61abff7c3024f8a484f63bc60bc4ad58b", + "sha256": "024753bi0p1jyjhw7wk8k6s16kbwab5ar4cfasvbn8g08acf293b" } }, { @@ -55825,11 +58552,11 @@ "repo": "immerrr/lua-mode", "unstable": { "version": [ - 20191015, - 733 + 20191204, + 1434 ], - "commit": "52cc3e465a2d35dbcbad8a87fd5fe548840f5822", - "sha256": "1iw0z6dxd1nwjmlgy800xd2pgv40f798j831ca1hh3pbai5f84zm" + "commit": "1f596a93b3f1caadd7bba01030f8c179b029600b", + "sha256": "0swnan2v2lc7s1jsnmkyzv7gajx08akgm6dvbsgm5hzp0mjbbpy4" }, "stable": { "version": [ @@ -55868,8 +58595,8 @@ 20180816, 2200 ], - "commit": "7cfc993709d712f75c51b505078608c9e1c11466", - "sha256": "0v17srm3l8p556d4j5im2bn7brxv7v0g2crlm4gb8x1cwjrbajzf" + "commit": "645e1959143532df8f7ef90e1184e9556df18af7", + "sha256": "0j9gbr3chaxc16yysyaaa1n2cvlrdc1y063l1kxj0mf435d1l7py" } }, { @@ -55880,19 +58607,23 @@ "repo": "sjbach/lusty-emacs", "unstable": { "version": [ - 20180628, - 1346 + 20200115, + 1413 ], - "commit": "fc4b2f0f8a07db107234490fdfbf72f8b76a6643", - "sha256": "014fivh9shi7p3x31bl22x48agrgygp0pf2lgzzflrxcynmprbnp" + "deps": [ + "s" + ], + "commit": "3f4be19e0c466399c680a355c402b09792123e4d", + "sha256": "1915w43dwvqkklxdh1scy4yxzmalyyrx76iy9wl024svwjq3i0np" }, "stable": { "version": [ 3, - 0 + 0, + 1 ], - "commit": "fc4b2f0f8a07db107234490fdfbf72f8b76a6643", - "sha256": "014fivh9shi7p3x31bl22x48agrgygp0pf2lgzzflrxcynmprbnp" + "commit": "8ece9b1379a73e7dc0b6e682dd5a573f88a5cb32", + "sha256": "09zvn5fgjy27rmxziylvl83zdqmwa1jjndxmxhgsyh9mklisz32p" } }, { @@ -55903,11 +58634,11 @@ "repo": "abo-abo/hydra", "unstable": { "version": [ - 20191025, - 1326 + 20200227, + 1301 ], - "commit": "74b32f3ff004cd2ad7707722ffa7f85e8233a845", - "sha256": "0gp1j8n65v3r849c3h3xmn7c133wyh68szksqjwn1lzd2mpdnfny" + "commit": "16fa8d109ec5799931a793b2e866ea9d593bee84", + "sha256": "1l6pi5ldmdcgv5qyg3kk1x8sxb639brzbfj0iddy5752hmg08g3h" }, "stable": { "version": [ @@ -55942,26 +58673,26 @@ "repo": "montag451/lxc-tramp", "unstable": { "version": [ - 20180523, - 2024 + 20200321, + 1815 ], "deps": [ "cl-lib" ], - "commit": "1aab85fef50df2067902bff13e1bac5e6366908b", - "sha256": "066qwyk38r42xriifg1ik2f0am0m57wlfrk5278sycr8vbag6fc9" + "commit": "ad03a98386d4cdb0df3eb323ecaab8fe6d0942c6", + "sha256": "1x43na4m7krkhhsvvync9k0rk4lxdakl52n43aafyx43zgv5zk8y" }, "stable": { "version": [ 0, - 1, + 2, 0 ], "deps": [ "cl-lib" ], - "commit": "17fc5962e7c27ac4f0bcc4ed7312dd5709063341", - "sha256": "03h6aw98mbwwqj08bzpg147hanx97r8fr8jv790zw7iqqjp46hsm" + "commit": "ad03a98386d4cdb0df3eb323ecaab8fe6d0942c6", + "sha256": "1x43na4m7krkhhsvvync9k0rk4lxdakl52n43aafyx43zgv5zk8y" } }, { @@ -56037,25 +58768,25 @@ "repo": "DarwinAwardWinner/mac-pseudo-daemon", "unstable": { "version": [ - 20170728, - 1940 + 20200215, + 513 ], "deps": [ "cl-lib" ], - "commit": "d235680a72677f11925b912428ad1a57b664e3e8", - "sha256": "0gqknrwhfzr7cf5pgs33a5xh79y0yzxghs6wsvavvqkmf4cvck40" + "commit": "703ee41303dc251b7672b7cba5aeb6aa54a76c90", + "sha256": "0cplbz7mc2zrxfk8g349ahb7gzli2hn5kda9155nbk8dw74xmj7d" }, "stable": { "version": [ 2, - 1 + 2 ], "deps": [ "cl-lib" ], - "commit": "4d10e327cd8ee5bb7f006d68744be21c7097c1fc", - "sha256": "0rjdjddlkaps9cfyc23kcr3cdh08c12jfgkz7ca2j141mm89pyp2" + "commit": "564b006835facc4a8df247d8a47ab1030d7e7beb", + "sha256": "1ilqxl1851rg9v6ixi924xhzykc3c34f4nq1x0vyyq5b9m2fpb27" } }, { @@ -56200,14 +58931,14 @@ "repo": "zk-phi/magic-latex-buffer", "unstable": { "version": [ - 20170531, - 5 + 20191106, + 241 ], "deps": [ "cl-lib" ], - "commit": "c03277d5619d9adcd871f3e6480a1a27985810cb", - "sha256": "065xfj6asw7px4xmh5isbfs0y6m6818lrds1ca45rhkyfw98d2sb" + "commit": "8597f4db70732d6e479396e2f2a7e78742387253", + "sha256": "16zv10rir99wl16d79479204h5fbdx78wpgahlg6kf74001fr3sv" } }, { @@ -56218,23 +58949,32 @@ "repo": "roadrunner1776/magik", "unstable": { "version": [ - 20190922, - 1727 + 20200304, + 1323 ], - "commit": "e66f288844bbd4035a18da9444b2dc163faa8ed8", - "sha256": "1dpxihdq6ssqkgj2i6v1zcnk7hkpmk5fjvlwki7jamqlizzvy9is" + "commit": "e54f934952cde3f96d6a131968295d993b3cf624", + "sha256": "1yivbgbcy5qvs55dn5lx08mbkmsd4mriymas9jgh7rn6hl14x8hj" + }, + "stable": { + "version": [ + 0, + 0, + 3 + ], + "commit": "d280836c77fd263ee404273d7c21f47395a657f9", + "sha256": "0ibasyhqc6zgvzvkfyfvx7g6f18z4n7hy2lqjvyckh40cqpzpwj0" } }, { "ename": "magit", - "commit": "9f963950d69a944443d9b6a1658799f7860d0f93", - "sha256": "13fipghvlzbx2d4dwxmm1hhnnd28davdp8rjqhq8g4g0lcn3h8b1", + "commit": "15a5916ec8e9062e41b1dd7d4f5535a86c2170a3", + "sha256": "1bcv0yv5l51j3xyli9rq3zqjkf0b9w7yd0kykfmy1dp1hx39qf8r", "fetcher": "github", "repo": "magit/magit", "unstable": { "version": [ - 20191022, - 1848 + 20200318, + 1224 ], "deps": [ "async", @@ -56243,8 +58983,8 @@ "transient", "with-editor" ], - "commit": "8b3172fc495d83830573461f877ed390e6408e0b", - "sha256": "09wcf1s7xnw4ssmg8bha94zw9ax9mz3prl5krl1l634740ajy6h4" + "commit": "236c44518d30c43c7035be32f02ba615d148b5ef", + "sha256": "0fbcx8qfymvd1i96a21gzsd4882qz6xlgccvba0dam8h9aninqf6" }, "stable": { "version": [ @@ -56272,15 +59012,15 @@ "repo": "magit/magit-annex", "unstable": { "version": [ - 20190421, - 241 + 20200224, + 1 ], "deps": [ "cl-lib", "magit" ], - "commit": "d5d819c609256a3b7b11ccaf6664be61aa3597b6", - "sha256": "0bwbvwbnyp01vvp76fvn6capk17692c6ippw3z6pknlfiqcz3z0y" + "commit": "9ffebd50a18adba70a9cfc2710012dfd650c5376", + "sha256": "0sihrmk9snazdj1dana7q89a5qd7xjclhmfqh15gvxchs4a8jwqg" }, "stable": { "version": [ @@ -56304,16 +59044,16 @@ "repo": "abrochard/magit-circleci", "unstable": { "version": [ - 20190814, - 1723 + 20191209, + 2113 ], "deps": [ "dash", "magit", "transient" ], - "commit": "03101bd9cdbdfd779471a4c6d3d00ebadc8ca4a2", - "sha256": "10jr06257g3wx45rrx8jp1lxrlf5xx9w07832p2jpwfvqwi9w0xh" + "commit": "3425ad5b16cb48d6802b7e9ed044b4cd7a99c785", + "sha256": "10iinizl99aivrf9zihykabb5lyg62kxbmydwaf7swzxf4dgxn2k" } }, { @@ -56434,8 +59174,8 @@ "repo": "sigma/magit-gh-pulls", "unstable": { "version": [ - 20180716, - 1636 + 20191230, + 1944 ], "deps": [ "gh", @@ -56443,8 +59183,8 @@ "pcache", "s" ], - "commit": "6949e973f3e951cb0bfe75d889e0fcccc33ba733", - "sha256": "0djr5lkv2wjs2c4dvb41xjkpjk9w6q888r4dlgw9w35z7h30b5vi" + "commit": "57f3a5158bbc7bfd169ee136fde351cce999e0ca", + "sha256": "1halhivvfklxscg1xxk461wgjlh3vl8g991ydj93450b6mw3azaq" }, "stable": { "version": [ @@ -56502,14 +59242,14 @@ "repo": "magit/magit-imerge", "unstable": { "version": [ - 20190219, - 553 + 20191105, + 2245 ], "deps": [ "magit" ], - "commit": "54f2e25eb5f9e9763a60808ecfc1edef7f276ce0", - "sha256": "0i16s3kc5k1sr2fgq72n0nmrwqphrg5zppmvri653120nga7b5lx" + "commit": "3b588991d30a69d2209dbcbb041777ae8af62bd0", + "sha256": "19fyrann61k8viak05y0f5v9xr2p531ysrcq05d8pq8qf3vna1y1" }, "stable": { "version": [ @@ -56564,15 +59304,15 @@ "repo": "magit/magit", "unstable": { "version": [ - 20190419, - 1545 + 20200102, + 2204 ], "deps": [ "libgit", "magit" ], - "commit": "8b3172fc495d83830573461f877ed390e6408e0b", - "sha256": "09wcf1s7xnw4ssmg8bha94zw9ax9mz3prl5krl1l634740ajy6h4" + "commit": "236c44518d30c43c7035be32f02ba615d148b5ef", + "sha256": "0fbcx8qfymvd1i96a21gzsd4882qz6xlgccvba0dam8h9aninqf6" } }, { @@ -56626,6 +59366,24 @@ "sha256": "0s2zmfw449gyc8lf8cqwm47wnqy9g5nai72agvapam2h5613mx4i" } }, + { + "ename": "magit-patch-changelog", + "commit": "caf023c2af4c09c04de7bc0338fc1d07da895ddd", + "sha256": "1lkgrnhiis0rwx14pcvhi5r775mgysb04srnvqfsihdn31bqjh6g", + "fetcher": "github", + "repo": "dickmao/magit-patch-changelog", + "unstable": { + "version": [ + 20200217, + 1202 + ], + "deps": [ + "magit" + ], + "commit": "876c780bdb676b6ece64861704e199b94f33cf71", + "sha256": "0wkjh9s67vs90lysdx3gjyrax9mlbzfvs563pzr6ab3l4p5pgnsw" + } + }, { "ename": "magit-popup", "commit": "0263ca6aea7bf6eae26a637454affbda6bd106df", @@ -56634,28 +59392,26 @@ "repo": "magit/magit-popup", "unstable": { "version": [ - 20190223, - 2234 + 20200306, + 223 ], "deps": [ - "async", "dash" ], - "commit": "4250c3a606011e3ff2477e3b5bbde2b493f3c85c", - "sha256": "073x1yf96b623yphylnf0ysannr91vawzgjdv1smkcrgd4451hr3" + "commit": "f316a085b9f66804692554df46c0f4f536a45b78", + "sha256": "1d650wny0201vh4hmkmx290rq0b2fnlwlb8ivys7mai9d380vlwi" }, "stable": { "version": [ 2, 13, - 0 + 2 ], "deps": [ - "async", "dash" ], - "commit": "4250c3a606011e3ff2477e3b5bbde2b493f3c85c", - "sha256": "073x1yf96b623yphylnf0ysannr91vawzgjdv1smkcrgd4451hr3" + "commit": "df9abf1a1bce3fadb5e0657eb8f4c7026efa3c69", + "sha256": "1ifhph1mj7wjar62d65fjx45qsjwsyslbj7liih3v0r4by5gyxmw" } }, { @@ -56696,6 +59452,33 @@ "sha256": "0xlhy328h2wxklpy71dhy1fk7zv6hs2v4jrl1mm9x5mnrbrdfvxx" } }, + { + "ename": "magit-section", + "commit": "92cab05cc5ba4153be97648d6fcd95417871e9c7", + "sha256": "1v9g8y9r0lmp54hgaxgjqr3x86l7cz4wvrrjbpij7aai40ddqdp3", + "fetcher": "github", + "repo": "magit/magit", + "unstable": { + "version": [ + 20200318, + 1224 + ], + "deps": [ + "dash" + ], + "commit": "236c44518d30c43c7035be32f02ba615d148b5ef", + "sha256": "0fbcx8qfymvd1i96a21gzsd4882qz6xlgccvba0dam8h9aninqf6" + }, + "stable": { + "version": [ + 2, + 90, + 1 + ], + "commit": "791901b2f1d26fa0a383147fe77948a9abc753da", + "sha256": "1kw94sdczswsyzn1zlk5s5aplpdv4qd7qcqc5zfxsmsfwm3jacl4" + } + }, { "ename": "magit-stgit", "commit": "72a38bbc5bba53dfb971f17213287caf0d190db0", @@ -56764,8 +59547,8 @@ "deps": [ "magit" ], - "commit": "2b08d93c5ead14f34f9cc3c3140ecf25b1531151", - "sha256": "1h5lnns6adpyah2i1k8fznbq4qf43sf64a4vp8s5h67q2ajlf52j" + "commit": "0162390581c1165a0c4c68081d8fc5ffae4cf1a9", + "sha256": "0blwbgr4by0rawzw2hdpc5jcckmj96p0dxvgcml61rg3andsqyyl" }, "stable": { "version": [ @@ -56788,8 +59571,8 @@ "repo": "alphapapa/magit-todos", "unstable": { "version": [ - 20190907, - 1321 + 20200310, + 28 ], "deps": [ "async", @@ -56800,14 +59583,14 @@ "pcre2el", "s" ], - "commit": "a80dace2bf8bf3e697e3e8421189996adcecc900", - "sha256": "0qwzag9js6qy98m7c8gmaskg4qc82sf0aihcs5vcxdf8rgia2j9q" + "commit": "a0e5d1f3c7dfcb4f18c1b0d57f1746a4872df5c6", + "sha256": "0v11ngxwndaylmzqm5rrvch7hsfcm15xhih13ckm6kn2skqdzh40" }, "stable": { "version": [ 1, - 4, - 1 + 5, + 2 ], "deps": [ "async", @@ -56818,8 +59601,8 @@ "pcre2el", "s" ], - "commit": "8557cf36260743674e7c3ecdb3038dca5106416b", - "sha256": "1rcl6j53yabxqk3jzgaxvm3wqq7rayf1hdib2v2fapw5b0layym6" + "commit": "65db450bdb766f12e5aa31ae1cecbc0716e07218", + "sha256": "0a4ghad93nmk4i0aq25c3g5lwxi7z327v0z10zi8yyja5daipsdp" } }, { @@ -56924,22 +59707,22 @@ }, { "ename": "magma-mode", - "commit": "59764a0aab7c3f32b5a872a3d10a7e144f273a7e", - "sha256": "1gq6yi51h1h7ivrm1xr6nfrpabx8ylbk0waaw04gnw3bb54dmmvc", + "commit": "0a82892371eb390d8a802919458c6c2baacd1597", + "sha256": "134zm9mg7p0qcqr0m7wsxnwqxr64s9z1njxmvjhsbxi3rhaivcsl", "fetcher": "github", "repo": "ThibautVerron/magma-mode", "unstable": { "version": [ - 20181205, - 1708 + 20200312, + 1306 ], "deps": [ "cl-lib", "dash", "f" ], - "commit": "9b734abbdf15fddecb58dc9eed1cbc39b78be2e1", - "sha256": "0nmakba9gszi251z962jlggw9mbsk8jxyynangsd1yj4bdfs6sgg" + "commit": "0d810239be625b3f8a82f4e27ffd311fc2e1841e", + "sha256": "0ibr94vlpa6hnycgssbm5fip0zvrw8rx24mvmq36a4qgd6qi7g4j" } }, { @@ -56984,15 +59767,15 @@ "repo": "jerrypnz/major-mode-hydra.el", "unstable": { "version": [ - 20191014, - 337 + 20191030, + 2354 ], "deps": [ "dash", "pretty-hydra" ], - "commit": "fd362d2be7ed80889715ed8a30a61780a18ce6ea", - "sha256": "0vnmvpsm46izxlh0l0p89rhy6ifzzfpzk7j3kkf2608s6dy8hgcy" + "commit": "20362323f66883c1336ffe70be24f91509addf54", + "sha256": "16krmj2lnk7j5ygdjw4hl020qqxg11bnc8sz15yr4fpy1p7hq5cz" }, "stable": { "version": [ @@ -57016,15 +59799,16 @@ "repo": "stardiviner/major-mode-icons", "unstable": { "version": [ - 20170301, - 714 + 20200127, + 512 ], "deps": [ "all-the-icons", - "powerline" + "powerline", + "xpm" ], - "commit": "e6117a236b2ad52e948576550b183053321dfc91", - "sha256": "0gpp9x23qz7ll8d7hlbvynv891hw907k38i7v0b08s8zh1ilvnwa" + "commit": "b36eae2e976bad3c431b082c64b1a724a2ba1fe6", + "sha256": "1jjmma9lx5g4qprmy71izgdp564lbdb0wsiysl1f6d8wipml78ys" } }, { @@ -57244,11 +60028,49 @@ "repo": "emacsorphanage/manage-minor-mode", "unstable": { "version": [ - 20140310, - 1600 + 20200123, + 1406 ], - "commit": "1bed33b0752380b548b822fe72e6858c5fe70c8e", - "sha256": "10wl7kc76dyijrmdlcl5cx821jg7clsj35r22955mbbgh7zl1x07" + "commit": "0dfab46a728a21c91658ffcb14101b182cf1b403", + "sha256": "1c17r1vz6181plbhb5nh36q6r2rwkrxhy45xmk7rjghmdd765f2r" + }, + "stable": { + "version": [ + 1, + 1 + ], + "commit": "d07d269586233787b4bea4c40df43d6357a40f58", + "sha256": "074bm7kfvslfl06zjrp7h0plbx6aqagzppczgnpslqa41373b8jx" + } + }, + { + "ename": "manage-minor-mode-table", + "commit": "5171175442458748f355bf2eba51dde77a6cd480", + "sha256": "1mbjsd8av94r9qkb6xwpvyhkgm35cpbqm7j1mi1msc3mz3mzx7mz", + "fetcher": "github", + "repo": "jcs-elpa/manage-minor-mode-table", + "unstable": { + "version": [ + 20200302, + 1517 + ], + "deps": [ + "manage-minor-mode" + ], + "commit": "cd126cbeb2e99c8d00b48310938a85448ebc2e1a", + "sha256": "1lk2rmv0qhzfyg57h461qdxgqciwqjggipl9i146m9bpjp7bjjvx" + }, + "stable": { + "version": [ + 0, + 1, + 1 + ], + "deps": [ + "manage-minor-mode" + ], + "commit": "0636f376d9bc169bd1bd20c5847eb9f029b9467c", + "sha256": "1n4a9msfzspk0dfkr1i515ibrwg5yk3hyap2kym05yqpn4wq5xwp" } }, { @@ -57259,11 +60081,11 @@ "repo": "choppsv1/emacs-mandm-theme", "unstable": { "version": [ - 20180915, - 1940 + 20191112, + 1832 ], - "commit": "b560aa0129c55a2f4fcc5e67a7d6c66ee4dc3124", - "sha256": "17af3bs55c6bxf1izvfgg0kag5az64ncbabgbh6ry14nv3r9lwy6" + "commit": "4e6ce4f222c1fa175d56e926628f37caa5f398ce", + "sha256": "05lb7izcwivjlyx6442hkskppr2158wg0b8g9k435xl083vxmpfw" } }, { @@ -57462,6 +60284,36 @@ "sha256": "0fcyspz7n97n84d9203mxgn8ar4rn52qa49s3vayfrbkn038j5qw" } }, + { + "ename": "markdown-changelog", + "commit": "1ca43b6cf089d7c75b1fb483d8356a3ca7fec5bd", + "sha256": "0cnp6yfhsixl9nl7l6aa9vrnz71ylf6z25hmk7f6w64f7nxsdmr8", + "fetcher": "github", + "repo": "plandes/markdown-changelog", + "unstable": { + "version": [ + 20200120, + 2253 + ], + "deps": [ + "dash" + ], + "commit": "1a2c3a4c3e4196f2b5dbb145b01b4bc435a93a96", + "sha256": "0dw9bz1iq8v816n0z4v9zc6nsrx4qzl99q2pj04f37s7x9vgmc4x" + }, + "stable": { + "version": [ + 0, + 0, + 2 + ], + "deps": [ + "dash" + ], + "commit": "1a2c3a4c3e4196f2b5dbb145b01b4bc435a93a96", + "sha256": "0dw9bz1iq8v816n0z4v9zc6nsrx4qzl99q2pj04f37s7x9vgmc4x" + } + }, { "ename": "markdown-mode", "commit": "74610ec93d4478e835f8b3b446279efc0c71d644", @@ -57470,14 +60322,14 @@ "repo": "jrblevin/markdown-mode", "unstable": { "version": [ - 20190802, - 2215 + 20191230, + 1055 ], "deps": [ "cl-lib" ], - "commit": "f3c54e34cc5228001af36a5301883325319f21d4", - "sha256": "1zvpryra1sr63192j6v62kc9mvhc9wsvm7haj2maxmv2v3akhlil" + "commit": "e9dff50d572caa96b68a7466c18c97a8d6ed651c", + "sha256": "0v7a56fqwaqzqkpip7lpbsf9jnnwfjwd3jf61xnziv6j9sa46p1d" }, "stable": { "version": [ @@ -57720,6 +60572,15 @@ 20191017, 1017 ], + "commit": "cb694a9eee79ea807dbc1587c47e209dd7e250fc", + "sha256": "0h191mip2yjvj1ha6cqvghd45g5ccd3p0qsvh9l2g0gg9d2salxk" + }, + "stable": { + "version": [ + 0, + 0, + 8 + ], "commit": "77e4becd8a812377eb219c77641a22a77b4fdfef", "sha256": "0a51aw567gkdxz58v7h2vdfs2rmnvyllqhq4a1yy4gslr0xsqk9c" } @@ -57773,6 +60634,21 @@ "sha256": "0r005yap50jf6b5jc7314ds17g1nn2irn1agidi74fbrwfbndxgm" } }, + { + "ename": "masm-mode", + "commit": "3f1961f11a811045095db15d650eae7469d8670c", + "sha256": "0zlc8gc0xdqgzs1ywix236wh5nfnsmab9s9x1hpfpzkg6sjzv8wr", + "fetcher": "github", + "repo": "YiGeeker/masm-mode", + "unstable": { + "version": [ + 20200308, + 1450 + ], + "commit": "626b9255c2bb967a53d1d50be0b98a1bcae3250c", + "sha256": "1k6wcksddy0k02hrqfaifr61c09pg6kpcqpmfm9zkb444pdqjn17" + } + }, { "ename": "mastodon", "commit": "809d963b69b154325faaf61e54ca87b94c1c9a90", @@ -57828,20 +60704,19 @@ "repo": "vspinu/math-symbol-lists", "unstable": { "version": [ - 20190605, - 2058 + 20200131, + 2333 ], - "commit": "dc7531cff0c845d5470a50c24d5d7309b2ced7eb", - "sha256": "094m21i9rns6m59cmhxcivxxafbg52w8f8na4y3v47aq67zmhhqm" + "commit": "1cf7e2885f3352f55852ee9eba26c7cb5a7cd74b", + "sha256": "0c2fs87vsxx00svzx09x90p8sc1zm4mj24ab0bvqf7ghpl5qgwa8" }, "stable": { "version": [ 1, - 2, - 1 + 3 ], - "commit": "499986959356f7a905fd4f2a1609c17d7ff067c3", - "sha256": "1h6fwj2w77gm4wafqll5bd6r8xafh6f4a0piqmgjvcwxy2sxrk0q" + "commit": "590d9f09f8ad9aab747b97f077396a2035dcf50f", + "sha256": "1r2i600356k8g0l53s4b5xc24flpka664i8f23zbj4h7gk1g2787" } }, { @@ -57864,17 +60739,17 @@ }, { "ename": "matlab-mode", - "commit": "6f78cff288077e04f8c9e4c2e5be9f3c33d8ff49", - "sha256": "1q3sdmahf915ix4lrv65cxsfh6hrs91c8pmyixbqmbhifqi33d0q", + "commit": "08b700ce0068646b51cd856df98ca583e21da8a1", + "sha256": "1qxbcklmhwn4478chnf9n8hwc4qznjb7y8cj78a179hhws70l97j", "fetcher": "git", "url": "https://git.code.sf.net/p/matlab-emacs/src", "unstable": { "version": [ - 20191010, - 653 + 20200213, + 930 ], - "commit": "e8d02b83ee22e976c32de211b4a0f6513470c462", - "sha256": "081qracq0rkwq3dxgmamzjcjbqavskd6smiq5lzxnh5jm89i92xs" + "commit": "e14d97df706049ea2e2d6e5b515fdbd08cd94dd3", + "sha256": "0zi873fpskv18k0xs9rgb2yfj49sga3yyq1b6xxc4ik0r45wi9cz" } }, { @@ -58027,11 +60902,11 @@ "repo": "dimitri/mbsync-el", "unstable": { "version": [ - 20191002, - 751 + 20200128, + 1053 ], - "commit": "b62491c0e0d89eb9c66261a16d7ac81231c9c453", - "sha256": "1zlih37mkqjn2czl12zn7lgxxljvrwhqqpbksj9c91zn0f0rm3mz" + "commit": "d3c81da81ce5b154c0d048047a47277338721a70", + "sha256": "10xxgvzjb7bl3lzgjkdsnnkd9wphkc2pm621agyjlayzcjnldz5p" } }, { @@ -58072,11 +60947,11 @@ "repo": "thomas11/md-readme", "unstable": { "version": [ - 20160811, - 1646 + 20191112, + 1943 ], - "commit": "bf818dd847c8b06b3b5100c5d3cf24cf96662528", - "sha256": "0gyjadkv572v3zilxivbiz28pvqh0jmi5bh5la1hyim0qnxymli8" + "commit": "ca99f44de11fab18d1f50d4b1722f2ceee3c814d", + "sha256": "1llwvcbwfj5mw100rx2hp8vcr7kawpl18nvy6vxl6brqw7ka0d2s" } }, { @@ -58087,8 +60962,8 @@ "repo": "ahungry/md4rd", "unstable": { "version": [ - 20190313, - 240 + 20191113, + 2108 ], "deps": [ "cl-lib", @@ -58098,8 +60973,8 @@ "s", "tree-mode" ], - "commit": "443c8059af4925d11c93a1293663165c52472f08", - "sha256": "1n6g6k4adzkkn1g7z4j27s35xy12c1fg2r08gv345ddr3wplq4ri" + "commit": "ff7d95fc0fdf46a3cb6b3bbe52396dc4e474b8fd", + "sha256": "1p8g5pbczg1n1pfibxwpbg1qsyrqi131awxkvl98w8ynb9zi1fqs" }, "stable": { "version": [ @@ -58151,30 +61026,30 @@ "repo": "mopemope/meghanada-emacs", "unstable": { "version": [ - 20190526, - 548 + 20191215, + 1353 ], "deps": [ "company", "flycheck", "yasnippet" ], - "commit": "24813cf364f1c857c2ee412d0a088f0ceff53842", - "sha256": "1ripap7is2amk3i2mavwiiv5mfsx9k3gxpy9nyaz58pzgvyjqplc" + "commit": "70bfbf553c7b7fb1928672e9a95b7137e02c2d4b", + "sha256": "07rl9lr4dyb9ld2cgvkxkfirls03jznggaa1j776nppk00fhz3bg" }, "stable": { "version": [ 1, 2, - 0 + 1 ], "deps": [ "company", "flycheck", "yasnippet" ], - "commit": "64518b54148092ceff58d45f062558a7dbfd3a03", - "sha256": "1ripap7is2amk3i2mavwiiv5mfsx9k3gxpy9nyaz58pzgvyjqplc" + "commit": "70bfbf553c7b7fb1928672e9a95b7137e02c2d4b", + "sha256": "07rl9lr4dyb9ld2cgvkxkfirls03jznggaa1j776nppk00fhz3bg" } }, { @@ -58185,11 +61060,11 @@ "repo": "techquila/melancholy-theme", "unstable": { "version": [ - 20190620, - 1001 + 20200305, + 133 ], - "commit": "3140860d0b310b6ff51b0df11de992cd65135692", - "sha256": "1hp2ndbiqlb1p86m437r34rvrzsy8ag0bzvkiz4zf5rgvm8y48sk" + "commit": "ffed56cb756f8acba93ce7edc664c950d75927d9", + "sha256": "1wcvd68dm453rvhjm89vv2faljgyszwyc4g95q7ydvhk3h1gck2p" } }, { @@ -58263,11 +61138,11 @@ "repo": "skeeto/emacs-memoize", "unstable": { "version": [ - 20191004, - 351 + 20200103, + 2036 ], - "commit": "b3129775a6d5c0d9cdacf5aede9683f5962c464e", - "sha256": "0mk7m2iwhpic688kdxgdyjg79rmp04daa0g8qgiiv1pm69ra2b71" + "commit": "51b075935ca7070f62fae1d69fe0ff7d8fa56fdd", + "sha256": "102f34iw2vslimihf557vwn5599xcw1vf422vypdg3ilk6s8z2ax" }, "stable": { "version": [ @@ -58344,17 +61219,17 @@ 20191025, 851 ], - "commit": "c8b0f03efcb472f9dfe2277fde322bfafea305ea", - "sha256": "1fq2ahj6qnmyqp3yd33fqcdcd77mx61lkz3589mwbfb1aab3wxwn" + "commit": "37e38e44f57fa2caac5ed8a1268e747a42174c85", + "sha256": "1r73dy1wyrdclcnp9dpk7r463fwkh2ybi31q1mmxym1xwvkg5ahl" }, "stable": { "version": [ 3, 3, - 2 + 3 ], - "commit": "ddf678dd937bc7375f618ad5898caa53a7107319", - "sha256": "1z9mcxflraj15sbz6q7f84n31n9fsialw7z8bi3r1biz68nypva9" + "commit": "73e9771bcc1c8f8575b505a62c58ad40004cf5f7", + "sha256": "12mh5p87rjwvkf6dqmxka4jbvhcd729972b726im6v0a27ncqh77" } }, { @@ -58394,14 +61269,14 @@ "repo": "abrochard/mermaid-mode", "unstable": { "version": [ - 20190503, - 1726 + 20200320, + 1357 ], "deps": [ "f" ], - "commit": "6b3cc82cf68528d9056dd3803dc5fab62300a44a", - "sha256": "1zkayx8bafadkwsllbmj5whfy3kvcb39llkhbx821mbwl5cwkijv" + "commit": "a5b16bc4308e2a520711c2ef8a964e269115cbf7", + "sha256": "150a69rn0wkfb0bmyx21vywh7vcd5a3yfi7i9jgp8zf8hfclsymg" } }, { @@ -58412,19 +61287,19 @@ "repo": "wentasah/meson-mode", "unstable": { "version": [ - 20181115, - 2125 + 20200216, + 2254 ], - "commit": "b507a87455af906e6c49aa4af70eba5b1d1af9ef", - "sha256": "046kf04vqq1wf9ncxq40fcjcgl18hk4vii5wl3m08rpvdwbnmfwr" + "commit": "bc6c09136c7f7de6f4b6ce9294e9b998e24b93c7", + "sha256": "113vj7z8zk80653ldq4sfxkk3pja8yjscywb0cwpkaq0088n5jf7" }, "stable": { "version": [ 0, - 1 + 2 ], - "commit": "212d9f38a08074f1cb6e914e12b60bc52dcb8bee", - "sha256": "1kv7413y5530frs1nrp0nl40h9j0idwp7vlg761r260200m8sl3v" + "commit": "d80ef159242402609a52c29949bd550c8442db53", + "sha256": "1720b3hpfqd989zrgcns51jbjrv4vzl9di9mccl55vkmkbqzfin0" } }, { @@ -58435,11 +61310,11 @@ "repo": "legoscia/messages-are-flowing", "unstable": { "version": [ - 20170219, - 120 + 20191029, + 954 ], - "commit": "ef879726957c850c3a5afd7f1118604991e37e32", - "sha256": "1mryk48z92r4j8f3qg0j0q5iygv7vnk1k0wgza5pq6bhrl5w13hq" + "commit": "d582a564a63b7b90764ffc5c618bc5300225d0ab", + "sha256": "0lgh8vi6ya7mnzc3ik8189kx6lqh4xfnsxpn7r52q7745x4d8zb1" } }, { @@ -58522,17 +61397,50 @@ 20191018, 242 ], - "commit": "b02a056e1fa1a044a5bc5d44cc0fb0b8c62e1442", - "sha256": "1vglshyg8i5q17zxs9s5f0r5qwm18rah7qp7rd00pn4qg48zhy2b" + "commit": "821ed77f0982dfeb1df50380931d53e6b7b7036f", + "sha256": "16hrnfz4jp5a672rvgk6ky9xfzvgxx73p5l96wh3x9294vyjd4vi" }, "stable": { "version": [ 1, 1, - 1 + 8 ], - "commit": "3cad357cd5c0f7f949fc6c7aa42d76155d036e78", - "sha256": "136l0lm8lv7fgpzply241fngxfl3ck11raamqwislyv0nnjwdfdi" + "commit": "0177fc4e7edd705db59b82c83a24db51dc405890", + "sha256": "1whl7kz4im2jmdz99336wfn152q0l3qwii4w7sn45rlsm2sijiw1" + } + }, + { + "ename": "metrics-tracker", + "commit": "e0250d97fd363b90ff4b69757cac3370c37c4b8f", + "sha256": "1823irgkfpsjl550pkc9qc7j5qkx1gw1b3116b203g4nhzh20h6p", + "fetcher": "github", + "repo": "ianxm/emacs-tracker", + "unstable": { + "version": [ + 20200126, + 1851 + ], + "deps": [ + "seq" + ], + "commit": "4da64b60091c3d7b23c7c5fd3dba981122b0e1f7", + "sha256": "1jy07b1am1g4hwiwywmi9iyidv3yp933j2y4f9nmfhpb4yjs193y" + } + }, + { + "ename": "metronome", + "commit": "2f77239fecb41487a6aa03e6fc219cba96dee18d", + "sha256": "1kkm7s6hiyk3h1bnf9pfnsikmfpp998041wg0bwqnpzhzzlq6fy4", + "fetcher": "gitlab", + "repo": "jagrg/metronome", + "unstable": { + "version": [ + 20200309, + 1918 + ], + "commit": "ab9478da0da3aadba26c65beba938c3928c823c3", + "sha256": "0qrjyn2qc5k5a6gz1m1izx315sy7dd0cdzgiyrwp8za39gkhgbl7" } }, { @@ -58543,11 +61451,11 @@ "repo": "kazu-yamamoto/Mew", "unstable": { "version": [ - 20190825, - 2345 + 20200316, + 221 ], - "commit": "3bc70db24c4f1410eb91017ea37173ba7da70281", - "sha256": "054fcl303jjkswnjyx5apas8l6v8f8m3haxsvhn7f1xbcxvjmr9s" + "commit": "5145145f87bfbe80fd91e82ded33033cf78ef54f", + "sha256": "0wdbgh3bady6xad0gnlg3irds5vdffl8d39raqayzgn17yb98pcf" }, "stable": { "version": [ @@ -58573,6 +61481,36 @@ "sha256": "09b0292d87xm5mrhfhv7j11ljl4j9hv8h5dibzrrlh1b3vsg2xkj" } }, + { + "ename": "meyvn", + "commit": "b7ff8ac12f51e775228a7c916126830802038cf0", + "sha256": "1yq90c7s8kb0w25w49wjia84sjhbgjdvjxsl98cdhcf9h6adls6p", + "fetcher": "github", + "repo": "danielsz/meyvn-el", + "unstable": { + "version": [ + 20200311, + 2209 + ], + "deps": [ + "cider", + "dash", + "parseedn", + "projectile", + "s" + ], + "commit": "5eb0423d4b7083cb330a73ef1cfd3e0dd8538567", + "sha256": "0vk2d59jvzhdm47w4kcn58njps444i0350lp5z7dnzhaag10dwc0" + }, + "stable": { + "version": [ + 1, + 0 + ], + "commit": "3119214ff45db630789f9371f956d5ac06229b1d", + "sha256": "0mnvc3f56x4icrqmc4kx6bzc9vac40f020npimdgiylbmyxj97vn" + } + }, { "ename": "mgmtconfig-mode", "commit": "4cf3dd70ae73c2b049e201a3547bbeb9bb117983", @@ -58581,11 +61519,11 @@ "repo": "purpleidea/mgmt", "unstable": { "version": [ - 20190324, - 1908 + 20200104, + 108 ], - "commit": "2d23c1b0f3e8c53052a4a59f09da491e0548e9e0", - "sha256": "1jrzd36zxdl3hlpzl4jlbxg44imkmvbxhpg5433sinrs7lir63s2" + "commit": "3bce96bbd509ad5ffb35ead52128dec5c1a67abf", + "sha256": "01wx7cvk3bvdvkpldhbj7wvqyrra7ajqjkgnj4knjg8m2wrhilhj" }, "stable": { "version": [ @@ -58765,6 +61703,21 @@ "sha256": "14i06i999wfpr0a0lvhnh6g4mm5xmawscjd9d7ibc055h94h3i2a" } }, + { + "ename": "mini-frame", + "commit": "2a10ea61ac4a3c8fa800f4107f256fa3ac5907f2", + "sha256": "06zv8qmbvzqzinmb5zcd40a43kmmq7mby6dgacpq81cg5azyfkr7", + "fetcher": "github", + "repo": "muffinmad/emacs-mini-frame", + "unstable": { + "version": [ + 20200327, + 2218 + ], + "commit": "30000e659b0ad2501591343b4818e5877783483b", + "sha256": "07b4903i3h91rjdixqsyhfclwg936n538bpiglay9r2klaa6kjp1" + } + }, { "ename": "mini-header-line", "commit": "122db5436ff9061713c0d3d8f44c47494067843e", @@ -58788,25 +61741,25 @@ "repo": "kiennq/emacs-mini-modeline", "unstable": { "version": [ - 20191006, - 1733 + 20200319, + 526 ], "deps": [ "dash" ], - "commit": "d523de5918a842cd67c029535cf399278396264b", - "sha256": "0vqn7wdwyr5hqqimncq4w1m734bixzkz4kxx64v45v3x51xfcivw" + "commit": "efe3f9743004d7989ea3b82d2bc71960e990bdc0", + "sha256": "0wy52ixj16029xk5grh1531afdcmpfi25iacl9bhplsrivzjl7hf" }, "stable": { "version": [ - 20191006, - 1733 + 20200309, + 413 ], "deps": [ "dash" ], - "commit": "fe7b723b5e609a721a15800faa9bd8b34fddd3e3", - "sha256": "047v8x9i8j6vcn3ba2kzy2lzdxwcm867bby0a5l297jp6mqfw92h" + "commit": "4d97bf35cf0f9d58b14d13a78172c15463820382", + "sha256": "0cqzqrc8wpxav08fx9n1ljpzf97hj3wdhizywj4avnyxj3g63zwi" } }, { @@ -58942,26 +61895,26 @@ "repo": "tarsius/minions", "unstable": { "version": [ - 20190918, - 2048 + 20200204, + 1950 ], "deps": [ "dash" ], - "commit": "ca6a3e77ddbd19cdf363ea71ba357096395a5de5", - "sha256": "16rplpbfy3dnvqqgavk9jb1f1ihr5875zlixd4zxb1pqxs3jkgw3" + "commit": "bc1edab09d3fc1b248c17775ae2eb7d35b96be40", + "sha256": "09z5wynw3xaxx2jr55ymlnhczryp5c5zgb1g9nr99k2rksq2j980" }, "stable": { "version": [ 0, 3, - 1 + 3 ], "deps": [ "dash" ], - "commit": "d36d2445420460c81bcd4822d0bfcbafaec2c682", - "sha256": "0q2y37zfxlbfvgdn70ikg3abp8vljna4ir9nyqlz1awmz5i1c43s" + "commit": "c331c1516111b9d2136e632a218c1d7707215356", + "sha256": "095yx8zg61nka6f7biyj1binbp8g872vq275ycwgmd2ix462zyf4" } }, { @@ -58972,14 +61925,14 @@ "repo": "arthurnn/minitest-emacs", "unstable": { "version": [ - 20160628, - 1820 + 20200224, + 1823 ], "deps": [ "dash" ], - "commit": "1aadb7865c1dc69c201cecee275751ecec33a182", - "sha256": "1l18zqpdzbnqj2qawq8hj7z7pl8hr8z9d8ihy8jaiqma915hmhj1" + "commit": "97d7d1760b24e117ffd163531b0f57fd4321677b", + "sha256": "0d8kg68yy5x1y3ivj43vzcakb3gii6bh8jm40g4sah5f53bbrs16" }, "stable": { "version": [ @@ -59024,6 +61977,21 @@ "sha256": "0f6kafr7zqgdlw914bxh2390a1bjz5zy3h30yrfpavz283ycvrrw" } }, + { + "ename": "minsk-theme", + "commit": "2f78d25a094cfa5d5a6dad2f0c6d051138b8744b", + "sha256": "1sf93ycd6a1p4xf1bhgjbqd4y38v1b4qgf0mh6pag2xz93jr7lw5", + "fetcher": "github", + "repo": "jlpaca/minsk-theme", + "unstable": { + "version": [ + 20200306, + 1220 + ], + "commit": "d1e04ca03aadb942dc4bee82f44848c3ce52b25c", + "sha256": "1yrjmyh8a0xqijyg16v20iqh13s7j4pf410f0214a4m9lp07pxpx" + } + }, { "ename": "mip-mode", "commit": "cbfefacda071c0f5ee698a4c345a2d6fea6a0d24", @@ -59071,20 +62039,20 @@ "repo": "jabranham/mixed-pitch", "unstable": { "version": [ - 20191023, - 1025 + 20200321, + 1331 ], - "commit": "f512a803fdfcea9ca17e0f57a16d4059b1772390", - "sha256": "0153lk2wv1jqacl5fxgqg07ypvz88pc8kyy96yrs7s18fp0fy55l" + "commit": "734fbdf2d2c17beee151faf39bd10174a87eea5d", + "sha256": "1i0yd7akkyqhkd8g2g793n6syiy0mbnlq9apg7p1s4xycmwxx684" }, "stable": { "version": [ 1, - 0, - 1 + 1, + 0 ], - "commit": "15bb9ec6d8be0812a46917205be6c3a1c78f68ff", - "sha256": "1458sy5b6bis1i0k23jdqk6hfqg0ghk637r3ajql2g19ym48rf58" + "commit": "734fbdf2d2c17beee151faf39bd10174a87eea5d", + "sha256": "1i0yd7akkyqhkd8g2g793n6syiy0mbnlq9apg7p1s4xycmwxx684" } }, { @@ -59105,6 +62073,21 @@ "sha256": "1d08i2cfn1q446nyyji0hi9vlw7bzkpxhn6653jz2k77vd2y0wmk" } }, + { + "ename": "mlso-theme", + "commit": "2e026e2511ead77022cf8ed9d45d0d5a5aa104b9", + "sha256": "1abv6zhz28x5yk0rjn19wjxwvdq0ps3j2sx45n0dlbqfrqgw86d1", + "fetcher": "github", + "repo": "Mulling/mlso-theme", + "unstable": { + "version": [ + 20200329, + 1516 + ], + "commit": "a4bb7b55ce81d8dcc0ad8d92acbde309c7cc1ea0", + "sha256": "15fmzsf5rpgx5f1fr45j24hgzmz95zxkj1jihdb64p049ak2h5a9" + } + }, { "ename": "mmm-jinja2", "commit": "721b9a6f16fb8efd4d339ac7953cc07d7a234b53", @@ -59166,8 +62149,8 @@ "deps": [ "cl-lib" ], - "commit": "753f6dc888acbd932c4fbd7c73ff750381058561", - "sha256": "0smamgvl6qlvzyc4119szxllx5ydw6pmix0g4zfjqf47lwxdd2yi" + "commit": "6d3eedf4fae3c88dee33691aa2856514122adc8c", + "sha256": "0fykf7svgsbcjfcsbp1r571mgjhxwkdvmmhhl2clyi5z3mwg0s1g" }, "stable": { "version": [ @@ -59333,8 +62316,8 @@ 20190713, 1335 ], - "commit": "0a641093f5edb1e0849b82f90a1464623bb14a2f", - "sha256": "0fv03frlcqfa4sfnvv5v6qg9k79jpnv4pbwifzdafqwgpd34jgy1" + "commit": "8f71e0a85c2f6039111663e65d9a13f3310f12ed", + "sha256": "0vz58nk044jm97wh77v02h24571nwg57j1vx2v4rx9wmwrnifwid" }, "stable": { "version": [ @@ -59447,6 +62430,29 @@ "sha256": "0jg5yix4c18gvy5n4wsi7zg2sb7r0bw0xlmq0w15g3z63nhy69vc" } }, + { + "ename": "modern-fringes", + "commit": "c765214f003426ac7a0e98c5764b14dd61ccce52", + "sha256": "0acp18v97k2iahbd5kp240g46wqdmrk4ddrsgvckzm0chsmjmm8q", + "fetcher": "github", + "repo": "specialbomb/emacs-modern-fringes", + "unstable": { + "version": [ + 20200321, + 1817 + ], + "commit": "108daba8407dc8acf140157e7f49137c397a0af7", + "sha256": "15370yw3147fzx8ly1svk7xvm0l9fg2gbzd8sx9ls93nyml7c5k7" + }, + "stable": { + "version": [ + 4, + 4 + ], + "commit": "6884dd16e4d76dedd792f0c5fed48ca8a2f11222", + "sha256": "10h5557sppi41pgbbjsffc9n67h8ja28skhdlklc0n6zap71m87s" + } + }, { "ename": "modtime-skip-mode", "commit": "486a675ca4898f99133bc18202e123fb58af54c0", @@ -59462,6 +62468,54 @@ "sha256": "0ri841cwx2mx8ri50lhvifmxnysdc022421mlmklql0252kn775l" } }, + { + "ename": "modus-operandi-theme", + "commit": "6f3291ebede304fe14240870372c0d396f43c0d9", + "sha256": "15rq4l14a7y6p8vhgbs017crfwyp7fq61n03xbfycq92mlx89kgx", + "fetcher": "gitlab", + "repo": "protesilaos/modus-themes", + "unstable": { + "version": [ + 20200330, + 706 + ], + "commit": "cedb331001d0623eb003591b2f650b8e5e4069ed", + "sha256": "0nw3jlx2h9127y9b8mmyrps9jyvr33yz2dr9q33j9fll1b8wapn0" + }, + "stable": { + "version": [ + 0, + 7, + 0 + ], + "commit": "cedb331001d0623eb003591b2f650b8e5e4069ed", + "sha256": "0nw3jlx2h9127y9b8mmyrps9jyvr33yz2dr9q33j9fll1b8wapn0" + } + }, + { + "ename": "modus-vivendi-theme", + "commit": "74909ab53df89c5b720c89527b3b4c9aec8351b9", + "sha256": "16bs48amvwikp4ikv8fs9zrsyz942jdzlz9ddf3qv8c9vpc5x58q", + "fetcher": "gitlab", + "repo": "protesilaos/modus-themes", + "unstable": { + "version": [ + 20200330, + 706 + ], + "commit": "cedb331001d0623eb003591b2f650b8e5e4069ed", + "sha256": "0nw3jlx2h9127y9b8mmyrps9jyvr33yz2dr9q33j9fll1b8wapn0" + }, + "stable": { + "version": [ + 0, + 7, + 0 + ], + "commit": "cedb331001d0623eb003591b2f650b8e5e4069ed", + "sha256": "0nw3jlx2h9127y9b8mmyrps9jyvr33yz2dr9q33j9fll1b8wapn0" + } + }, { "ename": "moe-theme", "commit": "4efefd7edacf90620436ad4ef9ceb470618a8018", @@ -59470,11 +62524,11 @@ "repo": "kuanyui/moe-theme.el", "unstable": { "version": [ - 20180617, - 200 + 20200216, + 1927 ], - "commit": "6e086d855d6bb446bbd1090742815589a81a915f", - "sha256": "0xj4wfd7h4jqnr193pizm9frf6lmwjr0dsdv2l9mqh9k691z1dnc" + "commit": "01d00a8d75b19f641b639ba23793cdd507c61f05", + "sha256": "14higsv6h0pka90gr25a3yxh95xn65l6qxb39mmdzkfdlnzsg664" }, "stable": { "version": [ @@ -59518,10 +62572,10 @@ }, { "ename": "mongo", - "commit": "855ea20024b606314f8590129259747cac0bcc97", - "sha256": "0jb5m611m7w26wgfwijgy0dn65s7p1y6fdcfpfgpxa7j5vrcxasc", + "commit": "7856a62fb86415c88aa72b574895328c93c10a09", + "sha256": "1xkhn8h6z60jah7v5gvkp4pfwdnmc2wcka4rcjaky51yv50zymad", "fetcher": "github", - "repo": "m2ym/mongo-el", + "repo": "emacsorphanage/mongo", "unstable": { "version": [ 20150315, @@ -59622,11 +62676,11 @@ "repo": "belak/emacs-monokai-pro-theme", "unstable": { "version": [ - 20190924, - 2152 + 20200318, + 830 ], - "commit": "b5dcc197cf36b181362b468da48b67a5f2199cae", - "sha256": "1shpaglvwdhybpkfmigz8vvw5500kybl5mri05h8sfn3b8331kfc" + "commit": "90f34d48baad78a86f60eb3fae902c545bb82505", + "sha256": "0sjxyvv16jm2xss6kxiankn9n92z52l20p2mkv95p2bd47mxn5iw" } }, { @@ -59637,11 +62691,11 @@ "repo": "oneKelvinSmith/monokai-emacs", "unstable": { "version": [ - 20190801, - 1701 + 20200329, + 49 ], - "commit": "e407f51d34b0c30cfe9d815f80a0c3539b998b08", - "sha256": "0psz6z59v0fdl846vaydqrhmy4swxcvz6swa523rcpjxlp3w2vyq" + "commit": "1b937eab15326b3b2e4183229a01376c30e6781c", + "sha256": "0c2sfzxag01w2n61xy02aw2hwv7k1nm64iwbjyf0rsqcq0m64pz8" }, "stable": { "version": [ @@ -59700,11 +62754,11 @@ "repo": "jessieh/mood-line", "unstable": { "version": [ - 20190930, - 1013 + 20191101, + 1955 ], - "commit": "9d116403a8b55d76d65f4d6d450a1f4def74013d", - "sha256": "1mz6877zls1xk64blghibryxqwn3n384l5y6szp9xjgkc9vf8zrg" + "commit": "0b07bdc7e77e19d7c722c2db803be0d3b47aa692", + "sha256": "0i40rbc0m4sya4f2lcfc6v6kn4kc6rny3j14b5rma66jyx08fcwg" }, "stable": { "version": [ @@ -59724,11 +62778,11 @@ "repo": "jessieh/mood-one-theme", "unstable": { "version": [ - 20191010, - 125 + 20191029, + 743 ], - "commit": "4236e4209f82f16c1d80c5dfb71148713ff333f6", - "sha256": "182b2j2lhy2n2cis7qdq0j9x2lkrxi525ycldb0gyvyzyhljw78c" + "commit": "77ff4bfd954d46bc7580175ef443a9168938f9cd", + "sha256": "02aqp3na2401n0mc6fbqvlwrfvbq283kyn9fhan4d0i6mrgvdblx" }, "stable": { "version": [ @@ -59748,20 +62802,20 @@ "repo": "tarsius/moody", "unstable": { "version": [ - 20191023, - 2104 + 20200113, + 2321 ], - "commit": "d37945b3a4c6ea5560eaf15f39d98aa23537d70c", - "sha256": "03ppghb45ply0888pac8axazybyxfzrkl608qn09arhkxkyrpxpq" + "commit": "2751d36152abcc2ac1479225392182b53f1e02dd", + "sha256": "1xyw4l42053595r76lj8safsx6pj25as0107wd96by3h7dg9m586" }, "stable": { "version": [ 0, - 4, - 1 + 5, + 3 ], - "commit": "e0975e844876f0962b2e9481c26739397bd23541", - "sha256": "0jci21ycsyf1mblcv8vbii4wisw1zcs15q5xwld7ai24kgj70269" + "commit": "2751d36152abcc2ac1479225392182b53f1e02dd", + "sha256": "1xyw4l42053595r76lj8safsx6pj25as0107wd96by3h7dg9m586" } }, { @@ -59772,11 +62826,11 @@ "repo": "takaxp/moom", "unstable": { "version": [ - 20191004, - 18 + 20191118, + 902 ], - "commit": "3a4cda574152b03e4c83bc4197947b88ee6713c3", - "sha256": "00pmbbc9a9643sfpj1vmk6hd0lwj1zpfpfxfi1vyalcs1f3b0qaa" + "commit": "f16c8c509990932f3db7570a838a441d5c22dec3", + "sha256": "172ih3wa3n6q46i7hcjddvnpy4h3vjldj42wvid4lpny0ibjazfy" }, "stable": { "version": [ @@ -59806,6 +62860,31 @@ "sha256": "1v2phdpfngrb01x4qygpfgxdzpgvbprki2kbmpc83vlqxlmkvvjk" } }, + { + "ename": "moonshot", + "commit": "a0d294051a792679d215dbb830a600fdf5090866", + "sha256": "12gj1df28s7c05vplsx88hcsxjr13hnh8sc7878pj11kabgihpf6", + "fetcher": "github", + "repo": "ageldama/moonshot", + "unstable": { + "version": [ + 20200210, + 2356 + ], + "deps": [ + "cl-lib", + "counsel", + "f", + "levenshtein", + "projectile", + "realgud", + "s", + "seq" + ], + "commit": "83a9933cd4af234ae15fdc3a39e660d646b0c246", + "sha256": "0rljyk4pkjwwh9mrpjdzywc4lyf163glzqhjs3nlvfy2yz9j0863" + } + }, { "ename": "morganey-mode", "commit": "855ea20024b606314f8590129259747cac0bcc97", @@ -59931,11 +63010,11 @@ "repo": "wyuenho/move-dup", "unstable": { "version": [ - 20190408, - 1246 + 20200311, + 1424 ], - "commit": "19f1c075d939084279b190c38412b4cfda96840d", - "sha256": "0rb9x00dygf0v5xk6gljdn0lvkgzyl129b5i4jpxz0ylccckd0xn" + "commit": "7a384e0e0889e07a9a81d007d8ccc654c7c89bd2", + "sha256": "040xg9bbficz300zqrnvk68b76ljnif9sdiag03hp61xqpzxmacm" }, "stable": { "version": [ @@ -60071,15 +63150,16 @@ "repo": "akirak/mozc-posframe", "unstable": { "version": [ - 20190817, - 2037 + 20200208, + 750 ], "deps": [ "mozc", - "posframe" + "posframe", + "s" ], - "commit": "20df08f0bf239bc2a686ff2c6d9390b5ea6d89fa", - "sha256": "0azcwdig6xp5vxr6yidmnbqbrfhgb7jwfmyk4cci5ca8sfm4ycvp" + "commit": "1d07d5055381008ccbb29b97315d140e09a7ee95", + "sha256": "1hwc66xj2js5srmshmba5q6adn638qgbslnxg9l15znfhq3qcy9w" } }, { @@ -60174,15 +63254,15 @@ "repo": "mpdel/mpdel", "unstable": { "version": [ - 20190911, - 632 + 20200221, + 1316 ], "deps": [ "libmpdel", "navigel" ], - "commit": "e09904bf31ed465ea93ef2c165e8a6f705229f57", - "sha256": "159nb9ws800d5lx5plh8y0mmjl1y6spwhaxm9f5kxs6psa89mckj" + "commit": "29e7c46f83bab7aedfa0136c58e776faba6ad4ed", + "sha256": "1lz3i3ygdihr7r9rnb08fkcxrdg905wkb0s55pid57yhh4iva7fg" }, "stable": { "version": [ @@ -60235,16 +63315,16 @@ "repo": "kljohann/mpv.el", "unstable": { "version": [ - 20180602, - 1014 + 20200315, + 2158 ], "deps": [ "cl-lib", "json", "org" ], - "commit": "9dedf3b7c1bfd778284df7f394207ce0447ea7aa", - "sha256": "15z62wi47pwvkbh4qgvz06yk4cyy570pjz1276sd9frdwgd4kc19" + "commit": "2d40c4550558eb1bf35a69446777c4e9cae7a623", + "sha256": "0f9iq83dfj73gbx7zndvh32b102582lzv4xb8gvqjs26k5bywdxj" }, "stable": { "version": [ @@ -60307,6 +63387,21 @@ "sha256": "1ci1w4yma6axiigz55b2ip0r7zy8v215532jc0rkb3wyn14nsrh7" } }, + { + "ename": "msgpack", + "commit": "773cb12f9aef4ad45179cb7dd07275d886907836", + "sha256": "1vcbngsr0xpqy00g837p2awkin82s145ksh223c1msszwwwgdx5m", + "fetcher": "github", + "repo": "xuchunyang/msgpack.el", + "unstable": { + "version": [ + 20200323, + 515 + ], + "commit": "90e3086f259549b1667a3c5b9aa2d70aaeaa4d3d", + "sha256": "0g9a59x7xjf1p2swbi3v8bawdwkqliw3kcg70bca5dgg2jxgd4z6" + } + }, { "ename": "msvc", "commit": "69939b85353a23f374cab996ede879ab315a323b", @@ -60315,30 +63410,30 @@ "repo": "yaruopooner/msvc", "unstable": { "version": [ - 20190426, - 1045 + 20191211, + 540 ], "deps": [ "ac-clang", "cedet", "cl-lib" ], - "commit": "c3b86fb517e95c9ae4d6b851984f4f4ed1864c06", - "sha256": "0mn12za94ciqfagia3ga7azl86abxa41191vlczh8kwspwci4x1h" + "commit": "9fe50e5961fa63fc5cf7326370f441993e9d5cfc", + "sha256": "133pidan95qyn78gdhfxlyk8x5f28rm5rwb9wdw1gpjy4l72q22f" }, "stable": { "version": [ 1, 4, - 1 + 2 ], "deps": [ "ac-clang", "cedet", "cl-lib" ], - "commit": "c3b86fb517e95c9ae4d6b851984f4f4ed1864c06", - "sha256": "0mn12za94ciqfagia3ga7azl86abxa41191vlczh8kwspwci4x1h" + "commit": "9fe50e5961fa63fc5cf7326370f441993e9d5cfc", + "sha256": "133pidan95qyn78gdhfxlyk8x5f28rm5rwb9wdw1gpjy4l72q22f" } }, { @@ -60390,11 +63485,11 @@ "repo": "cdominik/mu2tex", "unstable": { "version": [ - 20190520, - 503 + 20200329, + 758 ], - "commit": "9467076ee4115d7fc19abaeadecc603e9115bf8d", - "sha256": "1acyynjrr5pxn15g59hd3cq1yvx989ks1b79g1kmhb1cqfpz58b8" + "commit": "536a7a0db4ddbdb30a16fdd56c79b78c9b50d865", + "sha256": "18s4mks7yxbxlhdkn9s2bgxyl14rv7ds7n6c7g3pzjd94j404b64" } }, { @@ -60471,14 +63566,14 @@ "repo": "agpchil/mu4e-maildirs-extension", "unstable": { "version": [ - 20180606, - 812 + 20200302, + 1228 ], "deps": [ "dash" ], - "commit": "3ef4c48516be66e73d24fe764aadbcfc126b7964", - "sha256": "04nf947sxkir3gni67jc5djhywkmay1l8cqkicayimrh3vd5cy05" + "commit": "bd81c3e1c1f690b124937960acd2a819e9a2483e", + "sha256": "0v6aih6gqzg631kpqrqgkj8nw6d7i5ih2qnmraf3i29m5y6gqync" }, "stable": { "version": [ @@ -60497,11 +63592,11 @@ "repo": "mkcms/mu4e-overview", "unstable": { "version": [ - 20191020, - 842 + 20200218, + 546 ], - "commit": "c34f45b3ab9cce892835e14c6701b531a4f54cce", - "sha256": "1jc291xwym2ddiqvn83s2b2jw6a08dd63x0f6526qv8g3yr1jl1s" + "commit": "151d5d9e0dd5e8e8c775035203d3e17538151f33", + "sha256": "1gvlh306pcn1g4b7j5pk5m2n2wa72bl9vscfsp0gqr4fwrfnm3r6" }, "stable": { "version": [ @@ -60623,17 +63718,17 @@ }, { "ename": "multi-project", - "commit": "5b7972602399f9df9139cff177e38653bb0f43ed", - "sha256": "19dy2wl5ad1xldiznlw2vjvr9ja8h9wiv6igcggixq56fhngp40x", - "fetcher": "bitbucket", - "repo": "ellisvelo/multi-project", + "commit": "a5b0dadc609d13737d56657c17a945f10e840222", + "sha256": "0zq2lwrllj4icksq6y7hz61ah39k60v1jc5qr16zvwyfqxhk8hpb", + "fetcher": "hg", + "url": "https://hg.osdn.net/view/multi-project/multi-project", "unstable": { "version": [ - 20190710, - 947 + 20191117, + 1203 ], - "commit": "88e5e67fd58cfb6643f8ec28d3d432c3ba95afdd", - "sha256": "0sfdcrfhjia8vv3lb9kqddyfdsb4ryzy1r4fmdi9mlk0jjqjqda9" + "commit": "4045823d51f6330466b6ab83828b6c598ac817a0", + "sha256": "18z1mmmjq4xw238mw1417nlqv67qv07blz0lxhpl8m1wma4v96af" } }, { @@ -60672,11 +63767,11 @@ "repo": "manateelazycat/multi-term", "unstable": { "version": [ - 20191020, - 218 + 20200112, + 533 ], - "commit": "59f54c4680f62b37a19587f20b7d81da10faa146", - "sha256": "16fzzmk9b85ma0n3gfafyr01gz4wlw6qn79ai4gg1lfpl8qx58si" + "commit": "7307ddd456db44045206253e5a905d3d8c143d5c", + "sha256": "0cqq6y7whx4zwwd8360vdmbvsmkrvmxnn7cvz6hafrh5mrcfqmvn" }, "stable": { "version": [ @@ -60749,14 +63844,14 @@ "repo": "magnars/multiple-cursors.el", "unstable": { "version": [ - 20190820, - 749 + 20191210, + 1759 ], "deps": [ "cl-lib" ], - "commit": "b9b851a7670f4348f3a08b11ef12ed99676c8b84", - "sha256": "0gg781vaa8jhmq5pdis3lwx3k114a0an2ggzhgqyrx0y3wic51ff" + "commit": "b880554d04b8f61165afba7d4de19ac9e39bb7ab", + "sha256": "0dcw3rw9ahk8y51d9sbqj0f4jdxmykh4jlz4h71cvariqlxw9pq8" }, "stable": { "version": [ @@ -60779,14 +63874,26 @@ "repo": "zevlg/multitran.el", "unstable": { "version": [ - 20190714, - 1049 + 20200201, + 55 ], "deps": [ "cl-lib" ], - "commit": "eea1e4a57870dd6ee6c6f0a85e53cb66af8954de", - "sha256": "0gvijqs0n3n98fpx61qvzx0akpzfyxhik70dvxp15skr2rvnh17j" + "commit": "475e2a92795dbed1aa3b1c5eba2c6c779cac4508", + "sha256": "0nl4cm1nx7lmb2gd76jw8v0hqdfjjcwy0xskpi0brd8z6dp1m5n3" + }, + "stable": { + "version": [ + 0, + 4, + 10 + ], + "deps": [ + "cl-lib" + ], + "commit": "258b1232af6680396b6c0912597ed52e583326f4", + "sha256": "08b9a0pb38swgvg2v97pm4g2zda0xagdgq42znwhkmhzjiskh2g1" } }, { @@ -60901,11 +64008,11 @@ "repo": "flexw/mutt-mode", "unstable": { "version": [ - 20190302, - 1515 + 20191102, + 2330 ], - "commit": "92763c5ff9abbf4ef91ce15fa7cc6b23da1cfa2d", - "sha256": "0n04500kr4d3qg6g98nzmdjcdy7qqs5r7f9cbi50r15jr9ihsjvx" + "commit": "1d495de49e6f536459b00d5396a2f5ce5ad4757b", + "sha256": "1nxsbvhh99kwbgaxzmraryayppfmci2grg591zj8yhdh6d3l1jmj" } }, { @@ -61027,10 +64134,10 @@ }, { "ename": "mynt-mode", - "commit": "22eaeb5041155d56483d2ac6b32098456411442b", - "sha256": "17s0wdwgh2dcpww6h3qszc9dcs7ki00xkyisvsfn4xqajrmmp75b", + "commit": "cdd1f8002636bf02c7a3d3d0a075758972eaf228", + "sha256": "0dbbz86k5c70aqi8czbpd4lxil10zfqs0lmknvrzmnv31r2mgxfr", "fetcher": "github", - "repo": "crshd/mynt-mode", + "repo": "cbrst/mynt-mode", "unstable": { "version": [ 20150512, @@ -61051,11 +64158,11 @@ "url": "https://git.sr.ht/~jakob/myrddin-mode", "unstable": { "version": [ - 20190804, - 2205 + 20191225, + 2120 ], - "commit": "b996da5e3bae842eacba4b3e429899bb841b077e", - "sha256": "0gylwdq81s89civrlwsg4zrvyjkjw37jdp1mvsihx8xpq38w4r65" + "commit": "51c0a2cb9dfc9526cd47e71313f5a745c99cadcc", + "sha256": "17qaxdzygk59qdm3hpyhc70jxiijfyq2n39dy68cwzhyd13i8f2i" }, "stable": { "version": [ @@ -61344,16 +64451,16 @@ }, { "ename": "nanowrimo", - "commit": "5b7972602399f9df9139cff177e38653bb0f43ed", - "sha256": "1nhyj38qyn1x6a5rbrwhcxwfwzyqqjm3dvksdnmam6vfwn3s2r31", - "fetcher": "bitbucket", + "commit": "2790c00a79df237cf853a00f094fdeca9e532a9a", + "sha256": "0c4wzhhk1779r0lgc6bhfp0qafmp3ggdvg1205m8a7k0kklq58bg", + "fetcher": "gitlab", "repo": "gvol/nanowrimo.el", "unstable": { "version": [ 20151105, 228 ], - "commit": "25e2ca20ed3486e3241a1b9a6cbca77f0d4bac61", + "commit": "b1d41458926ccb39cefbb1bb74aefe4f02fd349f", "sha256": "1nzkamy53kl1g4y1jm7j5zgpkdsyg5ykp8zp1f0bg5mhy8mmf75w" } }, @@ -61465,6 +64572,21 @@ "sha256": "1dyc50a1zskx9fqxl2iy2x74f3bkb2ccz908v0aj13rqfqqnns9j" } }, + { + "ename": "native-complete", + "commit": "abc5469b4400ed05192dcfd6c00504768f05292e", + "sha256": "0y1zqmd34jswfw5fi3j6n0d9dhpvl14x3h5nfl6wmxj2g8vv4gns", + "fetcher": "github", + "repo": "CeleritasCelery/emacs-native-shell-complete", + "unstable": { + "version": [ + 20200321, + 2300 + ], + "commit": "11803df3706fb23d58e418a14ce981204a64e847", + "sha256": "0maljdxigd4fvrm7pv3ssyywl3c1zhfpqdymq933iig7d2hrwxm1" + } + }, { "ename": "nav", "commit": "0fda2b54a0ff0b6fc3bd6d20cfcbbf63cae5380f", @@ -61488,11 +64610,11 @@ "repo": "rolandwalker/nav-flash", "unstable": { "version": [ - 20140508, - 2041 + 20191204, + 1427 ], - "commit": "53f5bc59e3f32c1192d15637d3979732dacb2c35", - "sha256": "07wjicbvzg7cz983hv0p2qw1qlln07djigkmbqfpwvg3fk50fdyg" + "commit": "dbb91216637e0a1e8bfd59aa883c75d45db70daf", + "sha256": "0f8dsxgk1a994clwkii9hv2ibvkf38kbvgd4sp3w1sf4vy12z5n5" }, "stable": { "version": [ @@ -61539,11 +64661,11 @@ "repo": "naota/navi2ch", "unstable": { "version": [ - 20150330, - 216 + 20200130, + 36 ], - "commit": "f39d93c32acd5b9c3a7fb1a9fe14c5e1c4b5288e", - "sha256": "0i0icyaa2zzzl0cr9n1zv44pg2lric8gic58dkjxjv8yyk6y01cn" + "commit": "7811dba052f679bd920a1f648d621a6fecace10f", + "sha256": "0glr8cfxpp23j8sr0147x1ba7f6i8vzn2c15kgfs94y5h2d4jv3l" } }, { @@ -61554,26 +64676,26 @@ "repo": "DamienCassou/navigel", "unstable": { "version": [ - 20190828, - 449 + 20200202, + 1214 ], "deps": [ "tablist" ], - "commit": "6f53ec5c5c070b524624ef23ea6a096f9d7c8af7", - "sha256": "197n5p9x1sbrghgnqzbapmdcbqcwqvkibpmfa2qadlvb9plry50m" + "commit": "0a2d624d6b49f8363badc5ba8699b7028ef85632", + "sha256": "1lf46qsa6xb9rpb0s96vcvwv6n9v08iqp332pyhli0937afij454" }, "stable": { "version": [ 0, - 6, + 7, 0 ], "deps": [ "tablist" ], - "commit": "6f53ec5c5c070b524624ef23ea6a096f9d7c8af7", - "sha256": "197n5p9x1sbrghgnqzbapmdcbqcwqvkibpmfa2qadlvb9plry50m" + "commit": "2695f1df2260398930319095cf6b6a49ba98d6a5", + "sha256": "0v9f7wb6yghds3hjj8x5di6gfa8n5kjwhav7la1ca2zwgs2c1a9p" } }, { @@ -61618,11 +64740,11 @@ "repo": "nickav/naysayer-theme.el", "unstable": { "version": [ - 20190704, - 201 + 20200326, + 1937 ], - "commit": "8eed91b268403cb9043e0c9d9aaf324db1ab7d7e", - "sha256": "00gwj4dw0ky94fhgy6zckmh2s5lfphvc0hkcqvcvvqcwy8a03ynv" + "commit": "e4d80cb70324a45102075ea923af454a563e9133", + "sha256": "0kxlbvpszb0lrj5dzfmzc1iaxgvhcjwq4hwykif22mkgdigxppx3" } }, { @@ -61690,8 +64812,8 @@ 20161029, 2023 ], - "commit": "f7ebf8f2cff477c3d9b8abdb6470e7b8d80f51ce", - "sha256": "0nfj072wvvyzbc6xfw2m9fmfx19rv65s4l3hy2faa4d4skw425zz" + "commit": "ae60dc55822ea1715b203775179080c5d62700d8", + "sha256": "0q46r9r2vc50vn3bh321l317lgbbmmbylhgbxllbjpyaidfqzvb9" }, "stable": { "version": [ @@ -61734,14 +64856,14 @@ "repo": "jaypei/emacs-neotree", "unstable": { "version": [ - 20181121, - 2026 + 20200324, + 1946 ], "deps": [ "cl-lib" ], - "commit": "c2420a4b344a9337760981c451783f0ff9df8bbf", - "sha256": "1wfx37kvsfwrql8zs2739nx7wb51m26vwlcz1jygbrb62n6wq14k" + "commit": "98fe21334affaffe2334bf7c987edaf1980d2d0b", + "sha256": "1m4d5l48k1frbkspk6wlzhbjn133bj7spp5chlgv8p4p9rpnc2zr" }, "stable": { "version": [ @@ -61997,11 +65119,11 @@ "repo": "aaronjensen/night-owl-emacs", "unstable": { "version": [ - 20190825, - 1559 + 20200118, + 1513 ], - "commit": "44c1b98f7c0d8b7ad31d6e1b3382bcf0294e03f2", - "sha256": "1nv2s0rz8ihixqxhxj3qn3h0zxfphgjzvldv3y32cg50gxnrb85n" + "commit": "b52fbf83ffef1ca265c9ea273bf51827532cef67", + "sha256": "0blgf7wx8i7am943m1jc7q4ndkb7pdczfgigrdnqsaf861m0nhng" }, "stable": { "version": [ @@ -62039,8 +65161,8 @@ "repo": "nim-lang/nim-mode", "unstable": { "version": [ - 20190823, - 1009 + 20191219, + 847 ], "deps": [ "commenter", @@ -62048,8 +65170,8 @@ "flycheck-nimsuggest", "let-alist" ], - "commit": "3fb6643ff684c5b5f3812cf66ea370a9c0e9559e", - "sha256": "1smv4a8rx9minmnw2vx8542lq6wy6n2prcxsvzrrilpykz1qdg38" + "commit": "16a245e4974d21a6e9e7163e7fbfb50a0bd89f99", + "sha256": "0fil6x2wshrini0q2zdi96hrvqgx5l4ljnirgqcr7q7lmjdijpci" }, "stable": { "version": [ @@ -62075,11 +65197,11 @@ "repo": "m-cat/nimbus-theme", "unstable": { "version": [ - 20191023, - 1143 + 20200203, + 1941 ], - "commit": "0b527301a4f6a32e3f794bb12b6d83d74f484ef2", - "sha256": "1s49nynik0jpbgi5zws5hcxkyjll0dfyh8xhv9q0hm00sxajqf2s" + "commit": "32c5c88502aec1afb6700a798c215b7fc6ce6101", + "sha256": "1s0f7wgik5383ffkys27376s0gzhhz6m0rap7l8iqq67yz0k6hxw" } }, { @@ -62093,17 +65215,17 @@ 20181024, 1439 ], - "commit": "21bd971ea9381e6c36d3a3be17a501899922ff73", - "sha256": "1vahangjygyx9y6blwml55l7anb74fa9malll7jirz9lxcah1mnv" + "commit": "8900fa55b56ba1e2f83b3f3ba2a1b336c97e5dc3", + "sha256": "0x6l5r5i1q7pbvziynbvb395q8rihkr1zyhp4xzw35xn55qyskiy" }, "stable": { "version": [ 1, - 9, + 10, 0 ], - "commit": "b25c08bda4949192c69cea4cee057887341a2ffc", - "sha256": "1q0nld3g0d210zmdjyjzjz2xb2bw1s58gj6zsx7p8q30yh0wg610" + "commit": "ed7f67040b370189d989adbd60ff8ea29957231f", + "sha256": "1fbzl7mrcrwp527sgkc1npfl3k6bbpydpiq98xcf1a1hkrx0z5x4" } }, { @@ -62136,6 +65258,21 @@ "sha256": "0b01b4l9c70sad5r5py5hvg7s6k6idwwp0pv3rn8rj0fq5wlyixj" } }, + { + "ename": "nix-env-install", + "commit": "47dbcb798012e53a7e02277428006db50781d009", + "sha256": "0srbdq93d6apmn4wbcgaz3fil82n44wvcslxmjc95warwz859xmd", + "fetcher": "github", + "repo": "akirak/nix-env-install", + "unstable": { + "version": [ + 20200113, + 751 + ], + "commit": "b343a7e885206e78544da7313b860442abbd7440", + "sha256": "06sq5biv15pgz8azp1kkbkj6ifi2xpa688gx8hj3xvkms9hy6b29" + } + }, { "ename": "nix-haskell-mode", "commit": "aeb879e2e8b017d3e1ccdc8d19f17d09b2ad5f1b", @@ -62201,15 +65338,15 @@ "repo": "travisbhartwell/nix-emacs", "unstable": { "version": [ - 20171004, - 1706 + 20191126, + 759 ], "deps": [ "dash", "s" ], - "commit": "45c8d90748304c90e1503c9fa8db0443f3d4bd89", - "sha256": "0hsr8acsvfb42drb8f2wkpgqyh3csny7l82qv4k2l83xf022cs1d" + "commit": "977b9a505ffc8b33b70ec7742f90e469b3168297", + "sha256": "07vidk3bnby1ch51i67llfdx2q8xc4ax5hvlrc3f72y9gkcpir4x" } }, { @@ -62238,8 +65375,8 @@ 20160209, 1841 ], - "commit": "45c8d90748304c90e1503c9fa8db0443f3d4bd89", - "sha256": "0hsr8acsvfb42drb8f2wkpgqyh3csny7l82qv4k2l83xf022cs1d" + "commit": "977b9a505ffc8b33b70ec7742f90e469b3168297", + "sha256": "07vidk3bnby1ch51i67llfdx2q8xc4ax5hvlrc3f72y9gkcpir4x" }, "stable": { "version": [ @@ -62254,6 +65391,35 @@ "sha256": "1lm7rkgf7q5g4ji6v1masfbhxdpwni8d77dapsy5k9p73cr2aqld" } }, + { + "ename": "nixpkgs-fmt", + "commit": "36f9451ad54c787f9e94bfda0e71de99da94be34", + "sha256": "1j9k4r25iylmrg0hbjb8jamrci3jxyrpx2baawmcyhqgxiz3lcz8", + "fetcher": "github", + "repo": "purcell/emacs-nixpkgs-fmt", + "unstable": { + "version": [ + 20200327, + 2302 + ], + "deps": [ + "reformatter" + ], + "commit": "cc8ee143d4ef45a8c540901852326ccdf6ff8482", + "sha256": "0a1ih8w8xk8rdd96k7236v6xh2xr1r6gaiv2b6js95k04igdqxnh" + }, + "stable": { + "version": [ + 0, + 1 + ], + "deps": [ + "reformatter" + ], + "commit": "83e03d6f20bdf79c1c448c15734367b1a7cc6b02", + "sha256": "0hw0m4a637w1fm47snywn0mxz09qa5diy4hqngbqf7gxfj6hmfnz" + } + }, { "ename": "nlinum-hl", "commit": "b13a886535a5c33fe389a6b616988b7377249625", @@ -62324,6 +65490,28 @@ "sha256": "1skbjmyikzyiic470sngskggs05r35m8vzm69wbmrjapczginnak" } }, + { + "ename": "nndiscourse", + "commit": "1d6a236cd3ff51f2d4cfca114b2791c8ac7411e8", + "sha256": "03kfb8c7knnd1n5sxxpldmscbwi5lrnsyh6w2ji4pvaq5xhmrlxb", + "fetcher": "github", + "repo": "dickmao/nndiscourse", + "unstable": { + "version": [ + 20200315, + 2046 + ], + "deps": [ + "anaphora", + "dash", + "dash-functional", + "json-rpc", + "rbenv" + ], + "commit": "280ac4943af307e6fe8d43a350c663c18c9c7ea8", + "sha256": "11ncy09y4lbivsp72l1lbg45ahqhgdzn56p9j4dxkczv5pnsg6p1" + } + }, { "ename": "nnhackernews", "commit": "40fec106c676f8207ec9c4553c3ec16c626b098c", @@ -62332,8 +65520,8 @@ "repo": "dickmao/nnhackernews", "unstable": { "version": [ - 20191024, - 2241 + 20200323, + 1803 ], "deps": [ "anaphora", @@ -62341,8 +65529,8 @@ "dash-functional", "request" ], - "commit": "f027a94a50f2fd83b1cd55787dba8a7ea56b02fb", - "sha256": "1dlrfd1nr5nlxidfrq06gb7vcl6n0p4i2wl0krqygsrdk8k6qmxp" + "commit": "ab0db2b7e76efa8efc72c0f587a33da1f0dc9905", + "sha256": "10scn7y0v0hirwlckwxb8cr98qmdl0r6c605qdh8jigmcp4c782j" } }, { @@ -62368,8 +65556,8 @@ "repo": "dickmao/nnreddit", "unstable": { "version": [ - 20191007, - 1425 + 20200327, + 413 ], "deps": [ "anaphora", @@ -62378,8 +65566,8 @@ "request", "virtualenvwrapper" ], - "commit": "6ed30881fd1fc7776766ed3a31c1c1dd7d7c10a5", - "sha256": "0694acgkhribvv2pz0j8ia3bnc6pq51z033016a19nrgmf37arqg" + "commit": "ccba00ddd62f06e9f085f7f58532b961369d1677", + "sha256": "0fkcp3masas1sdrhp27c017b4r2gw2gp65lcjkvcfck2k9hnypip" } }, { @@ -62405,26 +65593,26 @@ "repo": "emacscollective/no-littering", "unstable": { "version": [ - 20191022, - 659 + 20200328, + 1359 ], "deps": [ "cl-lib" ], - "commit": "9f50a2fd5f5ca07323c09e47dc5456dc67c391cf", - "sha256": "1rg5a01msxdcxlw32wbvgjyvb6ddq2han818brmvp9cb7jzfkl4k" + "commit": "92661bc9b33af1e9d405d23f226c1fc80c0c9c01", + "sha256": "1c1zrfnzr7vh4fsrzyr1ivsf07ydxyr4v1776z2xv9bynvwb6lhz" }, "stable": { "version": [ 1, 0, - 2 + 3 ], "deps": [ "cl-lib" ], - "commit": "99ae007ead688689b5b25a9482f98ec67663bb61", - "sha256": "0sg4qh9a6k1m24qamsf7ldpghjcawbdgh114gy08jnw478nf05kv" + "commit": "d1d6965c70fc6ce0cfb38a5115d0e112aefac1d7", + "sha256": "17is06l0w6glppabv2kaclrnqi3dqb6p6alpslpg7lrjd8vd45ir" } }, { @@ -62541,20 +65729,20 @@ "repo": "abicky/nodejs-repl.el", "unstable": { "version": [ - 20190616, - 1753 + 20200320, + 1645 ], - "commit": "d43b8b276a90ccf980150a7d6fbb1f4d2a7cbe20", - "sha256": "1kkj888k9x5n0i7xkia177gzsa84my3g8n0n7v65281cc4f1yhk5" + "commit": "6fad7d764fa0d818ba497450bd722ae10cb8efed", + "sha256": "0saky39n0p8w7lmalg3j4da0crrx40yz0rz1zdjzwpd2bd9v2izg" }, "stable": { "version": [ 0, 2, - 2 + 4 ], - "commit": "0deb44e6c800daf061d9f8c07760b1e381382766", - "sha256": "1kkj888k9x5n0i7xkia177gzsa84my3g8n0n7v65281cc4f1yhk5" + "commit": "f5ce3d5b7b4e0d06f6e9d4930d9ecc417633586b", + "sha256": "0a5mmg3cmdi73giblp07ksl06xzl9nb2m3f96ny4r3rv0ar3v1bx" } }, { @@ -62643,20 +65831,20 @@ "repo": "arcticicestudio/nord-emacs", "unstable": { "version": [ - 20190616, - 1757 + 20200108, + 833 ], - "commit": "52756cdc909b29691eef228897b3de561cd99f43", - "sha256": "02nyczvdj0xnzq8vcyknr862dq3mj82djha5v44n1hs2dwipfdjf" + "commit": "d828752e270978a56bde19986c98b1bbe8f51386", + "sha256": "096f8cik4jz89bvkifwp3gm9iraqrd75ljy2q9js724v7yj88711" }, "stable": { "version": [ 0, - 4, + 5, 0 ], - "commit": "ba8f9b98a5028d3ec8c44e43889e7edda9a3b8dd", - "sha256": "02nyczvdj0xnzq8vcyknr862dq3mj82djha5v44n1hs2dwipfdjf" + "commit": "0f5295f99005a200191ce7b660e56cd0510cf710", + "sha256": "096f8cik4jz89bvkifwp3gm9iraqrd75ljy2q9js724v7yj88711" } }, { @@ -62667,14 +65855,25 @@ "url": "https://git.sr.ht/~lthms/colorless-themes.el", "unstable": { "version": [ - 20190802, - 725 + 20200213, + 2057 ], "deps": [ "colorless-themes" ], - "commit": "12678144d17edf36d34e6bcdc5435593e191d96d", - "sha256": "0fld15h92193bnbmka3ikq27hggxvsikzlzq4pi2n3kknq9hyh56" + "commit": "2b4c341640c8191a39e4bc28d6cd04c7d6dcbb37", + "sha256": "0ni9cnrv464fk840i1ll241kzkiy1zc6nfrbdv3ciixxdxbshxbn" + }, + "stable": { + "version": [ + 0, + 2 + ], + "deps": [ + "colorless-themes" + ], + "commit": "8e539097185704444a5dd5545924de92c11ba767", + "sha256": "1p16vxai8dj1vy4ahflwij1ldx00jzrjcinpgpc7wgh6ka748v11" } }, { @@ -62715,20 +65914,50 @@ "url": "https://git.notmuchmail.org/git/notmuch", "unstable": { "version": [ - 20190525, - 1602 + 20200323, + 121 ], - "commit": "7eb9615b30274033cc0c828244569c709906c40b", - "sha256": "1x4sbvfwxj2b0sfkfkhkfb9q780xwxc4hmfs6b192qjfi2zin6k3" + "commit": "1fcf068e331b9b79e14f79c8b126711fc3d72cbb", + "sha256": "1pf9xds5csw6vwkb4b15isrw29psdifx8gl8y61la7d1k7b6m517" }, "stable": { "version": [ 0, 29, - 2 + 3 ], - "commit": "1c8d9e172e57bad26ebb94a8cb22a959ebedb9a3", - "sha256": "02v0h60vglkjivwq6n0xbg6pyf7dd9ndfmywk0amxq9gg0szybbl" + "commit": "a59ef7d02cb229c2ec3569024918024003568aea", + "sha256": "0w9k7jfhcp34inkqciisrjfgflrx8h5q4svfa6bij9p93g1hig0b" + } + }, + { + "ename": "notmuch-bookmarks", + "commit": "dda2f16bfd15bebae67b51f04c068ffd032a42fb", + "sha256": "0ckl2hspjmk8gr2szh6xg1kv9vsnc2s0jjqymqvckpsl2g4n82p9", + "fetcher": "github", + "repo": "publicimageltd/notmuch-bookmarks", + "unstable": { + "version": [ + 20200322, + 1925 + ], + "deps": [ + "notmuch", + "seq" + ], + "commit": "ec8edfdbd1ac475530591d73a570ded5c18ed86a", + "sha256": "01bhxvjsmgxvh08r80lzlyj0wk1izx5bq22w6zsdzvxiclgrzk16" + }, + "stable": { + "version": [ + 0, + 1 + ], + "deps": [ + "seq" + ], + "commit": "c0071310f01dd5296600bdc4d6135667d38ef0de", + "sha256": "0zg53b77g4s05dj3a7n3vxdvfwya6pzc0v86kqk0443m2y96vfwc" } }, { @@ -62768,15 +65997,15 @@ "repo": "wasamasa/nov.el", "unstable": { "version": [ - 20190821, - 1920 + 20200220, + 939 ], "deps": [ "dash", "esxml" ], - "commit": "ecbdecc927a3b3f7e0927d225e6e6464c244c2ae", - "sha256": "0z6h3vgp0vawr96ni7814csdzkq7q710kya8raf9ii90fkzwhpi1" + "commit": "cd1b264b3f978a9285fa9297e40ad29d1434adf5", + "sha256": "02apbr5x9vdrx05mfs8qyp4ami1y30n8mmy4kpd4xw04nza9wxki" }, "stable": { "version": [ @@ -62800,11 +66029,11 @@ "repo": "muirmanders/emacs-nova-theme", "unstable": { "version": [ - 20190724, - 2019 + 20200213, + 102 ], - "commit": "f5eec6957ad814bba64c340c14a9e82b972bb477", - "sha256": "19c8324l5nnkk3rg6pkd0s4fakdkd1318wm9xj32jcpfpqgjdwnp" + "commit": "4553fabbcd340f3f2fa59dbfb6f3f32ecb016e6f", + "sha256": "0y0f7f03hikd5j20fc40g0hrp7aiwzna9rfwpxzlj10n8ijmygq9" } }, { @@ -62831,6 +66060,24 @@ "sha256": "00h6nwbx2l0rp2i7n0328w6ckp4gkspqk3q91ciixb4lkhh20cz2" } }, + { + "ename": "npm", + "commit": "012ca672c63711197c98eded098b1d1a9a24fd51", + "sha256": "0zi4c5a8cn03i6jdranak586s580bw772vazslxa3zs1y3xripir", + "fetcher": "github", + "repo": "shaneikennedy/npm.el", + "unstable": { + "version": [ + 20200329, + 1904 + ], + "deps": [ + "transient" + ], + "commit": "2201ab1d9d424146c725d5e9ad24cc8e0219ba95", + "sha256": "18bm31f6zaskyncn97mfwxdih6b31jpm8v858m920i5j45gh78r5" + } + }, { "ename": "npm-mode", "commit": "22dd6b2f8a94f56a61f4b70bd7e44b1bcf96eb18", @@ -62959,11 +66206,19 @@ "repo": "joostkremers/nswbuff", "unstable": { "version": [ - 20191013, - 2037 + 20200312, + 2050 ], - "commit": "19c04c1042fa1ff45bf923e9e50271c0bb57268d", - "sha256": "15qsc494xl4mwvwfybla45q7l43cxdd827d7nx4wfmbpw0c6cyc5" + "commit": "a601855cc96e303e38051d0d1af3402721dbb969", + "sha256": "0xbh5max7wbsw3iaa5ai9l5brky3mykyzn77a4w5r1m1f4a67y97" + }, + "stable": { + "version": [ + 1, + 1 + ], + "commit": "a601855cc96e303e38051d0d1af3402721dbb969", + "sha256": "0xbh5max7wbsw3iaa5ai9l5brky3mykyzn77a4w5r1m1f4a67y97" } }, { @@ -63092,8 +66347,8 @@ 20170224, 1249 ], - "commit": "44d506105989873dc1725e0cfc675925b35c9c98", - "sha256": "0lgz0sknnrxmc7iy4lniday1nwpz4q841c3w2hm72aiwn5z21h22" + "commit": "b17cb826f14c18c2875d112574edb5e4f46f5296", + "sha256": "1g030806d2l238sr173ypdkkq0g8kf8qdp7a1ls5d3rw0bng4ds1" } }, { @@ -63307,8 +66562,8 @@ "deps": [ "axiom-environment" ], - "commit": "505d85ffc051a7725344c960b1255597dab17780", - "sha256": "1251xc58nc2h6n4dibfdp7z85y609dkpc499ga8j9s0nwif009fs" + "commit": "2c5384b994266008a20558db4ffe0525e66c0f5f", + "sha256": "17f40w9r4whz0v007pp13w060jq87ag42p21hcj93c14py5s4g67" } }, { @@ -63529,6 +66784,24 @@ "sha256": "19awvfbjsnd5la14ad8cfd20pdwwlf3d2wxmz7kz6x6rf48x38za" } }, + { + "ename": "ob-elm", + "commit": "9109c178f49c300b8a5247b94ecdab265d32f4ce", + "sha256": "166yxninqiwv3vjn59ir23isnqhjjzvw8dcswnbwgcb4f4ixs12q", + "fetcher": "github", + "repo": "BonfaceKilz/ob-elm", + "unstable": { + "version": [ + 20200102, + 2000 + ], + "deps": [ + "org" + ], + "commit": "8b49ca0ecdff9df7c3f428bac22a96ed675ee5dd", + "sha256": "0prc0bddyppdzckfkjd6h2j5qg9plfzccg2gyn4jkmjhkx0gi09g" + } + }, { "ename": "ob-elvish", "commit": "90e979025f56061bc960f630945b09320a3dd28e", @@ -63577,6 +66850,25 @@ "sha256": "069w9dymiv97cvlpzabf193nyw174r38lz5j11x23x956ladvpbw" } }, + { + "ename": "ob-graphql", + "commit": "3d4572f599ac5794d8a5c310f1d1e138a11a45a8", + "sha256": "1rgwfyq5f602b60hza9xnszxdjqms90gkvrw9hjmivyp2swwy5vy", + "fetcher": "github", + "repo": "jdormit/ob-graphql", + "unstable": { + "version": [ + 20200108, + 2228 + ], + "deps": [ + "graphql-mode", + "request" + ], + "commit": "ced37c6761d69e1ff206ff0ebd633f0e4fd2ac54", + "sha256": "0575w89sr97dv4ccygbhj4k7rpk2934q9f0p3q0hxf8a5wikf493" + } + }, { "ename": "ob-html-chrome", "commit": "ac4380b5ea63c5296e517fccafa4d6a69dc73d0d", @@ -63717,11 +67009,11 @@ "repo": "arnm/ob-mermaid", "unstable": { "version": [ - 20180522, - 1659 + 20200320, + 1504 ], - "commit": "5deaea757b3a5de874d94e40c03116fbc8195308", - "sha256": "0vyqxqkkyb2dychg3i5vbik5cf58ls5f95ynq88myfpn0sivfbz4" + "commit": "cca09b64eff689d8bb15a77de9d4c7fe9845a1f9", + "sha256": "1wwmf14df2rnxlfs8bwb9p4q1a1plschbq2g9vqflphj6kv213m4" } }, { @@ -63795,8 +67087,8 @@ 20190410, 2130 ], - "commit": "149abd3832fc5a6a1cb01a586a1622a8f25887dc", - "sha256": "033pqfm3hj2585ibmqjhf7s1imckf615s6zg38jsq21wxv5fx8nc" + "commit": "331899cfe345c934026c70b78352d320f7d8e239", + "sha256": "1k34cl2whc32ysd7anvz8ii66ljfrmkvx3cgb6i42jcx74kavlfr" }, "stable": { "version": [ @@ -63816,14 +67108,14 @@ "repo": "alf/ob-restclient.el", "unstable": { "version": [ - 20190626, - 1824 + 20200316, + 759 ], "deps": [ "restclient" ], - "commit": "53376667eeddb1388fd6c6976f3222e7c8adcd46", - "sha256": "1djg53cp7y83gic2v71y6r5z76kwrbkp0r69hl25rs99dx6p89dy" + "commit": "f7449b2068498fe9d8ab9589e0a638148861533f", + "sha256": "0s3931w9ab3yfml2pmq71rw21yf6hpg7m3vihxyy3vs6zli1cvmq" } }, { @@ -63849,15 +67141,15 @@ "repo": "stakemori/ob-sagemath", "unstable": { "version": [ - 20170131, - 233 + 20191106, + 828 ], "deps": [ "s", "sage-shell-mode" ], - "commit": "68d3e516c712bc7aa5042f305f3eb5bbb6d656c2", - "sha256": "1yr7d3ayrdnycapnhc08zyf6b9gp7xw0pngz90h75s6j33pisx30" + "commit": "79645bce0c25a650bae61e550434bed836995dce", + "sha256": "134d3pz38g2ki4war1jxp5440yq5smfkdjnknz5r29p49sch0zvx" }, "stable": { "version": [ @@ -64131,14 +67423,14 @@ "repo": "clemera/objed", "unstable": { "version": [ - 20190717, - 853 + 20200312, + 1817 ], "deps": [ "cl-lib" ], - "commit": "fea114824e11fdae7871fb3b5ddf4ed2472cbda0", - "sha256": "0lf88ivfsl5la075jg1y56kf0v96hp2539b54lwyabz0rpc0c7in" + "commit": "9bb351313799bf4fb39f1b680cdf0a7ddccccbb4", + "sha256": "0lp7j4s2w3qmk288nnmh92ad58340srxq20nqiybgrijc0kxkx5a" }, "stable": { "version": [ @@ -64284,10 +67576,10 @@ }, { "ename": "octicons", - "commit": "c62867eae1a254eb5fe820d4387dd4e8a0ff9be2", - "sha256": "02f37bvnc5qvkvfbyx5wp54nz71bqm747mq1p5361sx091lllkxk", + "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b", + "sha256": "0p66i8i2ksqld3bd0iq7f7ssskj1hp42s170q74crh3ilapjnkpq", "fetcher": "github", - "repo": "syohex/emacs-octicons", + "repo": "emacsorphanage/octicons", "unstable": { "version": [ 20151101, @@ -64349,14 +67641,20 @@ "repo": "oer/oer-reveal", "unstable": { "version": [ - 20191024, - 907 + 20200325, + 946 ], - "deps": [ - "org-re-reveal" + "commit": "5f22947a41780a59dab7252ef1e3d510e6e2b28a", + "sha256": "1y84lidg5jiix7ap46jakqn3y9x1gzdlnv5473r3qv3cxzaf7l2n" + }, + "stable": { + "version": [ + 2, + 7, + 2 ], - "commit": "641c905b7453855bc99ba64441d1346b03d44fae", - "sha256": "1awcazkv01ry7430ghsqrk93pvpi79cd8wig3wlcj4fyvy1g9chf" + "commit": "5f22947a41780a59dab7252ef1e3d510e6e2b28a", + "sha256": "1y84lidg5jiix7ap46jakqn3y9x1gzdlnv5473r3qv3cxzaf7l2n" } }, { @@ -64419,20 +67717,20 @@ "repo": "rnkn/olivetti", "unstable": { "version": [ - 20190923, - 840 + 20200320, + 1154 ], - "commit": "c7784fe2dccf676310a9a602b6eedc2a7b667499", - "sha256": "1fbj9s49y5yx5i429awv9rybacfgvhwp7v5h0zw67bpgx4qs44pa" + "commit": "5dc27716c706166e1932f4a0e9f94384b6d17cb0", + "sha256": "0im6ds8mvnwfrh3z0cd05g32w9rklhl56xmhzl9i2180pv6qwil8" }, "stable": { "version": [ 1, - 8, - 1 + 9, + 3 ], - "commit": "c7784fe2dccf676310a9a602b6eedc2a7b667499", - "sha256": "1fbj9s49y5yx5i429awv9rybacfgvhwp7v5h0zw67bpgx4qs44pa" + "commit": "67e32a7754cda4c8d94227e80bfa708abb4e8e6d", + "sha256": "0928kn9yfwc2mhmja13y39iswlkk474xnszh9qza206j6r37h6p3" } }, { @@ -64482,30 +67780,30 @@ "repo": "AdrieanKhisbe/omni-log.el", "unstable": { "version": [ - 20170930, - 1235 + 20200304, + 2229 ], "deps": [ "dash", "ht", "s" ], - "commit": "11e959473c1bd9415d0cda785940c36ba6ad44ab", - "sha256": "081vq3wzl8w9yz1356np6h27d7yi5j8i3va9sc2flfwylmw1y9gr" + "commit": "0a240660ccdd0b6588b4e3c322743b5ab1161338", + "sha256": "0xbrwj7zsqx91p28l3dknlhr3y5cj6lah6h5x1s9l9kmfz850dcp" }, "stable": { "version": [ 0, - 3, - 6 + 4, + 0 ], "deps": [ "dash", "ht", "s" ], - "commit": "20021eb788cbeec0371145468430b259686f519d", - "sha256": "1sf2zbhjaz5b9xmz6632338cga7d326ibgw8b8c6c6b4vk16yhqc" + "commit": "0a240660ccdd0b6588b4e3c322743b5ab1161338", + "sha256": "0xbrwj7zsqx91p28l3dknlhr3y5cj6lah6h5x1s9l9kmfz850dcp" } }, { @@ -64516,8 +67814,8 @@ "repo": "AdrieanKhisbe/omni-quotes.el", "unstable": { "version": [ - 20170425, - 1832 + 20200304, + 2341 ], "deps": [ "dash", @@ -64526,14 +67824,14 @@ "omni-log", "s" ], - "commit": "454116c1dd6581baaeefd6b9310b1b6b7a5c36d0", - "sha256": "1h8lrpi5wizi5vncdz83cxlx7c71xw3sw89sfg462zfbz2sq8afl" + "commit": "cfc7b7f01628a5d57384820d1096de4541e67cdf", + "sha256": "1bv45gdyzycapi9q69h3339308qxwgjzj5rgr3f927vl4xm18kfb" }, "stable": { "version": [ 0, 5, - 0 + 1 ], "deps": [ "dash", @@ -64542,8 +67840,8 @@ "omni-log", "s" ], - "commit": "454116c1dd6581baaeefd6b9310b1b6b7a5c36d0", - "sha256": "1h8lrpi5wizi5vncdz83cxlx7c71xw3sw89sfg462zfbz2sq8afl" + "commit": "cfc7b7f01628a5d57384820d1096de4541e67cdf", + "sha256": "1bv45gdyzycapi9q69h3339308qxwgjzj5rgr3f927vl4xm18kfb" } }, { @@ -64888,8 +68186,8 @@ "request", "s" ], - "commit": "13499b7ae602c735e40c1c494bda6252a2f1c98f", - "sha256": "14vb47y5cq3j80aah8fjjf5aw343p9p7bhlxnpz5fr8r9a883dka" + "commit": "6819b6271960dcdc7c32981dadd48968a3640cef", + "sha256": "12frm9w6xh5rkfyvvvpwhdd55nlgsv8w4f52pch0sl437vidcsqg" }, "stable": { "version": [ @@ -64969,11 +68267,11 @@ "repo": "abo-abo/orca", "unstable": { "version": [ - 20190925, - 915 + 20200122, + 1511 ], - "commit": "68c9dbe235b1f97f12ff0f82878bb9e0ac971b1f", - "sha256": "0k5xsz0mlg4yhra80pixj10zl8dmy78r68hhd5q24dwqg6yic7f0" + "commit": "654f185861ed4fedfe1394db48a83639a0be57f6", + "sha256": "1dwps9zv1jnc7m75j5cdla14pnv2vnivm5bq0zcvqfsvilvd38ds" } }, { @@ -65168,29 +68466,29 @@ "repo": "diadochos/org-babel-eval-in-repl", "unstable": { "version": [ - 20170511, - 1214 + 20191204, + 18 ], "deps": [ "ess", "eval-in-repl", "matlab-mode" ], - "commit": "bfa72c582ac1531ad42aba23e2b1267ab68e31f6", - "sha256": "1jm56zxa99s163jv02vhfrshmykvld7girq7gmj1x60g3wjzhn5k" + "commit": "e111b4b5c6844bb389317354ea172cd96a8bb658", + "sha256": "0j1z1kp85fvn874l7s8h0cf528khaa38bs5ccx5dwf8mkb68vjgm" }, "stable": { "version": [ 1, - 4 + 5 ], "deps": [ "ess", "eval-in-repl", "matlab-mode" ], - "commit": "3f26e3cf8bed9ec8e025e4143e708e6e470258d4", - "sha256": "0g2057v6qjqi5xl2m1sa2k046lmis83c3g80d13h6plv0rrsvwz2" + "commit": "929d160685db57c4f0aedf26b52f9d7a918a40dd", + "sha256": "0dk2kqwf7pg18iny02rz146jjjlfqn1vd9ay1sxq7vgsv6c1cs80" } }, { @@ -65247,14 +68545,14 @@ "repo": "alphapapa/org-bookmark-heading", "unstable": { "version": [ - 20180904, - 1709 + 20200103, + 514 ], "deps": [ "f" ], - "commit": "eba5ef7a3c992c4a9da86f64d12fca0c1158208a", - "sha256": "1amq48yldydg9prcxvxn5yi0k8xk87h1azscr9hh9phnll2yys1d" + "commit": "38a2813f72ff65f3ae91e2ebb23e0bbb42a8d1df", + "sha256": "09rfp0zf68gnhiwh61wc10kgqk75ypkbk0hawrw1rhida1bi2wb1" }, "stable": { "version": [ @@ -65274,29 +68572,29 @@ "repo": "Kungsgeten/org-brain", "unstable": { "version": [ - 20191018, - 1325 + 20200328, + 1700 ], "deps": [ "org" ], - "commit": "94727f6d6b5bdf1ba3fc9471075980a14916ac8c", - "sha256": "10mmi1nfhphrxck4g5fnmdicdcz7a8bmvb131bn5962jrhyy3vsj" + "commit": "ec4bd9dd290459657426bb06e78f666ac0310420", + "sha256": "18937fm3np1ngxc1rmjsg0mzrf7jr56gd87ygsi84y5cmw4j08zb" } }, { "ename": "org-bullets", - "commit": "fe60fc3c60d87b5fd7aa24e858c79753d5f7d2f6", - "sha256": "0yrfgd6r71rng3qipp3y9i5mpm6510k4xsfgyidcn25v27fysk3v", + "commit": "aa0e1ebac172a73bfed7d55cb4d9eb52178dcbdc", + "sha256": "0jcqgp23wgzdmw7il8phwiqdndwyjc7lcc27mk8rfip4ngp3wiyn", "fetcher": "github", - "repo": "emacsorphanage/org-bullets", + "repo": "integral-dw/org-bullets", "unstable": { "version": [ - 20190802, - 927 + 20200317, + 1740 ], - "commit": "c19b13be00df8d8dc596e4f1aef4a094b08ac801", - "sha256": "1rvhinwnz660mfz4wkr2wa51ss5cm4gzpwfvwc0s0srk14s2h66h" + "commit": "767f55feb58b840a5a04eabfc3fbbf0d257c4792", + "sha256": "01ll5b39wpx9qpqybndy58wkq97n512rg7j87482l1ry1s5b02d5" }, "stable": { "version": [ @@ -65349,13 +68647,13 @@ "repo": "IvanMalison/org-projectile", "unstable": { "version": [ - 20180601, - 242 + 20200329, + 313 ], "deps": [ "org" ], - "commit": "de37d0094791ab1146276904f3a37eba699e0b60", + "commit": "96a57a43555e24e5e0d81e79f0fbb47001c41bac", "sha256": "05h9scvnd9ggfwbbl1m124k6sdn5kp9mv2695cril2m4dkr1kyqz" }, "stable": { @@ -65379,14 +68677,14 @@ "repo": "Chobbes/org-chef", "unstable": { "version": [ - 20191017, - 2015 + 20200220, + 2016 ], "deps": [ "org" ], - "commit": "440e0a11b4af85f558aa138de58d347020439f0b", - "sha256": "1c30ssi533gi1rp865fkrbxp7igzpwbrxr4hmmpxhs6qsj1f8pwi" + "commit": "61686fd87892e60268fc43348282abbfd879e5c9", + "sha256": "0n493p9dqx9bb6jcrb34s1rk8afwpz1fdgwrm64g7a0y2mbfga74" } }, { @@ -65412,15 +68710,15 @@ "repo": "dfeich/org-clock-convenience", "unstable": { "version": [ - 20190130, - 1610 + 20200123, + 1029 ], "deps": [ "cl-lib", "org" ], - "commit": "7d14699a15ad6c5b9a63246a11188c77f8800e94", - "sha256": "05r6jgh8ys4ihpns7g64n4zbnvyy5fvndf9v7zinq2nk6grb393q" + "commit": "4e522706a90a504c75d377161005f9543575ea02", + "sha256": "08d0hv2shpbw01pjh8ks04avyl4zc0zcyqlmn4hbdhwjz7lzp8dv" } }, { @@ -65462,11 +68760,11 @@ "repo": "justintaft/org-clock-split", "unstable": { "version": [ - 20180909, - 2047 + 20200315, + 1716 ], - "commit": "b2f1497b62e7f4a767be02e249e4ac95d4f8f21c", - "sha256": "099jxkyx7ikfqz99sx632a6c0mc630qkix3c307sm7y317jcdz8l" + "commit": "322379f1bf08c74c034c5c86d8a3045675ee64ac", + "sha256": "0nigylzzxwm4wn8zp5vyrj4y41czcpkvglvy3p4dqn35agklz5mw" } }, { @@ -65477,11 +68775,11 @@ "repo": "mallt/org-clock-today-mode", "unstable": { "version": [ - 20190915, - 701 + 20191204, + 1558 ], - "commit": "18af3fede1aa0ccab83ce9195f94f9097f51c548", - "sha256": "0knjks1rzl7p38r36g7a186mlxsc5dr88a7q0mxjsgg86vjx1xwf" + "commit": "e326a45b60e0fd4ca057f1d1dc3e99a516a5aa2f", + "sha256": "08x1907kh6gxnji34gc3r6vya4idd7b79xqxyn8ibn9zswicyy2p" } }, { @@ -65524,11 +68822,11 @@ "repo": "thisirs/org-context", "unstable": { "version": [ - 20170107, - 1337 + 20200217, + 1006 ], - "commit": "a3b4a4ce6d15e3c2d45eb5dcb78bea81913f3e21", - "sha256": "18swz38q8z1nga6l8f1l27b7ba3y5y3ikk0baplmich3hxav58xj" + "commit": "f354108ecd3d33cadee05a4aec95d2df4bc61ae9", + "sha256": "1zlqciqadhwkhmzlag7w0i83pn9gg0gikfcrv2qlr9nsn5rzzvj4" } }, { @@ -65647,14 +68945,14 @@ "repo": "abo-abo/org-download", "unstable": { "version": [ - 20191016, - 1227 + 20200311, + 1049 ], "deps": [ "async" ], - "commit": "29d919126fac7277261bce96c99744e35d3c193d", - "sha256": "0514i261n9lca3dwqn8s9km3f06xcy1y6l355n49ivrh06kikwc7" + "commit": "b96fd7ba02cbdae95cc37970ebcfae8afa8b25d2", + "sha256": "1fx621ll5kjw10n2xhba7h39m1cqvink61kyhb228p6h8cl63kss" }, "stable": { "version": [ @@ -65705,16 +69003,30 @@ "repo": "phillord/org-drill", "unstable": { "version": [ - 20190727, - 1930 + 20200216, + 1336 ], "deps": [ "org", "persist", "seq" ], - "commit": "7dece4a5e4b37ff32a7733e407d19ba67422008b", - "sha256": "0m5lv0hm5wd5v9ghk5sp1hvdm11hq6aj5kkymr76z6zx7q29jsn3" + "commit": "4c114489e682e514e79701045d541ab6f3dc3fb4", + "sha256": "13y302lyscdqrba1sfx60yf5ji2xi7fbsvjsjbw7hiz63kg6rccy" + }, + "stable": { + "version": [ + 2, + 7, + 0 + ], + "deps": [ + "org", + "persist", + "seq" + ], + "commit": "4c114489e682e514e79701045d541ab6f3dc3fb4", + "sha256": "13y302lyscdqrba1sfx60yf5ji2xi7fbsvjsjbw7hiz63kg6rccy" } }, { @@ -65918,6 +69230,24 @@ "sha256": "13cyzlx0415i953prq6ch7r5iy23c1pz116bdxi5yqags4igh4wv" } }, + { + "ename": "org-fragtog", + "commit": "b1136eb881139e51588b6110b9f13544b469259a", + "sha256": "09zb72l6hsvwi5kgmrihjlagdqbcr6nwj9a4c32hp9xm14rpd75h", + "fetcher": "github", + "repo": "io12/org-fragtog", + "unstable": { + "version": [ + 20200215, + 2217 + ], + "deps": [ + "org" + ], + "commit": "8eca8084cc025c43ce2677b38ed4919218dd9ad9", + "sha256": "0irr4l40djgmgvg41gx7kqza6zwi2mz69drq7dyrr10pz5hd0ikp" + } + }, { "ename": "org-gcal", "commit": "d97c701819ea8deaa8a9664db1f391200ee52c4f", @@ -65934,8 +69264,8 @@ "request", "request-deferred" ], - "commit": "36e9933b0238acb245e6d8dc89944583482fee1e", - "sha256": "0jvav64yysxf0rvfmkx8mvpx2cw2d3ppq8wyx8bp9vdi027czg3n" + "commit": "6821e349673e9ba8d7ae7b84789f931889273dc0", + "sha256": "12alwnk50gsiz5b9mw8qvn317f7phb5vh2x7yvi9m72zdrdaf8pz" }, "stable": { "version": [ @@ -66035,20 +69365,20 @@ "repo": "marcIhm/org-index", "unstable": { "version": [ - 20190920, - 356 + 20200323, + 1404 ], - "commit": "aba9b1ea49e83c541c544e4030fcc2e0a55c908b", - "sha256": "1rpbas9svwni6nz5jywvxxvan0lgrqi100aby1aivi3prsmh6jhy" + "commit": "601435b3aeff1b2c00f62deb39adf9b351e9b567", + "sha256": "0v6r78zcvzhj2wgaz22ddpbhjpggiii5j54hl12m02rpbqv0m524" }, "stable": { "version": [ - 5, - 12, - 0 + 6, + 1, + 2 ], - "commit": "fc9635edd4bf394059e53a1fa16cdd8ab5b7b468", - "sha256": "0qzqlfnrc2x4mm40wrsmpbh61129ww2a2sk4s1px49fi8552vqyq" + "commit": "601435b3aeff1b2c00f62deb39adf9b351e9b567", + "sha256": "0v6r78zcvzhj2wgaz22ddpbhjpggiii5j54hl12m02rpbqv0m524" } }, { @@ -66114,20 +69444,20 @@ "repo": "bastibe/org-journal", "unstable": { "version": [ - 20191011, - 1315 + 20200311, + 710 ], - "commit": "19e3b4dd07d8b0145896011a2b4522234b62a50c", - "sha256": "1bacprp42abk84hg0ha44pq9n15rdrvvd2pvdjw5yhnqansnx8l5" + "commit": "664c08e12cde19ce7dca645ba9accecda7266c32", + "sha256": "02gla6cs8w08jg8czl5855vxvs1jyxq839rh9f95d40x4jgc1rwy" }, "stable": { "version": [ - 1, - 15, - 1 + 2, + 0, + 0 ], - "commit": "af2819c41b34fc88e2aee473fbdf695451ba167c", - "sha256": "05kxs63ssgc6h47cjldxxmx9ggy1fyaxxrxzaq078gj56411gmld" + "commit": "8eda1119f561561b993eea72a550a6b1f0ef35e1", + "sha256": "18dqd0jy2x530lk0h4fcn9cld9qh4w7b3vxa60fpiia628vsv1dg" } }, { @@ -66153,30 +69483,30 @@ "repo": "gizmomogwai/org-kanban", "unstable": { "version": [ - 20191003, - 1455 + 20200329, + 543 ], "deps": [ "dash", "org", "s" ], - "commit": "3007d636f0c7b69d767d7adcca4ab462708f9610", - "sha256": "0mqi85gfaq60dxvm5r7rn6mi479fk26dy0nmss7dnqxwm2s39414" + "commit": "544aac80f1c7113cfe42cf1a2b89f5ca6bd9ead6", + "sha256": "0sx4mvr5g2ipj1s1jg82vr1q90jkq9lm0pg5cdab8lrx464lqf2c" }, "stable": { "version": [ 0, 4, - 21 + 23 ], "deps": [ "dash", "org", "s" ], - "commit": "3007d636f0c7b69d767d7adcca4ab462708f9610", - "sha256": "0mqi85gfaq60dxvm5r7rn6mi479fk26dy0nmss7dnqxwm2s39414" + "commit": "93f8135f2b7ae2d5ed807cb92954640796bbe273", + "sha256": "1wxc4y5swldqv3jqdz9gj1gx30r4xzis8g2m572bbsrdfjf04c26" } }, { @@ -66198,24 +69528,6 @@ "sha256": "1h3pbjiy5v8lp3p6dry4jk3pvdp7hpkc517d3w9ldhz6nmaiccgg" } }, - { - "ename": "org-link-minor-mode", - "commit": "b1d2add7baf96c9a18671766d61c8aa028756796", - "sha256": "1akb670mzzhmldw2202x3k6b7vwfcn0rs55znpxsrc4iqihdgka3", - "fetcher": "github", - "repo": "seanohalpin/org-link-minor-mode", - "unstable": { - "version": [ - 20170805, - 1852 - ], - "deps": [ - "org" - ], - "commit": "7b92df60f3fee7f609d649d80ef243b45771ebea", - "sha256": "1lz7qj57s391ssawmccvhgxv1w99fj1m9rg3g4pymdl3sgdcz4g4" - } - }, { "ename": "org-link-travis", "commit": "52c7f9539630e5ac7748fe36fd27c3486649ab74", @@ -66246,38 +69558,6 @@ "sha256": "1797pd264zn19zk93nifyw6pwk2a7wrpfir373qclk601yv2g5h8" } }, - { - "ename": "org-linkany", - "commit": "df82cf95e34775b22da0a8bb29750f603c58f259", - "sha256": "0arjj3c23yqm1ljvbnl7v9cqvd9lbz4381g8f3jyqbafs25bdc3c", - "fetcher": "github", - "repo": "aki2o/org-linkany", - "unstable": { - "version": [ - 20160207, - 411 - ], - "deps": [ - "log4e", - "yaxception" - ], - "commit": "8cfe2f1a46e6654a79f56505349d1396263cecb3", - "sha256": "0lqxzmjxs80z3z90f66f3zfrdajiamdcwpvfv5j2w40js9xz4x37" - }, - "stable": { - "version": [ - 0, - 0, - 2 - ], - "deps": [ - "log4e", - "yaxception" - ], - "commit": "ed4a6614b56c9baef31647ea728b3d5fae6ed3a2", - "sha256": "1bggz782ci0z6aw76v51ykbmfzh5g6cxh43w798as1152sn7im3p" - } - }, { "ename": "org-listcruncher", "commit": "5bed5078a3e56a825be61d158ca8321763b92f7c", @@ -66311,8 +69591,8 @@ "deps": [ "org-pdfview" ], - "commit": "af09bdf2c83499be9f7c271bb3c0cc3c46ed95f4", - "sha256": "0bm8i4bfa76igzzjlv9qx9fh3diplmvhn99bz1clq1ifr4i53sv0" + "commit": "bba86a9b9979bd79e9bfaf4a7b472682b9435490", + "sha256": "1ndd1iw207jnv0mib2r6mxldba4c4nna69wdvj8mzynn6ldxg5bk" } }, { @@ -66323,30 +69603,29 @@ "repo": "alphapapa/org-make-toc", "unstable": { "version": [ - 20191014, - 2307 + 20200110, + 1804 ], "deps": [ "dash", "org", "s" ], - "commit": "d2f61e3c7e995adf0954cd85139842e57d744eb4", - "sha256": "042z0l0hhrfm01jj1r0yd120a67xflzgv5fz6kf28202d6apsv9v" + "commit": "be86a4e026befd9d10af42a22b2483c7969ccee1", + "sha256": "0348iq3bc3rxs5bqdvskyly4agqxiapamqkfm0323620kxl70agw" }, "stable": { "version": [ 0, - 3, - 1 + 4 ], "deps": [ "dash", "org", "s" ], - "commit": "e92fd443c998532ff786361ae72b6981dc1f2ff0", - "sha256": "03vgygni5f1qrmchwy0szks47hwhpl21qvk4wlwh2bd79rxnhc1f" + "commit": "be86a4e026befd9d10af42a22b2483c7969ccee1", + "sha256": "0348iq3bc3rxs5bqdvskyly4agqxiapamqkfm0323620kxl70agw" } }, { @@ -66357,14 +69636,14 @@ "repo": "org-mime/org-mime", "unstable": { "version": [ - 20190805, - 57 + 20200323, + 130 ], "deps": [ "cl-lib" ], - "commit": "4bd5d55ba9bca84ffd938b477c72d701cf3736df", - "sha256": "0a9vjlg5rz3c61wvy0wsj9l5y3p6b1v8hz84ksh97xnmmzclp1nx" + "commit": "778f818ad3d101f27786556c2a7a9995d5da47c6", + "sha256": "0w3yyqn225c5y0if5pjvvszpasrvh3rh4f0bqjabrvqvrhf1q8ny" }, "stable": { "version": [ @@ -66394,8 +69673,8 @@ "dash", "org" ], - "commit": "16a8aac5462c01c4e7b6b7915381fde42fd3caf6", - "sha256": "0ipkmws7r8dk2p65m9jri90s8pgxhzidz7g2fmh7d6cz97jbk3v7" + "commit": "95347b2f9291f5c5eb6ebac8e726c03634c61de3", + "sha256": "0mkmh1ascxhfgbqdzcr6d60k4ldnh3l8dylw4m7wglz15hm3ixbm" } }, { @@ -66424,20 +69703,20 @@ "repo": "unhammer/org-mru-clock", "unstable": { "version": [ - 20190610, - 2005 + 20200128, + 1208 ], - "commit": "1547191254f6fc58b62864d0224356e72bd7d933", - "sha256": "0j3gscmf8i05ixj31ipdc88kbb7zqs5sdhbd3ipqpahakmg6axhh" + "commit": "8f9f4f978a3c40adf2ff00eebb56bccfe4caf4e1", + "sha256": "0v0q3qzz6fwh0y9c9ci46284msr0x69jfki2ng89hpz8aab90bli" }, "stable": { "version": [ 0, 4, - 1 + 2 ], - "commit": "1547191254f6fc58b62864d0224356e72bd7d933", - "sha256": "0j3gscmf8i05ixj31ipdc88kbb7zqs5sdhbd3ipqpahakmg6axhh" + "commit": "50bf0ec93b3c60eaed7272149bd317bba69a5b6f", + "sha256": "1ydq2y1zibh9mzfpw598nsci6aw4nsnsjc7wv8xjma7pwkzz8wfd" } }, { @@ -66448,33 +69727,33 @@ "repo": "jeremy-compostella/org-msg", "unstable": { "version": [ - 20190916, - 2334 + 20200303, + 1716 ], "deps": [ "htmlize" ], - "commit": "7616a9760bd1e3fb0e6a22f6e1cbc2bf71a733df", - "sha256": "0mccaw4wvh4624iyxfbv1jr01z7fkjg5mcl56scq164daznm200g" + "commit": "2f521a89b106750ebafa94503cdeb043a02c5ab5", + "sha256": "1wr8qdkf75swf4jfqbv0r2hw7d5bw73nyyv7xa0msbc1hyw33b6l" } }, { "ename": "org-multiple-keymap", - "commit": "0a22beed723d149282e70e3411b79e8ce9f5ab2b", - "sha256": "16iv5575634asvn1b2k535ml8g4lqgy8z5w6ykma5f9phq5idb9f", + "commit": "c52a1ea0afa8e5f439b7ac987b79c49eb08fe95a", + "sha256": "104vcwawrzl99nfj3afq1mh83yirhscwfa1xw7z84ikrf6m0xir7", "fetcher": "github", - "repo": "myuhe/org-multiple-keymap.el", + "repo": "emacsattic/org-multiple-keymap", "unstable": { "version": [ - 20150329, - 106 + 20191017, + 1920 ], "deps": [ "cl-lib", "org" ], - "commit": "8ebc532df7f0dd6e6c3aa7c380a51d4166c668e8", - "sha256": "0zbpzm9lni6z180s7n52x8s5by5zkq2nlhx82l2h9i7in9y4r6c3" + "commit": "4eb8aa0aada012b2346cc7f0c55e07783141a2c3", + "sha256": "0ivgvwrakgr527lylz9si1z3ip3n7bx02pj1acw8ab8swp1cxmy3" }, "stable": { "version": [ @@ -66523,8 +69802,8 @@ "cl-lib", "org" ], - "commit": "d051a5909878e2214422fd275968ab4d7ef9bcab", - "sha256": "12v13l4va28abjgcq1q2lzml8cahh5qbbl0wzvbm41y9cmlbgmxq" + "commit": "9ead81d42dd4dd5074782d239b2efddf9b8b7b3d", + "sha256": "1ysz8v2yakchs4va5niaf5rnydwrmz721hbaa2l63wjw0nsmi7l3" }, "stable": { "version": [ @@ -66596,8 +69875,8 @@ "org", "ov" ], - "commit": "b95b6a7ed9289637cb512232470633b330ca9713", - "sha256": "03x3n2ywgk2x7slpzy26bw3l9l000pd964z0yifvf9fqhpbk5d0r" + "commit": "22014917dd7e751c46fa13e1e836c2d0265ce82f", + "sha256": "0gjvd7xd9kl06cgdyya2qbl7r4a9y4zfq1ci0109w5axs3zjin1m" } }, { @@ -66644,8 +69923,8 @@ "org", "simple-httpd" ], - "commit": "d539731d7a38899ef034b905f834f383ed102881", - "sha256": "1g8ins9kp0sl19dgk697xhh9vnxbryz74zc4qk61gbmfd5farg7y" + "commit": "d0e55416174a60d3305e97ca193b333f4cccba4f", + "sha256": "0l1jkap8wjprsaglys5hy5ijhaxfv8bzry9axqcfg6xr0bmbyhm7" }, "stable": { "version": [ @@ -66714,6 +69993,26 @@ "sha256": "0pqmnhd3qdg06agj6h8v8lm4m5q8px0qmd7a1bfn6i5g2bq9zrck" } }, + { + "ename": "org-pdftools", + "commit": "62cf59d93b7b6700c4f7711e5fd22ece04896e6a", + "sha256": "0fqkq8hpcxzpj3irczkad78m3chadqk2895bdbj7xpdlr0803n32", + "fetcher": "github", + "repo": "fuxialexander/org-pdftools", + "unstable": { + "version": [ + 20200329, + 1507 + ], + "deps": [ + "org", + "org-noter", + "pdf-tools" + ], + "commit": "96fe7275c75842732c3fd1527619088f66b6a80a", + "sha256": "1ri58hyksp4fhmm6323ndc1h3ljkxjgbzcp588h76fkpk19lzhq1" + } + }, { "ename": "org-pdfview", "commit": "855ea20024b606314f8590129259747cac0bcc97", @@ -66753,11 +70052,11 @@ "repo": "tumashu/org-picklink", "unstable": { "version": [ - 20190902, - 654 + 20191203, + 59 ], - "commit": "e8c95e188b60ff84d794cbedbcce6732ccb82e4f", - "sha256": "05b488h1b5yvh0892358ndina2lywh67lhvqp180rp5ivz7zqm10" + "commit": "f79040ed988bdeec63b098b187e00f2b80d3d570", + "sha256": "0a0dzg8w617sn079mshihfv5sm74xphab81kmvi1dqcc5iyi15kh" } }, { @@ -66768,8 +70067,8 @@ "repo": "org-pivotal/org-pivotal", "unstable": { "version": [ - 20190823, - 1530 + 20191116, + 530 ], "deps": [ "a", @@ -66777,16 +70076,16 @@ "dash-functional", "request" ], - "commit": "11bde7699634926369fad0081d5e6d7525ac3260", - "sha256": "03zs5y0wm49pma739574sq6aky26l64j3bi6c8k52zzmg3pm3shy" + "commit": "f073f3ed8c2e78f5080c617d01b1f6bb3df63d1c", + "sha256": "13bqcwlappxz0gsiyvklrf0xv4an6s4id48s3ydi0hki1na9fzzk" } }, { "ename": "org-pomodoro", - "commit": "e54e77c5619b56e9b488b3fe8761188b6b3b4198", - "sha256": "1vdi07hrhniyhhvg0hcr5mlixy6bjynvwm89z2lvfyvnnxpx0r27", + "commit": "cdd1f8002636bf02c7a3d3d0a075758972eaf228", + "sha256": "0pcf8a57fgf6f2pwlnrxc3kwm96lc2ji934y4ck8cm5rwwh05lk7", "fetcher": "github", - "repo": "lolownia/org-pomodoro", + "repo": "marcinkoziej/org-pomodoro", "unstable": { "version": [ 20190530, @@ -66821,14 +70120,14 @@ "repo": "rlister/org-present", "unstable": { "version": [ - 20180303, - 2330 + 20200204, + 1647 ], "deps": [ "org" ], - "commit": "d13acd70eff6a1608bc991920232146a0de76b21", - "sha256": "0jz8xiny3rv9ql0p623byz32pip1b82j2c2nyfz2wd114kiabb6q" + "commit": "9709ca2d04a59959354222ac4d3f8b750785739a", + "sha256": "08f8gh2zg4gr4d5ajlcnlj2lsp8nywni4mhw4w4nfa4dwyq7mxgv" } }, { @@ -66839,15 +70138,15 @@ "repo": "duncan-bayne/org-present-remote", "unstable": { "version": [ - 20181001, - 2141 + 20191206, + 533 ], "deps": [ "elnode", "org-present" ], - "commit": "d0f96dd57c152e7aa311ecbe03e7be287fd5979f", - "sha256": "1n0cafvpc8vqhh34d4kicw6a5qn1jpnczjh67nvwd2iw48pii5rk" + "commit": "d66aa2022eea65c83b6e5e5b99a1331284a7ec30", + "sha256": "1ji1qqhp6hpsmri0lgwzvvn1477njlcv60958xf6akvryk6azqh3" } }, { @@ -66858,20 +70157,20 @@ "repo": "marcowahl/org-pretty-tags", "unstable": { "version": [ - 20190715, - 1843 + 20200303, + 2201 ], - "commit": "8249601b6c75ac26254f3f12e38f5cb51e22bfdd", - "sha256": "0ws9b473b0dh8sp4qaj8v8p1qvfi0xxmgwnv1biydjwm50mzlran" + "commit": "40fd72f3e701e31813f383fb429d30bb88cee769", + "sha256": "0d80cbkdq1d8cqc5nv732gzw4k6m2dpjjix3ycfyf27m4wkbwhmc" }, "stable": { "version": [ 0, 2, - 1 + 2 ], - "commit": "8249601b6c75ac26254f3f12e38f5cb51e22bfdd", - "sha256": "0ws9b473b0dh8sp4qaj8v8p1qvfi0xxmgwnv1biydjwm50mzlran" + "commit": "549fa6969660dcf0cf9bca5b7341d0cb48ec3b77", + "sha256": "12s74if74vw8q5awgrk0d1244ysfgb9kw3dxhypsccsbf413jmii" } }, { @@ -66909,7 +70208,7 @@ "projectile", "s" ], - "commit": "de37d0094791ab1146276904f3a37eba699e0b60", + "commit": "96a57a43555e24e5e0d81e79f0fbb47001c41bac", "sha256": "05h9scvnd9ggfwbbl1m124k6sdn5kp9mv2695cril2m4dkr1kyqz" }, "stable": { @@ -66943,7 +70242,7 @@ "helm", "org-projectile" ], - "commit": "de37d0094791ab1146276904f3a37eba699e0b60", + "commit": "96a57a43555e24e5e0d81e79f0fbb47001c41bac", "sha256": "05h9scvnd9ggfwbbl1m124k6sdn5kp9mv2695cril2m4dkr1kyqz" }, "stable": { @@ -66994,8 +70293,30 @@ "repo": "alphapapa/org-ql", "unstable": { "version": [ - 20191019, - 710 + 20200315, + 2004 + ], + "deps": [ + "dash", + "dash-functional", + "f", + "map", + "org", + "org-super-agenda", + "ov", + "peg", + "s", + "transient", + "ts" + ], + "commit": "ab5e9aa9116010e5da1995bf19ff26f55b93c214", + "sha256": "0h90vagb91zskvmy06yq0b1vjbkqry0fkxiagg4d076rbx3ryc0n" + }, + "stable": { + "version": [ + 0, + 4, + 4 ], "deps": [ "dash", @@ -67008,27 +70329,8 @@ "s", "ts" ], - "commit": "0d6523f85b48080582a84b1dc1213f80de40d3c6", - "sha256": "0g01yrf5zcpnf6m4q37b3qzkqgs5s97b6l5wdgf9yy8rgj7rbpgr" - }, - "stable": { - "version": [ - 0, - 3, - 2 - ], - "deps": [ - "dash", - "dash-functional", - "org", - "org-super-agenda", - "ov", - "peg", - "s", - "ts" - ], - "commit": "2274efce077c7cf8b2930a8bfb9980c251d8e737", - "sha256": "11bhpi2l28vp8mm9nx18jljbqdnh9vxpv9kp1dn9lpsgivcdbc34" + "commit": "4fef5b089f8f77b0dc25dac5f096406156e90858", + "sha256": "065wkxd269v19r5s8g2haapwhwr3s6c5amwzshfl2hq5z0bldvqi" } }, { @@ -67087,16 +70389,16 @@ "repo": "mwfogleman/org-randomnote", "unstable": { "version": [ - 20190403, - 1633 + 20200110, + 1407 ], "deps": [ "dash", "f", "org" ], - "commit": "f35a9d948751ad409aa057bfb68f1d008fdf9442", - "sha256": "01nf3h5sg74lph1hjj7q77pxn6xxv4zq9cjnd97a7bfbpilq86a0" + "commit": "ea8cf4385970637efffff8f79e14576ba6d7ad13", + "sha256": "0q6xfwf35dy13hif3qrkqyhlwpmpcfsaw3lfwgv0dhi0g7h5bpry" } }, { @@ -67107,28 +70409,28 @@ "repo": "oer/org-re-reveal", "unstable": { "version": [ - 20191020, - 1137 + 20200206, + 712 ], "deps": [ "htmlize", "org" ], - "commit": "62f0868c4e9b098fb43b62b257bcd924779838c0", - "sha256": "0nbbynpgwmw85y90frbkna0s0sxxdhskpijnl41f9l6psll70mq4" + "commit": "e4460a98b6bfa01720c287a171252f49c1949801", + "sha256": "0hhwc6yfy69qwiyxca8r12rdxvrj44vzdsnvdk0yc9szsfnmn4hz" }, "stable": { "version": [ 2, 12, - 0 + 1 ], "deps": [ "htmlize", "org" ], - "commit": "62f0868c4e9b098fb43b62b257bcd924779838c0", - "sha256": "0nbbynpgwmw85y90frbkna0s0sxxdhskpijnl41f9l6psll70mq4" + "commit": "14df7542f2a675f65501962e344e03d798cf0d39", + "sha256": "1mc01v257884pdsw37dghgddyyy6v6rd9cmnnpq45xvd5ibz1vaf" } }, { @@ -67148,6 +70450,19 @@ ], "commit": "1f56a1fc9a52f3815bb2115ebeca3c355688d722", "sha256": "1xrswpkr7hgsb9pj991z4m0820f1nksfad184x0j7kir2xcx0myg" + }, + "stable": { + "version": [ + 1, + 0, + 0 + ], + "deps": [ + "org-re-reveal", + "org-ref" + ], + "commit": "abcd622e4edaa5e4480bcd1e7e4953f67c90e036", + "sha256": "08ia6gn0x0yydl28dhghifyxz0mrn0asllqg4s449gaz729cxqkd" } }, { @@ -67158,8 +70473,8 @@ "repo": "alphapapa/org-recent-headings", "unstable": { "version": [ - 20190909, - 1618 + 20200228, + 215 ], "deps": [ "dash", @@ -67168,8 +70483,8 @@ "org", "s" ], - "commit": "6430700dbe2ba34d852b36d56b3a879d71dabc9a", - "sha256": "0rl7f2dnwv90l7dnhgzaqnpmff0li366dmkiprjydxchkh1n7mic" + "commit": "bb9c96bea63a0ce8c0d18e8b8b4b24085d4c9d89", + "sha256": "15fa794drfz9vh9jms4ivayys3kf50nry8x06i8v76kn716klv49" }, "stable": { "version": [ @@ -67193,14 +70508,14 @@ "repo": "m-cat/org-recur", "unstable": { "version": [ - 20190719, - 846 + 20191216, + 2353 ], "deps": [ "org" ], - "commit": "23c3c3a85d9042dc09ed6147b274f4043cfa50f7", - "sha256": "1sw9h6543zgsyss5ns3bjviz0nblsr077hp8b15pva0ch2836vg5" + "commit": "ae20a538b2b4dcec139089bb44f1e4abc5b04f72", + "sha256": "1x0gpq7n8crn48nfj2hmbfxd4yj5implgh5mvfnr0k1d89r6gwcn" } }, { @@ -67226,8 +70541,8 @@ "repo": "jkitchin/org-ref", "unstable": { "version": [ - 20191023, - 117 + 20200309, + 1231 ], "deps": [ "dash", @@ -67241,8 +70556,8 @@ "pdf-tools", "s" ], - "commit": "58ae484729aa2027fcc3283a75f4c2c19cf499a2", - "sha256": "1sbjxrs6axfpwiy74dbq9nrax6qyjmypg4dnxy4y1xab24n6q4fk" + "commit": "e3eb9215a540ba62a0b0253d003c704b7740deeb", + "sha256": "152wzlavx5b4ap9wdl3dql5idvsjl5zq6zjwcilp9pni6dn34w12" }, "stable": { "version": [ @@ -67297,14 +70612,26 @@ "repo": "akirak/org-reverse-datetree", "unstable": { "version": [ - 20190914, - 102 + 20200325, + 1003 ], "deps": [ "dash" ], - "commit": "a3bc7846531b55337ec069d0696b8d8a04fad3de", - "sha256": "0xhsv46xx9bzakzpb9y133s9drj5vyg8wrm15llqhgnaygakpfj6" + "commit": "afac070eb64cc24917c0ab0e14686258da4916f6", + "sha256": "1737r8c5kpb68yb2sixp88fm7fcmr7rvpkpywyxzwgqk30xpsjgq" + }, + "stable": { + "version": [ + 0, + 3, + 2 + ], + "deps": [ + "dash" + ], + "commit": "cfb14dc77768ea901fe5a49662ae10ae3ccc7bde", + "sha256": "05qjj4zfm84s7lmlnq2nndmh76cpnhh62rybdiz2fjsj1ns0zjln" } }, { @@ -67346,6 +70673,46 @@ "sha256": "0gxb0fnh5gxjmld0hnk5hli0cvdd8gjd27m30bk2b80kwldxlq1z" } }, + { + "ename": "org-roam", + "commit": "278f993cf094b39b5d049f05e0cbba61e52a6f0c", + "sha256": "1m4nw1r8kdxigdvws5arqglamrx4g62v4p482flikk7w52gcs7is", + "fetcher": "github", + "repo": "jethrokuan/org-roam", + "unstable": { + "version": [ + 20200329, + 1330 + ], + "deps": [ + "dash", + "emacsql", + "emacsql-sqlite", + "f", + "org", + "s" + ], + "commit": "b86d2c8637f5eafd587c4cf4fe85e7d0380844f4", + "sha256": "04i8i3dixf50vqp8jrwcbf4c8d7m47g9lyzj76h49jd8bv2fqang" + }, + "stable": { + "version": [ + 1, + 0, + 0 + ], + "deps": [ + "dash", + "emacsql", + "emacsql-sqlite", + "f", + "org", + "s" + ], + "commit": "1433dbc31602c412914c71ecc81aa5dcf6b03daf", + "sha256": "08pfa63k194dpk0y2gfa0nzn5lig81q0l9axkq5j4ibj6ifaap4a" + } + }, { "ename": "org-rtm", "commit": "855ea20024b606314f8590129259747cac0bcc97", @@ -67364,6 +70731,26 @@ "sha256": "1hn8y9933x5x6lxpijcqx97p3hln69ahabqdsl2bmzda3mxm4bn2" } }, + { + "ename": "org-scrum", + "commit": "8315b6834d76180fd050b0d5cc2239d604fe2f3b", + "sha256": "1bvxcj5675kh7zf839qb0hdy6jlllpqm7ngb5ixx1klax7l8n7pr", + "fetcher": "github", + "repo": "ianxm/emacs-scrum", + "unstable": { + "version": [ + 20200131, + 1129 + ], + "deps": [ + "cl-lib", + "org", + "seq" + ], + "commit": "8b5cd196bb37cebd1aa5b02ed189ad7dadd92078", + "sha256": "1bb9njb8wqw5vm1kl63jqql2q5fmms2v6rhvfywr75iiirakxqzz" + } + }, { "ename": "org-seek", "commit": "855ea20024b606314f8590129259747cac0bcc97", @@ -67405,8 +70792,8 @@ "repo": "alphapapa/org-sidebar", "unstable": { "version": [ - 20191012, - 514 + 20200313, + 1551 ], "deps": [ "dash", @@ -67416,13 +70803,13 @@ "org-super-agenda", "s" ], - "commit": "b5eff7195718e6a70a42d36e48800632080aab0c", - "sha256": "138hbcmkxmmdcagdv438946cr4qkwklqqwf2b1khi8gimnnivsxm" + "commit": "d6ddec21fd6f356dc7b77c0a61a633606965a0bf", + "sha256": "137a462cl66jldsw877jgn0jph4zsv036mhvd9rpp6pw6jsw50sy" }, "stable": { "version": [ 0, - 2 + 3 ], "deps": [ "dash", @@ -67432,8 +70819,8 @@ "org-super-agenda", "s" ], - "commit": "9634320a6f9ab919119e08a14853c31387f38ce3", - "sha256": "106h06vjfbqfj761vbxwymd6612ds8c6fk053yzgbrqzm3hn2c03" + "commit": "41b914c7bdc5a12c9289b134822bdfea0889ac9e", + "sha256": "1mggpxbzprmmbkiv3xklw1saafsi153n4spr4l0m59lgm4gpymgj" } }, { @@ -67468,14 +70855,14 @@ "repo": "ndwarshuis/org-sql", "unstable": { "version": [ - 20190621, - 2111 + 20200217, + 2130 ], "deps": [ "dash" ], - "commit": "e1bcfd7d648ce60bc2dd24b6e2144199af03563a", - "sha256": "0a0g60bbi3lfzj9gg0l0a068p8c8lqln4qcsf1rk879i70g365fv" + "commit": "9543ad58bc471abf09705d2615c50c1ead90c660", + "sha256": "18i4zhk955q13qvascvr8ag6pv2i9s14xfwl2061zjqarx89sxa1" } }, { @@ -67486,15 +70873,15 @@ "repo": "akirak/org-starter", "unstable": { "version": [ - 20191005, - 413 + 20191224, + 1909 ], "deps": [ "dash", "dash-functional" ], - "commit": "c9f0f91437131dbace3299ff5912e85f07bf2b21", - "sha256": "0w51jv9jlkl35296g5v2q81mdrncsj2arnrnj8w3hv18dyrx2db2" + "commit": "4c0f01a493a6dc9ab3fec50e0b458aa0d35464f9", + "sha256": "1c2vjxgscngg0k7qxr67ad0cws9yv88yhmdrn9qq4rxzc9fdjkzg" }, "stable": { "version": [ @@ -67525,8 +70912,8 @@ "org-starter", "swiper" ], - "commit": "c9f0f91437131dbace3299ff5912e85f07bf2b21", - "sha256": "0w51jv9jlkl35296g5v2q81mdrncsj2arnrnj8w3hv18dyrx2db2" + "commit": "4c0f01a493a6dc9ab3fec50e0b458aa0d35464f9", + "sha256": "1c2vjxgscngg0k7qxr67ad0cws9yv88yhmdrn9qq4rxzc9fdjkzg" }, "stable": { "version": [ @@ -67550,20 +70937,20 @@ "repo": "bastibe/org-static-blog", "unstable": { "version": [ - 20191023, - 633 + 20200324, + 747 ], - "commit": "d8522a7a245a47e850f42d4773e5ceec0fff4e94", - "sha256": "1g5x3imrbazxk9rfwaijgsd1wzxd5fm3wa1wg28mifyp873wypk5" + "commit": "635ec9901be9d03402dd3d4b11e71f07bf1cf6f9", + "sha256": "1fc0r53209igflfxm2dncpmdh8zncr40y1ylj1j2pcyrdlghqpvw" }, "stable": { "version": [ 1, - 2, - 1 + 3, + 0 ], - "commit": "f69d2fd6671fb250fbd87df5efa898a7bf5b9bda", - "sha256": "1h9c96rbxxk1jypib5f9pfi5zkimkvhxi61j0sps6r39435dd3w7" + "commit": "afe250fc43cd1beffd7946b54692d712d9263ff2", + "sha256": "15iy3z8rglaqbx1fz14inh18ksgjsmq30b8hyv3lgjvcc9ssaiw0" } }, { @@ -67574,14 +70961,14 @@ "repo": "alphapapa/org-sticky-header", "unstable": { "version": [ - 20190406, - 2313 + 20191117, + 549 ], "deps": [ "org" ], - "commit": "32c13a56a78a4de239010031fea4b9583bac2512", - "sha256": "1vngxj8d946qmi65x9yiz4pihqrim8fl1sbxfjzp8fkykx0ybiy1" + "commit": "1053ebdeb3bd14fc8d4538643532efb86d18b73c", + "sha256": "171j10ngngra45sxmlkzrcmhhqf2b6yjqq0r5gl16zcbgggg936a" }, "stable": { "version": [ @@ -67604,8 +70991,8 @@ "repo": "alphapapa/org-super-agenda", "unstable": { "version": [ - 20190925, - 958 + 20200310, + 1337 ], "deps": [ "dash", @@ -67614,8 +71001,8 @@ "s", "ts" ], - "commit": "a87ca11fbbe72ab6c1c4c3b55ae9e1e93ebfb8ba", - "sha256": "08b7babdaqblb6jff57an4kbcxk6fkhf668620fipfjgbsnqv3ff" + "commit": "dd0d104c269fab9ebe5af7009bc1dd2a3a8f3c12", + "sha256": "0kx9sikk7c3j0zp3a31kj8zv2kjxqjhhl25n7c7nslf2fp5w2d8b" }, "stable": { "version": [ @@ -67633,6 +71020,36 @@ "sha256": "1ghwap34y4gvwssqv3sfqa8wn9jh6pawc7xnkhm1qxmvs53gxbg6" } }, + { + "ename": "org-superstar", + "commit": "1e49a3cc1006f271ce53f03717b0484a4fd89957", + "sha256": "0rbmrdc7ghcwk5y4jkgf7axwknck85l4xl03kwbkmnac0w98zzlj", + "fetcher": "github", + "repo": "integral-dw/org-superstar-mode", + "unstable": { + "version": [ + 20200311, + 1848 + ], + "deps": [ + "org" + ], + "commit": "715a9681d31968807df349280f96932f1a986f37", + "sha256": "0klq0khb59hmkwhay0dln5zhii8mbk3d7rn7rddixrrh5x5ghrlv" + }, + "stable": { + "version": [ + 1, + 0, + 0 + ], + "deps": [ + "org" + ], + "commit": "2f9f9d6b21cb54c2ce6af15ab0e3c73e2b962d78", + "sha256": "0q6180qwjpha10zsiw0ni6lanyjwlj8141a6qivfcs8nwczz7nvz" + } + }, { "ename": "org-sync", "commit": "923ddbaf1a158caac5e666a396a8dc66969d204a", @@ -67746,11 +71163,11 @@ "repo": "mtekman/org-tanglesync.el", "unstable": { "version": [ - 20190926, - 1345 + 20200127, + 1616 ], - "commit": "d99181f173b4e55b4e835d99fcd415e62beb047f", - "sha256": "0x94gy1bgfd1f3p9w2bfrqj11bwy9ql0cpi1gw6srpj7kykx0lml" + "commit": "af83a73ae542d5cb3c9d433cbf2ce1d4f4259117", + "sha256": "11rfn0byy0k0321w7fjgpa785ik1nrk1j6d0y4j0j4a8gys5hjr5" } }, { @@ -67975,11 +71392,11 @@ "repo": "takaxp/org-tree-slide", "unstable": { "version": [ - 20190729, - 1550 + 20200114, + 2334 ], - "commit": "036a36eec1cf712d3db155572aed325daa372eb5", - "sha256": "1r8ncx25xmxicgciyv5przp68y8qgy40fm10ba55awvql4xcm0yk" + "commit": "7bf09a02bd2d8f1ccfcb5209bfb18fbe02d1f44e", + "sha256": "1pzgb1z5k8zsbdqiaa7l94xlrncji1l09zqxvq62fyc0slxcf4ix" }, "stable": { "version": [ @@ -67991,6 +71408,26 @@ "sha256": "0aacxxwhwjzby0f9r4q0lra5lqcrw5snnm1yc63jrs6c0ifakk45" } }, + { + "ename": "org-treescope", + "commit": "f824498a74dcf0b8130baf474841b240adfa07a7", + "sha256": "13j7xz9i11kga1s0yvdv3k54076llna8vnnp0v8ri5pgbdrmc20w", + "fetcher": "github", + "repo": "mtekman/org-treescope.el", + "unstable": { + "version": [ + 20200324, + 1959 + ], + "deps": [ + "dash", + "org", + "org-ql" + ], + "commit": "cad2aa82e5ca73bd7afc31b7a5e764da5ab716c3", + "sha256": "1jsc39xmli54mcqcdddzyaphmhlamwq167vfr2g133c3p0wx8swh" + } + }, { "ename": "org-trello", "commit": "188ed8dc1ce2704838f7a2883c41243598150a46", @@ -67999,8 +71436,8 @@ "repo": "org-trello/org-trello", "unstable": { "version": [ - 20190304, - 900 + 20200130, + 1748 ], "deps": [ "dash", @@ -68009,8 +71446,8 @@ "request-deferred", "s" ], - "commit": "94539558343ff109030e20ebba6a282af41a5eb9", - "sha256": "10pdr3pgshnbk2g3srn2ja5a1z37fxvjr4xz5r1zni109m8x98mp" + "commit": "e8e88239b5130307368f554b96fbf05ff4c207b5", + "sha256": "0kzvyv8rs0fsfbqsvgdjxlfa0qyi7wsdnfjw7c0hbwi25al39zm7" }, "stable": { "version": [ @@ -68037,11 +71474,11 @@ "repo": "cadadr/elisp", "unstable": { "version": [ - 20190914, - 2046 + 20191207, + 2022 ], - "commit": "5f3e67448cc98fe2875115163849acae4d9e8526", - "sha256": "1w0dhyr4i0nx0g70smgclcfsbv6cfilb7df330njzaqk8j2gdfws" + "commit": "eab07dae119129066624e692c1c75a53b2ab10a5", + "sha256": "1q9g8kza6hv6pv1sjzkl6b4gxcx6fsvv8lk5w7kk9gpws5vjz5bz" } }, { @@ -68052,11 +71489,11 @@ "repo": "flexibeast/org-vcard", "unstable": { "version": [ - 20190810, - 124 + 20191130, + 703 ], - "commit": "df5e2d3bc0c3970e5fd553ee9d55878c4f9a163d", - "sha256": "0x862pqya2q4pg8448qlp5267x8ycqq1zmkbvcyrzanag3983d8v" + "commit": "4f5d71225e946999f45ac9f96996705fee83df5a", + "sha256": "1w8miq52d2rlyslbss5173gnbv7rmkn2cicd9h272v6ybb585hcd" }, "stable": { "version": [ @@ -68091,8 +71528,8 @@ "repo": "alphapapa/org-web-tools", "unstable": { "version": [ - 20191022, - 337 + 20191217, + 1459 ], "deps": [ "dash", @@ -68101,8 +71538,8 @@ "request", "s" ], - "commit": "3f528c0d2cf6eeb5f0a672d1ed719b7476472136", - "sha256": "1gjcfgh53d75slhw1vcn1mcccjbm7qs8qys76n45wl7ral5108nz" + "commit": "ebc7888f4f4cad26ec1298edd7bf606a5ea2d564", + "sha256": "09ihqas9rx7c6146zmb3p0q395gxkfscxixlmz4v05smrhka1xz8" }, "stable": { "version": [ @@ -68129,8 +71566,8 @@ "repo": "akhramov/org-wild-notifier.el", "unstable": { "version": [ - 20190930, - 1912 + 20200328, + 1153 ], "deps": [ "alert", @@ -68138,14 +71575,14 @@ "dash", "dash-functional" ], - "commit": "f2ea8a719cf61742def57475400222a498256bb6", - "sha256": "0wrr52bryvv1aj2fk5ik71iifh15bzmvrw1ixzs1afcdp2fn0bcm" + "commit": "4011d7f557da3ae5eee73c56ae514b963fb4d1c1", + "sha256": "0mr5qmrnz0mr6w7ib8bcdlqwhzwnxfbnd47zyg9i6lmh20p8qrns" }, "stable": { "version": [ 0, - 3, - 2 + 4, + 0 ], "deps": [ "alert", @@ -68153,20 +71590,43 @@ "dash", "dash-functional" ], - "commit": "f2ea8a719cf61742def57475400222a498256bb6", - "sha256": "0wrr52bryvv1aj2fk5ik71iifh15bzmvrw1ixzs1afcdp2fn0bcm" + "commit": "4011d7f557da3ae5eee73c56ae514b963fb4d1c1", + "sha256": "0mr5qmrnz0mr6w7ib8bcdlqwhzwnxfbnd47zyg9i6lmh20p8qrns" + } + }, + { + "ename": "org-working-set", + "commit": "8df6c37b8d5b7f4a296e57ad1fd758cb99aff718", + "sha256": "0dkwgci0s6znc25hcvj3a3djarwmwdjyx2lgfrf6sgbqd5l30s8l", + "fetcher": "github", + "repo": "marcIhm/org-working-set", + "unstable": { + "version": [ + 20200207, + 2036 + ], + "commit": "813c2e7af2ec1dacf037b1f971f070a4f784d2a5", + "sha256": "12dagcvcba3j74grijgibpskr3qc373m25xkp2p86ap81bg58zn8" + }, + "stable": { + "version": [ + 2, + 0 + ], + "commit": "813c2e7af2ec1dacf037b1f971f070a4f784d2a5", + "sha256": "12dagcvcba3j74grijgibpskr3qc373m25xkp2p86ap81bg58zn8" } }, { "ename": "org-wunderlist", - "commit": "44019e5d9e3d0f3e2cf76fa5828e1f953fd5e60b", - "sha256": "08zg3wgr80rp89c53ffqzz22ws9bp62a1m74xvxa74x6nq9i4xl0", + "commit": "c52a1ea0afa8e5f439b7ac987b79c49eb08fe95a", + "sha256": "08lxxdm740cnzkzar1hqrapwjh087nsgm0kzi9fxlq405gc0sza9", "fetcher": "github", - "repo": "myuhe/org-wunderlist.el", + "repo": "emacsattic/org-wunderlist", "unstable": { "version": [ - 20150818, - 213 + 20191017, + 1917 ], "deps": [ "alert", @@ -68175,8 +71635,8 @@ "request-deferred", "s" ], - "commit": "f7f1ca73661356b9fa072efd73431592ff1182e1", - "sha256": "169wzfjc9bbk2ydgq1zghrwkfp2fjwsrnwsw86npslj4c4bz41mm" + "commit": "1a084bb49be4b5a1066db9cd9b7da2f8efab293f", + "sha256": "05kd8d0687dlmy8a4qvxa3bdcsvxd10hxkl5i4654w88pg07qm8g" } }, { @@ -68187,8 +71647,8 @@ "repo": "org2blog/org2blog", "unstable": { "version": [ - 20191021, - 130 + 20200317, + 2136 ], "deps": [ "htmlize", @@ -68196,22 +71656,23 @@ "metaweblog", "xml-rpc" ], - "commit": "b02a056e1fa1a044a5bc5d44cc0fb0b8c62e1442", - "sha256": "1vglshyg8i5q17zxs9s5f0r5qwm18rah7qp7rd00pn4qg48zhy2b" + "commit": "821ed77f0982dfeb1df50380931d53e6b7b7036f", + "sha256": "16hrnfz4jp5a672rvgk6ky9xfzvgxx73p5l96wh3x9294vyjd4vi" }, "stable": { "version": [ 1, 1, - 1 + 8 ], "deps": [ "htmlize", "hydra", + "metaweblog", "xml-rpc" ], - "commit": "3cad357cd5c0f7f949fc6c7aa42d76155d036e78", - "sha256": "136l0lm8lv7fgpzply241fngxfl3ck11raamqwislyv0nnjwdfdi" + "commit": "0177fc4e7edd705db59b82c83a24db51dc405890", + "sha256": "1whl7kz4im2jmdz99336wfn152q0l3qwii4w7sn45rlsm2sijiw1" } }, { @@ -68355,11 +71816,11 @@ "repo": "kostafey/organic-green-theme", "unstable": { "version": [ - 20190923, - 1308 + 20200301, + 1916 ], - "commit": "f839bf213520d3736c3e3f712af3ca7ae5321411", - "sha256": "0xjn90wg0f7rich6yja9jm6h3104rihgizim59i1jq6rjngazwhv" + "commit": "9374259e1b22d68f30a1f5376052ab09dbad606d", + "sha256": "13jpfn4sjsw0lssrq0n75085j2g41ppmwky5mq0nyv8j0c0mmqpk" } }, { @@ -68378,6 +71839,20 @@ "f", "s" ], + "commit": "8299bdfd65105feb8d7fb85d2951954d73671cd2", + "sha256": "023gkvhaxx54gcfz6m3pc0yhygf2y43391r1dghivk8420savdjg" + }, + "stable": { + "version": [ + 0, + 1, + 3 + ], + "deps": [ + "cl-lib", + "f", + "s" + ], "commit": "de094d6d56c85aa9820c77055b54287ae6b46d20", "sha256": "0hgdgz1jx292dfxcm1av4v9v6400jpnyp1j21d4fzfi0wj2srfrr" } @@ -68422,30 +71897,30 @@ "repo": "magit/orgit", "unstable": { "version": [ - 20190717, - 1526 + 20191205, + 2300 ], "deps": [ "dash", "magit", "org" ], - "commit": "1e578f8cf97b07835f02858f05a094ae9a5e99bb", - "sha256": "0y8s7w12j39q6fj7adb1018gj3av88dwg894fa5drwzjzh7cgc0k" + "commit": "e7cddf39e301c87c36c7de13e429dee74874d5c8", + "sha256": "00s3a8i221didw8phlbvdvihj9pxkq9k9j9vh1g1mzd7cz58dm07" }, "stable": { "version": [ 1, - 5, - 3 + 6, + 0 ], "deps": [ "dash", "magit", "org" ], - "commit": "ea79e0567ae65fc922fcb05da0f7f4af8eae1973", - "sha256": "1ywavzki510rslsgfm0cnn3mlh644p61ha2nfb715xhkg7cd3j9g" + "commit": "e7cddf39e301c87c36c7de13e429dee74874d5c8", + "sha256": "00s3a8i221didw8phlbvdvihj9pxkq9k9j9vh1g1mzd7cz58dm07" } }, { @@ -68470,14 +71945,14 @@ "version": [ 1, 1, - 3 + 4 ], "deps": [ "dash", "org" ], - "commit": "e9e90e16ddaceaf99c9b251a215d6338b9762b4d", - "sha256": "0vqyidi54rbpqwqi6iv1xaqkr9gfr0pfhr1msxckh8jy6avgy319" + "commit": "988ad54db45708b0fe835829d512eb6d5f6cf161", + "sha256": "1mswfbwz7fm9lriab365g7hq8hn85gxcsg8y41by9j0n8hb3hj5q" } }, { @@ -68611,6 +72086,24 @@ "sha256": "0ha1qsz2p36pqa0sa2sp83lspbgx5lr7930qxnwd585liajzdd9x" } }, + { + "ename": "ormolu", + "commit": "ab315f96d9b8d01ffc3b4748d01c70861daf8c1a", + "sha256": "0d6pgmp1iy3yylvx9bbdia5p0c7m59m8hca55lkxb7g6ck2c628y", + "fetcher": "github", + "repo": "vyorkin/ormolu.el", + "unstable": { + "version": [ + 20200313, + 1631 + ], + "deps": [ + "reformatter" + ], + "commit": "5d991188b511e9d650c84fc578f2f49c9f995693", + "sha256": "1x5nx064cgcjj99xwp7drcvhfmmav1f72jnwwlxllhas2is458m0" + } + }, { "ename": "osx-browse", "commit": "081aa3e1d50c2c9e5a9b9ce0716258a93279f605", @@ -68674,14 +72167,14 @@ "repo": "xuchunyang/osx-dictionary.el", "unstable": { "version": [ - 20171026, - 734 + 20191206, + 519 ], "deps": [ "cl-lib" ], - "commit": "b16630ecf69f87ac873486d8b9c8c03e6c9ea7fa", - "sha256": "06qsg8hlw1b725pzpsg5f194pxqcg1pjncsi8j0815yrlzfcg6sp" + "commit": "1b79ff64c72485cb078db9ab7ee3256b11a99f4b", + "sha256": "1lnjpsb09w48ibjvabqkxqh997mv61zpvqhx3d35q4lw5sirgjxg" }, "stable": { "version": [ @@ -68703,11 +72196,11 @@ "repo": "raghavgautam/osx-lib", "unstable": { "version": [ - 20160920, - 0 + 20191121, + 1440 ], - "commit": "fdbbb41e07ba64d6a09b54bd142a7c7b83bfd09f", - "sha256": "0n03yca62znrri1pg0cl4xzm4lkmdqyf1p9sm1vfjwlwxk552z5x" + "commit": "01cba80ccc20412759f87b8f7531580bb04ec9c1", + "sha256": "0izkifcxk6cp9y4xcmpkhpd2vv1rqapxxa74ks12a55sflyxx36f" } }, { @@ -68718,11 +72211,11 @@ "repo": "purcell/osx-location", "unstable": { "version": [ - 20150613, - 917 + 20200304, + 2209 ], - "commit": "8bb3a94cc9f04b922d2d730fe08596cc6ee12bf2", - "sha256": "09hjcpmh0fxhsx63vcaz05w94xcc8q35vgffggjqaybs7hyzlx69" + "commit": "18fcc306caa575c5afdeaf091aa1a9b003daa52a", + "sha256": "0n59mf0qx78d4qb071qgbvd50vzkn3xffwgxjwjv90193h99qdnj" }, "stable": { "version": [ @@ -68748,6 +72241,30 @@ "sha256": "1rgykby1ysbapq53lnk9yy04r9q4qirnzs2abgvz7g2qjq5fyzag" } }, + { + "ename": "osx-plist", + "commit": "3f536906e3272e1b377d1a192accbc80927e788f", + "sha256": "02m8sam2wi4lfwf1hm5xwal7n50nqvb1bv8k0sikh90yq56zympv", + "fetcher": "github", + "repo": "gonewest818/osx-plist", + "unstable": { + "version": [ + 20200212, + 1724 + ], + "commit": "7e717532c78a97eb77b79e2985cea0b201117ff8", + "sha256": "129874d3g5c1dim6gmx1fllx22rfjg4zdvgdmfpm37l1n8hyzccn" + }, + "stable": { + "version": [ + 2, + 0, + 0 + ], + "commit": "bbed74d334e8a4141c8f6ed07c8e42ee7979c35c", + "sha256": "0d4qb7by8b069mk98wd9n9qn9ibbc6gqchxvws8r8y1sqjv1ssv8" + } + }, { "ename": "osx-pseudo-daemon", "commit": "6104efc035bcf469d133ab9a2caf42c9d4482334", @@ -68756,19 +72273,19 @@ "repo": "DarwinAwardWinner/mac-pseudo-daemon", "unstable": { "version": [ - 20170722, - 607 + 20200215, + 513 ], - "commit": "d235680a72677f11925b912428ad1a57b664e3e8", - "sha256": "0gqknrwhfzr7cf5pgs33a5xh79y0yzxghs6wsvavvqkmf4cvck40" + "commit": "703ee41303dc251b7672b7cba5aeb6aa54a76c90", + "sha256": "0cplbz7mc2zrxfk8g349ahb7gzli2hn5kda9155nbk8dw74xmj7d" }, "stable": { "version": [ 2, - 1 + 2 ], - "commit": "4d10e327cd8ee5bb7f006d68744be21c7097c1fc", - "sha256": "0rjdjddlkaps9cfyc23kcr3cdh08c12jfgkz7ca2j141mm89pyp2" + "commit": "564b006835facc4a8df247d8a47ab1030d7e7beb", + "sha256": "1ilqxl1851rg9v6ixi924xhzykc3c34f4nq1x0vyyq5b9m2fpb27" } }, { @@ -68850,20 +72367,20 @@ "repo": "tarsius/outline-minor-faces", "unstable": { "version": [ - 20181122, - 1121 + 20200103, + 1239 ], - "commit": "38cb0c5ce6bee61a8fbc1040e102792725735bfa", - "sha256": "0zbvxwdgghckqrn5w1j2p1vp0ajsls062l491zx2v50h6pzpmk71" + "commit": "d6247aaec44f60a9bd161c1d56960f80ab314a49", + "sha256": "0mscnbbv6cap818zhzz3ig6ychrw0zw84zyl2g1rksir0qj4hznf" }, "stable": { "version": [ 0, 1, - 1 + 3 ], - "commit": "8788f3e6f922f54b4eccfb80e4c246203a7e81c3", - "sha256": "1ms4mgh8jlvyhdsx5166jqfjdx6rqfbhaqzfrzplgcn6v37097l4" + "commit": "d6247aaec44f60a9bd161c1d56960f80ab314a49", + "sha256": "0mscnbbv6cap818zhzz3ig6ychrw0zw84zyl2g1rksir0qj4hznf" } }, { @@ -68965,15 +72482,15 @@ "repo": "alphapapa/outshine", "unstable": { "version": [ - 20190717, - 1147 + 20191112, + 1414 ], "deps": [ "cl-lib", "outorg" ], - "commit": "4c6107da8fd6119ba1b2379cd2f68c8c7374e8d5", - "sha256": "0i2mhb78d0rcvqv94h4qa98rm1nm11ag8l90v3z819bwph3f44d6" + "commit": "9334b555aaf1426a9e405a57b80809a1615627b3", + "sha256": "11r6advraz5rkrxr25mj0wpfgzxcvn5gzppsc7ma51zqfmijg7dk" }, "stable": { "version": [ @@ -68997,11 +72514,11 @@ "repo": "emacsorphanage/ov", "unstable": { "version": [ - 20150312, - 528 + 20200326, + 1042 ], - "commit": "fae7215b3dedba2a9ced145284332e4609bfdc38", - "sha256": "1rk5pzm5wmdq68d99hhhbq8pq37bnph0dip5j2jnfj6zsw70whr2" + "commit": "c5b9aa4e1b00d702eb2caedd61c69a22a5fa1fab", + "sha256": "1g3r4jsgvf713jazw0j5mcsbrw9shix9qrc683jm7dccwwrv5pcy" }, "stable": { "version": [ @@ -69078,14 +72595,14 @@ "repo": "anticomputer/ovpn-mode", "unstable": { "version": [ - 20190811, - 2200 + 20191214, + 310 ], "deps": [ "cl-lib" ], - "commit": "dce04d9f35fd203afd098ba413595db6c2cbc051", - "sha256": "0ix53rlwzi1mh35msh6gahfnip67p53jc3qxkbaxji7hlxi130fb" + "commit": "8457f72de59929d6c176883e92d1a706163d3170", + "sha256": "0qcinx4gpfzngirwfis7byrdbgbwk3pak7f8mx5fsbcdnybkk8sj" } }, { @@ -69096,30 +72613,30 @@ "repo": "aki2o/owdriver", "unstable": { "version": [ - 20170401, - 1312 + 20200326, + 1608 ], "deps": [ "log4e", "smartrep", "yaxception" ], - "commit": "d934f182bafe29aa16c173440eff3fef08b0ec10", - "sha256": "0yy5sah7vcjxcik3sp2cxp9gvcryyzw799h8zf4wbvjxv74kd17c" + "commit": "a243051365eb7ac0d1845c8b468b90510998f66e", + "sha256": "05a3s01y3sls6as28wvd1y5pmasqlz9k597yba10c0spxvlaijcn" }, "stable": { "version": [ 0, - 0, - 6 + 1, + 1 ], "deps": [ "log4e", "smartrep", "yaxception" ], - "commit": "0479389d9df9e70ff9ce69dff06252d3aa40fc86", - "sha256": "0f2psx4lq98l3q3fnibsfqxp2hvvwk7b30zjvjlry3bffg3l7pfk" + "commit": "a243051365eb7ac0d1845c8b468b90510998f66e", + "sha256": "05a3s01y3sls6as28wvd1y5pmasqlz9k597yba10c0spxvlaijcn" } }, { @@ -69163,15 +72680,15 @@ "repo": "jkitchin/ox-clip", "unstable": { "version": [ - 20180306, - 340 + 20191122, + 237 ], "deps": [ "htmlize", "org" ], - "commit": "594c90953a91948505bb394350adf110e041f19a", - "sha256": "1alm6hh7qg8sv50cm5p03icx47za2g7b2nvbwzx6kxkrgmgqfq6c" + "commit": "bd36f9fb4e3b1b9e8686b993b02ccd780ff75a96", + "sha256": "03wj3gx09lbfmsanfhqfbzz61zaszia1mhfvlywhygknpagxr3lp" } }, { @@ -69234,25 +72751,25 @@ "url": "https://git.sr.ht/~jakob/ox-haunt", "unstable": { "version": [ - 20190720, - 2352 + 20200202, + 229 ], "deps": [ "org" ], - "commit": "9d25ec4fc66fccbae23489abd4b9e8933c5b7dbd", - "sha256": "10kpz2qns0q92qh3hdwv1s8c9n4yb9iz9s7zas0h61rjqx22cz9n" + "commit": "f3c8fda6fee78f45a259e5d218a519dfd11c00c7", + "sha256": "1rs1n228c2fmpvirc57bqgf2616ijpphkgf4w9ln5j46snmkam25" }, "stable": { "version": [ 0, - 1 + 2 ], "deps": [ "org" ], - "commit": "9d25ec4fc66fccbae23489abd4b9e8933c5b7dbd", - "sha256": "10kpz2qns0q92qh3hdwv1s8c9n4yb9iz9s7zas0h61rjqx22cz9n" + "commit": "f3c8fda6fee78f45a259e5d218a519dfd11c00c7", + "sha256": "1rs1n228c2fmpvirc57bqgf2616ijpphkgf4w9ln5j46snmkam25" } }, { @@ -69281,14 +72798,14 @@ "repo": "kaushalmodi/ox-hugo", "unstable": { "version": [ - 20190905, - 303 + 20200305, + 1413 ], "deps": [ "org" ], - "commit": "b5672ea8925eaff93c4e17982b35acec302ba5e7", - "sha256": "1z9c85z55an38wrg6vmal8vp8k8qp1wkfxc9ijjlqsh0i2809x6b" + "commit": "1c1e3ec46785d93f4de2e71fc32604bd7c0fed40", + "sha256": "1cgwpj9x10z6y9ykbma39xakzisly5jhp5pkdiwrc5zq5psr2ddx" }, "stable": { "version": [ @@ -69377,14 +72894,14 @@ "repo": "stig/ox-jira.el", "unstable": { "version": [ - 20171001, - 916 + 20200218, + 2301 ], "deps": [ "org" ], - "commit": "db2ec528f46c9e611624ba28611c440a99bff255", - "sha256": "04zz6359xkn4w7jmmadxyvjd8pw21gw12mqwch1l9yxc4m9q474l" + "commit": "00767df8ba024eb1ef09fe16c3aed30d729d6add", + "sha256": "0fbic43vzp0dp8wbx12cq22ca192v2jl2w131xcqmbhbww6j5xv2" } }, { @@ -69395,15 +72912,15 @@ "repo": "jlumpe/ox-json", "unstable": { "version": [ - 20190819, - 1506 + 20191225, + 750 ], "deps": [ "org", "s" ], - "commit": "96b7d330b77b02f7039adabe488595847a008bda", - "sha256": "1whysxp4s84lhvgz8vnj2r51dfnk91v5plvbj61rac0077md6df5" + "commit": "8ce0fae6e8b596b93e05dd512be13973cb3cfa54", + "sha256": "1fwwvp4jvdx8namdy0nb68c2jj3nfw7adwp7vk2c2b5cp6fc6cl7" }, "stable": { "version": [ @@ -69427,11 +72944,14 @@ "repo": "linktohack/ox-latex-subfigure", "unstable": { "version": [ - 20190816, - 1905 + 20200326, + 919 ], - "commit": "5436eaf0cb036fed0a2042533ec1466a33cf9493", - "sha256": "1j9z7qr5nxbi96s22kkjp10jf29k7i61pwhs68j0lb4v238vdpsj" + "deps": [ + "org" + ], + "commit": "be0a0dde62fde8cdf8d72b6968344906aa8c6f54", + "sha256": "1afikv50ii4xk9pkg4m6dx246bjnwka37lccif8i5r48hfy5w4bq" }, "stable": { "version": [ @@ -69592,14 +73112,14 @@ "repo": "yjwen/org-reveal", "unstable": { "version": [ - 20190918, - 1627 + 20200327, + 1636 ], "deps": [ "org" ], - "commit": "5fd940e01ae76ba305d46a0c0cfc4d27aa131d33", - "sha256": "1m1fl07k1qhcv96cqgwqcwnak3gx9k5z496y43sc48gldkwq69qr" + "commit": "ea8b5021702d8f12aa5285fb2a8561ceaeb1332e", + "sha256": "1fppdz2r8zig6r1v1n82bxmxyn2f6i1rjv9qll4n866gahkknlkr" } }, { @@ -69646,15 +73166,15 @@ "repo": "titaniumbones/ox-slack", "unstable": { "version": [ - 20181119, - 1131 + 20200108, + 1546 ], "deps": [ "org", "ox-gfm" ], - "commit": "96d90914e6df1a0141657fc51f1dc5bb8f1da6bd", - "sha256": "1cda5c35wm7aqyj7yj80wkwb79dgzlzis1dlpysdxv30ahcf4w8p" + "commit": "89cedb9da6ea08b78bc1fe77d6a39aa078172c1e", + "sha256": "0a97la3hwkb792a26c6byavwzg8gca6s0ccajd7pi9p430ys1i9y" } }, { @@ -69665,14 +73185,14 @@ "repo": "balddotcat/ox-slimhtml", "unstable": { "version": [ - 20181219, - 850 + 20200302, + 728 ], "deps": [ "cl-lib" ], - "commit": "a5070cb2c67425aa33da8503c83361e8814a86ec", - "sha256": "13adpcgsd4153yd0097iady2dy6pa9w02rp97whkl4hjmhdik71i" + "commit": "6f774398d189430593c93e503bf0f3cd0e8bcc25", + "sha256": "12axvwqadv0qlvnzrvbi85p94c10r5w6f3gixck0cbz7p8qz678r" }, "stable": { "version": [ @@ -69786,20 +73306,20 @@ "repo": "marsmining/ox-twbs", "unstable": { "version": [ - 20161103, - 2016 + 20191216, + 1011 ], - "commit": "2414e6b1de7deb6dd2ae79a7be633fdccb9c2f28", - "sha256": "0kd45p8y7ykadmai4jn1x1pgpafyqggwb1ccbjzalxw4k9wmd45f" + "commit": "cf56accf8633f72c741fff19a49c24cc8bdd8974", + "sha256": "12w58nvpzn0fbica3m679n08hczzikqr1xi1n4k7a6h1l60qykl7" }, "stable": { "version": [ 1, 1, - 1 + 2 ], - "commit": "2414e6b1de7deb6dd2ae79a7be633fdccb9c2f28", - "sha256": "0kd45p8y7ykadmai4jn1x1pgpafyqggwb1ccbjzalxw4k9wmd45f" + "commit": "cf56accf8633f72c741fff19a49c24cc8bdd8974", + "sha256": "12w58nvpzn0fbica3m679n08hczzikqr1xi1n4k7a6h1l60qykl7" } }, { @@ -69829,26 +73349,26 @@ "repo": "w-vi/ox-wk.el", "unstable": { "version": [ - 20190526, - 1024 + 20191231, + 2058 ], "deps": [ "org" ], - "commit": "3da2213be1874d9d3e8a9337b09003d9c102b943", - "sha256": "0aw6ykcgyn6p7hhggyd7jfyx9b25pr0vgnlfvcwhjc3w0lm94yi1" + "commit": "d34d1b72e4e940745a377bfa745dfb618900a09e", + "sha256": "05813w4adafm596x1rikvc7xqk10xwfihdpdq1zr2zyqcpdabqza" }, "stable": { "version": [ 0, - 2, - 1 + 3, + 0 ], "deps": [ "org" ], - "commit": "3da2213be1874d9d3e8a9337b09003d9c102b943", - "sha256": "0aw6ykcgyn6p7hhggyd7jfyx9b25pr0vgnlfvcwhjc3w0lm94yi1" + "commit": "d34d1b72e4e940745a377bfa745dfb618900a09e", + "sha256": "05813w4adafm596x1rikvc7xqk10xwfihdpdq1zr2zyqcpdabqza" } }, { @@ -69959,8 +73479,8 @@ 20190702, 253 ], - "commit": "2a99b8e27be1702d94ce077ecd75e1089fa18a32", - "sha256": "0cf5rnk96wyl3xkqabnsw5ampcr645y43rlj9rcm0s09pqbpr0z8" + "commit": "3d108ff6af00d2fe978787217a13660af057cafc", + "sha256": "1ssrm6qafy0a49lpnqfs9va56m0mympavwr8rv5fyzrj97vqiabp" }, "stable": { "version": [ @@ -69980,25 +73500,25 @@ "repo": "melpa/package-build", "unstable": { "version": [ - 20191010, - 616 + 20200313, + 2359 ], "deps": [ "cl-lib" ], - "commit": "f761c2ffeed0daba9c17ac7571c7b979b6ceed64", - "sha256": "05snrl5slkwp8c1vzfndrp132xbjk61a63vbllm77nbm9acibq41" + "commit": "90e514432661f750f2a0c9fe17f09cdcc8e4e82b", + "sha256": "0p2vzsad8biczhj80y5bif5p0agcg8id4qngvi0lmxvx8i8wvky0" }, "stable": { "version": [ 2, - 3 + 4 ], "deps": [ "cl-lib" ], - "commit": "385cd427ce15ca1715f3dd758b6aa408bf0186b1", - "sha256": "1412pjghyvzkdlsrrs0ql30vw591bhyk1wlbf49f15dzjbspx3w0" + "commit": "bc06686806d676658b5e962497770e47025c17f1", + "sha256": "1lm5mgvjhpxqfw5gcv99h4mwbq728b6f2hj5vjh1j67kdwy7ws8k" } }, { @@ -70024,27 +73544,27 @@ "repo": "purcell/package-lint", "unstable": { "version": [ - 20191018, - 1144 + 20200313, + 2338 ], "deps": [ "cl-lib", "let-alist" ], - "commit": "483556c39c4b7929b28723509d0f26cf790b91c4", - "sha256": "19qx71vnr8jj2vqxgcr27zjnagg7nj4lr9xc9fgipwisg1x0yxhx" + "commit": "0e27abf2e65340dc1523b27b923650b863472a5a", + "sha256": "1vrnriijm4c8129ndcimcai2x1mfybp2arkb1x3jpb9ak83ck9px" }, "stable": { "version": [ 0, - 11 + 12 ], "deps": [ "cl-lib", "let-alist" ], - "commit": "197684c60df4902e632aac1fb0f99e2e967dcf12", - "sha256": "1sxl3zf733iyw6k5d6hh4isr6gp1qlvhbp2q8jpzcby8gmvy6l3r" + "commit": "f86705d0d4ed81ea8ea14e00fe59714f11f7c2ba", + "sha256": "00inrfla7f824yh10rxlr0xq1cmyqigppsrfspd637d58239l6sw" } }, { @@ -70055,25 +73575,25 @@ "repo": "purcell/package-lint", "unstable": { "version": [ - 20181117, - 856 + 20191116, + 45 ], "deps": [ "package-lint" ], - "commit": "483556c39c4b7929b28723509d0f26cf790b91c4", - "sha256": "19qx71vnr8jj2vqxgcr27zjnagg7nj4lr9xc9fgipwisg1x0yxhx" + "commit": "0e27abf2e65340dc1523b27b923650b863472a5a", + "sha256": "1vrnriijm4c8129ndcimcai2x1mfybp2arkb1x3jpb9ak83ck9px" }, "stable": { "version": [ 0, - 11 + 12 ], "deps": [ "package-lint" ], - "commit": "197684c60df4902e632aac1fb0f99e2e967dcf12", - "sha256": "1sxl3zf733iyw6k5d6hh4isr6gp1qlvhbp2q8jpzcby8gmvy6l3r" + "commit": "f86705d0d4ed81ea8ea14e00fe59714f11f7c2ba", + "sha256": "00inrfla7f824yh10rxlr0xq1cmyqigppsrfspd637d58239l6sw" } }, { @@ -70147,8 +73667,8 @@ 20180318, 1729 ], - "commit": "f350cc446c65b85bcc213265cd6dcadee1568762", - "sha256": "018vv0riqc571sanmfz82l1n322kfa4p4g9x2wf4m3h1819n53ky" + "commit": "c41c3dfda86ae33832ffc146923e2a4675cbacfa", + "sha256": "1272xmb3l8ddfijqzci3x0kxwibqb0sbkci4rbcv9ba9hpxp4d1v" }, "stable": { "version": [ @@ -70189,11 +73709,11 @@ "repo": "kadena-io/pact-mode", "unstable": { "version": [ - 20190903, - 1542 + 20191117, + 2337 ], - "commit": "f836c376e142b372a92900b630511fde9937a51a", - "sha256": "00xp8j9hgqscz865pp4s5khngpsidad6arwybcxh1cfsncc6w8f2" + "commit": "220bf985cb31d60f47042d5f424de8b9a589e544", + "sha256": "0cz87z2y54lqvsl2xhpjmndccj7051f2v9qpqrjr3qdwmfr6azsw" }, "stable": { "version": [ @@ -70228,11 +73748,11 @@ "repo": "purcell/page-break-lines", "unstable": { "version": [ - 20190519, - 2238 + 20200305, + 244 ], - "commit": "2e1d274e11071bb8daea4d6f4c0369c84466de7a", - "sha256": "1w6ckbb8rmi65knwnapyjy9amzcikgw088c6d9h5gqzdknbfdrqc" + "commit": "314b397910b3d16bb7cbcc25098696348e678080", + "sha256": "106w2n01i9d6z2r43lwwrm7hlppi9bkf8g8nsqd91f0f06921plw" }, "stable": { "version": [ @@ -70284,11 +73804,11 @@ "repo": "danielsz/Palimpsest", "unstable": { "version": [ - 20170119, - 2032 + 20200211, + 641 ], - "commit": "e6d5944393c260ceb724462c84046cc62c9ae916", - "sha256": "0vw3lv02rf8f9vm379zff4l85psjwxsrvba4xcpdkqi1w4rbsnxr" + "commit": "389ec5b4c5067fa903c543b7fe1d804f30b6ced5", + "sha256": "1yki1sl2m7fj4m52gmb768h2qkv0j93lmd72jv21n20bnzvjp73v" } }, { @@ -70335,16 +73855,16 @@ "repo": "abo-abo/pamparam", "unstable": { "version": [ - 20190827, - 1127 + 20200309, + 1703 ], "deps": [ "hydra", "lispy", "worf" ], - "commit": "3690a3691da7792ed2f2270d1006632640182ae0", - "sha256": "1kn0ckfpr3s5yfkll7rn9mqg35jmplai2vafhrvnifhilf94dp7f" + "commit": "ed730f17074cb12a8fb9a0daa852d1abbfb34372", + "sha256": "0shzsgs5ds4lzw1fv13vdphbhxyqad5s7jwk5zqa5wg42sidxq3r" } }, { @@ -70355,11 +73875,11 @@ "repo": "sebasmonia/panda", "unstable": { "version": [ - 20190907, - 314 + 20200317, + 1932 ], - "commit": "5a3da498a8ab8a60cef3a3a5e8f3e14dea9992dd", - "sha256": "04fa2895vr0z6y1w1mkpxhzx2q323vl7r3hayxr0vldd8mz8m0lw" + "commit": "2a17e3e5c57132777cfef9704565f6bfa129dbe2", + "sha256": "02aysxdb660dh19l07g6h2qvckrrd4aj79lryd6h7j3in1s0sn05" } }, { @@ -70417,15 +73937,15 @@ "repo": "joostkremers/pandoc-mode", "unstable": { "version": [ - 20191003, - 1221 + 20200303, + 2322 ], "deps": [ "dash", "hydra" ], - "commit": "f4f10a329acd354aa7dda52e7f7bc23ca28366d3", - "sha256": "1j4bawr7a4lfhy76nxsivxngs4w7l1xlifzx69hjn157qdhbqawn" + "commit": "befd7be704d6dbe3dba69da761fc62e0609c9366", + "sha256": "0c621viqjss1ynzgcb81afck9rl1lwadzq68vas4gb2zjb5dd06h" }, "stable": { "version": [ @@ -70475,8 +73995,8 @@ 20190124, 1828 ], - "commit": "5f3e67448cc98fe2875115163849acae4d9e8526", - "sha256": "1w0dhyr4i0nx0g70smgclcfsbv6cfilb7df330njzaqk8j2gdfws" + "commit": "eab07dae119129066624e692c1c75a53b2ab10a5", + "sha256": "1q9g8kza6hv6pv1sjzkl6b4gxcx6fsvv8lk5w7kk9gpws5vjz5bz" } }, { @@ -70543,20 +74063,23 @@ "repo": "ajgrf/parchment", "unstable": { "version": [ - 20190703, - 1531 + 20200322, + 1714 ], - "commit": "30eedd346175072e013b7bcf6ae1795f022fee0b", - "sha256": "01yiz4zkbmb95whgpg6n0mmjsi2fvnakvpg1cnx68k1nmd8waiv2" + "deps": [ + "autothemer" + ], + "commit": "bf158a064e4a00a47d24ed0c1725204ce6675064", + "sha256": "1vqvfxrwrlmnmp0bidagphajwlxs6kf480xajkpz590m0zf1xfp3" }, "stable": { "version": [ 0, - 2, - 2 + 3, + 0 ], - "commit": "7d48ae9b39c37eeef7ab5bf7ee049d2edf0411a6", - "sha256": "071k34i48dsmlgpi8mpdff1fgcnz29dj2ci52c1i3alp9yc7s67a" + "commit": "b4dabed7939f8cf052c858ba29e295eee3f0ca13", + "sha256": "0361621f0xg786dvcw6xrfm9qkjr19cs8dkxgj8b5nq9isxyknh5" } }, { @@ -70567,11 +74090,11 @@ "url": "https://mumble.net/~campbell/git/paredit.git", "unstable": { "version": [ - 20171127, - 205 + 20191121, + 2328 ], - "commit": "acbe10fdd85d2e91831adf70b6a828bc7e900da0", - "sha256": "1c7ag0cvd6rl5fsj3dpfcjpyb8xjd26d864z98a74cirn8pc8f7l" + "commit": "814999bb320e6d5aaa9c8ff663b1933157129571", + "sha256": "0jb3qwx8bxr7x17cgqbd6v53634i9lmrcnqn847bnnlsvy0j094x" }, "stable": { "version": [ @@ -70651,20 +74174,20 @@ "repo": "tarsius/paren-face", "unstable": { "version": [ - 20180318, - 2025 + 20200103, + 1238 ], - "commit": "6d9358295911f1b44efe81054c535eb2c2bb5a2e", - "sha256": "0lr6z90kbgi85bchk247cr91q5ryk73sqp5cvsiph4ryxpy9isyl" + "commit": "eb4a51b8ef455e0914108105e7c0008d675457cc", + "sha256": "17bdcxah216z928387yx6z9lmp4jsi461n8fwiqaibn2qy5fagas" }, "stable": { "version": [ 1, 0, - 4 + 6 ], - "commit": "a45d111153a76c481fa0b36d6172ac90e073dfc4", - "sha256": "1cr0vnm57lxs48z17ddcv7qlfvks7wdsp01zsw0c7i3h5ajl8myp" + "commit": "eb4a51b8ef455e0914108105e7c0008d675457cc", + "sha256": "17bdcxah216z928387yx6z9lmp4jsi461n8fwiqaibn2qy5fagas" } }, { @@ -70733,8 +74256,8 @@ 20191015, 2127 ], - "commit": "13757524f1c708b866f4aaab5a9fb3599a1c4f56", - "sha256": "02anyi6mhw457pwsna3ycn1yxsavsmp6p96ffpwg1s7qidc44a4s" + "commit": "29265d118267e524453aaa9121c4eae213a63164", + "sha256": "04mpwsn16i00rbjyd3959kjyw1qn9xw9d9as6syhsfq5mzhwksni" }, "stable": { "version": [ @@ -70761,6 +74284,38 @@ "sha256": "06xg6f74697zmn042wg259qlik2l21k4al08a06xz4gv9a83nsx6" } }, + { + "ename": "parse-it", + "commit": "3f163ca64c2533603410f320c7e9b9b1c2635458", + "sha256": "076b981jdhgv7kqdj6xnckp3x25wfymy0il9fffrpyfs7hrcdzgf", + "fetcher": "github", + "repo": "jcs-elpa/parse-it", + "unstable": { + "version": [ + 20191209, + 549 + ], + "deps": [ + "cl-lib", + "s" + ], + "commit": "ff9f9049ac039473f0ba5d070ac0e6d89cfbf851", + "sha256": "05ckrhkxffzcz1igqwznbkxc1hpidvsnwv6cxp8n4q6kmniagx4i" + }, + "stable": { + "version": [ + 0, + 1, + 7 + ], + "deps": [ + "cl-lib", + "s" + ], + "commit": "318cb29153c6ae0032ddceb69bb8c1f2a7df5ef6", + "sha256": "0f2fjb0a0yj62dy3j820fgxlpg2gsv1awaswwrb2rv7mp44drr4f" + } + }, { "ename": "parsebib", "commit": "c39633957475dcd6a033760ba20a957716cce59c", @@ -70769,11 +74324,11 @@ "repo": "joostkremers/parsebib", "unstable": { "version": [ - 20181219, - 928 + 20200303, + 2324 ], - "commit": "9a5f1730b8ef1fb6c29262a8ba79f8136e5548d4", - "sha256": "1d9x57njgl16yyjmscmai5ml9wrqfh35ilcz2s674s8fa4krqw72" + "commit": "6537b4d2a8cf34455b769b95dfd65de6a4a0e1d3", + "sha256": "1gy5rqnfnyhfa44vxy7qqqh7xada1d1gg34msczcalhhy6lm59if" }, "stable": { "version": [ @@ -70853,15 +74408,15 @@ "repo": "clojure-emacs/parseedn", "unstable": { "version": [ - 20190331, - 1058 + 20191113, + 831 ], "deps": [ "a", "parseclj" ], - "commit": "ddf824bc1df1585867cb7f27f2dd8ca8df760569", - "sha256": "11wi3hwcgmy54p6ivpijqm7v0hj6j75a19qk5z779bqfrp79b4pc" + "commit": "f42ff988338484815ccd925c8f83a32c5d52319b", + "sha256": "0cx1zf82mjwlnj6znas8b94ws1f3n2h0imyybi9qirvsp90qd4sl" }, "stable": { "version": [ @@ -70955,35 +74510,6 @@ "sha256": "1jg2rs010fmw10ld0bfl6x7af3v9yqfy9ga5ixmam3qpilc8c4fw" } }, - { - "ename": "passthword", - "commit": "a52b516b7b10bdada2f64499c8f43f85a236f254", - "sha256": "19zv80kidb6a3985n3zij507hvffcxhcvlfxd01gwx64wvfc0c3c", - "fetcher": "gitlab", - "repo": "pidu/passthword", - "unstable": { - "version": [ - 20141201, - 923 - ], - "deps": [ - "cl-lib" - ], - "commit": "30bace842eaaa6b48cb2251fb84868ebca0467d6", - "sha256": "0yckh61v9a798gpyk8x2z9990h3b61lwsw0kish571pygfyqhjkq" - }, - "stable": { - "version": [ - 1, - 4 - ], - "deps": [ - "cl-lib" - ], - "commit": "58a91defdbeec9014b4e46f909a7411b3a627285", - "sha256": "1g0mvg9i8f2qccb4b0m4d74zkjx9gjfv47x57by6cdaf9yywqryi" - } - }, { "ename": "password-generator", "commit": "855ea20024b606314f8590129259747cac0bcc97", @@ -71022,17 +74548,16 @@ "repo": "zx2c4/password-store", "unstable": { "version": [ - 20190929, - 1627 + 20200328, + 1214 ], "deps": [ "auth-source-pass", - "f", "s", "with-editor" ], - "commit": "b830119762416fa8706e479e9b01f2453d6f6ad6", - "sha256": "0mf59506qa2zrrk18gr5sp9gz8lx03f6c6qccir5cf6s4rmi5x9m" + "commit": "98193d3bbb3538eda457d0db4ccccbcc4b04ce3d", + "sha256": "133b2m49jd2bw0k5f77y8gc2w53vhp3rym5mzqx7mlfgssgd795k" }, "stable": { "version": [ @@ -71346,8 +74871,8 @@ "deps": [ "eieio" ], - "commit": "1f8086077d770e524492e6fa59b07856e85a6fea", - "sha256": "09z5295f8051ag13ndq8rhxgg2m0gim45yfpjv4xkbmdcfkfinc2" + "commit": "1f31433ad0b37a2e68d60ee043a8188ef1ce3176", + "sha256": "1bk6rg9qaaasbng6m6mdkjbwdm68zkr7mfwj18l34ivlz0f05sxw" }, "stable": { "version": [ @@ -71409,10 +74934,10 @@ }, { "ename": "pcmpl-homebrew", - "commit": "6440f81aed1fcddcaf7afeedb74520e605211986", - "sha256": "1mfkg9i2hqq8mkhnc8yzc9br9wlhjv17vdvjzwhkybcbmhqf2qkm", + "commit": "cdd1f8002636bf02c7a3d3d0a075758972eaf228", + "sha256": "100a64d8qvxdz1lk42pidj48iqsycyyw92jjqcrn8rnqw1rnb3s7", "fetcher": "github", - "repo": "kaihaosw/pcmpl-homebrew", + "repo": "zwild/pcmpl-homebrew", "unstable": { "version": [ 20190213, @@ -71424,10 +74949,10 @@ }, { "ename": "pcmpl-pip", - "commit": "6440f81aed1fcddcaf7afeedb74520e605211986", - "sha256": "17nmgq4wgv4yl2rsdf32585hfa58j0825mzzajrlwgmjiqx9i778", + "commit": "cdd1f8002636bf02c7a3d3d0a075758972eaf228", + "sha256": "1vl21i3aqdk2qr2r64sqg8jbslj3vxblwmbpzv732sl9gafsl990", "fetcher": "github", - "repo": "kaihaosw/pcmpl-pip", + "repo": "zwild/pcmpl-pip", "unstable": { "version": [ 20181229, @@ -71547,15 +75072,15 @@ "repo": "politza/pdf-tools", "unstable": { "version": [ - 20191007, - 1436 + 20200214, + 536 ], "deps": [ "let-alist", "tablist" ], - "commit": "3407af25899c9bc0cb7b710e86ba316ab622f2c7", - "sha256": "1dhygjq95y57a5f3a2hw1i36mgn0njgllba8i9f8bc0kpb8ykbb0" + "commit": "0159cb1ab36f75879151e5ea24a6918ef58e50a3", + "sha256": "1ai8g6n3d40mcr2zx4h8ih3b1fxx6xzwbr0h3m8yh32vjj5qlwrp" }, "stable": { "version": [ @@ -71596,11 +75121,11 @@ "repo": "jeremy-compostella/pdfgrep", "unstable": { "version": [ - 20181007, - 1728 + 20200306, + 209 ], - "commit": "e251cd5c88a4ba5cb69008ba412d329f4d59e1d2", - "sha256": "0fy6h8ys490kw63l9jigsa0cf1psybyd9gcljpddnjd3nhkdwikw" + "commit": "1576fc98754d3bdaa40573a037a80f1973110756", + "sha256": "1c3p3vdhy6wibxwpc76bvvm0583zmjmxs9pa453z3msbq33kc7j8" } }, { @@ -71704,32 +75229,32 @@ "repo": "sebasmonia/pepita", "unstable": { "version": [ - 20190907, - 409 + 20200228, + 2257 ], "deps": [ "csv" ], - "commit": "489ddc2675906f9dd27bd4ec69ef140e52194952", - "sha256": "1k77c7zz73j2vais62qbymk246fyc6nw4jd1abdx2c9jjp3sn94k" + "commit": "263d6d940d7e4203bbecda46dbaa89b7af1db54f", + "sha256": "1jw27asnfd48mx3mi9qiihvj2hgzpmk53xdq87ajq9nsx8m6x110" } }, { "ename": "per-buffer-theme", - "commit": "5b7972602399f9df9139cff177e38653bb0f43ed", - "sha256": "1czcaybpfmx4mwff7hs07iayyvgvlhifkickccap6kpd0cp4n6hn", - "fetcher": "bitbucket", - "repo": "inigoserna/per-buffer-theme.el", + "commit": "2a2a6c0bf1cad99ed82db7b90b8b7ab79827ac17", + "sha256": "06vykjgf4rxh832z74jxkhi4jxlh60hnh8zjvdyr9nbh1dy35bjn", + "fetcher": "hg", + "url": "https://hg.serna.eu/emacs/per-buffer-theme", "unstable": { "version": [ - 20190703, - 2014 + 20191101, + 2333 ], "deps": [ "cl-lib" ], - "commit": "b4133c09b6ea8bd97ac513442448ea1ec5254587", - "sha256": "0qwdsiflsg8xjlypcna0rv7sjcjjlyp39f4qlqbjyk52kw01qxiv" + "commit": "7df4d2f4be64dbcf0bf10a2b9ac3db858fbcd9c8", + "sha256": "04s14x3qi5aa18bfcr3zjbb109nm2pgwgnl36g7fw2crj8mz03v4" } }, { @@ -71862,28 +75387,28 @@ "repo": "rocher/persp-fr", "unstable": { "version": [ - 20180801, - 727 + 20191108, + 754 ], "deps": [ "dash", "persp-mode" ], - "commit": "3f536440b120499464106fd25f182d7580192870", - "sha256": "0bnplxv6igry7ak3wvn2b88zm4aarv35z4z5q38x52k4zac94rl8" + "commit": "1adbb6a9f9a4db580a9b7ed8b4091738e01345e6", + "sha256": "0f9ljpmq8b97n6wa8bwn4f2v7imvfxc2pjqk6xjkmwbfpihrns10" }, "stable": { "version": [ 0, 0, - 4 + 5 ], "deps": [ "dash", "persp-mode" ], - "commit": "3f536440b120499464106fd25f182d7580192870", - "sha256": "0bnplxv6igry7ak3wvn2b88zm4aarv35z4z5q38x52k4zac94rl8" + "commit": "1adbb6a9f9a4db580a9b7ed8b4091738e01345e6", + "sha256": "0f9ljpmq8b97n6wa8bwn4f2v7imvfxc2pjqk6xjkmwbfpihrns10" } }, { @@ -71894,20 +75419,20 @@ "repo": "Bad-ptr/persp-mode.el", "unstable": { "version": [ - 20190511, - 1402 + 20200222, + 1106 ], - "commit": "e330e6240bbb82589077f30472b05b95d1ff430d", - "sha256": "0gy0h9mrgig0d2gjs2z949ld1ccgfhmp0dfd8g33g2kxgzp7wnv2" + "commit": "391a7dc248c9c04b7ad424c696bdff578e14dd2c", + "sha256": "0b4y7a6j70s9lvr37riyy9k5kh3yvmx0m6nd9c0c8572ji4ij65g" }, "stable": { "version": [ 2, 9, - 6 + 8 ], - "commit": "1dfea0de788f6d25ee47b5c62ddbeaf9e8e92f06", - "sha256": "11ww8hg9p8qlmr8zpir0m5xzzbvd1faiqjx6vn4b05d4ll03rnhm" + "commit": "391a7dc248c9c04b7ad424c696bdff578e14dd2c", + "sha256": "0b4y7a6j70s9lvr37riyy9k5kh3yvmx0m6nd9c0c8572ji4ij65g" } }, { @@ -71972,25 +75497,25 @@ "repo": "nex3/perspective-el", "unstable": { "version": [ - 20191025, - 314 + 20200326, + 2358 ], "deps": [ "cl-lib" ], - "commit": "9e119c99853ddc4e1267bbec4d7f7a1610502f34", - "sha256": "0aa51kv632iynjb36qja1i8b012hayiabwg7vbzqfbwsyy4gd27m" + "commit": "2ac6aff0569923993a251beddb3046ec44841408", + "sha256": "1z05vk85zbq4pj1xs69p5x3hwdshl829y28d5j2ckivl313p4had" }, "stable": { "version": [ 2, - 2 + 6 ], "deps": [ "cl-lib" ], - "commit": "8e2f122de408d7866136dd861d513a9575cf32e6", - "sha256": "0pd5sqrrz6y3md20yh6ffy32jdcgb1gc9b4j14pm6r54bqxik68h" + "commit": "2ac6aff0569923993a251beddb3046ec44841408", + "sha256": "1z05vk85zbq4pj1xs69p5x3hwdshl829y28d5j2ckivl313p4had" } }, { @@ -72019,6 +75544,21 @@ "sha256": "0mi7ipx0zg0vrm9da24i4j0300xj0dm3jjg35f466pm3a7xafrsg" } }, + { + "ename": "pest-mode", + "commit": "d3145c38d53aa94c6ae33f2bc0cb804e246a8558", + "sha256": "0d89s1lqif6mdbm1fh6h1m4414sxa382rjyw3qqsm5iz2b5vf14p", + "fetcher": "github", + "repo": "ksqsf/pest-mode", + "unstable": { + "version": [ + 20200321, + 504 + ], + "commit": "4ae88a9c81d499bbe99978ff0216b645fed70023", + "sha256": "1zc7dmgp3s9q33wkvw6i7zzlcaa65ixx3hxb78m62lk2a7fzb3ih" + } + }, { "ename": "pfuture", "commit": "5fb70c9f56a58b5c7a2e8b69b191aa2fc7c9bcc8", @@ -72027,19 +75567,19 @@ "repo": "Alexander-Miller/pfuture", "unstable": { "version": [ - 20190505, - 1006 + 20200113, + 620 ], - "commit": "368254ee30692c709400db413c347e18e76a8a55", - "sha256": "096raqpjx84njws85r7pqq1wi9w9bjwkr0ga1mbbhlna1mfn3mg4" + "commit": "fbecd1562b34fcd15563b7cc00d98e5af0d7e43d", + "sha256": "1imqavzc0isba3yh128jzsy27x2983sjiqkf6q2xw43mbjknl8dy" }, "stable": { "version": [ 1, - 7 + 8 ], - "commit": "263227534e8bb98aedce18698c34db9fd4d6500b", - "sha256": "13r1f741rk5k35s413iyh1kng20zmp29qr4bzlxg8wjl7d8q6da2" + "commit": "fbecd1562b34fcd15563b7cc00d98e5af0d7e43d", + "sha256": "1imqavzc0isba3yh128jzsy27x2983sjiqkf6q2xw43mbjknl8dy" } }, { @@ -72125,15 +75665,15 @@ "repo": "emacs-php/phan.el", "unstable": { "version": [ - 20190521, - 203 + 20191125, + 1408 ], "deps": [ "composer", "f" ], - "commit": "82c2d962cd5cab647e8f2f5636bc83511ea40cb4", - "sha256": "1bypr6d85xr623bqq9j4hl2q4jiw8hyjhx1mp7q4jcm7pibkbjci" + "commit": "2a6e1b66c2aad25fddb8b4f706a28a1aafaaa4c7", + "sha256": "1ivkkmjg9drp22l5hvira5m0ialca8kzw6pzj01wm4ykqsaajnlf" }, "stable": { "version": [ @@ -72157,14 +75697,14 @@ "repo": "zk-phi/phi-autopair", "unstable": { "version": [ - 20170217, - 353 + 20191220, + 311 ], "deps": [ "paredit" ], - "commit": "3c7556779c3a53b045f5df33ae2a0c67469cbf60", - "sha256": "16gh2r1mhmirbq20kklym4l60rfcfn8dsj0vv3hx3fj8q81h8qc9" + "commit": "5685b9541c4c9d4cc8a892743fdf245aceea1682", + "sha256": "16kib35s7pffcs8kiljydbf5z1qq5l2d04dqqcnbbi0539y979n5" } }, { @@ -72208,11 +75748,11 @@ "repo": "zk-phi/phi-search", "unstable": { "version": [ - 20180322, - 129 + 20191106, + 233 ], - "commit": "9a089b8271cb1cff9640848850298c9ec855286c", - "sha256": "1gr5plcbrfdc4pglfj905s89hf8x0kc083h30wcnd81bnw9jwz1x" + "commit": "2a8fe73aa9ef014e27e202964c5a4f4e94ef24b2", + "sha256": "15yc5nlfx2z48n8p7pb6qzgbzfpnapb83w5xx6z8lq0mywf3k5jj" }, "stable": { "version": [ @@ -72395,27 +75935,25 @@ "repo": "OVYA/php-cs-fixer", "unstable": { "version": [ - 20190207, - 1126 + 20200312, + 1309 ], "deps": [ "cl-lib" ], - "commit": "6540006710daf2b2d47576968ea826a83a40a6bf", - "sha256": "089x26akvkfm772v8n3x3l5wpkhvlgad2byrcbh0a1vyhnjb2fvd" + "commit": "95eace9bc0ace128d5166e303c76df2b778c4ddb", + "sha256": "1pl6zw1m8n3ir48h58gaq2f474w9j20a6gk4r0cq5vgvzxx25f0h" }, "stable": { "version": [ 1, - 0, - -2, - 4 + 0 ], "deps": [ "cl-lib" ], - "commit": "ca2c075a22ad156c336d2aa093fb6394c9f6c112", - "sha256": "1axjfsfasg7xyq5ax2bx7rh2mgf8caw5bh858hhp1gk9xvi21qhx" + "commit": "95eace9bc0ace128d5166e303c76df2b778c4ddb", + "sha256": "1pl6zw1m8n3ir48h58gaq2f474w9j20a6gk4r0cq5vgvzxx25f0h" } }, { @@ -72441,20 +75979,20 @@ "repo": "emacs-php/php-mode", "unstable": { "version": [ - 20190930, - 111 + 20200323, + 1215 ], - "commit": "5ba2a16e1751446502652021942f59f2e36aea41", - "sha256": "1zgqg6i114g8nylyizrcdf68f35klc140x829cbjrkbssj8vck8z" + "commit": "b5d99881002e3c62ebe874ad9f48474afc16c62d", + "sha256": "0pq7nccmrbvrf7120d48aqymdwh5jgjvzwi2820hdw8j6b7prm4h" }, "stable": { "version": [ 1, 22, - 0 + 2 ], - "commit": "58de9a7db0b8908e047dfe308858ef5dfd464868", - "sha256": "17137l24s0nkr77l1dlmnkjpikks30mf5haskbg5i447lbpcm64r" + "commit": "433864b0755d99ec6b496ed45476c1e2eca0228c", + "sha256": "1r4bpyavlndd4c78cv5cc97bc0gkd4cggiyz4kd2vg6zlyc1nld3" } }, { @@ -72533,8 +76071,8 @@ "repo": "emacs-php/phpactor.el", "unstable": { "version": [ - 20190913, - 1340 + 20200324, + 1347 ], "deps": [ "async", @@ -72543,8 +76081,8 @@ "f", "php-runtime" ], - "commit": "a12ec67ce9de9e96c89548052ae323a277cba846", - "sha256": "031i5s3cv9z2d6vnwbf91291fgafcqg61km9b3z7p9bk91vbkxsy" + "commit": "31fe2ea4dbd5c2f23efd6a4ec2ec881a4ced6b05", + "sha256": "0j52n0vs85q7zz5xfqw4rgrjjpr7mzfiqbzk7vwkcdmpnax608w5" }, "stable": { "version": [ @@ -72598,20 +76136,20 @@ "repo": "emacs-php/phpstan.el", "unstable": { "version": [ - 20190929, - 612 + 20200122, + 1256 ], - "commit": "81bcfa59d1e5708239d8c32d99cd84405449fb64", - "sha256": "1m4vk7v3aafj64qqs0aa9m1w8fbjziq0l6c9k4n10yr8dnm5j9aw" + "commit": "a1c30ca634107551c20c846b5316ca5697adb06d", + "sha256": "0b7rnzk1zkrzh978bmh2dsy78f0sb4ia1w06khyqiby52m27q9k1" }, "stable": { "version": [ 0, 3, - 2 + 3 ], - "commit": "de74ebfcbce53a08daf95d324d7447dede094222", - "sha256": "01x5gf7z0iqx601z3g4cdq6cv27aflxw5kmqrwrj0aijcb7nb9c6" + "commit": "535e172e1c561bc7b8c706b4e03bbf71689bd83a", + "sha256": "1hn1rdgymv81rm8nkibnc5jazgjrx3sz4w1lin85rgypzbfaf6wk" } }, { @@ -72727,21 +76265,6 @@ "sha256": "1r12r21882bq22w6cawf28ndf70nz2nd0f2wagdfr5a9ir9wchfy" } }, - { - "ename": "picolisp-mode", - "commit": "33b151c3aba268977b105965c816716d8b35ad6d", - "sha256": "1g45gmg3wd52yi3838bjlz3ccf71fznm6l3nkp7a7929q3rj9d90", - "fetcher": "github", - "repo": "flexibeast/plisp-mode", - "unstable": { - "version": [ - 20190824, - 806 - ], - "commit": "1ae7af6c310d20b31b8229dc8c1eedeb47aa3311", - "sha256": "0ziil73lfcvr3sih00n19jnmciddirwsjqci1im80qg7z268l6s3" - } - }, { "ename": "picpocket", "commit": "e88dc89311d4bfe82dc15f22b84c4b76abb3fd69", @@ -72828,25 +76351,25 @@ "repo": "davep/pinboard.el", "unstable": { "version": [ - 20190623, - 1421 + 20191203, + 1015 ], "deps": [ "cl-lib" ], - "commit": "910d0fae61badd7e25e148d2ea84f0188b802fb1", - "sha256": "0v6gg472b6srsvn1p26dam7iqkjsqdnd7idl68fck1mchy3k39iw" + "commit": "9351a2320f1e75896f56032959c7bcbf9d9aa560", + "sha256": "080fzpr7is05cb8fj0rzhfc8pmb1rwfmkqnydj36d56da1ndrfmw" }, "stable": { "version": [ 1, - 1 + 2 ], "deps": [ "cl-lib" ], - "commit": "910d0fae61badd7e25e148d2ea84f0188b802fb1", - "sha256": "0v6gg472b6srsvn1p26dam7iqkjsqdnd7idl68fck1mchy3k39iw" + "commit": "e14dd43cf74f254a898ae1c698a97d58734fc1a8", + "sha256": "0ljxvp9yppnmy1lnnipqqbk09bmay523haa8h0gnfnrl02jwgs91" } }, { @@ -73070,21 +76593,6 @@ "sha256": "1amqjm6kn1xda058kdwq3xgk7raz6y9iw0mzrac78sgf57qaczyb" } }, - { - "ename": "pivotal-tracker", - "commit": "855ea20024b606314f8590129259747cac0bcc97", - "sha256": "0yiyz11sd25ybgr2qmg62qqmcz96va1pq3q866cqmpl38xn7znpj", - "fetcher": "github", - "repo": "jxa/pivotal-tracker", - "unstable": { - "version": [ - 20170720, - 1516 - ], - "commit": "0311d117037c74512149a4a78b269c2e46d7dfba", - "sha256": "0g3xzh8jr9lbg6h2hk81cdyxkxx3l79qhxrp4g34rc0dml79rzf9" - } - }, { "ename": "pixie-mode", "commit": "a57300bfdae57c9996db0411d56a5fc7b35778c3", @@ -73258,14 +76766,14 @@ "repo": "skuro/plantuml-mode", "unstable": { "version": [ - 20191019, - 1309 + 20191102, + 2056 ], "deps": [ "dash" ], - "commit": "fec1d4fb9d3b720f15931308b207cd8ad65f4f75", - "sha256": "19lg1lcjysqy0ziyp0y3xx2akgchhvqkxmxxnxjlwqrn9bqgibxh" + "commit": "ea45a13707abd2a70df183f1aec6447197fc9ccc", + "sha256": "0rbmn2964w9kms6ql25dzpnyygj693123xs7gxasylgw5jall9wx" }, "stable": { "version": [ @@ -73410,6 +76918,25 @@ "sha256": "0g6d7z9sv7fdc918gay7rd71frzqn75mcwnljgmqksfh5890apa6" } }, + { + "ename": "playonline", + "commit": "27d8ea9dac3637eed39a68308194b30c1672a8ca", + "sha256": "10shq955cz664r0j0yjfrnnbvzjpcyq638lm6hwkiia5xbvsdz88", + "fetcher": "github", + "repo": "twlz0ne/playonline.el", + "unstable": { + "version": [ + 20200317, + 642 + ], + "deps": [ + "dash", + "request" + ], + "commit": "c75da1fdc1dfbd5d9aa274dc4e90ff631ea08e70", + "sha256": "0vkgzqdcxp4mlkz9z8p4307lbvjz51wpqhzpmyw4gwl079xc6gkq" + } + }, { "ename": "plenv", "commit": "a0819979b9567ac5fab9ed6821eba8fe7ee6a299", @@ -73459,8 +76986,8 @@ 20190914, 513 ], - "commit": "1ae7af6c310d20b31b8229dc8c1eedeb47aa3311", - "sha256": "0ziil73lfcvr3sih00n19jnmciddirwsjqci1im80qg7z268l6s3" + "commit": "02738af25707e39d8a608b09a24173bb05f5be9f", + "sha256": "133wm5fd91z9k3zpflb455nglpgy1dqyz3mz2s694xyppw4rvkia" } }, { @@ -73558,17 +77085,17 @@ }, { "ename": "pmdm", - "commit": "5b7972602399f9df9139cff177e38653bb0f43ed", - "sha256": "1zmy6cbnqhsbwc5vx30mx45xn88d2186hgrl75ws7vvbl197j03b", - "fetcher": "bitbucket", - "repo": "inigoserna/pmdm.el", + "commit": "279923aac9f668cd295709d5060e7a984be0c5a8", + "sha256": "1a6mvb3dcxkzk9acchi0xbgd3ki092l4c18qls6pgahwsj7wsk9v", + "fetcher": "hg", + "url": "https://hg.serna.eu/emacs/pmdm", "unstable": { "version": [ - 20151109, - 1836 + 20191101, + 2346 ], - "commit": "f50a547741568cee40bdc80fa3223157a49896e4", - "sha256": "0x3s9fj41n6a21la762qm1si9ysv3zj5bbp6ykfskr73sxq6s9ff" + "commit": "1f30adce8a23da94b3c2460b7248d5910592d8af", + "sha256": "0nwrzf7lvimay83k1s4nxz86d1a82v55j23vp2915c307gkwrl8z" } }, { @@ -73768,11 +77295,11 @@ "repo": "kunalb/poet", "unstable": { "version": [ - 20190127, - 2220 + 20191215, + 201 ], - "commit": "d84f7b259cc9b6ff8d442cf4c38bd6c7065ff8f4", - "sha256": "0a84jdaj619mb59a46dmkk2sfs42rylqk9ryl1drgs8d3lia79mz" + "commit": "ad998dce8a953eb6101e61bd6bb5ff871535d383", + "sha256": "030qm41sf4z29f0gghrk6a4lpf775lgg9vvlmcnl678vgy7p9fa5" } }, { @@ -73783,15 +77310,15 @@ "repo": "galaunay/poetry.el", "unstable": { "version": [ - 20191022, - 938 + 20200326, + 1328 ], "deps": [ "pyvenv", "transient" ], - "commit": "3f9ac720b423f087797b9e345b575275f2dcd740", - "sha256": "0gs8jpihqckijbm5w300mdm5jl4f9j754fkv5mj1ghj78q6bjmmp" + "commit": "6dcc9d22cac6642a861770b5518398d8ee4fcc9a", + "sha256": "1za8s1k5ni11yqz64rz777lps400jnga151cca2f3l3xx2lcc2c7" }, "stable": { "version": [ @@ -73869,14 +77396,14 @@ "repo": "lijunsong/pollen-mode", "unstable": { "version": [ - 20190310, - 538 + 20191223, + 1920 ], "deps": [ "cl-lib" ], - "commit": "819edf830e9519f8ca57e9cef31211e3f444d11a", - "sha256": "0c06kfbyk2g0kxwlh6g3r7ij06ip6x9ni0bin24drwr0qj2vis2d" + "commit": "d0a33591498013886c2c4676e204cd684954e82a", + "sha256": "0lg65hzdjwbc3dav79f3jm7251yyq8ghcbccvkb32vwz281xhjnh" } }, { @@ -73887,20 +77414,21 @@ "repo": "polymode/poly-R", "unstable": { "version": [ - 20190605, - 2103 + 20200316, + 1315 ], "deps": [ "poly-markdown", "poly-noweb", "polymode" ], - "commit": "0443c89b4d2bc2ed235a0c017109c2dbd342aa02", - "sha256": "1v5djxwgqksf84pxfpgbm7qaz3yq5ha7cac0792p62pj1ydzvghi" + "commit": "51ffeb6ec45dd44eafa4d22ad2d6150cc4b248fc", + "sha256": "0a4wx73jkngw5nbq1fa4jfhba6bsmyn6vnsf887x3xhb5v3ykhsg" }, "stable": { "version": [ 0, + 2, 2 ], "deps": [ @@ -73908,8 +77436,8 @@ "poly-noweb", "polymode" ], - "commit": "0443c89b4d2bc2ed235a0c017109c2dbd342aa02", - "sha256": "1v5djxwgqksf84pxfpgbm7qaz3yq5ha7cac0792p62pj1ydzvghi" + "commit": "51ffeb6ec45dd44eafa4d22ad2d6150cc4b248fc", + "sha256": "0a4wx73jkngw5nbq1fa4jfhba6bsmyn6vnsf887x3xhb5v3ykhsg" } }, { @@ -73957,25 +77485,26 @@ "repo": "polymode/poly-erb", "unstable": { "version": [ - 20190605, - 2102 + 20200316, + 1314 ], "deps": [ "polymode" ], - "commit": "304204f415b9e46ee36b64531b7d170540828335", - "sha256": "0v13ssv9fjardg5as832hkhlx7yhjcdkm3bdcdj0qy31cmvk6dzb" + "commit": "56c744b8d87d8cbe0aba2696d4e8525afc4aa0e8", + "sha256": "118x9qrays54n6ksnln51ps5c298zs8ih7k49mn6aq6lpvwy5wjr" }, "stable": { "version": [ 0, + 2, 2 ], "deps": [ "polymode" ], - "commit": "304204f415b9e46ee36b64531b7d170540828335", - "sha256": "0v13ssv9fjardg5as832hkhlx7yhjcdkm3bdcdj0qy31cmvk6dzb" + "commit": "56c744b8d87d8cbe0aba2696d4e8525afc4aa0e8", + "sha256": "118x9qrays54n6ksnln51ps5c298zs8ih7k49mn6aq6lpvwy5wjr" } }, { @@ -73986,27 +77515,28 @@ "repo": "polymode/poly-markdown", "unstable": { "version": [ - 20190916, - 702 + 20200316, + 1315 ], "deps": [ "markdown-mode", "polymode" ], - "commit": "a867e5e5689f1e1a5bab5db57c7d39bac2448bcb", - "sha256": "1mrmrwmrv6xsafhn7ys3y8nbdqgzhkrb2mm0gir63g03kd6bn793" + "commit": "1536cf0c32f71d5cd05c90f7905905e38006e95d", + "sha256": "1q4qq0ql08hxkdrd2aal03560k612my7bvnfpfij3g432hn0p7v6" }, "stable": { "version": [ 0, + 2, 2 ], "deps": [ "markdown-mode", "polymode" ], - "commit": "b0de1a9f3e4d7191b1b23b65ebf03dd0ac007afc", - "sha256": "0b6wlmhrpcw9g8rbw7q7k5fr2lgcp1rpy7d9p9f0gzn52yvcr4dr" + "commit": "1536cf0c32f71d5cd05c90f7905905e38006e95d", + "sha256": "1q4qq0ql08hxkdrd2aal03560k612my7bvnfpfij3g432hn0p7v6" } }, { @@ -74017,25 +77547,26 @@ "repo": "polymode/poly-noweb", "unstable": { "version": [ - 20190605, - 2102 + 20200316, + 1315 ], "deps": [ "polymode" ], - "commit": "4e65cb22d6bca901021205257f867f868989c665", - "sha256": "1pnjg615i5p9h5fppvn36vq2naz4r1mziwqjwwxka6kic5ng81h8" + "commit": "3b0cd36ca9a707e8a09337a3468fa85d81fc461c", + "sha256": "1jl5h4nf10xd2gdlsxi6h2n3z5zh26ffcixn68xfp5q4zl34zk8p" }, "stable": { "version": [ 0, + 2, 2 ], "deps": [ "polymode" ], - "commit": "4e65cb22d6bca901021205257f867f868989c665", - "sha256": "1pnjg615i5p9h5fppvn36vq2naz4r1mziwqjwwxka6kic5ng81h8" + "commit": "3b0cd36ca9a707e8a09337a3468fa85d81fc461c", + "sha256": "1jl5h4nf10xd2gdlsxi6h2n3z5zh26ffcixn68xfp5q4zl34zk8p" } }, { @@ -74046,25 +77577,26 @@ "repo": "polymode/poly-org", "unstable": { "version": [ - 20190605, - 2103 + 20200316, + 1315 ], "deps": [ "polymode" ], - "commit": "8b0de75b1f9b65c22f7e3fbc205c9408214c8a1f", - "sha256": "04x6apjad4kg30456z1j4ipp64yjgkcaim6hqr6bb0rmrianqhck" + "commit": "8f4d11489532be98a291258ca27405aa528fc126", + "sha256": "1srnwcsn2bh8gqzxixkhffk7gbnk66kd4dgvxbnps5nxqc6v0qhc" }, "stable": { "version": [ 0, + 2, 2 ], "deps": [ "polymode" ], - "commit": "8b0de75b1f9b65c22f7e3fbc205c9408214c8a1f", - "sha256": "04x6apjad4kg30456z1j4ipp64yjgkcaim6hqr6bb0rmrianqhck" + "commit": "8f4d11489532be98a291258ca27405aa528fc126", + "sha256": "1srnwcsn2bh8gqzxixkhffk7gbnk66kd4dgvxbnps5nxqc6v0qhc" } }, { @@ -74075,25 +77607,26 @@ "repo": "polymode/poly-rst", "unstable": { "version": [ - 20190605, - 2103 + 20200316, + 1315 ], "deps": [ "polymode" ], - "commit": "1a7d38e1c1d35cf64e4dad408db486a8e1931e61", - "sha256": "1xzbznm43hsvmg2ibqa6a1rymfy85nagjsxadn5mj9r04ivhf2fd" + "commit": "8530f56fbdce01bcf4004839ff54e4156282c2b5", + "sha256": "088wzagwxpf2j67wb1i6agqfa944sahh2fm8my2m50spbbd9ymhl" }, "stable": { "version": [ 0, + 2, 2 ], "deps": [ "polymode" ], - "commit": "1a7d38e1c1d35cf64e4dad408db486a8e1931e61", - "sha256": "1xzbznm43hsvmg2ibqa6a1rymfy85nagjsxadn5mj9r04ivhf2fd" + "commit": "8530f56fbdce01bcf4004839ff54e4156282c2b5", + "sha256": "088wzagwxpf2j67wb1i6agqfa944sahh2fm8my2m50spbbd9ymhl" } }, { @@ -74134,27 +77667,28 @@ "repo": "polymode/poly-slim", "unstable": { "version": [ - 20190605, - 2103 + 20200316, + 1316 ], "deps": [ "polymode", "slim-mode" ], - "commit": "a4fb8166d110b82eb3f1d0b4fc87045c3308bd7d", - "sha256": "06kwhmw5r5h4bsaqscr7dl3rfsa6wp642597zcmzdly94h26iwy9" + "commit": "9e9b5164c68955974fd5f5d220aec5af9b5ba3ae", + "sha256": "1742wlx07khra7xfbd6f8d3i030w87mncnyx6kf6im10khf8qwmb" }, "stable": { "version": [ 0, + 2, 2 ], "deps": [ "polymode", "slim-mode" ], - "commit": "a4fb8166d110b82eb3f1d0b4fc87045c3308bd7d", - "sha256": "06kwhmw5r5h4bsaqscr7dl3rfsa6wp642597zcmzdly94h26iwy9" + "commit": "9e9b5164c68955974fd5f5d220aec5af9b5ba3ae", + "sha256": "1742wlx07khra7xfbd6f8d3i030w87mncnyx6kf6im10khf8qwmb" } }, { @@ -74184,19 +77718,20 @@ "repo": "polymode/polymode", "unstable": { "version": [ - 20190714, - 2017 + 20200316, + 1314 ], - "commit": "01232ad3800e974938199c9ac07fad57fcec540c", - "sha256": "136d1mbk00c0pz10nvklh934yzs6q1i6brvp9xnv947aazsgwj4m" + "commit": "44265e35161d77f6eaa09388ea2256b89bd5dcc8", + "sha256": "18ssl2h861dm2jkd3df6wkfr48p8zk337dbvpq5522kia7fq1lbn" }, "stable": { "version": [ 0, + 2, 2 ], - "commit": "82a0c3d71cc02e32a347033b3f42afeac4e43f66", - "sha256": "04v0gnzfsjb50bgly6kvpryx8cyzwjaq2llw4qv9ijw1l6ixmq3b" + "commit": "44265e35161d77f6eaa09388ea2256b89bd5dcc8", + "sha256": "18ssl2h861dm2jkd3df6wkfr48p8zk337dbvpq5522kia7fq1lbn" } }, { @@ -74326,29 +77861,28 @@ "repo": "aki2o/emacs-pophint", "unstable": { "version": [ - 20170918, - 248 + 20200322, + 737 ], "deps": [ "log4e", "yaxception" ], - "commit": "909025c5a871ca4b9ec7aed7f1a27c819a94dba1", - "sha256": "0qbb36qijkzbzxlmqsvvddm7x2gk9rkafnyjbkxsl76rz1ajy6nz" + "commit": "2c43423c87c6892b0fd16e3749e021a3743ee708", + "sha256": "0ila3vqv5wkna11qmm221iv1nzafnvffda19mqmv8fpl2iv1197s" }, "stable": { "version": [ - 0, - 9, - 3 + 1, + 1, + 0 ], "deps": [ "log4e", - "popup", "yaxception" ], - "commit": "28dc6a76e726f371bcca3160c27ae2017324399c", - "sha256": "18i0kivn6prh5pwdr7b4pxfxqsc8l4mks1h6cfs7iwnfn15g5k19" + "commit": "2c43423c87c6892b0fd16e3749e021a3743ee708", + "sha256": "0ila3vqv5wkna11qmm221iv1nzafnvffda19mqmv8fpl2iv1197s" } }, { @@ -74398,10 +77932,10 @@ }, { "ename": "popup-complete", - "commit": "b43b85f90c476a3b88f94927a7db90bdc72cd171", - "sha256": "04bpm31zx87j390r2xi1yl4kyqgalmyqc48xarsm67zfww9fw9c1", + "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b", + "sha256": "1mw892nr3dfhsjiqyyf3znd7vji4kxly295bbq74vszza2i0b87i", "fetcher": "github", - "repo": "syohex/emacs-popup-complete", + "repo": "emacsorphanage/popup-complete", "unstable": { "version": [ 20141109, @@ -74500,39 +78034,39 @@ "repo": "kostafey/popup-switcher", "unstable": { "version": [ - 20190917, - 1634 + 20200201, + 1913 ], "deps": [ "cl-lib", "popup" ], - "commit": "953f599c1fd9d6843ec9380cc0fc3f8248390d24", - "sha256": "1h0mxx1304fp4ilv4cz5mb65a7df1b3hi6n4dz6k9kkzbvihsacc" + "commit": "e275ec35de3b9cdedf0d6b2a4a78e91c605381be", + "sha256": "1zm6zk7c2i7gmn5am2d7090j1a71vbis8lbrzrbxdx53q6sklgi7" } }, { "ename": "popwin", - "commit": "2b3d6a8b734e0820fd904c215a83fe5519496dc3", - "sha256": "1zp54nv8rh0b3g8y5aj4793miiw2r1ijwbzq31lkwmbdr09mixmf", + "commit": "7856a62fb86415c88aa72b574895328c93c10a09", + "sha256": "0zkaaj80ymssscj8iknndc3p6ydg1l32s2l63kqiy9kc46r2r5fz", "fetcher": "github", - "repo": "m2ym/popwin-el", + "repo": "emacsorphanage/popwin", "unstable": { "version": [ - 20150315, - 1300 + 20200122, + 1440 ], - "commit": "95dea14c60019d6cccf9a3b33e0dec4e1f22c304", - "sha256": "0nips9npm4zmz3f37vvb4s0g1ci0p9cl6w0z4sc6agg4rybjhpdp" + "commit": "d69dca5c9ec4b08f5268ff2d6b5097618d4082d7", + "sha256": "1w2dmzmy8k4drdhjzkryk6nbkl56aizvyawwn3dyc2gr0vg8lbb4" }, "stable": { "version": [ 1, 0, - 0 + 1 ], - "commit": "95dea14c60019d6cccf9a3b33e0dec4e1f22c304", - "sha256": "0nips9npm4zmz3f37vvb4s0g1ci0p9cl6w0z4sc6agg4rybjhpdp" + "commit": "4052b6e51bc6cc80cfc86007d2cadbbc4bbd55b5", + "sha256": "0kdlpjrf1xqyqyzfdymbin34jgs06l465p2ggpj4bb4zaypw2hr5" } }, { @@ -74596,11 +78130,11 @@ "repo": "pitkali/pos-tip", "unstable": { "version": [ - 20150318, - 1513 + 20191227, + 1356 ], - "commit": "051e08fec5cf30b7574bdf439f79fef7d42d689d", - "sha256": "168hl76rhj6f5ncmrij4rd3z55228h6kb23384h2phsjw0avgf23" + "commit": "179cc126b363f72ca12fab1e0dc462ce0ee79742", + "sha256": "1rz6lqmhs7l49cwwqs7gl2i49l3gvziz1gs556jzsic7jzf9xk1j" }, "stable": { "version": [ @@ -74620,20 +78154,43 @@ "repo": "tumashu/posframe", "unstable": { "version": [ - 20191013, - 756 + 20200319, + 907 ], - "commit": "d75dc1547a6a1cc2b385c736880eee77d7981aec", - "sha256": "0ssbpkmanljxw8dqk6ks643x4pacfwfw5xfzv5jnny25ph656r1f" + "commit": "c15800a8388696474fe9f8466fce1b40735b9304", + "sha256": "14xjly5cqziqb0gnklsgg28vimdrpq8273z2inf1c0jnak8x2vzn" }, "stable": { "version": [ 0, - 5, + 6, 0 ], - "commit": "fc90a1a558200e5c3688c65add9afdea695a2c10", - "sha256": "1fhjxj7gi2pj5rdnmf0gddiwd8iifgjgjp01c01npz1gwwixyqh3" + "commit": "9638b9d9cf8b9727a13c86f70b5d33bf938497a5", + "sha256": "12r1as9lqqc6anckq455dqv8dbqahnbdzj437i11053wv33cv5vd" + } + }, + { + "ename": "posix-manual", + "commit": "5322048b88381fa4ec49fcd14bb749144d29585c", + "sha256": "1bmjy3gxr4k6yy18rj7pc8b7ziw2ynfily7siqcb59r9rygx6m9l", + "fetcher": "github", + "repo": "lassik/emacs-posix-manual", + "unstable": { + "version": [ + 20200301, + 1103 + ], + "commit": "ebaacd7266ae7a66605317f57b9f42e9cfb2ce1e", + "sha256": "0kdcpd59jd1gasqk5gx4ggbyp492b53dy6n3nkv9j2rj8618yzs6" + }, + "stable": { + "version": [ + 0, + 1 + ], + "commit": "ebaacd7266ae7a66605317f57b9f42e9cfb2ce1e", + "sha256": "0kdcpd59jd1gasqk5gx4ggbyp492b53dy6n3nkv9j2rj8618yzs6" } }, { @@ -74692,14 +78249,14 @@ "repo": "milkypostman/powerline", "unstable": { "version": [ - 20190323, - 213 + 20200105, + 2053 ], "deps": [ "cl-lib" ], - "commit": "6ef4a06c3c583045accbc957b6f449b7c0c57cd8", - "sha256": "1ybm5y03if4wbzhx5p05wwgf2d8l2c4vwi22d0ygvlwrzfk8n5dl" + "commit": "edbb464eef680efc9d408730288c716cd4cac404", + "sha256": "0j1bb9dyr76m68gn94qk6k6bxhdqbiq59fzi4mnx3ivnnkbfz6n7" }, "stable": { "version": [ @@ -74807,6 +78364,30 @@ "sha256": "0pv671j8g09pn61kkfb3pa9axfa9zd2jdrkgr81rm2gqb2vh1hsq" } }, + { + "ename": "ppp", + "commit": "1442ec5baf60f85e9603cb2a70745914174d5c9a", + "sha256": "0x71y998a81w79bambwds58wgzywa3qjvm4brkfjqfd1n7cfzsz4", + "fetcher": "github", + "repo": "conao3/ppp.el", + "unstable": { + "version": [ + 20200318, + 806 + ], + "commit": "bfb9ddfbc124b8b97d7a12610947b76794c0fd06", + "sha256": "1632y0vaxv043w4js5jpd9zr36bzy9pwxnhmlh44hmkvgfw07qvn" + }, + "stable": { + "version": [ + 1, + 0, + 0 + ], + "commit": "6aabd694bcc66775c6a4328fa653a83e39791252", + "sha256": "043wsaibkz82ckxdw4r25nfb8pql3ba9jcyd3vg92lvjdzblm05l" + } + }, { "ename": "prassee-theme", "commit": "15425b576045af1c508912e2091daf475b80b429", @@ -74853,19 +78434,19 @@ "repo": "raxod502/prescient.el", "unstable": { "version": [ - 20191025, - 347 + 20191224, + 220 ], - "commit": "82a90c4142c369f4090a42536179c6029d3fdafd", - "sha256": "0n919w068j73dnlxfzsvzh7j385phi4z718pi6xq6cygkjkq9zq8" + "commit": "a194852e8022762843052e58a9d0fbdaa1df0fe5", + "sha256": "0da4s32fza42vdiqhh7cdim08by5i4909q93ivxkmgrmqfgdvz0p" }, "stable": { "version": [ - 3, - 3 + 4, + 0 ], - "commit": "2f01b640e3a487718dbc481d14406005c0212ed9", - "sha256": "1wqk1g8fjpcbpiz32k7arnisncd4n9zs84dn3qn9y8ggjzldqy91" + "commit": "ad9fbe8a17fe74b27a39bcc034f3da1865663387", + "sha256": "008hxy1vasnyz36wwg44gikpi80ng75hj85nrswk60b7z7cznbmr" } }, { @@ -74952,7 +78533,7 @@ "unstable": { "version": [ 20190930, - 2105 + 2106 ], "deps": [ "dash", @@ -74960,8 +78541,8 @@ "hydra", "s" ], - "commit": "fd362d2be7ed80889715ed8a30a61780a18ce6ea", - "sha256": "0vnmvpsm46izxlh0l0p89rhy6ifzzfpzk7j3kkf2608s6dy8hgcy" + "commit": "20362323f66883c1336ffe70be24f91509addf54", + "sha256": "16krmj2lnk7j5ygdjw4hl020qqxg11bnc8sz15yr4fpy1p7hq5cz" }, "stable": { "version": [ @@ -75041,14 +78622,25 @@ "repo": "alphapapa/prism.el", "unstable": { "version": [ - 20190908, - 1820 + 20200315, + 1926 ], "deps": [ "dash" ], - "commit": "49c8b97b286c7403bf239645964416200ea82dd5", - "sha256": "0dcy032g4jc027mwq8dfadsc05bsi1k6yiab3rpdxwc17c9pg9x8" + "commit": "636059b6ca21d7dd2d46776d799f94b476c62ee2", + "sha256": "014zvdqizjqp1cxs8a45nj2nfpvjsfmls41780pjdvzvrvyq16p0" + }, + "stable": { + "version": [ + 0, + 2 + ], + "deps": [ + "dash" + ], + "commit": "636059b6ca21d7dd2d46776d799f94b476c62ee2", + "sha256": "014zvdqizjqp1cxs8a45nj2nfpvjsfmls41780pjdvzvrvyq16p0" } }, { @@ -75181,16 +78773,16 @@ "repo": "rejeep/prodigy.el", "unstable": { "version": [ - 20190714, - 1102 + 20191212, + 1242 ], "deps": [ "dash", "f", "s" ], - "commit": "0a12eec1f001a4eef16b2c0c524f02f2647a4ff1", - "sha256": "02kysq57kqzg0zkhaf302ada9cp9spgp71z8vbdq4c7dl6x75h4g" + "commit": "6ae71f27b09b172f03fb55b9eeef001206baacd3", + "sha256": "16w1xidfbqlbdxq45ff6am9j1hzlxz3pwqvimwk4432prrvnf8zg" }, "stable": { "version": [ @@ -75293,6 +78885,15 @@ 20190517, 521 ], + "commit": "22830177a0cea19acf29fb9910b784ea5f66f551", + "sha256": "05ks95j6706rabfh1487nix2cjbxa6pjjr0xm01nhd3vcfr1m2b0" + }, + "stable": { + "version": [ + 0, + 0, + 2 + ], "commit": "fc4e9f774cae42a6fe135833774daaecf2b3dac0", "sha256": "07056jd1z9i65db4pcshhdfrk5yb6xc28k3ihq7pixmya71l15pk" } @@ -75416,14 +79017,14 @@ "repo": "hying-caritas/project-shells", "unstable": { "version": [ - 20171107, - 851 + 20191123, + 914 ], "deps": [ "seq" ], - "commit": "d9401de750e444697c2eb9de1ff79f2a2eba4af8", - "sha256": "1x16l0gijirmj667s8l87nizsiww2wzjka9ydl4yxzchl7a486cp" + "commit": "5aea9ee0de93f2568afb3f18bb7b43a9715a9a2d", + "sha256": "0zh0hwvh5hdn9gpyhqv14l46pbsids83ps86asikd9in7sl2abgn" } }, { @@ -75434,26 +79035,26 @@ "repo": "bbatsov/projectile", "unstable": { "version": [ - 20191024, - 721 + 20200329, + 1908 ], "deps": [ "pkg-info" ], - "commit": "cbdd0f071ca5cc2890738f08aa7223101ef2d032", - "sha256": "1sqddfnmz8xr1l4r45yir3fb43plj5ha3z94phh69wa67m3f23ja" + "commit": "56e18fcefa2f286edfec98853189985823d0e53c", + "sha256": "0iq93ghwj96xxfsa5s90g36ngwpa92bj91zvkkk40zn9faqkdllc" }, "stable": { "version": [ 2, - 0, + 1, 0 ], "deps": [ "pkg-info" ], - "commit": "823c0aa9ffd1e8e03b20efe97c16cfb66e2c56c5", - "sha256": "16y0zcqydfag4igwcbljqymkwjgjxdh97ii616wgdsyjgk9xxd4h" + "commit": "34b2665023f9a29ebd2a415bfb8091db3c804d46", + "sha256": "16p79m8mkrlczx4b5v28nnlcd1ny49861lax28r7cb9ps9jhdz7d" } }, { @@ -75555,8 +79156,8 @@ "repo": "asok/projectile-rails", "unstable": { "version": [ - 20191023, - 621 + 20200203, + 1226 ], "deps": [ "f", @@ -75565,13 +79166,13 @@ "projectile", "rake" ], - "commit": "b127797372af61ca35f5fdea598004c16bfacee6", - "sha256": "0n3z88w58ls62pnxibgfhdg8ms9i305kdjzxygs4gqqh0gjykhcm" + "commit": "0398d940a201128946f619de842b0d1f9f0fffbd", + "sha256": "0cfrm56bxdwb96xqpdih6hqh61gvc1wal4yp7d7c414j8h0s7d02" }, "stable": { "version": [ 0, - 17, + 20, 0 ], "deps": [ @@ -75581,8 +79182,8 @@ "projectile", "rake" ], - "commit": "78f5cbe2c212ce19d4732212c46472d1c412659f", - "sha256": "09aby7yxk28rqz0vaps889idl5n41wj72pa0dr7bqmidq8i5jv4h" + "commit": "228f6316f2da229bc82fbbcf52323da951a17871", + "sha256": "1l9l0hza6p1l750i7lvys6gnrdy2j0dmlg6nbb6zr2cq6jbf1lkd" } }, { @@ -75806,14 +79407,19 @@ "repo": "chuntaro/emacs-promise", "unstable": { "version": [ - 20190711, - 328 + 20200320, + 341 ], - "deps": [ - "async" + "commit": "02c470bd6c7bf4ea4244d304f57997bad37c9bb7", + "sha256": "1sjwwram45pb9bjap6h24m6734qr5yhnai2lqbdvxd0nplfv91ng" + }, + "stable": { + "version": [ + 1, + 1 ], - "commit": "99fdb3b7efb813af41f825b24d0615d603baeede", - "sha256": "0yin7kj69g4zxs30pvk47cnfygxlaw7jc7chr3b36lz51yqczjsy" + "commit": "53e1dfe9a8bd613fdfa31944e5259dcdd3a29e12", + "sha256": "1xb34zdbwjvahfhycjphdkm925kgd22dr298c57hwxza4ljc2hxj" } }, { @@ -75858,6 +79464,21 @@ "sha256": "10y8x54p64zs1jlq4nf1kixpb42078n2gdf9s62b1siyb1vhl581" } }, + { + "ename": "pronto", + "commit": "b0de92782a7305aee5a803607f9db0fe8b8e988e", + "sha256": "0vkas9h45i029wx04wsvm72dlhhq46vdx9y20c2rkq4n9ny94hr3", + "fetcher": "github", + "repo": "julianrubisch/pronto.el", + "unstable": { + "version": [ + 20200218, + 1633 + ], + "commit": "c2a2ec718c08de1fd2e681970456786cf4eac8fe", + "sha256": "1xgkl263iyrdin6mdlmvswr411qyciskasa2jbqi84ffiw83313m" + } + }, { "ename": "proof-general", "commit": "135c8f2a04739145b500b8742a697907e398d270", @@ -75866,11 +79487,11 @@ "repo": "ProofGeneral/PG", "unstable": { "version": [ - 20191007, - 1041 + 20200326, + 1804 ], - "commit": "15ccaec24ce935de366cae08b906c130379758ce", - "sha256": "108qijk2r0kgvbkhc3m04g1krx0xrr1zgjmr5ikwxvvvlxvrzkm2" + "commit": "9196749d55413224355409d55003f7f8c8ba0f79", + "sha256": "17ak2nbgiqwldk6y4cg4qq49hnvzw32jm4m3dqag2smvkl6rjw19" }, "stable": { "version": [ @@ -75937,11 +79558,11 @@ "repo": "ksjogo/proportional", "unstable": { "version": [ - 20190806, - 1901 + 20200309, + 1556 ], - "commit": "f600b7ed2ab19a3072adad3f47048a5bbdb82703", - "sha256": "03vyyi5n5rq2hcd5yz7yirsnrgs6cin2y8xhly5skqsv60zs15p1" + "commit": "0e4537af7ba2bc9dbb449c38350bce012b382f51", + "sha256": "0k4kwmyja5nb6rmbbq71vzxw7nnxr0w8f9vzws14an28niwr4s8p" } }, { @@ -75973,17 +79594,17 @@ 20170526, 1650 ], - "commit": "342a2d627c023dfe5dcf1c9d9fd014338a0665be", - "sha256": "1m3yx23w64n0g7454p0n8fgn0b07rvfyl5hlbd38l9ivv9s2l9k0" + "commit": "dec4939439d9ca2adf2bb14edccf876c2587faf2", + "sha256": "0kxrgv1pb38lsgpgilaqjlvw6inmlbs8rdrm2bfilzcwwrr92bi9" }, "stable": { "version": [ 3, - 10, - 0 + 11, + 4 ], - "commit": "6d4e7fd7966c989e38024a8ea693db83758944f1", - "sha256": "0cjwfm9v2gv6skzrq4m7w28810p2h3m1jj4kw6df3x8vvg7q842c" + "commit": "d0bfd5221182da1a7cc280f3337b5e41a89539cf", + "sha256": "00g61f1yd8z5l0z0svmr3hms38ph35lcx2y7hivw6fahslw0l8yw" } }, { @@ -76023,11 +79644,11 @@ "repo": "stardiviner/proxy-mode", "unstable": { "version": [ - 20190130, - 8 + 20200131, + 816 ], - "commit": "a6c55e97dbe4ec4df9dc21d234cabe806dce3a29", - "sha256": "13xa19k0xyqq03ypih0lrkm97l2c5zha8mwl264h9vamn81i8vm2" + "commit": "e9b2a4bb032aaf13b006b74eec309a9bf2249cf0", + "sha256": "1wmj3ahjj1g7sx36fda6fhicvmxkm8qm64zqdk3qqj808jik1pry" } }, { @@ -76038,8 +79659,8 @@ "repo": "purescript-emacs/psc-ide-emacs", "unstable": { "version": [ - 20190326, - 2110 + 20200317, + 1013 ], "deps": [ "company", @@ -76050,8 +79671,8 @@ "s", "seq" ], - "commit": "a10cc85565f330ee277698b27f3f715fef2e1ce2", - "sha256": "1nj8g31zys86p2kb1yrx9w0657qg3ckz5awfwz5wd5w1axxigk23" + "commit": "7fc2b841be25f5bc5e1eb7d0634436181c38b3fe", + "sha256": "0r0fymyai30jimm34z1cmav4wgij8ci6s1d9y7qigygfbbfrdsmj" } }, { @@ -76185,30 +79806,32 @@ "repo": "fvdbeek/emacs-pubmed", "unstable": { "version": [ - 20190502, - 2121 + 20200315, + 1938 ], "deps": [ "deferred", "esxml", - "s" + "s", + "unidecode" ], - "commit": "67fbb6e8834feda85e8301adc5c17d9e38395d6a", - "sha256": "15bwjxc7g43m5pi8z17anaqqkvi209r7kk1chmf175477gvrv7c0" + "commit": "cc5d258ac83650ad6e8043c8c01d9162c2460308", + "sha256": "13n7i80734848by8f0b3z0mqv0rh9x42hglkc8abhmilc0sg4i0y" }, "stable": { "version": [ 0, - 2, - 1 + 4, + 2 ], "deps": [ "deferred", "esxml", - "s" + "s", + "unidecode" ], - "commit": "67fbb6e8834feda85e8301adc5c17d9e38395d6a", - "sha256": "15bwjxc7g43m5pi8z17anaqqkvi209r7kk1chmf175477gvrv7c0" + "commit": "f6e13137ad7731c8b0eb1720aed48d1a1edf4719", + "sha256": "1nanaj0liilnplh1njbmch7qsa2h7izkc51bpd4hxw6k4bslplqc" } }, { @@ -76672,11 +80295,11 @@ "repo": "statmobile/pydoc", "unstable": { "version": [ - 20181025, - 51 + 20200107, + 54 ], - "commit": "abb948e27efaf2452f339c62cd99a1c69930bbfe", - "sha256": "1da08x2hjjd9d832fwrd4rbd3h6f7m031kkxh53v9xdavkp0xqf1" + "commit": "1dfbab7800827adadb649d6e02c31dd9cd65f0d3", + "sha256": "1lpc9picbrnqyyh2sy365dvfkxf2phh8s8j4bhizvkd2gallr6vr" }, "stable": { "version": [ @@ -76795,8 +80418,8 @@ "repo": "tumashu/pyim", "unstable": { "version": [ - 20191014, - 333 + 20200326, + 719 ], "deps": [ "async", @@ -76804,8 +80427,8 @@ "pyim-basedict", "xr" ], - "commit": "485cd94dd2a651f7ecd69bdf80200f0d0033754e", - "sha256": "1frd6xshhvy0l8h4chf11g46dai757mbmy0ag0h024934agqd4n0" + "commit": "84af8e80a4ac8fa19e7b01a3f9984280e7d501b4", + "sha256": "0351mvnnm0xzmlm71byxlbn8dp7qnpw8d12ghwdmd53q87pfgz9s" }, "stable": { "version": [ @@ -76950,8 +80573,8 @@ 20170402, 1255 ], - "commit": "97f4f2ae187df933f072d74fd8347ec14213f5de", - "sha256": "08i0likgznkc7xwb4p47cndza0dy4h12l3im47h12vgjl1r5ayna" + "commit": "53e5406b9279008f3ae8b5f045e5cd5773771d70", + "sha256": "0c6d0pmbinj65kacnqzbsa6acb3as8blrl5f202s8bbb9zd62vam" } }, { @@ -77004,8 +80627,20 @@ "pythonic", "tablist" ], - "commit": "05697e881a8b57c4f183344c42ae36662b180663", - "sha256": "148dhzpjv5ykakxdyp0fcxjbqjvf4r6sv8jq9jlyqk2q1nxz45fr" + "commit": "f0687b8aee3e685b55e2c66b16211e02ac5f9d94", + "sha256": "18kqqdk7yifcjmn11jgsqxvzr6izcgify1d8gm504sxw2qqc3q0i" + }, + "stable": { + "version": [ + 0, + 1 + ], + "deps": [ + "pythonic", + "tablist" + ], + "commit": "59d7ec03dcb1968160ac1dfe3c979cc83fe0fe4b", + "sha256": "132l0sf08hwq5wa6yffm8n60a51303zf4ivnfz57vyja70qdbp8b" } }, { @@ -77016,14 +80651,14 @@ "repo": "ionrock/pytest-el", "unstable": { "version": [ - 20181005, - 1524 + 20200330, + 41 ], "deps": [ "s" ], - "commit": "1bfa7549001e61ecd59cd6eae7c6656a924d1ba4", - "sha256": "1ry0czn0qjjiw75v47jamxbfzh70jxai6lvf3pp5v87wp1xhnznh" + "commit": "6934047242db79b1c53e9fe3e0734cc9719ed1c4", + "sha256": "1gh5sqmhw7hl67m7nqgd4wwns7a10j0sfmabm97k1cmmbwdj0vca" } }, { @@ -77034,20 +80669,20 @@ "repo": "poppyschmo/pytest-pdb-break", "unstable": { "version": [ - 20191016, - 530 + 20200316, + 301 ], - "commit": "b57705d55a067456c6160489672feddcc6085713", - "sha256": "03plhl4z75rvf3llhw8dwmc8r3hwhwd2pwq3r66kbqdvr0yrdl42" + "commit": "007427af712df9fa2c54869388d74e97f91b2bd7", + "sha256": "14l14605lgq498j37916p4gjwkqjb8z4ky85wlk3pgyx6bp20ckz" }, "stable": { "version": [ 0, 0, - 6 + 8 ], - "commit": "b57705d55a067456c6160489672feddcc6085713", - "sha256": "03plhl4z75rvf3llhw8dwmc8r3hwhwd2pwq3r66kbqdvr0yrdl42" + "commit": "007427af712df9fa2c54869388d74e97f91b2bd7", + "sha256": "14l14605lgq498j37916p4gjwkqjb8z4ky85wlk3pgyx6bp20ckz" } }, { @@ -77058,15 +80693,15 @@ "repo": "wbolster/emacs-python-black", "unstable": { "version": [ - 20190817, - 1754 + 20200324, + 930 ], "deps": [ "dash", "reformatter" ], - "commit": "706d317f0874d7c5b5a3d844698bcfb8b1fe253e", - "sha256": "0fjnd85nlkck156dj6cahk8chhgkbgl2kwywqzi8bl4yj700m4dk" + "commit": "a11ca73f6dfcdc125d27ff184496d66bdbd71326", + "sha256": "1jv2fwlf7q8l5npqcpr05xzqmfqlx6xmjn0zphh9rx6dd2dpdma9" }, "stable": { "version": [ @@ -77090,11 +80725,11 @@ "repo": "thisch/python-cell.el", "unstable": { "version": [ - 20190217, - 1823 + 20200314, + 1147 ], - "commit": "665725446b194dbaaff9645dd880524368dd710a", - "sha256": "1rjh16jacp98i0l78ij5lfp5f0b42qhfzms2x8zwr9j2aj1csy2h" + "commit": "4f0778b05bfb936861449bcb998ed620cd9b31ad", + "sha256": "0fjqy8wkxm8m94xfvvj12fpx8ybaln8x4ss9b0iaz9y9jvfwzg21" } }, { @@ -77180,11 +80815,11 @@ "repo": "python-mode-devs/python-mode", "unstable": { "version": [ - 20191018, - 1735 + 20200224, + 1148 ], - "commit": "1e64dd421f1848dd902bf9f39b5bac8d3f33a96d", - "sha256": "0wckkg4ykrhfpyz5dankagai8jfbhzi3kjd99ds1j1515jxmawmg" + "commit": "5bf2c0dafb086684124c3997a618d40ac8db0fb0", + "sha256": "1hz9j8k4bybvi3kgq51rqi0rwy3d7c5wqvx2kkljh6734m9x8xp2" }, "stable": { "version": [ @@ -77304,15 +80939,15 @@ "repo": "pythonic-emacs/pythonic", "unstable": { "version": [ - 20191021, - 811 + 20200304, + 1901 ], "deps": [ "f", "s" ], - "commit": "ba9af8ce302579a2b2097b867a35a9fc0bc4bceb", - "sha256": "1q43ngd0nj5j9aca71qi0ss137kp46klr6xdlm8ghy55ppym2g5i" + "commit": "f577f155fb0c6e57b3ff82447ac25dcb3ca0080f", + "sha256": "10faqkfbr7n1zlbrs9c9slm2f7wr2liav8r367s00bw3vb2vm8nb" }, "stable": { "version": [ @@ -77338,11 +80973,11 @@ "repo": "jorgenschaefer/pyvenv", "unstable": { "version": [ - 20191006, - 1304 + 20191202, + 1039 ], - "commit": "103d2f158ef2a760741682e18741e44107c68f3f", - "sha256": "055sgk8zf4wb5nqsf3qasf5gg861zlb1831733f1qcrd2ij5gzxx" + "commit": "861998b6d157ae73b829f02a5a6c8a9118310831", + "sha256": "0w7w95cjhpvy28mcvmv21ajspngkyrx3yjx3293bmclv699lfbwc" }, "stable": { "version": [ @@ -77466,6 +81101,21 @@ "sha256": "1xprnq3y74hfm931a80wcj35faafzqc59j3vavx95wzv4z4yfgdm" } }, + { + "ename": "qtcreator-theme", + "commit": "bf0caf3c60f4b8c6ed1c126a5feb91c99eea1f60", + "sha256": "0ic7a9zas8ndrp15xbw4j2987ajfjjq003fcmqhibp0sc66rldfx", + "fetcher": "github", + "repo": "lesleylai/emacs-qtcreator-theme", + "unstable": { + "version": [ + 20200203, + 1436 + ], + "commit": "c56d792d5ab01743e1350e0a7a8a89bb3d2e0c4f", + "sha256": "1h7l094h5ccn24c8qp7aqcc4yn1gx8hlkgvsamh1zn8qpsx9bipy" + } + }, { "ename": "quack", "commit": "aa58bf19d4b65ec785677a36709794ae5aebded4", @@ -77506,36 +81156,36 @@ }, { "ename": "quelpa", - "commit": "a496196d405c152600d44ef4aa28557f489c542c", - "sha256": "0qm4dxwlvaka6j8ismb4lhar4dzlhpvjsx6524w15ilcbdbyqqjl", - "fetcher": "git", - "url": "https://framagit.org/steckerhalter/quelpa.git", + "commit": "c599f1254808a9d9bab87c35769052d5df2a01bf", + "sha256": "1g53fcy837hpyn9lnmmri0h4c5va61vszhblz4caadqq265hknvs", + "fetcher": "github", + "repo": "quelpa/quelpa", "unstable": { "version": [ - 20191014, - 628 + 20200329, + 719 ], - "commit": "0c4dab17591b15cea7dccf905afac9991f3b4971", - "sha256": "18j5hyyssmqi57h3i28dyv5mn0pmqkcydfzgn8yc5c53qvq9ixc9" + "commit": "a3c4490a3bb08ee7819b330a93a284b2fd4cd70c", + "sha256": "1rm27y9zni9nscrvsmvi653nwkrlr4gd4cy5pyrynh3q32yhkqik" } }, { "ename": "quelpa-use-package", - "commit": "a496196d405c152600d44ef4aa28557f489c542c", - "sha256": "1rdhnv7iz9clcy68j1gqv8cwq70ip4w12179v553lyikk9icrpp8", - "fetcher": "git", - "url": "https://framagit.org/steckerhalter/quelpa-use-package.git", + "commit": "c599f1254808a9d9bab87c35769052d5df2a01bf", + "sha256": "0p09w419kldgl913hgqfzyv2pck27vqq2i1xsx7g29biwgnp9hl9", + "fetcher": "github", + "repo": "quelpa/quelpa-use-package", "unstable": { "version": [ - 20190210, - 1838 + 20200307, + 805 ], "deps": [ "quelpa", "use-package" ], - "commit": "6f3cc87caa6cb8795079c5cab3c6665970859098", - "sha256": "129pigh1njn50s1lq81blcn54bkb6hwrlxg0sk7m1zsf6rybw0rf" + "commit": "00ce667293c7cd5dc79d4b6077785fcc57455775", + "sha256": "1xxvfd0ijcz01nsd143xgzsp815x3qpsrk6dmw6j1w3gbr2iqh9z" } }, { @@ -77561,26 +81211,26 @@ "repo": "cpitclaudel/quick-peek", "unstable": { "version": [ - 20190208, - 1515 + 20200130, + 2059 ], - "commit": "fd8a6c81422932539d221f39f18c90f2811f2dd9", - "sha256": "18jr3syd7jd809qq1j61zwaaclmqn24qyb0mv0q8sj6ac4vzl1c3" + "commit": "03a276086795faad46a142454fc3e28cab058b70", + "sha256": "1kzsphzc9n80v6vf00dr2id9qkm78wqa6sb2ncnasgga6qj358ql" } }, { "ename": "quick-preview", - "commit": "98270840568fa1fca2d92f26108444fb24609e83", - "sha256": "18janbmhbwb6a46fgc1sxl9ww591v60y3wgh2wqh62vdy4ix3bd9", + "commit": "c52a1ea0afa8e5f439b7ac987b79c49eb08fe95a", + "sha256": "10k69yiil8i7xvhylrr4rwzqidm3ljm1rdlr6k2r3i9mkiv9pcif", "fetcher": "github", - "repo": "myuhe/quick-preview.el", + "repo": "emacsattic/quick-preview", "unstable": { "version": [ - 20150829, - 439 + 20191017, + 1920 ], - "commit": "29c884c6ab385ef67d9aa656ebb7c94cabeb5c35", - "sha256": "1cp3z05qjy7qvjjv105ws1j9qykx8sl4s13xff0ijwvjza6ga44c" + "commit": "a312ab5539b9a362da9d305e4da814e17c5721c9", + "sha256": "07qipy0r0v8y5rm2g1kqqqy81635wbclzvjgq8y9sziwchww2v20" } }, { @@ -77619,17 +81269,17 @@ }, { "ename": "quickrun", - "commit": "81f0f525680fea98e804f39dbde1dada887e8821", - "sha256": "0f989d6niw6ghf9mq454kqyp0gy7gj34vx5l6krwc52agckyfacy", + "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b", + "sha256": "02wxja6l1xq7gini17ana8qy4kvpfzri0gn2dypjnj2nfh1vvk9i", "fetcher": "github", - "repo": "syohex/emacs-quickrun", + "repo": "emacsorphanage/quickrun", "unstable": { "version": [ - 20170223, - 115 + 20200315, + 1029 ], - "commit": "55bbe5d54b80206ea5a60bf2f58eb6368b2c8201", - "sha256": "1skbd5q99d9rwfi954r9p7b7nhwcfijq30z0fpdhbi1iiabf7vqz" + "commit": "50e07e769848b1e1780054fab2e221adc474777b", + "sha256": "15jj9w0z3yfxaikxi8qaxhr8ipi1jc85zckbri2gdbbdy928ypiq" }, "stable": { "version": [ @@ -77649,11 +81299,19 @@ "repo": "zzkt/quiet", "unstable": { "version": [ - 20160508, - 1256 + 20200211, + 721 ], - "commit": "6f20309f99e26fcae2601d1544b342f044e54baf", - "sha256": "14q7x341gqcxn3bq72wmfxipqmj2dh35kxcrwjkyghbsbd43rv8n" + "commit": "f8a4ef0be086f97e7fb631df7060f29cc4025b98", + "sha256": "01nbxgi1v6kqmcnzfdxxc0cqsswi8h12l98ngdiq6b62mv7cfcrs" + }, + "stable": { + "version": [ + 0, + 1 + ], + "commit": "aa3a6e039dbc9437e7dd178a6596d43cf19293eb", + "sha256": "0rl3l7wwdfn8bm1a1lajqsxp62xdqn9xihglv8a1ggq3wi40fw61" } }, { @@ -77779,14 +81437,15 @@ "repo": "greghendershott/racket-mode", "unstable": { "version": [ - 20191023, - 1526 + 20200329, + 1841 ], "deps": [ - "faceup" + "faceup", + "pos-tip" ], - "commit": "5c1b8c8134741b08c51f3dc47741b05f68f5fd68", - "sha256": "1g7fmxrbyydci0qz3x3sm4a2nviri19vd8j9x4wbzbxw2s3c73g3" + "commit": "c8ac9971814ca9df8ec406f3b76c9ba4878a5d57", + "sha256": "0jnw9plmw3r2c12kcy4435v2kf0vmmla9ljb670zhcg690a5cjqh" } }, { @@ -78008,11 +81667,11 @@ "repo": "ralesi/ranger.el", "unstable": { "version": [ - 20190412, - 624 + 20200218, + 203 ], - "commit": "c3f349e52f5c50926dc0f285c97676934f50bc18", - "sha256": "1yc5g631xrvfkdgxzzy9rzvnacnl87r504yr1mpggsw1inklhzkk" + "commit": "ae9b3816a6da927cca5beb62c45400103797a2da", + "sha256": "07fiyw0gw51dxc7r92pj75lbxppg0gixjv9317qx9c3v1lcxaqiv" }, "stable": { "version": [ @@ -78133,20 +81792,20 @@ "repo": "thiagoa/rbtagger", "unstable": { "version": [ - 20190925, - 2046 + 20191115, + 1858 ], - "commit": "831041ea12bb4963fb72386f6c17faf9988013e8", - "sha256": "0ssyyw67pvl6py33gq9cfhqlpbsw5dwli130h6lqnjm6yy8li8z5" + "commit": "18ef567e65d1437e9a9e03d4f30a02d60e926d85", + "sha256": "0kr10j3f0dd7q102db4y16yj8yfv06wnqsgnx2l9jyc8qhkbxq6w" }, "stable": { "version": [ 0, - 1, - 3 + 2, + 0 ], - "commit": "dcc8ca8b9c1e42e637b9225b7ad8a3d50dd01be6", - "sha256": "0rrpjq3dczwp2vj4dclylid27hwd0am0l8p9kqy67wldkkcc0qz2" + "commit": "e46137e36a3bdba8dd4d27017b194a8524c7375b", + "sha256": "154y2adh2pgn77ycidkd6ndjg9wjxsjmbkb8cppf9csq31vmc313" } }, { @@ -78274,19 +81933,19 @@ "repo": "simenheg/rdf-prefix", "unstable": { "version": [ - 20190511, - 1212 + 20200216, + 914 ], - "commit": "6daf675d96aa4a0bc78adc93560b791a77651b22", - "sha256": "0mxzpbmaw8qz6ykyhdhq0jvxsnbgsb98psjy0w99jpxkg09fas17" + "commit": "825af2c584fbad9e67c2c08e29040776fa647fe0", + "sha256": "0ky81w36dn6c69x4v4b46j8ixqqws9dc8adi4q19149xkiijx1kl" }, "stable": { "version": [ 1, - 11 + 12 ], - "commit": "6daf675d96aa4a0bc78adc93560b791a77651b22", - "sha256": "0mxzpbmaw8qz6ykyhdhq0jvxsnbgsb98psjy0w99jpxkg09fas17" + "commit": "825af2c584fbad9e67c2c08e29040776fa647fe0", + "sha256": "0ky81w36dn6c69x4v4b46j8ixqqws9dc8adi4q19149xkiijx1kl" } }, { @@ -78363,25 +82022,6 @@ "sha256": "0wmfjbk3s45wj8j6xwfdldxwkrxsfcby2a242r2p88y3f8pp30i1" } }, - { - "ename": "readability", - "commit": "7a4e84530b4607a277fc3b678fe7b34b1c5e3b4f", - "sha256": "06kykmf1yrk4jiazahk7qqf1ds34ppg9zbj9my5l52j3gjr7v9zq", - "fetcher": "github", - "repo": "emacsorphanage/readability", - "unstable": { - "version": [ - 20140716, - 27 - ], - "deps": [ - "oauth", - "ov" - ], - "commit": "6c220ab8e0ca63946574ed892add5c8fd14002ce", - "sha256": "0kg18ybgwcxhv5fiya5d3wn5w9si4914q946gjannk67d6jcq08g" - } - }, { "ename": "readline-complete", "commit": "0cf3b56dae7669b34df9d2abe2d78164cbf064c9", @@ -78428,16 +82068,16 @@ "repo": "realgud/realgud", "unstable": { "version": [ - 20190912, - 744 + 20191123, + 1341 ], "deps": [ "load-relative", "loc-changes", "test-simple" ], - "commit": "cc5d1236879a2dcdd91c9a842987f2f5a3accd11", - "sha256": "0a27lmaqbhg227insacadrcxhzi6pi64hj4yx3mkppnhiyaasy6v" + "commit": "94f283593304c2f673cb4940900197d9cb099faa", + "sha256": "00dzw6nqqsgdlcvpnq1zc2568l5hz7vynqx6vkvvbj3jafc6nwj7" }, "stable": { "version": [ @@ -78482,15 +82122,15 @@ "repo": "realgud/realgud-ipdb", "unstable": { "version": [ - 20190604, - 209 + 20191115, + 1116 ], "deps": [ "load-relative", "realgud" ], - "commit": "3642767a286e0542bf03cbb240cf47b2a89ad3f5", - "sha256": "1lgqh80w4ksa4a3zyxdz812jn0yg5xn1z5z0c23sf5vqzzxkzx7h" + "commit": "347090928d7866a9909208c5bbe2cb8fa7b55cd7", + "sha256": "1m7v8qsqm8b8liyfdfqpcsjnlcbs0lpl6m91ff3449a94l1g99k7" } }, { @@ -78501,16 +82141,15 @@ "repo": "realgud/realgud-jdb", "unstable": { "version": [ - 20190625, - 1911 + 20191125, + 1700 ], "deps": [ - "cl-lib", "load-relative", "realgud" ], - "commit": "8cfe452f5028f3ac0f6e0ae7fa03c2a31d197ded", - "sha256": "0yglfw7bc9lz9k7mi4v9n0yd1aslph0q3fjb241ji77gq67wh69r" + "commit": "99b7f08e0fcec9e33dde8dbbe60e42cfec08bc17", + "sha256": "16q9wxa518f3g54zk3imgj8ml06bn66d9jyyg2k86j94ny7q1azd" } }, { @@ -78686,11 +82325,11 @@ "repo": "xendk/reaper", "unstable": { "version": [ - 20190920, - 2209 + 20200120, + 2006 ], - "commit": "1c58c96380b8dc31002bbc87100c3faecfa01f1b", - "sha256": "08yfwxpqsr0qvy8bhj650n2yd2dxs2miciszngbnplrkkvdy0v7g" + "commit": "6602e74d6190d2e8dd61358bebb513c3ae8b89fb", + "sha256": "1pywz6xm3wjkbcj5zr7w5xh5wfggvivnw94mmsm6lybnv2zgjg1d" }, "stable": { "version": [ @@ -78826,14 +82465,14 @@ "repo": "10sr/recently-el", "unstable": { "version": [ - 20190317, - 1234 + 20200120, + 1432 ], "deps": [ "cl-lib" ], - "commit": "7b5d1128becb387d759a3a95f6afb9ef54be792a", - "sha256": "0wghawh47jd2j5s77h1b69fg5njff1yccx1xpvwmlj6ssh3p38xp" + "commit": "fa8b52fe891a0adaabe0456f6f5a56a2600a831f", + "sha256": "0y0msmfwsrbsd59jhj9dh3vz49f2g0ykyp34c2i8l8vz5vkac3lp" }, "stable": { "version": [ @@ -79017,8 +82656,8 @@ 20180418, 1434 ], - "commit": "4b13acd64cf523442f87337f7c41261e1dfd37dd", - "sha256": "1f99xjskd9am3f8wcx3hdzjpp06y9rb10dr2l38z3015bjfpil5g" + "commit": "c72190de76f7ed1cfbe1d2046c96e99ac5022b0c", + "sha256": "0rbzwkdai9bpcnldrib90p02p36qfgnwk18iz2pcz32xs73frx82" }, "stable": { "version": [ @@ -79083,8 +82722,8 @@ 20181121, 21 ], - "commit": "5069c89fb0cd8fc1936ac8aa1e5dd6f4c1691db4", - "sha256": "00l3zraignzlz5vmn7cqjizin8h0gbgvpyd3jbl5vza4r9bp1l2j" + "commit": "50689559ff970e33013b8cf8a3bbc8be18ec4e09", + "sha256": "0v1xc27hfa223bganb7gksv6cc2v95bdfms7riv75sf30v3vh59s" } }, { @@ -79130,19 +82769,19 @@ "repo": "purcell/reformatter.el", "unstable": { "version": [ - 20191006, - 2321 + 20200327, + 2358 ], - "commit": "e15598a0ccbf4866f4939cceaac897924ba7690f", - "sha256": "0dfx0k8q3d4bbvndy9nnhwi2rc2jxmjjp3pi1qbd4nqy0aj6yas1" + "commit": "e8f70b20caf6672353a2b0ee3161d4791c412696", + "sha256": "19mji7frfvj925nx2m2cdvsx0lf69dzdl5wbdppyra9717rsspbq" }, "stable": { "version": [ 0, - 4 + 5 ], - "commit": "b2963f51009948d5e4885237a148695008d4ccbc", - "sha256": "0hhy6x1bkwlhdlarsgm06g3am4yh02yqv8qs34szpzgy53x84qah" + "commit": "e8f70b20caf6672353a2b0ee3161d4791c412696", + "sha256": "19mji7frfvj925nx2m2cdvsx0lf69dzdl5wbdppyra9717rsspbq" } }, { @@ -79267,6 +82906,30 @@ "sha256": "0k9qgrbzbxx4sjffnr02qx5wm71i3m61w7mh2j4hq9jf8k6nbkq4" } }, + { + "ename": "register-quicknav", + "commit": "fed1473b565f42f7849c7676d0c9739a39562c95", + "sha256": "1487mkyz2h5929580racxr4nbc343klns9bcm7m5jn4hsx5aiq6m", + "fetcher": "git", + "url": "https://schlomp.space/tastytea/register-quicknav.git", + "unstable": { + "version": [ + 20200325, + 1612 + ], + "commit": "06afa1efc490a6cbc1d814fc6f1e7a80a601ecc7", + "sha256": "055bffsa81chjpv39p2fn10dwikpzb034k19k0mc1026d8a423kg" + }, + "stable": { + "version": [ + 0, + 4, + 3 + ], + "commit": "e30883a7085ad1f4e1113dc84f5f2222ac4bcd37", + "sha256": "18mskl1w5n2cksjds27d1gcrwb065vp9n6hnw9402j3n6z0w8srv" + } + }, { "ename": "related", "commit": "555932a7b9cf11b50a61c2a9dd2636fd6844fac8", @@ -79337,20 +83000,20 @@ }, { "ename": "remark-mode", - "commit": "161a45835a153c6ac81b99311482f5dd36507da1", - "sha256": "1zl8k3h4acbgb3hmjs2b4a14g0s0vl3xamrqxrr742zmqpr1h0w0", + "commit": "083f2070eb27d66f09552bf42a346f41a9b9b4b5", + "sha256": "1ccgii79h05bjl16nz7rgvkf35s9y18vp7l6mx6chciwjz6l78kn", "fetcher": "github", "repo": "torgeir/remark-mode.el", "unstable": { "version": [ - 20171218, - 756 + 20191103, + 1825 ], "deps": [ "markdown-mode" ], - "commit": "e8a95f25d865d6165a7fdb1cadf5e6f0bb5ee73b", - "sha256": "01qdaby7mn5d8y95wcbqzwzcbjmf2329g6yjbvmdd1gn6s7qzs0b" + "commit": "e80a1b78304045dec3eceffb6c8cbaf2b6c7b57a", + "sha256": "1l06hh728p9gnlliz1nq9qg641gyxfzb7mlz8x88bmvb0wyzyr8r" } }, { @@ -79369,11 +83032,31 @@ } }, { - "ename": "renpy", - "commit": "cc928aed12275dc3780d7d8acc6ceca0f69ef63f", - "sha256": "1xfk3j13wzgxg56izbwad0kw4izg0hdzkh7h7cfdmdf4v6mxc7f0", + "ename": "remind-bindings", + "commit": "b55af46fa0ca3b32bcafcb8601ce1a3e660502ba", + "sha256": "0s6pqg9pgi1qjss90ip2ryn4604lij3z4acpg6pqhf99y4yjrchv", "fetcher": "github", - "repo": "billywade/renpy-mode", + "repo": "mtekman/remind-bindings.el", + "unstable": { + "version": [ + 20200301, + 2213 + ], + "deps": [ + "map", + "omni-quotes", + "popwin" + ], + "commit": "730b6d7b30e397f8f11a6d3d5c269df21a33c450", + "sha256": "16fk0xnp5awsq45i0wpdkzy6hwccayvwwiag9kar8kmb6nqs2y17" + } + }, + { + "ename": "renpy", + "commit": "cdd1f8002636bf02c7a3d3d0a075758972eaf228", + "sha256": "173391mcv56ljrkhl6hb9fhkl2vic9wj2xmd21hq88m3awpjmill", + "fetcher": "github", + "repo": "treymerkley/renpy-mode", "unstable": { "version": [ 20190419, @@ -79546,20 +83229,20 @@ "repo": "canatella/repo-el", "unstable": { "version": [ - 20190326, - 1644 + 20191201, + 38 ], - "commit": "c53c06169dec4e556982fb06ca780ca4708dc436", - "sha256": "1brsc8k590qc4x93qydiq8ylq26zbdv8565fz194zpik9d239mja" + "commit": "7b3ce731f1209d74113cb65a2d6aa6f54ce8ed27", + "sha256": "0jgiawdnzjlrpx2j1y6djwbqncdpmyfd31q1qf1890049y8ppxnb" }, "stable": { "version": [ 0, - 1, - 3 + 2, + 0 ], - "commit": "d7b87cd515bad8a67d3a892a46a23f5fe81e08de", - "sha256": "0rbvcvm7bfr6ncji7cllfxyyr6x7n9fx863byp243phsj3n93adz" + "commit": "7b3ce731f1209d74113cb65a2d6aa6f54ce8ed27", + "sha256": "0jgiawdnzjlrpx2j1y6djwbqncdpmyfd31q1qf1890049y8ppxnb" } }, { @@ -79605,20 +83288,20 @@ "repo": "tkf/emacs-request", "unstable": { "version": [ - 20191022, - 615 + 20200219, + 2257 ], - "commit": "6d170649ae9ef1c7c3d545517f896c03ca12062c", - "sha256": "1sc387x1v82i9r0p5r6v2wrwypk0dvkrmpivnyfkvrpg7vhff6yn" + "commit": "216d570a58d05ef1307edb63d2539bafa5f688c6", + "sha256": "11malas5n5g4yxydx8pz8aahr5rkjq256cg5avhd64fvfryz9wj2" }, "stable": { "version": [ 0, 3, - 1 + 2 ], - "commit": "ef9f509b5579f2b529a20e43f7e0f061e641fec5", - "sha256": "0fhhd349l4iqkrjxqzpckfk2w45x2g4cccpm1dqzv9m49md1wphx" + "commit": "22efefeaa394f6deef957818f5c5332061c88d1c", + "sha256": "1djywhvvb6kwdj0nd3axjvb7k2g06dzkc6hsf29w9rsk96vr8ryl" } }, { @@ -79636,21 +83319,21 @@ "deferred", "request" ], - "commit": "6d170649ae9ef1c7c3d545517f896c03ca12062c", - "sha256": "1sc387x1v82i9r0p5r6v2wrwypk0dvkrmpivnyfkvrpg7vhff6yn" + "commit": "216d570a58d05ef1307edb63d2539bafa5f688c6", + "sha256": "11malas5n5g4yxydx8pz8aahr5rkjq256cg5avhd64fvfryz9wj2" }, "stable": { "version": [ 0, 3, - 1 + 2 ], "deps": [ "deferred", "request" ], - "commit": "ef9f509b5579f2b529a20e43f7e0f061e641fec5", - "sha256": "0fhhd349l4iqkrjxqzpckfk2w45x2g4cccpm1dqzv9m49md1wphx" + "commit": "22efefeaa394f6deef957818f5c5332061c88d1c", + "sha256": "1djywhvvb6kwdj0nd3axjvb7k2g06dzkc6hsf29w9rsk96vr8ryl" } }, { @@ -79820,6 +83503,36 @@ "sha256": "1lan49723rpzg1q7w8x3iggazwl4zirq5l8nhpb8m5hmg21a4kih" } }, + { + "ename": "reveal-in-folder", + "commit": "26682a1fb2d885168ca922521df7f3d8fbfe43a8", + "sha256": "0nhrsmilimffpjnv9hn8a49wckdi1lywjlb2fpxpqdi8zl0bgkzs", + "fetcher": "github", + "repo": "jcs-elpa/reveal-in-folder", + "unstable": { + "version": [ + 20191209, + 514 + ], + "deps": [ + "f" + ], + "commit": "e3cc73688d8dc3b47ccb1db49519a83b275b1cde", + "sha256": "0xdpm7r83nd5j4ss530l3srz4qy2z0m7wp084i3v2sfqi3in5qgl" + }, + "stable": { + "version": [ + 0, + 0, + 2 + ], + "deps": [ + "f" + ], + "commit": "715e34b7c4a93840f6188386a13d15231907257b", + "sha256": "0d75hgaskhc6gwjdcc19nligb4xj2irg33cirrc0wp23k7il1m6f" + } + }, { "ename": "reveal-in-osx-finder", "commit": "2bf40285279b761b0efd6bc8542ae9aad4b329e1", @@ -79852,19 +83565,19 @@ "repo": "a13/reverse-im.el", "unstable": { "version": [ - 20190428, - 1711 + 20200324, + 1113 ], - "commit": "e30815653aa81eac097f27be14886806d9df4ea4", - "sha256": "0i34q5bj5y0xnvc8d82w5vpfscl1nvqv584sd9kqpi81gy3qphrw" + "commit": "030e89a38df6d194546b0629f90c9e1898370eb7", + "sha256": "1mfjwxf1l0py2ididzdv86r118ws9iscdv23a0kgf2cjd6ydpbjc" } }, { "ename": "reverse-theme", - "commit": "81f0f525680fea98e804f39dbde1dada887e8821", - "sha256": "163kk5qnz9bk3l2fam79n264s764jfxbwqbiwgid8kw9cmk0v776", + "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b", + "sha256": "133wl2k0niy9ih0bjn7qx51fykqjj392ibkp1bvmy5dbl09x4gic", "fetcher": "github", - "repo": "syohex/emacs-reverse-theme", + "repo": "emacsorphanage/reverse-theme", "unstable": { "version": [ 20141205, @@ -79890,11 +83603,11 @@ "repo": "kmuto/review-el", "unstable": { "version": [ - 20190728, - 1435 + 20200131, + 122 ], - "commit": "3066beb9f3b7ef64da870b829bec8fe73e84b07c", - "sha256": "1ql9ap1zil7hlv2vmqzcjvsky29cpgclbf32x88v9jx588ni2gwq" + "commit": "09e2df58398b392f19642a12c8cb78eae726dbd2", + "sha256": "13cy7wy2jv1cjncfnayp28w1ka4s0jim2sarcw0dn2iiniqlkbwf" } }, { @@ -79920,26 +83633,26 @@ "repo": "galdor/rfc-mode", "unstable": { "version": [ - 20190525, - 1910 + 20200215, + 1357 ], "deps": [ "helm" ], - "commit": "e7d9e2f4cb9ff302231efe57af6fdc201e5b48f0", - "sha256": "0hx3754ids3i40hl7cb3s5xi5gy676856h9y6aj50f4g8il16jq1" + "commit": "55d28321b480a095d29e5c6cd03c8dea9ad55553", + "sha256": "0f9h8vmfn8xi0c3qwigzbbvsck4wwxbflxl06m7ky2h5jnj6n0g3" }, "stable": { "version": [ 1, - 1, - 1 + 2, + 0 ], "deps": [ "helm" ], - "commit": "5cdf7172e307c0e23bb5342c61263d4439292ede", - "sha256": "091yqk257z19rs9mcy6b52ll87s85s7fbsd235kzqmacfcqyjsmi" + "commit": "55d28321b480a095d29e5c6cd03c8dea9ad55553", + "sha256": "0f9h8vmfn8xi0c3qwigzbbvsck4wwxbflxl06m7ky2h5jnj6n0g3" } }, { @@ -79950,17 +83663,16 @@ "repo": "dajva/rg.el", "unstable": { "version": [ - 20191017, - 1843 + 20200307, + 1623 ], "deps": [ - "cl-lib", "s", "transient", "wgrep" ], - "commit": "fcb3c16dc67d22afb5a5eab14f00bebe3a0720a6", - "sha256": "1bzd7xfy5hf4jlf5f4yl9csgr188dl9kdv5yd2f67z36miia5h6h" + "commit": "e19c06f4c556bda6457da3d50c14b12cb97679d9", + "sha256": "0k9rz6as3867b23979lrmb0sn26rbl08n6n71pxqxr8s85nljlml" }, "stable": { "version": [ @@ -80102,6 +83814,27 @@ "sha256": "0p044wg9d4i6f5x7bdshmisgwvw424y16lixac93q6v5bh3xmab5" } }, + { + "ename": "rime", + "commit": "0144879cf0dfe4f0447c5da7cd061f7aac91d4fe", + "sha256": "1m9jp307czp4mx4xpfnj9bhq7w5xg656dx9l9ih603cbz24salq4", + "fetcher": "github", + "repo": "DogLooksGood/emacs-rime", + "unstable": { + "version": [ + 20200329, + 1205 + ], + "deps": [ + "cl-lib", + "dash", + "popup", + "posframe" + ], + "commit": "f78719e5d8c8d2ec6da0f66e0b1e7d660d3a5a89", + "sha256": "0pcncx1w7y8rnsg23lf055cc38xrwhx26yhrqwzdf996cad54y6w" + } + }, { "ename": "rimero-theme", "commit": "c6d07b0c021001195e6e0951c890566a5a784ce1", @@ -80206,6 +83939,36 @@ "sha256": "119p926ypz525xdh82m2d1saky1qh5va224fxyqisfbwfrc17arh" } }, + { + "ename": "rivet-mode", + "commit": "ab197ee315e5e67ce56d81374e3589ee894000bd", + "sha256": "0491r8qq5i7al972jjqch5wb1mj83fms6axvxq2zykw5xcdrgs8d", + "fetcher": "gitlab", + "repo": "thornjad/rivet-mode", + "unstable": { + "version": [ + 20191230, + 1842 + ], + "deps": [ + "web-mode" + ], + "commit": "ac15de8c76978638e129c26869123c75d5b1f8c7", + "sha256": "19pv8qpcm0cllbbckzpjxrbkdavirq6b8p8jm274klkf4b7k32f8" + }, + "stable": { + "version": [ + 4, + 0, + 2 + ], + "deps": [ + "web-mode" + ], + "commit": "b40bc13761e0b14b4ba67a0c600d69fd129c8746", + "sha256": "1g7xz8yygpbcqn0fjnad8kim75q6yqlvsab596my115w9p9l23y6" + } + }, { "ename": "rjsx-mode", "commit": "b83be7efdef2457e1320fe3dec46484fbd20263c", @@ -80214,14 +83977,14 @@ "repo": "felipeochoa/rjsx-mode", "unstable": { "version": [ - 20190614, - 2215 + 20200120, + 1446 ], "deps": [ "js2-mode" ], - "commit": "0e7fa6b4facdec4f85a7a8865bdf59dfd57217b5", - "sha256": "0s0871sx3ch09kgvbcp9na4zdrfrda62xjq8m9knbq5vnj8q8qpi" + "commit": "0061587a06cdc2579a8d0e90863498d96bf982d8", + "sha256": "08b4hdgq4hc1yfd9pvyir2j3cqqdqa3j5svgaba97x5fzhsz7y8i" }, "stable": { "version": [ @@ -80244,11 +84007,11 @@ "repo": "jgkamat/rmsbolt", "unstable": { "version": [ - 20190508, - 609 + 20191218, + 257 ], - "commit": "7045b8116a0bf899a51e6d91a373a693faa310e1", - "sha256": "1wgp0xb2c5b6hxxwwwlz7kl4namb7r03cpfkraqzgiia13m9pihr" + "commit": "2bc1afe528b70b8aad4243a3b2b72bcf09a599e1", + "sha256": "0pg2q275qd83i8c1g0f1xlwvbqd40xm3gw2ahl80blyllsvz04j9" } }, { @@ -80265,8 +84028,8 @@ "deps": [ "inf-ruby" ], - "commit": "8190cb7c7beb8385dd3abf6ea357f33d8981ae8a", - "sha256": "1lqckmfxm2csh0as22bwf4rvbn5rwqry18xx9m5nfhfl57360q75" + "commit": "68503b32bb3a005787ecb7a7fdeb3bb4a2317e2b", + "sha256": "1v4nbfr3rhdm1733gb88cv0f018iy53cw5hdcwpshrmjj36a2lpn" }, "stable": { "version": [ @@ -80343,11 +84106,11 @@ "repo": "marcowahl/rope-read-mode", "unstable": { "version": [ - 20190715, - 1753 + 20191215, + 1240 ], - "commit": "86938769fe8c4749ebd11b0fd839a871ce6544c6", - "sha256": "1n9p801sif4sn0n2wmwr63zfz9cx3637ail16844an7bw612wzlj" + "commit": "d1246557e2c9c685b0ee4ec0e58237431b846096", + "sha256": "11yd10b6pxg92ybn4lv3n7h7b7xa4xsvsmpz42hbqdarm50hxsdn" }, "stable": { "version": [ @@ -80367,11 +84130,11 @@ "repo": "DerBeutlin/ros.el", "unstable": { "version": [ - 20191024, - 1942 + 20200109, + 1940 ], - "commit": "5795c4dc88a359667bffd49b7724c26761d6fd96", - "sha256": "0j0bdnnv8zmxgs2w8b2nsiqpbvm10napdxrjdg4p042w1c2p370g" + "commit": "0babdd3bbc038ee7436db0cc869df35752456268", + "sha256": "1f0bxbm1rgvf68q6qbsf63mzr44541aapk4237rs7pkxk81nnrrl" } }, { @@ -80468,15 +84231,15 @@ "repo": "pezra/rspec-mode", "unstable": { "version": [ - 20190912, - 856 + 20200228, + 2348 ], "deps": [ "cl-lib", "ruby-mode" ], - "commit": "66ea7cc9699d6edc6115daa024818adbd85efc20", - "sha256": "0b11s8r0pi7ah54km4yg4fqff8wkk409d25qnlwm1l94pdwjd1c8" + "commit": "9a2a9d2935ae17b8570485bdea7c347533b464f6", + "sha256": "0plr71dbghzcnbrl9l4g52g59yvlcx1dh41fwcnp0b12x13vslay" }, "stable": { "version": [ @@ -80499,19 +84262,48 @@ "repo": "Andersbakken/rtags", "unstable": { "version": [ - 20191002, - 1643 + 20200221, + 36 ], - "commit": "f2633f565fc5e7e6958993ef105225f4e68e43ba", - "sha256": "1bjgr7wa82ccrc25r7agfaq3iz7xlp1qchvkmkx3xy59jv4yafjz" + "commit": "d370c09007d299dc6b6aae719bf728b95dd426c5", + "sha256": "0hakpd1dwhn2nkfhx4hli0l7hf3p1g8vpyrrczq45smfsz73d96x" }, "stable": { "version": [ - 3, - 23 + 2, + 38 ], - "commit": "7169ed577d676690a3c6f0025b54e8477d80eacf", - "sha256": "1i94dizg3wvkvq8c2pf5bzkx8zwzcfi4p3l73c779y145bygssnq" + "commit": "9687ccdb9e539981e7934e768ea5c84464a61139", + "sha256": "1r6l7dgr2ch586zrdi5l8fhdj4qdva8ldz7cjvi2byc2pd2xs8rx" + } + }, + { + "ename": "rtags-xref", + "commit": "4e6c219d38a3f3495470fbeeade3f771439e0df0", + "sha256": "15f3dcq2r4zhb1agd48k91a2d81ny4697hhyw8g6iq8y7m7nrrxx", + "fetcher": "github", + "repo": "Andersbakken/rtags", + "unstable": { + "version": [ + 20200310, + 1909 + ], + "deps": [ + "rtags" + ], + "commit": "d370c09007d299dc6b6aae719bf728b95dd426c5", + "sha256": "0hakpd1dwhn2nkfhx4hli0l7hf3p1g8vpyrrczq45smfsz73d96x" + }, + "stable": { + "version": [ + 2, + 38 + ], + "deps": [ + "rtags" + ], + "commit": "9687ccdb9e539981e7934e768ea5c84464a61139", + "sha256": "1r6l7dgr2ch586zrdi5l8fhdj4qdva8ldz7cjvi2byc2pd2xs8rx" } }, { @@ -80647,26 +84439,26 @@ }, { "ename": "ruby-electric", - "commit": "5fd5fa797a813e02a6433ecbe2bca1270a383753", - "sha256": "02xskivi917l8xyhrij084dmzwjq3knjcn65l2iwz34s767fbwl2", + "commit": "ccae5ba7c1088837f2dd6cb0992f49ea2dc5bcdf", + "sha256": "1fj5vb4n7jiq93z0yakr39vyfd0f5yhf4p4aw4bdm9cx5dmpr8g6", "fetcher": "github", - "repo": "knu/ruby-electric.el", + "repo": "ruby/elisp-ruby-electric", "unstable": { "version": [ - 20170810, - 1130 + 20200328, + 1528 ], - "commit": "3553448a780a1ea5c3b0e9becd820d4762876593", - "sha256": "0h47lfgxjcyyl8gb1w7l8j8h65s3lp1hsq742sl7a1gf5y6bbm3v" + "commit": "f2323cd9b5df3b34aa9810ba8109502824925d23", + "sha256": "1p0l0fsn0jcgb4raimyc4d1wpfksrfhn0rkwdazadvm6s8baydf7" }, "stable": { "version": [ 2, 3, - 1 + 3 ], - "commit": "3553448a780a1ea5c3b0e9becd820d4762876593", - "sha256": "0h47lfgxjcyyl8gb1w7l8j8h65s3lp1hsq742sl7a1gf5y6bbm3v" + "commit": "f2323cd9b5df3b34aa9810ba8109502824925d23", + "sha256": "1p0l0fsn0jcgb4raimyc4d1wpfksrfhn0rkwdazadvm6s8baydf7" } }, { @@ -80734,11 +84526,11 @@ "repo": "purcell/ruby-hash-syntax", "unstable": { "version": [ - 20190109, - 2227 + 20200304, + 2214 ], - "commit": "577ab383c142e3a0697ce73480158a8b489038da", - "sha256": "06hm4pl3mzlyx4d3v94rm2w33q9wnwpdl7qas3fnks691d9apg7x" + "commit": "d64036278dcfb4fa0603e6697142e02c2876f634", + "sha256": "02s494r9iy47jd74cd0z1dz1igh8rw2jbyybahy9pivmcn7fnqkr" }, "stable": { "version": [ @@ -80844,8 +84636,8 @@ 20170718, 1416 ], - "commit": "85a6d80fb05fef396a8029b8f944c92a53faf8fe", - "sha256": "11klircrdc9z9jfksd6rjgwbb775mziss67mw74673b8iva8n1y7" + "commit": "020b02ed6e9ab49e79d2ddf63e4ee2684c1728f4", + "sha256": "0nkjs6012dxayf2y8d7sw11czgb7lhyhcbcbmdbicnygf7wbm67h" }, "stable": { "version": [ @@ -80874,17 +84666,17 @@ }, { "ename": "run-stuff", - "commit": "0d6e9ce2acd859b887f7e161f4b9969be1a0b8ef", - "sha256": "0zx96m6cval5g4p0lhy9kpyycp2jygaq3y2njhkpij9gl4nb2ll2", - "fetcher": "github", + "commit": "68b7cb0ffe90cd56e2ca6e91e33668be586a1da7", + "sha256": "038brammgivaq2423sx0iy6n7d7lyx3r939a0b85ix8zvkcbinia", + "fetcher": "gitlab", "repo": "ideasman42/emacs-run-stuff", "unstable": { "version": [ - 20180209, - 748 + 20200106, + 443 ], - "commit": "ed42a7bc9a197ccf1ca87f9937bf98f0a9ed3f92", - "sha256": "1w49v868n3723q6887y4bc5q8spd7xync5d581vvxdpi75qgvr0z" + "commit": "d9f7fde3d33446481655d18ca5423c03a23c2e41", + "sha256": "1g0n3cji2yj35hkcq3p4wnw3iv99k2hagidg6z7qpfavxasyxyn9" } }, { @@ -80971,11 +84763,11 @@ "repo": "rust-lang/rust-mode", "unstable": { "version": [ - 20191023, - 918 + 20200322, + 1749 ], - "commit": "5ad9b599c6beea43d6262c3ad81d95512a7e53b8", - "sha256": "1i1899lclwq2c238jcyz2hixvixwrqgks8xgw5048zpxvdb6vm6a" + "commit": "2df6cf72163db57fd0c79fefd0e79f38f29f7d93", + "sha256": "1f8fbzkc6ifx91kcf5blx22bh3713qmm5kj95i06k8cn10nlx11f" }, "stable": { "version": [ @@ -80995,11 +84787,11 @@ "repo": "grafov/rust-playground", "unstable": { "version": [ - 20180807, - 1158 + 20200116, + 1043 ], - "commit": "092c8b11d62dea23953a004744833092bac85fe1", - "sha256": "0n2c1pjbvy46ic0k84jd3ffwwb5hibjqc1wv7knzkldi5agigfsh" + "commit": "5a117781dcb66065bea7830dd73618008fc34949", + "sha256": "1vmas5mg32lsyiki753a7hy597f54k1rx9sjiahw63jpgg785zys" }, "stable": { "version": [ @@ -81018,8 +84810,8 @@ "repo": "brotzeit/rustic", "unstable": { "version": [ - 20191019, - 2022 + 20200304, + 2028 ], "deps": [ "dash", @@ -81033,8 +84825,8 @@ "spinner", "xterm-color" ], - "commit": "030e0dc5777ac2c27d2e99ace19c252eb52a50bc", - "sha256": "0xs0lyapkp91nhrjhqgsv03zmvmp8mg4jz434w03cwwcbm8k1j55" + "commit": "61032eacf0b3b7579f627ce78bca2eddbfa31a10", + "sha256": "0mxrmgdhgjlixff1fm7fyn87yn3cakhyjk8vdhdr37k0qh339k0c" } }, { @@ -81185,16 +84977,16 @@ "repo": "sagemath/sage-shell-mode", "unstable": { "version": [ - 20180215, - 835 + 20191103, + 1040 ], "deps": [ "cl-lib", "deferred", "let-alist" ], - "commit": "9f07ff835e8d19afe571dbe414afb690c7b1cb5c", - "sha256": "07al41ir1ab0z2m2acvx63scr33bfp3asshjl05shs4j9d4bkmdp" + "commit": "8ff9888fd84a96816512403a1b5ded93b4d4278b", + "sha256": "0rrp137r5cf049xqry3jz514pmdzfxkmri9z8kv08yk3w3c9sapj" }, "stable": { "version": [ @@ -81221,8 +85013,8 @@ 20171202, 1332 ], - "commit": "bb5ed0f0b0cd72f2eb1af065b7587ec81866b089", - "sha256": "1b53mdqgcmjay3i3fnxnycv8crqi20yvyv57ybgs2ikfl3v282h2" + "commit": "65c6b04abadd2cdeb4cc2dc2a8b96b06e0f27ed8", + "sha256": "18c6l36sdc3any2fccm49wiyrda97pnd07jdir22wfl5wba7xnj8" } }, { @@ -81251,29 +85043,29 @@ "repo": "glynnforrest/salt-mode", "unstable": { "version": [ - 20181225, - 1157 + 20200210, + 1200 ], "deps": [ "mmm-jinja2", "mmm-mode", "yaml-mode" ], - "commit": "5ed02dabe0c5c58f51959a48b559f7fc5425ea2c", - "sha256": "13xz5kfq4kgs94bx6ygl1b26j66l4bjhkvrcv40cvi5mpik2lp98" + "commit": "c46b24e7fdf4a46df5507dc9c533bbc0064a46fa", + "sha256": "07qnn8svgd0ishajx5dr91mk4nx9fm9phxsv00cjapvpd4f26xn6" }, "stable": { "version": [ 0, - 1 + 2 ], "deps": [ "mmm-jinja2", "mmm-mode", "yaml-mode" ], - "commit": "e14ed8f2ce0ab7a783c4341879ec8c003e2b5c81", - "sha256": "19gw35qv13f2r4wif5fgqfhrph2r320n81faxx8980zds28x2q0x" + "commit": "6a1fedb4da7181b00f1bebfc88c87dd2f0c58766", + "sha256": "1vygzx7i3cxghji4517sa2v9w5yl84mjpfixf000mf897xpk7288" } }, { @@ -81287,8 +85079,8 @@ 20181130, 101 ], - "commit": "ae0b3c024b66275f22809e2b41f428b01c259b96", - "sha256": "1468byxxd0ysqzmi9ssypfhfyqrjgj5w7sx42qgw66m57sis8ra3" + "commit": "46352169bd6d2a86ca9c2052cd05ecd16fc7657b", + "sha256": "1k0b1w9a3b89ricji92nq4cqbh1l2fm7ly1bdl8pvf59drp7cpd4" } }, { @@ -81368,11 +85160,11 @@ "repo": "nflath/save-visited-files", "unstable": { "version": [ - 20190927, - 2153 + 20200212, + 414 ], - "commit": "0b61c9bd16947bd99ccd61208bd481325e8c5cba", - "sha256": "04rrl0nn4mk8h7qyzh3lljagldm5hqhxv8ps6hkh0zz4il7ds018" + "commit": "8203a05a322324ec17b14437c8dfb38efdb53241", + "sha256": "1zc7f5l7i60fpi8vw41xhpnhz5jpiqkk7fdkd2k6lnmv7jnnilfc" } }, { @@ -81451,11 +85243,11 @@ "repo": "hvesalai/emacs-sbt-mode", "unstable": { "version": [ - 20190929, - 1531 + 20200106, + 753 ], - "commit": "5d2edadff23fe23e911379d6c2141d55b23e7254", - "sha256": "1alxn4q38pssgm6y39xhdi7rydrlrl5n481m5vh76wl4hx0dfjhg" + "commit": "633a315ad453cd963588c9b8fba02d9cf75296b4", + "sha256": "0ha2lyw42ir16b2d09y27q0rsdx6azcfv258frp1ja63mx0jiqic" }, "stable": { "version": [ @@ -81478,8 +85270,8 @@ 20190413, 1246 ], - "commit": "6ec97fda154b0578688ab98723685c66af7a7a71", - "sha256": "0vq85dv6yrglvfrnf3vxrdlh6cwxfcmrxqwfv596jh0l834cbsgg" + "commit": "cc2dfa14eb3922d93c15f30734e8211c77ceada1", + "sha256": "11n26dksppjylg5jafxf4j859n6c1062v85qci8fx762wicz0bkf" } }, { @@ -81511,8 +85303,8 @@ 20190929, 1522 ], - "commit": "44772cbf1e1ade52bc5066555ff0aed68569aaec", - "sha256": "0xnsyrsardsmjyj563dkl03f5d6g2syng1x721i0w36qkiqwcqr7" + "commit": "46bb948345f165ebffe6ff3116e36a3b8a3f219d", + "sha256": "1072lsin7dxadc0xyhy42wd0cw549axbbd4dy95wfmfcc1xbzjwv" }, "stable": { "version": [ @@ -81841,11 +85633,11 @@ "repo": "ideasman42/emacs-scroll-on-drag", "unstable": { "version": [ - 20190826, - 8 + 20200328, + 116 ], - "commit": "271b4aa6b38c2550119a36efac2b92cf1233e6e3", - "sha256": "1ia2mcl42r69dlyxabjh76c550x0nf0irhpsdbda0h3in62f7q6m" + "commit": "2d79a6d9c2497f701335fd66154a67cd51073c9f", + "sha256": "0m2605k8i2z44mqw5ibviwsbn3j8g8hs4q9cih5ip14lik6hhrdz" } }, { @@ -82013,8 +85805,8 @@ "repo": "shackra/secretaria", "unstable": { "version": [ - 20190116, - 2000 + 20191128, + 250 ], "deps": [ "alert", @@ -82022,8 +85814,8 @@ "org", "s" ], - "commit": "40f2df829c8b858922559cd1dfbf13a9f78db3e8", - "sha256": "1kxr9cl6zkr20llivlwyra268kj7iy4mn0505w6kdakg1v8ba22f" + "commit": "03986130a2ada1fa952d45e83536729f20230fcf", + "sha256": "10ikd6ksz5adpldyx9h8s3qnwc488rqixzwnd0rjjwqigmllj9lb" }, "stable": { "version": [ @@ -82172,20 +85964,20 @@ "repo": "rbanffy/selectric-mode", "unstable": { "version": [ - 20170216, - 1111 + 20200209, + 2107 ], - "commit": "aed70015b29074b52a5d0c49b88b7a501d276dda", - "sha256": "0v2wfmi5y7jkg8wpc5fmhy1zpdckzlkvnwlz14ymylwpq62nl216" + "commit": "bb9e66678f34e9bc23624ff6292cf5e7857e8e5f", + "sha256": "1kkxm8ysjcx0vs6lic0lcncr2kcmjmh2n5y8j9303lhzzhh73psg" }, "stable": { "version": [ 1, 4, - 1 + 2 ], - "commit": "a35cb3815caceaf273ad7d16ac3b2dd3c7a3003e", - "sha256": "04bj71080wqybznyx63dawhppq6x3p88x1j56gvl8kvxv2hwzgzf" + "commit": "bb9e66678f34e9bc23624ff6292cf5e7857e8e5f", + "sha256": "1kkxm8ysjcx0vs6lic0lcncr2kcmjmh2n5y8j9303lhzzhh73psg" } }, { @@ -82248,16 +86040,16 @@ "repo": "conao3/seml-mode.el", "unstable": { "version": [ - 20190623, - 1537 + 20200323, + 220 ], "deps": [ "htmlize", - "simple-httpd", + "impatient-mode", "web-mode" ], - "commit": "b9044a416694eb40550a17af678c0ac52b3e9f28", - "sha256": "0gsq0yvjp56y8h0hj3mpchf128b30azx2835phxiqkfkbwkpa9rd" + "commit": "32f0dbf5a9b39535bc079c9c70456479d0dd3fb2", + "sha256": "1284fdraamjsbaslyk8k75a3m1rfa1i8pwrh56k3vsmfmd8a0cib" }, "stable": { "version": [ @@ -82340,6 +86132,25 @@ "sha256": "0jn3a7m8ld07280mc7nkyahagwhvhrcshrpsb8k1ycdwd1r3zqw5" } }, + { + "ename": "separedit", + "commit": "297ba98f4bc011948c34aad30ae28b7adc611938", + "sha256": "00p4crbzr5fkcj8lhpfd9w44ynpmhd9fay9yrwgz0yh87lll6nqx", + "fetcher": "github", + "repo": "twlz0ne/separedit.el", + "unstable": { + "version": [ + 20200325, + 1711 + ], + "deps": [ + "dash", + "edit-indirect" + ], + "commit": "2ee55780eeced9b0bb086a9d731526ee1a9c3658", + "sha256": "08xxl3z7abqk0m4lwflp0cnz7pcy66f6hps8dmxfas2hgl0qyz7i" + } + }, { "ename": "sequences", "commit": "4cf716df68fb2d6a41fe75fac0b41e356bddcf30", @@ -82542,6 +86353,21 @@ "sha256": "14fqkkvjbq2gj737k3yz3s0dkya33fi0dj4wds99zyzss2xp37f8" } }, + { + "ename": "sexp-diff", + "commit": "d29e4d21bf808a74bef27ee00d500ec1f816be74", + "sha256": "0cr35b7k6a5japm14bjgnw93g1kqggzwlqwwr0mhg73klnn6qyn8", + "fetcher": "github", + "repo": "xuchunyang/sexp-diff.el", + "unstable": { + "version": [ + 20200314, + 2018 + ], + "commit": "7e8c988bea2af209e17b70fa51316ade55529acb", + "sha256": "1daz6jss2346a2p30fhc66m230sj7vyxm7jw6zqz5n8h9lqxpjyk" + } + }, { "ename": "sexp-move", "commit": "855ea20024b606314f8590129259747cac0bcc97", @@ -82574,11 +86400,11 @@ "repo": "voloyev/sexy-monochrome-theme", "unstable": { "version": [ - 20180526, - 808 + 20200115, + 2146 ], - "commit": "036bc238e48dd21aae1c34e6971d376582d8281b", - "sha256": "1nfij1wzzs23aqbc7k6cc5a714bkywmmid95c8cj4wh3lwz2bpnh" + "commit": "f3ad07d60c966ef34cb11026eaba053e114bb8f1", + "sha256": "1lq7csb5dgpy9hd6dw1ds5klmp88zqyk9x97hg1llzic6rkkfjrr" }, "stable": { "version": [ @@ -82589,6 +86415,21 @@ "sha256": "17ahrdyk2v7vz13b4934xn8xjza4b7bfrkq8n42frq3pc8mgwqfd" } }, + { + "ename": "sfz-mode", + "commit": "6e61f77045deaf0dd6a344911b73cf5b1a779a52", + "sha256": "1x7873xvqwj1nwp18pj50bp2s9djqbqzp37fr2hjx2rygfvpxzmg", + "fetcher": "github", + "repo": "sfztools/emacs-sfz-mode", + "unstable": { + "version": [ + 20200312, + 1153 + ], + "commit": "4d8ccde889b112896c7299cad9f1e9305bde8cb3", + "sha256": "1ccqb05xmnxpwxl9vdvkb3f8211kbj5rsb73xv1ghyx3i40qjmzm" + } + }, { "ename": "shackle", "commit": "806e7d00f763f3fc4e3b8ebd483070ac6c5d0f21", @@ -82712,6 +86553,21 @@ "sha256": "11g9lsgakq8nf689k49p9l536ffi62g3bh11mh9ix1l058xamqw2" } }, + { + "ename": "share2computer", + "commit": "47647167cc7b9d7ad0a2fc4785849f69dc07d6cb", + "sha256": "067xc1awknx9iqwd4lfj1gkni6aszzfr1179avzzfn1ggp7yzkmq", + "fetcher": "github", + "repo": "tumashu/share2computer", + "unstable": { + "version": [ + 20200316, + 31 + ], + "commit": "15da47625a800e3310b8dc714bd4e41e32966d6a", + "sha256": "04h8vhg0fxabjlqgfqsvxkgsmkcp5qmcinxg46xib386r7rzrx4g" + } + }, { "ename": "shell-command", "commit": "ae489be43b1aee93614e40f492ebdf0b98a3fbc1", @@ -82780,14 +86636,14 @@ "repo": "kyagi/shell-pop-el", "unstable": { "version": [ - 20170304, - 1416 + 20200315, + 1139 ], "deps": [ "cl-lib" ], - "commit": "4a3a9d093ad1add792bba764c601aa28de302b34", - "sha256": "1ybvg048jvijcg9jjfrbllf59pswmp0fd5zwq5x6nwg5wmggplzd" + "commit": "4b4394037940a890a313d715d203d9ead2d156a6", + "sha256": "0s77n6b9iw1x3dv91ybkpgy3zvqd12si7zw3lg0m2b6j1akrawsg" }, "stable": { "version": [ @@ -83003,8 +86859,8 @@ 20190930, 730 ], - "commit": "361297e8539770f2f396d30928ebc01de60ca637", - "sha256": "1cnzi91mm3mg5x25v7vg86d1ri7ka7cvspb5l7ikmdv6cb9978ll" + "commit": "cbb15424431cd5f579b12307b8fa03122d525006", + "sha256": "1wwk5q3viw32pwmf4bjhbywkj0d1prwnldgdjfjzmr3rnvfw7w9h" } }, { @@ -83079,6 +86935,15 @@ 20190924, 621 ], + "commit": "bd0e47d7d61bf04a923a1d1689693a47af3a2b22", + "sha256": "0nq02qf7rxswxqcsl1lv7skd14ixmmyjkhk7wdbn5j3dhw192bh7" + }, + "stable": { + "version": [ + 0, + 0, + 3 + ], "commit": "097a2a79e5bd7c297bcdc231559813056cd584ac", "sha256": "0yhwd20azk6ib992fy3vzb9knqji3g6hz3ahz89sz71sjjvy1rrm" } @@ -83218,14 +87083,14 @@ }, { "ename": "shroud", - "commit": "2e4334a47a173e9cfb1e803d5781317da27702d7", - "sha256": "0s7gap41y2ncnlbj2cc6b2l7q7qc8psxpbznkc71y53ch1mc9isg", - "fetcher": "github", - "repo": "o-nly/emacs-shroud", + "commit": "261a5b2c77288cf38bc309504215fb23c719f09b", + "sha256": "03226c2v76zdscxlbhq32wp5wgpg385phqnxcsibn1apk2rb4s4m", + "fetcher": "git", + "url": "https://git.savannah.nongnu.org/git/emacs-shroud.git", "unstable": { "version": [ - 20190623, - 126 + 20200124, + 1833 ], "deps": [ "bui", @@ -83234,14 +87099,13 @@ "epg", "s" ], - "commit": "1d5e83cfcd549a5f553fb123d3d783ae418f72c7", - "sha256": "1r0dyqmrg0skkmm0h7s0pw8sqblkrarimlgn45flyjcv5kmcfgmm" + "commit": "bf8a854ecd440c525b870f9439f6785700af80d3", + "sha256": "1rfmykbv2jipkb8by9jsx51gdh62spilffj3c49h3rfcllqnbv2g" }, "stable": { "version": [ 1, - 83, - 4 + 105 ], "deps": [ "bui", @@ -83250,8 +87114,8 @@ "epg", "s" ], - "commit": "c7ea92e8694060fa6236074cde79e1021f23edc1", - "sha256": "1yvdjx0kp4y8w5yz2cbqq9n6xl5splvmsyyx8ld1xv0q1c9872nf" + "commit": "f758d497f87afd847126d2e69b2f7ba10a5bbbfa", + "sha256": "0q2pb3w8s833fjhkzicciw2php4lsnismad1dnwgp2lcway757ra" } }, { @@ -83292,20 +87156,20 @@ "repo": "riscy/shx-for-emacs", "unstable": { "version": [ - 20190929, - 331 + 20200308, + 2356 ], - "commit": "42e175378fa78a2a0b7230deea60e29b60a8b312", - "sha256": "04f6ldl81p6pd60i0jspiphdypgkl7qy5qq72dh8hzrw9fcfvf9r" + "commit": "0fec00c1eef75feeae0f71591762ba6a80bc2725", + "sha256": "0zl5lcy80m1pzwl4239lhcf0zb6px5jwbgjib136zh94l5k35wdb" }, "stable": { "version": [ 1, - 2, - 0 + 3, + 1 ], - "commit": "42e175378fa78a2a0b7230deea60e29b60a8b312", - "sha256": "04f6ldl81p6pd60i0jspiphdypgkl7qy5qq72dh8hzrw9fcfvf9r" + "commit": "e90dccf40320ee0df306cab3f94fdb79504698b5", + "sha256": "0g4w5w53pknphxr7i7kwksq1789qi8rk8yk9gp4s788iq1f0i6vr" } }, { @@ -83334,8 +87198,8 @@ 20180823, 1222 ], - "commit": "33acfa10a058aa65b6b22084a5b86a82410d794e", - "sha256": "1l8isy8kicr4xa6iilxj0cf0f5rqmkidzr6pigql74204db56jhd" + "commit": "26bc593aeae01da34ad92363b5bbd6aedab66da2", + "sha256": "0qvgdrzdp92mskqfh0x5garq0zcr8r7n834jlx5ky8q00xvb1a06" } }, { @@ -83346,20 +87210,20 @@ "repo": "rnkn/side-notes", "unstable": { "version": [ - 20190903, - 818 + 20200311, + 547 ], - "commit": "0d23b13938d4443463ee66956bf57e0a459cb166", - "sha256": "1mg0x390nzr844l4zlr4ismkxb9zyy35kg8zjlmy6pcggn7cf82c" + "commit": "f78d7ba1173cf6056a95935add30cd30b7a7d347", + "sha256": "0fv1l3vrm50qbxs0dc1qyy1m3i08w46lh3z6nz8p32va5yjwfjmj" }, "stable": { "version": [ 0, - 2, + 3, 1 ], - "commit": "96c4677ba4dc91c8100c93d3af6f165c21db3e05", - "sha256": "1gway2ljpi1ac0ssy9r11pvy50j6c5y10wfs4bizlqhzdpjfinh2" + "commit": "f78d7ba1173cf6056a95935add30cd30b7a7d347", + "sha256": "0fv1l3vrm50qbxs0dc1qyy1m3i08w46lh3z6nz8p32va5yjwfjmj" } }, { @@ -83404,21 +87268,6 @@ "sha256": "1gzfdk3ks56h8q4xk69aaxkhkg9jhs55iqdicyvq7x9wmjn6b7xw" } }, - { - "ename": "signature", - "commit": "a52b516b7b10bdada2f64499c8f43f85a236f254", - "sha256": "0y5xspcsjap662n1gp882kjripiz90wwbhsq27c0qwl1zcx5rrkj", - "fetcher": "gitlab", - "repo": "pidu/signature", - "unstable": { - "version": [ - 20140730, - 1949 - ], - "commit": "c47df2e1189a84505f9224aa78e87b6c65d13d37", - "sha256": "1g4rr7hpy9r3y4vdpv48xpmy8kqvs4j64kvnhnj2rw2wv1grw78j" - } - }, { "ename": "silkworm-theme", "commit": "9451d247693c3e991f79315868c73808c0a664d4", @@ -83512,14 +87361,14 @@ "repo": "skeeto/emacs-web-server", "unstable": { "version": [ - 20191006, - 1956 + 20191103, + 1446 ], "deps": [ "cl-lib" ], - "commit": "67f2f1e665fa66d7ef3beed8e82f94962bfa4f3b", - "sha256": "0w0psk98qnwnjyispkcahgh7kyp8jz6m6kwy3hwicsbxbiydrivd" + "commit": "22ce66ea43e0eadb9ec1d691a35d9695fc29cee6", + "sha256": "1ghwfrnml8qmfm981xrrqga2ayw36pqv9s2zqaqzl6szzpwnkz8i" }, "stable": { "version": [ @@ -83560,14 +87409,14 @@ "repo": "andreas-roehler/simple-paren", "unstable": { "version": [ - 20190603, - 1836 + 20200120, + 2036 ], "deps": [ "cl-lib" ], - "commit": "2d3304af173b657176a1284abecdad2861820119", - "sha256": "1ac03h5hmx6qhsscq5n1n75wc5s1nnvpghws3sij6j64ksixi3b6" + "commit": "2a4ba8f99f39abf17976db8118e32b80eff0798b", + "sha256": "0897i5ggdivi2knblcbkyv9lpnwgdlr8ql9brd09bkdsbzhsqb6y" } }, { @@ -83612,20 +87461,20 @@ "repo": "rolandwalker/simpleclip", "unstable": { "version": [ - 20181105, - 1636 + 20200210, + 1406 ], - "commit": "2468b08ad829aaf4a90246541978be3974c60ab8", - "sha256": "1pkv4mi0pmi3hwbl3yyzahin5xv4zkd0jw8xh1cdipymndga4iwq" + "commit": "970159c788d38877f55f6fe93fe590642d45fb47", + "sha256": "0divawrww9py1r3yd7v0574lhf186f1d227gsmmal5m9zzi7pk7k" }, "stable": { "version": [ 1, 0, - 8 + 10 ], - "commit": "63b1a5356e6ff839b1dbacdf22a5c7a275ec88e6", - "sha256": "0iic8r0q21gjhj0d1k5nin9abx3789j0a37n96a5sx6rb4ps4f2v" + "commit": "d327abe0522b9b9a26e005eae5ffa4c34ea2ba0a", + "sha256": "1xkv34ibp3zv1b4y2q0i8x7c6vqrqf8r5jzj30nzz4lm5ipvd98r" } }, { @@ -83711,8 +87560,8 @@ "repo": "chrisbarrett/skeletor.el", "unstable": { "version": [ - 20190212, - 339 + 20191129, + 841 ], "deps": [ "cl-lib", @@ -83721,8 +87570,8 @@ "let-alist", "s" ], - "commit": "47c5b761aee8452716c97a69949ac2f675affe13", - "sha256": "12bdgykfh4mwsqdazxjdvha62h3q3v33159ypy91f6x59y01fi0n" + "commit": "eb21383a9c9e7cf7ae2bbb85cb6d4f42aa3cb37f", + "sha256": "1vq4g8kpq9q4zyybw4k4hgvn13avxz653gdfrx4x5wvfqcr91mbx" }, "stable": { "version": [ @@ -83778,15 +87627,15 @@ "repo": "skeeto/skewer-mode", "unstable": { "version": [ - 20180706, - 1807 + 20200304, + 1142 ], "deps": [ "js2-mode", "simple-httpd" ], - "commit": "a381049acc4fa2087615b4b3b26c0865841386bd", - "sha256": "12fsp7mwmjxh5mhshriyxw8mlghzn3gfswf6hkz1hcb0yfd56d53" + "commit": "e5bed351939c92a1f788f78398583c2f83f1bb3c", + "sha256": "07fv33arh77kdfglg6yv28gvryh0z7ddxylhdyr5plvvglpbwi88" }, "stable": { "version": [ @@ -83872,8 +87721,8 @@ "repo": "yuya373/emacs-slack", "unstable": { "version": [ - 20191019, - 1858 + 20200320, + 457 ], "deps": [ "alert", @@ -83883,8 +87732,8 @@ "request", "websocket" ], - "commit": "25df7218ef17c03ddad057a1ba50f99160b71675", - "sha256": "11m951hl6ykk7h028nhvzlc7ywdc93z7n5vpf9w4m73jlgy1kcbr" + "commit": "03345aabe728da3f5238954eaa0ddbce604807d5", + "sha256": "0kyd959a9113vd7d4prgfga7sj6y6n8zrw6nkqxsfkm5sfpv31iv" } }, { @@ -83945,15 +87794,15 @@ "repo": "slime/slime", "unstable": { "version": [ - 20191025, - 1421 + 20200326, + 1453 ], "deps": [ "cl-lib", "macrostep" ], - "commit": "2b9feb2fef764c6713ce433a6318cc412127172d", - "sha256": "0x74ph37s5wbc0xmjllh3z4j2synfl1w36mb2plcvixgj67y59yk" + "commit": "faa0c6a0b7c77f6a2db8d3244f24563106857944", + "sha256": "1dgmakfazz3p6s64qmy03schapxi1010sa8g7p1paqkpawr9d5qp" }, "stable": { "version": [ @@ -83976,15 +87825,15 @@ "repo": "anwyn/slime-company", "unstable": { "version": [ - 20190117, - 1538 + 20200304, + 1107 ], "deps": [ "company", "slime" ], - "commit": "7290cbad711a62f76c28e5638d1a4d77197a358c", - "sha256": "0kslq8kq8dc192bpiaalyqisv3841h3dxy1wxk8hw3nyyww08mgx" + "commit": "e9153e42ec8f2089ea129ce24488dd3b5e0b9e47", + "sha256": "1dz8q9fjiip2xnw64cim0p5adbpc4lbljdiqjc5dq7bhwpff07jl" }, "stable": { "version": [ @@ -84170,11 +88019,11 @@ "repo": "joaotavora/sly", "unstable": { "version": [ - 20191024, - 1500 + 20200314, + 55 ], - "commit": "0e8c0f9ce0612d52086792cc960ccbf0b528a624", - "sha256": "0akffwzca8yiq2nn5fmpblfddi9vlacwlfdmh856wn5hkhqnvr7k" + "commit": "1382bda945ecfb4b177c7d05a36da8fd41e0384c", + "sha256": "1hmdx3nakhpsmg6zr52090pimmy0kpjz2adyi0m1wzh9zdg5cx4x" }, "stable": { "version": [ @@ -84193,14 +88042,15 @@ "repo": "mmgeorge/sly-asdf", "unstable": { "version": [ - 20191021, - 718 + 20200306, + 433 ], "deps": [ + "popup", "sly" ], - "commit": "69123fcebe63bb4d6e40e3dcb187299622401b74", - "sha256": "0f5ycdh02w6b6jkzw6fhsq9brdld78277cjykpy291112fx0ppny" + "commit": "32ce14994e8faee9321605cec36d156b02996c46", + "sha256": "09x8l37wwqw74xc2frwzbfdb1if8rb3szg5akdk3v2qhik4sm3dd" }, "stable": { "version": [ @@ -84223,14 +88073,14 @@ "repo": "joaotavora/sly-hello-world", "unstable": { "version": [ - 20191013, - 2137 + 20200225, + 1755 ], "deps": [ "sly" ], - "commit": "ae8fe0a0ebcce50425a1d411c027db06ddec39ce", - "sha256": "0gimlph6pbq0s313gqa85gzc2x2d9ba4yww91apikd6xl32707bg" + "commit": "d25acc1220a3ce066bd9908251c2f0f88b1781e9", + "sha256": "0par51rbspk2gqfqag24rynzdvv4npdifdy7bjz9n0b0p2ly39kc" } }, { @@ -84241,15 +88091,15 @@ "repo": "joaotavora/sly-macrostep", "unstable": { "version": [ - 20191013, - 2138 + 20191211, + 1630 ], "deps": [ "macrostep", "sly" ], - "commit": "be2d24545092d164be1a91031d8881afd29c9ec0", - "sha256": "0v8m3zkccpqd2l8m9340y672l2mm3mrry8422nva5kfvpcwdayqb" + "commit": "5113e4e926cd752b1d0bcc1508b3ebad5def5fad", + "sha256": "1nxf28gn4f3n0wnv7nb5sgl36fz175y470zs9hig4kq8cp0yal0r" } }, { @@ -84345,11 +88195,11 @@ "repo": "zenitani/elisp", "unstable": { "version": [ - 20190522, - 1125 + 20200322, + 24 ], - "commit": "366a4cdab1ad20105910bc24c4f3e4f8734e4eae", - "sha256": "1kk7ya14p4vpw31rzcgwq0pmay0wm3pg2j70fv5mms9ala1jyhsy" + "commit": "e2a390b9b8518ad62283046400a0fb3e81eb5b79", + "sha256": "1s23r0dr10wjnk0j5gicy1dxvbhvnz3zmbssk431vccbba1jm8yg" } }, { @@ -84375,11 +88225,11 @@ "repo": "malsyned/smart-dash", "unstable": { "version": [ - 20110131, - 316 + 20200104, + 1620 ], - "commit": "f8f23121ecb1b4b153e3561065cd0846d6722638", - "sha256": "069jwi74qh9hy152k19c7avdgb89zym989v92kgghbaaiyinng22" + "commit": "cc540eea7452e15d4ef2b09d8809d88174f509c0", + "sha256": "10xp7nf42v9rz9as3gspjcm3rjy075xza3yqbcppdk1zm59xxljr" } }, { @@ -84500,14 +88350,14 @@ "repo": "daviderestivo/smart-mode-line-atom-one-dark-theme", "unstable": { "version": [ - 20181220, - 1756 + 20200106, + 2016 ], "deps": [ "smart-mode-line" ], - "commit": "79261aeafa89664039201e3d3f405bc8b0a6aa8d", - "sha256": "06x1na621cm7183im2g2gxkvaqm0yfr9b9i0fbz9bwkcmijxrgmw" + "commit": "e281b52b164a477fcdb6a468976e8a1bdde1ca26", + "sha256": "0m4c63anrmbbdaf0chiagzgkcgbi30bhkjx3v7c4i9nk98yz9zkw" } }, { @@ -84679,15 +88529,15 @@ "repo": "Fuco1/smartparens", "unstable": { "version": [ - 20191015, - 1754 + 20200324, + 2147 ], "deps": [ "cl-lib", "dash" ], - "commit": "9738360eb2afb58b4c21815f9d5c793b8125f540", - "sha256": "1msaggijlladdfpza4qqbdr4ylx3lla3dyjzapj0vs1cv4r30ivg" + "commit": "555626a43f9bb1985aa9a0eb675f2b88b29702c8", + "sha256": "0hfywwhzv2dphi7gacp1sdyk47cmajzx5sqrcwxkn7mlwx876nsx" }, "stable": { "version": [ @@ -84806,17 +88656,17 @@ }, { "ename": "smeargle", - "commit": "c5b985b24a23499454dc61bf071073df325de571", - "sha256": "1dy87ah1w21csvrkq5icnx7g7g7nxqkcyggxyazqwwxvh2silibd", + "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b", + "sha256": "04z1prwdd1h91jyf9fnggqp657830657kvbch7m2f2pgmn3czvvs", "fetcher": "github", - "repo": "syohex/emacs-smeargle", + "repo": "emacsorphanage/smeargle", "unstable": { "version": [ - 20161212, - 2358 + 20200323, + 533 ], - "commit": "0665b1ff5109731898bc4a0ca6d939933b804777", - "sha256": "0p0kxmjdr02l9injlyyrnnzqdbb7mirz1xx79c3lw1rgpalf0jnf" + "commit": "a0e9bc2ea694aa2940102e1f4cfd8db8be437931", + "sha256": "05n6vgxw91cxk5ri4mmsxc62jcad0yhjjnn16gk1qhjxjqvrlcis" }, "stable": { "version": [ @@ -84904,6 +88754,24 @@ "sha256": "0hzs8xi7n3bsqwm3nlm3vk8p2p33ydwxpwk9wp3325g03jl921in" } }, + { + "ename": "smog", + "commit": "cc829fc6353e5cd78222eb2c7194eb3b796d2cc9", + "sha256": "0qq7ib8gv006jddhzrdfm702bgwgsk3rdd64v67xi5a39csrsfpw", + "fetcher": "github", + "repo": "zzkt/smog", + "unstable": { + "version": [ + 20200211, + 528 + ], + "deps": [ + "org" + ], + "commit": "0a6374493363d10826a8151d37fc461b08cc9b9a", + "sha256": "0vfhcnlz0p4dsnn7ac0fjqbk6xklanaa6jk0zbqcrlf2ww926v29" + } + }, { "ename": "smooth-scroll", "commit": "4ad6411f76281232848c870e8f4f5bb78e6cf328", @@ -85004,28 +88872,28 @@ "repo": "kyleam/snakemake-mode", "unstable": { "version": [ - 20190912, - 308 + 20200222, + 1710 ], "deps": [ "cl-lib", "magit-popup" ], - "commit": "239b0c812b6963877d64c7051128353f2b9bcb55", - "sha256": "11p5gcpb4j5y1wbz212wi8nc7vznbxd70aafb1891q6bcli10g2c" + "commit": "701f970bfb48d2f7abb241b9f69127ff5b667c76", + "sha256": "0di8wqwj0l2vx29kkpy2h1yxrxgcq51y2lss5lmqp6kmw3avkvi2" }, "stable": { "version": [ 1, - 6, + 7, 0 ], "deps": [ "cl-lib", "magit-popup" ], - "commit": "239b0c812b6963877d64c7051128353f2b9bcb55", - "sha256": "11p5gcpb4j5y1wbz212wi8nc7vznbxd70aafb1891q6bcli10g2c" + "commit": "701f970bfb48d2f7abb241b9f69127ff5b667c76", + "sha256": "0di8wqwj0l2vx29kkpy2h1yxrxgcq51y2lss5lmqp6kmw3avkvi2" } }, { @@ -85252,26 +89120,26 @@ "repo": "hlissner/emacs-solaire-mode", "unstable": { "version": [ - 20190721, - 1046 + 20200120, + 455 ], "deps": [ "cl-lib" ], - "commit": "794245665c3374af74880cbc7b16b4da02ad0411", - "sha256": "0s63fxdznclqz5gy0vqvw50g92dgk452mqwx67akj68yl35apj8c" + "commit": "4ac324ccb0b751be80ce64449553462eafab4f32", + "sha256": "1klyzqrlsgx8q89zx1kn5z6wnpv1dmvbglldpv1y74hxhzi6ryps" }, "stable": { "version": [ 1, - 0, - 9 + 1, + 2 ], "deps": [ "cl-lib" ], - "commit": "fffdcc46f3956f415496342de7e24488b6e751c5", - "sha256": "011m4r7s6i9lgjymh7jgq5jwwrpz4vmpvp3c8d4ix96v5hi04kzg" + "commit": "4ac324ccb0b751be80ce64449553462eafab4f32", + "sha256": "1klyzqrlsgx8q89zx1kn5z6wnpv1dmvbglldpv1y74hxhzi6ryps" } }, { @@ -85282,8 +89150,20 @@ "repo": "bbatsov/solarized-emacs", "unstable": { "version": [ - 20190809, - 1202 + 20200329, + 1048 + ], + "deps": [ + "dash" + ], + "commit": "8cd79c8afd7563a69764c4174098d2b8e7fd0c96", + "sha256": "1x1cbyd7kr1izcbbffq1amxgg1gqfwaa5y4m17ffmdrhal37mdzb" + }, + "stable": { + "version": [ + 1, + 3, + 1 ], "deps": [ "cl-lib", @@ -85291,19 +89171,6 @@ ], "commit": "55cd77b61b6968048c61e13358ba487d217f24c0", "sha256": "15ql8xcixgm7mbs7rsbybwszanqibq057j5b5ds89a31dw7zxf1g" - }, - "stable": { - "version": [ - 1, - 3, - 0 - ], - "deps": [ - "cl-lib", - "dash" - ], - "commit": "c42a932e5c467c1ce12c42276d35bfb8f666e96d", - "sha256": "1m6grd8ym4azxi09ya236vil9ylqalli99p9fafd5zmzq647l840" } }, { @@ -85314,24 +89181,28 @@ "repo": "ethereum/emacs-solidity", "unstable": { "version": [ - 20181117, - 1518 + 20200113, + 1721 ], "deps": [ "flycheck", "solidity-mode" ], - "commit": "47f15b2663a6cf92ae6ebf655841a9509ad79017", - "sha256": "0zhr5fcv8vlkcnya36y9smpgw7ylb0fkx0px8zr0zhr2f9xgjmph" + "commit": "b190993dcb8376e80fb1d9b71f3ed6170bd2a341", + "sha256": "0s5xk38k3mc1d40dszlcgfpn5rvb7nsnnpmgr3c0bwqa4xh6yqrg" }, "stable": { "version": [ 0, 1, - 9 + 10 ], - "commit": "d0ff4dea49540f37301d869f2797fca2492f55d5", - "sha256": "1wcy5z4wggn3zs9h1kyvm0ji51ppjcqdmym3mmxbrhan6a0kq724" + "deps": [ + "flycheck", + "solidity-mode" + ], + "commit": "93412f211fad7dfc3b02aa226856fc52b6a15c22", + "sha256": "06zqs7p22h1jkm3zs1i16wvch6rnzzb3m8d5r9r51clzpasf6zy8" } }, { @@ -85342,20 +89213,40 @@ "repo": "ethereum/emacs-solidity", "unstable": { "version": [ - 20190302, - 909 + 20200124, + 827 ], - "commit": "47f15b2663a6cf92ae6ebf655841a9509ad79017", - "sha256": "0zhr5fcv8vlkcnya36y9smpgw7ylb0fkx0px8zr0zhr2f9xgjmph" + "commit": "b190993dcb8376e80fb1d9b71f3ed6170bd2a341", + "sha256": "0s5xk38k3mc1d40dszlcgfpn5rvb7nsnnpmgr3c0bwqa4xh6yqrg" }, "stable": { "version": [ 0, 1, - 9 + 10 ], - "commit": "d0ff4dea49540f37301d869f2797fca2492f55d5", - "sha256": "1wcy5z4wggn3zs9h1kyvm0ji51ppjcqdmym3mmxbrhan6a0kq724" + "commit": "93412f211fad7dfc3b02aa226856fc52b6a15c22", + "sha256": "06zqs7p22h1jkm3zs1i16wvch6rnzzb3m8d5r9r51clzpasf6zy8" + } + }, + { + "ename": "somafm", + "commit": "6003d09cefb7da19baa39b6c4a96d265844abbce", + "sha256": "1p3ngn8rfbwvgfnpx4x6g5wspicxh9mmvlsrbax6a7whx0y1bg4f", + "fetcher": "github", + "repo": "artenator/somafm.el", + "unstable": { + "version": [ + 20200224, + 48 + ], + "deps": [ + "cl-lib", + "dash", + "request" + ], + "commit": "b143b5c6161e3760f42a7a5405f5f7e97079e09a", + "sha256": "01ak3sr2hp2mmn81j1qdgyvrm9np979fpg2ngbnijnb8ai3gn30f" } }, { @@ -85498,21 +89389,21 @@ }, { "ename": "sound-wav", - "commit": "8333470e3d84d5433be489a23e065c876bed2ab2", - "sha256": "1vrwzk6zqma7r0w5ivbx16shys6hsifj52fwlf5rxs6jg1gqdb4f", + "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b", + "sha256": "1sb3345x6rbbxr71x12fj6bzzvj6nin712777rxk59riam4nknd6", "fetcher": "github", - "repo": "syohex/emacs-sound-wav", + "repo": "emacsorphanage/sound-wav", "unstable": { "version": [ - 20181126, - 1726 + 20200323, + 728 ], "deps": [ "cl-lib", "deferred" ], - "commit": "49a9f10334b914cf6429e49b5449e0711a3aa251", - "sha256": "1zg32gn0r06qcp6i5fxwns8xv5nqpc6hfzqajwj0hfvhkqdndv4j" + "commit": "8a18f8a62f4fdde80dfa069986aa959091a42472", + "sha256": "18iahla8m9b6bdn63x2yrvr3rzyw5ybipf44q9avyy6s1pqsby2a" }, "stable": { "version": [ @@ -85558,8 +89449,8 @@ "repo": "r0man/soundklaus.el", "unstable": { "version": [ - 20160314, - 1231 + 20191220, + 2112 ], "deps": [ "cl-lib", @@ -85569,8 +89460,8 @@ "request", "s" ], - "commit": "09ec030843482594beae2664b8fe1e0ad1e66472", - "sha256": "0w5ac515ymj43p5j19nhfqk0c3251c7x3i97r550g780niby1nc5" + "commit": "15ce6e7f24a45e4f202d83cca9fa3bfdd94ca592", + "sha256": "03c86qxdya306p6150f3vwhlh51q5vsbgqzgcdxhm72raf32gs59" } }, { @@ -85609,17 +89500,17 @@ }, { "ename": "sourcemap", - "commit": "557d18259543263932fccdbaf44c4e7986bd277b", - "sha256": "0cjg90y6a0l59a9v7d7p12pgmr21gwd7x5msil3h6xkm15f0qcc5", + "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b", + "sha256": "1yxjvv3vg14in492hzb3czjfwrg2qp60h4mpxxpx18cjgx8mkybr", "fetcher": "github", - "repo": "syohex/emacs-sourcemap", + "repo": "emacsorphanage/sourcemap", "unstable": { "version": [ - 20161216, - 540 + 20200315, + 1037 ], - "commit": "64c89d296186f48d9135fb8aad501de19f64bceb", - "sha256": "115g2mfpbfywp8xnag4gsb50klfvplqfh928a5mabb5s8v4a3582" + "commit": "bb2a56b2feb62b0c77d7f03ef2acd94f91be6b3f", + "sha256": "1qr5syl2wm7z1gkgafdhch6n7fg3qc09k8dhv983kq4vg5kp36ml" }, "stable": { "version": [ @@ -85689,8 +89580,8 @@ 20150719, 1931 ], - "commit": "7f70ee36297e5ccf9bc90b1f81472024f5a7a749", - "sha256": "1a8jp7m9zarvljg5d9c8ydir3qcmwx05c3frs696p9nwvapf6lsb" + "commit": "9826265c2bceb2ebc1c5e16a45021da0253ace97", + "sha256": "0aplwmm17ypbns5blc4rf5rr6dasj0zp5ibykpfl43fh4bd8z89n" } }, { @@ -85701,8 +89592,8 @@ "repo": "TheBB/spaceline", "unstable": { "version": [ - 20181223, - 2024 + 20191230, + 1221 ], "deps": [ "cl-lib", @@ -85710,8 +89601,8 @@ "powerline", "s" ], - "commit": "ae45a819ea7ae52febb4d7d82170af44dff10f19", - "sha256": "01dyi0s8yilkgs0ifi489004195l4zrm9dqbybip4136l9zmlini" + "commit": "1b26af2c1a701481ac5d90928fe0200e389756c3", + "sha256": "11lwckqcgzsahrkkm5wk1ph4kc7d4yz05r7251g8c9f0q6vdj9dp" }, "stable": { "version": [ @@ -85771,11 +89662,11 @@ "repo": "nashamri/spacemacs-theme", "unstable": { "version": [ - 20190820, - 816 + 20200324, + 1107 ], - "commit": "32ddc1a9b9f4f58ebe8410abc1124b7acf0f36b1", - "sha256": "14bga23rf9zn18fbs8zdhksi2kyxq0s937fbjpl0q91x05b6m61f" + "commit": "f79c40fb241e204539fde97200abae91e828e585", + "sha256": "1l2kkiyrskkpx8f901v0wrzaah1wjg15zdyv88spj3mh3hwd3b6n" } }, { @@ -85903,11 +89794,11 @@ "repo": "brailcom/speechd-el", "unstable": { "version": [ - 20190821, - 1129 + 20200122, + 2036 ], - "commit": "1d4086a64ba554bb8c7d648c8d0e6c176277f6f3", - "sha256": "06sz5yl12mn0mq43bbv3ln14pk176ij8rxs95wi25yxdblznhsg0" + "commit": "590278f2b37919d082f576e522cbb790167a7f8d", + "sha256": "0s2znn91jy342xrcsda6mbf78f19ixxf5lf401jls8l5gj9bnx7f" } }, { @@ -85918,25 +89809,43 @@ "repo": "parkouss/speed-type", "unstable": { "version": [ - 20190526, - 953 + 20191204, + 1107 ], "deps": [ "cl-lib" ], - "commit": "c98f9ebd4abf96db967f9c0dff9ccfa4b7f4035b", - "sha256": "1hjpxr5nb08g5vz7wmlf3zxazvj419528rfwdpkpbmdsjmy67fbf" + "commit": "5ef695f7159aa1f20c7c9e55f0c39bcdacce8d21", + "sha256": "17xh7f1ps6bfs55a08d0jjma2hs117fv4j90w4xif0n2h49m4pjp" }, "stable": { "version": [ 1, - 1 + 2 ], "deps": [ "cl-lib" ], - "commit": "5d691f57743304db63b6afdc5bd79dabd282d390", - "sha256": "08qp2b80rh9k8h5vv141lfsg73rqqikhh7ygal789rr278ai1rjf" + "commit": "5ef695f7159aa1f20c7c9e55f0c39bcdacce8d21", + "sha256": "17xh7f1ps6bfs55a08d0jjma2hs117fv4j90w4xif0n2h49m4pjp" + } + }, + { + "ename": "speedbar-git-respect", + "commit": "f468cf6a61479f15d02368ed8c3f6c94214d72db", + "sha256": "15py09mjkjci00578nlvniw3inr4jdr8sashkv5li5kzl6b30gwk", + "fetcher": "github", + "repo": "ukari/speedbar-git-respect", + "unstable": { + "version": [ + 20191121, + 2120 + ], + "deps": [ + "f" + ], + "commit": "4703650c20cb77f08833747529b55be13d450bae", + "sha256": "0qb2azx3blm8iz0y5f8p5zxkbmx6pjzxwpfzg64qi3741xijv8lw" } }, { @@ -86069,10 +89978,10 @@ }, { "ename": "splitjoin", - "commit": "51e172f46045fbb71b6a13b3521b502339a4a02b", - "sha256": "0l1x98fvvia8qx8g125h4d76slv0xnb3h1zxiq9xb5qh7a1h069l", + "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b", + "sha256": "0g2i1q1npwrczgzp5321lpljff2ykmq932lzj6pdwnn6cyqixzzb", "fetcher": "github", - "repo": "syohex/emacs-splitjoin", + "repo": "emacsorphanage/splitjoin", "unstable": { "version": [ 20150505, @@ -86149,15 +90058,15 @@ "repo": "benmaughan/spotlight.el", "unstable": { "version": [ - 20150929, - 755 + 20200109, + 2137 ], "deps": [ "counsel", "swiper" ], - "commit": "ab902900f22e7d1ea2dd8169441d2da7155aaa68", - "sha256": "05knlca2dvpyqp9lw8dc47fl5kh2jb04q57cygkzfjjkzvywdwq8" + "commit": "ea71f4fd380c51e50c47bb25855af4f40e4d8da0", + "sha256": "1dda4gwxyhnr73ckjr70yjah9dmddvyfcwlrbb6d6bidb70ib0dj" } }, { @@ -86291,17 +90200,17 @@ }, { "ename": "sql-clickhouse", - "commit": "a0ef23e6825924094eb69bd8526a95d8fab210c1", - "sha256": "083i9aaf69yk71mndl5x0pimn3bkkhp3mfppxvy0f5lzf2847q2j", + "commit": "cdd1f8002636bf02c7a3d3d0a075758972eaf228", + "sha256": "1sxh22dl0px81z85dj9r97nj8pnc6g9ah06q1bgf3bii7yl6qdy8", "fetcher": "github", - "repo": "leethargo/sql-clickhouse", + "repo": "rschwarz/sql-clickhouse", "unstable": { "version": [ - 20180302, - 1555 + 20191209, + 1443 ], - "commit": "2edccd94145c55a040a3a87193793f06cf01f64f", - "sha256": "0zajd35i02h869mg6n2pn2fnb80ddny6ss1kap21b75p2gw79lb7" + "commit": "8403a4a5d332dbb6459b7fbce6ea95c36d390a5b", + "sha256": "0c039m67jc2xq9pmn0xmqr07nzdssc4vbk51ng0272kcs9mbslrf" } }, { @@ -86351,6 +90260,21 @@ "sha256": "00whmsylr802fx87yqbr06rbymyln7kq7750pcz26xm1jgja7cax" } }, + { + "ename": "sql-sqlline", + "commit": "0fd21ac42207156f7300f4ab6ac082c801740daf", + "sha256": "1b5jkdajif0yc558nv29y8vimnj6bq52z2m91qj6mplcbgpdrnn6", + "fetcher": "gitlab", + "repo": "matteo.redaelli/sql-sqlline", + "unstable": { + "version": [ + 20191028, + 939 + ], + "commit": "990c79b7ebbf8ecb1e1161c9a942973efd8e2833", + "sha256": "0jl13ymbb0yxvkqipw821wq797izzj5j72vzdc5d30dwdd2wxm83" + } + }, { "ename": "sqlformat", "commit": "6bdaa1ccae12f2ea779ac6989607d8027feac2c9", @@ -86359,14 +90283,14 @@ "repo": "purcell/sqlformat", "unstable": { "version": [ - 20190420, - 2256 + 20200327, + 2329 ], "deps": [ "reformatter" ], - "commit": "f7f46be6f06b83642c312151f3b5276f8830d9d7", - "sha256": "00z60y08likwqfd27ibvzhy62qs29i4d4y4vq3p3slx43rfdgvxs" + "commit": "2f10382034cd5cd2356cc69b4a1e9116d77a0d86", + "sha256": "18z9hljifw63zy4jrsyg4x2lqzgx29sfibx3maj0dm90yzj6zmcg" }, "stable": { "version": [ @@ -86447,11 +90371,11 @@ "repo": "srcery-colors/srcery-emacs", "unstable": { "version": [ - 20190909, - 1149 + 20200313, + 1310 ], - "commit": "0879e2fe1872fe11c3ddfab631987ed64bb5c437", - "sha256": "0mwy50rydy64zcy9g08b952vjd5ij9gwgcsl6ipaq52kjhs7x8l8" + "commit": "465a458e8c1629baa980988d43e441c4fdb92151", + "sha256": "04bncx9y1jqc6pzzl5c7dgdvzq012ymsp6ilkifg19xnz3bdmhm6" }, "stable": { "version": [ @@ -86486,6 +90410,35 @@ "sha256": "0wx8l8gkh8rbf2g149f35gpnmkk45s9x4r844aqw5by4zkvix4rc" } }, + { + "ename": "srfi", + "commit": "ff844713373e376a637625494321c8e8f197b48e", + "sha256": "1ik6gbcv79l1za7vr2llph1kb2ll8snq11szdxd0r8lnls7l33xf", + "fetcher": "github", + "repo": "srfi-explorations/emacs-srfi", + "unstable": { + "version": [ + 20200326, + 752 + ], + "deps": [ + "cl-lib" + ], + "commit": "fa0c9e1fae26780dcce266df8ad8bf5efc971c30", + "sha256": "1azdc14y2jsmqcphk16qbxaj2fc7ajddwjjhc73xbhbn67knk1af" + }, + "stable": { + "version": [ + 0, + 1 + ], + "deps": [ + "cl-lib" + ], + "commit": "c0a1ae75bfb3fdc81bb722dff5f5e2fae3f07024", + "sha256": "1zymgidk09yyjdd23cz7rx2hql8vpmpqn21i07hwcr7032v0kl7k" + } + }, { "ename": "srv", "commit": "6b0b7f22631e7749da484ced9192d8ae5e1be941", @@ -86517,11 +90470,11 @@ "repo": "AdamNiederer/ssass-mode", "unstable": { "version": [ - 20190521, - 249 + 20200211, + 132 ], - "commit": "c2c610abd85fecd171466bf5a9a4943bd62ffda5", - "sha256": "0vbh0nqbc7j2xjksk0xdfsrqfxd64fcqyladgk2v3jw0qply6ydw" + "commit": "96f557887ad97a0066a60c54f92b7234b8407016", + "sha256": "0kfk1dp8mgirbsrcg3klxi005gryqrr3jn2ss9m6vsxldjg69svb" }, "stable": { "version": [ @@ -86543,8 +90496,8 @@ 20120904, 2042 ], - "commit": "c17cf5b43df8ac4662a0580f85898e1f078df0d1", - "sha256": "1rdhdkwdhb727rj53xyxk6i00sjr58a48hfig14m12niy1k739vd" + "commit": "812e27409d01c38d74906a1816640506d6e7e3ef", + "sha256": "1ffwfgi450f95y1j1zp3k9lfwb6h26jzy88ng2bk4x92n53mhpww" } }, { @@ -86555,14 +90508,14 @@ "repo": "magit/ssh-agency", "unstable": { "version": [ - 20191009, - 156 + 20200329, + 1535 ], "deps": [ "dash" ], - "commit": "89ea87dbfa0aa2fe644f7215aa3628c3008852c5", - "sha256": "0mkrn3jildlqyrkbdp31zf24vkzx4ycy49kxqs3vspbbcpanpj7j" + "commit": "67975f7773bfa0140d9dc09bd67df7f5489aa6ea", + "sha256": "0vwa1szfy45xpqqv44kyasjv2x0y2n3v680wlb1v3w2mxwwg8vda" }, "stable": { "version": [ @@ -86584,11 +90537,11 @@ "repo": "jhgorrell/ssh-config-mode-el", "unstable": { "version": [ - 20191001, - 2041 + 20191221, + 1051 ], - "commit": "3d3e9af531003d5456e1a3a3b54147755f070eca", - "sha256": "184j4ap4yfis55r87g9rycj78zy2m6lkadbwvlha45d478n35lqh" + "commit": "e9f009c064f63ca488c89c30ab0d3857a0155f86", + "sha256": "1f6bj718jkdsbj38f75kwvg54kk4fisv7s9dcgh3gjf0n7xalkgc" } }, { @@ -86599,11 +90552,11 @@ "repo": "cjohansson/emacs-ssh-deploy", "unstable": { "version": [ - 20190917, - 530 + 20200306, + 1012 ], - "commit": "93a0e189a06d49b03627c65fe77652bee9f129d4", - "sha256": "1ijmnn3f6ymm04fbp6xmsvc1nrxgcj0k90462ffyl6adbzv4f82a" + "commit": "1bb2f821d4a78d483c147759348a29531486cdc4", + "sha256": "1d79lgl7082fkawl08qlykc7x75whdikk899fv5shbbrwp7hq3l3" }, "stable": { "version": [ @@ -86660,20 +90613,20 @@ "repo": "stan-dev/stan-mode", "unstable": { "version": [ - 20191015, - 2040 + 20200221, + 2025 ], - "commit": "bcfa6f49ee3a0ec8a808f3b80286db192b34f6c7", - "sha256": "1vvyik4yx19qq5jmy3yi1547s06rm2qsdbvdw88m9pqfffp1xllr" + "commit": "599a0440086c660e6823622b35058f6d2d6d9637", + "sha256": "0mm0kpyihpd55hx14smlm0ayz05zw750fihhqhxqc258y8y73m5y" }, "stable": { "version": [ - 9, - 3, + 10, + 1, 0 ], - "commit": "e60fe0caecb8e84d0b8fc160a0cdf8343e33d905", - "sha256": "16wl8r1409v3cjfb91fkv42gf9cbzgcd1cvqpypj3jm3hdmlz9gz" + "commit": "599a0440086c660e6823622b35058f6d2d6d9637", + "sha256": "0mm0kpyihpd55hx14smlm0ayz05zw750fihhqhxqc258y8y73m5y" } }, { @@ -86684,28 +90637,28 @@ "repo": "stan-dev/stan-mode", "unstable": { "version": [ - 20191015, - 2040 + 20200221, + 2025 ], "deps": [ "stan-mode", "yasnippet" ], - "commit": "bcfa6f49ee3a0ec8a808f3b80286db192b34f6c7", - "sha256": "1vvyik4yx19qq5jmy3yi1547s06rm2qsdbvdw88m9pqfffp1xllr" + "commit": "599a0440086c660e6823622b35058f6d2d6d9637", + "sha256": "0mm0kpyihpd55hx14smlm0ayz05zw750fihhqhxqc258y8y73m5y" }, "stable": { "version": [ - 9, - 3, + 10, + 1, 0 ], "deps": [ "stan-mode", "yasnippet" ], - "commit": "e60fe0caecb8e84d0b8fc160a0cdf8343e33d905", - "sha256": "16wl8r1409v3cjfb91fkv42gf9cbzgcd1cvqpypj3jm3hdmlz9gz" + "commit": "599a0440086c660e6823622b35058f6d2d6d9637", + "sha256": "0mm0kpyihpd55hx14smlm0ayz05zw750fihhqhxqc258y8y73m5y" } }, { @@ -86863,16 +90816,16 @@ 20171130, 1559 ], - "commit": "8fc2c5cd1d7d74e59a35699d12907d5d7efac190", - "sha256": "110dgbkqn0x1cw99n6z6llc8547ly7zvp9659d13qhiswbifs8vz" + "commit": "af37d392baa6f2e7445e9f714da743fd10153adf", + "sha256": "0bc34ri3d90fcjsin5nvli3ncqrh8x9iw8rhzdrwsbr9ildmr1ib" }, "stable": { "version": [ 0, - 20 + 22 ], - "commit": "4f2670ed6da97b731a51e57a01cab581d1b9c52e", - "sha256": "17zmxhj5qzhsnaj796szpdsl30v9cfxkvds0vx2hav9f4ix0pl1s" + "commit": "9acc95666619699d4cdf0526305155407081d8de", + "sha256": "0rhdgakd4vc0549m6zjwcmsnvh2i3mbv5laks25wnfmsxr8dwqns" } }, { @@ -86932,14 +90885,14 @@ "repo": "beacoder/stock-tracker", "unstable": { "version": [ - 20190902, - 812 + 20200228, + 542 ], "deps": [ "dash" ], - "commit": "c7455081fa78fd8ffa229dcf0c691f66bf2ece16", - "sha256": "19phvf5xcaiwlxx0s8p9ys6xrw6ljp9qxjik98v2ab6d8f2x123q" + "commit": "32ae436a4cad49fea5038cc3e8eb638a3a83dd6c", + "sha256": "0dmjvgkhd445azs6vrj8lzcfmnm3h4prajr0c416s2ircrzpgnd9" } }, { @@ -87089,6 +91042,30 @@ "sha256": "035ym1c1vzg6hjsnd258z4dkrfc11lj4c0y4gpgybhk54dq3w9dk" } }, + { + "ename": "stripes", + "commit": "f4c7beb05435a70293806b729b6f35c2fc2e8ca4", + "sha256": "0pwkqqyhg6gkpj8qh84ylsvq6wjykkkmmil4igw7mn80gy15zd09", + "fetcher": "gitlab", + "repo": "stepnem/stripes-el", + "unstable": { + "version": [ + 20200322, + 2350 + ], + "commit": "8b0010acb9f92c7ab2fb8396aaf354fccedea7c5", + "sha256": "0q2zw9nvs9c27c7mcj9psqwf1r7p6k86y63d6q38hps22l063c9x" + }, + "stable": { + "version": [ + 0, + 3, + 1 + ], + "commit": "8b0010acb9f92c7ab2fb8396aaf354fccedea7c5", + "sha256": "0q2zw9nvs9c27c7mcj9psqwf1r7p6k86y63d6q38hps22l063c9x" + } + }, { "ename": "stumpwm-mode", "commit": "caaa21f235c4864f6008fb454d0a970a2fd22a86", @@ -87452,14 +91429,14 @@ "repo": "aaronbieber/sunshine.el", "unstable": { "version": [ - 20190905, - 1832 + 20200306, + 1711 ], "deps": [ "cl-lib" ], - "commit": "5e57899b2201dd36ae7242aa13ca82efcded3b7c", - "sha256": "1l7mls11k9v524c2f4d2xk6b8gydl5mgrpjf7vnngwz63mdy263n" + "commit": "88256223539edcfe57017778a997a474c9c022f6", + "sha256": "01kgf0w9lqprkgi0ag5zmgd9s07yj51vdfj7jbz8sws60996x8xx" } }, { @@ -87555,6 +91532,21 @@ "sha256": "0c6xjw1wh94llwh8qkf3bfzx05ksk0lsdrqdfqn3qkjnf3bkbbh2" } }, + { + "ename": "svelte-mode", + "commit": "fc6a992830520750d2e4a9596668ba3d0eefaa11", + "sha256": "0mc9bc8p3a6lkqag72f48xprlrnj077h9mnglq4znxrslm91jr0h", + "fetcher": "github", + "repo": "leafOfTree/svelte-mode", + "unstable": { + "version": [ + 20200327, + 406 + ], + "commit": "17a53e5f8dd45c6bca44659a80a79ca30d161635", + "sha256": "1hrrcg42b1fnf8y0mz3fli6mp7aha7w0rv7nhrsrvhrilnq97wzl" + } + }, { "ename": "svg-mode-line-themes", "commit": "2ca54d78b5e87c3bb582b178e4892af2bf447d1e", @@ -87708,16 +91700,29 @@ "repo": "danielmartin/swift-helpful", "unstable": { "version": [ - 20191013, - 1658 + 20200321, + 10 ], "deps": [ "dash", "lsp-mode", "swift-mode" ], - "commit": "5b5eee7122803ca405bc68b67d967a1757d4404c", - "sha256": "1vz1dd3w978b3k2ix3vjgz8i2xaxqf24qc5cwhar7n1jwjrzgqig" + "commit": "e58f26b8ab9cf0522d52fe9890d39dc9e645577e", + "sha256": "1yx73wgvaf01wi26ahc9cblsk3sj98rgljb19dxc9ab7hjyncd46" + }, + "stable": { + "version": [ + 0, + 2 + ], + "deps": [ + "dash", + "lsp-mode", + "swift-mode" + ], + "commit": "661e6fe419948419da4abf916b193b331b80a3be", + "sha256": "08w9h12y54aj2q6k48p9fglacppb5mlqh18h43n45hd7rcph3j93" } }, { @@ -87728,14 +91733,14 @@ "repo": "swift-emacs/swift-mode", "unstable": { "version": [ - 20191013, - 1451 + 20191130, + 544 ], "deps": [ "seq" ], - "commit": "b260308e922bd0361779f66a2e5bc1ef0aae4d30", - "sha256": "00qabygq71fpnrwrkbgkz5c33b82ni3sxs77nihd00ia2m1524i5" + "commit": "1268425311ab20f1618df4e52cb1b79e28b553df", + "sha256": "1ghm5spzxxdvwn1lk3xci62hiv12x4hzjk5xh9q522a833nl04i4" }, "stable": { "version": [ @@ -87812,14 +91817,14 @@ "repo": "abo-abo/swiper", "unstable": { "version": [ - 20191021, - 1015 + 20200319, + 1334 ], "deps": [ "ivy" ], - "commit": "d2052bab4eecebab84e75b8a10b66f66a8574425", - "sha256": "0kxv03mb00ia48vk05xb6bqhkphjjh2pry6r2f5pyag0wgh5vyma" + "commit": "64f05f4735bba8b708bc12cfc2cbfb7fb7706787", + "sha256": "16b75jw0by1f8divymfygjbp5mikc2bjz4nqd907mdsndf8k6i8q" }, "stable": { "version": [ @@ -87874,11 +91879,11 @@ "repo": "10sr/switch-buffer-functions-el", "unstable": { "version": [ - 20171011, - 1704 + 20200127, + 409 ], - "commit": "b8d8e01e21ae8c8c84234dddeb3cc8250814f7ba", - "sha256": "17bspkj4fxn9albjmj5g3gd5hi6x4d5rmv76qvyv3mdqws9x52j6" + "commit": "95a846baa93bac4c3b3c028b9d53507f1042b23a", + "sha256": "0ykdggzgdlb3dcg1qm388290h612kf5l224kwiv5jvvp8wqzb47l" }, "stable": { "version": [ @@ -87922,16 +91927,29 @@ "repo": "emacsorphanage/swoop", "unstable": { "version": [ - 20160120, - 1715 + 20200321, + 319 ], "deps": [ "async", "ht", "pcre2el" ], - "commit": "a5e475db7a9f5db02ba3d08cd3c1c3594e2e01d7", - "sha256": "10ka6f86n07xlf0z7w35db0mzp2zk4xhr6jd19kjdrn2j0ynlcw5" + "commit": "7f6f20d0f32b76b7ce5b1459afa44c1ab700f8bb", + "sha256": "1d134f3dyh8sa8q8dgmla01wiky61y4jmhqb5whqpb7c2p53niyc" + }, + "stable": { + "version": [ + 1, + 0 + ], + "deps": [ + "async", + "ht", + "pcre2el" + ], + "commit": "de2d29eb45edab802cf8b275aa1c25a24050122e", + "sha256": "1caq17f7s4pdy6jzyxfh5zwqmwkwkbfpgcnj5f09qgmwanjygjya" } }, { @@ -87966,8 +91984,8 @@ "repo": "vermiculus/sx.el", "unstable": { "version": [ - 20190114, - 1523 + 20191229, + 1746 ], "deps": [ "cl-lib", @@ -87975,8 +91993,8 @@ "let-alist", "markdown-mode" ], - "commit": "49358eae36dd4bb5b9207313b30df085e7f25cef", - "sha256": "08x2bli821b47sp1jwgg8k8q292z4ryl052rfna0vkcjqv6l5bav" + "commit": "e9d1093c97507a6d7b4f4710ef65200dae725e5f", + "sha256": "0m90ddwm8j0y6d1ppqhd2gil1107k202blw6mzm5bdambn4nfqkf" }, "stable": { "version": [ @@ -87993,6 +92011,36 @@ "sha256": "02f63k8rzb3bcch6vj6w5c5ncccqg83siqnc8hyi0lhy1bfx240p" } }, + { + "ename": "sxiv", + "commit": "1b3da730053c1f45e67fefb2e9bfce222cc38628", + "sha256": "0jj0bzw365227anvg9zqy78zdfczfvqlac47kjdyziqmj958yhh8", + "fetcher": "gitlab", + "repo": "contrapunctus/sxiv.el", + "unstable": { + "version": [ + 20200326, + 1433 + ], + "deps": [ + "dash" + ], + "commit": "dae46e6f5890f3d97d45eaadf0194b7ff01f6baf", + "sha256": "094kvg0cznddzn5q1clgj9r26h3ygab96rpbr00qn2wnmdb79bhq" + }, + "stable": { + "version": [ + 0, + 3, + 1 + ], + "deps": [ + "dash" + ], + "commit": "dae46e6f5890f3d97d45eaadf0194b7ff01f6baf", + "sha256": "094kvg0cznddzn5q1clgj9r26h3ygab96rpbr00qn2wnmdb79bhq" + } + }, { "ename": "symbol-overlay", "commit": "c2a468ebe1a3e5a35ef40c59a62befbf8960bd7b", @@ -88001,11 +92049,14 @@ "repo": "wolray/symbol-overlay", "unstable": { "version": [ - 20190608, - 442 + 20191224, + 250 ], - "commit": "e40a7c407f24158c45eaa5f54ed41f5e416a51dc", - "sha256": "0ibz3392d3jw1l8006h9kf8s7bg6vl7jc92bmqc031a433009ic7" + "deps": [ + "seq" + ], + "commit": "8096a684c29bae20e1f5a1c7adbe7881680a5c10", + "sha256": "1x7ghzxn5634amvj6r786j8nm25b780pz8h57z7qk40x0s6qk5a7" }, "stable": { "version": [ @@ -88050,8 +92101,8 @@ "repo": "countvajhula/symex.el", "unstable": { "version": [ - 20191010, - 1915 + 20200225, + 1928 ], "deps": [ "cider", @@ -88068,13 +92119,13 @@ "slime", "smartparens" ], - "commit": "955c160af27c585d339dee8dd8eda394b253d3cc", - "sha256": "1h0n9f19g7i0dw2pz7mrq9frfp5vjb9kzxs2cksk4n37h7pam3kl" + "commit": "c8bdd672ec7fc50f72599081b87ef48bcec45c9c", + "sha256": "04s0nacv9qy5a95hsblz2an6ipzxmqi98pz71vyc0nghzp6j24zd" }, "stable": { "version": [ 0, - 3, + 5, 0 ], "deps": [ @@ -88092,8 +92143,8 @@ "slime", "smartparens" ], - "commit": "88d09bdae222ae4ad0e40fbb1a724d63d06af214", - "sha256": "0nd96apnmdi4iv4pcai1bp9s5zrq5nsqqq1k5kdjbpiybhjdzk98" + "commit": "c8bdd672ec7fc50f72599081b87ef48bcec45c9c", + "sha256": "04s0nacv9qy5a95hsblz2an6ipzxmqi98pz71vyc0nghzp6j24zd" } }, { @@ -88208,26 +92259,26 @@ "repo": "hpdeifel/synosaurus", "unstable": { "version": [ - 20190305, - 2206 + 20191125, + 552 ], "deps": [ "cl-lib" ], - "commit": "bc26f5c22b4d08dd09d0852435814977433c9521", - "sha256": "0hpcnslgs5qh3knapw1x7imia3b1yplicpddnzzpxnjsp7psypwh" + "commit": "14d34fc92a77c3a916b4d58400424c44ae99cd81", + "sha256": "1z6ij6yydjym1ds2vshnkaakng0qgix4r7kzndh8jwrisvb5vml3" }, "stable": { "version": [ 0, - 1, + 2, 0 ], "deps": [ "cl-lib" ], - "commit": "56efdc38952b9bd56a445591fcdeb626aede8678", - "sha256": "0hi2jflrlpp7xkbj852vp9hcl8bfmf04jqw1hawxrw4bxdp95jh2" + "commit": "14d34fc92a77c3a916b4d58400424c44ae99cd81", + "sha256": "1z6ij6yydjym1ds2vshnkaakng0qgix4r7kzndh8jwrisvb5vml3" } }, { @@ -88256,14 +92307,14 @@ "repo": "emacs-berlin/syntactic-close", "unstable": { "version": [ - 20190923, - 1030 + 20191119, + 1007 ], "deps": [ "cl-lib" ], - "commit": "a6c2c24453d18a653fe365707692ad354781cba3", - "sha256": "0k3ndhgw2hglkd572zgyaf3znk6pmm8sdn4ma681b4vd7m1j2yw1" + "commit": "5760319d8fdb3672dd0e95880c30e9c4d92ab239", + "sha256": "0rkqflaz0npclnjsy2r6apkjrzlw5zrpa6j87sbjpnnh0jgcsmsq" } }, { @@ -88359,11 +92410,11 @@ "repo": "jabranham/system-packages", "unstable": { "version": [ - 20190614, - 1320 + 20200310, + 1510 ], - "commit": "3ad6d52072f0bd043dced40ba7bd422fd9c00a7b", - "sha256": "0pxkyys2lgn16rhf4mzqlh27vs9aw6g083z2vr2agr7bmbavd2fp" + "commit": "449dcdf4fe22874c9d91ee8d929ebb8a41b1bac6", + "sha256": "105s1kr8xapp93za9z9kq7s0rqccqissavacjfg6cvfx6gqrr8gy" }, "stable": { "version": [ @@ -88406,11 +92457,11 @@ "repo": "holomorph/systemd-mode", "unstable": { "version": [ - 20180629, - 2106 + 20191219, + 2304 ], - "commit": "401d71c2dd24e424216ae5e4275c830f2a9c6b0c", - "sha256": "06b8j64fk711fay0p4ifypvpdv2l2kz80rx1hhm6g9991h0x33bj" + "commit": "51c148e09a129ddf33d95276aa0e89d4ef6f8dd2", + "sha256": "0mikrj91qip5f0sj62c4gamvw7h6wc0yz8cfyzj9h3gxrllkp87k" }, "stable": { "version": [ @@ -88561,11 +92612,11 @@ "repo": "politza/tablist", "unstable": { "version": [ - 20190414, - 643 + 20200227, + 1918 ], - "commit": "8079801527da1f596bc942162026328d7bdf6ad9", - "sha256": "11bm7z4kdxrq6pv93zwrmg729mnvqvhgmna9r2wqx2wyf87vdh00" + "commit": "10a573dc0e66981110507ee8b8b6408be48ce891", + "sha256": "0yzzkn6k8jjjkq5awiyi0li6j4bhynv8ayqa7sp1cqbgg4hd8rd4" }, "stable": { "version": [ @@ -88694,11 +92745,11 @@ "repo": "11111000000/tao-theme-emacs", "unstable": { "version": [ - 20190204, - 1104 + 20200325, + 344 ], - "commit": "c5107fbe7e752f4e58c2d2147ff18a1ebb12937c", - "sha256": "07vvlglmkj87hpxz79s3bl2cjn71vain57fdxs7j9vlr5jkchxwn" + "commit": "34917843cde086943816d8a48977658c663a784e", + "sha256": "1ks4pnwp5fg2vswr93hrli2shfd7rrf3nwqwr1qwmqxhq1600f3x" }, "stable": { "version": [ @@ -88718,11 +92769,11 @@ "repo": "saf-dmitry/taskpaper-mode", "unstable": { "version": [ - 20191009, - 1506 + 20200321, + 2124 ], - "commit": "fa0a5e0c4d36a6f007fc3932f7067fb09ba41de8", - "sha256": "1346r8r3m4kpmh90bgdxz7h1d0l7lna64xn7lh6788yfm8rl6sdj" + "commit": "9ca1afb561433ff6d2e8527e3d8d9152de5912f7", + "sha256": "0a3hlwzq9ckf7jcxq6drrgl1g8hi5ad0f6lgm3nawbsqmrb6r28y" }, "stable": { "version": [ @@ -88760,26 +92811,26 @@ "repo": "phillord/tawny-owl", "unstable": { "version": [ - 20190912, - 1357 + 20191108, + 1346 ], "deps": [ "cider" ], - "commit": "e704c2cb737db5481a6b085d82b1fb81e9b0fbac", - "sha256": "0hn2i7c6msr8i6b6p578qbdikslap41b5adjrmdra591pmia2cqq" + "commit": "6c2631e3fd68e70110aa0cc5b83b7511eab363e2", + "sha256": "1sgnzgy0b61hxkj2fzkgnlrrpgsc5v1prns9hv1za4mv60xs8f15" }, "stable": { "version": [ 2, 0, - 0 + 2 ], "deps": [ "cider" ], - "commit": "d13389f701fc96fdd98b73fd068c6838a1d8ed4e", - "sha256": "0gdbkvb6vk7vhchl29gqqg5paq2hrq9ijxgbbk8qbss7ipmfj4zz" + "commit": "d4ce3b51e97fd7e9f5a650796dee9ba4079f9df0", + "sha256": "1vday9jnmzspnfy3ppladj0z5by4yysfwp1dnqv7n3ayyza5r8w0" } }, { @@ -88846,14 +92897,14 @@ "repo": "Wilfred/tco.el", "unstable": { "version": [ - 20190309, - 55 + 20191129, + 2040 ], "deps": [ "dash" ], - "commit": "482db5313f090b17ed22ccd856f0e141dc75afe6", - "sha256": "1z7xkbrqznk6ni687qqknp8labcyhl8y6576hjfri89fn21385y9" + "commit": "d82478d56568f60b3a82fd010b3ca0bab2ef5dc9", + "sha256": "0lh04mpa1yb3mwasvnnbdzffcig7ndlk13d96a0lavqn49a10fa3" } }, { @@ -88918,26 +92969,26 @@ "repo": "zevlg/telega.el", "unstable": { "version": [ - 20191025, - 1359 + 20200329, + 1557 ], "deps": [ "visual-fill-column" ], - "commit": "699579b11b358af86e1cde5823a0987d40054afd", - "sha256": "1y0q7scjni4jw4pah0v2pwxc07557q59axk3hb6651kvbig7hq4l" + "commit": "0da852c0b72ad3473432f9e846ce1371d7c8cd61", + "sha256": "0n4jvl6c68wkddvsjfyw82rxy5h7ikc6qrjd35h2v864080gmbjp" }, "stable": { "version": [ 0, - 4, - 4 + 6, + 0 ], "deps": [ "visual-fill-column" ], - "commit": "4457087e1e34e7340d3678714807335665d798d8", - "sha256": "0s2a9hwa775qyfad1zikah0vnpn9mbydzf8ipsyabns2hhjzf225" + "commit": "ae09592498ce380e57fbb76725fd4c89ae248864", + "sha256": "0mv6i80958d9crzspzik5xh5g8326115bvg2frgv0dp9p6rm86m3" } }, { @@ -88971,16 +93022,16 @@ "repo": "dbordak/telephone-line", "unstable": { "version": [ - 20190424, - 1934 + 20191120, + 27 ], "deps": [ "cl-generic", "cl-lib", "seq" ], - "commit": "408e05e105e8e521735221f4c98fc358e007df3b", - "sha256": "123fxr4pjm7z3pidrwgcalb99s0vq3d6imkwgla6fyqyyn9wvag2" + "commit": "bfe7b189d708d9cbc69ef2eaf5542108edc4257d", + "sha256": "0dkscbjms2557fzd7gawgsic6gfzypyn973skiyhy0y8zimmr406" }, "stable": { "version": [ @@ -89022,16 +93073,16 @@ "repo": "kostafey/temporary-persistent", "unstable": { "version": [ - 20161210, - 1133 + 20200201, + 1719 ], "deps": [ "dash", "names", "s" ], - "commit": "ac66f3054fc701d53f11ada9d2d9ab18ea481dc0", - "sha256": "15mjcr9gwf1ijppvcxwddnxj84y9idwz7s3lcqr910xb4d3ai8nb" + "commit": "0080879b0257d350aeba1c4d6901613d7dc534de", + "sha256": "1np9xh6gqynp96rby2shh4w40r14vsvpvwaibq0c1wr1ydwggm9i" } }, { @@ -89254,11 +93305,11 @@ "repo": "10sr/term-run-el", "unstable": { "version": [ - 20190529, - 743 + 20200128, + 702 ], - "commit": "fe8bf58814b167f887aaef98a148b8d5d8a11d3f", - "sha256": "0jzk0b07rj5a7va6nc93sjd4zii228gg63v1q49wg0hz2x2yjmfl" + "commit": "0fd135d55fcf864598b1fb8dd880833a1a322910", + "sha256": "1x1qdm5ahd5bxb4xi2i7ha5zqcxa5n0yskiqcz2hdbwpsdiirmlc" }, "stable": { "version": [ @@ -89370,21 +93421,21 @@ "cl-lib", "json" ], - "commit": "9353d89f568a7e8c1e8e4191f764f435a63f0df2", - "sha256": "0bibcdbjyfskwj28dk2krnvslb5pnqv5q1clgnwimpmyd6ijm9bj" + "commit": "a295a80a502771cc07dc061961e0eb85343c2925", + "sha256": "02szncbbvb52kv9mn2clqhzg49knpny1bxsa7wd5l0gwbsqly3dw" }, "stable": { "version": [ 0, 24, - 2 + 3 ], "deps": [ "cl-lib", "json" ], - "commit": "729307d17c08c9f2baf1925a51b7f36d8f035e01", - "sha256": "09ziq6l63418z307bcfnyjcbir9vv93qnaapkk65shi6pyj47z30" + "commit": "0d19800db70a6348c627a69f444b91d21ad89629", + "sha256": "0ydrxxc3lgs8mpg577iw5sfxgyqfbdkrghwxmv8sxf6sawvhx8zv" } }, { @@ -89403,22 +93454,22 @@ "cl-lib", "tern" ], - "commit": "9353d89f568a7e8c1e8e4191f764f435a63f0df2", - "sha256": "0bibcdbjyfskwj28dk2krnvslb5pnqv5q1clgnwimpmyd6ijm9bj" + "commit": "a295a80a502771cc07dc061961e0eb85343c2925", + "sha256": "02szncbbvb52kv9mn2clqhzg49knpny1bxsa7wd5l0gwbsqly3dw" }, "stable": { "version": [ 0, 24, - 2 + 3 ], "deps": [ "auto-complete", "cl-lib", "tern" ], - "commit": "729307d17c08c9f2baf1925a51b7f36d8f035e01", - "sha256": "09ziq6l63418z307bcfnyjcbir9vv93qnaapkk65shi6pyj47z30" + "commit": "0d19800db70a6348c627a69f444b91d21ad89629", + "sha256": "0ydrxxc3lgs8mpg577iw5sfxgyqfbdkrghwxmv8sxf6sawvhx8zv" } }, { @@ -89470,10 +93521,10 @@ }, { "ename": "terraform-mode", - "commit": "93e06adf34bc613edf95feaca64c69a0a2a4b567", - "sha256": "1m3s390mn4pba7zk17xfk045dqr4rrpv5gw63jm18fyqipsi6scn", + "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b", + "sha256": "14bhn86d7xv4nvqdr65pm0nwmzawbnxyxyig5i4k8ax20xh59d67", "fetcher": "github", - "repo": "syohex/emacs-terraform-mode", + "repo": "emacsorphanage/terraform-mode", "unstable": { "version": [ 20170112, @@ -89482,8 +93533,8 @@ "deps": [ "hcl-mode" ], - "commit": "6973d1acaba2835dfdf174f5a5e27de6366002e1", - "sha256": "12ww36g7mz4p4nslajcsdcm8xk6blwjwqjwhyp0n10ym6ssbh820" + "commit": "2967e7bdc05d15617e121052f6e43c61439b9070", + "sha256": "0f8p3ns0xw1p64jm22q4pf0ajmb5vp2ppl4qvgxvyna6cvcmw4k5" }, "stable": { "version": [ @@ -89614,14 +93665,14 @@ "repo": "TobiasZawada/texfrag", "unstable": { "version": [ - 20190606, - 2049 + 20200104, + 41 ], "deps": [ "auctex" ], - "commit": "b3e137ed123cc077d77b056ca3e0f850a451d327", - "sha256": "0jj742sv5gb3zw8jnzlh0w5jlfzk58mdhc14zxhslvxm9hk6ghx8" + "commit": "2a5561b4534a3b78718e2c5fe30550c89341874e", + "sha256": "1i583i2h9f5bsg663yl9xriv1lc5gb5w4ql6b5r9dwv33lg7l6mx" }, "stable": { "version": [ @@ -89785,26 +93836,26 @@ "repo": "myTerminal/theme-looper", "unstable": { "version": [ - 20190501, - 127 + 20200326, + 1651 ], "deps": [ "cl-lib" ], - "commit": "388138a238fbab9b4bc5ada0300c9bc5ef63d3f1", - "sha256": "0gab7ph1d7z0bjflqrj1y1lb4nk4c32bkpi943px0m5s5cjm54jv" + "commit": "7077ca11508c6a00d98d592dee967e92185480ff", + "sha256": "02kiaqlrb677773809sfkajz31p9fsr72k4k0g5297wlibr9ymjr" }, "stable": { "version": [ 2, - 4, + 5, 0 ], "deps": [ "cl-lib" ], - "commit": "388138a238fbab9b4bc5ada0300c9bc5ef63d3f1", - "sha256": "0gab7ph1d7z0bjflqrj1y1lb4nk4c32bkpi943px0m5s5cjm54jv" + "commit": "7077ca11508c6a00d98d592dee967e92185480ff", + "sha256": "02kiaqlrb677773809sfkajz31p9fsr72k4k0g5297wlibr9ymjr" } }, { @@ -89842,10 +93893,10 @@ }, { "ename": "thingopt", - "commit": "1b82d4102fa2c7622e76dae1154aaa8340b7f4b8", - "sha256": "0yvzq1z2nrldr8vhcvxqgzvh4gbrjjwfmprg59p4v5hlxvhxsb1y", + "commit": "7856a62fb86415c88aa72b574895328c93c10a09", + "sha256": "1a91rvpgbil0cvp90zhj7rv9dqi48j2xr10ycyn52ps3ixhlcyl3", "fetcher": "github", - "repo": "m2ym/thingopt-el", + "repo": "emacsorphanage/thingopt", "unstable": { "version": [ 20160520, @@ -89925,21 +93976,21 @@ "repo": "facebook/fbthrift", "unstable": { "version": [ - 20180905, - 1050 + 20200212, + 1903 ], - "commit": "59613a5631665e2819df3c9fac3ec83ab5f9b9ad", - "sha256": "1az6s5q6vcx4gl2xvvz5im7ydhwvxncr764vhm0lc07aywx2z5mp" + "commit": "9889eb8b3a3a773e8f06df327a76e408f9214cd4", + "sha256": "1vhfkfsrnhdzsk1353xl383nsb7x6a01v7r79lxdcrkj5yxppz0d" }, "stable": { "version": [ - 2019, - 10, - 21, + 2020, + 3, + 23, 0 ], - "commit": "a62d2e395a8ff3dac6400d089064966f84c15b52", - "sha256": "19svp3qk6yn3zspv6b8a7j9mfm1y80xfvqyy2jgs0yckl8i03iyn" + "commit": "186d782f02d80c7d8e93be352c2011ed4097c228", + "sha256": "1wj4ng9ymi0hszl3kmdg7rqrff4zk0zipbbn1jcxcii2swrkw12g" } }, { @@ -89989,26 +94040,26 @@ "repo": "tidalcycles/Tidal", "unstable": { "version": [ - 20191018, - 2235 + 20191210, + 1647 ], "deps": [ "haskell-mode" ], - "commit": "47e2072676bc9fb0e95db172f7f0ad6115de4163", - "sha256": "1bixpx0q4f4k1lmxf325qj4lbdsxhf2gali4sqppyqjghg6qda63" + "commit": "5d4bce7a9af5e39e6df0d2577962579e31964b65", + "sha256": "0hnqcfvc8gca98wyzcrjldn9kcxdc4m8aa9cdr1884kp4kf5dmvj" }, "stable": { "version": [ 1, 4, - 4 + 8 ], "deps": [ "haskell-mode" ], - "commit": "47e2072676bc9fb0e95db172f7f0ad6115de4163", - "sha256": "1bixpx0q4f4k1lmxf325qj4lbdsxhf2gali4sqppyqjghg6qda63" + "commit": "b28951be9abee7dc234c318849169bb578db3c49", + "sha256": "0absv56yqrqf3mzgs064q88lh6k28a7knzqrgdmf4100gf32np4j" } }, { @@ -90019,8 +94070,8 @@ "repo": "ananthakumaran/tide", "unstable": { "version": [ - 20191004, - 1231 + 20200327, + 1218 ], "deps": [ "cl-lib", @@ -90029,14 +94080,14 @@ "s", "typescript-mode" ], - "commit": "b8ce1d8c224cf72ccc3491787a1222be63603127", - "sha256": "1q4g8w4p43zbblbwf5fsbk0p2ccy3v5yf139b4ivfkkjy7x8aq9g" + "commit": "3b45610faaab33bc53ae2d44e1e573f19f35a74a", + "sha256": "1507xp8ndhyqvzd5j2qx3y4lpxq52j40srh5mp9784bf1hm9gg2s" }, "stable": { "version": [ 3, - 2, - 3 + 7, + 4 ], "deps": [ "cl-lib", @@ -90045,8 +94096,8 @@ "s", "typescript-mode" ], - "commit": "2d17c051cccd248a980575caf5728f4d5c986b30", - "sha256": "19kjq4kr2j853p5qp1s79zxmrfprli82lsnphbrlp9vbnib28xyd" + "commit": "1878a097fc41ee81c40c155022c8feaaf8bfaa6d", + "sha256": "0ipri5jxx73vrra6dikbv0y2ws96wfi7bjh2v6pshiw3b1x2isav" } }, { @@ -90277,11 +94328,11 @@ "repo": "xuchunyang/tinypng.el", "unstable": { "version": [ - 20190620, - 942 + 20200306, + 911 ], - "commit": "5910738ce129d93789c98f5722d33d1f40d15afc", - "sha256": "1mgq8hspkhq6iz84850s9rq0xkhla28dlvcjj0cip4s3npw5fdan" + "commit": "f7632e073ce13ef5ce30ae5584cb482a8bb9ffff", + "sha256": "1ywhj03j64pp2qmsp2g08xr7pq2qx3i0iwly2hl89hig87va0dpl" } }, { @@ -90325,14 +94376,14 @@ "repo": "kuanyui/tldr.el", "unstable": { "version": [ - 20191006, - 1059 + 20200302, + 1744 ], "deps": [ "request" ], - "commit": "b7f3e3e2171eab5707a42641f4470b69777feaea", - "sha256": "0gy5vjffw0bqvhv0gsc654imvridmc7pg88b3nwlfxkrwzi48vxc" + "commit": "7203d1be3dcbf12131846ffe06601933fa874d74", + "sha256": "1bw6la463l2yfm7rp76ga4makfy4kpxgwi7ni5gxk31w11g26ryk" } }, { @@ -90358,15 +94409,15 @@ "repo": "laishulu/emacs-tmux-pane", "unstable": { "version": [ - 20181210, - 1210 + 20200330, + 456 ], "deps": [ "names", "s" ], - "commit": "5e83ec65a1d38af9b8a389bdf34a78d13437e63d", - "sha256": "1451d51ml36i1pgksjkd4x2y8zjf4in9q8m6gda3b25v57fnkg2i" + "commit": "942270359587d54f4fd6e37e8d35da38373447c5", + "sha256": "1x5b0680vxvjqcj5r3674n7gnp4994js13707pikl362bhv398kw" } }, { @@ -90380,8 +94431,8 @@ 20190902, 1055 ], - "commit": "379b457fcff091d2fa47223ade58f457fd6eed28", - "sha256": "1pbc4ni9sw99r6z9zm1khlyvf1sxy1813ilv73ai7q2619y6njja" + "commit": "5deaec41ed0e5c51715737d7f74c5ae1b3c00387", + "sha256": "041fpryiz9584m0sl31jz6bs86621mr7lk6pyhiml46n60iccfzp" }, "stable": { "version": [ @@ -90401,16 +94452,16 @@ "repo": "abrochard/emacs-todoist", "unstable": { "version": [ - 20191014, - 2033 + 20200227, + 1510 ], "deps": [ "dash", "org", "transient" ], - "commit": "5543b75581a559f29f35f2577a304e0f15f87100", - "sha256": "0w8d53njk81smdk7vm6mxdrrg1310cyxapjbylv2a51d442hrf5g" + "commit": "b1fba9f3600e6cfe129efae304b96a7f6dc66e1a", + "sha256": "0391m19ws4ajqfbbwd1q1z8p1l6ai94xzf2rqg5zdvlnmc06kl76" } }, { @@ -90436,11 +94487,11 @@ "repo": "avillafiorita/todotxt-mode", "unstable": { "version": [ - 20191017, - 1319 + 20200228, + 952 ], - "commit": "ec94ac719e2f879c474d29e21dc84353b20258d7", - "sha256": "0x5syh0gvkqn3d32baf1r8xnqrpyzy5ywa9vwdbcjrkqfnnap8zb" + "commit": "8b616ce1cf3e18a60757450a0acf22996abb9b79", + "sha256": "1frvksra8s004xknlizs5gz5rhy9xbis5r353pzsybmn1bxa40wk" } }, { @@ -90475,8 +94526,8 @@ "deps": [ "cl-lib" ], - "commit": "e9dc7907eb8e9cf9a016bd73e6a96421534a70ae", - "sha256": "0ga1vbkaxjybxr3l5laakxvy9cbf82lrrsjqi67krh7s303az0bl" + "commit": "052881b101d8c2d11c89ae4f1befe7a999de987e", + "sha256": "0k9sjjsqxnrh0cq6m3cd9rk44n0rjbjgqcbfv6fg33a0gpybvryf" } }, { @@ -90587,6 +94638,24 @@ "sha256": "0pwbd5gzmpr6js20438870w605671930291070nhmhswvxfcdvay" } }, + { + "ename": "tongbu", + "commit": "e97578be9aa9bdadc6bdf6c7105242ca9d23bf80", + "sha256": "1gnjvb4w0mgr0swpqqk3hmscypv9bdg9q2ixkp2sv19d45gd4pvb", + "fetcher": "github", + "repo": "xuchunyang/tongbu.el", + "unstable": { + "version": [ + 20200321, + 1817 + ], + "deps": [ + "web-server" + ], + "commit": "cf3b3ee1468c3dcd1721a5e6802821c8f52f34ce", + "sha256": "0s4h711rwkpf1dbqbak4akbm95y8crd0niisx19jmk9lms5kj5n5" + } + }, { "ename": "tornado-template-mode", "commit": "f329baae028fd17618824128f312a49aa0a0807e", @@ -90619,10 +94688,13 @@ "stable": { "version": [ 2, - 0 + 2 ], - "commit": "222d5b155dd544cb158b2f84be8ad304b0c69df1", - "sha256": "164mip0cibs3c8c4khnbzs8f2pmj57ng5q7hspzv7wk8nvc6d39i" + "deps": [ + "duo" + ], + "commit": "2fa2c92bf2c66d87ddcd519277e469f67c6615a9", + "sha256": "1i5n2f6jdr9p5mdq0g5j0kf19b3kirj00n36qc6nww3kzldwc4c1" } }, { @@ -90784,8 +94856,8 @@ 20171210, 2102 ], - "commit": "e4af7143bd32907d0bf922bee53a96399f0376fa", - "sha256": "1ccxin0vp3z8lxcfm9bci06jkwy0nwasdwg95wp9hdnccpr63s38" + "commit": "e5bf5f89741a9c43aa406491e94dd8d58c302fb4", + "sha256": "104l0b9n9ia7zrha20yaxp6c09wg1h5l5a8b988k6mhyj9a1w1aw" }, "stable": { "version": [ @@ -90814,6 +94886,24 @@ "sha256": "1m25l1lyff4h0h4vjrcsziwbf8svqg2llvvgl8i2b4jbh7k7pk5f" } }, + { + "ename": "tramp-auto-auth", + "commit": "0c8a8841cc7d7634f47610aeecc4a63b20f459f9", + "sha256": "033110y1kdkqm21pkzp9izp9ic7239km3xc8wifw4vs22js341jj", + "fetcher": "github", + "repo": "oitofelix/tramp-auto-auth", + "unstable": { + "version": [ + 20191027, + 1419 + ], + "deps": [ + "tramp" + ], + "commit": "f15a12dfab651aff60f4a9d70f868030a12344ac", + "sha256": "09nkjgwppjfgv04q0gv468qihgx4y3p39lpwbd6vbh3wgbccas9k" + } + }, { "ename": "tramp-hdfs", "commit": "4c185553314a2a9fe18907fd9251077777b33538", @@ -90870,27 +94960,20 @@ "repo": "magit/transient", "unstable": { "version": [ - 20191017, - 1115 + 20200226, + 1612 ], - "deps": [ - "dash" - ], - "commit": "ad7f2553088faf633d32b51894de796e01a1cacf", - "sha256": "16ab68jf98hhy061i41271kdgm8mnmvj62j8y9hmjp7wsw3yzxdr" + "commit": "a269614c69ad8b2703e6e5093d0017d6afad6cca", + "sha256": "0w50sh55c04gacx2pp19rvi0fwj9h19c9gzd8dpa82zjiidfxckr" }, "stable": { "version": [ 0, - 1, + 2, 0 ], - "deps": [ - "dash", - "lv" - ], - "commit": "33f538a0bb83c8d4abc8f4c2db0dfbb9b09c4f92", - "sha256": "1hrn4mgag6rkcqzpmn5ysa9rj79dsgmh8vrihjvaikrdyshf9zxc" + "commit": "a269614c69ad8b2703e6e5093d0017d6afad6cca", + "sha256": "0w50sh55c04gacx2pp19rvi0fwj9h19c9gzd8dpa82zjiidfxckr" } }, { @@ -90901,14 +94984,14 @@ "repo": "holomorph/transmission", "unstable": { "version": [ - 20190211, - 246 + 20200321, + 216 ], "deps": [ "let-alist" ], - "commit": "7293beeb8a49cf6822abd16a9f4b9e4bef0a9296", - "sha256": "0pbmxl5654l1y213pq2h65dyrr78jlkybbdwz1dq52km98mpnf3r" + "commit": "05a80e7a90303cd80f67681df2ec8e1bac88c394", + "sha256": "02chl6k9r0mki7iy5rs9xwgd74ypf0c79q9d3p7fw1rc1wqxk9ji" }, "stable": { "version": [ @@ -90931,11 +95014,20 @@ "repo": "emacsorphanage/transpose-frame", "unstable": { "version": [ - 20151126, - 1426 + 20200307, + 2119 ], - "commit": "011f420c3496b69fc22d789f64cb8091834feba7", - "sha256": "1nhbinwv1ld13c0b0lxlvfm9s6bvxcz2vgfccqg45ncg9rx70rsw" + "commit": "12e523d70ff78cc8868097b56120848befab5dbc", + "sha256": "01j4ci0c52r2c31hc9r4p7nsb6s8blmvg50g9n5v5h3afjl1c35v" + }, + "stable": { + "version": [ + 0, + 2, + 0 + ], + "commit": "12e523d70ff78cc8868097b56120848befab5dbc", + "sha256": "01j4ci0c52r2c31hc9r4p7nsb6s8blmvg50g9n5v5h3afjl1c35v" } }, { @@ -90953,6 +95045,30 @@ "sha256": "03wc50vn1kmrgnzzhs06pwpap2p2rx84wwzxw0hawsg1f1l35m2x" } }, + { + "ename": "trashed", + "commit": "0a0609353c8ef01ca5da44b6239e1d4756da3a92", + "sha256": "0vpfga0kp2r9p0b91fm5y1nf15j8c3r4aqf4wsl12yqgy0v08s6f", + "fetcher": "github", + "repo": "shingo256/trashed", + "unstable": { + "version": [ + 20191124, + 1351 + ], + "commit": "cc0243c9a4f01dc889f5c5ced3e311f918fe0750", + "sha256": "0nyipnrjwbmh4mvfv1nwz6ypg8c1j0g9y9kc4cym49q9vy3wy56c" + }, + "stable": { + "version": [ + 1, + 9, + 0 + ], + "commit": "f3e970c139e44fc7d36ad781566fd6b288d691a9", + "sha256": "13grdi12iwlw4fiphdfmvclfpbr6ajlgfbfyi7v41z8k3rxz4ypz" + } + }, { "ename": "travis", "commit": "c064a0dc7922cbe4cff2ae65665c4f10e6dbff27", @@ -91004,16 +95120,52 @@ "sha256": "13bbdhdmqg4x9yghanhr8fsbsxbnypzxdxgicz31sjjm675kpnix" } }, + { + "ename": "treefactor", + "commit": "e3e956cbbaed3af8beeb927a730cb553df1fac21", + "sha256": "1jfsiv2adj0p2b118qmfzxljz523q1xcjq9x60h1a4xymm3kqb0y", + "fetcher": "github", + "repo": "cyberthal/treefactor", + "unstable": { + "version": [ + 20200131, + 621 + ], + "deps": [ + "avy", + "dash", + "f", + "org" + ], + "commit": "273fe37aa4ba0fde084976f1b303ceec789a9f7b", + "sha256": "0bgbjkr81xrf4p9jcvdrb3d1nh6hyvdg6dgzbxsh7s73smal9kwk" + }, + "stable": { + "version": [ + 3, + 2, + 1 + ], + "deps": [ + "avy", + "dash", + "f", + "org" + ], + "commit": "273fe37aa4ba0fde084976f1b303ceec789a9f7b", + "sha256": "0bgbjkr81xrf4p9jcvdrb3d1nh6hyvdg6dgzbxsh7s73smal9kwk" + } + }, { "ename": "treemacs", - "commit": "37cca017cf529a0553ba73bcb824a945ec8b1137", - "sha256": "0is4waygw902vkha4jwav0i05298zhf4d559m91gmsfg1cfrlrr3", + "commit": "8fec46a8717fb5b0eedfba39b4b6001cce1c7145", + "sha256": "1vmqqq830ffqyp0jj9am60b88whvabzimpg12gp6wk86h41qpbqq", "fetcher": "github", "repo": "Alexander-Miller/treemacs", "unstable": { "version": [ - 20191013, - 1020 + 20200328, + 1143 ], "deps": [ "ace-window", @@ -91025,8 +95177,8 @@ "pfuture", "s" ], - "commit": "6fb45a351b6d888fda44d5fc86b330b3ea54338f", - "sha256": "0ks80b9331p81w9sp1dcq2crb0xgdamy6i5hka2slwm01qharg1j" + "commit": "4c1add44cc0c5a710c22788663353c9c24909149", + "sha256": "0zykh36hfn3zldbs08csqysw4ykkaj736jnwzjzsb9rc39nwskid" }, "stable": { "version": [ @@ -91055,15 +95207,15 @@ "repo": "Alexander-Miller/treemacs", "unstable": { "version": [ - 20190927, - 542 + 20200302, + 558 ], "deps": [ "evil", "treemacs" ], - "commit": "6fb45a351b6d888fda44d5fc86b330b3ea54338f", - "sha256": "0ks80b9331p81w9sp1dcq2crb0xgdamy6i5hka2slwm01qharg1j" + "commit": "4c1add44cc0c5a710c22788663353c9c24909149", + "sha256": "0zykh36hfn3zldbs08csqysw4ykkaj736jnwzjzsb9rc39nwskid" }, "stable": { "version": [ @@ -91086,15 +95238,15 @@ "repo": "Alexander-Miller/treemacs", "unstable": { "version": [ - 20190719, - 815 + 20200205, + 548 ], "deps": [ "cl-lib", "treemacs" ], - "commit": "6fb45a351b6d888fda44d5fc86b330b3ea54338f", - "sha256": "0ks80b9331p81w9sp1dcq2crb0xgdamy6i5hka2slwm01qharg1j" + "commit": "4c1add44cc0c5a710c22788663353c9c24909149", + "sha256": "0zykh36hfn3zldbs08csqysw4ykkaj736jnwzjzsb9rc39nwskid" }, "stable": { "version": [ @@ -91117,16 +95269,16 @@ "repo": "Alexander-Miller/treemacs", "unstable": { "version": [ - 20190731, - 540 + 20200302, + 553 ], "deps": [ "magit", "pfuture", "treemacs" ], - "commit": "6fb45a351b6d888fda44d5fc86b330b3ea54338f", - "sha256": "0ks80b9331p81w9sp1dcq2crb0xgdamy6i5hka2slwm01qharg1j" + "commit": "4c1add44cc0c5a710c22788663353c9c24909149", + "sha256": "0zykh36hfn3zldbs08csqysw4ykkaj736jnwzjzsb9rc39nwskid" }, "stable": { "version": [ @@ -91142,6 +95294,26 @@ "sha256": "13gs8g05xj7np3i2q3bbxg6zgdiazzn1spxii4x0cyd4pg83c0i1" } }, + { + "ename": "treemacs-persp", + "commit": "82679a4f04733556adb66bd31e2a56f2923b301c", + "sha256": "1r48rxhzx1qq9lfdp5plqgny8yh43f0qjwp0gr499g405ja2zyas", + "fetcher": "github", + "repo": "Alexander-Miller/treemacs", + "unstable": { + "version": [ + 20200309, + 2057 + ], + "deps": [ + "dash", + "persp-mode", + "treemacs" + ], + "commit": "4c1add44cc0c5a710c22788663353c9c24909149", + "sha256": "0zykh36hfn3zldbs08csqysw4ykkaj736jnwzjzsb9rc39nwskid" + } + }, { "ename": "treemacs-projectile", "commit": "37cca017cf529a0553ba73bcb824a945ec8b1137", @@ -91150,15 +95322,15 @@ "repo": "Alexander-Miller/treemacs", "unstable": { "version": [ - 20190619, - 1516 + 20200114, + 1715 ], "deps": [ "projectile", "treemacs" ], - "commit": "6fb45a351b6d888fda44d5fc86b330b3ea54338f", - "sha256": "0ks80b9331p81w9sp1dcq2crb0xgdamy6i5hka2slwm01qharg1j" + "commit": "4c1add44cc0c5a710c22788663353c9c24909149", + "sha256": "0zykh36hfn3zldbs08csqysw4ykkaj736jnwzjzsb9rc39nwskid" }, "stable": { "version": [ @@ -91181,11 +95353,11 @@ "repo": "volrath/treepy.el", "unstable": { "version": [ - 20180724, - 656 + 20191108, + 2217 ], - "commit": "b40e6b09eb9be45da67b8c9e4990a5a0d7a2a09d", - "sha256": "04zwm6gx9pxfvgfkizx6pvb1ql8pqxjyzqp8flz0432x0gq5nlxk" + "commit": "306f7031d26e4ebfc9ff36614acdc6993f3e23c3", + "sha256": "09k95b846mzak62acyzrmqvc7kwkni14w8d74079kr7lnar9g6zq" }, "stable": { "version": [ @@ -91334,8 +95506,8 @@ "dash", "s" ], - "commit": "540f6a5adab5d881cc5f50835c0a3fe70e74b992", - "sha256": "0hmzc1ppnkkr0lfq5fhzqr6icv6iqz824a6bnns7zr466hhqp3qb" + "commit": "df48734ef046547c1aa0de0f4c07d11964ef1f7f", + "sha256": "0hi0dfcwrr0vxp26v3f6radpmmwxbiz3px3br0cydfi6axikw9xl" }, "stable": { "version": [ @@ -91418,10 +95590,10 @@ }, { "ename": "ttl-mode", - "commit": "d56140a50abeab0953825d3646122d6e6ed19a7c", - "sha256": "1nnn2y0n9rj3a8r85y2vp6qja5rm4drcbnj9q793zzqfjl9akqd4", + "commit": "f91dc8c20b7b8a06cc2ee25b6f376aac3a6ad2c8", + "sha256": "07jryy2dws2q0v3184fzijx68gz65rv83csfwr5llm9ic6xmw5ky", "error": "Not in archive", - "fetcher": "bitbucket", + "fetcher": "github", "repo": "nxg/ttl-mode" }, { @@ -91432,14 +95604,14 @@ "repo": "ocaml/tuareg", "unstable": { "version": [ - 20190805, - 958 + 20191220, + 2314 ], "deps": [ "caml" ], - "commit": "74e7f66f31290f6599fda0067d795e201270be43", - "sha256": "1fgaa3kq3aj6ddkkbag8bcqq67y8xq51cmsp2cvmzsx5lfwv0y3p" + "commit": "c12061eb80c1487a1963af7cdae268d709a70ca9", + "sha256": "0x85yy20caqb24n7qx3h8nw259p6593y5dx43jl5iapy2n9za1gy" }, "stable": { "version": [ @@ -91684,11 +95856,11 @@ "repo": "emacs-typescript/typescript.el", "unstable": { "version": [ - 20191025, - 1425 + 20200312, + 2235 ], - "commit": "f20103a4487a404d11521305db63f550d9eb3fe1", - "sha256": "0w2j1qvykllj6dv8azz9vhaibhygmwhb7nsrglmc0xwnmrrvawsi" + "commit": "102587e458d48ece6335cd708300647f22ec8b8d", + "sha256": "0i3zpg21l5id0sfpxyn496wy83mpr66afx71lrnipsy1fqwd2j5x" }, "stable": { "version": [ @@ -91737,15 +95909,15 @@ "repo": "mrkkrp/typit", "unstable": { "version": [ - 20190713, - 1336 + 20200217, + 2059 ], "deps": [ "f", "mmt" ], - "commit": "2adb0e0df4689b5abaa89a71808ec7993ecfaf9b", - "sha256": "1b4n85dp65naswp6s960l8kvdkd9424f6r2w5n3lxijxb8a5jlbw" + "commit": "231cb7df43253b84323520b8ed70f128d37003af", + "sha256": "1savrxs7xl92ifyxpxkkzv2didr7lb405h0dwz1bs1wldr5fb53f" }, "stable": { "version": [ @@ -91769,11 +95941,11 @@ "repo": "jorgenschaefer/typoel", "unstable": { "version": [ - 20171209, - 1023 + 20200212, + 919 ], - "commit": "9dad93b6f367f02f52c8d9bf15d446d922cec294", - "sha256": "1xaikwl265v67b7hilrhjgwzr6bcha9idnp82f27msqzdfdzxf0f" + "commit": "505b4b1ead337b773863ea54066f867d07735f9e", + "sha256": "0n8xh6bp757fjqa68slphw04kb4g0489g66r6f4n4v8bpbbi3bbl" }, "stable": { "version": [ @@ -91904,6 +96076,24 @@ "sha256": "033v4ck979lhkpwblci5clacfc1xnkq03p5d1m566wff8dp5flwz" } }, + { + "ename": "uml-mode", + "commit": "d2dbf909ca733aef6a3da6c48165aa3d2e9dc186", + "sha256": "0arkq5cymlvnga5fgzjfy5a6i6zpr0g6m66ycmxa04h6qkd73m9i", + "fetcher": "github", + "repo": "ianxm/emacs-uml", + "unstable": { + "version": [ + 20200129, + 1147 + ], + "deps": [ + "seq" + ], + "commit": "4c37ac1c4424b2313cd8f16ba48a98a4cc214200", + "sha256": "145i4srnfvd1vyibri2a1l6p9mbjvkkwlrpi41134pbarqffcnka" + } + }, { "ename": "uncrustify-mode", "commit": "5327aa1a1143c2257e9454663ff140f2371d07e3", @@ -91927,15 +96117,15 @@ "repo": "sviridov/undercover.el", "unstable": { "version": [ - 20180403, - 1452 + 20191122, + 2126 ], "deps": [ "dash", "shut-up" ], - "commit": "3fc54ef92f0b4b7d26d962d6ed29a81d526a3a66", - "sha256": "0iqj1a6nj1ka5ahcy4rrn7k427bs1ifv0v0i7gj79m7isjj15qc4" + "commit": "9f4fbd04cd25c61397a7058bf2bad33c7b669aa4", + "sha256": "13cn2cxspaqa9filclk66963by7khaci4lyrxgmjpdz04rijkh1q" }, "stable": { "version": [ @@ -91959,11 +96149,11 @@ "repo": "marcowahl/underline-with-char", "unstable": { "version": [ - 20190715, - 1627 + 20191128, + 2309 ], - "commit": "82e15447fe5dcb99fcb9fc72128199a9bf6b7be5", - "sha256": "0hr9mha3kyzm8mgqr6pmfwlgvqrdzr1j9cjnr8wwxxl4fzv5m345" + "commit": "36577e72aa4fbfa7f1abad01842359209f543751", + "sha256": "14ybav1f82m2gsxkciwlc0pm01ihqqaqq6arnjqvgxdnw0z6qniq" }, "stable": { "version": [ @@ -91999,6 +96189,36 @@ "sha256": "1g1ldyz42q3i2xlgvhd4s93cvkh0fm8m3l344zjcw8rvqaisyphj" } }, + { + "ename": "undo-fu", + "commit": "0ca16994315f7d5dee9fff76db036e084162dc52", + "sha256": "1b0616zlblsd5405sfh02lxjyq6gl3s9m8vsxbqi6fryr4y750s9", + "fetcher": "gitlab", + "repo": "ideasman42/emacs-undo-fu", + "unstable": { + "version": [ + 20200305, + 28 + ], + "commit": "aae7ec9784e8fab9b33adf25eac25e745653f19f", + "sha256": "02xlfjl9z822qixk9gxwv18n8ykdq793fd0qm9g0qsz0sn57mr8n" + } + }, + { + "ename": "undo-fu-session", + "commit": "f39d9dc5e57554b42eca54ad5399a53947c2c25f", + "sha256": "0k9qxs3igzf7zcg1vd4v9npfiah512w9j2scnm333brmx4jfgvb7", + "fetcher": "gitlab", + "repo": "ideasman42/emacs-undo-fu-session", + "unstable": { + "version": [ + 20200221, + 1152 + ], + "commit": "35d4cf3771d905d647a35df050abfd9015833aad", + "sha256": "0846whh01bzxhl98wlywd11ki6wk2iyzzxvc5gnlj85cdasjrz10" + } + }, { "ename": "undo-propose", "commit": "308eec15ebfd301b34f0d9f019250c9089c4d6e2", @@ -92007,29 +96227,41 @@ "repo": "jackkamm/undo-propose-el", "unstable": { "version": [ - 20191005, - 512 + 20200204, + 1612 ], - "commit": "f80baee566807d733fbacbab08a897bcd62579c3", - "sha256": "00rqz63bhh66q78l646q3w16gydygj8h4d8np0dpbifgzciak90b" + "commit": "20409358ad321fb937152cf93a50a4a775e405d6", + "sha256": "0mc6qldsjh8671kayl6wxmmcb8q0wjcg09qr7ppmsmwzsd9ydn0n" } }, { "ename": "undohist", - "commit": "aebd16ca1ac51d9982eae5437c6084a2a3946b88", - "sha256": "0zzfzh8sf2dkz8h3kidv7zmwz2c2qq9n9qz2mab2lk0y44njzwhn", + "commit": "7856a62fb86415c88aa72b574895328c93c10a09", + "sha256": "0nsf4y5zbyhw965rdshky03n999pz71f4sy1nrp0y99ld1z2mk49", "fetcher": "github", - "repo": "m2ym/undohist-el", + "repo": "emacsorphanage/undohist", "unstable": { "version": [ - 20150315, - 1242 + 20200120, + 1328 ], "deps": [ "cl-lib" ], - "commit": "d2239a5f736724ceb9e3b6bcaa86f4064805cda0", - "sha256": "1c0daw246ky7b1x5b8h55x79pl1pjqk1k348l487bdd8zdj4w9wx" + "commit": "6c905772e6aa9969fd9ca500d2fe93e114130fe6", + "sha256": "0hmx2b20nrxg2lb8vplgrzdh8chgxwlbmjvbq5scddggd302sd56" + }, + "stable": { + "version": [ + 0, + 2, + 1 + ], + "deps": [ + "cl-lib" + ], + "commit": "6c905772e6aa9969fd9ca500d2fe93e114130fe6", + "sha256": "0hmx2b20nrxg2lb8vplgrzdh8chgxwlbmjvbq5scddggd302sd56" } }, { @@ -92040,11 +96272,11 @@ "repo": "purcell/unfill", "unstable": { "version": [ - 20170723, - 146 + 20200304, + 2218 ], - "commit": "e03771f2d1163d04ca75de76fbfbaa2689c6a9aa", - "sha256": "148znb55dbh1hzl9gclg858varx0lwbc5f8d31jladj5yf5pffp1" + "commit": "02c36a04364bcb586477ab79d2b5e0d4e6ae6d47", + "sha256": "0pp9ywxkvvfay2pblbqcknf2c3q5izig552r5zksmxbac1rlsvcm" }, "stable": { "version": [ @@ -92458,25 +96690,25 @@ "repo": "davep/uptimes.el", "unstable": { "version": [ - 20190328, - 856 + 20191121, + 1030 ], "deps": [ "cl-lib" ], - "commit": "1f726d31b502d764a3e3191aaf92ed4855105131", - "sha256": "1ymv5fh0bfjzkkd8vc9f1n8921bx1czbb29s0rw6zy37vkhs6v3s" + "commit": "29ae6585eeed5a00719b2e52f5ae1082087c1778", + "sha256": "0njpgw4is5lbv499jpc9c987yfvr6srhcmvg6wl631kpv0h8q9a9" }, "stable": { "version": [ 3, - 7 + 8 ], "deps": [ "cl-lib" ], - "commit": "1f726d31b502d764a3e3191aaf92ed4855105131", - "sha256": "1ymv5fh0bfjzkkd8vc9f1n8921bx1czbb29s0rw6zy37vkhs6v3s" + "commit": "29ae6585eeed5a00719b2e52f5ae1082087c1778", + "sha256": "0njpgw4is5lbv499jpc9c987yfvr6srhcmvg6wl631kpv0h8q9a9" } }, { @@ -92556,14 +96788,14 @@ "repo": "jwiegley/use-package", "unstable": { "version": [ - 20190716, - 1829 + 20200322, + 2110 ], "deps": [ "bind-key" ], - "commit": "4714d73b61bdb378f6e9e3f3838cae1abbf65ea0", - "sha256": "19m31nh2bd7rrlh53wy1hf6sxcqk4qn4wkm5w1c16314d5w56w5s" + "commit": "c873d5529c9c80cb58222f22873a4f081c307cb2", + "sha256": "0jbq3w9ijsbl5gblhr24b0rh4gyp1xx696g20l438a7sbsk4b531" }, "stable": { "version": [ @@ -92594,8 +96826,8 @@ "key-chord", "use-package" ], - "commit": "4714d73b61bdb378f6e9e3f3838cae1abbf65ea0", - "sha256": "19m31nh2bd7rrlh53wy1hf6sxcqk4qn4wkm5w1c16314d5w56w5s" + "commit": "c873d5529c9c80cb58222f22873a4f081c307cb2", + "sha256": "0jbq3w9ijsbl5gblhr24b0rh4gyp1xx696g20l438a7sbsk4b531" }, "stable": { "version": [ @@ -92656,8 +96888,8 @@ "system-packages", "use-package" ], - "commit": "4714d73b61bdb378f6e9e3f3838cae1abbf65ea0", - "sha256": "19m31nh2bd7rrlh53wy1hf6sxcqk4qn4wkm5w1c16314d5w56w5s" + "commit": "c873d5529c9c80cb58222f22873a4f081c307cb2", + "sha256": "0jbq3w9ijsbl5gblhr24b0rh4gyp1xx696g20l438a7sbsk4b531" }, "stable": { "version": [ @@ -92715,6 +96947,18 @@ "deps": [ "s" ], + "commit": "edfc3f4b50aec2234792c0cc894774e4916ce26a", + "sha256": "0xy522czbxva2dpfbfjqf0xm6wi7cc98pz6ha7glgylsmcvhlvar" + }, + "stable": { + "version": [ + 0, + 0, + 5 + ], + "deps": [ + "s" + ], "commit": "8c7f50a2b6f5bd55cdd92e351371386ff4b6edce", "sha256": "0xg98ngrdlfjcb902qaljwhh9jszkafc2vm1x8627lnw1k7i6b3q" } @@ -92754,17 +96998,17 @@ 20190715, 1836 ], - "commit": "83ee76fc39b6cb394f5fb19063a3a7da09224339", - "sha256": "0z8klqwqmq5i111p4awzvlvirhm1dxp0mbfagwfiwq1wg72v6zdm" + "commit": "30c77ce4d7996822721e97ac8042d5bc0d415584", + "sha256": "03947csh8nzqqa58z2hq5i87kqf7z65f7b19nyvy0can2flznl7q" }, "stable": { "version": [ 2, 4, - 2 + 3 ], - "commit": "83ee76fc39b6cb394f5fb19063a3a7da09224339", - "sha256": "0z8klqwqmq5i111p4awzvlvirhm1dxp0mbfagwfiwq1wg72v6zdm" + "commit": "ba35712f1bd1c489a54088a4fd807f8484c1d98a", + "sha256": "1bl4943qpi3qy152dbdm5glhx19zsiylmn4rcxi8l66g58hikyjp" } }, { @@ -92790,11 +97034,19 @@ "repo": "kanru/uuidgen-el", "unstable": { "version": [ - 20140918, - 2301 + 20200223, + 509 ], - "commit": "7eb96415484c3854a3f383d1a3e10b87ae674e22", - "sha256": "19bf6vpc2b9hfjkjanji96fflvk1lbillasnpwcb6zzyq0cs47bw" + "commit": "f096f35a6e1f27d2bc9e9093cd61dd97bc33f502", + "sha256": "1nzf7cllyvx7kwdzpf0nl3g5a8mn6qgifa60aw68h0sx9a80xp01" + }, + "stable": { + "version": [ + 1, + 0 + ], + "commit": "f096f35a6e1f27d2bc9e9093cd61dd97bc33f502", + "sha256": "1nzf7cllyvx7kwdzpf0nl3g5a8mn6qgifa60aw68h0sx9a80xp01" } }, { @@ -92862,14 +97114,14 @@ "repo": "dougm/vagrant-tramp", "unstable": { "version": [ - 20190816, - 1846 + 20200118, + 2324 ], "deps": [ "dash" ], - "commit": "47c6fdc07722934eacce9f91c47bb1ee7d46b86f", - "sha256": "0a423h6klk0m3vjkds27a3h60xq8n72j15p1izrhgdzf1642w1g1" + "commit": "f67925928dd844b74e4002f433e6f0ebd3aae357", + "sha256": "1s022vcjzm78v1j7z29pda3lk9x93fvks4qw5v9kh2yzsrxdq4h8" } }, { @@ -93022,20 +97274,20 @@ "repo": "muffinmad/emacs-vc-hgcmd", "unstable": { "version": [ - 20191010, - 1129 + 20191223, + 1331 ], - "commit": "0b052a6e38b58a123ab48001473dab1df2eaa4c6", - "sha256": "0jc6vjbb43mvy5p2slgb0z0isavwbinqxiacawqprnw9jn218l92" + "commit": "8fc2e2c33334c9ff6d4c4d20a99d258e6cfdc567", + "sha256": "1bf9swaj49yx59c1yj96q5rj839535wz2d1ihj98an2chd5czjh4" }, "stable": { "version": [ 1, - 8, - 1 + 9, + 4 ], - "commit": "0b052a6e38b58a123ab48001473dab1df2eaa4c6", - "sha256": "0jc6vjbb43mvy5p2slgb0z0isavwbinqxiacawqprnw9jn218l92" + "commit": "8fc2e2c33334c9ff6d4c4d20a99d258e6cfdc567", + "sha256": "1bf9swaj49yx59c1yj96q5rj839535wz2d1ihj98an2chd5czjh4" } }, { @@ -93046,26 +97298,26 @@ "repo": "redguardtoo/vc-msg", "unstable": { "version": [ - 20180605, - 58 + 20191128, + 1010 ], "deps": [ "popup" ], - "commit": "ffd8db482cbd9fb63dace0e5ddcc7207a9c99f5e", - "sha256": "1zq01k50d958prl8aaz8n2sv541lrq3s1dn8vnfal4drn3iffgv9" + "commit": "93794111daa95b809e46e6d961ad5f68eb8f78ed", + "sha256": "11xci11lbw06syz3y6zhrbh7984mj523i5fphrmdqh76iivkphwh" }, "stable": { "version": [ + 1, 0, - 0, - 4 + 3 ], "deps": [ "popup" ], - "commit": "091f3cf15ecb35bb4dc5de1ef7229f78735d9aee", - "sha256": "0s129fzxhrr8pp4h0hkmxapnman67r0bdmbj8ys6r361na7h16hf" + "commit": "76951fccc2cf66916af2ae006dfa758583e2415d", + "sha256": "0zmpc2w02ynm6ck01q5l9kv5flbl5zkgxhxyplqddh37ml31pka0" } }, { @@ -93115,21 +97367,43 @@ "repo": "stepnem/vcsh-el", "unstable": { "version": [ - 20191007, - 1102 + 20200226, + 1339 ], - "commit": "cbb2b387ea035ee4f95455964144d699f573491d", - "sha256": "0apqrhdv0mrv52ws4yyd9q3fd5hrp084nvq5ji9gva8rs2qyki2v" + "commit": "7e376436b8f450a5571e19246136ccf77bbdd4f1", + "sha256": "183pffdiqb7qqmjq31wxl3fpv8qswqgg99gb716rddiyk15ysri7" }, "stable": { "version": [ 0, 4, - 2, + 4 + ], + "commit": "7e376436b8f450a5571e19246136ccf77bbdd4f1", + "sha256": "183pffdiqb7qqmjq31wxl3fpv8qswqgg99gb716rddiyk15ysri7" + } + }, + { + "ename": "vdf-mode", + "commit": "203d755a2c083ecdb75a41ce6d6030315651b16c", + "sha256": "1ja7c0sn25r9fqxlp0c2c74qrblvxrb9akh0gf6f7x2hiqa0mygk", + "fetcher": "github", + "repo": "plapadoo/vdf-mode", + "unstable": { + "version": [ + 20191122, + 823 + ], + "commit": "35f5c3531b256b6578b9878ac2ce1ed79b3c8511", + "sha256": "16650xwq85rp98z4nljd5s7f14fg4rr90nr7ipfshj1i6zvbk229" + }, + "stable": { + "version": [ + 1, 1 ], - "commit": "cbb2b387ea035ee4f95455964144d699f573491d", - "sha256": "0apqrhdv0mrv52ws4yyd9q3fd5hrp084nvq5ji9gva8rs2qyki2v" + "commit": "f474047a35a2779e4ebaf9166f3d54f359cf9f3c", + "sha256": "0r3kb89zsxac98q8g4w0gyji83qnyxlqwcvmd7b9aa8sx8ry1asz" } }, { @@ -93140,14 +97414,14 @@ "repo": "justbur/emacs-vdiff", "unstable": { "version": [ - 20190227, - 303 + 20200214, + 1845 ], "deps": [ "hydra" ], - "commit": "09e15fc932bfd2febe1d4a65780a532394562b07", - "sha256": "1gvqi5l4zs872nn4pmj603aza09d81qad2rgijzv268lif8z34db" + "commit": "c0541ae9c2cb878be9ab3935da058a72155a14fc", + "sha256": "0jqkr92y5xrwlj2aa8nm2s153nbzsy9xf04c2rixizg7xzz5jky8" }, "stable": { "version": [ @@ -93211,8 +97485,8 @@ "org-vcard", "seq" ], - "commit": "255496e6808e7a3da1b0afef873dc4920c2b117f", - "sha256": "0zq2lqj4s3n4japfmjm56yg120l1lk7d0h1jysdp8d4mzdb2m0p0" + "commit": "a9ef32a70a1f14416e3dc5fee478ce138cc011d3", + "sha256": "1r60gp3h7cj34wc5kjvpxzidb01gyqsd04ykmhk7asv91m598vs3" }, "stable": { "version": [ @@ -93337,6 +97611,30 @@ "sha256": "0lzq31zqnk32vfp3kicnvgfr3nkv8amjzxmk9nrz1kwgmq7gvkjk" } }, + { + "ename": "verb", + "commit": "3802b91f39ef7800afd49589d398182cb191b756", + "sha256": "12hskj4d7w43a8mjqqa535p02w778hi7lsxm47mh1xjiimibad3p", + "fetcher": "github", + "repo": "federicotdn/verb", + "unstable": { + "version": [ + 20200326, + 2322 + ], + "commit": "2c4252b2b57f65ebd9fd2c7a7771b4d0354f1d4c", + "sha256": "0g0hi1bhrx8bj0wbxwaimfpvl491sd079551199hcyhq607pcpp2" + }, + "stable": { + "version": [ + 2, + 9, + 0 + ], + "commit": "2c4252b2b57f65ebd9fd2c7a7771b4d0354f1d4c", + "sha256": "0g0hi1bhrx8bj0wbxwaimfpvl491sd079551199hcyhq607pcpp2" + } + }, { "ename": "veri-kompass", "commit": "18c3a69bec780e3e7456b310db6f0eec2a35c753", @@ -93345,15 +97643,15 @@ "repo": "koral/veri-kompass", "unstable": { "version": [ - 20181110, - 933 + 20200213, + 934 ], "deps": [ "cl-lib", "org" ], - "commit": "8638eea5a14f9834c001c943e7c22d8d90abc455", - "sha256": "1iy1qdh7bf3g7j3ipnpw96qgw4f4y4x8l2rg2kz651lhail3dk8i" + "commit": "271903cdf92db05898ee7cffb65641f30fa08280", + "sha256": "0ag2975bwj6l6wzd03min8dj5cy1429fzm3z2p2807i4j7fd7bkr" } }, { @@ -93374,6 +97672,30 @@ "sha256": "1y6vjw5qzaxr37spg5d4nxffmhiipzsrd7mvh8bs3jcfrsg3080n" } }, + { + "ename": "versuri", + "commit": "056daa8d5563dd6ffb9c93630f9b357f73c1e58a", + "sha256": "0nidgn9gdrrvqzbfjwvhs9bycbj3l9jbcablnbs2yxf903zlgn9b", + "fetcher": "github", + "repo": "mihaiolteanu/versuri", + "unstable": { + "version": [ + 20200316, + 852 + ], + "deps": [ + "anaphora", + "dash", + "esqlite", + "esxml", + "ivy", + "request", + "s" + ], + "commit": "41e20583d1080beeeda0e36d1b2e6d74b9c57920", + "sha256": "0fgc1rai9gp6lwl0rxr9400vi420py0c0b8nv9wzl12ph80yhwj7" + } + }, { "ename": "vertica", "commit": "f98a06b794ef0936db953f63679a63232295a849", @@ -93400,14 +97722,14 @@ "repo": "baron42bba/vertica-snippets", "unstable": { "version": [ - 20191007, - 1546 + 20191213, + 1109 ], "deps": [ "yasnippet" ], - "commit": "5750f359de2956f853b131c46cf56726a5a5dfd3", - "sha256": "0yhcv006lrd2c8a3q3iganp7zdlacdafjzg97q3q48ihb864bx7p" + "commit": "2d1c45c63392ed869625bd062c19422600c9f555", + "sha256": "1gn57jfmma5h90m3b7l698rncmbygd2dbp48vvx1d1z9ks2rm8gg" } }, { @@ -93462,16 +97784,16 @@ "repo": "csantosb/vhdl-tools", "unstable": { "version": [ - 20190929, - 1532 + 20200128, + 957 ], "deps": [ "ggtags", "helm-rg", "outshine" ], - "commit": "9cf9ae509afb79c5579f645907387b8253db167a", - "sha256": "0s1pw0a6ykny4r4wvq7867aqkx5rkvlbh3s8jxd8ycpjz9j419dj" + "commit": "3dbfe8160e22053f0a9bee70ba6f8e1e3967bc46", + "sha256": "1pr7skldslq35ry17yyslfrl2d84msxyh0q77a3djv7ssqlpd270" }, "stable": { "version": [ @@ -93577,6 +97899,30 @@ "sha256": "1750gx65ymibam8ahx5blfv5jc26f3mzbklk1jrmfwpsalyghdd9" } }, + { + "ename": "vimgolf", + "commit": "1de0a1cdc8fd33601ecca982fa9aa66f4400843b", + "sha256": "15xq5vm82hy4pjw04m7xcqav7azsb3c65lp8cfxa29z7xg81w62f", + "fetcher": "github", + "repo": "timvisher/vimgolf.el", + "unstable": { + "version": [ + 20200205, + 1420 + ], + "commit": "f565447ed294898588a19438d56c116555d8c628", + "sha256": "0vyxqs575xfvk9vdwwx5vd9fmcjj1hl2139yw31902dd9lrf55ag" + }, + "stable": { + "version": [ + 0, + 10, + 3 + ], + "commit": "78e91f810a1b49d68ef19565e1c6513c84855e1e", + "sha256": "1picdbrkpd694aqmsjcs1v7fh6s6l8bb6j89bicss9gxn65p6bs8" + } + }, { "ename": "vimish-fold", "commit": "b4862b0a3d43f073e645803cbbf11d973a4b51d5", @@ -93585,15 +97931,15 @@ "repo": "mrkkrp/vimish-fold", "unstable": { "version": [ - 20190713, - 1333 + 20200329, + 1242 ], "deps": [ "cl-lib", "f" ], - "commit": "863bef039672693566cfcfe1d0ad236d3af48fea", - "sha256": "0kr4rzfmydqcxsgzg88c3b8g5323dliirx1v01gdbinf868hlkh7" + "commit": "63685239655a151181b9152e45478dad587f86f2", + "sha256": "1l6zca08diq3ppmg1pllihbfj0pcaqvbnisryr92mvbblhk44wxs" }, "stable": { "version": [ @@ -93624,6 +97970,25 @@ "sha256": "0026dqs3hwygk2k2xfra90w5sfnxrfj7l69jz7sq5glavbf340pk" } }, + { + "ename": "virtual-auto-fill", + "commit": "a77a66240098fe2e6a4a8097ca9d0f85f3c2b9af", + "sha256": "14832wgn6kl122v3lddcnshgl6rk80cpm6xmmxcqcimhiybb9vcx", + "fetcher": "github", + "repo": "luisgerhorst/virtual-auto-fill", + "unstable": { + "version": [ + 20200217, + 2333 + ], + "deps": [ + "adaptive-wrap", + "visual-fill-column" + ], + "commit": "91fb699ead3f86663e56b48a10adeb5723ca7b84", + "sha256": "0rfrgjflgn0c9xj7f4fwdzyclp2p9fbfir19iwy77z7jnkjk78dv" + } + }, { "ename": "virtualenv", "commit": "923e4fcf29423ad55b13132d53759bc436466ef9", @@ -93717,11 +98082,11 @@ "repo": "joostkremers/visual-fill-column", "unstable": { "version": [ - 20190422, - 2154 + 20200303, + 2318 ], - "commit": "772d4b25ba19f57409cd03524be0f5bfdc2e8da1", - "sha256": "1k4a7nqc2zxwxrcrryap2jk6bwc6ln3j6yzgkg5yyf2imsbil4br" + "commit": "a19fbe8bcfab678516ffcaa84b516527a0ce45cf", + "sha256": "157f8d302vv7ds03y21j4rz5jvqbkm4639ak25zfhshd5lyacxyj" }, "stable": { "version": [ @@ -93792,6 +98157,21 @@ "sha256": "1isqa4ck6pm4ykcrkr0g1qj8664jkpcsrq0f8dlb0sksns2dqkwj" } }, + { + "ename": "vlc", + "commit": "bcb69969893a3f70fe9e7e3b2a836df3ba212fb8", + "sha256": "1pf3ry205pl4369hbpvcc1xlicf16ws4dc018mk6c1m4fi9qc3lk", + "fetcher": "github", + "repo": "xuchunyang/vlc.el", + "unstable": { + "version": [ + 20200328, + 1143 + ], + "commit": "932840f874e7510ee86e796bb5dc20d44514e31a", + "sha256": "0vqsdvaqi8ih98ic9hdwwwwcs4v0yjz3nrwwwkwh2a99l9a59j5g" + } + }, { "ename": "vlf", "commit": "9116b11eb513dd9e1dc9542d274dd60f183b24c4", @@ -93800,11 +98180,11 @@ "repo": "m00natic/vlfi", "unstable": { "version": [ - 20180201, - 2254 + 20191126, + 2250 ], - "commit": "31b292dc85a374fb343789e217015683bfbdf5f1", - "sha256": "18ll47if9ajv0jj2aps8592bj7xqhxy74sbsqn07x9ywinxxi9mn" + "commit": "cc02f2533782d6b9b628cec7e2dcf25b2d05a27c", + "sha256": "00wqq9x3p4iwgsga3wvlr8c7iifvh3b0j41sahccdx6hqh4a0pzp" }, "stable": { "version": [ @@ -93896,6 +98276,67 @@ "sha256": "0ymibjq6iwab5ia1fglhz4gm5cnbi792018fmrabcqkisj2zsjb7" } }, + { + "ename": "vs-dark-theme", + "commit": "60b9b00d18334f2d7b737e3cc6b3c733e1b163e4", + "sha256": "0didkb2zd9ac7h1ccwi9y1q5mcqpwxyws7nsk5g8rhrkygdf9lds", + "fetcher": "github", + "repo": "jcs-elpa/vs-dark-theme", + "unstable": { + "version": [ + 20191209, + 1600 + ], + "commit": "d1f954a3879ec3f93c8dea9177772bf4d5bd0ecb", + "sha256": "13kfwp129wrlbbpvl9n4h7ybnycph68x214dx5v6v7ap6gnv0lr6" + }, + "stable": { + "version": [ + 0, + 1 + ], + "commit": "c3c6b0be8bd525079b341490afc8875941b8af79", + "sha256": "0w4gygxdfbb7gp92f59p9qvw725l70sy2baf4h6rifrf92af55f2" + } + }, + { + "ename": "vs-light-theme", + "commit": "c997456be95ece85fdef87905e9e14fe308fd827", + "sha256": "02w5zyxf34r1lvk56s3xbkzpvinbwsyv1h685hg9vhn0yy0a23ns", + "fetcher": "github", + "repo": "jcs-elpa/vs-light-theme", + "unstable": { + "version": [ + 20191209, + 1600 + ], + "commit": "764f478f5866140b121b1e43857487b7a66afa72", + "sha256": "0s8fh7n8qhsfdk8l7r81ifscaazgmpls4n3pginaqb5cszdy4063" + }, + "stable": { + "version": [ + 0, + 1 + ], + "commit": "8b34cbe6294ad02676970bd72c9efbcc09981f3f", + "sha256": "0sw8k737ra2qhakxyf83lz41a5sv0dzw5xssnvyiyrarh73n5pp0" + } + }, + { + "ename": "vscdark-theme", + "commit": "8f3accf76fcd91e1507b9e8ac8577d3af5ae0b88", + "sha256": "13d3g6bjnry7964pnphl0i205vn9gvl7glydzj5wv82s7yav752w", + "fetcher": "github", + "repo": "abelikoff/vscdark-theme", + "unstable": { + "version": [ + 20191212, + 107 + ], + "commit": "8eba74059e8a9db974e4056ee024e52fe54da485", + "sha256": "01p5ys23m4zk5hniri55bcn8j7v6pd6ryi41qx20w29mramwzxl9" + } + }, { "ename": "vscode-icon", "commit": "90a07c96a9223a9ad477cbea895ba522523c5be4", @@ -93904,11 +98345,11 @@ "repo": "jojojames/vscode-icon-emacs", "unstable": { "version": [ - 20190610, - 17 + 20191102, + 2010 ], - "commit": "14199fd1dbe0ca1da85f9917faee9fe078cb75ea", - "sha256": "13yjjg68a55sbk6hj4nfvka6w8ahpws0s2bf7c9idqrd6cvbfy62" + "commit": "4304e9f0a47406048129dc62171f08b67325a2ed", + "sha256": "0dpmw1kg9ivrn92vis7bxs8nlb1ixk72fhd4s4f5c21k0j4s12rd" } }, { @@ -93919,11 +98360,11 @@ "repo": "akermu/emacs-libvterm", "unstable": { "version": [ - 20191025, - 1349 + 20200327, + 1447 ], - "commit": "57134b682dc58308d9edf353decc952f49814594", - "sha256": "147p1cvfh8qmrybrzb4f45x93m6wsgfqjvf34f44n6ca80s7y0y3" + "commit": "996c535b9cc6aa70c3595413582d97abfab16edd", + "sha256": "0f84376rc9gm54llfln1528p82svczfrz9p48d1vh9pmf5ba09vw" } }, { @@ -93934,14 +98375,14 @@ "repo": "jixiuf/vterm-toggle", "unstable": { "version": [ - 20190816, - 633 + 20200228, + 628 ], "deps": [ "vterm" ], - "commit": "ecb5a44650515ea554ead078dcf824888e8c234b", - "sha256": "0jsf7sac45zc43linajmzkqv4lsxyf5m6zvhq01skpvb5y3hl881" + "commit": "24d68a0ab920875d0834598688128e692fe9a5b2", + "sha256": "0bzxd5xzpajvg7mv7ggplcba7plchhlrl1m14dnx3nrx6q0936cr" } }, { @@ -94002,6 +98443,28 @@ "sha256": "014vx8jkscj1c614v78dqlqlg7n0zc3c2db3dqvxvaz417i5mxq0" } }, + { + "ename": "vuiet", + "commit": "4f63056cf2f637fcb3426851501eeff5e6f40bb3", + "sha256": "0hf99rgzhi66in3lr0pl3g8g56l00zcvz1qgclfsbw1yb9ig626y", + "fetcher": "github", + "repo": "mihaiolteanu/vuiet", + "unstable": { + "version": [ + 20200326, + 1738 + ], + "deps": [ + "bind-key", + "lastfm", + "mpv", + "s", + "versuri" + ], + "commit": "c917155a0c72d9fceb9f7c39efcc97320f9e9028", + "sha256": "14djavnczks11lvmldwf0j8nnj4jd0jmz30l6r4hv12f3zjwyk7a" + } + }, { "ename": "vyper-mode", "commit": "492d42d60bc188a567c5e438b838a275a124c699", @@ -94047,11 +98510,11 @@ "repo": "emacs-w3m/emacs-w3m", "unstable": { "version": [ - 20191002, - 427 + 20200325, + 2226 ], - "commit": "361297e8539770f2f396d30928ebc01de60ca637", - "sha256": "1cnzi91mm3mg5x25v7vg86d1ri7ka7cvspb5l7ikmdv6cb9978ll" + "commit": "cbb15424431cd5f579b12307b8fa03122d525006", + "sha256": "1wwk5q3viw32pwmf4bjhbywkj0d1prwnldgdjfjzmr3rnvfw7w9h" } }, { @@ -94139,11 +98602,11 @@ "repo": "darkstego/wakib-keys", "unstable": { "version": [ - 20190910, - 1011 + 20200326, + 2329 ], - "commit": "23237fc2c255de798b8d3fc2cb68c7c22b53caa9", - "sha256": "1s5n2gcldwj5srjn44pigd788x0hv4c7lz75krqyz1hysriydv9p" + "commit": "7564b39aaa2b38ccca0a21bc72a797f065a0b171", + "sha256": "132jwf1d54ykbvw4f9f7i27ig5hpc6wsmm1ib44m5hx1kv1kxvh6" } }, { @@ -94165,6 +98628,40 @@ "sha256": "0bgvniw3ibcjsmzwrndg6pxwbpnpnxsb8ijs2gxg5kbm1hqqly32" } }, + { + "ename": "walkman", + "commit": "603a2bf865eb16505504cf20ab1ecfd619cce6dc", + "sha256": "1hr5c95pv30l18f0kv0sgn5h46x8989lg4n0kg7bd1kb7k6hc8n1", + "fetcher": "github", + "repo": "abrochard/walkman", + "unstable": { + "version": [ + 20200319, + 1739 + ], + "deps": [ + "org", + "transient" + ], + "commit": "da90c9dcd501c1bb88c6bde055911c34bf4202a7", + "sha256": "04gzb1v6wva24xbl8r8rr1ys2zmz03ccl0517d3pkgbd9v1wha2f" + } + }, + { + "ename": "wallpaper", + "commit": "764c5b8438197d6f24113e7b3a696b8327a8d6d9", + "sha256": "18wpj5qzac0msp9mi8511kpw6157k7dj9zvzh1y6rhd7a5nd0clg", + "fetcher": "github", + "repo": "farlado/emacs-wallpaper", + "unstable": { + "version": [ + 20200321, + 1220 + ], + "commit": "762354e958dbe298de06d119493d1aee8ffd0112", + "sha256": "1vcpfamawaja9q2n5qqkfn1bn2psi3ymcniw9g66k3whkqsh0kji" + } + }, { "ename": "wand", "commit": "38be840bbb32094b753ec169b717a70817006655", @@ -94173,15 +98670,15 @@ "repo": "cmpitg/wand", "unstable": { "version": [ - 20190626, - 1533 + 20200302, + 1536 ], "deps": [ "dash", "s" ], - "commit": "0d5f6ac7515b8be134868543d97ba715b5a4ae66", - "sha256": "1hzq3gfr3m4g8gwcqijxb0jg2gzm336pxda38kf45274d3ncgvxy" + "commit": "731b5ca33269fe563239bff16da6c41489432b80", + "sha256": "0r5mbslwf3x0mrndz65w4pp88xii019zg5p6x214zxpr87s75zdp" } }, { @@ -94224,14 +98721,14 @@ "repo": "wanderlust/wanderlust", "unstable": { "version": [ - 20190919, - 859 + 20200124, + 858 ], "deps": [ "semi" ], - "commit": "7a919e422a48f5021576e68282703de430558879", - "sha256": "0k2jklkpqm33bimxy4vnssdc9xa7wfnvay3ng0av1bwxfgxfrmdr" + "commit": "7af0d582cd48a37469e0606ea35887740d78c8b5", + "sha256": "08gr4q5i4z1bs5qbfxmf9imjin1v1qvsk7x37qvr84p16kdr9vxn" } }, { @@ -94310,19 +98807,19 @@ "repo": "bnbeckwith/wc-mode", "unstable": { "version": [ - 20170127, - 429 + 20200108, + 1841 ], - "commit": "f218f42709a651b34d6c1ddd98856f44648ef707", - "sha256": "0h79kf37pns92w4zsgazwhg087vkjvnhk9p1npll5ka87zbknndm" + "commit": "79107d1130e8be3e1db4619373b98045b4fd9033", + "sha256": "01icd63mb2hg1bgbmkq3jm8kc3ic8whfy2awcgx53zqkmyz87qxc" }, "stable": { "version": [ 1, - 3 + 4 ], - "commit": "122f90bd1d422a84cc50acabd350d44d39ddeb69", - "sha256": "0pjlxv46zzqdq6q131jb306vqlg4sfqls1x8vag7mmfw462hafqp" + "commit": "79107d1130e8be3e1db4619373b98045b4fd9033", + "sha256": "01icd63mb2hg1bgbmkq3jm8kc3ic8whfy2awcgx53zqkmyz87qxc" } }, { @@ -94364,6 +98861,29 @@ "sha256": "0j7sv3dcpq2fvcip9834v6k8q1d8bpnbxnvz1g691lmc58z1a86a" } }, + { + "ename": "weak-ref", + "commit": "ef1a6048d197a4feebb8d4ebb6dbfd600bce100e", + "sha256": "08c887xkj18j9s92pqlik7x6984y2fi4q7xlqa6wrbmjgl27cl1z", + "fetcher": "github", + "repo": "skeeto/elisp-weak-ref", + "unstable": { + "version": [ + 20200217, + 2200 + ], + "commit": "24e8c37da6465e65ce9f866267bd3fa53c8899c6", + "sha256": "0jh3l64sagvm3jdhxk8wwfddckwgk66w1cfn7cchklz0wss82cs2" + }, + "stable": { + "version": [ + 2, + 0 + ], + "commit": "434e7d7cc84d0813bd06606a04c08fc96cd9eec8", + "sha256": "1rri4q600vs3fhvvyds6jshjranfvb1zzn6zwy44q5g914ghhnfw" + } + }, { "ename": "weather-metno", "commit": "75beac314565b9becb701ddd9bc85660e268c3ae", @@ -94468,11 +98988,11 @@ "repo": "fxbois/web-mode", "unstable": { "version": [ - 20190916, - 1858 + 20200301, + 1948 ], - "commit": "a31eb8592f09d789c4b08ccecfdaca6fd2f06a69", - "sha256": "1552wq8v4d0pj00kyhc05a4wq0p639r5yxa0rf6y3n4vy94190ql" + "commit": "b0bb4ab82ba64b6fa789212f03ad808bdaf77d68", + "sha256": "0v79xm0w8fr342jp27jlkph3av3kbzwdyip6djwykid4j6bcnv2i" }, "stable": { "version": [ @@ -94561,11 +99081,11 @@ "repo": "eschulte/emacs-web-server", "unstable": { "version": [ - 20190310, - 213 + 20200312, + 1154 ], - "commit": "cafa5b7582c57252a0884b2c33da9b18fb678713", - "sha256": "1c0lfqmbs5hvz3fh3c8wgp6ipwmxrwx9xj264bjpj3phixd5419y" + "commit": "b49ba259cc7e490e8acdecd28e66063f5ad1325e", + "sha256": "0b5mhgzbf1xy07g1yl0nb45hr0n18h6zxvw07zvahj2x1px9s6yc" } }, { @@ -94612,28 +99132,28 @@ "repo": "etu/webpaste.el", "unstable": { "version": [ - 20190310, - 1048 + 20200227, + 912 ], "deps": [ "cl-lib", "request" ], - "commit": "bd38635d926a45a3cbe453fd9b41c8624a6d2309", - "sha256": "1z4l2j66mfnx1l1svx45sxkxjlyzdyw10ybsfsjhwdsi6ll42nar" + "commit": "ef33b0f298bf36cfb84b37af4870706fc376b0c3", + "sha256": "0v2yw3jbwlamkycgfmd5abxr764zyzcggyzn2ybzlkffxaxaz6dw" }, "stable": { "version": [ 3, 0, - 1 + 2 ], "deps": [ "cl-lib", "request" ], - "commit": "7345c5f62d5cff4d84379eaf5dc8b2bb8bc4f99c", - "sha256": "00dfp2dyj9cvcvvpsh4g61b37477c8ahfj3xig2x2kgfz15lk89n" + "commit": "1a6c0e967f0340d825df33f4fab339eb904f5f5f", + "sha256": "15b97rszszgcivrsdx7368nxdb8lsag6wvmcvvm977splh9yjpwi" } }, { @@ -94644,25 +99164,25 @@ "repo": "ahyatt/emacs-websocket", "unstable": { "version": [ - 20191017, - 30 + 20200321, + 102 ], "deps": [ "cl-lib" ], - "commit": "5be01c6d1a8e87d001916fc40a77d779826fcacf", - "sha256": "0k2rxbacravwjxz3jbkm2icqkfhh5zhpjv7lm0ffbccm5qfyzyy9" + "commit": "31e122a9d7a1ae092e8f970df718fb8256e16574", + "sha256": "1yjdrpn2dwaarmcymf1i8lj72jyvrpp3jqwr3rv59bg8fldin0rs" }, "stable": { "version": [ 1, - 10 + 12 ], "deps": [ "cl-lib" ], - "commit": "0d96ba2ff5a25c6cd6c66f417cc9b5f38a4308ba", - "sha256": "1dgrf7na6r6mmkknphzshlbd5fnzisg0qn0j7vfpa38wgsymaq52" + "commit": "491a60b8bb8a6c3bd081c70354ab82040b0a7db3", + "sha256": "0g0vy2yc118mcka9f26950gdmb780zpxck9y6nli602vj32dw1g2" } }, { @@ -94768,20 +99288,20 @@ "repo": "mhayashi1120/Emacs-wgrep", "unstable": { "version": [ - 20181229, - 40 + 20200217, + 1030 ], - "commit": "379afd89ebd76f63842c8589127d66096a8bb595", - "sha256": "0v1qx8z1xj9qzirlycbihnkpwcklyi3a0j8lil78pmdpixdbgh47" + "commit": "5977b8e00051c9003ca96e9d35133e0dea68db2c", + "sha256": "0b6g8x9lzx4kr39h17g5impyvq1240iylk68jl55wamnb506gm4j" }, "stable": { "version": [ 2, 3, - 0 + 2 ], - "commit": "36c5e8d0e03bc16b19d30a603730065f74b5b767", - "sha256": "0pgyf9vfcahb495q01hi1mvkmv846w4rj6zyf52is8x7sjj7x44s" + "commit": "fcd8c22748024342af15d54f3e7ab5596cf5c4bd", + "sha256": "00cwqzb94jlq4mwgv8z7r3mn0a6mhq95z6j189kacq9g4473zh8d" } }, { @@ -94792,26 +99312,26 @@ "repo": "mhayashi1120/Emacs-wgrep", "unstable": { "version": [ - 20141012, - 1011 + 20200128, + 109 ], "deps": [ "wgrep" ], - "commit": "379afd89ebd76f63842c8589127d66096a8bb595", - "sha256": "0v1qx8z1xj9qzirlycbihnkpwcklyi3a0j8lil78pmdpixdbgh47" + "commit": "5977b8e00051c9003ca96e9d35133e0dea68db2c", + "sha256": "0b6g8x9lzx4kr39h17g5impyvq1240iylk68jl55wamnb506gm4j" }, "stable": { "version": [ 2, 3, - 0 + 2 ], "deps": [ "wgrep" ], - "commit": "36c5e8d0e03bc16b19d30a603730065f74b5b767", - "sha256": "0pgyf9vfcahb495q01hi1mvkmv846w4rj6zyf52is8x7sjj7x44s" + "commit": "fcd8c22748024342af15d54f3e7ab5596cf5c4bd", + "sha256": "00cwqzb94jlq4mwgv8z7r3mn0a6mhq95z6j189kacq9g4473zh8d" } }, { @@ -94822,26 +99342,26 @@ "repo": "mhayashi1120/Emacs-wgrep", "unstable": { "version": [ - 20181229, - 124 + 20200217, + 1028 ], "deps": [ "wgrep" ], - "commit": "379afd89ebd76f63842c8589127d66096a8bb595", - "sha256": "0v1qx8z1xj9qzirlycbihnkpwcklyi3a0j8lil78pmdpixdbgh47" + "commit": "5977b8e00051c9003ca96e9d35133e0dea68db2c", + "sha256": "0b6g8x9lzx4kr39h17g5impyvq1240iylk68jl55wamnb506gm4j" }, "stable": { "version": [ 2, 3, - 0 + 2 ], "deps": [ "wgrep" ], - "commit": "36c5e8d0e03bc16b19d30a603730065f74b5b767", - "sha256": "0pgyf9vfcahb495q01hi1mvkmv846w4rj6zyf52is8x7sjj7x44s" + "commit": "fcd8c22748024342af15d54f3e7ab5596cf5c4bd", + "sha256": "00cwqzb94jlq4mwgv8z7r3mn0a6mhq95z6j189kacq9g4473zh8d" } }, { @@ -94852,26 +99372,26 @@ "repo": "mhayashi1120/Emacs-wgrep", "unstable": { "version": [ - 20190401, - 2156 + 20200128, + 109 ], "deps": [ "wgrep" ], - "commit": "379afd89ebd76f63842c8589127d66096a8bb595", - "sha256": "0v1qx8z1xj9qzirlycbihnkpwcklyi3a0j8lil78pmdpixdbgh47" + "commit": "5977b8e00051c9003ca96e9d35133e0dea68db2c", + "sha256": "0b6g8x9lzx4kr39h17g5impyvq1240iylk68jl55wamnb506gm4j" }, "stable": { "version": [ 2, 3, - 0 + 2 ], "deps": [ "wgrep" ], - "commit": "36c5e8d0e03bc16b19d30a603730065f74b5b767", - "sha256": "0pgyf9vfcahb495q01hi1mvkmv846w4rj6zyf52is8x7sjj7x44s" + "commit": "fcd8c22748024342af15d54f3e7ab5596cf5c4bd", + "sha256": "00cwqzb94jlq4mwgv8z7r3mn0a6mhq95z6j189kacq9g4473zh8d" } }, { @@ -94882,26 +99402,26 @@ "repo": "mhayashi1120/Emacs-wgrep", "unstable": { "version": [ - 20140510, - 2231 + 20200128, + 109 ], "deps": [ "wgrep" ], - "commit": "379afd89ebd76f63842c8589127d66096a8bb595", - "sha256": "0v1qx8z1xj9qzirlycbihnkpwcklyi3a0j8lil78pmdpixdbgh47" + "commit": "5977b8e00051c9003ca96e9d35133e0dea68db2c", + "sha256": "0b6g8x9lzx4kr39h17g5impyvq1240iylk68jl55wamnb506gm4j" }, "stable": { "version": [ 2, 3, - 0 + 2 ], "deps": [ "wgrep" ], - "commit": "36c5e8d0e03bc16b19d30a603730065f74b5b767", - "sha256": "0pgyf9vfcahb495q01hi1mvkmv846w4rj6zyf52is8x7sjj7x44s" + "commit": "fcd8c22748024342af15d54f3e7ab5596cf5c4bd", + "sha256": "00cwqzb94jlq4mwgv8z7r3mn0a6mhq95z6j189kacq9g4473zh8d" } }, { @@ -94927,20 +99447,20 @@ "repo": "justbur/emacs-which-key", "unstable": { "version": [ - 20190802, - 240 + 20200216, + 1350 ], - "commit": "42a25055163141165aa0269dbca69735e704825c", - "sha256": "0d27ka6pgkzv6bj31q4c5ksm30dspl9zy42ynnh4y2xb5wzp5ml2" + "commit": "8b49ae978cceca65967f3544c236f32964ddbed0", + "sha256": "15ydzqv23m1w6g27il57fmzs6pjcasdb7drml3msjpq2l8kr4ard" }, "stable": { "version": [ 3, - 3, - 1 + 4, + 0 ], - "commit": "2f5661646b771f6c5a00a8a9aaa3f183abd5f84d", - "sha256": "1dh6kr00wmql46whjkvnl953zngiv5j99ypvr1b3cb2174623afb" + "commit": "1e3640e48c31f8062f018b5fc84acad696a0ea2a", + "sha256": "1ahgb7dqdc75farkl0fg0a6hvx2067gdvjq99cd3z2dz56km0p05" } }, { @@ -95042,11 +99562,11 @@ "repo": "purcell/whitespace-cleanup-mode", "unstable": { "version": [ - 20190106, - 2022 + 20200304, + 2227 ], - "commit": "121854747776df1b78d0ef89efb6d01c2c1e8c89", - "sha256": "1qli6vwdnm73jnv37lyf1xb5ykav322xjm1fqmgb1369k2fgkl44" + "commit": "5fac49636cd72a0043e2473c9a09a788cfd68d5f", + "sha256": "0myx8vayakmhb5hbrskk58rkb1f0jdw7kinvk8fvv73g050yk28d" }, "stable": { "version": [ @@ -95065,20 +99585,20 @@ "repo": "whizzml/whizzml-mode", "unstable": { "version": [ - 20190920, - 2342 + 20191216, + 1743 ], - "commit": "5c5be351e11a71b31ede33ce941ce20ee0da75ed", - "sha256": "0i43l3fwdxvm7mrxpqlf3j06w7blcqp0jyz6jici4pyg0bdy4kd0" + "commit": "65fa17f8c1dc50dcb90277b64019c2846a317293", + "sha256": "0swlmzfrxpv3slssmpad3hgxfxlmi8jp3422mvcsg9xbdslg2qb5" }, "stable": { "version": [ 0, 35, - 0 + 1 ], - "commit": "5c5be351e11a71b31ede33ce941ce20ee0da75ed", - "sha256": "0i43l3fwdxvm7mrxpqlf3j06w7blcqp0jyz6jici4pyg0bdy4kd0" + "commit": "65fa17f8c1dc50dcb90277b64019c2846a317293", + "sha256": "0swlmzfrxpv3slssmpad3hgxfxlmi8jp3422mvcsg9xbdslg2qb5" } }, { @@ -95089,8 +99609,16 @@ "repo": "lassik/emacs-whois", "unstable": { "version": [ - 20190529, - 1554 + 20200326, + 1909 + ], + "commit": "2186a52db77badd809c99d5c21502878298d78f6", + "sha256": "1dnr7navhjzca2hapwx41xdx4i5fgjyjnw2ms5na6n572xp8kgnj" + }, + "stable": { + "version": [ + 0, + 1 ], "commit": "b4cdab4d25225c6e834727a7d85cdb0d493da152", "sha256": "058wym1iwgz5n5yd508xdc05ncdyqbs53a5c9mq0s6gs06h5xfyw" @@ -95104,20 +99632,19 @@ "repo": "purcell/whole-line-or-region", "unstable": { "version": [ - 20190411, - 215 + 20200305, + 221 ], - "commit": "15f17488f98868f1628a3f9d91a812b1f89bc73a", - "sha256": "18qzmpw41bqw2ymynya3hgn9skj13r5s6d2b14r78hvmv4bc9h9r" + "commit": "71f84725e2643b2ee74f27c60c4fd8b79c9c3c97", + "sha256": "1rs446cwbp6i79wi7srzaxg9hdahagcjkjill34j70hdy1r4xjas" }, "stable": { "version": [ 1, - 3, - 1 + 6 ], - "commit": "a60e022b30c2f4d3118bcaef1adb77b90e0ca941", - "sha256": "0ip0vkqb4dm88xqzgwc9yaxzf4sc4x006m6z73a3lbfmrncy2c1d" + "commit": "0d11174ba5e1145167000aa8f65c273a3d0db6b3", + "sha256": "1zw4aabadhsn81i3bwdl4717fq6a0njypavw2riyzbz465axd60i" } }, { @@ -95188,15 +99715,15 @@ "repo": "rolandwalker/button-lock", "unstable": { "version": [ - 20150223, - 1354 + 20200309, + 1323 ], "deps": [ "button-lock", "nav-flash" ], - "commit": "f9082feb329432fcf2ac49a95e64bed9fda24d58", - "sha256": "06qjvybf65ffrcnhhbqs333lg51fawaxnva3jvdg7zbrsv4m9acl" + "commit": "9afe0f4d05910b0cccc94cb6d4d880119f3b0528", + "sha256": "1d893isxvchrqxw6iaknbv8l31rgalfc4hmppf0l87gxp5y9hxa2" }, "stable": { "version": [ @@ -95552,11 +100079,11 @@ "repo": "ArneBab/wisp", "unstable": { "version": [ - 20190921, - 2218 + 20191114, + 2340 ], - "commit": "0d2c025ac4cfd394706c07fbb60999eaf711020b", - "sha256": "1fs4dpc78aax4mzcp0vzcvzf2mxiwzbdwjfgpylwppxamqdycdwy" + "commit": "33b4fcdd8a17aa19d57971e4f6db5fcb7758843c", + "sha256": "09rrv89b17s4sklkqgci1pmzlnkjlrira22884dh10sbfij42vbp" } }, { @@ -95597,26 +100124,26 @@ "repo": "magit/with-editor", "unstable": { "version": [ - 20191024, - 1905 + 20200217, + 1015 ], "deps": [ "async" ], - "commit": "d5c777298cd8f62fef701fb45684c626d384bf76", - "sha256": "1c093vzfjh9y2abfb0n1r95b7xx77ynpkx5cqz56x2jyb9qhnp26" + "commit": "4fe66d4d55c8eacebda53a13cc38e01d32bdaaa2", + "sha256": "1lyjrh1vddnf8v4i6g05bfx1kq8angbdhyh5v3j0d27gb66cshxp" }, "stable": { "version": [ 2, - 8, - 3 + 9, + 1 ], "deps": [ "async" ], - "commit": "66bec91c859f305445b766394eb25248c1172426", - "sha256": "1z2h9casyw1b93ikq2mf9xixyvbl90zddf0s66lqfiyj2y376pq3" + "commit": "7e0bf753709f1775d2bbbb6edf4482fca7fd286a", + "sha256": "1y4zrgsfs0504ks30qb7hl32ygd3hb6yx5x8032b30j7rh5ks29d" } }, { @@ -95627,11 +100154,11 @@ "repo": "twlz0ne/with-emacs.el", "unstable": { "version": [ - 20190820, - 1326 + 20200210, + 1543 ], - "commit": "b398e54bcce2fc023b0c0b6fa1ba6686192d8b9b", - "sha256": "0hdz7adag2m97h07j3llzdnwwg2dp6n2q46hx7klp3khdlgrh2z1" + "commit": "9f99bec56f87e53deb9f33b364eda77677a17eb9", + "sha256": "0ay860skpnbv6a8xid0hhz9vx33ks2vkdicvpm3a4qngp932jvnp" } }, { @@ -95668,6 +100195,24 @@ "sha256": "1nxssc8xn8i2zf9bs9rv61im3jxi38lq1ph9qr0hazwncndcsb39" } }, + { + "ename": "with-shell-interpreter", + "commit": "dc61e8f90dbae7184228b16de447ce1ede630a1c", + "sha256": "0qjr7j3jv20ja94ma0rk4rr0fx6vazqp25sgc806xl034ax669y9", + "fetcher": "github", + "repo": "p3r7/with-shell-interpreter", + "unstable": { + "version": [ + 20200319, + 1351 + ], + "deps": [ + "cl-lib" + ], + "commit": "e806b1e5537ba2f23b507a3cc28aa7c3cacd2315", + "sha256": "1qklc135ydslcxjhlgbmagib3j184gm72paky6glzdjh2yf8mm50" + } + }, { "ename": "with-simulated-input", "commit": "e4ddf16e19f5018106a423327ddc7e7499cf9248", @@ -95676,15 +100221,11 @@ "repo": "DarwinAwardWinner/with-simulated-input", "unstable": { "version": [ - 20190913, - 1524 + 20200215, + 1807 ], - "deps": [ - "s", - "seq" - ], - "commit": "3d881793521c5618cdb0968a85879e0e49da7fca", - "sha256": "12d3mhvzj74qwc4rdcb236jbqnf5lam8pk78j92kwbwjk1jaz2cf" + "commit": "29173588751eeb33d2392d380b26648b2e213438", + "sha256": "0qmcv1ks3cnvl7l6cmbl5a03irwp38zfc98rzp9hbd3xw7rh970b" }, "stable": { "version": [ @@ -95707,14 +100248,14 @@ "repo": "10sr/with-venv-el", "unstable": { "version": [ - 20190516, - 606 + 20200125, + 1620 ], "deps": [ "cl-lib" ], - "commit": "283b35e33f012657ef23e154b6bdf362377d82e6", - "sha256": "1s0vnsvhlcx1z5sbiyhk4iizakx4cbvjxwygdamrl8s0bnigqhfd" + "commit": "51ba19ac75a2796d494587b3b20ce51d4eb178a5", + "sha256": "1nbw88727spdgivrafjnlzbda81nnd1xprqdgmy6h2xfvki23zzb" }, "stable": { "version": [ @@ -95901,8 +100442,8 @@ "repo": "abo-abo/worf", "unstable": { "version": [ - 20190930, - 1027 + 20200121, + 1629 ], "deps": [ "ace-link", @@ -95910,8 +100451,8 @@ "swiper", "zoutline" ], - "commit": "69790b0405e794c4507882fa944d6dafdcca84d8", - "sha256": "1iklq4k3b61ivf1as992mvy27x0b9f71h813r2n06m27p2fmx2br" + "commit": "bdc8240ff4188c7403a020eb58dc10eea104b7df", + "sha256": "1lkix09lwnjsycaacwdn7gyqnm0n2frcp1p0l3hfhayz3p18dy5p" }, "stable": { "version": [ @@ -96094,25 +100635,25 @@ "repo": "joostkremers/writeroom-mode", "unstable": { "version": [ - 20190406, - 2135 + 20200303, + 2331 ], "deps": [ "visual-fill-column" ], - "commit": "ebe522ba5a0367cf82ed03ffeb63fe597b84f4a1", - "sha256": "0w2lmkkij79khjpswk2zxj371fa9ws94j9dqzrgzf37lnimgnsff" + "commit": "20c761b80031f2b44b9d9fb476e044e477359016", + "sha256": "1kx2xhvi579vhajvgl4spf9jd597fqa2bjh16yqfx2nikissvkhy" }, "stable": { "version": [ 3, - 8 + 10 ], "deps": [ "visual-fill-column" ], - "commit": "ebe522ba5a0367cf82ed03ffeb63fe597b84f4a1", - "sha256": "0w2lmkkij79khjpswk2zxj371fa9ws94j9dqzrgzf37lnimgnsff" + "commit": "6552c056b85fd26a3ac509100d9d5c5c3c19515a", + "sha256": "0la4q2dm123l4rdfh0ry03b99ihvh324y7iw12az909198bcx335" } }, { @@ -96146,11 +100687,11 @@ "repo": "josteink/wsd-mode", "unstable": { "version": [ - 20180807, - 1130 + 20191031, + 1211 ], - "commit": "0583df8efb742c90dc56df00f9714e13512cf6d9", - "sha256": "0f90qm5zx7lkyvaz519fln4hijfyammc675105f19492h1bc1bva" + "commit": "b87dee6d2d21fc868a3fae35bbd3f08910ad57e0", + "sha256": "1phxq59nsxw6zx1v097j9iqm54am9pln2wzcszsxj2ipjskiz7xn" }, "stable": { "version": [ @@ -96200,20 +100741,20 @@ "repo": "redguardtoo/wucuo", "unstable": { "version": [ - 20191016, - 2324 + 20200116, + 1447 ], - "commit": "2483a797763a9839a5dc942906e65f574dadd502", - "sha256": "1y1wprcdbm5iwz7496pbcdq3hbsrf4hfqkplpyminj94f4ac3pcy" + "commit": "92e562077cc21dbe285ad2fa7b171c8aae7b556f", + "sha256": "0wbmprg7nbwwpxffknkrg662v0dzdvlipz9f104bhaxvfcmy36ij" }, "stable": { "version": [ 0, 0, - 5 + 7 ], - "commit": "2483a797763a9839a5dc942906e65f574dadd502", - "sha256": "1y1wprcdbm5iwz7496pbcdq3hbsrf4hfqkplpyminj94f4ac3pcy" + "commit": "92e562077cc21dbe285ad2fa7b171c8aae7b556f", + "sha256": "0wbmprg7nbwwpxffknkrg662v0dzdvlipz9f104bhaxvfcmy36ij" } }, { @@ -96324,11 +100865,11 @@ "repo": "xahlee/xah-css-mode", "unstable": { "version": [ - 20190705, - 750 + 20200309, + 1750 ], - "commit": "ada8513eadca5c5797a384040acca2fceced3e26", - "sha256": "0x9zbck87s4cfk99i2kq1a0rf5lvy5bms58d75fd8gn7xz42cf9x" + "commit": "43dbab2b8c35bd6892fe80bf064b41bd731545ff", + "sha256": "0m6l2k22pfcp6s3dadm3w1mr7ar590xl64zjsr0dl9d8spc6gbz1" } }, { @@ -96369,11 +100910,11 @@ "repo": "xahlee/xah-fly-keys", "unstable": { "version": [ - 20190223, - 716 + 20200330, + 557 ], - "commit": "cc8b3bc26998bc29f82e87667c0d1ef90894ff66", - "sha256": "19q20mp5gzkm0ch5wz1jxajkb8cqmknsldlzb7jsa8hzyvl2mb7m" + "commit": "d75567f7f6b85830b97b18ab1b5d8e70acaa05bf", + "sha256": "1lmca03y7h584agid7fr5g2w3s9psk55n0qlrcfgg10d67nq6l75" } }, { @@ -96399,11 +100940,11 @@ "repo": "xahlee/lookup-word-on-internet", "unstable": { "version": [ - 20181225, - 1942 + 20200225, + 31 ], - "commit": "2cafbf3605a8f2ac4c56392c5b1f75adc3b11f24", - "sha256": "1xr2fp6dylv098g7m7x31j7jllr87545snab3qw5r32rzsa7fswz" + "commit": "5ddd01520ca49d459f67567901fc08c84aa553bd", + "sha256": "07fx4vypgim39rw022v5m7gfp68095s393j8s28k2j038jqgzdp5" } }, { @@ -96414,11 +100955,11 @@ "repo": "xahlee/xah-math-input", "unstable": { "version": [ - 20190206, - 1658 + 20200217, + 740 ], - "commit": "af787f87815b85d56c35bbe0f22e03a31c8e670d", - "sha256": "05fqjyzz6c0nclhqc7qxs3hg99d3yxb3qjzn1wc26m6jcmm2l6zd" + "commit": "c1e72c4578a134e9aa3ec9ef425038d8c16fba94", + "sha256": "0laq440vk8mnjbdjz0h4n18qh72n83hxqmwjm124ykzclzjcdknh" } }, { @@ -96604,6 +101145,36 @@ "sha256": "0b7v59dya346ds1wad0avrqhjimx5n9r3pcgqafagzf34hdcv3jy" } }, + { + "ename": "xml-format", + "commit": "5e4df4dc715884132a7c409e041b303eeb727f18", + "sha256": "1xk3236m497n345i95l1k0xpyb7v8h3mar36j7yjjwxavjrh8ygg", + "fetcher": "github", + "repo": "wbolster/emacs-xml-format", + "unstable": { + "version": [ + 20191011, + 1148 + ], + "deps": [ + "reformatter" + ], + "commit": "2861c4e33e18b077112efa072316b031bca4236c", + "sha256": "1g0v5ir6nwpamnwvq509d1s1s60n0s5p2lvqqm0n0rk9r753cqkh" + }, + "stable": { + "version": [ + 1, + 0, + 0 + ], + "deps": [ + "reformatter" + ], + "commit": "2861c4e33e18b077112efa072316b031bca4236c", + "sha256": "1g0v5ir6nwpamnwvq509d1s1s60n0s5p2lvqqm0n0rk9r753cqkh" + } + }, { "ename": "xml-quotes", "commit": "ab315d783765730aceab43b4fd8c4872a1f1cc05", @@ -96612,11 +101183,11 @@ "repo": "ndw/xml-quotes", "unstable": { "version": [ - 20151230, - 2249 + 20200301, + 1222 ], - "commit": "26db170e80b9295861227cdf970721b12539ed44", - "sha256": "0z3yd3dzcsd7584jchv9q55fx04ig4yjzp8ay2pa112lykv4jxxd" + "commit": "8fc21e43b45f9a50b24642412f05afcc3a316a1f", + "sha256": "1czz6zgbnvwf3bn6k5iczs02rjx6frjnc0d78gcxhvsnbsvv60iw" } }, { @@ -96674,11 +101245,19 @@ "repo": "ndw/xmlunicode", "unstable": { "version": [ - 20160319, - 1612 + 20191124, + 2312 ], - "commit": "f5d185da46414c0509ebd0aa0fab416becf94612", - "sha256": "178bdfwiinhf98qm88ivmgy6rd0qjx5gnckkclanybva0r8l6832" + "commit": "80f30becf860db4277e71e3445994fccaf35ba98", + "sha256": "0vs8l739104s3zqmqna4m0n0pkz4m04mivx6r9iqdjmg4khh6bfi" + }, + "stable": { + "version": [ + 1, + 21 + ], + "commit": "80f30becf860db4277e71e3445994fccaf35ba98", + "sha256": "0vs8l739104s3zqmqna4m0n0pkz4m04mivx6r9iqdjmg4khh6bfi" } }, { @@ -96696,6 +101275,21 @@ "sha256": "0761amc73mbgaydp3iyfzgyjxp77yk440s24h69hvk87c5vn1cz3" } }, + { + "ename": "xonsh-mode", + "commit": "f408aee5da4eadd8f4550893336f6decf00c9281", + "sha256": "15bb2zz9rb7bn0wrwhpi46f9knfr8hbjl9drks6xma3ln7nvrn9v", + "fetcher": "github", + "repo": "seanfarley/xonsh-mode", + "unstable": { + "version": [ + 20191214, + 114 + ], + "commit": "01819823822b6ebe01c02af548276cb2deb343f4", + "sha256": "043ijxkab06zlag9hsd0xdw5bxqi6n8sd10zr62f7drwchmw9ln0" + } + }, { "ename": "xquery-mode", "commit": "e8ea1c9e26963f290d912df21b81afd689543658", @@ -96799,14 +101393,14 @@ "repo": "atomontage/xterm-color", "unstable": { "version": [ - 20191002, - 2158 + 20200103, + 1327 ], "deps": [ "cl-lib" ], - "commit": "12296bb1f0166a81b7e602493ed81e04d3381989", - "sha256": "1vab02yjcycvzkyzxpks048mmda89ssvb9bghigw1h20c7zk9x5j" + "commit": "4b21b619841c93c4700039a93eb1881beee9248c", + "sha256": "1v4i74xdp26k9r1nvbdz625l62acvfb2kkp1nvld05p6xkh0q68z" }, "stable": { "version": [ @@ -96901,26 +101495,26 @@ }, { "ename": "yafolding", - "commit": "855ea20024b606314f8590129259747cac0bcc97", - "sha256": "1yb1rlxa5f1y1xjqs7ndr5jnf9j5cv0ccqdpbrx4l9xkm3npw9zl", + "commit": "aca84b24c4d95b330b233851af35e7c8a8e6615c", + "sha256": "0xlcxhmgm8nmv14yr2ffvmf5g7fs6rnq9yc1zpcar8x3d11s0ql2", "fetcher": "github", - "repo": "zenozeng/yafolding.el", + "repo": "emacsorphanage/yafolding", "unstable": { "version": [ - 20170305, - 317 + 20200119, + 1353 ], - "commit": "57c015ddd7c3454571c80825bc5391d7a10fa1d7", - "sha256": "144v8nn4l8ngfdrsgj5nrxp09391gnfrqf950y956cbmqvnlw7z8" + "commit": "4c1888ae45f9241516519ae0ae3a899f2efa05ba", + "sha256": "1bb763lx5cs5z06irjllip8z9c61brjsamfcjajibi24wcajkprx" }, "stable": { "version": [ 0, 4, - 0 + 1 ], - "commit": "57c015ddd7c3454571c80825bc5391d7a10fa1d7", - "sha256": "144v8nn4l8ngfdrsgj5nrxp09391gnfrqf950y956cbmqvnlw7z8" + "commit": "4c1888ae45f9241516519ae0ae3a899f2efa05ba", + "sha256": "1bb763lx5cs5z06irjllip8z9c61brjsamfcjajibi24wcajkprx" } }, { @@ -96953,21 +101547,6 @@ "sha256": "0l9b888wv72j4hhkcfzsh09iqjxp2qjbjcjcfmvfhxf7il11pv8h" } }, - { - "ename": "yahoo-weather", - "commit": "ae5ca93d48a2d24787c3d4ed7ab3a65aa8023f4f", - "sha256": "1kzi6yp186wfcqh5q1v9vw6b1h8x89sba6wlnacfpjbarwapfif0", - "fetcher": "github", - "repo": "lujun9972/yahoo-weather-mode", - "unstable": { - "version": [ - 20181026, - 320 - ], - "commit": "1d2db14daa1706e03dfe4379397eb89234a56400", - "sha256": "01hydsjj427j4xyy8cwiz5kn67vwwi1qnih5qfyw04w29r9njh1n" - } - }, { "ename": "yahtzee", "commit": "200169fdabce0ae3a2ecb6f4f3255c15ec3ed094", @@ -96979,8 +101558,8 @@ 20171022, 1412 ], - "commit": "7cea3314ad9f1f00543afb578c97e45acbfc3fa7", - "sha256": "1mh0imhk9n6as7rz959r3wak0ivg8cyxpqk0bkx67gc7p6l573zy" + "commit": "ecb66f0b77aac0123e5b3336ee1910fa07fa44f9", + "sha256": "1cvsp6x94b223g21avr2z255s5xwdwmdxnhwzq8qj2c3qrax6sx9" } }, { @@ -97036,11 +101615,11 @@ "repo": "yoshiki/yaml-mode", "unstable": { "version": [ - 20190625, - 1740 + 20191127, + 2314 ], - "commit": "5b4a0db384f996554454b5642e4531c502421de8", - "sha256": "18g064ardqi1f3xz7j6rs1x9fvv9sn0iq9vgid8c6qvxq7gwj00r" + "commit": "cecf4b106b0c4236931b14919fdf87ff3546e2c9", + "sha256": "10dz6zz5mhf09wnhqag93zvdcnh6zyizpsdj189jgza58dq2vp1v" }, "stable": { "version": [ @@ -97117,11 +101696,11 @@ "repo": "Kungsgeten/yankpad", "unstable": { "version": [ - 20190904, - 1507 + 20200108, + 1811 ], - "commit": "2f110f4aacb00c58439385cabb18cfaa8d759e64", - "sha256": "1hwmap0z4jjfs5lwmr0zrybzvx49qbqa957wg21l8h31pq40d3k5" + "commit": "dd97994a8bff58e4d98aa6cb90aa08c5ddde5c82", + "sha256": "114qnr8s5v2dr3v3jvy4aagyi1wbn3fw27mrb6zdg6faxvfpd8sk" }, "stable": { "version": [ @@ -97140,11 +101719,11 @@ "repo": "JorisE/yapfify", "unstable": { "version": [ - 20180830, - 733 + 20200326, + 917 ], - "commit": "b858225e1debe6734ee718e5c3c209152652a8b3", - "sha256": "16bpshqk47slcifx9v70ka202lnbspkcjdl5npxpf12abc1syh06" + "commit": "2e5d344b6d9cf1965a1153b160b3a52582d492ff", + "sha256": "1pi1dgcqz1xn5r4z5pjxbyx4kq75cxzl3711zzp0dyn48w0a7sj3" }, "stable": { "version": [ @@ -97217,11 +101796,11 @@ "repo": "anachronic/yarn-mode", "unstable": { "version": [ - 20170709, - 1937 + 20200208, + 2332 ], - "commit": "998b408d6be05fd1c3a9fd8db6ffaab3bf86d06b", - "sha256": "09mrcv30n6zmgnwgl5pb2cyk6122a0ng1xg20grpmlwbq3qlr424" + "commit": "8239d4dc7d8a52fa1e3fa81bd32c904a359fcfc1", + "sha256": "0pf98jkz8k4gyc650wwfhww6gli847hmxb8lrnmw50yb88dqa38f" }, "stable": { "version": [ @@ -97234,28 +101813,32 @@ }, { "ename": "yascroll", - "commit": "091dcc3775ec2137cb61d66df4e72aca4900897a", - "sha256": "11g7wn4hgdwnx3n7ra0sh8gk6rykwvrg9g2cihvcv7mjbqgcv53f", + "commit": "7856a62fb86415c88aa72b574895328c93c10a09", + "sha256": "1hdh8xfmgj0w3vrl3nr3i6j8b9qf8ndnfa1bvwainzdbxpfwiz1v", "fetcher": "github", - "repo": "m2ym/yascroll-el", + "repo": "emacsorphanage/yascroll", "unstable": { "version": [ - 20170315, - 1906 + 20200224, + 1117 ], "deps": [ "cl-lib" ], - "commit": "fe4494e5f4faf2832e665c7de0fed99cdbb39478", - "sha256": "09y8phmvqdwp1k9w84rf6p609jrg0mhgx6akwda8rsvxrrbsh6j4" + "commit": "b298a34ae872a45c3e83d29d33888abde59c185b", + "sha256": "1pnynyy3scrd15q4ag769af5njrxx6rw48svbsfx3xrz1n0x9snz" }, "stable": { "version": [ 0, - 1 + 1, + 7 ], - "commit": "0a8b531b3a3c8afe7235c8c212e08bfe2021a629", - "sha256": "007837w6gd7k253h7g2in6l3ihcbwv733yiffs26pnymgk21xdqz" + "deps": [ + "cl-lib" + ], + "commit": "784ebb0ee5496b5e7762bfd4c8101166542cb90d", + "sha256": "1k9y319ny01yqkg1xsh4rh2xs3dpx5jgvhs17p4c4dvqm0g53mkm" } }, { @@ -97266,26 +101849,26 @@ "repo": "joaotavora/yasnippet", "unstable": { "version": [ - 20191009, - 216 + 20200329, + 1434 ], "deps": [ "cl-lib" ], - "commit": "a66f15e6c975a4370877df272c1ae87490835d28", - "sha256": "0ypjl44fr36n4xj3sx51v4z4arslfqdqfqyhmi9dmd3nm5fqr6f7" + "commit": "7c02bc142c3b157699ab8c4f24ff98da94401248", + "sha256": "1yjqlb9jdbsmmywgg49wd25psbf9637hzgnx5i1q3diaravlnji6" }, "stable": { "version": [ 0, - 13, + 14, 0 ], "deps": [ "cl-lib" ], - "commit": "5a29fe67d70de3749e30ebb37206395b4d1a51a8", - "sha256": "0fkkplycrw8f8r30hjjxl1wm7p2irq2ipzzc1g7cc52abaal796p" + "commit": "3bf9a3b1af37174a004798b7195826af0123fa6a", + "sha256": "0via9dzw8m5lzymg1h78xkwjssh39zr3g6ccyamlf1rjzjsyxknv" } }, { @@ -97314,54 +101897,54 @@ "repo": "AndreaCrotti/yasnippet-snippets", "unstable": { "version": [ - 20191010, - 1106 + 20200314, + 1030 ], "deps": [ "yasnippet" ], - "commit": "a34020042ccc1fdf8b30910dfb937462f4349db6", - "sha256": "1a2ikwkih1hjmjlvpjffbbnkvdsgpk70v4gjlb0ph14169sja6x4" + "commit": "d9a9ec282c6eb1156b06dd1362e018404221087d", + "sha256": "0kvpp1w02mr713lz9jnq0xwbl14f879g7f1icns3n6ilf8kgb104" }, "stable": { "version": [ 0, - 16 + 20 ], "deps": [ "yasnippet" ], - "commit": "c5ddec3a3c0ab2eb045e54709f6852467a90d4c3", - "sha256": "0k60ll62daszn6pbhldcdngp548kxx2vyrd6j8awzfwi97cjbi8a" + "commit": "e813c1479a9fb2773d95ddba39c4aa0e7a1c33c5", + "sha256": "095w7cdmfwmmr6426mbq15n0a5izgbmv9408m9yh1pqz5x3v3vsx" } }, { "ename": "yatemplate", - "commit": "8ba3cdb74f121cbf36b6d9d5a434c363905ce526", + "commit": "67a9079253ebd9ab3b34e16eea0443812fb1a8ee", "sha256": "05gd9sxdiqpw2p1kdagwgxd94wiw1fmmcsp9v4p74i9sqmf6qn6q", "fetcher": "github", "repo": "mineo/yatemplate", "unstable": { "version": [ - 20180617, - 952 + 20200108, + 2102 ], "deps": [ "yasnippet" ], - "commit": "4f4fca9f04f7088c98aa195cf33635a35a6055cb", - "sha256": "04nd9fcp0ff2sjhwrq4nqjicc50m7498vq1qzw2cn5c5gaqmzff8" + "commit": "bfee45cfc179d6b7fbc3ff06c9f79b76dc7fbf58", + "sha256": "0h2fc9vjwb94n3nklq35s3dy9i4ihrqffp2556cmsaq7gzlipb81" }, "stable": { "version": [ - 3, + 4, 0 ], "deps": [ "yasnippet" ], - "commit": "c1de31d2b16d98af197a4392b6481346ab4e8d57", - "sha256": "0lp5ym2smmvmlxpdyv4kh75qsz8dsdz9afd8nxaq8y4fazzabblx" + "commit": "bfee45cfc179d6b7fbc3ff06c9f79b76dc7fbf58", + "sha256": "0h2fc9vjwb94n3nklq35s3dy9i4ihrqffp2556cmsaq7gzlipb81" } }, { @@ -97372,11 +101955,11 @@ "url": "https://www.yatex.org/hgrepos/yatex", "unstable": { "version": [ - 20191005, - 346 + 20200208, + 931 ], - "commit": "80692d8b8828a36ad44e8fe6b8d2c1d423898e05", - "sha256": "1zk5s5w2b4w78ah99j048nskailb1c00h2lm0m8ddvrmxgjl8nwv" + "commit": "f4c2dca86202c2da5b4f0f6ec97c49dd1cb01e6c", + "sha256": "1dh4i2dj2cfg693bvwdi4frmi2892h4q25xdacdm63c7fmn3ap6l" } }, { @@ -97439,8 +102022,8 @@ "request-deferred", "s" ], - "commit": "6f4f7384b82203cccf208e3ec09252eb079439f9", - "sha256": "1bl86x8nqw4jqzb8pfm6hm316hmk1bx8v3qz7wq9z92hb67ck2kn" + "commit": "bc81b992f79100c98f56b7b83caf64cb8ea60477", + "sha256": "0kwm5q2sv2xrsmnr0gc2fimp6b2cvwh5mhqsmcc3lgs32m4j1kwv" }, "stable": { "version": [ @@ -97493,14 +102076,25 @@ "repo": "alphapapa/yequake", "unstable": { "version": [ - 20190921, - 225 + 20200219, + 2323 ], "deps": [ "dash" ], - "commit": "d1f24c1cb49ca4b23fa2a639136ec58ab620cd1f", - "sha256": "1fzy4xfyfjrlsc8jzryqp75qz6i623173qa1w5n6knwdn4hgh4r1" + "commit": "d18166e597414350117d0b82a29e509fc53c636d", + "sha256": "074wijjphnpch7bl3455apfkdv35b0iw4l4lzwj0jcxyfszviq9f" + }, + "stable": { + "version": [ + 0, + 1 + ], + "deps": [ + "dash" + ], + "commit": "d18166e597414350117d0b82a29e509fc53c636d", + "sha256": "074wijjphnpch7bl3455apfkdv35b0iw4l4lzwj0jcxyfszviq9f" } }, { @@ -97537,6 +102131,21 @@ "sha256": "0yvz7lmid4jcikb9jmc7h2lcry3fdyy809k25nyasj2bk41xqqsd" } }, + { + "ename": "yesterbox", + "commit": "21f684c47e5778c9d46c9f28dae1113197717b78", + "sha256": "1ah4l8zz565jgr52d9n29iv93z7qwmlz9pdjw3l51qhqf79lkf1w", + "fetcher": "github", + "repo": "sje30/yesterbox", + "unstable": { + "version": [ + 20200327, + 52 + ], + "commit": "10591342f1759e25756f5865371a53c132d8b0a0", + "sha256": "0cd77m4zyqs74iz56l4h0k7ccxnxhis0247j4f5mf94s51fn1x7p" + } + }, { "ename": "yoficator", "commit": "5156f01564978718dd99ab3a54f19b6512de5c3c", @@ -97560,11 +102169,11 @@ "repo": "ryuslash/yoshi-theme", "unstable": { "version": [ - 20190505, - 728 + 20200307, + 704 ], - "commit": "70365870ff823b954aa85972217d8f116c45d939", - "sha256": "1myrvw0brl6cn3gljbplgxj3mr3mzicfymg7sir8hrk4d5g498yn" + "commit": "25bde9dc4ca380941b6539757371aef91ca35968", + "sha256": "0p3qrp0wrqissbvz8bnpbrj67c2697mq1pni9c247fiijbcnl48j" }, "stable": { "version": [ @@ -97584,8 +102193,8 @@ "repo": "xuchunyang/youdao-dictionary.el", "unstable": { "version": [ - 20190916, - 313 + 20191227, + 242 ], "deps": [ "chinese-word-at-point", @@ -97593,8 +102202,8 @@ "popup", "pos-tip" ], - "commit": "c8c76a1584c9a39ab5df7bba3ba3c728cbd30bb2", - "sha256": "07vngrn17x91anhwvnaa7ryfipgszipaghnj1404yik9w9j9mff9" + "commit": "a745e3197cf3498244265efab8e1cc1f4fedcddc", + "sha256": "0b74crwlslvl4hvjai6a5cphxy9rjnlkhjdlfprqf7s1ygycy1m0" }, "stable": { "version": [ @@ -97688,6 +102297,21 @@ "sha256": "0dnaxhsw549k54j0mgydm7qbl4pizgipfyzc15f9afsxa107rpnl" } }, + { + "ename": "zen-mode", + "commit": "42911a6fe084d88ed12fb87e0e03f7a6f176ec6c", + "sha256": "1fr6bp60jbv7dkhkwqk83d8g139rsfk95ljyjch5xvhl1bj0jmwg", + "fetcher": "github", + "repo": "zenlang/zen-mode", + "unstable": { + "version": [ + 20191224, + 706 + ], + "commit": "3d34bce20c1d7d35b99916672ea0dd67a96c7716", + "sha256": "1ykc58imkrhk4ib8mdgs7q7qrjbj84bm0rgfpgqk0dkfy16daj2q" + } + }, { "ename": "zenburn-theme", "commit": "091dcc3775ec2137cb61d66df4e72aca4900897a", @@ -97696,11 +102320,11 @@ "repo": "bbatsov/zenburn-emacs", "unstable": { "version": [ - 20191016, - 655 + 20200305, + 737 ], - "commit": "2f4f6e7d0bc37f1a99ab14bb4506a0e53d359da5", - "sha256": "0zhj7fak79x4n0spz8vapk5njjhc649ys27v81jncsac6877fs56" + "commit": "7dd796840376342426f60018a6cf209228452f3e", + "sha256": "0zzg95sifg6ybh3ava67z688fycklqragkr3baxlhl2jfnwsps2l" }, "stable": { "version": [ @@ -97758,30 +102382,64 @@ }, { "ename": "zephir-mode", - "commit": "5bd901c93ce7f64de6082e801327adbd18fd4517", - "sha256": "0nxm6w7z89q2vvf3bp1p6hb6f2axv9ha85jyiv4k02l46sjprf4j", + "commit": "fac9fb89cbe5c3eea987fadf23db20c214eab4d9", + "sha256": "133m47a54hdsczzmk3wg7f47q314qnw824lkh8zqx0nw68063i79", "fetcher": "github", - "repo": "sergeyklay/zephir-mode", + "repo": "zephir-lang/zephir-mode", "unstable": { "version": [ - 20170918, - 425 + 20200329, + 1235 ], "deps": [ "cl-lib", "pkg-info" ], - "commit": "1db4071a014a796120b5c3d0a7f91eb77359eb10", - "sha256": "0kqnihir4rr8ckzz3wn5sz3qwgnvpa8bqw767khn887bpf7qsmiq" + "commit": "3e112ba7c52b5caad0c230e014b6e842d6379ab1", + "sha256": "1h6lhz7fvx6c2zwgjwm5aiax5f22v65dmq3rj0s51vpasyj2k9ib" }, "stable": { "version": [ 0, - 3, - 3 + 5, + 0 ], - "commit": "243f0fb7fd1dfebf0f0bdf94046b72d1bea4f66c", - "sha256": "0jydy2zcbksi7db7bvfhgdh08np8k4a1yd6q2wq6m3ll2y3zd0w2" + "deps": [ + "cl-lib", + "pkg-info" + ], + "commit": "76c310faf792db93bc6750305f5b54aa6a4963bd", + "sha256": "1najsypq8qix6jgxqqj5kkfdp7b10l3xz25qw0y5lzz4by4pzzpa" + } + }, + { + "ename": "zero-input", + "commit": "5dad98623a72d61e1421abbe859e5f8764381751", + "sha256": "1av9qd2ggngrb23z3v9rwxnr8calmybis96ja7xfs5z8gnky5bhz", + "fetcher": "git", + "url": "https://gitlab.emacsos.com/sylecn/zero-el", + "unstable": { + "version": [ + 20200220, + 1619 + ], + "deps": [ + "s" + ], + "commit": "3e6e45482c223d3a9610fb366e9cc3aab98a7aab", + "sha256": "1qqk419f4y59vadpqf4my75pzgap9maylfbmaw7k2sqwajy2mxnl" + }, + "stable": { + "version": [ + 2, + 6, + 0 + ], + "deps": [ + "s" + ], + "commit": "3e6e45482c223d3a9610fb366e9cc3aab98a7aab", + "sha256": "1qqk419f4y59vadpqf4my75pzgap9maylfbmaw7k2sqwajy2mxnl" } }, { @@ -97813,6 +102471,24 @@ "sha256": "0pfyd1iqs7l2ngwgvj9n0r9k1px7yl16h8n502xdyf0pprxcs4p6" } }, + { + "ename": "zetteldeft", + "commit": "c643adaf73e8324092874887636cdf0365c481ee", + "sha256": "1vd70mrwn9cfalmiv97ja79hbdmyl5bm9cqsz5c276gk6v6pzvpc", + "fetcher": "github", + "repo": "efls/zetteldeft", + "unstable": { + "version": [ + 20200329, + 1506 + ], + "deps": [ + "deft" + ], + "commit": "1dd8b052bb4bc8fcd18740e798057ace97cb63ac", + "sha256": "16bkcp6mq98bn1qli2qi6wgf5zrkxfqs912fi9fg88bcixk50k9j" + } + }, { "ename": "zig-mode", "commit": "6440f81aed1fcddcaf7afeedb74520e605211986", @@ -97821,11 +102497,33 @@ "repo": "ziglang/zig-mode", "unstable": { "version": [ - 20191023, - 1551 + 20200322, + 131 ], - "commit": "77202ac26ee6091d69d40990fddb1ce6cfcc6dc8", - "sha256": "0d2f6nz99dp3yxr7m8i78lc313qzssm7k4783w6kkvcsbpknazlw" + "commit": "fc7fde327f45533bb73be643e7bda1eda10394b6", + "sha256": "1ld34xs25bysxw9ialrlm6pnp5qbzx94zbb3594ghc2ggz5ph5d5" + } + }, + { + "ename": "zim-wiki-mode", + "commit": "a10d6b0fb4d5b87d7dea1bbc4e4e0495aa51627c", + "sha256": "188g8jf5004amq10gm7p9w1m1ff67l8sxlp1m38wpkivhkgfxzcb", + "fetcher": "github", + "repo": "WillForan/zim-wiki-mode", + "unstable": { + "version": [ + 20200316, + 1223 + ], + "deps": [ + "dokuwiki-mode", + "helm-ag", + "helm-projectile", + "link-hint", + "pretty-hydra" + ], + "commit": "410fa67d5947b8801b03a58fcb2bd414cb5294f7", + "sha256": "14dmda7ahnflv0db9yzssz7bidz3zsdnxxwnby0y48vcjv94nnl5" } }, { @@ -97851,14 +102549,14 @@ "repo": "dzop/emacs-zmq", "unstable": { "version": [ - 20190812, - 1910 + 20200305, + 2345 ], "deps": [ "cl-lib" ], - "commit": "0544b70bf99b6eb95f46e0fcd788d98da50cb892", - "sha256": "0r9aq933b2pk9m70phfz3ah3dk1c5axmjixcf8cf19sjsv1hcc9x" + "commit": "2aed40aee51d19cbca83d1f1edc23a5f1522dd8d", + "sha256": "1viz4sw4vmnjhhqw68wp8a4ks1751s2dk09gx2gyl8gy5vw2fcg6" }, "stable": { "version": [ @@ -98024,11 +102722,11 @@ "repo": "cyrus-and/zoom", "unstable": { "version": [ - 20190523, - 1300 + 20200106, + 1204 ], - "commit": "e2aad25dfd334299a7e53df21796b8652142c5b5", - "sha256": "0nr21gmji24bn5j73hrl8qy9llv3cmc9w5j30pcnsi4zi2svh9gc" + "commit": "a54324344eca49cfb11626446e1ebe239cba6557", + "sha256": "01ycz8496ywb2d980hxpvlnzxw5012mrj8kh8d97vdclhdbkx0y1" }, "stable": { "version": [ @@ -98042,25 +102740,25 @@ }, { "ename": "zoom-window", - "commit": "8a55cc66cc0deb1c24023f638b8e920c9d975859", - "sha256": "0l9683nk2bdm49likk9c55c23qfy6f1pn04drqwd1vhpanz4l4b3", + "commit": "2a2670edb1155f02d1cbe2600db84a82c8f3398b", + "sha256": "0h4rr6h79g6sh8caa0l0fxssbd02v2llapqmikz72vpsghqg7y57", "fetcher": "github", - "repo": "syohex/emacs-zoom-window", + "repo": "emacsorphanage/zoom-window", "unstable": { "version": [ - 20170302, - 827 + 20200323, + 720 ], - "commit": "cd6ecc103fc30b171bda7daf1f44a550854d0dbf", - "sha256": "1rfhdzwyag32s15ysmf75976nvkx995581afaa4ychj45vwnaqfm" + "commit": "ab14a365f3e496b07f5efc20992f9094ec166f06", + "sha256": "0ah0gfzp0c90vrqmsfd6crl3i6bjqgb78hnpcvvg53gk5i19i4aw" }, "stable": { "version": [ 0, - 5 + 6 ], - "commit": "eefe36d26e04a9f89aad27671d1f06e9d4736ac6", - "sha256": "08splg49ncgfsap3ivpc974wmg22ikshwv33l0i6advjjv9cskhm" + "commit": "ab14a365f3e496b07f5efc20992f9094ec166f06", + "sha256": "0ah0gfzp0c90vrqmsfd6crl3i6bjqgb78hnpcvvg53gk5i19i4aw" } }, { @@ -98144,26 +102842,28 @@ "repo": "egh/zotxt-emacs", "unstable": { "version": [ - 20180518, - 147 + 20200120, + 1950 ], "deps": [ - "request-deferred" + "deferred", + "request" ], - "commit": "23a4a9f74a658222027d53a9a83cd4bcc583ca8b", - "sha256": "09fq3w9yk9kn6bz7y9kgpiw612dvj3yzsdk734js6zgb0p8lfd2c" + "commit": "2e7ce60fa4b0311c646a509c140fd1c94c08fa79", + "sha256": "0ww0bg3bbrynnfhkkr7vdsrjc3341ngkzf83nn934zl0aphg87wb" }, "stable": { "version": [ + 5, 0, - 1, - 34 + 5 ], "deps": [ - "request-deferred" + "deferred", + "request" ], - "commit": "43c0c6d23b31126bac6b14bb85608180fd9c866f", - "sha256": "0qksa67aazs9vx7v14nlakr34z6l0h6mhfzi2c0vhrr0c210r6hp" + "commit": "98323098c37a444de49cfef44f1506e9386e8c5f", + "sha256": "1zr67h0w49rsi84mgf6jdili28h8782q6vjl8za0iq1hcx9zqxyf" } }, { @@ -98227,17 +102927,17 @@ }, { "ename": "zprint-mode", - "commit": "125f6358dd8d715b61b12de5d39215453e53ea10", - "sha256": "07ziwnk1c620s7rp42fylpw5vgin0p7aapp3g8aif60vcb8g3m7y", + "commit": "188d40daec1ff86dcfa807a91eb77a1281de3951", + "sha256": "1dwf941plwxib96n4g95pm51hhhaq643djn1hps8s7yyrzz77czz", "fetcher": "github", "repo": "pesterhazy/zprint-mode.el", "unstable": { "version": [ - 20181111, - 1945 + 20191130, + 1829 ], - "commit": "e1a7b7fe48e36e5cdf1269ab394d3cf779fdab58", - "sha256": "1ayw2ni49fvks6xaiqkvyn3rbkfw49kxhrnd2vnvcn7qhajbh435" + "commit": "4d0dd23b40155618181d9d1e4c82849e0d73b659", + "sha256": "0im63h7ang7zypzbf45k5pxz11svyyk8pab9d4qg9jsb7bz9v7k0" } }, { @@ -98248,14 +102948,14 @@ "repo": "fourier/ztree", "unstable": { "version": [ - 20180512, - 1850 + 20191108, + 2234 ], "deps": [ "cl-lib" ], - "commit": "c54425a094353ec40a8179f9eab3596f76c6cf94", - "sha256": "0j8fpxds8m1zi04nrs8vv21091abvh4n8ab76f1sgdxnp4l5cfb0" + "commit": "0a5b25f364490a58ef7371534a39c75d11f54132", + "sha256": "0a0p9srdkc79isw99al3vba50vc435654wix07r9jcgdh856zbsr" } }, { @@ -98312,8 +103012,8 @@ "avy", "cl-lib" ], - "commit": "3499777d74add95625b4592b5d675a82abc8f888", - "sha256": "0548skxh3gyriwscjkz2zf8l3gn16vwz5ardwab03gw7a7arsrc9" + "commit": "09613d53e1e6e7c58102fb8812bbef2121d57026", + "sha256": "1rfi7gp5z2lm71qrf9akkn8iiiv297i1mqkvwyv7vlhx5vk21r4s" }, "stable": { "version": [ diff --git a/pkgs/applications/editors/emacs-modes/rect-mark/default.nix b/pkgs/applications/editors/emacs-modes/rect-mark/default.nix index 54e5a89dd9f..4320a88457a 100644 --- a/pkgs/applications/editors/emacs-modes/rect-mark/default.nix +++ b/pkgs/applications/editors/emacs-modes/rect-mark/default.nix @@ -24,7 +24,7 @@ stdenv.mkDerivation { meta = { description = "Mark a rectangle of text with highlighting"; - homepage = http://emacswiki.org/emacs/RectangleMark; + homepage = "http://emacswiki.org/emacs/RectangleMark"; license = stdenv.lib.licenses.gpl2Plus; platforms = stdenv.lib.platforms.all; diff --git a/pkgs/applications/editors/emacs-modes/session-management-for-emacs/default.nix b/pkgs/applications/editors/emacs-modes/session-management-for-emacs/default.nix index 165e0c13c8f..e4b739af051 100644 --- a/pkgs/applications/editors/emacs-modes/session-management-for-emacs/default.nix +++ b/pkgs/applications/editors/emacs-modes/session-management-for-emacs/default.nix @@ -21,7 +21,7 @@ stdenv.mkDerivation { (add-hook 'after-init-hook 'session-initialize) */ description = "Small session management for emacs"; - homepage = http://emacs-session.sourceforge.net/; + homepage = "http://emacs-session.sourceforge.net/"; license = "GPL"; }; } diff --git a/pkgs/applications/editors/emacs-modes/sunrise-commander/default.nix b/pkgs/applications/editors/emacs-modes/sunrise-commander/default.nix index fcb37e7ebad..7e611d68a0a 100644 --- a/pkgs/applications/editors/emacs-modes/sunrise-commander/default.nix +++ b/pkgs/applications/editors/emacs-modes/sunrise-commander/default.nix @@ -4,7 +4,7 @@ stdenv.mkDerivation { name = "sunrise-commander-6r435"; src = fetchgit { - url = https://github.com/escherdragon/sunrise-commander.git; + url = "https://github.com/escherdragon/sunrise-commander.git"; rev = "7a44ca7abd9fe79f87934c78d00dc2a91419a4f1"; sha256 = "2909beccc9daaa79e70876ac6547088c2459b624c364dda1886fe4d7adc7708b"; }; @@ -22,7 +22,7 @@ stdenv.mkDerivation { meta = { description = "Two-pane file manager for Emacs based on Dired and inspired by MC"; - homepage = http://www.emacswiki.org/emacs/Sunrise_Commander; + homepage = "http://www.emacswiki.org/emacs/Sunrise_Commander"; license = stdenv.lib.licenses.gpl3Plus; platforms = stdenv.lib.platforms.all; diff --git a/pkgs/applications/editors/emacs-modes/sv-kalender/default.nix b/pkgs/applications/editors/emacs-modes/sv-kalender/default.nix index bcd947983a3..211be0a9089 100644 --- a/pkgs/applications/editors/emacs-modes/sv-kalender/default.nix +++ b/pkgs/applications/editors/emacs-modes/sv-kalender/default.nix @@ -17,6 +17,6 @@ trivialBuild { homepage = "http://bigwalter.net/daniel/elisp/sv-kalender.el"; platforms = platforms.all; license = licenses.gpl3Plus; - maintainers = [ maintainer.rycee ]; + maintainers = [ maintainers.rycee ]; }; } diff --git a/pkgs/applications/editors/emacs-modes/tramp/default.nix b/pkgs/applications/editors/emacs-modes/tramp/default.nix index 3b746c293d8..b87390d4609 100644 --- a/pkgs/applications/editors/emacs-modes/tramp/default.nix +++ b/pkgs/applications/editors/emacs-modes/tramp/default.nix @@ -9,7 +9,7 @@ stdenv.mkDerivation rec { buildInputs = [ emacs texinfo ]; meta = { description = "Transparently access remote files from Emacs. Newer versions than built-in."; - homepage = https://www.gnu.org/software/tramp; + homepage = "https://www.gnu.org/software/tramp"; license = stdenv.lib.licenses.gpl3Plus; platforms = stdenv.lib.platforms.all; }; diff --git a/pkgs/applications/editors/emacs-modes/yaoddmuse/default.nix b/pkgs/applications/editors/emacs-modes/yaoddmuse/default.nix index 209a99245ec..4dc56894914 100644 --- a/pkgs/applications/editors/emacs-modes/yaoddmuse/default.nix +++ b/pkgs/applications/editors/emacs-modes/yaoddmuse/default.nix @@ -24,7 +24,7 @@ stdenv.mkDerivation { meta = { description = "Comprehensive Emacs integration with Oddmuse wikis"; - homepage = http://emacswiki.org/emacs/Yaoddmuse; + homepage = "http://emacswiki.org/emacs/Yaoddmuse"; platforms = stdenv.lib.platforms.all; }; } diff --git a/pkgs/applications/editors/emacs-modes/zeitgeist/default.nix b/pkgs/applications/editors/emacs-modes/zeitgeist/default.nix index 9403a51df53..c771f5423a9 100644 --- a/pkgs/applications/editors/emacs-modes/zeitgeist/default.nix +++ b/pkgs/applications/editors/emacs-modes/zeitgeist/default.nix @@ -19,7 +19,7 @@ stdenv.mkDerivation { meta = { description = "Integreate Emacs with Zeitgeist"; - homepage = http://zeitgeist-project.com/; + homepage = "http://zeitgeist-project.com/"; platforms = stdenv.lib.platforms.all; }; } diff --git a/pkgs/applications/editors/emacs/25.nix b/pkgs/applications/editors/emacs/25.nix index 42edb7c707e..1ee2f5d4fe7 100644 --- a/pkgs/applications/editors/emacs/25.nix +++ b/pkgs/applications/editors/emacs/25.nix @@ -97,7 +97,7 @@ stdenv.mkDerivation rec { done ''; - installTargets = "tags install"; + installTargets = [ "tags" "install" ]; postInstall = '' mkdir -p $out/share/emacs/site-lisp @@ -121,7 +121,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "The extensible, customizable GNU text editor"; - homepage = https://www.gnu.org/software/emacs/; + homepage = "https://www.gnu.org/software/emacs/"; license = licenses.gpl3Plus; maintainers = with maintainers; [ lovek323 peti the-kenny jwiegley ]; platforms = platforms.all; diff --git a/pkgs/applications/editors/emacs/default.nix b/pkgs/applications/editors/emacs/default.nix index 2862ba7184f..9d0fc456538 100644 --- a/pkgs/applications/editors/emacs/default.nix +++ b/pkgs/applications/editors/emacs/default.nix @@ -7,7 +7,7 @@ , withNS ? stdenv.isDarwin , withGTK2 ? false, gtk2-x11 ? null , withGTK3 ? true, gtk3-x11 ? null, gsettings-desktop-schemas ? null -, withXwidgets ? false, webkitgtk ? null, wrapGAppsHook ? null +, withXwidgets ? false, webkitgtk ? null, wrapGAppsHook ? null, glib-networking ? null , withCsrc ? true , srcRepo ? false, autoconf ? null, automake ? null, texinfo ? null , siteStart ? ./site-start.el @@ -67,7 +67,7 @@ stdenv.mkDerivation rec { ++ lib.optional (withX && withGTK2) gtk2-x11 ++ lib.optionals (withX && withGTK3) [ gtk3-x11 gsettings-desktop-schemas ] ++ lib.optional (stdenv.isDarwin && withX) cairo - ++ lib.optionals (withX && withXwidgets) [ webkitgtk ] + ++ lib.optionals (withX && withXwidgets) [ webkitgtk glib-networking ] ++ lib.optionals withNS [ AppKit GSS ImageIO ]; hardeningDisable = [ "format" ]; @@ -97,7 +97,7 @@ stdenv.mkDerivation rec { done ''; - installTargets = "tags install"; + installTargets = [ "tags" "install" ]; postInstall = '' mkdir -p $out/share/emacs/site-lisp @@ -132,9 +132,9 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "The extensible, customizable GNU text editor"; - homepage = https://www.gnu.org/software/emacs/; + homepage = "https://www.gnu.org/software/emacs/"; license = licenses.gpl3Plus; - maintainers = with maintainers; [ lovek323 peti the-kenny jwiegley ]; + maintainers = with maintainers; [ lovek323 peti the-kenny jwiegley adisbladis ]; platforms = platforms.all; longDescription = '' diff --git a/pkgs/applications/editors/emacs/macport.nix b/pkgs/applications/editors/emacs/macport.nix index e9307c7e80b..1624e62026a 100644 --- a/pkgs/applications/editors/emacs/macport.nix +++ b/pkgs/applications/editors/emacs/macport.nix @@ -80,7 +80,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "The extensible, customizable text editor"; - homepage = https://www.gnu.org/software/emacs/; + homepage = "https://www.gnu.org/software/emacs/"; license = licenses.gpl3Plus; maintainers = with maintainers; [ jwiegley matthewbauer ]; platforms = platforms.darwin; diff --git a/pkgs/applications/editors/featherpad/default.nix b/pkgs/applications/editors/featherpad/default.nix index e48fba1551e..c6089fd5308 100644 --- a/pkgs/applications/editors/featherpad/default.nix +++ b/pkgs/applications/editors/featherpad/default.nix @@ -15,7 +15,7 @@ stdenv.mkDerivation rec { buildInputs = [ qtbase qtsvg qtx11extras ]; meta = with stdenv.lib; { description = "Lightweight Qt5 Plain-Text Editor for Linux"; - homepage = https://github.com/tsujan/FeatherPad; + homepage = "https://github.com/tsujan/FeatherPad"; platforms = platforms.linux; maintainers = [ maintainers.flosse ]; license = licenses.gpl3; diff --git a/pkgs/applications/editors/flpsed/default.nix b/pkgs/applications/editors/flpsed/default.nix index cbff8e606f2..3d6aac7e18e 100644 --- a/pkgs/applications/editors/flpsed/default.nix +++ b/pkgs/applications/editors/flpsed/default.nix @@ -19,7 +19,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "WYSIWYG PostScript annotator"; - homepage = http://flpsed.org/flpsed.html; + homepage = "https://flpsed.org/flpsed.html"; license = licenses.gpl3; platforms = platforms.linux; maintainers = with maintainers; [ ]; diff --git a/pkgs/applications/editors/focuswriter/default.nix b/pkgs/applications/editors/focuswriter/default.nix index b08e3b5fa23..30e8af7facd 100644 --- a/pkgs/applications/editors/focuswriter/default.nix +++ b/pkgs/applications/editors/focuswriter/default.nix @@ -2,11 +2,11 @@ mkDerivation rec { pname = "focuswriter"; - version = "1.7.3"; + version = "1.7.5"; src = fetchurl { url = "https://gottcode.org/focuswriter/focuswriter-${version}-src.tar.bz2"; - sha256 = "155wf7z1g2yx6fb41w29kcb0m2rhnk9ci5yw882yy86s4x20b1jq"; + sha256 = "19fqxyas941xcqjj68qpj42ayq0vw5rbd4ms5kvx8jyspp7wysqc"; }; nativeBuildInputs = [ pkgconfig qmake qttools ]; @@ -22,6 +22,6 @@ mkDerivation rec { license = licenses.gpl3Plus; maintainers = with maintainers; [ madjar ]; platforms = platforms.linux; - homepage = https://gottcode.org/focuswriter/; + homepage = "https://gottcode.org/focuswriter/"; }; } diff --git a/pkgs/applications/editors/fte/default.nix b/pkgs/applications/editors/fte/default.nix index d32a3fb5f1b..f19a264c06a 100644 --- a/pkgs/applications/editors/fte/default.nix +++ b/pkgs/applications/editors/fte/default.nix @@ -15,13 +15,13 @@ stdenv.mkDerivation rec { }; src = [ ftesrc ftecommon ]; - buildFlags = "PREFIX=$(out)"; + buildFlags = [ "PREFIX=$(out)" ]; - installFlags = "PREFIX=$(out) INSTALL_NONROOT=1"; + installFlags = [ "PREFIX=$(out)" "INSTALL_NONROOT=1" ]; meta = with stdenv.lib; { description = "A free text editor for developers"; - homepage = http://fte.sourceforge.net/; + homepage = "http://fte.sourceforge.net/"; license = licenses.gpl2; maintainers = [ maintainers.volth ]; platforms = platforms.all; diff --git a/pkgs/applications/editors/ghostwriter/default.nix b/pkgs/applications/editors/ghostwriter/default.nix index 1e07902365d..8c1b95a1d26 100644 --- a/pkgs/applications/editors/ghostwriter/default.nix +++ b/pkgs/applications/editors/ghostwriter/default.nix @@ -2,13 +2,13 @@ mkDerivation rec { pname = "ghostwriter"; - version = "1.8.0"; + version = "1.8.1"; src = fetchFromGitHub { owner = "wereturtle"; repo = pname; rev = "v${version}"; - sha256 = "13yn82m1l2pq93wbl569a2lzpc3sn8a8g30hsgdch1l9xlmhwran"; + sha256 = "0jc6szfh5sdnafhwsr1xv7cn1fznniq58bix41hb9wlbkvq7wzi6"; }; nativeBuildInputs = [ qmake pkgconfig qttools ]; diff --git a/pkgs/applications/editors/glow/default.nix b/pkgs/applications/editors/glow/default.nix new file mode 100644 index 00000000000..928291940cf --- /dev/null +++ b/pkgs/applications/editors/glow/default.nix @@ -0,0 +1,24 @@ +{ lib, buildGoModule, fetchFromGitHub }: + +buildGoModule rec { + pname = "glow"; + version = "0.2.0"; + + src = fetchFromGitHub { + owner = "charmbracelet"; + repo = "glow"; + rev = "v${version}"; + sha256 = "0vhl8d7xxqqyl916nh8sgm1xdaf7xlc3r18464bd2av22q9yz68n"; + }; + + modSha256 = "0r0yq7kgz7i1wf4gxxihdrn1c8mi4wcyhadncxbln24s9c5apxsf"; + + buildFlagsArray = [ "-ldflags=" "-X=main.Version=${version}" ]; + + meta = with lib; { + description = "Render markdown on the CLI"; + homepage = "https://github.com/charmbracelet/glow"; + license = licenses.mit; + maintainers = with maintainers; [ ehmry filalex77 ]; + }; +} diff --git a/pkgs/applications/editors/gnome-builder/default.nix b/pkgs/applications/editors/gnome-builder/default.nix index bda0552e752..c58d12a58f8 100644 --- a/pkgs/applications/editors/gnome-builder/default.nix +++ b/pkgs/applications/editors/gnome-builder/default.nix @@ -5,7 +5,6 @@ , docbook_xsl , docbook_xml_dtd_43 , fetchurl -, fetchpatch , flatpak , gnome3 , libgit2-glib @@ -18,6 +17,7 @@ , jsonrpc-glib , libdazzle , libpeas +, libportal , libxml2 , meson , ninja @@ -39,25 +39,13 @@ stdenv.mkDerivation rec { pname = "gnome-builder"; - version = "3.34.1"; + version = "3.36.0"; src = fetchurl { url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; - sha256 = "19018pq94cxf6fywd7fsmy98x56by5zfmh140pl530gaaw84cvhb"; + sha256 = "G0nl6DVzb3k6cN2guFIe/XNhFNhKbaq5e8wz62VA0Qo="; }; - patches = [ - # Fix build with Meson 0.52 - (fetchpatch { - url = "https://gitlab.gnome.org/GNOME/gnome-builder/commit/c8b862b491cfbbb4f79b24d7cd90e4fb1f37cb9f.patch"; - sha256 = "0n8kg7nnjqmbnyag1ps6dvrlqrxc94djjncqx10d6y7ijwdxf4w8"; - }) - (fetchpatch { - url = "https://gitlab.gnome.org/GNOME/gnome-builder/commit/da26dfbf78468f5ed724e022b300a07862a95833.patch"; - sha256 = "0psa65bzjpjj7vc5rknv2w2dz3p50jjv10s6j2fd6lpw8j2800k4"; - }) - ]; - nativeBuildInputs = [ appstream-glib desktop-file-utils @@ -65,7 +53,7 @@ stdenv.mkDerivation rec { docbook_xml_dtd_43 gobject-introspection gtk-doc - (meson.override ({ inherit stdenv; })) + meson ninja pkgconfig python3 @@ -80,6 +68,7 @@ stdenv.mkDerivation rec { gnome3.glade libgit2-glib libpeas + libportal vte gspell gtk3 @@ -109,8 +98,6 @@ stdenv.mkDerivation rec { patchShebangs build-aux/meson/post_install.py ''; - NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/gio-unix-2.0"; - mesonFlags = [ "-Dpython_libprefix=${python3.libPrefix}" "-Ddocs=true" @@ -162,9 +149,9 @@ stdenv.mkDerivation rec { currently recommend running gnome-builder inside a nix-shell with appropriate dependencies loaded. ''; - homepage = https://wiki.gnome.org/Apps/Builder; + homepage = "https://wiki.gnome.org/Apps/Builder"; license = licenses.gpl3Plus; - maintainers = gnome3.maintainers; + maintainers = teams.gnome.members; platforms = platforms.linux; }; } diff --git a/pkgs/applications/editors/gnome-latex/default.nix b/pkgs/applications/editors/gnome-latex/default.nix index cfd3a428990..33a32132934 100644 --- a/pkgs/applications/editors/gnome-latex/default.nix +++ b/pkgs/applications/editors/gnome-latex/default.nix @@ -38,7 +38,7 @@ in stdenv.mkDerivation { passthru.updateScript = gnome3.updateScript { packageName = pname; }; meta = with stdenv.lib; { - homepage = https://wiki.gnome.org/Apps/GNOME-LaTeX; + homepage = "https://wiki.gnome.org/Apps/GNOME-LaTeX"; description = "A LaTeX editor for the GNOME desktop"; maintainers = [ maintainers.manveru ]; license = licenses.gpl3Plus; diff --git a/pkgs/applications/editors/gobby/default.nix b/pkgs/applications/editors/gobby/default.nix index f194227932d..e3d039e4223 100644 --- a/pkgs/applications/editors/gobby/default.nix +++ b/pkgs/applications/editors/gobby/default.nix @@ -19,7 +19,7 @@ in stdenv.mkDerivation { preConfigure = "./autogen.sh"; meta = with stdenv.lib; { - homepage = http://gobby.0x539.de/; + homepage = "http://gobby.0x539.de/"; description = "A GTK-based collaborative editor supporting multiple documents in one session and a multi-user chat"; license = stdenv.lib.licenses.gpl2Plus; maintainers = [ maintainers.phreedom ]; diff --git a/pkgs/applications/editors/heme/default.nix b/pkgs/applications/editors/heme/default.nix index 4e67fc304b1..7d1830c842b 100644 --- a/pkgs/applications/editors/heme/default.nix +++ b/pkgs/applications/editors/heme/default.nix @@ -21,7 +21,7 @@ stdenv.mkDerivation rec { ''; meta = with lib; { description = "Portable and fast console hex editor for unix operating systems"; - homepage = http://heme.sourceforge.net/; + homepage = "http://heme.sourceforge.net/"; license = licenses.gpl2; platforms = platforms.linux; maintainers = with maintainers; [ cstrahan ]; diff --git a/pkgs/applications/editors/hexcurse/default.nix b/pkgs/applications/editors/hexcurse/default.nix index a6437f070b9..a1b90b83d58 100644 --- a/pkgs/applications/editors/hexcurse/default.nix +++ b/pkgs/applications/editors/hexcurse/default.nix @@ -11,22 +11,23 @@ stdenv.mkDerivation rec { sha256 = "17ckkxfzbqvvfdnh10if4aqdcq98q3vl6dn1v6f4lhr4ifnyjdlk"; }; buildInputs = [ ncurses ]; + NIX_CFLAGS_COMPILE = [ "-Wno-error=stringop-overflow" "-Wno-error=stringop-truncation" ]; patches = [ # gcc7 compat (fetchpatch { - url = https://github.com/LonnyGomes/hexcurse/commit/d808cb7067d1df067f8b707fabbfaf9f8931484c.patch; + url = "https://github.com/LonnyGomes/hexcurse/commit/d808cb7067d1df067f8b707fabbfaf9f8931484c.patch"; sha256 = "0h8345blmc401c6bivf0imn4cwii67264yrzxg821r46wrnfvyi2"; }) # gcc7 compat (fetchpatch { - url = https://github.com/LonnyGomes/hexcurse/commit/716b5d58ac859cc240b8ccb9cbd79ace3e0593c1.patch; + url = "https://github.com/LonnyGomes/hexcurse/commit/716b5d58ac859cc240b8ccb9cbd79ace3e0593c1.patch"; sha256 = "0v6gbp6pjpmnzswlf6d97aywiy015g3kcmfrrkspsbb7lh1y3nix"; }) ]; - + meta = with lib; { description = "ncurses-based console hexeditor written in C"; - homepage = https://github.com/LonnyGomes/hexcurse; + homepage = "https://github.com/LonnyGomes/hexcurse"; license = licenses.gpl2; platforms = platforms.linux; maintainers = with maintainers; [ cstrahan ]; diff --git a/pkgs/applications/editors/hexdino/default.nix b/pkgs/applications/editors/hexdino/default.nix index ef3635aa8d2..79e0027d509 100644 --- a/pkgs/applications/editors/hexdino/default.nix +++ b/pkgs/applications/editors/hexdino/default.nix @@ -1,6 +1,7 @@ { stdenv, fetchFromGitHub, rustPlatform, ncurses }: -rustPlatform.buildRustPackage rec { - name = "hexdino-${version}"; + +rustPlatform.buildRustPackage { + pname = "hexdino"; version = "0.1.0"; src = fetchFromGitHub { @@ -10,14 +11,13 @@ rustPlatform.buildRustPackage rec { sha256 = "11mz07735gxqfamjcjjmxya6swlvr1p77sgd377zjcmd6z54gwyf"; }; - cargoSha256 = "0qa8ypp5a7sf1gic482zh3i6s94w6k6bgmk5ynfvwi7g49ql7c4z"; - verifyCargoDeps = true; + cargoSha256 = "06ghcd4j751mdkzwb88nqwk8la4zdb137y0iqrkpykkfx0as43x3"; buildInputs = [ ncurses ]; meta = with stdenv.lib; { description = "A hex editor with vim like keybindings written in Rust"; - homepage = https://github.com/Luz/hexdino; + homepage = "https://github.com/Luz/hexdino"; license = licenses.mit; maintainers = [ maintainers.luz ]; platforms = platforms.all; diff --git a/pkgs/applications/editors/hexedit/default.nix b/pkgs/applications/editors/hexedit/default.nix index 09191b38e1b..916dd4a1594 100644 --- a/pkgs/applications/editors/hexedit/default.nix +++ b/pkgs/applications/editors/hexedit/default.nix @@ -13,7 +13,7 @@ stdenv.mkDerivation rec { meta = { description = "View and edit files in hexadecimal or in ASCII"; - homepage = http://prigaux.chez.com/hexedit.html; + homepage = "http://prigaux.chez.com/hexedit.html"; license = stdenv.lib.licenses.gpl2Plus; platforms = stdenv.lib.platforms.unix; }; diff --git a/pkgs/applications/editors/howl/default.nix b/pkgs/applications/editors/howl/default.nix index 5e5f2f8563c..975016d5541 100644 --- a/pkgs/applications/editors/howl/default.nix +++ b/pkgs/applications/editors/howl/default.nix @@ -28,7 +28,7 @@ stdenv.mkDerivation rec { ''; meta = { - homepage = https://howl.io/; + homepage = "https://howl.io/"; description = "A general purpose, fast and lightweight editor with a keyboard-centric minimalistic user interface"; license = licenses.mit; maintainers = with maintainers; [ pacien ]; diff --git a/pkgs/applications/editors/ht/default.nix b/pkgs/applications/editors/ht/default.nix index fc1fe969bdc..096b69a5e82 100644 --- a/pkgs/applications/editors/ht/default.nix +++ b/pkgs/applications/editors/ht/default.nix @@ -19,7 +19,7 @@ stdenv.mkDerivation rec { meta = with lib; { description = "File editor/viewer/analyzer for executables"; - homepage = http://hte.sourceforge.net; + homepage = "http://hte.sourceforge.net"; license = licenses.gpl2; platforms = platforms.linux; maintainers = with maintainers; [ cstrahan ]; diff --git a/pkgs/applications/editors/jedit/default.nix b/pkgs/applications/editors/jedit/default.nix index 21a6a847518..fd8b5337251 100644 --- a/pkgs/applications/editors/jedit/default.nix +++ b/pkgs/applications/editors/jedit/default.nix @@ -3,11 +3,11 @@ let version = "5.2.0"; bcpg = fetchurl { - url = http://central.maven.org/maven2/org/bouncycastle/bcpg-jdk16/1.46/bcpg-jdk16-1.46.jar; + url = "http://central.maven.org/maven2/org/bouncycastle/bcpg-jdk16/1.46/bcpg-jdk16-1.46.jar"; sha256 = "16xhmwks4l65m5x150nd23y5lyppha9sa5fj65rzhxw66gbli82d"; }; jsr305 = fetchurl { - url = http://central.maven.org/maven2/com/google/code/findbugs/jsr305/2.0.0/jsr305-2.0.0.jar; + url = "http://central.maven.org/maven2/com/google/code/findbugs/jsr305/2.0.0/jsr305-2.0.0.jar"; sha256 = "0s74pv8qjc42c7q8nbc0c3b1hgx0bmk3b8vbk1z80p4bbgx56zqy"; }; in @@ -58,7 +58,7 @@ stdenv.mkDerivation { meta = with stdenv.lib; { description = "Mature programmer's text editor (Java based)"; - homepage = http://www.jedit.org; + homepage = "http://www.jedit.org"; license = licenses.gpl2; platforms = platforms.unix; maintainers = [ maintainers.vbgl ]; diff --git a/pkgs/applications/editors/jetbrains/default.nix b/pkgs/applications/editors/jetbrains/default.nix index 48af3c9b014..b98acae2a8f 100644 --- a/pkgs/applications/editors/jetbrains/default.nix +++ b/pkgs/applications/editors/jetbrains/default.nix @@ -15,7 +15,7 @@ let inherit name version src wmClass jdk; product = "CLion"; meta = with stdenv.lib; { - homepage = https://www.jetbrains.com/clion/; + homepage = "https://www.jetbrains.com/clion/"; inherit description license; longDescription = '' Enhancing productivity for every C and C++ @@ -83,7 +83,7 @@ let inherit name version src wmClass jdk; product = "DataGrip"; meta = with stdenv.lib; { - homepage = https://www.jetbrains.com/datagrip/; + homepage = "https://www.jetbrains.com/datagrip/"; inherit description license; longDescription = '' DataGrip is a new IDE from JetBrains built for database admins. @@ -100,7 +100,7 @@ let inherit name version src wmClass jdk; product = "Goland"; meta = with stdenv.lib; { - homepage = https://www.jetbrains.com/go/; + homepage = "https://www.jetbrains.com/go/"; inherit description license; longDescription = '' Goland is the codename for a new commercial IDE by JetBrains @@ -125,7 +125,7 @@ let inherit name version src wmClass jdk; product = "IDEA"; meta = with stdenv.lib; { - homepage = https://www.jetbrains.com/idea/; + homepage = "https://www.jetbrains.com/idea/"; inherit description license; longDescription = '' IDE for Java SE, Groovy & Scala development Powerful @@ -143,14 +143,14 @@ let inherit name version src wmClass jdk; product = "PhpStorm"; meta = with stdenv.lib; { - homepage = https://www.jetbrains.com/phpstorm/; + homepage = "https://www.jetbrains.com/phpstorm/"; inherit description license; longDescription = '' PhpStorm provides an editor for PHP, HTML and JavaScript with on-the-fly code analysis, error prevention and automated refactorings for PHP and JavaScript code. ''; - maintainers = with maintainers; [ schristo ]; + maintainers = with maintainers; [ schristo ma27 ]; platforms = platforms.linux; }; }); @@ -160,7 +160,7 @@ let inherit name version src wmClass jdk; product = "PyCharm"; meta = with stdenv.lib; { - homepage = https://www.jetbrains.com/pycharm/; + homepage = "https://www.jetbrains.com/pycharm/"; inherit description license; longDescription = '' Python IDE with complete set of tools for productive @@ -187,7 +187,7 @@ let inherit name version src wmClass jdk; product = "Rider"; meta = with stdenv.lib; { - homepage = https://www.jetbrains.com/rider/; + homepage = "https://www.jetbrains.com/rider/"; inherit description license; longDescription = '' JetBrains Rider is a new .NET IDE based on the IntelliJ @@ -213,7 +213,7 @@ let inherit name version src wmClass jdk; product = "RubyMine"; meta = with stdenv.lib; { - homepage = https://www.jetbrains.com/ruby/; + homepage = "https://www.jetbrains.com/ruby/"; inherit description license; longDescription = description; maintainers = with maintainers; [ edwtjo ]; @@ -226,7 +226,7 @@ let inherit name version src wmClass jdk; product = "WebStorm"; meta = with stdenv.lib; { - homepage = https://www.jetbrains.com/webstorm/; + homepage = "https://www.jetbrains.com/webstorm/"; inherit description license; longDescription = '' WebStorm provides an editor for HTML, JavaScript (incl. Node.js), @@ -250,12 +250,12 @@ in clion = buildClion rec { name = "clion-${version}"; - version = "2019.2.5"; /* updated by script */ + version = "2019.3.5"; /* updated by script */ description = "C/C++ IDE. New. Intelligent. Cross-platform"; license = stdenv.lib.licenses.unfree; src = fetchurl { url = "https://download.jetbrains.com/cpp/CLion-${version}.tar.gz"; - sha256 = "0p0shikhf73ayflv5bm212kz06hiy3brww9h9ijjp6lcadxc9pmf"; /* updated by script */ + sha256 = "0qmhp0sqcknwgsirnbi6461lzr7mxgrgjsd0q5cxnhscbbczl7pk"; /* updated by script */ }; wmClass = "jetbrains-clion"; update-channel = "CLion RELEASE"; # channel's id as in http://www.jetbrains.com/updates/updates.xml @@ -263,12 +263,12 @@ in datagrip = buildDataGrip rec { name = "datagrip-${version}"; - version = "2019.2.6"; /* updated by script */ + version = "2020.1"; /* updated by script */ description = "Your Swiss Army Knife for Databases and SQL"; license = stdenv.lib.licenses.unfree; src = fetchurl { url = "https://download.jetbrains.com/datagrip/${name}.tar.gz"; - sha256 = "0g57njcklyskadxmvwb0r0z3ckq9qmcwh8qd80w396gj8fgbg50g"; /* updated by script */ + sha256 = "1z3asz9fp3xnmbhngar60g8rba83kx987ar67j5m8ws7cijqlzix"; /* updated by script */ }; wmClass = "jetbrains-datagrip"; update-channel = "DataGrip RELEASE"; @@ -276,12 +276,12 @@ in goland = buildGoland rec { name = "goland-${version}"; - version = "2019.2.4"; /* updated by script */ + version = "2019.3.4"; /* updated by script */ description = "Up and Coming Go IDE"; license = stdenv.lib.licenses.unfree; src = fetchurl { url = "https://download.jetbrains.com/go/${name}.tar.gz"; - sha256 = "0rkyw3532qvr6jhr09m3h0ssdy5ilfgfvqqliyf0cacwzw9lfv0p"; /* updated by script */ + sha256 = "01dik4ppn4a6m1bmz6cmdnyrilh2v190lrys65n4nps03sjy2v0b"; /* updated by script */ }; wmClass = "jetbrains-goland"; update-channel = "GoLand RELEASE"; @@ -289,12 +289,12 @@ in idea-community = buildIdea rec { name = "idea-community-${version}"; - version = "2019.2.4"; /* updated by script */ + version = "2020.1"; /* updated by script */ description = "Integrated Development Environment (IDE) by Jetbrains, community edition"; license = stdenv.lib.licenses.asl20; src = fetchurl { url = "https://download.jetbrains.com/idea/ideaIC-${version}.tar.gz"; - sha256 = "012vmclx6kg85gffgc9mr3fp1ffgx20dz7xvafk7c1iynawx8wgq"; /* updated by script */ + sha256 = "1rgqr7fn1sy0zbkfmrw3ll8jps345br3y4aqhynyr48mxiwi4c7s"; /* updated by script */ }; wmClass = "jetbrains-idea-ce"; update-channel = "IntelliJ IDEA RELEASE"; @@ -302,12 +302,12 @@ in idea-ultimate = buildIdea rec { name = "idea-ultimate-${version}"; - version = "2019.2.4"; /* updated by script */ + version = "2020.1"; /* updated by script */ description = "Integrated Development Environment (IDE) by Jetbrains, requires paid license"; license = stdenv.lib.licenses.unfree; src = fetchurl { url = "https://download.jetbrains.com/idea/ideaIU-${version}-no-jbr.tar.gz"; - sha256 = "09mz4dx3zbnqw0vh4iqr8sn2s8mvgr7zvn4k7kqivsiv8f79g90a"; /* updated by script */ + sha256 = "0lrimmczl49azwsms56l4dg7himzr991a209r921jxa32rdjfq6x"; /* updated by script */ }; wmClass = "jetbrains-idea"; update-channel = "IntelliJ IDEA RELEASE"; @@ -315,12 +315,12 @@ in phpstorm = buildPhpStorm rec { name = "phpstorm-${version}"; - version = "2019.2.4"; /* updated by script */ + version = "2019.3.4"; /* updated by script */ description = "Professional IDE for Web and PHP developers"; license = stdenv.lib.licenses.unfree; src = fetchurl { url = "https://download.jetbrains.com/webide/PhpStorm-${version}.tar.gz"; - sha256 = "1bx8s4hh96pjfyccldwfarwv5fky6kg2kyc0h2arhfzwq1pbaisl"; /* updated by script */ + sha256 = "1bxi2i6vxpw8x4mvb4d5plqy4r938xjf8nkimfg0sspramcc4r5m"; /* updated by script */ }; wmClass = "jetbrains-phpstorm"; update-channel = "PhpStorm RELEASE"; @@ -328,12 +328,12 @@ in pycharm-community = buildPycharm rec { name = "pycharm-community-${version}"; - version = "2019.2.4"; /* updated by script */ + version = "2020.1"; /* updated by script */ description = "PyCharm Community Edition"; license = stdenv.lib.licenses.asl20; src = fetchurl { url = "https://download.jetbrains.com/python/${name}.tar.gz"; - sha256 = "00dl3yx13lw8qyc23dirw96vm2d8c6zsx73ds1ha8zycfh6hkxf8"; /* updated by script */ + sha256 = "1ld9hh9bxirsv5rwrx7wbmfaxwvxfw7cjfjqi8l0q0n93v89z90s"; /* updated by script */ }; wmClass = "jetbrains-pycharm-ce"; update-channel = "PyCharm RELEASE"; @@ -341,12 +341,12 @@ in pycharm-professional = buildPycharm rec { name = "pycharm-professional-${version}"; - version = "2019.2.4"; /* updated by script */ + version = "2020.1"; /* updated by script */ description = "PyCharm Professional Edition"; license = stdenv.lib.licenses.unfree; src = fetchurl { url = "https://download.jetbrains.com/python/${name}.tar.gz"; - sha256 = "14ab1cvypanwwn0k1hrx3rl964av6pvridgc19z49idw5wpgxgw7"; /* updated by script */ + sha256 = "1swd2qfhsa6i1aq7z2s183d0hif2gmk1kkw9ns4aybny0wvvnqw2"; /* updated by script */ }; wmClass = "jetbrains-pycharm"; update-channel = "PyCharm RELEASE"; @@ -354,12 +354,12 @@ in rider = buildRider rec { name = "rider-${version}"; - version = "2019.2.3"; /* updated by script */ + version = "2019.3.4"; /* updated by script */ description = "A cross-platform .NET IDE based on the IntelliJ platform and ReSharper"; license = stdenv.lib.licenses.unfree; src = fetchurl { url = "https://download.jetbrains.com/rider/JetBrains.Rider-${version}.tar.gz"; - sha256 = "13br6zmqpvi9hcd6wdnalkhj50gzr7cwrdh4v2bpda77iby2pz93"; /* updated by script */ + sha256 = "17axv0v31dpmjcaij5qpqqm071mwhmf1ahy0y0h96limq8cw9872"; /* updated by script */ }; wmClass = "jetbrains-rider"; update-channel = "Rider RELEASE"; @@ -367,12 +367,12 @@ in ruby-mine = buildRubyMine rec { name = "ruby-mine-${version}"; - version = "2019.2.4"; /* updated by script */ + version = "2019.3.4"; /* updated by script */ description = "The Most Intelligent Ruby and Rails IDE"; license = stdenv.lib.licenses.unfree; src = fetchurl { url = "https://download.jetbrains.com/ruby/RubyMine-${version}.tar.gz"; - sha256 = "1dqp222zvi8ikqdkprmqihyjxiq90vd0a0zl5935xjg1mzf8ald9"; /* updated by script */ + sha256 = "13lwrqrkg5vk0azqfhr67psgv1idvkxwjxly2xawr6cy5vnrcd8s"; /* updated by script */ }; wmClass = "jetbrains-rubymine"; update-channel = "RubyMine RELEASE"; @@ -380,12 +380,12 @@ in webstorm = buildWebStorm rec { name = "webstorm-${version}"; - version = "2019.2.4"; /* updated by script */ + version = "2020.1"; /* updated by script */ description = "Professional IDE for Web and JavaScript development"; license = stdenv.lib.licenses.unfree; src = fetchurl { url = "https://download.jetbrains.com/webstorm/WebStorm-${version}.tar.gz"; - sha256 = "0iz9qgrbhn1rxr8n5q1y7klfs27j1f55pw8hqbl2ln4df94zqi5j"; /* updated by script */ + sha256 = "1c68li5jxsjml0macdb0s04llwwq1hni5z8vq2zdfcn5zm3xwpif"; /* updated by script */ }; wmClass = "jetbrains-webstorm"; update-channel = "WebStorm RELEASE"; diff --git a/pkgs/applications/editors/joe/default.nix b/pkgs/applications/editors/joe/default.nix index 6f5839b3d06..bb227512387 100644 --- a/pkgs/applications/editors/joe/default.nix +++ b/pkgs/applications/editors/joe/default.nix @@ -11,7 +11,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "A full featured terminal-based screen editor"; - homepage = https://joe-editor.sourceforge.io; + homepage = "https://joe-editor.sourceforge.io"; license = licenses.gpl2; platforms = platforms.unix; }; diff --git a/pkgs/applications/editors/jucipp/default.nix b/pkgs/applications/editors/jucipp/default.nix index 70b2d3c148d..53549986ed2 100644 --- a/pkgs/applications/editors/jucipp/default.nix +++ b/pkgs/applications/editors/jucipp/default.nix @@ -10,7 +10,7 @@ stdenv.mkDerivation rec { version = "1.2.3"; meta = { - homepage = https://github.com/cppit/jucipp; + homepage = "https://github.com/cppit/jucipp"; description = "A lightweight, platform independent C++-IDE with support for C++11, C++14, and experimental C++17 features depending on libclang version"; license = licenses.mit; platforms = platforms.linux; @@ -61,7 +61,7 @@ stdenv.mkDerivation rec { sed -i 's|liblldb LIBLLDB_LIBRARIES|liblldb LIBNOTHING|g' CMakeLists.txt sed -i 's|> arguments;|> arguments; ${lintIncludes}|g' src/source_clang.cc ''; - cmakeFlags = "-DLIBLLDB_LIBRARIES=${stdenv.lib.makeLibraryPath [ llvmPackages.lldb ]}/liblldb.so"; + cmakeFlags = [ "-DLIBLLDB_LIBRARIES=${stdenv.lib.makeLibraryPath [ llvmPackages.lldb ]}/liblldb.so" ]; postInstall = '' mv $out/bin/juci $out/bin/.juci makeWrapper "$out/bin/.juci" "$out/bin/juci" \ diff --git a/pkgs/applications/editors/jupp/default.nix b/pkgs/applications/editors/jupp/default.nix index 4a44b35a0fa..79db7b8a558 100644 --- a/pkgs/applications/editors/jupp/default.nix +++ b/pkgs/applications/editors/jupp/default.nix @@ -1,18 +1,16 @@ -{ stdenv, fetchurl -, ncurses, gpm -}: +{ stdenv, fetchurl, ncurses, gpm }: stdenv.mkDerivation rec { pname = "jupp"; - version = "3.1"; - srcName = "joe-3.1jupp31"; + version = "39"; + srcName = "joe-3.1${pname}${version}"; src = fetchurl { urls = [ "https://www.mirbsd.org/MirOS/dist/jupp/${srcName}.tgz" "https://pub.allbsd.org/MirOS/dist/jupp/${srcName}.tgz" ]; - sha256 = "1fnf9jsd6p4jyybkhjjs328qx38ywy8w029ngc7j7kqp0ixn0l0s"; + sha256 = "14gys92dy3kq9ikigry7q2x4w5v2z76d97vp212bddrxiqy5np8d"; }; preConfigure = "chmod +x ./configure"; @@ -37,7 +35,7 @@ stdenv.mkDerivation rec { and has a lot of bugs fixed. It is based upon an older version of joe because these behave better overall. ''; - homepage = http://mirbsd.de/jupp; + homepage = "http://www.mirbsd.org/jupp.htm"; license = licenses.gpl1; maintainers = with maintainers; [ AndersonTorres ]; }; diff --git a/pkgs/applications/editors/jupyter/kernel.nix b/pkgs/applications/editors/jupyter/kernel.nix index 43cea9fcae9..fba884f5a2f 100644 --- a/pkgs/applications/editors/jupyter/kernel.nix +++ b/pkgs/applications/editors/jupyter/kernel.nix @@ -67,7 +67,7 @@ in meta = { description = "Wrapper to create jupyter notebook kernel definitions"; - homepage = https://jupyter.org/; + homepage = "https://jupyter.org/"; maintainers = with maintainers; [ aborsu ]; }; }; diff --git a/pkgs/applications/editors/kakoune/default.nix b/pkgs/applications/editors/kakoune/default.nix index a6580581f85..6a468bd67eb 100644 --- a/pkgs/applications/editors/kakoune/default.nix +++ b/pkgs/applications/editors/kakoune/default.nix @@ -4,12 +4,12 @@ with stdenv.lib; stdenv.mkDerivation rec { pname = "kakoune-unwrapped"; - version = "2019.12.10"; + version = "2020.01.16"; src = fetchFromGitHub { repo = "kakoune"; owner = "mawww"; rev = "v${version}"; - sha256 = "0cb3ndlczxvxnzb91s4idxx0cy30mnrc4znsbjpnch68fvpm0x2f"; + sha256 = "16v6z1nzj54j19fraxhb18jdby4zfs1br91gxpg9s2s4nsk0km0b"; }; nativeBuildInputs = [ pkgconfig ]; buildInputs = [ ncurses asciidoc docbook_xsl libxslt ]; @@ -31,7 +31,7 @@ stdenv.mkDerivation rec { ''; meta = { - homepage = http://kakoune.org/; + homepage = "http://kakoune.org/"; description = "A vim inspired text editor"; license = licenses.publicDomain; maintainers = with maintainers; [ vrthra ]; diff --git a/pkgs/applications/editors/kdevelop5/kdev-php.nix b/pkgs/applications/editors/kdevelop5/kdev-php.nix index 19fef1c42dc..72ef0810704 100644 --- a/pkgs/applications/editors/kdevelop5/kdev-php.nix +++ b/pkgs/applications/editors/kdevelop5/kdev-php.nix @@ -2,11 +2,11 @@ stdenv.mkDerivation rec { pname = "kdev-php"; - version = "5.4.5"; + version = "5.5.0"; src = fetchurl { url = "https://github.com/KDE/${pname}/archive/v${version}.tar.gz"; - sha256 = "12j0l2k6ii9ajp90lil3apk0xsz56cb549ighabik73a1w3c6ib6"; + sha256 = "1hd3ckayrwszda517zfvhihrfmzq4m3kcsrz4sqkbvib0giwsfkp"; }; nativeBuildInputs = [ cmake extra-cmake-modules ]; diff --git a/pkgs/applications/editors/kdevelop5/kdev-python.nix b/pkgs/applications/editors/kdevelop5/kdev-python.nix index 7723b9482a2..275aaba4f2e 100644 --- a/pkgs/applications/editors/kdevelop5/kdev-python.nix +++ b/pkgs/applications/editors/kdevelop5/kdev-python.nix @@ -2,11 +2,11 @@ stdenv.mkDerivation rec { pname = "kdev-python"; - version = "5.4.5"; + version = "5.5.0"; src = fetchurl { url = "https://github.com/KDE/${pname}/archive/v${version}.tar.gz"; - sha256 = "1iq4lxbl8gq4qvydyz34ild4izw21cp22adlz9dc054v0wis331j"; + sha256 = "0kna6vkxc6lrfzb3gzn11qvw8jpa86gi1k996hdk83gn0lhmkvx5"; }; cmakeFlags = [ diff --git a/pkgs/applications/editors/kdevelop5/kdevelop-pg-qt.nix b/pkgs/applications/editors/kdevelop5/kdevelop-pg-qt.nix index 0ed4fe0aaad..ad83bd43af2 100644 --- a/pkgs/applications/editors/kdevelop5/kdevelop-pg-qt.nix +++ b/pkgs/applications/editors/kdevelop5/kdevelop-pg-qt.nix @@ -2,7 +2,7 @@ let pname = "kdevelop-pg-qt"; - version = "2.2.0"; + version = "2.2.1"; in stdenv.mkDerivation rec { @@ -10,7 +10,7 @@ stdenv.mkDerivation rec { src = fetchurl { url = "mirror://kde/stable/${pname}/${version}/src/${name}.tar.xz"; - sha256 = "01a4y98hf8zlrdf5l8f4izqh4n3j3xs93j8ny5a3f4z50nb6hxq7"; + sha256 = "0ay6m6j6zgrbcm48f14bass83bk4w5qnx76xihc05p69i9w32ff1"; }; nativeBuildInputs = [ cmake pkgconfig extra-cmake-modules ]; @@ -25,7 +25,7 @@ stdenv.mkDerivation rec { KDevelop-PG-Qt is the parser-generator from KDevplatform. It is used for some KDevelop-languagesupport-plugins (Ruby, PHP, CSS...). ''; - homepage = https://www.kdevelop.org; + homepage = "https://www.kdevelop.org"; license = with stdenv.lib.licenses; [ lgpl2Plus ]; }; } diff --git a/pkgs/applications/editors/kdevelop5/kdevelop.nix b/pkgs/applications/editors/kdevelop5/kdevelop.nix index 21b469347df..51dfbbab61e 100644 --- a/pkgs/applications/editors/kdevelop5/kdevelop.nix +++ b/pkgs/applications/editors/kdevelop5/kdevelop.nix @@ -10,11 +10,11 @@ mkDerivation rec { pname = "kdevelop"; - version = "5.4.5"; + version = "5.5.0"; src = fetchurl { url = "mirror://kde/stable/${pname}/${version}/src/${pname}-${version}.tar.xz"; - sha256 = "08vhbg9ql0402bw3y3xw1kdxhig9sv3ss8g0h4477vy3z17m1h4j"; + sha256 = "0438721v24pim5q0q54ivsws9a679fm7ymrm1nn9g1fv06qsm4d8"; }; nativeBuildInputs = [ diff --git a/pkgs/applications/editors/kile/default.nix b/pkgs/applications/editors/kile/default.nix index 494ad686ee3..f928dbb6ad1 100644 --- a/pkgs/applications/editors/kile/default.nix +++ b/pkgs/applications/editors/kile/default.nix @@ -54,7 +54,7 @@ mkDerivation rec { meta = { description = "Kile is a user friendly TeX/LaTeX authoring tool for the KDE desktop environment"; - homepage = https://www.kde.org/applications/office/kile/; + homepage = "https://www.kde.org/applications/office/kile/"; maintainers = with lib.maintainers; [ fridh ]; license = lib.licenses.gpl2Plus; }; diff --git a/pkgs/applications/editors/kodestudio/default.nix b/pkgs/applications/editors/kodestudio/default.nix index 9d0d91f4be5..71fa2bcd41b 100644 --- a/pkgs/applications/editors/kodestudio/default.nix +++ b/pkgs/applications/editors/kodestudio/default.nix @@ -125,8 +125,8 @@ in (with JavaScript coming soon). Using Kha or Kore you can access all hardware at the lowest possible level in a completely portable way. ''; - homepage = http://kode.tech/; - downloadPage = https://github.com/Kode/KodeStudio/releases; + homepage = "http://kode.tech/"; + downloadPage = "https://github.com/Kode/KodeStudio/releases"; license = licenses.mit; maintainers = [ maintainers.patternspandemic ]; platforms = [ "x86_64-linux" "i686-cygwin" ]; diff --git a/pkgs/applications/editors/leafpad/default.nix b/pkgs/applications/editors/leafpad/default.nix index 508d2329edc..94fa0be0173 100644 --- a/pkgs/applications/editors/leafpad/default.nix +++ b/pkgs/applications/editors/leafpad/default.nix @@ -19,7 +19,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "A notepad clone for GTK 2.0"; - homepage = http://tarot.freeshell.org/leafpad; + homepage = "http://tarot.freeshell.org/leafpad"; platforms = platforms.linux; maintainers = [ maintainers.flosse ]; license = licenses.gpl3; diff --git a/pkgs/applications/editors/leo-editor/default.nix b/pkgs/applications/editors/leo-editor/default.nix index bd433436eb0..f7c6d80dbf1 100644 --- a/pkgs/applications/editors/leo-editor/default.nix +++ b/pkgs/applications/editors/leo-editor/default.nix @@ -1,19 +1,19 @@ -{ stdenv, python3, fetchFromGitHub, makeWrapper, makeDesktopItem }: +{ lib, mkDerivation, python3, fetchFromGitHub, makeWrapper, wrapQtAppsHook, makeDesktopItem }: -stdenv.mkDerivation rec { +mkDerivation rec { pname = "leo-editor"; - version = "5.7.3"; + version = "6.2"; src = fetchFromGitHub { owner = "leo-editor"; repo = "leo-editor"; rev = version; - sha256 = "0ri6l6cxwva450l05af5vs1lsgrz6ciwd02njdgphs9pm1vwxbl9"; + sha256 = "07f10qwvi3p7bskzxnx5rlhlfrh7rx8v0xdlc4vs2271438j1j2z"; }; dontBuild = true; - nativeBuildInputs = [ makeWrapper python3 ]; + nativeBuildInputs = [ wrapQtAppsHook makeWrapper python3 ]; propagatedBuildInputs = with python3.pkgs; [ pyqt5 docutils ]; desktopItem = makeDesktopItem { @@ -24,11 +24,11 @@ stdenv.mkDerivation rec { comment = meta.description; desktopName = "Leo"; genericName = "Text Editor"; - categories = stdenv.lib.concatStringsSep ";" [ - "Application" "Development" "IDE" "QT" + categories = lib.concatStringsSep ";" [ + "Application" "Development" "IDE" ]; startupNotify = "false"; - mimeType = stdenv.lib.concatStringsSep ";" [ + mimeType = lib.concatStringsSep ";" [ "text/plain" "text/asp" "text/x-c" "text/x-script.elisp" "text/x-fortran" "text/html" "application/inf" "text/x-java-source" "application/x-javascript" "application/javascript" "text/ecmascript" "application/x-ksh" "text/x-script.ksh" @@ -53,10 +53,12 @@ stdenv.mkDerivation rec { makeWrapper ${python3.interpreter} $out/bin/leo \ --set PYTHONPATH "$PYTHONPATH:$out/share/leo-editor" \ --add-flags "-O $out/share/leo-editor/launchLeo.py" + + wrapQtApp $out/bin/leo ''; - meta = with stdenv.lib; { - homepage = http://leoeditor.com; + meta = with lib; { + homepage = "http://leoeditor.com"; description = "A powerful folding editor"; longDescription = "Leo is a PIM, IDE and outliner that accelerates the work flow of programmers, authors and web designers."; license = licenses.mit; diff --git a/pkgs/applications/editors/lighttable/default.nix b/pkgs/applications/editors/lighttable/default.nix index 90e8c73e075..26c5ee42152 100644 --- a/pkgs/applications/editors/lighttable/default.nix +++ b/pkgs/applications/editors/lighttable/default.nix @@ -57,7 +57,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "The next generation code editor"; - homepage = http://www.lighttable.com/; + homepage = "http://www.lighttable.com/"; license = licenses.gpl3; maintainers = [ maintainers.matejc ]; platforms = [ "x86_64-linux" ]; diff --git a/pkgs/applications/editors/manuskript/default.nix b/pkgs/applications/editors/manuskript/default.nix index 811284491dd..deeb9b36c71 100644 --- a/pkgs/applications/editors/manuskript/default.nix +++ b/pkgs/applications/editors/manuskript/default.nix @@ -2,7 +2,7 @@ python3Packages.buildPythonApplication rec { pname = "manuskript"; - version = "0.10.0"; + version = "0.11.0"; format = "other"; @@ -10,7 +10,7 @@ python3Packages.buildPythonApplication rec { repo = pname; owner = "olivierkes"; rev = version; - sha256 = "0q413vym7hzjpyg3krj5y63hwpncdifjkyswqmr76zg5yqnklnh3"; + sha256 = "1l6l9k6k69yv8xqpll0zv9cwdqqg4zvxy90l6sx5nv2yywh5crla"; }; nativeBuildInputs = [ wrapQtAppsHook ]; @@ -42,7 +42,7 @@ python3Packages.buildPythonApplication rec { meta = { description = "A open-source tool for writers"; - homepage = http://www.theologeek.ch/manuskript; + homepage = "http://www.theologeek.ch/manuskript"; longDescription = '' Manuskript is a tool for those writer who like to organize and plan everything before writing. The snowflake method can help you diff --git a/pkgs/applications/editors/micro/default.nix b/pkgs/applications/editors/micro/default.nix index e6b93f20c48..6a1ee5d196e 100644 --- a/pkgs/applications/editors/micro/default.nix +++ b/pkgs/applications/editors/micro/default.nix @@ -2,7 +2,7 @@ buildGoPackage rec { pname = "micro"; - version = "1.4.1"; + version = "2.0.3"; goPackagePath = "github.com/zyedidia/micro"; @@ -10,16 +10,18 @@ buildGoPackage rec { owner = "zyedidia"; repo = "micro"; rev = "v${version}"; - sha256 = "0m9p6smb5grdazsgr3m1x4rry9ihhlgl9ildhvfp53czrifbx0m5"; + sha256 = "017m9kb3gfrgzd06f1nma1i3m5rb0hzpgdikb86lsyv8ik18y12z"; fetchSubmodules = true; }; subPackages = [ "cmd/micro" ]; - buildFlagsArray = [ "-ldflags=" "-X main.Version=${version}" ]; + buildFlagsArray = [ "-ldflags=" "-X ${goPackagePath}/internal/util.Version=${version}" ]; + + goDeps = ./deps.nix; meta = with stdenv.lib; { - homepage = https://micro-editor.github.io; + homepage = "https://micro-editor.github.io"; description = "Modern and intuitive terminal-based text editor"; license = licenses.mit; maintainers = with maintainers; [ dtzWill ]; diff --git a/pkgs/applications/editors/micro/deps.nix b/pkgs/applications/editors/micro/deps.nix new file mode 100644 index 00000000000..e8ed69a9088 --- /dev/null +++ b/pkgs/applications/editors/micro/deps.nix @@ -0,0 +1,336 @@ +# file generated from go.mod using vgo2nix (https://github.com/adisbladis/vgo2nix) +[ + { + goPackagePath = "github.com/blang/semver"; + fetch = { + type = "git"; + url = "https://github.com/blang/semver"; + rev = "v3.5.1"; + sha256 = "13ws259bwcibkclbr82ilhk6zadm63kxklxhk12wayklj8ghhsmy"; + }; + } + { + goPackagePath = "github.com/chzyer/logex"; + fetch = { + type = "git"; + url = "https://github.com/chzyer/logex"; + rev = "v1.1.10"; + sha256 = "08pbjj3wx9acavlwyr055isa8a5hnmllgdv5k6ra60l5y1brmlq4"; + }; + } + { + goPackagePath = "github.com/chzyer/readline"; + fetch = { + type = "git"; + url = "https://github.com/chzyer/readline"; + rev = "2972be24d48e"; + sha256 = "104q8dazj8yf6b089jjr82fy9h1g80zyyzvp3g8b44a7d8ngjj6r"; + }; + } + { + goPackagePath = "github.com/chzyer/test"; + fetch = { + type = "git"; + url = "https://github.com/chzyer/test"; + rev = "a1ea475d72b1"; + sha256 = "0rns2aqk22i9xsgyap0pq8wi4cfaxsri4d9q6xxhhyma8jjsnj2k"; + }; + } + { + goPackagePath = "github.com/davecgh/go-spew"; + fetch = { + type = "git"; + url = "https://github.com/davecgh/go-spew"; + rev = "v1.1.1"; + sha256 = "0hka6hmyvp701adzag2g26cxdj47g21x6jz4sc6jjz1mn59d474y"; + }; + } + { + goPackagePath = "github.com/dustin/go-humanize"; + fetch = { + type = "git"; + url = "https://github.com/dustin/go-humanize"; + rev = "v1.0.0"; + sha256 = "1kqf1kavdyvjk7f8kx62pnm7fbypn9z1vbf8v2qdh3y7z7a0cbl3"; + }; + } + { + goPackagePath = "github.com/gdamore/encoding"; + fetch = { + type = "git"; + url = "https://github.com/gdamore/encoding"; + rev = "v1.0.0"; + sha256 = "1vmm5zll92i2fm4ajqx0gyx0p9j36496x5nabi3y0x7h0inv0pk9"; + }; + } + { + goPackagePath = "github.com/go-errors/errors"; + fetch = { + type = "git"; + url = "https://github.com/go-errors/errors"; + rev = "v1.0.1"; + sha256 = "0rznpknk19rxkr7li6dqs52c26pjazp69lh493l4ny4sxn5922lp"; + }; + } + { + goPackagePath = "github.com/kballard/go-shellquote"; + fetch = { + type = "git"; + url = "https://github.com/kballard/go-shellquote"; + rev = "95032a82bc51"; + sha256 = "1rspvmnsikdq95jmx3dykxd4k1rmgl98ryjrysvl0cf18hl1vq80"; + }; + } + { + goPackagePath = "github.com/kr/pretty"; + fetch = { + type = "git"; + url = "https://github.com/kr/pretty"; + rev = "v0.1.0"; + sha256 = "18m4pwg2abd0j9cn5v3k2ksk9ig4vlwxmlw9rrglanziv9l967qp"; + }; + } + { + goPackagePath = "github.com/kr/pty"; + fetch = { + type = "git"; + url = "https://github.com/kr/pty"; + rev = "v1.1.1"; + sha256 = "0383f0mb9kqjvncqrfpidsf8y6ns5zlrc91c6a74xpyxjwvzl2y6"; + }; + } + { + goPackagePath = "github.com/kr/text"; + fetch = { + type = "git"; + url = "https://github.com/kr/text"; + rev = "v0.1.0"; + sha256 = "1gm5bsl01apvc84bw06hasawyqm4q84vx1pm32wr9jnd7a8vjgj1"; + }; + } + { + goPackagePath = "github.com/lucasb-eyer/go-colorful"; + fetch = { + type = "git"; + url = "https://github.com/lucasb-eyer/go-colorful"; + rev = "v1.0.3"; + sha256 = "12bgz6dxbb2ki1g3x7fg9ipsjgfkd58fp7cdpv63h4kvlj2n7j69"; + }; + } + { + goPackagePath = "github.com/mattn/go-isatty"; + fetch = { + type = "git"; + url = "https://github.com/mattn/go-isatty"; + rev = "v0.0.11"; + sha256 = "0h671sv7hfprja495kavazkalkx7xzaqksjh13brcnwq67ijrali"; + }; + } + { + goPackagePath = "github.com/mattn/go-runewidth"; + fetch = { + type = "git"; + url = "https://github.com/mattn/go-runewidth"; + rev = "v0.0.7"; + sha256 = "1snr8mk63vz2h44knq26dm81p83887v7kb09iywqmx0nqzngih66"; + }; + } + { + goPackagePath = "github.com/mitchellh/go-homedir"; + fetch = { + type = "git"; + url = "https://github.com/mitchellh/go-homedir"; + rev = "v1.1.0"; + sha256 = "0ydzkipf28hwj2bfxqmwlww47khyk6d152xax4bnyh60f4lq3nx1"; + }; + } + { + goPackagePath = "github.com/pmezard/go-difflib"; + fetch = { + type = "git"; + url = "https://github.com/pmezard/go-difflib"; + rev = "v1.0.0"; + sha256 = "0c1cn55m4rypmscgf0rrb88pn58j3ysvc2d0432dp3c6fqg6cnzw"; + }; + } + { + goPackagePath = "github.com/robertkrimen/otto"; + fetch = { + type = "git"; + url = "https://github.com/robertkrimen/otto"; + rev = "c382bd3c16ff"; + sha256 = "043y6l647snsz71mdy84s2d3kn22aj6rbqd6c1vd8absvamqhlxa"; + }; + } + { + goPackagePath = "github.com/sergi/go-diff"; + fetch = { + type = "git"; + url = "https://github.com/sergi/go-diff"; + rev = "v1.1.0"; + sha256 = "0ir8ali2vx0j7pipmlfd6k8c973akyy2nmbjrf008fm800zcp7z2"; + }; + } + { + goPackagePath = "github.com/stretchr/objx"; + fetch = { + type = "git"; + url = "https://github.com/stretchr/objx"; + rev = "v0.1.0"; + sha256 = "19ynspzjdynbi85xw06mh8ad5j0qa1vryvxjgvbnyrr8rbm4vd8w"; + }; + } + { + goPackagePath = "github.com/stretchr/testify"; + fetch = { + type = "git"; + url = "https://github.com/stretchr/testify"; + rev = "v1.4.0"; + sha256 = "187i5g88sxfy4vxpm7dw1gwv29pa2qaq475lxrdh5livh69wqfjb"; + }; + } + { + goPackagePath = "github.com/yuin/gopher-lua"; + fetch = { + type = "git"; + url = "https://github.com/yuin/gopher-lua"; + rev = "ab39c6098bdb"; + sha256 = "13b0rrpv3988qw8rq6z7npajn1my059ybhafi5mxff9jw09k9sja"; + }; + } + { + goPackagePath = "github.com/zyedidia/clipboard"; + fetch = { + type = "git"; + url = "https://github.com/zyedidia/clipboard"; + rev = "241f98e9b197"; + sha256 = "1glc8w30sijpbppcvaf3503rmx5nxqkcgw87dr2pr3q3vv1bg3zi"; + }; + } + { + goPackagePath = "github.com/zyedidia/glob"; + fetch = { + type = "git"; + url = "https://github.com/zyedidia/glob"; + rev = "dd4023a66dc3"; + sha256 = "1vqw4xbqq6j8p5m7mwxvb448w69vjvgzx0ndsfzdh2cxfirwp3y7"; + }; + } + { + goPackagePath = "github.com/zyedidia/highlight"; + fetch = { + type = "git"; + url = "https://github.com/zyedidia/highlight"; + rev = "201131ce5cf5"; + sha256 = "0blaynf32swmqddx2hcrifrfssj9c04kwnbdy42h3kzxihrwz4ps"; + }; + } + { + goPackagePath = "github.com/zyedidia/json5"; + fetch = { + type = "git"; + url = "https://github.com/zyedidia/json5"; + rev = "2da050b1a98d"; + sha256 = "1sgydazf3npr788b4w17ydmlh3fd1zmpriv9b69967ww90ckh2kz"; + }; + } + { + goPackagePath = "github.com/zyedidia/poller"; + fetch = { + type = "git"; + url = "https://github.com/zyedidia/poller"; + rev = "v1.0.1"; + sha256 = "10cjrqfk1j0l55bdbpm7kv4mqc665pngc8avai0p9chq03y2654g"; + }; + } + { + goPackagePath = "github.com/zyedidia/pty"; + fetch = { + type = "git"; + url = "https://github.com/zyedidia/pty"; + rev = "v2.0.0"; + sha256 = "1n946ld8y2v2wfbwsxv8rfaicxbw3w8pk11ryc8iybmw7hkmmf79"; + }; + } + { + goPackagePath = "github.com/zyedidia/tcell"; + fetch = { + type = "git"; + url = "https://github.com/zyedidia/tcell"; + rev = "v1.4.4"; + sha256 = "0d62a9csab15b64y09jcbvq71065wliw4bd5m7lfpl5k8rmrrdyi"; + }; + } + { + goPackagePath = "github.com/zyedidia/terminal"; + fetch = { + type = "git"; + url = "https://github.com/zyedidia/terminal"; + rev = "533c623e2415"; + sha256 = "16l628f3zgl5yp9z5zkfy2hyl2sckw4d6mg3iqv2jjvh4i8yhrsm"; + }; + } + { + goPackagePath = "golang.org/x/sys"; + fetch = { + type = "git"; + url = "https://go.googlesource.com/sys"; + rev = "33540a1f6037"; + sha256 = "0fjcv0vzvi6za0b4xmnk3932pr9f9gczzf03y0kgq3ry9rqg169y"; + }; + } + { + goPackagePath = "golang.org/x/text"; + fetch = { + type = "git"; + url = "https://go.googlesource.com/text"; + rev = "v0.3.2"; + sha256 = "0flv9idw0jm5nm8lx25xqanbkqgfiym6619w575p7nrdh0riqwqh"; + }; + } + { + goPackagePath = "golang.org/x/tools"; + fetch = { + type = "git"; + url = "https://go.googlesource.com/tools"; + rev = "90fa682c2a6e"; + sha256 = "03ic2xsy51jw9749wl7gszdbz99iijbd2bckgygl6cm9w5m364ak"; + }; + } + { + goPackagePath = "gopkg.in/check.v1"; + fetch = { + type = "git"; + url = "https://gopkg.in/check.v1"; + rev = "41f04d3bba15"; + sha256 = "0vfk9czmlxmp6wndq8k17rhnjxal764mxfhrccza7nwlia760pjy"; + }; + } + { + goPackagePath = "gopkg.in/sourcemap.v1"; + fetch = { + type = "git"; + url = "https://gopkg.in/sourcemap.v1"; + rev = "v1.0.5"; + sha256 = "08rf2dl13hbnm3fq2cm0nnsspy9fhf922ln23cz5463cv7h62as4"; + }; + } + { + goPackagePath = "gopkg.in/yaml.v2"; + fetch = { + type = "git"; + url = "https://gopkg.in/yaml.v2"; + rev = "v2.2.7"; + sha256 = "0k5xcwkd3wmcx54isk7ck9cwp8fapfhyqdz3f13kxp77cxqizazj"; + }; + } + { + goPackagePath = "layeh.com/gopher-luar"; + fetch = { + type = "git"; + url = "https://github.com/layeh/gopher-luar"; + rev = "v1.0.7"; + sha256 = "1rdbni3q7zajmiy62ccvbfgqjzppk5212wpwks2ba726hvyf85mj"; + }; + } +] diff --git a/pkgs/applications/editors/mindforger/default.nix b/pkgs/applications/editors/mindforger/default.nix index 9cfcf95e78b..1397ea2d586 100644 --- a/pkgs/applications/editors/mindforger/default.nix +++ b/pkgs/applications/editors/mindforger/default.nix @@ -38,7 +38,7 @@ stdenv.mkDerivation rec { MindForger is actually more than an editor or IDE - it's human mind inspired personal knowledge management tool ''; - homepage = https://www.mindforger.com; + homepage = "https://www.mindforger.com"; license = licenses.gpl2Plus; platforms = platforms.all; }; diff --git a/pkgs/applications/editors/mle/default.nix b/pkgs/applications/editors/mle/default.nix index 2c36be1c21b..692b82dc688 100644 --- a/pkgs/applications/editors/mle/default.nix +++ b/pkgs/applications/editors/mle/default.nix @@ -2,13 +2,13 @@ stdenv.mkDerivation rec { pname = "mle"; - version = "1.4.2"; + version = "1.4.3"; src = fetchFromGitHub { owner = "adsr"; repo = "mle"; rev = "v${version}"; - sha256 = "053zvxkjx2zwq6lwkycirxz1m9sjc3zi9ic8fvp3mjvbqfri1y3x"; + sha256 = "16dbwfdd6sqqn7jfaxd5wdy8y9ghbihnz6bgn3xhqcww8rj1sia1"; }; # Fix location of Lua 5.3 header and library diff --git a/pkgs/applications/editors/moe/default.nix b/pkgs/applications/editors/moe/default.nix index 4e960524b94..060abda33d0 100644 --- a/pkgs/applications/editors/moe/default.nix +++ b/pkgs/applications/editors/moe/default.nix @@ -33,7 +33,7 @@ stdenv.mkDerivation rec { completion, directory browser, duplicate removal from prompt histories, delimiter matching, text conversion from/to UTF-8, romanization, etc. ''; - homepage = https://www.gnu.org/software/moe/; + homepage = "https://www.gnu.org/software/moe/"; license = licenses.gpl2Plus; maintainers = with maintainers; [ AndersonTorres ]; platforms = platforms.unix; diff --git a/pkgs/applications/editors/music/tuxguitar/default.nix b/pkgs/applications/editors/music/tuxguitar/default.nix index 8522ecf9c78..08841eb5810 100644 --- a/pkgs/applications/editors/music/tuxguitar/default.nix +++ b/pkgs/applications/editors/music/tuxguitar/default.nix @@ -37,7 +37,7 @@ in stdenv.mkDerivation rec { TuxGuitar is a multitrack guitar tablature editor and player written in Java-SWT. It can open GuitarPro, PowerTab and TablEdit files. ''; - homepage = http://www.tuxguitar.com.ar/; + homepage = "http://www.tuxguitar.com.ar/"; license = licenses.lgpl2; maintainers = [ maintainers.ardumont ]; platforms = platforms.linux; diff --git a/pkgs/applications/editors/nano/default.nix b/pkgs/applications/editors/nano/default.nix index 7b2992201fc..b4ce588050f 100644 --- a/pkgs/applications/editors/nano/default.nix +++ b/pkgs/applications/editors/nano/default.nix @@ -20,11 +20,11 @@ let in stdenv.mkDerivation rec { pname = "nano"; - version = "4.6"; + version = "4.9.1"; src = fetchurl { url = "mirror://gnu/nano/${pname}-${version}.tar.xz"; - sha256 = "1s98jsvkfar6qmd5n5l1n1k59623dnc93ciyvlhxjkvpad0kmb4v"; + sha256 = "0v5s58j3lbg5s6gapl9kjmzph7zgwaam53qspycy2sxaxw65mkaj"; }; nativeBuildInputs = [ texinfo ] ++ optional enableNls gettext; @@ -38,15 +38,6 @@ in stdenv.mkDerivation rec { (stdenv.lib.enableFeature enableTiny "tiny") ]; - patches = [ - (fetchurl { - # fix compilation on macOS, where 'st_mtim' is unknown - # upstream patch not in 4.6 - url = "https://git.savannah.gnu.org/cgit/nano.git/patch/?id=f516cddce749c3bf938271ef3182b9169ac8cbcc"; - sha256 = "0gqymvr5vxxypr7y3sm252rsi4gjqp597l01x0lkxyvxsn45a4sx"; - }) - ]; - postInstall = '' cp ${nixSyntaxHighlight}/nix.nanorc $out/share/nano/ ''; @@ -54,7 +45,7 @@ in stdenv.mkDerivation rec { enableParallelBuilding = true; meta = { - homepage = https://www.nano-editor.org/; + homepage = "https://www.nano-editor.org/"; description = "A small, user-friendly console text editor"; license = licenses.gpl3Plus; maintainers = with maintainers; [ diff --git a/pkgs/applications/editors/nano/nanorc/default.nix b/pkgs/applications/editors/nano/nanorc/default.nix index eab37fba19a..5f3a1ac91bd 100644 --- a/pkgs/applications/editors/nano/nanorc/default.nix +++ b/pkgs/applications/editors/nano/nanorc/default.nix @@ -21,7 +21,7 @@ stdenv.mkDerivation { meta = { description = "Improved Nano Syntax Highlighting Files"; - homepage = https://github.com/scopatz/nanorc; + homepage = "https://github.com/scopatz/nanorc"; license = stdenv.lib.licenses.gpl3; maintainers = with stdenv.lib.maintainers; [ nequissimus ]; platforms = stdenv.lib.platforms.all; diff --git a/pkgs/applications/editors/ne/default.nix b/pkgs/applications/editors/ne/default.nix index 3c96ba91165..4faf1e28b1c 100644 --- a/pkgs/applications/editors/ne/default.nix +++ b/pkgs/applications/editors/ne/default.nix @@ -2,13 +2,13 @@ stdenv.mkDerivation rec { pname = "ne"; - version = "3.2.1"; + version = "3.3.0"; src = fetchFromGitHub { owner = "vigna"; repo = pname; rev = version; - sha256 = "0h6d08cnwrk96ss83i9bragwwanph6x54sm3ak1z81146dsqsiif"; + sha256 = "01aglnsfljlvx0wvyvpjfn4y88jf450a06qnj9a8lgdqv1hdkq1a"; }; postPatch = '' diff --git a/pkgs/applications/editors/nedit/default.nix b/pkgs/applications/editors/nedit/default.nix index 4ff8c759a26..e1d1fa3070a 100644 --- a/pkgs/applications/editors/nedit/default.nix +++ b/pkgs/applications/editors/nedit/default.nix @@ -3,7 +3,7 @@ stdenv.mkDerivation rec { pname = "nedit"; version = "5.7"; - + src = fetchurl { url = "mirror://sourceforge/nedit/nedit-source/${pname}-${version}-src.tar.gz"; sha256 = "0ym1zhjx9976rf2z5nr7dj4mjkxcicimhs686snjhdcpzxwsrndd"; @@ -14,9 +14,8 @@ stdenv.mkDerivation rec { nativeBuildInputs = [ xlibsWrapper ]; buildInputs = [ motif libXpm ]; - buildFlags = if stdenv.isLinux then "linux" else - # the linux config works fine on darwin too! - if stdenv.isDarwin then "linux" else ""; + # the linux config works fine on darwin too! + buildFlags = stdenv.lib.optional (stdenv.isLinux || stdenv.isDarwin) "linux"; NIX_CFLAGS_COMPILE="-DBUILD_UNTESTED_NEDIT -L${motif}/lib"; diff --git a/pkgs/applications/editors/neovim/default.nix b/pkgs/applications/editors/neovim/default.nix index b3e2ed51015..475330a5fe5 100644 --- a/pkgs/applications/editors/neovim/default.nix +++ b/pkgs/applications/editors/neovim/default.nix @@ -2,7 +2,6 @@ , libuv, lua, ncurses, pkgconfig , unibilium, xsel, gperf , libvterm-neovim -, withJemalloc ? true, jemalloc , glibcLocales ? null, procps ? null # now defaults to false because some tests can be flaky (clipboard etc) @@ -50,8 +49,7 @@ in ncurses neovimLuaEnv unibilium - ] ++ optional withJemalloc jemalloc - ++ optional stdenv.isDarwin libiconv + ] ++ optional stdenv.isDarwin libiconv ++ optionals doCheck [ glibcLocales procps ] ; @@ -92,16 +90,11 @@ in hardeningDisable = [ "fortify" ]; preConfigure = stdenv.lib.optionalString stdenv.isDarwin '' - export DYLD_LIBRARY_PATH=${jemalloc}/lib substituteInPlace src/nvim/CMakeLists.txt --replace " util" "" ''; postInstall = stdenv.lib.optionalString stdenv.isLinux '' sed -i -e "s|'xsel|'${xsel}/bin/xsel|g" $out/share/nvim/runtime/autoload/provider/clipboard.vim - '' + stdenv.lib.optionalString (withJemalloc && stdenv.isDarwin) '' - install_name_tool -change libjemalloc.1.dylib \ - ${jemalloc}/lib/libjemalloc.1.dylib \ - $out/bin/nvim ''; # export PATH=$PWD/build/bin:${PATH} @@ -119,14 +112,14 @@ in modifications to the core source - Improve extensibility with a new plugin architecture ''; - homepage = https://www.neovim.io; + homepage = "https://www.neovim.io"; # "Contributions committed before b17d96 by authors who did not sign the # Contributor License Agreement (CLA) remain under the Vim license. # Contributions committed after b17d96 are licensed under Apache 2.0 unless # those contributions were copied from Vim (identified in the commit logs # by the vim-patch token). See LICENSE for details." license = with licenses; [ asl20 vim ]; - maintainers = with maintainers; [ manveru rvolosatovs ]; + maintainers = with maintainers; [ manveru rvolosatovs ma27 ]; platforms = platforms.unix; }; } diff --git a/pkgs/applications/editors/neovim/gnvim/default.nix b/pkgs/applications/editors/neovim/gnvim/default.nix index 764d7004940..e9f42d2b9b5 100644 --- a/pkgs/applications/editors/neovim/gnvim/default.nix +++ b/pkgs/applications/editors/neovim/gnvim/default.nix @@ -11,7 +11,7 @@ rustPlatform.buildRustPackage rec { sha256 = "11gb59lhc1sp5dxj2fdm6072f4nxxay0war3kmchdwsk41nvxlrh"; }; - cargoSha256 = "00r5jf5qdw02vcv3522qqrnwj14mip0l58prcncbvyg4pxlm2rb2"; + cargoSha256 = "0ay7hx5bzchp772ywgxzia12c44kbyarrshl689cmqh59wphsrx5"; buildInputs = [ gtk webkitgtk ]; @@ -40,8 +40,7 @@ rustPlatform.buildRustPackage rec { meta = with stdenv.lib; { description = "GUI for neovim, without any web bloat"; homepage = "https://github.com/vhakulinen/gnvim"; - license = licenses.mit; - maintainers = with maintainers; [ minijackson ]; - inherit version; + license = licenses.mit; + maintainers = with maintainers; [ minijackson ]; }; } diff --git a/pkgs/applications/editors/neovim/neovim-remote.nix b/pkgs/applications/editors/neovim/neovim-remote.nix index 9893c6085a6..06beff03f90 100644 --- a/pkgs/applications/editors/neovim/neovim-remote.nix +++ b/pkgs/applications/editors/neovim/neovim-remote.nix @@ -4,21 +4,25 @@ with stdenv.lib; pythonPackages.buildPythonApplication rec { pname = "neovim-remote"; - version = "2.2.3"; + version = "2.4.0"; disabled = !pythonPackages.isPy3k; src = fetchFromGitHub { owner = "mhinz"; repo = "neovim-remote"; rev = "v${version}"; - sha256 = "0g7gs5gigk3krydxdpmscgfr1fms0a6rc6am2y4c5szkgbd1d0ph"; + sha256 = "0jlw0qksak4bdzddpsj74pm2f2bgpj3cwrlspdjjy0j9qzg0mpl9"; }; - propagatedBuildInputs = with pythonPackages; [ pynvim psutil ]; + propagatedBuildInputs = with pythonPackages; [ + pynvim + psutil + setuptools + ]; meta = { description = "A tool that helps controlling nvim processes from a terminal"; - homepage = https://github.com/mhinz/neovim-remote/; + homepage = "https://github.com/mhinz/neovim-remote/"; license = licenses.mit; maintainers = with maintainers; [ edanaher ]; platforms = platforms.unix; diff --git a/pkgs/applications/editors/neovim/qt.nix b/pkgs/applications/editors/neovim/qt.nix index 3a46f68e775..8fe93d37c7e 100644 --- a/pkgs/applications/editors/neovim/qt.nix +++ b/pkgs/applications/editors/neovim/qt.nix @@ -4,13 +4,13 @@ let unwrapped = mkDerivation rec { pname = "neovim-qt-unwrapped"; - version = "0.2.12"; + version = "0.2.15"; src = fetchFromGitHub { owner = "equalsraf"; repo = "neovim-qt"; rev = "v${version}"; - sha256 = "09s3044j0y8nmyi8ykslfii6fx7k9mckmdvb0jn2xmdabpb60i20"; + sha256 = "097nykglqp4jyvla4yp32sc1f1hph4cqqhp6rm9ww7br8c0j54xl"; }; cmakeFlags = [ diff --git a/pkgs/applications/editors/neovim/ruby_provider/Gemfile.lock b/pkgs/applications/editors/neovim/ruby_provider/Gemfile.lock index 6a3f581c4e8..d0827bf2a7f 100644 --- a/pkgs/applications/editors/neovim/ruby_provider/Gemfile.lock +++ b/pkgs/applications/editors/neovim/ruby_provider/Gemfile.lock @@ -14,4 +14,4 @@ DEPENDENCIES neovim BUNDLED WITH - 1.17.2 + 2.1.4 diff --git a/pkgs/applications/editors/neovim/wrapper.nix b/pkgs/applications/editors/neovim/wrapper.nix index ffe597b00db..c7d5f764978 100644 --- a/pkgs/applications/editors/neovim/wrapper.nix +++ b/pkgs/applications/editors/neovim/wrapper.nix @@ -95,13 +95,23 @@ let '' + optionalString (configure != {}) '' echo "Generating remote plugin manifest" export NVIM_RPLUGIN_MANIFEST=$out/rplugin.vim + # Some plugins assume that the home directory is accessible for + # initializing caches, temporary files, etc. Even if the plugin isn't + # actively used, it may throw an error as soon as Neovim is launched + # (e.g., inside an autoload script), causing manifest generation to + # fail. Therefore, let's create a fake home directory before generating + # the manifest, just to satisfy the needs of these plugins. + # + # See https://github.com/Yggdroot/LeaderF/blob/v1.21/autoload/lfMru.vim#L10 + # for an example of this behavior. + export HOME="$(mktemp -d)" # Launch neovim with a vimrc file containing only the generated plugin # code. Pass various flags to disable temp file generation # (swap/viminfo) and redirect errors to stderr. # Only display the log on error since it will contain a few normally # irrelevant messages. if ! $out/bin/nvim \ - -u ${vimUtils.vimrcFile (configure // { customRC = ""; beforePlugins = ''filetype indent plugin on | syn on''; })} \ + -u ${vimUtils.vimrcFile (configure // { customRC = ""; })} \ -i NONE -n \ -E -V1rplugins.log -s \ +UpdateRemotePlugins +quit! > outfile 2>&1; then diff --git a/pkgs/applications/editors/netbeans/default.nix b/pkgs/applications/editors/netbeans/default.nix index 38b92151b29..b2a13e3db7c 100644 --- a/pkgs/applications/editors/netbeans/default.nix +++ b/pkgs/applications/editors/netbeans/default.nix @@ -3,7 +3,7 @@ }: let - version = "11.1"; + version = "11.3"; desktopItem = makeDesktopItem { name = "netbeans"; exec = "netbeans"; @@ -19,7 +19,7 @@ stdenv.mkDerivation { inherit version; src = fetchurl { url = "mirror://apache/netbeans/netbeans/${version}/netbeans-${version}-bin.zip"; - sha512 = "bb061b9258d524b7b53b3b5ee9aa95111f7a391a5e2c5c0bc949164166af9a03d0cebbde2b47a8853fb765307b4c93ce8389a9c87bef26c92c08cdf446314e4d"; + sha512 = "ae828836138b5a4156d58df24dd4053be58018cb6b5beb179cb0f4cd8b5db72d2a7356a434d01157aacb78d228732950cf4e3a0b6c725da8e053b6ccd91075d6"; }; buildCommand = '' @@ -60,7 +60,7 @@ stdenv.mkDerivation { description = "An integrated development environment for Java, C, C++ and PHP"; homepage = "https://netbeans.apache.org/"; license = stdenv.lib.licenses.asl20; - maintainers = with stdenv.lib.maintainers; [ sander rszibele ]; + maintainers = with stdenv.lib.maintainers; [ sander rszibele asbachb ]; platforms = stdenv.lib.platforms.unix; }; } diff --git a/pkgs/applications/editors/notepadqq/default.nix b/pkgs/applications/editors/notepadqq/default.nix index efda2c58360..a51f5106930 100644 --- a/pkgs/applications/editors/notepadqq/default.nix +++ b/pkgs/applications/editors/notepadqq/default.nix @@ -32,7 +32,7 @@ mkDerivation rec { enableParallelBuilding = true; meta = with lib; { - homepage = https://notepadqq.com/; + homepage = "https://notepadqq.com/"; description = "Notepad++-like editor for the Linux desktop"; license = licenses.gpl3; platforms = platforms.linux; diff --git a/pkgs/applications/editors/nvi/default.nix b/pkgs/applications/editors/nvi/default.nix index a7a6b35a24a..e28b2b43061 100644 --- a/pkgs/applications/editors/nvi/default.nix +++ b/pkgs/applications/editors/nvi/default.nix @@ -48,7 +48,7 @@ stdenv.mkDerivation { ''; meta = { - homepage = http://www.bostic.com/vi/; + homepage = "http://www.bostic.com/vi/"; description = "The Berkeley Vi Editor"; license = stdenv.lib.licenses.free; }; diff --git a/pkgs/applications/editors/nvpy/default.nix b/pkgs/applications/editors/nvpy/default.nix index 567f4752035..dcf42b55c5c 100644 --- a/pkgs/applications/editors/nvpy/default.nix +++ b/pkgs/applications/editors/nvpy/default.nix @@ -30,7 +30,7 @@ in pythonPackages.buildPythonApplication rec { meta = with pkgs.lib; { description = "A simplenote-syncing note-taking tool inspired by Notational Velocity"; - homepage = https://github.com/cpbotha/nvpy; + homepage = "https://github.com/cpbotha/nvpy"; platforms = platforms.linux; license = licenses.bsd3; }; diff --git a/pkgs/applications/editors/okteta/default.nix b/pkgs/applications/editors/okteta/default.nix index 5c7ddfb34d4..fa63ee90adc 100644 --- a/pkgs/applications/editors/okteta/default.nix +++ b/pkgs/applications/editors/okteta/default.nix @@ -4,11 +4,11 @@ stdenv.mkDerivation rec { pname = "okteta"; - version = "0.26.2"; + version = "0.26.3"; src = fetchurl { url = "mirror://kde/stable/okteta/${version}/src/${pname}-${version}.tar.xz"; - sha256 = "0k38hd9wq6jvzy0225y61rzr7lgwbac1haalhsrfpmyjy6d833dv"; + sha256 = "1454844s76skk18gpcf56y9pkmffs7p4z09ggmy37ifzf7yk1p19"; }; nativeBuildInputs = [ qtscript extra-cmake-modules kdoctools ]; diff --git a/pkgs/applications/editors/quartus-prime/default.nix b/pkgs/applications/editors/quartus-prime/default.nix new file mode 100644 index 00000000000..093635b10e4 --- /dev/null +++ b/pkgs/applications/editors/quartus-prime/default.nix @@ -0,0 +1,180 @@ +{ buildFHSUserEnv, makeDesktopItem, writeScript, stdenv, lib, requireFile, unstick, + supportedDevices ? [ "Arria II" "Cyclone V" "Cyclone IV" "Cyclone 10 LP" "MAX II/V" "MAX 10 FPGA" ] }: + +let + deviceIds = { + "Arria II" = "arria_lite"; + "Cyclone V" = "cyclonev"; + "Cyclone IV" = "cyclone"; + "Cyclone 10 LP" = "cyclone10lp"; + "MAX II/V" = "max"; + "MAX 10 FPGA" = "max10"; + }; + + supportedDeviceIds = + assert lib.assertMsg (lib.all (name: lib.hasAttr name deviceIds) supportedDevices) + "Supported devices are: ${lib.concatStringsSep ", " (lib.attrNames deviceIds)}"; + lib.listToAttrs (map (name: { + inherit name; + value = deviceIds.${name}; + }) supportedDevices); + + unsupportedDeviceIds = lib.filterAttrs (name: value: + !(lib.hasAttr name supportedDeviceIds) + ) deviceIds; + + quartus = stdenv.mkDerivation rec { + version = "19.1.0.670"; + pname = "quartus-prime-lite-unwrapped"; + + src = let + require = {name, sha256}: requireFile { + inherit name sha256; + url = "${meta.homepage}/${lib.versions.majorMinor version}/?edition=lite&platform=linux"; + }; + + hashes = { + "arria_lite" = "1flj9w0vb2p9f9zll136izr6qvmxn0lg72bvaqxs3sxc9vj06wm1"; + "cyclonev" = "0bqxpvjgph0y6slk0jq75mcqzglmqkm0jsx10y9xz5llm6zxzqab"; + "cyclone" = "0pzs8y4s3snxg4g6lrb21qi88abm48g279xzd98qv17qxb2z82rr"; + "cyclone10lp" = "1ccxq8n20y40y47zddkijcv41w3cddvydddr3m4844q31in3nxha"; + "max" = "1cxzbqscxvlcy74dpqmvlnxjyyxfwcx3spygpvpwi6dfj3ipgm2z"; + "max10" = "14k83javivbk65mpb17wdwsyb8xk7x9gzj9x0wnd24mmijrvdy9s"; + }; + + devicePackages = map (id: { + name = "${id}-${version}.qdz"; + sha256 = lib.getAttr id hashes; + }) (lib.attrValues supportedDeviceIds); + in map require ([{ + name = "QuartusLiteSetup-${version}-linux.run"; + sha256 = "15vxvqxqdk29ahlw3lkm1nzxyhzy4626wb9s5f2h6sjgq64r8m7f"; + } { + name = "ModelSimSetup-${version}-linux.run"; + sha256 = "0j1vfr91jclv88nam2plx68arxmz4g50sqb840i60wqd5b0l3y6r"; + }] ++ devicePackages); + + nativeBuildInputs = [ unstick ]; + + buildCommand = let + installers = lib.sublist 0 2 src; + components = lib.sublist 2 ((lib.length src) - 2) src; + copyInstaller = installer: '' + # `$(cat $NIX_CC/nix-support/dynamic-linker) $src[0]` often segfaults, so cp + patchelf + cp ${installer} $TEMP/${installer.name} + chmod u+w,+x $TEMP/${installer.name} + patchelf --interpreter $(cat $NIX_CC/nix-support/dynamic-linker) $TEMP/${installer.name} + ''; + copyComponent = component: "cp ${component} $TEMP/${component.name}"; + # leaves enabled: quartus, modelsim_ase, devinfo + disabledComponents = [ + "quartus_help" + "quartus_update" + # not modelsim_ase + "modelsim_ae" + ] ++ (lib.attrValues unsupportedDeviceIds); + in '' + ${lib.concatMapStringsSep "\n" copyInstaller installers} + ${lib.concatMapStringsSep "\n" copyComponent components} + + unstick $TEMP/${(builtins.head installers).name} \ + --disable-components ${lib.concatStringsSep "," disabledComponents} \ + --mode unattended --installdir $out --accept_eula 1 + + # This patch is from https://wiki.archlinux.org/index.php/Altera_Design_Software + patch --force --strip 0 --directory $out < ${./vsim.patch} + + rm -r $out/uninstall $out/logs + ''; + + meta = { + homepage = "https://fpgasoftware.intel.com"; + description = "FPGA design and simulation software"; + license = lib.licenses.unfree; + platforms = lib.platforms.linux; + maintainers = with lib.maintainers; [ kwohlfahrt ]; + }; + }; + + desktopItem = makeDesktopItem { + name = "quartus-prime-lite"; + exec = "quartus"; + icon = "quartus"; + desktopName = "Quartus"; + genericName = "Quartus Prime"; + categories = "Development;"; + }; + +# I think modelsim_ase/linux/vlm checksums itself, so use FHSUserEnv instead of `patchelf` +in buildFHSUserEnv rec { + name = "quartus-prime-lite"; # wrapped + + targetPkgs = pkgs: with pkgs; [ + # quartus requirements + glib + xorg.libICE + xorg.libSM + zlib + # qsys requirements + xorg.libXtst + xorg.libXi + ]; + multiPkgs = pkgs: with pkgs; let + # This seems ugly - can we override `libpng = libpng12` for all `pkgs`? + freetype = pkgs.freetype.override { libpng = libpng12; }; + fontconfig = pkgs.fontconfig.override { inherit freetype; }; + libXft = pkgs.xorg.libXft.override { inherit freetype fontconfig; }; + in [ + # modelsim requirements + libxml2 + ncurses5 + unixODBC + libXft + # common requirements + freetype + fontconfig + xorg.libX11 + xorg.libXext + xorg.libXrender + ]; + + passthru = { + unwrapped = quartus; + }; + + extraInstallCommands = let + quartusExecutables = (map (c: "quartus/bin/quartus_${c}") [ + "asm" "cdb" "cpf" "drc" "eda" "fit" "jbcc" "jli" "map" "pgm" "pow" + "sh" "si" "sim" "sta" "stp" "tan" + ]) ++ [ "quartus/bin/quartus" ]; + + qsysExecutables = map (c: "quartus/sopc_builder/bin/qsys-${c}") [ + "generate" "edit" "script" + ]; + # Should we install all executables ? + modelsimExecutables = map (c: "modelsim_ase/bin/${c}") [ + "vsim" "vlog" "vlib" + ]; + in '' + mkdir -p $out/share/applications $out/share/icons/128x128 + ln -s ${desktopItem}/share/applications/* $out/share/applications + ln -s ${quartus}/licenses/images/dc_quartus_panel_logo.png $out/share/icons/128x128/quartus.png + + mkdir -p $out/quartus/bin $out/quartus/sopc_builder/bin $out/modelsim_ase/bin + WRAPPER=$out/bin/${name} + EXECUTABLES="${lib.concatStringsSep " " (quartusExecutables ++ qsysExecutables ++ modelsimExecutables)}" + for executable in $EXECUTABLES; do + echo "#!${stdenv.shell}" >> $out/$executable + echo "$WRAPPER ${quartus}/$executable \$@" >> $out/$executable + done + + cd $out + chmod +x $EXECUTABLES + # link into $out/bin so executables become available on $PATH + ln --symbolic --relative --target-directory ./bin $EXECUTABLES + ''; + + runScript = writeScript "${name}-wrapper" '' + exec $@ + ''; +} diff --git a/pkgs/applications/editors/quartus-prime/vsim.patch b/pkgs/applications/editors/quartus-prime/vsim.patch new file mode 100644 index 00000000000..36dc41b7ef1 --- /dev/null +++ b/pkgs/applications/editors/quartus-prime/vsim.patch @@ -0,0 +1,11 @@ +--- modelsim_ase/vco 1970-01-01 01:00:01.000000000 +0100 ++++ modelsim_ase/vco 1970-01-01 01:00:01.000000000 +0100 +@@ -207,7 +207,7 @@ + 2.[5-9]*) vco="linux" ;; + 2.[1-9][0-9]*) vco="linux" ;; + 3.[0-9]*) vco="linux" ;; +- *) vco="linux_rh60" ;; ++ *) vco="linux" ;; + esac + if [ ! -x "$dir/$vco/vsim" ]; then + if [ -x "$dir/linuxle/vsim" ]; then diff --git a/pkgs/applications/editors/quilter/default.nix b/pkgs/applications/editors/quilter/default.nix index d9c3bd0825d..9bc8e1bc920 100644 --- a/pkgs/applications/editors/quilter/default.nix +++ b/pkgs/applications/editors/quilter/default.nix @@ -4,13 +4,13 @@ stdenv.mkDerivation rec { pname = "quilter"; - version = "2.0.3"; + version = "2.2.2"; src = fetchFromGitHub { owner = "lainsce"; repo = pname; rev = version; - sha256 = "13l8z3bchha4ax14s48pcqdxh8gnj4mlvv06lk9dwk9fplc93821"; + sha256 = "1bgsbcx09ca063kdqfc7nigly99d7xgx2cbkpk1nkhr0hvkyg9l9"; }; nativeBuildInputs = [ @@ -39,9 +39,15 @@ stdenv.mkDerivation rec { patchShebangs meson/post_install.py ''; + passthru = { + updateScript = pantheon.updateScript { + attrPath = pname; + }; + }; + meta = with stdenv.lib; { description = "Focus on your writing - designed for elementary OS"; - homepage = https://github.com/lainsce/quilter; + homepage = "https://github.com/lainsce/quilter"; license = licenses.gpl2Plus; maintainers = pantheon.maintainers; platforms = platforms.linux; diff --git a/pkgs/applications/editors/qxmledit/default.nix b/pkgs/applications/editors/qxmledit/default.nix new file mode 100644 index 00000000000..cb658e8fcda --- /dev/null +++ b/pkgs/applications/editors/qxmledit/default.nix @@ -0,0 +1,28 @@ +{ stdenv, fetchFromGitHub, + qmake, qtbase, qtxmlpatterns, qtsvg, qtscxml, qtquick1, libGLU }: + +stdenv.mkDerivation rec { + name = "qxmledit-${version}" ; + version = "0.9.15" ; + src = fetchFromGitHub ( stdenv.lib.importJSON ./qxmledit.json ) ; + nativeBuildInputs = [ qmake ] ; + buildInputs = [ qtbase qtxmlpatterns qtsvg qtscxml qtquick1 libGLU ] ; + qmakeFlags = [ "CONFIG+=release" ] ; + outputs = [ "out" "doc" ] ; + + preConfigure = '' + export QXMLEDIT_INST_DATA_DIR="$out/share/data" + export QXMLEDIT_INST_TRANSLATIONS_DIR="$out/share/i18n" + export QXMLEDIT_INST_INCLUDE_DIR="$out/include" + export QXMLEDIT_INST_DIR="$out/bin" + export QXMLEDIT_INST_LIB_DIR="$out/lib" + export QXMLEDIT_INST_DOC_DIR="$doc" + ''; + + meta = with stdenv.lib; { + description = "Simple XML editor based on qt libraries" ; + homepage = "https://sourceforge.net/projects/qxmledit"; + license = licenses.lgpl2; + platforms = platforms.all; + } ; +} diff --git a/pkgs/applications/editors/qxmledit/qxmledit.json b/pkgs/applications/editors/qxmledit/qxmledit.json new file mode 100644 index 00000000000..3b50532d6a0 --- /dev/null +++ b/pkgs/applications/editors/qxmledit/qxmledit.json @@ -0,0 +1,6 @@ +{ + "owner": "lbellonda", + "repo": "qxmledit", + "rev": "6136dca50ceb3b4447c91a7a18dcf84785ea11d1", + "sha256": "1wcnphalwf0a5gz9r44jgk8wcv1w2qipbwjkbzkra2kxanxns834" +} \ No newline at end of file diff --git a/pkgs/applications/editors/rednotebook/default.nix b/pkgs/applications/editors/rednotebook/default.nix index 6bb40f0166d..7f94b354dd2 100644 --- a/pkgs/applications/editors/rednotebook/default.nix +++ b/pkgs/applications/editors/rednotebook/default.nix @@ -5,13 +5,13 @@ buildPythonApplication rec { pname = "rednotebook"; - version = "2.14"; + version = "2.18"; src = fetchFromGitHub { owner = "jendrikseipp"; repo = "rednotebook"; rev = "v${version}"; - sha256 = "1xs2wvm9g8vypz25li7rm8m0j4dsdpqpajcvrc756x5m149dxc08"; + sha256 = "1m75ns6vgycyi3zjlc9w2gnry1gyfz1jxhrklcxxi6aap0jxlgnr"; }; # We have not packaged tests. diff --git a/pkgs/applications/editors/retext/default.nix b/pkgs/applications/editors/retext/default.nix index e9742389261..7752313b2a7 100644 --- a/pkgs/applications/editors/retext/default.nix +++ b/pkgs/applications/editors/retext/default.nix @@ -54,7 +54,7 @@ in python.pkgs.buildPythonApplication { ''; meta = with stdenv.lib; { - homepage = https://github.com/retext-project/retext/; + homepage = "https://github.com/retext-project/retext/"; description = "Simple but powerful editor for Markdown and reStructuredText"; license = licenses.gpl3; maintainers = with maintainers; [ klntsky ]; diff --git a/pkgs/applications/editors/rstudio/default.nix b/pkgs/applications/editors/rstudio/default.nix index 933644cc471..d429bb4bcbb 100644 --- a/pkgs/applications/editors/rstudio/default.nix +++ b/pkgs/applications/editors/rstudio/default.nix @@ -1,19 +1,19 @@ -{ stdenv, fetchurl, fetchFromGitHub, makeDesktopItem, cmake, boost, zlib +{ lib, mkDerivation, fetchurl, fetchFromGitHub, makeDesktopItem, cmake, boost, zlib , openssl, R, qtbase, qtxmlpatterns, qtsensors, qtwebengine, qtwebchannel , libuuid, hunspellDicts, unzip, ant, jdk, gnumake, makeWrapper, pandoc , llvmPackages }: -with stdenv.lib; +with lib; let verMajor = "1"; verMinor = "2"; - verPatch = "1335"; + verPatch = "5033"; version = "${verMajor}.${verMinor}.${verPatch}"; ginVer = "2.1.2"; gwtVer = "2.8.1"; in -stdenv.mkDerivation rec { +mkDerivation rec { pname = "RStudio"; inherit version; @@ -26,7 +26,7 @@ stdenv.mkDerivation rec { owner = "rstudio"; repo = "rstudio"; rev = "v${version}"; - sha256 = "0jv1d4yznv2lzwp0fdf377vqpg0k2q4z9qvji4sj86fabj835lqd"; + sha256 = "0f3p2anz9xay2859bxj3bvyj582igsp628qxsccpkgn0jifvi4np"; }; # Hack RStudio to only use the input R and provided libclang. @@ -57,7 +57,7 @@ stdenv.mkDerivation rec { dictionaries = largeDicts ++ otherDicts; mathJaxSrc = fetchurl { - url = https://s3.amazonaws.com/rstudio-buildtools/mathjax-26.zip; + url = "https://s3.amazonaws.com/rstudio-buildtools/mathjax-26.zip"; sha256 = "0wbcqb9rbfqqvvhqr1pbqax75wp8ydqdyhp91fbqfqp26xzjv6lk"; }; @@ -116,17 +116,18 @@ stdenv.mkDerivation rec { mimeType = "text/x-r-source;text/x-r;text/x-R;text/x-r-doc;text/x-r-sweave;text/x-r-markdown;text/x-r-html;text/x-r-presentation;application/x-r-data;application/x-r-project;text/x-r-history;text/x-r-profile;text/x-tex;text/x-markdown;text/html;text/css;text/javascript;text/x-chdr;text/x-csrc;text/x-c++hdr;text/x-c++src;"; }; + qtWrapperArgs = [ ''--suffix PATH : ${gnumake}/bin'' ]; + postInstall = '' - wrapProgram $out/bin/rstudio --suffix PATH : ${gnumake}/bin mkdir $out/share cp -r ${desktopItem}/share/applications $out/share mkdir $out/share/icons ln $out/rstudio.png $out/share/icons ''; - meta = with stdenv.lib; + meta = with lib; { description = "Set of integrated tools for the R language"; - homepage = https://www.rstudio.com/; + homepage = "https://www.rstudio.com/"; license = licenses.agpl3; maintainers = with maintainers; [ ehmry changlinli ciil ]; platforms = platforms.linux; diff --git a/pkgs/applications/editors/scite/default.nix b/pkgs/applications/editors/scite/default.nix index 78dd0d09541..4e92856fee2 100644 --- a/pkgs/applications/editors/scite/default.nix +++ b/pkgs/applications/editors/scite/default.nix @@ -5,7 +5,7 @@ stdenv.mkDerivation { version = "4.0.5"; src = fetchurl { - url = https://www.scintilla.org/scite405.tgz; + url = "https://www.scintilla.org/scite405.tgz"; sha256 = "0h16wk2986nkkhhdv5g4lxlcn02qwyja24x1r6vf02r1hf46b9q2"; }; @@ -24,7 +24,7 @@ stdenv.mkDerivation { ''; meta = with stdenv.lib; { - homepage = https://www.scintilla.org/SciTE.html; + homepage = "https://www.scintilla.org/SciTE.html"; description = "SCIntilla based Text Editor"; license = licenses.mit; platforms = platforms.linux; diff --git a/pkgs/applications/editors/sigil/default.nix b/pkgs/applications/editors/sigil/default.nix index ac171f60ead..cbb9f7bd5b8 100644 --- a/pkgs/applications/editors/sigil/default.nix +++ b/pkgs/applications/editors/sigil/default.nix @@ -35,7 +35,7 @@ mkDerivation rec { meta = with stdenv.lib; { description = "Free, open source, multi-platform ebook (ePub) editor"; - homepage = https://github.com/Sigil-Ebook/Sigil/; + homepage = "https://github.com/Sigil-Ebook/Sigil/"; license = licenses.gpl3; # currently unmaintained platforms = platforms.linux; diff --git a/pkgs/applications/editors/standardnotes/default.nix b/pkgs/applications/editors/standardnotes/default.nix index 5a13d91aef2..18d9338f909 100644 --- a/pkgs/applications/editors/standardnotes/default.nix +++ b/pkgs/applications/editors/standardnotes/default.nix @@ -1,38 +1,47 @@ -{ stdenv, appimage-run, fetchurl, runtimeShell }: +{ stdenv, appimageTools, autoPatchelfHook, desktop-file-utils + , fetchurl, runtimeShell }: let - version = "3.0.15"; + version = "3.3.3"; + pname = "standardnotes"; + name = "${pname}-${version}"; plat = { - i386-linux = "i386"; - x86_64-linux = "x86_64"; + i386-linux = "-i386"; + x86_64-linux = ""; }.${stdenv.hostPlatform.system}; sha256 = { - i386-linux = "0v2nsis6vb1lnhmjd28vrfxqwwpycv02j0nvjlfzcgj4b3400j7a"; - x86_64-linux = "130n586cw0836zsbwqcz3pp3h0d4ny74ngqs4k4cvfb92556r7xh"; + i386-linux = "2ccdf23588b09d645811e562d4fd7e02ac0e367bf2b34e373d8470d48544036d"; + x86_64-linux = "6366d0a37cbf2cf51008a666e40bada763dd1539173de01e093bcbe4146a6bd8"; }.${stdenv.hostPlatform.system}; -in - -stdenv.mkDerivation { - pname = "standardnotes"; - inherit version; src = fetchurl { - url = "https://github.com/standardnotes/desktop/releases/download/v${version}/standard-notes-${version}-${plat}.AppImage"; + url = "https://github.com/standardnotes/desktop/releases/download/v${version}/standard-notes-${version}${plat}.AppImage"; inherit sha256; }; - buildInputs = [ appimage-run ]; + appimageContents = appimageTools.extract { + inherit name src; + }; - dontUnpack = true; + nativeBuildInputs = [ autoPatchelfHook desktop-file-utils ]; - installPhase = '' - mkdir -p $out/{bin,share} - cp $src $out/share/standardNotes.AppImage - echo "#!${runtimeShell}" > $out/bin/standardnotes - echo "${appimage-run}/bin/appimage-run $out/share/standardNotes.AppImage" >> $out/bin/standardnotes - chmod +x $out/bin/standardnotes $out/share/standardNotes.AppImage +in appimageTools.wrapType2 rec { + inherit name src; + + extraInstallCommands = '' + # directory in /nix/store so readonly + cp -r ${appimageContents}/* $out + cd $out + chmod -R +w $out + mv $out/bin/${name} $out/bin/${pname} + + # fixup and install desktop file + ${desktop-file-utils}/bin/desktop-file-install --dir $out/share/applications \ + --set-key Exec --set-value ${pname} standard-notes.desktop + + rm usr/lib/* AppRun standard-notes.desktop .so* ''; meta = with stdenv.lib; { @@ -41,7 +50,7 @@ stdenv.mkDerivation { Standard Notes is a private notes app that features unmatched simplicity, end-to-end encryption, powerful extensions, and open-source applications. ''; - homepage = https://standardnotes.org; + homepage = "https://standardnotes.org"; license = licenses.agpl3; maintainers = with maintainers; [ mgregoire ]; platforms = [ "i386-linux" "x86_64-linux" ]; diff --git a/pkgs/applications/editors/sublime/2/default.nix b/pkgs/applications/editors/sublime/2/default.nix index 24639f3bfd4..b10008d0c49 100644 --- a/pkgs/applications/editors/sublime/2/default.nix +++ b/pkgs/applications/editors/sublime/2/default.nix @@ -10,8 +10,8 @@ stdenv.mkDerivation rec { fetchurl { name = "sublimetext-2.0.2.tar.bz2"; url = [ - http://c758482.r82.cf2.rackcdn.com/Sublime%20Text%202.0.2.tar.bz2 - https://download.sublimetext.com/Sublime%20Text%202.0.2.tar.bz2 + "http://c758482.r82.cf2.rackcdn.com/Sublime%20Text%202.0.2.tar.bz2" + "https://download.sublimetext.com/Sublime%20Text%202.0.2.tar.bz2" ]; sha256 = "026g5mppk28lzzzn9ibykcqkrd5msfmg0sc0z8w8jd7v3h28wcq7"; } @@ -19,8 +19,8 @@ stdenv.mkDerivation rec { fetchurl { name = "sublimetext-2.0.2.tar.bz2"; url = [ - http://c758482.r82.cf2.rackcdn.com/Sublime%20Text%202.0.2.tar.bz2 - https://download.sublimetext.com/Sublime%20Text%202.0.2%20x64.tar.bz2 + "http://c758482.r82.cf2.rackcdn.com/Sublime%20Text%202.0.2.tar.bz2" + "https://download.sublimetext.com/Sublime%20Text%202.0.2%20x64.tar.bz2" ]; sha256 = "115b71nbv9mv8cz6bkjwpbdf2ywnjc1zy2d3080f6ck4sqqfvfh1"; }; diff --git a/pkgs/applications/editors/sublime/3/common.nix b/pkgs/applications/editors/sublime/3/common.nix index 8e52237d949..a75233fcf35 100644 --- a/pkgs/applications/editors/sublime/3/common.nix +++ b/pkgs/applications/editors/sublime/3/common.nix @@ -145,7 +145,7 @@ in stdenv.mkDerivation (rec { meta = with stdenv.lib; { description = "Sophisticated text editor for code, markup and prose"; - homepage = https://www.sublimetext.com/; + homepage = "https://www.sublimetext.com/"; maintainers = with maintainers; [ jtojnar wmertens demin-dmitriy zimbatm ]; license = licenses.unfree; platforms = [ "x86_64-linux" "i686-linux" ]; diff --git a/pkgs/applications/editors/supertux-editor/default.nix b/pkgs/applications/editors/supertux-editor/default.nix index 6714f917315..dc18bd694c6 100644 --- a/pkgs/applications/editors/supertux-editor/default.nix +++ b/pkgs/applications/editors/supertux-editor/default.nix @@ -32,7 +32,7 @@ stdenv.mkDerivation { meta = with stdenv.lib; { description = "Level editor for SuperTux"; - homepage = https://github.com/SuperTux/supertux-editor; + homepage = "https://github.com/SuperTux/supertux-editor"; license = licenses.gpl3Plus; maintainers = with maintainers; [ mathnerd314 ]; platforms = platforms.linux; diff --git a/pkgs/applications/editors/tecoc/default.nix b/pkgs/applications/editors/tecoc/default.nix index 48af4a99dad..3df13260d51 100644 --- a/pkgs/applications/editors/tecoc/default.nix +++ b/pkgs/applications/editors/tecoc/default.nix @@ -55,8 +55,8 @@ stdenv.mkDerivation rec { TECOC is a portable C implementation of TECO-11. ''; - homepage = https://github.com/blakemcbride/TECOC; - license = { url = https://github.com/blakemcbride/TECOC/tree/master/doc/readme-1st.txt; }; + homepage = "https://github.com/blakemcbride/TECOC"; + license = { url = "https://github.com/blakemcbride/TECOC/tree/master/doc/readme-1st.txt"; }; maintainers = [ maintainers.AndersonTorres ]; platforms = platforms.unix; }; diff --git a/pkgs/applications/editors/texmacs/common.nix b/pkgs/applications/editors/texmacs/common.nix index ec2498aa69b..9479295e747 100644 --- a/pkgs/applications/editors/texmacs/common.nix +++ b/pkgs/applications/editors/texmacs/common.nix @@ -62,7 +62,7 @@ rec { Scheme extension language. A native spreadsheet and tools for collaborative authoring are planned for later. ''; - homepage = http://texmacs.org/; + homepage = "http://texmacs.org/"; license = stdenv.lib.licenses.gpl2Plus; }; } diff --git a/pkgs/applications/editors/texmacs/darwin.nix b/pkgs/applications/editors/texmacs/darwin.nix index 5d5843890e1..a5117f3a678 100644 --- a/pkgs/applications/editors/texmacs/darwin.nix +++ b/pkgs/applications/editors/texmacs/darwin.nix @@ -49,7 +49,7 @@ stdenv.mkDerivation { "${ghostscript}/bin:" + (if aspell == null then "" else "${aspell}/bin:") + (if tex == null then "" else "${tex}/bin:") + - (if netpbm == null then "" else "${netpbm}/bin:") + + (if netpbm == null then "" else "${stdenv.lib.getBin netpbm}/bin:") + (if imagemagick == null then "" else "${imagemagick}/bin:"); enableParallelBuilding = true; diff --git a/pkgs/applications/editors/texmacs/default.nix b/pkgs/applications/editors/texmacs/default.nix index 8ca3f8cb2a9..91e2427a6c8 100644 --- a/pkgs/applications/editors/texmacs/default.nix +++ b/pkgs/applications/editors/texmacs/default.nix @@ -49,7 +49,7 @@ stdenv.mkDerivation { git python3 ]; - NIX_LDFLAGS = [ "-lz" ]; + NIX_LDFLAGS = "-lz"; postInstall = "wrapProgram $out/bin/texmacs --suffix PATH : " + (if ghostscriptX == null then "" else "${ghostscriptX}/bin:") + diff --git a/pkgs/applications/editors/texmaker/default.nix b/pkgs/applications/editors/texmaker/default.nix index 71043cb78fe..0b78ff54c35 100644 --- a/pkgs/applications/editors/texmaker/default.nix +++ b/pkgs/applications/editors/texmaker/default.nix @@ -2,11 +2,11 @@ mkDerivation rec { pname = "texmaker"; - version = "5.0.3"; + version = "5.0.4"; src = fetchurl { url = "http://www.xm1math.net/texmaker/${pname}-${version}.tar.bz2"; - sha256 = "0vrj9w5lk3vf6138n5bz8phmy3xp5kv4dq1rgirghcf4hbxdyx30"; + sha256 = "1qnh5g8zkjpjmw2l8spcynpfgs3wpcfcla5ms2kkgvkbdlzspqqx"; }; buildInputs = [ qtbase qtscript poppler zlib ]; @@ -28,7 +28,7 @@ mkDerivation rec { LaTeX editing with completion, structure viewer, preview, spell checking and support of any compilation chain. ''; - homepage = http://www.xm1math.net/texmaker/; + homepage = "http://www.xm1math.net/texmaker/"; license = licenses.gpl2Plus; platforms = platforms.linux; maintainers = with maintainers; [ cfouche markuskowa ]; diff --git a/pkgs/applications/editors/texstudio/default.nix b/pkgs/applications/editors/texstudio/default.nix index 13b7f4db0c5..94837023ca0 100644 --- a/pkgs/applications/editors/texstudio/default.nix +++ b/pkgs/applications/editors/texstudio/default.nix @@ -3,13 +3,13 @@ mkDerivation rec { pname = "texstudio"; - version = "2.12.16"; + version = "2.12.22"; src = fetchFromGitHub { owner = "${pname}-org"; repo = pname; rev = version; - sha256 = "0ck65fvz6mzfpqdb1ndgyvgxdnslrwhdr1swgck4gaghcrgbg3gq"; + sha256 = "037jvsfln8wav17qj9anxz2a7p51v7ky85wmhdj2hgwp40al651g"; }; nativeBuildInputs = [ qmake wrapQtAppsHook pkgconfig ]; @@ -20,13 +20,13 @@ mkDerivation rec { meta = with lib; { description = "TeX and LaTeX editor"; longDescription='' - Fork of TeXMaker, this editor is a full fledged IDE for - LaTeX editing with completion, structure viewer, preview, - spell checking and support of any compilation chain. - ''; - homepage = http://texstudio.sourceforge.net; + Fork of TeXMaker, this editor is a full fledged IDE for + LaTeX editing with completion, structure viewer, preview, + spell checking and support of any compilation chain. + ''; + homepage = "http://texstudio.sourceforge.net"; license = licenses.gpl2Plus; platforms = [ "x86_64-linux" ]; - maintainers = with maintainers; [ cfouche ]; + maintainers = with maintainers; [ ajs124 cfouche ]; }; } diff --git a/pkgs/applications/editors/textadept/default.nix b/pkgs/applications/editors/textadept/default.nix index 85006e51b66..bb771c89010 100644 --- a/pkgs/applications/editors/textadept/default.nix +++ b/pkgs/applications/editors/textadept/default.nix @@ -9,7 +9,7 @@ stdenv.mkDerivation rec { ]; src = fetchhg { - url = http://foicica.com/hg/textadept; + url = "http://foicica.com/hg/textadept"; rev = "textadept_${version}"; sha256 = "0fai8xqddkkprmbf0cf8wwgv7ccfdb1iyim30nppm2m16whkc8fl"; }; @@ -41,7 +41,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "An extensible text editor based on Scintilla with Lua scripting"; - homepage = http://foicica.com/textadept; + homepage = "http://foicica.com/textadept"; license = licenses.mit; maintainers = with maintainers; [ raskin mirrexagon ]; platforms = platforms.linux; diff --git a/pkgs/applications/editors/texworks/default.nix b/pkgs/applications/editors/texworks/default.nix index 8042363f73c..d0347bcb37c 100644 --- a/pkgs/applications/editors/texworks/default.nix +++ b/pkgs/applications/editors/texworks/default.nix @@ -1,30 +1,30 @@ -{ stdenv, lib, fetchFromGitHub, cmake, pkgconfig -, qt5, libsForQt5, hunspell +{ mkDerivation, lib, fetchFromGitHub, cmake, pkg-config +, qtscript, poppler, hunspell , withLua ? true, lua , withPython ? true, python3 }: -stdenv.mkDerivation rec { +mkDerivation rec { pname = "texworks"; - version = "0.6.3"; + version = "0.6.5"; src = fetchFromGitHub { owner = "TeXworks"; repo = "texworks"; rev = "release-${version}"; - sha256 = "1ljfl784z7dmh6f1qacqhc6qhcaqdzw033yswbvpvkkck0lsk2mr"; + sha256 = "1lw1p4iyzxypvjhnav11g6rwf6gx7kyzwy2iprvv8zzpqcdkjp2z"; }; - nativeBuildInputs = [ cmake pkgconfig ]; - buildInputs = [ qt5.qtscript libsForQt5.poppler hunspell ] + nativeBuildInputs = [ cmake pkg-config ]; + buildInputs = [ qtscript poppler hunspell ] ++ lib.optional withLua lua ++ lib.optional withPython python3; cmakeFlags = lib.optional withLua "-DWITH_LUA=ON" ++ lib.optional withPython "-DWITH_PYTHON=ON"; - meta = with stdenv.lib; { + meta = with lib; { description = "Simple TeX front-end program inspired by TeXShop"; - homepage = http://www.tug.org/texworks/; + homepage = "http://www.tug.org/texworks/"; license = licenses.gpl2Plus; maintainers = with maintainers; [ dotlambda ]; platforms = with platforms; linux; diff --git a/pkgs/applications/editors/thonny/default.nix b/pkgs/applications/editors/thonny/default.nix index e1c939c93c9..706d3fd7176 100644 --- a/pkgs/applications/editors/thonny/default.nix +++ b/pkgs/applications/editors/thonny/default.nix @@ -4,13 +4,13 @@ with python3.pkgs; buildPythonApplication rec { pname = "thonny"; - version = "3.2.3"; + version = "3.2.7"; src = fetchFromGitHub { owner = pname; repo = pname; rev = "v${version}"; - sha256 = "0wgjwjh6296vs8awl4rylb5nshj9q9kzxv7j4vlmiabll06mx6gi"; + sha256 = "0gzvdgg5l4j0wgkh7lp4wjabrpxvvs5m7mnpszqixxijdffjd4cj"; }; propagatedBuildInputs = with python3.pkgs; [ @@ -45,7 +45,7 @@ buildPythonApplication rec { evaluation, detailed visualization of the call stack and a mode for explaining the concepts of references and heap. ''; - homepage = https://www.thonny.org/; + homepage = "https://www.thonny.org/"; license = licenses.mit; maintainers = with maintainers; [ leenaars ]; platforms = platforms.linux; diff --git a/pkgs/applications/editors/tiled/default.nix b/pkgs/applications/editors/tiled/default.nix index e66530aaf76..0e73dffb20a 100644 --- a/pkgs/applications/editors/tiled/default.nix +++ b/pkgs/applications/editors/tiled/default.nix @@ -3,13 +3,13 @@ mkDerivation rec { pname = "tiled"; - version = "1.3.1"; + version = "1.3.3"; src = fetchFromGitHub { owner = "bjorn"; repo = pname; rev = "v${version}"; - sha256 = "1vhg8m1b7ccccrzlp0pyf3qskgvlf6sn1w956zsczmndrixbli9a"; + sha256 = "0v8imw6zdygs9ymsgk41jclsfr1jwbracjc5balydh15r57rvwjd"; }; nativeBuildInputs = [ pkgconfig qmake ]; @@ -19,7 +19,7 @@ mkDerivation rec { meta = with stdenv.lib; { description = "Free, easy to use and flexible tile map editor"; - homepage = https://www.mapeditor.org/; + homepage = "https://www.mapeditor.org/"; license = with licenses; [ bsd2 # libtiled and tmxviewer gpl2Plus # all the rest diff --git a/pkgs/applications/editors/tweak/default.nix b/pkgs/applications/editors/tweak/default.nix index 6bfce921d0f..3dc7d04ede3 100644 --- a/pkgs/applications/editors/tweak/default.nix +++ b/pkgs/applications/editors/tweak/default.nix @@ -14,7 +14,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "An efficient hex editor"; - homepage = http://www.chiark.greenend.org.uk/~sgtatham/tweak; + homepage = "http://www.chiark.greenend.org.uk/~sgtatham/tweak"; license = licenses.mit; platforms = platforms.linux; }; diff --git a/pkgs/applications/editors/typora/default.nix b/pkgs/applications/editors/typora/default.nix index 09baf383f97..bd183f97c12 100644 --- a/pkgs/applications/editors/typora/default.nix +++ b/pkgs/applications/editors/typora/default.nix @@ -60,7 +60,7 @@ stdenv.mkDerivation rec { meta = with lib; { description = "A minimal Markdown reading & writing app"; - homepage = https://typora.io; + homepage = "https://typora.io"; license = licenses.unfree; maintainers = with maintainers; [ jensbin worldofpeace ]; platforms = [ "x86_64-linux"]; diff --git a/pkgs/applications/editors/uemacs/default.nix b/pkgs/applications/editors/uemacs/default.nix index 0a2df6b6d4b..e14a07eb683 100644 --- a/pkgs/applications/editors/uemacs/default.nix +++ b/pkgs/applications/editors/uemacs/default.nix @@ -5,7 +5,7 @@ stdenv.mkDerivation { version = "2014-12-08"; src = fetchgit { - url = git://git.kernel.org/pub/scm/editors/uemacs/uemacs.git; + url = "git://git.kernel.org/pub/scm/editors/uemacs/uemacs.git"; rev = "8841922689769960fa074fbb053cb8507f2f3ed9"; sha256 = "14yq7kpkax111cg6k7i3mnqk7sq7a65krq6qizzj7vvnm7bsj3sd"; }; @@ -28,7 +28,7 @@ stdenv.mkDerivation { buildInputs = [ ncurses ]; meta = with stdenv.lib; { - homepage = https://git.kernel.org/cgit/editors/uemacs/uemacs.git; + homepage = "https://git.kernel.org/cgit/editors/uemacs/uemacs.git"; description = "Torvalds Micro-emacs fork"; longDescription = '' uEmacs/PK 4.0 is a full screen editor based on MicroEMACS 3.9e diff --git a/pkgs/applications/editors/vbindiff/default.nix b/pkgs/applications/editors/vbindiff/default.nix index d1aa59569e6..110b7caaf81 100644 --- a/pkgs/applications/editors/vbindiff/default.nix +++ b/pkgs/applications/editors/vbindiff/default.nix @@ -13,7 +13,7 @@ stdenv.mkDerivation rec { meta = { description = "A terminal visual binary diff viewer"; - homepage = https://www.cjmweb.net/vbindiff/; + homepage = "https://www.cjmweb.net/vbindiff/"; license = stdenv.lib.licenses.gpl2Plus; platforms = stdenv.lib.platforms.unix; }; diff --git a/pkgs/applications/editors/vim/common.nix b/pkgs/applications/editors/vim/common.nix index ceecfa73ce4..03b7d57b49d 100644 --- a/pkgs/applications/editors/vim/common.nix +++ b/pkgs/applications/editors/vim/common.nix @@ -1,12 +1,12 @@ { lib, fetchFromGitHub }: rec { - version = "8.1.2407"; + version = "8.2.0343"; src = fetchFromGitHub { owner = "vim"; repo = "vim"; rev = "v${version}"; - sha256 = "1h23lncm8py0ip8p61y8hivmnd8fzf8xpwpkd73d3a3fpiyd2yx8"; + sha256 = "063i52h8v7f87zamrw2ph057f0x2nzwf1s0izrm2psy41cyf4wa3"; }; enableParallelBuilding = true; @@ -22,9 +22,9 @@ rec { meta = with lib; { description = "The most popular clone of the VI editor"; - homepage = http://www.vim.org; + homepage = "http://www.vim.org"; license = licenses.vim; - maintainers = with maintainers; [ lovek323 ]; + maintainers = with maintainers; [ lovek323 equirosa ]; platforms = platforms.unix; }; } diff --git a/pkgs/applications/editors/vim/configurable.nix b/pkgs/applications/editors/vim/configurable.nix index bb3d571e6f8..3b37c805cdd 100644 --- a/pkgs/applications/editors/vim/configurable.nix +++ b/pkgs/applications/editors/vim/configurable.nix @@ -14,7 +14,7 @@ , features ? "huge" # One of tiny, small, normal, big or huge , wrapPythonDrv ? false -, guiSupport ? config.vim.gui or "gtk3" +, guiSupport ? config.vim.gui or (if stdenv.isDarwin then "gtk2" else "gtk3") , luaSupport ? config.vim.lua or true , perlSupport ? config.vim.perl or false # Perl interpreter , pythonSupport ? config.vim.python or true # Python interpreter diff --git a/pkgs/applications/editors/vim/default.nix b/pkgs/applications/editors/vim/default.nix index ae4e9ac8a9c..95d2076153c 100644 --- a/pkgs/applications/editors/vim/default.nix +++ b/pkgs/applications/editors/vim/default.nix @@ -2,7 +2,7 @@ # default vimrc , vimrc ? fetchurl { name = "default-vimrc"; - url = https://git.archlinux.org/svntogit/packages.git/plain/trunk/archlinux.vim?id=68f6d131750aa778807119e03eed70286a17b1cb; + url = "https://git.archlinux.org/svntogit/packages.git/plain/trunk/archlinux.vim?id=68f6d131750aa778807119e03eed70286a17b1cb"; sha256 = "18ifhv5q9prd175q3vxbqf6qyvkk6bc7d2lhqdk0q78i68kv9y0c"; } # apple frameworks diff --git a/pkgs/applications/editors/vim/macvim-sparkle.patch b/pkgs/applications/editors/vim/macvim-sparkle.patch deleted file mode 100644 index e0ba5145b3e..00000000000 --- a/pkgs/applications/editors/vim/macvim-sparkle.patch +++ /dev/null @@ -1,106 +0,0 @@ -diff --git a/src/MacVim/English.lproj/MainMenu.nib/designable.nib b/src/MacVim/English.lproj/MainMenu.nib/designable.nib -index bdbcfdb9e..5efc78ab6 100644 ---- a/src/MacVim/English.lproj/MainMenu.nib/designable.nib -+++ b/src/MacVim/English.lproj/MainMenu.nib/designable.nib -@@ -24,11 +24,6 @@ - - - -- -- -- -- -- - - - -@@ -206,6 +201,5 @@ - - - -- - - -diff --git a/src/MacVim/English.lproj/Preferences.nib/designable.nib b/src/MacVim/English.lproj/Preferences.nib/designable.nib -index 889450913..38afc3416 100644 ---- a/src/MacVim/English.lproj/Preferences.nib/designable.nib -+++ b/src/MacVim/English.lproj/Preferences.nib/designable.nib -@@ -88,14 +88,10 @@ - - - Checks for updates and presents a dialog box showing the release notes and prompt for whether you want to install the new version. -- -+ - - - -- -- -- -- - - - -@@ -186,16 +182,13 @@ - - - MacVim will automatically download and install updates without prompting. The updated version will be used the next time MacVim starts. -- -+ - - - - - - -- -- -- - - - -diff --git a/src/MacVim/MacVim.xcodeproj/project.pbxproj b/src/MacVim/MacVim.xcodeproj/project.pbxproj -index 648c4290d..c7dd99d1e 100644 ---- a/src/MacVim/MacVim.xcodeproj/project.pbxproj -+++ b/src/MacVim/MacVim.xcodeproj/project.pbxproj -@@ -66,8 +66,6 @@ - 1DFE25A50C527BC4003000F7 /* PSMTabBarControl.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D493DB90C52533B00AB718C /* PSMTabBarControl.framework */; }; - 52818B031C1C08CE00F59085 /* QLStephen.qlgenerator in Copy QuickLookPlugin */ = {isa = PBXBuildFile; fileRef = 52818AFF1C1C075300F59085 /* QLStephen.qlgenerator */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; - 528DA66A1426D4F9003380F1 /* macvim-askpass in Copy Scripts */ = {isa = PBXBuildFile; fileRef = 528DA6691426D4EB003380F1 /* macvim-askpass */; }; -- 52A364731C4A5789005757EC /* Sparkle.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 52A364721C4A5789005757EC /* Sparkle.framework */; }; -- 52A364761C4A57C1005757EC /* Sparkle.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = 52A364721C4A5789005757EC /* Sparkle.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 52B7ED9B1C4A4D6900AFFF15 /* dsa_pub.pem in Resources */ = {isa = PBXBuildFile; fileRef = 52B7ED9A1C4A4D6900AFFF15 /* dsa_pub.pem */; }; - 8D11072A0486CEB800E47090 /* MainMenu.nib in Resources */ = {isa = PBXBuildFile; fileRef = 29B97318FDCFA39411CA2CEA /* MainMenu.nib */; }; - 8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; }; -@@ -124,7 +122,6 @@ - dstPath = ""; - dstSubfolderSpec = 10; - files = ( -- 52A364761C4A57C1005757EC /* Sparkle.framework in Copy Frameworks */, - 1D493DBA0C52534300AB718C /* PSMTabBarControl.framework in Copy Frameworks */, - ); - name = "Copy Frameworks"; -@@ -250,7 +247,6 @@ - 32CA4F630368D1EE00C91783 /* MacVim_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MacVim_Prefix.pch; sourceTree = ""; }; - 52818AFA1C1C075300F59085 /* QuickLookStephen.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = QuickLookStephen.xcodeproj; path = qlstephen/QuickLookStephen.xcodeproj; sourceTree = ""; }; - 528DA6691426D4EB003380F1 /* macvim-askpass */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "macvim-askpass"; sourceTree = ""; }; -- 52A364721C4A5789005757EC /* Sparkle.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Sparkle.framework; sourceTree = ""; }; - 52B7ED9A1C4A4D6900AFFF15 /* dsa_pub.pem */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = dsa_pub.pem; sourceTree = ""; }; - 8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = ""; }; - 8D1107320486CEB800E47090 /* MacVim.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MacVim.app; sourceTree = BUILT_PRODUCTS_DIR; }; -@@ -264,7 +260,6 @@ - 1DFE25A50C527BC4003000F7 /* PSMTabBarControl.framework in Frameworks */, - 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */, - 1D8B5A53104AF9FF002E59D5 /* Carbon.framework in Frameworks */, -- 52A364731C4A5789005757EC /* Sparkle.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -@@ -443,7 +438,6 @@ - 29B97323FDCFA39411CA2CEA /* Frameworks */ = { - isa = PBXGroup; - children = ( -- 52A364721C4A5789005757EC /* Sparkle.framework */, - 1D8B5A52104AF9FF002E59D5 /* Carbon.framework */, - 1D493DB30C52533B00AB718C /* PSMTabBarControl.xcodeproj */, - 1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */, diff --git a/pkgs/applications/editors/vim/macvim.nix b/pkgs/applications/editors/vim/macvim.nix index ede12f50fec..9eabadae3b0 100644 --- a/pkgs/applications/editors/vim/macvim.nix +++ b/pkgs/applications/editors/vim/macvim.nix @@ -27,13 +27,13 @@ in stdenv.mkDerivation { pname = "macvim"; - version = "8.1.2234"; + version = "8.2.319"; src = fetchFromGitHub { owner = "macvim-dev"; repo = "macvim"; - rev = "snapshot-161"; - sha256 = "1hp3y85pj1icz053g627a1wp5pnwgxhk07pyd4arwcxs2103agw4"; + rev = "snapshot-162"; + sha256 = "1mg55jlrz533wlqrx028fyv86rfhdzvm5kdi8xlf67flc5hh9vrp"; }; enableParallelBuilding = true; @@ -43,18 +43,7 @@ stdenv.mkDerivation { gettext ncurses cscope luajit ruby tcl perl python.pkg ]; - patches = [ ./macvim.patch ./macvim-sparkle.patch ]; - - # The sparkle patch modified the nibs, so we have to recompile them - postPatch = '' - for nib in MainMenu Preferences; do - # redirect stdin/stdout/stderr to /dev/null because ibtool marks them nonblocking - # and not redirecting screws with subsequent commands. - # redirecting stderr is unfortunate but I don't know of a reasonable way to remove O_NONBLOCK - # from the fds. - /usr/bin/ibtool --compile src/MacVim/English.lproj/$nib.nib/keyedobjects.nib src/MacVim/English.lproj/$nib.nib >/dev/null 2>/dev/null "$out/nix-support/propagated-user-env-packages"''; @@ -189,7 +189,7 @@ stdenv.lib.makeScope pkgs.newScope (self: with self; { meta = { description = "GIMP plugin to correct lens distortion using the lensfun library and database"; - homepage = http://lensfun.sebastiankraft.net/; + homepage = "http://lensfun.sebastiankraft.net/"; license = stdenv.lib.licenses.gpl3Plus; maintainers = [ ]; @@ -203,7 +203,7 @@ stdenv.lib.makeScope pkgs.newScope (self: with self; { exposureBlend = scriptDerivation { name = "exposure-blend"; src = fetchurl { - url = http://tir.astro.utoledo.edu/jdsmith/code/eb/exposure-blend.scm; + url = "http://tir.astro.utoledo.edu/jdsmith/code/eb/exposure-blend.scm"; sha256 = "1b6c9wzpklqras4wwsyw3y3jp6fjmhnnskqiwm5sabs8djknfxla"; }; meta.broken = true; @@ -212,7 +212,7 @@ stdenv.lib.makeScope pkgs.newScope (self: with self; { lightning = scriptDerivation { name = "Lightning"; src = fetchurl { - url = http://registry.gimp.org/files/Lightning.scm; + url = "http://registry.gimp.org/files/Lightning.scm"; sha256 = "c14a8f4f709695ede3f77348728a25b3f3ded420da60f3f8de3944b7eae98a49"; }; }; @@ -235,7 +235,7 @@ stdenv.lib.makeScope pkgs.newScope (self: with self; { # http://registry.gimp.org/node/153 name = "lightning-gate"; src = fetchurl { - url = http://registry.gimp.org/files/LightningGate.scm; + url = "http://registry.gimp.org/files/LightningGate.scm"; sha256 = "181w1zi9a99kn2mfxjp43wkwcgw5vbb6iqjas7a9mhm8p04csys2"; }; }; diff --git a/pkgs/applications/graphics/gimp/remove-cc-reference.patch b/pkgs/applications/graphics/gimp/remove-cc-reference.patch index 0d6a87000cc..20c350bdaea 100644 --- a/pkgs/applications/graphics/gimp/remove-cc-reference.patch +++ b/pkgs/applications/graphics/gimp/remove-cc-reference.patch @@ -1,13 +1,13 @@ diff --git a/app/gimp-version.c b/app/gimp-version.c -index 12605c6..a9083da 100644 +index 3d1894a036..48bb670b64 100644 --- a/app/gimp-version.c +++ b/app/gimp-version.c -@@ -203,7 +203,7 @@ gimp_version (gboolean be_verbose, - lib_versions = gimp_library_versions (localized); - verbose_info = g_strdup_printf ("git-describe: %s\n" - "C compiler:\n%s\n%s", -- GIMP_GIT_VERSION, CC_VERSION, -+ GIMP_GIT_VERSION, "@cc_version@", +@@ -230,7 +230,7 @@ gimp_version (gboolean be_verbose, + GIMP_BUILD_ID, + gimp_version_get_revision (), + GIMP_BUILD_PLATFORM_FAMILY, +- CC_VERSION, ++ "@cc_version@", lib_versions); g_free (lib_versions); diff --git a/pkgs/applications/graphics/glabels/default.nix b/pkgs/applications/graphics/glabels/default.nix index fef296f45be..be487fcb8a6 100644 --- a/pkgs/applications/graphics/glabels/default.nix +++ b/pkgs/applications/graphics/glabels/default.nix @@ -33,7 +33,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Create labels and business cards"; - homepage = https://glabels.org/; + homepage = "https://glabels.org/"; license = with licenses; [ gpl3Plus lgpl3Plus ]; platforms = platforms.unix; maintainers = [ maintainers.nico202 ]; diff --git a/pkgs/applications/graphics/gnome-photos/default.nix b/pkgs/applications/graphics/gnome-photos/default.nix index 0eb4f21e53c..46be8d14532 100644 --- a/pkgs/applications/graphics/gnome-photos/default.nix +++ b/pkgs/applications/graphics/gnome-photos/default.nix @@ -35,13 +35,13 @@ stdenv.mkDerivation rec { pname = "gnome-photos"; - version = "3.34.0"; + version = "3.34.1"; outputs = [ "out" "installedTests" ]; src = fetchurl { url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; - sha256 = "12j455id5g616cn0nnj73v83aqgpavrsqszw1r5yhbpyc76lg03m"; + sha256 = "1ifm8hmxpf9nnxddfcpkbc5wc5f5hz43yj83nnakzqr6x1mq7gdp"; }; patches = [ @@ -117,9 +117,9 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Access, organize and share your photos"; - homepage = https://wiki.gnome.org/Apps/Photos; + homepage = "https://wiki.gnome.org/Apps/Photos"; license = licenses.gpl3Plus; - maintainers = gnome3.maintainers; + maintainers = teams.gnome.members; platforms = platforms.linux; }; } diff --git a/pkgs/applications/graphics/gnuclad/default.nix b/pkgs/applications/graphics/gnuclad/default.nix index 2535f7514f1..fcb4bdb5374 100644 --- a/pkgs/applications/graphics/gnuclad/default.nix +++ b/pkgs/applications/graphics/gnuclad/default.nix @@ -10,12 +10,12 @@ stdenv.mkDerivation rec { sha256 = "0ka2kscpjff7gflsargv3r9fdaxhkf3nym9mfaln3pnq6q7fwdki"; }; - NIX_CFLAGS_COMPILE = [ "-Wno-error=catch-value" ]; + NIX_CFLAGS_COMPILE = "-Wno-error=catch-value"; nativeBuildInputs = [ pkgconfig ]; meta = with stdenv.lib; { - homepage = https://launchpad.net/gnuclad; + homepage = "https://launchpad.net/gnuclad"; description = "gnuclad tries to help the environment by creating trees. It's primary use will be generating cladogram trees for the GNU/Linux distro timeline project."; license = licenses.gpl3Plus; maintainers = with maintainers; [ mog ]; diff --git a/pkgs/applications/graphics/gocr/default.nix b/pkgs/applications/graphics/gocr/default.nix index f5fa8ca9221..7c586374ec5 100644 --- a/pkgs/applications/graphics/gocr/default.nix +++ b/pkgs/applications/graphics/gocr/default.nix @@ -24,7 +24,7 @@ stdenv.mkDerivation rec { ''; meta = { - homepage = http://jocr.sourceforge.net/; + homepage = "http://jocr.sourceforge.net/"; description = "GPL Optical Character Recognition"; license = stdenv.lib.licenses.gpl2; platforms = stdenv.lib.platforms.linux; diff --git a/pkgs/applications/graphics/goxel/default.nix b/pkgs/applications/graphics/goxel/default.nix index e4ab5639ba6..6fb5b91c2a9 100644 --- a/pkgs/applications/graphics/goxel/default.nix +++ b/pkgs/applications/graphics/goxel/default.nix @@ -3,22 +3,20 @@ stdenv.mkDerivation rec { pname = "goxel"; - version = "0.10.0"; + version = "0.10.5"; src = fetchFromGitHub { owner = "guillaumechereau"; repo = "goxel"; rev = "v${version}"; - sha256 = "1mdw4bs7hvfn0yngd9ial5wzlfkcbhr3wzldb1w7s3s48agixkdr"; + sha256 = "1b63jqryq19qa81g1ml6d85f27wj1ci3h56r02cl9xn8di5p674f"; }; patches = [ ./disable-imgui_ini.patch ]; nativeBuildInputs = [ scons pkgconfig wrapGAppsHook ]; buildInputs = [ glfw3 gtk3 libpng12 ]; - NIX_LDFLAGS = [ - "-lpthread" - ]; + NIX_LDFLAGS = "-lpthread"; buildPhase = '' make release @@ -30,7 +28,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Open Source 3D voxel editor"; - homepage = https://guillaumechereau.github.io/goxel/; + homepage = "https://guillaumechereau.github.io/goxel/"; license = licenses.gpl3; platforms = platforms.linux; maintainers = with maintainers; [ tilpner ]; diff --git a/pkgs/applications/graphics/gpicview/default.nix b/pkgs/applications/graphics/gpicview/default.nix index 86867cd1cca..9e3ab37c322 100644 --- a/pkgs/applications/graphics/gpicview/default.nix +++ b/pkgs/applications/graphics/gpicview/default.nix @@ -17,8 +17,8 @@ stdenv.mkDerivation { meta = with stdenv.lib; { description = "A simple and fast image viewer for X"; - homepage = http://lxde.sourceforge.net/gpicview/; - repositories.git = git://lxde.git.sourceforge.net/gitroot/lxde/gpicview; + homepage = "http://lxde.sourceforge.net/gpicview/"; + repositories.git = "git://lxde.git.sourceforge.net/gitroot/lxde/gpicview"; license = licenses.gpl2; maintainers = with maintainers; [ lovek323 ]; platforms = platforms.unix; diff --git a/pkgs/applications/graphics/gqview/default.nix b/pkgs/applications/graphics/gqview/default.nix index 205376b1257..965ac5db682 100644 --- a/pkgs/applications/graphics/gqview/default.nix +++ b/pkgs/applications/graphics/gqview/default.nix @@ -9,7 +9,7 @@ stdenv.mkDerivation { name = "gqview-2.1.5"; src = fetchurl { - url = mirror://sourceforge/gqview/gqview-2.1.5.tar.gz; + url = "mirror://sourceforge/gqview/gqview-2.1.5.tar.gz"; sha256 = "0ilm5s7ps9kg4f5hzgjhg0xhn6zg0v9i7jnd67zrx9h7wsaa9zhj"; }; @@ -18,13 +18,11 @@ stdenv.mkDerivation { hardeningDisable = [ "format" ]; - NIX_LDFLAGS = [ - "-lm" - ]; + NIX_LDFLAGS = "-lm"; meta = with stdenv.lib; { description = "A fast image viewer"; - homepage = http://gqview.sourceforge.net; + homepage = "http://gqview.sourceforge.net"; license = licenses.gpl2; platforms = platforms.unix; }; diff --git a/pkgs/applications/graphics/grafx2/default.nix b/pkgs/applications/graphics/grafx2/default.nix index 039bb1917d3..2a2a6a67598 100644 --- a/pkgs/applications/graphics/grafx2/default.nix +++ b/pkgs/applications/graphics/grafx2/default.nix @@ -21,7 +21,7 @@ stdenv.mkDerivation rec { meta = { description = "Bitmap paint program inspired by the Amiga programs Deluxe Paint and Brilliance"; - homepage = http://pulkomandy.tk/projects/GrafX2; + homepage = "http://pulkomandy.tk/projects/GrafX2"; license = stdenv.lib.licenses.gpl2; platforms = [ "x86_64-linux" "i686-linux" ]; maintainers = [ stdenv.lib.maintainers.zoomulator ]; diff --git a/pkgs/applications/graphics/graphicsmagick/default.nix b/pkgs/applications/graphics/graphicsmagick/default.nix index 403a5285e15..be5114565ff 100644 --- a/pkgs/applications/graphics/graphicsmagick/default.nix +++ b/pkgs/applications/graphics/graphicsmagick/default.nix @@ -35,7 +35,7 @@ stdenv.mkDerivation rec { ''; meta = { - homepage = http://www.graphicsmagick.org; + homepage = "http://www.graphicsmagick.org"; description = "Swiss army knife of image processing"; license = stdenv.lib.licenses.mit; platforms = stdenv.lib.platforms.all; diff --git a/pkgs/applications/graphics/gscan2pdf/default.nix b/pkgs/applications/graphics/gscan2pdf/default.nix index f8d50a7c798..352b6b900cc 100644 --- a/pkgs/applications/graphics/gscan2pdf/default.nix +++ b/pkgs/applications/graphics/gscan2pdf/default.nix @@ -10,11 +10,11 @@ with stdenv.lib; perlPackages.buildPerlPackage rec { pname = "gscan2pdf"; - version = "2.6.2"; + version = "2.6.5"; src = fetchurl { url = "mirror://sourceforge/gscan2pdf/${version}/${pname}-${version}.tar.xz"; - sha256 = "0z35lglf4anfczizynjp8sd1jpix5mkmm1nh39n1v94l7ahjxsww"; + sha256 = "0x8931i5zs4zl3iqjhlp7h8y6ssklxiqsddz5kh84nl3p0izbg0y"; }; nativeBuildInputs = [ wrapGAppsHook ]; @@ -100,7 +100,7 @@ perlPackages.buildPerlPackage rec { meta = { description = "A GUI to produce PDFs or DjVus from scanned documents"; - homepage = http://gscan2pdf.sourceforge.net/; + homepage = "http://gscan2pdf.sourceforge.net/"; license = licenses.gpl3; maintainers = with maintainers; [ pacien ]; }; diff --git a/pkgs/applications/graphics/gthumb/default.nix b/pkgs/applications/graphics/gthumb/default.nix index f0057f3a1a8..4a6526fe9c6 100644 --- a/pkgs/applications/graphics/gthumb/default.nix +++ b/pkgs/applications/graphics/gthumb/default.nix @@ -33,11 +33,11 @@ stdenv.mkDerivation rec { pname = "gthumb"; - version = "3.8.2"; + version = "3.8.3"; src = fetchurl { url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; - sha256 = "15wqks35ks5dm7zj046dfd45vvrilan2ayfy2sxiprv7q74cip2q"; + sha256 = "1a0gss9cjcwayrcpkam5kc1giwbfy38jgqxvh33in9gfq9dgrygg"; }; nativeBuildInputs = [ @@ -59,7 +59,10 @@ stdenv.mkDerivation rec { gnome3.adwaita-icon-theme gsettings-desktop-schemas gst_all_1.gst-plugins-base - gst_all_1.gstreamer + (gst_all_1.gst-plugins-good.override { gtkSupport = true; }) + gst_all_1.gst-libav + gst_all_1.gst-plugins-bad + gst_all_1.gst-plugins-ugly gtk3 json-glib lcms2 diff --git a/pkgs/applications/graphics/guetzli/default.nix b/pkgs/applications/graphics/guetzli/default.nix index d7b96425968..ccddf907e94 100644 --- a/pkgs/applications/graphics/guetzli/default.nix +++ b/pkgs/applications/graphics/guetzli/default.nix @@ -22,7 +22,7 @@ stdenv.mkDerivation { meta = { description = "Perceptual JPEG encoder"; longDescription = "Guetzli is a JPEG encoder that aims for excellent compression density at high visual quality."; - homepage = https://github.com/google/guetzli; + homepage = "https://github.com/google/guetzli"; license = stdenv.lib.licenses.asl20; platforms = stdenv.lib.platforms.x86_64; maintainers = [ stdenv.lib.maintainers.seppeljordan ]; diff --git a/pkgs/applications/graphics/hugin/default.nix b/pkgs/applications/graphics/hugin/default.nix index 8f7800a7323..7314ff893b0 100644 --- a/pkgs/applications/graphics/hugin/default.nix +++ b/pkgs/applications/graphics/hugin/default.nix @@ -46,7 +46,7 @@ stdenv.mkDerivation rec { ''; meta = with stdenv.lib; { - homepage = http://hugin.sourceforge.net/; + homepage = "http://hugin.sourceforge.net/"; description = "Toolkit for stitching photographs and assembling panoramas, together with an easy to use graphical front end"; license = licenses.gpl2Plus; maintainers = with maintainers; [ hrdinka ]; diff --git a/pkgs/applications/graphics/ideogram/default.nix b/pkgs/applications/graphics/ideogram/default.nix index 36afe8dd3e0..4bf414cf8dd 100644 --- a/pkgs/applications/graphics/ideogram/default.nix +++ b/pkgs/applications/graphics/ideogram/default.nix @@ -17,13 +17,13 @@ stdenv.mkDerivation rec { pname = "ideogram"; - version = "1.3.0"; + version = "1.3.3"; src = fetchFromGitHub { owner = "cassidyjames"; repo = pname; rev = version; - sha256 = "0ghc7hk4b4r3a0x9r30rrgv3rarxyjr2hf9ig244xwvhh5rn3j10"; + sha256 = "1zkr7x022khn5g3sq2dkxzy1hiiz66vl81s3i5sb9qr88znh79p1"; }; nativeBuildInputs = [ @@ -50,9 +50,15 @@ stdenv.mkDerivation rec { patchShebangs meson/post_install.py ''; + passthru = { + updateScript = pantheon.updateScript { + attrPath = pname; + }; + }; + meta = with stdenv.lib; { description = "Insert emoji anywhere, even in non-native apps - designed for elementary OS"; - homepage = https://github.com/cassidyjames/ideogram; + homepage = "https://github.com/cassidyjames/ideogram"; license = licenses.gpl2Plus; maintainers = pantheon.maintainers; platforms = platforms.linux; diff --git a/pkgs/applications/graphics/image_optim/Gemfile.lock b/pkgs/applications/graphics/image_optim/Gemfile.lock index 20c9772ce46..3ffadb5acbe 100644 --- a/pkgs/applications/graphics/image_optim/Gemfile.lock +++ b/pkgs/applications/graphics/image_optim/Gemfile.lock @@ -20,4 +20,4 @@ DEPENDENCIES image_optim BUNDLED WITH - 1.16.3 + 2.1.4 diff --git a/pkgs/applications/graphics/image_optim/default.nix b/pkgs/applications/graphics/image_optim/default.nix index 385f9825e46..ba437eab412 100644 --- a/pkgs/applications/graphics/image_optim/default.nix +++ b/pkgs/applications/graphics/image_optim/default.nix @@ -58,7 +58,7 @@ bundlerApp { meta = with lib; { description = "Command line tool and ruby interface to optimize (lossless compress, optionally lossy) jpeg, png, gif and svg images using external utilities (advpng, gifsicle, jhead, jpeg-recompress, jpegoptim, jpegrescan, jpegtran, optipng, pngcrush, pngout, pngquant, svgo)"; - homepage = https://github.com/toy/image_optim; + homepage = "https://github.com/toy/image_optim"; license = licenses.mit; maintainers = with maintainers; [ srghma nicknovitski ]; platforms = platforms.all; diff --git a/pkgs/applications/graphics/imagej/default.nix b/pkgs/applications/graphics/imagej/default.nix index 6472712bcb4..d47369f5094 100644 --- a/pkgs/applications/graphics/imagej/default.nix +++ b/pkgs/applications/graphics/imagej/default.nix @@ -32,7 +32,7 @@ let --add-flags "-jar $out/share/java/ij.jar -ijpath $out/share" ''; meta = with stdenv.lib; { - homepage = https://imagej.nih.gov/ij/; + homepage = "https://imagej.nih.gov/ij/"; description = "Image processing and analysis in Java"; longDescription = '' ImageJ is a public domain Java image processing program diff --git a/pkgs/applications/graphics/imgcat/default.nix b/pkgs/applications/graphics/imgcat/default.nix index 1fa3ec8ccc6..5943632930c 100644 --- a/pkgs/applications/graphics/imgcat/default.nix +++ b/pkgs/applications/graphics/imgcat/default.nix @@ -25,7 +25,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "It's like cat, but for images"; - homepage = https://github.com/eddieantonio/imgcat; + homepage = "https://github.com/eddieantonio/imgcat"; license = licenses.isc; maintainers = with maintainers; [ jwiegley ]; platforms = platforms.unix; diff --git a/pkgs/applications/graphics/imgp/default.nix b/pkgs/applications/graphics/imgp/default.nix new file mode 100644 index 00000000000..80420202c05 --- /dev/null +++ b/pkgs/applications/graphics/imgp/default.nix @@ -0,0 +1,38 @@ +{ lib, fetchFromGitHub, buildPythonApplication, pillow, imgp }: + +buildPythonApplication rec { + pname = "imgp"; + version = "2.7"; + + src = fetchFromGitHub { + owner = "jarun"; + repo = pname; + rev = "v${version}"; + sha256 = "13r4fn3dd0nyidfhrr7zzpls5ifbyqdwxhyvpkqr8ahchws7wfc6"; + }; + + propagatedBuildInputs = [ pillow ]; + + installFlags = [ + "DESTDIR=$(out)" + "PREFIX=" + ]; + + postInstall = '' + install -Dm555 auto-completion/bash/imgp-completion.bash $out/share/bash-completion/completions/imgp.bash + install -Dm555 auto-completion/fish/imgp.fish -t $out/share/fish/vendor_completions.d + install -Dm555 auto-completion/zsh/_imgp -t $out/share/zsh/site-functions + ''; + + checkPhase = '' + $out/bin/imgp --help + ''; + + meta = with lib; { + description = "High-performance CLI batch image resizer & rotator"; + homepage = "https://github.com/jarun/imgp"; + license = licenses.gpl3; + platforms = platforms.unix; + maintainers = with maintainers; [ sikmir ]; + }; +} diff --git a/pkgs/applications/graphics/imlibsetroot/default.nix b/pkgs/applications/graphics/imlibsetroot/default.nix index 49868bbd831..06549468efe 100644 --- a/pkgs/applications/graphics/imlibsetroot/default.nix +++ b/pkgs/applications/graphics/imlibsetroot/default.nix @@ -21,9 +21,9 @@ stdenv.mkDerivation { meta = with stdenv.lib; { description = "A Xinerama Aware Background Changer"; - homepage = http://robotmonkeys.net/2010/03/30/imlibsetroot/; + homepage = "http://robotmonkeys.net/2010/03/30/imlibsetroot/"; license = licenses.gpl2; platforms = platforms.linux; - maintainers = with maintainers; [ lucas8 ]; + maintainers = with maintainers; [ dwarfmaster ]; }; } diff --git a/pkgs/applications/graphics/imv/default.nix b/pkgs/applications/graphics/imv/default.nix index 5f06feb7c62..88b4a847665 100644 --- a/pkgs/applications/graphics/imv/default.nix +++ b/pkgs/applications/graphics/imv/default.nix @@ -2,18 +2,18 @@ , freeimage, fontconfig, pkgconfig , asciidoc, docbook_xsl, libxslt, cmocka , librsvg, pango, libxkbcommon, wayland -, libGLU +, libGLU, icu }: stdenv.mkDerivation rec { pname = "imv"; - version = "4.0.1"; + version = "4.1.0"; src = fetchFromGitHub { owner = "eXeC64"; repo = "imv"; rev = "v${version}"; - sha256 = "sha256:01fbkbwwsyr00k3mwans8jfb9p4gl02v6z62vgx0pkgrzxjkcz07"; + sha256 = "sha256:0gk8g178i961nn3bls75a8qpv6wvfvav6hd9lxca1skaikd33zdx"; }; preBuild = '' @@ -36,6 +36,7 @@ stdenv.mkDerivation rec { pango pkgconfig wayland + icu ]; installFlags = [ "PREFIX=$(out)" "CONFIGPREFIX=$(out)/etc" ]; @@ -52,7 +53,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "A command line image viewer for tiling window managers"; - homepage = https://github.com/eXeC64/imv; + homepage = "https://github.com/eXeC64/imv"; license = licenses.gpl2; maintainers = with maintainers; [ rnhmjoj markus1189 ]; platforms = [ "i686-linux" "x86_64-linux" ]; diff --git a/pkgs/applications/graphics/inkscape/default.nix b/pkgs/applications/graphics/inkscape/default.nix index 3996b94ba14..86fb6e03491 100644 --- a/pkgs/applications/graphics/inkscape/default.nix +++ b/pkgs/applications/graphics/inkscape/default.nix @@ -1,54 +1,62 @@ -{ stdenv, fetchurl, fetchpatch, pkgconfig, perlPackages, libXft -, libpng, zlib, popt, boehmgc, libxml2, libxslt, glib, gtkmm2 -, glibmm, libsigcxx, lcms, boost, gettext, makeWrapper -, gsl, gtkspell2, cairo, python2, poppler, imagemagick, libwpg, librevenge -, libvisio, libcdr, libexif, potrace, cmake -, librsvg, wrapGAppsHook +{ stdenv +, boehmgc +, boost +, cairo +, cmake +, fetchpatch +, fetchurl +, gettext +, glib +, glibmm +, gsl +, gtkmm2 +, gtkspell2 +, imagemagick +, lcms +, libcdr +, libexif +, libpng +, librevenge +, librsvg +, libsigcxx +, libvisio +, libwpg +, libXft +, libxml2 +, libxslt +, makeWrapper +, perlPackages +, pkg-config +, poppler +, popt +, potrace +, python3 +, wrapGAppsHook +, zlib }: - let - python2Env = python2.withPackages(ps: with ps; - [ numpy lxml scour ]); + python3Env = python3.withPackages + (ps: with ps; [ + numpy + lxml + scour + ]); in - stdenv.mkDerivation rec { - name = "inkscape-0.92.4"; + pname = "inkscape"; + version = "0.92.5"; src = fetchurl { - url = "https://media.inkscape.org/dl/resources/file/${name}.tar.bz2"; - sha256 = "0pjinhjibfsz1aywdpgpj3k23xrsszpj4a1ya5562dkv2yl2vv2p"; + url = "https://media.inkscape.org/dl/resources/file/${pname}-${version}.tar.bz2"; + sha256 = "ge5/aeK9ZKlzQ9g5Wkp6eQWyG4YVZu1eXZF5F41Rmgs="; }; - patches = [ - (fetchpatch { - name = "inkscape-poppler_0_76_compat.patch"; - url = "https://gitlab.com/inkscape/inkscape/commit/e831b034746f8dc3c3c1b88372751f6dcb974831.diff"; - sha256 = "096rdyi6ppjq1h9jwwsm9hb99nggfrfinik8rm23jkn4h2zl01zf"; - }) - (fetchpatch { - name = "inkscape-poppler_0_82_compat.patch"; - url = "https://gitlab.com/inkscape/inkscape/commit/835b6bb62be565efab986d5a3f30a672ad56c7eb.patch"; - sha256 = "02c6sxi2w52b885vr3pgani6kvxp9gdqqk2jgiykkdzv70hhrnm7"; - }) - (fetchpatch { - name = "inkscape-poppler_0_83_compat.patch"; - url = "https://gitlab.com/inkscape/inkscape/commit/b5360a807b12d4e8318475ffd0464b84882788b5.patch"; - sha256 = "1p44rr2q2i3zkd1y1j7xgdcbgx8yvlq6hq92im8s0bkjby6p5cpz"; - }) - ]; - # Inkscape hits the ARGMAX when linking on macOS. It appears to be # CMake’s ARGMAX check doesn’t offer enough padding for NIX_LDFLAGS. # Setting strictDeps it avoids duplicating some dependencies so it # will leave us under ARGMAX. strictDeps = true; - unpackPhase = '' - cp $src ${name}.tar.bz2 - tar xvjf ${name}.tar.bz2 > /dev/null - cd ${name} - ''; - postPatch = '' patchShebangs share/extensions patchShebangs fix-roff-punct @@ -56,24 +64,52 @@ stdenv.mkDerivation rec { # Python is used at run-time to execute scripts, e.g., those from # the "Effects" menu. substituteInPlace src/extension/implementation/script.cpp \ - --replace '"python-interpreter", "python"' '"python-interpreter", "${python2Env}/bin/python"' + --replace '"python-interpreter", "python"' '"python-interpreter", "${python3Env}/bin/python"' ''; - nativeBuildInputs = [ pkgconfig cmake makeWrapper python2Env wrapGAppsHook ] - ++ (with perlPackages; [ perl XMLParser ]); + nativeBuildInputs = [ + pkg-config + cmake + makeWrapper + python3Env + wrapGAppsHook + ] ++ (with perlPackages; [ + perl + XMLParser + ]); + buildInputs = [ - libXft libpng zlib popt boehmgc - libxml2 libxslt glib gtkmm2 glibmm libsigcxx lcms boost gettext - gsl poppler imagemagick libwpg librevenge - libvisio libcdr libexif potrace - + boehmgc + boost + gettext + glib + glibmm + gsl + gtkmm2 + imagemagick + lcms + libcdr + libexif + libpng + librevenge librsvg # for loading icons - - python2Env perlPackages.perl - ] ++ stdenv.lib.optional (!stdenv.isDarwin) gtkspell2 - ++ stdenv.lib.optional stdenv.isDarwin cairo; - - enableParallelBuilding = true; + libsigcxx + libvisio + libwpg + libXft + libxml2 + libxslt + perlPackages.perl + poppler + popt + potrace + python3Env + zlib + ] ++ stdenv.lib.optionals (!stdenv.isDarwin) [ + gtkspell2 + ] ++ stdenv.lib.optionals stdenv.isDarwin [ + cairo + ]; # Make sure PyXML modules can be found at run-time. postInstall = stdenv.lib.optionalString stdenv.isDarwin '' @@ -82,9 +118,10 @@ stdenv.mkDerivation rec { ''; meta = with stdenv.lib; { - license = "GPL"; - homepage = https://www.inkscape.org; description = "Vector graphics editor"; + homepage = "https://www.inkscape.org"; + license = licenses.gpl3Plus; + maintainers = [ maintainers.jtojnar ]; platforms = platforms.all; longDescription = '' Inkscape is a feature-rich vector graphics editor that edits diff --git a/pkgs/applications/graphics/ipe/default.nix b/pkgs/applications/graphics/ipe/default.nix index 0cb09ecb643..6a2a8dbc18f 100644 --- a/pkgs/applications/graphics/ipe/default.nix +++ b/pkgs/applications/graphics/ipe/default.nix @@ -1,8 +1,8 @@ { stdenv, fetchurl, makeWrapper, pkgconfig, zlib, freetype, cairo, lua5, texlive, ghostscript -, libjpeg, libpng, qtbase +, libjpeg, libpng, qtbase, mkDerivation }: -stdenv.mkDerivation rec { +mkDerivation rec { name = "ipe-7.2.13"; src = fetchurl { @@ -20,13 +20,9 @@ stdenv.mkDerivation rec { libjpeg libpng zlib qtbase freetype cairo lua5 texlive ghostscript ]; - nativeBuildInputs = [ makeWrapper pkgconfig ]; + nativeBuildInputs = [ pkgconfig ]; - postFixup = '' - for prog in $out/bin/*; do - wrapProgram "$prog" --prefix PATH : "${texlive}/bin" - done - ''; + qtWrapperArgs = [ ''--prefix PATH : ${texlive}/bin'' ]; enableParallelBuilding = true; @@ -34,7 +30,7 @@ stdenv.mkDerivation rec { meta = { description = "An editor for drawing figures"; - homepage = http://ipe.otfried.org; + homepage = "http://ipe.otfried.org"; license = stdenv.lib.licenses.gpl3Plus; longDescription = '' Ipe is an extensible drawing editor for creating figures in PDF and Postscript format. diff --git a/pkgs/applications/graphics/jbrout/default.nix b/pkgs/applications/graphics/jbrout/default.nix deleted file mode 100644 index 4eb7518cc10..00000000000 --- a/pkgs/applications/graphics/jbrout/default.nix +++ /dev/null @@ -1,42 +0,0 @@ -{ stdenv, fetchsvn, pythonPackages, makeWrapper, fbida, which }: - -let - inherit (pythonPackages) python; -in pythonPackages.buildPythonApplication rec { - pname = "jbrout"; - version = "338"; - - src = fetchsvn { - url = "http://jbrout.googlecode.com/svn/trunk"; - rev = version; - sha256 = "0257ni4vkxgd0qhs73fw5ppw1qpf11j8fgwsqc03b1k1yv3hk4hf"; - }; - - doCheck = false; - - # XXX: patchPhase to avoid this - # File "/nix/store/vnyjxn6h3rbrn49m25yyw7i1chlxglhw-python-2.7.1/lib/python2.7/zipfile.py", line 348, in FileHeader - # len(filename), len(extra)) - #struct.error: ushort format requires 0 <= number <= USHRT_MAX - patchPhase = '' - find | xargs touch - - substituteInPlace setup.py --replace "version=__version__" "version=baseVersion" - ''; - - postInstall = '' - mkdir $out/bin - echo "python $out/${python.sitePackages}/jbrout/jbrout.py" > $out/bin/jbrout - chmod +x $out/bin/jbrout - ''; - - buildInputs = [ python makeWrapper which ]; - propagatedBuildInputs = with pythonPackages; [ pillow lxml pyGtkGlade pyexiv2 fbida ]; - - meta = { - homepage = https://manatlan.com/jbrout/; - description = "Photo manager"; - platforms = stdenv.lib.platforms.linux; - license = stdenv.lib.licenses.gpl2Plus; - }; -} diff --git a/pkgs/applications/graphics/jpegoptim/default.nix b/pkgs/applications/graphics/jpegoptim/default.nix index cc1ca3a0ff2..265ce82b8ac 100644 --- a/pkgs/applications/graphics/jpegoptim/default.nix +++ b/pkgs/applications/graphics/jpegoptim/default.nix @@ -16,7 +16,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Optimize JPEG files"; - homepage = https://www.kokkonen.net/tjko/projects.html ; + homepage = "https://www.kokkonen.net/tjko/projects.html"; license = licenses.gpl2; maintainers = [ maintainers.aristid ]; platforms = platforms.all; diff --git a/pkgs/applications/graphics/jpegrescan/default.nix b/pkgs/applications/graphics/jpegrescan/default.nix index 1c65c7da3a2..5fe35edabdf 100644 --- a/pkgs/applications/graphics/jpegrescan/default.nix +++ b/pkgs/applications/graphics/jpegrescan/default.nix @@ -34,7 +34,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "losslessly shrink any JPEG file"; - homepage = https://github.com/kud/jpegrescan; + homepage = "https://github.com/kud/jpegrescan"; license = licenses.publicDomain; maintainers = [ maintainers.ramkromberg ]; platforms = platforms.all; diff --git a/pkgs/applications/graphics/k3d/default.nix b/pkgs/applications/graphics/k3d/default.nix index d3bc8deb05e..c74f35e4334 100644 --- a/pkgs/applications/graphics/k3d/default.nix +++ b/pkgs/applications/graphics/k3d/default.nix @@ -15,7 +15,7 @@ stdenv.mkDerivation rec { patches = [ (fetchpatch { /* glibmm 2.50 fix */ - url = https://github.com/K-3D/k3d/commit/c65889d0652490d88a573e47de7a9324bf27bff2.patch; + url = "https://github.com/K-3D/k3d/commit/c65889d0652490d88a573e47de7a9324bf27bff2.patch"; sha256 = "162icv1hicr2dirkb9ijacvg9bhz5j30yfwg7b45ijavk8rns62j"; }) ]; @@ -39,13 +39,11 @@ stdenv.mkDerivation rec { #doCheck = false; - NIX_CFLAGS_COMPILE = [ - "-Wno-deprecated-declarations" - ]; + NIX_CFLAGS_COMPILE = "-Wno-deprecated-declarations"; meta = with stdenv.lib; { description = "A 3D editor with support for procedural editing"; - homepage = http://www.k-3d.org/; + homepage = "http://www.k-3d.org/"; platforms = platforms.linux; maintainers = [ maintainers.raskin ]; license = licenses.gpl2; diff --git a/pkgs/applications/graphics/kodelife/default.nix b/pkgs/applications/graphics/kodelife/default.nix index 47a0687e79d..e5aac9b8823 100644 --- a/pkgs/applications/graphics/kodelife/default.nix +++ b/pkgs/applications/graphics/kodelife/default.nix @@ -9,17 +9,30 @@ stdenv.mkDerivation rec { pname = "kodelife"; - version = "0.8.7.105"; + version = "0.9.0.129"; + + suffix = { + aarch64-linux = "linux-arm64"; + armv7l-linux = "linux-armhf"; + x86_64-darwin = "macos"; + x86_64-linux = "linux-x86_64"; + }.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}"); src = fetchzip { - url = "https://hexler.net/pub/${pname}/${pname}-${version}-linux-x86_64.zip"; - sha256 = "0ld4lwigzwlikx04qy3gskqqg0wzlk8m3ccrd704ifl8lsp46n5r"; + url = "https://hexler.net/pub/${pname}/${pname}-${version}-${suffix}.zip"; + sha256 = { + aarch64-linux = "0z2fqlf156348ha3zhv16kvqdx68fbwbzch2gzjm9x1na9n5k1ra"; + armv7l-linux = "1ppwgrmgl1j2ws9mhrscvvkamd69a6xw7x35df6d30cyj97r0mzy"; + x86_64-darwin = "0f8vn6m3xzsiyxm2ka5wkbp63wvzrix6g1xrbpvcm3v2llmychkl"; + x86_64-linux = "035c1nlw0nim057sz3axpkcgkafqbm6gpr8hwr097vlrqll6w3dv"; + }.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}"); }; dontConfigure = true; dontBuild = true; dontStrip = true; dontPatchELF = true; + preferLocalBuild = true; installPhase = '' mkdir -p $out/bin @@ -36,7 +49,7 @@ stdenv.mkDerivation rec { libGLU libGL xorg.libX11 ]; - in '' + in stdenv.lib.optionalString (!stdenv.isDarwin) '' patchelf \ --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ --set-rpath "${libPath}" \ @@ -48,6 +61,6 @@ stdenv.mkDerivation rec { description = "Real-time GPU shader editor"; license = licenses.unfree; maintainers = with maintainers; [ prusnak ]; - platforms = [ "x86_64-linux" ]; + platforms = [ "aarch64-linux" "armv7l-linux" "x86_64-darwin" "x86_64-linux" ]; }; } diff --git a/pkgs/applications/graphics/krita/default.nix b/pkgs/applications/graphics/krita/default.nix index 52397ac33c4..6ad67f75b21 100644 --- a/pkgs/applications/graphics/krita/default.nix +++ b/pkgs/applications/graphics/krita/default.nix @@ -17,6 +17,9 @@ mkDerivation rec { sha256 = "1sx4j4brk71bas3cpqzk4bd8bknyl3x4fdg5pv4r7pcfd3vpq2vy"; }; + # *somtimes* fails with can't find ui_manager.h, also see https://github.com/NixOS/nixpkgs/issues/35359 + enableParallelBuilding = false; + nativeBuildInputs = [ cmake extra-cmake-modules python3Packages.sip makeWrapper ]; buildInputs = [ @@ -28,7 +31,8 @@ mkDerivation rec { python3Packages.pyqt5 ] ++ lib.optional (stdenv.hostPlatform.isi686 || stdenv.hostPlatform.isx86_64) vc; - NIX_CFLAGS_COMPILE = [ "-I${ilmbase.dev}/include/OpenEXR" ]; + NIX_CFLAGS_COMPILE = [ "-I${ilmbase.dev}/include/OpenEXR" ] + ++ lib.optional stdenv.cc.isGNU "-Wno-deprecated-copy"; cmakeFlags = [ "-DPYQT5_SIP_DIR=${python3Packages.pyqt5}/share/sip/PyQt5" @@ -44,7 +48,7 @@ mkDerivation rec { meta = with lib; { description = "A free and open source painting application"; - homepage = https://krita.org/; + homepage = "https://krita.org/"; maintainers = with maintainers; [ abbradar ]; platforms = platforms.linux; license = licenses.gpl2; diff --git a/pkgs/applications/graphics/krop/default.nix b/pkgs/applications/graphics/krop/default.nix index c4c889cdba5..818fc63535e 100644 --- a/pkgs/applications/graphics/krop/default.nix +++ b/pkgs/applications/graphics/krop/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchFromGitHub, python3Packages, libsForQt5, ghostscript }: +{ stdenv, fetchFromGitHub, python3Packages, libsForQt5, ghostscript, qt5}: python3Packages.buildPythonApplication rec { pname = "krop"; @@ -19,11 +19,16 @@ python3Packages.buildPythonApplication rec { ghostscript ]; + nativeBuildInputs = [ qt5.wrapQtAppsHook ]; + makeWrapperArgs = [ + "\${qtWrapperArgs[@]}" + ]; + # Disable checks because of interference with older Qt versions // xcb doCheck = false; meta = { - homepage = http://arminstraub.com/software/krop; + homepage = "http://arminstraub.com/software/krop"; description = "Graphical tool to crop the pages of PDF files"; longDescription = '' Krop is a tool that allows you to optimise your PDF files, and remove diff --git a/pkgs/applications/graphics/leocad/default.nix b/pkgs/applications/graphics/leocad/default.nix index 201a4fe113e..5e950eeac04 100644 --- a/pkgs/applications/graphics/leocad/default.nix +++ b/pkgs/applications/graphics/leocad/default.nix @@ -24,7 +24,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "CAD program for creating virtual LEGO models"; - homepage = https://www.leocad.org/; + homepage = "https://www.leocad.org/"; license = licenses.gpl2; platforms = platforms.linux; }; diff --git a/pkgs/applications/graphics/luminance-hdr/default.nix b/pkgs/applications/graphics/luminance-hdr/default.nix index 94899c937a8..811a907746d 100644 --- a/pkgs/applications/graphics/luminance-hdr/default.nix +++ b/pkgs/applications/graphics/luminance-hdr/default.nix @@ -1,9 +1,10 @@ -{ stdenv, cmake, fetchFromGitHub, pkgconfig, boost, exiv2, fftwFloat, gsl +{ stdenv, mkDerivation, cmake, fetchFromGitHub, pkgconfig +, boost, exiv2, fftwFloat, gsl , ilmbase, lcms2, libraw, libtiff, openexr , qtbase, qtdeclarative, qttools, qtwebengine, eigen }: -stdenv.mkDerivation rec { +mkDerivation rec { pname = "luminance-hdr"; version = "2.6.0"; @@ -24,7 +25,7 @@ stdenv.mkDerivation rec { nativeBuildInputs = [ cmake pkgconfig ]; meta = with stdenv.lib; { - homepage = http://qtpfsgui.sourceforge.net/; + homepage = "http://qtpfsgui.sourceforge.net/"; description = "A complete open source solution for HDR photography"; license = licenses.gpl2; platforms = platforms.linux; diff --git a/pkgs/applications/graphics/mandelbulber/default.nix b/pkgs/applications/graphics/mandelbulber/default.nix index 0a3368ec2ab..53d1c5c3f73 100644 --- a/pkgs/applications/graphics/mandelbulber/default.nix +++ b/pkgs/applications/graphics/mandelbulber/default.nix @@ -19,13 +19,13 @@ assert withOpenCL -> ocl-icd != null; mkDerivation rec { pname = "mandelbulber"; - version = "2.20"; + version = "2.21"; src = fetchFromGitHub { owner = "buddhi1980"; repo = "mandelbulber2"; rev = version; - sha256 = "043dks9fimhradyhdzqdc6lb9z0x9lkj3szj10751g424lppp207"; + sha256 = "1bmk71vbxc1n8cnizlmzfqlvgxjb95cydbzxlvq1s5givxr2jwli"; }; nativeBuildInputs = [ diff --git a/pkgs/applications/graphics/meh/default.nix b/pkgs/applications/graphics/meh/default.nix index 7ad8c388a20..0b2e5bc3777 100644 --- a/pkgs/applications/graphics/meh/default.nix +++ b/pkgs/applications/graphics/meh/default.nix @@ -20,7 +20,7 @@ stdenv.mkDerivation { meta = { description = "A minimal image viewer using raw XLib"; - homepage = https://www.johnhawthorn.com/meh/; + homepage = "https://www.johnhawthorn.com/meh/"; license = stdenv.lib.licenses.mit; platforms = stdenv.lib.platforms.linux; }; diff --git a/pkgs/applications/graphics/meshlab/default.nix b/pkgs/applications/graphics/meshlab/default.nix index 9733f1e2efa..6ac937dcb93 100644 --- a/pkgs/applications/graphics/meshlab/default.nix +++ b/pkgs/applications/graphics/meshlab/default.nix @@ -126,7 +126,7 @@ in mkDerivation { meta = { description = "A system for processing and editing 3D triangular meshes."; - homepage = http://www.meshlab.net/; + homepage = "http://www.meshlab.net/"; license = lib.licenses.gpl3; maintainers = with lib.maintainers; [viric]; platforms = with lib.platforms; linux; diff --git a/pkgs/applications/graphics/minidjvu/default.nix b/pkgs/applications/graphics/minidjvu/default.nix index d629c776194..2af79659ced 100644 --- a/pkgs/applications/graphics/minidjvu/default.nix +++ b/pkgs/applications/graphics/minidjvu/default.nix @@ -3,7 +3,7 @@ stdenv.mkDerivation { name = "minidjvu-0.8"; src = fetchurl { - url = mirror://sourceforge/minidjvu/minidjvu-0.8.tar.gz; + url = "mirror://sourceforge/minidjvu/minidjvu-0.8.tar.gz"; sha256 = "0jmpvy4g68k6xgplj9zsl6brg6vi81mx3nx2x9hfbr1f4zh95j79"; }; @@ -18,7 +18,7 @@ stdenv.mkDerivation { ''; meta = { - homepage = http://djvu.sourceforge.net/djview4.html; + homepage = "http://djvu.sourceforge.net/djview4.html"; description = "Black-and-white djvu page encoder and decoder that use interpage information"; license = stdenv.lib.licenses.gpl2Plus; maintainers = [ stdenv.lib.maintainers.viric ]; diff --git a/pkgs/applications/graphics/mozjpeg/default.nix b/pkgs/applications/graphics/mozjpeg/default.nix index 63cc4a3a8d3..e17664a018a 100644 --- a/pkgs/applications/graphics/mozjpeg/default.nix +++ b/pkgs/applications/graphics/mozjpeg/default.nix @@ -22,7 +22,7 @@ stdenv.mkDerivation rec { The idea is to reduce transfer times for JPEGs on the Web, thus reducing page load times. ''; - homepage = https://github.com/mozilla/mozjpeg ; + homepage = "https://github.com/mozilla/mozjpeg"; license = stdenv.lib.licenses.bsd3; maintainers = [ stdenv.lib.maintainers.aristid ]; platforms = stdenv.lib.platforms.all; diff --git a/pkgs/applications/graphics/mtpaint/default.nix b/pkgs/applications/graphics/mtpaint/default.nix index 7274bdacd9d..91278c9881f 100644 --- a/pkgs/applications/graphics/mtpaint/default.nix +++ b/pkgs/applications/graphics/mtpaint/default.nix @@ -32,7 +32,7 @@ stdenv.mkDerivation rec { Due to its simplicity and lack of dependencies it runs well on GNU/Linux, Windows and older PC hardware. ''; - homepage = http://mtpaint.sourceforge.net/; + homepage = "http://mtpaint.sourceforge.net/"; license = stdenv.lib.licenses.gpl3; platforms = stdenv.lib.platforms.linux; maintainers = [ stdenv.lib.maintainers.vklquevs ]; diff --git a/pkgs/applications/graphics/mypaint/default.nix b/pkgs/applications/graphics/mypaint/default.nix index 1acaf4850eb..5ebbee0e4d6 100644 --- a/pkgs/applications/graphics/mypaint/default.nix +++ b/pkgs/applications/graphics/mypaint/default.nix @@ -7,59 +7,81 @@ , libpng , librsvg , gobject-introspection +, libmypaint +, mypaint-brushes , gdk-pixbuf , pkgconfig -, python2 -, scons +, python3 , swig , wrapGAppsHook }: let - inherit (python2.pkgs) pycairo pygobject3 numpy; -in stdenv.mkDerivation { + inherit (python3.pkgs) pycairo pygobject3 numpy buildPythonApplication; +in buildPythonApplication rec { pname = "mypaint"; - version = "1.2.1"; + version = "2.0.0"; src = fetchFromGitHub { owner = "mypaint"; repo = "mypaint"; - rev = "bcf5a28d38bbd586cc9d4cee223f849fa303864f"; - sha256 = "1zwx7n629vz1jcrqjqmw6vl6sxdf81fq6a5jzqiga8167gg8s9pf"; + rev = "v${version}"; + sha256 = "180kyilhf81ndhwl1hlvy82gh6hxpcvka2d1nkghbpgy431rls6r"; fetchSubmodules = true; }; nativeBuildInputs = [ intltool pkgconfig - scons swig wrapGAppsHook gobject-introspection # for setup hook ]; - buildInputs = [ gtk3 gdk-pixbuf + libmypaint + mypaint-brushes json_c lcms2 libpng librsvg pycairo pygobject3 - python2 ]; propagatedBuildInputs = [ numpy + pycairo + pygobject3 ]; - postInstall = '' - sed -i -e 's|/usr/bin/env python2.7|${python2}/bin/python|' $out/bin/mypaint + checkInputs = [ + gtk3 + ]; + + buildPhase = '' + runHook preBuild + + ${python3.interpreter} setup.py build + + runHook postBuild ''; - preFixup = '' - gappsWrapperArgs+=(--prefix PYTHONPATH : $PYTHONPATH) + installPhase = '' + runHook preInstall + + ${python3.interpreter} setup.py managed_install --prefix=$out + + runHook postInstall + ''; + + checkPhase = '' + runHook preCheck + + HOME=$TEMPDIR ${python3.interpreter} setup.py test + + runHook postCheck ''; meta = with stdenv.lib; { diff --git a/pkgs/applications/graphics/nomacs/default.nix b/pkgs/applications/graphics/nomacs/default.nix index 48a79e8844e..f0d9329bc5a 100644 --- a/pkgs/applications/graphics/nomacs/default.nix +++ b/pkgs/applications/graphics/nomacs/default.nix @@ -63,11 +63,11 @@ mkDerivation rec { "-DUSE_SYSTEM_QUAZIP=ON"]; meta = with stdenv.lib; { - homepage = https://nomacs.org; + homepage = "https://nomacs.org"; description = "Qt-based image viewer"; maintainers = [maintainers.ahmedtd]; license = licenses.gpl3Plus; - repositories.git = https://github.com/nomacs/nomacs.git; + repositories.git = "https://github.com/nomacs/nomacs.git"; inherit (qtbase.meta) platforms; }; } diff --git a/pkgs/applications/graphics/openimageio/2.x.nix b/pkgs/applications/graphics/openimageio/2.x.nix index bbd2f0b5929..89d49a15145 100644 --- a/pkgs/applications/graphics/openimageio/2.x.nix +++ b/pkgs/applications/graphics/openimageio/2.x.nix @@ -1,5 +1,6 @@ { stdenv , fetchFromGitHub +, fetchpatch , boost , cmake , ilmbase @@ -14,15 +15,22 @@ stdenv.mkDerivation rec { pname = "openimageio"; - version = "2.0.12"; + version = "2.1.9.0"; src = fetchFromGitHub { owner = "OpenImageIO"; repo = "oiio"; rev = "Release-${version}"; - sha256 = "0v3k33jb0glb30jdhq3c732a9dxvnidaclz6b2wpqwik8l3658mj"; + sha256 = "1bbxx3bcc5jlb90ffxbk29gb8227097rdr8vg97vj9axw2mjd5si"; }; + patches = [ + (fetchpatch { + url = "https://github.com/OpenImageIO/oiio/pull/2441/commits/e9bdd69596103edf41b659ad8ab0ca4ce002f6f5.patch"; + sha256 = "0x1wmjf1jrm19d1izhs1cs3y1if9al1zx48lahkfswyjag3r5dn0"; + }) + ]; + outputs = [ "bin" "out" "dev" "doc" ]; nativeBuildInputs = [ @@ -49,7 +57,7 @@ stdenv.mkDerivation rec { ]; meta = with stdenv.lib; { - homepage = http://www.openimageio.org; + homepage = "http://www.openimageio.org"; description = "A library and tools for reading and writing images"; license = licenses.bsd3; maintainers = with maintainers; [ goibhniu jtojnar ]; diff --git a/pkgs/applications/graphics/openimageio/default.nix b/pkgs/applications/graphics/openimageio/default.nix index 7225efadebd..1f2861e7109 100644 --- a/pkgs/applications/graphics/openimageio/default.nix +++ b/pkgs/applications/graphics/openimageio/default.nix @@ -4,13 +4,13 @@ stdenv.mkDerivation rec { pname = "openimageio"; - version = "1.8.16"; + version = "1.8.17"; src = fetchFromGitHub { owner = "OpenImageIO"; repo = "oiio"; rev = "Release-${version}"; - sha256 = "0isx137c6anvs1xfxi0z35v1cw855xvnq2ca0pakqqpdh0yivrps"; + sha256 = "0zq34szprgkrrayg5sl3whrsx2l6lr8nw4hdrnwv2qhn70jbi2w2"; }; outputs = [ "bin" "out" "dev" "doc" ]; @@ -34,11 +34,10 @@ stdenv.mkDerivation rec { ]; meta = with stdenv.lib; { - homepage = http://www.openimageio.org; + homepage = "http://www.openimageio.org"; description = "A library and tools for reading and writing images"; license = licenses.bsd3; maintainers = [ maintainers.goibhniu ]; platforms = platforms.unix; - badPlatforms = [ "x86_64-darwin" ]; }; } diff --git a/pkgs/applications/graphics/openscad/default.nix b/pkgs/applications/graphics/openscad/default.nix index 2c95f6d403f..95af658ddd3 100644 --- a/pkgs/applications/graphics/openscad/default.nix +++ b/pkgs/applications/graphics/openscad/default.nix @@ -77,7 +77,7 @@ mkDerivation rec { machine parts but pretty sure is not what you are looking for when you are more interested in creating computer-animated movies. ''; - homepage = http://openscad.org/; + homepage = "http://openscad.org/"; license = stdenv.lib.licenses.gpl2; platforms = stdenv.lib.platforms.unix; maintainers = with stdenv.lib.maintainers; diff --git a/pkgs/applications/graphics/panotools/default.nix b/pkgs/applications/graphics/panotools/default.nix index 719aca5096a..c03bdd8331b 100644 --- a/pkgs/applications/graphics/panotools/default.nix +++ b/pkgs/applications/graphics/panotools/default.nix @@ -14,7 +14,7 @@ stdenv.mkDerivation rec { #doCheck = true; meta = { - homepage = http://panotools.sourceforge.net/; + homepage = "http://panotools.sourceforge.net/"; description = "Free software suite for authoring and displaying virtual reality panoramas"; license = stdenv.lib.licenses.gpl2Plus; diff --git a/pkgs/applications/graphics/paraview/default.nix b/pkgs/applications/graphics/paraview/default.nix index 1a47a355749..15d70d14308 100644 --- a/pkgs/applications/graphics/paraview/default.nix +++ b/pkgs/applications/graphics/paraview/default.nix @@ -1,9 +1,5 @@ -{ -stdenv, fetchFromGitHub, cmake, makeWrapper -,qtbase, qttools, python, libGLU, libGL -,libXt, qtx11extras, qtxmlpatterns -, mkDerivation -}: +{ stdenv, fetchFromGitHub, cmake, makeWrapper, qtbase , qttools, python +, libGLU, libGL , libXt, qtx11extras, qtxmlpatterns , mkDerivation }: mkDerivation rec { pname = "paraview"; @@ -30,7 +26,7 @@ mkDerivation rec { # libraries. These reside in build/lib, and are not found by # default. preBuild = '' - export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PWD/lib:$PWD/VTK/ThirdParty/vtkm/vtk-m/lib + export LD_LIBRARY_PATH=$LD_LIBRARY_PATH''${LD_LIBRARY_PATH:+:}$PWD/lib:$PWD/VTK/ThirdParty/vtkm/vtk-m/lib ''; enableParallelBuilding = true; @@ -53,20 +49,20 @@ mkDerivation rec { # Paraview links into the Python library, resolving symbolic links on the way, # so we need to put the correct sitePackages (with numpy) back on the path - postInstall = '' - wrapProgram $out/bin/paraview \ - --set PYTHONPATH "${python.pkgs.numpy}/${python.sitePackages}" - wrapProgram $out/bin/pvbatch \ - --set PYTHONPATH "${python.pkgs.numpy}/${python.sitePackages}" - wrapProgram $out/bin/pvpython \ - --set PYTHONPATH "${python.pkgs.numpy}/${python.sitePackages}" + preFixup = '' + wrapQtApp $out/bin/paraview \ + --prefix PYTHONPATH "${python.pkgs.numpy}/${python.sitePackages}" + wrapQtApp $out/bin/pvbatch \ + --prefix PYTHONPATH "${python.pkgs.numpy}/${python.sitePackages}" + wrapQtApp $out/bin/pvpython \ + --prefix PYTHONPATH "${python.pkgs.numpy}/${python.sitePackages}" ''; - meta = { - homepage = http://www.paraview.org/; + meta = with stdenv.lib; { + homepage = "http://www.paraview.org/"; description = "3D Data analysis and visualization application"; - license = stdenv.lib.licenses.free; - maintainers = with stdenv.lib.maintainers; [guibert]; - platforms = with stdenv.lib.platforms; linux; + license = licenses.free; + maintainers = with maintainers; [ guibert ]; + platforms = platforms.linux; }; } diff --git a/pkgs/applications/graphics/pbrt/default.nix b/pkgs/applications/graphics/pbrt/default.nix index 78f6d8bcbaf..fa3034cb3b0 100644 --- a/pkgs/applications/graphics/pbrt/default.nix +++ b/pkgs/applications/graphics/pbrt/default.nix @@ -21,7 +21,7 @@ stdenv.mkDerivation { buildInputs = [ git flex bison cmake zlib ]; meta = with stdenv.lib; { - homepage = http://pbrt.org; + homepage = "http://pbrt.org"; description = "The renderer described in the third edition of the book 'Physically Based Rendering: From Theory To Implementation'"; platforms = platforms.linux ; license = licenses.bsd2; diff --git a/pkgs/applications/graphics/pdfcpu/default.nix b/pkgs/applications/graphics/pdfcpu/default.nix index 3df2ab4ab40..b127be821c1 100644 --- a/pkgs/applications/graphics/pdfcpu/default.nix +++ b/pkgs/applications/graphics/pdfcpu/default.nix @@ -2,22 +2,22 @@ buildGoModule rec { pname = "pdfcpu"; - version = "0.3"; + version = "0.3.2"; src = fetchFromGitHub { owner = "pdfcpu"; repo = pname; rev = "v${version}"; - sha256 = "03v4wc531dwmbjqgs3y3ncdn6g3xirv1w6h1mfgglb6sjll8jxp5"; + sha256 = "0a7d36hzcvj68apzc726r2vqsjyrkcynxif5laarxapm6p67g3z4"; }; - modSha256 = "1nagb3k2ghfw27g4vcmn7v8s5flg387jpf1l18gw6c44a1xjcivs"; + modSha256 = "0ak34wr5cbcvblndslsxdd24vfj3h02xqjqnj5amkll5iqn5mzi1"; subPackages = [ "cmd/pdfcpu" ]; meta = with stdenv.lib; { description = "A PDF processor written in Go"; - homepage = https://pdfcpu.io; + homepage = "https://pdfcpu.io"; license = licenses.asl20; maintainers = with maintainers; [ doronbehar ]; platforms = platforms.all; diff --git a/pkgs/applications/graphics/pencil/default.nix b/pkgs/applications/graphics/pencil/default.nix index 37857fc459e..edd923822ea 100644 --- a/pkgs/applications/graphics/pencil/default.nix +++ b/pkgs/applications/graphics/pencil/default.nix @@ -1,32 +1,72 @@ -{ stdenv, fetchurl, lib, makeWrapper, +{ stdenv, fetchurl, lib, makeWrapper, wrapGAppsHook, # build dependencies - alsaLib, atk, cairo, cups, dbus, expat, fontconfig, - freetype, gdk-pixbuf, glib, gnome2, nspr, nss, xorg, - glibc, systemd + alsaLib, atk, at-spi2-atk, at-spi2-core, cairo, cups, dbus, expat, fontconfig, + freetype, gdk-pixbuf, glib, glibc, gtk3, libuuid, nspr, nss, pango, + xorg, systemd }: +let -stdenv.mkDerivation rec { - version = "3.0.4"; + deps = [ + alsaLib + atk + at-spi2-atk + at-spi2-core + cairo + cups + dbus + expat + fontconfig + freetype + gdk-pixbuf + glib + glibc + gtk3 + libuuid + nspr + nss + pango + xorg.libX11 + xorg.libxcb + xorg.libXScrnSaver + xorg.libXcomposite + xorg.libXcursor + xorg.libXdamage + xorg.libXext + xorg.libXfixes + xorg.libXi + xorg.libXrandr + xorg.libXrender + xorg.libXtst + stdenv.cc.cc.lib + stdenv.cc.cc + ]; + +in stdenv.mkDerivation rec { + version = "3.1.0"; pname = "pencil"; src = fetchurl { - url = "http://pencil.evolus.vn/dl/V${version}/Pencil_${version}_amd64.deb"; - sha256 = "58e2b794c615ea8715d8374f177e19c87f7071e359826ec34a59836d537a62fd"; + url = "http://pencil.evolus.vn/dl/V${version}.ga/pencil_${version}.ga_amd64.deb"; + sha256 = "01ae54b1a1351b909eb2366c6ec00816e1deba370e58f35601cf7368f10aaba3"; }; sourceRoot = "."; unpackCmd = '' - ar p "$src" data.tar.xz | tar xJ + ar p "$src" data.tar.gz | tar xz ''; dontBuild = true; - nativeBuildInputs = [ makeWrapper ]; + nativeBuildInputs = [ makeWrapper wrapGAppsHook ]; + + buildInputs = deps; installPhase = '' - mkdir -p $out/bin - cp -R usr/share opt $out/ + mkdir -p $out/bin $out/opt $out/share/applications + cp -R usr/share $out/ + cp -R opt/pencil*/ $out/opt/pencil + cp $out/opt/pencil/pencil.desktop $out/share/applications/ # fix the path in the desktop file substituteInPlace \ @@ -34,42 +74,12 @@ stdenv.mkDerivation rec { --replace /opt/ $out/opt/ # symlink the binary to bin/ - ln -s $out/opt/Pencil/pencil $out/bin/pencil + ln -s $out/opt/pencil/pencil $out/bin/pencil ''; preFixup = let - packages = [ - alsaLib - atk - cairo - cups - dbus - expat - fontconfig - freetype - gdk-pixbuf - glib - gnome2.GConf - gnome2.gtk - gnome2.pango - nspr - nss - xorg.libX11 - xorg.libXScrnSaver - xorg.libXcomposite - xorg.libXcursor - xorg.libXdamage - xorg.libXext - xorg.libXfixes - xorg.libXi - xorg.libXrandr - xorg.libXrender - xorg.libXtst - stdenv.cc.cc.lib - stdenv.cc.cc - glibc - ]; + packages = deps; libPathNative = lib.makeLibraryPath packages; libPath64 = lib.makeSearchPathOutput "lib" "lib64" packages; libPath = "${libPathNative}:${libPath64}"; @@ -77,21 +87,13 @@ stdenv.mkDerivation rec { # patch executable patchelf \ --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ - --set-rpath "${libPath}:$out/opt/Pencil" \ - $out/opt/Pencil/pencil - - # patch libnode - patchelf \ - --set-rpath "${libPath}" \ - $out/opt/Pencil/libnode.so - - # libffmpeg is for some reason not executable - chmod a+x $out/opt/Pencil/libffmpeg.so + --set-rpath "${libPath}:$out/opt/pencil" \ + $out/opt/pencil/pencil # fix missing libudev - ln -s ${systemd.lib}/lib/libudev.so.1 $out/opt/Pencil/libudev.so.1 - wrapProgram $out/opt/Pencil/pencil \ - --prefix LD_LIBRARY_PATH : $out/opt/Pencil + ln -s ${systemd.lib}/lib/libudev.so.1 $out/opt/pencil/libudev.so.1 + wrapProgram $out/opt/pencil/pencil \ + --prefix LD_LIBRARY_PATH : $out/opt/pencil ''; meta = with stdenv.lib; { diff --git a/pkgs/applications/graphics/photoflow/default.nix b/pkgs/applications/graphics/photoflow/default.nix index 78d16e69226..9fec8b99c1b 100644 --- a/pkgs/applications/graphics/photoflow/default.nix +++ b/pkgs/applications/graphics/photoflow/default.nix @@ -47,7 +47,7 @@ stdenv.mkDerivation { meta = with stdenv.lib; { description = "A fully non-destructive photo retouching program providing a complete RAW image editing workflow"; - homepage = https://aferrero2707.github.io/PhotoFlow/; + homepage = "https://aferrero2707.github.io/PhotoFlow/"; license = licenses.gpl3Plus; maintainers = [ maintainers.MtP ]; platforms = platforms.linux; diff --git a/pkgs/applications/graphics/photoqt/default.nix b/pkgs/applications/graphics/photoqt/default.nix index 68afdd8694b..71c63bc82aa 100644 --- a/pkgs/applications/graphics/photoqt/default.nix +++ b/pkgs/applications/graphics/photoqt/default.nix @@ -1,9 +1,9 @@ -{ stdenv, fetchurl, cmake, exiv2, graphicsmagick, libraw, fetchpatch +{ mkDerivation, stdenv, fetchurl, cmake, exiv2, graphicsmagick, libraw, fetchpatch , qtbase, qtdeclarative, qtmultimedia, qtquickcontrols, qttools, qtgraphicaleffects , extra-cmake-modules, poppler, kimageformats, libarchive, libdevil }: -stdenv.mkDerivation rec { +mkDerivation rec { pname = "photoqt"; version = "1.7.1"; @@ -40,7 +40,7 @@ stdenv.mkDerivation rec { enableParallelBuilding = true; meta = { - homepage = https://photoqt.org/; + homepage = "https://photoqt.org/"; description = "Simple, yet powerful and good looking image viewer"; license = stdenv.lib.licenses.gpl2Plus; platforms = stdenv.lib.platforms.unix; diff --git a/pkgs/applications/graphics/phototonic/default.nix b/pkgs/applications/graphics/phototonic/default.nix index 5e7fb5cf7a0..1c6c1b43354 100644 --- a/pkgs/applications/graphics/phototonic/default.nix +++ b/pkgs/applications/graphics/phototonic/default.nix @@ -20,7 +20,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "An image viewer and organizer"; - homepage = https://sourceforge.net/projects/phototonic/; + homepage = "https://sourceforge.net/projects/phototonic/"; license = licenses.gpl3; platforms = platforms.linux; maintainers = with maintainers; [ pSub ]; diff --git a/pkgs/applications/graphics/pinta/default.nix b/pkgs/applications/graphics/pinta/default.nix index 14090376684..af51c78a169 100644 --- a/pkgs/applications/graphics/pinta/default.nix +++ b/pkgs/applications/graphics/pinta/default.nix @@ -74,7 +74,7 @@ buildDotnetPackage rec { ''; meta = { - homepage = http://www.pinta-project.com/; + homepage = "http://www.pinta-project.com/"; description = "Drawing/editing program modeled after Paint.NET"; license = stdenv.lib.licenses.mit; maintainers = with stdenv.lib.maintainers; [ ]; diff --git a/pkgs/applications/graphics/potrace/default.nix b/pkgs/applications/graphics/potrace/default.nix index 35ab27bcbf6..dd8e84349fa 100644 --- a/pkgs/applications/graphics/potrace/default.nix +++ b/pkgs/applications/graphics/potrace/default.nix @@ -17,7 +17,7 @@ stdenv.mkDerivation rec { doCheck = true; meta = with stdenv.lib; { - homepage = http://potrace.sourceforge.net/; + homepage = "http://potrace.sourceforge.net/"; description = "A tool for tracing a bitmap, which means, transforming a bitmap into a smooth, scalable image"; platforms = platforms.unix; maintainers = [ maintainers.pSub ]; diff --git a/pkgs/applications/graphics/pqiv/default.nix b/pkgs/applications/graphics/pqiv/default.nix index 1ad51e92d47..505f28a2451 100644 --- a/pkgs/applications/graphics/pqiv/default.nix +++ b/pkgs/applications/graphics/pqiv/default.nix @@ -20,9 +20,9 @@ stdenv.mkDerivation (rec { meta = with stdenv.lib; { description = "Powerful image viewer with minimal UI"; - homepage = http://www.pberndt.com/Programme/Linux/pqiv; + homepage = "http://www.pberndt.com/Programme/Linux/pqiv"; license = licenses.gpl3; - maintainers = [ maintainers.ndowens ]; + maintainers = []; platforms = platforms.linux; }; }) diff --git a/pkgs/applications/graphics/processing/default.nix b/pkgs/applications/graphics/processing/default.nix index 9972ea75709..cad6a35ce3f 100644 --- a/pkgs/applications/graphics/processing/default.nix +++ b/pkgs/applications/graphics/processing/default.nix @@ -22,7 +22,7 @@ stdenv.mkDerivation rec { # do not download a file during build ${xmlstarlet}/bin/xmlstarlet ed --inplace -P -d '//get[@src="http://download.processing.org/reference.zip"]' build/build.xml install -D -m0444 ${fetchurl { - url = http://download.processing.org/reference.zip; + url = "http://download.processing.org/reference.zip"; sha256 = "198bpk8mzns6w5h0zdf50wr6iv7sgdi6v7jznj5rbsnpgyilxz35"; } } ./java/reference.zip @@ -56,7 +56,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "A language and IDE for electronic arts"; - homepage = https://processing.org; + homepage = "https://processing.org"; license = licenses.gpl2Plus; platforms = platforms.linux; }; diff --git a/pkgs/applications/graphics/qcomicbook/default.nix b/pkgs/applications/graphics/qcomicbook/default.nix index 4d416a7c106..4f7e5b931f4 100644 --- a/pkgs/applications/graphics/qcomicbook/default.nix +++ b/pkgs/applications/graphics/qcomicbook/default.nix @@ -25,7 +25,7 @@ stdenv.mkDerivation rec { ''; meta = with stdenv.lib; { - homepage = https://github.com/stolowski/QComicBook; + homepage = "https://github.com/stolowski/QComicBook"; description = "Comic book reader in Qt5"; license = licenses.gpl2; diff --git a/pkgs/applications/graphics/qimgv/default.nix b/pkgs/applications/graphics/qimgv/default.nix new file mode 100644 index 00000000000..2756d659edf --- /dev/null +++ b/pkgs/applications/graphics/qimgv/default.nix @@ -0,0 +1,57 @@ +{ mkDerivation +, lib +, fetchFromGitHub + +, cmake +, pkgconfig + +, exiv2 +, mpv +, qtbase +, qtimageformats +, qtsvg +}: + +mkDerivation rec { + pname = "qimgv"; + version = "0.8.9"; + + src = fetchFromGitHub { + owner = "easymodo"; + repo = pname; + rev = "v${version}"; + sha256 = "0cmya06j466v0pirhxbzbj1vbz0346y7rbc1gbv4n9xcp6c6bln6"; + }; + + nativeBuildInputs = [ + cmake + pkgconfig + ]; + + buildInputs = [ + exiv2 + mpv + qtbase + qtimageformats + qtsvg + ]; + + postPatch = '' + sed -i "s@/usr/bin/mpv@${mpv}/bin/mpv@" \ + qimgv/settings.cpp + ''; + + # Wrap the library path so it can see `libqimgv_player_mpv.so`, which is used + # to play video files within qimgv itself. + qtWrapperArgs = [ + "--prefix LD_LIBRARY_PATH : ${placeholder "out"}/lib" + ]; + + meta = with lib; { + description = "A Qt5 image viewer with optional video support"; + homepage = "https://github.com/easymodo/qimgv"; + license = licenses.gpl3; + platforms = platforms.linux; + maintainers = with maintainers; [ cole-h ]; + }; +} diff --git a/pkgs/applications/graphics/qiv/default.nix b/pkgs/applications/graphics/qiv/default.nix index 750217d9918..d3dd917d7b7 100644 --- a/pkgs/applications/graphics/qiv/default.nix +++ b/pkgs/applications/graphics/qiv/default.nix @@ -20,7 +20,7 @@ stdenv.mkDerivation (rec { meta = with stdenv.lib; { description = "Quick image viewer"; - homepage = http://spiegl.de/qiv/; + homepage = "http://spiegl.de/qiv/"; inherit version; license = licenses.gpl2; platforms = platforms.linux; diff --git a/pkgs/applications/graphics/qscreenshot/default.nix b/pkgs/applications/graphics/qscreenshot/default.nix index fafc76a76ff..1653ea92720 100644 --- a/pkgs/applications/graphics/qscreenshot/default.nix +++ b/pkgs/applications/graphics/qscreenshot/default.nix @@ -19,7 +19,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Simple creation and editing of screenshots"; - homepage = https://sourceforge.net/projects/qscreenshot/; + homepage = "https://sourceforge.net/projects/qscreenshot/"; license = licenses.gpl2; platforms = platforms.all; maintainers = [ maintainers.bjornfor ]; diff --git a/pkgs/applications/graphics/qview/default.nix b/pkgs/applications/graphics/qview/default.nix index 0595ab2963c..b6f25795665 100644 --- a/pkgs/applications/graphics/qview/default.nix +++ b/pkgs/applications/graphics/qview/default.nix @@ -1,18 +1,27 @@ -{stdenv, fetchFromGitHub, qmake}: -stdenv.mkDerivation rec { +{ mkDerivation, lib, fetchFromGitHub, qmake, qtbase }: + +mkDerivation rec { pname = "qview"; - version = "2.0"; + version = "3.0"; + src = fetchFromGitHub { owner = "jurplel"; repo = "qView"; rev = version; - sha256 = "1s29hz44rb5dwzq8d4i4bfg77dr0v3ywpvidpa6xzg7hnnv3mhi5"; + sha256 = "15a91bs3wcqhgf76wzigbn10hayg628j84pq4j2vaxar94ak0vk7"; }; + nativeBuildInputs = [ qmake ]; + + buildInputs = [ + qtbase + ]; + patchPhase = '' sed "s|/usr/|$out/|g" -i qView.pro ''; - meta = with stdenv.lib; { + + meta = with lib; { description = "Practical and minimal image viewer"; homepage = "https://interversehq.com/qview/"; license = licenses.gpl3; diff --git a/pkgs/applications/graphics/rapid-photo-downloader/default.nix b/pkgs/applications/graphics/rapid-photo-downloader/default.nix index 2e12e18a5a5..aa6db0accdb 100644 --- a/pkgs/applications/graphics/rapid-photo-downloader/default.nix +++ b/pkgs/applications/graphics/rapid-photo-downloader/default.nix @@ -6,11 +6,11 @@ mkDerivationWith python3Packages.buildPythonApplication rec { pname = "rapid-photo-downloader"; - version = "0.9.17"; + version = "0.9.18"; src = fetchurl { url = "https://launchpad.net/rapid/pyqt/${version}/+download/${pname}-${version}.tar.gz"; - sha256 = "10vqbi9rcg8r0jxpx2kn8xmahwgdcal28wpix2fg6nkp5rfwxnr6"; + sha256 = "15p7sssg6vmqbm5xnc4j5dr89d7gl7y5qyq44a240yl5aqkjnybw"; }; # Disable version check and fix install tests @@ -80,7 +80,7 @@ mkDerivationWith python3Packages.buildPythonApplication rec { meta = with stdenv.lib; { description = "Photo and video importer for cameras, phones, and memory cards"; - homepage = http://www.damonlynch.net/rapid/; + homepage = "https://www.damonlynch.net/rapid/"; license = licenses.gpl3; platforms = platforms.linux; maintainers = with maintainers; [ jfrankenau ]; diff --git a/pkgs/applications/graphics/rawtherapee/default.nix b/pkgs/applications/graphics/rawtherapee/default.nix index bda16446524..812c26f56e5 100644 --- a/pkgs/applications/graphics/rawtherapee/default.nix +++ b/pkgs/applications/graphics/rawtherapee/default.nix @@ -4,14 +4,14 @@ }: stdenv.mkDerivation rec { - version = "5.7"; + version = "5.8"; pname = "rawtherapee"; src = fetchFromGitHub { owner = "Beep6581"; repo = "RawTherapee"; rev = version; - sha256 = "0j3887a3683fqpvp66kaw6x81ai3gf5nvrbmb4cc8rb0lgj2xv2g"; + sha256 = "0d644s4grfia6f3k6y0byd5pwajr12kai2kc280yxi8v3w1b12ik"; }; nativeBuildInputs = [ cmake pkgconfig wrapGAppsHook ]; @@ -36,7 +36,7 @@ stdenv.mkDerivation rec { meta = { description = "RAW converter and digital photo processing software"; - homepage = http://www.rawtherapee.com/; + homepage = "http://www.rawtherapee.com/"; license = stdenv.lib.licenses.gpl3Plus; maintainers = with stdenv.lib.maintainers; [ jcumming mahe the-kenny ]; platforms = with stdenv.lib.platforms; linux; diff --git a/pkgs/applications/graphics/renderdoc/default.nix b/pkgs/applications/graphics/renderdoc/default.nix index 426985d312c..bf0b92b6f6d 100644 --- a/pkgs/applications/graphics/renderdoc/default.nix +++ b/pkgs/applications/graphics/renderdoc/default.nix @@ -1,6 +1,6 @@ { stdenv, fetchFromGitHub, cmake, pkgconfig, mkDerivation , qtbase, qtx11extras, qtsvg, makeWrapper -, vulkan-loader, xorg, python3, python3Packages +, vulkan-loader, libglvnd, xorg, python3, python3Packages , bison, pcre, automake, autoconf, addOpenGLRunpath }: let @@ -13,14 +13,14 @@ let pythonPackages = python3Packages; in mkDerivation rec { - version = "1.5"; + version = "1.7"; pname = "renderdoc"; src = fetchFromGitHub { owner = "baldurk"; repo = "renderdoc"; rev = "v${version}"; - sha256 = "0a05f6qfq90wrf4fixchp9knx4nhqhwjxl02n03a7k56xzxxnlci"; + sha256 = "0r0y0lx48hkyf39pgippsc9q8hdcf57bdva6gx7f35vlhicx5hlz"; }; buildInputs = [ @@ -52,8 +52,8 @@ mkDerivation rec { dontWrapQtApps = true; preFixup = '' - wrapQtApp $out/bin/qrenderdoc --suffix LD_LIBRARY_PATH : "$out/lib:${vulkan-loader}/lib" - wrapProgram $out/bin/renderdoccmd --suffix LD_LIBRARY_PATH : "$out/lib:${vulkan-loader}/lib" + wrapQtApp $out/bin/qrenderdoc --suffix LD_LIBRARY_PATH : "$out/lib:${vulkan-loader}/lib:${libglvnd}/lib" + wrapProgram $out/bin/renderdoccmd --suffix LD_LIBRARY_PATH : "$out/lib:${vulkan-loader}/lib:${libglvnd}/lib" ''; # The only documentation for this so far is in pkgs/build-support/add-opengl-runpath/setup-hook.sh @@ -65,7 +65,7 @@ mkDerivation rec { meta = with stdenv.lib; { description = "A single-frame graphics debugger"; - homepage = https://renderdoc.org/; + homepage = "https://renderdoc.org/"; license = licenses.mit; longDescription = '' RenderDoc is a free MIT licensed stand-alone graphics debugger that diff --git a/pkgs/applications/graphics/runwayml/default.nix b/pkgs/applications/graphics/runwayml/default.nix index c527ce2b229..eb8ecc34b8f 100644 --- a/pkgs/applications/graphics/runwayml/default.nix +++ b/pkgs/applications/graphics/runwayml/default.nix @@ -6,12 +6,12 @@ let pname = "runwayml"; - version = "0.9.0"; + version = "0.10.20"; name = "${pname}-${version}"; src = fetchurl { url = "https://runway-releases.s3.amazonaws.com/Runway%20${version}.AppImage"; - sha256 = "0rg7ipp7kx0l4qgcymfg5d3saz0c6d2j0c6rf28rwqgbm92gbjjq"; + sha256 = "1wi94xi8nrwfc4v2j1crlmwr0nxg95ffp5h4hxd84crvya8ibxgz"; name="${pname}-${version}.AppImage"; }; @@ -37,7 +37,7 @@ in meta = with lib; { description = "Machine learning for creators"; - homepage = https://runwayml.com/; + homepage = "https://runwayml.com/"; license = licenses.unfree; maintainers = with maintainers; [ prusnak ]; platforms = [ "x86_64-linux" ]; diff --git a/pkgs/applications/graphics/rx/default.nix b/pkgs/applications/graphics/rx/default.nix index 4e8519d17b6..53e8109fef5 100644 --- a/pkgs/applications/graphics/rx/default.nix +++ b/pkgs/applications/graphics/rx/default.nix @@ -1,58 +1,45 @@ { stdenv, rustPlatform, fetchFromGitHub, makeWrapper -, cmake, pkgconfig +, cmake, pkg-config , xorg ? null -, vulkan-loader ? null }: +, libGL ? null }: -assert stdenv.isLinux -> xorg != null; -assert stdenv.isLinux -> vulkan-loader != null; +with stdenv.lib; -let - graphicsBackend = if stdenv.isDarwin then "metal" else "vulkan"; -in - with stdenv.lib; - rustPlatform.buildRustPackage rec { - pname = "rx"; - version = "0.2.0"; +rustPlatform.buildRustPackage rec { + pname = "rx"; + version = "0.4.0"; - src = fetchFromGitHub { - owner = "cloudhead"; - repo = pname; - rev = "v${version}"; - sha256 = "0f6cw8zqr45bprj8ibhp89bb2a077g4zinfrdn943csdmh47qzcl"; - }; + src = fetchFromGitHub { + owner = "cloudhead"; + repo = pname; + rev = "v${version}"; + sha256 = "1pln65pqy39ijrld11d06klwzfhhzmrgdaxijpx9q7w9z66zmqb8"; + }; - cargoSha256 = "05bqsw0nw24xysq86qa3hx9b5ncf50wfxsgpy388yrs2dfnphwlx"; + cargoSha256 = "143a5x61s7ywk0ljqd10jkfvs6lrhlibkm2a9lw41wq13mgzb78j"; - nativeBuildInputs = [ cmake pkgconfig makeWrapper ]; + nativeBuildInputs = [ cmake pkg-config makeWrapper ]; - buildInputs = optionals stdenv.isLinux - (with xorg; [ - # glfw-sys dependencies: - libX11 libXrandr libXinerama libXcursor libXi libXext - ]); + buildInputs = optionals stdenv.isLinux + (with xorg; [ + # glfw-sys dependencies: + libX11 libXrandr libXinerama libXcursor libXi libXext + ]); - cargoBuildFlags = [ "--features=${graphicsBackend}" ]; + # FIXME: GLFW (X11) requires DISPLAY env variable for all tests + doCheck = false; - # TODO: better to factor that into the rust platform - checkPhase = '' - runHook preCheck - echo "Running cargo test" - cargo test --features=${graphicsBackend} - runHook postCheck - ''; + postInstall = optional stdenv.isLinux '' + mkdir -p $out/share/applications + cp $src/rx.desktop $out/share/applications + wrapProgram $out/bin/rx --prefix LD_LIBRARY_PATH : ${libGL}/lib + ''; - postInstall = optional stdenv.isLinux '' - mkdir -p $out/share/applications - cp $src/rx.desktop $out/share/applications - wrapProgram $out/bin/rx --prefix LD_LIBRARY_PATH : ${vulkan-loader}/lib - ''; - - meta = { - description = "Modern and extensible pixel editor implemented in Rust"; - homepage = "https://cloudhead.io/rx/"; - license = licenses.gpl3; - maintainers = with maintainers; [ minijackson ]; - platforms = with platforms; (linux ++ darwin ++ windows); - inherit version; - }; - } + meta = { + description = "Modern and extensible pixel editor implemented in Rust"; + homepage = "https://rx.cloudhead.io/"; + license = licenses.gpl3; + maintainers = with maintainers; [ minijackson filalex77 ]; + platforms = [ "x86_64-linux" ]; + }; +} diff --git a/pkgs/applications/graphics/sane/backends/airscan/default.nix b/pkgs/applications/graphics/sane/backends/airscan/default.nix new file mode 100644 index 00000000000..11529eee210 --- /dev/null +++ b/pkgs/applications/graphics/sane/backends/airscan/default.nix @@ -0,0 +1,27 @@ +{ lib, stdenv, fetchFromGitHub, pkg-config, avahi, libsoup, libjpeg +, sane-backends, meson, ninja }: +stdenv.mkDerivation rec { + pname = "sane-airscan"; + version = "0.9.17"; + + nativeBuildInputs = [ meson ninja pkg-config ]; + buildInputs = [ avahi libsoup libjpeg sane-backends ]; + + src = fetchFromGitHub { + owner = "alexpevzner"; + repo = pname; + rev = version; + sha256 = "03y0c1z5s3wbvxa9nvji62w42cmvcgm2sw72j7wm831995q3abmx"; + }; + + meta = with lib; { + homepage = "https://github.com/alexpevzner/sane-airscan"; + description = "Scanner Access Now Easy - Apple AirScan (eSCL) driver"; + longDescription = '' + sane-airscan: Linux support of Apple AirScan (eSCL) compatible document scanners. + ''; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = with maintainers; [ zaninime ]; + }; +} diff --git a/pkgs/applications/graphics/sane/backends/brscan4/default.nix b/pkgs/applications/graphics/sane/backends/brscan4/default.nix index b431cf51b01..22e8a2ca536 100644 --- a/pkgs/applications/graphics/sane/backends/brscan4/default.nix +++ b/pkgs/applications/graphics/sane/backends/brscan4/default.nix @@ -10,17 +10,17 @@ let udevRules = callPackage ./udev_rules_type1.nix {}; in stdenv.mkDerivation rec { - name = "brscan4-0.4.4-4"; + name = "brscan4-0.4.8-1"; src = if stdenv.hostPlatform.system == "i686-linux" then fetchurl { url = "http://download.brother.com/welcome/dlf006646/${name}.i386.deb"; - sha256 = "13mhjbzf9nvpdzrc2s98684r7likg76zxs1wlz2h8w59fsqgx4k2"; + sha256 = "15hrf1gpm36lniqi6yf47dvdqjinm644xb752c6rcv8n06wb79ag"; } else if stdenv.hostPlatform.system == "x86_64-linux" then fetchurl { url = "https://download.brother.com/welcome/dlf006645/${name}.amd64.deb"; - sha256 = "0xy5px96y1saq9l80vwvfn6anr2q42qlxdhm6ci2a0diwib5q9fd"; + sha256 = "0pyprjl0capg403yp6pp07gd6msx9kn7bzjcdswdbn28fyxrk5l4"; } else throw "${name} is not supported on ${stdenv.hostPlatform.system} (only i686-linux and x86_64 linux are supported)"; @@ -86,7 +86,7 @@ in stdenv.mkDerivation rec { meta = { description = "Brother brscan4 sane backend driver"; - homepage = http://www.brother.com; + homepage = "http://www.brother.com"; platforms = stdenv.lib.platforms.linux; license = stdenv.lib.licenses.unfree; maintainers = with stdenv.lib.maintainers; [ jraygauthier ]; diff --git a/pkgs/applications/graphics/sane/backends/brscan4/udev_rules_type1.nix b/pkgs/applications/graphics/sane/backends/brscan4/udev_rules_type1.nix index da136a7f9e1..682e401c069 100644 --- a/pkgs/applications/graphics/sane/backends/brscan4/udev_rules_type1.nix +++ b/pkgs/applications/graphics/sane/backends/brscan4/udev_rules_type1.nix @@ -47,7 +47,7 @@ stdenv.mkDerivation rec { meta = { description = "Brother type1 scanners udev rules"; - homepage = http://www.brother.com; + homepage = "http://www.brother.com"; platforms = stdenv.lib.platforms.linux; license = stdenv.lib.licenses.unfree; maintainers = with stdenv.lib.maintainers; [ jraygauthier ]; diff --git a/pkgs/applications/graphics/sane/backends/default.nix b/pkgs/applications/graphics/sane/backends/default.nix index 4245acf716d..6aba42d33e6 100644 --- a/pkgs/applications/graphics/sane/backends/default.nix +++ b/pkgs/applications/graphics/sane/backends/default.nix @@ -1,11 +1,10 @@ { callPackage, fetchurl, ... } @ args: callPackage ./generic.nix (args // rec { - version = "1.0.27"; + version = "1.0.28"; + src = fetchurl { - sha256 = "1j9nbqspaj0rlgalafb5z6r606k0i22kz0rcpd744p176yzlfdr9"; - urls = [ - "https://alioth-archive.debian.org/releases/sane/sane-backends/${version}/sane-backends-${version}.tar.gz" - ]; + url = "https://gitlab.com/sane-project/backends/uploads/9e718daff347826f4cfe21126c8d5091/sane-backends-${version}.tar.gz"; + sha256 = "00yy8q9hqdf0zjxxl4d8njr9zf0hhi3a9ib23ikc2anqf8zhy9ii"; }; }) diff --git a/pkgs/applications/graphics/sane/backends/dsseries/default.nix b/pkgs/applications/graphics/sane/backends/dsseries/default.nix index d4165be3784..37ac0298706 100644 --- a/pkgs/applications/graphics/sane/backends/dsseries/default.nix +++ b/pkgs/applications/graphics/sane/backends/dsseries/default.nix @@ -45,7 +45,7 @@ stdenv.mkDerivation rec { meta = { description = "Brother DSSeries SANE backend driver"; - homepage = http://www.brother.com; + homepage = "http://www.brother.com"; platforms = stdenv.lib.platforms.linux; license = stdenv.lib.licenses.unfree; maintainers = with stdenv.lib.maintainers; [ callahad ]; diff --git a/pkgs/applications/graphics/sane/backends/generic.nix b/pkgs/applications/graphics/sane/backends/generic.nix index 92cec3ca82c..d3e8b417017 100644 --- a/pkgs/applications/graphics/sane/backends/generic.nix +++ b/pkgs/applications/graphics/sane/backends/generic.nix @@ -1,6 +1,6 @@ { stdenv -, avahi, libjpeg, libusb1, libv4l, net_snmp, libpng , gettext, pkgconfig +, avahi, libgphoto2, libieee1284, libjpeg, libpng, libtiff, libusb1, libv4l, net-snmp # List of { src name backend } attibute sets - see installFirmware below: , extraFirmware ? [] @@ -19,14 +19,29 @@ stdenv.mkDerivation { outputs = [ "out" "doc" "man" ]; + nativeBuildInputs = [ + gettext + pkgconfig + ]; + + buildInputs = [ + avahi + libgphoto2 + libieee1284 + libjpeg + libpng + libtiff + libusb1 + libv4l + net-snmp + ]; + + enableParallelBuilding = true; + configureFlags = [] ++ stdenv.lib.optional (avahi != null) "--enable-avahi" - ++ stdenv.lib.optional (libusb1 != null) "--enable-libusb_1_0" - ; - - buildInputs = [ avahi libusb1 libv4l net_snmp libpng ]; - nativeBuildInputs = [ gettext pkgconfig ]; - enableParallelBuilding = true; + ++ stdenv.lib.optional (libusb1 != null) "--with-usb" + ; postInstall = let @@ -71,7 +86,7 @@ stdenv.mkDerivation { video- and still-cameras, frame-grabbers, etc. For a list of supported scanners, see http://www.sane-project.org/sane-backends.html. ''; - homepage = http://www.sane-project.org/; + homepage = "http://www.sane-project.org/"; license = licenses.gpl2Plus; maintainers = with maintainers; [ peti ]; diff --git a/pkgs/applications/graphics/sane/config.nix b/pkgs/applications/graphics/sane/config.nix index c0a0206ddd1..2ef1e26f5ac 100644 --- a/pkgs/applications/graphics/sane/config.nix +++ b/pkgs/applications/graphics/sane/config.nix @@ -6,7 +6,7 @@ with stdenv.lib; let installSanePath = path: '' if [ -e "${path}/lib/sane" ]; then find "${path}/lib/sane" -maxdepth 1 -not -type d | while read backend; do - ln -s "$backend" "$out/lib/sane/$(basename "$backend")" + symlink "$backend" "$out/lib/sane/$(basename "$backend")" done fi @@ -16,14 +16,14 @@ let installSanePath = path: '' if [ "$name" = "dll.conf" ] || [ "$name" = "saned.conf" ] || [ "$name" = "net.conf" ]; then cat "$conf" >> "$out/etc/sane.d/$name" else - ln -s "$conf" "$out/etc/sane.d/$name" + symlink "$conf" "$out/etc/sane.d/$name" fi done fi if [ -e "${path}/etc/sane.d/dll.d" ]; then find "${path}/etc/sane.d/dll.d" -maxdepth 1 -not -type d | while read conf; do - ln -s "$conf" "$out/etc/sane.d/dll.d/$(basename $conf)" + symlink "$conf" "$out/etc/sane.d/dll.d/$(basename $conf)" done fi ''; @@ -33,6 +33,14 @@ stdenv.mkDerivation { phases = "installPhase"; installPhase = '' + function symlink () { + local target=$1 linkname=$2 + if [ -e "$linkname" ]; then + echo "warning: conflict for $linkname. Overriding $(readlink $linkname) with $target." + fi + ln -sfn "$target" "$linkname" + } + mkdir -p $out/etc/sane.d $out/etc/sane.d/dll.d $out/lib/sane '' + concatMapStrings installSanePath paths; } diff --git a/pkgs/applications/graphics/sane/frontends.nix b/pkgs/applications/graphics/sane/frontends.nix index b00f8f6c58d..188431bda6c 100644 --- a/pkgs/applications/graphics/sane/frontends.nix +++ b/pkgs/applications/graphics/sane/frontends.nix @@ -21,7 +21,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Scanner Access Now Easy"; - homepage = http://www.sane-project.org/; + homepage = "http://www.sane-project.org/"; license = licenses.gpl2Plus; maintainers = with maintainers; [ peti ]; platforms = platforms.linux; diff --git a/pkgs/applications/graphics/sane/xsane.nix b/pkgs/applications/graphics/sane/xsane.nix index 09b431fdb11..22a8f4dc3bd 100644 --- a/pkgs/applications/graphics/sane/xsane.nix +++ b/pkgs/applications/graphics/sane/xsane.nix @@ -24,7 +24,7 @@ stdenv.mkDerivation rec { ++ stdenv.lib.optional gimpSupport gimp; meta = { - homepage = http://www.sane-project.org/; + homepage = "http://www.sane-project.org/"; description = "Graphical scanning frontend for sane"; license = stdenv.lib.licenses.gpl2Plus; maintainers = with stdenv.lib.maintainers; [peti]; diff --git a/pkgs/applications/graphics/scantailor/advanced.nix b/pkgs/applications/graphics/scantailor/advanced.nix index 63f16f688ac..e4598193469 100644 --- a/pkgs/applications/graphics/scantailor/advanced.nix +++ b/pkgs/applications/graphics/scantailor/advanced.nix @@ -1,8 +1,8 @@ -{ stdenv, fetchFromGitHub +{ stdenv, fetchFromGitHub, mkDerivation , cmake, libjpeg, libpng, libtiff, boost , qtbase, qttools }: -stdenv.mkDerivation rec { +mkDerivation rec { pname = "scantailor-advanced"; version = "1.0.16"; @@ -17,7 +17,7 @@ stdenv.mkDerivation rec { buildInputs = [ libjpeg libpng libtiff boost qtbase ]; meta = with stdenv.lib; { - homepage = https://github.com/4lex4/scantailor-advanced; + homepage = "https://github.com/4lex4/scantailor-advanced"; description = "Interactive post-processing tool for scanned pages"; license = licenses.gpl3Plus; maintainers = with maintainers; [ jfrankenau ]; diff --git a/pkgs/applications/graphics/scantailor/default.nix b/pkgs/applications/graphics/scantailor/default.nix index 14efe48f30d..bc54f3aa627 100644 --- a/pkgs/applications/graphics/scantailor/default.nix +++ b/pkgs/applications/graphics/scantailor/default.nix @@ -13,7 +13,7 @@ stdenv.mkDerivation { enableParallelBuilding = true; meta = { - homepage = http://scantailor.org/; + homepage = "http://scantailor.org/"; description = "Interactive post-processing tool for scanned pages"; license = stdenv.lib.licenses.gpl3Plus; diff --git a/pkgs/applications/graphics/screencloud/default.nix b/pkgs/applications/graphics/screencloud/default.nix index 88bbbd9d864..11e37c4bf64 100644 --- a/pkgs/applications/graphics/screencloud/default.nix +++ b/pkgs/applications/graphics/screencloud/default.nix @@ -68,7 +68,7 @@ stdenv.mkDerivation rec { ''; meta = { - homepage = https://screencloud.net/; + homepage = "https://screencloud.net/"; description = "Client for Screencloud, an easy to use screenshot sharing tool"; license = stdenv.lib.licenses.gpl2; maintainers = with stdenv.lib.maintainers; [ forkk ]; diff --git a/pkgs/applications/graphics/shotwell/default.nix b/pkgs/applications/graphics/shotwell/default.nix index 79bc743fbf0..b03d0a01dd6 100644 --- a/pkgs/applications/graphics/shotwell/default.nix +++ b/pkgs/applications/graphics/shotwell/default.nix @@ -39,11 +39,11 @@ stdenv.mkDerivation rec { pname = "shotwell"; - version = "0.31.0"; + version = "0.31.1"; src = fetchurl { url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; - sha256 = "1pwq953wl7h9cvw7rvlr6pcbq9w28kkr7ddb8x2si81ngp0imwyx"; + sha256 = "0mbgrad4d4snffw2z3rkhwqq1bkxdgy52pblx99vjadvpgspb034"; }; nativeBuildInputs = [ @@ -100,7 +100,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Popular photo organizer for the GNOME desktop"; - homepage = https://wiki.gnome.org/Apps/Shotwell; + homepage = "https://wiki.gnome.org/Apps/Shotwell"; license = licenses.lgpl21Plus; maintainers = with maintainers; [domenkozar]; platforms = platforms.linux; diff --git a/pkgs/applications/graphics/shutter/default.nix b/pkgs/applications/graphics/shutter/default.nix index 957692b4ba1..cddc99eebe2 100644 --- a/pkgs/applications/graphics/shutter/default.nix +++ b/pkgs/applications/graphics/shutter/default.nix @@ -38,7 +38,7 @@ stdenv.mkDerivation { meta = with stdenv.lib; { description = "Screenshot and annotation tool"; - homepage = http://shutter-project.org/; + homepage = "https://shutter-project.org/"; license = licenses.gpl3Plus; platforms = platforms.all; maintainers = [ maintainers.bjornfor ]; diff --git a/pkgs/applications/graphics/smartdeblur/default.nix b/pkgs/applications/graphics/smartdeblur/default.nix index 377a5ae6168..0df161cd473 100644 --- a/pkgs/applications/graphics/smartdeblur/default.nix +++ b/pkgs/applications/graphics/smartdeblur/default.nix @@ -20,10 +20,10 @@ stdenv.mkDerivation rec { buildInputs = [ cmake qt4 fftw ]; - cmakeFlags = "-DUSE_SYSTEM_FFTW=ON"; + cmakeFlags = [ "-DUSE_SYSTEM_FFTW=ON" ]; meta = { - homepage = https://github.com/Y-Vladimir/SmartDeblur; + homepage = "https://github.com/Y-Vladimir/SmartDeblur"; description = "Tool for restoring blurry and defocused images"; license = stdenv.lib.licenses.gpl3; maintainers = with stdenv.lib.maintainers; [ ]; diff --git a/pkgs/applications/graphics/solvespace/default.nix b/pkgs/applications/graphics/solvespace/default.nix index 7046caad295..bd084b4287d 100644 --- a/pkgs/applications/graphics/solvespace/default.nix +++ b/pkgs/applications/graphics/solvespace/default.nix @@ -6,7 +6,7 @@ stdenv.mkDerivation rec { name = "solvespace-2.3-20190501"; rev = "e7b75f19c34c923780db776592b47152650d8f22"; src = fetchgit { - url = https://github.com/solvespace/solvespace; + url = "https://github.com/solvespace/solvespace"; inherit rev; sha256 = "07k4mbzxf0dmzwdhjx5nc09y7rn1schkaypsw9kz0l7ppylprpp2"; fetchSubmodules = true; @@ -46,6 +46,6 @@ stdenv.mkDerivation rec { license = licenses.gpl3; maintainers = [ maintainers.edef ]; platforms = platforms.linux; - homepage = http://solvespace.com; + homepage = "http://solvespace.com"; }; } diff --git a/pkgs/applications/graphics/swingsane/default.nix b/pkgs/applications/graphics/swingsane/default.nix index f56646e5aed..fc9132ec0b4 100644 --- a/pkgs/applications/graphics/swingsane/default.nix +++ b/pkgs/applications/graphics/swingsane/default.nix @@ -54,7 +54,7 @@ stdenv.mkDerivation rec { simultaneous scan jobs, image transformation jobs (deskew, binarize, crop, etc), PDF and PNG output. ''; - homepage = http://swingsane.com/; + homepage = "http://swingsane.com/"; license = licenses.asl20; platforms = platforms.all; }; diff --git a/pkgs/applications/graphics/sxiv/default.nix b/pkgs/applications/graphics/sxiv/default.nix index 99c151f8c80..4cf0ae55578 100644 --- a/pkgs/applications/graphics/sxiv/default.nix +++ b/pkgs/applications/graphics/sxiv/default.nix @@ -4,33 +4,29 @@ with stdenv.lib; stdenv.mkDerivation rec { pname = "sxiv"; - version = "25"; + version = "26"; src = fetchFromGitHub { owner = "muennich"; repo = pname; rev = "v${version}"; - sha256 = "13s1lfar142hq1j7xld0ri616p4bqs57b17yr4d0b9a9w7liz4hp"; + sha256 = "0xaawlfdy7b277m38mgg4423kd7p1ffn0dq4hciqs6ivbb3q9c4f"; }; - postUnpack = '' - substituteInPlace $sourceRoot/Makefile \ - --replace /usr/local $out - ''; - configFile = optionalString (conf!=null) (builtins.toFile "config.def.h" conf); preBuild = optionalString (conf!=null) "cp ${configFile} config.def.h"; buildInputs = [ libXft imlib2 giflib libexif ]; + makeFlags = [ "PREFIX=${placeholder "out"}" ]; + postInstall = '' - mkdir -p $out/share/applications/ - cp -v sxiv.desktop $out/share/applications/ + install -Dt $out/share/applications sxiv.desktop ''; meta = { description = "Simple X Image Viewer"; - homepage = https://github.com/muennich/sxiv; + homepage = "https://github.com/muennich/sxiv"; license = stdenv.lib.licenses.gpl2Plus; platforms = stdenv.lib.platforms.linux; maintainers = with maintainers; [ jfrankenau ]; diff --git a/pkgs/applications/graphics/synfigstudio/default.nix b/pkgs/applications/graphics/synfigstudio/default.nix index 188f7cb2934..e2ffd160258 100644 --- a/pkgs/applications/graphics/synfigstudio/default.nix +++ b/pkgs/applications/graphics/synfigstudio/default.nix @@ -119,7 +119,7 @@ stdenv.mkDerivation { meta = with stdenv.lib; { description = "A 2D animation program"; - homepage = http://www.synfig.org; + homepage = "http://www.synfig.org"; license = licenses.gpl2Plus; maintainers = [ maintainers.goibhniu ]; platforms = platforms.linux; diff --git a/pkgs/applications/graphics/tesseract/tesseract3.nix b/pkgs/applications/graphics/tesseract/tesseract3.nix index 157c0b9742b..dc9d4ac2d59 100644 --- a/pkgs/applications/graphics/tesseract/tesseract3.nix +++ b/pkgs/applications/graphics/tesseract/tesseract3.nix @@ -21,7 +21,7 @@ stdenv.mkDerivation rec { meta = { description = "OCR engine"; - homepage = https://github.com/tesseract-ocr/tesseract; + homepage = "https://github.com/tesseract-ocr/tesseract"; license = stdenv.lib.licenses.asl20; maintainers = with stdenv.lib.maintainers; [ viric earvstedt ]; platforms = with stdenv.lib.platforms; linux ++ darwin; diff --git a/pkgs/applications/graphics/tesseract/tesseract4.nix b/pkgs/applications/graphics/tesseract/tesseract4.nix index 548f58a50fb..d7c3cacc1f9 100644 --- a/pkgs/applications/graphics/tesseract/tesseract4.nix +++ b/pkgs/applications/graphics/tesseract/tesseract4.nix @@ -3,13 +3,13 @@ stdenv.mkDerivation rec { pname = "tesseract"; - version = "4.1.0"; + version = "4.1.1"; src = fetchFromGitHub { owner = "tesseract-ocr"; repo = "tesseract"; rev = version; - sha256 = "06i7abxy2ifmdx1fak81cx0kns85n8hvp0339jk6242fhshibljx"; + sha256 = "1ca27zbjpx35nxh9fha410z3jskwyj06i5hqiqdc08s2d7kdivwn"; }; enableParallelBuilding = true; @@ -19,7 +19,7 @@ stdenv.mkDerivation rec { meta = { description = "OCR engine"; - homepage = https://github.com/tesseract-ocr/tesseract; + homepage = "https://github.com/tesseract-ocr/tesseract"; license = stdenv.lib.licenses.asl20; maintainers = with stdenv.lib.maintainers; [ viric earvstedt ]; platforms = with stdenv.lib.platforms; linux ++ darwin; diff --git a/pkgs/applications/graphics/tev/default.nix b/pkgs/applications/graphics/tev/default.nix index 47da0b749df..f6ad16d7f90 100644 --- a/pkgs/applications/graphics/tev/default.nix +++ b/pkgs/applications/graphics/tev/default.nix @@ -1,22 +1,22 @@ { stdenv, fetchFromGitHub , cmake, wrapGAppsHook -, libX11, xorg, libzip, glfw, gnome3 +, libX11, libzip, glfw, libpng, xorg, gnome3 }: stdenv.mkDerivation rec { pname = "tev"; - version = "1.13"; + version = "1.15"; src = fetchFromGitHub { owner = "Tom94"; repo = pname; rev = "v${version}"; fetchSubmodules = true; - sha256 = "0c8md6yv1q449aszs05xfby6a2aiw8pac7x0zs169i5mpqrrbfa9"; + sha256 = "173nxvj30xmbdj8fc3rbw0mlicxy6zbhxv01i7z5nmcdvpamkdx6"; }; nativeBuildInputs = [ cmake wrapGAppsHook ]; - buildInputs = [ libX11 libzip glfw ] + buildInputs = [ libX11 libzip glfw libpng ] ++ (with xorg; [ libXrandr libXinerama libXcursor libXi libXxf86vm ]); dontWrapGApps = true; # We also need zenity (see below) @@ -46,6 +46,7 @@ stdenv.mkDerivation rec { types of images can also be loaded. ''; inherit (src.meta) homepage; + changelog = "https://github.com/Tom94/tev/releases/tag/v${version}"; license = licenses.bsd3; platforms = platforms.unix; maintainers = with maintainers; [ primeos ]; diff --git a/pkgs/applications/graphics/timelapse-deflicker/default.nix b/pkgs/applications/graphics/timelapse-deflicker/default.nix index 8355545e8dd..ac382bb6327 100644 --- a/pkgs/applications/graphics/timelapse-deflicker/default.nix +++ b/pkgs/applications/graphics/timelapse-deflicker/default.nix @@ -24,7 +24,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Simple script to deflicker images taken for timelapses"; - homepage = https://github.com/cyberang3l/timelapse-deflicker; + homepage = "https://github.com/cyberang3l/timelapse-deflicker"; license = licenses.gpl3; maintainers = with maintainers; [ valeriangalliat ]; platforms = platforms.unix; diff --git a/pkgs/applications/graphics/ufraw/default.nix b/pkgs/applications/graphics/ufraw/default.nix index 131d83f0d58..9e05a41e848 100644 --- a/pkgs/applications/graphics/ufraw/default.nix +++ b/pkgs/applications/graphics/ufraw/default.nix @@ -64,7 +64,7 @@ stdenv.mkDerivation { ''; meta = with stdenv.lib; { - homepage = https://github.com/sergiomb2/ufraw; + homepage = "https://github.com/sergiomb2/ufraw"; description = "Utility to read and manipulate raw images from digital cameras"; diff --git a/pkgs/applications/graphics/unigine-valley/default.nix b/pkgs/applications/graphics/unigine-valley/default.nix index 09abfc60a52..14ff5f9a519 100644 --- a/pkgs/applications/graphics/unigine-valley/default.nix +++ b/pkgs/applications/graphics/unigine-valley/default.nix @@ -107,7 +107,7 @@ in meta = { description = "The Unigine Valley GPU benchmarking tool"; - homepage = http://unigine.com/products/benchmarks/valley/; + homepage = "http://unigine.com/products/benchmarks/valley/"; license = stdenv.lib.licenses.unfree; # see also: $out/$instPath/documentation/License.pdf maintainers = [ stdenv.lib.maintainers.kierdavis ]; platforms = ["x86_64-linux" "i686-linux"]; diff --git a/pkgs/applications/graphics/viewnior/default.nix b/pkgs/applications/graphics/viewnior/default.nix index a80e89e72bc..41463a7627a 100644 --- a/pkgs/applications/graphics/viewnior/default.nix +++ b/pkgs/applications/graphics/viewnior/default.nix @@ -30,7 +30,7 @@ stdenv.mkDerivation rec { license = stdenv.lib.licenses.gpl3; - homepage = http://siyanpanayotov.com/project/viewnior/; + homepage = "http://siyanpanayotov.com/project/viewnior/"; maintainers = [ stdenv.lib.maintainers.smironov ]; diff --git a/pkgs/applications/graphics/vimiv/default.nix b/pkgs/applications/graphics/vimiv/default.nix index fab85052df3..b5e9d0b8cf2 100644 --- a/pkgs/applications/graphics/vimiv/default.nix +++ b/pkgs/applications/graphics/vimiv/default.nix @@ -64,7 +64,7 @@ python3Packages.buildPythonApplication rec { postInstall = "make DESTDIR=\"$out\" install"; meta = { - homepage = https://github.com/karlch/vimiv; + homepage = "https://github.com/karlch/vimiv"; description = "An image viewer with Vim-like keybindings"; license = lib.licenses.mit; platforms = lib.platforms.linux; diff --git a/pkgs/applications/graphics/wings/default.nix b/pkgs/applications/graphics/wings/default.nix index 8d6eca7ef32..19c30f3ecc4 100644 --- a/pkgs/applications/graphics/wings/default.nix +++ b/pkgs/applications/graphics/wings/default.nix @@ -36,7 +36,7 @@ stdenv.mkDerivation rec { ''; meta = { - homepage = http://www.wings3d.com/; + homepage = "http://www.wings3d.com/"; description = "Subdivision modeler inspired by Nendo and Mirai from Izware"; license = stdenv.lib.licenses.tcltk; maintainers = with stdenv.lib.maintainers; [viric]; diff --git a/pkgs/applications/graphics/write_stylus/default.nix b/pkgs/applications/graphics/write_stylus/default.nix index 0f1020b0b07..b1bfbe3c4cf 100644 --- a/pkgs/applications/graphics/write_stylus/default.nix +++ b/pkgs/applications/graphics/write_stylus/default.nix @@ -54,7 +54,7 @@ stdenv.mkDerivation rec { ''; meta = with stdenv.lib; { - homepage = http://www.styluslabs.com/; + homepage = "http://www.styluslabs.com/"; description = "Write is a word processor for handwriting."; platforms = platforms.linux; license = stdenv.lib.licenses.unfree; diff --git a/pkgs/applications/graphics/xaos/default.nix b/pkgs/applications/graphics/xaos/default.nix index e80362c386b..767f3aa920b 100644 --- a/pkgs/applications/graphics/xaos/default.nix +++ b/pkgs/applications/graphics/xaos/default.nix @@ -23,7 +23,7 @@ stdenv.mkDerivation rec { ''; meta = { - homepage = http://xaos.sourceforge.net/; + homepage = "http://xaos.sourceforge.net/"; description = "Fractal viewer"; license = stdenv.lib.licenses.gpl2Plus; platforms = [ "x86_64-linux" ]; diff --git a/pkgs/applications/graphics/xara/default.nix b/pkgs/applications/graphics/xara/default.nix index 56388a8a255..5e3c252435c 100644 --- a/pkgs/applications/graphics/xara/default.nix +++ b/pkgs/applications/graphics/xara/default.nix @@ -5,7 +5,7 @@ stdenv.mkDerivation { name = "xaralx-0.7r1785"; src = fetchurl { - url = http://downloads2.xara.com/opensource/XaraLX-0.7r1785.tar.bz2; + url = "http://downloads2.xara.com/opensource/XaraLX-0.7r1785.tar.bz2"; sha256 = "05xbzq1i1vw2mdsv7zjqfpxfv3g1j0g5kks0gq6sh373xd6y8lyh"; }; diff --git a/pkgs/applications/graphics/xfractint/default.nix b/pkgs/applications/graphics/xfractint/default.nix index ae4765fc9e7..8d36e4630dc 100644 --- a/pkgs/applications/graphics/xfractint/default.nix +++ b/pkgs/applications/graphics/xfractint/default.nix @@ -24,6 +24,6 @@ stdenv.mkDerivation rec { license = stdenv.lib.licenses.unfree; maintainers = [stdenv.lib.maintainers.raskin]; platforms = stdenv.lib.platforms.linux; - homepage = https://www.fractint.net/; + homepage = "https://www.fractint.net/"; }; } diff --git a/pkgs/applications/graphics/xournal/default.nix b/pkgs/applications/graphics/xournal/default.nix index cd9d068b8ac..8a5d9c3597b 100644 --- a/pkgs/applications/graphics/xournal/default.nix +++ b/pkgs/applications/graphics/xournal/default.nix @@ -26,8 +26,8 @@ stdenv.mkDerivation rec { nativeBuildInputs = [ autoconf automake libtool pkgconfig ]; - NIX_LDFLAGS = [ "-lz" ] - ++ stdenv.lib.optionals (!isGdkQuartzBackend) [ "-lX11" ]; + NIX_LDFLAGS = "-lz" + + stdenv.lib.optionalString (!isGdkQuartzBackend) " -lX11"; desktopItem = makeDesktopItem { name = name; @@ -56,7 +56,7 @@ stdenv.mkDerivation rec { ''; meta = with stdenv.lib; { - homepage = http://xournal.sourceforge.net/; + homepage = "http://xournal.sourceforge.net/"; description = "Note-taking application (supposes stylus)"; maintainers = [ maintainers.guibert ]; license = licenses.gpl2; diff --git a/pkgs/applications/graphics/xournalpp/default.nix b/pkgs/applications/graphics/xournalpp/default.nix index 76f8e03fa13..65aa17e3b4e 100644 --- a/pkgs/applications/graphics/xournalpp/default.nix +++ b/pkgs/applications/graphics/xournalpp/default.nix @@ -1,5 +1,4 @@ { stdenv -, lib , fetchFromGitHub , cmake @@ -23,13 +22,13 @@ stdenv.mkDerivation rec { pname = "xournalpp"; - version = "1.0.16"; + version = "1.0.17"; src = fetchFromGitHub { owner = "xournalpp"; repo = pname; rev = version; - sha256 = "1bdmxxkcqpjvkckizmrz2839b4yspw4xv69bqkrrgkcyvxsr804w"; + sha256 = "0xw2mcgnm4sa9hrhfgp669lfypw97drxjmz5w8i5whaprpvmkxzw"; }; nativeBuildInputs = [ cmake gettext pkgconfig wrapGAppsHook ]; @@ -45,7 +44,9 @@ stdenv.mkDerivation rec { portaudio zlib ] - ++ lib.optional withLua lua; + ++ stdenv.lib.optional withLua lua; + + buildFlags = "translations"; hardeningDisable = [ "format" ]; @@ -53,9 +54,9 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Xournal++ is a handwriting Notetaking software with PDF annotation support"; - homepage = https://github.com/xournalpp/xournalpp; + homepage = "https://github.com/xournalpp/xournalpp"; license = licenses.gpl2; - maintainers = with maintainers; [ andrew-d ]; + maintainers = with maintainers; [ andrew-d sikmir ]; platforms = platforms.linux; }; } diff --git a/pkgs/applications/graphics/xzgv/default.nix b/pkgs/applications/graphics/xzgv/default.nix index de3f3a78988..67f43faf99a 100644 --- a/pkgs/applications/graphics/xzgv/default.nix +++ b/pkgs/applications/graphics/xzgv/default.nix @@ -19,7 +19,7 @@ stdenv.mkDerivation rec { mkdir -p $out/share/{app-install/desktop,applications,info,pixmaps} ''; meta = with stdenv.lib; { - homepage = https://sourceforge.net/projects/xzgv/; + homepage = "https://sourceforge.net/projects/xzgv/"; description = "Picture viewer for X with a thumbnail-based selector"; license = licenses.gpl2; maintainers = [ maintainers.womfoo ]; diff --git a/pkgs/applications/graphics/yeetgif/default.nix b/pkgs/applications/graphics/yeetgif/default.nix new file mode 100644 index 00000000000..157ef3753e0 --- /dev/null +++ b/pkgs/applications/graphics/yeetgif/default.nix @@ -0,0 +1,23 @@ +{ buildGoPackage, fetchFromGitHub, lib }: + +buildGoPackage rec { + pname = "yeetgif"; + version = "1.23.5"; + + goPackagePath = "github.com/sgreben/yeetgif"; + + src = fetchFromGitHub { + owner = "sgreben"; + repo = pname; + rev = version; + sha256 = "1yz4pps8g378lvmi92cnci6msjj7fprp9bxqmnsyn6lqw7s2wb47"; + }; + + meta = with lib; { + description = "gif effects CLI. single binary, no dependencies. linux, osx, windows. #1 workplace productivity booster. #yeetgif #eggplant #golang"; + homepage = "https://github.com/sgreben/yeetgif"; + license = with licenses; [ mit asl20 cc-by-nc-sa-40 ]; + maintainers = with maintainers; [ ajs124 ]; + platforms = platforms.all; + }; +} diff --git a/pkgs/applications/graphics/zgv/default.nix b/pkgs/applications/graphics/zgv/default.nix index 8ef705f7ef4..6cc59a7e60b 100644 --- a/pkgs/applications/graphics/zgv/default.nix +++ b/pkgs/applications/graphics/zgv/default.nix @@ -19,13 +19,13 @@ stdenv.mkDerivation rec { patches = [ (fetchpatch { - url = https://foss.aueb.gr/mirrors/linux/gentoo/media-gfx/zgv/files/zgv-5.9-libpng15.patch; + url = "https://foss.aueb.gr/mirrors/linux/gentoo/media-gfx/zgv/files/zgv-5.9-libpng15.patch"; sha256 = "1blw9n04c28bnwcmcn64si4f5zpg42s8yn345js88fyzi9zm19xw"; }) ./switch.patch ]; - patchFlags = "-p0"; + patchFlags = [ "-p0" ]; installPhase = '' mkdir -p $out/bin @@ -33,7 +33,7 @@ stdenv.mkDerivation rec { ''; meta = with stdenv.lib; { - homepage = http://www.svgalib.org/rus/zgv/; + homepage = "http://www.svgalib.org/rus/zgv/"; description = "Picture viewer with a thumbnail-based selector"; license = licenses.gpl2; maintainers = [ maintainers.vrthra ]; diff --git a/pkgs/applications/kde/default.nix b/pkgs/applications/kde/default.nix index 40e69f8c9bc..60df1f899de 100644 --- a/pkgs/applications/kde/default.nix +++ b/pkgs/applications/kde/default.nix @@ -78,6 +78,7 @@ let dolphin = callPackage ./dolphin.nix {}; dolphin-plugins = callPackage ./dolphin-plugins.nix {}; dragon = callPackage ./dragon.nix {}; + elisa = callPackage ./elisa.nix {}; eventviews = callPackage ./eventviews.nix {}; ffmpegthumbs = callPackage ./ffmpegthumbs.nix { }; filelight = callPackage ./filelight.nix {}; @@ -89,13 +90,12 @@ let kalarm = callPackage ./kalarm.nix {}; kalarmcal = callPackage ./kalarmcal.nix {}; kate = callPackage ./kate.nix {}; + kbreakout = callPackage ./kbreakout.nix {}; kcachegrind = callPackage ./kcachegrind.nix {}; kcalc = callPackage ./kcalc.nix {}; - kcalcore = callPackage ./kcalcore.nix {}; kcalutils = callPackage ./kcalutils.nix {}; kcharselect = callPackage ./kcharselect.nix {}; kcolorchooser = callPackage ./kcolorchooser.nix {}; - kcontacts = callPackage ./kcontacts.nix {}; kdav = callPackage ./kdav.nix {}; kdebugsettings = callPackage ./kdebugsettings.nix {}; kdegraphics-mobipocket = callPackage ./kdegraphics-mobipocket.nix {}; @@ -121,6 +121,7 @@ let kio-extras = callPackage ./kio-extras.nix {}; kldap = callPackage ./kldap.nix {}; kleopatra = callPackage ./kleopatra.nix {}; + kmahjongg = callPackage ./kmahjongg.nix {}; kmail = callPackage ./kmail.nix {}; kmail-account-wizard = callPackage ./kmail-account-wizard.nix {}; kmailtransport = callPackage ./kmailtransport.nix {}; @@ -146,6 +147,8 @@ let krdc = callPackage ./krdc.nix {}; krfb = callPackage ./krfb.nix {}; kruler = callPackage ./kruler.nix {}; + kspaceduel = callPackage ./kspaceduel.nix {}; + ksudoku = callPackage ./ksudoku.nix {}; ksystemlog = callPackage ./ksystemlog.nix {}; ktnef = callPackage ./ktnef.nix {}; ktouch = callPackage ./ktouch.nix {}; @@ -159,6 +162,7 @@ let libkgapi = callPackage ./libkgapi.nix {}; libkipi = callPackage ./libkipi.nix {}; libkleo = callPackage ./libkleo.nix {}; + libkmahjongg = callPackage ./libkmahjongg.nix {}; libkomparediff2 = callPackage ./libkomparediff2.nix {}; libksane = callPackage ./libksane.nix {}; libksieve = callPackage ./libksieve.nix {}; diff --git a/pkgs/applications/kde/elisa.nix b/pkgs/applications/kde/elisa.nix new file mode 100644 index 00000000000..a2bfa88f812 --- /dev/null +++ b/pkgs/applications/kde/elisa.nix @@ -0,0 +1,46 @@ +{ mkDerivation +, fetchFromGitHub +, lib +, extra-cmake-modules +, kdoctools +, qtmultimedia +, qtquickcontrols2 +, qtwebsockets +, kconfig +, kcmutils +, kcrash +, kdeclarative +, kfilemetadata +, kinit +, kirigami2 +, baloo +, vlc +}: + +mkDerivation rec { + name = "elisa"; + + buildInputs = [ vlc ]; + + nativeBuildInputs = [ extra-cmake-modules kdoctools ]; + + propagatedBuildInputs = [ + baloo + kcmutils + kconfig + kcrash + kdeclarative + kfilemetadata + kinit + kirigami2 + qtmultimedia + qtquickcontrols2 + qtwebsockets + ]; + + meta = with lib; { + description = "A simple media player for KDE"; + license = licenses.gpl3; + maintainers = with maintainers; [ peterhoeg ]; + }; +} diff --git a/pkgs/applications/kde/fetch.sh b/pkgs/applications/kde/fetch.sh index a335b0ef8e8..3f6dc9ef181 100644 --- a/pkgs/applications/kde/fetch.sh +++ b/pkgs/applications/kde/fetch.sh @@ -1 +1 @@ -WGET_ARGS=( https://download.kde.org/stable/applications/19.08.3/ ) +WGET_ARGS=( http://download.kde.org/stable/release-service/19.12.3/src ) diff --git a/pkgs/applications/kde/ffmpeg-path.patch b/pkgs/applications/kde/ffmpeg-path.patch new file mode 100644 index 00000000000..a0cef882f59 --- /dev/null +++ b/pkgs/applications/kde/ffmpeg-path.patch @@ -0,0 +1,25 @@ +diff --git a/src/kdenlivesettings.kcfg b/src/kdenlivesettings.kcfg +index 5edad5ae7..d35347a40 100644 +--- a/src/kdenlivesettings.kcfg ++++ b/src/kdenlivesettings.kcfg +@@ -403,17 +403,17 @@ + + + +- ++ @ffmpeg@/bin/ffmpeg + + + + +- ++ @ffmpeg@/bin/ffplay + + + + +- ++ @ffmpeg@/bin/ffprobe + + + diff --git a/pkgs/applications/kde/kbreakout.nix b/pkgs/applications/kde/kbreakout.nix new file mode 100644 index 00000000000..fbcddd46ca8 --- /dev/null +++ b/pkgs/applications/kde/kbreakout.nix @@ -0,0 +1,22 @@ +{ mkDerivation, lib +, extra-cmake-modules +, cmake +, kdbusaddons +, ki18n +, kconfigwidgets +, kcrash +, kxmlgui +, libkdegames +}: + +mkDerivation { + name = "kbreakout"; + meta.license = with lib.licenses; [ lgpl21 gpl3 ]; + outputs = [ "out" "dev" ]; + nativeBuildInputs = [ + cmake extra-cmake-modules + ]; + propagatedBuildInputs = [ + kdbusaddons ki18n kconfigwidgets kcrash kxmlgui libkdegames + ]; +} diff --git a/pkgs/applications/kde/kcalcore.nix b/pkgs/applications/kde/kcalcore.nix deleted file mode 100644 index 4ac9c9b925a..00000000000 --- a/pkgs/applications/kde/kcalcore.nix +++ /dev/null @@ -1,16 +0,0 @@ -{ - mkDerivation, lib, kdepimTeam, - extra-cmake-modules, kdoctools, - kdelibs4support, libical -}: - -mkDerivation { - name = "kcalcore"; - meta = { - license = with lib.licenses; [ gpl2 lgpl21 fdl12 ]; - maintainers = kdepimTeam; - }; - nativeBuildInputs = [ extra-cmake-modules kdoctools ]; - propagatedBuildInputs = [ kdelibs4support libical ]; - outputs = [ "out" "dev" ]; -} diff --git a/pkgs/applications/kde/kdenlive.nix b/pkgs/applications/kde/kdenlive.nix index b7c691e9594..95496f90e04 100644 --- a/pkgs/applications/kde/kdenlive.nix +++ b/pkgs/applications/kde/kdenlive.nix @@ -70,14 +70,24 @@ mkDerivation { kpurpose kdeclarative ]; - patches = [ ./mlt-path.patch ]; + # Both MLT and FFMpeg paths must be set or Kdenlive will complain that it + # doesn't find them. See: + # https://github.com/NixOS/nixpkgs/issues/83885 + patches = [ ./mlt-path.patch ./ffmpeg-path.patch ]; inherit mlt; + ffmpeg = ffmpeg-full; postPatch = # Module Qt5::Concurrent must be included in `find_package` before it is used. '' sed -i CMakeLists.txt -e '/find_package(Qt5 REQUIRED/ s|)| Concurrent)|' substituteAllInPlace src/kdenlivesettings.kcfg ''; + # Frei0r path needs to be set too or Kdenlive will complain. See: + # https://github.com/NixOS/nixpkgs/issues/83885 + # https://github.com/NixOS/nixpkgs/issues/29614#issuecomment-488849325 + qtWrapperArgs = [ + "--set FREI0R_PATH ${frei0r}/lib/frei0r-1" + ]; meta = { license = with lib.licenses; [ gpl2Plus ]; }; diff --git a/pkgs/applications/kde/kdepim-runtime/00-no-facebook.patch b/pkgs/applications/kde/kdepim-runtime/00-no-facebook.patch deleted file mode 100644 index 46722ff5fba..00000000000 --- a/pkgs/applications/kde/kdepim-runtime/00-no-facebook.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/resources/CMakeLists.txt b/resources/CMakeLists.txt -index 99f7dbf..03e953b 100644 ---- a/resources/CMakeLists.txt -+++ b/resources/CMakeLists.txt -@@ -45,7 +45,6 @@ add_subdirectory( imap ) - if (Libkolabxml_FOUND) - add_subdirectory( kolab ) - endif() --add_subdirectory( facebook ) - add_subdirectory( maildir ) - - add_subdirectory( openxchange ) diff --git a/pkgs/applications/kde/kdepim-runtime/default.nix b/pkgs/applications/kde/kdepim-runtime/default.nix index 6d7bd0daa96..65719514f96 100644 --- a/pkgs/applications/kde/kdepim-runtime/default.nix +++ b/pkgs/applications/kde/kdepim-runtime/default.nix @@ -14,7 +14,6 @@ mkDerivation { license = with lib.licenses; [ gpl2 lgpl21 fdl12 ]; maintainers = kdepimTeam; }; - patches = copyPathsToStore (lib.readPathsFromFile ./. ./series); nativeBuildInputs = [ extra-cmake-modules kdoctools shared-mime-info ]; buildInputs = [ akonadi akonadi-calendar akonadi-contacts akonadi-mime akonadi-notes @@ -22,6 +21,4 @@ mkDerivation { kmailtransport kmbox kmime knotifications knotifyconfig qtwebengine pimcommon libkgapi qtnetworkauth qtspeech qtxmlpatterns ]; - # Attempts to build some files before dependencies have been generated - enableParallelBuilding = false; } diff --git a/pkgs/applications/kde/kdepim-runtime/series b/pkgs/applications/kde/kdepim-runtime/series deleted file mode 100644 index cc3e104775f..00000000000 --- a/pkgs/applications/kde/kdepim-runtime/series +++ /dev/null @@ -1 +0,0 @@ -00-no-facebook.patch diff --git a/pkgs/applications/kde/keditbookmarks.nix b/pkgs/applications/kde/keditbookmarks.nix index 57741c03ad5..efe247df737 100644 --- a/pkgs/applications/kde/keditbookmarks.nix +++ b/pkgs/applications/kde/keditbookmarks.nix @@ -9,7 +9,7 @@ mkDerivation { nativeBuildInputs = [ extra-cmake-modules kdoctools ]; buildInputs = [ kio kparts kwindowsystem ]; meta = with lib; { - homepage = http://www.kde.org; + homepage = "http://www.kde.org"; license = with licenses; [ gpl2 lgpl21 fdl12 bsd3 ]; maintainers = with maintainers; [ peterhoeg ]; platforms = platforms.linux; diff --git a/pkgs/applications/kde/kipi-plugins.nix b/pkgs/applications/kde/kipi-plugins.nix index 5fb953acbd6..180d066a87c 100644 --- a/pkgs/applications/kde/kipi-plugins.nix +++ b/pkgs/applications/kde/kipi-plugins.nix @@ -17,7 +17,7 @@ mkDerivation { meta = { description = "Plugins for KDE-based image applications"; license = lib.licenses.gpl2; - homepage = https://cgit.kde.org/kipi-plugins.git; + homepage = "https://cgit.kde.org/kipi-plugins.git"; maintainers = with lib.maintainers; [ ttuegel ]; }; } diff --git a/pkgs/applications/kde/kitinerary.nix b/pkgs/applications/kde/kitinerary.nix index ce66de251dc..303ea6162ba 100644 --- a/pkgs/applications/kde/kitinerary.nix +++ b/pkgs/applications/kde/kitinerary.nix @@ -2,6 +2,7 @@ mkDerivation, lib, extra-cmake-modules , qtbase, qtdeclarative, ki18n, kmime, kpkpass , poppler, kcontacts, kcalendarcore +, shared-mime-info }: mkDerivation { @@ -10,7 +11,10 @@ mkDerivation { license = with lib.licenses; [ lgpl21 ]; maintainers = [ lib.maintainers.bkchr ]; }; - nativeBuildInputs = [ extra-cmake-modules ]; + nativeBuildInputs = [ + extra-cmake-modules + shared-mime-info # for update-mime-database + ]; buildInputs = [ qtbase qtdeclarative ki18n kmime kpkpass poppler kcontacts kcalendarcore diff --git a/pkgs/applications/kde/kmahjongg.nix b/pkgs/applications/kde/kmahjongg.nix new file mode 100644 index 00000000000..b51d0d147e2 --- /dev/null +++ b/pkgs/applications/kde/kmahjongg.nix @@ -0,0 +1,19 @@ +{ lib +, mkDerivation +, extra-cmake-modules +, kdoctools +, kdeclarative +, knewstuff +, libkdegames +, libkmahjongg +}: + +mkDerivation { + name = "kmahjongg"; + nativeBuildInputs = [ extra-cmake-modules kdoctools ]; + buildInputs = [ kdeclarative libkmahjongg knewstuff libkdegames ]; + meta = { + license = with lib.licenses; [ gpl2 ]; + maintainers = with lib.maintainers; [ genesis ]; + }; +} diff --git a/pkgs/applications/kde/konsole.nix b/pkgs/applications/kde/konsole.nix index 1be5b0b4a89..ed26dc08bb6 100644 --- a/pkgs/applications/kde/konsole.nix +++ b/pkgs/applications/kde/konsole.nix @@ -11,7 +11,7 @@ mkDerivation { name = "konsole"; meta = { license = with lib.licenses; [ gpl2 lgpl21 fdl12 ]; - maintainers = [ lib.maintainers.ttuegel ]; + maintainers = with lib.maintainers; [ ttuegel turion ]; }; nativeBuildInputs = [ extra-cmake-modules kdoctools ]; buildInputs = [ diff --git a/pkgs/applications/kde/kontact.nix b/pkgs/applications/kde/kontact.nix index bb44762e65c..978baa925e5 100644 --- a/pkgs/applications/kde/kontact.nix +++ b/pkgs/applications/kde/kontact.nix @@ -2,7 +2,7 @@ mkDerivation, lib, kdepimTeam, extra-cmake-modules, kdoctools, qtwebengine, - kcmutils, kcrash, kdbusaddons, kwindowsystem, + kcmutils, kcrash, kdbusaddons, kparts, kwindowsystem, akonadi, grantleetheme, kdepim-apps-libs, kontactinterface, kpimtextedit, mailcommon, libkdepim }: @@ -16,7 +16,7 @@ mkDerivation { nativeBuildInputs = [ extra-cmake-modules kdoctools ]; buildInputs = [ qtwebengine - kcmutils kcrash kdbusaddons kwindowsystem + kcmutils kcrash kdbusaddons kparts kwindowsystem akonadi grantleetheme kdepim-apps-libs kontactinterface kpimtextedit mailcommon libkdepim ]; diff --git a/pkgs/applications/kde/krdc.nix b/pkgs/applications/kde/krdc.nix index 89ac92bb474..2b0a1a5c514 100644 --- a/pkgs/applications/kde/krdc.nix +++ b/pkgs/applications/kde/krdc.nix @@ -17,7 +17,7 @@ mkDerivation { --prefix PATH : ${lib.makeBinPath [ freerdp ]} ''; meta = with lib; { - homepage = http://www.kde.org; + homepage = "http://www.kde.org"; license = with licenses; [ gpl2 lgpl21 fdl12 bsd3 ]; maintainers = with maintainers; [ peterhoeg ]; platforms = platforms.linux; diff --git a/pkgs/applications/kde/kspaceduel.nix b/pkgs/applications/kde/kspaceduel.nix new file mode 100644 index 00000000000..b18a3e7cf8f --- /dev/null +++ b/pkgs/applications/kde/kspaceduel.nix @@ -0,0 +1,22 @@ +{ mkDerivation, lib +, extra-cmake-modules +, cmake +, kdbusaddons +, ki18n +, kconfigwidgets +, kcrash +, kxmlgui +, libkdegames +}: + +mkDerivation { + name = "kspaceduel"; + meta.license = with lib.licenses; [ lgpl21 gpl3 ]; + outputs = [ "out" "dev" ]; + nativeBuildInputs = [ + cmake extra-cmake-modules + ]; + propagatedBuildInputs = [ + kdbusaddons ki18n kconfigwidgets kcrash kxmlgui libkdegames + ]; +} diff --git a/pkgs/applications/kde/ksudoku.nix b/pkgs/applications/kde/ksudoku.nix new file mode 100644 index 00000000000..3641c1b3332 --- /dev/null +++ b/pkgs/applications/kde/ksudoku.nix @@ -0,0 +1,18 @@ +{ lib +, mkDerivation +, extra-cmake-modules +, libGLU +, kdoctools +, kdeclarative +, libkdegames +}: + +mkDerivation { + name = "ksudoku"; + nativeBuildInputs = [ extra-cmake-modules kdoctools ]; + buildInputs = [ libGLU kdeclarative libkdegames ]; + meta = { + license = with lib.licenses; [ gpl2 ]; + maintainers = with lib.maintainers; [ genesis ]; + }; +} diff --git a/pkgs/applications/kde/libkmahjongg.nix b/pkgs/applications/kde/libkmahjongg.nix new file mode 100644 index 00000000000..4b7b8538290 --- /dev/null +++ b/pkgs/applications/kde/libkmahjongg.nix @@ -0,0 +1,18 @@ +{ + mkDerivation, lib, kdepimTeam, + extra-cmake-modules, kdoctools, + kcompletion, kconfig, kconfigwidgets, kcoreaddons, ki18n, + kwidgetsaddons +}: + +mkDerivation { + name = "libkmahjongg"; + meta = { + license = with lib.licenses; [ gpl2 ]; + maintainers = with lib.maintainers; [ genesis ]; + }; + nativeBuildInputs = [ extra-cmake-modules kdoctools ]; + buildInputs = [ kcompletion kconfig kconfigwidgets kcoreaddons ki18n + kwidgetsaddons ]; + outputs = [ "out" "dev" ]; +} diff --git a/pkgs/applications/kde/okular.nix b/pkgs/applications/kde/okular.nix index 377fbe3339a..f07df73a255 100644 --- a/pkgs/applications/kde/okular.nix +++ b/pkgs/applications/kde/okular.nix @@ -19,9 +19,9 @@ mkDerivation { qtdeclarative qtsvg threadweaver kcrash ] ++ lib.optional (!stdenv.isAarch64) chmlib; meta = with lib; { - homepage = http://www.kde.org; + homepage = "http://www.kde.org"; license = with licenses; [ gpl2 lgpl21 fdl12 bsd3 ]; - maintainers = with maintainers; [ ttuegel ]; + maintainers = with maintainers; [ ttuegel turion ]; platforms = lib.platforms.linux; }; } diff --git a/pkgs/applications/kde/print-manager.nix b/pkgs/applications/kde/print-manager.nix index f869f984e00..f0501ffadee 100644 --- a/pkgs/applications/kde/print-manager.nix +++ b/pkgs/applications/kde/print-manager.nix @@ -22,8 +22,5 @@ mkDerivation { outputs = [ "out" "dev" ]; # Fix build with cups deprecations etc. # See: https://github.com/NixOS/nixpkgs/issues/73334 - NIX_CFLAGS_COMPILE = [ - "-Wno-error=deprecated-declarations" - "-Wno-error=format-security" - ]; + NIX_CFLAGS_COMPILE = "-Wno-error=deprecated-declarations -Wno-error=format-security"; } diff --git a/pkgs/applications/kde/srcs.nix b/pkgs/applications/kde/srcs.nix index 8d199a291c4..dc6eb0f09e8 100644 --- a/pkgs/applications/kde/srcs.nix +++ b/pkgs/applications/kde/srcs.nix @@ -1,1741 +1,1734 @@ -# DO NOT EDIT! This file is generated automatically by fetch-kde-qt.sh +# DO NOT EDIT! This file is generated automatically. +# Command: ./maintainers/scripts/fetch-kde-qt.sh pkgs/applications/kde/fetch.sh { fetchurl, mirror }: { akonadi = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/akonadi-19.08.3.tar.xz"; - sha256 = "cfdfa4767b1bd420c7979cf5125cc56d3926181f8484dc39ecd84a9e0808ee6c"; - name = "akonadi-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/akonadi-19.12.3.tar.xz"; + sha256 = "e41714d81ecbb629aaa0b267e0c32a4b1d83c6a45cf3f37d52232003b4c0f325"; + name = "akonadi-19.12.3.tar.xz"; }; }; akonadi-calendar = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/akonadi-calendar-19.08.3.tar.xz"; - sha256 = "1ec66241551b0bd3e2cabd2df1547e3622b3c74e0ddaec535b5666141180a094"; - name = "akonadi-calendar-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/akonadi-calendar-19.12.3.tar.xz"; + sha256 = "c58d18153ef711a79962ba907e44338a0ddd62968e0a6c50486bba09a6e2a446"; + name = "akonadi-calendar-19.12.3.tar.xz"; }; }; akonadi-calendar-tools = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/akonadi-calendar-tools-19.08.3.tar.xz"; - sha256 = "539bef47c9586f1edb87cedf63cce140dab4f19b6a94fbe08b0cd4c083cf6ffc"; - name = "akonadi-calendar-tools-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/akonadi-calendar-tools-19.12.3.tar.xz"; + sha256 = "ad2c23cf188228dc697d39e2120b56ce445bbea3eb46721794cd6344aa7e94ba"; + name = "akonadi-calendar-tools-19.12.3.tar.xz"; }; }; akonadiconsole = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/akonadiconsole-19.08.3.tar.xz"; - sha256 = "37253a4b56afc34e52a05b58f63d1cdce221a11432c713f159b5c033a6018947"; - name = "akonadiconsole-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/akonadiconsole-19.12.3.tar.xz"; + sha256 = "0dedcccfcfd7e6ad9a5af0aa61ce05f26cbb625d8bf6b6d210ac6e3c5813487f"; + name = "akonadiconsole-19.12.3.tar.xz"; }; }; akonadi-contacts = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/akonadi-contacts-19.08.3.tar.xz"; - sha256 = "a95ff2621e198e2685b7cd591e39437e68b5670cd710ce06088bd16618d281df"; - name = "akonadi-contacts-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/akonadi-contacts-19.12.3.tar.xz"; + sha256 = "b0baed9edb8c05b6d9b8db84239cd83a334d8f1d14d4aa8027dc1139a543eadf"; + name = "akonadi-contacts-19.12.3.tar.xz"; }; }; akonadi-import-wizard = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/akonadi-import-wizard-19.08.3.tar.xz"; - sha256 = "1a11207826ecc59af73ca2dae1b6299a6cd9c71c093e634043295747ba8f6553"; - name = "akonadi-import-wizard-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/akonadi-import-wizard-19.12.3.tar.xz"; + sha256 = "2c1491e4f5994ed0d317a27cc717184a86f7d92c4b44f8bd056e147e80bee8c5"; + name = "akonadi-import-wizard-19.12.3.tar.xz"; }; }; akonadi-mime = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/akonadi-mime-19.08.3.tar.xz"; - sha256 = "e779a2b73b628702aec52b1d4345533f54f06624915b193766af3ef6a16d030f"; - name = "akonadi-mime-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/akonadi-mime-19.12.3.tar.xz"; + sha256 = "13bdf9a233a183d5aeee1be0991617fca6d73ffd35bc14ca0d18714149f04392"; + name = "akonadi-mime-19.12.3.tar.xz"; }; }; akonadi-notes = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/akonadi-notes-19.08.3.tar.xz"; - sha256 = "7c701d8a032161f9a58a55dd7e71a9a261fed8044ddc59d6d5f04bb742801b65"; - name = "akonadi-notes-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/akonadi-notes-19.12.3.tar.xz"; + sha256 = "a34c2420190925b985b0629d7d2d19be04443cfeeaf284229666338e039e56e2"; + name = "akonadi-notes-19.12.3.tar.xz"; }; }; akonadi-search = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/akonadi-search-19.08.3.tar.xz"; - sha256 = "3a04a82b7f13aad0a5c283931b347a951b8b4bf299bfc6f8cdbc5ba299d01f9b"; - name = "akonadi-search-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/akonadi-search-19.12.3.tar.xz"; + sha256 = "60072a36f6c817d009a8476bad2e80c4131b14358e03b4889a03aa42340ed041"; + name = "akonadi-search-19.12.3.tar.xz"; }; }; akregator = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/akregator-19.08.3.tar.xz"; - sha256 = "c3aab6ebba25eab8c76b113a900af33a90222257f957650d0bbc0c47d5cf4bc9"; - name = "akregator-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/akregator-19.12.3.tar.xz"; + sha256 = "63db0f6c75bffe9235122201445d151f4eaa7061d2a8df4eb924bca1a4600f68"; + name = "akregator-19.12.3.tar.xz"; }; }; analitza = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/analitza-19.08.3.tar.xz"; - sha256 = "9247172f3ffbc0fd3308b4b40f5d76eaa2a5012dc49525c3087caf5cdfc1513e"; - name = "analitza-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/analitza-19.12.3.tar.xz"; + sha256 = "47ca3acaf2d2f52e91cd2253742ab97d9b07abc3fef0d632bfc36d253dbf161b"; + name = "analitza-19.12.3.tar.xz"; }; }; ark = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/ark-19.08.3.tar.xz"; - sha256 = "bc1fcd84632c628a10e8536d56b65a7acbd4235ed0e034fec864b78bdc36f8f1"; - name = "ark-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/ark-19.12.3.tar.xz"; + sha256 = "78594029729c197fc90321850696f1bd189b40d8d7fbc9faf51ad6b2ab744a07"; + name = "ark-19.12.3.tar.xz"; }; }; artikulate = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/artikulate-19.08.3.tar.xz"; - sha256 = "99831d51bf8cb4032ba9af7c4ae0712f7b3668b7c51bce8f942808c1e5e42f85"; - name = "artikulate-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/artikulate-19.12.3.tar.xz"; + sha256 = "c27a5cb98a8e2975638fe74683a73f92c160ce133b133878844062dd99ffded6"; + name = "artikulate-19.12.3.tar.xz"; }; }; audiocd-kio = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/audiocd-kio-19.08.3.tar.xz"; - sha256 = "98d836def762b839b9636acc540158d5b4789a84d1bdb535ae139b10e9e144a4"; - name = "audiocd-kio-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/audiocd-kio-19.12.3.tar.xz"; + sha256 = "b920170ae816f29a61a6f6b25df68c9125a5d4d9fec225feee45e46317d64d42"; + name = "audiocd-kio-19.12.3.tar.xz"; }; }; baloo-widgets = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/baloo-widgets-19.08.3.tar.xz"; - sha256 = "edb9284b1a7d73b0c824390aa875593650880eb77c2680a2942c9fd65f436a2d"; - name = "baloo-widgets-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/baloo-widgets-19.12.3.tar.xz"; + sha256 = "236c0bb0bcb345f4ce5f07d591bded6221383bc7b190b42b96999893390cd8a5"; + name = "baloo-widgets-19.12.3.tar.xz"; }; }; blinken = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/blinken-19.08.3.tar.xz"; - sha256 = "620fe5ffb656f829a7ca72a2df40c19ff0562e3700f51bd66b7d8a6a486ed3c9"; - name = "blinken-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/blinken-19.12.3.tar.xz"; + sha256 = "06ef385ab73d99fa3f1925a6f2ef522f691d04cd594777f5d9fa52a5f2e45a94"; + name = "blinken-19.12.3.tar.xz"; }; }; bomber = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/bomber-19.08.3.tar.xz"; - sha256 = "3a0ef6ca5a05253b1554218a1dc699c5547a073da5cecdf75445e0f72b687fd3"; - name = "bomber-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/bomber-19.12.3.tar.xz"; + sha256 = "ea4926fe08c62ac5da28c3bb480a6986e51f7a77e3245d1dc1603c38617da4b0"; + name = "bomber-19.12.3.tar.xz"; }; }; bovo = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/bovo-19.08.3.tar.xz"; - sha256 = "2f950820ebdb52f1c81476b36b5ea07808fe8da154e7757a85ca8ac2c1b37735"; - name = "bovo-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/bovo-19.12.3.tar.xz"; + sha256 = "ac67aff75c1e8e0d1a1a8142ae94431e4f39565f411287f57c2778f8820316af"; + name = "bovo-19.12.3.tar.xz"; }; }; calendarsupport = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/calendarsupport-19.08.3.tar.xz"; - sha256 = "2406dd3387383cc58eb0e6f10bf50cc1b206c75096c6c6af27c1102c6d818ec3"; - name = "calendarsupport-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/calendarsupport-19.12.3.tar.xz"; + sha256 = "ecbd194b5aa39284d33f7f2ddca75175f8699efee1bfbd5000ea10076567bae8"; + name = "calendarsupport-19.12.3.tar.xz"; }; }; cantor = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/cantor-19.08.3.tar.xz"; - sha256 = "5b0f0b0b3990c83a927d2545baa9596119025dbf25242a9d46b1c76a26fcbfe5"; - name = "cantor-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/cantor-19.12.3.tar.xz"; + sha256 = "8347160f18993f53c857ec0d418dfebbc533878ad9f480047646d121e4e644cb"; + name = "cantor-19.12.3.tar.xz"; }; }; cervisia = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/cervisia-19.08.3.tar.xz"; - sha256 = "bf156c080f000b342f81e7a8450d6ca942627e5a08cc5ac9c02fc5b44d1f37a7"; - name = "cervisia-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/cervisia-19.12.3.tar.xz"; + sha256 = "733a90f521cd79157f6d02eeb28376bc703239800473e8cf366611dd4f3342a6"; + name = "cervisia-19.12.3.tar.xz"; }; }; dolphin = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/dolphin-19.08.3.tar.xz"; - sha256 = "de71f52324c15d692448ac4c79c1e0fcf35df5c03349a8bcbebfae20d9f69d4e"; - name = "dolphin-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/dolphin-19.12.3.tar.xz"; + sha256 = "ba16f4d5be5ccc3c135a913f2e3c7dd3b7a492cfc9ec9ae518f714fcd7c2ab47"; + name = "dolphin-19.12.3.tar.xz"; }; }; dolphin-plugins = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/dolphin-plugins-19.08.3.tar.xz"; - sha256 = "82860ef615954e94f3f382ad60fb144fcfcf7777b8a890f281c0cce55da13a55"; - name = "dolphin-plugins-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/dolphin-plugins-19.12.3.tar.xz"; + sha256 = "7dbd5c0fe4281c46df789f86f468c4ea32949285055cae4652bab3de59acdfd3"; + name = "dolphin-plugins-19.12.3.tar.xz"; }; }; dragon = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/dragon-19.08.3.tar.xz"; - sha256 = "f9172f6ddf75cf8e4be19d50f80994d59545fdea966674fb67abe7a7c934810a"; - name = "dragon-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/dragon-19.12.3.tar.xz"; + sha256 = "c5b09b2bd37f4e86f8412d3b950331d330257ba53278b1a569f36bf3fbf560ee"; + name = "dragon-19.12.3.tar.xz"; + }; + }; + elisa = { + version = "19.12.3"; + src = fetchurl { + url = "${mirror}/stable/release-service/19.12.3/src/elisa-19.12.3.tar.xz"; + sha256 = "28ad795c1d993969d49ab71514129589a71ee6fe8a2de785e22f17f5af7c3d32"; + name = "elisa-19.12.3.tar.xz"; }; }; eventviews = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/eventviews-19.08.3.tar.xz"; - sha256 = "3c110fb5001e71d664aaa3b09a3689c0bb16ca12ee169e98f6ff454a0ee81ba4"; - name = "eventviews-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/eventviews-19.12.3.tar.xz"; + sha256 = "e2ac6a77c6bdee008229a2b03262ac5602e0cabfd325a92df58be63aaa7db662"; + name = "eventviews-19.12.3.tar.xz"; }; }; ffmpegthumbs = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/ffmpegthumbs-19.08.3.tar.xz"; - sha256 = "c91ad8e83df474971cf9766f2398e88e45d02dd2e51a7a794ace02f22c38c0f0"; - name = "ffmpegthumbs-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/ffmpegthumbs-19.12.3.tar.xz"; + sha256 = "cc4a1c3b4768dc674d210294a9957d622448cbe9cdaf713c1cb40bff3a79260e"; + name = "ffmpegthumbs-19.12.3.tar.xz"; }; }; filelight = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/filelight-19.08.3.tar.xz"; - sha256 = "95fa38574292a2aa8d3d90749fbbb61c5005889ef1df1aaa04d2d789bbf4fb00"; - name = "filelight-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/filelight-19.12.3.tar.xz"; + sha256 = "9ea78509f932cd2bd553d934e2af75c25d0b65d85d2b0ab4a007ac5929b2d3b5"; + name = "filelight-19.12.3.tar.xz"; }; }; granatier = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/granatier-19.08.3.tar.xz"; - sha256 = "eac24bb0b0bcf7e12e4059187e0fd542503bae620637a4f35a339e6f63ab3890"; - name = "granatier-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/granatier-19.12.3.tar.xz"; + sha256 = "aa2e410e4eeae74f3902028069955017a31a922dff98b81850f20743f7b54c95"; + name = "granatier-19.12.3.tar.xz"; }; }; grantlee-editor = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/grantlee-editor-19.08.3.tar.xz"; - sha256 = "4d81e56ee89bf8ff19ba112b2ecaf6080b7fbc6768030b4dbb4f15a1099a5bce"; - name = "grantlee-editor-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/grantlee-editor-19.12.3.tar.xz"; + sha256 = "5df3e5ce7933290f9f6423bdbcb0ff5614a1a4b6fda250a37bd3ed57647f8a3c"; + name = "grantlee-editor-19.12.3.tar.xz"; }; }; grantleetheme = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/grantleetheme-19.08.3.tar.xz"; - sha256 = "ab1b0f55399c520191cf1241d85881e3f5b441ee82b387e7fbef55e77dc0e748"; - name = "grantleetheme-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/grantleetheme-19.12.3.tar.xz"; + sha256 = "cc0ce448c9d8396dcadea2a43089feca8e1074572df42752f70dd176676f29f9"; + name = "grantleetheme-19.12.3.tar.xz"; }; }; gwenview = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/gwenview-19.08.3.tar.xz"; - sha256 = "7e7ad69eaa7a6b2d0549e94d1dab0d012107c822d66483d54aa8268900820255"; - name = "gwenview-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/gwenview-19.12.3.tar.xz"; + sha256 = "b453cd55b7409bf8e4446a1b714dc66e73a0376d2da65b184b82f786767164e7"; + name = "gwenview-19.12.3.tar.xz"; }; }; incidenceeditor = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/incidenceeditor-19.08.3.tar.xz"; - sha256 = "e6753efc2841a5b0b63a2b02f07c5b77274214576e5e9fc66b962b18c516266d"; - name = "incidenceeditor-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/incidenceeditor-19.12.3.tar.xz"; + sha256 = "c608a95f6d09433b378f5df0243eff77be3738fb56f99ab439774f2cad5908a6"; + name = "incidenceeditor-19.12.3.tar.xz"; }; }; juk = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/juk-19.08.3.tar.xz"; - sha256 = "6ef343b31b4b996d3a576e91a8a0b57b55b61ed76e9ddc51c5072a6243cb3030"; - name = "juk-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/juk-19.12.3.tar.xz"; + sha256 = "4bc4210d223afc23cb6edc9262eceee038ecc6243a550698e676230168943611"; + name = "juk-19.12.3.tar.xz"; }; }; k3b = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/k3b-19.08.3.tar.xz"; - sha256 = "197ea67fa9ef66f8ee084608fd1907e2b3db108eec643d5bd6a0980f838f2b23"; - name = "k3b-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/k3b-19.12.3.tar.xz"; + sha256 = "832c314d528ed21971d9d9d26c1c4d6c61323c9b3b01787d710541e3651575a5"; + name = "k3b-19.12.3.tar.xz"; }; }; kaccounts-integration = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kaccounts-integration-19.08.3.tar.xz"; - sha256 = "9106718c3ac8beeb11dc8a8d2ad53c7cc4a364ab6246ca9a24ea05dfe7415723"; - name = "kaccounts-integration-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kaccounts-integration-19.12.3.tar.xz"; + sha256 = "452b95113de5fb0d19a13ef75e229ee07b0e92cc1e7a17e9a2dc7879121d9d33"; + name = "kaccounts-integration-19.12.3.tar.xz"; }; }; kaccounts-providers = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kaccounts-providers-19.08.3.tar.xz"; - sha256 = "55093c9ab5e001f126e86e1dbf55209c5f6365d9aad392cf506eab6a95d59a23"; - name = "kaccounts-providers-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kaccounts-providers-19.12.3.tar.xz"; + sha256 = "8774e9a8113e4aba593afeff655e38f6259c78e7dbaf1d95ea00235be880f3dd"; + name = "kaccounts-providers-19.12.3.tar.xz"; }; }; kaddressbook = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kaddressbook-19.08.3.tar.xz"; - sha256 = "e343187628af4b6142cc7177ea67a3460b6f2b96c608a5b4bd469f2d314bf4ae"; - name = "kaddressbook-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kaddressbook-19.12.3.tar.xz"; + sha256 = "1dede421e6fef2b1abc7d36dd1855cef43cc82de909a432cd38cff42d4168fba"; + name = "kaddressbook-19.12.3.tar.xz"; }; }; kajongg = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kajongg-19.08.3.tar.xz"; - sha256 = "dcf4738fb312762363caa88f9e26e7f7ab2102ad29ce938b71ed36177fb98662"; - name = "kajongg-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kajongg-19.12.3.tar.xz"; + sha256 = "23e2b1be670b48bdd027e4e7a57e86a94b322afe6d37d8492c3d17689decfae5"; + name = "kajongg-19.12.3.tar.xz"; }; }; kalarm = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kalarm-19.08.3.tar.xz"; - sha256 = "34d73be35b0cdf6189bf3792e939fa9557bffff8271966d9fc49217e488317e8"; - name = "kalarm-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kalarm-19.12.3.tar.xz"; + sha256 = "526ab8884752c15622233db8b72e88d0c22a7a1bd265763d850b6e18e32de417"; + name = "kalarm-19.12.3.tar.xz"; }; }; kalarmcal = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kalarmcal-19.08.3.tar.xz"; - sha256 = "f6e9d0c99d228fc922e52ae3ddb33f2b691290e58a48edc816de72fc44d73871"; - name = "kalarmcal-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kalarmcal-19.12.3.tar.xz"; + sha256 = "0ec5188f1164d91de702639ab2f85a713889feef48fc02dfe7385c945d06aa60"; + name = "kalarmcal-19.12.3.tar.xz"; }; }; kalgebra = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kalgebra-19.08.3.tar.xz"; - sha256 = "7832584a161c2f611ce980ad98932533c998d37e6e4e2b7afbd0b4e98ce88a65"; - name = "kalgebra-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kalgebra-19.12.3.tar.xz"; + sha256 = "ac865dded31b61c438ddb9db721543b8facba79c9b39365750b4bebfe2645640"; + name = "kalgebra-19.12.3.tar.xz"; }; }; kalzium = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kalzium-19.08.3.tar.xz"; - sha256 = "5dc3423a0f2646b59233f92b6a6e81b4a0bcdb819aa543c83270fe4cc5592933"; - name = "kalzium-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kalzium-19.12.3.tar.xz"; + sha256 = "e44f359d1343c30cf1993a3970a3e610d0d5782f92a6b331b035cf4fef104195"; + name = "kalzium-19.12.3.tar.xz"; }; }; kamera = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kamera-19.08.3.tar.xz"; - sha256 = "93a8a3dc6c4927b28a6ee0f09f1709e67f5bc38281b3775390513f2e69086942"; - name = "kamera-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kamera-19.12.3.tar.xz"; + sha256 = "22e19527bf9748cdc298be4c3fa2cb0a3b8b337da3a3a804c9d6066d7f3e1110"; + name = "kamera-19.12.3.tar.xz"; }; }; kamoso = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kamoso-19.08.3.tar.xz"; - sha256 = "437ddca6849ff3ad964737794ab8d22f8d152ad4aa9172dd838c77c59fc81448"; - name = "kamoso-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kamoso-19.12.3.tar.xz"; + sha256 = "9ae14c4c80cdbbf2ce2e92db5e9c814fbd685e81aa5c319aac5477649fc39fe4"; + name = "kamoso-19.12.3.tar.xz"; }; }; kanagram = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kanagram-19.08.3.tar.xz"; - sha256 = "74f7daaed8db4f2b445479307dbe974d3f3f1c8197ab8604712e109c8a4d36d2"; - name = "kanagram-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kanagram-19.12.3.tar.xz"; + sha256 = "441cae90d3b70dbef40bebbcf1325fa06e0df174a3f961b4b117a5fa1b40d6e3"; + name = "kanagram-19.12.3.tar.xz"; }; }; kapman = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kapman-19.08.3.tar.xz"; - sha256 = "0edc811df5d4e729851e4af980fb414d70af66218091c017c16054a5181af80e"; - name = "kapman-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kapman-19.12.3.tar.xz"; + sha256 = "3c81e3395ce2b2ea0937b09c0836cb58b8a941c2b7e2a27bd9741b2a9be1c1dd"; + name = "kapman-19.12.3.tar.xz"; }; }; kapptemplate = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kapptemplate-19.08.3.tar.xz"; - sha256 = "23776b6b56e97fac0d8372d856a6fc9014b057f98ad5a96298b0685943c3da2a"; - name = "kapptemplate-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kapptemplate-19.12.3.tar.xz"; + sha256 = "5bef4e4fb74da3102cba6672584195962514ee3f53fb369b48d492d6ce7255ad"; + name = "kapptemplate-19.12.3.tar.xz"; }; }; kate = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kate-19.08.3.tar.xz"; - sha256 = "ab9f076e7e825fca64252b366e637e34157f1f875aa573bdae333fc240e0ec71"; - name = "kate-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kate-19.12.3.tar.xz"; + sha256 = "f60b52e5a6a78920ac703a458f1eaf0ced02ffcd8b5f2d49de9a48674eeb007c"; + name = "kate-19.12.3.tar.xz"; }; }; katomic = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/katomic-19.08.3.tar.xz"; - sha256 = "a02df5d0d03fdd478ead1ba705089514b6debfae553be8d814edfb6952149eac"; - name = "katomic-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/katomic-19.12.3.tar.xz"; + sha256 = "d7ed527e2546e94cb091e433a2e61618301152704c48e1f003e1f8e60b4f0cbd"; + name = "katomic-19.12.3.tar.xz"; }; }; kbackup = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kbackup-19.08.3.tar.xz"; - sha256 = "c71156528087e0c799b4c957b6525b85763bdeb35ebc58ba480878f2f0daf97d"; - name = "kbackup-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kbackup-19.12.3.tar.xz"; + sha256 = "1761009f9cd854d3fb4f98eb24b5ee7f3c42c4541f7cfb2ff1589786c86bdc99"; + name = "kbackup-19.12.3.tar.xz"; }; }; kblackbox = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kblackbox-19.08.3.tar.xz"; - sha256 = "16f885a5baa0ee593c85f745246f2b3af9106a3befb0c9b7aa8695e3aed382f4"; - name = "kblackbox-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kblackbox-19.12.3.tar.xz"; + sha256 = "dffb910a5d429dfc231b7d2185119430856d26af2c027d34c551a6d664ae49c6"; + name = "kblackbox-19.12.3.tar.xz"; }; }; kblocks = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kblocks-19.08.3.tar.xz"; - sha256 = "9d2553472a3f61e1be584bed2d9295a60b8074fdcd264213d67dc20f63033563"; - name = "kblocks-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kblocks-19.12.3.tar.xz"; + sha256 = "5bc5cb14b91c9b230563388b4d935211975bae34ed36cb0479cbf25bc3b652fb"; + name = "kblocks-19.12.3.tar.xz"; }; }; kblog = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kblog-19.08.3.tar.xz"; - sha256 = "7b030a13c79a6add2b6f46b840e347609b39099c937d5bc5fb9310e2da987164"; - name = "kblog-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kblog-19.12.3.tar.xz"; + sha256 = "3fba584c4c217c5b5b3be52752f8f3c371fb877fe3b730a48711028fedc6b3d4"; + name = "kblog-19.12.3.tar.xz"; }; }; kbounce = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kbounce-19.08.3.tar.xz"; - sha256 = "21e4bc2e2f3c23d4b954c8b336aab9faa5ba6021ca1487baf39595ff31d82e0b"; - name = "kbounce-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kbounce-19.12.3.tar.xz"; + sha256 = "d1b7ac99e54070e1e28a3449e8773691e90625c9f881cf94352ef752700197d0"; + name = "kbounce-19.12.3.tar.xz"; }; }; kbreakout = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kbreakout-19.08.3.tar.xz"; - sha256 = "1c49d80dcbaa7745932c6b64c520072099e66767e8d1f725a332f79a7ee89f3f"; - name = "kbreakout-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kbreakout-19.12.3.tar.xz"; + sha256 = "ca662c9f2c6765f5f8b07bd4cc2e2aa0a43b69fec6428c3deda2cfad0ab675fa"; + name = "kbreakout-19.12.3.tar.xz"; }; }; kbruch = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kbruch-19.08.3.tar.xz"; - sha256 = "9674aba5a6683e418ed03cc011e3817eb28418538dd9200a808f9813e5112dfc"; - name = "kbruch-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kbruch-19.12.3.tar.xz"; + sha256 = "522ddae0b2ec640e70c717a9fe0d6a95aef1ed3fe2acbca4b93a99a309abd559"; + name = "kbruch-19.12.3.tar.xz"; }; }; kcachegrind = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kcachegrind-19.08.3.tar.xz"; - sha256 = "8fc5e0643bb826b07cb5d283b8bd6fd5da4979f6125b43b1db3a9db60b02a36a"; - name = "kcachegrind-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kcachegrind-19.12.3.tar.xz"; + sha256 = "a30b70bac32f2b33c3c90b8c17754cfbf7d293c9eff0d573747eca2b45353b41"; + name = "kcachegrind-19.12.3.tar.xz"; }; }; kcalc = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kcalc-19.08.3.tar.xz"; - sha256 = "7c61d96bcd45621d021ae8a56224dcf81999cb14ab7b1d7976a47eee2be25d2e"; - name = "kcalc-19.08.3.tar.xz"; - }; - }; - kcalcore = { - version = "19.08.3"; - src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kcalcore-19.08.3.tar.xz"; - sha256 = "86d0467d3929eb6471507cbc790277968eb8f0aa4449e1b3ee8ecc555d32dbaa"; - name = "kcalcore-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kcalc-19.12.3.tar.xz"; + sha256 = "bbda4fc074e1ea748e95840aa79c51fdf0a1943ebb63ce6c7b68c197831258bd"; + name = "kcalc-19.12.3.tar.xz"; }; }; kcalutils = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kcalutils-19.08.3.tar.xz"; - sha256 = "821742c98dd55a1334c13ea9d59e177ade048b1d3ade4775803eb288c98c93da"; - name = "kcalutils-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kcalutils-19.12.3.tar.xz"; + sha256 = "00da1f331110a63c3d3c2c96394ead3d282f582d73fa925065560a50807fb7ff"; + name = "kcalutils-19.12.3.tar.xz"; }; }; kcharselect = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kcharselect-19.08.3.tar.xz"; - sha256 = "f294965fc7cf8b1063b611233a98fab13a00263f1d4fd254fb8b53b3f125bc52"; - name = "kcharselect-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kcharselect-19.12.3.tar.xz"; + sha256 = "9be6ac607148b0815bd985075fbb97d44561fdd6a955b60f0afc728f9cbd978b"; + name = "kcharselect-19.12.3.tar.xz"; }; }; kcolorchooser = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kcolorchooser-19.08.3.tar.xz"; - sha256 = "0c3d45ceb9029f0d316e61b3f403838b4c7de82a3211a231b539e6755386c657"; - name = "kcolorchooser-19.08.3.tar.xz"; - }; - }; - kcontacts = { - version = "19.08.3"; - src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kcontacts-19.08.3.tar.xz"; - sha256 = "17778fc501f9de9b5c8c58b57aebb09c4be088bcd9aefa5fc9afbd92f2e5626c"; - name = "kcontacts-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kcolorchooser-19.12.3.tar.xz"; + sha256 = "cb0395c1b4f953fd51129cfe5088702ec261f84cc045f889e22c13e81793744a"; + name = "kcolorchooser-19.12.3.tar.xz"; }; }; kcron = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kcron-19.08.3.tar.xz"; - sha256 = "b2270bb3390570ee49b887e5cda1c596c351fd0cd83183f091ef1b078fa55669"; - name = "kcron-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kcron-19.12.3.tar.xz"; + sha256 = "22d07834e8431d0fcc756a0e7d92d4e8993008766bf336254f8650c9455c9ab0"; + name = "kcron-19.12.3.tar.xz"; }; }; kdav = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kdav-19.08.3.tar.xz"; - sha256 = "e85a0a8dcfdccc1dc0afaee364c45d57c6807fadb6926ae1a5afc54c4fb0a9f0"; - name = "kdav-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kdav-19.12.3.tar.xz"; + sha256 = "7a0ed47378e064536b26dfdfcf7abcdb8dd2ec253a7bbcef7962b701d368872a"; + name = "kdav-19.12.3.tar.xz"; }; }; kdebugsettings = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kdebugsettings-19.08.3.tar.xz"; - sha256 = "10ccbc85c36a81ba7fdf3230f16c3b9974d240d17347d21aa7b67e9b5f85c78d"; - name = "kdebugsettings-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kdebugsettings-19.12.3.tar.xz"; + sha256 = "ad18d13dd0943a3651ec4729441899b103bd2dc743a4a373ce7bd14fb38dd3e0"; + name = "kdebugsettings-19.12.3.tar.xz"; }; }; kde-dev-scripts = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kde-dev-scripts-19.08.3.tar.xz"; - sha256 = "c7998753f67c6efbe818ca1f96c5681c7abe3078ce6beeb307562309ca243c28"; - name = "kde-dev-scripts-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kde-dev-scripts-19.12.3.tar.xz"; + sha256 = "94c0ba9de369dd6af14dcea505616025bf06599618a6c7557861aa9fb89ea628"; + name = "kde-dev-scripts-19.12.3.tar.xz"; }; }; kde-dev-utils = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kde-dev-utils-19.08.3.tar.xz"; - sha256 = "82a573941c1a99480294fe3e8658440da64e652eb62e2a7354751894a6a899e2"; - name = "kde-dev-utils-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kde-dev-utils-19.12.3.tar.xz"; + sha256 = "772ec425865082b8be3650cf0af10ad943f38096036227cab22405b32c4e1fae"; + name = "kde-dev-utils-19.12.3.tar.xz"; }; }; kdeedu-data = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kdeedu-data-19.08.3.tar.xz"; - sha256 = "dfdbe10415247bdd1b6926f6fcea943d13c6e0a1ab1a562aac6e0b7109420286"; - name = "kdeedu-data-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kdeedu-data-19.12.3.tar.xz"; + sha256 = "76fd5c0efaf339bcfc5ac9f131bac8889cff1df2dd3452ea7dd507b8d9e2645b"; + name = "kdeedu-data-19.12.3.tar.xz"; }; }; kdegraphics-mobipocket = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kdegraphics-mobipocket-19.08.3.tar.xz"; - sha256 = "d9ea38255c967dcf0de820e6ad663e721188f5541c18c459e611f6d72ddc8e8f"; - name = "kdegraphics-mobipocket-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kdegraphics-mobipocket-19.12.3.tar.xz"; + sha256 = "c459f9f04cf98cdc88a6763da8880f418e0c33b3cbd1d06b9a7347ebb470d835"; + name = "kdegraphics-mobipocket-19.12.3.tar.xz"; }; }; kdegraphics-thumbnailers = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kdegraphics-thumbnailers-19.08.3.tar.xz"; - sha256 = "14d342336e92b3913d46a415da9fcf53d239f0ceb16aed99c1e095641ce6ddb4"; - name = "kdegraphics-thumbnailers-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kdegraphics-thumbnailers-19.12.3.tar.xz"; + sha256 = "92a045ac0e9ca57ea27760df3cca0203f29ba435574e9d837d0c1069b8e88f72"; + name = "kdegraphics-thumbnailers-19.12.3.tar.xz"; }; }; kdenetwork-filesharing = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kdenetwork-filesharing-19.08.3.tar.xz"; - sha256 = "4074d996c693bdd69fd88e6f2acede79c05b2eceef1d3ed81f311247640ef366"; - name = "kdenetwork-filesharing-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kdenetwork-filesharing-19.12.3.tar.xz"; + sha256 = "8cc75f47ef8038cd7ee75974056cd48022816ab42c76cb6bd2c35a3619445180"; + name = "kdenetwork-filesharing-19.12.3.tar.xz"; }; }; kdenlive = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kdenlive-19.08.3.tar.xz"; - sha256 = "64ab3cf06222b95f021941d8c430c70918c04c3ea988f7ccf5ef87c6b69b4465"; - name = "kdenlive-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kdenlive-19.12.3.tar.xz"; + sha256 = "cebcb8f019bc0fc719ef54d00507dc1281758e3c8c69ea2f93f99feda777bc64"; + name = "kdenlive-19.12.3.tar.xz"; }; }; kdepim-addons = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kdepim-addons-19.08.3.tar.xz"; - sha256 = "8c85cec6b827da6025364ec6bbccdf2ab22c73380933aed69cf3c86be52cff24"; - name = "kdepim-addons-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kdepim-addons-19.12.3.tar.xz"; + sha256 = "f33bc70ac54ab56eea7bd8ca4c0ac98d9612acc4ddc9ce989d06b99f04f62c19"; + name = "kdepim-addons-19.12.3.tar.xz"; }; }; kdepim-apps-libs = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kdepim-apps-libs-19.08.3.tar.xz"; - sha256 = "3c478455a0f4704aa4f8a42e92f0657e01b749c568dc6e89bfae5496eefeab83"; - name = "kdepim-apps-libs-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kdepim-apps-libs-19.12.3.tar.xz"; + sha256 = "e133cf76364f6b244338eafd39845a9f392eb9b55c43446541acbcb24a6f4796"; + name = "kdepim-apps-libs-19.12.3.tar.xz"; }; }; kdepim-runtime = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kdepim-runtime-19.08.3.tar.xz"; - sha256 = "2673967456b7eacbd69ca678761e479bfa65a0ec6455c86b3a83c76d766a71ea"; - name = "kdepim-runtime-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kdepim-runtime-19.12.3.tar.xz"; + sha256 = "dabf7da1ad35dfaa3531639a8964b61dbd7094ec0a9b3d62f50fa24a22f5db13"; + name = "kdepim-runtime-19.12.3.tar.xz"; }; }; kdesdk-kioslaves = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kdesdk-kioslaves-19.08.3.tar.xz"; - sha256 = "cd957c67712616b9c7f00c8d733f723d98779c5805561770970bb3e2173478e0"; - name = "kdesdk-kioslaves-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kdesdk-kioslaves-19.12.3.tar.xz"; + sha256 = "8b075bff545883aba24fee1763d0cdc64bf9444ae865f0623a33fc1ca295d254"; + name = "kdesdk-kioslaves-19.12.3.tar.xz"; }; }; kdesdk-thumbnailers = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kdesdk-thumbnailers-19.08.3.tar.xz"; - sha256 = "62757c71653d9a9541410104f13035b024e8bab7b21b729a306cb2ac445db8ac"; - name = "kdesdk-thumbnailers-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kdesdk-thumbnailers-19.12.3.tar.xz"; + sha256 = "b304843045f93e91e0aeeeacf968018dc192ea71ed9977be3d9cfc4e149edcde"; + name = "kdesdk-thumbnailers-19.12.3.tar.xz"; }; }; kdf = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kdf-19.08.3.tar.xz"; - sha256 = "eef733c2089ce8fc40405653fa5e3aaafe67a1cc5d074f744e49b185291c0617"; - name = "kdf-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kdf-19.12.3.tar.xz"; + sha256 = "257e07e27376f45eaa1bfb1b3055c7f10759ca7ec185aa7572dc60317c8119bd"; + name = "kdf-19.12.3.tar.xz"; }; }; kdialog = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kdialog-19.08.3.tar.xz"; - sha256 = "2fa2e07fb9975e2e32e26a2a17350ef253b93471017e5945a2df0fef2eeba787"; - name = "kdialog-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kdialog-19.12.3.tar.xz"; + sha256 = "e6f9a7a6b7c2f18795070bf9466dd6256568b02683d955ef3253432216594d00"; + name = "kdialog-19.12.3.tar.xz"; }; }; kdiamond = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kdiamond-19.08.3.tar.xz"; - sha256 = "6a433c8b628f105d210efd5b5532763e09a4e7190d71f8cf11931ab1605abeec"; - name = "kdiamond-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kdiamond-19.12.3.tar.xz"; + sha256 = "95dfd2fd3daa59a58d128c35b95b609117438efdb5d60110414ab7aff5fe3e7c"; + name = "kdiamond-19.12.3.tar.xz"; }; }; keditbookmarks = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/keditbookmarks-19.08.3.tar.xz"; - sha256 = "ce2e90f24cac8dabe3e3804232715b47e247d51c86699162e2f7f63d1f290b05"; - name = "keditbookmarks-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/keditbookmarks-19.12.3.tar.xz"; + sha256 = "1c5efb63eb0a714942677eb03f91ae0bbd10731eace5471ea12ae9d3296b6b05"; + name = "keditbookmarks-19.12.3.tar.xz"; }; }; kfind = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kfind-19.08.3.tar.xz"; - sha256 = "6ebb7d361a8456e3a3bc7bac995a0224cd76eefd724ff62ba0d6348f7eb1f4f2"; - name = "kfind-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kfind-19.12.3.tar.xz"; + sha256 = "b3738d6e3f26fffbfcc204d946e165ae0727d9f460cb2065ceb221b4872019b1"; + name = "kfind-19.12.3.tar.xz"; }; }; kfloppy = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kfloppy-19.08.3.tar.xz"; - sha256 = "aed5533db83513e7ad9d4108920fc0241569d6b1b649d95ef36a36bbc1f72cab"; - name = "kfloppy-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kfloppy-19.12.3.tar.xz"; + sha256 = "7f384f9197d5066a5db978a9551665ae9a90b1f3afd1937f800ab61e376d3723"; + name = "kfloppy-19.12.3.tar.xz"; }; }; kfourinline = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kfourinline-19.08.3.tar.xz"; - sha256 = "c35b52b41398616798d75e62fa77488bf84e924e91a432cd1b96b1c09ad1f9ee"; - name = "kfourinline-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kfourinline-19.12.3.tar.xz"; + sha256 = "1d2f4fdbf427e2ce86a0519ee61a70df0675f039cebd658cd75bd27af4fe69f6"; + name = "kfourinline-19.12.3.tar.xz"; }; }; kgeography = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kgeography-19.08.3.tar.xz"; - sha256 = "1f2969db9ed5b9cc3d56a8cc12fa24cdace473edcd05baaf3c7b460fa7b2da8c"; - name = "kgeography-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kgeography-19.12.3.tar.xz"; + sha256 = "3947ca1f50910d77f85c630b49128a085fed4230c7919e09281bc1765529a533"; + name = "kgeography-19.12.3.tar.xz"; }; }; kget = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kget-19.08.3.tar.xz"; - sha256 = "5a107da8313731114e7b5528f4c0cf6e0ab62867e20a9caa802de23812c69800"; - name = "kget-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kget-19.12.3.tar.xz"; + sha256 = "a4b1d8fb94617c80a557c27ae58a14131bda4476340c136262e5bf8f51d918d9"; + name = "kget-19.12.3.tar.xz"; }; }; kgoldrunner = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kgoldrunner-19.08.3.tar.xz"; - sha256 = "44aec483cbd9d0bffb4eb9606d456ba375cb772fe72ab2c9d76a64930ede2c9b"; - name = "kgoldrunner-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kgoldrunner-19.12.3.tar.xz"; + sha256 = "5808d797fb9df178526b3ea462bc902ca36b5926ef7c51233816ba3da6bc0bdd"; + name = "kgoldrunner-19.12.3.tar.xz"; }; }; kgpg = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kgpg-19.08.3.tar.xz"; - sha256 = "85bb9adbd7a7213bdd4913c2153582e938543db49cf2414b8794a850f63f3ab6"; - name = "kgpg-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kgpg-19.12.3.tar.xz"; + sha256 = "53e5726a1ccf34a70090ac0bbf2effb6f1f9f9b3d0164a5beead982a24c97e38"; + name = "kgpg-19.12.3.tar.xz"; }; }; khangman = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/khangman-19.08.3.tar.xz"; - sha256 = "82e34738f34efef5f03bf98a3a99a0590a5a265cce016b4a2f25ca05e9d078c3"; - name = "khangman-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/khangman-19.12.3.tar.xz"; + sha256 = "55286b318ec2c2d8b7e63f4063fc0e39a8ff81c0a9d3f06c9879f141c94762a8"; + name = "khangman-19.12.3.tar.xz"; }; }; khelpcenter = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/khelpcenter-19.08.3.tar.xz"; - sha256 = "a03817fb16739b1b235dc54ddeda2c2ebc6605a0c7678e02af24c05271c0b77a"; - name = "khelpcenter-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/khelpcenter-19.12.3.tar.xz"; + sha256 = "526c89e46cace9e8afb4e748f9bbf0d105472a4cc4a6d8bb821e8b9b88ab0f73"; + name = "khelpcenter-19.12.3.tar.xz"; }; }; kidentitymanagement = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kidentitymanagement-19.08.3.tar.xz"; - sha256 = "6ed512d3b42378a767299660c2b9fe142b840cdaaae70c522104c37275221f37"; - name = "kidentitymanagement-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kidentitymanagement-19.12.3.tar.xz"; + sha256 = "254bfc3a60df7bc1960fa1e6d5b7733f6aa5ed7772c1097d9a8cfcdda2704516"; + name = "kidentitymanagement-19.12.3.tar.xz"; }; }; kig = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kig-19.08.3.tar.xz"; - sha256 = "69dacdbb10bcefe43e5141b0b33b51ca4704f5a5b933e194a4891be92affd21c"; - name = "kig-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kig-19.12.3.tar.xz"; + sha256 = "1ae2c3024cdd14e476ff15b730f4ebe9b279477b67cc4cc89606755c7d3beef3"; + name = "kig-19.12.3.tar.xz"; }; }; kigo = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kigo-19.08.3.tar.xz"; - sha256 = "2e20837b52550c7c33bd2e5f741a2395a8a1666b793e4b034bd27714177b8502"; - name = "kigo-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kigo-19.12.3.tar.xz"; + sha256 = "ee18b8563c49e3e01924ea76cd8c6ec376482c2100e0fac7cdfd14b5899592d5"; + name = "kigo-19.12.3.tar.xz"; }; }; killbots = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/killbots-19.08.3.tar.xz"; - sha256 = "75f5d53eda4dbe96250caa2faa16514d7c68538d7e8c9deea4eff0d80e3628e2"; - name = "killbots-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/killbots-19.12.3.tar.xz"; + sha256 = "3c5dc7e1f27036d2584f6ee58bf3bbffd9e56a467f30a8e2eab9e1bda1e7d4a3"; + name = "killbots-19.12.3.tar.xz"; }; }; kimagemapeditor = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kimagemapeditor-19.08.3.tar.xz"; - sha256 = "9c69541c774d15ac02164c52c9e4ba523e76e195231bf6db528fd94407347434"; - name = "kimagemapeditor-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kimagemapeditor-19.12.3.tar.xz"; + sha256 = "1aee6521974bde5151744d92823f6b405ee4a8bd2dfe3c538324a209e18c6b35"; + name = "kimagemapeditor-19.12.3.tar.xz"; }; }; kimap = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kimap-19.08.3.tar.xz"; - sha256 = "46ca8d265b7191d75db8c6a4d988624385c9ab8eae702a42e6eb4b81be581051"; - name = "kimap-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kimap-19.12.3.tar.xz"; + sha256 = "5c3b3cdf928754f9919030d865a2cdad0ad342c82c436afef660d018f85de4d2"; + name = "kimap-19.12.3.tar.xz"; }; }; kio-extras = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kio-extras-19.08.3.tar.xz"; - sha256 = "e38e872f78ff24fe512ec7ff9ed4f6b6a8e1fef6111fdb0222c133bed0a8861f"; - name = "kio-extras-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kio-extras-19.12.3.tar.xz"; + sha256 = "413cb21479fedf1421a6e2585b4df813c3a3fadaa77c248a9f810021f58cea4b"; + name = "kio-extras-19.12.3.tar.xz"; }; }; kipi-plugins = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kipi-plugins-19.08.3.tar.xz"; - sha256 = "f540e517421503b54e906633c71c2f688bb920c5aefe7d05a13d0eeaf0356a9b"; - name = "kipi-plugins-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kipi-plugins-19.12.3.tar.xz"; + sha256 = "16997bd6fbb59c194c2997732c870e33bbacd3d7346546af9a255db3330ec5ac"; + name = "kipi-plugins-19.12.3.tar.xz"; }; }; kirigami-gallery = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kirigami-gallery-19.08.3.tar.xz"; - sha256 = "4ceeb854aa95902effb99cb2e5956a2f237ac3880f5b5d8e22849ed7887288df"; - name = "kirigami-gallery-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kirigami-gallery-19.12.3.tar.xz"; + sha256 = "17febaeb77e0dfc6f591dd285fd7f538466572f2f2e3253461c41f92d6cb05fe"; + name = "kirigami-gallery-19.12.3.tar.xz"; }; }; kiriki = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kiriki-19.08.3.tar.xz"; - sha256 = "1ceaea286294d8a5371d0792ee38cf4b8922495587cc430b6b01bd92642be2f5"; - name = "kiriki-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kiriki-19.12.3.tar.xz"; + sha256 = "abbaa49f9b47286f9afbe7c968eb6fbfeecb4be84ed4b2ce7514a3ed1e92b2d5"; + name = "kiriki-19.12.3.tar.xz"; }; }; kiten = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kiten-19.08.3.tar.xz"; - sha256 = "6759463f195c50bdcdb2378a8142d1e00a1cea05b769d95a69d2cfdeb1864601"; - name = "kiten-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kiten-19.12.3.tar.xz"; + sha256 = "663739a8b252cb95a38294c6f7d675c833daaa81f2654f5cabd8e512fd353560"; + name = "kiten-19.12.3.tar.xz"; }; }; kitinerary = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kitinerary-19.08.3.tar.xz"; - sha256 = "d13e701b8a988999477c030fffe687b4c333a330717a15b72651458f35e6e151"; - name = "kitinerary-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kitinerary-19.12.3.tar.xz"; + sha256 = "4188efe8672091cbdaa4f757f5d8b94a30b1373dceafc076b01330602d5086e2"; + name = "kitinerary-19.12.3.tar.xz"; }; }; kjumpingcube = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kjumpingcube-19.08.3.tar.xz"; - sha256 = "a1e6147105a0d467629118bf6cac974a1a698d15f48563e494ce75e126fec734"; - name = "kjumpingcube-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kjumpingcube-19.12.3.tar.xz"; + sha256 = "b969111cb884efc9ad8ef585066ca33d7168bb045c93a3f18668173a11d29ea2"; + name = "kjumpingcube-19.12.3.tar.xz"; }; }; kldap = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kldap-19.08.3.tar.xz"; - sha256 = "b65ba5fefab7ecb92a7d38ac718e53077d9d9a87d73f121e32019aad90b48bae"; - name = "kldap-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kldap-19.12.3.tar.xz"; + sha256 = "49f1ad32ae10b7f997c77f3a8db0776b972b93f9e18873b77baabf0db05cd5d4"; + name = "kldap-19.12.3.tar.xz"; }; }; kleopatra = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kleopatra-19.08.3.tar.xz"; - sha256 = "44b9873fbdeb88416d33b54491b75d35eac1589d70ef70505456e89068eb1caf"; - name = "kleopatra-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kleopatra-19.12.3.tar.xz"; + sha256 = "04edf29e42088b2bccdfe36b9b7170c38acd7816657673da5393244b73773098"; + name = "kleopatra-19.12.3.tar.xz"; }; }; klettres = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/klettres-19.08.3.tar.xz"; - sha256 = "205ed817469a72caaf73683c618fcd0800176038345e46555c4c78d644b3a1bf"; - name = "klettres-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/klettres-19.12.3.tar.xz"; + sha256 = "f2a1bbb002954a80045780de24f494154214b8add53a5c01a8783cbeb26d26c7"; + name = "klettres-19.12.3.tar.xz"; }; }; klickety = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/klickety-19.08.3.tar.xz"; - sha256 = "7e4509d47c363173630d536b401d8f1ccb7db4c62d75dd4a449e89dc56c9632e"; - name = "klickety-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/klickety-19.12.3.tar.xz"; + sha256 = "351e421ecca5fc80955ed614453c81d8b790200185db16f56be1e0ca9325ad39"; + name = "klickety-19.12.3.tar.xz"; }; }; klines = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/klines-19.08.3.tar.xz"; - sha256 = "aaa7825b4bfd61b650ddf28dd975b04cebdb7c09c9b137f17d686570a5212ebc"; - name = "klines-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/klines-19.12.3.tar.xz"; + sha256 = "8d11894d0a02de20090e52ef697a5a3c00e902213c018a82c94ca0985e92350a"; + name = "klines-19.12.3.tar.xz"; }; }; kmag = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kmag-19.08.3.tar.xz"; - sha256 = "216e5db763f72ff1f4ada339912dc686fa7a6cea0dafc8b9eab35601edabc950"; - name = "kmag-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kmag-19.12.3.tar.xz"; + sha256 = "d1e8bbc8006cd2cfcb345e30aac73350562bff98b69b0333ad49726cdce81e7e"; + name = "kmag-19.12.3.tar.xz"; }; }; kmahjongg = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kmahjongg-19.08.3.tar.xz"; - sha256 = "d74446083f6ead6d7571e0ca4ff37af3f8167cc16ed7f67576155a000b41ca22"; - name = "kmahjongg-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kmahjongg-19.12.3.tar.xz"; + sha256 = "41a07f74cc4e3bf05f6a57a380d4e093b0303528cb703369981b262a0b1787c8"; + name = "kmahjongg-19.12.3.tar.xz"; }; }; kmail = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kmail-19.08.3.tar.xz"; - sha256 = "d39d40ed61fc6828af06ad2a713b4c741685cec68471c57e18001277d3be4d3f"; - name = "kmail-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kmail-19.12.3.tar.xz"; + sha256 = "7f70e5270960e474b15631a36110e13fdf7238d6fd9f1b3fdb6d8c145b6529ba"; + name = "kmail-19.12.3.tar.xz"; }; }; kmail-account-wizard = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kmail-account-wizard-19.08.3.tar.xz"; - sha256 = "eb998583eb99f9e06eda35c7d44819ffac33fbe1a068c597bc43db271f194f68"; - name = "kmail-account-wizard-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kmail-account-wizard-19.12.3.tar.xz"; + sha256 = "4199e8c73456bf31b829596919ca481c3a95e59dee7c9bfb2e680311d0354ff0"; + name = "kmail-account-wizard-19.12.3.tar.xz"; }; }; kmailtransport = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kmailtransport-19.08.3.tar.xz"; - sha256 = "24cf570b2ab77a69e55adb013e1d7e3eaf17f5ced900d8e5166890bb3ab64d12"; - name = "kmailtransport-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kmailtransport-19.12.3.tar.xz"; + sha256 = "077b3dba7c02dde9693c003ab7039f3b2a530e3b1aecfcf187313db5226e8953"; + name = "kmailtransport-19.12.3.tar.xz"; }; }; kmbox = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kmbox-19.08.3.tar.xz"; - sha256 = "e29d0df5344babb08f1befce2be9eae6a2e872f74757367454651ad26dd8658d"; - name = "kmbox-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kmbox-19.12.3.tar.xz"; + sha256 = "de69683abb42c5c24ccb4f034e067f50c94d5a10c53f359b0e6ad4b75a70b376"; + name = "kmbox-19.12.3.tar.xz"; }; }; kmime = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kmime-19.08.3.tar.xz"; - sha256 = "e659e1154fbc11db624f1b76bc1a8e5cf8c7f6731cef7b4ff6fad9ccf90580dd"; - name = "kmime-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kmime-19.12.3.tar.xz"; + sha256 = "5ed20ad77000c60ba5723aaa22149fca3a3956f930d63e70984f0a17b9339300"; + name = "kmime-19.12.3.tar.xz"; }; }; kmines = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kmines-19.08.3.tar.xz"; - sha256 = "4ebb5d932ab43f11f81d0fa64aef871ffecaab4a2c3a5c4dbf10416a86fa8329"; - name = "kmines-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kmines-19.12.3.tar.xz"; + sha256 = "05d8004f2e560bf2c9e32a3ca1988b3848b99bfb9cc96307c1ac2b703c202dad"; + name = "kmines-19.12.3.tar.xz"; }; }; kmix = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kmix-19.08.3.tar.xz"; - sha256 = "cf71abee1ab35423b0daeaf1fbddbcdcb2f40fd946dfabf0cb19b8762b8582bc"; - name = "kmix-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kmix-19.12.3.tar.xz"; + sha256 = "a4c637383e988ffa21b9c48c72ef6d8855fe207c852d0679011337a331ccfc5c"; + name = "kmix-19.12.3.tar.xz"; }; }; kmousetool = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kmousetool-19.08.3.tar.xz"; - sha256 = "0434d4883d5478168c696ec1a43164ff09a15999416ff198b749d45981983399"; - name = "kmousetool-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kmousetool-19.12.3.tar.xz"; + sha256 = "3741aff20c778bb704c76df7ff005da36ef6c41b07fca35f257ba440741b8413"; + name = "kmousetool-19.12.3.tar.xz"; }; }; kmouth = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kmouth-19.08.3.tar.xz"; - sha256 = "b962dec13a0fa610b4e9fa03f4f0c9ce28cb8c45e8fc18243c26452783ebf2a9"; - name = "kmouth-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kmouth-19.12.3.tar.xz"; + sha256 = "424dd4cf81cd43e47630ada0f2a9e47be8106b31ebf2e5c8c1077e55e3a8113f"; + name = "kmouth-19.12.3.tar.xz"; }; }; kmplot = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kmplot-19.08.3.tar.xz"; - sha256 = "777408873baa5d6ce236d71bc2935a89fa414fb9f59049ba6e1ae88d581f580e"; - name = "kmplot-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kmplot-19.12.3.tar.xz"; + sha256 = "2743e3a472ccf40281f5afd9c6110dde6fb9bc437e8e291beba484d405d8152e"; + name = "kmplot-19.12.3.tar.xz"; }; }; knavalbattle = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/knavalbattle-19.08.3.tar.xz"; - sha256 = "e4a50d3873865e8ab4803a9d7350bfc56ee3d59fd718b8abe860ac89e995ae69"; - name = "knavalbattle-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/knavalbattle-19.12.3.tar.xz"; + sha256 = "59875e10b0f2b06c2d3165f2f2457113f04550215947c8296ce1dcaf385ee37f"; + name = "knavalbattle-19.12.3.tar.xz"; }; }; knetwalk = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/knetwalk-19.08.3.tar.xz"; - sha256 = "ed74cd88364eb263209574655e1cdf77f4776bf339f3313ce20dbf4f950664c4"; - name = "knetwalk-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/knetwalk-19.12.3.tar.xz"; + sha256 = "24cb7cfa4143b2ab1bcaf38a6698cd01252201238c6561bc711e0673366642ae"; + name = "knetwalk-19.12.3.tar.xz"; }; }; knights = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/knights-19.08.3.tar.xz"; - sha256 = "1a60de6e31340ecdd3b454d0a90f74f9ab0b81ff9166869d402da77d0acdc93e"; - name = "knights-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/knights-19.12.3.tar.xz"; + sha256 = "4796654dcaff355b4f1097260748cfe04812ff926acc7ca0f037711875dd1512"; + name = "knights-19.12.3.tar.xz"; }; }; knotes = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/knotes-19.08.3.tar.xz"; - sha256 = "07ad3c7c8f5e7429c1f112aca10c164468dbbd5c356b504aa1fc172bb1bb1889"; - name = "knotes-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/knotes-19.12.3.tar.xz"; + sha256 = "b27846609dfac1ffcb3ac5e7165b7557231b096f6a84206da956c37233aed7b0"; + name = "knotes-19.12.3.tar.xz"; }; }; kolf = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kolf-19.08.3.tar.xz"; - sha256 = "1c864f1abb31b168fd1402217ffc4c00d495f8ebece61ddc1f8c954c29684e1b"; - name = "kolf-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kolf-19.12.3.tar.xz"; + sha256 = "2ba1f781d7d98ca0b10231e4f963b27d043c726f44da662b6c77105da4f9cffc"; + name = "kolf-19.12.3.tar.xz"; }; }; kollision = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kollision-19.08.3.tar.xz"; - sha256 = "2240563774c22bf0552504a501710e37eb468afcbc4c3313db7779d086cdf8dc"; - name = "kollision-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kollision-19.12.3.tar.xz"; + sha256 = "ce0bb077e8db8a959f965d463bb25bac02c91585b422af6c9249ad8a8f25eaab"; + name = "kollision-19.12.3.tar.xz"; }; }; kolourpaint = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kolourpaint-19.08.3.tar.xz"; - sha256 = "aac61cfc561b4d4759b086508c53c525db6899ae11a2400c4ca701fcb5649c8d"; - name = "kolourpaint-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kolourpaint-19.12.3.tar.xz"; + sha256 = "7c134da2feb75a87bfda6b4265ef705868a9be03d70a828111a2869ca0b517b1"; + name = "kolourpaint-19.12.3.tar.xz"; }; }; kompare = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kompare-19.08.3.tar.xz"; - sha256 = "d0adbae35e979212e9705cb815e309059d8b3d0b7a815d7ff2cd7197eff65f44"; - name = "kompare-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kompare-19.12.3.tar.xz"; + sha256 = "b89b266b6f648500627d2e70df29b73248c7b7d7d5e7c1bbcaddaedf072f6f1a"; + name = "kompare-19.12.3.tar.xz"; }; }; konqueror = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/konqueror-19.08.3.tar.xz"; - sha256 = "d0ff5b409bbbef5394aeb0bafeb6fea6265feff929fbf4b6a451adc030542d9b"; - name = "konqueror-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/konqueror-19.12.3.tar.xz"; + sha256 = "0f2b31a1dae1740839232bd646bf22d7cb57e34995584b9a96271ebcb0da7f0e"; + name = "konqueror-19.12.3.tar.xz"; }; }; konquest = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/konquest-19.08.3.tar.xz"; - sha256 = "619a834341377475fed24485cf2c3f2ae68f1a8d6cea01b10e0a8408a7eef209"; - name = "konquest-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/konquest-19.12.3.tar.xz"; + sha256 = "e23732a7d78382c73fca0d31afb3ed85614ee4b4bfe2f07647a13582fa0811a5"; + name = "konquest-19.12.3.tar.xz"; }; }; konsole = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/konsole-19.08.3.tar.xz"; - sha256 = "2cc610109ff8ddc6efa6ea83f0153f4b1d72e4be65d8dbde9cfd526c257e7025"; - name = "konsole-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/konsole-19.12.3.tar.xz"; + sha256 = "0bde8eb6365c53e96489d0ceb05baa0bb0385ee865492622033164a4c4bfccdc"; + name = "konsole-19.12.3.tar.xz"; }; }; kontact = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kontact-19.08.3.tar.xz"; - sha256 = "2bc81b4c051856894d5405532e9663a59abf25bfed1cf0394ee24e219b4752d5"; - name = "kontact-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kontact-19.12.3.tar.xz"; + sha256 = "8dbd01f73c181f7b44df5dfffac1cf33c36b36149294fd854403bada9ef33052"; + name = "kontact-19.12.3.tar.xz"; }; }; kontactinterface = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kontactinterface-19.08.3.tar.xz"; - sha256 = "67827b27e46d381a207bcd6986b0285c0b7629ec9b93048e9503768662e211dc"; - name = "kontactinterface-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kontactinterface-19.12.3.tar.xz"; + sha256 = "1a0392cbeb6833f4834c86f202ff06e5b6069d12100bffe37de6427f0531af89"; + name = "kontactinterface-19.12.3.tar.xz"; }; }; kopete = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kopete-19.08.3.tar.xz"; - sha256 = "d4e407516754cdf66f447e4439f41080586af2ec30c07bd1c88712b089f21221"; - name = "kopete-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kopete-19.12.3.tar.xz"; + sha256 = "8d58fb0c9dd8b651bfc996e6928f7ccdad8e21cba39ffd0e54d46f7145fa7b27"; + name = "kopete-19.12.3.tar.xz"; }; }; korganizer = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/korganizer-19.08.3.tar.xz"; - sha256 = "b675b6c7a2a28a51bd377872c69795157825fd04fbef6dd4c97c33f659adadc7"; - name = "korganizer-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/korganizer-19.12.3.tar.xz"; + sha256 = "ea0a970aa510d5cdbbf80e974049fa3e7591e02c9ec2c4206137c49266df1acb"; + name = "korganizer-19.12.3.tar.xz"; }; }; kpat = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kpat-19.08.3.tar.xz"; - sha256 = "b1414eb0c04396468f40ea84fe71077b98476b4b76c0d3abb95ae4afd49e27a7"; - name = "kpat-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kpat-19.12.3.tar.xz"; + sha256 = "00b823b1b204b68e0c8671e5ddfe5f96abe8c9fcfb1efa9b7f70191cfa5384e1"; + name = "kpat-19.12.3.tar.xz"; }; }; kpimtextedit = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kpimtextedit-19.08.3.tar.xz"; - sha256 = "75ff2300e771a1fe02a19ef57e2a28489179a92dc184c924be495e878b4444ab"; - name = "kpimtextedit-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kpimtextedit-19.12.3.tar.xz"; + sha256 = "64be03d7a8d4b9ece40c0065a23113023c2b3320dc57068fe00f6c4bc72537d5"; + name = "kpimtextedit-19.12.3.tar.xz"; }; }; kpkpass = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kpkpass-19.08.3.tar.xz"; - sha256 = "6d70d3bcc949e83543ae7cf9d22280c270107bd9c9cb2882d6b37f6d036f5126"; - name = "kpkpass-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kpkpass-19.12.3.tar.xz"; + sha256 = "45723989170e86c6739c8a377c54b3ba7456a8dc3ed6cf52eef884074c2df189"; + name = "kpkpass-19.12.3.tar.xz"; }; }; kqtquickcharts = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kqtquickcharts-19.08.3.tar.xz"; - sha256 = "f1c54caccbcc97219f8666bdf97cfecdb008c532f1453f27a6971ca54ec5994f"; - name = "kqtquickcharts-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kqtquickcharts-19.12.3.tar.xz"; + sha256 = "94669a7add0cef9a1c0969a92ece8e60a67fbb0ff32826cc49ce87bd890c976c"; + name = "kqtquickcharts-19.12.3.tar.xz"; }; }; krdc = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/krdc-19.08.3.tar.xz"; - sha256 = "d4cbaebaa3cd56ef5ec728a1d09edf72e8dfc18174e59f954a5f7ec8494acfdc"; - name = "krdc-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/krdc-19.12.3.tar.xz"; + sha256 = "12602912abbc22e061067b6b5048d37a7cbdaaf99d203829d3f52fdf7319acce"; + name = "krdc-19.12.3.tar.xz"; }; }; kreversi = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kreversi-19.08.3.tar.xz"; - sha256 = "30f15e40e1347c7d746bfdef7dffc0a0a9aecef8a960c875b68fab255c43d82c"; - name = "kreversi-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kreversi-19.12.3.tar.xz"; + sha256 = "6bfe3a2faa7c0d08fb689b75341bfd5881d66bc865445573b2f4dbb316a751e8"; + name = "kreversi-19.12.3.tar.xz"; }; }; krfb = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/krfb-19.08.3.tar.xz"; - sha256 = "c708e10b909151dee362205af9db72946b9bbb86f3d87aaf2d2a9956a9242e1d"; - name = "krfb-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/krfb-19.12.3.tar.xz"; + sha256 = "cb88997dc7b15b992d1de5c5cabaeccb37122e20823501ac29140875259782ee"; + name = "krfb-19.12.3.tar.xz"; }; }; kross-interpreters = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kross-interpreters-19.08.3.tar.xz"; - sha256 = "525527db9e471a062c15b9b22b715dad2e164fb1b19580fc5b963cc7269ce5b5"; - name = "kross-interpreters-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kross-interpreters-19.12.3.tar.xz"; + sha256 = "2b4060494901a68ca1d07e0c345cc0814e11fb84e9f48014a7231021e4377487"; + name = "kross-interpreters-19.12.3.tar.xz"; }; }; kruler = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kruler-19.08.3.tar.xz"; - sha256 = "1825ec4b7f6a0ffc00f1ed09d2879a8d9925da49e62bad0a7484d4e90903df79"; - name = "kruler-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kruler-19.12.3.tar.xz"; + sha256 = "803a0d31bbb5bfbfa057b13a7f6bbf7630dcc1816a0d41ea13cc4592bdacaa47"; + name = "kruler-19.12.3.tar.xz"; }; }; kshisen = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kshisen-19.08.3.tar.xz"; - sha256 = "bae9f0ed77f7b1b33f21a53dc07481665f6acdb9daad71dd550512a710a905af"; - name = "kshisen-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kshisen-19.12.3.tar.xz"; + sha256 = "f6ce353725d71ce65269b1b7b3d118cb8555cd065db0d3b17fe4696d87c10601"; + name = "kshisen-19.12.3.tar.xz"; }; }; ksirk = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/ksirk-19.08.3.tar.xz"; - sha256 = "8ab94b45767e648341ead545a2b427c94ee0f71c8abbe7dbb6b85c28748f3cac"; - name = "ksirk-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/ksirk-19.12.3.tar.xz"; + sha256 = "6387d7a6320e644157f10b94474ca715e7ad7fd15cdf7156a8e7d94bff019dcb"; + name = "ksirk-19.12.3.tar.xz"; }; }; ksmtp = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/ksmtp-19.08.3.tar.xz"; - sha256 = "16b389a8dcb938ed3f1e2f4b10a5aa31c16eac8df89963a71c08af3e54ada8dd"; - name = "ksmtp-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/ksmtp-19.12.3.tar.xz"; + sha256 = "1fd69f494afee91c11667ddbba43bc6cc316b51acf5894fe4c3a2631f53fae27"; + name = "ksmtp-19.12.3.tar.xz"; }; }; ksnakeduel = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/ksnakeduel-19.08.3.tar.xz"; - sha256 = "d6361ce5a46d6e8ca4b5e674f31017a545245ddb907f33963afba2aeaecdf956"; - name = "ksnakeduel-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/ksnakeduel-19.12.3.tar.xz"; + sha256 = "8db1dece78571f3e6933f8edcd693c3ceb1035acff780547a72c98b9f7decb87"; + name = "ksnakeduel-19.12.3.tar.xz"; }; }; kspaceduel = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kspaceduel-19.08.3.tar.xz"; - sha256 = "88e25bc037034e3a22f4cea71729fc160d25bcefb978da00d3f7681841b4f7c2"; - name = "kspaceduel-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kspaceduel-19.12.3.tar.xz"; + sha256 = "a9b5dc498b3695b59ae8925cc572cfc521ccadc8532756fa95ac876a7423c444"; + name = "kspaceduel-19.12.3.tar.xz"; }; }; ksquares = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/ksquares-19.08.3.tar.xz"; - sha256 = "7e1798e6a306d6ef948035915bdb904ee9efb238dc5a04b4a747185d34856843"; - name = "ksquares-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/ksquares-19.12.3.tar.xz"; + sha256 = "45a922e4d85835cc655de560b6fd9be87d8cabc74eadbdecda3f17ba53ac92af"; + name = "ksquares-19.12.3.tar.xz"; }; }; ksudoku = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/ksudoku-19.08.3.tar.xz"; - sha256 = "82bf07385d131968ffd49a58404984fd506481158097aa063d954618d2679a65"; - name = "ksudoku-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/ksudoku-19.12.3.tar.xz"; + sha256 = "1cf36e762f31464b0640a88c739dfbb39b10129cace7fb5b74093ec607dea06c"; + name = "ksudoku-19.12.3.tar.xz"; }; }; ksystemlog = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/ksystemlog-19.08.3.tar.xz"; - sha256 = "97fca55ae5481d77628531482da99ece40cef2c81de633fe4c1e99206d17391d"; - name = "ksystemlog-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/ksystemlog-19.12.3.tar.xz"; + sha256 = "8225b1308ace76ebbf9bb805a2b6fae9bf8a425d0b09518645234c1b2df522dc"; + name = "ksystemlog-19.12.3.tar.xz"; }; }; kteatime = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kteatime-19.08.3.tar.xz"; - sha256 = "dbe96fdd20545dc5ebe8103aed878dbbca5e015a42827129485a32fdcbf0d592"; - name = "kteatime-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kteatime-19.12.3.tar.xz"; + sha256 = "0ab5fb6e33583e6d627b8f9dfaba5ce59e2b363e8045dfc66a4f65236d56542f"; + name = "kteatime-19.12.3.tar.xz"; }; }; ktimer = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/ktimer-19.08.3.tar.xz"; - sha256 = "d8c80c3929e21a0450574d2e05e2a2384978c70f812eaab25e32402fe3a2f6c5"; - name = "ktimer-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/ktimer-19.12.3.tar.xz"; + sha256 = "921af876a176a4731a74b5e9e76d751853043ec4f4857301b39a5c680246557c"; + name = "ktimer-19.12.3.tar.xz"; }; }; ktnef = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/ktnef-19.08.3.tar.xz"; - sha256 = "86ae57b54047f51d31292fb71f2410660dd5bf7ca54e847b78108c600884ee4d"; - name = "ktnef-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/ktnef-19.12.3.tar.xz"; + sha256 = "3537515b432e5da00d401046e94e0098fa54c071246cb0e357e3d8f47296ed3c"; + name = "ktnef-19.12.3.tar.xz"; }; }; ktouch = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/ktouch-19.08.3.tar.xz"; - sha256 = "8a288377a37f5afbd657c452c45628186646b27585a67312e35930a9fb581d37"; - name = "ktouch-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/ktouch-19.12.3.tar.xz"; + sha256 = "522fb081da5877717d577493fdaeeecbfe3d8d773e5d7fc83ecced008744ef0e"; + name = "ktouch-19.12.3.tar.xz"; }; }; ktp-accounts-kcm = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/ktp-accounts-kcm-19.08.3.tar.xz"; - sha256 = "79d2af8b3863d2f4fda51c0bc04b696648d297f2af33e09237b0eed9dd24509f"; - name = "ktp-accounts-kcm-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/ktp-accounts-kcm-19.12.3.tar.xz"; + sha256 = "ae5ae5004ecbf34596711a56e069d480c952de5ea784f5e90c391750439aff51"; + name = "ktp-accounts-kcm-19.12.3.tar.xz"; }; }; ktp-approver = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/ktp-approver-19.08.3.tar.xz"; - sha256 = "6051059761a1fe05ad696846a20752707ed6c9ce164aa551e86e3a5ddca4a65f"; - name = "ktp-approver-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/ktp-approver-19.12.3.tar.xz"; + sha256 = "af4f6d247b6332745f6b6dfacef74eb2ea0f7bbea9398080fc7b57e5953fdfbd"; + name = "ktp-approver-19.12.3.tar.xz"; }; }; ktp-auth-handler = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/ktp-auth-handler-19.08.3.tar.xz"; - sha256 = "6275ea746a28857cc77cc031a75a5f2278cf85dd1ef3c04e47006c4316975659"; - name = "ktp-auth-handler-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/ktp-auth-handler-19.12.3.tar.xz"; + sha256 = "40822e78879d97c3cc1d16f44f7d3b581980c4e249a273d7471b291adf3b9225"; + name = "ktp-auth-handler-19.12.3.tar.xz"; }; }; ktp-call-ui = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/ktp-call-ui-19.08.3.tar.xz"; - sha256 = "9245d11a28c2022ec98de6368d03ba8d9a53d8364d4f87efb142a0f843eea67d"; - name = "ktp-call-ui-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/ktp-call-ui-19.12.3.tar.xz"; + sha256 = "96b1dd64b0f87228d76f12b6cad3677afeb4c44d6f18645c3001555506573fb1"; + name = "ktp-call-ui-19.12.3.tar.xz"; }; }; ktp-common-internals = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/ktp-common-internals-19.08.3.tar.xz"; - sha256 = "7ec6466ebaa0f4acb7e38707b013989ef0a7d50bad5520d1a53fcf17b5ef5670"; - name = "ktp-common-internals-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/ktp-common-internals-19.12.3.tar.xz"; + sha256 = "48cde7fc4f2f0d39999f70699867044e0f85e06769a0824aac49c572fb1af5a4"; + name = "ktp-common-internals-19.12.3.tar.xz"; }; }; ktp-contact-list = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/ktp-contact-list-19.08.3.tar.xz"; - sha256 = "508085b52fff2e542ea28acb853f1cb3fcdf99d1f72ed99bc42991784fb2efd6"; - name = "ktp-contact-list-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/ktp-contact-list-19.12.3.tar.xz"; + sha256 = "093544e84ca12169966837be5f01d339ddc59e5f031d78e68ddf7be4dd890efd"; + name = "ktp-contact-list-19.12.3.tar.xz"; }; }; ktp-contact-runner = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/ktp-contact-runner-19.08.3.tar.xz"; - sha256 = "fe343560b80a4d9734f0160c8257fffe762801364e5dcbb9cf82edd6ded5683c"; - name = "ktp-contact-runner-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/ktp-contact-runner-19.12.3.tar.xz"; + sha256 = "50646e8670449d6f6a9b107e36f18174b5ec37052a7b4f471617f4f53fecc96b"; + name = "ktp-contact-runner-19.12.3.tar.xz"; }; }; ktp-desktop-applets = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/ktp-desktop-applets-19.08.3.tar.xz"; - sha256 = "318b6a8f40cbbd7a82a1ed55788f8832133ee8d5685182783a4c00e1b2e6fa2a"; - name = "ktp-desktop-applets-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/ktp-desktop-applets-19.12.3.tar.xz"; + sha256 = "4ab8f04537345db8e41ed9f8ff7a6a2f3135e3539382cef97d1a7e9f0eddb54e"; + name = "ktp-desktop-applets-19.12.3.tar.xz"; }; }; ktp-filetransfer-handler = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/ktp-filetransfer-handler-19.08.3.tar.xz"; - sha256 = "cdc90313da9a238197b69d0ebc11d8e4c6ce617063acbf2864d966aff6df1e94"; - name = "ktp-filetransfer-handler-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/ktp-filetransfer-handler-19.12.3.tar.xz"; + sha256 = "b2e81fec33b51628d9d88707b6bd844c69eb2c9bfb00cb0b45759a4fd9769b03"; + name = "ktp-filetransfer-handler-19.12.3.tar.xz"; }; }; ktp-kded-module = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/ktp-kded-module-19.08.3.tar.xz"; - sha256 = "c16d46035874460f98c4f59e04d50e197c1c70ae9b441dfeb53dd4b319e96d15"; - name = "ktp-kded-module-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/ktp-kded-module-19.12.3.tar.xz"; + sha256 = "6bb0c05683812738e254c88d39936565966096a7156111565d8a64a59c55ef0d"; + name = "ktp-kded-module-19.12.3.tar.xz"; }; }; ktp-send-file = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/ktp-send-file-19.08.3.tar.xz"; - sha256 = "db03d482f7bb101e1655262cd99d46e4a551141b8784bae67162d941fb13644f"; - name = "ktp-send-file-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/ktp-send-file-19.12.3.tar.xz"; + sha256 = "566d9dccc0c2fa7c23c95051c25543d3aabe76065ddff7dff9d8a37683d2022b"; + name = "ktp-send-file-19.12.3.tar.xz"; }; }; ktp-text-ui = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/ktp-text-ui-19.08.3.tar.xz"; - sha256 = "6779fad4ae6198ebf2e0759b53a8a0792bfca477df2c1f538bc00d1da281eae8"; - name = "ktp-text-ui-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/ktp-text-ui-19.12.3.tar.xz"; + sha256 = "b8ad9a224ae300c0412874d0877fdc8e050869d3a8f60a4051a0919a8749c50f"; + name = "ktp-text-ui-19.12.3.tar.xz"; }; }; ktuberling = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/ktuberling-19.08.3.tar.xz"; - sha256 = "5204b6eee57554e90d542dc4eca45fbbf0246f261fb1c231b53440c90d26aee1"; - name = "ktuberling-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/ktuberling-19.12.3.tar.xz"; + sha256 = "c4d74d18173d5761f7e6f8adf6178713a726c671aaa2eda4e6c77115484e9e55"; + name = "ktuberling-19.12.3.tar.xz"; }; }; kturtle = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kturtle-19.08.3.tar.xz"; - sha256 = "a622b22ea3b98666dbd32f6f6db2093b7f3859be52515b3bedc72684ef7780e7"; - name = "kturtle-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kturtle-19.12.3.tar.xz"; + sha256 = "6958a88c484261919cd89cb1f0d163b0c5d5f1e28b10b3b4e3b6b9e82e379ef1"; + name = "kturtle-19.12.3.tar.xz"; }; }; kubrick = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kubrick-19.08.3.tar.xz"; - sha256 = "fd11e0969ae08e42316044535008511b3fcae7752c7a86b2ae9ae24c94e44855"; - name = "kubrick-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kubrick-19.12.3.tar.xz"; + sha256 = "8fc0a0e68d255481c6efb3f4ff894c5e376367b29958c4738bd72d3f4b1ff557"; + name = "kubrick-19.12.3.tar.xz"; }; }; kwalletmanager = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kwalletmanager-19.08.3.tar.xz"; - sha256 = "00c1362d1454f4593e1f99847b97b3da99931c74ceafc3c3350337af0038b985"; - name = "kwalletmanager-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kwalletmanager-19.12.3.tar.xz"; + sha256 = "247c7f80a54babd21a13e6b9386370b72ec12bdf928c08a7e8a647ccca53e393"; + name = "kwalletmanager-19.12.3.tar.xz"; }; }; kwave = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kwave-19.08.3.tar.xz"; - sha256 = "bde8d2c3805b52bdcf0371c28e870d20fdfdd8b69831a9ba4e59ee9ae0a863ef"; - name = "kwave-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kwave-19.12.3.tar.xz"; + sha256 = "3c90115d4702dbe46767e2404c952d84533137fa558b787b87ff95ed61f6930d"; + name = "kwave-19.12.3.tar.xz"; }; }; kwordquiz = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/kwordquiz-19.08.3.tar.xz"; - sha256 = "9561e4817b5b273f74e7591d1ecb82db45140eea2ea36ab3e2f21d81faa1b66d"; - name = "kwordquiz-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/kwordquiz-19.12.3.tar.xz"; + sha256 = "6965a3b3c171c3f62aeecf4ccdddde14d23062ab914b1860822546a5770b80fc"; + name = "kwordquiz-19.12.3.tar.xz"; }; }; libgravatar = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/libgravatar-19.08.3.tar.xz"; - sha256 = "7f3421d1074065221e7ff892ba5f32614aef08b9ee407b5d8301e20f414bf8fb"; - name = "libgravatar-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/libgravatar-19.12.3.tar.xz"; + sha256 = "70ea306f48aede9f8f327eaa74ea5ce5761e5dfe67f2da50d3242c0f312edc86"; + name = "libgravatar-19.12.3.tar.xz"; }; }; libkcddb = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/libkcddb-19.08.3.tar.xz"; - sha256 = "56fe09cfab0455581057aa1681cec01777159a51af1871419cd1b5fb9d4e8ae6"; - name = "libkcddb-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/libkcddb-19.12.3.tar.xz"; + sha256 = "69cbaf03adba24c0cabf957ee4149c4fa86d403eb6b8a07f7f80eb17be49e892"; + name = "libkcddb-19.12.3.tar.xz"; }; }; libkcompactdisc = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/libkcompactdisc-19.08.3.tar.xz"; - sha256 = "912b885badf6aff6b0378fba993633c9fb5cf026dc6791e4cda0c4c27913f425"; - name = "libkcompactdisc-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/libkcompactdisc-19.12.3.tar.xz"; + sha256 = "74aac7dcac84c60a7962f23e7bcc6eb693048fd96ca21015441a87487baa9d1c"; + name = "libkcompactdisc-19.12.3.tar.xz"; }; }; libkdcraw = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/libkdcraw-19.08.3.tar.xz"; - sha256 = "7fe4ade52c2e1e1ec3074fe52ebfc8838193b50791f2f26256f04178015ef87e"; - name = "libkdcraw-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/libkdcraw-19.12.3.tar.xz"; + sha256 = "9454aed707ee311dbfb921f8d45fba11710ffc01f48d65f64585d12c2580116f"; + name = "libkdcraw-19.12.3.tar.xz"; }; }; libkdegames = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/libkdegames-19.08.3.tar.xz"; - sha256 = "019cdc0c702b8c9cacabc36ec2c81951e43ff80dbdfe527cba0dc5f5649dbb89"; - name = "libkdegames-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/libkdegames-19.12.3.tar.xz"; + sha256 = "39cf5039b7fe11688028df026252c9cd4424546817b5bb635af2558f71ba6b20"; + name = "libkdegames-19.12.3.tar.xz"; }; }; libkdepim = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/libkdepim-19.08.3.tar.xz"; - sha256 = "36c9457868fd98648a911304a485e8509689bfc280f9d4ad2631ba15f849b059"; - name = "libkdepim-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/libkdepim-19.12.3.tar.xz"; + sha256 = "911e7d174240d4c056472549dbd1f3da4467a57c765f3cb34fbac32943f38dbb"; + name = "libkdepim-19.12.3.tar.xz"; }; }; libkeduvocdocument = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/libkeduvocdocument-19.08.3.tar.xz"; - sha256 = "19d816ae3dd2395f53c8bc19a4d62dcd6fcec0bcebbc8ebfe32987afdb87ee14"; - name = "libkeduvocdocument-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/libkeduvocdocument-19.12.3.tar.xz"; + sha256 = "31594d30e03890507b25d676981164fd64258e69c6b264b85939118377eda964"; + name = "libkeduvocdocument-19.12.3.tar.xz"; }; }; libkexiv2 = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/libkexiv2-19.08.3.tar.xz"; - sha256 = "4c8a1acc4fe6c7105130ac93f5486ddbffb09921a9f34d3af418bd7e1695435e"; - name = "libkexiv2-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/libkexiv2-19.12.3.tar.xz"; + sha256 = "f5d0947f6b1ca0583d569990dc6f68bb01d8f7756a38bcc40b1e54f7814e4d4d"; + name = "libkexiv2-19.12.3.tar.xz"; }; }; libkgapi = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/libkgapi-19.08.3.tar.xz"; - sha256 = "085878396ae2a8bed7e9121d985de848c515992a3c6c989b9510125bc859e67c"; - name = "libkgapi-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/libkgapi-19.12.3.tar.xz"; + sha256 = "f52923c382272b47782348fbadb32902fbcd4652f4100875a745ba57033cf48a"; + name = "libkgapi-19.12.3.tar.xz"; }; }; libkgeomap = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/libkgeomap-19.08.3.tar.xz"; - sha256 = "858a6327fe45b67bd31e1f592412a30e0c0f64eb353279480f62b19e51df9576"; - name = "libkgeomap-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/libkgeomap-19.12.3.tar.xz"; + sha256 = "eb604deffe78cdcd4a8c7d888416246d0a17f2e3b7d80d6959e1412f03ab2755"; + name = "libkgeomap-19.12.3.tar.xz"; }; }; libkipi = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/libkipi-19.08.3.tar.xz"; - sha256 = "4b06a880a66eae18dc3ed7f4b39e877691c21d60af7603c7679ebcac5a0a7d4b"; - name = "libkipi-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/libkipi-19.12.3.tar.xz"; + sha256 = "3a57d07cd4fe8e118558d807242bf483fa2aac1bcf3dcdc29139636c2b280786"; + name = "libkipi-19.12.3.tar.xz"; }; }; libkleo = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/libkleo-19.08.3.tar.xz"; - sha256 = "5f1a3276646c786e8e25e6765d0f4e6b6ac0e4dccd094c1810b10a10e401576e"; - name = "libkleo-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/libkleo-19.12.3.tar.xz"; + sha256 = "1e715442a0c52ca561316abdce9662082f52ad9f3101ea01435a90984989a057"; + name = "libkleo-19.12.3.tar.xz"; }; }; libkmahjongg = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/libkmahjongg-19.08.3.tar.xz"; - sha256 = "fd7d036ba3b17246fad42e0366003233c42f5b03df881d6bc6886518c2acb165"; - name = "libkmahjongg-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/libkmahjongg-19.12.3.tar.xz"; + sha256 = "f8ea23952a576e6081052d10e9c967bebe5db017ad62775183f91236158cc19f"; + name = "libkmahjongg-19.12.3.tar.xz"; }; }; libkomparediff2 = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/libkomparediff2-19.08.3.tar.xz"; - sha256 = "a1ba5616fda806d5aedab3fb080bbcef5e13c04153fd9659d9d47f0a1a11125d"; - name = "libkomparediff2-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/libkomparediff2-19.12.3.tar.xz"; + sha256 = "aadc6e420e24bdebe203d4dfc76f5c23c8529be70ac057d89b516ab57b165094"; + name = "libkomparediff2-19.12.3.tar.xz"; }; }; libksane = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/libksane-19.08.3.tar.xz"; - sha256 = "97808ced0a0c6800c31fa8e810d2a00a3dbda410ed6691e114173b0412b94f93"; - name = "libksane-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/libksane-19.12.3.tar.xz"; + sha256 = "0aab855b8414041c37ddfbb9f0732272206af1c0844376f1370b9d2a907af71d"; + name = "libksane-19.12.3.tar.xz"; }; }; libksieve = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/libksieve-19.08.3.tar.xz"; - sha256 = "a10311192a57d1b7073d73477f5cefdf7c42d0a720d0eaf406986e4f1835ce60"; - name = "libksieve-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/libksieve-19.12.3.tar.xz"; + sha256 = "990e6a15e7e88120bf6c744fe6f1ac78184d6470318005f24634a70219f45002"; + name = "libksieve-19.12.3.tar.xz"; }; }; lokalize = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/lokalize-19.08.3.tar.xz"; - sha256 = "e25de54944ca32b32b4eeddd85e8ca9764a04de7c1d7a2d350d41cbda8105aef"; - name = "lokalize-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/lokalize-19.12.3.tar.xz"; + sha256 = "8015c994e974fd51c1c7f5903a005bbbc25f094656bdd44cd5e8675cd69cea92"; + name = "lokalize-19.12.3.tar.xz"; }; }; lskat = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/lskat-19.08.3.tar.xz"; - sha256 = "499334ffff57a46973caa4f8571b06ae482bccff9e17dcd9ba82ac7f448365e2"; - name = "lskat-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/lskat-19.12.3.tar.xz"; + sha256 = "5f13417ba9f6831a5f48c220a5c67a8d73787715b8b4aa433e6e356b7ac58776"; + name = "lskat-19.12.3.tar.xz"; }; }; mailcommon = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/mailcommon-19.08.3.tar.xz"; - sha256 = "55ccf161f40b3647f269f71309f9a2fcdf1e2327da53e96c3d8510fc664252bf"; - name = "mailcommon-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/mailcommon-19.12.3.tar.xz"; + sha256 = "d3999d290505b20aecbb4b14bec5af4d6a7db72d1f26f7a40b4aff231588c7e5"; + name = "mailcommon-19.12.3.tar.xz"; }; }; mailimporter = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/mailimporter-19.08.3.tar.xz"; - sha256 = "fbdfbfe093bb0af05d26492c0839a94ac0a5c0577081bd726626b943be7cb96e"; - name = "mailimporter-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/mailimporter-19.12.3.tar.xz"; + sha256 = "b81e8a5794aee24aa611c1a1912f93a308ce56c429ad4a72afe308e6b554c4a7"; + name = "mailimporter-19.12.3.tar.xz"; }; }; marble = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/marble-19.08.3.tar.xz"; - sha256 = "cd5d7f758d2234dc8e2fa638b9e1326461655e10dbe21910dbef029e80ef7a68"; - name = "marble-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/marble-19.12.3.tar.xz"; + sha256 = "73a2c5234f8a1728e2a97499166e7bbf8dfb2f48d10fe8cff96380631d064627"; + name = "marble-19.12.3.tar.xz"; }; }; mbox-importer = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/mbox-importer-19.08.3.tar.xz"; - sha256 = "77fadf4d2dc14830704135237fb7c5f0285204acb9822277944cc03f70b8dc3c"; - name = "mbox-importer-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/mbox-importer-19.12.3.tar.xz"; + sha256 = "62fb1490517e0a49bf823946c8b747062cb970dbe00281d459adda73596f0046"; + name = "mbox-importer-19.12.3.tar.xz"; }; }; messagelib = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/messagelib-19.08.3.tar.xz"; - sha256 = "db2e48e48d87922f9533ebd3eb021549e6bf8dea5828d83bfdfecb36b1426728"; - name = "messagelib-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/messagelib-19.12.3.tar.xz"; + sha256 = "5e776d5ea7b0cbb246b03cf2bfc84a65a959e7433a7f80b77a5f67cfa7c23ccb"; + name = "messagelib-19.12.3.tar.xz"; }; }; minuet = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/minuet-19.08.3.tar.xz"; - sha256 = "8af3e0b5fd17d7043499391273232a1649ea3dec5e69faab5a4dc4452080605c"; - name = "minuet-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/minuet-19.12.3.tar.xz"; + sha256 = "740a3704004336f08c0fde148257c1562254b4e706704ec7eb2149fb3d7b6b9b"; + name = "minuet-19.12.3.tar.xz"; }; }; okular = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/okular-19.08.3.tar.xz"; - sha256 = "cea30fe0c2c2b8394e76efe5c945eab1cc9619097291bd9236794b42b09523e5"; - name = "okular-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/okular-19.12.3.tar.xz"; + sha256 = "c5de22cc4292e3b7adae3f6ef6566dcba33a1dd5995fb0b968ea3e705a4c04e0"; + name = "okular-19.12.3.tar.xz"; }; }; palapeli = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/palapeli-19.08.3.tar.xz"; - sha256 = "fc8e4ddd92def4998a0e8b11bc0a45671e5b07e065313aec135e74c056f321bd"; - name = "palapeli-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/palapeli-19.12.3.tar.xz"; + sha256 = "6989bbc94ed955f6990d40bccbc0c38768898bf2ccb8163c45119517340b723d"; + name = "palapeli-19.12.3.tar.xz"; }; }; parley = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/parley-19.08.3.tar.xz"; - sha256 = "a3d11ddf5a6c8244e5a22c10f6e256ad8bd857802d994550549c7f73f8ed8da8"; - name = "parley-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/parley-19.12.3.tar.xz"; + sha256 = "ebf9fdec981abca988d83d8a77e921e7ce871eb010b6cf4ea9065ee6d45f5089"; + name = "parley-19.12.3.tar.xz"; }; }; picmi = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/picmi-19.08.3.tar.xz"; - sha256 = "6ed444d40a388e5c1f5f7bda24d35fa119fa5b5ee488def02321f14476bd357d"; - name = "picmi-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/picmi-19.12.3.tar.xz"; + sha256 = "04a69125fc76b1fcd58d873452e4a4e642ee9ee672cdb7656214d8cd854fc178"; + name = "picmi-19.12.3.tar.xz"; }; }; pimcommon = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/pimcommon-19.08.3.tar.xz"; - sha256 = "76a67c28db71e1187fa192f0e1a07279c690dea313a2a376b2d21b82ab0784ca"; - name = "pimcommon-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/pimcommon-19.12.3.tar.xz"; + sha256 = "443e2915eb42a4f56f1ddf47785ceeceb4ca1e0384ff48bc93fc4a7756392766"; + name = "pimcommon-19.12.3.tar.xz"; }; }; pim-data-exporter = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/pim-data-exporter-19.08.3.tar.xz"; - sha256 = "f89b6588822dd5501e1b93ed3abd9b822725944246ab834777ed0f91f5ab6b91"; - name = "pim-data-exporter-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/pim-data-exporter-19.12.3.tar.xz"; + sha256 = "8e9961fcc4f1ed0305d589e3a417f8924657d89d798a77c53956d73f6bf19938"; + name = "pim-data-exporter-19.12.3.tar.xz"; }; }; pim-sieve-editor = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/pim-sieve-editor-19.08.3.tar.xz"; - sha256 = "5e8aa5d71ea923baf4376986db77b6dee16d6e281caf22855e97cfeebfb4c1fe"; - name = "pim-sieve-editor-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/pim-sieve-editor-19.12.3.tar.xz"; + sha256 = "641ea56304df079a80e098fb253c173b63266990856f8795af093c144c3883ae"; + name = "pim-sieve-editor-19.12.3.tar.xz"; }; }; poxml = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/poxml-19.08.3.tar.xz"; - sha256 = "be5feaf46d424a4a4edc5936924f9a8a6d1d5467ecedd0e415aa88e2c3170502"; - name = "poxml-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/poxml-19.12.3.tar.xz"; + sha256 = "190178290ce18fe3a684c22d650843f3008a6e31ebbab8fff25491c58b21e276"; + name = "poxml-19.12.3.tar.xz"; }; }; print-manager = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/print-manager-19.08.3.tar.xz"; - sha256 = "c6420dfa711fc68a6d681d27521eac3c9f1060e57f048594b43f2941a78320ee"; - name = "print-manager-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/print-manager-19.12.3.tar.xz"; + sha256 = "74c13802a65136539b4542fec10fb248149a3324e8060e947a8f305ce665269a"; + name = "print-manager-19.12.3.tar.xz"; }; }; rocs = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/rocs-19.08.3.tar.xz"; - sha256 = "533ab2f17160c402550479d7d3be9132b49e1d745c021c7735f0687d12236c8e"; - name = "rocs-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/rocs-19.12.3.tar.xz"; + sha256 = "f834e69e676913e364162906b79da5a75a6043f4a5c8506954d1630abda45e3c"; + name = "rocs-19.12.3.tar.xz"; }; }; signon-kwallet-extension = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/signon-kwallet-extension-19.08.3.tar.xz"; - sha256 = "273ff874bf08dd97a12b3b07215bc0ce9fd3c3c59b6bb1f61000411454211a65"; - name = "signon-kwallet-extension-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/signon-kwallet-extension-19.12.3.tar.xz"; + sha256 = "46199be023bad630b769b14c2c0a63feff2949da944c76780b1ebd9a50ee3daa"; + name = "signon-kwallet-extension-19.12.3.tar.xz"; }; }; spectacle = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/spectacle-19.08.3.tar.xz"; - sha256 = "3717b7ebd314cac47c263c304c54c14b0115b15cfa4b87201f5ea27a2f4e9b8a"; - name = "spectacle-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/spectacle-19.12.3.tar.xz"; + sha256 = "443f114dab1fb50e7e12a046fdf06c0456bf99a3abdf09dce05605fdf7d3de81"; + name = "spectacle-19.12.3.tar.xz"; }; }; step = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/step-19.08.3.tar.xz"; - sha256 = "1197b38d9ef14305cf341eba4cd2df08695a9b3f53e2bebff8abb7cbd7a9e2aa"; - name = "step-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/step-19.12.3.tar.xz"; + sha256 = "0eb62c87553769e009daa02406b1d95742c946bdffe0d22327776ec558e7584b"; + name = "step-19.12.3.tar.xz"; }; }; svgpart = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/svgpart-19.08.3.tar.xz"; - sha256 = "1ad667fc6988b64fd379cfb79d00a7c04c97de530e4b61a9ae8a525971ea2a94"; - name = "svgpart-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/svgpart-19.12.3.tar.xz"; + sha256 = "942d877a516d8407ef2782d7c6869ab688274fee6cde9b23ab1061bcbddf2cc9"; + name = "svgpart-19.12.3.tar.xz"; }; }; sweeper = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/sweeper-19.08.3.tar.xz"; - sha256 = "0451b9319c4390cfae497922cc135d7d8c4ef74ac81f2c05d2f94458bb3fc8be"; - name = "sweeper-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/sweeper-19.12.3.tar.xz"; + sha256 = "cf89cfba61c9eeda9b4e7921c21a23e7d9a110b134ab6fbd127c37d036bd0517"; + name = "sweeper-19.12.3.tar.xz"; }; }; umbrello = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/umbrello-19.08.3.tar.xz"; - sha256 = "c4c56354d2765c0d03ffda02cc098cc3e9d72b0c7c22bb0c1cc03dcf5ac31a6a"; - name = "umbrello-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/umbrello-19.12.3.tar.xz"; + sha256 = "b2f769c7bd1cc259170b62c68d2dca05b4a143dd1048dbb507cf2bbb3020a193"; + name = "umbrello-19.12.3.tar.xz"; }; }; yakuake = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/yakuake-19.08.3.tar.xz"; - sha256 = "1ad2cc026eea9449690aa037ac94b09cd18696d71025204e648501fa7f2cfbaf"; - name = "yakuake-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/yakuake-19.12.3.tar.xz"; + sha256 = "0e4f16eaf155750b0c35f1f8f1a625909f386f3359b9f23bf4e7c2f9045384e3"; + name = "yakuake-19.12.3.tar.xz"; }; }; zeroconf-ioslave = { - version = "19.08.3"; + version = "19.12.3"; src = fetchurl { - url = "${mirror}/stable/applications/19.08.3/src/zeroconf-ioslave-19.08.3.tar.xz"; - sha256 = "b7b00edcc987c298e1dc885e3ceb6acbcbfe40141423d90406a3ccecef2471ed"; - name = "zeroconf-ioslave-19.08.3.tar.xz"; + url = "${mirror}/stable/release-service/19.12.3/src/zeroconf-ioslave-19.12.3.tar.xz"; + sha256 = "c9b2146030a9845b8164f5784d1c6fcc198b6cfe0e23f6a91edf78d093e4368f"; + name = "zeroconf-ioslave-19.12.3.tar.xz"; }; }; } diff --git a/pkgs/applications/kde/yakuake.nix b/pkgs/applications/kde/yakuake.nix index 6f9c8df3001..cb7f7070b24 100644 --- a/pkgs/applications/kde/yakuake.nix +++ b/pkgs/applications/kde/yakuake.nix @@ -24,7 +24,7 @@ mkDerivation { ]; meta = { - homepage = https://yakuake.kde.org; + homepage = "https://yakuake.kde.org"; description = "Quad-style terminal emulator for KDE"; maintainers = with lib.maintainers; [ fridh ]; license = lib.licenses.gpl2; diff --git a/pkgs/applications/misc/1password/default.nix b/pkgs/applications/misc/1password/default.nix index 1c409c232a8..b27569a8a30 100644 --- a/pkgs/applications/misc/1password/default.nix +++ b/pkgs/applications/misc/1password/default.nix @@ -1,42 +1,45 @@ -{ stdenv, fetchzip }: +{ stdenv, fetchzip, autoPatchelfHook, fetchurl, xar, cpio }: stdenv.mkDerivation rec { pname = "1password"; - version = "0.7.0"; + version = "0.9.4"; src = if stdenv.hostPlatform.system == "i686-linux" then fetchzip { url = "https://cache.agilebits.com/dist/1P/op/pkg/v${version}/op_linux_386_v${version}.zip"; - sha256 = "1lhp0ws543855rvpvh84rjvyi471259lg618cciqj8j6k04ls1g0"; + sha256 = "0hgvcm42035fs2qhhvycppcrqgya98rmkk347j3hyj1m6kqxi99c"; stripRoot = false; } else if stdenv.hostPlatform.system == "x86_64-linux" then fetchzip { url = "https://cache.agilebits.com/dist/1P/op/pkg/v${version}/op_linux_amd64_v${version}.zip"; - sha256 = "1sjv5qrc80fk9yz0cn2yj0cdm47ab3ch8n9hzj9hv9d64gjv4w8n"; + sha256 = "1fvl078kgpvzjr3jfp8zbajzsiwrcm33b7lqksxgcy30paqw6737"; stripRoot = false; } else if stdenv.hostPlatform.system == "x86_64-darwin" then - fetchzip { - url = "https://cache.agilebits.com/dist/1P/op/pkg/v${version}/op_darwin_amd64_v${version}.zip"; - sha256 = "1hnixmq7mrc6ky79k3s61vv89v4qhkm31kyni3rscibfrab0r8ir"; - stripRoot = false; + fetchurl { + url = "https://cache.agilebits.com/dist/1P/op/pkg/v${version}/op_darwin_amd64_v${version}.pkg"; + sha256 = "0fzbfxsgf0s93kg647zla9n9k5adnfb57dcwwnibs6lq5k63h8mj"; } else throw "Architecture not supported"; + buildInputs = stdenv.lib.optionals stdenv.isDarwin [ xar cpio ]; + + unpackPhase = stdenv.lib.optionalString stdenv.isDarwin '' + xar -xf $src + zcat Payload | cpio -i + ''; + installPhase = '' install -D op $out/bin/op ''; - postFixup = stdenv.lib.optionalString stdenv.isLinux '' - patchelf \ - --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \ - $out/bin/op - ''; + + nativeBuildInputs = stdenv.lib.optionals stdenv.isLinux [ autoPatchelfHook ]; meta = with stdenv.lib; { description = "1Password command-line tool"; - homepage = https://support.1password.com/command-line/; - downloadPage = https://app-updates.agilebits.com/product_history/CLI; + homepage = "https://support.1password.com/command-line/"; + downloadPage = "https://app-updates.agilebits.com/product_history/CLI"; maintainers = with maintainers; [ joelburget marsam ]; license = licenses.unfree; platforms = [ "i686-linux" "x86_64-linux" "x86_64-darwin" ]; diff --git a/pkgs/applications/misc/abook/default.nix b/pkgs/applications/misc/abook/default.nix index f87bd4c11ec..4c03b197b4a 100644 --- a/pkgs/applications/misc/abook/default.nix +++ b/pkgs/applications/misc/abook/default.nix @@ -20,7 +20,7 @@ stdenv.mkDerivation rec { buildInputs = [ ncurses readline ]; meta = { - homepage = http://abook.sourceforge.net/; + homepage = "http://abook.sourceforge.net/"; description = "Text-based addressbook program designed to use with mutt mail client"; license = stdenv.lib.licenses.gpl2; maintainers = [ stdenv.lib.maintainers.edwtjo ]; diff --git a/pkgs/applications/misc/adobe-reader/default.nix b/pkgs/applications/misc/adobe-reader/default.nix index d1e4856e052..b67e514ce54 100644 --- a/pkgs/applications/misc/adobe-reader/default.nix +++ b/pkgs/applications/misc/adobe-reader/default.nix @@ -26,7 +26,7 @@ stdenv.mkDerivation { meta = { description = "Adobe Reader, a viewer for PDF documents"; - homepage = http://www.adobe.com/products/reader; + homepage = "http://www.adobe.com/products/reader"; license = stdenv.lib.licenses.unfree; }; } diff --git a/pkgs/applications/misc/airtame/default.nix b/pkgs/applications/misc/airtame/default.nix index 465c72d73f5..043f1c86bd1 100644 --- a/pkgs/applications/misc/airtame/default.nix +++ b/pkgs/applications/misc/airtame/default.nix @@ -70,7 +70,7 @@ in stdenv.mkDerivation rec { dontPatchELF = true; meta = with stdenv.lib; { - homepage = https://airtame.com/download; + homepage = "https://airtame.com/download"; description = "Wireless streaming client for Airtame devices"; license = licenses.unfree; maintainers = with maintainers; [ thanegill ]; diff --git a/pkgs/applications/misc/alacritty/default.nix b/pkgs/applications/misc/alacritty/default.nix index 4b4148bdc63..b6248b8f6f1 100644 --- a/pkgs/applications/misc/alacritty/default.nix +++ b/pkgs/applications/misc/alacritty/default.nix @@ -1,39 +1,38 @@ -{ stdenv, - lib, - fetchFromGitHub, - rustPlatform, +{ stdenv +, lib +, fetchFromGitHub +, rustPlatform - cmake, - gzip, - makeWrapper, - ncurses, - pkgconfig, - python3, +, cmake +, gzip +, installShellFiles +, makeWrapper +, ncurses +, pkgconfig +, python3 - expat, - fontconfig, - freetype, - libGL, - libX11, - libXcursor, - libXi, - libXrandr, - libXxf86vm, - libxcb, - libxkbcommon, - wayland, - xdg_utils, +, expat +, fontconfig +, freetype +, libGL +, libX11 +, libXcursor +, libXi +, libXrandr +, libXxf86vm +, libxcb +, libxkbcommon +, wayland +, xdg_utils # Darwin Frameworks - AppKit, - CoreGraphics, - CoreServices, - CoreText, - Foundation, - OpenGL }: - -with rustPlatform; - +, AppKit +, CoreGraphics +, CoreServices +, CoreText +, Foundation +, OpenGL +}: let rpathLibs = [ expat @@ -50,22 +49,24 @@ let libxkbcommon wayland ]; -in buildRustPackage rec { +in +rustPlatform.buildRustPackage rec { pname = "alacritty"; - version = "0.4.0"; + version = "0.4.2"; src = fetchFromGitHub { - owner = "jwilm"; + owner = "alacritty"; repo = pname; rev = "v${version}"; - sha256 = "0adaqdbma6gskb2g14yscrgr9gch5wf2g2clchplv72c2qr1k427"; + sha256 = "133d8vm7ihlvgw8n1jghhh35h664h0f52h6gci54f11vl6c1spws"; }; - cargoSha256 = "1r267g8f986nxh8ms5yhp50qy1yl8gly2jr78p738qqc6frlxlhv"; + cargoSha256 = "07gq63qd11zz229b8jp9wqggz39qfpzd223z1zk1xch7rhqq0pn4"; nativeBuildInputs = [ cmake gzip + installShellFiles makeWrapper ncurses pkgconfig @@ -73,10 +74,22 @@ in buildRustPackage rec { ]; buildInputs = rpathLibs - ++ lib.optionals stdenv.isDarwin [ AppKit CoreGraphics CoreServices CoreText Foundation OpenGL ]; + ++ lib.optionals stdenv.isDarwin [ + AppKit + CoreGraphics + CoreServices + CoreText + Foundation + OpenGL + ]; outputs = [ "out" "terminfo" ]; + postPatch = '' + substituteInPlace alacritty/src/config/mouse.rs \ + --replace xdg-open ${xdg_utils}/bin/xdg-open + ''; + postBuild = lib.optionalString stdenv.isDarwin "make app"; installPhase = '' @@ -84,24 +97,26 @@ in buildRustPackage rec { install -D target/release/alacritty $out/bin/alacritty - '' + (if stdenv.isDarwin then '' - mkdir $out/Applications - cp -r target/release/osx/Alacritty.app $out/Applications/Alacritty.app - '' else '' - install -D extra/linux/alacritty.desktop -t $out/share/applications/ - install -D extra/logo/alacritty-term.svg $out/share/icons/hicolor/scalable/apps/Alacritty.svg - patchelf --set-rpath "${stdenv.lib.makeLibraryPath rpathLibs}" $out/bin/alacritty - '') + '' + '' + ( + if stdenv.isDarwin then '' + mkdir $out/Applications + cp -r target/release/osx/Alacritty.app $out/Applications/Alacritty.app + '' else '' + install -D extra/linux/Alacritty.desktop -t $out/share/applications/ + install -D extra/logo/alacritty-term.svg $out/share/icons/hicolor/scalable/apps/Alacritty.svg + patchelf --set-rpath "${lib.makeLibraryPath rpathLibs}" $out/bin/alacritty + '' + ) + '' - install -D extra/completions/_alacritty -t "$out/share/zsh/site-functions/" - install -D extra/completions/alacritty.bash -t "$out/etc/bash_completion.d/" - install -D extra/completions/alacritty.fish -t "$out/share/fish/vendor_completions.d/" + installShellCompletion --zsh extra/completions/_alacritty + installShellCompletion --bash extra/completions/alacritty.bash + installShellCompletion --fish extra/completions/alacritty.fish install -dm 755 "$out/share/man/man1" gzip -c extra/alacritty.man > "$out/share/man/man1/alacritty.1.gz" install -dm 755 "$terminfo/share/terminfo/a/" - tic -x -o "$terminfo/share/terminfo" extra/alacritty.info + tic -xe alacritty,alacritty-direct -o "$terminfo/share/terminfo" extra/alacritty.info mkdir -p $out/nix-support echo "$terminfo" >> $out/nix-support/propagated-user-env-packages @@ -110,11 +125,11 @@ in buildRustPackage rec { dontPatchELF = true; - meta = with stdenv.lib; { - description = "GPU-accelerated terminal emulator"; - homepage = https://github.com/jwilm/alacritty; - license = with licenses; [ asl20 ]; - maintainers = with maintainers; [ filalex77 mic92 ]; - platforms = [ "x86_64-linux" "i686-linux" "x86_64-darwin" "aarch64-linux" ]; + meta = with lib; { + description = "A cross-platform, GPU-accelerated terminal emulator"; + homepage = "https://github.com/alacritty/alacritty"; + license = licenses.asl20; + maintainers = with maintainers; [ filalex77 mic92 cole-h ]; + platforms = platforms.unix; }; } diff --git a/pkgs/applications/misc/albert/default.nix b/pkgs/applications/misc/albert/default.nix index 6fc5f951465..5c43d717913 100644 --- a/pkgs/applications/misc/albert/default.nix +++ b/pkgs/applications/misc/albert/default.nix @@ -38,7 +38,7 @@ mkDerivation rec { ''; meta = with lib; { - homepage = https://albertlauncher.github.io/; + homepage = "https://albertlauncher.github.io/"; description = "Desktop agnostic launcher"; license = licenses.gpl3Plus; maintainers = with maintainers; [ ericsagnes synthetica ]; diff --git a/pkgs/applications/misc/almanah/default.nix b/pkgs/applications/misc/almanah/default.nix index 06321d9d621..f554d36a0c6 100644 --- a/pkgs/applications/misc/almanah/default.nix +++ b/pkgs/applications/misc/almanah/default.nix @@ -64,9 +64,9 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Small GTK application to allow to keep a diary of your life"; - homepage = https://wiki.gnome.org/Apps/Almanah_Diary; + homepage = "https://wiki.gnome.org/Apps/Almanah_Diary"; license = licenses.gpl3Plus; platforms = platforms.unix; - maintainers = gnome3.maintainers; + maintainers = teams.gnome.members; }; } diff --git a/pkgs/applications/misc/aminal/default.nix b/pkgs/applications/misc/aminal/default.nix index 8c5aded5ed9..dff6b15494b 100644 --- a/pkgs/applications/misc/aminal/default.nix +++ b/pkgs/applications/misc/aminal/default.nix @@ -61,7 +61,7 @@ buildGoPackage rec { - Built-in patched fonts for powerline - Retina display support ''; - homepage = https://github.com/liamg/aminal; + homepage = "https://github.com/liamg/aminal"; license = licenses.gpl3; maintainers = with maintainers; [ kalbasit ]; platforms = platforms.linux ++ platforms.darwin; diff --git a/pkgs/applications/misc/antfs-cli/default.nix b/pkgs/applications/misc/antfs-cli/default.nix index 8108b9e4ddb..49da252b6c0 100644 --- a/pkgs/applications/misc/antfs-cli/default.nix +++ b/pkgs/applications/misc/antfs-cli/default.nix @@ -5,7 +5,7 @@ python3Packages.buildPythonApplication { version = "unstable-2017-02-11"; meta = with stdenv.lib; { - homepage = https://github.com/Tigge/antfs-cli; + homepage = "https://github.com/Tigge/antfs-cli"; description = "Extracts FIT files from ANT-FS based sport watches"; license = licenses.mit; platforms = platforms.linux; diff --git a/pkgs/applications/misc/appeditor/default.nix b/pkgs/applications/misc/appeditor/default.nix index 68cd91c1676..d5d37ae27c9 100644 --- a/pkgs/applications/misc/appeditor/default.nix +++ b/pkgs/applications/misc/appeditor/default.nix @@ -50,9 +50,15 @@ stdenv.mkDerivation rec { patchShebangs meson/post_install.py ''; + passthru = { + updateScript = pantheon.updateScript { + attrPath = pname; + }; + }; + meta = with stdenv.lib; { description = "Edit the Pantheon desktop application menu"; - homepage = https://github.com/donadigo/appeditor; + homepage = "https://github.com/donadigo/appeditor"; maintainers = with maintainers; [ kjuvi ] ++ pantheon.maintainers; platforms = platforms.linux; license = licenses.gpl3; diff --git a/pkgs/applications/misc/apvlv/default.nix b/pkgs/applications/misc/apvlv/default.nix index b5af1af91f3..48efafa74fc 100644 --- a/pkgs/applications/misc/apvlv/default.nix +++ b/pkgs/applications/misc/apvlv/default.nix @@ -59,7 +59,7 @@ stdenv.mkDerivation rec { ''; meta = with stdenv.lib; { - homepage = http://naihe2010.github.io/apvlv/; + homepage = "http://naihe2010.github.io/apvlv/"; description = "PDF viewer with Vim-like behaviour"; longDescription = '' apvlv is a PDF/DJVU/UMD/TXT Viewer Under Linux/WIN32 diff --git a/pkgs/applications/misc/archiver/default.nix b/pkgs/applications/misc/archiver/default.nix index 03f534e1a4d..64b592b7871 100644 --- a/pkgs/applications/misc/archiver/default.nix +++ b/pkgs/applications/misc/archiver/default.nix @@ -5,16 +5,16 @@ buildGoModule rec { pname = "archiver"; - version = "3.2.0"; + version = "3.3.0"; src = fetchFromGitHub { owner = "mholt"; repo = pname; rev = "v${version}"; - sha256 = "1kq2cyhbniwdabk426j493cs8d4nj35vmznm9031rrdd9ln5h9gl"; + sha256 = "1yr2jhidqvbwh1y08lpqaidwpr5yx3bhvznm5fc9pk64s7z5kq3h"; }; - modSha256 = "13vwgqpw7ypq6mrvwmnl8n38x0h89ymryrrzkf7ya478fp00vclj"; + modSha256 = "1mrfqhd0zb78rlqlj2ncb0srwjfl7rzhy2p9mwa82pgysvlp08gv"; meta = with lib; { description = "Easily create & extract archives, and compress & decompress files of various formats"; diff --git a/pkgs/applications/misc/artha/default.nix b/pkgs/applications/misc/artha/default.nix index b03d2aa208b..648a2cfd994 100644 --- a/pkgs/applications/misc/artha/default.nix +++ b/pkgs/applications/misc/artha/default.nix @@ -18,7 +18,7 @@ stdenv.mkDerivation { meta = with stdenv.lib; { description = "An offline thesaurus based on WordNet"; - homepage = http://artha.sourceforge.net; + homepage = "http://artha.sourceforge.net"; license = licenses.gpl2; maintainers = [ maintainers.goibhniu ]; platforms = platforms.linux; diff --git a/pkgs/applications/misc/asciiquarium/default.nix b/pkgs/applications/misc/asciiquarium/default.nix index 0e524ede091..592c0938ffb 100644 --- a/pkgs/applications/misc/asciiquarium/default.nix +++ b/pkgs/applications/misc/asciiquarium/default.nix @@ -22,7 +22,7 @@ in stdenv.mkDerivation { meta = with stdenv.lib; { description = "Enjoy the mysteries of the sea from the safety of your own terminal!"; - homepage = https://robobunny.com/projects/asciiquarium/html/; + homepage = "https://robobunny.com/projects/asciiquarium/html/"; license = licenses.gpl2; platforms = platforms.unix; maintainers = [ maintainers.utdemir ]; diff --git a/pkgs/applications/misc/audio/sox/default.nix b/pkgs/applications/misc/audio/sox/default.nix index 622e7169fae..32ea821b22d 100644 --- a/pkgs/applications/misc/audio/sox/default.nix +++ b/pkgs/applications/misc/audio/sox/default.nix @@ -42,7 +42,7 @@ stdenv.mkDerivation rec { meta = { description = "Sample Rate Converter for audio"; - homepage = http://sox.sourceforge.net/; + homepage = "http://sox.sourceforge.net/"; maintainers = [ lib.maintainers.marcweber ]; license = if enableAMR then lib.licenses.unfree else lib.licenses.gpl2Plus; platforms = lib.platforms.linux ++ lib.platforms.darwin; diff --git a/pkgs/applications/misc/audio/soxr/default.nix b/pkgs/applications/misc/audio/soxr/default.nix index 7c4e6ff8c3d..59c7154fa7d 100644 --- a/pkgs/applications/misc/audio/soxr/default.nix +++ b/pkgs/applications/misc/audio/soxr/default.nix @@ -11,16 +11,16 @@ stdenv.mkDerivation rec { outputs = [ "out" "doc" ]; # headers are just two and very small preConfigure = if stdenv.isDarwin then '' - export DYLD_LIBRARY_PATH="$DYLD_LIBRARY_PATH:"`pwd`/build/src + export DYLD_LIBRARY_PATH="$DYLD_LIBRARY_PATH''${DYLD_LIBRARY_PATH:+:}"`pwd`/build/src '' else '' - export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:"`pwd`/build/src + export LD_LIBRARY_PATH="$LD_LIBRARY_PATH''${LD_LIBRARY_PATH:+:}"`pwd`/build/src ''; nativeBuildInputs = [ cmake ]; meta = { description = "An audio resampling library"; - homepage = http://soxr.sourceforge.net; + homepage = "http://soxr.sourceforge.net"; license = stdenv.lib.licenses.lgpl21Plus; platforms = stdenv.lib.platforms.unix; }; diff --git a/pkgs/applications/misc/audio/wavesurfer/default.nix b/pkgs/applications/misc/audio/wavesurfer/default.nix index 0add5ed78cc..0ca01c8d2ae 100644 --- a/pkgs/applications/misc/audio/wavesurfer/default.nix +++ b/pkgs/applications/misc/audio/wavesurfer/default.nix @@ -4,7 +4,7 @@ stdenv.mkDerivation { name = "wavesurfer-1.8.5"; src = fetchurl { - url = https://www.speech.kth.se/wavesurfer/wavesurfer-1.8.5.tar.gz; + url = "https://www.speech.kth.se/wavesurfer/wavesurfer-1.8.5.tar.gz"; sha256 = "1yx9s1j47cq0v40cwq2gn7bdizpw46l95ba4zl9z4gg31mfvm807"; }; @@ -22,7 +22,7 @@ stdenv.mkDerivation { meta = { description = "Tool for recording, playing, editing, viewing and labeling of audio"; - homepage = http://www.speech.kth.se/wavesurfer/; + homepage = "http://www.speech.kth.se/wavesurfer/"; license = "BSD"; }; } diff --git a/pkgs/applications/misc/audio/wavrsocvt/default.nix b/pkgs/applications/misc/audio/wavrsocvt/default.nix index 09b75e27d46..ebb04a30ab8 100644 --- a/pkgs/applications/misc/audio/wavrsocvt/default.nix +++ b/pkgs/applications/misc/audio/wavrsocvt/default.nix @@ -30,7 +30,7 @@ stdenv.mkDerivation { supported sample rates in the standard NXT firmware). You can then upload these with e.g. nxt-python. ''; - homepage = http://bricxcc.sourceforge.net/; + homepage = "http://bricxcc.sourceforge.net/"; license = licenses.mpl11; maintainers = with maintainers; [ leenaars ]; platforms = with platforms; linux; diff --git a/pkgs/applications/misc/autospotting/default.nix b/pkgs/applications/misc/autospotting/default.nix index b00686fb24f..a33261e7a59 100644 --- a/pkgs/applications/misc/autospotting/default.nix +++ b/pkgs/applications/misc/autospotting/default.nix @@ -20,7 +20,7 @@ buildGoPackage { ''; meta = with stdenv.lib; { - homepage = https://github.com/AutoSpotting/AutoSpotting; + homepage = "https://github.com/AutoSpotting/AutoSpotting"; description = "Automatically convert your existing AutoScaling groups to up to 90% cheaper spot instances with minimal configuration changes"; license = licenses.free; maintainers = [ maintainers.costrouc ]; diff --git a/pkgs/applications/misc/avrdudess/default.nix b/pkgs/applications/misc/avrdudess/default.nix index 165bee76b69..f4a56e4f924 100644 --- a/pkgs/applications/misc/avrdudess/default.nix +++ b/pkgs/applications/misc/avrdudess/default.nix @@ -34,7 +34,7 @@ stdenv.mkDerivation { meta = with stdenv.lib; { description = "GUI for AVRDUDE (AVR microcontroller programmer)"; - homepage = https://github.com/zkemble/AVRDUDESS; + homepage = "https://github.com/zkemble/AVRDUDESS"; license = licenses.gpl3; platforms = platforms.linux; maintainers = [ maintainers.bjornfor ]; diff --git a/pkgs/applications/misc/barrier/default.nix b/pkgs/applications/misc/barrier/default.nix index 10e46176c6e..28b65d2b58b 100644 --- a/pkgs/applications/misc/barrier/default.nix +++ b/pkgs/applications/misc/barrier/default.nix @@ -32,8 +32,8 @@ mkDerivation rec { Synergy was a commercialized reimplementation of the original CosmoSynergy written by Chris Schoeneman. ''; - homepage = https://github.com/debauchee/barrier; - downloadPage = https://github.com/debauchee/barrier/releases; + homepage = "https://github.com/debauchee/barrier"; + downloadPage = "https://github.com/debauchee/barrier/releases"; license = stdenv.lib.licenses.gpl2; maintainers = [ stdenv.lib.maintainers.phryneas ]; platforms = stdenv.lib.platforms.linux; diff --git a/pkgs/applications/misc/bashSnippets/default.nix b/pkgs/applications/misc/bashSnippets/default.nix index b0af34ec760..4a023849f39 100644 --- a/pkgs/applications/misc/bashSnippets/default.nix +++ b/pkgs/applications/misc/bashSnippets/default.nix @@ -1,7 +1,7 @@ { stdenv, lib, fetchFromGitHub, makeWrapper , curl, python, bind, iproute, bc, gitMinimal }: let - version = "1.17.3"; + version = "1.23.0"; deps = lib.makeBinPath [ curl python @@ -19,7 +19,7 @@ stdenv.mkDerivation { owner = "alexanderepstein"; repo = "Bash-Snippets"; rev = "v${version}"; - sha256 = "1xdjk8bjh7l6h7gdqrra1dh4wdq89wmd0jsirsvqa3bmcsb2wz1r"; + sha256 = "044nxgd3ic2qr6hgq5nymn3dyf5i4s8mv5z4az6jvwlrjnvbg8cp"; }; buildInputs = [ makeWrapper ]; @@ -41,7 +41,7 @@ stdenv.mkDerivation { meta = with lib; { description = "A collection of small bash scripts for heavy terminal users"; - homepage = https://github.com/alexanderepstein/Bash-Snippets; + homepage = "https://github.com/alexanderepstein/Bash-Snippets"; license = licenses.mit; maintainers = with maintainers; [ infinisil ]; platforms = platforms.unix; diff --git a/pkgs/applications/misc/bb/default.nix b/pkgs/applications/misc/bb/default.nix index 06df1df9f76..fd7eb4990f0 100644 --- a/pkgs/applications/misc/bb/default.nix +++ b/pkgs/applications/misc/bb/default.nix @@ -19,7 +19,7 @@ stdenv.mkDerivation rec { ''; meta = with lib; { - homepage = http://aa-project.sourceforge.net/bb; + homepage = "http://aa-project.sourceforge.net/bb"; description = "AA-lib demo"; license = licenses.gpl2; maintainers = [ maintainers.rnhmjoj ]; diff --git a/pkgs/applications/misc/bemenu/default.nix b/pkgs/applications/misc/bemenu/default.nix index 8945ffbb384..665198b3d1f 100644 --- a/pkgs/applications/misc/bemenu/default.nix +++ b/pkgs/applications/misc/bemenu/default.nix @@ -9,19 +9,25 @@ assert ncursesSupport -> ncurses != null; assert waylandSupport -> wayland != null; assert x11Support -> xlibs != null && xorg != null; -stdenv.mkDerivation { +stdenv.mkDerivation rec { pname = "bemenu"; - version = "0.1.0"; + version = "0.3.0"; src = fetchFromGitHub { owner = "Cloudef"; - repo = "bemenu"; - rev = "33e540a2b04ce78f5c7ab4a60b899c67f586cc32"; - sha256 = "11h55m9dx6ai12pqij52ydjm36dvrcc856pa834njihrp626pl4w"; + repo = pname; + rev = version; + sha256 = "03k8wijdgj5nwmvgjhsrlh918n719789fhs4dqm23pd00rapxipk"; }; nativeBuildInputs = [ cmake pkgconfig pcre ]; + cmakeFlags = [ + "-DBEMENU_CURSES_RENDERER=${if ncursesSupport then "ON" else "OFF"}" + "-DBEMENU_WAYLAND_RENDERER=${if waylandSupport then "ON" else "OFF"}" + "-DBEMENU_X11_RENDERER=${if x11Support then "ON" else "OFF"}" + ]; + buildInputs = with stdenv.lib; [ cairo fribidi diff --git a/pkgs/applications/misc/bibletime/default.nix b/pkgs/applications/misc/bibletime/default.nix index a3f0a3b84f2..9489bfa0016 100644 --- a/pkgs/applications/misc/bibletime/default.nix +++ b/pkgs/applications/misc/bibletime/default.nix @@ -1,32 +1,34 @@ -{stdenv, fetchurl, cmake, sword, qt4, boost, clucene_core}: +{ stdenv, fetchurl, cmake, pkgconfig, sword, boost, clucene_core +, qtbase, qttools, qtsvg, qtwebkit +}: stdenv.mkDerivation rec { - version = "2.10.1"; + version = "2.11.2"; pname = "bibletime"; src = fetchurl { url = "mirror://sourceforge/bibletime/${pname}-${version}.tar.xz"; - sha256 = "14fayy5h1ffjxin669q56fflxn4ij1irgn60cygwx2y02cwxbll6"; + sha256 = "1s5bvmwbz1gyp3ml8sghpc00h8nhdvx2iyq96iri30kwx1y1jy6i"; }; - prePatch = '' - patchShebangs .; - ''; + nativeBuildInputs = [ cmake pkgconfig ]; + buildInputs = [ + sword boost clucene_core + qtbase qttools qtsvg qtwebkit + ]; preConfigure = '' export CLUCENE_HOME=${clucene_core}; export SWORD_HOME=${sword}; ''; - buildInputs = [ cmake sword qt4 boost clucene_core ]; - - cmakeFlags = "-DUSE_QT_WEBKIT=ON -DCMAKE_BUILD_TYPE=Debug"; + cmakeFlags = [ "-DUSE_QT_WEBKIT=ON" "-DCMAKE_BUILD_TYPE=Debug" ]; meta = { description = "A Qt4 Bible study tool"; - homepage = http://www.bibletime.info/; + homepage = "http://www.bibletime.info/"; platforms = stdenv.lib.platforms.linux; license = stdenv.lib.licenses.gpl2; maintainers = [ stdenv.lib.maintainers.piotr ]; diff --git a/pkgs/applications/misc/bicon/default.nix b/pkgs/applications/misc/bicon/default.nix index 22eb3e3d859..41b0d3c13a8 100644 --- a/pkgs/applications/misc/bicon/default.nix +++ b/pkgs/applications/misc/bicon/default.nix @@ -28,7 +28,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "A bidirectional console"; - homepage = https://github.com/behdad/bicon; + homepage = "https://github.com/behdad/bicon"; license = [ licenses.lgpl21 licenses.psfl licenses.bsd0 ]; maintainers = [ maintainers.linarcx ]; platforms = platforms.linux; diff --git a/pkgs/applications/misc/birdtray/default.nix b/pkgs/applications/misc/birdtray/default.nix index 39ecaa995d1..29522f75c25 100644 --- a/pkgs/applications/misc/birdtray/default.nix +++ b/pkgs/applications/misc/birdtray/default.nix @@ -32,7 +32,7 @@ mkDerivation rec { meta = with lib; { description = "Mail system tray notification icon for Thunderbird"; - homepage = https://github.com/gyunaev/birdtray; + homepage = "https://github.com/gyunaev/birdtray"; license = licenses.gpl3Plus; maintainers = with maintainers; [ Flakebi ]; platforms = platforms.linux; diff --git a/pkgs/applications/misc/bitcoinarmory/default.nix b/pkgs/applications/misc/bitcoinarmory/default.nix deleted file mode 100644 index 090cb2f519e..00000000000 --- a/pkgs/applications/misc/bitcoinarmory/default.nix +++ /dev/null @@ -1,92 +0,0 @@ -{ stdenv, fetchFromGitHub, pythonPackages -, pkgconfig, autoreconfHook, rsync -, swig, qt48Full, fcgi -, bitcoin, procps, utillinux -}: -let - - version = "0.96.1"; - inherit (pythonPackages) buildPythonApplication pyqt4 psutil twisted; - -in buildPythonApplication { - - pname = "bitcoinarmory"; - inherit version; - - src = fetchFromGitHub { - owner = "goatpig"; - repo = "BitcoinArmory"; - rev = "v${version}"; - sha256 = "0pjk5qx16n3kvs9py62666qkwp2awkgd87by4karbj7vk6p1l14h"; fetchSubmodules = true; - }; - - format = "other"; - - # FIXME bitcoind doesn't die on shutdown. Need some sort of patch to fix that. - #patches = [ ./shutdown-fix.patch ]; - - nativeBuildInputs = [ - autoreconfHook - pkgconfig - swig - pyqt4 - qt48Full - rsync # used by silly install script (TODO patch upstream) - ]; - buildInputs = [ - qt48Full - fcgi - ]; - - propagatedBuildInputs = [ - pyqt4 - psutil - twisted - ]; - - makeFlags = [ "PREFIX=$(out)" ]; - - makeWrapperArgs = [ - "--prefix PATH : ${bitcoin}/bin" # for `bitcoind` - "--prefix PATH : ${procps}/bin" # for `free` - "--prefix PATH : ${utillinux}/bin" # for `whereis` - "--suffix LD_LIBRARY_PATH : $out/lib" # for python bindings built as .so files - "--run cd\\ $out/lib/armory" # so that GUI resources can be loaded - ]; - - # auditTmpdir runs during fixupPhase, so patchelf before that - preFixup = '' - newRpath=$(patchelf --print-rpath $out/bin/ArmoryDB | sed -r 's|(.*)(/tmp/nix-build-.*libfcgi/.libs:?)(.*)|\1\3|') - patchelf --set-rpath $out/lib:$newRpath $out/bin/ArmoryDB - ''; - - # fixupPhase of mkPythonDerivation wraps $out/bin/*, so this needs to come after - postFixup = '' - wrapPythonProgramsIn $out/lib/armory "$out $pythonPath" - ln -sf $out/lib/armory/ArmoryQt.py $out/bin/armory - ''; - - meta = { - description = "Bitcoin wallet with cold storage and multi-signature support"; - longDescription = '' - Armory is the most secure and full featured solution available for users - and institutions to generate and store Bitcoin private keys. This means - users never have to trust the Armory team and can use it with the Glacier - Protocol. Satoshi would be proud! - - Users are empowered with multiple encrypted Bitcoin wallets and permanent - one-time ‘paper backups’. Armory pioneered cold storage and distributed - multi-signature. Bitcoin cold storage is a system for securely storing - Bitcoins on a completely air-gapped offline computer. - - Maintainer's note: The original authors at https://bitcoinarmory.com/ - discontinued development. I elected instead to package GitHub user - @goatpig's fork, as it's the most active, at time of this writing. - ''; - homepage = https://github.com/goatpig/BitcoinArmory; - license = stdenv.lib.licenses.agpl3Plus; - maintainers = with stdenv.lib.maintainers; [ elitak ]; - platforms = [ "i686-linux" "x86_64-linux" ]; - }; - -} diff --git a/pkgs/applications/misc/bleachbit/default.nix b/pkgs/applications/misc/bleachbit/default.nix index 225a5c5fc37..0111f8519e7 100644 --- a/pkgs/applications/misc/bleachbit/default.nix +++ b/pkgs/applications/misc/bleachbit/default.nix @@ -11,13 +11,13 @@ pythonPackages.buildPythonApplication rec { pname = "bleachbit"; - version = "3.0"; + version = "3.2.0"; format = "other"; src = fetchurl { url = "mirror://sourceforge/${pname}/${pname}-${version}.tar.bz2"; - sha256 = "18ns9hms671b4l0189m1m2agprkydnpvyky9q2f5hxf35i9cn67d"; + sha256 = "1sszpn7ifiry0wwmkzdppzh61zvgrfypm9g7wk6q1ya20qhb5b51"; }; nativeBuildInputs = [ @@ -54,7 +54,7 @@ pythonPackages.buildPythonApplication rec { strictDeps = false; meta = with stdenv.lib; { - homepage = http://bleachbit.sourceforge.net; + homepage = "http://bleachbit.sourceforge.net"; description = "A program to clean your computer"; longDescription = "BleachBit helps you easily clean your computer to free space and maintain privacy."; license = licenses.gpl3; diff --git a/pkgs/applications/misc/blender/darwin.patch b/pkgs/applications/misc/blender/darwin.patch new file mode 100644 index 00000000000..43b96466df2 --- /dev/null +++ b/pkgs/applications/misc/blender/darwin.patch @@ -0,0 +1,105 @@ +diff a/build_files/cmake/platform/platform_apple.cmake b/build_files/cmake/platform/platform_apple.cmake +--- a/build_files/cmake/platform/platform_apple.cmake ++++ b/build_files/cmake/platform/platform_apple.cmake +@@ -35,7 +35,6 @@ else() + message(STATUS "Using pre-compiled LIBDIR: ${LIBDIR}") + endif() + if(NOT EXISTS "${LIBDIR}/") +- message(FATAL_ERROR "Mac OSX requires pre-compiled libs at: '${LIBDIR}'") + endif() + + if(WITH_OPENAL) +@@ -79,7 +78,7 @@ endif() + if(WITH_CODEC_SNDFILE) + set(LIBSNDFILE ${LIBDIR}/sndfile) + set(LIBSNDFILE_INCLUDE_DIRS ${LIBSNDFILE}/include) +- set(LIBSNDFILE_LIBRARIES sndfile FLAC ogg vorbis vorbisenc) ++ set(LIBSNDFILE_LIBRARIES sndfile) + set(LIBSNDFILE_LIBPATH ${LIBSNDFILE}/lib ${LIBDIR}/ffmpeg/lib) # TODO, deprecate + endif() + +@@ -90,7 +89,7 @@ if(WITH_PYTHON) + # normally cached but not since we include them with blender + set(PYTHON_INCLUDE_DIR "${LIBDIR}/python/include/python${PYTHON_VERSION}m") + set(PYTHON_EXECUTABLE "${LIBDIR}/python/bin/python${PYTHON_VERSION}m") +- set(PYTHON_LIBRARY ${LIBDIR}/python/lib/libpython${PYTHON_VERSION}m.a) ++ set(PYTHON_LIBRARY "${LIBDIR}/python/lib/libpython${PYTHON_VERSION}m.dylib") + set(PYTHON_LIBPATH "${LIBDIR}/python/lib/python${PYTHON_VERSION}") + # set(PYTHON_LINKFLAGS "-u _PyMac_Error") # won't build with this enabled + else() +@@ -155,10 +154,7 @@ if(WITH_CODEC_FFMPEG) + set(FFMPEG_INCLUDE_DIRS ${FFMPEG}/include) + set(FFMPEG_LIBRARIES + avcodec avdevice avformat avutil +- mp3lame swscale x264 xvidcore +- theora theoradec theoraenc +- vorbis vorbisenc vorbisfile ogg opus +- vpx swresample) ++ swscale swresample) + set(FFMPEG_LIBPATH ${FFMPEG}/lib) + endif() + +@@ -199,14 +195,14 @@ if(WITH_OPENCOLLADA) + set(OPENCOLLADA ${LIBDIR}/opencollada) + + set(OPENCOLLADA_INCLUDE_DIRS +- ${LIBDIR}/opencollada/include/COLLADAStreamWriter +- ${LIBDIR}/opencollada/include/COLLADABaseUtils +- ${LIBDIR}/opencollada/include/COLLADAFramework +- ${LIBDIR}/opencollada/include/COLLADASaxFrameworkLoader +- ${LIBDIR}/opencollada/include/GeneratedSaxParser ++ ${LIBDIR}/opencollada/include/opencollada/COLLADAStreamWriter ++ ${LIBDIR}/opencollada/include/opencollada/COLLADABaseUtils ++ ${LIBDIR}/opencollada/include/opencollada/COLLADAFramework ++ ${LIBDIR}/opencollada/include/opencollada/COLLADASaxFrameworkLoader ++ ${LIBDIR}/opencollada/include/opencollada/GeneratedSaxParser + ) + +- set(OPENCOLLADA_LIBPATH ${OPENCOLLADA}/lib) ++ set(OPENCOLLADA_LIBPATH ${OPENCOLLADA}/lib/opencollada) + set(OPENCOLLADA_LIBRARIES + OpenCOLLADASaxFrameworkLoader + -lOpenCOLLADAFramework +@@ -215,7 +211,7 @@ if(WITH_OPENCOLLADA) + -lMathMLSolver + -lGeneratedSaxParser + -lbuffer -lftoa -lUTF +- ${OPENCOLLADA_LIBPATH}/libxml2.a ++ xml2 + ) + # PCRE is bundled with openCollada + # set(PCRE ${LIBDIR}/pcre) +@@ -276,14 +272,13 @@ if(WITH_BOOST) + endif() + + if(WITH_INTERNATIONAL OR WITH_CODEC_FFMPEG) +- set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -liconv") # boost_locale and ffmpeg needs it ! + endif() + + if(WITH_OPENIMAGEIO) + set(OPENIMAGEIO ${LIBDIR}/openimageio) + set(OPENIMAGEIO_INCLUDE_DIRS ${OPENIMAGEIO}/include) + set(OPENIMAGEIO_LIBRARIES +- ${OPENIMAGEIO}/lib/libOpenImageIO.a ++ ${OPENIMAGEIO}/lib/libOpenImageIO.dylib + ${PNG_LIBRARIES} + ${JPEG_LIBRARIES} + ${TIFF_LIBRARY} +@@ -306,7 +301,7 @@ endif() + if(WITH_OPENCOLORIO) + set(OPENCOLORIO ${LIBDIR}/opencolorio) + set(OPENCOLORIO_INCLUDE_DIRS ${OPENCOLORIO}/include) +- set(OPENCOLORIO_LIBRARIES OpenColorIO tinyxml yaml-cpp) ++ set(OPENCOLORIO_LIBRARIES OpenColorIO) + set(OPENCOLORIO_LIBPATH ${OPENCOLORIO}/lib) + endif() + +@@ -443,7 +438,7 @@ else() + set(CMAKE_CXX_FLAGS_RELEASE "-mdynamic-no-pic -fno-strict-aliasing") + endif() + +-if(${XCODE_VERSION} VERSION_EQUAL 5 OR ${XCODE_VERSION} VERSION_GREATER 5) ++if(FALSE) + # Xcode 5 is always using CLANG, which has too low template depth of 128 for libmv + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ftemplate-depth=1024") + endif() diff --git a/pkgs/applications/misc/blender/default.nix b/pkgs/applications/misc/blender/default.nix index 8c4833be3e6..e27aca4fc3d 100644 --- a/pkgs/applications/misc/blender/default.nix +++ b/pkgs/applications/misc/blender/default.nix @@ -1,13 +1,14 @@ { config, stdenv, lib, fetchurl, boost, cmake, ffmpeg, gettext, glew , ilmbase, libXi, libX11, libXext, libXrender , libjpeg, libpng, libsamplerate, libsndfile -, libtiff, libGLU, libGL, openal, opencolorio, openexr, openimageio, openjpeg_1, python3Packages -, openvdb, libXxf86vm, tbb +, libtiff, libGLU, libGL, openal, opencolorio, openexr, openimagedenoise, openimageio2, openjpeg, python3Packages +, openvdb, libXxf86vm, tbb, alembic , zlib, fftw, opensubdiv, freetype, jemalloc, ocl-icd, addOpenGLRunpath , jackaudioSupport ? false, libjack2 , cudaSupport ? config.cudaSupport or false, cudatoolkit , colladaSupport ? true, opencollada -, enableNumpy ? false, makeWrapper +, makeWrapper +, pugixml, SDL, Cocoa, CoreGraphics, ForceFeedback, OpenAL, OpenGL }: with lib; @@ -16,39 +17,73 @@ let python = python3Packages.python; in stdenv.mkDerivation rec { pname = "blender"; - version = "2.81"; + version = "2.82a"; src = fetchurl { url = "https://download.blender.org/source/${pname}-${version}.tar.xz"; - sha256 = "1prp0f2152f1sz23jlc86vndfvmplb7qhllikkirq7hgpykrshna"; + sha256 = "18zbdgas6qf2kmvvlimxgnq7y9kj7hdxcgixrs6fj50x40q01q2d"; }; + patches = lib.optional stdenv.isDarwin ./darwin.patch; + nativeBuildInputs = [ cmake ] ++ optional cudaSupport addOpenGLRunpath; buildInputs = [ boost ffmpeg gettext glew ilmbase - libXi libX11 libXext libXrender - freetype libjpeg libpng libsamplerate libsndfile libtiff libGLU libGL openal - opencolorio openexr openimageio openjpeg_1 python zlib fftw jemalloc + freetype libjpeg libpng libsamplerate libsndfile libtiff + opencolorio openexr openimagedenoise openimageio2 openjpeg python zlib fftw jemalloc + alembic (opensubdiv.override { inherit cudaSupport; }) - openvdb libXxf86vm tbb + tbb makeWrapper ] + ++ (if (!stdenv.isDarwin) then [ + libXi libX11 libXext libXrender + libGLU libGL openal + libXxf86vm + # OpenVDB currently doesn't build on darwin + openvdb + ] + else [ + pugixml SDL Cocoa CoreGraphics ForceFeedback OpenAL OpenGL + ]) ++ optional jackaudioSupport libjack2 ++ optional cudaSupport cudatoolkit ++ optional colladaSupport opencollada; postPatch = - '' + if stdenv.isDarwin then '' + : > build_files/cmake/platform/platform_apple_xcode.cmake + substituteInPlace source/creator/CMakeLists.txt \ + --replace '${"$"}{LIBDIR}/python' \ + '${python}' + substituteInPlace build_files/cmake/platform/platform_apple.cmake \ + --replace '${"$"}{LIBDIR}/python' \ + '${python}' \ + --replace '${"$"}{LIBDIR}/opencollada' \ + '${opencollada}' \ + --replace '${"$"}{PYTHON_LIBPATH}/site-packages/numpy' \ + '${python3Packages.numpy}/${python.sitePackages}/numpy' \ + --replace 'set(OPENJPEG_INCLUDE_DIRS ' \ + 'set(OPENJPEG_INCLUDE_DIRS "'$(echo ${openjpeg.dev}/include/openjpeg-*)'") #' \ + --replace 'set(OPENJPEG_LIBRARIES ' \ + 'set(OPENJPEG_LIBRARIES "${openjpeg}/lib/libopenjp2.dylib") #' \ + --replace 'set(OPENIMAGEIO ' \ + 'set(OPENIMAGEIO "${openimageio2.out}") #' \ + --replace 'set(OPENEXR_INCLUDE_DIRS ' \ + 'set(OPENEXR_INCLUDE_DIRS "${openexr.dev}/include/OpenEXR") #' + '' else '' substituteInPlace extern/clew/src/clew.c --replace '"libOpenCL.so"' '"${ocl-icd}/lib/libOpenCL.so"' ''; cmakeFlags = - [ "-DWITH_MOD_OCEANSIM=ON" + [ + "-DWITH_ALEMBIC=ON" + "-DWITH_MOD_OCEANSIM=ON" "-DWITH_CODEC_FFMPEG=ON" "-DWITH_CODEC_SNDFILE=ON" "-DWITH_INSTALL_PORTABLE=OFF" "-DWITH_FFTW3=ON" - #"-DWITH_SDL=ON" + "-DWITH_SDL=OFF" "-DWITH_OPENCOLORIO=ON" "-DWITH_OPENSUBDIV=ON" "-DPYTHON_LIBRARY=${python.libPrefix}m" @@ -61,10 +96,18 @@ stdenv.mkDerivation rec { "-DWITH_OPENVDB=ON" "-DWITH_TBB=ON" "-DWITH_IMAGE_OPENJPEG=ON" + "-DWITH_OPENCOLLADA=${if colladaSupport then "ON" else "OFF"}" ] + ++ optionals stdenv.isDarwin [ + "-DWITH_CYCLES_OSL=OFF" # requires LLVM + "-DWITH_OPENVDB=OFF" # OpenVDB currently doesn't build on darwin + + "-DLIBDIR=/does-not-exist" + ] + # Clang doesn't support "-export-dynamic" + ++ optional stdenv.cc.isClang "-DPYTHON_LINKFLAGS=" ++ optional jackaudioSupport "-DWITH_JACK=ON" - ++ optional cudaSupport "-DWITH_CYCLES_CUDA_BINARIES=ON" - ++ optional colladaSupport "-DWITH_OPENCOLLADA=ON"; + ++ optional cudaSupport "-DWITH_CYCLES_CUDA_BINARIES=ON"; NIX_CFLAGS_COMPILE = "-I${ilmbase.dev}/include/OpenEXR -I${python}/include/${python.libPrefix}"; @@ -74,11 +117,14 @@ stdenv.mkDerivation rec { enableParallelBuilding = true; - postInstall = optionalString enableNumpy - '' - wrapProgram $out/bin/blender \ - --prefix PYTHONPATH : ${python3Packages.numpy}/${python.sitePackages} - ''; + blenderExecutable = + placeholder "out" + (if stdenv.isDarwin then "/Blender.app/Contents/MacOS/Blender" else "/bin/blender"); + # --python-expr is used to workaround https://developer.blender.org/T74304 + postInstall = '' + wrapProgram $blenderExecutable \ + --prefix PYTHONPATH : ${python3Packages.numpy}/${python.sitePackages} \ + --add-flags '--python-use-system-env' + ''; # Set RUNPATH so that libcuda and libnvrtc in /run/opengl-driver(-32)/lib can be # found. See the explanation in libglvnd. @@ -91,11 +137,11 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "3D Creation/Animation/Publishing System"; - homepage = https://www.blender.org; + homepage = "https://www.blender.org"; # They comment two licenses: GPLv2 and Blender License, but they # say: "We've decided to cancel the BL offering for an indefinite period." license = licenses.gpl2Plus; - platforms = [ "x86_64-linux" ]; + platforms = [ "x86_64-linux" "x86_64-darwin" ]; maintainers = [ maintainers.goibhniu ]; }; } diff --git a/pkgs/applications/misc/blugon/default.nix b/pkgs/applications/misc/blugon/default.nix index e6f956cc091..896daa27f7c 100644 --- a/pkgs/applications/misc/blugon/default.nix +++ b/pkgs/applications/misc/blugon/default.nix @@ -2,13 +2,13 @@ stdenv.mkDerivation rec { pname = "blugon"; - version = "1.11.4"; + version = "1.12.1"; src = fetchFromGitHub { owner = "jumper149"; repo = pname; rev = version; - sha256 = "0x320w2h5nlcgha4345i8ns15akb4kmrdgkh710s4r1n1by4x11r"; + sha256 = "1i67v8jxvavgax3dwvns200iwwdcvgki04liq0x64q52lg0vrh7m"; }; buildInputs = [ python3 libX11 libXrandr ]; diff --git a/pkgs/applications/misc/buku/default.nix b/pkgs/applications/misc/buku/default.nix index 98f6e2895d1..f4018cff5f4 100644 --- a/pkgs/applications/misc/buku/default.nix +++ b/pkgs/applications/misc/buku/default.nix @@ -1,14 +1,14 @@ { stdenv, python3, fetchFromGitHub }: with python3.pkgs; buildPythonApplication rec { - version = "4.2.2"; + version = "4.3"; pname = "buku"; src = fetchFromGitHub { owner = "jarun"; repo = "buku"; rev = "v${version}"; - sha256 = "1wy5i1av1s98yr56ybiq66kv0vg48zci3fp91zfgj04nh2966w1w"; + sha256 = "1cq508ymak3g5fhi1n4bdiiqkc86s2l3k4dvzw842vv2x0441cac"; }; checkInputs = [ @@ -31,6 +31,7 @@ with python3.pkgs; buildPythonApplication rec { flask-api flask-bootstrap flask-paginate + flask-reverse-proxy-fix flask_wtf arrow werkzeug @@ -70,7 +71,7 @@ with python3.pkgs; buildPythonApplication rec { meta = with stdenv.lib; { description = "Private cmdline bookmark manager"; - homepage = https://github.com/jarun/Buku; + homepage = "https://github.com/jarun/Buku"; license = licenses.gpl3; platforms = platforms.linux; maintainers = with maintainers; [ matthiasbeyer infinisil ]; diff --git a/pkgs/applications/misc/calcurse/default.nix b/pkgs/applications/misc/calcurse/default.nix index 8f8934cb084..ce3a2c0a271 100644 --- a/pkgs/applications/misc/calcurse/default.nix +++ b/pkgs/applications/misc/calcurse/default.nix @@ -2,11 +2,11 @@ stdenv.mkDerivation rec { pname = "calcurse"; - version = "4.5.1"; + version = "4.6.0"; src = fetchurl { url = "https://calcurse.org/files/${pname}-${version}.tar.gz"; - sha256 = "0cgkd285x5pk62lmdx9fjxl46c5lj8wj2cqbxq7d99yb4il5fdjk"; + sha256 = "0hzhdpkkn75jlymanwzl69hrrf1pw29hrchr11wlxqjpl43h62gs"; }; buildInputs = [ ncurses gettext python3 python3Packages.wrapPython ]; @@ -27,7 +27,7 @@ stdenv.mkDerivation rec { customized to suit user needs and a very powerful set of command line options can be used to filter and format appointments, making it suitable for use in scripts. ''; - homepage = http://calcurse.org/; + homepage = "http://calcurse.org/"; license = licenses.bsd2; platforms = platforms.linux; }; diff --git a/pkgs/applications/misc/calibre/default.nix b/pkgs/applications/misc/calibre/default.nix index 9701db3c0b7..afd602f6088 100644 --- a/pkgs/applications/misc/calibre/default.nix +++ b/pkgs/applications/misc/calibre/default.nix @@ -1,7 +1,27 @@ -{ lib, mkDerivation, fetchurl, poppler_utils, pkgconfig, libpng -, imagemagick, libjpeg, fontconfig, podofo, qtbase, qmake, icu, sqlite -, unrarSupport ? false, chmlib, python2Packages, libusb1, libmtp -, xdg_utils, makeDesktopItem, removeReferencesTo +{ lib +, mkDerivation +, fetchurl +, poppler_utils +, pkgconfig +, libpng +, imagemagick +, libjpeg +, fontconfig +, podofo +, qtbase +, qmake +, icu +, sqlite +, hunspell +, hyphen +, unrarSupport ? false +, chmlib +, python2Packages +, libusb1 +, libmtp +, xdg_utils +, makeDesktopItem +, removeReferencesTo }: let @@ -10,11 +30,11 @@ let in mkDerivation rec { pname = "calibre"; - version = "3.48.0"; + version = "4.12.0"; src = fetchurl { url = "https://download.calibre-ebook.com/${version}/${pname}-${version}.tar.xz"; - sha256 = "034m89h7j2088p324i1kya33dfldmqyynjxk3w98xiqkz7q2hi82"; + sha256 = "144vl5p0adcywcqaarrriq5zd8q5i934yfjg9himiq1vdp9vy4fi"; }; patches = [ @@ -44,17 +64,50 @@ mkDerivation rec { CALIBRE_PY3_PORT = builtins.toString pypkgs.isPy3k; buildInputs = [ - poppler_utils libpng imagemagick libjpeg - fontconfig podofo qtbase chmlib icu sqlite libusb1 libmtp xdg_utils - ] ++ (with pypkgs; [ - apsw cssselect css-parser dateutil dnspython feedparser html5-parser lxml markdown netifaces pillow - python pyqt5_with_qtwebkit sip - regex msgpack beautifulsoup4 html2text - # the following are distributed with calibre, but we use upstream instead - odfpy - ]) ++ lib.optionals (!pypkgs.isPy3k) (with pypkgs; [ - mechanize - ]); + poppler_utils + libpng + imagemagick + libjpeg + fontconfig + podofo + qtbase + chmlib + icu + hunspell + hyphen + sqlite + libusb1 + libmtp + xdg_utils + ] ++ ( + with pypkgs; [ + apsw + cssselect + css-parser + dateutil + dnspython + feedparser + html5-parser + lxml + markdown + netifaces + pillow + python + pyqt5 + sip + regex + msgpack + beautifulsoup4 + html2text + pyqtwebengine + # the following are distributed with calibre, but we use upstream instead + odfpy + ] + ) ++ lib.optionals (!pypkgs.isPy3k) ( + with pypkgs; [ + mechanize + ] + ); installPhase = '' runHook preInstall @@ -69,7 +122,16 @@ mkDerivation rec { export PODOFO_INC_DIR=${podofo.dev}/include/podofo export PODOFO_LIB_DIR=${podofo.lib}/lib export SIP_BIN=${pypkgs.sip}/bin/sip - ${pypkgs.python.interpreter} setup.py install --prefix=$out + export XDG_DATA_HOME=$out/share + export XDG_UTILS_INSTALL_MODE="user" + + ${pypkgs.python.interpreter} setup.py install --root=$out \ + --prefix=$out \ + --libdir=$out/lib \ + --staging-root=$out \ + --staging-libdir=$out/lib \ + --staging-sharedir=$out/share + PYFILES="$out/bin/* $out/lib/calibre/calibre/web/feeds/*.py $out/lib/calibre/calibre/ebooks/metadata/*.py @@ -78,13 +140,6 @@ mkDerivation rec { sed -i "s/env python[0-9.]*/python/" $PYFILES sed -i "2i import sys; sys.argv[0] = 'calibre'" $out/bin/calibre - # Replace @out@ by the output path. - mkdir -p $out/share/applications/ - cp {$calibreDesktopItem,$ebookEditDesktopItem,$ebookViewerDesktopItem}/share/applications/* $out/share/applications/ - for entry in $out/share/applications/*.desktop; do - substituteAllInPlace $entry - done - mkdir -p $out/share cp -a man-pages $out/share/man @@ -112,76 +167,6 @@ mkDerivation rec { disallowedReferences = [ podofo.dev ]; - calibreDesktopItem = makeDesktopItem { - name = "calibre-gui"; - desktopName = "calibre"; - exec = "@out@/bin/calibre --detach %F"; - genericName = "E-book library management"; - icon = "@out@/share/calibre/images/library.png"; - comment = "Manage, convert, edit, and read e-books"; - mimeType = lib.concatStringsSep ";" [ - "application/x-mobipocket-subscription" - "application/vnd.openxmlformats-officedocument.wordprocessingml.document" - "text/html" - "application/x-cbc" - "application/ereader" - "application/oebps-package+xml" - "image/vnd.djvu" - "application/x-sony-bbeb" - "application/vnd.ms-word.document.macroenabled.12" - "text/rtf" - "text/x-markdown" - "application/pdf" - "application/x-cbz" - "application/x-mobipocket-ebook" - "application/x-cbr" - "application/x-mobi8-ebook" - "text/fb2+xml" - "application/vnd.oasis.opendocument.text" - "application/epub+zip" - "text/plain" - "application/xhtml+xml" - ]; - categories = "Office"; - extraEntries = '' - Actions=Edit;Viewer; - - [Desktop Action Edit] - Name=Edit E-book - Icon=@out@/share/calibre/images/tweak.png - Exec=@out@/bin/ebook-edit --detach %F - - [Desktop Action Viewer] - Name=E-book Viewer - Icon=@out@/share/calibre/images/viewer.png - Exec=@out@/bin/ebook-viewer --detach %F - ''; - }; - - ebookEditDesktopItem = makeDesktopItem { - name = "calibre-edit-book"; - desktopName = "Edit E-book"; - genericName = "E-book Editor"; - comment = "Edit e-books"; - icon = "@out@/share/calibre/images/tweak.png"; - exec = "@out@/bin/ebook-edit --detach %F"; - categories = "Office;Publishing"; - mimeType = "application/epub+zip"; - extraEntries = "NoDisplay=true"; - }; - - ebookViewerDesktopItem = makeDesktopItem { - name = "calibre-ebook-viewer"; - desktopName = "E-book Viewer"; - genericName = "E-book Viewer"; - comment = "Read e-books in all the major formats"; - icon = "@out@/share/calibre/images/viewer.png"; - exec = "@out@/bin/ebook-viewer --detach %F"; - categories = "Office;Viewer"; - mimeType = "application/epub+zip"; - extraEntries = "NoDisplay=true"; - }; - meta = with lib; { description = "Comprehensive e-book software"; homepage = "https://calibre-ebook.com"; diff --git a/pkgs/applications/misc/candle/default.nix b/pkgs/applications/misc/candle/default.nix index 77cabc409c7..a951046ce01 100644 --- a/pkgs/applications/misc/candle/default.nix +++ b/pkgs/applications/misc/candle/default.nix @@ -25,7 +25,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "GRBL controller application with G-Code visualizer written in Qt"; - homepage = https://github.com/Denvi/Candle; + homepage = "https://github.com/Denvi/Candle"; license = licenses.gpl3; maintainers = with maintainers; [ matti-kariluoma ]; }; diff --git a/pkgs/applications/misc/cardpeek/default.nix b/pkgs/applications/misc/cardpeek/default.nix index 40dbfea9801..83340f78dd4 100644 --- a/pkgs/applications/misc/cardpeek/default.nix +++ b/pkgs/applications/misc/cardpeek/default.nix @@ -20,7 +20,7 @@ in enableParallelBuilding = true; meta = with stdenv.lib; { - homepage = https://github.com/L1L1/cardpeek; + homepage = "https://github.com/L1L1/cardpeek"; description = "A tool to read the contents of ISO7816 smart cards"; license = licenses.gpl3Plus; platforms = with platforms; linux ++ darwin; diff --git a/pkgs/applications/misc/catclock/default.nix b/pkgs/applications/misc/catclock/default.nix index 09c36f9eb2f..6b4ab1f3a8b 100644 --- a/pkgs/applications/misc/catclock/default.nix +++ b/pkgs/applications/misc/catclock/default.nix @@ -23,7 +23,7 @@ stdenv.mkDerivation { buildInputs = [ xlibsWrapper motif ]; meta = with stdenv.lib; { - homepage = http://codefromabove.com/2014/05/catclock/; + homepage = "http://codefromabove.com/2014/05/catclock/"; license = with licenses; mit; maintainers = with maintainers; [ ramkromberg ]; platforms = with platforms; linux ++ darwin; diff --git a/pkgs/applications/misc/cbatticon/default.nix b/pkgs/applications/misc/cbatticon/default.nix index e506829b575..e7664244db7 100644 --- a/pkgs/applications/misc/cbatticon/default.nix +++ b/pkgs/applications/misc/cbatticon/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchFromGitHub, pkgconfig, gettext, glib, gtk3, libnotify }: +{ stdenv, fetchFromGitHub, pkgconfig, gettext, glib, gtk3, libnotify, wrapGAppsHook }: stdenv.mkDerivation rec { pname = "cbatticon"; @@ -11,7 +11,7 @@ stdenv.mkDerivation rec { sha256 = "0ivm2dzhsa9ir25ry418r2qg2llby9j7a6m3arbvq5c3kaj8m9jr"; }; - nativeBuildInputs = [ pkgconfig gettext ]; + nativeBuildInputs = [ pkgconfig gettext wrapGAppsHook ]; buildInputs = [ glib gtk3 libnotify ]; @@ -19,11 +19,11 @@ stdenv.mkDerivation rec { sed -i -e 's/ -Wno-format//g' Makefile ''; - makeFlags = "PREFIX=${placeholder "out"}"; + makeFlags = [ "PREFIX=${placeholder "out"}" ]; meta = with stdenv.lib; { description = "Lightweight and fast battery icon that sits in the system tray"; - homepage = https://github.com/valr/cbatticon; + homepage = "https://github.com/valr/cbatticon"; license = licenses.gpl2; platforms = platforms.linux; maintainers = [ maintainers.domenkozar ]; diff --git a/pkgs/applications/misc/cgminer/default.nix b/pkgs/applications/misc/cgminer/default.nix index c05c7423d9a..09236565d59 100644 --- a/pkgs/applications/misc/cgminer/default.nix +++ b/pkgs/applications/misc/cgminer/default.nix @@ -36,7 +36,7 @@ stdenv.mkDerivation { monitoring, (over)clocking and fanspeed support for bitcoin and derivative coins. Do not use on multiple block chains at the same time! ''; - homepage = https://github.com/ckolivas/cgminer; + homepage = "https://github.com/ckolivas/cgminer"; license = licenses.gpl3; maintainers = [ maintainers.offline ]; platforms = stdenv.lib.platforms.linux; diff --git a/pkgs/applications/misc/cheat/default.nix b/pkgs/applications/misc/cheat/default.nix index a86c1e8bc05..b4765c0aae3 100644 --- a/pkgs/applications/misc/cheat/default.nix +++ b/pkgs/applications/misc/cheat/default.nix @@ -1,24 +1,31 @@ -{ stdenv, fetchFromGitHub, buildGoModule }: +{ stdenv, fetchFromGitHub +, buildGoModule, installShellFiles }: buildGoModule rec { pname = "cheat"; - version = "3.0.3"; + version = "3.9.0"; src = fetchFromGitHub { - owner = "chrisallenlane"; + owner = "cheat"; repo = "cheat"; rev = version; - sha256 = "19w1admdcgld9vlc4fsyc5d9bi6rmwhr2x2ji43za2vjlk34hnnx"; + sha256 = "0jbqflkcfdrinx1lk45klm8ml0n4cgp43nzls1376cd3hfayby1y"; }; subPackages = [ "cmd/cheat" ]; - modSha256 = "189cqnfl403f4lk7g9v68mwk93ciglqli639dk4x9091lvn5gq5q"; + nativeBuildInputs = [ installShellFiles ]; + + postInstall = '' + installShellCompletion scripts/cheat.{bash,fish,zsh} + ''; + + modSha256 = "1is19qca5wgzya332rmpk862nnivxzgxchkllv629f5fwwdvdgmg"; meta = with stdenv.lib; { description = "Create and view interactive cheatsheets on the command-line"; maintainers = with maintainers; [ mic92 ]; license = with licenses; [ gpl3 mit ]; - homepage = "https://github.com/chrisallenlane/cheat"; + inherit (src.meta) homepage; }; } diff --git a/pkgs/applications/misc/cherrytree/default.nix b/pkgs/applications/misc/cherrytree/default.nix index d760cee6374..7c00add7797 100644 --- a/pkgs/applications/misc/cherrytree/default.nix +++ b/pkgs/applications/misc/cherrytree/default.nix @@ -1,12 +1,15 @@ -{ lib, fetchurl, pythonPackages, gettext }: +{ lib, fetchFromGitHub, pythonPackages, gettext }: pythonPackages.buildPythonApplication rec { pname = "cherrytree"; - version = "0.38.9"; + version = "0.39.2"; + + src = fetchFromGitHub { + owner = "giuspen"; + repo = "cherrytree"; + rev = version; + sha256 = "1l6wh24bhp4yhmsfmc0r4n2n10nlilkv4cmv5sfl80i250fiw7xa"; - src = fetchurl { - url = "https://www.giuspen.com/software/${pname}-${version}.tar.xz"; - sha256 = "0xal09ijgxbzvp003s40xbrfnpq3ald1fw8nnpqq3yg7h6g6c5pw"; }; nativeBuildInputs = [ gettext ]; @@ -20,17 +23,16 @@ pythonPackages.buildPythonApplication rec { meta = with lib; { description = "An hierarchical note taking application"; longDescription = '' - Cherrytree is an hierarchical note taking application, - featuring rich text, syntax highlighting and powerful search - capabilities. It organizes all information in units called - "nodes", as in a tree, and can be very useful to store any piece - of information, from tables and links to pictures and even entire - documents. All those little bits of information you have scattered - around your hard drive can be conveniently placed into a - Cherrytree document where you can easily find it. + Cherrytree is an hierarchical note taking application, featuring rich + text, syntax highlighting and powerful search capabilities. It organizes + all information in units called "nodes", as in a tree, and can be very + useful to store any piece of information, from tables and links to + pictures and even entire documents. All those little bits of information + you have scattered around your hard drive can be conveniently placed into + a Cherrytree document where you can easily find it. ''; homepage = "http://www.giuspen.com/cherrytree"; license = licenses.gpl3; - maintainers = with maintainers; [ AndersonTorres ]; + maintainers = with maintainers; [ ]; }; } diff --git a/pkgs/applications/misc/cipher/default.nix b/pkgs/applications/misc/cipher/default.nix index ef47e3e0358..cdcfcc00481 100644 --- a/pkgs/applications/misc/cipher/default.nix +++ b/pkgs/applications/misc/cipher/default.nix @@ -10,18 +10,17 @@ , glib , gtk3 , libgee -, xdg_utils , wrapGAppsHook }: stdenv.mkDerivation rec { pname = "cipher"; - version = "2.0.0"; + version = "2.5.0"; src = fetchFromGitHub { owner = "arshubham"; repo = "cipher"; rev = version; - sha256 = "0n5aigcyxnl4k52mdmavbxx6afc1ixymn3k3l2ryhyzi5q31x0x3"; + sha256 = "00azc5ck17zkdypfza6x1viknwhimd9fqgk2ybff3mx6aphmla7a"; }; nativeBuildInputs = [ @@ -42,12 +41,18 @@ stdenv.mkDerivation rec { ]; postPatch = '' - substituteInPlace data/com.github.arshubham.cipher.desktop.in \ - --replace xdg-open ${xdg_utils}/bin/xdg-open - chmod +x post_install.py - patchShebangs post_install.py + substituteInPlace data/com.github.arshubham.cipher.desktop.in \ + --replace "gio" "${glib.bin}/bin/gio" + chmod +x meson/post_install.py + patchShebangs meson/post_install.py ''; + passthru = { + updateScript = pantheon.updateScript { + attrPath = pname; + }; + }; + meta = with stdenv.lib; { description = "A simple application for encoding and decoding text, designed for elementary OS"; homepage = "https://github.com/arshubham/cipher"; diff --git a/pkgs/applications/misc/cli-visualizer/default.nix b/pkgs/applications/misc/cli-visualizer/default.nix index 4986661e2f6..112341dcd4f 100644 --- a/pkgs/applications/misc/cli-visualizer/default.nix +++ b/pkgs/applications/misc/cli-visualizer/default.nix @@ -27,7 +27,7 @@ stdenv.mkDerivation rec { ''; meta = { - homepage = https://github.com/dpayne/cli-visualizer; + homepage = "https://github.com/dpayne/cli-visualizer"; description = "CLI based audio visualizer"; license = stdenv.lib.licenses.mit; maintainers = [ stdenv.lib.maintainers.matthiasbeyer ]; diff --git a/pkgs/applications/misc/clight/clightd.nix b/pkgs/applications/misc/clight/clightd.nix index f9c08d1f00a..bfa6f2ea855 100644 --- a/pkgs/applications/misc/clight/clightd.nix +++ b/pkgs/applications/misc/clight/clightd.nix @@ -65,7 +65,7 @@ stdenv.mkDerivation rec { meta = with lib; { description = "Linux bus interface that changes screen brightness/temperature"; - homepage = https://github.com/FedeDP/Clightd; + homepage = "https://github.com/FedeDP/Clightd"; platforms = platforms.linux; license = licenses.gpl3; maintainers = with maintainers; [ diff --git a/pkgs/applications/misc/clight/default.nix b/pkgs/applications/misc/clight/default.nix index a2e45256269..ed8767419d4 100644 --- a/pkgs/applications/misc/clight/default.nix +++ b/pkgs/applications/misc/clight/default.nix @@ -48,7 +48,7 @@ stdenv.mkDerivation rec { meta = with lib; { description = "A C daemon that turns your webcam into a light sensor"; - homepage = https://github.com/FedeDP/Clight; + homepage = "https://github.com/FedeDP/Clight"; platforms = platforms.linux; license = licenses.gpl3; maintainers = with maintainers; [ diff --git a/pkgs/applications/misc/clipit/default.nix b/pkgs/applications/misc/clipit/default.nix index 129516a4498..82d6272aadc 100644 --- a/pkgs/applications/misc/clipit/default.nix +++ b/pkgs/applications/misc/clipit/default.nix @@ -1,20 +1,41 @@ -{ fetchurl, stdenv, intltool, pkgconfig, gtk2, xdotool }: +{ fetchFromGitHub, fetchpatch, stdenv +, autoreconfHook, intltool, pkgconfig +, gtk3, xdotool, which, wrapGAppsHook }: stdenv.mkDerivation rec { pname = "clipit"; - version = "1.4.2"; + version = "1.4.4"; - src = fetchurl { - url = "https://github.com/downloads/shantzu/ClipIt/${pname}-${version}.tar.gz"; - sha256 = "0jrwn8qfgb15rwspdp1p8hb1nc0ngmpvgr87d4k3lhlvqg2cfqva"; + src = fetchFromGitHub { + owner = "shantzu"; + repo = "ClipIt"; + rev = "v${version}"; + sha256 = "05xi29v2y0rvb33fmvrz7r9j4l858qj7ngwd7dp4pzpkkaybjln0"; }; - nativeBuildInputs = [ pkgconfig ]; - buildInputs = [ intltool gtk2 xdotool ]; + patches = [ + # gtk3 support, can be removed in the next release + (fetchpatch { + url = "https://github.com/CristianHenzel/ClipIt/commit/22e012c7d406436e1785b6dd3c4c138b25f68431.patch"; + sha256 = "0la4gc324dzxpx6nk2lqg5fmjgjpm2pyvzwddmfz1il8hqvrqg3j"; + }) + ]; + + preConfigure = '' + intltoolize --copy --force --automake + ''; + + nativeBuildInputs = [ pkgconfig wrapGAppsHook autoreconfHook intltool ]; + configureFlags = [ "--with-gtk3" ]; + buildInputs = [ gtk3 ]; + + gappsWrapperArgs = [ + "--prefix" "PATH" ":" "${stdenv.lib.makeBinPath [ xdotool which ]}" + ]; meta = with stdenv.lib; { description = "Lightweight GTK Clipboard Manager"; - homepage = "http://clipit.rspwn.com"; + inherit (src.meta) homepage; license = licenses.gpl3; platforms = platforms.linux; }; diff --git a/pkgs/applications/misc/clipmenu/default.nix b/pkgs/applications/misc/clipmenu/default.nix index 7577c0a3db9..4bc56f0c452 100644 --- a/pkgs/applications/misc/clipmenu/default.nix +++ b/pkgs/applications/misc/clipmenu/default.nix @@ -4,13 +4,13 @@ let in stdenv.mkDerivation rec { pname = "clipmenu"; - version = "5.6.0"; + version = "6.0.1"; src = fetchFromGitHub { owner = "cdown"; repo = "clipmenu"; rev = version; - sha256 = "13hyarzazh6j33d808h3s5yk320wqzivc0ni9xm8kalvn4k3a0bq"; + sha256 = "0053j4i14lz5m2bzc5sch5id5ilr1bl196mp8fp0q8x74w3vavs9"; }; buildInputs = [ makeWrapper ]; diff --git a/pkgs/applications/misc/cmatrix/default.nix b/pkgs/applications/misc/cmatrix/default.nix index 9f86ec94f18..fa0e10f9eef 100644 --- a/pkgs/applications/misc/cmatrix/default.nix +++ b/pkgs/applications/misc/cmatrix/default.nix @@ -21,7 +21,7 @@ stdenv.mkDerivation rec { CMatrix simulates the display from "The Matrix" and is based on the screensaver from the movie's website. ''; - homepage = https://github.com/abishekvashok/cmatrix; + homepage = "https://github.com/abishekvashok/cmatrix"; platforms = ncurses.meta.platforms; maintainers = [ maintainers.AndersonTorres ]; }; diff --git a/pkgs/applications/misc/cointop/default.nix b/pkgs/applications/misc/cointop/default.nix index 29700774219..ef897d2ea59 100644 --- a/pkgs/applications/misc/cointop/default.nix +++ b/pkgs/applications/misc/cointop/default.nix @@ -2,13 +2,13 @@ buildGoPackage rec { pname = "cointop"; - version = "1.4.1"; + version = "1.4.4"; src = fetchFromGitHub { owner = "miguelmota"; repo = pname; rev = version; - sha256 = "067jsn66xs30d5yz9z8cvpxbvh8a95kllkb2wk134c43bfxy2m34"; + sha256 = "12yi1lmyd5y4cgcjclkczf93jj7wd6k8aqnhq21dd1mx65l77swv"; }; goPackagePath = "github.com/miguelmota/cointop"; diff --git a/pkgs/applications/misc/colort/default.nix b/pkgs/applications/misc/colort/default.nix index 554c7d8c78b..1eda11890e7 100644 --- a/pkgs/applications/misc/colort/default.nix +++ b/pkgs/applications/misc/colort/default.nix @@ -14,7 +14,7 @@ stdenv.mkDerivation { meta = with stdenv.lib; { description = "A program for 'tinting' color values"; - homepage = https://github.com/neeasade/colort; + homepage = "https://github.com/neeasade/colort"; license = licenses.mit; platforms = platforms.all; maintainers = [ maintainers.neeasade ]; diff --git a/pkgs/applications/misc/confclerk/default.nix b/pkgs/applications/misc/confclerk/default.nix index b07e0fb8c52..bb1aacc2069 100644 --- a/pkgs/applications/misc/confclerk/default.nix +++ b/pkgs/applications/misc/confclerk/default.nix @@ -21,7 +21,7 @@ stdenv.mkDerivation { meta = { description = "Offline conference schedule viewer"; - homepage = http://www.toastfreeware.priv.at/confclerk; + homepage = "http://www.toastfreeware.priv.at/confclerk"; license = stdenv.lib.licenses.gpl2; maintainers = with stdenv.lib.maintainers; [ ehmry ]; platforms = stdenv.lib.platforms.linux; diff --git a/pkgs/applications/misc/cool-retro-term/default.nix b/pkgs/applications/misc/cool-retro-term/default.nix index c9dcc97d5cd..739ad07adbf 100644 --- a/pkgs/applications/misc/cool-retro-term/default.nix +++ b/pkgs/applications/misc/cool-retro-term/default.nix @@ -38,7 +38,7 @@ mkDerivation rec { feel of the old cathode tube screens. It has been designed to be eye-candy, customizable, and reasonably lightweight. ''; - homepage = https://github.com/Swordfish90/cool-retro-term; + homepage = "https://github.com/Swordfish90/cool-retro-term"; license = stdenv.lib.licenses.gpl3Plus; platforms = with stdenv.lib.platforms; linux ++ darwin; maintainers = with stdenv.lib.maintainers; [ skeidel ]; diff --git a/pkgs/applications/misc/copyq/default.nix b/pkgs/applications/misc/copyq/default.nix index 58a85f8f6e9..081acb3acb6 100644 --- a/pkgs/applications/misc/copyq/default.nix +++ b/pkgs/applications/misc/copyq/default.nix @@ -5,13 +5,13 @@ mkDerivation rec { pname = "CopyQ"; - version = "3.9.3"; + version = "3.10.0"; src = fetchFromGitHub { owner = "hluk"; repo = "CopyQ"; rev = "v${version}"; - sha256 = "0wlwq9xg8rzsbj0b29z358k4mbrqy04iraa8x0p26pa95yskgcma"; + sha256 = "05nhgndiq0sm1bvb80sf5fgnm38249dclwzmfm7hzrablmkwgv3c"; }; nativeBuildInputs = [ cmake ]; @@ -21,7 +21,7 @@ mkDerivation rec { ] ++ lib.optional webkitSupport qtwebkit; meta = with lib; { - homepage = https://hluk.github.io/CopyQ; + homepage = "https://hluk.github.io/CopyQ"; description = "Clipboard Manager with Advanced Features"; license = licenses.gpl3; maintainers = [ maintainers.willtim ]; diff --git a/pkgs/applications/misc/coursera-dl/default.nix b/pkgs/applications/misc/coursera-dl/default.nix index 0601514546f..bbb7c53b61f 100644 --- a/pkgs/applications/misc/coursera-dl/default.nix +++ b/pkgs/applications/misc/coursera-dl/default.nix @@ -5,13 +5,13 @@ let in pythonPackages.buildPythonApplication rec { pname = "coursera-dl"; - version = "0.11.4"; + version = "0.11.5"; src = fetchFromGitHub { owner = "coursera-dl"; repo = "coursera-dl"; rev = version; - sha256 = "0dn7a6s98dwba62r0dyabq8pryzga4b2wpx88i9bmp7ja1b1f92f"; + sha256 = "0akgwzrsx094jj30n4bd2ilwgva4qxx38v3bgm69iqfxi8c2bqbk"; }; nativeBuildInputs = with pythonPackages; [ pandoc ]; @@ -38,7 +38,7 @@ in pythonPackages.buildPythonApplication rec { meta = with stdenv.lib; { description = "CLI for downloading Coursera.org videos and naming them"; - homepage = https://github.com/coursera-dl/coursera-dl; + homepage = "https://github.com/coursera-dl/coursera-dl"; license = licenses.lgpl3Plus; maintainers = with maintainers; [ alexfmpe ]; platforms = platforms.darwin ++ platforms.linux; diff --git a/pkgs/applications/misc/cpp-ethereum/default.nix b/pkgs/applications/misc/cpp-ethereum/default.nix index dae25f6b817..aed44d1213c 100644 --- a/pkgs/applications/misc/cpp-ethereum/default.nix +++ b/pkgs/applications/misc/cpp-ethereum/default.nix @@ -76,7 +76,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Ethereum C++ client"; - homepage = https://github.com/ethereum/cpp-ethereum; + homepage = "https://github.com/ethereum/cpp-ethereum"; license = licenses.gpl3; maintainers = with maintainers; [ artuuge ]; platforms = platforms.linux; diff --git a/pkgs/applications/misc/crumbs/default.nix b/pkgs/applications/misc/crumbs/default.nix index 2d612c16fef..889c17e6988 100644 --- a/pkgs/applications/misc/crumbs/default.nix +++ b/pkgs/applications/misc/crumbs/default.nix @@ -25,7 +25,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Bookmarks for the command line"; - homepage = https://github.com/fasseg/crumbs; + homepage = "https://github.com/fasseg/crumbs"; license = licenses.wtfpl; platforms = platforms.all; maintainers = with maintainers; [ thesola10 ]; diff --git a/pkgs/applications/misc/ctodo/default.nix b/pkgs/applications/misc/ctodo/default.nix index 72918a40733..602fe430816 100644 --- a/pkgs/applications/misc/ctodo/default.nix +++ b/pkgs/applications/misc/ctodo/default.nix @@ -16,7 +16,7 @@ stdenv.mkDerivation rec { ''; meta = { - homepage = http://ctodo.apakoh.dk/; + homepage = "http://ctodo.apakoh.dk/"; description = "A simple ncurses-based task list manager"; license = stdenv.lib.licenses.mit; maintainers = [ stdenv.lib.maintainers.matthiasbeyer ]; diff --git a/pkgs/applications/misc/cura/default.nix b/pkgs/applications/misc/cura/default.nix index 7187b8c0099..4c4fe9b1abd 100644 --- a/pkgs/applications/misc/cura/default.nix +++ b/pkgs/applications/misc/cura/default.nix @@ -2,20 +2,20 @@ mkDerivation rec { pname = "cura"; - version = "4.4.0"; + version = "4.5.0"; src = fetchFromGitHub { owner = "Ultimaker"; repo = "Cura"; - rev = "v${version}"; - sha256 = "131n36qhdfky584wr3zv73ckjjprwaqb5fih8yln2syf8b7ziwlz"; + rev = version; + sha256 = "0fm04s912sgmr66wyb55ly4jh39ijsj6lx4fx9wn7hchlqmw5jxi"; }; materials = fetchFromGitHub { owner = "Ultimaker"; repo = "fdm_materials"; rev = version; - sha256 = "141cv1f2pv2pznhgj32zg8bw3kmw9002g6rx16jq7lhclr0x3xls"; + sha256 = "0fgkwz1anw49macq1jxjhjr79slhmx7g3zwij7g9fqyzzhrrmwqn"; }; buildInputs = [ qtbase qtquickcontrols2 qtgraphicaleffects ]; @@ -55,7 +55,7 @@ mkDerivation rec { meta = with lib; { description = "3D printer / slicing GUI built on top of the Uranium framework"; - homepage = https://github.com/Ultimaker/Cura; + homepage = "https://github.com/Ultimaker/Cura"; license = licenses.lgpl3Plus; platforms = platforms.linux; maintainers = with maintainers; [ abbradar gebner ]; diff --git a/pkgs/applications/misc/cura/lulzbot/curaengine-openmp-compat.patch b/pkgs/applications/misc/cura/lulzbot/curaengine-openmp-compat.patch new file mode 100644 index 00000000000..3826e92440f --- /dev/null +++ b/pkgs/applications/misc/cura/lulzbot/curaengine-openmp-compat.patch @@ -0,0 +1,47 @@ +# Notes by Charles Duffy -- +# +# - The new version of OpenMP does not allow outside variables to be referenced +# *at all* without an explicit declaration of how they're supposed to be +# handled. Thus, this was an outright build failure beforehand. The new +# pragmas copy the initial value from the outer scope into each parallel +# thread. Since these variables are all constant within the loops, this is +# clearly correct. (Not sure it's *optimal*, but quite sure it isn't +# *wrong*). +# - Upstream has been contacted -- I'm a Lulzbot customer with an active +# support contract and sent them the patch. That said, they're in the middle +# of some major corporate churn (sold themselves out of near-bankruptcy to an +# out-of-state business entity formed as a holding company; moved to that +# state; have been slowly restaffing after), so a response may take a while. +# - The patch is purely my own work. + +--- curaengine/src/support.cpp.orig 2020-03-28 10:38:01.953912363 -0500 ++++ curaengine/src/support.cpp 2020-03-28 10:45:28.999791908 -0500 +@@ -854,7 +854,7 @@ + const double tan_angle = tan(angle) - 0.01; // the XY-component of the supportAngle + xy_disallowed_per_layer[0] = storage.getLayerOutlines(0, false).offset(xy_distance); + // for all other layers (of non support meshes) compute the overhang area and possibly use that when calculating the support disallowed area +- #pragma omp parallel for default(none) shared(xy_disallowed_per_layer, storage, mesh) schedule(dynamic) ++ #pragma omp parallel for default(none) firstprivate(layer_count, is_support_mesh_place_holder, use_xy_distance_overhang, z_distance_top, tan_angle, xy_distance, xy_distance_overhang) shared(xy_disallowed_per_layer, storage, mesh) schedule(dynamic) + for (unsigned int layer_idx = 1; layer_idx < layer_count; layer_idx++) + { + Polygons outlines = storage.getLayerOutlines(layer_idx, false); +@@ -1054,7 +1054,7 @@ + const int max_checking_layer_idx = std::min(static_cast(storage.support.supportLayers.size()) + , static_cast(layer_count - (layer_z_distance_top - 1))); + const size_t max_checking_idx_size_t = std::max(0, max_checking_layer_idx); +-#pragma omp parallel for default(none) shared(support_areas, storage) schedule(dynamic) ++#pragma omp parallel for default(none) firstprivate(max_checking_idx_size_t, layer_z_distance_top) shared(support_areas, storage) schedule(dynamic) + for (size_t layer_idx = 0; layer_idx < max_checking_idx_size_t; layer_idx++) + { + support_areas[layer_idx] = support_areas[layer_idx].difference(storage.getLayerOutlines(layer_idx + layer_z_distance_top - 1, false)); +--- curaengine/src/layerPart.cpp.orig 2020-03-28 10:36:40.381023651 -0500 ++++ curaengine/src/layerPart.cpp 2020-03-28 10:39:54.584140465 -0500 +@@ -49,7 +49,7 @@ + { + const auto total_layers = slicer->layers.size(); + assert(mesh.layers.size() == total_layers); +-#pragma omp parallel for default(none) shared(mesh, slicer) schedule(dynamic) ++#pragma omp parallel for default(none) firstprivate(total_layers) shared(mesh, slicer) schedule(dynamic) + for (unsigned int layer_nr = 0; layer_nr < total_layers; layer_nr++) + { + SliceLayer& layer_storage = mesh.layers[layer_nr]; diff --git a/pkgs/applications/misc/cura/lulzbot/curaengine.nix b/pkgs/applications/misc/cura/lulzbot/curaengine.nix index aad9b9bee89..a5cfa937fd8 100644 --- a/pkgs/applications/misc/cura/lulzbot/curaengine.nix +++ b/pkgs/applications/misc/cura/lulzbot/curaengine.nix @@ -1,26 +1,27 @@ -{ stdenv, callPackage, fetchgit, fetchpatch, cmake, libarcusLulzbot, stb, protobuf }: +{ gcc8Stdenv, callPackage, fetchgit, fetchpatch, cmake, libarcusLulzbot, stb, protobuf }: -stdenv.mkDerivation rec { +gcc8Stdenv.mkDerivation rec { pname = "curaengine-lulzBot"; version = "3.6.21"; src = fetchgit { - url = https://code.alephobjects.com/source/curaengine-lulzbot.git; + url = "https://code.alephobjects.com/source/curaengine-lulzbot.git"; rev = "ec6a1a0f0aa387ef97e5c106633cf8d7fb9cd00d"; sha256 = "0wdkvg1hmqp1gaym804lw09x4ngf5ffasd861jhflpy7djbmkfn8"; }; + patches = [ ./curaengine-openmp-compat.patch ]; + nativeBuildInputs = [ cmake ]; buildInputs = [ libarcusLulzbot stb protobuf ]; cmakeFlags = [ "-DCURA_ENGINE_VERSION=${version}" ]; - meta = with stdenv.lib; { + meta = with gcc8Stdenv.lib; { description = "A powerful, fast and robust engine for processing 3D models into 3D printing instruction"; - homepage = https://code.alephobjects.com/source/curaengine-lulzbot/; + homepage = "https://code.alephobjects.com/source/curaengine-lulzbot/"; license = licenses.agpl3; platforms = platforms.linux; maintainers = with maintainers; [ chaduffy ]; }; } - diff --git a/pkgs/applications/misc/cura/lulzbot/default.nix b/pkgs/applications/misc/cura/lulzbot/default.nix index c67fcb74047..229966561c6 100644 --- a/pkgs/applications/misc/cura/lulzbot/default.nix +++ b/pkgs/applications/misc/cura/lulzbot/default.nix @@ -4,7 +4,7 @@ let # admittedly, we're using (printer firmware) blobs when we could compile them ourselves. curaBinaryDataVersion = "3.6.21"; # Marlin v2.0.0.174 for Bio, v2.0.0.144 for others. curaBinaryData = fetchgit { - url = https://code.alephobjects.com/diffusion/CBD/cura-binary-data.git; + url = "https://code.alephobjects.com/diffusion/CBD/cura-binary-data.git"; rev = "5c75d0f6c10d8b7a903e2072a48cd1f08059509e"; sha256 = "1qdsj6rczwzdwzyr7nz7fnypbphckjrnwl8c9dr6izsxyzs465c4"; }; @@ -30,7 +30,7 @@ mkDerivation rec { version = "3.6.21"; src = fetchgit { - url = https://code.alephobjects.com/source/cura-lulzbot.git; + url = "https://code.alephobjects.com/source/cura-lulzbot.git"; rev = "7faeb18604c83004846a02c60cb240708db0034f"; sha256 = "10q38s8c8x6xkh1vns4p3iqa5y267vrjh5vq8h55mg1q5001scyq"; }; @@ -74,7 +74,7 @@ mkDerivation rec { meta = with lib; { description = "3D printer / slicing GUI built on top of the Uranium framework"; - homepage = https://code.alephobjects.com/diffusion/CURA/; + homepage = "https://code.alephobjects.com/diffusion/CURA/"; license = licenses.agpl3; # a partial relicense to LGPL has happened, but not certain that all AGPL bits are expunged platforms = platforms.linux; maintainers = with maintainers; [ chaduffy ]; diff --git a/pkgs/applications/misc/cura/lulzbot/libarcus.nix b/pkgs/applications/misc/cura/lulzbot/libarcus.nix index 733aa27da85..5edaabbacb0 100644 --- a/pkgs/applications/misc/cura/lulzbot/libarcus.nix +++ b/pkgs/applications/misc/cura/lulzbot/libarcus.nix @@ -6,7 +6,7 @@ buildPythonPackage { format = "other"; src = fetchgit { - url = https://code.alephobjects.com/source/arcus.git; + url = "https://code.alephobjects.com/source/arcus.git"; rev = "aeda02d7727f45b657afb72cef203283fbf09325"; sha256 = "1ak0d4k745sx7paic27was3s4987z9h3czscjs21hxbi6qy83g99"; }; @@ -24,7 +24,7 @@ buildPythonPackage { meta = with stdenv.lib; { description = "Communication library between internal components for Ultimaker software"; - homepage = https://code.alephobjects.com/source/arcus/; + homepage = "https://code.alephobjects.com/source/arcus/"; license = licenses.lgpl3Plus; platforms = platforms.linux; maintainers = with maintainers; [ chaduffy ]; diff --git a/pkgs/applications/misc/cura/lulzbot/libsavitar.nix b/pkgs/applications/misc/cura/lulzbot/libsavitar.nix index e6c277959e0..e32117a103e 100644 --- a/pkgs/applications/misc/cura/lulzbot/libsavitar.nix +++ b/pkgs/applications/misc/cura/lulzbot/libsavitar.nix @@ -7,7 +7,7 @@ buildPythonPackage { format = "other"; src = fetchgit { - url = https://code.alephobjects.com/source/savitar.git; + url = "https://code.alephobjects.com/source/savitar.git"; rev = "ee8ada42c55f54727ce4d275c294ba426d3d8234"; sha256 = "1wm5ii3cmni8dk3c65kw4wglpypkdsfpgd480d3hc1r5bqpq0d6j"; }; @@ -25,7 +25,7 @@ buildPythonPackage { meta = with stdenv.lib; { description = "C++ implementation of 3mf loading with SIP python bindings"; - homepage = https://github.com/Ultimaker/libSavitar; + homepage = "https://github.com/Ultimaker/libSavitar"; license = licenses.lgpl3Plus; platforms = platforms.unix; maintainers = with maintainers; [ chaduffy ]; diff --git a/pkgs/applications/misc/cura/lulzbot/uranium.nix b/pkgs/applications/misc/cura/lulzbot/uranium.nix index acffc741d57..2ce0fab170e 100644 --- a/pkgs/applications/misc/cura/lulzbot/uranium.nix +++ b/pkgs/applications/misc/cura/lulzbot/uranium.nix @@ -8,7 +8,7 @@ buildPythonPackage { format = "other"; src = fetchgit { - url = https://code.alephobjects.com/diffusion/U/uranium.git; + url = "https://code.alephobjects.com/diffusion/U/uranium.git"; rev = "54d911edd2551c5875c554928896122835a0dd6c"; sha256 = "04bym3vwikaxw8ab0mymv9sc9n8i7yw5kfsv99ic811g9lzz3j1i"; }; @@ -29,7 +29,7 @@ buildPythonPackage { meta = with stdenv.lib; { description = "A Python framework for building Desktop applications"; - homepage = https://code.alephobjects.com/diffusion/U/; + homepage = "https://code.alephobjects.com/diffusion/U/"; license = licenses.lgpl3Plus; platforms = platforms.linux; maintainers = with maintainers; [ chaduffy ]; diff --git a/pkgs/applications/misc/cura/stable.nix b/pkgs/applications/misc/cura/stable.nix index 1972042f805..1191be09f76 100644 --- a/pkgs/applications/misc/cura/stable.nix +++ b/pkgs/applications/misc/cura/stable.nix @@ -66,7 +66,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "3D printing host software"; - homepage = https://github.com/daid/Cura; + homepage = "https://github.com/daid/Cura"; license = licenses.agpl3; platforms = platforms.linux; maintainers = with stdenv.lib.maintainers; [ the-kenny ]; diff --git a/pkgs/applications/misc/curabydagoma/default.nix b/pkgs/applications/misc/curabydagoma/default.nix index a367efaaef3..821b88f9b20 100644 --- a/pkgs/applications/misc/curabydagoma/default.nix +++ b/pkgs/applications/misc/curabydagoma/default.nix @@ -68,7 +68,7 @@ stdenv.mkDerivation rec { meta = with lib; { description = "Slicer for 3D printers built by Dagoma"; - homepage = https://dagoma.fr/cura-by-dagoma.html; + homepage = "https://dagoma.fr/cura-by-dagoma.html"; license = licenses.agpl3; platforms = [ "x86_64-linux" ]; maintainers = with maintainers; [ tiramiseb ]; diff --git a/pkgs/applications/misc/curaengine/default.nix b/pkgs/applications/misc/curaengine/default.nix index 6594deb84a5..2eb256935d7 100644 --- a/pkgs/applications/misc/curaengine/default.nix +++ b/pkgs/applications/misc/curaengine/default.nix @@ -2,13 +2,13 @@ stdenv.mkDerivation rec { pname = "curaengine"; - version = "4.4.0"; + version = "4.5.0"; src = fetchFromGitHub { owner = "Ultimaker"; repo = "CuraEngine"; rev = version; - sha256 = "1m89bp4g0dldh7vv1clj110m29ajiaghdq7b49mb3y8ifgrf8rdi"; + sha256 = "1gml8f6yqmghgncl1zggs7h2hdh05wf68jw9npg0gh7n9l7yzkk4"; }; nativeBuildInputs = [ cmake ]; @@ -18,7 +18,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "A powerful, fast and robust engine for processing 3D models into 3D printing instruction"; - homepage = https://github.com/Ultimaker/CuraEngine; + homepage = "https://github.com/Ultimaker/CuraEngine"; license = licenses.agpl3; platforms = platforms.linux; maintainers = with maintainers; [ abbradar gebner ]; diff --git a/pkgs/applications/misc/curaengine/stable.nix b/pkgs/applications/misc/curaengine/stable.nix index 41f110e9ee1..d353fff87ef 100644 --- a/pkgs/applications/misc/curaengine/stable.nix +++ b/pkgs/applications/misc/curaengine/stable.nix @@ -22,7 +22,7 @@ stdenv.mkDerivation { meta = with stdenv.lib; { description = "Engine for processing 3D models into 3D printing instructions"; - homepage = https://github.com/Ultimaker/CuraEngine; + homepage = "https://github.com/Ultimaker/CuraEngine"; license = licenses.agpl3; platforms = platforms.linux; maintainers = with stdenv.lib.maintainers; [ the-kenny ]; diff --git a/pkgs/applications/misc/dbeaver/default.nix b/pkgs/applications/misc/dbeaver/default.nix index 60598e56539..64c3f8ac282 100644 --- a/pkgs/applications/misc/dbeaver/default.nix +++ b/pkgs/applications/misc/dbeaver/default.nix @@ -7,7 +7,7 @@ stdenv.mkDerivation rec { pname = "dbeaver-ce"; - version = "6.3.0"; + version = "7.0.2"; desktopItem = makeDesktopItem { name = "dbeaver"; @@ -30,7 +30,7 @@ stdenv.mkDerivation rec { src = fetchurl { url = "https://dbeaver.io/files/${version}/dbeaver-ce-${version}-linux.gtk.x86_64.tar.gz"; - sha256 = "07j2r2kfjhfv8zzzzp5qj3ppx4vv7llpx4lwip6bnjfkh80ny22a"; + sha256 = "0p75kvs9ng5i5x5cpdqxlf18y3k83pqsvrkab0i1azk3x4lfkzmd"; }; installPhase = '' @@ -55,7 +55,7 @@ stdenv.mkDerivation rec { ''; meta = with stdenv.lib; { - homepage = https://dbeaver.io/; + homepage = "https://dbeaver.io/"; description = "Universal SQL Client for developers, DBA and analysts. Supports MySQL, PostgreSQL, MariaDB, SQLite, and more"; longDescription = '' Free multi-platform database tool for developers, SQL programmers, database diff --git a/pkgs/applications/misc/dbvisualizer/default.nix b/pkgs/applications/misc/dbvisualizer/default.nix index fbeb965df38..7612c00393f 100644 --- a/pkgs/applications/misc/dbvisualizer/default.nix +++ b/pkgs/applications/misc/dbvisualizer/default.nix @@ -4,7 +4,7 @@ stdenv.mkDerivation { name = "dbvisualizer-9.5.7"; src = fetchurl { - url = https://www.dbvis.com/product_download/dbvis-9.5.7/media/dbvis_unix_9_5_7.tar.gz; + url = "https://www.dbvis.com/product_download/dbvis-9.5.7/media/dbvis_unix_9_5_7.tar.gz"; sha256 = "1xv4fw7cji2ffvv7z8vjl5lap512pj60s2ynihirrqld7pmklnyr"; }; @@ -19,7 +19,7 @@ stdenv.mkDerivation { meta = { description = "The universal database tool"; - homepage = https://www.dbvis.com/; + homepage = "https://www.dbvis.com/"; license = stdenv.lib.licenses.unfree; }; } diff --git a/pkgs/applications/misc/ddgr/default.nix b/pkgs/applications/misc/ddgr/default.nix index 9b877c2594b..c4639150dd4 100644 --- a/pkgs/applications/misc/ddgr/default.nix +++ b/pkgs/applications/misc/ddgr/default.nix @@ -1,40 +1,38 @@ -{stdenv, fetchFromGitHub, python3}: +{ stdenv, fetchFromGitHub, python3, installShellFiles }: stdenv.mkDerivation rec { - version = "1.7"; + version = "1.8"; pname = "ddgr"; src = fetchFromGitHub { owner = "jarun"; repo = "ddgr"; rev = "v${version}"; - sha256 = "0kcl8z9w8iwn3pxay1pfahhw6vs2l1dp60yfv3i19in4ac9va7m0"; + sha256 = "1cyaindcg2vc3ij0p6b35inr01c6ys04izxsn1h70ixhsz46qg8z"; }; + nativeBuildInputs = [ installShellFiles ]; + buildInputs = [ python3 ]; - makeFlags = "PREFIX=$(out)"; + makeFlags = [ "PREFIX=$(out)" ]; - preBuild = '' - # Version 1.7 was released as 1.6 - # https://github.com/jarun/ddgr/pull/95 - sed -i "s/_VERSION_ = '1.6'/_VERSION_ = '1.7'/" ddgr + # Version 1.8 was released as 1.7 + postPatch = '' + substituteInPlace ddgr --replace "_VERSION_ = '1.7'" "_VERSION_ = '${version}'" ''; postInstall = '' - mkdir -p "$out/share/bash-completion/completions/" - cp "auto-completion/bash/ddgr-completion.bash" "$out/share/bash-completion/completions/" - mkdir -p "$out/share/fish/vendor_completions.d/" - cp "auto-completion/fish/ddgr.fish" "$out/share/fish/vendor_completions.d/" - mkdir -p "$out/share/zsh/site-functions/" - cp "auto-completion/zsh/_ddgr" "$out/share/zsh/site-functions/" + installShellCompletion --bash --name ddgr.bash auto-completion/bash/ddgr-completion.bash + installShellCompletion --fish auto-completion/fish/ddgr.fish + installShellCompletion --zsh auto-completion/zsh/_ddgr ''; meta = with stdenv.lib; { - homepage = https://github.com/jarun/ddgr; + homepage = "https://github.com/jarun/ddgr"; description = "Search DuckDuckGo from the terminal"; license = licenses.gpl3; maintainers = with maintainers; [ ceedubs markus1189 ]; - platforms = platforms.unix; + platforms = python3.meta.platforms; }; } diff --git a/pkgs/applications/misc/deco/default.nix b/pkgs/applications/misc/deco/default.nix index a1fdabd8ccb..ad8b56e830f 100644 --- a/pkgs/applications/misc/deco/default.nix +++ b/pkgs/applications/misc/deco/default.nix @@ -24,7 +24,7 @@ stdenv.mkDerivation rec { ''; meta = with stdenv.lib; { - homepage = https://github.com/ebzzry/deco; + homepage = "https://github.com/ebzzry/deco"; description = "A simple root image setter"; license = licenses.mit; maintainers = [ maintainers.ebzzry ]; diff --git a/pkgs/applications/misc/devilspie2/default.nix b/pkgs/applications/misc/devilspie2/default.nix index 5699396a084..2961baee102 100644 --- a/pkgs/applications/misc/devilspie2/default.nix +++ b/pkgs/applications/misc/devilspie2/default.nix @@ -27,7 +27,7 @@ stdenv.mkDerivation rec { positioned at a specific screen position, or position a window on a specific workspace. ''; - homepage = http://www.gusnan.se/devilspie2/; + homepage = "https://www.gusnan.se/devilspie2/"; license = licenses.gpl3; maintainers = [ maintainers.ebzzry ]; platforms = platforms.linux; diff --git a/pkgs/applications/misc/dfilemanager/default.nix b/pkgs/applications/misc/dfilemanager/default.nix index 1bfb6bbfeaf..69c7f0dc17f 100644 --- a/pkgs/applications/misc/dfilemanager/default.nix +++ b/pkgs/applications/misc/dfilemanager/default.nix @@ -17,7 +17,7 @@ mkDerivation { cmakeFlags = [ "-DQT5BUILD=true" ]; meta = { - homepage = http://dfilemanager.sourceforge.net/; + homepage = "http://dfilemanager.sourceforge.net/"; description = "File manager written in Qt/C++"; license = stdenv.lib.licenses.gpl2; platforms = stdenv.lib.platforms.unix; diff --git a/pkgs/applications/misc/diff-pdf/default.nix b/pkgs/applications/misc/diff-pdf/default.nix index af47afcc601..83116da4df0 100644 --- a/pkgs/applications/misc/diff-pdf/default.nix +++ b/pkgs/applications/misc/diff-pdf/default.nix @@ -9,13 +9,13 @@ let in stdenv.mkDerivation rec { pname = "diff-pdf"; - version = "0.3"; + version = "0.4.1"; src = fetchFromGitHub { owner = "vslavik"; repo = "diff-pdf"; rev = "v${version}"; - sha256 = "0vzvyjpk6m89zs6j1dq85f93n2b1i6akn2g0z9qhagjd2pds920i"; + sha256 = "1y5ji4c4m69vzs0z051fkhfdrjnyxb6kzac5flhdkfb2hgp1jnxl"; }; nativeBuildInputs = [ autoconf automake pkgconfig ]; diff --git a/pkgs/applications/misc/diffpdf/default.nix b/pkgs/applications/misc/diffpdf/default.nix index 37ed8eb23fb..17dfd08f90b 100644 --- a/pkgs/applications/misc/diffpdf/default.nix +++ b/pkgs/applications/misc/diffpdf/default.nix @@ -1,6 +1,6 @@ -{ stdenv, fetchurl, fetchpatch, qmake, qttools, qtbase, poppler }: +{ stdenv, mkDerivation, fetchurl, fetchpatch, qmake, qttools, qtbase, poppler }: -stdenv.mkDerivation rec { +mkDerivation rec { version = "2.1.3"; pname = "diffpdf"; @@ -11,7 +11,7 @@ stdenv.mkDerivation rec { patches = [ (fetchpatch { - url = https://raw.githubusercontent.com/gentoo/gentoo/9b971631588ff46e7c2d501bc35cd0d9ce2d98e2/app-text/diffpdf/files/diffpdf-2.1.3-qt5.patch; + url = "https://raw.githubusercontent.com/gentoo/gentoo/9b971631588ff46e7c2d501bc35cd0d9ce2d98e2/app-text/diffpdf/files/diffpdf-2.1.3-qt5.patch"; sha256 = "0sax8gcqcmzf74hmdr3rarqs4nsxmml9qmh6pqyjmgl3lypxhafg"; }) ./fix_path_poppler_qt5.patch @@ -50,7 +50,7 @@ stdenv.mkDerivation rec { ''; meta = { - homepage = http://www.qtrac.eu/diffpdfc.html; + homepage = "http://www.qtrac.eu/diffpdfc.html"; description = "Tool for diffing pdf files visually or textually"; license = stdenv.lib.licenses.gpl2Plus; maintainers = with stdenv.lib.maintainers; [ tstrobel ]; diff --git a/pkgs/applications/misc/ding/default.nix b/pkgs/applications/misc/ding/default.nix index e76f95b6a50..374c4cf6648 100644 --- a/pkgs/applications/misc/ding/default.nix +++ b/pkgs/applications/misc/ding/default.nix @@ -47,7 +47,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Simple and fast dictionary lookup tool"; - homepage = https://www-user.tu-chemnitz.de/~fri/ding/; + homepage = "https://www-user.tu-chemnitz.de/~fri/ding/"; license = licenses.gpl2Plus; platforms = platforms.linux; # homepage says: unix-like except darwin maintainers = [ maintainers.exi ]; diff --git a/pkgs/applications/misc/direwolf/default.nix b/pkgs/applications/misc/direwolf/default.nix index 8f7dbd2d2ed..038df41875f 100644 --- a/pkgs/applications/misc/direwolf/default.nix +++ b/pkgs/applications/misc/direwolf/default.nix @@ -36,7 +36,7 @@ stdenv.mkDerivation rec { meta = { description = "A Soundcard Packet TNC, APRS Digipeater, IGate, APRStt gateway"; - homepage = https://github.com/wb2osz/direwolf/; + homepage = "https://github.com/wb2osz/direwolf/"; license = licenses.gpl2; platforms = platforms.unix; maintainers = [ maintainers.the-kenny ]; diff --git a/pkgs/applications/misc/dmensamenu/default.nix b/pkgs/applications/misc/dmensamenu/default.nix index 1c3b4133867..cf02efdcece 100644 --- a/pkgs/applications/misc/dmensamenu/default.nix +++ b/pkgs/applications/misc/dmensamenu/default.nix @@ -26,7 +26,7 @@ buildPythonApplication rec { doCheck = false; meta = with stdenv.lib; { - homepage = https://github.com/dotlambda/dmensamenu; + homepage = "https://github.com/dotlambda/dmensamenu"; description = "Print German canteen menus using dmenu and OpenMensa"; license = licenses.mit; maintainers = with maintainers; [ dotlambda ]; diff --git a/pkgs/applications/misc/dmenu/default.nix b/pkgs/applications/misc/dmenu/default.nix index 8d13ac42e1f..e4d0c82c417 100644 --- a/pkgs/applications/misc/dmenu/default.nix +++ b/pkgs/applications/misc/dmenu/default.nix @@ -25,7 +25,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "A generic, highly customizable, and efficient menu for the X Window System"; - homepage = https://tools.suckless.org/dmenu; + homepage = "https://tools.suckless.org/dmenu"; license = licenses.mit; maintainers = with maintainers; [ pSub globin ]; platforms = platforms.all; diff --git a/pkgs/applications/misc/dmenu/wayland.nix b/pkgs/applications/misc/dmenu/wayland.nix new file mode 100644 index 00000000000..7b17d484771 --- /dev/null +++ b/pkgs/applications/misc/dmenu/wayland.nix @@ -0,0 +1,33 @@ +{ stdenv, fetchFromGitHub, meson, ninja, cairo, pango, pkg-config, wayland-protocols +, glib, wayland, libxkbcommon, makeWrapper +}: + +stdenv.mkDerivation rec { + pname = "dmenu-wayland-unstable"; + version = "2020-02-28"; + + src = fetchFromGitHub { + owner = "nyyManni"; + repo = "dmenu-wayland"; + rev = "68e08e8bcde10a10ac3290431f173c6c7fce4238"; + sha256 = "10b1v2brgpgb6wkzn62haj56zmkf3aq6fs3p9rp6bxiw8bs2nvlm"; + }; + + outputs = [ "out" "man" ]; + + nativeBuildInputs = [ meson ninja pkg-config makeWrapper ]; + buildInputs = [ cairo pango wayland-protocols glib wayland libxkbcommon ]; + + postInstall = '' + wrapProgram $out/bin/dmenu-wl_run \ + --prefix PATH : $out/bin + ''; + + meta = with stdenv.lib; { + license = licenses.mit; + platforms = platforms.linux; + description = "dmenu for wayland-compositors"; + homepage = "https://github.com/nyyManni/dmenu-wayland"; + maintainers = with maintainers; [ ma27 ]; + }; +} diff --git a/pkgs/applications/misc/dockbarx/default.nix b/pkgs/applications/misc/dockbarx/default.nix index 3888c4ce0a0..97510bc3b45 100644 --- a/pkgs/applications/misc/dockbarx/default.nix +++ b/pkgs/applications/misc/dockbarx/default.nix @@ -29,7 +29,7 @@ pythonPackages.buildPythonApplication rec { ++ [ keybinder ]; meta = with stdenv.lib; { - homepage = https://launchpad.net/dockbar/; + homepage = "https://launchpad.net/dockbar/"; description = "DockBarX is a lightweight taskbar / panel replacement for Linux which works as a stand-alone dock"; license = licenses.gpl3; platforms = platforms.linux; diff --git a/pkgs/applications/misc/doing/Gemfile.lock b/pkgs/applications/misc/doing/Gemfile.lock index 4d266827415..1b969869f76 100644 --- a/pkgs/applications/misc/doing/Gemfile.lock +++ b/pkgs/applications/misc/doing/Gemfile.lock @@ -22,4 +22,4 @@ DEPENDENCIES doing (= 1.0.10pre) BUNDLED WITH - 1.14.6 + 2.1.4 diff --git a/pkgs/applications/misc/doing/default.nix b/pkgs/applications/misc/doing/default.nix index d72a5b84826..48e45328f67 100644 --- a/pkgs/applications/misc/doing/default.nix +++ b/pkgs/applications/misc/doing/default.nix @@ -17,7 +17,7 @@ bundlerEnv { in a TaskPaper-formatted text file. It allows for multiple sections/categories and flexible output formatting. ''; - homepage = https://brettterpstra.com/projects/doing/; + homepage = "https://brettterpstra.com/projects/doing/"; license = licenses.mit; maintainers = with maintainers; [ ktf nicknovitski ]; platforms = platforms.unix; diff --git a/pkgs/applications/misc/doomseeker/default.nix b/pkgs/applications/misc/doomseeker/default.nix index 1332b265d54..999904a21d3 100644 --- a/pkgs/applications/misc/doomseeker/default.nix +++ b/pkgs/applications/misc/doomseeker/default.nix @@ -1,6 +1,6 @@ -{ stdenv, cmake, fetchFromBitbucket, pkgconfig, qtbase, qttools, qtmultimedia, zlib, bzip2, xxd }: +{ stdenv, mkDerivation, cmake, fetchFromBitbucket, pkgconfig, qtbase, qttools, qtmultimedia, zlib, bzip2, xxd }: -stdenv.mkDerivation { +mkDerivation { pname = "doomseeker"; version = "2018-03-05"; @@ -13,16 +13,13 @@ stdenv.mkDerivation { patches = [ ./fix_paths.patch ./qt_build_fix.patch ]; + nativeBuildInputs = [ cmake qttools pkgconfig xxd ]; buildInputs = [ qtbase qtmultimedia zlib bzip2 ]; - nativeBuildInputs = [ cmake qttools pkgconfig xxd ]; - - enableParallelBuilding = true; - - NIX_CFLAGS_COMPILE = stdenv.lib.optional stdenv.cc.isClang "-Wno-error=format-security"; + hardeningDisable = stdenv.lib.optional stdenv.isDarwin "format"; meta = with stdenv.lib; { - homepage = http://doomseeker.drdteam.org/; + homepage = "http://doomseeker.drdteam.org/"; description = "Multiplayer server browser for many Doom source ports"; license = licenses.gpl2; platforms = platforms.unix; diff --git a/pkgs/applications/misc/dotfiles/default.nix b/pkgs/applications/misc/dotfiles/default.nix index 5150f13fb80..b515074fd47 100644 --- a/pkgs/applications/misc/dotfiles/default.nix +++ b/pkgs/applications/misc/dotfiles/default.nix @@ -17,7 +17,7 @@ pythonPackages.buildPythonApplication rec { meta = with stdenv.lib; { description = "Easily manage your dotfiles"; - homepage = https://github.com/jbernard/dotfiles; + homepage = "https://github.com/jbernard/dotfiles"; license = licenses.isc; }; } diff --git a/pkgs/applications/misc/dozenal/default.nix b/pkgs/applications/misc/dozenal/default.nix index 226bdea0301..05d3ddb7cfb 100644 --- a/pkgs/applications/misc/dozenal/default.nix +++ b/pkgs/applications/misc/dozenal/default.nix @@ -54,7 +54,7 @@ stdenv.mkDerivation rec { Roman numerals. Arbitrary ranks and symbols may be used. Defaults to dozenal Roman numerals. ''; - homepage = https://github.com/dgoodmaniii/dozenal/; + homepage = "https://github.com/dgoodmaniii/dozenal/"; maintainers = with stdenv.lib.maintainers; [ CharlesHD ]; license = stdenv.lib.licenses.gpl3; }; diff --git a/pkgs/applications/misc/eaglemode/default.nix b/pkgs/applications/misc/eaglemode/default.nix index 5d99cbaa988..052e290120d 100644 --- a/pkgs/applications/misc/eaglemode/default.nix +++ b/pkgs/applications/misc/eaglemode/default.nix @@ -34,7 +34,7 @@ stdenv.mkDerivation rec { ''; meta = with stdenv.lib; { - homepage = http://eaglemode.sourceforge.net; + homepage = "http://eaglemode.sourceforge.net"; description = "Zoomable User Interface"; license = licenses.gpl3; maintainers = with maintainers; [ ]; diff --git a/pkgs/applications/misc/electron-cash/default.nix b/pkgs/applications/misc/electron-cash/default.nix index e6cfca5667e..1616c082c01 100644 --- a/pkgs/applications/misc/electron-cash/default.nix +++ b/pkgs/applications/misc/electron-cash/default.nix @@ -1,14 +1,14 @@ -{ lib, fetchFromGitHub, python3Packages, qtbase, wrapQtAppsHook }: +{ lib, fetchFromGitHub, python3Packages, qtbase, wrapQtAppsHook, secp256k1 }: python3Packages.buildPythonApplication rec { pname = "electron-cash"; - version = "4.0.11"; + version = "4.0.14"; src = fetchFromGitHub { owner = "Electron-Cash"; repo = "Electron-Cash"; rev = version; - sha256 = "1k4zbaj0g8bgk1l5vrb835a8bqfay2707bcb4ql2vx4igcwpb680"; + sha256 = "1dp7cj1185h6xfz6jzh0iq58zvg3wq9hl96bkgxkf5h4ygni2vm6"; }; propagatedBuildInputs = with python3Packages; [ @@ -25,6 +25,7 @@ python3Packages.buildPythonApplication rec { requests tlslite-ng qdarkstyle + stem # plugins keepkey @@ -36,7 +37,7 @@ python3Packages.buildPythonApplication rec { postPatch = '' substituteInPlace contrib/requirements/requirements.txt \ - --replace "qdarkstyle<2.6" "qdarkstyle<3" + --replace "qdarkstyle==2.6.8" "qdarkstyle<3" substituteInPlace setup.py \ --replace "(share_dir" "(\"share\"" @@ -56,8 +57,14 @@ python3Packages.buildPythonApplication rec { --replace "Exec=electron-cash" "Exec=$out/bin/electron-cash" ''; + # If secp256k1 wasn't added to the library path, the following warning is given: + # + # Electron Cash was unable to find the secp256k1 library on this system. + # Elliptic curve cryptography operations will be performed in slow + # Python-only mode. postFixup = '' - wrapQtApp $out/bin/electron-cash + wrapQtApp $out/bin/electron-cash \ + --prefix LD_LIBRARY_PATH : ${secp256k1}/lib ''; doInstallCheck = true; @@ -73,7 +80,7 @@ python3Packages.buildPythonApplication rec { and the ability to perform transactions without downloading a copy of the blockchain. ''; - homepage = https://www.electroncash.org/; + homepage = "https://www.electroncash.org/"; platforms = platforms.linux; maintainers = with maintainers; [ lassulus nyanloutre ]; license = licenses.mit; diff --git a/pkgs/applications/misc/electrum/dash.nix b/pkgs/applications/misc/electrum/dash.nix index fc5192bb5e4..33a8284744e 100644 --- a/pkgs/applications/misc/electrum/dash.nix +++ b/pkgs/applications/misc/electrum/dash.nix @@ -39,7 +39,7 @@ python2Packages.buildPythonApplication rec { meta = with stdenv.lib; { description = "Electrum DASH"; - homepage = https://github.com/dashpay/electrum-dash; + homepage = "https://github.com/dashpay/electrum-dash"; license = licenses.gpl3; maintainers = with maintainers; [ np ]; knownVulnerabilities = [ "CVE-2018-1000022" ]; diff --git a/pkgs/applications/misc/electrum/default.nix b/pkgs/applications/misc/electrum/default.nix index df95b26b9c5..d1011548b2a 100644 --- a/pkgs/applications/misc/electrum/default.nix +++ b/pkgs/applications/misc/electrum/default.nix @@ -90,6 +90,7 @@ python3Packages.buildPythonApplication { '' + (if enableQt then '' substituteInPlace ./electrum/qrscanner.py \ --replace ${libzbar_name} ${zbar.lib}/lib/libzbar${stdenv.hostPlatform.extensions.sharedLibrary} + sed -i 's/qdarkstyle<2.7/qdarkstyle<3.0/' contrib/requirements/requirements.txt '' else '' sed -i '/qdarkstyle/d' contrib/requirements/requirements.txt ''); @@ -142,7 +143,7 @@ python3Packages.buildPythonApplication { and the ability to perform transactions without downloading a copy of the blockchain. ''; - homepage = https://electrum.org/; + homepage = "https://electrum.org/"; license = licenses.mit; platforms = platforms.all; maintainers = with maintainers; [ ehmry joachifm np ]; diff --git a/pkgs/applications/misc/electrum/ltc.nix b/pkgs/applications/misc/electrum/ltc.nix index 88f44c6cc85..b7c655caaaf 100644 --- a/pkgs/applications/misc/electrum/ltc.nix +++ b/pkgs/applications/misc/electrum/ltc.nix @@ -48,7 +48,7 @@ python3Packages.buildPythonApplication rec { about losing your litecoins to theft or hardware failure. No waiting, no lengthy blockchain downloads and no syncing to the network. ''; - homepage = https://electrum-ltc.org/; + homepage = "https://electrum-ltc.org/"; license = licenses.mit; platforms = platforms.linux; maintainers = with maintainers; [ ]; diff --git a/pkgs/applications/misc/elogind/default.nix b/pkgs/applications/misc/elogind/default.nix index 3d71d9855d0..78dc54497dd 100644 --- a/pkgs/applications/misc/elogind/default.nix +++ b/pkgs/applications/misc/elogind/default.nix @@ -29,13 +29,13 @@ with stdenv.lib; stdenv.mkDerivation rec { pname = "elogind"; - version = "241.4"; + version = "243.7"; src = fetchFromGitHub { owner = "elogind"; repo = pname; rev = "v${version}"; - sha256 = "13nd0chackqclgvw43910k4pkw2q773dh6wq9s5f3d97ibnik48k"; + sha256 = "0cihdf7blhncm2359qxli24j9l3dkn15gjys5vpjwny80zlym5ma"; }; nativeBuildInputs = [ @@ -73,7 +73,7 @@ stdenv.mkDerivation rec { ]; meta = { - homepage = https://github.com/elogind/elogind; + homepage = "https://github.com/elogind/elogind"; description = ''The systemd project's "logind", extracted to a standalone package''; platforms = platforms.linux; # probably more license = licenses.lgpl21Plus; diff --git a/pkgs/applications/misc/emem/default.nix b/pkgs/applications/misc/emem/default.nix index 62358d41cc5..e0fcc221100 100644 --- a/pkgs/applications/misc/emem/default.nix +++ b/pkgs/applications/misc/emem/default.nix @@ -29,7 +29,7 @@ EOF ''; meta = with stdenv.lib; { - homepage = https://github.com/ebzzry/emem; + homepage = "https://github.com/ebzzry/emem"; description = "A trivial Markdown to HTML converter"; license = licenses.epl10; maintainers = [ maintainers.ebzzry ]; diff --git a/pkgs/applications/misc/epdfview/default.nix b/pkgs/applications/misc/epdfview/default.nix index de922bb3990..7cbae2271ae 100644 --- a/pkgs/applications/misc/epdfview/default.nix +++ b/pkgs/applications/misc/epdfview/default.nix @@ -27,7 +27,7 @@ stdenv.mkDerivation rec { ]; meta = with stdenv.lib; { - homepage = https://packages.debian.org/wheezy/epdfview; + homepage = "https://packages.debian.org/wheezy/epdfview"; description = "A lightweight PDF document viewer using Poppler and GTK"; longDescription = '' ePDFView is a free lightweight PDF document viewer using Poppler and diff --git a/pkgs/applications/misc/eterm/default.nix b/pkgs/applications/misc/eterm/default.nix index 56cac7ca918..b51acd9fa72 100644 --- a/pkgs/applications/misc/eterm/default.nix +++ b/pkgs/applications/misc/eterm/default.nix @@ -18,7 +18,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Terminal emulator"; - homepage = http://www.eterm.org; + homepage = "http://www.eterm.org"; license = licenses.bsd2; maintainers = [ maintainers.AndersonTorres ]; platforms = platforms.linux; diff --git a/pkgs/applications/misc/etesync-dav/default.nix b/pkgs/applications/misc/etesync-dav/default.nix new file mode 100644 index 00000000000..69e2d3d5598 --- /dev/null +++ b/pkgs/applications/misc/etesync-dav/default.nix @@ -0,0 +1,33 @@ +{ lib, python3Packages, radicale2 }: + +python3Packages.buildPythonApplication rec { + pname = "etesync-dav"; + version = "0.16.0"; + + src = python3Packages.fetchPypi { + inherit pname version; + sha256 = "1r0d52rlhg7dz6hziplzy7ypsfx9lgbs76j3ylinh2csplwkzv69"; + }; + + propagatedBuildInputs = with python3Packages; [ + etesync + flask + flask_wtf + radicale2 + ]; + + checkInputs = with python3Packages; [ + pytest + ]; + + checkPhase = '' + pytest + ''; + + meta = with lib; { + homepage = "https://www.etesync.com/"; + description = "Secure, end-to-end encrypted, and privacy respecting sync for contacts, calendars and tasks"; + license = licenses.gpl3; + maintainers = with maintainers; [ valodim ]; + }; +} diff --git a/pkgs/applications/misc/eureka-editor/default.nix b/pkgs/applications/misc/eureka-editor/default.nix index e9d1317390e..d72aeb629c3 100644 --- a/pkgs/applications/misc/eureka-editor/default.nix +++ b/pkgs/applications/misc/eureka-editor/default.nix @@ -30,7 +30,7 @@ stdenv.mkDerivation rec { ''; meta = with stdenv.lib; { - homepage = http://eureka-editor.sourceforge.net; + homepage = "http://eureka-editor.sourceforge.net"; description = "A map editor for the classic DOOM games, and a few related games such as Heretic and Hexen"; license = licenses.gpl2; platforms = platforms.all; diff --git a/pkgs/applications/misc/evilvte/default.nix b/pkgs/applications/misc/evilvte/default.nix index 984ade077a8..7a5284a527a 100644 --- a/pkgs/applications/misc/evilvte/default.nix +++ b/pkgs/applications/misc/evilvte/default.nix @@ -8,7 +8,7 @@ stdenv.mkDerivation { version = "0.5.2-20140827"; src = fetchgit { - url = https://github.com/caleb-/evilvte.git; + url = "https://github.com/caleb-/evilvte.git"; rev = "8dfa41e26bc640dd8d8c7317ff7d04e3c01ded8a"; sha256 = "70f1d4234d077121e2223a735d749d1b53f0b84393507b635b8a37c3716e94d3"; }; @@ -27,7 +27,7 @@ stdenv.mkDerivation { meta = with stdenv.lib; { description = "VTE based, highly customizable terminal emulator"; - homepage = http://www.calno.com/evilvte; + homepage = "http://www.calno.com/evilvte"; license = licenses.gpl2; maintainers = [ maintainers.bodil ]; platforms = platforms.linux; diff --git a/pkgs/applications/misc/extract_url/default.nix b/pkgs/applications/misc/extract_url/default.nix index f96d3f0f57c..9daaf7268c3 100644 --- a/pkgs/applications/misc/extract_url/default.nix +++ b/pkgs/applications/misc/extract_url/default.nix @@ -32,7 +32,7 @@ in stdenv.mkDerivation rec { ''; meta = with lib; { - homepage = https://www.memoryhole.net/~kyle/extract_url/; + homepage = "https://www.memoryhole.net/~kyle/extract_url/"; description = "Extracts URLs from MIME messages or plain text"; license = licenses.bsd2; maintainers = [ maintainers.qyliss ]; diff --git a/pkgs/applications/misc/far2l/default.nix b/pkgs/applications/misc/far2l/default.nix index 51e9c4371b5..de2ed0d1596 100644 --- a/pkgs/applications/misc/far2l/default.nix +++ b/pkgs/applications/misc/far2l/default.nix @@ -1,10 +1,17 @@ { stdenv, fetchFromGitHub, fetchpatch, makeWrapper, cmake, pkgconfig, wxGTK30, glib, pcre, m4, bash, xdg_utils, gvfs, zip, unzip, gzip, bzip2, gnutar, p7zip, xz, imagemagick, darwin }: -with stdenv.lib; +let + newer-colorer-schemes = fetchFromGitHub { + owner = "colorer"; + repo = "Colorer-schemes"; + rev = "7c831f5e94a90530ace8b2bb9916210e3a2fcda6"; # 2019-11-28 (far2l has older Colorer-schemes) + sha256 = "18vaahdz5i7xdf00c9h9kjjswm4jszywm8zkhva4c4ivr4qqnv2c"; + }; +in stdenv.mkDerivation rec { - build = "unstable-2018-07-19.git${builtins.substring 0 7 src.rev}"; - name = "far2l-2.1.${build}"; + pname = "far2l"; + version = "2019-12-14.git${builtins.substring 0 7 src.rev}"; src = fetchFromGitHub { owner = "elfmz"; @@ -16,16 +23,16 @@ stdenv.mkDerivation rec { nativeBuildInputs = [ cmake pkgconfig m4 makeWrapper imagemagick ]; buildInputs = [ wxGTK30 glib pcre ] - ++ optional stdenv.isDarwin darwin.apple_sdk.frameworks.Cocoa; + ++ stdenv.lib.optional stdenv.isDarwin darwin.apple_sdk.frameworks.Cocoa; - postPatch = optionalString stdenv.isLinux '' + postPatch = stdenv.lib.optionalString stdenv.isLinux '' substituteInPlace far2l/bootstrap/trash.sh \ --replace 'gvfs-trash' '${gvfs}/bin/gvfs-trash' - '' + optionalString stdenv.isDarwin '' + '' + stdenv.lib.optionalString stdenv.isDarwin '' substituteInPlace far2l/CMakeLists.txt \ --replace "-framework System" -lSystem '' + '' - echo 'echo ${build}' > far2l/bootstrap/scripts/vbuild.sh + echo 'echo ${version}' > far2l/bootstrap/scripts/vbuild.sh substituteInPlace far2l/bootstrap/open.sh \ --replace 'xdg-open' '${xdg_utils}/bin/xdg-open' substituteInPlace far2l/vtcompletor.cpp \ @@ -42,14 +49,9 @@ stdenv.mkDerivation rec { --replace '"bzip2 ' '"${bzip2}/bin/bzip2 ' \ --replace '"tar ' '"${gnutar}/bin/tar ' - ( cd colorer/configs/base - patch -p2 < ${ fetchpatch { - name = "nix-language-highlighting.patch"; - url = https://github.com/colorer/Colorer-schemes/commit/64bd06de0a63224b431cd8fc42cd9fa84b8ba7c0.patch; - sha256 = "1mrj1wyxmk7sll9j1jzw6miwi0sfavf654klms24wngnh6hadsch"; - } - } - ) + cp ${newer-colorer-schemes}/hrc/hrc/base/nix.hrc colorer/configs/base/hrc/base/ + cp ${newer-colorer-schemes}/hrc/hrc/base/cpp.hrc colorer/configs/base/hrc/base/ + cp ${newer-colorer-schemes}/hrc/hrc/inet/jscript.hrc colorer/configs/base/hrc/base/ ''; installPhase = '' @@ -59,7 +61,8 @@ stdenv.mkDerivation rec { ln -s -r --force $out/bin/far2l $out/share/far2l/far2l_askpass ln -s -r --force $out/bin/far2l $out/share/far2l/far2l_sudoapp - sed "s,/usr/bin/,$out/bin/," ../far2l/DE/far2l.desktop > $out/share/applications/far2l.desktop + cp ../far2l/DE/far2l.desktop $out/share/applications/far2l.desktop + substituteInPlace $out/share/applications/far2l.desktop --replace \''${CMAKE_INSTALL_PREFIX} "$out" cp ../far2l/DE/icons/hicolor/1024x1024/apps/far2l.svg $out/share/icons/hicolor/scalable/apps/ convert -size 128x128 ../far2l/DE/icons/far2l.svg $out/share/icons/far2l.png @@ -71,13 +74,13 @@ stdenv.mkDerivation rec { wrapProgram $out/bin/far2l --argv0 $out/bin/far2l ''; - stripDebugList = "bin share"; + stripDebugList = [ "bin" "share" ]; enableParallelBuilding = true; - meta = { + meta = with stdenv.lib; { description = "An orthodox file manager"; - homepage = https://github.com/elfmz/far2l; + homepage = "https://github.com/elfmz/far2l"; license = licenses.gpl2; maintainers = [ maintainers.volth ]; platforms = platforms.all; diff --git a/pkgs/applications/misc/fbreader/default.nix b/pkgs/applications/misc/fbreader/default.nix index e7d0e6a63a5..18798807743 100644 --- a/pkgs/applications/misc/fbreader/default.nix +++ b/pkgs/applications/misc/fbreader/default.nix @@ -59,13 +59,13 @@ stdenv.mkDerivation { ++ optional (uiType == "gtk") gtk2 ++ optionals (uiType == "cocoa") [ AppKit Cocoa ]; - makeFlags = "INSTALLDIR=$(out)"; + makeFlags = [ "INSTALLDIR=$(out)" ]; - NIX_CFLAGS_COMPILE = [ "-Wno-error=narrowing" ]; # since gcc-6 + NIX_CFLAGS_COMPILE = "-Wno-error=narrowing"; meta = with stdenv.lib; { description = "An e-book reader for Linux"; - homepage = http://www.fbreader.org/; + homepage = "http://www.fbreader.org/"; license = licenses.gpl3; broken = stdenv.isDarwin # untested, might work || uiType == "gtk"; # builds, but the result is unusable, hangs a lot diff --git a/pkgs/applications/misc/fehlstart/default.nix b/pkgs/applications/misc/fehlstart/default.nix index db78f2ec920..cae637c2c4a 100644 --- a/pkgs/applications/misc/fehlstart/default.nix +++ b/pkgs/applications/misc/fehlstart/default.nix @@ -20,7 +20,7 @@ stdenv.mkDerivation { meta = with stdenv.lib; { description = "Small desktop application launcher with reasonable memory footprint"; - homepage = https://gitlab.com/fehlstart/fehlstart; + homepage = "https://gitlab.com/fehlstart/fehlstart"; license = licenses.gpl3; maintainers = [ maintainers.mounium ]; platforms = platforms.all; diff --git a/pkgs/applications/misc/fetchmail/default.nix b/pkgs/applications/misc/fetchmail/default.nix index 6c4ecf6fa39..9e379009027 100644 --- a/pkgs/applications/misc/fetchmail/default.nix +++ b/pkgs/applications/misc/fetchmail/default.nix @@ -1,15 +1,15 @@ { stdenv, fetchurl, openssl }: let - version = "6.3.26"; + version = "6.4.3"; in stdenv.mkDerivation { pname = "fetchmail"; inherit version; src = fetchurl { - url = "mirror://sourceforge/fetchmail.berlios/fetchmail-${version}.tar.bz2"; - sha256 = "08rafrs1dlr11myr0p99kg4k80qyy0fa63gg3ac88zn49174lwhw"; + url = "mirror://sourceforge/fetchmail/fetchmail-${version}.tar.xz"; + sha256 = "1r6k14m40ni9114i3j1lr6zwpxky6k89mycgxxg0cpdap4a0wdmh"; }; buildInputs = [ openssl ]; @@ -17,7 +17,7 @@ stdenv.mkDerivation { configureFlags = [ "--with-ssl=${openssl.dev}" ]; meta = { - homepage = https://www.fetchmail.info/; + homepage = "https://www.fetchmail.info/"; description = "A full-featured remote-mail retrieval and forwarding utility"; longDescription = '' A full-featured, robust, well-documented remote-mail retrieval and diff --git a/pkgs/applications/misc/fff/default.nix b/pkgs/applications/misc/fff/default.nix index e87c86f1b4b..1397f0a057d 100644 --- a/pkgs/applications/misc/fff/default.nix +++ b/pkgs/applications/misc/fff/default.nix @@ -25,7 +25,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Fucking Fast File-Manager"; - homepage = https://github.com/dylanaraps/fff; + homepage = "https://github.com/dylanaraps/fff"; license = licenses.mit; maintainers = [ maintainers.tadeokondrak ]; platforms = platforms.all; diff --git a/pkgs/applications/misc/filet/default.nix b/pkgs/applications/misc/filet/default.nix index edee9ab33e9..ee4b05fa689 100644 --- a/pkgs/applications/misc/filet/default.nix +++ b/pkgs/applications/misc/filet/default.nix @@ -15,7 +15,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "A fucking fucking fast file fucker (afffff)"; - homepage = https://github.com/buffet/filet; + homepage = "https://github.com/buffet/filet"; license = licenses.mpl20; platforms = platforms.all; maintainers = with maintainers; [ buffet ]; diff --git a/pkgs/applications/misc/firestarter/default.nix b/pkgs/applications/misc/firestarter/default.nix index 82bcf5a4aa0..05c535e62c0 100644 --- a/pkgs/applications/misc/firestarter/default.nix +++ b/pkgs/applications/misc/firestarter/default.nix @@ -30,7 +30,7 @@ stdenv.mkDerivation rec { ''; meta = with stdenv.lib; { - homepage = https://tu-dresden.de/zih/forschung/projekte/firestarter; + homepage = "https://tu-dresden.de/zih/forschung/projekte/firestarter"; description = "Processor Stress Test Utility"; platforms = platforms.linux; maintainers = with maintainers; [ astro ]; diff --git a/pkgs/applications/misc/flamerobin/default.nix b/pkgs/applications/misc/flamerobin/default.nix index 06cf3c06ffa..2e389c753e2 100644 --- a/pkgs/applications/misc/flamerobin/default.nix +++ b/pkgs/applications/misc/flamerobin/default.nix @@ -25,7 +25,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Database administration tool for Firebird RDBMS"; - homepage = https://github.com/mariuz/flamerobin; + homepage = "https://github.com/mariuz/flamerobin"; license = licenses.bsdOriginal; maintainers = with maintainers; [ uralbash ]; platforms = platforms.unix; diff --git a/pkgs/applications/misc/fluxboxlauncher/default.nix b/pkgs/applications/misc/fluxboxlauncher/default.nix new file mode 100755 index 00000000000..4794e14b469 --- /dev/null +++ b/pkgs/applications/misc/fluxboxlauncher/default.nix @@ -0,0 +1,56 @@ +{ lib +, fetchFromGitHub +, python3 +, gtk3 +, wrapGAppsHook +, glibcLocales +, gobject-introspection +, gettext +, pango +, gdk-pixbuf +, atk +, fluxbox +}: + +python3.pkgs.buildPythonApplication rec { + pname = "fluxboxlauncher"; + version = "0.2.1"; + + src = fetchFromGitHub { + owner = "mothsart"; + repo = "fluxboxlauncher"; + rev = "0.2.1"; + sha256 = "024h1dk0bhc5s4dldr6pqabrgcqih9p8cys5lqgkgz406y4vyzvf"; + }; + + nativeBuildInputs = [ + wrapGAppsHook + gobject-introspection + pango + gdk-pixbuf + atk + gettext + ]; + + buildInputs = [ + glibcLocales + gtk3 + python3 + fluxbox + ]; + + makeWrapperArgs = [ "--set LOCALE_ARCHIVE ${glibcLocales}/lib/locale/locale-archive" + "--set CHARSET en_us.UTF-8" ]; + + propagatedBuildInputs = with python3.pkgs; [ + pygobject3 + ]; + + meta = with lib; { + description = "A Gui editor (gtk) to configure applications launching on a fluxbox session"; + homepage = "https://github.com/mothsART/fluxboxlauncher"; + maintainers = with maintainers; [ mothsart ]; + license = licenses.bsdOriginal; + platforms = platforms.linux; + }; +} diff --git a/pkgs/applications/misc/fme/default.nix b/pkgs/applications/misc/fme/default.nix index 2ca059820ef..cf93729eddd 100644 --- a/pkgs/applications/misc/fme/default.nix +++ b/pkgs/applications/misc/fme/default.nix @@ -26,7 +26,7 @@ stdenv.mkDerivation rec{ Its user-friendly interface will help you to edit, delete, move (Drag and Drop) a row, a submenu, etc very easily. ''; - homepage = https://github.com/rdehouss/fme/; + homepage = "https://github.com/rdehouss/fme/"; license = licenses.gpl2; maintainers = [ maintainers.AndersonTorres ]; platforms = platforms.linux; diff --git a/pkgs/applications/misc/font-manager/default.nix b/pkgs/applications/misc/font-manager/default.nix index edb47e11dd7..008e59eebee 100644 --- a/pkgs/applications/misc/font-manager/default.nix +++ b/pkgs/applications/misc/font-manager/default.nix @@ -1,17 +1,17 @@ -{ stdenv, fetchFromGitHub, meson, ninja, gettext, python3, fetchpatch, +{ stdenv, fetchFromGitHub, meson, ninja, gettext, python3, pkgconfig, libxml2, json-glib , sqlite, itstool, librsvg, yelp-tools, vala, gtk3, gnome3, desktop-file-utils, wrapGAppsHook, gobject-introspection }: stdenv.mkDerivation rec { pname = "font-manager"; - version = "0.7.5"; + version = "0.7.7"; src = fetchFromGitHub { owner = "FontManager"; repo = "master"; rev = version; - sha256 = "16hma8rrkam6ngn5vbdaryn31vdixvii6920g9z928gylz9xkd3g"; + sha256 = "1bzqvspplp1zj0n0869jqbc60wgbjhf0vdrn5bj8dfawxynh8s5f"; }; nativeBuildInputs = [ @@ -38,26 +38,13 @@ stdenv.mkDerivation rec { gnome3.adwaita-icon-theme ]; - mesonFlags = [ - "-Ddisable_pycompile=true" - ]; - - patches = [ - # fix build with Vala 0.46 - (fetchpatch { - url = "https://github.com/FontManager/font-manager/commit/c73b40de11f376f4515a0edfe97fb3721a264b35.patch"; - sha256 = "0lacwsifgvda2r3z6j2a0svdqr6mgav7zkvih35xa8155y8wfpnw"; - excludes = [ "fedora/font-manager.spec" ]; - }) - ]; - postPatch = '' chmod +x meson_post_install.py patchShebangs meson_post_install.py ''; meta = with stdenv.lib; { - homepage = https://fontmanager.github.io/; + homepage = "https://fontmanager.github.io/"; description = "Simple font management for GTK desktop environments"; longDescription = '' Font Manager is intended to provide a way for average users to diff --git a/pkgs/applications/misc/formatter/default.nix b/pkgs/applications/misc/formatter/default.nix index 26478c7f2ed..b777c3b72e7 100644 --- a/pkgs/applications/misc/formatter/default.nix +++ b/pkgs/applications/misc/formatter/default.nix @@ -20,13 +20,13 @@ stdenv.mkDerivation rec { pname = "formatter"; - version = "0.3.1"; + version = "0.3.2"; src = fetchFromGitHub { owner = "Djaler"; repo = "Formatter"; rev = version; - sha256 = "1ghxd2h0pklhlrjslfr46vza1kjsm3mr0sdzzjiqi9jd6hddnk7i"; + sha256 = "0da1dvzsvbwg1ys19yf0n080xc0hjwin9zacjndb24jvphy3bxql"; }; patches = [ @@ -61,6 +61,12 @@ stdenv.mkDerivation rec { patchShebangs meson/post_install.py ''; + passthru = { + updateScript = pantheon.updateScript { + attrPath = pname; + }; + }; + meta = with stdenv.lib; { description = "A simple formatter designed for elementary OS"; homepage = "https://github.com/Djaler/Formatter"; diff --git a/pkgs/applications/misc/foxtrotgps/default.nix b/pkgs/applications/misc/foxtrotgps/default.nix new file mode 100644 index 00000000000..dc3f1922c21 --- /dev/null +++ b/pkgs/applications/misc/foxtrotgps/default.nix @@ -0,0 +1,40 @@ +{ fetchurl, stdenv, pkg-config, wrapGAppsHook, curl, gnome2, gpsd, gtk2 +, intltool, libexif, python3Packages, sqlite }: + +stdenv.mkDerivation rec { + pname = "foxtrotgps"; + version = "1.2.2"; + + src = fetchurl { + url = "https://www.foxtrotgps.org/releases/foxtrotgps-${version}.tar.xz"; + sha256 = "0grn35j5kwc286dxx18fv32qa330xmalqliwy6zirxmj6dffvrkg"; + }; + + nativeBuildInputs = [ pkg-config wrapGAppsHook ]; + + buildInputs = [ + curl.dev + gnome2.libglade.dev + gpsd + gtk2.dev + intltool + libexif + sqlite.dev + (python3Packages.python.withPackages (pythonPackages: with python3Packages; + [ beautifulsoup4 feedparser sqlalchemy ])) + ]; + + meta = with stdenv.lib; { + description = "GPS/GIS application optimized for small screens"; + longDescription = '' + An easy to use, free & open-source GPS/GIS application that works well on + small screens, and is especially suited to touch input. It spun off of + tangoGPS in 2010 with a focus on cooperation and fostering community + innovation. + ''; + homepage = "https://www.foxtrotgps.org/"; + license = licenses.gpl2; + platforms = platforms.unix; + maintainers = with maintainers; [ wucke13 ]; + }; +} diff --git a/pkgs/applications/misc/freemind/default.nix b/pkgs/applications/misc/freemind/default.nix index aee3937689b..5774320220a 100644 --- a/pkgs/applications/misc/freemind/default.nix +++ b/pkgs/applications/misc/freemind/default.nix @@ -35,7 +35,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Mind-mapping software"; - homepage = http://freemind.sourceforge.net/wiki/index.php/Main_Page; + homepage = "http://freemind.sourceforge.net/wiki/index.php/Main_Page"; license = licenses.gpl2Plus; platforms = platforms.linux; }; diff --git a/pkgs/applications/misc/fsv/default.nix b/pkgs/applications/misc/fsv/default.nix index bbc78efe5cd..8b6898958d3 100644 --- a/pkgs/applications/misc/fsv/default.nix +++ b/pkgs/applications/misc/fsv/default.nix @@ -44,7 +44,7 @@ in stdenv.mkDerivation rec { hard drive, or any arbitrarily large collection of files, limited only by the host computer's memory and graphics hardware. ''; - homepage = https://github.com/mcuelenaere/fsv; + homepage = "https://github.com/mcuelenaere/fsv"; license = licenses.lgpl2; platforms = platforms.linux; maintainers = with maintainers; [ rnhmjoj ]; diff --git a/pkgs/applications/misc/fusee-interfacee-tk/default.nix b/pkgs/applications/misc/fusee-interfacee-tk/default.nix new file mode 100644 index 00000000000..91a7b0ed37f --- /dev/null +++ b/pkgs/applications/misc/fusee-interfacee-tk/default.nix @@ -0,0 +1,40 @@ +{ stdenv , fetchFromGitHub , python3 , makeWrapper }: + +let pythonEnv = python3.withPackages(ps: [ ps.tkinter ps.pyusb ]); +in stdenv.mkDerivation rec { + pname = "fusee-interfacee-tk"; + version = "1.0.1"; + + src = fetchFromGitHub { + owner = "nh-server"; + repo = pname; + rev = "V${version}"; + sha256 = "0ngwbwsj999flprv14xvhk7lp51nprrvcnlbnbk6y4qx5casm5md"; + }; + + nativeBuildInputs = [ makeWrapper ]; + buildInputs = [ pythonEnv ]; + + installPhase = '' + mkdir -p $out/bin + + # The program isn't just called app, so I'm renaming it based on the repo name + # It also isn't a standard program, so we need to append the shebang to the top + echo "#!${pythonEnv.interpreter}" > $out/bin/fusee-interfacee-tk + cat app.py >> $out/bin/fusee-interfacee-tk + chmod +x $out/bin/fusee-interfacee-tk + + # app.py depends on these to run + cp *.py $out/bin/ + cp intermezzo.bin $out/bin/intermezzo.bin + ''; + + meta = with stdenv.lib; { + homepage = "https://github.com/nh-server/fusee-interfacee-tk"; + description = "A tool to send .bin files to a Nintendo Switch in RCM mode"; + longDescription = "A mod of falquinhos Fusée Launcher for use with Nintendo Homebrew Switch Guide. It also adds the ability to mount SD while in RCM. + Must be run as sudo."; + maintainers = with maintainers; [ kristian-brucaj ]; + license = licenses.gpl2; + }; +} diff --git a/pkgs/applications/misc/gImageReader/default.nix b/pkgs/applications/misc/gImageReader/default.nix index 67d4bd65a9f..2884fca6239 100644 --- a/pkgs/applications/misc/gImageReader/default.nix +++ b/pkgs/applications/misc/gImageReader/default.nix @@ -62,7 +62,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "A simple Gtk/Qt front-end to tesseract-ocr"; - homepage = https://github.com/manisandro/gImageReader; + homepage = "https://github.com/manisandro/gImageReader"; license = licenses.gpl3Plus; maintainers = with maintainers; [teto]; platforms = platforms.linux; diff --git a/pkgs/applications/misc/galculator/default.nix b/pkgs/applications/misc/galculator/default.nix index ecf8ae9da8d..1964ba6aaf7 100644 --- a/pkgs/applications/misc/galculator/default.nix +++ b/pkgs/applications/misc/galculator/default.nix @@ -30,7 +30,7 @@ stdenv.mkDerivation rec { - Binary arithmetic of configurable bit length and signedness - Quad-precision floating point arithmetic, and 112-bit binary arithmetic ''; - homepage = http://galculator.sourceforge.net/; + homepage = "http://galculator.sourceforge.net/"; license = licenses.gpl2Plus; maintainers = [ maintainers.AndersonTorres ]; platforms = platforms.linux; diff --git a/pkgs/applications/misc/gallery-dl/default.nix b/pkgs/applications/misc/gallery-dl/default.nix index 1a9789114dc..791db13e423 100644 --- a/pkgs/applications/misc/gallery-dl/default.nix +++ b/pkgs/applications/misc/gallery-dl/default.nix @@ -2,11 +2,11 @@ python3Packages.buildPythonApplication rec { pname = "gallery_dl"; - version = "1.11.1"; + version = "1.13.3"; src = python3Packages.fetchPypi { inherit pname version; - sha256 = "08py1f48ylw83712h8313rxz55igbszxcwr2yxkchpr4233avzph"; + sha256 = "0nhbhli45i2xhkmyj9mpg8fn1l58y2zmr6nnnnms557wpdpg112x"; }; doCheck = false; @@ -14,7 +14,7 @@ python3Packages.buildPythonApplication rec { meta = { description = "Command-line program to download image-galleries and -collections from several image hosting sites"; - homepage = https://github.com/mikf/gallery-dl; + homepage = "https://github.com/mikf/gallery-dl"; license = lib.licenses.gpl2; maintainers = with lib.maintainers; [ dawidsowa ]; }; diff --git a/pkgs/applications/misc/gammu/default.nix b/pkgs/applications/misc/gammu/default.nix index fb6902634da..ff3408eb8dd 100644 --- a/pkgs/applications/misc/gammu/default.nix +++ b/pkgs/applications/misc/gammu/default.nix @@ -28,7 +28,7 @@ stdenv.mkDerivation rec { enableParallelBuilding = true; meta = { - homepage = https://wammu.eu/gammu/; + homepage = "https://wammu.eu/gammu/"; description = "Command line utility and library to control mobile phones"; license = licenses.gpl2; platforms = platforms.linux; diff --git a/pkgs/applications/misc/ganttproject-bin/default.nix b/pkgs/applications/misc/ganttproject-bin/default.nix index 96d3d34046e..2e8478f41d3 100644 --- a/pkgs/applications/misc/ganttproject-bin/default.nix +++ b/pkgs/applications/misc/ganttproject-bin/default.nix @@ -49,8 +49,8 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Project scheduling and management"; - homepage = https://www.ganttproject.biz/; - downloadPage = https://www.ganttproject.biz/download; + homepage = "https://www.ganttproject.biz/"; + downloadPage = "https://www.ganttproject.biz/download"; # GanttProject itself is GPL3+. All bundled libraries are declared # ‘GPL3-compatible’. See ${downloadPage} for detailed information. license = licenses.gpl3Plus; diff --git a/pkgs/applications/misc/garmin-plugin/default.nix b/pkgs/applications/misc/garmin-plugin/default.nix index b97b079ab66..ba6868b62f6 100644 --- a/pkgs/applications/misc/garmin-plugin/default.nix +++ b/pkgs/applications/misc/garmin-plugin/default.nix @@ -2,7 +2,7 @@ stdenv.mkDerivation { name = "garmin-plugin-0.3.26"; src = fetchurl { - url = https://github.com/adiesner/GarminPlugin/archive/V0.3.26.tar.gz; + url = "https://github.com/adiesner/GarminPlugin/archive/V0.3.26.tar.gz"; sha256 = "15gads1fj4sj970m5960dgnhys41ksi4cm53ldkf67wn8dc9i4k0"; }; sourceRoot = "GarminPlugin-0.3.26/src"; @@ -18,7 +18,7 @@ stdenv.mkDerivation { cp npGarminPlugin.so $out/lib/mozilla/plugins ''; meta = { - homepage = http://www.andreas-diesner.de/garminplugin; + homepage = "http://www.andreas-diesner.de/garminplugin"; license = stdenv.lib.licenses.gpl3; maintainers = [ stdenv.lib.maintainers.ocharles ]; platforms = stdenv.lib.platforms.linux; diff --git a/pkgs/applications/misc/gcal/default.nix b/pkgs/applications/misc/gcal/default.nix index f5eb6e188b7..24906b11dd5 100644 --- a/pkgs/applications/misc/gcal/default.nix +++ b/pkgs/applications/misc/gcal/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, ncurses }: +{ stdenv, fetchurl, ncurses, fetchpatch }: stdenv.mkDerivation rec { pname = "gcal"; @@ -9,6 +9,13 @@ stdenv.mkDerivation rec { sha256 = "1av11zkfirbixn05hyq4xvilin0ncddfjqzc4zd9pviyp506rdci"; }; + patches = [ + (fetchpatch { + url = "https://src.fedoraproject.org/rpms/gcal/raw/master/f/gcal-glibc-no-libio.patch"; + sha256 = "0l4nw9kgzsay32rsdwvs75pbp4fhx6pfm85paynfbd20cdm2n2kv"; + }) + ]; + enableParallelBuilding = true; buildInputs = [ ncurses ]; @@ -21,7 +28,7 @@ stdenv.mkDerivation rec { hybrid and proleptic Julian and Gregorian calendar sheets. It also displays holiday lists for many countries around the globe. ''; - homepage = https://www.gnu.org/software/gcal/; + homepage = "https://www.gnu.org/software/gcal/"; license = stdenv.lib.licenses.gpl3Plus; platforms = stdenv.lib.platforms.unix; maintainers = [ stdenv.lib.maintainers.romildo ]; diff --git a/pkgs/applications/misc/gcalcli/default.nix b/pkgs/applications/misc/gcalcli/default.nix index 8381f182e5d..b8b1193058b 100644 --- a/pkgs/applications/misc/gcalcli/default.nix +++ b/pkgs/applications/misc/gcalcli/default.nix @@ -30,7 +30,7 @@ buildPythonApplication rec { meta = with lib; { description = "CLI for Google Calendar"; - homepage = https://github.com/insanum/gcalcli; + homepage = "https://github.com/insanum/gcalcli"; license = licenses.mit; maintainers = with maintainers; [ nocoolnametom ]; inherit version; diff --git a/pkgs/applications/misc/geoipupdate/default.nix b/pkgs/applications/misc/geoipupdate/default.nix index 57060179473..b7b90448e4b 100644 --- a/pkgs/applications/misc/geoipupdate/default.nix +++ b/pkgs/applications/misc/geoipupdate/default.nix @@ -2,16 +2,16 @@ buildGoModule rec { pname = "geoipupdate"; - version = "4.1.5"; + version = "4.2.2"; src = fetchFromGitHub { owner = "maxmind"; repo = "geoipupdate"; rev = "v${version}"; - sha256 = "1k0bmsqgw35sdmaafinlr4qd5910fi598i8irxrz11394d3c8giv"; + sha256 = "057f9kp8g3wixjh9dm58g0qvzfcmhwbk1d573ldly4g5404r9bvf"; }; - modSha256 = "0mk6zp6byq3jc6wipx53bg5igry114klq5w8isc0z6r63zjsk6f6"; + modSha256 = "1bypanvrkcqp8rk84cv2569671irgaf3cy27lcrknyina4pdvir5"; meta = with stdenv.lib; { description = "Automatic GeoIP database updater"; diff --git a/pkgs/applications/misc/get_iplayer/default.nix b/pkgs/applications/misc/get_iplayer/default.nix index baf2f5165d6..9c05e984720 100644 --- a/pkgs/applications/misc/get_iplayer/default.nix +++ b/pkgs/applications/misc/get_iplayer/default.nix @@ -4,18 +4,20 @@ with stdenv.lib; perlPackages.buildPerlPackage rec { pname = "get_iplayer"; - version = "2.99"; + version = "3.24"; src = fetchFromGitHub { owner = "get-iplayer"; repo = "get_iplayer"; rev = "v${version}"; - sha256 = "085bgwkjnaqp96gvd2s8qmkw69rz91si1sgzqdqbplkzj9bk2qii"; + sha256 = "0yd84ncb6cjrk4v4kz3zrddkl7iwkm3zlfbjyswd9hanp8fvd4q3"; }; nativeBuildInputs = [ makeWrapper ]; buildInputs = [ perl ]; - propagatedBuildInputs = with perlPackages; [HTMLParser HTTPCookies LWP XMLLibXML XMLSimple]; + propagatedBuildInputs = with perlPackages; [ + HTMLParser HTTPCookies LWP LWPProtocolHttps XMLLibXML XMLSimple + ]; preConfigure = "touch Makefile.PL"; doCheck = false; @@ -31,8 +33,9 @@ perlPackages.buildPerlPackage rec { meta = { description = "Downloads TV and radio from BBC iPlayer"; license = licenses.gpl3Plus; - homepage = https://squarepenguin.co.uk/; + homepage = "https://squarepenguin.co.uk/"; platforms = platforms.all; + maintainers = with maintainers; [ rika ]; }; } diff --git a/pkgs/applications/misc/getxbook/default.nix b/pkgs/applications/misc/getxbook/default.nix index b2a992b850e..8ac0b000c46 100644 --- a/pkgs/applications/misc/getxbook/default.nix +++ b/pkgs/applications/misc/getxbook/default.nix @@ -9,7 +9,11 @@ stdenv.mkDerivation rec { sha256 = "0ihwrx4gspj8l7fc8vxch6dpjrw1lvv9z3c19f0wxnmnxhv1cjvs"; }; - NIX_CFLAGS_COMPILE = [ "-Wno-error=format-truncation" "-Wno-error=deprecated-declarations" ]; + NIX_CFLAGS_COMPILE = builtins.toString [ + "-Wno-error=format-truncation" + "-Wno-error=deprecated-declarations" + "-Wno-error=stringop-overflow" + ]; buildInputs = [ openssl ]; @@ -17,7 +21,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "A collection of tools to download books from Google Books"; - homepage = https://njw.me.uk/getxbook/; + homepage = "https://njw.me.uk/getxbook/"; license = licenses.isc; maintainers = with maintainers; [ obadz ]; platforms = platforms.all; diff --git a/pkgs/applications/misc/girara/default.nix b/pkgs/applications/misc/girara/default.nix index 6bfb4907807..45bca7d3fbf 100644 --- a/pkgs/applications/misc/girara/default.nix +++ b/pkgs/applications/misc/girara/default.nix @@ -3,13 +3,13 @@ stdenv.mkDerivation rec { pname = "girara"; - version = "0.3.3"; + version = "0.3.4"; outputs = [ "out" "dev" ]; src = fetchurl { url = "https://git.pwmt.org/pwmt/${pname}/-/archive/${version}/${pname}-${version}.tar.gz"; - sha256 = "13vr62kkkqs2xsrmsn114n6c6084ix1qyjksczqsc3s2y3bdsmj4"; + sha256 = "08zdsr4zwi49facsl5596l0g1xqqv2jk3sqk841gkxwawcggim44"; }; nativeBuildInputs = [ meson ninja pkgconfig gettext check dbus xvfb_run ]; diff --git a/pkgs/applications/misc/gkrellm/default.nix b/pkgs/applications/misc/gkrellm/default.nix index f44cdd0bad7..bc7c66ee531 100644 --- a/pkgs/applications/misc/gkrellm/default.nix +++ b/pkgs/applications/misc/gkrellm/default.nix @@ -38,7 +38,7 @@ stdenv.mkDerivation rec { manager, Gtk, or any other theme. ''; - homepage = http://gkrellm.srcbox.net; + homepage = "http://gkrellm.srcbox.net"; license = licenses.gpl3Plus; maintainers = [ ]; platforms = platforms.linux; diff --git a/pkgs/applications/misc/gksu/default.nix b/pkgs/applications/misc/gksu/default.nix index 4a806cbb183..bfa50447761 100644 --- a/pkgs/applications/misc/gksu/default.nix +++ b/pkgs/applications/misc/gksu/default.nix @@ -45,7 +45,7 @@ stdenv.mkDerivation rec { programs that need to ask a user's password to run another program as another user. ''; - homepage = https://www.nongnu.org/gksu/; + homepage = "https://www.nongnu.org/gksu/"; license = stdenv.lib.licenses.gpl2; maintainers = [ stdenv.lib.maintainers.romildo ]; platforms = stdenv.lib.platforms.linux; diff --git a/pkgs/applications/misc/glava/default.nix b/pkgs/applications/misc/glava/default.nix index 519df42c789..88991bb40a1 100644 --- a/pkgs/applications/misc/glava/default.nix +++ b/pkgs/applications/misc/glava/default.nix @@ -82,7 +82,7 @@ in description = '' OpenGL audio spectrum visualizer ''; - homepage = https://github.com/wacossusca34/glava; + homepage = "https://github.com/wacossusca34/glava"; platforms = platforms.linux; license = licenses.gpl3; maintainers = with maintainers; [ diff --git a/pkgs/applications/misc/glom/default.nix b/pkgs/applications/misc/glom/default.nix index b8f13d01424..d576d2b5b47 100644 --- a/pkgs/applications/misc/glom/default.nix +++ b/pkgs/applications/misc/glom/default.nix @@ -28,7 +28,6 @@ , isocodes , gtksourceviewmm4 , postgresql -, gnome3 , gobject-introspection , yelp-tools , wrapGAppsHook @@ -125,9 +124,9 @@ in stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "An easy-to-use database designer and user interface"; - homepage = http://www.glom.org/; + homepage = "http://www.glom.org/"; license = [ licenses.lgpl2 licenses.gpl2 ]; - maintainers = gnome3.maintainers; + maintainers = teams.gnome.members; platforms = platforms.linux; }; } diff --git a/pkgs/applications/misc/gmrun/default.nix b/pkgs/applications/misc/gmrun/default.nix index 50dda9510b9..eaee8fb5fb3 100644 --- a/pkgs/applications/misc/gmrun/default.nix +++ b/pkgs/applications/misc/gmrun/default.nix @@ -34,7 +34,7 @@ stdenv.mkDerivation rec { Also, supports CTRL-R / CTRL-S / "!" for searching through history. Running commands in a terminal with CTRL-Enter. URL handlers. ''; - homepage = https://sourceforge.net/projects/gmrun/; + homepage = "https://sourceforge.net/projects/gmrun/"; license = "GPL"; maintainers = []; platforms = stdenv.lib.platforms.all; diff --git a/pkgs/applications/misc/gmtp/default.nix b/pkgs/applications/misc/gmtp/default.nix index c8bbcf2aa7f..5ed69e7bc69 100644 --- a/pkgs/applications/misc/gmtp/default.nix +++ b/pkgs/applications/misc/gmtp/default.nix @@ -24,9 +24,9 @@ stdenv.mkDerivation { meta = { description = "A simple MP3 and Media player client for UNIX and UNIX like systems."; - homepage = https://gmtp.sourceforge.io; + homepage = "https://gmtp.sourceforge.io"; platforms = stdenv.lib.platforms.linux; - maintainers = [ stdenv.lib.maintainers.pbogdan ]; + maintainers = [ ]; license = stdenv.lib.licenses.bsd3; }; } diff --git a/pkgs/applications/misc/gnome-firmware-updater/default.nix b/pkgs/applications/misc/gnome-firmware-updater/default.nix index f05c5fd210c..f007f0ae52e 100644 --- a/pkgs/applications/misc/gnome-firmware-updater/default.nix +++ b/pkgs/applications/misc/gnome-firmware-updater/default.nix @@ -6,7 +6,6 @@ , fwupd , gettext , glib -, gnome3 , gtk3 , libsoup , libxmlb @@ -70,7 +69,7 @@ stdenv.mkDerivation rec { homepage = "https://gitlab.gnome.org/hughsie/gnome-firmware-updater"; description = "Tool for installing firmware on devices"; license = licenses.gpl2Plus; - maintainers = gnome3.maintainers; + maintainers = teams.gnome.members; platforms = platforms.linux; }; } diff --git a/pkgs/applications/misc/gnome-multi-writer/default.nix b/pkgs/applications/misc/gnome-multi-writer/default.nix index 11bfbaaacd0..06bc0024995 100644 --- a/pkgs/applications/misc/gnome-multi-writer/default.nix +++ b/pkgs/applications/misc/gnome-multi-writer/default.nix @@ -54,9 +54,9 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Tool for writing an ISO file to multiple USB devices at once"; - homepage = https://wiki.gnome.org/Apps/MultiWriter; + homepage = "https://wiki.gnome.org/Apps/MultiWriter"; license = licenses.gpl2Plus; - maintainers = gnome3.maintainers; + maintainers = teams.gnome.members; platforms = platforms.linux; }; } diff --git a/pkgs/applications/misc/gnome-recipes/default.nix b/pkgs/applications/misc/gnome-recipes/default.nix index 01f5af339ff..cb9d10377cb 100644 --- a/pkgs/applications/misc/gnome-recipes/default.nix +++ b/pkgs/applications/misc/gnome-recipes/default.nix @@ -71,8 +71,8 @@ in stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Recipe management application for GNOME"; - homepage = https://wiki.gnome.org/Apps/Recipes; - maintainers = gnome3.maintainers; + homepage = "https://wiki.gnome.org/Apps/Recipes"; + maintainers = teams.gnome.members; license = licenses.gpl3; platforms = platforms.unix; }; diff --git a/pkgs/applications/misc/gnome-usage/default.nix b/pkgs/applications/misc/gnome-usage/default.nix index 7484998ab20..17aa7e9aa06 100644 --- a/pkgs/applications/misc/gnome-usage/default.nix +++ b/pkgs/applications/misc/gnome-usage/default.nix @@ -60,6 +60,6 @@ stdenv.mkDerivation rec { description = "A nice way to view information about use of system resources, like memory and disk space"; license = licenses.gpl3; platforms = platforms.linux; - maintainers = gnome3.maintainers; + maintainers = teams.gnome.members; }; } diff --git a/pkgs/applications/misc/golden-cheetah/default.nix b/pkgs/applications/misc/golden-cheetah/default.nix index 7fba1d49d74..3dffc5c77c2 100644 --- a/pkgs/applications/misc/golden-cheetah/default.nix +++ b/pkgs/applications/misc/golden-cheetah/default.nix @@ -1,6 +1,6 @@ { stdenv, fetchFromGitHub, mkDerivation -, qtbase, qtsvg, qtserialport, qtwebkit, qtmultimedia, qttools -, qtconnectivity, qtcharts +, qtbase, qtsvg, qtserialport, qtwebengine, qtmultimedia, qttools +, qtconnectivity, qtcharts, libusb , yacc, flex, zlib, qmake, makeDesktopItem, makeWrapper }: @@ -16,22 +16,22 @@ let }; in mkDerivation rec { pname = "golden-cheetah"; - version = "3.5-DEV1903"; + version = "3.5-RC2X"; src = fetchFromGitHub { owner = "GoldenCheetah"; repo = "GoldenCheetah"; - rev = "v${version}"; - sha256 = "130b0hm04i0hf97rs1xrdfhbal5vjsknj3x4cdxjh7rgbg2p1sm3"; + rev = "V${version}"; + sha256 = "1d85700gjbcw2badwz225rjdr954ai89900vp8sal04sk79wbr6g"; }; buildInputs = [ - qtbase qtsvg qtserialport qtwebkit qtmultimedia qttools zlib - qtconnectivity qtcharts + qtbase qtsvg qtserialport qtwebengine qtmultimedia qttools zlib + qtconnectivity qtcharts libusb ]; nativeBuildInputs = [ flex makeWrapper qmake yacc ]; - NIX_LDFLAGS = [ "-lz" ]; + NIX_LDFLAGS = "-lz"; qtWrapperArgs = [ "--set LD_LIBRARY_PATH ${zlib.out}/lib" ]; @@ -39,7 +39,14 @@ in mkDerivation rec { cp src/gcconfig.pri.in src/gcconfig.pri cp qwt/qwtconfig.pri.in qwt/qwtconfig.pri echo 'QMAKE_LRELEASE = ${qttools.dev}/bin/lrelease' >> src/gcconfig.pri + echo 'LIBUSB_INSTALL = ${libusb}' >> src/gcconfig.pri + echo 'LIBUSB_INCLUDE = ${libusb.dev}/include' >> src/gcconfig.pri + echo 'LIBUSB_LIBS = -L${libusb}/lib -lusb' >> src/gcconfig.pri sed -i -e '21,23d' qwt/qwtconfig.pri # Removed forced installation to /usr/local + + # Use qtwebengine instead of qtwebkit + substituteInPlace src/gcconfig.pri \ + --replace "#DEFINES += NOWEBKIT" "DEFINES += NOWEBKIT" ''; installPhase = '' @@ -53,9 +60,6 @@ in mkDerivation rec { runHook postInstall ''; - # RCC: Error in 'Resources/application.qrc': Cannot find file 'translations/gc_fr.qm' - enableParallelBuilding = false; - meta = with stdenv.lib; { description = "Performance software for cyclists, runners and triathletes"; platforms = platforms.linux; diff --git a/pkgs/applications/misc/goldendict/0001-dont-check-for-updates.patch b/pkgs/applications/misc/goldendict/0001-dont-check-for-updates.patch new file mode 100644 index 00000000000..31c7a638229 --- /dev/null +++ b/pkgs/applications/misc/goldendict/0001-dont-check-for-updates.patch @@ -0,0 +1,49 @@ +diff --git i/config.cc w/config.cc +index 04b63f5..7a453d9 100644 +--- i/config.cc ++++ w/config.cc +@@ -182,7 +182,7 @@ Preferences::Preferences(): + pronounceOnLoadPopup( false ), + useInternalPlayer( InternalPlayerBackend::anyAvailable() ), + internalPlayerBackend( InternalPlayerBackend::defaultBackend() ), +- checkForNewReleases( true ), ++ checkForNewReleases( false ), + disallowContentFromOtherSites( false ), + enableWebPlugins( false ), + hideGoldenDictHeader( false ), +@@ -867,8 +867,8 @@ Class load() THROW_SPEC( exError ) + c.preferences.proxyServer.systemProxyPassword = proxy.namedItem( "systemProxyPassword" ).toElement().text(); + } + +- if ( !preferences.namedItem( "checkForNewReleases" ).isNull() ) +- c.preferences.checkForNewReleases = ( preferences.namedItem( "checkForNewReleases" ).toElement().text() == "1" ); ++ //if ( !preferences.namedItem( "checkForNewReleases" ).isNull() ) ++ // c.preferences.checkForNewReleases = ( preferences.namedItem( "checkForNewReleases" ).toElement().text() == "1" ); + + if ( !preferences.namedItem( "disallowContentFromOtherSites" ).isNull() ) + c.preferences.disallowContentFromOtherSites = ( preferences.namedItem( "disallowContentFromOtherSites" ).toElement().text() == "1" ); +@@ -1819,9 +1819,9 @@ void save( Class const & c ) THROW_SPEC( exError ) + proxy.appendChild( opt ); + } + +- opt = dd.createElement( "checkForNewReleases" ); +- opt.appendChild( dd.createTextNode( c.preferences.checkForNewReleases ? "1" : "0" ) ); +- preferences.appendChild( opt ); ++ //opt = dd.createElement( "checkForNewReleases" ); ++ //opt.appendChild( dd.createTextNode( c.preferences.checkForNewReleases ? "1" : "0" ) ); ++ //preferences.appendChild( opt ); + + opt = dd.createElement( "disallowContentFromOtherSites" ); + opt.appendChild( dd.createTextNode( c.preferences.disallowContentFromOtherSites ? "1" : "0" ) ); +diff --git i/preferences.cc w/preferences.cc +index 72c3147..7e48f00 100644 +--- i/preferences.cc ++++ w/preferences.cc +@@ -314,6 +314,7 @@ Preferences::Preferences( QWidget * parent, Config::Class & cfg_ ): + this, SLOT( customProxyToggled( bool ) ) ); + + ui.checkForNewReleases->setChecked( p.checkForNewReleases ); ++ ui.checkForNewReleases->setEnabled( false ); + ui.disallowContentFromOtherSites->setChecked( p.disallowContentFromOtherSites ); + ui.enableWebPlugins->setChecked( p.enableWebPlugins ); + ui.hideGoldenDictHeader->setChecked( p.hideGoldenDictHeader ); diff --git a/pkgs/applications/misc/goldendict/0001-dont-use-maclibs.patch b/pkgs/applications/misc/goldendict/0001-dont-use-maclibs.patch new file mode 100644 index 00000000000..fc1fcbb0db0 --- /dev/null +++ b/pkgs/applications/misc/goldendict/0001-dont-use-maclibs.patch @@ -0,0 +1,62 @@ +diff --git i/goldendict.pro w/goldendict.pro +index 328dc20..5202a07 100644 +--- i/goldendict.pro ++++ w/goldendict.pro +@@ -210,21 +210,18 @@ mac { + -llzo2 + !CONFIG( no_ffmpeg_player ) { + LIBS += -lao \ +- -lavutil-gd \ +- -lavformat-gd \ +- -lavcodec-gd ++ -lavutil \ ++ -lavformat \ ++ -lavcodec + } +- INCLUDEPATH = $${PWD}/maclibs/include +- LIBS += -L$${PWD}/maclibs/lib -framework AppKit -framework Carbon ++ LIBS += -framework AppKit -framework Carbon + OBJECTIVE_SOURCES += lionsupport.mm \ + machotkeywrapper.mm \ + macmouseover.mm \ + speechclient_mac.mm + ICON = icons/macicon.icns + QMAKE_INFO_PLIST = myInfo.plist +- QMAKE_POST_LINK = mkdir -p GoldenDict.app/Contents/Frameworks & \ +- cp -nR $${PWD}/maclibs/lib/ GoldenDict.app/Contents/Frameworks/ & \ +- mkdir -p GoldenDict.app/Contents/MacOS/locale & \ ++ QMAKE_POST_LINK = mkdir -p GoldenDict.app/Contents/MacOS/locale & \ + cp -R locale/*.qm GoldenDict.app/Contents/MacOS/locale/ & \ + mkdir -p GoldenDict.app/Contents/MacOS/help & \ + cp -R $${PWD}/help/*.qch GoldenDict.app/Contents/MacOS/help/ +@@ -232,15 +229,6 @@ mac { + CONFIG += zim_support + !CONFIG( no_chinese_conversion_support ) { + CONFIG += chinese_conversion_support +- CONFIG( x86 ) { +- QMAKE_POST_LINK += & mkdir -p GoldenDict.app/Contents/MacOS/opencc & \ +- cp -R $${PWD}/opencc/*.json GoldenDict.app/Contents/MacOS/opencc/ & \ +- cp -R $${PWD}/opencc/*.ocd GoldenDict.app/Contents/MacOS/opencc/ +- } else { +- QMAKE_POST_LINK += & mkdir -p GoldenDict.app/Contents/MacOS/opencc & \ +- cp -R $${PWD}/opencc/x64/*.json GoldenDict.app/Contents/MacOS/opencc/ & \ +- cp -R $${PWD}/opencc/x64/*.ocd GoldenDict.app/Contents/MacOS/opencc/ +- } + } + } + DEFINES += PROGRAM_VERSION=\\\"$$VERSION\\\" +diff --git i/tiff.cc w/tiff.cc +index e3cb8bf..9ff880f 100644 +--- i/tiff.cc ++++ w/tiff.cc +@@ -6,8 +6,8 @@ + #include "tiff.hh" + + #if defined (Q_OS_MAC) || defined (Q_OS_WIN) +-#include "tiff/tiff.h" +-#include "tiff/tiffio.h" ++#include "tiff.h" ++#include "tiffio.h" + #else + #include "tiff.h" + #include "tiffio.h" diff --git a/pkgs/applications/misc/goldendict/default.nix b/pkgs/applications/misc/goldendict/default.nix index e917cc024d5..cd8ecc18223 100644 --- a/pkgs/applications/misc/goldendict/default.nix +++ b/pkgs/applications/misc/goldendict/default.nix @@ -1,33 +1,68 @@ -{ mkDerivation, lib, fetchFromGitHub, pkgconfig, libXtst, libvorbis, hunspell -, libao, ffmpeg, libeb, lzo, xz, libtiff, opencc -, qtbase, qtsvg, qtwebkit, qtx11extras, qttools, qmake }: -mkDerivation { +{ stdenv, mkDerivation, fetchFromGitHub, pkgconfig +, libXtst, libvorbis, hunspell, lzo, xz, bzip2, libiconv +, qtbase, qtsvg, qtwebkit, qtx11extras, qttools, qmake +, withCC ? true, opencc +, withEpwing ? true, libeb +, withExtraTiff ? true, libtiff +, withFFmpeg ? true, libao, ffmpeg +, withMultimedia ? true +, withZim ? true }: + +mkDerivation rec { + pname = "goldendict"; + version = "2020-01-09"; - name = "goldendict-2019-08-01"; src = fetchFromGitHub { owner = "goldendict"; - repo = "goldendict"; - rev = "0f951b06a55f3a201891cf645a556e773bda5f52"; - sha256 = "1d1hn95vhvsmbq9q96l5adn90g0hg25dl01knb4y4v6v9x4yrl2x"; + repo = pname; + rev = "da197ff5cd0e7326124c9240a1853a0e8b1de439"; + sha256 = "0dlzwjh9wg4bzhhib71jycpp21qw762ww63a37dd50z1ymi61lxc"; }; + patches = [ + ./0001-dont-check-for-updates.patch + ] ++ stdenv.lib.optionals stdenv.isDarwin [ + ./0001-dont-use-maclibs.patch + ]; + + postPatch = '' + substituteInPlace goldendict.pro \ + --replace "hunspell-1.6.1" "hunspell-${stdenv.lib.versions.majorMinor hunspell.version}" + ''; + nativeBuildInputs = [ pkgconfig qmake ]; buildInputs = [ - qtbase qtsvg qtwebkit qtx11extras qttools - libXtst libvorbis hunspell libao ffmpeg libeb lzo xz libtiff opencc - ]; + qtbase qtsvg qtwebkit qttools + libvorbis hunspell xz lzo + ] ++ stdenv.lib.optionals stdenv.isLinux [ qtx11extras libXtst ] + ++ stdenv.lib.optionals stdenv.isDarwin [ bzip2 libiconv ] + ++ stdenv.lib.optional withCC opencc + ++ stdenv.lib.optional withEpwing libeb + ++ stdenv.lib.optional withExtraTiff libtiff + ++ stdenv.lib.optionals withFFmpeg [ libao ffmpeg ]; - qmakeFlags = [ + qmakeFlags = with stdenv.lib; [ "goldendict.pro" - "CONFIG+=zim_support" - "CONFIG+=chinese_conversion_support" + (optional withCC "CONFIG+=chinese_conversion_support") + (optional (!withCC) "CONFIG+=no_chinese_conversion_support") + (optional (!withEpwing) "CONFIG+=no_epwing_support") + (optional (!withExtraTiff) "CONFIG+=no_extra_tiff_handler") + (optional (!withFFmpeg) "CONFIG+=no_ffmpeg_player") + (optional (!withMultimedia)"CONFIG+=no_qtmultimedia_player") + (optional withZim "CONFIG+=zim_support") ]; - meta = with lib; { - homepage = http://goldendict.org/; + postInstall = stdenv.lib.optionalString stdenv.isDarwin '' + mkdir -p $out/Applications + mv GoldenDict.app $out/Applications + wrapQtApp $out/Applications/GoldenDict.app/Contents/MacOS/GoldenDict + ''; + + meta = with stdenv.lib; { + homepage = "http://goldendict.org/"; description = "A feature-rich dictionary lookup program"; - platforms = platforms.linux; - maintainers = with maintainers; [ gebner astsmtl ]; + platforms = with platforms; linux ++ darwin; + maintainers = with maintainers; [ gebner astsmtl sikmir ]; license = licenses.gpl3Plus; }; } diff --git a/pkgs/applications/misc/gollum/Gemfile.lock b/pkgs/applications/misc/gollum/Gemfile.lock index 8ecb546df70..4759cdcf573 100644 --- a/pkgs/applications/misc/gollum/Gemfile.lock +++ b/pkgs/applications/misc/gollum/Gemfile.lock @@ -1,61 +1,106 @@ GEM remote: https://rubygems.org/ specs: - charlock_holmes (0.7.7) - diff-lcs (1.3) - gemojione (3.3.0) + backports (3.17.0) + concurrent-ruby (1.1.6) + crass (1.0.6) + execjs (2.7.0) + ffi (1.12.2) + gemojione (4.3.2) json - github-markup (1.7.0) - gitlab-grit (2.8.2) - charlock_holmes (~> 0.6) - diff-lcs (~> 1.1) - mime-types (>= 1.16) - posix-spawn (~> 0.3) - gollum (4.1.4) - gemojione (~> 3.2) - gollum-lib (~> 4.2, >= 4.2.10) - kramdown (~> 1.9.0) + github-markup (3.0.4) + gollum (5.0.1) + gemojione (~> 4.1) + gollum-lib (~> 5.0) + kramdown (~> 2.1.0) + kramdown-parser-gfm (~> 1.0.0) mustache (>= 0.99.5, < 1.0.0) - sinatra (~> 1.4, >= 1.4.4) + octicons (~> 8.5) + rss (~> 0.2.9) + sass (~> 3.5) + sinatra (~> 2.0) + sinatra-contrib (~> 2.0) + sprockets (~> 3.7) + sprockets-helpers (~> 1.2) + therubyrhino (~> 2.1.0) + uglifier (~> 3.2) useragent (~> 0.16.2) - gollum-grit_adapter (1.0.1) - gitlab-grit (~> 2.7, >= 2.7.1) - gollum-lib (4.2.10) - gemojione (~> 3.2) - github-markup (~> 1.6) - gollum-grit_adapter (~> 1.0) - nokogiri (>= 1.6.1, < 2.0) - rouge (~> 2.1) - sanitize (~> 2.1.1, >= 2.1.1) - stringex (~> 2.6) + gollum-lib (5.0.3) + gemojione (~> 4.1) + github-markup (~> 3.0) + gollum-rugged_adapter (~> 0.99.4, >= 0.99.4) + loofah (~> 2.3) + nokogiri (~> 1.8) + octicons (~> 8.5) + rouge (~> 3.1) twitter-text (= 1.14.7) + gollum-rugged_adapter (0.99.4) + mime-types (>= 1.15) + rugged (~> 0.99) json (2.3.0) - kramdown (1.9.0) - mime-types (3.3) + kramdown (2.1.0) + kramdown-parser-gfm (1.0.1) + kramdown (~> 2.0) + loofah (2.5.0) + crass (~> 1.0.2) + nokogiri (>= 1.5.9) + mime-types (3.3.1) mime-types-data (~> 3.2015) mime-types-data (3.2019.1009) mini_portile2 (2.4.0) + multi_json (1.14.1) mustache (0.99.8) - nokogiri (1.10.7) + mustermann (1.1.1) + ruby2_keywords (~> 0.0.1) + nokogiri (1.10.9) mini_portile2 (~> 2.4.0) - posix-spawn (0.3.13) - rack (1.6.12) - rack-protection (1.5.5) + octicons (8.5.0) + nokogiri (>= 1.6.3.1) + rack (2.2.2) + rack-protection (2.0.8.1) rack - rouge (2.2.1) - sanitize (2.1.1) - nokogiri (>= 1.4.4) - sinatra (1.4.8) - rack (~> 1.5) - rack-protection (~> 1.4) - tilt (>= 1.3, < 3) - stringex (2.8.5) + rb-fsevent (0.10.3) + rb-inotify (0.10.1) + ffi (~> 1.0) + rexml (3.2.4) + rouge (3.17.0) + rss (0.2.9) + rexml + ruby2_keywords (0.0.2) + rugged (0.99.0) + sass (3.7.4) + sass-listen (~> 4.0.0) + sass-listen (4.0.0) + rb-fsevent (~> 0.9, >= 0.9.4) + rb-inotify (~> 0.9, >= 0.9.7) + sinatra (2.0.8.1) + mustermann (~> 1.0) + rack (~> 2.0) + rack-protection (= 2.0.8.1) + tilt (~> 2.0) + sinatra-contrib (2.0.8.1) + backports (>= 2.8.2) + multi_json + mustermann (~> 1.0) + rack-protection (= 2.0.8.1) + sinatra (= 2.0.8.1) + tilt (~> 2.0) + sprockets (3.7.2) + concurrent-ruby (~> 1.0) + rack (> 1, < 3) + sprockets-helpers (1.2.3) + sprockets (>= 2.2) + therubyrhino (2.1.2) + therubyrhino_jar (>= 1.7.4, < 1.7.9) + therubyrhino_jar (1.7.8) tilt (2.0.10) twitter-text (1.14.7) unf (~> 0.1.0) + uglifier (3.2.0) + execjs (>= 0.3.0, < 3) unf (0.1.4) unf_ext - unf_ext (0.0.7.6) + unf_ext (0.0.7.7) useragent (0.16.10) PLATFORMS @@ -65,4 +110,4 @@ DEPENDENCIES gollum BUNDLED WITH - 1.17.3 + 2.1.4 diff --git a/pkgs/applications/misc/gollum/default.nix b/pkgs/applications/misc/gollum/default.nix index e9a177ee193..9005f38f563 100644 --- a/pkgs/applications/misc/gollum/default.nix +++ b/pkgs/applications/misc/gollum/default.nix @@ -3,30 +3,33 @@ stdenv.mkDerivation rec { pname = "gollum"; - # nix-shell -p bundix icu zlib + # nix-shell -p bundix icu zlib cmake pkg-config openssl version = (import ./gemset.nix).gollum.version; nativeBuildInputs = [ makeWrapper ]; - env = bundlerEnv { - name = "${pname}-${version}-gems"; - inherit pname ruby; - gemdir = ./.; - }; - phases = [ "installPhase" ]; - installPhase = '' + installPhase = let + env = bundlerEnv { + name = "${pname}-${version}-gems"; + inherit pname ruby; + gemdir = ./.; + }; + in '' mkdir -p $out/bin makeWrapper ${env}/bin/gollum $out/bin/gollum \ --prefix PATH ":" ${stdenv.lib.makeBinPath [ git ]} + makeWrapper ${env}/bin/gollum-migrate-tags $out/bin/gollum-migrate-tags \ + --prefix PATH ":" ${stdenv.lib.makeBinPath [ git ]} ''; passthru.updateScript = bundlerUpdateScript "gollum"; meta = with stdenv.lib; { - description = "A simple, Git-powered wiki"; - homepage = https://github.com/gollum/gollum; + description = "A simple, Git-powered wiki with a sweet API and local frontend"; + homepage = "https://github.com/gollum/gollum"; + changelog = "https://github.com/gollum/gollum/blob/v${version}/HISTORY.md"; license = licenses.mit; maintainers = with maintainers; [ jgillich primeos nicknovitski ]; platforms = platforms.unix; diff --git a/pkgs/applications/misc/gollum/gemset.nix b/pkgs/applications/misc/gollum/gemset.nix index 61e0db781b8..3febcea2f9a 100644 --- a/pkgs/applications/misc/gollum/gemset.nix +++ b/pkgs/applications/misc/gollum/gemset.nix @@ -1,23 +1,53 @@ { - charlock_holmes = { + backports = { groups = ["default"]; platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0hybw8jw9ryvz5zrki3gc9r88jqy373m6v46ynxsdzv1ysiyr40p"; + sha256 = "13ywgyyxzlgks7nb17gwqjmdqjjmhc8si3iliv8jhf51lb3s865v"; type = "gem"; }; - version = "0.7.7"; + version = "3.17.0"; }; - diff-lcs = { + concurrent-ruby = { groups = ["default"]; platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "18w22bjz424gzafv6nzv98h0aqkwz3d9xhm7cbr1wfbyas8zayza"; + sha256 = "094387x4yasb797mv07cs3g6f08y56virc2rjcpb1k79rzaj3nhl"; type = "gem"; }; - version = "1.3"; + version = "1.1.6"; + }; + crass = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0pfl5c0pyqaparxaqxi6s4gfl21bdldwiawrc0aknyvflli60lfw"; + type = "gem"; + }; + version = "1.0.6"; + }; + execjs = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1yz55sf2nd3l666ms6xr18sm2aggcvmb8qr3v53lr4rir32y1yp1"; + type = "gem"; + }; + version = "2.7.0"; + }; + ffi = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "10lfhahnnc91v63xpvk65apn61pib086zha3z5sp1xk9acfx12h4"; + type = "gem"; + }; + version = "1.12.2"; }; gemojione = { dependencies = ["json"]; @@ -25,64 +55,53 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0ayk8r147k1s38nj18pwk76npx1p7jhi86silk800nj913pjvrhj"; + sha256 = "097mrsahv1h67kjrk1cpiqc1cbrfgvlp2rqwmzdzxrq0kx50461w"; type = "gem"; }; - version = "3.3.0"; + version = "4.3.2"; }; github-markup = { groups = ["default"]; platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "17g6g18gdjg63k75sfwiskjzl9i0hfcnrkcpb4fwrnb20v3jgswp"; + sha256 = "14991x92v8s60hfqv7162jfmdqa20fifn2bz0km3k5cgi01pf9rs"; type = "gem"; }; - version = "1.7.0"; - }; - gitlab-grit = { - dependencies = ["charlock_holmes" "diff-lcs" "mime-types" "posix-spawn"]; - groups = ["default"]; - platforms = []; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "0xgs3l81ghlc5nm75n0pz7b2cj3hpscfq5iy27c483nnjn2v5mc4"; - type = "gem"; - }; - version = "2.8.2"; + version = "3.0.4"; }; gollum = { - dependencies = ["gemojione" "gollum-lib" "kramdown" "mustache" "sinatra" "useragent"]; + dependencies = ["gemojione" "gollum-lib" "kramdown" "kramdown-parser-gfm" "mustache" "octicons" "rss" "sass" "sinatra" "sinatra-contrib" "sprockets" "sprockets-helpers" "therubyrhino" "uglifier" "useragent"]; groups = ["default"]; platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0ik1b0f73lcxfwfml1h84dp6br79g0z9v6x54wvl46n9d1ndrhl7"; + sha256 = "1f9p1230xmrvcb7ii2gkcvhpgcaqvvd47gy3c58nn730jkv471dr"; type = "gem"; }; - version = "4.1.4"; - }; - gollum-grit_adapter = { - dependencies = ["gitlab-grit"]; - groups = ["default"]; - platforms = []; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "0fcibm63v1afc0fj5rki0mm51m7nndil4cjcjjvkh3yigfn4nr4b"; - type = "gem"; - }; - version = "1.0.1"; + version = "5.0.1"; }; gollum-lib = { - dependencies = ["gemojione" "github-markup" "gollum-grit_adapter" "nokogiri" "rouge" "sanitize" "stringex" "twitter-text"]; + dependencies = ["gemojione" "github-markup" "gollum-rugged_adapter" "loofah" "nokogiri" "octicons" "rouge" "twitter-text"]; groups = ["default"]; platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "1699wiir6f2a8yawk3qg0xn3zdc10mz783v53ri1ivfnzdrm3dvf"; + sha256 = "0r59fyf7i4rlp6wj9ilnqd9pmgpkafv0yl4jmrxa6hr2p4cmnf1g"; type = "gem"; }; - version = "4.2.10"; + version = "5.0.3"; + }; + gollum-rugged_adapter = { + dependencies = ["mime-types" "rugged"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0016yfac3b3sy34k9wrqg422mjm8cpd1jd1m4gdn4x2d4jxhxkzq"; + type = "gem"; + }; + version = "0.99.4"; }; json = { groups = ["default"]; @@ -99,10 +118,32 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "12sral2xli39mnr4b9m2sxdlgam4ni0a1mkxawc5311z107zj3p0"; + sha256 = "1dl840bvx8d9nq6lg3mxqyvbiqnr6lk3jfsm6r8zhz7p5srmd688"; type = "gem"; }; - version = "1.9.0"; + version = "2.1.0"; + }; + kramdown-parser-gfm = { + dependencies = ["kramdown"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0ykna2apphld9llmjnz0210fipp4fkmj2ja18l7iz9xikg0h0ihi"; + type = "gem"; + }; + version = "1.0.1"; + }; + loofah = { + dependencies = ["crass" "nokogiri"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0jk9fgn5ayzbqvzqm11gbkqvas77zdbpkvynlylyiwynclgrn040"; + type = "gem"; + }; + version = "2.5.0"; }; mime-types = { dependencies = ["mime-types-data"]; @@ -110,10 +151,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0g7l18igjb9z7q4b2ykvyxyvjxlx5pwsmx5z3ibdbr6372xgfglk"; + sha256 = "1zj12l9qk62anvk9bjvandpa6vy4xslil15wl6wlivyf51z773vh"; type = "gem"; }; - version = "3.3"; + version = "3.3.1"; }; mime-types-data = { groups = ["default"]; @@ -135,6 +176,16 @@ }; version = "2.4.0"; }; + multi_json = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0xy54mjf7xg41l8qrg1bqri75agdqmxap9z466fjismc1rn2jwfr"; + type = "gem"; + }; + version = "1.14.1"; + }; mustache = { groups = ["default"]; platforms = []; @@ -145,36 +196,48 @@ }; version = "0.99.8"; }; + mustermann = { + dependencies = ["ruby2_keywords"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0ccm54qgshr1lq3pr1dfh7gphkilc19dp63rw6fcx7460pjwy88a"; + type = "gem"; + }; + version = "1.1.1"; + }; nokogiri = { dependencies = ["mini_portile2"]; groups = ["default"]; platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0r0qpgf80h764k176yr63gqbs2z0xbsp8vlvs2a79d5r9vs83kln"; + sha256 = "12j76d0bp608932xkzmfi638c7aqah57l437q8494znzbj610qnm"; type = "gem"; }; - version = "1.10.7"; + version = "1.10.9"; }; - posix-spawn = { + octicons = { + dependencies = ["nokogiri"]; groups = ["default"]; platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "1pmxmpins57qrbr31bs3bm7gidhaacmrp4md6i962gvpq4gyfcjw"; + sha256 = "0fy6shpfmla58dxx3kb2zi1hs7vmdw6pqrksaa8yrva05s4l3y75"; type = "gem"; }; - version = "0.3.13"; + version = "8.5.0"; }; rack = { groups = ["default"]; platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "1riq0z408dwvqcqrpq05bp2w879l4sjxzb4cbrbx55kpi6h2g1cj"; + sha256 = "10mp9s48ssnw004aksq90gvhdvwczh8j6q82q2kqiqq92jd1zxbp"; type = "gem"; }; - version = "1.6.12"; + version = "2.2.2"; }; rack-protection = { dependencies = ["rack"]; @@ -182,52 +245,169 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0my0wlw4a5l3hs79jkx2xzv7djhajgf8d28k8ai1ddlnxxb0v7ss"; + sha256 = "1zyj97bfr1shfgwk4ddmdbw0mdkm4qdyh9s1hl0k7accf3kxx1yi"; type = "gem"; }; - version = "1.5.5"; + version = "2.0.8.1"; + }; + rb-fsevent = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1lm1k7wpz69jx7jrc92w3ggczkjyjbfziq5mg62vjnxmzs383xx8"; + type = "gem"; + }; + version = "0.10.3"; + }; + rb-inotify = { + dependencies = ["ffi"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1jm76h8f8hji38z3ggf4bzi8vps6p7sagxn3ab57qc0xyga64005"; + type = "gem"; + }; + version = "0.10.1"; + }; + rexml = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1mkvkcw9fhpaizrhca0pdgjcrbns48rlz4g6lavl5gjjq3rk2sq3"; + type = "gem"; + }; + version = "3.2.4"; }; rouge = { groups = ["default"]; platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "02kpahk5nkc33yxnn75649kzxaz073wvazr2zyg491nndykgnvcs"; + sha256 = "0xl7k5paf66p57sphm4nfa4k86yf93lhdzzr0cv0l4divq12g2pr"; type = "gem"; }; - version = "2.2.1"; + version = "3.17.0"; }; - sanitize = { - dependencies = ["nokogiri"]; + rss = { + dependencies = ["rexml"]; groups = ["default"]; platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "12ip1d80r0dgc621qn7c32bk12xxgkkg3w6q21s1ckxivcd7r898"; + sha256 = "1b1zx07kr64kkpm4lssd4r1a1qyr829ppmfl85i4adcvx9mqfid0"; type = "gem"; }; - version = "2.1.1"; + version = "0.2.9"; + }; + ruby2_keywords = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "17pcc0wgvh3ikrkr7bm3nx0qhyiqwidd13ij0fa50k7gsbnr2p0l"; + type = "gem"; + }; + version = "0.0.2"; + }; + rugged = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "04rkxwzaa6897da3mnm70g720gpxwyh71krfn6ag1dkk80x8a8yz"; + type = "gem"; + }; + version = "0.99.0"; + }; + sass = { + dependencies = ["sass-listen"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0p95lhs0jza5l7hqci1isflxakz83xkj97lkvxl919is0lwhv2w0"; + type = "gem"; + }; + version = "3.7.4"; + }; + sass-listen = { + dependencies = ["rb-fsevent" "rb-inotify"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0xw3q46cmahkgyldid5hwyiwacp590zj2vmswlll68ryvmvcp7df"; + type = "gem"; + }; + version = "4.0.0"; }; sinatra = { - dependencies = ["rack" "rack-protection" "tilt"]; + dependencies = ["mustermann" "rack" "rack-protection" "tilt"]; groups = ["default"]; platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0byxzl7rx3ki0xd7aiv1x8mbah7hzd8f81l65nq8857kmgzj1jqq"; + sha256 = "0riy3hwjab1mr73jcqx3brmbmwspnw3d193j06a5f0fy1w35z15q"; type = "gem"; }; - version = "1.4.8"; + version = "2.0.8.1"; }; - stringex = { + sinatra-contrib = { + dependencies = ["backports" "multi_json" "mustermann" "rack-protection" "sinatra" "tilt"]; groups = ["default"]; platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "15ns7j5smw04w6w7bqd5mm2qcl7w9lhwykyb974i4isgg9yc23ys"; + sha256 = "1mmrfm4pqh98f3irjpkvfpazhcx6q42bnx6bbms9dqvmck3mid28"; type = "gem"; }; - version = "2.8.5"; + version = "2.0.8.1"; + }; + sprockets = { + dependencies = ["concurrent-ruby" "rack"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "182jw5a0fbqah5w9jancvfmjbk88h8bxdbwnl4d3q809rpxdg8ay"; + type = "gem"; + }; + version = "3.7.2"; + }; + sprockets-helpers = { + dependencies = ["sprockets"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1hy67dwz76n5db00d9n3qy59ici96c2g25c9xpmp2nh8ilvha338"; + type = "gem"; + }; + version = "1.2.3"; + }; + therubyrhino = { + dependencies = ["therubyrhino_jar"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "034mzpkxm3zjsi4rwa45dhhgq2b9vkabs5bnzbl1d3ka7210b3fc"; + type = "gem"; + }; + version = "2.1.2"; + }; + therubyrhino_jar = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "149a5lsvn2n7k7vcfs77n836q1alv8yjh0503sf9cs65p974ah25"; + type = "gem"; + }; + version = "1.7.8"; }; tilt = { groups = ["default"]; @@ -250,6 +430,17 @@ }; version = "1.14.7"; }; + uglifier = { + dependencies = ["execjs"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0wmqvn4xncw6h3d5gp2a44170zwxfyj3iq4rsjp16zarvzbdmgnz"; + type = "gem"; + }; + version = "3.2.0"; + }; unf = { dependencies = ["unf_ext"]; groups = ["default"]; @@ -266,10 +457,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "1ll6w64ibh81qwvjx19h8nj7mngxgffg7aigjx11klvf5k2g4nxf"; + sha256 = "0wc47r23h063l8ysws8sy24gzh74mks81cak3lkzlrw4qkqb3sg4"; type = "gem"; }; - version = "0.0.7.6"; + version = "0.0.7.7"; }; useragent = { groups = ["default"]; diff --git a/pkgs/applications/misc/gomatrix/default.nix b/pkgs/applications/misc/gomatrix/default.nix new file mode 100644 index 00000000000..5d412469617 --- /dev/null +++ b/pkgs/applications/misc/gomatrix/default.nix @@ -0,0 +1,22 @@ +{ lib, buildGoModule, fetchFromGitHub }: + +buildGoModule rec { + pname = "gomatrix"; + version = "101.0.0"; + + src = fetchFromGitHub { + owner = "GeertJohan"; + repo = "gomatrix"; + rev = "v${version}"; + sha256 = "1wq55rvpyz0gjn8kiwwj49awsmi86zy1fdjcphzgb7883xalgr2m"; + }; + + modSha256 = "13higizadnf4ypk8qn1b5s6mdg7n6l3indb43mjp1b4cfzjsyl91"; + + meta = with lib; { + description = ''Displays "The Matrix" in a terminal''; + license = licenses.bsd2; + maintainers = with maintainers; [ skykanin ]; + homepage = "https://github.com/GeertJohan/gomatrix"; + }; +} diff --git a/pkgs/applications/misc/googleearth/default.nix b/pkgs/applications/misc/googleearth/default.nix index 181273752ea..dff69130c18 100644 --- a/pkgs/applications/misc/googleearth/default.nix +++ b/pkgs/applications/misc/googleearth/default.nix @@ -99,7 +99,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "A world sphere viewer"; - homepage = http://earth.google.com; + homepage = "http://earth.google.com"; license = licenses.unfree; maintainers = with maintainers; [ markus1189 ]; platforms = platforms.linux; diff --git a/pkgs/applications/misc/googler/default.nix b/pkgs/applications/misc/googler/default.nix index 60feecd665d..3e4c9828ede 100644 --- a/pkgs/applications/misc/googler/default.nix +++ b/pkgs/applications/misc/googler/default.nix @@ -13,7 +13,7 @@ stdenv.mkDerivation rec { propagatedBuildInputs = [ python ]; - makeFlags = "PREFIX=$(out)"; + makeFlags = [ "PREFIX=$(out)" ]; meta = with stdenv.lib; { homepage = "https://github.com/jarun/googler"; diff --git a/pkgs/applications/misc/gosmore/default.nix b/pkgs/applications/misc/gosmore/default.nix index 41cdf267f5d..350cb56695f 100644 --- a/pkgs/applications/misc/gosmore/default.nix +++ b/pkgs/applications/misc/gosmore/default.nix @@ -9,7 +9,7 @@ stdenv.mkDerivation { # so we explicitly disable them to avoid breaking the hash # especially as the externals appear to be unused src = fetchsvn { - url = http://svn.openstreetmap.org/applications/rendering/gosmore; + url = "http://svn.openstreetmap.org/applications/rendering/gosmore"; sha256 = "0qsckpqx7i7f8gkqhkzdamr65250afk1rpnh3nbman35kdv3dsxi"; rev = version; ignoreExternals = true; @@ -28,7 +28,7 @@ stdenv.mkDerivation { meta = with stdenv.lib; { description = "Open Street Map viewer"; - homepage = https://sourceforge.net/projects/gosmore/; + homepage = "https://sourceforge.net/projects/gosmore/"; maintainers = with maintainers; [ raskin ]; diff --git a/pkgs/applications/misc/gpa/default.nix b/pkgs/applications/misc/gpa/default.nix index a4889014412..cd7b724a1d7 100644 --- a/pkgs/applications/misc/gpa/default.nix +++ b/pkgs/applications/misc/gpa/default.nix @@ -13,7 +13,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Graphical user interface for the GnuPG"; - homepage = https://www.gnupg.org/related_software/gpa/; + homepage = "https://www.gnupg.org/related_software/gpa/"; license = licenses.gpl3Plus; platforms = platforms.unix; }; diff --git a/pkgs/applications/misc/gpg-mdp/default.nix b/pkgs/applications/misc/gpg-mdp/default.nix index 9954ff660ad..cf3d6fe9e93 100644 --- a/pkgs/applications/misc/gpg-mdp/default.nix +++ b/pkgs/applications/misc/gpg-mdp/default.nix @@ -6,7 +6,7 @@ in stdenv.mkDerivation { pname = "gpg-mdp"; inherit version; meta = { - homepage = https://tamentis.com/projects/mdp/; + homepage = "https://tamentis.com/projects/mdp/"; license = [stdenv.lib.licenses.isc]; description = "Manage your passwords with GnuPG and a text editor"; }; diff --git a/pkgs/applications/misc/gphoto2/default.nix b/pkgs/applications/misc/gphoto2/default.nix index d06970e8d07..1235a41ffc7 100644 --- a/pkgs/applications/misc/gphoto2/default.nix +++ b/pkgs/applications/misc/gphoto2/default.nix @@ -21,7 +21,7 @@ stdenv.mkDerivation rec { digital cameras. Through libgphoto2, it supports PTP, MTP, and much more.. ''; - homepage = http://www.gphoto.org/; + homepage = "http://www.gphoto.org/"; license = licenses.gpl2Plus; platforms = platforms.unix; maintainers = [ maintainers.jcumming ]; diff --git a/pkgs/applications/misc/gphoto2/gphotofs.nix b/pkgs/applications/misc/gphoto2/gphotofs.nix index c1c2a44bd7f..668706ca389 100644 --- a/pkgs/applications/misc/gphoto2/gphotofs.nix +++ b/pkgs/applications/misc/gphoto2/gphotofs.nix @@ -15,7 +15,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Fuse FS to mount a digital camera"; - homepage = http://www.gphoto.org/; + homepage = "http://www.gphoto.org/"; maintainers = [ maintainers.raskin ]; platforms = platforms.linux; license = with licenses; [ lgpl2 gpl2 ]; diff --git a/pkgs/applications/misc/gpsbabel/default.nix b/pkgs/applications/misc/gpsbabel/default.nix index 9d244ca18f3..ef4c732ef52 100644 --- a/pkgs/applications/misc/gpsbabel/default.nix +++ b/pkgs/applications/misc/gpsbabel/default.nix @@ -13,7 +13,7 @@ stdenv.mkDerivation rec { patches = [ (fetchpatch { - url = https://sources.debian.net/data/main/g/gpsbabel/1.5.3-2/debian/patches/use_minizip; + url = "https://sources.debian.net/data/main/g/gpsbabel/1.5.3-2/debian/patches/use_minizip"; sha256 = "03fpsmlx1wc48d1j405zkzp8j64hcp0z72islf4mk1immql3ibcr"; }) ]; @@ -69,7 +69,7 @@ stdenv.mkDerivation rec { process data that may (or may not be) placed on a map, such as waypoints, tracks, and routes. ''; - homepage = http://www.gpsbabel.org/; + homepage = "http://www.gpsbabel.org/"; license = licenses.gpl2Plus; maintainers = [ maintainers.rycee ]; platforms = platforms.all; diff --git a/pkgs/applications/misc/gpsbabel/gui.nix b/pkgs/applications/misc/gpsbabel/gui.nix new file mode 100644 index 00000000000..57eca9f47a5 --- /dev/null +++ b/pkgs/applications/misc/gpsbabel/gui.nix @@ -0,0 +1,49 @@ +{ stdenv, mkDerivation, qmake, qttools, qtwebkit, qttranslations, gpsbabel }: + +mkDerivation { + pname = "gpsbabel-gui"; + + inherit (gpsbabel) src version; + + sourceRoot = "source/gui"; + + nativeBuildInputs = [ qmake qttools ]; + buildInputs = [ qtwebkit ]; + + postPatch = '' + substituteInPlace mainwindow.cc \ + --replace "QApplication::applicationDirPath() + \"/" "\"" \ + --replace "QApplication::applicationDirPath() + '/' + " "" \ + --replace "translator.load(full_filename)" "translator.load(filename)" \ + --replace "gpsbabelfe_%1.qm" "$out/share/gpsbabel/translations/gpsbabelfe_%1.qm" \ + --replace "gpsbabel_%1.qm" "$out/share/gpsbabel/translations/gpsbabel_%1.qm" \ + --replace "qt_%1.qm" "${qttranslations}/translations/qt_%1.qm" + substituteInPlace formatload.cc \ + --replace "QApplication::applicationDirPath() + \"/" "\"" + substituteInPlace gpsbabel.desktop \ + --replace "gpsbabelfe-bin" "gpsbabelfe" + ''; + + preConfigure = '' + lrelease *.ts coretool/*.ts + ''; + + qtWrapperArgs = [ + "--prefix PATH : ${stdenv.lib.makeBinPath [ gpsbabel ]}" + ]; + + postInstall = '' + install -Dm755 objects/gpsbabelfe -t $out/bin + install -Dm644 gpsbabel.desktop -t $out/share/applications + install -Dm644 images/appicon.png $out/share/icons/hicolor/512x512/apps/gpsbabel.png + install -Dm644 *.qm coretool/*.qm -t $out/share/gpsbabel/translations + ''; + + meta = with stdenv.lib; { + description = "Qt-based GUI for gpsbabel"; + homepage = "http://www.gpsbabel.org/"; + license = licenses.gpl2; + maintainers = with maintainers; [ sikmir ]; + platforms = with platforms; linux; + }; +} diff --git a/pkgs/applications/misc/gpsprune/default.nix b/pkgs/applications/misc/gpsprune/default.nix index 9c0dc48d42e..63ca213c2c4 100644 --- a/pkgs/applications/misc/gpsprune/default.nix +++ b/pkgs/applications/misc/gpsprune/default.nix @@ -1,16 +1,16 @@ -{ fetchurl, stdenv, makeDesktopItem, makeWrapper, unzip, jre8 }: +{ fetchurl, stdenv, makeDesktopItem, makeWrapper, unzip, jdk11 }: stdenv.mkDerivation rec { pname = "gpsprune"; - version = "19.2"; + version = "20"; src = fetchurl { url = "https://activityworkshop.net/software/gpsprune/gpsprune_${version}.jar"; - sha256 = "1q2kpkkh75b9l1x7fkmv88s8k84gzcdnrg5sgf8ih0zrp49lawg9"; + sha256 = "1i9p6h98azgradrrkcwx18zwz4c6zkxp4bfykpa2imi1z3ry5q2b"; }; nativeBuildInputs = [ makeWrapper ]; - buildInputs = [ jre8 ]; + buildInputs = [ jdk11 ]; desktopItem = makeDesktopItem { name = "gpsprune"; @@ -25,7 +25,7 @@ stdenv.mkDerivation rec { buildCommand = '' mkdir -p $out/bin $out/share/java cp -v $src $out/share/java/gpsprune.jar - makeWrapper ${jre8}/bin/java $out/bin/gpsprune \ + makeWrapper ${jdk11}/bin/java $out/bin/gpsprune \ --add-flags "-jar $out/share/java/gpsprune.jar" mkdir -p $out/share/applications cp $desktopItem/share/applications"/"* $out/share/applications @@ -35,7 +35,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Application for viewing, editing and converting GPS coordinate data"; - homepage = https://activityworkshop.net/software/gpsprune/; + homepage = "https://activityworkshop.net/software/gpsprune/"; license = licenses.gpl2Plus; maintainers = [ maintainers.rycee ]; platforms = platforms.all; diff --git a/pkgs/applications/misc/gpx-viewer/default.nix b/pkgs/applications/misc/gpx-viewer/default.nix index 04ab062c1a1..64296688c93 100644 --- a/pkgs/applications/misc/gpx-viewer/default.nix +++ b/pkgs/applications/misc/gpx-viewer/default.nix @@ -24,7 +24,7 @@ stdenv.mkDerivation rec { buildInputs = [ gdl libchamplain gnome3.adwaita-icon-theme libxml2 ]; meta = with stdenv.lib; { - homepage = https://blog.sarine.nl/tag/gpxviewer/; + homepage = "https://blog.sarine.nl/tag/gpxviewer/"; description = "Simple tool to visualize tracks and waypoints stored in a gpx file"; platforms = with platforms; linux; license = licenses.gpl2Plus; diff --git a/pkgs/applications/misc/gpx/default.nix b/pkgs/applications/misc/gpx/default.nix index a341a212a37..dcf022fc445 100644 --- a/pkgs/applications/misc/gpx/default.nix +++ b/pkgs/applications/misc/gpx/default.nix @@ -15,7 +15,7 @@ stdenv.mkDerivation rec { meta = { description = "Gcode to x3g conversion postprocessor"; - homepage = https://github.com/markwal/GPX/; + homepage = "https://github.com/markwal/GPX/"; license = stdenv.lib.licenses.gpl2; platforms = stdenv.lib.platforms.unix; maintainers = [ stdenv.lib.maintainers.leo60228 ]; diff --git a/pkgs/applications/misc/gpxlab/default.nix b/pkgs/applications/misc/gpxlab/default.nix index b4778f9f4f8..3b432ff66b1 100644 --- a/pkgs/applications/misc/gpxlab/default.nix +++ b/pkgs/applications/misc/gpxlab/default.nix @@ -1,4 +1,4 @@ -{ mkDerivation, lib, fetchFromGitHub, qmake, qttools, qttranslations }: +{ stdenv, mkDerivation, lib, fetchFromGitHub, qmake, qttools, qttranslations }: mkDerivation rec { pname = "gpxlab"; @@ -18,6 +18,12 @@ mkDerivation rec { lrelease GPXLab/locale/*.ts ''; + postInstall = lib.optionalString stdenv.isDarwin '' + mkdir -p $out/Applications + mv GPXLab/GPXLab.app $out/Applications + wrapQtApp $out/Applications/GPXLab.app/Contents/MacOS/GPXLab + ''; + enableParallelBuilding = true; meta = with lib; { @@ -29,6 +35,6 @@ mkDerivation rec { ''; license = licenses.gpl3; maintainers = with maintainers; [ sikmir ]; - platforms = platforms.linux; + platforms = with platforms; linux ++ darwin; }; } diff --git a/pkgs/applications/misc/gpxsee/default.nix b/pkgs/applications/misc/gpxsee/default.nix index 9a9edba512a..7077b855e3d 100644 --- a/pkgs/applications/misc/gpxsee/default.nix +++ b/pkgs/applications/misc/gpxsee/default.nix @@ -1,27 +1,32 @@ -{ mkDerivation, lib, fetchFromGitHub, qmake, qttools }: +{ stdenv, mkDerivation, fetchFromGitHub, qmake, qttools }: mkDerivation rec { pname = "gpxsee"; - version = "7.18"; + version = "7.28"; src = fetchFromGitHub { owner = "tumic0"; repo = "GPXSee"; rev = version; - sha256 = "1z3knfqfv0rwsq66adk0qngw1r500yvy4z259bygqkzbn2l5fcjk"; + sha256 = "0077y5az3hb46rvkqrpl4zxga5wnm85ca6rz1rdpwiwhq4ch9q8y"; }; - nativeBuildInputs = [ qmake ]; - buildInputs = [ qttools ]; + nativeBuildInputs = [ qmake qttools ]; preConfigure = '' lrelease lang/*.ts ''; + postInstall = with stdenv; lib.optionalString isDarwin '' + mkdir -p $out/Applications + mv GPXSee.app $out/Applications + wrapQtApp $out/Applications/GPXSee.app/Contents/MacOS/GPXSee + ''; + enableParallelBuilding = true; - meta = with lib; { - homepage = https://www.gpxsee.org/; + meta = with stdenv.lib; { + homepage = "https://www.gpxsee.org/"; description = "GPS log file viewer and analyzer"; longDescription = '' GPXSee is a Qt-based GPS log file viewer and analyzer that supports @@ -29,6 +34,6 @@ mkDerivation rec { ''; license = licenses.gpl3; maintainers = with maintainers; [ womfoo sikmir ]; - platforms = platforms.linux; + platforms = with platforms; linux ++ darwin; }; } diff --git a/pkgs/applications/misc/gramps/default.nix b/pkgs/applications/misc/gramps/default.nix index 84be50ccb5e..e5a2b87f16e 100644 --- a/pkgs/applications/misc/gramps/default.nix +++ b/pkgs/applications/misc/gramps/default.nix @@ -58,7 +58,7 @@ in buildPythonApplication rec { meta = with stdenv.lib; { description = "Genealogy software"; - homepage = https://gramps-project.org; + homepage = "https://gramps-project.org"; license = licenses.gpl2; maintainers = with maintainers; [ joncojonathan ]; }; diff --git a/pkgs/applications/misc/green-pdfviewer/default.nix b/pkgs/applications/misc/green-pdfviewer/default.nix index d86db7adb9d..4e888f4faac 100644 --- a/pkgs/applications/misc/green-pdfviewer/default.nix +++ b/pkgs/applications/misc/green-pdfviewer/default.nix @@ -28,7 +28,7 @@ stdenv.mkDerivation { ''; meta = with stdenv.lib; { - homepage = https://github.com/schandinat/green/; + homepage = "https://github.com/schandinat/green/"; description = "Viewer for PDF files, uses SDL and libpoppler"; platforms = platforms.unix; diff --git a/pkgs/applications/misc/gremlin-console/default.nix b/pkgs/applications/misc/gremlin-console/default.nix index 87e636b9c03..a4932943fa2 100644 --- a/pkgs/applications/misc/gremlin-console/default.nix +++ b/pkgs/applications/misc/gremlin-console/default.nix @@ -20,7 +20,7 @@ stdenv.mkDerivation rec { ''; meta = with stdenv.lib; { - homepage = https://tinkerpop.apache.org/; + homepage = "https://tinkerpop.apache.org/"; description = "Console of the Apache TinkerPop graph computing framework"; license = licenses.asl20; maintainers = [ maintainers.lewo ]; diff --git a/pkgs/applications/misc/grip/default.nix b/pkgs/applications/misc/grip/default.nix index 36ca31707c8..e64ae08037a 100644 --- a/pkgs/applications/misc/grip/default.nix +++ b/pkgs/applications/misc/grip/default.nix @@ -2,11 +2,11 @@ , curl, cdparanoia, libid3tag, ncurses, libtool }: stdenv.mkDerivation rec { - name = "grip-4.0.1"; + name = "grip-4.1.0"; src = fetchurl { url = "mirror://sourceforge/grip/${name}.tar.gz"; - sha256 = "0blh5j3d4g16bhsqmhv71qhbsyyzcqywzpqsjjiiw465mjlwxka6"; + sha256 = "0iy7bcyrxm7zyrxah06qyxdshkgq6yqkadlw211j2qzld38a79j5"; }; nativeBuildInputs = [ pkgconfig ]; @@ -16,11 +16,11 @@ stdenv.mkDerivation rec { hardeningDisable = [ "format" ]; # glib-2.62 deprecations - NIX_CFLAGS_COMPILE = [ "-DGLIB_DISABLE_DEPRECATION_WARNINGS" ]; + NIX_CFLAGS_COMPILE = "-DGLIB_DISABLE_DEPRECATION_WARNINGS"; meta = { description = "GTK-based audio CD player/ripper"; - homepage = http://nostatic.org/grip; + homepage = "http://nostatic.org/grip"; license = stdenv.lib.licenses.gpl2; maintainers = with stdenv.lib.maintainers; [ marcweber peti ]; diff --git a/pkgs/applications/misc/gsctl/default.nix b/pkgs/applications/misc/gsctl/default.nix index b84053b94ad..e80f43f5bd9 100644 --- a/pkgs/applications/misc/gsctl/default.nix +++ b/pkgs/applications/misc/gsctl/default.nix @@ -15,7 +15,7 @@ buildGoPackage rec { meta = with stdenv.lib; { description = "The Giant Swarm command line interface"; - homepage = https://github.com/giantswarm/gsctl; + homepage = "https://github.com/giantswarm/gsctl"; license = licenses.asl20; maintainers = with maintainers; [ joesalisbury ]; }; diff --git a/pkgs/applications/misc/gsimplecal/default.nix b/pkgs/applications/misc/gsimplecal/default.nix index ea78331e476..e83e349b21c 100644 --- a/pkgs/applications/misc/gsimplecal/default.nix +++ b/pkgs/applications/misc/gsimplecal/default.nix @@ -17,7 +17,7 @@ stdenv.mkDerivation rec { preConfigure = "./autogen.sh"; meta = { - homepage = http://dmedvinsky.github.io/gsimplecal/; + homepage = "http://dmedvinsky.github.io/gsimplecal/"; description = "Lightweight calendar application written in C++ using GTK"; longDescription = '' gsimplecal was intentionally made for use with tint2 panel in the diff --git a/pkgs/applications/misc/gtk2fontsel/default.nix b/pkgs/applications/misc/gtk2fontsel/default.nix index 9b8d6a7f976..21ad7d757a1 100644 --- a/pkgs/applications/misc/gtk2fontsel/default.nix +++ b/pkgs/applications/misc/gtk2fontsel/default.nix @@ -20,8 +20,8 @@ stdenv.mkDerivation rec { Font selection tool similar to xfontsel implemented using GTK 2. Trivial, but useful nonetheless. ''; - homepage = http://gtk2fontsel.sourceforge.net/; - downloadPage = https://sourceforge.net/projects/gtk2fontsel/; + homepage = "http://gtk2fontsel.sourceforge.net/"; + downloadPage = "https://sourceforge.net/projects/gtk2fontsel/"; license = licenses.gpl2; maintainers = [ maintainers.prikhi ]; platforms = platforms.linux; diff --git a/pkgs/applications/misc/gummi/default.nix b/pkgs/applications/misc/gummi/default.nix index d1daec28482..af121758c3c 100644 --- a/pkgs/applications/misc/gummi/default.nix +++ b/pkgs/applications/misc/gummi/default.nix @@ -1,37 +1,33 @@ -{ stdenv, pkgs, makeWrapper, pango -, glib, gnome2, gnome3, gtk2-x11, gtkspell2, poppler +{ stdenv, pkgs +, glib, gnome3, gtk3, gtksourceview3, gtkspell3, poppler, texlive , pkgconfig, intltool, autoreconfHook, wrapGAppsHook }: stdenv.mkDerivation rec { - version = "0.6.6"; + version = "0.8.1"; pname = "gummi"; src = pkgs.fetchFromGitHub { owner = "alexandervdm"; repo = "gummi"; rev = version; - sha256 = "1vw8rhv8qj82l6l22kpysgm9mxilnki2kjmvxsnajbqcagr6s7cn"; + sha256 = "0wxgmzazqiq77cw42i5fn2hc22hhxf5gbpl9g8y3zlnp21lw9y16"; }; nativeBuildInputs = [ - pkgconfig intltool autoreconfHook makeWrapper wrapGAppsHook + pkgconfig intltool autoreconfHook wrapGAppsHook ]; buildInputs = [ - glib gnome2.gtksourceview pango gtk2-x11 gtkspell2 poppler - gnome3.adwaita-icon-theme + glib gtksourceview3 gtk3 gtkspell3 poppler + texlive.bin.core # needed for synctex ]; - preConfigure = '' - gappsWrapperArgs+=(--prefix XDG_DATA_DIRS : "${pkgs.gnome2.gtksourceview}/share") - ''; - postInstall = '' install -Dpm644 COPYING $out/share/licenses/$name/COPYING ''; meta = { - homepage = http://gummi.midnightcoding.org/; + homepage = "https://gummi.app"; description = "Simple LaTex editor for GTK users"; license = stdenv.lib.licenses.mit; maintainers = with stdenv.lib.maintainers; [ flokli ]; diff --git a/pkgs/applications/misc/gv/default.nix b/pkgs/applications/misc/gv/default.nix index f94f8f5dd70..accf62c0c46 100644 --- a/pkgs/applications/misc/gv/default.nix +++ b/pkgs/applications/misc/gv/default.nix @@ -32,7 +32,7 @@ stdenv.mkDerivation { doCheck = true; meta = { - homepage = https://www.gnu.org/software/gv/; + homepage = "https://www.gnu.org/software/gv/"; description = "PostScript/PDF document viewer"; longDescription = '' diff --git a/pkgs/applications/misc/gxneur/default.nix b/pkgs/applications/misc/gxneur/default.nix index 6e6145e7908..adabe22c6b6 100644 --- a/pkgs/applications/misc/gxneur/default.nix +++ b/pkgs/applications/misc/gxneur/default.nix @@ -4,12 +4,12 @@ stdenv.mkDerivation { name = "gxneur-0.20.0"; src = fetchurl { - url = https://github.com/AndrewCrewKuznetsov/xneur-devel/raw/f66723feb272c68f7c22a8bf0dbcafa5e3a8a5ee/dists/0.20.0/gxneur_0.20.0.orig.tar.gz; + url = "https://github.com/AndrewCrewKuznetsov/xneur-devel/raw/f66723feb272c68f7c22a8bf0dbcafa5e3a8a5ee/dists/0.20.0/gxneur_0.20.0.orig.tar.gz"; sha256 = "0avmhdcj0hpr55fc0iih8fjykmdhn34c8mwdnqvl8jh4nhxxchxr"; }; # glib-2.62 deprecations - NIX_CFLAGS_COMPILE = [ "-DGLIB_DISABLE_DEPRECATION_WARNINGS" ]; + NIX_CFLAGS_COMPILE = "-DGLIB_DISABLE_DEPRECATION_WARNINGS"; nativeBuildInputs = [ pkgconfig intltool ]; buildInputs = [ diff --git a/pkgs/applications/misc/haxor-news/default.nix b/pkgs/applications/misc/haxor-news/default.nix index 7353078600d..98f84ca68b8 100644 --- a/pkgs/applications/misc/haxor-news/default.nix +++ b/pkgs/applications/misc/haxor-news/default.nix @@ -35,7 +35,7 @@ buildPythonApplication rec { ''; meta = with stdenv.lib; { - homepage = https://github.com/donnemartin/haxor-news; + homepage = "https://github.com/donnemartin/haxor-news"; description = "Browse Hacker News like a haxor"; license = licenses.asl20; maintainers = with maintainers; [ matthiasbeyer ]; diff --git a/pkgs/applications/misc/hdate/default.nix b/pkgs/applications/misc/hdate/default.nix index 989dfb886ec..c97a67c0bd3 100644 --- a/pkgs/applications/misc/hdate/default.nix +++ b/pkgs/applications/misc/hdate/default.nix @@ -9,7 +9,7 @@ stdenv.mkDerivation rec { }; meta = { description = "Hebrew calendar and solar astronomical times library and utilities"; - homepage = https://sourceforge.net/projects/libhdate/; + homepage = "https://sourceforge.net/projects/libhdate/"; license = stdenv.lib.licenses.gpl3; maintainers = with stdenv.lib.maintainers; [ CharlesHD ]; }; diff --git a/pkgs/applications/misc/heimer/default.nix b/pkgs/applications/misc/heimer/default.nix new file mode 100644 index 00000000000..f301122a92d --- /dev/null +++ b/pkgs/applications/misc/heimer/default.nix @@ -0,0 +1,23 @@ +{ mkDerivation, lib, fetchFromGitHub, cmake, qttools, qtbase }: + +mkDerivation rec { + pname = "heimer"; + version = "1.15.1"; + + src = fetchFromGitHub { + owner = "juzzlin"; + repo = pname; + rev = version; + sha256 = "13a9yfq7m8jhirb31i0mmigqb135r585zwqddknl090d88164fic"; + }; + + nativeBuildInputs = [ cmake ]; + buildInputs = [ qttools qtbase ]; + + meta = with lib; { + description = "Simple cross-platform mind map and note-taking tool written in Qt"; + homepage = "https://github.com/juzzlin/Heimer"; + license = licenses.gpl3; + maintainers = with maintainers; [ dtzWill ]; + }; +} diff --git a/pkgs/applications/misc/hello/default.nix b/pkgs/applications/misc/hello/default.nix index 8bae8ce373c..32c8c696730 100644 --- a/pkgs/applications/misc/hello/default.nix +++ b/pkgs/applications/misc/hello/default.nix @@ -17,7 +17,7 @@ stdenv.mkDerivation rec { GNU Hello is a program that prints "Hello, world!" when you run it. It is fully customizable. ''; - homepage = https://www.gnu.org/software/hello/manual/; + homepage = "https://www.gnu.org/software/hello/manual/"; changelog = "https://git.savannah.gnu.org/cgit/hello.git/plain/NEWS?h=v${version}"; license = licenses.gpl3Plus; maintainers = [ maintainers.eelco ]; diff --git a/pkgs/applications/misc/hivemind/default.nix b/pkgs/applications/misc/hivemind/default.nix index e452ec0511e..8a8f80f5797 100644 --- a/pkgs/applications/misc/hivemind/default.nix +++ b/pkgs/applications/misc/hivemind/default.nix @@ -1,10 +1,14 @@ -{ stdenv, buildGoPackage, fetchFromGitHub }: +{ stdenv, buildGoPackage, fetchFromGitHub, runtimeShell }: buildGoPackage rec { pname = "hivemind"; version = "1.0.6"; goPackagePath = "github.com/DarthSim/hivemind"; + postPatch = '' + substituteInPlace process.go --replace \"/bin/sh\" \"${runtimeShell}\" + ''; + src = fetchFromGitHub { owner = "DarthSim"; repo = "hivemind"; @@ -13,7 +17,7 @@ buildGoPackage rec { }; meta = with stdenv.lib; { - homepage = https://github.com/DarthSim/; + homepage = "https://github.com/DarthSim/"; description = "Process manager for Procfile-based applications"; license = with licenses; [ mit ]; maintainers = [ maintainers.sveitser ]; diff --git a/pkgs/applications/misc/houdini/runtime.nix b/pkgs/applications/misc/houdini/runtime.nix index 279791561d9..51b08af23c5 100644 --- a/pkgs/applications/misc/houdini/runtime.nix +++ b/pkgs/applications/misc/houdini/runtime.nix @@ -78,7 +78,7 @@ stdenv.mkDerivation rec { ''; meta = { description = "3D animation application software"; - homepage = https://www.sidefx.com; + homepage = "https://www.sidefx.com"; license = stdenv.lib.licenses.unfree; platforms = stdenv.lib.platforms.linux; maintainers = [ stdenv.lib.maintainers.canndrew ]; diff --git a/pkgs/applications/misc/hovercraft/default.nix b/pkgs/applications/misc/hovercraft/default.nix index ba23078bba9..edb8114e4a4 100644 --- a/pkgs/applications/misc/hovercraft/default.nix +++ b/pkgs/applications/misc/hovercraft/default.nix @@ -28,7 +28,7 @@ buildPythonApplication rec { meta = with lib; { description = "Makes impress.js presentations from reStructuredText"; - homepage = https://github.com/regebro/hovercraft; + homepage = "https://github.com/regebro/hovercraft"; license = licenses.mit; maintainers = with maintainers; [ goibhniu makefu ]; }; diff --git a/pkgs/applications/misc/hr/default.nix b/pkgs/applications/misc/hr/default.nix index 437c42b0331..91a66bc7378 100644 --- a/pkgs/applications/misc/hr/default.nix +++ b/pkgs/applications/misc/hr/default.nix @@ -19,7 +19,7 @@ stdenv.mkDerivation rec { ''; meta = with stdenv.lib; { - homepage = https://github.com/LuRsT/hr; + homepage = "https://github.com/LuRsT/hr"; description = "A horizontal bar for your terminal"; license = licenses.mit; maintainers = [ maintainers.matthiasbeyer ]; diff --git a/pkgs/applications/misc/hstr/default.nix b/pkgs/applications/misc/hstr/default.nix index 0d25d3d686c..b1e740fb760 100644 --- a/pkgs/applications/misc/hstr/default.nix +++ b/pkgs/applications/misc/hstr/default.nix @@ -3,13 +3,13 @@ stdenv.mkDerivation rec { pname = "hstr"; - version = "2.0"; + version = "2.2"; src = fetchFromGitHub { owner = "dvorka"; repo = "hstr"; rev = version; - sha256 = "1y9vsfbg07gbic0daqy569d9pb9i1d07fym3q7a0a99hbng85s20"; + sha256 = "07fkilqlkpygvf9kvxyvl58g3lfq0bwwdp3wczy4hk8qlbhmgihn"; }; nativeBuildInputs = [ autoreconfHook pkgconfig ]; @@ -26,7 +26,7 @@ stdenv.mkDerivation rec { ''; meta = { - homepage = https://github.com/dvorka/hstr; + homepage = "https://github.com/dvorka/hstr"; description = "Shell history suggest box - easily view, navigate, search and use your command history"; license = stdenv.lib.licenses.asl20; maintainers = [ stdenv.lib.maintainers.matthiasbeyer ]; diff --git a/pkgs/applications/misc/hubstaff/default.nix b/pkgs/applications/misc/hubstaff/default.nix index b2997ece5d5..bbe05e0396b 100644 --- a/pkgs/applications/misc/hubstaff/default.nix +++ b/pkgs/applications/misc/hubstaff/default.nix @@ -58,7 +58,7 @@ stdenv.mkDerivation { meta = with stdenv.lib; { description = "Time tracking software"; - homepage = https://hubstaff.com/; + homepage = "https://hubstaff.com/"; license = licenses.unfree; platforms = [ "x86_64-linux" ]; maintainers = with maintainers; [ michalrus srghma ]; diff --git a/pkgs/applications/misc/hugo/default.nix b/pkgs/applications/misc/hugo/default.nix index d6f8983c5ee..7fc042832b5 100644 --- a/pkgs/applications/misc/hugo/default.nix +++ b/pkgs/applications/misc/hugo/default.nix @@ -2,7 +2,7 @@ buildGoModule rec { pname = "hugo"; - version = "0.61.0"; + version = "0.69.0"; goPackagePath = "github.com/gohugoio/hugo"; @@ -10,12 +10,12 @@ buildGoModule rec { owner = "gohugoio"; repo = pname; rev = "v${version}"; - sha256 = "1ad70g4gb44dk48pbgk48jzs44b6l7ksxb739ahp7vs1nyvvgffr"; + sha256 = "050gqjrdfy5ygwl60qdspjn9s6a84k311g3p2fk3sr7i4rnwf36l"; }; - modSha256 = "1jb1iqlp1005aj8smcgznmwnqaysi5g5wcsj8nvvm70hhc9j8wns"; + modSha256 = "07zfqz7d2slswiyx0pw6ip4l428q7nc3i95d4w6d7hfqp0pvp6i0"; - buildFlags = "-tags extended"; + buildFlags = [ "-tags" "extended" ]; subPackages = [ "." ]; @@ -23,6 +23,6 @@ buildGoModule rec { description = "A fast and modern static website engine."; homepage = "https://gohugo.io"; license = licenses.asl20; - maintainers = with maintainers; [ schneefux filalex77 ]; + maintainers = with maintainers; [ schneefux filalex77 Frostman ]; }; } diff --git a/pkgs/applications/misc/hyper/default.nix b/pkgs/applications/misc/hyper/default.nix index f21675e60b2..1535b1a2568 100644 --- a/pkgs/applications/misc/hyper/default.nix +++ b/pkgs/applications/misc/hyper/default.nix @@ -33,7 +33,7 @@ stdenv.mkDerivation rec { dontPatchELF = true; meta = with lib; { description = "A terminal built on web technologies"; - homepage = https://hyper.is/; + homepage = "https://hyper.is/"; maintainers = with maintainers; [ puffnfresh ]; license = licenses.mit; platforms = [ "x86_64-linux" ]; diff --git a/pkgs/applications/misc/icesl/default.nix b/pkgs/applications/misc/icesl/default.nix index 3ee4fd8259a..7b642dffa50 100644 --- a/pkgs/applications/misc/icesl/default.nix +++ b/pkgs/applications/misc/icesl/default.nix @@ -31,7 +31,7 @@ stdenv.mkDerivation rec { meta = with lib; { description = "IceSL is a GPU-accelerated procedural modeler and slicer for 3D printing."; - homepage = http://shapeforge.loria.fr/icesl/index.html; + homepage = "http://shapeforge.loria.fr/icesl/index.html"; license = licenses.inria-icesl; platforms = [ "i686-linux" "x86_64-linux" ]; maintainers = with maintainers; [ mgttlinger ]; diff --git a/pkgs/applications/misc/ikiwiki/default.nix b/pkgs/applications/misc/ikiwiki/default.nix index 957f0f7f68b..1515b4b0f99 100644 --- a/pkgs/applications/misc/ikiwiki/default.nix +++ b/pkgs/applications/misc/ikiwiki/default.nix @@ -19,7 +19,7 @@ assert mercurialSupport -> (mercurial != null); let name = "ikiwiki"; - version = "3.20170111"; + version = "3.20190228"; lib = stdenv.lib; in @@ -27,8 +27,8 @@ stdenv.mkDerivation { name = "${name}-${version}"; src = fetchurl { - url = "mirror://debian/pool/main/i/ikiwiki/${name}_${version}.tar.xz"; - sha256 = "00d7yzv426fvqbhvzyafddv7fa6b4j2647b0wi371wd5yjj9j3sz"; + url = "mirror://debian/pool/main/i/ikiwiki/${name}_${version}.orig.tar.xz"; + sha256 = "17pyblaqhkb61lxl63bzndiffism8k859p54k3k4sghclq6lsynh"; }; buildInputs = [ which ] @@ -44,7 +44,11 @@ stdenv.mkDerivation { ++ lib.optionals subversionSupport [subversion] ++ lib.optionals mercurialSupport [mercurial]; - patchPhase = '' + # A few markdown tests fail, but this is expected when using Text::Markdown + # instead of Text::Markdown::Discount. + patches = [ ./remove-markdown-tests.patch ]; + + postPatch = '' sed -i s@/usr/bin/perl@${perlPackages.perl}/bin/perl@ pm_filter mdwn2man sed -i s@/etc/ikiwiki@$out/etc@ Makefile.PL sed -i /ENV{PATH}/d ikiwiki.in @@ -79,10 +83,9 @@ stdenv.mkDerivation { meta = { description = "Wiki compiler, storing pages and history in a RCS"; - homepage = http://ikiwiki.info/; + homepage = "http://ikiwiki.info/"; license = stdenv.lib.licenses.gpl2Plus; platforms = stdenv.lib.platforms.linux; maintainers = [ stdenv.lib.maintainers.peti ]; - broken = true; # https://ikiwiki.info/bugs/imagemagick_6.9.8_test_suite_failure/ }; } diff --git a/pkgs/applications/misc/ikiwiki/remove-markdown-tests.patch b/pkgs/applications/misc/ikiwiki/remove-markdown-tests.patch new file mode 100644 index 00000000000..c981857a248 --- /dev/null +++ b/pkgs/applications/misc/ikiwiki/remove-markdown-tests.patch @@ -0,0 +1,37 @@ +diff --git a/t/mdwn.t b/t/mdwn.t +index ca3180139..d64750403 100755 +--- a/t/mdwn.t ++++ b/t/mdwn.t +@@ -16,32 +16,17 @@ is(IkiWiki::htmlize("foo", "foo", "mdwn", + "C. S. Lewis wrote books\n"), + "

C. S. Lewis wrote books

\n", "alphalist off by default"); + +-$config{mdwn_alpha_lists} = 1; +-like(IkiWiki::htmlize("foo", "foo", "mdwn", +- "A. One\n". +- "B. Two\n"), +- qr{A. One\sB. Two

\n}, "alphalist can be disabled"); + +-like(IkiWiki::htmlize("foo", "foo", "mdwn", +- "This works[^1]\n\n[^1]: Sometimes it doesn't.\n"), +- qr{

This works\^1}, "footnotes can be disabled"); + +-$config{mdwn_footnotes} = 1; +-like(IkiWiki::htmlize("foo", "foo", "mdwn", +- "This works[^1]\n\n[^1]: Sometimes it doesn't.\n"), +- qr{

This works 1.0, >= 1.0.2) i18n (>= 0.7, < 2) minitest (~> 5.1) @@ -10,19 +10,19 @@ GEM addressable (2.7.0) public_suffix (>= 2.0.2, < 5.0) colorator (1.1.0) - concurrent-ruby (1.1.5) + concurrent-ruby (1.1.6) em-websocket (0.5.1) eventmachine (>= 0.12.9) http_parser.rb (~> 0.6.0) eventmachine (1.2.7) - ffi (1.11.2) + ffi (1.12.2) forwardable-extended (2.6.0) gemoji (3.0.1) - html-pipeline (2.12.2) + html-pipeline (2.12.3) activesupport (>= 2) nokogiri (>= 1.4) http_parser.rb (0.6.0) - i18n (1.7.0) + i18n (1.8.2) concurrent-ruby (~> 1.0) jekyll (4.0.0) addressable (~> 2.4) @@ -44,11 +44,11 @@ GEM jekyll-mentions (1.5.1) html-pipeline (~> 2.3) jekyll (>= 3.7, < 5.0) - jekyll-sass-converter (2.0.1) + jekyll-sass-converter (2.1.0) sassc (> 2.0.1, < 3.0) jekyll-seo-tag (2.6.1) jekyll (>= 3.3, < 5.0) - jekyll-sitemap (1.3.1) + jekyll-sitemap (1.4.0) jekyll (>= 3.7, < 5.0) jekyll-watch (2.2.1) listen (~> 3.0) @@ -60,31 +60,31 @@ GEM kramdown-parser-gfm (1.1.0) kramdown (~> 2.0) liquid (4.0.3) - listen (3.2.0) + listen (3.2.1) rb-fsevent (~> 0.10, >= 0.10.3) rb-inotify (~> 0.9, >= 0.9.10) mercenary (0.3.6) mini_portile2 (2.4.0) - minitest (5.13.0) - nokogiri (1.10.5) + minitest (5.14.0) + nokogiri (1.10.8) mini_portile2 (~> 2.4.0) pathutil (0.16.2) forwardable-extended (~> 2.6) - public_suffix (4.0.1) + public_suffix (4.0.3) rb-fsevent (0.10.3) - rb-inotify (0.10.0) + rb-inotify (0.10.1) ffi (~> 1.0) - rouge (3.13.0) + rouge (3.16.0) safe_yaml (1.0.5) sassc (2.2.1) ffi (~> 1.9) terminal-table (1.8.0) unicode-display_width (~> 1.1, >= 1.1.1) thread_safe (0.3.6) - tzinfo (1.2.5) + tzinfo (1.2.6) thread_safe (~> 0.1) - unicode-display_width (1.6.0) - zeitwerk (2.2.1) + unicode-display_width (1.6.1) + zeitwerk (2.2.2) PLATFORMS ruby @@ -98,4 +98,4 @@ DEPENDENCIES jemoji BUNDLED WITH - 1.17.3 + 2.1.4 diff --git a/pkgs/applications/misc/jekyll/basic/gemset.nix b/pkgs/applications/misc/jekyll/basic/gemset.nix index 7fd9abd82a3..d698d25cb3b 100644 --- a/pkgs/applications/misc/jekyll/basic/gemset.nix +++ b/pkgs/applications/misc/jekyll/basic/gemset.nix @@ -5,10 +5,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "190xv21yz03zz8nlfly557ir859jr5zkwi89naziy65hskdnkw1s"; + sha256 = "1dd6gh66ffdbhsxv33rxxsiciqyhhkm69l1yqspwdj2brvh1jzl1"; type = "gem"; }; - version = "6.0.1"; + version = "6.0.2.1"; }; addressable = { dependencies = ["public_suffix"]; @@ -36,10 +36,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "1x07r23s7836cpp5z9yrlbpljcxpax14yw4fy4bnp6crhr6x24an"; + sha256 = "094387x4yasb797mv07cs3g6f08y56virc2rjcpb1k79rzaj3nhl"; type = "gem"; }; - version = "1.1.5"; + version = "1.1.6"; }; em-websocket = { dependencies = ["eventmachine" "http_parser.rb"]; @@ -67,10 +67,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0cbads5da12lb3j0mg2hjrd57s5qkkairxh2y6r9bqyblb5b8xbw"; + sha256 = "10lfhahnnc91v63xpvk65apn61pib086zha3z5sp1xk9acfx12h4"; type = "gem"; }; - version = "1.11.2"; + version = "1.12.2"; }; forwardable-extended = { groups = ["default"]; @@ -98,10 +98,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "19hc7njr029pzqljpfhzhdi0p2rgn8ihn3bdnai2apy6nj1g1sg2"; + sha256 = "1x5i330yks7pb1jxcbm9n6gslkgaqhyvl13d0cqxmxzkcajvb7z4"; type = "gem"; }; - version = "2.12.2"; + version = "2.12.3"; }; "http_parser.rb" = { groups = ["default"]; @@ -119,10 +119,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0hmypvx9iyc0b4hski7aic2xzm09cg1c7q1qlpnk3k8s5acxzyhl"; + sha256 = "0jwrd1l4mxz06iyx6053lr6hz2zy7ah2k3ranfzisvych5q19kwm"; type = "gem"; }; - version = "1.7.0"; + version = "1.8.2"; }; jekyll = { dependencies = ["addressable" "colorator" "em-websocket" "i18n" "jekyll-sass-converter" "jekyll-watch" "kramdown" "kramdown-parser-gfm" "liquid" "mercenary" "pathutil" "rouge" "safe_yaml" "terminal-table"]; @@ -163,10 +163,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0xjzqpp35qr2vnf2zpak0srn773mp21glcq81a0iqpnrva7h80m3"; + sha256 = "04ncr44wrilz26ayqwlg7379yjnkb29mvx4j04i62b7czmdrc9dv"; type = "gem"; }; - version = "2.0.1"; + version = "2.1.0"; }; jekyll-seo-tag = { dependencies = ["jekyll"]; @@ -185,10 +185,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0d3wqvbn37b24ag31xchb5hhnwfl6fnw6pyzp434jggbssxy0a5m"; + sha256 = "0622rwsn5i0m5xcyzdn86l68wgydqwji03lqixdfm1f1xdfqrq0d"; type = "gem"; }; - version = "1.3.1"; + version = "1.4.0"; }; jekyll-watch = { dependencies = ["listen"]; @@ -249,10 +249,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "1j3s7bprp2jfhgb959wd1h98978zg3207nl87yg8k5w7k08f7snb"; + sha256 = "1w923wmdi3gyiky0asqdw5dnh3gcjs2xyn82ajvjfjwh6sn0clgi"; type = "gem"; }; - version = "3.2.0"; + version = "3.2.1"; }; mercenary = { groups = ["default"]; @@ -279,10 +279,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0w16p7cvslh3hxd3cia8jg4pd85z7rz7xqb16vh42gj4rijn8rmi"; + sha256 = "0g73x65hmjph8dg1h3rkzfg7ys3ffxm35hj35grw75fixmq53qyz"; type = "gem"; }; - version = "5.13.0"; + version = "5.14.0"; }; nokogiri = { dependencies = ["mini_portile2"]; @@ -290,10 +290,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "185g3dwba73jqxjr94bd2zk6fil6n9hmcfnfyzh3p1w47vm296r7"; + sha256 = "1yi8j8hwrlc3rg5v3w52gxndmwifyk7m732q9yfbal0qajqbh1h8"; type = "gem"; }; - version = "1.10.5"; + version = "1.10.8"; }; pathutil = { dependencies = ["forwardable-extended"]; @@ -311,10 +311,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0xnfv2j2bqgdpg2yq9i2rxby0w2sc9h5iyjkpaas2xknwrgmhdb0"; + sha256 = "1c6kq6s13idl2036b5lch8r7390f8w82cal8hcp4ml76fm2vdac7"; type = "gem"; }; - version = "4.0.1"; + version = "4.0.3"; }; rb-fsevent = { groups = ["default"]; @@ -332,20 +332,20 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "1fs7hxm9g6ywv2yih83b879klhc4fs8i0p9166z795qmd77dk0a4"; + sha256 = "1jm76h8f8hji38z3ggf4bzi8vps6p7sagxn3ab57qc0xyga64005"; type = "gem"; }; - version = "0.10.0"; + version = "0.10.1"; }; rouge = { groups = ["default"]; platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "1y90nx9ph9adnrpcsvs2adca2l3dyz8am2d2kzxkwd3a086ji7aw"; + sha256 = "1ivsvkwdxl44q4xl8bnf6kqmvy47n98akcvlfmhaz0614zlf4bxi"; type = "gem"; }; - version = "3.13.0"; + version = "3.16.0"; }; safe_yaml = { groups = ["default"]; @@ -395,29 +395,29 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "1fjx9j327xpkkdlxwmkl3a8wqj7i4l4jwlrv3z13mg95z9wl253z"; + sha256 = "04f18jdv6z3zn3va50rqq35nj3izjpb72fnf21ixm7vanq6nc4fp"; type = "gem"; }; - version = "1.2.5"; + version = "1.2.6"; }; unicode-display_width = { groups = ["default"]; platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "08kfiniak1pvg3gn5k6snpigzvhvhyg7slmm0s2qx5zkj62c1z2w"; + sha256 = "1pppclzq4qb26g321553nm9xqca3zgllvpwb2kqxsdadwj51s09x"; type = "gem"; }; - version = "1.6.0"; + version = "1.6.1"; }; zeitwerk = { groups = ["default"]; platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0w7w7y4jr6pcbgnzmh113fh8wz0f00xixl7qvf2rpvnanb68d5gw"; + sha256 = "0jywi63w1m2b2w9fj9rjb9n3imf6p5bfijfmml1xzdnsrdrjz0x1"; type = "gem"; }; - version = "2.2.1"; + version = "2.2.2"; }; } \ No newline at end of file diff --git a/pkgs/applications/misc/jekyll/default.nix b/pkgs/applications/misc/jekyll/default.nix index 4d4dd248bc5..111b0a8867a 100644 --- a/pkgs/applications/misc/jekyll/default.nix +++ b/pkgs/applications/misc/jekyll/default.nix @@ -46,7 +46,7 @@ in bundlerApp { web server. Jekyll is the engine behind GitHub Pages, which you can use to host sites right from your GitHub repositories. ''; - homepage = https://jekyllrb.com/; + homepage = "https://jekyllrb.com/"; license = licenses.mit; maintainers = with maintainers; [ primeos pesterhazy ]; platforms = platforms.unix; diff --git a/pkgs/applications/misc/jekyll/full/Gemfile.lock b/pkgs/applications/misc/jekyll/full/Gemfile.lock index 43a2d0cf2d0..51a835e4b9f 100644 --- a/pkgs/applications/misc/jekyll/full/Gemfile.lock +++ b/pkgs/applications/misc/jekyll/full/Gemfile.lock @@ -1,7 +1,7 @@ GEM remote: https://rubygems.org/ specs: - activesupport (6.0.1) + activesupport (6.0.2.1) concurrent-ruby (~> 1.0, >= 1.0.2) i18n (>= 0.7, < 2) minitest (~> 5.1) @@ -17,23 +17,23 @@ GEM execjs coffee-script-source (1.12.2) colorator (1.1.0) - concurrent-ruby (1.1.5) + concurrent-ruby (1.1.6) em-websocket (0.5.1) eventmachine (>= 0.12.9) http_parser.rb (~> 0.6.0) eventmachine (1.2.7) execjs (2.7.0) - faraday (0.17.0) + faraday (1.0.0) multipart-post (>= 1.2, < 3) fast-stemmer (1.0.2) - ffi (1.11.2) + ffi (1.12.2) forwardable-extended (2.6.0) gemoji (3.0.1) - html-pipeline (2.12.2) + html-pipeline (2.12.3) activesupport (>= 2) nokogiri (>= 1.4) http_parser.rb (0.6.0) - i18n (1.7.0) + i18n (1.8.2) concurrent-ruby (~> 1.0) jekyll (4.0.0) addressable (~> 2.4) @@ -63,13 +63,13 @@ GEM html-pipeline (~> 2.3) jekyll (>= 3.7, < 5.0) jekyll-paginate (1.1.0) - jekyll-redirect-from (0.15.0) + jekyll-redirect-from (0.16.0) jekyll (>= 3.3, < 5.0) - jekyll-sass-converter (2.0.1) + jekyll-sass-converter (2.1.0) sassc (> 2.0.1, < 3.0) jekyll-seo-tag (2.6.1) jekyll (>= 3.3, < 5.0) - jekyll-sitemap (1.3.1) + jekyll-sitemap (1.4.0) jekyll (>= 3.7, < 5.0) jekyll-watch (2.2.1) listen (~> 3.0) @@ -86,28 +86,29 @@ GEM liquid (4.0.3) liquid-c (4.0.0) liquid (>= 3.0.0) - listen (3.2.0) + listen (3.2.1) rb-fsevent (~> 0.10, >= 0.10.3) rb-inotify (~> 0.9, >= 0.9.10) mercenary (0.3.6) - mime-types (3.3) + mime-types (3.3.1) mime-types-data (~> 3.2015) mime-types-data (3.2019.1009) mini_portile2 (2.4.0) - minitest (5.13.0) + minitest (5.14.0) multipart-post (2.1.1) - nokogiri (1.10.5) + nokogiri (1.10.8) mini_portile2 (~> 2.4.0) - octokit (4.14.0) + octokit (4.16.0) + faraday (>= 0.9) sawyer (~> 0.8.0, >= 0.5.3) pathutil (0.16.2) forwardable-extended (~> 2.6) - public_suffix (4.0.1) + public_suffix (4.0.3) rb-fsevent (0.10.3) - rb-inotify (0.10.0) + rb-inotify (0.10.1) ffi (~> 1.0) - rdoc (6.2.0) - rouge (3.13.0) + rdoc (6.2.1) + rouge (3.16.0) safe_yaml (1.0.5) sassc (2.2.1) ffi (~> 1.9) @@ -117,12 +118,12 @@ GEM terminal-table (1.8.0) unicode-display_width (~> 1.1, >= 1.1.1) thread_safe (0.3.6) - tomlrb (1.2.8) - tzinfo (1.2.5) + tomlrb (1.2.9) + tzinfo (1.2.6) thread_safe (~> 0.1) - unicode-display_width (1.6.0) + unicode-display_width (1.6.1) yajl-ruby (1.4.1) - zeitwerk (2.2.1) + zeitwerk (2.2.2) PLATFORMS ruby @@ -148,4 +149,4 @@ DEPENDENCIES yajl-ruby (~> 1.4) BUNDLED WITH - 1.17.3 + 2.1.4 diff --git a/pkgs/applications/misc/jekyll/full/gemset.nix b/pkgs/applications/misc/jekyll/full/gemset.nix index 2b1c03ce882..44d7f1d0fc8 100644 --- a/pkgs/applications/misc/jekyll/full/gemset.nix +++ b/pkgs/applications/misc/jekyll/full/gemset.nix @@ -5,10 +5,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "190xv21yz03zz8nlfly557ir859jr5zkwi89naziy65hskdnkw1s"; + sha256 = "1dd6gh66ffdbhsxv33rxxsiciqyhhkm69l1yqspwdj2brvh1jzl1"; type = "gem"; }; - version = "6.0.1"; + version = "6.0.2.1"; }; addressable = { dependencies = ["public_suffix"]; @@ -90,10 +90,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "1x07r23s7836cpp5z9yrlbpljcxpax14yw4fy4bnp6crhr6x24an"; + sha256 = "094387x4yasb797mv07cs3g6f08y56virc2rjcpb1k79rzaj3nhl"; type = "gem"; }; - version = "1.1.5"; + version = "1.1.6"; }; em-websocket = { dependencies = ["eventmachine" "http_parser.rb"]; @@ -132,10 +132,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0jk2bar4x6miq2cr73lv0lsbmw4cymiljvp29xb85jifsb3ba6az"; + sha256 = "11yn7mhi4rl24brs2qfwysas14csjf1zmb835cfklqz5ka032xp6"; type = "gem"; }; - version = "0.17.0"; + version = "1.0.0"; }; fast-stemmer = { groups = ["default"]; @@ -164,10 +164,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0cbads5da12lb3j0mg2hjrd57s5qkkairxh2y6r9bqyblb5b8xbw"; + sha256 = "10lfhahnnc91v63xpvk65apn61pib086zha3z5sp1xk9acfx12h4"; type = "gem"; }; - version = "1.11.2"; + version = "1.12.2"; }; forwardable-extended = { groups = ["default"]; @@ -195,10 +195,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "19hc7njr029pzqljpfhzhdi0p2rgn8ihn3bdnai2apy6nj1g1sg2"; + sha256 = "1x5i330yks7pb1jxcbm9n6gslkgaqhyvl13d0cqxmxzkcajvb7z4"; type = "gem"; }; - version = "2.12.2"; + version = "2.12.3"; }; "http_parser.rb" = { groups = ["default"]; @@ -216,10 +216,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0hmypvx9iyc0b4hski7aic2xzm09cg1c7q1qlpnk3k8s5acxzyhl"; + sha256 = "0jwrd1l4mxz06iyx6053lr6hz2zy7ah2k3ranfzisvych5q19kwm"; type = "gem"; }; - version = "1.7.0"; + version = "1.8.2"; }; jekyll = { dependencies = ["addressable" "colorator" "em-websocket" "i18n" "jekyll-sass-converter" "jekyll-watch" "kramdown" "kramdown-parser-gfm" "liquid" "mercenary" "pathutil" "rouge" "safe_yaml" "terminal-table"]; @@ -303,10 +303,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "1cwpr1z7irar81nm60prvl8ywadc82xhpdxs50n7kiic6q6lkjsb"; + sha256 = "1nz6kd6qsa160lmjmls4zgx7fwcpp8ac07mpzy80z6zgd7jwldb6"; type = "gem"; }; - version = "0.15.0"; + version = "0.16.0"; }; jekyll-sass-converter = { dependencies = ["sassc"]; @@ -314,10 +314,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0xjzqpp35qr2vnf2zpak0srn773mp21glcq81a0iqpnrva7h80m3"; + sha256 = "04ncr44wrilz26ayqwlg7379yjnkb29mvx4j04i62b7czmdrc9dv"; type = "gem"; }; - version = "2.0.1"; + version = "2.1.0"; }; jekyll-seo-tag = { dependencies = ["jekyll"]; @@ -336,10 +336,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0d3wqvbn37b24ag31xchb5hhnwfl6fnw6pyzp434jggbssxy0a5m"; + sha256 = "0622rwsn5i0m5xcyzdn86l68wgydqwji03lqixdfm1f1xdfqrq0d"; type = "gem"; }; - version = "1.3.1"; + version = "1.4.0"; }; jekyll-watch = { dependencies = ["listen"]; @@ -446,10 +446,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "1j3s7bprp2jfhgb959wd1h98978zg3207nl87yg8k5w7k08f7snb"; + sha256 = "1w923wmdi3gyiky0asqdw5dnh3gcjs2xyn82ajvjfjwh6sn0clgi"; type = "gem"; }; - version = "3.2.0"; + version = "3.2.1"; }; mercenary = { groups = ["default"]; @@ -467,10 +467,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0g7l18igjb9z7q4b2ykvyxyvjxlx5pwsmx5z3ibdbr6372xgfglk"; + sha256 = "1zj12l9qk62anvk9bjvandpa6vy4xslil15wl6wlivyf51z773vh"; type = "gem"; }; - version = "3.3"; + version = "3.3.1"; }; mime-types-data = { groups = ["default"]; @@ -497,10 +497,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0w16p7cvslh3hxd3cia8jg4pd85z7rz7xqb16vh42gj4rijn8rmi"; + sha256 = "0g73x65hmjph8dg1h3rkzfg7ys3ffxm35hj35grw75fixmq53qyz"; type = "gem"; }; - version = "5.13.0"; + version = "5.14.0"; }; multipart-post = { groups = ["default"]; @@ -518,21 +518,21 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "185g3dwba73jqxjr94bd2zk6fil6n9hmcfnfyzh3p1w47vm296r7"; + sha256 = "1yi8j8hwrlc3rg5v3w52gxndmwifyk7m732q9yfbal0qajqbh1h8"; type = "gem"; }; - version = "1.10.5"; + version = "1.10.8"; }; octokit = { - dependencies = ["sawyer"]; + dependencies = ["faraday" "sawyer"]; groups = ["default"]; platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "1w7agbfg39jzqk81yad9xhscg31869277ysr2iwdvpjafl5lj4ha"; + sha256 = "06kx258qa5k24q5pv8i4daaw3g57gif6p5k5h3gndj3q2jk6vhkn"; type = "gem"; }; - version = "4.14.0"; + version = "4.16.0"; }; pathutil = { dependencies = ["forwardable-extended"]; @@ -550,10 +550,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0xnfv2j2bqgdpg2yq9i2rxby0w2sc9h5iyjkpaas2xknwrgmhdb0"; + sha256 = "1c6kq6s13idl2036b5lch8r7390f8w82cal8hcp4ml76fm2vdac7"; type = "gem"; }; - version = "4.0.1"; + version = "4.0.3"; }; rb-fsevent = { groups = ["default"]; @@ -571,30 +571,30 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "1fs7hxm9g6ywv2yih83b879klhc4fs8i0p9166z795qmd77dk0a4"; + sha256 = "1jm76h8f8hji38z3ggf4bzi8vps6p7sagxn3ab57qc0xyga64005"; type = "gem"; }; - version = "0.10.0"; + version = "0.10.1"; }; rdoc = { groups = ["default"]; platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "1gh7sc3xd4rgl9z90181cq580r1xqn063mmv51wdrhhsrkkw2bi9"; + sha256 = "08862mr1575j8g32wma4pv2qwj4xpllk29i5j61hgf9nwn64afhc"; type = "gem"; }; - version = "6.2.0"; + version = "6.2.1"; }; rouge = { groups = ["default"]; platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "1y90nx9ph9adnrpcsvs2adca2l3dyz8am2d2kzxkwd3a086ji7aw"; + sha256 = "1ivsvkwdxl44q4xl8bnf6kqmvy47n98akcvlfmhaz0614zlf4bxi"; type = "gem"; }; - version = "3.13.0"; + version = "3.16.0"; }; safe_yaml = { groups = ["default"]; @@ -654,10 +654,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0g28ssfal6vry3cmhy509ba3vi5d5aggz1gnffnvvmc8ml8vkpiv"; + sha256 = "0njkyq5csj4km8spmw33b5902v254wvyvqq1b0f0kky5hs7bvrgg"; type = "gem"; }; - version = "1.2.8"; + version = "1.2.9"; }; tzinfo = { dependencies = ["thread_safe"]; @@ -665,20 +665,20 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "1fjx9j327xpkkdlxwmkl3a8wqj7i4l4jwlrv3z13mg95z9wl253z"; + sha256 = "04f18jdv6z3zn3va50rqq35nj3izjpb72fnf21ixm7vanq6nc4fp"; type = "gem"; }; - version = "1.2.5"; + version = "1.2.6"; }; unicode-display_width = { groups = ["default"]; platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "08kfiniak1pvg3gn5k6snpigzvhvhyg7slmm0s2qx5zkj62c1z2w"; + sha256 = "1pppclzq4qb26g321553nm9xqca3zgllvpwb2kqxsdadwj51s09x"; type = "gem"; }; - version = "1.6.0"; + version = "1.6.1"; }; yajl-ruby = { groups = ["default"]; @@ -707,9 +707,9 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0w7w7y4jr6pcbgnzmh113fh8wz0f00xixl7qvf2rpvnanb68d5gw"; + sha256 = "0jywi63w1m2b2w9fj9rjb9n3imf6p5bfijfmml1xzdnsrdrjz0x1"; type = "gem"; }; - version = "2.2.1"; + version = "2.2.2"; }; } \ No newline at end of file diff --git a/pkgs/applications/misc/jgmenu/default.nix b/pkgs/applications/misc/jgmenu/default.nix index 31568c7b0fd..47f02e32d77 100644 --- a/pkgs/applications/misc/jgmenu/default.nix +++ b/pkgs/applications/misc/jgmenu/default.nix @@ -2,13 +2,13 @@ stdenv.mkDerivation rec { pname = "jgmenu"; - version = "3.5"; + version = "4.1.0"; src = fetchFromGitHub { owner = "johanmalm"; repo = pname; rev = "v${version}"; - sha256 = "0q0m3sskgmjv28gzvjkphgg3yhwzc9w9fj9i342pibb50impjazy"; + sha256 = "1wsh37rapb1bszlq36hvwxqvfds39hbvbl152m8as4zlh93wfvvk"; }; nativeBuildInputs = [ @@ -37,7 +37,7 @@ stdenv.mkDerivation rec { ''; meta = with stdenv.lib; { - homepage = https://github.com/johanmalm/jgmenu; + homepage = "https://github.com/johanmalm/jgmenu"; description = "Small X11 menu intended to be used with openbox and tint2"; license = licenses.gpl2; platforms = platforms.linux; diff --git a/pkgs/applications/misc/jigdo/default.nix b/pkgs/applications/misc/jigdo/default.nix index 3561fcde839..134354de40b 100644 --- a/pkgs/applications/misc/jigdo/default.nix +++ b/pkgs/applications/misc/jigdo/default.nix @@ -5,13 +5,13 @@ stdenv.mkDerivation { # Debian sources src = fetchurl { - url = http://ftp.de.debian.org/debian/pool/main/j/jigdo/jigdo_0.7.3.orig.tar.gz; + url = "http://ftp.de.debian.org/debian/pool/main/j/jigdo/jigdo_0.7.3.orig.tar.gz"; sha256 = "1qvqzgzb0dzq82fa1ffs6hyij655rajnfwkljk1y0mnkygnha1xv"; }; patches = [ (fetchurl { - url = http://ftp.de.debian.org/debian/pool/main/j/jigdo/jigdo_0.7.3-4.diff.gz; + url = "http://ftp.de.debian.org/debian/pool/main/j/jigdo/jigdo_0.7.3-4.diff.gz"; sha256 = "03zsh57fijciiv23lf55k6fbfhhzm866xjhx83x54v5s1g2h6m8y"; }) ./sizewidth.patch @@ -23,7 +23,7 @@ stdenv.mkDerivation { meta = { description = "Download utility that can fetch files from several sources simultaneously"; - homepage = http://atterer.net/jigdo/; + homepage = "http://atterer.net/jigdo/"; license = stdenv.lib.licenses.gpl2; platforms = stdenv.lib.platforms.unix; }; diff --git a/pkgs/applications/misc/joplin-desktop/default.nix b/pkgs/applications/misc/joplin-desktop/default.nix index ff0332e1e5f..5787836487b 100644 --- a/pkgs/applications/misc/joplin-desktop/default.nix +++ b/pkgs/applications/misc/joplin-desktop/default.nix @@ -1,13 +1,19 @@ -{ appimageTools, fetchurl, lib, gsettings-desktop-schemas, gtk3 }: +{ appimageTools, fetchurl, lib, gsettings-desktop-schemas, gtk3, makeDesktopItem }: let pname = "joplin-desktop"; - version = "1.0.167"; + version = "1.0.200"; + desktopItem = makeDesktopItem { + name = "Joplin"; + exec = "joplin-desktop"; + type = "Application"; + desktopName = "Joplin"; + }; in appimageTools.wrapType2 rec { name = "${pname}-${version}"; src = fetchurl { - url = "https://github.com/laurent22/joplin/releases/download/v${version}/Joplin-${version}-x86_64.AppImage"; - sha256 = "062f2av60490ffrml0q8zv68yir6zaqif0g3d32c985gcvmgn9lw"; + url = "https://github.com/laurent22/joplin/releases/download/v${version}/Joplin-${version}.AppImage"; + sha256 = "14gwv8i6dprvl96mifadq0zj77a82rww8xd5bmzm8ql6sidi2216"; }; @@ -18,7 +24,12 @@ in appimageTools.wrapType2 rec { multiPkgs = null; # no 32bit needed extraPkgs = appimageTools.defaultFhsEnvArgs.multiPkgs; - extraInstallCommands = "mv $out/bin/{${name},${pname}}"; + extraInstallCommands = '' + mkdir -p $out/share/applications + ln -s ${desktopItem}/share/applications/* $out/share/applications + mv $out/bin/{${name},${pname}} + ''; + meta = with lib; { description = "An open source note taking and to-do application with synchronisation capabilities"; @@ -29,9 +40,9 @@ in appimageTools.wrapType2 rec { applications directly or from your own text editor. The notes are in Markdown format. ''; - homepage = https://joplin.cozic.net/; + homepage = "https://joplinapp.org"; license = licenses.mit; - maintainers = with maintainers; [ rafaelgg raquelgb ]; + maintainers = with maintainers; [ hugoreeves rafaelgg raquelgb ]; platforms = [ "x86_64-linux" ]; }; } diff --git a/pkgs/applications/misc/josm/default.nix b/pkgs/applications/misc/josm/default.nix index a3cbdabeacf..eec7a066a88 100644 --- a/pkgs/applications/misc/josm/default.nix +++ b/pkgs/applications/misc/josm/default.nix @@ -2,11 +2,11 @@ stdenv.mkDerivation rec { pname = "josm"; - version = "15492"; + version = "16239"; src = fetchurl { url = "https://josm.openstreetmap.de/download/josm-snapshot-${version}.jar"; - sha256 = "0x7ndcrlvrvk2fd4pyn10npr3778khcwg6xzzh19vdw4glh5zfcl"; + sha256 = "041n81mnd587043f8wwjv8ckbx0hlsqf3pc7hzbns1y89xdghms1"; }; buildInputs = [ jdk11 makeWrapper ]; @@ -38,7 +38,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "An extensible editor for OpenStreetMap"; - homepage = https://josm.openstreetmap.de/; + homepage = "https://josm.openstreetmap.de/"; license = licenses.gpl2Plus; maintainers = [ maintainers.rycee ]; platforms = platforms.all; diff --git a/pkgs/applications/misc/jotta-cli/default.nix b/pkgs/applications/misc/jotta-cli/default.nix index a5196811a6a..70ca28b4678 100644 --- a/pkgs/applications/misc/jotta-cli/default.nix +++ b/pkgs/applications/misc/jotta-cli/default.nix @@ -5,11 +5,10 @@ let in stdenv.mkDerivation rec { pname = "jotta-cli"; - version = "0.6.18626"; - src = - fetchzip { + version = "0.6.24251"; + src = fetchzip { url = "https://repo.jotta.us/archives/linux/${arch}/jotta-cli-${version}_linux_${arch}.tar.gz"; - sha256 = "0v9bw0f2mcvmzp7v8gs6q4p1q54rflqnbjv5sw7h1kyfwznmflzj"; + sha256 = "0f26fg5fqpz0f6jxp72cj5f2kf76jah5iaqlqsl87250y0hm330g"; stripRoot = false; }; @@ -26,8 +25,8 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Jottacloud CLI"; - homepage = https://www.jottacloud.com/; - downloadPage = https://repo.jotta.us/archives/linux/; + homepage = "https://www.jottacloud.com/"; + downloadPage = "https://repo.jotta.us/archives/linux/"; maintainers = with maintainers; [ evenbrenden ]; license = licenses.unfree; platforms = [ "x86_64-linux" ]; diff --git a/pkgs/applications/misc/jp2a/default.nix b/pkgs/applications/misc/jp2a/default.nix index 2a9e162e7ea..d30e5d96df4 100644 --- a/pkgs/applications/misc/jp2a/default.nix +++ b/pkgs/applications/misc/jp2a/default.nix @@ -11,13 +11,13 @@ stdenv.mkDerivation rec { sha256 = "12a1z9ba2j16y67f41y8ax5sgv1wdjd71pg7circdxkj263n78ql"; }; - makeFlags = "PREFIX=$(out)"; + makeFlags = [ "PREFIX=$(out)" ]; nativeBuildInputs = [ autoreconfHook ]; buildInputs = [ libjpeg ]; meta = with stdenv.lib; { - homepage = https://csl.name/jp2a/; + homepage = "https://csl.name/jp2a/"; description = "A small utility that converts JPG images to ASCII"; license = licenses.gpl2; platforms = platforms.unix; diff --git a/pkgs/applications/misc/jrnl/default.nix b/pkgs/applications/misc/jrnl/default.nix index 3260f6a5069..992b981c003 100644 --- a/pkgs/applications/misc/jrnl/default.nix +++ b/pkgs/applications/misc/jrnl/default.nix @@ -22,7 +22,7 @@ buildPythonApplication rec { doCheck = false; meta = with stdenv.lib; { - homepage = http://maebert.github.io/jrnl/; + homepage = "http://maebert.github.io/jrnl/"; description = "A simple command line journal application that stores your journal in a plain text file"; license = licenses.mit; maintainers = with maintainers; [ zalakain ]; diff --git a/pkgs/applications/misc/k2pdfopt/default.nix b/pkgs/applications/misc/k2pdfopt/default.nix index aedfff40d70..8899654cc4c 100644 --- a/pkgs/applications/misc/k2pdfopt/default.nix +++ b/pkgs/applications/misc/k2pdfopt/default.nix @@ -65,9 +65,7 @@ stdenv.mkDerivation rec { cmakeFlags = [ "-DCMAKE_C_FLAGS=-I${src}/include_mod" ]; - NIX_LDFLAGS = [ - "-lpthread" - ]; + NIX_LDFLAGS = "-lpthread"; installPhase = '' install -D -m 755 k2pdfopt $out/bin/k2pdfopt @@ -75,7 +73,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Optimizes PDF/DJVU files for mobile e-readers (e.g. the Kindle) and smartphones"; - homepage = http://www.willus.com/k2pdfopt; + homepage = "http://www.willus.com/k2pdfopt"; license = licenses.gpl3; platforms = platforms.linux; maintainers = with maintainers; [ bosu danielfullmer ]; diff --git a/pkgs/applications/misc/kanboard/default.nix b/pkgs/applications/misc/kanboard/default.nix index d3cef00bbe8..9e2857c960f 100644 --- a/pkgs/applications/misc/kanboard/default.nix +++ b/pkgs/applications/misc/kanboard/default.nix @@ -2,13 +2,13 @@ stdenv.mkDerivation rec { pname = "kanboard"; - version = "1.2.12"; + version = "1.2.13"; src = fetchFromGitHub { owner = "kanboard"; repo = "kanboard"; rev = "v${version}"; - sha256 = "1m1drgbyk1m6mf69xqlz9gqcj650n9m4y2fdj7d2yv20q8r31489"; + sha256 = "0mm5sx323v1rwykd1dhvk4d3ipgvgvi3wvhrlavbja3lgay3mdwk"; }; dontBuild = true; @@ -20,8 +20,8 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Kanban project management software"; - homepage = https://kanboard.net; + homepage = "https://kanboard.net"; license = licenses.mit; - maintainers = with maintainers; [ fpletz ]; + maintainers = with maintainers; [ fpletz lheckemann ]; }; } diff --git a/pkgs/applications/misc/kdeconnect/default.nix b/pkgs/applications/misc/kdeconnect/default.nix index e8bdcb37118..c3d2feb2fed 100644 --- a/pkgs/applications/misc/kdeconnect/default.nix +++ b/pkgs/applications/misc/kdeconnect/default.nix @@ -44,7 +44,7 @@ mkDerivation rec { meta = with lib; { description = "KDE Connect provides several features to integrate your phone and your computer"; - homepage = https://community.kde.org/KDEConnect; + homepage = "https://community.kde.org/KDEConnect"; license = with licenses; [ gpl2 ]; maintainers = with maintainers; [ fridh ]; }; diff --git a/pkgs/applications/misc/keepass-plugins/keepasshttp/default.nix b/pkgs/applications/misc/keepass-plugins/keepasshttp/default.nix index 76ea9df78c2..f9dbf14624f 100644 --- a/pkgs/applications/misc/keepass-plugins/keepasshttp/default.nix +++ b/pkgs/applications/misc/keepass-plugins/keepasshttp/default.nix @@ -17,7 +17,7 @@ let meta = { description = "KeePass plugin to expose password entries securely (256bit AES/CBC) over HTTP"; - homepage = https://github.com/pfn/keepasshttp; + homepage = "https://github.com/pfn/keepasshttp"; platforms = with stdenv.lib.platforms; linux; license = stdenv.lib.licenses.gpl3; }; diff --git a/pkgs/applications/misc/keepass-plugins/keepassrpc/default.nix b/pkgs/applications/misc/keepass-plugins/keepassrpc/default.nix index 562835159eb..3d41c45f6dc 100644 --- a/pkgs/applications/misc/keepass-plugins/keepassrpc/default.nix +++ b/pkgs/applications/misc/keepass-plugins/keepassrpc/default.nix @@ -12,7 +12,7 @@ let meta = with stdenv.lib; { description = "The KeePassRPC plugin that needs to be installed inside KeePass in order for Kee to be able to connect your browser to your passwords"; - homepage = https://github.com/kee-org/keepassrpc; + homepage = "https://github.com/kee-org/keepassrpc"; platforms = [ "x86_64-linux" ]; license = licenses.gpl2; maintainers = with maintainers; [ mjanczyk svsdep mgregoire ]; diff --git a/pkgs/applications/misc/keepass/default.nix b/pkgs/applications/misc/keepass/default.nix index b954d2d3cdb..1d668e039bd 100644 --- a/pkgs/applications/misc/keepass/default.nix +++ b/pkgs/applications/misc/keepass/default.nix @@ -107,7 +107,7 @@ with builtins; buildDotnetPackage rec { meta = { description = "GUI password manager with strong cryptography"; - homepage = http://www.keepass.info/; + homepage = "http://www.keepass.info/"; maintainers = with stdenv.lib.maintainers; [ amorsillo obadz joncojonathan jraygauthier ]; platforms = with stdenv.lib.platforms; all; license = stdenv.lib.licenses.gpl2; diff --git a/pkgs/applications/misc/keepassx/2.0.nix b/pkgs/applications/misc/keepassx/2.0.nix index 36734a97516..fdd11db509f 100644 --- a/pkgs/applications/misc/keepassx/2.0.nix +++ b/pkgs/applications/misc/keepassx/2.0.nix @@ -13,7 +13,7 @@ stdenv.mkDerivation rec { meta = { description = "Qt password manager compatible with its Win32 and Pocket PC versions"; - homepage = https://www.keepassx.org/; + homepage = "https://www.keepassx.org/"; license = stdenv.lib.licenses.gpl2; maintainers = with stdenv.lib.maintainers; [ qknight ]; platforms = with stdenv.lib.platforms; linux; diff --git a/pkgs/applications/misc/keepassx/community.nix b/pkgs/applications/misc/keepassx/community.nix index 06fc04ba8fb..469b4cf5ea6 100644 --- a/pkgs/applications/misc/keepassx/community.nix +++ b/pkgs/applications/misc/keepassx/community.nix @@ -1,4 +1,10 @@ -{ stdenv, fetchFromGitHub, cmake, makeWrapper, qttools +{ stdenv +, fetchFromGitHub +, fetchpatch +, cmake +, makeWrapper +, qttools +, darwin , curl , glibcLocales @@ -7,7 +13,6 @@ , libargon2 , libgcrypt , libgpgerror -, libmicrohttpd , libsodium , libyubikey , pkg-config @@ -34,13 +39,13 @@ with stdenv.lib; stdenv.mkDerivation rec { pname = "keepassxc"; - version = "2.5.1"; + version = "2.5.4"; src = fetchFromGitHub { owner = "keepassxreboot"; repo = "keepassxc"; rev = version; - sha256 = "0dkya9smx81c5cgcwk2gi2m1pabfff1v9gd3ngl42sdvyb63wgdq"; + sha256 = "1xih9q1pxszalc0l29fmjxwn1vrrrrbnhc8gmi8brw5sclhbs6bh"; }; NIX_CFLAGS_COMPILE = stdenv.lib.optionalString stdenv.cc.isClang [ @@ -58,6 +63,11 @@ stdenv.mkDerivation rec { patches = [ ./darwin.patch + # use wl-copy on Wayland - can be dropped with the next version update + (fetchpatch { + url = "https://github.com/keepassxreboot/keepassxc/commit/6128e5d58294f26411160f44da91087ebe7f4b07.patch"; + sha256 = "16q0h7kijqjdbskmk4ar6p3g8vcxr0bq1zrlq2bk16pk10nv4bh1"; + }) ]; cmakeFlags = [ @@ -80,7 +90,8 @@ stdenv.mkDerivation rec { export LC_ALL="en_US.UTF-8" export QT_QPA_PLATFORM=offscreen export QT_PLUGIN_PATH="${qtbase.bin}/${qtbase.qtPluginPrefix}" - make test ARGS+="-E testgui --output-on-failure" + # testcli and testgui are flaky - skip them both + make test ARGS+="-E 'testcli|testgui' --output-on-failure" ''; nativeBuildInputs = [ cmake wrapQtAppsHook qttools ]; @@ -93,7 +104,6 @@ stdenv.mkDerivation rec { libargon2 libgcrypt libgpgerror - libmicrohttpd libsodium libyubikey pkg-config @@ -105,7 +115,8 @@ stdenv.mkDerivation rec { zlib ] ++ stdenv.lib.optional withKeePassKeeShareSecure quazip - ++ stdenv.lib.optional stdenv.isDarwin qtmacextras; + ++ stdenv.lib.optional stdenv.isDarwin qtmacextras + ++ stdenv.lib.optional (stdenv.isDarwin && withKeePassTouchID) darwin.apple_sdk.frameworks.LocalAuthentication; preFixup = optionalString stdenv.isDarwin '' # Make it work without Qt in PATH. @@ -115,9 +126,9 @@ stdenv.mkDerivation rec { meta = { description = "Password manager to store your passwords safely and auto-type them into your everyday websites and applications"; longDescription = "A community fork of KeePassX, which is itself a port of KeePass Password Safe. The goal is to extend and improve KeePassX with new features and bugfixes to provide a feature-rich, fully cross-platform and modern open-source password manager. Accessible via native cross-platform GUI, CLI, and browser integration with the KeePassXC Browser Extension (https://github.com/keepassxreboot/keepassxc-browser)."; - homepage = https://keepassxc.org/; + homepage = "https://keepassxc.org/"; license = licenses.gpl2; - maintainers = with maintainers; [ jonafato ]; - platforms = with platforms; linux ++ darwin; + maintainers = with maintainers; [ jonafato turion ]; + platforms = platforms.linux ++ platforms.darwin; }; } diff --git a/pkgs/applications/misc/keepassx/darwin.patch b/pkgs/applications/misc/keepassx/darwin.patch index 6232d1118a7..95ca5d4587f 100644 --- a/pkgs/applications/misc/keepassx/darwin.patch +++ b/pkgs/applications/misc/keepassx/darwin.patch @@ -6,10 +6,10 @@ index 74b1a7ff..0a713a32 100644 set(PLUGIN_INSTALL_DIR ".") set(DATA_INSTALL_DIR "share") elseif(APPLE AND WITH_APP_BUNDLE) -+ set(CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}/Applications") ++ set(CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}/Applications") + set(BUNDLE_INSTALL_DIR "${PROGNAME}.app/Contents") set(CMAKE_INSTALL_MANDIR "${PROGNAME}.app/Contents/Resources/man") set(CLI_INSTALL_DIR "${PROGNAME}.app/Contents/MacOS") - set(PROXY_INSTALL_DIR "${PROGNAME}.app/Contents/MacOS") @@ -369,12 +370,6 @@ set(CMAKE_AUTORCC ON) if(APPLE) diff --git a/pkgs/applications/misc/keepassx/default.nix b/pkgs/applications/misc/keepassx/default.nix index 7adbcb86c50..d0980001c8f 100644 --- a/pkgs/applications/misc/keepassx/default.nix +++ b/pkgs/applications/misc/keepassx/default.nix @@ -17,7 +17,7 @@ stdenv.mkDerivation rec { meta = { description = "Qt password manager compatible with its Win32 and Pocket PC versions"; - homepage = https://www.keepassx.org/; + homepage = "https://www.keepassx.org/"; license = stdenv.lib.licenses.gpl2; maintainers = with stdenv.lib.maintainers; [ qknight ]; platforms = with stdenv.lib.platforms; linux; diff --git a/pkgs/applications/misc/khal/default.nix b/pkgs/applications/misc/khal/default.nix index 756c8e25971..ae9576e6cbc 100644 --- a/pkgs/applications/misc/khal/default.nix +++ b/pkgs/applications/misc/khal/default.nix @@ -1,4 +1,4 @@ -{ stdenv, pkgs, python3, fetchpatch }: +{ stdenv, pkgs, python3, fetchpatch, glibcLocales }: with python3.pkgs; buildPythonApplication rec { pname = "khal"; @@ -11,11 +11,14 @@ with python3.pkgs; buildPythonApplication rec { # Include a khal.desktop file via upstream commit. # This patch should be removed when updating to the next version, probably. - patches = [ (fetchpatch { - name = "add-khal-dot-desktop.patch"; - url = "https://github.com/pimutils/khal/commit/1f93d238fec7c934dd2f8e48f54925d22130e3aa.patch"; - sha256 = "06skn3van7zd93348fc6axllx71ckkc7h2zljqlvwa339vca608c"; - }) ]; + patches = [ + (fetchpatch { + name = "add-khal-dot-desktop.patch"; + url = "https://github.com/pimutils/khal/commit/1f93d238fec7c934dd2f8e48f54925d22130e3aa.patch"; + sha256 = "06skn3van7zd93348fc6axllx71ckkc7h2zljqlvwa339vca608c"; + }) + ./skip-broken-test.patch + ]; propagatedBuildInputs = [ atomicwrites @@ -35,7 +38,8 @@ with python3.pkgs; buildPythonApplication rec { freezegun ]; nativeBuildInputs = [ setuptools_scm sphinx sphinxcontrib_newsfeed ]; - checkInputs = [ pytest ]; + checkInputs = [ pytest glibcLocales ]; + LC_ALL = "en_US.UTF-8"; postInstall = '' # zsh completion @@ -57,7 +61,7 @@ with python3.pkgs; buildPythonApplication rec { ''; meta = with stdenv.lib; { - homepage = http://lostpackets.de/khal/; + homepage = "http://lostpackets.de/khal/"; description = "CLI calendar application"; license = licenses.mit; maintainers = with maintainers; [ gebner ]; diff --git a/pkgs/applications/misc/khal/skip-broken-test.patch b/pkgs/applications/misc/khal/skip-broken-test.patch new file mode 100644 index 00000000000..c3c982547ae --- /dev/null +++ b/pkgs/applications/misc/khal/skip-broken-test.patch @@ -0,0 +1,21 @@ +diff --git a/tests/ui/test_editor.py b/tests/ui/test_editor.py +index 27b7fa5..5978d72 100644 +--- a/tests/ui/test_editor.py ++++ b/tests/ui/test_editor.py +@@ -1,5 +1,7 @@ + import datetime as dt + ++import pytest ++ + import icalendar + from khal.ui.editor import RecurrenceEditor, StartEndEditor + +@@ -19,7 +21,7 @@ palette = { + 'edit': 'blue', + } + +- ++@pytest.mark.skip(reason="Mocking breaks in this testcase") + def test_popup(monkeypatch): + """making sure the popup calendar gets callend with the right inital value + diff --git a/pkgs/applications/misc/khard/default.nix b/pkgs/applications/misc/khard/default.nix index 1c6708c51c9..0d3c9d0cbd0 100644 --- a/pkgs/applications/misc/khard/default.nix +++ b/pkgs/applications/misc/khard/default.nix @@ -1,12 +1,12 @@ { stdenv, glibcLocales, python3 }: python3.pkgs.buildPythonApplication rec { - version = "0.15.1"; + version = "0.16.0"; pname = "khard"; src = python3.pkgs.fetchPypi { inherit pname version; - sha256 = "18ba2xgfq8sw0bg6xmlfjpizid1hkzgswcfcc54gl21y2dwfda2w"; + sha256 = "0a1zpkq0pplmn9flxczq2wafs6zc07r9xx9qi6dqmyv9mhy9d87f"; }; propagatedBuildInputs = with python3.pkgs; [ @@ -23,7 +23,7 @@ python3.pkgs.buildPythonApplication rec { ''; meta = { - homepage = https://github.com/scheibler/khard; + homepage = "https://github.com/scheibler/khard"; description = "Console carddav client"; license = stdenv.lib.licenses.gpl3; maintainers = with stdenv.lib.maintainers; [ matthiasbeyer ]; diff --git a/pkgs/applications/misc/kitty/default.nix b/pkgs/applications/misc/kitty/default.nix index 6900f305c0f..d1682227920 100644 --- a/pkgs/applications/misc/kitty/default.nix +++ b/pkgs/applications/misc/kitty/default.nix @@ -2,6 +2,7 @@ harfbuzz, fontconfig, pkgconfig, ncurses, imagemagick, xsel, libstartup_notification, libGL, libX11, libXrandr, libXinerama, libXcursor, libxkbcommon, libXi, libXext, wayland-protocols, wayland, + installShellFiles, which, dbus, Cocoa, CoreGraphics, @@ -12,8 +13,6 @@ libcanberra, libicns, libpng, - librsvg, - optipng, python3, zlib, }: @@ -21,14 +20,14 @@ with python3Packages; buildPythonApplication rec { pname = "kitty"; - version = "0.15.1"; + version = "0.17.2"; format = "other"; src = fetchFromGitHub { owner = "kovidgoyal"; repo = "kitty"; rev = "v${version}"; - sha256 = "0y25w8123rjd6f5875mk8yv7mdr75mgswl3sh6zixm7b9r771s9p"; + sha256 = "0xiwz89ynhh8aj0c9jbqfsxf129hnzs0gz4bzcparnjisq2sh3cq"; }; buildInputs = [ @@ -55,8 +54,7 @@ buildPythonApplication rec { ] ++ stdenv.lib.optionals stdenv.isDarwin [ imagemagick libicns # For the png2icns tool. - librsvg - optipng + installShellFiles ]; propagatedBuildInputs = stdenv.lib.optional stdenv.isLinux libGL; @@ -74,12 +72,14 @@ buildPythonApplication rec { }) ] ++ stdenv.lib.optionals stdenv.isDarwin [ ./no-lto.patch - ./no-werror.patch - ./png2icns.patch ]; + # Causes build failure due to warning + hardeningDisable = stdenv.lib.optional stdenv.isDarwin "strictoverflow"; + buildPhase = if stdenv.isDarwin then '' ${python.interpreter} setup.py kitty.app --update-check-interval=0 + make man '' else '' ${python.interpreter} setup.py linux-package --update-check-interval=0 ''; @@ -92,6 +92,8 @@ buildPythonApplication rec { ln -s ../Applications/kitty.app/Contents/MacOS/kitty "$out/bin/kitty" mkdir "$out/Applications" cp -r kitty.app "$out/Applications/kitty.app" + + installManPage 'docs/_build/man/kitty.1' '' else '' cp -r linux-package/{bin,share,lib} $out ''} @@ -103,6 +105,7 @@ buildPythonApplication rec { mkdir -p "$out/share/"{bash-completion/completions,fish/vendor_completions.d,zsh/site-functions} "$out/bin/kitty" + complete setup fish > "$out/share/fish/vendor_completions.d/kitty.fish" "$out/bin/kitty" + complete setup bash > "$out/share/bash-completion/completions/kitty.bash" + "$out/bin/kitty" + complete setup zsh > "$out/share/zsh/site-functions/_kitty" ''; postInstall = '' @@ -119,10 +122,10 @@ buildPythonApplication rec { ''; meta = with stdenv.lib; { - homepage = https://github.com/kovidgoyal/kitty; + homepage = "https://github.com/kovidgoyal/kitty"; description = "A modern, hackable, featureful, OpenGL based terminal emulator"; license = licenses.gpl3; platforms = platforms.darwin ++ platforms.linux; - maintainers = with maintainers; [ tex rvolosatovs ma27 ]; + maintainers = with maintainers; [ tex rvolosatovs ma27 Luflosi ]; }; } diff --git a/pkgs/applications/misc/kitty/no-lto.patch b/pkgs/applications/misc/kitty/no-lto.patch index 44d231cb07f..8073c11fbd2 100644 --- a/pkgs/applications/misc/kitty/no-lto.patch +++ b/pkgs/applications/misc/kitty/no-lto.patch @@ -1,12 +1,13 @@ --- a/setup.py +++ b/setup.py -@@ -233,9 +233,6 @@ def init_env( +@@ -277,10 +277,6 @@ def init_env( cppflags += shlex.split(os.environ.get('CPPFLAGS', '')) cflags += shlex.split(os.environ.get('CFLAGS', '')) ldflags += shlex.split(os.environ.get('LDFLAGS', '')) - if not debug and not sanitize: - # See https://github.com/google/sanitizers/issues/647 -- cflags.append('-flto'), ldflags.append('-flto') +- cflags.append('-flto') +- ldflags.append('-flto') if profile: cppflags.append('-DWITH_PROFILER') diff --git a/pkgs/applications/misc/kitty/no-werror.patch b/pkgs/applications/misc/kitty/no-werror.patch deleted file mode 100644 index bc1b369d98d..00000000000 --- a/pkgs/applications/misc/kitty/no-werror.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/setup.py -+++ b/setup.py -@@ -217,7 +217,7 @@ def init_env( - cflags = os.environ.get( - 'OVERRIDE_CFLAGS', ( - '-Wextra {} -Wno-missing-field-initializers -Wall -Wstrict-prototypes -std=c11' -- ' -pedantic-errors -Werror {} {} -fwrapv {} {} -pipe {} -fvisibility=hidden' -+ ' {} {} -fwrapv {} {} -pipe {} -fvisibility=hidden' - ).format( - float_conversion, - optimize, diff --git a/pkgs/applications/misc/kitty/png2icns.patch b/pkgs/applications/misc/kitty/png2icns.patch deleted file mode 100644 index 68566e2a899..00000000000 --- a/pkgs/applications/misc/kitty/png2icns.patch +++ /dev/null @@ -1,21 +0,0 @@ -diff -aru a/setup.py b/setup.py ---- a/setup.py 2019-07-29 11:09:32.000000000 -0400 -+++ b/setup.py 2019-07-29 11:11:37.000000000 -0400 -@@ -784,9 +784,15 @@ - def create_macos_app_icon(where='Resources'): - logo_dir = os.path.abspath(os.path.join('logo', appname + '.iconset')) - subprocess.check_call([ -- 'iconutil', '-c', 'icns', logo_dir, '-o', -+ 'png2icns', - os.path.join(where, os.path.basename(logo_dir).partition('.')[0] + '.icns') -- ]) -+ ] + [os.path.join(logo_dir, logo) for logo in [ -+ 'icon_128x128.png', -+ 'icon_16x16.png', -+ 'icon_256x256.png', -+ 'icon_32x32.png', -+ 'icon_512x512.png', -+ ]]) - - - def create_minimal_macos_bundle(args, where): diff --git a/pkgs/applications/misc/kiwix/default.nix b/pkgs/applications/misc/kiwix/default.nix index 898186b714b..ff6b1e9de2d 100644 --- a/pkgs/applications/misc/kiwix/default.nix +++ b/pkgs/applications/misc/kiwix/default.nix @@ -9,19 +9,19 @@ with stdenv.lib; let xulrunner64_tar = fetchurl { - url = http://download.kiwix.org/dev/xulrunner-29.0.en-US.linux-x86_64.tar.bz2; + url = "http://download.kiwix.org/dev/xulrunner-29.0.en-US.linux-x86_64.tar.bz2"; sha256 = "0i3m30gm5z7qmas14id6ypvbmnb2k7jhz8aby2wz5vvv49zqmx3s"; }; xulrunnersdk64_tar = fetchurl { - url = http://download.kiwix.org/dev/xulrunner-29.0.en-US.linux-x86_64.sdk.tar.bz2; + url = "http://download.kiwix.org/dev/xulrunner-29.0.en-US.linux-x86_64.sdk.tar.bz2"; sha256 = "0z90v7c4mq15g5klmsj8vs2r10fbygj3qzynx4952hkv8ihw8n3a"; }; xulrunner32_tar = fetchurl { - url = http://download.kiwix.org/dev/xulrunner-29.0.en-US.linux-i686.tar.bz2; + url = "http://download.kiwix.org/dev/xulrunner-29.0.en-US.linux-i686.tar.bz2"; sha256 = "0yln6pxz8f6b9wm9124sx049z8mgi17lgd63rcv2hnix825y8gjb"; }; xulrunnersdk32_tar = fetchurl { - url = http://download.kiwix.org/dev/xulrunner-29.0.en-US.linux-i686.sdk.tar.bz2; + url = "http://download.kiwix.org/dev/xulrunner-29.0.en-US.linux-i686.sdk.tar.bz2"; sha256 = "1h9vcbvf8wgds6i2z20y7krpys0mqsqhv1ijyfljanp6vyll9fvi"; }; @@ -98,7 +98,7 @@ stdenv.mkDerivation rec { meta = { description = "An offline reader for Web content"; - homepage = https://kiwix.org; + homepage = "https://kiwix.org"; license = licenses.gpl3; platforms = platforms.linux; maintainers = with maintainers; [ robbinch ]; diff --git a/pkgs/applications/misc/kjv/default.nix b/pkgs/applications/misc/kjv/default.nix index 7868e74d010..307781931e9 100644 --- a/pkgs/applications/misc/kjv/default.nix +++ b/pkgs/applications/misc/kjv/default.nix @@ -2,7 +2,7 @@ let -patch-base = https://github.com/LukeSmithxyz/kjv/commit/; +patch-base = "https://github.com/LukeSmithxyz/kjv/commit/"; add-apocrypha = fetchpatch { url = patch-base + "b92b7622285d10464f9274f11e740bef90705bbc.patch"; diff --git a/pkgs/applications/misc/klayout/default.nix b/pkgs/applications/misc/klayout/default.nix new file mode 100644 index 00000000000..78b32f7fca1 --- /dev/null +++ b/pkgs/applications/misc/klayout/default.nix @@ -0,0 +1,63 @@ +{ lib, mkDerivation, fetchFromGitHub, fetchpatch +, python, ruby, qtbase, qtmultimedia, qttools, qtxmlpatterns +, which, perl, makeWrapper, fixDarwinDylibNames +}: + +mkDerivation rec { + pname = "klayout"; + version = "0.26.2"; + + src = fetchFromGitHub { + owner = "KLayout"; + repo = "klayout"; + rev = "v${version}"; + sha256 = "0svyqayvr45snqw0dhx6jpnjhg4qb097pz28s8k1crx5i31nnd94"; + }; + + postPatch = '' + substituteInPlace src/klayout.pri --replace "-Wno-reserved-user-defined-literal" "" + patchShebangs . + ''; + + nativeBuildInputs = [ + which + ]; + + buildInputs = [ + python + ruby + qtbase + qtmultimedia + qttools + qtxmlpatterns + ]; + + buildPhase = '' + runHook preBuild + mkdir -p $out/lib + ./build.sh -qt5 -prefix $out/lib -j$NIX_BUILD_CORES + runHook postBuild + ''; + + postBuild = '' + mkdir $out/bin + mv $out/lib/klayout $out/bin/ + ''; + + NIX_CFLAGS_COMPILE = [ "-Wno-parentheses" ]; + + dontInstall = true; # Installation already happens as part of "build.sh" + + # Fix: "gsiDeclQMessageLogger.cc:126:42: error: format not a string literal + # and no format arguments [-Werror=format-security]" + hardeningDisable = [ "format" ]; + + meta = with lib; { + description = "High performance layout viewer and editor with support for GDS and OASIS"; + license = with licenses; [ gpl3 ]; + homepage = "https://www.klayout.de/"; + platforms = platforms.linux; + maintainers = with maintainers; [ knedlsepp ]; + }; +} + diff --git a/pkgs/applications/misc/kondo/default.nix b/pkgs/applications/misc/kondo/default.nix new file mode 100644 index 00000000000..9df4c59717c --- /dev/null +++ b/pkgs/applications/misc/kondo/default.nix @@ -0,0 +1,22 @@ +{ stdenv, rustPlatform, fetchFromGitHub }: + +rustPlatform.buildRustPackage rec { + pname = "kondo"; + version = "0.3"; + + src = fetchFromGitHub { + owner = "tbillington"; + repo = pname; + rev = "v${version}"; + sha256 = "1rrg0xfm3vn5jh861r4ismrga673g7v6qnzl2v1haflgjhvdazwd"; + }; + + cargoSha256 = "1y7g8gw9hsm997d6i99c3dj2gb8y8cgws5001n85f9bpnlvvmf9y"; + + meta = with stdenv.lib; { + description = "Save disk space by cleaning unneeded files from software projects"; + homepage = "https://github.com/tbillington/kondo"; + license = licenses.mit; + maintainers = with maintainers; [ filalex77 ]; + }; +} diff --git a/pkgs/applications/misc/krename/default.nix b/pkgs/applications/misc/krename/default.nix index 8b6b7741c7d..816b352460b 100644 --- a/pkgs/applications/misc/krename/default.nix +++ b/pkgs/applications/misc/krename/default.nix @@ -25,7 +25,7 @@ in mkDerivation rec { meta = with lib; { description = "A powerful batch renamer for KDE"; - homepage = https://kde.org/applications/utilities/krename/; + homepage = "https://kde.org/applications/utilities/krename/"; license = licenses.gpl2; maintainers = with maintainers; [ peterhoeg ]; inherit (kconfig.meta) platforms; diff --git a/pkgs/applications/misc/krusader/default.nix b/pkgs/applications/misc/krusader/default.nix index 15979def34b..ab13c4989d9 100644 --- a/pkgs/applications/misc/krusader/default.nix +++ b/pkgs/applications/misc/krusader/default.nix @@ -19,8 +19,8 @@ in mkDerivation rec { meta = with lib; { description = "Norton/Total Commander clone for KDE"; license = licenses.gpl2; - homepage = http://www.krusader.org; - maintainers = with maintainers; [ sander ]; + homepage = "http://www.krusader.org"; + maintainers = with maintainers; [ sander turion ]; }; nativeBuildInputs = [ extra-cmake-modules kdoctools wrapGAppsHook ]; diff --git a/pkgs/applications/misc/latte-dock/default.nix b/pkgs/applications/misc/latte-dock/default.nix index f3daedfb96b..3fc5099acc2 100644 --- a/pkgs/applications/misc/latte-dock/default.nix +++ b/pkgs/applications/misc/latte-dock/default.nix @@ -3,11 +3,11 @@ mkDerivation rec { pname = "latte-dock"; - version = "0.9.5"; + version = "0.9.10"; src = fetchurl { url = "https://download.kde.org/stable/${pname}/${pname}-${version}.tar.xz"; - sha256 = "1g8a2lmg9agcs2kwbwh6sj9hkrbzad7bkxk39nx5536svnifbg1c"; + sha256 = "11s9fslr33h3ic14ifr43jphf68jpny8jmhvmrrwcz6w0p3falzw"; name = "${pname}-${version}.tar.xz"; }; @@ -20,7 +20,7 @@ mkDerivation rec { meta = with lib; { description = "Dock-style app launcher based on Plasma frameworks"; - homepage = https://github.com/psifidotos/Latte-Dock; + homepage = "https://github.com/psifidotos/Latte-Dock"; license = licenses.gpl2; platforms = platforms.unix; maintainers = [ maintainers.benley maintainers.ysndr ]; diff --git a/pkgs/applications/misc/lenmus/default.nix b/pkgs/applications/misc/lenmus/default.nix index 76abe7c9b4b..532166cf6fb 100644 --- a/pkgs/applications/misc/lenmus/default.nix +++ b/pkgs/applications/misc/lenmus/default.nix @@ -44,7 +44,7 @@ stdenv.mkDerivation rec { It allows you to focus on specific skills and exercises, on both theory and aural training. The different activities can be customized to meet your needs ''; - homepage = http://www.lenmus.org/; + homepage = "http://www.lenmus.org/"; license = licenses.gpl3Plus; maintainers = with maintainers; [ ramkromberg ]; platforms = with platforms; linux; diff --git a/pkgs/applications/misc/libosmocore/default.nix b/pkgs/applications/misc/libosmocore/default.nix index 846ce309842..2bd8bfa99bc 100644 --- a/pkgs/applications/misc/libosmocore/default.nix +++ b/pkgs/applications/misc/libosmocore/default.nix @@ -29,7 +29,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "libosmocore"; - homepage = https://github.com/osmocom/libosmocore; + homepage = "https://github.com/osmocom/libosmocore"; license = licenses.gpl2Plus; platforms = platforms.linux; maintainers = with maintainers; [ mog ]; diff --git a/pkgs/applications/misc/librecad/default.nix b/pkgs/applications/misc/librecad/default.nix index 142dafe38eb..0df0f86ef45 100644 --- a/pkgs/applications/misc/librecad/default.nix +++ b/pkgs/applications/misc/librecad/default.nix @@ -1,8 +1,23 @@ -{ mkDerivation, lib, fetchFromGitHub, installShellFiles, pkgconfig, runtimeShell -, qtbase, qtsvg, qttools, qmake -, boost, muparser }: +{ boost +, fetchFromGitHub +, installShellFiles +, mkDerivationWith +, muparser +, pkgconfig +, qmake +, qtbase +, qtsvg +, qttools +, runtimeShell +, gcc8Stdenv +}: -mkDerivation rec { +let + stdenv = gcc8Stdenv; +in + +# Doesn't build with gcc9 +mkDerivationWith stdenv.mkDerivation rec { pname = "librecad"; version = "2.2.0-rc1"; @@ -13,7 +28,9 @@ mkDerivation rec { sha256 = "0kwj838hqzbw95gl4x6scli9gj3gs72hdmrrkzwq5rjxam18k3f3"; }; - patches = [ ./fix_qt_5_11_build.patch ]; + patches = [ + ./fix_qt_5_11_build.patch + ]; postPatch = '' substituteInPlace scripts/postprocess-unix.sh \ @@ -48,17 +65,30 @@ mkDerivation rec { runHook postInstall ''; - buildInputs = [ boost muparser qtbase qtsvg ]; + buildInputs = [ + boost + muparser + qtbase + qtsvg + ]; - nativeBuildInputs = [ installShellFiles pkgconfig qmake qttools ]; + nativeBuildInputs = [ + installShellFiles + pkgconfig + qmake + qttools + ]; enableParallelBuilding = true; - meta = with lib; { + meta = with stdenv.lib; { description = "2D CAD package based on Qt"; homepage = "https://librecad.org"; license = licenses.gpl2; - maintainers = with maintainers; [ viric ]; + maintainers = with maintainers; [ + kiwi + viric + ]; platforms = platforms.linux; }; } diff --git a/pkgs/applications/misc/lighthouse/default.nix b/pkgs/applications/misc/lighthouse/default.nix index 7b5b40d65a3..9e651c59d4e 100644 --- a/pkgs/applications/misc/lighthouse/default.nix +++ b/pkgs/applications/misc/lighthouse/default.nix @@ -26,7 +26,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "A simple flexible popup dialog to run on X"; - homepage = https://github.com/emgram769/lighthouse; + homepage = "https://github.com/emgram769/lighthouse"; license = licenses.mit; maintainers = with maintainers; [ ramkromberg ]; platforms = platforms.linux; diff --git a/pkgs/applications/misc/lilyterm/default.nix b/pkgs/applications/misc/lilyterm/default.nix index e9dba4bcf46..28f9625b5b6 100644 --- a/pkgs/applications/misc/lilyterm/default.nix +++ b/pkgs/applications/misc/lilyterm/default.nix @@ -2,40 +2,41 @@ , pkgconfig , autoconf, automake, intltool, gettext , gtk, vte - , flavour ? "stable" }: assert lib.assertOneOf "flavour" flavour [ "stable" "git" ]; let + pname = "lilyterm"; stuff = if flavour == "stable" then rec { version = "0.9.9.4"; src = fetchurl { - url = "https://lilyterm.luna.com.tw/file/lilyterm-${version}.tar.gz"; + url = "https://lilyterm.luna.com.tw/file/${pname}-${version}.tar.gz"; sha256 = "0x2x59qsxq6d6xg5sd5lxbsbwsdvkwqlk17iw3h4amjg3m1jc9mp"; }; } else { - version = "2017-01-06"; + version = "2019-07-25"; src = fetchFromGitHub { owner = "Tetralet"; - repo = "lilyterm"; - rev = "20cce75d34fd24901c9828469d4881968183c389"; - sha256 = "0am0y65674rfqy69q4qz8izb8cq0isylr4w5ychi40jxyp68rkv2"; + repo = pname; + rev = "faf1254f46049edfb1fd6e9191e78b1b23b9c51d"; + sha256 = "054450gk237c62b677365bcwrijr63gd9xm8pv68br371wdzylz7"; }; }; in -stdenv.mkDerivation { - pname = "lilyterm"; +with stdenv.lib; +stdenv.mkDerivation rec { + inherit pname; inherit (stuff) src version; - nativeBuildInputs = [ pkgconfig ]; - buildInputs = [ autoconf automake intltool gettext gtk vte ]; + nativeBuildInputs = [ pkgconfig autoconf automake intltool gettext ]; + buildInputs = [ gtk vte ]; preConfigure = "sh autogen.sh"; @@ -49,7 +50,7 @@ stdenv.mkDerivation { longDescription = '' LilyTerm is a terminal emulator based off of libvte that aims to be fast and lightweight. ''; - homepage = https://lilyterm.luna.com.tw/; + homepage = "https://lilyterm.luna.com.tw/"; license = licenses.gpl3; maintainers = with maintainers; [ AndersonTorres Profpatsch ]; platforms = platforms.linux; diff --git a/pkgs/applications/misc/llpp/default.nix b/pkgs/applications/misc/llpp/default.nix index 25f9b10b1e8..e2ec64932ff 100644 --- a/pkgs/applications/misc/llpp/default.nix +++ b/pkgs/applications/misc/llpp/default.nix @@ -48,7 +48,7 @@ stdenv.mkDerivation rec { ''; meta = with stdenv.lib; { - homepage = https://repo.or.cz/w/llpp.git; + homepage = "https://repo.or.cz/w/llpp.git"; description = "A MuPDF based PDF pager written in OCaml"; platforms = platforms.linux; maintainers = with maintainers; [ pSub enzime ]; diff --git a/pkgs/applications/misc/loxodo/default.nix b/pkgs/applications/misc/loxodo/default.nix index f84ac6d600a..4b201c66fe5 100644 --- a/pkgs/applications/misc/loxodo/default.nix +++ b/pkgs/applications/misc/loxodo/default.nix @@ -30,7 +30,7 @@ py.buildPythonApplication { meta = with stdenv.lib; { description = "A Password Safe V3 compatible password vault"; - homepage = http://www.christoph-sommer.de/loxodo/; + homepage = "https://www.christoph-sommer.de/loxodo/"; license = licenses.gpl2Plus; platforms = platforms.linux; }; diff --git a/pkgs/applications/misc/lsd2dsl/default.nix b/pkgs/applications/misc/lsd2dsl/default.nix index 5dd5fa0f512..335279c7084 100644 --- a/pkgs/applications/misc/lsd2dsl/default.nix +++ b/pkgs/applications/misc/lsd2dsl/default.nix @@ -1,26 +1,29 @@ -{ mkDerivation, lib, fetchFromGitHub, cmake -, boost, libvorbis, libsndfile, minizip, gtest }: +{ stdenv, mkDerivation, lib, fetchFromGitHub, cmake +, boost, libvorbis, libsndfile, minizip, gtest, qtwebkit }: mkDerivation rec { pname = "lsd2dsl"; - version = "0.4.1"; + version = "0.5.1"; src = fetchFromGitHub { owner = "nongeneric"; repo = pname; rev = "v${version}"; - sha256 = "15xjp5xxvl0qc4zp553n7djrbvdp63sfjw406idgxqinfmkqkqdr"; + sha256 = "100qd9i0x6r0nkw1ic2p0xjr16jlhinxkn1x7i98s4xmw4wyb8n8"; }; nativeBuildInputs = [ cmake ]; - buildInputs = [ boost libvorbis libsndfile minizip gtest ]; + buildInputs = [ boost libvorbis libsndfile minizip gtest qtwebkit ]; - NIX_CFLAGS_COMPILE = "-Wno-error=unused-result"; + NIX_CFLAGS_COMPILE = "-Wno-error=unused-result -Wno-error=missing-braces"; installPhase = '' - install -Dm755 lsd2dsl $out/bin/lsd2dsl - install -m755 qtgui/lsd2dsl-qtgui $out/bin/lsd2dsl-qtgui + install -Dm755 console/lsd2dsl $out/bin/lsd2dsl + install -m755 gui/lsd2dsl-qtgui $out/bin/lsd2dsl-qtgui + '' + lib.optionalString stdenv.isDarwin '' + wrapQtApp $out/bin/lsd2dsl + wrapQtApp $out/bin/lsd2dsl-qtgui ''; meta = with lib; { @@ -31,6 +34,6 @@ mkDerivation rec { ''; license = licenses.mit; maintainers = with maintainers; [ sikmir ]; - platforms = with platforms; linux; + platforms = with platforms; linux ++ darwin; }; } diff --git a/pkgs/applications/misc/ltwheelconf/default.nix b/pkgs/applications/misc/ltwheelconf/default.nix index 61151cb1550..2ceb8e91def 100644 --- a/pkgs/applications/misc/ltwheelconf/default.nix +++ b/pkgs/applications/misc/ltwheelconf/default.nix @@ -20,7 +20,7 @@ stdenv.mkDerivation { ''; meta = with stdenv.lib; { - homepage = https://github.com/thk/LTWheelConf; + homepage = "https://github.com/thk/LTWheelConf"; description = "Logitech wheels configuration tool"; license = licenses.gpl3; maintainers = [ maintainers.ebzzry ]; diff --git a/pkgs/applications/misc/lutris/chrootenv.nix b/pkgs/applications/misc/lutris/chrootenv.nix index 58492259b09..6f8d690779b 100644 --- a/pkgs/applications/misc/lutris/chrootenv.nix +++ b/pkgs/applications/misc/lutris/chrootenv.nix @@ -69,7 +69,7 @@ in buildFHSUserEnv { flac # rpcs3 // TODO: "error while loading shared libraries: libz.so.1..." - llvm_4 + llvm # ScummVM nasm sndio @@ -97,13 +97,13 @@ in buildFHSUserEnv { libcap libtiff libva libgphoto2 libxslt libtxc_dxtn libsndfile giflib zlib glib alsaLib zziplib bash dbus keyutils zip cabextract freetype unzip coreutils readline gcc SDL SDL2 curl graphite2 gtk2 gtk3 udev ncurses wayland libglvnd - vulkan-loader xdg_utils sqlite + vulkan-loader xdg_utils sqlite gnutls libbsd # PCSX2 // TODO: "libgobject-2.0.so.0: wrong ELF class: ELFCLASS64" # WINE cups lcms2 mpg123 cairo unixODBC samba4 sane-backends openldap - ocl-icd utillinux + ocl-icd utillinux libkrb5 # Winetricks fribidi diff --git a/pkgs/applications/misc/lutris/default.nix b/pkgs/applications/misc/lutris/default.nix index c9ea146f063..297596b8e39 100644 --- a/pkgs/applications/misc/lutris/default.nix +++ b/pkgs/applications/misc/lutris/default.nix @@ -1,7 +1,7 @@ -{ buildPythonApplication, lib, fetchFromGitHub +{ buildPythonApplication, lib, fetchFromGitHub, fetchpatch , wrapGAppsHook, gobject-introspection, gnome-desktop, libnotify, libgnome-keyring, pango , gdk-pixbuf, atk, webkitgtk, gst_all_1 -, evdev, pyyaml, pygobject3, requests, pillow +, dbus-python, evdev, pyyaml, pygobject3, requests, pillow , xrandr, pciutils, psmisc, glxinfo, vulkan-tools, xboxdrv, pulseaudio, p7zip, xgamma , libstrangle, wine, fluidsynth, xorgserver }: @@ -31,13 +31,13 @@ let in buildPythonApplication rec { pname = "lutris-original"; - version = "0.5.3"; + version = "0.5.5"; src = fetchFromGitHub { owner = "lutris"; repo = "lutris"; rev = "v${version}"; - sha256 = "0n6xa3pnwvsvfipinrkbhxwjzfbw2cjpc9igv97nffcmpydmn5xv"; + sha256 = "1g093g0difnkjmnm91p20issdsxn9ri4c56zzddj5wfrbmhwdfag"; }; buildInputs = [ @@ -50,7 +50,7 @@ in buildPythonApplication rec { ]; propagatedBuildInputs = [ - evdev pyyaml pygobject3 requests pillow + evdev pyyaml pygobject3 requests pillow dbus-python ]; preCheck = "export HOME=$PWD"; @@ -63,4 +63,3 @@ in buildPythonApplication rec { platforms = platforms.linux; }; } - diff --git a/pkgs/applications/misc/lxterminal/default.nix b/pkgs/applications/misc/lxterminal/default.nix index 0802a32d92b..8c002bd14b0 100644 --- a/pkgs/applications/misc/lxterminal/default.nix +++ b/pkgs/applications/misc/lxterminal/default.nix @@ -42,7 +42,7 @@ stdenv.mkDerivation { desktop-independent VTE-based terminal emulator for LXDE without any unnecessary dependencies. ''; - homepage = https://wiki.lxde.org/en/LXTerminal; + homepage = "https://wiki.lxde.org/en/LXTerminal"; license = stdenv.lib.licenses.gpl2; maintainers = [ stdenv.lib.maintainers.velovix ]; platforms = stdenv.lib.platforms.linux; diff --git a/pkgs/applications/misc/lyx/default.nix b/pkgs/applications/misc/lyx/default.nix index f7964e4e5c6..b96e6b2a02d 100644 --- a/pkgs/applications/misc/lyx/default.nix +++ b/pkgs/applications/misc/lyx/default.nix @@ -1,14 +1,14 @@ -{ fetchurl, lib, mkDerivation, pkgconfig, python, file, bc, fetchpatch +{ fetchurl, lib, mkDerivation, pkgconfig, python, file, bc , qtbase, qtsvg, hunspell, makeWrapper #, mythes, boost }: mkDerivation rec { - version = "2.3.0"; + version = "2.3.4.3"; pname = "lyx"; src = fetchurl { url = "ftp://ftp.lyx.org/pub/lyx/stable/2.3.x/${pname}-${version}.tar.xz"; - sha256 = "0axri2h8xkna4mkfchfyyysbjl7s486vx80p5hzj9zgsvdm5a3ri"; + sha256 = "1rpp6wq0dc0bxwc0pipajv98vi7cpg391nq10d3c4pmpq38m08wx"; }; # LaTeX is used from $PATH, as people often want to have it with extra pkgs @@ -34,16 +34,9 @@ mkDerivation rec { " --prefix PATH : ${python}/bin" ]; - patches = [ - (fetchpatch { - url = "https://gitweb.gentoo.org/repo/gentoo.git/plain/app-office/lyx/files/lyx-2.3.0-qt-5.11.patch?id=07e82fd1fc07bf055c78b81eaa128f8f837da80d"; - sha256 = "1bnx0il2iv36lnrnyb370wyvww0rd8bphcy6z8d7zmvd3pwhyfql"; - }) - ]; - meta = with lib; { description = "WYSIWYM frontend for LaTeX, DocBook"; - homepage = http://www.lyx.org; + homepage = "http://www.lyx.org"; license = licenses.gpl2Plus; maintainers = [ maintainers.vcunat ]; platforms = platforms.linux; diff --git a/pkgs/applications/misc/madonctl/default.nix b/pkgs/applications/misc/madonctl/default.nix index 9a134343d29..a61c66d9374 100644 --- a/pkgs/applications/misc/madonctl/default.nix +++ b/pkgs/applications/misc/madonctl/default.nix @@ -23,7 +23,7 @@ buildGoPackage rec { meta = with stdenv.lib; { description = "CLI for the Mastodon social network API"; - homepage = https://github.com/McKael/madonctl; + homepage = "https://github.com/McKael/madonctl"; license = licenses.mit; platforms = platforms.unix; maintainers = with maintainers; [ ]; diff --git a/pkgs/applications/misc/makeself/default.nix b/pkgs/applications/misc/makeself/default.nix index f2585f78146..7dedf52e893 100644 --- a/pkgs/applications/misc/makeself/default.nix +++ b/pkgs/applications/misc/makeself/default.nix @@ -27,7 +27,7 @@ stdenv.mkDerivation rec { ''; meta = with stdenv.lib; { - homepage = http://megastep.org/makeself; + homepage = "http://megastep.org/makeself"; description = "Utility to create self-extracting packages"; license = licenses.gpl2; maintainers = [ maintainers.wmertens ]; diff --git a/pkgs/applications/misc/mako/default.nix b/pkgs/applications/misc/mako/default.nix index ffb938f30a5..e1b14acb46f 100644 --- a/pkgs/applications/misc/mako/default.nix +++ b/pkgs/applications/misc/mako/default.nix @@ -1,28 +1,29 @@ { stdenv, fetchFromGitHub, meson, ninja, pkgconfig, scdoc , systemd, pango, cairo, gdk-pixbuf -, wayland, wayland-protocols }: +, wayland, wayland-protocols +, wrapGAppsHook }: stdenv.mkDerivation rec { pname = "mako"; - version = "1.4"; + version = "1.4.1"; src = fetchFromGitHub { owner = "emersion"; repo = pname; rev = "v${version}"; - sha256 = "11ymiq6cr2ma0iva1mqybn3j6k73bsc6lv6pcbdq7hkhd4f9b7j9"; + sha256 = "0hwvibpnrximb628w9dsfjpi30b5jy7nfkm4d94z5vhp78p43vxh"; }; - nativeBuildInputs = [ meson ninja pkgconfig scdoc wayland-protocols ]; + nativeBuildInputs = [ meson ninja pkgconfig scdoc wayland-protocols wrapGAppsHook ]; buildInputs = [ systemd pango cairo gdk-pixbuf wayland ]; mesonFlags = [ "-Dzsh-completions=true" ]; meta = with stdenv.lib; { description = "A lightweight Wayland notification daemon"; - homepage = https://wayland.emersion.fr/mako/; + homepage = "https://wayland.emersion.fr/mako/"; license = licenses.mit; - maintainers = with maintainers; [ dywedir ]; + maintainers = with maintainers; [ dywedir synthetica ]; platforms = platforms.linux; }; } diff --git a/pkgs/applications/misc/mapproxy/default.nix b/pkgs/applications/misc/mapproxy/default.nix new file mode 100644 index 00000000000..0261dfbe899 --- /dev/null +++ b/pkgs/applications/misc/mapproxy/default.nix @@ -0,0 +1,64 @@ +{ lib +, pkgs +, python +}: +let + py = python.override { + packageOverrides = self: super: { + pyproj = super.pyproj.overridePythonAttrs (oldAttrs: rec { + version = "1.9.6"; + src = pkgs.fetchFromGitHub { + owner = "pyproj4"; + repo = "pyproj"; + rev = "v${version}rel"; + sha256 = "sha256:18v4h7jx4mcc0x2xy8y7dfjq9bzsyxs8hdb6v67cabvlz2njziqy"; + }; + nativeBuildInputs = with python.pkgs; [ cython ]; + patches = [ ]; + checkPhase = '' + runHook preCheck + pushd unittest # changing directory should ensure we're importing the global pyproj + ${python.interpreter} test.py && ${python.interpreter} -c "import doctest, pyproj, sys; sys.exit(doctest.testmod(pyproj)[0])" + popd + runHook postCheck + ''; + }); + }; + }; +in +with py.pkgs; +buildPythonApplication rec { + pname = "MapProxy"; + version = "1.12.0"; + src = fetchPypi { + inherit pname version; + sha256 = "622e3a7796ef861ba21e42231b49c18d00d75f03eaf3f01a2b7687be7568e2ec"; + }; + prePatch = '' + substituteInPlace mapproxy/util/ext/serving.py --replace "args = [sys.executable] + sys.argv" "args = sys.argv" + ''; + propagatedBuildInputs = [ + boto3 # needed for caches service + pillow + pyyaml + pyproj + shapely + gdal + lxml + setuptools + ]; + # Tests are disabled: + # 1) Dependency list is huge. + # https://github.com/mapproxy/mapproxy/blob/master/requirements-tests.txt + # + # 2) There are security issues with package Riak + # https://github.com/NixOS/nixpkgs/issues/33876 + # https://github.com/NixOS/nixpkgs/pull/56480 + doCheck = false; + meta = with lib; { + description = "MapProxy is an open source proxy for geospatial data"; + homepage = "https://mapproxy.org/"; + license = licenses.asl20; + maintainers = with maintainers; [ rakesh4g ]; + }; +} diff --git a/pkgs/applications/misc/marktext/default.nix b/pkgs/applications/misc/marktext/default.nix new file mode 100644 index 00000000000..5813fc15c0d --- /dev/null +++ b/pkgs/applications/misc/marktext/default.nix @@ -0,0 +1,35 @@ +{ appimageTools, fetchurl, lib }: + +let + pname = "marktext"; + version = "v0.16.0-rc.2"; +in +appimageTools.wrapType2 rec { + name = "${pname}-${version}-binary"; + + src = fetchurl { + url = "https://github.com/marktext/marktext/releases/download/${version}/marktext-x86_64.AppImage"; + sha256 = "1w1mxa1j94zr36xhvlhzq8d77pi359vdxqb2j8mnz2bib9khxk9k"; + }; + + profile = '' + export LC_ALL=C.UTF-8 + ''; + + multiPkgs = null; # no 32bit needed + extraPkgs = p: (appimageTools.defaultFhsEnvArgs.multiPkgs p) ++ [ + p.libsecret + p.xlibs.libxkbfile + ]; + + # Strip version from binary name. + extraInstallCommands = "mv $out/bin/${name} $out/bin/${pname}"; + + meta = with lib; { + description = "A simple and elegant markdown editor, available for Linux, macOS and Windows."; + homepage = "https://marktext.app"; + license = licenses.mit; + maintainers = with maintainers; [ nh2 ]; + platforms = [ "x86_64-linux" ]; + }; +} diff --git a/pkgs/applications/misc/mbutil/default.nix b/pkgs/applications/misc/mbutil/default.nix new file mode 100644 index 00000000000..b108d1a5647 --- /dev/null +++ b/pkgs/applications/misc/mbutil/default.nix @@ -0,0 +1,24 @@ +{ lib, buildPythonApplication, fetchFromGitHub, nose }: + +buildPythonApplication rec { + pname = "mbutil"; + version = "0.3.0"; + + src = fetchFromGitHub { + owner = "mapbox"; + repo = pname; + rev = "v${version}"; + sha256 = "06d62r89h026asaa4ryzb23m86j0cmbvy54kf4zl5f35sgiha45z"; + }; + + checkInputs = [ nose ]; + checkPhase = "nosetests"; + + meta = with lib; { + description = "An importer and exporter for MBTiles"; + homepage = "https://github.com/mapbox/mbutil"; + license = licenses.bsd3; + platforms = platforms.unix; + maintainers = with maintainers; [ sikmir ]; + }; +} diff --git a/pkgs/applications/misc/mdp/default.nix b/pkgs/applications/misc/mdp/default.nix index 03f30d64fb2..b96c4d00214 100644 --- a/pkgs/applications/misc/mdp/default.nix +++ b/pkgs/applications/misc/mdp/default.nix @@ -16,7 +16,7 @@ stdenv.mkDerivation rec { buildInputs = [ ncurses ]; meta = with stdenv.lib; { - homepage = https://github.com/visit1985/mdp; + homepage = "https://github.com/visit1985/mdp"; description = "A command-line based markdown presentation tool"; maintainers = with maintainers; [ matthiasbeyer vrthra ]; license = licenses.gpl3; diff --git a/pkgs/applications/misc/mediainfo-gui/default.nix b/pkgs/applications/misc/mediainfo-gui/default.nix index b84bc08ddb3..bd018a690d4 100644 --- a/pkgs/applications/misc/mediainfo-gui/default.nix +++ b/pkgs/applications/misc/mediainfo-gui/default.nix @@ -23,7 +23,7 @@ stdenv.mkDerivation rec { MediaInfo is a convenient unified display of the most relevant technical and tag data for video and audio files. ''; - homepage = https://mediaarea.net/; + homepage = "https://mediaarea.net/"; license = licenses.bsd2; platforms = platforms.linux; maintainers = [ maintainers.devhell ]; diff --git a/pkgs/applications/misc/mediainfo/default.nix b/pkgs/applications/misc/mediainfo/default.nix index f084d17e389..1ed1ef4afb5 100644 --- a/pkgs/applications/misc/mediainfo/default.nix +++ b/pkgs/applications/misc/mediainfo/default.nix @@ -1,11 +1,11 @@ { stdenv, fetchurl, autoreconfHook, pkgconfig, libzen, libmediainfo, zlib }: stdenv.mkDerivation rec { - version = "19.09"; + version = "20.03"; pname = "mediainfo"; src = fetchurl { url = "https://mediaarea.net/download/source/mediainfo/${version}/mediainfo_${version}.tar.xz"; - sha256 = "1a2ssklg12sjsw09y8my9kf35mizi3zj7w002nspcmw28apb1x82"; + sha256 = "1f1shnycf0f1fwka9k9s250l228xjkg0k4k73h8bpld8msighgnw"; }; nativeBuildInputs = [ autoreconfHook pkgconfig ]; @@ -23,7 +23,7 @@ stdenv.mkDerivation rec { MediaInfo is a convenient unified display of the most relevant technical and tag data for video and audio files. ''; - homepage = https://mediaarea.net/; + homepage = "https://mediaarea.net/"; license = licenses.bsd2; platforms = platforms.unix; maintainers = [ maintainers.devhell ]; diff --git a/pkgs/applications/misc/megacmd/default.nix b/pkgs/applications/misc/megacmd/default.nix new file mode 100644 index 00000000000..07d194dbff4 --- /dev/null +++ b/pkgs/applications/misc/megacmd/default.nix @@ -0,0 +1,88 @@ +{ stdenv +, autoconf +, automake +, c-ares +, cryptopp +, curl +, fetchFromGitHub +, ffmpeg +, freeimage +, gcc-unwrapped +, libmediainfo +, libraw +, libsodium +, libtool +, libuv +, libzen +, pcre-cpp +, pkgconfig +, readline +, sqlite +}: + +stdenv.mkDerivation rec { + pname = "megacmd"; + version = "1.2.0"; + + src = fetchFromGitHub { + owner = "meganz"; + repo = "MEGAcmd"; + rev = "${version}_Linux"; + sha256 = "0czyhsms0a0237d6h9b21n9p4nm4zkjanhhbvw26k6266g6c1nyr"; + fetchSubmodules = true; + }; + + nativeBuildInputs = [ + autoconf + automake + libtool + pkgconfig + ]; + + buildInputs = [ + c-ares + cryptopp + curl + ffmpeg + freeimage + gcc-unwrapped + libmediainfo + libraw + libsodium + libtool + libuv + libzen + pcre-cpp + readline + sqlite + ]; + + preConfigure = '' + ./autogen.sh + ''; + + configureFlags = [ + "--disable-curl-checks" + "--disable-examples" + "--with-cares" + "--with-cryptopp" + "--with-curl" + "--with-ffmpeg" + "--with-freeimage" + "--with-libmediainfo" + "--with-libuv" + "--with-libzen" + "--with-pcre" + "--with-readline" + "--with-sodium" + "--with-termcap" + ]; + + meta = with stdenv.lib; { + description = "MEGA Command Line Interactive and Scriptable Application"; + homepage = "https://mega.nz/"; + license = licenses.unfree; + platforms = [ "i686-linux" "x86_64-linux" ]; + maintainers = [ maintainers.wedens ]; + }; +} diff --git a/pkgs/applications/misc/megasync/default.nix b/pkgs/applications/misc/megasync/default.nix index 6e51e3cda76..3a26def26c9 100644 --- a/pkgs/applications/misc/megasync/default.nix +++ b/pkgs/applications/misc/megasync/default.nix @@ -1,50 +1,22 @@ -{ stdenv -, autoconf -, automake -, c-ares -, cryptopp -, curl -, doxygen -, fetchFromGitHub -, ffmpeg -, libmediainfo -, libraw -, libsodium -, libtool -, libuv -, libzen -, lsb-release -, mkDerivation -, pkgconfig -, qtbase -, qttools -, sqlite -, swig -, unzip -, wget -}: +{ stdenv, autoconf, automake, c-ares, cryptopp, curl, doxygen, fetchFromGitHub +, fetchpatch, ffmpeg, libmediainfo, libraw, libsodium, libtool, libuv, libzen +, lsb-release, mkDerivation, pkgconfig, qtbase, qttools, sqlite, swig, unzip +, wget }: mkDerivation rec { pname = "megasync"; - version = "4.2.3.0"; + version = "4.3.0.8"; src = fetchFromGitHub { owner = "meganz"; repo = "MEGAsync"; rev = "v${version}_Linux"; - sha256 = "0l4yfrxjb62vc9dnlzy8rjqi68ga1bys5x5rfzs40daw13yf1adv"; + sha256 = "1rhxkc6j3039rcsi8cxy3n00g6w7acir82ymnksbpsnp4yxqv5r3"; fetchSubmodules = true; }; - nativeBuildInputs = [ - autoconf - automake - doxygen - lsb-release - pkgconfig - qttools - swig - ]; + nativeBuildInputs = + [ autoconf automake doxygen lsb-release pkgconfig qttools swig ]; buildInputs = [ c-ares cryptopp @@ -85,21 +57,21 @@ mkDerivation rec { ''; configureFlags = [ - "--disable-examples" - "--disable-java" - "--disable-php" - "--enable-chat" - "--with-cares" - "--with-cryptopp" - "--with-curl" - "--with-ffmpeg" - "--without-freeimage" # unreferenced even when found - "--without-readline" - "--without-termcap" - "--with-sodium" - "--with-sqlite" - "--with-zlib" - ]; + "--disable-examples" + "--disable-java" + "--disable-php" + "--enable-chat" + "--with-cares" + "--with-cryptopp" + "--with-curl" + "--with-ffmpeg" + "--without-freeimage" # unreferenced even when found + "--without-readline" + "--without-termcap" + "--with-sodium" + "--with-sqlite" + "--with-zlib" + ]; postConfigure = '' cd ../.. @@ -114,10 +86,11 @@ mkDerivation rec { ''; meta = with stdenv.lib; { - description = "Easy automated syncing between your computers and your MEGA Cloud Drive"; - homepage = https://mega.nz/; - license = licenses.unfree; - platforms = [ "i686-linux" "x86_64-linux" ]; + description = + "Easy automated syncing between your computers and your MEGA Cloud Drive"; + homepage = "https://mega.nz/"; + license = licenses.unfree; + platforms = [ "i686-linux" "x86_64-linux" ]; maintainers = [ maintainers.michojel ]; }; } diff --git a/pkgs/applications/misc/memo/default.nix b/pkgs/applications/misc/memo/default.nix index 3749f568aef..66fe0d7207c 100644 --- a/pkgs/applications/misc/memo/default.nix +++ b/pkgs/applications/misc/memo/default.nix @@ -43,8 +43,8 @@ stdenv.mkDerivation rec { A simple tool written in bash to memorize stuff. Memo organizes is structured through topics which are folders in ~/memo. ''; - homepage = http://palovandalo.com/memo/; - downloadPage = https://github.com/mrVanDalo/memo/releases; + homepage = "http://palovandalo.com/memo/"; + downloadPage = "https://github.com/mrVanDalo/memo/releases"; license = stdenv.lib.licenses.gpl3; maintainers = [ stdenv.lib.maintainers.mrVanDalo ]; platforms = stdenv.lib.platforms.all; diff --git a/pkgs/applications/misc/menumaker/default.nix b/pkgs/applications/misc/menumaker/default.nix index e06f2a88ade..22cf63e536c 100644 --- a/pkgs/applications/misc/menumaker/default.nix +++ b/pkgs/applications/misc/menumaker/default.nix @@ -13,7 +13,7 @@ pythonPackages.buildPythonApplication rec { meta = with stdenv.lib; { description = "Heuristics-driven menu generator for several window managers"; - homepage = http://menumaker.sourceforge.net; + homepage = "http://menumaker.sourceforge.net"; license = licenses.bsd2; platforms = platforms.unix; maintainers = [ maintainers.romildo ]; diff --git a/pkgs/applications/misc/merkaartor/default.nix b/pkgs/applications/misc/merkaartor/default.nix index e643c212225..79ee45b4c1c 100644 --- a/pkgs/applications/misc/merkaartor/default.nix +++ b/pkgs/applications/misc/merkaartor/default.nix @@ -18,7 +18,7 @@ stdenv.mkDerivation rec { enableParallelBuilding = true; - NIX_CFLAGS_COMPILE = [ "-DACCEPT_USE_OF_DEPRECATED_PROJ_API_H" ]; + NIX_CFLAGS_COMPILE = "-DACCEPT_USE_OF_DEPRECATED_PROJ_API_H"; postInstall = '' wrapProgram $out/bin/merkaartor \ @@ -27,7 +27,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "OpenStreetMap editor"; - homepage = http://merkaartor.be/; + homepage = "http://merkaartor.be/"; license = licenses.gpl2Plus; maintainers = with maintainers; [ ]; }; diff --git a/pkgs/applications/misc/metar/default.nix b/pkgs/applications/misc/metar/default.nix index ca4f91533ec..f5185c63987 100644 --- a/pkgs/applications/misc/metar/default.nix +++ b/pkgs/applications/misc/metar/default.nix @@ -12,7 +12,7 @@ stdenv.mkDerivation { buildInputs = [ curl ]; meta = with stdenv.lib; { - homepage = https://github.com/keesL/metar; + homepage = "https://github.com/keesL/metar"; license = licenses.gpl2; maintainers = [ maintainers.zalakain ]; description = "Downloads weather reports and optionally decodes them"; diff --git a/pkgs/applications/misc/microcom/default.nix b/pkgs/applications/misc/microcom/default.nix new file mode 100644 index 00000000000..8377505ec1c --- /dev/null +++ b/pkgs/applications/misc/microcom/default.nix @@ -0,0 +1,29 @@ +{ stdenv, + lib, + fetchFromGitHub, + readline, + autoreconfHook }: + +stdenv.mkDerivation rec { + pname = "microcom"; + version = "2019.01.0"; + + src = fetchFromGitHub { + owner = "pengutronix"; + repo = pname; + rev = "v${version}"; + sha256 = "056v28hvagnzns6p8i3bq8609k82d3w1ab2lab5dr4cdfwhs4pqj"; + }; + + nativeBuildInputs = [ autoreconfHook ]; + buildInputs = [ readline ]; + + meta = with lib; { + description = "A minimalistic terminal program for communicating + with devices over a serial connection"; + inherit (src.meta) homepage; + license = licenses.gpl2; + maintainers = with maintainers; [ emantor ]; + platforms = with platforms; linux; + }; +} diff --git a/pkgs/applications/misc/milu/default.nix b/pkgs/applications/misc/milu/default.nix index 2eee9ad40c1..84cc0e0bc8d 100644 --- a/pkgs/applications/misc/milu/default.nix +++ b/pkgs/applications/misc/milu/default.nix @@ -31,7 +31,7 @@ stdenv.mkDerivation { meta = { description = "Higher Order Mutation Testing Tool for C and C++ programs"; - homepage = https://github.com/yuejia/Milu; + homepage = "https://github.com/yuejia/Milu"; license = stdenv.lib.licenses.bsd2; platforms = stdenv.lib.platforms.linux; maintainers = [ stdenv.lib.maintainers.vrthra ]; diff --git a/pkgs/applications/misc/minder/default.nix b/pkgs/applications/misc/minder/default.nix index 5c31cdf6e72..fd1aa050fe7 100644 --- a/pkgs/applications/misc/minder/default.nix +++ b/pkgs/applications/misc/minder/default.nix @@ -2,22 +2,23 @@ , pkgconfig, meson, ninja, python3 , wrapGAppsHook, vala, shared-mime-info , cairo, pantheon, glib, gtk3, libxml2, libgee, libarchive +, discount, gtksourceview3 , hicolor-icon-theme # for setup-hook }: stdenv.mkDerivation rec { pname = "minder"; - version = "1.5.1"; + version = "1.7.2"; src = fetchFromGitHub { owner = "phase1geo"; repo = pname; rev = version; - sha256 = "1z3if8bbiigb3m5py641y0j8d9z0s6kbb325waxbqs240pcxipml"; + sha256 = "0pfp0dglj2ig2p1h000137dxw777mjvzzqj3gcnbxjxqz3m6fzc0"; }; nativeBuildInputs = [ pkgconfig meson ninja python3 wrapGAppsHook vala shared-mime-info ]; - buildInputs = [ cairo pantheon.granite glib gtk3 libxml2 libgee libarchive hicolor-icon-theme ]; + buildInputs = [ cairo pantheon.granite glib gtk3 libxml2 libgee libarchive hicolor-icon-theme discount gtksourceview3 ]; postPatch = '' chmod +x meson/post_install.py diff --git a/pkgs/applications/misc/minergate-cli/default.nix b/pkgs/applications/misc/minergate-cli/default.nix index eff93c8e99c..61b900c4012 100644 --- a/pkgs/applications/misc/minergate-cli/default.nix +++ b/pkgs/applications/misc/minergate-cli/default.nix @@ -28,7 +28,7 @@ stdenv.mkDerivation { meta = with stdenv.lib; { description = "Minergate CPU/GPU console client mining software"; - homepage = https://www.minergate.com/; + homepage = "https://www.minergate.com/"; license = licenses.unfree; maintainers = with maintainers; [ bfortz ]; platforms = [ "x86_64-linux" ]; diff --git a/pkgs/applications/misc/minergate/default.nix b/pkgs/applications/misc/minergate/default.nix index a8402d97593..6fbe39c4da2 100644 --- a/pkgs/applications/misc/minergate/default.nix +++ b/pkgs/applications/misc/minergate/default.nix @@ -28,7 +28,7 @@ stdenv.mkDerivation { meta = with stdenv.lib; { description = "Minergate CPU/GPU mining software"; - homepage = https://www.minergate.com/; + homepage = "https://www.minergate.com/"; license = licenses.unfree; maintainers = with maintainers; [ bfortz ]; platforms = [ "x86_64-linux" ]; diff --git a/pkgs/applications/misc/mkgmap/default.nix b/pkgs/applications/misc/mkgmap/default.nix index debcea78f55..471ec1d4a76 100644 --- a/pkgs/applications/misc/mkgmap/default.nix +++ b/pkgs/applications/misc/mkgmap/default.nix @@ -17,12 +17,12 @@ in stdenv.mkDerivation rec { pname = "mkgmap"; - version = "4289"; + version = "4432"; src = fetchsvn { url = "https://svn.mkgmap.org.uk/mkgmap/mkgmap/trunk"; rev = version; - sha256 = "1sm1pw71q7z0jrxm8bcgm6xjl2mcidyibcf0a3m8fv2andidxrb4"; + sha256 = "1z1ppf9v1b9clnx20v15xkmdrfw6q4h7i15drzxsdh2wl6bafzvx"; }; # This patch removes from the build process diff --git a/pkgs/applications/misc/mlterm/default.nix b/pkgs/applications/misc/mlterm/default.nix index 0c8ad9ae1b3..da6250fadf3 100644 --- a/pkgs/applications/misc/mlterm/default.nix +++ b/pkgs/applications/misc/mlterm/default.nix @@ -61,9 +61,7 @@ stdenv.mkDerivation rec { "--with-tools=mlclient,mlconfig,mlcc,mlterm-menu,mlimgloader,registobmp,mlfc" #mlterm-menu and mlconfig depend on enabling gnome3.at-spi2-core #and configuring ~/.mlterm/key correctly. - ] ++ stdenv.lib.optional (libssh2 == null) [ - "--disable-ssh2" - ]; + ] ++ stdenv.lib.optional (libssh2 == null) "--disable-ssh2"; postInstall = '' install -D contrib/icon/mlterm-icon.svg "$out/share/icons/hicolor/scalable/apps/mlterm.svg" @@ -87,7 +85,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Multi Lingual TERMinal emulator on X11"; - homepage = http://mlterm.sourceforge.net/; + homepage = "http://mlterm.sourceforge.net/"; license = licenses.bsd3; maintainers = with maintainers; [ vrthra ramkromberg ]; platforms = with platforms; linux; diff --git a/pkgs/applications/misc/moolticute/default.nix b/pkgs/applications/misc/moolticute/default.nix index e734e44a2e0..0a54bc98bb9 100644 --- a/pkgs/applications/misc/moolticute/default.nix +++ b/pkgs/applications/misc/moolticute/default.nix @@ -1,36 +1,44 @@ -{ stdenv, fetchurl -, libusb1, pkgconfig, qmake, qtbase, qttools, qtwebsockets +{ lib, mkDerivation, fetchFromGitHub +, libusb1 +, pkg-config +, qmake +, qtbase +, qttools +, qtwebsockets }: -stdenv.mkDerivation rec { +mkDerivation rec { pname = "moolticute"; - version = "0.30.8"; + version = "0.43.3"; - src = fetchurl { - url = "https://github.com/mooltipass/moolticute/archive/v${version}.tar.gz"; - sha256 = "1qi18r2v0mpw1y007vjgzhiia89fpgsbg2wirxgngl21yxdns1pf"; + src = fetchFromGitHub { + owner = "mooltipass"; + repo = pname; + rev = "v${version}"; + sha256 = "0kl7wksiqmy0hqbg6xwmzqfn3l17if2hiw7xc9x067x9rviyxrl3"; }; + outputs = [ "out" "udev" ]; + + nativeBuildInputs = [ pkg-config qmake qttools ]; + buildInputs = [ libusb1 qtbase qtwebsockets ]; + preConfigure = "mkdir -p build && cd build"; - nativeBuildInputs = [ pkgconfig qmake qttools ]; qmakeFlags = [ "../Moolticute.pro" ]; - outputs = [ "out" "udev" ]; preInstall = '' mkdir -p $udev/lib/udev/rules.d sed -n '/^ \+cat > "$tmpfile" <<- EOF$/,/^EOF$/p' ../data/moolticute.sh | sed '1d;$d' > $udev/lib/udev/rules.d/50-mooltipass.rules ''; - - buildInputs = [ libusb1 qtbase qtwebsockets ]; - meta = with stdenv.lib; { + meta = with lib; { description = "GUI app and daemon to work with Mooltipass device via USB"; longDescription = '' To install udev rules, add `services.udev.packages == [ moolticute.udev ]` into `nixos/configuration.nix`. ''; - homepage = https://github.com/mooltipass/moolticute; + homepage = "https://github.com/mooltipass/moolticute"; license = licenses.gpl3Plus; maintainers = [ maintainers.kirikaza ]; platforms = platforms.linux; diff --git a/pkgs/applications/misc/moonlight-embedded/default.nix b/pkgs/applications/misc/moonlight-embedded/default.nix index 08f510a2840..328e106694b 100644 --- a/pkgs/applications/misc/moonlight-embedded/default.nix +++ b/pkgs/applications/misc/moonlight-embedded/default.nix @@ -27,7 +27,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Open source implementation of NVIDIA's GameStream"; - homepage = https://github.com/irtimmer/moonlight-embedded; + homepage = "https://github.com/irtimmer/moonlight-embedded"; license = licenses.gpl3; maintainers = [ maintainers.globin ]; platforms = platforms.linux; diff --git a/pkgs/applications/misc/mop/default.nix b/pkgs/applications/misc/mop/default.nix index c0d41cda02d..81c23658965 100644 --- a/pkgs/applications/misc/mop/default.nix +++ b/pkgs/applications/misc/mop/default.nix @@ -24,7 +24,7 @@ buildGoPackage rec { meta = with stdenv.lib; { description = "Simple stock tracker implemented in go"; - homepage = https://github.com/mop-tracker/mop; + homepage = "https://github.com/mop-tracker/mop"; license = licenses.mit; platforms = platforms.all; }; diff --git a/pkgs/development/python-modules/mps-youtube/default.nix b/pkgs/applications/misc/mps-youtube/default.nix similarity index 67% rename from pkgs/development/python-modules/mps-youtube/default.nix rename to pkgs/applications/misc/mps-youtube/default.nix index 753a0d24d0a..b1118cfc597 100644 --- a/pkgs/development/python-modules/mps-youtube/default.nix +++ b/pkgs/applications/misc/mps-youtube/default.nix @@ -1,17 +1,16 @@ -{ lib, buildPythonPackage, fetchFromGitHub, isPy3k -, pafy -}: +{ lib, python3Packages, fetchFromGitHub }: -buildPythonPackage rec { +with python3Packages; + +buildPythonApplication rec { pname = "mps-youtube"; - version = "0.2.8"; - disabled = (!isPy3k); + version = "unstable-2020-01-28"; src = fetchFromGitHub { owner = "mps-youtube"; repo = "mps-youtube"; - rev = "v${version}"; - sha256 = "1w1jhw9rg3dx7vp97cwrk5fymipkcy2wrbl1jaa38ivcjhqg596y"; + rev = "b808697133ec2ad7654953232d1e841b20aa7cc3"; + sha256 = "0lqprlpc0v092xqkjc0cc395ag45lijwgd34dpg2jy6i0f2szywv"; }; propagatedBuildInputs = [ pafy ]; @@ -30,6 +29,6 @@ buildPythonPackage rec { description = "Terminal based YouTube player and downloader"; homepage = "https://github.com/mps-youtube/mps-youtube"; license = licenses.gpl3; - maintainers = with maintainers; [ odi ]; + maintainers = with maintainers; [ koral odi ]; }; } diff --git a/pkgs/applications/misc/mpvc/default.nix b/pkgs/applications/misc/mpvc/default.nix index 35de284c0ba..eacc4b5758c 100644 --- a/pkgs/applications/misc/mpvc/default.nix +++ b/pkgs/applications/misc/mpvc/default.nix @@ -21,7 +21,7 @@ stdenv.mkDerivation { meta = with stdenv.lib; { description = "A mpc-like control interface for mpv"; - homepage = https://github.com/wildefyr/mpvc; + homepage = "https://github.com/wildefyr/mpvc"; license = licenses.mit; maintainers = [ maintainers.neeasade ]; platforms = platforms.linux; diff --git a/pkgs/applications/misc/mqtt-bench/default.nix b/pkgs/applications/misc/mqtt-bench/default.nix index 0e8cc2ebcea..1f6112d7d7b 100644 --- a/pkgs/applications/misc/mqtt-bench/default.nix +++ b/pkgs/applications/misc/mqtt-bench/default.nix @@ -26,7 +26,7 @@ buildGoPackage rec { meta = with stdenv.lib; { description = "Mosquitto benchmark tool"; - homepage = https://github.com/takanorig/mqtt-bench; + homepage = "https://github.com/takanorig/mqtt-bench"; maintainers = with maintainers; [ disassembler ]; }; } diff --git a/pkgs/applications/misc/mrxvt/default.nix b/pkgs/applications/misc/mrxvt/default.nix index a6efb19b577..6717fc3c97f 100644 --- a/pkgs/applications/misc/mrxvt/default.nix +++ b/pkgs/applications/misc/mrxvt/default.nix @@ -23,7 +23,7 @@ stdenv.mkDerivation { ''; src = fetchurl { - url = mirror://sourceforge/materm/mrxvt-0.5.4.tar.gz; + url = "mirror://sourceforge/materm/mrxvt-0.5.4.tar.gz"; sha256 = "1mqhmnlz32lvld9rc6c1hyz7gjw4anwf39yhbsjkikcgj1das0zl"; }; @@ -33,7 +33,7 @@ stdenv.mkDerivation { Multitabbed lightweight terminal emulator based on rxvt. Supports transparency, backgroundimages, freetype fonts, ... "; - homepage = https://sourceforge.net/projects/materm; + homepage = "https://sourceforge.net/projects/materm"; license = "GPL"; platforms = stdenv.lib.platforms.linux; }; diff --git a/pkgs/applications/misc/mucommander/default.nix b/pkgs/applications/misc/mucommander/default.nix index 12a0720e447..e598e099d06 100644 --- a/pkgs/applications/misc/mucommander/default.nix +++ b/pkgs/applications/misc/mucommander/default.nix @@ -77,7 +77,7 @@ in stdenv.mkDerivation { ''; meta = with stdenv.lib; { - homepage = http://www.mucommander.com/; + homepage = "http://www.mucommander.com/"; description = "Cross-platform file manager"; license = licenses.gpl3; maintainers = with maintainers; [ volth ]; diff --git a/pkgs/applications/misc/multibootusb/default.nix b/pkgs/applications/misc/multibootusb/default.nix index ab8802a1b69..5225f88094f 100644 --- a/pkgs/applications/misc/multibootusb/default.nix +++ b/pkgs/applications/misc/multibootusb/default.nix @@ -76,7 +76,7 @@ python36Packages.buildPythonApplication rec { meta = with stdenv.lib; { description = "Multiboot USB creator for Linux live disks"; - homepage = http://multibootusb.org/; + homepage = "http://multibootusb.org/"; license = licenses.gpl2; maintainers = []; # Looking for a maintainer! }; diff --git a/pkgs/applications/misc/mupdf/default.nix b/pkgs/applications/misc/mupdf/default.nix index 32c117c0173..a3067bc4af8 100644 --- a/pkgs/applications/misc/mupdf/default.nix +++ b/pkgs/applications/misc/mupdf/default.nix @@ -80,8 +80,8 @@ in stdenv.mkDerivation rec { enableParallelBuilding = true; meta = with stdenv.lib; { - homepage = https://mupdf.com; - repositories.git = git://git.ghostscript.com/mupdf.git; + homepage = "https://mupdf.com"; + repositories.git = "git://git.ghostscript.com/mupdf.git"; description = "Lightweight PDF, XPS, and E-book viewer and toolkit written in portable C"; license = licenses.agpl3Plus; maintainers = with maintainers; [ vrthra fpletz ]; diff --git a/pkgs/applications/misc/mwic/default.nix b/pkgs/applications/misc/mwic/default.nix index 249d9ff1d40..3be02e7c41c 100644 --- a/pkgs/applications/misc/mwic/default.nix +++ b/pkgs/applications/misc/mwic/default.nix @@ -1,12 +1,12 @@ { stdenv, fetchurl, pythonPackages }: stdenv.mkDerivation rec { - version = "0.7.7"; + version = "0.7.8"; pname = "mwic"; src = fetchurl { url = "https://github.com/jwilk/mwic/releases/download/${version}/${pname}-${version}.tar.gz"; - sha256 = "0l4anwiiqclymx0awwn4hzaj8n26ycg8nz76wjphsyscn7z2awad"; + sha256 = "0nnhziz9v523hpciylnxfajmxabh2ig5iawzwrfpf7aww70v330x"; }; makeFlags=["PREFIX=\${out}"]; @@ -22,7 +22,7 @@ stdenv.mkDerivation rec { ''; meta = with stdenv.lib; { - homepage = http://jwilk.net/software/mwic; + homepage = "http://jwilk.net/software/mwic"; description = "spell-checker that groups possible misspellings and shows them in their contexts"; license = licenses.mit; maintainers = with maintainers; [ matthiasbeyer ]; diff --git a/pkgs/applications/misc/mysql-workbench/default.nix b/pkgs/applications/misc/mysql-workbench/default.nix index 443fe2f1d6c..03483a1a2b8 100644 --- a/pkgs/applications/misc/mysql-workbench/default.nix +++ b/pkgs/applications/misc/mysql-workbench/default.nix @@ -1,27 +1,60 @@ -{ stdenv, fetchurl, substituteAll, cmake, ninja, pkgconfig -, glibc, gtk3, gtkmm3, pcre, swig, antlr4_7, sudo -, mysql, libxml2, libmysqlconnectorcpp -, vsqlite, gdal, libiodbc, libpthreadstubs -, libXdmcp, libuuid, libzip, libsecret, libssh -, python2, jre -, boost, libsigcxx, libX11, openssl -, proj, cairo, libxkbcommon, epoxy, wrapGAppsHook -, at-spi2-core, dbus, bash, coreutils +{ stdenv +, fetchurl +, substituteAll +, cmake +, ninja +, pkgconfig +, glibc +, gtk3 +, gtkmm3 +, pcre +, swig +, antlr4_7 +, sudo +, mysql +, libxml2 +, libmysqlconnectorcpp +, vsqlite +, gdal +, libiodbc +, libpthreadstubs +, libXdmcp +, libuuid +, libzip +, libsecret +, libssh +, python2 +, jre +, boost +, libsigcxx +, libX11 +, openssl +, rapidjson +, proj +, cairo +, libxkbcommon +, epoxy +, wrapGAppsHook +, at-spi2-core +, dbus +, bash +, coreutils }: let inherit (python2.pkgs) paramiko pycairo pyodbc; in stdenv.mkDerivation rec { pname = "mysql-workbench"; - version = "8.0.15"; + version = "8.0.19"; src = fetchurl { url = "http://dev.mysql.com/get/Downloads/MySQLGUITools/mysql-workbench-community-${version}-src.tar.gz"; - sha256 = "0ca93azasya5xiw6j2map8drmxf445qqydpvrb512kjfqdiv67x6"; + sha256 = "unrszSK+tKcARSHxRSAAos+jDtYxdDcSnFENixaDJsw="; }; patches = [ ./fix-gdal-includes.patch + (substituteAll { src = ./hardcode-paths.patch; catchsegv = "${glibc.bin}/bin/catchsegv"; @@ -35,6 +68,13 @@ in stdenv.mkDerivation rec { rmdir = "${coreutils}/bin/rmdir"; sudo = "${sudo}/bin/sudo"; }) + + # Fix swig not being able to find headers + # https://github.com/NixOS/nixpkgs/pull/82362#issuecomment-597948461 + (substituteAll { + src = ./fix-swig-build.patch; + cairoDev = "${cairo.dev}"; + }) ]; # have it look for 4.7.2 instead of 4.7.1 @@ -44,33 +84,68 @@ in stdenv.mkDerivation rec { ''; nativeBuildInputs = [ - cmake ninja pkgconfig jre swig wrapGAppsHook + cmake + ninja + pkgconfig + jre + swig + wrapGAppsHook ]; buildInputs = [ - gtk3 gtkmm3 libX11 antlr4_7.runtime.cpp python2 mysql libxml2 - libmysqlconnectorcpp vsqlite gdal boost libssh openssl - libiodbc pcre cairo libuuid libzip libsecret - libsigcxx proj + gtk3 + gtkmm3 + libX11 + antlr4_7.runtime.cpp + python2 + mysql + libxml2 + libmysqlconnectorcpp + vsqlite + gdal + boost + libssh + openssl + rapidjson + libiodbc + pcre + cairo + libuuid + libzip + libsecret + libsigcxx + proj + # python dependencies: - paramiko pycairo pyodbc # sqlanydb + paramiko + pycairo + pyodbc + # TODO: package sqlanydb and add it here + # transitive dependencies: - libpthreadstubs libXdmcp libxkbcommon epoxy at-spi2-core dbus + libpthreadstubs + libXdmcp + libxkbcommon + epoxy + at-spi2-core + dbus ]; postPatch = '' patchShebangs tools/get_wb_version.sh ''; - NIX_CFLAGS_COMPILE = [ - # error: 'OGRErr OGRSpatialReference::importFromWkt(char**)' is deprecated - "-Wno-error=deprecated-declarations" - ]; + # error: 'OGRErr OGRSpatialReference::importFromWkt(char**)' is deprecated + NIX_CFLAGS_COMPILE = "-Wno-error=deprecated-declarations"; cmakeFlags = [ "-DMySQL_CONFIG_PATH=${mysql}/bin/mysql_config" "-DIODBC_CONFIG_PATH=${libiodbc}/bin/iodbc-config" "-DWITH_ANTLR_JAR=${antlr4_7.jarLocation}" + # mysql-workbench 8.0.19 depends on libmysqlconnectorcpp 1.1.8. + # Newer versions of connector still provide the legacy library when enabled + # but the headers are in a different location. + "-DMySQLCppConn_INCLUDE_DIR=${libmysqlconnectorcpp}/include/jdbc" ]; # There is already an executable and a wrapper in bindir @@ -106,7 +181,7 @@ in stdenv.mkDerivation rec { and execute SQL queries. ''; - homepage = http://wb.mysql.com/; + homepage = "http://wb.mysql.com/"; license = licenses.gpl2; maintainers = [ maintainers.kkallio ]; platforms = platforms.linux; diff --git a/pkgs/applications/misc/mysql-workbench/fix-swig-build.patch b/pkgs/applications/misc/mysql-workbench/fix-swig-build.patch new file mode 100644 index 00000000000..ace1e5add43 --- /dev/null +++ b/pkgs/applications/misc/mysql-workbench/fix-swig-build.patch @@ -0,0 +1,12 @@ +--- a/library/forms/swig/CMakeLists.txt ++++ b/library/forms/swig/CMakeLists.txt +@@ -57,7 +57,7 @@ + + set(CMAKE_SWIG_FLAGS -w312) + set_source_files_properties(cairo.i PROPERTIES CPLUSPLUS ON) +-set_property(SOURCE cairo.i PROPERTY SWIG_FLAGS -DCAIRO_HAS_PNG_FUNCTIONS=1 -fcompact -DSWIG_PYTHON_LEGACY_BOOL -I/usr/include) ++set_property(SOURCE cairo.i PROPERTY SWIG_FLAGS -DCAIRO_HAS_PNG_FUNCTIONS=1 -fcompact -DSWIG_PYTHON_LEGACY_BOOL -I@cairoDev@/include) + if(CMAKE_VERSION VERSION_LESS 3.8) + swig_add_module(cairo python cairo.i) + else() + diff --git a/pkgs/applications/misc/mystem/default.nix b/pkgs/applications/misc/mystem/default.nix index 6a6c95b6572..27caef9ea2e 100644 --- a/pkgs/applications/misc/mystem/default.nix +++ b/pkgs/applications/misc/mystem/default.nix @@ -18,7 +18,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Morphological analysis of Russian text"; - homepage = https://yandex.ru/dev/mystem/; + homepage = "https://yandex.ru/dev/mystem/"; license = licenses.unfreeRedistributable; maintainers = with maintainers; [ abbradar ]; platforms = [ "x86_64-linux" ]; diff --git a/pkgs/applications/misc/nanoblogger/default.nix b/pkgs/applications/misc/nanoblogger/default.nix index b4d97c368ea..cf7689367bd 100644 --- a/pkgs/applications/misc/nanoblogger/default.nix +++ b/pkgs/applications/misc/nanoblogger/default.nix @@ -23,7 +23,7 @@ stdenv.mkDerivation rec { meta = { description = "Small weblog engine written in Bash for the command line"; - homepage = http://nanoblogger.sourceforge.net/; + homepage = "http://nanoblogger.sourceforge.net/"; license = stdenv.lib.licenses.gpl2; platforms = stdenv.lib.platforms.unix; }; diff --git a/pkgs/applications/misc/navipowm/default.nix b/pkgs/applications/misc/navipowm/default.nix index 9a40e3bc105..80c455f41a0 100644 --- a/pkgs/applications/misc/navipowm/default.nix +++ b/pkgs/applications/misc/navipowm/default.nix @@ -3,7 +3,7 @@ stdenv.mkDerivation rec { name = "navipowm-0.2.4"; src = fetchurl { - url = mirror://sourceforge/navipowm/NaviPOWM-0.2.4.tar.gz; + url = "mirror://sourceforge/navipowm/NaviPOWM-0.2.4.tar.gz"; sha256 = "1kdih8kwpgcgfh6l6njkr9gq2j5hv39xvzmzgvhip553kn6bss7b"; }; @@ -22,7 +22,7 @@ stdenv.mkDerivation rec { nativeBuildInputs = [ qmake4Hook ]; meta = { - homepage = http://navipowm.sourceforge.net/; + homepage = "http://navipowm.sourceforge.net/"; description = "Car navigation system"; license = stdenv.lib.licenses.gpl2; maintainers = with stdenv.lib.maintainers; [ ]; diff --git a/pkgs/applications/misc/navit/default.nix b/pkgs/applications/misc/navit/default.nix index 29e768c257f..099bcbfb25d 100644 --- a/pkgs/applications/misc/navit/default.nix +++ b/pkgs/applications/misc/navit/default.nix @@ -35,8 +35,8 @@ stdenv.mkDerivation rec { patches = [ ./CMakeLists.txt.patch ]; - NIX_CFLAGS_COMPILE = optional sdlSupport "-I${SDL.dev}/include/SDL" - ++ optional speechdSupport "-I${speechd}/include/speech-dispatcher"; + NIX_CFLAGS_COMPILE = toString (optional sdlSupport "-I${SDL.dev}/include/SDL" + ++ optional speechdSupport "-I${speechd}/include/speech-dispatcher"); # we choose only cmdline and speech-dispatcher speech options. # espeak builtins is made for non-cmdline OS as winCE @@ -81,7 +81,7 @@ stdenv.mkDerivation rec { ''; meta = { - homepage = https://www.navit-project.org; + homepage = "https://www.navit-project.org"; description = "Car navigation system with routing engine using OSM maps"; license = licenses.gpl2; maintainers = [ maintainers.genesis ]; diff --git a/pkgs/applications/misc/neap/default.nix b/pkgs/applications/misc/neap/default.nix index 4104d35cf10..992a3c0248a 100644 --- a/pkgs/applications/misc/neap/default.nix +++ b/pkgs/applications/misc/neap/default.nix @@ -36,7 +36,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Systray workspace pager"; - homepage = https://github.com/vzxwco/neap; + homepage = "https://github.com/vzxwco/neap"; license = licenses.bsd2; platforms = platforms.unix; maintainers = [ maintainers.romildo ]; diff --git a/pkgs/applications/misc/netsurf/browser/default.nix b/pkgs/applications/misc/netsurf/browser/default.nix index c1ba5ba23b1..f2fdd01215d 100644 --- a/pkgs/applications/misc/netsurf/browser/default.nix +++ b/pkgs/applications/misc/netsurf/browser/default.nix @@ -81,7 +81,7 @@ stdenv.mkDerivation rec { ]; meta = with stdenv.lib; { - homepage = http://www.netsurf-browser.org/; + homepage = "http://www.netsurf-browser.org/"; description = "Free opensource web browser"; license = licenses.gpl2; maintainers = [ maintainers.vrthra ]; diff --git a/pkgs/applications/misc/netsurf/buildsystem/default.nix b/pkgs/applications/misc/netsurf/buildsystem/default.nix index 0560b1d25b3..9d690546102 100644 --- a/pkgs/applications/misc/netsurf/buildsystem/default.nix +++ b/pkgs/applications/misc/netsurf/buildsystem/default.nix @@ -15,7 +15,7 @@ stdenv.mkDerivation rec { ]; meta = with stdenv.lib; { - homepage = http://www.netsurf-browser.org/; + homepage = "http://www.netsurf-browser.org/"; description = "Build system for netsurf browser"; license = licenses.gpl2; maintainers = [ maintainers.vrthra ]; diff --git a/pkgs/applications/misc/netsurf/libcss/default.nix b/pkgs/applications/misc/netsurf/libcss/default.nix index 55538925abd..528b0d9b958 100644 --- a/pkgs/applications/misc/netsurf/libcss/default.nix +++ b/pkgs/applications/misc/netsurf/libcss/default.nix @@ -27,10 +27,10 @@ stdenv.mkDerivation rec { "NSSHARED=${buildsystem}/share/netsurf-buildsystem" ]; - NIX_CFLAGS_COMPILE=[ "-Wno-error=implicit-fallthrough" ]; + NIX_CFLAGS_COMPILE= "-Wno-error=implicit-fallthrough"; meta = with stdenv.lib; { - homepage = http://www.netsurf-browser.org/; + homepage = "http://www.netsurf-browser.org/"; description = "Cascading Style Sheets library for netsurf browser"; license = licenses.gpl2; maintainers = [ maintainers.vrthra ]; diff --git a/pkgs/applications/misc/netsurf/libdom/default.nix b/pkgs/applications/misc/netsurf/libdom/default.nix index de92219e7f9..8dde3e336cd 100644 --- a/pkgs/applications/misc/netsurf/libdom/default.nix +++ b/pkgs/applications/misc/netsurf/libdom/default.nix @@ -30,7 +30,7 @@ stdenv.mkDerivation rec { ]; meta = with stdenv.lib; { - homepage = http://www.netsurf-browser.org/; + homepage = "http://www.netsurf-browser.org/"; description = "Document Object Model library for netsurf browser"; license = licenses.gpl2; maintainers = [ maintainers.vrthra ]; diff --git a/pkgs/applications/misc/netsurf/libhubbub/default.nix b/pkgs/applications/misc/netsurf/libhubbub/default.nix index 03ee66fc598..7cfd0a935f3 100644 --- a/pkgs/applications/misc/netsurf/libhubbub/default.nix +++ b/pkgs/applications/misc/netsurf/libhubbub/default.nix @@ -26,7 +26,7 @@ stdenv.mkDerivation rec { ]; meta = with stdenv.lib; { - homepage = http://www.netsurf-browser.org/; + homepage = "http://www.netsurf-browser.org/"; description = "HTML5 parser library for netsurf browser"; license = licenses.gpl2; maintainers = [ maintainers.vrthra ]; diff --git a/pkgs/applications/misc/netsurf/libnsbmp/default.nix b/pkgs/applications/misc/netsurf/libnsbmp/default.nix index b0fb18c89b1..a553eb3e715 100644 --- a/pkgs/applications/misc/netsurf/libnsbmp/default.nix +++ b/pkgs/applications/misc/netsurf/libnsbmp/default.nix @@ -24,7 +24,7 @@ stdenv.mkDerivation rec { ]; meta = with stdenv.lib; { - homepage = http://www.netsurf-browser.org/; + homepage = "http://www.netsurf-browser.org/"; description = "BMP Decoder for netsurf browser"; license = licenses.gpl2; maintainers = [ maintainers.vrthra ]; diff --git a/pkgs/applications/misc/netsurf/libnsfb/default.nix b/pkgs/applications/misc/netsurf/libnsfb/default.nix index 29b0a7867db..4e56ce7f5a1 100644 --- a/pkgs/applications/misc/netsurf/libnsfb/default.nix +++ b/pkgs/applications/misc/netsurf/libnsfb/default.nix @@ -23,7 +23,7 @@ stdenv.mkDerivation rec { ]; meta = with stdenv.lib; { - homepage = http://www.netsurf-browser.org/; + homepage = "http://www.netsurf-browser.org/"; description = "CSS parser and selection library for netsurf browser"; license = licenses.gpl2; maintainers = [ maintainers.vrthra ]; diff --git a/pkgs/applications/misc/netsurf/libnsgif/default.nix b/pkgs/applications/misc/netsurf/libnsgif/default.nix index e826dee0d25..8bb67df70da 100644 --- a/pkgs/applications/misc/netsurf/libnsgif/default.nix +++ b/pkgs/applications/misc/netsurf/libnsgif/default.nix @@ -22,7 +22,7 @@ stdenv.mkDerivation rec { ]; meta = with stdenv.lib; { - homepage = http://www.netsurf-browser.org/; + homepage = "http://www.netsurf-browser.org/"; description = "GIF Decoder for netsurf browser"; license = licenses.gpl2; maintainers = [ maintainers.vrthra ]; diff --git a/pkgs/applications/misc/netsurf/libnslog/default.nix b/pkgs/applications/misc/netsurf/libnslog/default.nix index 497630c9aa6..43b4622ab03 100644 --- a/pkgs/applications/misc/netsurf/libnslog/default.nix +++ b/pkgs/applications/misc/netsurf/libnslog/default.nix @@ -24,7 +24,7 @@ stdenv.mkDerivation rec { ]; meta = with stdenv.lib; { - homepage = http://www.netsurf-browser.org/; + homepage = "http://www.netsurf-browser.org/"; description = "NetSurf Parametric Logging Library"; license = licenses.mit; maintainers = [ maintainers.samueldr ]; diff --git a/pkgs/applications/misc/netsurf/libnspsl/default.nix b/pkgs/applications/misc/netsurf/libnspsl/default.nix index f0abbdc049a..5ded38d974e 100644 --- a/pkgs/applications/misc/netsurf/libnspsl/default.nix +++ b/pkgs/applications/misc/netsurf/libnspsl/default.nix @@ -24,7 +24,7 @@ stdenv.mkDerivation rec { ]; meta = with stdenv.lib; { - homepage = http://www.netsurf-browser.org/; + homepage = "http://www.netsurf-browser.org/"; description = "NetSurf Public Suffix List - Handling library"; license = licenses.mit; maintainers = [ maintainers.samueldr ]; diff --git a/pkgs/applications/misc/netsurf/libnsutils/default.nix b/pkgs/applications/misc/netsurf/libnsutils/default.nix index 3eaa882cb73..6d3a3d1f104 100644 --- a/pkgs/applications/misc/netsurf/libnsutils/default.nix +++ b/pkgs/applications/misc/netsurf/libnsutils/default.nix @@ -22,7 +22,7 @@ stdenv.mkDerivation rec { ]; meta = with stdenv.lib; { - homepage = http://www.netsurf-browser.org/; + homepage = "http://www.netsurf-browser.org/"; description = "Generalised utility library for netsurf browser"; license = licenses.gpl2; maintainers = [ maintainers.vrthra ]; diff --git a/pkgs/applications/misc/netsurf/libparserutils/default.nix b/pkgs/applications/misc/netsurf/libparserutils/default.nix index ea9d7c9ea85..9fcd5cfebf6 100644 --- a/pkgs/applications/misc/netsurf/libparserutils/default.nix +++ b/pkgs/applications/misc/netsurf/libparserutils/default.nix @@ -21,7 +21,7 @@ stdenv.mkDerivation rec { ]; meta = with stdenv.lib; { - homepage = http://www.netsurf-browser.org/; + homepage = "http://www.netsurf-browser.org/"; description = "Parser building library for netsurf browser"; license = licenses.gpl2; maintainers = [ maintainers.vrthra ]; diff --git a/pkgs/applications/misc/netsurf/libsvgtiny/default.nix b/pkgs/applications/misc/netsurf/libsvgtiny/default.nix index 9a4f922c2b6..b6e1b5a1667 100644 --- a/pkgs/applications/misc/netsurf/libsvgtiny/default.nix +++ b/pkgs/applications/misc/netsurf/libsvgtiny/default.nix @@ -32,7 +32,7 @@ stdenv.mkDerivation rec { ]; meta = with stdenv.lib; { - homepage = http://www.netsurf-browser.org/; + homepage = "http://www.netsurf-browser.org/"; description = "NetSurf SVG decoder"; license = licenses.mit; maintainers = [ maintainers.samueldr ]; diff --git a/pkgs/applications/misc/netsurf/libutf8proc/default.nix b/pkgs/applications/misc/netsurf/libutf8proc/default.nix index 2144ccd3303..dcd56182e32 100644 --- a/pkgs/applications/misc/netsurf/libutf8proc/default.nix +++ b/pkgs/applications/misc/netsurf/libutf8proc/default.nix @@ -22,7 +22,7 @@ stdenv.mkDerivation rec { ]; meta = with stdenv.lib; { - homepage = http://www.netsurf-browser.org/; + homepage = "http://www.netsurf-browser.org/"; description = "UTF8 Processing library for netsurf browser"; license = licenses.gpl2; maintainers = [ maintainers.vrthra ]; diff --git a/pkgs/applications/misc/netsurf/libwapcaplet/default.nix b/pkgs/applications/misc/netsurf/libwapcaplet/default.nix index ad59b1be10e..f3c7bcbd1a0 100644 --- a/pkgs/applications/misc/netsurf/libwapcaplet/default.nix +++ b/pkgs/applications/misc/netsurf/libwapcaplet/default.nix @@ -23,7 +23,7 @@ stdenv.mkDerivation rec { NIX_CFLAGS_COMPILE = "-Wno-error=cast-function-type"; meta = with stdenv.lib; { - homepage = http://www.netsurf-browser.org/; + homepage = "http://www.netsurf-browser.org/"; description = "String internment library for netsurf browser"; license = licenses.gpl2; maintainers = [ maintainers.vrthra ]; diff --git a/pkgs/applications/misc/netsurf/nsgenbind/default.nix b/pkgs/applications/misc/netsurf/nsgenbind/default.nix index 88ac4f0c3eb..2dd4b830102 100644 --- a/pkgs/applications/misc/netsurf/nsgenbind/default.nix +++ b/pkgs/applications/misc/netsurf/nsgenbind/default.nix @@ -21,7 +21,7 @@ stdenv.mkDerivation rec { ]; meta = with stdenv.lib; { - homepage = http://www.netsurf-browser.org/; + homepage = "http://www.netsurf-browser.org/"; description = "Generator for JavaScript bindings for netsurf browser"; license = licenses.gpl2; maintainers = [ maintainers.vrthra ]; diff --git a/pkgs/applications/misc/nix-tour/default.nix b/pkgs/applications/misc/nix-tour/default.nix index 31afed3061a..05ef696f99b 100644 --- a/pkgs/applications/misc/nix-tour/default.nix +++ b/pkgs/applications/misc/nix-tour/default.nix @@ -27,7 +27,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "'the tour of nix' from nixcloud.io/tour as offline version"; - homepage = https://nixcloud.io/tour; + homepage = "https://nixcloud.io/tour"; license = licenses.gpl2; platforms = platforms.linux; maintainers = with maintainers; [ qknight ]; diff --git a/pkgs/applications/misc/nixnote2/default.nix b/pkgs/applications/misc/nixnote2/default.nix index dec8b4ba0a7..92bb4ca2207 100644 --- a/pkgs/applications/misc/nixnote2/default.nix +++ b/pkgs/applications/misc/nixnote2/default.nix @@ -37,7 +37,7 @@ mkDerivation rec { meta = with stdenv.lib; { description = "An unofficial client of Evernote"; - homepage = http://www.nixnote.org/; + homepage = "http://www.nixnote.org/"; license = licenses.gpl2Plus; maintainers = with maintainers; [ htr ]; platforms = platforms.linux; diff --git a/pkgs/applications/misc/nnn/default.nix b/pkgs/applications/misc/nnn/default.nix index e7c32c13095..7adc777c00d 100644 --- a/pkgs/applications/misc/nnn/default.nix +++ b/pkgs/applications/misc/nnn/default.nix @@ -4,17 +4,17 @@ with stdenv.lib; stdenv.mkDerivation rec { pname = "nnn"; - version = "2.8.1"; + version = "3.1"; src = fetchFromGitHub { owner = "jarun"; repo = pname; rev = "v${version}"; - sha256 = "0h7j0wcpwwd2fibggr1nwkqpvhv2i1qnk54c4x6hixx31yidy2l0"; + sha256 = "0wvn3jbxjcpdg9jzxkhx5dlc0zx2idky6mb75fpha8ww1jg7qf1g"; }; - configFile = optionalString (conf!=null) (builtins.toFile "nnn.h" conf); - preBuild = optionalString (conf!=null) "cp ${configFile} nnn.h"; + configFile = optionalString (conf != null) (builtins.toFile "nnn.h" conf); + preBuild = optionalString (conf != null) "cp ${configFile} src/nnn.h"; nativeBuildInputs = [ pkgconfig ]; buildInputs = [ readline ncurses ]; @@ -30,9 +30,9 @@ stdenv.mkDerivation rec { meta = { description = "Small ncurses-based file browser forked from noice"; - homepage = https://github.com/jarun/nnn; + homepage = "https://github.com/jarun/nnn"; license = licenses.bsd2; platforms = platforms.all; - maintainers = with maintainers; [ jfrankenau ]; + maintainers = with maintainers; [ jfrankenau filalex77 ]; }; } diff --git a/pkgs/applications/misc/noice/default.nix b/pkgs/applications/misc/noice/default.nix index 6cc5dc9066d..2be5a4ab83b 100644 --- a/pkgs/applications/misc/noice/default.nix +++ b/pkgs/applications/misc/noice/default.nix @@ -23,7 +23,7 @@ stdenv.mkDerivation rec { meta = { description = "Small ncurses-based file browser"; - homepage = https://git.2f30.org/noice/; + homepage = "https://git.2f30.org/noice/"; license = licenses.bsd2; platforms = platforms.all; maintainers = with maintainers; [ jfrankenau ]; diff --git a/pkgs/applications/misc/notable/default.nix b/pkgs/applications/misc/notable/default.nix index 085dff7ce04..9a00959de02 100644 --- a/pkgs/applications/misc/notable/default.nix +++ b/pkgs/applications/misc/notable/default.nix @@ -2,13 +2,13 @@ let pname = "notable"; - version = "1.7.3"; + version = "1.8.4"; in appimageTools.wrapType2 rec { name = "${pname}-${version}"; src = fetchurl { url = "https://github.com/notable/notable/releases/download/v${version}/Notable-${version}.AppImage"; - sha256 = "1a7xpdk23np398nrgivyp8z54idqm72dfwx67i2rmxa3dnmcxkvl"; + sha256 = "0rvz8zwsi62kiq89pv8n2wh9h5yb030kvdr1vf65xwqkhqcrzrby"; }; profile = '' @@ -22,8 +22,8 @@ appimageTools.wrapType2 rec { meta = with lib; { description = "The markdown-based note-taking app that doesn't suck"; - homepage = https://github.com/notable/notable; - license = licenses.agpl3; + homepage = "https://github.com/notable/notable"; + license = licenses.unfree; platforms = [ "x86_64-linux" ]; maintainers = with maintainers; [ dtzWill ]; }; diff --git a/pkgs/applications/misc/notejot/default.nix b/pkgs/applications/misc/notejot/default.nix index da7775769d4..3498ef27867 100644 --- a/pkgs/applications/misc/notejot/default.nix +++ b/pkgs/applications/misc/notejot/default.nix @@ -3,13 +3,13 @@ stdenv.mkDerivation rec { pname = "notejot"; - version = "1.5.8"; + version = "1.6.3"; src = fetchFromGitHub { owner = "lainsce"; repo = pname; rev = version; - sha256 = "1v7f4xy5iwdjyf4416qpiwzifi68n466faia1hxzsq18fb1ri0af"; + sha256 = "170dzgd6cnf2k3hfifjysmdggpskx6v1pjmblqgbwaj2d3snf3h8"; }; nativeBuildInputs = [ @@ -34,9 +34,15 @@ stdenv.mkDerivation rec { patchShebangs meson/post_install.py ''; + passthru = { + updateScript = pantheon.updateScript { + attrPath = pname; + }; + }; + meta = with stdenv.lib; { description = "Stupidly-simple sticky notes applet"; - homepage = https://github.com/lainsce/notejot; + homepage = "https://github.com/lainsce/notejot"; license = licenses.gpl2Plus; maintainers = with maintainers; [ worldofpeace ]; platforms = platforms.linux; diff --git a/pkgs/applications/misc/notify-osd-customizable/default.nix b/pkgs/applications/misc/notify-osd-customizable/default.nix index 4568c3e8acc..36fa888e888 100644 --- a/pkgs/applications/misc/notify-osd-customizable/default.nix +++ b/pkgs/applications/misc/notify-osd-customizable/default.nix @@ -31,7 +31,7 @@ in stdenv.mkDerivation rec { libtool ]; - configureFlags = "--libexecdir=$(out)/bin"; + configureFlags = [ "--libexecdir=$(out)/bin" ]; preFixup = '' wrapProgram "$out/bin/notify-osd" \ @@ -40,7 +40,7 @@ in stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Daemon that displays passive pop-up notifications"; - homepage = https://launchpad.net/notify-osd; + homepage = "https://launchpad.net/notify-osd"; license = licenses.gpl3; maintainers = [ maintainers.imalison ]; platforms = platforms.linux; diff --git a/pkgs/applications/misc/notify-osd/default.nix b/pkgs/applications/misc/notify-osd/default.nix index 484ff62e9e6..e2bff003118 100644 --- a/pkgs/applications/misc/notify-osd/default.nix +++ b/pkgs/applications/misc/notify-osd/default.nix @@ -24,7 +24,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Daemon that displays passive pop-up notifications"; - homepage = https://launchpad.net/notify-osd; + homepage = "https://launchpad.net/notify-osd"; license = licenses.gpl3; maintainers = [ maintainers.bodil ]; platforms = platforms.linux; diff --git a/pkgs/applications/misc/nrsc5/default.nix b/pkgs/applications/misc/nrsc5/default.nix index 3ad83776842..ada603cba96 100644 --- a/pkgs/applications/misc/nrsc5/default.nix +++ b/pkgs/applications/misc/nrsc5/default.nix @@ -43,7 +43,7 @@ in stdenv.mkDerivation { cmakeFlags = [ "-DUSE_COLOR=ON" "-DUSE_FAAD2=ON" ]; meta = with stdenv.lib; { - homepage = https://github.com/theori-io/nrsc5; + homepage = "https://github.com/theori-io/nrsc5"; description = "HD-Radio decoder for RTL-SDR"; platforms = stdenv.lib.platforms.linux; license = licenses.gpl3; diff --git a/pkgs/applications/misc/nut/default.nix b/pkgs/applications/misc/nut/default.nix index 8b0cab31588..ce80ae14f23 100644 --- a/pkgs/applications/misc/nut/default.nix +++ b/pkgs/applications/misc/nut/default.nix @@ -48,8 +48,8 @@ stdenv.mkDerivation rec { interface for monitoring and administering UPS, PDU and SCD hardware. It uses a layered approach to connect all of the parts. ''; - homepage = https://networkupstools.org/; - repositories.git = https://github.com/networkupstools/nut.git; + homepage = "https://networkupstools.org/"; + repositories.git = "https://github.com/networkupstools/nut.git"; platforms = platforms.linux; maintainers = [ maintainers.pierron ]; license = with licenses; [ gpl1Plus gpl2Plus gpl3Plus ]; diff --git a/pkgs/applications/misc/obinskit/default.nix b/pkgs/applications/misc/obinskit/default.nix new file mode 100644 index 00000000000..aa11c069a7a --- /dev/null +++ b/pkgs/applications/misc/obinskit/default.nix @@ -0,0 +1,83 @@ +{ lib +, stdenv +, fetchurl +, xorg +, libxkbcommon +, systemd +, gcc-unwrapped +, electron_3 +, wrapGAppsHook +, makeDesktopItem +}: + +let + libPath = lib.makeLibraryPath [ + libxkbcommon + xorg.libXt + systemd.lib + stdenv.cc.cc.lib + ]; + + desktopItem = makeDesktopItem rec { + name = "Obinskit"; + exec = "obinskit"; + icon = "obinskit.png"; + desktopName = "Obinskit"; + genericName = "Obinskit keyboard configurator"; + categories = "Utility"; + }; + +in stdenv.mkDerivation rec { + pname = "obinskit"; + version = "1.1.4"; + + src = fetchurl { + url = "http://releases.obins.net/occ/linux/tar/ObinsKit_${version}_x64.tar.gz"; + sha256 = "0q422rmfn4k4ww1qlgrwdmxz4l10dxkd6piynbcw5cr4i5icnh2l"; + }; + + unpackPhase = "tar -xzf $src"; + + sourceRoot = "ObinsKit_${version}_x64"; + + nativeBuildInputs = [ wrapGAppsHook ]; + + dontConfigure = true; + dontBuild = true; + + installPhase = '' + mkdir -p $out/opt/obinskit + install icudtl.dat $out/opt/obinskit/ + install natives_blob.bin $out/opt/obinskit/ + install v8_context_snapshot.bin $out/opt/obinskit/ + install blink_image_resources_200_percent.pak $out/opt/obinskit/ + install content_resources_200_percent.pak $out/opt/obinskit/ + install content_shell.pak $out/opt/obinskit/ + install ui_resources_200_percent.pak $out/opt/obinskit/ + install views_resources_200_percent.pak $out/opt/obinskit/ + cp -r resources $out/opt/obinskit/ + cp -r locales $out/opt/obinskit/ + + mkdir -p $out/bin + ln -s ${electron_3}/bin/electron $out/bin/obinskit + + mkdir -p $out/share/{applications,pixmaps} + install resources/icons/tray-darwin@2x.png $out/share/pixmaps/obinskit.png + ln -s ${desktopItem}/share/applications/* $out/share/applications + ''; + + preFixup = '' + gappsWrapperArgs+=( + --add-flags $out/opt/obinskit/resources/app.asar + --prefix LD_LIBRARY_PATH : "${libPath}" + ) + ''; + + meta = with lib; { + description = "Graphical configurator for Anne Pro and Anne Pro II keyboards"; + homepage = "http://en.obins.net/obinskit/"; + license = licenses.unfree; + maintainers = [ maintainers.shou ]; + platforms = [ "x86_64-linux" ]; + }; +} diff --git a/pkgs/applications/misc/ocropus/default.nix b/pkgs/applications/misc/ocropus/default.nix index a604349afb0..ef371dc59ff 100644 --- a/pkgs/applications/misc/ocropus/default.nix +++ b/pkgs/applications/misc/ocropus/default.nix @@ -52,7 +52,7 @@ pythonPackages.buildPythonApplication rec { meta = with stdenv.lib; { description = "Open source document analysis and OCR system"; license = licenses.asl20; - homepage = https://github.com/tmbdev/ocropy/; + homepage = "https://github.com/tmbdev/ocropy/"; maintainers = with maintainers; [ domenkozar ]; platforms = platforms.linux; }; diff --git a/pkgs/applications/misc/octoprint/default.nix b/pkgs/applications/misc/octoprint/default.nix index 29a04627bef..b9951b66629 100644 --- a/pkgs/applications/misc/octoprint/default.nix +++ b/pkgs/applications/misc/octoprint/default.nix @@ -94,7 +94,7 @@ in py.pkgs.buildPythonApplication rec { ''; meta = with stdenv.lib; { - homepage = https://octoprint.org/; + homepage = "https://octoprint.org/"; description = "The snappy web interface for your 3D printer"; license = licenses.agpl3; maintainers = with maintainers; [ abbradar gebner ]; diff --git a/pkgs/applications/misc/octoprint/plugins.nix b/pkgs/applications/misc/octoprint/plugins.nix index ce800e8f18b..69eb313238b 100644 --- a/pkgs/applications/misc/octoprint/plugins.nix +++ b/pkgs/applications/misc/octoprint/plugins.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchFromGitHub, octoprint, python2Packages, marlin-calc }: +{ stdenv, fetchgit, fetchFromGitHub, octoprint, python2Packages, marlin-calc }: let buildPlugin = args: python2Packages.buildPythonPackage (args // { @@ -39,7 +39,7 @@ let meta = with stdenv.lib; { description = "OctoPrint plugin for the Micro 3D printer"; - homepage = https://github.com/donovan6000/M33-Fio; + homepage = "https://github.com/donovan6000/M33-Fio"; license = licenses.gpl3; maintainers = with maintainers; [ abbradar ]; }; @@ -60,7 +60,7 @@ let meta = with stdenv.lib; { description = "Publish printer status MQTT"; - homepage = https://github.com/OctoPrint/OctoPrint-MQTT; + homepage = "https://github.com/OctoPrint/OctoPrint-MQTT"; license = licenses.agpl3; maintainers = with maintainers; [ peterhoeg ]; }; @@ -79,7 +79,7 @@ let meta = with stdenv.lib; { description = "Show printers status in window title"; - homepage = https://github.com/MoonshineSG/OctoPrint-TitleStatus; + homepage = "https://github.com/MoonshineSG/OctoPrint-TitleStatus"; license = licenses.agpl3; maintainers = with maintainers; [ abbradar ]; }; @@ -98,7 +98,7 @@ let meta = with stdenv.lib; { description = "A simple stl viewer tab for OctoPrint"; - homepage = https://github.com/jneilliii/Octoprint-STLViewer; + homepage = "https://github.com/jneilliii/Octoprint-STLViewer"; license = licenses.agpl3; maintainers = with maintainers; [ abbradar ]; }; @@ -168,13 +168,13 @@ let printtimegenius = buildPlugin rec { pname = "PrintTimeGenius"; - version = "2.0.2"; + version = "2.2.1"; src = fetchFromGitHub { owner = "eyal0"; repo = "OctoPrint-${pname}"; rev = version; - sha256 = "1w4jm42434x87sbih45brkb9krik851vxkz153w3w5c8p74kgg6f"; + sha256 = "1dr93vbpxgxw3b1q4rwam8f4dmiwr5vnfr9796g6jx8xkpfzzy1h"; }; preConfigure = '' @@ -183,6 +183,10 @@ let sed 's@"{}.{}".format(binary_base_name, machine)@"${marlin-calc}/bin/marlin-calc"@' -i */analyzers/analyze_progress.py ''; + patches = [ + ./printtimegenius-logging.patch + ]; + meta = with stdenv.lib; { description = "Better print time estimation for OctoPrint"; homepage = "https://github.com/eyal0/OctoPrint-PrintTimeGenius"; @@ -191,6 +195,61 @@ let }; }; + abl-expert = buildPlugin rec { + pname = "ABL_Expert"; + version = "2019-12-21"; + + src = fetchgit { + url = "https://framagit.org/razer/Octoprint_ABL_Expert/"; + rev = "f11fbe05088ad618bfd9d064ac3881faec223f33"; + sha256 = "026r4prkyvwzxag5pv36455q7s3gaig37nmr2nbvhwq3d2lbi5s4"; + }; + + meta = with stdenv.lib; { + description = "Marlin auto bed leveling control, mesh correction, and z probe handling"; + homepage = "https://framagit.org/razer/Octoprint_ABL_Expert/"; + license = licenses.agpl3; + maintainers = with maintainers; [ WhittlesJr ]; + }; + }; + + gcodeeditor = buildPlugin rec { + pname = "GcodeEditor"; + version = "0.2.6"; + + src = fetchFromGitHub { + owner = "ieatacid"; + repo = "OctoPrint-${pname}"; + rev = version; + sha256 = "0c6p78r3vd6ys3kld308pyln09zjbr9yif1ljvcx6wlml2i5l1vh"; + }; + + meta = with stdenv.lib; { + description = "Edit gcode on OctoPrint"; + homepage = "https://github.com/Sebclem/OctoPrint-SimpleEmergencyStop"; + license = licenses.agpl3; + maintainers = with maintainers; [ WhittlesJr ]; + }; + }; + + simpleemergencystop = buildPlugin rec { + pname = "SimpleEmergencyStop"; + version = "0.2.5"; + + src = fetchFromGitHub { + owner = "Sebclem"; + repo = "OctoPrint-${pname}"; + rev = version; + sha256 = "10wadv09wv2h96igvq3byw9hz1si82n3c7v5y0ii3j7hm2d06y8p"; + }; + + meta = with stdenv.lib; { + description = "A simple plugin that add an emergency stop buton on NavBar of OctoPrint"; + homepage = "https://github.com/ieatacid/OctoPrint-GcodeEditor"; + license = licenses.agpl3; + maintainers = with maintainers; [ WhittlesJr ]; + }; + }; }; in self diff --git a/pkgs/applications/misc/octoprint/printtimegenius-logging.patch b/pkgs/applications/misc/octoprint/printtimegenius-logging.patch new file mode 100644 index 00000000000..66c2e83d62c --- /dev/null +++ b/pkgs/applications/misc/octoprint/printtimegenius-logging.patch @@ -0,0 +1,17 @@ +diff --git a/setup.py b/setup.py +index 6a6610e..cc45902 100644 +--- a/setup.py ++++ b/setup.py +@@ -35,9 +35,9 @@ plugin_license = "AGPLv3" + # Any additional requirements besides OctoPrint should be listed here + # For now, require the working release, which is only 1.3.9rc1. + plugin_requires = ["OctoPrint>=1.3.9rc1", "psutil", "sarge"] +-from sys import version_info +-if version_info[0] < 3: +- plugin_requires.append("logging") ++#from sys import version_info ++#if version_info[0] < 3: ++# plugin_requires.append("logging") + + ### -------------------------------------------------------------------------------------------------------------------- + ### More advanced options that you usually shouldn't have to touch follow after this point diff --git a/pkgs/applications/misc/omegat.nix b/pkgs/applications/misc/omegat.nix index 27d7ad8730b..47536cc9f6a 100644 --- a/pkgs/applications/misc/omegat.nix +++ b/pkgs/applications/misc/omegat.nix @@ -5,7 +5,7 @@ stdenv.mkDerivation { pname = "omegat"; src = fetchurl { # their zip has repeated files or something, so no fetchzip - url = mirror://sourceforge/project/omegat/OmegaT%20-%20Standard/OmegaT%204.3.0/OmegaT_4.3.0_Without_JRE.zip; + url = "mirror://sourceforge/project/omegat/OmegaT%20-%20Standard/OmegaT%204.3.0/OmegaT_4.3.0_Without_JRE.zip"; sha256 = "0axz7r30p34z5hgvdglznc82g7yvm3g56dv5190jixskx6ba58rs"; }; @@ -32,7 +32,7 @@ stdenv.mkDerivation { tool with fuzzy matching, translation memory, keyword search, glossaries, and translation leveraging into updated projects. ''; - homepage = http://www.omegat.org/; + homepage = "http://www.omegat.org/"; license = licenses.gpl3Plus; maintainers = with maintainers; [ t184256 ]; platforms = [ "i686-linux" "x86_64-linux" ]; diff --git a/pkgs/applications/misc/onboard/default.nix b/pkgs/applications/misc/onboard/default.nix index 1e578cde512..e427519d4d6 100644 --- a/pkgs/applications/misc/onboard/default.nix +++ b/pkgs/applications/misc/onboard/default.nix @@ -173,7 +173,7 @@ python3.pkgs.buildPythonApplication rec { ''; meta = with stdenv.lib; { - homepage = https://launchpad.net/onboard; + homepage = "https://launchpad.net/onboard"; description = "Onscreen keyboard useful for tablet PC users and for mobility impaired users"; maintainers = with maintainers; [ johnramsden ]; license = licenses.gpl3; diff --git a/pkgs/applications/misc/oneko/default.nix b/pkgs/applications/misc/oneko/default.nix index 3a0a548be0b..1c5858b5677 100644 --- a/pkgs/applications/misc/oneko/default.nix +++ b/pkgs/applications/misc/oneko/default.nix @@ -12,7 +12,7 @@ stdenv.mkDerivation rec { buildInputs = [ xlibsWrapper ]; makeFlags = [ "BINDIR=$(out)/bin" "MANPATH=$(out)/share/man" ]; - installTargets = "install install.man"; + installTargets = [ "install" "install.man" ]; meta = with stdenv.lib; { description = "Creates a cute cat chasing around your mouse cursor"; diff --git a/pkgs/applications/misc/openbox-menu/default.nix b/pkgs/applications/misc/openbox-menu/default.nix index 8f7f74f7123..e5857010324 100644 --- a/pkgs/applications/misc/openbox-menu/default.nix +++ b/pkgs/applications/misc/openbox-menu/default.nix @@ -17,7 +17,7 @@ stdenv.mkDerivation rec { installPhase = "make install prefix=$out"; meta = { - homepage = http://fabrice.thiroux.free.fr/openbox-menu_en.html; + homepage = "http://fabrice.thiroux.free.fr/openbox-menu_en.html"; description = "Dynamic XDG menu generator for Openbox"; longDescription = '' Openbox-menu is a pipemenu for Openbox window manager. It provides a diff --git a/pkgs/applications/misc/openbrf/default.nix b/pkgs/applications/misc/openbrf/default.nix index e943263600c..6140343fae7 100644 --- a/pkgs/applications/misc/openbrf/default.nix +++ b/pkgs/applications/misc/openbrf/default.nix @@ -39,7 +39,7 @@ stdenv.mkDerivation { meta = with stdenv.lib; { description = "A tool to edit resource files (BRF)"; - homepage = https://github.com/cfcohen/openbrf; + homepage = "https://github.com/cfcohen/openbrf"; maintainers = with stdenv.lib.maintainers; [ abbradar ]; license = licenses.free; platforms = platforms.linux; diff --git a/pkgs/applications/misc/opencpn/default.nix b/pkgs/applications/misc/opencpn/default.nix index 375552aaa33..f5a88cbaee1 100644 --- a/pkgs/applications/misc/opencpn/default.nix +++ b/pkgs/applications/misc/opencpn/default.nix @@ -28,6 +28,6 @@ stdenv.mkDerivation rec { maintainers = [ stdenv.lib.maintainers.kragniz ]; platforms = [ "x86_64-linux" ]; license = stdenv.lib.licenses.gpl2; - homepage = https://opencpn.org/; + homepage = "https://opencpn.org/"; }; } diff --git a/pkgs/applications/misc/openjump/default.nix b/pkgs/applications/misc/openjump/default.nix index c98defee57a..e537180686c 100644 --- a/pkgs/applications/misc/openjump/default.nix +++ b/pkgs/applications/misc/openjump/default.nix @@ -4,7 +4,7 @@ stdenv.mkDerivation { name = "openjump-1.3.1"; src = fetchurl { - url = mirror://sourceforge/jump-pilot/OpenJUMP/1.3.1/openjump-1.3.1.zip; + url = "mirror://sourceforge/jump-pilot/OpenJUMP/1.3.1/openjump-1.3.1.zip"; sha256 = "0y4z53yx0x7rp3c8rnj028ni3gr47r35apgcpqp3jl7r2di6zgqm"; }; @@ -31,7 +31,7 @@ stdenv.mkDerivation { meta = { description = "Open source Geographic Information System (GIS) written in the Java programming language"; - homepage = http://www.openjump.org/index.html; + homepage = "http://www.openjump.org/index.html"; license = stdenv.lib.licenses.gpl2; maintainers = [stdenv.lib.maintainers.marcweber]; platforms = stdenv.lib.platforms.linux; diff --git a/pkgs/applications/misc/opentx/default.nix b/pkgs/applications/misc/opentx/default.nix index 370f88d7b47..f20d5ccdc4a 100644 --- a/pkgs/applications/misc/opentx/default.nix +++ b/pkgs/applications/misc/opentx/default.nix @@ -1,50 +1,38 @@ -{ stdenv, fetchFromGitHub -, cmake, gcc-arm-embedded, binutils-arm-embedded, python -, qt5, SDL, gtest +{ stdenv, mkDerivation, fetchFromGitHub +, cmake, gcc-arm-embedded, python3Packages +, qtbase, qtmultimedia, qttranslations, SDL, gtest , dfu-util, avrdude }: -let - - version = "2.2.1"; - -in stdenv.mkDerivation { - +mkDerivation rec { pname = "opentx"; - inherit version; + version = "2.3.7"; src = fetchFromGitHub { owner = "opentx"; repo = "opentx"; - rev = version; - sha256 = "01lnnkrxach21aivnx1k1iqhih02nixh8c4nk6rpw408p13him9g"; + rev = "release/${version}"; + sha256 = "1wl3bk7s8h20dfys1hblzxc0br9zlwhcqlghgsbn81ki0xb6jmkf"; }; enableParallelBuilding = true; - nativeBuildInputs = [ - cmake - gcc-arm-embedded binutils-arm-embedded - ]; + nativeBuildInputs = [ cmake gcc-arm-embedded python3Packages.pillow ]; - buildInputs = with qt5; [ - python python.pkgs.pyqt4 - qtbase qtmultimedia qttranslations - SDL - ]; + buildInputs = [ qtbase qtmultimedia qttranslations SDL ]; postPatch = '' - sed -i companion/src/burnconfigdialog.cpp -e 's|/usr/.*bin/dfu-util|${dfu-util}/bin/dfu-util|' - sed -i companion/src/burnconfigdialog.cpp -e 's|/usr/.*bin/avrdude|${avrdude}/bin/avrdude|' + sed -i companion/src/burnconfigdialog.cpp \ + -e 's|/usr/.*bin/dfu-util|${dfu-util}/bin/dfu-util|' \ + -e 's|/usr/.*bin/avrdude|${avrdude}/bin/avrdude|' ''; cmakeFlags = [ "-DGTEST_ROOT=${gtest.src}/googletest" - "-DQT_TRANSLATIONS_DIR=${qt5.qttranslations}/translations" + "-DQT_TRANSLATIONS_DIR=${qttranslations}/translations" # XXX I would prefer to include these here, though we will need to file a bug upstream to get that changed. #"-DDFU_UTIL_PATH=${dfu-util}/bin/dfu-util" #"-DAVRDUDE_PATH=${avrdude}/bin/avrdude" - "-DNANO=NO" ]; meta = with stdenv.lib; { @@ -54,11 +42,10 @@ in stdenv.mkDerivation { firmware to the radio, backing up model settings, editing settings and running radio simulators. ''; - homepage = https://open-tx.org/; - license = stdenv.lib.licenses.gpl2; - platforms = [ "i686-linux" "x86_64-linux" ]; - maintainers = with maintainers; [ elitak ]; - broken = true; + homepage = "https://www.open-tx.org/"; + license = licenses.gpl2; + platforms = [ "i686-linux" "x86_64-linux" "aarch64-linux" ]; + maintainers = with maintainers; [ elitak lopsided98 ]; }; } diff --git a/pkgs/applications/misc/orca/default.nix b/pkgs/applications/misc/orca/default.nix index 1dc6a9cfee5..c9fc0ff30fc 100644 --- a/pkgs/applications/misc/orca/default.nix +++ b/pkgs/applications/misc/orca/default.nix @@ -35,13 +35,13 @@ buildPythonApplication rec { pname = "orca"; - version = "3.34.1"; + version = "3.36.1"; format = "other"; src = fetchurl { url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; - sha256 = "1q38n7hyshkiszmn361skxjynxr31lcms7a1iny6d0zlpmh1vnk4"; + sha256 = "07w3k0f791zd1pj9j6d27k7gk7c6hx112ngrdz18h573df5n9b61"; }; patches = [ @@ -110,7 +110,7 @@ buildPythonApplication rec { Needs `services.gnome3.at-spi2-core.enable = true;` in `configuration.nix`. ''; - maintainers = with maintainers; [ berce ] ++ gnome3.maintainers; + maintainers = with maintainers; [ berce ] ++ teams.gnome.members; license = licenses.lgpl21; platforms = platforms.linux; }; diff --git a/pkgs/applications/misc/orpie/default.nix b/pkgs/applications/misc/orpie/default.nix index e404da974c4..d869b093955 100644 --- a/pkgs/applications/misc/orpie/default.nix +++ b/pkgs/applications/misc/orpie/default.nix @@ -12,7 +12,7 @@ stdenv.mkDerivation rec { buildInputs = [ ncurses gsl ] ++ (with ocamlPackages; [ ocaml camlp4 ]); meta = { - homepage = https://github.com/pelzlpj/orpie; + homepage = "https://github.com/pelzlpj/orpie"; description = "A fullscreen RPN calculator for the console"; license = stdenv.lib.licenses.gpl2; platforms = stdenv.lib.platforms.all; diff --git a/pkgs/applications/misc/osm2xmap/default.nix b/pkgs/applications/misc/osm2xmap/default.nix index 8ffc8ec69fe..e5838dc1bbe 100644 --- a/pkgs/applications/misc/osm2xmap/default.nix +++ b/pkgs/applications/misc/osm2xmap/default.nix @@ -12,17 +12,14 @@ stdenv.mkDerivation rec { }; makeFlags = [ - "GIT_VERSION=$(version)" + "GIT_VERSION=${version}" "GIT_TIMESTAMP=" - "SHAREDIR=$(out)/share/" - "INSTALL_BINDIR=$(out)/bin" - "INSTALL_MANDIR=$(out)/share/man/man1" - "INSTALL_SHAREDIR=$(out)/share/" + "SHAREDIR=${placeholder ''out''}/share/osm2xmap" + "INSTALL_BINDIR=${placeholder ''out''}/bin" + "INSTALL_MANDIR=${placeholder ''out''}/share/man/man1" ]; - NIX_CFLAGS_COMPILE = [ "-DACCEPT_USE_OF_DEPRECATED_PROJ_API_H" ]; - - installFlags = [ "DESTDIR=$(out)" ]; + NIX_CFLAGS_COMPILE = "-DACCEPT_USE_OF_DEPRECATED_PROJ_API_H"; buildInputs = [ libroxml proj libyamlcpp boost ]; diff --git a/pkgs/applications/misc/osmctools/default.nix b/pkgs/applications/misc/osmctools/default.nix index 2dfbb7a2370..b0f1f48d9ae 100644 --- a/pkgs/applications/misc/osmctools/default.nix +++ b/pkgs/applications/misc/osmctools/default.nix @@ -1,46 +1,27 @@ -{ stdenv, fetchurl, zlib } : +{ stdenv, fetchFromGitLab, autoreconfHook, zlib }: -let - - convert_src = fetchurl { - url = http://m.m.i24.cc/osmconvert.c; - sha256 = "1mvmb171c1jqxrm80jc7qicwk4kgg7yq694n7ci65g6i284r984x"; - # version = 0.8.5 - }; - - filter_src = fetchurl { - url = http://m.m.i24.cc/osmfilter.c; - sha256 = "0vm3bls9jb2cb5b11dn82sxnc22qzkf4ghmnkivycigrwa74i6xl"; - # version = 1.4.0 - }; - -in - -stdenv.mkDerivation { +stdenv.mkDerivation rec { pname = "osmctools"; - version = "0.8.5plus1.4.0"; + version = "0.9"; + src = fetchFromGitLab { + owner = "osm-c-tools"; + repo = pname; + rev = version; + sha256 = "1m8d3r1q1v05pkr8k9czrmb4xjszw6hvgsf3kn9pf0v14gpn4r8f"; + }; + + nativeBuildInputs = [ autoreconfHook ]; buildInputs = [ zlib ]; - phases = [ "buildPhase" "installPhase" ]; - - buildPhase = '' - cc ${convert_src} -lz -O3 -o osmconvert - cc ${filter_src} -O3 -o osmfilter - ''; - - installPhase = '' - mkdir -p $out/bin - mv osmconvert $out/bin - mv osmfilter $out/bin - ''; - meta = with stdenv.lib; { description = "Command line tools for transforming Open Street Map files"; homepage = [ - https://wiki.openstreetmap.org/wiki/Osmconvert - https://wiki.openstreetmap.org/wiki/Osmfilter + "https://wiki.openstreetmap.org/wiki/osmconvert" + "https://wiki.openstreetmap.org/wiki/osmfilter" + "https://wiki.openstreetmap.org/wiki/osmupdate" ]; + maintainers = with maintainers; [ sikmir ]; platforms = platforms.unix; license = licenses.agpl3; }; diff --git a/pkgs/applications/misc/pastel/default.nix b/pkgs/applications/misc/pastel/default.nix index 8499ad0880c..90b42ba72b7 100644 --- a/pkgs/applications/misc/pastel/default.nix +++ b/pkgs/applications/misc/pastel/default.nix @@ -2,22 +2,23 @@ rustPlatform.buildRustPackage rec { pname = "pastel"; - version = "0.6.1"; + version = "0.7.1"; src = fetchFromGitHub { owner = "sharkdp"; repo = pname; rev = "v${version}"; - sha256 = "1c47bph1qraq3g0g5bp23jqlz7qdn4f8vh264y937jz17avvacx5"; + sha256 = "1xrg25w175m2iz7q9v7c05a0p0v5rr71vd4m3v6p0lqvij3sih4s"; }; - cargoSha256 = "1pfhwqj9kxm9p0mpdw7qyvivgby2bmah05kavf0a5zhzvq4v4sg0"; + cargoSha256 = "17rw9wp9mfv38h0azdjwl60bxdknb5q84ia0a2r1vi91gz6275cs"; buildInputs = stdenv.lib.optional stdenv.isDarwin Security; meta = with stdenv.lib; { description = "A command-line tool to generate, analyze, convert and manipulate colors"; - homepage = https://github.com/sharkdp/pastel; + homepage = "https://github.com/sharkdp/pastel"; + changelog = "https://github.com/sharkdp/pastel/releases/tag/v${version}"; license = with licenses; [ asl20 /* or */ mit ]; maintainers = with maintainers; [ davidtwco ]; platforms = platforms.all; diff --git a/pkgs/applications/misc/pcmanfm/default.nix b/pkgs/applications/misc/pcmanfm/default.nix index c6cd118aea8..202e7a2de95 100644 --- a/pkgs/applications/misc/pcmanfm/default.nix +++ b/pkgs/applications/misc/pcmanfm/default.nix @@ -19,7 +19,7 @@ stdenv.mkDerivation rec { configureFlags = optional withGtk3 "--with-gtk=3"; meta = with stdenv.lib; { - homepage = https://blog.lxde.org/category/pcmanfm/; + homepage = "https://blog.lxde.org/category/pcmanfm/"; license = licenses.gpl2Plus; description = "File manager with GTK interface"; maintainers = [ maintainers.ttuegel ]; diff --git a/pkgs/applications/misc/pcmanx-gtk2/default.nix b/pkgs/applications/misc/pcmanx-gtk2/default.nix index 17253173a5e..6c3241d629b 100644 --- a/pkgs/applications/misc/pcmanx-gtk2/default.nix +++ b/pkgs/applications/misc/pcmanx-gtk2/default.nix @@ -21,7 +21,7 @@ stdenv.mkDerivation rec { ''; meta = with stdenv.lib; { - homepage = https://pcman.ptt.cc; + homepage = "https://pcman.ptt.cc"; license = licenses.gpl2; description = "Telnet BBS browser with GTK interface"; maintainers = [ maintainers.sifmelcara ]; diff --git a/pkgs/applications/misc/pdf-quench/default.nix b/pkgs/applications/misc/pdf-quench/default.nix index 9756d9b42b0..d364074d445 100644 --- a/pkgs/applications/misc/pdf-quench/default.nix +++ b/pkgs/applications/misc/pdf-quench/default.nix @@ -28,7 +28,7 @@ pythonPackages.buildPythonApplication { ''; meta = with stdenv.lib; { - homepage = https://github.com/linuxerwang/pdf-quench; + homepage = "https://github.com/linuxerwang/pdf-quench"; description = "A visual tool for cropping pdf files"; platforms = platforms.linux; license = licenses.gpl2; diff --git a/pkgs/applications/misc/pdfarranger/default.nix b/pkgs/applications/misc/pdfarranger/default.nix index ed54ccbb0a1..58d889484d6 100644 --- a/pkgs/applications/misc/pdfarranger/default.nix +++ b/pkgs/applications/misc/pdfarranger/default.nix @@ -5,13 +5,13 @@ python3Packages.buildPythonApplication rec { pname = "pdfarranger"; - version = "1.3.1"; + version = "1.4.2"; src = fetchFromGitHub { owner = "jeromerobert"; repo = pname; rev = version; - sha256 = "1f8m8r81322i97wkqpmf7a4kiwnq244n6cnbldh03jc49vwq2kxx"; + sha256 = "11q14pxyp5z4y3gabjnis3ip3xss6n94zjl42akwf27dxgxlpcjk"; }; nativeBuildInputs = [ @@ -26,7 +26,8 @@ python3Packages.buildPythonApplication rec { propagatedBuildInputs = with python3Packages; [ pygobject3 - pypdf2 + pikepdf + setuptools ]; # incompatible with wrapGAppsHook diff --git a/pkgs/applications/misc/pdfdiff/default.nix b/pkgs/applications/misc/pdfdiff/default.nix index ee54904bfd6..93ca8c64479 100644 --- a/pkgs/applications/misc/pdfdiff/default.nix +++ b/pkgs/applications/misc/pdfdiff/default.nix @@ -33,7 +33,7 @@ py.buildPythonApplication rec { ''; meta = with stdenv.lib; { - homepage = http://www.cs.ox.ac.uk/people/cas.cremers/misc/pdfdiff.html; + homepage = "http://www.cs.ox.ac.uk/people/cas.cremers/misc/pdfdiff.html"; description = "Tool to view the difference between two PDF or PS files"; license = licenses.gpl2Plus; platforms = platforms.linux; diff --git a/pkgs/applications/misc/pdfpc/default.nix b/pkgs/applications/misc/pdfpc/default.nix index 1adab6b70a3..d8203b9e7b5 100644 --- a/pkgs/applications/misc/pdfpc/default.nix +++ b/pkgs/applications/misc/pdfpc/default.nix @@ -1,5 +1,5 @@ { stdenv, fetchFromGitHub, cmake, pkgconfig, vala, gtk3, libgee, fetchpatch -, poppler, libpthreadstubs, gstreamer, gst-plugins-base, librsvg, pcre, gobject-introspection, wrapGAppsHook }: +, poppler, libpthreadstubs, gstreamer, gst-plugins-base, gst-plugins-good, gst-libav, librsvg, pcre, gobject-introspection, wrapGAppsHook }: stdenv.mkDerivation rec { name = "${product}-${version}"; @@ -19,10 +19,17 @@ stdenv.mkDerivation rec { gobject-introspection wrapGAppsHook ]; - buildInputs = [ gstreamer gst-plugins-base gtk3 libgee poppler - libpthreadstubs librsvg pcre ]; - cmakeFlags = stdenv.lib.optionalString stdenv.isDarwin "-DMOVIES=OFF"; + buildInputs = [ + gtk3 libgee poppler + libpthreadstubs librsvg pcre + gstreamer + gst-plugins-base + (gst-plugins-good.override { gtkSupport = true; }) + gst-libav + ]; + + cmakeFlags = stdenv.lib.optional stdenv.isDarwin "-DMOVIES=OFF"; patches = [ # Fix build vala 0.46 @@ -34,7 +41,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "A presenter console with multi-monitor support for PDF files"; - homepage = https://pdfpc.github.io/; + homepage = "https://pdfpc.github.io/"; license = licenses.gpl2Plus; maintainers = with maintainers; [ pSub ]; platforms = platforms.unix; diff --git a/pkgs/applications/misc/pdfsam-basic/default.nix b/pkgs/applications/misc/pdfsam-basic/default.nix index 4b086c691cd..abf49f93684 100644 --- a/pkgs/applications/misc/pdfsam-basic/default.nix +++ b/pkgs/applications/misc/pdfsam-basic/default.nix @@ -2,11 +2,11 @@ stdenv.mkDerivation rec { pname = "pdfsam-basic"; - version = "4.0.5"; + version = "4.1.2"; src = fetchurl { url = "https://github.com/torakiki/pdfsam/releases/download/v${version}/pdfsam_${version}-1_amd64.deb"; - sha256 = "1znadsg65312h8yyxvj8k0c4pl3g9daif50vk50acwpblq49wm1v"; + sha256 = "1k1azxz92vkb4hylk4ki0szfn47ids0lwg01zfs54yc89j0c6142"; }; unpackPhase = '' diff --git a/pkgs/applications/misc/pell/default.nix b/pkgs/applications/misc/pell/default.nix index fc4e5229c9c..ae96ce6925e 100644 --- a/pkgs/applications/misc/pell/default.nix +++ b/pkgs/applications/misc/pell/default.nix @@ -29,7 +29,7 @@ stdenv.mkDerivation rec { ''; meta = with stdenv.lib; { - homepage = https://github.com/ebzzry/pell; + homepage = "https://github.com/ebzzry/pell"; description = "A simple host availability monitor"; license = licenses.mit; maintainers = [ maintainers.ebzzry ]; diff --git a/pkgs/applications/misc/perkeep/default.nix b/pkgs/applications/misc/perkeep/default.nix index ae81ef3c9f6..87a6bdf5e53 100644 --- a/pkgs/applications/misc/perkeep/default.nix +++ b/pkgs/applications/misc/perkeep/default.nix @@ -43,7 +43,7 @@ in buildGoPackage rec { meta = with lib; { description = "A way of storing, syncing, sharing, modelling and backing up content (née Camlistore)"; - homepage = https://perkeep.org; + homepage = "https://perkeep.org"; license = licenses.asl20; maintainers = with maintainers; [ cstrahan kalbasit ]; platforms = platforms.unix; diff --git a/pkgs/applications/misc/pgadmin/default.nix b/pkgs/applications/misc/pgadmin/default.nix index 86e10ae0943..5fc0703e011 100644 --- a/pkgs/applications/misc/pgadmin/default.nix +++ b/pkgs/applications/misc/pgadmin/default.nix @@ -33,7 +33,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "PostgreSQL administration GUI tool"; - homepage = https://www.pgadmin.org; + homepage = "https://www.pgadmin.org"; license = licenses.gpl2; maintainers = with maintainers; [ domenkozar wmertens ]; platforms = platforms.unix; diff --git a/pkgs/applications/misc/pgmanage/default.nix b/pkgs/applications/misc/pgmanage/default.nix index 241d5786468..68f29cb9b9a 100644 --- a/pkgs/applications/misc/pgmanage/default.nix +++ b/pkgs/applications/misc/pgmanage/default.nix @@ -29,7 +29,7 @@ stdenv.mkDerivation rec { PostgreSQL interface can hope to be. (Note: pgManage replaces Postage, which is no longer maintained.) ''; - homepage = https://github.com/pgManage/pgManage; + homepage = "https://github.com/pgManage/pgManage"; license = licenses.postgresql; maintainers = [ maintainers.basvandijk ]; }; diff --git a/pkgs/applications/misc/pgmodeler/default.nix b/pkgs/applications/misc/pgmodeler/default.nix index 5ce7d06d727..7532c6e9bc9 100644 --- a/pkgs/applications/misc/pgmodeler/default.nix +++ b/pkgs/applications/misc/pgmodeler/default.nix @@ -4,13 +4,13 @@ mkDerivation rec { pname = "pgmodeler"; - version = "0.9.1"; + version = "0.9.2"; src = fetchFromGitHub { owner = "pgmodeler"; repo = "pgmodeler"; rev = "v${version}"; - sha256 = "15isnbli9jj327r6sj7498nmhgf1mzdyhc1ih120ibw4900aajiv"; + sha256 = "1wkvg20krfwkziz7skgmwlinx07jm5nl3455payg5brv69zf60kl"; }; enableParallelBuilding = true; @@ -24,9 +24,9 @@ mkDerivation rec { meta = with stdenv.lib; { description = "A database modeling tool for PostgreSQL"; longDescription = ''pgModeler (PostgreSQL Database Modeler) is an open source database modeling tool designed for PostgreSQL.''; - homepage = https://pgmodeler.io/; + homepage = "https://pgmodeler.io/"; license = licenses.gpl3; maintainers = [ maintainers.esclear ]; platforms = platforms.linux; }; -} \ No newline at end of file +} diff --git a/pkgs/applications/misc/phwmon/default.nix b/pkgs/applications/misc/phwmon/default.nix index 6fb70f1c9a2..017383a79a2 100644 --- a/pkgs/applications/misc/phwmon/default.nix +++ b/pkgs/applications/misc/phwmon/default.nix @@ -31,7 +31,7 @@ stdenv.mkDerivation { ''; meta = { - homepage = https://gitlab.com/o9000/phwmon; + homepage = "https://gitlab.com/o9000/phwmon"; description = "Hardware monitor (CPU, memory, network and disk I/O) for the system tray"; license = stdenv.lib.licenses.gpl2; platforms = stdenv.lib.platforms.unix; diff --git a/pkgs/applications/misc/playonlinux/default.nix b/pkgs/applications/misc/playonlinux/default.nix index 48188574ad4..fe9838fe0d9 100644 --- a/pkgs/applications/misc/playonlinux/default.nix +++ b/pkgs/applications/misc/playonlinux/default.nix @@ -103,7 +103,7 @@ in stdenv.mkDerivation { meta = with stdenv.lib; { description = "GUI for managing Windows programs under linux"; - homepage = https://www.playonlinux.com/; + homepage = "https://www.playonlinux.com/"; license = licenses.gpl3; maintainers = [ maintainers.a1russell ]; platforms = [ "x86_64-linux" "i686-linux" ]; diff --git a/pkgs/applications/misc/polar-bookshelf/default.nix b/pkgs/applications/misc/polar-bookshelf/default.nix index 8413f8c8f10..fc86b2e885d 100644 --- a/pkgs/applications/misc/polar-bookshelf/default.nix +++ b/pkgs/applications/misc/polar-bookshelf/default.nix @@ -81,7 +81,7 @@ stdenv.mkDerivation rec { ''; meta = { - homepage = https://getpolarized.io/; + homepage = "https://getpolarized.io/"; description = "Personal knowledge repository for PDF and web content supporting incremental reading and document annotation"; license = stdenv.lib.licenses.gpl3; platforms = stdenv.lib.platforms.linux; diff --git a/pkgs/applications/misc/polybar/default.nix b/pkgs/applications/misc/polybar/default.nix index fcc6ead550a..1fc0162f8d0 100644 --- a/pkgs/applications/misc/polybar/default.nix +++ b/pkgs/applications/misc/polybar/default.nix @@ -24,16 +24,15 @@ assert nlSupport -> ! iwSupport && libnl != null; assert i3Support -> ! i3GapsSupport && jsoncpp != null && i3 != null; assert i3GapsSupport -> ! i3Support && jsoncpp != null && i3-gaps != null; -let xcbproto-py3 = xcbproto.override { python = python3; }; -in stdenv.mkDerivation rec { +stdenv.mkDerivation rec { pname = "polybar"; - version = "3.4.1"; + version = "3.4.2"; src = fetchFromGitHub { owner = pname; repo = pname; rev = version; - sha256 = "1z1m6dxh2i5vsnkzaccb9j02ab05wgmcgig5d0l9w856g5jp3zmy"; + sha256 = "1ss4wzy68dpqr5a4m090nn36v8wsp4a7pj6whcxxdrrimgww5r88"; fetchSubmodules = true; }; @@ -51,7 +50,7 @@ in stdenv.mkDerivation rec { }; buildInputs = [ - cairo libXdmcp libpthreadstubs libxcb pcre python3 xcbproto-py3 xcbutil + cairo libXdmcp libpthreadstubs libxcb pcre python3 xcbproto xcbutil xcbutilcursor xcbutilimage xcbutilrenderutil xcbutilwm xcbutilxrm (if alsaSupport then alsaLib else null) @@ -69,11 +68,6 @@ in stdenv.mkDerivation rec { (if i3Support || i3GapsSupport then makeWrapper else null) ]; - postConfigure = '' - substituteInPlace generated-sources/settings.hpp \ - --replace "${stdenv.cc}" "${stdenv.cc.name}" - ''; - postInstall = if (i3Support || i3GapsSupport) then '' wrapProgram $out/bin/polybar \ --prefix PATH : "${if i3Support then i3 else i3-gaps}/bin" diff --git a/pkgs/applications/misc/posterazor/default.nix b/pkgs/applications/misc/posterazor/default.nix index 7209ee3e400..674570ec3dd 100644 --- a/pkgs/applications/misc/posterazor/default.nix +++ b/pkgs/applications/misc/posterazor/default.nix @@ -29,7 +29,7 @@ stdenv.mkDerivation { ''; meta = with stdenv.lib; { - homepage = http://posterazor.sourceforge.net/; + homepage = "http://posterazor.sourceforge.net/"; description = "Cuts a raster image into pieces which can afterwards be printed out and assembled to a poster"; maintainers = [ maintainers.madjar ]; license = licenses.gpl3Plus; diff --git a/pkgs/applications/misc/printrun/default.nix b/pkgs/applications/misc/printrun/default.nix index 34144e35bd5..cadd98c7426 100644 --- a/pkgs/applications/misc/printrun/default.nix +++ b/pkgs/applications/misc/printrun/default.nix @@ -30,7 +30,7 @@ python27Packages.buildPythonApplication rec { meta = with stdenv.lib; { description = "Pronterface, Pronsole, and Printcore - Pure Python 3d printing host software"; - homepage = https://github.com/kliment/Printrun; + homepage = "https://github.com/kliment/Printrun"; license = licenses.gpl3; platforms = platforms.linux; }; diff --git a/pkgs/applications/misc/procmail/default.nix b/pkgs/applications/misc/procmail/default.nix index cd3a46ab09b..1e6c558defb 100644 --- a/pkgs/applications/misc/procmail/default.nix +++ b/pkgs/applications/misc/procmail/default.nix @@ -6,7 +6,7 @@ stdenv.mkDerivation { patches = [ ./CVE-2014-3618.patch (fetchurl { - url = https://sources.debian.org/data/main/p/procmail/3.22-26/debian/patches/30; + url = "https://sources.debian.org/data/main/p/procmail/3.22-26/debian/patches/30"; sha256 = "11zmz1bj0v9pay3ldmyyg7473b80h89gycrhndsgg9q50yhcqaaq"; name = "CVE-2017-16844"; }) @@ -25,13 +25,13 @@ stdenv.mkDerivation { ''; src = fetchurl { - url = ftp://ftp.fu-berlin.de/pub/unix/mail/procmail/procmail-3.22.tar.gz; + url = "ftp://ftp.fu-berlin.de/pub/unix/mail/procmail/procmail-3.22.tar.gz"; sha256 = "05z1c803n5cppkcq99vkyd5myff904lf9sdgynfqngfk9nrpaz08"; }; meta = with stdenv.lib; { description = "Mail processing and filtering utility"; - homepage = http://www.procmail.org/; + homepage = "http://www.procmail.org/"; license = licenses.gpl2; platforms = platforms.unix; maintainers = with maintainers; [ gebner ]; diff --git a/pkgs/applications/misc/prusa-slicer/default.nix b/pkgs/applications/misc/prusa-slicer/default.nix index caf4f270a15..144addf02c6 100644 --- a/pkgs/applications/misc/prusa-slicer/default.nix +++ b/pkgs/applications/misc/prusa-slicer/default.nix @@ -1,32 +1,34 @@ -{ stdenv, lib, fetchFromGitHub, makeWrapper, cmake, pkgconfig +{ stdenv, lib, fetchFromGitHub, cmake, pkgconfig , boost, cereal, curl, eigen, expat, glew, libpng, tbb, wxGTK31 , gtest, nlopt, xorg, makeDesktopItem +, cgal_5, gmp, ilmbase, mpfr, qhull, openvdb, systemd }: -let - nloptVersion = if lib.hasAttr "version" nlopt - then lib.getAttr "version" nlopt - else "2.4"; -in stdenv.mkDerivation rec { pname = "prusa-slicer"; - version = "2.1.1"; + version = "2.2.0"; enableParallelBuilding = true; nativeBuildInputs = [ cmake - makeWrapper pkgconfig ]; buildInputs = [ boost cereal + cgal_5 curl eigen expat glew + gmp + ilmbase libpng + mpfr + nlopt + openvdb + systemd tbb wxGTK31 xorg.libX11 @@ -35,31 +37,34 @@ stdenv.mkDerivation rec { checkInputs = [ gtest ]; # The build system uses custom logic - defined in - # xs/src/libnest2d/cmake_modules/FindNLopt.cmake in the package source - - # for finding the nlopt library, which doesn't pick up the package in the nix store. - # We need to set the path via the NLOPT environment variable instead. + # cmake/modules/FindNLopt.cmake in the package source - for finding the nlopt + # library, which doesn't pick up the package in the nix store. We + # additionally need to set the path via the NLOPT environment variable. NLOPT = nlopt; - # Disable compiler warnings that clutter the build log + # Disable compiler warnings that clutter the build log. # It seems to be a known issue for Eigen: # http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1221 NIX_CFLAGS_COMPILE = "-Wno-ignored-attributes"; + # prusa-slicer uses dlopen on `libudev.so` at runtime + NIX_LDFLAGS = "-ludev"; + prePatch = '' # In nix ioctls.h isn't available from the standard kernel-headers package # like in other distributions. The copy in glibc seems to be identical to the # one in the kernel though, so we use that one instead. sed -i 's|"/usr/include/asm-generic/ioctls.h"||g' src/libslic3r/GCodeSender.cpp - '' + lib.optionalString (lib.versionOlder "2.5" nloptVersion) '' + # Since version 2.5.0 of nlopt we need to link to libnlopt, as libnlopt_cxx # now seems to be integrated into the main lib. - sed -i 's|nlopt_cxx|nlopt|g' src/libnest2d/cmake_modules/FindNLopt.cmake + sed -i 's|nlopt_cxx|nlopt|g' cmake/modules/FindNLopt.cmake ''; src = fetchFromGitHub { owner = "prusa3d"; repo = "PrusaSlicer"; - sha256 = "0i393nbc2salb4j5l2hvy03ng7hmf90d2xj653pw9bsikhj0r3jd"; + sha256 = "0954k9sm09y8qnz1jyswyysg10k54ywz8mswnwa4n2hnpq9qx73m"; rev = "version_${version}"; }; @@ -86,8 +91,8 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "G-code generator for 3D printer"; - homepage = https://github.com/prusa3d/PrusaSlicer; + homepage = "https://github.com/prusa3d/PrusaSlicer"; license = licenses.agpl3; - maintainers = with maintainers; [ tweber ]; + maintainers = with maintainers; [ moredread tweber ]; }; } diff --git a/pkgs/applications/misc/pt/Gemfile.lock b/pkgs/applications/misc/pt/Gemfile.lock index 501fae0ef0a..dfaa018d372 100644 --- a/pkgs/applications/misc/pt/Gemfile.lock +++ b/pkgs/applications/misc/pt/Gemfile.lock @@ -66,4 +66,4 @@ DEPENDENCIES pt BUNDLED WITH - 1.17.2 + 2.1.4 diff --git a/pkgs/applications/misc/pt/default.nix b/pkgs/applications/misc/pt/default.nix index f5504721987..ef490702a67 100644 --- a/pkgs/applications/misc/pt/default.nix +++ b/pkgs/applications/misc/pt/default.nix @@ -9,7 +9,7 @@ bundlerApp { meta = with lib; { description = "Minimalist command-line Pivotal Tracker client"; - homepage = http://www.github.com/raul/pt; + homepage = "http://www.github.com/raul/pt"; license = licenses.mit; maintainers = with maintainers; [ ebzzry manveru nicknovitski ]; platforms = platforms.unix; diff --git a/pkgs/applications/misc/ptask/default.nix b/pkgs/applications/misc/ptask/default.nix index 81e316eb0ee..a5fd55c967b 100644 --- a/pkgs/applications/misc/ptask/default.nix +++ b/pkgs/applications/misc/ptask/default.nix @@ -21,7 +21,7 @@ stdenv.mkDerivation rec { ''; meta = with stdenv.lib; { - homepage = http://wpitchoune.net/ptask/; + homepage = "http://wpitchoune.net/ptask/"; description = "GTK-based GUI for taskwarrior"; license = licenses.gpl2; maintainers = [ maintainers.spacefrogg ]; diff --git a/pkgs/applications/misc/pueue/default.nix b/pkgs/applications/misc/pueue/default.nix new file mode 100644 index 00000000000..e90a86f225b --- /dev/null +++ b/pkgs/applications/misc/pueue/default.nix @@ -0,0 +1,24 @@ +{ lib, rustPlatform, fetchFromGitHub }: + +rustPlatform.buildRustPackage rec { + pname = "pueue"; + version = "0.3.0"; + + src = fetchFromGitHub { + owner = "Nukesor"; + repo = pname; + rev = "v${version}"; + sha256 = "11x4y3ah9f7mv9jssws95sw7rd20fxwdh11mrhcb4vwk59cmqsjz"; + }; + + cargoSha256 = "06zv3li14sg4a8bgj38zzx576ggm32ss0djmys1g0h5a0nxaaqfx"; + + checkPhase = "cargo test -- --skip test_single_huge_payload"; + + meta = with lib; { + description = "A daemon for managing long running shell commands"; + homepage = "https://github.com/Nukesor/pueue"; + license = licenses.mit; + maintainers = [ maintainers.marsam ]; + }; +} diff --git a/pkgs/applications/misc/pwsafe/default.nix b/pkgs/applications/misc/pwsafe/default.nix index b1f4e5f9e42..91845abc8b2 100644 --- a/pkgs/applications/misc/pwsafe/default.nix +++ b/pkgs/applications/misc/pwsafe/default.nix @@ -1,27 +1,28 @@ { stdenv, fetchFromGitHub, cmake, pkgconfig, zip, gettext, perl -, wxGTK31, libXext, libXi, libXt, libXtst, xercesc +, wxGTK30, libXext, libXi, libXt, libXtst, xercesc , qrencode, libuuid, libyubikey, yubikey-personalization -, curl, openssl +, curl, openssl, file }: stdenv.mkDerivation rec { pname = "pwsafe"; - version = "1.08.2"; + version = "1.09.0"; src = fetchFromGitHub { owner = pname; repo = pname; - rev = "${version}BETA"; - sha256 = "14qwk3cv5psj7ll71ikyv452x55c7iwjw9765yrpij6741r4yjln"; + rev = "${version}"; + sha256 = "0dmazm95d53wq74qvsjvhl7r6fr4dv11nzf8sgdy47nyxv06xs1b"; }; nativeBuildInputs = [ cmake gettext perl pkgconfig zip ]; buildInputs = [ - libXext libXi libXt libXtst wxGTK31 + libXext libXi libXt libXtst wxGTK30 curl qrencode libuuid openssl xercesc libyubikey yubikey-personalization + file ]; cmakeFlags = [ diff --git a/pkgs/applications/misc/pydf/default.nix b/pkgs/applications/misc/pydf/default.nix index bfbee1bea24..aa283510708 100644 --- a/pkgs/applications/misc/pydf/default.nix +++ b/pkgs/applications/misc/pydf/default.nix @@ -9,9 +9,15 @@ python3Packages.buildPythonPackage rec { sha256 = "7f47a7c3abfceb1ac04fc009ded538df1ae449c31203962a1471a4eb3bf21439"; }; + postInstall = '' + mkdir -p $out/share/man/man1 $out/share/pydf + install -t $out/share/pydf -m 444 pydfrc + install -t $out/share/man/man1 -m 444 pydf.1 + ''; + meta = with stdenv.lib; { description = "colourised df(1)-clone"; - homepage = http://kassiopeia.juls.savba.sk/~garabik/software/pydf/; + homepage = "http://kassiopeia.juls.savba.sk/~garabik/software/pydf/"; license = licenses.publicDomain; maintainers = with maintainers; [ monsieurp ]; }; diff --git a/pkgs/applications/misc/pyditz/cerberus.nix b/pkgs/applications/misc/pyditz/cerberus.nix index 614e3ca8135..be12906e61e 100644 --- a/pkgs/applications/misc/pyditz/cerberus.nix +++ b/pkgs/applications/misc/pyditz/cerberus.nix @@ -12,7 +12,7 @@ buildPythonPackage rec { checkInputs = [ pytestrunner pytest ]; meta = with stdenv.lib; { - homepage = http://python-cerberus.org/; + homepage = "http://python-cerberus.org/"; description = "Lightweight, extensible schema and data validation tool for Python dictionaries"; license = licenses.mit; }; diff --git a/pkgs/applications/misc/pyditz/default.nix b/pkgs/applications/misc/pyditz/default.nix index 60de2f9abdc..05338b38dfe 100644 --- a/pkgs/applications/misc/pyditz/default.nix +++ b/pkgs/applications/misc/pyditz/default.nix @@ -20,7 +20,7 @@ in buildPythonApplication rec { ''; meta = with stdenv.lib; { - homepage = https://pythonhosted.org/pyditz/; + homepage = "https://pythonhosted.org/pyditz/"; description = "Drop-in replacement for the Ditz distributed issue tracker"; maintainers = [ maintainers.ilikeavocadoes ]; license = licenses.lgpl2; diff --git a/pkgs/applications/misc/pytrainer/default.nix b/pkgs/applications/misc/pytrainer/default.nix index 0375b99af48..00c45114179 100644 --- a/pkgs/applications/misc/pytrainer/default.nix +++ b/pkgs/applications/misc/pytrainer/default.nix @@ -57,6 +57,7 @@ python3.pkgs.buildPythonApplication rec { psycopg2 requests certifi + setuptools ]; nativeBuildInputs = [ @@ -84,7 +85,7 @@ python3.pkgs.buildPythonApplication rec { ''; meta = with stdenv.lib; { - homepage = https://github.com/pytrainer/pytrainer/wiki; + homepage = "https://github.com/pytrainer/pytrainer/wiki"; description = "Application for logging and graphing sporting excursions"; maintainers = [ maintainers.rycee ]; license = licenses.gpl2Plus; diff --git a/pkgs/applications/misc/qMasterPassword/default.nix b/pkgs/applications/misc/qMasterPassword/default.nix index 97751127342..c2adcabe414 100644 --- a/pkgs/applications/misc/qMasterPassword/default.nix +++ b/pkgs/applications/misc/qMasterPassword/default.nix @@ -40,7 +40,7 @@ mkDerivation rec { there is no password file that can be lost or get stolen. There is also no need to trust any online password service. ''; - homepage = https://github.com/bkueng/qMasterPassword; + homepage = "https://github.com/bkueng/qMasterPassword"; license = licenses.gpl3; maintainers = [ maintainers.tadeokondrak ]; platforms = platforms.all; diff --git a/pkgs/applications/misc/qcad/application-dir.patch b/pkgs/applications/misc/qcad/application-dir.patch new file mode 100644 index 00000000000..84782e1e717 --- /dev/null +++ b/pkgs/applications/misc/qcad/application-dir.patch @@ -0,0 +1,35 @@ +diff --git a/src/core/RS.cpp b/src/core/RS.cpp +index d8a135d6f..659795dbb 100644 +--- a/src/core/RS.cpp ++++ b/src/core/RS.cpp +@@ -151,7 +151,7 @@ QStringList RS::getDirectoryList(const QString& subDirectory) { + dirList.append(appDir + "/../../../" + subDirectory); + dirList.append(QDir::currentPath() + "/" + subDirectory); + #else +- dirList.append(appDir + "/" + subDirectory); ++ dirList.append(appDir + "/../lib/" + subDirectory); + #endif + + /* +diff --git a/src/core/RSettings.cpp b/src/core/RSettings.cpp +index c6c31cbf5..c51b59ce6 100644 +--- a/src/core/RSettings.cpp ++++ b/src/core/RSettings.cpp +@@ -367,6 +367,8 @@ QString RSettings::getApplicationPath() { + ret.cdUp(); + } + ++ ret.cd("../lib"); ++ + return ret.path(); + } + +@@ -1268,7 +1270,7 @@ QString RSettings::getRevisionString() { + } + + QString RSettings::getReleaseDate() { +- return __DATE__; ++ return ""; + } + + int RSettings::getSnapRange() { diff --git a/pkgs/applications/misc/qcad/default.nix b/pkgs/applications/misc/qcad/default.nix new file mode 100644 index 00000000000..4f046e34b18 --- /dev/null +++ b/pkgs/applications/misc/qcad/default.nix @@ -0,0 +1,92 @@ +{ boost +, fetchFromGitHub +, mkDerivationWith +, muparser +, pkgconfig +, qmake +, qt5 +, stdenv +, libGLU +}: + +mkDerivationWith stdenv.mkDerivation rec { + pname = "qcad"; + version = "3.24.2.1"; + + src = fetchFromGitHub { + owner = "qcad"; + repo = "qcad"; + rev = "v${version}"; + sha256 = "1g295gljq051x09f4d8k586bkg3vs8z22dn3rxj6xrm6803z8zw2"; + }; + + patches = [ + ./application-dir.patch + ]; + + postPatch = '' + mkdir src/3rdparty/qt-labs-qtscriptgenerator-${qt5.qtbase.version} + cp \ + src/3rdparty/qt-labs-qtscriptgenerator-5.12.3/qt-labs-qtscriptgenerator-5.12.3.pro \ + src/3rdparty/qt-labs-qtscriptgenerator-${qt5.qtbase.version}/qt-labs-qtscriptgenerator-${qt5.qtbase.version}.pro + ''; + + qmakeFlags = [ + "MUPARSER_DIR=${muparser}" + "INSTALLROOT=$(out)" + "BOOST_DIR=${boost.dev}" + ]; + + installPhase = '' + runHook preInstall + + install -Dm555 -t $out/bin release/qcad-bin + install -Dm555 -t $out/lib release/libspatialindexnavel.so + install -Dm555 -t $out/lib release/libqcadcore.so + install -Dm555 -t $out/lib release/libqcadentity.so + install -Dm555 -t $out/lib release/libqcadgrid.so + install -Dm555 -t $out/lib release/libqcadsnap.so + install -Dm555 -t $out/lib release/libqcadoperations.so + install -Dm555 -t $out/lib release/libqcadstemmer.so + install -Dm555 -t $out/lib release/libqcadspatialindex.so + install -Dm555 -t $out/lib release/libqcadgui.so + install -Dm555 -t $out/lib release/libqcadecmaapi.so + + install -Dm444 -t $out/share/applications qcad.desktop + install -Dm644 -t $out/share/pixmaps scripts/qcad_icon.png + + cp -r scripts $out/lib + cp -r plugins $out/lib/plugins + cp -r patterns $out/lib/patterns + + install -Dm644 scripts/qcad_icon.svg $out/share/icons/hicolor/scalable/apps/qcad.svg + + runHook postInstall + ''; + + buildInputs = [ + boost + muparser + libGLU + qt5.qtbase + qt5.qtscript + qt5.qtsvg + qt5.qtxmlpatterns + ]; + + nativeBuildInputs = [ + pkgconfig + qt5.qmake + qt5.qttools + ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "2D CAD package based on Qt"; + homepage = "https://qcad.org"; + license = licenses.gpl3; + maintainers = with maintainers; [ yvesf ]; + platforms = qt5.qtbase.meta.platforms; + }; +} diff --git a/pkgs/applications/misc/qdirstat/default.nix b/pkgs/applications/misc/qdirstat/default.nix index 21d4b003179..c57153fe0e0 100644 --- a/pkgs/applications/misc/qdirstat/default.nix +++ b/pkgs/applications/misc/qdirstat/default.nix @@ -3,7 +3,7 @@ , makeWrapper, perlPackages, mkDerivation }: let - version = "1.6"; + version = "1.6.1"; in mkDerivation rec { pname = "qdirstat"; inherit version; @@ -12,7 +12,7 @@ in mkDerivation rec { owner = "shundhammer"; repo = "qdirstat"; rev = version; - sha256 = "0q4ccjmlbqifg251kyxwys8wspdskr8scqhacyfrs9cmnjxcjqan"; + sha256 = "0q77a347qv1aka6sni6l03zh5jzyy9s74aygg554r73g01kxczpb"; }; nativeBuildInputs = [ qmake makeWrapper ]; diff --git a/pkgs/applications/misc/qlandkartegt/default.nix b/pkgs/applications/misc/qlandkartegt/default.nix index aae38f7d0f1..d780125fbbf 100644 --- a/pkgs/applications/misc/qlandkartegt/default.nix +++ b/pkgs/applications/misc/qlandkartegt/default.nix @@ -7,7 +7,7 @@ mkDerivation rec { version = "1.8.1"; src = fetchurl { - url = "https://bitbucket.org/maproom/qlandkarte-gt/downloads/${pname}-${version}.tar.gz"; + url = "mirror://sourceforge/${pname}/${pname}-${version}.tar.gz"; sha256 = "1rwv5ar5jv15g1cc6pp0lk69q3ip10pjazsh3ds2ggaciymha1ly"; }; @@ -79,7 +79,7 @@ mkDerivation rec { ''; meta = with lib; { - homepage = http://www.qlandkarte.org/; + homepage = "http://www.qlandkarte.org/"; description = '' QLandkarte GT is the ultimate outdoor aficionado's tool. It supports GPS maps in GeoTiff format as well as Garmin's img vector map format. diff --git a/pkgs/applications/misc/qlandkartegt/garmindev.nix b/pkgs/applications/misc/qlandkartegt/garmindev.nix index a679a4f1112..21378084214 100644 --- a/pkgs/applications/misc/qlandkartegt/garmindev.nix +++ b/pkgs/applications/misc/qlandkartegt/garmindev.nix @@ -5,7 +5,7 @@ stdenv.mkDerivation rec { version = "0.3.4"; src = fetchurl { - url = "https://bitbucket.org/maproom/qlandkarte-gt/downloads/${pname}-${version}.tar.gz"; + url = "mirror://sourceforge/qlandkartegt/${pname}-${version}.tar.gz"; sha256 = "1mc7rxdn9790pgbvz02xzipxp2dp9h4hfq87xgawa18sp9jqzhw6"; }; @@ -16,7 +16,7 @@ stdenv.mkDerivation rec { enableParallelBuilding = true; meta = with stdenv.lib; { - homepage = http://www.qlandkarte.org/; + homepage = "http://www.qlandkarte.org/"; description = "Garmin Device Drivers for QlandkarteGT"; license = licenses.gpl2; maintainers = with maintainers; [ sikmir ]; diff --git a/pkgs/applications/misc/qmapshack/default.nix b/pkgs/applications/misc/qmapshack/default.nix index 21fbbf3253f..a3238f7cba4 100644 --- a/pkgs/applications/misc/qmapshack/default.nix +++ b/pkgs/applications/misc/qmapshack/default.nix @@ -3,13 +3,13 @@ mkDerivation rec { pname = "qmapshack"; - version = "1.14.0"; + version = "1.14.1"; src = fetchFromGitHub { owner = "Maproom"; repo = pname; rev = "V_${version}"; - sha256 = "07c2hrq9sn456w7l3gdr599rmjfv2k6mh159zza7p1py8r7ywksa"; + sha256 = "0hghynb4ac98fg1pwc645zriqkghxwp8mr3jhr87pa6fh0y848py"; }; nativeBuildInputs = [ cmake ]; @@ -30,7 +30,7 @@ mkDerivation rec { ]; meta = with lib; { - homepage = https://github.com/Maproom/qmapshack; + homepage = "https://github.com/Maproom/qmapshack"; description = "Consumer grade GIS software"; license = licenses.gpl3; maintainers = with maintainers; [ dotlambda sikmir ]; diff --git a/pkgs/applications/misc/qmetro/default.nix b/pkgs/applications/misc/qmetro/default.nix index 49993f2f7ea..623bd050dc9 100644 --- a/pkgs/applications/misc/qmetro/default.nix +++ b/pkgs/applications/misc/qmetro/default.nix @@ -22,7 +22,7 @@ stdenv.mkDerivation rec { enableParallelBuilding = true; meta = with stdenv.lib; { - homepage = https://sourceforge.net/projects/qmetro/; + homepage = "https://sourceforge.net/projects/qmetro/"; description = "Worldwide transit maps viewer"; license = licenses.gpl3; diff --git a/pkgs/applications/misc/qolibri/default.nix b/pkgs/applications/misc/qolibri/default.nix index b7c137258fd..913d2bc3c6b 100644 --- a/pkgs/applications/misc/qolibri/default.nix +++ b/pkgs/applications/misc/qolibri/default.nix @@ -20,10 +20,10 @@ mkDerivation { enableParallelBuilding = true; meta = with lib; { - homepage = https://github.com/ludios/qolibri; + homepage = "https://github.com/ludios/qolibri"; description = "EPWING reader for viewing Japanese dictionaries"; platforms = platforms.linux; - maintainers = with maintainers; [ ivan ]; + maintainers = with maintainers; [ ]; license = licenses.gpl2; }; } diff --git a/pkgs/applications/misc/qpdfview/default.nix b/pkgs/applications/misc/qpdfview/default.nix index 4100ab3536b..3e55215f473 100644 --- a/pkgs/applications/misc/qpdfview/default.nix +++ b/pkgs/applications/misc/qpdfview/default.nix @@ -43,7 +43,7 @@ mkDerivation { license = stdenv.lib.licenses.gpl2; maintainers = [stdenv.lib.maintainers.raskin]; platforms = stdenv.lib.platforms.linux; - homepage = https://launchpad.net/qpdfview; + homepage = "https://launchpad.net/qpdfview"; updateWalker = true; }; } diff --git a/pkgs/applications/misc/qsyncthingtray/default.nix b/pkgs/applications/misc/qsyncthingtray/default.nix index 46b446b429b..70d9f600fa0 100644 --- a/pkgs/applications/misc/qsyncthingtray/default.nix +++ b/pkgs/applications/misc/qsyncthingtray/default.nix @@ -56,7 +56,7 @@ mkDerivation rec { enableParallelBuilding = true; meta = with lib; { - homepage = https://github.com/sieren/QSyncthingTray/; + homepage = "https://github.com/sieren/QSyncthingTray/"; description = "A Traybar Application for Syncthing written in C++"; longDescription = '' A cross-platform status bar for Syncthing. diff --git a/pkgs/applications/misc/qt-box-editor/default.nix b/pkgs/applications/misc/qt-box-editor/default.nix index 702cadfdaa9..c65e5377eb3 100644 --- a/pkgs/applications/misc/qt-box-editor/default.nix +++ b/pkgs/applications/misc/qt-box-editor/default.nix @@ -30,7 +30,7 @@ stdenv.mkDerivation { meta = with stdenv.lib; { description = "Editor of tesseract-ocr box files"; - homepage = https://github.com/zdenop/qt-box-editor; + homepage = "https://github.com/zdenop/qt-box-editor"; license = licenses.asl20; maintainers = [ maintainers.costrouc ]; platforms = platforms.all; diff --git a/pkgs/applications/misc/qtbitcointrader/default.nix b/pkgs/applications/misc/qtbitcointrader/default.nix index 21d51f17258..c5dfdf95fb5 100644 --- a/pkgs/applications/misc/qtbitcointrader/default.nix +++ b/pkgs/applications/misc/qtbitcointrader/default.nix @@ -28,7 +28,7 @@ mkDerivation { meta = with stdenv.lib; { description = "Bitcoin trading client"; - homepage = https://centrabit.com/; + homepage = "https://centrabit.com/"; license = licenses.gpl3; platforms = qt5.qtbase.meta.platforms; maintainers = [ maintainers.ehmry ]; diff --git a/pkgs/applications/misc/qtpass/default.nix b/pkgs/applications/misc/qtpass/default.nix index f185524da58..faa19914749 100644 --- a/pkgs/applications/misc/qtpass/default.nix +++ b/pkgs/applications/misc/qtpass/default.nix @@ -1,5 +1,6 @@ { lib, mkDerivation, fetchFromGitHub , git, gnupg, pass, pwgen, qrencode +, fetchpatch , qtbase, qtsvg, qttools, qmake }: @@ -25,6 +26,16 @@ mkDerivation rec { enableParallelBuilding = true; + patches = [ + # Fix path to pass-otp plugin `/usr/lib/password-store/extensions/otp.bash` being hardcoded. + # TODO: Remove when https://github.com/IJHack/QtPass/pull/499 is merged and available. + (fetchpatch { + name = "qtpass-Dont-hardcode-pass-otp-usr-lib-path.patch"; + url = "https://github.com/IJHack/QtPass/commit/2ca9f0ec5a8d709c97a2433c5cd814040c82d4f3.patch"; + sha256 = "0ljlvqxvarrz2a4j71i66aflrxi84zirb6cg9kvygnvhvm1zbc7d"; + }) + ]; + qmakeFlags = [ # setup hook only sets QMAKE_LRELEASE, set QMAKE_LUPDATE too: "QMAKE_LUPDATE=${qttools.dev}/bin/lupdate" @@ -42,7 +53,7 @@ mkDerivation rec { meta = with lib; { description = "A multi-platform GUI for pass, the standard unix password manager"; - homepage = https://qtpass.org; + homepage = "https://qtpass.org"; license = licenses.gpl3; maintainers = [ maintainers.hrdinka ]; platforms = platforms.all; diff --git a/pkgs/applications/misc/quicksynergy/default.nix b/pkgs/applications/misc/quicksynergy/default.nix index 948bcf33d37..1956f0ad41d 100644 --- a/pkgs/applications/misc/quicksynergy/default.nix +++ b/pkgs/applications/misc/quicksynergy/default.nix @@ -29,7 +29,7 @@ stdenv.mkDerivation rec { Remember to open port 24800 (used by synergys program) if you want to host mouse and keyboard."; - homepage = https://sourceforge.net/projects/quicksynergy/; + homepage = "https://sourceforge.net/projects/quicksynergy/"; license = stdenv.lib.licenses.gpl2; maintainers = [ stdenv.lib.maintainers.spinus ]; platforms = stdenv.lib.platforms.linux; diff --git a/pkgs/applications/misc/ranger/default.nix b/pkgs/applications/misc/ranger/default.nix index 7045228d6a2..68ddef65697 100644 --- a/pkgs/applications/misc/ranger/default.nix +++ b/pkgs/applications/misc/ranger/default.nix @@ -7,20 +7,20 @@ assert imagePreviewSupport -> w3m != null; python3Packages.buildPythonApplication rec { name = "ranger-${version}"; - version = "1.9.2"; + version = "1.9.3"; src = fetchFromGitHub { owner = "ranger"; repo = "ranger"; rev = "v${version}"; - sha256= "1ws6g8z1m1hfp8bv4msvbaa9f7948p687jmc8h69yib4jkv3qyax"; + sha256= "1rygfryczanvqxn43lmlkgs04sbqznbvbb9hlbm3h5qgdcl0xlw8"; }; LC_ALL = "en_US.UTF-8"; checkInputs = with python3Packages; [ pytest ]; propagatedBuildInputs = [ file ] - ++ lib.optional (imagePreviewSupport) [ python3Packages.pillow ]; + ++ lib.optionals (imagePreviewSupport) [ python3Packages.pillow ]; checkPhase = '' py.test tests @@ -56,7 +56,7 @@ python3Packages.buildPythonApplication rec { meta = with lib; { description = "File manager with minimalistic curses interface"; - homepage = http://ranger.github.io/; + homepage = "http://ranger.github.io/"; license = licenses.gpl3; platforms = platforms.unix; maintainers = [ maintainers.toonn maintainers.magnetophon ]; diff --git a/pkgs/applications/misc/redis-desktop-manager/default.nix b/pkgs/applications/misc/redis-desktop-manager/default.nix index 71d79b88f44..ec40347cbcb 100644 --- a/pkgs/applications/misc/redis-desktop-manager/default.nix +++ b/pkgs/applications/misc/redis-desktop-manager/default.nix @@ -33,6 +33,8 @@ stdenv.mkDerivation rec { dontUseQmakeConfigure = true; + NIX_CFLAGS_COMPILE = [ "-Wno-error=deprecated" ]; + # Disable annoying update reminder postPatch = '' sed -i s/'^\s*initUpdater();'/'\/\/initUpdater():'/ src/app/app.cpp @@ -73,7 +75,7 @@ EOF meta = with lib; { description = "Cross-platform open source Redis DB management tool"; - homepage = https://redisdesktop.com/; + homepage = "https://redisdesktop.com/"; license = licenses.lgpl21; platforms = platforms.linux; maintainers = with maintainers; [ cstrahan ]; diff --git a/pkgs/applications/misc/redshift-plasma-applet/default.nix b/pkgs/applications/misc/redshift-plasma-applet/default.nix index 2eebe67c46d..c14eee398ce 100644 --- a/pkgs/applications/misc/redshift-plasma-applet/default.nix +++ b/pkgs/applications/misc/redshift-plasma-applet/default.nix @@ -37,7 +37,7 @@ stdenv.mkDerivation { meta = with stdenv.lib; { description = "KDE Plasma 5 widget for controlling Redshift"; - homepage = https://github.com/kotelnik/plasma-applet-redshift-control; + homepage = "https://github.com/kotelnik/plasma-applet-redshift-control"; license = licenses.gpl2Plus; platforms = platforms.linux; maintainers = with maintainers; [ benley zraexy ]; diff --git a/pkgs/applications/misc/redshift/default.nix b/pkgs/applications/misc/redshift/default.nix index e9862041f4a..81fbcc8b483 100644 --- a/pkgs/applications/misc/redshift/default.nix +++ b/pkgs/applications/misc/redshift/default.nix @@ -93,7 +93,7 @@ rec { be set to match the lamps in your room. ''; license = licenses.gpl3Plus; - homepage = http://jonls.dk/redshift; + homepage = "http://jonls.dk/redshift"; platforms = platforms.unix; maintainers = with maintainers; [ yegortimoshenko globin ]; }; @@ -112,7 +112,7 @@ rec { meta = redshift.meta // { description = redshift.meta.description + "(with wlroots patches)"; - homepage = https://github.com/minus7/redshift; + homepage = "https://github.com/minus7/redshift"; }; }; } diff --git a/pkgs/applications/misc/regextester/default.nix b/pkgs/applications/misc/regextester/default.nix index 816a158c031..22f46eed7df 100644 --- a/pkgs/applications/misc/regextester/default.nix +++ b/pkgs/applications/misc/regextester/default.nix @@ -51,7 +51,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "A desktop application to test regular expressions interactively"; - homepage = https://github.com/artemanufrij/regextester; + homepage = "https://github.com/artemanufrij/regextester"; maintainers = with maintainers; [ samdroid-apps ]; platforms = platforms.linux; license = licenses.gpl2Plus; diff --git a/pkgs/applications/misc/robo3t/default.nix b/pkgs/applications/misc/robo3t/default.nix index 00640be6c74..f42a58e0057 100644 --- a/pkgs/applications/misc/robo3t/default.nix +++ b/pkgs/applications/misc/robo3t/default.nix @@ -70,7 +70,7 @@ stdenv.mkDerivation rec { ''; meta = { - homepage = https://robomongo.org/; + homepage = "https://robomongo.org/"; description = "Query GUI for mongodb"; platforms = [ "x86_64-linux" ]; license = stdenv.lib.licenses.gpl3; diff --git a/pkgs/applications/misc/robomongo/default.nix b/pkgs/applications/misc/robomongo/default.nix index 8df4e960c18..ef0a3047297 100644 --- a/pkgs/applications/misc/robomongo/default.nix +++ b/pkgs/applications/misc/robomongo/default.nix @@ -68,7 +68,7 @@ stdenv.mkDerivation rec { ''; meta = { - homepage = https://robomongo.org/; + homepage = "https://robomongo.org/"; description = "Query GUI for mongodb"; platforms = stdenv.lib.intersectLists stdenv.lib.platforms.linux stdenv.lib.platforms.x86_64; license = stdenv.lib.licenses.gpl3; diff --git a/pkgs/applications/misc/rofi-emoji/0001-Patch-plugindir-to-output.patch b/pkgs/applications/misc/rofi-emoji/0001-Patch-plugindir-to-output.patch new file mode 100644 index 00000000000..9b9479b1b49 --- /dev/null +++ b/pkgs/applications/misc/rofi-emoji/0001-Patch-plugindir-to-output.patch @@ -0,0 +1,25 @@ +From 695e7a441fc28b874e65917fe2c0059b5b8ca749 Mon Sep 17 00:00:00 2001 +From: Cole Helbling +Date: Sat, 28 Mar 2020 23:46:03 -0700 +Subject: [PATCH] Patch plugindir to output + +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 75e476f..cb1ddf7 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -55,7 +55,7 @@ PKG_CHECK_MODULES([glib], [glib-2.0 >= 2.40 gio-unix-2.0 gmodule-2.0 ]) + PKG_CHECK_MODULES([cairo], [cairo]) + PKG_CHECK_MODULES([rofi], [rofi]) + +-[rofi_PLUGIN_INSTALL_DIR]="`$PKG_CONFIG --variable=pluginsdir rofi`" ++[rofi_PLUGIN_INSTALL_DIR]="`echo $out/lib/rofi`" + AC_SUBST([rofi_PLUGIN_INSTALL_DIR]) + + LT_INIT([disable-static]) +-- +2.25.1 + diff --git a/pkgs/applications/misc/rofi-emoji/default.nix b/pkgs/applications/misc/rofi-emoji/default.nix new file mode 100644 index 00000000000..14742da35da --- /dev/null +++ b/pkgs/applications/misc/rofi-emoji/default.nix @@ -0,0 +1,69 @@ +{ stdenv +, lib +, fetchFromGitHub +, fetchpatch +, substituteAll +, makeWrapper + +, autoreconfHook +, pkgconfig + +, cairo +, glib +, libnotify +, rofi-unwrapped +, wl-clipboard +, xclip +, xsel +}: + +stdenv.mkDerivation rec { + pname = "rofi-emoji"; + version = "2.1.2"; + + src = fetchFromGitHub { + owner = "Mange"; + repo = pname; + rev = "v${version}"; + sha256 = "0knsvsdff2c7ww94120bq92735qrfriyd28mi0n72ccb2iikyi8b"; + }; + + patches = [ + # Look for plugin-related files in $out/lib/rofi + ./0001-Patch-plugindir-to-output.patch + ]; + + postPatch = '' + patchShebangs clipboard-adapter.sh + ''; + + postFixup = '' + chmod +x $out/share/rofi-emoji/clipboard-adapter.sh + wrapProgram $out/share/rofi-emoji/clipboard-adapter.sh \ + --prefix PATH ":" ${lib.makeBinPath [ libnotify wl-clipboard xclip xsel ]} + ''; + + nativeBuildInputs = [ + autoreconfHook + pkgconfig + ]; + + buildInputs = [ + cairo + glib + libnotify + makeWrapper + rofi-unwrapped + wl-clipboard + xclip + xsel + ]; + + meta = with lib; { + description = "An emoji selector plugin for Rofi"; + homepage = "https://github.com/Mange/rofi-emoji"; + license = licenses.mit; + maintainers = with maintainers; [ cole-h ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/applications/misc/rofi-menugen/default.nix b/pkgs/applications/misc/rofi-menugen/default.nix index 2255089ab7e..088ec29ae37 100644 --- a/pkgs/applications/misc/rofi-menugen/default.nix +++ b/pkgs/applications/misc/rofi-menugen/default.nix @@ -21,7 +21,7 @@ stdenv.mkDerivation rec { ''; meta = with stdenv.lib; { description = "Generates menu based applications using rofi"; - homepage = https://github.com/octotep/menugen; + homepage = "https://github.com/octotep/menugen"; maintainers = with maintainers; [ ]; platforms = platforms.all; }; diff --git a/pkgs/applications/misc/rofi/default.nix b/pkgs/applications/misc/rofi/default.nix index eabf77f0e95..d8e600f6019 100644 --- a/pkgs/applications/misc/rofi/default.nix +++ b/pkgs/applications/misc/rofi/default.nix @@ -1,4 +1,4 @@ -{ stdenv, lib, fetchurl, makeWrapper +{ stdenv, lib, fetchurl , autoreconfHook, pkgconfig, libxkbcommon, pango, which, git , cairo, libxcb, xcbutil, xcbutilwm, xcbutilxrm, libstartup_notification , bison, flex, librsvg, check @@ -19,23 +19,18 @@ stdenv.mkDerivation rec { sed -i 's/~root/~nobody/g' test/helper-expand.c ''; - nativeBuildInputs = [ autoreconfHook pkgconfig makeWrapper ]; + nativeBuildInputs = [ autoreconfHook pkgconfig ]; buildInputs = [ libxkbcommon pango cairo git bison flex librsvg check libstartup_notification libxcb xcbutil xcbutilwm xcbutilxrm which ]; - postInstall = '' - wrapProgram $out/bin/rofi-theme-selector \ - --prefix XDG_DATA_DIRS : $out/share - ''; - doCheck = false; meta = with lib; { description = "Window switcher, run dialog and dmenu replacement"; homepage = "https://github.com/davatorium/rofi"; license = licenses.mit; - maintainers = with maintainers; [ mbakke ma27 ]; + maintainers = with maintainers; [ mbakke ]; platforms = with platforms; linux; }; } diff --git a/pkgs/applications/misc/rofi/wrapper.nix b/pkgs/applications/misc/rofi/wrapper.nix index 8c24d27f075..4e69f9cce14 100644 --- a/pkgs/applications/misc/rofi/wrapper.nix +++ b/pkgs/applications/misc/rofi/wrapper.nix @@ -1,21 +1,30 @@ -{ stdenv, rofi-unwrapped, makeWrapper, theme ? null }: +{ symlinkJoin, lib, rofi-unwrapped, makeWrapper, hicolor-icon-theme, theme ? null, plugins ? [] }: -if theme == null then rofi-unwrapped else -stdenv.mkDerivation { - pname = "rofi"; - version = rofi-unwrapped.version; +symlinkJoin { + name = "rofi-${rofi-unwrapped.version}"; + + paths = [ + rofi-unwrapped.out + ] ++ (lib.forEach plugins (p: p.out)); buildInputs = [ makeWrapper ]; preferLocalBuild = true; passthru.unwrapped = rofi-unwrapped; - buildCommand = '' - mkdir $out - ln -s ${rofi-unwrapped}/* $out - rm $out/bin + postBuild = '' + rm -rf $out/bin mkdir $out/bin ln -s ${rofi-unwrapped}/bin/* $out/bin + rm $out/bin/rofi - makeWrapper ${rofi-unwrapped}/bin/rofi $out/bin/rofi --add-flags "-theme ${theme}" + makeWrapper ${rofi-unwrapped}/bin/rofi $out/bin/rofi \ + --prefix XDG_DATA_DIRS : ${hicolor-icon-theme}/share \ + ${lib.optionalString (plugins != []) ''--prefix XDG_DATA_DIRS : ${lib.concatStringsSep ":" (lib.forEach plugins (p: "${p.out}/share"))}''} \ + ${lib.optionalString (theme != null) ''--add-flags "-theme ${theme}"''} \ + ${lib.optionalString (plugins != []) ''--add-flags "-plugin-path $out/lib/rofi"''} + + rm $out/bin/rofi-theme-selector + makeWrapper ${rofi-unwrapped}/bin/rofi-theme-selector $out/bin/rofi-theme-selector \ + --prefix XDG_DATA_DIRS : $out/share ''; meta = rofi-unwrapped.meta // { diff --git a/pkgs/applications/misc/rsclock/default.nix b/pkgs/applications/misc/rsclock/default.nix index 137ec920f75..4f63ed057b7 100644 --- a/pkgs/applications/misc/rsclock/default.nix +++ b/pkgs/applications/misc/rsclock/default.nix @@ -11,7 +11,7 @@ rustPlatform.buildRustPackage rec { sha256 = "1i93qkz6d8sbk78i4rvx099hnn4lklp4cjvanpm9ssv8na4rqvh2"; }; - cargoSha256 = "03mhlp5hi3nlybb9dkwf1gxgsg056mjq2zsxnb5qh8pdxw7fmdxk"; + cargoSha256 = "01dhkis6zswq1y40n7sdq9xv1sp61f2v7nfqbkicyjngmdrmcgrl"; meta = with stdenv.lib; { description = "A simple terminal clock written in Rust"; diff --git a/pkgs/applications/misc/rsibreak/default.nix b/pkgs/applications/misc/rsibreak/default.nix index 6ee9966401b..eefc0a0c577 100644 --- a/pkgs/applications/misc/rsibreak/default.nix +++ b/pkgs/applications/misc/rsibreak/default.nix @@ -22,7 +22,7 @@ in mkDerivation rec { meta = with lib; { description = "RSIBreak takes care of your health and regularly breaks your work to avoid repetitive strain injury (RSI)"; license = licenses.gpl2; - homepage = https://www.kde.org/applications/utilities/rsibreak/; + homepage = "https://www.kde.org/applications/utilities/rsibreak/"; maintainers = with maintainers; [ vandenoever ]; }; } diff --git a/pkgs/applications/misc/rtv/default.nix b/pkgs/applications/misc/rtv/default.nix index 20211ecb53b..c4547e87513 100644 --- a/pkgs/applications/misc/rtv/default.nix +++ b/pkgs/applications/misc/rtv/default.nix @@ -38,7 +38,7 @@ buildPythonApplication rec { ]; meta = with stdenv.lib; { - homepage = https://github.com/michael-lazar/rtv; + homepage = "https://github.com/michael-lazar/rtv"; description = "Browse Reddit from your Terminal"; license = licenses.mit; maintainers = with maintainers; [ matthiasbeyer wedens ]; diff --git a/pkgs/applications/misc/rxvt-unicode-plugins/default.nix b/pkgs/applications/misc/rxvt-unicode-plugins/default.nix new file mode 100644 index 00000000000..74bfbe83e91 --- /dev/null +++ b/pkgs/applications/misc/rxvt-unicode-plugins/default.nix @@ -0,0 +1,22 @@ +{ callPackage }: + +{ + autocomplete-all-the-things = callPackage ./urxvt-autocomplete-all-the-things { }; + + bidi = callPackage ./urxvt-bidi { }; + + font-size = callPackage ./urxvt-font-size { }; + + perl = callPackage ./urxvt-perl { }; + + perls = callPackage ./urxvt-perls { }; + + resize-font = callPackage ./urxvt-resize-font { }; + + tabbedex = callPackage ./urxvt-tabbedex { }; + + theme-switch = callPackage ./urxvt-theme-switch { }; + + vtwheel = callPackage ./urxvt-vtwheel { }; + +} diff --git a/pkgs/applications/misc/rxvt_unicode-plugins/urxvt-autocomplete-all-the-things/default.nix b/pkgs/applications/misc/rxvt-unicode-plugins/urxvt-autocomplete-all-the-things/default.nix similarity index 100% rename from pkgs/applications/misc/rxvt_unicode-plugins/urxvt-autocomplete-all-the-things/default.nix rename to pkgs/applications/misc/rxvt-unicode-plugins/urxvt-autocomplete-all-the-things/default.nix diff --git a/pkgs/applications/misc/rxvt_unicode-plugins/urxvt-bidi/default.nix b/pkgs/applications/misc/rxvt-unicode-plugins/urxvt-bidi/default.nix similarity index 95% rename from pkgs/applications/misc/rxvt_unicode-plugins/urxvt-bidi/default.nix rename to pkgs/applications/misc/rxvt-unicode-plugins/urxvt-bidi/default.nix index 3e67e4ec085..4b6b4eb8184 100644 --- a/pkgs/applications/misc/rxvt_unicode-plugins/urxvt-bidi/default.nix +++ b/pkgs/applications/misc/rxvt-unicode-plugins/urxvt-bidi/default.nix @@ -16,6 +16,8 @@ perlPackages.buildPerlPackage rec { install -Dm555 misc/bidi "$out/lib/urxvt/perl/bidi" ''; + passthru.perlPackages = [ "self" ]; + meta = with lib; { description = "Text::Bidi Perl package using fribidi, providing a urxvt plugin"; homepage = "https://github.com/mkamensky/Text-Bidi"; diff --git a/pkgs/applications/misc/rxvt_unicode-plugins/urxvt-font-size/default.nix b/pkgs/applications/misc/rxvt-unicode-plugins/urxvt-font-size/default.nix similarity index 92% rename from pkgs/applications/misc/rxvt_unicode-plugins/urxvt-font-size/default.nix rename to pkgs/applications/misc/rxvt-unicode-plugins/urxvt-font-size/default.nix index 4f4319af6cb..f81709b9739 100644 --- a/pkgs/applications/misc/rxvt_unicode-plugins/urxvt-font-size/default.nix +++ b/pkgs/applications/misc/rxvt-unicode-plugins/urxvt-font-size/default.nix @@ -22,7 +22,7 @@ stdenv.mkDerivation { meta = with stdenv.lib; { description = "Change the urxvt font size on the fly"; - homepage = https://github.com/majutsushi/urxvt-font-size; + homepage = "https://github.com/majutsushi/urxvt-font-size"; license = licenses.mit; maintainers = with maintainers; [ cstrahan ]; platforms = with platforms; unix; diff --git a/pkgs/applications/misc/rxvt_unicode-plugins/urxvt-perl/default.nix b/pkgs/applications/misc/rxvt-unicode-plugins/urxvt-perl/default.nix similarity index 92% rename from pkgs/applications/misc/rxvt_unicode-plugins/urxvt-perl/default.nix rename to pkgs/applications/misc/rxvt-unicode-plugins/urxvt-perl/default.nix index 13e005014f1..0c95acd7205 100644 --- a/pkgs/applications/misc/rxvt_unicode-plugins/urxvt-perl/default.nix +++ b/pkgs/applications/misc/rxvt-unicode-plugins/urxvt-perl/default.nix @@ -21,7 +21,7 @@ stdenv.mkDerivation { meta = with stdenv.lib; { description = "Perl extensions for the rxvt-unicode terminal emulator"; - homepage = https://github.com/effigies/urxvt-perl; + homepage = "https://github.com/effigies/urxvt-perl"; license = licenses.gpl3; maintainers = with maintainers; [ cstrahan ]; platforms = with platforms; unix; diff --git a/pkgs/applications/misc/rxvt_unicode-plugins/urxvt-perls/default.nix b/pkgs/applications/misc/rxvt-unicode-plugins/urxvt-perls/default.nix similarity index 66% rename from pkgs/applications/misc/rxvt_unicode-plugins/urxvt-perls/default.nix rename to pkgs/applications/misc/rxvt-unicode-plugins/urxvt-perls/default.nix index b976388ae2c..53bb938c333 100644 --- a/pkgs/applications/misc/rxvt_unicode-plugins/urxvt-perls/default.nix +++ b/pkgs/applications/misc/rxvt-unicode-plugins/urxvt-perls/default.nix @@ -2,26 +2,26 @@ stdenv.mkDerivation rec { pname = "urxvt-perls"; - version = "2.2"; + version = "2.3"; src = fetchFromGitHub { owner = "muennich"; repo = "urxvt-perls"; rev = version; - sha256 = "1cb0jbjmwfy2dlq2ny8wpc04k79jp3pz9qhbmgagsxs3sp1jg2hz"; + sha256 = "0xvwfw7965ghhd9g6rl6y6fgpd444l46rjqmlgg0rfjypbh6c0p1"; }; installPhase = '' mkdir -p $out/lib/urxvt/perl - cp clipboard \ - keyboard-select \ - url-select \ + cp keyboard-select $out/lib/urxvt/perl + cp deprecated/clipboard \ + deprecated/url-select \ $out/lib/urxvt/perl ''; meta = with stdenv.lib; { description = "Perl extensions for the rxvt-unicode terminal emulator"; - homepage = https://github.com/muennich/urxvt-perls; + homepage = "https://github.com/muennich/urxvt-perls"; license = licenses.gpl2; maintainers = with maintainers; [ abbradar ]; platforms = with platforms; unix; diff --git a/pkgs/applications/misc/rxvt-unicode-plugins/urxvt-resize-font/default.nix b/pkgs/applications/misc/rxvt-unicode-plugins/urxvt-resize-font/default.nix new file mode 100644 index 00000000000..a056e603f00 --- /dev/null +++ b/pkgs/applications/misc/rxvt-unicode-plugins/urxvt-resize-font/default.nix @@ -0,0 +1,27 @@ +{ stdenv, fetchFromGitHub }: + +stdenv.mkDerivation { + pname = "urxvt-resize-font"; + version = "2019-10-05"; + dontPatchShebangs = true; + + src = fetchFromGitHub { + owner = "simmel"; + repo = "urxvt-resize-font"; + rev = "e966a5d77264e9263bfc8a51e160fad24055776b"; + sha256 = "18ab3bsfdkzzh1n9fpi2al5bksvv2b7fjmvxpx6fzqcy4bc64vkh"; + }; + + installPhase = '' + mkdir -p $out/lib/urxvt/perl + cp resize-font $out/lib/urxvt/perl + ''; + + meta = with stdenv.lib; { + description = "URxvt Perl extension for resizing the font"; + homepage = "https://github.com/simmel/urxvt-resize-font"; + license = licenses.mit; + maintainers = with maintainers; [ rnhmjoj ]; + platforms = platforms.unix; + }; +} diff --git a/pkgs/applications/misc/rxvt_unicode-plugins/urxvt-tabbedex/default.nix b/pkgs/applications/misc/rxvt-unicode-plugins/urxvt-tabbedex/default.nix similarity index 90% rename from pkgs/applications/misc/rxvt_unicode-plugins/urxvt-tabbedex/default.nix rename to pkgs/applications/misc/rxvt-unicode-plugins/urxvt-tabbedex/default.nix index 2982c02cce9..71a55f9293c 100644 --- a/pkgs/applications/misc/rxvt_unicode-plugins/urxvt-tabbedex/default.nix +++ b/pkgs/applications/misc/rxvt-unicode-plugins/urxvt-tabbedex/default.nix @@ -17,7 +17,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Tabbed plugin for rxvt-unicode with many enhancements (mina86's fork)"; - homepage = https://github.com/mina86/urxvt-tabbedex; + homepage = "https://github.com/mina86/urxvt-tabbedex"; maintainers = with maintainers; [ abbradar ]; platforms = with platforms; unix; }; diff --git a/pkgs/applications/misc/rxvt_unicode-plugins/urxvt-theme-switch/default.nix b/pkgs/applications/misc/rxvt-unicode-plugins/urxvt-theme-switch/default.nix similarity index 92% rename from pkgs/applications/misc/rxvt_unicode-plugins/urxvt-theme-switch/default.nix rename to pkgs/applications/misc/rxvt-unicode-plugins/urxvt-theme-switch/default.nix index ba8ec3a6e72..5a84a9b472a 100644 --- a/pkgs/applications/misc/rxvt_unicode-plugins/urxvt-theme-switch/default.nix +++ b/pkgs/applications/misc/rxvt-unicode-plugins/urxvt-theme-switch/default.nix @@ -20,7 +20,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "urxvt plugin that allows to switch color themes during runtime"; - homepage = https://github.com/felixr/urxvt-theme-switch; + homepage = "https://github.com/felixr/urxvt-theme-switch"; license = "CCBYNC"; maintainers = with maintainers; [ ]; platforms = with platforms; unix; diff --git a/pkgs/applications/misc/rxvt_unicode-plugins/urxvt-vtwheel.nix b/pkgs/applications/misc/rxvt-unicode-plugins/urxvt-vtwheel/default.nix similarity index 85% rename from pkgs/applications/misc/rxvt_unicode-plugins/urxvt-vtwheel.nix rename to pkgs/applications/misc/rxvt-unicode-plugins/urxvt-vtwheel/default.nix index 2f2c2055803..aebbedacef6 100644 --- a/pkgs/applications/misc/rxvt_unicode-plugins/urxvt-vtwheel.nix +++ b/pkgs/applications/misc/rxvt-unicode-plugins/urxvt-vtwheel/default.nix @@ -2,7 +2,7 @@ stdenv.mkDerivation { - name = "rxvt_unicode-vtwheel-0.3.2"; + name = "rxvt-unicode-vtwheel-0.3.2"; src = fetchgit { url = "https://aur.archlinux.org/urxvt-vtwheel.git"; @@ -18,10 +18,10 @@ stdenv.mkDerivation { meta = with stdenv.lib; { description = "Pass mouse wheel commands to secondary screens (screen, less, nano, etc)"; - homepage = https://aur.archlinux.org/packages/urxvt-vtwheel; + homepage = "https://aur.archlinux.org/packages/urxvt-vtwheel"; license = licenses.mit; maintainers = with maintainers; [ danbst ]; platforms = with platforms; unix; }; -} \ No newline at end of file +} diff --git a/pkgs/applications/misc/rxvt-unicode/default.nix b/pkgs/applications/misc/rxvt-unicode/default.nix new file mode 100644 index 00000000000..6512f402ffb --- /dev/null +++ b/pkgs/applications/misc/rxvt-unicode/default.nix @@ -0,0 +1,88 @@ +{ stdenv, fetchurl, makeDesktopItem +, libX11, libXt, libXft, libXrender +, ncurses, fontconfig, freetype +, pkgconfig, gdk-pixbuf, perl +, perlSupport ? true +, gdkPixbufSupport ? true +, unicode3Support ? true +}: + +let + pname = "rxvt-unicode"; + version = "9.22"; + description = "A clone of the well-known terminal emulator rxvt"; + + desktopItem = makeDesktopItem { + name = pname; + exec = "urxvt"; + icon = "utilities-terminal"; + comment = description; + desktopName = "URxvt"; + genericName = pname; + categories = "System;TerminalEmulator;"; + }; +in + +with stdenv.lib; + +stdenv.mkDerivation { + name = "${pname}-unwrapped-${version}"; + inherit pname version; + + src = fetchurl { + url = "http://dist.schmorp.de/rxvt-unicode/Attic/rxvt-unicode-${version}.tar.bz2"; + sha256 = "1pddjn5ynblwfrdmskylrsxb9vfnk3w4jdnq2l8xn2pspkljhip9"; + }; + + buildInputs = + [ libX11 libXt libXft ncurses # required to build the terminfo file + fontconfig freetype pkgconfig libXrender + ] ++ optional perlSupport perl + ++ optional gdkPixbufSupport gdk-pixbuf; + + outputs = [ "out" "terminfo" ]; + + patches = [ + ./patches/9.06-font-width.patch + ./patches/256-color-resources.patch + ] ++ optional stdenv.isDarwin ./patches/makefile-phony.patch; + + + configureFlags = [ + "--with-terminfo=$terminfo/share/terminfo" + "--enable-256-color" + (enableFeature perlSupport "perl") + (enableFeature unicode3Support "unicode3") + ]; + + LDFLAGS = [ "-lfontconfig" "-lXrender" "-lpthread" ]; + CFLAGS = [ "-I${freetype.dev}/include/freetype2" ]; + + preConfigure = + '' + # without this the terminfo won't be compiled by tic, see man tic + mkdir -p $terminfo/share/terminfo + export TERMINFO=$terminfo/share/terminfo + '' + + stdenv.lib.optionalString perlSupport '' + # make urxvt find its perl file lib/perl5/site_perl + # is added to PERL5LIB automatically + mkdir -p $out/$(dirname ${perl.libPrefix}) + ln -s $out/lib/urxvt $out/${perl.libPrefix} + ''; + + postInstall = '' + mkdir -p $out/nix-support + echo "$terminfo" >> $out/nix-support/propagated-user-env-packages + cp -r ${desktopItem}/share/applications/ $out/share/ + ''; + + meta = { + inherit description; + homepage = "http://software.schmorp.de/pkg/rxvt-unicode.html"; + downloadPage = "http://dist.schmorp.de/rxvt-unicode/Attic/"; + maintainers = with maintainers; [ rnhmjoj ]; + platforms = platforms.unix; + license = licenses.gpl3; + }; +} diff --git a/pkgs/applications/misc/rxvt_unicode/rxvt-unicode-256-color-resources.patch b/pkgs/applications/misc/rxvt-unicode/patches/256-color-resources.patch similarity index 100% rename from pkgs/applications/misc/rxvt_unicode/rxvt-unicode-256-color-resources.patch rename to pkgs/applications/misc/rxvt-unicode/patches/256-color-resources.patch diff --git a/pkgs/applications/misc/rxvt_unicode/rxvt-unicode-9.06-font-width.patch b/pkgs/applications/misc/rxvt-unicode/patches/9.06-font-width.patch similarity index 100% rename from pkgs/applications/misc/rxvt_unicode/rxvt-unicode-9.06-font-width.patch rename to pkgs/applications/misc/rxvt-unicode/patches/9.06-font-width.patch diff --git a/pkgs/applications/misc/rxvt_unicode/rxvt-unicode-makefile-phony.patch b/pkgs/applications/misc/rxvt-unicode/patches/makefile-phony.patch similarity index 100% rename from pkgs/applications/misc/rxvt_unicode/rxvt-unicode-makefile-phony.patch rename to pkgs/applications/misc/rxvt-unicode/patches/makefile-phony.patch diff --git a/pkgs/applications/misc/rxvt-unicode/wrapper.nix b/pkgs/applications/misc/rxvt-unicode/wrapper.nix new file mode 100644 index 00000000000..38978799b5a --- /dev/null +++ b/pkgs/applications/misc/rxvt-unicode/wrapper.nix @@ -0,0 +1,58 @@ +{ callPackage +, symlinkJoin +, makeWrapper +, lib +, rxvt-unicode-unwrapped +, rxvt-unicode-plugins +, perlPackages +, configure ? { availablePlugins, ... }: + { plugins = builtins.attrValues availablePlugins; + extraDeps = [ ]; + perlDeps = [ ]; + } +}: + +let + availablePlugins = rxvt-unicode-plugins; + + # Transform the string "self" to the plugin itself. + # It's needed for plugins like bidi who depends on the perl + # package they provide themself. + mkPerlDeps = p: + let deps = p.perlPackages or [ ]; + in map (x: if x == "self" then p else x) deps; + + # The wrapper is called with a `configure` function + # that takes the urxvt plugins as input and produce + # the configuration of the wrapper: list of plugins, + # extra dependencies and perl dependencies. + # This provides simple way to customize urxvt using + # the `.override` mechanism. + wrapper = { configure, ... }: + let + config = configure { inherit availablePlugins; }; + plugins = config.plugins or (builtins.attrValues availablePlugins); + extraDeps = config.extraDeps or [ ]; + perlDeps = (config.perlDeps or [ ]) ++ lib.concatMap mkPerlDeps plugins; + in + symlinkJoin { + name = "rxvt-unicode-${rxvt-unicode-unwrapped.version}"; + + paths = [ rxvt-unicode-unwrapped ] ++ plugins ++ extraDeps; + + buildInputs = [ makeWrapper ]; + + postBuild = '' + wrapProgram $out/bin/urxvt \ + --prefix PERL5LIB : "${perlPackages.makePerlPath perlDeps}" \ + --suffix-each URXVT_PERL_LIB ':' "$out/lib/urxvt/perl" + wrapProgram $out/bin/urxvtd \ + --prefix PERL5LIB : "${perlPackages.makePerlPath perlDeps}" \ + --suffix-each URXVT_PERL_LIB ':' "$out/lib/urxvt/perl" + ''; + + passthru.plugins = plugins; + }; + +in + lib.makeOverridable wrapper { inherit configure; } diff --git a/pkgs/applications/misc/rxvt/default.nix b/pkgs/applications/misc/rxvt/default.nix index acdd21a1c21..c71973da13b 100644 --- a/pkgs/applications/misc/rxvt/default.nix +++ b/pkgs/applications/misc/rxvt/default.nix @@ -19,7 +19,7 @@ stdenv.mkDerivation rec { ''; meta = with stdenv.lib; { - homepage = http://rxvt.sourceforge.net/; + homepage = "http://rxvt.sourceforge.net/"; description = "Colour vt102 terminal emulator with less features and lower memory consumption"; longDescription = '' rxvt (acronym for our extended virtual terminal) is a terminal diff --git a/pkgs/applications/misc/rxvt_unicode/default.nix b/pkgs/applications/misc/rxvt_unicode/default.nix deleted file mode 100644 index 7c239a9b754..00000000000 --- a/pkgs/applications/misc/rxvt_unicode/default.nix +++ /dev/null @@ -1,72 +0,0 @@ -{ stdenv, fetchurl, makeDesktopItem, perlSupport ? true, libX11, libXt, libXft, - ncurses, perl, fontconfig, freetype, pkgconfig, libXrender, - gdkPixbufSupport ? true, gdk-pixbuf, unicode3Support ? true }: - -let - pname = "rxvt-unicode"; - version = "9.22"; - description = "A clone of the well-known terminal emulator rxvt"; - - desktopItem = makeDesktopItem { - name = pname; - exec = "urxvt"; - icon = "utilities-terminal"; - comment = description; - desktopName = "URxvt"; - genericName = pname; - categories = "System;TerminalEmulator;"; - }; -in - -stdenv.mkDerivation ({ - - name = "${pname}${if perlSupport then "-with-perl" else ""}${if unicode3Support then "-with-unicode3" else ""}-${version}"; - - src = fetchurl { - url = "http://dist.schmorp.de/rxvt-unicode/Attic/rxvt-unicode-${version}.tar.bz2"; - sha256 = "1pddjn5ynblwfrdmskylrsxb9vfnk3w4jdnq2l8xn2pspkljhip9"; - }; - - buildInputs = - [ libX11 libXt libXft ncurses /* required to build the terminfo file */ - fontconfig freetype pkgconfig libXrender ] - ++ stdenv.lib.optional perlSupport perl - ++ stdenv.lib.optional gdkPixbufSupport gdk-pixbuf; - - outputs = [ "out" "terminfo" ]; - - patches = [ - ./rxvt-unicode-9.06-font-width.patch - ./rxvt-unicode-256-color-resources.patch - ] - ++ stdenv.lib.optional stdenv.isDarwin ./rxvt-unicode-makefile-phony.patch; - - preConfigure = - '' - mkdir -p $terminfo/share/terminfo - configureFlags="--with-terminfo=$terminfo/share/terminfo --enable-256-color ${if perlSupport then "--enable-perl" else "--disable-perl"} ${if unicode3Support then "--enable-unicode3" else "--disable-unicode3"}"; - export TERMINFO=$terminfo/share/terminfo # without this the terminfo won't be compiled by tic, see man tic - NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -I${freetype.dev}/include/freetype2" - NIX_LDFLAGS="$NIX_LDFLAGS -lfontconfig -lXrender -lpthread " - '' - # make urxvt find its perl file lib/perl5/site_perl is added to PERL5LIB automatically - + stdenv.lib.optionalString perlSupport '' - mkdir -p $out/$(dirname ${perl.libPrefix}) - ln -s $out/lib/urxvt $out/${perl.libPrefix} - ''; - - postInstall = '' - mkdir -p $out/nix-support - echo "$terminfo" >> $out/nix-support/propagated-user-env-packages - cp -r ${desktopItem}/share/applications/ $out/share/ - ''; - - meta = with stdenv.lib; { - inherit description; - homepage = http://software.schmorp.de/pkg/rxvt-unicode.html; - downloadPage = "http://dist.schmorp.de/rxvt-unicode/Attic/"; - maintainers = with maintainers; [ rnhmjoj ]; - platforms = platforms.unix; - license = licenses.gpl3; - }; -}) diff --git a/pkgs/applications/misc/rxvt_unicode/wrapper.nix b/pkgs/applications/misc/rxvt_unicode/wrapper.nix deleted file mode 100644 index fd0860b3aae..00000000000 --- a/pkgs/applications/misc/rxvt_unicode/wrapper.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ symlinkJoin, rxvt_unicode, makeWrapper, plugins, perlPackages, perlDeps ? []}: - -let - rxvt_name = builtins.parseDrvName rxvt_unicode.name; - -in symlinkJoin { - name = "${rxvt_name.name}-with-plugins-${rxvt_name.version}"; - - paths = [ rxvt_unicode ] ++ plugins; - - buildInputs = [ makeWrapper ]; - - postBuild = '' - wrapProgram $out/bin/urxvt \ - --prefix PERL5LIB : "${perlPackages.makePerlPath perlDeps}" \ - --suffix-each URXVT_PERL_LIB ':' "$out/lib/urxvt/perl" - wrapProgram $out/bin/urxvtd \ - --prefix PERL5LIB : "${perlPackages.makePerlPath perlDeps}" \ - --suffix-each URXVT_PERL_LIB ':' "$out/lib/urxvt/perl" - ''; - - passthru.plugins = plugins; -} diff --git a/pkgs/applications/misc/safeeyes/default.nix b/pkgs/applications/misc/safeeyes/default.nix index 125170d36c2..f6bb7133d99 100644 --- a/pkgs/applications/misc/safeeyes/default.nix +++ b/pkgs/applications/misc/safeeyes/default.nix @@ -61,7 +61,7 @@ in buildPythonApplication rec { doCheck = false; # no tests meta = { - homepage = http://slgobinath.github.io/SafeEyes; + homepage = "http://slgobinath.github.io/SafeEyes"; description = "Protect your eyes from eye strain using this simple and beautiful, yet extensible break reminder. A Free and Open Source Linux alternative to EyeLeo"; license = lib.licenses.gpl3; maintainers = with lib.maintainers; [ srghma ]; diff --git a/pkgs/applications/misc/sakura/default.nix b/pkgs/applications/misc/sakura/default.nix index f646b473915..34a6142e83a 100644 --- a/pkgs/applications/misc/sakura/default.nix +++ b/pkgs/applications/misc/sakura/default.nix @@ -18,7 +18,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "A terminal emulator based on GTK and VTE"; - homepage = http://www.pleyades.net/david/projects/sakura; + homepage = "http://www.pleyades.net/david/projects/sakura"; license = licenses.gpl2; maintainers = with maintainers; [ astsmtl codyopel ]; platforms = platforms.linux; diff --git a/pkgs/applications/misc/sampler/default.nix b/pkgs/applications/misc/sampler/default.nix index a04b0dcbba6..0c5494f146f 100644 --- a/pkgs/applications/misc/sampler/default.nix +++ b/pkgs/applications/misc/sampler/default.nix @@ -2,16 +2,16 @@ buildGoModule rec { pname = "sampler"; - version = "1.0.3"; + version = "1.1.0"; src = fetchFromGitHub { owner = "sqshq"; repo = pname; rev = "v${version}"; - sha256 = "129vifb1y57vyqj9p23gq778jschndh2y2ingwvjz0a6lrm45vpf"; + sha256 = "1lanighxhnn28dfzils7i55zgxbw2abd6y723mq7x9wg1aa2bd0z"; }; - modSha256 = "0wgwnn50lrg6ix5ll2jdwi421wgqgsv4y9xd5hfj81kya3dxcbw0"; + modSha256 = "02ai193lpzsxdn1hpbndkfxdc88nyl4kcgbadhy122kgx13crcy8"; subPackages = [ "." ]; diff --git a/pkgs/applications/misc/sbagen/default.nix b/pkgs/applications/misc/sbagen/default.nix index 6f38ba5662b..821fbe35ca1 100644 --- a/pkgs/applications/misc/sbagen/default.nix +++ b/pkgs/applications/misc/sbagen/default.nix @@ -23,7 +23,7 @@ stdenv.mkDerivation rec { meta = { description = "Binaural sound generator"; - homepage = http://uazu.net/sbagen; + homepage = "http://uazu.net/sbagen"; license = "GPL"; platforms = [ "i686-linux" ]; }; diff --git a/pkgs/applications/misc/sc-im/default.nix b/pkgs/applications/misc/sc-im/default.nix index c95eba48bdf..6ee4695d171 100644 --- a/pkgs/applications/misc/sc-im/default.nix +++ b/pkgs/applications/misc/sc-im/default.nix @@ -33,7 +33,7 @@ stdenv.mkDerivation rec { ''; meta = with stdenv.lib; { - homepage = https://github.com/andmarti1424/sc-im; + homepage = "https://github.com/andmarti1424/sc-im"; description = "SC-IM - Spreadsheet Calculator Improvised - SC fork"; license = licenses.bsdOriginal; maintainers = [ ]; diff --git a/pkgs/applications/misc/sdcv/default.nix b/pkgs/applications/misc/sdcv/default.nix index 3cebcc0101f..997786fc107 100644 --- a/pkgs/applications/misc/sdcv/default.nix +++ b/pkgs/applications/misc/sdcv/default.nix @@ -22,7 +22,7 @@ stdenv.mkDerivation rec { NIX_CFLAGS_COMPILE = "-D__GNU_LIBRARY__"; meta = with stdenv.lib; { - homepage = https://dushistov.github.io/sdcv/; + homepage = "https://dushistov.github.io/sdcv/"; description = "Console version of StarDict"; maintainers = with maintainers; [ lovek323 ]; license = licenses.gpl2; diff --git a/pkgs/applications/misc/sent/default.nix b/pkgs/applications/misc/sent/default.nix index 9bbae33b3e4..fe8598e4915 100644 --- a/pkgs/applications/misc/sent/default.nix +++ b/pkgs/applications/misc/sent/default.nix @@ -24,7 +24,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "A simple plaintext presentation tool"; - homepage = https://tools.suckless.org/sent/; + homepage = "https://tools.suckless.org/sent/"; license = licenses.isc; platforms = platforms.linux; maintainers = with maintainers; [ pSub ]; diff --git a/pkgs/applications/misc/sequeler/default.nix b/pkgs/applications/misc/sequeler/default.nix index 4f8315f060a..070a81167ad 100644 --- a/pkgs/applications/misc/sequeler/default.nix +++ b/pkgs/applications/misc/sequeler/default.nix @@ -11,13 +11,13 @@ let in stdenv.mkDerivation rec { pname = "sequeler"; - version = "0.7.3"; + version = "0.7.9"; src = fetchFromGitHub { owner = "Alecaddd"; repo = pname; rev = "v${version}"; - sha256 = "16vc3v9qls9fxg9h8fsi67z68s4acl5hj14gbcrnqm7mf3kmk3aw"; + sha256 = "117gcc41rd24y5hpm3drqxfcfz52smpcr8w76xnykx8wb1ac50jf"; }; nativeBuildInputs = [ meson ninja pkgconfig vala gettext wrapGAppsHook python3 desktop-file-utils ]; @@ -29,6 +29,12 @@ in stdenv.mkDerivation rec { patchShebangs build-aux/meson_post_install.py ''; + passthru = { + updateScript = pantheon.updateScript { + attrPath = pname; + }; + }; + meta = with stdenv.lib; { description = "Friendly SQL Client"; longDescription = '' @@ -37,7 +43,7 @@ in stdenv.mkDerivation rec { editor with language recognition, and visualize SELECT results in a Gtk.Grid Widget. ''; - homepage = https://github.com/Alecaddd/sequeler; + homepage = "https://github.com/Alecaddd/sequeler"; license = licenses.gpl3; maintainers = [ maintainers.etu ] ++ pantheon.maintainers; platforms = platforms.linux; diff --git a/pkgs/applications/misc/sequelpro/default.nix b/pkgs/applications/misc/sequelpro/default.nix index e81c0b99264..16a11342d81 100644 --- a/pkgs/applications/misc/sequelpro/default.nix +++ b/pkgs/applications/misc/sequelpro/default.nix @@ -18,7 +18,7 @@ stdenv.mkDerivation { meta = { description = "MySQL database management for macOS"; - homepage = http://www.sequelpro.com/; + homepage = "http://www.sequelpro.com/"; license = stdenv.lib.licenses.mit; platforms = stdenv.lib.platforms.darwin; }; diff --git a/pkgs/applications/misc/sidequest/default.nix b/pkgs/applications/misc/sidequest/default.nix index 30aa45c14ff..3638a1d1880 100644 --- a/pkgs/applications/misc/sidequest/default.nix +++ b/pkgs/applications/misc/sidequest/default.nix @@ -1,7 +1,7 @@ { stdenv, lib, fetchurl, buildFHSUserEnv, makeDesktopItem, makeWrapper, atomEnv, libuuid, at-spi2-atk, icu, openssl, zlib }: let pname = "sidequest"; - version = "0.7.6"; + version = "0.8.7"; desktopItem = makeDesktopItem rec { name = "SideQuest"; @@ -16,7 +16,7 @@ src = fetchurl { url = "https://github.com/the-expanse/SideQuest/releases/download/v${version}/SideQuest-${version}.tar.xz"; - sha256 = "1yyba5495ydyyfl62pjd4hbga86k7f2a72ds2j2qzkinngyl14j8"; + sha256 = "1hbr6ml689zq4k3mzmn2xcn4r4dy717rgq3lgm32pzwgy5w92i2j"; }; buildInputs = [ makeWrapper ]; diff --git a/pkgs/applications/misc/sigal/default.nix b/pkgs/applications/misc/sigal/default.nix index 2b44b0398b5..c0e255a36e3 100644 --- a/pkgs/applications/misc/sigal/default.nix +++ b/pkgs/applications/misc/sigal/default.nix @@ -27,7 +27,7 @@ python3Packages.buildPythonApplication rec { meta = with lib; { description = "Yet another simple static gallery generator"; - homepage = http://sigal.saimon.org/en/latest/index.html; + homepage = "http://sigal.saimon.org/en/latest/index.html"; license = licenses.mit; maintainers = with maintainers; [ domenkozar matthiasbeyer ]; }; diff --git a/pkgs/applications/misc/simplenote/default.nix b/pkgs/applications/misc/simplenote/default.nix index 1829407705b..195437250a1 100644 --- a/pkgs/applications/misc/simplenote/default.nix +++ b/pkgs/applications/misc/simplenote/default.nix @@ -16,10 +16,10 @@ let pname = "simplenote"; - version = "1.11.0"; + version = "1.15.1"; sha256 = { - x86_64-linux = "1ljam1yfiy1lh6lrknrq7cdqpj1q7f655mxjiiwv3izp98qr1f8s"; + x86_64-linux = "1q1y5favj2ny0l2iq53vq39ns68zfr2z1plskxdg2d93jarvcr8x"; }.${system} or throwSystem; meta = with stdenv.lib; { @@ -87,6 +87,7 @@ let postFixup = '' makeWrapper $out/opt/Simplenote/simplenote $out/bin/simplenote \ + --prefix LD_LIBRARY_PATH : "${stdenv.lib.makeLibraryPath [ stdenv.cc.cc ] }" \ "''${gappsWrapperArgs[@]}" ''; }; diff --git a/pkgs/applications/misc/slade/default.nix b/pkgs/applications/misc/slade/default.nix index d2d5e9548a0..e93baa997c8 100644 --- a/pkgs/applications/misc/slade/default.nix +++ b/pkgs/applications/misc/slade/default.nix @@ -18,7 +18,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Doom editor"; - homepage = http://slade.mancubus.net/; + homepage = "http://slade.mancubus.net/"; license = licenses.gpl2; platforms = [ "x86_64-linux" "i686-linux" ]; maintainers = with maintainers; [ abbradar ]; diff --git a/pkgs/applications/misc/slade/git.nix b/pkgs/applications/misc/slade/git.nix index 9ee30d347b0..1eaf907b7ed 100644 --- a/pkgs/applications/misc/slade/git.nix +++ b/pkgs/applications/misc/slade/git.nix @@ -18,7 +18,7 @@ stdenv.mkDerivation { meta = with stdenv.lib; { description = "Doom editor"; - homepage = http://slade.mancubus.net/; + homepage = "http://slade.mancubus.net/"; license = licenses.gpl2Plus; platforms = [ "x86_64-linux" "i686-linux" ]; maintainers = with maintainers; [ ertes ]; diff --git a/pkgs/applications/misc/sleepyhead/default.nix b/pkgs/applications/misc/sleepyhead/default.nix index a3270929417..0753045cc4b 100644 --- a/pkgs/applications/misc/sleepyhead/default.nix +++ b/pkgs/applications/misc/sleepyhead/default.nix @@ -7,7 +7,7 @@ in stdenv.mkDerivation { inherit name; src = fetchgit { - url = https://gitlab.com/sleepyhead/sleepyhead-code.git; + url = "https://gitlab.com/sleepyhead/sleepyhead-code.git"; rev = "9e2329d8bca45693231b5e3dae80063717c24578"; sha256 = "0448z8gyaxpgpnksg34lzmffj36jdpm0ir4xxa5gvzagkx0wk07h"; }; @@ -29,7 +29,7 @@ in stdenv.mkDerivation { ''; meta = with stdenv.lib; { - homepage = https://sleepyhead.jedimark.net/; + homepage = "https://sleepyhead.jedimark.net/"; description = "Review and explore data produced by CPAP and related machines"; longDescription = '' SleepyHead is cross platform, opensource sleep tracking program for reviewing CPAP and Oximetry data, which are devices used in the treatment of Sleep Disorders like Obstructive Sleep Apnea. diff --git a/pkgs/applications/misc/slic3r/default.nix b/pkgs/applications/misc/slic3r/default.nix index 8dbd0cd5776..25019f76545 100644 --- a/pkgs/applications/misc/slic3r/default.nix +++ b/pkgs/applications/misc/slic3r/default.nix @@ -82,7 +82,7 @@ stdenv.mkDerivation rec { instructions for your 3D printer. It cuts the model into horizontal slices (layers), generates toolpaths to fill them and calculates the amount of material to be extruded.''; - homepage = http://slic3r.org/; + homepage = "https://slic3r.org/"; license = licenses.agpl3; platforms = platforms.linux; maintainers = with maintainers; [ bjornfor the-kenny ]; diff --git a/pkgs/applications/misc/slmenu/default.nix b/pkgs/applications/misc/slmenu/default.nix index 193bcf205f5..55025621fc7 100644 --- a/pkgs/applications/misc/slmenu/default.nix +++ b/pkgs/applications/misc/slmenu/default.nix @@ -1,6 +1,6 @@ {stdenv, fetchhg}: let - s = + s = rec { baseName = "slmenu"; version = "hg-${date}"; @@ -19,7 +19,7 @@ stdenv.mkDerivation { src = fetchhg { inherit (s) url sha256; }; - makeFlags = ''PREFIX=$(out)''; + makeFlags = [ "PREFIX=$(out)" ]; meta = { inherit (s) version; description = ''A console dmenu-like tool''; diff --git a/pkgs/applications/misc/slstatus/default.nix b/pkgs/applications/misc/slstatus/default.nix index bfb3d010a3c..5c13cbf8669 100644 --- a/pkgs/applications/misc/slstatus/default.nix +++ b/pkgs/applications/misc/slstatus/default.nix @@ -7,7 +7,7 @@ stdenv.mkDerivation rec { version = "unstable-2018-04-16"; src = fetchgit { - url = https://git.suckless.org/slstatus; + url = "https://git.suckless.org/slstatus"; rev = "97ef7c2a1d67bb2c9c379e657fbc8e35acd6aafb"; sha256 = "1777hgl10imk0l2sgnqgbkfchv1mpxrd82ninzwp7f1rgwchz36v"; }; @@ -21,7 +21,7 @@ stdenv.mkDerivation rec { installFlags = [ "PREFIX=$(out)" ]; meta = { - homepage = https://tools.suckless.org/slstatus/; + homepage = "https://tools.suckless.org/slstatus/"; description = "status monitor for window managers that use WM_NAME like dwm"; license = licenses.isc; maintainers = with maintainers; [ geistesk ]; diff --git a/pkgs/applications/misc/solaar/default.nix b/pkgs/applications/misc/solaar/default.nix index 722b0bc5077..d2a883c295d 100644 --- a/pkgs/applications/misc/solaar/default.nix +++ b/pkgs/applications/misc/solaar/default.nix @@ -39,7 +39,7 @@ python3Packages.buildPythonApplication rec { To be able to use it, make sure you have access to /dev/hidraw* files. ''; license = licenses.gpl2; - homepage = https://pwr-solaar.github.io/Solaar/; + homepage = "https://pwr-solaar.github.io/Solaar/"; platforms = platforms.linux; maintainers = with maintainers; [ spinus ysndr ]; }; diff --git a/pkgs/applications/misc/spacefm/default.nix b/pkgs/applications/misc/spacefm/default.nix index 9550a8d4fd7..45dc487c8ed 100644 --- a/pkgs/applications/misc/spacefm/default.nix +++ b/pkgs/applications/misc/spacefm/default.nix @@ -13,6 +13,8 @@ stdenv.mkDerivation rec { sha256 = "089r6i40lxcwzp60553b18f130asspnzqldlpii53smz52kvpirx"; }; + patches = [ ./glibc-fix.patch ]; + configureFlags = [ "--with-bash-path=${pkgs.bash}/bin/bash" ]; @@ -45,7 +47,7 @@ stdenv.mkDerivation rec { with built-in VFS, udev- or HAL-based device manager, customizable menu system, and bash integration ''; - homepage = http://ignorantguru.github.io/spacefm/; + homepage = "http://ignorantguru.github.io/spacefm/"; platforms = platforms.linux; license = licenses.gpl3Plus; maintainers = with maintainers; [ jagajaga obadz ]; diff --git a/pkgs/applications/misc/spacefm/glibc-fix.patch b/pkgs/applications/misc/spacefm/glibc-fix.patch new file mode 100644 index 00000000000..b8e9f1e9195 --- /dev/null +++ b/pkgs/applications/misc/spacefm/glibc-fix.patch @@ -0,0 +1,12 @@ +diff --git a/src/main.c b/src/main.c +index 27f5614..2b45708 100644 +--- a/src/main.c ++++ b/src/main.c +@@ -23,6 +23,7 @@ + #include + #include + #include ++#include + + #include + diff --git a/pkgs/applications/misc/sqliteman/default.nix b/pkgs/applications/misc/sqliteman/default.nix index 103075024dd..27d5610956d 100644 --- a/pkgs/applications/misc/sqliteman/default.nix +++ b/pkgs/applications/misc/sqliteman/default.nix @@ -25,7 +25,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "A simple but powerful Sqlite3 GUI database manager"; - homepage = http://sqliteman.yarpen.cz/; + homepage = "http://sqliteman.yarpen.cz/"; license = licenses.gpl2Plus; platforms = platforms.linux; maintainers = [ maintainers.eikek ]; diff --git a/pkgs/applications/misc/ssocr/default.nix b/pkgs/applications/misc/ssocr/default.nix index bb1655b4463..c52573785ef 100644 --- a/pkgs/applications/misc/ssocr/default.nix +++ b/pkgs/applications/misc/ssocr/default.nix @@ -17,7 +17,7 @@ stdenv.mkDerivation { meta = with stdenv.lib; { description = "Seven Segment Optical Character Recognition"; - homepage = https://github.com/auerswal/ssocr; + homepage = "https://github.com/auerswal/ssocr"; license = licenses.gpl3; maintainers = [ maintainers.kroell ]; }; diff --git a/pkgs/applications/misc/ssw/default.nix b/pkgs/applications/misc/ssw/default.nix new file mode 100644 index 00000000000..24b7953fe3d --- /dev/null +++ b/pkgs/applications/misc/ssw/default.nix @@ -0,0 +1,21 @@ +{ stdenv, fetchurl, pkg-config, gtk3 }: + +stdenv.mkDerivation rec { + pname = "ssw"; + version = "0.3"; + + src = fetchurl { + url = "https://alpha.gnu.org/gnu/ssw/spread-sheet-widget-${version}.tar.gz"; + sha256 = "1h93yyh2by6yrmkwqg38nd5knids05k5nqzcihc1hdwgzg3c4b8y"; + }; + + nativeBuildInputs = [ pkg-config ]; + buildInputs = [ gtk3 ]; + + meta = with stdenv.lib; { + homepage = "https://www.gnu.org/software/ssw/"; + license = licenses.gpl3; + description = "GNU Spread Sheet Widget"; + platforms = platforms.linux; + }; +} diff --git a/pkgs/applications/misc/st/default.nix b/pkgs/applications/misc/st/default.nix index 47d7279a47f..33924bdb7be 100644 --- a/pkgs/applications/misc/st/default.nix +++ b/pkgs/applications/misc/st/default.nix @@ -13,8 +13,9 @@ stdenv.mkDerivation rec { inherit patches; - configFile = optionalString (conf!=null) (writeText "config.def.h" conf); - preBuild = optionalString (conf!=null) "cp ${configFile} config.def.h"; + prePatch = optionalString (conf != null) '' + cp ${writeText "config.def.h" conf} config.def.h + ''; nativeBuildInputs = [ pkgconfig ncurses ]; buildInputs = [ libX11 libXft ] ++ extraLibs; @@ -24,7 +25,7 @@ stdenv.mkDerivation rec { ''; meta = { - homepage = https://st.suckless.org/; + homepage = "https://st.suckless.org/"; description = "Simple Terminal for X from Suckless.org Community"; license = licenses.mit; maintainers = with maintainers; [andsild]; diff --git a/pkgs/applications/misc/st/xst.nix b/pkgs/applications/misc/st/xst.nix index 9407243c6a2..3e29abee5d6 100644 --- a/pkgs/applications/misc/st/xst.nix +++ b/pkgs/applications/misc/st/xst.nix @@ -23,7 +23,7 @@ in stdenv.mkDerivation { ''; meta = { - homepage = https://github.com/neeasade/xst; + homepage = "https://github.com/neeasade/xst"; description = "Simple terminal fork that can load config from Xresources"; license = licenses.mit; maintainers = [ maintainers.vyp ]; diff --git a/pkgs/applications/misc/stag/default.nix b/pkgs/applications/misc/stag/default.nix index ebb50e685da..6b4bf194630 100644 --- a/pkgs/applications/misc/stag/default.nix +++ b/pkgs/applications/misc/stag/default.nix @@ -4,7 +4,7 @@ stdenv.mkDerivation { name = "stag-1.0"; src = fetchgit { - url = https://github.com/seenaburns/stag.git; + url = "https://github.com/seenaburns/stag.git"; rev = "90e2964959ea8242349250640d24cee3d1966ad6"; sha256 = "1yrzjhcwrxrxq5jj695wvpgb0pz047m88yq5n5ymkcw5qr78fy1v"; }; @@ -16,7 +16,7 @@ stdenv.mkDerivation { ''; meta = { - homepage = https://github.com/seenaburns/stag; + homepage = "https://github.com/seenaburns/stag"; description = "Terminal streaming bar graph passed through stdin"; license = stdenv.lib.licenses.bsdOriginal; maintainers = [ stdenv.lib.maintainers.matthiasbeyer ]; diff --git a/pkgs/applications/misc/stog/default.nix b/pkgs/applications/misc/stog/default.nix index 8c47de3afac..038d04adeaa 100644 --- a/pkgs/applications/misc/stog/default.nix +++ b/pkgs/applications/misc/stog/default.nix @@ -22,7 +22,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "XML documents and web site compiler"; - homepage = https://www.good-eris.net/stog; + homepage = "https://www.good-eris.net/stog"; license = licenses.lgpl3; platforms = ocaml.meta.platforms or []; maintainers = with maintainers; [ regnat ]; diff --git a/pkgs/applications/misc/stretchly/default.nix b/pkgs/applications/misc/stretchly/default.nix index 75f3be85dad..87e8316c2c4 100644 --- a/pkgs/applications/misc/stretchly/default.nix +++ b/pkgs/applications/misc/stretchly/default.nix @@ -1,177 +1,38 @@ -{ GConf -, alsaLib -, at-spi2-atk -, at-spi2-core -, atk -, buildFHSUserEnv -, cairo +{ stdenv, lib, fetchurl, makeWrapper, wrapGAppsHook, electron , common-updater-scripts -, coreutils -, cups -, dbus -, expat -, fetchurl -, fontconfig -, gdk-pixbuf -, glib -, gtk2 -, gtk3 -, lib -, libX11 -, libXScrnSaver -, libXcomposite -, libXcursor -, libXdamage -, libXext -, libXfixes -, libXi -, libXrandr -, libXrender -, libXtst -, libappindicator -, libdrm -, libnotify -, libpciaccess -, libpng12 -, libuuid -, libxcb -, nspr -, nss -, pango -, pciutils -, pulseaudio -, runtimeShell -, stdenv -, udev -, wrapGAppsHook -, writeScript -, file +, writeShellScript }: -let - libs = [ - GConf - alsaLib - at-spi2-atk - at-spi2-core - atk - cairo - cups - dbus - expat - fontconfig - gdk-pixbuf - glib - gtk2 - gtk3 - libX11 - libXScrnSaver - libXcomposite - libXcursor - libXdamage - libXext - libXfixes - libXi - libXrandr - libXrender - libXtst - libappindicator - libdrm - libnotify - libpciaccess - libpng12 - libuuid - libxcb - nspr - nss - pango - pciutils - pulseaudio - stdenv.cc.cc.lib - udev +stdenv.mkDerivation rec { + pname = "stretchly"; + version = "0.21.1"; + + src = fetchurl { + url = "https://github.com/hovancik/stretchly/releases/download/v${version}/stretchly-${version}.tar.xz"; + sha256 = "0776pywyqylwd33m85l4wdr89x0q9xkrjgliag10fp1bswz844lf"; + }; + + nativeBuildInputs = [ + wrapGAppsHook ]; - libPath = lib.makeLibraryPath libs; + installPhase = '' + runHook preInstall - stretchly = - stdenv.mkDerivation rec { - pname = "stretchly"; - version = "0.21.0"; + mkdir -p $out/bin $out/share/${pname}/ + mv resources/app.asar $out/share/${pname}/ - src = fetchurl { - url = "https://github.com/hovancik/stretchly/releases/download/v${version}/stretchly-${version}.tar.xz"; - sha256 = "1gyyr22xq8s4miiacs8wqhp7lxnwvkvlwhngnq8671l62s6iyjzl"; - }; + makeWrapper ${electron}/bin/electron $out/bin/${pname} \ + --add-flags $out/share/${pname}/app.asar \ + "''${gappsWrapperArgs[@]}" \ + --prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath [ stdenv.cc.cc.lib ]}" - nativeBuildInputs = [ - wrapGAppsHook - coreutils - ]; + runHook postInstall + ''; - buildInputs = libs; - - dontPatchELF = true; - dontBuild = true; - dontConfigure = true; - - installPhase = '' - mkdir -p $out/bin $out/lib/stretchly - cp -r ./* $out/lib/stretchly/ - ln -s $out/lib/stretchly/stretchly $out/bin/ - ''; - - preFixup = '' - patchelf --set-rpath "${libPath}" $out/lib/stretchly/libffmpeg.so - patchelf --set-rpath "${libPath}" $out/lib/stretchly/libEGL.so - patchelf --set-rpath "${libPath}" $out/lib/stretchly/libGLESv2.so - patchelf --set-rpath "${libPath}" $out/lib/stretchly/swiftshader/libEGL.so - patchelf --set-rpath "${libPath}" $out/lib/stretchly/swiftshader/libGLESv2.so - - patchelf \ - --set-rpath "$out/lib/stretchly:${libPath}" \ - --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ - $out/lib/stretchly/stretchly - - patchelf \ - --set-rpath "$out/lib/stretchly:${libPath}" \ - --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ - $out/lib/stretchly/chrome-sandbox - ''; - - meta = with stdenv.lib; { - description = "A break time reminder app"; - longDescription = '' - stretchly is a cross-platform electron app that reminds you to take - breaks when working on your computer. By default, it runs in your tray - and displays a reminder window containing an idea for a microbreak for 20 - seconds every 10 minutes. Every 30 minutes, it displays a window - containing an idea for a longer 5 minute break. - ''; - homepage = https://hovancik.net/stretchly; - downloadPage = https://hovancik.net/stretchly/downloads/; - license = licenses.bsd2; - maintainers = with maintainers; [ cdepillabout ]; - platforms = platforms.linux; - }; - }; - -in - -buildFHSUserEnv { - inherit (stretchly) meta; - - name = "stretchly"; - - targetPkgs = pkgs: [ - stretchly - ]; - - runScript = "stretchly"; passthru = { - updateScript = writeScript "update-stretchly" '' - #!${runtimeShell} - + updateScript = writeShellScript "update-stretchly" '' set -eu -o pipefail # get the latest release version @@ -179,9 +40,23 @@ buildFHSUserEnv { echo "updating to $latest_version..." - ${common-updater-scripts}/bin/update-source-version stretchly.passthru.stretchlyWrapped "$latest_version" + ${common-updater-scripts}/bin/update-source-version stretchly "$latest_version" ''; + }; - stretchlyWrapped = stretchly; + meta = with stdenv.lib; { + description = "A break time reminder app"; + longDescription = '' + stretchly is a cross-platform electron app that reminds you to take + breaks when working on your computer. By default, it runs in your tray + and displays a reminder window containing an idea for a microbreak for 20 + seconds every 10 minutes. Every 30 minutes, it displays a window + containing an idea for a longer 5 minute break. + ''; + homepage = "https://hovancik.net/stretchly"; + downloadPage = "https://hovancik.net/stretchly/downloads/"; + license = licenses.bsd2; + maintainers = with maintainers; [ cdepillabout ]; + platforms = platforms.linux; }; } diff --git a/pkgs/applications/misc/stupidterm/default.nix b/pkgs/applications/misc/stupidterm/default.nix index a3247b29fb8..0a6e947f15c 100644 --- a/pkgs/applications/misc/stupidterm/default.nix +++ b/pkgs/applications/misc/stupidterm/default.nix @@ -15,7 +15,7 @@ stdenv.mkDerivation { sha256 = "1f73wvqqvj5pr3fvb7jjc4bi1iwgkkknz24k8n69mdb75jnfjipp"; }; - makeFlags = "PKGCONFIG=${pkgconfig}/bin/pkg-config binary=stupidterm"; + makeFlags = [ "PKGCONFIG=${pkgconfig}/bin/pkg-config" "binary=stupidterm" ]; installPhase = '' install -D stupidterm $out/bin/stupidterm @@ -28,7 +28,7 @@ stdenv.mkDerivation { meta = with stdenv.lib; { description = "Simple wrapper around the VTE terminal emulator widget for GTK"; - homepage = https://github.com/esmil/stupidterm; + homepage = "https://github.com/esmil/stupidterm"; license = licenses.lgpl3Plus; maintainers = [ maintainers.etu ]; platforms = platforms.linux; diff --git a/pkgs/applications/misc/styx/default.nix b/pkgs/applications/misc/styx/default.nix index 340b59d5ff2..67f48d67f80 100644 --- a/pkgs/applications/misc/styx/default.nix +++ b/pkgs/applications/misc/styx/default.nix @@ -63,8 +63,8 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Nix based static site generator"; maintainers = with maintainers; [ ericsagnes ]; - homepage = https://styx-static.github.io/styx-site/; - downloadPage = https://github.com/styx-static/styx/; + homepage = "https://styx-static.github.io/styx-site/"; + downloadPage = "https://github.com/styx-static/styx/"; platforms = platforms.all; license = licenses.mit; }; diff --git a/pkgs/applications/misc/subsurface/0001-core-fix-libgit-ifdef-to-handle-libgit2-v1.0-and-onw.patch b/pkgs/applications/misc/subsurface/0001-core-fix-libgit-ifdef-to-handle-libgit2-v1.0-and-onw.patch new file mode 100644 index 00000000000..027e3f493e1 --- /dev/null +++ b/pkgs/applications/misc/subsurface/0001-core-fix-libgit-ifdef-to-handle-libgit2-v1.0-and-onw.patch @@ -0,0 +1,41 @@ +From dfa4bcafec4425659a409550085417af3c5c787b Mon Sep 17 00:00:00 2001 +From: Florian Klink +Date: Sat, 11 Apr 2020 12:38:38 +0200 +Subject: [PATCH] core: fix libgit ifdef to handle libgit2 v1.0 and onwards + +Conditional code for older libgit versions was removed in +https://github.com/Subsurface-divelog/subsurface/pull/2737, +but it's a non-trivial backport, and master currently isn't really ready +for a release. + +So instead ship a patch fixing the one broken libgit2 conditional until +a 4.10 release has been made. + +Note the inverted logic - the if branch now handles the old libgit +condition, and the else branch the newer versions, consistent with how +it's done in the rest of the subsurface codebase. +--- + core/git-access.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/core/git-access.c b/core/git-access.c +index 3688cb90c..9997fc8fd 100644 +--- a/core/git-access.c ++++ b/core/git-access.c +@@ -359,10 +359,10 @@ static int try_to_git_merge(git_repository *repo, git_reference **local_p, git_r + } + + git_merge_init_options(&merge_options, GIT_MERGE_OPTIONS_VERSION); +-#if !LIBGIT2_VER_MAJOR && LIBGIT2_VER_MINOR > 23 +- merge_options.flags = GIT_MERGE_FIND_RENAMES; +-#else ++#if !LIBGIT2_VER_MAJOR && LIBGIT2_VER_MINOR <= 22 + merge_options.tree_flags = GIT_MERGE_TREE_FIND_RENAMES; ++#else ++ merge_options.flags = GIT_MERGE_FIND_RENAMES; + #endif + merge_options.file_favor = GIT_MERGE_FILE_FAVOR_UNION; + merge_options.rename_threshold = 100; +-- +2.25.1 + diff --git a/pkgs/applications/misc/subsurface/default.nix b/pkgs/applications/misc/subsurface/default.nix index 960b7b9eeef..d262fb74c4b 100644 --- a/pkgs/applications/misc/subsurface/default.nix +++ b/pkgs/applications/misc/subsurface/default.nix @@ -4,16 +4,22 @@ }: let - version = "4.8.2"; + version = "4.9.3"; + + subsurfaceSrc = (fetchFromGitHub { + owner = "Subsurface-divelog"; + repo = "subsurface"; + rev = "v${version}"; + sha256 = "1i07f7appifx9j205x5a7ng01wsipxr6n9a3692pm60jli2nsir5"; + fetchSubmodules = true; + }); libdc = stdenv.mkDerivation { pname = "libdivecomputer-ssrf"; inherit version; - src = fetchurl { - url = "https://subsurface-divelog.org/downloads/libdivecomputer-subsurface-branch-${version}.tgz"; - sha256 = "167qan59raibmilkc574gdqxfjg2f5ww2frn86xzk2kn4qg8190w"; - }; + src = subsurfaceSrc; + sourceRoot = "source/libdivecomputer"; nativeBuildInputs = [ autoreconfHook ]; @@ -22,7 +28,7 @@ let enableParallelBuilding = true; meta = with stdenv.lib; { - homepage = http://www.libdivecomputer.org; + homepage = "http://www.libdivecomputer.org"; description = "A cross-platform and open source library for communication with dive computers from various manufacturers"; maintainers = with maintainers; [ mguentner ]; license = licenses.lgpl21; @@ -70,10 +76,10 @@ in stdenv.mkDerivation { pname = "subsurface"; inherit version; - src = fetchurl { - url = "https://subsurface-divelog.org/downloads/Subsurface-${version}.tgz"; - sha256 = "1fzrq6rqb6pzs36wxar2453cl509dqpcy9w7nq4gw7b1v2331wfy"; - }; + src = subsurfaceSrc; + + # remove with the 4.10 release + patches = [ ./0001-core-fix-libgit-ifdef-to-handle-libgit2-v1.0-and-onw.patch ]; buildInputs = [ libdc googlemaps @@ -100,7 +106,7 @@ in stdenv.mkDerivation { conveniently be entered using a map interface), logging of equipment used and names of other divers, and lets users rate dives and provide additional notes. ''; - homepage = https://subsurface-divelog.org; + homepage = "https://subsurface-divelog.org"; license = licenses.gpl2; maintainers = with maintainers; [ mguentner ]; platforms = platforms.all; diff --git a/pkgs/applications/misc/super_user_spark/default.nix b/pkgs/applications/misc/super_user_spark/default.nix index 8102375479b..dd1218282d8 100644 --- a/pkgs/applications/misc/super_user_spark/default.nix +++ b/pkgs/applications/misc/super_user_spark/default.nix @@ -27,6 +27,6 @@ mkDerivation { jailbreak = true; description = "Configure your dotfile deployment with a DSL"; license = stdenv.lib.licenses.mit; - homepage = https://github.com/NorfairKing/super-user-spark; + homepage = "https://github.com/NorfairKing/super-user-spark"; maintainers = [ stdenv.lib.maintainers.badi ]; } diff --git a/pkgs/applications/misc/sweethome3d/default.nix b/pkgs/applications/misc/sweethome3d/default.nix index 76a62d1762c..7f094607859 100644 --- a/pkgs/applications/misc/sweethome3d/default.nix +++ b/pkgs/applications/misc/sweethome3d/default.nix @@ -59,7 +59,7 @@ let dontStrip = true; meta = { - homepage = http://www.sweethome3d.com/index.jsp; + homepage = "http://www.sweethome3d.com/index.jsp"; inherit description; inherit license; maintainers = [ stdenv.lib.maintainers.edwtjo ]; diff --git a/pkgs/applications/misc/sweethome3d/editors.nix b/pkgs/applications/misc/sweethome3d/editors.nix index 1d3f1a41e16..ec759572443 100644 --- a/pkgs/applications/misc/sweethome3d/editors.nix +++ b/pkgs/applications/misc/sweethome3d/editors.nix @@ -47,7 +47,7 @@ let dontStrip = true; meta = { - homepage = http://www.sweethome3d.com/index.jsp; + homepage = "http://www.sweethome3d.com/index.jsp"; inherit description; inherit license; maintainers = [ stdenv.lib.maintainers.edwtjo ]; diff --git a/pkgs/applications/misc/synapse/default.nix b/pkgs/applications/misc/synapse/default.nix index c12f5b17679..751c0a48f5b 100644 --- a/pkgs/applications/misc/synapse/default.nix +++ b/pkgs/applications/misc/synapse/default.nix @@ -29,7 +29,7 @@ in stdenv.mkDerivation rec { the Zeitgeist engine ''; description = "Semantic launcher to start applications and find relevant files"; - homepage = https://launchpad.net/synapse-project; + homepage = "https://launchpad.net/synapse-project"; license = licenses.gpl3; maintainers = with maintainers; [ mahe ]; platforms = with platforms; all; diff --git a/pkgs/applications/misc/syncthing-tray/default.nix b/pkgs/applications/misc/syncthing-tray/default.nix index a07fe0c7510..38826b7735f 100644 --- a/pkgs/applications/misc/syncthing-tray/default.nix +++ b/pkgs/applications/misc/syncthing-tray/default.nix @@ -20,7 +20,7 @@ buildGoPackage rec { meta = with stdenv.lib; { description = "Simple application tray for syncthing"; - homepage = https://github.com/alex2108/syncthing-tray; + homepage = "https://github.com/alex2108/syncthing-tray"; license = licenses.mit; maintainers = with maintainers; [ nickhu ]; platforms = platforms.all; diff --git a/pkgs/applications/misc/syncthingtray/default.nix b/pkgs/applications/misc/syncthingtray/default.nix index 857dcfaf69f..16bfdfb9a03 100644 --- a/pkgs/applications/misc/syncthingtray/default.nix +++ b/pkgs/applications/misc/syncthingtray/default.nix @@ -20,14 +20,14 @@ }: mkDerivation rec { - version = "0.10.3"; + version = "0.10.8"; pname = "syncthingtray"; src = fetchFromGitHub { owner = "Martchus"; repo = "syncthingtray"; rev = "v${version}"; - sha256 = "12s1v65h4z051k4gi1b5f3z4hpbgqnhkjnz2xv5bdwhs24zxrrif"; + sha256 = "1g27v109m0ar090b340x6lsrzfp85hskcr3kapc2rgdhaa0mygpd"; }; buildInputs = [ qtbase cpp-utilities qtutilities ] diff --git a/pkgs/applications/misc/synergy/build-tests.patch b/pkgs/applications/misc/synergy/build-tests.patch new file mode 100644 index 00000000000..ab08195e794 --- /dev/null +++ b/pkgs/applications/misc/synergy/build-tests.patch @@ -0,0 +1,97 @@ +From 9c2278dad498b8e4040f30c80cf65b3a089ba218 Mon Sep 17 00:00:00 2001 +From: talyz +Date: Fri, 14 Feb 2020 16:26:36 +0100 +Subject: [PATCH] Build tests again + +The tests were accidentally disabled in +688095d0a7d22704b5c3282bc68b41ceca42ab7e. Since then, the code has +drifted slightly: the synergy lib has been renamed from synergy to +synlib in 4263fd17177d7717b04ac6d6ec62efa2f657ed74 and the curl +dependency was dropped in 491bb2de000245a943b8298462c4a9d8f34c9a44. + +This reenables the tests, targets the right lib and removes the +obsolete test. +--- + src/CMakeLists.txt | 2 + + src/test/integtests/CMakeLists.txt | 2 +- + .../integtests/arch/ArchInternetTests.cpp | 37 ------------------- + src/test/unittests/CMakeLists.txt | 2 +- + 4 files changed, 4 insertions(+), 39 deletions(-) + delete mode 100644 src/test/integtests/arch/ArchInternetTests.cpp + +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index ab63a066..fee080ab 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -22,3 +22,5 @@ add_subdirectory(cmd) + if (SYNERGY_BUILD_LEGACY_GUI) + add_subdirectory(gui) + endif (SYNERGY_BUILD_LEGACY_GUI) ++ ++add_subdirectory(test) +diff --git a/src/test/integtests/CMakeLists.txt b/src/test/integtests/CMakeLists.txt +index f39968a3..096ba3d5 100644 +--- a/src/test/integtests/CMakeLists.txt ++++ b/src/test/integtests/CMakeLists.txt +@@ -68,4 +68,4 @@ endif() + + add_executable(integtests ${sources}) + target_link_libraries(integtests +- arch base client common io ipc mt net platform server synergy gtest gmock ${libs} ${OPENSSL_LIBS}) ++ arch base client common io ipc mt net platform server synlib gtest gmock ${libs} ${OPENSSL_LIBS}) +diff --git a/src/test/integtests/arch/ArchInternetTests.cpp b/src/test/integtests/arch/ArchInternetTests.cpp +deleted file mode 100644 +index 95823e9f..00000000 +--- a/src/test/integtests/arch/ArchInternetTests.cpp ++++ /dev/null +@@ -1,37 +0,0 @@ +-/* +- * synergy -- mouse and keyboard sharing utility +- * Copyright (C) 2014-2016 Symless Ltd. +- * +- * This package is free software; you can redistribute it and/or +- * modify it under the terms of the GNU General Public License +- * found in the file LICENSE that should have accompanied this file. +- * +- * This package is distributed in the hope that it will be useful, +- * but WITHOUT ANY WARRANTY; without even the implied warranty of +- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +- * GNU General Public License for more details. +- * +- * You should have received a copy of the GNU General Public License +- * along with this program. If not, see . +- */ +- +-#include "arch/Arch.h" +- +-#include "test/global/gtest.h" +- +-#define TEST_URL "https://symless.com/tests/?testString" +-//#define TEST_URL "http://localhost/synergy/tests/?testString" +- +-TEST(ArchInternetTests, get) +-{ +- ARCH_INTERNET internet; +- String result = internet.get(TEST_URL); +- ASSERT_EQ("Hello world!", result); +-} +- +-TEST(ArchInternetTests, urlEncode) +-{ +- ARCH_INTERNET internet; +- String result = internet.urlEncode("hello=+&world"); +- ASSERT_EQ("hello%3D%2B%26world", result); +-} +diff --git a/src/test/unittests/CMakeLists.txt b/src/test/unittests/CMakeLists.txt +index 54131eb2..46307e90 100644 +--- a/src/test/unittests/CMakeLists.txt ++++ b/src/test/unittests/CMakeLists.txt +@@ -68,4 +68,4 @@ endif() + + add_executable(unittests ${sources}) + target_link_libraries(unittests +- arch base client server common io net platform server synergy mt ipc gtest gmock shared ${libs} ${OPENSSL_LIBS}) ++ arch base client server common io net platform server synlib mt ipc gtest gmock shared ${libs} ${OPENSSL_LIBS}) +-- +2.25.0 + diff --git a/pkgs/applications/misc/synergy/default.nix b/pkgs/applications/misc/synergy/default.nix index 377d83e5962..bb922f3ca5b 100644 --- a/pkgs/applications/misc/synergy/default.nix +++ b/pkgs/applications/misc/synergy/default.nix @@ -1,85 +1,79 @@ -{ stdenv, lib, fetchFromGitHub, fetchpatch, fetchurl, cmake, xlibsWrapper +{ stdenv, lib, fetchFromGitHub, cmake, openssl, qttools , ApplicationServices, Carbon, Cocoa, CoreServices, ScreenSaver -, libX11, libXi, libXtst, libXrandr, xinput, curl, openssl, unzip }: +, xlibsWrapper, libX11, libXi, libXtst, libXrandr, xinput, avahi-compat +, withGUI ? true, wrapQtAppsHook }: stdenv.mkDerivation rec { pname = "synergy"; - version = "1.8.8"; + version = "1.11.1"; src = fetchFromGitHub { owner = "symless"; repo = "synergy-core"; - rev = "v${version}-stable"; - sha256 = "0ksgr9hkf09h54572p7k7b9zkfhcdb2g2d5x7ixxn028y8i3jyp3"; + rev = "${version}-stable"; + sha256 = "1jk60xw4h6s5crha89wk4y8rrf1f3bixgh5mzh3cq3xyrkba41gh"; }; - patches = [./openssl-1.1.patch ./update_gtest_gmock.patch - ] ++ lib.optional stdenv.isDarwin ./respect_macos_arch.patch; + patches = [ ./build-tests.patch + ] ++ lib.optional stdenv.isDarwin ./macos_build_fix.patch; - patch_gcc6 = fetchpatch { - url = https://raw.githubusercontent.com/gentoo/gentoo/20e2bff3697ebf5f291e9907b34aae3074a36b53/dev-cpp/gmock/files/gmock-1.7.0-gcc6.patch; - sha256 = "0j3f381x1lf8qci9pfv6mliggl8qs2w05v5lw3rs3gn7aibg174d"; - }; - - # Due to the included gtest and gmock not supporting clang - # we replace it with 1.7.0 for synergy-1.8.8. This should - # become unnecessary when we update to a newer version of Synergy. - gmock_zip = fetchurl { - url = https://github.com/google/googlemock/archive/release-1.7.0.zip; - sha256 = "11bd04098rzamv7f9y01zaf9c8zrmzdk6g1qrlwq780pxzlr4ya0"; - }; - - gtest_zip = fetchurl { - url = https://github.com/google/googletest/archive/release-1.7.0.zip; - sha256 = "1l5n6kzdypjzjrz2jh14ylzrx735lccfx2p3s4ccgci8g9abg35m"; + # Since the included gtest and gmock don't support clang and the + # segfault when built with gcc9, we replace it with 1.10.0 for + # synergy-1.11.0. This should become unnecessary when upstream + # updates these dependencies. + googletest = fetchFromGitHub { + owner = "google"; + repo = "googletest"; + rev = "release-1.10.0"; + sha256 = "1zbmab9295scgg4z2vclgfgjchfjailjnvzc6f5x9jvlsdi3dpwz"; }; postPatch = '' - ${unzip}/bin/unzip -d ext/ ${gmock_zip} - ${unzip}/bin/unzip -d ext/ ${gtest_zip} - mv ext/googlemock-release-1.7.0 ext/gmock-1.7.0 - mv ext/googletest-release-1.7.0 ext/gtest-1.7.0 - patch -d ext/gmock-1.7.0 -p1 -i ${patch_gcc6} - '' - # We have XRRNotifyEvent (libXrandr), but with the upstream CMakeLists.txt - # it's not able to find it (it's trying to search the store path of libX11 - # instead) and we don't get XRandR support, even though the CMake output - # _seems_ to say so: - # - # Looking for XRRQueryExtension in Xrandr - found - # - # The relevant part however is: - # - # Looking for XRRNotifyEvent - not found - # - # So let's force it: - + lib.optionalString stdenv.isLinux '' - sed -i -e '/HAVE_X11_EXTENSIONS_XRANDR_H/c \ - set(HAVE_X11_EXTENSIONS_XRANDR_H true) - ' CMakeLists.txt + rm -r ext/* + cp -r ${googletest}/googlemock ext/gmock/ + cp -r ${googletest}/googletest ext/gtest/ + chmod -R +w ext/ ''; - cmakeFlags = lib.optionals stdenv.isDarwin [ "-DOSX_TARGET_MAJOR=10" "-DOSX_TARGET_MINOR=7" ]; + cmakeFlags = lib.optional (!withGUI) "-DSYNERGY_BUILD_LEGACY_GUI=OFF"; + + nativeBuildInputs = [ cmake ] ++ lib.optional withGUI wrapQtAppsHook; + + dontWrapQtApps = true; buildInputs = [ - cmake curl openssl + openssl + ] ++ lib.optionals withGUI [ + qttools ] ++ lib.optionals stdenv.isDarwin [ ApplicationServices Carbon Cocoa CoreServices ScreenSaver - ] ++ lib.optionals stdenv.isLinux [ xlibsWrapper libX11 libXi libXtst libXrandr xinput ]; + ] ++ lib.optionals stdenv.isLinux [ + xlibsWrapper libX11 libXi libXtst libXrandr xinput avahi-compat + ]; installPhase = '' mkdir -p $out/bin - cp ../bin/synergyc $out/bin - cp ../bin/synergys $out/bin - cp ../bin/synergyd $out/bin + cp bin/{synergyc,synergys,synergyd,syntool} $out/bin/ + '' + lib.optionalString withGUI '' + cp bin/synergy $out/bin/ + wrapQtApp $out/bin/synergy --prefix PATH : ${lib.makeBinPath [ openssl ]} + '' + lib.optionalString stdenv.isLinux '' + mkdir -p $out/share/icons/hicolor/scalable/apps + cp ../res/synergy.svg $out/share/icons/hicolor/scalable/apps/ + mkdir -p $out/share/applications + substitute ../res/synergy.desktop $out/share/applications/synergy.desktop --replace /usr/bin $out/bin + '' + lib.optionalString stdenv.isDarwin '' + mkdir -p $out/Applications/ + mv bundle/Synergy.app $out/Applications/ + ln -s $out/bin $out/Applications/Synergy.app/Contents/MacOS ''; doCheck = true; - checkPhase = "../bin/unittests"; + checkPhase = "bin/unittests"; meta = with lib; { description = "Share one mouse and keyboard between multiple computers"; - homepage = http://synergy-project.org/; + homepage = "http://synergy-project.org/"; license = licenses.gpl2; maintainers = with maintainers; [ aszlig enzime ]; platforms = platforms.all; diff --git a/pkgs/applications/misc/synergy/macos_build_fix.patch b/pkgs/applications/misc/synergy/macos_build_fix.patch new file mode 100644 index 00000000000..2ce277d261b --- /dev/null +++ b/pkgs/applications/misc/synergy/macos_build_fix.patch @@ -0,0 +1,29 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index a2297311..25a51f56 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -138,7 +138,7 @@ if (UNIX) + + + if (APPLE) +- set (CMAKE_CXX_FLAGS "--sysroot ${CMAKE_OSX_SYSROOT} ${CMAKE_CXX_FLAGS} -DGTEST_USE_OWN_TR1_TUPLE=1") ++ set (CMAKE_CXX_FLAGS "--sysroot ${CMAKE_OSX_SYSROOT} ${CMAKE_CXX_FLAGS}") + + find_library (lib_ScreenSaver ScreenSaver) + find_library (lib_IOKit IOKit) +@@ -292,14 +292,7 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Windows") + ${OPENSSL_ROOT}/lib/libssl.lib + ${OPENSSL_ROOT}/lib/libcrypto.lib + ) +-elseif (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") +- set (OPENSSL_ROOT /usr/local/opt/openssl) +- include_directories (BEFORE SYSTEM ${OPENSSL_ROOT}/include) +- set (OPENSSL_LIBS +- ${OPENSSL_ROOT}/lib/libssl.a +- ${OPENSSL_ROOT}/lib/libcrypto.a +- ) +-elseif (${CMAKE_SYSTEM_NAME} MATCHES "Linux") ++elseif (${CMAKE_SYSTEM_NAME} MATCHES "Linux" OR ${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + set (OPENSSL_LIBS ssl crypto) + else() + message (FATAL_ERROR "Couldn't find OpenSSL") diff --git a/pkgs/applications/misc/synergy/openssl-1.1.patch b/pkgs/applications/misc/synergy/openssl-1.1.patch deleted file mode 100644 index 56dc6112844..00000000000 --- a/pkgs/applications/misc/synergy/openssl-1.1.patch +++ /dev/null @@ -1,18 +0,0 @@ ---- a/src/lib/net/SecureSocket.cpp 2017-07-22 19:33:22.442645291 +0200 -+++ b/src/lib/net/SecureSocket.cpp 2017-07-22 19:36:25.632595581 +0200 -@@ -805,9 +805,14 @@ - showCipherStackDesc(sStack); - } - -+#if OPENSSL_VERSION_NUMBER < 0x10100000L - // m_ssl->m_ssl->session->ciphers is not forward compatable, In future release -- // of OpenSSL, it's not visible, need to use SSL_get_client_ciphers() instead -+ // of OpenSSL, it's not visible - STACK_OF(SSL_CIPHER) * cStack = m_ssl->m_ssl->session->ciphers; -+#else -+ // Use SSL_get_client_ciphers() for newer versions -+ STACK_OF(SSL_CIPHER) * cStack = SSL_get_client_ciphers(m_ssl->m_ssl); -+#endif - if (cStack == NULL) { - LOG((CLOG_DEBUG1 "remote cipher list not available")); - } diff --git a/pkgs/applications/misc/synergy/respect_macos_arch.patch b/pkgs/applications/misc/synergy/respect_macos_arch.patch deleted file mode 100644 index 003d7d22421..00000000000 --- a/pkgs/applications/misc/synergy/respect_macos_arch.patch +++ /dev/null @@ -1,61 +0,0 @@ -From 944177c76d4c7ff5ef3460eab28286a45344a0e7 Mon Sep 17 00:00:00 2001 -From: Michael Hoang -Date: Sat, 14 Jul 2018 21:56:59 +1000 -Subject: [PATCH 2/2] Make sure CMake respects the current arch on macOS - -Only set the macOS architecture if not defined by the user. Use the -OpenSSL libraries and headers from Nix on macOS to prevent architecture -mismatches. ---- - CMakeLists.txt | 2 +- - src/CMakeLists.txt | 14 +------------- - 2 files changed, 2 insertions(+), 14 deletions(-) - -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 2f37424d..c7217e28 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -172,7 +172,7 @@ if (UNIX) - # <= 10.5: 32-bit Intel and PowerPC - set(CMAKE_OSX_ARCHITECTURES "ppc;i386" - CACHE STRING "" FORCE) -- else() -+ elseif (NOT CMAKE_OSX_ARCHITECTURES) - # >= 10.6: Intel only - set(CMAKE_OSX_ARCHITECTURES "i386" - CACHE STRING "" FORCE) -diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt -index 237ba484..04428636 100644 ---- a/src/CMakeLists.txt -+++ b/src/CMakeLists.txt -@@ -23,11 +23,6 @@ if (WIN32) - set(OPENSSL_INCLUDE ${CMAKE_SOURCE_DIR}/ext/${OPENSSL_PLAT_DIR}/inc32) - endif() - --if (APPLE) -- set(OPENSSL_PLAT_DIR openssl-osx) -- set(OPENSSL_INCLUDE ${CMAKE_SOURCE_DIR}/ext/${OPENSSL_PLAT_DIR}/include) --endif() -- - if (WIN32) - set(OPENSSL_LIBS - ${CMAKE_SOURCE_DIR}/ext/${OPENSSL_PLAT_DIR}/out32dll/libeay32.lib -@@ -36,14 +31,7 @@ if (WIN32) - endif() - - if (UNIX) -- if (APPLE) -- set(OPENSSL_LIBS -- ${CMAKE_SOURCE_DIR}/ext/${OPENSSL_PLAT_DIR}/libssl.a -- ${CMAKE_SOURCE_DIR}/ext/${OPENSSL_PLAT_DIR}/libcrypto.a -- ) -- else() -- set(OPENSSL_LIBS ssl crypto) -- endif() -+ set(OPENSSL_LIBS ssl crypto) - endif() - - add_subdirectory(lib) --- -2.17.1 - diff --git a/pkgs/applications/misc/synergy/update_gtest_gmock.patch b/pkgs/applications/misc/synergy/update_gtest_gmock.patch deleted file mode 100644 index 87b53e78585..00000000000 --- a/pkgs/applications/misc/synergy/update_gtest_gmock.patch +++ /dev/null @@ -1,158 +0,0 @@ -From eea85dbf4bbde545d8cb07d7ee9fbdca3dcf48fd Mon Sep 17 00:00:00 2001 -From: Michael Hoang -Date: Sat, 14 Jul 2018 22:07:39 +1000 -Subject: [PATCH 1/2] Update gtest and gmock to version 1.7.0 - -Fixes compilation under clang on macOS as is now found under -. ---- - CMakeLists.txt | 2 +- - ext/toolchain/commands1.py | 4 ++-- - src/lib/platform/CMakeLists.txt | 2 +- - src/lib/server/CMakeLists.txt | 2 +- - src/lib/shared/CMakeLists.txt | 2 +- - src/lib/synergy/CMakeLists.txt | 2 +- - src/test/CMakeLists.txt | 12 ++++++------ - src/test/integtests/CMakeLists.txt | 4 ++-- - src/test/unittests/CMakeLists.txt | 4 ++-- - 9 files changed, 17 insertions(+), 17 deletions(-) - -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 94c474e8..2f37424d 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -178,7 +178,7 @@ if (UNIX) - CACHE STRING "" FORCE) - endif() - -- set(CMAKE_CXX_FLAGS "--sysroot ${CMAKE_OSX_SYSROOT} ${CMAKE_CXX_FLAGS} -DGTEST_USE_OWN_TR1_TUPLE=1") -+ set(CMAKE_CXX_FLAGS "--sysroot ${CMAKE_OSX_SYSROOT} ${CMAKE_CXX_FLAGS}") - - find_library(lib_ScreenSaver ScreenSaver) - find_library(lib_IOKit IOKit) -diff --git a/ext/toolchain/commands1.py b/ext/toolchain/commands1.py -index f32ec483..bf997cf6 100644 ---- a/ext/toolchain/commands1.py -+++ b/ext/toolchain/commands1.py -@@ -251,10 +251,10 @@ class InternalCommands: - macIdentity = None - - # gtest dir with version number -- gtestDir = 'gtest-1.6.0' -+ gtestDir = 'gtest-1.7.0' - - # gmock dir with version number -- gmockDir = 'gmock-1.6.0' -+ gmockDir = 'gmock-1.7.0' - - win32_generators = { - 1 : VisualStudioGenerator('10'), -diff --git a/src/lib/platform/CMakeLists.txt b/src/lib/platform/CMakeLists.txt -index 481d8ef9..1ce67eca 100644 ---- a/src/lib/platform/CMakeLists.txt -+++ b/src/lib/platform/CMakeLists.txt -@@ -31,7 +31,7 @@ endif() - - include_directories( - ../ -- ../../../ext/gtest-1.6.0/include -+ ../../../ext/gtest-1.7.0/include - ) - - if (UNIX) -diff --git a/src/lib/server/CMakeLists.txt b/src/lib/server/CMakeLists.txt -index 3cb582ec..0525d627 100644 ---- a/src/lib/server/CMakeLists.txt -+++ b/src/lib/server/CMakeLists.txt -@@ -24,7 +24,7 @@ endif() - include_directories( - ../ - ../../../ext -- ../../../ext/gtest-1.6.0/include -+ ../../../ext/gtest-1.7.0/include - ) - - if (UNIX) -diff --git a/src/lib/shared/CMakeLists.txt b/src/lib/shared/CMakeLists.txt -index 891f4aa7..16c8b04a 100644 ---- a/src/lib/shared/CMakeLists.txt -+++ b/src/lib/shared/CMakeLists.txt -@@ -25,7 +25,7 @@ add_library(shared STATIC ${sources}) - include_directories( - ../ - ../../../ext -- ../../../ext/gtest-1.6.0/include -+ ../../../ext/gtest-1.7.0/include - ) - - target_link_libraries(shared arch base) -diff --git a/src/lib/synergy/CMakeLists.txt b/src/lib/synergy/CMakeLists.txt -index 0972be8c..e19fcce5 100644 ---- a/src/lib/synergy/CMakeLists.txt -+++ b/src/lib/synergy/CMakeLists.txt -@@ -36,7 +36,7 @@ endif() - include_directories( - ../ - ../../../ext -- ../../../ext/gtest-1.6.0/include -+ ../../../ext/gtest-1.7.0/include - ) - - if (UNIX) -diff --git a/src/test/CMakeLists.txt b/src/test/CMakeLists.txt -index 8812150a..04cdfc50 100644 ---- a/src/test/CMakeLists.txt -+++ b/src/test/CMakeLists.txt -@@ -15,13 +15,13 @@ - # along with this program. If not, see . - - include_directories( -- ../../ext/gtest-1.6.0 -- ../../ext/gtest-1.6.0/include -- ../../ext/gmock-1.6.0 -- ../../ext/gmock-1.6.0/include) -+ ../../ext/gtest-1.7.0 -+ ../../ext/gtest-1.7.0/include -+ ../../ext/gmock-1.7.0 -+ ../../ext/gmock-1.7.0/include) - --add_library(gtest STATIC ../../ext/gtest-1.6.0/src/gtest-all.cc) --add_library(gmock STATIC ../../ext/gmock-1.6.0/src/gmock-all.cc) -+add_library(gtest STATIC ../../ext/gtest-1.7.0/src/gtest-all.cc) -+add_library(gmock STATIC ../../ext/gmock-1.7.0/src/gmock-all.cc) - - if (UNIX) - # ignore warnings in gtest and gmock -diff --git a/src/test/integtests/CMakeLists.txt b/src/test/integtests/CMakeLists.txt -index 2f1ca7f3..6ddbd29a 100644 ---- a/src/test/integtests/CMakeLists.txt -+++ b/src/test/integtests/CMakeLists.txt -@@ -56,8 +56,8 @@ endif() - include_directories( - ../../ - ../../lib/ -- ../../../ext/gtest-1.6.0/include -- ../../../ext/gmock-1.6.0/include -+ ../../../ext/gtest-1.7.0/include -+ ../../../ext/gmock-1.7.0/include - ) - - if (UNIX) -diff --git a/src/test/unittests/CMakeLists.txt b/src/test/unittests/CMakeLists.txt -index 3e49dc3c..5f6c4fac 100644 ---- a/src/test/unittests/CMakeLists.txt -+++ b/src/test/unittests/CMakeLists.txt -@@ -51,8 +51,8 @@ list(APPEND headers ${platform_sources}) - include_directories( - ../../ - ../../lib/ -- ../../../ext/gtest-1.6.0/include -- ../../../ext/gmock-1.6.0/include -+ ../../../ext/gtest-1.7.0/include -+ ../../../ext/gmock-1.7.0/include - ../../../ext - ) - --- -2.17.1 - diff --git a/pkgs/applications/misc/tabula/default.nix b/pkgs/applications/misc/tabula/default.nix index fbb1832735b..1b29118c9b1 100644 --- a/pkgs/applications/misc/tabula/default.nix +++ b/pkgs/applications/misc/tabula/default.nix @@ -31,7 +31,7 @@ stdenv.mkDerivation rec { out of PDF files. Tabula allows you to extract that data into a CSV or Microsoft Excel spreadsheet using a simple, easy-to-use interface. ''; - homepage = https://tabula.technology/; + homepage = "https://tabula.technology/"; license = licenses.mit; maintainers = [ maintainers.dpaetzel ]; platforms = platforms.all; diff --git a/pkgs/applications/misc/taizen/default.nix b/pkgs/applications/misc/taizen/default.nix index ee516ac97aa..993606d39c0 100644 --- a/pkgs/applications/misc/taizen/default.nix +++ b/pkgs/applications/misc/taizen/default.nix @@ -1,4 +1,4 @@ -{ rustPlatform, lib, fetchFromGitHub, ncurses, openssl, pkgconfig }: +{ rustPlatform, lib, fetchFromGitHub, ncurses, openssl, pkgconfig, Security, stdenv }: rustPlatform.buildRustPackage rec { pname = "taizen"; @@ -11,13 +11,13 @@ rustPlatform.buildRustPackage rec { sha256 = "09izgx7icvizskdy9kplk0am61p7550fsd0v42zcihq2vap2j92z"; }; - buildInputs = [ ncurses openssl ]; + buildInputs = [ ncurses openssl ] ++ lib.optional stdenv.isDarwin Security; nativeBuildInputs = [ pkgconfig ]; - cargoSha256 = "0h8ybhb17pqhhfjcmq1l70kp8g1yyq38228lcf86byk3r2ar2rkg"; + cargoSha256 = "0chrgwm97y1a3gj218x25yqk1y1h74a6gzyxjdm023msvs58nkni"; meta = with lib; { - homepage = https://crates.io/crates/taizen; + homepage = "https://crates.io/crates/taizen"; license = licenses.mit; description = "curses based mediawiki browser"; maintainers = with maintainers; [ ma27 ]; diff --git a/pkgs/applications/misc/tangogps/default.nix b/pkgs/applications/misc/tangogps/default.nix deleted file mode 100644 index 08bea18d8e9..00000000000 --- a/pkgs/applications/misc/tangogps/default.nix +++ /dev/null @@ -1,46 +0,0 @@ -{ fetchurl, stdenv, pkgconfig, gettext, gtk2, gconf -, curl, libexif, sqlite, libxml2 }: - -stdenv.mkDerivation rec { - name = "tangogps-0.99.2"; - - src = fetchurl { - url = "http://www.tangogps.org/downloads/${name}.tar.gz"; - sha256 = "15q2kkrv4mfsivfdzjgpxr7s2amw7d501q2ayjl3ff4vmvfn5516"; - }; - - nativeBuildInputs = [ pkgconfig ]; - buildInputs = [ gettext gtk2 gconf curl libexif sqlite libxml2 ]; - NIX_LDFLAGS = [ "-lm" ]; - - # bogus includes fail with newer library version - postPatch = '' - sed -i -e 's,#include ,#include ,g' src/*.c - sed -i -e 's,#include ,#include ,g' src/*.c src/*.h - ''; - - meta = { - description = "User friendly map and GPS user interface"; - - longDescription = '' - tangoGPS is an easy to use, fast and lightweight mapping - application for use with or without GPS. - - It runs on any Linux platform from the desktop over eeePC down - to phones like the Openmoko Neo. - - By default tangoGPS uses map data from the OpenStreetMap - project. Additionally a variety of other repositories can be - easily added. - - The maps are automagically downloaded and cached for offline use - while you drag or zoom the map. Furthermore you can - conveniently pre-cache areas with tangoGPS. - ''; - - #homepage = http://www.tangogps.org/; # no longer valid, I couldn't find any other - - license = stdenv.lib.licenses.gpl2Plus; - platforms = stdenv.lib.platforms.unix; - }; -} diff --git a/pkgs/applications/misc/taskjuggler/2.x/default.nix b/pkgs/applications/misc/taskjuggler/2.x/default.nix index 6b38c3d59c2..a1d04a13af8 100644 --- a/pkgs/applications/misc/taskjuggler/2.x/default.nix +++ b/pkgs/applications/misc/taskjuggler/2.x/default.nix @@ -56,12 +56,11 @@ stdenv.mkDerivation rec { cp Contrib/emacs/taskjug.el $out/share/emacs/site-lisp/ ''; - installFlags = - # kde_locale is not defined when installing without kde. - "kde_locale=\${out}/share/locale"; + # kde_locale is not defined when installing without kde. + installFlags = [ "kde_locale=\${out}/share/locale" ]; meta = { - homepage = http://www.taskjuggler.org; + homepage = "http://www.taskjuggler.org"; license = stdenv.lib.licenses.gpl2; description = "Project management tool"; longDescription = '' diff --git a/pkgs/applications/misc/taskjuggler/3.x/Gemfile.lock b/pkgs/applications/misc/taskjuggler/3.x/Gemfile.lock index d1642e76fa6..8831993117d 100644 --- a/pkgs/applications/misc/taskjuggler/3.x/Gemfile.lock +++ b/pkgs/applications/misc/taskjuggler/3.x/Gemfile.lock @@ -18,4 +18,4 @@ DEPENDENCIES taskjuggler BUNDLED WITH - 1.10.5 + 2.1.4 diff --git a/pkgs/applications/misc/taskjuggler/3.x/default.nix b/pkgs/applications/misc/taskjuggler/3.x/default.nix index 23252d0c480..6b3ef60d638 100644 --- a/pkgs/applications/misc/taskjuggler/3.x/default.nix +++ b/pkgs/applications/misc/taskjuggler/3.x/default.nix @@ -8,7 +8,7 @@ bundlerEnv { meta = { description = "A modern and powerful project management tool"; - homepage = http://taskjuggler.org/; + homepage = "http://taskjuggler.org/"; license = lib.licenses.gpl2; platforms = lib.platforms.unix; }; diff --git a/pkgs/applications/misc/taskjuggler/Gemfile.lock b/pkgs/applications/misc/taskjuggler/Gemfile.lock index dcc46e370e7..0f05c496173 100644 --- a/pkgs/applications/misc/taskjuggler/Gemfile.lock +++ b/pkgs/applications/misc/taskjuggler/Gemfile.lock @@ -18,4 +18,4 @@ DEPENDENCIES taskjuggler BUNDLED WITH - 1.17.2 + 2.1.4 diff --git a/pkgs/applications/misc/taskjuggler/default.nix b/pkgs/applications/misc/taskjuggler/default.nix index 838cc199a6c..64753397833 100644 --- a/pkgs/applications/misc/taskjuggler/default.nix +++ b/pkgs/applications/misc/taskjuggler/default.nix @@ -13,7 +13,7 @@ bundlerApp { meta = with lib; { description = "A modern and powerful project management tool"; - homepage = http://taskjuggler.org/; + homepage = "http://taskjuggler.org/"; license = licenses.gpl2; platforms = platforms.unix; maintainers = with maintainers; [ manveru nicknovitski ]; diff --git a/pkgs/applications/misc/tasknc/default.nix b/pkgs/applications/misc/tasknc/default.nix index 0450cb40a55..46378aec33a 100644 --- a/pkgs/applications/misc/tasknc/default.nix +++ b/pkgs/applications/misc/tasknc/default.nix @@ -34,7 +34,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { - homepage = https://github.com/lharding/tasknc; + homepage = "https://github.com/lharding/tasknc"; description = "A ncurses wrapper around taskwarrior"; maintainers = with maintainers; [ matthiasbeyer infinisil ]; platforms = platforms.linux; # Cannot test others diff --git a/pkgs/applications/misc/taskopen/default.nix b/pkgs/applications/misc/taskopen/default.nix index 847092356d2..a60ca997ee0 100644 --- a/pkgs/applications/misc/taskopen/default.nix +++ b/pkgs/applications/misc/taskopen/default.nix @@ -26,7 +26,7 @@ stdenv.mkDerivation { meta = with stdenv.lib; { description = "Script for taking notes and open urls with taskwarrior"; - homepage = https://github.com/ValiValpas/taskopen; + homepage = "https://github.com/ValiValpas/taskopen"; platforms = platforms.linux; license = stdenv.lib.licenses.free ; maintainers = [ maintainers.winpat ]; diff --git a/pkgs/applications/misc/tasksh/default.nix b/pkgs/applications/misc/tasksh/default.nix index 931a27fbeff..4c577049f44 100644 --- a/pkgs/applications/misc/tasksh/default.nix +++ b/pkgs/applications/misc/tasksh/default.nix @@ -16,7 +16,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "REPL for taskwarrior"; - homepage = http://tasktools.org; + homepage = "http://tasktools.org"; license = licenses.mit; maintainers = with maintainers; [ matthiasbeyer ]; platforms = platforms.unix; diff --git a/pkgs/applications/misc/taskwarrior/default.nix b/pkgs/applications/misc/taskwarrior/default.nix index ba919fbc626..67f2fd8927b 100644 --- a/pkgs/applications/misc/taskwarrior/default.nix +++ b/pkgs/applications/misc/taskwarrior/default.nix @@ -24,7 +24,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Highly flexible command-line tool to manage TODO lists"; - homepage = https://taskwarrior.org; + homepage = "https://taskwarrior.org"; license = licenses.mit; maintainers = with maintainers; [ marcweber ]; platforms = platforms.linux ++ platforms.darwin; diff --git a/pkgs/applications/misc/tdrop/default.nix b/pkgs/applications/misc/tdrop/default.nix index 547eea4f2d2..020298a0c52 100644 --- a/pkgs/applications/misc/tdrop/default.nix +++ b/pkgs/applications/misc/tdrop/default.nix @@ -25,7 +25,7 @@ stdenv.mkDerivation { meta = with stdenv.lib; { description = "A Glorified WM-Independent Dropdown Creator"; - homepage = https://github.com/noctuid/tdrop; + homepage = "https://github.com/noctuid/tdrop"; license = licenses.bsd2; platforms = platforms.linux; maintainers = with maintainers; [ wedens ]; diff --git a/pkgs/applications/misc/teleprompter/default.nix b/pkgs/applications/misc/teleprompter/default.nix new file mode 100644 index 00000000000..7cca3afa764 --- /dev/null +++ b/pkgs/applications/misc/teleprompter/default.nix @@ -0,0 +1,42 @@ +{ lib, stdenv, fetchurl, electron, makeDesktopItem, makeWrapper, nodePackages, autoPatchelfHook}: + +stdenv.mkDerivation rec { + pname = "teleprompter"; + version = "2.3.4"; + + src = fetchurl { + url = "mirror://sourceforge/teleprompter-imaginary-films/imaginary-${pname}-${version}-64bit.tar.gz"; + sha256 = "084ml2l3qg46bsazaapyxdx4zavvxp0j4ycsdpdwk3f94g9xb120"; + }; + + dontBuild = true; + dontStrip = true; + + nativeBuildInputs = [ autoPatchelfHook makeWrapper nodePackages.asar ]; + installPhase = '' + mkdir -p $out/bin $out/opt/teleprompter $out/share/applications + asar e resources/app.asar $out/opt/teleprompter/resources/app.asar.unpacked + ln -s ${desktopItem}/share/applications/* $out/share/applications + ''; + + postFixup = '' + makeWrapper ${electron}/bin/electron $out/bin/teleprompter \ + --add-flags "$out/opt/teleprompter/resources/app.asar.unpacked --without-update" + ''; + + desktopItem = makeDesktopItem { + name = "teleprompter"; + exec = "teleprompter"; + type = "Application"; + desktopName = "Teleprompter"; + }; + + meta = with lib; { + description = "The most complete, free, teleprompter app on the web"; + license = [ licenses.gpl3 ]; + homepage = "https://github.com/ImaginarySense/Teleprompter-Core"; + platforms = platforms.linux; + maintainers = with maintainers; [ Scriptkiddi ]; + }; +} + diff --git a/pkgs/applications/misc/termdown/default.nix b/pkgs/applications/misc/termdown/default.nix index 94eacb1fe06..5ccdbbbb6b4 100644 --- a/pkgs/applications/misc/termdown/default.nix +++ b/pkgs/applications/misc/termdown/default.nix @@ -20,7 +20,7 @@ buildPythonApplication rec { meta = with stdenv.lib; { description = "Starts a countdown to or from TIMESPEC"; longDescription = "Countdown timer and stopwatch in your terminal"; - homepage = https://github.com/trehn/termdown; + homepage = "https://github.com/trehn/termdown"; license = licenses.gpl3; platforms = platforms.all; }; diff --git a/pkgs/applications/misc/terminal-notifier/default.nix b/pkgs/applications/misc/terminal-notifier/default.nix index 00300e65abb..cde53ef4165 100644 --- a/pkgs/applications/misc/terminal-notifier/default.nix +++ b/pkgs/applications/misc/terminal-notifier/default.nix @@ -27,7 +27,7 @@ stdenv.mkDerivation rec { meta = with lib; { maintainers = with maintainers; [ cstrahan ]; - homepage = https://github.com/julienXX/terminal-notifier; + homepage = "https://github.com/julienXX/terminal-notifier"; license = licenses.mit; platforms = platforms.darwin; }; diff --git a/pkgs/applications/misc/terminal-parrot/default.nix b/pkgs/applications/misc/terminal-parrot/default.nix index ba898932f06..68241d79850 100644 --- a/pkgs/applications/misc/terminal-parrot/default.nix +++ b/pkgs/applications/misc/terminal-parrot/default.nix @@ -15,7 +15,7 @@ buildGoModule rec { meta = with stdenv.lib; { description = "Shows colorful, animated party parrot in your terminial"; - homepage = https://github.com/jmhobbs/terminal-parrot; + homepage = "https://github.com/jmhobbs/terminal-parrot"; license = licenses.mit; platforms = platforms.all; maintainers = [ maintainers.heel ]; diff --git a/pkgs/applications/misc/terminator/default.nix b/pkgs/applications/misc/terminator/default.nix index d09c98b6709..ea73d5cbb68 100644 --- a/pkgs/applications/misc/terminator/default.nix +++ b/pkgs/applications/misc/terminator/default.nix @@ -33,7 +33,7 @@ python2.pkgs.buildPythonApplication rec { quadkonsole, etc. in that the main focus is arranging terminals in grids (tabs is the most common default method, which Terminator also supports). ''; - homepage = https://gnometerminator.blogspot.no/p/introduction.html; + homepage = "https://gnometerminator.blogspot.no/p/introduction.html"; license = licenses.gpl2; maintainers = with maintainers; [ bjornfor ]; platforms = platforms.linux; diff --git a/pkgs/applications/misc/terminus/default.nix b/pkgs/applications/misc/terminus/default.nix index fce46d120de..4c38e530247 100644 --- a/pkgs/applications/misc/terminus/default.nix +++ b/pkgs/applications/misc/terminus/default.nix @@ -35,7 +35,7 @@ stdenv.mkDerivation rec { dontPatchELF = true; meta = with lib; { description = "A terminal for a more modern age"; - homepage = https://eugeny.github.io/terminus/; + homepage = "https://eugeny.github.io/terminus/"; maintainers = with maintainers; [ jlesquembre ]; license = licenses.mit; platforms = [ "x86_64-linux" ]; diff --git a/pkgs/applications/misc/termite/default.nix b/pkgs/applications/misc/termite/default.nix index 2a610edde03..63565e207f7 100644 --- a/pkgs/applications/misc/termite/default.nix +++ b/pkgs/applications/misc/termite/default.nix @@ -77,7 +77,7 @@ in stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "A simple VTE-based terminal"; license = licenses.lgpl2Plus; - homepage = https://github.com/thestinger/termite/; + homepage = "https://github.com/thestinger/termite/"; maintainers = with maintainers; [ koral ]; platforms = platforms.all; }; diff --git a/pkgs/applications/misc/termpdf.py/default.nix b/pkgs/applications/misc/termpdf.py/default.nix new file mode 100644 index 00000000000..5988f569109 --- /dev/null +++ b/pkgs/applications/misc/termpdf.py/default.nix @@ -0,0 +1,51 @@ +{ stdenv +, buildPythonApplication +, fetchFromGitHub +, fetchPypi +, bibtool +, pybtex +, pymupdf +, pynvim +, pyperclip +, roman +, pdfrw +, pagelabels +, setuptools +}: + +buildPythonApplication { + pname = "termpdf.py"; + version = "2019-10-03"; + + src = fetchFromGitHub { + owner = "dsanson"; + repo = "termpdf.py"; + rev = "4f3bdf4b5a00801631f2498f2c38c81e0a588ae2"; + sha256 = "05gbj2fqzqndq1mx6g9asa7i6z8a9jdjrvilfwx8lg23cs356m6m"; + }; + + propagatedBuildInputs = [ + bibtool + pybtex + pymupdf + pyperclip + roman + pagelabels + pdfrw + pynvim + setuptools + ]; + + # upstream doesn't contain tests + doCheck = false; + + meta = with stdenv.lib; { + description = '' + A graphical pdf (and epub, cbz, ...) reader that works + inside the kitty terminal. + ''; + homepage = "https://github.com/dsanson/termpdf.py"; + maintainers = with maintainers; [ teto ]; + license = licenses.mit; + }; +} diff --git a/pkgs/applications/misc/teseq/default.nix b/pkgs/applications/misc/teseq/default.nix index b1764591982..1ba22911c51 100644 --- a/pkgs/applications/misc/teseq/default.nix +++ b/pkgs/applications/misc/teseq/default.nix @@ -13,7 +13,7 @@ stdenv.mkDerivation { }; meta = { - homepage = https://www.gnu.org/software/teseq/; + homepage = "https://www.gnu.org/software/teseq/"; description = "Escape sequence illuminator"; license = stdenv.lib.licenses.gpl3; diff --git a/pkgs/applications/misc/thinking-rock/default.nix b/pkgs/applications/misc/thinking-rock/default.nix index c057fde95d7..fd6065010fb 100644 --- a/pkgs/applications/misc/thinking-rock/default.nix +++ b/pkgs/applications/misc/thinking-rock/default.nix @@ -4,7 +4,7 @@ stdenv.mkDerivation { name = "thinkingrock-binary-2.2.1"; src = fetchurl { - url = mirror://sourceforge/thinkingrock/ThinkingRock/TR%202.2.1/tr-2.2.1.tar.gz; + url = "mirror://sourceforge/thinkingrock/ThinkingRock/TR%202.2.1/tr-2.2.1.tar.gz"; sha256 = "0hnwvvyc8miiz8w2g4iy7s4rgfy0kfbncgbgfzpsq6nrzq334kgm"; }; @@ -34,7 +34,7 @@ stdenv.mkDerivation { meta = { description = "Task management system"; - homepage = http://www.thinkingrock.com.au/; + homepage = "http://www.thinkingrock.com.au/"; license = "CDDL"; # Common Development and Distribution License platforms = stdenv.lib.platforms.unix; }; diff --git a/pkgs/applications/misc/tilda/default.nix b/pkgs/applications/misc/tilda/default.nix index 39f54156fef..f8ae5587ff9 100644 --- a/pkgs/applications/misc/tilda/default.nix +++ b/pkgs/applications/misc/tilda/default.nix @@ -1,20 +1,23 @@ -{ stdenv, fetchzip, pkgconfig -, autoreconfHook, gettext, expat +{ stdenv, fetchFromGitHub, pkgconfig +, autoreconfHook, gettext, expat, pcre2 , libconfuse, vte, gtk , makeWrapper }: +with stdenv.lib; stdenv.mkDerivation rec { pname = "tilda"; - version = "1.4.1"; + version = "1.5.0"; - src = fetchzip { - url = "https://github.com/lanoxx/tilda/archive/${pname}-${version}.tar.gz"; - sha256 = "154rsldqjv2m1bddisb930qicb0y35kx7bxq392n2hn68jr2pxkj"; + src = fetchFromGitHub { + owner = "lanoxx"; + repo = "tilda"; + rev = "${pname}-${version}"; + sha256 = "13djibj3s7ig13c57ywy38pxy3qfmqihii2c0g15fy2h9q8xp1gx"; }; nativeBuildInputs = [ autoreconfHook makeWrapper pkgconfig ]; - buildInputs = [ gettext libconfuse vte gtk ]; + buildInputs = [ gettext pcre2 libconfuse vte gtk ]; LD_LIBRARY_PATH = "${expat.out}/lib"; # ugly hack for xgettext to work during build @@ -27,9 +30,9 @@ stdenv.mkDerivation rec { --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH" ''; - meta = with stdenv.lib; { + meta = { description = "A Gtk based drop down terminal for Linux and Unix"; - homepage = https://github.com/lanoxx/tilda/; + homepage = "https://github.com/lanoxx/tilda/"; license = licenses.gpl3; maintainers = [ maintainers.AndersonTorres ]; platforms = platforms.linux; diff --git a/pkgs/applications/misc/tilix/default.nix b/pkgs/applications/misc/tilix/default.nix index 2fa193fc8e7..4707685e3da 100644 --- a/pkgs/applications/misc/tilix/default.nix +++ b/pkgs/applications/misc/tilix/default.nix @@ -66,7 +66,7 @@ stdenv.mkDerivation { meta = with stdenv.lib; { description = "Tiling terminal emulator following the Gnome Human Interface Guidelines"; - homepage = https://gnunn1.github.io/tilix-web; + homepage = "https://gnunn1.github.io/tilix-web"; license = licenses.mpl20; maintainers = with maintainers; [ midchildan worldofpeace ]; platforms = platforms.linux; diff --git a/pkgs/applications/misc/timewarrior/default.nix b/pkgs/applications/misc/timewarrior/default.nix index a8b86e71cb1..1a21bb43868 100644 --- a/pkgs/applications/misc/timewarrior/default.nix +++ b/pkgs/applications/misc/timewarrior/default.nix @@ -18,7 +18,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "A command-line time tracker"; - homepage = https://taskwarrior.org/docs/timewarrior; + homepage = "https://timewarrior.net"; license = licenses.mit; maintainers = with maintainers; [ matthiasbeyer mrVanDalo ]; platforms = platforms.linux ++ platforms.darwin; diff --git a/pkgs/applications/misc/tint2/default.nix b/pkgs/applications/misc/tint2/default.nix index c85feff4360..dc991402eec 100644 --- a/pkgs/applications/misc/tint2/default.nix +++ b/pkgs/applications/misc/tint2/default.nix @@ -32,7 +32,7 @@ stdenv.mkDerivation rec { ''; meta = with stdenv.lib; { - homepage = https://gitlab.com/o9000/tint2; + homepage = "https://gitlab.com/o9000/tint2"; description = "Simple panel/taskbar unintrusive and light (memory, cpu, aestetic)"; license = licenses.gpl2; platforms = platforms.linux; diff --git a/pkgs/applications/misc/tipp10/default.nix b/pkgs/applications/misc/tipp10/default.nix new file mode 100644 index 00000000000..8316fd918ab --- /dev/null +++ b/pkgs/applications/misc/tipp10/default.nix @@ -0,0 +1,25 @@ +{ cmake, stdenv, mkDerivation, fetchFromGitLab, + qtmultimedia, qttools, ... }: + +mkDerivation rec { + pname = "tipp10"; + version = "3.1.0"; + + src = fetchFromGitLab { + owner = "a_a"; + repo = pname; + rev = "v${version}"; + sha256 = "1mksga1zyqz1y2s524nkw86irg36zpjwz7ff87n2ygrlysczvnx1"; + }; + + nativeBuildInputs = [ cmake qttools ]; + buildInputs = [ qtmultimedia ]; + + meta = with stdenv.lib; { + description = "Learn and train typing with the ten-finger system"; + homepage = "https://gitlab.com/a_a/tipp10"; + license = licenses.gpl2; + maintainers = with maintainers; [ petabyteboy ]; + platforms = platforms.all; + }; +} diff --git a/pkgs/applications/misc/tippecanoe/default.nix b/pkgs/applications/misc/tippecanoe/default.nix index 8d84ab59d47..c85192603cb 100644 --- a/pkgs/applications/misc/tippecanoe/default.nix +++ b/pkgs/applications/misc/tippecanoe/default.nix @@ -2,13 +2,13 @@ stdenv.mkDerivation rec { pname = "tippecanoe"; - version = "1.34.3"; + version = "1.35.0"; src = fetchFromGitHub { owner = "mapbox"; repo = pname; rev = version; - sha256 = "08pkxzwp4w5phrk9b0vszxnx8yymp50v0bcw96pz8qwk48z4xm0i"; + sha256 = "0v5ycc3gsqnl9pps3m45yrnb1gvw5pk6jdyr0q6516b4ac6x67m5"; }; buildInputs = [ sqlite zlib ]; @@ -21,9 +21,9 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Build vector tilesets from large collections of GeoJSON features"; - homepage = https://github.com/mapbox/tippecanoe; + homepage = "https://github.com/mapbox/tippecanoe"; license = licenses.bsd2; maintainers = with maintainers; [ sikmir ]; - platforms = platforms.linux ++ platforms.darwin; + platforms = with platforms; linux ++ darwin; }; } diff --git a/pkgs/applications/misc/tmatrix/default.nix b/pkgs/applications/misc/tmatrix/default.nix index ead8d7298e6..c03918c4875 100644 --- a/pkgs/applications/misc/tmatrix/default.nix +++ b/pkgs/applications/misc/tmatrix/default.nix @@ -1,22 +1,27 @@ -{ stdenv, lib, fetchFromGitHub, cmake, ncurses }: +{ stdenv +, lib +, fetchFromGitHub +, cmake +, installShellFiles +, ncurses +}: stdenv.mkDerivation rec { pname = "tmatrix"; - version = "1.1"; + version = "1.3"; src = fetchFromGitHub { owner = "M4444"; repo = "TMatrix"; rev = "v${version}"; - sha256 = "1x9drk3wdsd6vzcypk3x068sqcbgis488s9fhcpsv8xgb496rd6y"; + sha256 = "1cvgxmdpdzpl8w4z3sh4g5pbd15rd8s1kcspi9v95yf9rydyy69s"; }; - nativeBuildInputs = [ cmake ]; + nativeBuildInputs = [ cmake installShellFiles ]; buildInputs = [ ncurses ]; postInstall = '' - mkdir -p $out/share/man/man6 - install -m 0644 ../tmatrix.6 $out/share/man/man6 + installManPage ../tmatrix.6 ''; meta = with lib; { @@ -30,6 +35,6 @@ stdenv.mkDerivation rec { homepage = "https://github.com/M4444/TMatrix"; license = licenses.gpl2; platforms = platforms.all; - maintainers = with maintainers; [ infinisil ]; + maintainers = with maintainers; [ infinisil filalex77 ]; }; } diff --git a/pkgs/applications/misc/tnef/default.nix b/pkgs/applications/misc/tnef/default.nix index bbd3073a4d8..40505c4fdbe 100644 --- a/pkgs/applications/misc/tnef/default.nix +++ b/pkgs/applications/misc/tnef/default.nix @@ -24,7 +24,7 @@ stdenv.mkDerivation rec { The TNEF program allows one to unpack the attachments which were encapsulated into the TNEF attachment. Thus alleviating the need to use Microsoft Outlook to view the attachment. ''; - homepage = https://github.com/verdammelt/tnef; + homepage = "https://github.com/verdammelt/tnef"; license = licenses.gpl2; maintainers = with maintainers; [ peterhoeg ]; platforms = platforms.all; diff --git a/pkgs/applications/misc/todiff/default.nix b/pkgs/applications/misc/todiff/default.nix index 93f233a4f92..f55b3852e5b 100644 --- a/pkgs/applications/misc/todiff/default.nix +++ b/pkgs/applications/misc/todiff/default.nix @@ -11,7 +11,7 @@ rustPlatform.buildRustPackage rec { sha256 = "1y0v8nkaqb8kn61xwarpbyrq019gxx1f5f5p1hzw73nqxadc1rcm"; }; - cargoSha256 = "0xn5p71qk0ahd2drklja16xwv7zw0797kkzpiv563kffzvd1p8id"; + cargoSha256 = "1vyc230a2b0dry2057mkdkrjb7s9d0p43fnz4q67aqrpyr4jxwx2"; checkPhase = "cargo test --features=integration_tests"; diff --git a/pkgs/applications/misc/todoist-electron/default.nix b/pkgs/applications/misc/todoist-electron/default.nix new file mode 100644 index 00000000000..798f1708ae7 --- /dev/null +++ b/pkgs/applications/misc/todoist-electron/default.nix @@ -0,0 +1,61 @@ +{ stdenv, lib, fetchurl, makeDesktopItem, dpkg, atk, at-spi2-atk, glib, pango, gdk-pixbuf +, gtk3, cairo, freetype, fontconfig, dbus, xorg, nss, nspr, alsaLib, cups, expat +, udev, libpulseaudio, utillinux, makeWrapper }: + +stdenv.mkDerivation rec { + pname = "todoist-electron"; + version = "1.20"; + + src = fetchurl { + url = "https://github.com/KryDos/todoist-linux/releases/download/${version}/Todoist_${version}.0_amd64.deb"; + sha256 = "0w885xqy1304cp6b0jll5lvm6b1zd1ciqjl97d2hkdi8c9gv3bqx"; + }; + + desktopItem = makeDesktopItem { + name = "Todoist"; + exec = "todoist"; + desktopName = "Todoist"; + categories = "Utility"; + }; + + nativeBuildInputs = [ makeWrapper dpkg ]; + unpackPhase = '' + mkdir pkg + dpkg-deb -x $src pkg + sourceRoot=pkg + ''; + installPhase = let + libPath = lib.makeLibraryPath ([ + stdenv.cc.cc gtk3 atk at-spi2-atk glib pango gdk-pixbuf cairo freetype fontconfig dbus + nss nspr alsaLib libpulseaudio cups expat udev utillinux + ] ++ (with xorg; [ + libXi libXcursor libXdamage libXrandr libXcomposite libXext libXfixes libxcb + libXrender libX11 libXtst libXScrnSaver + ])); + in '' + mkdir -p "$out/bin" + mv opt "$out/" + + # Patch binary + patchelf \ + --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ + --set-rpath "${libPath}:\$ORIGIN" \ + $out/opt/Todoist/todoist + + # Hacky workaround for RPATH problems + makeWrapper $out/opt/Todoist/todoist $out/bin/todoist \ + --prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ libpulseaudio udev ]} + + # Desktop item + mkdir -p "$out/share" + ln -s "${desktopItem}/share/applications" "$out/share/applications" + ''; + + meta = with lib; { + homepage = "https://github.com/KryDos/todoist-linux"; + description = "The Linux wrapper for Todoist web version"; + platforms = [ "x86_64-linux" ]; + license = licenses.isc; + maintainers = with maintainers; [ i077 ]; + }; +} diff --git a/pkgs/applications/misc/todoist/default.nix b/pkgs/applications/misc/todoist/default.nix index eaedad16748..1e82ac2cccb 100644 --- a/pkgs/applications/misc/todoist/default.nix +++ b/pkgs/applications/misc/todoist/default.nix @@ -2,19 +2,19 @@ buildGoModule rec { pname = "todoist"; - version = "0.14.0"; + version = "0.15.0"; src = fetchFromGitHub { owner = "sachaos"; repo = "todoist"; rev = "v${version}"; - sha256 = "0qhmv65il14lns817yxhma784jw5bz629svzh2ykrmilx5f7dxqc"; + sha256 = "0d3c621jaqxd6i58xm6nvi0avrh5mk23r169i95bn73igzw62w33"; }; modSha256 = "1nnp5ijz4n34gc97rar4wlvlbx21ndpjyb2mc6gxdk1wzx3mgswp"; meta = { - homepage = https://github.com/sachaos/todoist; + homepage = "https://github.com/sachaos/todoist"; description = "Todoist CLI Client"; license = lib.licenses.mit; platforms = lib.platforms.unix; diff --git a/pkgs/applications/misc/toggldesktop/default.nix b/pkgs/applications/misc/toggldesktop/default.nix index bf22cb0181d..410c17be803 100644 --- a/pkgs/applications/misc/toggldesktop/default.nix +++ b/pkgs/applications/misc/toggldesktop/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchzip, buildEnv, makeDesktopItem, runCommand, writeText, pkgconfig +{ mkDerivation, lib, fetchzip, buildEnv, makeDesktopItem, runCommand, writeText, pkgconfig , cmake, qmake, cacert, jsoncpp, libX11, libXScrnSaver, lua, openssl, poco , qtbase, qtwebengine, qtx11extras, sqlite }: @@ -11,7 +11,7 @@ let sha256 = "01hqkx9dljnhwnyqi6mmzfp02hnbi2j50rsfiasniqrkbi99x9v1"; }; - bugsnag-qt = stdenv.mkDerivation rec { + bugsnag-qt = mkDerivation rec { pname = "bugsnag-qt"; version = "20180522.005732"; @@ -24,7 +24,7 @@ let buildInputs = [ qtbase ]; }; - qxtglobalshortcut = stdenv.mkDerivation rec { + qxtglobalshortcut = mkDerivation rec { pname = "qxtglobalshortcut"; version = "f584471dada2099ba06c574bdfdd8b078c2e3550"; @@ -37,7 +37,7 @@ let buildInputs = [ qtbase qtx11extras ]; }; - qt-oauth-lib = stdenv.mkDerivation rec { + qt-oauth-lib = mkDerivation rec { pname = "qt-oauth-lib"; version = "20190125.190943"; @@ -62,7 +62,7 @@ let mkdir -p $out/lib/pkgconfig && ln -s ${poco-pc} $_/poco.pc ''; - libtoggl = stdenv.mkDerivation { + libtoggl = mkDerivation { name = "libtoggl-${version}"; inherit src version; @@ -77,7 +77,7 @@ let ''; }; - toggldesktop = stdenv.mkDerivation { + toggldesktop = mkDerivation { name = "${name}-unwrapped"; inherit src version; @@ -108,7 +108,7 @@ let ]; }; - toggldesktop-icons = stdenv.mkDerivation { + toggldesktop-icons = mkDerivation { name = "${name}-icons"; inherit (toggldesktop) src sourceRoot; @@ -138,9 +138,9 @@ buildEnv { inherit name; paths = [ desktopItem toggldesktop-icons toggldesktop-wrapped ]; - meta = with stdenv.lib; { + meta = with lib; { description = "Client for Toggl time tracking service"; - homepage = https://github.com/toggl/toggldesktop; + homepage = "https://github.com/toggl/toggldesktop"; license = licenses.bsd3; maintainers = with maintainers; [ yegortimoshenko ]; platforms = platforms.linux; diff --git a/pkgs/applications/misc/tomboy/default.nix b/pkgs/applications/misc/tomboy/default.nix index d8a6f86f104..ff4faf139e6 100644 --- a/pkgs/applications/misc/tomboy/default.nix +++ b/pkgs/applications/misc/tomboy/default.nix @@ -34,7 +34,7 @@ stdenv.mkDerivation { ''; meta = with stdenv.lib; { - homepage = https://wiki.gnome.org/Apps/Tomboy; + homepage = "https://wiki.gnome.org/Apps/Tomboy"; description = "A simple note-taking application with synchronization"; platforms = platforms.linux; license = stdenv.lib.licenses.lgpl2; diff --git a/pkgs/applications/misc/toot/default.nix b/pkgs/applications/misc/toot/default.nix index 13e0cdfb260..7f1c3648f24 100644 --- a/pkgs/applications/misc/toot/default.nix +++ b/pkgs/applications/misc/toot/default.nix @@ -1,14 +1,14 @@ { stdenv, fetchFromGitHub, python3Packages }: python3Packages.buildPythonApplication rec { - version = "0.24.0"; + version = "0.25.2"; name = "toot-${version}"; src = fetchFromGitHub { owner = "ihabunek"; repo = "toot"; rev = version; - sha256 = "1szpmkxc1lqfphicfcj0z7b1nq97xmb4ppwf806p8w0fxj1shil3"; + sha256 = "0g18x8pbwhk2d3aphah6dqqbhz62k48pwx63flsnqd4brccd0jkh"; }; checkInputs = with python3Packages; [ pytest ]; diff --git a/pkgs/applications/misc/tootle/default.nix b/pkgs/applications/misc/tootle/default.nix index 15c675c902f..904782f3e1f 100644 --- a/pkgs/applications/misc/tootle/default.nix +++ b/pkgs/applications/misc/tootle/default.nix @@ -62,9 +62,15 @@ stdenv.mkDerivation rec { patchShebangs meson/post_install.py ''; + passthru = { + updateScript = pantheon.updateScript { + attrPath = pname; + }; + }; + meta = with stdenv.lib; { description = "Simple Mastodon client designed for elementary OS"; - homepage = https://github.com/bleakgrey/tootle; + homepage = "https://github.com/bleakgrey/tootle"; license = licenses.gpl3; maintainers = with maintainers; [ dtzWill ]; }; diff --git a/pkgs/applications/misc/tpmmanager/default.nix b/pkgs/applications/misc/tpmmanager/default.nix index b955711d003..2bbb95d01ae 100644 --- a/pkgs/applications/misc/tpmmanager/default.nix +++ b/pkgs/applications/misc/tpmmanager/default.nix @@ -31,7 +31,7 @@ stdenv.mkDerivation rec { ''; meta = { - homepage = https://projects.sirrix.com/trac/tpmmanager; + homepage = "https://projects.sirrix.com/trac/tpmmanager"; description = "Tool for managing the TPM"; license = stdenv.lib.licenses.gpl2; maintainers = with stdenv.lib.maintainers; [ tstrobel ]; diff --git a/pkgs/applications/misc/translate-shell/default.nix b/pkgs/applications/misc/translate-shell/default.nix index a2f6980abd9..e418ee69b95 100644 --- a/pkgs/applications/misc/translate-shell/default.nix +++ b/pkgs/applications/misc/translate-shell/default.nix @@ -28,7 +28,7 @@ stdenv.mkDerivation rec { ''; meta = with stdenv.lib; { - homepage = https://www.soimort.org/translate-shell; + homepage = "https://www.soimort.org/translate-shell"; description = "Command-line translator using Google Translate, Bing Translator, Yandex.Translate, and Apertium"; license = licenses.unlicense; maintainers = with maintainers; [ ebzzry infinisil ]; diff --git a/pkgs/applications/misc/tthsum/default.nix b/pkgs/applications/misc/tthsum/default.nix index 76ac3f75b26..792b80d0462 100644 --- a/pkgs/applications/misc/tthsum/default.nix +++ b/pkgs/applications/misc/tthsum/default.nix @@ -33,7 +33,7 @@ stdenv.mkDerivation rec { The specification of the THEX algorithm is at: http://adc.sourceforge.net/draft-jchapweske-thex-02.html ''; - homepage = http://tthsum.devs.nu/; + homepage = "http://tthsum.devs.nu/"; license = licenses.gpl3Plus; maintainers = [ maintainers.ebzzry ]; platforms = platforms.unix; diff --git a/pkgs/applications/misc/tuir/default.nix b/pkgs/applications/misc/tuir/default.nix new file mode 100644 index 00000000000..e479dc26f17 --- /dev/null +++ b/pkgs/applications/misc/tuir/default.nix @@ -0,0 +1,32 @@ +{ lib, fetchFromGitLab, python3Packages }: + +with python3Packages; +buildPythonApplication rec { + pname = "tuir"; + version = "1.28.3"; + + src = fetchFromGitLab { + owner = "ajak"; + repo = pname; + rev = "v${version}"; + sha256 = "0nhpbb0vdngwb0fhlimjgm3wq2s67m4rb3vv920zyllnmfplk0lk"; + }; + + # Tests try to access network + doCheck = false; + + checkPhase = '' + py.test + ''; + + checkInputs = [ coverage coveralls docopt mock pylint pytest vcrpy ]; + + propagatedBuildInputs = [ beautifulsoup4 decorator kitchen requests ]; + + meta = with lib; { + description = "Browse Reddit from your Terminal (fork of rtv)"; + homepage = "https://gitlab.com/ajak/tuir/"; + license = licenses.mit; + maintainers = with maintainers; [ filalex77 matthiasbeyer ]; + }; +} diff --git a/pkgs/applications/misc/tut/default.nix b/pkgs/applications/misc/tut/default.nix new file mode 100644 index 00000000000..586766e5456 --- /dev/null +++ b/pkgs/applications/misc/tut/default.nix @@ -0,0 +1,24 @@ +{ stdenv, buildGoPackage, fetchFromGitHub }: + +buildGoPackage rec { + pname = "tut"; + version = "0.0.2"; + + goPackagePath = "github.com/RasmusLindroth/tut"; + goDeps = ./deps.nix; + + src = fetchFromGitHub { + owner = "RasmusLindroth"; + repo = pname; + rev = version; + sha256 = "0c44mgkmjnfpf06cj63i6mscxcsm5cipm0l4n6pjxhc7k3qhgsfw"; + }; + + meta = with stdenv.lib; { + description = "A TUI for Mastodon with vim inspired keys"; + homepage = "https://github.com/RasmusLindroth/tut"; + license = licenses.mit; + maintainers = with maintainers; [ equirosa ]; + platforms = platforms.unix; + }; +} diff --git a/pkgs/applications/misc/tut/deps.nix b/pkgs/applications/misc/tut/deps.nix new file mode 100644 index 00000000000..89453f121a9 --- /dev/null +++ b/pkgs/applications/misc/tut/deps.nix @@ -0,0 +1,273 @@ +# file generated from go.mod using vgo2nix (https://github.com/adisbladis/vgo2nix) +[ + { + goPackagePath = "github.com/BurntSushi/toml"; + fetch = { + type = "git"; + url = "https://github.com/BurntSushi/toml"; + rev = "v0.3.1"; + sha256 = "1fjdwwfzyzllgiwydknf1pwjvy49qxfsczqx5gz3y0izs7as99j6"; + }; + } + { + goPackagePath = "github.com/DATA-DOG/go-sqlmock"; + fetch = { + type = "git"; + url = "https://github.com/DATA-DOG/go-sqlmock"; + rev = "v1.3.3"; + sha256 = "1xrly2vmy1mgj9dbkmivhh8gvq6v9f9xy2yp2dw54i1895zzs928"; + }; + } + { + goPackagePath = "github.com/PuerkitoBio/goquery"; + fetch = { + type = "git"; + url = "https://github.com/PuerkitoBio/goquery"; + rev = "v1.5.0"; + sha256 = "1fqf4rs66wy02nxz6w4mvs2qawf2j8srz17i294v64y8gvxisp56"; + }; + } + { + goPackagePath = "github.com/andybalholm/cascadia"; + fetch = { + type = "git"; + url = "https://github.com/andybalholm/cascadia"; + rev = "v1.0.0"; + sha256 = "09j8cavbhqqdxjqrkwbc40g8p0i49zf3184rpjm5p2rjbprcghcc"; + }; + } + { + goPackagePath = "github.com/davecgh/go-spew"; + fetch = { + type = "git"; + url = "https://github.com/davecgh/go-spew"; + rev = "v1.1.1"; + sha256 = "0hka6hmyvp701adzag2g26cxdj47g21x6jz4sc6jjz1mn59d474y"; + }; + } + { + goPackagePath = "github.com/fatih/color"; + fetch = { + type = "git"; + url = "https://github.com/fatih/color"; + rev = "v1.9.0"; + sha256 = "086z8ssmr1fn9ba4mqnw7pnccfpys6l5yfhvycv1gdrsk7n27mvs"; + }; + } + { + goPackagePath = "github.com/gdamore/encoding"; + fetch = { + type = "git"; + url = "https://github.com/gdamore/encoding"; + rev = "v1.0.0"; + sha256 = "1vmm5zll92i2fm4ajqx0gyx0p9j36496x5nabi3y0x7h0inv0pk9"; + }; + } + { + goPackagePath = "github.com/gdamore/tcell"; + fetch = { + type = "git"; + url = "https://github.com/gdamore/tcell"; + rev = "v1.3.0"; + sha256 = "1csg9qkmbg4ksj5247kgqcy7bxvqgz6b98r0rv2s4c1mkc99gx2r"; + }; + } + { + goPackagePath = "github.com/gorilla/websocket"; + fetch = { + type = "git"; + url = "https://github.com/gorilla/websocket"; + rev = "v1.4.1"; + sha256 = "03n1n0nwz3k9qshmriycqznnnvd3dkzsfwpnfjzzvafjxk9kyapv"; + }; + } + { + goPackagePath = "github.com/kyoh86/xdg"; + fetch = { + type = "git"; + url = "https://github.com/kyoh86/xdg"; + rev = "v1.2.0"; + sha256 = "0a5nz53fdz1c2qvwlf2dpjdd72nxri95i6q4b07c37kiipgaxncn"; + }; + } + { + goPackagePath = "github.com/lucasb-eyer/go-colorful"; + fetch = { + type = "git"; + url = "https://github.com/lucasb-eyer/go-colorful"; + rev = "v1.0.3"; + sha256 = "12bgz6dxbb2ki1g3x7fg9ipsjgfkd58fp7cdpv63h4kvlj2n7j69"; + }; + } + { + goPackagePath = "github.com/mattn/go-colorable"; + fetch = { + type = "git"; + url = "https://github.com/mattn/go-colorable"; + rev = "v0.1.4"; + sha256 = "1yxcz08kminqr1221zxpibnbzfcgs3fafin0z9zqb3gqvf74jywz"; + }; + } + { + goPackagePath = "github.com/mattn/go-isatty"; + fetch = { + type = "git"; + url = "https://github.com/mattn/go-isatty"; + rev = "v0.0.11"; + sha256 = "0h671sv7hfprja495kavazkalkx7xzaqksjh13brcnwq67ijrali"; + }; + } + { + goPackagePath = "github.com/mattn/go-mastodon"; + fetch = { + type = "git"; + url = "https://github.com/mattn/go-mastodon"; + rev = "3e91c76504df"; + sha256 = "1wh2hqrzx80gfs1y34f4h68mnz83asx88v0bsw372ch5j1shswlr"; + }; + } + { + goPackagePath = "github.com/mattn/go-runewidth"; + fetch = { + type = "git"; + url = "https://github.com/mattn/go-runewidth"; + rev = "v0.0.8"; + sha256 = "14ilkbhnhl8yj443dd1ga4biapswv4g0b4vm2mix78a8srdww39j"; + }; + } + { + goPackagePath = "github.com/mattn/go-tty"; + fetch = { + type = "git"; + url = "https://github.com/mattn/go-tty"; + rev = "v0.0.3"; + sha256 = "0d1d63q02pc5k5ga8bw4yjbkrli2769vg237psajsskjirjy53vf"; + }; + } + { + goPackagePath = "github.com/microcosm-cc/bluemonday"; + fetch = { + type = "git"; + url = "https://github.com/microcosm-cc/bluemonday"; + rev = "v1.0.2"; + sha256 = "0j0aylsxqjcj49w7ph8cmpaqjlpvg7mb5mrcrd9bg71dlb9z9ir2"; + }; + } + { + goPackagePath = "github.com/pelletier/go-toml"; + fetch = { + type = "git"; + url = "https://github.com/pelletier/go-toml"; + rev = "v1.6.0"; + sha256 = "0l2830pi64fg0bdsyd5afkbw0p7879pppzdqqk3c7vjrjfmi5xbq"; + }; + } + { + goPackagePath = "github.com/rivo/tview"; + fetch = { + type = "git"; + url = "https://github.com/rivo/tview"; + rev = "cd38d7432498"; + sha256 = "1rs048gf1jip0p20qir99vy5k0f3m54h7bh56l1sh8lxij5qj406"; + }; + } + { + goPackagePath = "github.com/rivo/uniseg"; + fetch = { + type = "git"; + url = "https://github.com/rivo/uniseg"; + rev = "v0.1.0"; + sha256 = "0flpc1px1l6b1lxzhdxi0mvpkkjchppvgxshxxnlmm40s76i9ww5"; + }; + } + { + goPackagePath = "github.com/tomnomnom/linkheader"; + fetch = { + type = "git"; + url = "https://github.com/tomnomnom/linkheader"; + rev = "02ca5825eb80"; + sha256 = "1ghrv28vrvvrpyr4d4q817yby8g1j04mid8ql00sds1pvfv67d32"; + }; + } + { + goPackagePath = "github.com/urfave/cli"; + fetch = { + type = "git"; + url = "https://github.com/urfave/cli"; + rev = "v1.20.0"; + sha256 = "0y6f4sbzkiiwrxbl15biivj8c7qwxnvm3zl2dd3mw4wzg4x10ygj"; + }; + } + { + goPackagePath = "golang.org/x/crypto"; + fetch = { + type = "git"; + url = "https://go.googlesource.com/crypto"; + rev = "c2843e01d9a2"; + sha256 = "01xgxbj5r79nmisdvpq48zfy8pzaaj90bn6ngd4nf33j9ar1dp8r"; + }; + } + { + goPackagePath = "golang.org/x/net"; + fetch = { + type = "git"; + url = "https://go.googlesource.com/net"; + rev = "118fecf932d8"; + sha256 = "1rwrqfwh2yhnnhy7x0mbmlmk0rg1mi2jjad476y45i259a0c2ym6"; + }; + } + { + goPackagePath = "golang.org/x/sync"; + fetch = { + type = "git"; + url = "https://go.googlesource.com/sync"; + rev = "cd5d95a43a6e"; + sha256 = "1nqkyz2y1qvqcma52ijh02s8aiqmkfb95j08f6zcjhbga3ds6hds"; + }; + } + { + goPackagePath = "golang.org/x/sys"; + fetch = { + type = "git"; + url = "https://go.googlesource.com/sys"; + rev = "12a6c2dcc1e4"; + sha256 = "0z1g49d36kh459dz0xhnss2f88vw7n5b3l3637v46f7daddvln67"; + }; + } + { + goPackagePath = "golang.org/x/text"; + fetch = { + type = "git"; + url = "https://go.googlesource.com/text"; + rev = "v0.3.2"; + sha256 = "0flv9idw0jm5nm8lx25xqanbkqgfiym6619w575p7nrdh0riqwqh"; + }; + } + { + goPackagePath = "golang.org/x/tools"; + fetch = { + type = "git"; + url = "https://go.googlesource.com/tools"; + rev = "90fa682c2a6e"; + sha256 = "03ic2xsy51jw9749wl7gszdbz99iijbd2bckgygl6cm9w5m364ak"; + }; + } + { + goPackagePath = "gopkg.in/check.v1"; + fetch = { + type = "git"; + url = "https://gopkg.in/check.v1"; + rev = "20d25e280405"; + sha256 = "0k1m83ji9l1a7ng8a7v40psbymxasmssbrrhpdv2wl4rhs0nc3np"; + }; + } + { + goPackagePath = "gopkg.in/yaml.v2"; + fetch = { + type = "git"; + url = "https://gopkg.in/yaml.v2"; + rev = "v2.2.4"; + sha256 = "11bwj757wi8kdrcnlgfqb8vv2d2xdhlghmyagd19i62khrkchsg2"; + }; + } +] diff --git a/pkgs/applications/misc/tvbrowser/bin.nix b/pkgs/applications/misc/tvbrowser/bin.nix index 38865ca4f3d..68d25e4e3de 100644 --- a/pkgs/applications/misc/tvbrowser/bin.nix +++ b/pkgs/applications/misc/tvbrowser/bin.nix @@ -48,7 +48,7 @@ in stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Electronic TV Program Guide"; - homepage = https://www.tvbrowser.org/; + homepage = "https://www.tvbrowser.org/"; license = licenses.gpl3; platforms = platforms.linux; maintainers = with maintainers; [ jfrankenau ]; diff --git a/pkgs/applications/misc/twmn/default.nix b/pkgs/applications/misc/twmn/default.nix index cd58219721c..69f58b828c4 100644 --- a/pkgs/applications/misc/twmn/default.nix +++ b/pkgs/applications/misc/twmn/default.nix @@ -28,7 +28,7 @@ mkDerivation { meta = { description = "A notification system for tiling window managers"; - homepage = https://github.com/sboli/twmn; + homepage = "https://github.com/sboli/twmn"; platforms = with lib.platforms; linux; maintainers = [ lib.maintainers.matejc ]; license = lib.licenses.lgpl3; diff --git a/pkgs/applications/misc/tzupdate/default.nix b/pkgs/applications/misc/tzupdate/default.nix index ae418544132..5c2b1312faf 100644 --- a/pkgs/applications/misc/tzupdate/default.nix +++ b/pkgs/applications/misc/tzupdate/default.nix @@ -1,22 +1,22 @@ -{ stdenv, python }: +{ stdenv, python3 }: let - inherit (python.pkgs) buildPythonApplication fetchPypi requests; + inherit (python3.pkgs) buildPythonApplication fetchPypi requests; in buildPythonApplication rec { pname = "tzupdate"; - version = "1.5.0"; + version = "2.0.0"; src = fetchPypi { inherit pname version; - sha256 = "13np40h64bgkcj10qw6f4nb51p47bb20fd6pzxq8xbr645a4d34m"; + sha256 = "12jvyza9pfhazkzq94nizacknnp32lf7kalrjmpz1z2bqqxhx0fm"; }; propagatedBuildInputs = [ requests ]; meta = with stdenv.lib; { - description = "Update timezone information based on geoip."; - homepage = https://github.com/cdown/tzupdate; + description = "Update timezone information based on geoip"; + homepage = "https://github.com/cdown/tzupdate"; maintainers = [ maintainers.michaelpj ]; license = licenses.unlicense; }; diff --git a/pkgs/applications/misc/udevil/default.nix b/pkgs/applications/misc/udevil/default.nix index 3cc4fcc1517..dbf721888df 100644 --- a/pkgs/applications/misc/udevil/default.nix +++ b/pkgs/applications/misc/udevil/default.nix @@ -2,7 +2,7 @@ stdenv.mkDerivation { name = "udevil-0.4.4"; src = fetchurl { - url = https://github.com/IgnorantGuru/udevil/archive/0.4.4.tar.gz; + url = "https://github.com/IgnorantGuru/udevil/archive/0.4.4.tar.gz"; sha256 = "0z1bhaayambrcn7bgnrqk445k50ifabmw8q4i9qj49nnbcvxhbxd"; }; nativeBuildInputs = [ pkgconfig ]; @@ -22,7 +22,7 @@ stdenv.mkDerivation { patches = [ ./device-info-sys-stat.patch ]; meta = { description = "A command line Linux program which mounts and unmounts removable devices without a password, shows device info, and monitors device changes"; - homepage = https://ignorantguru.github.io/udevil/; + homepage = "https://ignorantguru.github.io/udevil/"; platforms = stdenv.lib.platforms.linux; license = stdenv.lib.licenses.gpl3; }; diff --git a/pkgs/applications/misc/udiskie/default.nix b/pkgs/applications/misc/udiskie/default.nix index 63892439fa0..aa2246603f3 100644 --- a/pkgs/applications/misc/udiskie/default.nix +++ b/pkgs/applications/misc/udiskie/default.nix @@ -6,13 +6,13 @@ python3Packages.buildPythonApplication rec { pname = "udiskie"; - version = "1.7.7"; + version = "2.1.0"; src = fetchFromGitHub { owner = "coldfix"; repo = "udiskie"; rev = version; - sha256 = "1j17z26vy44il2s9zgchvhq280vq8ag64ddi35f35b444wz2azlb"; + sha256 = "1d8fz0jrnpgldvdwpl27az2kjhpbcjd8nqn3qc2v6682q12p3jqb"; }; nativeBuildInputs = [ @@ -56,7 +56,7 @@ python3Packages.buildPythonApplication rec { meta = with stdenv.lib; { description = "Removable disk automounter for udisks"; license = licenses.mit; - homepage = https://github.com/coldfix/udiskie; + homepage = "https://github.com/coldfix/udiskie"; maintainers = with maintainers; [ AndersonTorres ]; }; } diff --git a/pkgs/applications/misc/ulauncher/0001-Adjust-get_data_path-for-NixOS.patch b/pkgs/applications/misc/ulauncher/0001-Adjust-get_data_path-for-NixOS.patch new file mode 100644 index 00000000000..f14d7f71802 --- /dev/null +++ b/pkgs/applications/misc/ulauncher/0001-Adjust-get_data_path-for-NixOS.patch @@ -0,0 +1,55 @@ +From 86cc27022015697a61d1ec1b13e52f9dbe7f6c57 Mon Sep 17 00:00:00 2001 +From: worldofpeace +Date: Mon, 23 Mar 2020 18:34:00 -0400 +Subject: [PATCH] Adjust get_data_path for NixOS + +We construct the ulauncher data path from xdg_data_dirs +and prevent it from being a nix store path or being xdg_data_home. +We do this to prevent /nix/store paths being hardcoded to shortcuts.json. +On NixOS this path will either be /run/current-system/sw/share/ulauncher +or $HOME/.nix-profile/share/ulauncher if the user used nix-env. +--- + ulauncher/config.py | 27 ++++++++++++++++++--------- + 1 file changed, 18 insertions(+), 9 deletions(-) + +diff --git a/ulauncher/config.py b/ulauncher/config.py +index f21014e..cc636e1 100644 +--- a/ulauncher/config.py ++++ b/ulauncher/config.py +@@ -50,15 +50,24 @@ def get_data_path(): + is specified at installation time. + """ + +- # Get pathname absolute or relative. +- path = os.path.join( +- os.path.dirname(__file__), __ulauncher_data_directory__) +- +- abs_data_path = os.path.abspath(path) +- if not os.path.exists(abs_data_path): +- raise ProjectPathNotFoundError(abs_data_path) +- +- return abs_data_path ++ paths = list( ++ filter( ++ os.path.exists, ++ [ ++ os.path.join(dir, "ulauncher") ++ for dir in xdg_data_dirs ++ # Get path that isn't in the /nix/store so they don't get hardcoded into configs ++ if not dir.startswith("/nix/store/") ++ # Exclude .local/share/ulauncher which isn't what we want ++ if not dir.startswith(xdg_data_home) ++ ], ++ ) ++ ) ++ ++ try: ++ return paths[0] ++ except: ++ raise ProjectPathNotFoundError() + + + def is_wayland(): +-- +2.25.1 + diff --git a/pkgs/applications/misc/ulauncher/default.nix b/pkgs/applications/misc/ulauncher/default.nix index 9fa284aba43..34ca82b8d04 100644 --- a/pkgs/applications/misc/ulauncher/default.nix +++ b/pkgs/applications/misc/ulauncher/default.nix @@ -1,8 +1,11 @@ { stdenv , fetchurl -, python27Packages +, python3Packages +, gdk-pixbuf +, glib , gnome3 , gobject-introspection +, gtk3 , wrapGAppsHook , webkitgtk , libnotify @@ -11,49 +14,54 @@ , intltool , wmctrl , xvfb_run +, librsvg }: -python27Packages.buildPythonApplication rec { +python3Packages.buildPythonApplication rec { pname = "ulauncher"; - version = "4.4.0.r1"; + version = "5.7.3"; - # Python 3 support is currently in development - # on the dev branch and 5.x.x releases - disabled = ! python27Packages.isPy27; + disabled = python3Packages.isPy27; src = fetchurl { url = "https://github.com/Ulauncher/Ulauncher/releases/download/${version}/ulauncher_${version}.tar.gz"; - sha256 = "12v7qpjhf0842ivsfflsl2zlvhiaw25f9ffv7vhnkvrhrmksim9f"; + sha256 = "0wq2zsq3496fjfg89q01dsm7sb7kv92sycvqm6ad8z1z2kpisrbh"; }; - nativeBuildInputs = with python27Packages; [ + nativeBuildInputs = with python3Packages; [ distutils_extra intltool wrapGAppsHook ]; buildInputs = [ + gdk-pixbuf + glib gnome3.adwaita-icon-theme gobject-introspection + gtk3 keybinder3 libappindicator libnotify + librsvg webkitgtk wmctrl ]; - propagatedBuildInputs = with python27Packages; [ + propagatedBuildInputs = with python3Packages; [ + mock + mypy + mypy-extensions dbus-python - notify pygobject3 pyinotify - pysqlite python-Levenshtein pyxdg + requests websocket_client ]; - checkInputs = with python27Packages; [ + checkInputs = with python3Packages; [ mock pytest pytest-mock @@ -63,6 +71,8 @@ python27Packages.buildPythonApplication rec { patches = [ ./fix-path.patch + ./0001-Adjust-get_data_path-for-NixOS.patch + ./fix-extensions.patch ]; postPatch = '' @@ -73,7 +83,7 @@ python27Packages.buildPythonApplication rec { doCheck = false; preCheck = '' - export PYTHONPATH=$PYTHONPATH:$out/${python27Packages.python.sitePackages} + export PYTHONPATH=$PYTHONPATH:$out/${python3Packages.python.sitePackages} ''; # Simple translation of @@ -95,7 +105,7 @@ python27Packages.buildPythonApplication rec { meta = with stdenv.lib; { description = "A fast application launcher for Linux, written in Python, using GTK"; - homepage = https://ulauncher.io/; + homepage = "https://ulauncher.io/"; license = licenses.gpl3; platforms = platforms.linux; maintainers = with maintainers; [ aaronjanse worldofpeace ]; diff --git a/pkgs/applications/misc/ulauncher/fix-extensions.patch b/pkgs/applications/misc/ulauncher/fix-extensions.patch new file mode 100644 index 00000000000..f6d00f9fafd --- /dev/null +++ b/pkgs/applications/misc/ulauncher/fix-extensions.patch @@ -0,0 +1,13 @@ +diff --git a/ulauncher/api/server/ExtensionRunner.py b/ulauncher/api/server/ExtensionRunner.py +index 22042bf..f7b31c8 100644 +--- a/ulauncher/api/server/ExtensionRunner.py ++++ b/ulauncher/api/server/ExtensionRunner.py +@@ -79,7 +79,7 @@ class ExtensionRunner: + cmd = [sys.executable, os.path.join(self.extensions_dir, extension_id, 'main.py')] + env = os.environ.copy() + env['ULAUNCHER_WS_API'] = self.extension_server.generate_ws_url(extension_id) +- env['PYTHONPATH'] = ':'.join(filter(bool, [ULAUNCHER_APP_DIR, os.getenv('PYTHONPATH')])) ++ env['PYTHONPATH'] = ':'.join([ULAUNCHER_APP_DIR] + sys.path) + + if self.verbose: + env['VERBOSE'] = '1' diff --git a/pkgs/applications/misc/upwork/default.nix b/pkgs/applications/misc/upwork/default.nix new file mode 100644 index 00000000000..3757c8ce3bb --- /dev/null +++ b/pkgs/applications/misc/upwork/default.nix @@ -0,0 +1,55 @@ +{ stdenv, fetchurl, dpkg, wrapGAppsHook, autoPatchelfHook, writeShellScript +, alsaLib, atk, at-spi2-atk, at-spi2-core, cairo, cups, dbus, expat, fontconfig, freetype +, gdk-pixbuf, glib, gtk3, libnotify, libX11, libXcomposite, libXcursor, libXdamage, libuuid +, libXext, libXfixes, libXi, libXrandr, libXrender, libXtst, nspr, nss, libxcb +, pango, systemd, libXScrnSaver, libcxx, libpulseaudio }: + +stdenv.mkDerivation rec { + pname = "upwork"; + version = "5.3.3-883"; + + src = fetchurl { + url = "https://updates-desktopapp.upwork.com/binaries/v5_3_3_883_1f817bc1fefd44e7/upwork_5.3.3.883_amd64.deb"; + sha256 = "072zns79w4h46bvbj23rvr8i12sf2l378ry0z3hchwcimkrph9wx"; + }; + + dontWrapGApps = true; + + nativeBuildInputs = [ + dpkg + wrapGAppsHook + autoPatchelfHook + ]; + + buildInputs = [ + libcxx systemd libpulseaudio + stdenv.cc.cc alsaLib atk at-spi2-atk at-spi2-core cairo cups dbus expat fontconfig freetype + gdk-pixbuf glib gtk3 libnotify libX11 libXcomposite libuuid + libXcursor libXdamage libXext libXfixes libXi libXrandr libXrender + libXtst nspr nss libxcb pango systemd libXScrnSaver + ]; + + libPath = stdenv.lib.makeLibraryPath buildInputs; + + unpackPhase = '' + dpkg-deb -x ${src} ./ + ''; + + installPhase = '' + mv usr $out + mv opt $out + sed -e "s|/opt/Upwork|$out/bin|g" -i $out/share/applications/upwork.desktop + + makeWrapper $out/opt/Upwork/upwork \ + $out/bin/upwork \ + --prefix XDG_DATA_DIRS : "${gtk3}/share/gsettings-schemas/${gtk3.name}/" \ + --prefix LD_LIBRARY_PATH : ${libPath} + ''; + + meta = with stdenv.lib; { + description = "Online freelancing platform desktop application for time tracking"; + homepage = "https://www.upwork.com/ab/downloads/"; + license = licenses.unfree; + maintainers = with maintainers; [ zakkor ]; + }; +} \ No newline at end of file diff --git a/pkgs/applications/misc/urlscan/default.nix b/pkgs/applications/misc/urlscan/default.nix index 791075e4dd9..ef4684689b8 100644 --- a/pkgs/applications/misc/urlscan/default.nix +++ b/pkgs/applications/misc/urlscan/default.nix @@ -17,7 +17,7 @@ python3Packages.buildPythonApplication rec { meta = with stdenv.lib; { description = "Mutt and terminal url selector (similar to urlview)"; - homepage = https://github.com/firecat53/urlscan; + homepage = "https://github.com/firecat53/urlscan"; license = licenses.gpl2; maintainers = with maintainers; [ dpaetzel jfrankenau ]; }; diff --git a/pkgs/applications/misc/urlview/default.nix b/pkgs/applications/misc/urlview/default.nix index ad29c8f94d8..6430a1bc719 100644 --- a/pkgs/applications/misc/urlview/default.nix +++ b/pkgs/applications/misc/urlview/default.nix @@ -43,7 +43,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Extract URLs from text"; - homepage = https://packages.qa.debian.org/u/urlview.html; + homepage = "https://packages.qa.debian.org/u/urlview.html"; license = licenses.gpl2; platforms = with platforms; linux ++ darwin; maintainers = with maintainers; [ ma27 ]; diff --git a/pkgs/applications/misc/usync/default.nix b/pkgs/applications/misc/usync/default.nix index 344c07d845b..9234d8ad202 100644 --- a/pkgs/applications/misc/usync/default.nix +++ b/pkgs/applications/misc/usync/default.nix @@ -22,7 +22,7 @@ stdenv.mkDerivation rec { ''; meta = with stdenv.lib; { - homepage = https://github.com/ebzzry/usync; + homepage = "https://github.com/ebzzry/usync"; description = "A simple site-to-site synchronization tool"; license = licenses.mit; maintainers = [ maintainers.ebzzry ]; diff --git a/pkgs/applications/misc/valentina/default.nix b/pkgs/applications/misc/valentina/default.nix index 5a12465c4c4..6a1dd06de32 100644 --- a/pkgs/applications/misc/valentina/default.nix +++ b/pkgs/applications/misc/valentina/default.nix @@ -58,7 +58,7 @@ stdenv.mkDerivation rec { meta = { description = "An open source sewing pattern drafting software"; - homepage = https://valentinaproject.bitbucket.io/; + homepage = "https://valentinaproject.bitbucket.io/"; license = licenses.gpl3; platforms = platforms.linux; maintainers = with maintainers; [ jfrankenau ]; diff --git a/pkgs/applications/misc/variety/default.nix b/pkgs/applications/misc/variety/default.nix index 6d8da4a1007..4241f915329 100644 --- a/pkgs/applications/misc/variety/default.nix +++ b/pkgs/applications/misc/variety/default.nix @@ -66,7 +66,7 @@ buildPythonApplication rec { meta = with lib; { description = "A wallpaper manager for Linux systems. It supports numerous desktops and wallpaper sources, including local files and online services: Flickr, Wallhaven, Unsplash, and more"; - homepage = https://github.com/varietywalls/variety; + homepage = "https://github.com/varietywalls/variety"; license = licenses.gpl3; maintainers = [ maintainers.zfnmxt ]; }; diff --git a/pkgs/applications/misc/vcal/default.nix b/pkgs/applications/misc/vcal/default.nix index b25e7f76cef..9519e033473 100644 --- a/pkgs/applications/misc/vcal/default.nix +++ b/pkgs/applications/misc/vcal/default.nix @@ -30,7 +30,7 @@ stdenv.mkDerivation rec { meta = with lib; { description = "Parser for VCalendar and ICalendar files, usable from the command line"; - homepage = https://waynemorrison.com/software/; + homepage = "https://waynemorrison.com/software/"; license = licenses.asl20; maintainers = with maintainers; [ peterhoeg ]; }; diff --git a/pkgs/applications/misc/veracrypt/default.nix b/pkgs/applications/misc/veracrypt/default.nix index fe1de349cff..07e0a046ac5 100644 --- a/pkgs/applications/misc/veracrypt/default.nix +++ b/pkgs/applications/misc/veracrypt/default.nix @@ -46,7 +46,7 @@ stdenv.mkDerivation rec { meta = { description = "Free Open-Source filesystem on-the-fly encryption"; - homepage = https://www.veracrypt.fr/; + homepage = "https://www.veracrypt.fr/"; license = [ licenses.asl20 /* or */ "TrueCrypt License version 3.0" ]; maintainers = with maintainers; [ dsferruzza ]; platforms = platforms.linux; diff --git a/pkgs/applications/misc/verbiste/default.nix b/pkgs/applications/misc/verbiste/default.nix index 680573fd304..a322756c157 100644 --- a/pkgs/applications/misc/verbiste/default.nix +++ b/pkgs/applications/misc/verbiste/default.nix @@ -17,7 +17,7 @@ stdenv.mkDerivation rec { enableParallelBuilding = true; meta = with stdenv.lib; { - homepage = http://sarrazip.com/dev/verbiste.html; + homepage = "http://sarrazip.com/dev/verbiste.html"; description = "French and Italian verb conjugator"; license = licenses.gpl2Plus; platforms = platforms.linux; diff --git a/pkgs/applications/misc/vifm/default.nix b/pkgs/applications/misc/vifm/default.nix index f71e7a7a960..d939beb443e 100644 --- a/pkgs/applications/misc/vifm/default.nix +++ b/pkgs/applications/misc/vifm/default.nix @@ -37,7 +37,7 @@ in stdenv.mkDerivation rec { platforms = if mediaSupport then platforms.linux else platforms.unix; license = licenses.gpl2; downloadPage = "https://vifm.info/downloads.shtml"; - homepage = https://vifm.info/; + homepage = "https://vifm.info/"; inherit version; updateWalker = true; }; diff --git a/pkgs/applications/misc/viking/default.nix b/pkgs/applications/misc/viking/default.nix index c5ba35d9747..03d3256e375 100644 --- a/pkgs/applications/misc/viking/default.nix +++ b/pkgs/applications/misc/viking/default.nix @@ -1,24 +1,47 @@ -{ fetchurl, stdenv, makeWrapper, pkgconfig, intltool, gettext, gtk2, expat, curl +{ fetchurl, fetchpatch, stdenv, makeWrapper +, pkgconfig, intltool, gettext, gtk2, expat, curl , gpsd, bc, file, gnome-doc-utils, libexif, libxml2, libxslt, scrollkeeper -, docbook_xml_dtd_412, gexiv2, sqlite, gpsbabel, expect -, geoclue2, liboauth, nettle }: +, docbook_xml_dtd_412, gexiv2, gpsbabel, expect +, withMapnik ? false, mapnik +, withMBTiles ? true, sqlite +, withOAuth ? true, liboauth +, withMd5Hash ? true, nettle +, withGeoClue ? true, geoclue2 }: stdenv.mkDerivation rec { pname = "viking"; - version = "1.7"; + version = "1.8"; src = fetchurl { url = "mirror://sourceforge/viking/viking/viking-${version}.tar.bz2"; - sha256 = "092q2dv0rcz12nh2js1z1ralib1553dmzy9pdrvz9nv2vf61wybw"; + sha256 = "1a0g0fbj4q5s9p8fv0mqvxws10q3naj81l72sz30vvqpbz6vqp45"; }; + patches = [ + # Fix build without mapnik and sqlite https://github.com/viking-gps/viking/pull/79 + (fetchpatch { + url = "https://github.com/viking-gps/viking/commit/995feefcb97bdb1590ed018224cf47ce197fe0c1.patch"; + sha256 = "1xb0b76kg690fag9mw3yfj5k766jmqp1sm8q4f29n1h3nz5g8izd"; + }) + ]; + nativeBuildInputs = [ pkgconfig ]; buildInputs = [ makeWrapper intltool gettext gtk2 expat curl gpsd bc file gnome-doc-utils - libexif libxml2 libxslt scrollkeeper docbook_xml_dtd_412 gexiv2 sqlite - geoclue2 liboauth nettle - ]; + libexif libxml2 libxslt scrollkeeper docbook_xml_dtd_412 gexiv2 + ] ++ stdenv.lib.optional withMapnik mapnik + ++ stdenv.lib.optional withGeoClue geoclue2 + ++ stdenv.lib.optional withMd5Hash nettle + ++ stdenv.lib.optional withOAuth liboauth + ++ stdenv.lib.optional withMBTiles sqlite; - configureFlags = [ "--disable-scrollkeeper --disable-mapnik" ]; + configureFlags = [ + "--disable-scrollkeeper" + (stdenv.lib.enableFeature withMapnik "mapnik") + (stdenv.lib.enableFeature withGeoClue "geoclue") + (stdenv.lib.enableFeature withMd5Hash "nettle") + (stdenv.lib.enableFeature withOAuth "oauth") + (stdenv.lib.enableFeature withMBTiles "mbtiles") + ]; preBuild = '' sed -i help/Makefile \ @@ -43,9 +66,9 @@ stdenv.mkDerivation rec { on the map, make new tracks and waypoints, see real-time GPS position, etc. ''; - homepage = https://sourceforge.net/projects/viking/; + homepage = "https://sourceforge.net/projects/viking/"; license = licenses.gpl2Plus; - maintainers = with maintainers; [ pSub ]; + maintainers = with maintainers; [ pSub sikmir ]; platforms = with platforms; linux; }; } diff --git a/pkgs/applications/misc/visidata/default.nix b/pkgs/applications/misc/visidata/default.nix index 64645e00bd8..cc88cb1751e 100644 --- a/pkgs/applications/misc/visidata/default.nix +++ b/pkgs/applications/misc/visidata/default.nix @@ -1,5 +1,16 @@ -{ buildPythonApplication, lib, fetchFromGitHub -, dateutil, pyyaml, openpyxl, xlrd, h5py, fonttools, lxml, pandas, pyshp +{ buildPythonApplication +, lib +, fetchFromGitHub +, dateutil +, pyyaml +, openpyxl +, xlrd +, h5py +, fonttools +, lxml +, pandas +, pyshp +, setuptools }: buildPythonApplication rec { pname = "visidata"; @@ -12,16 +23,26 @@ buildPythonApplication rec { sha256 = "19gs8i6chrrwibz706gib5sixx1cjgfzh7v011kp3izcrn524mc0"; }; - propagatedBuildInputs = [dateutil pyyaml openpyxl xlrd h5py fonttools - lxml pandas pyshp ]; + propagatedBuildInputs = [ + dateutil + pyyaml + openpyxl + xlrd + h5py + fonttools + lxml + pandas + pyshp + setuptools + ]; doCheck = false; meta = { inherit version; description = "Interactive terminal multitool for tabular data"; - license = lib.licenses.gpl3 ; - maintainers = [lib.maintainers.raskin]; + license = lib.licenses.gpl3; + maintainers = [ lib.maintainers.raskin ]; platforms = lib.platforms.linux; homepage = "http://visidata.org/"; }; diff --git a/pkgs/applications/misc/vit/default.nix b/pkgs/applications/misc/vit/default.nix index 9953af19d90..3ae4aacb872 100644 --- a/pkgs/applications/misc/vit/default.nix +++ b/pkgs/applications/misc/vit/default.nix @@ -1,6 +1,8 @@ { lib , python3Packages -, taskwarrior }: +, taskwarrior +, glibcLocales +}: with python3Packages; @@ -21,6 +23,8 @@ buildPythonApplication rec { urwid ]; + checkInputs = [ glibcLocales ]; + makeWrapperArgs = [ "--suffix" "PATH" ":" "${taskwarrior}/bin" ]; preCheck = '' @@ -28,7 +32,7 @@ buildPythonApplication rec { ''; meta = with lib; { - homepage = https://github.com/scottkosty/vit; + homepage = "https://github.com/scottkosty/vit"; description = "Visual Interactive Taskwarrior"; maintainers = with maintainers; [ dtzWill arcnmx ]; platforms = platforms.all; diff --git a/pkgs/applications/misc/volnoti/default.nix b/pkgs/applications/misc/volnoti/default.nix index 3561135ce61..845bdae6bec 100644 --- a/pkgs/applications/misc/volnoti/default.nix +++ b/pkgs/applications/misc/volnoti/default.nix @@ -30,7 +30,7 @@ stdenv.mkDerivation { meta = with stdenv.lib; { description = "Lightweight volume notification for Linux"; - homepage = https://github.com/davidbrazdil/volnoti; + homepage = "https://github.com/davidbrazdil/volnoti"; license = licenses.gpl3; platforms = platforms.linux; maintainers = [ maintainers.gilligan ]; diff --git a/pkgs/applications/misc/vp/default.nix b/pkgs/applications/misc/vp/default.nix index a59a25a144e..7284fa65e8b 100644 --- a/pkgs/applications/misc/vp/default.nix +++ b/pkgs/applications/misc/vp/default.nix @@ -18,7 +18,7 @@ stdenv.mkDerivation rec { NIX_CFLAGS_COMPILE="-I${SDL}/include/SDL -I${SDL_image}/include/SDL"; meta = with stdenv.lib; { - homepage = http://brlcad.org/~erik/; + homepage = "http://brlcad.org/~erik/"; description = "SDL based picture viewer/slideshow"; platforms = platforms.unix; license = licenses.gpl3; diff --git a/pkgs/applications/misc/vym/default.nix b/pkgs/applications/misc/vym/default.nix index a5024cb7f36..ce45471c2f0 100644 --- a/pkgs/applications/misc/vym/default.nix +++ b/pkgs/applications/misc/vym/default.nix @@ -2,11 +2,11 @@ mkDerivation rec { pname = "vym"; - version = "2.7.0"; + version = "2.7.1"; src = fetchurl { url = "mirror://sourceforge/project/vym/${version}/${pname}-${version}.tar.bz2"; - sha256 = "1rnrfqlff7wv6yni8bvff8n90pmn82k82zd4sn1jsx9r1n3qsfkh"; + sha256 = "0lyf0m4y5kn5s47z4sg10215f3jsn3k1bl389jfbh2f5v4srav4g"; }; # Hardcoded paths scattered about all have form share/vym @@ -53,7 +53,7 @@ mkDerivation rec { While a tree like structure like shown on this page can be drawn by hand or any drawing software vym offers much more features to work with such maps. ''; - homepage = http://www.insilmaril.de/vym/; + homepage = "http://www.insilmaril.de/vym/"; license = licenses.gpl2; maintainers = [ maintainers.AndersonTorres ]; platforms = platforms.linux; diff --git a/pkgs/applications/misc/waybar/default.nix b/pkgs/applications/misc/waybar/default.nix index 002bdef7333..408ef0a3233 100644 --- a/pkgs/applications/misc/waybar/default.nix +++ b/pkgs/applications/misc/waybar/default.nix @@ -1,5 +1,6 @@ -{ stdenv, fetchFromGitHub, meson, pkgconfig, ninja -, wayland, wlroots, gtkmm3, libinput, libsigcxx, jsoncpp, fmt, scdoc, spdlog +{ stdenv, fetchFromGitHub, meson, pkgconfig, ninja, wrapGAppsHook +, wayland, wlroots, gtkmm3, libinput, libsigcxx, jsoncpp, fmt, scdoc, spdlog, gtk-layer-shell +, howard-hinnant-date, cmake , traySupport ? true, libdbusmenu-gtk3 , pulseSupport ? false, libpulseaudio , nlSupport ? true, libnl @@ -9,21 +10,21 @@ }: stdenv.mkDerivation rec { pname = "waybar"; - version = "0.8.0"; + version = "0.9.2"; src = fetchFromGitHub { owner = "Alexays"; repo = "Waybar"; rev = version; - sha256 = "0s8ck7qxka0l91ayma6amp9sc8cidi43byqgzcavi3a6id983r1z"; + sha256 = "1gfxyjzwfqznyrpyr3322z3w844i1lh77kly4hcpy9y5gsfmlafy"; }; nativeBuildInputs = [ - meson ninja pkgconfig scdoc + meson ninja pkgconfig scdoc wrapGAppsHook cmake ]; buildInputs = with stdenv.lib; - [ wayland wlroots gtkmm3 libinput libsigcxx jsoncpp fmt spdlog ] + [ wayland wlroots gtkmm3 libinput libsigcxx jsoncpp fmt spdlog gtk-layer-shell howard-hinnant-date ] ++ optional traySupport libdbusmenu-gtk3 ++ optional pulseSupport libpulseaudio ++ optional nlSupport libnl @@ -42,6 +43,7 @@ } ) ++ [ "-Dout=${placeholder "out"}" + "-Dsystemd=disabled" ]; meta = with stdenv.lib; { @@ -49,5 +51,6 @@ license = licenses.mit; maintainers = with maintainers; [ FlorianFranzen minijackson synthetica ]; platforms = platforms.unix; + homepage = "https://github.com/alexays/waybar"; }; } diff --git a/pkgs/applications/misc/wcalc/default.nix b/pkgs/applications/misc/wcalc/default.nix index ff770f516bc..94c56ba5439 100644 --- a/pkgs/applications/misc/wcalc/default.nix +++ b/pkgs/applications/misc/wcalc/default.nix @@ -13,7 +13,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "A command line calculator"; - homepage = http://w-calc.sourceforge.net; + homepage = "http://w-calc.sourceforge.net"; license = licenses.gpl2; platforms = platforms.all; }; diff --git a/pkgs/applications/misc/weather/default.nix b/pkgs/applications/misc/weather/default.nix index 2748d576c69..ce4fae1cb22 100644 --- a/pkgs/applications/misc/weather/default.nix +++ b/pkgs/applications/misc/weather/default.nix @@ -32,7 +32,7 @@ stdenv.mkDerivation rec { ''; meta = { - homepage = http://fungi.yuggoth.org/weather; + homepage = "http://fungi.yuggoth.org/weather"; description = "Quick access to current weather conditions and forecasts"; license = stdenv.lib.licenses.isc; maintainers = [ stdenv.lib.maintainers.matthiasbeyer ]; diff --git a/pkgs/applications/misc/wego/default.nix b/pkgs/applications/misc/wego/default.nix index 567d299fd3a..0dc13e290f5 100644 --- a/pkgs/applications/misc/wego/default.nix +++ b/pkgs/applications/misc/wego/default.nix @@ -2,15 +2,15 @@ buildGoPackage rec { pname = "wego"; - version = "unstable-2017-04-03"; - rev = "415efdfab5d5ee68300bf261a0c6f630c6c2584c"; - + version = "unstable-2019-02-11"; + rev = "994e4f141759a1070d7b0c8fbe5fad2cc7ee7d45"; + goPackagePath = "github.com/schachmat/wego"; src = fetchgit { inherit rev; url = "https://github.com/schachmat/wego"; - sha256 = "0w8sypwg0s2mvhk9cdibqr8bz5ipiiacs60a39sdswrpc4z486hg"; + sha256 = "1affzwi5rbp4zkirhmby8bvlhsafw7a4rs27caqwyj8g3jhczmhy"; }; goDeps = ./deps.nix; diff --git a/pkgs/applications/misc/wego/deps.nix b/pkgs/applications/misc/wego/deps.nix index 74ab69a30e1..133315cd022 100644 --- a/pkgs/applications/misc/wego/deps.nix +++ b/pkgs/applications/misc/wego/deps.nix @@ -1,11 +1,21 @@ +# This file was generated by https://github.com/kamilchm/go2nix v1.3.0 [ + { + goPackagePath = "github.com/mattn/go-colorable"; + fetch = { + type = "git"; + url = "https://github.com/mattn/go-colorable"; + rev = "98ec13f34aabf44cc914c65a1cfb7b9bc815aef1"; + sha256 = "1yxcz08kminqr1221zxpibnbzfcgs3fafin0z9zqb3gqvf74jywz"; + }; + } { goPackagePath = "github.com/mattn/go-isatty"; fetch = { type = "git"; url = "https://github.com/mattn/go-isatty"; - rev = "v0.0.4"; - sha256 = "0zs92j2cqaw9j8qx1sdxpv3ap0rgbs0vrvi72m40mg8aa36gd39w"; + rev = "31745d66dd679ac0ac4f8d3ecff168fce6170c6a"; + sha256 = "0h671sv7hfprja495kavazkalkx7xzaqksjh13brcnwq67ijrali"; }; } { @@ -13,17 +23,8 @@ fetch = { type = "git"; url = "https://github.com/mattn/go-runewidth"; - rev = "v0.0.4"; - sha256 = "00b3ssm7wiqln3k54z2wcnxr3k3c7m1ybyhb9h8ixzbzspld0qzs"; - }; - } - { - goPackagePath = "github.com/mattn/go-colorable"; - fetch = { - type = "git"; - url = "https://github.com/mattn/go-colorable"; - rev = "v0.0.9"; - sha256 = "1nwjmsppsjicr7anq8na6md7b1z84l9ppnlr045hhxjvbkqwalvx"; + rev = "18c3d09a134a52720932bbaa92c798a0ab111004"; + sha256 = "1snr8mk63vz2h44knq26dm81p83887v7kb09iywqmx0nqzngih66"; }; } { @@ -35,4 +36,13 @@ sha256 = "1gw0kddy7jh3467imsqni86cf9yq7k6vpfc0ywkbwj0zsjsdgd49"; }; } + { + goPackagePath = "golang.org/x/sys"; + fetch = { + type = "git"; + url = "https://go.googlesource.com/sys"; + rev = "b016eb3dc98ea7f69ed55e8216b87187067ae621"; + sha256 = "1k0qr26046d228gi6ngkfxp4m1rjgxk4jj75h0kh1cpyp91n5rja"; + }; + } ] diff --git a/pkgs/applications/misc/wikicurses/default.nix b/pkgs/applications/misc/wikicurses/default.nix index d38383c30ec..e528dab0c9f 100644 --- a/pkgs/applications/misc/wikicurses/default.nix +++ b/pkgs/applications/misc/wikicurses/default.nix @@ -11,11 +11,21 @@ pythonPackages.buildPythonApplication rec { sha256 = "0f14s4qx3q5pr5vn460c34b5mbz2xs62d8ljs3kic8gmdn8x2knm"; }; + outputs = [ "out" "man" ]; + propagatedBuildInputs = with pythonPackages; [ urwid beautifulsoup4 lxml ]; + postInstall = '' + mkdir -p $man/share/man/man{1,5} + cp wikicurses.1 $man/share/man/man1/ + cp wikicurses.conf.5 $man/share/man/man5/ + ''; + + doCheck = false; + meta = { description = "A simple curses interface for MediaWiki sites such as Wikipedia"; - homepage = https://github.com/ids1024/wikicurses/; + homepage = "https://github.com/ids1024/wikicurses/"; license = stdenv.lib.licenses.mit; platforms = stdenv.lib.platforms.unix; maintainers = with stdenv.lib.maintainers; [ pSub ]; diff --git a/pkgs/applications/misc/with-shell/default.nix b/pkgs/applications/misc/with-shell/default.nix index 6a5f7c17b20..d3b5541ac4d 100644 --- a/pkgs/applications/misc/with-shell/default.nix +++ b/pkgs/applications/misc/with-shell/default.nix @@ -12,7 +12,7 @@ stdenv.mkDerivation { cp with $out/bin/with ''; meta = { - homepage = https://github.com/mchav/With; + homepage = "https://github.com/mchav/With"; description = "Command prefixing for continuous workflow using a single tool"; license = stdenv.lib.licenses.asl20; platforms = stdenv.lib.platforms.unix; diff --git a/pkgs/applications/misc/wmname/default.nix b/pkgs/applications/misc/wmname/default.nix index 68f6c4df159..8e760b787b4 100644 --- a/pkgs/applications/misc/wmname/default.nix +++ b/pkgs/applications/misc/wmname/default.nix @@ -14,7 +14,7 @@ stdenv.mkDerivation rec { meta = { description = "Prints or set the window manager name property of the root window"; - homepage = https://tools.suckless.org/wmname; + homepage = "https://tools.suckless.org/wmname"; license = stdenv.lib.licenses.mit; platforms = stdenv.lib.platforms.unix; }; diff --git a/pkgs/applications/misc/wofi/default.nix b/pkgs/applications/misc/wofi/default.nix index 289c60b4402..37b991e6d47 100644 --- a/pkgs/applications/misc/wofi/default.nix +++ b/pkgs/applications/misc/wofi/default.nix @@ -1,23 +1,33 @@ -{ stdenv, lib, fetchhg, pkg-config, meson, ninja, wayland, gtk3 }: +{ stdenv, lib, fetchhg, fetchpatch, pkg-config, meson, ninja, wayland, gtk3, wrapGAppsHook }: stdenv.mkDerivation rec { pname = "wofi"; - version = "1.0"; + version = "1.1.2"; src = fetchhg { url = "https://hg.sr.ht/~scoopta/wofi"; rev = "v${version}"; - sha256 = "147yarm26nl0zc0a2rs7qi4jd7bz48vvyaygsif1qsv8fx0xiqqf"; + sha256 = "086j5wshawjbwdmmmldivfagc2rr7g5a2gk11l0snqqslm294xsn"; }; - nativeBuildInputs = [ pkg-config meson ninja ]; + nativeBuildInputs = [ pkg-config meson ninja wrapGAppsHook ]; buildInputs = [ wayland gtk3 ]; + # Fixes icon bug on NixOS. + # Will need to be removed on next release + # see https://todo.sr.ht/~scoopta/wofi/54 + patches = [ + (fetchpatch { + url = "https://paste.sr.ht/blob/1cbddafac3806afb203940c029e78ce8390d8f49"; + sha256 = "1n4jpmh66p7asjhj0z2s94ny91lmaq4hhh2356nj406vlqr15vbb"; + }) + ]; + meta = with lib; { description = "A launcher/menu program for wlroots based wayland compositors such as sway"; homepage = "https://hg.sr.ht/~scoopta/wofi"; license = licenses.gpl3; - maintainers = with maintainers; [ erictapen ]; + maintainers = with maintainers; [ elyhaka ]; platforms = with platforms; linux; }; } diff --git a/pkgs/applications/misc/wordnet/default.nix b/pkgs/applications/misc/wordnet/default.nix index 5a1093b4779..1f0414838ad 100644 --- a/pkgs/applications/misc/wordnet/default.nix +++ b/pkgs/applications/misc/wordnet/default.nix @@ -41,10 +41,10 @@ stdenv.mkDerivation rec { for computational linguistics and natural language processing. ''; - homepage = https://wordnet.princeton.edu/; + homepage = "https://wordnet.princeton.edu/"; license = { fullName = "WordNet 3.0 license"; - url = https://wordnet.princeton.edu/license-and-commercial-use; + url = "https://wordnet.princeton.edu/license-and-commercial-use"; }; maintainers = [ ]; platforms = with stdenv.lib.platforms; linux ++ darwin; diff --git a/pkgs/applications/misc/worker/default.nix b/pkgs/applications/misc/worker/default.nix index 6ff09a5b4b0..8b9ed830064 100644 --- a/pkgs/applications/misc/worker/default.nix +++ b/pkgs/applications/misc/worker/default.nix @@ -2,19 +2,19 @@ stdenv.mkDerivation rec { pname = "worker"; - version = "4.1.0"; + version = "4.3.0"; src = fetchurl { url = "http://www.boomerangsworld.de/cms/worker/downloads/${pname}-${version}.tar.gz"; - sha256 = "19v4g34sk4fkagk0s60rbixyrrgg22qy1xwffm8b5ffq36r7yfch"; + sha256 = "0s7i1qjnh4mfjyrfvbbr1dklqi0n2nwksls21106q633wk9qdlqx"; }; buildInputs = [ libX11 ]; meta = with stdenv.lib; { description = "A two-pane file manager with advanced file manipulation features"; - homepage = http://www.boomerangsworld.de/cms/worker/index.html; + homepage = "http://www.boomerangsworld.de/cms/worker/index.html"; license = licenses.gpl2; - maintainers = [ maintainers.ndowens ]; + maintainers = []; }; } diff --git a/pkgs/applications/misc/workrave/default.nix b/pkgs/applications/misc/workrave/default.nix index 4fc06b5c1ad..b0020b64ede 100644 --- a/pkgs/applications/misc/workrave/default.nix +++ b/pkgs/applications/misc/workrave/default.nix @@ -37,8 +37,8 @@ stdenv.mkDerivation rec { Repetitive Strain Injury (RSI). The program frequently alerts you to take micro-pauses, rest breaks and restricts you to your daily limit. ''; - homepage = http://www.workrave.org/; - downloadPage = https://github.com/rcaelers/workrave/releases; + homepage = "http://www.workrave.org/"; + downloadPage = "https://github.com/rcaelers/workrave/releases"; license = licenses.gpl3; maintainers = with maintainers; [ prikhi ]; platforms = platforms.linux; diff --git a/pkgs/applications/misc/wtf/default.nix b/pkgs/applications/misc/wtf/default.nix index 3dee9844c0c..12780ca73a1 100644 --- a/pkgs/applications/misc/wtf/default.nix +++ b/pkgs/applications/misc/wtf/default.nix @@ -7,16 +7,16 @@ buildGoModule rec { pname = "wtf"; - version = "0.25.0"; + version = "0.28.0"; src = fetchFromGitHub { owner = "wtfutil"; repo = pname; rev = "v${version}"; - sha256 = "1g76hzlyi8s8dayd36cs4bhnwgrrr731ybflw3xk5pgkgcbs14sd"; + sha256 = "0pybj2h844x9vncwdcaymihyd1mwdnxxpnzpq0p29ra0cwmsxcgr"; }; - modSha256 = "186m7s20r59dyh5lpby4sd4vw3rvnkfzslylwin0c3r6150yrx8h"; + modSha256 = "00xvhajag25kfkizi2spv4ady3h06as43rnbjzfbv7z1mln844y4"; buildFlagsArray = [ "-ldflags=-s -w -X main.version=${version}" ]; diff --git a/pkgs/applications/misc/xastir/default.nix b/pkgs/applications/misc/xastir/default.nix index 4086c0e094a..719d26c7199 100644 --- a/pkgs/applications/misc/xastir/default.nix +++ b/pkgs/applications/misc/xastir/default.nix @@ -28,7 +28,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Graphical APRS client"; - homepage = https://xastir.org; + homepage = "https://xastir.org"; license = licenses.gpl2; maintainers = [ maintainers.ehmry ]; platforms = platforms.linux; diff --git a/pkgs/applications/misc/xautoclick/default.nix b/pkgs/applications/misc/xautoclick/default.nix index 295d721d3c5..4f441d8a9a9 100644 --- a/pkgs/applications/misc/xautoclick/default.nix +++ b/pkgs/applications/misc/xautoclick/default.nix @@ -26,7 +26,7 @@ stdenv.mkDerivation { meta = with stdenv.lib; { description = "Autoclicker application, which enables you to automatically click the left mousebutton"; - homepage = http://xautoclick.sourceforge.net; + homepage = "http://xautoclick.sourceforge.net"; license = licenses.gpl2; platforms = platforms.linux; }; diff --git a/pkgs/applications/misc/xca/default.nix b/pkgs/applications/misc/xca/default.nix index 8c5a2e3d2db..bf6b37b1028 100644 --- a/pkgs/applications/misc/xca/default.nix +++ b/pkgs/applications/misc/xca/default.nix @@ -3,13 +3,13 @@ mkDerivation rec { pname = "xca"; - version = "2.1.2"; + version = "2.2.1"; src = fetchFromGitHub { owner = "chris2511"; repo = "xca"; rev = "RELEASE.${version}"; - sha256 = "0slfqmz0b01lwmrv4h78hmrsdrhcyc7sjzsxcw05ylgmhvdq3dw9"; + sha256 = "0na2816lkfkkvssh9kmf5vwy6x8kd4x7h138jzy61wrvs69vhnbi"; }; postPatch = '' @@ -25,7 +25,7 @@ mkDerivation rec { meta = with lib; { description = "An x509 certificate generation tool, handling RSA, DSA and EC keys, certificate signing requests (PKCS#10) and CRLs"; - homepage = https://hohnstaedt.de/xca/; + homepage = "https://hohnstaedt.de/xca/"; license = licenses.bsd3; maintainers = with maintainers; [ offline peterhoeg ]; platforms = platforms.all; diff --git a/pkgs/applications/misc/xcruiser/default.nix b/pkgs/applications/misc/xcruiser/default.nix index 8875c95fe57..80a1ced563f 100644 --- a/pkgs/applications/misc/xcruiser/default.nix +++ b/pkgs/applications/misc/xcruiser/default.nix @@ -4,7 +4,7 @@ stdenv.mkDerivation { name = "xcruiser-0.30"; src = fetchurl { - url = mirror://sourceforge/xcruiser/xcruiser/xcruiser-0.30/xcruiser-0.30.tar.gz; + url = "mirror://sourceforge/xcruiser/xcruiser/xcruiser-0.30/xcruiser-0.30.tar.gz"; sha256 = "1r8whva38xizqdh7jmn6wcmfmsndc67pkw22wzfzr6rq0vf6hywi"; }; @@ -23,7 +23,7 @@ stdenv.mkDerivation { It constructs a virtually 3-D formed universe from a directory tree and allows you to "cruise" within a visualized filesystem. ''; - homepage = http://xcruiser.sourceforge.net/; + homepage = "http://xcruiser.sourceforge.net/"; license = licenses.gpl2; maintainers = with maintainers; [ ehmry ]; platforms = with platforms; linux; diff --git a/pkgs/applications/misc/xdgmenumaker/default.nix b/pkgs/applications/misc/xdgmenumaker/default.nix index 56168b34859..b4d821e1deb 100644 --- a/pkgs/applications/misc/xdgmenumaker/default.nix +++ b/pkgs/applications/misc/xdgmenumaker/default.nix @@ -40,7 +40,7 @@ python3Packages.buildPythonApplication rec { meta = with stdenv.lib; { description = "Command line tool that generates XDG menus for several window managers"; - homepage = https://github.com/gapan/xdgmenumaker; + homepage = "https://github.com/gapan/xdgmenumaker"; license = licenses.gpl2Plus; # NOTE: exclude darwin from platforms because Travis reports hash mismatch platforms = with platforms; filter (x: !(elem x darwin)) unix; diff --git a/pkgs/applications/misc/xfe/default.nix b/pkgs/applications/misc/xfe/default.nix index 444ab802673..29a20e0ece2 100644 --- a/pkgs/applications/misc/xfe/default.nix +++ b/pkgs/applications/misc/xfe/default.nix @@ -24,7 +24,7 @@ stdenv.mkDerivation rec { It is based on the popular, but discontinued, X Win Commander, which was developed by Maxim Baranov. Xfe aims to be the filemanager of choice for all the Unix addicts! ''; - homepage = https://sourceforge.net/projects/xfe/; + homepage = "https://sourceforge.net/projects/xfe/"; license = stdenv.lib.licenses.gpl2; maintainers = []; platforms = stdenv.lib.platforms.linux; diff --git a/pkgs/applications/misc/xfontsel/default.nix b/pkgs/applications/misc/xfontsel/default.nix index 5d2b70a80ee..c61e64a8a3a 100644 --- a/pkgs/applications/misc/xfontsel/default.nix +++ b/pkgs/applications/misc/xfontsel/default.nix @@ -27,7 +27,7 @@ stdenv.mkDerivation rec { ''; meta = { - homepage = https://www.x.org/; + homepage = "https://www.x.org/"; description = "Allows testing the fonts available in an X server"; license = stdenv.lib.licenses.free; maintainers = with stdenv.lib.maintainers; [viric]; diff --git a/pkgs/applications/misc/xiphos/default.nix b/pkgs/applications/misc/xiphos/default.nix index 2e81e9b05d3..027ff8f264c 100644 --- a/pkgs/applications/misc/xiphos/default.nix +++ b/pkgs/applications/misc/xiphos/default.nix @@ -47,7 +47,7 @@ stdenv.mkDerivation rec { and featureful environment for reading, study, and research using modules from The SWORD Project and elsewhere. ''; - homepage = http://www.xiphos.org/; + homepage = "http://www.xiphos.org/"; license = licenses.gpl2Plus; maintainers = [ maintainers.AndersonTorres ]; platforms = platforms.linux; diff --git a/pkgs/applications/misc/xkbd/default.nix b/pkgs/applications/misc/xkbd/default.nix index d6709ecc1a6..d03d78a9fd1 100644 --- a/pkgs/applications/misc/xkbd/default.nix +++ b/pkgs/applications/misc/xkbd/default.nix @@ -21,7 +21,7 @@ stdenv.mkDerivation rec { nativeBuildInputs = [ autoreconfHook ]; meta = with stdenv.lib; { - homepage = https://github.com/mahatma-kaganovich/xkbd; + homepage = "https://github.com/mahatma-kaganovich/xkbd"; description = "onscreen soft keyboard for X11"; license = licenses.gpl2Plus; maintainers = [ maintainers.genesis ]; diff --git a/pkgs/applications/misc/xkblayout-state/default.nix b/pkgs/applications/misc/xkblayout-state/default.nix index abc808477a3..296d6f38db6 100644 --- a/pkgs/applications/misc/xkblayout-state/default.nix +++ b/pkgs/applications/misc/xkblayout-state/default.nix @@ -18,7 +18,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "A small command-line program to get/set the current XKB keyboard layout"; - homepage = https://github.com/nonpop/xkblayout-state; + homepage = "https://github.com/nonpop/xkblayout-state"; license = licenses.gpl2; maintainers = [ maintainers.jagajaga ]; platforms = platforms.linux; diff --git a/pkgs/applications/misc/xkbmon/default.nix b/pkgs/applications/misc/xkbmon/default.nix index dc618e4561e..1e6384c7d57 100644 --- a/pkgs/applications/misc/xkbmon/default.nix +++ b/pkgs/applications/misc/xkbmon/default.nix @@ -16,7 +16,7 @@ stdenv.mkDerivation rec { installPhase = "install -D -t $out/bin xkbmon"; meta = with stdenv.lib; { - homepage = https://github.com/xkbmon/xkbmon; + homepage = "https://github.com/xkbmon/xkbmon"; description = "Command-line keyboard layout monitor for X11"; license = licenses.mit; platforms = platforms.linux; diff --git a/pkgs/applications/misc/xmind/default.nix b/pkgs/applications/misc/xmind/default.nix index f65f5bc26e8..3e729af71fe 100644 --- a/pkgs/applications/misc/xmind/default.nix +++ b/pkgs/applications/misc/xmind/default.nix @@ -84,7 +84,7 @@ stdenv.mkDerivation rec { GTD. Meanwhile, XMind can read FreeMind and MindManager files, and save to Evernote. ''; - homepage = https://www.xmind.net/; + homepage = "https://www.xmind.net/"; license = licenses.unfree; platforms = platforms.linux; maintainers = with maintainers; [ michalrus ma27 ]; diff --git a/pkgs/applications/misc/xmrig/default.nix b/pkgs/applications/misc/xmrig/default.nix index 441cab3dd7b..a205b402bc8 100644 --- a/pkgs/applications/misc/xmrig/default.nix +++ b/pkgs/applications/misc/xmrig/default.nix @@ -4,13 +4,13 @@ stdenv.mkDerivation rec { pname = "xmrig"; - version = "5.1.0"; + version = "5.10.0"; src = fetchFromGitHub { owner = "xmrig"; repo = "xmrig"; rev = "v${version}"; - sha256 = "1lkw7xrj20ppfmv7abki9i60yjks9i7nr8ni9p6n7rilfbp4603k"; + sha256 = "06nxhrb5vnlq3sxybiyzdpbv6ah1zam7r07s1c31sv37znlb77d5"; }; nativeBuildInputs = [ cmake ]; diff --git a/pkgs/applications/misc/xneur/default.nix b/pkgs/applications/misc/xneur/default.nix index f3bbbf42d5b..e75055e92b8 100644 --- a/pkgs/applications/misc/xneur/default.nix +++ b/pkgs/applications/misc/xneur/default.nix @@ -27,7 +27,7 @@ stdenv.mkDerivation { meta = with stdenv.lib; { description = "Utility for switching between keyboard layouts"; - homepage = https://xneur.ru; + homepage = "https://xneur.ru"; license = licenses.gpl2Plus; maintainers = [ maintainers.raskin ]; platforms = platforms.linux; diff --git a/pkgs/applications/misc/xpad/default.nix b/pkgs/applications/misc/xpad/default.nix index 40f7ef9da08..8944011a8d7 100644 --- a/pkgs/applications/misc/xpad/default.nix +++ b/pkgs/applications/misc/xpad/default.nix @@ -17,7 +17,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "A sticky note application for jotting down things to remember"; - homepage = https://launchpad.net/xpad; + homepage = "https://launchpad.net/xpad"; license = licenses.gpl3; platforms = platforms.linux; maintainers = with maintainers; [ michalrus ]; diff --git a/pkgs/applications/misc/xpdf/libxpdf.nix b/pkgs/applications/misc/xpdf/libxpdf.nix index cf6f5f32ee2..3b982b1766f 100644 --- a/pkgs/applications/misc/xpdf/libxpdf.nix +++ b/pkgs/applications/misc/xpdf/libxpdf.nix @@ -5,25 +5,25 @@ stdenv.mkDerivation { name = "libxpdf-3.02pl4"; src = fetchurl { - url = ftp://ftp.foolabs.com/pub/xpdf/xpdf-3.02.tar.gz; + url = "ftp://ftp.foolabs.com/pub/xpdf/xpdf-3.02.tar.gz"; sha256 = "000zq4ddbwyxiki4vdwpmxbnw5n9hsg9hvwra2p33hslyib7sfmk"; }; patches = [ (fetchurl { - url = ftp://ftp.foolabs.com/pub/xpdf/xpdf-3.02pl1.patch; + url = "ftp://ftp.foolabs.com/pub/xpdf/xpdf-3.02pl1.patch"; sha256 = "1wxv9l0d2kkwi961ihpdwi75whdvk7cgqxkbfym8cjj11fq17xjq"; }) (fetchurl { - url = ftp://ftp.foolabs.com/pub/xpdf/xpdf-3.02pl2.patch; + url = "ftp://ftp.foolabs.com/pub/xpdf/xpdf-3.02pl2.patch"; sha256 = "1nfrgsh9xj0vryd8h65myzd94bjz117y89gq0hzji9dqn23xihfi"; }) (fetchurl { - url = ftp://ftp.foolabs.com/pub/xpdf/xpdf-3.02pl3.patch; + url = "ftp://ftp.foolabs.com/pub/xpdf/xpdf-3.02pl3.patch"; sha256 = "0jskkv8x6dqr9zj4azaglas8cziwqqrkbbnzrpm2kzrvsbxyhk2r"; }) (fetchurl { - url = ftp://ftp.foolabs.com/pub/xpdf/xpdf-3.02pl4.patch; + url = "ftp://ftp.foolabs.com/pub/xpdf/xpdf-3.02pl4.patch"; sha256 = "1c48h7aizx0ngmzlzw0mpja1w8vqyy3pg62hyxp7c60k86al715h"; }) ./xpdf-3.02-protection.patch diff --git a/pkgs/applications/misc/xrandr-invert-colors/default.nix b/pkgs/applications/misc/xrandr-invert-colors/default.nix index 41071012ae9..9d57b4fcfac 100644 --- a/pkgs/applications/misc/xrandr-invert-colors/default.nix +++ b/pkgs/applications/misc/xrandr-invert-colors/default.nix @@ -19,7 +19,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Inverts the colors of your screen"; license = stdenv.lib.licenses.gpl3Plus; - homepage = https://github.com/zoltanp/xrandr-invert-colors; + homepage = "https://github.com/zoltanp/xrandr-invert-colors"; maintainers = [stdenv.lib.maintainers.magnetophon ]; platforms = platforms.linux; }; diff --git a/pkgs/applications/misc/xrq/default.nix b/pkgs/applications/misc/xrq/default.nix index 244a2c43a15..e3db746ee02 100644 --- a/pkgs/applications/misc/xrq/default.nix +++ b/pkgs/applications/misc/xrq/default.nix @@ -20,7 +20,7 @@ stdenv.mkDerivation { meta = { description = "X utility for querying xrdb"; - homepage = https://github.com/arianon/xrq; + homepage = "https://github.com/arianon/xrq"; license = stdenv.lib.licenses.mit; platforms = with stdenv.lib.platforms; unix; }; diff --git a/pkgs/applications/misc/xscope/default.nix b/pkgs/applications/misc/xscope/default.nix index 517105d7e1f..4db034476c7 100644 --- a/pkgs/applications/misc/xscope/default.nix +++ b/pkgs/applications/misc/xscope/default.nix @@ -14,7 +14,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "program to monitor X11/Client conversations"; - homepage = https://cgit.freedesktop.org/xorg/app/xscope/; + homepage = "https://cgit.freedesktop.org/xorg/app/xscope/"; license = with licenses; [ mit ]; maintainers = with maintainers; [ ]; platforms = with platforms; unix; diff --git a/pkgs/applications/misc/xsw/default.nix b/pkgs/applications/misc/xsw/default.nix index aa851e14ab5..c7c10254c0c 100644 --- a/pkgs/applications/misc/xsw/default.nix +++ b/pkgs/applications/misc/xsw/default.nix @@ -18,7 +18,7 @@ in stdenv.mkDerivation rec { buildInputs = [ SDL SDL_image SDL_ttf SDL_gfx ]; - NIX_CFLAGS_COMPILE = makeSDLFlags [ SDL SDL_image SDL_ttf SDL_gfx ]; + NIX_CFLAGS_COMPILE = toString (makeSDLFlags [ SDL SDL_image SDL_ttf SDL_gfx ]); patches = [ ./parse.patch # Fixes compilation error by avoiding redundant definitions. diff --git a/pkgs/applications/misc/xterm/default.nix b/pkgs/applications/misc/xterm/default.nix index 83ba28bfce3..f6837b692b1 100644 --- a/pkgs/applications/misc/xterm/default.nix +++ b/pkgs/applications/misc/xterm/default.nix @@ -3,14 +3,14 @@ }: stdenv.mkDerivation rec { - name = "xterm-349"; + name = "xterm-353"; src = fetchurl { urls = [ "ftp://ftp.invisible-island.net/xterm/${name}.tgz" "https://invisible-mirror.net/archives/xterm/${name}.tgz" ]; - sha256 = "0ps7b2b2kbrkv5q49cmb8c51z0w21jmm7hwciw30m6jgfb9s79ir"; + sha256 = "0s5pkfn4r8iy09s1q1y78zhnr9f3sm6wgbqir7azaqggkppd68g5"; }; buildInputs = @@ -63,7 +63,7 @@ stdenv.mkDerivation rec { ''; meta = { - homepage = https://invisible-island.net/xterm; + homepage = "https://invisible-island.net/xterm"; license = with stdenv.lib.licenses; [ mit ]; maintainers = with stdenv.lib.maintainers; [vrthra]; platforms = with stdenv.lib.platforms; linux ++ darwin; diff --git a/pkgs/applications/misc/xtermcontrol/default.nix b/pkgs/applications/misc/xtermcontrol/default.nix index 51575d62ed5..f7c0edf2242 100644 --- a/pkgs/applications/misc/xtermcontrol/default.nix +++ b/pkgs/applications/misc/xtermcontrol/default.nix @@ -17,7 +17,7 @@ stdenv.mkDerivation rec { Window manipulations de-/iconify, raise/lower, maximize/restore and reset are also supported. To complete the feature set; xtermcontrol lets advanced users issue any xterm control sequence of their choosing. ''; - homepage = http://thrysoee.dk/xtermcontrol; + homepage = "http://thrysoee.dk/xtermcontrol"; license = stdenv.lib.licenses.gpl2; platforms = stdenv.lib.platforms.unix; maintainers = [ stdenv.lib.maintainers.derchris ]; diff --git a/pkgs/applications/misc/xxkb/default.nix b/pkgs/applications/misc/xxkb/default.nix index db952758f04..64d55322896 100644 --- a/pkgs/applications/misc/xxkb/default.nix +++ b/pkgs/applications/misc/xxkb/default.nix @@ -29,11 +29,11 @@ stdenv.mkDerivation rec { "MANDIR=${placeholder "man"}/share/man" ]; - installTargets = "install install.man"; + installTargets = [ "install" "install.man" ]; meta = { description = "A keyboard layout indicator and switcher"; - homepage = http://xxkb.sourceforge.net/; + homepage = "http://xxkb.sourceforge.net/"; license = stdenv.lib.licenses.artistic2; maintainers = with stdenv.lib.maintainers; [ rasendubi ]; platforms = stdenv.lib.platforms.linux; diff --git a/pkgs/applications/misc/xygrib/default.nix b/pkgs/applications/misc/xygrib/default.nix index 4f1ecbaf8b3..c7f449d97cd 100644 --- a/pkgs/applications/misc/xygrib/default.nix +++ b/pkgs/applications/misc/xygrib/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchFromGitHub, cmake, bzip2, qtbase, qttools, libnova, proj, libpng, openjpeg } : +{ stdenv, fetchFromGitHub, wrapQtAppsHook, cmake, bzip2, qtbase, qttools, libnova, proj, libpng, openjpeg } : stdenv.mkDerivation rec { version = "1.2.6.1"; @@ -11,13 +11,14 @@ stdenv.mkDerivation rec { sha256 = "0xzsm8pr0zjk3f8j880fg5n82jyxn8xf1330qmmq1fqv7rsrg9ia"; }; - nativeBuildInputs = [ cmake qttools ]; + nativeBuildInputs = [ cmake qttools wrapQtAppsHook ]; buildInputs = [ bzip2 qtbase libnova proj openjpeg libpng ]; cmakeFlags = [ "-DOPENJPEG_INCLUDE_DIR=${openjpeg.dev}/include/openjpeg-2.3" ]; postInstall = '' - mkdir $out/bin - ln -s $out/XyGrib/XyGrib $out/bin/XyGrib + wrapQtApp $out/XyGrib/XyGrib + mkdir -p $out/bin + ln -s $out/XyGrib/XyGrib $out/bin/xygrib ''; meta = with stdenv.lib; { diff --git a/pkgs/applications/misc/yaft/default.nix b/pkgs/applications/misc/yaft/default.nix index 2135c7fd617..e66f397a383 100644 --- a/pkgs/applications/misc/yaft/default.nix +++ b/pkgs/applications/misc/yaft/default.nix @@ -16,7 +16,7 @@ stdenv.mkDerivation rec { installFlags = [ "PREFIX=$(out)" "MANPREFIX=$(out)/share/man" ]; meta = { - homepage = https://github.com/uobikiemukot/yaft; + homepage = "https://github.com/uobikiemukot/yaft"; description = "Yet another framebuffer terminal"; license = stdenv.lib.licenses.mit; maintainers = [ stdenv.lib.maintainers.matthiasbeyer ]; diff --git a/pkgs/applications/misc/yarssr/default.nix b/pkgs/applications/misc/yarssr/default.nix index f2da2957bd3..c5489b8b981 100644 --- a/pkgs/applications/misc/yarssr/default.nix +++ b/pkgs/applications/misc/yarssr/default.nix @@ -55,7 +55,7 @@ stdenv.mkDerivation { ''; meta = with stdenv.lib; { - homepage = https://github.com/tsyrogit/zxcvbn-c; + homepage = "https://github.com/tsyrogit/zxcvbn-c"; description = "A fork of Yarssr (a RSS reader for the GNOME Tray) from http://yarssr.sf.net with various fixes."; license = licenses.gpl1; platforms = platforms.linux; diff --git a/pkgs/applications/misc/yate/default.nix b/pkgs/applications/misc/yate/default.nix index 09a6cc4a3c0..6c03bbc33b3 100644 --- a/pkgs/applications/misc/yate/default.nix +++ b/pkgs/applications/misc/yate/default.nix @@ -31,7 +31,7 @@ stdenv.mkDerivation rec { meta = { description = "Yet another telephony engine"; - homepage = http://yate.null.ro/; + homepage = "http://yate.null.ro/"; # Yate's license is GPL with an exception for linking with # OpenH323 and PWlib (licensed under MPL). license = ["GPL" "MPL"]; diff --git a/pkgs/applications/misc/yokadi/default.nix b/pkgs/applications/misc/yokadi/default.nix index 6b3a4f747f4..00507d2ee88 100644 --- a/pkgs/applications/misc/yokadi/default.nix +++ b/pkgs/applications/misc/yokadi/default.nix @@ -22,7 +22,7 @@ buildPythonApplication rec { meta = with stdenv.lib; { description = "A command line oriented, sqlite powered, todo-list"; - homepage = https://yokadi.github.io/index.html; + homepage = "https://yokadi.github.io/index.html"; license = licenses.gpl3Plus; maintainers = [ maintainers.nipav ]; }; diff --git a/pkgs/applications/misc/yubioath-desktop/default.nix b/pkgs/applications/misc/yubioath-desktop/default.nix index d7a019c1c41..eb39a702f93 100644 --- a/pkgs/applications/misc/yubioath-desktop/default.nix +++ b/pkgs/applications/misc/yubioath-desktop/default.nix @@ -1,21 +1,21 @@ { stdenv, fetchurl, mkDerivation -, qmake, qtbase, qtquickcontrols +, qmake, qtbase, qtquickcontrols2, qtgraphicaleffects , python3, pyotherside , pcsclite, yubikey-personalization , yubikey-manager, makeWrapper }: mkDerivation rec { pname = "yubioath-desktop"; - version = "4.3.6"; + version = "5.0.2"; src = fetchurl { url = "https://developers.yubico.com/yubioath-desktop/Releases/yubioath-desktop-${version}.tar.gz"; - sha256 = "0s04anjbb5zm98kfdpp9hr68k3mx3gqlp8fa1miy7nq87pr4f7a5"; + sha256 = "19ingk0ab88a22s04apcw8kx9xygxlbk8kp4xnb8pmf8z3k6l2gf"; }; doCheck = false; - buildInputs = [ stdenv qtbase qtquickcontrols python3 ]; + buildInputs = [ stdenv qtbase qtquickcontrols2 qtgraphicaleffects python3 ]; nativeBuildInputs = [ qmake makeWrapper python3.pkgs.wrapPython ]; @@ -48,11 +48,18 @@ mkDerivation rec { ''; meta = with stdenv.lib; { - description = "Yubikey Desktop Authenticator"; + description = "Yubico Authenticator"; + longDescription = '' + Application for generating Open Authentication (OATH) time-based TOTP and + event-based HOTP one-time password codes, with the help of a YubiKey that + protects the shared secrets. + ''; - homepage = https://www.yubico.com/support/knowledge-base/categories/articles/yubico-authenticator-download/; + homepage = "https://developers.yubico.com/yubioath-desktop"; + downloadPage = "https://developers.yubico.com/yubioath-desktop/Releases/"; + changelog = "https://developers.yubico.com/yubioath-desktop/Release_Notes.html"; - license = stdenv.lib.licenses.gpl3; - maintainers = with maintainers; [ mic92 ]; + license = stdenv.lib.licenses.bsd2; + maintainers = with maintainers; [ mic92 risson ]; }; } diff --git a/pkgs/applications/misc/zathura/cb/default.nix b/pkgs/applications/misc/zathura/cb/default.nix index 7c2c8fb31ca..4e2d16819ba 100644 --- a/pkgs/applications/misc/zathura/cb/default.nix +++ b/pkgs/applications/misc/zathura/cb/default.nix @@ -6,7 +6,7 @@ stdenv.mkDerivation rec { version = "0.1.8"; src = fetchurl { - url = "https://pwmt.org/projects/zathura/plugins/download/${pname}-${version}.tar.xz"; + url = "https://pwmt.org/projects/${pname}/download/${pname}-${version}.tar.xz"; sha256 = "1i6cf0vks501cggwvfsl6qb7mdaf3sszdymphimfvnspw810faj5"; }; @@ -16,7 +16,7 @@ stdenv.mkDerivation rec { PKG_CONFIG_ZATHURA_PLUGINDIR = "lib/zathura"; meta = with lib; { - homepage = https://pwmt.org/projects/zathura-cb/; + homepage = "https://pwmt.org/projects/zathura-cb/"; description = "A zathura CB plugin"; longDescription = '' The zathura-cb plugin adds comic book support to zathura. diff --git a/pkgs/applications/misc/zathura/core/default.nix b/pkgs/applications/misc/zathura/core/default.nix index 99729125b63..44f200174d9 100644 --- a/pkgs/applications/misc/zathura/core/default.nix +++ b/pkgs/applications/misc/zathura/core/default.nix @@ -9,12 +9,12 @@ with stdenv.lib; stdenv.mkDerivation rec { - pname = "zathura-core"; - version = "0.4.4"; + pname = "zathura"; + version = "0.4.5"; src = fetchurl { - url = "https://git.pwmt.org/pwmt/zathura/-/archive/${version}/zathura-${version}.tar.gz"; - sha256 = "0v5klgr009rsxi41h73k0398jbgmgh37asvwz2w15i4fzmw89jgb"; + url = "https://pwmt.org/projects/${pname}/download/${pname}-${version}.tar.xz"; + sha256 = "0b3nrcvykkpv2vm99kijnic2gpfzva520bsjlihaxandzfm9ff8c"; }; outputs = [ "bin" "man" "dev" "out" ]; @@ -28,6 +28,8 @@ stdenv.mkDerivation rec { "-Dmanpages=enabled" "-Dconvert-icon=enabled" "-Dsynctex=enabled" + # Make sure tests are enabled for doCheck + "-Dtests=enabled" ]; nativeBuildInputs = [ diff --git a/pkgs/applications/misc/zathura/djvu/default.nix b/pkgs/applications/misc/zathura/djvu/default.nix index 54f68969d4f..954df5301e3 100644 --- a/pkgs/applications/misc/zathura/djvu/default.nix +++ b/pkgs/applications/misc/zathura/djvu/default.nix @@ -1,11 +1,12 @@ { stdenv, fetchurl, meson, ninja, pkgconfig, gtk, zathura_core, girara, djvulibre, gettext }: stdenv.mkDerivation rec { - name = "zathura-djvu-0.2.8"; + pname = "zathura-djvu"; + version = "0.2.9"; src = fetchurl { - url = "https://pwmt.org/projects/zathura/plugins/download/${name}.tar.xz"; - sha256 = "0axkv1crdxn0z44whaqp2ibkdqcykhjnxk7qzms0dp1b67an9rnh"; + url = "https://pwmt.org/projects/${pname}/download/${pname}-${version}.tar.xz"; + sha256 = "0062n236414db7q7pnn3ccg5111ghxj3407pn9ri08skxskgirln"; }; nativeBuildInputs = [ meson ninja pkgconfig ]; @@ -14,7 +15,7 @@ stdenv.mkDerivation rec { PKG_CONFIG_ZATHURA_PLUGINDIR = "lib/zathura"; meta = with stdenv.lib; { - homepage = https://pwmt.org/projects/zathura-djvu/; + homepage = "https://pwmt.org/projects/zathura-djvu/"; description = "A zathura DJVU plugin"; longDescription = '' The zathura-djvu plugin adds DjVu support to zathura by using the diff --git a/pkgs/applications/misc/zathura/pdf-mupdf/default.nix b/pkgs/applications/misc/zathura/pdf-mupdf/default.nix index d8c1364d395..82c94d48068 100644 --- a/pkgs/applications/misc/zathura/pdf-mupdf/default.nix +++ b/pkgs/applications/misc/zathura/pdf-mupdf/default.nix @@ -1,20 +1,13 @@ -{ stdenv, lib, meson, ninja, fetchFromGitHub +{ stdenv, lib, meson, ninja, fetchurl , pkgconfig, zathura_core, cairo , gtk-mac-integration, girara, mupdf }: stdenv.mkDerivation rec { version = "0.3.5"; pname = "zathura-pdf-mupdf"; - # pwmt.org server was down at the time of last update - # src = fetchurl { - # url = "https://pwmt.org/projects/zathura-pdf-mupdf/download/${name}.tar.xz"; - # sha256 = "1zbaqimav4wfgimpy3nfzl10qj7vyv23rdy2z5z7z93jwbp2rc2j"; - # }; - src = fetchFromGitHub { - owner = "pwmt"; - repo = "zathura-pdf-mupdf"; - rev = version; - sha256 = "0wb46hllykbi30ir69s8s23mihivqn13mgfdzawbsn2a21p8y4zl"; + src = fetchurl { + url = "https://pwmt.org/projects/${pname}/download/${pname}-${version}.tar.xz"; + sha256 = "1pjwsb7zwclxsvz229fl7y2saf1pv3ifwv3ay8viqxgrp9x3z9hq"; }; nativeBuildInputs = [ meson ninja pkgconfig ]; @@ -26,7 +19,7 @@ stdenv.mkDerivation rec { PKG_CONFIG_ZATHURA_PLUGINDIR= "lib/zathura"; meta = with lib; { - homepage = https://pwmt.org/projects/zathura-pdf-mupdf/; + homepage = "https://pwmt.org/projects/zathura-pdf-mupdf/"; description = "A zathura PDF plugin (mupdf)"; longDescription = '' The zathura-pdf-mupdf plugin adds PDF support to zathura by diff --git a/pkgs/applications/misc/zathura/pdf-poppler/default.nix b/pkgs/applications/misc/zathura/pdf-poppler/default.nix index 5b38555eda1..bafa293ad9c 100644 --- a/pkgs/applications/misc/zathura/pdf-poppler/default.nix +++ b/pkgs/applications/misc/zathura/pdf-poppler/default.nix @@ -1,12 +1,12 @@ { stdenv, lib, fetchurl, meson, ninja, pkgconfig, zathura_core, girara, poppler }: stdenv.mkDerivation rec { - version = "0.2.9"; pname = "zathura-pdf-poppler"; + version = "0.3.0"; src = fetchurl { - url = "https://git.pwmt.org/pwmt/zathura-pdf-poppler/-/archive/${version}/${pname}-${version}.tar.gz"; - sha256 = "0c15rnwh42m3ybrhax01bl36w0iynaq8xg6l08riml3cyljypi9l"; + url = "https://pwmt.org/projects/${pname}/download/${pname}-${version}.tar.xz"; + sha256 = "1vfl4vkyy3rf39r1sqaa7y8113bgkh2bkfq3nn2inis9mrykmk6m"; }; nativeBuildInputs = [ meson ninja pkgconfig zathura_core ]; @@ -15,7 +15,7 @@ stdenv.mkDerivation rec { PKG_CONFIG_ZATHURA_PLUGINDIR = "lib/zathura"; meta = with lib; { - homepage = https://pwmt.org/projects/zathura-pdf-poppler/; + homepage = "https://pwmt.org/projects/zathura-pdf-poppler/"; description = "A zathura PDF plugin (poppler)"; longDescription = '' The zathura-pdf-poppler plugin adds PDF support to zathura by diff --git a/pkgs/applications/misc/zathura/ps/default.nix b/pkgs/applications/misc/zathura/ps/default.nix index 48d42b5e939..05cc570eb8f 100644 --- a/pkgs/applications/misc/zathura/ps/default.nix +++ b/pkgs/applications/misc/zathura/ps/default.nix @@ -1,10 +1,11 @@ { stdenv, lib, fetchurl, meson, ninja, pkgconfig, zathura_core, girara, libspectre, gettext }: stdenv.mkDerivation rec { - name = "zathura-ps-0.2.6"; + pname = "zathura-ps"; + version = "0.2.6"; src = fetchurl { - url = "https://pwmt.org/projects/zathura/plugins/download/${name}.tar.xz"; + url = "https://pwmt.org/projects/${pname}/download/${pname}-${version}.tar.xz"; sha256 = "0wygq89nyjrjnsq7vbpidqdsirjm6iq4w2rijzwpk2f83ys8bc3y"; }; @@ -14,7 +15,7 @@ stdenv.mkDerivation rec { PKG_CONFIG_ZATHURA_PLUGINDIR = "lib/zathura"; meta = with lib; { - homepage = https://pwmt.org/projects/zathura-ps/; + homepage = "https://pwmt.org/projects/zathura-ps/"; description = "A zathura PS plugin"; longDescription = '' The zathura-ps plugin adds PS support to zathura by using the diff --git a/pkgs/applications/misc/zathura/wrapper.nix b/pkgs/applications/misc/zathura/wrapper.nix index 6c8ad97d355..5d37b5190d0 100644 --- a/pkgs/applications/misc/zathura/wrapper.nix +++ b/pkgs/applications/misc/zathura/wrapper.nix @@ -8,6 +8,8 @@ in symlinkJoin { paths = with zathura_core; [ man dev out ]; + inherit plugins; + buildInputs = [ makeWrapper ]; postBuild = '' @@ -17,7 +19,7 @@ in symlinkJoin { ''; meta = with lib; { - homepage = https://git.pwmt.org/pwmt/zathura/; + homepage = "https://git.pwmt.org/pwmt/zathura/"; description = "A highly customizable and functional PDF viewer"; longDescription = '' Zathura is a highly customizable and functional PDF viewer based on the diff --git a/pkgs/applications/misc/zk-shell/default.nix b/pkgs/applications/misc/zk-shell/default.nix index ec8deadf9f5..df6e011e4d5 100644 --- a/pkgs/applications/misc/zk-shell/default.nix +++ b/pkgs/applications/misc/zk-shell/default.nix @@ -20,7 +20,7 @@ pythonPackages.buildPythonApplication rec { meta = { description = "A powerful & scriptable shell for Apache ZooKeeper"; - homepage = https://github.com/rgs1/zk_shell; + homepage = "https://github.com/rgs1/zk_shell"; license = stdenv.lib.licenses.asl20; maintainers = [ stdenv.lib.maintainers.mahe ]; platforms = stdenv.lib.platforms.all; diff --git a/pkgs/applications/misc/zola/cargo-lock.patch b/pkgs/applications/misc/zola/cargo-lock.patch deleted file mode 100644 index b9d97e3c328..00000000000 --- a/pkgs/applications/misc/zola/cargo-lock.patch +++ /dev/null @@ -1,28 +0,0 @@ -diff --git a/Cargo.lock b/Cargo.lock -index df5fef3..80f071a 100644 ---- a/Cargo.lock -+++ b/Cargo.lock -@@ -2158,12 +2158,12 @@ version = "0.2.2" - source = "registry+https://github.com/rust-lang/crates.io-index" - dependencies = [ - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", -- "sass-sys 0.4.13 (registry+https://github.com/rust-lang/crates.io-index)", -+ "sass-sys 0.4.15 (registry+https://github.com/rust-lang/crates.io-index)", - ] - - [[package]] - name = "sass-sys" --version = "0.4.13" -+version = "0.4.15" - source = "registry+https://github.com/rust-lang/crates.io-index" - dependencies = [ - "cc 1.0.45 (registry+https://github.com/rust-lang/crates.io-index)", -@@ -3410,7 +3410,7 @@ dependencies = [ - "checksum safemem 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "d2b08423011dae9a5ca23f07cf57dac3857f5c885d352b76f6d95f4aea9434d0" - "checksum same-file 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "585e8ddcedc187886a30fa705c47985c3fa88d06624095856b36ca0b82ff4421" - "checksum sass-rs 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "cabcf7c6e55053f359911187ac401409aad2dc14338cae972dec266fee486abd" --"checksum sass-sys 0.4.13 (registry+https://github.com/rust-lang/crates.io-index)" = "6e16ac97c2335bc367e2d675f54c1823558f1b19a6c67671d48b70e30ae22972" -+"checksum sass-sys 0.4.15 (registry+https://github.com/rust-lang/crates.io-index)" = "304b6f9501d1da13f17404aeee85486d7383d06074906669b3ea032f81e83d22" - "checksum schannel 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "87f550b06b6cba9c8b8be3ee73f391990116bf527450d2556e9b9ce263b9a021" - "checksum scoped_threadpool 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "1d51f5df5af43ab3f1360b429fa5e0152ac5ce8c0bd6485cae490332e96846a8" - "checksum scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "94258f53601af11e6a49f722422f6e3425c52b06245a5cf9bc09908b174f5e27" diff --git a/pkgs/applications/misc/zola/default.nix b/pkgs/applications/misc/zola/default.nix index 178be491169..6616f7e4294 100644 --- a/pkgs/applications/misc/zola/default.nix +++ b/pkgs/applications/misc/zola/default.nix @@ -1,20 +1,19 @@ -{ stdenv, fetchFromGitHub, rustPlatform, cmake, pkgconfig, openssl, CoreServices }: +{ stdenv, fetchFromGitHub, rustPlatform, cmake, pkg-config, openssl, CoreServices }: rustPlatform.buildRustPackage rec { pname = "zola"; - version = "0.9.0"; + version = "0.10.1"; src = fetchFromGitHub { owner = "getzola"; repo = pname; rev = "v${version}"; - sha256 = "13kbgxh7r6124d1fjdf0x599j1kpgixp1y9d299zb5vrd6rf5wy5"; + sha256 = "07zg4ia983rgvgvmw4xbi347lr4rxlf1xv8rw72cflc74kyia67n"; }; - cargoPatches = [ ./cargo-lock.patch ]; - cargoSha256 = "03rwf5l1l3ap03qi0xqcxsbyvpg3cqmr50j8ql6c5v55xl0ki9w8"; + cargoSha256 = "13lnl01h8k8xv2ls1kjskfnyjmmk8iyk2mvbk01p2wmhp5m876md"; - nativeBuildInputs = [ cmake pkgconfig ]; + nativeBuildInputs = [ cmake pkg-config ]; buildInputs = [ openssl ] ++ stdenv.lib.optional stdenv.isDarwin CoreServices; @@ -29,7 +28,7 @@ rustPlatform.buildRustPackage rec { meta = with stdenv.lib; { description = "A fast static site generator with everything built-in"; - homepage = https://www.getzola.org/; + homepage = "https://www.getzola.org/"; license = licenses.mit; maintainers = with maintainers; [ dywedir ]; platforms = platforms.all; diff --git a/pkgs/applications/misc/zscroll/default.nix b/pkgs/applications/misc/zscroll/default.nix index 18876cf355b..402032b5cec 100644 --- a/pkgs/applications/misc/zscroll/default.nix +++ b/pkgs/applications/misc/zscroll/default.nix @@ -20,7 +20,7 @@ python3Packages.buildPythonApplication { meta = with stdenv.lib; { description = "A text scroller for use with panels and shells"; - homepage = https://github.com/noctuid/zscroll; + homepage = "https://github.com/noctuid/zscroll"; license = licenses.bsd2; platforms = platforms.all; }; diff --git a/pkgs/applications/networking/Sylk/default.nix b/pkgs/applications/networking/Sylk/default.nix index 36f6279c209..64e0a9dcba2 100644 --- a/pkgs/applications/networking/Sylk/default.nix +++ b/pkgs/applications/networking/Sylk/default.nix @@ -2,7 +2,7 @@ let pname = "Sylk"; - version = "2.1.0"; + version = "2.6.1"; in appimageTools.wrapType2 rec { @@ -10,7 +10,7 @@ appimageTools.wrapType2 rec { src = fetchurl { url = "http://download.ag-projects.com/Sylk/Sylk-${version}-x86_64.AppImage"; - sha256 = "1ifi8qr6f84dcssxhv5ar1s48nsqxiv2j1blc82248hmq5is24mf"; + hash = "sha256:0417qk925k7p3fiq1zha9al86jrz6mqspda7mi3h9blpbyvlcy7w"; }; profile = '' diff --git a/pkgs/applications/networking/brig/default.nix b/pkgs/applications/networking/brig/default.nix index 31eb4dd7378..66329b64eac 100644 --- a/pkgs/applications/networking/brig/default.nix +++ b/pkgs/applications/networking/brig/default.nix @@ -17,7 +17,7 @@ buildGoPackage rec { meta = with stdenv.lib; { description = "File synchronization on top of ipfs with git like interface and FUSE filesystem"; - homepage = https://github.com/sahib/brig; + homepage = "https://github.com/sahib/brig"; license = licenses.agpl3; platforms = platforms.unix; maintainers = with maintainers; [ offline ]; diff --git a/pkgs/applications/networking/browsers/arora/default.nix b/pkgs/applications/networking/browsers/arora/default.nix index 57db827169e..88ad2c609bf 100644 --- a/pkgs/applications/networking/browsers/arora/default.nix +++ b/pkgs/applications/networking/browsers/arora/default.nix @@ -20,7 +20,7 @@ stdenv.mkDerivation rec { platforms = qt4.meta.platforms; maintainers = [ maintainers.phreedom ]; description = "A cross-platform Qt4 Webkit browser"; - homepage = https://github.com/Arora/arora; + homepage = "https://github.com/Arora/arora"; license = with licenses; [ gpl2 gpl3 ]; }; } diff --git a/pkgs/applications/networking/browsers/brave/default.nix b/pkgs/applications/networking/browsers/brave/default.nix index ef0b8ec7619..bab24d01456 100644 --- a/pkgs/applications/networking/browsers/brave/default.nix +++ b/pkgs/applications/networking/browsers/brave/default.nix @@ -82,11 +82,11 @@ in stdenv.mkDerivation rec { pname = "brave"; - version = "1.1.23"; + version = "1.5.123"; src = fetchurl { url = "https://github.com/brave/brave-browser/releases/download/v${version}/brave-browser_${version}_amd64.deb"; - sha256 = "1kb40h5d76k6p338h75p8lxs0cb88jaasss0cmb7bfc7zykfqmd3"; + sha256 = "1yv6hfjqzcd60b0bjpfbj8d4s2yf10swanxhbmnslcqp6ajb2nqr"; }; dontConfigure = true; @@ -151,7 +151,7 @@ stdenv.mkDerivation rec { contribute to your favorite creators automatically. ''; license = licenses.mpl20; - maintainers = with maintainers; [ uskudnik rht ]; + maintainers = with maintainers; [ uskudnik rht jefflabonte ]; platforms = [ "x86_64-linux" ]; }; } diff --git a/pkgs/applications/networking/browsers/browsh/default.nix b/pkgs/applications/networking/browsers/browsh/default.nix index c3f5cb13164..3662c3badd3 100644 --- a/pkgs/applications/networking/browsers/browsh/default.nix +++ b/pkgs/applications/networking/browsers/browsh/default.nix @@ -1,14 +1,14 @@ { stdenv, buildGoPackage, fetchurl, fetchFromGitHub, go-bindata }: let - version = "1.5.2"; + version = "1.6.4"; # TODO: must build the extension instead of downloading it. But since it's # literally an asset that is indifferent regardless of the platform, this # might be just enough. webext = fetchurl { url = "https://github.com/browsh-org/browsh/releases/download/v${version}/browsh-${version}-an.fx.xpi"; - sha256 = "0b9aycyif0hfhfkivlnvinr13r9h4qyxx768286966p67napbd63"; + sha256 = "1shf1s9s525wns5vrsc4ns21zjxm1si43lx6v0q8ma6vd5x5445l"; }; in buildGoPackage rec { @@ -23,10 +23,10 @@ in buildGoPackage rec { owner = "browsh-org"; repo = "browsh"; rev = "v${version}"; - sha256 = "1z78kgxrbi2jy20rbq6kx5mjk4gpg58w4rb3flp42l9p7bhdbr2h"; + sha256 = "0gvf5k1gm81xxg7ha309kgfkgl5357dli0fbc4z01rmfgbl0rfa0"; }; - buildInputs = [ go-bindata ]; + nativeBuildInputs = [ go-bindata ]; # embed the web extension in a go file and place it where it's supposed to # be. See @@ -53,7 +53,7 @@ in buildGoPackage rec { meta = with stdenv.lib; { description = "A fully-modern text-based browser, rendering to TTY and browsers"; - homepage = https://www.brow.sh/; + homepage = "https://www.brow.sh/"; maintainers = [ maintainers.kalbasit ]; license = stdenv.lib.licenses.lgpl21; platforms = stdenv.lib.platforms.linux ++ stdenv.lib.platforms.darwin; diff --git a/pkgs/applications/networking/browsers/browsh/deps.nix b/pkgs/applications/networking/browsers/browsh/deps.nix index fae04b4d6a5..9a6a898beb5 100644 --- a/pkgs/applications/networking/browsers/browsh/deps.nix +++ b/pkgs/applications/networking/browsers/browsh/deps.nix @@ -1,3 +1,4 @@ +# file generated from Gopkg.lock using dep2nix (https://github.com/nixcloud/dep2nix) [ { goPackagePath = "github.com/NYTimes/gziphandler"; @@ -49,8 +50,8 @@ fetch = { type = "git"; url = "https://github.com/gorilla/websocket"; - rev = "5ed622c449da6d44c3c8329331ff47a9e5844f71"; - sha256 = "1yhcwraijdk6lx7f6m9p6i1b3zfh2hq80l1nfpnckfn10gh72aw7"; + rev = "66b9c49e59c6c48f0ffce28c2d8b8a5678502c6d"; + sha256 = "00i4vb31nsfkzzk7swvx3i75r2d960js3dri1875vypk3v2s0pzk"; }; } { @@ -103,8 +104,8 @@ fetch = { type = "git"; url = "https://github.com/mitchellh/mapstructure"; - rev = "f15292f7a699fcc1a38a80977f80a046874ba8ac"; - sha256 = "0zm3nhdvmj3f8q0vg2sjfw1sm3pwsw0ggz501awz95w99664a8al"; + rev = "3536a929edddb9a5b34bd6861dc4a9647cb459fe"; + sha256 = "03bpv28jz9zhn4947saqwi328ydj7f6g6pf1m2d4m5zdh5jlfkrr"; }; } { @@ -166,8 +167,8 @@ fetch = { type = "git"; url = "https://github.com/spf13/cast"; - rev = "8965335b8c7107321228e3e3702cab9832751bac"; - sha256 = "177bk7lq40jbgv9p9r80aydpaccfk8ja3a7jjhfwiwk9r1pa4rr2"; + rev = "8c9545af88b134710ab1cd196795e7f2388358d7"; + sha256 = "0xq1ffqj8y8h7dcnm0m9lfrh0ga7pssnn2c1dnr09chqbpn4bdc5"; }; } { @@ -184,8 +185,8 @@ fetch = { type = "git"; url = "https://github.com/spf13/pflag"; - rev = "3ebe029320b2676d667ae88da602a5f854788a8a"; - sha256 = "11yxs0wqy70wj106fkz8r923yg4ncnc2mbw33v48zmlg4a1rasgp"; + rev = "298182f68c66c05229eb03ac171abe6e309ee79a"; + sha256 = "1cj3cjm7d3zk0mf1xdybh0jywkbbw7a6yr3y22x9sis31scprswd"; }; } { @@ -260,4 +261,4 @@ sha256 = "01wj12jzsdqlnidpyjssmj0r4yavlqy7dwrg7adqd8dicjc4ncsa"; }; } -] +] \ No newline at end of file diff --git a/pkgs/applications/networking/browsers/captive-browser/default.nix b/pkgs/applications/networking/browsers/captive-browser/default.nix index e7bec997119..3ce04842c6e 100644 --- a/pkgs/applications/networking/browsers/captive-browser/default.nix +++ b/pkgs/applications/networking/browsers/captive-browser/default.nix @@ -14,9 +14,9 @@ buildGoPackage rec { meta = with lib; { description = "Dedicated Chrome instance to log into captive portals without messing with DNS settings"; - homepage = https://blog.filippo.io/captive-browser; + homepage = "https://blog.filippo.io/captive-browser"; license = licenses.mit; - platforms = platforms.linux; + platforms = platforms.all; maintainers = with maintainers; [ volth ]; }; } diff --git a/pkgs/applications/networking/browsers/chromium/browser.nix b/pkgs/applications/networking/browsers/chromium/browser.nix index bbfce71a115..7c0609730c2 100644 --- a/pkgs/applications/networking/browsers/chromium/browser.nix +++ b/pkgs/applications/networking/browsers/chromium/browser.nix @@ -18,6 +18,16 @@ mkChromiumDerivation (base: rec { cp -vLR "$buildPath/locales" "$buildPath/resources" "$libExecPath/" cp -v "$buildPath/chrome" "$libExecPath/$packageName" + # Swiftshader + # See https://stackoverflow.com/a/4264351/263061 for the find invocation. + if [ -n "$(find "$buildPath/swiftshader/" -maxdepth 1 -name '*.so' -print -quit)" ]; then + echo "Swiftshader files found; installing" + mkdir -p "$libExecPath/swiftshader" + cp -v "$buildPath/swiftshader/"*.so "$libExecPath/swiftshader/" + else + echo "Swiftshader files not found" + fi + mkdir -p "$sandbox/bin" cp -v "$buildPath/chrome_sandbox" "$sandbox/bin/${sandboxExecutableName}" @@ -60,8 +70,22 @@ mkChromiumDerivation (base: rec { meta = { description = "An open source web browser from Google"; - homepage = http://www.chromium.org/; - maintainers = with maintainers; [ bendlas ivan thefloweringash ]; + longDescription = '' + Chromium is an open source web browser from Google that aims to build a + safer, faster, and more stable way for all Internet users to experience + the web. It has a minimalist user interface and provides the vast majority + of source code for Google Chrome (which has some additional features). + ''; + homepage = "https://www.chromium.org/"; + maintainers = with maintainers; [ bendlas thefloweringash primeos ]; + # Overview of the maintainer roles: + # nixos-unstable: + # - TODO: Need a new maintainer for x86_64 [0] + # - @thefloweringash: aarch64 + # - @primeos: Provisional maintainer (x86_64) + # Stable channel: + # - TODO (need someone to test backports [0]) + # [0]: https://github.com/NixOS/nixpkgs/issues/78450 license = if enableWideVine then licenses.unfree else licenses.bsd3; platforms = platforms.linux; hydraPlatforms = if channel == "stable" then ["aarch64-linux" "x86_64-linux"] else []; diff --git a/pkgs/applications/networking/browsers/chromium/common.nix b/pkgs/applications/networking/browsers/chromium/common.nix index 7ce1c35e9eb..fdb8584f08e 100644 --- a/pkgs/applications/networking/browsers/chromium/common.nix +++ b/pkgs/applications/networking/browsers/chromium/common.nix @@ -1,4 +1,4 @@ -{ stdenv, llvmPackages, gn, ninja, which, nodejs, fetchpatch, gnutar +{ stdenv, llvmPackages, gnChromium, ninja, which, nodejs, fetchpatch, gnutar # default dependencies , bzip2, flac, speex, libopus @@ -16,14 +16,21 @@ , libXScrnSaver, libXcursor, libXtst, libGLU, libGL , protobuf, speechd, libXdamage, cups , ffmpeg, libxslt, libxml2, at-spi2-core -, jdk +, jre # optional dependencies , libgcrypt ? null # gnomeSupport || cupsSupport , libva ? null # useVaapi +, libdrm ? null, wayland ? null, mesa_drivers ? null, libxkbcommon ? null # useOzone # package customization -, useVaapi ? false +, useOzone ? false +, useVaapi ? !(useOzone || stdenv.isAarch64) # Built if supported, but disabled in the wrapper +# VA-API TODOs: +# - Ozone: M81 fails to build due to "ozone_platform_gbm = false" +# - Possible solutions: Write a patch to fix the build (wrong gn dependencies) +# or build with minigbm +# - AArch64: Causes serious regressions (https://github.com/NixOS/nixpkgs/pull/85253#issuecomment-614405879) , gnomeSupport ? false, gnome ? null , gnomeKeyringSupport ? false, libgnome-keyring3 ? null , proprietaryCodecs ? true @@ -115,7 +122,7 @@ let ninja which python2Packages.python perl pkgconfig python2Packages.ply python2Packages.jinja2 nodejs gnutar - ]; + ] ++ optional (versionAtLeast version "83") python2Packages.setuptools; buildInputs = defaultDependencies ++ [ nspr nss systemd @@ -124,12 +131,13 @@ let glib gtk3 dbus-glib libXScrnSaver libXcursor libXtst libGLU libGL pciutils protobuf speechd libXdamage at-spi2-core - jdk.jre - ] ++ optional gnomeKeyringSupport libgnome-keyring3 + jre + ] ++ optional useVaapi libva + ++ optional gnomeKeyringSupport libgnome-keyring3 ++ optionals gnomeSupport [ gnome.GConf libgcrypt ] ++ optionals cupsSupport [ libgcrypt cups ] - ++ optional useVaapi libva - ++ optional pulseSupport libpulseaudio; + ++ optional pulseSupport libpulseaudio + ++ optionals useOzone [ libdrm wayland mesa_drivers libxkbcommon ]; patches = [ ./patches/nix_plugin_paths_68.patch @@ -146,10 +154,13 @@ let # # ++ optionals (channel == "dev") [ ( githubPatch "" "0000000000000000000000000000000000000000000000000000000000000000" ) ] # ++ optional (versionRange "68" "72") ( githubPatch "" "0000000000000000000000000000000000000000000000000000000000000000" ) - ] ++ optionals (useVaapi) [ - # source: https://aur.archlinux.org/cgit/aur.git/tree/vaapi-fix.patch?h=chromium-vaapi - ./patches/vaapi-fix.patch - ]; + ] ++ optionals (useVaapi) ([ # Fixes for the VA-API build: + ./patches/enable-vdpau-support-for-nvidia.patch # https://aur.archlinux.org/cgit/aur.git/tree/vdpau-support.patch?h=chromium-vaapi + ./patches/enable-video-acceleration-on-linux.patch # Can be controlled at runtime (i.e. without rebuilding Chromium) + ] ++ optionals (versionRange "81" "82") [ + (githubPatch "5b2ff215473e0526b5b24aeff4ad90d369b21c75" "0n00vh8wfpn2ay5fqsxcsx0zadnv7mihm72bcvnrfzh75nzbg902") + (githubPatch "98e343ab369e4262511b5fce547728e3e5eefba8" "00wwp653jk0k0yvix00vr7ymgck9dj7fxjwx4nc67ynn84dh6064") + ]); postPatch = '' # We want to be able to specify where the sandbox is via CHROME_DEVEL_SANDBOX @@ -240,7 +251,6 @@ let is_clang = stdenv.cc.isClang; clang_use_chrome_plugins = false; blink_symbol_level = 0; - enable_swiftshader = false; fieldtrial_testing_like_official_build = true; # Google API keys, see: @@ -260,6 +270,16 @@ let } // optionalAttrs pulseSupport { use_pulseaudio = true; link_pulseaudio = true; + } // optionalAttrs useOzone { + use_ozone = true; + ozone_platform_gbm = false; + use_xkbcommon = true; + use_glib = true; + use_gtk = true; + use_system_libwayland = true; + use_system_minigbm = true; + use_system_libdrm = true; + system_wayland_scanner_path = "${wayland}/bin/wayland-scanner"; } // (extraAttrs.gnFlags or {})); configurePhase = '' @@ -269,7 +289,7 @@ let libExecPath="${libExecPath}" python build/linux/unbundle/replace_gn_files.py \ --system-libraries ${toString gnSystemLibraries} - ${gn}/bin/gn gen --args=${escapeShellArg gnFlags} out/Release | tee gn-gen-outputs.txt + ${gnChromium}/bin/gn gen --args=${escapeShellArg gnFlags} out/Release | tee gn-gen-outputs.txt # Fail if `gn gen` contains a WARNING. grep -o WARNING gn-gen-outputs.txt && echo "Found gn WARNING, exiting nix build" && exit 1 @@ -277,6 +297,11 @@ let runHook postConfigure ''; + # Don't spam warnings about unknown warning options. This is useful because + # our Clang is always older than Chromium's and the build logs have a size + # of approx. 25 MB without this option (and this saves e.g. 66 %). + NIX_CFLAGS_COMPILE = "-Wno-unknown-warning-option"; + buildPhase = let # Build paralelism: on Hydra the build was frequently running into memory # exhaustion, and even other users might be running into similar issues. diff --git a/pkgs/applications/networking/browsers/chromium/default.nix b/pkgs/applications/networking/browsers/chromium/default.nix index c3522e17379..25ef76f331b 100644 --- a/pkgs/applications/networking/browsers/chromium/default.nix +++ b/pkgs/applications/networking/browsers/chromium/default.nix @@ -1,26 +1,31 @@ -{ newScope, config, stdenv, llvmPackages_9 +{ newScope, config, stdenv, llvmPackages_9, llvmPackages_10 , makeWrapper, ed -, glib, gtk3, gnome3, gsettings-desktop-schemas +, glib, gtk3, gnome3, gsettings-desktop-schemas, gn, fetchgit , libva ? null , gcc, nspr, nss, patchelfUnstable, runCommand , lib # package customization +# Note: enable* flags should not require full rebuilds (i.e. only affect the wrapper) , channel ? "stable" , gnomeSupport ? false, gnome ? null , gnomeKeyringSupport ? false , proprietaryCodecs ? true , enablePepperFlash ? false , enableWideVine ? false -, useVaapi ? false # test video on radeon, before enabling this +, useVaapi ? false # Deprecated, use enableVaapi instead! +, enableVaapi ? false # Disabled by default due to unofficial support and issues on radeon +, useOzone ? false , cupsSupport ? true , pulseSupport ? config.pulseaudio or stdenv.isLinux , commandLineArgs ? "" }: let - stdenv = llvmPackages_9.stdenv; - llvmPackages = llvmPackages_9; + llvmPackages = if channel != "stable" + then llvmPackages_10 + else llvmPackages_9; + stdenv = llvmPackages.stdenv; callPackage = newScope chromium; @@ -29,9 +34,20 @@ let upstream-info = (callPackage ./update.nix {}).getChannel channel; - mkChromiumDerivation = callPackage ./common.nix { - inherit gnome gnomeSupport gnomeKeyringSupport proprietaryCodecs cupsSupport pulseSupport useVaapi; - }; + mkChromiumDerivation = callPackage ./common.nix ({ + inherit gnome gnomeSupport gnomeKeyringSupport proprietaryCodecs cupsSupport pulseSupport useOzone; + gnChromium = gn; + } // lib.optionalAttrs (channel != "stable") { + # TODO: Remove after we can update gn for the stable channel (backward incompatible changes): + gnChromium = gn.overrideAttrs (oldAttrs: { + version = "2020-03-23"; + src = fetchgit { + url = "https://gn.googlesource.com/gn"; + rev = "5ed3c9cc67b090d5e311e4bd2aba072173e82db9"; + sha256 = "00y2d35wvqmx9glaqhfb62wdgbfpwr77v0934nnvh9ks71vnsjqy"; + }; + }); + }); browser = callPackage ./browser.nix { inherit channel enableWideVine; }; @@ -113,6 +129,14 @@ let cp -a ${widevineCdm}/WidevineCdm $out/libexec/chromium/ '' else browser; + + optionalVaapiFlags = if useVaapi # TODO: Remove after 20.09: + then throw '' + Chromium's useVaapi was replaced by enableVaapi and you don't need to pass + "--ignore-gpu-blacklist" anymore (also no rebuilds are required anymore). + '' else lib.optionalString + (!enableVaapi) + "--add-flags --disable-accelerated-video-decode --add-flags --disable-accelerated-video-encode"; in stdenv.mkDerivation { name = "chromium${suffix}-${version}"; inherit version; @@ -132,15 +156,14 @@ in stdenv.mkDerivation { buildCommand = let browserBinary = "${chromiumWV}/libexec/chromium/chromium"; getWrapperFlags = plugin: "$(< \"${plugin}/nix-support/wrapper-flags\")"; - libPath = stdenv.lib.makeLibraryPath ([] - ++ stdenv.lib.optional useVaapi libva - ); + libPath = stdenv.lib.makeLibraryPath [ libva ]; in with stdenv.lib; '' mkdir -p "$out/bin" eval makeWrapper "${browserBinary}" "$out/bin/chromium" \ --add-flags ${escapeShellArg (escapeShellArg commandLineArgs)} \ + ${optionalVaapiFlags} \ ${concatMapStringsSep " " getWrapperFlags chromium.plugins.enabled} ed -v -s "$out/bin/chromium" << EOF diff --git a/pkgs/applications/networking/browsers/chromium/patches/vaapi-fix.patch b/pkgs/applications/networking/browsers/chromium/patches/enable-vdpau-support-for-nvidia.patch similarity index 58% rename from pkgs/applications/networking/browsers/chromium/patches/vaapi-fix.patch rename to pkgs/applications/networking/browsers/chromium/patches/enable-vdpau-support-for-nvidia.patch index db9d6082756..b5372d1a255 100644 --- a/pkgs/applications/networking/browsers/chromium/patches/vaapi-fix.patch +++ b/pkgs/applications/networking/browsers/chromium/patches/enable-vdpau-support-for-nvidia.patch @@ -1,6 +1,6 @@ --- a/media/gpu/vaapi/vaapi_video_decode_accelerator.cc +++ b/media/gpu/vaapi/vaapi_video_decode_accelerator.cc -@@ -635,6 +635,7 @@ +@@ -641,6 +641,7 @@ void VaapiVideoDecodeAccelerator::AssignPictureBuffers( // |vpp_vaapi_wrapper_| for VaapiPicture to DownloadFromSurface() the VA's // internal decoded frame. if (buffer_allocation_mode_ != BufferAllocationMode::kNone && @@ -8,24 +8,22 @@ !vpp_vaapi_wrapper_) { vpp_vaapi_wrapper_ = VaapiWrapper::Create( VaapiWrapper::kVideoProcess, VAProfileNone, -@@ -650,7 +651,8 @@ - // only used as a copy destination. Therefore, the VaapiWrapper used and - // owned by |picture| is |vpp_vaapi_wrapper_|. +@@ -665,7 +666,8 @@ void VaapiVideoDecodeAccelerator::AssignPictureBuffers( + PictureBuffer buffer = buffers[i]; + buffer.set_size(requested_pic_size_); std::unique_ptr picture = vaapi_picture_factory_->Create( - (buffer_allocation_mode_ == BufferAllocationMode::kNone) + ((buffer_allocation_mode_ == BufferAllocationMode::kNone) || + (buffer_allocation_mode_ == BufferAllocationMode::kWrapVdpau)) ? vaapi_wrapper_ : vpp_vaapi_wrapper_, - make_context_current_cb_, bind_image_cb_, buffers[i]); -@@ -1077,6 +1079,14 @@ + make_context_current_cb_, bind_image_cb_, buffer); +@@ -1093,6 +1095,12 @@ VaapiVideoDecodeAccelerator::GetSupportedProfiles() { VaapiVideoDecodeAccelerator::BufferAllocationMode VaapiVideoDecodeAccelerator::DecideBufferAllocationMode() { + // NVIDIA blobs use VDPAU -+ if (base::StartsWith(VaapiWrapper::GetVendorStringForTesting(), -+ "Splitted-Desktop Systems VDPAU", -+ base::CompareCase::SENSITIVE)) { ++ if (VaapiWrapper::GetImplementationType() == VAImplementation::kNVIDIAVDPAU) { + LOG(INFO) << "VA-API driver on VDPAU backend"; + return BufferAllocationMode::kWrapVdpau; + } @@ -33,7 +31,7 @@ // TODO(crbug.com/912295): Enable a better BufferAllocationMode for IMPORT // |output_mode_| as well. if (output_mode_ == VideoDecodeAccelerator::Config::OutputMode::IMPORT) -@@ -1089,7 +1099,7 @@ +@@ -1105,7 +1113,7 @@ VaapiVideoDecodeAccelerator::DecideBufferAllocationMode() { // depends on the bitstream and sometimes it's not enough to cover the amount // of frames needed by the client pipeline (see b/133733739). // TODO(crbug.com/911754): Enable for VP9 Profile 2. @@ -44,7 +42,7 @@ // an extra allocation for both |client_| and |decoder_|, see --- a/media/gpu/vaapi/vaapi_video_decode_accelerator.h +++ b/media/gpu/vaapi/vaapi_video_decode_accelerator.h -@@ -204,6 +204,7 @@ +@@ -204,6 +204,7 @@ class MEDIA_GPU_EXPORT VaapiVideoDecodeAccelerator // Using |client_|s provided PictureBuffers and as many internally // allocated. kNormal, @@ -52,3 +50,25 @@ }; // Decides the concrete buffer allocation mode, depending on the hardware +--- a/media/gpu/vaapi/vaapi_wrapper.cc ++++ b/media/gpu/vaapi/vaapi_wrapper.cc +@@ -131,6 +131,9 @@ media::VAImplementation VendorStringToImplementationType( + } else if (base::StartsWith(va_vendor_string, "Intel iHD driver", + base::CompareCase::SENSITIVE)) { + return media::VAImplementation::kIntelIHD; ++ } else if (base::StartsWith(va_vendor_string, "Splitted-Desktop Systems VDPAU", ++ base::CompareCase::SENSITIVE)) { ++ return media::VAImplementation::kNVIDIAVDPAU; + } + return media::VAImplementation::kOther; + } +--- a/media/gpu/vaapi/vaapi_wrapper.h ++++ b/media/gpu/vaapi/vaapi_wrapper.h +@@ -79,6 +79,7 @@ enum class VAImplementation { + kIntelIHD, + kOther, + kInvalid, ++ kNVIDIAVDPAU, + }; + + // This class handles VA-API calls and ensures proper locking of VA-API calls diff --git a/pkgs/applications/networking/browsers/chromium/patches/enable-video-acceleration-on-linux.patch b/pkgs/applications/networking/browsers/chromium/patches/enable-video-acceleration-on-linux.patch new file mode 100644 index 00000000000..bd278633f67 --- /dev/null +++ b/pkgs/applications/networking/browsers/chromium/patches/enable-video-acceleration-on-linux.patch @@ -0,0 +1,48 @@ +From b2144fd28e09cd52e7a88a62a9d9b54cf9922f9f Mon Sep 17 00:00:00 2001 +From: Michael Weiss +Date: Tue, 14 Apr 2020 14:16:10 +0200 +Subject: [PATCH] Enable accelerated video decode on Linux + +This will enable accelerated video decode on Linux by default (i.e. +without "--ignore-gpu-blacklist"), but on NixOS we'll provide +"--disable-accelerated-video-decode" and +"--disable-accelerated-video-encode" by default to avoid regressions +(e.g. VA-API doesn't work properly for some radeon drivers). + +Video acceleration can then be enabled via: +chromium.override { enableVaapi = true; } +without rebuilding Chromium. +--- + gpu/config/software_rendering_list.json | 16 ---------------- + 1 file changed, 16 deletions(-) + +diff --git a/gpu/config/software_rendering_list.json b/gpu/config/software_rendering_list.json +index 22712bdbf38f..a06dd19a50e4 100644 +--- a/gpu/config/software_rendering_list.json ++++ b/gpu/config/software_rendering_list.json +@@ -336,22 +336,6 @@ + ] + }, + { +- "id": 48, +- "description": "Accelerated video decode is unavailable on Linux", +- "cr_bugs": [137247, 1032907], +- "os": { +- "type": "linux" +- }, +- "exceptions": [ +- { +- "machine_model_name": ["Chromecast"] +- } +- ], +- "features": [ +- "accelerated_video_decode" +- ] +- }, +- { + "id": 50, + "description": "Disable VMware software renderer on older Mesa", + "cr_bugs": [145531, 332596, 571899, 629434], +-- +2.11.0 + diff --git a/pkgs/applications/networking/browsers/chromium/plugins.nix b/pkgs/applications/networking/browsers/chromium/plugins.nix index 3abdef62eef..1dd9baa628a 100644 --- a/pkgs/applications/networking/browsers/chromium/plugins.nix +++ b/pkgs/applications/networking/browsers/chromium/plugins.nix @@ -45,11 +45,11 @@ let flash = stdenv.mkDerivation rec { pname = "flashplayer-ppapi"; - version = "32.0.0.293"; + version = "32.0.0.363"; src = fetchzip { url = "https://fpdownload.adobe.com/pub/flashplayer/pdc/${version}/flash_player_ppapi_linux.x86_64.tar.gz"; - sha256 = "0rgriqdbyrzpm1bcph35bhzd5dz21yim56z93hkmbpdqg7767dwm"; + sha256 = "0znk8an892mykgbz56hyv3gz65vc9mhb3vn96c6bsvicwl1fn460"; stripRoot = false; }; diff --git a/pkgs/applications/networking/browsers/chromium/upstream-info.nix b/pkgs/applications/networking/browsers/chromium/upstream-info.nix index 6a4e46e74bd..cf542faa8a1 100644 --- a/pkgs/applications/networking/browsers/chromium/upstream-info.nix +++ b/pkgs/applications/networking/browsers/chromium/upstream-info.nix @@ -1,18 +1,18 @@ # This file is autogenerated from update.sh in the same directory. { beta = { - sha256 = "1j9zfbyil16yhf6hzrd0ssy9k49jx468dbmgzhc20l1548fif62g"; - sha256bin64 = "1jfsswjqzdif6824p9a6raw5j9309y61c80kgfq23247vr514ky9"; - version = "79.0.3945.88"; + sha256 = "1s16wl101yabq0l7w0q50lxkr2gn090pcaj6l5sj6g5xvi9lhgbf"; + sha256bin64 = "0k6fsqlpiwp9vds83hb3cg9xf74hqgbfdm3ijyad2rmwc5rqk0ax"; + version = "83.0.4103.14"; }; dev = { - sha256 = "1fbs6llrhm9jkzmk3v3a84d9is6g96kysy91hvpb0bw8f7anl969"; - sha256bin64 = "04fscphs4w6jb1kdc25jc568r3k4x3nmg0apggjfnbdwzb5zkmf2"; - version = "80.0.3987.16"; + sha256 = "0djppzwzpfyyfjb1mhy5wws2379m3wpzyk2x3kw5nd0mdz35hbny"; + sha256bin64 = "1wg55qhfvd5zvigjl6496za81mh9b2c5da53zy07bk8wj91ly8pf"; + version = "84.0.4115.5"; }; stable = { - sha256 = "1j9zfbyil16yhf6hzrd0ssy9k49jx468dbmgzhc20l1548fif62g"; - sha256bin64 = "1k44fnn41n73j1lff4h8s8f79pw8w180n467lwff4g9izh6c2blz"; - version = "79.0.3945.88"; + sha256 = "0hsxxw7fm1p8g53msqb644v8vr4cpvjmpln444c2268rm43yik17"; + sha256bin64 = "0ap7flrw3h885454fa2r7psa4sh8567ql7v7x96q11gh9gjrdvp3"; + version = "81.0.4044.113"; }; } diff --git a/pkgs/applications/networking/browsers/conkeror/default.nix b/pkgs/applications/networking/browsers/conkeror/default.nix deleted file mode 100644 index be1389c2121..00000000000 --- a/pkgs/applications/networking/browsers/conkeror/default.nix +++ /dev/null @@ -1,39 +0,0 @@ -{ stdenv, fetchgit, unzip, firefox-esr, makeWrapper }: - -stdenv.mkDerivation rec { - pkgname = "conkeror"; - version = "1.0.4"; - name = "${pkgname}-${version}"; - - src = fetchgit { - url = git://repo.or.cz/conkeror.git; - rev = "refs/tags/${version}"; - sha256 = "10c57wqybp9kcjpkb01wxq0h3vafcdb1g5kb4k8sb2zajg59afv8"; - }; - - buildInputs = [ unzip makeWrapper ]; - - installPhase = '' - mkdir -p $out/libexec/conkeror - cp -r * $out/libexec/conkeror - - makeWrapper ${firefox-esr}/bin/firefox $out/bin/conkeror \ - --add-flags "-app $out/libexec/conkeror/application.ini" - ''; - - meta = with stdenv.lib; { - description = "A keyboard-oriented, customizable, extensible web browser"; - longDescription = '' - Conkeror is a keyboard-oriented, highly-customizable, highly-extensible - web browser based on Mozilla XULRunner, written mainly in JavaScript, - and inspired by exceptional software such as Emacs and vi. Conkeror - features a sophisticated keyboard system, allowing users to run commands - and interact with content in powerful and novel ways. It is - self-documenting, featuring a powerful interactive help system. - ''; - homepage = http://conkeror.org/; - license = with licenses; [ mpl11 gpl2 lgpl21 ]; - maintainers = with maintainers; [ astsmtl ]; - platforms = platforms.linux; - }; -} diff --git a/pkgs/applications/networking/browsers/dillo/default.nix b/pkgs/applications/networking/browsers/dillo/default.nix index 8d6c99d2468..fa1fa76340c 100644 --- a/pkgs/applications/networking/browsers/dillo/default.nix +++ b/pkgs/applications/networking/browsers/dillo/default.nix @@ -20,7 +20,7 @@ stdenv.mkDerivation rec { configureFlags = [ "--enable-ssl" ]; meta = with stdenv.lib; { - homepage = https://www.dillo.org/; + homepage = "https://www.dillo.org/"; description = "A fast graphical web browser with a small footprint"; longDescription = '' Dillo is a small, fast web browser, tailored for older machines. diff --git a/pkgs/applications/networking/browsers/elinks/default.nix b/pkgs/applications/networking/browsers/elinks/default.nix index da6a7bc4715..985497a095c 100644 --- a/pkgs/applications/networking/browsers/elinks/default.nix +++ b/pkgs/applications/networking/browsers/elinks/default.nix @@ -14,11 +14,14 @@ stdenv.mkDerivation { name = "elinks-0.12pre6"; src = fetchurl { - url = http://elinks.or.cz/download/elinks-0.12pre6.tar.bz2; + url = "http://elinks.or.cz/download/elinks-0.12pre6.tar.bz2"; sha256 = "1nnakbi01g7yd3zqwprchh5yp45br8086b0kbbpmnclabcvlcdiq"; }; - patches = [ ./gc-init.patch ]; + patches = [ + ./gc-init.patch + ./openssl-1.1.patch + ]; buildInputs = [ ncurses xlibsWrapper bzip2 zlib openssl spidermonkey gpm ] ++ stdenv.lib.optional enableGuile guile @@ -43,7 +46,7 @@ stdenv.mkDerivation { meta = { description = "Full-featured text-mode web browser"; - homepage = http://elinks.or.cz; + homepage = "http://elinks.or.cz"; license = stdenv.lib.licenses.gpl2; platforms = stdenv.lib.platforms.linux; }; diff --git a/pkgs/applications/networking/browsers/elinks/openssl-1.1.patch b/pkgs/applications/networking/browsers/elinks/openssl-1.1.patch new file mode 100644 index 00000000000..22792b6c079 --- /dev/null +++ b/pkgs/applications/networking/browsers/elinks/openssl-1.1.patch @@ -0,0 +1,51 @@ +diff --git a/src/network/ssl/socket.c b/src/network/ssl/socket.c +index 45b4b4a8..0385a431 100644 +--- a/src/network/ssl/socket.c ++++ b/src/network/ssl/socket.c +@@ -67,7 +67,9 @@ static void + ssl_set_no_tls(struct socket *socket) + { + #ifdef CONFIG_OPENSSL +- ((ssl_t *) socket->ssl)->options |= SSL_OP_NO_TLSv1; ++#ifdef SSL_OP_NO_TLSv1 ++ SSL_set_options((ssl_t *)socket->ssl, SSL_OP_NO_TLSv1); ++#endif + #elif defined(CONFIG_GNUTLS) + { + /* GnuTLS does not support SSLv2 because it is "insecure". +@@ -145,9 +147,11 @@ ssl_connect(struct socket *socket) + } + + if (client_cert) { +- SSL_CTX *ctx = ((SSL *) socket->ssl)->ctx; ++ SSL_CTX *ctx = SSL_get_SSL_CTX((SSL *) socket->ssl); + +- SSL_CTX_use_certificate_chain_file(ctx, client_cert); ++ SSL_CTX_use_certificate_chain_file( ++ (SSL *) socket->ssl, ++ client_cert); + SSL_CTX_use_PrivateKey_file(ctx, client_cert, + SSL_FILETYPE_PEM); + } +diff --git a/src/network/ssl/ssl.c b/src/network/ssl/ssl.c +index c008121d..c06a80a7 100644 +--- a/src/network/ssl/ssl.c ++++ b/src/network/ssl/ssl.c +@@ -50,11 +50,16 @@ init_openssl(struct module *module) + * cannot initialize the PRNG and so every attempt to use SSL fails. + * It's actually an OpenSSL FAQ, and according to them, it's up to the + * application coders to seed the RNG. -- William Yodlowsky */ +- if (RAND_egd(RAND_file_name(f_randfile, sizeof(f_randfile))) < 0) { ++ RAND_file_name(f_randfile, sizeof(f_randfile)); ++#ifdef HAVE_RAND_EGD ++ if (RAND_egd(f_randfile) < 0) { + /* Not an EGD, so read and write to it */ ++#endif + if (RAND_load_file(f_randfile, -1)) + RAND_write_file(f_randfile); ++#ifdef HAVE_RAND_EGD + } ++#endif + + SSLeay_add_ssl_algorithms(); + context = SSL_CTX_new(SSLv23_client_method()); diff --git a/pkgs/applications/networking/browsers/eolie/default.nix b/pkgs/applications/networking/browsers/eolie/default.nix index b9b183a03ff..cfccacf1ae0 100644 --- a/pkgs/applications/networking/browsers/eolie/default.nix +++ b/pkgs/applications/networking/browsers/eolie/default.nix @@ -59,7 +59,7 @@ python3.pkgs.buildPythonApplication rec { meta = with stdenv.lib; { description = "A new GNOME web browser"; - homepage = https://wiki.gnome.org/Apps/Eolie; + homepage = "https://wiki.gnome.org/Apps/Eolie"; license = licenses.gpl3Plus; maintainers = with maintainers; [ samdroid-apps worldofpeace ]; platforms = platforms.linux; diff --git a/pkgs/applications/networking/browsers/ephemeral/default.nix b/pkgs/applications/networking/browsers/ephemeral/default.nix index d5a1063a688..53d0ffb4c19 100644 --- a/pkgs/applications/networking/browsers/ephemeral/default.nix +++ b/pkgs/applications/networking/browsers/ephemeral/default.nix @@ -19,13 +19,13 @@ stdenv.mkDerivation rec { pname = "ephemeral"; - version = "6.1.1"; + version = "6.3.3"; src = fetchFromGitHub { owner = "cassidyjames"; repo = "ephemeral"; rev = version; - sha256 = "1i77chbjjg8zda5bnn1wj4h00a88awfls5b3i3dqwgsi356hv4wb"; + sha256 = "093bqc40p4s8jc1s5rg49363x24vnwwjayvgzmi4xag28f1x6kn8"; }; nativeBuildInputs = [ @@ -54,9 +54,15 @@ stdenv.mkDerivation rec { patchShebangs meson/post_install.py ''; + passthru = { + updateScript = pantheon.updateScript { + attrPath = pname; + }; + }; + meta = with stdenv.lib; { description = "The always-incognito web browser"; - homepage = https://github.com/cassidyjames/ephemeral; + homepage = "https://github.com/cassidyjames/ephemeral"; maintainers = with maintainers; [ kjuvi ] ++ pantheon.maintainers; platforms = platforms.linux; license = licenses.gpl3; diff --git a/pkgs/applications/networking/browsers/falkon/default.nix b/pkgs/applications/networking/browsers/falkon/default.nix index 6e21456a9a9..954b45a2042 100644 --- a/pkgs/applications/networking/browsers/falkon/default.nix +++ b/pkgs/applications/networking/browsers/falkon/default.nix @@ -36,7 +36,7 @@ mkDerivation rec { meta = with stdenv.lib; { description = "QtWebEngine based cross-platform web browser"; - homepage = https://community.kde.org/Incubator/Projects/Falkon; + homepage = "https://community.kde.org/Incubator/Projects/Falkon"; license = licenses.gpl3; maintainers = with maintainers; [ peterhoeg ]; platforms = platforms.unix; diff --git a/pkgs/applications/networking/browsers/firefox-bin/beta_sources.nix b/pkgs/applications/networking/browsers/firefox-bin/beta_sources.nix index cdd6415fc41..0737bac48c7 100644 --- a/pkgs/applications/networking/browsers/firefox-bin/beta_sources.nix +++ b/pkgs/applications/networking/browsers/firefox-bin/beta_sources.nix @@ -1,965 +1,965 @@ { - version = "72.0b4"; + version = "76.0b4"; sources = [ - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/ach/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/ach/firefox-76.0b4.tar.bz2"; locale = "ach"; arch = "linux-x86_64"; - sha512 = "10778f9e5d8514bcfa645b677fc5fd67af9adfbb425eaccc28698a02e628e96e47a14c7d90d5e30ab7a4a8a2787ff6d9c28dea4a53760843421d56f7cf8374df"; + sha512 = "069dab2a91793ac9cdaa128473f706e194cf763df66ae448217cd7e5297857bb2d21ad198f9592bbe4831a2bbe9b76ec1ef96c288c4d8a85e35733ef0f75462f"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/af/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/af/firefox-76.0b4.tar.bz2"; locale = "af"; arch = "linux-x86_64"; - sha512 = "c902ab0e753d6580c523140c723725862794234cfee94a4a2839e450435cbbfe60a761726e5034e5899dd2157e24a6ca0a9f64325447a94ab3a8247ad26e2af1"; + sha512 = "bf1c4da2b03f95f241497e646d77ce5675f09dd8947def93983814c5bad257e38acc5c918faf7b758bf7293c09594baeac43ffaad814a47d3cbebcd5a49b4f4f"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/an/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/an/firefox-76.0b4.tar.bz2"; locale = "an"; arch = "linux-x86_64"; - sha512 = "cea9124311c558030c669bde0c11712436b8ad3dd3e2bcaed28c8e5148e694e286882b0f1fdaa85570e84fba06d95732f5409d968bb183bedf5e5624926d70c1"; + sha512 = "04bf37a16a65d453d1c9406196d095acd0087a0bfad0ffbb466afc2c99249f7a82899434a47343399db63c95d9c827a9a49b5c9eede2ad7bb7bcd91d82770fcf"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/ar/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/ar/firefox-76.0b4.tar.bz2"; locale = "ar"; arch = "linux-x86_64"; - sha512 = "ccf0bb4ed01cb80914a1e208304ff2f5a23cec2dc7a7a5dfac52c1931e2b8b2641adc6afb1b549ff3d72440a480dd9effefe016f211952fd7d25df75e2821f72"; + sha512 = "71bcef558731031d1e38b370494be88dcd82299918a98c45be7fbec61ba5122ffcf3bbf4f2705c2e81cc133a888289c118511d8713ed722d99638a530d5d4da2"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/ast/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/ast/firefox-76.0b4.tar.bz2"; locale = "ast"; arch = "linux-x86_64"; - sha512 = "d2af3df2105238258d1307483dd68056862c269543c434d211143d46225961f2fc8231861a49c03e048c0dd474c8c947a334fdf277baa3fbef5e145f4aff021e"; + sha512 = "9f73a427c5a520fefd777d84aea6dfe50f2bd65f29e9acd16f0238ba5869e2c129872073c04769afab3ee973bfbcc6b50e204a53a8ca380a0e5d578557d59599"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/az/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/az/firefox-76.0b4.tar.bz2"; locale = "az"; arch = "linux-x86_64"; - sha512 = "46ca85de7d5adc17c7b32a64f8aa7bea926d4bb1c722e2ec3a92d4763225e90ebd0a7a3def868804d7722c71a5b348517750d11f33e7b40031f4c8223481ffb8"; + sha512 = "8717b342a6c49356017674c516b58415a21aa2a84fdf986c427f0dfc6af3944dae822728aca93184a10f5517202cf5e6ee49221485c64526edc0e083b0caae52"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/be/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/be/firefox-76.0b4.tar.bz2"; locale = "be"; arch = "linux-x86_64"; - sha512 = "78a453467e7d97099ade27f2dafe25afa45e2b00b0532aaf60696b4a8867e4d8039e1383f66dd94e8d9986bccf9b17db2ba48d83979ef9268720755ed26839c5"; + sha512 = "0bf61f3952c7b40e4950bfd294f5382da877eecc265bd9a1ea78135471b5802b69bc90361c6e286e2a2c7f5151a44c711c45f3d9b053324213ade49c79907b8b"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/bg/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/bg/firefox-76.0b4.tar.bz2"; locale = "bg"; arch = "linux-x86_64"; - sha512 = "140997deaa24f6150ecabf82c2fda974dc294bb145781b98f448749b1d80a5caf29d7336b64ddf3bacda6d1036712dd89248e1c7781255d26876831a319d8c99"; + sha512 = "de46cf916c7289f04590beab6ca3aecbcecb6ac65b7377206244e9cd41d0df8e68e6006ca49ae477ecabbb9b13c9b1df11c4cd732967b13aef3e9d0d708d2e3d"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/bn/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/bn/firefox-76.0b4.tar.bz2"; locale = "bn"; arch = "linux-x86_64"; - sha512 = "469e4e1bc1b72b7ce8735c0940c778eb008905a0f5fdc2dc3a04a905ee7b151fb3cb34784eac2d88ce820565f795d9e44a82a95b9637c91255cf9178e1677ccc"; + sha512 = "46ae6e3ef632317f2f449223d64ebdea050c21f72a37fb27e5cff10d60f87cdb5d8b58de0e0d63e1a6f55ed0559eb5ef40a0768615a52dd5e2f2dee1e0bcf08c"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/br/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/br/firefox-76.0b4.tar.bz2"; locale = "br"; arch = "linux-x86_64"; - sha512 = "bb57d3bfcebab646d10855dd1883806c6b477b0e3e4b84c370752be83accf121a55c90f1d7a1d4a2fa4f54f7d90f65d3362357963fa7b017971286134c69d13b"; + sha512 = "f0652632fe303db805cc422ee010f968493377014865a3a80af13ea308c3eca7c9793172106064dc2f36ec2f8f3aa3e679f285975a431fc7de6aeca4373db67d"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/bs/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/bs/firefox-76.0b4.tar.bz2"; locale = "bs"; arch = "linux-x86_64"; - sha512 = "5833a204b389a80518cb8c389f03ba2cc3be1d553c2deaeb4ec9eeb94f1cd45cbd96f8aaff0b2ae639b0993ff29f21b9a1d03f28e96a476c8867f670a05eb7c1"; + sha512 = "31efa7360e56508f2b249d2789387bb8130a3db14843b87463dfb600ba3f37328fb86113c263dca3ceb30c620e889810194bd408220941ce9700dddea908e1f5"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/ca-valencia/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/ca-valencia/firefox-76.0b4.tar.bz2"; locale = "ca-valencia"; arch = "linux-x86_64"; - sha512 = "1c43377660b7be3de41f2c2c804d5cc638cf044979343f77b74f6e42190017d2c6eecd252a369dcc619b0e9bd97729261cb9cafc6964b3c7f0d2424f601aa44d"; + sha512 = "f6ddaa4f75bf434474da6f441c8caedaa77a53ecfef92532135a27c8e76f8acad7afc26b3549a2f753676533c0352227cdd875d952c1a720332cf9cf4dfbfbf4"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/ca/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/ca/firefox-76.0b4.tar.bz2"; locale = "ca"; arch = "linux-x86_64"; - sha512 = "169f024df0834bae9a8d5d2cc31a3af0bea865308b5642b3ed51ae4e65ef3f81dc6d1e00669dc1f0ef9e68cb22cdc6d1460567094bc66446f66804195d01afbc"; + sha512 = "4d58cd473798b52dfaa5fb4424f9ec57eb4e667c884808dd4fdceb851161ef3f3f72354588ce25eec24ff7ee671e7bdc1dfa7ef18c262540549ba34d8471ca42"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/cak/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/cak/firefox-76.0b4.tar.bz2"; locale = "cak"; arch = "linux-x86_64"; - sha512 = "2689c6b338ff45d7c94e1530b3bc53cdbf4f3fe11424c770e03bf754ccb0699e75d0047b18be531f529c63da76a8170af85d76fcbb35a47f341efd8d485560dc"; + sha512 = "5aa6d504cf97e0d446e8699bbc34b9e69632455b97c0427c1081d9083c200ef3a83472b95ee3804612e36d93f0d5992bcc4f8bade7eb132a30c313d2efd7a75a"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/cs/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/cs/firefox-76.0b4.tar.bz2"; locale = "cs"; arch = "linux-x86_64"; - sha512 = "2bb94f4f324aa394e7aa4f98b3d22417b68449e2b15f12e3b6df576272506472984ed97bfd5949f1a1e7e2913e1afa57191361ea02b46c723e9590e916c9c81a"; + sha512 = "c8ee077240afe3df4052f093e6a5f13ec2449f84863063483edd11b8c76ccd42a45cce2c627ef57d5b4e337f71a88e510efdea1fb1f0065fddc1390d4753ce12"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/cy/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/cy/firefox-76.0b4.tar.bz2"; locale = "cy"; arch = "linux-x86_64"; - sha512 = "18778da2d0069c846c20323f8e8e786e13a8c08ea4152aa195b416f449b906bb73001ec0a9e6ce841b7b555b5c87643160827ff3a46f46a354fada07dcc9e0b7"; + sha512 = "b0352034fcfc9e2acbb546343ec2e8103f08b3c802289486611d694c07bd154d9bab7509e8a09134b44929ffb54a806ea4cf44a8d4b1ea506c23b84adee123ef"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/da/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/da/firefox-76.0b4.tar.bz2"; locale = "da"; arch = "linux-x86_64"; - sha512 = "33d190f5126ecbe033db03609dd38c9edf9020aefb3aedb9410434e3d0f630da7cf31769735e05622640720db1d251f83b744a061d3b08561147397b76ef13f8"; + sha512 = "57bfa4d27ab78cdf9da4d04a4bd6a38873918bb800ccc1e49259c5d6753e9fdee0620795c96193c84938c126a94423d21ae12a3c998274474ff7b71b3da9e701"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/de/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/de/firefox-76.0b4.tar.bz2"; locale = "de"; arch = "linux-x86_64"; - sha512 = "2ccc6b0be2e17491b78df4a7bb4e46f1d96f4e2ac89a429f44b8e37db3d364477f998ec9032a15c8d9df8060e8b15133111bf163cfc781f015dbaf17827125eb"; + sha512 = "61cfd12448a01a71c98ef855ea9c54d105bde516d97e8e1d70e5008a3633c0a45c194a751f2a7884e0632c56d7ee830bfd1a0d9a07bcfd54606f7c37bf2b4b92"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/dsb/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/dsb/firefox-76.0b4.tar.bz2"; locale = "dsb"; arch = "linux-x86_64"; - sha512 = "f040c247f36018c4aa4731b9f6ca0a1e3a21111d2ea99b8026270392a9f125f9e0ba060c5cd02cf60e6ded63f56d0a257eca001966b8ed96cb695b4a68e10c4a"; + sha512 = "d6d3f08595f1675f181b40cc55f03009ccc212bfa733c341e51151e24089372a357a3a2851806eee708cc143a75a1d1a8d8a078fffa5988683945183f927f801"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/el/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/el/firefox-76.0b4.tar.bz2"; locale = "el"; arch = "linux-x86_64"; - sha512 = "d7a2385b2ee59a7d39cd73f27b945b486f3df393e9807c74b3fa86130b25a8d4144861024c071b16ad9a1ae14f49eb66ce0c8e85ab56237e4461513adbc25106"; + sha512 = "559c34cd79cb820f674d0aff9aec9e9cccc51ff7b1fcbd17ef95b9066e35880c5c980155d2ec6913e1d9ad3f9e25ff8757ce84e0b22beb21e893ab0bf30ddd5b"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/en-CA/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/en-CA/firefox-76.0b4.tar.bz2"; locale = "en-CA"; arch = "linux-x86_64"; - sha512 = "8d276a97e68a437116755126f4ddd8168b825c9754422ee1fae03a1bccb447506f45693cb4df70d08a765a45c648255f63df363d7109befaf2dcc5808fb8d872"; + sha512 = "9f850ab71ab61eff4d2c9630cedbe42773982e1a8086a59723db64a01852a9ebf5ec90be7e315b9b7e142bc040eb2523b805eeab13b47a01ccd0978786d77fa4"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/en-GB/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/en-GB/firefox-76.0b4.tar.bz2"; locale = "en-GB"; arch = "linux-x86_64"; - sha512 = "eea97bfeb278b3c2c19bf48009971dd50631215c36ff00fae4d533c70e6a3056085562d8a399ec6c85b676bb320111ce2a3621e1dee022408ae9d40d5df5c085"; + sha512 = "134740c2c4efb9f014f42eb5002a4eddf8da67c62798f8c733623ec3f28a2ce7c2caad0e3b0f05fc5474148714c7394c53ba77953d4f5c56d1ad4aa8fd35c19d"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/en-US/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/en-US/firefox-76.0b4.tar.bz2"; locale = "en-US"; arch = "linux-x86_64"; - sha512 = "7ea54472c3be609e7fc1dd4702db2d1a961f1d18acfc60a63b54d53ea77c87447492f05509a72cff48475f96af673dc1822b99f4fcf87b1b56a9f3537d1810d0"; + sha512 = "4401f8e0efe0ff589ae496ea959dec86834c331af0108cdae4a4380fc48e989068d12d33faca0cedbc4e5fb78460b6495a29022c42bbbcc94731cccede9927d3"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/eo/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/eo/firefox-76.0b4.tar.bz2"; locale = "eo"; arch = "linux-x86_64"; - sha512 = "227fbd8fc7ea8a703ccac5c324e42258b96c5125faac201d5dbf70579215720e06a9726b197df3ccf85ace84e5df5bbf80ea09a0eaa1ed0b5c4f275d6f3d1939"; + sha512 = "93a79dd6fc6acfc8829bd520139e6ba4075f67a091701c1a877212e495c4b530e35cc21bdf5d15526c27aacf2e25a87375f3a4aa555453677348f0442378ad37"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/es-AR/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/es-AR/firefox-76.0b4.tar.bz2"; locale = "es-AR"; arch = "linux-x86_64"; - sha512 = "917bd89db5eb3d50a86c8b37589fb73c5bfca676af857cf0528dae236e4bb2f0d25ab0a1620eae832f8c3f55af57f4a983362828244c3cd5ebaee5b8c03c5f75"; + sha512 = "ac7d84178ac2b315007cd5a0ec632dad6172117378f3a4afe6ad0099b45ca6d50534230e93c3045d1d89a18e742541514f6600f1b581547931e75769d361954e"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/es-CL/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/es-CL/firefox-76.0b4.tar.bz2"; locale = "es-CL"; arch = "linux-x86_64"; - sha512 = "b7d586c9c770a346324e26a2e2f9ace455827bd2e8c1bed4e12411ef419b8d5434e6acf99f15876d95343203242bc96b77fffc3f18f789c42e37a6c22ede3a46"; + sha512 = "cba6f234b9e7f4612cffb24fb648dc715730b0128bcf070b3e4f44ff2026610be4f8e36c9ff122688d47930a2d22a96942df6cce8d2c40ed443a8fb7204f3e49"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/es-ES/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/es-ES/firefox-76.0b4.tar.bz2"; locale = "es-ES"; arch = "linux-x86_64"; - sha512 = "d94e2b0442158d6f4ca4de81230f0b29b64714561fe6172cb14c35d5b742802c6ea5d84cd7a4e1cea14848892e451125bfff8c1feca663e1b57e503c96f7e928"; + sha512 = "e65aec8d339144b3acc24867da6e7832658bb625277934320ed428c21af537df3eaae6922102d43b8b4742e5e33b789836865e64f3ceba08e7a752781e2ad8fa"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/es-MX/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/es-MX/firefox-76.0b4.tar.bz2"; locale = "es-MX"; arch = "linux-x86_64"; - sha512 = "545901f49f6bd877780624be3ffa2c8a0b54e785d6e1b4509eb7b11f88bddabac84a14dbd0d463a74f7b487e8fb36077662d577cebfe56719b1715e7488f2598"; + sha512 = "13c0a83ad36749003d96b8e56471d632cf7006cde3c4b89ce2ff98bc42ddfa76b1afa4f3437e87009182cf7677931c5a307a4a2ac0e0250346da3f12dc723f64"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/et/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/et/firefox-76.0b4.tar.bz2"; locale = "et"; arch = "linux-x86_64"; - sha512 = "d36bc766733be0da86cfc65fad481a41bcb983ce665117113d8d34f536af96cc342d84db502ce4d262050b57d39b60e2e3b96f2681ba15df625b79e0dc6e21e6"; + sha512 = "004eff52a5c6e4d8d60c488a52e894b0cfe8471f1c9258c319bf2e023c231c3bf282ef3d03d3a8045fcc8ef53e6e1173ea580dd71f73dd0bb2aea198f96eccb1"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/eu/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/eu/firefox-76.0b4.tar.bz2"; locale = "eu"; arch = "linux-x86_64"; - sha512 = "57cb10ba3b24d617865f2aa500024889d93ef7c0ab79559cbaa15544424d0bf32fd7ac435b1953ee75ca241cf2164ecec56eddc874f57b103b2f1f9402509784"; + sha512 = "3633383291f77632882744592c09be7a808897ed02809f0fff84ee4f16a58bf0ca6a82c0efc82b6c7291bf8ed48b0fe8eded288affdae9b0b55137b4dbce40dd"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/fa/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/fa/firefox-76.0b4.tar.bz2"; locale = "fa"; arch = "linux-x86_64"; - sha512 = "4aa25840114b704c92e8a1b190b8c809b5ef66ae0288d495835a2766a9c7fe91e3da28b272e55bf1f51fecfbb044333bfdc8290dff9ff6f0654195d31cfa846a"; + sha512 = "683984fd0b388d69206a5d9ac1cf174b513aec52ca19eb6644209818a0cbe54124428adccd15e1ad9e7d41c6016c34a70ad77b721440655b593ad95aa66290bd"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/ff/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/ff/firefox-76.0b4.tar.bz2"; locale = "ff"; arch = "linux-x86_64"; - sha512 = "5a0c4d1fc711d449b6188f021691f1b4c4c73c9d48d957176d1d6ff70e818a9cea194394ef4feee4e50823eeafca94366967bf9f11b2c128ab3987035db500d2"; + sha512 = "7c12dc3450e511915494757ebcaa6b0a5a0f3ed1bd349ce1c28b4cce1b931844408daf59e27486eb044b669fd7bd1ca4cb9512eb2332e7a7d360e20dccdae260"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/fi/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/fi/firefox-76.0b4.tar.bz2"; locale = "fi"; arch = "linux-x86_64"; - sha512 = "e09fd700313ba64481eb460d6693b38904cf1a8fe9b9069015ed052ff38720b24a9ee99048e35063a3b632a81da190958eb6f2ef4dbbd100d1fc3ca1fe940296"; + sha512 = "ffb87a2702b7f3e8fc80038670a3cf45bf64b11442b129751e7e80cd0b328d6009190b2658b8a28562f8ecabed52a64f327fd263a0d93540f8f5f09250d4a882"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/fr/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/fr/firefox-76.0b4.tar.bz2"; locale = "fr"; arch = "linux-x86_64"; - sha512 = "85c2ac0a335589ab1f188b1c04de7cf4659d7ea15587b04ee7c8d4e9633f73f8b43d7a9befb648ab565ef396917e1ae4e5482a1cd0d76bc183b065b219159a23"; + sha512 = "aacb42dde2e18082ce80cf3e1201c73aa9985d711ccdb4b227efb6619a010fc108315a5dbfe23a666c9d851ba397f117dbaa53e5b4b3d0730c85a53ed4b0512d"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/fy-NL/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/fy-NL/firefox-76.0b4.tar.bz2"; locale = "fy-NL"; arch = "linux-x86_64"; - sha512 = "5016901adc6a1f53f9060522fbb1382c4c688a94936f1054cfccad5c6b0b2024900c1193eb8da3dc75ba88236ed1f6c6bf792365e3e140eef86ad5603ca22be0"; + sha512 = "ba06e4276fedbc7212bcbf62ee1b0a1dcb7005a449778de5e70d8b99e86d83ed48d9408fbf016bf33dde135ad049c80011d00b5c72b0965ec6be7f91b759471f"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/ga-IE/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/ga-IE/firefox-76.0b4.tar.bz2"; locale = "ga-IE"; arch = "linux-x86_64"; - sha512 = "31ab37f8b09d09cdaaefa78f0d15e72d431c5a6b88b3dfbc40a0a9fe6468c6ef75a9bdd839eb54ed8e79aa022ed13adfa1db2d923d7c04f6ee1481defaee4a68"; + sha512 = "9318d21491ab5ab6f2ef1c437ac12f92bd755a4857d873231920f5d67a36b81b4bc415baa8da92aed1b060aebd31013aa58e8cf845bd7cdc7d0f778526875b80"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/gd/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/gd/firefox-76.0b4.tar.bz2"; locale = "gd"; arch = "linux-x86_64"; - sha512 = "312c48338a80d4ab7fe06fb124fc19ffd70735adaacfea55095d756af473f605593bdf230c544120293e1a34b147cf10fc8df26a61a3446b5d6529497eb5681f"; + sha512 = "7f323988df0077354e5c391138468af9a331fe4430a2e70b039fd599e92b7f0cca770fb1da21c192f96342d6a7430502ddacce7ed026bbdc2b2685c5baab64a9"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/gl/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/gl/firefox-76.0b4.tar.bz2"; locale = "gl"; arch = "linux-x86_64"; - sha512 = "ece63c5b308ad4491bd379ff41808033e4daa472f96d52e5a629670eba33053a49b45bee4ec6d34fbfb4800079d4f62cbc3bb958bf63b7ae5039dc0ee7ea2b92"; + sha512 = "b68fc3c3323ac5683ab9c168e870917a93120a0fa94ee6d427b384031764018c055ddc3ef7b9de6a1803057db2eaeb5581c45d4c52d6c532b380144148270411"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/gn/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/gn/firefox-76.0b4.tar.bz2"; locale = "gn"; arch = "linux-x86_64"; - sha512 = "92d41dd688156750418f04c03b5290fae253129fd850ef87e8dcdab2e663beb130b67902bccd9bd429f3aac1d34ef01e3cfa3bc830a3950f9d8639a23faa8e79"; + sha512 = "f326eff5f21e139e2e7f7f618997e4a9edf9b3fd0dbccd610eea731a5f7fc8e75711007c10b39a277cb1de353870bd0e0cf96b3239034be427422ab575d03e78"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/gu-IN/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/gu-IN/firefox-76.0b4.tar.bz2"; locale = "gu-IN"; arch = "linux-x86_64"; - sha512 = "e846b051288374077143e755d6d1e9d372305a6ed11fc775e9226302249370e597833f56cb31c56f85db54e23f8482e9b14f5f87d2f2958694a879e2d9b02b39"; + sha512 = "49407bb72ff464ea85719b074b07c7495398d6a8900b64a4b5df267c9a51158248d416c8eff83984a3ff801769c069975500dd08b20abc2b6af461a2323bf9a8"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/he/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/he/firefox-76.0b4.tar.bz2"; locale = "he"; arch = "linux-x86_64"; - sha512 = "8937f443a1a1ccd4ce26d230b895b538b8f81f5462895218fd92a3ada3037cf7a84fa3759efb2c5ec136de0f535ea4a2c94749b41fb55c6a71b4a5d8b232620c"; + sha512 = "c5ae0b8b5f05770c7318a3b50ca4808ff4553521c10a1f71f385f25a133213aac84cc73eaa2016b3f9878bd890b4896b9814b9dc3624a26420e1596132682103"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/hi-IN/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/hi-IN/firefox-76.0b4.tar.bz2"; locale = "hi-IN"; arch = "linux-x86_64"; - sha512 = "50a68e2d85708d2241710fdd78d9fc76357aa7a5df267cff989cb8011a20588c2b7d07a0cf29f9b323e4a376fc5241e2851eb3292f63dfc42f0c77ae07109777"; + sha512 = "7471dc2b1f24b6fb34d8af5bfd5043d80a6c1720d0a843d20911dbfec9dcf60f0a8aa9dd8cbb80b460325763dc3cb4334a451d39218e3c3d4190a69eb1122dc3"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/hr/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/hr/firefox-76.0b4.tar.bz2"; locale = "hr"; arch = "linux-x86_64"; - sha512 = "eb3a5c80a564f7d4d4a5bb5dafd21738e374c8305c6461fcd45fa905a990c17ff05ca59764f4a129986929f3c3143e4c8167a97a3294f6868fea9f500f7d679a"; + sha512 = "f8e3d737b9563edcd3423851eedc401529fb67baa4f82b4dd4924e789b60144032c675c461350fc0fd86410accc89c3fb6324a3cc2524cc4fc74ddc24362f602"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/hsb/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/hsb/firefox-76.0b4.tar.bz2"; locale = "hsb"; arch = "linux-x86_64"; - sha512 = "ac88de2b8766f665f6a21dcca48053abbc52c7f5e8b29b61c8c220c0aa7a1d5acb827ce0ad8fb15537200479c563165563e0dc54d1385b13ab0bb7a2fd2abb29"; + sha512 = "8e36e7885f185d43c46abd2fbeb54dbbfc73ce2562874a6ecdf91dcaca9d6516884014e5b0640eed287ac578ab0283b045b6d2d5fb49cb6aa07a2ebafe620da8"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/hu/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/hu/firefox-76.0b4.tar.bz2"; locale = "hu"; arch = "linux-x86_64"; - sha512 = "7adbeebef6577755db12ffa392fdcc47f1e2e73f988071337b509f4972daf34c5ba7b5585e02f2fc1c024c6f5cf7f6ec8a8559e08e185fc2ffdceb8808ac7287"; + sha512 = "fbf5014981544ef8dc0301aa92a9e809d02a2e861b0f1890d227f980fdd8967db28d092ffec3d8e3d3eab70eea955c0d7cf6cff7aedad3ec73fb3c4d34c5d9c5"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/hy-AM/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/hy-AM/firefox-76.0b4.tar.bz2"; locale = "hy-AM"; arch = "linux-x86_64"; - sha512 = "09f3224e70a5cb166ae29e4d1e847646d8d296fa303a64b0dfffbd3aca10e70ccdeb3ba1ac4ddf0e8250ed05b2b8a48723f84a2478da834908e7c7f8a228a921"; + sha512 = "d3e4b26d3f6555041311c226aa3e6dceb18d7867075bcaa22469ff4f1a880ccd2d688eeff20bd2096aec8296327aa43757a2077f2d62eca9453ad5f5946fb54f"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/ia/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/ia/firefox-76.0b4.tar.bz2"; locale = "ia"; arch = "linux-x86_64"; - sha512 = "4bf144e6b24b0fda96505ae468bc69e3d7274397cb3d1d8154db0312fd3e0a1a75326f932739408dce363510e90090be5ea2139d4dc00d3280537224d4807d60"; + sha512 = "34799d3a4b84f46df4ca28c62c57ccb131b43a4a7264b0c6ba1503a153534bb9b2bffed6ab581be3fa86df50cceb4103818b7a5baee8a3dc9af15b8205e85539"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/id/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/id/firefox-76.0b4.tar.bz2"; locale = "id"; arch = "linux-x86_64"; - sha512 = "7720000f5a642129fe14854ddced162160d4f8eaaa752790cdda7728c35f6d1b00302c88027c43d2ba8e4f5b4f12ea5f9317640b650615d4a9fade83678b27f1"; + sha512 = "82758675bbba9d27115f3b9eee456f2559e81cefb8261d94966f2a65d17ca452c684112e5d4a1c4fde2366f797cd9bb3e98e4fca05a4f4929cf3cd0b5dfd1ead"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/is/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/is/firefox-76.0b4.tar.bz2"; locale = "is"; arch = "linux-x86_64"; - sha512 = "fbf8d788585f1cd8c019fe360b9b063f6a7686bc3b1692088966e01c4abf0303c52a82f5b385606381051b6cff3d6449db41b80c02f99aadb32d65642fc48819"; + sha512 = "e9dc6cff8cff9963c6bf9987a459c943d694c4dc672ad817c87cf5b1620bf6f9680d9154e36d34c36e21f76b19312ecc7f8e90992d55541fa00abc623eeddc19"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/it/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/it/firefox-76.0b4.tar.bz2"; locale = "it"; arch = "linux-x86_64"; - sha512 = "0fd05ed4de599148372f164a3a28b5af8aa43e2c164e231ec10a0d74ade3a02f5e1085f7627acd27563ab231426a72d2e7c5f323b7b9b94e72c9271ecbcb5d74"; + sha512 = "0b341c669e25f728928425ce782af1e723631f4db4d76b628a79afcf239e8c6269f900a50c515b6e81a960de4408496b3d4217a544294712e4692146b0c52aa5"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/ja/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/ja/firefox-76.0b4.tar.bz2"; locale = "ja"; arch = "linux-x86_64"; - sha512 = "8eaf09d8f89589078433b03e62c8bc24de30dc40dff5072e59f8cdaf3ac2d1bac8759185cdfe5de1c4db10bb521e80153472ade065be459e20887da37677f0e3"; + sha512 = "86957c5b4a95b9fe948b6db1cc97d4ec0110852e921e3dc2819724afac89b5b7a237892669845a039a860d779cfb4116926eda6030d1627f6dd16821e2c81b5e"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/ka/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/ka/firefox-76.0b4.tar.bz2"; locale = "ka"; arch = "linux-x86_64"; - sha512 = "5bb9b88ce3cf82dc7df0114cd6588f900e31ae5dd2595bfe4b85f4d732d6a1bb9f2bf7e0925ca1c5c9f827fe86642c496bcd5697a26c06f9eb4444907560a1cf"; + sha512 = "bf412ae236b800497b528303cb3f1e34b051c3e3fe235b780700f044bf61e68a7c7f112b72347ab8c27ff3dacd6cf6209a3e0acde3a931b29be53dce2f580ab6"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/kab/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/kab/firefox-76.0b4.tar.bz2"; locale = "kab"; arch = "linux-x86_64"; - sha512 = "a3b86e59bb9bc4771399f07cd11f354a246b83244be8c7ae2e9dd3980eba992f0eae8f1fd7ba27c44b308fb79fa940a96aded4e917198056f008a9d59cf6c0bb"; + sha512 = "4bebea8af04166fc6dcf87c2f2ba96dc752adf9121e01e5edd9dfae25829fede3ea7bc1e5245ab4a4a98af78d4211e8f1600a25b52ce97537c809169f5c7602b"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/kk/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/kk/firefox-76.0b4.tar.bz2"; locale = "kk"; arch = "linux-x86_64"; - sha512 = "747e861143ebf9a2c3fca15077e128ee1a93c2a9d2debfec4424c3f587413e8be01cb1a8697c04651e06ea857ad435f116789139017c1954f92faee8eddc40ae"; + sha512 = "1c04e195889e0b1e936e3cd3d0829c06963270353f4ff4b4e7dbd494436107848c07c8c2753270f2db596d32140e90f28e17188266e97bd600212a6aec708cd9"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/km/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/km/firefox-76.0b4.tar.bz2"; locale = "km"; arch = "linux-x86_64"; - sha512 = "c763db70f2c74e8a51c16c881e766be1f54a3ebd34521305486d4a811fcfd026b7bebecfc36979f4143b040640ae0d2c4802fb2377ebfbdc25d034f39824e32d"; + sha512 = "2b10e6d123c6158c250fbe3b5509c69937576d4b8db6e6c36fe44b25309c099e46bc807d7039608c5610bbcdba84d4e7a37f25371d741690c62308b26a6f3997"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/kn/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/kn/firefox-76.0b4.tar.bz2"; locale = "kn"; arch = "linux-x86_64"; - sha512 = "09a8f41146ca0efd0beb68f1291be5b12d8b0436c82ee58ed88da8c3caf8a0193cbc674390a1bf596c7e70250bbbf8a7c081180ad91cc2da5993c3e0b9b9067e"; + sha512 = "10d9af4c6d6983c521db9fddeca2f8cf3b975e57772ebc7c6ef9af92a0436137ea277405bd1a2fefa1e8fea05cfd933582556d8f7cfc629fb21ae0336b7b7ba1"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/ko/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/ko/firefox-76.0b4.tar.bz2"; locale = "ko"; arch = "linux-x86_64"; - sha512 = "ef7c8a77c375835ea8243612f8543084c21d3437b02701c05c68917bc6efd34cdb00c3559f256508fd43f980d7d5c78376e5af8c59a1552d0ce417fbeecce082"; + sha512 = "00ad6c4a883e7de44eca52f1ff79b5c7fab992fdeac271dd341e18c9d2a9060efa33c5425a8cb81248e11377426888b66373eb35f2d8a5ffd7fb6d942f83b5c7"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/lij/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/lij/firefox-76.0b4.tar.bz2"; locale = "lij"; arch = "linux-x86_64"; - sha512 = "0b144239ec308c0aca679e939cd620adf90c89b2269e6a16bc34315f0e8b0f1ae7e6c698424d5e8f5ea19f0e8f26c4c189d69735fa3b3c69d08f27300fbcbd17"; + sha512 = "46b3475e7f24773799140517e53d14a02d00e2bb2e09543fbbed3797d0b098a93ba226b146864c83a3945815b859ee124b7e2b5cdd484ab6e72157787fc8d232"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/lt/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/lt/firefox-76.0b4.tar.bz2"; locale = "lt"; arch = "linux-x86_64"; - sha512 = "bf285af55d5af190696990c007285663bcfc0d58538bd11a79f9325cc5ca7c578863936314f8d5bcc551aeab414977d12bf1936aa07bff4152122b8b94b5f49b"; + sha512 = "f1088be15822fca949331c2977aed82c3db214a2d0c97bd2494890d427efa5fde0846d2ab552c254ef804f0cfc8623bb6fdf9275d396abe354c73dbd9d138eec"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/lv/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/lv/firefox-76.0b4.tar.bz2"; locale = "lv"; arch = "linux-x86_64"; - sha512 = "50b380115bf11732a481c1b9fd029a7307ed62ce90c18f43b569575c736d362b3ea531937b7e4f2386e27e38edfc5b76cb9b9a2664fe75ae56b0f71eee892c8c"; + sha512 = "3516bb6d83b565bc05afb340d35923e32265202c203f498519c632731fde4a6d1fa1d1189f79e50b315f8f135c383c4d07d5ff44861130146c3167e7d899a416"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/mk/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/mk/firefox-76.0b4.tar.bz2"; locale = "mk"; arch = "linux-x86_64"; - sha512 = "3ef8d24d7fdf80a88884e6b6becd8e9673123d21b897c0087716d185bf5fa1d22076c97bc9b7d1a08b884cbfdf62011cab141d743fdbe554546eb9780f2b17a0"; + sha512 = "7b217348ff5e7618f6907f2d434e55b0a3f7a442771bd4eeb00964563d601b73254274fdfe1280c86ab3fd397ead7ee7cdd0366cf12486dba208ae08225b38b6"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/mr/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/mr/firefox-76.0b4.tar.bz2"; locale = "mr"; arch = "linux-x86_64"; - sha512 = "ad662cbb98826105f48e457df8b426fde80974bc8777b4ee155a6a27af765e21835c01bce2144c352d6e61c869f7a082edd5e828b5b9241ce12c295cb28be100"; + sha512 = "fa059e39ea57570763a96c4732e4ecce3cdd7afb9486669a209f1bebe4b65a4fd22a179f893a05bfb20de97ec8f7c22b6106b5456e752ae7093fb37f36789750"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/ms/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/ms/firefox-76.0b4.tar.bz2"; locale = "ms"; arch = "linux-x86_64"; - sha512 = "ac62b3659a6c412f6e7d29818890cb0058f7660e8a4c41788dad3b6ce7c688fbf93afffb9fb637a2dfcb57a9dfd4143ce5eb2610b11d83add961f420cbcbb2aa"; + sha512 = "0ceabb970350d20d5189dca2c57224f5c0e09ab7aaa90ddaee4289df038ad647f04a3476275582b3168f553998d452e8c5a04e099e34567dc03be1d62681c696"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/my/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/my/firefox-76.0b4.tar.bz2"; locale = "my"; arch = "linux-x86_64"; - sha512 = "33387b6147f584597a18ca8f50ef5278546d057e5015dc69d6b4d90279a01cd7f9befefcb1fd4a6cb8b5807cf6c054d80dfe0d1b7f28eaa6337542d128d8fdc9"; + sha512 = "1540e1335b36c46574b1abb80900ba622d8f2e59b0ac5e91809fef3ec16c1dfacde14be967449a62ba2f2f2bbc65fd3fc750be121da6d2b6fe5de7e30eaa01dd"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/nb-NO/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/nb-NO/firefox-76.0b4.tar.bz2"; locale = "nb-NO"; arch = "linux-x86_64"; - sha512 = "405053e48ddd9a8573e20bd3e7b9f0cd36b3459e35159056d8325892f07b25732fb6c7bab5dbf4ded60a40492402c708c511272c58325adabdefb01d724a3de0"; + sha512 = "02d16488ad3e575a87038143c77287216290e355c1fa274233099b15878ac10ae0ef4d95651145684fd2896c09399099ffcf329922f093803741efc8f028be65"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/ne-NP/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/ne-NP/firefox-76.0b4.tar.bz2"; locale = "ne-NP"; arch = "linux-x86_64"; - sha512 = "a08f962fc8a40404e4cc0ca752230aa006fb59eea753650002aa66ae287abf4778fdb5deb2ff165a4da38b3bcbb7151ef0c9b6b3506d9e6ffb1b8620b1469d41"; + sha512 = "9fd9caa037156164fac2a9c1b4bc556a8d8bacda7fd2fd051cf71f8614e7a5a032b5e60168821c72f2b0c17b261f1ead1fc16218afeb022751ad39437686976d"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/nl/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/nl/firefox-76.0b4.tar.bz2"; locale = "nl"; arch = "linux-x86_64"; - sha512 = "a485f80af7d0b041e8ae629e8992f0f1b5ea298125b3a8dd6dc391b0faa3e5de7dfef627400ab2a938e1e0d73d95b39a0a3c6ba5a416e3842bd35ab12ab0c9e7"; + sha512 = "ebee59e46e8a6982d939c8e20c7586e0c273b9c3febc51eb69ab95e36b47060a4c340d321e935b2812bc7431fabd586b7cd88d2bb4f03a3dae167cb2f9b382e3"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/nn-NO/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/nn-NO/firefox-76.0b4.tar.bz2"; locale = "nn-NO"; arch = "linux-x86_64"; - sha512 = "594f85634e1b10b79144f4594ccd3af46aba3291eddced012a39d7dcec641d37b6c55eaee985aa7529313e188e7fd0457317f3d7724c2f667e867e0b29bee1fd"; + sha512 = "57c77cb4b877ecc1cc0cf37064c0c19aed334db2cb3d16460157941baea6d67c9459e68057f75f9108b227777e724caa7cf15e9eea5a9003544a864ff5a0f5e0"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/oc/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/oc/firefox-76.0b4.tar.bz2"; locale = "oc"; arch = "linux-x86_64"; - sha512 = "364928646f14d0197f85017f93d854d069f65f54fb3b79e59c819cb7bb2c259a220f4c9f1c8a17543ef5a3760ff94e2469921443a6d64bc9b1527fd2a931c271"; + sha512 = "8b184fcee7e71be29ba02e615fbd9b050d8bcd2578639b08ff013a29e3240bd2f2be72ba9647edff2f80e23cf9723f14bcbf3d35b589d4f340f14888cb7daa06"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/pa-IN/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/pa-IN/firefox-76.0b4.tar.bz2"; locale = "pa-IN"; arch = "linux-x86_64"; - sha512 = "5abddf19f937a8022f61de702a877af2a3d8bae417746cadfad9c55419dea53665104b66a17800ee5648bd9630b2e7ee159a1d1720feb5dc82b72b63138103cb"; + sha512 = "6a56a3ba86d28fe28d488ba2c5f3daa1e994b3b5f801e505ce5006cf78d40462d96ba4c9793c68cc23c687dee7aa936c5746a8838d54e80255e9aed9b244dc5a"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/pl/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/pl/firefox-76.0b4.tar.bz2"; locale = "pl"; arch = "linux-x86_64"; - sha512 = "732089cd288b0a589a6708df4cadb9506874eb9c1755d4138d0b05f7a83c977873438f5ccb897b8e337bfd86b8bbc5400a1fcbff2fde309d50c4970d972ba610"; + sha512 = "cecef84e1c88e19e4c5881d07b842b9d6ef77b1293e304df4eddc68a9533061929582df8d2842ca9594072c29e0d564122ceb1ce9670afa7ede0f33cdf32da62"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/pt-BR/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/pt-BR/firefox-76.0b4.tar.bz2"; locale = "pt-BR"; arch = "linux-x86_64"; - sha512 = "5c7de2ff62d03d39754679af7e7a291574ba6dd4444e6326281fd9d01b01505f6dd6f8dac207599a0f6adafb17c4e5c853084d312e3a5dbceaef8e8613ac6248"; + sha512 = "80dbe662dd616c6b1e5e10be423f906463dea4e6a7c894ed14a21ce26ce544c0fe258cb6a7c9227335d18f11284bf082988a746b66243b44cef6b34d10cb0f56"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/pt-PT/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/pt-PT/firefox-76.0b4.tar.bz2"; locale = "pt-PT"; arch = "linux-x86_64"; - sha512 = "9fa37ff418595ab4a058c7b6f4c67b89bed7b3685619d7a27b379e19816245053acd266e91a3d0e1803c93cbe4570ab1c9b095db848e2b69f5f58b1990e06ef8"; + sha512 = "5c30b271b67ff97687e833c083d789ac86a79da984b3ed7ca3f9330f2b4412797edf5dbea0601d6af9cb0775cd571a55451d4fe2f2ec48c1738c08c3c93feaf4"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/rm/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/rm/firefox-76.0b4.tar.bz2"; locale = "rm"; arch = "linux-x86_64"; - sha512 = "c071f91eae6c6824ff9ac4441ba429cc78c165846936b2f7c91cc0f78ceab4f3eda083ffa4cce7f68b4b77dcfc5c00f535f02e911b50a7ebf6066acadadac4d4"; + sha512 = "d7e06efb84135db959d28c59d6b258b658bbe2f0961b1b3e0da796d3dd8ce4f2e726c1d719a8b111c2388285ec88528e6ee2d11fbbd6fe07ea01606984ab25f9"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/ro/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/ro/firefox-76.0b4.tar.bz2"; locale = "ro"; arch = "linux-x86_64"; - sha512 = "dc093fd6eccddbe2e7ba25f22a74a9edcd03f1b080c5effaf1ca11058a66e7d171a6f7f3caed1d52847323f1055751e1ad290eb0192d6b8e9ea719cc27d9a816"; + sha512 = "fe9aee440439e425a99780033da20ebd8a0928b30d862444ffa3d8d8a0cee012af0fb998de4eb20604e260d4d0b0726c20646d3bd3064131f32ee7b748e11562"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/ru/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/ru/firefox-76.0b4.tar.bz2"; locale = "ru"; arch = "linux-x86_64"; - sha512 = "fadcf3ae2c5bc81f524d2be1ff060e1286d697cd4b4a8a8af9a8d7b0d221175de0d93cc1850e2dd678aab6c865266ef6edd0915ca188920b51771be4ef7ffd03"; + sha512 = "dc89313d47f0ca64de20fdd81afe30d797852333040f72243d8ff7f6713333dea6264bbb81cd5082ad3184ae463348816737a327ee2de2f7c446b32fb6bc4e80"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/si/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/si/firefox-76.0b4.tar.bz2"; locale = "si"; arch = "linux-x86_64"; - sha512 = "f080a3aeceb726cd62cf57bcb96a95f32d0cfcfc639bec7b8628c7cdf5fe42d327cac474de4ded04f3f4c27fda8513d5588ca2e9354887104459f30128ba20bf"; + sha512 = "45719657f156ce045666b8f2b3a3809d37eb9175b8f4750ee97ff6a2196236de4af8d3d1b47c2b67bedaf0e053111487a5682ea04230fc566dd2ec28540c29c4"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/sk/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/sk/firefox-76.0b4.tar.bz2"; locale = "sk"; arch = "linux-x86_64"; - sha512 = "d0e40f3aaf8ba495159d314773115861095e07f8ecf8d30a03ca4b05f87586ac4bf96cd20012a5325cd4b76bf1b6bafaee1c925327bc244f3cf0d7e266486cea"; + sha512 = "af8f67818559137004954538f9b977516095abe7c2203ff0fcb3e942bcb14294e3e87db6a3b623b2f711eaa7c30fe98019f4c674fe6e735bee5c1d5341b05eb9"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/sl/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/sl/firefox-76.0b4.tar.bz2"; locale = "sl"; arch = "linux-x86_64"; - sha512 = "3bfa3965c337ca889f1f04930c9b8dce372a34f7c332397b4f074a2ef7ebf6120baa54e94973d8fc6a5eb8041c0bc170681d9bb882edf91b081460bb33314751"; + sha512 = "2bf61fd712342493e47c134cb97cd7b174658551d22319face8e3d9df3c89081fa5326feac3d78604bed23f2a334000ce6e08967f36d4494fc98551bc2113754"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/son/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/son/firefox-76.0b4.tar.bz2"; locale = "son"; arch = "linux-x86_64"; - sha512 = "1e51babc67e116a8f0d324a929fd6ee821d5852519a4870870035f1110a7434c6e0ea900f23cfb489142eaa8e914be0e5235784028e3c539b902ec0f16bb8c43"; + sha512 = "33d57aa16bfa5851ae02887f845ea442ddfb78135f1af37f503503b3ef1057b74e631aea2fa8ba96629e5f13d3fb26df32626a11b78f589f39db5901e4a17623"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/sq/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/sq/firefox-76.0b4.tar.bz2"; locale = "sq"; arch = "linux-x86_64"; - sha512 = "d7f8d94d1a23b580f489e5be24d2e2a45210d82f7da25b36d9c16c91136fc7b9785e141b13e14c3c19d3a5a3434dad600d3699ea206177f01ac1b539bbd59da0"; + sha512 = "813e08a3c6eb60b352ac4b62e7ebcfd9581650b911facfd301f6bf716ca8031283e7fcef9b9a10b2ef4ec52d19cfb2870b24fc0cfbe69fc87bb4457d8b696323"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/sr/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/sr/firefox-76.0b4.tar.bz2"; locale = "sr"; arch = "linux-x86_64"; - sha512 = "8816a768e79c84b2ba3573d00f3154d87fc995019b499f5d9d7e945fe29a18dbb8a2582ec8a3ffee520de2d91f239714b84ad6e5627b54da4644f25ee8d6f439"; + sha512 = "a7c93cdc4e45d826e4ee4dd62f6767192616f8b8efc5200137d8290d5bc6cd54cf391390e2ed831195187a0be14f539f8156548b86f4fbbca3c1951a3c1961eb"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/sv-SE/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/sv-SE/firefox-76.0b4.tar.bz2"; locale = "sv-SE"; arch = "linux-x86_64"; - sha512 = "44f09518b34866de5aba13308d638eddbb79941020a72c42825c2ba619a44c6e239124179ba4b5b88a2c79a875ae0c9d6983b691a6e637c7da017d9ab772da0f"; + sha512 = "ae6ce8e076ccbfa89a653d7458fa395cb43c8bb4926eee153cef0f7b2eae0843d3c54358206d9dcdd2ab8deb4f5416f22641c71c7665ac66f9bd5559a1ce3bce"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/ta/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/ta/firefox-76.0b4.tar.bz2"; locale = "ta"; arch = "linux-x86_64"; - sha512 = "216d999c6f3e7aa9aa0f95622aa62830103a6eeb7f56636a9577be6963090c106ef5e6b825fb0a39b7ab634a2b59351a376127bbe26989139041042a7bf092ba"; + sha512 = "853517617c258d3c441cda468fb3d78a122cd75a369265ce2b290721e08daa1b681c8c84793339883bf701b0e7c5a24744c3382e2bcaa67de92b40162e420b9f"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/te/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/te/firefox-76.0b4.tar.bz2"; locale = "te"; arch = "linux-x86_64"; - sha512 = "fe20b19cbe0eaf688dbb834e57b77d1982007808221a978475f5dfa9ad98c5c488661c2471f3302d56cd04b84808b7c1b3d8d076888026fc7736ebfb9b3bd050"; + sha512 = "e5e511d2c19a5c289d337e5630c1a1d3aeb8edc5c6c5192fa8ee36c041c5ba1a344cefd5331c605335325b34d68609c08ac57816d33590c6f9416f50d0a60a4d"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/th/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/th/firefox-76.0b4.tar.bz2"; locale = "th"; arch = "linux-x86_64"; - sha512 = "25743569ab5c90e88f046d71ed9ef0356b4c49541e42e35405045d5161b4bdb54836325eb71c118b4a8422335633463071cfb5792e5d9ddad2233d3e2f120f6b"; + sha512 = "498f18339722286b024b968e0db485edd8d16cd944a1a84c95698695f4b0afda99faf5aa23e9dd893ffe0cf89fbd69f0ef34d9c7080cb3aea06178a38a1bb2c1"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/tl/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/tl/firefox-76.0b4.tar.bz2"; locale = "tl"; arch = "linux-x86_64"; - sha512 = "61797fea9bd40a323c2fcbd7959cfccd5597bf8ab323f0c2294afdf3cfc1bab1b58df3f4efc365c145b3943f68cef3eed0c455acc51597cb26b5a55302bc5850"; + sha512 = "d04963a4247e8c53d748b9d32d0787beea159f1da8e31164a162de4090fa521d6a7c5a598a4874bf8b2be64733d922748a615d08871c90ba693bf4cd82d1398f"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/tr/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/tr/firefox-76.0b4.tar.bz2"; locale = "tr"; arch = "linux-x86_64"; - sha512 = "21cb703efda21f1206778b6c018e4001ed95d45304740fb059ee618e96aa15f755569614d510890e5afea96685d6c8e564a23d1a83585c1963824c8c00ed97fa"; + sha512 = "302a68064154f22e5bcff55da98dea6fc94abedb839f572db61e9542bda47021c740b51baf57741368a9e616e9a3620dcdba96f55f5010d783da1cf1e9acf37a"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/trs/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/trs/firefox-76.0b4.tar.bz2"; locale = "trs"; arch = "linux-x86_64"; - sha512 = "e7392a0f1e9771140598bfb2a150c7bb24095af79a846cdd21f96eeca0e9f22d38bd780137a4dc62750dacf6521bc8de2de1fa5fb8f757b092b814c31879c842"; + sha512 = "26ad41f597dc9addebdafa5632e0fe930e6b704e65b8b8058773de3954e1877f9b5be4856a53635417d7027364ce4c70025140caf53605c18ddac59447007099"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/uk/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/uk/firefox-76.0b4.tar.bz2"; locale = "uk"; arch = "linux-x86_64"; - sha512 = "f08cb0be78afc2a6573273168dafb86256f2afd5e6d36baec8308baa4e9c04c6defa23c200b50b621495ce214e2a401fd793ec20561dd31f5a1d17cdfb50bd18"; + sha512 = "d5d63e51c3cc11ee58ee0ee2c9190a66d4cf136af6aff31e2db28107e8f3af5d492d92e5e869b3bca570f7ba9f4fb513df6b21d064d75d5d246671dadd050e59"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/ur/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/ur/firefox-76.0b4.tar.bz2"; locale = "ur"; arch = "linux-x86_64"; - sha512 = "6b363fba4ca9250a8e863e58a055d879ec7e817c5fde7c79903ee04af0c7471ba9563327f223109d77491ed78b2504abb3836951f02e9b1a73e365823513f26b"; + sha512 = "e7a3492d0802acc3d3db2410fc57282334d16405ecc6ff3420c29c6eb35ba313f3e46dcb7f0fe830e0869b355138f07ef51b33caeccceada7ac7e95d69cc4304"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/uz/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/uz/firefox-76.0b4.tar.bz2"; locale = "uz"; arch = "linux-x86_64"; - sha512 = "6521a885d0efc8b1c0929ceab087bccffa1236f518b920c0e3f8f450ca2920cf87f8ed72af4547fc4e3e38cea267462344289c52caaa035f59c688fe65073470"; + sha512 = "397adc911b685b261cfb38f50ef9f107db83c3e21c5d0f3435c47b345ea007c9f6cd98f8b0353c804071874e3d5bd715d5942c484f1062ad8341a9a781b1ce93"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/vi/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/vi/firefox-76.0b4.tar.bz2"; locale = "vi"; arch = "linux-x86_64"; - sha512 = "c14ba7d59e46cc3dc3f507b1549eb38125f3f5c60156ea70bfdbb047721b91a7611ad25dddead6bf8d62f0e90324cf0b4fa50ee30a07efd07f48032cade22eba"; + sha512 = "049675506e157ec2d3b7af91a6bce93566c990eae6334620de4fc1c9aeeb9bca01cc16b00c79d0396ec49470759855b690fbbfcd3b4b1c5ee90df70efb9eacd9"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/xh/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/xh/firefox-76.0b4.tar.bz2"; locale = "xh"; arch = "linux-x86_64"; - sha512 = "26d47e833b8a4e376bde4db86a71eda8cfc3901afe89f76676065384f359de46e474fcd156f95d18f239e7420a064e67b9dddbc97139c49c059d0a59e5f8dc81"; + sha512 = "08cae5e6d2b4a826e4e4c6485a793ba2a991c1759498641c63f4ffb8334c68efa6190bc7d33fc8ec83e8cad8299ca81825dfffa7e20cff6179e3fac023a9d3c9"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/zh-CN/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/zh-CN/firefox-76.0b4.tar.bz2"; locale = "zh-CN"; arch = "linux-x86_64"; - sha512 = "a87129e3fed358669a2376abf1717c10b463d83a58fd8ad3069f35b54569beaafe6235610d0f148fe9f2759184699784e72b4afb65f09fee60411dc593bd65ba"; + sha512 = "c989ef3602539795503af56d6ebbd426d4985db0c35be60eb911b1f46ac20b317ea15df3d915fcff361a22cc6ec654c5378c615e5b5271b3f436a2f4713af59c"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-x86_64/zh-TW/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-x86_64/zh-TW/firefox-76.0b4.tar.bz2"; locale = "zh-TW"; arch = "linux-x86_64"; - sha512 = "af28d2d450d7e76390902ea28dddacf356371e96d2a1711ee2842e551f10f5048488015b57ad2744546855c8134967294c3e5a0e939de657fb884f7885e8c039"; + sha512 = "8c3479944dad80dc70ebb285731ee8df051fe63f8d0a5bdfccdce5315ed07e54bd66e4b2d0c7b75b575ff63dd2dd80117166382e389c21a581bd848570805c70"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/ach/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/ach/firefox-76.0b4.tar.bz2"; locale = "ach"; arch = "linux-i686"; - sha512 = "a5e3dd292b9e611bc7218459ffce0521992d43d8884a451e611bb41f59c6d0a0729752af0a711897b653f5cd3efe586d100ea783b5b009f6115fd0d5ccda0dde"; + sha512 = "547a8dc40bea2ed9cd47acd06c1f6a0e12a0d4631adea0193d8f0ef8baa41bf4cac9e53b7954ade543ceb85cd22cf0798b7212b2a91d795782af5f2575b4c729"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/af/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/af/firefox-76.0b4.tar.bz2"; locale = "af"; arch = "linux-i686"; - sha512 = "528c94fb5984344576e5ed7ae6c9e0f42a7eb8b00715ee8cf0add14fbc65c29b85a888ecd34f0b729283b14dbc2771927ae9d7b3f471f4c7a81c11222350c870"; + sha512 = "cb853435e91129651532055c5c5293dbfc758e806a316ade7023ed0f8e646594834ee18d470fec2372f954e1dfad3aa8ebe7f9457cb885ba8758d55e1027e8c0"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/an/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/an/firefox-76.0b4.tar.bz2"; locale = "an"; arch = "linux-i686"; - sha512 = "447754e83d868fe8a531f7c44a037003f9e0ab6a10ed8ef1f0db7107804c75936e792a8a6df69dc4db1c544f9ef9f6edff248878f25ea3a81b72fe509494fdb3"; + sha512 = "6be613e6d99cf74fe7f08c109805b8847fc8a4e6ef3c972baf6bf2ea730f4eb6666eaec2606560f2d14db649d2148b718d4882af9aad894becdf436b08f6112f"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/ar/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/ar/firefox-76.0b4.tar.bz2"; locale = "ar"; arch = "linux-i686"; - sha512 = "91a2016144ddc0184e954ccdebc3535c8cd36dae79869e95cfabc1e9d9a7f49345611d85ef5252db3dbc31c2421061bb87941fddf62ca38e2c8fffff4f410011"; + sha512 = "28d5fb36ecc45d3ce09087ed2aa2da7431334f66a6b183187d36ac9309f9785d32e1d59f0bb14ae281f1a66795f546507269919fb001ebbb72fadeb79c26df69"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/ast/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/ast/firefox-76.0b4.tar.bz2"; locale = "ast"; arch = "linux-i686"; - sha512 = "46783dbb86c1b50bbd9ef03509402805eedb1ac82c017d0e6d6c1692f0888d1ba14a61ff99f3a88e758d96435326a1b0807a47bbc18ad73b0b1ecd36870ce4bd"; + sha512 = "8384154a51d40037a39cd4fb4bb21cd9c7174ec75c9ddd36d79f35bea00380b1ec74eba449b240bf0cd66ffebd014c9a948d60bdcde7efd67e5136d047b75bb0"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/az/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/az/firefox-76.0b4.tar.bz2"; locale = "az"; arch = "linux-i686"; - sha512 = "2ef54123e01952612fbb3596736b5ebb948d986fd6ffd2eaf2285dcd269bc6ba4cc2489d052336b2cb4fab94baebe460a4313011444f21de55f0bb095553345e"; + sha512 = "84d902069d997ea001efe7f836f25d78fe921f40ad1c383f3d510c34f12219c0ed372a1aabb27c5b43465dec2647babfbfcb3e3d4e2916fe4641063df4547f46"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/be/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/be/firefox-76.0b4.tar.bz2"; locale = "be"; arch = "linux-i686"; - sha512 = "93948950bd416f0b48ac3449abf5d15ce0db59568e93625f5aa82af3e5377c01529d08b3a1aee0b7b6ed8bd7ca76d238adb083031f58bafaa7152bd44f6038f4"; + sha512 = "b973756f954d83a87e2bf9b114c5b5631b42819abb1f586c6ab9fe49b2599fb9dd5bffc995453113499db2bee449e2755db61cd4957bdc6f5be7514d62d7eb74"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/bg/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/bg/firefox-76.0b4.tar.bz2"; locale = "bg"; arch = "linux-i686"; - sha512 = "4004520711d7052425c3c9951230961e584b816a9d35f5d97cafc1714d1d38e9743593b6707fea4550f63c770878b67f7ec0e3affdd9e57110bffbbcc492af32"; + sha512 = "a5ae19c797b3c32f20db99777cc8b35d586f9cf2e5714213cf4322df140c6fc87ff2cb03c0de88f9e48395d808196d54a1102b659f9d574f0c9698da5a7ca7a4"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/bn/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/bn/firefox-76.0b4.tar.bz2"; locale = "bn"; arch = "linux-i686"; - sha512 = "62330230a74acd2fc5103a9c34b0b475e22c267d03304e32ee9add9440f829c2d17e8d967b62d7140bc6f9329238c64009a68c1c7dad494c49ec7f56cf97880b"; + sha512 = "63d6f402dd97e0728fe77428b13a3532770e13d7f8099b853d370d0db45aa9c1c753b2523c25a764cf810cde0c50f1db932e26416b9ea38eac56dbe89e7ea697"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/br/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/br/firefox-76.0b4.tar.bz2"; locale = "br"; arch = "linux-i686"; - sha512 = "964698949b7a1e200a743e6d1c59db2a654238b1aa4122e5b3c29d47b4e35f098a362c359a6fcfa938c5189353a7942fe24ca0ffdb59498e50a2b92eb75907e3"; + sha512 = "7fbdeb3a3c1f5adb723dfbeba22390091483155b30fcfb3f80d58b47e181f7b88bb0870c5e2a82b638baa3771ba93f776c47f5e98f66dc40ae9ca58933ba311c"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/bs/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/bs/firefox-76.0b4.tar.bz2"; locale = "bs"; arch = "linux-i686"; - sha512 = "8655234c81fb9099a41335ec71c3e78c790a3bcb40ed6d91f78f18e705e73bfb4eb77661f80c608e2970adac75752c798f163270c1a66c7cf92ad92f76481ac6"; + sha512 = "7fac00f114f2f792bcc4c42febd5b8a5a1a7952a7acf2d596c4ee4125e82e510d956a7de575405c98c0fc776eee4b27ab24291bb4f5db6d5a955be5c0d6c8dd0"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/ca-valencia/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/ca-valencia/firefox-76.0b4.tar.bz2"; locale = "ca-valencia"; arch = "linux-i686"; - sha512 = "a420b87ba65d4e99662788d3f5142cb96747334959bdba455a8a449cb984104cf2d2f2b0d21f216fd2194261b13acba2c7f28de901d95d402fc72b3ef85ee612"; + sha512 = "75b7d3222b5d3efba3d97ebe44b1b28e82cbfc441689776386516a84d42075f1ced4b80856c1a8c87d3cd8101376cf747a4a5eec0f442608fc303862b34a7193"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/ca/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/ca/firefox-76.0b4.tar.bz2"; locale = "ca"; arch = "linux-i686"; - sha512 = "53712c47a152259724ff339d1be1783cb8d0d38267c357c1e1b56396082c04f0204127301a865ad19b0072d02a7af42b904f1ac68e166875b59d50358a681fec"; + sha512 = "23e050317e92745044a0a5af3b9455a8f112884fbdf9e9d701ae5e8c614cc3d97a4de06ab10e2ffe22344c38108e575eb8d8ae6a1f3095ac1ba15bc6a37b104f"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/cak/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/cak/firefox-76.0b4.tar.bz2"; locale = "cak"; arch = "linux-i686"; - sha512 = "cfb06d98597d582132c0bafbc39384217da03024cacc80d92d29e489469180793d796edb2f78ecd717d2f25409757cf68eed46fd9d6f7b87cad01161dfe75d68"; + sha512 = "58179bf33afda4d10fd6dbb9143f6724ca8ae5bb6122b292eb48773c84458cbcb85120c2ea87c6a3f4f4878004fdb997354b571223a35ef9cdee23902292296f"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/cs/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/cs/firefox-76.0b4.tar.bz2"; locale = "cs"; arch = "linux-i686"; - sha512 = "85bc90f95d2cd57a1f5a1c779317df3e651ef1930ec0c003aee89b353577792890db7a7ee853c4d93db802c28fa355ff4a35a56381fdd7b7742c554dddafcb21"; + sha512 = "41557936332f5c966a1b51d8791699783a162eac46b14e22fd0f79abe6175a31fe0f6252270b51c816c88ec15f2982df17babec0101a0eecd6cb25a8ae900dbb"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/cy/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/cy/firefox-76.0b4.tar.bz2"; locale = "cy"; arch = "linux-i686"; - sha512 = "53e920d8d4418296b01d21b5e3c9c7788db7d9554e5c2b3c38b11a47a3ee2cf083a80d3e3a28fdb4bea262b3056cba4ae2dbd3a388252df7dc8a1fa35dd2173d"; + sha512 = "1603e2dd3cfd417b12c0a6c933708835505cc8f5e0e827fb5072af0f440a0dd0dab5d961d58fd712776d58e803d1ff3dab179c7ab45a30e08be6c895fa1c1c06"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/da/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/da/firefox-76.0b4.tar.bz2"; locale = "da"; arch = "linux-i686"; - sha512 = "69f93fed3e51fef8fc47f581a9a4f1a7dd9bce949bf582dc27bd0f04356cc337d1f0c7156d1668a2d5c09a6afe53628503fea39a2ba79e564f4c2c4b13d49826"; + sha512 = "4ba2198d4224c3b2b609c8471a1b8d6bd47d51cb42caf81e7f1a4e7ee0220ba459b4d2a4d6270d5ad25806d8ab0b9012cfbd9e3b242b4f4be54f0c5f7885ff67"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/de/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/de/firefox-76.0b4.tar.bz2"; locale = "de"; arch = "linux-i686"; - sha512 = "72506755ca28f1f59aee4f39fc51eaf952b607eba97b6a1b80a6dc79db545aa5e8d5df94792ec0c3b93fd70bbce0bfcc25ca7b9b611690782a265a1581c15393"; + sha512 = "1a3e1997151a4a74a6e2a35037564c2189f4d0c90359084aa387212177ac3df08e8114b514bccbeb9b7b63dee5eb8028614c08d680cae0529784cb471864b380"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/dsb/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/dsb/firefox-76.0b4.tar.bz2"; locale = "dsb"; arch = "linux-i686"; - sha512 = "17ae8a6c85ead04cac4fcb8c29a4842fe714cd2b3d143a3333595794ce51d8bdabe4a12038041d9da89932766a4b5508249a1d8ae0fc8efecfcea87672392d9e"; + sha512 = "6e40f39108d5f00faf81793852de22623574fb3f201080a2f9d8e3c31de80373eccda582cc0d63adf6e86c67748ece5b5405e880e6db8636428c3139aafe156b"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/el/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/el/firefox-76.0b4.tar.bz2"; locale = "el"; arch = "linux-i686"; - sha512 = "f7b80595318b84be3c3d5e9e30f09527c1ea135a817f3570c9d430c7f7334195f362d421cd0d8970e2fb32d6c967147ed44b0ab373c1dcdd79e6fcdb86be2a35"; + sha512 = "f08984d8fbe3b5c585e7e361c1f21b7d6374ee3e58a12aee599444788f89bb570d277fb178a76e773917ae4445904e3d3cdae99096d8e1b8a188720a161d436b"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/en-CA/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/en-CA/firefox-76.0b4.tar.bz2"; locale = "en-CA"; arch = "linux-i686"; - sha512 = "cb301703072041e12b10e5f24414dd16cfae57492f11f0d0bc6b68323f905bd075165dec03f7f59a5b75b9fa1cd0972b8106027130525ed917d3ed9d58a3730a"; + sha512 = "6fecccf3fef10d99fcdbec8674ebca50b4d2a5708bf423778266a440fcd5f7fd4ea0255808d86567fa26542c229bd4ba06448e40ee0faa3a5dcb2b36d694f1ee"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/en-GB/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/en-GB/firefox-76.0b4.tar.bz2"; locale = "en-GB"; arch = "linux-i686"; - sha512 = "3d63756f7d6f9efcc7706f9d250385cd8b4e78edd60ad7e065c7ef513530ebcac143e21fc377eff1e434af536a1ce73235dfa7d5020aac2966986d9b8fcedd06"; + sha512 = "d9336c9eeb6678923c53a21873760ecea096262bf4b3cab6afe69c1cf30d57fa95c8cd496508a80bf1538dff3cfd4e68ca864ba8bc9d58906b4155011c5adc38"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/en-US/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/en-US/firefox-76.0b4.tar.bz2"; locale = "en-US"; arch = "linux-i686"; - sha512 = "7c7058529f1c7254b866c8c63e6b90b03ffd9212aeccfc1a6592e98fb730928b11c9b26c0a69615e87eece1db1054c10a3b9709f382c8d513c9d482b973b0b85"; + sha512 = "fb405ed1f6c6429c98a7be7046e8a4e39b594febf7ef11fa163c863c3daacc887142cc77d7da30f709ffc6384c2092896f8ad4dc69665701b0c83013374f8a8c"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/eo/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/eo/firefox-76.0b4.tar.bz2"; locale = "eo"; arch = "linux-i686"; - sha512 = "ee2beef6197f8f59603291e139beef9c33a8e3414bafa63faabc644fa05995e4f6e1670e58c1a8ecf6e2cf2026732f831dcdbe399640f1f6faaf180e260b979c"; + sha512 = "804001240e8a6809312634de4afc2b8a055051e9c8d399dd25cb96f9bfeefdf6b9526c8cbee670616a63420ff848873b6d8d1cedd8496fee38752408bdae21e8"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/es-AR/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/es-AR/firefox-76.0b4.tar.bz2"; locale = "es-AR"; arch = "linux-i686"; - sha512 = "4366394614cc037d6fe2485baf5cd0147952a8ffe9b2e1a28b8db65b3f0a9fead0823baced3211eece5bc3eb60fccd647195dfd184fca9a048730bc1cf0d9a51"; + sha512 = "b98d387cc62b3c87acde8336843c2111f67f2ec425ad78ad1033a150efc253561d9f12a42a61c8b2db5a926e9ec18dd466ab81df93fd12cf8342de2f2baca21c"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/es-CL/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/es-CL/firefox-76.0b4.tar.bz2"; locale = "es-CL"; arch = "linux-i686"; - sha512 = "ff0966573ec2ac21e886c57ec234bd1ee2f8d5c3e381eaeeeff3f0c11653c1fb4fef5f4fb68c24107a8f00b7f269848142ede7dea9ea095764f77dfaf1fd4521"; + sha512 = "cb5b8275ef7d62647b623506ac73b87e4552ab7d946838a4bfb7e690c8976d4acf7862a7bcd6642994d0c42c510e6aee5f3177a6a7d3c566678d5f0897b53368"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/es-ES/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/es-ES/firefox-76.0b4.tar.bz2"; locale = "es-ES"; arch = "linux-i686"; - sha512 = "4fd607ae1da3920707135a7d68cf1f4fddc43eb92521cbfb178feba39b0d7d4b2dde85723e655cc32c247a012c35e9a9479390683550e39fa2e00be0b01c3ebb"; + sha512 = "8c0bd3e0901696be921b440b03c919bd77cbd15f22e3022e0ac077db4b8bd9df34ca8f321f8bc27d459b71f89e19ca5549b140a7cba27014f4b6fd68cff5d214"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/es-MX/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/es-MX/firefox-76.0b4.tar.bz2"; locale = "es-MX"; arch = "linux-i686"; - sha512 = "54803af40f8bcd74bcbe667f07b6d818a76e2dd6980e32c43651df9c6e30e45edd45664b442e69e035ebd610bb7ad9a2a6f0247faa4918b2b3d8bc9f72665ef4"; + sha512 = "a580888df34b1062e6dcfd55112a61de1f6c031eb9dedfa4e8150f3b02f907b222e8f8ec570ffe1f21cba29a561f2ffe51701a509249ea3ccd6f2b01b6c00563"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/et/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/et/firefox-76.0b4.tar.bz2"; locale = "et"; arch = "linux-i686"; - sha512 = "43034830cd0ca754c6047052e4df6105a77a6040fc5d5f592a7ca3ea94ad30e0c98952fdb8f30c15adbd8e6d0aef9fd374e5b32fbd5053a3cf6f1a6f267a73a7"; + sha512 = "03ce56316a24ff43f9070205eb154254f139d1791c46dc7d37879208ac59234494cf0e584f43e2c483d1a1516de5c3d8b8d0debe551f377df2ef9d7ef382e6c0"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/eu/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/eu/firefox-76.0b4.tar.bz2"; locale = "eu"; arch = "linux-i686"; - sha512 = "06ace3e3d34500a0871165dbf795704c9058f180ab23e9a94e458e9615475567df1970ac5f7c8a91279a38811d99ad5ad813dead9632b1abc8fadf75f1466040"; + sha512 = "eeca8dafce55e70b17ae42e8f3c807207ebfc2eabec44934f0f2984214426230fc498f3a683d2e4841787352ba8e52e37f5c70a0e5e78217e9a5516371a35a9d"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/fa/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/fa/firefox-76.0b4.tar.bz2"; locale = "fa"; arch = "linux-i686"; - sha512 = "b70c5e0bdc41e14bb93e9b0eca3089402a7b2de2c105dc544991b0811398748a84c119da435b92a300876396ea47f36d1e4032fbf4e7c341357484362468f03f"; + sha512 = "d16ae96bf3c7f4f31861814194f348737f4b02746de6acf0eb377eba8c3d66e36cc53b0cd1a0606d88d9604989bfa984d1897b504c38b06ee562a326224216aa"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/ff/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/ff/firefox-76.0b4.tar.bz2"; locale = "ff"; arch = "linux-i686"; - sha512 = "ac9f9a2a4ae117e20659ab73949b8b7e8c6e9ec780e9b7abff38e242243919e262acd9b3945e0e4e9aba55256aa6304b2647204586d0400684c24f7633e18eba"; + sha512 = "9aca0543d152c6886d706e759b174a490a52ff897d0a4a455b40c7eb9f9e6cad72c720fce6f63991e995e3b50f4517a5c3640aca81f12ad6e0d4e55c84d78773"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/fi/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/fi/firefox-76.0b4.tar.bz2"; locale = "fi"; arch = "linux-i686"; - sha512 = "04dce53d546f03499b8691c6b621c0ed3cfc61e0177d506ab5eab7cf492e6fe11a50390da87f929f37014d235955b6c0747993824c3f8ffa6d04575ef407d69c"; + sha512 = "40cf4a38094db6df21bd188e7ddd008488af74d502d2a151e0761c37ec8c31040863f152419902b38ce28b3e70033795b7499374e38ec354f690489a18e45316"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/fr/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/fr/firefox-76.0b4.tar.bz2"; locale = "fr"; arch = "linux-i686"; - sha512 = "43e55696a7634ca8f4422c47253b2cc231c6a7b142c2e3f13ecbcba053837fc4cfca1ca3c8270991e68fab2ef40fbe9dd21b54e278591e66578858ed15a7ef4c"; + sha512 = "b0bdfc5be5c95338b235eea81d9de384268d05af2d501735fe4de3a8b525b6a08f98a40dfbbe60a6adbfcd92e806072a5baec8f2692a0823e686c124bc308b61"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/fy-NL/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/fy-NL/firefox-76.0b4.tar.bz2"; locale = "fy-NL"; arch = "linux-i686"; - sha512 = "11b045a86b15552449ff2c75eea1bf4ab51cb5087934d03d9e994de041ef442bcc15c2f6858b8e895520f2c231f03c33f9d5ae51e306b90c25ee7bde3c410d21"; + sha512 = "0952e195b01c4a42db08b1ea6afdc4eaa4806f3fa98a35a7f7e55789de6902a255a2a5ea6bacb47c5e3b9439b83548ee81b85fe5c6520629ae8cf2e9b803eead"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/ga-IE/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/ga-IE/firefox-76.0b4.tar.bz2"; locale = "ga-IE"; arch = "linux-i686"; - sha512 = "bbe8f473f775419f6ff6ee6e156b315eddd743ab7d8561d1b2f17b6d2185fd00d9507ff51de4001b66a7a80d07e7204cd7861daf4754c089c5a295a4f272b9e1"; + sha512 = "02d735bc251be237efc86ff7642af066819b59c0c890b9a8c8525306537d52a603301fb81e4f2628a9f8d2af062425022b01db35b19fcc705b8de6d888c2bb6f"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/gd/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/gd/firefox-76.0b4.tar.bz2"; locale = "gd"; arch = "linux-i686"; - sha512 = "5f996f1d58ae60a65142d4ea2c6a73698f8042c83cbd8d2073b0c9834b92c12d808c13ca91d792b9c8a3831bd5657171d103fd1d3a958903164a563e5c233639"; + sha512 = "404d9aaa382f9d641486dc1339b55f113c6c67f5b7523fb7b2c07c8114b4732e6e4882538d5dc2c57ec871b41bcd2e7248326db84baf4970a0ca451b785c711d"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/gl/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/gl/firefox-76.0b4.tar.bz2"; locale = "gl"; arch = "linux-i686"; - sha512 = "bb4f26c429437227b0d0d834d9bfdd0511f922606aa48f4cef2e6e98ff7cafc473c3f24add0bf223831b7710d92a109996317c001df5047dfad9e9c3cd7a31fb"; + sha512 = "fca768b0d97af4c14d71ee0963da7861bebf77d6c67378091842b184360f2ed7a54cb5e9d80918ba21fc34a77f36e2e1402c773b5e551f20b9ab9cd92e4f91b1"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/gn/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/gn/firefox-76.0b4.tar.bz2"; locale = "gn"; arch = "linux-i686"; - sha512 = "c065b74fd89313a8b54f19c551fee9e31dab35159fb0796b0a441aa7cd4f0daec8cfb8e1b2498accf18c99973d5377a986832fba8d907cd32b24a31ec86d3ca4"; + sha512 = "e8925de0b33c779c0f26974a1f7f4f1586b7ff7ed969eab7e2721307aec67ac447dd85ac9c838d5cb9c799fd3f85e0f4e7236fc94111cad341aeb2b8a616c45d"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/gu-IN/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/gu-IN/firefox-76.0b4.tar.bz2"; locale = "gu-IN"; arch = "linux-i686"; - sha512 = "aefacfc8db154d592121d8b9f7743653002705a00c1280f443b58e433defd40b6b296ccd82adbb402ef907bb97abd4f9bda043dd0a48400410332eaa44dec650"; + sha512 = "11e8e2d7c434861e4119e5e2a6db9e1dbebcbfb318a9f707f3a09418889c4998faf280a63aa54f1a4d7f970ac657950e558004a019148e77ef539fea38072f54"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/he/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/he/firefox-76.0b4.tar.bz2"; locale = "he"; arch = "linux-i686"; - sha512 = "94419be7fc1c5ba72a30fcbc9ce83962efd294f9a33caa2067077cb6a3aa493c2ef4ced1b14e1fe9e6e3510dbeffa131b3d7d1de8c27703856601a855f68a6a2"; + sha512 = "a72b2da8c97f0517c8a1410114adbaaf8d3cb6ad76ad96cea967f6e73e934280e9af3a25b5c4457ba929b91db9f07b6ab740dcd19b0b4eb8093ce943a889e354"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/hi-IN/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/hi-IN/firefox-76.0b4.tar.bz2"; locale = "hi-IN"; arch = "linux-i686"; - sha512 = "e11bbe3e9d1bb50f6462357444c1d0bd074e732f81217dbacc1936c7546f8f3913749c7ab2f2288e229a8bee4e5a43e5e86f0eebf8adf69b0cdedf31817109b8"; + sha512 = "07f298aa7f1ea9a484dfd918b61c2373b7114e0440759c91ff77d2f1f9712294a55bcd941f689431496fca05aed17d4e8a167e7e9b2afda6da2d5896e49c7818"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/hr/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/hr/firefox-76.0b4.tar.bz2"; locale = "hr"; arch = "linux-i686"; - sha512 = "040b33546e3309cb562b4fee834529b6acbff828b4239017d0221b33ca4078841e4bb5283bce79cd5545f8b83d72ef9a26fe4c1bb8e1ce3592e9801ad7665a09"; + sha512 = "02f1a630873af11a48fb4a2e56653a4e13b363dcbe49979b56f7049f14f6154b26cda2ac2311940a88be97e055e3e19b54db02044b8829ab833fdf76c2e6156e"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/hsb/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/hsb/firefox-76.0b4.tar.bz2"; locale = "hsb"; arch = "linux-i686"; - sha512 = "6cadef677c236dbf7140181644bf97bcf850ffd67e282ea69005400996f1ecc838971347c6e9bec6d4d1074e73e62af5ab91df146e7846892ab86bd802f47342"; + sha512 = "0983f9e86b860b3070092d2a6f6478ea5d3e73ae46d3c0b2da20c03290d24fdc7dbdf14f0df78ec0d187c37410319c0c7e4ff1a1e8152646780fff0015e33ae9"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/hu/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/hu/firefox-76.0b4.tar.bz2"; locale = "hu"; arch = "linux-i686"; - sha512 = "8a5cde0f6e8f42833bcc81a063225bb44366386c96428afce58425197eab833e3e2463e5ebdc7661675aab6566559004b9812f12f666ea1c329e049d106f7f6f"; + sha512 = "ec77cede3cd23c70f0a8ac5e3ea46c3cf8771df271e91df5e2d0e35edd1c08e0e3151282e9a14c82df18cb907393428f38f58619dd198bbf57ff8f062222317a"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/hy-AM/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/hy-AM/firefox-76.0b4.tar.bz2"; locale = "hy-AM"; arch = "linux-i686"; - sha512 = "61f01c79780003d7c0d8edcced7a698b37bf4cac7663b692bf7c4459dae4ccea9a11ca49d8fe5c03584eedffde10c4ad3826dfe3d96531922c38127e173f49fa"; + sha512 = "590562000f4aa0a8a6a4ebcb95ac01f38f8bd1f42e3dbadeeb8f03c4f6fcf62d5dd81fd8841ebbd8716a702526276bad17a6e767d4b6c483102ce0c9ba686ca0"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/ia/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/ia/firefox-76.0b4.tar.bz2"; locale = "ia"; arch = "linux-i686"; - sha512 = "3c9d5a69a330e43efa981e79e9aa36dac937d434101c7088aee070e42e21f601b5f1e04d639c8e30c3db6b39f07f1dc00c261b5ec1f5794232a095e9ebd1549b"; + sha512 = "098497d2dbb70a702b0c804a22734b2dfaecec0cdc325ed8f63f2a4d03b295442363c6d9214d21a3b96d63221123b43a3ad27f1335b38eb4198e7cc1c5eff5ff"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/id/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/id/firefox-76.0b4.tar.bz2"; locale = "id"; arch = "linux-i686"; - sha512 = "4a40764f77e43ae21a242647ba70ee42fc86f6813c2cf77b28f446d13a73d2f64e9694bcacf28c17826a513b19f567f58ff1c52aa3c6be8f416f0a448c06b434"; + sha512 = "38ecd79e96d54887ab8358d848cabfcc638d2f6e66e73349f92f3ef2f4f7f5ed3f6be00e84b4062cf7cca082ebd851fccdb7c398f10c7a56b2f2587d5da7a9c7"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/is/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/is/firefox-76.0b4.tar.bz2"; locale = "is"; arch = "linux-i686"; - sha512 = "0aba047ace0a41355637443a29a4a4be23b60bb6f327cbfe24377f9338b8ec65465e530da77b8815ea5f4268c69aa0e80e1a726090f440fc775dab3acd7e62fd"; + sha512 = "18def001b8dbf3e70f424990cb78b54e9700dbe4ac6285acc402c1c28e4ad2c5e4fdd74d703bffa296381d89798bbbc12b9cb929cc26137dfebee683bf4a692e"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/it/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/it/firefox-76.0b4.tar.bz2"; locale = "it"; arch = "linux-i686"; - sha512 = "6bcb740801a18d09a720f9c9e451005afaeddcad3df58c4e81d112805ff60f620412939a824484267af41f2b0cafdc55c2c72114662d3e3f8c38e82463e188f9"; + sha512 = "06084de26c5266892d6da49ee126aa53a96b515ff66669d369334d02cf8c25b553bd3d00899f655f8ac09aa9c1891c247021241bf7ce8600f5e9d4d1bf9304de"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/ja/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/ja/firefox-76.0b4.tar.bz2"; locale = "ja"; arch = "linux-i686"; - sha512 = "7b03ab90989de93cd765e56211d402d180a937513e114efe3afc35e4b654d14a3cb7cbec1a32b8ab864feba693d9a76e696e93746b27f66c8913853dc1367d5b"; + sha512 = "5e2742f4030a941ea741bff0d363ce39c115a83988149ef682c30554ddabd3b94a7d72d9bbb4172ad1faae893fce35efa30b01b9cabf1eefa89c69199ddee7ac"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/ka/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/ka/firefox-76.0b4.tar.bz2"; locale = "ka"; arch = "linux-i686"; - sha512 = "14e720c676b10587f4947b135e45c37e496bfbd6366385c57ba010c90b424b7413348dfd9d65323dcffb7a186f2e8cdd72236e23b2ecfddffca0b923b462058a"; + sha512 = "f8f2d3b22d4fddbf25348eef1527c7e9bf0733572093c1fed1831feaa2c53b2559380bac3198fd79a51fddf5ebdcbaccf09e27c4d69317081aef52f37abacb7e"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/kab/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/kab/firefox-76.0b4.tar.bz2"; locale = "kab"; arch = "linux-i686"; - sha512 = "c4e7a7f07b2b9cd4ebbb51e3a45be2b3fbf952f8da0d756c9cd0cf63bade2815385b54bb0bcf9ec575397ade8d0b820ab2b565d4a60b8676824c0003ca3c5612"; + sha512 = "1600fa39c920554bb733009cfd6de7c0cd2ccfe53e91e8f3c770fcce29843dd89c488d733fb0beb81c868d26a74fa7b770fd64ec92459ff9f6a8ff9d98d42d02"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/kk/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/kk/firefox-76.0b4.tar.bz2"; locale = "kk"; arch = "linux-i686"; - sha512 = "cdb162428e73b2a3cf01c7bd8f97bbf90a097ea6ec3f83b1f648179d1cba85f4ccef167745e48e1327859857bd1389525f901b85934cf10a9005a14e0471cb6c"; + sha512 = "a2701ef2fa5f2127808c17a4136e4ec291225f613318ec04c0ad812d75356fe90b0ce94c0de5fedb17e16462f46c480e89e1a0ce92ad113430dff04756675b59"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/km/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/km/firefox-76.0b4.tar.bz2"; locale = "km"; arch = "linux-i686"; - sha512 = "c580b37169a3eb76c8fc692733b51ef0b78bacfd5351dd03ddb33ec055ca52b58edbc278d48e6984ed5b253c4572c7f802a3edfa362282a70f6dc28bef7380f2"; + sha512 = "373caab422978dfa5629f4f6152a72e6e8f16f5add1f341528b98a617672c9dec3db41bc3021c561808b2c65124bebc0b2dd39163f3961e46204f9bd1aafe04a"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/kn/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/kn/firefox-76.0b4.tar.bz2"; locale = "kn"; arch = "linux-i686"; - sha512 = "79800119334a7c86d7c9698b9cdef025c733eb0afdd12767eb3d6d6a8537709ed553200445a9c2c40b41dcc349ebca408ab2b1e0a412d1aa92f0fa9db6249da7"; + sha512 = "203b7f9ea3ef8520cd9e614451275bad69b477deba0a26956b633545ba203a9a2ca88743c619aa311ea3f4f3acabfe96c2ea9463e2cd5b988951738073766c60"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/ko/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/ko/firefox-76.0b4.tar.bz2"; locale = "ko"; arch = "linux-i686"; - sha512 = "5118069f0a73bdb0055954658e33ff82a8e017c9ecb414126c1c3604f6e9867f2932b0b45a5ea2e0ad08ee12adbd60c6319f711ccb54e8eda226c92999b0ff0d"; + sha512 = "0dbe6bdee022274aca34cf8f480b7733f62bb38486c3c449805f636f9bb7439435e9e9af0442b4c4fa6c266cb97ab678eb46ac3a1b42376cc025ce5131c32c54"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/lij/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/lij/firefox-76.0b4.tar.bz2"; locale = "lij"; arch = "linux-i686"; - sha512 = "d040d130da5e90d83f3b08b6977fea5ae4f4dc16e4a93db9402a8b61e68088a13ad83acbde39215175167dd157ceccd3a1324f89d938b9ff6646dec2582f01a4"; + sha512 = "e98b22e33ce330a8f3da068d13086a48740e4c8de43f0fc0851cfad3cf519e5fb29eae3c30fc93e9c8d341842079655a921dad762c1014d408763de695300876"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/lt/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/lt/firefox-76.0b4.tar.bz2"; locale = "lt"; arch = "linux-i686"; - sha512 = "1bc305d8e73184a1dc5968a9e8f05a804a79e0d447d09fb5d20991897f9b6cc913c29b2eac5032f62279184e81a55577f75a54b3d54340f31b0f66b681655ccc"; + sha512 = "b9205df8b26104adb8f7c699317d972ba8f1e7de95580e916cd7ff9c019745ee5b60bb6650aadee54c48da773c65679b9427a3d8b3efaeb70a345e71ff8de837"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/lv/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/lv/firefox-76.0b4.tar.bz2"; locale = "lv"; arch = "linux-i686"; - sha512 = "33a9e821ba8c8756ac07b6df0b786354caedb627b031fe7ba6716518369fdbe8877f0165d60c71087fe20874c8a0e4cbbcfd5f8a60ec90760df451b59722bc5c"; + sha512 = "52df48db54bf4c2029366836708324940890d6387cf0ad21b918c420e9388b8f6cd29ed88e4eb230d162df0702fa5c6ad3d674a56d6d4c0b8e273f1776b2f6c8"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/mk/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/mk/firefox-76.0b4.tar.bz2"; locale = "mk"; arch = "linux-i686"; - sha512 = "dd99b0f7dbee332b3012f524ea3de6cdfba6fa8c906855bd09145cf5d271af189f27e4fb84bb5acddf92f6930c9f885b772d97b94f90a99da7be01a581ca9e25"; + sha512 = "610086ca01b542ac23e6b162aad833931354729df4b90949f2db3a22ee6fe6193cb3bce1472a859bdf5d0e718c4c72d06b0427df2001a984cfa2ac6d275c3e51"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/mr/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/mr/firefox-76.0b4.tar.bz2"; locale = "mr"; arch = "linux-i686"; - sha512 = "ee1dbc95b187ef9bd7d2f727e66b9b36d8ab67bb0f3e5dc2f987b903e08de7c4173d97cf7684b28d67250fca27acdbc9b843b084e0c2f29ddd77814efcd3452b"; + sha512 = "725e696800f68a6ef7c9af9542d830a38872b4ca0aa864d1d415ee05f1d287d88d7dc19346f472fcab8f64094ff592575787dfbe2c62e14c97d69e82b8205bfd"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/ms/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/ms/firefox-76.0b4.tar.bz2"; locale = "ms"; arch = "linux-i686"; - sha512 = "a2dcfdede6ebebeb5c994e4d609cc0a48f1100087ead6d0a219c65d204796a9898c8dc2c4df09479448aeafdae2099787c3d838c41baee12c9285a4e96b6ff19"; + sha512 = "d6cee082a677b0f97f9f2792a4bbdb1b50d96b09693ce72b9de855eed006b6da6e89f9c6e671aef06ee9b7c166d1136ca86b9c977ba4eaf57790537917b0f0dd"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/my/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/my/firefox-76.0b4.tar.bz2"; locale = "my"; arch = "linux-i686"; - sha512 = "f8bdc2bb60f34d434b529f3231301f97dee662fe1e3ad856467568d4195cd879e34a08c1a687911a66cecb208993cb59f827ca8351ab6deb66e2bfeec905a765"; + sha512 = "af5c543a13b1deb82fbe7596349a883c61bfff3fbbf029a117e8194e27d16d587b721c317d96f6c76eeb54a9a4483fbbb416a5f46290de64d7048245c0d000c0"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/nb-NO/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/nb-NO/firefox-76.0b4.tar.bz2"; locale = "nb-NO"; arch = "linux-i686"; - sha512 = "f1694d443574316768dd5af6a3d1aa25ee2e20d78d125b95f15ca72fb5dcf696737c9ec6ed3809aea0252edd082a26453c6a7c98423c9fac91ebacccfcbc2c97"; + sha512 = "e4e6e9d1bf9eb930fee48b2ffb29da791fec545a835e034799bd88423c7cb207d3a24d68e8da2bfd18a20529b1d03d818fd0d4331ab91099d7c01ccce44a289c"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/ne-NP/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/ne-NP/firefox-76.0b4.tar.bz2"; locale = "ne-NP"; arch = "linux-i686"; - sha512 = "eefc58ecefa9d48e6fe61ac16dddecb51549cf9f3ced1efb36843e48eae85d899dd3abc704d33147e6700492d6a4fb3cdf39d3730cece739bd3a795bca53f54c"; + sha512 = "ea5b7bcb45fb54509f2d11d261c1c1672e1a2664e310f291c7022bd11e69e0686c2a1da9f8b42d7c6c152b3e1213fee221ce44576d7c370bb09cb128c62a04e9"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/nl/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/nl/firefox-76.0b4.tar.bz2"; locale = "nl"; arch = "linux-i686"; - sha512 = "cfc4a918fb314e7838c69dbeb8fc5c9a4fdaa08e890bb79e886510ccf7cae672be608e3b47bfde9001afc05194d97939868e7e0d7a2f16821a4e458b62c57948"; + sha512 = "bb0c66623c439b0a274d98498dfbb9aa9ee620bd02fa0f4f41556a020975522799800f23872cbcdf47fbd8592afffd578d10da87d0469ec43c4f28564f8d93ed"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/nn-NO/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/nn-NO/firefox-76.0b4.tar.bz2"; locale = "nn-NO"; arch = "linux-i686"; - sha512 = "06fdc085b0dbbee22ff89a3f155796a98e9e5e8721d25c5abfaf123f7d315b86b4e00747990bbca949861398eb58a0c4c147b7e2452ed602efc39c4788bcf082"; + sha512 = "e58160d3ca153065e82216d3773c15947d66ed7cc9c646d1990c66fdad869a8717cfb1cef9a2239996b625894cf4214712c36b54852eb955848da270a269982e"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/oc/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/oc/firefox-76.0b4.tar.bz2"; locale = "oc"; arch = "linux-i686"; - sha512 = "b6534944fe1efe4f844935fde48b4397dabe181a6facd65110dc5512abcdfc83fd389e387dbd619d63857b456542553b74963d1e970c5136d51c6203f49c942e"; + sha512 = "d2174ee3a3288bc424d41f0e51626a217dff28f1f8b8f153e9ff5d51f867f2bfbd9c81bfb6ab004053f5bffffa390264c72a9af522ed13523e04e74f03d7c6c5"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/pa-IN/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/pa-IN/firefox-76.0b4.tar.bz2"; locale = "pa-IN"; arch = "linux-i686"; - sha512 = "f351f9dc860a096b260e23e8fbeefd7529608a6ebaa05510cb4b6f5b78872b6cf7920a0df3fc5d6c02c02e982d3967d626def031932892df1e3e1176297b9152"; + sha512 = "ef26bdbf4c4e602dbfd84c64ac4c91960d648123ceda5039aee40e40c9df360d690d0490c18362f3d29b355578eb56b05fd5e2c8cb10304ca368db6b2133b414"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/pl/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/pl/firefox-76.0b4.tar.bz2"; locale = "pl"; arch = "linux-i686"; - sha512 = "eb1a8cf7549f377cfcde8cda89c8353d41ed729ceb591ae79fe45a4bb78a70f7705e834d3a4234089ebcc1220320bbaa473d77fd955232b7f354660b946fd263"; + sha512 = "35c8c303987fc6226678c02ed5eca9e36377f20c44a22513aaabbc1a86a661a4ef295a393d86e65707e714df13a877cdb2b1d52819c12382bf063f14e32044f0"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/pt-BR/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/pt-BR/firefox-76.0b4.tar.bz2"; locale = "pt-BR"; arch = "linux-i686"; - sha512 = "4c106cebf217be7fb68d38e1058f145b8e62dbe719f53cf8d8d08138ac43ccf07d5506f53383900b1b7978e85c7e05bee1c29d83738ac5172e4034b38f4e507c"; + sha512 = "9c04bd4dfcb38b887fef24a784fd3c7aec9a76b52675023f89c9d2cd9e83a0bff7a8c00fd91c7ba309112ffdbad1e2e9776ee2eeba9736438dffe0bd7f7a07a9"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/pt-PT/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/pt-PT/firefox-76.0b4.tar.bz2"; locale = "pt-PT"; arch = "linux-i686"; - sha512 = "dbb5634292b35b1a5fd8ca634b794ed5f7932882b8be60c18c97015c770bb36aedac93022eedfcf231867b28ba53ee4078820df3b2f6782f14d8c2f6fcf3187e"; + sha512 = "a056d933c16581e0b78df43c419fb6eb0fddbd970ad00ad13ace6076a19f21289722b6cecbe859761dbce0c3042a6d00cff4d04de7c4d594619a14cdf8daf5d2"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/rm/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/rm/firefox-76.0b4.tar.bz2"; locale = "rm"; arch = "linux-i686"; - sha512 = "dde472ae454af6b12729db749c9675d73045bfb881811ba34647ead42f39b5fef23dd9c505af01e40538163363a4076f681cd16b738cfa7235933ca65fed8651"; + sha512 = "6c808501f9bf72bee900665a689ca27fa0017ee23e08ddaf3fc969fd37bf113e189f57aa5ba8cbe3073e08993515120cf9907ef3981a2f18ad3bb4b5a8ac99c2"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/ro/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/ro/firefox-76.0b4.tar.bz2"; locale = "ro"; arch = "linux-i686"; - sha512 = "7af78cc786a786ab230b801a41dfc493a40202758d3df3f8792db4db798d036a65aa50f1d764b22cbda82eb798e895247ba625cd79461b72c780a8f2f742f709"; + sha512 = "e21c30b888b9a5cd8a1276abadf1cb7b61ef16aea1a2d14570649b887e6d4130e0e4d42bcbdb0e9f48760338c0cb2a8f52081cf6ed5163a4b7339923e5e13acf"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/ru/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/ru/firefox-76.0b4.tar.bz2"; locale = "ru"; arch = "linux-i686"; - sha512 = "ed1dd6fc52b61e83ef31975d25c569c33aab2fed13a11b74fa4bac37e464bbeded80394bdb7793d45471a0608fcefa8b9c94778a77d7fc39c7e39762f96ee260"; + sha512 = "6e8ebb45f4d0dc3b73c692db8e07032c62948d5a8ca6799d09087206a071db61c98cb883c85db0dfe1423f99383ef7efb613d5092fb0b295b9c3a24d29b60f6a"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/si/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/si/firefox-76.0b4.tar.bz2"; locale = "si"; arch = "linux-i686"; - sha512 = "6581646a8e2cb2a3fa168274d2df643df03771d4a2a99a874db3c6c32ccd27fe31e06d9d3c86a0c190b21854453bd330656fbb4a69868b3024b39b20c908822e"; + sha512 = "0d588d2befab1e7b23591f373b76083bfedca1ecc269c72f8d63a35e30d71db2a98c6b1ea18ed298909628800acd274ebc281c4d5e5399bec3f359f1f66e9bcd"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/sk/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/sk/firefox-76.0b4.tar.bz2"; locale = "sk"; arch = "linux-i686"; - sha512 = "d18ae82fd81b0face79f98320b74f7ed49a0eddfb64e6012279da3cac230688d2ada3d7c5dcbdbd89819db0735eefdb4a50f8929c12b9dedc10a1e40c97ff133"; + sha512 = "f4fd28a6f9397290f7db17ad30078b51e743f7093351493eaa117b526893f5a8f8ef36f255b50503d2b48c4bb3fbb3071ed0b25ea687cab01b01379b6ad64e6d"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/sl/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/sl/firefox-76.0b4.tar.bz2"; locale = "sl"; arch = "linux-i686"; - sha512 = "2c630dfd44c0574b2354cbc089191d6745dcd9f3e7d8e1891a11d7b11a70734c86787ca820cf7ba46b1124c244366cf09e3a7a21eeb729e7512cd508eaa11aab"; + sha512 = "8d6218ee90b9a767e03acb9f6bce4602bb948377cf91cc81b0dbe2020b5dac0750f1e283913940c59e0ee1cc14a0ce1928338ea90695948e5ddc854244b62c47"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/son/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/son/firefox-76.0b4.tar.bz2"; locale = "son"; arch = "linux-i686"; - sha512 = "fc50ca49ef1f58b93b41d9fb3ff81be8a17b9e80a49e83578b9cc152417b643b246eb21965391b870b7b281f8d77c2d73c3beaba94548f1d638927272a45f10e"; + sha512 = "4818470e713cb9b7209cf9b6b73fd2682ec9b017516f56570b83d1123e69921f7bf2f8c2ff8de36d622f0f93e1191e8671b00357864e1aa862ffeb7b88a90dc5"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/sq/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/sq/firefox-76.0b4.tar.bz2"; locale = "sq"; arch = "linux-i686"; - sha512 = "2d48a8217cfc1fd4210529596df73ae695efceaa4aca41da5db51962a81758dd1be4a15f30313e49f2f5fb33095408e146a16a7bac72d267704a8709c52601f4"; + sha512 = "0ef59e995790814ca0ed50c2b510a1971ae802a1f362d2bb5a90e35687fae26aed9ba925c8e08bb68a7a0279a832132e2d66adb5dc1471a4a8e426cd4731d7aa"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/sr/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/sr/firefox-76.0b4.tar.bz2"; locale = "sr"; arch = "linux-i686"; - sha512 = "c8213dc5c02f72efd7be29d08c127033920ad0471942131787c396b05c6a6443dd803fc46268eab556571040a4bcd16870dd3d94b9612b9391489728d21c43c5"; + sha512 = "5387f446bb9a4e3edb89a3aa8f19bff7972c932cfba97b386bc07875354ed6585fe39873a3e9f74aa68ae13ca4d7a1e765e3185517c5a266072167069b037786"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/sv-SE/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/sv-SE/firefox-76.0b4.tar.bz2"; locale = "sv-SE"; arch = "linux-i686"; - sha512 = "e654d3cc2d7ab45323077389c14860d294c3cd355408197f5bd8562b49f6f214f7c2271155ac9971ff3ec76a1075ec528ecec2887db41cdef02ef88cec40c4fb"; + sha512 = "067f132d49fedf4e8dcc1401b39445b88a11aa5a7796ee24a06233540dd2b1ace5042dc06218f28bb6472716747dafedfa183b1db1e87d22ca5b865fa6f972eb"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/ta/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/ta/firefox-76.0b4.tar.bz2"; locale = "ta"; arch = "linux-i686"; - sha512 = "d6ec73ad1cc93112dbcc7fa2b7a0d4da0ace0e16b7352a3e348e1ad8ae451351dba94b98fafb504c1066640787a7413080c536e99a93e2039cf4a7261971b53a"; + sha512 = "4016a1677a62dc4877dad75c0ec2f4d8dd5ed3aaaf625c73175fadae527d54f628bd29db2044f90c8be36e72b89422280e8030a231cda9db0f98c18d3fc037da"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/te/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/te/firefox-76.0b4.tar.bz2"; locale = "te"; arch = "linux-i686"; - sha512 = "edfdc524360181210cc1f8a09a9506299af5f693492237901b3460d6e8c5f5cbbbe3857c063b682d79a2222077dac5225124ce179eb16884b1374788560f0ae6"; + sha512 = "bd4a683f30e92fe9631506bfb2aaf726c6765044db65adb8d85795e60365684c7a9d2d351b7ae5b02125546dea8ffea6ec637a39e417bcd61acc57b8560068ee"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/th/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/th/firefox-76.0b4.tar.bz2"; locale = "th"; arch = "linux-i686"; - sha512 = "9875113f966d2cef50df360f3a2c1d2e21100131cf334a7b293cc859ab3c4146d56fd9e63544e35a90aba8edcf321044d233b04fc38025c926cc1b125a165651"; + sha512 = "1b10aa327fdb46c322af0848a66ca03ecff38fc29ada50fce6e44e9056a874275407bcc3959cc7668493a6de599e71644e6c4f57f83e031b18d4a88505b35f9f"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/tl/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/tl/firefox-76.0b4.tar.bz2"; locale = "tl"; arch = "linux-i686"; - sha512 = "a69699faf3f7c67bba77e1ecc661f9e1986324ecb7c35ce8f5137363a9c6d9270d0f6bd7fdb6ecaf20e34588ac57493ff5c1b04cb26adcf06af43e989f565b69"; + sha512 = "febcf3fc454d7079bece7a9da0a9d158c15d0cd7a61058befb411d921e35f7d180773b2063c2084552cb6f7fda552430778f75875b474312878f72014ae9913a"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/tr/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/tr/firefox-76.0b4.tar.bz2"; locale = "tr"; arch = "linux-i686"; - sha512 = "6b922577000343bd72fbfe0e624e85cba5a03a93d2134e6ecb4990795b6f078eed7efacec1b3d2f890e68e14a4f372c45b67ba0a310fd160378da922c08e5154"; + sha512 = "a23a443245eadeb943858bde3cb5d824277b47365cab047904268f783ffe3e0f42c0809b0b083a428b1d16038ae24cfc873b545d9513e1449661b511d17313d2"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/trs/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/trs/firefox-76.0b4.tar.bz2"; locale = "trs"; arch = "linux-i686"; - sha512 = "502b72962788b471e0d85a4b36cec4b4cd5c9278858a646782e01881f9c84b26b32f9642a475fd6e6ebe5b7adf6375040f86d43cc50f47a873585dcc64d4a599"; + sha512 = "c614aae0b803329d05aec5f60aec633d31353bed9822d9b8b7c5dff5d08fcbbc551aae480c02021abf0bdad1059b665e4ef627dc00ac5cab0380fa30111cb15d"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/uk/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/uk/firefox-76.0b4.tar.bz2"; locale = "uk"; arch = "linux-i686"; - sha512 = "2e09bc938ff3fa1d583288da6a9d17af40aaed184100b1de54c6532ea4cb5ad8904b724ce06f2a61ed9d71f1128beeb478218e213b5a6f868fbc9f355b83a1b6"; + sha512 = "80bce7f860ed4d8921e9826d25f6d877879c3e4e3e3bf7bd8bf9ed4de4cc10cf72e42cb6323240f799a53ac6fc366ee7e1e6deb4b1c697f2444e97ab090ab9db"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/ur/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/ur/firefox-76.0b4.tar.bz2"; locale = "ur"; arch = "linux-i686"; - sha512 = "2dfd92b3d024034b8abcbe6aa2ad12adc75fe8ebdbeeb914ca1847eb8fcb5b7cd20fbe80a4c8ebd87991ee46931e49bf8d7fefc95eb5df9f6a84813ffa99de7f"; + sha512 = "ac2d7c2ab3d26157feb78283a16e8d2195f78eabeeecb4ded60352fd423d8ff57f5e8a5fde72feaf32c3fece3a4e90c49d18d672ccff5775bc497e1c89b3fbea"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/uz/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/uz/firefox-76.0b4.tar.bz2"; locale = "uz"; arch = "linux-i686"; - sha512 = "2b3c0c758814806cbd9db8d1861a309b6b040bb12ba9981fe13d59d7edaa38a801a093da45db63ce8b3d1430e2cad11a2807d0d193423bd5df227b1db32803c4"; + sha512 = "a3cde7db978a3876b3ea596ae5b3e1aa1e77064f49686eb39bb083e4344cdda8366f01d37ceee4a007c1a36b4fd18499b2c46b2233f58b7efa8be4e59cc9e347"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/vi/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/vi/firefox-76.0b4.tar.bz2"; locale = "vi"; arch = "linux-i686"; - sha512 = "09e0b0bd2ff7c917b770110b4922c4d0549b0610b50e453521e92776e36f08f161fb419807c6e04bfd64ad36433a82e19767e249c3796cc3ed1a3efa72db44d3"; + sha512 = "b76c01da5b4be1e39a3080ed2088bf6cad5e6f08364edae08a74c6b5ec07c35a214c47ef80b8bf5e3f4c53db6789e8eff1d6be22a1a75d408570fd9a9bf5140c"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/xh/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/xh/firefox-76.0b4.tar.bz2"; locale = "xh"; arch = "linux-i686"; - sha512 = "6014a55dcfb521c18fc0988bdadfcb6e6af840278a53f61704f775e40b2f271411f8b382d1e3d128f63792f862c5f7971c3c62c45f611124017695c94aa90ec9"; + sha512 = "9175fe7659d000ed22cbbd8968146e57e0d8b39a112ce22f1bc18f553bca36c94c374f0f89d7b4743a521f654f2689e50ea4a4cf13ff320752c498e038abdbdf"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/zh-CN/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/zh-CN/firefox-76.0b4.tar.bz2"; locale = "zh-CN"; arch = "linux-i686"; - sha512 = "e04c44841d5e9390e7535b4824cacf587cd23aa7b2e5ce0ceef532b6a3e9ff0e7ae8cbfca381e5f2f1cd17d484f02258b85e37917f863fcf16d4141812b5ffc1"; + sha512 = "0ffaffd4a316c36aeb75242902cf05bfd99143b6bbd67eed7bc6070ca4eb4328dcc7903f706fcf7e93e980d916b24d2041ecd5f7324b0bbe5e7ca2fb7b755574"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/72.0b4/linux-i686/zh-TW/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/76.0b4/linux-i686/zh-TW/firefox-76.0b4.tar.bz2"; locale = "zh-TW"; arch = "linux-i686"; - sha512 = "d265ef9a7883702fc6a834afe04eaf0c420fbee25824e41ed8293a275e98e2aaa2c34bddd32587af4b91ba7acf0e56f295091f21c034d304d081f2045267c839"; + sha512 = "ca46afa28f7e756718aa45e7d84fc5a14773671aa18edcc33b4c3e5ca68017a14a6f0d7b737ccfd098875c333c6d65b271a3521eecd3d4c64f535620f8c66346"; } ]; } diff --git a/pkgs/applications/networking/browsers/firefox-bin/default.nix b/pkgs/applications/networking/browsers/firefox-bin/default.nix index c9dbe6ba4b9..71940c1b33a 100644 --- a/pkgs/applications/networking/browsers/firefox-bin/default.nix +++ b/pkgs/applications/networking/browsers/firefox-bin/default.nix @@ -199,10 +199,10 @@ stdenv.mkDerivation { }; meta = with stdenv.lib; { description = "Mozilla Firefox, free web browser (binary package)"; - homepage = http://www.mozilla.org/firefox/; + homepage = "http://www.mozilla.org/firefox/"; license = { free = false; - url = http://www.mozilla.org/en-US/foundation/trademarks/policy/; + url = "http://www.mozilla.org/en-US/foundation/trademarks/policy/"; }; platforms = builtins.attrNames mozillaPlatforms; maintainers = with maintainers; [ taku0 ]; diff --git a/pkgs/applications/networking/browsers/firefox-bin/devedition_sources.nix b/pkgs/applications/networking/browsers/firefox-bin/devedition_sources.nix index a362045451a..f10bd8e9f39 100644 --- a/pkgs/applications/networking/browsers/firefox-bin/devedition_sources.nix +++ b/pkgs/applications/networking/browsers/firefox-bin/devedition_sources.nix @@ -1,965 +1,965 @@ { - version = "72.0b4"; + version = "76.0b4"; sources = [ - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/ach/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/ach/firefox-76.0b4.tar.bz2"; locale = "ach"; arch = "linux-x86_64"; - sha512 = "6cbeb3067c7213d3b675c0d932fd77ba068af1713d7d7f4367f470ccf4767427a9239f2cdcfc3d1e33e1b71e02578743e0bccbca2320a9271663d2ad76b4012f"; + sha512 = "9d76b71a20b9079513af70a082d6ab7373378e01b126cac5111437a040b08aaf3c78ad6d944cb27943043917be5d00ad90dd428ac3f2107754e2c96d5ec5c7cc"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/af/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/af/firefox-76.0b4.tar.bz2"; locale = "af"; arch = "linux-x86_64"; - sha512 = "e15a5faee8be48117493171ff2d04abdf8011b4cf40d68d65ead419bd6619b8a1386ee9867a1229879ef75bf5b36379ed3bb04f6de289dfb2b5c07fa5874711f"; + sha512 = "b498c1f6b56a65b66765173ac6c4568066facbf67b945d8e863a0d046cfdfda5e792acffaaffd1e7e5e5e5753b4a85ece8d19aa97d743340028346686a65cc7a"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/an/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/an/firefox-76.0b4.tar.bz2"; locale = "an"; arch = "linux-x86_64"; - sha512 = "c96a0c3f4b6a29347642e5583980f70affe1c84de4a2a6b5a304062c0ebe173e22af5fef1c775b76afa4ff8cadc02b7df7fd2cc8838af2c10fb94c34c8282521"; + sha512 = "115e952394389af064117dc837d1f2ec157ced9aa35affc1d490e0a4860f36309c445a0e4781d0020420e2f4f3bdad18d078321b6bb760aaf2900273f5601e5b"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/ar/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/ar/firefox-76.0b4.tar.bz2"; locale = "ar"; arch = "linux-x86_64"; - sha512 = "08b69e38444a7666b6aadf8b3533030c91c23d53771daa0f975cd09b6c9726845258aed8c06de80a38f1fa47fd57b36d0f21ad7eda6e28824a7574d371d6235a"; + sha512 = "cdebc4f71f304c930ee06c2048a142a1b610965059a3c2167882f6859446eb8af661c5d64011de3639144702b3b1936c1ef6af7eccaf7944fbbd7eda7161f569"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/ast/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/ast/firefox-76.0b4.tar.bz2"; locale = "ast"; arch = "linux-x86_64"; - sha512 = "419c8ccb281b16ef69b55a13eaf891ca230ab43b28dda65048b617584b84bcc899ed47368da764413b89f5b004bf3f69393214d0e30611ee4545c8a581af35a3"; + sha512 = "6a96535466e06326f0577f045bdaf310d05a7f3878db940521bef58f60abef196cca038912145f25bd6879b55a693b6c98933d0045bfd5da58ff436cdcd1de6d"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/az/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/az/firefox-76.0b4.tar.bz2"; locale = "az"; arch = "linux-x86_64"; - sha512 = "0acd28ab7e03c31fa84c0783259241515c0e7283afd586ce81007700eb6de7deab5e6d9f6775a60b1d2238d5ede5f56d2765bcf08592d9cec4e3dbf04bf000f8"; + sha512 = "327cf4ba8de32044426d6ced1e250e03972e9a24705373a0c15e46c2f6c4994fc83cd1c67aacf09c2d11d9b665e63dba6176e845ef8c037241c55e9c536caa8a"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/be/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/be/firefox-76.0b4.tar.bz2"; locale = "be"; arch = "linux-x86_64"; - sha512 = "7b3af40c4046173d5f28d8ee7e1487c244ba7e979625105d2521b91df7f1ecad7a0ec597eae8c95103aa43ab977bf1f9236ca7ecac1903d436d5b21a275ba26b"; + sha512 = "9fa7311bf0425d7314298751553b49597b6eee71f9d251e52318f13e1d38d86adbfe1a1b6d599319d6f61de47652a5cfd33ef3f3ae9a2ee3f16af53629f0b85a"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/bg/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/bg/firefox-76.0b4.tar.bz2"; locale = "bg"; arch = "linux-x86_64"; - sha512 = "e4a28f963e056e4217998dc2359582d8e2d0c08658db18e2add0023084632046f9853536b5b59af0eec9ac3b222a54f75433a9094dca4e61433da13a0d3cd45d"; + sha512 = "084fffbd48bad4fd38c649dd7ef5aaacfd5c86be4482a87f25c8e19ac6469e28897cf1ceeaed14cda55f40c77b08425a75ae3679d9866c255eaa8927a3c4e7e1"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/bn/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/bn/firefox-76.0b4.tar.bz2"; locale = "bn"; arch = "linux-x86_64"; - sha512 = "5300264897397a070375bc07338fe75cde2496a25a44badbf59376eb2eae339f3e5280ff281310e3d6c3bfe9fd2f6005f2b3f35ec815c238bc10146756e43009"; + sha512 = "bd6d179e2ebc392bd8a2b5fc2b67d486150b00a4d881aa23c4d49ec2bbb7e8b8e9d70247bd704f608972af5ea3ffc5f53f949096a33455bb1fcb018acd4a0987"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/br/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/br/firefox-76.0b4.tar.bz2"; locale = "br"; arch = "linux-x86_64"; - sha512 = "656041367d9b742a1b7b178ddb2c5567b94dbb69631884c50bbfd439d4e8ee08c7c83b85a81dcb24ac202c8d4b42cce9c7bb33c707bc274bcb01d100e173add8"; + sha512 = "55d293e4f510229cc6545e41631db06987779f094020edf70093a38d1612d755334b59fc492f6b77ad3bb5e9996883231c0896d99ab83ffa418ea55b61cb76ee"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/bs/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/bs/firefox-76.0b4.tar.bz2"; locale = "bs"; arch = "linux-x86_64"; - sha512 = "dfa09428514aebf5282da86b6088f9d789be478e90ed8322794b2a7e3ab7db63fdfd2f437fa32cf17847a720fb968684b3428139ec9fa7a74dbcbbd5c1221969"; + sha512 = "b69e81c5b10411e7b391de4f9a3d3df4d183e4870b81ee3963bb663b85da2b955d2ea71ffa6246790a77cd2f512a1797bbe90f35d9da75b5d4bfe0c4e4209621"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/ca-valencia/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/ca-valencia/firefox-76.0b4.tar.bz2"; locale = "ca-valencia"; arch = "linux-x86_64"; - sha512 = "282e55df900d832d2f22faa65e90d241a1edf471a19fd973c66f950796e3d82b4505bb35c13a8f502e19eb67d0f54dc4a9b7574f94ee448835706c6d7a66a608"; + sha512 = "047cb7e2135ad93aa4d1378e9d48e8baaeac711aed823ae603f6d9431b90a8e46096948712f4fbaa6a80ae519ae7d75dcc5704305323c7eaa9c307cc688194fb"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/ca/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/ca/firefox-76.0b4.tar.bz2"; locale = "ca"; arch = "linux-x86_64"; - sha512 = "44e71ee6ea38f7cac766eec9d344d74391eb850b80f0bd8b4b71eb2b95588910f2610af3b3e365e57e9c7211c272dea81899a9bb8e1fbecdacd3f2c3db76561c"; + sha512 = "417dfb9a91902fd3bf7245accf6c48ce0dc1b9944376d5c73d38816e5b8c05ce214c1327f31773d5a72470a4b565b17f2469ed2f9d3fd6a7739699e19ac9bbd9"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/cak/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/cak/firefox-76.0b4.tar.bz2"; locale = "cak"; arch = "linux-x86_64"; - sha512 = "92b0dc18e82e3e48ea48457a86d5f4fea673f6ce1f63b0d326fa1abc818d2794e67c10696fbda1b095efe3cf661f8426cc17839d5f72dfd4ce63a6ce683981ba"; + sha512 = "823f2cb33b41a6a4ad870515f5f443213df254bc6306cda23ce2b2b8a435f6a6bfa0884ea504645791a15c76934bdb92460674fb628b517f9d4e1f2263347fdd"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/cs/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/cs/firefox-76.0b4.tar.bz2"; locale = "cs"; arch = "linux-x86_64"; - sha512 = "c6ef644d3d78f2e53579c063934e596b70147556bb74de7c31fa2592a1f06e6c84343d5efc8ec14a9789ec340688d02cfefdacd4abc4183d0850ea79c48a6d59"; + sha512 = "618e4e48246192c6103757ef151ec192e41ac1011786478d631169d934569610d2e280cf20de2db54a57e1e794fd66c685427d69d2a6cf185508234066f71d34"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/cy/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/cy/firefox-76.0b4.tar.bz2"; locale = "cy"; arch = "linux-x86_64"; - sha512 = "77971dca0c2457ff1d938e79bb74ad94d1c6b988408f62150a17a7c25fda6c84cf9226b4ae6a6903a4ae3ce20e16d27e68964e18650243c347e2b9b6c4022773"; + sha512 = "000d6c8434ef716a63fe4885d2b4ee2f6d025b58ec0de6ae2957a9d8807d9ed1c740fe37b679a66a1ca63a7f5690aa9a3ceb3aca6011dbb13071a66d329caab8"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/da/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/da/firefox-76.0b4.tar.bz2"; locale = "da"; arch = "linux-x86_64"; - sha512 = "3245ed636bf8556fdad23ce1f01582b1c06ec71a0cd30fd5d343cd79de205427ab7c4e194fb85f20bdcb69a06b06c13b7aeb9fcd9c69131bc0a38a0f7cbddd66"; + sha512 = "b49a8f64bb4a5625bd7b4d8046fb819296ea56aac468d4ea3220a73730c8d512a5ecc0d3798cffdb27afdc13b584830ce2c800a912976467a4b7851712fae481"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/de/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/de/firefox-76.0b4.tar.bz2"; locale = "de"; arch = "linux-x86_64"; - sha512 = "fe3ea14f2a3f3ebcda6c34f5699302631fcc69843fa6d825ce75c28687d11c49202a455d5627e8bb65927d9e45f201cfd8f4a2409bac46a6cbb88d998b3d66e9"; + sha512 = "fb82402e6e65bb87878b036f54518cd04b078564a14ebd8ef25dd60a006fe9f12c5e34b7f4bc10858228982dd0eaf05ada0a9f099059a9d71fe3933b49b3b2ca"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/dsb/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/dsb/firefox-76.0b4.tar.bz2"; locale = "dsb"; arch = "linux-x86_64"; - sha512 = "34074627334449991fbc2f907dc1b93b03ad7163fd8773d0a44043810eeaece19af574ea52b42ececf35debea347ead75baeda0e323d13aa6c80764f5b83eaf6"; + sha512 = "c447e017eb5df8ba8ece0ff51a62b3ec7b8c7cd12f55b1b41cfcfccb1a7f936e8efb12792b9075c8eb6995802dc24d17d43b395805b03476196103fcbc1a2faf"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/el/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/el/firefox-76.0b4.tar.bz2"; locale = "el"; arch = "linux-x86_64"; - sha512 = "2d50aca82f7b6d97fbc3905b08efadaba7f0ba0dba72ef11012feee5ddc19001fe782241eecdf9445bb528ecb16f8ca2cf8df8de5641cfa8455df915948e410d"; + sha512 = "d3e17c8c3a6f6f1290c64b19f6f2184f0cfc80c087ef3c02684c16c6e9b1b1e311feb9a134bfb7bf577d6995c8fd45365154935a25aa5f40e37ad198e41de62d"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/en-CA/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/en-CA/firefox-76.0b4.tar.bz2"; locale = "en-CA"; arch = "linux-x86_64"; - sha512 = "6467da4e9af4c1214f33701e4b8105c6e0c6660ad1d1bb527592772488a8fba9272026cc1dcb090e7869ac9ef17e45ed0e97347a6ddfce778030f2f77c6cdecd"; + sha512 = "7175f58d6d81c34647e6c021cb0cf7c9d3a30c4a3d732d931821219c649e89f693529177d4bf037c56b37c330f8b29d3dce9038a7d2cb24590445b387b64801d"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/en-GB/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/en-GB/firefox-76.0b4.tar.bz2"; locale = "en-GB"; arch = "linux-x86_64"; - sha512 = "94857e1cf4c9f041439c1258b4481aeda8a28584afcec8d1f279586b31e1941ac9a2c847c50e1722e1e83a9156586f582cd7a45a5377f8bf1ba8e24e6fca099b"; + sha512 = "0a003523e3e254f631834dba70784af7fdde9d0e912e17e2a92e8e0cb9d6973ada3670f1f83927d53afbe4b90be9de6e456cbe8b32c7bfbf2aba54bfa6c3dad0"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/en-US/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/en-US/firefox-76.0b4.tar.bz2"; locale = "en-US"; arch = "linux-x86_64"; - sha512 = "6b5b0d3af32275cca8f8ff8d308fc4982988bfa2ec74168d6b13b3d8e962b799ade9c4ca39acd412ff281ff9e9b5505b001d888c7121a602c40f914b79dfa7e3"; + sha512 = "4ea639262102238e209a7164d5be46bb88d38e275f265340b109a7477ad8d5c3833772c44cf37ac9dda96dd859b3b07a86ed0942ba0e1c4a4b58b767c218c8a1"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/eo/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/eo/firefox-76.0b4.tar.bz2"; locale = "eo"; arch = "linux-x86_64"; - sha512 = "027cb71a76bfb08e54a3a92e2129244b7aaeb40ec0a809ff57666326e0e3e037b7c2b1d35c796e0d9fe415fb95483a6d7836f7f71b5e24e872b35fe31b809ded"; + sha512 = "083063dcf61db9d69ca39756c9fe697af133dbf87f455ce3590b2d336e629c67566ec1f3a8973f2d28122e283a8e718ef84bdadbbae3844b00e7e6aac2978454"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/es-AR/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/es-AR/firefox-76.0b4.tar.bz2"; locale = "es-AR"; arch = "linux-x86_64"; - sha512 = "bceca49673a5744247678cf939f9c78b04f120c075c94158375d363fadefd8965a52db9f9129fc5e3463c5e8a35055477ccba652e8a32ac5be63b90b43a8ba6c"; + sha512 = "c43aed8aab29941423a292734525a2f5c8594ce3ae62cec91fe4f5ad6f04908e14a13c409b4ffc47ab9049c4c9194c388097bff307edf632fcfd06d363619085"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/es-CL/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/es-CL/firefox-76.0b4.tar.bz2"; locale = "es-CL"; arch = "linux-x86_64"; - sha512 = "54172883b1878dcdd5e035fe41cc097e3d336c53d3a0b3452e07e1066be3386fe942892695d73f41423c9fd2927bac8c3cd8c9f8317e1c62489510d2779f10a2"; + sha512 = "b7ae67f8943841f254650820b4d36b164e95dee1bf8c425cfb9c878f4efcf4c4f0892a84ec5ed7ee2ccc7f03ec43a5f67374f3e1e268ccb753db4bb2f5b6474a"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/es-ES/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/es-ES/firefox-76.0b4.tar.bz2"; locale = "es-ES"; arch = "linux-x86_64"; - sha512 = "ad698bcf55a8c938ac57c9681bba92fe9b52b09a2fc23d3dbfe34348878c2f7dac8722d6d1621cb7f0c32b4d8fbbe438fab67c5bc085ef34efb8c3b3f91b24d2"; + sha512 = "b298d239fcef24f2e34e5672329779db55032f500a08e2b2e8e0663bddfdf3925a1eb16eb08a1729898a8cc122d2ca923d26c0be3e147172e4b869305df05b31"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/es-MX/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/es-MX/firefox-76.0b4.tar.bz2"; locale = "es-MX"; arch = "linux-x86_64"; - sha512 = "6b913ce655f43d70ba794ed722e39bd64baa242dcda5a8e9841e072164c441a6776c257145f697123d06c11d0c22fadac8bc6fe83e79b658ab3c05bb9260a66e"; + sha512 = "e9a107d459a4a7eb90b38edbb33a67c6f03d7851fca8be00c5f981849cdf9c88b92e283d094d3a13ff1b3f37da417c09e0d0379828eddebcb984e9684b000385"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/et/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/et/firefox-76.0b4.tar.bz2"; locale = "et"; arch = "linux-x86_64"; - sha512 = "e6e30e3fbda582034abd3a654a1bec8135245e1ef97b75917d23d52ff85d97ef8d3a9d16f34c887ffe497ac6ceae6460f07a28e440b489d461d391ae6fcb5edd"; + sha512 = "3f859bfcd75718abf816668a1fd15b26bff4b70fcbddd330e69180476d7ad40be13447c533e49ba24bbfe5667dede1fd0024b7aa976df5e4c739ffe75b0ed31d"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/eu/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/eu/firefox-76.0b4.tar.bz2"; locale = "eu"; arch = "linux-x86_64"; - sha512 = "75e75402f548f38672cf1ea490095861f95312aa85446eb01bdc519ae1e6cf8f716020d235885a572c472ee25281b351e4b6f9473da1a95cb21b53bcf364c903"; + sha512 = "6081be920d434127391e4946429e677f421b381f371fc0539ebc92e29963aeabe07116dc9c81d2430ca0cbbdd52bea69157ade801f076cc8b192e3eaa2f5e427"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/fa/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/fa/firefox-76.0b4.tar.bz2"; locale = "fa"; arch = "linux-x86_64"; - sha512 = "f7331d511797a1e500420b9f7749f57570fa2eea2f68c9c0afc59165c0f6a257fc5920483cdc7a1f591fadd93c04878ebe04698b7491881907d9dc61d598e926"; + sha512 = "abc53c13aae0ced9217532e92a9e9b4a9f9d95d76ec8ae0395d77447804d24aa503caf644a030acc29e69feb6f89569b53b9036589f454a1e9e72eb900403ef7"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/ff/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/ff/firefox-76.0b4.tar.bz2"; locale = "ff"; arch = "linux-x86_64"; - sha512 = "361c9e1e1c59b876499409b8ff1de96b1db67a0b28acebe88e212e32d9a4bf8b12bf0a9713e7cc443eb9d1010a633b6f973e029f261d12eda6b31ac2abc98227"; + sha512 = "ba30dc08436d48280298efcf85f509a56c903e5bff1909332b792449032178764bdd7ca77ae81d02047f439da93cac45486a2a8fcce0d1dc1c876c01b3468066"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/fi/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/fi/firefox-76.0b4.tar.bz2"; locale = "fi"; arch = "linux-x86_64"; - sha512 = "cdeb40d6762725d0489f2118e2e14e278794f57ec1fd4c5121b291b56a260e0c853b81824a611fd4dc2bacfe60a909f9ec9c2fd983767e91dcecd5f34309c16f"; + sha512 = "5e6833e0d4cc404a9224ecf5ae6cd1e5efb4a5776cefc19f7b1eca9aafde6b3b6a3eac8a34b2cf33b16c60b68f2940fa206ee8f34b3a1acbb13aa468dd5f1457"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/fr/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/fr/firefox-76.0b4.tar.bz2"; locale = "fr"; arch = "linux-x86_64"; - sha512 = "c812114b2f3ca5306acd33d643edaa482d3c706851bd1a58dcb2487dd5a3ba7ee437415f2aaed99e47962d3b66b6c566c3d7489869d9c10cd5ce1eb30d35fcbb"; + sha512 = "c33412dce69592c1b92b42e982a7a7392f46142036a250ad39f4e1a0de741017081b6730fe1ef93a3b8015abee13a8e4f3ffab652d1b7a86be04d469b910fd85"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/fy-NL/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/fy-NL/firefox-76.0b4.tar.bz2"; locale = "fy-NL"; arch = "linux-x86_64"; - sha512 = "2d02c41fe7f3dcc195e08a52874380996a49e5767cfe78ee19269a8c3bca57f75bb256e4dc7a24b008d25ff698cbe522bb2db665b3ada33f89fc2738540b7650"; + sha512 = "f1dacff746fc0695c9e3576da48a6d1dc485398b5468659fadc03f7ec24a2b9ca1e530f4c1c8a8556d80f682d36fc977438cdb8bb2397a01dab54f8e09ff41fd"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/ga-IE/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/ga-IE/firefox-76.0b4.tar.bz2"; locale = "ga-IE"; arch = "linux-x86_64"; - sha512 = "cd234d2f8498fa191b68bd61348cbaae5e6785a2cdca4529f8eee10f19869ee6dd62d08dbb90512a6761c3b812d09581b43154d4a66037abd5460d989607e3ec"; + sha512 = "423ccf14bc5a31a332428c023784f33ae35106fb282591d161194504f9c3b4f647dedc6af919720b718925250d1bf2a4c3595aaeaee0502d0bff85025bcaa441"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/gd/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/gd/firefox-76.0b4.tar.bz2"; locale = "gd"; arch = "linux-x86_64"; - sha512 = "4999fea1af785cbccaecc63efc3e87e9b3a08afeb243d79175241a84da57c86f57c2a24b5ac097ba960f780fb90b65011c950a620d46100ca57b92f346570012"; + sha512 = "004b52581644e3263aa8212048c48e163e48bac6172cbf17da9de686a6265299f96f72ebb7b2d3e8aa60fb1e71e1459b4ee717a8d74557c576edd79cd5c581dc"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/gl/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/gl/firefox-76.0b4.tar.bz2"; locale = "gl"; arch = "linux-x86_64"; - sha512 = "e5d1080fcac102f98148b6477192eed748318147ef2bdad81941872d81343ab04516d3c39db00fdf34950936389a4b02f4367ca33fbb23913a09c59a547f37da"; + sha512 = "206fe47aaf14c3c054d1371d84a1adfba8853ed0e5622c871566bc4540f6f099530ad62d0e719f1731816a014fc9310db5dff5881a8bf48ef3807b143d42a2ff"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/gn/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/gn/firefox-76.0b4.tar.bz2"; locale = "gn"; arch = "linux-x86_64"; - sha512 = "13a72b84a30ef450ac12a3a1b42b9f8702ad560b251541aa2d3515a4c8aa06a8e3c942d3380e692783e8c8f0b4e0f6a4a25e57c87321953f42bbdf451fa58757"; + sha512 = "f5089e9300d10b3e51f29d90821c6e9117bacec194d37c89d9c26d28a00f1bf694b5399f51bb7a314dc42e30b2693e8507af8eb5edab6d9edbd509e0c0e11761"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/gu-IN/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/gu-IN/firefox-76.0b4.tar.bz2"; locale = "gu-IN"; arch = "linux-x86_64"; - sha512 = "1e930682bea71326a73c7523eea8e7dc3d50c15899232660d8df17aaaedeca09aae6ec780ededc36d5f4c15d271297d2c6b6095821b20b5ddafe41cede0d42a2"; + sha512 = "38756c6000aa8032a6f182f3267e738cb100ceb7762900d718e996a9b538a92bee3acc9d2368cae1a675647031c4f05218745111828031587e0d29195f56eb04"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/he/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/he/firefox-76.0b4.tar.bz2"; locale = "he"; arch = "linux-x86_64"; - sha512 = "c6ad6aa8108dc7eeb85dbf5ebeef93db16306ae96a1f5d8c2ec1f6a895e20f9c1fa8b7ebaa0c12c0b95e4ccb5f00939c2495a4adcfac642b0071b3c81748acdd"; + sha512 = "bba86d7a1fc6746b1f14e1df5720d5cfd688140779ed0117eb0b7966d3d1500537a3caac19968c7c272f9061bb6d57dd068543456cf87d939ce567c99974a014"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/hi-IN/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/hi-IN/firefox-76.0b4.tar.bz2"; locale = "hi-IN"; arch = "linux-x86_64"; - sha512 = "ca8a2b3cca71cd56ba469dd9465e779566fac77537803b6273ffdeec7c5b968fbc14e79f2c75cc7dfe809bac57c1fa8d52bc6408bd070d8409c7b575ab2147ba"; + sha512 = "90ad90dae1a6864e1df05b174105e145d0a2395e465f5e517e6a4b240e157bd3710b6a44c6c016fd49fec3756d9f59e2122d1ec6279fd7717881f40f17eeca13"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/hr/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/hr/firefox-76.0b4.tar.bz2"; locale = "hr"; arch = "linux-x86_64"; - sha512 = "c7ef8b4d58d5cfbb0d3ed1d76371c8dfc2cdcca35f701cf8cc72d3452d09da9aa673f85d27c54c63d856d6ed1381b7e2ee8b7b493d2de954489d5aacd9976ab6"; + sha512 = "b0ff873b157d62f227a0855cea5a14651a42533c6eacfd4a278a3c28ee9cc87aef79c459dcb28c90f2554c65f5974b03378cfb764b54a0d1d89fe45d6572147f"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/hsb/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/hsb/firefox-76.0b4.tar.bz2"; locale = "hsb"; arch = "linux-x86_64"; - sha512 = "ff3c870f4f520ca28ed55cbe2b27fea748c6c72c44e949cf5c4130c783b4c63a4bcfacd66a03cb245bc999239e14332eac58b4f6693a20f975a1d3883b1a0590"; + sha512 = "742a1ade2fb13ede18024c8d24268012ff00cd9dec283a7ca93dca80d6f3ad4eb0835cc151cdbc70327a2da0d53b34c366239a9da625d4b6a6b19951a32168af"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/hu/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/hu/firefox-76.0b4.tar.bz2"; locale = "hu"; arch = "linux-x86_64"; - sha512 = "42c643c90d1dc81564bbd9cba8968085ab3672e442b9ed2c479aa2c1ce05c13abef81e2010acf95b9a9061dd0d7fae1cd2eea1be3fb5b71e6b219d04b508f95e"; + sha512 = "d8635bffa34c824f15b8328ffc5a3334321470a9f2f4a9d16a534fe2548f4e438a612ccea108ad5165b6e87b9cd837c478e8fbe42c89fbba36202dcf49896ca8"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/hy-AM/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/hy-AM/firefox-76.0b4.tar.bz2"; locale = "hy-AM"; arch = "linux-x86_64"; - sha512 = "821dcea6cadc785196d0575edc9d5959237eded2593d87be7228aa90acf1c606e186a7c3d2839d0fb637cd4a456e5b79e7d7276adb6fb85c0d436af5af6269b8"; + sha512 = "ff885e94eadc4734a640b97c85e540a662737bc68ba26ac6dc4a467b30c96a5d29a08a635542981d60e38754123d843c5f9722a9e94928a7b408ca252823089d"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/ia/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/ia/firefox-76.0b4.tar.bz2"; locale = "ia"; arch = "linux-x86_64"; - sha512 = "5245ef106cc45f351dec5060d1e9a300917cf71dd128761b6e27da9e807bd309bdf271afb6ddf249677cc223557a98a4611ab3679c78c00e65eb212fbf77c04b"; + sha512 = "65e62703b9ea3b10d3134956c56e3ea6c44a1ea4c4d36c1a6c1cdff46fccd25baf43500108ff34a8a8c5b8328c478600b3cf7d33ce865884302aad407b46e89c"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/id/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/id/firefox-76.0b4.tar.bz2"; locale = "id"; arch = "linux-x86_64"; - sha512 = "a18d6d9122373d914beba1d3b15281e09989752ad123356bb74f8a93458873ec3516b476f9d46af2931e90f06202730c4cb38a4e042b19fcaee1a7af0a7bd3ad"; + sha512 = "02656928185eab47e08787fc1ff267447c3b5cd4997b4a1d954d31c26c36fc78445f28e85250c3d0bd94244900e7bd9a962e3a93e8eb4046ae8979e407b07ce3"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/is/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/is/firefox-76.0b4.tar.bz2"; locale = "is"; arch = "linux-x86_64"; - sha512 = "bccbd4588ed806b3ec02b8c872f82925629139a0513d46a6dd06b6b9f3818c98084a3a3bd99cd1ce987e7abdb249aeebbabc54ea1531d33e80bf945aa8666558"; + sha512 = "597a29fdefc3ac3746eb1b898a51f1294cdce2fc7edfb958a8967c624291275d46b382e103fb3f3e39c08684b1bc4a90235e62256b16c37bdd230e4eb2b65e7e"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/it/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/it/firefox-76.0b4.tar.bz2"; locale = "it"; arch = "linux-x86_64"; - sha512 = "e90424148507f0623b8830e45e1d6e532c3886b2e5f6b75a945265b922e8d7df94a84b691ebca2d5b533cef2eee3c627e762df3cc83750e3f5b1e5c6562fadd4"; + sha512 = "6eb5658a073a1ee84803ed669794bf307cbd615c220d8e95596f4c27811f20afa4f2b67bfaed94553dfb2cf3c4f5a09f0a5b4ab61f517794200a8ac11e00262f"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/ja/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/ja/firefox-76.0b4.tar.bz2"; locale = "ja"; arch = "linux-x86_64"; - sha512 = "8e4e99b2108826897ab62265d9979afa72ffd4db52cbd313376572f75bb4379b972aa4aadb26084f9f0ca0eff38f6e03d3b8caaa5c28c8dc602050c13eb57c3f"; + sha512 = "0292e5eb4fe8a11f13a8a824cc1f996133abf49968956887847a9556f2f418fd4146629d806a8364e103ab62542abac4c405e32800567b140a51036b5a99eede"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/ka/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/ka/firefox-76.0b4.tar.bz2"; locale = "ka"; arch = "linux-x86_64"; - sha512 = "a07a19cfa9a854b65842e869600033000eccd9cc989bbd74c1eb816ed53b02df0b66b48b16ea9e912ff6714865855ae910f30913d331854db891c4fbb27cb91e"; + sha512 = "19d98eeca2ad2198b928f9c28c2ccf27328b3fa47b56a9f6aa1878299d582d1a18209625dca3e00285219b2fa8c08ae6e4ef581db80611af699304b8072a56f4"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/kab/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/kab/firefox-76.0b4.tar.bz2"; locale = "kab"; arch = "linux-x86_64"; - sha512 = "be1a256ac3d4731697dddae8fcdc81523ff098f4c2ad06745d64b0a010bb83a2a9e952796edbf96da8b853694c345835ae41c87de4277944d95cde05b0e57efa"; + sha512 = "f47d60eec573dfe2234cd166270c078aa649e0af0b5c85b6a439ed83535b497185bce6be633a923a557a845f6a66f441c42b7a8e8b76118eab5a545f6dafd512"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/kk/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/kk/firefox-76.0b4.tar.bz2"; locale = "kk"; arch = "linux-x86_64"; - sha512 = "4ea0605b2bd0669171639217347b8ae60c22166d21638be4a4a4e1db37b43c7c350607846e6d89b90f171d05248c8aaa75d417263165cb993ab0ce93252b99a7"; + sha512 = "d25c996f6255d6df234504f7a0cd6de5e231ad00ee1baad4d09ca15543bb7fdca6ee94c9e06a61090360377245d367dcbb8686fc94997722cf3d2b75ddbe2e1e"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/km/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/km/firefox-76.0b4.tar.bz2"; locale = "km"; arch = "linux-x86_64"; - sha512 = "613c836baff82172a72aaaa194478fc5b116593d9fbe4fe63811bad5fb64710d96468a91d7c0d73d72a3af11e2254303fdb8db7ae1931a39841da7caf7e22229"; + sha512 = "24b64f1d5f8b5f26d213390559f1cf3145a845d0bc5d27bd53fd9311a3110f0bfdb54f03962daeed0c456fd59e9db26c400af67df783e9f76546e3a9bc689615"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/kn/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/kn/firefox-76.0b4.tar.bz2"; locale = "kn"; arch = "linux-x86_64"; - sha512 = "dd19beb8ae0422d0a54cd1f5f627119bbd13abb1cb723e490a1306f609bd9ac7cc8a6bef1b72e7d299ad5270472bffff4dcfccc7ef8a33137c8ab17d67cbbed4"; + sha512 = "6305fc10709819a454b475a6828fa309aa23634de6704a2edc46ff41e05cb899c96189ec8698b72d375a3d33da47eab654d26e4987ba86c97edda4184fe33e96"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/ko/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/ko/firefox-76.0b4.tar.bz2"; locale = "ko"; arch = "linux-x86_64"; - sha512 = "e9180e11b37d361f7dfa8e6bf8a907d58f2424373922b65f06638060578d3871076a69f326d96590850b1f4bdbcd260bf9bc3e3b5748895e86ae953c8f529818"; + sha512 = "2359b56d7262c17689f5c1b1609f08c36312b5f01a1aeba482b8e2f274d3bfa6142d936867c01656abdb9502d688a94d39924c422883918e74bb55f365decee6"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/lij/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/lij/firefox-76.0b4.tar.bz2"; locale = "lij"; arch = "linux-x86_64"; - sha512 = "c14c338e9ac17b0200c00b40e8c45743baa5c279107aab0d2ab5f45330d2b7a513444f126dab999421b704790be00e2cdb4783236c41091b2f8e1973e2ff4be8"; + sha512 = "d0e6bafc119c5e5d466420b5713ba0720871cd2f51c19c7c71c60cc5676c21bbde865d94d118747377dd0ea73a572dd50fa43c853ca5df13523549f4b6979be4"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/lt/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/lt/firefox-76.0b4.tar.bz2"; locale = "lt"; arch = "linux-x86_64"; - sha512 = "aab19d2dd90576b91a154106674fee1e05d46d331810a33d28205048c0c67451dc3fc30ea70d2233e6139c7968ed0d535490538556a288d5c331ec88bfa0a90b"; + sha512 = "95c0ccfbf994ca172eb1e69edaf896b2c471f6eb1da2884e28273f91b8ee7617b29e0f713228f5c6f4a39a13baac39e6ec760ed33961264bbf915cdb4641cba1"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/lv/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/lv/firefox-76.0b4.tar.bz2"; locale = "lv"; arch = "linux-x86_64"; - sha512 = "d2fca320d8aec84cc718cd40b24a7cd18ac23e98619b69666c330e84fe8078be522deb58b2575d2eda1d823aa413ccfdfb68a4ab83fc99f9b74054b887f81fe8"; + sha512 = "7c4951a58394c510499d8d0350cb5ae5124f26c926129471ec2b3067cfa69416855f49cab8cd32b86d1b003f2ed13e672635cfb46389b45fc59c0308a638c6e5"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/mk/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/mk/firefox-76.0b4.tar.bz2"; locale = "mk"; arch = "linux-x86_64"; - sha512 = "4079ef459d6f1164023afc07b4736a186f45af41ea9e76783832f1d8431b9de7a4dd8a425b4c203669417fdaff1fc6bd88d65d3f6b9aba5d0d0394f707321746"; + sha512 = "7694100e1894b91632393c9662e376a9884cb5c69298dab112daf47123f16509ff020c3f52f790c2173b5bf8b1316e893def1c9fa8b2d4643e0db6c5da7ab475"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/mr/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/mr/firefox-76.0b4.tar.bz2"; locale = "mr"; arch = "linux-x86_64"; - sha512 = "3c4929d49fbd0d20c6cc03e5c2d3935ba291c99bd955ff56e10fe75ed872082754bd27cd9a8d6c92a7ce3c180302465ab6e6d77f1b230b208ebfc53083e78064"; + sha512 = "ff15aeed5144f65978b28e7fdf3679ebb3de83f696b7bc7ec3a390dbd9375c85e7d793a157ebffd958eea271a69ae054b4bf7112488ef42cdbee5b7a72d16783"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/ms/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/ms/firefox-76.0b4.tar.bz2"; locale = "ms"; arch = "linux-x86_64"; - sha512 = "fbe861070bd7ef6d2a00bd6ebe8bfce566d4d771a0882f932ec1705bdf06eddd571eec1681b4cd70b204aac5559cbecd89b3cca5e6dcbbbc0cd1d0ffba51d51a"; + sha512 = "1c0b206705a8fe0dd4b7adf155feb4ba1e8dabd176f891754f5b3ff7cc2279d17cf5ca3b23e85fc6033092cc0bce4cfb62d433a4905d42940028c4075704cdc0"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/my/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/my/firefox-76.0b4.tar.bz2"; locale = "my"; arch = "linux-x86_64"; - sha512 = "6c7223ec1b5f02bbf47fbe2649d954f3603795b137ef23e7b89a6b43851bb6ea020c5760c3e78c15188e0a2a794c44936f208aa13a64133d0275fc45a19cbf5a"; + sha512 = "a3fb6b26e2ef26b681240d3bc3b9e46ee164260e0d3b14d9541a041a8c0c3e8129e6b2f6c7995825462b3f9c423611fc3c7327725aee8aa3dccf571d5f178be2"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/nb-NO/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/nb-NO/firefox-76.0b4.tar.bz2"; locale = "nb-NO"; arch = "linux-x86_64"; - sha512 = "bfab99dec528554cd87d1fe6c1be92697c1505c8e0925dcc4cbca3b010c55c0790e9aa4d189c99e2f92ca4e1dff446fc3be1e5409ed1ca91b315c798a9aa8f0a"; + sha512 = "8f0a43f17490354a6f3a800e069dcaccdf3c8acd99a2133e5cc65c0fd8ee62637967ab528dc0fe7b992e35a69e508db95b30c42375c5b8d5268de153169caa81"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/ne-NP/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/ne-NP/firefox-76.0b4.tar.bz2"; locale = "ne-NP"; arch = "linux-x86_64"; - sha512 = "9b8916623c93b78855c13d1d6b1fcd65935a23d43b5477bc385f2afefa2bac083b581b7eb8595359be907315083e1744f3f338b7f058a8a291a8925d83021cff"; + sha512 = "c7379020b8800e44e18a3beb98729a716159d8a4e9b19556aaee935bce39a99ec629056c5a9fc40deced93d2947a1d360498c87fb6e9060545ac359774589912"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/nl/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/nl/firefox-76.0b4.tar.bz2"; locale = "nl"; arch = "linux-x86_64"; - sha512 = "c4150d0649385264413f61825c29cc187eab2b91b6522f03108eaf73b0fbc197d1004e422e759dab34d3780630de531e265eafa5b3ffcdd6c601909c9a9dcf5c"; + sha512 = "88b24713707ab9991dc189973a9077dba86833580edab2ef5c40641a55a34306fc27c68dc56baa0d84b30051f170aab2db89a4433daf5b14a3dc29d58c01f691"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/nn-NO/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/nn-NO/firefox-76.0b4.tar.bz2"; locale = "nn-NO"; arch = "linux-x86_64"; - sha512 = "1eec2afb9d67c6d6ffff3d94585b05fe96ffd011b99912ab20b4dc4bc0a7a4336080a03f58ddb48cca8575c94f7e312a6da620cc25c75222941d8503c3a5934f"; + sha512 = "55c9b1ad3b7f452de4357b423240ccffdeeb37ed8c1bf5b428f36e12337ce81de9c53f3a3fc7c5db1171080d07d8b62dd8cbc3c984730dfb39d7deef70dba46a"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/oc/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/oc/firefox-76.0b4.tar.bz2"; locale = "oc"; arch = "linux-x86_64"; - sha512 = "c5cd7d444c3ed35a49cc66553eee0187c97e867d2917bba2b490fea3272374d48ac235b313a8e9e7583a6e20c1f4430562ab7b428aa8a9e1aa280b0a357ba470"; + sha512 = "fda67181ce402948b53b37975e85803d34be4269e8668bd1446f814f644c2c6adaa1c01f097efaa68f6c1ed90e183fef85a838248102c5b2858039575363eff0"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/pa-IN/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/pa-IN/firefox-76.0b4.tar.bz2"; locale = "pa-IN"; arch = "linux-x86_64"; - sha512 = "fec801cf39e9d00a06e7147469f886cc6014498b13b6c010e3ba73c09ba95dd142f262dcc0aa84fff9ff462e2b0a7823957f41248545cdbff6e56e085cc21afd"; + sha512 = "dc29b7e1d0fe74cf8d5ddcee4b201e34e538e7ed0e9b1a6271957183c40aa07a978cc02dcd71eae546c4894f7d869938c312e896d84b9c966bbd8765bf407567"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/pl/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/pl/firefox-76.0b4.tar.bz2"; locale = "pl"; arch = "linux-x86_64"; - sha512 = "abaeeda6ea0c61a7fb325362dec9fc1639a272b144e0f5a534aa41bb56add7a33c1baf2b339945f1fdcd469a1727e1fc4d0ff954d9920a460081b41519f43ac1"; + sha512 = "e6730cd1d34b13a26f6e6e7ecd6c893ae49d3158a9173b4870a913a35c8ac743f26e7220a4c4b3a7e10209e2bf3593416da74b9b07ef27e91bd46ac9df833010"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/pt-BR/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/pt-BR/firefox-76.0b4.tar.bz2"; locale = "pt-BR"; arch = "linux-x86_64"; - sha512 = "d07b9827b4f570307361df5e04662b8325047432e8016b810b0898b71535356c472e937e5d3fdfd58001b68b10eb1d9dcca42113c759522dda8925f468571f81"; + sha512 = "4d7f7598095164a8784157f7fbf5e9a7e08be8cc66492dd2bb083002546675c725819281b1d46f3095b9d5735ad8375b083b90936b301c2b90bbd2db0f7ccf35"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/pt-PT/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/pt-PT/firefox-76.0b4.tar.bz2"; locale = "pt-PT"; arch = "linux-x86_64"; - sha512 = "787565d44ae9a44c09e0a342d53b395466cd4bb82939cb6f0d1177659441c24402a7837b92e9a1036b18faf91714925274ebb3a5062bd4e7895099ff1ed65b26"; + sha512 = "6c929036a8acaa3bcc0e7fe824b6d899abe06cfcfecc0a382db722ec139969f78789dda53432d14640d538648237fe3c93e532c035d81c3ca72023a6800f0ede"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/rm/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/rm/firefox-76.0b4.tar.bz2"; locale = "rm"; arch = "linux-x86_64"; - sha512 = "5bc7abf66de4bc4f98b020141dacf4bf1949549f3967211f2542a5148535994fba4df11d054a1439f4b80e04ac180fc6b88e5fad634838dc27447d6a9de7ba62"; + sha512 = "f21aefb4ca321533b46c550421db84094a5df593f6d77a6e036d25284dde0394c317bca12ac1ec45f04b6d16cd94cf12e0c5a3f6f43b3336e16f6ec0f6317e2b"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/ro/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/ro/firefox-76.0b4.tar.bz2"; locale = "ro"; arch = "linux-x86_64"; - sha512 = "20ffba73c479aee7e2413ee1eb10aa37adae41ad26c0cb2747242366847c5771a707c008d7163f9ca11fc32626f67b468168ef746cfca8ac0c7ad801f9751a69"; + sha512 = "598376640d64d6a882653adb0a77164267ca694dcdb1a87024591393e209df516df891e5fc548edb2cb045901846f898c203bc6d08e56792341498fdae64a0a7"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/ru/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/ru/firefox-76.0b4.tar.bz2"; locale = "ru"; arch = "linux-x86_64"; - sha512 = "bdef494dd866170c693f13f715a7b931069bf8b025ad729ad898354ea168289ff7947707310eacbd8a4059b59faedac3bab845116b6e6af8bb1af22f36bee17d"; + sha512 = "d3d45abfe074d85c992bd74b622387d738d8d19bb4e994669aef9b63b15e9de0a9ffdd0349ff9684380a8797dc23934e2ddfd7d54438b5fbd9c310a1a421ac6d"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/si/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/si/firefox-76.0b4.tar.bz2"; locale = "si"; arch = "linux-x86_64"; - sha512 = "51cb393536e620c83c725736d1f4cc6744a10453dd430163dd6826566694a728aa3ec7bc15b5ce92c01b1a09b451d8fd4750c4a838e0c0993476e0dc0b8c064d"; + sha512 = "c7cdd65c9f7404146101c265e79ccd33554b398595506acea531beaa022e8f64a8ab62feca77c94a355cc86ade99d6d470818b84c9dac80ca143390ec3617873"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/sk/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/sk/firefox-76.0b4.tar.bz2"; locale = "sk"; arch = "linux-x86_64"; - sha512 = "c39f1527d1238f78c24e1b1c2ade7808f70be6ffbceac3367bd252ef5f333273c8b35bb9ff5434cbf2191fe26c80f63c141900a9292ebabb6a51d9bd70b8acf3"; + sha512 = "6e7040a36cccebee23671247a150fe3be0a0b7c831615c7c65d5aa615ddf740c94cc2c27418e7aac8eee136c9e829b3724c767e7be1c88d001d44dcc7ad9ba06"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/sl/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/sl/firefox-76.0b4.tar.bz2"; locale = "sl"; arch = "linux-x86_64"; - sha512 = "67ec9894f56de39ca324325add1ac92423611d1d158353cc1c90050275e792706b0cdd3ed1a911870c431f96e73bac15d8a2a542af2271ad2d17a445b3f51ed9"; + sha512 = "bac64f281f57da938e1acfecdfcfa69dbcca2b1b5f923e92a5a01aa0f706a40db34dd563dfc19b2f2cf4eb3d3216c78eb1af9001beac4d3f387401f442bbe6a3"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/son/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/son/firefox-76.0b4.tar.bz2"; locale = "son"; arch = "linux-x86_64"; - sha512 = "41af46b52cee6d283a1908987366950584720322401884c9b10cb24bf3a1f897ffdc8805a63e42aa084600c638b31f985cff3e9ebb504f66573b757690d00254"; + sha512 = "1f0a557c16baef46717b448e84b5e5cc249e706a8ab9f4fdfc1b0ead85334beed931fcb19484f0eb796946638c09342bad52b8c0b93c8a9f6eeb71e7d96d0a2f"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/sq/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/sq/firefox-76.0b4.tar.bz2"; locale = "sq"; arch = "linux-x86_64"; - sha512 = "8b8dfe1b1370c7d20981688d069df16d1e04cd215cf183955ee41b6428de75f58479db8aab0313f80a108b3591997dfa9120632a7e11edf6df2a970eea18d03f"; + sha512 = "7e996dccbaf10e76939b018c1fb656a42691d2f9b70bd8d018b2767cad55bd34c1241e0dd4a738b7ab503efebbb17b8ae9353a70fae296f0fbe3549b4071a9e8"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/sr/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/sr/firefox-76.0b4.tar.bz2"; locale = "sr"; arch = "linux-x86_64"; - sha512 = "a85fa87b55516c137433b5f9f196e2148a273f5dc1d6a76eb4f4d43fe9a868e13e0fb9c53b0b6ddc601552f7cc82450dd972b1da0be80ec196f9f0b9e1049329"; + sha512 = "6cfb8e0e55a61bbf5b74153503ee71fb2851bff5905c68e61adbe2501d7898f45014e7b20073beffd2b02c0f51d861b5be8473522a42acedcac463e55998c959"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/sv-SE/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/sv-SE/firefox-76.0b4.tar.bz2"; locale = "sv-SE"; arch = "linux-x86_64"; - sha512 = "39c67d5532df355157fd6472a6a7be26fed7356afc02b1be41da402f7864d39966bdaa4cf2cab5e5970d40ae047a0d0ba1db2c3d683855808114a916a55b959e"; + sha512 = "88aeb01a8983a482a0e984d95c40d737f1fa89e39d37f7d5feb5e246c25a39f42e0cb99a8d3b8f7da001854d60cc370cc3f62ade04498e6d2f9817ccb869f312"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/ta/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/ta/firefox-76.0b4.tar.bz2"; locale = "ta"; arch = "linux-x86_64"; - sha512 = "2927aff859647cb79334b0d39d76e3a78aea8556ba976abe895412016cdb86119b65fc9ab63e4e89c9f69b0c50f5c3eb6cd700da38e1570e6cdab385c4eb0a52"; + sha512 = "8e8dfd8a3a0fab2528ffd237d6ca83c3fa41551be79e2d85fbee9766731ff53345f912af6689b336db7dc8467a57b92664c0981f5c660217a8deacdb2b350408"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/te/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/te/firefox-76.0b4.tar.bz2"; locale = "te"; arch = "linux-x86_64"; - sha512 = "d0a33df588d51fa495234b7e2c443acfbbd2d21bb50616445b35cb7d7272774228cb1c7986ac1169527e691cb6b57009ee9ed06d9040546a57807bad3c06d229"; + sha512 = "43af76e66b26af3736c373a54b2bd03571257aa819e33b7ba40659dd7e5f9e7815116ccb80bad66ce5a2bcea4d9130a07830cb72b70624e567d1b9650dd31c4c"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/th/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/th/firefox-76.0b4.tar.bz2"; locale = "th"; arch = "linux-x86_64"; - sha512 = "9aeb8046db34e354b4e52b56cbf3829aab909a8330012025b52e62fd4d73f2052057d4a0611a3aff96c5e8e67e547f1a266a1c35fb1b9384e8ac20ae32306cd2"; + sha512 = "c8ff860ceb0176dead8663f5043ff68865a38ff008a8a110bb37212afecc57042afd150c35c0b39a56fadc04479b95494e95f966c79a789adefb295269420222"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/tl/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/tl/firefox-76.0b4.tar.bz2"; locale = "tl"; arch = "linux-x86_64"; - sha512 = "07c9a44489ee171aa930d0cc5acb1ee6773af6226f57593ef62e85163c941dde3f10d2f3cb0debdeb6762ed91834f9fc3882b0ee971c7ea73f26e1d85a14444c"; + sha512 = "b6d313bae860d3d7449eec5527be23a8cd148a580b416bdb2bb8760c2c5996863a31b175291cc4682d574635d3dfd35e70230cd0fc7933be78a217092ebc0c64"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/tr/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/tr/firefox-76.0b4.tar.bz2"; locale = "tr"; arch = "linux-x86_64"; - sha512 = "3a77e7f1a51d2ba6c0d249f57c06332adbe50da384e46bbb88947ea5d6afd32b09758e47a9e658aff193bcbe73f5c4513e1cd15c0eedc2671bc9d49b4b910232"; + sha512 = "42b3895f52de7c7f332f337ed0dd3ad108c3d41cbce8a6c3bfc64d4041266bcdb240d0960519e6157a5ee1537f3fb50fac8aec3bbf89aff0cf1a4d99fde9ccf8"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/trs/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/trs/firefox-76.0b4.tar.bz2"; locale = "trs"; arch = "linux-x86_64"; - sha512 = "0ee6aae966087407b48d74ad29a77d428cf3cbdaf17baf9972954a6a256d4ec029e3d8ce4bfae8908ac55bebbf99b4523e23d3b7fa40fcae25749eab6709db5c"; + sha512 = "f4982e28dbe0f5ffb9cdb5038d230f7401c77c368e6a1427018ea4e085bce534c8deee81b30a8b4f1b93d48baa0298d6d74720cfc0667f0c9555eb18a6746e26"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/uk/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/uk/firefox-76.0b4.tar.bz2"; locale = "uk"; arch = "linux-x86_64"; - sha512 = "6f270bd929a336fcc519158fced67a62b6763bfc77a11ea53b60baac75bfa91c63127bcba6f2bef032a37d54fea4153d7121dce61adc0b1c183a4cd93e80da59"; + sha512 = "d82258a4aa12e64e13e5e22948f9a80be1482fb59585e31ac5caffa80d0886af98cf14c122394f0978b5706e66e34b1158a0e19da213c49037b3f65683a39984"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/ur/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/ur/firefox-76.0b4.tar.bz2"; locale = "ur"; arch = "linux-x86_64"; - sha512 = "02f2f5205aae0245833b48ff9241aa5130821633ee3f74be367b90536a85e33d41dafe9a585f531a550e0e795dafff74e3e0cae7050593de0d32489301559131"; + sha512 = "527296db4c495f09b66b4898e6b04f496ae202ad23243de7259715043ac026863ce8a1c849493226e935dc04d04f528ba9a7bd4e9498ac36b2215eba118dace7"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/uz/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/uz/firefox-76.0b4.tar.bz2"; locale = "uz"; arch = "linux-x86_64"; - sha512 = "642652955f0cd1882b213dcc62a3931c90043a98d711136743f73aef3f325e1c09683849267d774a070bc474dc3332c5d1fb1678c8616842085fcd895dfaeebd"; + sha512 = "4a211cd2c988c7bfaa0ee28b2703d084ac17331263231847c23e210630162e8347539c5103fad19638a8abfc2bd2c4d0b08dd3d81be24d248d685dc80831f761"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/vi/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/vi/firefox-76.0b4.tar.bz2"; locale = "vi"; arch = "linux-x86_64"; - sha512 = "37d26761b42c676dda8f6007b95f2c598c9d340958b86474c9dd655415fbe41fd6d4dad9e7205aaf5039c7e5746a6c71bd5459e0660b1429977d99c881803d8b"; + sha512 = "1d445fb767d74fe9d242722346e0475e6ed18c0d7110cab12596265e68916dc7f09017da7a2fca79b249c3da7eb140a13377ae4fb6c69a7f2f0f55198f705f23"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/xh/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/xh/firefox-76.0b4.tar.bz2"; locale = "xh"; arch = "linux-x86_64"; - sha512 = "35013aa94ca7b4bc02db1d6bd953d23f789576f29f3cc8ae10ab1ac11aa9db4c633e21d73d49221f2ada74569d3c732a02ef21b23eef3e977ee9f46e2b3fc90b"; + sha512 = "2bd07a9e4e4f4bc17765a06616f0c5449968c111430d82f2b506c316305b1ad417d17c9812642f0651cba5f32b4b3ea4330254ddfa2ea9b08f2e980348f4bc39"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/zh-CN/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/zh-CN/firefox-76.0b4.tar.bz2"; locale = "zh-CN"; arch = "linux-x86_64"; - sha512 = "150a697bd5a24edbabd999a1f4a538d1937caea035a9e50e55aec6b40a1c20bef94b5d8bfab368711af84b59f94604be0c8b74cb37d0248597a5f5c10092a81c"; + sha512 = "f0274b0bddf3ab7b69071482aa3be4b7ab712ed78c3f5f4aa51b64f1ba8c93408b64223c73139a4c4fe186d7bc0b69169d98c9ebd859c1c8881aeaf8050a1eb2"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-x86_64/zh-TW/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-x86_64/zh-TW/firefox-76.0b4.tar.bz2"; locale = "zh-TW"; arch = "linux-x86_64"; - sha512 = "003065b656337da643933c173d7bd8dbebd74cc203832206ca5d9bbb63d60a0b44b002d003951aa810458df19a74f45148cb81489e7f059a07c14082a9a61dca"; + sha512 = "973c4d852d71cbae5430afedf33adb1cd143d2e333e06cbe697400c1ee2ae30c6e8361f78c99e131917150152b2fc30acc2b5cb274147ec5badc466c7d3ad67e"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/ach/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/ach/firefox-76.0b4.tar.bz2"; locale = "ach"; arch = "linux-i686"; - sha512 = "5b9ab917b51a25bb9b0f640c842f550e720f23a4afd1c6bcf089ad7d09453599df63e364d74f2caef63baffbd3ffcafdc9ec46dbf5da4f88100a8958eef0b763"; + sha512 = "7ce4970144e5f1d09daf747629b737567bf9fdacc21f5477ecd176dce714a7b9a8a22e195d772f47ea9bfe97c4c8b1bfb515aa785786c47c2c070f58ab02376c"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/af/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/af/firefox-76.0b4.tar.bz2"; locale = "af"; arch = "linux-i686"; - sha512 = "797dbaa4cb4dfb2f02b20215131efb4f24c4b6424e330c7f185f8f208e872ce8104325b6fc1e03bd86bc52b865072c75868c12e74cfe724f551ff3496eb1a1ba"; + sha512 = "33d364d036646bcac7e6ab694fe180a548bfe6de420fe1a7ca684177da8086d70e1264720e508251163819e9bb59a54e2027431056e4c75688a0b587ca5fc010"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/an/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/an/firefox-76.0b4.tar.bz2"; locale = "an"; arch = "linux-i686"; - sha512 = "e1d9a378e0d7810483e9f9848ff6e765f5c10ea2c6305dbed31e4cca576c780dd3c51154352d2de047af820c9ddb6ab4b1209385ca25440415539a7ff1061bcc"; + sha512 = "46b8645a1148b0a8d2c8c2dd5baa36459fc9ba4504b875c2f0252cff8202dd0a1c45cbc13422a2d36650db3e07e5f8ecb214d74b14dea728f76d721c53bf1486"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/ar/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/ar/firefox-76.0b4.tar.bz2"; locale = "ar"; arch = "linux-i686"; - sha512 = "aab04ed5df3ab564b503f13b13021a32f4c93a80b3b3243b1402ed67ab1e5fbb7015895b57e25d07914e4b9394cab92aa6fc929f36c4b92d2c973d2b08a33f71"; + sha512 = "cee1cd38ea9fbb4151ef7a2f5df2f67a6feac721ae6bc2ca580f933685f71cc25062c9f00a9d25402ba63249170c1357047248488d0aaf65acd685715f97c011"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/ast/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/ast/firefox-76.0b4.tar.bz2"; locale = "ast"; arch = "linux-i686"; - sha512 = "9eadf148b729adc3e3bd1f8d9624634a05d2f11207f16bef3023cc264720044ec08f6699e386e54692a95925a6a72749941ca7a3d5022e7b6341db7369ddb460"; + sha512 = "4d34d3f28d1ac26e940b8f335469aee541358c19ada123dca3b87d420d7bcef8ba430d02b2445834cf495660faa4dae3bd66e0330f15c43170bdadb63c87be13"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/az/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/az/firefox-76.0b4.tar.bz2"; locale = "az"; arch = "linux-i686"; - sha512 = "4b172bbf812bce8efc001bcd113fc2314225c4ed3661f907e40bc4dafc39b7c15b6909e3b1e406cebbb7d5b0b353d8398a9a177c6f1c39e893612d9e8512b918"; + sha512 = "ceba1c862b0610e67053c1671907d1a1f80eb381648349340c18169c0ef6d7d6d4f65a7476dda42329f7a681b1d3b3924d0cd9addb7c5117a414e492392c208b"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/be/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/be/firefox-76.0b4.tar.bz2"; locale = "be"; arch = "linux-i686"; - sha512 = "ca921d8abdd24d7eb85e3cf32984db6009d74d402d0b0f48557afc42037700a47ec40855ba5b4aa85c3a79b4437b5235ceee3889411325276c8ade11adf788ea"; + sha512 = "7a6fb8b6ad17fb89796d93164c39e8e446af972dfe14153a75495dd9aaff329dac58d708ff4f7c85ddf8a65cc441b71d07482e0eb0e240552c7b50f03f3ad463"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/bg/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/bg/firefox-76.0b4.tar.bz2"; locale = "bg"; arch = "linux-i686"; - sha512 = "acd98884f4299bb95ef3dc46331a0257a83e80094b4e6ccd9ed1f82fc7c2b11e3915cee83af7cd38d73d7dc3383d1b9b241f82a075a106b58d9beca7103fca12"; + sha512 = "d846ed4044aaacf02e02078d00f5ecefa59f4f91ff174526e96597aa73a46f4ea4d2595f39e5ea17583ffbe9ebc046265c73a5dca7155ea72814ae4ca7c697ce"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/bn/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/bn/firefox-76.0b4.tar.bz2"; locale = "bn"; arch = "linux-i686"; - sha512 = "598c5269ef854f0121cfc425df329fd7a97c1bceffd3ca8f68d9b1dabd653a74621a410b7ba6490efb5881b9074889fa11d55552933b3a58d467d920cc09067d"; + sha512 = "1deeb8bd99d8e3c86ea16b08583dd6467cdc8b255f99c0782268d5319e9013910eecd121f0ec770b53189c488a239966eb5850790e5c0264351fad8ba9a587b1"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/br/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/br/firefox-76.0b4.tar.bz2"; locale = "br"; arch = "linux-i686"; - sha512 = "b2c2d3a51286daf2ce41e076c79c466aaf631cf3aa51a6d824260a228e4b160f7366ddfdca75c87e7f4502be8306a985fa23a5d7e923767514e127ccb76cf9ff"; + sha512 = "8f8553f1eac30e497f124e5407b1658691e8456ca0d2307e4e8244024c6ec6ef4695644e169d840f832b4bbfe2ffa7dd0b178bb2b9500ceb7a7b515dc8d68af8"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/bs/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/bs/firefox-76.0b4.tar.bz2"; locale = "bs"; arch = "linux-i686"; - sha512 = "5b972334c648b9b90add5f92b96d3385a677b56722c0b7340299fb81a5ce16169de3339407d2327b4f440df2c137e486fa73307fbe8e595fae47a64ce4bce59e"; + sha512 = "129207de0d362fccb2dcb82ec62c0802fd8fcdc5fbda638c7f8c2d3bcf38c43a25640b20bd118efaa9dde93a2b305eb8b194b38da5c97b42bb272b732a1b1597"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/ca-valencia/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/ca-valencia/firefox-76.0b4.tar.bz2"; locale = "ca-valencia"; arch = "linux-i686"; - sha512 = "7e038cef24ae848c304286a9c59cfaa70ac300720cc03decb8253b1986606419171217fcd117ba5f9e201a198ba0685e34f9edb88584559b1879badcc642534d"; + sha512 = "08e733d738d1e4a48eb8493d7fbfeb14a4fcd3db41bc0d39d7440a3751b9bfa9ef2b1c517efa88af649902464fbb04a77375d8eb1cedf325aa781710c704a1bd"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/ca/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/ca/firefox-76.0b4.tar.bz2"; locale = "ca"; arch = "linux-i686"; - sha512 = "e2a880226f67636a0c60409e48e48c858d9fd4c539df91005009598b92da1310302f3d6f097f475385904a354754e5128d4049dd369eb0ebc49f4269860f0e05"; + sha512 = "f9ebb1e5c03bf7a2e51e5f4228df588ef17f5d3aa406a1d1d307e49235a2b45100fa62d183878db4c217593f4d92dba3454be89cc80bd615bb3b8fc6dd471cfe"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/cak/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/cak/firefox-76.0b4.tar.bz2"; locale = "cak"; arch = "linux-i686"; - sha512 = "5cdd469ab037f891bc09b42bc53f62eb46183a4865d060388d73f386d4f57702123400ff1ec3a831b98e98b6d67cdfd3ad021e336c54fdc531f414bd23658f57"; + sha512 = "1d8aedf181de567499aa9455a819d31e657da1d5d437f67df0eafb02d7f846a79bbd7e030c59a3f2c1c5766f668149f97881d0bfe3a98394796fe21b628df374"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/cs/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/cs/firefox-76.0b4.tar.bz2"; locale = "cs"; arch = "linux-i686"; - sha512 = "a36ad27e7288448dcb3b36080cd2b92652c8d579f551a903a92ecc55cd82b0a1d33d6549cf183c95a0e6f3aeb567c378d2900243839ff703341f81ea1abe51cd"; + sha512 = "748901b2df6a1ab54dec6f5236fb4fcc2f762b5522dabc87b0e59890cfa895c9ad4e8d81662a9fbcf720549c88d4b792200ba1ae2a2f2e0819e9f183fb83a8e4"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/cy/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/cy/firefox-76.0b4.tar.bz2"; locale = "cy"; arch = "linux-i686"; - sha512 = "eb869584c63ba72e24ac53b0c3bfa972ca80eada99b88454a2311ed9583cf90af9e2744f15486d68741a3912cc8cf4208b4b93b445362aedae58606f7e6725ba"; + sha512 = "8143fe0b4fa7a26296b77eee23015df6eadc48bdae8ecd69fa1f731fed9ea7d2d544093c928641b55628c54e72ac48b974f6d2002bb56a613c745992297b577a"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/da/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/da/firefox-76.0b4.tar.bz2"; locale = "da"; arch = "linux-i686"; - sha512 = "7fb996c0ffd07e5a9e1f76754dea4c4f18e93299a036bea2293609d06da5b2902fe40513c386f41612c5b2878fd24ab41c7e73d568364dbd3ec9fb57f55f7a9d"; + sha512 = "2f9edd32302639e730ea4e28749ead3aedfee8716ec06ba4283e4401e1f6608870e26886b957aa758efc1fff52ac92087e95230fdfc024a062a0813c2a941e63"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/de/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/de/firefox-76.0b4.tar.bz2"; locale = "de"; arch = "linux-i686"; - sha512 = "d80152df53b9f43cdd85639c3d7c2dbb2f35262e737d4893ead4d526f1259e2971011f75b58e415901734de41ae72244085f7cf57ba2f17b9dbf7b64db2c5be8"; + sha512 = "a725ad54dc31276d7f58d122218d381fbbc3642853958315c04abdb4ed5eab917a81c903b6a72f324896442c87608296e98a12892c81774e53d674862ebb380d"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/dsb/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/dsb/firefox-76.0b4.tar.bz2"; locale = "dsb"; arch = "linux-i686"; - sha512 = "cfd2384c1b1ff24d9976efab37c2492bf70ab8ce86b873497e91378bcfcdc09e9a6ac1b8f3993adca57f86ce697a9a5869708114c7ad5b58531093eabe991255"; + sha512 = "a5d06b692b11f42da8465f787eace49d2ab1c5c9b575f3471042f2db1c499cebe1b3929cf131a6451cfa388cba4cb995fc51f3a30059a76879db9f78e8e1bde7"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/el/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/el/firefox-76.0b4.tar.bz2"; locale = "el"; arch = "linux-i686"; - sha512 = "fbfbf0acca8c0d27b11572b2744b70ef22143dcc1788fbfa864052ab66fc68c2d9bb3a7cd774b54cc0f41324e6335cea3f9c259f6bcfbe4b9bf2925b17b54320"; + sha512 = "92fbea5af2bdb838af9c13d6938eb4f977fbe867dd90dfd5328f947917503feaeaef63d66cb7297aa049f486056481cc2525e47d7e5fd994908041924b1d88df"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/en-CA/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/en-CA/firefox-76.0b4.tar.bz2"; locale = "en-CA"; arch = "linux-i686"; - sha512 = "1388f7b672da7ea79a01b15f3d356aa7120be45a9c473e996a7d4caee4f0879e9ca702c1da6cd55447076d7ef4e2aa46f1038170a2f9433fd533166fe80e14d6"; + sha512 = "03ee4474802ee0971d4d1bad6814be66a5e0bd8adb0f9fd1c7fcf748915cfc0f2b14694135db6011216a114b388cdffa3c7109e66b834bacc7e28aafc0d79a2c"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/en-GB/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/en-GB/firefox-76.0b4.tar.bz2"; locale = "en-GB"; arch = "linux-i686"; - sha512 = "4e0ee5b0689771d715e4a381e72a79ef8a3457560500f06101c7d9f0563c81913778743877f63c37c4c74314248fb88585c503dc57b893f78c09277c39eb0c4c"; + sha512 = "e62f4de36b5ff1ec5d934d514c5257b2614e890efcc8e6e924116494a029c2fdc40ad90924920dfebdf286a63cb61d0bb64ba5fca3e45b4852b0633f3f74bd67"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/en-US/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/en-US/firefox-76.0b4.tar.bz2"; locale = "en-US"; arch = "linux-i686"; - sha512 = "f054b7ea2361c3eb933405362fce21e311b77d121a80bb24ea09f41d47231582715f3cb160182161fa63b5028163bd5cd35bab5fc2cca8729c5aee15d2aab981"; + sha512 = "bcf2a75d906ad5e42cb2a77c210cc78afd4c722ecb686fe256dc14daeaf9794e7ecae9668171c6d028aeab0e34ddd41fc65648d87e796e57a9b3ecfd33397361"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/eo/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/eo/firefox-76.0b4.tar.bz2"; locale = "eo"; arch = "linux-i686"; - sha512 = "6c84e22823ae465c5346f29b8729e36dee1d3846affa60be87ae2b479f114ca1e911a2bf2d6ffcecb2a8097d3e4689810c5afea27b419b0f0dd1ca830a83f79f"; + sha512 = "64093337bf69f005ed5db33d1e06e0c65011c53e1f392026990744e9393f6cfed0a602004eaec16b3e5841f87614a7323ac64b12f0099177f793c2fa9e1fe53c"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/es-AR/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/es-AR/firefox-76.0b4.tar.bz2"; locale = "es-AR"; arch = "linux-i686"; - sha512 = "65e37a5cc802e4677344f4b2ecd2451cf55656d3bcbf7d155ea7e404090c5c2375d68ef5c13e30817bbe56c2d4a9de6c1d82db2b1533ce4861295bcc39451585"; + sha512 = "820e8ca43a53d5224b8f61e47725b775cc2ad4c15d816802bf16609ddba1374d15f1826d67872db16ce071454589b1dfa224a9cfdbaf44722baa5c8fb4c7c07a"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/es-CL/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/es-CL/firefox-76.0b4.tar.bz2"; locale = "es-CL"; arch = "linux-i686"; - sha512 = "cab5c05b8711973844b7deaff638abb9d52aa3fe1e533d318d0f48b2ca77434e6e7295531087f9def4bb25babd21c6fb2b94fcb4ca586f6cb5a37851c31559c7"; + sha512 = "93cdf71a41b7c7d615199d4111892a467afdb861ff9bb374cafaa7f802a026d7b2618beaed80e5f078a0751a1ba0716bd866c683d8720f243228e976c816b865"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/es-ES/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/es-ES/firefox-76.0b4.tar.bz2"; locale = "es-ES"; arch = "linux-i686"; - sha512 = "eb8b9e1a261a2bb89faa4225bfb2edc5d28b2268030adfc7d9ca67a8ddc27b850a99907e6cefb522a92ad399d3faf177a17ce10453f2d0a01aaf647d13c32641"; + sha512 = "d06a02148f2f87cb3f4b961a9d3389b2ae3cc6efd1d78a7132e8258dc4c86ffcad47055950768322a85dda62baced3516666330ce584be89e9562d1b306736da"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/es-MX/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/es-MX/firefox-76.0b4.tar.bz2"; locale = "es-MX"; arch = "linux-i686"; - sha512 = "d2d3505d8860032e396bda2ae1039987d8567b90c2a79e2614a47e97fcbcf3715078f1de078e43231100dd567b85023f36f269ea97a0badebc1418f70812a437"; + sha512 = "d7dd2306ff4b79910f1aa09bbd28e7b7e37e64d7e99fd1293e37a76ad6135edeb247fcb57102cf002bdd43361451327d576a1b58def5c99fd09a6e68a26e369e"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/et/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/et/firefox-76.0b4.tar.bz2"; locale = "et"; arch = "linux-i686"; - sha512 = "288608642ba84b0247db4ea2772645975f1257a79df51c979fbafa07afc554d76432afbfaa77104dd9a25f0d418b4bc5a69c1660b76debe58b18fa68297e5490"; + sha512 = "4258156d27a720cd68bc74b70618e88014faa00360e055ea6a254154b5929860f27223b89c460674feeb1e1542dc4baae1b81369e9382c455d8bffee8bbe0585"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/eu/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/eu/firefox-76.0b4.tar.bz2"; locale = "eu"; arch = "linux-i686"; - sha512 = "cef1f54aeb82de57be4c3cd96153d4535c64722d26084919237e67957bc140b66d1ae014129d8e4ebb28d37f0c322b59f71a64b0be4093e2a90c1f5d7fb65deb"; + sha512 = "822401e47e96a232a411655367299a9b64aeca133c0eaf18a0d9771a0a8f5f15c761c7889b815339cba391027a807a490f2eb8866e8f81883935249fe1907d36"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/fa/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/fa/firefox-76.0b4.tar.bz2"; locale = "fa"; arch = "linux-i686"; - sha512 = "2302fd2b64b841e7a952423a1d3efd34bc1b4234fc736983042fb06a602b57ff45b7f549cba0fbdc0442183df091ccb04e83276e08d89aa492fc4c1d49d952e0"; + sha512 = "fb498b47f79337f55835a343a6141556ae3119095aded17611b315e0ac4206d92774737d0a149b71c62c1e0712110a8eccd18b23e024d9aeda4a2540a0dbf9d4"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/ff/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/ff/firefox-76.0b4.tar.bz2"; locale = "ff"; arch = "linux-i686"; - sha512 = "518c83964718c98893b16310caa044506713257f0321b5131fe4a8741409489a047566f4215d8df50824debbb53594d24072aa6a167285210b392ff1f8e081c6"; + sha512 = "d03acc6ef34f1476fbfc5f398a21cabbd47c5c5d17c4d2ad83e0efaf2262deefe413032d6780303ce908b7707cb4f3053480c1f880a28cf15f105e7bec89f552"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/fi/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/fi/firefox-76.0b4.tar.bz2"; locale = "fi"; arch = "linux-i686"; - sha512 = "34c2ad202a616067e298a983bddc76087d387160bf67f9d2ca7c2aa54b3eb245e968055b15f57309217e1a5ea164b6af93d0c3467600a5d1d689e6f78a4bb067"; + sha512 = "9a4f97c1d41b256e5dcda088de88066c3f2db91c5d2c5bbd676c3f1081ef87873d68aa4cdaaf55f12b7fcfab85649aded56fad65a7a05322be794f463da152a2"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/fr/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/fr/firefox-76.0b4.tar.bz2"; locale = "fr"; arch = "linux-i686"; - sha512 = "3fa9dedd958b9f3cd70fee85d0034b8663e863b18b411122d3fb1f6beb1566efd92c63a38560972425afeefc4480b2c4dd86dabeb197ee7c30694b8e9c3ace51"; + sha512 = "e8eb90ad95e9fbea466d448abc4454bc6ab68b5f60d84cc74d1a7a8da8f6bb9a8837b2542194722ac85589f81bd6da43f683416b9bcf78fcd8511f9274a88e10"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/fy-NL/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/fy-NL/firefox-76.0b4.tar.bz2"; locale = "fy-NL"; arch = "linux-i686"; - sha512 = "1b8a346081dcf59d42140edce2e35dd4008c0aa6be326274aa2cda612bd9161bde5f5339a06af747b9f1f0eb5dd0e77113543d948c5b102ca4428cfd9c30970a"; + sha512 = "7eadae35b7f45d91031a7c2984fa0f9e6dfc72ea3a5e53d6c0b2481106ff095c4fcc3e9398a06fe5c2f1a036074b03bdeefef57df32393a39209cd9aff8d5ebd"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/ga-IE/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/ga-IE/firefox-76.0b4.tar.bz2"; locale = "ga-IE"; arch = "linux-i686"; - sha512 = "7cb658cbf2d33d9ae42724de85e609e6afa2417666625e1baf26017a6e5225a1dc240c457c16f8c612699eb39a8243518061418729c9d5c18daa4bfe1561ae79"; + sha512 = "c9ab2805f65cdfbf5ef5ad441c675f3ab6eb7bdcbfb7575b3ca374a6e9409f35be63ceadf495557e29bac58fe368d4410b8ea2ad5d5a26c21a60bfe1f69b9f60"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/gd/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/gd/firefox-76.0b4.tar.bz2"; locale = "gd"; arch = "linux-i686"; - sha512 = "31928201e871c33c31521d8df74dd41e35860754389abcd130a5f8aaf63d8e24975217a09ba074405e092cb603a8b69b18ba89fbacd041a1aa553c4eb37401dc"; + sha512 = "7111c65eb5904a33128b6046c76b7936d11c09842b288f234203973c5f129e110fc58d1271482d719afc57479c8283010a285b890d80795cce2ea969272283db"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/gl/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/gl/firefox-76.0b4.tar.bz2"; locale = "gl"; arch = "linux-i686"; - sha512 = "6a92b3b1ad9bf08c20ca5599812141d32372ac15841c9c4fa0758c4d566b60d2e583fb43c65029a6ab85325a7efc77e03fd42c407ae4857e39aa0f486419c52e"; + sha512 = "0e19ad36251623f60f5d6bb8cd745339cff6231f2bda3f8ac5d87fb0de6b27b4da5fdaa727c34c058d93bc06b3ea335de6dafaf247cbb7bcafa2f483acb7a337"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/gn/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/gn/firefox-76.0b4.tar.bz2"; locale = "gn"; arch = "linux-i686"; - sha512 = "38fd36c04d627574f2dbb4f42169687f5ac96f838137074aad44de247830acc9d750489956917d8c7c0736e49dd15a9fadebdee0775926812860800d6a6ac2f9"; + sha512 = "9328e140e98f3e24057436e6e14eddb0d50dcd55aa1713d22f7ea4f9c8384ce077a61bb2fc9191c948a78cc38e9e8b08188bcc792e9725ecfcc91a5651fac290"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/gu-IN/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/gu-IN/firefox-76.0b4.tar.bz2"; locale = "gu-IN"; arch = "linux-i686"; - sha512 = "5fefefff9fb2a99f5627dbf3be38ca6787bd46731f273499702698c1ae626b7a9d986883762557269b89d2385a70f83b73b3f40107b39ae9e761a80a79100363"; + sha512 = "64cbdd669d1641ec365d4c1aced98d067cbd3a21124ec10472b3db2105db2774c283919652e5fa6c35c5548d8b8c1db055dbb7ec1c83ff05ad369923a37d45da"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/he/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/he/firefox-76.0b4.tar.bz2"; locale = "he"; arch = "linux-i686"; - sha512 = "4d9a0aa5108a3bb649a762be28946256021c76f83e450229a79ea00de01dea54f2571c3774cfea35cfd9c574c7b97676a8c6a97eef83ccdc8ed37cec9b0e8449"; + sha512 = "16c90f8125882063f4b6429ec810d23375632be9a34a5ec4a3f7d95866ea79d5c59f454a294a4ec78da2eb1a4d8a9dd9c34fcf17f0407aefc9cb8f25a2c8204c"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/hi-IN/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/hi-IN/firefox-76.0b4.tar.bz2"; locale = "hi-IN"; arch = "linux-i686"; - sha512 = "ab556799360fb9e93921084d05401057a22e897d49c01b277369c66b7954657521cc1abf9bbfe2fa2b9eeb200c7e5a8dda37278d90a2bba4b33ce20adce32621"; + sha512 = "31084eac35a7d579efad4ccd8b269c04990065a4a93686d7acaa65d6d3733183229598c173a8372ad6f78907c57a7b65f63a27187817bb9144483c237cb06de5"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/hr/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/hr/firefox-76.0b4.tar.bz2"; locale = "hr"; arch = "linux-i686"; - sha512 = "96c1ebccfdf96eb8961a4e40ff7e9ad8e810e58b6fc9315a0ef6c0cff0cb6e8f7b94e22738f81deaff17d0f61c86a121ed50002a0b2e5507d1084c6c1b3d1ad0"; + sha512 = "de1b69cd8b3fcc52275f6ae8a1b2fe85cab48c940ec62c8b667ff9c6ce4d4f32ff51d2aa46d3769a421355832e165b88f3abb4ef89329ae797c0abef4fed130f"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/hsb/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/hsb/firefox-76.0b4.tar.bz2"; locale = "hsb"; arch = "linux-i686"; - sha512 = "03655bfc8c04229f525712ed9c23cdb481d41e7300d5c6bf983851968e9d7d249962cc73f54972f80c71a12fdceeea1209ad33180276c94948e0df9b996649d3"; + sha512 = "7ecaa9b96d492165a155821b34401e218a507fa91ca3e9f72ebdb6fabcaaeeaade4c4ea2e0cc2e0f59a217575d63931a9290c03644cc89fc7c217262e13a1935"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/hu/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/hu/firefox-76.0b4.tar.bz2"; locale = "hu"; arch = "linux-i686"; - sha512 = "1fecc903e4e3cc90cdeac3629362b7399b5902dbb66e8e91157721c5ee1cb862d71b1456c1688dae6b43afe8990508a12fc3cf1ec8ca708cd53ef36f86ba9772"; + sha512 = "4f80a18eef58ab3acea954a48f48575b9a152f6204db85bb30e423a0b73013f1a10c71a76b2f3add3c03fcbbd87beac7fa510fc6075e23a5ec773db67e8358e3"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/hy-AM/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/hy-AM/firefox-76.0b4.tar.bz2"; locale = "hy-AM"; arch = "linux-i686"; - sha512 = "37d59c6006abb270cc3df2911ef460160f73a3013ee66412787340372b4d09d0ce30b91b2f733cd9e27a338e5dd79137109a7c3aad5f0e6119e4dd31f3d3e42b"; + sha512 = "7c09f13f31226705f63cbac2fd15d00d87dc16ad43839e0593d19ea7d69a40b22abf0d7297576b5574a7844d390c35af951fde2e33d80caec626b5370dff7300"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/ia/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/ia/firefox-76.0b4.tar.bz2"; locale = "ia"; arch = "linux-i686"; - sha512 = "64050b10a3a530e5eac3b5696eaa5896d061774d65de695bae4fee58043bedb57e63e707bd738433f719812909f754932e19488f53bcf4ba6f424dcf15b9a805"; + sha512 = "b7af42a5925188a25c5f3e77991c7cad73e36a01e5948d02666cae405a7ba1c30fc59fc62bd5e799725584a7714b4cae97a335bed677ce957bbf6fa92c8f5864"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/id/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/id/firefox-76.0b4.tar.bz2"; locale = "id"; arch = "linux-i686"; - sha512 = "7a24e788ebd46bd9ba8ff6ecd5821b59cf3c0ff0bfa4776ebf97f422f56c2fbc33d20314a7c44cfdc9ebe6ffd4ff4289c21bd5c363998a84dd40034caaffbfc0"; + sha512 = "2dcf6f549b08b4e705c4f7048225e1ca9c8b1ff8869a42482e78bbc58b0bf58bc7df8207d93229dbc8fcd5864a1d84c10af244f3d49a6651c514adfd30f933c6"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/is/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/is/firefox-76.0b4.tar.bz2"; locale = "is"; arch = "linux-i686"; - sha512 = "1b4135eddf550da0b871f54093b3c1e888d2705a370220e14b07ef93215485878d6e38ca11559bb09e8acddc27fdaa3d105d5ddd121f2f9220c32d138eb74fc4"; + sha512 = "9500b5068ae3f72f21765cb1cb8ba35bc07d813fa6301bccdee917c00daa9f5cf2be70eb3cb2faa3d363ad3fddcefbaecbce1b7118251a9e06abe80bf9a30cf5"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/it/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/it/firefox-76.0b4.tar.bz2"; locale = "it"; arch = "linux-i686"; - sha512 = "cdeb4786246bdab4b585d8172f5c8b5446746a5e6283b8e5deb58a03742c03b46ec0a3220550bc6dd96d314b29d50495b2d00764de2f3aa9f9accbf397a22c63"; + sha512 = "fb8e9abf309a8396edb81ae87ca4cdf2d84f5a9370b565f1b509ee64740f7f6fa1afc1a0eece273131ced6bc22996ff1a72e84a7d5aa09d2f607398cf03bfd39"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/ja/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/ja/firefox-76.0b4.tar.bz2"; locale = "ja"; arch = "linux-i686"; - sha512 = "78e336ccd4697a6e5a136b453c5fb26c560315426b7c3151fbf432ecb1eee5dc26dfefbb8924087d9cf197334cf1aa233b0f125019ecd864ff5b394b42903648"; + sha512 = "35be6d50c17780ac8174302c9b400ade8e7f7ff9e08d8d716ee9d879593c39c2aada3f49dac898d5004d7e5d9538b2e545db265011b1a11c06e1bbfa756badcd"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/ka/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/ka/firefox-76.0b4.tar.bz2"; locale = "ka"; arch = "linux-i686"; - sha512 = "44a973994dc3141f6810471e928fc8e516afe3f6998322cf431783d2abfcf42bf8fbef783d92e436445e6827a259c4db42a0e08b35ae76827007ba1df40226f9"; + sha512 = "c3ff5e7047c0eaa90ba765f75bde2e7594ca8e63ad8e3688f61573740bad234906b1e20137308be05f5173b4c01d42564c1d3a70609f012593406986fd7e5bba"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/kab/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/kab/firefox-76.0b4.tar.bz2"; locale = "kab"; arch = "linux-i686"; - sha512 = "758a861ae3bb91a79ca967787f41b24c84945e0cfea162633a6be2f105974c34a8f8270c32f76c4d754612641fdfa11261de74fd629c7877eec385789abfbcd2"; + sha512 = "3feaafc92c9f4760e1c87f2733127d46eed4a5986862b4b4aae8557cec6b21a95838bc5f768791a2406d8651430efacfead9ccce13ddb3e3b97529a4d17072f0"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/kk/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/kk/firefox-76.0b4.tar.bz2"; locale = "kk"; arch = "linux-i686"; - sha512 = "28a18c3a9476a90d38795f52767f33b4ef95d62f427788ce4f163526d96be48dc1dab1c01a443250a2773903a4a443be58a629de53e229ad8ebdc3f4efcecec5"; + sha512 = "96ed2598748c08571bdb79df888e5a3cd3ae0bab46e039e79b75531d8e23a9cf3dd2445ff51d1718e69d80dc54d9249c142c61640e2c202655183de4f87f63a2"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/km/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/km/firefox-76.0b4.tar.bz2"; locale = "km"; arch = "linux-i686"; - sha512 = "08320bc047430a28ce092f39b2836a3e1691394ba04310088857ac2db7478e2d44b2cec450171944e890a31a152483b0bd1900f2fec802cea7b9267ed6bd4941"; + sha512 = "8c6a66f77a6996b12498411edbf53d27b9a16c74eb74b586f5d1658edbecc18b427309b3e1e75e66db5a6f58821b5272f81fc01703f7d9e326318fbd4bc32bd5"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/kn/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/kn/firefox-76.0b4.tar.bz2"; locale = "kn"; arch = "linux-i686"; - sha512 = "578edc5e24e6e825a60f1e9164e1d6fd8af7880c2af5bede481447b247f62f3331040976e9a273e4d484ecce2c7506285db1fe98b6f20e395a1f3f1e251688a9"; + sha512 = "3c3c30b44487af9bc0ceed9d200b5d6a9692c6574c29eb93cb163a0205f4833801bae94d565b1853d1186ce6709f3f10043079b802af485ce19d6614a7e7ea2e"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/ko/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/ko/firefox-76.0b4.tar.bz2"; locale = "ko"; arch = "linux-i686"; - sha512 = "750f7060432b48ed206643e8212489a753d35ab184a6e40f2a6105c1ea4ebf07b93251c0f06770dde66c62eb7659e7778f784828dc8d7f6b994232c862f39330"; + sha512 = "833627797838baf083b46f93705ba5e9d1e25a562034efa9b72406b703b77fbd986ba443fe19b2204424a586e361bfecbd7af5bb25d656d34c13c31f007a6501"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/lij/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/lij/firefox-76.0b4.tar.bz2"; locale = "lij"; arch = "linux-i686"; - sha512 = "3e7f88af83912c3fc62c9ded0b90f805c5b28852432ac99e1216a7443b2c1c659b4615d94a97a3b825abd17bd3236ee111428df697f091e3b1f0b04c3e70543e"; + sha512 = "21b18f367619c42f637fd6705a73d41f70a64b3f129293b7af7c92f3a97c05536a2d79a23edf8d96e0ffb02715fdf6816be5dbc4c67b658202ba22a53a9c75ca"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/lt/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/lt/firefox-76.0b4.tar.bz2"; locale = "lt"; arch = "linux-i686"; - sha512 = "d7a41e5dbae8d742793c741c5c084581b3c5ea13238e00a39df8451f2639c48e22d42a490a212d151694bfab600aebc7fe40aed9b0ee06f953838b93bdb366e5"; + sha512 = "89063af404f2d0a4c182625c387ff2455ca987c15b824f88c3a7463befa4b65b487e9da3e0d0b1b7499975d5ac1c8104e64c03f1fbe6236b6f1c429e68d4b6bc"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/lv/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/lv/firefox-76.0b4.tar.bz2"; locale = "lv"; arch = "linux-i686"; - sha512 = "53a2010eda06c84bc1b8e0b495823301fb48f3580ee6430684d9f9180f1af95ebe15988e6a224f9116e96881805b4d927a8e95920e149f10562e7d549a477808"; + sha512 = "b4647fb4c7ee30bf3a1c4249779e46031681cde4ea457869bbb474aae05fef56dcf190b6e6f70399430563c000d41b6919884bc3cc44c212d12b7f763b411157"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/mk/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/mk/firefox-76.0b4.tar.bz2"; locale = "mk"; arch = "linux-i686"; - sha512 = "83f89a83d8662161d6f997957c8facdf268157f089291833f18a201ea7a0d32e36183259dc943d86e5d934cd90c96cece0862700494385fc1a40d2bca962599a"; + sha512 = "d2dc5d9b2a2fb97ebc9fa1e96a0fe878f5a9dc7795e702d19e93b8af7a48a33230516fa348097b1715503c30ecd1b9f372fe24c5f3cd335d2d83f9ce4962cb53"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/mr/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/mr/firefox-76.0b4.tar.bz2"; locale = "mr"; arch = "linux-i686"; - sha512 = "bc1b20c159ec013df6d2aecab283ea23198527427e2410e25b36f68369f373951c69284f90bb9f04775216ab65cc6a972dc36992d18248170a2f277c83d54a58"; + sha512 = "6ae482acb98e30a89e4cedb2b763f8931e1b2b2f5afc98b686a24eb3fab42e4731b46dcea4428adfae08a72d1eb442058e4c297958f93b6c7ee1435090ef828e"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/ms/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/ms/firefox-76.0b4.tar.bz2"; locale = "ms"; arch = "linux-i686"; - sha512 = "18e9e3d764377a00a534efd06d657655d99e8375ce307bb92fb4f0c60e00f759a658be8c04229ef523d3d329b5a816e5dec5c3fb70d561da4acc37dd0fcf24c0"; + sha512 = "aa18474baeb710c4322df1e1bd04e6bed566a8f53e8932ccf9abdca3b74fd33b1127e006d9997550b31e1db7d4d6bb86087208d2589a14b47614a9b49ff3002a"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/my/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/my/firefox-76.0b4.tar.bz2"; locale = "my"; arch = "linux-i686"; - sha512 = "54f1765cd2944071ddb39b6446dd5908f0ff8ad856952830d1ceb3b552e6c79e22ac771e47a3fa87b2c1a225fefad0e4e039ef4fa2142d24a78c7c6784ffa4b7"; + sha512 = "8041f361adc88462f3d1f63ad4789081f6750d2d78e063be13f770174fca48c18424422a8954ec2b1fda4d7be14cba964d5d2138ddb6a85d18c0b1e47d274e85"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/nb-NO/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/nb-NO/firefox-76.0b4.tar.bz2"; locale = "nb-NO"; arch = "linux-i686"; - sha512 = "8510fc6e7c7e343866eb6d9607b22c287e4bfb60690b8700da48e28c1045c4b02f4e9611f3b72bcbf7747cc24790406543fdc50078773d7d0e60731623844bcc"; + sha512 = "9136a922d582db8871f72deaf308d6da711b931b20a491f139e4d7b4fa95de0b028814765b84632d485727fd6bb40732ae716582a38bac59d30f709a02070cb2"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/ne-NP/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/ne-NP/firefox-76.0b4.tar.bz2"; locale = "ne-NP"; arch = "linux-i686"; - sha512 = "ab1a43e207a9bf653d6aac56df361980926fb45c0643644915b5e5a582a77f06169910154788ca86e9520ba1a2f10d4d5736abdfa12dafccb71e0b7b6aecc87e"; + sha512 = "41c6d2f49c1e08f7ea647203f6d5b94f6b8b8c12edd181b5865e13234fcc47275dff9a553a2609fb107e5b0f3edf0a1fbb5cbede97716ecf48b7a83a51b5d4f0"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/nl/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/nl/firefox-76.0b4.tar.bz2"; locale = "nl"; arch = "linux-i686"; - sha512 = "b1cde7378cee2bf1d9918fafe2254293fd3305bcca8817f94882c21448e6bdb5171d1534adc019a45538564f6286d4272a9955bd8b9ce48c1d2f778f7be6de42"; + sha512 = "3ca94e9cec360529bbde7cc8c713ce129e8cab654d2551babb91192485b04233932cac5e0256e2bcaa55fa34949116d1d207eb73acc41b1cb86a1231d939e880"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/nn-NO/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/nn-NO/firefox-76.0b4.tar.bz2"; locale = "nn-NO"; arch = "linux-i686"; - sha512 = "bd08e3b542b6da35edcf7d91f18a7cc6a0ed6d2f12c747a36cffcfbd1856d1075dc0d0fc00e3724a2b43e09e08167110020a8618c66211f0b55934cdf3aac757"; + sha512 = "2914d4488a847bccd7aa008d43a659d46cb06e377032c8d3496da32a2c13387b8dc33f21ca6345abe874a9c6c65464262ee4bbddc83dfaf6532ddbfd554e2b50"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/oc/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/oc/firefox-76.0b4.tar.bz2"; locale = "oc"; arch = "linux-i686"; - sha512 = "74ad86151e8d493e4eb3c5cfa4199946f279c071c527b912a270562a73daff67219eb2f970efb8ec942f0ea53a89c868add213c8b98a51155420aafdb85970f8"; + sha512 = "08e5e5b775b90684b6c275eeaf556eb4dc3e331db3f2807dca313273c4fddff37e31fa2ad36ed2dd7bd76e3ce5e7dac97a4bba85e7c4f07fce2d35bbb63e5759"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/pa-IN/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/pa-IN/firefox-76.0b4.tar.bz2"; locale = "pa-IN"; arch = "linux-i686"; - sha512 = "fd5e002903e6a16d982e063a9644b1261f45b9bfdc75c615dc29fa9ffcb49c7f024d8d9a9879ffdd5fdb78718711e5b44de8173283496a68beac5efa1a8c3bf2"; + sha512 = "10dcdcb6268a32b84ecdeaf4bed76ee78b9358e9e84f4fc8cf868f080a4425adf228116d03b440a48fd82d0808335c9632b0dc967a417bc44a5bea3edd79bbf6"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/pl/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/pl/firefox-76.0b4.tar.bz2"; locale = "pl"; arch = "linux-i686"; - sha512 = "1602cc2a17598747cf22b85e7fb0594c670bea4b1dec4dd5bc44f1c03cb25624d2e67479fd07fbe048565dcd79989fdf90236f677c56cef225944d7fbd5945f0"; + sha512 = "7057c8e9a2b0b988d275041dcee47d0c6a2d23d765340e68846c66ca545ba6ee735d8d167ccbc57d8054f46bb4c074ccc22f88d51ade9492d6f904671be88367"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/pt-BR/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/pt-BR/firefox-76.0b4.tar.bz2"; locale = "pt-BR"; arch = "linux-i686"; - sha512 = "213665953981892fff05313811c450355545ba78629f123324f20e3f11d7fea88a09a90c063a1f923ec2e9015d4456c70ce0ba15764c1fc01fb04fb67fce8341"; + sha512 = "e4f71f9cfcae8afb55757fb1873b5561bbfd110e9deb52b65244d5c7db48467ce035b663cf972f4fa976b52da1b945e551ced73366fb859c17beabc54b0f20c7"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/pt-PT/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/pt-PT/firefox-76.0b4.tar.bz2"; locale = "pt-PT"; arch = "linux-i686"; - sha512 = "f4a08d2e1d07fda7abd2c23e0cba842faf09bbd21e86766435a623b52453ce4fd55fe616dffd12685bc65aa0a621d8ac3e2d568bbc6d3803fa76862e3647db70"; + sha512 = "d48c432d4c84a1288f7a98654a95731978aadfb32dbef7e3464cd468abdb4153fc929edad4d4dab9b19bce7cdb8545d5987c7ded1b600fe181f044b3675c6b5e"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/rm/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/rm/firefox-76.0b4.tar.bz2"; locale = "rm"; arch = "linux-i686"; - sha512 = "d1b8ae6ad4ec05b5ac5b6c8900e42d42d64b74a9ea98822d6f8725c52e4ffd7e259fc11e171cb9b51b4dd18d5aa3beb7f20d6ddd33bff7b3dd34f3eb066a6f5e"; + sha512 = "b6231ff9e8cc373328210dcf5389590a2608c60fed17fde5a880412614213feb5066dd9c05cc0ae813f6af1701f4469586b255930449a11cd5bdae1c5ace54b9"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/ro/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/ro/firefox-76.0b4.tar.bz2"; locale = "ro"; arch = "linux-i686"; - sha512 = "ed3d824640ea0ce7aac6ed383b654673d2534342ef0d1e605d8693e3cb55f0d8029518b7cfefd9509c6e9a2243af4803c32d19be15e2906fa31e4d33e18ba6fb"; + sha512 = "919afe9f6850f39a61d825e2e7fb7ce109b3b942fbbfffcb8a9626b67dd9b5c7fbd6f43267c0b58b5fdd1f645366897ec15116eb21ddac93a48f7e3800bf0403"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/ru/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/ru/firefox-76.0b4.tar.bz2"; locale = "ru"; arch = "linux-i686"; - sha512 = "90fc22cb96e466d2f556d070621c2de06bf792eaf1979d5ed29e1259d5702992d1f0635ec7fa2bab7ae7fdbfc360e60668352cac895b1756c7e9d528e6f8482d"; + sha512 = "75612a4126aa52560e2cdc29b7c2fa1bd35fec34c9033f0ca276fb1239fe4dd50c1c4b024895c7aa8abb28435e58961adce4bf968922669dfd1abfbccddf40eb"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/si/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/si/firefox-76.0b4.tar.bz2"; locale = "si"; arch = "linux-i686"; - sha512 = "fc35d29b1a7dc4d6c82a49cb23f194f0856feda444b434a77f6f1e2af346171a8a976218604e2fdf1f041b9edcec4f3eef20a22950f32273192acb9d9cce0041"; + sha512 = "e5f4c69e7656a198f831d693465ae2780d33f0692907ac4ae9781c0a307e8f7a654377af0d76eb9d63d120ac65bd147a858485b4e211f5c119bc92798bd917c6"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/sk/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/sk/firefox-76.0b4.tar.bz2"; locale = "sk"; arch = "linux-i686"; - sha512 = "8f5f5a33839c68c278c7f128c3c11d9466f6b40d73f169266b38268f7ac9dc909611bcfa7d02f63748e8d8ceb1d1d331f2bfe560900679658d0f5c7421b89938"; + sha512 = "547ee4c8ec75ad4ce583abde35a604c1b607dc7ce71cce1a955e4269fbb18dc20af756a07facb56fb194c2afda8170f4114511228dbe058c1126f932d6c94793"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/sl/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/sl/firefox-76.0b4.tar.bz2"; locale = "sl"; arch = "linux-i686"; - sha512 = "f62801fbb70ec7b5f2b10b2d846cfc1da28f69ab3b041042961844fbce0acaf75cb99f93e42d805dc1e18ffe25ac88831e8e3f08680022ae3e6b10a8923122f8"; + sha512 = "468cff45ebf0706887b01890431b7cbdcea6eca30fe86a2911de19160b8b068ab45a49801e28ea6413ece5fb6cad4c8bdd3601da2e237b8946bdacbd4e51b764"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/son/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/son/firefox-76.0b4.tar.bz2"; locale = "son"; arch = "linux-i686"; - sha512 = "8326c8cecb491ee51e46c69b392fb042bc13fd141e5f0aa96e2d6138527e96a3277863cb616b7b88c03e18b29f781f2798cf4884bbdd0d434e9f75f00549e670"; + sha512 = "7daf5b95990a2a4386b04b0d11459e64cd3b101c57e18c514a28b28d1d62d797256b049f94809e423a8102269f7934b0074b2522109b2005c7bf317a705f5763"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/sq/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/sq/firefox-76.0b4.tar.bz2"; locale = "sq"; arch = "linux-i686"; - sha512 = "d3388c7cc6496315423a00bca80544fb7eec4d2fe8231b344075503a8813b1d25c1aec7c99f71e1bd1eadfb47edde93dd6b68e04f00dd56f414c77bf77b880fa"; + sha512 = "91b0e82ca4de76a5efe2a759f8325f784441c1fc118bca51b9ccf832f4866732dfa00b40c64c3cf767787ee5fbb11b9b09bc838c933c4ccf2d8472533cc1d07c"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/sr/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/sr/firefox-76.0b4.tar.bz2"; locale = "sr"; arch = "linux-i686"; - sha512 = "a646209ae9671ff23ee4c72eb40808802e23b7e87febdf2ef58623e2005889cfb38741b9345acf55fb103f327ed39f3847f21801a6493453d4d0392b7d5894f2"; + sha512 = "b41cbce7747ad6937c471f7f54d88e506a415dd6fa145979cdb88c07e1e929922b54ae9e61a674e47c120c9b53e2062d9b8c75b2cb84825fbb52dec2f2ef2751"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/sv-SE/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/sv-SE/firefox-76.0b4.tar.bz2"; locale = "sv-SE"; arch = "linux-i686"; - sha512 = "9440cad4da1aee56ff25b1d2b7f1f9597d475fc1fb4c91ea4c2df10356a16e2f48c147d93dcd387b35c5633fe0027a6879b0a730d97a07e40e1d5158f54a8006"; + sha512 = "902273fe8c9057b7d7778ac3b21b3230735d60ed3de6b48c9bb9554825c0e8f8131e7dd4a53aa4170f44220c25d64f23bf5f464402db9797a0d30c8bd3e388f0"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/ta/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/ta/firefox-76.0b4.tar.bz2"; locale = "ta"; arch = "linux-i686"; - sha512 = "c3b1c100f22eec6de008028b6d7be3ccac5c856b1ae914962baf13e5ac1fd149598676ada5cac02efabc586c8c23742a33670292ebbb774e27c69bee5a943d11"; + sha512 = "4fac2fc24242045e01bb7fcff75238d2cf4ad85da11efadc0b4a180a402deeeab4f4eaf39f32118a5668c872569e67dcd2b86793bbaa57391cf8c860a7bee345"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/te/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/te/firefox-76.0b4.tar.bz2"; locale = "te"; arch = "linux-i686"; - sha512 = "3d73e89551abb41f8aa94012edd7fe132b7e3b61bcd00622ee84647eeda32f612ec3ac57c439500e94cd46c5bd3615843ff55e0b9dc9fa13b92d0260fd483c8c"; + sha512 = "9c6eda370b7fffab80d3a4dc76f19a660f17ddd845251f99fa6bfa79ed5bd8bba601ba4bf07c108186423ade57358461756e82427e1f5db77807336d4eef62a2"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/th/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/th/firefox-76.0b4.tar.bz2"; locale = "th"; arch = "linux-i686"; - sha512 = "0359d465e62c5efac6f8b23d12549450562bf4eaec6cf185c5d6d29c9ec2a48c41b5b0cac090b135faccdc8ecadf0198a7b4b9df1d9f7bf5ff1662ba5c0d8148"; + sha512 = "38b01f7e48cee6ed453b48bf0924beff15755ff1b4870b625120bb82eb4a36825295b5f314ebac977b4ec1fc0be2f475ca8d288293526c856563829cfb5b52e3"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/tl/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/tl/firefox-76.0b4.tar.bz2"; locale = "tl"; arch = "linux-i686"; - sha512 = "1d80077c7ac5a4173b273a44d1a164b39a46dae384a977bc79d2f5d9669395843e20945fb5b799e7fee678568a8ffa3b821d4603515aeac6eca7e725a7ab716c"; + sha512 = "a949c67154859aceacd77a2d090f1ef9e585eb11ec817f8b0ad19a5e661391fe24d33c4a996137ac5ed2c312bad833d07dd140aa8bb0cfc0d223dca8ed4b84bc"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/tr/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/tr/firefox-76.0b4.tar.bz2"; locale = "tr"; arch = "linux-i686"; - sha512 = "fb5f1e93b017d3f3f9a1008923686a6acea170618ebd3cc52e1e0ec5ba369c6cf5406126689d3bbc05bee63c52b086617925ebe33ade0363d138eb200b52d5f1"; + sha512 = "460430a84436bbafb814c722a66e228e3a9e6fb4b1e250a8cb5955ae43e7de604bdbf374db7788b6bd26e3f6e038d1fe88f250fe37b5a4798d5d8a03f85cd3d6"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/trs/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/trs/firefox-76.0b4.tar.bz2"; locale = "trs"; arch = "linux-i686"; - sha512 = "a5935de8cde85d6ec031e312bbe55c39d43db206b981b7513dbd78d9e344692226ee439c548b4e26cd73db49e0b5d57d77c4928995aea326fe1e94c3fb17af99"; + sha512 = "0ba10c70b32ec847e497d20cc8e872ea1b867a8d5c608df1568edbd15475d9eb4e53ce6e7a96e249a9e0835fbd18137d4fc69a5f29e81abd9c154acfdd0db398"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/uk/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/uk/firefox-76.0b4.tar.bz2"; locale = "uk"; arch = "linux-i686"; - sha512 = "8fb43aa7e90323fd51bd2e281b5fe80c213502fe092844606cc7a3e49edf05a5d4382fd84bfe0223406da453361f869663616f33c9e16f5667cd06aca6c82874"; + sha512 = "f6fa0f31ac6007420f9e6ba01db67d98e380375aa3fd0cf12ebf94db157dc35d905b76f5ab6e0087fde825cddd8031da860a15c59f6747268b6547546f08e796"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/ur/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/ur/firefox-76.0b4.tar.bz2"; locale = "ur"; arch = "linux-i686"; - sha512 = "f25d7482bc707e7b780f30ead9156a76ed89710e47a971ad66f456794158a7d003515c5c7a70146448cccfcec4f7d920781d334096a1b27dbcf68b91dda80374"; + sha512 = "b723e0c609705f4ddb29e3d3349b0195520b842af7ca0a1ccc427da5d0a9dfeeb1b71f2570c5c877b1351886bec5d810ae8ce38525dd771b10f9923fc076de83"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/uz/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/uz/firefox-76.0b4.tar.bz2"; locale = "uz"; arch = "linux-i686"; - sha512 = "e6b64ba6bd3d137272a0a4b5674080c35f6fb84c6c2988ce0827165112278d1c1213a15175e3c98ab032087abc721c7c95fbdf905d2e4585150a9cbdfec3e604"; + sha512 = "d0c085a5bb75e5f6d9e1950aba926d5e3b31af7ee96503fc8716091382ce9f85c9e9c6bde4c693034517299ed2a3c650026b0c811d969974de6b79db8f5e74d5"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/vi/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/vi/firefox-76.0b4.tar.bz2"; locale = "vi"; arch = "linux-i686"; - sha512 = "60df754b0f8d5a7c1fbb30552f7528de11413aaa712386815fe1f575514e5ea36421f7cd4f264d60949ffc29409ab509b9425258f9eb1c6a014f1e5d2ab30bea"; + sha512 = "b5bb0ef8535422d83c24103e72a3fe619347f537230aa2f03b24ea8f29b726cd4fd5c94312466918a166ab8166df22403e3eb1c74a8aeea4bb3c71d4a378f755"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/xh/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/xh/firefox-76.0b4.tar.bz2"; locale = "xh"; arch = "linux-i686"; - sha512 = "24ce3035237d6e62ad6e01746c969ddc75e95013b5033d343145fbe1aec0735e588e2a964dbb074f554611a04de112b029d50139ac1a8d7c34834ac78251ebe7"; + sha512 = "3b8b91d953a1f62402d5c8d709ba7ae9d873acdc7a49604453bf862a223453f02b34bc2857e0e3744b608c41fcc906ec2f3771fe4510c9dc0cd5b6d0763e50bc"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/zh-CN/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/zh-CN/firefox-76.0b4.tar.bz2"; locale = "zh-CN"; arch = "linux-i686"; - sha512 = "4bc556547c3d1b37c0073a255832527a8c4bd2c86c103051913c14fbeb25c9175a4b7809778a936cbcd6cad02540af914f42ebe28884474ce623f2e6f42b53db"; + sha512 = "4446989a2531865b5266c7a5e4066a94399faba26f2349f92797bfad5fafccd658d0af57e2af4f62222b03818a8a57e7f2709d6f87dd97f9db419221c72199ef"; } - { url = "http://archive.mozilla.org/pub/devedition/releases/72.0b4/linux-i686/zh-TW/firefox-72.0b4.tar.bz2"; + { url = "http://archive.mozilla.org/pub/devedition/releases/76.0b4/linux-i686/zh-TW/firefox-76.0b4.tar.bz2"; locale = "zh-TW"; arch = "linux-i686"; - sha512 = "d4dd040838eb37652e4e049a0ba2bd0f09f8ec239769b79009e290693abd12d2aedb621829033698b193324c17754950c0481caf3f68830e9f1e138a62d58f94"; + sha512 = "a77c23a6bc0844a43569e91b2725b580c8f542804f20d81164328e7bf84332513bca2ebf3b60f0d87f64c450e7dfc34e81d0147a449738c7b6754e0cd134790e"; } ]; } diff --git a/pkgs/applications/networking/browsers/firefox-bin/release_sources.nix b/pkgs/applications/networking/browsers/firefox-bin/release_sources.nix index 0a819fac91b..997d6d98405 100644 --- a/pkgs/applications/networking/browsers/firefox-bin/release_sources.nix +++ b/pkgs/applications/networking/browsers/firefox-bin/release_sources.nix @@ -1,965 +1,965 @@ { - version = "71.0"; + version = "75.0"; sources = [ - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/ach/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/ach/firefox-75.0.tar.bz2"; locale = "ach"; arch = "linux-x86_64"; - sha512 = "61b15c19839b16659129746561c8da055ac7e7761384511466937892bcfc34aa06aca613e6786b7415926192ea587d8d2d49efe156238fa63a30013f6feb4d41"; + sha512 = "654ce2cccf5b123e25509f71f4526f42052b3cd6eb79694de47f94363af4ab2b98b60d73020bf45c11d5aee9d0b3e246f72a7795cdf770f34a34f8c097d3cb5b"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/af/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/af/firefox-75.0.tar.bz2"; locale = "af"; arch = "linux-x86_64"; - sha512 = "e8d62ea2f03a330178f6cf6316b87343d76ca99acff5d67d9d45be813eb9ab7969466ea30c2759f4ed0e55e33b743cbc96c6524d4a856abdf54723ec7839d803"; + sha512 = "615b948a59066bf7503d66a3fd574fa6523f85765f7e7f84d3929a78ef82b4833be6e810eeb95e266e3609e943703e1c84a0f7a26a542fb5e8a8bb0fcf379065"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/an/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/an/firefox-75.0.tar.bz2"; locale = "an"; arch = "linux-x86_64"; - sha512 = "613f8424d32fb9c7946716e39e4ed6964d7e5c398f7885a86ba36318dc1276228026aa196dff4c04058630ed537818719c0d56e501c010c650d4a4c8a3da32bf"; + sha512 = "070d250a2a22ae6b97efc618fb65fe93efe209b82aab53f9c13d20c3c8bf3fb9b84e209661d0322759a0dbed68e17c69ce6ef24a53d9dfd3186f1fd987e7c60c"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/ar/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/ar/firefox-75.0.tar.bz2"; locale = "ar"; arch = "linux-x86_64"; - sha512 = "fb240bfd506da1d2c5197c684419b8d8be15847e9516c915856816073de46f7694ebed8256799d06f57ed77a0417124cac277cc8cfa2ee9395affab2ba956f5d"; + sha512 = "36f7e51b0a1b7eb1c5df858cd0e90c301c162bb0413882dc3e64ed1240b4c81fde26eb0d9f7d813ce92c8bbae1e87a98e97d4a6360d765fb32ffdd84298f7f37"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/ast/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/ast/firefox-75.0.tar.bz2"; locale = "ast"; arch = "linux-x86_64"; - sha512 = "e87a750ea3d27008c986ec58b104b32214d50dc0362e4a92d0359b990fb39f8ce3af63d7d96e84893804cf1e87c7c319aa3973f22eb32776c812ea2599b8a5b1"; + sha512 = "693cc4eedc5ec9a058ecb618ef70b322bc55b5a6159f480b219807940061ec22c92843fd288252ef30341dc1e42d0ad63586f5b9f438011726dc5fe88ad6037e"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/az/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/az/firefox-75.0.tar.bz2"; locale = "az"; arch = "linux-x86_64"; - sha512 = "5789390585336b88e0ff14c32da9136b8c40e1ee7e6290796fabb01060dd295a07ae76dd78223b2a73cf0f59ca6dec40ff1d31a7f73956ac852314266b4b47a1"; + sha512 = "9d78aa451a95f5c26685b6065c93c77c7b3f14db6cbc57ceb0b868a30ce2a023d28063d4a14b5617f65c2ebcb6eab7d2ec6ba2eab0909e44ab3f25b2b69471df"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/be/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/be/firefox-75.0.tar.bz2"; locale = "be"; arch = "linux-x86_64"; - sha512 = "5dc9e7e7c8ba973f477318103015e425c7de61bf803a41e06c9774b4ed5894deacd4abf389ff40395a0269a06ac2ffdddc737bcc2e26dc8760adee2c6e58bdf0"; + sha512 = "6b898118e72cb2311d6230a2a151505c1927a35060bf703da6ce97a5d0735b06e56b163d5e5d4542931453923cf5e0afb9b527d2392e324a509da5185f2a2720"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/bg/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/bg/firefox-75.0.tar.bz2"; locale = "bg"; arch = "linux-x86_64"; - sha512 = "12d7e7c285ac69d35ad7726babab8b50f42846931545123fb61741bfa635a2eb7b3f1829bb92f5d5a9d07dfe3dc0c685f49eb5b7c1baa388788b697477b5ec65"; + sha512 = "b9a12097e8312c099622c3f506c09507a9f3cb25e36f25967001c37f3840916f58c6693f272725ef3a35b22be916c3f4eea78b3bd0ea4a110647a0db53484cfd"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/bn/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/bn/firefox-75.0.tar.bz2"; locale = "bn"; arch = "linux-x86_64"; - sha512 = "45431252333b7ccad98bd79a708b5ca25f7cbb49330cd3287dad259d9db0ad4d19671e12cd9d71d82f8ab2b1d8cfca34e7cae14a8299300166fc33fd2946718e"; + sha512 = "b396e1e57c0e1cb7d554eb32ff4cd92db5458c5c232855bce42765aa2ab0d387ccd817f8a06624f84122f74dc1d5818992e9ca18138085a2f164ae3095485e14"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/br/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/br/firefox-75.0.tar.bz2"; locale = "br"; arch = "linux-x86_64"; - sha512 = "c4a3a7e197864f52525270a11ae7979772d0eaff9fa623edd5f3bca143c7fe2f9788ffcc8407934a2b7370edbd94fb0009f8b6188b0755903178fe18235a9247"; + sha512 = "3aa6fb9dc3300b38038873e5fb06e40f4e9adbf30aa6fc4f3cfa7ebc399bd94d3464081f304843e83d4478989874283a8ae1be5704d34f4e43b2a699aab31466"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/bs/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/bs/firefox-75.0.tar.bz2"; locale = "bs"; arch = "linux-x86_64"; - sha512 = "17e7e8a7c74d413a90e0b7e0da7a88455a1411f2d08f081285ececb162625912302560ddfddea7efb466c9cb4c679978d4ad90685db65faf6bf847f3ac1d2bc3"; + sha512 = "baf9e2909320fa15c70fc4a37e4e15a89726079d49d2a7edb72dcc4908b59cd8a8ae4917c1f4338063f5b85b119dfdd9c8d0480d71dd4fc45cca77ce465a3170"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/ca-valencia/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/ca-valencia/firefox-75.0.tar.bz2"; locale = "ca-valencia"; arch = "linux-x86_64"; - sha512 = "4ed7af69a5f4b5e82886b787cb7feab2df19ccabbb4e9e2fa9ddbc6677e0d11a4c94ffeb0517c35a14a51b257769c3157b21ee661d0b086fa0bc951407885af4"; + sha512 = "a3e16f4ef89e8ffa65981cee1ed53817dc2ed235f2f3f7b9ba035db92ccc58893b10f5719fa7c37a400bfb9da07309f788c142e36e5f7a91e286d7f0d9ec3092"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/ca/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/ca/firefox-75.0.tar.bz2"; locale = "ca"; arch = "linux-x86_64"; - sha512 = "8a0688a40f263bc6775f6bd23edbe3fcf3f9b725e37e9b94b23bbef65aab273e503bc67c03fdcf820395acbf59a5578f5638a3277bdc14e961b18c6a68a443cd"; + sha512 = "a68a75844cf22ecccd407f0478bd38b3ed6f19cf8e6b32cef2c9e5e6d03eaa621b60be924a649c729b6cca3dbdeaf518f56676cb0bc295cb50ebb1038571e31b"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/cak/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/cak/firefox-75.0.tar.bz2"; locale = "cak"; arch = "linux-x86_64"; - sha512 = "4b25ad5ceec5d55fc2f3c1be875e75237c2c32d3ebab725018bc04c6b5d43ff182818d95d73d816479d87a6a2994330fce894d87573852f79e43b56e0b7fd6a7"; + sha512 = "5759039f87134d0a1653d8175c53a0aa8a71379cc4aad75831282956711e4fe485e62040c3325f24684e2d676fe4208ec4319aa959cb29c9682847b35906589d"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/cs/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/cs/firefox-75.0.tar.bz2"; locale = "cs"; arch = "linux-x86_64"; - sha512 = "ae2f6386819caa9917ba26e7b404cd8f4b6f4d390faea57a333ac555a6860dcc7b92993224ec54f5bbcb547b91cc99a5b9008bba33dc39b38ce5eaf9468c3f50"; + sha512 = "dcb7a5c9b89c524e61f7a99a2926099cb7ba088c7fbce82f3e8450b00554efc587dd7c4b757b6567519f0ec928edf50fcfd438367c37b48a3bff7d1ef66b4d51"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/cy/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/cy/firefox-75.0.tar.bz2"; locale = "cy"; arch = "linux-x86_64"; - sha512 = "fd6093384954f1a0deb7435229fe92196db1a3ba80ce651f1be20a420701a8b5ff417ee7f1d3c8f5f703d732e3b89ef87e49d164785bf32c326c66ecb9afe165"; + sha512 = "e788954f6ce821cc68afe9428c02823870533164b36123d7f7a9bce7a4d82392606d397713e8cf28b5360dc5897ca35bd3ff6aaaafbabb7fe5106462e8f687f2"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/da/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/da/firefox-75.0.tar.bz2"; locale = "da"; arch = "linux-x86_64"; - sha512 = "52c63938d5f6fb85ec5fd24289eb2dad43a00ec38cdd59c0c44cc06d3884ec203195e4dd1a6b26f990b819fe58f6638f97d8d2dfb597d2cc01a27ba019d0cf03"; + sha512 = "4a2da0b04a3f6cd6a5dff9c4d575d83b8ac195d815d4bc64e1bf59f5993c4b7e26fd56b81d7f0c5f6e5d084365b4d21477f7d554ab06a4f73400b8c484ad0fcc"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/de/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/de/firefox-75.0.tar.bz2"; locale = "de"; arch = "linux-x86_64"; - sha512 = "e10824056a96d5d7e5b671d6bb37f607d36b92412c01baee8e493b90fd3b9613be2bd7854d0aba3e97cd560345ecba19b880e9beac82bcc5c850217a397f7f20"; + sha512 = "6dd27ff5b7eab20c2548cb0dded8e677334b58040ee4e15a0d1095cafaa209bdde069d03b87ea7133899093375d425621bce7a9a3816f62aa603e20304be56af"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/dsb/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/dsb/firefox-75.0.tar.bz2"; locale = "dsb"; arch = "linux-x86_64"; - sha512 = "d1ebe6e9b14d1fbc63a45f6cecae206ec7479851aed80819f7cce78e7cb3a043efd0eb367c2a2561cd6d668497e5337aab3a0f5579dd5291587d36c22890849b"; + sha512 = "abff1c0ab591a1c2572e88c25c785f218bfb7b9d86c415f4390830f4d0e2ae97f9ba44d2f0a552356fcdc2d6ef9a238b6d00f1287132df60348728b63fa322bd"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/el/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/el/firefox-75.0.tar.bz2"; locale = "el"; arch = "linux-x86_64"; - sha512 = "f1468f8d0d2838df928a209330ae6fc7c1a03b9b16168ed5777db7763c56227031414150a5b01c4ad35ac6e4cf7f1eb24ed644896cc6bf3745aa2de7029b0d1d"; + sha512 = "9bfa5257fbefdc079f5d372d7feb3f52f52a33137367676e141a3aa57b5fde64a1e6d218a6cf9d81941a89fb3917edb5f1c4883796148fc63a32c55554538796"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/en-CA/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/en-CA/firefox-75.0.tar.bz2"; locale = "en-CA"; arch = "linux-x86_64"; - sha512 = "a78d91bcf51fc963328d38e7681b573d7d2f751bd27f881d80e43cdf40452ccd71207bdc7d0fb7b8f209e9ea336236752aadeac33b51bf1e129df46840a4f72f"; + sha512 = "5b6ff6a0b422bd399a5ac2893e187e4f46c6afc106aed7177d3f3a6a9f72c5cf283a589ec589625deed0ce4e3d7d1d45cd9d8a6c7015c48b7187edeb1c07b129"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/en-GB/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/en-GB/firefox-75.0.tar.bz2"; locale = "en-GB"; arch = "linux-x86_64"; - sha512 = "5fdf613e662d3d3e709d6b0c13371e58542dd61a04c52abccca06dacd58c0327e49241603b12e940bb79fa4f80055f919136bbad597b1727ca067bfc54fdcb0a"; + sha512 = "03e20bb7811ba53b2ae3f051279c478b4a240ad9ce0381e9a15daa8d04f15b11446456b05c84f41c3f628e3c7166ab2d19b8074c77b7f3190795cc4219be9be6"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/en-US/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/en-US/firefox-75.0.tar.bz2"; locale = "en-US"; arch = "linux-x86_64"; - sha512 = "f835ace8d5ea8bf920c1065a2dcf4cd0c4fefbe675311b9768e864446570bf8bea289703dc2cd5d1295f027cf93ce5aa34ca28a722f64549b388a50fe4c87e96"; + sha512 = "7cbe8df35f61d82115ca1e4db4dd2e17cc96ba74cdf4e5e48aa4c1f5bdadf4e8b612b6ab58a09ce1352129ccfa68043ae92836b175fc5c328c3696f1f3426107"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/eo/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/eo/firefox-75.0.tar.bz2"; locale = "eo"; arch = "linux-x86_64"; - sha512 = "86d403a9193b35dec9e71e434e5e998d1f7f5ce14bc47218bc50454bc623652d704f5dab27cd4759e2c90fc85bdc8f016f799080dadebf0d31c0e5be2173a63a"; + sha512 = "933a872f25c6377abe21e33fe56a3184e605e299369cf11b84c0fcf420336f119abdc9568eb81b1e51bb58228616cab4c7171cfb8f8e40329bffb377a455c832"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/es-AR/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/es-AR/firefox-75.0.tar.bz2"; locale = "es-AR"; arch = "linux-x86_64"; - sha512 = "f4d9b5d87c334111897cd91b16433122a391f491efe420ffdf63e0638d07348c6a2017f1175f246d2f93b030781043ca7a1bf4d3248412363d6fef7048125c74"; + sha512 = "5da5004a2985fce3a6dff5461f2c0fe174d3ad58e3dd37c4535edcd0883fad6f5a449f9f898c5bde5de3aebd9911e87e82c99bd48a06e9d953e38666e3f8fdee"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/es-CL/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/es-CL/firefox-75.0.tar.bz2"; locale = "es-CL"; arch = "linux-x86_64"; - sha512 = "b2c5ad1d7b51fc072bb451dd1a63af4d9c90f9d2091e02bf8d8b4d39d9918b9abf20beada85058d05aa57ac447ba2b480d12d7916666caed5be853427061589e"; + sha512 = "c2acae33bbf335d871ef14e27d197f4378e8ad1a94b9ba2df28497e4a72fd554a1d9428692cbd7cd5e3147f575d7517dbca07b3edb5eaa66c390000e7cbf5a7d"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/es-ES/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/es-ES/firefox-75.0.tar.bz2"; locale = "es-ES"; arch = "linux-x86_64"; - sha512 = "e85e9dc61bb8f4319544fe0bc2430c03a813f4f4da1cabf7d7ae03738cf7b5f2f8d39656058c4a447c3890e1b98c6e558cee17ad528119aff516eb17be39c879"; + sha512 = "ce8ca7ce217bde7b42c9ce6d64874d37306754ccfd61f0b61c898e22f84feba6e30a33468b9766ad96f5ae8e6e674eab93881f36ded52f010216d8efa5f77907"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/es-MX/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/es-MX/firefox-75.0.tar.bz2"; locale = "es-MX"; arch = "linux-x86_64"; - sha512 = "7d73e3687f822e8ab41f8b4e04ab04eb7d0a4c8f3584ddfc43dd154b760866d26e28f85c62ef6ab55777c842e3eab61ff9372232f2788b254133d3ad7a84775a"; + sha512 = "fe32f01fcc01ccefaf7207fdc56da4450fd17928185382cd738d7a22425b5c3761ef60d0a9f7d35d314d0b7884859d614f08903eb20fb0a679f27dd1f4b136b2"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/et/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/et/firefox-75.0.tar.bz2"; locale = "et"; arch = "linux-x86_64"; - sha512 = "d9f2d99d7195d64d3aec9faaa07469d99f9fb9ff1f83b38cf8ec7ebfa2cec91a0f8242548a794d1ae5858623730d0f616ecdca5c25288b7bbf378bf7677173ff"; + sha512 = "fc1855e6c7bc19f181c7e87909a79e1a5d08ce1fd38f52d65e20331daec8af8b54c1bb7f90eb1c3e53c900f141ae264f55895f6fdd3690a83945a26707eec27d"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/eu/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/eu/firefox-75.0.tar.bz2"; locale = "eu"; arch = "linux-x86_64"; - sha512 = "a0a8c7af075f4fc4814c571e9aa4eb889326b92815b9fbe3c79c69ccc78012e278386b1f2b2e1d6957e8b97ae65c044322e3792df6d6f66f42552270883f2dfe"; + sha512 = "a285ac60590113e41f04a85183038ad02f0d7e24fb42fe1a7b313eb6d3fb5b747ac5f90364278f7c8cc3f35d0ddc86c0bfbc7f7fa7ed2adc56ef6c77c5b25ad8"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/fa/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/fa/firefox-75.0.tar.bz2"; locale = "fa"; arch = "linux-x86_64"; - sha512 = "f8274fef2412c541f1548afac3e3ce7d0ef758ce133669c18a4737e05464b94b2bbbea966325cfe89064b4acf3f79725613101e5428b9032d75c73acf6b8ba6e"; + sha512 = "84ee3198ca0cd8a3b20f4c696f6c08b94d35f9346e4443e1d6d6ef447d94a20fa1d58488a12124440290c4ae00ae827ee59c0cbdb7905210bdfca0c012f7e01c"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/ff/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/ff/firefox-75.0.tar.bz2"; locale = "ff"; arch = "linux-x86_64"; - sha512 = "cfe678f59a4a468710c1c9d17d8ecabcf491c2a9bde03ee7ffe4b73f426632587a546913538449606bcab4c945e5cded2fc3c81ebd9797a4791c097455dd6689"; + sha512 = "f3b615fc63b12ade11fad5b5532d81741147156ae84d08b1bc3c0f43f2c204993601e1bb363ce7e3ed7ed3a5d790428ca51e3cb5decf56f159bf7a25e2e43a83"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/fi/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/fi/firefox-75.0.tar.bz2"; locale = "fi"; arch = "linux-x86_64"; - sha512 = "9c9c0c1040f451068bc244c5dd194e799b64ac5f1e80f71ea4ea84cfdc1f3eee2916cd2dcf24d3eb8bc70bdf80957201472eb8346d2ca605e97e8f70eb3433fe"; + sha512 = "b629b55fe05c53ef814b091ff5222704afb3802630a5f44047bcaa17f8140c834725eff9e51786e55336910c462ac07b956878b551a5a48190b1ccd2904e57dd"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/fr/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/fr/firefox-75.0.tar.bz2"; locale = "fr"; arch = "linux-x86_64"; - sha512 = "9b395558437f41b75f709ac046c482a0bfd5aa68336b2d0b53fb8896abe2f7e37965885c70bac24026cf5d3a9cd774da03dbea896c13b95bfaa70502164eb5b6"; + sha512 = "1794f58a31e91916492319091437ad9e5bbed95b3925854f744e6e635e9fb4c06abe73f9fed429fd04027c12cc29b63363e60a0c099640226a5a626a428b3002"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/fy-NL/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/fy-NL/firefox-75.0.tar.bz2"; locale = "fy-NL"; arch = "linux-x86_64"; - sha512 = "c15e43a16c3d3ead9eeaebf774caec691fb4307c49d3d96b587b217b46a9ad3de8ba6e474a4cd1fa493b3f873e3041bb11c0b807c022182e08dc4d841b2e0a72"; + sha512 = "3aa9f95eeeadd81d0ecfa93b1df9b1b455425f430968395bfe65e60a65c6aed3d9316f842673c2638acffedfbf1d93940086f6b7a113496c7d8e580aecd8f25d"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/ga-IE/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/ga-IE/firefox-75.0.tar.bz2"; locale = "ga-IE"; arch = "linux-x86_64"; - sha512 = "6092293fafe763688f810cfba2c34abca1a2d4b0c086febb048386a04bbcc6ffd62ef210b679c0d29dec3cb343be8264daa332fe710d2b681094fc7209b9c679"; + sha512 = "43bb9830e38dddcc59480a7e162214e37ca3516cfa0d773c4851ec60f098837ea2849917eb460ae7e388612619b13cf29d26d9b1908a8734b6fde1add36c65bc"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/gd/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/gd/firefox-75.0.tar.bz2"; locale = "gd"; arch = "linux-x86_64"; - sha512 = "67218bb7dd860e92ae5b2c6ee4234b58c65cc3c458f8604751782f629f3fc23f523ae18093e141f19cabd93619db0f283db797c4c4f01a8e860aeec7976c0fd5"; + sha512 = "8cf151995af5ebfaf9f713dc7373b9ff3d12ce582c4fd062741eb99e291aec68fe636d871709ee0a0bd628af0e9f1a412a12289c539334783c7a5d6b6b0d4822"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/gl/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/gl/firefox-75.0.tar.bz2"; locale = "gl"; arch = "linux-x86_64"; - sha512 = "ddfffb5e6927a9edd8ea448148524dba075f1e9ffcfaaa5d56b04af06a3107095b910034022e2c9af298d2d2cc7a8612c8544af8ae0418c4d2ed0b1cd83d6e4a"; + sha512 = "da133c0af8546ab62c335faded8b35f917af2cc7fafac8cd22db1e3a867b390de60a2bc15adc7687044702907a675eee42b049cde335d41a55894537dd137fd0"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/gn/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/gn/firefox-75.0.tar.bz2"; locale = "gn"; arch = "linux-x86_64"; - sha512 = "54f2893fb78260240c6b9f0fb9989d1dff7f4f5d493fb1baac6711821fe61e38afacc52cd7608543f5d9d8999a716163c65604c442279f929f35eb0e8f892d7a"; + sha512 = "a1f6063560d70f81cab8d40f1f0e28ea866f284ec94a0093fe874c96795ad3e823c202e82dee2de7578f3ffc1231ac0e8bdcc1a21c44107cb1d4ab56cb56effe"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/gu-IN/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/gu-IN/firefox-75.0.tar.bz2"; locale = "gu-IN"; arch = "linux-x86_64"; - sha512 = "91e04c877173c730ac0bafc3e51fc47ddfadf3bc6858c8e4ac52454d4ce1fbcd965da53e8adf9c6276c7f7fdc353e52463875976bff4e01b932d348ee0f961bd"; + sha512 = "60123058d668641a6c48a7a6a4247337515493267b3489a16e9f7fa2d0ab1ed8a5382974705a156fc041501560b8f6a2be3a97b47ebfdb5f6f527e63ac5acbcd"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/he/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/he/firefox-75.0.tar.bz2"; locale = "he"; arch = "linux-x86_64"; - sha512 = "f9a142dfc33af2f28671c5cb62007ca307a5156c9e97e1ef48e2e709faa89e2ce8ef40f98886b1b7595e6cd3ddb86e19c9795296bbb1fc07afc1cce933e7ac62"; + sha512 = "7693bad7f6505cfd1718e8268611133d26826adc49003eeb6d30bf38ddc1908c39ec270b80e20463c016e4b367ea8035dc8c9707b410299581e1b09df7a08df0"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/hi-IN/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/hi-IN/firefox-75.0.tar.bz2"; locale = "hi-IN"; arch = "linux-x86_64"; - sha512 = "545bade79a71a9a7e6c62f74d027705a7c60ad1303f8e1795e7809355368dd5709121baeebee16c7ee36b7f9913edab8fdde4555278a08e58981df2dc3ca897d"; + sha512 = "f5b58f3507852cb2d900d1398c934bb8de725b3578d1037d424f5b81d7cf2e0a247e6be50037e027649dece8cae55c579f81205259c93f22eefb2d67af8b0d57"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/hr/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/hr/firefox-75.0.tar.bz2"; locale = "hr"; arch = "linux-x86_64"; - sha512 = "08a92ebb33b0658c4242ffbf46245839842a16355b5c61b7c4c41f84daf306645c4945b96cc954e8121f3e9c27227427e322b8a38a209a6d7945a047ebdefb1a"; + sha512 = "6504e82cb541bcc9a893c5adcc063a8de3b85e68329d3e5dee0a461a0c614b330d7b59b6f3fa0195a01d69ee011017bdf999f95fbb19ad25136b291feef1ccb3"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/hsb/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/hsb/firefox-75.0.tar.bz2"; locale = "hsb"; arch = "linux-x86_64"; - sha512 = "3cd0a9bd9ff3c3662a4dd64cac378dec948ab2d518b41adc0a5836ff42a502afcbef0307bfd04af728e7065e3bcd791d64470f2602e358c78f51b7f41912cffc"; + sha512 = "6d0828ce7c721aecdc66a1df441cd7ad43a1e96487797a414a5a9843bbee6edc1ad2aa23d82edac7b2bb1264a0880b1852bf2cbab184ac1f5f91da99fb4bb06d"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/hu/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/hu/firefox-75.0.tar.bz2"; locale = "hu"; arch = "linux-x86_64"; - sha512 = "96b625cd3fec5578a646ec1668cde58c59b381fd2b58d84cd904c67c89b19fbed05d9ee70ea7f114be5041a00bd074e00eebcc424cc7715734a88bd3a15fa32d"; + sha512 = "a252051af8e299e6b21e9d601e54cbb0413d73eebce693403b522354cb0b6ceb240ef70b50c99ab55379d2a99a0f268483e2b0a02da3f9684a5b7a958b732cd1"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/hy-AM/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/hy-AM/firefox-75.0.tar.bz2"; locale = "hy-AM"; arch = "linux-x86_64"; - sha512 = "d67115a96bc9e1f225de788570e28b96ad867435afd94ee849dfd7c27f40aadfcf6213e2c2a8f6a237752a1241464e48c9bee373d5563506577cf0bdf6f9d290"; + sha512 = "aca7eb55987d98d69f024ac41414fc9394c8f05949bde1880d191c3b09bdea4798baedb4a92119faf923e5a36c760360d87ecfadc771a57f6425302483b6dd08"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/ia/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/ia/firefox-75.0.tar.bz2"; locale = "ia"; arch = "linux-x86_64"; - sha512 = "09334b96781f1ca1343766d3a78a82b9fbd60d6c2d267bdc25a5e0c4b3fa4df785e6eb839291585adc08ba9a1f707d3ab066da326a34d72a750dcb9fe10b1f96"; + sha512 = "e23d26cd4f7cd40610ca841fd2b8be72f199eb2102560002c419fb6f00b1f2fffcf5fad6fd06c6e7a0146d2b7525c006e6dc696271f4bd4f5bb3bcefb8980e9a"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/id/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/id/firefox-75.0.tar.bz2"; locale = "id"; arch = "linux-x86_64"; - sha512 = "5b01cd3f4395a7747d27c49038f82887ede4b5fd396d96f6ba085d26dbeb2bb7c722bbd53fc0872ad0070de0817e6e67f065e4e0054d52f0a76d4813e60b3b68"; + sha512 = "f8ecfe334dbcf6598cc2241c56d6496ccf0755494d11c26e2624803d3f1a6001944d8c9b78c62bd8bdac85fc3d1e60b90212b8bd8b2842e0faf6824a1651a31d"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/is/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/is/firefox-75.0.tar.bz2"; locale = "is"; arch = "linux-x86_64"; - sha512 = "bee1004c51fb2c6a45689b29d8ef1aedf91eaa22d153d4d85eda87c79c3d063bef8ba0cc985c5b9cd808aecfc22b1654fbe7baf0f9c96cfc188a1ab101405c5f"; + sha512 = "9ce50d9746bcf6384627a83538a0e023091b7f264c6364e88de2bd8ebed0e081e1d31681ae0679d2a88f462bf9e04d7e9cd07826822cff3db1a1d338816875ac"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/it/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/it/firefox-75.0.tar.bz2"; locale = "it"; arch = "linux-x86_64"; - sha512 = "7aa5568131a47d3bff820bfd3c7e8f5dff8d79d2f039510d73964b302f2b6f63e41cd2232e4d17e766ce52d89c9aad5118092152472ee7080b8505a4352b30a4"; + sha512 = "9284d8657a4097696523cc07217908449102f46dba9564f98b2e4889707082be4cf285f889f650ceaa92e06f564daa19691dfcfe95b0b4a865987b767665b837"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/ja/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/ja/firefox-75.0.tar.bz2"; locale = "ja"; arch = "linux-x86_64"; - sha512 = "92e13e266b2da5b200cbb2d09b1bae3ba6963069357656a2dec89d2ca239bbfa799bb7356d5935bdd38a0d4ed5d503bcd69de67d3caf79f8118f0884b9b7fe6e"; + sha512 = "68bfe86b27d5d5d71121735a627e29964b2c3dd70e33e12f8ce3a9d380d253c33bede8d33eb7f0185acc68deb388b731ae6b40c7d71ac49c6fb5ee60e44e787c"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/ka/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/ka/firefox-75.0.tar.bz2"; locale = "ka"; arch = "linux-x86_64"; - sha512 = "fdd066469146eea0e0dec12d5dd98f8801e7a8910b5662e71ad480be337d9481939e7d4d19eb0a34e19e929ccdea97681a9d0da2d9fb96a6caf36f842426f32b"; + sha512 = "b784f5fcc063c98481ee3eae767eb3df60c9ba4464fbb612cd10bbdf1abf54f5b2098700345f2494358de1ced339f1fade979ab6603f036e4a2f76b25c46a33e"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/kab/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/kab/firefox-75.0.tar.bz2"; locale = "kab"; arch = "linux-x86_64"; - sha512 = "0a62bac221250b7ebe55beab4acbf58d90ef522a82f4f98ed1cfda19ff4bcb02e59587cace7251691aa5545d02b7b9ddb7a8fa99eabe65ae867a4405e24b851a"; + sha512 = "ac26df50c827efe7fecac013ae417a4b68d2a49062ec9fd443f5ff6d47646333ccbf6a98e92e0c8c2d5aa293b170336752c92d33999e41e3ed163292a6bf3d0b"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/kk/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/kk/firefox-75.0.tar.bz2"; locale = "kk"; arch = "linux-x86_64"; - sha512 = "cd611b845802e59ac292cb6e487a68319544130d6a39f4ce3f37dd5fa73094ae89e9504d7bba846c55dbc16747caf988c1a45691e7fdffcd601b50546e15ea54"; + sha512 = "47e516fc9fbba8e5b57fa3172df29fccf8d318fe1431233c2d70c5c657d40f2a8af1b20daf5e3d6b3978ee093b1d100dbf7ef8838385791b58ce5463d6899946"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/km/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/km/firefox-75.0.tar.bz2"; locale = "km"; arch = "linux-x86_64"; - sha512 = "27b0d8750bfcf10813c35910eabe87f4294b033d1044b0fb35ba82a5870748de2f10b03b4f39c5857b6f42efee796ae9f8d3ccb9b920fb6b6544a0bbc86cae9f"; + sha512 = "ae0baee8e59fc4d44ebf57d7f708d3f30126989e4bd32309d8daa4478facfa4a929a96972acfb248eab0a1e04597b2dd521a4fee40f748fb0a4f6108220464de"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/kn/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/kn/firefox-75.0.tar.bz2"; locale = "kn"; arch = "linux-x86_64"; - sha512 = "5b292220e41ad296d2230650810beea85f038dd7d16fe24f08d7424ad2927424c088d8fa1c5c670aa95f0457d9d8259d4ad228cde09d2195dcb94a452a56b6b4"; + sha512 = "c0c37e1b36408b0d8a4d34fbba254a6d6b37c80287ddc4abce88a623ba3fd5b92108509bee27bbee500abfc08d364886ce8ed5b816b9450aacd127aeba39df94"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/ko/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/ko/firefox-75.0.tar.bz2"; locale = "ko"; arch = "linux-x86_64"; - sha512 = "784a362e0a28233e7453948cf2e8a6d6752d5a702164f913dae01e58f7aa837fd976f5641f6786fc58799b2b3a66255317a52714ae09b3f346a9814eb5445c4d"; + sha512 = "8867aa119becc3e88c63096c5ebfb2bea3a396cbbbc18f35725d5983df098543827bf6c069292322507b871263f744ffb411a59437687780a9dcafd276d04410"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/lij/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/lij/firefox-75.0.tar.bz2"; locale = "lij"; arch = "linux-x86_64"; - sha512 = "6ddc8ebfb7a469636054ce2b5606cb2601398dbec59221e81cdbb3fcde33be0d6e2c2f47a7bd80a84c3a1d0a1c8e68827d72d57041319aca59c89a1b03eb9510"; + sha512 = "c10c9dbcbd911c3ce324aef23629f37df959797128fcea7373f3d77fb8b3d538850aed797e754bd15edf59e666412158bcee2c1a9ce8d040d1b457de9ee007f1"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/lt/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/lt/firefox-75.0.tar.bz2"; locale = "lt"; arch = "linux-x86_64"; - sha512 = "57f61620c306445154585623ee4b8d2e915371429f669c426d0b99916a6eef39888c32d304420146250ea4d2c4696f287b7dab1187e341ccdd728d5cfc181b11"; + sha512 = "58517b58ac3c51c5aa2fddc0b5a458d100d3eec44e51c6d188a85c2e7538caf37cabb1440f4ebdc97d54d3677697a5fe07235d67ddc5c4287bcef10f9b7dc3bc"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/lv/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/lv/firefox-75.0.tar.bz2"; locale = "lv"; arch = "linux-x86_64"; - sha512 = "6d7ef84ca7d5cf92fe671ef5372b602983b25a035e110bd92f25c461fc8a86fe0b14965aa3426c90febe1b311cbe67d901122cd54191162957ee0bc1e1d01a44"; + sha512 = "9e07357febaa5b67eafa435d30a2a8f75f2ad25d1e87968cf71b8a265a647ea0020169d6f2cd77c4779dff905774664f84ad26fbcc8b9d4c986dfad52000e175"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/mk/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/mk/firefox-75.0.tar.bz2"; locale = "mk"; arch = "linux-x86_64"; - sha512 = "680752f83f68c0a2c6f929016c610e671bef0ae44b84e976b0839a19f1947429a5a2e8e60149791fa2454a85772132dc87db1979adf327bf6d36da92b50a5924"; + sha512 = "249c45bf3f1b22e355bcfb4f5afa829163d8d1d72a8f192111eff2158b10585152c9c2dcb2fbc9ce66d8351d83d83236a04b42da4607fad92d2b4e25acdd39a4"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/mr/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/mr/firefox-75.0.tar.bz2"; locale = "mr"; arch = "linux-x86_64"; - sha512 = "1950ebfb23bf825b2f8711ff85c53db29781e52a9684b515373c2591c458d897a7a4445cbe3ade9a891c52104a7651ced306885639495bed76690a305b22fea5"; + sha512 = "b5860b41a310cddc4dc81074f01deffdbd10ec3f682aaf3d27881f8c190cf5ba39c428b7bae688301f8fb40ca12b3cfdd9377501a3e750ce8995e1331fc015ed"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/ms/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/ms/firefox-75.0.tar.bz2"; locale = "ms"; arch = "linux-x86_64"; - sha512 = "1dacb30753cc4c65bda54af6dc886b1a8abd6c6320cbf208163aa83d874449aadac64c5f5559e5dcfb366d4b0ebece323ba46b2eb41f03e908b6aef08bb46a03"; + sha512 = "a1b88f527ce9e4d9f69d4b727313a68432db2d989d360fe5716f896d61e7dc098667720a2c60e33612b43157566f95abe6f1b149f7aa507a9738753e6c3213bd"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/my/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/my/firefox-75.0.tar.bz2"; locale = "my"; arch = "linux-x86_64"; - sha512 = "708813ef947b1bdc8f0459c3ac908ca1fe3862525c59d51ccdc1e7c2d91c1e45693b109faa3d0302e7a2a0acabc3c84543b8ebe98ba9d97215505074ce9169b2"; + sha512 = "74efc375475884fb9bfa9fa4d944dde0f6c734d1c73676d37b80a909618773147f12faa94ed6570a6aab6652c4c5c32cf386ac096acc025ba6c8440d8d345026"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/nb-NO/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/nb-NO/firefox-75.0.tar.bz2"; locale = "nb-NO"; arch = "linux-x86_64"; - sha512 = "6511ea81a9eb6f552c260821bfbaefa7153a59f5078d7ab5676aca313ee27cf75617cae1cb569df400ed491ed31e172f51fb4c4da4ad672ec76e3faaa31825d5"; + sha512 = "c1d4eafece0ba52022c96fd939651ad047e942fd9128dd8c6bada79f2d0eba01311b4829c805eafbbcc53ec4dee34d14e015742a86ec67de07d84d6950fff41e"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/ne-NP/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/ne-NP/firefox-75.0.tar.bz2"; locale = "ne-NP"; arch = "linux-x86_64"; - sha512 = "088adcab8954c67db9715047bda7c91034b7068593334ebd2b0dd5941ca7ca3d3c22c959baeb5222e041ca50e93f4032b2fd509e305a666af0f772f89a56faff"; + sha512 = "a97b467bd40e1564973b18ad6acb10412da67184daaad25c34b84ec2a8f3a840f01fe4b9720f4774a546a7e035338d9ce297eeb882a3df2b50f6a9cffa2bee13"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/nl/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/nl/firefox-75.0.tar.bz2"; locale = "nl"; arch = "linux-x86_64"; - sha512 = "a9d569d5032bd5e7aa5a54815b01d21f8aa55188144a0e19299cfd2e9f39f931bbd86bb9e05b9c2fc67e2749f82ef4d14c9bdc08044fceef8710b3eb67d3a4b1"; + sha512 = "2d84393b851618e1742616ab6f3b1fb21b7f00cd65a98438cf3a1250275b7b184f6eb0cdb1d1425293d1ecbcf4591fba392283596146a5b18f29166111cd8844"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/nn-NO/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/nn-NO/firefox-75.0.tar.bz2"; locale = "nn-NO"; arch = "linux-x86_64"; - sha512 = "dadc75699db6c309262855754cd8f3849a5f51aa62ccb2071322cc54f8193ac5b6ddd642677ab277871c4ffb90000bd49a01bff23557d387e7d902b74150d4da"; + sha512 = "c5782ddf73e00481ed338ccc989b2c2760f15e2b2960457cd3cf6403d6d3ad5d1b5d34cc6194b3a1ddc83df8d376796802d4e945b8ab47b7b7e1a4d5a4387a6e"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/oc/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/oc/firefox-75.0.tar.bz2"; locale = "oc"; arch = "linux-x86_64"; - sha512 = "52850cb096bf7c2539c048f935c434101f3e66e7c24d4fe05147de018aadb357c4fb7b582d4e43b3948575b3d0a8166a97cef58ebe159585e8a0065bbbf30727"; + sha512 = "cd3a3fde21ab21e08467ebbb45d0a2d32cb901c2b6807edd6298eb75bc089684f9fd26c0741295f2ea82c2e25cb375bcd1e45e26c267c59d12d285a00f0d0b74"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/pa-IN/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/pa-IN/firefox-75.0.tar.bz2"; locale = "pa-IN"; arch = "linux-x86_64"; - sha512 = "ac1832d4c105b3b401cf029bf95dacff3afda8cc63de51b35d4b847177bf4ef48e415294c91c7a7c095725c52413ca17eab051d3a50c5f8c7346e480d85b2de7"; + sha512 = "546e36c717f8a0c216c32f53cb56d2fb709702052bd52ac1184860c7cd755f9f0d657b8955c3f6347c37d382600ff9cf5add261dd066e8881e6a3e410fea151d"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/pl/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/pl/firefox-75.0.tar.bz2"; locale = "pl"; arch = "linux-x86_64"; - sha512 = "6925686d241ab63e882b0679c93ea2ba73db84037593f098912fbd23a5bc0b93492bec3114e7e42a87f1ab72696f9c9d80caecee31b0d06c949a55238c0cb8a9"; + sha512 = "837bde42f6b9c1aaca794be4fcf819fcee3e3456a883743882ed6983e71f98ba25e02292bb01811958a9f21cedac55586deb8066f52939971c348e21ef5ab75d"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/pt-BR/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/pt-BR/firefox-75.0.tar.bz2"; locale = "pt-BR"; arch = "linux-x86_64"; - sha512 = "a3aa486f7d41f77e090d56047aa72dc9d40e8d8b27ec8203c85d77bd108443201940239fa16bbbbb007d8093429d810db0ce0ff6309c29763ee0b424b8df977e"; + sha512 = "81a2620aee0f210782aba431e7e9e15ab2a0db49489aa61cf7a6af5944e59c62f38b65aafb198355d5d49aa5c52e1052ba60c03b1772916a972ed06aad616f25"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/pt-PT/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/pt-PT/firefox-75.0.tar.bz2"; locale = "pt-PT"; arch = "linux-x86_64"; - sha512 = "e8730652a48e737840f8bfef348d357d18d642e01aa91518fc88d0142fe45d5ec5f7902506e5e6a0c49c0fdcb74009a5fab96d9f6097b0cbe07c4df05599d79d"; + sha512 = "c6b317d17a14c5d5d428410f7e86c7b9089442bcbefdf1a44875373390d649b2f7eff26c09c5cb32fd2f8f42293d289044a7007dae4b075bb1fc522b63f4b18a"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/rm/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/rm/firefox-75.0.tar.bz2"; locale = "rm"; arch = "linux-x86_64"; - sha512 = "8555b604d00fa7f5efa6a2d3f6fed95e18c2256bc67dc311499b160dd634e9529e0e7f641d66c46ce3a269119a7e4af65461c8315d130eb46af3f43762f89d8d"; + sha512 = "12e6c10fcc9419a66aef11e50969fc6adc7084db46d2cc6202a08e1a7225b797fdcdebbfb9dff6a441e3fcc782cb33753361ef37767e5ccff35af2efefd82256"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/ro/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/ro/firefox-75.0.tar.bz2"; locale = "ro"; arch = "linux-x86_64"; - sha512 = "65e2b57e2e9aa7226989181fd5cf7d76b54f3be66460fb587d35f27689551ec326ee77da5dd6e4a60b61f39c5c789c399c8164377f6fc03324e65653112d07be"; + sha512 = "c03df00b865bec9765d28bf0171a5eb6a57e3c8cd64a9002f17bf67d4d0c118414d6b25a782aa3eaca50d5997203c40e376562f64a252aac4b26fd8419872feb"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/ru/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/ru/firefox-75.0.tar.bz2"; locale = "ru"; arch = "linux-x86_64"; - sha512 = "b2c52373652a8340e4425a101bb8a9c5bca8f2db6093e54f5983a1a62d4aec0b10252d678b91dcd8bbb23a844215545b1f9d627ed1dd1bbd1488fc07027aba47"; + sha512 = "418b70ec07a966a51c101e9ae341b0c949476452b75ed00677ee87b032d592fef65e6ce746004deb0d89b94cf9e2d18ffaf1d388026bb5024dff0994dc2fb058"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/si/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/si/firefox-75.0.tar.bz2"; locale = "si"; arch = "linux-x86_64"; - sha512 = "47fe8efd423579a99e480c906cd7af5a249c01103558c5a0dd41008ab701f60cec817bb691636985fb5ccd2c5c4d0628fe13e892db377d8400cf24b40b513aea"; + sha512 = "5adc26e616a8116fcd5b9579acccbb402fc5c88ac334cbbaca2da48e246c7e44868b6454c75bea355f5cbf6a182346efeb50f7a49b2c3f92c8fa988d50e19e52"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/sk/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/sk/firefox-75.0.tar.bz2"; locale = "sk"; arch = "linux-x86_64"; - sha512 = "3d8cd6aedd3ae96be8ddc7a8cf44a3185731803a1a413e3cc582aa17d3bd7280aa1001f7ec89360a95bdb8c01c0bb51b144921a72b9869e17fc83f6801aa3438"; + sha512 = "d173c26b5ba44a98070fff9996efc5a35a3ad90de128c5345a996c83d4a68ca7d09e588bd75530c31abedd9f20f38561e22484a45e20fdf66f1cce682dfbc31a"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/sl/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/sl/firefox-75.0.tar.bz2"; locale = "sl"; arch = "linux-x86_64"; - sha512 = "79137e5e42391dda48e521b44cd7d6f951886b1473bd517689c04b74a0d4a9ceef5733e128a5180653a9ef9c3546d4d1a591e0343292e4eb7b9310ba77ebad5e"; + sha512 = "1b16278f2f6e4df7cd437a7bb6a17b950540dfed646e948585cf0bdeba45630b4d5bdfc249d4fb49bf37dcde8a415053ef4ac3384c2534592ba189264bcf4e0b"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/son/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/son/firefox-75.0.tar.bz2"; locale = "son"; arch = "linux-x86_64"; - sha512 = "d782f24ba3ebc4882e4e5cdb9668d35b9dbdd614d31102efe85aae6d39e2890dee2e667534c1ec82f7e010463c5628975d5a9f06df2b84a2c0322bc0ad22cdab"; + sha512 = "7e9c5c578d9669f47f3871a4d47e211d2ec9215633163605239603c0fc51cce1d1d4b5c3c5a06a9c29c16f82c3ff2583fef1b78652c8afbf093557375e912430"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/sq/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/sq/firefox-75.0.tar.bz2"; locale = "sq"; arch = "linux-x86_64"; - sha512 = "6423c1957d7d3f80f8a00e9e04b4dad3143f0404136e4d8c695030da3acc261827c7d3c001a97b8ec6e451cef753819a3846e576c4cd6812cd45cd78e7700a9e"; + sha512 = "09dd8df3e07b2bcc59e77c55ff4f9b607c5c2cd343d784a3bfe172cc09fe0fa31ea519bdf671206a16ae73fa9550f08b77cfda0e030dac455de4be16750ce431"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/sr/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/sr/firefox-75.0.tar.bz2"; locale = "sr"; arch = "linux-x86_64"; - sha512 = "cf4de0253aca5994569925b5b5a2a80d560ad8d0bf6cfb9ec3b0f2944d542faa4065deb89375e8497f272349a10a4eb1db048631040e422dd7b37098fe912b4a"; + sha512 = "5a4dc12d716185ea86a8f31018198dc4eae0f791b04a247d2f2807d88747fd52fa39904bcd440c9da2e0225e64445c20da7cd7df75198c173a39aba59326e613"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/sv-SE/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/sv-SE/firefox-75.0.tar.bz2"; locale = "sv-SE"; arch = "linux-x86_64"; - sha512 = "83b0203af53d660dcfe801891a7409d8b3715ffd24ec1ea5ae526c712ed97b61470d23f656b196e8b8165eda8043eaba47475860ebc07f6fb28548d6a5a74e81"; + sha512 = "7082fcd2db01626e90e6850230b0a2b51c0eb394d47604a76de5d03e30997366f7331a7247e7610dbddb16f50c2a3259a842be248614fd3725f0063138e18d49"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/ta/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/ta/firefox-75.0.tar.bz2"; locale = "ta"; arch = "linux-x86_64"; - sha512 = "c559e6f5fa0d7040f4b15567c24c9dc20d4f8fa1862985b3b4aec465e83734868fa9235d8e9718837d543b6ab8a74655f01dddec0be9d70740f728697043a612"; + sha512 = "a85ff07912d369b915d543f9d06cf383a180bd14fd9355fce6d918506d8191da6f89c32fade5a9146700a95dbaa4a181fb513df1b8f28aeb7a09641baeece0ec"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/te/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/te/firefox-75.0.tar.bz2"; locale = "te"; arch = "linux-x86_64"; - sha512 = "6cc85a388d5c88a6ad74bfd1a411b9cc33d573e15ab04889753b8e9c006b94c6cb654ccdc72b90609e3a1eb79ffdecaafede306f80c7fe811fd8c583b7299311"; + sha512 = "5313549c22fba2a3bad6550a000e59c15595dc0bd684a14ba025fe2c4de9097a1dd47566b8f256f569b74a21d20538ae89182d5278af01c674f50e00d49c873a"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/th/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/th/firefox-75.0.tar.bz2"; locale = "th"; arch = "linux-x86_64"; - sha512 = "601e0c5ccf1b3725c399035ac2bc7d1440de7084c7a2ac1f12c883a7088154b3d83de7c0167a556599c3c896c57540b57a927f5c89cbef8d7cb74941aa76ced6"; + sha512 = "3f2b038b17553c962d2d964d342bb0884dc4acb4204fddfa90f8ed3dceba1aac40d537745aa32629402a7077a97cb01efd1225009ccef5412e14fd08d2aefeee"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/tl/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/tl/firefox-75.0.tar.bz2"; locale = "tl"; arch = "linux-x86_64"; - sha512 = "1023604de1e1fbce835511e50b0807c6e1dba76461b86c7e8506b640f26f9cbc854109b14a8872e6350899afbbc868f3b4427cfba32fffc6e6585f65fbb95dcf"; + sha512 = "1bd4ac5a59a06a71fc5bdf976e76da9535d0adb74da0aad922ce5ff6101bc48a7e6727c3f2d37161e1ae48be2ec47c2b7f6cb614a883739a8fa843fc5a5602b4"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/tr/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/tr/firefox-75.0.tar.bz2"; locale = "tr"; arch = "linux-x86_64"; - sha512 = "56a4755be67d6d764c62b8e226a14aa0f18741ab71d3d6b7dfcaf45dde124d821dcae75c3e251024dfd44d99b904538eaf4dd4a56c728af651a8c4a2c9533a3b"; + sha512 = "817d6e54c256d72469f5e1c6f6ffd8d95669193c3506a36d9cf06756847e074be018ad6dac9ff8e91c7720cc70811df2768124e4df85f34f2963a6a64e9f7d26"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/trs/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/trs/firefox-75.0.tar.bz2"; locale = "trs"; arch = "linux-x86_64"; - sha512 = "bb4cffcba83698fc3dd8edfcce361d58503ba4c890f2d906690d7036a3b36a338e379019df9129e2b509394737b716bc70ec7afdd485b12adbf7bf804a13e8d4"; + sha512 = "f3d691e6f04658aa09b4f864f0adabc9c8dd6a2fc135065126ef124f025a5ce6768ac9792470d60fb436f8d21229a92e1acb6abc848b3b84a2026179c15ae1cd"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/uk/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/uk/firefox-75.0.tar.bz2"; locale = "uk"; arch = "linux-x86_64"; - sha512 = "d406c99bb37bfadae4a43195be37f52023835ec9d771bcb824b2714552929def1d3888236dd9aecd9624ff1cbc13d24ea1ad0ac99b2d7f05d738f81eb0817ea8"; + sha512 = "679b75df8c1d2d84a7cf9950a65869484cdd20b0a1c016007280d08782c2ae2ef393bc553fa5c3c85177bbf922e62158fd57bab43b222327048753934aff5bfa"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/ur/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/ur/firefox-75.0.tar.bz2"; locale = "ur"; arch = "linux-x86_64"; - sha512 = "18c84f48270a12173fe93505d35f2a0abfd9400714b23ab28282efc38f9fef358dfdd3a182b57f8de9f8635624e85b735276db913ab102a5ba27d9cab94ce352"; + sha512 = "e4408eb34923ec1f668b7313ade263d1cdfacf1a748b32a6aa54c3c38886c8e1ea750179b0fb6dd41dc92fb419c9307aa2f32a7acce7248e460fe136af7f175b"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/uz/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/uz/firefox-75.0.tar.bz2"; locale = "uz"; arch = "linux-x86_64"; - sha512 = "8c918babd17af9b44a3fd3fd1473b4a55e29a8b8907269ec7e4ddad82fa60babeec557f206a6c8a1deedf1536927cc94d5d397992dc3f7353a131110a73f7d9c"; + sha512 = "30a9c63cab66e47ba4b7f8bad3b798e720d3668f44f230581c564e8887b6674d2df90b8534a1d9b28684b07f1b928585a4c4b46edf1e740e3541b60b5607758c"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/vi/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/vi/firefox-75.0.tar.bz2"; locale = "vi"; arch = "linux-x86_64"; - sha512 = "bc00562535fb5555b5ec00b28f477d78fff09248bf6b3cc8fa6c54bc4d3ee304ed0787c17b18b699e693bfa1f40eec2875962b02df7a0beabb5a30f0a926bb54"; + sha512 = "dea4cc3161f0d1a79f91b8eaa426a6fd8ee045d843261e7a2191bbe7addc9fa131b2d9455925381957f90e91145711be13fdc3957ec4bd8fddb8252b6f8bba3e"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/xh/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/xh/firefox-75.0.tar.bz2"; locale = "xh"; arch = "linux-x86_64"; - sha512 = "8fa553f431e350c85aef0b31f99c2c02d6acb2ee1c78d353304b6030740c959b6cd5d536c62a0611306a9e2a927568ce91a6e43294462e8166221511632a5452"; + sha512 = "d1fa435a17e23f3228a767733e54d24ba000599822fdb507d3a6dc35d92485bb87a3a398c12750080f79ea7e81dcf74dc73cc1747f923c0015f4875bdf3e75c3"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/zh-CN/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/zh-CN/firefox-75.0.tar.bz2"; locale = "zh-CN"; arch = "linux-x86_64"; - sha512 = "4a58da292a7453566e903612d2d8ec9af07e2c9f35346bdc4c1be4a9f586bd0d95236a300bd544a6f50bafe3ba582edbeabe3a18de925a85323e53999785e3fe"; + sha512 = "5e236fd89a0c099da13c65c00526e93d152258049f9b7c8ff0387ce0ed6b843504163ef82cc205b01e0a0f265602b2d6ca64aa04c811cc0a6e94d1a8dc952e9b"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-x86_64/zh-TW/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-x86_64/zh-TW/firefox-75.0.tar.bz2"; locale = "zh-TW"; arch = "linux-x86_64"; - sha512 = "9cd943600d1464d3116b9d141d58f06177886ebb6a41f491af8004ea46713b56e93da56b1187f96e4f6ac6a304a5f1ef00bc0f7c74fc333cfe3a7a094cd907dc"; + sha512 = "5b6b876f3dc8c2bd22ebb183cd4ee16a9157e14d93951e840d14a11a4067f85975c72873b82e49d797f7e67c00df6898e423a70360558838e8a18d95377af4ce"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/ach/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/ach/firefox-75.0.tar.bz2"; locale = "ach"; arch = "linux-i686"; - sha512 = "4b8e6c0a9617f35af6484a45781aea888693d89b87e73693cc4d39ac5dc8a4b5ade221efc2c8367f799f19b86d8cc23994c28adb519f472f0552487c6279e0b6"; + sha512 = "33ab7bae767308f01bb5d0a5bf7ad73fee8eec71d8393246b704702b81b46240cdbf02c041753e1910bd8171e36f380c77a21afa2f71926f25dcadcb2d6c2b2b"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/af/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/af/firefox-75.0.tar.bz2"; locale = "af"; arch = "linux-i686"; - sha512 = "cfb071be89b5c5d4943402f545a001717aeb46df6210a7c5efa58ec73f192799cb0b5e1d4cc61cd13b072a9a320560f6592700e9cb0df1fbea4cdc8d24c8a286"; + sha512 = "83842f5ca120205597b6eaa5f03e2f1d720a91cf3323fd44723c79c9aa3bb73e2c31054665fb32300f6ce707363a32d5d34859d7407015d3b4456c831b290ecc"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/an/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/an/firefox-75.0.tar.bz2"; locale = "an"; arch = "linux-i686"; - sha512 = "ea87ac0ea1048dbb50ef76b93d1027d78fbd9fb18acd7e77121954ebdfc2bc8fbedd2e3b61461ea884e265be744ebe7d300b4416f7e3ba1ac6cdc86710e34b33"; + sha512 = "2d53551b4918ce86842645492072db26fdc50fd4eaa4edffaecf04fbd83bc597c469a5d795c62aaffba4abfd3d130752d96739fdeeb82970c35826d005af16cd"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/ar/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/ar/firefox-75.0.tar.bz2"; locale = "ar"; arch = "linux-i686"; - sha512 = "2301d1d7c3029829585442a8cb49a8fdb862044fb9329304d9fbf13e3359e60b452fab822d57743a7fb9b037ebe45607a251581b22dd682ef56c73a934c4cede"; + sha512 = "1e42d930aa9903adf8385b695bd1a3aa051d51ad494d1dffc5d2bc04ba95574472daba608c182332195d7d60069b045f2a5c5762b7505e14ed7a639086fef264"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/ast/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/ast/firefox-75.0.tar.bz2"; locale = "ast"; arch = "linux-i686"; - sha512 = "4b1a6377f4cce9f16955b045eec886352dde9377b4ac4349ba544bf5554cc8d8b4406afedfdca53ffc2a3417eef6deed74def9e7d370c9800187d589a19a5c1c"; + sha512 = "d52c316d21089535252ca626b6774b65e5994a62732203200a39605d7a5bace9c681d1f120e1425936be212a9ac871c24f739dd7d91c0f371029083e3d3afde8"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/az/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/az/firefox-75.0.tar.bz2"; locale = "az"; arch = "linux-i686"; - sha512 = "dd1a23b3a2a6ff1359953c2e4208e3e2eca32194ae8b48cce9654ffab680749b0a9cf9d9f13ca589b61d91f947df33ab2dfbbe559cd90c470ac2ab7ecff46a63"; + sha512 = "121c1e51d5b58f9ac912d0737c23ec34471a4c8fe99287606a350e70890edf23b28c9c145d8aa0d29d567753d047d484a0156c1f004228682a347145c1bd85af"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/be/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/be/firefox-75.0.tar.bz2"; locale = "be"; arch = "linux-i686"; - sha512 = "052bb1c0411c0d1fe997a394ef4dadfeafc4b01d80b4f7b5c80cc9281d1cd7affe65560fd19c085ffa1305314a86e2963f5baa814ea4ca285fa2e151af92a257"; + sha512 = "f7c3039db50db23a43575e5ecda63643214731703179a42007b2ae44ea20649dc9629bce1f9738f35a882841666b1c3a0ff4bcfc38ed0e5005bb2b6b058b44a5"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/bg/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/bg/firefox-75.0.tar.bz2"; locale = "bg"; arch = "linux-i686"; - sha512 = "bd12158f7faee488c820853c6911f9c6e5ad92be9918669814761d2974e85be6242fc7b0e4f531a73692ec2d4724ac8f0a3371ff8b308012a4c899bfc1325444"; + sha512 = "d9853f385468a9644684f3accd7572f081395071ab62b4bb8adaebc9213cb8bad8772ba613a404f9a2f0e75469a6d224264ce5d00ea97fe2f16f8d0a044b3104"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/bn/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/bn/firefox-75.0.tar.bz2"; locale = "bn"; arch = "linux-i686"; - sha512 = "ea9081d4dee23cf6ffc1c2ad7e7d7228cf615336f83725f46d53db5924fa09cf948344f95f8ff6ef57b19799327648ac9d1d6a0bf104727e85c76ceabeef1596"; + sha512 = "1bff545fa7dfc083f07c8546b5d2c18d1bab3ce4844fb1bb667d151c081c639b3fdbc2122e45230ab45bd5251364b45d937d24a7b285b69139f4dc544e525c7f"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/br/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/br/firefox-75.0.tar.bz2"; locale = "br"; arch = "linux-i686"; - sha512 = "67accbfd323a94fdd8daeb3fccdd6ef294c501f0a796cff9274be0b71583841f15e918781aeb30c903a5d58554caad4d4ad2d1dba7dffd983c642661a22cfa79"; + sha512 = "cd724a5c402333792e5d739ba274c87cef983d3c29f6371cc1788a6b285031c5150b21cab235b603b240da3551c044abbc283f8313c8dd8b0082677b65406fd8"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/bs/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/bs/firefox-75.0.tar.bz2"; locale = "bs"; arch = "linux-i686"; - sha512 = "72e33a58d27615dcf2ac407983f324cda4dcd127f4f6a7149552822578520abb9cf15c28aabc3a09a8873b392b0d7fe6976fceb2d89197c34a17fb4d4d1b5612"; + sha512 = "47770c4421d2ec0035b0b3c6158462042f792f4ac87887c6704be2f3d34c8409c3e0570c6827f87e72c4697f89e5f0e0c574b9e90704798e9fbeb80c20968aa8"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/ca-valencia/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/ca-valencia/firefox-75.0.tar.bz2"; locale = "ca-valencia"; arch = "linux-i686"; - sha512 = "3cecb8d3401838ad7c8668cbd424a6fc3f141aefdcacd28733301db651d31dd3ab996bd41a9dfd3249c4ebcb48c6d5eec464698bb6dc7fe9269dfd045e5eec08"; + sha512 = "9d23f45405e98eb5d6534d19e09237f7488cd9a6310acf85935c0f40132a91ba2f355a15a46742796d1f397d65e4f17d599aa81ccba57f2acb76da80c2d95af1"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/ca/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/ca/firefox-75.0.tar.bz2"; locale = "ca"; arch = "linux-i686"; - sha512 = "545cf4e37c7946b0fc4b92cefdfc0e61e9fb77f01b886e82a4c2e9a348b720b45f6df84828fa8cd8e3a1827e47bd112d94d1513b68a96c1e1b2909729418535d"; + sha512 = "4f27d129114a4db3f597fc253447c6f27bcfb566fb197dc4dc26a984f1abbd868242b1c0d077e6d514efe1e2e083378304ff490eaba26f669ccfb5a744d3899d"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/cak/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/cak/firefox-75.0.tar.bz2"; locale = "cak"; arch = "linux-i686"; - sha512 = "6fa83191685c96c860fd5b9ff8a27fa809c3595f2fe5ccadabc510e84e77da7210b192e589a7835bad8c6e5c46b7866124f66c419e58d0386a9bf8dd1d2d6583"; + sha512 = "522852f4ced9302068b6251a33735846cbec73bbbe9ab0371e8456d3665bcddfc81bc4c258ecf4f0e5bc8f6f15ed27d3e4f88ffe471e9e8af4beeae85aabc949"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/cs/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/cs/firefox-75.0.tar.bz2"; locale = "cs"; arch = "linux-i686"; - sha512 = "50c22882418acac3f95a57691a5b1752ae51f209a50b60d7ad29b8e1b22b0aa372c1bc104dfa5563b6de14f6a09a03a85a595434f4bdc45a3ee932390249165e"; + sha512 = "1192630fffc7bbc3232c8328e066f8392f967da5a2254ba726243ed7a681c321747a39397dec8b11c5ddc4d725445712ffbb238677856b2ad2ddea41c8db090f"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/cy/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/cy/firefox-75.0.tar.bz2"; locale = "cy"; arch = "linux-i686"; - sha512 = "0475351728c3dc6afcf1e816edd5737f6aca15848da790616cc2fc3d7efe253ac2358a5b7226bf4ab9c3caaa07e91329e77622e6a022d81dee3cd7dc09532a5a"; + sha512 = "3a327e31faf8eae17c60f7787bd53249957e5177d38ac2138cade1454ec4bd870c429215f1e0a5b9cd124aa660cf4d77a091ee579d865470c5cdae0703086b02"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/da/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/da/firefox-75.0.tar.bz2"; locale = "da"; arch = "linux-i686"; - sha512 = "5a078e0be9d67fedca8951fb471838a54972d25a53d95c132b439028c20276a8a43183d249878fbb706f6b5d7d244bfcbc14cdad43ee2616eefefcbbc7876b5e"; + sha512 = "297291ed06c290fbd9ad6172afb790e8f8a619ff0330337f5e777d1e4ef17ef52ff1cb94b2966161639a28221dbc9ce2eb28bd9ad14029ebcb878f79053386f0"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/de/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/de/firefox-75.0.tar.bz2"; locale = "de"; arch = "linux-i686"; - sha512 = "8348b5d882ecc1fe9c4632b6644d756578d29f1ea1938b3953c6c2f7ae70cd02e00299bb4b5384775ba5e45f43ebb0d79a5b976385da4ad6cfc192edef0bd1fd"; + sha512 = "7dec33f42715250c9a765c7f3f4f177101c69f7150661fc844c4742434a8d063fe1bc9149adf81c2729e848584fd6f68d1cd3d697159a1d5b4ed46d8dd9ae9ed"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/dsb/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/dsb/firefox-75.0.tar.bz2"; locale = "dsb"; arch = "linux-i686"; - sha512 = "63b9fb904d0040d9ff626eb970e00fa58288527a9068c234f02d41af6cb33ec9575595b5d3661c78abafe4b2472d3e8b8f5d3c8b92d8121f564fc9f71883195c"; + sha512 = "b5d8c78df21e8f8f1d96ddb042dcbae44b4d622d6d39a0a3d7967e89004e5e229aee84842b6fbacc90ae3c65bbc252a9a879b552a2546ae168d7f07cc312d207"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/el/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/el/firefox-75.0.tar.bz2"; locale = "el"; arch = "linux-i686"; - sha512 = "1de78be4c89017cc39c19e6196bd2327bd24a4c7cbfdf1a77aa87b0b0395e9791443d034edc48afacf1fc20b785369e48e91c203edaca5c33cab10c9a5f098f7"; + sha512 = "8888a897dec9005edb469d27f40ce9ba3446c4ba713401f40955483f329114271c34a832afb93b48e0e41adfc1910e4813f79fd619a085ea15443743a72eeba6"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/en-CA/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/en-CA/firefox-75.0.tar.bz2"; locale = "en-CA"; arch = "linux-i686"; - sha512 = "1a78bdc245161bfbe2cb7d6488f750d53524feb1fd9e04b519136bd0797f8ac5e60b1d9b905e27f98512e4d898498823768de0b51a8fcc682a807f690df3458e"; + sha512 = "713522e5c5305d111bd1eb55bba42cf201da74641593506b191ed1ab3eace55c1ac9c9a86182d667d7eae2bb4cf6fc9ddfa1ce4c8d31dcfdb0f2fab587fa6a8f"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/en-GB/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/en-GB/firefox-75.0.tar.bz2"; locale = "en-GB"; arch = "linux-i686"; - sha512 = "c12442798aa2a5e3a1f31f934876b281abe0c956558cbb5042cb5c94bdc062bf7659d19f0ed67b7208243cb42244aa7685f76da08df6a4b8d2013cc6ffeae392"; + sha512 = "021b66ac6720deb68e45b1bdca86d8aa7db2e74cfa7391daee108cd002dbabc3f6302f380e6c029c7b56781dfd9bd34f8cdc1135851297e4dac9dc56f762eb69"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/en-US/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/en-US/firefox-75.0.tar.bz2"; locale = "en-US"; arch = "linux-i686"; - sha512 = "558ae4312ef18493d69c7504f10baa3598fd6e47289f316346b6df16dac97ef25894d6d2c776ed2a8f1ce0546e9b4c6086fb58b0cfd5018424b81068a6fbb7a3"; + sha512 = "feef8046d08aba827f6dd2510cadea53a89983a4889c9c2baad3d88123639b90c8052b552e2bcfb03b6e9fb43ebda29815825ef7fd4d9ca867f238cfaa0ad1da"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/eo/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/eo/firefox-75.0.tar.bz2"; locale = "eo"; arch = "linux-i686"; - sha512 = "ec05a1cb0573e27b5c848dc67ca6346ec43c7ea25d0854a84a8d61804946e970ef45995140b04271239d70c8d737c144d629384d221ab7167b581ea7f3982370"; + sha512 = "49b0adb7c5dc8e1b7ecc121f65e8a6853f497a9cc151b4eb9ff6631af33b12f7b00186ac2d13390cfcadd9fbd1b361a597ec1d9da62b1a0466d85d8e313be4fa"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/es-AR/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/es-AR/firefox-75.0.tar.bz2"; locale = "es-AR"; arch = "linux-i686"; - sha512 = "aa2064be8753c26359cc14a2d6c4aeb342cc14876a9565ea214fec0378b17074f811ae948bbb970371b67ab95cec1b68a0393c758874d8af43863b485801ef4d"; + sha512 = "a74988338fec99d50f5a16ab6c59630ec1e535338da3f23f05c7967bdeff41cb058c238ab2e873f96cab93db821ab066e6222397761578a12fa73b42c0ffe3e9"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/es-CL/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/es-CL/firefox-75.0.tar.bz2"; locale = "es-CL"; arch = "linux-i686"; - sha512 = "c4a3ff9543e50cfb200c21c80935133cbd8016da162bf8379817e86516ed23b6caa096228f1ff3a889f401f0ffbdec4d06015a81fcc0f5bf10c28e9097d61886"; + sha512 = "b4abd3f7abf1869bf360f5987e13c37b142b4c8afde51c790feb2563351a4754f385e0880ed51a1cd7aa3a5ed907e3cc22ff3c707d2923c47459c977cfedeb08"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/es-ES/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/es-ES/firefox-75.0.tar.bz2"; locale = "es-ES"; arch = "linux-i686"; - sha512 = "12f955890bc274d52d3a6ef81440c85d8b6b13332c2b3bfbad377cdba0fe8f64ed5dfc8f1ba576e9a8d0a5bd425b10e034a46b761ec86e7c2a5228bc2fbd98a8"; + sha512 = "8a9c61dd9329c983c394c33c97c962c703fcf51a283dce09bb781d96879450adae5d8d78ca9d0d1892380fcac7ab95651e37133a0f836865a13946e2cb8a7e39"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/es-MX/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/es-MX/firefox-75.0.tar.bz2"; locale = "es-MX"; arch = "linux-i686"; - sha512 = "e38bead8333f3f29319e045aee1612dcaf4091d8cd543c9345b0fc78a563ee0fccd936a24416cdc91ebd184b479a504f2ffb72648e9d6521a0f8a1cd68e1ba79"; + sha512 = "a1b7dc0eab0d4a8c713e27620235617a244ecadd62a125de8b1b60de7811a4d7e65051569ad4391b2a312107cb750c74d4c541c580f3af86b88b2fb84d93ce67"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/et/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/et/firefox-75.0.tar.bz2"; locale = "et"; arch = "linux-i686"; - sha512 = "5437345a4ef6179898f7084c81fac8926f4d44dfa92c7875f7ffab5dd02538fd3e434db50abc486b460cf43a95162f5c38525c20d4872ff6300e182a6a3f2ae3"; + sha512 = "181aaa954ff9024a4efc211bba348461c28b892b1cc04eb50989cc8da78d88a350341de520b4a60da096ae399c28ad05802aeb73cf133171e8a4ea2693cce5f9"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/eu/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/eu/firefox-75.0.tar.bz2"; locale = "eu"; arch = "linux-i686"; - sha512 = "9265ae811f7e78c7078ef2cacbaf82356a37ce4ccf1528c72303a7b70ff04c59a43173e3ce0930fdd5d0bacf75267703965e8e99ed06f58f7444a0ddc9988a84"; + sha512 = "893fa9700ca874b2a460d830f2e10f7999a6b521a351a88bf480232ca0270581f4ab334ac2d4721e3f5fbaec0105497afd5ef09b13f3b96a1e84556db79d0ef9"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/fa/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/fa/firefox-75.0.tar.bz2"; locale = "fa"; arch = "linux-i686"; - sha512 = "a1ef3b8d4547dd186bc66425da0b8e92a3d1bb30e05ef3ff0bb6ab303758f3a743ae6167024e290a409a4c1381aa8b20f126fe3c8b057a3b15c2a6393affdf84"; + sha512 = "fbe8cefe9e626d07f360b1ab30fd04c8628669f5164d5dbfd12cca72e17e6454de367e170565e0d7f1c30e300d315f54d7c6cc06c8367e6d0c428a994e9ba067"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/ff/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/ff/firefox-75.0.tar.bz2"; locale = "ff"; arch = "linux-i686"; - sha512 = "05e3660ec39408afdf19dfa57b0538d69a87de58885569538f9786c27d7177666c0d24b9e7c92f013b603aa5f7a873b3be84771016de50216b3d2093e9ab2d6f"; + sha512 = "7ea337b8f3cf536749cca253e063ab326e66a0a33ee0bb7863ba7c46d7d9ceef443bfec0551770346701f23f5adc2750225e8961d6fbbb48492afe7ec39a1272"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/fi/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/fi/firefox-75.0.tar.bz2"; locale = "fi"; arch = "linux-i686"; - sha512 = "a540afebb39f0a0fd0013635d54a4026007b2134293e669dafccec91f0c19045a1ac1c4983d1acf4c68daaaefef5d2b6e05a2c817759e32d738d71542145af9c"; + sha512 = "c97d9ceb5a98acf54bf37c1397973c2872a039812bc591979b44497e7f2db1cf7bb5fab75b4a0cb70df2d48eee4cf5fc55def69c22da9a0b5964e2af81bd0457"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/fr/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/fr/firefox-75.0.tar.bz2"; locale = "fr"; arch = "linux-i686"; - sha512 = "9f6007b920b23b345f78dcf372186c7b6f99fcf1b14f20405dc3b524cc057bc5d5acd9092f41d7f7729f5afdc8a973613ce0617c93e98ea2448154dd968ad344"; + sha512 = "15081d21ed77c376257e23cec42ba26023792cceb634b0d0b928471e1abeba17d9245ba5454452b17e786e576e19e8e47f20478002a3df2e15c56e8cb19faaf0"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/fy-NL/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/fy-NL/firefox-75.0.tar.bz2"; locale = "fy-NL"; arch = "linux-i686"; - sha512 = "962fa9beac2152188f415f64418747d1fb8331f7abeb451f4fc10580fe3b35531f7be7d3a79428e1bca476e162701f879f7392e8c1fcf75f67b9af9ad09491af"; + sha512 = "c352989e6ed3eeda8ce724ff110bb09c2ad3ce4a5b1f45bd9335c1186dcc1c310efdd24c9a2adf7a0f31278b3989d79a683f7f770670c8b1419967ccc2e0704a"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/ga-IE/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/ga-IE/firefox-75.0.tar.bz2"; locale = "ga-IE"; arch = "linux-i686"; - sha512 = "cef86c78031b5f5ed53e5c11cf9c2fc87b95ee7dfbd4fb4c60c4934c6dc2cace1576b657e947a185067c4faf1cf52c641f720d8859eef822d4d727ab4c51f9fd"; + sha512 = "ba27396ca8f76533033bc78066074c3aebcd687f1621b14db92a4952b226bebec0bd399f697dac92b71e14e91fefedfa6d4188dc067bbd575e07317182408510"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/gd/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/gd/firefox-75.0.tar.bz2"; locale = "gd"; arch = "linux-i686"; - sha512 = "fe845325b5314e786653000fe99b9a2645036d7058e09e68dfc6a6b1d67e0686c03fe69fcdeb017e96b1ba3eebbfe49f66e1abb01f0da343218597616adf3a28"; + sha512 = "f18b4acc47fcb9135ac28206011b6fb3fef5dd6640fab3e88d8e8f9dc23b19d427fcd461f70a00750c1739b3e3f6874c171dacd9c54b213eb9076dbb9a511b5b"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/gl/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/gl/firefox-75.0.tar.bz2"; locale = "gl"; arch = "linux-i686"; - sha512 = "75313fc9c8e0146668293f7689c1655835fa5bb13e87caafdb6bdbcbdfb356459ed7b181daa2de37d7a74740d2ced4edc34886bbd3d44ff39086a24ffdc2f81c"; + sha512 = "e4bec63583908fd225b903e45007e29f357e00fe7901524d5fa15bfea04211f55d2557c1ccc1fba28eff1f2dfc5b364cb7c52d438428c26f09aed3592f817c50"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/gn/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/gn/firefox-75.0.tar.bz2"; locale = "gn"; arch = "linux-i686"; - sha512 = "2b1f1b34bb99cc412a00c74a60dc8964700b8d99d76f96a095f19cfab9c55ced8c3f1fedbe54e62c74401d8fd777cb1c6ab0f4954a553ad4898d03a05653bfc8"; + sha512 = "dca1a1062e47b8644a7e1a772f6abec1ff615d8857d74d576baf9a515fbef814f6d2e89878a3ea2aa4a7efb6931caecb3845f6eefec91c70299c463c2141689c"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/gu-IN/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/gu-IN/firefox-75.0.tar.bz2"; locale = "gu-IN"; arch = "linux-i686"; - sha512 = "fef942f3ef14a660a0bb1420fd3c7af454ed330e01b41834b7a919927880a3c8f266339a5d95eea9c9d4fc9eeafb7e38d243726fe8fc5a2d0d88871c99c37c8e"; + sha512 = "efa6f443a092585defac47cb75d8ce85faec76c2624ecbf4cec3b4e8ffe4e582de0fb55f4901bcebedb0d991d709338bba212117fe59b3c6496fc5f35c1a7694"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/he/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/he/firefox-75.0.tar.bz2"; locale = "he"; arch = "linux-i686"; - sha512 = "509d12bfd4708b9836b9817573c06533a81c9704f8660a1cce12d28398c91cfe52a22e3f139ee34b3f5c762d122e68ba92e725f41dceaf0b0ae5bce40ccd05e7"; + sha512 = "ea76707fa795234f36088749cdc5a139482577d4488d476856cba926e40ce24d020f76a526efeebfd8a5840b9ebb2a93d71ce9be9fa8cd9255e6940074f22a8b"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/hi-IN/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/hi-IN/firefox-75.0.tar.bz2"; locale = "hi-IN"; arch = "linux-i686"; - sha512 = "6157cb4b53c2c190f9473b8086505fb0b12de5e9e902edcd259f5748cc462507fd5603fb08b0c19ac8e64a63ae3552244b61a08904a40860d9210debccdd3edf"; + sha512 = "73bde105b324df05adbc581e59c1b723b1dc0ecd2b35b9029ececdb83acbd5cb9946382f78c9bd02a480635c58c9578ec982d61793ae7e64e5cf940c09c5a508"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/hr/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/hr/firefox-75.0.tar.bz2"; locale = "hr"; arch = "linux-i686"; - sha512 = "7e3fe339fa2d1a1d7258cc3b3e05397be74792ff7295d5a391b723ed491e5aa5768c66231935e9e69c864b2914e29c3bce8439346d23ec6e075645ae15dc4111"; + sha512 = "e237486d9cc6418d213a006e07c23ecaa3732496d169f7a24a568866e1ec1276aa9096c16aa696baffe689096b8321c83e9d47a119257effd77c3b1b938323bd"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/hsb/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/hsb/firefox-75.0.tar.bz2"; locale = "hsb"; arch = "linux-i686"; - sha512 = "d7e3dfd311e12c6a84b4d9dc064c25b9a8ab32aef063306dbee9c8da6a057af358bf37cb2c6ae3c4c6f1a9f4512d6fc1cfab2e60bdbc0aeda530a2cce3085561"; + sha512 = "be2a1bd69573ae49b011f266402a5f185a4eb8eb3e9b506a606b1444ef54091b36023e6d2dea2d118fa4ca5cc58dcd1afdf2e5dcbc3d38a7ceb776e6e06756b3"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/hu/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/hu/firefox-75.0.tar.bz2"; locale = "hu"; arch = "linux-i686"; - sha512 = "807905640f123592a56d3343bff129ac35f44ddf60ab04ab719f17ceca5dcf8cb21b1f24dad35580a6ec50bc11bd4f0243a28aae62800154f4d98be0d290e402"; + sha512 = "405ce0eb8c7694ed2d9bb5548f8e56d63c14e59025cda561bd49f0deda1bf0b280c344138d154510ac8ed124e4ec95528f84212fe1634bf16477615971148f17"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/hy-AM/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/hy-AM/firefox-75.0.tar.bz2"; locale = "hy-AM"; arch = "linux-i686"; - sha512 = "2839c3ef418a083e5ee8ce563a4f06b5f1edfcd9c86ae90ceb75a6decb1ef587b9b855055fd1fd7e0b1e25431c7e67999c69278339ed94d86744002f4d954a07"; + sha512 = "21d7c5343f62cb8a841872470013d9b836eecb0f780794108f56120c4bf26ddfe923400e630f6d981913d06875e7473dedaa3d4cbc2f9173db80ef34c3a6e0f4"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/ia/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/ia/firefox-75.0.tar.bz2"; locale = "ia"; arch = "linux-i686"; - sha512 = "900e8931df0bd992a22556f8796b59accab53593824ce5928cb69fcee5f28ada5a4640a25edce54aa2f81c59547b8072cb09fedf852202d4407d5e4983a3599c"; + sha512 = "a8c070f164ebda582055628b324e03971602f15741314ce26024eec0539a92341020b7fee16cfd849189c5c106a0b3dc1fcb04d3177d7a4b06bd0cd2db74b614"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/id/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/id/firefox-75.0.tar.bz2"; locale = "id"; arch = "linux-i686"; - sha512 = "dbfc727dd69a3799c2c2350f3f79b01b1b83e011cc5e0f38acb1c632324f8de90a7d70dd32a7c5c91dce5b0becfc530563ab290ab9176a632ec9da80a3ca6a66"; + sha512 = "4bc7b360f3fb9a8115541da54f867c693e7c8c98bf24685ae9ac1c052c4cf54126ccfaa3aa2c714a0450ffee0b6198370b1092ac99ba13c289bc46a202ac1189"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/is/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/is/firefox-75.0.tar.bz2"; locale = "is"; arch = "linux-i686"; - sha512 = "209e319507b34b35820a28835aacd4f910a00d0edcab29c30a3a3e1278ee3a5934d5237f4b3ee8df90abddb278cf497790169ee52266f965e368746f9f8ee326"; + sha512 = "c9a1c9b03d3e7089a12f2ccceaa525b5c9ce62dc1e602a3899914e8adae571bfe12dfe7b2b5e54a4b2de01c869c33fa1f7478d1bc6d54e4dcb284ce1da7b32bc"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/it/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/it/firefox-75.0.tar.bz2"; locale = "it"; arch = "linux-i686"; - sha512 = "419da43d9c9a3048fa8552f0e3080ee2bdcc2a95b8c88958dea0ca898cecb45d6fb634db31af827b2f8842275f88dabf0b940078b08f2d91aeed5640bafdb00a"; + sha512 = "0adc5cb03da1e36650c90de0cd82065a014bd944da4ba29f80f2fe74eee91fbff13378011c938bd79c110bacd0e04fcb5ad6ee7995fd76bd5ee98cacf32c2c98"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/ja/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/ja/firefox-75.0.tar.bz2"; locale = "ja"; arch = "linux-i686"; - sha512 = "492b7f8f53b905c8e5b9cd9e16553ecd96f6fa0c063939e5e1b655a89f78b1b16b4ed29d219710d4bb3ff8335904cec4b494b850a735697bdb68cc9ef9a1f202"; + sha512 = "fe743972968881f327812dd0a81ffb8564e0fa7a6f739a3a59dd039f560078827ddd36ba057b80792347b1cb19e262f34c276f6ce788453089ca0d8cf8d69a55"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/ka/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/ka/firefox-75.0.tar.bz2"; locale = "ka"; arch = "linux-i686"; - sha512 = "8c0d6457a97f9bafcf902e718d5ca85f8fcbc09d8be19ba702bf76a9eabbd607b41411db242302f1a6d100e541805bb4050e48510b562191e0ea2794dd2d5bcf"; + sha512 = "0715da694820f26550e0becaa151c19d366954fcfc2af7084b880cd12b2f031b6508e69b3ff687941f71c0b3467f5d118ec3f79be2cea6cdff22d2b5e4f050ff"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/kab/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/kab/firefox-75.0.tar.bz2"; locale = "kab"; arch = "linux-i686"; - sha512 = "d5b85445c45dbd9ebc9d16bbdeca374aaabbb6adeb34f661d329995156ae2a71cff6ccc473380cfee1822c1f3f71d4fc2b00721d674499ec31d278f486f57031"; + sha512 = "2de6d3cea7077ddc896cdb95104a122b85f001013c0f59902b049423fdb370d5090a8630501009803592935fd5f90ade7625ef64b3b0bfecc712141b10f2366f"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/kk/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/kk/firefox-75.0.tar.bz2"; locale = "kk"; arch = "linux-i686"; - sha512 = "c1da7ff1e1102fa8c51f8e5e268aeaff7e735d90608ae8a07efca5e88b00534da1962f963a51fa8a03917b8ed7b598d7f4ef7500528227fff1da87b77571241a"; + sha512 = "a0a1a9e7c2fda1bc92bce084472d432d4007fdc96707d7a926e884521c4ba8993374ef55179b7da7267d14699f079f5722974edf2713d449a59b76f01fb897cf"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/km/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/km/firefox-75.0.tar.bz2"; locale = "km"; arch = "linux-i686"; - sha512 = "939b3072f867f6a6a4e8d2ae5dc7e49e351216ab0f767235ba82939ead1071c4d33eca4e4ced8f39715b12884765db17970a9bd88518c9e499e3b0abc0b8b9d1"; + sha512 = "4008860591482c70b0194e565f3f1fbb30b1607b486c8a3afc3e3d9465e24c3cc0da2c889905a7cad349484a386d7a2082e86e29f41fba84073cabcd75c5e358"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/kn/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/kn/firefox-75.0.tar.bz2"; locale = "kn"; arch = "linux-i686"; - sha512 = "b86414a3698ec62ec5f92a818c6f00460d246a5baa3a24f33da5b64b122ff6393e9e14a45e3778a45982df73c276e19efddae95a5ef41171ce5b7a995bbe9413"; + sha512 = "2628e52d65223c5a1941d94435398041cdbc7d5588a2227a9f17227800576a56975d5db2283d295e82e63e10c4ce6d3bc7999329fa26dd3c8d44dea025f96640"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/ko/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/ko/firefox-75.0.tar.bz2"; locale = "ko"; arch = "linux-i686"; - sha512 = "b1f8e57c9147d834dd610391a908599cef69d30f61c9075b6fc85c641a6bd4e74b54823cabd09d2d391d0734024ab2d699010b7fcc8755d687cf7b6ef1f250f0"; + sha512 = "9b78d17bec3f243154cca1ae1d955282e8700dac9bd93890be6fe92852af67a1f81eaa5dc2465e2881398508af90f67fcb2c90d54edb1fe874f9717bd25dbe2b"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/lij/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/lij/firefox-75.0.tar.bz2"; locale = "lij"; arch = "linux-i686"; - sha512 = "256dda3e0cb8eb52dc7f778c0c9bbf38ebec313afe0f24e8d00a823d1eab4cbd30cc7fe9637eadae355e9494d0993f3060113b502a2daa4c2aa40154337c50a2"; + sha512 = "01e4dbb561a962b4332cde78df74a229d6aae4cfe56bd471262fedd9fc16a948415e6f993724ed53eb878a999020b22f761f4ee3e6f006ae8447513201ed27d1"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/lt/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/lt/firefox-75.0.tar.bz2"; locale = "lt"; arch = "linux-i686"; - sha512 = "7d57c55f2b3c3d19efba46424eaeaca350c70087100e8954bc85cb0c74fc65d3c47a3319d2aab5353d2298922da8fcb007f84469b61e2f9f6c69e5121212d9c7"; + sha512 = "c17fff73a4f72378dc3173ea0ecde0492937a6fcee4108935126256f0ab085eb934be830907f1f4464205673023ed3cb21794cd540533f4e8defb42325b3bc93"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/lv/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/lv/firefox-75.0.tar.bz2"; locale = "lv"; arch = "linux-i686"; - sha512 = "abaf628da902218ab6394b547b1e4d318091b0fdbec2bfaecc75a8365df56a668fc7ddc21241497af7710317676a055c2850bf74960204f1160adf1d00c81461"; + sha512 = "22c90601b8162512ac045ffcc3d186dcf4e0d9d2330885e07f7df72224a840073415de0100419b981c08b73ba4c92da01edb49d1dcc9efb1abc0ce47b94da012"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/mk/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/mk/firefox-75.0.tar.bz2"; locale = "mk"; arch = "linux-i686"; - sha512 = "0bc74823a7ce8654f366949144c2876e7a3a526b96dac37452be4ba387234a302ef786a38e3828514c5164d609014c15181472cc2d3e0f75e8871b8af859adcb"; + sha512 = "a185e91441e302b9111d558c3ea0d7601347e843393e00adda74a903ad0f93a23ded2c8e61c5eb628996c0ef5b0fd63209fa9fd98f3a0040a9a8d419214e5df6"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/mr/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/mr/firefox-75.0.tar.bz2"; locale = "mr"; arch = "linux-i686"; - sha512 = "d1d6e6bd41ef63424eefdd4a8fca9b8b20d4d452117eaf6abff22f9b42f7a22a4182fb826cecc4c38975caf6fbecd43fca35f818053c2360ed723250c7e95fc8"; + sha512 = "e8d5066dcaa0c7168f804d1f1047435bb188c6daaf3f8aa472654b617c7d4471f7469ac2560782b6463c315ccd9ad60efacc8582110bec9279cdd16dc7da7d09"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/ms/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/ms/firefox-75.0.tar.bz2"; locale = "ms"; arch = "linux-i686"; - sha512 = "e3161b2ea8bab3d720b04d69e966cb1265cc0649241081127ab5ce31d4036699a63231b8342a07c215d53ceaf5af2567da1aa1e71a46439a797aaae979bd17cd"; + sha512 = "dcdb08020fca5a43581b1900316cf7acba285a87b9cc0532ecaca8f85d1ac3b188eeb9d65ba68557d4350b7f2e0fee478dd5a9ababfd3c40ef1f7b4c57f08a39"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/my/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/my/firefox-75.0.tar.bz2"; locale = "my"; arch = "linux-i686"; - sha512 = "ae7830a149522f0ed9bfd3e53e1c692534cd7c2f43d6eece8d3789764fd8ff7ccaacd6ac2efc9fe0f45c7cd0ea8b612208f330ffd0daffe9243ee9e1b5169a31"; + sha512 = "d7005ab40feaa6053af8624130ba4e5d60e54978452b6e63a658afc8321c9f4a7eed5406f07a16961f6051e794943c6ac6582e1723cb8a518332557a94dedcc4"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/nb-NO/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/nb-NO/firefox-75.0.tar.bz2"; locale = "nb-NO"; arch = "linux-i686"; - sha512 = "c25803b43b21a2ebbdf16a8a9825cbfb7442358a6791ec6f268d12874e35f24ef48e8dee55e6ed5cd46d193fe59b902890b6b718fa8a6e121ef6fdc359dc903a"; + sha512 = "b6e0894cae9d257ce4d0becdcb65f9fe3693a947cfadfc88eb51ee93a4ade9924895a7f252317d145304d5bdc866294c437a5f03c15982fef8a970145678aa0e"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/ne-NP/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/ne-NP/firefox-75.0.tar.bz2"; locale = "ne-NP"; arch = "linux-i686"; - sha512 = "b363fcfb531981dc423d0b134cbda0dd5c07f95631cc3b7644a7f3701d52ea20f5e62036d1e845ffa2a4f65e9b4a295bf9645ade31f59f3af864ec7d83f82240"; + sha512 = "fc7a97902679402185813d666ea65cfa059e4121c126a4b82f2fc70ac04790b7e73441c4a3e7c49ea6292e049792368f7abb9924c74b52ca342d832231e80c51"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/nl/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/nl/firefox-75.0.tar.bz2"; locale = "nl"; arch = "linux-i686"; - sha512 = "7ffa10349f0705a751f4e29775b43b81f2e23af764774c27a5bfaca90656650090076fdf3c11fd29dbbf4af9cf4d39b3389b885eaeb3e5abc0a5bb9cb9b85aef"; + sha512 = "c96cfd08d2b3bcfc3380cfa4e7945c92ad6c1a1ca1f47db6977769792752a4f64ee99f90f6f904811ff3f1b7b2d07ba570ad1b80337d22e34c6bbb6ed0e511cd"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/nn-NO/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/nn-NO/firefox-75.0.tar.bz2"; locale = "nn-NO"; arch = "linux-i686"; - sha512 = "4df5c67cb0fe6f0ab70bb885d601ca0beffe3bc8cf8d652e47d9d01a503bb2b33e47fd45b8c1cf47919607da4a6f144fccb15f8fd39dc9d1e395fbc607314a6e"; + sha512 = "7e10f521aa2ea9900d03a2874861f079171a62860f3508edd7dc51c39db88cef7a603ba0c6ca69469c2593182b027d354b6a8c13209beabd51a8690717d11eb4"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/oc/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/oc/firefox-75.0.tar.bz2"; locale = "oc"; arch = "linux-i686"; - sha512 = "386e9eeb00e63d9ed24befa757b8fce2dcdaf6c9cab69000ff23ef89e9f65ebba0128b69202db34852f2149fae91df05694f6957eca7ed1f82a25e14c0123ea7"; + sha512 = "43413c027b618cd5ddd36fa42fa26f99a294ce2f6f33937a299b55d698b64b6e85d04954101ef27e7a739c00407d7457322e3b32d38a90df87529372c19e1b67"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/pa-IN/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/pa-IN/firefox-75.0.tar.bz2"; locale = "pa-IN"; arch = "linux-i686"; - sha512 = "213e984eb4e62d058198b71e72b8c814f203e2f0d2c2bbab2fbf22f7cece52186beb44b1f23ed19ac1638b027781c1e7b4f2e68770180bbb9b7b27d401eeeb21"; + sha512 = "fb59faad43d729eeff12e1eeab15c0712f2429892574c526c1f59326518c9c652475177c9aba14aa591e4c449b133a6a8fcbef7bbc8d0c89b2b4d5dffd053abe"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/pl/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/pl/firefox-75.0.tar.bz2"; locale = "pl"; arch = "linux-i686"; - sha512 = "f7828a1a31face974561441e4347fe17f6fd925e41430dfa9f5b39d4fe8a691aeae9691b6703a29f798b68caa53e1ab17cc5ec6d3948240fddd6a78854c74bb0"; + sha512 = "406097bb810d60a16a88b675f6a893af84e0de905c222534b0e09802ae5b57912d000188920b06c4ffba198af0d096e42f9984222a94f53d45db64f41a4f3f9b"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/pt-BR/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/pt-BR/firefox-75.0.tar.bz2"; locale = "pt-BR"; arch = "linux-i686"; - sha512 = "bf780d5934d67009c38f980fe82fb299cf52e76652066e057b38b88ff113825e3f34d7ad7667c3617e8304464a66082e8dffa0a6e6d9fa607504558e89f5b13b"; + sha512 = "519f9777303a5dc6eca8933406ff0ffbf7654c75305c16e13f1600550d924569ded9dc6ba606050c9bacc31ecbc0d6e43dd91dbe8cb3b587ab71d20467564cd5"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/pt-PT/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/pt-PT/firefox-75.0.tar.bz2"; locale = "pt-PT"; arch = "linux-i686"; - sha512 = "4923899c4ad5dc1364d8aa15bc8089eed80b06595b96a85b219478ce92e86fd8d3ff2423150dab09a357f3e68b380d267dcf32f75368e6c49df521cd651f8d55"; + sha512 = "92500d0b49090382e261baa0fdd4620e5d9e4a047c9c7098ad3f7ce34a5e97bde419a87019517125239144d21589b428c11138aec691328530fd41d5a78cc5db"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/rm/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/rm/firefox-75.0.tar.bz2"; locale = "rm"; arch = "linux-i686"; - sha512 = "b4386b2b482c85663de59faa3a068713459dbf70cdc7d8cab8477b1e53c499e6e3438e4cd53233954d7170d12e9e598b5dead5def0669d01bce597c8a6b84725"; + sha512 = "6b8f3655d962612a047bb7d961ba74b362da0bcf740362e8f31a2263b0898da90e051951cf5894bd8a493f40d2d89fd50d6060eecc78908518f8611218a27eb3"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/ro/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/ro/firefox-75.0.tar.bz2"; locale = "ro"; arch = "linux-i686"; - sha512 = "9b033b547508da32ab23b477c4b4589d1b12515b3341dc39a13106748d8e93a48dceb8ed6d9a95da455ea1101eb6e9643cc5d676bb59922bdb64a0526b778221"; + sha512 = "4f2e2012136c9821792241f2189550843320b52c44905d9902c7ef3f2be21f26dd79f930b719f752d3d4b5e7ab6ca8429d12ba6120f6bc365bf9e2f496ea85e2"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/ru/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/ru/firefox-75.0.tar.bz2"; locale = "ru"; arch = "linux-i686"; - sha512 = "595d7ce551c846511f691de9dac90d5b15f46b6b00590a41d4ba1d7471f55b7f32dcd1e392bcc54ab2d1cffdcaf2ccff8fbfc3c084d3f74cca869bf570c515e8"; + sha512 = "7ce2ab97b3483b9632d24a979bbe051d8db539329359f91dc9df4446db0b4c1201dcbc6422e1406400dd3df007e5c3af6bcc8279966cf7448671608cc05a4231"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/si/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/si/firefox-75.0.tar.bz2"; locale = "si"; arch = "linux-i686"; - sha512 = "c10dd55008408cee98aaf4e6aacf03a4770a20220732e8d5318441bc163730753edcba8691017906b3cf2c28d5f9cdd0606ee812a1d01b40ef24d3d9d0239d08"; + sha512 = "65edb310b0c94dbaa2f5ece2eb6593a4fa7d89b2fc9e4d3bd8c77bd43dd4517d09895a7a325b9d6a1b5fda965e9d6e3c10f7e4b889b582ad4aacc2061db6a443"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/sk/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/sk/firefox-75.0.tar.bz2"; locale = "sk"; arch = "linux-i686"; - sha512 = "a439c2edda86c81911a61334ba747eba8619eaaf09b9f089a462f54bc93f413207b4db20a96b85ce8b0df58472bac450be1d8ab8e3bcad482ce653837d981ce2"; + sha512 = "4e29357906cafb6df7dfddb4c668479d8e52722a4771e043a1d9e0c254e434251768a716f7791c6969e34c5004f276d1b3ae8b8c77176bb1ba76409295126671"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/sl/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/sl/firefox-75.0.tar.bz2"; locale = "sl"; arch = "linux-i686"; - sha512 = "1bcf899acd6e722ddecb6f776cf185e71d758e7974c2b9e693f1295b2a9007dbca7cbea9b1c2e540857f748c24daa8631ad1857798742b1496a8553412e7b0be"; + sha512 = "c84cdabcb498c6a387a08b7ead1cdadfb68c173a955e34f4118a4d56417918649b7ffab2eeb88ddfa276656367f8429e17ddad4b909b1f39e120e41d1caca56c"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/son/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/son/firefox-75.0.tar.bz2"; locale = "son"; arch = "linux-i686"; - sha512 = "0f43632a15edf48efb18089daab3f2f45c54ff1cdf288a8ab456bc36019aae9109bef1017b01481625b8d225fe78494be8323ced159bc4ecc9aebfaed1c46e75"; + sha512 = "3fdf243217a00baef75aa36b9bcc257e1741fadc8070f5e50a4573c3c4b6b86eeb4405fab327b057e5d92543a0643429fc1159d3b77fe30ad918d8757d8970b1"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/sq/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/sq/firefox-75.0.tar.bz2"; locale = "sq"; arch = "linux-i686"; - sha512 = "0ce0d354aee7c3e2bfdab5a3cc13c64d9967620fc710d52d0ce46cc54d15149d52e6d35749f5eaa3889c8ce1399a08477d5a1e7079c012d5280765c5688d3894"; + sha512 = "f8c32ef45297c86935bc8b99a9d6b8e4804320f76e085e70f988def0ec003f221666e8f7e34e1866c52c38dc45a3b6a39397ac1e81a7033a74652a1d42d32355"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/sr/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/sr/firefox-75.0.tar.bz2"; locale = "sr"; arch = "linux-i686"; - sha512 = "218ad778d5f8421081f0a6c42232513dd7fb6f4b946cffc4a36278d37457d68e78674f5deac839c500ab7708f79bdaffebefbb14777103af2f01b105d7de54d6"; + sha512 = "10dfc0655723a00be5b5e32a280ffc660cf464df0be0686601b2bb502730ea5ee6f7c23c3f40616e9df3c5eb17638b841cc70e8b2271b442cc8b95927191dd62"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/sv-SE/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/sv-SE/firefox-75.0.tar.bz2"; locale = "sv-SE"; arch = "linux-i686"; - sha512 = "8c3bea33cedd039db2af5c0203a36c375d65d83d4d914a43b9ed9f83e5f7783e7cb2072259bb14642ff9ef8463d6af521d242c1d9f6dab10f9621d499dc6d7f2"; + sha512 = "57e77414cd484560716ef659271e28c14a8f02f7189bc858b4293a72ac07cb0acc77a6e719c25b7a9b76cd4da6b3b56df8a75236b6ddef0ace9f87113f4f8d72"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/ta/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/ta/firefox-75.0.tar.bz2"; locale = "ta"; arch = "linux-i686"; - sha512 = "0a0eb3e83e897bcc21a610b235e923344d8f3a09c0de83f78c5b240c84254e2684654608d004be82896c485f004b9fb9f93a6039f51a780610ea5f6a7eeb1d59"; + sha512 = "396fe91815427866908619b33df4fcc503e0b30f03c567a9d4baa51bfae19d91de816cfbca4bd94a48447c7abdfb56d52a294ad0b8fff8134d935db9d6a81221"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/te/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/te/firefox-75.0.tar.bz2"; locale = "te"; arch = "linux-i686"; - sha512 = "b39b47e236fa80771414f92b8d9898d0f316e4f4807abd9ca59ffba822166a11ff79f79b819600a1b3a24afccbc7ccbd740dbef89516b1ea031c1364ec6bc7ec"; + sha512 = "87237a320372b1c34c583335335b5b8e85eaf0dd774883b0b0c74e883854c1cd14d459cc8b84db2dade7dc92b36d176c8f30bd17658f6e5660660b0f167fc715"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/th/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/th/firefox-75.0.tar.bz2"; locale = "th"; arch = "linux-i686"; - sha512 = "ff6c0a8d6ad2b1971af4fcd5d96ed2422e6fc6a820d43f2177d49740ee2a87a52a393ac323c65901907303741d7b228cb547093419dff474cde3837b3f9d4679"; + sha512 = "ca5ca4be8242e1fe9a9714b117965b67ebe86b578381ea4339f378dfe74e08f268b63346b5d3bcf30cf1c108a933609d8cbb393caa7f7646557d265c2b40decb"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/tl/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/tl/firefox-75.0.tar.bz2"; locale = "tl"; arch = "linux-i686"; - sha512 = "ac603fc901fb513266bf3d9ee7c1e088fa09fd403ca264539b586879303f27987c4eb1432a8b9d3a3c4fa3abe874d1d1be76cb9993cf0bfb675df3815f9b6b81"; + sha512 = "99322a06d7122438715b92f176b07203246c1e15a0a42dae4349f424232778f3d2b9bcd17a7b239b8eb6273a6ada8e259480601258275f16c567d9cee51fd16f"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/tr/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/tr/firefox-75.0.tar.bz2"; locale = "tr"; arch = "linux-i686"; - sha512 = "5a222bf901572528f058d2f6bf2d449fe93dfc9a7555c91ba6a19844674e3ef43a3d53258840cf37dcd3cb2100d68cf0a6407f2934ee07345faca2423f0c7a04"; + sha512 = "95a86989879b65c85032e9b8ffa9290d9a6fa1be409786b9782b284e4c0fb894719fc464ef7e6b96554e2cb852a3276a8e042bbff02a17bdb44aaf9ddc170361"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/trs/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/trs/firefox-75.0.tar.bz2"; locale = "trs"; arch = "linux-i686"; - sha512 = "d0530d17fd9aba0046ddc677326c17301603f1929d3c7fde6590278af43c9ec2b3ec8951efb184c9ff89085311cfb4b5738e732203d8ec6e7f8be61428fc4f87"; + sha512 = "aae0652f74e82b0cdd752cb8f0747fd4f36f04fcdc50c3cd9d084c6418694cd3015e8de87d851605f5cac0b0159ddd8f9521755d81adbee0e561926b2ea1d393"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/uk/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/uk/firefox-75.0.tar.bz2"; locale = "uk"; arch = "linux-i686"; - sha512 = "fcee0ec3a5821c7539aab0414a48b2647aa88b66b99b079259f811c91afdda4ccd4f073ca06f9f8b87173427d07f0390705fcca66fbd100a917205bc4703201c"; + sha512 = "df038e62ba6284245212f23c5458b2df14547ed532ba66adfed2297041ae7acf693a6e01a6af9c16f4a2e141806d9baf3c4fce91bf3316e635da7211ba9b057f"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/ur/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/ur/firefox-75.0.tar.bz2"; locale = "ur"; arch = "linux-i686"; - sha512 = "8bf47e2b5eca734580ca0958d0f86a4807a1753996da13f57c2a3c6f6f3d1297de7fdc02e8db649ef7108313c415a8a82baa5772f35f7dc94fd5bd1927558e8d"; + sha512 = "1bcc2f2e8f5e389c29fd0e7f4a5a376d91268e326758b396c9d829e59d1315a52df0449fe49e81170713f1161946c2ed224560dc96329f30a5d13c8413f26823"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/uz/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/uz/firefox-75.0.tar.bz2"; locale = "uz"; arch = "linux-i686"; - sha512 = "50bf9e63e73387c4740f5978e8eae93d7212775cffc62cd9f2d7da24dde2558180d59cec5c19d78475cfbc7451f82263ae3b9ed53c765f6621ec456b0eca03e4"; + sha512 = "d957e4942ead1634d792555f57c6dbe54972fd9a97071e63901b422ed6b723426b27fe85afc8c33d75087a502112a4b4b2e0dc3f3a04a9d44a48ec867dc78cb2"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/vi/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/vi/firefox-75.0.tar.bz2"; locale = "vi"; arch = "linux-i686"; - sha512 = "887878ae122299374d1eccfade722837cdd7df0122e2790749909543d6ce9a5fa83919a7ceea1864ab3b9b71408c38b4e3e72d2abbe485dfb66b378e103d9719"; + sha512 = "e3209382cf01d827f3e68230c46c6eda837798f92812c93ac19e81a77a0d72f3a5b53681320b71d886d8d4339fb2eb51d056bb4bc41466116aa51ffd50ff05d1"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/xh/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/xh/firefox-75.0.tar.bz2"; locale = "xh"; arch = "linux-i686"; - sha512 = "4521638a80908805b13faddf28098b7186704b50b1da6ea9999aefba0202263e6e8650445b6b6b635d4290f96a95173c5aa0db9a4ac066b4e4baeab3c67bfd79"; + sha512 = "8719acd4bca1136668c6a90b3f7caaf29bd773acaab2776f2b7daca3c9028c33e73dc2c15c82d44064e92b61def23ca889a2ad09043c5bc5ad91db3214af1919"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/zh-CN/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/zh-CN/firefox-75.0.tar.bz2"; locale = "zh-CN"; arch = "linux-i686"; - sha512 = "65830ec45c63074cd4494805af5fd40b7fe6b061025f00d16df53ea3a51892b1e7eabc2fae8000b08a7d4c6eb4a8648eec2f3c86e105d8cb383e6dc20a3a3114"; + sha512 = "681e276d7ff6a6f91be59994e53f9f6f082e16f9d22ec7e1d1b65813e91c6c2661f28989b0331100b6f0d4cdbbb0589204b0ed80bf5f0bc0d18016e905a71148"; } - { url = "http://archive.mozilla.org/pub/firefox/releases/71.0/linux-i686/zh-TW/firefox-71.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/firefox/releases/75.0/linux-i686/zh-TW/firefox-75.0.tar.bz2"; locale = "zh-TW"; arch = "linux-i686"; - sha512 = "ae776f0593c0ab0dfa360a76e1465fe64de9f751ffc906019168af18467731670fedb2449d159d4978351e39da01eb6553444eba0c5884111d14a8f280c92462"; + sha512 = "71ee272a7d02758187a9ef2d0a722760d04d9bf0fe11c90e841e15dc9019f44ba22483b6698e3f8eba9620e34d2678db2dbc2974c1ab5c7f0f79934aa4142432"; } ]; } diff --git a/pkgs/applications/networking/browsers/firefox/common.nix b/pkgs/applications/networking/browsers/firefox/common.nix index c6dcd20d62f..5dc791631d8 100644 --- a/pkgs/applications/networking/browsers/firefox/common.nix +++ b/pkgs/applications/networking/browsers/firefox/common.nix @@ -1,14 +1,13 @@ { pname, ffversion, meta, updateScript ? null , src, unpackPhase ? null, patches ? [] -, extraNativeBuildInputs ? [], extraConfigureFlags ? [], extraMakeFlags ? [] -, isIceCatLike ? false, icversion ? null -, isTorBrowserLike ? false, tbversion ? null }: +, extraNativeBuildInputs ? [], extraConfigureFlags ? [], extraMakeFlags ? [] }: { lib, stdenv, pkgconfig, pango, perl, python2, python3, zip, libIDL , libjpeg, zlib, dbus, dbus-glib, bzip2, xorg , freetype, fontconfig, file, nspr, nss, libnotify , yasm, libGLU, libGL, sqlite, unzip, makeWrapper -, hunspell, libXdamage, libevent, libstartup_notification, libvpx +, hunspell, libXdamage, libevent, libstartup_notification +, libvpx, libvpx_1_8 , icu, libpng, jemalloc, glib , autoconf213, which, gnused, cargo, rustc, llvmPackages , rust-cbindgen, nodejs, nasm, fetchpatch @@ -27,16 +26,14 @@ ## privacy-related options -, privacySupport ? isTorBrowserLike || isIceCatLike +, privacySupport ? false # WARNING: NEVER set any of the options below to `true` by default. # Set to `!privacySupport` or `false`. # webrtcSupport breaks the aarch64 build on version >= 60, fixed in 63. # https://bugzilla.mozilla.org/show_bug.cgi?id=1434589 -, webrtcSupport ? !privacySupport && (!stdenv.isAarch64 || !( - lib.versionAtLeast ffversion "60" && lib.versionOlder ffversion "63" - )) +, webrtcSupport ? !privacySupport , geolocationSupport ? !privacySupport , googleAPISupport ? geolocationSupport , crashreporterSupport ? false @@ -79,7 +76,7 @@ let default-toolkit = if stdenv.isDarwin then "cairo-cocoa" else "cairo-gtk${if gtk3Support then "3${lib.optionalString waylandSupport "-wayland"}" else "2"}"; - binaryName = if isIceCatLike then "icecat" else "firefox"; + binaryName = "firefox"; binaryNameCapitalized = lib.toUpper (lib.substring 0 1 binaryName) + lib.substring 1 (-1) binaryName; browserName = if stdenv.isDarwin then binaryNameCapitalized else binaryName; @@ -87,41 +84,19 @@ let execdir = if stdenv.isDarwin then "/Applications/${binaryNameCapitalized}.app/Contents/MacOS" else "/bin"; - - browserVersion = if isIceCatLike then icversion - else if isTorBrowserLike then tbversion - else ffversion; - - browserPatches = [ - ./env_var_for_system_dir.patch - ] - ++ lib.optional (lib.versionAtLeast ffversion "63" && lib.versionOlder ffversion "68.3.0") - (fetchpatch { # https://bugzilla.mozilla.org/show_bug.cgi?id=1500436#c29 - name = "write_error-parallel_make.diff"; - url = "https://hg.mozilla.org/mozilla-central/raw-diff/562655fe/python/mozbuild/mozbuild/action/node.py"; - sha256 = "11d7rgzinb4mwl7yzhidjkajynmxgmffr4l9isgskfapyax9p88y"; - }) - ++ lib.optionals (stdenv.isAarch64 && lib.versionAtLeast ffversion "66" && lib.versionOlder ffversion "67") [ - (fetchpatch { - url = "https://raw.githubusercontent.com/archlinuxarm/PKGBUILDs/09c7fa0dc1d87922e3b464c0fa084df1227fca79/extra/firefox/arm.patch"; - sha256 = "1vbpih23imhv5r3g21m3m541z08n9n9j1nvmqax76bmyhn7mxp32"; - }) - (fetchpatch { - url = "https://raw.githubusercontent.com/archlinuxarm/PKGBUILDs/09c7fa0dc1d87922e3b464c0fa084df1227fca79/extra/firefox/build-arm-libopus.patch"; - sha256 = "1zg56v3lc346fkzcjjx21vjip2s9hb2xw4pvza1dsfdnhsnzppfp"; - }) - ] ++ lib.optional (lib.versionAtLeast ffversion "71") ./fix-ff71-lto.patch - ++ patches; - in -stdenv.mkDerivation rec { - name = "${pname}-unwrapped-${version}"; - version = browserVersion; +stdenv.mkDerivation ({ + name = "${pname}-unwrapped-${ffversion}"; + version = ffversion; inherit src unpackPhase meta; - patches = browserPatches; + patches = [ + ./env_var_for_system_dir.patch + ] + ++ patches; + # Ignore trivial whitespace changes in patches, this fixes compatibility of # ./env_var_for_system_dir.patch with Firefox >=65 without having to track @@ -134,19 +109,18 @@ stdenv.mkDerivation rec { xorg.libX11 xorg.libXrender xorg.libXft xorg.libXt file libnotify xorg.pixman yasm libGLU libGL xorg.libXScrnSaver xorg.xorgproto - xorg.libXext sqlite unzip makeWrapper - libevent libstartup_notification libvpx /* cairo */ + xorg.libXext unzip makeWrapper + libevent libstartup_notification /* cairo */ icu libpng jemalloc glib + nasm + # >= 66 requires nasm for the AV1 lib dav1d + # yasm can potentially be removed in future versions + # https://bugzilla.mozilla.org/show_bug.cgi?id=1501796 + # https://groups.google.com/forum/#!msg/mozilla.dev.platform/o-8levmLU80/SM_zQvfzCQAJ + nspr nss ] - ++ lib.optionals (!isTorBrowserLike) [ nspr nss ] - ++ lib.optional (lib.versionOlder ffversion "53") libXdamage - ++ lib.optional (lib.versionOlder ffversion "61") hunspell - - # >= 66 requires nasm for the AV1 lib dav1d - # yasm can potentially be removed in future versions - # https://bugzilla.mozilla.org/show_bug.cgi?id=1501796 - # https://groups.google.com/forum/#!msg/mozilla.dev.platform/o-8levmLU80/SM_zQvfzCQAJ - ++ lib.optional (lib.versionAtLeast ffversion "66") nasm + ++ lib.optionals (lib.versionOlder ffversion "75") [ libvpx sqlite ] + ++ lib.optional (lib.versionAtLeast ffversion "75.0") libvpx_1_8 ++ lib.optional alsaSupport alsaLib ++ lib.optional pulseaudioSupport libpulseaudio # only headers are needed ++ lib.optional gtk3Support gtk3 @@ -156,26 +130,35 @@ stdenv.mkDerivation rec { AVFoundation MediaToolbox CoreLocation Foundation libobjc AddressBook cups ]; - NIX_CFLAGS_COMPILE = [ + NIX_CFLAGS_COMPILE = toString ([ "-I${glib.dev}/include/gio-unix-2.0" - ] - ++ lib.optionals (!isTorBrowserLike) [ "-I${nss.dev}/include/nss" - ]; + ] + ++ lib.optional (pname == "firefox-esr" && lib.versionOlder ffversion "69") + "-Wno-error=format-security"); - postPatch = lib.optionalString (lib.versionAtLeast ffversion "63.0" && !isTorBrowserLike) '' + postPatch = '' substituteInPlace third_party/prio/prio/rand.c --replace 'nspr/prinit.h' 'prinit.h' - '' + lib.optionalString (lib.versionAtLeast ffversion "68") '' rm -rf obj-x86_64-pc-linux-gnu ''; nativeBuildInputs = - [ autoconf213 which gnused pkgconfig perl python2 cargo rustc ] + [ + autoconf213 + cargo + gnused + llvmPackages.llvm # llvm-objdump + nodejs + perl + pkgconfig + python2 + python3 + rust-cbindgen + rustc + which + ] ++ lib.optional gtk3Support wrapGAppsHook ++ lib.optionals stdenv.isDarwin [ xcbuild rsync ] - ++ lib.optional (lib.versionAtLeast ffversion "61.0") [ python3 ] - ++ lib.optionals (lib.versionAtLeast ffversion "63.0") [ rust-cbindgen nodejs ] - ++ lib.optionals (lib.versionAtLeast ffversion "67.0") [ llvmPackages.llvm ] # llvm-objdump is required in version >=67.0 ++ extraNativeBuildInputs; preConfigure = '' @@ -183,14 +166,8 @@ stdenv.mkDerivation rec { rm -f configure rm -f js/src/configure rm -f .mozconfig* - '' + (if lib.versionAtLeast ffversion "58" - # this will run autoconf213 - then '' + # this will run autoconf213 configureScript="$(realpath ./mach) configure" - '' else '' - make -f client.mk configure-files - configureScript="$(realpath ./configure)" - '') + lib.optionalString (lib.versionAtLeast ffversion "53") '' export MOZCONFIG=$(pwd)/mozconfig # Set C flags for Rust's bindgen program. Unlike ordinary C @@ -203,27 +180,20 @@ stdenv.mkDerivation rec { $(< ${stdenv.cc}/nix-support/cc-cflags) \ ${stdenv.cc.default_cxx_stdlib_compile} \ ${lib.optionalString stdenv.cc.isClang "-idirafter ${stdenv.cc.cc}/lib/clang/${lib.getVersion stdenv.cc.cc}/include"} \ - ${lib.optionalString stdenv.cc.isGNU "-isystem ${stdenv.cc.cc}/include/c++/${lib.getVersion stdenv.cc.cc} -isystem ${stdenv.cc.cc}/include/c++/${lib.getVersion stdenv.cc.cc}/$(cc -dumpmachine)"} \ + ${lib.optionalString stdenv.cc.isGNU "-isystem ${stdenv.cc.cc}/include/c++/${lib.getVersion stdenv.cc.cc} -isystem ${stdenv.cc.cc}/include/c++/${lib.getVersion stdenv.cc.cc}/${stdenv.hostPlatform.config}"} \ $NIX_CFLAGS_COMPILE" echo "ac_add_options BINDGEN_CFLAGS='$BINDGEN_CFLAGS'" >> $MOZCONFIG - '' + lib.optionalString googleAPISupport '' + '' + (lib.optionalString googleAPISupport '' # Google API key used by Chromium and Firefox. # Note: These are for NixOS/nixpkgs use ONLY. For your own distribution, # please get your own set of keys. echo "AIzaSyDGi15Zwl11UNe6Y-5XW_upsfyw31qwZPI" > $TMPDIR/ga # 60.5+ & 66+ did split the google API key arguments: https://bugzilla.mozilla.org/show_bug.cgi?id=1531176 - ${if (lib.versionAtLeast ffversion "60.6" && lib.versionOlder ffversion "61") || (lib.versionAtLeast ffversion "66") then '' - configureFlagsArray+=("--with-google-location-service-api-keyfile=$TMPDIR/ga") - configureFlagsArray+=("--with-google-safebrowsing-api-keyfile=$TMPDIR/ga") - '' else '' - configureFlagsArray+=("--with-google-api-keyfile=$TMPDIR/ga") - ''} - '' + lib.optionalString (lib.versionOlder ffversion "58") '' - cd obj-* - '' - # AS=as in the environment causes build failure https://bugzilla.mozilla.org/show_bug.cgi?id=1497286 - + lib.optionalString (lib.versionAtLeast ffversion "64") '' + configureFlagsArray+=("--with-google-location-service-api-keyfile=$TMPDIR/ga") + configureFlagsArray+=("--with-google-safebrowsing-api-keyfile=$TMPDIR/ga") + '') + '' + # AS=as in the environment causes build failure https://bugzilla.mozilla.org/show_bug.cgi?id=1497286 unset AS ''; @@ -238,7 +208,6 @@ stdenv.mkDerivation rec { "--with-system-icu" "--enable-system-ffi" "--enable-system-pixman" - "--enable-system-sqlite" #"--enable-system-cairo" "--enable-startup-notification" #"--enable-content-sandbox" # TODO: probably enable after 54 @@ -248,32 +217,16 @@ stdenv.mkDerivation rec { "--enable-jemalloc" "--disable-gconf" "--enable-default-toolkit=${default-toolkit}" - ] - ++ lib.optional (lib.versionOlder ffversion "64") "--disable-maintenance-service" - ++ lib.optional (stdenv.isDarwin && lib.versionAtLeast ffversion "61") "--disable-xcode-checks" - ++ lib.optional (lib.versionOlder ffversion "61") "--enable-system-hunspell" - ++ lib.optionals (lib.versionAtLeast ffversion "56") [ "--with-libclang-path=${llvmPackages.libclang}/lib" "--with-clang-path=${llvmPackages.clang}/bin/clang" - ] - ++ lib.optionals (lib.versionAtLeast ffversion "57" && lib.versionOlder ffversion "69") [ - "--enable-webrender=build" - ] - - # TorBrowser patches these - ++ lib.optionals (!isTorBrowserLike) [ "--with-system-nspr" "--with-system-nss" ] - - # and wants these - ++ lib.optionals isTorBrowserLike ([ - "--with-tor-browser-version=${tbversion}" - "--with-distribution-id=org.torproject" - "--enable-signmar" - "--enable-verify-mar" - "--enable-bundled-fonts" - ]) + ++ lib.optional (lib.versionOlder ffversion "75") "--enable-system-sqlite" + ++ lib.optional (stdenv.isDarwin) "--disable-xcode-checks" + ++ lib.optionals (lib.versionOlder ffversion "69") [ + "--enable-webrender=build" + ] ++ flag alsaSupport "alsa" ++ flag pulseaudioSupport "pulseaudio" @@ -283,11 +236,6 @@ stdenv.mkDerivation rec { ++ flag crashreporterSupport "crashreporter" ++ lib.optional drmSupport "--enable-eme=widevine" - ++ lib.optionals (lib.versionOlder ffversion "60") ([] - ++ flag geolocationSupport "mozril-geoloc" - ++ flag safeBrowsingSupport "safe-browsing" - ) - ++ (if debugBuild then [ "--enable-debug" "--enable-profiling" ] else [ "--disable-debug" "--enable-release" "--enable-optimize" @@ -295,29 +243,16 @@ stdenv.mkDerivation rec { ++ lib.optional enableOfficialBranding "--enable-official-branding" ++ extraConfigureFlags; - # Before 58 we have to run `make -f client.mk configure-files` at - # the top level, and then run `./configure` in the obj-* dir (see - # above), but in 58 we have to instead run `./mach configure` at the - # top level and then run `make` in obj-*. (We can also run the - # `make` at the top level in 58, but then we would have to `cd` to - # `make install` anyway. This is ugly, but simple.) - postConfigure = lib.optionalString (lib.versionAtLeast ffversion "58") '' + postConfigure = '' cd obj-* ''; - preBuild = lib.optionalString isTorBrowserLike '' - buildFlagsArray=("MOZ_APP_DISPLAYNAME=Tor Browser") - ''; - makeFlags = lib.optionals enableOfficialBranding [ "MOZILLA_OFFICIAL=1" "BUILD_OFFICIAL=1" ] ++ extraMakeFlags; - RUSTFLAGS = if (lib.versionAtLeast ffversion "67"/*somewhere betwween ESRs*/) - then null else "--cap-lints warn"; - enableParallelBuilding = true; doCheck = false; # "--disable-tests" above @@ -348,10 +283,9 @@ stdenv.mkDerivation rec { ''; passthru = { - inherit version updateScript; + inherit updateScript; + version = ffversion; isFirefox3Like = true; - inherit isIceCatLike; - inherit isTorBrowserLike; gtk = gtk2; inherit nspr; inherit ffmpegSupport; @@ -359,5 +293,22 @@ stdenv.mkDerivation rec { inherit execdir; inherit browserName; } // lib.optionalAttrs gtk3Support { inherit gtk3; }; +} // +lib.optionalAttrs (lib.versionAtLeast ffversion "74") { + hardeningDisable = [ "format" ]; # -Werror=format-security +} // +# the build system verifies checksums of the bundled rust sources +# ./third_party/rust is be patched by our libtool fixup code in stdenv +# unfortunately we can't just set this to `false` when we do not want it. +# See https://github.com/NixOS/nixpkgs/issues/77289 for more details -} +lib.optionalAttrs (lib.versionAtLeast ffversion "72") { + # Ideally we would figure out how to tell the build system to not + # care about changed hashes as we are already doing that when we + # fetch the sources. Any further modifications of the source tree + # is on purpose by some of our tool (or by accident and a bug?). + dontFixLibtool = true; + + # on aarch64 this is also required + dontUpdateAutotoolsGnuConfigScripts = true; +}) diff --git a/pkgs/applications/networking/browsers/firefox/fix-ff71-lto.patch b/pkgs/applications/networking/browsers/firefox/fix-ff71-lto.patch deleted file mode 100644 index f48cad9e67a..00000000000 --- a/pkgs/applications/networking/browsers/firefox/fix-ff71-lto.patch +++ /dev/null @@ -1,100 +0,0 @@ -Original Patch: https://bugzilla.mozilla.org/show_bug.cgi?id=1601707#c6 - -Also fixes the issues with dom localstorage. - ---- a/dom/indexedDB/ActorsParent.cpp -+++ b/dom/indexedDB/ActorsParent.cpp -@@ -24311,11 +24311,11 @@ nsresult ObjectStoreAddOrPutRequestOp::DoDatabaseWork( - // if we allow overwrite or not. By not allowing overwrite we raise - // detectable errors rather than corrupting data. - DatabaseConnection::CachedStatement stmt; -- const auto& optReplaceDirective = (!mOverwrite || keyUnset) -- ? NS_LITERAL_CSTRING("") -- : NS_LITERAL_CSTRING("OR REPLACE "); - rv = aConnection->GetCachedStatement( -- NS_LITERAL_CSTRING("INSERT ") + optReplaceDirective + -+ NS_LITERAL_CSTRING("INSERT ") + -+ ((!mOverwrite || keyUnset) -+ ? NS_LITERAL_CSTRING("") -+ : NS_LITERAL_CSTRING("OR REPLACE ")) + - NS_LITERAL_CSTRING("INTO object_data " - "(object_store_id, key, file_ids, data) " - "VALUES (:") + -@@ -26076,9 +26076,6 @@ nsresult Cursor::OpenOp::DoIndexDatabaseWork(DatabaseConnection* aConnection) { - - const bool usingKeyRange = mOptionalKeyRange.isSome(); - -- const auto& indexTable = mCursor->mUniqueIndex -- ? NS_LITERAL_CSTRING("unique_index_data") -- : NS_LITERAL_CSTRING("index_data"); - - NS_NAMED_LITERAL_CSTRING(sortColumn, "sort_column"); - -@@ -26099,7 +26096,9 @@ nsresult Cursor::OpenOp::DoIndexDatabaseWork(DatabaseConnection* aConnection) { - "object_data.file_ids, " - "object_data.data " - "FROM ") + -- indexTable + -+ (mCursor->mUniqueIndex -+ ? NS_LITERAL_CSTRING("unique_index_data") -+ : NS_LITERAL_CSTRING("index_data")) + - NS_LITERAL_CSTRING( - " AS index_table " - "JOIN object_data " -@@ -26198,9 +26197,6 @@ nsresult Cursor::OpenOp::DoIndexKeyDatabaseWork( - - const bool usingKeyRange = mOptionalKeyRange.isSome(); - -- const auto& table = mCursor->mUniqueIndex -- ? NS_LITERAL_CSTRING("unique_index_data") -- : NS_LITERAL_CSTRING("index_data"); - - NS_NAMED_LITERAL_CSTRING(sortColumn, "sort_column"); - -@@ -26218,7 +26214,10 @@ nsresult Cursor::OpenOp::DoIndexKeyDatabaseWork( - NS_LITERAL_CSTRING( - "object_data_key " - " FROM ") + -- table + NS_LITERAL_CSTRING(" WHERE index_id = :") + -+ (mCursor->mUniqueIndex -+ ? NS_LITERAL_CSTRING("unique_index_data") -+ : NS_LITERAL_CSTRING("index_data")) + -+ NS_LITERAL_CSTRING(" WHERE index_id = :") + - kStmtParamNameId; - - const auto keyRangeClause = -diff --git a/dom/localstorage/ActorsParent.cpp b/dom/localstorage/ActorsParent.cpp -index 9c46c20670..642cef1701 100644 ---- a/dom/localstorage/ActorsParent.cpp -+++ b/dom/localstorage/ActorsParent.cpp -@@ -6959,13 +6959,10 @@ nsresult PrepareDatastoreOp::Start() { - MOZ_ASSERT(!QuotaClient::IsShuttingDownOnBackgroundThread()); - MOZ_ASSERT(MayProceed()); - -- const LSRequestCommonParams& commonParams = -- mForPreload -- ? mParams.get_LSRequestPreloadDatastoreParams().commonParams() -- : mParams.get_LSRequestPrepareDatastoreParams().commonParams(); -- - const PrincipalInfo& storagePrincipalInfo = -- commonParams.storagePrincipalInfo(); -+ mForPreload -+ ? mParams.get_LSRequestPreloadDatastoreParams().commonParams().storagePrincipalInfo() -+ : mParams.get_LSRequestPrepareDatastoreParams().commonParams().storagePrincipalInfo(); - - if (storagePrincipalInfo.type() == PrincipalInfo::TSystemPrincipalInfo) { - QuotaManager::GetInfoForChrome(&mSuffix, &mGroup, &mOrigin); -@@ -6996,10 +6993,9 @@ nsresult PrepareDatastoreOp::CheckExistingOperations() { - return NS_ERROR_FAILURE; - } - -- const LSRequestCommonParams& commonParams = -- mForPreload -- ? mParams.get_LSRequestPreloadDatastoreParams().commonParams() -- : mParams.get_LSRequestPrepareDatastoreParams().commonParams(); -+ const LSRequestCommonParams& preloadCommonParams = mParams.get_LSRequestPreloadDatastoreParams().commonParams(); -+ const LSRequestCommonParams& prepareCommonParams = mParams.get_LSRequestPrepareDatastoreParams().commonParams(); -+ const LSRequestCommonParams& commonParams = mForPreload ? preloadCommonParams : prepareCommonParams; - - const PrincipalInfo& storagePrincipalInfo = - commonParams.storagePrincipalInfo(); diff --git a/pkgs/applications/networking/browsers/firefox/fix-pa-context-connect-retval.patch b/pkgs/applications/networking/browsers/firefox/fix-pa-context-connect-retval.patch deleted file mode 100644 index 1c3c3294894..00000000000 --- a/pkgs/applications/networking/browsers/firefox/fix-pa-context-connect-retval.patch +++ /dev/null @@ -1,26 +0,0 @@ -Yep, it's a "return code was ignored" bug. -diff --git a/media/libcubeb/src/cubeb_pulse.c b/media/libcubeb/src/cubeb_pulse.c -index aaaaaaaaaaa..bbbbbbbbbbb 100644 ---- a/media/libcubeb/src/cubeb_pulse.c -+++ b/media/libcubeb/src/cubeb_pulse.c -@@ -473,6 +473,8 @@ - static int - pulse_context_init(cubeb * ctx) - { -+ int r; -+ - if (ctx->context) { - assert(ctx->error == 1); - pulse_context_destroy(ctx); -@@ -486,9 +488,9 @@ - WRAP(pa_context_set_state_callback)(ctx->context, context_state_callback, ctx); - - WRAP(pa_threaded_mainloop_lock)(ctx->mainloop); -- WRAP(pa_context_connect)(ctx->context, NULL, 0, NULL); -+ r = WRAP(pa_context_connect)(ctx->context, NULL, 0, NULL); - -- if (wait_until_context_ready(ctx) != 0) { -+ if (r < 0 || wait_until_context_ready(ctx) != 0) { - WRAP(pa_threaded_mainloop_unlock)(ctx->mainloop); - pulse_context_destroy(ctx); - ctx->context = NULL; diff --git a/pkgs/applications/networking/browsers/firefox/no-buildconfig.patch b/pkgs/applications/networking/browsers/firefox/no-buildconfig.patch deleted file mode 100644 index de278152f97..00000000000 --- a/pkgs/applications/networking/browsers/firefox/no-buildconfig.patch +++ /dev/null @@ -1,25 +0,0 @@ -diff -ru -x '*~' firefox-55.0.3-orig/docshell/base/nsAboutRedirector.cpp firefox-55.0.3/docshell/base/nsAboutRedirector.cpp ---- firefox-55.0.3-orig/docshell/base/nsAboutRedirector.cpp 2017-07-31 18:20:51.000000000 +0200 -+++ firefox-55.0.3/docshell/base/nsAboutRedirector.cpp 2017-09-26 22:02:00.814151731 +0200 -@@ -36,10 +36,6 @@ - nsIAboutModule::ALLOW_SCRIPT - }, - { -- "buildconfig", "chrome://global/content/buildconfig.html", -- nsIAboutModule::URI_SAFE_FOR_UNTRUSTED_CONTENT -- }, -- { - "checkerboard", "chrome://global/content/aboutCheckerboard.xhtml", - nsIAboutModule::URI_SAFE_FOR_UNTRUSTED_CONTENT | - nsIAboutModule::ALLOW_SCRIPT -diff -ru -x '*~' firefox-55.0.3-orig/toolkit/content/jar.mn firefox-55.0.3/toolkit/content/jar.mn ---- firefox-55.0.3-orig/toolkit/content/jar.mn 2017-07-31 18:20:52.000000000 +0200 -+++ firefox-55.0.3/toolkit/content/jar.mn 2017-09-26 22:01:42.383350314 +0200 -@@ -40,7 +40,6 @@ - content/global/plugins.css - content/global/browser-child.js - content/global/browser-content.js --* content/global/buildconfig.html - content/global/buildconfig.css - content/global/contentAreaUtils.js - content/global/datepicker.xhtml diff --git a/pkgs/applications/networking/browsers/firefox/packages.nix b/pkgs/applications/networking/browsers/firefox/packages.nix index 105a0a18d6b..e419137c4e9 100644 --- a/pkgs/applications/networking/browsers/firefox/packages.nix +++ b/pkgs/applications/networking/browsers/firefox/packages.nix @@ -1,25 +1,16 @@ -{ lib, callPackage, fetchurl, fetchFromGitHub, overrideCC, gccStdenv, gcc6 }: +{ config, stdenv, lib, callPackage, fetchurl }: let - common = opts: callPackage (import ./common.nix opts) {}; - - # Needed on older branches since rustc: 1.32.0 -> 1.33.0 - missing-documentation-patch = fetchurl { - name = "missing-documentation.patch"; - url = "https://aur.archlinux.org/cgit/aur.git/plain/deny_missing_docs.patch" - + "?h=firefox-esr&id=03bdd01f9cf"; - sha256 = "1i33n3fgwc8d0v7j4qn7lbdax0an6swar12gay3q2nwrhg3ic4fb"; - }; in rec { firefox = common rec { pname = "firefox"; - ffversion = "71.0"; + ffversion = "75.0"; src = fetchurl { url = "mirror://mozilla/firefox/releases/${ffversion}/source/firefox-${ffversion}.source.tar.xz"; - sha512 = "0hfjlhwdhfdfzd27d6p3h8ff5m2jphlaipv4zym48bn6g95if1x98q2lb87617bxfm31di4rckjvqb70g9sm3smil6p6bnw2dsvnq1g"; + sha512 = "0m3ibm6dy9cpvsxkzkzwj7na5rm5qz7sm3bpx604ibay9pccvgv59jxapisvmswzmlz2nv02l6p2gxlz3b0lbcg7rd5zasia92y7j99"; }; patches = [ @@ -28,10 +19,12 @@ rec { meta = { description = "A web browser built from Firefox source tree"; - homepage = http://www.mozilla.com/en-US/firefox/; + homepage = "http://www.mozilla.com/en-US/firefox/"; maintainers = with lib.maintainers; [ eelco andir ]; platforms = lib.platforms.unix; badPlatforms = lib.platforms.darwin; + broken = stdenv.buildPlatform.is32bit; # since Firefox 60, build on 32-bit platforms fails with "out of memory". + # not in `badPlatforms` because cross-compilation on 64-bit machine might work. license = lib.licenses.mpl20; }; updateScript = callPackage ./update.nix { @@ -40,69 +33,12 @@ rec { }; }; - # Do not remove. This is the last version of Firefox that supports - # the old plugins. While this package is unsafe to use for browsing - # the web, there are many old useful plugins targeting offline - # activities (e.g. ebook readers, syncronous translation, etc) that - # will probably never be ported to WebExtensions API. - firefox-esr-52 = (common rec { - pname = "firefox-esr"; - ffversion = "52.9.0esr"; - src = fetchurl { - url = "mirror://mozilla/firefox/releases/${ffversion}/source/firefox-${ffversion}.source.tar.xz"; - sha512 = "bfca42668ca78a12a9fb56368f4aae5334b1f7a71966fbba4c32b9c5e6597aac79a6e340ac3966779d2d5563eb47c054ab33cc40bfb7306172138ccbd3adb2b9"; - }; - - patches = [ - # this one is actually an omnipresent bug - # https://bugzilla.mozilla.org/show_bug.cgi?id=1444519 - ./fix-pa-context-connect-retval.patch - ]; - - meta = firefox.meta // { - description = "A web browser built from Firefox Extended Support Release source tree"; - knownVulnerabilities = [ "Support ended in August 2018." ]; - }; - }).override { - stdenv = overrideCC gccStdenv gcc6; # gcc7 fails with "undefined reference to `__divmoddi4'" - gtk3Support = false; - }; - - firefox-esr-60 = common rec { - pname = "firefox-esr"; - ffversion = "60.9.0esr"; - - src = fetchurl { - url = "mirror://mozilla/firefox/releases/${ffversion}/source/firefox-${ffversion}.source.tar.xz"; - sha512 = "4baea5c9c4eff257834bbaee6d7786f69f7e6bacd24ca13c2705226f4a0d88315ab38c650b2c5e9c76b698f2debc7cea1e5a99cb4dc24e03c48a24df5143a3cf"; - }; - - patches = [ - ./no-buildconfig-ffx65.patch - - # this one is actually an omnipresent bug - # https://bugzilla.mozilla.org/show_bug.cgi?id=1444519 - ./fix-pa-context-connect-retval.patch - - missing-documentation-patch - ]; - - meta = firefox.meta // { - description = "A web browser built from Firefox Extended Support Release source tree"; - }; - updateScript = callPackage ./update.nix { - attrPath = "firefox-esr-60-unwrapped"; - versionSuffix = "esr"; - versionKey = "ffversion"; - }; - }; - firefox-esr-68 = common rec { pname = "firefox-esr"; - ffversion = "68.3.0esr"; + ffversion = "68.7.0esr"; src = fetchurl { url = "mirror://mozilla/firefox/releases/${ffversion}/source/firefox-${ffversion}.source.tar.xz"; - sha512 = "31zisy4l07hhm9yvxz7sx04kz1f5rl20z1w072jxaabi42sw07xr6lcflv88gwl21y902n7vwd1q1zfavpnipn65wap4i0vm8c4m6pr"; + sha512 = "29qbcc78hz1rsnz735a5miwfj0c3r1c5qm2043vyd9qz879vsh4ab82k7wncm3xa04kqdff26zh1rpbbjmdr7gwn4q8nmjzzs7wzpd3"; }; patches = [ @@ -118,171 +54,23 @@ rec { versionKey = "ffversion"; }; }; +} // lib.optionalAttrs (config.allowAliases or true) { + #### ALIASES + #### remove after 20.03 branchoff -} // (let + firefox-esr-52 = throw '' + firefoxPackages.firefox-esr-52 was removed as it's an unsupported ESR with + open security issues. If you need it because you need to run some plugins + not having been ported to WebExtensions API, import it from an older + nixpkgs checkout still containing it. + ''; + firefox-esr-60 = throw "firefoxPackages.firefox-esr-60 was removed as it's an unsupported ESR with open security issues."; - iccommon = args: common (args // { - pname = "icecat"; - isIceCatLike = true; + icecat = throw "firefoxPackages.icecat was removed as even its latest upstream version is based on an unsupported ESR release with open security issues."; + icecat-52 = throw "firefoxPackages.icecat was removed as even its latest upstream version is based on an unsupported ESR release with open security issues."; - meta = (args.meta or {}) // { - description = "The GNU version of the Firefox web browser"; - longDescription = '' - GNUzilla is the GNU version of the Mozilla suite, and GNU - IceCat is the GNU version of the Firefox web browser. + tor-browser-7-5 = throw "firefoxPackages.tor-browser-7-5 was removed because it was out of date and inadequately maintained. Please use tor-browser-bundle-bin instead. See #77452."; + tor-browser-8-5 = throw "firefoxPackages.tor-browser-8-5 was removed because it was out of date and inadequately maintained. Please use tor-browser-bundle-bin instead. See #77452."; + tor-browser = throw "firefoxPackages.tor-browser was removed because it was out of date and inadequately maintained. Please use tor-browser-bundle-bin instead. See #77452."; - Notable differences from mainline Firefox: - - - entirely free software, no non-free plugins, addons, - artwork, - - no telemetry, no "studies", - - sane privacy and security defaults (for instance, unlike - Firefox, IceCat does _zero_ network requests on startup by - default, which means that with IceCat you won't need to - unplug your Ethernet cable each time you want to create a - new browser profile without announcing that action to a - bunch of data-hungry corporations), - - all essential privacy and security settings can be - configured directly from the main screen, - - optional first party isolation (like TorBrowser), - - comes with HTTPS Everywhere (like TorBrowser), Tor Browser - Button (like TorBrowser Bundle), LibreJS, and SpyBlock - plugins out of the box. - - This package can be installed together with Firefox and - TorBrowser, it will use distinct binary names and profile - directories. - ''; - homepage = "https://www.gnu.org/software/gnuzilla/"; - platforms = lib.platforms.unix; - license = with lib.licenses; [ mpl20 gpl3Plus ]; - }; - }); - -in { - - icecat = iccommon rec { - ffversion = "60.3.0"; - icversion = "${ffversion}-gnu1"; - - src = fetchurl { - url = "mirror://gnu/gnuzilla/${ffversion}/icecat-${icversion}.tar.bz2"; - sha256 = "0icnl64nxcyf7dprpdpygxhabsvyhps8c3ixysj9bcdlj9q34ib1"; - }; - - patches = [ - ./no-buildconfig.patch - missing-documentation-patch - ]; - }; - - # Similarly to firefox-esr-52 above. - icecat-52 = iccommon rec { - ffversion = "52.6.0"; - icversion = "${ffversion}-gnu1"; - - src = fetchurl { - url = "mirror://gnu/gnuzilla/${ffversion}/icecat-${icversion}.tar.bz2"; - sha256 = "09fn54glqg1aa93hnz5zdcy07cps09dbni2b4200azh6nang630a"; - }; - - patches = [ - # this one is actually an omnipresent bug - # https://bugzilla.mozilla.org/show_bug.cgi?id=1444519 - ./fix-pa-context-connect-retval.patch - ]; - - meta.knownVulnerabilities = [ "Support ended in August 2018." ]; - }; - -}) // (let - - tbcommon = args: common (args // { - pname = "tor-browser"; - isTorBrowserLike = true; - - unpackPhase = '' - # fetchFromGitHub produces ro sources, root dir gets a name that - # is too long for shebangs. fixing - cp -a $src tor-browser - chmod -R +w tor-browser - cd tor-browser - - # set times for xpi archives - find . -exec touch -d'2010-01-01 00:00' {} \; - ''; - - meta = (args.meta or {}) // { - description = "A web browser built from TorBrowser source tree"; - longDescription = '' - This is a version of TorBrowser with bundle-related patches - reverted. - - I.e. it's a variant of Firefox with less fingerprinting and - some isolation features you can't get with any extensions. - - Or, alternatively, a variant of TorBrowser that works like any - other UNIX program and doesn't expect you to run it from a - bundle. - - It will use your default Firefox profile if you're not careful - even! Be careful! - - It will clash with firefox binary if you install both. But it - should not be a problem because you should run browsers in - separate users/VMs anyway. - - Create new profile by starting it as - - $ firefox -ProfileManager - - and then configure it to use your tor instance. - - Or just use `tor-browser-bundle` package that packs this - `tor-browser` back into a sanely-built bundle. - ''; - homepage = "https://www.torproject.org/projects/torbrowser.html"; - platforms = lib.platforms.unix; - license = with lib.licenses; [ mpl20 bsd3 ]; - }; - }); - -in rec { - - tor-browser-7-5 = (tbcommon { - ffversion = "52.9.0esr"; - tbversion = "7.5.6"; - - # FIXME: fetchFromGitHub is not ideal, unpacked source is >900Mb - src = fetchFromGitHub { - owner = "SLNOS"; - repo = "tor-browser"; - # branch "tor-browser-52.9.0esr-7.5-2-slnos" - rev = "95bb92d552876a1f4260edf68fda5faa3eb36ad8"; - sha256 = "1ykn3yg4s36g2cpzxbz7s995c33ij8kgyvghx38z4i8siaqxdddy"; - }; - }).override { - gtk3Support = false; - }; - - tor-browser-8-5 = tbcommon rec { - ffversion = "60.9.0esr"; - tbversion = "8.5.6"; - - # FIXME: fetchFromGitHub is not ideal, unpacked source is >900Mb - src = fetchFromGitHub { - owner = "SLNOS"; - repo = "tor-browser"; - # branch "tor-browser-60.9.0esr-8.5-2-slnos" - rev = "0489ae3158cd8c0e16c2e78b94083d8cbf0209dc"; - sha256 = "0y5s7d8pg8ak990dp8d801j9823igaibfhv9hsa79nib5yllifzs"; - }; - - patches = [ - missing-documentation-patch - ]; - }; - - tor-browser = tor-browser-8-5; - -}) +} diff --git a/pkgs/applications/networking/browsers/firefox/wrapper.nix b/pkgs/applications/networking/browsers/firefox/wrapper.nix index 4901d694f49..0afa8ca7b83 100644 --- a/pkgs/applications/networking/browsers/firefox/wrapper.nix +++ b/pkgs/applications/networking/browsers/firefox/wrapper.nix @@ -2,12 +2,11 @@ ## various stuff that can be plugged in , flashplayer, hal-flash -, MPlayerPlugin, ffmpeg, xorg, libpulseaudio, libcanberra-gtk2, libglvnd -, jrePlugin, adoptopenjdk-icedtea-web -, bluejeans, djview4, adobe-reader -, google_talk_plugin, fribid, gnome3/*.gnome-shell*/ +, ffmpeg, xorg, libpulseaudio, libcanberra-gtk2, libglvnd +, gnome3/*.gnome-shell*/ , browserpass, chrome-gnome-shell, uget-integrator, plasma-browser-integration, bukubrow , tridactyl-native +, fx_cast_bridge , udev , kerberos }: @@ -25,7 +24,6 @@ let (lib.toUpper (lib.substring 0 1 browserName) + lib.substring 1 (-1) browserName) , nameSuffix ? "" , icon ? browserName - , extraPlugins ? [] , extraNativeMessagingHosts ? [] , gdkWayland ? false , cfg ? config.${browserName} or {} @@ -37,32 +35,24 @@ let enableAdobeFlash = cfg.enableAdobeFlash or false; ffmpegSupport = browser.ffmpegSupport or false; gssSupport = browser.gssSupport or false; - jre = cfg.jre or false; - icedtea = cfg.icedtea or false; - supportsJDK = - stdenv.hostPlatform.system == "i686-linux" || - stdenv.hostPlatform.system == "x86_64-linux" || - stdenv.hostPlatform.system == "armv7l-linux" || - stdenv.hostPlatform.system == "aarch64-linux"; plugins = - assert !(jre && icedtea); - if builtins.hasAttr "enableVLC" cfg - then throw "The option \"${browserName}.enableVLC\" has been removed since Firefox no longer supports npapi plugins" - else - ([ ] - ++ lib.optional enableAdobeFlash flashplayer - ++ lib.optional (cfg.enableDjvu or false) (djview4) - ++ lib.optional (cfg.enableMPlayer or false) (MPlayerPlugin browser) - ++ lib.optional (supportsJDK && jre && jrePlugin ? mozillaPlugin) jrePlugin - ++ lib.optional icedtea adoptopenjdk-icedtea-web - ++ lib.optional (cfg.enableGoogleTalkPlugin or false) google_talk_plugin - ++ lib.optional (cfg.enableFriBIDPlugin or false) fribid - ++ lib.optional (cfg.enableGnomeExtensions or false) gnome3.gnome-shell - ++ lib.optional (cfg.enableBluejeans or false) bluejeans - ++ lib.optional (cfg.enableAdobeReader or false) adobe-reader - ++ extraPlugins - ); + let + removed = lib.filter (a: builtins.hasAttr a cfg) [ + "enableVLC" + "enableDjvu" + "enableMPlayer" + "jre" + "icedtea" + "enableGoogleTalkPlugin" + "enableFriBIDPlugin" + "enableBluejeans" + "enableAdobeReader" + ]; + in if removed != [] + then throw "Your configuration mentions ${lib.concatMapStringsSep ", " (p: browserName + "." + p) removed}. All plugin related options, except for the adobe flash player, have been removed, since Firefox from version 52 onwards no longer supports npapi plugins (see https://support.mozilla.org/en-US/kb/npapi-plugins)." + else lib.optional enableAdobeFlash flashplayer; + nativeMessagingHosts = ([ ] ++ lib.optional (cfg.enableBrowserpass or false) (lib.getBin browserpass) @@ -71,6 +61,7 @@ let ++ lib.optional (cfg.enableGnomeExtensions or false) chrome-gnome-shell ++ lib.optional (cfg.enableUgetIntegrator or false) uget-integrator ++ lib.optional (cfg.enablePlasmaBrowserIntegration or false) plasma-browser-integration + ++ lib.optional (cfg.enableFXCastBridge or false) fx_cast_bridge ++ extraNativeMessagingHosts ); libs = lib.optional stdenv.isLinux udev @@ -155,9 +146,9 @@ let install -D -t $out/share/applications $desktopItem/share/applications/* - mkdir -p $out/lib/mozilla + mkdir -p $out/lib/mozilla/native-messaging-hosts for ext in ${toString nativeMessagingHosts}; do - lndir -silent $ext/lib/mozilla $out/lib/mozilla + ln -sLt $out/lib/mozilla/native-messaging-hosts $ext/lib/mozilla/native-messaging-hosts/* done # For manpages, in case the program supplies them diff --git a/pkgs/applications/networking/browsers/google-chrome/default.nix b/pkgs/applications/networking/browsers/google-chrome/default.nix index 9f49925b267..e5cd08f7df7 100644 --- a/pkgs/applications/networking/browsers/google-chrome/default.nix +++ b/pkgs/applications/networking/browsers/google-chrome/default.nix @@ -5,7 +5,7 @@ , libXcursor, libXext, libXfixes, libXrender, libXScrnSaver, libXcomposite, libxcb , alsaLib, libXdamage, libXtst, libXrandr, expat, cups , dbus, gtk2, gtk3, gdk-pixbuf, gcc-unwrapped, at-spi2-atk, at-spi2-core -, kerberos +, kerberos, libdrm, mesa # command line arguments which are always set e.g "--disable-gpu" , commandLineArgs ? "" @@ -58,7 +58,7 @@ let liberation_ttf curl utillinux xdg_utils wget flac harfbuzz icu libpng opusWithCustomModes snappy speechd bzip2 libcap at-spi2-atk at-spi2-core - kerberos + kerberos libdrm mesa ] ++ optional pulseSupport libpulseaudio ++ [ gtk ]; @@ -108,7 +108,7 @@ in stdenv.mkDerivation { --replace /opt/google/$appname/google-$appname $exe substituteInPlace $out/share/menu/google-$appname.menu \ --replace /opt $out/share \ - --replace $out/share/google/chrome/google-$appname $exe + --replace $out/share/google/$appname/google-$appname $exe for icon_file in $out/share/google/chrome*/product_logo_*[0-9].png; do num_and_suffix="''${icon_file##*logo_}" @@ -133,7 +133,7 @@ in stdenv.mkDerivation { meta = { description = "A freeware web browser developed by Google"; - homepage = https://www.google.com/chrome/browser/; + homepage = "https://www.google.com/chrome/browser/"; license = licenses.unfree; maintainers = [ maintainers.msteen ]; platforms = [ "x86_64-linux" ]; diff --git a/pkgs/applications/networking/browsers/links2/default.nix b/pkgs/applications/networking/browsers/links2/default.nix index b09be81cc41..d58fc8fd19b 100644 --- a/pkgs/applications/networking/browsers/links2/default.nix +++ b/pkgs/applications/networking/browsers/links2/default.nix @@ -31,7 +31,7 @@ stdenv.mkDerivation rec { ++ stdenv.lib.optional enableDirectFB "--with-directfb"; meta = with stdenv.lib; { - homepage = http://links.twibright.com/; + homepage = "http://links.twibright.com/"; description = "A small browser with some graphics support"; maintainers = with maintainers; [ raskin ]; platforms = platforms.unix; diff --git a/pkgs/applications/networking/browsers/luakit/default.nix b/pkgs/applications/networking/browsers/luakit/default.nix index 0605eda7fc7..bf10043e942 100644 --- a/pkgs/applications/networking/browsers/luakit/default.nix +++ b/pkgs/applications/networking/browsers/luakit/default.nix @@ -55,7 +55,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Fast, small, webkit based browser framework extensible in Lua"; - homepage = https://luakit.github.io/; + homepage = "https://luakit.github.io/"; license = licenses.gpl3; platforms = platforms.linux; # Only tested linux }; diff --git a/pkgs/applications/networking/browsers/lynx/default.nix b/pkgs/applications/networking/browsers/lynx/default.nix index 3f4f96d33ef..8aeee45b9e5 100644 --- a/pkgs/applications/networking/browsers/lynx/default.nix +++ b/pkgs/applications/networking/browsers/lynx/default.nix @@ -43,7 +43,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "A text-mode web browser"; - homepage = https://lynx.invisible-island.net/; + homepage = "https://lynx.invisible-island.net/"; license = licenses.gpl2Plus; platforms = platforms.unix; }; diff --git a/pkgs/applications/networking/browsers/midori/default.nix b/pkgs/applications/networking/browsers/midori/default.nix index 1d1928d168b..66f6384643a 100644 --- a/pkgs/applications/networking/browsers/midori/default.nix +++ b/pkgs/applications/networking/browsers/midori/default.nix @@ -51,7 +51,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Lightweight WebKitGTK web browser"; - homepage = https://www.midori-browser.org/; + homepage = "https://www.midori-browser.org/"; license = with licenses; [ lgpl21Plus ]; platforms = with platforms; linux; maintainers = with maintainers; [ raskin ramkromberg ]; diff --git a/pkgs/applications/networking/browsers/mozilla-plugins/bluejeans/default.nix b/pkgs/applications/networking/browsers/mozilla-plugins/bluejeans/default.nix deleted file mode 100644 index e8841a0ab6f..00000000000 --- a/pkgs/applications/networking/browsers/mozilla-plugins/bluejeans/default.nix +++ /dev/null @@ -1,55 +0,0 @@ -{ stdenv, fetchurl, xorg, gtk2, glib, gdk-pixbuf, dpkg, libXext, libXfixes -, libXrender, libuuid, libXrandr, libXcomposite, libpulseaudio -}: - -with stdenv.lib; - -let - - rpathInstaller = makeLibraryPath - [gtk2 glib stdenv.cc.cc]; - - rpathPlugin = makeLibraryPath - ([ stdenv.cc.cc gtk2 glib xorg.libX11 gdk-pixbuf libXext libXfixes libXrender libXrandr libXcomposite libpulseaudio ] ++ optional (libuuid != null) libuuid); - -in - -stdenv.mkDerivation rec { - pname = "bluejeans"; - - version = "2.180.71.8"; - - src = fetchurl { - url = "https://swdl.bluejeans.com/skinny/bjnplugin_${version}-1_amd64.deb"; - sha256 = "1fgjgzss0ghk734xpfidazyknfdn11pmyw77pc3wigl83dvx4nb2"; - }; - - unpackPhase = "${dpkg}/bin/dpkg-deb -x $src ."; - - installPhase = - '' - mkdir -p $out - cp -R usr/lib $out/ - - plugins=$out/lib/mozilla/plugins - patchelf \ - --set-rpath "${rpathPlugin}" \ - $plugins/npbjnplugin_${version}.so - - patchelf \ - --set-rpath "${rpathInstaller}" \ - $plugins/npbjninstallplugin_${version}.so - ''; - - dontStrip = true; - dontPatchELF = true; - - passthru.mozillaPlugin = "/lib/mozilla/plugins"; - - meta = { - homepage = http://bluejeans.com; - license = stdenv.lib.licenses.unfree; - maintainers = with maintainers; [ ocharles kamilchm ]; - platforms = stdenv.lib.platforms.linux; - }; -} diff --git a/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer/default.nix b/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer/default.nix index 585b7426eb6..6672a75d574 100644 --- a/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer/default.nix +++ b/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer/default.nix @@ -74,7 +74,7 @@ let in stdenv.mkDerivation rec { pname = "flashplayer"; - version = "32.0.0.293"; + version = "32.0.0.363"; src = fetchurl { url = @@ -85,14 +85,14 @@ stdenv.mkDerivation rec { sha256 = if debug then if arch == "x86_64" then - "0lz1na68gdi9n23hfj5c731dbskm9684cwar7ji8yjfhfryfg5yn" + "06711k4vbn6mqfd8gvx2snsxyalhw15hn5b64sja8726z5rxvzy7" else - "10gm2ynndlyk66fndfbh7ah5ssqpyw8415i10n3lpw940x201dk0" + "0v584aqhy4xk08afi3ypkq4mqjq57y136z82i5ixyim88dqbaf4f" else if arch == "x86_64" then - "0hmlv0v9lbgxrmz0n7czfnrbrwjwxhy99gsr5g1m0aqgw0y61clc" + "1g1ijxypm8a8mfc1x58gksmaakqpp7xmf277wiir8zqjn3vd6c64" else - "0qdw4f48xhnkzdly3jz63v14nmzd0gg49az5wxb08ghs8laaqlik"; + "13nbxmqmbxqvdhdwdqimim2f9fz3y2vrsx6b3pck6352m4i4wzh8"; }; nativeBuildInputs = [ unzip ]; @@ -139,7 +139,7 @@ stdenv.mkDerivation rec { meta = { description = "Adobe Flash Player browser plugin"; - homepage = http://www.adobe.com/products/flashplayer/; + homepage = "http://www.adobe.com/products/flashplayer/"; license = stdenv.lib.licenses.unfree; maintainers = with stdenv.lib.maintainers; [ taku0 ]; platforms = [ "x86_64-linux" "i686-linux" ]; diff --git a/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer/standalone.nix b/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer/standalone.nix index 0f7ded95f40..3661f6edb53 100644 --- a/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer/standalone.nix +++ b/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer/standalone.nix @@ -50,7 +50,7 @@ stdenv.mkDerivation { pname = "flashplayer-standalone"; - version = "32.0.0.293"; + version = "32.0.0.363"; src = fetchurl { url = @@ -60,9 +60,9 @@ stdenv.mkDerivation { "https://fpdownload.macromedia.com/pub/flashplayer/updaters/32/flash_player_sa_linux.x86_64.tar.gz"; sha256 = if debug then - "13mrknvl3yd8vrcs7mp6szz6f9ssfs72apzvc60f9qfwkhiwlg87" + "03zhza8lvc1nvz3racwfsajfd6rnbw3g56dp5wvr1qmaps8xaaqg" else - "0isvmzyi4isxvxxc5ksplcqc5cafpvbrln3dddpms8zps2dxpyzi"; + "0bhp7jv2l2agfzr8m564k749a5g75dw1390phlwvf49n1h8ldap2"; }; nativeBuildInputs = [ unzip ]; @@ -95,7 +95,7 @@ stdenv.mkDerivation { meta = { description = "Adobe Flash Player standalone executable"; - homepage = https://www.adobe.com/support/flashplayer/debug_downloads.html; + homepage = "https://www.adobe.com/support/flashplayer/debug_downloads.html"; license = stdenv.lib.licenses.unfree; maintainers = with stdenv.lib.maintainers; [ taku0 ]; platforms = [ "x86_64-linux" ]; diff --git a/pkgs/applications/networking/browsers/mozilla-plugins/fribid/builder.sh b/pkgs/applications/networking/browsers/mozilla-plugins/fribid/builder.sh deleted file mode 100644 index fb36125b3a1..00000000000 --- a/pkgs/applications/networking/browsers/mozilla-plugins/fribid/builder.sh +++ /dev/null @@ -1,4 +0,0 @@ -source $stdenv/setup -export PREFIX=$out -configureFlags="--plugin-path=$out/lib/mozilla/plugins" -genericBuild diff --git a/pkgs/applications/networking/browsers/mozilla-plugins/fribid/default.nix b/pkgs/applications/networking/browsers/mozilla-plugins/fribid/default.nix deleted file mode 100644 index 101ae99d665..00000000000 --- a/pkgs/applications/networking/browsers/mozilla-plugins/fribid/default.nix +++ /dev/null @@ -1,38 +0,0 @@ -{ stdenv, fetchurl, pkgconfig, openssl, glib, libX11, gtk2, gettext, intltool }: - -stdenv.mkDerivation rec { - pname = "fribid"; - version = "1.0.4"; - builder = ./builder.sh; - - src = fetchurl { - url = "https://fribid.se/releases/source/${pname}-${version}.tar.bz2"; - sha256 = "a679f3a0534d5f05fac10b16b49630a898c0b721cfa24d2c827fa45485476649"; - }; - - nativeBuildInputs = [ pkgconfig ]; - buildInputs = [ openssl libX11 gtk2 glib gettext intltool ]; - patches = [ - ./translation-xgettext-to-intltool.patch - ./plugin-linkfix.patch - ./ipc-lazytrace.patch - ]; - - postPatch = "substituteInPlace plugin/pluginutil.c --replace strndup strndup_"; - - passthru.mozillaPlugin = "/lib/mozilla/plugins"; - - meta = with stdenv.lib; { - description = "A browser plugin to manage Swedish BankID:s"; - longDescription = '' - FriBID is an open source software for the Swedish e-id system - called BankID. FriBID also supports processor architectures and - Linux/BSD distributions that the official software doesn't - support. - ''; - homepage = http://fribid.se; - license = with licenses; [ gpl2 mpl10 ]; - maintainers = [ maintainers.edwtjo ]; - platforms = platforms.linux; - }; -} diff --git a/pkgs/applications/networking/browsers/mozilla-plugins/fribid/ipc-lazytrace.patch b/pkgs/applications/networking/browsers/mozilla-plugins/fribid/ipc-lazytrace.patch deleted file mode 100644 index b7d05ddd0ef..00000000000 --- a/pkgs/applications/networking/browsers/mozilla-plugins/fribid/ipc-lazytrace.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- a/plugin/ipc.c 2012-11-14 18:02:43.000000000 +0100 -+++ b/plugin/ipc.c 2013-09-21 08:55:39.960265058 +0200 -@@ -74,6 +74,7 @@ - //close(pipeOut[PIPE_READ_END]); - - execvp(mainBinary, (char *const *)argv); -+ fprintf(stderr, "Wanted signing executable\t<%s>\n", mainBinary); - perror(BINNAME ": Failed to execute main binary"); - exit(1); - } else { diff --git a/pkgs/applications/networking/browsers/mozilla-plugins/fribid/plugin-linkfix.patch b/pkgs/applications/networking/browsers/mozilla-plugins/fribid/plugin-linkfix.patch deleted file mode 100644 index 1128381238b..00000000000 --- a/pkgs/applications/networking/browsers/mozilla-plugins/fribid/plugin-linkfix.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/plugin/Makefile 2013-09-18 13:55:11.091652553 +0200 -+++ b/plugin/Makefile 2013-09-18 13:58:27.513618750 +0200 -@@ -60,7 +60,7 @@ - for path in $(NPAPI_PLUGIN_PATHS); do \ - (../configure --internal--remove-link $(DESTDIR)$$path/libfribidplugin.so $(NPAPI_PLUGIN_LIB) || exit 1) && \ - install -d $(DESTDIR)$$path && \ -- ln -sf $(NPAPI_PLUGIN_LIB) $(DESTDIR)$$path/libfribidplugin.so; \ -+ ln -sf $(DESTDIR)$(NPAPI_PLUGIN_LIB) $(DESTDIR)$$path/libfribidplugin.so; \ - done - - uninstall: diff --git a/pkgs/applications/networking/browsers/mozilla-plugins/fribid/translation-xgettext-to-intltool.patch b/pkgs/applications/networking/browsers/mozilla-plugins/fribid/translation-xgettext-to-intltool.patch deleted file mode 100644 index dcac4f17928..00000000000 --- a/pkgs/applications/networking/browsers/mozilla-plugins/fribid/translation-xgettext-to-intltool.patch +++ /dev/null @@ -1,16 +0,0 @@ ---- a/translations/Makefile 2013-09-18 07:25:16.503800613 +0200 -+++ b/translations/Makefile 2013-09-18 07:25:29.495869405 +0200 -@@ -38,7 +38,7 @@ - all: template.pot $(MOFILES) - - template.pot: $(POTFILES) $(DEFINES) -- xgettext -k_ -ktranslatable -d $(DOMAIN) --package-name=$(PACKAGENAME) --package-version=$(PACKAGEVERSION) --copyright-holder='YOUR NAME' -o $@ $(POTFILES) -+ intltool-update --gettext-package=$(PACKAGENAME) -o $@ sv - - .po.mo: - msgfmt $< -o $@ ---- a/translations/POTFILES.in 2013-09-16 20:28:56.766106014 +0200 -+++ b/translations/POTFILES.in 2013-09-18 13:15:05.252689648 +0200 -@@ -0,0 +1,2 @@ -+client/gtk.c -+client/gtk/sign.glade diff --git a/pkgs/applications/networking/browsers/mozilla-plugins/google-talk-plugin/default.nix b/pkgs/applications/networking/browsers/mozilla-plugins/google-talk-plugin/default.nix deleted file mode 100644 index bde4ce15d7c..00000000000 --- a/pkgs/applications/networking/browsers/mozilla-plugins/google-talk-plugin/default.nix +++ /dev/null @@ -1,117 +0,0 @@ -{ stdenv, fetchurl, libGL, xorg, cairo -, libpng, gtk2, glib, gdk-pixbuf, fontconfig, freetype, curl -, dbus-glib, alsaLib, libpulseaudio, systemd, pango -}: - -with stdenv.lib; - -let - - baseURL = "http://dl.google.com/linux/talkplugin/deb/pool/main/g/google-talkplugin"; - - rpathPlugin = makeLibraryPath - [ libGL - xorg.libXt - xorg.libX11 - xorg.libXrender - cairo - libpng - gtk2 - glib - fontconfig - freetype - curl - ]; - - rpathProgram = makeLibraryPath - [ gdk-pixbuf - glib - gtk2 - xorg.libX11 - xorg.libXcomposite - xorg.libXfixes - xorg.libXrender - xorg.libXrandr - xorg.libXext - stdenv.cc.cc - alsaLib - libpulseaudio - dbus-glib - systemd - curl - pango - cairo - ]; - -in - -stdenv.mkDerivation rec { - pname = "google-talk-plugin"; - - # You can get the upstream version and SHA-1 hash from the following URLs: - # curl -s http://dl.google.com/linux/talkplugin/deb/dists/stable/main/binary-amd64/Packages | grep -E 'Version|SHA1' - # curl -s http://dl.google.com/linux/talkplugin/deb/dists/stable/main/binary-i386/Packages | grep -E 'Version|SHA1' - version = "5.41.3.0"; - - src = - if stdenv.hostPlatform.system == "x86_64-linux" then - fetchurl { - url = "${baseURL}/google-talkplugin_${version}-1_amd64.deb"; - sha1 = "0bbc3d6997ba22ce712d93e5bc336c894b54fc81"; - } - else if stdenv.hostPlatform.system == "i686-linux" then - fetchurl { - url = "${baseURL}/google-talkplugin_${version}-1_i386.deb"; - sha1 = "6eae0544858f85c68b0cc46d7786e990bd94f139"; - } - else throw "Google Talk does not support your platform."; - - unpackPhase = '' - ar p "$src" data.tar.gz | tar xz - ''; - - installPhase = - '' - plugins=$out/lib/mozilla/plugins - mkdir -p $plugins - cp opt/google/talkplugin/*.so $plugins - - for i in libnpgoogletalk.so libppgoogletalk.so libppo1d.so; do - patchelf --set-rpath "${makeLibraryPath [ stdenv.cc.cc xorg.libX11 ]}:${stdenv.cc.cc.lib}/lib64" $plugins/$i - done - - for i in libgoogletalkremoting.so libnpo1d.so; do - patchelf --set-rpath "$out/libexec/google/talkplugin/lib:${rpathPlugin}:${stdenv.cc.cc.lib}/lib64" $plugins/$i - done - - mkdir -p $out/libexec/google/talkplugin - cp -prd opt/google/talkplugin/{data,GoogleTalkPlugin,locale,remoting24x24.png,windowpicker.glade} $out/libexec/google/talkplugin/ - - patchelf \ - --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ - --set-rpath "${rpathProgram}:${stdenv.cc.cc.lib}/lib64" \ - $out/libexec/google/talkplugin/GoogleTalkPlugin - - # Generate an LD_PRELOAD wrapper to redirect execvp() calls to - # /opt/../GoogleTalkPlugin. - preload=$out/libexec/google/talkplugin/libpreload.so - mkdir -p $(dirname $preload) - gcc -shared ${./preload.c} -o $preload -ldl -DOUT=\"$out\" -fPIC - echo $preload > $plugins/extra-ld-preload - - # Prevent a dependency on gcc. - strip -S $preload - patchELF $preload - ''; - - dontStrip = true; - dontPatchELF = true; - - passthru.mozillaPlugin = "/lib/mozilla/plugins"; - - meta = { - homepage = http://www.google.com/chat/video/; - license = stdenv.lib.licenses.unfree; - maintainers = [ stdenv.lib.maintainers.eelco ]; - }; -} diff --git a/pkgs/applications/networking/browsers/mozilla-plugins/google-talk-plugin/preload.c b/pkgs/applications/networking/browsers/mozilla-plugins/google-talk-plugin/preload.c deleted file mode 100644 index 1e2c31d9527..00000000000 --- a/pkgs/applications/networking/browsers/mozilla-plugins/google-talk-plugin/preload.c +++ /dev/null @@ -1,60 +0,0 @@ -/* Google Talk Plugin executes a helper program in /opt. This - LD_PRELOAD library intercepts execvp() calls to redirect them to - the corresponding location in $out. */ - -#define _GNU_SOURCE -#include -#include -#include -#include -#include -#include -#include -#include -#include - -char origDir [] = "/opt/google/talkplugin"; -char realDir [] = OUT "/libexec/google/talkplugin"; - -const char * rewrite(const char * path, char * buf) -{ - if (strncmp(path, origDir, sizeof(origDir) - 1) != 0) return path; - if (snprintf(buf, PATH_MAX, "%s%s", realDir, path + sizeof(origDir) - 1) >= PATH_MAX) - abort(); - return buf; -} - -int execvp(const char * path, char * const argv[]) -{ - int (*_execvp) (const char *, char * const argv[]) = dlsym(RTLD_NEXT, "execvp"); - char buf[PATH_MAX]; - return _execvp(rewrite(path, buf), argv); -} - -int open(const char *path, int flags, ...) -{ - char buf[PATH_MAX]; - int (*_open) (const char *, int, mode_t) = dlsym(RTLD_NEXT, "open"); - mode_t mode = 0; - if (flags & O_CREAT) { - va_list ap; - va_start(ap, flags); - mode = va_arg(ap, mode_t); - va_end(ap); - } - return _open(rewrite(path, buf), flags, mode); -} - -int open64(const char *path, int flags, ...) -{ - char buf[PATH_MAX]; - int (*_open64) (const char *, int, mode_t) = dlsym(RTLD_NEXT, "open64"); - mode_t mode = 0; - if (flags & O_CREAT) { - va_list ap; - va_start(ap, flags); - mode = va_arg(ap, mode_t); - va_end(ap); - } - return _open64(rewrite(path, buf), flags, mode); -} diff --git a/pkgs/applications/networking/browsers/mozilla-plugins/mozplugger/default.nix b/pkgs/applications/networking/browsers/mozilla-plugins/mozplugger/default.nix deleted file mode 100644 index fd956f62327..00000000000 --- a/pkgs/applications/networking/browsers/mozilla-plugins/mozplugger/default.nix +++ /dev/null @@ -1,31 +0,0 @@ -{ stdenv, fetchurl, firefox, libX11, xorgproto }: - -stdenv.mkDerivation rec { - pname = "mozplugger"; - version = "2.1.6"; - - src = fetchurl { - url = "http://mozplugger.mozdev.org/files/mozplugger-${version}.tar.gz"; - sha256 = "1vszkq4kdbaxsrqr2xn9rq6ipza9fngdri79gvjqk3bvsdmg0k19"; - }; - - buildInputs = [ firefox libX11 xorgproto ]; - - installPhase = '' - mkdir -p "$out/etc" "$out/bin" "$out/lib/mozilla/plugins" "$out/share/man/man7" - cp mozpluggerrc "$out/etc" - cp mozplugger-{helper,controller,linker,update} "$out/bin" - cp mozplugger.so "$out/lib/mozilla/plugins" - cp mozplugger.7 "$out/share/man/man7" - - mkdir -p "$out/share/${pname}-${version}/plugin" - ln -s "$out/lib/mozilla/plugins/mozplugger.so" "$out/share/${pname}-${version}/plugin" - ''; - - meta = { - description = "Mozilla plugin for launching external program for handling in-page objects"; - homepage = http://mozplugger.mozdev.org/; - license = stdenv.lib.licenses.gpl2Plus; - platforms = stdenv.lib.platforms.linux; - }; -} diff --git a/pkgs/applications/networking/browsers/mozilla-plugins/mplayerplug-in/default.nix b/pkgs/applications/networking/browsers/mozilla-plugins/mplayerplug-in/default.nix deleted file mode 100644 index a5bfda9f26c..00000000000 --- a/pkgs/applications/networking/browsers/mozilla-plugins/mplayerplug-in/default.nix +++ /dev/null @@ -1,37 +0,0 @@ -{stdenv, fetchurl, pkgconfig, browser, libXpm, gettext}: - -stdenv.mkDerivation rec { - name = "mplayerplug-in-3.55"; - - src = fetchurl { - url = "mirror://sourceforge/mplayerplug-in/${name}.tar.gz"; - sha256 = "0zkvqrzibrbljiccvz3rhbmgifxadlrfjylqpz48jnjx9kggynms"; - }; - - postConfigure = - (if browser ? isFirefox3Like then '' - # Cause a rebuild of these file from the IDL file, needed for GNU IceCat 3 - # and Mozilla Firefox 3. - # See, e.g., http://article.gmane.org/gmane.comp.mozilla.mplayerplug-in/2104 . - rm -f Source/nsIScriptableMplayerPlugin.h - '' - else ""); - - nativeBuildInputs = [ pkgconfig ]; - buildInputs = [ browser (browser.gtk) libXpm gettext ]; - - installPhase = '' - mkdir -p $out/lib/mozilla/plugins - cp -p mplayerplug-in*.so mplayerplug-in*.xpt $out/lib/mozilla/plugins - ''; - - passthru = { - mozillaPlugin = "/lib/mozilla/plugins"; - }; - - meta = with stdenv.lib; { - description = "A browser plugin that uses mplayer to play digital media from websites"; - homepage = http://mplayerplug-in.sourceforge.net/; - license = with licenses; [ gpl2Plus lgpl2Plus "MPLv1+" ]; - }; -} diff --git a/pkgs/applications/networking/browsers/mozilla-plugins/nspluginwrapper/default.nix b/pkgs/applications/networking/browsers/mozilla-plugins/nspluginwrapper/default.nix deleted file mode 100644 index 10ae0eb1da6..00000000000 --- a/pkgs/applications/networking/browsers/mozilla-plugins/nspluginwrapper/default.nix +++ /dev/null @@ -1,40 +0,0 @@ -{stdenv, fetchurl, which, pkgconfig, file, glib, gtk2, gtk3, curl, libXt}: -let - srcData = # Generated upstream information - rec { - baseName="nspluginwrapper"; - version="1.4.4"; - name="${baseName}-${version}"; - hash="1fxjz9ifhw0drm12havlsl4jpsq1nv930gqa005kgddv5pa99vgj"; - url="http://nspluginwrapper.org/download/nspluginwrapper-1.4.4.tar.gz"; - }; -in -stdenv.mkDerivation { - inherit (srcData) name version; - - src = fetchurl{ - inherit (srcData) url; - sha256 = srcData.hash; - }; - - preConfigure = '' - sed -e 's@/usr/bin/@@g' -i configure - sed -e '/gthread[.]h/d' -i src/npw-player.c - export NIX_LDFLAGS="$NIX_LDFLAGS -lgthread-2.0" - export configureFlags="$configureFlags --target-cpu=$(uname -m)" - ''; - - nativeBuildInputs = [ pkgconfig ]; - buildInputs = [which file glib gtk2 gtk3 curl libXt]; - - preferLocalBuild = true; - - meta = { - description = ''A wrapper to run browser plugins out-of-process''; - homepage = http://nspluginwrapper.org/; - license = stdenv.lib.licenses.gpl2; - platforms = [ "x64_64-linux" "i686-linux" ]; - maintainers = [ stdenv.lib.maintainers.raskin ]; - inherit (srcData) version; - }; -} diff --git a/pkgs/applications/networking/browsers/mozilla-plugins/nspluginwrapper/default.upstream b/pkgs/applications/networking/browsers/mozilla-plugins/nspluginwrapper/default.upstream deleted file mode 100644 index 62831613a2e..00000000000 --- a/pkgs/applications/networking/browsers/mozilla-plugins/nspluginwrapper/default.upstream +++ /dev/null @@ -1,4 +0,0 @@ -name nspluginwrapper -target default.nix -url http://nspluginwrapper.org/download/ -version_link /nspluginwrapper-[0-9]+ diff --git a/pkgs/applications/networking/browsers/next/default.nix b/pkgs/applications/networking/browsers/next/default.nix index 97c65fc12ef..e03f918a587 100644 --- a/pkgs/applications/networking/browsers/next/default.nix +++ b/pkgs/applications/networking/browsers/next/default.nix @@ -15,13 +15,13 @@ in stdenv.mkDerivation rec { pname = "next"; - version = "1.3.4"; + version = "1.5.0"; src = fetchFromGitHub { owner = "atlas-engineer"; repo = "next"; rev = version; - sha256 = "00iqv4xarabl98gdl1rzqkc5v0vfljx1nawsxqsx9x3a9mnxmgxi"; + sha256 = "1gqkp185wcwaxr8py90hqk44nqjblrrdwvig19gizrbzr2gx2zhy"; }; nativeBuildInputs = [ @@ -37,7 +37,6 @@ stdenv.mkDerivation rec { cl-annot cl-ansi-text cl-css - cl-hooks cl-json cl-markup cl-ppcre @@ -52,15 +51,21 @@ stdenv.mkDerivation rec { lparallel mk-string-metrics parenscript + plump quri + serapeum sqlite str swank trivia trivial-clipboard + trivial-types unix-opts ]; + # This reference is unfortunately not detected by Nix + propagatedBuildInputs = [ next-gtk-webkit ]; + prePatch = '' substituteInPlace source/ports/gtk-webkit.lisp \ --replace "next-gtk-webkit" "${next-gtk-webkit}/bin/next-gtk-webkit" @@ -82,7 +87,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Infinitely extensible web-browser (with Lisp development files using WebKitGTK platform port)"; - homepage = https://next.atlas.engineer; + homepage = "https://next.atlas.engineer"; license = licenses.bsd3; maintainers = [ maintainers.lewo ]; platforms = [ "x86_64-linux" ]; diff --git a/pkgs/applications/networking/browsers/next/next-gtk-webkit.nix b/pkgs/applications/networking/browsers/next/next-gtk-webkit.nix index a71583ffbec..8039c549240 100644 --- a/pkgs/applications/networking/browsers/next/next-gtk-webkit.nix +++ b/pkgs/applications/networking/browsers/next/next-gtk-webkit.nix @@ -42,7 +42,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Infinitely extensible web-browser (user interface only)"; - homepage = https://next.atlas.engineer; + homepage = "https://next.atlas.engineer"; license = licenses.bsd3; maintainers = [ maintainers.lewo ]; platforms = [ "x86_64-linux" ]; diff --git a/pkgs/applications/networking/browsers/opera/default.nix b/pkgs/applications/networking/browsers/opera/default.nix index c1ede504449..686ffee9148 100644 --- a/pkgs/applications/networking/browsers/opera/default.nix +++ b/pkgs/applications/networking/browsers/opera/default.nix @@ -47,11 +47,11 @@ let in stdenv.mkDerivation rec { pname = "opera"; - version = "65.0.3467.48"; + version = "67.0.3575.31"; src = fetchurl { url = "${mirror}/${version}/linux/${pname}-stable_${version}_amd64.deb"; - sha256 = "0vcpq2p8si6rlyvd8nzs0a7pjxks2qn8i8czna968wyfxlczckyr"; + sha256 = "1ghygin7xf5lwd77s8f6bag339di4alwlkqwjzlq20wzwx4lns4w"; }; unpackCmd = "${dpkg}/bin/dpkg-deb -x $curSrc ."; diff --git a/pkgs/applications/networking/browsers/otter/default.nix b/pkgs/applications/networking/browsers/otter/default.nix deleted file mode 100644 index d41f8440420..00000000000 --- a/pkgs/applications/networking/browsers/otter/default.nix +++ /dev/null @@ -1,27 +0,0 @@ -{ stdenv, cmake, fetchFromGitHub -, qtbase, qtmultimedia, qtwebengine, qtxmlpatterns -, version ? "1.0.01" -, sourceSha ? "1jw8bj3lcqngr0mqwvz1gf47qjxbwiyda7x4sm96a6ckga7pcwyb" -}: -stdenv.mkDerivation { - pname = "otter-browser"; - inherit version; - - src = fetchFromGitHub { - owner = "OtterBrowser"; - repo = "otter-browser"; - rev = "v${version}"; - sha256 = sourceSha; - }; - - nativeBuildInputs = [ cmake ]; - - buildInputs = [ qtbase qtmultimedia qtwebengine qtxmlpatterns ]; - - meta = with stdenv.lib; { - homepage = https://otter-browser.org; - license = licenses.gpl3Plus; - description = "Browser aiming to recreate the best aspects of the classic Opera (12.x) UI using Qt5"; - maintainers = with maintainers; [ lheckemann ]; - }; -} diff --git a/pkgs/applications/networking/browsers/palemoon/default.nix b/pkgs/applications/networking/browsers/palemoon/default.nix index 05262b0cf50..7c010b91a1e 100644 --- a/pkgs/applications/networking/browsers/palemoon/default.nix +++ b/pkgs/applications/networking/browsers/palemoon/default.nix @@ -13,13 +13,13 @@ let in stdenv.mkDerivation rec { pname = "palemoon"; - version = "28.7.2"; + version = "28.8.4"; src = fetchFromGitHub { owner = "MoonchildProductions"; repo = "UXP"; rev = "PM${version}_Release"; - sha256 = "08w90269mwcqsdhx4vvp18c5iccvzqhaaw6aw7w0nppf2f2k8lri"; + sha256 = "1k2j4rlgjwkns3a592pbiwwhrpja3fachvzby1his3d1mhdvyc6f"; }; desktopItem = makeDesktopItem { @@ -55,6 +55,7 @@ in stdenv.mkDerivation rec { configurePhase = '' export MOZBUILD_STATE_PATH=$(pwd)/mozbuild export MOZCONFIG=$(pwd)/mozconfig + export MOZ_NOSPAM=1 export builddir=$(pwd)/pmbuild echo > $MOZCONFIG " diff --git a/pkgs/applications/networking/browsers/qutebrowser/default.nix b/pkgs/applications/networking/browsers/qutebrowser/default.nix index b616e82a209..537bb0ebf2e 100644 --- a/pkgs/applications/networking/browsers/qutebrowser/default.nix +++ b/pkgs/applications/networking/browsers/qutebrowser/default.nix @@ -21,12 +21,12 @@ let in mkDerivationWith python3Packages.buildPythonApplication rec { pname = "qutebrowser"; - version = "1.8.3"; + version = "1.10.1"; # the release tarballs are different from the git checkout! src = fetchurl { url = "https://github.com/qutebrowser/qutebrowser/releases/download/v${version}/${pname}-${version}.tar.gz"; - sha256 = "055zmzk3q0m3hx1742nfy2mdawfllrkvijnbzp1hiv01dj1bxaf8"; + sha256 = "06bcnsfb4kz92bh8xjxwaghhy9x2mmcb76wk3fv868jb1ga75vd8"; }; # Needs tox @@ -105,7 +105,7 @@ in mkDerivationWith python3Packages.buildPythonApplication rec { ''; meta = with stdenv.lib; { - homepage = https://github.com/The-Compiler/qutebrowser; + homepage = "https://github.com/The-Compiler/qutebrowser"; description = "Keyboard-focused browser with a minimal GUI"; license = licenses.gpl3Plus; maintainers = with maintainers; [ jagajaga rnhmjoj ebzzry ]; diff --git a/pkgs/applications/networking/browsers/qutebrowser/fix-restart.patch b/pkgs/applications/networking/browsers/qutebrowser/fix-restart.patch index 56f6bcebf28..d54a37fe71f 100644 --- a/pkgs/applications/networking/browsers/qutebrowser/fix-restart.patch +++ b/pkgs/applications/networking/browsers/qutebrowser/fix-restart.patch @@ -1,29 +1,19 @@ -diff --git a/qutebrowser/app.py b/qutebrowser/app.py -index 2b6896b76..ee05f379d 100644 ---- a/qutebrowser/app.py -+++ b/qutebrowser/app.py -@@ -555,22 +555,8 @@ class Quitter: - args: The commandline as a list of strings. - cwd: The current working directory as a string. +diff --git a/quitter.py b/quitterb.py +index a42b9d0..f544ccb 100644 +--- a/qutebrowser/misc/quitter.py ++++ b/qutebrowser/misc/quitter.py +@@ -112,13 +112,7 @@ class Quitter(QObject): + Return: + The commandline as a list of strings. """ - if os.path.basename(sys.argv[0]) == 'qutebrowser': - # Launched via launcher script - args = [sys.argv[0]] -- cwd = None - elif hasattr(sys, 'frozen'): - args = [sys.executable] -- cwd = os.path.abspath(os.path.dirname(sys.executable)) - else: - args = [sys.executable, '-m', 'qutebrowser'] -- cwd = os.path.join( -- os.path.abspath(os.path.dirname(qutebrowser.__file__)), '..') -- if not os.path.isdir(cwd): -- # Probably running from a python egg. Let's fallback to -- # cwd=None and see if that works out. -- # See https://github.com/qutebrowser/qutebrowser/issues/323 -- cwd = None + args = ['@qutebrowser@'] -+ cwd = None # Add all open pages so they get reopened. - page_args = [] + page_args = [] # type: typing.MutableSequence[str] diff --git a/pkgs/applications/networking/browsers/surf/default.nix b/pkgs/applications/networking/browsers/surf/default.nix index 0437ab933bd..03571469da1 100644 --- a/pkgs/applications/networking/browsers/surf/default.nix +++ b/pkgs/applications/networking/browsers/surf/default.nix @@ -39,7 +39,7 @@ stdenv.mkDerivation rec { possible to embed it in another application. Furthermore, one can point surf to another URI by setting its XProperties. ''; - homepage = https://surf.suckless.org; + homepage = "https://surf.suckless.org"; license = licenses.mit; platforms = webkitgtk.meta.platforms; maintainers = with maintainers; [ joachifm ]; diff --git a/pkgs/applications/networking/browsers/tor-browser-bundle-bin/default.nix b/pkgs/applications/networking/browsers/tor-browser-bundle-bin/default.nix index ff87e6b703d..97a03ccbab5 100644 --- a/pkgs/applications/networking/browsers/tor-browser-bundle-bin/default.nix +++ b/pkgs/applications/networking/browsers/tor-browser-bundle-bin/default.nix @@ -28,7 +28,7 @@ , apulse # Media support (implies audio support) -, mediaSupport ? false +, mediaSupport ? true , ffmpeg , gmp @@ -54,9 +54,6 @@ # Extra preferences , extraPrefs ? "" - -# For meta -, tor-browser-bundle }: with stdenv.lib; @@ -93,19 +90,19 @@ let fteLibPath = makeLibraryPath [ stdenv.cc.cc gmp ]; # Upstream source - version = "9.0.2"; + version = "9.0.9"; lang = "en-US"; srcs = { x86_64-linux = fetchurl { url = "https://dist.torproject.org/torbrowser/${version}/tor-browser-linux64-${version}_${lang}.tar.xz"; - sha256 = "1xdnqphsj7wzwyv927jwd3fi36srx0minydwl5jg5yyd3m3if9hb"; + sha256 = "0ws4s0jn559j1ih60wqspxvr5wpqww29kzk0xzzbr56wfyahp4fg"; }; i686-linux = fetchurl { url = "https://dist.torproject.org/torbrowser/${version}/tor-browser-linux32-${version}_${lang}.tar.xz"; - sha256 = "1qk9fg5dvyyvbngsqla00by8a974mpvq9pnm2djif54lr2nfivwf"; + sha256 = "0sv73jlv0qwlkxgqkmqg1flsa9lbkxa4yahny5wrfgsbw74xibkl"; }; }; in @@ -394,7 +391,15 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Tor Browser Bundle built by torproject.org"; - longDescription = tor-browser-bundle.meta.longDescription; + longDescription = '' + Tor Browser Bundle is a bundle of the Tor daemon, Tor Browser (heavily patched version of + Firefox), several essential extensions for Tor Browser, and some tools that glue those + together with a convenient UI. + + `tor-browser-bundle-bin` package is the official version built by torproject.org patched with + `patchelf` to work under nix and with bundled scripts adapted to the read-only nature of + the `/nix/store`. + ''; homepage = "https://www.torproject.org/"; platforms = attrNames srcs; maintainers = with maintainers; [ offline matejc doublec thoughtpolice joachifm hax404 cap ]; diff --git a/pkgs/applications/networking/browsers/tor-browser-bundle/default.nix b/pkgs/applications/networking/browsers/tor-browser-bundle/default.nix deleted file mode 100644 index 7ff099853e2..00000000000 --- a/pkgs/applications/networking/browsers/tor-browser-bundle/default.nix +++ /dev/null @@ -1,345 +0,0 @@ -{ stdenv -, fetchgit -, fetchurl -, symlinkJoin - -, tor -, tor-browser-unwrapped - -# Wrapper runtime -, coreutils -, hicolor-icon-theme -, shared-mime-info -, noto-fonts -, noto-fonts-emoji - -# Audio support -, audioSupport ? mediaSupport -, apulse - -# Media support (implies audio support) -, mediaSupport ? false -, ffmpeg - -# Extensions, common -, zip - -# HTTPS Everywhere -, git -, libxml2 # xmllint -, python27 -, python27Packages -, rsync - -# Pluggable transports -, obfs4 - -# Customization -, extraPrefs ? "" -, extraExtensions ? [ ] -}: - -with stdenv.lib; - -let - tor-browser-build_src = fetchgit { - url = "https://git.torproject.org/builders/tor-browser-build.git"; - rev = "refs/tags/tbb-7.5a5-build5"; - sha256 = "0j37mqldj33fnzghxifvy6v8vdwkcz0i4z81prww64md5s8qcsa9"; - }; - - firefoxExtensions = import ./extensions.nix { - inherit stdenv fetchurl fetchgit zip - git libxml2 python27 python27Packages rsync; - }; - - bundledExtensions = with firefoxExtensions; [ - https-everywhere - noscript - torbutton - tor-launcher - ] ++ extraExtensions; - - fontsEnv = symlinkJoin { - name = "tor-browser-fonts"; - paths = [ noto-fonts noto-fonts-emoji ]; - }; - - fontsDir = "${fontsEnv}/share/fonts"; - - mediaLibPath = makeLibraryPath [ - ffmpeg - ]; -in -stdenv.mkDerivation { - pname = "tor-browser-bundle"; - version = tor-browser-unwrapped.version; - - buildInputs = [ tor-browser-unwrapped tor ]; - - dontUnpack = true; - - buildPhase = ":"; - - # The following creates a customized firefox distribution. For - # simplicity, we copy the entire base firefox runtime, to work around - # firefox's annoying insistence on resolving the installation directory - # relative to the real firefox executable. A little tacky and - # inefficient but it works. - installPhase = '' - TBBUILD=${tor-browser-build_src}/projects/tor-browser - TBDATA_PATH=TorBrowser-Data - - self=$out/lib/tor-browser - mkdir -p $self && cd $self - - TBDATA_IN_STORE=$self/$TBDATA_PATH - - cp -dR ${tor-browser-unwrapped}/lib"/"*"/"* . - chmod -R +w . - - # Prepare for autoconfig - cat >defaults/pref/autoconfig.js <mozilla.cfg <> $TBDATA_PATH/torrc-defaults - cat \ - $bundleData/$bundlePlatform/Data/Browser/profile.default/preferences/extension-overrides.js \ - $bundleData/PTConfigs/bridge_prefs.js \ - >> defaults/pref/extension-overrides.js - - # Configure geoip - # - # tor-launcher insists on resolving geoip data relative to torrc-defaults - # (and passes them directly on the tor command-line). - # - # Write the paths into torrc-defaults anyway, otherwise they'll be - # captured in the runtime torrc. - ln -s -t $TBDATA_PATH ${tor.geoip}/share/tor/geoip{,6} - cat >>$TBDATA_PATH/torrc-defaults <fonts,

${fontsDir}," \ - > $TBDATA_PATH/fonts.conf - - # Generate a suitable wrapper - wrapper_PATH=${makeBinPath [ coreutils ]} - wrapper_XDG_DATA_DIRS=${concatMapStringsSep ":" (x: "${x}/share") [ - hicolor-icon-theme - shared-mime-info - ]} - - ${optionalString audioSupport '' - # apulse uses a non-standard library path ... - wrapper_LD_LIBRARY_PATH=${apulse}/lib/apulse''${wrapper_LD_LIBRARY_PATH:+:$wrapper_LD_LIBRARY_PATH} - ''} - - ${optionalString mediaSupport '' - wrapper_LD_LIBRARY_PATH=${mediaLibPath}''${wrapper_LD_LIBRARY_PATH:+:$wrapper_LD_LIBRARY_PATH} - ''} - - mkdir -p $out/bin - cat >$out/bin/tor-browser <&2 - exit 1 - fi - - mkdir -p "\$TBB_HOME" - - HOME=\$TBB_HOME - cd "\$HOME" - - # Re-init XDG basedir envvars - XDG_CACHE_HOME=\$HOME/.cache - XDG_CONFIG_HOME=\$HOME/.config - XDG_DATA_HOME=\$HOME/.local/share - - # Initialize empty TBB runtime state directory hierarchy. Mirror the - # layout used by the official TBB, to avoid the hassle of working - # against the assumptions made by tor-launcher & co. - mkdir -p "\$HOME/TorBrowser" "\$HOME/TorBrowser/Data" - - # Initialize the Tor data directory. - mkdir -p "\$HOME/TorBrowser/Data/Tor" - - # TBB fails if ownership is too permissive - chmod 0700 "\$HOME/TorBrowser/Data/Tor" - - # Initialize the browser profile state. Expect TBB to generate all data. - mkdir -p "\$HOME/TorBrowser/Data/Browser/profile.default" - - # Files that capture store paths; re-generated by firefox at startup - rm -rf "\$HOME/TorBrowser/Data/Browser/profile.default"/{compatibility.ini,extensions.ini,extensions.json,startupCache} - - # Clear out fontconfig caches - rm -f "\$HOME/.cache/fontconfig/"*.cache-* - - # Lift-off! - # - # TZ is set to avoid stat()ing /etc/localtime over and over ... - # - # DBUS_SESSION_BUS_ADDRESS is inherited to avoid auto-launching a new - # dbus instance; to prevent using the session bus, set the envvar to - # an empty/invalid value prior to running tor-browser. - # - # FONTCONFIG_FILE is required to make fontconfig read the TBB - # fonts.conf; upstream uses FONTCONFIG_PATH, but FC_DEBUG=1024 - # indicates the system fonts.conf being used instead. - # - # HOME, TMPDIR, XDG_*_HOME are set as a form of soft confinement; - # ideally, tor-browser should not write to any path outside TBB_HOME - # and should run even under strict confinement to TBB_HOME. - # - # XDG_DATA_DIRS is set to prevent searching system directories for - # mime and icon data. - # - # PULSE_{SERVER,COOKIE} is necessary for audio playback w/pulseaudio - # - # APULSE_PLAYBACK_DEVICE is for audio playback w/o pulseaudio (no capture yet) - # - # TOR_* is for using an external tor instance - # - # Parameters lacking a default value below are *required* (enforced by - # -o nounset). - exec env -i \ - LD_LIBRARY_PATH=$wrapper_LD_LIBRARY_PATH \ - \ - TZ=":" \ - \ - DISPLAY="\$DISPLAY" \ - XAUTHORITY="\''${XAUTHORITY:-}" \ - DBUS_SESSION_BUS_ADDRESS="\$DBUS_SESSION_BUS_ADDRESS" \ - \ - HOME="\$HOME" \ - TMPDIR="\$XDG_CACHE_HOME/tmp" \ - XDG_CONFIG_HOME="\$XDG_CONFIG_HOME" \ - XDG_DATA_HOME="\$XDG_DATA_HOME" \ - XDG_CACHE_HOME="\$XDG_CACHE_HOME" \ - XDG_RUNTIME_DIR="\$HOME/run" \ - \ - XDG_DATA_DIRS="$wrapper_XDG_DATA_DIRS" \ - \ - FONTCONFIG_FILE="$TBDATA_IN_STORE/fonts.conf" \ - \ - APULSE_PLAYBACK_DEVICE="\''${APULSE_PLAYBACK_DEVICE:-plug:dmix}" \ - \ - TOR_SKIP_LAUNCH="\''${TOR_SKIP_LAUNCH:-}" \ - TOR_CONTROL_PORT="\''${TOR_CONTROL_PORT:-}" \ - TOR_SOCKS_PORT="\''${TOR_SOCKS_PORT:-}" \ - \ - $self/firefox \ - -no-remote \ - -profile "\$HOME/TorBrowser/Data/Browser/profile.default" \ - "\$@" - EOF - chmod +x $out/bin/tor-browser - - echo "Syntax checking wrapper ..." - bash -n $out/bin/tor-browser - - echo "Checking wrapper ..." - DISPLAY="" XAUTHORITY="" DBUS_SESSION_BUS_ADDRESS="" TBB_HOME=$(mktemp -d) \ - $out/bin/tor-browser -version >/dev/null - ''; - - passthru.execdir = "/bin"; - meta = with stdenv.lib; { - description = "An unofficial version of the Tor Browser Bundle, built from source"; - longDescription = '' - Tor Browser Bundle is a bundle of the Tor daemon, Tor Browser (heavily patched version of - Firefox), several essential extensions for Tor Browser, and some tools that glue those - together with a convenient UI. - - `tor-browser-bundle-bin` package is the official version built by torproject.org patched with - `patchelf` to work under nix and with bundled scripts adapted to the read-only nature of - the `/nix/store`. - - `tor-browser-bundle` package is the version built completely from source. It reuses the `tor` - package for the tor daemon, `firefoxPackages.tor-browser` package for the tor-browser, and - builds all the extensions from source. - - Note that `tor-browser-bundle` package is not only built from source, but also bundles Tor - Browser differently from the official `tor-browser-bundle-bin` implementation. The official - Tor Browser is not a normal UNIX program and is heavily patched for its use in the Tor Browser - Bundle (which `tor-browser-bundle-bin` package then has to work around for the read-only - /nix/store). Meanwhile, `firefoxPackages.tor-browser` reverts all those patches, allowing - `firefoxPackages.tor-browser` to be used independently of the bundle, and then implements what - `tor-browser-bundle` needs for the bundling using a much simpler patch. See the - longDescription and expression of the `firefoxPackages.tor-browser` package for more info. - ''; - inherit (tor-browser-unwrapped.meta) homepage platforms license; - hydraPlatforms = [ ]; - maintainers = with maintainers; [ joachifm ]; - }; -} diff --git a/pkgs/applications/networking/browsers/vimb/default.nix b/pkgs/applications/networking/browsers/vimb/default.nix index 0a72099e653..099d81c99f8 100644 --- a/pkgs/applications/networking/browsers/vimb/default.nix +++ b/pkgs/applications/networking/browsers/vimb/default.nix @@ -26,7 +26,7 @@ stdenv.mkDerivation rec { editor and also easily configurable during runtime. Vimb is mostly keyboard driven and does not detract you from your daily work. ''; - homepage = https://fanglingsu.github.io/vimb/; + homepage = "https://fanglingsu.github.io/vimb/"; license = stdenv.lib.licenses.gpl3; maintainers = []; platforms = with stdenv.lib.platforms; linux; diff --git a/pkgs/applications/networking/browsers/vivaldi/default.nix b/pkgs/applications/networking/browsers/vivaldi/default.nix index 643eda642c7..776ed8f4471 100644 --- a/pkgs/applications/networking/browsers/vivaldi/default.nix +++ b/pkgs/applications/networking/browsers/vivaldi/default.nix @@ -17,11 +17,11 @@ let vivaldiName = if isSnapshot then "vivaldi-snapshot" else "vivaldi"; in stdenv.mkDerivation rec { pname = "vivaldi"; - version = "2.10.1745.21-1"; + version = "2.11.1811.52-1"; src = fetchurl { url = "https://downloads.vivaldi.com/${branch}/vivaldi-${branch}_${version}_amd64.deb"; - sha256 = "0ldl98h3sx2lc90nk8ksdp1ai0sjixn0v6hdx5nb9c6slf56wify"; + sha256 = "0bq9ggk75xzka2nbrnc7vghq8s7jjy9nbfmyrf51kf0nni1zg1fp"; }; unpackPhase = '' @@ -51,8 +51,7 @@ in stdenv.mkDerivation rec { --set-rpath "${libPath}" \ opt/${vivaldiName}/vivaldi-bin '' + stdenv.lib.optionalString proprietaryCodecs '' - sed -i '/^if \[ "$VIVALDI_FFMPEG_FOUND/i \ - VIVALDI_FFMPEG_FOUND=YES\nCACHED_FFMPEG=${vivaldi-ffmpeg-codecs}/lib/libffmpeg.so' opt/${vivaldiName}/${vivaldiName} + ln -s ${vivaldi-ffmpeg-codecs}/lib/libffmpeg.so opt/${vivaldiName}/libffmpeg.so.''${version%\.*\.*} '' + '' echo "Finished patching Vivaldi binaries" ''; @@ -82,7 +81,7 @@ in stdenv.mkDerivation rec { --suffix XDG_DATA_DIRS : ${gtk3}/share/gsettings-schemas/${gtk3.name}/ \ ${stdenv.lib.optionalString enableWidevine "--suffix LD_LIBRARY_PATH : ${libPath}"} '' + stdenv.lib.optionalString enableWidevine '' - ln -sf ${vivaldi-widevine}/lib/libwidevinecdm.so $out/opt/${vivaldiName}/libwidevinecdm.so + ln -sf ${vivaldi-widevine}/share/google/chrome/WidevineCdm $out/opt/${vivaldiName}/WidevineCdm ''; meta = with stdenv.lib; { diff --git a/pkgs/applications/networking/browsers/vivaldi/ffmpeg-codecs.nix b/pkgs/applications/networking/browsers/vivaldi/ffmpeg-codecs.nix index 3207409a6ba..2643bd3e58d 100644 --- a/pkgs/applications/networking/browsers/vivaldi/ffmpeg-codecs.nix +++ b/pkgs/applications/networking/browsers/vivaldi/ffmpeg-codecs.nix @@ -4,11 +4,11 @@ stdenv.mkDerivation rec { name = "chromium-codecs-ffmpeg"; - version = "74.0.3729.169"; + version = "78.0.3904.70"; src = fetchurl { - url = "https://launchpadlibrarian.net/424938057/${name}-extra_${version}-0ubuntu0.16.04.1_amd64.deb"; - sha256 = "1ls2fshfk08hqsfvbd7p6rp2gv3n0xdy86rdh00wiz5qgl3skfzc"; + url = "https://launchpadlibrarian.net/449403909/${name}-extra_${version}-0ubuntu0.16.04.2_amd64.deb"; + sha256 = "00j604nm49z6hbyw7xsxcvmdjf7117kb478plkpizzvmm3w72b9v"; }; buildInputs = [ dpkg ]; diff --git a/pkgs/applications/networking/browsers/vivaldi/widevine.nix b/pkgs/applications/networking/browsers/vivaldi/widevine.nix index a21de1acad2..6e807aac5df 100644 --- a/pkgs/applications/networking/browsers/vivaldi/widevine.nix +++ b/pkgs/applications/networking/browsers/vivaldi/widevine.nix @@ -4,22 +4,23 @@ stdenv.mkDerivation rec { name = "widevine"; - version = "4.10.1196.0"; + version = "4.10.1582.1"; src = fetchurl { url = "https://dl.google.com/widevine-cdm/${version}-linux-x64.zip"; - sha256 = "01c7nr7d2xs718jymicbk4ipzfx6q253109qv3lk4lryrrhvw14y"; + sha256 = "0l743f2yyaq1vvc3iicajgnfpjxjsfvjcqvanndbxs23skgjcv6r"; }; buildInputs = [ unzip ]; unpackPhase = '' - unzip $src libwidevinecdm.so - find . + unzip $src ''; installPhase = '' - install -vD libwidevinecdm.so $out/lib/libwidevinecdm.so + install -vD manifest.json $out/share/google/chrome/WidevineCdm/manifest.json + install -vD LICENSE.txt $out/share/google/chrome/WidevineCdm/LICENSE.txt + install -vD libwidevinecdm.so $out/share/google/chrome/WidevineCdm/_platform_specific/linux_x64/libwidevinecdm.so ''; meta = with stdenv.lib; { diff --git a/pkgs/applications/networking/browsers/w3m/default.nix b/pkgs/applications/networking/browsers/w3m/default.nix index 373fa43c72c..a15d6844f56 100644 --- a/pkgs/applications/networking/browsers/w3m/default.nix +++ b/pkgs/applications/networking/browsers/w3m/default.nix @@ -91,7 +91,7 @@ in stdenv.mkDerivation rec { LIBS = optionalString x11Support "-lX11"; meta = { - homepage = http://w3m.sourceforge.net/; + homepage = "http://w3m.sourceforge.net/"; description = "A text-mode web browser"; maintainers = [ maintainers.cstrahan ]; platforms = stdenv.lib.platforms.unix; diff --git a/pkgs/applications/networking/browsers/webmacs/default.nix b/pkgs/applications/networking/browsers/webmacs/default.nix index b86ba3c39f0..7dbb6a3c538 100644 --- a/pkgs/applications/networking/browsers/webmacs/default.nix +++ b/pkgs/applications/networking/browsers/webmacs/default.nix @@ -65,8 +65,8 @@ mkDerivationWith python3Packages.buildPythonApplication rec { Based on QtWebEngine and Python 3. Fully customizable in Python. ''; - homepage = https://webmacs.readthedocs.io/en/latest/; - changelog = https://github.com/parkouss/webmacs/blob/master/CHANGELOG.md; + homepage = "https://webmacs.readthedocs.io/en/latest/"; + changelog = "https://github.com/parkouss/webmacs/blob/master/CHANGELOG.md"; license = licenses.gpl3; maintainers = with maintainers; [ jacg ]; platforms = platforms.all; diff --git a/pkgs/applications/networking/c14/default.nix b/pkgs/applications/networking/c14/default.nix index c000a37ff02..98d2f4aa81d 100644 --- a/pkgs/applications/networking/c14/default.nix +++ b/pkgs/applications/networking/c14/default.nix @@ -17,7 +17,7 @@ buildGoPackage rec { meta = with stdenv.lib; { description = "C14 is designed for data archiving & long-term backups."; - homepage = https://www.online.net/en/storage/c14-cold-storage; + homepage = "https://www.online.net/en/storage/c14-cold-storage"; license = licenses.mit; maintainers = with maintainers; [ apeyroux ]; }; diff --git a/pkgs/applications/networking/calls/default.nix b/pkgs/applications/networking/calls/default.nix index 065f264f152..18a9bc0f422 100644 --- a/pkgs/applications/networking/calls/default.nix +++ b/pkgs/applications/networking/calls/default.nix @@ -14,6 +14,7 @@ , libpeas , dbus , vala +, wrapGAppsHook , xorg , xvfb_run , libxml2 @@ -21,14 +22,14 @@ stdenv.mkDerivation rec { pname = "calls"; - version = "unstable-2019-10-29"; + version = "0.1.4"; src = fetchFromGitLab { domain = "source.puri.sm"; owner = "Librem5"; repo = "calls"; - rev = "9fe575053d8f01c3a76a6c20d39f0816166d5afd"; - sha256 = "01inx4mvrzvklwrfryw5hw9p89v8cn78m3qmv97g7a3v0h5c0n35"; + rev = "v${version}"; + sha256 = "0715cap3w8gppxlfaynhiqvc2ss512xgykjcpqq8f5syz2776skh"; }; nativeBuildInputs = [ @@ -37,6 +38,7 @@ stdenv.mkDerivation rec { pkgconfig desktop-file-utils vala + wrapGAppsHook ]; buildInputs = [ @@ -75,7 +77,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "A phone dialer and call handler"; - homepage = https://source.puri.sm/Librem5/calls; + homepage = "https://source.puri.sm/Librem5/calls"; license = licenses.gpl3Plus; maintainers = with maintainers; [ craigem lheckemann ]; platforms = platforms.linux; diff --git a/pkgs/applications/networking/cawbird/default.nix b/pkgs/applications/networking/cawbird/default.nix index 6462dd49949..c9e6b6f6de0 100644 --- a/pkgs/applications/networking/cawbird/default.nix +++ b/pkgs/applications/networking/cawbird/default.nix @@ -20,14 +20,14 @@ }: stdenv.mkDerivation rec { - version = "1.0.3.1"; + version = "1.0.5"; pname = "cawbird"; src = fetchFromGitHub { owner = "IBBoard"; repo = "cawbird"; rev = "v${version}"; - sha256 = "sha256:1v1y4bx0mm518b9vlpsry12fw1qz2j28jfhjqq73blvzd89lgb0y"; + sha256 = "sha256:0prrrkgmnm78sq2c6yvy86qb3lcl51d250q7gvmqili2ffnjmamf"; }; nativeBuildInputs = [ diff --git a/pkgs/applications/networking/charles/default.nix b/pkgs/applications/networking/charles/default.nix index 4c1f7ea7749..11eb24ff703 100644 --- a/pkgs/applications/networking/charles/default.nix +++ b/pkgs/applications/networking/charles/default.nix @@ -47,7 +47,7 @@ let meta = with stdenv.lib; { description = "Web Debugging Proxy"; - homepage = https://www.charlesproxy.com/; + homepage = "https://www.charlesproxy.com/"; maintainers = [ maintainers.kalbasit ]; license = stdenv.lib.licenses.unfree; platforms = stdenv.lib.platforms.linux ++ stdenv.lib.platforms.darwin; diff --git a/pkgs/applications/networking/cloudflared/default.nix b/pkgs/applications/networking/cloudflared/default.nix index 6712dcd486b..d441e539aaa 100644 --- a/pkgs/applications/networking/cloudflared/default.nix +++ b/pkgs/applications/networking/cloudflared/default.nix @@ -1,25 +1,23 @@ -{ stdenv, buildGoPackage, fetchFromGitHub }: +{ stdenv, buildGoModule, fetchFromGitHub }: -buildGoPackage rec { +buildGoModule rec { pname = "cloudflared"; - version = "2019.7.0"; - - goPackagePath = "github.com/cloudflare/cloudflared"; + version = "2020.2.1"; src = fetchFromGitHub { owner = "cloudflare"; repo = "cloudflared"; rev = version; - sha256 = "19229p7c9m7v0xpmzi5rfwjzm845ikq8pndkry2si9azks18x77q"; + sha256 = "1wyvf4bilhiwabqgdwmnhifwc845m4g17pz7xmndzvqwmfd7riw5"; }; - goDeps = ./deps.nix; + modSha256 = "1y5vh8g967rrm9b9hjlr70bs2rm09cpik673brgk3nzqxka10w7p"; buildFlagsArray = "-ldflags=-X main.Version=${version}"; meta = with stdenv.lib; { description = "CloudFlare Argo Tunnel daemon (and DNS-over-HTTPS client)"; - homepage = https://www.cloudflare.com/products/argo-tunnel; + homepage = "https://www.cloudflare.com/products/argo-tunnel"; license = licenses.unfree; platforms = platforms.unix; maintainers = [ maintainers.thoughtpolice maintainers.enorris ]; diff --git a/pkgs/applications/networking/cloudflared/deps.nix b/pkgs/applications/networking/cloudflared/deps.nix deleted file mode 100644 index e5ca7be0070..00000000000 --- a/pkgs/applications/networking/cloudflared/deps.nix +++ /dev/null @@ -1,453 +0,0 @@ -# file generated from Gopkg.lock using dep2nix (https://github.com/nixcloud/dep2nix) -[ - { - goPackagePath = "github.com/BurntSushi/toml"; - fetch = { - type = "git"; - url = "https://github.com/BurntSushi/toml"; - rev = "3012a1dbe2e4bd1391d42b32f0577cb7bbc7f005"; - sha256 = "1fjdwwfzyzllgiwydknf1pwjvy49qxfsczqx5gz3y0izs7as99j6"; - }; - } - { - goPackagePath = "github.com/beorn7/perks"; - fetch = { - type = "git"; - url = "https://github.com/beorn7/perks"; - rev = "4b2b341e8d7715fae06375aa633dbb6e91b3fb46"; - sha256 = "1i1nz1f6g55xi2y3aiaz5kqfgvknarbfl4f0sx4nyyb4s7xb1z9x"; - }; - } - { - goPackagePath = "github.com/certifi/gocertifi"; - fetch = { - type = "git"; - url = "https://github.com/certifi/gocertifi"; - rev = "deb3ae2ef2610fde3330947281941c562861188b"; - sha256 = "1xy09y1fdfcny1z09hd4493w1acj5min9z2sx4gfpshc80icrmr6"; - }; - } - { - goPackagePath = "github.com/cloudflare/brotli-go"; - fetch = { - type = "git"; - url = "https://github.com/cloudflare/brotli-go"; - rev = "18c9f6c67e3dfc12e0ddaca748d2887f97a7ac28"; - sha256 = "10112y4k8qing552n0df9w33cgminrzm6g3x7ng0vgin4sv59785"; - }; - } - { - goPackagePath = "github.com/cloudflare/golibs"; - fetch = { - type = "git"; - url = "https://github.com/cloudflare/golibs"; - rev = "333127dbecfcc23a8db7d9a4f52785d23aff44a1"; - sha256 = "170hbv9wyfmb5da9a6wjz2mphp0pylv23h8qp8h5kwa2i9frdqqi"; - }; - } - { - goPackagePath = "github.com/coredns/coredns"; - fetch = { - type = "git"; - url = "https://github.com/coredns/coredns"; - rev = "2e322f6e8a54f18c6aef9c25a7c432c291a3d9f7"; - sha256 = "0s9x5yww1qd9pzh2w846g9qw0n86ygymjiqjn15ws6ha3nj5p75p"; - }; - } - { - goPackagePath = "github.com/coreos/go-oidc"; - fetch = { - type = "git"; - url = "https://github.com/coreos/go-oidc"; - rev = "a93f71fdfe73d2c0f5413c0565eea0af6523a6df"; - sha256 = "00pmmky0y9a9l767xn16xlf52h81j4869n6j0xql79rybp6xc1f3"; - }; - } - { - goPackagePath = "github.com/coreos/go-systemd"; - fetch = { - type = "git"; - url = "https://github.com/coreos/go-systemd"; - rev = "95778dfbb74eb7e4dbaf43bf7d71809650ef8076"; - sha256 = "1s3bg9p78wkixn2bqb2p23wbsqfg949ml6crw2b498s71mwh8rcf"; - }; - } - { - goPackagePath = "github.com/coreos/pkg"; - fetch = { - type = "git"; - url = "https://github.com/coreos/pkg"; - rev = "97fdf19511ea361ae1c100dd393cc47f8dcfa1e1"; - sha256 = "1srn87wih25l09f75483hnxsr8fc6rq3bk7w1x8125ym39p6mg21"; - }; - } - { - goPackagePath = "github.com/davecgh/go-spew"; - fetch = { - type = "git"; - url = "https://github.com/davecgh/go-spew"; - rev = "8991bc29aa16c548c550c7ff78260e27b9ab7c73"; - sha256 = "0hka6hmyvp701adzag2g26cxdj47g21x6jz4sc6jjz1mn59d474y"; - }; - } - { - goPackagePath = "github.com/elgs/gosqljson"; - fetch = { - type = "git"; - url = "https://github.com/elgs/gosqljson"; - rev = "027aa4915315a0b2825c0f025cea347829b974fa"; - sha256 = "14i45m1y505acvsk4l725bp8p9w3mcg49khz9hxkzg3afg7nc5gq"; - }; - } - { - goPackagePath = "github.com/equinox-io/equinox"; - fetch = { - type = "git"; - url = "https://github.com/equinox-io/equinox"; - rev = "5205c98a6c11dc72747ce12fff6cd620a99fde05"; - sha256 = "19gya2zhs3xqfjh8y6s63yw9q8h1x710rl1drf4a1fmgdhaf2lrv"; - }; - } - { - goPackagePath = "github.com/facebookgo/grace"; - fetch = { - type = "git"; - url = "https://github.com/facebookgo/grace"; - rev = "75cf19382434e82df4dd84953f566b8ad23d6e9e"; - sha256 = "15chyvgv5y59w9x2asm0vh29cmmcji7f5vxvv8gqcr15nkyi61q0"; - }; - } - { - goPackagePath = "github.com/flynn/go-shlex"; - fetch = { - type = "git"; - url = "https://github.com/flynn/go-shlex"; - rev = "3f9db97f856818214da2e1057f8ad84803971cff"; - sha256 = "1j743lysygkpa2s2gii2xr32j7bxgc15zv4113b0q9jhn676ysia"; - }; - } - { - goPackagePath = "github.com/getsentry/raven-go"; - fetch = { - type = "git"; - url = "https://github.com/getsentry/raven-go"; - rev = "ed7bcb39ff10f39ab08e317ce16df282845852fa"; - sha256 = "0pqggcjbia9sidxqxnyd5z5k44iswxaqss3qvkka8bfm082kczij"; - }; - } - { - goPackagePath = "github.com/golang-collections/collections"; - fetch = { - type = "git"; - url = "https://github.com/golang-collections/collections"; - rev = "604e922904d35e97f98a774db7881f049cd8d970"; - sha256 = "04g0xc1bs4aphc2rcj9knah2shmck500qagnazy4mg052b84ggwm"; - }; - } - { - goPackagePath = "github.com/golang/protobuf"; - fetch = { - type = "git"; - url = "https://github.com/golang/protobuf"; - rev = "b5d812f8a3706043e23a9cd5babf2e5423744d30"; - sha256 = "15am4s4646qy6iv0g3kkqq52rzykqjhm4bf08dk0fy2r58knpsyl"; - }; - } - { - goPackagePath = "github.com/google/uuid"; - fetch = { - type = "git"; - url = "https://github.com/google/uuid"; - rev = "0cd6bf5da1e1c83f8b45653022c74f71af0538a4"; - sha256 = "0hfxcf9frkb57k6q0rdkrmnfs78ms21r1qfk9fhlqga2yh5xg8zb"; - }; - } - { - goPackagePath = "github.com/gorilla/mux"; - fetch = { - type = "git"; - url = "https://github.com/gorilla/mux"; - rev = "c5c6c98bc25355028a63748a498942a6398ccd22"; - sha256 = "0im4da3hqxb6zr8g3m640qz234f5gs0a8hqhcz35mkvfqlv48f62"; - }; - } - { - goPackagePath = "github.com/gorilla/websocket"; - fetch = { - type = "git"; - url = "https://github.com/gorilla/websocket"; - rev = "ea4d1f681babbce9545c9c5f3d5194a789c89f5b"; - sha256 = "1bhgs2542qs49p1dafybqxfs2qc072xv41w5nswyrknwyjxxs2a1"; - }; - } - { - goPackagePath = "github.com/grpc-ecosystem/grpc-opentracing"; - fetch = { - type = "git"; - url = "https://github.com/grpc-ecosystem/grpc-opentracing"; - rev = "8e809c8a86450a29b90dcc9efbf062d0fe6d9746"; - sha256 = "1yz3gxhdipmi63n32y5srwx7p254k3fm8y64cimkb1gz7sw99nxw"; - }; - } - { - goPackagePath = "github.com/jonboulle/clockwork"; - fetch = { - type = "git"; - url = "https://github.com/jonboulle/clockwork"; - rev = "2eee05ed794112d45db504eb05aa693efd2b8b09"; - sha256 = "1pqxhsdavbp1n5grgyx2j6ylvql2fzn2cvpsgkc8li69dil7sibl"; - }; - } - { - goPackagePath = "github.com/konsorten/go-windows-terminal-sequences"; - fetch = { - type = "git"; - url = "https://github.com/konsorten/go-windows-terminal-sequences"; - rev = "f55edac94c9bbba5d6182a4be46d86a2c9b5b50e"; - sha256 = "09mn209ika7ciy87xf2x31dq5fnqw39jidgaljvmqxwk7ff1hnx7"; - }; - } - { - goPackagePath = "github.com/lib/pq"; - fetch = { - type = "git"; - url = "https://github.com/lib/pq"; - rev = "51e2106eed1cea199c802d2a49e91e2491b02056"; - sha256 = "00kp0k7sd7xrv92crd2xja68z096b2fw0mlz58mdjlri9w72hqbf"; - }; - } - { - goPackagePath = "github.com/mattn/go-colorable"; - fetch = { - type = "git"; - url = "https://github.com/mattn/go-colorable"; - rev = "3a70a971f94a22f2fa562ffcc7a0eb45f5daf045"; - sha256 = "0l640974j804c1yyjfgyxqlsivz0yrzmbql4mhcw2azryigkp08p"; - }; - } - { - goPackagePath = "github.com/mattn/go-isatty"; - fetch = { - type = "git"; - url = "https://github.com/mattn/go-isatty"; - rev = "c2a7a6ca930a4cd0bc33a3f298eb71960732a3a7"; - sha256 = "1i77aq4gf9as03m8fpfh8fq49n4z9j7548blrcsidm1xhslzk5xd"; - }; - } - { - goPackagePath = "github.com/matttproud/golang_protobuf_extensions"; - fetch = { - type = "git"; - url = "https://github.com/matttproud/golang_protobuf_extensions"; - rev = "c12348ce28de40eed0136aa2b644d0ee0650e56c"; - sha256 = "1d0c1isd2lk9pnfq2nk0aih356j30k3h1gi2w0ixsivi5csl7jya"; - }; - } - { - goPackagePath = "github.com/mholt/caddy"; - fetch = { - type = "git"; - url = "https://github.com/mholt/caddy"; - rev = "d3b731e9255b72d4571a5aac125634cf1b6031dc"; - sha256 = "1183cfaryw7m3hvngzv87w80pc9vp3369sjyz7a0dlbr39jip1r0"; - }; - } - { - goPackagePath = "github.com/miekg/dns"; - fetch = { - type = "git"; - url = "https://github.com/miekg/dns"; - rev = "73601d4aed9d844322611759d7f3619110b7c88e"; - sha256 = "1frnj97bbch1qhg55fx2yz6mdjsz8fw94sj7pkrjms239j7vqcvm"; - }; - } - { - goPackagePath = "github.com/mitchellh/go-homedir"; - fetch = { - type = "git"; - url = "https://github.com/mitchellh/go-homedir"; - rev = "af06845cf3004701891bf4fdb884bfe4920b3727"; - sha256 = "0ydzkipf28hwj2bfxqmwlww47khyk6d152xax4bnyh60f4lq3nx1"; - }; - } - { - goPackagePath = "github.com/opentracing/opentracing-go"; - fetch = { - type = "git"; - url = "https://github.com/opentracing/opentracing-go"; - rev = "659c90643e714681897ec2521c60567dd21da733"; - sha256 = "0aj9cbm21zsg1i5l25hz8gn0yf99yxyxcp1gqh3yd5g4knj2cgzf"; - }; - } - { - goPackagePath = "github.com/pkg/errors"; - fetch = { - type = "git"; - url = "https://github.com/pkg/errors"; - rev = "645ef00459ed84a119197bfb8d8205042c6df63d"; - sha256 = "001i6n71ghp2l6kdl3qq1v2vmghcz3kicv9a5wgcihrzigm75pp5"; - }; - } - { - goPackagePath = "github.com/pmezard/go-difflib"; - fetch = { - type = "git"; - url = "https://github.com/pmezard/go-difflib"; - rev = "792786c7400a136282c1664665ae0a8db921c6c2"; - sha256 = "0c1cn55m4rypmscgf0rrb88pn58j3ysvc2d0432dp3c6fqg6cnzw"; - }; - } - { - goPackagePath = "github.com/prometheus/client_golang"; - fetch = { - type = "git"; - url = "https://github.com/prometheus/client_golang"; - rev = "967789050ba94deca04a5e84cce8ad472ce313c1"; - sha256 = "1djwz6shmyx5kbp9b1pim3kncq2jwn3qhbx4b0b4lq7msww76hpz"; - }; - } - { - goPackagePath = "github.com/prometheus/client_model"; - fetch = { - type = "git"; - url = "https://github.com/prometheus/client_model"; - rev = "fd36f4220a901265f90734c3183c5f0c91daa0b8"; - sha256 = "1bs5d72k361llflgl94c22n0w53j30rsfh84smgk8mbjbcmjsaa5"; - }; - } - { - goPackagePath = "github.com/prometheus/common"; - fetch = { - type = "git"; - url = "https://github.com/prometheus/common"; - rev = "a82f4c12f983cc2649298185f296632953e50d3e"; - sha256 = "0pcgnxrv2i31jljqzhkv5hpdz92f6zrkh2p1i7i59acfz1fxhq0s"; - }; - } - { - goPackagePath = "github.com/prometheus/procfs"; - fetch = { - type = "git"; - url = "https://github.com/prometheus/procfs"; - rev = "8368d24ba045f26503eb745b624d930cbe214c79"; - sha256 = "0cfrgsy82c964hcmzzyk6ccghpr9dkfvdlxa0cj9cfc0w94cqvrl"; - }; - } - { - goPackagePath = "github.com/rifflock/lfshook"; - fetch = { - type = "git"; - url = "https://github.com/rifflock/lfshook"; - rev = "b9218ef580f59a2e72dad1aa33d660150445d05a"; - sha256 = "0wxqjcjfg8c0klmdgmbw3ckagby3wg9rkga9ihd4fsf05x5scxrc"; - }; - } - { - goPackagePath = "github.com/sirupsen/logrus"; - fetch = { - type = "git"; - url = "https://github.com/sirupsen/logrus"; - rev = "839c75faf7f98a33d445d181f3018b5c3409a45e"; - sha256 = "087k2lxrr9p9dh68yw71d05h5g9p5v26zbwd6j7lghinjfaw334x"; - }; - } - { - goPackagePath = "github.com/stretchr/testify"; - fetch = { - type = "git"; - url = "https://github.com/stretchr/testify"; - rev = "12b6f73e6084dad08a7c6e575284b177ecafbc71"; - sha256 = "01f80s0q64pw5drfgqwwk1wfwwkvd2lhbs56lhhkff4ni83k73fd"; - }; - } - { - goPackagePath = "golang.org/x/crypto"; - fetch = { - type = "git"; - url = "https://go.googlesource.com/crypto"; - rev = "f416ebab96af27ca70b6e5c23d6a0747530da626"; - sha256 = "1cmddgh6x1c3lij50r8245jhqgi4j00add4wjpqpc2dmcg5928m3"; - }; - } - { - goPackagePath = "golang.org/x/net"; - fetch = { - type = "git"; - url = "https://go.googlesource.com/net"; - rev = "1da14a5a36f220ea3f03470682b737b1dfd5de22"; - sha256 = "1ivqwn3r44vlldlj53669jvsd6klwsg7hmla7f0vz03ny8xz4lpz"; - }; - } - { - goPackagePath = "golang.org/x/sync"; - fetch = { - type = "git"; - url = "https://go.googlesource.com/sync"; - rev = "1d60e4601c6fd243af51cc01ddf169918a5407ca"; - sha256 = "046jlanz2lkxq1r57x9bl6s4cvfqaic6p2xybsj8mq1120jv4rs6"; - }; - } - { - goPackagePath = "golang.org/x/sys"; - fetch = { - type = "git"; - url = "https://go.googlesource.com/sys"; - rev = "12500544f89f9420afe9529ba8940bf72d294972"; - sha256 = "1y37dlbbsp1dkfqaf563fwlf3xl74ymswmy52faqyv0wpcbwixgy"; - }; - } - { - goPackagePath = "golang.org/x/text"; - fetch = { - type = "git"; - url = "https://go.googlesource.com/text"; - rev = "f21a4dfb5e38f5895301dc265a8def02365cc3d0"; - sha256 = "0r6x6zjzhr8ksqlpiwm5gdd7s209kwk5p4lw54xjvz10cs3qlq19"; - }; - } - { - goPackagePath = "google.golang.org/genproto"; - fetch = { - type = "git"; - url = "https://github.com/google/go-genproto"; - rev = "d1146b9035b912113a38af3b138eb2af567b2c67"; - sha256 = "1ry1vbbnfh7i3zrv3vmbsbmq2w8jmz88ykd6cxviijnxvms3zab8"; - }; - } - { - goPackagePath = "google.golang.org/grpc"; - fetch = { - type = "git"; - url = "https://github.com/grpc/grpc-go"; - rev = "236199dd5f8031d698fb64091194aecd1c3895b2"; - sha256 = "0rzpcmp5fscg3smn0aiaahgimv74smylg701na5px3pn5iymh94a"; - }; - } - { - goPackagePath = "gopkg.in/urfave/cli.v2"; - fetch = { - type = "git"; - url = "https://github.com/cbranch/cli"; - rev = "d604b6ffeee878fbf084fd2761466b6649989cee"; - sha256 = "16csqipw5vrbb91m9w9g72jlxlrhcyxa79fz6fjp6803znmjdpk2"; - }; - } - { - goPackagePath = "gopkg.in/yaml.v2"; - fetch = { - type = "git"; - url = "https://github.com/go-yaml/yaml"; - rev = "51d6538a90f86fe93ac480b35f37b2be17fef232"; - sha256 = "01wj12jzsdqlnidpyjssmj0r4yavlqy7dwrg7adqd8dicjc4ncsa"; - }; - } - { - goPackagePath = "zombiezen.com/go/capnproto2"; - fetch = { - type = "git"; - url = "https://github.com/zombiezen/go-capnproto2"; - rev = "7cfd211c19c7f5783c695f3654efa46f0df259c3"; - sha256 = "0nzw3g8xpxyzwqqv3ja0iznd0j18l1rwagwhf9sinwdjjgmh51sy"; - }; - } -] \ No newline at end of file diff --git a/pkgs/applications/networking/cluster/argo/default.nix b/pkgs/applications/networking/cluster/argo/default.nix index 9295e90794d..891d153a09e 100644 --- a/pkgs/applications/networking/cluster/argo/default.nix +++ b/pkgs/applications/networking/cluster/argo/default.nix @@ -1,23 +1,47 @@ -{ lib, buildGoPackage, fetchFromGitHub }: +{ lib, buildGoModule, buildGoPackage, fetchFromGitHub }: -buildGoPackage rec { +let + # Argo can package a static server in the CLI using the `staticfiles` go module. + # We build the CLI without the static server for simplicity, but the tool is still required for + # compilation to succeed. + # See: https://github.com/argoproj/argo/blob/d7690e32faf2ac5842468831daf1443283703c25/Makefile#L117 + staticfiles = buildGoPackage rec { + name = "staticfiles"; + src = fetchFromGitHub { + owner = "bouk"; + repo = "staticfiles"; + rev = "827d7f6389cd410d0aa3f3d472a4838557bf53dd"; + sha256 = "0xarhmsqypl8036w96ssdzjv3k098p2d4mkmw5f6hkp1m3j67j61"; + }; + + goPackagePath = "bou.ke/staticfiles"; + }; +in +buildGoModule rec { pname = "argo"; - version = "2.4.3"; + version = "2.6.1"; src = fetchFromGitHub { owner = "argoproj"; repo = "argo"; rev = "v${version}"; - sha256 = "15726n5rrbzszq5dpmrxbw9cn7ahihn28jqk274270140gz5aak1"; + sha256 = "12wq79h4m8wlzf18r66965mbbjjb62kvnxdj50ra7nxa8jjxpsmf"; }; - goDeps = ./deps.nix; - goPackagePath = "github.com/argoproj/argo"; + modSha256 = "1394bav1k1xv9n1rvji0j9a09mibk97xpha24640jkgmy9bnmg45"; + subPackages = [ "cmd/argo" ]; + preBuild = '' + mkdir -p ui/dist/app + echo "Built without static files" > ui/dist/app/index.html + + ${staticfiles}/bin/staticfiles -o server/static/files.go ui/dist/app + ''; + meta = with lib; { description = "Container native workflow engine for Kubernetes"; - homepage = https://github.com/argoproj/argo; + homepage = "https://github.com/argoproj/argo"; license = licenses.asl20; maintainers = with maintainers; [ groodt ]; platforms = platforms.unix; diff --git a/pkgs/applications/networking/cluster/argo/deps.nix b/pkgs/applications/networking/cluster/argo/deps.nix deleted file mode 100644 index b275cd21cf4..00000000000 --- a/pkgs/applications/networking/cluster/argo/deps.nix +++ /dev/null @@ -1,903 +0,0 @@ -# file generated from Gopkg.lock using dep2nix (https://github.com/nixcloud/dep2nix) -[ - { - goPackagePath = "cloud.google.com/go"; - fetch = { - type = "git"; - url = "https://code.googlesource.com/gocloud"; - rev = "ceeb313ad77b789a7fa5287b36a1d127b69b7093"; - sha256 = "0z5z3qag9g4fc7g6di7ijxzz0s3c7al1rx0sxxkbqbpwlgk4iwf2"; - }; - } - { - goPackagePath = "contrib.go.opencensus.io/exporter/ocagent"; - fetch = { - type = "git"; - url = "https://github.com/census-ecosystem/opencensus-go-exporter-ocagent"; - rev = "f9129169651c35ecbdc1186c3ba4aa876ee62e1e"; - sha256 = "09n7w31668f6f55qw6qkw85mp6mhkmxs2x5hk4vr0p5qiqap576h"; - }; - } - { - goPackagePath = "github.com/Azure/go-autorest"; - fetch = { - type = "git"; - url = "https://github.com/Azure/go-autorest"; - rev = "880eb0e2aca291c40538ddef66e5914fb1cc1d7f"; - sha256 = "0v6d6la29n3kkgn7r3b63pf96cpj5kf88rddkm2x2vqb9x2gmi0p"; - }; - } - { - goPackagePath = "github.com/Knetic/govaluate"; - fetch = { - type = "git"; - url = "https://github.com/Knetic/govaluate"; - rev = "9aa49832a739dcd78a5542ff189fb82c3e423116"; - sha256 = "12klijhq4fckzbhv0cwygbazj6lvhmdqksha9y6jgfmwzv51kwv5"; - }; - } - { - goPackagePath = "github.com/PuerkitoBio/purell"; - fetch = { - type = "git"; - url = "https://github.com/PuerkitoBio/purell"; - rev = "44968752391892e1b0d0b821ee79e9a85fa13049"; - sha256 = "0c525frsxmalrn55hzzsxy17ng8avkd40ga0wxfw9haxsdjgqdqy"; - }; - } - { - goPackagePath = "github.com/PuerkitoBio/urlesc"; - fetch = { - type = "git"; - url = "https://github.com/PuerkitoBio/urlesc"; - rev = "de5bf2ad457846296e2031421a34e2568e304e35"; - sha256 = "0n0srpqwbaan1wrhh2b7ysz543pjs1xw2rghvqyffg9l0g8kzgcw"; - }; - } - { - goPackagePath = "github.com/argoproj/pkg"; - fetch = { - type = "git"; - url = "https://github.com/argoproj/pkg"; - rev = "5616f48963eebf7cca912632230032b263bb62bc"; - sha256 = "1m50mpmgdv4hjdpl994xdkdbjfwv7dagn6mhix17cb5mf61ixs6z"; - }; - } - { - goPackagePath = "github.com/aws/aws-sdk-go"; - fetch = { - type = "git"; - url = "https://github.com/aws/aws-sdk-go"; - rev = "d57c8d96f72d9475194ccf18d2ba70ac294b0cb3"; - sha256 = "09bv2ay7vnv15vj83ysqs98v0hcjg0nziwnp7qjdr0iasrhl4r21"; - }; - } - { - goPackagePath = "github.com/beorn7/perks"; - fetch = { - type = "git"; - url = "https://github.com/beorn7/perks"; - rev = "37c8de3658fcb183f997c4e13e8337516ab753e6"; - sha256 = "17n4yygjxa6p499dj3yaqzfww2g7528165cl13haj97hlx94dgl7"; - }; - } - { - goPackagePath = "github.com/census-instrumentation/opencensus-proto"; - fetch = { - type = "git"; - url = "https://github.com/census-instrumentation/opencensus-proto"; - rev = "d89fa54de508111353cb0b06403c00569be780d8"; - sha256 = "19fcx3sc99i5dsklny6r073z5j20vlwn2xqm6di1q3b1xwchzqfj"; - }; - } - { - goPackagePath = "github.com/colinmarc/hdfs"; - fetch = { - type = "git"; - url = "https://github.com/colinmarc/hdfs"; - rev = "9746310a4d311e21ce43b2a645c5a1e64c5e8efa"; - sha256 = "0r5dyadjck22i7fyci67r00ajbcqgx52z13rhriy0sw68j510r1r"; - }; - } - { - goPackagePath = "github.com/davecgh/go-spew"; - fetch = { - type = "git"; - url = "https://github.com/davecgh/go-spew"; - rev = "8991bc29aa16c548c550c7ff78260e27b9ab7c73"; - sha256 = "0hka6hmyvp701adzag2g26cxdj47g21x6jz4sc6jjz1mn59d474y"; - }; - } - { - goPackagePath = "github.com/dgrijalva/jwt-go"; - fetch = { - type = "git"; - url = "https://github.com/dgrijalva/jwt-go"; - rev = "06ea1031745cb8b3dab3f6a236daf2b0aa468b7e"; - sha256 = "08m27vlms74pfy5z79w67f9lk9zkx6a9jd68k3c4msxy75ry36mp"; - }; - } - { - goPackagePath = "github.com/docker/spdystream"; - fetch = { - type = "git"; - url = "https://github.com/docker/spdystream"; - rev = "6480d4af844c189cf5dd913db24ddd339d3a4f85"; - sha256 = "19glzj20vvy19igsl5bji9xrxi9m0ixhk4zs98dg15mh8ah36zak"; - }; - } - { - goPackagePath = "github.com/dustin/go-humanize"; - fetch = { - type = "git"; - url = "https://github.com/dustin/go-humanize"; - rev = "9f541cc9db5d55bce703bd99987c9d5cb8eea45e"; - sha256 = "1kqf1kavdyvjk7f8kx62pnm7fbypn9z1vbf8v2qdh3y7z7a0cbl3"; - }; - } - { - goPackagePath = "github.com/emicklei/go-restful"; - fetch = { - type = "git"; - url = "https://github.com/emicklei/go-restful"; - rev = "6ac3b8eb89d325e5c750d77f344a6870464d03c3"; - sha256 = "0dgjld5240xhz45rj929ffm452n931qfw3fx8x99vhlnii9qrwz2"; - }; - } - { - goPackagePath = "github.com/emirpasic/gods"; - fetch = { - type = "git"; - url = "https://github.com/emirpasic/gods"; - rev = "1615341f118ae12f353cc8a983f35b584342c9b3"; - sha256 = "0i5qqq7ajvw3mikr95zl9rsnfsjanzwpqqs6kzzplsfgsifybar1"; - }; - } - { - goPackagePath = "github.com/evanphx/json-patch"; - fetch = { - type = "git"; - url = "https://github.com/evanphx/json-patch"; - rev = "026c730a0dcc5d11f93f1cf1cc65b01247ea7b6f"; - sha256 = "144mk2v9q37l1qjf8498nff4hhz96mlkl7ls7ihixbmrji4lmch4"; - }; - } - { - goPackagePath = "github.com/ghodss/yaml"; - fetch = { - type = "git"; - url = "https://github.com/ghodss/yaml"; - rev = "0ca9ea5df5451ffdf184b4428c902747c2c11cd7"; - sha256 = "0skwmimpy7hlh7pva2slpcplnm912rp3igs98xnqmn859kwa5v8g"; - }; - } - { - goPackagePath = "github.com/go-openapi/jsonpointer"; - fetch = { - type = "git"; - url = "https://github.com/go-openapi/jsonpointer"; - rev = "a105a905c5e6ad147f08504784917f3e178e0ba5"; - sha256 = "1s3cqf4svrbygvvpvi7hf122szsgihas52vqh0bba3avf4w03g9n"; - }; - } - { - goPackagePath = "github.com/go-openapi/jsonreference"; - fetch = { - type = "git"; - url = "https://github.com/go-openapi/jsonreference"; - rev = "2903bfd4bfbaf188694f1edf731f2725a8fa344f"; - sha256 = "0v933yvcwyzzlpdxwb9204ki7lls2rwfd96ww2i901ndvz37kdf8"; - }; - } - { - goPackagePath = "github.com/go-openapi/spec"; - fetch = { - type = "git"; - url = "https://github.com/go-openapi/spec"; - rev = "bdfd7e07daecc404d77868a88b2364d0aed0ee5a"; - sha256 = "1r2my46qc85fp1j4lbddmd6c1n0am9bq1wyqsnw7x8raiznqxp5l"; - }; - } - { - goPackagePath = "github.com/go-openapi/swag"; - fetch = { - type = "git"; - url = "https://github.com/go-openapi/swag"; - rev = "c3d0f7896d589f3babb99eea24bbc7de98108e72"; - sha256 = "1z34vqc5yz6rzvarrvlhkimxx33p74iaxb28l1mv716njvlsmjhg"; - }; - } - { - goPackagePath = "github.com/go-sql-driver/mysql"; - fetch = { - type = "git"; - url = "https://github.com/go-sql-driver/mysql"; - rev = "72cd26f257d44c1114970e19afddcd812016007e"; - sha256 = "1fvsvwc1v2i0gqn01mynvi1shp5xm0xaym6xng09fcbqb56lbjx1"; - }; - } - { - goPackagePath = "github.com/gogo/protobuf"; - fetch = { - type = "git"; - url = "https://github.com/gogo/protobuf"; - rev = "0ca988a254f991240804bf9821f3450d87ccbb1b"; - sha256 = "0slfyrmbpdcppf0z3waar90bpszdhi2gv705ys1b0zx5x6ax8f1a"; - }; - } - { - goPackagePath = "github.com/golang/protobuf"; - fetch = { - type = "git"; - url = "https://github.com/golang/protobuf"; - rev = "6c65a5562fc06764971b7c5d05c76c75e84bdbf7"; - sha256 = "1k1wb4zr0qbwgpvz9q5ws9zhlal8hq7dmq62pwxxriksayl6hzym"; - }; - } - { - goPackagePath = "github.com/google/gofuzz"; - fetch = { - type = "git"; - url = "https://github.com/google/gofuzz"; - rev = "f140a6486e521aad38f5917de355cbf147cc0496"; - sha256 = "0qz439qvccm91w0mmjz4fqgx48clxdwagkvvx89cr43q1d4iry36"; - }; - } - { - goPackagePath = "github.com/googleapis/gnostic"; - fetch = { - type = "git"; - url = "https://github.com/googleapis/gnostic"; - rev = "ab0dd09aa10e2952b28e12ecd35681b20463ebab"; - sha256 = "1f4bs71hrqkwg8fdhsxh25s12xnkxly13cnmp6m4qj6vc6k6zr2n"; - }; - } - { - goPackagePath = "github.com/gorilla/websocket"; - fetch = { - type = "git"; - url = "https://github.com/gorilla/websocket"; - rev = "c3e18be99d19e6b3e8f1559eea2c161a665c4b6b"; - sha256 = "03n1n0nwz3k9qshmriycqznnnvd3dkzsfwpnfjzzvafjxk9kyapv"; - }; - } - { - goPackagePath = "github.com/grpc-ecosystem/grpc-gateway"; - fetch = { - type = "git"; - url = "https://github.com/grpc-ecosystem/grpc-gateway"; - rev = "471f45a5a99a578de7a8638dc7ed29e245bde097"; - sha256 = "1jbr14p1dh6jpq3q6b4nq97ryh56h17ali0nckicpxhdrvxgi81c"; - }; - } - { - goPackagePath = "github.com/hashicorp/go-uuid"; - fetch = { - type = "git"; - url = "https://github.com/hashicorp/go-uuid"; - rev = "4f571afc59f3043a65f8fe6bf46d887b10a01d43"; - sha256 = "0jvb88m0rq41bwgirsadgw7mnayl27av3gd2vqa3xvxp3fy0hp5k"; - }; - } - { - goPackagePath = "github.com/hashicorp/golang-lru"; - fetch = { - type = "git"; - url = "https://github.com/hashicorp/golang-lru"; - rev = "7f827b33c0f158ec5dfbba01bb0b14a4541fd81d"; - sha256 = "1p2igd58xkm8yaj2c2wxiplkf2hj6kxwrg6ss7mx61s5rd71v5xb"; - }; - } - { - goPackagePath = "github.com/imdario/mergo"; - fetch = { - type = "git"; - url = "https://github.com/imdario/mergo"; - rev = "7c29201646fa3de8506f701213473dd407f19646"; - sha256 = "05ir0jj74w0yfi1lrhjd97v759in1dpsma64cgmbiqvyp6hfmmf8"; - }; - } - { - goPackagePath = "github.com/inconshreveable/mousetrap"; - fetch = { - type = "git"; - url = "https://github.com/inconshreveable/mousetrap"; - rev = "76626ae9c91c4f2a10f34cad8ce83ea42c93bb75"; - sha256 = "1mn0kg48xkd74brf48qf5hzp0bc6g8cf5a77w895rl3qnlpfw152"; - }; - } - { - goPackagePath = "github.com/jbenet/go-context"; - fetch = { - type = "git"; - url = "https://github.com/jbenet/go-context"; - rev = "d14ea06fba99483203c19d92cfcd13ebe73135f4"; - sha256 = "0q91f5549n81w3z5927n4a1mdh220bdmgl42zi3h992dcc4ls0sl"; - }; - } - { - goPackagePath = "github.com/jcmturner/gofork"; - fetch = { - type = "git"; - url = "https://github.com/jcmturner/gofork"; - rev = "dc7c13fece037a4a36e2b3c69db4991498d30692"; - sha256 = "0xzsnjqv3d59w9pgqzf6550wdwaqnac7zcdgqfd25w65yhcffzhr"; - }; - } - { - goPackagePath = "github.com/jmespath/go-jmespath"; - fetch = { - type = "git"; - url = "https://github.com/jmespath/go-jmespath"; - rev = "c2b33e84"; - sha256 = "1r6w7ydx8ydryxk3sfhzsk8m6f1nsik9jg3i1zhi69v4kfl4d5cz"; - }; - } - { - goPackagePath = "github.com/json-iterator/go"; - fetch = { - type = "git"; - url = "https://github.com/json-iterator/go"; - rev = "27518f6661eba504be5a7a9a9f6d9460d892ade3"; - sha256 = "0n79p4s67zl5zprxv7diayw3vavnmmfqkmd6snz0i9bxp825dsyz"; - }; - } - { - goPackagePath = "github.com/kevinburke/ssh_config"; - fetch = { - type = "git"; - url = "https://github.com/kevinburke/ssh_config"; - rev = "6cfae18c12b8934b1afba3ce8159476fdef666ba"; - sha256 = "05jvz5r58a057zxvic9dyr9v2wilha8l6366npwkqgxmnmk9sh5f"; - }; - } - { - goPackagePath = "github.com/konsorten/go-windows-terminal-sequences"; - fetch = { - type = "git"; - url = "https://github.com/konsorten/go-windows-terminal-sequences"; - rev = "f55edac94c9bbba5d6182a4be46d86a2c9b5b50e"; - sha256 = "09mn209ika7ciy87xf2x31dq5fnqw39jidgaljvmqxwk7ff1hnx7"; - }; - } - { - goPackagePath = "github.com/lib/pq"; - fetch = { - type = "git"; - url = "https://github.com/lib/pq"; - rev = "3427c32cb71afc948325f299f040e53c1dd78979"; - sha256 = "08j1smm6rassdssdks4yh9aspa1dv1g5nvwimmknspvhx8a7waqz"; - }; - } - { - goPackagePath = "github.com/mailru/easyjson"; - fetch = { - type = "git"; - url = "https://github.com/mailru/easyjson"; - rev = "b2ccc519800e761ac8000b95e5d57c80a897ff9e"; - sha256 = "0q85h383mhbkcjm2vqm72bi8n2252fv3c56q3lclzb8n2crnjcdk"; - }; - } - { - goPackagePath = "github.com/matttproud/golang_protobuf_extensions"; - fetch = { - type = "git"; - url = "https://github.com/matttproud/golang_protobuf_extensions"; - rev = "c12348ce28de40eed0136aa2b644d0ee0650e56c"; - sha256 = "1d0c1isd2lk9pnfq2nk0aih356j30k3h1gi2w0ixsivi5csl7jya"; - }; - } - { - goPackagePath = "github.com/minio/minio-go"; - fetch = { - type = "git"; - url = "https://github.com/minio/minio-go"; - rev = "c6c2912aa5522e5f5a505e6cba30e95f0d8456fa"; - sha256 = "0f5av1da4xbcy34j6dfy7c90na4a1capmsyac9qswq4xzq2zky10"; - }; - } - { - goPackagePath = "github.com/mitchellh/go-homedir"; - fetch = { - type = "git"; - url = "https://github.com/mitchellh/go-homedir"; - rev = "af06845cf3004701891bf4fdb884bfe4920b3727"; - sha256 = "0ydzkipf28hwj2bfxqmwlww47khyk6d152xax4bnyh60f4lq3nx1"; - }; - } - { - goPackagePath = "github.com/mitchellh/go-ps"; - fetch = { - type = "git"; - url = "https://github.com/mitchellh/go-ps"; - rev = "621e5597135b1d14a7d9c2bfc7bc312e7c58463c"; - sha256 = "0sjkz24kqz5nzgncnvdlzhlyba4jwmf6cxj8c4p8mb44679gkphh"; - }; - } - { - goPackagePath = "github.com/modern-go/concurrent"; - fetch = { - type = "git"; - url = "https://github.com/modern-go/concurrent"; - rev = "bacd9c7ef1dd9b15be4a9909b8ac7a4e313eec94"; - sha256 = "0s0fxccsyb8icjmiym5k7prcqx36hvgdwl588y0491gi18k5i4zs"; - }; - } - { - goPackagePath = "github.com/modern-go/reflect2"; - fetch = { - type = "git"; - url = "https://github.com/modern-go/reflect2"; - rev = "4b7aa43c6742a2c18fdef89dd197aaae7dac7ccd"; - sha256 = "1721y3yr3dpx5dx5ashf063qczk2awy5zjir1jvp1h5hn7qz4i49"; - }; - } - { - goPackagePath = "github.com/pkg/errors"; - fetch = { - type = "git"; - url = "https://github.com/pkg/errors"; - rev = "ba968bfe8b2f7e042a574c888954fccecfa385b4"; - sha256 = "0g5qcb4d4fd96midz0zdk8b9kz8xkzwfa8kr1cliqbg8sxsy5vd1"; - }; - } - { - goPackagePath = "github.com/pmezard/go-difflib"; - fetch = { - type = "git"; - url = "https://github.com/pmezard/go-difflib"; - rev = "792786c7400a136282c1664665ae0a8db921c6c2"; - sha256 = "0c1cn55m4rypmscgf0rrb88pn58j3ysvc2d0432dp3c6fqg6cnzw"; - }; - } - { - goPackagePath = "github.com/prometheus/client_golang"; - fetch = { - type = "git"; - url = "https://github.com/prometheus/client_golang"; - rev = "c5b7fccd204277076155f10851dad72b76a49317"; - sha256 = "1xqny3147g12n4j03kxm8s9mvdbs3ln6i56c655mybrn9jjy48kd"; - }; - } - { - goPackagePath = "github.com/prometheus/client_model"; - fetch = { - type = "git"; - url = "https://github.com/prometheus/client_model"; - rev = "14fe0d1b01d4d5fc031dd4bec1823bd3ebbe8016"; - sha256 = "0zdmk6rbbx39cvfz0r59v2jg5sg9yd02b4pds5n5llgvivi99550"; - }; - } - { - goPackagePath = "github.com/prometheus/common"; - fetch = { - type = "git"; - url = "https://github.com/prometheus/common"; - rev = "31bed53e4047fd6c510e43a941f90cb31be0972a"; - sha256 = "1q16br348117ffycxdwsldb0i39p34miclfa8z93k6vjwnrqbh2l"; - }; - } - { - goPackagePath = "github.com/prometheus/procfs"; - fetch = { - type = "git"; - url = "https://github.com/prometheus/procfs"; - rev = "00ec24a6a2d86e7074629c8384715dbb05adccd8"; - sha256 = "1z5jq5rjala0a0di4nwk1rai0z9f73qwqj6mgcbpjbg2qknlb544"; - }; - } - { - goPackagePath = "github.com/sergi/go-diff"; - fetch = { - type = "git"; - url = "https://github.com/sergi/go-diff"; - rev = "1744e2970ca51c86172c8190fadad617561ed6e7"; - sha256 = "0swiazj8wphs2zmk1qgq75xza6m19snif94h2m6fi8dqkwqdl7c7"; - }; - } - { - goPackagePath = "github.com/sirupsen/logrus"; - fetch = { - type = "git"; - url = "https://github.com/sirupsen/logrus"; - rev = "839c75faf7f98a33d445d181f3018b5c3409a45e"; - sha256 = "087k2lxrr9p9dh68yw71d05h5g9p5v26zbwd6j7lghinjfaw334x"; - }; - } - { - goPackagePath = "github.com/spf13/cobra"; - fetch = { - type = "git"; - url = "https://github.com/spf13/cobra"; - rev = "fe5e611709b0c57fa4a89136deaa8e1d4004d053"; - sha256 = "1pn7g9jmhqc9yg6x02dgp4phiggnnxz8a11pv5y4vxhrvkjm6h71"; - }; - } - { - goPackagePath = "github.com/spf13/pflag"; - fetch = { - type = "git"; - url = "https://github.com/spf13/pflag"; - rev = "298182f68c66c05229eb03ac171abe6e309ee79a"; - sha256 = "1cj3cjm7d3zk0mf1xdybh0jywkbbw7a6yr3y22x9sis31scprswd"; - }; - } - { - goPackagePath = "github.com/src-d/gcfg"; - fetch = { - type = "git"; - url = "https://github.com/src-d/gcfg"; - rev = "1ac3a1ac202429a54835fe8408a92880156b489d"; - sha256 = "044j95skmyrwjw5fwjk6ka32rjgsg0ar0mfp9np19sh1acwv4x4r"; - }; - } - { - goPackagePath = "github.com/stretchr/objx"; - fetch = { - type = "git"; - url = "https://github.com/stretchr/objx"; - rev = "477a77ecc69700c7cdeb1fa9e129548e1c1c393c"; - sha256 = "0iph0qmpyqg4kwv8jsx6a56a7hhqq8swrazv40ycxk9rzr0s8yls"; - }; - } - { - goPackagePath = "github.com/stretchr/testify"; - fetch = { - type = "git"; - url = "https://github.com/stretchr/testify"; - rev = "221dbe5ed46703ee255b1da0dec05086f5035f62"; - sha256 = "187i5g88sxfy4vxpm7dw1gwv29pa2qaq475lxrdh5livh69wqfjb"; - }; - } - { - goPackagePath = "github.com/tidwall/gjson"; - fetch = { - type = "git"; - url = "https://github.com/tidwall/gjson"; - rev = "c5e72cdf74dff23857243dd662c465b810891c21"; - sha256 = "0cg23va26ga6d0gckp5i3ramc98cbz6ij9gn9dqqyc8igvcx9cb3"; - }; - } - { - goPackagePath = "github.com/tidwall/match"; - fetch = { - type = "git"; - url = "https://github.com/tidwall/match"; - rev = "33827db735fff6510490d69a8622612558a557ed"; - sha256 = "1ip5nkjvmzzzsypyzdd9nsnzbhwssprlx8qs5llqh16fl7kcvi3n"; - }; - } - { - goPackagePath = "github.com/tidwall/pretty"; - fetch = { - type = "git"; - url = "https://github.com/tidwall/pretty"; - rev = "1166b9ac2b65e46a43d8618d30d1554f4652d49b"; - sha256 = "1jwpj5903lh8hsj9apm2gwd70809zq0gjgmivkxaq4iq29wnv0n9"; - }; - } - { - goPackagePath = "github.com/valyala/bytebufferpool"; - fetch = { - type = "git"; - url = "https://github.com/valyala/bytebufferpool"; - rev = "e746df99fe4a3986f4d4f79e13c1e0117ce9c2f7"; - sha256 = "01lqzjddq6kz9v41nkky7wbgk7f1cw036sa7ldz10d82g5klzl93"; - }; - } - { - goPackagePath = "github.com/valyala/fasttemplate"; - fetch = { - type = "git"; - url = "https://github.com/valyala/fasttemplate"; - rev = "8b5e4e491ab636663841c42ea3c5a9adebabaf36"; - sha256 = "0l131znbv8v67y20s4q361mwiww2c33zdc68mwvxchzk1gpy5ywq"; - }; - } - { - goPackagePath = "github.com/xanzy/ssh-agent"; - fetch = { - type = "git"; - url = "https://github.com/xanzy/ssh-agent"; - rev = "6a3e2ff9e7c564f36873c2e36413f634534f1c44"; - sha256 = "1chjlnv5d6svpymxgsr62d992m2xi6jb5lybjc5zn1h3hv1m01av"; - }; - } - { - goPackagePath = "go.opencensus.io"; - fetch = { - type = "git"; - url = "https://github.com/census-instrumentation/opencensus-go"; - rev = "aab39bd6a98b853ab66c8a564f5d6cfcad59ce8a"; - sha256 = "1x1ysvpyak1hcmfgvy0mk30g1ammbsmw19c9s0brz5h9wn7m4vva"; - }; - } - { - goPackagePath = "golang.org/x/crypto"; - fetch = { - type = "git"; - url = "https://go.googlesource.com/crypto"; - rev = "9756ffdc24725223350eb3266ffb92590d28f278"; - sha256 = "0q7hxaaq6lp0v8qqzifvysl47z5rfdlrxkh3d29vsl3wyby3dxl8"; - }; - } - { - goPackagePath = "golang.org/x/net"; - fetch = { - type = "git"; - url = "https://go.googlesource.com/net"; - rev = "ba9fcec4b297b415637633c5a6e8fa592e4a16c3"; - sha256 = "1hbqvy6r0s5h0dpdqw8fynl3cq0acin3iyqki9xvl5r8h33yb9bx"; - }; - } - { - goPackagePath = "golang.org/x/oauth2"; - fetch = { - type = "git"; - url = "https://go.googlesource.com/oauth2"; - rev = "0f29369cfe4552d0e4bcddc57cc75f4d7e672a33"; - sha256 = "06jwpvx0x2gjn2y959drbcir5kd7vg87k0r1216abk6rrdzzrzi2"; - }; - } - { - goPackagePath = "golang.org/x/sync"; - fetch = { - type = "git"; - url = "https://go.googlesource.com/sync"; - rev = "112230192c580c3556b8cee6403af37a4fc5f28c"; - sha256 = "05i2k43j2d0llq768hg5pf3hb2yhfzp9la1w5wp0rsnnzblr0lfn"; - }; - } - { - goPackagePath = "golang.org/x/sys"; - fetch = { - type = "git"; - url = "https://go.googlesource.com/sys"; - rev = "9109b7679e13aa34a54834cfb4949cac4b96e576"; - sha256 = "169sg6fyjkykiylrgxr0pynv2zc3frkgssbsk5w2lqyl8mb319hl"; - }; - } - { - goPackagePath = "golang.org/x/text"; - fetch = { - type = "git"; - url = "https://go.googlesource.com/text"; - rev = "342b2e1fbaa52c93f31447ad2c6abc048c63e475"; - sha256 = "0flv9idw0jm5nm8lx25xqanbkqgfiym6619w575p7nrdh0riqwqh"; - }; - } - { - goPackagePath = "golang.org/x/time"; - fetch = { - type = "git"; - url = "https://go.googlesource.com/time"; - rev = "9d24e82272b4f38b78bc8cff74fa936d31ccd8ef"; - sha256 = "1f5nkr4vys2vbd8wrwyiq2f5wcaahhpxmia85d1gshcbqjqf8dkb"; - }; - } - { - goPackagePath = "golang.org/x/tools"; - fetch = { - type = "git"; - url = "https://go.googlesource.com/tools"; - rev = "be0da057c5e3c2df569a2c25cd280149b7d7e7d0"; - sha256 = "19i9sjvbk79sgzyzjzrnmf575rnwj2bjsj4r1fmp7827dq97kqks"; - }; - } - { - goPackagePath = "google.golang.org/api"; - fetch = { - type = "git"; - url = "https://code.googlesource.com/google-api-go-client"; - rev = "feb0267beb8644f5088a03be4d5ec3f8c7020152"; - sha256 = "1lzdzkd2i41v6amxs9jah1q44qbvf1yvm8906jpfjiq6c3ffhqss"; - }; - } - { - goPackagePath = "google.golang.org/appengine"; - fetch = { - type = "git"; - url = "https://github.com/golang/appengine"; - rev = "5f2a59506353b8d5ba8cbbcd9f3c1f41f1eaf079"; - sha256 = "1gwcwh8w5b1l15pjm8pqs3bbymvjcak3wva37zi5z9ilzr8c5wnx"; - }; - } - { - goPackagePath = "google.golang.org/genproto"; - fetch = { - type = "git"; - url = "https://github.com/google/go-genproto"; - rev = "24fa4b261c55da65468f2abfdae2b024eef27dfb"; - sha256 = "109zhaqlfd8zkbr1hk6zqbs6vcxfrk64scjwh2nswph05gr0m84d"; - }; - } - { - goPackagePath = "google.golang.org/grpc"; - fetch = { - type = "git"; - url = "https://github.com/grpc/grpc-go"; - rev = "6eaf6f47437a6b4e2153a190160ef39a92c7eceb"; - sha256 = "1cn33r2gclmq2v1ndpf1n5bmhf2qs8mms7ii5cnl6f9ch4r2c4k3"; - }; - } - { - goPackagePath = "gopkg.in/inf.v0"; - fetch = { - type = "git"; - url = "https://github.com/go-inf/inf"; - rev = "d2d2541c53f18d2a059457998ce2876cc8e67cbf"; - sha256 = "00k5iqjcp371fllqxncv7jkf80hn1zww92zm78cclbcn4ybigkng"; - }; - } - { - goPackagePath = "gopkg.in/ini.v1"; - fetch = { - type = "git"; - url = "https://github.com/go-ini/ini"; - rev = "d4cae42d398bc0095297fc3315669590d29166ea"; - sha256 = "1z7531wz62305hwg9y2f04d819am8x3ys96ssy6qndlzmw60yjsr"; - }; - } - { - goPackagePath = "gopkg.in/jcmturner/aescts.v1"; - fetch = { - type = "git"; - url = "https://github.com/jcmturner/aescts"; - rev = "f6abebb3171c4c1b1fea279cb7c7325020a26290"; - sha256 = "0rbq4zf3db48xa2gqdp2swws7wizmbwagigqkr1zxzd1ramps6rv"; - }; - } - { - goPackagePath = "gopkg.in/jcmturner/dnsutils.v1"; - fetch = { - type = "git"; - url = "https://github.com/jcmturner/dnsutils"; - rev = "13eeb8d49ffb74d7a75784c35e4d900607a3943c"; - sha256 = "0l543c64pyzbnrc00jspg21672l3a0kjjw9pbdxwna93w8d8m927"; - }; - } - { - goPackagePath = "gopkg.in/jcmturner/gokrb5.v5"; - fetch = { - type = "git"; - url = "https://github.com/jcmturner/gokrb5"; - rev = "32ba44ca5b42f17a4a9f33ff4305e70665a1bc0f"; - sha256 = "0jynpkncifdd2ib2pc9qhh0r8q7ab7yw0ygzpzgisdzv8ars1diq"; - }; - } - { - goPackagePath = "gopkg.in/jcmturner/rpc.v0"; - fetch = { - type = "git"; - url = "https://github.com/jcmturner/rpc"; - rev = "4480c480c9cd343b54b0acb5b62261cbd33d7adf"; - sha256 = "0hivgq52gwxsqs5x1my2047k7nqh7wx3yi0llsj3lc3h2mjy4yhd"; - }; - } - { - goPackagePath = "gopkg.in/src-d/go-billy.v4"; - fetch = { - type = "git"; - url = "https://github.com/src-d/go-billy"; - rev = "780403cfc1bc95ff4d07e7b26db40a6186c5326e"; - sha256 = "0jcyi4ink2njgflp3f2mbl5b86p2w0rh945k5xplcl158i5wkrc6"; - }; - } - { - goPackagePath = "gopkg.in/src-d/go-git.v4"; - fetch = { - type = "git"; - url = "https://github.com/src-d/go-git"; - rev = "0d1a009cbb604db18be960db5f1525b99a55d727"; - sha256 = "0n4x7r69qrmpss51b3wd3vj4b9jmip4archz3fbqk6q1yyd1pxjb"; - }; - } - { - goPackagePath = "gopkg.in/warnings.v0"; - fetch = { - type = "git"; - url = "https://github.com/go-warnings/warnings"; - rev = "ec4a0fea49c7b46c2aeb0b51aac55779c607e52b"; - sha256 = "1kzj50jn708cingn7a13c2wdlzs6qv89dr2h4zj8d09647vlnd81"; - }; - } - { - goPackagePath = "gopkg.in/yaml.v2"; - fetch = { - type = "git"; - url = "https://github.com/go-yaml/yaml"; - rev = "51d6538a90f86fe93ac480b35f37b2be17fef232"; - sha256 = "01wj12jzsdqlnidpyjssmj0r4yavlqy7dwrg7adqd8dicjc4ncsa"; - }; - } - { - goPackagePath = "k8s.io/api"; - fetch = { - type = "git"; - url = "https://github.com/kubernetes/api"; - rev = "e3a6b8045b0b303430f6d0c261fd9e35be50800e"; - sha256 = "1c1nrcy0j7aj93l2xgdw0asyvxa4h8pzz004drf7pvh9pvsg0vqq"; - }; - } - { - goPackagePath = "k8s.io/apimachinery"; - fetch = { - type = "git"; - url = "https://github.com/kubernetes/apimachinery"; - rev = "8f6ac2502e5143406f4eaedc4ca4262854d877ce"; - sha256 = "0v8cb63nvry4b0ls1h185hb3llp6rk0b4n92f76jcjsv1b7sspbi"; - }; - } - { - goPackagePath = "k8s.io/client-go"; - fetch = { - type = "git"; - url = "https://github.com/kubernetes/client-go"; - rev = "6d55c1b1f1ca8ad83d572bbc3ca55ba5526d9d71"; - sha256 = "1j8m0pqn9c6lwr7h5aq7zrpdd73bwbwnhy4mbc0654ylmc3lnq8q"; - }; - } - { - goPackagePath = "k8s.io/code-generator"; - fetch = { - type = "git"; - url = "https://github.com/kubernetes/code-generator"; - rev = "6c2a4329ac290d921e8616cad41635c87dbb1518"; - sha256 = "18kx2wcqb5cvivbl61q7vyic5rp0fica9n6xgrjfsxczjbihlq70"; - }; - } - { - goPackagePath = "k8s.io/gengo"; - fetch = { - type = "git"; - url = "https://github.com/kubernetes/gengo"; - rev = "a874a240740c2ae854082ec73d46c5efcedd2149"; - sha256 = "0z8gay4bj6l8cv7gzi55l2c3jx94caq28sk0x6p3s6wxqxmnqp92"; - }; - } - { - goPackagePath = "k8s.io/klog"; - fetch = { - type = "git"; - url = "https://github.com/kubernetes/klog"; - rev = "3ca30a56d8a775276f9cdae009ba326fdc05af7f"; - sha256 = "0a7kn145q4cbsd2cfpv7sz09prjrxl6aaqzdcgq7p7jxc23a7zps"; - }; - } - { - goPackagePath = "k8s.io/kube-openapi"; - fetch = { - type = "git"; - url = "https://github.com/kubernetes/kube-openapi"; - rev = "5e22f3d471e6f24ca20becfdffdc6206c7cecac8"; - sha256 = "08drikf269fhlnrhc29v7rhxl1950d94rl5x8l11n0qf2v2ffwib"; - }; - } - { - goPackagePath = "k8s.io/utils"; - fetch = { - type = "git"; - url = "https://github.com/kubernetes/utils"; - rev = "3a4a5477acf81b48e20870a3b9dc743f63c66730"; - sha256 = "1f01ck7nvm9rmw1fkylbnr1cdd9byiagl9ni40j9p9gfy5v5nxk8"; - }; - } - { - goPackagePath = "sigs.k8s.io/yaml"; - fetch = { - type = "git"; - url = "https://github.com/kubernetes-sigs/yaml"; - rev = "fd68e9863619f6ec2fdd8625fe1f02e7c877e480"; - sha256 = "1p7hvjdr5jsyk7nys1g1pmgnf3ys6n320i6hds85afppk81k01kb"; - }; - } - { - goPackagePath = "upper.io/db.v3"; - fetch = { - type = "git"; - url = "https://upper.io/db.v3"; - rev = "fad80cdab4f761cb26416675df120f5d8c3f0db7"; - sha256 = "1bddpi278bzp39470llrgnsnnfyqqmzym5hmd8dxmczmzhhkirfv"; - }; - } -] \ No newline at end of file diff --git a/pkgs/applications/networking/cluster/argocd/default.nix b/pkgs/applications/networking/cluster/argocd/default.nix new file mode 100644 index 00000000000..7f9ebda93c0 --- /dev/null +++ b/pkgs/applications/networking/cluster/argocd/default.nix @@ -0,0 +1,40 @@ +{ lib, buildGoModule, fetchFromGitHub, packr }: + +buildGoModule rec { + pname = "argocd"; + version = "1.4.2"; + commit = "48cced9d925b5bc94f6aa9fa4a8a19b2a59e128a"; + + src = fetchFromGitHub { + owner = "argoproj"; + repo = "argo-cd"; + rev = "v${version}"; + sha256 = "01vsyrks1k5yfvrarv8ia0isr7snilr21b7lfiy860si82r2r8hj"; + }; + + modSha256 = "1qivg7yy7ymmgkrvl365x29d8jnsphbz18j1ykgwwysyw3n4jkdg"; + + nativeBuildInputs = [ packr ]; + + patches = [ ./use-go-module.patch ]; + + buildFlagsArray = '' + -ldflags= + -X github.com/argoproj/argo-cd/common.version=${version} + -X github.com/argoproj/argo-cd/common.buildDate=unknown + -X github.com/argoproj/argo-cd/common.gitCommit=${commit} + -X github.com/argoproj/argo-cd/common.gitTreeState=clean + ''; + + # run packr to embed assets + preBuild = '' + packr + ''; + + meta = with lib; { + description = "Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes"; + homepage = "https://github.com/argoproj/argo"; + license = licenses.asl20; + maintainers = with maintainers; [ shahrukh330 ]; + }; +} diff --git a/pkgs/applications/networking/cluster/argocd/use-go-module.patch b/pkgs/applications/networking/cluster/argocd/use-go-module.patch new file mode 100644 index 00000000000..ac597f4187e --- /dev/null +++ b/pkgs/applications/networking/cluster/argocd/use-go-module.patch @@ -0,0 +1,3058 @@ +diff --git a/Gopkg.lock b/Gopkg.lock +deleted file mode 100644 +index 03737a95..00000000 +--- a/Gopkg.lock ++++ /dev/null +@@ -1,2103 +0,0 @@ +-# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'. +- +- +-[[projects]] +- digest = "1:6d5a057da97a9dbdb10e7beedd2f43452b6bf7691001c0c8886e8dacf5610349" +- name = "bou.ke/monkey" +- packages = ["."] +- pruneopts = "" +- revision = "bdf6dea004c6fd1cdf4b25da8ad45a606c09409a" +- version = "v1.0.1" +- +-[[projects]] +- digest = "1:9702dc153c9bb6ee7ee0587c248b7024700e89e4a7be284faaeeab9da32e1c6b" +- name = "cloud.google.com/go" +- packages = ["compute/metadata"] +- pruneopts = "" +- revision = "767c40d6a2e058483c25fa193e963a22da17236d" +- version = "v0.18.0" +- +-[[projects]] +- digest = "1:8ec1618fc3ee146af104d6c13be250f25e5976e34557d4afbfe4b28035ce6c05" +- name = "github.com/Knetic/govaluate" +- packages = ["."] +- pruneopts = "" +- revision = "d216395917cc49052c7c7094cf57f09657ca08a8" +- version = "v3.0.0" +- +-[[projects]] +- digest = "1:63e57618d792cccb87ad7cb8a0602e6205732beb3b01b0ea858fc4a5fd3ce8f1" +- name = "github.com/MakeNowJust/heredoc" +- packages = ["."] +- pruneopts = "" +- revision = "efb6ca8de9d5385c3963279701760e37637cf238" +- version = "v2.0.1" +- +-[[projects]] +- digest = "1:b856d8248663c39265a764561c1a1a149783f6cc815feb54a1f3a591b91f6eca" +- name = "github.com/Masterminds/semver" +- packages = ["."] +- pruneopts = "" +- revision = "c7af12943936e8c39859482e61f0574c2fd7fc75" +- version = "v1.4.2" +- +-[[projects]] +- digest = "1:71c0dfb843260bfb9b03357cae8eac261b8d82e149ad8f76938b87a23aa47c43" +- name = "github.com/PuerkitoBio/purell" +- packages = ["."] +- pruneopts = "" +- revision = "b938d81255b5473c57635324295cb0fe398c7a58" +- +-[[projects]] +- branch = "master" +- digest = "1:331a419049c2be691e5ba1d24342fc77c7e767a80c666a18fd8a9f7b82419c1c" +- name = "github.com/PuerkitoBio/urlesc" +- packages = ["."] +- pruneopts = "" +- revision = "de5bf2ad457846296e2031421a34e2568e304e35" +- +-[[projects]] +- branch = "master" +- digest = "1:a1b56af5e69569454f55ef4842485a0da5616e240a610d77c987e17a73b0e265" +- name = "github.com/TomOnTime/utfutil" +- packages = ["."] +- pruneopts = "" +- revision = "09c41003ee1d5015b75f331e52215512e7145b8d" +- +-[[projects]] +- branch = "master" +- digest = "1:52905b00a73cda93a2ce8c5fa35185daed673d59e39576e81ad6ab6fb7076b3c" +- name = "github.com/argoproj/pkg" +- packages = [ +- "errors", +- "exec", +- "rand", +- "time", +- ] +- pruneopts = "" +- revision = "02a6aac40ac4cd23de448afe7a1ec0ba4b6d2b96" +- +-[[projects]] +- digest = "1:d8a2bb36a048d1571bcc1aee208b61f39dc16c6c53823feffd37449dde162507" +- name = "github.com/asaskevich/govalidator" +- packages = ["."] +- pruneopts = "" +- revision = "ccb8e960c48f04d6935e72476ae4a51028f9e22f" +- version = "v9" +- +-[[projects]] +- branch = "master" +- digest = "1:c0bec5f9b98d0bc872ff5e834fac186b807b656683bd29cb82fb207a1513fabb" +- name = "github.com/beorn7/perks" +- packages = ["quantile"] +- pruneopts = "" +- revision = "3a771d992973f24aa725d07868b467d1ddfceafb" +- +-[[projects]] +- digest = "1:6e2b0748ea11cffebe87b4a671a44ecfb243141cdd5df54cb44b7e8e93cb7ea3" +- name = "github.com/casbin/casbin" +- packages = [ +- ".", +- "config", +- "effect", +- "errors", +- "log", +- "model", +- "persist", +- "persist/file-adapter", +- "rbac", +- "rbac/default-role-manager", +- "util", +- ] +- pruneopts = "" +- revision = "aaed1b7a7eac65d37ec4e15e308429fdf0bd6a9e" +- version = "v1.9.1" +- +-[[projects]] +- branch = "master" +- digest = "1:9c19f8c33e635e0439c8afc167d6d02e3aa6eea5b69d64880244fd354a99edc4" +- name = "github.com/chai2010/gettext-go" +- packages = [ +- "gettext", +- "gettext/mo", +- "gettext/plural", +- "gettext/po", +- ] +- pruneopts = "" +- revision = "bf70f2a70fb1b1f36d90d671a72795984eab0fcb" +- +-[[projects]] +- branch = "v2" +- digest = "1:d8ee1b165eb7f4fd9ada718e1e7eeb0bc1fd462592d0bd823df694443f448681" +- name = "github.com/coreos/go-oidc" +- packages = ["."] +- pruneopts = "" +- revision = "1180514eaf4d9f38d0d19eef639a1d695e066e72" +- +-[[projects]] +- digest = "1:56c130d885a4aacae1dd9c7b71cfe39912c7ebc1ff7d2b46083c8812996dc43b" +- name = "github.com/davecgh/go-spew" +- packages = ["spew"] +- pruneopts = "" +- revision = "346938d642f2ec3594ed81d874461961cd0faa76" +- version = "v1.1.0" +- +-[[projects]] +- digest = "1:6098222470fe0172157ce9bbef5d2200df4edde17ee649c5d6e48330e4afa4c6" +- name = "github.com/dgrijalva/jwt-go" +- packages = ["."] +- pruneopts = "" +- revision = "06ea1031745cb8b3dab3f6a236daf2b0aa468b7e" +- version = "v3.2.0" +- +-[[projects]] +- digest = "1:c05f1899f086e3b4613d94d9e6f7ba6f4b6587498a1aa6037c5c294b22f5a743" +- name = "github.com/docker/distribution" +- packages = [ +- "digestset", +- "reference", +- ] +- pruneopts = "" +- revision = "2461543d988979529609e8cb6fca9ca190dc48da" +- version = "v2.7.1" +- +-[[projects]] +- digest = "1:b021ef379356343bdc13ec101e546b756fcef4b1186d08163bef7d3bc8c1e07f" +- name = "github.com/docker/docker" +- packages = [ +- "pkg/term", +- "pkg/term/winconsole", +- ] +- pruneopts = "" +- revision = "fc4825d5ef5e0e1af74904208f9b925c22f0b6f8" +- version = "v1.6.0-rc5" +- +-[[projects]] +- branch = "master" +- digest = "1:d6c13a378213e3de60445e49084b8a0a9ce582776dfc77927775dbeb3ff72a35" +- name = "github.com/docker/spdystream" +- packages = [ +- ".", +- "spdy", +- ] +- pruneopts = "" +- revision = "6480d4af844c189cf5dd913db24ddd339d3a4f85" +- +-[[projects]] +- branch = "master" +- digest = "1:f1a75a8e00244e5ea77ff274baa9559eb877437b240ee7b278f3fc560d9f08bf" +- name = "github.com/dustin/go-humanize" +- packages = ["."] +- pruneopts = "" +- revision = "9f541cc9db5d55bce703bd99987c9d5cb8eea45e" +- +-[[projects]] +- digest = "1:971e9ba63a417c5f1f83ab358677bc59e96ff04285f26c6646ff089fb60b15e8" +- name = "github.com/emicklei/go-restful" +- packages = [ +- ".", +- "log", +- ] +- pruneopts = "" +- revision = "3658237ded108b4134956c1b3050349d93e7b895" +- version = "v2.7.1" +- +-[[projects]] +- digest = "1:ba7c75e38d81b9cf3e8601c081567be3b71bccca8c11aee5de98871360aa4d7b" +- name = "github.com/emirpasic/gods" +- packages = [ +- "containers", +- "lists", +- "lists/arraylist", +- "trees", +- "trees/binaryheap", +- "utils", +- ] +- pruneopts = "" +- revision = "f6c17b524822278a87e3b3bd809fec33b51f5b46" +- version = "v1.9.0" +- +-[[projects]] +- digest = "1:46ddeb9dd35d875ac7568c4dc1fc96ce424e034bdbb984239d8ffc151398ec01" +- name = "github.com/evanphx/json-patch" +- packages = ["."] +- pruneopts = "" +- revision = "026c730a0dcc5d11f93f1cf1cc65b01247ea7b6f" +- version = "v4.5.0" +- +-[[projects]] +- branch = "master" +- digest = "1:549f95037fea25e00a5341ac6a169a5b3e5306be107f45260440107b779b74f9" +- name = "github.com/exponent-io/jsonpath" +- packages = ["."] +- pruneopts = "" +- revision = "d6023ce2651d8eafb5c75bb0c7167536102ec9f5" +- +-[[projects]] +- digest = "1:23a5efa4b272df86a8ebffc942f5e0c1aac4b750836037394cc450b6d91e241a" +- name = "github.com/fatih/camelcase" +- packages = ["."] +- pruneopts = "" +- revision = "44e46d280b43ec1531bb25252440e34f1b800b65" +- version = "v1.0.0" +- +-[[projects]] +- digest = "1:b13707423743d41665fd23f0c36b2f37bb49c30e94adb813319c44188a51ba22" +- name = "github.com/ghodss/yaml" +- packages = ["."] +- pruneopts = "" +- revision = "0ca9ea5df5451ffdf184b4428c902747c2c11cd7" +- version = "v1.0.0" +- +-[[projects]] +- branch = "master" +- digest = "1:eb77b66abaf9649747230eb973350bd1c311a0d0362213192efbdd222082b072" +- name = "github.com/go-openapi/analysis" +- packages = ["."] +- pruneopts = "" +- revision = "5957818e100395077187fb7ef3b8a28227af06c6" +- +-[[projects]] +- branch = "master" +- digest = "1:ee273c95c1414ef11bd4da259b40e83f41c1d5a6bee7d1b54a05ef5f3565fd92" +- name = "github.com/go-openapi/errors" +- packages = ["."] +- pruneopts = "" +- revision = "b2b2befaf267d082d779bcef52d682a47c779517" +- +-[[projects]] +- branch = "master" +- digest = "1:1287439f7765209116509fffff2b8f853845e4b35572b41a1aadda42cbcffcc2" +- name = "github.com/go-openapi/jsonpointer" +- packages = ["."] +- pruneopts = "" +- revision = "779f45308c19820f1a69e9a4cd965f496e0da10f" +- +-[[projects]] +- branch = "master" +- digest = "1:07ac8ac445f68b0bc063d11845d479fb7e09c906ead7a8c4165b59777df09d74" +- name = "github.com/go-openapi/jsonreference" +- packages = ["."] +- pruneopts = "" +- revision = "36d33bfe519efae5632669801b180bf1a245da3b" +- +-[[projects]] +- branch = "master" +- digest = "1:c4a8c916364abeda1c5cf36684320298bbf4d87718b0b2bd9c4ca663157fdc75" +- name = "github.com/go-openapi/loads" +- packages = ["."] +- pruneopts = "" +- revision = "2a2b323bab96e6b1fdee110e57d959322446e9c9" +- +-[[projects]] +- branch = "master" +- digest = "1:1d9c762f6695e6e7ed0b4c055fa0eab7d20c2b36c935943282273d37f114e302" +- name = "github.com/go-openapi/runtime" +- packages = [ +- ".", +- "logger", +- "middleware", +- "middleware/denco", +- "middleware/header", +- "middleware/untyped", +- "security", +- ] +- pruneopts = "" +- revision = "cd9d8ed52e4b4665463cbc655500e4faa09c3c16" +- +-[[projects]] +- branch = "master" +- digest = "1:fd4008f8283b993180f0626d0c7b2f48880e9dbb6bd92a91cac7ded30dc66777" +- name = "github.com/go-openapi/spec" +- packages = ["."] +- pruneopts = "" +- revision = "1de3e0542de65ad8d75452a595886fdd0befb363" +- +-[[projects]] +- branch = "master" +- digest = "1:4ddc424130bcfbf6f782f433192ca2502a02a09e4ac55dcbecf91f22ed4e3138" +- name = "github.com/go-openapi/strfmt" +- packages = ["."] +- pruneopts = "" +- revision = "481808443b00a14745fada967cb5eeff0f9b1df2" +- +-[[projects]] +- branch = "master" +- digest = "1:366052ef634d344217d6720719c9f8e95de13a94d211f09785b0ba3c4c181b06" +- name = "github.com/go-openapi/swag" +- packages = ["."] +- pruneopts = "" +- revision = "84f4bee7c0a6db40e3166044c7983c1c32125429" +- +-[[projects]] +- branch = "master" +- digest = "1:671e25496d550c80a9d6e7e588d32b380c6b4877f113750724f69acc6ce6790f" +- name = "github.com/go-openapi/validate" +- packages = ["."] +- pruneopts = "" +- revision = "b0a3ed684d0fdd3e1eda00433382188ce8aa7169" +- +-[[projects]] +- digest = "1:024c9473f363a12918e87e7efc778091839beab514b01309a6ecd8aa336c8065" +- name = "github.com/go-redis/cache" +- packages = [ +- ".", +- "internal/lrucache", +- "internal/singleflight", +- ] +- pruneopts = "" +- revision = "c58ada1e23a3b66593f81c70572c20a0bb805a90" +- version = "v6.3.5" +- +-[[projects]] +- digest = "1:b73fabc1ff8f2417bc5cc51d3f7274d6af5300b5ad9b8606967213134c1700dc" +- name = "github.com/go-redis/redis" +- packages = [ +- ".", +- "internal", +- "internal/consistenthash", +- "internal/hashtag", +- "internal/pool", +- "internal/proto", +- "internal/util", +- ] +- pruneopts = "" +- revision = "22be8a3eaf992c828cecb69dc07348313bf08d2e" +- version = "v6.15.1" +- +-[[projects]] +- digest = "1:842c1acbacc80da775cfc0c412c4fe322c2d1b86c260db632987730d0d67a6bd" +- name = "github.com/gobuffalo/packr" +- packages = ["."] +- pruneopts = "" +- revision = "7f4074995d431987caaa35088199f13c44b24440" +- version = "v1.11.0" +- +-[[projects]] +- digest = "1:9ab1b1c637d7c8f49e39d8538a650d7eb2137b076790cff69d160823b505964c" +- name = "github.com/gobwas/glob" +- packages = [ +- ".", +- "compiler", +- "match", +- "syntax", +- "syntax/ast", +- "syntax/lexer", +- "util/runes", +- "util/strings", +- ] +- pruneopts = "" +- revision = "5ccd90ef52e1e632236f7326478d4faa74f99438" +- version = "v0.2.3" +- +-[[projects]] +- branch = "master" +- digest = "1:9a06e7365c6039daf4db9bbf79650e2933a2880982cbab8106cb74a36617f40d" +- name = "github.com/gogits/go-gogs-client" +- packages = ["."] +- pruneopts = "" +- revision = "5a05380e4bc2440e0ec12f54f6f45648dbdd5e55" +- +-[[projects]] +- digest = "1:d69d2ba23955582a64e367ff2b0808cdbd048458c178cea48f11ab8c40bd7aea" +- name = "github.com/gogo/protobuf" +- packages = [ +- "gogoproto", +- "plugin/compare", +- "plugin/defaultcheck", +- "plugin/description", +- "plugin/embedcheck", +- "plugin/enumstringer", +- "plugin/equal", +- "plugin/face", +- "plugin/gostring", +- "plugin/marshalto", +- "plugin/oneofcheck", +- "plugin/populate", +- "plugin/size", +- "plugin/stringer", +- "plugin/testgen", +- "plugin/union", +- "plugin/unmarshal", +- "proto", +- "protoc-gen-gofast", +- "protoc-gen-gogo/descriptor", +- "protoc-gen-gogo/generator", +- "protoc-gen-gogo/generator/internal/remap", +- "protoc-gen-gogo/grpc", +- "protoc-gen-gogo/plugin", +- "protoc-gen-gogofast", +- "sortkeys", +- "vanity", +- "vanity/command", +- ] +- pruneopts = "" +- revision = "5628607bb4c51c3157aacc3a50f0ab707582b805" +- version = "v1.3.1" +- +-[[projects]] +- branch = "master" +- digest = "1:107b233e45174dbab5b1324201d092ea9448e58243ab9f039e4c0f332e121e3a" +- name = "github.com/golang/glog" +- packages = ["."] +- pruneopts = "" +- revision = "23def4e6c14b4da8ac2ed8007337bc5eb5007998" +- +-[[projects]] +- digest = "1:3dd078fda7500c341bc26cfbc6c6a34614f295a2457149fc1045cab767cbcf18" +- name = "github.com/golang/protobuf" +- packages = [ +- "jsonpb", +- "proto", +- "protoc-gen-go", +- "protoc-gen-go/descriptor", +- "protoc-gen-go/generator", +- "protoc-gen-go/generator/internal/remap", +- "protoc-gen-go/grpc", +- "protoc-gen-go/plugin", +- "ptypes", +- "ptypes/any", +- "ptypes/duration", +- "ptypes/empty", +- "ptypes/struct", +- "ptypes/timestamp", +- ] +- pruneopts = "" +- revision = "aa810b61a9c79d51363740d207bb46cf8e620ed5" +- version = "v1.2.0" +- +-[[projects]] +- digest = "1:1e5b1e14524ed08301977b7b8e10c719ed853cbf3f24ecb66fae783a46f207a6" +- name = "github.com/google/btree" +- packages = ["."] +- pruneopts = "" +- revision = "4030bb1f1f0c35b30ca7009e9ebd06849dd45306" +- version = "v1.0.0" +- +-[[projects]] +- digest = "1:9fcb267c272bc5054564b392e3ff7e65e35400fd9914afb1d169f92b95e7dbc9" +- name = "github.com/google/go-cmp" +- packages = [ +- "cmp", +- "cmp/internal/diff", +- "cmp/internal/flags", +- "cmp/internal/function", +- "cmp/internal/value", +- ] +- pruneopts = "" +- revision = "2d0692c2e9617365a95b295612ac0d4415ba4627" +- version = "v0.3.1" +- +-[[projects]] +- digest = "1:14d826ee25139b4674e9768ac287a135f4e7c14e1134a5b15e4e152edfd49f41" +- name = "github.com/google/go-jsonnet" +- packages = [ +- ".", +- "ast", +- "parser", +- ] +- pruneopts = "" +- revision = "dfddf2b4e3aec377b0dcdf247ff92e7d078b8179" +- +-[[projects]] +- branch = "master" +- digest = "1:754f77e9c839b24778a4b64422236d38515301d2baeb63113aa3edc42e6af692" +- name = "github.com/google/gofuzz" +- packages = ["."] +- pruneopts = "" +- revision = "24818f796faf91cd76ec7bddd72458fbced7a6c1" +- +-[[projects]] +- branch = "master" +- digest = "1:d0899ec7c2f61fd5e4ccba7dbefe72e366a3ecce23ecdb982c768fa1d38812fb" +- name = "github.com/google/shlex" +- packages = ["."] +- pruneopts = "" +- revision = "c34317bd91bf98fab745d77b03933cf8769299fe" +- +-[[projects]] +- digest = "1:2a131706ff80636629ab6373f2944569b8252ecc018cda8040931b05d32e3c16" +- name = "github.com/googleapis/gnostic" +- packages = [ +- "OpenAPIv2", +- "compiler", +- "extensions", +- ] +- pruneopts = "" +- revision = "ee43cbb60db7bd22502942cccbc39059117352ab" +- version = "v0.1.0" +- +-[[projects]] +- digest = "1:09aa5dd1332b93c96bde671bafb053249dc813febf7d5ca84e8f382ba255d67d" +- name = "github.com/gorilla/websocket" +- packages = ["."] +- pruneopts = "" +- revision = "66b9c49e59c6c48f0ffce28c2d8b8a5678502c6d" +- version = "v1.4.0" +- +-[[projects]] +- branch = "master" +- digest = "1:e1fd67b5695fb12f54f979606c5d650a5aa72ef242f8e71072bfd4f7b5a141a0" +- name = "github.com/gregjones/httpcache" +- packages = [ +- ".", +- "diskcache", +- ] +- pruneopts = "" +- revision = "901d90724c7919163f472a9812253fb26761123d" +- +-[[projects]] +- branch = "master" +- digest = "1:9dca8c981b8aed7448d94e78bc68a76784867a38b3036d5aabc0b32d92ffd1f4" +- name = "github.com/grpc-ecosystem/go-grpc-middleware" +- packages = [ +- ".", +- "auth", +- "logging", +- "logging/logrus", +- "logging/logrus/ctxlogrus", +- "retry", +- "tags", +- "tags/logrus", +- "util/backoffutils", +- "util/metautils", +- ] +- pruneopts = "" +- revision = "bc372cc64f55abd91995ba3f219b380ffbc59e9d" +- +-[[projects]] +- digest = "1:e24dc5ef44694848785de507f439a24e9e6d96d7b43b8cf3d6cfa857aa1e2186" +- name = "github.com/grpc-ecosystem/go-grpc-prometheus" +- packages = ["."] +- pruneopts = "" +- revision = "c225b8c3b01faf2899099b768856a9e916e5087b" +- version = "v1.2.0" +- +-[[projects]] +- digest = "1:9feb7485bc57adbcbc1e1037ca05588e9d8b0a3a1875fbf730021fc118859b75" +- name = "github.com/grpc-ecosystem/grpc-gateway" +- packages = [ +- "protoc-gen-grpc-gateway", +- "protoc-gen-grpc-gateway/descriptor", +- "protoc-gen-grpc-gateway/generator", +- "protoc-gen-grpc-gateway/gengateway", +- "protoc-gen-grpc-gateway/httprule", +- "protoc-gen-swagger", +- "protoc-gen-swagger/genswagger", +- "protoc-gen-swagger/options", +- "runtime", +- "runtime/internal", +- "utilities", +- ] +- pruneopts = "" +- revision = "07f5e79768022f9a3265235f0db4ac8c3f675fec" +- version = "v1.3.1" +- +-[[projects]] +- branch = "master" +- digest = "1:9c776d7d9c54b7ed89f119e449983c3f24c0023e75001d6092442412ebca6b94" +- name = "github.com/hashicorp/golang-lru" +- packages = [ +- ".", +- "simplelru", +- ] +- pruneopts = "" +- revision = "0fb14efe8c47ae851c0034ed7a448854d3d34cf3" +- +-[[projects]] +- digest = "1:23bc0b496ba341c6e3ba24d6358ff4a40a704d9eb5f9a3bd8e8fbd57ad869013" +- name = "github.com/imdario/mergo" +- packages = ["."] +- pruneopts = "" +- revision = "163f41321a19dd09362d4c63cc2489db2015f1f4" +- version = "0.3.2" +- +-[[projects]] +- digest = "1:6f7a8f1f3e04174c426eea1c8661ef49a6b4c63bd2e40c0ad74b5ba9051f4812" +- name = "github.com/improbable-eng/grpc-web" +- packages = ["go/grpcweb"] +- pruneopts = "" +- revision = "16092bd1d58ae1b3c2d8be1cb67e65956f945dea" +- version = "0.7.0" +- +-[[projects]] +- digest = "1:870d441fe217b8e689d7949fef6e43efbc787e50f200cb1e70dbca9204a1d6be" +- name = "github.com/inconshreveable/mousetrap" +- packages = ["."] +- pruneopts = "" +- revision = "76626ae9c91c4f2a10f34cad8ce83ea42c93bb75" +- version = "v1.0" +- +-[[projects]] +- branch = "master" +- digest = "1:95abc4eba158a39873bd4fabdee576d0ae13826b550f8b710881d80ae4093a0f" +- name = "github.com/jbenet/go-context" +- packages = ["io"] +- pruneopts = "" +- revision = "d14ea06fba99483203c19d92cfcd13ebe73135f4" +- +-[[projects]] +- digest = "1:302ad9379eb146668760df4d779a95379acab43ce5f9a28f27f3273f98232020" +- name = "github.com/jonboulle/clockwork" +- packages = ["."] +- pruneopts = "" +- revision = "2eee05ed794112d45db504eb05aa693efd2b8b09" +- version = "v0.1.0" +- +-[[projects]] +- digest = "1:31c6f3c4f1e15fcc24fcfc9f5f24603ff3963c56d6fa162116493b4025fb6acc" +- name = "github.com/json-iterator/go" +- packages = ["."] +- pruneopts = "" +- revision = "f2b4162afba35581b6d4a50d3b8f34e33c144682" +- +-[[projects]] +- branch = "master" +- digest = "1:63e7368fcf6b54804076eaec26fd9cf0c4466166b272393db4b93102e1e962df" +- name = "github.com/kballard/go-shellquote" +- packages = ["."] +- pruneopts = "" +- revision = "95032a82bc518f77982ea72343cc1ade730072f0" +- +-[[projects]] +- digest = "1:41e0bed5df4f9fd04c418bf9b6b7179b3671e416ad6175332601ca1c8dc74606" +- name = "github.com/kevinburke/ssh_config" +- packages = ["."] +- pruneopts = "" +- revision = "81db2a75821ed34e682567d48be488a1c3121088" +- version = "0.5" +- +-[[projects]] +- branch = "master" +- digest = "1:448b4a6e39e46d8740b00dc871f26d58dc39341b160e01267b7917132831a136" +- name = "github.com/konsorten/go-windows-terminal-sequences" +- packages = ["."] +- pruneopts = "" +- revision = "b729f2633dfe35f4d1d8a32385f6685610ce1cb5" +- +-[[projects]] +- branch = "master" +- digest = "1:93018a4331df9925058905133cb997aec8f54d5303f4536a23e49b5648632d06" +- name = "github.com/liggitt/tabwriter" +- packages = ["."] +- pruneopts = "" +- revision = "89fcab3d43de07060e4fd4c1547430ed57e87f24" +- +-[[projects]] +- branch = "master" +- digest = "1:ccc20cacf54eb16464dad02efa1c14fa7c0b9e124639b0d2a51dcc87b0154e4c" +- name = "github.com/mailru/easyjson" +- packages = [ +- "buffer", +- "jlexer", +- "jwriter", +- ] +- pruneopts = "" +- revision = "32fa128f234d041f196a9f3e0fea5ac9772c08e1" +- +-[[projects]] +- digest = "1:63722a4b1e1717be7b98fc686e0b30d5e7f734b9e93d7dee86293b6deab7ea28" +- name = "github.com/matttproud/golang_protobuf_extensions" +- packages = ["pbutil"] +- pruneopts = "" +- revision = "c12348ce28de40eed0136aa2b644d0ee0650e56c" +- version = "v1.0.1" +- +-[[projects]] +- digest = "1:096a8a9182648da3d00ff243b88407838902b6703fc12657f76890e08d1899bf" +- name = "github.com/mitchellh/go-homedir" +- packages = ["."] +- pruneopts = "" +- revision = "ae18d6b8b3205b561c79e8e5f69bff09736185f4" +- version = "v1.0.0" +- +-[[projects]] +- digest = "1:713b341855f1480e4baca1e7c5434e1d266441340685ecbde32d59bdc065fb3f" +- name = "github.com/mitchellh/go-wordwrap" +- packages = ["."] +- pruneopts = "" +- revision = "9e67c67572bc5dd02aef930e2b0ae3c02a4b5a5c" +- version = "v1.0.0" +- +-[[projects]] +- branch = "master" +- digest = "1:eb9117392ee8e7aa44f78e0db603f70b1050ee0ebda4bd40040befb5b218c546" +- name = "github.com/mitchellh/mapstructure" +- packages = ["."] +- pruneopts = "" +- revision = "bb74f1db0675b241733089d5a1faa5dd8b0ef57b" +- +-[[projects]] +- digest = "1:0c0ff2a89c1bb0d01887e1dac043ad7efbf3ec77482ef058ac423d13497e16fd" +- name = "github.com/modern-go/concurrent" +- packages = ["."] +- pruneopts = "" +- revision = "bacd9c7ef1dd9b15be4a9909b8ac7a4e313eec94" +- version = "1.0.3" +- +-[[projects]] +- digest = "1:e32bdbdb7c377a07a9a46378290059822efdce5c8d96fe71940d87cb4f918855" +- name = "github.com/modern-go/reflect2" +- packages = ["."] +- pruneopts = "" +- revision = "4b7aa43c6742a2c18fdef89dd197aaae7dac7ccd" +- version = "1.0.1" +- +-[[projects]] +- digest = "1:5d9b668b0b4581a978f07e7d2e3314af18eb27b3fb5d19b70185b7c575723d11" +- name = "github.com/opencontainers/go-digest" +- packages = ["."] +- pruneopts = "" +- revision = "279bed98673dd5bef374d3b6e4b09e2af76183bf" +- version = "v1.0.0-rc1" +- +-[[projects]] +- digest = "1:4c0404dc03d974acd5fcd8b8d3ce687b13bd169db032b89275e8b9d77b98ce8c" +- name = "github.com/patrickmn/go-cache" +- packages = ["."] +- pruneopts = "" +- revision = "a3647f8e31d79543b2d0f0ae2fe5c379d72cedc0" +- version = "v2.1.0" +- +-[[projects]] +- digest = "1:049b5bee78dfdc9628ee0e557219c41f683e5b06c5a5f20eaba0105ccc586689" +- name = "github.com/pelletier/go-buffruneio" +- packages = ["."] +- pruneopts = "" +- revision = "c37440a7cf42ac63b919c752ca73a85067e05992" +- version = "v0.2.0" +- +-[[projects]] +- branch = "master" +- digest = "1:5f0faa008e8ff4221b55a1a5057c8b02cb2fd68da6a65c9e31c82b72cbc836d0" +- name = "github.com/petar/GoLLRB" +- packages = ["llrb"] +- pruneopts = "" +- revision = "33fb24c13b99c46c93183c291836c573ac382536" +- +-[[projects]] +- digest = "1:4709c61d984ef9ba99b037b047546d8a576ae984fb49486e48d99658aa750cd5" +- name = "github.com/peterbourgon/diskv" +- packages = ["."] +- pruneopts = "" +- revision = "0be1b92a6df0e4f5cb0a5d15fb7f643d0ad93ce6" +- version = "v3.0.0" +- +-[[projects]] +- digest = "1:7365acd48986e205ccb8652cc746f09c8b7876030d53710ea6ef7d0bd0dcd7ca" +- name = "github.com/pkg/errors" +- packages = ["."] +- pruneopts = "" +- revision = "645ef00459ed84a119197bfb8d8205042c6df63d" +- version = "v0.8.0" +- +-[[projects]] +- digest = "1:256484dbbcd271f9ecebc6795b2df8cad4c458dd0f5fd82a8c2fa0c29f233411" +- name = "github.com/pmezard/go-difflib" +- packages = ["difflib"] +- pruneopts = "" +- revision = "792786c7400a136282c1664665ae0a8db921c6c2" +- version = "v1.0.0" +- +-[[projects]] +- branch = "master" +- digest = "1:90daff4630a8cf2fa207dbd3ccaed0e860936ead1851a473019674e6b5993a13" +- name = "github.com/pquerna/cachecontrol" +- packages = [ +- ".", +- "cacheobject", +- ] +- pruneopts = "" +- revision = "525d0eb5f91d30e3b1548de401b7ef9ea6898520" +- +-[[projects]] +- digest = "1:9d34d575593e3dd27bbd119138ba009ef1535a0df2aad7259e1dd5aed7405eea" +- name = "github.com/prometheus/client_golang" +- packages = [ +- "prometheus", +- "prometheus/internal", +- "prometheus/promhttp", +- ] +- pruneopts = "" +- revision = "7858729281ec582767b20e0d696b6041d995d5e0" +- +-[[projects]] +- branch = "master" +- digest = "1:185cf55b1f44a1bf243558901c3f06efa5c64ba62cfdcbb1bf7bbe8c3fb68561" +- name = "github.com/prometheus/client_model" +- packages = ["go"] +- pruneopts = "" +- revision = "5c3871d89910bfb32f5fcab2aa4b9ec68e65a99f" +- +-[[projects]] +- branch = "master" +- digest = "1:f477ef7b65d94fb17574fc6548cef0c99a69c1634ea3b6da248b63a61ebe0498" +- name = "github.com/prometheus/common" +- packages = [ +- "expfmt", +- "internal/bitbucket.org/ww/goautoneg", +- "model", +- ] +- pruneopts = "" +- revision = "c7de2306084e37d54b8be01f3541a8464345e9a5" +- +-[[projects]] +- branch = "master" +- digest = "1:e04aaa0e8f8da0ed3d6c0700bd77eda52a47f38510063209d72d62f0ef807d5e" +- name = "github.com/prometheus/procfs" +- packages = [ +- ".", +- "internal/util", +- "nfs", +- "xfs", +- ] +- pruneopts = "" +- revision = "05ee40e3a273f7245e8777337fc7b46e533a9a92" +- +-[[projects]] +- digest = "1:6bb048133650d1fb7fbff9fb3c35bd5c7e8653fc95c3bae6df94cd17d1580278" +- name = "github.com/robfig/cron" +- packages = ["."] +- pruneopts = "" +- revision = "45fbe1491cdd47d74d1bf1396286d67faee8b8b5" +- version = "v3.0.0" +- +-[[projects]] +- digest = "1:5f47c69f85311c4dc292be6cc995a0a3fe8337a6ce38ef4f71e5b7efd5ad42e0" +- name = "github.com/rs/cors" +- packages = ["."] +- pruneopts = "" +- revision = "9a47f48565a795472d43519dd49aac781f3034fb" +- version = "v1.6.0" +- +-[[projects]] +- digest = "1:2761e287c811d0948d47d0252b82281eca3801eb3c9d5f9530956643d5b9f430" +- name = "github.com/russross/blackfriday" +- packages = ["."] +- pruneopts = "" +- revision = "05f3235734ad95d0016f6a23902f06461fcf567a" +- version = "v1.5.2" +- +-[[projects]] +- digest = "1:3962f553b77bf6c03fc07cd687a22dd3b00fe11aa14d31194f5505f5bb65cdc8" +- name = "github.com/sergi/go-diff" +- packages = ["diffmatchpatch"] +- pruneopts = "" +- revision = "1744e2970ca51c86172c8190fadad617561ed6e7" +- version = "v1.0.0" +- +-[[projects]] +- digest = "1:01d968ff6535945510c944983eee024e81f1c949043e9bbfe5ab206ebc3588a4" +- name = "github.com/sirupsen/logrus" +- packages = [ +- ".", +- "hooks/test", +- ] +- pruneopts = "" +- revision = "a67f783a3814b8729bd2dac5780b5f78f8dbd64d" +- version = "v1.1.0" +- +-[[projects]] +- branch = "master" +- digest = "1:50b5be512f924d289f20e8b2aef8951d98b9bd8c44666cf169514906df597a4c" +- name = "github.com/skratchdot/open-golang" +- packages = ["open"] +- pruneopts = "" +- revision = "75fb7ed4208cf72d323d7d02fd1a5964a7a9073c" +- +-[[projects]] +- digest = "1:022a4e2a8c327eb46a99088a51c0dda5d5be86928ace2afd72145dc1d746a323" +- name = "github.com/soheilhy/cmux" +- packages = ["."] +- pruneopts = "" +- revision = "e09e9389d85d8492d313d73d1469c029e710623f" +- version = "v0.1.4" +- +-[[projects]] +- digest = "1:0c63b3c7ad6d825a898f28cb854252a3b29d37700c68a117a977263f5ec94efe" +- name = "github.com/spf13/cobra" +- packages = ["."] +- pruneopts = "" +- revision = "0.0.5" +- +-[[projects]] +- digest = "1:8e243c568f36b09031ec18dff5f7d2769dcf5ca4d624ea511c8e3197dc3d352d" +- name = "github.com/spf13/pflag" +- packages = ["."] +- pruneopts = "" +- revision = "583c0c0531f06d5278b7d917446061adc344b5cd" +- version = "v1.0.1" +- +-[[projects]] +- digest = "1:b1861b9a1aa0801b0b62945ed7477c1ab61a4bd03b55dfbc27f6d4f378110c8c" +- name = "github.com/src-d/gcfg" +- packages = [ +- ".", +- "scanner", +- "token", +- "types", +- ] +- pruneopts = "" +- revision = "f187355171c936ac84a82793659ebb4936bc1c23" +- version = "v1.3.0" +- +-[[projects]] +- digest = "1:306417ea2f31ea733df356a2b895de63776b6a5107085b33458e5cd6eb1d584d" +- name = "github.com/stretchr/objx" +- packages = ["."] +- pruneopts = "" +- revision = "facf9a85c22f48d2f52f2380e4efce1768749a89" +- version = "v0.1" +- +-[[projects]] +- digest = "1:c587772fb8ad29ad4db67575dad25ba17a51f072ff18a22b4f0257a4d9c24f75" +- name = "github.com/stretchr/testify" +- packages = [ +- "assert", +- "mock", +- ] +- pruneopts = "" +- revision = "f35b8ab0b5a2cef36673838d662e249dd9c94686" +- version = "v1.2.2" +- +-[[projects]] +- digest = "1:51cf0fca93f4866709ceaf01b750e51d997c299a7bd2edf7ccd79e3b428754ae" +- name = "github.com/vmihailenco/msgpack" +- packages = [ +- ".", +- "codes", +- ] +- pruneopts = "" +- revision = "a053f3dac71df214bfe8b367f34220f0029c9c02" +- version = "v3.3.1" +- +-[[projects]] +- digest = "1:afc0b8068986a01e2d8f449917829753a54f6bd4d1265c2b4ad9cba75560020f" +- name = "github.com/xanzy/ssh-agent" +- packages = ["."] +- pruneopts = "" +- revision = "640f0ab560aeb89d523bb6ac322b1244d5c3796c" +- version = "v0.2.0" +- +-[[projects]] +- branch = "master" +- digest = "1:3cf699a0df65293cc8fd2339606950d3e2f6d02a435703951d1da411a23f7cef" +- name = "github.com/yudai/gojsondiff" +- packages = [ +- ".", +- "formatter", +- ] +- pruneopts = "" +- revision = "0525c875b75ca60b9e67ddc44496aa16f21066b0" +- +-[[projects]] +- branch = "master" +- digest = "1:9857bb2293f372b2181004d8b62179bbdb4ab0982ec6f762abe6cf2bfedaff85" +- name = "github.com/yudai/golcs" +- packages = ["."] +- pruneopts = "" +- revision = "ecda9a501e8220fae3b4b600c3db4b0ba22cfc68" +- +-[[projects]] +- branch = "master" +- digest = "1:525776d99293affd2c61dfb573007ff9f22863068c20c220ef3f58620758c341" +- name = "github.com/yuin/gopher-lua" +- packages = [ +- ".", +- "ast", +- "parse", +- "pm", +- ] +- pruneopts = "" +- revision = "732aa6820ec4fb93d60c4057dd574c33db8ad4e7" +- +-[[projects]] +- branch = "master" +- digest = "1:2ea6df0f542cc95a5e374e9cdd81eaa599ed0d55366eef92d2f6b9efa2795c07" +- name = "golang.org/x/crypto" +- packages = [ +- "bcrypt", +- "blowfish", +- "cast5", +- "curve25519", +- "ed25519", +- "ed25519/internal/edwards25519", +- "internal/chacha20", +- "openpgp", +- "openpgp/armor", +- "openpgp/elgamal", +- "openpgp/errors", +- "openpgp/packet", +- "openpgp/s2k", +- "poly1305", +- "ssh", +- "ssh/agent", +- "ssh/knownhosts", +- "ssh/terminal", +- ] +- pruneopts = "" +- revision = "432090b8f568c018896cd8a0fb0345872bbac6ce" +- +-[[projects]] +- branch = "master" +- digest = "1:b4ba046df563f56fe42b6270b20039107a37e1ab47c97aa47a16f848aa5b6d9a" +- name = "golang.org/x/net" +- packages = [ +- "context", +- "context/ctxhttp", +- "http2", +- "http2/hpack", +- "idna", +- "internal/timeseries", +- "lex/httplex", +- "trace", +- ] +- pruneopts = "" +- revision = "cbe0f9307d0156177f9dd5dc85da1a31abc5f2fb" +- +-[[projects]] +- digest = "1:8a58c605e58272e3d280181a24749b07499cf98968da6f7c1d19c8d5649c6b1b" +- name = "golang.org/x/oauth2" +- packages = [ +- ".", +- "google", +- "internal", +- "jws", +- "jwt", +- ] +- pruneopts = "" +- revision = "cce311a261e6fcf29de72ca96827bdb0b7d9c9e6" +- +-[[projects]] +- branch = "master" +- digest = "1:b2ea75de0ccb2db2ac79356407f8a4cd8f798fe15d41b381c00abf3ae8e55ed1" +- name = "golang.org/x/sync" +- packages = [ +- "errgroup", +- "semaphore", +- ] +- pruneopts = "" +- revision = "1d60e4601c6fd243af51cc01ddf169918a5407ca" +- +-[[projects]] +- branch = "master" +- digest = "1:ed900376500543ca05f2a2383e1f541b4606f19cd22f34acb81b17a0b90c7f3e" +- name = "golang.org/x/sys" +- packages = [ +- "unix", +- "windows", +- ] +- pruneopts = "" +- revision = "d0be0721c37eeb5299f245a996a483160fc36940" +- +-[[projects]] +- branch = "master" +- digest = "1:31985a0ed491dba5ba7fe92e18be008acd92ca9435ed9b35b06f3e6c00fd82cb" +- name = "golang.org/x/text" +- packages = [ +- "collate", +- "collate/build", +- "encoding", +- "encoding/internal", +- "encoding/internal/identifier", +- "encoding/unicode", +- "internal/colltab", +- "internal/gen", +- "internal/tag", +- "internal/triegen", +- "internal/ucd", +- "internal/utf8internal", +- "language", +- "runes", +- "secure/bidirule", +- "transform", +- "unicode/bidi", +- "unicode/cldr", +- "unicode/norm", +- "unicode/rangetable", +- "width", +- ] +- pruneopts = "" +- revision = "4e4a3210bb54bb31f6ab2cdca2edcc0b50c420c1" +- +-[[projects]] +- branch = "master" +- digest = "1:55a681cb66f28755765fa5fa5104cbd8dc85c55c02d206f9f89566451e3fe1aa" +- name = "golang.org/x/time" +- packages = ["rate"] +- pruneopts = "" +- revision = "fbb02b2291d28baffd63558aa44b4b56f178d650" +- +-[[projects]] +- branch = "master" +- digest = "1:77e1d6ed91936b206979806b0aacbf817ec54b840803d8f8cd7a1de5bfbf92a4" +- name = "golang.org/x/tools" +- packages = [ +- "go/ast/astutil", +- "imports", +- ] +- pruneopts = "" +- revision = "5e776fee60db37e560cee3fb46db699d2f095386" +- +-[[projects]] +- branch = "master" +- digest = "1:e9e4b928898842a138bc345d42aae33741baa6d64f3ca69b0931f9c7a4fd0437" +- name = "gonum.org/v1/gonum" +- packages = [ +- "blas", +- "blas/blas64", +- "blas/cblas128", +- "blas/gonum", +- "floats", +- "graph", +- "graph/internal/linear", +- "graph/internal/ordered", +- "graph/internal/set", +- "graph/internal/uid", +- "graph/iterator", +- "graph/simple", +- "graph/topo", +- "graph/traverse", +- "internal/asm/c128", +- "internal/asm/c64", +- "internal/asm/f32", +- "internal/asm/f64", +- "internal/cmplx64", +- "internal/math32", +- "lapack", +- "lapack/gonum", +- "lapack/lapack64", +- "mat", +- ] +- pruneopts = "" +- revision = "90b7154515874cee6c33cf56b29e257403a09a69" +- +-[[projects]] +- digest = "1:934fb8966f303ede63aa405e2c8d7f0a427a05ea8df335dfdc1833dd4d40756f" +- name = "google.golang.org/appengine" +- packages = [ +- ".", +- "datastore", +- "internal", +- "internal/app_identity", +- "internal/base", +- "internal/datastore", +- "internal/log", +- "internal/modules", +- "internal/remote_api", +- "internal/urlfetch", +- "urlfetch", +- ] +- pruneopts = "" +- revision = "150dc57a1b433e64154302bdc40b6bb8aefa313a" +- version = "v1.0.0" +- +-[[projects]] +- branch = "master" +- digest = "1:2d833b53e432cd69645da559b822661ebc5c0a13c571dee1c1f80fb1a0241330" +- name = "google.golang.org/genproto" +- packages = [ +- "googleapis/api/annotations", +- "googleapis/rpc/status", +- ] +- pruneopts = "" +- revision = "2b5a72b8730b0b16380010cfe5286c42108d88e7" +- +-[[projects]] +- digest = "1:15656947b87a6a240e61dcfae9e71a55a8d5677f240d12ab48f02cdbabf1e309" +- name = "google.golang.org/grpc" +- packages = [ +- ".", +- "balancer", +- "balancer/base", +- "balancer/roundrobin", +- "codes", +- "connectivity", +- "credentials", +- "encoding", +- "encoding/proto", +- "grpclog", +- "internal", +- "internal/backoff", +- "internal/channelz", +- "internal/envconfig", +- "internal/grpcrand", +- "internal/transport", +- "keepalive", +- "metadata", +- "naming", +- "peer", +- "reflection", +- "reflection/grpc_reflection_v1alpha", +- "resolver", +- "resolver/dns", +- "resolver/passthrough", +- "stats", +- "status", +- "tap", +- ] +- pruneopts = "" +- revision = "8dea3dc473e90c8179e519d91302d0597c0ca1d1" +- version = "v1.15.0" +- +-[[projects]] +- digest = "1:adf5b0ae3467c3182757ecb86fbfe819939473bb870a42789dc1a3e7729397cd" +- name = "gopkg.in/go-playground/webhooks.v5" +- packages = [ +- "bitbucket", +- "bitbucket-server", +- "github", +- "gitlab", +- "gogs", +- ] +- pruneopts = "" +- revision = "175186584584a83966dc9a7b8ec6c3d3a4ce6110" +- version = "v5.11.0" +- +-[[projects]] +- digest = "1:e5d1fb981765b6f7513f793a3fcaac7158408cca77f75f7311ac82cc88e9c445" +- name = "gopkg.in/inf.v0" +- packages = ["."] +- pruneopts = "" +- revision = "3887ee99ecf07df5b447e9b00d9c0b2adaa9f3e4" +- version = "v0.9.0" +- +-[[projects]] +- branch = "v2" +- digest = "1:c80894778314c7fb90d94a5ab925214900e1341afeddc953cda7398b8cdcd006" +- name = "gopkg.in/mgo.v2" +- packages = [ +- "bson", +- "internal/json", +- ] +- pruneopts = "" +- revision = "3f83fa5005286a7fe593b055f0d7771a7dce4655" +- +-[[projects]] +- digest = "1:de0ec5755ee1a5e61f079c8855cf2073b5a5f614ae3b51db65f2c4e1044455fd" +- name = "gopkg.in/square/go-jose.v2" +- packages = [ +- ".", +- "cipher", +- "json", +- ] +- pruneopts = "" +- revision = "76dd09796242edb5b897103a75df2645c028c960" +- version = "v2.1.6" +- +-[[projects]] +- digest = "1:c8f3ff1edaf7208bf7633e5952ffb8d697552343f8010aee12427400b434ae63" +- name = "gopkg.in/src-d/go-billy.v4" +- packages = [ +- ".", +- "helper/chroot", +- "helper/polyfill", +- "osfs", +- "util", +- ] +- pruneopts = "" +- revision = "59952543636f55de3f860b477b615093d5c2c3e4" +- version = "v4.2.1" +- +-[[projects]] +- digest = "1:a72d911e18578e34367f4b849340501c7e6a2787a3a05651b3d53c6cb96990f4" +- name = "gopkg.in/src-d/go-git.v4" +- packages = [ +- ".", +- "config", +- "internal/revision", +- "plumbing", +- "plumbing/cache", +- "plumbing/filemode", +- "plumbing/format/config", +- "plumbing/format/diff", +- "plumbing/format/gitignore", +- "plumbing/format/idxfile", +- "plumbing/format/index", +- "plumbing/format/objfile", +- "plumbing/format/packfile", +- "plumbing/format/pktline", +- "plumbing/object", +- "plumbing/protocol/packp", +- "plumbing/protocol/packp/capability", +- "plumbing/protocol/packp/sideband", +- "plumbing/revlist", +- "plumbing/storer", +- "plumbing/transport", +- "plumbing/transport/client", +- "plumbing/transport/file", +- "plumbing/transport/git", +- "plumbing/transport/http", +- "plumbing/transport/internal/common", +- "plumbing/transport/server", +- "plumbing/transport/ssh", +- "storage", +- "storage/filesystem", +- "storage/filesystem/dotgit", +- "storage/memory", +- "utils/binary", +- "utils/diff", +- "utils/ioutil", +- "utils/merkletrie", +- "utils/merkletrie/filesystem", +- "utils/merkletrie/index", +- "utils/merkletrie/internal/frame", +- "utils/merkletrie/noder", +- ] +- pruneopts = "" +- revision = "a1f6ef44dfed1253ef7f3bc049f66b15f8fc2ab2" +- version = "v4.9.1" +- +-[[projects]] +- digest = "1:ceec7e96590fb8168f36df4795fefe17051d4b0c2acc7ec4e260d8138c4dafac" +- name = "gopkg.in/warnings.v0" +- packages = ["."] +- pruneopts = "" +- revision = "ec4a0fea49c7b46c2aeb0b51aac55779c607e52b" +- version = "v0.1.2" +- +-[[projects]] +- digest = "1:cedccf16b71e86db87a24f8d4c70b0a855872eb967cb906a66b95de56aefbd0d" +- name = "gopkg.in/yaml.v2" +- packages = ["."] +- pruneopts = "" +- revision = "51d6538a90f86fe93ac480b35f37b2be17fef232" +- version = "v2.2.2" +- +-[[projects]] +- branch = "release-1.16" +- digest = "1:5e5cfbab57ea5444c1eb295a39fdc403f097f5ace592c829db7b3e0e3ea66903" +- name = "k8s.io/api" +- packages = [ +- "admission/v1", +- "admission/v1beta1", +- "admissionregistration/v1", +- "admissionregistration/v1beta1", +- "apps/v1", +- "apps/v1beta1", +- "apps/v1beta2", +- "auditregistration/v1alpha1", +- "authentication/v1", +- "authentication/v1beta1", +- "authorization/v1", +- "authorization/v1beta1", +- "autoscaling/v1", +- "autoscaling/v2beta1", +- "autoscaling/v2beta2", +- "batch/v1", +- "batch/v1beta1", +- "batch/v2alpha1", +- "certificates/v1beta1", +- "coordination/v1", +- "coordination/v1beta1", +- "core/v1", +- "discovery/v1alpha1", +- "events/v1beta1", +- "extensions/v1beta1", +- "imagepolicy/v1alpha1", +- "networking/v1", +- "networking/v1beta1", +- "node/v1alpha1", +- "node/v1beta1", +- "policy/v1beta1", +- "rbac/v1", +- "rbac/v1alpha1", +- "rbac/v1beta1", +- "scheduling/v1", +- "scheduling/v1alpha1", +- "scheduling/v1beta1", +- "settings/v1alpha1", +- "storage/v1", +- "storage/v1alpha1", +- "storage/v1beta1", +- ] +- pruneopts = "" +- revision = "195af9ec35214c6d98662c5791364285bf2e2cf2" +- +-[[projects]] +- branch = "release-1.16" +- digest = "1:7f29d62c07c68767171cf2ed8598e0cb862b99584bb8beb93189e2ed00ac520e" +- name = "k8s.io/apiextensions-apiserver" +- packages = [ +- "pkg/apis/apiextensions", +- "pkg/apis/apiextensions/v1", +- "pkg/apis/apiextensions/v1beta1", +- "pkg/client/clientset/clientset", +- "pkg/client/clientset/clientset/scheme", +- "pkg/client/clientset/clientset/typed/apiextensions/v1", +- "pkg/client/clientset/clientset/typed/apiextensions/v1beta1", +- "pkg/features", +- ] +- pruneopts = "" +- revision = "07afe84a85e43cf2503133660c424a0b594b21db" +- +-[[projects]] +- branch = "release-1.16" +- digest = "1:36db89a45a8cb3d565f7ebfd67dafd42c9c0bbb80d6bbd4991629b39b02a4c64" +- name = "k8s.io/apimachinery" +- packages = [ +- "pkg/api/equality", +- "pkg/api/errors", +- "pkg/api/meta", +- "pkg/api/resource", +- "pkg/api/validation", +- "pkg/api/validation/path", +- "pkg/apis/meta/internalversion", +- "pkg/apis/meta/v1", +- "pkg/apis/meta/v1/unstructured", +- "pkg/apis/meta/v1/unstructured/unstructuredscheme", +- "pkg/apis/meta/v1/validation", +- "pkg/apis/meta/v1beta1", +- "pkg/conversion", +- "pkg/conversion/queryparams", +- "pkg/fields", +- "pkg/labels", +- "pkg/runtime", +- "pkg/runtime/schema", +- "pkg/runtime/serializer", +- "pkg/runtime/serializer/json", +- "pkg/runtime/serializer/protobuf", +- "pkg/runtime/serializer/recognizer", +- "pkg/runtime/serializer/streaming", +- "pkg/runtime/serializer/versioning", +- "pkg/selection", +- "pkg/types", +- "pkg/util/cache", +- "pkg/util/clock", +- "pkg/util/diff", +- "pkg/util/duration", +- "pkg/util/errors", +- "pkg/util/framer", +- "pkg/util/httpstream", +- "pkg/util/httpstream/spdy", +- "pkg/util/intstr", +- "pkg/util/json", +- "pkg/util/jsonmergepatch", +- "pkg/util/mergepatch", +- "pkg/util/naming", +- "pkg/util/net", +- "pkg/util/remotecommand", +- "pkg/util/runtime", +- "pkg/util/sets", +- "pkg/util/strategicpatch", +- "pkg/util/validation", +- "pkg/util/validation/field", +- "pkg/util/wait", +- "pkg/util/yaml", +- "pkg/version", +- "pkg/watch", +- "third_party/forked/golang/json", +- "third_party/forked/golang/netutil", +- "third_party/forked/golang/reflect", +- ] +- pruneopts = "" +- revision = "72ed19daf4bb788ae595ae4103c404cb0fa09c84" +- +-[[projects]] +- branch = "release-1.16" +- digest = "1:4e236f3f94cfc5f005ceb143948ad39a4b2ad10373f394b232838f797bddd6ef" +- name = "k8s.io/apiserver" +- packages = [ +- "pkg/apis/audit", +- "pkg/authentication/serviceaccount", +- "pkg/authentication/user", +- "pkg/endpoints/request", +- "pkg/features", +- "pkg/util/feature", +- ] +- pruneopts = "" +- revision = "ebfe712c1fff40c4800d779470515e6025eda218" +- +-[[projects]] +- branch = "release-1.16" +- digest = "1:b46a88b317c3187b6fa7c5351eca48b35aad182eee371168677747430ff955bb" +- name = "k8s.io/cli-runtime" +- packages = [ +- "pkg/genericclioptions", +- "pkg/kustomize", +- "pkg/kustomize/k8sdeps", +- "pkg/kustomize/k8sdeps/configmapandsecret", +- "pkg/kustomize/k8sdeps/kunstruct", +- "pkg/kustomize/k8sdeps/kv", +- "pkg/kustomize/k8sdeps/transformer", +- "pkg/kustomize/k8sdeps/transformer/hash", +- "pkg/kustomize/k8sdeps/transformer/patch", +- "pkg/kustomize/k8sdeps/validator", +- "pkg/printers", +- "pkg/resource", +- ] +- pruneopts = "" +- revision = "6bff60de437070d7e8644b7a930837d5de512240" +- +-[[projects]] +- branch = "release-13.0" +- digest = "1:84f90f6a3b5b16f2c57164c5281d302b2647da8f77aa9cb14d5ebeb17fccc25e" +- name = "k8s.io/client-go" +- packages = [ +- "discovery", +- "discovery/cached/disk", +- "discovery/fake", +- "dynamic", +- "dynamic/fake", +- "informers/core/v1", +- "informers/internalinterfaces", +- "kubernetes", +- "kubernetes/fake", +- "kubernetes/scheme", +- "kubernetes/typed/admissionregistration/v1", +- "kubernetes/typed/admissionregistration/v1/fake", +- "kubernetes/typed/admissionregistration/v1beta1", +- "kubernetes/typed/admissionregistration/v1beta1/fake", +- "kubernetes/typed/apps/v1", +- "kubernetes/typed/apps/v1/fake", +- "kubernetes/typed/apps/v1beta1", +- "kubernetes/typed/apps/v1beta1/fake", +- "kubernetes/typed/apps/v1beta2", +- "kubernetes/typed/apps/v1beta2/fake", +- "kubernetes/typed/auditregistration/v1alpha1", +- "kubernetes/typed/auditregistration/v1alpha1/fake", +- "kubernetes/typed/authentication/v1", +- "kubernetes/typed/authentication/v1/fake", +- "kubernetes/typed/authentication/v1beta1", +- "kubernetes/typed/authentication/v1beta1/fake", +- "kubernetes/typed/authorization/v1", +- "kubernetes/typed/authorization/v1/fake", +- "kubernetes/typed/authorization/v1beta1", +- "kubernetes/typed/authorization/v1beta1/fake", +- "kubernetes/typed/autoscaling/v1", +- "kubernetes/typed/autoscaling/v1/fake", +- "kubernetes/typed/autoscaling/v2beta1", +- "kubernetes/typed/autoscaling/v2beta1/fake", +- "kubernetes/typed/autoscaling/v2beta2", +- "kubernetes/typed/autoscaling/v2beta2/fake", +- "kubernetes/typed/batch/v1", +- "kubernetes/typed/batch/v1/fake", +- "kubernetes/typed/batch/v1beta1", +- "kubernetes/typed/batch/v1beta1/fake", +- "kubernetes/typed/batch/v2alpha1", +- "kubernetes/typed/batch/v2alpha1/fake", +- "kubernetes/typed/certificates/v1beta1", +- "kubernetes/typed/certificates/v1beta1/fake", +- "kubernetes/typed/coordination/v1", +- "kubernetes/typed/coordination/v1/fake", +- "kubernetes/typed/coordination/v1beta1", +- "kubernetes/typed/coordination/v1beta1/fake", +- "kubernetes/typed/core/v1", +- "kubernetes/typed/core/v1/fake", +- "kubernetes/typed/discovery/v1alpha1", +- "kubernetes/typed/discovery/v1alpha1/fake", +- "kubernetes/typed/events/v1beta1", +- "kubernetes/typed/events/v1beta1/fake", +- "kubernetes/typed/extensions/v1beta1", +- "kubernetes/typed/extensions/v1beta1/fake", +- "kubernetes/typed/networking/v1", +- "kubernetes/typed/networking/v1/fake", +- "kubernetes/typed/networking/v1beta1", +- "kubernetes/typed/networking/v1beta1/fake", +- "kubernetes/typed/node/v1alpha1", +- "kubernetes/typed/node/v1alpha1/fake", +- "kubernetes/typed/node/v1beta1", +- "kubernetes/typed/node/v1beta1/fake", +- "kubernetes/typed/policy/v1beta1", +- "kubernetes/typed/policy/v1beta1/fake", +- "kubernetes/typed/rbac/v1", +- "kubernetes/typed/rbac/v1/fake", +- "kubernetes/typed/rbac/v1alpha1", +- "kubernetes/typed/rbac/v1alpha1/fake", +- "kubernetes/typed/rbac/v1beta1", +- "kubernetes/typed/rbac/v1beta1/fake", +- "kubernetes/typed/scheduling/v1", +- "kubernetes/typed/scheduling/v1/fake", +- "kubernetes/typed/scheduling/v1alpha1", +- "kubernetes/typed/scheduling/v1alpha1/fake", +- "kubernetes/typed/scheduling/v1beta1", +- "kubernetes/typed/scheduling/v1beta1/fake", +- "kubernetes/typed/settings/v1alpha1", +- "kubernetes/typed/settings/v1alpha1/fake", +- "kubernetes/typed/storage/v1", +- "kubernetes/typed/storage/v1/fake", +- "kubernetes/typed/storage/v1alpha1", +- "kubernetes/typed/storage/v1alpha1/fake", +- "kubernetes/typed/storage/v1beta1", +- "kubernetes/typed/storage/v1beta1/fake", +- "listers/core/v1", +- "pkg/apis/clientauthentication", +- "pkg/apis/clientauthentication/v1alpha1", +- "pkg/apis/clientauthentication/v1beta1", +- "pkg/version", +- "plugin/pkg/client/auth/exec", +- "plugin/pkg/client/auth/gcp", +- "plugin/pkg/client/auth/oidc", +- "rest", +- "rest/watch", +- "restmapper", +- "scale", +- "scale/scheme", +- "scale/scheme/appsint", +- "scale/scheme/appsv1beta1", +- "scale/scheme/appsv1beta2", +- "scale/scheme/autoscalingv1", +- "scale/scheme/extensionsint", +- "scale/scheme/extensionsv1beta1", +- "testing", +- "third_party/forked/golang/template", +- "tools/auth", +- "tools/cache", +- "tools/clientcmd", +- "tools/clientcmd/api", +- "tools/clientcmd/api/latest", +- "tools/clientcmd/api/v1", +- "tools/metrics", +- "tools/pager", +- "tools/portforward", +- "tools/reference", +- "tools/remotecommand", +- "tools/watch", +- "transport", +- "transport/spdy", +- "util/cert", +- "util/connrotation", +- "util/exec", +- "util/flowcontrol", +- "util/homedir", +- "util/jsonpath", +- "util/keyutil", +- "util/retry", +- "util/workqueue", +- ] +- pruneopts = "" +- revision = "85029d69edeae82e97dd1a0de3b24668cee9a15d" +- +-[[projects]] +- branch = "release-1.16" +- digest = "1:254da4cb69b3776686b730a206e081e6f8898bb64760619d1895c25c407e718f" +- name = "k8s.io/code-generator" +- packages = [ +- "cmd/go-to-protobuf", +- "cmd/go-to-protobuf/protobuf", +- "pkg/util", +- "third_party/forked/golang/reflect", +- ] +- pruneopts = "" +- revision = "8e001e5d18949be7e823ccb9cfe9b60026e7bda0" +- +-[[projects]] +- branch = "master" +- digest = "1:06c18e328063f3612dfda3c4c5e5b8becda1eabceca689335c8d98704dffe70a" +- name = "k8s.io/component-base" +- packages = ["featuregate"] +- pruneopts = "" +- revision = "435ce712a6949916fa293dc4d3d49429962043d8" +- +-[[projects]] +- branch = "master" +- digest = "1:6a2a63e09a59caff3fd2d36d69b7b92c2fe7cf783390f0b7349fb330820f9a8e" +- name = "k8s.io/gengo" +- packages = [ +- "args", +- "examples/set-gen/sets", +- "generator", +- "namer", +- "parser", +- "types", +- ] +- pruneopts = "" +- revision = "e17681d19d3ac4837a019ece36c2a0ec31ffe985" +- +-[[projects]] +- digest = "1:9eaf86f4f6fb4a8f177220d488ef1e3255d06a691cca95f14ef085d4cd1cef3c" +- name = "k8s.io/klog" +- packages = ["."] +- pruneopts = "" +- revision = "d98d8acdac006fb39831f1b25640813fef9c314f" +- version = "v0.3.3" +- +-[[projects]] +- branch = "master" +- digest = "1:0d737d598e9db0a38d6ef6cba514c358b9fe7e1bc6b1128d02b2622700c75f2a" +- name = "k8s.io/kube-aggregator" +- packages = [ +- "pkg/apis/apiregistration", +- "pkg/apis/apiregistration/v1", +- "pkg/apis/apiregistration/v1beta1", +- ] +- pruneopts = "" +- revision = "e80910364765199a4baebd4dec54c885fe52b680" +- +-[[projects]] +- digest = "1:16a343bd9d820ae320de4d1eaa8acc7a214aac4b38fb21d03255d3a457d861df" +- name = "k8s.io/kube-openapi" +- packages = [ +- "cmd/openapi-gen", +- "cmd/openapi-gen/args", +- "pkg/common", +- "pkg/generators", +- "pkg/generators/rules", +- "pkg/util/proto", +- "pkg/util/proto/validation", +- "pkg/util/sets", +- ] +- pruneopts = "" +- revision = "30be4d16710ac61bce31eb28a01054596fe6a9f1" +- +-[[projects]] +- branch = "release-1.16" +- digest = "1:687af22932f9b53ff2e6755b2eefe160f076d522794abb980f0ddb187bcefacd" +- name = "k8s.io/kubectl" +- packages = [ +- "pkg/cmd/apply", +- "pkg/cmd/delete", +- "pkg/cmd/util", +- "pkg/cmd/util/editor", +- "pkg/cmd/util/editor/crlf", +- "pkg/cmd/wait", +- "pkg/describe", +- "pkg/describe/versioned", +- "pkg/generated", +- "pkg/rawhttp", +- "pkg/scheme", +- "pkg/util", +- "pkg/util/certificate", +- "pkg/util/deployment", +- "pkg/util/event", +- "pkg/util/fieldpath", +- "pkg/util/i18n", +- "pkg/util/interrupt", +- "pkg/util/openapi", +- "pkg/util/openapi/validation", +- "pkg/util/printers", +- "pkg/util/qos", +- "pkg/util/rbac", +- "pkg/util/resource", +- "pkg/util/slice", +- "pkg/util/storage", +- "pkg/util/templates", +- "pkg/util/term", +- "pkg/validation", +- "pkg/version", +- ] +- pruneopts = "" +- revision = "14647fd13a8b4cffc5a8f327b0018e037f72e4e8" +- +-[[projects]] +- branch = "release-1.16" +- digest = "1:02241e5570c239d31e52955b1a8e6d603a35fd6542d14e98882fb6c3c4ef3d56" +- name = "k8s.io/kubernetes" +- packages = [ +- "pkg/api/legacyscheme", +- "pkg/api/v1/pod", +- "pkg/apis/apps", +- "pkg/apis/apps/install", +- "pkg/apis/apps/v1", +- "pkg/apis/apps/v1beta1", +- "pkg/apis/apps/v1beta2", +- "pkg/apis/authentication", +- "pkg/apis/authentication/install", +- "pkg/apis/authentication/v1", +- "pkg/apis/authentication/v1beta1", +- "pkg/apis/authorization", +- "pkg/apis/authorization/install", +- "pkg/apis/authorization/v1", +- "pkg/apis/authorization/v1beta1", +- "pkg/apis/autoscaling", +- "pkg/apis/autoscaling/install", +- "pkg/apis/autoscaling/v1", +- "pkg/apis/autoscaling/v2beta1", +- "pkg/apis/autoscaling/v2beta2", +- "pkg/apis/batch", +- "pkg/apis/batch/install", +- "pkg/apis/batch/v1", +- "pkg/apis/batch/v1beta1", +- "pkg/apis/batch/v2alpha1", +- "pkg/apis/certificates", +- "pkg/apis/certificates/install", +- "pkg/apis/certificates/v1beta1", +- "pkg/apis/coordination", +- "pkg/apis/coordination/install", +- "pkg/apis/coordination/v1", +- "pkg/apis/coordination/v1beta1", +- "pkg/apis/core", +- "pkg/apis/core/install", +- "pkg/apis/core/v1", +- "pkg/apis/events", +- "pkg/apis/events/install", +- "pkg/apis/events/v1beta1", +- "pkg/apis/extensions", +- "pkg/apis/extensions/install", +- "pkg/apis/extensions/v1beta1", +- "pkg/apis/networking", +- "pkg/apis/policy", +- "pkg/apis/policy/install", +- "pkg/apis/policy/v1beta1", +- "pkg/apis/rbac", +- "pkg/apis/rbac/install", +- "pkg/apis/rbac/v1", +- "pkg/apis/rbac/v1alpha1", +- "pkg/apis/rbac/v1beta1", +- "pkg/apis/scheduling", +- "pkg/apis/scheduling/install", +- "pkg/apis/scheduling/v1", +- "pkg/apis/scheduling/v1alpha1", +- "pkg/apis/scheduling/v1beta1", +- "pkg/apis/settings", +- "pkg/apis/settings/install", +- "pkg/apis/settings/v1alpha1", +- "pkg/apis/storage", +- "pkg/apis/storage/install", +- "pkg/apis/storage/v1", +- "pkg/apis/storage/v1alpha1", +- "pkg/apis/storage/v1beta1", +- "pkg/features", +- "pkg/kubectl/cmd/auth", +- "pkg/registry/rbac/reconciliation", +- "pkg/registry/rbac/validation", +- "pkg/util/node", +- "pkg/util/parsers", +- "pkg/util/slice", +- "pkg/util/workqueue/prometheus", +- ] +- pruneopts = "" +- revision = "bfafae8f1c2fdf3c3cfef04674db028531a7c098" +- +-[[projects]] +- branch = "master" +- digest = "1:a8a2e6bbef691323b833d0eb11bb0e570e7eb9619ac76f7b11265530e1cac922" +- name = "k8s.io/utils" +- packages = [ +- "buffer", +- "exec", +- "integer", +- "net", +- "pointer", +- "trace", +- ] +- pruneopts = "" +- revision = "6ca3b61696b65b0e81f1a39b4937fc2d2994ed6a" +- +-[[projects]] +- branch = "master" +- digest = "1:9b9f12f4c13ca4a4f4b4554c00ba46cb2910ff4079825d96d520b03c447e6da5" +- name = "layeh.com/gopher-json" +- packages = ["."] +- pruneopts = "" +- revision = "97fed8db84274c421dbfffbb28ec859901556b97" +- +-[[projects]] +- digest = "1:0b2daace3dcced8712072529b621360cf520f3c2ead92d755f35a0ec8dca2714" +- name = "sigs.k8s.io/kustomize" +- packages = [ +- "pkg/commands/build", +- "pkg/constants", +- "pkg/expansion", +- "pkg/factory", +- "pkg/fs", +- "pkg/git", +- "pkg/gvk", +- "pkg/ifc", +- "pkg/ifc/transformer", +- "pkg/image", +- "pkg/internal/error", +- "pkg/loader", +- "pkg/patch", +- "pkg/patch/transformer", +- "pkg/resid", +- "pkg/resmap", +- "pkg/resource", +- "pkg/target", +- "pkg/transformers", +- "pkg/transformers/config", +- "pkg/transformers/config/defaultconfig", +- "pkg/types", +- ] +- pruneopts = "" +- revision = "a6f65144121d1955266b0cd836ce954c04122dc8" +- version = "v2.0.3" +- +-[[projects]] +- digest = "1:321081b4a44256715f2b68411d8eda9a17f17ebfe6f0cc61d2cc52d11c08acfa" +- name = "sigs.k8s.io/yaml" +- packages = ["."] +- pruneopts = "" +- revision = "fd68e9863619f6ec2fdd8625fe1f02e7c877e480" +- version = "v1.1.0" +- +-[solve-meta] +- analyzer-name = "dep" +- analyzer-version = 1 +- input-imports = [ +- "bou.ke/monkey", +- "github.com/Masterminds/semver", +- "github.com/TomOnTime/utfutil", +- "github.com/argoproj/pkg/errors", +- "github.com/argoproj/pkg/exec", +- "github.com/argoproj/pkg/time", +- "github.com/casbin/casbin", +- "github.com/casbin/casbin/model", +- "github.com/coreos/go-oidc", +- "github.com/dgrijalva/jwt-go", +- "github.com/dustin/go-humanize", +- "github.com/evanphx/json-patch", +- "github.com/ghodss/yaml", +- "github.com/go-openapi/loads", +- "github.com/go-openapi/runtime/middleware", +- "github.com/go-openapi/spec", +- "github.com/go-redis/cache", +- "github.com/go-redis/redis", +- "github.com/gobuffalo/packr", +- "github.com/gobwas/glob", +- "github.com/gogits/go-gogs-client", +- "github.com/gogo/protobuf/gogoproto", +- "github.com/gogo/protobuf/proto", +- "github.com/gogo/protobuf/protoc-gen-gofast", +- "github.com/gogo/protobuf/protoc-gen-gogofast", +- "github.com/gogo/protobuf/sortkeys", +- "github.com/golang/protobuf/proto", +- "github.com/golang/protobuf/protoc-gen-go", +- "github.com/golang/protobuf/ptypes/empty", +- "github.com/google/go-jsonnet", +- "github.com/google/shlex", +- "github.com/grpc-ecosystem/go-grpc-middleware", +- "github.com/grpc-ecosystem/go-grpc-middleware/auth", +- "github.com/grpc-ecosystem/go-grpc-middleware/logging", +- "github.com/grpc-ecosystem/go-grpc-middleware/logging/logrus", +- "github.com/grpc-ecosystem/go-grpc-middleware/retry", +- "github.com/grpc-ecosystem/go-grpc-middleware/tags/logrus", +- "github.com/grpc-ecosystem/go-grpc-prometheus", +- "github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway", +- "github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger", +- "github.com/grpc-ecosystem/grpc-gateway/runtime", +- "github.com/grpc-ecosystem/grpc-gateway/utilities", +- "github.com/improbable-eng/grpc-web/go/grpcweb", +- "github.com/kballard/go-shellquote", +- "github.com/patrickmn/go-cache", +- "github.com/pkg/errors", +- "github.com/prometheus/client_golang/prometheus", +- "github.com/prometheus/client_golang/prometheus/promhttp", +- "github.com/robfig/cron", +- "github.com/sirupsen/logrus", +- "github.com/sirupsen/logrus/hooks/test", +- "github.com/skratchdot/open-golang/open", +- "github.com/soheilhy/cmux", +- "github.com/spf13/cobra", +- "github.com/spf13/pflag", +- "github.com/stretchr/testify/assert", +- "github.com/stretchr/testify/mock", +- "github.com/vmihailenco/msgpack", +- "github.com/yudai/gojsondiff", +- "github.com/yudai/gojsondiff/formatter", +- "github.com/yuin/gopher-lua", +- "golang.org/x/crypto/bcrypt", +- "golang.org/x/crypto/ssh", +- "golang.org/x/crypto/ssh/knownhosts", +- "golang.org/x/crypto/ssh/terminal", +- "golang.org/x/net/context", +- "golang.org/x/oauth2", +- "golang.org/x/sync/errgroup", +- "golang.org/x/sync/semaphore", +- "google.golang.org/genproto/googleapis/api/annotations", +- "google.golang.org/grpc", +- "google.golang.org/grpc/codes", +- "google.golang.org/grpc/credentials", +- "google.golang.org/grpc/grpclog", +- "google.golang.org/grpc/metadata", +- "google.golang.org/grpc/reflection", +- "google.golang.org/grpc/status", +- "gopkg.in/go-playground/webhooks.v5/bitbucket", +- "gopkg.in/go-playground/webhooks.v5/bitbucket-server", +- "gopkg.in/go-playground/webhooks.v5/github", +- "gopkg.in/go-playground/webhooks.v5/gitlab", +- "gopkg.in/go-playground/webhooks.v5/gogs", +- "gopkg.in/src-d/go-git.v4", +- "gopkg.in/src-d/go-git.v4/config", +- "gopkg.in/src-d/go-git.v4/plumbing", +- "gopkg.in/src-d/go-git.v4/plumbing/transport", +- "gopkg.in/src-d/go-git.v4/plumbing/transport/client", +- "gopkg.in/src-d/go-git.v4/plumbing/transport/http", +- "gopkg.in/src-d/go-git.v4/plumbing/transport/ssh", +- "gopkg.in/src-d/go-git.v4/storage/memory", +- "gopkg.in/src-d/go-git.v4/utils/ioutil", +- "gopkg.in/yaml.v2", +- "k8s.io/api/apps/v1", +- "k8s.io/api/batch/v1", +- "k8s.io/api/core/v1", +- "k8s.io/api/extensions/v1beta1", +- "k8s.io/api/networking/v1beta1", +- "k8s.io/api/rbac/v1", +- "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1", +- "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset", +- "k8s.io/apimachinery/pkg/api/equality", +- "k8s.io/apimachinery/pkg/api/errors", +- "k8s.io/apimachinery/pkg/apis/meta/v1", +- "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured", +- "k8s.io/apimachinery/pkg/fields", +- "k8s.io/apimachinery/pkg/labels", +- "k8s.io/apimachinery/pkg/runtime", +- "k8s.io/apimachinery/pkg/runtime/schema", +- "k8s.io/apimachinery/pkg/runtime/serializer", +- "k8s.io/apimachinery/pkg/selection", +- "k8s.io/apimachinery/pkg/types", +- "k8s.io/apimachinery/pkg/util/intstr", +- "k8s.io/apimachinery/pkg/util/jsonmergepatch", +- "k8s.io/apimachinery/pkg/util/runtime", +- "k8s.io/apimachinery/pkg/util/strategicpatch", +- "k8s.io/apimachinery/pkg/util/wait", +- "k8s.io/apimachinery/pkg/watch", +- "k8s.io/cli-runtime/pkg/genericclioptions", +- "k8s.io/cli-runtime/pkg/printers", +- "k8s.io/client-go/discovery", +- "k8s.io/client-go/discovery/fake", +- "k8s.io/client-go/dynamic", +- "k8s.io/client-go/dynamic/fake", +- "k8s.io/client-go/informers/core/v1", +- "k8s.io/client-go/kubernetes", +- "k8s.io/client-go/kubernetes/fake", +- "k8s.io/client-go/kubernetes/scheme", +- "k8s.io/client-go/listers/core/v1", +- "k8s.io/client-go/plugin/pkg/client/auth/gcp", +- "k8s.io/client-go/plugin/pkg/client/auth/oidc", +- "k8s.io/client-go/rest", +- "k8s.io/client-go/testing", +- "k8s.io/client-go/tools/cache", +- "k8s.io/client-go/tools/clientcmd", +- "k8s.io/client-go/tools/clientcmd/api", +- "k8s.io/client-go/tools/portforward", +- "k8s.io/client-go/transport/spdy", +- "k8s.io/client-go/util/flowcontrol", +- "k8s.io/client-go/util/workqueue", +- "k8s.io/code-generator/cmd/go-to-protobuf", +- "k8s.io/klog", +- "k8s.io/kube-aggregator/pkg/apis/apiregistration/v1", +- "k8s.io/kube-aggregator/pkg/apis/apiregistration/v1beta1", +- "k8s.io/kube-openapi/cmd/openapi-gen", +- "k8s.io/kube-openapi/pkg/common", +- "k8s.io/kubectl/pkg/cmd/apply", +- "k8s.io/kubectl/pkg/cmd/util", +- "k8s.io/kubectl/pkg/scheme", +- "k8s.io/kubectl/pkg/util/term", +- "k8s.io/kubernetes/pkg/api/legacyscheme", +- "k8s.io/kubernetes/pkg/api/v1/pod", +- "k8s.io/kubernetes/pkg/apis/apps/install", +- "k8s.io/kubernetes/pkg/apis/authentication/install", +- "k8s.io/kubernetes/pkg/apis/authorization/install", +- "k8s.io/kubernetes/pkg/apis/autoscaling/install", +- "k8s.io/kubernetes/pkg/apis/batch/install", +- "k8s.io/kubernetes/pkg/apis/certificates/install", +- "k8s.io/kubernetes/pkg/apis/coordination/install", +- "k8s.io/kubernetes/pkg/apis/core", +- "k8s.io/kubernetes/pkg/apis/core/install", +- "k8s.io/kubernetes/pkg/apis/events/install", +- "k8s.io/kubernetes/pkg/apis/extensions/install", +- "k8s.io/kubernetes/pkg/apis/policy/install", +- "k8s.io/kubernetes/pkg/apis/rbac/install", +- "k8s.io/kubernetes/pkg/apis/scheduling/install", +- "k8s.io/kubernetes/pkg/apis/settings/install", +- "k8s.io/kubernetes/pkg/apis/storage/install", +- "k8s.io/kubernetes/pkg/kubectl/cmd/auth", +- "k8s.io/kubernetes/pkg/util/node", +- "k8s.io/kubernetes/pkg/util/slice", +- "k8s.io/kubernetes/pkg/util/workqueue/prometheus", +- "k8s.io/utils/pointer", +- "layeh.com/gopher-json", +- ] +- solver-name = "gps-cdcl" +- solver-version = 1 +diff --git a/Gopkg.toml b/Gopkg.toml +deleted file mode 100644 +index 2fa04ee4..00000000 +--- a/Gopkg.toml ++++ /dev/null +@@ -1,117 +0,0 @@ +-# Packages should only be added to the following list when we use them *outside* of our go code. +-# (e.g. we want to build the binary to invoke as part of the build process, such as in +-# generate-proto.sh). Normal use of golang packages should be added via `dep ensure`, and pinned +-# with a [[constraint]] or [[override]] when version is important. +-required = [ +- "github.com/golang/protobuf/protoc-gen-go", +- "github.com/gogo/protobuf/protoc-gen-gofast", +- "github.com/gogo/protobuf/protoc-gen-gogofast", +- "k8s.io/code-generator/cmd/go-to-protobuf", +- "k8s.io/kube-openapi/cmd/openapi-gen", +- "github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway", +- "github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger", +- "golang.org/x/sync/errgroup", +-] +- +-[[constraint]] +- name = "google.golang.org/grpc" +- version = "1.15.0" +- +-[[constraint]] +- name = "github.com/gogo/protobuf" +- version = "1.3.1" +- +-# override github.com/grpc-ecosystem/go-grpc-middleware's constraint on master +-[[override]] +- name = "github.com/golang/protobuf" +- version = "1.2.0" +- +-[[constraint]] +- name = "github.com/grpc-ecosystem/grpc-gateway" +- version = "v1.3.1" +- +-# prometheus does not believe in semversioning yet +-[[constraint]] +- name = "github.com/prometheus/client_golang" +- revision = "7858729281ec582767b20e0d696b6041d995d5e0" +- +-[[override]] +- branch = "release-1.16" +- name = "k8s.io/api" +- +-[[override]] +- branch = "release-1.16" +- name = "k8s.io/kubernetes" +- +-[[override]] +- branch = "release-1.16" +- name = "k8s.io/code-generator" +- +-[[override]] +- branch = "release-1.16" +- name = "k8s.io/apimachinery" +- +-[[override]] +- branch = "release-1.16" +- name = "k8s.io/apiextensions-apiserver" +- +-[[override]] +- branch = "release-1.16" +- name = "k8s.io/apiserver" +- +-[[override]] +- branch = "release-1.16" +- name = "k8s.io/kubectl" +- +-[[override]] +- branch = "release-1.16" +- name = "k8s.io/cli-runtime" +- +-[[override]] +- version = "2.0.3" +- name = "sigs.k8s.io/kustomize" +- +-# ASCIIRenderer does not implement blackfriday.Renderer +-[[override]] +- name = "github.com/russross/blackfriday" +- version = "1.5.2" +- +-[[override]] +- branch = "release-13.0" +- name = "k8s.io/client-go" +- +-[[override]] +- name = "github.com/casbin/casbin" +- version = "1.9.1" +- +-[[constraint]] +- name = "github.com/stretchr/testify" +- version = "1.2.2" +- +-[[constraint]] +- name = "github.com/gobuffalo/packr" +- version = "v1.11.0" +- +-[[constraint]] +- branch = "master" +- name = "github.com/argoproj/pkg" +- +-[[constraint]] +- branch = "master" +- name = "github.com/yudai/gojsondiff" +- +-# Fixes: Could not introduce sigs.k8s.io/kustomize@v2.0.3, as it has a dependency on github.com/spf13/cobra with constraint ^0.0.2, which has no overlap with existing constraint 0.0.5 from (root) +-[[override]] +- name = "github.com/spf13/cobra" +- revision = "0.0.5" +- +-# TODO: move off of k8s.io/kube-openapi and use controller-tools for CRD spec generation +-# (override argoproj/argo contraint on master) +-[[override]] +- revision = "30be4d16710ac61bce31eb28a01054596fe6a9f1" +- name = "k8s.io/kube-openapi" +- +-# jsonpatch replace operation does not apply: doc is missing key: /metadata/annotations +-[[override]] +- name = "github.com/evanphx/json-patch" +- version = "v4.1.0" +diff --git a/go.mod b/go.mod +new file mode 100644 +index 00000000..2e741ab3 +--- /dev/null ++++ b/go.mod +@@ -0,0 +1,114 @@ ++module github.com/argoproj/argo-cd ++ ++go 1.12 ++ ++require ( ++ bou.ke/monkey v1.0.1 ++ github.com/Masterminds/semver v1.4.2 ++ github.com/TomOnTime/utfutil v0.0.0-20180511104225-09c41003ee1d ++ github.com/argoproj/pkg v0.0.0-20191031223000-02a6aac40ac4 ++ github.com/casbin/casbin v1.9.1 ++ github.com/chai2010/gettext-go v0.0.0-20170215093142-bf70f2a70fb1 // indirect ++ github.com/coreos/go-oidc v2.1.0+incompatible ++ github.com/dgrijalva/jwt-go v3.2.0+incompatible ++ github.com/docker/docker v1.6.0-rc5 // indirect ++ github.com/docker/spdystream v0.0.0-20181023171402-6480d4af844c // indirect ++ github.com/dustin/go-humanize v1.0.0 ++ github.com/evanphx/json-patch v4.5.0+incompatible ++ github.com/ghodss/yaml v1.0.0 ++ github.com/go-openapi/loads v0.19.2 ++ github.com/go-openapi/runtime v0.19.0 ++ github.com/go-openapi/spec v0.19.2 ++ github.com/go-redis/cache v6.3.5+incompatible ++ github.com/go-redis/redis v6.15.1+incompatible ++ github.com/gobuffalo/packr v1.11.0 ++ github.com/gobwas/glob v0.2.3 ++ github.com/gogits/go-gogs-client v0.0.0-20190616193657-5a05380e4bc2 ++ github.com/gogo/protobuf v1.3.1 ++ github.com/golang/protobuf v1.3.1 ++ github.com/google/btree v1.0.0 // indirect ++ github.com/google/go-cmp v0.3.1 // indirect ++ github.com/google/go-jsonnet v0.10.0 ++ github.com/google/shlex v0.0.0-20181106134648-c34317bd91bf ++ github.com/googleapis/gnostic v0.1.0 // indirect ++ github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 // indirect ++ github.com/grpc-ecosystem/go-grpc-middleware v0.0.0-20190222133341-cfaf5686ec79 ++ github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 ++ github.com/grpc-ecosystem/grpc-gateway v1.3.1 ++ github.com/improbable-eng/grpc-web v0.0.0-20181111100011-16092bd1d58a ++ github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88 // indirect ++ github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 ++ github.com/malexdev/utfutil v0.0.0-20180510171754-00c8d4a8e7a8 // indirect ++ github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f // indirect ++ github.com/patrickmn/go-cache v2.1.0+incompatible ++ github.com/pkg/errors v0.8.1 ++ github.com/pquerna/cachecontrol v0.0.0-20180306154005-525d0eb5f91d // indirect ++ github.com/prometheus/client_golang v0.9.2 ++ github.com/robfig/cron v1.1.0 ++ github.com/rs/cors v1.6.0 // indirect ++ github.com/sirupsen/logrus v1.4.2 ++ github.com/skratchdot/open-golang v0.0.0-20160302144031-75fb7ed4208c ++ github.com/soheilhy/cmux v0.1.4 ++ github.com/spf13/cobra v0.0.5 ++ github.com/spf13/pflag v1.0.5 ++ github.com/stretchr/testify v1.3.0 ++ github.com/vmihailenco/msgpack v3.3.1+incompatible ++ github.com/yudai/gojsondiff v0.0.0-20180504020246-0525c875b75c ++ github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82 // indirect ++ github.com/yudai/pp v2.0.1+incompatible // indirect ++ github.com/yuin/gopher-lua v0.0.0-20190115140932-732aa6820ec4 ++ golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586 ++ golang.org/x/net v0.0.0-20191004110552-13f9640d40b9 ++ golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 ++ golang.org/x/sync v0.0.0-20190423024810-112230192c58 ++ google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873 ++ google.golang.org/grpc v1.23.0 ++ gopkg.in/go-playground/webhooks.v5 v5.11.0 ++ gopkg.in/src-d/go-git.v4 v4.9.1 ++ gopkg.in/yaml.v2 v2.2.8 ++ k8s.io/api v0.0.0 ++ k8s.io/apiextensions-apiserver v0.0.0 ++ k8s.io/apimachinery v0.16.5-beta.1 ++ k8s.io/cli-runtime v0.0.0 ++ k8s.io/client-go v0.0.0 ++ k8s.io/klog v1.0.0 ++ k8s.io/kube-aggregator v0.0.0 ++ k8s.io/kube-openapi v0.0.0-20191107075043-30be4d16710a ++ k8s.io/kubectl v0.0.0 ++ k8s.io/kubernetes v0.0.0-20191207011953-bfafae8f1c2f ++ k8s.io/utils v0.0.0-20191114200735-6ca3b61696b6 ++ layeh.com/gopher-json v0.0.0-20190114024228-97fed8db8427 ++) ++ ++replace ( ++ k8s.io/api => k8s.io/api v0.0.0-20200131112707-d64dbec685a4 ++ k8s.io/apiextensions-apiserver => k8s.io/apiextensions-apiserver v0.0.0-20200208193839-84fe3c0be50e ++ k8s.io/apimachinery => k8s.io/apimachinery v0.16.7-beta.0.0.20200131112342-0c9ec93240c9 ++ k8s.io/apiserver => k8s.io/apiserver v0.0.0-20200208192130-2d005a048922 ++ k8s.io/cli-runtime => k8s.io/cli-runtime v0.0.0-20200131120220-9674fbb91442 ++ k8s.io/client-go => k8s.io/client-go v0.0.0-20191016111102-bec269661e48 ++ k8s.io/cloud-provider => k8s.io/cloud-provider v0.0.0-20200131203752-f498d522efeb ++ k8s.io/cluster-bootstrap => k8s.io/cluster-bootstrap v0.0.0-20200131121422-fc6110069b18 ++ k8s.io/code-generator => k8s.io/code-generator v0.16.7-beta.0.0.20200131112027-a3045e5e55c0 ++ k8s.io/component-base => k8s.io/component-base v0.0.0-20200131113804-409d4deb41dd ++ k8s.io/cri-api => k8s.io/cri-api v0.16.8-beta.0 ++ k8s.io/csi-translation-lib => k8s.io/csi-translation-lib v0.0.0-20200131121824-f033562d74c3 ++ k8s.io/gengo => k8s.io/gengo v0.0.0-20190822140433-26a664648505 ++ k8s.io/heapster => k8s.io/heapster v1.2.0-beta.1 ++ k8s.io/klog => k8s.io/klog v0.4.0 ++ k8s.io/kube-aggregator => k8s.io/kube-aggregator v0.0.0-20200208192621-0eeb50407007 ++ k8s.io/kube-controller-manager => k8s.io/kube-controller-manager v0.0.0-20200131121224-13b3f231e47d ++ k8s.io/kube-openapi => k8s.io/kube-openapi v0.0.0-20190816220812-743ec37842bf ++ k8s.io/kube-proxy => k8s.io/kube-proxy v0.0.0-20200131120626-5b8ba5e54e1f ++ k8s.io/kube-scheduler => k8s.io/kube-scheduler v0.0.0-20200131121024-5f0ba0866863 ++ k8s.io/kubectl => k8s.io/kubectl v0.0.0-20200131122652-b28c9fbca10f ++ k8s.io/kubelet => k8s.io/kubelet v0.0.0-20200131120825-905bd8eea4c4 ++ k8s.io/legacy-cloud-providers => k8s.io/legacy-cloud-providers v0.0.0-20200208200602-3a1c7effd2b3 ++ k8s.io/metrics => k8s.io/metrics v0.0.0-20200131120008-5c623d74062d ++ k8s.io/node-api => k8s.io/node-api v0.0.0-20200131122255-04077c800298 ++ k8s.io/repo-infra => k8s.io/repo-infra v0.0.0-20181204233714-00fe14e3d1a3 ++ k8s.io/sample-apiserver => k8s.io/sample-apiserver v0.0.0-20200208192953-f8dc80bbc173 ++ k8s.io/sample-cli-plugin => k8s.io/sample-cli-plugin v0.0.0-20200131120425-dca0863cb511 ++ k8s.io/sample-controller => k8s.io/sample-controller v0.0.0-20200131115407-2b45fb79af22 ++ k8s.io/utils => k8s.io/utils v0.0.0-20190801114015-581e00157fb1 ++) +diff --git a/go.sum b/go.sum +new file mode 100644 +index 00000000..3d39244f +--- /dev/null ++++ b/go.sum +@@ -0,0 +1,700 @@ ++bitbucket.org/bertimus9/systemstat v0.0.0-20180207000608-0eeff89b0690/go.mod h1:Ulb78X89vxKYgdL24HMTiXYHlyHEvruOj1ZPlqeNEZM= ++bou.ke/monkey v1.0.1 h1:zEMLInw9xvNakzUUPjfS4Ds6jYPqCFx3m7bRmG5NH2U= ++bou.ke/monkey v1.0.1/go.mod h1:FgHuK96Rv2Nlf+0u1OOVDpCMdsWyOFmeeketDHE7LIg= ++cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= ++cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= ++cloud.google.com/go v0.38.0 h1:ROfEUZz+Gh5pa62DJWXSaonyu3StP6EA6lPEXPI6mCo= ++cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= ++github.com/Azure/azure-sdk-for-go v32.5.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= ++github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= ++github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI= ++github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0= ++github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA= ++github.com/Azure/go-autorest/autorest/mocks v0.1.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= ++github.com/Azure/go-autorest/autorest/mocks v0.2.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= ++github.com/Azure/go-autorest/autorest/to v0.2.0/go.mod h1:GunWKJp1AEqgMaGLV+iocmRAJWqST1wQYhyyjXJ3SJc= ++github.com/Azure/go-autorest/autorest/validation v0.1.0/go.mod h1:Ha3z/SqBeaalWQvokg3NZAlQTalVMtOIAs1aGK7G6u8= ++github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc= ++github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk= ++github.com/BurntSushi/toml v0.3.0/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= ++github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= ++github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= ++github.com/GoogleCloudPlatform/k8s-cloud-provider v0.0.0-20190822182118-27a4ced34534/go.mod h1:iroGtC8B3tQiqtds1l+mgk/BBOrxbqjH+eUfFQYRc14= ++github.com/JeffAshton/win_pdh v0.0.0-20161109143554-76bb4ee9f0ab/go.mod h1:3VYc5hodBMJ5+l/7J4xAyMeuM2PNuepvHlGs8yilUCA= ++github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible h1:1G1pk05UrOh0NlF1oeaaix1x8XzrfjIDK47TY0Zehcw= ++github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= ++github.com/MakeNowJust/heredoc v0.0.0-20170808103936-bb23615498cd h1:sjQovDkwrZp8u+gxLtPgKGjk5hCxuy2hrRejBTA9xFU= ++github.com/MakeNowJust/heredoc v0.0.0-20170808103936-bb23615498cd/go.mod h1:64YHyfSL2R96J44Nlwm39UHepQbyR5q10x7iYa1ks2E= ++github.com/Masterminds/semver v1.4.2 h1:WBLTQ37jOCzSLtXNdoo8bNM8876KhNqOKvrlGITgsTc= ++github.com/Masterminds/semver v1.4.2/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= ++github.com/Microsoft/go-winio v0.4.11/go.mod h1:VhR8bwka0BXejwEJY73c50VrPtXAaKcyvVC4A4RozmA= ++github.com/Microsoft/hcsshim v0.0.0-20190417211021-672e52e9209d/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg= ++github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= ++github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= ++github.com/PuerkitoBio/purell v1.1.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= ++github.com/PuerkitoBio/purell v1.1.1 h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tNFfI= ++github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= ++github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= ++github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 h1:d+Bc7a5rLufV/sSk/8dngufqelfh6jnri85riMAaF/M= ++github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= ++github.com/Rican7/retry v0.1.0/go.mod h1:FgOROf8P5bebcC1DS0PdOQiqGUridaZvikzUmkFW6gg= ++github.com/TomOnTime/utfutil v0.0.0-20180511104225-09c41003ee1d h1:WtAMR0fPCOfK7TPGZ8ZpLLY18HRvL7XJ3xcs0wnREgo= ++github.com/TomOnTime/utfutil v0.0.0-20180511104225-09c41003ee1d/go.mod h1:WML6KOYjeU8N6YyusMjj2qRvaPNUEvrQvaxuFcMRFJY= ++github.com/alcortesm/tgz v0.0.0-20161220082320-9c5fe88206d7 h1:uSoVVbwJiQipAclBbw+8quDsfcvFjOpI5iCf4p/cqCs= ++github.com/alcortesm/tgz v0.0.0-20161220082320-9c5fe88206d7/go.mod h1:6zEj6s6u/ghQa61ZWa/C2Aw3RkjiTBOix7dkqa1VLIs= ++github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239 h1:kFOfPq6dUM1hTo4JG6LR5AXSUEsOjtdm0kw0FtQtMJA= ++github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= ++github.com/argoproj/pkg v0.0.0-20191031223000-02a6aac40ac4 h1:ykGEoo3WuCNoqO+rnaa0j/RdYfXZFp5Aqim+CjzdBaQ= ++github.com/argoproj/pkg v0.0.0-20191031223000-02a6aac40ac4/go.mod h1:2EZ44RG/CcgtPTwrRR0apOc7oU6UIw8GjCUJWZ8X3bM= ++github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= ++github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= ++github.com/asaskevich/govalidator v0.0.0-20180720115003-f9ffefc3facf/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= ++github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a h1:idn718Q4B6AGu/h5Sxe66HYVdqdGu2l9Iebqhi/AEoA= ++github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= ++github.com/auth0/go-jwt-middleware v0.0.0-20170425171159-5493cabe49f7/go.mod h1:LWMyo4iOLWXHGdBki7NIht1kHru/0wM179h+d3g8ATM= ++github.com/aws/aws-sdk-go v1.16.26/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= ++github.com/bazelbuild/bazel-gazelle v0.0.0-20181012220611-c728ce9f663e/go.mod h1:uHBSeeATKpVazAACZBDPL/Nk/UhQDDsJWDlqYJo8/Us= ++github.com/bazelbuild/buildtools v0.0.0-20180226164855-80c7f0d45d7e/go.mod h1:5JP0TXzWDHXv8qvxRC4InIazwdyDseBDbzESUMKk1yU= ++github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973 h1:xJ4a3vCFaGF/jqvzLMYoU8P317H5OQ+Via4RmuPwCS0= ++github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= ++github.com/bifurcation/mint v0.0.0-20180715133206-93c51c6ce115/go.mod h1:zVt7zX3K/aDCk9Tj+VM7YymsX66ERvzCJzw8rFCX2JU= ++github.com/blang/semver v3.5.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= ++github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps= ++github.com/caddyserver/caddy v1.0.3/go.mod h1:G+ouvOY32gENkJC+jhgl62TyhvqEsFaDiZ4uw0RzP1E= ++github.com/casbin/casbin v1.9.1 h1:ucjbS5zTrmSLtH4XogqOG920Poe6QatdXtz1FEbApeM= ++github.com/casbin/casbin v1.9.1/go.mod h1:z8uPsfBJGUsnkagrt3G8QvjgTKFMBJ32UP8HpZllfog= ++github.com/cenkalti/backoff v2.1.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= ++github.com/cespare/prettybench v0.0.0-20150116022406-03b8cfe5406c/go.mod h1:Xe6ZsFhtM8HrDku0pxJ3/Lr51rwykrzgFwpmTzleatY= ++github.com/chai2010/gettext-go v0.0.0-20160711120539-c6fed771bfd5/go.mod h1:/iP1qXHoty45bqomnu2LM+VVyAEdWN+vtSHGlQgyxbw= ++github.com/chai2010/gettext-go v0.0.0-20170215093142-bf70f2a70fb1 h1:HD4PLRzjuCVW79mQ0/pdsalOLHJ+FaEoqJLxfltpb2U= ++github.com/chai2010/gettext-go v0.0.0-20170215093142-bf70f2a70fb1/go.mod h1:/iP1qXHoty45bqomnu2LM+VVyAEdWN+vtSHGlQgyxbw= ++github.com/checkpoint-restore/go-criu v0.0.0-20190109184317-bdb7599cd87b/go.mod h1:TrMrLQfeENAPYPRsJuq3jsqdlRh3lvi6trTZJG8+tho= ++github.com/cheekybits/genny v0.0.0-20170328200008-9127e812e1e9/go.mod h1:+tQajlRqAUrPI7DOSpB0XAqZYtQakVtB7wXkRAgjxjQ= ++github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= ++github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= ++github.com/cloudflare/cfssl v0.0.0-20180726162950-56268a613adf/go.mod h1:yMWuSON2oQp+43nFtAV/uvKQIFpSPerB57DCt9t8sSA= ++github.com/clusterhq/flocker-go v0.0.0-20160920122132-2b8b7259d313/go.mod h1:P1wt9Z3DP8O6W3rvwCt0REIlshg1InHImaLW0t3ObY0= ++github.com/codegangsta/negroni v1.0.0/go.mod h1:v0y3T5G7Y1UlFfyxFn/QLRU4a2EuNau2iZY63YTKWo0= ++github.com/container-storage-interface/spec v1.1.0/go.mod h1:6URME8mwIBbpVyZV93Ce5St17xBiQJQY67NDsuohiy4= ++github.com/containerd/console v0.0.0-20170925154832-84eeaae905fa/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= ++github.com/containerd/containerd v1.0.2/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= ++github.com/containerd/typeurl v0.0.0-20190228175220-2a93cfde8c20/go.mod h1:Cm3kwCdlkCfMSHURc+r6fwoGH6/F1hH3S4sg0rLFWPc= ++github.com/containernetworking/cni v0.7.1/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ61X79hmU3w8FmsY= ++github.com/coredns/corefile-migration v1.0.2/go.mod h1:OFwBp/Wc9dJt5cAZzHWMNhK1r5L0p0jDwIBc6j8NC8E= ++github.com/coreos/bbolt v1.3.3/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= ++github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= ++github.com/coreos/etcd v3.3.17+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= ++github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= ++github.com/coreos/go-oidc v2.1.0+incompatible h1:sdJrfw8akMnCuUlaZU3tE/uYXFgfqom8DBE9so9EBsM= ++github.com/coreos/go-oidc v2.1.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc= ++github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= ++github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= ++github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= ++github.com/coreos/go-systemd v0.0.0-20181012123002-c6f51f82210d/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= ++github.com/coreos/pkg v0.0.0-20180108230652-97fdf19511ea/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= ++github.com/coreos/rkt v1.30.0/go.mod h1:O634mlH6U7qk87poQifK6M2rsFNt+FyUTWNMnP1hF1U= ++github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= ++github.com/cyphar/filepath-securejoin v0.2.2/go.mod h1:FpkQEhXnPnOthhzymB7CGsFk2G9VLXONKD9G7QGMM+4= ++github.com/davecgh/go-spew v0.0.0-20151105211317-5215b55f46b2/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= ++github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= ++github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= ++github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= ++github.com/daviddengcn/go-colortext v0.0.0-20160507010035-511bcaf42ccd/go.mod h1:dv4zxwHi5C/8AeI+4gX4dCWOIvNi7I6JCSX0HvlKPgE= ++github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= ++github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= ++github.com/dnaeon/go-vcr v1.0.1/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E= ++github.com/docker/distribution v2.7.1+incompatible h1:a5mlkVzth6W5A4fOsS3D2EO5BUmsJpcB+cRlLU7cSug= ++github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= ++github.com/docker/docker v0.7.3-0.20190327010347-be7ac8be2ae0/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= ++github.com/docker/docker v1.6.0-rc5 h1:8dnqiCOcZf2QXwR4LNnG7AK9hXeeT6adGmtjicsVswc= ++github.com/docker/docker v1.6.0-rc5/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= ++github.com/docker/go-connections v0.3.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= ++github.com/docker/go-units v0.3.3/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= ++github.com/docker/libnetwork v0.0.0-20180830151422-a9cd636e3789/go.mod h1:93m0aTqz6z+g32wla4l4WxTrdtvBRmVzYRkYvasA5Z8= ++github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= ++github.com/docker/spdystream v0.0.0-20181023171402-6480d4af844c h1:ZfSZ3P3BedhKGUhzj7BQlPSU4OvT6tfOKe3DVHzOA7s= ++github.com/docker/spdystream v0.0.0-20181023171402-6480d4af844c/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= ++github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= ++github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= ++github.com/elazarl/goproxy v0.0.0-20170405201442-c4fc26588b6e h1:p1yVGRW3nmb85p1Sh1ZJSDm4A4iKLS5QNbvUHMgGu/M= ++github.com/elazarl/goproxy v0.0.0-20170405201442-c4fc26588b6e/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= ++github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= ++github.com/emicklei/go-restful v2.9.5+incompatible h1:spTtZBk5DYEvbxMVutUuTyh1Ao2r4iyvLdACqsl/Ljk= ++github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= ++github.com/emirpasic/gods v1.9.0 h1:rUF4PuzEjMChMiNsVjdI+SyLu7rEqpQ5reNFnhC7oFo= ++github.com/emirpasic/gods v1.9.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o= ++github.com/euank/go-kmsg-parser v2.0.0+incompatible/go.mod h1:MhmAMZ8V4CYH4ybgdRwPr2TU5ThnS43puaKEMpja1uw= ++github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= ++github.com/evanphx/json-patch v4.5.0+incompatible h1:ouOWdg56aJriqS0huScTkVXPC5IcNrDCXZ6OoTAWu7M= ++github.com/evanphx/json-patch v4.5.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= ++github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d h1:105gxyaGwCFad8crR9dcMQWvV9Hvulu6hwUh4tWPJnM= ++github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d/go.mod h1:ZZMPRZwes7CROmyNKgQzC3XPs6L/G2EJLHddWejkmf4= ++github.com/fatih/camelcase v1.0.0 h1:hxNvNX/xYBp0ovncs8WyWZrOrpBNub/JfaMvbURyft8= ++github.com/fatih/camelcase v1.0.0/go.mod h1:yN2Sb0lFhZJUdVvtELVWefmrXpuZESvPmqwoZc+/fpc= ++github.com/fatih/color v1.6.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= ++github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568 h1:BHsljHzVlRcyQhjrss6TZTdY2VfCqZPbv5k3iBFa2ZQ= ++github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= ++github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= ++github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= ++github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= ++github.com/ghodss/yaml v0.0.0-20180820084758-c7ce16629ff4/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= ++github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= ++github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= ++github.com/gliderlabs/ssh v0.1.1 h1:j3L6gSLQalDETeEg/Jg0mGY0/y/N6zI2xX1978P0Uqw= ++github.com/gliderlabs/ssh v0.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= ++github.com/globalsign/mgo v0.0.0-20180905125535-1ca0a4f7cbcb/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= ++github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8 h1:DujepqpGd1hyOd7aW59XpK7Qymp8iy83xq74fLr21is= ++github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= ++github.com/go-acme/lego v2.5.0+incompatible/go.mod h1:yzMNe9CasVUhkquNvti5nAtPmG94USbYxYrZfTkIn0M= ++github.com/go-bindata/go-bindata v3.1.1+incompatible/go.mod h1:xK8Dsgwmeed+BBsSy2XTopBn/8uK2HWuGSnA11C3Joo= ++github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= ++github.com/go-openapi/analysis v0.0.0-20180825180245-b006789cd277/go.mod h1:k70tL6pCuVxPJOHXQ+wIac1FUrvNkHolPie/cLEU6hI= ++github.com/go-openapi/analysis v0.17.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= ++github.com/go-openapi/analysis v0.18.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= ++github.com/go-openapi/analysis v0.19.2 h1:ophLETFestFZHk3ji7niPEL4d466QjW+0Tdg5VyDq7E= ++github.com/go-openapi/analysis v0.19.2/go.mod h1:3P1osvZa9jKjb8ed2TPng3f0i/UY9snX6gxi44djMjk= ++github.com/go-openapi/errors v0.17.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0= ++github.com/go-openapi/errors v0.18.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0= ++github.com/go-openapi/errors v0.19.2 h1:a2kIyV3w+OS3S97zxUndRVD46+FhGOUBDFY7nmu4CsY= ++github.com/go-openapi/errors v0.19.2/go.mod h1:qX0BLWsyaKfvhluLejVpVNwNRdXZhEbTA4kxxpKBC94= ++github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0= ++github.com/go-openapi/jsonpointer v0.17.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= ++github.com/go-openapi/jsonpointer v0.18.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= ++github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg= ++github.com/go-openapi/jsonpointer v0.19.3 h1:gihV7YNZK1iK6Tgwwsxo2rJbD1GTbdm72325Bq8FI3w= ++github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= ++github.com/go-openapi/jsonreference v0.0.0-20160704190145-13c6e3589ad9/go.mod h1:W3Z9FmVs9qj+KR4zFKmDPGiLdk1D9Rlm7cyMvf57TTg= ++github.com/go-openapi/jsonreference v0.17.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I= ++github.com/go-openapi/jsonreference v0.18.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I= ++github.com/go-openapi/jsonreference v0.19.2 h1:o20suLFB4Ri0tuzpWtyHlh7E7HnkqTNLq6aR6WVNS1w= ++github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc= ++github.com/go-openapi/loads v0.17.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= ++github.com/go-openapi/loads v0.18.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= ++github.com/go-openapi/loads v0.19.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= ++github.com/go-openapi/loads v0.19.2 h1:rf5ArTHmIJxyV5Oiks+Su0mUens1+AjpkPoWr5xFRcI= ++github.com/go-openapi/loads v0.19.2/go.mod h1:QAskZPMX5V0C2gvfkGZzJlINuP7Hx/4+ix5jWFxsNPs= ++github.com/go-openapi/runtime v0.0.0-20180920151709-4f900dc2ade9/go.mod h1:6v9a6LTXWQCdL8k1AO3cvqx5OtZY/Y9wKTgaoP6YRfA= ++github.com/go-openapi/runtime v0.19.0 h1:sU6pp4dSV2sGlNKKyHxZzi1m1kG4WnYtWcJ+HYbygjE= ++github.com/go-openapi/runtime v0.19.0/go.mod h1:OwNfisksmmaZse4+gpV3Ne9AyMOlP1lt4sK4FXt0O64= ++github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc= ++github.com/go-openapi/spec v0.17.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI= ++github.com/go-openapi/spec v0.18.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI= ++github.com/go-openapi/spec v0.19.2 h1:SStNd1jRcYtfKCN7R0laGNs80WYYvn5CbBjM2sOmCrE= ++github.com/go-openapi/spec v0.19.2/go.mod h1:sCxk3jxKgioEJikev4fgkNmwS+3kuYdJtcsZsD5zxMY= ++github.com/go-openapi/strfmt v0.17.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU= ++github.com/go-openapi/strfmt v0.18.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU= ++github.com/go-openapi/strfmt v0.19.0 h1:0Dn9qy1G9+UJfRU7TR8bmdGxb4uifB7HNrJjOnV0yPk= ++github.com/go-openapi/strfmt v0.19.0/go.mod h1:+uW+93UVvGGq2qGaZxdDeJqSAqBqBdl+ZPMF/cC8nDY= ++github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I= ++github.com/go-openapi/swag v0.17.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= ++github.com/go-openapi/swag v0.18.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= ++github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= ++github.com/go-openapi/swag v0.19.5 h1:lTz6Ys4CmqqCQmZPBlbQENR1/GucA2bzYTE12Pw4tFY= ++github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= ++github.com/go-openapi/validate v0.18.0/go.mod h1:Uh4HdOzKt19xGIGm1qHf/ofbX1YQ4Y+MYsct2VUrAJ4= ++github.com/go-openapi/validate v0.19.2 h1:ky5l57HjyVRrsJfd2+Ro5Z9PjGuKbsmftwyMtk8H7js= ++github.com/go-openapi/validate v0.19.2/go.mod h1:1tRCw7m3jtI8eNWEEliiAqUIcBztB2KDnRCRMUi7GTA= ++github.com/go-ozzo/ozzo-validation v3.5.0+incompatible/go.mod h1:gsEKFIVnabGBt6mXmxK0MoFy+cZoTJY6mu5Ll3LVLBU= ++github.com/go-redis/cache v6.3.5+incompatible h1:4OUyoXXYRRQ6tKA4ue3TlPUkBzk3occzjtXBZBxCzgs= ++github.com/go-redis/cache v6.3.5+incompatible/go.mod h1:XNnMdvlNjcZvHjsscEozHAeOeSE5riG9Fj54meG4WT4= ++github.com/go-redis/redis v6.15.1+incompatible h1:BZ9s4/vHrIqwOb0OPtTQ5uABxETJ3NRuUNoSUurnkew= ++github.com/go-redis/redis v6.15.1+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA= ++github.com/gobuffalo/packr v1.11.0 h1:lxysfHcxVCWGNMHzKABP7ZEL3A7iIVYfkev/D7AR0aM= ++github.com/gobuffalo/packr v1.11.0/go.mod h1:rYwMLC6NXbAbkKb+9j3NTKbxSswkKLlelZYccr4HYVw= ++github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= ++github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= ++github.com/godbus/dbus v4.1.0+incompatible/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw= ++github.com/gogits/go-gogs-client v0.0.0-20190616193657-5a05380e4bc2 h1:BbwX8wsMRDZRdNYxAna+4ls3wvMKJyn4PT6Zk1CPxP4= ++github.com/gogits/go-gogs-client v0.0.0-20190616193657-5a05380e4bc2/go.mod h1:cY2AIrMgHm6oOHmR7jY+9TtjzSjQ3iG7tURJG3Y6XH0= ++github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= ++github.com/gogo/protobuf v1.3.1 h1:DqDEcV5aeaTmdFBePNpYsp3FlcVH/2ISVVM9Qf8PSls= ++github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= ++github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= ++github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= ++github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903 h1:LbsanbbD6LieFkXbj9YNNBupiGHJgFeLpO0j0Fza1h8= ++github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= ++github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= ++github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= ++github.com/golang/protobuf v0.0.0-20161109072736-4bd1920723d7/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= ++github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= ++github.com/golang/protobuf v1.3.1 h1:YF8+flBXS5eO826T4nzqPrxfhQThhXl0YzfuUPu4SBg= ++github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= ++github.com/golangplus/bytes v0.0.0-20160111154220-45c989fe5450/go.mod h1:Bk6SMAONeMXrxql8uvOKuAZSu8aM5RUGv+1C6IJaEho= ++github.com/golangplus/fmt v0.0.0-20150411045040-2a5d6d7d2995/go.mod h1:lJgMEyOkYFkPcDKwRXegd+iM6E7matEszMG5HhwytU8= ++github.com/golangplus/testing v0.0.0-20180327235837-af21d9c3145e/go.mod h1:0AA//k/eakGydO4jKRoRL2j92ZKSzTgj9tclaCrvXHk= ++github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= ++github.com/google/btree v1.0.0 h1:0udJVsspx3VBr5FwtLhQQtuAsVc79tTq0ocGIPAU6qo= ++github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= ++github.com/google/cadvisor v0.34.0/go.mod h1:1nql6U13uTHaLYB8rLS5x9IJc2qT6Xd/Tr1sTX6NE48= ++github.com/google/certificate-transparency-go v1.0.21/go.mod h1:QeJfpSbVSfYc7RgB3gJFj9cbuQMMchQxrWXz8Ruopmg= ++github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= ++github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= ++github.com/google/go-cmp v0.3.1 h1:Xye71clBPdm5HgqGwUkwhbynsUJZhDbS20FvLhQ2izg= ++github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= ++github.com/google/go-jsonnet v0.10.0 h1:NzmG/5DRTYDjNnsL/OmX6wT+ByeKbSoRoV6VxOy+QdM= ++github.com/google/go-jsonnet v0.10.0/go.mod h1:gVu3UVSfOt5fRFq+dh9duBqXa5905QY8S1QvMNcEIVs= ++github.com/google/gofuzz v0.0.0-20161122191042-44d81051d367/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= ++github.com/google/gofuzz v1.0.0 h1:A8PeW59pxE9IoFRqBp37U+mSNaQoZ46F1f0f863XSXw= ++github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= ++github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= ++github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= ++github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= ++github.com/google/shlex v0.0.0-20181106134648-c34317bd91bf h1:7+FW5aGwISbqUtkfmIpZJGRgNFg2ioYPvFaUxdqpDsg= ++github.com/google/shlex v0.0.0-20181106134648-c34317bd91bf/go.mod h1:RpwtwJQFrIEPstU94h88MWPXP2ektJZ8cZ0YntAmXiE= ++github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= ++github.com/google/uuid v1.1.1 h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY= ++github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= ++github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= ++github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= ++github.com/googleapis/gnostic v0.1.0 h1:rVsPeBmXbYv4If/cumu1AzZPwV58q433hvONV1UEZoI= ++github.com/googleapis/gnostic v0.1.0/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= ++github.com/gophercloud/gophercloud v0.1.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= ++github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= ++github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= ++github.com/gorilla/mux v1.7.0/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= ++github.com/gorilla/websocket v1.4.0 h1:WDFjx/TMzVgy9VdMMQi2K2Emtwi2QcUQsztZ/zLaH/Q= ++github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= ++github.com/gregjones/httpcache v0.0.0-20170728041850-787624de3eb7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= ++github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 h1:+ngKgrYPPJrOjhax5N+uePQ0Fh1Z7PheYoUI/0nzkPA= ++github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= ++github.com/grpc-ecosystem/go-grpc-middleware v0.0.0-20190222133341-cfaf5686ec79 h1:lR9ssWAqp9qL0bALxqEEkuudiP1eweOdv9jsRK3e7lE= ++github.com/grpc-ecosystem/go-grpc-middleware v0.0.0-20190222133341-cfaf5686ec79/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= ++github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho= ++github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= ++github.com/grpc-ecosystem/grpc-gateway v1.3.0/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw= ++github.com/grpc-ecosystem/grpc-gateway v1.3.1 h1:k2neygAEBYavP90THffKBVlkASdxu4XiI8cAWuL3MG0= ++github.com/grpc-ecosystem/grpc-gateway v1.3.1/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw= ++github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= ++github.com/hashicorp/golang-lru v0.0.0-20180201235237-0fb14efe8c47/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= ++github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= ++github.com/hashicorp/golang-lru v0.5.1 h1:0hERBMJE1eitiLkihrMvRVBYAkpHzc/J3QdDN+dAcgU= ++github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= ++github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= ++github.com/heketi/heketi v9.0.0+incompatible/go.mod h1:bB9ly3RchcQqsQ9CpyaQwvva7RS5ytVoSoholZQON6o= ++github.com/heketi/rest v0.0.0-20180404230133-aa6a65207413/go.mod h1:BeS3M108VzVlmAue3lv2WcGuPAX94/KN63MUURzbYSI= ++github.com/heketi/tests v0.0.0-20151005000721-f3775cbcefd6/go.mod h1:xGMAM8JLi7UkZt1i4FQeQy0R2T8GLUwQhOP5M1gBhy4= ++github.com/heketi/utils v0.0.0-20170317161834-435bc5bdfa64/go.mod h1:RYlF4ghFZPPmk2TC5REt5OFwvfb6lzxFWrTWB+qs28s= ++github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= ++github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= ++github.com/imdario/mergo v0.3.5 h1:JboBksRwiiAJWvIYJVo46AfV+IAIKZpfrSzVKj42R4Q= ++github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= ++github.com/improbable-eng/grpc-web v0.0.0-20181111100011-16092bd1d58a h1:RweVA0vnEyStwtAelyGmnU8ENDnwd1Q7pQr7U3J/rXo= ++github.com/improbable-eng/grpc-web v0.0.0-20181111100011-16092bd1d58a/go.mod h1:6hRR09jOEG81ADP5wCQju1z71g6OL4eEvELdran/3cs= ++github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= ++github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= ++github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= ++github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= ++github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= ++github.com/jimstudt/http-authentication v0.0.0-20140401203705-3eca13d6893a/go.mod h1:wK6yTYYcgjHE1Z1QtXACPDjcFJyBskHEdagmnq3vsP8= ++github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= ++github.com/jonboulle/clockwork v0.1.0 h1:VKV+ZcuP6l3yW9doeqz6ziZGgcynBVQO+obU0+0hcPo= ++github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= ++github.com/json-iterator/go v0.0.0-20180612202835-f2b4162afba3/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= ++github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= ++github.com/json-iterator/go v1.1.7 h1:KfgG9LzI+pYjr4xvmz/5H4FXjokeP+rlHLhv3iH62Fo= ++github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= ++github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= ++github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= ++github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88 h1:uC1QfSlInpQF+M0ao65imhwqKnz3Q2z/d8PWZRMQvDM= ++github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88/go.mod h1:3w7q1U84EfirKl04SVQ/s7nPm1ZPhiXd34z40TNz36k= ++github.com/karrick/godirwalk v1.7.5/go.mod h1:2c9FRhkDxdIbgkOnCEvnSWs71Bhugbl46shStcFDJ34= ++github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs= ++github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= ++github.com/kevinburke/ssh_config v0.0.0-20180830205328-81db2a75821e h1:RgQk53JHp/Cjunrr1WlsXSZpqXn+uREuHvUVcK82CV8= ++github.com/kevinburke/ssh_config v0.0.0-20180830205328-81db2a75821e/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= ++github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= ++github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= ++github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= ++github.com/konsorten/go-windows-terminal-sequences v1.0.1 h1:mweAR1A6xJ3oS2pRaGiHgQ4OO8tzTaLawm8vnODuwDk= ++github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= ++github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= ++github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= ++github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= ++github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= ++github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= ++github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= ++github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k= ++github.com/libopenstorage/openstorage v1.0.0/go.mod h1:Sp1sIObHjat1BeXhfMqLZ14wnOzEhNx2YQedreMcUyc= ++github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de h1:9TO3cAIGXtEhnIaL+V+BEER86oLrvS+kWobKpbJuye0= ++github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de/go.mod h1:zAbeS9B/r2mtpb6U+EI2rYA5OAXxsYw6wTamcNW+zcE= ++github.com/lithammer/dedent v1.1.0/go.mod h1:jrXYCQtgg0nJiN+StA2KgR7w6CiQNv9Fd/Z9BP0jIOc= ++github.com/lpabon/godbc v0.1.1/go.mod h1:Jo9QV0cf3U6jZABgiJ2skINAXb9j8m51r07g4KI92ZA= ++github.com/lucas-clemente/aes12 v0.0.0-20171027163421-cd47fb39b79f/go.mod h1:JpH9J1c9oX6otFSgdUHwUBUizmKlrMjxWnIAjff4m04= ++github.com/lucas-clemente/quic-clients v0.1.0/go.mod h1:y5xVIEoObKqULIKivu+gD/LU90pL73bTdtQjPBvtCBk= ++github.com/lucas-clemente/quic-go v0.10.2/go.mod h1:hvaRS9IHjFLMq76puFJeWNfmn+H70QZ/CXoxqw9bzao= ++github.com/lucas-clemente/quic-go-certificates v0.0.0-20160823095156-d2f86524cced/go.mod h1:NCcRLrOTZbzhZvixZLlERbJtDtYsmMw8Jc4vS8Z0g58= ++github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= ++github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= ++github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= ++github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= ++github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= ++github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= ++github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e h1:hB2xlXdHp/pmPZq0y3QnmWAArdw9PqbmotexnWx/FU8= ++github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= ++github.com/malexdev/utfutil v0.0.0-20180510171754-00c8d4a8e7a8 h1:A6SLdFpRzUUF5v9F/7T1fu3DERmOCgTwwP6x54eyFfU= ++github.com/malexdev/utfutil v0.0.0-20180510171754-00c8d4a8e7a8/go.mod h1:UtpLyb/EupVKXF/N0b4NRe1DNg+QYJsnsHQ038romhM= ++github.com/marten-seemann/qtls v0.2.3/go.mod h1:xzjG7avBwGGbdZ8dTGxlBnLArsVKLvwmjgmPuiQEcYk= ++github.com/mattn/go-colorable v0.0.9 h1:UVL0vNpWh04HeJXV0KLcaT7r06gOH2l4OW6ddYRUIY4= ++github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= ++github.com/mattn/go-isatty v0.0.3 h1:ns/ykhmWi7G9O+8a448SecJU3nSMBXJfqQkl0upE1jI= ++github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= ++github.com/mattn/go-shellwords v1.0.5/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o= ++github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= ++github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= ++github.com/mesos/mesos-go v0.0.9/go.mod h1:kPYCMQ9gsOXVAle1OsoY4I1+9kPu8GHkf88aV59fDr4= ++github.com/mholt/certmagic v0.6.2-0.20190624175158-6a42ef9fe8c2/go.mod h1:g4cOPxcjV0oFq3qwpjSA30LReKD8AoIfwAY9VvG35NY= ++github.com/miekg/dns v1.1.3/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= ++github.com/miekg/dns v1.1.4/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= ++github.com/mindprince/gonvml v0.0.0-20171110221305-fee913ce8fb2/go.mod h1:2eu9pRWp8mo84xCg6KswZ+USQHjwgRhNp06sozOdsTY= ++github.com/mistifyio/go-zfs v2.1.1+incompatible/go.mod h1:8AuVvqP/mXw1px98n46wfvcGfQ4ci2FwoAjKYxuo3Z4= ++github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= ++github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= ++github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= ++github.com/mitchellh/go-wordwrap v1.0.0 h1:6GlHJ/LTGMrIJbwgdqdl2eEH8o+Exx/0m8ir9Gns0u4= ++github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= ++github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= ++github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= ++github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= ++github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= ++github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= ++github.com/modern-go/reflect2 v0.0.0-20180320133207-05fbef0ca5da/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= ++github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= ++github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI= ++github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= ++github.com/mohae/deepcopy v0.0.0-20170603005431-491d3605edfb/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= ++github.com/morikuni/aec v0.0.0-20170113033406-39771216ff4c/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= ++github.com/mrunalp/fileutils v0.0.0-20160930181131-4ee1cc9a8058/go.mod h1:x8F1gnqOkIEiO4rqoeEEEqQbo7HjGMTvyoq3gej4iT0= ++github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= ++github.com/mvdan/xurls v1.1.0/go.mod h1:tQlNn3BED8bE/15hnSL2HLkDeLWpNPAwtw7wkEq44oU= ++github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= ++github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= ++github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= ++github.com/naoina/go-stringutil v0.1.0/go.mod h1:XJ2SJL9jCtBh+P9q5btrd/Ylo8XwT/h1USek5+NqSA0= ++github.com/naoina/toml v0.1.1/go.mod h1:NBIhNtsFMo3G2szEBne+bO4gS192HuIYRqfvOWb4i1E= ++github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= ++github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= ++github.com/onsi/ginkgo v1.8.0 h1:VkHVNpR4iVnU8XQR6DBm8BqYjN7CRzw+xKUbVVbbW9w= ++github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= ++github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= ++github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= ++github.com/onsi/gomega v1.5.0 h1:izbySO9zDPmjJ8rDjLvkA2zJHIo+HkYXHnf7eN7SSyo= ++github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= ++github.com/opencontainers/go-digest v1.0.0-rc1 h1:WzifXhOVOEOuFYOJAW6aQqW0TooG2iki3E3Ii+WN7gQ= ++github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= ++github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= ++github.com/opencontainers/runc v1.0.0-rc2.0.20190611121236-6cc515888830/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= ++github.com/opencontainers/runtime-spec v1.0.0/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= ++github.com/opencontainers/selinux v1.2.2/go.mod h1:+BLncwf63G4dgOzykXAxcmnFlUaOlkDdmw/CqsW6pjs= ++github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaRUnok+kx1WdO15EQc= ++github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ= ++github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= ++github.com/pelletier/go-buffruneio v0.2.0 h1:U4t4R6YkofJ5xHm3dJzuRpPZ0mr5MMCoAWooScCR7aA= ++github.com/pelletier/go-buffruneio v0.2.0/go.mod h1:JkE26KsDizTr40EUHkXVtNPvgGtbSNq5BcowyYOWdKo= ++github.com/pelletier/go-toml v1.0.1/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= ++github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= ++github.com/peterbourgon/diskv v2.0.1+incompatible h1:UBdAOUP5p4RWqPBg048CAvpKN+vxiaj6gdUUzhl4XmI= ++github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= ++github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= ++github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= ++github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= ++github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= ++github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= ++github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= ++github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA= ++github.com/pquerna/cachecontrol v0.0.0-20180306154005-525d0eb5f91d h1:7gXyC293Lsm2YWgQ+0uaAFFFDO82ruiQSwc3ua+Vtlc= ++github.com/pquerna/cachecontrol v0.0.0-20180306154005-525d0eb5f91d/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA= ++github.com/pquerna/ffjson v0.0.0-20180717144149-af8b230fcd20/go.mod h1:YARuvh7BUWHNhzDq2OM5tzR2RiCcN2D7sapiKyCel/M= ++github.com/prometheus/client_golang v0.9.2 h1:awm861/B8OKDd2I/6o1dy3ra4BamzKhYOiGItCeZ740= ++github.com/prometheus/client_golang v0.9.2/go.mod h1:OsXs2jCmiKlQ1lTBmv21f2mNfw4xf/QclQDMrYNZzcM= ++github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910 h1:idejC8f05m9MGOsuEi1ATq9shN03HrxNkD/luQvxCv8= ++github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= ++github.com/prometheus/common v0.0.0-20181126121408-4724e9255275 h1:PnBWHBf+6L0jOqq0gIVUe6Yk0/QMZ640k6NvkxcBf+8= ++github.com/prometheus/common v0.0.0-20181126121408-4724e9255275/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= ++github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a h1:9a8MnZMP0X2nLJdBg+pBmGgkJlSaKC2KaQmTCk1XDtE= ++github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= ++github.com/quobyte/api v0.1.2/go.mod h1:jL7lIHrmqQ7yh05OJ+eEEdHr0u/kmT1Ff9iHd+4H6VI= ++github.com/remyoudompheng/bigfft v0.0.0-20170806203942-52369c62f446/go.mod h1:uYEyJGbgTkfkS4+E/PavXkNJcbFIpEtjt2B0KDQ5+9M= ++github.com/robfig/cron v1.1.0 h1:jk4/Hud3TTdcrJgUOBgsqrZBarcxl6ADIjSC2iniwLY= ++github.com/robfig/cron v1.1.0/go.mod h1:JGuDeoQd7Z6yL4zQhZ3OPEVHB7fL6Ka6skscFHfmt2k= ++github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= ++github.com/rs/cors v1.6.0 h1:G9tHG9lebljV9mfp9SNPDL36nCDxmo3zTlAf1YgvzmI= ++github.com/rs/cors v1.6.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= ++github.com/rubiojr/go-vhd v0.0.0-20160810183302-0bfd3b39853c/go.mod h1:DM5xW0nvfNNm2uytzsvhI3OnX8uzaRAg8UX/CnDqbto= ++github.com/russross/blackfriday v0.0.0-20170610170232-067529f716f4/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= ++github.com/russross/blackfriday v1.5.2 h1:HyvC0ARfnZBqnXwABFeSZHpKvJHJJfPz81GNueLj0oo= ++github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= ++github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= ++github.com/seccomp/libseccomp-golang v0.9.1/go.mod h1:GbW5+tmTXfcxTToHLXlScSlAvWlF4P2Ca7zGrPiEpWo= ++github.com/sergi/go-diff v1.0.0 h1:Kpca3qRNrduNnOQeazBd0ysaKrUJiIuISHxogkT9RPQ= ++github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= ++github.com/sirupsen/logrus v1.0.5/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= ++github.com/sirupsen/logrus v1.4.2 h1:SPIRibHv4MatM3XXNO2BJeFLZwZ2LvZgfQ5+UNI2im4= ++github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= ++github.com/skratchdot/open-golang v0.0.0-20160302144031-75fb7ed4208c h1:fyKiXKO1/I/B6Y2U8T7WdQGWzwehOuGIrljPtt7YTTI= ++github.com/skratchdot/open-golang v0.0.0-20160302144031-75fb7ed4208c/go.mod h1:sUM3LWHvSMaG192sy56D9F7CNvL7jUJVXoqM1QKLnog= ++github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= ++github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= ++github.com/soheilhy/cmux v0.1.3/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= ++github.com/soheilhy/cmux v0.1.4 h1:0HKaf1o97UwFjHH9o5XsHUOF+tqmdA7KEzXLpiyaw0E= ++github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= ++github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= ++github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= ++github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= ++github.com/spf13/cobra v0.0.5 h1:f0B+LkLX6DtmRH1isoNA9VTtNUK9K8xYd28JNNfOv/s= ++github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= ++github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= ++github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= ++github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= ++github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= ++github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= ++github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= ++github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= ++github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= ++github.com/src-d/gcfg v1.4.0 h1:xXbNR5AlLSA315x2UO+fTSSAXCDf+Ar38/6oyGbDKQ4= ++github.com/src-d/gcfg v1.4.0/go.mod h1:p/UMsR43ujA89BJY9duynAwIpvqEujIH/jFlfL7jWoI= ++github.com/storageos/go-api v0.0.0-20180912212459-343b3eff91fc/go.mod h1:ZrLn+e0ZuF3Y65PNF6dIwbJPZqfmtCXxFm9ckv0agOY= ++github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= ++github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= ++github.com/stretchr/objx v0.2.0 h1:Hbg2NidpLE8veEBkEZTL3CvlkUIVzuU9jDplZO54c48= ++github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= ++github.com/stretchr/testify v0.0.0-20151208002404-e3a8ff8ce365/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= ++github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= ++github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= ++github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= ++github.com/syndtr/gocapability v0.0.0-20160928074757-e7cb7fa329f4/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= ++github.com/thecodeteam/goscaleio v0.1.0/go.mod h1:68sdkZAsK8bvEwBlbQnlLS+xU+hvLYM/iQ8KXej1AwM= ++github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= ++github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= ++github.com/urfave/negroni v1.0.0/go.mod h1:Meg73S6kFm/4PpbYdq35yYWoCZ9mS/YSx+lKnmiohz4= ++github.com/vishvananda/netlink v0.0.0-20171020171820-b2de5d10e38e/go.mod h1:+SR5DhBJrl6ZM7CoCKvpw5BKroDKQ+PJqOg65H/2ktk= ++github.com/vishvananda/netns v0.0.0-20171111001504-be1fbeda1936/go.mod h1:ZjcWmFBXmLKZu9Nxj3WKYEafiSqer2rnvPr0en9UNpI= ++github.com/vmihailenco/msgpack v3.3.1+incompatible h1:ibe+d1lqocBmxbJ+gwcDO8LpAHFr3PGDYovoURuTVGk= ++github.com/vmihailenco/msgpack v3.3.1+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= ++github.com/vmware/govmomi v0.20.1/go.mod h1:URlwyTFZX72RmxtxuaFL2Uj3fD1JTvZdx59bHWk6aFU= ++github.com/xanzy/ssh-agent v0.2.0 h1:Adglfbi5p9Z0BmK2oKU9nTG+zKfniSfnaMYB+ULd+Ro= ++github.com/xanzy/ssh-agent v0.2.0/go.mod h1:0NyE30eGUDliuLEHJgYte/zncp2zdTStcOnWhgSqHD8= ++github.com/xiang90/probing v0.0.0-20160813154853-07dd2e8dfe18/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= ++github.com/xlab/handysort v0.0.0-20150421192137-fb3537ed64a1/go.mod h1:QcJo0QPSfTONNIgpN5RA8prR7fF8nkF6cTWTcNerRO8= ++github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= ++github.com/yudai/gojsondiff v0.0.0-20180504020246-0525c875b75c h1:/8Xb/f8s2/ZZpzMzBkFwW2Jvj7Pglk+AW8m8FFqOoIQ= ++github.com/yudai/gojsondiff v0.0.0-20180504020246-0525c875b75c/go.mod h1:AY32+k2cwILAkW1fbgxQ5mUmMiZFgLIV+FBNExI05xg= ++github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82 h1:BHyfKlQyqbsFN5p3IfnEUduWvb9is428/nNb5L3U01M= ++github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82/go.mod h1:lgjkn3NuSvDfVJdfcVVdX+jpBxNmX4rDAzaS45IcYoM= ++github.com/yudai/pp v2.0.1+incompatible h1:Q4//iY4pNF6yPLZIigmvcl7k/bPgrcTPIFIcmawg5bI= ++github.com/yudai/pp v2.0.1+incompatible/go.mod h1:PuxR/8QJ7cyCkFp/aUDS+JY727OFEZkTdatxwunjIkc= ++github.com/yuin/gopher-lua v0.0.0-20190115140932-732aa6820ec4 h1:1yOVVSFiradDwXpgdkDjlGOcGJqcohH/W49Zn8Ywgco= ++github.com/yuin/gopher-lua v0.0.0-20190115140932-732aa6820ec4/go.mod h1:fFiAh+CowNFr0NK5VASokuwKwkbacRmHsVA7Yb1Tqac= ++go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= ++go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= ++go.uber.org/atomic v0.0.0-20181018215023-8dc6146f7569/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= ++go.uber.org/multierr v0.0.0-20180122172545-ddea229ff1df/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= ++go.uber.org/zap v0.0.0-20180814183419-67bc79d13d15/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= ++golang.org/x/crypto v0.0.0-20180426230345-b49d69b5da94/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= ++golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= ++golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= ++golang.org/x/crypto v0.0.0-20190123085648-057139ce5d2b/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= ++golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= ++golang.org/x/crypto v0.0.0-20190228161510-8dd112bcdc25/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= ++golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= ++golang.org/x/crypto v0.0.0-20190320223903-b7391e95e576/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= ++golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= ++golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= ++golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586 h1:7KByu05hhLed2MO29w7p1XfZvZ13m8mub3shuVftRs0= ++golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= ++golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= ++golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= ++golang.org/x/exp v0.0.0-20190312203227-4b39c73a6495/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= ++golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= ++golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= ++golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= ++golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= ++golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= ++golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= ++golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= ++golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= ++golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= ++golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= ++golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= ++golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= ++golang.org/x/net v0.0.0-20181005035420-146acd28ed58/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= ++golang.org/x/net v0.0.0-20181102091132-c10e9556a7bc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= ++golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= ++golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= ++golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= ++golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= ++golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= ++golang.org/x/net v0.0.0-20190320064053-1272bf9dcd53/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= ++golang.org/x/net v0.0.0-20190328230028-74de082e2cca/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= ++golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= ++golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= ++golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= ++golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= ++golang.org/x/net v0.0.0-20190812203447-cdfb69ac37fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= ++golang.org/x/net v0.0.0-20191004110552-13f9640d40b9 h1:rjwSpXsdiK0dV8/Naq3kAw9ymfAeJIyd0upUIElB+lI= ++golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= ++golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= ++golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= ++golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 h1:SVwTIAaPC2U/AvvLNZ2a7OVsmBpC8L5BlwK1whH3hm0= ++golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= ++golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= ++golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= ++golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= ++golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= ++golang.org/x/sync v0.0.0-20190423024810-112230192c58 h1:8gQV6CLnAEikrhgkHFbMAEhagSSnXWGV915qUMm9mrU= ++golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= ++golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= ++golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= ++golang.org/x/sys v0.0.0-20180903190138-2b024373dcd9/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= ++golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= ++golang.org/x/sys v0.0.0-20181004145325-8469e314837c/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= ++golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= ++golang.org/x/sys v0.0.0-20190124100055-b90733256f2e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= ++golang.org/x/sys v0.0.0-20190209173611-3b5209105503/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= ++golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= ++golang.org/x/sys v0.0.0-20190228124157-a34e9553db1e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= ++golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= ++golang.org/x/sys v0.0.0-20190321052220-f7bb7a8bee54/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= ++golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= ++golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= ++golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= ++golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= ++golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a h1:aYOabOQFp6Vj6W1F80affTUvO9UxmJRx8K0gsfABByQ= ++golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= ++golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= ++golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= ++golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= ++golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= ++golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= ++golang.org/x/time v0.0.0-20181108054448-85acf8d2951c h1:fqgJT0MGcGpPgpWU7VRdRjuArfcOvC4AoJmILihzhDg= ++golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= ++golang.org/x/tools v0.0.0-20170824195420-5d2fd3ccab98/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= ++golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= ++golang.org/x/tools v0.0.0-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= ++golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= ++golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= ++golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= ++golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= ++golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= ++golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= ++golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= ++golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= ++golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= ++golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= ++golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= ++golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= ++golang.org/x/tools v0.0.0-20190920225731-5eefd052ad72/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= ++golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= ++gonum.org/v1/gonum v0.0.0-20190331200053-3d26580ed485/go.mod h1:2ltnJ7xHfj0zHS40VVPYEAAMTa3ZGguvHGBSJeRWqE0= ++gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= ++gonum.org/v1/netlib v0.0.0-20190331212654-76723241ea4e/go.mod h1:kS+toOQn6AQKjmKJ7gzohV1XkqsFehRA2FbsbkopSuQ= ++google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= ++google.golang.org/api v0.6.1-0.20190607001116-5213b8090861/go.mod h1:btoxGiFvQNVUZQ8W08zLtrVS08CNpINPEfxXxgJL1Q4= ++google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= ++google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= ++google.golang.org/appengine v1.5.0 h1:KxkO13IPW4Lslp2bz+KHP2E3gtFlrIGNThxkZQ3g+4c= ++google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= ++google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= ++google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= ++google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= ++google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873 h1:nfPFGzJkUDX6uBmpN/pSw7MbOAWegH5QDQuoXFHedLg= ++google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= ++google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= ++google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= ++google.golang.org/grpc v1.23.0 h1:AzbTB6ux+okLTzP8Ru1Xs41C303zdcfEht7MQnYJt5A= ++google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= ++gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U= ++gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= ++gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= ++gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= ++gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= ++gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= ++gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= ++gopkg.in/gcfg.v1 v1.2.0/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= ++gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2/go.mod h1:Xk6kEKp8OKb+X14hQBKWaSkCsqBpgog8nAV2xsGOxlo= ++gopkg.in/go-playground/webhooks.v5 v5.11.0 h1:V3vej+ZXrVvO2EmBTKlhClEbpTqXH44K5OyLUMOkHMg= ++gopkg.in/go-playground/webhooks.v5 v5.11.0/go.mod h1:LZbya/qLVdbqDR1aKrGuWV6qbia2zCYSR5dpom2SInQ= ++gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= ++gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= ++gopkg.in/mcuadros/go-syslog.v2 v2.2.1/go.mod h1:l5LPIyOOyIdQquNg+oU6Z3524YwrcqEm0aKH+5zpt2U= ++gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= ++gopkg.in/square/go-jose.v2 v2.2.2 h1:orlkJ3myw8CN1nVQHBFfloD+L3egixIa4FvUP6RosSA= ++gopkg.in/square/go-jose.v2 v2.2.2/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= ++gopkg.in/src-d/go-billy.v4 v4.2.1 h1:omN5CrMrMcQ+4I8bJ0wEhOBPanIRWzFC953IiXKdYzo= ++gopkg.in/src-d/go-billy.v4 v4.2.1/go.mod h1:tm33zBoOwxjYHZIE+OV8bxTWFMJLrconzFMd38aARFk= ++gopkg.in/src-d/go-git-fixtures.v3 v3.1.1 h1:XWW/s5W18RaJpmo1l0IYGqXKuJITWRFuA45iOf1dKJs= ++gopkg.in/src-d/go-git-fixtures.v3 v3.1.1/go.mod h1:dLBcvytrw/TYZsNTWCnkNF2DSIlzWYqTe3rJR56Ac7g= ++gopkg.in/src-d/go-git.v4 v4.9.1 h1:0oKHJZY8tM7B71378cfTg2c5jmWyNlXvestTT6WfY+4= ++gopkg.in/src-d/go-git.v4 v4.9.1/go.mod h1:Vtut8izDyrM8BUVQnzJ+YvmNcem2J89EmfZYCkLokZk= ++gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= ++gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= ++gopkg.in/warnings.v0 v0.1.1/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= ++gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= ++gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= ++gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= ++gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= ++gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= ++gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10= ++gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= ++gotest.tools v2.1.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= ++gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= ++gotest.tools/gotestsum v0.3.5/go.mod h1:Mnf3e5FUzXbkCfynWBGOwLssY7gTQgCHObK9tMpAriY= ++honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= ++honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= ++honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= ++honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= ++honnef.co/go/tools v0.0.1-2019.2.2/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= ++k8s.io/api v0.0.0-20200131112707-d64dbec685a4 h1:7kA/ATNKWB1TVM0pwxzl/JONybbBVROCxqndoCd57fU= ++k8s.io/api v0.0.0-20200131112707-d64dbec685a4/go.mod h1:SGkmWEIoDg63In+t6yMJLEXQSkK5XxTNDcVydoy58dc= ++k8s.io/apiextensions-apiserver v0.0.0-20200208193839-84fe3c0be50e h1:L/XqOouONrybm+3jyUJZPo5JIMARb5qFNfmmUqy81Eg= ++k8s.io/apiextensions-apiserver v0.0.0-20200208193839-84fe3c0be50e/go.mod h1:YzEcimsSKeVDDQnLTI9Qf8uws94WpMl4qut8Rbx4dVk= ++k8s.io/apimachinery v0.16.7-beta.0.0.20200131112342-0c9ec93240c9 h1:pusQlPC9d40F13jjdYyJDFDwnUjCTDN5P/y5WteLVkA= ++k8s.io/apimachinery v0.16.7-beta.0.0.20200131112342-0c9ec93240c9/go.mod h1:Xk2vD2TRRpuWYLQNM6lT9R7DSFZUYG03SarNkbGrnKE= ++k8s.io/apiserver v0.0.0-20200208192130-2d005a048922 h1:kgU/Yr5/GsGK3GAaFgmSp+y0IMLu+FoZK+wnKlgzIrQ= ++k8s.io/apiserver v0.0.0-20200208192130-2d005a048922/go.mod h1:kcWyL8/bV2c1b/FeWrxbO08zraTaYuhR7leZ4l9iOmo= ++k8s.io/cli-runtime v0.0.0-20200131120220-9674fbb91442 h1:gHF/ZIm6hTWAuN/rKdH1IO/iJfKPjn0d1kdeIMbPiDg= ++k8s.io/cli-runtime v0.0.0-20200131120220-9674fbb91442/go.mod h1:sL3otDuOz8AlMrzsrBeB/ektmi6qYAE4a9Gid/pxtSo= ++k8s.io/client-go v0.0.0-20191016111102-bec269661e48 h1:C2XVy2z0dV94q9hSSoCuTPp1KOG7IegvbdXuz9VGxoU= ++k8s.io/client-go v0.0.0-20191016111102-bec269661e48/go.mod h1:hrwktSwYGI4JK+TJA3dMaFyyvHVi/aLarVHpbs8bgCU= ++k8s.io/cloud-provider v0.0.0-20200131203752-f498d522efeb/go.mod h1:hb9XI7OCOFjqueeUaUYHbEuGG/nSq0UZtydmOu83p6M= ++k8s.io/cluster-bootstrap v0.0.0-20200131121422-fc6110069b18/go.mod h1:2U3dLDmef+EIuACENgQ1f8jQV//Z+aX/bp9DsglDXK0= ++k8s.io/code-generator v0.16.7-beta.0.0.20200131112027-a3045e5e55c0/go.mod h1:wFdrXdVi/UC+xIfLi+4l9elsTT/uEF61IfcN2wOLULQ= ++k8s.io/component-base v0.0.0-20200131113804-409d4deb41dd h1:W0AuOSSgValfdhcR68oayHewqFJh/nMA+JDPQbXGrkg= ++k8s.io/component-base v0.0.0-20200131113804-409d4deb41dd/go.mod h1:55xG5ozAlA2bbjfmFYC2LPf4cQqp4nOJT5e4+cXUDnY= ++k8s.io/cri-api v0.16.8-beta.0/go.mod h1:W6aMMPN5fmxcRGaHnb6BEfoTeS82OsJcsUJyKf+EWYc= ++k8s.io/csi-translation-lib v0.0.0-20200131121824-f033562d74c3/go.mod h1:2NVc4Xw5CEBgQj3/GtHOKPs5M68nhbszaFFuoB+xGUE= ++k8s.io/gengo v0.0.0-20190822140433-26a664648505/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= ++k8s.io/heapster v1.2.0-beta.1/go.mod h1:h1uhptVXMwC8xtZBYsPXKVi8fpdlYkTs6k949KozGrM= ++k8s.io/klog v0.4.0 h1:lCJCxf/LIowc2IGS9TPjWDyXY4nOmdGdfcwwDQCOURQ= ++k8s.io/klog v0.4.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= ++k8s.io/kube-aggregator v0.0.0-20200208192621-0eeb50407007 h1:PqWgdqcu7/ZAno0sqGoqo3eC/qhwnz+XTotZfG+84ic= ++k8s.io/kube-aggregator v0.0.0-20200208192621-0eeb50407007/go.mod h1:u6psj4FzpmwlJuQKReXypLOIhIF2UxzZRBThWtnjIDU= ++k8s.io/kube-controller-manager v0.0.0-20200131121224-13b3f231e47d/go.mod h1:rlvqwtZiupLrqd54U19Th2a0sMf0PNbGA1J3zPTwFAc= ++k8s.io/kube-openapi v0.0.0-20190816220812-743ec37842bf h1:EYm5AW/UUDbnmnI+gK0TJDVK9qPLhM+sRHYanNKw0EQ= ++k8s.io/kube-openapi v0.0.0-20190816220812-743ec37842bf/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E= ++k8s.io/kube-proxy v0.0.0-20200131120626-5b8ba5e54e1f/go.mod h1:3/a8cJm4V50vBnkRwRhpgdIdsTH+4cj/kV66oxybGxc= ++k8s.io/kube-scheduler v0.0.0-20200131121024-5f0ba0866863/go.mod h1:1xme9q7fNwDPtgIELmyOFGQErlOzFlQ1XHjTPUz1GYc= ++k8s.io/kubectl v0.0.0-20200131122652-b28c9fbca10f h1:7764TWFJ+UYY6TX1Vq3jCo/3BkORLtywarY8SEdQh18= ++k8s.io/kubectl v0.0.0-20200131122652-b28c9fbca10f/go.mod h1:d78MZ7MR2Q5xMwSrGvbJARH13CsOo5mSoDZWfjIe1TQ= ++k8s.io/kubelet v0.0.0-20200131120825-905bd8eea4c4/go.mod h1:VkwV80jJy9GciSRBPFduby5qJxI5v5lV3D6WMMCveek= ++k8s.io/kubernetes v0.0.0-20191207011953-bfafae8f1c2f h1:bGmDtZ96ysKXeBFw0+9cw9twoCQjrPRkkpSQqhxEXVs= ++k8s.io/kubernetes v0.0.0-20191207011953-bfafae8f1c2f/go.mod h1:OdJXH1Q9L+NDVj158Zo8f6R3NSaOx1ewLUcaJv8hSRE= ++k8s.io/legacy-cloud-providers v0.0.0-20200208200602-3a1c7effd2b3/go.mod h1:Egd+aHCesdnzDDtUaaWnAhnyt5/dgQIfM4UL5z2WJxg= ++k8s.io/metrics v0.0.0-20200131120008-5c623d74062d/go.mod h1:18pR44uxuhPU05LZpHhJiPPzQvGoFmCf2UlTp2EhSM8= ++k8s.io/repo-infra v0.0.0-20181204233714-00fe14e3d1a3/go.mod h1:+G1xBfZDfVFsm1Tj/HNCvg4QqWx8rJ2Fxpqr1rqp/gQ= ++k8s.io/sample-apiserver v0.0.0-20200208192953-f8dc80bbc173/go.mod h1:Bnw1dM0HuYH49aVse0I8cV6KeyOFPBaWxnhsU7uR2UA= ++k8s.io/utils v0.0.0-20190801114015-581e00157fb1 h1:+ySTxfHnfzZb9ys375PXNlLhkJPLKgHajBU0N62BDvE= ++k8s.io/utils v0.0.0-20190801114015-581e00157fb1/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= ++layeh.com/gopher-json v0.0.0-20190114024228-97fed8db8427 h1:RZkKxMR3jbQxdCEcglq3j7wY3PRJIopAwBlx1RE71X0= ++layeh.com/gopher-json v0.0.0-20190114024228-97fed8db8427/go.mod h1:ivKkcY8Zxw5ba0jldhZCYYQfGdb2K6u9tbYK1AwMIBc= ++modernc.org/cc v1.0.0/go.mod h1:1Sk4//wdnYJiUIxnW8ddKpaOJCF37yAdqYnkxUpaYxw= ++modernc.org/golex v1.0.0/go.mod h1:b/QX9oBD/LhixY6NDh+IdGv17hgB+51fET1i2kPSmvk= ++modernc.org/mathutil v1.0.0/go.mod h1:wU0vUrJsVWBZ4P6e7xtFJEhFSNsfRLJ8H458uRjg03k= ++modernc.org/strutil v1.0.0/go.mod h1:lstksw84oURvj9y3tn8lGvRxyRC1S2+g5uuIzNfIOBs= ++modernc.org/xc v1.0.0/go.mod h1:mRNCo0bvLjGhHO9WsyuKVU4q0ceiDDDoEeWDJHrNx8I= ++sigs.k8s.io/kustomize v2.0.3+incompatible h1:JUufWFNlI44MdtnjUqVnvh29rR37PQFzPbLXqhyOyX0= ++sigs.k8s.io/kustomize v2.0.3+incompatible/go.mod h1:MkjgH3RdOWrievjo6c9T245dYlB5QeXV4WCbnt/PEpU= ++sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI= ++sigs.k8s.io/structured-merge-diff v1.0.2/go.mod h1:IIgPezJWb76P0hotTxzDbWsMYB8APh18qZnxkomBpxA= ++sigs.k8s.io/yaml v1.1.0 h1:4A07+ZFc2wgJwo8YNlQpr1rVlgUDlxXHhPJciaPY5gs= ++sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= ++vbom.ml/util v0.0.0-20160121211510-db5cfe13f5cc/go.mod h1:so/NYdZXCz+E3ZpW0uAoCj6uzU2+8OWDFv/HxUSs7kI= diff --git a/pkgs/applications/networking/cluster/atlantis/default.nix b/pkgs/applications/networking/cluster/atlantis/default.nix index 67e91870f1a..cb846060a3d 100644 --- a/pkgs/applications/networking/cluster/atlantis/default.nix +++ b/pkgs/applications/networking/cluster/atlantis/default.nix @@ -2,21 +2,21 @@ buildGoModule rec { pname = "atlantis"; - version = "0.10.1"; + version = "0.11.1"; src = fetchFromGitHub { owner = "runatlantis"; repo = "atlantis"; rev = "v${version}"; - sha256 = "08k2dgz6rph68647ah1rdp7hqa5h1ar4gdy7vdjy5kn7gz21gmri"; + sha256 = "1ylk6n13ln6yaq4nc4n7fm00wfiyqi2x33sca5avzsvd1b387kk6"; }; - modSha256 = "1i4s3xcq2qc3zy00wk2l77935ilm6n5k1msilmdnj0061ia4860y"; + modSha256 = "1bhplk3p780llpj9l0fwcyli74879968d6j582mvjwvf2winbqzq"; subPackages = [ "." ]; meta = with stdenv.lib; { - homepage = https://github.com/runatlantis/atlantis; + homepage = "https://github.com/runatlantis/atlantis"; description = "Terraform Pull Request Automation"; platforms = platforms.all; license = licenses.asl20; diff --git a/pkgs/applications/networking/cluster/chronos/default.nix b/pkgs/applications/networking/cluster/chronos/default.nix index 78be19cd81e..e2452b2b441 100644 --- a/pkgs/applications/networking/cluster/chronos/default.nix +++ b/pkgs/applications/networking/cluster/chronos/default.nix @@ -29,7 +29,7 @@ stdenv.mkDerivation rec { ''; meta = with lib; { - homepage = http://airbnb.github.io/chronos; + homepage = "http://airbnb.github.io/chronos"; license = licenses.asl20; description = "Fault tolerant job scheduler for Mesos which handles dependencies and ISO8601 based schedules"; maintainers = with maintainers; [ offline ]; diff --git a/pkgs/applications/networking/cluster/click/default.nix b/pkgs/applications/networking/cluster/click/default.nix index f4d6fce3545..2c0e73fb30d 100644 --- a/pkgs/applications/networking/cluster/click/default.nix +++ b/pkgs/applications/networking/cluster/click/default.nix @@ -13,13 +13,13 @@ buildRustPackage rec { sha256 = "18mpzvvww2g6y2d3m8wcfajzdshagihn59k03xvcknd5d8zxagl3"; }; - cargoSha256 = "0298x7wkr4j1l5flmv5vhl1ay8icvh4dlhsh4xi8fd3p8jl9jpqv"; + cargoSha256 = "1f9yn4pvp58laylngdrfdkwygisnzkhkm7pndf6l33k3aqxhz5mm"; buildInputs = stdenv.lib.optionals stdenv.isDarwin [ darwin.apple_sdk.frameworks.Security ]; meta = with stdenv.lib; { description = ''The "Command Line Interactive Controller for Kubernetes"''; - homepage = https://github.com/databricks/click; + homepage = "https://github.com/databricks/click"; license = [ licenses.asl20 ]; maintainers = [ maintainers.mbode ]; platforms = [ "x86_64-linux" "x86_64-darwin" ]; diff --git a/pkgs/applications/networking/cluster/cni/default.nix b/pkgs/applications/networking/cluster/cni/default.nix index 88dbd177da0..8e74f834eaf 100644 --- a/pkgs/applications/networking/cluster/cni/default.nix +++ b/pkgs/applications/networking/cluster/cni/default.nix @@ -15,7 +15,7 @@ buildGoPackage rec { meta = with stdenv.lib; { description = "Container Network Interface - networking for Linux containers"; license = licenses.asl20; - homepage = https://github.com/containernetworking/cni; + homepage = "https://github.com/containernetworking/cni"; maintainers = with maintainers; [ offline vdemeester ]; platforms = [ "x86_64-linux" ]; }; diff --git a/pkgs/applications/networking/cluster/cni/plugins.nix b/pkgs/applications/networking/cluster/cni/plugins.nix index d0186fb9b4c..8988c7efc33 100644 --- a/pkgs/applications/networking/cluster/cni/plugins.nix +++ b/pkgs/applications/networking/cluster/cni/plugins.nix @@ -1,13 +1,13 @@ { stdenv, lib, fetchFromGitHub, go, removeReferencesTo, buildGoPackage }: buildGoPackage rec { pname = "cni-plugins"; - version = "0.8.3"; + version = "0.8.4"; src = fetchFromGitHub { owner = "containernetworking"; repo = "plugins"; rev = "v${version}"; - sha256 = "0dc4fs08x4x518yhgvq3drjvansnc0cb8rm4h5wiw7k3whjii3cd"; + sha256 = "02kz6y3klhbriybsskn4hmldwli28cycnp2klsm2x0y9c73iczdp"; }; goDeps = ./plugins-deps.nix; @@ -32,7 +32,7 @@ buildGoPackage rec { ]; meta = with lib; { description = "Some standard networking plugins, maintained by the CNI team"; - homepage = https://github.com/containernetworking/plugins; + homepage = "https://github.com/containernetworking/plugins"; license = licenses.asl20; platforms = platforms.linux; maintainers = with maintainers; [ cstrahan saschagrunert ]; diff --git a/pkgs/applications/networking/cluster/docker-machine/default.nix b/pkgs/applications/networking/cluster/docker-machine/default.nix index 115dc3835fc..32108426032 100644 --- a/pkgs/applications/networking/cluster/docker-machine/default.nix +++ b/pkgs/applications/networking/cluster/docker-machine/default.nix @@ -24,7 +24,7 @@ buildGoPackage rec { ''; meta = with stdenv.lib; { - homepage = https://docs.docker.com/machine/; + homepage = "https://docs.docker.com/machine/"; description = "Docker Machine is a tool that lets you install Docker Engine on virtual hosts, and manage Docker Engine on the hosts."; license = licenses.asl20; maintainers = with maintainers; [ offline tailhook ]; diff --git a/pkgs/applications/networking/cluster/docker-machine/hyperkit.nix b/pkgs/applications/networking/cluster/docker-machine/hyperkit.nix new file mode 100644 index 00000000000..ba3b1e4d889 --- /dev/null +++ b/pkgs/applications/networking/cluster/docker-machine/hyperkit.nix @@ -0,0 +1,22 @@ +{ lib, buildGoModule, minikube }: + +buildGoModule rec { + inherit (minikube) version src nativeBuildInputs buildInputs goPackagePath preBuild; + + pname = "docker-machine-hyperkit"; + subPackages = [ "cmd/drivers/hyperkit" ]; + + modSha256 = minikube.go-modules.outputHash; + + postInstall = '' + mv $out/bin/hyperkit $out/bin/docker-machine-driver-hyperkit + ''; + + meta = with lib; { + homepage = "https://github.com/kubernetes/minikube/blob/master/docs/drivers.md"; + description = "HyperKit driver for docker-machine."; + license = licenses.asl20; + maintainers = with maintainers; [ atkinschang ]; + platforms = platforms.darwin; + }; +} diff --git a/pkgs/applications/networking/cluster/docker-machine/kvm.nix b/pkgs/applications/networking/cluster/docker-machine/kvm.nix index de122dd2a5a..9352ba69da8 100644 --- a/pkgs/applications/networking/cluster/docker-machine/kvm.nix +++ b/pkgs/applications/networking/cluster/docker-machine/kvm.nix @@ -19,7 +19,7 @@ buildGoPackage rec { buildInputs = [ libvirt ]; meta = with stdenv.lib; { - homepage = https://github.com/dhiltgen/docker-machine-kvm; + homepage = "https://github.com/dhiltgen/docker-machine-kvm"; description = "KVM driver for docker-machine."; license = licenses.asl20; maintainers = with maintainers; [ offline ]; diff --git a/pkgs/applications/networking/cluster/docker-machine/kvm2.nix b/pkgs/applications/networking/cluster/docker-machine/kvm2.nix index eb2946cec77..6659b18b1bd 100644 --- a/pkgs/applications/networking/cluster/docker-machine/kvm2.nix +++ b/pkgs/applications/networking/cluster/docker-machine/kvm2.nix @@ -1,32 +1,22 @@ -{ stdenv, buildGoModule, libvirt, pkgconfig, minikube }: +{ lib, buildGoModule, minikube }: buildGoModule rec { - pname = "docker-machine-kvm2"; - version = minikube.version; + inherit (minikube) version src nativeBuildInputs buildInputs goPackagePath preBuild; - goPackagePath = "k8s.io/minikube"; + pname = "docker-machine-kvm2"; subPackages = [ "cmd/drivers/kvm" ]; - src = minikube.src; - - modSha256 = minikube.go-modules.outputHash; - - nativeBuildInputs = [ pkgconfig ]; - buildInputs = [ libvirt ]; - - preBuild = '' - export buildFlagsArray=(-ldflags="-X k8s.io/minikube/pkg/drivers/kvm/version.VERSION=v${version}") - ''; + modSha256 = minikube.go-modules.outputHash; postInstall = '' mv $out/bin/kvm $out/bin/docker-machine-driver-kvm2 ''; - meta = with stdenv.lib; { - homepage = https://github.com/kubernetes/minikube/blob/master/docs/drivers.md; + meta = with lib; { + homepage = "https://github.com/kubernetes/minikube/blob/master/docs/drivers.md"; description = "KVM2 driver for docker-machine."; license = licenses.asl20; - maintainers = with maintainers; [ tadfisher ]; + maintainers = with maintainers; [ tadfisher atkinschang ]; platforms = platforms.unix; }; } diff --git a/pkgs/applications/networking/cluster/docker-machine/xhyve-deps.nix b/pkgs/applications/networking/cluster/docker-machine/xhyve-deps.nix deleted file mode 100644 index 99cb7b98f5c..00000000000 --- a/pkgs/applications/networking/cluster/docker-machine/xhyve-deps.nix +++ /dev/null @@ -1,21 +0,0 @@ -# This file was generated by https://github.com/kamilchm/go2nix v1.2.1 -[ - { - goPackagePath = "github.com/docker/machine"; - fetch = { - type = "git"; - url = "https://github.com/docker/machine"; - rev = "5b274558ea6ca822c06dd407a4e774a0105c3f60"; - sha256 = "1wdq9h4bx7awgclh969gvmcnl9jvgv7ldfklnclh5iv47mi7q22d"; - }; - } - { - goPackagePath = "github.com/zchee/libhyperkit"; - fetch = { - type = "git"; - url = "https://github.com/zchee/libhyperkit"; - rev = "1a19a7693fac32b46ec6cdd22da6fbec974447fc"; - sha256 = "119f5gcl24znwnmi837jk667asd3lirx32jldpd4mbyb3sm9nz24"; - }; - } -] diff --git a/pkgs/applications/networking/cluster/docker-machine/xhyve.nix b/pkgs/applications/networking/cluster/docker-machine/xhyve.nix index 1c2caff50d5..8c63a70b6d6 100644 --- a/pkgs/applications/networking/cluster/docker-machine/xhyve.nix +++ b/pkgs/applications/networking/cluster/docker-machine/xhyve.nix @@ -1,24 +1,36 @@ -{ stdenv, buildGoPackage, fetchFromGitHub, pkgconfig, Hypervisor, vmnet }: +{ stdenv, buildGoPackage, fetchFromGitHub, fetchpatch, pkgconfig, cctools, Hypervisor, vmnet }: buildGoPackage rec { pname = "docker-machine-xhyve"; - version = "0.3.3"; + version = "0.4.0"; goPackagePath = "github.com/zchee/docker-machine-driver-xhyve"; - goDeps = ./xhyve-deps.nix; + + # https://github.com/machine-drivers/docker-machine-driver-xhyve/pull/225 + patches = fetchpatch { + url = "https://github.com/machine-drivers/docker-machine-driver-xhyve/commit/546256494bf2ccc33e4125bf45f504b0e3027d5a.patch"; + sha256 = "1i8wxqccqkxvqrbsyd0g9s0kdskd8xi2jv0c1bji9aj4rq0a8cgz"; + }; + + preBuild = '' + make -C go/src/${goPackagePath} CC=${stdenv.cc}/bin/cc LIBTOOL=${cctools}/bin/libtool GIT_CMD=: lib9p + export CGO_CFLAGS=-I$(pwd)/go/src/${goPackagePath}/vendor/github.com/jceel/lib9p + export CGO_LDFLAGS=$(pwd)/go/src/${goPackagePath}/vendor/build/lib9p/lib9p.a + ''; + buildFlags = "--tags lib9p"; src = fetchFromGitHub { rev = "v${version}"; - owner = "zchee"; + owner = "machine-drivers"; repo = "docker-machine-driver-xhyve"; - sha256 = "0rj6pyqp4yv4j28bglqjs95rip5i77vv8mrkmqv1rxrsl3i8aqqy"; + sha256 = "0000v97fr8xc5b39v44hsa87wrbk4bcwyaaivxv4hxlf4vlgg863"; }; nativeBuildInputs = [ pkgconfig ]; buildInputs = [ Hypervisor vmnet ]; meta = with stdenv.lib; { - homepage = https://github.com/zchee/docker-machine-driver-xhyve; + homepage = "https://github.com/machine-drivers/docker-machine-driver-xhyve"; description = "Xhyve driver for docker-machine."; license = licenses.bsd3; maintainers = with maintainers; [ periklis ]; diff --git a/pkgs/applications/networking/cluster/flink/default.nix b/pkgs/applications/networking/cluster/flink/default.nix index f8c73c65991..3d418f9a47f 100644 --- a/pkgs/applications/networking/cluster/flink/default.nix +++ b/pkgs/applications/networking/cluster/flink/default.nix @@ -44,11 +44,11 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "A distributed stream processing framework"; - homepage = https://flink.apache.org; - downloadPage = https://flink.apache.org/downloads.html; + homepage = "https://flink.apache.org"; + downloadPage = "https://flink.apache.org/downloads.html"; license = licenses.asl20; platforms = platforms.all; maintainers = with maintainers; [ mbode ]; - repositories.git = git://git.apache.org/flink.git; + repositories.git = "git://git.apache.org/flink.git"; }; } diff --git a/pkgs/applications/networking/cluster/fluxctl/default.nix b/pkgs/applications/networking/cluster/fluxctl/default.nix index 904eabfcda8..10991d47cca 100644 --- a/pkgs/applications/networking/cluster/fluxctl/default.nix +++ b/pkgs/applications/networking/cluster/fluxctl/default.nix @@ -2,19 +2,21 @@ buildGoModule rec { pname = "fluxctl"; - version = "1.16.0"; + version = "1.19.0"; src = fetchFromGitHub { owner = "weaveworks"; repo = "flux"; rev = version; - sha256 = "1yk78w9cwssk5y69iapfzqf7mnrkam3w64x4zsx3zjpdmvp9dq7l"; + sha256 = "1w6ndp0nrpps6pkxnq38hikbnzwahi6j9gn8l0bxd0qkf7cjc5w0"; }; - modSha256 = "17rh8yilxqv0dwljwm5ay43diwcy5pa1g2jff9wyhsh8q7sy9wln"; + modSha256 = "0zwq7n1lggj27j5yxgfplbaccw5fhbm7vm0sja839r1jamrn3ips"; subPackages = [ "cmd/fluxctl" ]; + buildFlagsArray = [ "-ldflags=-s -w -X main.version=${version}" ]; + meta = with stdenv.lib; { description = "CLI client for Flux, the GitOps Kubernetes operator"; homepage = "https://github.com/fluxcd/flux"; diff --git a/pkgs/applications/networking/cluster/habitat/default.nix b/pkgs/applications/networking/cluster/habitat/default.nix index 9bf801ee93d..f2f3925fbe4 100644 --- a/pkgs/applications/networking/cluster/habitat/default.nix +++ b/pkgs/applications/networking/cluster/habitat/default.nix @@ -1,24 +1,23 @@ -{ lib, fetchFromGitHub, rustPlatform, pkgconfig -, libsodium, libarchive, openssl }: +{ stdenv, fetchFromGitHub, rustPlatform, pkgconfig +, libsodium, libarchive, openssl, zeromq }: -with rustPlatform; - -buildRustPackage rec { +rustPlatform.buildRustPackage rec { pname = "habitat"; - version = "0.30.2"; + # Newer versions required protobuf, which requires some finesse to get to + # compile with the vendored protobuf crate. + version = "0.90.6"; src = fetchFromGitHub { owner = "habitat-sh"; repo = "habitat"; rev = version; - sha256 = "0pqrm85pd9hqn5fwqjbyyrrfh4k7q9mi9qy9hm8yigk5l8mw44y1"; + sha256 = "0rwi0lkmhlq4i8fba3s9nd9ajhz2dqxzkgfp5i8y0rvbfmhmfd6b"; }; - cargoSha256 = "1ahfm5agvabqqqgjsyjb95xxbc7mng1mdyclcakwp1m1qdkxx9p0"; - - buildInputs = [ libsodium libarchive openssl ]; + cargoSha256 = "08sncz0jgsr2s821j3s4bk7d54xqwmnld7m57avavym1xqvsnbmy"; nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ libsodium libarchive openssl zeromq ]; cargoBuildFlags = ["--package hab"]; @@ -29,12 +28,11 @@ buildRustPackage rec { runHook postCheck ''; - meta = with lib; { + meta = with stdenv.lib; { description = "An application automation framework"; - homepage = https://www.habitat.sh; + homepage = "https://www.habitat.sh"; license = licenses.asl20; - maintainers = [ maintainers.rushmorem ]; - platforms = [ "x86_64-linux" "x86_64-darwin" ]; - broken = true; # mark temporary as broken due git dependencies + maintainers = with maintainers; [ rushmorem ]; + platforms = [ "x86_64-linux" ]; }; } diff --git a/pkgs/applications/networking/cluster/helm/default.nix b/pkgs/applications/networking/cluster/helm/default.nix index 45b6e9dcf33..aee162ba6f2 100644 --- a/pkgs/applications/networking/cluster/helm/default.nix +++ b/pkgs/applications/networking/cluster/helm/default.nix @@ -2,19 +2,18 @@ buildGoModule rec { pname = "helm"; - version = "3.0.1"; + version = "3.1.2"; src = fetchFromGitHub { owner = "helm"; repo = "helm"; rev = "v${version}"; - sha256 = "0l5rmmrb6b57w1szwp6g7ad3xv0pgvc394mzjr4bi3bzcjsn7wny"; + sha256 = "0pg5cwgyfb4isy2fn233kj3bdn0i8qqp90yzix0khs5maalpnrk1"; }; - modSha256 = "0xjzzwmq3i77anb7w2qfnz7vc0gxq02lylj0xs6dzwl543winshm"; + modSha256 = "0618zzi4x37ahsrazsr82anghhfva8yaryzb3p5d737p3ixbiyv8"; - goPackagePath = "k8s.io/helm"; subPackages = [ "cmd/helm" ]; - buildFlagsArray = [ "-ldflags=-w -s -X helm.sh/helm/v3/internal/version.gitCommit=v${version}" ]; + buildFlagsArray = [ "-ldflags=-w -s -X helm.sh/helm/v3/internal/version.version=v${version}" ]; nativeBuildInputs = [ installShellFiles ]; postInstall = '' @@ -24,9 +23,9 @@ buildGoModule rec { ''; meta = with stdenv.lib; { - homepage = https://github.com/kubernetes/helm; + homepage = "https://github.com/kubernetes/helm"; description = "A package manager for kubernetes"; license = licenses.asl20; - maintainers = with maintainers; [ rlupton20 edude03 saschagrunert ]; + maintainers = with maintainers; [ rlupton20 edude03 saschagrunert Frostman ]; }; } diff --git a/pkgs/applications/networking/cluster/helmfile/default.nix b/pkgs/applications/networking/cluster/helmfile/default.nix index 6decad2f9fb..1318ff003de 100644 --- a/pkgs/applications/networking/cluster/helmfile/default.nix +++ b/pkgs/applications/networking/cluster/helmfile/default.nix @@ -1,6 +1,6 @@ { lib, buildGoModule, fetchFromGitHub, makeWrapper, kubernetes-helm, ... }: -let version = "0.85.0"; in +let version = "0.106.3"; in buildGoModule { pname = "helmfile"; @@ -10,12 +10,12 @@ buildGoModule { owner = "roboll"; repo = "helmfile"; rev = "v${version}"; - sha256 = "0k1019ddzhhl8kn70ibqf6srlfv92jkc26m78pic5c7ibqyq5fds"; + sha256 = "0pwkkgdcj9vx6nk574iaqwn074qfpgqd1c44d3kr3xdbac89yfyf"; }; goPackagePath = "github.com/roboll/helmfile"; - modSha256 = "1npjm3rs32c1rwx8xb9s03jhd156da6p66hpaqccm7b6zxsm32nv"; + modSha256 = "1yv2b44qac0rms66v0qg13wsga0di6hwxa4dh2l0b1xvaf75ysay"; nativeBuildInputs = [ makeWrapper ]; @@ -31,7 +31,7 @@ buildGoModule { meta = { description = "Deploy Kubernetes Helm charts"; - homepage = https://github.com/roboll/helmfile; + homepage = "https://github.com/roboll/helmfile"; license = lib.licenses.mit; maintainers = with lib.maintainers; [ pneumaticat yurrriq ]; platforms = lib.platforms.unix; diff --git a/pkgs/applications/networking/cluster/heptio-ark/default.nix b/pkgs/applications/networking/cluster/heptio-ark/default.nix index b9413577b10..21f4011f070 100644 --- a/pkgs/applications/networking/cluster/heptio-ark/default.nix +++ b/pkgs/applications/networking/cluster/heptio-ark/default.nix @@ -17,7 +17,7 @@ buildGoPackage rec { meta = with stdenv.lib; { description = "A utility for managing disaster recovery, specifically for your Kubernetes cluster resources and persistent volumes"; - homepage = https://heptio.github.io/ark/; + homepage = "https://heptio.github.io/ark/"; license = licenses.asl20; maintainers = [maintainers.mbode]; platforms = platforms.unix; diff --git a/pkgs/applications/networking/cluster/hetzner-kube/default.nix b/pkgs/applications/networking/cluster/hetzner-kube/default.nix index 4de0c3fbd7b..1d9940c8f31 100644 --- a/pkgs/applications/networking/cluster/hetzner-kube/default.nix +++ b/pkgs/applications/networking/cluster/hetzner-kube/default.nix @@ -2,16 +2,16 @@ buildGoModule rec { pname = "hetzner-kube"; - version = "0.4.1"; + version = "0.5.1"; src = fetchFromGitHub { owner = "xetys"; repo = "hetzner-kube"; rev = version; - sha256 = "11202i3340vaz8xh59gwj5x0djcgbzq9jfy2214lcpml71qc85f0"; + sha256 = "1iqgpmljqx6rhmvsir2675waj78amcfiw08knwvlmavjgpxx2ysw"; }; - modSha256 = "1j04xyjkz7jcqrs5p5z94jqagrzcxjr9m3lyp8i91c0ymxf5m2g3"; + modSha256 = "0jjrk93wdi13wrb5gchhqk7rgwm74kcizrbqsibgkgs2dszwfazh"; buildFlagsArray = '' -ldflags= @@ -20,7 +20,7 @@ buildGoModule rec { meta = { description = "A CLI tool for provisioning Kubernetes clusters on Hetzner Cloud"; - homepage = https://github.com/xetys/hetzner-kube; + homepage = "https://github.com/xetys/hetzner-kube"; license = lib.licenses.asl20; maintainers = with lib.maintainers; [ eliasp ]; platforms = lib.platforms.unix; diff --git a/pkgs/applications/networking/cluster/jx/default.nix b/pkgs/applications/networking/cluster/jx/default.nix index 88aa8777ee5..e2c0b663bef 100644 --- a/pkgs/applications/networking/cluster/jx/default.nix +++ b/pkgs/applications/networking/cluster/jx/default.nix @@ -28,7 +28,7 @@ buildGoModule rec { meta = with lib; { description = "JX is a command line tool for installing and using Jenkins X."; - homepage = https://jenkins-x.io; + homepage = "https://jenkins-x.io"; longDescription = '' Jenkins X provides automated CI+CD for Kubernetes with Preview Environments on Pull Requests using Jenkins, Knative Build, Prow, diff --git a/pkgs/applications/networking/cluster/k3s/default.nix b/pkgs/applications/networking/cluster/k3s/default.nix new file mode 100644 index 00000000000..b18e1f08dd4 --- /dev/null +++ b/pkgs/applications/networking/cluster/k3s/default.nix @@ -0,0 +1,235 @@ +{ stdenv, lib, makeWrapper, socat, iptables, iproute, bridge-utils +, conntrack-tools, buildGoPackage, git, runc, libseccomp, pkgconfig +, ethtool, utillinux, ipset, fetchFromGitHub, fetchurl, fetchzip +, fetchgit +}: + +with lib; + +# k3s is a kinda weird derivation. One of the main points of k3s is the +# simplicity of it being one binary that can perform several tasks. +# However, when you have a good package manager (like nix), that doesn't +# actually make much of a difference; you don't really care if it's one binary +# or 10 since with a good package manager, installing and running it is +# identical. +# Since upstream k3s packages itself as one large binary with several +# "personalities" (in the form of subcommands like 'k3s agent' and 'k3s +# kubectl'), it ends up being easiest to mostly mimic upstream packaging, with +# some exceptions. +# K3s also carries patches to some packages (such as containerd and cni +# plugins), so we intentionally use the k3s versions of those binaries for k3s, +# even if the upstream version of those binaries exist in nixpkgs already. In +# the end, that means we have a thick k3s binary that behaves like the upstream +# one for the most part. +# However, k3s also bundles several pieces of unpatched software, from the +# strongswan vpn software, to iptables, to socat, conntrack, busybox, etc. +# Those pieces of software we entirely ignore upstream's handling of, and just +# make sure they're in the path if desired. +let + k3sVersion = "1.17.3+k3s1"; # k3s git tag + traefikChartVersion = "1.81.0"; # taken from ./scripts/version.sh at the above k3s tag + k3sRootVersion = "0.3.0"; # taken from .s/cripts/version.sh at the above k3s tag + # bundled into the k3s binary + traefikChart = fetchurl { + url = "https://kubernetes-charts.storage.googleapis.com/traefik-${traefikChartVersion}.tgz"; + sha256 = "1aqpzgjlvqhil0g3angz94zd4xbl4iq0qmpjcy5aq1xv9qciwdi9"; + }; + # so, k3s is a complicated thing to package + # This derivation attempts to avoid including any random binaries from the + # internet. k3s-root is _mostly_ binaries built to be bundled in k3s (which + # we don't care about doing, we can add those as build or runtime + # dependencies using a real package manager). + # In addition to those binaries, it's also configuration though (right now + # mostly strongswan configuration), and k3s does use those files. + # As such, we download it in order to grab 'etc' and bundle it into the final + # k3s binary. + k3sRoot = fetchzip { + # Note: marked as apache 2.0 license + url = "https://github.com/rancher/k3s-root/releases/download/v${k3sRootVersion}/k3s-root-amd64.tar"; + sha256 = "12xafn5jivl8lqdcs25b28xrc4mf7yf1xif5np169nvvxgvmpdxp"; + stripRoot=false; + }; + k3sPlugins = buildGoPackage rec { + name = "k3s-cni-plugins"; + version = "0.7.6-k3s1"; # from ./scripts/version.sh 'VERSION_CNIPLUGINS'; update when k3s's repo is updated. + + goPackagePath = "github.com/containernetworking/plugins"; + subPackages = [ "." ]; + + src = fetchFromGitHub { + owner = "rancher"; + repo = "plugins"; + rev = "v${version}"; + sha256 = "0ax72z1ziann352bp6khfds8vlf3bbkqckrkpx4l4jxgqks45izs"; + }; + + meta = { + description = "CNI plugins, as patched by rancher for k3s"; + license = licenses.asl20; + homepage = "https://k3s.io"; + maintainers = [ maintainers.euank ]; + platforms = platforms.linux; + }; + }; + # Grab this separately from a build because it's used by both stages of the + # k3s build. + k3sRepo = fetchgit { + url = "https://github.com/rancher/k3s"; + rev = "v${k3sVersion}"; + leaveDotGit = true; # ./scripts/version.sh depends on git + sha256 = "0qahyc0mf9glxj49va6d20mcncqg4svfic2iz8b1lqid5c4g68mm"; + }; + # Stage 1 of the k3s build: + # Let's talk about how k3s is structured. + # One of the ideas of k3s is that there's the single "k3s" binary which can + # do everything you need, from running a k3s server, to being a worker node, + # to running kubectl. + # The way that actually works is that k3s is a single go binary that contains + # a bunch of bindata that it unpacks at runtime into directories (either the + # user's home directory or /var/lib/rancher if run as root). + # This bindata includes both binaries and configuration. + # In order to let nixpkgs do all its autostripping/patching/etc, we split this into two derivations. + # First, we build all the binaries that get packed into the thick k3s binary + # (and output them from one derivation so they'll all be suitably patched up). + # Then, we bundle those binaries into our thick k3s binary and use that as + # the final single output. + # This approach was chosen because it ensures the bundled binaries all are + # correctly built to run with nix (we can lean on the existing buildGoPackage + # stuff), and we can again lean on that tooling for the final k3s binary too. + # Other alternatives would be to manually run the + # strip/patchelf/remove-references step ourselves in the installPhase of the + # derivation when we've built all the binaries, but haven't bundled them in + # with generated bindata yet. + k3sBuildStage1 = buildGoPackage rec { + name = "k3s-build-1"; + version = "${k3sVersion}"; + + goPackagePath = "github.com/rancher/k3s"; + + src = k3sRepo; + + patches = [ ./patches/00-k3s.patch ]; + + nativeBuildInputs = [ git pkgconfig ]; + buildInputs = [ libseccomp ]; + + buildPhase = '' + pushd go/src/${goPackagePath} + + patchShebangs ./scripts/build ./scripts/version.sh + mkdir -p bin + ./scripts/build + + popd + ''; + + installPhase = '' + pushd go/src/${goPackagePath} + + mkdir -p "$bin/bin" + install -m 0755 -t "$bin/bin" ./bin/* + + popd + ''; + + meta = { + description = "The various binaries that get packaged into the final k3s binary."; + license = licenses.asl20; + homepage = "https://k3s.io"; + maintainers = [ maintainers.euank ]; + platforms = platforms.linux; + }; + }; + k3sBuild = buildGoPackage rec { + name = "k3s-build"; + version = "${k3sVersion}"; + + goPackagePath = "github.com/rancher/k3s"; + + src = k3sRepo; + + patches = [ ./patches/00-k3s.patch ]; + + nativeBuildInputs = [ git pkgconfig ]; + buildInputs = [ k3sBuildStage1 k3sPlugins runc ]; + + # In order to build the thick k3s binary (which is what + # ./scripts/package-cli does), we need to get all the binaries that script + # expects in place. + buildPhase = '' + pushd go/src/${goPackagePath} + + patchShebangs ./scripts/build ./scripts/version.sh ./scripts/package-cli + + mkdir -p bin + + install -m 0755 -t ./bin ${k3sBuildStage1}/bin/* + install -m 0755 -T "${k3sPlugins}/bin/plugins" ./bin/cni + # Note: use the already-nixpkgs-bundled k3s rather than the one bundled + # in k3s because the k3s one is completely unmodified from upstream + # (unlike containerd, cni, etc) + install -m 0755 -T "${runc}/bin/runc" ./bin/runc + cp -R "${k3sRoot}/etc" ./etc + mkdir -p "build/static/charts" + cp "${traefikChart}" "build/static/charts/traefik-${traefikChartVersion}.tgz" + + ./scripts/package-cli + + popd + ''; + + installPhase = '' + pushd go/src/${goPackagePath} + + mkdir -p "$bin/bin" + install -m 0755 -t "$bin/bin" ./dist/artifacts/k3s + + popd + ''; + + meta = { + description = "The k3s go binary which is used by the final wrapped output below."; + license = licenses.asl20; + homepage = "https://k3s.io"; + maintainers = [ maintainers.euank ]; + platforms = platforms.linux; + }; + }; +in +stdenv.mkDerivation rec { + name = "k3s"; + + # Important utilities used by the kubelet, see + # https://github.com/kubernetes/kubernetes/issues/26093#issuecomment-237202494 + # Note the list in that issue is stale and some aren't relevant for k3s. + k3sRuntimeDeps = [ + socat iptables iproute bridge-utils ethtool utillinux ipset conntrack-tools + ]; + + buildInputs = [ + k3sBuild makeWrapper + ] ++ k3sRuntimeDeps; + + unpackPhase = "true"; + + # And, one final derivation (you thought the last one was it, right?) + # We got the binary we wanted above, but it doesn't have all the runtime + # dependencies k8s wants, including mount utilities for kubelet, networking + # tools for cni/kubelet stuff, etc + # Use a wrapper script to reference all the binaries that k3s tries to + # execute, but that we didn't bundle with it. + installPhase = '' + mkdir -p "$out/bin" + makeWrapper ${k3sBuild}/bin/k3s "$out/bin/k3s" \ + --prefix PATH : ${lib.makeBinPath k3sRuntimeDeps} \ + --prefix PATH : "$out/bin" + ''; + + meta = { + description = "A lightweight Kubernetes distribution."; + license = licenses.asl20; + homepage = "https://k3s.io"; + maintainers = [ maintainers.euank ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/applications/networking/cluster/k3s/patches/00-k3s.patch b/pkgs/applications/networking/cluster/k3s/patches/00-k3s.patch new file mode 100644 index 00000000000..afe2c356aa4 --- /dev/null +++ b/pkgs/applications/networking/cluster/k3s/patches/00-k3s.patch @@ -0,0 +1,74 @@ +diff --git a/main.go b/main.go +index 62908bb7bb..0527222887 100644 +--- a/main.go ++++ b/main.go +@@ -1,5 +1,5 @@ + //go:generate go run pkg/codegen/cleanup/main.go +-//go:generate /bin/rm -rf pkg/generated ++//go:generate rm -rf pkg/generated + //go:generate go run pkg/codegen/main.go + //go:generate go fmt pkg/deploy/zz_generated_bindata.go + //go:generate go fmt pkg/static/zz_generated_bindata.go +diff --git a/scripts/build b/scripts/build +index 72d3c07ece..3e5455b262 100755 +--- a/scripts/build ++++ b/scripts/build +@@ -10,7 +10,8 @@ PKG_CONTAINERD="github.com/containerd/containerd" + PKG_RANCHER_CONTAINERD="github.com/rancher/containerd" + PKG_CRICTL="github.com/kubernetes-sigs/cri-tools" + +-buildDate=$(date -u '+%Y-%m-%dT%H:%M:%SZ') ++# Deterministic build date ++buildDate="$(date -d "$(git log -1 --format=%ai)" -u "+%Y-%m-%dT%H:%M:%SZ")" + + VENDOR_PREFIX="${PKG}/vendor/" + VERSIONFLAGS=" +@@ -82,17 +83,7 @@ cleanup() { + } + + INSTALLBIN=$(pwd)/bin +-if [ ! -x ${INSTALLBIN}/cni ]; then +-( +- echo Building cni +- TMPDIR=$(mktemp -d) +- trap cleanup EXIT +- WORKDIR=$TMPDIR/src/github.com/containernetworking/plugins +- git clone -b $VERSION_CNIPLUGINS https://github.com/rancher/plugins.git $WORKDIR +- cd $WORKDIR +- GOPATH=$TMPDIR CGO_ENABLED=0 go build -tags "$TAGS" -ldflags "$LDFLAGS $STATIC" -o $INSTALLBIN/cni +-) +-fi ++# skip building cni, use our separately built one + # echo Building agent + # CGO_ENABLED=1 go build -tags "$TAGS" -ldflags "$VERSIONFLAGS $LDFLAGS $STATIC" -o bin/k3s-agent ./cmd/agent/main.go + echo Building server +@@ -108,9 +99,8 @@ ln -s containerd ./bin/ctr + #CGO_ENABLED=1 go build -tags "$TAGS" -ldflags "$VERSIONFLAGS $LDFLAGS $STATIC_SQLITE" -o bin/ctr ./cmd/ctr/main.go + # echo Building containerd + # CGO_ENABLED=0 go build -tags "$TAGS" -ldflags "$VERSIONFLAGS $LDFLAGS $STATIC" -o bin/containerd ./cmd/containerd/ +-echo Building runc +-make EXTRA_LDFLAGS="-w -s" BUILDTAGS="apparmor seccomp" -C ./vendor/github.com/opencontainers/runc static +-cp -f ./vendor/github.com/opencontainers/runc/runc ./bin/runc ++ ++# skip building runc; use our packaged one + + echo Building containerd-shim + make -C ./vendor/github.com/containerd/containerd bin/containerd-shim +diff --git a/scripts/package-cli b/scripts/package-cli +index 4c66ce32df..6d1e0c03cb 100755 +--- a/scripts/package-cli ++++ b/scripts/package-cli +@@ -55,10 +55,10 @@ LDFLAGS=" + -X github.com/rancher/k3s/pkg/version.GitCommit=${COMMIT:0:8} + -w -s + " +-STATIC="-extldflags '-static'" + if [ "$DQLITE" = "true" ]; then + DQLITE_TAGS="dqlite" + fi +-CGO_ENABLED=0 go build -tags "$DQLITE_TAGS" -ldflags "$LDFLAGS $STATIC" -o ${CMD_NAME} ./cmd/k3s/main.go ++go build -tags "$DQLITE_TAGS" -ldflags "$LDFLAGS" -o ${CMD_NAME} ./cmd/k3s/main.go + +-./scripts/build-upload ${CMD_NAME} ${COMMIT} ++# for nixos, don't upload it ++# ./scripts/build-upload ${CMD_NAME} ${COMMIT} diff --git a/pkgs/applications/networking/cluster/k9s/default.nix b/pkgs/applications/networking/cluster/k9s/default.nix index 6fbad55f807..1cf76e1cff3 100644 --- a/pkgs/applications/networking/cluster/k9s/default.nix +++ b/pkgs/applications/networking/cluster/k9s/default.nix @@ -2,29 +2,27 @@ buildGoModule rec { pname = "k9s"; - version = "0.9.3"; - # rev is the release commit, mainly for version command output - rev = "1a9a83b34cdd0c9b4e793ed6b4b5c16ea1a949a0"; + version = "0.18.1"; src = fetchFromGitHub { owner = "derailed"; repo = "k9s"; - rev = version; - sha256 = "0k27mfccz563r18zlbaxll305vrmrx19ym6znsikvqxlmhy86g36"; + rev = "v${version}"; + sha256 = "0a5x4yamvx2qlwngfvainbhplwp0hqwgvdqlj2jbrbz4hfhr1l59"; }; buildFlagsArray = '' -ldflags= -s -w -X github.com/derailed/k9s/cmd.version=${version} - -X github.com/derailed/k9s/cmd.commit=${rev} + -X github.com/derailed/k9s/cmd.commit=${src.rev} ''; - modSha256 = "09rwbl8zd06ax5hidm5l1schwqvsr5ndlqh09w1rq9fqjijy649y"; + modSha256 = "0wpf6iyq6p3a8azdkn17gdp01wq9khyzr1bab6qgvsnsnhnjzcky"; meta = with stdenv.lib; { description = "Kubernetes CLI To Manage Your Clusters In Style."; - homepage = https://github.com/derailed/k9s; + homepage = "https://github.com/derailed/k9s"; license = licenses.asl20; maintainers = with maintainers; [ Gonzih ]; }; diff --git a/pkgs/applications/networking/cluster/kanif/default.nix b/pkgs/applications/networking/cluster/kanif/default.nix index 52abc318990..ebf98840ee2 100644 --- a/pkgs/applications/networking/cluster/kanif/default.nix +++ b/pkgs/applications/networking/cluster/kanif/default.nix @@ -25,7 +25,7 @@ stdenv.mkDerivation rec { directories to several nodes ('kaput' command), and to gather several remote files or directories locally ('kaget' command). It relies on TakTuk for efficiency and scalability.''; - homepage = http://taktuk.gforge.inria.fr/kanif; + homepage = "http://taktuk.gforge.inria.fr/kanif"; license = stdenv.lib.licenses.gpl2; maintainers = [ stdenv.lib.maintainers.bzizou ]; platforms = stdenv.lib.platforms.linux; diff --git a/pkgs/applications/networking/cluster/kompose/default.nix b/pkgs/applications/networking/cluster/kompose/default.nix index 1a14e1ed273..09a69f4b80e 100644 --- a/pkgs/applications/networking/cluster/kompose/default.nix +++ b/pkgs/applications/networking/cluster/kompose/default.nix @@ -1,8 +1,8 @@ -{ stdenv, buildGoPackage, fetchFromGitHub }: +{ lib, buildGoPackage, fetchFromGitHub, installShellFiles }: buildGoPackage rec { pname = "kompose"; - version = "1.18.0"; + version = "1.21.0"; goPackagePath = "github.com/kubernetes/kompose"; @@ -10,12 +10,19 @@ buildGoPackage rec { rev = "v${version}"; owner = "kubernetes"; repo = "kompose"; - sha256 = "1hb4bs710n9fghphhfakwg42wjscf136dcr05zwwfg7iyqx2cipc"; + sha256 = "15a1alf6ywwfc4z5kdcnv64fp3cfy3qrcw62ny6xyn1kh1w24vkh"; }; - meta = with stdenv.lib; { + nativeBuildInputs = [ installShellFiles ]; + postInstall = '' + $bin/bin/kompose completion bash > kompose.bash + $bin/bin/kompose completion zsh > kompose.zsh + installShellCompletion kompose.{bash,zsh} + ''; + + meta = with lib; { description = "A tool to help users who are familiar with docker-compose move to Kubernetes"; - homepage = https://github.com/kubernetes/kompose; + homepage = "https://kompose.io"; license = licenses.asl20; maintainers = with maintainers; [ thpham vdemeester ]; platforms = platforms.unix; diff --git a/pkgs/applications/networking/cluster/kontemplate/default.nix b/pkgs/applications/networking/cluster/kontemplate/default.nix index 359b289dbbc..87ae71f6a48 100644 --- a/pkgs/applications/networking/cluster/kontemplate/default.nix +++ b/pkgs/applications/networking/cluster/kontemplate/default.nix @@ -20,7 +20,7 @@ buildGoPackage rec { license = licenses.gpl3; maintainers = with maintainers; [ mbode tazjin ]; platforms = platforms.unix; - repositories.git = git://github.com/tazjin/kontemplate.git; + repositories.git = "git://github.com/tazjin/kontemplate.git"; longDescription = '' Kontemplate is a simple CLI tool that can take sets of diff --git a/pkgs/applications/networking/cluster/kops/default.nix b/pkgs/applications/networking/cluster/kops/default.nix index 267f25f8bb5..a5f1806e577 100644 --- a/pkgs/applications/networking/cluster/kops/default.nix +++ b/pkgs/applications/networking/cluster/kops/default.nix @@ -18,8 +18,8 @@ let inherit sha256; }; - buildInputs = [go-bindata]; - subPackages = ["cmd/kops"]; + nativeBuildInputs = [ go-bindata ]; + subPackages = [ "cmd/kops" ]; buildFlagsArray = '' -ldflags= @@ -41,9 +41,9 @@ let meta = with stdenv.lib; { description = "Easiest way to get a production Kubernetes up and running"; - homepage = https://github.com/kubernetes/kops; + homepage = "https://github.com/kubernetes/kops"; license = licenses.asl20; - maintainers = with maintainers; [offline zimbatm kampka]; + maintainers = with maintainers; [ offline zimbatm kampka ]; platforms = platforms.unix; }; } // attrs'; @@ -60,14 +60,19 @@ in rec { version = "1.13.2"; sha256 = "0lkkg34vn020r62ga8vg5d3a8jwvq00xlv3p1s01nkz33f6salng"; }; - + kops_1_14 = mkKops { version = "1.14.1"; sha256 = "0ikd8qwrjh8s1sc95g18sm0q6p33swz2m1rjd8zw34mb2w9jv76n"; }; kops_1_15 = mkKops { - version = "1.15.0"; - sha256 = "0sjas8pn0njl767b1y15g7cci2q3kxkxwmgr0wvs7vi3n1s1sf9d"; + version = "1.15.2"; + sha256 = "1sjfd7pfi81ccq1dkgkh9xx6y94bqzlp727pvyf7l01x3d14z2b3"; + }; + + kops_1_16 = mkKops { + version = "1.16.0"; + sha256 = "1b2lzf6b29rs5imbpqp8gnp3b511lk7jrm2f62y32gmx0gyjws6a"; }; } diff --git a/pkgs/applications/networking/cluster/kube3d/default.nix b/pkgs/applications/networking/cluster/kube3d/default.nix index 7058c009f2d..2eea6adb28d 100644 --- a/pkgs/applications/networking/cluster/kube3d/default.nix +++ b/pkgs/applications/networking/cluster/kube3d/default.nix @@ -2,8 +2,8 @@ buildGoModule rec { pname = "kube3d"; - version = "1.3.1"; - k3sVersion = "0.9.1"; + version = "1.6.0"; + k3sVersion = "1.17.3-k3s1"; goPackagePath = "github.com/rancher/k3d"; @@ -11,7 +11,7 @@ buildGoModule rec { owner = "rancher"; repo = "k3d"; rev = "v${version}"; - sha256 = "0bdpjnzyxd6mdc1qv0ml89qds6305kn3wmyci2kv6g2y7r7wxvm2"; + sha256 = "0qjwqqynvgzainq66fpzczgynwk3hv7wzgfy5271fc6mj2k0zz5x"; }; buildFlagsArray = '' @@ -21,13 +21,13 @@ buildGoModule rec { -X github.com/rancher/k3d/version.K3sVersion=v${k3sVersion} ''; - modSha256 = "1qadf3gc2626l4jpad4lzi649nh8if9m6fgs2cf46r1nish16h95"; + modSha256 = "0c8bfl0hz5cfhi6jzhhylz051jiix6s7s20fn23w7wri4xaqrjn8"; meta = with stdenv.lib; { homepage = "https://github.com/rancher/k3d"; description = "A helper to run k3s (Lightweight Kubernetes. 5 less than k8s) in a docker container"; license = licenses.mit; platforms = platforms.linux; - maintainers = with maintainers; [ kuznero jlesquembre ]; + maintainers = with maintainers; [ kuznero jlesquembre ngerstle ]; }; } diff --git a/pkgs/applications/networking/cluster/kubecfg/default.nix b/pkgs/applications/networking/cluster/kubecfg/default.nix index 69d013e3f03..bf4ec949215 100644 --- a/pkgs/applications/networking/cluster/kubecfg/default.nix +++ b/pkgs/applications/networking/cluster/kubecfg/default.nix @@ -17,7 +17,7 @@ buildGoPackage { meta = { description = "A tool for managing Kubernetes resources as code"; - homepage = https://github.com/bitnami/kubecfg; + homepage = "https://github.com/bitnami/kubecfg"; license = lib.licenses.asl20; maintainers = with lib.maintainers; [ benley ]; platforms = lib.platforms.unix; diff --git a/pkgs/applications/networking/cluster/kubeless/default.nix b/pkgs/applications/networking/cluster/kubeless/default.nix index aaf183ad666..48540bffb53 100644 --- a/pkgs/applications/networking/cluster/kubeless/default.nix +++ b/pkgs/applications/networking/cluster/kubeless/default.nix @@ -23,7 +23,7 @@ buildGoPackage rec { homepage = "https://kubeless.io"; description = "The Kubernetes Native Serverless Framework"; license = licenses.asl20; - maintainers = with maintainers; [ "00-matt" ]; + maintainers = with maintainers; []; platforms = platforms.unix; }; } diff --git a/pkgs/applications/networking/cluster/kubernetes/default.nix b/pkgs/applications/networking/cluster/kubernetes/default.nix index c2751ac270a..3a91efd064c 100644 --- a/pkgs/applications/networking/cluster/kubernetes/default.nix +++ b/pkgs/applications/networking/cluster/kubernetes/default.nix @@ -15,16 +15,16 @@ with lib; stdenv.mkDerivation rec { pname = "kubernetes"; - version = "1.16.3"; + version = "1.18.1"; src = fetchFromGitHub { owner = "kubernetes"; repo = "kubernetes"; rev = "v${version}"; - sha256 = "0s2k7ik2aa7knh25r0qki7ldr3g9h87dgi8nm64j8n0yy4xvg2h3"; + sha256 = "1z109h0jqqfxvgyhmxsiggf6fb9kdrwvmv9wdi1n58n4yk65hvl6"; }; - buildInputs = [ removeReferencesTo makeWrapper which go rsync go-bindata ]; + nativeBuildInputs = [ removeReferencesTo makeWrapper which go rsync go-bindata ]; outputs = ["out" "man" "pause"]; @@ -72,7 +72,7 @@ stdenv.mkDerivation rec { meta = { description = "Production-Grade Container Scheduling and Management"; license = licenses.asl20; - homepage = https://kubernetes.io; + homepage = "https://kubernetes.io"; maintainers = with maintainers; [johanot offline saschagrunert]; platforms = platforms.unix; }; diff --git a/pkgs/applications/networking/cluster/kubeseal/default.nix b/pkgs/applications/networking/cluster/kubeseal/default.nix index 3a2463447a2..ef87b67a360 100644 --- a/pkgs/applications/networking/cluster/kubeseal/default.nix +++ b/pkgs/applications/networking/cluster/kubeseal/default.nix @@ -2,16 +2,16 @@ buildGoModule rec { pname = "kubeseal"; - version = "0.9.6"; + version = "0.12.0"; src = fetchFromGitHub { owner = "bitnami-labs"; repo = "sealed-secrets"; rev = "v${version}"; - sha256 = "09ds5qn13l6l8kl2i01hgy6pqr30z1rm447ax32lf79zp8hca3r3"; + sha256 = "0z51iwdc4m0y8wyyx3mcvbzxlrgws7n5wkcd0g7nr73irnsld4lh"; }; - modSha256 = "04dmjyz3vi2l0dfpyy42lkp2fv1vlfkvblrxh1dvb37phrkd5lbd"; + modSha256 = "029h0zr3fpzlsv9hf1d1x5j7aalxkcsyszsxjz8fqrhjafqc7zvq"; subPackages = [ "cmd/kubeseal" ]; diff --git a/pkgs/applications/networking/cluster/kubetail/default.nix b/pkgs/applications/networking/cluster/kubetail/default.nix index 779edad8de3..114c5f5af15 100644 --- a/pkgs/applications/networking/cluster/kubetail/default.nix +++ b/pkgs/applications/networking/cluster/kubetail/default.nix @@ -25,7 +25,7 @@ stdenv.mkDerivation rec { multiple pods into one stream. This is the same as running "kubectl logs -f " but for multiple pods. ''; - homepage = https://github.com/johanhaleby/kubetail; + homepage = "https://github.com/johanhaleby/kubetail"; license = licenses.asl20; maintainers = with maintainers; [ kalbasit ]; platforms = platforms.all; diff --git a/pkgs/applications/networking/cluster/kubeval/default.nix b/pkgs/applications/networking/cluster/kubeval/default.nix index 84e9b889943..569baf6000a 100644 --- a/pkgs/applications/networking/cluster/kubeval/default.nix +++ b/pkgs/applications/networking/cluster/kubeval/default.nix @@ -1,26 +1,5 @@ { stdenv, lib, fetchFromGitHub, buildGoModule, makeWrapper }: -let - - # Cache schema as a package so network calls are not - # necessary at runtime, allowing use in package builds - schema = stdenv.mkDerivation { - name = "kubeval-schema"; - src = fetchFromGitHub { - owner = "instrumenta"; - repo = "kubernetes-json-schema"; - rev = "6a498a60dc68c5f6a1cc248f94b5cd1e7241d699"; - sha256 = "1y9m2ma3n4h7sf2lg788vjw6pkfyi0fa7gzc870faqv326n6x2jr"; - }; - - installPhase = '' - mkdir -p $out/kubernetes-json-schema/master - cp -R . $out/kubernetes-json-schema/master - ''; - }; - -in - buildGoModule rec { pname = "kubeval"; version = "0.14.0"; @@ -32,15 +11,11 @@ buildGoModule rec { sha256 = "0kpwk7bv36m3i8vavm1pqc8l611c6l9qbagcc64v6r85qig4w5xv"; }; - buildInputs = [ makeWrapper ]; - modSha256 = "0y9x44y3bchi8xg0a6jmp2rmi8dybkl6qlywb6nj1viab1s8dd4y"; - postFixup = "wrapProgram $out/bin/kubeval --set KUBEVAL_SCHEMA_LOCATION file:///${schema}/kubernetes-json-schema/master"; - meta = with lib; { description = "Validate your Kubernetes configuration files"; - homepage = https://github.com/instrumenta/kubeval; + homepage = "https://github.com/instrumenta/kubeval"; license = licenses.asl20; maintainers = with maintainers; [ nicknovitski ]; platforms = platforms.all; diff --git a/pkgs/applications/networking/cluster/kubeval/schema.nix b/pkgs/applications/networking/cluster/kubeval/schema.nix new file mode 100644 index 00000000000..370fe9a1cd8 --- /dev/null +++ b/pkgs/applications/networking/cluster/kubeval/schema.nix @@ -0,0 +1,15 @@ +{ fetchFromGitHub }: +# To cache schema as a package so network calls are not +# necessary at runtime, allowing use in package builds you can use the following: + +# KUBEVAL_SCHEMA_LOCATION="file:///${kubeval-schema}"; +(fetchFromGitHub { + name = "kubeval-schema"; + owner = "instrumenta"; + repo = "kubernetes-json-schema"; + rev = "6a498a60dc68c5f6a1cc248f94b5cd1e7241d699"; + sha256 = "1y9m2ma3n4h7sf2lg788vjw6pkfyi0fa7gzc870faqv326n6x2jr"; +}) // { + # the schema is huge (> 7GB), we don't get any benefit from building int on hydra + meta.hydraPlatforms = []; +} diff --git a/pkgs/applications/networking/cluster/linkerd/default.nix b/pkgs/applications/networking/cluster/linkerd/default.nix index 8c0265d1491..3d66a7c62f2 100644 --- a/pkgs/applications/networking/cluster/linkerd/default.nix +++ b/pkgs/applications/networking/cluster/linkerd/default.nix @@ -17,7 +17,7 @@ buildGoModule { meta = with stdenv.lib; { description = "A service mesh for Kubernetes and beyond."; - homepage = https://linkerd.io/; + homepage = "https://linkerd.io/"; license = licenses.asl20; maintainers = with maintainers; [ Gonzih ]; }; diff --git a/pkgs/applications/networking/cluster/luigi/default.nix b/pkgs/applications/networking/cluster/luigi/default.nix index aad75264364..010d8cf4d21 100644 --- a/pkgs/applications/networking/cluster/luigi/default.nix +++ b/pkgs/applications/networking/cluster/luigi/default.nix @@ -2,19 +2,14 @@ python3Packages.buildPythonApplication rec { pname = "luigi"; - version = "2.8.0"; + version = "2.8.12"; src = python3Packages.fetchPypi { inherit pname version; - sha256 = "1869lb6flmca6s7ccws7mvyn66nvrqjky40jwf2liv9fg0lp8899"; + sha256 = "1p83mxqs7w5v27a58ps7wji5mlyfz66cpkbyrndix0pv9hdyzpxn"; }; - # Relax version constraint - postPatch = '' - sed -i 's/<2.2.0//' setup.py - ''; - - propagatedBuildInputs = with python3Packages; [ tornado_4 python-daemon boto3 ]; + propagatedBuildInputs = with python3Packages; [ dateutil tornado_4 python-daemon boto3 ]; # Requires tox, hadoop, and google cloud doCheck = false; @@ -23,7 +18,7 @@ python3Packages.buildPythonApplication rec { makeWrapperArgs = ["--prefix PYTHONPATH . :"]; meta = with lib; { - homepage = https://github.com/spotify/luigi; + homepage = "https://github.com/spotify/luigi"; description = "Python package that helps you build complex pipelines of batch jobs"; longDescription = '' Luigi handles dependency resolution, workflow management, visualization, diff --git a/pkgs/applications/networking/cluster/marathon/default.nix b/pkgs/applications/networking/cluster/marathon/default.nix index 72bd82be6c1..df571f4cf86 100644 --- a/pkgs/applications/networking/cluster/marathon/default.nix +++ b/pkgs/applications/networking/cluster/marathon/default.nix @@ -21,10 +21,10 @@ stdenv.mkDerivation rec { ''; meta = with stdenv.lib; { - homepage = https://mesosphere.github.io/marathon; + homepage = "https://mesosphere.github.io/marathon"; description = "Cluster-wide init and control system for services in cgroups or Docker containers"; license = licenses.asl20; - maintainers = with maintainers; [ kamilchm kevincox pradeepchhetri ]; + maintainers = with maintainers; [ kamilchm pradeepchhetri ]; platforms = platforms.linux; }; } diff --git a/pkgs/applications/networking/cluster/mesos/default.nix b/pkgs/applications/networking/cluster/mesos/default.nix index 1ad30335b94..ac1feee5d72 100644 --- a/pkgs/applications/networking/cluster/mesos/default.nix +++ b/pkgs/applications/networking/cluster/mesos/default.nix @@ -256,7 +256,8 @@ in stdenv.mkDerivation rec { homepage = "http://mesos.apache.org"; license = licenses.asl20; description = "A cluster manager that provides efficient resource isolation and sharing across distributed applications, or frameworks"; - maintainers = with maintainers; [ cstrahan kevincox offline ]; + maintainers = with maintainers; [ cstrahan offline ]; platforms = platforms.unix; + broken = true; # Broken since 2019-10-22 (https://hydra.nixos.org/build/115475123) }; } diff --git a/pkgs/applications/networking/cluster/mesos/fetch-mesos-deps.sh b/pkgs/applications/networking/cluster/mesos/fetch-mesos-deps.sh index cf7318ecb27..1e2840017b3 100644 --- a/pkgs/applications/networking/cluster/mesos/fetch-mesos-deps.sh +++ b/pkgs/applications/networking/cluster/mesos/fetch-mesos-deps.sh @@ -4,7 +4,7 @@ header "fetching Apache Mesos maven repo" function fetchArtifact { repoPath="$1" echo "Fetching $repoPath" - url="http://repo.maven.apache.org/maven2/$repoPath" + url="https://repo.maven.apache.org/maven2/$repoPath" mkdir -p $(dirname $out/$repoPath) curl --fail --location --insecure --retry 3 --max-redirs 20 "$url" --output "$out/$repoPath" } diff --git a/pkgs/applications/networking/cluster/minikube/default.nix b/pkgs/applications/networking/cluster/minikube/default.nix index 5637e486ef1..d48a28f46a8 100644 --- a/pkgs/applications/networking/cluster/minikube/default.nix +++ b/pkgs/applications/networking/cluster/minikube/default.nix @@ -1,68 +1,67 @@ -{ stdenv, buildGoModule, fetchFromGitHub, go-bindata, libvirt, qemu -, gpgme, makeWrapper, vmnet -, docker-machine-kvm, docker-machine-kvm2 -, extraDrivers ? [] +{ stdenv +, buildGoModule +, fetchFromGitHub +, pkgconfig +, makeWrapper +, go-bindata +, libvirt +, vmnet }: -let - drivers = stdenv.lib.filter (d: d != null) (extraDrivers - ++ stdenv.lib.optionals stdenv.isLinux [ docker-machine-kvm docker-machine-kvm2 ]); - - binPath = drivers - ++ stdenv.lib.optionals stdenv.isLinux ([ libvirt qemu ]); - -in buildGoModule rec { +buildGoModule rec { pname = "minikube"; - version = "1.2.0"; - - kubernetesVersion = "1.15.0"; + version = "1.9.2"; + # for -ldflags + commit = "1b78a7b8a99ad6a3c62b8d22f57120d614d17935"; goPackagePath = "k8s.io/minikube"; + subPackages = [ "cmd/minikube" ]; + modSha256 = "1pxs6myszgma3rzz0nhfjbnylv6m0xzlinvmlg0c4ijvkkzxg3v5"; src = fetchFromGitHub { owner = "kubernetes"; repo = "minikube"; rev = "v${version}"; - sha256 = "0l9znrp49877cp1bkwx84c8lv282ga5a946rjbxi8gznkf3kwaw7"; + sha256 = "025v45427d885qkjjg7ig8fgrvjalnf1lajsj0cnbwbih2m69svg"; }; - modSha256 = "1cp63n0x2lgbqvvymx9byx48r42qw6w224x5x4iiarc2nryfdhn0"; - - buildInputs = [ go-bindata makeWrapper gpgme ] ++ stdenv.lib.optional stdenv.hostPlatform.isDarwin vmnet; - subPackages = [ "cmd/minikube" ] ++ stdenv.lib.optional stdenv.hostPlatform.isDarwin "cmd/drivers/hyperkit"; + nativeBuildInputs = [ pkgconfig go-bindata makeWrapper ]; + buildInputs = stdenv.lib.optionals stdenv.isLinux [ libvirt ] + ++ stdenv.lib.optionals stdenv.isDarwin [ vmnet ]; preBuild = '' go-bindata -nomemcopy -o pkg/minikube/assets/assets.go -pkg assets deploy/addons/... + go-bindata -nomemcopy -o pkg/minikube/translate/translations.go -pkg translate translations/... VERSION_MAJOR=$(grep "^VERSION_MAJOR" Makefile | sed "s/^.*\s//") VERSION_MINOR=$(grep "^VERSION_MINOR" Makefile | sed "s/^.*\s//") ISO_VERSION=v$VERSION_MAJOR.$VERSION_MINOR.0 ISO_BUCKET=$(grep "^ISO_BUCKET" Makefile | sed "s/^.*\s//") - KUBERNETES_VERSION=${kubernetesVersion} export buildFlagsArray="-ldflags=\ - -X k8s.io/minikube/pkg/version.version=v${version} \ - -X k8s.io/minikube/pkg/version.isoVersion=$ISO_VERSION \ - -X k8s.io/minikube/pkg/version.isoPath=$ISO_BUCKET \ - -X k8s.io/minikube/vendor/k8s.io/client-go/pkg/version.gitVersion=$KUBERNETES_VERSION \ - -X k8s.io/minikube/vendor/k8s.io/kubernetes/pkg/version.gitVersion=$KUBERNETES_VERSION" + -X ${goPackagePath}/pkg/version.version=v${version} \ + -X ${goPackagePath}/pkg/version.isoVersion=$ISO_VERSION \ + -X ${goPackagePath}/pkg/version.isoPath=$ISO_BUCKET \ + -X ${goPackagePath}/pkg/version.gitCommitID=${commit} \ + -X ${goPackagePath}/pkg/drivers/kvm.version=v${version} \ + -X ${goPackagePath}/pkg/drivers/kvm.gitCommitID=${commit} \ + -X ${goPackagePath}/pkg/drivers/hyperkit.version=v${version} \ + -X ${goPackagePath}/pkg/drivers/hyperkit.gitCommitID=${commit}" ''; postInstall = '' - wrapProgram $out/bin/${pname} --prefix PATH : $out/bin:${stdenv.lib.makeBinPath binPath} mkdir -p $out/share/bash-completion/completions/ MINIKUBE_WANTUPDATENOTIFICATION=false MINIKUBE_WANTKUBECTLDOWNLOADMSG=false HOME=$PWD $out/bin/minikube completion bash > $out/share/bash-completion/completions/minikube + mkdir -p $out/share/zsh/site-functions/ MINIKUBE_WANTUPDATENOTIFICATION=false MINIKUBE_WANTKUBECTLDOWNLOADMSG=false HOME=$PWD $out/bin/minikube completion zsh > $out/share/zsh/site-functions/_minikube - ''+ stdenv.lib.optionalString stdenv.hostPlatform.isDarwin '' - mv $out/bin/hyperkit $out/bin/docker-machine-driver-hyperkit ''; meta = with stdenv.lib; { - homepage = https://github.com/kubernetes/minikube; + homepage = "https://github.com/kubernetes/minikube"; description = "A tool that makes it easy to run Kubernetes locally"; license = licenses.asl20; - maintainers = with maintainers; [ ebzzry copumpkin vdemeester ]; + maintainers = with maintainers; [ ebzzry copumpkin vdemeester atkinschang ]; platforms = with platforms; unix; }; } diff --git a/pkgs/applications/networking/cluster/minishift/default.nix b/pkgs/applications/networking/cluster/minishift/default.nix index 43e960d9403..3dcfbf6fd7e 100644 --- a/pkgs/applications/networking/cluster/minishift/default.nix +++ b/pkgs/applications/networking/cluster/minishift/default.nix @@ -59,7 +59,7 @@ in buildGoPackage rec { a single-node OpenShift cluster inside a VM. You can try out OpenShift or develop with it, day-to-day, on your local host. ''; - homepage = https://github.com/minishift/minishift; + homepage = "https://github.com/minishift/minishift"; maintainers = with maintainers; [ fpletz vdemeester ]; platforms = platforms.linux; license = licenses.asl20; diff --git a/pkgs/applications/networking/cluster/node-problem-detector/default.nix b/pkgs/applications/networking/cluster/node-problem-detector/default.nix new file mode 100644 index 00000000000..a7a98de6d39 --- /dev/null +++ b/pkgs/applications/networking/cluster/node-problem-detector/default.nix @@ -0,0 +1,50 @@ +{ stdenv, buildGoModule, fetchFromGitHub, systemd }: + +buildGoModule rec { + pname = "node-problem-detector"; + version = "0.8.1"; + + src = fetchFromGitHub { + owner = "kubernetes"; + repo = pname; + rev = "v${version}"; + sha256 = "02avknglmkr9k933a64hkw0rjfxvyh4sc3x70p41b8q2g6vzv2gs"; + }; + + # Project upstream recommends building through vendoring + overrideModAttrs = (_: { + buildCommand = '' + echo "Skipping go.mod, using vendoring instead." && touch $out + ''; + }); + + modSha256 = "0ip26j2h11n1kgkz36rl4akv694yz65hr72q4kv4b3lxcbi65b3p"; + + # Optionally, a log counter binary can be created to parse journald logs. + # The binary is dynamically linked against systemd libraries, making it a + # Linux-only feature. See 'ENABLE_JOURNALD' upstream: + # https://github.com/kubernetes/node-problem-detector/blob/master/Makefile + subPackages = [ "cmd/nodeproblemdetector" ] ++ + stdenv.lib.optionals stdenv.isLinux [ "cmd/logcounter" ]; + + preBuild = '' + export CGO_ENABLED=${if stdenv.isLinux then "1" else "0"} + ''; + + buildInputs = stdenv.lib.optionals stdenv.isLinux [ systemd ]; + + buildFlags = "-mod vendor" + + stdenv.lib.optionalString stdenv.isLinux " -tags journald"; + + buildFlagsArray = [ + "-ldflags=" + "-X k8s.io/${pname}/pkg/version.version=v${version}" + ]; + + meta = with stdenv.lib; { + description = "Various problem detectors running on the Kubernetes nodes"; + homepage = "https://github.com/kubernetes/node-problem-detector"; + license = licenses.asl20; + maintainers = with maintainers; [ lbpdt ]; + }; +} diff --git a/pkgs/applications/networking/cluster/nomad/default.nix b/pkgs/applications/networking/cluster/nomad/default.nix index 6afbbf215a3..829ea1000f0 100644 --- a/pkgs/applications/networking/cluster/nomad/default.nix +++ b/pkgs/applications/networking/cluster/nomad/default.nix @@ -2,7 +2,7 @@ buildGoPackage rec { pname = "nomad"; - version = "0.10.2"; + version = "0.11.0"; rev = "v${version}"; goPackagePath = "github.com/hashicorp/nomad"; @@ -12,7 +12,7 @@ buildGoPackage rec { owner = "hashicorp"; repo = pname; inherit rev; - sha256 = "1kv67rkqnxiz2dkmc1v1df6qx9j5j4h7cis00v2i15sl824g22jw"; + sha256 = "0jg7h52wlgd2aslx13fs97j3b8g5xfgil3p2jsc4j95l7lmqn7bv"; }; # ui: @@ -32,7 +32,7 @@ buildGoPackage rec { ''; meta = with stdenv.lib; { - homepage = https://www.nomadproject.io/; + homepage = "https://www.nomadproject.io/"; description = "A Distributed, Highly Available, Datacenter-Aware Scheduler"; platforms = platforms.unix; license = licenses.mpl20; diff --git a/pkgs/applications/networking/cluster/openshift/default.nix b/pkgs/applications/networking/cluster/openshift/default.nix index 3b96ef4ea45..a9b0ed3fcb5 100644 --- a/pkgs/applications/networking/cluster/openshift/default.nix +++ b/pkgs/applications/networking/cluster/openshift/default.nix @@ -33,7 +33,9 @@ in buildGoPackage rec { goPackagePath = "github.com/openshift/origin"; - buildInputs = [ which rsync go-bindata kerberos clang ]; + buildInputs = [ kerberos ]; + + nativeBuildInputs = [ which rsync go-bindata clang ]; patchPhase = '' patchShebangs ./hack @@ -79,7 +81,7 @@ in buildGoPackage rec { meta = with stdenv.lib; { description = "Build, deploy, and manage your applications with Docker and Kubernetes"; license = licenses.asl20; - homepage = http://www.openshift.org; + homepage = "http://www.openshift.org"; maintainers = with maintainers; [offline bachp moretea]; platforms = platforms.unix; }; diff --git a/pkgs/applications/networking/cluster/pachyderm/default.nix b/pkgs/applications/networking/cluster/pachyderm/default.nix index de0bb015852..65a4a193843 100644 --- a/pkgs/applications/networking/cluster/pachyderm/default.nix +++ b/pkgs/applications/networking/cluster/pachyderm/default.nix @@ -17,7 +17,7 @@ buildGoPackage rec { meta = with lib; { description = "Containerized Data Analytics"; - homepage = https://github.com/pachyderm/pachyderm; + homepage = "https://github.com/pachyderm/pachyderm"; license = licenses.asl20; maintainers = with maintainers; [offline]; }; diff --git a/pkgs/applications/networking/cluster/pig/default.nix b/pkgs/applications/networking/cluster/pig/default.nix index 26c39f8cbe2..afcd736e629 100644 --- a/pkgs/applications/networking/cluster/pig/default.nix +++ b/pkgs/applications/networking/cluster/pig/default.nix @@ -27,7 +27,7 @@ stdenv.mkDerivation rec { ''; meta = with stdenv.lib; { - homepage = https://pig.apache.org/; + homepage = "https://pig.apache.org/"; description = "High-level language for Apache Hadoop"; license = licenses.asl20; diff --git a/pkgs/applications/networking/cluster/prow/13918-fix-go-sum.patch b/pkgs/applications/networking/cluster/prow/13918-fix-go-sum.patch deleted file mode 100644 index ae407727b9d..00000000000 --- a/pkgs/applications/networking/cluster/prow/13918-fix-go-sum.patch +++ /dev/null @@ -1,22 +0,0 @@ -From b0ab95b9664916618ebf5fe637b1bc4de4ba9a6e Mon Sep 17 00:00:00 2001 -From: "Wael M. Nasreddine" -Date: Wed, 14 Aug 2019 23:07:51 -0700 -Subject: [PATCH] fix the hash of gomodules.xyz/jsonpatch/v2 - ---- - go.sum | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/go.sum b/go.sum -index 6bb130b4d9b..b3f48a85d4a 100644 ---- a/go.sum -+++ b/go.sum -@@ -452,7 +452,7 @@ golang.org/x/tools v0.0.0-20190312170243-e65039ee4138 h1:H3uGjxCR/6Ds0Mjgyp7LMK8 - golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= - golang.org/x/tools v0.0.0-20190404132500-923d25813098 h1:MtqjsZmyGRgMmLUgxnmMJ6RYdvd2ib8ipiayHhqSxs4= - golang.org/x/tools v0.0.0-20190404132500-923d25813098/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= --gomodules.xyz/jsonpatch/v2 v2.0.0 h1:lHNQverf0+Gm1TbSbVIDWVXOhZ2FpZopxRqpr2uIjs4= -+gomodules.xyz/jsonpatch/v2 v2.0.0 h1:OyHbl+7IOECpPKfVK42oFr6N7+Y2dR+Jsb/IiDV3hOo= - gomodules.xyz/jsonpatch/v2 v2.0.0/go.mod h1:IhYNNY4jnS53ZnfE4PAmpKtDpTCj1JFXc+3mwe7XcUU= - google.golang.org/api v0.0.0-20180910000450-7ca32eb868bf/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= - google.golang.org/api v0.0.0-20181021000519-a2651947f503/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= diff --git a/pkgs/applications/networking/cluster/prow/default.nix b/pkgs/applications/networking/cluster/prow/default.nix index 1c802802c09..0b2f798d35b 100644 --- a/pkgs/applications/networking/cluster/prow/default.nix +++ b/pkgs/applications/networking/cluster/prow/default.nix @@ -2,56 +2,51 @@ buildGoModule rec { pname = "prow-unstable"; - version = "2019-08-14"; - rev = "35a7744f5737bbc1c4e1256a9c9c5ad135c650e4"; + version = "2020-04-01"; + rev = "32e3b5ce7695fb622381421653db436cb57b47c5"; src = fetchFromGitHub { inherit rev; owner = "kubernetes"; repo = "test-infra"; - sha256 = "07kdlzrj59xyaa73vlx4s50fpg0brrkb0h0cyjgx81a0hsc7s03k"; + sha256 = "0mc3ynmbf3kidibdy8k3v3xjlvmxl8w7zm1z2m0skmhd0y4bpmk4"; }; - patches = [ - # https://github.com/kubernetes/test-infra/pull/13918 - ./13918-fix-go-sum.patch - ]; - - modSha256 = "06q1zvhm78k64aj475k1xl38h7nk83mysd0bja0wknja048ymgsq"; + modSha256 = "1xajdg10a27icc7g1y3ym4pkgg64rp4afybbjlhbg3k3whir9xa1"; subPackages = [ - "./prow/cmd/admission" - "./prow/cmd/artifact-uploader" - "./prow/cmd/branchprotector" - "./prow/cmd/build" - "./prow/cmd/checkconfig" - "./prow/cmd/clonerefs" - "./prow/cmd/config-bootstrapper" - "./prow/cmd/crier" - "./prow/cmd/deck" - "./prow/cmd/entrypoint" - "./prow/cmd/gcsupload" - "./prow/cmd/gerrit" - "./prow/cmd/hook" - "./prow/cmd/horologium" - "./prow/cmd/initupload" - "./prow/cmd/jenkins-operator" - "./prow/cmd/mkbuild-cluster" - "./prow/cmd/mkpj" - "./prow/cmd/mkpod" - "./prow/cmd/peribolos" - "./prow/cmd/phaino" - "./prow/cmd/phony" - "./prow/cmd/pipeline" - "./prow/cmd/plank" - "./prow/cmd/sidecar" - "./prow/cmd/sinker" - "./prow/cmd/status-reconciler" - "./prow/cmd/sub" - "./prow/cmd/tackle" - "./prow/cmd/tide" - "./prow/cmd/tot" + "prow/cmd/admission" + "prow/cmd/branchprotector" + "prow/cmd/checkconfig" + "prow/cmd/clonerefs" + "prow/cmd/cm2kc" + "prow/cmd/config-bootstrapper" + "prow/cmd/crier" + "prow/cmd/deck" + "prow/cmd/entrypoint" + "prow/cmd/exporter" + "prow/cmd/gcsupload" + "prow/cmd/gerrit" + "prow/cmd/hook" + "prow/cmd/horologium" + "prow/cmd/initupload" + "prow/cmd/jenkins-operator" + "prow/cmd/mkbuild-cluster" + "prow/cmd/mkpj" + "prow/cmd/mkpod" + "prow/cmd/peribolos" + "prow/cmd/phaino" + "prow/cmd/phony" + "prow/cmd/pipeline" + "prow/cmd/plank" + "prow/cmd/sidecar" + "prow/cmd/sinker" + "prow/cmd/status-reconciler" + "prow/cmd/sub" + "prow/cmd/tackle" + "prow/cmd/tide" + "prow/cmd/tot" ]; meta = with lib; { diff --git a/pkgs/applications/networking/cluster/qbec/default.nix b/pkgs/applications/networking/cluster/qbec/default.nix index 9e578b9b333..53b421ec552 100644 --- a/pkgs/applications/networking/cluster/qbec/default.nix +++ b/pkgs/applications/networking/cluster/qbec/default.nix @@ -2,20 +2,20 @@ buildGoModule rec { pname = "qbec"; - version = "0.7.5"; + version = "0.11.0"; src = fetchFromGitHub { owner = "splunk"; repo = "qbec"; rev = "v${version}"; - sha256 = "1q3rbxih4fn0zv8dni5dxb3pq840spplfy08x941najqfgflv9gb"; + sha256 = "0krdfaha19wzi10rh0wfhki5nknbd5mndaxhrq7y9m840xy43d6d"; }; - modSha256 = "0s1brqvzm1ghhqb46aqfj0lpnaq76rav0hwwb82ccw8h7052y4jn"; + modSha256 = "1wb15vrkb4ryvrjp68ygmadnf78s354106ya210pnmsbb53rbhaz"; meta = with lib; { description = "Configure kubernetes objects on multiple clusters using jsonnet https://qbec.io"; - homepage = https://github.com/splunk/qbec; + homepage = "https://github.com/splunk/qbec"; license = licenses.asl20; maintainers = with maintainers; [ groodt ]; }; diff --git a/pkgs/applications/networking/cluster/spacegun/default.nix b/pkgs/applications/networking/cluster/spacegun/default.nix new file mode 100644 index 00000000000..2180d8d3048 --- /dev/null +++ b/pkgs/applications/networking/cluster/spacegun/default.nix @@ -0,0 +1,27 @@ +{ pkgs, nodejs, stdenv, lib, ... }: + +let + + packageName = with lib; concatStrings (map (entry: (concatStrings (mapAttrsToList (key: value: "${key}-${value}") entry))) (importJSON ./package.json)); + + nodePackages = import ./node-composition.nix { + inherit pkgs nodejs; + inherit (stdenv.hostPlatform) system; + }; +in +nodePackages."${packageName}".override { + nativeBuildInputs = [ pkgs.makeWrapper ]; + + postInstall = '' + # Patch shebangs in node_modules, otherwise the webpack build fails with interpreter problems + patchShebangs --build "$out/lib/node_modules/spacegun/node_modules/" + # compile Typescript sources + npm run build + ''; + + meta = with lib; { + description = "Version controlled multi-cluster deployment manager for kubernetes"; + maintainers = with maintainers; [ kampka ]; + license = licenses.mit; + }; +} diff --git a/pkgs/applications/networking/cluster/spacegun/generate-dependencies.sh b/pkgs/applications/networking/cluster/spacegun/generate-dependencies.sh new file mode 100644 index 00000000000..293a72a1623 --- /dev/null +++ b/pkgs/applications/networking/cluster/spacegun/generate-dependencies.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env nix-shell +#! nix-shell -i bash -p nodePackages.node2nix + +node2nix \ + --nodejs-10 \ + --node-env ../../../../development/node-packages/node-env.nix \ + --development \ + --input package.json \ + --output node-packages.nix \ + --composition node-composition.nix diff --git a/pkgs/tools/security/bitwarden-cli/node-packages.nix b/pkgs/applications/networking/cluster/spacegun/node-composition.nix similarity index 54% rename from pkgs/tools/security/bitwarden-cli/node-packages.nix rename to pkgs/applications/networking/cluster/spacegun/node-composition.nix index 66560873b4c..47cdb6942ce 100644 --- a/pkgs/tools/security/bitwarden-cli/node-packages.nix +++ b/pkgs/applications/networking/cluster/spacegun/node-composition.nix @@ -1,17 +1,17 @@ -# This file has been generated by node2nix 1.7.0. Do not edit! +# This file has been generated by node2nix 1.8.0. Do not edit! {pkgs ? import { inherit system; - }, system ? builtins.currentSystem, nodejs ? pkgs.nodejs-10_x}: + }, system ? builtins.currentSystem, nodejs ? pkgs."nodejs-10_x"}: let - nodeEnv = import ../../../development/node-packages/node-env.nix { + nodeEnv = import ../../../../development/node-packages/node-env.nix { inherit (pkgs) stdenv python2 utillinux runCommand writeTextFile; inherit nodejs; libtool = if pkgs.stdenv.isDarwin then pkgs.darwin.cctools else null; }; in -import ./node-packages-generated.nix { +import ./node-packages.nix { inherit (pkgs) fetchurl fetchgit; inherit nodeEnv; } \ No newline at end of file diff --git a/pkgs/applications/networking/cluster/spacegun/node-packages.nix b/pkgs/applications/networking/cluster/spacegun/node-packages.nix new file mode 100644 index 00000000000..ece04f6621b --- /dev/null +++ b/pkgs/applications/networking/cluster/spacegun/node-packages.nix @@ -0,0 +1,11477 @@ +# This file has been generated by node2nix 1.8.0. Do not edit! + +{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}: + +let + sources = { + "@babel/code-frame-7.8.3" = { + name = "_at_babel_slash_code-frame"; + packageName = "@babel/code-frame"; + version = "7.8.3"; + src = fetchurl { + url = "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz"; + sha512 = "a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g=="; + }; + }; + "@babel/core-7.8.7" = { + name = "_at_babel_slash_core"; + packageName = "@babel/core"; + version = "7.8.7"; + src = fetchurl { + url = "https://registry.npmjs.org/@babel/core/-/core-7.8.7.tgz"; + sha512 = "rBlqF3Yko9cynC5CCFy6+K/w2N+Sq/ff2BPy+Krp7rHlABIr5epbA7OxVeKoMHB39LZOp1UY5SuLjy6uWi35yA=="; + }; + }; + "@babel/generator-7.8.8" = { + name = "_at_babel_slash_generator"; + packageName = "@babel/generator"; + version = "7.8.8"; + src = fetchurl { + url = "https://registry.npmjs.org/@babel/generator/-/generator-7.8.8.tgz"; + sha512 = "HKyUVu69cZoclptr8t8U5b6sx6zoWjh8jiUhnuj3MpZuKT2dJ8zPTuiy31luq32swhI0SpwItCIlU8XW7BZeJg=="; + }; + }; + "@babel/helper-function-name-7.8.3" = { + name = "_at_babel_slash_helper-function-name"; + packageName = "@babel/helper-function-name"; + version = "7.8.3"; + src = fetchurl { + url = "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz"; + sha512 = "BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA=="; + }; + }; + "@babel/helper-get-function-arity-7.8.3" = { + name = "_at_babel_slash_helper-get-function-arity"; + packageName = "@babel/helper-get-function-arity"; + version = "7.8.3"; + src = fetchurl { + url = "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz"; + sha512 = "FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA=="; + }; + }; + "@babel/helper-plugin-utils-7.8.3" = { + name = "_at_babel_slash_helper-plugin-utils"; + packageName = "@babel/helper-plugin-utils"; + version = "7.8.3"; + src = fetchurl { + url = "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz"; + sha512 = "j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ=="; + }; + }; + "@babel/helper-split-export-declaration-7.8.3" = { + name = "_at_babel_slash_helper-split-export-declaration"; + packageName = "@babel/helper-split-export-declaration"; + version = "7.8.3"; + src = fetchurl { + url = "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz"; + sha512 = "3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA=="; + }; + }; + "@babel/helpers-7.8.4" = { + name = "_at_babel_slash_helpers"; + packageName = "@babel/helpers"; + version = "7.8.4"; + src = fetchurl { + url = "https://registry.npmjs.org/@babel/helpers/-/helpers-7.8.4.tgz"; + sha512 = "VPbe7wcQ4chu4TDQjimHv/5tj73qz88o12EPkO2ValS2QiQS/1F2SsjyIGNnAD0vF/nZS6Cf9i+vW6HIlnaR8w=="; + }; + }; + "@babel/highlight-7.8.3" = { + name = "_at_babel_slash_highlight"; + packageName = "@babel/highlight"; + version = "7.8.3"; + src = fetchurl { + url = "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz"; + sha512 = "PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg=="; + }; + }; + "@babel/parser-7.8.8" = { + name = "_at_babel_slash_parser"; + packageName = "@babel/parser"; + version = "7.8.8"; + src = fetchurl { + url = "https://registry.npmjs.org/@babel/parser/-/parser-7.8.8.tgz"; + sha512 = "mO5GWzBPsPf6865iIbzNE0AvkKF3NE+2S3eRUpE+FE07BOAkXh6G+GW/Pj01hhXjve1WScbaIO4UlY1JKeqCcA=="; + }; + }; + "@babel/plugin-syntax-object-rest-spread-7.8.3" = { + name = "_at_babel_slash_plugin-syntax-object-rest-spread"; + packageName = "@babel/plugin-syntax-object-rest-spread"; + version = "7.8.3"; + src = fetchurl { + url = "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz"; + sha512 = "XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA=="; + }; + }; + "@babel/template-7.8.6" = { + name = "_at_babel_slash_template"; + packageName = "@babel/template"; + version = "7.8.6"; + src = fetchurl { + url = "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz"; + sha512 = "zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg=="; + }; + }; + "@babel/traverse-7.8.6" = { + name = "_at_babel_slash_traverse"; + packageName = "@babel/traverse"; + version = "7.8.6"; + src = fetchurl { + url = "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.6.tgz"; + sha512 = "2B8l0db/DPi8iinITKuo7cbPznLCEk0kCxDoB9/N6gGNg/gxOXiR/IcymAFPiBwk5w6TtQ27w4wpElgp9btR9A=="; + }; + }; + "@babel/types-7.8.7" = { + name = "_at_babel_slash_types"; + packageName = "@babel/types"; + version = "7.8.7"; + src = fetchurl { + url = "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz"; + sha512 = "k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw=="; + }; + }; + "@cnakazawa/watch-1.0.4" = { + name = "_at_cnakazawa_slash_watch"; + packageName = "@cnakazawa/watch"; + version = "1.0.4"; + src = fetchurl { + url = "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz"; + sha512 = "v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ=="; + }; + }; + "@jest/console-24.9.0" = { + name = "_at_jest_slash_console"; + packageName = "@jest/console"; + version = "24.9.0"; + src = fetchurl { + url = "https://registry.npmjs.org/@jest/console/-/console-24.9.0.tgz"; + sha512 = "Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ=="; + }; + }; + "@jest/core-24.9.0" = { + name = "_at_jest_slash_core"; + packageName = "@jest/core"; + version = "24.9.0"; + src = fetchurl { + url = "https://registry.npmjs.org/@jest/core/-/core-24.9.0.tgz"; + sha512 = "Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A=="; + }; + }; + "@jest/environment-24.9.0" = { + name = "_at_jest_slash_environment"; + packageName = "@jest/environment"; + version = "24.9.0"; + src = fetchurl { + url = "https://registry.npmjs.org/@jest/environment/-/environment-24.9.0.tgz"; + sha512 = "5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ=="; + }; + }; + "@jest/fake-timers-24.9.0" = { + name = "_at_jest_slash_fake-timers"; + packageName = "@jest/fake-timers"; + version = "24.9.0"; + src = fetchurl { + url = "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.9.0.tgz"; + sha512 = "eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A=="; + }; + }; + "@jest/reporters-24.9.0" = { + name = "_at_jest_slash_reporters"; + packageName = "@jest/reporters"; + version = "24.9.0"; + src = fetchurl { + url = "https://registry.npmjs.org/@jest/reporters/-/reporters-24.9.0.tgz"; + sha512 = "mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw=="; + }; + }; + "@jest/source-map-24.9.0" = { + name = "_at_jest_slash_source-map"; + packageName = "@jest/source-map"; + version = "24.9.0"; + src = fetchurl { + url = "https://registry.npmjs.org/@jest/source-map/-/source-map-24.9.0.tgz"; + sha512 = "/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg=="; + }; + }; + "@jest/test-result-24.9.0" = { + name = "_at_jest_slash_test-result"; + packageName = "@jest/test-result"; + version = "24.9.0"; + src = fetchurl { + url = "https://registry.npmjs.org/@jest/test-result/-/test-result-24.9.0.tgz"; + sha512 = "XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA=="; + }; + }; + "@jest/test-sequencer-24.9.0" = { + name = "_at_jest_slash_test-sequencer"; + packageName = "@jest/test-sequencer"; + version = "24.9.0"; + src = fetchurl { + url = "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz"; + sha512 = "6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A=="; + }; + }; + "@jest/transform-24.9.0" = { + name = "_at_jest_slash_transform"; + packageName = "@jest/transform"; + version = "24.9.0"; + src = fetchurl { + url = "https://registry.npmjs.org/@jest/transform/-/transform-24.9.0.tgz"; + sha512 = "TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ=="; + }; + }; + "@jest/types-24.9.0" = { + name = "_at_jest_slash_types"; + packageName = "@jest/types"; + version = "24.9.0"; + src = fetchurl { + url = "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz"; + sha512 = "XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw=="; + }; + }; + "@kubernetes/client-node-0.10.3" = { + name = "_at_kubernetes_slash_client-node"; + packageName = "@kubernetes/client-node"; + version = "0.10.3"; + src = fetchurl { + url = "https://registry.npmjs.org/@kubernetes/client-node/-/client-node-0.10.3.tgz"; + sha512 = "mw+1zdKfMW4QN2ns82SKFhAvqC4SVUAiItto4oFg3Me+a510h3h9N5O7ad6m4efAmlQBlMc6Y5FHz70dAwuiMg=="; + }; + }; + "@sindresorhus/is-0.7.0" = { + name = "_at_sindresorhus_slash_is"; + packageName = "@sindresorhus/is"; + version = "0.7.0"; + src = fetchurl { + url = "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz"; + sha512 = "ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow=="; + }; + }; + "@types/accepts-1.3.5" = { + name = "_at_types_slash_accepts"; + packageName = "@types/accepts"; + version = "1.3.5"; + src = fetchurl { + url = "https://registry.npmjs.org/@types/accepts/-/accepts-1.3.5.tgz"; + sha512 = "jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ=="; + }; + }; + "@types/axios-0.14.0" = { + name = "_at_types_slash_axios"; + packageName = "@types/axios"; + version = "0.14.0"; + src = fetchurl { + url = "https://registry.npmjs.org/@types/axios/-/axios-0.14.0.tgz"; + sha1 = "ec2300fbe7d7dddd7eb9d3abf87999964cafce46"; + }; + }; + "@types/babel-types-7.0.7" = { + name = "_at_types_slash_babel-types"; + packageName = "@types/babel-types"; + version = "7.0.7"; + src = fetchurl { + url = "https://registry.npmjs.org/@types/babel-types/-/babel-types-7.0.7.tgz"; + sha512 = "dBtBbrc+qTHy1WdfHYjBwRln4+LWqASWakLHsWHR2NWHIFkv4W3O070IGoGLEBrJBvct3r0L1BUPuvURi7kYUQ=="; + }; + }; + "@types/babel__core-7.1.6" = { + name = "_at_types_slash_babel__core"; + packageName = "@types/babel__core"; + version = "7.1.6"; + src = fetchurl { + url = "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.6.tgz"; + sha512 = "tTnhWszAqvXnhW7m5jQU9PomXSiKXk2sFxpahXvI20SZKu9ylPi8WtIxueZ6ehDWikPT0jeFujMj3X4ZHuf3Tg=="; + }; + }; + "@types/babel__generator-7.6.1" = { + name = "_at_types_slash_babel__generator"; + packageName = "@types/babel__generator"; + version = "7.6.1"; + src = fetchurl { + url = "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.1.tgz"; + sha512 = "bBKm+2VPJcMRVwNhxKu8W+5/zT7pwNEqeokFOmbvVSqGzFneNxYcEBro9Ac7/N9tlsaPYnZLK8J1LWKkMsLAew=="; + }; + }; + "@types/babel__template-7.0.2" = { + name = "_at_types_slash_babel__template"; + packageName = "@types/babel__template"; + version = "7.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.0.2.tgz"; + sha512 = "/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg=="; + }; + }; + "@types/babel__traverse-7.0.9" = { + name = "_at_types_slash_babel__traverse"; + packageName = "@types/babel__traverse"; + version = "7.0.9"; + src = fetchurl { + url = "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.9.tgz"; + sha512 = "jEFQ8L1tuvPjOI8lnpaf73oCJe+aoxL6ygqSy6c8LcW98zaC+4mzWuQIRCEvKeCOu+lbqdXcg4Uqmm1S8AP1tw=="; + }; + }; + "@types/babylon-6.16.5" = { + name = "_at_types_slash_babylon"; + packageName = "@types/babylon"; + version = "6.16.5"; + src = fetchurl { + url = "https://registry.npmjs.org/@types/babylon/-/babylon-6.16.5.tgz"; + sha512 = "xH2e58elpj1X4ynnKp9qSnWlsRTIs6n3tgLGNfwAGHwePw0mulHQllV34n0T25uYSu1k0hRKkWXF890B1yS47w=="; + }; + }; + "@types/body-parser-1.19.0" = { + name = "_at_types_slash_body-parser"; + packageName = "@types/body-parser"; + version = "1.19.0"; + src = fetchurl { + url = "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.0.tgz"; + sha512 = "W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ=="; + }; + }; + "@types/caseless-0.12.2" = { + name = "_at_types_slash_caseless"; + packageName = "@types/caseless"; + version = "0.12.2"; + src = fetchurl { + url = "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.2.tgz"; + sha512 = "6ckxMjBBD8URvjB6J3NcnuAn5Pkl7t3TizAg+xdlzzQGSPSmBcXf8KoIH0ua/i+tio+ZRUHEXp0HEmvaR4kt0w=="; + }; + }; + "@types/command-line-args-5.0.0" = { + name = "_at_types_slash_command-line-args"; + packageName = "@types/command-line-args"; + version = "5.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/@types/command-line-args/-/command-line-args-5.0.0.tgz"; + sha512 = "4eOPXyn5DmP64MCMF8ePDvdlvlzt2a+F8ZaVjqmh2yFCpGjc1kI3kGnCFYX9SCsGTjQcWIyVZ86IHCEyjy/MNg=="; + }; + }; + "@types/connect-3.4.33" = { + name = "_at_types_slash_connect"; + packageName = "@types/connect"; + version = "3.4.33"; + src = fetchurl { + url = "https://registry.npmjs.org/@types/connect/-/connect-3.4.33.tgz"; + sha512 = "2+FrkXY4zllzTNfJth7jOqEHC+enpLeGslEhpnTAkg21GkRrWV4SsAtqchtT4YS9/nODBU2/ZfsBY2X4J/dX7A=="; + }; + }; + "@types/cookies-0.7.4" = { + name = "_at_types_slash_cookies"; + packageName = "@types/cookies"; + version = "0.7.4"; + src = fetchurl { + url = "https://registry.npmjs.org/@types/cookies/-/cookies-0.7.4.tgz"; + sha512 = "oTGtMzZZAVuEjTwCjIh8T8FrC8n/uwy+PG0yTvQcdZ7etoel7C7/3MSd7qrukENTgQtotG7gvBlBojuVs7X5rw=="; + }; + }; + "@types/cron-1.7.2" = { + name = "_at_types_slash_cron"; + packageName = "@types/cron"; + version = "1.7.2"; + src = fetchurl { + url = "https://registry.npmjs.org/@types/cron/-/cron-1.7.2.tgz"; + sha512 = "AEpNLRcsVSc5AdseJKNHpz0d4e8+ow+abTaC0fKDbAU86rF1evoFF0oC2fV9FdqtfVXkG2LKshpLTJCFOpyvTg=="; + }; + }; + "@types/events-3.0.0" = { + name = "_at_types_slash_events"; + packageName = "@types/events"; + version = "3.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz"; + sha512 = "EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g=="; + }; + }; + "@types/express-4.17.3" = { + name = "_at_types_slash_express"; + packageName = "@types/express"; + version = "4.17.3"; + src = fetchurl { + url = "https://registry.npmjs.org/@types/express/-/express-4.17.3.tgz"; + sha512 = "I8cGRJj3pyOLs/HndoP+25vOqhqWkAZsWMEmq1qXy/b/M3ppufecUwaK2/TVDVxcV61/iSdhykUjQQ2DLSrTdg=="; + }; + }; + "@types/express-serve-static-core-4.17.2" = { + name = "_at_types_slash_express-serve-static-core"; + packageName = "@types/express-serve-static-core"; + version = "4.17.2"; + src = fetchurl { + url = "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.2.tgz"; + sha512 = "El9yMpctM6tORDAiBwZVLMcxoTMcqqRO9dVyYcn7ycLWbvR8klrDn8CAOwRfZujZtWD7yS/mshTdz43jMOejbg=="; + }; + }; + "@types/formidable-1.0.31" = { + name = "_at_types_slash_formidable"; + packageName = "@types/formidable"; + version = "1.0.31"; + src = fetchurl { + url = "https://registry.npmjs.org/@types/formidable/-/formidable-1.0.31.tgz"; + sha512 = "dIhM5t8lRP0oWe2HF8MuPvdd1TpPTjhDMAqemcq6oIZQCBQTovhBAdTQ5L5veJB4pdQChadmHuxtB0YzqvfU3Q=="; + }; + }; + "@types/glob-7.1.1" = { + name = "_at_types_slash_glob"; + packageName = "@types/glob"; + version = "7.1.1"; + src = fetchurl { + url = "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz"; + sha512 = "1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w=="; + }; + }; + "@types/http-assert-1.5.1" = { + name = "_at_types_slash_http-assert"; + packageName = "@types/http-assert"; + version = "1.5.1"; + src = fetchurl { + url = "https://registry.npmjs.org/@types/http-assert/-/http-assert-1.5.1.tgz"; + sha512 = "PGAK759pxyfXE78NbKxyfRcWYA/KwW17X290cNev/qAsn9eQIxkH4shoNBafH37wewhDG/0p1cHPbK6+SzZjWQ=="; + }; + }; + "@types/istanbul-lib-coverage-2.0.1" = { + name = "_at_types_slash_istanbul-lib-coverage"; + packageName = "@types/istanbul-lib-coverage"; + version = "2.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz"; + sha512 = "hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg=="; + }; + }; + "@types/istanbul-lib-report-3.0.0" = { + name = "_at_types_slash_istanbul-lib-report"; + packageName = "@types/istanbul-lib-report"; + version = "3.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz"; + sha512 = "plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg=="; + }; + }; + "@types/istanbul-reports-1.1.1" = { + name = "_at_types_slash_istanbul-reports"; + packageName = "@types/istanbul-reports"; + version = "1.1.1"; + src = fetchurl { + url = "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz"; + sha512 = "UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA=="; + }; + }; + "@types/jest-24.9.1" = { + name = "_at_types_slash_jest"; + packageName = "@types/jest"; + version = "24.9.1"; + src = fetchurl { + url = "https://registry.npmjs.org/@types/jest/-/jest-24.9.1.tgz"; + sha512 = "Fb38HkXSVA4L8fGKEZ6le5bB8r6MRWlOCZbVuWZcmOMSCd2wCYOwN1ibj8daIoV9naq7aaOZjrLCoCMptKU/4Q=="; + }; + }; + "@types/js-yaml-3.12.2" = { + name = "_at_types_slash_js-yaml"; + packageName = "@types/js-yaml"; + version = "3.12.2"; + src = fetchurl { + url = "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-3.12.2.tgz"; + sha512 = "0CFu/g4mDSNkodVwWijdlr8jH7RoplRWNgovjFLEZeT+QEbbZXjBmCe3HwaWheAlCbHwomTwzZoSedeOycABug=="; + }; + }; + "@types/keygrip-1.0.2" = { + name = "_at_types_slash_keygrip"; + packageName = "@types/keygrip"; + version = "1.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/@types/keygrip/-/keygrip-1.0.2.tgz"; + sha512 = "GJhpTepz2udxGexqos8wgaBx4I/zWIDPh/KOGEwAqtuGDkOUJu5eFvwmdBX4AmB8Odsr+9pHCQqiAqDL/yKMKw=="; + }; + }; + "@types/koa-2.11.2" = { + name = "_at_types_slash_koa"; + packageName = "@types/koa"; + version = "2.11.2"; + src = fetchurl { + url = "https://registry.npmjs.org/@types/koa/-/koa-2.11.2.tgz"; + sha512 = "2UPelagNNW6bnc1I5kIzluCaheXRA9S+NyOdXEFFj9Az7jc15ek5V03kb8OTbb3tdZ5i2BIJObe86PhHvpMolg=="; + }; + }; + "@types/koa-compose-3.2.5" = { + name = "_at_types_slash_koa-compose"; + packageName = "@types/koa-compose"; + version = "3.2.5"; + src = fetchurl { + url = "https://registry.npmjs.org/@types/koa-compose/-/koa-compose-3.2.5.tgz"; + sha512 = "B8nG/OoE1ORZqCkBVsup/AKcvjdgoHnfi4pZMn5UwAPCbhk/96xyv284eBYW8JlQbQ7zDmnpFr68I/40mFoIBQ=="; + }; + }; + "@types/koa-router-7.4.0" = { + name = "_at_types_slash_koa-router"; + packageName = "@types/koa-router"; + version = "7.4.0"; + src = fetchurl { + url = "https://registry.npmjs.org/@types/koa-router/-/koa-router-7.4.0.tgz"; + sha512 = "CkNyhGOCJ6rpBEG0rlSQhwHsHNwMzGLE49tV3jE5f0TvMzy/SmoCAIlHWdOLs8Mro+BqtKFH6e/lDaibWkydag=="; + }; + }; + "@types/koa-send-4.1.2" = { + name = "_at_types_slash_koa-send"; + packageName = "@types/koa-send"; + version = "4.1.2"; + src = fetchurl { + url = "https://registry.npmjs.org/@types/koa-send/-/koa-send-4.1.2.tgz"; + sha512 = "rfqKIv9bFds39Jxvsp8o3YJLnEQVPVriYA14AuO2OY65IHh/4UX4U/iMs5L0wATpcRmm1bbe0BNk23TRwx3VQQ=="; + }; + }; + "@types/koa-static-4.0.1" = { + name = "_at_types_slash_koa-static"; + packageName = "@types/koa-static"; + version = "4.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/@types/koa-static/-/koa-static-4.0.1.tgz"; + sha512 = "SSpct5fEcAeRkBHa3RiwCIRfDHcD1cZRhwRF///ZfvRt8KhoqRrhK6wpDlYPk/vWHVFE9hPGqh68bhzsHkir4w=="; + }; + }; + "@types/koa-views-2.0.4" = { + name = "_at_types_slash_koa-views"; + packageName = "@types/koa-views"; + version = "2.0.4"; + src = fetchurl { + url = "https://registry.npmjs.org/@types/koa-views/-/koa-views-2.0.4.tgz"; + sha512 = "aGFBVLiPC7FkXTqHLhnmjKhx3COV+GeJHO9OkLX/p/iAQTgDB5bbnsddx3XgrS6aACWyxR3BpQJVDdSqCNY1lw=="; + }; + }; + "@types/lodash-4.14.149" = { + name = "_at_types_slash_lodash"; + packageName = "@types/lodash"; + version = "4.14.149"; + src = fetchurl { + url = "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.149.tgz"; + sha512 = "ijGqzZt/b7BfzcK9vTrS6MFljQRPn5BFWOx8oE0GYxribu6uV+aA9zZuXI1zc/etK9E8nrgdoF2+LgUw7+9tJQ=="; + }; + }; + "@types/lodash.clonedeep-4.5.6" = { + name = "_at_types_slash_lodash.clonedeep"; + packageName = "@types/lodash.clonedeep"; + version = "4.5.6"; + src = fetchurl { + url = "https://registry.npmjs.org/@types/lodash.clonedeep/-/lodash.clonedeep-4.5.6.tgz"; + sha512 = "cE1jYr2dEg1wBImvXlNtp0xDoS79rfEdGozQVgliDZj1uERH4k+rmEMTudP9b4VQ8O6nRb5gPqft0QzEQGMQgA=="; + }; + }; + "@types/mime-2.0.1" = { + name = "_at_types_slash_mime"; + packageName = "@types/mime"; + version = "2.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/@types/mime/-/mime-2.0.1.tgz"; + sha512 = "FwI9gX75FgVBJ7ywgnq/P7tw+/o1GUbtP0KzbtusLigAOgIgNISRK0ZPl4qertvXSIE8YbsVJueQ90cDt9YYyw=="; + }; + }; + "@types/minimatch-3.0.3" = { + name = "_at_types_slash_minimatch"; + packageName = "@types/minimatch"; + version = "3.0.3"; + src = fetchurl { + url = "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz"; + sha512 = "tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA=="; + }; + }; + "@types/mkdirp-0.5.2" = { + name = "_at_types_slash_mkdirp"; + packageName = "@types/mkdirp"; + version = "0.5.2"; + src = fetchurl { + url = "https://registry.npmjs.org/@types/mkdirp/-/mkdirp-0.5.2.tgz"; + sha512 = "U5icWpv7YnZYGsN4/cmh3WD2onMY0aJIiTE6+51TwJCttdHvtCYmkBNOobHlXwrJRL0nkH9jH4kD+1FAdMN4Tg=="; + }; + }; + "@types/node-10.17.17" = { + name = "_at_types_slash_node"; + packageName = "@types/node"; + version = "10.17.17"; + src = fetchurl { + url = "https://registry.npmjs.org/@types/node/-/node-10.17.17.tgz"; + sha512 = "gpNnRnZP3VWzzj5k3qrpRC6Rk3H/uclhAVo1aIvwzK5p5cOrs9yEyQ8H/HBsBY0u5rrWxXEiVPQ0dEB6pkjE8Q=="; + }; + }; + "@types/node-12.12.30" = { + name = "_at_types_slash_node"; + packageName = "@types/node"; + version = "12.12.30"; + src = fetchurl { + url = "https://registry.npmjs.org/@types/node/-/node-12.12.30.tgz"; + sha512 = "sz9MF/zk6qVr3pAnM0BSQvYIBK44tS75QC5N+VbWSE4DjCV/pJ+UzCW/F+vVnl7TkOPcuwQureKNtSSwjBTaMg=="; + }; + }; + "@types/ora-3.2.0" = { + name = "_at_types_slash_ora"; + packageName = "@types/ora"; + version = "3.2.0"; + src = fetchurl { + url = "https://registry.npmjs.org/@types/ora/-/ora-3.2.0.tgz"; + sha512 = "jll99xUKpiFbIFZSQcxm4numfsLaOWBzWNaRk3PvTSE7BPqTzzOCFmS0mQ7m8qkTfmYhuYbehTGsxkvRLPC++w=="; + }; + }; + "@types/range-parser-1.2.3" = { + name = "_at_types_slash_range-parser"; + packageName = "@types/range-parser"; + version = "1.2.3"; + src = fetchurl { + url = "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz"; + sha512 = "ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA=="; + }; + }; + "@types/request-2.48.4" = { + name = "_at_types_slash_request"; + packageName = "@types/request"; + version = "2.48.4"; + src = fetchurl { + url = "https://registry.npmjs.org/@types/request/-/request-2.48.4.tgz"; + sha512 = "W1t1MTKYR8PxICH+A4HgEIPuAC3sbljoEVfyZbeFJJDbr30guDspJri2XOaM2E+Un7ZjrihaDi7cf6fPa2tbgw=="; + }; + }; + "@types/serve-static-1.13.3" = { + name = "_at_types_slash_serve-static"; + packageName = "@types/serve-static"; + version = "1.13.3"; + src = fetchurl { + url = "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.3.tgz"; + sha512 = "oprSwp094zOglVrXdlo/4bAHtKTAxX6VT8FOZlBKrmyLbNvE1zxZyJ6yikMVtHIvwP45+ZQGJn+FdXGKTozq0g=="; + }; + }; + "@types/stack-utils-1.0.1" = { + name = "_at_types_slash_stack-utils"; + packageName = "@types/stack-utils"; + version = "1.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz"; + sha512 = "l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw=="; + }; + }; + "@types/tough-cookie-2.3.6" = { + name = "_at_types_slash_tough-cookie"; + packageName = "@types/tough-cookie"; + version = "2.3.6"; + src = fetchurl { + url = "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-2.3.6.tgz"; + sha512 = "wHNBMnkoEBiRAd3s8KTKwIuO9biFtTf0LehITzBhSco+HQI0xkXZbLOD55SW3Aqw3oUkHstkm5SPv58yaAdFPQ=="; + }; + }; + "@types/underscore-1.9.4" = { + name = "_at_types_slash_underscore"; + packageName = "@types/underscore"; + version = "1.9.4"; + src = fetchurl { + url = "https://registry.npmjs.org/@types/underscore/-/underscore-1.9.4.tgz"; + sha512 = "CjHWEMECc2/UxOZh0kpiz3lEyX2Px3rQS9HzD20lxMvx571ivOBQKeLnqEjxUY0BMgp6WJWo/pQLRBwMW5v4WQ=="; + }; + }; + "@types/websocket-0.0.40" = { + name = "_at_types_slash_websocket"; + packageName = "@types/websocket"; + version = "0.0.40"; + src = fetchurl { + url = "https://registry.npmjs.org/@types/websocket/-/websocket-0.0.40.tgz"; + sha512 = "ldteZwWIgl9cOy7FyvYn+39Ah4+PfpVE72eYKw75iy2L0zTbhbcwvzeJ5IOu6DQP93bjfXq0NGHY6FYtmYoqFQ=="; + }; + }; + "@types/ws-6.0.4" = { + name = "_at_types_slash_ws"; + packageName = "@types/ws"; + version = "6.0.4"; + src = fetchurl { + url = "https://registry.npmjs.org/@types/ws/-/ws-6.0.4.tgz"; + sha512 = "PpPrX7SZW9re6+Ha8ojZG4Se8AZXgf0GK6zmfqEuCsY49LFDNXO3SByp44X3dFEqtB73lkCDAdUazhAjVPiNwg=="; + }; + }; + "@types/yargs-13.0.8" = { + name = "_at_types_slash_yargs"; + packageName = "@types/yargs"; + version = "13.0.8"; + src = fetchurl { + url = "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.8.tgz"; + sha512 = "XAvHLwG7UQ+8M4caKIH0ZozIOYay5fQkAgyIXegXT9jPtdIGdhga+sUEdAr1CiG46aB+c64xQEYyEzlwWVTNzA=="; + }; + }; + "@types/yargs-parser-15.0.0" = { + name = "_at_types_slash_yargs-parser"; + packageName = "@types/yargs-parser"; + version = "15.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-15.0.0.tgz"; + sha512 = "FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw=="; + }; + }; + "@webassemblyjs/ast-1.8.5" = { + name = "_at_webassemblyjs_slash_ast"; + packageName = "@webassemblyjs/ast"; + version = "1.8.5"; + src = fetchurl { + url = "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz"; + sha512 = "aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ=="; + }; + }; + "@webassemblyjs/floating-point-hex-parser-1.8.5" = { + name = "_at_webassemblyjs_slash_floating-point-hex-parser"; + packageName = "@webassemblyjs/floating-point-hex-parser"; + version = "1.8.5"; + src = fetchurl { + url = "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz"; + sha512 = "9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ=="; + }; + }; + "@webassemblyjs/helper-api-error-1.8.5" = { + name = "_at_webassemblyjs_slash_helper-api-error"; + packageName = "@webassemblyjs/helper-api-error"; + version = "1.8.5"; + src = fetchurl { + url = "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz"; + sha512 = "Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA=="; + }; + }; + "@webassemblyjs/helper-buffer-1.8.5" = { + name = "_at_webassemblyjs_slash_helper-buffer"; + packageName = "@webassemblyjs/helper-buffer"; + version = "1.8.5"; + src = fetchurl { + url = "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz"; + sha512 = "Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q=="; + }; + }; + "@webassemblyjs/helper-code-frame-1.8.5" = { + name = "_at_webassemblyjs_slash_helper-code-frame"; + packageName = "@webassemblyjs/helper-code-frame"; + version = "1.8.5"; + src = fetchurl { + url = "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz"; + sha512 = "VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ=="; + }; + }; + "@webassemblyjs/helper-fsm-1.8.5" = { + name = "_at_webassemblyjs_slash_helper-fsm"; + packageName = "@webassemblyjs/helper-fsm"; + version = "1.8.5"; + src = fetchurl { + url = "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz"; + sha512 = "kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow=="; + }; + }; + "@webassemblyjs/helper-module-context-1.8.5" = { + name = "_at_webassemblyjs_slash_helper-module-context"; + packageName = "@webassemblyjs/helper-module-context"; + version = "1.8.5"; + src = fetchurl { + url = "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz"; + sha512 = "/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g=="; + }; + }; + "@webassemblyjs/helper-wasm-bytecode-1.8.5" = { + name = "_at_webassemblyjs_slash_helper-wasm-bytecode"; + packageName = "@webassemblyjs/helper-wasm-bytecode"; + version = "1.8.5"; + src = fetchurl { + url = "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz"; + sha512 = "Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ=="; + }; + }; + "@webassemblyjs/helper-wasm-section-1.8.5" = { + name = "_at_webassemblyjs_slash_helper-wasm-section"; + packageName = "@webassemblyjs/helper-wasm-section"; + version = "1.8.5"; + src = fetchurl { + url = "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz"; + sha512 = "VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA=="; + }; + }; + "@webassemblyjs/ieee754-1.8.5" = { + name = "_at_webassemblyjs_slash_ieee754"; + packageName = "@webassemblyjs/ieee754"; + version = "1.8.5"; + src = fetchurl { + url = "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz"; + sha512 = "aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g=="; + }; + }; + "@webassemblyjs/leb128-1.8.5" = { + name = "_at_webassemblyjs_slash_leb128"; + packageName = "@webassemblyjs/leb128"; + version = "1.8.5"; + src = fetchurl { + url = "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.8.5.tgz"; + sha512 = "plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A=="; + }; + }; + "@webassemblyjs/utf8-1.8.5" = { + name = "_at_webassemblyjs_slash_utf8"; + packageName = "@webassemblyjs/utf8"; + version = "1.8.5"; + src = fetchurl { + url = "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.8.5.tgz"; + sha512 = "U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw=="; + }; + }; + "@webassemblyjs/wasm-edit-1.8.5" = { + name = "_at_webassemblyjs_slash_wasm-edit"; + packageName = "@webassemblyjs/wasm-edit"; + version = "1.8.5"; + src = fetchurl { + url = "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz"; + sha512 = "A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q=="; + }; + }; + "@webassemblyjs/wasm-gen-1.8.5" = { + name = "_at_webassemblyjs_slash_wasm-gen"; + packageName = "@webassemblyjs/wasm-gen"; + version = "1.8.5"; + src = fetchurl { + url = "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz"; + sha512 = "BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg=="; + }; + }; + "@webassemblyjs/wasm-opt-1.8.5" = { + name = "_at_webassemblyjs_slash_wasm-opt"; + packageName = "@webassemblyjs/wasm-opt"; + version = "1.8.5"; + src = fetchurl { + url = "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz"; + sha512 = "HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q=="; + }; + }; + "@webassemblyjs/wasm-parser-1.8.5" = { + name = "_at_webassemblyjs_slash_wasm-parser"; + packageName = "@webassemblyjs/wasm-parser"; + version = "1.8.5"; + src = fetchurl { + url = "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz"; + sha512 = "pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw=="; + }; + }; + "@webassemblyjs/wast-parser-1.8.5" = { + name = "_at_webassemblyjs_slash_wast-parser"; + packageName = "@webassemblyjs/wast-parser"; + version = "1.8.5"; + src = fetchurl { + url = "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz"; + sha512 = "daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg=="; + }; + }; + "@webassemblyjs/wast-printer-1.8.5" = { + name = "_at_webassemblyjs_slash_wast-printer"; + packageName = "@webassemblyjs/wast-printer"; + version = "1.8.5"; + src = fetchurl { + url = "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz"; + sha512 = "w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg=="; + }; + }; + "@xtuc/ieee754-1.2.0" = { + name = "_at_xtuc_slash_ieee754"; + packageName = "@xtuc/ieee754"; + version = "1.2.0"; + src = fetchurl { + url = "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz"; + sha512 = "DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA=="; + }; + }; + "@xtuc/long-4.2.2" = { + name = "_at_xtuc_slash_long"; + packageName = "@xtuc/long"; + version = "4.2.2"; + src = fetchurl { + url = "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz"; + sha512 = "NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ=="; + }; + }; + "abab-2.0.3" = { + name = "abab"; + packageName = "abab"; + version = "2.0.3"; + src = fetchurl { + url = "https://registry.npmjs.org/abab/-/abab-2.0.3.tgz"; + sha512 = "tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg=="; + }; + }; + "abbrev-1.1.1" = { + name = "abbrev"; + packageName = "abbrev"; + version = "1.1.1"; + src = fetchurl { + url = "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz"; + sha512 = "nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="; + }; + }; + "accepts-1.3.7" = { + name = "accepts"; + packageName = "accepts"; + version = "1.3.7"; + src = fetchurl { + url = "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz"; + sha512 = "Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA=="; + }; + }; + "acorn-3.3.0" = { + name = "acorn"; + packageName = "acorn"; + version = "3.3.0"; + src = fetchurl { + url = "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz"; + sha1 = "45e37fb39e8da3f25baee3ff5369e2bb5f22017a"; + }; + }; + "acorn-4.0.13" = { + name = "acorn"; + packageName = "acorn"; + version = "4.0.13"; + src = fetchurl { + url = "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz"; + sha1 = "105495ae5361d697bd195c825192e1ad7f253787"; + }; + }; + "acorn-5.7.4" = { + name = "acorn"; + packageName = "acorn"; + version = "5.7.4"; + src = fetchurl { + url = "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz"; + sha512 = "1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg=="; + }; + }; + "acorn-6.4.1" = { + name = "acorn"; + packageName = "acorn"; + version = "6.4.1"; + src = fetchurl { + url = "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz"; + sha512 = "ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA=="; + }; + }; + "acorn-7.1.1" = { + name = "acorn"; + packageName = "acorn"; + version = "7.1.1"; + src = fetchurl { + url = "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz"; + sha512 = "add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg=="; + }; + }; + "acorn-globals-3.1.0" = { + name = "acorn-globals"; + packageName = "acorn-globals"; + version = "3.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/acorn-globals/-/acorn-globals-3.1.0.tgz"; + sha1 = "fd8270f71fbb4996b004fa880ee5d46573a731bf"; + }; + }; + "acorn-globals-4.3.4" = { + name = "acorn-globals"; + packageName = "acorn-globals"; + version = "4.3.4"; + src = fetchurl { + url = "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz"; + sha512 = "clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A=="; + }; + }; + "acorn-walk-6.2.0" = { + name = "acorn-walk"; + packageName = "acorn-walk"; + version = "6.2.0"; + src = fetchurl { + url = "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz"; + sha512 = "7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA=="; + }; + }; + "acorn-walk-7.1.1" = { + name = "acorn-walk"; + packageName = "acorn-walk"; + version = "7.1.1"; + src = fetchurl { + url = "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.1.1.tgz"; + sha512 = "wdlPY2tm/9XBr7QkKlq0WQVgiuGTX6YWPyRyBviSoScBuLfTVQhvwg6wJ369GJ/1nPfTLMfnrFIfjqVg6d+jQQ=="; + }; + }; + "aggregate-error-1.0.0" = { + name = "aggregate-error"; + packageName = "aggregate-error"; + version = "1.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/aggregate-error/-/aggregate-error-1.0.0.tgz"; + sha1 = "888344dad0220a72e3af50906117f48771925fac"; + }; + }; + "ajv-6.12.0" = { + name = "ajv"; + packageName = "ajv"; + version = "6.12.0"; + src = fetchurl { + url = "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz"; + sha512 = "D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw=="; + }; + }; + "ajv-errors-1.0.1" = { + name = "ajv-errors"; + packageName = "ajv-errors"; + version = "1.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz"; + sha512 = "DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ=="; + }; + }; + "ajv-keywords-3.4.1" = { + name = "ajv-keywords"; + packageName = "ajv-keywords"; + version = "3.4.1"; + src = fetchurl { + url = "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz"; + sha512 = "RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ=="; + }; + }; + "align-text-0.1.4" = { + name = "align-text"; + packageName = "align-text"; + version = "0.1.4"; + src = fetchurl { + url = "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz"; + sha1 = "0cd90a561093f35d0a99256c22b7069433fad117"; + }; + }; + "ansi-colors-3.2.4" = { + name = "ansi-colors"; + packageName = "ansi-colors"; + version = "3.2.4"; + src = fetchurl { + url = "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz"; + sha512 = "hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA=="; + }; + }; + "ansi-escapes-3.2.0" = { + name = "ansi-escapes"; + packageName = "ansi-escapes"; + version = "3.2.0"; + src = fetchurl { + url = "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz"; + sha512 = "cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ=="; + }; + }; + "ansi-html-0.0.7" = { + name = "ansi-html"; + packageName = "ansi-html"; + version = "0.0.7"; + src = fetchurl { + url = "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz"; + sha1 = "813584021962a9e9e6fd039f940d12f56ca7859e"; + }; + }; + "ansi-regex-2.1.1" = { + name = "ansi-regex"; + packageName = "ansi-regex"; + version = "2.1.1"; + src = fetchurl { + url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz"; + sha1 = "c3b33ab5ee360d86e0e628f0468ae7ef27d654df"; + }; + }; + "ansi-regex-3.0.0" = { + name = "ansi-regex"; + packageName = "ansi-regex"; + version = "3.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz"; + sha1 = "ed0317c322064f79466c02966bddb605ab37d998"; + }; + }; + "ansi-regex-4.1.0" = { + name = "ansi-regex"; + packageName = "ansi-regex"; + version = "4.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz"; + sha512 = "1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg=="; + }; + }; + "ansi-styles-2.2.1" = { + name = "ansi-styles"; + packageName = "ansi-styles"; + version = "2.2.1"; + src = fetchurl { + url = "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz"; + sha1 = "b432dd3358b634cf75e1e4664368240533c1ddbe"; + }; + }; + "ansi-styles-3.2.1" = { + name = "ansi-styles"; + packageName = "ansi-styles"; + version = "3.2.1"; + src = fetchurl { + url = "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz"; + sha512 = "VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA=="; + }; + }; + "any-promise-1.3.0" = { + name = "any-promise"; + packageName = "any-promise"; + version = "1.3.0"; + src = fetchurl { + url = "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz"; + sha1 = "abc6afeedcea52e809cdc0376aed3ce39635d17f"; + }; + }; + "anymatch-2.0.0" = { + name = "anymatch"; + packageName = "anymatch"; + version = "2.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz"; + sha512 = "5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw=="; + }; + }; + "aproba-1.2.0" = { + name = "aproba"; + packageName = "aproba"; + version = "1.2.0"; + src = fetchurl { + url = "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz"; + sha512 = "Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw=="; + }; + }; + "argparse-1.0.10" = { + name = "argparse"; + packageName = "argparse"; + version = "1.0.10"; + src = fetchurl { + url = "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz"; + sha512 = "o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg=="; + }; + }; + "arr-diff-4.0.0" = { + name = "arr-diff"; + packageName = "arr-diff"; + version = "4.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz"; + sha1 = "d6461074febfec71e7e15235761a329a5dc7c520"; + }; + }; + "arr-flatten-1.1.0" = { + name = "arr-flatten"; + packageName = "arr-flatten"; + version = "1.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz"; + sha512 = "L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg=="; + }; + }; + "arr-union-3.1.0" = { + name = "arr-union"; + packageName = "arr-union"; + version = "3.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz"; + sha1 = "e39b09aea9def866a8f206e288af63919bae39c4"; + }; + }; + "array-back-3.1.0" = { + name = "array-back"; + packageName = "array-back"; + version = "3.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz"; + sha512 = "TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q=="; + }; + }; + "array-equal-1.0.0" = { + name = "array-equal"; + packageName = "array-equal"; + version = "1.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz"; + sha1 = "8c2a5ef2472fd9ea742b04c77a75093ba2757c93"; + }; + }; + "array-flatten-1.1.1" = { + name = "array-flatten"; + packageName = "array-flatten"; + version = "1.1.1"; + src = fetchurl { + url = "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz"; + sha1 = "9a5f699051b1e7073328f2a008968b64ea2955d2"; + }; + }; + "array-flatten-2.1.2" = { + name = "array-flatten"; + packageName = "array-flatten"; + version = "2.1.2"; + src = fetchurl { + url = "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz"; + sha512 = "hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ=="; + }; + }; + "array-union-1.0.2" = { + name = "array-union"; + packageName = "array-union"; + version = "1.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz"; + sha1 = "9a34410e4f4e3da23dea375be5be70f24778ec39"; + }; + }; + "array-uniq-1.0.3" = { + name = "array-uniq"; + packageName = "array-uniq"; + version = "1.0.3"; + src = fetchurl { + url = "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz"; + sha1 = "af6ac877a25cc7f74e058894753858dfdb24fdb6"; + }; + }; + "array-unique-0.3.2" = { + name = "array-unique"; + packageName = "array-unique"; + version = "0.3.2"; + src = fetchurl { + url = "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz"; + sha1 = "a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"; + }; + }; + "asap-2.0.6" = { + name = "asap"; + packageName = "asap"; + version = "2.0.6"; + src = fetchurl { + url = "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz"; + sha1 = "e50347611d7e690943208bbdafebcbc2fb866d46"; + }; + }; + "asn1-0.2.4" = { + name = "asn1"; + packageName = "asn1"; + version = "0.2.4"; + src = fetchurl { + url = "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz"; + sha512 = "jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg=="; + }; + }; + "asn1.js-4.10.1" = { + name = "asn1.js"; + packageName = "asn1.js"; + version = "4.10.1"; + src = fetchurl { + url = "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz"; + sha512 = "p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw=="; + }; + }; + "assert-1.5.0" = { + name = "assert"; + packageName = "assert"; + version = "1.5.0"; + src = fetchurl { + url = "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz"; + sha512 = "EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA=="; + }; + }; + "assert-plus-1.0.0" = { + name = "assert-plus"; + packageName = "assert-plus"; + version = "1.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz"; + sha1 = "f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"; + }; + }; + "assign-symbols-1.0.0" = { + name = "assign-symbols"; + packageName = "assign-symbols"; + version = "1.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz"; + sha1 = "59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"; + }; + }; + "astral-regex-1.0.0" = { + name = "astral-regex"; + packageName = "astral-regex"; + version = "1.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz"; + sha512 = "+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg=="; + }; + }; + "async-2.6.3" = { + name = "async"; + packageName = "async"; + version = "2.6.3"; + src = fetchurl { + url = "https://registry.npmjs.org/async/-/async-2.6.3.tgz"; + sha512 = "zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg=="; + }; + }; + "async-each-1.0.3" = { + name = "async-each"; + packageName = "async-each"; + version = "1.0.3"; + src = fetchurl { + url = "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz"; + sha512 = "z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ=="; + }; + }; + "async-limiter-1.0.1" = { + name = "async-limiter"; + packageName = "async-limiter"; + version = "1.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz"; + sha512 = "csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ=="; + }; + }; + "asynckit-0.4.0" = { + name = "asynckit"; + packageName = "asynckit"; + version = "0.4.0"; + src = fetchurl { + url = "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz"; + sha1 = "c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"; + }; + }; + "atob-2.1.2" = { + name = "atob"; + packageName = "atob"; + version = "2.1.2"; + src = fetchurl { + url = "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz"; + sha512 = "Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg=="; + }; + }; + "awesome-typescript-loader-5.2.1" = { + name = "awesome-typescript-loader"; + packageName = "awesome-typescript-loader"; + version = "5.2.1"; + src = fetchurl { + url = "https://registry.npmjs.org/awesome-typescript-loader/-/awesome-typescript-loader-5.2.1.tgz"; + sha512 = "slv66OAJB8orL+UUaTI3pKlLorwIvS4ARZzYR9iJJyGsEgOqueMfOMdKySWzZ73vIkEe3fcwFgsKMg4d8zyb1g=="; + }; + }; + "aws-sign2-0.7.0" = { + name = "aws-sign2"; + packageName = "aws-sign2"; + version = "0.7.0"; + src = fetchurl { + url = "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz"; + sha1 = "b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"; + }; + }; + "aws4-1.9.1" = { + name = "aws4"; + packageName = "aws4"; + version = "1.9.1"; + src = fetchurl { + url = "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz"; + sha512 = "wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug=="; + }; + }; + "axios-0.19.2" = { + name = "axios"; + packageName = "axios"; + version = "0.19.2"; + src = fetchurl { + url = "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz"; + sha512 = "fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA=="; + }; + }; + "babel-6.23.0" = { + name = "babel"; + packageName = "babel"; + version = "6.23.0"; + src = fetchurl { + url = "https://registry.npmjs.org/babel/-/babel-6.23.0.tgz"; + sha1 = "d0d1e7d803e974765beea3232d4e153c0efb90f4"; + }; + }; + "babel-code-frame-6.26.0" = { + name = "babel-code-frame"; + packageName = "babel-code-frame"; + version = "6.26.0"; + src = fetchurl { + url = "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz"; + sha1 = "63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b"; + }; + }; + "babel-core-6.26.3" = { + name = "babel-core"; + packageName = "babel-core"; + version = "6.26.3"; + src = fetchurl { + url = "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz"; + sha512 = "6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA=="; + }; + }; + "babel-generator-6.26.1" = { + name = "babel-generator"; + packageName = "babel-generator"; + version = "6.26.1"; + src = fetchurl { + url = "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz"; + sha512 = "HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA=="; + }; + }; + "babel-helper-builder-binary-assignment-operator-visitor-6.24.1" = { + name = "babel-helper-builder-binary-assignment-operator-visitor"; + packageName = "babel-helper-builder-binary-assignment-operator-visitor"; + version = "6.24.1"; + src = fetchurl { + url = "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz"; + sha1 = "cce4517ada356f4220bcae8a02c2b346f9a56664"; + }; + }; + "babel-helper-call-delegate-6.24.1" = { + name = "babel-helper-call-delegate"; + packageName = "babel-helper-call-delegate"; + version = "6.24.1"; + src = fetchurl { + url = "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz"; + sha1 = "ece6aacddc76e41c3461f88bfc575bd0daa2df8d"; + }; + }; + "babel-helper-define-map-6.26.0" = { + name = "babel-helper-define-map"; + packageName = "babel-helper-define-map"; + version = "6.26.0"; + src = fetchurl { + url = "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz"; + sha1 = "a5f56dab41a25f97ecb498c7ebaca9819f95be5f"; + }; + }; + "babel-helper-explode-assignable-expression-6.24.1" = { + name = "babel-helper-explode-assignable-expression"; + packageName = "babel-helper-explode-assignable-expression"; + version = "6.24.1"; + src = fetchurl { + url = "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz"; + sha1 = "f25b82cf7dc10433c55f70592d5746400ac22caa"; + }; + }; + "babel-helper-function-name-6.24.1" = { + name = "babel-helper-function-name"; + packageName = "babel-helper-function-name"; + version = "6.24.1"; + src = fetchurl { + url = "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz"; + sha1 = "d3475b8c03ed98242a25b48351ab18399d3580a9"; + }; + }; + "babel-helper-get-function-arity-6.24.1" = { + name = "babel-helper-get-function-arity"; + packageName = "babel-helper-get-function-arity"; + version = "6.24.1"; + src = fetchurl { + url = "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz"; + sha1 = "8f7782aa93407c41d3aa50908f89b031b1b6853d"; + }; + }; + "babel-helper-hoist-variables-6.24.1" = { + name = "babel-helper-hoist-variables"; + packageName = "babel-helper-hoist-variables"; + version = "6.24.1"; + src = fetchurl { + url = "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz"; + sha1 = "1ecb27689c9d25513eadbc9914a73f5408be7a76"; + }; + }; + "babel-helper-optimise-call-expression-6.24.1" = { + name = "babel-helper-optimise-call-expression"; + packageName = "babel-helper-optimise-call-expression"; + version = "6.24.1"; + src = fetchurl { + url = "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz"; + sha1 = "f7a13427ba9f73f8f4fa993c54a97882d1244257"; + }; + }; + "babel-helper-regex-6.26.0" = { + name = "babel-helper-regex"; + packageName = "babel-helper-regex"; + version = "6.26.0"; + src = fetchurl { + url = "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz"; + sha1 = "325c59f902f82f24b74faceed0363954f6495e72"; + }; + }; + "babel-helper-remap-async-to-generator-6.24.1" = { + name = "babel-helper-remap-async-to-generator"; + packageName = "babel-helper-remap-async-to-generator"; + version = "6.24.1"; + src = fetchurl { + url = "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz"; + sha1 = "5ec581827ad723fecdd381f1c928390676e4551b"; + }; + }; + "babel-helper-replace-supers-6.24.1" = { + name = "babel-helper-replace-supers"; + packageName = "babel-helper-replace-supers"; + version = "6.24.1"; + src = fetchurl { + url = "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz"; + sha1 = "bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a"; + }; + }; + "babel-helpers-6.24.1" = { + name = "babel-helpers"; + packageName = "babel-helpers"; + version = "6.24.1"; + src = fetchurl { + url = "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz"; + sha1 = "3471de9caec388e5c850e597e58a26ddf37602b2"; + }; + }; + "babel-jest-24.9.0" = { + name = "babel-jest"; + packageName = "babel-jest"; + version = "24.9.0"; + src = fetchurl { + url = "https://registry.npmjs.org/babel-jest/-/babel-jest-24.9.0.tgz"; + sha512 = "ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw=="; + }; + }; + "babel-messages-6.23.0" = { + name = "babel-messages"; + packageName = "babel-messages"; + version = "6.23.0"; + src = fetchurl { + url = "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz"; + sha1 = "f3cdf4703858035b2a2951c6ec5edf6c62f2630e"; + }; + }; + "babel-plugin-check-es2015-constants-6.22.0" = { + name = "babel-plugin-check-es2015-constants"; + packageName = "babel-plugin-check-es2015-constants"; + version = "6.22.0"; + src = fetchurl { + url = "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz"; + sha1 = "35157b101426fd2ffd3da3f75c7d1e91835bbf8a"; + }; + }; + "babel-plugin-istanbul-5.2.0" = { + name = "babel-plugin-istanbul"; + packageName = "babel-plugin-istanbul"; + version = "5.2.0"; + src = fetchurl { + url = "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz"; + sha512 = "5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw=="; + }; + }; + "babel-plugin-jest-hoist-24.9.0" = { + name = "babel-plugin-jest-hoist"; + packageName = "babel-plugin-jest-hoist"; + version = "24.9.0"; + src = fetchurl { + url = "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz"; + sha512 = "2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw=="; + }; + }; + "babel-plugin-syntax-async-functions-6.13.0" = { + name = "babel-plugin-syntax-async-functions"; + packageName = "babel-plugin-syntax-async-functions"; + version = "6.13.0"; + src = fetchurl { + url = "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz"; + sha1 = "cad9cad1191b5ad634bf30ae0872391e0647be95"; + }; + }; + "babel-plugin-syntax-exponentiation-operator-6.13.0" = { + name = "babel-plugin-syntax-exponentiation-operator"; + packageName = "babel-plugin-syntax-exponentiation-operator"; + version = "6.13.0"; + src = fetchurl { + url = "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz"; + sha1 = "9ee7e8337290da95288201a6a57f4170317830de"; + }; + }; + "babel-plugin-syntax-trailing-function-commas-6.22.0" = { + name = "babel-plugin-syntax-trailing-function-commas"; + packageName = "babel-plugin-syntax-trailing-function-commas"; + version = "6.22.0"; + src = fetchurl { + url = "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz"; + sha1 = "ba0360937f8d06e40180a43fe0d5616fff532cf3"; + }; + }; + "babel-plugin-transform-async-to-generator-6.24.1" = { + name = "babel-plugin-transform-async-to-generator"; + packageName = "babel-plugin-transform-async-to-generator"; + version = "6.24.1"; + src = fetchurl { + url = "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz"; + sha1 = "6536e378aff6cb1d5517ac0e40eb3e9fc8d08761"; + }; + }; + "babel-plugin-transform-es2015-arrow-functions-6.22.0" = { + name = "babel-plugin-transform-es2015-arrow-functions"; + packageName = "babel-plugin-transform-es2015-arrow-functions"; + version = "6.22.0"; + src = fetchurl { + url = "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz"; + sha1 = "452692cb711d5f79dc7f85e440ce41b9f244d221"; + }; + }; + "babel-plugin-transform-es2015-block-scoped-functions-6.22.0" = { + name = "babel-plugin-transform-es2015-block-scoped-functions"; + packageName = "babel-plugin-transform-es2015-block-scoped-functions"; + version = "6.22.0"; + src = fetchurl { + url = "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz"; + sha1 = "bbc51b49f964d70cb8d8e0b94e820246ce3a6141"; + }; + }; + "babel-plugin-transform-es2015-block-scoping-6.26.0" = { + name = "babel-plugin-transform-es2015-block-scoping"; + packageName = "babel-plugin-transform-es2015-block-scoping"; + version = "6.26.0"; + src = fetchurl { + url = "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz"; + sha1 = "d70f5299c1308d05c12f463813b0a09e73b1895f"; + }; + }; + "babel-plugin-transform-es2015-classes-6.24.1" = { + name = "babel-plugin-transform-es2015-classes"; + packageName = "babel-plugin-transform-es2015-classes"; + version = "6.24.1"; + src = fetchurl { + url = "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz"; + sha1 = "5a4c58a50c9c9461e564b4b2a3bfabc97a2584db"; + }; + }; + "babel-plugin-transform-es2015-computed-properties-6.24.1" = { + name = "babel-plugin-transform-es2015-computed-properties"; + packageName = "babel-plugin-transform-es2015-computed-properties"; + version = "6.24.1"; + src = fetchurl { + url = "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz"; + sha1 = "6fe2a8d16895d5634f4cd999b6d3480a308159b3"; + }; + }; + "babel-plugin-transform-es2015-destructuring-6.23.0" = { + name = "babel-plugin-transform-es2015-destructuring"; + packageName = "babel-plugin-transform-es2015-destructuring"; + version = "6.23.0"; + src = fetchurl { + url = "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz"; + sha1 = "997bb1f1ab967f682d2b0876fe358d60e765c56d"; + }; + }; + "babel-plugin-transform-es2015-duplicate-keys-6.24.1" = { + name = "babel-plugin-transform-es2015-duplicate-keys"; + packageName = "babel-plugin-transform-es2015-duplicate-keys"; + version = "6.24.1"; + src = fetchurl { + url = "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz"; + sha1 = "73eb3d310ca969e3ef9ec91c53741a6f1576423e"; + }; + }; + "babel-plugin-transform-es2015-for-of-6.23.0" = { + name = "babel-plugin-transform-es2015-for-of"; + packageName = "babel-plugin-transform-es2015-for-of"; + version = "6.23.0"; + src = fetchurl { + url = "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz"; + sha1 = "f47c95b2b613df1d3ecc2fdb7573623c75248691"; + }; + }; + "babel-plugin-transform-es2015-function-name-6.24.1" = { + name = "babel-plugin-transform-es2015-function-name"; + packageName = "babel-plugin-transform-es2015-function-name"; + version = "6.24.1"; + src = fetchurl { + url = "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz"; + sha1 = "834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b"; + }; + }; + "babel-plugin-transform-es2015-literals-6.22.0" = { + name = "babel-plugin-transform-es2015-literals"; + packageName = "babel-plugin-transform-es2015-literals"; + version = "6.22.0"; + src = fetchurl { + url = "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz"; + sha1 = "4f54a02d6cd66cf915280019a31d31925377ca2e"; + }; + }; + "babel-plugin-transform-es2015-modules-amd-6.24.1" = { + name = "babel-plugin-transform-es2015-modules-amd"; + packageName = "babel-plugin-transform-es2015-modules-amd"; + version = "6.24.1"; + src = fetchurl { + url = "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz"; + sha1 = "3b3e54017239842d6d19c3011c4bd2f00a00d154"; + }; + }; + "babel-plugin-transform-es2015-modules-commonjs-6.26.2" = { + name = "babel-plugin-transform-es2015-modules-commonjs"; + packageName = "babel-plugin-transform-es2015-modules-commonjs"; + version = "6.26.2"; + src = fetchurl { + url = "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz"; + sha512 = "CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q=="; + }; + }; + "babel-plugin-transform-es2015-modules-systemjs-6.24.1" = { + name = "babel-plugin-transform-es2015-modules-systemjs"; + packageName = "babel-plugin-transform-es2015-modules-systemjs"; + version = "6.24.1"; + src = fetchurl { + url = "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz"; + sha1 = "ff89a142b9119a906195f5f106ecf305d9407d23"; + }; + }; + "babel-plugin-transform-es2015-modules-umd-6.24.1" = { + name = "babel-plugin-transform-es2015-modules-umd"; + packageName = "babel-plugin-transform-es2015-modules-umd"; + version = "6.24.1"; + src = fetchurl { + url = "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz"; + sha1 = "ac997e6285cd18ed6176adb607d602344ad38468"; + }; + }; + "babel-plugin-transform-es2015-object-super-6.24.1" = { + name = "babel-plugin-transform-es2015-object-super"; + packageName = "babel-plugin-transform-es2015-object-super"; + version = "6.24.1"; + src = fetchurl { + url = "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz"; + sha1 = "24cef69ae21cb83a7f8603dad021f572eb278f8d"; + }; + }; + "babel-plugin-transform-es2015-parameters-6.24.1" = { + name = "babel-plugin-transform-es2015-parameters"; + packageName = "babel-plugin-transform-es2015-parameters"; + version = "6.24.1"; + src = fetchurl { + url = "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz"; + sha1 = "57ac351ab49caf14a97cd13b09f66fdf0a625f2b"; + }; + }; + "babel-plugin-transform-es2015-shorthand-properties-6.24.1" = { + name = "babel-plugin-transform-es2015-shorthand-properties"; + packageName = "babel-plugin-transform-es2015-shorthand-properties"; + version = "6.24.1"; + src = fetchurl { + url = "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz"; + sha1 = "24f875d6721c87661bbd99a4622e51f14de38aa0"; + }; + }; + "babel-plugin-transform-es2015-spread-6.22.0" = { + name = "babel-plugin-transform-es2015-spread"; + packageName = "babel-plugin-transform-es2015-spread"; + version = "6.22.0"; + src = fetchurl { + url = "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz"; + sha1 = "d6d68a99f89aedc4536c81a542e8dd9f1746f8d1"; + }; + }; + "babel-plugin-transform-es2015-sticky-regex-6.24.1" = { + name = "babel-plugin-transform-es2015-sticky-regex"; + packageName = "babel-plugin-transform-es2015-sticky-regex"; + version = "6.24.1"; + src = fetchurl { + url = "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz"; + sha1 = "00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc"; + }; + }; + "babel-plugin-transform-es2015-template-literals-6.22.0" = { + name = "babel-plugin-transform-es2015-template-literals"; + packageName = "babel-plugin-transform-es2015-template-literals"; + version = "6.22.0"; + src = fetchurl { + url = "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz"; + sha1 = "a84b3450f7e9f8f1f6839d6d687da84bb1236d8d"; + }; + }; + "babel-plugin-transform-es2015-typeof-symbol-6.23.0" = { + name = "babel-plugin-transform-es2015-typeof-symbol"; + packageName = "babel-plugin-transform-es2015-typeof-symbol"; + version = "6.23.0"; + src = fetchurl { + url = "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz"; + sha1 = "dec09f1cddff94b52ac73d505c84df59dcceb372"; + }; + }; + "babel-plugin-transform-es2015-unicode-regex-6.24.1" = { + name = "babel-plugin-transform-es2015-unicode-regex"; + packageName = "babel-plugin-transform-es2015-unicode-regex"; + version = "6.24.1"; + src = fetchurl { + url = "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz"; + sha1 = "d38b12f42ea7323f729387f18a7c5ae1faeb35e9"; + }; + }; + "babel-plugin-transform-exponentiation-operator-6.24.1" = { + name = "babel-plugin-transform-exponentiation-operator"; + packageName = "babel-plugin-transform-exponentiation-operator"; + version = "6.24.1"; + src = fetchurl { + url = "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz"; + sha1 = "2ab0c9c7f3098fa48907772bb813fe41e8de3a0e"; + }; + }; + "babel-plugin-transform-regenerator-6.26.0" = { + name = "babel-plugin-transform-regenerator"; + packageName = "babel-plugin-transform-regenerator"; + version = "6.26.0"; + src = fetchurl { + url = "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz"; + sha1 = "e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f"; + }; + }; + "babel-plugin-transform-strict-mode-6.24.1" = { + name = "babel-plugin-transform-strict-mode"; + packageName = "babel-plugin-transform-strict-mode"; + version = "6.24.1"; + src = fetchurl { + url = "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz"; + sha1 = "d5faf7aa578a65bbe591cf5edae04a0c67020758"; + }; + }; + "babel-preset-env-1.7.0" = { + name = "babel-preset-env"; + packageName = "babel-preset-env"; + version = "1.7.0"; + src = fetchurl { + url = "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.7.0.tgz"; + sha512 = "9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg=="; + }; + }; + "babel-preset-jest-24.9.0" = { + name = "babel-preset-jest"; + packageName = "babel-preset-jest"; + version = "24.9.0"; + src = fetchurl { + url = "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz"; + sha512 = "izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg=="; + }; + }; + "babel-register-6.26.0" = { + name = "babel-register"; + packageName = "babel-register"; + version = "6.26.0"; + src = fetchurl { + url = "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz"; + sha1 = "6ed021173e2fcb486d7acb45c6009a856f647071"; + }; + }; + "babel-runtime-6.26.0" = { + name = "babel-runtime"; + packageName = "babel-runtime"; + version = "6.26.0"; + src = fetchurl { + url = "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz"; + sha1 = "965c7058668e82b55d7bfe04ff2337bc8b5647fe"; + }; + }; + "babel-template-6.26.0" = { + name = "babel-template"; + packageName = "babel-template"; + version = "6.26.0"; + src = fetchurl { + url = "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz"; + sha1 = "de03e2d16396b069f46dd9fff8521fb1a0e35e02"; + }; + }; + "babel-traverse-6.26.0" = { + name = "babel-traverse"; + packageName = "babel-traverse"; + version = "6.26.0"; + src = fetchurl { + url = "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz"; + sha1 = "46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee"; + }; + }; + "babel-types-6.26.0" = { + name = "babel-types"; + packageName = "babel-types"; + version = "6.26.0"; + src = fetchurl { + url = "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz"; + sha1 = "a3b073f94ab49eb6fa55cd65227a334380632497"; + }; + }; + "babylon-6.18.0" = { + name = "babylon"; + packageName = "babylon"; + version = "6.18.0"; + src = fetchurl { + url = "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz"; + sha512 = "q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ=="; + }; + }; + "balanced-match-1.0.0" = { + name = "balanced-match"; + packageName = "balanced-match"; + version = "1.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz"; + sha1 = "89b4d199ab2bee49de164ea02b89ce462d71b767"; + }; + }; + "base-0.11.2" = { + name = "base"; + packageName = "base"; + version = "0.11.2"; + src = fetchurl { + url = "https://registry.npmjs.org/base/-/base-0.11.2.tgz"; + sha512 = "5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg=="; + }; + }; + "base64-js-1.3.1" = { + name = "base64-js"; + packageName = "base64-js"; + version = "1.3.1"; + src = fetchurl { + url = "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz"; + sha512 = "mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g=="; + }; + }; + "base64url-3.0.1" = { + name = "base64url"; + packageName = "base64url"; + version = "3.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/base64url/-/base64url-3.0.1.tgz"; + sha512 = "ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A=="; + }; + }; + "batch-0.6.1" = { + name = "batch"; + packageName = "batch"; + version = "0.6.1"; + src = fetchurl { + url = "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz"; + sha1 = "dc34314f4e679318093fc760272525f94bf25c16"; + }; + }; + "bcrypt-pbkdf-1.0.2" = { + name = "bcrypt-pbkdf"; + packageName = "bcrypt-pbkdf"; + version = "1.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz"; + sha1 = "a4301d389b6a43f9b67ff3ca11a3f6637e360e9e"; + }; + }; + "bfj-6.1.2" = { + name = "bfj"; + packageName = "bfj"; + version = "6.1.2"; + src = fetchurl { + url = "https://registry.npmjs.org/bfj/-/bfj-6.1.2.tgz"; + sha512 = "BmBJa4Lip6BPRINSZ0BPEIfB1wUY/9rwbwvIHQA1KjX9om29B6id0wnWXq7m3bn5JrUVjeOTnVuhPT1FiHwPGw=="; + }; + }; + "big.js-5.2.2" = { + name = "big.js"; + packageName = "big.js"; + version = "5.2.2"; + src = fetchurl { + url = "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz"; + sha512 = "vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ=="; + }; + }; + "binary-extensions-1.13.1" = { + name = "binary-extensions"; + packageName = "binary-extensions"; + version = "1.13.1"; + src = fetchurl { + url = "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz"; + sha512 = "Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw=="; + }; + }; + "bindings-1.5.0" = { + name = "bindings"; + packageName = "bindings"; + version = "1.5.0"; + src = fetchurl { + url = "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz"; + sha512 = "p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ=="; + }; + }; + "bluebird-3.7.2" = { + name = "bluebird"; + packageName = "bluebird"; + version = "3.7.2"; + src = fetchurl { + url = "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz"; + sha512 = "XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg=="; + }; + }; + "bn.js-4.11.8" = { + name = "bn.js"; + packageName = "bn.js"; + version = "4.11.8"; + src = fetchurl { + url = "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz"; + sha512 = "ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA=="; + }; + }; + "body-parser-1.19.0" = { + name = "body-parser"; + packageName = "body-parser"; + version = "1.19.0"; + src = fetchurl { + url = "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz"; + sha512 = "dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw=="; + }; + }; + "bonjour-3.5.0" = { + name = "bonjour"; + packageName = "bonjour"; + version = "3.5.0"; + src = fetchurl { + url = "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz"; + sha1 = "8e890a183d8ee9a2393b3844c691a42bcf7bc9f5"; + }; + }; + "brace-expansion-1.1.11" = { + name = "brace-expansion"; + packageName = "brace-expansion"; + version = "1.1.11"; + src = fetchurl { + url = "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz"; + sha512 = "iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA=="; + }; + }; + "braces-2.3.2" = { + name = "braces"; + packageName = "braces"; + version = "2.3.2"; + src = fetchurl { + url = "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz"; + sha512 = "aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w=="; + }; + }; + "brorand-1.1.0" = { + name = "brorand"; + packageName = "brorand"; + version = "1.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz"; + sha1 = "12c25efe40a45e3c323eb8675a0a0ce57b22371f"; + }; + }; + "browser-process-hrtime-1.0.0" = { + name = "browser-process-hrtime"; + packageName = "browser-process-hrtime"; + version = "1.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz"; + sha512 = "9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow=="; + }; + }; + "browser-resolve-1.11.3" = { + name = "browser-resolve"; + packageName = "browser-resolve"; + version = "1.11.3"; + src = fetchurl { + url = "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz"; + sha512 = "exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ=="; + }; + }; + "browserify-aes-1.2.0" = { + name = "browserify-aes"; + packageName = "browserify-aes"; + version = "1.2.0"; + src = fetchurl { + url = "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz"; + sha512 = "+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA=="; + }; + }; + "browserify-cipher-1.0.1" = { + name = "browserify-cipher"; + packageName = "browserify-cipher"; + version = "1.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz"; + sha512 = "sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w=="; + }; + }; + "browserify-des-1.0.2" = { + name = "browserify-des"; + packageName = "browserify-des"; + version = "1.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz"; + sha512 = "BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A=="; + }; + }; + "browserify-rsa-4.0.1" = { + name = "browserify-rsa"; + packageName = "browserify-rsa"; + version = "4.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz"; + sha1 = "21e0abfaf6f2029cf2fafb133567a701d4135524"; + }; + }; + "browserify-sign-4.0.4" = { + name = "browserify-sign"; + packageName = "browserify-sign"; + version = "4.0.4"; + src = fetchurl { + url = "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz"; + sha1 = "aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298"; + }; + }; + "browserify-zlib-0.2.0" = { + name = "browserify-zlib"; + packageName = "browserify-zlib"; + version = "0.2.0"; + src = fetchurl { + url = "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz"; + sha512 = "Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA=="; + }; + }; + "browserslist-3.2.8" = { + name = "browserslist"; + packageName = "browserslist"; + version = "3.2.8"; + src = fetchurl { + url = "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz"; + sha512 = "WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ=="; + }; + }; + "bs-logger-0.2.6" = { + name = "bs-logger"; + packageName = "bs-logger"; + version = "0.2.6"; + src = fetchurl { + url = "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz"; + sha512 = "pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog=="; + }; + }; + "bser-2.1.1" = { + name = "bser"; + packageName = "bser"; + version = "2.1.1"; + src = fetchurl { + url = "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz"; + sha512 = "gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ=="; + }; + }; + "buffer-4.9.2" = { + name = "buffer"; + packageName = "buffer"; + version = "4.9.2"; + src = fetchurl { + url = "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz"; + sha512 = "xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg=="; + }; + }; + "buffer-from-1.1.1" = { + name = "buffer-from"; + packageName = "buffer-from"; + version = "1.1.1"; + src = fetchurl { + url = "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz"; + sha512 = "MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A=="; + }; + }; + "buffer-indexof-1.1.1" = { + name = "buffer-indexof"; + packageName = "buffer-indexof"; + version = "1.1.1"; + src = fetchurl { + url = "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz"; + sha512 = "4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g=="; + }; + }; + "buffer-xor-1.0.3" = { + name = "buffer-xor"; + packageName = "buffer-xor"; + version = "1.0.3"; + src = fetchurl { + url = "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz"; + sha1 = "26e61ed1422fb70dd42e6e36729ed51d855fe8d9"; + }; + }; + "builtin-status-codes-3.0.0" = { + name = "builtin-status-codes"; + packageName = "builtin-status-codes"; + version = "3.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz"; + sha1 = "85982878e21b98e1c66425e03d0174788f569ee8"; + }; + }; + "byline-5.0.0" = { + name = "byline"; + packageName = "byline"; + version = "5.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/byline/-/byline-5.0.0.tgz"; + sha1 = "741c5216468eadc457b03410118ad77de8c1ddb1"; + }; + }; + "bytes-3.0.0" = { + name = "bytes"; + packageName = "bytes"; + version = "3.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz"; + sha1 = "d32815404d689699f85a4ea4fa8755dd13a96048"; + }; + }; + "bytes-3.1.0" = { + name = "bytes"; + packageName = "bytes"; + version = "3.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz"; + sha512 = "zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg=="; + }; + }; + "cacache-10.0.4" = { + name = "cacache"; + packageName = "cacache"; + version = "10.0.4"; + src = fetchurl { + url = "https://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz"; + sha512 = "Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA=="; + }; + }; + "cacache-12.0.3" = { + name = "cacache"; + packageName = "cacache"; + version = "12.0.3"; + src = fetchurl { + url = "https://registry.npmjs.org/cacache/-/cacache-12.0.3.tgz"; + sha512 = "kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw=="; + }; + }; + "cache-base-1.0.1" = { + name = "cache-base"; + packageName = "cache-base"; + version = "1.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz"; + sha512 = "AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ=="; + }; + }; + "cache-content-type-1.0.1" = { + name = "cache-content-type"; + packageName = "cache-content-type"; + version = "1.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/cache-content-type/-/cache-content-type-1.0.1.tgz"; + sha512 = "IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA=="; + }; + }; + "cacheable-request-2.1.4" = { + name = "cacheable-request"; + packageName = "cacheable-request"; + version = "2.1.4"; + src = fetchurl { + url = "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz"; + sha1 = "0d808801b6342ad33c91df9d0b44dc09b91e5c3d"; + }; + }; + "callsites-3.1.0" = { + name = "callsites"; + packageName = "callsites"; + version = "3.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz"; + sha512 = "P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="; + }; + }; + "camelcase-1.2.1" = { + name = "camelcase"; + packageName = "camelcase"; + version = "1.2.1"; + src = fetchurl { + url = "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz"; + sha1 = "9bb5304d2e0b56698b2c758b08a3eaa9daa58a39"; + }; + }; + "camelcase-4.1.0" = { + name = "camelcase"; + packageName = "camelcase"; + version = "4.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz"; + sha1 = "d545635be1e33c542649c69173e5de6acfae34dd"; + }; + }; + "camelcase-5.3.1" = { + name = "camelcase"; + packageName = "camelcase"; + version = "5.3.1"; + src = fetchurl { + url = "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz"; + sha512 = "L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="; + }; + }; + "caniuse-lite-1.0.30001035" = { + name = "caniuse-lite"; + packageName = "caniuse-lite"; + version = "1.0.30001035"; + src = fetchurl { + url = "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001035.tgz"; + sha512 = "C1ZxgkuA4/bUEdMbU5WrGY4+UhMFFiXrgNAfxiMIqWgFTWfv/xsZCS2xEHT2LMq7xAZfuAnu6mcqyDl0ZR6wLQ=="; + }; + }; + "capture-exit-2.0.0" = { + name = "capture-exit"; + packageName = "capture-exit"; + version = "2.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz"; + sha512 = "PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g=="; + }; + }; + "caseless-0.12.0" = { + name = "caseless"; + packageName = "caseless"; + version = "0.12.0"; + src = fetchurl { + url = "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz"; + sha1 = "1b681c21ff84033c826543090689420d187151dc"; + }; + }; + "center-align-0.1.3" = { + name = "center-align"; + packageName = "center-align"; + version = "0.1.3"; + src = fetchurl { + url = "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz"; + sha1 = "aa0d32629b6ee972200411cbd4461c907bc2b7ad"; + }; + }; + "chalk-1.1.3" = { + name = "chalk"; + packageName = "chalk"; + version = "1.1.3"; + src = fetchurl { + url = "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz"; + sha1 = "a8115c55e4a702fe4d150abd3872822a7e09fc98"; + }; + }; + "chalk-2.4.2" = { + name = "chalk"; + packageName = "chalk"; + version = "2.4.2"; + src = fetchurl { + url = "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz"; + sha512 = "Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ=="; + }; + }; + "character-parser-2.2.0" = { + name = "character-parser"; + packageName = "character-parser"; + version = "2.2.0"; + src = fetchurl { + url = "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz"; + sha1 = "c7ce28f36d4bcd9744e5ffc2c5fcde1c73261fc0"; + }; + }; + "check-types-8.0.3" = { + name = "check-types"; + packageName = "check-types"; + version = "8.0.3"; + src = fetchurl { + url = "https://registry.npmjs.org/check-types/-/check-types-8.0.3.tgz"; + sha512 = "YpeKZngUmG65rLudJ4taU7VLkOCTMhNl/u4ctNC56LQS/zJTyNH0Lrtwm1tfTsbLlwvlfsA2d1c8vCf/Kh2KwQ=="; + }; + }; + "chokidar-2.1.8" = { + name = "chokidar"; + packageName = "chokidar"; + version = "2.1.8"; + src = fetchurl { + url = "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz"; + sha512 = "ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg=="; + }; + }; + "chownr-1.1.4" = { + name = "chownr"; + packageName = "chownr"; + version = "1.1.4"; + src = fetchurl { + url = "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz"; + sha512 = "jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg=="; + }; + }; + "chrome-trace-event-1.0.2" = { + name = "chrome-trace-event"; + packageName = "chrome-trace-event"; + version = "1.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz"; + sha512 = "9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ=="; + }; + }; + "ci-info-2.0.0" = { + name = "ci-info"; + packageName = "ci-info"; + version = "2.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz"; + sha512 = "5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ=="; + }; + }; + "cipher-base-1.0.4" = { + name = "cipher-base"; + packageName = "cipher-base"; + version = "1.0.4"; + src = fetchurl { + url = "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz"; + sha512 = "Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q=="; + }; + }; + "class-utils-0.3.6" = { + name = "class-utils"; + packageName = "class-utils"; + version = "0.3.6"; + src = fetchurl { + url = "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz"; + sha512 = "qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg=="; + }; + }; + "clean-css-4.2.3" = { + name = "clean-css"; + packageName = "clean-css"; + version = "4.2.3"; + src = fetchurl { + url = "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz"; + sha512 = "VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA=="; + }; + }; + "clean-stack-1.3.0" = { + name = "clean-stack"; + packageName = "clean-stack"; + version = "1.3.0"; + src = fetchurl { + url = "https://registry.npmjs.org/clean-stack/-/clean-stack-1.3.0.tgz"; + sha1 = "9e821501ae979986c46b1d66d2d432db2fd4ae31"; + }; + }; + "cli-cursor-2.1.0" = { + name = "cli-cursor"; + packageName = "cli-cursor"; + version = "2.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz"; + sha1 = "b35dac376479facc3e94747d41d0d0f5238ffcb5"; + }; + }; + "cli-spinners-2.2.0" = { + name = "cli-spinners"; + packageName = "cli-spinners"; + version = "2.2.0"; + src = fetchurl { + url = "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.2.0.tgz"; + sha512 = "tgU3fKwzYjiLEQgPMD9Jt+JjHVL9kW93FiIMX/l7rivvOD4/LL0Mf7gda3+4U2KJBloybwgj5KEoQgGRioMiKQ=="; + }; + }; + "cliui-2.1.0" = { + name = "cliui"; + packageName = "cliui"; + version = "2.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz"; + sha1 = "4b475760ff80264c762c3a1719032e91c7fea0d1"; + }; + }; + "cliui-4.1.0" = { + name = "cliui"; + packageName = "cliui"; + version = "4.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz"; + sha512 = "4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ=="; + }; + }; + "cliui-5.0.0" = { + name = "cliui"; + packageName = "cliui"; + version = "5.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz"; + sha512 = "PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA=="; + }; + }; + "clone-1.0.4" = { + name = "clone"; + packageName = "clone"; + version = "1.0.4"; + src = fetchurl { + url = "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz"; + sha1 = "da309cc263df15994c688ca902179ca3c7cd7c7e"; + }; + }; + "clone-response-1.0.2" = { + name = "clone-response"; + packageName = "clone-response"; + version = "1.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz"; + sha1 = "d1dc973920314df67fbeb94223b4ee350239e96b"; + }; + }; + "co-4.6.0" = { + name = "co"; + packageName = "co"; + version = "4.6.0"; + src = fetchurl { + url = "https://registry.npmjs.org/co/-/co-4.6.0.tgz"; + sha1 = "6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"; + }; + }; + "co-body-5.2.0" = { + name = "co-body"; + packageName = "co-body"; + version = "5.2.0"; + src = fetchurl { + url = "https://registry.npmjs.org/co-body/-/co-body-5.2.0.tgz"; + sha512 = "sX/LQ7LqUhgyaxzbe7IqwPeTr2yfpfUIQ/dgpKo6ZI4y4lpQA0YxAomWIY+7I7rHWcG02PG+OuPREzMW/5tszQ=="; + }; + }; + "code-point-at-1.1.0" = { + name = "code-point-at"; + packageName = "code-point-at"; + version = "1.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz"; + sha1 = "0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"; + }; + }; + "collection-visit-1.0.0" = { + name = "collection-visit"; + packageName = "collection-visit"; + version = "1.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz"; + sha1 = "4bc0373c164bc3291b4d368c829cf1a80a59dca0"; + }; + }; + "color-convert-1.9.3" = { + name = "color-convert"; + packageName = "color-convert"; + version = "1.9.3"; + src = fetchurl { + url = "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz"; + sha512 = "QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg=="; + }; + }; + "color-name-1.1.3" = { + name = "color-name"; + packageName = "color-name"; + version = "1.1.3"; + src = fetchurl { + url = "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz"; + sha1 = "a7d0558bd89c42f795dd42328f740831ca53bc25"; + }; + }; + "combined-stream-1.0.8" = { + name = "combined-stream"; + packageName = "combined-stream"; + version = "1.0.8"; + src = fetchurl { + url = "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz"; + sha512 = "FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg=="; + }; + }; + "command-line-args-5.1.1" = { + name = "command-line-args"; + packageName = "command-line-args"; + version = "5.1.1"; + src = fetchurl { + url = "https://registry.npmjs.org/command-line-args/-/command-line-args-5.1.1.tgz"; + sha512 = "hL/eG8lrll1Qy1ezvkant+trihbGnaKaeEjj6Scyr3DN+RC7iQ5Rz84IeLERfAWDGo0HBSNAakczwgCilDXnWg=="; + }; + }; + "commander-2.20.3" = { + name = "commander"; + packageName = "commander"; + version = "2.20.3"; + src = fetchurl { + url = "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz"; + sha512 = "GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="; + }; + }; + "commondir-1.0.1" = { + name = "commondir"; + packageName = "commondir"; + version = "1.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz"; + sha1 = "ddd800da0c66127393cca5950ea968a3aaf1253b"; + }; + }; + "component-emitter-1.3.0" = { + name = "component-emitter"; + packageName = "component-emitter"; + version = "1.3.0"; + src = fetchurl { + url = "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz"; + sha512 = "Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg=="; + }; + }; + "compressible-2.0.18" = { + name = "compressible"; + packageName = "compressible"; + version = "2.0.18"; + src = fetchurl { + url = "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz"; + sha512 = "AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg=="; + }; + }; + "compression-1.7.4" = { + name = "compression"; + packageName = "compression"; + version = "1.7.4"; + src = fetchurl { + url = "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz"; + sha512 = "jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ=="; + }; + }; + "concat-map-0.0.1" = { + name = "concat-map"; + packageName = "concat-map"; + version = "0.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"; + sha1 = "d8a96bd77fd68df7793a73036a3ba0d5405d477b"; + }; + }; + "concat-stream-1.6.2" = { + name = "concat-stream"; + packageName = "concat-stream"; + version = "1.6.2"; + src = fetchurl { + url = "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz"; + sha512 = "27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw=="; + }; + }; + "condense-newlines-0.2.1" = { + name = "condense-newlines"; + packageName = "condense-newlines"; + version = "0.2.1"; + src = fetchurl { + url = "https://registry.npmjs.org/condense-newlines/-/condense-newlines-0.2.1.tgz"; + sha1 = "3de985553139475d32502c83b02f60684d24c55f"; + }; + }; + "config-chain-1.1.12" = { + name = "config-chain"; + packageName = "config-chain"; + version = "1.1.12"; + src = fetchurl { + url = "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz"; + sha512 = "a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA=="; + }; + }; + "connect-history-api-fallback-1.6.0" = { + name = "connect-history-api-fallback"; + packageName = "connect-history-api-fallback"; + version = "1.6.0"; + src = fetchurl { + url = "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz"; + sha512 = "e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg=="; + }; + }; + "console-browserify-1.2.0" = { + name = "console-browserify"; + packageName = "console-browserify"; + version = "1.2.0"; + src = fetchurl { + url = "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz"; + sha512 = "ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA=="; + }; + }; + "consolidate-0.15.1" = { + name = "consolidate"; + packageName = "consolidate"; + version = "0.15.1"; + src = fetchurl { + url = "https://registry.npmjs.org/consolidate/-/consolidate-0.15.1.tgz"; + sha512 = "DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw=="; + }; + }; + "constantinople-3.1.2" = { + name = "constantinople"; + packageName = "constantinople"; + version = "3.1.2"; + src = fetchurl { + url = "https://registry.npmjs.org/constantinople/-/constantinople-3.1.2.tgz"; + sha512 = "yePcBqEFhLOqSBtwYOGGS1exHo/s1xjekXiinh4itpNQGCu4KA1euPh1fg07N2wMITZXQkBz75Ntdt1ctGZouw=="; + }; + }; + "constants-browserify-1.0.0" = { + name = "constants-browserify"; + packageName = "constants-browserify"; + version = "1.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz"; + sha1 = "c20b96d8c617748aaf1c16021760cd27fcb8cb75"; + }; + }; + "content-disposition-0.5.3" = { + name = "content-disposition"; + packageName = "content-disposition"; + version = "0.5.3"; + src = fetchurl { + url = "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz"; + sha512 = "ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g=="; + }; + }; + "content-type-1.0.4" = { + name = "content-type"; + packageName = "content-type"; + version = "1.0.4"; + src = fetchurl { + url = "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz"; + sha512 = "hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="; + }; + }; + "convert-source-map-1.7.0" = { + name = "convert-source-map"; + packageName = "convert-source-map"; + version = "1.7.0"; + src = fetchurl { + url = "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz"; + sha512 = "4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA=="; + }; + }; + "cookie-0.4.0" = { + name = "cookie"; + packageName = "cookie"; + version = "0.4.0"; + src = fetchurl { + url = "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz"; + sha512 = "+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg=="; + }; + }; + "cookie-signature-1.0.6" = { + name = "cookie-signature"; + packageName = "cookie-signature"; + version = "1.0.6"; + src = fetchurl { + url = "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz"; + sha1 = "e303a882b342cc3ee8ca513a79999734dab3ae2c"; + }; + }; + "cookies-0.8.0" = { + name = "cookies"; + packageName = "cookies"; + version = "0.8.0"; + src = fetchurl { + url = "https://registry.npmjs.org/cookies/-/cookies-0.8.0.tgz"; + sha512 = "8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow=="; + }; + }; + "copy-concurrently-1.0.5" = { + name = "copy-concurrently"; + packageName = "copy-concurrently"; + version = "1.0.5"; + src = fetchurl { + url = "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz"; + sha512 = "f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A=="; + }; + }; + "copy-descriptor-0.1.1" = { + name = "copy-descriptor"; + packageName = "copy-descriptor"; + version = "0.1.1"; + src = fetchurl { + url = "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz"; + sha1 = "676f6eb3c39997c2ee1ac3a924fd6124748f578d"; + }; + }; + "copy-webpack-plugin-4.6.0" = { + name = "copy-webpack-plugin"; + packageName = "copy-webpack-plugin"; + version = "4.6.0"; + src = fetchurl { + url = "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-4.6.0.tgz"; + sha512 = "Y+SQCF+0NoWQryez2zXn5J5knmr9z/9qSQt7fbL78u83rxmigOy8X5+BFn8CFSuX+nKT8gpYwJX68ekqtQt6ZA=="; + }; + }; + "core-js-2.6.11" = { + name = "core-js"; + packageName = "core-js"; + version = "2.6.11"; + src = fetchurl { + url = "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz"; + sha512 = "5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg=="; + }; + }; + "core-util-is-1.0.2" = { + name = "core-util-is"; + packageName = "core-util-is"; + version = "1.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz"; + sha1 = "b5fd54220aa2bc5ab57aab7140c940754503c1a7"; + }; + }; + "create-ecdh-4.0.3" = { + name = "create-ecdh"; + packageName = "create-ecdh"; + version = "4.0.3"; + src = fetchurl { + url = "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz"; + sha512 = "GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw=="; + }; + }; + "create-hash-1.2.0" = { + name = "create-hash"; + packageName = "create-hash"; + version = "1.2.0"; + src = fetchurl { + url = "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz"; + sha512 = "z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg=="; + }; + }; + "create-hmac-1.1.7" = { + name = "create-hmac"; + packageName = "create-hmac"; + version = "1.1.7"; + src = fetchurl { + url = "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz"; + sha512 = "MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg=="; + }; + }; + "cron-1.8.2" = { + name = "cron"; + packageName = "cron"; + version = "1.8.2"; + src = fetchurl { + url = "https://registry.npmjs.org/cron/-/cron-1.8.2.tgz"; + sha512 = "Gk2c4y6xKEO8FSAUTklqtfSr7oTq0CiPQeLBG5Fl0qoXpZyMcj1SG59YL+hqq04bu6/IuEA7lMkYDAplQNKkyg=="; + }; + }; + "cross-spawn-6.0.5" = { + name = "cross-spawn"; + packageName = "cross-spawn"; + version = "6.0.5"; + src = fetchurl { + url = "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz"; + sha512 = "eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ=="; + }; + }; + "crypto-browserify-3.12.0" = { + name = "crypto-browserify"; + packageName = "crypto-browserify"; + version = "3.12.0"; + src = fetchurl { + url = "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz"; + sha512 = "fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg=="; + }; + }; + "cssom-0.3.8" = { + name = "cssom"; + packageName = "cssom"; + version = "0.3.8"; + src = fetchurl { + url = "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz"; + sha512 = "b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg=="; + }; + }; + "cssstyle-1.4.0" = { + name = "cssstyle"; + packageName = "cssstyle"; + version = "1.4.0"; + src = fetchurl { + url = "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz"; + sha512 = "GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA=="; + }; + }; + "cyclist-1.0.1" = { + name = "cyclist"; + packageName = "cyclist"; + version = "1.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz"; + sha1 = "596e9698fd0c80e12038c2b82d6eb1b35b6224d9"; + }; + }; + "d-1.0.1" = { + name = "d"; + packageName = "d"; + version = "1.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/d/-/d-1.0.1.tgz"; + sha512 = "m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA=="; + }; + }; + "dashdash-1.14.1" = { + name = "dashdash"; + packageName = "dashdash"; + version = "1.14.1"; + src = fetchurl { + url = "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz"; + sha1 = "853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"; + }; + }; + "data-urls-1.1.0" = { + name = "data-urls"; + packageName = "data-urls"; + version = "1.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz"; + sha512 = "YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ=="; + }; + }; + "debug-2.6.9" = { + name = "debug"; + packageName = "debug"; + version = "2.6.9"; + src = fetchurl { + url = "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz"; + sha512 = "bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="; + }; + }; + "debug-3.1.0" = { + name = "debug"; + packageName = "debug"; + version = "3.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz"; + sha512 = "OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g=="; + }; + }; + "debug-3.2.6" = { + name = "debug"; + packageName = "debug"; + version = "3.2.6"; + src = fetchurl { + url = "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz"; + sha512 = "mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ=="; + }; + }; + "debug-4.1.1" = { + name = "debug"; + packageName = "debug"; + version = "4.1.1"; + src = fetchurl { + url = "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz"; + sha512 = "pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw=="; + }; + }; + "decamelize-1.2.0" = { + name = "decamelize"; + packageName = "decamelize"; + version = "1.2.0"; + src = fetchurl { + url = "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz"; + sha1 = "f6534d15148269b20352e7bee26f501f9a191290"; + }; + }; + "decode-uri-component-0.2.0" = { + name = "decode-uri-component"; + packageName = "decode-uri-component"; + version = "0.2.0"; + src = fetchurl { + url = "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz"; + sha1 = "eb3913333458775cb84cd1a1fae062106bb87545"; + }; + }; + "decompress-response-3.3.0" = { + name = "decompress-response"; + packageName = "decompress-response"; + version = "3.3.0"; + src = fetchurl { + url = "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz"; + sha1 = "80a4dd323748384bfa248083622aedec982adff3"; + }; + }; + "deep-equal-1.0.1" = { + name = "deep-equal"; + packageName = "deep-equal"; + version = "1.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz"; + sha1 = "f5d260292b660e084eff4cdbc9f08ad3247448b5"; + }; + }; + "deep-is-0.1.3" = { + name = "deep-is"; + packageName = "deep-is"; + version = "0.1.3"; + src = fetchurl { + url = "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz"; + sha1 = "b369d6fb5dbc13eecf524f91b070feedc357cf34"; + }; + }; + "default-gateway-4.2.0" = { + name = "default-gateway"; + packageName = "default-gateway"; + version = "4.2.0"; + src = fetchurl { + url = "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz"; + sha512 = "h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA=="; + }; + }; + "defaults-1.0.3" = { + name = "defaults"; + packageName = "defaults"; + version = "1.0.3"; + src = fetchurl { + url = "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz"; + sha1 = "c656051e9817d9ff08ed881477f3fe4019f3ef7d"; + }; + }; + "define-properties-1.1.3" = { + name = "define-properties"; + packageName = "define-properties"; + version = "1.1.3"; + src = fetchurl { + url = "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz"; + sha512 = "3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ=="; + }; + }; + "define-property-0.2.5" = { + name = "define-property"; + packageName = "define-property"; + version = "0.2.5"; + src = fetchurl { + url = "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz"; + sha1 = "c35b1ef918ec3c990f9a5bc57be04aacec5c8116"; + }; + }; + "define-property-1.0.0" = { + name = "define-property"; + packageName = "define-property"; + version = "1.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz"; + sha1 = "769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6"; + }; + }; + "define-property-2.0.2" = { + name = "define-property"; + packageName = "define-property"; + version = "2.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz"; + sha512 = "jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ=="; + }; + }; + "del-4.1.1" = { + name = "del"; + packageName = "del"; + version = "4.1.1"; + src = fetchurl { + url = "https://registry.npmjs.org/del/-/del-4.1.1.tgz"; + sha512 = "QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ=="; + }; + }; + "delayed-stream-1.0.0" = { + name = "delayed-stream"; + packageName = "delayed-stream"; + version = "1.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz"; + sha1 = "df3ae199acadfb7d440aaae0b29e2272b24ec619"; + }; + }; + "delegates-1.0.0" = { + name = "delegates"; + packageName = "delegates"; + version = "1.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz"; + sha1 = "84c6e159b81904fdca59a0ef44cd870d31250f9a"; + }; + }; + "depd-1.1.2" = { + name = "depd"; + packageName = "depd"; + version = "1.1.2"; + src = fetchurl { + url = "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz"; + sha1 = "9bcd52e14c097763e749b274c4346ed2e560b5a9"; + }; + }; + "depd-2.0.0" = { + name = "depd"; + packageName = "depd"; + version = "2.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz"; + sha512 = "g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="; + }; + }; + "des.js-1.0.1" = { + name = "des.js"; + packageName = "des.js"; + version = "1.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz"; + sha512 = "Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA=="; + }; + }; + "destroy-1.0.4" = { + name = "destroy"; + packageName = "destroy"; + version = "1.0.4"; + src = fetchurl { + url = "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz"; + sha1 = "978857442c44749e4206613e37946205826abd80"; + }; + }; + "detect-file-1.0.0" = { + name = "detect-file"; + packageName = "detect-file"; + version = "1.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz"; + sha1 = "f0d66d03672a825cb1b73bdb3fe62310c8e552b7"; + }; + }; + "detect-indent-4.0.0" = { + name = "detect-indent"; + packageName = "detect-indent"; + version = "4.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz"; + sha1 = "f76d064352cdf43a1cb6ce619c4ee3a9475de208"; + }; + }; + "detect-newline-2.1.0" = { + name = "detect-newline"; + packageName = "detect-newline"; + version = "2.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz"; + sha1 = "f41f1c10be4b00e87b5f13da680759f2c5bfd3e2"; + }; + }; + "detect-node-2.0.4" = { + name = "detect-node"; + packageName = "detect-node"; + version = "2.0.4"; + src = fetchurl { + url = "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz"; + sha512 = "ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw=="; + }; + }; + "diff-sequences-24.9.0" = { + name = "diff-sequences"; + packageName = "diff-sequences"; + version = "24.9.0"; + src = fetchurl { + url = "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.9.0.tgz"; + sha512 = "Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew=="; + }; + }; + "diffie-hellman-5.0.3" = { + name = "diffie-hellman"; + packageName = "diffie-hellman"; + version = "5.0.3"; + src = fetchurl { + url = "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz"; + sha512 = "kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg=="; + }; + }; + "dir-glob-2.2.2" = { + name = "dir-glob"; + packageName = "dir-glob"; + version = "2.2.2"; + src = fetchurl { + url = "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz"; + sha512 = "f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw=="; + }; + }; + "dns-equal-1.0.0" = { + name = "dns-equal"; + packageName = "dns-equal"; + version = "1.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz"; + sha1 = "b39e7f1da6eb0a75ba9c17324b34753c47e0654d"; + }; + }; + "dns-packet-1.3.1" = { + name = "dns-packet"; + packageName = "dns-packet"; + version = "1.3.1"; + src = fetchurl { + url = "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz"; + sha512 = "0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg=="; + }; + }; + "dns-txt-2.0.2" = { + name = "dns-txt"; + packageName = "dns-txt"; + version = "2.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz"; + sha1 = "b91d806f5d27188e4ab3e7d107d881a1cc4642b6"; + }; + }; + "doctypes-1.1.0" = { + name = "doctypes"; + packageName = "doctypes"; + version = "1.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz"; + sha1 = "ea80b106a87538774e8a3a4a5afe293de489e0a9"; + }; + }; + "domain-browser-1.2.0" = { + name = "domain-browser"; + packageName = "domain-browser"; + version = "1.2.0"; + src = fetchurl { + url = "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz"; + sha512 = "jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA=="; + }; + }; + "domexception-1.0.1" = { + name = "domexception"; + packageName = "domexception"; + version = "1.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz"; + sha512 = "raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug=="; + }; + }; + "duplexer-0.1.1" = { + name = "duplexer"; + packageName = "duplexer"; + version = "0.1.1"; + src = fetchurl { + url = "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz"; + sha1 = "ace6ff808c1ce66b57d1ebf97977acb02334cfc1"; + }; + }; + "duplexer3-0.1.4" = { + name = "duplexer3"; + packageName = "duplexer3"; + version = "0.1.4"; + src = fetchurl { + url = "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz"; + sha1 = "ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2"; + }; + }; + "duplexify-3.7.1" = { + name = "duplexify"; + packageName = "duplexify"; + version = "3.7.1"; + src = fetchurl { + url = "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz"; + sha512 = "07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g=="; + }; + }; + "ecc-jsbn-0.1.2" = { + name = "ecc-jsbn"; + packageName = "ecc-jsbn"; + version = "0.1.2"; + src = fetchurl { + url = "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz"; + sha1 = "3a83a904e54353287874c564b7549386849a98c9"; + }; + }; + "editorconfig-0.15.3" = { + name = "editorconfig"; + packageName = "editorconfig"; + version = "0.15.3"; + src = fetchurl { + url = "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz"; + sha512 = "M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g=="; + }; + }; + "ee-first-1.1.1" = { + name = "ee-first"; + packageName = "ee-first"; + version = "1.1.1"; + src = fetchurl { + url = "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz"; + sha1 = "590c61156b0ae2f4f0255732a158b266bc56b21d"; + }; + }; + "ejs-2.7.4" = { + name = "ejs"; + packageName = "ejs"; + version = "2.7.4"; + src = fetchurl { + url = "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz"; + sha512 = "7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA=="; + }; + }; + "electron-to-chromium-1.3.376" = { + name = "electron-to-chromium"; + packageName = "electron-to-chromium"; + version = "1.3.376"; + src = fetchurl { + url = "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.376.tgz"; + sha512 = "cv/PYVz5szeMz192ngilmezyPNFkUjuynuL2vNdiqIrio440nfTDdc0JJU0TS2KHLSVCs9gBbt4CFqM+HcBnjw=="; + }; + }; + "elliptic-6.5.2" = { + name = "elliptic"; + packageName = "elliptic"; + version = "6.5.2"; + src = fetchurl { + url = "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz"; + sha512 = "f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw=="; + }; + }; + "emoji-regex-7.0.3" = { + name = "emoji-regex"; + packageName = "emoji-regex"; + version = "7.0.3"; + src = fetchurl { + url = "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz"; + sha512 = "CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA=="; + }; + }; + "emojis-list-2.1.0" = { + name = "emojis-list"; + packageName = "emojis-list"; + version = "2.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz"; + sha1 = "4daa4d9db00f9819880c79fa457ae5b09a1fd389"; + }; + }; + "emojis-list-3.0.0" = { + name = "emojis-list"; + packageName = "emojis-list"; + version = "3.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz"; + sha512 = "/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q=="; + }; + }; + "encodeurl-1.0.2" = { + name = "encodeurl"; + packageName = "encodeurl"; + version = "1.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz"; + sha1 = "ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"; + }; + }; + "end-of-stream-1.4.4" = { + name = "end-of-stream"; + packageName = "end-of-stream"; + version = "1.4.4"; + src = fetchurl { + url = "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz"; + sha512 = "+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q=="; + }; + }; + "enhanced-resolve-4.1.0" = { + name = "enhanced-resolve"; + packageName = "enhanced-resolve"; + version = "4.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz"; + sha512 = "F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng=="; + }; + }; + "enhanced-resolve-4.1.1" = { + name = "enhanced-resolve"; + packageName = "enhanced-resolve"; + version = "4.1.1"; + src = fetchurl { + url = "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz"; + sha512 = "98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA=="; + }; + }; + "errno-0.1.7" = { + name = "errno"; + packageName = "errno"; + version = "0.1.7"; + src = fetchurl { + url = "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz"; + sha512 = "MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg=="; + }; + }; + "error-ex-1.3.2" = { + name = "error-ex"; + packageName = "error-ex"; + version = "1.3.2"; + src = fetchurl { + url = "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz"; + sha512 = "7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g=="; + }; + }; + "error-inject-1.0.0" = { + name = "error-inject"; + packageName = "error-inject"; + version = "1.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/error-inject/-/error-inject-1.0.0.tgz"; + sha1 = "e2b3d91b54aed672f309d950d154850fa11d4f37"; + }; + }; + "es-abstract-1.17.4" = { + name = "es-abstract"; + packageName = "es-abstract"; + version = "1.17.4"; + src = fetchurl { + url = "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz"; + sha512 = "Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ=="; + }; + }; + "es-to-primitive-1.2.1" = { + name = "es-to-primitive"; + packageName = "es-to-primitive"; + version = "1.2.1"; + src = fetchurl { + url = "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz"; + sha512 = "QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA=="; + }; + }; + "es5-ext-0.10.53" = { + name = "es5-ext"; + packageName = "es5-ext"; + version = "0.10.53"; + src = fetchurl { + url = "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz"; + sha512 = "Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q=="; + }; + }; + "es6-iterator-2.0.3" = { + name = "es6-iterator"; + packageName = "es6-iterator"; + version = "2.0.3"; + src = fetchurl { + url = "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz"; + sha1 = "a7de889141a05a94b0854403b2d0a0fbfa98f3b7"; + }; + }; + "es6-promise-4.2.8" = { + name = "es6-promise"; + packageName = "es6-promise"; + version = "4.2.8"; + src = fetchurl { + url = "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz"; + sha512 = "HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w=="; + }; + }; + "es6-symbol-3.1.3" = { + name = "es6-symbol"; + packageName = "es6-symbol"; + version = "3.1.3"; + src = fetchurl { + url = "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz"; + sha512 = "NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA=="; + }; + }; + "escape-html-1.0.3" = { + name = "escape-html"; + packageName = "escape-html"; + version = "1.0.3"; + src = fetchurl { + url = "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz"; + sha1 = "0258eae4d3d0c0974de1c169188ef0051d1d1988"; + }; + }; + "escape-string-regexp-1.0.5" = { + name = "escape-string-regexp"; + packageName = "escape-string-regexp"; + version = "1.0.5"; + src = fetchurl { + url = "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz"; + sha1 = "1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"; + }; + }; + "escodegen-1.14.1" = { + name = "escodegen"; + packageName = "escodegen"; + version = "1.14.1"; + src = fetchurl { + url = "https://registry.npmjs.org/escodegen/-/escodegen-1.14.1.tgz"; + sha512 = "Bmt7NcRySdIfNPfU2ZoXDrrXsG9ZjvDxcAlMfDUgRBjLOWTuIACXPBFJH7Z+cLb40JeQco5toikyc9t9P8E9SQ=="; + }; + }; + "eslint-scope-4.0.3" = { + name = "eslint-scope"; + packageName = "eslint-scope"; + version = "4.0.3"; + src = fetchurl { + url = "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz"; + sha512 = "p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg=="; + }; + }; + "esprima-4.0.1" = { + name = "esprima"; + packageName = "esprima"; + version = "4.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz"; + sha512 = "eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="; + }; + }; + "esrecurse-4.2.1" = { + name = "esrecurse"; + packageName = "esrecurse"; + version = "4.2.1"; + src = fetchurl { + url = "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz"; + sha512 = "64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ=="; + }; + }; + "estraverse-4.3.0" = { + name = "estraverse"; + packageName = "estraverse"; + version = "4.3.0"; + src = fetchurl { + url = "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz"; + sha512 = "39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw=="; + }; + }; + "esutils-2.0.3" = { + name = "esutils"; + packageName = "esutils"; + version = "2.0.3"; + src = fetchurl { + url = "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz"; + sha512 = "kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g=="; + }; + }; + "etag-1.8.1" = { + name = "etag"; + packageName = "etag"; + version = "1.8.1"; + src = fetchurl { + url = "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz"; + sha1 = "41ae2eeb65efa62268aebfea83ac7d79299b0887"; + }; + }; + "eventemitter3-4.0.0" = { + name = "eventemitter3"; + packageName = "eventemitter3"; + version = "4.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.0.tgz"; + sha512 = "qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg=="; + }; + }; + "events-3.1.0" = { + name = "events"; + packageName = "events"; + version = "3.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/events/-/events-3.1.0.tgz"; + sha512 = "Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg=="; + }; + }; + "eventsource-1.0.7" = { + name = "eventsource"; + packageName = "eventsource"; + version = "1.0.7"; + src = fetchurl { + url = "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz"; + sha512 = "4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ=="; + }; + }; + "evp_bytestokey-1.0.3" = { + name = "evp_bytestokey"; + packageName = "evp_bytestokey"; + version = "1.0.3"; + src = fetchurl { + url = "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz"; + sha512 = "/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA=="; + }; + }; + "exec-sh-0.3.4" = { + name = "exec-sh"; + packageName = "exec-sh"; + version = "0.3.4"; + src = fetchurl { + url = "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.4.tgz"; + sha512 = "sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A=="; + }; + }; + "execa-1.0.0" = { + name = "execa"; + packageName = "execa"; + version = "1.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz"; + sha512 = "adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA=="; + }; + }; + "exit-0.1.2" = { + name = "exit"; + packageName = "exit"; + version = "0.1.2"; + src = fetchurl { + url = "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz"; + sha1 = "0632638f8d877cc82107d30a0fff1a17cba1cd0c"; + }; + }; + "expand-brackets-2.1.4" = { + name = "expand-brackets"; + packageName = "expand-brackets"; + version = "2.1.4"; + src = fetchurl { + url = "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz"; + sha1 = "b77735e315ce30f6b6eff0f83b04151a22449622"; + }; + }; + "expand-tilde-2.0.2" = { + name = "expand-tilde"; + packageName = "expand-tilde"; + version = "2.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz"; + sha1 = "97e801aa052df02454de46b02bf621642cdc8502"; + }; + }; + "expect-24.9.0" = { + name = "expect"; + packageName = "expect"; + version = "24.9.0"; + src = fetchurl { + url = "https://registry.npmjs.org/expect/-/expect-24.9.0.tgz"; + sha512 = "wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q=="; + }; + }; + "express-4.17.1" = { + name = "express"; + packageName = "express"; + version = "4.17.1"; + src = fetchurl { + url = "https://registry.npmjs.org/express/-/express-4.17.1.tgz"; + sha512 = "mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g=="; + }; + }; + "ext-1.4.0" = { + name = "ext"; + packageName = "ext"; + version = "1.4.0"; + src = fetchurl { + url = "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz"; + sha512 = "Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A=="; + }; + }; + "extend-3.0.2" = { + name = "extend"; + packageName = "extend"; + version = "3.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz"; + sha512 = "fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="; + }; + }; + "extend-shallow-2.0.1" = { + name = "extend-shallow"; + packageName = "extend-shallow"; + version = "2.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz"; + sha1 = "51af7d614ad9a9f610ea1bafbb989d6b1c56890f"; + }; + }; + "extend-shallow-3.0.2" = { + name = "extend-shallow"; + packageName = "extend-shallow"; + version = "3.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz"; + sha1 = "26a71aaf073b39fb2127172746131c2704028db8"; + }; + }; + "extglob-2.0.4" = { + name = "extglob"; + packageName = "extglob"; + version = "2.0.4"; + src = fetchurl { + url = "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz"; + sha512 = "Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw=="; + }; + }; + "extsprintf-1.3.0" = { + name = "extsprintf"; + packageName = "extsprintf"; + version = "1.3.0"; + src = fetchurl { + url = "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz"; + sha1 = "96918440e3041a7a414f8c52e3c574eb3c3e1e05"; + }; + }; + "fast-deep-equal-3.1.1" = { + name = "fast-deep-equal"; + packageName = "fast-deep-equal"; + version = "3.1.1"; + src = fetchurl { + url = "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz"; + sha512 = "8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA=="; + }; + }; + "fast-json-stable-stringify-2.1.0" = { + name = "fast-json-stable-stringify"; + packageName = "fast-json-stable-stringify"; + version = "2.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz"; + sha512 = "lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="; + }; + }; + "fast-levenshtein-2.0.6" = { + name = "fast-levenshtein"; + packageName = "fast-levenshtein"; + version = "2.0.6"; + src = fetchurl { + url = "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz"; + sha1 = "3d8a5c66883a16a30ca8643e851f19baa7797917"; + }; + }; + "faye-websocket-0.10.0" = { + name = "faye-websocket"; + packageName = "faye-websocket"; + version = "0.10.0"; + src = fetchurl { + url = "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz"; + sha1 = "4e492f8d04dfb6f89003507f6edbf2d501e7c6f4"; + }; + }; + "faye-websocket-0.11.3" = { + name = "faye-websocket"; + packageName = "faye-websocket"; + version = "0.11.3"; + src = fetchurl { + url = "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz"; + sha512 = "D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA=="; + }; + }; + "fb-watchman-2.0.1" = { + name = "fb-watchman"; + packageName = "fb-watchman"; + version = "2.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz"; + sha512 = "DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg=="; + }; + }; + "figgy-pudding-3.5.1" = { + name = "figgy-pudding"; + packageName = "figgy-pudding"; + version = "3.5.1"; + src = fetchurl { + url = "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz"; + sha512 = "vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w=="; + }; + }; + "file-uri-to-path-1.0.0" = { + name = "file-uri-to-path"; + packageName = "file-uri-to-path"; + version = "1.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz"; + sha512 = "0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw=="; + }; + }; + "filesize-3.6.1" = { + name = "filesize"; + packageName = "filesize"; + version = "3.6.1"; + src = fetchurl { + url = "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz"; + sha512 = "7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg=="; + }; + }; + "fill-range-4.0.0" = { + name = "fill-range"; + packageName = "fill-range"; + version = "4.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz"; + sha1 = "d544811d428f98eb06a63dc402d2403c328c38f7"; + }; + }; + "finalhandler-1.1.2" = { + name = "finalhandler"; + packageName = "finalhandler"; + version = "1.1.2"; + src = fetchurl { + url = "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz"; + sha512 = "aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA=="; + }; + }; + "find-cache-dir-1.0.0" = { + name = "find-cache-dir"; + packageName = "find-cache-dir"; + version = "1.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz"; + sha1 = "9288e3e9e3cc3748717d39eade17cf71fc30ee6f"; + }; + }; + "find-cache-dir-2.1.0" = { + name = "find-cache-dir"; + packageName = "find-cache-dir"; + version = "2.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz"; + sha512 = "Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ=="; + }; + }; + "find-replace-3.0.0" = { + name = "find-replace"; + packageName = "find-replace"; + version = "3.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz"; + sha512 = "6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ=="; + }; + }; + "find-up-2.1.0" = { + name = "find-up"; + packageName = "find-up"; + version = "2.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz"; + sha1 = "45d1b7e506c717ddd482775a2b77920a3c0c57a7"; + }; + }; + "find-up-3.0.0" = { + name = "find-up"; + packageName = "find-up"; + version = "3.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz"; + sha512 = "1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg=="; + }; + }; + "findup-sync-3.0.0" = { + name = "findup-sync"; + packageName = "findup-sync"; + version = "3.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz"; + sha512 = "YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg=="; + }; + }; + "flush-write-stream-1.1.1" = { + name = "flush-write-stream"; + packageName = "flush-write-stream"; + version = "1.1.1"; + src = fetchurl { + url = "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz"; + sha512 = "3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w=="; + }; + }; + "follow-redirects-1.5.10" = { + name = "follow-redirects"; + packageName = "follow-redirects"; + version = "1.5.10"; + src = fetchurl { + url = "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz"; + sha512 = "0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ=="; + }; + }; + "for-in-1.0.2" = { + name = "for-in"; + packageName = "for-in"; + version = "1.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz"; + sha1 = "81068d295a8142ec0ac726c6e2200c30fb6d5e80"; + }; + }; + "forever-agent-0.6.1" = { + name = "forever-agent"; + packageName = "forever-agent"; + version = "0.6.1"; + src = fetchurl { + url = "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz"; + sha1 = "fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"; + }; + }; + "form-data-2.3.3" = { + name = "form-data"; + packageName = "form-data"; + version = "2.3.3"; + src = fetchurl { + url = "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz"; + sha512 = "1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ=="; + }; + }; + "form-data-2.5.1" = { + name = "form-data"; + packageName = "form-data"; + version = "2.5.1"; + src = fetchurl { + url = "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz"; + sha512 = "m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA=="; + }; + }; + "formidable-1.2.2" = { + name = "formidable"; + packageName = "formidable"; + version = "1.2.2"; + src = fetchurl { + url = "https://registry.npmjs.org/formidable/-/formidable-1.2.2.tgz"; + sha512 = "V8gLm+41I/8kguQ4/o1D3RIHRmhYFG4pnNyonvua+40rqcEmT4+V71yaZ3B457xbbgCsCfjSPi65u/W6vK1U5Q=="; + }; + }; + "forwarded-0.1.2" = { + name = "forwarded"; + packageName = "forwarded"; + version = "0.1.2"; + src = fetchurl { + url = "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz"; + sha1 = "98c23dab1175657b8c0573e8ceccd91b0ff18c84"; + }; + }; + "fragment-cache-0.2.1" = { + name = "fragment-cache"; + packageName = "fragment-cache"; + version = "0.2.1"; + src = fetchurl { + url = "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz"; + sha1 = "4290fad27f13e89be7f33799c6bc5a0abfff0d19"; + }; + }; + "fresh-0.5.2" = { + name = "fresh"; + packageName = "fresh"; + version = "0.5.2"; + src = fetchurl { + url = "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz"; + sha1 = "3d8cadd90d976569fa835ab1f8e4b23a105605a7"; + }; + }; + "from2-2.3.0" = { + name = "from2"; + packageName = "from2"; + version = "2.3.0"; + src = fetchurl { + url = "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz"; + sha1 = "8bfb5502bde4a4d36cfdeea007fcca21d7e382af"; + }; + }; + "fs-write-stream-atomic-1.0.10" = { + name = "fs-write-stream-atomic"; + packageName = "fs-write-stream-atomic"; + version = "1.0.10"; + src = fetchurl { + url = "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz"; + sha1 = "b47df53493ef911df75731e70a9ded0189db40c9"; + }; + }; + "fs.realpath-1.0.0" = { + name = "fs.realpath"; + packageName = "fs.realpath"; + version = "1.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz"; + sha1 = "1504ad2523158caa40db4a2787cb01411994ea4f"; + }; + }; + "fsevents-1.2.11" = { + name = "fsevents"; + packageName = "fsevents"; + version = "1.2.11"; + src = fetchurl { + url = "https://registry.npmjs.org/fsevents/-/fsevents-1.2.11.tgz"; + sha512 = "+ux3lx6peh0BpvY0JebGyZoiR4D+oYzdPZMKJwkZ+sFkNJzpL7tXc/wehS49gUAxg3tmMHPHZkA8JU2rhhgDHw=="; + }; + }; + "function-bind-1.1.1" = { + name = "function-bind"; + packageName = "function-bind"; + version = "1.1.1"; + src = fetchurl { + url = "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz"; + sha512 = "yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="; + }; + }; + "gensync-1.0.0-beta.1" = { + name = "gensync"; + packageName = "gensync"; + version = "1.0.0-beta.1"; + src = fetchurl { + url = "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz"; + sha512 = "r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg=="; + }; + }; + "get-caller-file-1.0.3" = { + name = "get-caller-file"; + packageName = "get-caller-file"; + version = "1.0.3"; + src = fetchurl { + url = "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz"; + sha512 = "3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w=="; + }; + }; + "get-caller-file-2.0.5" = { + name = "get-caller-file"; + packageName = "get-caller-file"; + version = "2.0.5"; + src = fetchurl { + url = "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz"; + sha512 = "DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="; + }; + }; + "get-paths-0.0.7" = { + name = "get-paths"; + packageName = "get-paths"; + version = "0.0.7"; + src = fetchurl { + url = "https://registry.npmjs.org/get-paths/-/get-paths-0.0.7.tgz"; + sha512 = "0wdJt7C1XKQxuCgouqd+ZvLJ56FQixKoki9MrFaO4EriqzXOiH9gbukaDE1ou08S8Ns3/yDzoBAISNPqj6e6tA=="; + }; + }; + "get-stream-3.0.0" = { + name = "get-stream"; + packageName = "get-stream"; + version = "3.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz"; + sha1 = "8e943d1358dc37555054ecbe2edb05aa174ede14"; + }; + }; + "get-stream-4.1.0" = { + name = "get-stream"; + packageName = "get-stream"; + version = "4.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz"; + sha512 = "GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w=="; + }; + }; + "get-value-2.0.6" = { + name = "get-value"; + packageName = "get-value"; + version = "2.0.6"; + src = fetchurl { + url = "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz"; + sha1 = "dc15ca1c672387ca76bd37ac0a395ba2042a2c28"; + }; + }; + "getpass-0.1.7" = { + name = "getpass"; + packageName = "getpass"; + version = "0.1.7"; + src = fetchurl { + url = "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz"; + sha1 = "5eff8e3e684d569ae4cb2b1282604e8ba62149fa"; + }; + }; + "glob-7.1.6" = { + name = "glob"; + packageName = "glob"; + version = "7.1.6"; + src = fetchurl { + url = "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz"; + sha512 = "LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA=="; + }; + }; + "glob-parent-3.1.0" = { + name = "glob-parent"; + packageName = "glob-parent"; + version = "3.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz"; + sha1 = "9e6af6299d8d3bd2bd40430832bd113df906c5ae"; + }; + }; + "global-modules-1.0.0" = { + name = "global-modules"; + packageName = "global-modules"; + version = "1.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz"; + sha512 = "sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg=="; + }; + }; + "global-modules-2.0.0" = { + name = "global-modules"; + packageName = "global-modules"; + version = "2.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz"; + sha512 = "NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A=="; + }; + }; + "global-prefix-1.0.2" = { + name = "global-prefix"; + packageName = "global-prefix"; + version = "1.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz"; + sha1 = "dbf743c6c14992593c655568cb66ed32c0122ebe"; + }; + }; + "global-prefix-3.0.0" = { + name = "global-prefix"; + packageName = "global-prefix"; + version = "3.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz"; + sha512 = "awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg=="; + }; + }; + "globals-11.12.0" = { + name = "globals"; + packageName = "globals"; + version = "11.12.0"; + src = fetchurl { + url = "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz"; + sha512 = "WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA=="; + }; + }; + "globals-9.18.0" = { + name = "globals"; + packageName = "globals"; + version = "9.18.0"; + src = fetchurl { + url = "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz"; + sha512 = "S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ=="; + }; + }; + "globby-6.1.0" = { + name = "globby"; + packageName = "globby"; + version = "6.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz"; + sha1 = "f5a6d70e8395e21c858fb0489d64df02424d506c"; + }; + }; + "globby-7.1.1" = { + name = "globby"; + packageName = "globby"; + version = "7.1.1"; + src = fetchurl { + url = "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz"; + sha1 = "fb2ccff9401f8600945dfada97440cca972b8680"; + }; + }; + "got-8.3.2" = { + name = "got"; + packageName = "got"; + version = "8.3.2"; + src = fetchurl { + url = "https://registry.npmjs.org/got/-/got-8.3.2.tgz"; + sha512 = "qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw=="; + }; + }; + "graceful-fs-4.2.3" = { + name = "graceful-fs"; + packageName = "graceful-fs"; + version = "4.2.3"; + src = fetchurl { + url = "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz"; + sha512 = "a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ=="; + }; + }; + "growly-1.3.0" = { + name = "growly"; + packageName = "growly"; + version = "1.3.0"; + src = fetchurl { + url = "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz"; + sha1 = "f10748cbe76af964b7c96c93c6bcc28af120c081"; + }; + }; + "gzip-size-5.1.1" = { + name = "gzip-size"; + packageName = "gzip-size"; + version = "5.1.1"; + src = fetchurl { + url = "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz"; + sha512 = "FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA=="; + }; + }; + "handle-thing-2.0.0" = { + name = "handle-thing"; + packageName = "handle-thing"; + version = "2.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.0.tgz"; + sha512 = "d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ=="; + }; + }; + "har-schema-2.0.0" = { + name = "har-schema"; + packageName = "har-schema"; + version = "2.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz"; + sha1 = "a94c2224ebcac04782a0d9035521f24735b7ec92"; + }; + }; + "har-validator-5.1.3" = { + name = "har-validator"; + packageName = "har-validator"; + version = "5.1.3"; + src = fetchurl { + url = "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz"; + sha512 = "sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g=="; + }; + }; + "has-1.0.3" = { + name = "has"; + packageName = "has"; + version = "1.0.3"; + src = fetchurl { + url = "https://registry.npmjs.org/has/-/has-1.0.3.tgz"; + sha512 = "f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw=="; + }; + }; + "has-ansi-2.0.0" = { + name = "has-ansi"; + packageName = "has-ansi"; + version = "2.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz"; + sha1 = "34f5049ce1ecdf2b0649af3ef24e45ed35416d91"; + }; + }; + "has-flag-3.0.0" = { + name = "has-flag"; + packageName = "has-flag"; + version = "3.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz"; + sha1 = "b5d454dc2199ae225699f3467e5a07f3b955bafd"; + }; + }; + "has-symbol-support-x-1.4.2" = { + name = "has-symbol-support-x"; + packageName = "has-symbol-support-x"; + version = "1.4.2"; + src = fetchurl { + url = "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz"; + sha512 = "3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw=="; + }; + }; + "has-symbols-1.0.1" = { + name = "has-symbols"; + packageName = "has-symbols"; + version = "1.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz"; + sha512 = "PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg=="; + }; + }; + "has-to-string-tag-x-1.4.1" = { + name = "has-to-string-tag-x"; + packageName = "has-to-string-tag-x"; + version = "1.4.1"; + src = fetchurl { + url = "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz"; + sha512 = "vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw=="; + }; + }; + "has-value-0.3.1" = { + name = "has-value"; + packageName = "has-value"; + version = "0.3.1"; + src = fetchurl { + url = "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz"; + sha1 = "7b1f58bada62ca827ec0a2078025654845995e1f"; + }; + }; + "has-value-1.0.0" = { + name = "has-value"; + packageName = "has-value"; + version = "1.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz"; + sha1 = "18b281da585b1c5c51def24c930ed29a0be6b177"; + }; + }; + "has-values-0.1.4" = { + name = "has-values"; + packageName = "has-values"; + version = "0.1.4"; + src = fetchurl { + url = "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz"; + sha1 = "6d61de95d91dfca9b9a02089ad384bff8f62b771"; + }; + }; + "has-values-1.0.0" = { + name = "has-values"; + packageName = "has-values"; + version = "1.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz"; + sha1 = "95b0b63fec2146619a6fe57fe75628d5a39efe4f"; + }; + }; + "hash-base-3.0.4" = { + name = "hash-base"; + packageName = "hash-base"; + version = "3.0.4"; + src = fetchurl { + url = "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz"; + sha1 = "5fc8686847ecd73499403319a6b0a3f3f6ae4918"; + }; + }; + "hash.js-1.1.7" = { + name = "hash.js"; + packageName = "hash.js"; + version = "1.1.7"; + src = fetchurl { + url = "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz"; + sha512 = "taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA=="; + }; + }; + "hmac-drbg-1.0.1" = { + name = "hmac-drbg"; + packageName = "hmac-drbg"; + version = "1.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz"; + sha1 = "d2745701025a6c775a6c545793ed502fc0c649a1"; + }; + }; + "home-or-tmp-2.0.0" = { + name = "home-or-tmp"; + packageName = "home-or-tmp"; + version = "2.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz"; + sha1 = "e36c3f2d2cae7d746a857e38d18d5f32a7882db8"; + }; + }; + "homedir-polyfill-1.0.3" = { + name = "homedir-polyfill"; + packageName = "homedir-polyfill"; + version = "1.0.3"; + src = fetchurl { + url = "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz"; + sha512 = "eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA=="; + }; + }; + "hoopy-0.1.4" = { + name = "hoopy"; + packageName = "hoopy"; + version = "0.1.4"; + src = fetchurl { + url = "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz"; + sha512 = "HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ=="; + }; + }; + "hosted-git-info-2.8.8" = { + name = "hosted-git-info"; + packageName = "hosted-git-info"; + version = "2.8.8"; + src = fetchurl { + url = "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz"; + sha512 = "f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg=="; + }; + }; + "hpack.js-2.1.6" = { + name = "hpack.js"; + packageName = "hpack.js"; + version = "2.1.6"; + src = fetchurl { + url = "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz"; + sha1 = "87774c0949e513f42e84575b3c45681fade2a0b2"; + }; + }; + "html-encoding-sniffer-1.0.2" = { + name = "html-encoding-sniffer"; + packageName = "html-encoding-sniffer"; + version = "1.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz"; + sha512 = "71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw=="; + }; + }; + "html-entities-1.2.1" = { + name = "html-entities"; + packageName = "html-entities"; + version = "1.2.1"; + src = fetchurl { + url = "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz"; + sha1 = "0df29351f0721163515dfb9e5543e5f6eed5162f"; + }; + }; + "html-escaper-2.0.0" = { + name = "html-escaper"; + packageName = "html-escaper"; + version = "2.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.0.tgz"; + sha512 = "a4u9BeERWGu/S8JiWEAQcdrg9v4QArtP9keViQjGMdff20fBdd8waotXaNmODqBe6uZ3Nafi7K/ho4gCQHV3Ig=="; + }; + }; + "http-assert-1.4.1" = { + name = "http-assert"; + packageName = "http-assert"; + version = "1.4.1"; + src = fetchurl { + url = "https://registry.npmjs.org/http-assert/-/http-assert-1.4.1.tgz"; + sha512 = "rdw7q6GTlibqVVbXr0CKelfV5iY8G2HqEUkhSk297BMbSpSL8crXC+9rjKoMcZZEsksX30le6f/4ul4E28gegw=="; + }; + }; + "http-cache-semantics-3.8.1" = { + name = "http-cache-semantics"; + packageName = "http-cache-semantics"; + version = "3.8.1"; + src = fetchurl { + url = "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz"; + sha512 = "5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w=="; + }; + }; + "http-deceiver-1.2.7" = { + name = "http-deceiver"; + packageName = "http-deceiver"; + version = "1.2.7"; + src = fetchurl { + url = "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz"; + sha1 = "fa7168944ab9a519d337cb0bec7284dc3e723d87"; + }; + }; + "http-errors-1.6.3" = { + name = "http-errors"; + packageName = "http-errors"; + version = "1.6.3"; + src = fetchurl { + url = "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz"; + sha1 = "8b55680bb4be283a0b5bf4ea2e38580be1d9320d"; + }; + }; + "http-errors-1.7.2" = { + name = "http-errors"; + packageName = "http-errors"; + version = "1.7.2"; + src = fetchurl { + url = "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz"; + sha512 = "uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg=="; + }; + }; + "http-errors-1.7.3" = { + name = "http-errors"; + packageName = "http-errors"; + version = "1.7.3"; + src = fetchurl { + url = "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz"; + sha512 = "ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw=="; + }; + }; + "http-parser-js-0.4.10" = { + name = "http-parser-js"; + packageName = "http-parser-js"; + version = "0.4.10"; + src = fetchurl { + url = "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.10.tgz"; + sha1 = "92c9c1374c35085f75db359ec56cc257cbb93fa4"; + }; + }; + "http-proxy-1.18.0" = { + name = "http-proxy"; + packageName = "http-proxy"; + version = "1.18.0"; + src = fetchurl { + url = "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.0.tgz"; + sha512 = "84I2iJM/n1d4Hdgc6y2+qY5mDaz2PUVjlg9znE9byl+q0uC3DeByqBGReQu5tpLK0TAqTIXScRUV+dg7+bUPpQ=="; + }; + }; + "http-proxy-middleware-0.19.1" = { + name = "http-proxy-middleware"; + packageName = "http-proxy-middleware"; + version = "0.19.1"; + src = fetchurl { + url = "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz"; + sha512 = "yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q=="; + }; + }; + "http-signature-1.2.0" = { + name = "http-signature"; + packageName = "http-signature"; + version = "1.2.0"; + src = fetchurl { + url = "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz"; + sha1 = "9aecd925114772f3d95b65a60abb8f7c18fbace1"; + }; + }; + "https-browserify-1.0.0" = { + name = "https-browserify"; + packageName = "https-browserify"; + version = "1.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz"; + sha1 = "ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73"; + }; + }; + "iconv-lite-0.4.24" = { + name = "iconv-lite"; + packageName = "iconv-lite"; + version = "0.4.24"; + src = fetchurl { + url = "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz"; + sha512 = "v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA=="; + }; + }; + "ieee754-1.1.13" = { + name = "ieee754"; + packageName = "ieee754"; + version = "1.1.13"; + src = fetchurl { + url = "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz"; + sha512 = "4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg=="; + }; + }; + "iferr-0.1.5" = { + name = "iferr"; + packageName = "iferr"; + version = "0.1.5"; + src = fetchurl { + url = "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz"; + sha1 = "c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501"; + }; + }; + "ignore-3.3.10" = { + name = "ignore"; + packageName = "ignore"; + version = "3.3.10"; + src = fetchurl { + url = "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz"; + sha512 = "Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug=="; + }; + }; + "import-local-2.0.0" = { + name = "import-local"; + packageName = "import-local"; + version = "2.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz"; + sha512 = "b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ=="; + }; + }; + "imurmurhash-0.1.4" = { + name = "imurmurhash"; + packageName = "imurmurhash"; + version = "0.1.4"; + src = fetchurl { + url = "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz"; + sha1 = "9218b9b2b928a238b13dc4fb6b6d576f231453ea"; + }; + }; + "indent-string-3.2.0" = { + name = "indent-string"; + packageName = "indent-string"; + version = "3.2.0"; + src = fetchurl { + url = "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz"; + sha1 = "4a5fd6d27cc332f37e5419a504dbb837105c9289"; + }; + }; + "infer-owner-1.0.4" = { + name = "infer-owner"; + packageName = "infer-owner"; + version = "1.0.4"; + src = fetchurl { + url = "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz"; + sha512 = "IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A=="; + }; + }; + "inflation-2.0.0" = { + name = "inflation"; + packageName = "inflation"; + version = "2.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/inflation/-/inflation-2.0.0.tgz"; + sha1 = "8b417e47c28f925a45133d914ca1fd389107f30f"; + }; + }; + "inflight-1.0.6" = { + name = "inflight"; + packageName = "inflight"; + version = "1.0.6"; + src = fetchurl { + url = "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz"; + sha1 = "49bd6331d7d02d0c09bc910a1075ba8165b56df9"; + }; + }; + "inherits-2.0.1" = { + name = "inherits"; + packageName = "inherits"; + version = "2.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz"; + sha1 = "b17d08d326b4423e568eff719f91b0b1cbdf69f1"; + }; + }; + "inherits-2.0.3" = { + name = "inherits"; + packageName = "inherits"; + version = "2.0.3"; + src = fetchurl { + url = "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz"; + sha1 = "633c2c83e3da42a502f52466022480f4208261de"; + }; + }; + "inherits-2.0.4" = { + name = "inherits"; + packageName = "inherits"; + version = "2.0.4"; + src = fetchurl { + url = "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz"; + sha512 = "k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="; + }; + }; + "ini-1.3.5" = { + name = "ini"; + packageName = "ini"; + version = "1.3.5"; + src = fetchurl { + url = "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz"; + sha512 = "RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw=="; + }; + }; + "internal-ip-4.3.0" = { + name = "internal-ip"; + packageName = "internal-ip"; + version = "4.3.0"; + src = fetchurl { + url = "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz"; + sha512 = "S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg=="; + }; + }; + "interpret-1.2.0" = { + name = "interpret"; + packageName = "interpret"; + version = "1.2.0"; + src = fetchurl { + url = "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz"; + sha512 = "mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw=="; + }; + }; + "into-stream-3.1.0" = { + name = "into-stream"; + packageName = "into-stream"; + version = "3.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz"; + sha1 = "96fb0a936c12babd6ff1752a17d05616abd094c6"; + }; + }; + "invariant-2.2.4" = { + name = "invariant"; + packageName = "invariant"; + version = "2.2.4"; + src = fetchurl { + url = "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz"; + sha512 = "phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA=="; + }; + }; + "invert-kv-2.0.0" = { + name = "invert-kv"; + packageName = "invert-kv"; + version = "2.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz"; + sha512 = "wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA=="; + }; + }; + "ip-1.1.5" = { + name = "ip"; + packageName = "ip"; + version = "1.1.5"; + src = fetchurl { + url = "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz"; + sha1 = "bdded70114290828c0a039e72ef25f5aaec4354a"; + }; + }; + "ip-regex-2.1.0" = { + name = "ip-regex"; + packageName = "ip-regex"; + version = "2.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz"; + sha1 = "fa78bf5d2e6913c911ce9f819ee5146bb6d844e9"; + }; + }; + "ipaddr.js-1.9.1" = { + name = "ipaddr.js"; + packageName = "ipaddr.js"; + version = "1.9.1"; + src = fetchurl { + url = "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz"; + sha512 = "0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="; + }; + }; + "is-absolute-url-3.0.3" = { + name = "is-absolute-url"; + packageName = "is-absolute-url"; + version = "3.0.3"; + src = fetchurl { + url = "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz"; + sha512 = "opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q=="; + }; + }; + "is-accessor-descriptor-0.1.6" = { + name = "is-accessor-descriptor"; + packageName = "is-accessor-descriptor"; + version = "0.1.6"; + src = fetchurl { + url = "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz"; + sha1 = "a9e12cb3ae8d876727eeef3843f8a0897b5c98d6"; + }; + }; + "is-accessor-descriptor-1.0.0" = { + name = "is-accessor-descriptor"; + packageName = "is-accessor-descriptor"; + version = "1.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz"; + sha512 = "m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ=="; + }; + }; + "is-arrayish-0.2.1" = { + name = "is-arrayish"; + packageName = "is-arrayish"; + version = "0.2.1"; + src = fetchurl { + url = "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz"; + sha1 = "77c99840527aa8ecb1a8ba697b80645a7a926a9d"; + }; + }; + "is-binary-path-1.0.1" = { + name = "is-binary-path"; + packageName = "is-binary-path"; + version = "1.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz"; + sha1 = "75f16642b480f187a711c814161fd3a4a7655898"; + }; + }; + "is-buffer-1.1.6" = { + name = "is-buffer"; + packageName = "is-buffer"; + version = "1.1.6"; + src = fetchurl { + url = "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz"; + sha512 = "NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="; + }; + }; + "is-callable-1.1.5" = { + name = "is-callable"; + packageName = "is-callable"; + version = "1.1.5"; + src = fetchurl { + url = "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz"; + sha512 = "ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q=="; + }; + }; + "is-ci-2.0.0" = { + name = "is-ci"; + packageName = "is-ci"; + version = "2.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz"; + sha512 = "YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w=="; + }; + }; + "is-data-descriptor-0.1.4" = { + name = "is-data-descriptor"; + packageName = "is-data-descriptor"; + version = "0.1.4"; + src = fetchurl { + url = "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz"; + sha1 = "0b5ee648388e2c860282e793f1856fec3f301b56"; + }; + }; + "is-data-descriptor-1.0.0" = { + name = "is-data-descriptor"; + packageName = "is-data-descriptor"; + version = "1.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz"; + sha512 = "jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ=="; + }; + }; + "is-date-object-1.0.2" = { + name = "is-date-object"; + packageName = "is-date-object"; + version = "1.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz"; + sha512 = "USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g=="; + }; + }; + "is-descriptor-0.1.6" = { + name = "is-descriptor"; + packageName = "is-descriptor"; + version = "0.1.6"; + src = fetchurl { + url = "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz"; + sha512 = "avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg=="; + }; + }; + "is-descriptor-1.0.2" = { + name = "is-descriptor"; + packageName = "is-descriptor"; + version = "1.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz"; + sha512 = "2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg=="; + }; + }; + "is-expression-3.0.0" = { + name = "is-expression"; + packageName = "is-expression"; + version = "3.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/is-expression/-/is-expression-3.0.0.tgz"; + sha1 = "39acaa6be7fd1f3471dc42c7416e61c24317ac9f"; + }; + }; + "is-extendable-0.1.1" = { + name = "is-extendable"; + packageName = "is-extendable"; + version = "0.1.1"; + src = fetchurl { + url = "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz"; + sha1 = "62b110e289a471418e3ec36a617d472e301dfc89"; + }; + }; + "is-extendable-1.0.1" = { + name = "is-extendable"; + packageName = "is-extendable"; + version = "1.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz"; + sha512 = "arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA=="; + }; + }; + "is-extglob-2.1.1" = { + name = "is-extglob"; + packageName = "is-extglob"; + version = "2.1.1"; + src = fetchurl { + url = "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz"; + sha1 = "a88c02535791f02ed37c76a1b9ea9773c833f8c2"; + }; + }; + "is-finite-1.1.0" = { + name = "is-finite"; + packageName = "is-finite"; + version = "1.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz"; + sha512 = "cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w=="; + }; + }; + "is-fullwidth-code-point-1.0.0" = { + name = "is-fullwidth-code-point"; + packageName = "is-fullwidth-code-point"; + version = "1.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz"; + sha1 = "ef9e31386f031a7f0d643af82fde50c457ef00cb"; + }; + }; + "is-fullwidth-code-point-2.0.0" = { + name = "is-fullwidth-code-point"; + packageName = "is-fullwidth-code-point"; + version = "2.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz"; + sha1 = "a3b30a5c4f199183167aaab93beefae3ddfb654f"; + }; + }; + "is-generator-fn-2.1.0" = { + name = "is-generator-fn"; + packageName = "is-generator-fn"; + version = "2.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz"; + sha512 = "cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ=="; + }; + }; + "is-generator-function-1.0.7" = { + name = "is-generator-function"; + packageName = "is-generator-function"; + version = "1.0.7"; + src = fetchurl { + url = "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.7.tgz"; + sha512 = "YZc5EwyO4f2kWCax7oegfuSr9mFz1ZvieNYBEjmukLxgXfBUbxAWGVF7GZf0zidYtoBl3WvC07YK0wT76a+Rtw=="; + }; + }; + "is-glob-3.1.0" = { + name = "is-glob"; + packageName = "is-glob"; + version = "3.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz"; + sha1 = "7ba5ae24217804ac70707b96922567486cc3e84a"; + }; + }; + "is-glob-4.0.1" = { + name = "is-glob"; + packageName = "is-glob"; + version = "4.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz"; + sha512 = "5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg=="; + }; + }; + "is-number-3.0.0" = { + name = "is-number"; + packageName = "is-number"; + version = "3.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz"; + sha1 = "24fd6201a4782cf50561c810276afc7d12d71195"; + }; + }; + "is-object-1.0.1" = { + name = "is-object"; + packageName = "is-object"; + version = "1.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz"; + sha1 = "8952688c5ec2ffd6b03ecc85e769e02903083470"; + }; + }; + "is-path-cwd-2.2.0" = { + name = "is-path-cwd"; + packageName = "is-path-cwd"; + version = "2.2.0"; + src = fetchurl { + url = "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz"; + sha512 = "w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ=="; + }; + }; + "is-path-in-cwd-2.1.0" = { + name = "is-path-in-cwd"; + packageName = "is-path-in-cwd"; + version = "2.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz"; + sha512 = "rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ=="; + }; + }; + "is-path-inside-2.1.0" = { + name = "is-path-inside"; + packageName = "is-path-inside"; + version = "2.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz"; + sha512 = "wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg=="; + }; + }; + "is-plain-obj-1.1.0" = { + name = "is-plain-obj"; + packageName = "is-plain-obj"; + version = "1.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz"; + sha1 = "71a50c8429dfca773c92a390a4a03b39fcd51d3e"; + }; + }; + "is-plain-object-2.0.4" = { + name = "is-plain-object"; + packageName = "is-plain-object"; + version = "2.0.4"; + src = fetchurl { + url = "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz"; + sha512 = "h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og=="; + }; + }; + "is-promise-2.1.0" = { + name = "is-promise"; + packageName = "is-promise"; + version = "2.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz"; + sha1 = "79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa"; + }; + }; + "is-regex-1.0.5" = { + name = "is-regex"; + packageName = "is-regex"; + version = "1.0.5"; + src = fetchurl { + url = "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz"; + sha512 = "vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ=="; + }; + }; + "is-retry-allowed-1.2.0" = { + name = "is-retry-allowed"; + packageName = "is-retry-allowed"; + version = "1.2.0"; + src = fetchurl { + url = "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz"; + sha512 = "RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg=="; + }; + }; + "is-stream-1.1.0" = { + name = "is-stream"; + packageName = "is-stream"; + version = "1.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz"; + sha1 = "12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"; + }; + }; + "is-symbol-1.0.3" = { + name = "is-symbol"; + packageName = "is-symbol"; + version = "1.0.3"; + src = fetchurl { + url = "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz"; + sha512 = "OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ=="; + }; + }; + "is-typedarray-1.0.0" = { + name = "is-typedarray"; + packageName = "is-typedarray"; + version = "1.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz"; + sha1 = "e479c80858df0c1b11ddda6940f96011fcda4a9a"; + }; + }; + "is-whitespace-0.3.0" = { + name = "is-whitespace"; + packageName = "is-whitespace"; + version = "0.3.0"; + src = fetchurl { + url = "https://registry.npmjs.org/is-whitespace/-/is-whitespace-0.3.0.tgz"; + sha1 = "1639ecb1be036aec69a54cbb401cfbed7114ab7f"; + }; + }; + "is-windows-1.0.2" = { + name = "is-windows"; + packageName = "is-windows"; + version = "1.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz"; + sha512 = "eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA=="; + }; + }; + "is-wsl-1.1.0" = { + name = "is-wsl"; + packageName = "is-wsl"; + version = "1.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz"; + sha1 = "1f16e4aa22b04d1336b66188a66af3c600c3a66d"; + }; + }; + "isarray-0.0.1" = { + name = "isarray"; + packageName = "isarray"; + version = "0.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz"; + sha1 = "8a18acfca9a8f4177e09abfc6038939b05d1eedf"; + }; + }; + "isarray-1.0.0" = { + name = "isarray"; + packageName = "isarray"; + version = "1.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz"; + sha1 = "bb935d48582cba168c06834957a54a3e07124f11"; + }; + }; + "isexe-2.0.0" = { + name = "isexe"; + packageName = "isexe"; + version = "2.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz"; + sha1 = "e8fbf374dc556ff8947a10dcb0572d633f2cfa10"; + }; + }; + "isobject-2.1.0" = { + name = "isobject"; + packageName = "isobject"; + version = "2.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz"; + sha1 = "f065561096a3f1da2ef46272f815c840d87e0c89"; + }; + }; + "isobject-3.0.1" = { + name = "isobject"; + packageName = "isobject"; + version = "3.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz"; + sha1 = "4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"; + }; + }; + "isomorphic-ws-4.0.1" = { + name = "isomorphic-ws"; + packageName = "isomorphic-ws"; + version = "4.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz"; + sha512 = "BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w=="; + }; + }; + "isstream-0.1.2" = { + name = "isstream"; + packageName = "isstream"; + version = "0.1.2"; + src = fetchurl { + url = "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz"; + sha1 = "47e63f7af55afa6f92e1500e690eb8b8529c099a"; + }; + }; + "istanbul-lib-coverage-2.0.5" = { + name = "istanbul-lib-coverage"; + packageName = "istanbul-lib-coverage"; + version = "2.0.5"; + src = fetchurl { + url = "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz"; + sha512 = "8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA=="; + }; + }; + "istanbul-lib-instrument-3.3.0" = { + name = "istanbul-lib-instrument"; + packageName = "istanbul-lib-instrument"; + version = "3.3.0"; + src = fetchurl { + url = "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz"; + sha512 = "5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA=="; + }; + }; + "istanbul-lib-report-2.0.8" = { + name = "istanbul-lib-report"; + packageName = "istanbul-lib-report"; + version = "2.0.8"; + src = fetchurl { + url = "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz"; + sha512 = "fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ=="; + }; + }; + "istanbul-lib-source-maps-3.0.6" = { + name = "istanbul-lib-source-maps"; + packageName = "istanbul-lib-source-maps"; + version = "3.0.6"; + src = fetchurl { + url = "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz"; + sha512 = "R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw=="; + }; + }; + "istanbul-reports-2.2.7" = { + name = "istanbul-reports"; + packageName = "istanbul-reports"; + version = "2.2.7"; + src = fetchurl { + url = "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.7.tgz"; + sha512 = "uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg=="; + }; + }; + "isurl-1.0.0" = { + name = "isurl"; + packageName = "isurl"; + version = "1.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz"; + sha512 = "1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w=="; + }; + }; + "jest-24.9.0" = { + name = "jest"; + packageName = "jest"; + version = "24.9.0"; + src = fetchurl { + url = "https://registry.npmjs.org/jest/-/jest-24.9.0.tgz"; + sha512 = "YvkBL1Zm7d2B1+h5fHEOdyjCG+sGMz4f8D86/0HiqJ6MB4MnDc8FgP5vdWsGnemOQro7lnYo8UakZ3+5A0jxGw=="; + }; + }; + "jest-changed-files-24.9.0" = { + name = "jest-changed-files"; + packageName = "jest-changed-files"; + version = "24.9.0"; + src = fetchurl { + url = "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-24.9.0.tgz"; + sha512 = "6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg=="; + }; + }; + "jest-cli-24.9.0" = { + name = "jest-cli"; + packageName = "jest-cli"; + version = "24.9.0"; + src = fetchurl { + url = "https://registry.npmjs.org/jest-cli/-/jest-cli-24.9.0.tgz"; + sha512 = "+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg=="; + }; + }; + "jest-config-24.9.0" = { + name = "jest-config"; + packageName = "jest-config"; + version = "24.9.0"; + src = fetchurl { + url = "https://registry.npmjs.org/jest-config/-/jest-config-24.9.0.tgz"; + sha512 = "RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ=="; + }; + }; + "jest-diff-24.9.0" = { + name = "jest-diff"; + packageName = "jest-diff"; + version = "24.9.0"; + src = fetchurl { + url = "https://registry.npmjs.org/jest-diff/-/jest-diff-24.9.0.tgz"; + sha512 = "qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ=="; + }; + }; + "jest-docblock-24.9.0" = { + name = "jest-docblock"; + packageName = "jest-docblock"; + version = "24.9.0"; + src = fetchurl { + url = "https://registry.npmjs.org/jest-docblock/-/jest-docblock-24.9.0.tgz"; + sha512 = "F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA=="; + }; + }; + "jest-each-24.9.0" = { + name = "jest-each"; + packageName = "jest-each"; + version = "24.9.0"; + src = fetchurl { + url = "https://registry.npmjs.org/jest-each/-/jest-each-24.9.0.tgz"; + sha512 = "ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog=="; + }; + }; + "jest-environment-jsdom-24.9.0" = { + name = "jest-environment-jsdom"; + packageName = "jest-environment-jsdom"; + version = "24.9.0"; + src = fetchurl { + url = "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz"; + sha512 = "Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA=="; + }; + }; + "jest-environment-node-24.9.0" = { + name = "jest-environment-node"; + packageName = "jest-environment-node"; + version = "24.9.0"; + src = fetchurl { + url = "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-24.9.0.tgz"; + sha512 = "6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA=="; + }; + }; + "jest-get-type-24.9.0" = { + name = "jest-get-type"; + packageName = "jest-get-type"; + version = "24.9.0"; + src = fetchurl { + url = "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz"; + sha512 = "lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q=="; + }; + }; + "jest-haste-map-24.9.0" = { + name = "jest-haste-map"; + packageName = "jest-haste-map"; + version = "24.9.0"; + src = fetchurl { + url = "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.9.0.tgz"; + sha512 = "kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ=="; + }; + }; + "jest-jasmine2-24.9.0" = { + name = "jest-jasmine2"; + packageName = "jest-jasmine2"; + version = "24.9.0"; + src = fetchurl { + url = "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz"; + sha512 = "Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw=="; + }; + }; + "jest-leak-detector-24.9.0" = { + name = "jest-leak-detector"; + packageName = "jest-leak-detector"; + version = "24.9.0"; + src = fetchurl { + url = "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz"; + sha512 = "tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA=="; + }; + }; + "jest-matcher-utils-24.9.0" = { + name = "jest-matcher-utils"; + packageName = "jest-matcher-utils"; + version = "24.9.0"; + src = fetchurl { + url = "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz"; + sha512 = "OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA=="; + }; + }; + "jest-message-util-24.9.0" = { + name = "jest-message-util"; + packageName = "jest-message-util"; + version = "24.9.0"; + src = fetchurl { + url = "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.9.0.tgz"; + sha512 = "oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw=="; + }; + }; + "jest-mock-24.9.0" = { + name = "jest-mock"; + packageName = "jest-mock"; + version = "24.9.0"; + src = fetchurl { + url = "https://registry.npmjs.org/jest-mock/-/jest-mock-24.9.0.tgz"; + sha512 = "3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w=="; + }; + }; + "jest-pnp-resolver-1.2.1" = { + name = "jest-pnp-resolver"; + packageName = "jest-pnp-resolver"; + version = "1.2.1"; + src = fetchurl { + url = "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz"; + sha512 = "pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ=="; + }; + }; + "jest-regex-util-24.9.0" = { + name = "jest-regex-util"; + packageName = "jest-regex-util"; + version = "24.9.0"; + src = fetchurl { + url = "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-24.9.0.tgz"; + sha512 = "05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA=="; + }; + }; + "jest-resolve-24.9.0" = { + name = "jest-resolve"; + packageName = "jest-resolve"; + version = "24.9.0"; + src = fetchurl { + url = "https://registry.npmjs.org/jest-resolve/-/jest-resolve-24.9.0.tgz"; + sha512 = "TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ=="; + }; + }; + "jest-resolve-dependencies-24.9.0" = { + name = "jest-resolve-dependencies"; + packageName = "jest-resolve-dependencies"; + version = "24.9.0"; + src = fetchurl { + url = "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz"; + sha512 = "Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g=="; + }; + }; + "jest-runner-24.9.0" = { + name = "jest-runner"; + packageName = "jest-runner"; + version = "24.9.0"; + src = fetchurl { + url = "https://registry.npmjs.org/jest-runner/-/jest-runner-24.9.0.tgz"; + sha512 = "KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg=="; + }; + }; + "jest-runtime-24.9.0" = { + name = "jest-runtime"; + packageName = "jest-runtime"; + version = "24.9.0"; + src = fetchurl { + url = "https://registry.npmjs.org/jest-runtime/-/jest-runtime-24.9.0.tgz"; + sha512 = "8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw=="; + }; + }; + "jest-serializer-24.9.0" = { + name = "jest-serializer"; + packageName = "jest-serializer"; + version = "24.9.0"; + src = fetchurl { + url = "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.9.0.tgz"; + sha512 = "DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ=="; + }; + }; + "jest-snapshot-24.9.0" = { + name = "jest-snapshot"; + packageName = "jest-snapshot"; + version = "24.9.0"; + src = fetchurl { + url = "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-24.9.0.tgz"; + sha512 = "uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew=="; + }; + }; + "jest-util-24.9.0" = { + name = "jest-util"; + packageName = "jest-util"; + version = "24.9.0"; + src = fetchurl { + url = "https://registry.npmjs.org/jest-util/-/jest-util-24.9.0.tgz"; + sha512 = "x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg=="; + }; + }; + "jest-validate-24.9.0" = { + name = "jest-validate"; + packageName = "jest-validate"; + version = "24.9.0"; + src = fetchurl { + url = "https://registry.npmjs.org/jest-validate/-/jest-validate-24.9.0.tgz"; + sha512 = "HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ=="; + }; + }; + "jest-watcher-24.9.0" = { + name = "jest-watcher"; + packageName = "jest-watcher"; + version = "24.9.0"; + src = fetchurl { + url = "https://registry.npmjs.org/jest-watcher/-/jest-watcher-24.9.0.tgz"; + sha512 = "+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw=="; + }; + }; + "jest-worker-24.9.0" = { + name = "jest-worker"; + packageName = "jest-worker"; + version = "24.9.0"; + src = fetchurl { + url = "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz"; + sha512 = "51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw=="; + }; + }; + "js-beautify-1.10.3" = { + name = "js-beautify"; + packageName = "js-beautify"; + version = "1.10.3"; + src = fetchurl { + url = "https://registry.npmjs.org/js-beautify/-/js-beautify-1.10.3.tgz"; + sha512 = "wfk/IAWobz1TfApSdivH5PJ0miIHgDoYb1ugSqHcODPmaYu46rYe5FVuIEkhjg8IQiv6rDNPyhsqbsohI/C2vQ=="; + }; + }; + "js-stringify-1.0.2" = { + name = "js-stringify"; + packageName = "js-stringify"; + version = "1.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz"; + sha1 = "1736fddfd9724f28a3682adc6230ae7e4e9679db"; + }; + }; + "js-tokens-3.0.2" = { + name = "js-tokens"; + packageName = "js-tokens"; + version = "3.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz"; + sha1 = "9866df395102130e38f7f996bceb65443209c25b"; + }; + }; + "js-tokens-4.0.0" = { + name = "js-tokens"; + packageName = "js-tokens"; + version = "4.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz"; + sha512 = "RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="; + }; + }; + "js-yaml-3.13.1" = { + name = "js-yaml"; + packageName = "js-yaml"; + version = "3.13.1"; + src = fetchurl { + url = "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz"; + sha512 = "YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw=="; + }; + }; + "jsbn-0.1.1" = { + name = "jsbn"; + packageName = "jsbn"; + version = "0.1.1"; + src = fetchurl { + url = "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz"; + sha1 = "a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"; + }; + }; + "jsdom-11.12.0" = { + name = "jsdom"; + packageName = "jsdom"; + version = "11.12.0"; + src = fetchurl { + url = "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz"; + sha512 = "y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw=="; + }; + }; + "jsesc-0.5.0" = { + name = "jsesc"; + packageName = "jsesc"; + version = "0.5.0"; + src = fetchurl { + url = "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz"; + sha1 = "e7dee66e35d6fc16f710fe91d5cf69f70f08911d"; + }; + }; + "jsesc-1.3.0" = { + name = "jsesc"; + packageName = "jsesc"; + version = "1.3.0"; + src = fetchurl { + url = "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz"; + sha1 = "46c3fec8c1892b12b0833db9bc7622176dbab34b"; + }; + }; + "jsesc-2.5.2" = { + name = "jsesc"; + packageName = "jsesc"; + version = "2.5.2"; + src = fetchurl { + url = "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz"; + sha512 = "OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA=="; + }; + }; + "json-buffer-3.0.0" = { + name = "json-buffer"; + packageName = "json-buffer"; + version = "3.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz"; + sha1 = "5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898"; + }; + }; + "json-parse-better-errors-1.0.2" = { + name = "json-parse-better-errors"; + packageName = "json-parse-better-errors"; + version = "1.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz"; + sha512 = "mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw=="; + }; + }; + "json-schema-0.2.3" = { + name = "json-schema"; + packageName = "json-schema"; + version = "0.2.3"; + src = fetchurl { + url = "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz"; + sha1 = "b480c892e59a2f05954ce727bd3f2a4e882f9e13"; + }; + }; + "json-schema-traverse-0.4.1" = { + name = "json-schema-traverse"; + packageName = "json-schema-traverse"; + version = "0.4.1"; + src = fetchurl { + url = "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz"; + sha512 = "xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="; + }; + }; + "json-stringify-safe-5.0.1" = { + name = "json-stringify-safe"; + packageName = "json-stringify-safe"; + version = "5.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz"; + sha1 = "1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"; + }; + }; + "json3-3.3.3" = { + name = "json3"; + packageName = "json3"; + version = "3.3.3"; + src = fetchurl { + url = "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz"; + sha512 = "c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA=="; + }; + }; + "json5-0.5.1" = { + name = "json5"; + packageName = "json5"; + version = "0.5.1"; + src = fetchurl { + url = "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz"; + sha1 = "1eade7acc012034ad84e2396767ead9fa5495821"; + }; + }; + "json5-1.0.1" = { + name = "json5"; + packageName = "json5"; + version = "1.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz"; + sha512 = "aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow=="; + }; + }; + "json5-2.1.1" = { + name = "json5"; + packageName = "json5"; + version = "2.1.1"; + src = fetchurl { + url = "https://registry.npmjs.org/json5/-/json5-2.1.1.tgz"; + sha512 = "l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ=="; + }; + }; + "jsonpath-plus-0.19.0" = { + name = "jsonpath-plus"; + packageName = "jsonpath-plus"; + version = "0.19.0"; + src = fetchurl { + url = "https://registry.npmjs.org/jsonpath-plus/-/jsonpath-plus-0.19.0.tgz"; + sha512 = "GSVwsrzW9LsA5lzsqe4CkuZ9wp+kxBb2GwNniaWzI2YFn5Ig42rSW8ZxVpWXaAfakXNrx5pgY5AbQq7kzX29kg=="; + }; + }; + "jsprim-1.4.1" = { + name = "jsprim"; + packageName = "jsprim"; + version = "1.4.1"; + src = fetchurl { + url = "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz"; + sha1 = "313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2"; + }; + }; + "jstransformer-1.0.0" = { + name = "jstransformer"; + packageName = "jstransformer"; + version = "1.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz"; + sha1 = "ed8bf0921e2f3f1ed4d5c1a44f68709ed24722c3"; + }; + }; + "keygrip-1.1.0" = { + name = "keygrip"; + packageName = "keygrip"; + version = "1.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz"; + sha512 = "iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ=="; + }; + }; + "keyv-3.0.0" = { + name = "keyv"; + packageName = "keyv"; + version = "3.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz"; + sha512 = "eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA=="; + }; + }; + "killable-1.0.1" = { + name = "killable"; + packageName = "killable"; + version = "1.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz"; + sha512 = "LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg=="; + }; + }; + "kind-of-3.2.2" = { + name = "kind-of"; + packageName = "kind-of"; + version = "3.2.2"; + src = fetchurl { + url = "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz"; + sha1 = "31ea21a734bab9bbb0f32466d893aea51e4a3c64"; + }; + }; + "kind-of-4.0.0" = { + name = "kind-of"; + packageName = "kind-of"; + version = "4.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz"; + sha1 = "20813df3d712928b207378691a45066fae72dd57"; + }; + }; + "kind-of-5.1.0" = { + name = "kind-of"; + packageName = "kind-of"; + version = "5.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz"; + sha512 = "NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw=="; + }; + }; + "kind-of-6.0.3" = { + name = "kind-of"; + packageName = "kind-of"; + version = "6.0.3"; + src = fetchurl { + url = "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz"; + sha512 = "dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw=="; + }; + }; + "kleur-3.0.3" = { + name = "kleur"; + packageName = "kleur"; + version = "3.0.3"; + src = fetchurl { + url = "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz"; + sha512 = "eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w=="; + }; + }; + "koa-2.11.0" = { + name = "koa"; + packageName = "koa"; + version = "2.11.0"; + src = fetchurl { + url = "https://registry.npmjs.org/koa/-/koa-2.11.0.tgz"; + sha512 = "EpR9dElBTDlaDgyhDMiLkXrPwp6ZqgAIBvhhmxQ9XN4TFgW+gEz6tkcsNI6BnUbUftrKDjVFj4lW2/J2aNBMMA=="; + }; + }; + "koa-body-4.1.1" = { + name = "koa-body"; + packageName = "koa-body"; + version = "4.1.1"; + src = fetchurl { + url = "https://registry.npmjs.org/koa-body/-/koa-body-4.1.1.tgz"; + sha512 = "rLb/KVD8qplEcK8Qsu6F4Xw+uHkmx3MWogDVmMX07DpjXizhw3pOEp1ja1MqqAcl0ei75AsrbGVDlySmsUrreA=="; + }; + }; + "koa-compose-3.2.1" = { + name = "koa-compose"; + packageName = "koa-compose"; + version = "3.2.1"; + src = fetchurl { + url = "https://registry.npmjs.org/koa-compose/-/koa-compose-3.2.1.tgz"; + sha1 = "a85ccb40b7d986d8e5a345b3a1ace8eabcf54de7"; + }; + }; + "koa-compose-4.1.0" = { + name = "koa-compose"; + packageName = "koa-compose"; + version = "4.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/koa-compose/-/koa-compose-4.1.0.tgz"; + sha512 = "8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw=="; + }; + }; + "koa-convert-1.2.0" = { + name = "koa-convert"; + packageName = "koa-convert"; + version = "1.2.0"; + src = fetchurl { + url = "https://registry.npmjs.org/koa-convert/-/koa-convert-1.2.0.tgz"; + sha1 = "da40875df49de0539098d1700b50820cebcd21d0"; + }; + }; + "koa-router-7.4.0" = { + name = "koa-router"; + packageName = "koa-router"; + version = "7.4.0"; + src = fetchurl { + url = "https://registry.npmjs.org/koa-router/-/koa-router-7.4.0.tgz"; + sha512 = "IWhaDXeAnfDBEpWS6hkGdZ1ablgr6Q6pGdXCyK38RbzuH4LkUOpPqPw+3f8l8aTDrQmBQ7xJc0bs2yV4dzcO+g=="; + }; + }; + "koa-send-5.0.0" = { + name = "koa-send"; + packageName = "koa-send"; + version = "5.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/koa-send/-/koa-send-5.0.0.tgz"; + sha512 = "90ZotV7t0p3uN9sRwW2D484rAaKIsD8tAVtypw/aBU+ryfV+fR2xrcAwhI8Wl6WRkojLUs/cB9SBSCuIb+IanQ=="; + }; + }; + "koa-static-5.0.0" = { + name = "koa-static"; + packageName = "koa-static"; + version = "5.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/koa-static/-/koa-static-5.0.0.tgz"; + sha512 = "UqyYyH5YEXaJrf9S8E23GoJFQZXkBVJ9zYYMPGz919MSX1KuvAcycIuS0ci150HCoPf4XQVhQ84Qf8xRPWxFaQ=="; + }; + }; + "koa-views-6.2.1" = { + name = "koa-views"; + packageName = "koa-views"; + version = "6.2.1"; + src = fetchurl { + url = "https://registry.npmjs.org/koa-views/-/koa-views-6.2.1.tgz"; + sha512 = "wU3tw48KuskaJg0x1JZmC73UWGgVmh6B54HuHDzTrkavig+dBI0NbFeGiWsaOCZREQkaTfIVXSPSByDant71ew=="; + }; + }; + "lazy-cache-1.0.4" = { + name = "lazy-cache"; + packageName = "lazy-cache"; + version = "1.0.4"; + src = fetchurl { + url = "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz"; + sha1 = "a1d78fc3a50474cb80845d3b3b6e1da49a446e8e"; + }; + }; + "lcid-2.0.0" = { + name = "lcid"; + packageName = "lcid"; + version = "2.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz"; + sha512 = "avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA=="; + }; + }; + "left-pad-1.3.0" = { + name = "left-pad"; + packageName = "left-pad"; + version = "1.3.0"; + src = fetchurl { + url = "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz"; + sha512 = "XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA=="; + }; + }; + "leven-3.1.0" = { + name = "leven"; + packageName = "leven"; + version = "3.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz"; + sha512 = "qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A=="; + }; + }; + "levn-0.3.0" = { + name = "levn"; + packageName = "levn"; + version = "0.3.0"; + src = fetchurl { + url = "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz"; + sha1 = "3b09924edf9f083c0490fdd4c0bc4421e04764ee"; + }; + }; + "load-json-file-4.0.0" = { + name = "load-json-file"; + packageName = "load-json-file"; + version = "4.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz"; + sha1 = "2f5f45ab91e33216234fd53adab668eb4ec0993b"; + }; + }; + "loader-runner-2.4.0" = { + name = "loader-runner"; + packageName = "loader-runner"; + version = "2.4.0"; + src = fetchurl { + url = "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz"; + sha512 = "Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw=="; + }; + }; + "loader-utils-1.2.3" = { + name = "loader-utils"; + packageName = "loader-utils"; + version = "1.2.3"; + src = fetchurl { + url = "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz"; + sha512 = "fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA=="; + }; + }; + "loader-utils-1.4.0" = { + name = "loader-utils"; + packageName = "loader-utils"; + version = "1.4.0"; + src = fetchurl { + url = "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz"; + sha512 = "qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA=="; + }; + }; + "locate-path-2.0.0" = { + name = "locate-path"; + packageName = "locate-path"; + version = "2.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz"; + sha1 = "2b568b265eec944c6d9c0de9c3dbbbca0354cd8e"; + }; + }; + "locate-path-3.0.0" = { + name = "locate-path"; + packageName = "locate-path"; + version = "3.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz"; + sha512 = "7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A=="; + }; + }; + "lodash-4.17.15" = { + name = "lodash"; + packageName = "lodash"; + version = "4.17.15"; + src = fetchurl { + url = "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz"; + sha512 = "8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A=="; + }; + }; + "lodash.camelcase-4.3.0" = { + name = "lodash.camelcase"; + packageName = "lodash.camelcase"; + version = "4.3.0"; + src = fetchurl { + url = "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz"; + sha1 = "b28aa6288a2b9fc651035c7711f65ab6190331a6"; + }; + }; + "lodash.clonedeep-4.5.0" = { + name = "lodash.clonedeep"; + packageName = "lodash.clonedeep"; + version = "4.5.0"; + src = fetchurl { + url = "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz"; + sha1 = "e23f3f9c4f8fbdde872529c1071857a086e5ccef"; + }; + }; + "lodash.memoize-4.1.2" = { + name = "lodash.memoize"; + packageName = "lodash.memoize"; + version = "4.1.2"; + src = fetchurl { + url = "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz"; + sha1 = "bcc6c49a42a2840ed997f323eada5ecd182e0bfe"; + }; + }; + "lodash.sortby-4.7.0" = { + name = "lodash.sortby"; + packageName = "lodash.sortby"; + version = "4.7.0"; + src = fetchurl { + url = "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz"; + sha1 = "edd14c824e2cc9c1e0b0a1b42bb5210516a42438"; + }; + }; + "log-symbols-2.2.0" = { + name = "log-symbols"; + packageName = "log-symbols"; + version = "2.2.0"; + src = fetchurl { + url = "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz"; + sha512 = "VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg=="; + }; + }; + "loglevel-1.6.7" = { + name = "loglevel"; + packageName = "loglevel"; + version = "1.6.7"; + src = fetchurl { + url = "https://registry.npmjs.org/loglevel/-/loglevel-1.6.7.tgz"; + sha512 = "cY2eLFrQSAfVPhCgH1s7JI73tMbg9YC3v3+ZHVW67sBS7UxWzNEk/ZBbSfLykBWHp33dqqtOv82gjhKEi81T/A=="; + }; + }; + "loglevelnext-1.0.5" = { + name = "loglevelnext"; + packageName = "loglevelnext"; + version = "1.0.5"; + src = fetchurl { + url = "https://registry.npmjs.org/loglevelnext/-/loglevelnext-1.0.5.tgz"; + sha512 = "V/73qkPuJmx4BcBF19xPBr+0ZRVBhc4POxvZTZdMeXpJ4NItXSJ/MSwuFT0kQJlCbXvdlZoQQ/418bS1y9Jh6A=="; + }; + }; + "long-4.0.0" = { + name = "long"; + packageName = "long"; + version = "4.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/long/-/long-4.0.0.tgz"; + sha512 = "XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA=="; + }; + }; + "longest-1.0.1" = { + name = "longest"; + packageName = "longest"; + version = "1.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz"; + sha1 = "30a0b2da38f73770e8294a0d22e6625ed77d0097"; + }; + }; + "loose-envify-1.4.0" = { + name = "loose-envify"; + packageName = "loose-envify"; + version = "1.4.0"; + src = fetchurl { + url = "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz"; + sha512 = "lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q=="; + }; + }; + "lowercase-keys-1.0.0" = { + name = "lowercase-keys"; + packageName = "lowercase-keys"; + version = "1.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz"; + sha1 = "4e3366b39e7f5457e35f1324bdf6f88d0bfc7306"; + }; + }; + "lowercase-keys-1.0.1" = { + name = "lowercase-keys"; + packageName = "lowercase-keys"; + version = "1.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz"; + sha512 = "G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA=="; + }; + }; + "lru-cache-4.1.5" = { + name = "lru-cache"; + packageName = "lru-cache"; + version = "4.1.5"; + src = fetchurl { + url = "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz"; + sha512 = "sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g=="; + }; + }; + "lru-cache-5.1.1" = { + name = "lru-cache"; + packageName = "lru-cache"; + version = "5.1.1"; + src = fetchurl { + url = "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz"; + sha512 = "KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="; + }; + }; + "make-dir-1.3.0" = { + name = "make-dir"; + packageName = "make-dir"; + version = "1.3.0"; + src = fetchurl { + url = "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz"; + sha512 = "2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ=="; + }; + }; + "make-dir-2.1.0" = { + name = "make-dir"; + packageName = "make-dir"; + version = "2.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz"; + sha512 = "LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA=="; + }; + }; + "make-error-1.3.6" = { + name = "make-error"; + packageName = "make-error"; + version = "1.3.6"; + src = fetchurl { + url = "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz"; + sha512 = "s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw=="; + }; + }; + "makeerror-1.0.11" = { + name = "makeerror"; + packageName = "makeerror"; + version = "1.0.11"; + src = fetchurl { + url = "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz"; + sha1 = "e01a5c9109f2af79660e4e8b9587790184f5a96c"; + }; + }; + "mamacro-0.0.3" = { + name = "mamacro"; + packageName = "mamacro"; + version = "0.0.3"; + src = fetchurl { + url = "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz"; + sha512 = "qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA=="; + }; + }; + "map-age-cleaner-0.1.3" = { + name = "map-age-cleaner"; + packageName = "map-age-cleaner"; + version = "0.1.3"; + src = fetchurl { + url = "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz"; + sha512 = "bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w=="; + }; + }; + "map-cache-0.2.2" = { + name = "map-cache"; + packageName = "map-cache"; + version = "0.2.2"; + src = fetchurl { + url = "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz"; + sha1 = "c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"; + }; + }; + "map-visit-1.0.0" = { + name = "map-visit"; + packageName = "map-visit"; + version = "1.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz"; + sha1 = "ecdca8f13144e660f1b5bd41f12f3479d98dfb8f"; + }; + }; + "md5.js-1.3.5" = { + name = "md5.js"; + packageName = "md5.js"; + version = "1.3.5"; + src = fetchurl { + url = "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz"; + sha512 = "xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg=="; + }; + }; + "media-typer-0.3.0" = { + name = "media-typer"; + packageName = "media-typer"; + version = "0.3.0"; + src = fetchurl { + url = "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz"; + sha1 = "8710d7af0aa626f8fffa1ce00168545263255748"; + }; + }; + "mem-4.3.0" = { + name = "mem"; + packageName = "mem"; + version = "4.3.0"; + src = fetchurl { + url = "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz"; + sha512 = "qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w=="; + }; + }; + "memory-fs-0.4.1" = { + name = "memory-fs"; + packageName = "memory-fs"; + version = "0.4.1"; + src = fetchurl { + url = "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz"; + sha1 = "3a9a20b8462523e447cfbc7e8bb80ed667bfc552"; + }; + }; + "memory-fs-0.5.0" = { + name = "memory-fs"; + packageName = "memory-fs"; + version = "0.5.0"; + src = fetchurl { + url = "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz"; + sha512 = "jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA=="; + }; + }; + "merge-descriptors-1.0.1" = { + name = "merge-descriptors"; + packageName = "merge-descriptors"; + version = "1.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz"; + sha1 = "b00aaa556dd8b44568150ec9d1b953f3f90cbb61"; + }; + }; + "merge-stream-2.0.0" = { + name = "merge-stream"; + packageName = "merge-stream"; + version = "2.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz"; + sha512 = "abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w=="; + }; + }; + "methods-1.1.2" = { + name = "methods"; + packageName = "methods"; + version = "1.1.2"; + src = fetchurl { + url = "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz"; + sha1 = "5529a4d67654134edcc5266656835b0f851afcee"; + }; + }; + "micromatch-3.1.10" = { + name = "micromatch"; + packageName = "micromatch"; + version = "3.1.10"; + src = fetchurl { + url = "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz"; + sha512 = "MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg=="; + }; + }; + "miller-rabin-4.0.1" = { + name = "miller-rabin"; + packageName = "miller-rabin"; + version = "4.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz"; + sha512 = "115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA=="; + }; + }; + "mime-1.6.0" = { + name = "mime"; + packageName = "mime"; + version = "1.6.0"; + src = fetchurl { + url = "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz"; + sha512 = "x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="; + }; + }; + "mime-2.4.4" = { + name = "mime"; + packageName = "mime"; + version = "2.4.4"; + src = fetchurl { + url = "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz"; + sha512 = "LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA=="; + }; + }; + "mime-db-1.43.0" = { + name = "mime-db"; + packageName = "mime-db"; + version = "1.43.0"; + src = fetchurl { + url = "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz"; + sha512 = "+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ=="; + }; + }; + "mime-types-2.1.26" = { + name = "mime-types"; + packageName = "mime-types"; + version = "2.1.26"; + src = fetchurl { + url = "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz"; + sha512 = "01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ=="; + }; + }; + "mimic-fn-1.2.0" = { + name = "mimic-fn"; + packageName = "mimic-fn"; + version = "1.2.0"; + src = fetchurl { + url = "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz"; + sha512 = "jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ=="; + }; + }; + "mimic-fn-2.1.0" = { + name = "mimic-fn"; + packageName = "mimic-fn"; + version = "2.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz"; + sha512 = "OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg=="; + }; + }; + "mimic-response-1.0.1" = { + name = "mimic-response"; + packageName = "mimic-response"; + version = "1.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz"; + sha512 = "j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ=="; + }; + }; + "minimalistic-assert-1.0.1" = { + name = "minimalistic-assert"; + packageName = "minimalistic-assert"; + version = "1.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz"; + sha512 = "UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A=="; + }; + }; + "minimalistic-crypto-utils-1.0.1" = { + name = "minimalistic-crypto-utils"; + packageName = "minimalistic-crypto-utils"; + version = "1.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz"; + sha1 = "f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"; + }; + }; + "minimatch-3.0.4" = { + name = "minimatch"; + packageName = "minimatch"; + version = "3.0.4"; + src = fetchurl { + url = "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz"; + sha512 = "yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA=="; + }; + }; + "minimist-0.0.8" = { + name = "minimist"; + packageName = "minimist"; + version = "0.0.8"; + src = fetchurl { + url = "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz"; + sha1 = "857fcabfc3397d2625b8228262e86aa7a011b05d"; + }; + }; + "minimist-1.2.5" = { + name = "minimist"; + packageName = "minimist"; + version = "1.2.5"; + src = fetchurl { + url = "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz"; + sha512 = "FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="; + }; + }; + "mississippi-2.0.0" = { + name = "mississippi"; + packageName = "mississippi"; + version = "2.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/mississippi/-/mississippi-2.0.0.tgz"; + sha512 = "zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw=="; + }; + }; + "mississippi-3.0.0" = { + name = "mississippi"; + packageName = "mississippi"; + version = "3.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz"; + sha512 = "x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA=="; + }; + }; + "mixin-deep-1.3.2" = { + name = "mixin-deep"; + packageName = "mixin-deep"; + version = "1.3.2"; + src = fetchurl { + url = "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz"; + sha512 = "WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA=="; + }; + }; + "mkdirp-0.5.1" = { + name = "mkdirp"; + packageName = "mkdirp"; + version = "0.5.1"; + src = fetchurl { + url = "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz"; + sha1 = "30057438eac6cf7f8c4767f38648d6697d75c903"; + }; + }; + "moment-2.24.0" = { + name = "moment"; + packageName = "moment"; + version = "2.24.0"; + src = fetchurl { + url = "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz"; + sha512 = "bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg=="; + }; + }; + "moment-timezone-0.5.28" = { + name = "moment-timezone"; + packageName = "moment-timezone"; + version = "0.5.28"; + src = fetchurl { + url = "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.28.tgz"; + sha512 = "TDJkZvAyKIVWg5EtVqRzU97w0Rb0YVbfpqyjgu6GwXCAohVRqwZjf4fOzDE6p1Ch98Sro/8hQQi65WDXW5STPw=="; + }; + }; + "move-concurrently-1.0.1" = { + name = "move-concurrently"; + packageName = "move-concurrently"; + version = "1.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz"; + sha1 = "be2c005fda32e0b29af1f05d7c4b33214c701f92"; + }; + }; + "ms-2.0.0" = { + name = "ms"; + packageName = "ms"; + version = "2.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz"; + sha1 = "5608aeadfc00be6c2901df5f9861788de0d597c8"; + }; + }; + "ms-2.1.1" = { + name = "ms"; + packageName = "ms"; + version = "2.1.1"; + src = fetchurl { + url = "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz"; + sha512 = "tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="; + }; + }; + "ms-2.1.2" = { + name = "ms"; + packageName = "ms"; + version = "2.1.2"; + src = fetchurl { + url = "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz"; + sha512 = "sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="; + }; + }; + "multicast-dns-6.2.3" = { + name = "multicast-dns"; + packageName = "multicast-dns"; + version = "6.2.3"; + src = fetchurl { + url = "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz"; + sha512 = "ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g=="; + }; + }; + "multicast-dns-service-types-1.1.0" = { + name = "multicast-dns-service-types"; + packageName = "multicast-dns-service-types"; + version = "1.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz"; + sha1 = "899f11d9686e5e05cb91b35d5f0e63b773cfc901"; + }; + }; + "mz-2.7.0" = { + name = "mz"; + packageName = "mz"; + version = "2.7.0"; + src = fetchurl { + url = "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz"; + sha512 = "z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q=="; + }; + }; + "nan-2.14.0" = { + name = "nan"; + packageName = "nan"; + version = "2.14.0"; + src = fetchurl { + url = "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz"; + sha512 = "INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg=="; + }; + }; + "nanomatch-1.2.13" = { + name = "nanomatch"; + packageName = "nanomatch"; + version = "1.2.13"; + src = fetchurl { + url = "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz"; + sha512 = "fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA=="; + }; + }; + "natural-compare-1.4.0" = { + name = "natural-compare"; + packageName = "natural-compare"; + version = "1.4.0"; + src = fetchurl { + url = "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz"; + sha1 = "4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"; + }; + }; + "negotiator-0.6.2" = { + name = "negotiator"; + packageName = "negotiator"; + version = "0.6.2"; + src = fetchurl { + url = "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz"; + sha512 = "hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw=="; + }; + }; + "neo-async-2.6.1" = { + name = "neo-async"; + packageName = "neo-async"; + version = "2.6.1"; + src = fetchurl { + url = "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz"; + sha512 = "iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw=="; + }; + }; + "next-tick-1.0.0" = { + name = "next-tick"; + packageName = "next-tick"; + version = "1.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz"; + sha1 = "ca86d1fe8828169b0120208e3dc8424b9db8342c"; + }; + }; + "nice-try-1.0.5" = { + name = "nice-try"; + packageName = "nice-try"; + version = "1.0.5"; + src = fetchurl { + url = "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz"; + sha512 = "1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ=="; + }; + }; + "node-forge-0.8.5" = { + name = "node-forge"; + packageName = "node-forge"; + version = "0.8.5"; + src = fetchurl { + url = "https://registry.npmjs.org/node-forge/-/node-forge-0.8.5.tgz"; + sha512 = "vFMQIWt+J/7FLNyKouZ9TazT74PRV3wgv9UT4cRjC8BffxFbKXkgIWR42URCPSnHm/QDz6BOlb2Q0U4+VQT67Q=="; + }; + }; + "node-forge-0.9.0" = { + name = "node-forge"; + packageName = "node-forge"; + version = "0.9.0"; + src = fetchurl { + url = "https://registry.npmjs.org/node-forge/-/node-forge-0.9.0.tgz"; + sha512 = "7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ=="; + }; + }; + "node-int64-0.4.0" = { + name = "node-int64"; + packageName = "node-int64"; + version = "0.4.0"; + src = fetchurl { + url = "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz"; + sha1 = "87a9065cdb355d3182d8f94ce11188b825c68a3b"; + }; + }; + "node-jose-1.1.3" = { + name = "node-jose"; + packageName = "node-jose"; + version = "1.1.3"; + src = fetchurl { + url = "https://registry.npmjs.org/node-jose/-/node-jose-1.1.3.tgz"; + sha512 = "kupfi4uGWhRjnOmtie2T64cLge5a1TZyalEa8uWWWBgtKBcu41A4IGKpI9twZAxRnmviamEUQRK7LSyfFb2w8A=="; + }; + }; + "node-libs-browser-2.2.1" = { + name = "node-libs-browser"; + packageName = "node-libs-browser"; + version = "2.2.1"; + src = fetchurl { + url = "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz"; + sha512 = "h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q=="; + }; + }; + "node-modules-regexp-1.0.0" = { + name = "node-modules-regexp"; + packageName = "node-modules-regexp"; + version = "1.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz"; + sha1 = "8d9dbe28964a4ac5712e9131642107c71e90ec40"; + }; + }; + "node-notifier-5.4.3" = { + name = "node-notifier"; + packageName = "node-notifier"; + version = "5.4.3"; + src = fetchurl { + url = "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.3.tgz"; + sha512 = "M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q=="; + }; + }; + "nopt-4.0.3" = { + name = "nopt"; + packageName = "nopt"; + version = "4.0.3"; + src = fetchurl { + url = "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz"; + sha512 = "CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg=="; + }; + }; + "normalize-package-data-2.5.0" = { + name = "normalize-package-data"; + packageName = "normalize-package-data"; + version = "2.5.0"; + src = fetchurl { + url = "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz"; + sha512 = "/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA=="; + }; + }; + "normalize-path-2.1.1" = { + name = "normalize-path"; + packageName = "normalize-path"; + version = "2.1.1"; + src = fetchurl { + url = "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz"; + sha1 = "1ab28b556e198363a8c1a6f7e6fa20137fe6aed9"; + }; + }; + "normalize-path-3.0.0" = { + name = "normalize-path"; + packageName = "normalize-path"; + version = "3.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz"; + sha512 = "6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="; + }; + }; + "normalize-url-2.0.1" = { + name = "normalize-url"; + packageName = "normalize-url"; + version = "2.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz"; + sha512 = "D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw=="; + }; + }; + "npm-run-path-2.0.2" = { + name = "npm-run-path"; + packageName = "npm-run-path"; + version = "2.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz"; + sha1 = "35a9232dfa35d7067b4cb2ddf2357b1871536c5f"; + }; + }; + "number-is-nan-1.0.1" = { + name = "number-is-nan"; + packageName = "number-is-nan"; + version = "1.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz"; + sha1 = "097b602b53422a522c1afb8790318336941a011d"; + }; + }; + "nwsapi-2.2.0" = { + name = "nwsapi"; + packageName = "nwsapi"; + version = "2.2.0"; + src = fetchurl { + url = "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz"; + sha512 = "h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ=="; + }; + }; + "oauth-sign-0.9.0" = { + name = "oauth-sign"; + packageName = "oauth-sign"; + version = "0.9.0"; + src = fetchurl { + url = "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz"; + sha512 = "fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ=="; + }; + }; + "object-assign-4.1.1" = { + name = "object-assign"; + packageName = "object-assign"; + version = "4.1.1"; + src = fetchurl { + url = "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz"; + sha1 = "2109adc7965887cfc05cbbd442cac8bfbb360863"; + }; + }; + "object-copy-0.1.0" = { + name = "object-copy"; + packageName = "object-copy"; + version = "0.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz"; + sha1 = "7e7d858b781bd7c991a41ba975ed3812754e998c"; + }; + }; + "object-hash-1.3.1" = { + name = "object-hash"; + packageName = "object-hash"; + version = "1.3.1"; + src = fetchurl { + url = "https://registry.npmjs.org/object-hash/-/object-hash-1.3.1.tgz"; + sha512 = "OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA=="; + }; + }; + "object-inspect-1.7.0" = { + name = "object-inspect"; + packageName = "object-inspect"; + version = "1.7.0"; + src = fetchurl { + url = "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz"; + sha512 = "a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw=="; + }; + }; + "object-keys-1.1.1" = { + name = "object-keys"; + packageName = "object-keys"; + version = "1.1.1"; + src = fetchurl { + url = "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz"; + sha512 = "NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA=="; + }; + }; + "object-visit-1.0.1" = { + name = "object-visit"; + packageName = "object-visit"; + version = "1.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz"; + sha1 = "f79c4493af0c5377b59fe39d395e41042dd045bb"; + }; + }; + "object.assign-4.1.0" = { + name = "object.assign"; + packageName = "object.assign"; + version = "4.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz"; + sha512 = "exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w=="; + }; + }; + "object.getownpropertydescriptors-2.1.0" = { + name = "object.getownpropertydescriptors"; + packageName = "object.getownpropertydescriptors"; + version = "2.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz"; + sha512 = "Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg=="; + }; + }; + "object.pick-1.3.0" = { + name = "object.pick"; + packageName = "object.pick"; + version = "1.3.0"; + src = fetchurl { + url = "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz"; + sha1 = "87a10ac4c1694bd2e1cbf53591a66141fb5dd747"; + }; + }; + "obuf-1.1.2" = { + name = "obuf"; + packageName = "obuf"; + version = "1.1.2"; + src = fetchurl { + url = "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz"; + sha512 = "PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg=="; + }; + }; + "oidc-token-hash-3.0.2" = { + name = "oidc-token-hash"; + packageName = "oidc-token-hash"; + version = "3.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/oidc-token-hash/-/oidc-token-hash-3.0.2.tgz"; + sha512 = "dTzp80/y/da+um+i+sOucNqiPpwRL7M/xPwj7pH1TFA2/bqQ+OK2sJahSXbemEoLtPkHcFLyhLhLWZa9yW5+RA=="; + }; + }; + "on-finished-2.3.0" = { + name = "on-finished"; + packageName = "on-finished"; + version = "2.3.0"; + src = fetchurl { + url = "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz"; + sha1 = "20f1336481b083cd75337992a16971aa2d906947"; + }; + }; + "on-headers-1.0.2" = { + name = "on-headers"; + packageName = "on-headers"; + version = "1.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz"; + sha512 = "pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA=="; + }; + }; + "once-1.4.0" = { + name = "once"; + packageName = "once"; + version = "1.4.0"; + src = fetchurl { + url = "https://registry.npmjs.org/once/-/once-1.4.0.tgz"; + sha1 = "583b1aa775961d4b113ac17d9c50baef9dd76bd1"; + }; + }; + "onetime-2.0.1" = { + name = "onetime"; + packageName = "onetime"; + version = "2.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz"; + sha1 = "067428230fd67443b2794b22bba528b6867962d4"; + }; + }; + "only-0.0.2" = { + name = "only"; + packageName = "only"; + version = "0.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/only/-/only-0.0.2.tgz"; + sha1 = "2afde84d03e50b9a8edc444e30610a70295edfb4"; + }; + }; + "opener-1.5.1" = { + name = "opener"; + packageName = "opener"; + version = "1.5.1"; + src = fetchurl { + url = "https://registry.npmjs.org/opener/-/opener-1.5.1.tgz"; + sha512 = "goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA=="; + }; + }; + "openid-client-2.5.0" = { + name = "openid-client"; + packageName = "openid-client"; + version = "2.5.0"; + src = fetchurl { + url = "https://registry.npmjs.org/openid-client/-/openid-client-2.5.0.tgz"; + sha512 = "t3hFD7xEoW1U25RyBcRFaL19fGGs6hNVTysq9pgmiltH0IVUPzH/bQV9w24pM5Q7MunnGv2/5XjIru6BQcWdxg=="; + }; + }; + "opn-5.5.0" = { + name = "opn"; + packageName = "opn"; + version = "5.5.0"; + src = fetchurl { + url = "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz"; + sha512 = "PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA=="; + }; + }; + "optionator-0.8.3" = { + name = "optionator"; + packageName = "optionator"; + version = "0.8.3"; + src = fetchurl { + url = "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz"; + sha512 = "+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA=="; + }; + }; + "ora-3.4.0" = { + name = "ora"; + packageName = "ora"; + version = "3.4.0"; + src = fetchurl { + url = "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz"; + sha512 = "eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg=="; + }; + }; + "original-1.0.2" = { + name = "original"; + packageName = "original"; + version = "1.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/original/-/original-1.0.2.tgz"; + sha512 = "hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg=="; + }; + }; + "os-browserify-0.3.0" = { + name = "os-browserify"; + packageName = "os-browserify"; + version = "0.3.0"; + src = fetchurl { + url = "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz"; + sha1 = "854373c7f5c2315914fc9bfc6bd8238fdda1ec27"; + }; + }; + "os-homedir-1.0.2" = { + name = "os-homedir"; + packageName = "os-homedir"; + version = "1.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz"; + sha1 = "ffbc4988336e0e833de0c168c7ef152121aa7fb3"; + }; + }; + "os-locale-3.1.0" = { + name = "os-locale"; + packageName = "os-locale"; + version = "3.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz"; + sha512 = "Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q=="; + }; + }; + "os-tmpdir-1.0.2" = { + name = "os-tmpdir"; + packageName = "os-tmpdir"; + version = "1.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz"; + sha1 = "bbe67406c79aa85c5cfec766fe5734555dfa1274"; + }; + }; + "osenv-0.1.5" = { + name = "osenv"; + packageName = "osenv"; + version = "0.1.5"; + src = fetchurl { + url = "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz"; + sha512 = "0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g=="; + }; + }; + "p-any-1.1.0" = { + name = "p-any"; + packageName = "p-any"; + version = "1.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/p-any/-/p-any-1.1.0.tgz"; + sha512 = "Ef0tVa4CZ5pTAmKn+Cg3w8ABBXh+hHO1aV8281dKOoUHfX+3tjG2EaFcC+aZyagg9b4EYGsHEjz21DnEE8Og2g=="; + }; + }; + "p-cancelable-0.4.1" = { + name = "p-cancelable"; + packageName = "p-cancelable"; + version = "0.4.1"; + src = fetchurl { + url = "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz"; + sha512 = "HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ=="; + }; + }; + "p-defer-1.0.0" = { + name = "p-defer"; + packageName = "p-defer"; + version = "1.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz"; + sha1 = "9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c"; + }; + }; + "p-each-series-1.0.0" = { + name = "p-each-series"; + packageName = "p-each-series"; + version = "1.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/p-each-series/-/p-each-series-1.0.0.tgz"; + sha1 = "930f3d12dd1f50e7434457a22cd6f04ac6ad7f71"; + }; + }; + "p-finally-1.0.0" = { + name = "p-finally"; + packageName = "p-finally"; + version = "1.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz"; + sha1 = "3fbcfb15b899a44123b34b6dcc18b724336a2cae"; + }; + }; + "p-is-promise-1.1.0" = { + name = "p-is-promise"; + packageName = "p-is-promise"; + version = "1.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz"; + sha1 = "9c9456989e9f6588017b0434d56097675c3da05e"; + }; + }; + "p-is-promise-2.1.0" = { + name = "p-is-promise"; + packageName = "p-is-promise"; + version = "2.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz"; + sha512 = "Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg=="; + }; + }; + "p-limit-1.3.0" = { + name = "p-limit"; + packageName = "p-limit"; + version = "1.3.0"; + src = fetchurl { + url = "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz"; + sha512 = "vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q=="; + }; + }; + "p-limit-2.2.2" = { + name = "p-limit"; + packageName = "p-limit"; + version = "2.2.2"; + src = fetchurl { + url = "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz"; + sha512 = "WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ=="; + }; + }; + "p-locate-2.0.0" = { + name = "p-locate"; + packageName = "p-locate"; + version = "2.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz"; + sha1 = "20a0103b222a70c8fd39cc2e580680f3dde5ec43"; + }; + }; + "p-locate-3.0.0" = { + name = "p-locate"; + packageName = "p-locate"; + version = "3.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz"; + sha512 = "x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ=="; + }; + }; + "p-map-2.1.0" = { + name = "p-map"; + packageName = "p-map"; + version = "2.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz"; + sha512 = "y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw=="; + }; + }; + "p-reduce-1.0.0" = { + name = "p-reduce"; + packageName = "p-reduce"; + version = "1.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz"; + sha1 = "18c2b0dd936a4690a529f8231f58a0fdb6a47dfa"; + }; + }; + "p-retry-3.0.1" = { + name = "p-retry"; + packageName = "p-retry"; + version = "3.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz"; + sha512 = "XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w=="; + }; + }; + "p-some-2.0.1" = { + name = "p-some"; + packageName = "p-some"; + version = "2.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/p-some/-/p-some-2.0.1.tgz"; + sha1 = "65d87c8b154edbcf5221d167778b6d2e150f6f06"; + }; + }; + "p-timeout-2.0.1" = { + name = "p-timeout"; + packageName = "p-timeout"; + version = "2.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz"; + sha512 = "88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA=="; + }; + }; + "p-try-1.0.0" = { + name = "p-try"; + packageName = "p-try"; + version = "1.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz"; + sha1 = "cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3"; + }; + }; + "p-try-2.2.0" = { + name = "p-try"; + packageName = "p-try"; + version = "2.2.0"; + src = fetchurl { + url = "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz"; + sha512 = "R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="; + }; + }; + "pako-1.0.11" = { + name = "pako"; + packageName = "pako"; + version = "1.0.11"; + src = fetchurl { + url = "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz"; + sha512 = "4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw=="; + }; + }; + "parallel-transform-1.2.0" = { + name = "parallel-transform"; + packageName = "parallel-transform"; + version = "1.2.0"; + src = fetchurl { + url = "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz"; + sha512 = "P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg=="; + }; + }; + "parse-asn1-5.1.5" = { + name = "parse-asn1"; + packageName = "parse-asn1"; + version = "5.1.5"; + src = fetchurl { + url = "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz"; + sha512 = "jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ=="; + }; + }; + "parse-json-4.0.0" = { + name = "parse-json"; + packageName = "parse-json"; + version = "4.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz"; + sha1 = "be35f5425be1f7f6c747184f98a788cb99477ee0"; + }; + }; + "parse-passwd-1.0.0" = { + name = "parse-passwd"; + packageName = "parse-passwd"; + version = "1.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz"; + sha1 = "6d5b934a456993b23d37f40a382d6f1666a8e5c6"; + }; + }; + "parse5-4.0.0" = { + name = "parse5"; + packageName = "parse5"; + version = "4.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz"; + sha512 = "VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA=="; + }; + }; + "parseurl-1.3.3" = { + name = "parseurl"; + packageName = "parseurl"; + version = "1.3.3"; + src = fetchurl { + url = "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz"; + sha512 = "CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="; + }; + }; + "pascalcase-0.1.1" = { + name = "pascalcase"; + packageName = "pascalcase"; + version = "0.1.1"; + src = fetchurl { + url = "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz"; + sha1 = "b363e55e8006ca6fe21784d2db22bd15d7917f14"; + }; + }; + "path-browserify-0.0.1" = { + name = "path-browserify"; + packageName = "path-browserify"; + version = "0.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz"; + sha512 = "BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ=="; + }; + }; + "path-dirname-1.0.2" = { + name = "path-dirname"; + packageName = "path-dirname"; + version = "1.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz"; + sha1 = "cc33d24d525e099a5388c0336c6e32b9160609e0"; + }; + }; + "path-exists-3.0.0" = { + name = "path-exists"; + packageName = "path-exists"; + version = "3.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz"; + sha1 = "ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"; + }; + }; + "path-is-absolute-1.0.1" = { + name = "path-is-absolute"; + packageName = "path-is-absolute"; + version = "1.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz"; + sha1 = "174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"; + }; + }; + "path-is-inside-1.0.2" = { + name = "path-is-inside"; + packageName = "path-is-inside"; + version = "1.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz"; + sha1 = "365417dede44430d1c11af61027facf074bdfc53"; + }; + }; + "path-key-2.0.1" = { + name = "path-key"; + packageName = "path-key"; + version = "2.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz"; + sha1 = "411cadb574c5a140d3a4b1910d40d80cc9f40b40"; + }; + }; + "path-parse-1.0.6" = { + name = "path-parse"; + packageName = "path-parse"; + version = "1.0.6"; + src = fetchurl { + url = "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz"; + sha512 = "GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw=="; + }; + }; + "path-to-regexp-0.1.7" = { + name = "path-to-regexp"; + packageName = "path-to-regexp"; + version = "0.1.7"; + src = fetchurl { + url = "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz"; + sha1 = "df604178005f522f15eb4490e7247a1bfaa67f8c"; + }; + }; + "path-to-regexp-1.8.0" = { + name = "path-to-regexp"; + packageName = "path-to-regexp"; + version = "1.8.0"; + src = fetchurl { + url = "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz"; + sha512 = "n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA=="; + }; + }; + "path-type-3.0.0" = { + name = "path-type"; + packageName = "path-type"; + version = "3.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz"; + sha512 = "T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg=="; + }; + }; + "pbkdf2-3.0.17" = { + name = "pbkdf2"; + packageName = "pbkdf2"; + version = "3.0.17"; + src = fetchurl { + url = "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz"; + sha512 = "U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA=="; + }; + }; + "performance-now-2.1.0" = { + name = "performance-now"; + packageName = "performance-now"; + version = "2.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz"; + sha1 = "6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"; + }; + }; + "pify-2.3.0" = { + name = "pify"; + packageName = "pify"; + version = "2.3.0"; + src = fetchurl { + url = "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz"; + sha1 = "ed141a6ac043a849ea588498e7dca8b15330e90c"; + }; + }; + "pify-3.0.0" = { + name = "pify"; + packageName = "pify"; + version = "3.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz"; + sha1 = "e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176"; + }; + }; + "pify-4.0.1" = { + name = "pify"; + packageName = "pify"; + version = "4.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz"; + sha512 = "uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g=="; + }; + }; + "pinkie-2.0.4" = { + name = "pinkie"; + packageName = "pinkie"; + version = "2.0.4"; + src = fetchurl { + url = "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz"; + sha1 = "72556b80cfa0d48a974e80e77248e80ed4f7f870"; + }; + }; + "pinkie-promise-2.0.1" = { + name = "pinkie-promise"; + packageName = "pinkie-promise"; + version = "2.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz"; + sha1 = "2135d6dfa7a358c069ac9b178776288228450ffa"; + }; + }; + "pirates-4.0.1" = { + name = "pirates"; + packageName = "pirates"; + version = "4.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz"; + sha512 = "WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA=="; + }; + }; + "pkg-dir-2.0.0" = { + name = "pkg-dir"; + packageName = "pkg-dir"; + version = "2.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz"; + sha1 = "f6d5d1109e19d63edf428e0bd57e12777615334b"; + }; + }; + "pkg-dir-3.0.0" = { + name = "pkg-dir"; + packageName = "pkg-dir"; + version = "3.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz"; + sha512 = "/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw=="; + }; + }; + "pn-1.1.0" = { + name = "pn"; + packageName = "pn"; + version = "1.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz"; + sha512 = "2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA=="; + }; + }; + "portfinder-1.0.25" = { + name = "portfinder"; + packageName = "portfinder"; + version = "1.0.25"; + src = fetchurl { + url = "https://registry.npmjs.org/portfinder/-/portfinder-1.0.25.tgz"; + sha512 = "6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg=="; + }; + }; + "posix-character-classes-0.1.1" = { + name = "posix-character-classes"; + packageName = "posix-character-classes"; + version = "0.1.1"; + src = fetchurl { + url = "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz"; + sha1 = "01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"; + }; + }; + "prelude-ls-1.1.2" = { + name = "prelude-ls"; + packageName = "prelude-ls"; + version = "1.1.2"; + src = fetchurl { + url = "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz"; + sha1 = "21932a549f5e52ffd9a827f570e04be62a97da54"; + }; + }; + "prepend-http-2.0.0" = { + name = "prepend-http"; + packageName = "prepend-http"; + version = "2.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz"; + sha1 = "e92434bfa5ea8c19f41cdfd401d741a3c819d897"; + }; + }; + "prettier-1.19.1" = { + name = "prettier"; + packageName = "prettier"; + version = "1.19.1"; + src = fetchurl { + url = "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz"; + sha512 = "s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew=="; + }; + }; + "pretty-2.0.0" = { + name = "pretty"; + packageName = "pretty"; + version = "2.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/pretty/-/pretty-2.0.0.tgz"; + sha1 = "adbc7960b7bbfe289a557dc5f737619a220d06a5"; + }; + }; + "pretty-format-24.9.0" = { + name = "pretty-format"; + packageName = "pretty-format"; + version = "24.9.0"; + src = fetchurl { + url = "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz"; + sha512 = "00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA=="; + }; + }; + "private-0.1.8" = { + name = "private"; + packageName = "private"; + version = "0.1.8"; + src = fetchurl { + url = "https://registry.npmjs.org/private/-/private-0.1.8.tgz"; + sha512 = "VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg=="; + }; + }; + "process-0.11.10" = { + name = "process"; + packageName = "process"; + version = "0.11.10"; + src = fetchurl { + url = "https://registry.npmjs.org/process/-/process-0.11.10.tgz"; + sha1 = "7332300e840161bda3e69a1d1d91a7d4bc16f182"; + }; + }; + "process-nextick-args-2.0.1" = { + name = "process-nextick-args"; + packageName = "process-nextick-args"; + version = "2.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz"; + sha512 = "3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="; + }; + }; + "promise-7.3.1" = { + name = "promise"; + packageName = "promise"; + version = "7.3.1"; + src = fetchurl { + url = "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz"; + sha512 = "nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg=="; + }; + }; + "promise-inflight-1.0.1" = { + name = "promise-inflight"; + packageName = "promise-inflight"; + version = "1.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz"; + sha1 = "98472870bf228132fcbdd868129bad12c3c029e3"; + }; + }; + "prompts-2.3.1" = { + name = "prompts"; + packageName = "prompts"; + version = "2.3.1"; + src = fetchurl { + url = "https://registry.npmjs.org/prompts/-/prompts-2.3.1.tgz"; + sha512 = "qIP2lQyCwYbdzcqHIUi2HAxiWixhoM9OdLCWf8txXsapC/X9YdsCoeyRIXE/GP+Q0J37Q7+XN/MFqbUa7IzXNA=="; + }; + }; + "proto-list-1.2.4" = { + name = "proto-list"; + packageName = "proto-list"; + version = "1.2.4"; + src = fetchurl { + url = "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz"; + sha1 = "212d5bfe1318306a420f6402b8e26ff39647a849"; + }; + }; + "proxy-addr-2.0.6" = { + name = "proxy-addr"; + packageName = "proxy-addr"; + version = "2.0.6"; + src = fetchurl { + url = "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz"; + sha512 = "dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw=="; + }; + }; + "prr-1.0.1" = { + name = "prr"; + packageName = "prr"; + version = "1.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz"; + sha1 = "d3fc114ba06995a45ec6893f484ceb1d78f5f476"; + }; + }; + "pseudomap-1.0.2" = { + name = "pseudomap"; + packageName = "pseudomap"; + version = "1.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz"; + sha1 = "f052a28da70e618917ef0a8ac34c1ae5a68286b3"; + }; + }; + "psl-1.7.0" = { + name = "psl"; + packageName = "psl"; + version = "1.7.0"; + src = fetchurl { + url = "https://registry.npmjs.org/psl/-/psl-1.7.0.tgz"; + sha512 = "5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ=="; + }; + }; + "public-encrypt-4.0.3" = { + name = "public-encrypt"; + packageName = "public-encrypt"; + version = "4.0.3"; + src = fetchurl { + url = "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz"; + sha512 = "zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q=="; + }; + }; + "pug-2.0.4" = { + name = "pug"; + packageName = "pug"; + version = "2.0.4"; + src = fetchurl { + url = "https://registry.npmjs.org/pug/-/pug-2.0.4.tgz"; + sha512 = "XhoaDlvi6NIzL49nu094R2NA6P37ijtgMDuWE+ofekDChvfKnzFal60bhSdiy8y2PBO6fmz3oMEIcfpBVRUdvw=="; + }; + }; + "pug-attrs-2.0.4" = { + name = "pug-attrs"; + packageName = "pug-attrs"; + version = "2.0.4"; + src = fetchurl { + url = "https://registry.npmjs.org/pug-attrs/-/pug-attrs-2.0.4.tgz"; + sha512 = "TaZ4Z2TWUPDJcV3wjU3RtUXMrd3kM4Wzjbe3EWnSsZPsJ3LDI0F3yCnf2/W7PPFF+edUFQ0HgDL1IoxSz5K8EQ=="; + }; + }; + "pug-code-gen-2.0.2" = { + name = "pug-code-gen"; + packageName = "pug-code-gen"; + version = "2.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-2.0.2.tgz"; + sha512 = "kROFWv/AHx/9CRgoGJeRSm+4mLWchbgpRzTEn8XCiwwOy6Vh0gAClS8Vh5TEJ9DBjaP8wCjS3J6HKsEsYdvaCw=="; + }; + }; + "pug-error-1.3.3" = { + name = "pug-error"; + packageName = "pug-error"; + version = "1.3.3"; + src = fetchurl { + url = "https://registry.npmjs.org/pug-error/-/pug-error-1.3.3.tgz"; + sha512 = "qE3YhESP2mRAWMFJgKdtT5D7ckThRScXRwkfo+Erqga7dyJdY3ZquspprMCj/9sJ2ijm5hXFWQE/A3l4poMWiQ=="; + }; + }; + "pug-filters-3.1.1" = { + name = "pug-filters"; + packageName = "pug-filters"; + version = "3.1.1"; + src = fetchurl { + url = "https://registry.npmjs.org/pug-filters/-/pug-filters-3.1.1.tgz"; + sha512 = "lFfjNyGEyVWC4BwX0WyvkoWLapI5xHSM3xZJFUhx4JM4XyyRdO8Aucc6pCygnqV2uSgJFaJWW3Ft1wCWSoQkQg=="; + }; + }; + "pug-lexer-4.1.0" = { + name = "pug-lexer"; + packageName = "pug-lexer"; + version = "4.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/pug-lexer/-/pug-lexer-4.1.0.tgz"; + sha512 = "i55yzEBtjm0mlplW4LoANq7k3S8gDdfC6+LThGEvsK4FuobcKfDAwt6V4jKPH9RtiE3a2Akfg5UpafZ1OksaPA=="; + }; + }; + "pug-linker-3.0.6" = { + name = "pug-linker"; + packageName = "pug-linker"; + version = "3.0.6"; + src = fetchurl { + url = "https://registry.npmjs.org/pug-linker/-/pug-linker-3.0.6.tgz"; + sha512 = "bagfuHttfQOpANGy1Y6NJ+0mNb7dD2MswFG2ZKj22s8g0wVsojpRlqveEQHmgXXcfROB2RT6oqbPYr9EN2ZWzg=="; + }; + }; + "pug-load-2.0.12" = { + name = "pug-load"; + packageName = "pug-load"; + version = "2.0.12"; + src = fetchurl { + url = "https://registry.npmjs.org/pug-load/-/pug-load-2.0.12.tgz"; + sha512 = "UqpgGpyyXRYgJs/X60sE6SIf8UBsmcHYKNaOccyVLEuT6OPBIMo6xMPhoJnqtB3Q3BbO4Z3Bjz5qDsUWh4rXsg=="; + }; + }; + "pug-parser-5.0.1" = { + name = "pug-parser"; + packageName = "pug-parser"; + version = "5.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/pug-parser/-/pug-parser-5.0.1.tgz"; + sha512 = "nGHqK+w07p5/PsPIyzkTQfzlYfuqoiGjaoqHv1LjOv2ZLXmGX1O+4Vcvps+P4LhxZ3drYSljjq4b+Naid126wA=="; + }; + }; + "pug-runtime-2.0.5" = { + name = "pug-runtime"; + packageName = "pug-runtime"; + version = "2.0.5"; + src = fetchurl { + url = "https://registry.npmjs.org/pug-runtime/-/pug-runtime-2.0.5.tgz"; + sha512 = "P+rXKn9un4fQY77wtpcuFyvFaBww7/91f3jHa154qU26qFAnOe6SW1CbIDcxiG5lLK9HazYrMCCuDvNgDQNptw=="; + }; + }; + "pug-strip-comments-1.0.4" = { + name = "pug-strip-comments"; + packageName = "pug-strip-comments"; + version = "1.0.4"; + src = fetchurl { + url = "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-1.0.4.tgz"; + sha512 = "i5j/9CS4yFhSxHp5iKPHwigaig/VV9g+FgReLJWWHEHbvKsbqL0oP/K5ubuLco6Wu3Kan5p7u7qk8A4oLLh6vw=="; + }; + }; + "pug-walk-1.1.8" = { + name = "pug-walk"; + packageName = "pug-walk"; + version = "1.1.8"; + src = fetchurl { + url = "https://registry.npmjs.org/pug-walk/-/pug-walk-1.1.8.tgz"; + sha512 = "GMu3M5nUL3fju4/egXwZO0XLi6fW/K3T3VTgFQ14GxNi8btlxgT5qZL//JwZFm/2Fa64J/PNS8AZeys3wiMkVA=="; + }; + }; + "pump-2.0.1" = { + name = "pump"; + packageName = "pump"; + version = "2.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz"; + sha512 = "ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA=="; + }; + }; + "pump-3.0.0" = { + name = "pump"; + packageName = "pump"; + version = "3.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz"; + sha512 = "LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww=="; + }; + }; + "pumpify-1.5.1" = { + name = "pumpify"; + packageName = "pumpify"; + version = "1.5.1"; + src = fetchurl { + url = "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz"; + sha512 = "oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ=="; + }; + }; + "punycode-1.3.2" = { + name = "punycode"; + packageName = "punycode"; + version = "1.3.2"; + src = fetchurl { + url = "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz"; + sha1 = "9653a036fb7c1ee42342f2325cceefea3926c48d"; + }; + }; + "punycode-1.4.1" = { + name = "punycode"; + packageName = "punycode"; + version = "1.4.1"; + src = fetchurl { + url = "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz"; + sha1 = "c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"; + }; + }; + "punycode-2.1.1" = { + name = "punycode"; + packageName = "punycode"; + version = "2.1.1"; + src = fetchurl { + url = "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz"; + sha512 = "XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="; + }; + }; + "qs-6.5.2" = { + name = "qs"; + packageName = "qs"; + version = "6.5.2"; + src = fetchurl { + url = "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz"; + sha512 = "N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA=="; + }; + }; + "qs-6.7.0" = { + name = "qs"; + packageName = "qs"; + version = "6.7.0"; + src = fetchurl { + url = "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz"; + sha512 = "VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ=="; + }; + }; + "query-string-5.1.1" = { + name = "query-string"; + packageName = "query-string"; + version = "5.1.1"; + src = fetchurl { + url = "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz"; + sha512 = "gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw=="; + }; + }; + "querystring-0.2.0" = { + name = "querystring"; + packageName = "querystring"; + version = "0.2.0"; + src = fetchurl { + url = "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz"; + sha1 = "b209849203bb25df820da756e747005878521620"; + }; + }; + "querystring-es3-0.2.1" = { + name = "querystring-es3"; + packageName = "querystring-es3"; + version = "0.2.1"; + src = fetchurl { + url = "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz"; + sha1 = "9ec61f79049875707d69414596fd907a4d711e73"; + }; + }; + "querystringify-2.1.1" = { + name = "querystringify"; + packageName = "querystringify"; + version = "2.1.1"; + src = fetchurl { + url = "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz"; + sha512 = "w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA=="; + }; + }; + "randombytes-2.1.0" = { + name = "randombytes"; + packageName = "randombytes"; + version = "2.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz"; + sha512 = "vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ=="; + }; + }; + "randomfill-1.0.4" = { + name = "randomfill"; + packageName = "randomfill"; + version = "1.0.4"; + src = fetchurl { + url = "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz"; + sha512 = "87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw=="; + }; + }; + "range-parser-1.2.1" = { + name = "range-parser"; + packageName = "range-parser"; + version = "1.2.1"; + src = fetchurl { + url = "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz"; + sha512 = "Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="; + }; + }; + "raw-body-2.4.0" = { + name = "raw-body"; + packageName = "raw-body"; + version = "2.4.0"; + src = fetchurl { + url = "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz"; + sha512 = "4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q=="; + }; + }; + "raw-body-2.4.1" = { + name = "raw-body"; + packageName = "raw-body"; + version = "2.4.1"; + src = fetchurl { + url = "https://registry.npmjs.org/raw-body/-/raw-body-2.4.1.tgz"; + sha512 = "9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA=="; + }; + }; + "react-is-16.13.0" = { + name = "react-is"; + packageName = "react-is"; + version = "16.13.0"; + src = fetchurl { + url = "https://registry.npmjs.org/react-is/-/react-is-16.13.0.tgz"; + sha512 = "GFMtL0vHkiBv9HluwNZTggSn/sCyEt9n02aM0dSAjGGyqyNlAyftYm4phPxdvCigG15JreC5biwxCgTAJZ7yAA=="; + }; + }; + "read-pkg-3.0.0" = { + name = "read-pkg"; + packageName = "read-pkg"; + version = "3.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz"; + sha1 = "9cbc686978fee65d16c00e2b19c237fcf6e38389"; + }; + }; + "read-pkg-up-4.0.0" = { + name = "read-pkg-up"; + packageName = "read-pkg-up"; + version = "4.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz"; + sha512 = "6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA=="; + }; + }; + "readable-stream-2.3.7" = { + name = "readable-stream"; + packageName = "readable-stream"; + version = "2.3.7"; + src = fetchurl { + url = "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz"; + sha512 = "Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw=="; + }; + }; + "readable-stream-3.6.0" = { + name = "readable-stream"; + packageName = "readable-stream"; + version = "3.6.0"; + src = fetchurl { + url = "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz"; + sha512 = "BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA=="; + }; + }; + "readdirp-2.2.1" = { + name = "readdirp"; + packageName = "readdirp"; + version = "2.2.1"; + src = fetchurl { + url = "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz"; + sha512 = "1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ=="; + }; + }; + "realpath-native-1.1.0" = { + name = "realpath-native"; + packageName = "realpath-native"; + version = "1.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz"; + sha512 = "wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA=="; + }; + }; + "rechoir-0.6.2" = { + name = "rechoir"; + packageName = "rechoir"; + version = "0.6.2"; + src = fetchurl { + url = "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz"; + sha1 = "85204b54dba82d5742e28c96756ef43af50e3384"; + }; + }; + "regenerate-1.4.0" = { + name = "regenerate"; + packageName = "regenerate"; + version = "1.4.0"; + src = fetchurl { + url = "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz"; + sha512 = "1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg=="; + }; + }; + "regenerator-runtime-0.11.1" = { + name = "regenerator-runtime"; + packageName = "regenerator-runtime"; + version = "0.11.1"; + src = fetchurl { + url = "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz"; + sha512 = "MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg=="; + }; + }; + "regenerator-transform-0.10.1" = { + name = "regenerator-transform"; + packageName = "regenerator-transform"; + version = "0.10.1"; + src = fetchurl { + url = "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz"; + sha512 = "PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q=="; + }; + }; + "regex-not-1.0.2" = { + name = "regex-not"; + packageName = "regex-not"; + version = "1.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz"; + sha512 = "J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A=="; + }; + }; + "regexpu-core-2.0.0" = { + name = "regexpu-core"; + packageName = "regexpu-core"; + version = "2.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz"; + sha1 = "49d038837b8dcf8bfa5b9a42139938e6ea2ae240"; + }; + }; + "regjsgen-0.2.0" = { + name = "regjsgen"; + packageName = "regjsgen"; + version = "0.2.0"; + src = fetchurl { + url = "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz"; + sha1 = "6c016adeac554f75823fe37ac05b92d5a4edb1f7"; + }; + }; + "regjsparser-0.1.5" = { + name = "regjsparser"; + packageName = "regjsparser"; + version = "0.1.5"; + src = fetchurl { + url = "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz"; + sha1 = "7ee8f84dc6fa792d3fd0ae228d24bd949ead205c"; + }; + }; + "remove-trailing-separator-1.1.0" = { + name = "remove-trailing-separator"; + packageName = "remove-trailing-separator"; + version = "1.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz"; + sha1 = "c24bce2a283adad5bc3f58e0d48249b92379d8ef"; + }; + }; + "repeat-element-1.1.3" = { + name = "repeat-element"; + packageName = "repeat-element"; + version = "1.1.3"; + src = fetchurl { + url = "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz"; + sha512 = "ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g=="; + }; + }; + "repeat-string-1.6.1" = { + name = "repeat-string"; + packageName = "repeat-string"; + version = "1.6.1"; + src = fetchurl { + url = "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz"; + sha1 = "8dcae470e1c88abc2d600fff4a776286da75e637"; + }; + }; + "repeating-2.0.1" = { + name = "repeating"; + packageName = "repeating"; + version = "2.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz"; + sha1 = "5214c53a926d3552707527fbab415dbc08d06dda"; + }; + }; + "request-2.88.2" = { + name = "request"; + packageName = "request"; + version = "2.88.2"; + src = fetchurl { + url = "https://registry.npmjs.org/request/-/request-2.88.2.tgz"; + sha512 = "MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw=="; + }; + }; + "request-promise-core-1.1.3" = { + name = "request-promise-core"; + packageName = "request-promise-core"; + version = "1.1.3"; + src = fetchurl { + url = "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.3.tgz"; + sha512 = "QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ=="; + }; + }; + "request-promise-native-1.0.8" = { + name = "request-promise-native"; + packageName = "request-promise-native"; + version = "1.0.8"; + src = fetchurl { + url = "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.8.tgz"; + sha512 = "dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ=="; + }; + }; + "require-directory-2.1.1" = { + name = "require-directory"; + packageName = "require-directory"; + version = "2.1.1"; + src = fetchurl { + url = "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz"; + sha1 = "8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"; + }; + }; + "require-main-filename-1.0.1" = { + name = "require-main-filename"; + packageName = "require-main-filename"; + version = "1.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz"; + sha1 = "97f717b69d48784f5f526a6c5aa8ffdda055a4d1"; + }; + }; + "require-main-filename-2.0.0" = { + name = "require-main-filename"; + packageName = "require-main-filename"; + version = "2.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz"; + sha512 = "NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg=="; + }; + }; + "requires-port-1.0.0" = { + name = "requires-port"; + packageName = "requires-port"; + version = "1.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz"; + sha1 = "925d2601d39ac485e091cf0da5c6e694dc3dcaff"; + }; + }; + "resolve-1.1.7" = { + name = "resolve"; + packageName = "resolve"; + version = "1.1.7"; + src = fetchurl { + url = "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz"; + sha1 = "203114d82ad2c5ed9e8e0411b3932875e889e97b"; + }; + }; + "resolve-1.15.1" = { + name = "resolve"; + packageName = "resolve"; + version = "1.15.1"; + src = fetchurl { + url = "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz"; + sha512 = "84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w=="; + }; + }; + "resolve-cwd-2.0.0" = { + name = "resolve-cwd"; + packageName = "resolve-cwd"; + version = "2.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz"; + sha1 = "00a9f7387556e27038eae232caa372a6a59b665a"; + }; + }; + "resolve-dir-1.0.1" = { + name = "resolve-dir"; + packageName = "resolve-dir"; + version = "1.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz"; + sha1 = "79a40644c362be82f26effe739c9bb5382046f43"; + }; + }; + "resolve-from-3.0.0" = { + name = "resolve-from"; + packageName = "resolve-from"; + version = "3.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz"; + sha1 = "b22c7af7d9d6881bc8b6e653335eebcb0a188748"; + }; + }; + "resolve-path-1.4.0" = { + name = "resolve-path"; + packageName = "resolve-path"; + version = "1.4.0"; + src = fetchurl { + url = "https://registry.npmjs.org/resolve-path/-/resolve-path-1.4.0.tgz"; + sha1 = "c4bda9f5efb2fce65247873ab36bb4d834fe16f7"; + }; + }; + "resolve-url-0.2.1" = { + name = "resolve-url"; + packageName = "resolve-url"; + version = "0.2.1"; + src = fetchurl { + url = "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz"; + sha1 = "2c637fe77c893afd2a663fe21aa9080068e2052a"; + }; + }; + "responselike-1.0.2" = { + name = "responselike"; + packageName = "responselike"; + version = "1.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz"; + sha1 = "918720ef3b631c5642be068f15ade5a46f4ba1e7"; + }; + }; + "restore-cursor-2.0.0" = { + name = "restore-cursor"; + packageName = "restore-cursor"; + version = "2.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz"; + sha1 = "9f7ee287f82fd326d4fd162923d62129eee0dfaf"; + }; + }; + "ret-0.1.15" = { + name = "ret"; + packageName = "ret"; + version = "0.1.15"; + src = fetchurl { + url = "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz"; + sha512 = "TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg=="; + }; + }; + "retry-0.12.0" = { + name = "retry"; + packageName = "retry"; + version = "0.12.0"; + src = fetchurl { + url = "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz"; + sha1 = "1b42a6266a21f07421d1b0b54b7dc167b01c013b"; + }; + }; + "right-align-0.1.3" = { + name = "right-align"; + packageName = "right-align"; + version = "0.1.3"; + src = fetchurl { + url = "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz"; + sha1 = "61339b722fe6a3515689210d24e14c96148613ef"; + }; + }; + "rimraf-2.7.1" = { + name = "rimraf"; + packageName = "rimraf"; + version = "2.7.1"; + src = fetchurl { + url = "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz"; + sha512 = "uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w=="; + }; + }; + "ripemd160-2.0.2" = { + name = "ripemd160"; + packageName = "ripemd160"; + version = "2.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz"; + sha512 = "ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA=="; + }; + }; + "rsvp-4.8.5" = { + name = "rsvp"; + packageName = "rsvp"; + version = "4.8.5"; + src = fetchurl { + url = "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz"; + sha512 = "nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA=="; + }; + }; + "run-queue-1.0.3" = { + name = "run-queue"; + packageName = "run-queue"; + version = "1.0.3"; + src = fetchurl { + url = "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz"; + sha1 = "e848396f057d223f24386924618e25694161ec47"; + }; + }; + "rxjs-6.5.4" = { + name = "rxjs"; + packageName = "rxjs"; + version = "6.5.4"; + src = fetchurl { + url = "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz"; + sha512 = "naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q=="; + }; + }; + "safe-buffer-5.1.2" = { + name = "safe-buffer"; + packageName = "safe-buffer"; + version = "5.1.2"; + src = fetchurl { + url = "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz"; + sha512 = "Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="; + }; + }; + "safe-buffer-5.2.0" = { + name = "safe-buffer"; + packageName = "safe-buffer"; + version = "5.2.0"; + src = fetchurl { + url = "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz"; + sha512 = "fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg=="; + }; + }; + "safe-regex-1.1.0" = { + name = "safe-regex"; + packageName = "safe-regex"; + version = "1.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz"; + sha1 = "40a3669f3b077d1e943d44629e157dd48023bf2e"; + }; + }; + "safer-buffer-2.1.2" = { + name = "safer-buffer"; + packageName = "safer-buffer"; + version = "2.1.2"; + src = fetchurl { + url = "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz"; + sha512 = "YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="; + }; + }; + "sane-4.1.0" = { + name = "sane"; + packageName = "sane"; + version = "4.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz"; + sha512 = "hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA=="; + }; + }; + "sax-1.2.4" = { + name = "sax"; + packageName = "sax"; + version = "1.2.4"; + src = fetchurl { + url = "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz"; + sha512 = "NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="; + }; + }; + "schema-utils-1.0.0" = { + name = "schema-utils"; + packageName = "schema-utils"; + version = "1.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz"; + sha512 = "i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g=="; + }; + }; + "select-hose-2.0.0" = { + name = "select-hose"; + packageName = "select-hose"; + version = "2.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz"; + sha1 = "625d8658f865af43ec962bfc376a37359a4994ca"; + }; + }; + "selfsigned-1.10.7" = { + name = "selfsigned"; + packageName = "selfsigned"; + version = "1.10.7"; + src = fetchurl { + url = "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.7.tgz"; + sha512 = "8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA=="; + }; + }; + "semver-5.7.1" = { + name = "semver"; + packageName = "semver"; + version = "5.7.1"; + src = fetchurl { + url = "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz"; + sha512 = "sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="; + }; + }; + "semver-6.3.0" = { + name = "semver"; + packageName = "semver"; + version = "6.3.0"; + src = fetchurl { + url = "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz"; + sha512 = "b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="; + }; + }; + "send-0.17.1" = { + name = "send"; + packageName = "send"; + version = "0.17.1"; + src = fetchurl { + url = "https://registry.npmjs.org/send/-/send-0.17.1.tgz"; + sha512 = "BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg=="; + }; + }; + "serialize-javascript-1.9.1" = { + name = "serialize-javascript"; + packageName = "serialize-javascript"; + version = "1.9.1"; + src = fetchurl { + url = "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.9.1.tgz"; + sha512 = "0Vb/54WJ6k5v8sSWN09S0ora+Hnr+cX40r9F170nT+mSkaxltoE/7R3OrIdBSUv1OoiobH1QoWQbCnAO+e8J1A=="; + }; + }; + "serialize-javascript-2.1.2" = { + name = "serialize-javascript"; + packageName = "serialize-javascript"; + version = "2.1.2"; + src = fetchurl { + url = "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz"; + sha512 = "rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ=="; + }; + }; + "serve-index-1.9.1" = { + name = "serve-index"; + packageName = "serve-index"; + version = "1.9.1"; + src = fetchurl { + url = "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz"; + sha1 = "d3768d69b1e7d82e5ce050fff5b453bea12a9239"; + }; + }; + "serve-static-1.14.1" = { + name = "serve-static"; + packageName = "serve-static"; + version = "1.14.1"; + src = fetchurl { + url = "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz"; + sha512 = "JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg=="; + }; + }; + "set-blocking-2.0.0" = { + name = "set-blocking"; + packageName = "set-blocking"; + version = "2.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz"; + sha1 = "045f9782d011ae9a6803ddd382b24392b3d890f7"; + }; + }; + "set-value-2.0.1" = { + name = "set-value"; + packageName = "set-value"; + version = "2.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz"; + sha512 = "JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw=="; + }; + }; + "setimmediate-1.0.5" = { + name = "setimmediate"; + packageName = "setimmediate"; + version = "1.0.5"; + src = fetchurl { + url = "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz"; + sha1 = "290cbb232e306942d7d7ea9b83732ab7856f8285"; + }; + }; + "setprototypeof-1.1.0" = { + name = "setprototypeof"; + packageName = "setprototypeof"; + version = "1.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz"; + sha512 = "BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ=="; + }; + }; + "setprototypeof-1.1.1" = { + name = "setprototypeof"; + packageName = "setprototypeof"; + version = "1.1.1"; + src = fetchurl { + url = "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz"; + sha512 = "JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="; + }; + }; + "sha.js-2.4.11" = { + name = "sha.js"; + packageName = "sha.js"; + version = "2.4.11"; + src = fetchurl { + url = "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz"; + sha512 = "QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ=="; + }; + }; + "shebang-command-1.2.0" = { + name = "shebang-command"; + packageName = "shebang-command"; + version = "1.2.0"; + src = fetchurl { + url = "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz"; + sha1 = "44aac65b695b03398968c39f363fee5deafdf1ea"; + }; + }; + "shebang-regex-1.0.0" = { + name = "shebang-regex"; + packageName = "shebang-regex"; + version = "1.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz"; + sha1 = "da42f49740c0b42db2ca9728571cb190c98efea3"; + }; + }; + "shelljs-0.8.3" = { + name = "shelljs"; + packageName = "shelljs"; + version = "0.8.3"; + src = fetchurl { + url = "https://registry.npmjs.org/shelljs/-/shelljs-0.8.3.tgz"; + sha512 = "fc0BKlAWiLpwZljmOvAOTE/gXawtCoNrP5oaY7KIaQbbyHeQVg01pSEuEGvGh3HEdBU4baCD7wQBwADmM/7f7A=="; + }; + }; + "shellwords-0.1.1" = { + name = "shellwords"; + packageName = "shellwords"; + version = "0.1.1"; + src = fetchurl { + url = "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz"; + sha512 = "vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww=="; + }; + }; + "sigmund-1.0.1" = { + name = "sigmund"; + packageName = "sigmund"; + version = "1.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz"; + sha1 = "3ff21f198cad2175f9f3b781853fd94d0d19b590"; + }; + }; + "signal-exit-3.0.2" = { + name = "signal-exit"; + packageName = "signal-exit"; + version = "3.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz"; + sha1 = "b5fdc08f1287ea1178628e415e25132b73646c6d"; + }; + }; + "simple-git-1.96.0" = { + name = "simple-git"; + packageName = "simple-git"; + version = "1.96.0"; + src = fetchurl { + url = "https://registry.npmjs.org/simple-git/-/simple-git-1.96.0.tgz"; + sha512 = "+gXuzJFpGtK9zCa7rPMMNs8AF2weWMsB0Vlyym5VkFX2VGQ3VBzKhnxPN//PWrGuPFGQ/u0F1yL6rZoPhj/KPQ=="; + }; + }; + "sisteransi-1.0.4" = { + name = "sisteransi"; + packageName = "sisteransi"; + version = "1.0.4"; + src = fetchurl { + url = "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.4.tgz"; + sha512 = "/ekMoM4NJ59ivGSfKapeG+FWtrmWvA1p6FBZwXrqojw90vJu8lBmrTxCMuBCydKtkaUe2zt4PlxeTKpjwMbyig=="; + }; + }; + "slash-1.0.0" = { + name = "slash"; + packageName = "slash"; + version = "1.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz"; + sha1 = "c41f2f6c39fc16d1cd17ad4b5d896114ae470d55"; + }; + }; + "slash-2.0.0" = { + name = "slash"; + packageName = "slash"; + version = "2.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz"; + sha512 = "ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A=="; + }; + }; + "snapdragon-0.8.2" = { + name = "snapdragon"; + packageName = "snapdragon"; + version = "0.8.2"; + src = fetchurl { + url = "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz"; + sha512 = "FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg=="; + }; + }; + "snapdragon-node-2.1.1" = { + name = "snapdragon-node"; + packageName = "snapdragon-node"; + version = "2.1.1"; + src = fetchurl { + url = "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz"; + sha512 = "O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw=="; + }; + }; + "snapdragon-util-3.0.1" = { + name = "snapdragon-util"; + packageName = "snapdragon-util"; + version = "3.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz"; + sha512 = "mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ=="; + }; + }; + "sockjs-0.3.19" = { + name = "sockjs"; + packageName = "sockjs"; + version = "0.3.19"; + src = fetchurl { + url = "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz"; + sha512 = "V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw=="; + }; + }; + "sockjs-client-1.4.0" = { + name = "sockjs-client"; + packageName = "sockjs-client"; + version = "1.4.0"; + src = fetchurl { + url = "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.4.0.tgz"; + sha512 = "5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g=="; + }; + }; + "sort-keys-2.0.0" = { + name = "sort-keys"; + packageName = "sort-keys"; + version = "2.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz"; + sha1 = "658535584861ec97d730d6cf41822e1f56684128"; + }; + }; + "source-list-map-2.0.1" = { + name = "source-list-map"; + packageName = "source-list-map"; + version = "2.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz"; + sha512 = "qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw=="; + }; + }; + "source-map-0.5.7" = { + name = "source-map"; + packageName = "source-map"; + version = "0.5.7"; + src = fetchurl { + url = "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz"; + sha1 = "8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"; + }; + }; + "source-map-0.6.1" = { + name = "source-map"; + packageName = "source-map"; + version = "0.6.1"; + src = fetchurl { + url = "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz"; + sha512 = "UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="; + }; + }; + "source-map-resolve-0.5.3" = { + name = "source-map-resolve"; + packageName = "source-map-resolve"; + version = "0.5.3"; + src = fetchurl { + url = "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz"; + sha512 = "Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw=="; + }; + }; + "source-map-support-0.4.18" = { + name = "source-map-support"; + packageName = "source-map-support"; + version = "0.4.18"; + src = fetchurl { + url = "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz"; + sha512 = "try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA=="; + }; + }; + "source-map-support-0.5.16" = { + name = "source-map-support"; + packageName = "source-map-support"; + version = "0.5.16"; + src = fetchurl { + url = "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz"; + sha512 = "efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ=="; + }; + }; + "source-map-url-0.4.0" = { + name = "source-map-url"; + packageName = "source-map-url"; + version = "0.4.0"; + src = fetchurl { + url = "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz"; + sha1 = "3e935d7ddd73631b97659956d55128e87b5084a3"; + }; + }; + "spdx-correct-3.1.0" = { + name = "spdx-correct"; + packageName = "spdx-correct"; + version = "3.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz"; + sha512 = "lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q=="; + }; + }; + "spdx-exceptions-2.2.0" = { + name = "spdx-exceptions"; + packageName = "spdx-exceptions"; + version = "2.2.0"; + src = fetchurl { + url = "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz"; + sha512 = "2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA=="; + }; + }; + "spdx-expression-parse-3.0.0" = { + name = "spdx-expression-parse"; + packageName = "spdx-expression-parse"; + version = "3.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz"; + sha512 = "Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg=="; + }; + }; + "spdx-license-ids-3.0.5" = { + name = "spdx-license-ids"; + packageName = "spdx-license-ids"; + version = "3.0.5"; + src = fetchurl { + url = "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz"; + sha512 = "J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q=="; + }; + }; + "spdy-4.0.1" = { + name = "spdy"; + packageName = "spdy"; + version = "4.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/spdy/-/spdy-4.0.1.tgz"; + sha512 = "HeZS3PBdMA+sZSu0qwpCxl3DeALD5ASx8pAX0jZdKXSpPWbQ6SYGnlg3BBmYLx5LtiZrmkAZfErCm2oECBcioA=="; + }; + }; + "spdy-transport-3.0.0" = { + name = "spdy-transport"; + packageName = "spdy-transport"; + version = "3.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz"; + sha512 = "hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw=="; + }; + }; + "split-string-3.1.0" = { + name = "split-string"; + packageName = "split-string"; + version = "3.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz"; + sha512 = "NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw=="; + }; + }; + "sprintf-js-1.0.3" = { + name = "sprintf-js"; + packageName = "sprintf-js"; + version = "1.0.3"; + src = fetchurl { + url = "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz"; + sha1 = "04e6926f662895354f3dd015203633b857297e2c"; + }; + }; + "sshpk-1.16.1" = { + name = "sshpk"; + packageName = "sshpk"; + version = "1.16.1"; + src = fetchurl { + url = "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz"; + sha512 = "HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg=="; + }; + }; + "ssri-5.3.0" = { + name = "ssri"; + packageName = "ssri"; + version = "5.3.0"; + src = fetchurl { + url = "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz"; + sha512 = "XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ=="; + }; + }; + "ssri-6.0.1" = { + name = "ssri"; + packageName = "ssri"; + version = "6.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz"; + sha512 = "3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA=="; + }; + }; + "stack-utils-1.0.2" = { + name = "stack-utils"; + packageName = "stack-utils"; + version = "1.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.2.tgz"; + sha512 = "MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA=="; + }; + }; + "static-extend-0.1.2" = { + name = "static-extend"; + packageName = "static-extend"; + version = "0.1.2"; + src = fetchurl { + url = "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz"; + sha1 = "60809c39cbff55337226fd5e0b520f341f1fb5c6"; + }; + }; + "statuses-1.5.0" = { + name = "statuses"; + packageName = "statuses"; + version = "1.5.0"; + src = fetchurl { + url = "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz"; + sha1 = "161c7dac177659fd9811f43771fa99381478628c"; + }; + }; + "stealthy-require-1.1.1" = { + name = "stealthy-require"; + packageName = "stealthy-require"; + version = "1.1.1"; + src = fetchurl { + url = "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz"; + sha1 = "35b09875b4ff49f26a777e509b3090a3226bf24b"; + }; + }; + "stream-browserify-2.0.2" = { + name = "stream-browserify"; + packageName = "stream-browserify"; + version = "2.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz"; + sha512 = "nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg=="; + }; + }; + "stream-each-1.2.3" = { + name = "stream-each"; + packageName = "stream-each"; + version = "1.2.3"; + src = fetchurl { + url = "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz"; + sha512 = "vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw=="; + }; + }; + "stream-http-2.8.3" = { + name = "stream-http"; + packageName = "stream-http"; + version = "2.8.3"; + src = fetchurl { + url = "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz"; + sha512 = "+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw=="; + }; + }; + "stream-shift-1.0.1" = { + name = "stream-shift"; + packageName = "stream-shift"; + version = "1.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz"; + sha512 = "AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ=="; + }; + }; + "strict-uri-encode-1.1.0" = { + name = "strict-uri-encode"; + packageName = "strict-uri-encode"; + version = "1.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz"; + sha1 = "279b225df1d582b1f54e65addd4352e18faa0713"; + }; + }; + "string-length-2.0.0" = { + name = "string-length"; + packageName = "string-length"; + version = "2.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz"; + sha1 = "d40dbb686a3ace960c1cffca562bf2c45f8363ed"; + }; + }; + "string-width-1.0.2" = { + name = "string-width"; + packageName = "string-width"; + version = "1.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz"; + sha1 = "118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"; + }; + }; + "string-width-2.1.1" = { + name = "string-width"; + packageName = "string-width"; + version = "2.1.1"; + src = fetchurl { + url = "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz"; + sha512 = "nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw=="; + }; + }; + "string-width-3.1.0" = { + name = "string-width"; + packageName = "string-width"; + version = "3.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz"; + sha512 = "vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w=="; + }; + }; + "string.prototype.trimleft-2.1.1" = { + name = "string.prototype.trimleft"; + packageName = "string.prototype.trimleft"; + version = "2.1.1"; + src = fetchurl { + url = "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz"; + sha512 = "iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag=="; + }; + }; + "string.prototype.trimright-2.1.1" = { + name = "string.prototype.trimright"; + packageName = "string.prototype.trimright"; + version = "2.1.1"; + src = fetchurl { + url = "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz"; + sha512 = "qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g=="; + }; + }; + "string_decoder-1.1.1" = { + name = "string_decoder"; + packageName = "string_decoder"; + version = "1.1.1"; + src = fetchurl { + url = "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz"; + sha512 = "n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg=="; + }; + }; + "strip-ansi-3.0.1" = { + name = "strip-ansi"; + packageName = "strip-ansi"; + version = "3.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz"; + sha1 = "6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"; + }; + }; + "strip-ansi-4.0.0" = { + name = "strip-ansi"; + packageName = "strip-ansi"; + version = "4.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz"; + sha1 = "a8479022eb1ac368a871389b635262c505ee368f"; + }; + }; + "strip-ansi-5.2.0" = { + name = "strip-ansi"; + packageName = "strip-ansi"; + version = "5.2.0"; + src = fetchurl { + url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz"; + sha512 = "DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA=="; + }; + }; + "strip-bom-3.0.0" = { + name = "strip-bom"; + packageName = "strip-bom"; + version = "3.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz"; + sha1 = "2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"; + }; + }; + "strip-eof-1.0.0" = { + name = "strip-eof"; + packageName = "strip-eof"; + version = "1.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz"; + sha1 = "bb43ff5598a6eb05d89b59fcd129c983313606bf"; + }; + }; + "supports-color-2.0.0" = { + name = "supports-color"; + packageName = "supports-color"; + version = "2.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz"; + sha1 = "535d045ce6b6363fa40117084629995e9df324c7"; + }; + }; + "supports-color-5.5.0" = { + name = "supports-color"; + packageName = "supports-color"; + version = "5.5.0"; + src = fetchurl { + url = "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz"; + sha512 = "QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow=="; + }; + }; + "supports-color-6.1.0" = { + name = "supports-color"; + packageName = "supports-color"; + version = "6.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz"; + sha512 = "qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ=="; + }; + }; + "symbol-tree-3.2.4" = { + name = "symbol-tree"; + packageName = "symbol-tree"; + version = "3.2.4"; + src = fetchurl { + url = "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz"; + sha512 = "9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw=="; + }; + }; + "tapable-1.1.3" = { + name = "tapable"; + packageName = "tapable"; + version = "1.1.3"; + src = fetchurl { + url = "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz"; + sha512 = "4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA=="; + }; + }; + "terser-4.6.6" = { + name = "terser"; + packageName = "terser"; + version = "4.6.6"; + src = fetchurl { + url = "https://registry.npmjs.org/terser/-/terser-4.6.6.tgz"; + sha512 = "4lYPyeNmstjIIESr/ysHg2vUPRGf2tzF9z2yYwnowXVuVzLEamPN1Gfrz7f8I9uEPuHcbFlW4PLIAsJoxXyJ1g=="; + }; + }; + "terser-webpack-plugin-1.4.3" = { + name = "terser-webpack-plugin"; + packageName = "terser-webpack-plugin"; + version = "1.4.3"; + src = fetchurl { + url = "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz"; + sha512 = "QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA=="; + }; + }; + "test-exclude-5.2.3" = { + name = "test-exclude"; + packageName = "test-exclude"; + version = "5.2.3"; + src = fetchurl { + url = "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz"; + sha512 = "M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g=="; + }; + }; + "thenify-3.3.0" = { + name = "thenify"; + packageName = "thenify"; + version = "3.3.0"; + src = fetchurl { + url = "https://registry.npmjs.org/thenify/-/thenify-3.3.0.tgz"; + sha1 = "e69e38a1babe969b0108207978b9f62b88604839"; + }; + }; + "thenify-all-1.6.0" = { + name = "thenify-all"; + packageName = "thenify-all"; + version = "1.6.0"; + src = fetchurl { + url = "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz"; + sha1 = "1a1918d402d8fc3f98fbf234db0bcc8cc10e9726"; + }; + }; + "throat-4.1.0" = { + name = "throat"; + packageName = "throat"; + version = "4.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz"; + sha1 = "89037cbc92c56ab18926e6ba4cbb200e15672a6a"; + }; + }; + "through2-2.0.5" = { + name = "through2"; + packageName = "through2"; + version = "2.0.5"; + src = fetchurl { + url = "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz"; + sha512 = "/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ=="; + }; + }; + "thunky-1.1.0" = { + name = "thunky"; + packageName = "thunky"; + version = "1.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz"; + sha512 = "eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA=="; + }; + }; + "timed-out-4.0.1" = { + name = "timed-out"; + packageName = "timed-out"; + version = "4.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz"; + sha1 = "f32eacac5a175bea25d7fab565ab3ed8741ef56f"; + }; + }; + "timers-browserify-2.0.11" = { + name = "timers-browserify"; + packageName = "timers-browserify"; + version = "2.0.11"; + src = fetchurl { + url = "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz"; + sha512 = "60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ=="; + }; + }; + "tmpl-1.0.4" = { + name = "tmpl"; + packageName = "tmpl"; + version = "1.0.4"; + src = fetchurl { + url = "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz"; + sha1 = "23640dd7b42d00433911140820e5cf440e521dd1"; + }; + }; + "to-arraybuffer-1.0.1" = { + name = "to-arraybuffer"; + packageName = "to-arraybuffer"; + version = "1.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz"; + sha1 = "7d229b1fcc637e466ca081180836a7aabff83f43"; + }; + }; + "to-fast-properties-1.0.3" = { + name = "to-fast-properties"; + packageName = "to-fast-properties"; + version = "1.0.3"; + src = fetchurl { + url = "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz"; + sha1 = "b83571fa4d8c25b82e231b06e3a3055de4ca1a47"; + }; + }; + "to-fast-properties-2.0.0" = { + name = "to-fast-properties"; + packageName = "to-fast-properties"; + version = "2.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz"; + sha1 = "dc5e698cbd079265bc73e0377681a4e4e83f616e"; + }; + }; + "to-object-path-0.3.0" = { + name = "to-object-path"; + packageName = "to-object-path"; + version = "0.3.0"; + src = fetchurl { + url = "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz"; + sha1 = "297588b7b0e7e0ac08e04e672f85c1f4999e17af"; + }; + }; + "to-regex-3.0.2" = { + name = "to-regex"; + packageName = "to-regex"; + version = "3.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz"; + sha512 = "FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw=="; + }; + }; + "to-regex-range-2.1.1" = { + name = "to-regex-range"; + packageName = "to-regex-range"; + version = "2.1.1"; + src = fetchurl { + url = "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz"; + sha1 = "7c80c17b9dfebe599e27367e0d4dd5590141db38"; + }; + }; + "toidentifier-1.0.0" = { + name = "toidentifier"; + packageName = "toidentifier"; + version = "1.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz"; + sha512 = "yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw=="; + }; + }; + "token-stream-0.0.1" = { + name = "token-stream"; + packageName = "token-stream"; + version = "0.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/token-stream/-/token-stream-0.0.1.tgz"; + sha1 = "ceeefc717a76c4316f126d0b9dbaa55d7e7df01a"; + }; + }; + "tough-cookie-2.5.0" = { + name = "tough-cookie"; + packageName = "tough-cookie"; + version = "2.5.0"; + src = fetchurl { + url = "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz"; + sha512 = "nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g=="; + }; + }; + "tr46-1.0.1" = { + name = "tr46"; + packageName = "tr46"; + version = "1.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz"; + sha1 = "a8b13fd6bfd2489519674ccde55ba3693b706d09"; + }; + }; + "trim-right-1.0.1" = { + name = "trim-right"; + packageName = "trim-right"; + version = "1.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz"; + sha1 = "cb2e1203067e0c8de1f614094b9fe45704ea6003"; + }; + }; + "tryer-1.0.1" = { + name = "tryer"; + packageName = "tryer"; + version = "1.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz"; + sha512 = "c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA=="; + }; + }; + "ts-jest-24.3.0" = { + name = "ts-jest"; + packageName = "ts-jest"; + version = "24.3.0"; + src = fetchurl { + url = "https://registry.npmjs.org/ts-jest/-/ts-jest-24.3.0.tgz"; + sha512 = "Hb94C/+QRIgjVZlJyiWwouYUF+siNJHJHknyspaOcZ+OQAIdFG/UrdQVXw/0B8Z3No34xkUXZJpOTy9alOWdVQ=="; + }; + }; + "tslib-1.11.1" = { + name = "tslib"; + packageName = "tslib"; + version = "1.11.1"; + src = fetchurl { + url = "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz"; + sha512 = "aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA=="; + }; + }; + "tsscmp-1.0.6" = { + name = "tsscmp"; + packageName = "tsscmp"; + version = "1.0.6"; + src = fetchurl { + url = "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz"; + sha512 = "LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA=="; + }; + }; + "tty-browserify-0.0.0" = { + name = "tty-browserify"; + packageName = "tty-browserify"; + version = "0.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz"; + sha1 = "a157ba402da24e9bf957f9aa69d524eed42901a6"; + }; + }; + "tunnel-agent-0.6.0" = { + name = "tunnel-agent"; + packageName = "tunnel-agent"; + version = "0.6.0"; + src = fetchurl { + url = "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz"; + sha1 = "27a5dea06b36b04a0a9966774b290868f0fc40fd"; + }; + }; + "tweetnacl-0.14.5" = { + name = "tweetnacl"; + packageName = "tweetnacl"; + version = "0.14.5"; + src = fetchurl { + url = "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz"; + sha1 = "5ae68177f192d4456269d108afa93ff8743f4f64"; + }; + }; + "type-1.2.0" = { + name = "type"; + packageName = "type"; + version = "1.2.0"; + src = fetchurl { + url = "https://registry.npmjs.org/type/-/type-1.2.0.tgz"; + sha512 = "+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg=="; + }; + }; + "type-2.0.0" = { + name = "type"; + packageName = "type"; + version = "2.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/type/-/type-2.0.0.tgz"; + sha512 = "KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow=="; + }; + }; + "type-check-0.3.2" = { + name = "type-check"; + packageName = "type-check"; + version = "0.3.2"; + src = fetchurl { + url = "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz"; + sha1 = "5884cab512cf1d355e3fb784f30804b2b520db72"; + }; + }; + "type-is-1.6.18" = { + name = "type-is"; + packageName = "type-is"; + version = "1.6.18"; + src = fetchurl { + url = "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz"; + sha512 = "TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g=="; + }; + }; + "typedarray-0.0.6" = { + name = "typedarray"; + packageName = "typedarray"; + version = "0.0.6"; + src = fetchurl { + url = "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz"; + sha1 = "867ac74e3864187b1d3d47d996a78ec5c8830777"; + }; + }; + "typedarray-to-buffer-3.1.5" = { + name = "typedarray-to-buffer"; + packageName = "typedarray-to-buffer"; + version = "3.1.5"; + src = fetchurl { + url = "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz"; + sha512 = "zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q=="; + }; + }; + "typescript-3.8.3" = { + name = "typescript"; + packageName = "typescript"; + version = "3.8.3"; + src = fetchurl { + url = "https://registry.npmjs.org/typescript/-/typescript-3.8.3.tgz"; + sha512 = "MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w=="; + }; + }; + "typical-4.0.0" = { + name = "typical"; + packageName = "typical"; + version = "4.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz"; + sha512 = "VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw=="; + }; + }; + "uglify-js-2.8.29" = { + name = "uglify-js"; + packageName = "uglify-js"; + version = "2.8.29"; + src = fetchurl { + url = "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz"; + sha1 = "29c5733148057bb4e1f75df35b7a9cb72e6a59dd"; + }; + }; + "uglify-to-browserify-1.0.2" = { + name = "uglify-to-browserify"; + packageName = "uglify-to-browserify"; + version = "1.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz"; + sha1 = "6e0924d6bda6b5afe349e39a6d632850a0f882b7"; + }; + }; + "underscore-1.9.2" = { + name = "underscore"; + packageName = "underscore"; + version = "1.9.2"; + src = fetchurl { + url = "https://registry.npmjs.org/underscore/-/underscore-1.9.2.tgz"; + sha512 = "D39qtimx0c1fI3ya1Lnhk3E9nONswSKhnffBI0gME9C99fYOkNi04xs8K6pePLhvl1frbDemkaBQ5ikWllR2HQ=="; + }; + }; + "union-value-1.0.1" = { + name = "union-value"; + packageName = "union-value"; + version = "1.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz"; + sha512 = "tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg=="; + }; + }; + "unique-filename-1.1.1" = { + name = "unique-filename"; + packageName = "unique-filename"; + version = "1.1.1"; + src = fetchurl { + url = "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz"; + sha512 = "Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ=="; + }; + }; + "unique-slug-2.0.2" = { + name = "unique-slug"; + packageName = "unique-slug"; + version = "2.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz"; + sha512 = "zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w=="; + }; + }; + "unpipe-1.0.0" = { + name = "unpipe"; + packageName = "unpipe"; + version = "1.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz"; + sha1 = "b2bf4ee8514aae6165b4817829d21b2ef49904ec"; + }; + }; + "unset-value-1.0.0" = { + name = "unset-value"; + packageName = "unset-value"; + version = "1.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz"; + sha1 = "8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559"; + }; + }; + "upath-1.2.0" = { + name = "upath"; + packageName = "upath"; + version = "1.2.0"; + src = fetchurl { + url = "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz"; + sha512 = "aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg=="; + }; + }; + "uri-js-4.2.2" = { + name = "uri-js"; + packageName = "uri-js"; + version = "4.2.2"; + src = fetchurl { + url = "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz"; + sha512 = "KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ=="; + }; + }; + "urijs-1.19.2" = { + name = "urijs"; + packageName = "urijs"; + version = "1.19.2"; + src = fetchurl { + url = "https://registry.npmjs.org/urijs/-/urijs-1.19.2.tgz"; + sha512 = "s/UIq9ap4JPZ7H1EB5ULo/aOUbWqfDi7FKzMC2Nz+0Si8GiT1rIEaprt8hy3Vy2Ex2aJPpOQv4P4DuOZ+K1c6w=="; + }; + }; + "urix-0.1.0" = { + name = "urix"; + packageName = "urix"; + version = "0.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz"; + sha1 = "da937f7a62e21fec1fd18d49b35c2935067a6c72"; + }; + }; + "url-0.11.0" = { + name = "url"; + packageName = "url"; + version = "0.11.0"; + src = fetchurl { + url = "https://registry.npmjs.org/url/-/url-0.11.0.tgz"; + sha1 = "3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"; + }; + }; + "url-parse-1.4.7" = { + name = "url-parse"; + packageName = "url-parse"; + version = "1.4.7"; + src = fetchurl { + url = "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz"; + sha512 = "d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg=="; + }; + }; + "url-parse-lax-3.0.0" = { + name = "url-parse-lax"; + packageName = "url-parse-lax"; + version = "3.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz"; + sha1 = "16b5cafc07dbe3676c1b1999177823d6503acb0c"; + }; + }; + "url-to-options-1.0.1" = { + name = "url-to-options"; + packageName = "url-to-options"; + version = "1.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz"; + sha1 = "1505a03a289a48cbd7a434efbaeec5055f5633a9"; + }; + }; + "use-3.1.1" = { + name = "use"; + packageName = "use"; + version = "3.1.1"; + src = fetchurl { + url = "https://registry.npmjs.org/use/-/use-3.1.1.tgz"; + sha512 = "cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ=="; + }; + }; + "util-0.10.3" = { + name = "util"; + packageName = "util"; + version = "0.10.3"; + src = fetchurl { + url = "https://registry.npmjs.org/util/-/util-0.10.3.tgz"; + sha1 = "7afb1afe50805246489e3db7fe0ed379336ac0f9"; + }; + }; + "util-0.11.1" = { + name = "util"; + packageName = "util"; + version = "0.11.1"; + src = fetchurl { + url = "https://registry.npmjs.org/util/-/util-0.11.1.tgz"; + sha512 = "HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ=="; + }; + }; + "util-deprecate-1.0.2" = { + name = "util-deprecate"; + packageName = "util-deprecate"; + version = "1.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz"; + sha1 = "450d4dc9fa70de732762fbd2d4a28981419a0ccf"; + }; + }; + "util.promisify-1.0.1" = { + name = "util.promisify"; + packageName = "util.promisify"; + version = "1.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz"; + sha512 = "g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA=="; + }; + }; + "utils-merge-1.0.1" = { + name = "utils-merge"; + packageName = "utils-merge"; + version = "1.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz"; + sha1 = "9f95710f50a267947b2ccc124741c1028427e713"; + }; + }; + "uuid-3.4.0" = { + name = "uuid"; + packageName = "uuid"; + version = "3.4.0"; + src = fetchurl { + url = "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz"; + sha512 = "HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A=="; + }; + }; + "v8-compile-cache-2.0.3" = { + name = "v8-compile-cache"; + packageName = "v8-compile-cache"; + version = "2.0.3"; + src = fetchurl { + url = "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz"; + sha512 = "CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w=="; + }; + }; + "validate-npm-package-license-3.0.4" = { + name = "validate-npm-package-license"; + packageName = "validate-npm-package-license"; + version = "3.0.4"; + src = fetchurl { + url = "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz"; + sha512 = "DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew=="; + }; + }; + "vary-1.1.2" = { + name = "vary"; + packageName = "vary"; + version = "1.1.2"; + src = fetchurl { + url = "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz"; + sha1 = "2299f02c6ded30d4a5961b0b9f74524a18f634fc"; + }; + }; + "verror-1.10.0" = { + name = "verror"; + packageName = "verror"; + version = "1.10.0"; + src = fetchurl { + url = "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz"; + sha1 = "3a105ca17053af55d6e270c1f8288682e18da400"; + }; + }; + "vm-browserify-1.1.2" = { + name = "vm-browserify"; + packageName = "vm-browserify"; + version = "1.1.2"; + src = fetchurl { + url = "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz"; + sha512 = "2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ=="; + }; + }; + "void-elements-2.0.1" = { + name = "void-elements"; + packageName = "void-elements"; + version = "2.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz"; + sha1 = "c066afb582bb1cb4128d60ea92392e94d5e9dbec"; + }; + }; + "w3c-hr-time-1.0.2" = { + name = "w3c-hr-time"; + packageName = "w3c-hr-time"; + version = "1.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz"; + sha512 = "z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ=="; + }; + }; + "walker-1.0.7" = { + name = "walker"; + packageName = "walker"; + version = "1.0.7"; + src = fetchurl { + url = "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz"; + sha1 = "2f7f9b8fd10d677262b18a884e28d19618e028fb"; + }; + }; + "watchpack-1.6.0" = { + name = "watchpack"; + packageName = "watchpack"; + version = "1.6.0"; + src = fetchurl { + url = "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz"; + sha512 = "i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA=="; + }; + }; + "wbuf-1.7.3" = { + name = "wbuf"; + packageName = "wbuf"; + version = "1.7.3"; + src = fetchurl { + url = "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz"; + sha512 = "O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA=="; + }; + }; + "wcwidth-1.0.1" = { + name = "wcwidth"; + packageName = "wcwidth"; + version = "1.0.1"; + src = fetchurl { + url = "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz"; + sha1 = "f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8"; + }; + }; + "webidl-conversions-4.0.2" = { + name = "webidl-conversions"; + packageName = "webidl-conversions"; + version = "4.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz"; + sha512 = "YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg=="; + }; + }; + "webpack-4.42.0" = { + name = "webpack"; + packageName = "webpack"; + version = "4.42.0"; + src = fetchurl { + url = "https://registry.npmjs.org/webpack/-/webpack-4.42.0.tgz"; + sha512 = "EzJRHvwQyBiYrYqhyjW9AqM90dE4+s1/XtCfn7uWg6cS72zH+2VPFAlsnW0+W0cDi0XRjNKUMoJtpSi50+Ph6w=="; + }; + }; + "webpack-bundle-analyzer-3.6.1" = { + name = "webpack-bundle-analyzer"; + packageName = "webpack-bundle-analyzer"; + version = "3.6.1"; + src = fetchurl { + url = "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.6.1.tgz"; + sha512 = "Nfd8HDwfSx1xBwC+P8QMGvHAOITxNBSvu/J/mCJvOwv+G4VWkU7zir9SSenTtyCi0LnVtmsc7G5SZo1uV+bxRw=="; + }; + }; + "webpack-cli-3.3.11" = { + name = "webpack-cli"; + packageName = "webpack-cli"; + version = "3.3.11"; + src = fetchurl { + url = "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.11.tgz"; + sha512 = "dXlfuml7xvAFwYUPsrtQAA9e4DOe58gnzSxhgrO/ZM/gyXTBowrsYeubyN4mqGhYdpXMFNyQ6emjJS9M7OBd4g=="; + }; + }; + "webpack-dev-middleware-3.7.2" = { + name = "webpack-dev-middleware"; + packageName = "webpack-dev-middleware"; + version = "3.7.2"; + src = fetchurl { + url = "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz"; + sha512 = "1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw=="; + }; + }; + "webpack-dev-server-3.10.3" = { + name = "webpack-dev-server"; + packageName = "webpack-dev-server"; + version = "3.10.3"; + src = fetchurl { + url = "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.10.3.tgz"; + sha512 = "e4nWev8YzEVNdOMcNzNeCN947sWJNd43E5XvsJzbAL08kGc2frm1tQ32hTJslRS+H65LCb/AaUCYU7fjHCpDeQ=="; + }; + }; + "webpack-log-1.2.0" = { + name = "webpack-log"; + packageName = "webpack-log"; + version = "1.2.0"; + src = fetchurl { + url = "https://registry.npmjs.org/webpack-log/-/webpack-log-1.2.0.tgz"; + sha512 = "U9AnICnu50HXtiqiDxuli5gLB5PGBo7VvcHx36jRZHwK4vzOYLbImqT4lwWwoMHdQWwEKw736fCHEekokTEKHA=="; + }; + }; + "webpack-log-2.0.0" = { + name = "webpack-log"; + packageName = "webpack-log"; + version = "2.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz"; + sha512 = "cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg=="; + }; + }; + "webpack-sources-1.4.3" = { + name = "webpack-sources"; + packageName = "webpack-sources"; + version = "1.4.3"; + src = fetchurl { + url = "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz"; + sha512 = "lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ=="; + }; + }; + "websocket-1.0.31" = { + name = "websocket"; + packageName = "websocket"; + version = "1.0.31"; + src = fetchurl { + url = "https://registry.npmjs.org/websocket/-/websocket-1.0.31.tgz"; + sha512 = "VAouplvGKPiKFDTeCCO65vYHsyay8DqoBSlzIO3fayrfOgU94lQN5a1uWVnFrMLceTJw/+fQXR5PGbUVRaHshQ=="; + }; + }; + "websocket-driver-0.7.3" = { + name = "websocket-driver"; + packageName = "websocket-driver"; + version = "0.7.3"; + src = fetchurl { + url = "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.3.tgz"; + sha512 = "bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg=="; + }; + }; + "websocket-extensions-0.1.3" = { + name = "websocket-extensions"; + packageName = "websocket-extensions"; + version = "0.1.3"; + src = fetchurl { + url = "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz"; + sha512 = "nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg=="; + }; + }; + "whatwg-encoding-1.0.5" = { + name = "whatwg-encoding"; + packageName = "whatwg-encoding"; + version = "1.0.5"; + src = fetchurl { + url = "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz"; + sha512 = "b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw=="; + }; + }; + "whatwg-mimetype-2.3.0" = { + name = "whatwg-mimetype"; + packageName = "whatwg-mimetype"; + version = "2.3.0"; + src = fetchurl { + url = "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz"; + sha512 = "M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g=="; + }; + }; + "whatwg-url-6.5.0" = { + name = "whatwg-url"; + packageName = "whatwg-url"; + version = "6.5.0"; + src = fetchurl { + url = "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz"; + sha512 = "rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ=="; + }; + }; + "whatwg-url-7.1.0" = { + name = "whatwg-url"; + packageName = "whatwg-url"; + version = "7.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz"; + sha512 = "WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg=="; + }; + }; + "which-1.3.1" = { + name = "which"; + packageName = "which"; + version = "1.3.1"; + src = fetchurl { + url = "https://registry.npmjs.org/which/-/which-1.3.1.tgz"; + sha512 = "HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ=="; + }; + }; + "which-module-2.0.0" = { + name = "which-module"; + packageName = "which-module"; + version = "2.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz"; + sha1 = "d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"; + }; + }; + "window-size-0.1.0" = { + name = "window-size"; + packageName = "window-size"; + version = "0.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz"; + sha1 = "5438cd2ea93b202efa3a19fe8887aee7c94f9c9d"; + }; + }; + "with-5.1.1" = { + name = "with"; + packageName = "with"; + version = "5.1.1"; + src = fetchurl { + url = "https://registry.npmjs.org/with/-/with-5.1.1.tgz"; + sha1 = "fa4daa92daf32c4ea94ed453c81f04686b575dfe"; + }; + }; + "word-wrap-1.2.3" = { + name = "word-wrap"; + packageName = "word-wrap"; + version = "1.2.3"; + src = fetchurl { + url = "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz"; + sha512 = "Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ=="; + }; + }; + "wordwrap-0.0.2" = { + name = "wordwrap"; + packageName = "wordwrap"; + version = "0.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz"; + sha1 = "b79669bb42ecb409f83d583cad52ca17eaa1643f"; + }; + }; + "worker-farm-1.7.0" = { + name = "worker-farm"; + packageName = "worker-farm"; + version = "1.7.0"; + src = fetchurl { + url = "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz"; + sha512 = "rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw=="; + }; + }; + "wrap-ansi-2.1.0" = { + name = "wrap-ansi"; + packageName = "wrap-ansi"; + version = "2.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz"; + sha1 = "d8fc3d284dd05794fe84973caecdd1cf824fdd85"; + }; + }; + "wrap-ansi-5.1.0" = { + name = "wrap-ansi"; + packageName = "wrap-ansi"; + version = "5.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz"; + sha512 = "QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q=="; + }; + }; + "wrappy-1.0.2" = { + name = "wrappy"; + packageName = "wrappy"; + version = "1.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz"; + sha1 = "b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"; + }; + }; + "write-file-atomic-2.4.1" = { + name = "write-file-atomic"; + packageName = "write-file-atomic"; + version = "2.4.1"; + src = fetchurl { + url = "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.1.tgz"; + sha512 = "TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg=="; + }; + }; + "ws-5.2.2" = { + name = "ws"; + packageName = "ws"; + version = "5.2.2"; + src = fetchurl { + url = "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz"; + sha512 = "jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA=="; + }; + }; + "ws-6.2.1" = { + name = "ws"; + packageName = "ws"; + version = "6.2.1"; + src = fetchurl { + url = "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz"; + sha512 = "GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA=="; + }; + }; + "xml-name-validator-3.0.0" = { + name = "xml-name-validator"; + packageName = "xml-name-validator"; + version = "3.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz"; + sha512 = "A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw=="; + }; + }; + "xtend-4.0.2" = { + name = "xtend"; + packageName = "xtend"; + version = "4.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz"; + sha512 = "LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="; + }; + }; + "y18n-4.0.0" = { + name = "y18n"; + packageName = "y18n"; + version = "4.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz"; + sha512 = "r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w=="; + }; + }; + "yaeti-0.0.6" = { + name = "yaeti"; + packageName = "yaeti"; + version = "0.0.6"; + src = fetchurl { + url = "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz"; + sha1 = "f26f484d72684cf42bedfb76970aa1608fbf9577"; + }; + }; + "yallist-2.1.2" = { + name = "yallist"; + packageName = "yallist"; + version = "2.1.2"; + src = fetchurl { + url = "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz"; + sha1 = "1c11f9218f076089a47dd512f93c6699a6a81d52"; + }; + }; + "yallist-3.1.1" = { + name = "yallist"; + packageName = "yallist"; + version = "3.1.1"; + src = fetchurl { + url = "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz"; + sha512 = "a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="; + }; + }; + "yargs-12.0.5" = { + name = "yargs"; + packageName = "yargs"; + version = "12.0.5"; + src = fetchurl { + url = "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz"; + sha512 = "Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw=="; + }; + }; + "yargs-13.2.4" = { + name = "yargs"; + packageName = "yargs"; + version = "13.2.4"; + src = fetchurl { + url = "https://registry.npmjs.org/yargs/-/yargs-13.2.4.tgz"; + sha512 = "HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg=="; + }; + }; + "yargs-13.3.2" = { + name = "yargs"; + packageName = "yargs"; + version = "13.3.2"; + src = fetchurl { + url = "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz"; + sha512 = "AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw=="; + }; + }; + "yargs-3.10.0" = { + name = "yargs"; + packageName = "yargs"; + version = "3.10.0"; + src = fetchurl { + url = "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz"; + sha1 = "f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1"; + }; + }; + "yargs-parser-10.1.0" = { + name = "yargs-parser"; + packageName = "yargs-parser"; + version = "10.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz"; + sha512 = "VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ=="; + }; + }; + "yargs-parser-11.1.1" = { + name = "yargs-parser"; + packageName = "yargs-parser"; + version = "11.1.1"; + src = fetchurl { + url = "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz"; + sha512 = "C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ=="; + }; + }; + "yargs-parser-13.1.2" = { + name = "yargs-parser"; + packageName = "yargs-parser"; + version = "13.1.2"; + src = fetchurl { + url = "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz"; + sha512 = "3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg=="; + }; + }; + "ylru-1.2.1" = { + name = "ylru"; + packageName = "ylru"; + version = "1.2.1"; + src = fetchurl { + url = "https://registry.npmjs.org/ylru/-/ylru-1.2.1.tgz"; + sha512 = "faQrqNMzcPCHGVC2aaOINk13K+aaBDUPjGWl0teOXywElLjyVAB6Oe2jj62jHYtwsU49jXhScYbvPENK+6zAvQ=="; + }; + }; + }; +in +{ + "spacegun-git+https://github.com/dvallin/spacegun.git#v0.3.3" = nodeEnv.buildNodePackage { + name = "spacegun"; + packageName = "spacegun"; + version = "0.3.3"; + src = fetchgit { + url = "https://github.com/dvallin/spacegun.git"; + rev = "d32d2df34362f6744e8cff34c2d2bf6ce8b4662a"; + sha256 = "589bfc9e3e26af38989144e8551547cbeb5ffc9a0b668a7a4cb211a2ebf7a931"; + }; + dependencies = [ + sources."@babel/code-frame-7.8.3" + (sources."@babel/core-7.8.7" // { + dependencies = [ + sources."debug-4.1.1" + sources."json5-2.1.1" + sources."minimist-1.2.5" + sources."ms-2.1.2" + sources."source-map-0.5.7" + ]; + }) + (sources."@babel/generator-7.8.8" // { + dependencies = [ + sources."jsesc-2.5.2" + sources."source-map-0.5.7" + ]; + }) + sources."@babel/helper-function-name-7.8.3" + sources."@babel/helper-get-function-arity-7.8.3" + sources."@babel/helper-plugin-utils-7.8.3" + sources."@babel/helper-split-export-declaration-7.8.3" + sources."@babel/helpers-7.8.4" + (sources."@babel/highlight-7.8.3" // { + dependencies = [ + sources."js-tokens-4.0.0" + ]; + }) + sources."@babel/parser-7.8.8" + sources."@babel/plugin-syntax-object-rest-spread-7.8.3" + sources."@babel/template-7.8.6" + (sources."@babel/traverse-7.8.6" // { + dependencies = [ + sources."debug-4.1.1" + sources."globals-11.12.0" + sources."ms-2.1.2" + ]; + }) + (sources."@babel/types-7.8.7" // { + dependencies = [ + sources."to-fast-properties-2.0.0" + ]; + }) + (sources."@cnakazawa/watch-1.0.4" // { + dependencies = [ + sources."minimist-1.2.5" + ]; + }) + (sources."@jest/console-24.9.0" // { + dependencies = [ + sources."slash-2.0.0" + ]; + }) + (sources."@jest/core-24.9.0" // { + dependencies = [ + sources."slash-2.0.0" + ]; + }) + sources."@jest/environment-24.9.0" + sources."@jest/fake-timers-24.9.0" + (sources."@jest/reporters-24.9.0" // { + dependencies = [ + sources."slash-2.0.0" + ]; + }) + sources."@jest/source-map-24.9.0" + sources."@jest/test-result-24.9.0" + sources."@jest/test-sequencer-24.9.0" + (sources."@jest/transform-24.9.0" // { + dependencies = [ + sources."slash-2.0.0" + ]; + }) + sources."@jest/types-24.9.0" + (sources."@kubernetes/client-node-0.10.3" // { + dependencies = [ + sources."@types/node-10.17.17" + ]; + }) + sources."@sindresorhus/is-0.7.0" + sources."@types/accepts-1.3.5" + sources."@types/axios-0.14.0" + sources."@types/babel-types-7.0.7" + sources."@types/babel__core-7.1.6" + sources."@types/babel__generator-7.6.1" + sources."@types/babel__template-7.0.2" + sources."@types/babel__traverse-7.0.9" + sources."@types/babylon-6.16.5" + sources."@types/body-parser-1.19.0" + sources."@types/caseless-0.12.2" + sources."@types/command-line-args-5.0.0" + sources."@types/connect-3.4.33" + sources."@types/cookies-0.7.4" + sources."@types/cron-1.7.2" + sources."@types/events-3.0.0" + sources."@types/express-4.17.3" + sources."@types/express-serve-static-core-4.17.2" + sources."@types/formidable-1.0.31" + sources."@types/glob-7.1.1" + sources."@types/http-assert-1.5.1" + sources."@types/istanbul-lib-coverage-2.0.1" + sources."@types/istanbul-lib-report-3.0.0" + sources."@types/istanbul-reports-1.1.1" + sources."@types/jest-24.9.1" + sources."@types/js-yaml-3.12.2" + sources."@types/keygrip-1.0.2" + sources."@types/koa-2.11.2" + sources."@types/koa-compose-3.2.5" + sources."@types/koa-router-7.4.0" + sources."@types/koa-send-4.1.2" + sources."@types/koa-static-4.0.1" + sources."@types/koa-views-2.0.4" + sources."@types/lodash-4.14.149" + sources."@types/lodash.clonedeep-4.5.6" + sources."@types/mime-2.0.1" + sources."@types/minimatch-3.0.3" + sources."@types/mkdirp-0.5.2" + sources."@types/node-12.12.30" + sources."@types/ora-3.2.0" + sources."@types/range-parser-1.2.3" + (sources."@types/request-2.48.4" // { + dependencies = [ + sources."form-data-2.5.1" + ]; + }) + sources."@types/serve-static-1.13.3" + sources."@types/stack-utils-1.0.1" + sources."@types/tough-cookie-2.3.6" + sources."@types/underscore-1.9.4" + sources."@types/websocket-0.0.40" + sources."@types/ws-6.0.4" + sources."@types/yargs-13.0.8" + sources."@types/yargs-parser-15.0.0" + sources."@webassemblyjs/ast-1.8.5" + sources."@webassemblyjs/floating-point-hex-parser-1.8.5" + sources."@webassemblyjs/helper-api-error-1.8.5" + sources."@webassemblyjs/helper-buffer-1.8.5" + sources."@webassemblyjs/helper-code-frame-1.8.5" + sources."@webassemblyjs/helper-fsm-1.8.5" + sources."@webassemblyjs/helper-module-context-1.8.5" + sources."@webassemblyjs/helper-wasm-bytecode-1.8.5" + sources."@webassemblyjs/helper-wasm-section-1.8.5" + sources."@webassemblyjs/ieee754-1.8.5" + sources."@webassemblyjs/leb128-1.8.5" + sources."@webassemblyjs/utf8-1.8.5" + sources."@webassemblyjs/wasm-edit-1.8.5" + sources."@webassemblyjs/wasm-gen-1.8.5" + sources."@webassemblyjs/wasm-opt-1.8.5" + sources."@webassemblyjs/wasm-parser-1.8.5" + sources."@webassemblyjs/wast-parser-1.8.5" + sources."@webassemblyjs/wast-printer-1.8.5" + sources."@xtuc/ieee754-1.2.0" + sources."@xtuc/long-4.2.2" + sources."abab-2.0.3" + sources."abbrev-1.1.1" + sources."accepts-1.3.7" + sources."acorn-3.3.0" + (sources."acorn-globals-3.1.0" // { + dependencies = [ + sources."acorn-4.0.13" + ]; + }) + sources."acorn-walk-6.2.0" + sources."aggregate-error-1.0.0" + sources."ajv-6.12.0" + sources."ajv-errors-1.0.1" + sources."ajv-keywords-3.4.1" + sources."align-text-0.1.4" + sources."ansi-colors-3.2.4" + sources."ansi-escapes-3.2.0" + sources."ansi-html-0.0.7" + sources."ansi-regex-4.1.0" + sources."ansi-styles-3.2.1" + sources."any-promise-1.3.0" + sources."anymatch-2.0.0" + sources."aproba-1.2.0" + sources."argparse-1.0.10" + sources."arr-diff-4.0.0" + sources."arr-flatten-1.1.0" + sources."arr-union-3.1.0" + sources."array-back-3.1.0" + sources."array-equal-1.0.0" + sources."array-flatten-1.1.1" + sources."array-union-1.0.2" + sources."array-uniq-1.0.3" + sources."array-unique-0.3.2" + sources."asap-2.0.6" + sources."asn1-0.2.4" + sources."asn1.js-4.10.1" + (sources."assert-1.5.0" // { + dependencies = [ + sources."inherits-2.0.1" + sources."util-0.10.3" + ]; + }) + sources."assert-plus-1.0.0" + sources."assign-symbols-1.0.0" + sources."astral-regex-1.0.0" + sources."async-2.6.3" + sources."async-each-1.0.3" + sources."async-limiter-1.0.1" + sources."asynckit-0.4.0" + sources."atob-2.1.2" + sources."awesome-typescript-loader-5.2.1" + sources."aws-sign2-0.7.0" + sources."aws4-1.9.1" + sources."axios-0.19.2" + sources."babel-6.23.0" + (sources."babel-code-frame-6.26.0" // { + dependencies = [ + sources."ansi-regex-2.1.1" + sources."ansi-styles-2.2.1" + sources."chalk-1.1.3" + sources."strip-ansi-3.0.1" + sources."supports-color-2.0.0" + ]; + }) + (sources."babel-core-6.26.3" // { + dependencies = [ + sources."debug-2.6.9" + sources."json5-0.5.1" + sources."source-map-0.5.7" + ]; + }) + (sources."babel-generator-6.26.1" // { + dependencies = [ + sources."source-map-0.5.7" + ]; + }) + sources."babel-helper-builder-binary-assignment-operator-visitor-6.24.1" + sources."babel-helper-call-delegate-6.24.1" + sources."babel-helper-define-map-6.26.0" + sources."babel-helper-explode-assignable-expression-6.24.1" + sources."babel-helper-function-name-6.24.1" + sources."babel-helper-get-function-arity-6.24.1" + sources."babel-helper-hoist-variables-6.24.1" + sources."babel-helper-optimise-call-expression-6.24.1" + sources."babel-helper-regex-6.26.0" + sources."babel-helper-remap-async-to-generator-6.24.1" + sources."babel-helper-replace-supers-6.24.1" + sources."babel-helpers-6.24.1" + (sources."babel-jest-24.9.0" // { + dependencies = [ + sources."slash-2.0.0" + ]; + }) + sources."babel-messages-6.23.0" + sources."babel-plugin-check-es2015-constants-6.22.0" + sources."babel-plugin-istanbul-5.2.0" + sources."babel-plugin-jest-hoist-24.9.0" + sources."babel-plugin-syntax-async-functions-6.13.0" + sources."babel-plugin-syntax-exponentiation-operator-6.13.0" + sources."babel-plugin-syntax-trailing-function-commas-6.22.0" + sources."babel-plugin-transform-async-to-generator-6.24.1" + sources."babel-plugin-transform-es2015-arrow-functions-6.22.0" + sources."babel-plugin-transform-es2015-block-scoped-functions-6.22.0" + sources."babel-plugin-transform-es2015-block-scoping-6.26.0" + sources."babel-plugin-transform-es2015-classes-6.24.1" + sources."babel-plugin-transform-es2015-computed-properties-6.24.1" + sources."babel-plugin-transform-es2015-destructuring-6.23.0" + sources."babel-plugin-transform-es2015-duplicate-keys-6.24.1" + sources."babel-plugin-transform-es2015-for-of-6.23.0" + sources."babel-plugin-transform-es2015-function-name-6.24.1" + sources."babel-plugin-transform-es2015-literals-6.22.0" + sources."babel-plugin-transform-es2015-modules-amd-6.24.1" + sources."babel-plugin-transform-es2015-modules-commonjs-6.26.2" + sources."babel-plugin-transform-es2015-modules-systemjs-6.24.1" + sources."babel-plugin-transform-es2015-modules-umd-6.24.1" + sources."babel-plugin-transform-es2015-object-super-6.24.1" + sources."babel-plugin-transform-es2015-parameters-6.24.1" + sources."babel-plugin-transform-es2015-shorthand-properties-6.24.1" + sources."babel-plugin-transform-es2015-spread-6.22.0" + sources."babel-plugin-transform-es2015-sticky-regex-6.24.1" + sources."babel-plugin-transform-es2015-template-literals-6.22.0" + sources."babel-plugin-transform-es2015-typeof-symbol-6.23.0" + sources."babel-plugin-transform-es2015-unicode-regex-6.24.1" + sources."babel-plugin-transform-exponentiation-operator-6.24.1" + sources."babel-plugin-transform-regenerator-6.26.0" + sources."babel-plugin-transform-strict-mode-6.24.1" + sources."babel-preset-env-1.7.0" + sources."babel-preset-jest-24.9.0" + (sources."babel-register-6.26.0" // { + dependencies = [ + sources."source-map-0.5.7" + sources."source-map-support-0.4.18" + ]; + }) + sources."babel-runtime-6.26.0" + sources."babel-template-6.26.0" + (sources."babel-traverse-6.26.0" // { + dependencies = [ + sources."debug-2.6.9" + ]; + }) + sources."babel-types-6.26.0" + sources."babylon-6.18.0" + sources."balanced-match-1.0.0" + (sources."base-0.11.2" // { + dependencies = [ + sources."define-property-1.0.0" + ]; + }) + sources."base64-js-1.3.1" + sources."base64url-3.0.1" + sources."batch-0.6.1" + sources."bcrypt-pbkdf-1.0.2" + sources."bfj-6.1.2" + sources."big.js-5.2.2" + sources."binary-extensions-1.13.1" + sources."bindings-1.5.0" + sources."bluebird-3.7.2" + sources."bn.js-4.11.8" + (sources."body-parser-1.19.0" // { + dependencies = [ + sources."debug-2.6.9" + sources."http-errors-1.7.2" + sources."inherits-2.0.3" + sources."qs-6.7.0" + sources."raw-body-2.4.0" + ]; + }) + (sources."bonjour-3.5.0" // { + dependencies = [ + sources."array-flatten-2.1.2" + ]; + }) + sources."brace-expansion-1.1.11" + sources."braces-2.3.2" + sources."brorand-1.1.0" + sources."browser-process-hrtime-1.0.0" + (sources."browser-resolve-1.11.3" // { + dependencies = [ + sources."resolve-1.1.7" + ]; + }) + sources."browserify-aes-1.2.0" + sources."browserify-cipher-1.0.1" + sources."browserify-des-1.0.2" + sources."browserify-rsa-4.0.1" + sources."browserify-sign-4.0.4" + sources."browserify-zlib-0.2.0" + sources."browserslist-3.2.8" + sources."bs-logger-0.2.6" + sources."bser-2.1.1" + sources."buffer-4.9.2" + sources."buffer-from-1.1.1" + sources."buffer-indexof-1.1.1" + sources."buffer-xor-1.0.3" + sources."builtin-status-codes-3.0.0" + sources."byline-5.0.0" + sources."bytes-3.1.0" + (sources."cacache-10.0.4" // { + dependencies = [ + sources."lru-cache-4.1.5" + sources."yallist-2.1.2" + ]; + }) + sources."cache-base-1.0.1" + sources."cache-content-type-1.0.1" + (sources."cacheable-request-2.1.4" // { + dependencies = [ + sources."get-stream-3.0.0" + sources."lowercase-keys-1.0.0" + ]; + }) + sources."callsites-3.1.0" + sources."camelcase-1.2.1" + sources."caniuse-lite-1.0.30001035" + sources."capture-exit-2.0.0" + sources."caseless-0.12.0" + sources."center-align-0.1.3" + sources."chalk-2.4.2" + sources."character-parser-2.2.0" + sources."check-types-8.0.3" + (sources."chokidar-2.1.8" // { + dependencies = [ + sources."normalize-path-3.0.0" + ]; + }) + sources."chownr-1.1.4" + sources."chrome-trace-event-1.0.2" + sources."ci-info-2.0.0" + sources."cipher-base-1.0.4" + (sources."class-utils-0.3.6" // { + dependencies = [ + sources."define-property-0.2.5" + (sources."is-accessor-descriptor-0.1.6" // { + dependencies = [ + sources."kind-of-3.2.2" + ]; + }) + (sources."is-data-descriptor-0.1.4" // { + dependencies = [ + sources."kind-of-3.2.2" + ]; + }) + sources."is-descriptor-0.1.6" + sources."kind-of-5.1.0" + ]; + }) + sources."clean-css-4.2.3" + sources."clean-stack-1.3.0" + sources."cli-cursor-2.1.0" + sources."cli-spinners-2.2.0" + sources."cliui-2.1.0" + sources."clone-1.0.4" + sources."clone-response-1.0.2" + sources."co-4.6.0" + sources."co-body-5.2.0" + sources."code-point-at-1.1.0" + sources."collection-visit-1.0.0" + sources."color-convert-1.9.3" + sources."color-name-1.1.3" + sources."combined-stream-1.0.8" + sources."command-line-args-5.1.1" + sources."commander-2.20.3" + sources."commondir-1.0.1" + sources."component-emitter-1.3.0" + sources."compressible-2.0.18" + (sources."compression-1.7.4" // { + dependencies = [ + sources."bytes-3.0.0" + sources."debug-2.6.9" + sources."safe-buffer-5.1.2" + ]; + }) + sources."concat-map-0.0.1" + sources."concat-stream-1.6.2" + sources."condense-newlines-0.2.1" + sources."config-chain-1.1.12" + sources."connect-history-api-fallback-1.6.0" + sources."console-browserify-1.2.0" + sources."consolidate-0.15.1" + sources."constantinople-3.1.2" + sources."constants-browserify-1.0.0" + (sources."content-disposition-0.5.3" // { + dependencies = [ + sources."safe-buffer-5.1.2" + ]; + }) + sources."content-type-1.0.4" + (sources."convert-source-map-1.7.0" // { + dependencies = [ + sources."safe-buffer-5.1.2" + ]; + }) + sources."cookie-0.4.0" + sources."cookie-signature-1.0.6" + (sources."cookies-0.8.0" // { + dependencies = [ + sources."depd-2.0.0" + ]; + }) + sources."copy-concurrently-1.0.5" + sources."copy-descriptor-0.1.1" + (sources."copy-webpack-plugin-4.6.0" // { + dependencies = [ + sources."p-limit-1.3.0" + sources."p-try-1.0.0" + ]; + }) + sources."core-js-2.6.11" + sources."core-util-is-1.0.2" + sources."create-ecdh-4.0.3" + sources."create-hash-1.2.0" + sources."create-hmac-1.1.7" + sources."cron-1.8.2" + sources."cross-spawn-6.0.5" + sources."crypto-browserify-3.12.0" + sources."cssom-0.3.8" + sources."cssstyle-1.4.0" + sources."cyclist-1.0.1" + sources."d-1.0.1" + sources."dashdash-1.14.1" + (sources."data-urls-1.1.0" // { + dependencies = [ + sources."whatwg-url-7.1.0" + ]; + }) + sources."debug-3.1.0" + sources."decamelize-1.2.0" + sources."decode-uri-component-0.2.0" + sources."decompress-response-3.3.0" + sources."deep-equal-1.0.1" + sources."deep-is-0.1.3" + sources."default-gateway-4.2.0" + sources."defaults-1.0.3" + sources."define-properties-1.1.3" + sources."define-property-2.0.2" + (sources."del-4.1.1" // { + dependencies = [ + (sources."globby-6.1.0" // { + dependencies = [ + sources."pify-2.3.0" + ]; + }) + sources."pify-4.0.1" + ]; + }) + sources."delayed-stream-1.0.0" + sources."delegates-1.0.0" + sources."depd-1.1.2" + sources."des.js-1.0.1" + sources."destroy-1.0.4" + sources."detect-file-1.0.0" + sources."detect-indent-4.0.0" + sources."detect-newline-2.1.0" + sources."detect-node-2.0.4" + sources."diff-sequences-24.9.0" + sources."diffie-hellman-5.0.3" + sources."dir-glob-2.2.2" + sources."dns-equal-1.0.0" + sources."dns-packet-1.3.1" + sources."dns-txt-2.0.2" + sources."doctypes-1.1.0" + sources."domain-browser-1.2.0" + sources."domexception-1.0.1" + sources."duplexer-0.1.1" + sources."duplexer3-0.1.4" + sources."duplexify-3.7.1" + sources."ecc-jsbn-0.1.2" + (sources."editorconfig-0.15.3" // { + dependencies = [ + sources."lru-cache-4.1.5" + sources."yallist-2.1.2" + ]; + }) + sources."ee-first-1.1.1" + sources."ejs-2.7.4" + sources."electron-to-chromium-1.3.376" + sources."elliptic-6.5.2" + sources."emoji-regex-7.0.3" + sources."emojis-list-3.0.0" + sources."encodeurl-1.0.2" + sources."end-of-stream-1.4.4" + sources."enhanced-resolve-4.1.1" + sources."errno-0.1.7" + sources."error-ex-1.3.2" + sources."error-inject-1.0.0" + sources."es-abstract-1.17.4" + sources."es-to-primitive-1.2.1" + sources."es5-ext-0.10.53" + sources."es6-iterator-2.0.3" + sources."es6-promise-4.2.8" + sources."es6-symbol-3.1.3" + sources."escape-html-1.0.3" + sources."escape-string-regexp-1.0.5" + sources."escodegen-1.14.1" + sources."eslint-scope-4.0.3" + sources."esprima-4.0.1" + sources."esrecurse-4.2.1" + sources."estraverse-4.3.0" + sources."esutils-2.0.3" + sources."etag-1.8.1" + sources."eventemitter3-4.0.0" + sources."events-3.1.0" + sources."eventsource-1.0.7" + sources."evp_bytestokey-1.0.3" + sources."exec-sh-0.3.4" + sources."execa-1.0.0" + sources."exit-0.1.2" + (sources."expand-brackets-2.1.4" // { + dependencies = [ + sources."debug-2.6.9" + sources."define-property-0.2.5" + (sources."is-accessor-descriptor-0.1.6" // { + dependencies = [ + sources."kind-of-3.2.2" + ]; + }) + (sources."is-data-descriptor-0.1.4" // { + dependencies = [ + sources."kind-of-3.2.2" + ]; + }) + sources."is-descriptor-0.1.6" + sources."kind-of-5.1.0" + ]; + }) + sources."expand-tilde-2.0.2" + sources."expect-24.9.0" + (sources."express-4.17.1" // { + dependencies = [ + sources."debug-2.6.9" + sources."path-to-regexp-0.1.7" + sources."qs-6.7.0" + sources."safe-buffer-5.1.2" + ]; + }) + (sources."ext-1.4.0" // { + dependencies = [ + sources."type-2.0.0" + ]; + }) + sources."extend-3.0.2" + sources."extend-shallow-2.0.1" + (sources."extglob-2.0.4" // { + dependencies = [ + sources."define-property-1.0.0" + ]; + }) + sources."extsprintf-1.3.0" + sources."fast-deep-equal-3.1.1" + sources."fast-json-stable-stringify-2.1.0" + sources."fast-levenshtein-2.0.6" + sources."faye-websocket-0.10.0" + sources."fb-watchman-2.0.1" + sources."figgy-pudding-3.5.1" + sources."file-uri-to-path-1.0.0" + sources."filesize-3.6.1" + sources."fill-range-4.0.0" + (sources."finalhandler-1.1.2" // { + dependencies = [ + sources."debug-2.6.9" + ]; + }) + sources."find-cache-dir-1.0.0" + sources."find-replace-3.0.0" + sources."find-up-3.0.0" + sources."findup-sync-3.0.0" + sources."flush-write-stream-1.1.1" + sources."follow-redirects-1.5.10" + sources."for-in-1.0.2" + sources."forever-agent-0.6.1" + sources."form-data-2.3.3" + sources."formidable-1.2.2" + sources."forwarded-0.1.2" + sources."fragment-cache-0.2.1" + sources."fresh-0.5.2" + sources."from2-2.3.0" + sources."fs-write-stream-atomic-1.0.10" + sources."fs.realpath-1.0.0" + sources."fsevents-1.2.11" + sources."function-bind-1.1.1" + sources."gensync-1.0.0-beta.1" + sources."get-caller-file-2.0.5" + (sources."get-paths-0.0.7" // { + dependencies = [ + sources."pify-4.0.1" + ]; + }) + sources."get-stream-4.1.0" + sources."get-value-2.0.6" + sources."getpass-0.1.7" + sources."glob-7.1.6" + (sources."glob-parent-3.1.0" // { + dependencies = [ + sources."is-glob-3.1.0" + ]; + }) + (sources."global-modules-2.0.0" // { + dependencies = [ + sources."global-prefix-3.0.0" + sources."kind-of-6.0.3" + ]; + }) + sources."global-prefix-1.0.2" + sources."globals-9.18.0" + sources."globby-7.1.1" + (sources."got-8.3.2" // { + dependencies = [ + sources."get-stream-3.0.0" + ]; + }) + sources."graceful-fs-4.2.3" + sources."growly-1.3.0" + (sources."gzip-size-5.1.1" // { + dependencies = [ + sources."pify-4.0.1" + ]; + }) + sources."handle-thing-2.0.0" + sources."har-schema-2.0.0" + sources."har-validator-5.1.3" + sources."has-1.0.3" + (sources."has-ansi-2.0.0" // { + dependencies = [ + sources."ansi-regex-2.1.1" + ]; + }) + sources."has-flag-3.0.0" + sources."has-symbol-support-x-1.4.2" + sources."has-symbols-1.0.1" + sources."has-to-string-tag-x-1.4.1" + sources."has-value-1.0.0" + (sources."has-values-1.0.0" // { + dependencies = [ + sources."kind-of-4.0.0" + ]; + }) + sources."hash-base-3.0.4" + sources."hash.js-1.1.7" + sources."hmac-drbg-1.0.1" + sources."home-or-tmp-2.0.0" + sources."homedir-polyfill-1.0.3" + sources."hoopy-0.1.4" + sources."hosted-git-info-2.8.8" + sources."hpack.js-2.1.6" + sources."html-encoding-sniffer-1.0.2" + sources."html-entities-1.2.1" + sources."html-escaper-2.0.0" + sources."http-assert-1.4.1" + sources."http-cache-semantics-3.8.1" + sources."http-deceiver-1.2.7" + sources."http-errors-1.7.3" + sources."http-parser-js-0.4.10" + sources."http-proxy-1.18.0" + sources."http-proxy-middleware-0.19.1" + sources."http-signature-1.2.0" + sources."https-browserify-1.0.0" + sources."iconv-lite-0.4.24" + sources."ieee754-1.1.13" + sources."iferr-0.1.5" + sources."ignore-3.3.10" + (sources."import-local-2.0.0" // { + dependencies = [ + sources."pkg-dir-3.0.0" + ]; + }) + sources."imurmurhash-0.1.4" + sources."indent-string-3.2.0" + sources."infer-owner-1.0.4" + sources."inflation-2.0.0" + sources."inflight-1.0.6" + sources."inherits-2.0.4" + sources."ini-1.3.5" + sources."internal-ip-4.3.0" + sources."interpret-1.2.0" + sources."into-stream-3.1.0" + sources."invariant-2.2.4" + sources."invert-kv-2.0.0" + sources."ip-1.1.5" + sources."ip-regex-2.1.0" + sources."ipaddr.js-1.9.1" + sources."is-absolute-url-3.0.3" + (sources."is-accessor-descriptor-1.0.0" // { + dependencies = [ + sources."kind-of-6.0.3" + ]; + }) + sources."is-arrayish-0.2.1" + sources."is-binary-path-1.0.1" + sources."is-buffer-1.1.6" + sources."is-callable-1.1.5" + sources."is-ci-2.0.0" + (sources."is-data-descriptor-1.0.0" // { + dependencies = [ + sources."kind-of-6.0.3" + ]; + }) + sources."is-date-object-1.0.2" + (sources."is-descriptor-1.0.2" // { + dependencies = [ + sources."kind-of-6.0.3" + ]; + }) + (sources."is-expression-3.0.0" // { + dependencies = [ + sources."acorn-4.0.13" + ]; + }) + sources."is-extendable-0.1.1" + sources."is-extglob-2.1.1" + sources."is-finite-1.1.0" + sources."is-fullwidth-code-point-2.0.0" + sources."is-generator-fn-2.1.0" + sources."is-generator-function-1.0.7" + sources."is-glob-4.0.1" + sources."is-number-3.0.0" + sources."is-object-1.0.1" + sources."is-path-cwd-2.2.0" + sources."is-path-in-cwd-2.1.0" + sources."is-path-inside-2.1.0" + sources."is-plain-obj-1.1.0" + sources."is-plain-object-2.0.4" + sources."is-promise-2.1.0" + sources."is-regex-1.0.5" + sources."is-retry-allowed-1.2.0" + sources."is-stream-1.1.0" + sources."is-symbol-1.0.3" + sources."is-typedarray-1.0.0" + sources."is-whitespace-0.3.0" + sources."is-windows-1.0.2" + sources."is-wsl-1.1.0" + sources."isarray-1.0.0" + sources."isexe-2.0.0" + sources."isobject-3.0.1" + sources."isomorphic-ws-4.0.1" + sources."isstream-0.1.2" + sources."istanbul-lib-coverage-2.0.5" + (sources."istanbul-lib-instrument-3.3.0" // { + dependencies = [ + sources."semver-6.3.0" + ]; + }) + (sources."istanbul-lib-report-2.0.8" // { + dependencies = [ + sources."make-dir-2.1.0" + sources."pify-4.0.1" + sources."supports-color-6.1.0" + ]; + }) + (sources."istanbul-lib-source-maps-3.0.6" // { + dependencies = [ + sources."debug-4.1.1" + sources."make-dir-2.1.0" + sources."ms-2.1.2" + sources."pify-4.0.1" + ]; + }) + sources."istanbul-reports-2.2.7" + sources."isurl-1.0.0" + sources."jest-24.9.0" + sources."jest-changed-files-24.9.0" + (sources."jest-cli-24.9.0" // { + dependencies = [ + sources."cliui-5.0.0" + sources."yargs-13.3.2" + ]; + }) + sources."jest-config-24.9.0" + sources."jest-diff-24.9.0" + sources."jest-docblock-24.9.0" + sources."jest-each-24.9.0" + sources."jest-environment-jsdom-24.9.0" + sources."jest-environment-node-24.9.0" + sources."jest-get-type-24.9.0" + sources."jest-haste-map-24.9.0" + sources."jest-jasmine2-24.9.0" + sources."jest-leak-detector-24.9.0" + sources."jest-matcher-utils-24.9.0" + (sources."jest-message-util-24.9.0" // { + dependencies = [ + sources."slash-2.0.0" + ]; + }) + sources."jest-mock-24.9.0" + sources."jest-pnp-resolver-1.2.1" + sources."jest-regex-util-24.9.0" + sources."jest-resolve-24.9.0" + sources."jest-resolve-dependencies-24.9.0" + sources."jest-runner-24.9.0" + (sources."jest-runtime-24.9.0" // { + dependencies = [ + sources."cliui-5.0.0" + sources."slash-2.0.0" + sources."yargs-13.3.2" + ]; + }) + sources."jest-serializer-24.9.0" + (sources."jest-snapshot-24.9.0" // { + dependencies = [ + sources."semver-6.3.0" + ]; + }) + (sources."jest-util-24.9.0" // { + dependencies = [ + sources."slash-2.0.0" + ]; + }) + (sources."jest-validate-24.9.0" // { + dependencies = [ + sources."camelcase-5.3.1" + ]; + }) + sources."jest-watcher-24.9.0" + (sources."jest-worker-24.9.0" // { + dependencies = [ + sources."supports-color-6.1.0" + ]; + }) + sources."js-beautify-1.10.3" + sources."js-stringify-1.0.2" + sources."js-tokens-3.0.2" + sources."js-yaml-3.13.1" + sources."jsbn-0.1.1" + (sources."jsdom-11.12.0" // { + dependencies = [ + sources."acorn-5.7.4" + (sources."acorn-globals-4.3.4" // { + dependencies = [ + sources."acorn-6.4.1" + ]; + }) + sources."ws-5.2.2" + ]; + }) + sources."jsesc-1.3.0" + sources."json-buffer-3.0.0" + sources."json-parse-better-errors-1.0.2" + sources."json-schema-0.2.3" + sources."json-schema-traverse-0.4.1" + sources."json-stringify-safe-5.0.1" + sources."json3-3.3.3" + (sources."json5-1.0.1" // { + dependencies = [ + sources."minimist-1.2.5" + ]; + }) + sources."jsonpath-plus-0.19.0" + sources."jsprim-1.4.1" + sources."jstransformer-1.0.0" + sources."keygrip-1.1.0" + sources."keyv-3.0.0" + sources."killable-1.0.1" + sources."kind-of-3.2.2" + sources."kleur-3.0.3" + sources."koa-2.11.0" + sources."koa-body-4.1.1" + sources."koa-compose-4.1.0" + (sources."koa-convert-1.2.0" // { + dependencies = [ + sources."koa-compose-3.2.1" + ]; + }) + (sources."koa-router-7.4.0" // { + dependencies = [ + sources."koa-compose-3.2.1" + ]; + }) + sources."koa-send-5.0.0" + sources."koa-static-5.0.0" + (sources."koa-views-6.2.1" // { + dependencies = [ + sources."debug-4.1.1" + sources."ms-2.1.2" + ]; + }) + sources."lazy-cache-1.0.4" + sources."lcid-2.0.0" + sources."left-pad-1.3.0" + sources."leven-3.1.0" + sources."levn-0.3.0" + sources."load-json-file-4.0.0" + sources."loader-runner-2.4.0" + sources."loader-utils-1.4.0" + sources."locate-path-3.0.0" + sources."lodash-4.17.15" + sources."lodash.camelcase-4.3.0" + sources."lodash.clonedeep-4.5.0" + sources."lodash.memoize-4.1.2" + sources."lodash.sortby-4.7.0" + sources."log-symbols-2.2.0" + sources."loglevel-1.6.7" + sources."loglevelnext-1.0.5" + sources."long-4.0.0" + sources."longest-1.0.1" + sources."loose-envify-1.4.0" + sources."lowercase-keys-1.0.1" + sources."lru-cache-5.1.1" + sources."make-dir-1.3.0" + sources."make-error-1.3.6" + sources."makeerror-1.0.11" + sources."mamacro-0.0.3" + sources."map-age-cleaner-0.1.3" + sources."map-cache-0.2.2" + sources."map-visit-1.0.0" + sources."md5.js-1.3.5" + sources."media-typer-0.3.0" + (sources."mem-4.3.0" // { + dependencies = [ + sources."mimic-fn-2.1.0" + sources."p-is-promise-2.1.0" + ]; + }) + sources."memory-fs-0.5.0" + sources."merge-descriptors-1.0.1" + sources."merge-stream-2.0.0" + sources."methods-1.1.2" + (sources."micromatch-3.1.10" // { + dependencies = [ + sources."extend-shallow-3.0.2" + sources."is-extendable-1.0.1" + sources."kind-of-6.0.3" + ]; + }) + sources."miller-rabin-4.0.1" + sources."mime-1.6.0" + sources."mime-db-1.43.0" + sources."mime-types-2.1.26" + sources."mimic-fn-1.2.0" + sources."mimic-response-1.0.1" + sources."minimalistic-assert-1.0.1" + sources."minimalistic-crypto-utils-1.0.1" + sources."minimatch-3.0.4" + sources."minimist-0.0.8" + (sources."mississippi-2.0.0" // { + dependencies = [ + sources."pump-2.0.1" + ]; + }) + (sources."mixin-deep-1.3.2" // { + dependencies = [ + sources."is-extendable-1.0.1" + ]; + }) + sources."mkdirp-0.5.1" + sources."moment-2.24.0" + sources."moment-timezone-0.5.28" + sources."move-concurrently-1.0.1" + sources."ms-2.0.0" + sources."multicast-dns-6.2.3" + sources."multicast-dns-service-types-1.1.0" + sources."mz-2.7.0" + sources."nan-2.14.0" + (sources."nanomatch-1.2.13" // { + dependencies = [ + sources."extend-shallow-3.0.2" + sources."is-extendable-1.0.1" + sources."kind-of-6.0.3" + ]; + }) + sources."natural-compare-1.4.0" + sources."negotiator-0.6.2" + sources."neo-async-2.6.1" + sources."next-tick-1.0.0" + sources."nice-try-1.0.5" + sources."node-forge-0.8.5" + sources."node-int64-0.4.0" + sources."node-jose-1.1.3" + (sources."node-libs-browser-2.2.1" // { + dependencies = [ + sources."punycode-1.4.1" + ]; + }) + sources."node-modules-regexp-1.0.0" + sources."node-notifier-5.4.3" + sources."nopt-4.0.3" + sources."normalize-package-data-2.5.0" + sources."normalize-path-2.1.1" + sources."normalize-url-2.0.1" + sources."npm-run-path-2.0.2" + sources."number-is-nan-1.0.1" + sources."nwsapi-2.2.0" + sources."oauth-sign-0.9.0" + sources."object-assign-4.1.1" + (sources."object-copy-0.1.0" // { + dependencies = [ + sources."define-property-0.2.5" + sources."is-accessor-descriptor-0.1.6" + sources."is-data-descriptor-0.1.4" + (sources."is-descriptor-0.1.6" // { + dependencies = [ + sources."kind-of-5.1.0" + ]; + }) + ]; + }) + sources."object-hash-1.3.1" + sources."object-inspect-1.7.0" + sources."object-keys-1.1.1" + sources."object-visit-1.0.1" + sources."object.assign-4.1.0" + sources."object.getownpropertydescriptors-2.1.0" + sources."object.pick-1.3.0" + sources."obuf-1.1.2" + sources."oidc-token-hash-3.0.2" + sources."on-finished-2.3.0" + sources."on-headers-1.0.2" + sources."once-1.4.0" + sources."onetime-2.0.1" + sources."only-0.0.2" + sources."opener-1.5.1" + sources."openid-client-2.5.0" + sources."opn-5.5.0" + sources."optionator-0.8.3" + sources."ora-3.4.0" + sources."original-1.0.2" + sources."os-browserify-0.3.0" + sources."os-homedir-1.0.2" + sources."os-locale-3.1.0" + sources."os-tmpdir-1.0.2" + sources."osenv-0.1.5" + sources."p-any-1.1.0" + sources."p-cancelable-0.4.1" + sources."p-defer-1.0.0" + sources."p-each-series-1.0.0" + sources."p-finally-1.0.0" + sources."p-is-promise-1.1.0" + sources."p-limit-2.2.2" + sources."p-locate-3.0.0" + sources."p-map-2.1.0" + sources."p-reduce-1.0.0" + sources."p-retry-3.0.1" + sources."p-some-2.0.1" + sources."p-timeout-2.0.1" + sources."p-try-2.2.0" + sources."pako-1.0.11" + sources."parallel-transform-1.2.0" + sources."parse-asn1-5.1.5" + sources."parse-json-4.0.0" + sources."parse-passwd-1.0.0" + sources."parse5-4.0.0" + sources."parseurl-1.3.3" + sources."pascalcase-0.1.1" + sources."path-browserify-0.0.1" + sources."path-dirname-1.0.2" + sources."path-exists-3.0.0" + sources."path-is-absolute-1.0.1" + sources."path-is-inside-1.0.2" + sources."path-key-2.0.1" + sources."path-parse-1.0.6" + (sources."path-to-regexp-1.8.0" // { + dependencies = [ + sources."isarray-0.0.1" + ]; + }) + sources."path-type-3.0.0" + sources."pbkdf2-3.0.17" + sources."performance-now-2.1.0" + sources."pify-3.0.0" + sources."pinkie-2.0.4" + sources."pinkie-promise-2.0.1" + sources."pirates-4.0.1" + (sources."pkg-dir-2.0.0" // { + dependencies = [ + sources."find-up-2.1.0" + sources."locate-path-2.0.0" + sources."p-limit-1.3.0" + sources."p-locate-2.0.0" + sources."p-try-1.0.0" + ]; + }) + sources."pn-1.1.0" + (sources."portfinder-1.0.25" // { + dependencies = [ + sources."debug-3.2.6" + sources."ms-2.1.2" + ]; + }) + sources."posix-character-classes-0.1.1" + sources."prelude-ls-1.1.2" + sources."prepend-http-2.0.0" + sources."prettier-1.19.1" + sources."pretty-2.0.0" + sources."pretty-format-24.9.0" + sources."private-0.1.8" + sources."process-0.11.10" + sources."process-nextick-args-2.0.1" + sources."promise-7.3.1" + sources."promise-inflight-1.0.1" + sources."prompts-2.3.1" + sources."proto-list-1.2.4" + sources."proxy-addr-2.0.6" + sources."prr-1.0.1" + sources."pseudomap-1.0.2" + sources."psl-1.7.0" + sources."public-encrypt-4.0.3" + sources."pug-2.0.4" + sources."pug-attrs-2.0.4" + sources."pug-code-gen-2.0.2" + sources."pug-error-1.3.3" + sources."pug-filters-3.1.1" + sources."pug-lexer-4.1.0" + sources."pug-linker-3.0.6" + sources."pug-load-2.0.12" + sources."pug-parser-5.0.1" + sources."pug-runtime-2.0.5" + sources."pug-strip-comments-1.0.4" + sources."pug-walk-1.1.8" + sources."pump-3.0.0" + (sources."pumpify-1.5.1" // { + dependencies = [ + sources."pump-2.0.1" + ]; + }) + sources."punycode-2.1.1" + sources."qs-6.5.2" + sources."query-string-5.1.1" + sources."querystring-0.2.0" + sources."querystring-es3-0.2.1" + sources."querystringify-2.1.1" + sources."randombytes-2.1.0" + sources."randomfill-1.0.4" + sources."range-parser-1.2.1" + sources."raw-body-2.4.1" + sources."react-is-16.13.0" + sources."read-pkg-3.0.0" + sources."read-pkg-up-4.0.0" + (sources."readable-stream-2.3.7" // { + dependencies = [ + sources."safe-buffer-5.1.2" + ]; + }) + sources."readdirp-2.2.1" + sources."realpath-native-1.1.0" + sources."rechoir-0.6.2" + sources."regenerate-1.4.0" + sources."regenerator-runtime-0.11.1" + sources."regenerator-transform-0.10.1" + (sources."regex-not-1.0.2" // { + dependencies = [ + sources."extend-shallow-3.0.2" + sources."is-extendable-1.0.1" + ]; + }) + sources."regexpu-core-2.0.0" + sources."regjsgen-0.2.0" + (sources."regjsparser-0.1.5" // { + dependencies = [ + sources."jsesc-0.5.0" + ]; + }) + sources."remove-trailing-separator-1.1.0" + sources."repeat-element-1.1.3" + sources."repeat-string-1.6.1" + sources."repeating-2.0.1" + sources."request-2.88.2" + sources."request-promise-core-1.1.3" + sources."request-promise-native-1.0.8" + sources."require-directory-2.1.1" + sources."require-main-filename-2.0.0" + sources."requires-port-1.0.0" + sources."resolve-1.15.1" + sources."resolve-cwd-2.0.0" + (sources."resolve-dir-1.0.1" // { + dependencies = [ + sources."global-modules-1.0.0" + ]; + }) + sources."resolve-from-3.0.0" + (sources."resolve-path-1.4.0" // { + dependencies = [ + sources."http-errors-1.6.3" + sources."inherits-2.0.3" + sources."setprototypeof-1.1.0" + ]; + }) + sources."resolve-url-0.2.1" + sources."responselike-1.0.2" + sources."restore-cursor-2.0.0" + sources."ret-0.1.15" + sources."retry-0.12.0" + sources."right-align-0.1.3" + sources."rimraf-2.7.1" + sources."ripemd160-2.0.2" + sources."rsvp-4.8.5" + sources."run-queue-1.0.3" + sources."rxjs-6.5.4" + sources."safe-buffer-5.2.0" + sources."safe-regex-1.1.0" + sources."safer-buffer-2.1.2" + (sources."sane-4.1.0" // { + dependencies = [ + sources."minimist-1.2.5" + ]; + }) + sources."sax-1.2.4" + sources."schema-utils-1.0.0" + sources."select-hose-2.0.0" + (sources."selfsigned-1.10.7" // { + dependencies = [ + sources."node-forge-0.9.0" + ]; + }) + sources."semver-5.7.1" + (sources."send-0.17.1" // { + dependencies = [ + (sources."debug-2.6.9" // { + dependencies = [ + sources."ms-2.0.0" + ]; + }) + sources."ms-2.1.1" + ]; + }) + sources."serialize-javascript-1.9.1" + (sources."serve-index-1.9.1" // { + dependencies = [ + sources."debug-2.6.9" + sources."http-errors-1.6.3" + sources."inherits-2.0.3" + sources."setprototypeof-1.1.0" + ]; + }) + sources."serve-static-1.14.1" + sources."set-blocking-2.0.0" + sources."set-value-2.0.1" + sources."setimmediate-1.0.5" + sources."setprototypeof-1.1.1" + sources."sha.js-2.4.11" + sources."shebang-command-1.2.0" + sources."shebang-regex-1.0.0" + sources."shelljs-0.8.3" + sources."shellwords-0.1.1" + sources."sigmund-1.0.1" + sources."signal-exit-3.0.2" + sources."simple-git-1.96.0" + sources."sisteransi-1.0.4" + sources."slash-1.0.0" + (sources."snapdragon-0.8.2" // { + dependencies = [ + sources."debug-2.6.9" + sources."define-property-0.2.5" + (sources."is-accessor-descriptor-0.1.6" // { + dependencies = [ + sources."kind-of-3.2.2" + ]; + }) + (sources."is-data-descriptor-0.1.4" // { + dependencies = [ + sources."kind-of-3.2.2" + ]; + }) + sources."is-descriptor-0.1.6" + sources."kind-of-5.1.0" + sources."source-map-0.5.7" + ]; + }) + (sources."snapdragon-node-2.1.1" // { + dependencies = [ + sources."define-property-1.0.0" + ]; + }) + sources."snapdragon-util-3.0.1" + sources."sockjs-0.3.19" + (sources."sockjs-client-1.4.0" // { + dependencies = [ + sources."debug-3.2.6" + sources."faye-websocket-0.11.3" + sources."ms-2.1.2" + ]; + }) + sources."sort-keys-2.0.0" + sources."source-list-map-2.0.1" + sources."source-map-0.6.1" + sources."source-map-resolve-0.5.3" + sources."source-map-support-0.5.16" + sources."source-map-url-0.4.0" + sources."spdx-correct-3.1.0" + sources."spdx-exceptions-2.2.0" + sources."spdx-expression-parse-3.0.0" + sources."spdx-license-ids-3.0.5" + (sources."spdy-4.0.1" // { + dependencies = [ + sources."debug-4.1.1" + sources."ms-2.1.2" + ]; + }) + (sources."spdy-transport-3.0.0" // { + dependencies = [ + sources."debug-4.1.1" + sources."ms-2.1.2" + sources."readable-stream-3.6.0" + ]; + }) + (sources."split-string-3.1.0" // { + dependencies = [ + sources."extend-shallow-3.0.2" + sources."is-extendable-1.0.1" + ]; + }) + sources."sprintf-js-1.0.3" + sources."sshpk-1.16.1" + sources."ssri-5.3.0" + sources."stack-utils-1.0.2" + (sources."static-extend-0.1.2" // { + dependencies = [ + sources."define-property-0.2.5" + (sources."is-accessor-descriptor-0.1.6" // { + dependencies = [ + sources."kind-of-3.2.2" + ]; + }) + (sources."is-data-descriptor-0.1.4" // { + dependencies = [ + sources."kind-of-3.2.2" + ]; + }) + sources."is-descriptor-0.1.6" + sources."kind-of-5.1.0" + ]; + }) + sources."statuses-1.5.0" + sources."stealthy-require-1.1.1" + sources."stream-browserify-2.0.2" + sources."stream-each-1.2.3" + sources."stream-http-2.8.3" + sources."stream-shift-1.0.1" + sources."strict-uri-encode-1.1.0" + (sources."string-length-2.0.0" // { + dependencies = [ + sources."ansi-regex-3.0.0" + sources."strip-ansi-4.0.0" + ]; + }) + sources."string-width-3.1.0" + sources."string.prototype.trimleft-2.1.1" + sources."string.prototype.trimright-2.1.1" + (sources."string_decoder-1.1.1" // { + dependencies = [ + sources."safe-buffer-5.1.2" + ]; + }) + sources."strip-ansi-5.2.0" + sources."strip-bom-3.0.0" + sources."strip-eof-1.0.0" + sources."supports-color-5.5.0" + sources."symbol-tree-3.2.4" + sources."tapable-1.1.3" + sources."terser-4.6.6" + (sources."terser-webpack-plugin-1.4.3" // { + dependencies = [ + sources."cacache-12.0.3" + sources."find-cache-dir-2.1.0" + sources."make-dir-2.1.0" + sources."mississippi-3.0.0" + sources."pify-4.0.1" + sources."pkg-dir-3.0.0" + sources."serialize-javascript-2.1.2" + sources."ssri-6.0.1" + ]; + }) + sources."test-exclude-5.2.3" + sources."thenify-3.3.0" + sources."thenify-all-1.6.0" + sources."throat-4.1.0" + sources."through2-2.0.5" + sources."thunky-1.1.0" + sources."timed-out-4.0.1" + sources."timers-browserify-2.0.11" + sources."tmpl-1.0.4" + sources."to-arraybuffer-1.0.1" + sources."to-fast-properties-1.0.3" + sources."to-object-path-0.3.0" + (sources."to-regex-3.0.2" // { + dependencies = [ + sources."extend-shallow-3.0.2" + sources."is-extendable-1.0.1" + ]; + }) + sources."to-regex-range-2.1.1" + sources."toidentifier-1.0.0" + sources."token-stream-0.0.1" + sources."tough-cookie-2.5.0" + sources."tr46-1.0.1" + sources."trim-right-1.0.1" + sources."tryer-1.0.1" + (sources."ts-jest-24.3.0" // { + dependencies = [ + sources."camelcase-4.1.0" + sources."json5-2.1.1" + sources."minimist-1.2.5" + sources."yargs-parser-10.1.0" + ]; + }) + sources."tslib-1.11.1" + sources."tsscmp-1.0.6" + sources."tty-browserify-0.0.0" + sources."tunnel-agent-0.6.0" + sources."tweetnacl-0.14.5" + sources."type-1.2.0" + sources."type-check-0.3.2" + sources."type-is-1.6.18" + sources."typedarray-0.0.6" + sources."typedarray-to-buffer-3.1.5" + sources."typescript-3.8.3" + sources."typical-4.0.0" + (sources."uglify-js-2.8.29" // { + dependencies = [ + sources."source-map-0.5.7" + ]; + }) + sources."uglify-to-browserify-1.0.2" + sources."underscore-1.9.2" + sources."union-value-1.0.1" + sources."unique-filename-1.1.1" + sources."unique-slug-2.0.2" + sources."unpipe-1.0.0" + (sources."unset-value-1.0.0" // { + dependencies = [ + (sources."has-value-0.3.1" // { + dependencies = [ + sources."isobject-2.1.0" + ]; + }) + sources."has-values-0.1.4" + ]; + }) + sources."upath-1.2.0" + sources."uri-js-4.2.2" + sources."urijs-1.19.2" + sources."urix-0.1.0" + (sources."url-0.11.0" // { + dependencies = [ + sources."punycode-1.3.2" + ]; + }) + sources."url-parse-1.4.7" + sources."url-parse-lax-3.0.0" + sources."url-to-options-1.0.1" + sources."use-3.1.1" + (sources."util-0.11.1" // { + dependencies = [ + sources."inherits-2.0.3" + ]; + }) + sources."util-deprecate-1.0.2" + sources."util.promisify-1.0.1" + sources."utils-merge-1.0.1" + sources."uuid-3.4.0" + sources."v8-compile-cache-2.0.3" + sources."validate-npm-package-license-3.0.4" + sources."vary-1.1.2" + sources."verror-1.10.0" + sources."vm-browserify-1.1.2" + sources."void-elements-2.0.1" + sources."w3c-hr-time-1.0.2" + sources."walker-1.0.7" + sources."watchpack-1.6.0" + sources."wbuf-1.7.3" + sources."wcwidth-1.0.1" + sources."webidl-conversions-4.0.2" + (sources."webpack-4.42.0" // { + dependencies = [ + sources."acorn-6.4.1" + sources."memory-fs-0.4.1" + ]; + }) + (sources."webpack-bundle-analyzer-3.6.1" // { + dependencies = [ + sources."acorn-7.1.1" + sources."acorn-walk-7.1.1" + ]; + }) + (sources."webpack-cli-3.3.11" // { + dependencies = [ + sources."cliui-5.0.0" + sources."emojis-list-2.1.0" + sources."enhanced-resolve-4.1.0" + sources."loader-utils-1.2.3" + sources."memory-fs-0.4.1" + sources."supports-color-6.1.0" + sources."yargs-13.2.4" + ]; + }) + (sources."webpack-dev-middleware-3.7.2" // { + dependencies = [ + sources."memory-fs-0.4.1" + sources."mime-2.4.4" + sources."webpack-log-2.0.0" + ]; + }) + (sources."webpack-dev-server-3.10.3" // { + dependencies = [ + sources."ansi-regex-2.1.1" + sources."camelcase-5.3.1" + (sources."cliui-4.1.0" // { + dependencies = [ + sources."ansi-regex-3.0.0" + sources."strip-ansi-4.0.0" + ]; + }) + sources."debug-4.1.1" + sources."get-caller-file-1.0.3" + sources."is-fullwidth-code-point-1.0.0" + sources."ms-2.1.2" + sources."require-main-filename-1.0.1" + sources."semver-6.3.0" + (sources."string-width-2.1.1" // { + dependencies = [ + sources."ansi-regex-3.0.0" + sources."is-fullwidth-code-point-2.0.0" + sources."strip-ansi-4.0.0" + ]; + }) + sources."strip-ansi-3.0.1" + sources."supports-color-6.1.0" + sources."webpack-log-2.0.0" + (sources."wrap-ansi-2.1.0" // { + dependencies = [ + sources."string-width-1.0.2" + ]; + }) + sources."yargs-12.0.5" + sources."yargs-parser-11.1.1" + ]; + }) + sources."webpack-log-1.2.0" + sources."webpack-sources-1.4.3" + (sources."websocket-1.0.31" // { + dependencies = [ + sources."debug-2.6.9" + ]; + }) + sources."websocket-driver-0.7.3" + sources."websocket-extensions-0.1.3" + sources."whatwg-encoding-1.0.5" + sources."whatwg-mimetype-2.3.0" + sources."whatwg-url-6.5.0" + sources."which-1.3.1" + sources."which-module-2.0.0" + sources."window-size-0.1.0" + sources."with-5.1.1" + sources."word-wrap-1.2.3" + sources."wordwrap-0.0.2" + sources."worker-farm-1.7.0" + sources."wrap-ansi-5.1.0" + sources."wrappy-1.0.2" + sources."write-file-atomic-2.4.1" + sources."ws-6.2.1" + sources."xml-name-validator-3.0.0" + sources."xtend-4.0.2" + sources."y18n-4.0.0" + sources."yaeti-0.0.6" + sources."yallist-3.1.1" + sources."yargs-3.10.0" + (sources."yargs-parser-13.1.2" // { + dependencies = [ + sources."camelcase-5.3.1" + ]; + }) + sources."ylru-1.2.1" + ]; + buildInputs = globalBuildInputs; + meta = { + license = "MIT"; + }; + production = false; + bypassCache = true; + reconstructLock = true; + }; +} \ No newline at end of file diff --git a/pkgs/applications/networking/cluster/spacegun/package.json b/pkgs/applications/networking/cluster/spacegun/package.json new file mode 100644 index 00000000000..7d419edb74a --- /dev/null +++ b/pkgs/applications/networking/cluster/spacegun/package.json @@ -0,0 +1,3 @@ +[ + { "spacegun": "git+https://github.com/dvallin/spacegun.git#v0.3.3" } +] diff --git a/pkgs/applications/networking/cluster/spark/default.nix b/pkgs/applications/networking/cluster/spark/default.nix index b8d4b947e32..162585851d0 100644 --- a/pkgs/applications/networking/cluster/spark/default.nix +++ b/pkgs/applications/networking/cluster/spark/default.nix @@ -54,6 +54,6 @@ stdenv.mkDerivation rec { license = stdenv.lib.licenses.asl20; platforms = stdenv.lib.platforms.all; maintainers = with maintainers; [ thoughtpolice offline kamilchm ]; - repositories.git = git://git.apache.org/spark.git; + repositories.git = "git://git.apache.org/spark.git"; }; } diff --git a/pkgs/applications/networking/cluster/taktuk/default.nix b/pkgs/applications/networking/cluster/taktuk/default.nix index 3423163f590..a5a2ace2399 100644 --- a/pkgs/applications/networking/cluster/taktuk/default.nix +++ b/pkgs/applications/networking/cluster/taktuk/default.nix @@ -25,7 +25,7 @@ stdenv.mkDerivation rec { network to transport commands and perform I/Os multiplexing. It doesn't require any specific software on the nodes thanks to a self-propagation algorithm.''; - homepage = http://taktuk.gforge.inria.fr/; + homepage = "http://taktuk.gforge.inria.fr/"; license = stdenv.lib.licenses.gpl2; maintainers = [ stdenv.lib.maintainers.bzizou ]; platforms = stdenv.lib.platforms.linux; diff --git a/pkgs/applications/networking/cluster/terraform-docs/default.nix b/pkgs/applications/networking/cluster/terraform-docs/default.nix index 606cd0370aa..a5b6e7d2f5e 100644 --- a/pkgs/applications/networking/cluster/terraform-docs/default.nix +++ b/pkgs/applications/networking/cluster/terraform-docs/default.nix @@ -1,7 +1,7 @@ { lib, buildGoPackage, fetchFromGitHub }: buildGoPackage rec { pname = "terraform-docs"; - version = "0.6.0"; + version = "0.9.1"; goPackagePath = "github.com/segmentio/${pname}"; @@ -9,7 +9,7 @@ buildGoPackage rec { owner = "segmentio"; repo = pname; rev = "v${version}"; - sha256 = "1p6prhjf82qnhf1zwl9h92j4ds5g383a6g9pwwnqbc3wdwy5zx7d"; + sha256 = "00sfzdqhf8g85m03r6mbzfas5vvc67iq7syb8ljcgxg8l1knxnjx"; }; preBuild = '' diff --git a/pkgs/applications/networking/cluster/terraform-inventory/default.nix b/pkgs/applications/networking/cluster/terraform-inventory/default.nix index 1bb8df88d01..38fbd1b4286 100644 --- a/pkgs/applications/networking/cluster/terraform-inventory/default.nix +++ b/pkgs/applications/networking/cluster/terraform-inventory/default.nix @@ -19,7 +19,7 @@ buildGoPackage rec { goDeps = ./deps.nix; meta = with stdenv.lib; { - homepage = https://github.com/adammck/terraform-inventory; + homepage = "https://github.com/adammck/terraform-inventory"; description = "Terraform state to ansible inventory adapter"; platforms = platforms.all; license = licenses.mit; diff --git a/pkgs/applications/networking/cluster/terraform-landscape/Gemfile.lock b/pkgs/applications/networking/cluster/terraform-landscape/Gemfile.lock index b801fad546d..7307d8a33f3 100644 --- a/pkgs/applications/networking/cluster/terraform-landscape/Gemfile.lock +++ b/pkgs/applications/networking/cluster/terraform-landscape/Gemfile.lock @@ -22,4 +22,4 @@ DEPENDENCIES terraform_landscape BUNDLED WITH - 1.16.3 + 2.1.4 diff --git a/pkgs/applications/networking/cluster/terraform-landscape/default.nix b/pkgs/applications/networking/cluster/terraform-landscape/default.nix index 32f6680b2f8..903aa9abb6e 100644 --- a/pkgs/applications/networking/cluster/terraform-landscape/default.nix +++ b/pkgs/applications/networking/cluster/terraform-landscape/default.nix @@ -10,7 +10,7 @@ bundlerApp { meta = with lib; { description = "Improve Terraform's plan output to be easier to read and understand"; - homepage = https://github.com/coinbase/terraform-landscape; + homepage = "https://github.com/coinbase/terraform-landscape"; license = with licenses; asl20; maintainers = with maintainers; [ mbode manveru nicknovitski ]; platforms = platforms.unix; diff --git a/pkgs/applications/networking/cluster/terraform-providers/data.nix b/pkgs/applications/networking/cluster/terraform-providers/data.nix index cd37083d935..d07b6321cb2 100644 --- a/pkgs/applications/networking/cluster/terraform-providers/data.nix +++ b/pkgs/applications/networking/cluster/terraform-providers/data.nix @@ -1,5 +1,13 @@ # Generated with ./update-all { + aci = + { + owner = "terraform-providers"; + repo = "terraform-provider-aci"; + rev = "v0.1.8"; + version = "0.1.8"; + sha256 = "14hya00ygz0khljjxwvkp6wbrbsavh2n8f26s2mjakph2havb8a3"; + }; acme = { owner = "terraform-providers"; @@ -8,17 +16,25 @@ version = "1.5.0"; sha256 = "1h53bgflchavnn4laf801d920bsgqqg0ph4slnf7y1fpb0mz5vdv"; }; + akamai = + { + owner = "terraform-providers"; + repo = "terraform-provider-akamai"; + rev = "v0.5.0"; + version = "0.5.0"; + sha256 = "18l1ik10pn4aq0911sqnfjw9a5zxrm0qbsgynvf5vxc02zds13n5"; + }; alicloud = { owner = "terraform-providers"; repo = "terraform-provider-alicloud"; - rev = "v1.63.0"; - version = "1.63.0"; - sha256 = "0353zsga4ic7rsgnk243v202l4hpy0xlzp95fnbmrz7p5wy2k8js"; + rev = "v1.77.0"; + version = "1.77.0"; + sha256 = "0g8i8dmxzgkzylh2hh4fa9nq6x8bmxqaz0ly0f0cijb82lcbc3qf"; }; archive = { - owner = "terraform-providers"; + owner = "hashicorp"; repo = "terraform-provider-archive"; rev = "v1.3.0"; version = "1.3.0"; @@ -32,37 +48,53 @@ version = "1.1.0"; sha256 = "1akl9fzgm5qv01vz18xjzyqjnlxw699qq4x8vr96j16l1zf10h99"; }; - atlas = + auth0 = { owner = "terraform-providers"; - repo = "terraform-provider-atlas"; - rev = "v0.1.1"; - version = "0.1.1"; - sha256 = "0k73vv14vnjl5qm33w54s5zzi0mmk1kn2zs3qkfq71aqi9ml7d14"; + repo = "terraform-provider-auth0"; + rev = "v0.8.1"; + version = "0.8.1"; + sha256 = "0hfmbw76p99xa9jz2sjss56p4wzqqhnf9l9gqgyamywfrdd2bn57"; + }; + aviatrix = + { + owner = "terraform-providers"; + repo = "terraform-provider-aviatrix"; + rev = "v2.12.0"; + version = "2.12.0"; + sha256 = "01n3cqb5k8gd0cll3nqbdmnx3mi0scm57j0xpzhxnif14kpj15g6"; + }; + avi = + { + owner = "terraform-providers"; + repo = "terraform-provider-avi"; + rev = "v0.2.1"; + version = "0.2.1"; + sha256 = "1pyknx5maq1qxm4i2y69iz9c2ym3q3n0fd4hbwxcl83n39cb5iy6"; }; aws = { owner = "terraform-providers"; repo = "terraform-provider-aws"; - rev = "v2.41.0"; - version = "2.41.0"; - sha256 = "0i9bh78ihmxj7hjbqzkkj7k6lvr3xdakf8qv0bfckcinwpzwzbxa"; + rev = "v2.55.0"; + version = "2.55.0"; + sha256 = "0pxmwdy5cin0navva1nf3l02yrqqbg01xcq3hf8w0ch8fgr8mr25"; }; azuread = { owner = "terraform-providers"; repo = "terraform-provider-azuread"; - rev = "v0.7.0"; - version = "0.7.0"; - sha256 = "1a7w31dvjz5498445ia4m5gd1js3k7ghz6qqfq51f2n86iafs0xq"; + rev = "v0.8.0"; + version = "0.8.0"; + sha256 = "0vljhjbizxh5s8f2ki7yn6hzf5xbn5swhxmq9wpxmg7jw5z0k6ha"; }; azurerm = { owner = "terraform-providers"; repo = "terraform-provider-azurerm"; - rev = "v1.37.0"; - version = "1.37.0"; - sha256 = "0n0582v8g3np8glyxnpnayps014jxclzrglcxf35wszfz9mspryg"; + rev = "v2.3.0"; + version = "2.3.0"; + sha256 = "195r6l0ddpjmmf947c1k5v0vdscnhsg2ilp6x7pna418pnx84y2d"; }; azurestack = { @@ -72,21 +104,29 @@ version = "0.9.0"; sha256 = "1msm7jwzry0vmas3l68h6p0migrsm6d18zpxcncv197m8xbvg324"; }; + baiducloud = + { + owner = "terraform-providers"; + repo = "terraform-provider-baiducloud"; + rev = "v1.1.0"; + version = "1.1.0"; + sha256 = "1va0b9vqfcv2nrqh8jwf80ylyl1x826jhb7h4ghnf18c144qm0i1"; + }; bigip = { owner = "terraform-providers"; repo = "terraform-provider-bigip"; - rev = "v1.1.0"; - version = "1.1.0"; - sha256 = "15fmxr1c39xx6ix38nigf8izrqzlmjjr6hvlkf7yhb5z7485nvsg"; + rev = "v1.12"; + version = "1.12"; + sha256 = "0yjv0xldplx7jfld1izzc7i93bzwdqrjjzymq02isy2xyfh8by35"; }; bitbucket = { owner = "terraform-providers"; repo = "terraform-provider-bitbucket"; - rev = "v1.1.0"; - version = "1.1.0"; - sha256 = "06bjagbgpgfphwym015wl00wx6qf7lsdig0fhpxqaykvlkn3sg49"; + rev = "v1.2.0"; + version = "1.2.0"; + sha256 = "11n4wpvmaab164g6k077n9dbdbhd5lwl7pxpha5492ks468nd95b"; }; brightbox = { @@ -96,6 +136,14 @@ version = "1.2.0"; sha256 = "0s1b2k58r2kmjrdqrkw2dlfpby79i81gml9rpa10y372bwq314zd"; }; + checkpoint = + { + owner = "terraform-providers"; + repo = "terraform-provider-checkpoint"; + rev = "v1.0.1"; + version = "1.0.1"; + sha256 = "1z2m8lbnplcfaij1xnclyhl4zlchx6bmvrc2fr4hwfzc58m9v7ra"; + }; chef = { owner = "terraform-providers"; @@ -104,13 +152,21 @@ version = "0.2.0"; sha256 = "0ihn4706fflmf0585w22l7arzxsa9biq4cgh8nlhlp5y0zy934ns"; }; - circonus = + cherryservers = { owner = "terraform-providers"; - repo = "terraform-provider-circonus"; - rev = "v0.4.0"; - version = "0.4.0"; - sha256 = "0iz7v7gfjgbca47vjnvcv9159kgladkad7cmjw2hpncrn2jjinwg"; + repo = "terraform-provider-cherryservers"; + rev = "v1.0.0"; + version = "1.0.0"; + sha256 = "1z6ai6q8aw38kiy8x13rp0dsvb4jk40cv8pk5c069q15m4jab8lh"; + }; + ciscoasa = + { + owner = "terraform-providers"; + repo = "terraform-provider-ciscoasa"; + rev = "v1.2.0"; + version = "1.2.0"; + sha256 = "033pgy42qwjpmjyzylpml7sfzd6dvvybs56cid1f6sm4ykmxbal7"; }; clc = { @@ -124,17 +180,17 @@ { owner = "terraform-providers"; repo = "terraform-provider-cloudflare"; - rev = "v2.1.0"; - version = "2.1.0"; - sha256 = "1ll06p4fz88mr4a51rqgvxykivx9xina6507mflyxaic59xlkdz4"; + rev = "v2.5.0"; + version = "2.5.0"; + sha256 = "1dqxn2iwbidmfb0850sicwqh4yp6ynarkl36lnr8nqw9lasvqr5a"; }; cloudscale = { owner = "terraform-providers"; repo = "terraform-provider-cloudscale"; - rev = "v2.1.0"; - version = "2.1.0"; - sha256 = "12vxzhpsivvq343mqkmnwklvnv6dc9h2ah0ixla9svdwjp91xfcd"; + rev = "v2.1.1"; + version = "2.1.1"; + sha256 = "122yi2wbd8mqddkwp2la6vwqw0kw7c9ff5j6y4xqczjg2bwb9mph"; }; cloudstack = { @@ -156,25 +212,25 @@ { owner = "terraform-providers"; repo = "terraform-provider-consul"; - rev = "v2.6.0"; - version = "2.6.0"; - sha256 = "1c7qpgf2vh4crs69alzwwaicsz29b2y72x4xjmfb9dg5cy7gk1i5"; + rev = "v2.7.0"; + version = "2.7.0"; + sha256 = "11c54waq7w34l79ak4kizjkmh8zjca5ygh9yib691hdmxsx2cifj"; }; datadog = { owner = "terraform-providers"; repo = "terraform-provider-datadog"; - rev = "v2.5.0"; - version = "2.5.0"; - sha256 = "0l5jix165ghfj72l3mr76d5b5lx5pgr45zimk8lr0fwn79f4bs74"; + rev = "v2.7.0"; + version = "2.7.0"; + sha256 = "0cq11cjcm2nlszqhsrj425mk8dp0h5ljrrn7jplrbffp8g6wvadd"; }; digitalocean = { owner = "terraform-providers"; repo = "terraform-provider-digitalocean"; - rev = "v1.11.0"; - version = "1.11.0"; - sha256 = "0s8z0zsfibclx0431fcqbi9yqkhwj4w0rz780z1dwv50xpgnmzql"; + rev = "v1.15.1"; + version = "1.15.1"; + sha256 = "0nld6lgz5vy8n4s0y0wpssrslp866rha2znli6pd5sw1nvi6yg0z"; }; dme = { @@ -184,29 +240,37 @@ version = "0.1.0"; sha256 = "1ipqw1sbx0i9rhxawsysrqxvf10z8ra2y86xwd4iz0f12x9drblv"; }; - dns = + dnsimple = { owner = "terraform-providers"; + repo = "terraform-provider-dnsimple"; + rev = "v0.3.0"; + version = "0.3.0"; + sha256 = "1m38whc6jx5mccaisnbnkawwlz1bxvy991rqy6h9xb10zyvqar62"; + }; + dns = + { + owner = "hashicorp"; repo = "terraform-provider-dns"; rev = "v2.2.0"; version = "2.2.0"; sha256 = "11xdxj6hfclaq9glbh14nihmrsk220crm9ld8bdv77w0bppmrrch"; }; - dnsimple = - { - owner = "terraform-providers"; - repo = "terraform-provider-dnsimple"; - rev = "v0.2.0"; - version = "0.2.0"; - sha256 = "0jj82fffqaz7gramj5d4avx7vka6w190yz4r9q7628qh8ih2pfhz"; - }; docker = { owner = "terraform-providers"; repo = "terraform-provider-docker"; - rev = "v2.6.0"; - version = "2.6.0"; - sha256 = "12qq7m75yxfczik78klqaimrzhp70m2vk5q0h3v8b2dwvvynj0dg"; + rev = "v2.7.0"; + version = "2.7.0"; + sha256 = "0pl515xjnic7mhfvqbml1z1win5mrhjdqb84jhd5n09j39lb24gx"; + }; + dome9 = + { + owner = "terraform-providers"; + repo = "terraform-provider-dome9"; + rev = "v1.17.0"; + version = "1.17.0"; + sha256 = "123phc71rnb25lv9glybadhmr3pdsrbzl7xm6mj8j213a78qdmn5"; }; dyn = { @@ -216,9 +280,17 @@ version = "1.2.0"; sha256 = "1a3kxmbib2y0nl7gnxknbhsflj5kfknxnm3gjxxrb2h5d2kvqy48"; }; - external = + exoscale = { owner = "terraform-providers"; + repo = "terraform-provider-exoscale"; + rev = "v0.16.1"; + version = "0.16.1"; + sha256 = "0gs39nx12ws0ikal9zyqkyfiljbxbw0pj7llj9xsq96s7crvy6xr"; + }; + external = + { + owner = "hashicorp"; repo = "terraform-provider-external"; rev = "v1.2.0"; version = "1.2.0"; @@ -228,49 +300,65 @@ { owner = "terraform-providers"; repo = "terraform-provider-fastly"; - rev = "v0.11.0"; - version = "0.11.0"; - sha256 = "0wq8l1lkfpv5nfd04dsjaa9wv09373i6wwnapifx1wncjyhs4jd4"; + rev = "v0.13.0"; + version = "0.13.0"; + sha256 = "0mcjmk21fil4q98p8v3qln7s2fqbdkjv1pvba0cf9v9d101dhhi9"; }; flexibleengine = { owner = "terraform-providers"; repo = "terraform-provider-flexibleengine"; - rev = "v1.9.0"; - version = "1.9.0"; - sha256 = "1y66xy5yqdjdrh3zkw1q7ml5b2rsyy4ayc4m026c4mmh0x1vfk9y"; + rev = "v1.11.1"; + version = "1.11.1"; + sha256 = "12kgnq2ydwi2n29y0dc7r251zrnq8kkskiq8p5ypsrm23j3jm6dw"; + }; + fortios = + { + owner = "terraform-providers"; + repo = "terraform-provider-fortios"; + rev = "v1.1.0"; + version = "1.1.0"; + sha256 = "0m006ah351f2ih7zvd3pnpga4d8mh42i4m8af4wflhvyzkw50xnf"; + }; + genymotion = + { + owner = "terraform-providers"; + repo = "terraform-provider-genymotion"; + rev = "v1.1.0"; + version = "1.1.0"; + sha256 = "02jpr3cm7rrf810c69sr6lcxzvxpnf7icc5z80gnvg67wwfg4ph4"; }; github = { owner = "terraform-providers"; repo = "terraform-provider-github"; - rev = "v2.2.1"; - version = "2.2.1"; - sha256 = "1dg5jgd3cdz98wfd71l58wsp949mvs2lrcqh1amgql0s90pwjmvg"; + rev = "v2.5.1"; + version = "2.5.1"; + sha256 = "1lqnwq5gsz34n6zzwajxrh0i1cbyicl4zxakr4fch7makri2fqwg"; }; gitlab = { owner = "terraform-providers"; repo = "terraform-provider-gitlab"; - rev = "v2.4.0"; - version = "2.4.0"; - sha256 = "0409n8miva205wkx968ggzmz0y121s99iybsjlkx0gja20x68yxx"; - }; - google = - { - owner = "terraform-providers"; - repo = "terraform-provider-google"; - rev = "v2.20.0"; - version = "2.20.0"; - sha256 = "1b19hql244lv74gxdwgqh9955d3zkwj7riaq6kj5ylbj44spcpjy"; + rev = "v2.5.0"; + version = "2.5.0"; + sha256 = "1g7girhjks6p7rcs82p2zd8clp6kdfn6d1synlmfwiw6d3496fvf"; }; google-beta = { owner = "terraform-providers"; repo = "terraform-provider-google-beta"; - rev = "v2.20.0"; - version = "2.20.0"; - sha256 = "0zkhyn17kji6yyl5582g5vhqj3rcbin73ym6vn6f0m7sf5yaplky"; + rev = "v3.15.0"; + version = "3.15.0"; + sha256 = "1xncw82y48dcc464v2gzfmr94l3kgh9x2rlmpmmy6g4mihiwh38b"; + }; + google = + { + owner = "terraform-providers"; + repo = "terraform-provider-google"; + rev = "v3.15.0"; + version = "3.15.0"; + sha256 = "0vw7sndy441xn34kiv2k9hq9p9g649amh7bk91rf0f5p8cmyll1c"; }; grafana = { @@ -280,69 +368,93 @@ version = "1.5.0"; sha256 = "0zy3bqgpxymp2zygaxzllk1ysdankwxa1sy1djfgr4fs2nlggkwi"; }; + gridscale = + { + owner = "terraform-providers"; + repo = "terraform-provider-gridscale"; + rev = "v1.5.0"; + version = "1.5.0"; + sha256 = "05nzia9sa555k07gkhyyckdgn9n6a50w8l3id69rjq1jjh0pngd7"; + }; hcloud = { owner = "terraform-providers"; repo = "terraform-provider-hcloud"; - rev = "v1.15.0"; - version = "1.15.0"; - sha256 = "0l554mf6s248j0453b4r5pafshcvhn2smk4pp23y9kq5g1xd0xmd"; + rev = "v1.16.0"; + version = "1.16.0"; + sha256 = "09v2bg4ffyh4ibz449dygxgd7mvjgh4b2r242l3cwi7pzn66imrz"; }; hedvig = { owner = "terraform-providers"; repo = "terraform-provider-hedvig"; - rev = "v1.0.5"; - version = "1.0.5"; - sha256 = "0dic4kqjwi3s8pss1pmgixnr7xi503gl5i7pcx66fam5y5ar92v5"; + rev = "v1.1.1"; + version = "1.1.1"; + sha256 = "1gd26jm9frn52hy2vm5sv003lbai5sjgdign6akhjmw5sdsmfr05"; }; helm = { owner = "terraform-providers"; repo = "terraform-provider-helm"; - rev = "v0.10.4"; - version = "0.10.4"; - sha256 = "0xl0wgh1j6yhymadqvlj21qddxfzaxk3d5wpzskfmhfk732795rc"; + rev = "v1.1.1"; + version = "1.1.1"; + sha256 = "0sna0xaibdh1aw3lxs1r2hidw95lxkpm4fqdw0hzmdqxwdmg4b40"; }; heroku = { owner = "terraform-providers"; repo = "terraform-provider-heroku"; - rev = "v2.2.1"; - version = "2.2.1"; - sha256 = "145kfm4asca0ksprb076mjdhs5ahrlrad8cqz8spxra5fa3j46sq"; + rev = "v2.3.0"; + version = "2.3.0"; + sha256 = "1lv3l54fw6rgj2ixkz2dvaf3djj3slhrm0nlbza5c7zjb945igfq"; }; http = { - owner = "terraform-providers"; + owner = "hashicorp"; repo = "terraform-provider-http"; - rev = "v1.1.1"; - version = "1.1.1"; - sha256 = "0ah4wi9gm5m7z0wyy6vn3baz2iw2sq7ah7q0lb9srwr887aai3x0"; + rev = "v1.2.0"; + version = "1.2.0"; + sha256 = "0q8ichbqrq62q1j0rc7sdz1jzfwg2l9v4ac9jqf6y485dblhmwqd"; + }; + huaweicloudstack = + { + owner = "terraform-providers"; + repo = "terraform-provider-huaweicloudstack"; + rev = "v1.1.0"; + version = "1.1.0"; + sha256 = "1zzf7jbvdlccfbb4cmw2k3mlfj4hh0lv59zahq2zy8afiajsb68i"; }; huaweicloud = { owner = "terraform-providers"; repo = "terraform-provider-huaweicloud"; - rev = "v1.10.0"; - version = "1.10.0"; - sha256 = "0aa83y0bzfldijd4jbmhqppc13jdqaax83p75kffwaxw1rmxrana"; + rev = "v1.13.0"; + version = "1.13.0"; + sha256 = "1caix3lycqnd856z6c3zp9mmq3vr7rblwhhbkwn4rrcld8sv285j"; }; icinga2 = { owner = "terraform-providers"; repo = "terraform-provider-icinga2"; - rev = "v0.2.0"; - version = "0.2.0"; - sha256 = "02ladn2w75k35vn8llj3zh9hbpnnnvpm47c9f29zshfs04acwbq0"; + rev = "v0.3.0"; + version = "0.3.0"; + sha256 = "0xwjxb84glhp9viqykziwanj696w2prq4r7k0565k0w3qiaz440v"; }; ignition = { owner = "terraform-providers"; repo = "terraform-provider-ignition"; - rev = "v1.2.0"; - version = "1.2.0"; - sha256 = "0dg5xak02rv7h9z07kjqxf55al188ligzq3m6711rlh62zam2cjc"; + rev = "v1.2.1"; + version = "1.2.1"; + sha256 = "0wd29iw0a5w7ykgs9m1mmi0bw5z9dl4z640qyz64x8rlh5hl1wql"; + }; + incapsula = + { + owner = "terraform-providers"; + repo = "terraform-provider-incapsula"; + rev = "v2.1.0"; + version = "2.1.0"; + sha256 = "12zw2m7j52rszfawywbiv9rgv976h1w6bp98012qn45d4ap2kvzy"; }; influxdb = { @@ -352,13 +464,29 @@ version = "1.3.0"; sha256 = "19af40g8hgz2rdz6523v0fs71ww7qdlf2mh5j9vb7pfzriqwa5k9"; }; + jdcloud = + { + owner = "terraform-providers"; + repo = "terraform-provider-jdcloud"; + rev = "v1.1.0"; + version = "1.1.0"; + sha256 = "04vz0m3z9rfw2hp0h3jhn625r2v37b319krznvhqylqzksv39dzf"; + }; kubernetes = { owner = "terraform-providers"; repo = "terraform-provider-kubernetes"; - rev = "v1.10.0"; - version = "1.10.0"; - sha256 = "04hd9n9jm72fi81cmdz0yf374fg52r8yinsxy0ag29rd3r2l1k81"; + rev = "v1.11.1"; + version = "1.11.1"; + sha256 = "13m0g52i2z4s58grk22rv0yqbrfszfbxxhwisb5mi7cma4cp7506"; + }; + launchdarkly = + { + owner = "terraform-providers"; + repo = "terraform-provider-launchdarkly"; + rev = "v1.1.0"; + version = "1.1.0"; + sha256 = "1gj0srv8shn6qg109y1g42dx8dybkp3qrjn412bvs6f063ggk0zs"; }; librato = { @@ -372,13 +500,13 @@ { owner = "terraform-providers"; repo = "terraform-provider-linode"; - rev = "v1.9.1"; - version = "1.9.1"; - sha256 = "10f7nij91fhgf1808r6rv3l13nz7p37mcln5p3nfvhsxskss3vxn"; + rev = "v1.9.2"; + version = "1.9.2"; + sha256 = "1nrk8fi0fwkcm4csrppjwv7vd2ilpbj01dywak696nj8b15w176q"; }; local = { - owner = "terraform-providers"; + owner = "hashicorp"; repo = "terraform-provider-local"; rev = "v1.4.0"; version = "1.4.0"; @@ -396,9 +524,9 @@ { owner = "terraform-providers"; repo = "terraform-provider-logicmonitor"; - rev = "v1.2.1"; - version = "1.2.1"; - sha256 = "1fcv5g92l6xr4x69h9rg48zazjr99wrz9mkmr122fyq9s7kdd98y"; + rev = "v1.3.0"; + version = "1.3.0"; + sha256 = "00d8qx95cxaif636dyh935nv9nn6lmb1ybxy7n4myy9g80y50ap1"; }; mailgun = { @@ -408,6 +536,30 @@ version = "0.4.1"; sha256 = "1l76pg4hmww9zg2n4rkhm5dwjh42fxri6d41ih1bf670krkxwsmz"; }; + matchbox = + { + owner = "poseidon"; + repo = "terraform-provider-matchbox"; + rev = "v0.3.0"; + version = "0.3.0"; + sha256 = "1nq7k8qa7rv8xyryjigwpwcwvj1sw85c4j46rkfdv70b6js25jz3"; + }; + metalcloud = + { + owner = "terraform-providers"; + repo = "terraform-provider-metalcloud"; + rev = "v2.2.0"; + version = "2.2.0"; + sha256 = "0xii9gk96srzi9y4pbvlx2cvwypll4igvk89f9qrg18qrw72ags3"; + }; + mongodbatlas = + { + owner = "terraform-providers"; + repo = "terraform-provider-mongodbatlas"; + rev = "v0.4.2"; + version = "0.4.2"; + sha256 = "0cb8dh7bwz9yzyhz8v9j6ksi4dgmmz8d1qpm7234rj36ccirnjmz"; + }; mysql = { owner = "terraform-providers"; @@ -416,49 +568,65 @@ version = "1.9.0"; sha256 = "14gxxki3jhncv3s2x828ns2vgmf2xxzigdyp9b54mbkw5rnv1k2g"; }; + ncloud = + { + owner = "terraform-providers"; + repo = "terraform-provider-ncloud"; + rev = "v1.2.0"; + version = "1.2.0"; + sha256 = "1h2fr0ss58dr3ypqj6kw90iyji6s83sz2i85vhs5z2adjbk7h8va"; + }; netlify = { owner = "terraform-providers"; repo = "terraform-provider-netlify"; - rev = "v0.3.0"; - version = "0.3.0"; - sha256 = "0mmbli6d3fbpyvvdfsg32f1w83g8ga3x21b36rgmx3mn156r7yij"; + rev = "v0.4.0"; + version = "0.4.0"; + sha256 = "07xds84k2vgpvn2cy3id7hmzg57sz2603zs4msn3ysxmi28lmqyg"; }; newrelic = { owner = "terraform-providers"; repo = "terraform-provider-newrelic"; - rev = "v1.8.0"; - version = "1.8.0"; - sha256 = "16fdif6hshdb1aswv22k590rcr3f6b3a9gmg8vc4lbyi6l2dfabd"; + rev = "v1.16.0"; + version = "1.16.0"; + sha256 = "0ddfffyrw28syg0y2q9j7xh4k2sjb8l40167rwgz19w39p1caffv"; + }; + nixos = + { + owner = "tweag"; + repo = "terraform-provider-nixos"; + rev = "v0.0.1"; + version = "0.0.1"; + sha256 = "00vz6qjq1pk39iqg4356b8g3c6slla9jifkv2knk46gc9q93q0lf"; }; nomad = { owner = "terraform-providers"; repo = "terraform-provider-nomad"; - rev = "v1.4.2"; - version = "1.4.2"; - sha256 = "0h0snkzqdi4g5lp78f5pq98x6556ldwgkg9p9jkmrg04y7928w5v"; + rev = "v1.4.4"; + version = "1.4.4"; + sha256 = "05029s8h8vx7pl0y3d9cd5nlww3483caxhwkbrmk0vs7zdgxk8ns"; }; ns1 = { owner = "terraform-providers"; repo = "terraform-provider-ns1"; - rev = "v1.6.1"; - version = "1.6.1"; - sha256 = "0zyn165h42p640k1q85x3n8fw1fs9j72z9lnfa8pas89jy2fmi8b"; + rev = "v1.8.0"; + version = "1.8.0"; + sha256 = "1h1pqrj11wdi0fnrrh2mkwahi59jl2vd8affy4acx7kny4n92s49"; }; nsxt = { owner = "terraform-providers"; repo = "terraform-provider-nsxt"; - rev = "v1.1.2"; - version = "1.1.2"; - sha256 = "1hnxivad7371j363sp3460mfzl5alb3dhxsbp0qwfl5mzvriwrbl"; + rev = "v2.0.0"; + version = "2.0.0"; + sha256 = "0fka793r0c06sz8vlxk0z7vbm6kab5xzk39r5pznkq34004r17sl"; }; null = { - owner = "terraform-providers"; + owner = "hashicorp"; repo = "terraform-provider-null"; rev = "v2.1.2"; version = "2.1.2"; @@ -476,9 +644,25 @@ { owner = "terraform-providers"; repo = "terraform-provider-oci"; - rev = "v3.54.0-rc1"; - version = "3.54.0-rc1"; - sha256 = "14mfkjjpq4sfw0j4w1mnh37x9kwn76rs1y6cjqq9zb8fnhva6gax"; + rev = "v3.69.0"; + version = "3.69.0"; + sha256 = "17vndv6bpa9ajs7llnf64bb482b15virbv311d3ds5lrva4vvrv8"; + }; + oktaasa = + { + owner = "terraform-providers"; + repo = "terraform-provider-oktaasa"; + rev = "v1.0.0"; + version = "1.0.0"; + sha256 = "093d5r8dz8gryk8qp5var2qrrgkvs1gwgw3zqpxry9xc5cpn30w0"; + }; + okta = + { + owner = "terraform-providers"; + repo = "terraform-provider-okta"; + rev = "v3.1.1"; + version = "3.1.1"; + sha256 = "1hky6hqrfyl2gj1lykb7gazj9awjgsxhc028558whm5rysx2wpsr"; }; oneandone = { @@ -496,29 +680,37 @@ version = "1.3.7"; sha256 = "01g09w8mqfp1d8phplsdj0vz63q5bgq9fqwy2kp4vrnwb70dq52w"; }; + opennebula = + { + owner = "terraform-providers"; + repo = "terraform-provider-opennebula"; + rev = "v0.1.1"; + version = "0.1.1"; + sha256 = "048cqd89fz5xpji1w8ylg75nbzzcx1c5n89y1k0ra8d3g2208yb2"; + }; openstack = { owner = "terraform-providers"; repo = "terraform-provider-openstack"; - rev = "v1.24.0"; - version = "1.24.0"; - sha256 = "1w82ix6l6ad7q0zl00hys8c4gm27nnk12wm2n8i3prwpjnrar70m"; + rev = "v1.26.0"; + version = "1.26.0"; + sha256 = "1vsvzs8112vbi0x99yg6niw0wr55p09x7cg85qwjd0r42gpfdfq2"; }; opentelekomcloud = { owner = "terraform-providers"; repo = "terraform-provider-opentelekomcloud"; - rev = "v1.14.0"; - version = "1.14.0"; - sha256 = "1mjb6br8iy76q417lmg04xnv4hkgi2fgdn3qnr3nvlwnnccp230k"; + rev = "v1.16.0"; + version = "1.16.0"; + sha256 = "1bxkh8qnm1mw37wi4rxf29q8lksp864124nwbyn14fwb4h6m1yj4"; }; opsgenie = { owner = "terraform-providers"; repo = "terraform-provider-opsgenie"; - rev = "v0.2.5"; - version = "0.2.5"; - sha256 = "0brjqnlnxqss285n2g1z006bibbdh5v47g75l5kyhyhhchavccma"; + rev = "v0.2.9"; + version = "0.2.9"; + sha256 = "13y6awnm9j5qzq1bcmhg7ngzvx43h2dw9wmzdfi1xcpmv1ldvwpi"; }; oraclepaas = { @@ -532,49 +724,57 @@ { owner = "terraform-providers"; repo = "terraform-provider-ovh"; - rev = "v0.5.0"; - version = "0.5.0"; - sha256 = "07n8ismxbv0gngh4kibqhr4ndqkrg6gxbpj3zl764rrwp54gwgbw"; + rev = "v0.7.0"; + version = "0.7.0"; + sha256 = "167msjsl8xh8zy7lrxvkq2h98xpvxpsjzlil8lcxqmz8qq8a0q5f"; }; packet = { owner = "terraform-providers"; repo = "terraform-provider-packet"; - rev = "v2.7.1"; - version = "2.7.1"; - sha256 = "1hmja9c8ab66yr814psz1zsa4y0nbmd5rcnp3qxdgizp45yrvz3i"; + rev = "v2.8.0"; + version = "2.8.0"; + sha256 = "1qnjla347hll0fav0ngnifblk6slbmh1klnm7k9jv327jmv92hz5"; }; pagerduty = { owner = "terraform-providers"; repo = "terraform-provider-pagerduty"; - rev = "v1.4.1"; - version = "1.4.1"; - sha256 = "0dmafnlziyczad907isjqzsn1fyjzc8pdigp3m6114bbnca0ry5k"; + rev = "v1.5.1"; + version = "1.5.1"; + sha256 = "12n12sx1qxckqklcaphzr0j9bcwzrl6p8qzdc3d2csiqccqrpdas"; }; panos = { owner = "terraform-providers"; repo = "terraform-provider-panos"; - rev = "v1.6.1"; - version = "1.6.1"; - sha256 = "06hwi426x7ipmn4dbg5dyv9z84sxaa8q1jlcd2l264n9s2y3xhiq"; + rev = "v1.6.2"; + version = "1.6.2"; + sha256 = "1qy6jynv61zhvq16s8jkwjhxz7r65cmk9k37ahh07pbhdx707mz5"; + }; + pass = + { + owner = "camptocamp"; + repo = "terraform-provider-pass"; + rev = "1.2.1"; + version = "1.2.1"; + sha256 = "1hf5mvgz5ycp7shiy8px205d9kwswfjmclg7mlh9a55bkraffahk"; }; postgresql = { owner = "terraform-providers"; repo = "terraform-provider-postgresql"; - rev = "v1.3.0"; - version = "1.3.0"; - sha256 = "14ma5lm6ng52dfl8bl4rmpy8ylnkbvnbskvkr6r5sn28x51p601y"; + rev = "v1.5.0"; + version = "1.5.0"; + sha256 = "1c9vn1jpfan04iidzn030q21bz3xabrd5pdhlbblblf558ykn4q0"; }; powerdns = { owner = "terraform-providers"; repo = "terraform-provider-powerdns"; - rev = "v1.2.0"; - version = "1.2.0"; - sha256 = "1108hq4z4is305hnbkn95gv0f5lx5l27wvxvq0g03fcdqdimkrfn"; + rev = "v1.3.0"; + version = "1.3.0"; + sha256 = "0in8f9vfi9y71qac643lfgapbnxi40cwq9b3l82fl1r8ghg7kgri"; }; profitbricks = { @@ -584,25 +784,41 @@ version = "1.4.4"; sha256 = "0pzcl3pdhaykihvv1v38zrv607mydchvkzrzhwcakgmdkp3vq54i"; }; + pureport = + { + owner = "terraform-providers"; + repo = "terraform-provider-pureport"; + rev = "v1.1.8"; + version = "1.1.8"; + sha256 = "02vmqwjz5m5hj4zghwicjp27dxvc4qsiwj4gjsi66w6djdqnh4h1"; + }; rabbitmq = { owner = "terraform-providers"; repo = "terraform-provider-rabbitmq"; - rev = "v1.1.0"; - version = "1.1.0"; - sha256 = "0xihc44923kx8c3v6wrvczzbhmbjkhy7dhgx3sy5sqhmm22y0gys"; + rev = "v1.3.0"; + version = "1.3.0"; + sha256 = "1adkbfm0p7a9i1i53bdmb34g5871rklgqkx7kzmwmk4fvv89n6g8"; + }; + rancher2 = + { + owner = "terraform-providers"; + repo = "terraform-provider-rancher2"; + rev = "v1.8.1"; + version = "1.8.1"; + sha256 = "15pvz1sd1x932yxdp7d679vax3dw56bfhp3422vxqsgmdgscwg1s"; }; rancher = { owner = "terraform-providers"; repo = "terraform-provider-rancher"; - rev = "v1.4.0"; - version = "1.4.0"; - sha256 = "106arszmdjmgrz4iv01bbf72jarn7zjqvmc43b6n1s3lzd7jnfpc"; + rev = "v1.5.0"; + version = "1.5.0"; + sha256 = "0yhv9ahj6ajspgnl2f77gpyd6klq44dyl74lvl10bx6yy56abi2m"; }; random = { - owner = "terraform-providers"; + owner = "hashicorp"; repo = "terraform-provider-random"; rev = "v2.2.1"; version = "2.2.1"; @@ -636,25 +852,49 @@ { owner = "terraform-providers"; repo = "terraform-provider-scaleway"; - rev = "v1.12.0"; - version = "1.12.0"; - sha256 = "0044fq5jkdx2ryc2bxqajkrngs6z81kd2narg4zxvfn0r1bfswvc"; + rev = "v1.14.0"; + version = "1.14.0"; + sha256 = "0j428pinwyyldg1jhlkad32213z98q3891yv906d6n7jg2bk5m6a"; + }; + secret = + { + owner = "tweag"; + repo = "terraform-provider-secret"; + rev = "v1.1.0"; + version = "1.1.0"; + sha256 = "09gv0fpsrxzgna0xrhrdk8d4va9s0gvdbz596r306qxb4mip4w3r"; + }; + segment = + { + owner = "ajbosco"; + repo = "terraform-provider-segment"; + rev = "v0.2.0"; + version = "0.2.0"; + sha256 = "0ic5b9djhnb1bs2bz3zdprgy3r55dng09xgc4d9l9fyp85g2amaz"; }; selectel = { owner = "terraform-providers"; repo = "terraform-provider-selectel"; - rev = "v3.0.0"; - version = "3.0.0"; - sha256 = "0fr97j85inaqvdqmlfk3xcq73zvncn001nsd03pp2ws30qqa8p7r"; + rev = "v3.1.0"; + version = "3.1.0"; + sha256 = "1ajhnjlx4bf91z04cp8245j3h2h9c30ajf934zr29jvwli0y3piw"; + }; + signalfx = + { + owner = "terraform-providers"; + repo = "terraform-provider-signalfx"; + rev = "v4.18.6"; + version = "4.18.6"; + sha256 = "1xjajkvkcksz0dnawjb3hv14ysp140g0vdj5warshafz8hjbys17"; }; skytap = { owner = "terraform-providers"; repo = "terraform-provider-skytap"; - rev = "v0.11.1"; - version = "0.11.1"; - sha256 = "1mlv6jp6lp47chcnsmx8dzy01bxpb9jx1wl122lxd88app9nxq1k"; + rev = "v0.14.0"; + version = "0.14.0"; + sha256 = "01cscykfw5qilf5rlvh7y2l3bqbv8f180ssqw7zqzyr9p4m6511l"; }; softlayer = { @@ -668,9 +908,17 @@ { owner = "terraform-providers"; repo = "terraform-provider-spotinst"; - rev = "v1.13.4"; - version = "1.13.4"; - sha256 = "063lhm065y6qh9b2k11qjnqyfg5zrx6wa3bqrm7d1dqcha1i6d9f"; + rev = "v1.14.3"; + version = "1.14.3"; + sha256 = "06brm0bvr13f31km55y8bp4z1xj3imfi11k7l5nirjp73cbvcpmg"; + }; + stackpath = + { + owner = "terraform-providers"; + repo = "terraform-provider-stackpath"; + rev = "v1.3.0"; + version = "1.3.0"; + sha256 = "0gsr903v6fngaxm2r5h53g9yc3jpx2zccqq07rhzm9jbsfb6rlzn"; }; statuscake = { @@ -690,7 +938,7 @@ }; template = { - owner = "terraform-providers"; + owner = "hashicorp"; repo = "terraform-provider-template"; rev = "v2.1.2"; version = "2.1.2"; @@ -700,9 +948,9 @@ { owner = "terraform-providers"; repo = "terraform-provider-tencentcloud"; - rev = "v1.25.2"; - version = "1.25.2"; - sha256 = "1pf4l9rvkarl4vhf51np4kdqcgs4jhsr5gw7vs6rn8gv97lb40kw"; + rev = "v1.30.7"; + version = "1.30.7"; + sha256 = "0d7byng63sxbgn8f5r92lkcaqvq3r0plm619h63f47h6z6z8xarc"; }; terraform = { @@ -716,13 +964,13 @@ { owner = "terraform-providers"; repo = "terraform-provider-tfe"; - rev = "v0.11.1"; - version = "0.11.1"; - sha256 = "0iagddaivpd7cxgf8ha2pk0m66gi4a804s86fsxla0j1knmmyra0"; + rev = "v0.15.1"; + version = "0.15.1"; + sha256 = "0372yjifsr4kvbc36hzhzf6ajlg6wy1r2x94p67m7rgr2fw061n2"; }; tls = { - owner = "terraform-providers"; + owner = "hashicorp"; repo = "terraform-provider-tls"; rev = "v2.1.1"; version = "2.1.1"; @@ -740,9 +988,9 @@ { owner = "terraform-providers"; repo = "terraform-provider-ucloud"; - rev = "v1.14.1"; - version = "1.14.1"; - sha256 = "04vi87q2fhy907l7rwsbq5p6l9vm6avm1hbf9qwddkbxx2kjjf64"; + rev = "v1.17.0"; + version = "1.17.0"; + sha256 = "0dpy3bkrm20sk4zpkikas5c8ygl0zf9v6cnd34iblw1m41f44n7v"; }; ultradns = { @@ -756,57 +1004,57 @@ { owner = "terraform-providers"; repo = "terraform-provider-vault"; - rev = "v2.6.0"; - version = "2.6.0"; - sha256 = "0sw1swy2j9n3ji48sxmj093zzlq7sdmp8ixmz488ps3m4jjyfk6k"; + rev = "v2.9.0"; + version = "2.9.0"; + sha256 = "0a1jkwxz45qcbnd91im0xz948k197zal78n6y45bwcbqnil32yiy"; }; vcd = { owner = "terraform-providers"; repo = "terraform-provider-vcd"; - rev = "v2.5.0"; - version = "2.5.0"; - sha256 = "0h78ij9rkx43i9kdcfy7waa6xyn2j40zgm6im3zp0yswy6vjlcyq"; + rev = "v2.7.0"; + version = "2.7.0"; + sha256 = "0bh8hqxpy6722q1v9cnpvn8fqwh5llzz1aavrbsib5brgjc8vqmy"; + }; + venafi = + { + owner = "terraform-providers"; + repo = "terraform-provider-venafi"; + rev = "v0.9.2"; + version = "0.9.2"; + sha256 = "06nk5c7lxs8fc04sz97lc3yk1zk1b9phkzw6fj9fnmpgaak87bj9"; + }; + vra7 = + { + owner = "terraform-providers"; + repo = "terraform-provider-vra7"; + rev = "v0.5.0"; + version = "0.5.0"; + sha256 = "123yskwgzp771nx03sg49vwi5ph3zf2ajf06s7msj0blvz6wan4v"; }; vsphere = { owner = "terraform-providers"; repo = "terraform-provider-vsphere"; - rev = "v1.13.0"; - version = "1.13.0"; - sha256 = "10gl042l5mlmklhjjknwln1qcwl65xz8sbg1acyv8xkb6nsaxcf1"; + rev = "v1.17.0"; + version = "1.17.0"; + sha256 = "16fglpfy8grlifaa1d1ymvjys7wh39m6py8h45g1xgs1jyfkz00s"; }; - yandex = + vthunder = { owner = "terraform-providers"; - repo = "terraform-provider-yandex"; - rev = "v0.24.0"; - version = "0.24.0"; - sha256 = "0a9isivn3ni0d1id8ww97xbcwrxc0c4pn1m1q21cipqs6mwksq9m"; + repo = "terraform-provider-vthunder"; + rev = "v0.1.0"; + version = "0.1.0"; + sha256 = "1mw55g0kjgp300p6y4s8wc91fgfxjm0cbszfzgbc8ca4b00j8cc2"; }; - segment = + vultr = { - owner = "ajbosco"; - repo = "terraform-provider-segment"; - rev = "v0.2.0"; - version = "0.2.0"; - sha256 = "0ic5b9djhnb1bs2bz3zdprgy3r55dng09xgc4d9l9fyp85g2amaz"; - }; - pass = - { - owner = "camptocamp"; - repo = "terraform-provider-pass"; - rev = "1.2.1"; - version = "1.2.1"; - sha256 = "1hf5mvgz5ycp7shiy8px205d9kwswfjmclg7mlh9a55bkraffahk"; - }; - matchbox = - { - owner = "poseidon"; - repo = "terraform-provider-matchbox"; - rev = "v0.3.0"; - version = "0.3.0"; - sha256 = "1nq7k8qa7rv8xyryjigwpwcwvj1sw85c4j46rkfdv70b6js25jz3"; + owner = "terraform-providers"; + repo = "terraform-provider-vultr"; + rev = "v1.1.4"; + version = "1.1.4"; + sha256 = "14anp7b759yyh78ickas52amads2lmwg85h8i0ikln7qhrhl42d7"; }; wavefront = { @@ -816,20 +1064,12 @@ version = "2.1.1"; sha256 = "0cbs74kd820i8f13a9jfbwh2y5zmmx3c2mp07qy7m0xx3m78jksn"; }; - nixos = + yandex = { - owner = "tweag"; - repo = "terraform-provider-nixos"; - rev = "v0.0.1"; - version = "0.0.1"; - sha256 = "00vz6qjq1pk39iqg4356b8g3c6slla9jifkv2knk46gc9q93q0lf"; - }; - secret = - { - owner = "tweag"; - repo = "terraform-provider-secret"; - rev = "v1.1.0"; - version = "1.1.0"; - sha256 = "09gv0fpsrxzgna0xrhrdk8d4va9s0gvdbz596r306qxb4mip4w3r"; + owner = "terraform-providers"; + repo = "terraform-provider-yandex"; + rev = "v0.35.0"; + version = "0.35.0"; + sha256 = "10zj5s0zdgh54rlczyvkq292v9xj1ivvn2k9ml65l6j3h0axlgxv"; }; } diff --git a/pkgs/applications/networking/cluster/terraform-providers/default.nix b/pkgs/applications/networking/cluster/terraform-providers/default.nix index 6298c25ba25..c3c44160c1b 100644 --- a/pkgs/applications/networking/cluster/terraform-providers/default.nix +++ b/pkgs/applications/networking/cluster/terraform-providers/default.nix @@ -2,7 +2,6 @@ , buildGoPackage , fetchFromGitHub , callPackage -, buildGo112Module }: let list = import ./data.nix; @@ -16,22 +15,126 @@ let src = fetchFromGitHub { inherit owner repo rev sha256; }; - - # Terraform allow checking the provider versions, but this breaks # if the versions are not provided via file paths. postBuild = "mv go/bin/${repo}{,_v${version}}"; }; -in - { - elasticsearch = callPackage ./elasticsearch { - # Version 0.7.0 fails to build with go 1.13 due to dependencies: - # verifying git.apache.org/thrift.git@v0.12.0/go.mod: git.apache.org/thrift.git@v0.12.0/go.mod: Get https://sum.golang.org/lookup/git.apache.org/thrift.git@v0.12.0: dial tcp: lookup sum.golang.org on [::1]:53: read udp [::1]:52968->[::1]:53: read: connection refused - # verifying github.com/hashicorp/terraform@v0.12.0/go.mod: github.com/hashicorp/terraform@v0.12.0/go.mod: Get https://sum.golang.org/lookup/github.com/hashicorp/terraform@v0.12.0: dial tcp: lookup sum.golang.org on [::1]:53: read udp [::1]:52968->[::1]:53: read: connection refused - buildGoModule = buildGo112Module; - }; + + # Google is now using the vendored go modules, which works a bit differently + # and is not 100% compatible with the pre-modules vendored folders. + # + # Instead of switching to goModules which requires a goModSha256, patch the + # goPackage derivation so it can install the top-level. + patchGoModVendor = drv: + drv.overrideAttrs (attrs: { + buildFlags = "-mod=vendor"; + + # override configurePhase to not move the source into GOPATH + configurePhase = '' + export GOPATH=$NIX_BUILD_TOP/go:$GOPATH + export GOCACHE=$TMPDIR/go-cache + export GO111MODULE=on + ''; + + # just build and install into $GOPATH/bin + buildPhase = '' + go install -mod=vendor -v -p 16 . + ''; + + # don't run the tests, they are broken in this setup + doCheck = false; + }); + + # These providers are managed with the ./update-all script + automated-providers = lib.mapAttrs (_: toDrv) list; + + # These are the providers that don't fall in line with the default model + special-providers = { + # Override the google providers + google = patchGoModVendor automated-providers.google; + google-beta = patchGoModVendor automated-providers.google-beta; + + # providers that were moved to the `hashicorp` organization, + # but haven't updated their references yet: + + # https://github.com/hashicorp/terraform-provider-archive/pull/67 + archive = automated-providers.archive.overrideAttrs (attrs: { + prePatch = attrs.prePatch or "" + '' + substituteInPlace go.mod --replace terraform-providers/terraform-provider-archive hashicorp/terraform-provider-archive + substituteInPlace main.go --replace terraform-providers/terraform-provider-archive hashicorp/terraform-provider-archive + ''; + }); + + # https://github.com/hashicorp/terraform-provider-dns/pull/101 + dns = automated-providers.dns.overrideAttrs (attrs: { + prePatch = attrs.prePatch or "" + '' + substituteInPlace go.mod --replace terraform-providers/terraform-provider-dns hashicorp/terraform-provider-dns + substituteInPlace main.go --replace terraform-providers/terraform-provider-dns hashicorp/terraform-provider-dns + ''; + }); + + # https://github.com/hashicorp/terraform-provider-external/pull/41 + external = automated-providers.external.overrideAttrs (attrs: { + prePatch = attrs.prePatch or "" + '' + substituteInPlace go.mod --replace terraform-providers/terraform-provider-external hashicorp/terraform-provider-external + substituteInPlace main.go --replace terraform-providers/terraform-provider-external hashicorp/terraform-provider-external + ''; + }); + + # https://github.com/hashicorp/terraform-provider-http/pull/40 + http = automated-providers.http.overrideAttrs (attrs: { + prePatch = attrs.prePatch or "" + '' + substituteInPlace go.mod --replace terraform-providers/terraform-provider-http hashicorp/terraform-provider-http + substituteInPlace main.go --replace terraform-providers/terraform-provider-http hashicorp/terraform-provider-http + ''; + }); + + # https://github.com/hashicorp/terraform-provider-local/pull/40 + local = automated-providers.local.overrideAttrs (attrs: { + prePatch = attrs.prePatch or "" + '' + substituteInPlace go.mod --replace terraform-providers/terraform-provider-local hashicorp/terraform-provider-local + substituteInPlace main.go --replace terraform-providers/terraform-provider-local hashicorp/terraform-provider-local + ''; + }); + + # https://github.com/hashicorp/terraform-provider-null/pull/43 + null = automated-providers.null.overrideAttrs (attrs: { + prePatch = attrs.prePatch or "" + '' + substituteInPlace go.mod --replace terraform-providers/terraform-provider-null hashicorp/terraform-provider-null + substituteInPlace main.go --replace terraform-providers/terraform-provider-null hashicorp/terraform-provider-null + ''; + }); + + # https://github.com/hashicorp/terraform-provider-random/pull/107 + random = automated-providers.random.overrideAttrs (attrs: { + prePatch = attrs.prePatch or "" + '' + substituteInPlace go.mod --replace terraform-providers/terraform-provider-random hashicorp/terraform-provider-random + substituteInPlace main.go --replace terraform-providers/terraform-provider-random hashicorp/terraform-provider-random + ''; + }); + + # https://github.com/hashicorp/terraform-provider-template/pull/79 + template = automated-providers.template.overrideAttrs (attrs: { + prePatch = attrs.prePatch or "" + '' + substituteInPlace go.mod --replace terraform-providers/terraform-provider-template hashicorp/terraform-provider-template + substituteInPlace main.go --replace terraform-providers/terraform-provider-template hashicorp/terraform-provider-template + ''; + }); + + # https://github.com/hashicorp/terraform-provider-tls/pull/71 + tls = automated-providers.tls.overrideAttrs (attrs: { + prePatch = attrs.prePatch or "" + '' + substituteInPlace go.mod --replace terraform-providers/terraform-provider-tls hashicorp/terraform-provider-tls + substituteInPlace main.go --replace terraform-providers/terraform-provider-tls hashicorp/terraform-provider-tls + ''; + }); + + elasticsearch = callPackage ./elasticsearch {}; gandi = callPackage ./gandi {}; ibm = callPackage ./ibm {}; libvirt = callPackage ./libvirt {}; + lxd = callPackage ./lxd {}; ansible = callPackage ./ansible {}; - } // lib.mapAttrs (n: v: toDrv v) list + }; +in + automated-providers // special-providers diff --git a/pkgs/applications/networking/cluster/terraform-providers/ibm/default.nix b/pkgs/applications/networking/cluster/terraform-providers/ibm/default.nix index 06d7b8a9f07..bd667dbc15f 100644 --- a/pkgs/applications/networking/cluster/terraform-providers/ibm/default.nix +++ b/pkgs/applications/networking/cluster/terraform-providers/ibm/default.nix @@ -29,7 +29,7 @@ buildGoPackage rec { postBuild = "mv go/bin/terraform-provider-ibm{,_v${version}}"; meta = with stdenv.lib; { - homepage = https://github.com/IBM-Cloud/terraform-provider-ibm; + homepage = "https://github.com/IBM-Cloud/terraform-provider-ibm"; description = "Terraform provider is used to manage IBM Cloud resources."; platforms = platforms.all; license = licenses.mpl20; diff --git a/pkgs/applications/networking/cluster/terraform-providers/libvirt/default.nix b/pkgs/applications/networking/cluster/terraform-providers/libvirt/default.nix index 23c4f4bfa8b..daffb593090 100644 --- a/pkgs/applications/networking/cluster/terraform-providers/libvirt/default.nix +++ b/pkgs/applications/networking/cluster/terraform-providers/libvirt/default.nix @@ -19,7 +19,7 @@ buildGoPackage rec { pname = "terraform-provider-libvirt"; - version = "0.5.1"; + version = "0.6.1"; goPackagePath = "github.com/dmacvicar/terraform-provider-libvirt"; @@ -27,10 +27,12 @@ buildGoPackage rec { owner = "dmacvicar"; repo = "terraform-provider-libvirt"; rev = "v${version}"; - sha256 = "0shnj5byqj3qzyqniiy1dcygd8xw1h2bx9z6mgcydw8k64fkm4bw"; + sha256 = "1l2n97nj6g44n7bhnbjwmv36xi6754p4iq2qnpkdh39x4384a0zz"; }; - buildInputs = [ libvirt pkgconfig makeWrapper ]; + nativeBuildInputs = [ pkgconfig makeWrapper ]; + + buildInputs = [ libvirt ]; # mkisofs needed to create ISOs holding cloud-init data, # and wrapped to terraform via deecb4c1aab780047d79978c636eeb879dd68630 @@ -41,11 +43,10 @@ buildGoPackage rec { postBuild = "mv go/bin/terraform-provider-libvirt{,_v${version}}"; meta = with stdenv.lib; { - homepage = https://github.com/dmacvicar/terraform-provider-libvirt; + homepage = "https://github.com/dmacvicar/terraform-provider-libvirt"; description = "Terraform provider for libvirt"; platforms = platforms.linux; license = licenses.asl20; maintainers = with maintainers; [ mic92 ]; }; } - diff --git a/pkgs/applications/networking/cluster/terraform-providers/lxd/default.nix b/pkgs/applications/networking/cluster/terraform-providers/lxd/default.nix new file mode 100644 index 00000000000..fd2a6c36d65 --- /dev/null +++ b/pkgs/applications/networking/cluster/terraform-providers/lxd/default.nix @@ -0,0 +1,25 @@ +{ stdenv, buildGoModule, fetchFromGitHub }: + +buildGoModule rec { + pname = "terraform-provider-lxd"; + version = "1.3.0"; + + src = fetchFromGitHub { + owner = "sl1pm4t"; + repo = "terraform-provider-lxd"; + rev = "v${version}"; + sha256 = "1k54021178zybh9dqly2ly8ji9x5rka8dn9xd6rv7gkcl5w3y6fv"; + }; + + modSha256 = "1h95ng9by3i3v15s1ws1fv86a47vglivn42xbffdy94s108g0908"; + + postBuild = "mv ../go/bin/terraform-provider-lxd{,_v${version}}"; + + meta = with stdenv.lib; { + homepage = "https://github.com/sl1pm4t/terraform-provider-lxd"; + description = "Terraform provider for lxd"; + platforms = platforms.linux; + license = licenses.mpl20; + maintainers = with maintainers; [ gila ]; + }; +} diff --git a/pkgs/applications/networking/cluster/terraform-providers/providers.txt b/pkgs/applications/networking/cluster/terraform-providers/providers.txt deleted file mode 100644 index bdde6600678..00000000000 --- a/pkgs/applications/networking/cluster/terraform-providers/providers.txt +++ /dev/null @@ -1,18 +0,0 @@ -# lines starting with a # are comments - -# The accepted format (double escape all grep expresssions): -# [grep-expression] [grep-v-expression] - include all repositories in the organisation. -# grep-expression: filter repo matching the expression -# grep-v-expression: filter repo not matching the expression -# / - include only the named repository. - -# include all terraform-providers -terraform-providers terraform-provider- terraform-provider-\\(azure-classic\\|scaffolding\\) - -# include providers from individual repos -ajbosco/terraform-provider-segment -camptocamp/terraform-provider-pass -poseidon/terraform-provider-matchbox -spaceapegames/terraform-provider-wavefront -tweag/terraform-provider-nixos -tweag/terraform-provider-secret diff --git a/pkgs/applications/networking/cluster/terraform-providers/update-all b/pkgs/applications/networking/cluster/terraform-providers/update-all index 893a6b1c7d7..89ed5a94f2a 100755 --- a/pkgs/applications/networking/cluster/terraform-providers/update-all +++ b/pkgs/applications/networking/cluster/terraform-providers/update-all @@ -1,6 +1,7 @@ #!/usr/bin/env nix-shell -#! nix-shell -i bash -p bash coreutils curl jq nix +#! nix-shell -i bash -p bash coreutils jq nix gitAndTools.hub # vim: ft=sh sw=2 et +# shellcheck shell=bash # # This scripts scans the github terraform-providers repo for new releases, # generates the corresponding nix code and finally generates an index of @@ -10,37 +11,53 @@ set -euo pipefail # the maximum number of attempts before giving up inside of GET and prefetch_github readonly maxAttempts=30 -GET() { - local url=$1 - local retry=1 - echo "fetching $url" >&2 - while ! curl -#fL -u "$GITHUB_AUTH" "$url"; do - echo "The curl command has failed. Attempt $retry/${maxAttempts}" >&2 - if [[ "${retry}" -eq "${maxAttempts}" ]]; then - exit 1 - fi - retry=$(( retry + 1 )) - sleep 5 - done -} - -get_org_repos() { +get_tf_providers_org() { + # returns all terraform providers in a given organization, and their the + # latest tags, in the format + # $org/$repo $rev local org=$1 - local page=1 - GET "https://api.github.com/orgs/$org/repos?per_page=100" | jq -r '.[].name' + hub api --paginate graphql -f query=" + query(\$endCursor: String) { + repositoryOwner(login: \"${org}\") { + repositories(first: 100, after: \$endCursor) { + nodes { + nameWithOwner + name + refs(first: 1, refPrefix: \"refs/tags/\", orderBy: {field: TAG_COMMIT_DATE, direction: DESC}) { + nodes { + name + } + } + } + pageInfo { + hasNextPage + endCursor + } + } + } + }" | \ + jq -r '.data.repositoryOwner.repositories.nodes[] | select(.name | startswith("terraform-provider-")) | select((.refs.nodes | length) > 0) | .nameWithOwner + " " + .refs.nodes[0].name' + # filter the result with jq: + # - repos need to start with `teraform-provider-` + # - they need to have at least one tag + # for each of the remaining repos, assemble a string $org/$repo $rev } -get_repo_tags() { +get_latest_repo_tag() { + # of a given repo and owner, retrieve the latest tag local owner=$1 local repo=$2 - GET "https://api.github.com/repos/$owner/$repo/git/refs/tags?per_page=100" | \ + hub api --paginate "https://api.github.com/repos/$owner/$repo/git/refs/tags" | \ jq -r '.[].ref' | \ grep -v 'v\.' | \ cut -d '/' -f 3- | \ - sort --version-sort + sort --version-sort | \ + tail -1 } prefetch_github() { + # of a given owner, repo and rev, fetch the tarball and return the output of + # `nix-prefetch-url` local owner=$1 local repo=$2 local rev=$3 @@ -59,7 +76,7 @@ echo_entry() { local owner=$1 local repo=$2 local rev=$3 - local version=$(echo $3 | sed 's/^v//') + local version=${rev#v} local sha256=$4 cat <> data.nix } @@ -93,50 +110,63 @@ add_repo() { cd "$(dirname "$0")" -if [[ -z "${GITHUB_AUTH:-}" ]]; then - cat <<'HELP' -Missing the GITHUB_AUTH env. This is required to work around the 60 request -per hour rate-limit. +# individual repos to fetch +slugs=( + ajbosco/terraform-provider-segment + camptocamp/terraform-provider-pass + poseidon/terraform-provider-matchbox + spaceapegames/terraform-provider-wavefront + tweag/terraform-provider-nixos + tweag/terraform-provider-secret +) -Go to https://github.com/settings/tokens and create a new token with the -"public_repo" scope. - -Then `export GITHUB_AUTH=:` and run this script again. -HELP - exit 1 -fi +# a list of providers to ignore +blacklist=( + terraform-providers/terraform-provider-azure-classic + terraform-providers/terraform-provider-cidr + terraform-providers/terraform-provider-circonus + terraform-providers/terraform-provider-cloudinit + terraform-providers/terraform-provider-quorum + hashicorp/terraform-provider-time + terraform-providers/terraform-provider-vmc +) cat <
data.nix # Generated with ./update-all { HEADER -while read line; do - IFS=' ' read -r -a fields <<< "$line" - if [[ "${#fields[@]}" -eq 0 ]]; then - continue - fi +# assemble list of terraform providers +providers=$(get_tf_providers_org "terraform-providers") +providers=$(echo "$providers";get_tf_providers_org "hashicorp") - if [[ "${fields[0]}" = *"/"* ]]; then - org="$(echo "${fields[0]}" | cut -d/ -f1)" - repo="$(echo "${fields[0]}" | cut -d/ -f2)" - add_repo "${org}" "${repo}" - else - org="${fields[0]}" - repos=$(get_org_repos "$org") - if [[ "${#fields[@]}" -ge 2 ]] && [[ -n "${fields[1]}" ]]; then - repos="$( echo "${repos[@]}" | grep "${fields[1]}" )" - fi - if [[ "${#fields[@]}" -eq 3 ]] && [[ -n "${fields[2]}" ]]; then - repos="$( echo "${repos[@]}" | grep -v "${fields[2]}" )" - fi - repos="$( echo "${repos[@]}" | sort )" +# add terraform-providers from slugs +for slug in "${slugs[@]}"; do + # retrieve latest tag + org=${slug%/*} + repo=${slug#*/} + rev=$(get_latest_repo_tag "$org" "$repo") - for repo in $repos; do - add_repo "$org" "$repo" - done - fi -done < <(grep -v '^#\|^$' providers.txt) + # add to list + providers=$(echo "$providers";echo "$org/$repo $rev") +done + +# filter out all providers on the blacklist +for repo in "${blacklist[@]}"; do + providers=$(echo "$providers" | grep -v "^${repo} ") +done + +# sort results alphabetically by repo name +providers=$(echo "$providers" | sort -t "/" --key=2) + +# render list +IFS=$'\n' +for provider in $providers; do + org=$(echo "$provider" | cut -d " " -f 1 | cut -d "/" -f1) + repo=$(echo "$provider" | cut -d " " -f 1 | cut -d "/" -f2) + rev=$(echo "$provider" | cut -d " " -f 2) + add_provider "${org}" "${repo}" "${rev}" +done cat <