diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index d1086658a077..c9abac5851b5 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 706952b208db..a50a8a507de3 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 d7463385ae58..1913e321a8c8 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 8cc9a80758d3..4d3c8888f3a2 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 89c751f4db76..8b12c5f1aacf 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 b3ae9e6ea863..05ada15f43a0 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 88b8320330da..3eea3c4c0e93 100644 --- a/.version +++ b/.version @@ -1 +1 @@ -20.03 \ No newline at end of file +20.09 diff --git a/COPYING b/COPYING index 9a73903d6df1..a422167e1174 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 15ef4048d900..edcd8dc0a00c 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 e7ca31b20d71..cdef493502bf 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 f61075b242f8..e8cd3472f54d 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 9f3f58a8d903..4e109bd1c599 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 000000000000..f85680cecc40 --- /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 80514cba4904..8e4e914d4511 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 ed8f379c460e..fe79d8d992b1 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 950e1ea974a0..73222c1a49ac 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 f9234069392e..3c5823c25891 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 9a5df2523a25..6ee450eeb59f 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 07bfc65a553f..af0853dbf75b 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 000000000000..c56f4728bed8 --- /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 bb68d026ae23..7671714d8a9b 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 bd1ee8eba275..84b146532b14 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 be5c7b7c8d16..733e75c16a79 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 8d7962d7fb9b..f071b9ce1785 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 a0ea209b493c..3f72092ec150 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 000000000000..a302a9a7f87d --- /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 9cb0e1eecc16..f8884785e90d 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 b28745fd6e27..9b36801fb966 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 709a0d504cf7..cec3373cbee6 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 7876cc213b66..8fa8f963b2f6 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 05a23d26cf2f..4911509212e6 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 ff9fefb04a86..9dd5b4c9993b 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 4c7d4a31be2d..73901a3f543b 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 88ca5e2e3cec..7fa65ab11021 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 b85f61da079c..7575289e7559 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 9371196818ad..45f7834eb2cc 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 83275bb2fbd1..51e1cc2e024a 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 1e97bf6157bb..e4cbdd4abb57 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 000000000000..52fd2f82a37e --- /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 086c3d746fc1..7d84c25de77a 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 000000000000..c96d4dbb0432 --- /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 ac234e3b8c6f..dc5dd7691976 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 8af531525860..d00c4abec0a9 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 155d6f0c3611..8c4fe9c390c6 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 a71654bec6c3..efe6ea6031d3 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 36ea30838289..2ce19f8cb68c 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 986b7fa1fdd9..94bcd777f0d1 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 44db77b5d1c6..c18fec66c705 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 e5c0631a5437..38f4f1329f21 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 51bcf5559e32..ed9bce485300 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 6dbb3d3a3e8b..74e3eaa0722d 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 026117cc34fd..210674cc6399 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 700c895b3aba..a839b3d3d573 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 cb8bc3de6c48..19b3790ecbe0 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 d1980c6dff81..90a1fb6d80c2 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 6a02dbb51528..648e7c270240 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 000000000000..60d296eecae6 --- /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 b064faa1e1ba..36ddd186d7b7 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 cf344122cf4e..6258244457aa 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 ed8c612ff960..dcf96307c3b7 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 a267a5fa8715..c6c980dd0cb6 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 1a31d71086fa..5c42080745eb 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 60c6113bf70f..7c45e148e822 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 000000000000..7efff7f45eca --- /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 5bf0635cc1aa..df9ff2615e1a 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 eadafb94b8f6..7ccb5b3664ea 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 5961209bc13a..507d28814ead 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 5fb3bcb9f8f5..cd84d1951d24 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 8a2b107e0ee8..d3007843d68b 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 7ad0ae80a48a..532a2c615e4d 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 d103ee249783..3953e0ffe851 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 55ad9fe6e653..06dd7c8bfb94 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 027828bb936d..ebf1f493c5ce 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 8fcbb627342b..957349ad1811 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 9371af9984d1..cc0ec78cc74e 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 7b103c36d907..b4a466e22942 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 24efd2e3273a..e5a887c18c77 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 8f9baff44b51..c1ef638e876e 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 4041b4ad163a..0dbfb39c32b2 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 8d3f35b7c26f..92864cf2557a 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 45bbd5d81ff0..9255ce763efe 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 b82f31256099..b921386d0df0 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 495dbc8859b1..f4f663b84f05 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 e9ad8bddcace..aada08c5b4a9 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 f5a1dd2d69f4..49acfe7330b6 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 444862c5739b..e2913b8a5353 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 5744de96b74b..8f97de24ab12 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 000000000000..0f22f4331f4d --- /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 77490ca3762a..c8824c2690d3 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 f46d3990c06b..627ac324cf57 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 b7b1ab52a637..d4633d2c8d16 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 eee8f612410d..772b7d3add95 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 774f66b4804e..859d9e975fec 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 7e575189209a..07f27515990b 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 c4eb9328b1db..3891adc10435 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 ae8ecd6270ce..7d6a5c0a2900 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 e65107a3c2fb..05bd8dc2f946 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 e272f66a5765..732fdb3ba879 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 a522834e4294..21f4c7c6988f 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 000000000000..26905a862347 --- /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 000000000000..20e81c44ce5d --- /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 000000000000..1ce3a5f9db1e --- /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 000000000000..eb87c3e06501 --- /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 000000000000..74b128151587 --- /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 000000000000..855bd3bab719 --- /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 000000000000..592f1bf9056e --- /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 000000000000..1466dcd1f0a2 --- /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 2b22cb536619..0558f8dfffcb 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 31e15537179a..36f3e7af873d 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 5dc1c5aaed57..145eb49ced7a 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 86a6bfb5af41..7441f4de40eb 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 45691f4839c8..cc2ddda9d32f 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 e008497a2a6e..b554f197dc4b 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 81427bb8ee64..dd36696b94d2 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 9baad9b58545..408d0a9c33f2 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 7d2f252a8886..cc202bca6c4e 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 fed3fa3bc7c8..adb4e2294213 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 aba9bc0945b1..4100ec897016 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 d4a8c926fef2..24d32a00fd45 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 0ee94fed818b..40984cb5ec53 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 4677ce090b0b..c83fdc251ef0 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 c172692df5d7..6735a7a5c430 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 a5374c2b468d..4cdb3f30994b 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 95fa8e05fa3f..3c7cd729c60a 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 14d6340fc33b..0b94f550929b 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 2d54398d10df..000000000000 --- 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 89dc5008df58..28cddea8b79c 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 883db7f2f4f1..b5c3d6744142 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 4d7af138292c..c4977e3fd70a 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 a8bc18800021..4c359c3b1725 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 000000000000..898eed244935 --- /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 000000000000..55e86bfa6bdb --- /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 2d20421586a7..679a6c6497cb 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 8e91e9d2baa9..ec1c8c2d57a1 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 0aab7bd6b92c..06d3ea324d8d 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 fcb30187fa2f..7461e231402a 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 000000000000..ee550cbbf6b8 --- /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 810e1643d316..b4746b21b653 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 ab5e7c0645f3..92164d65e533 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 24070a786945..9303e8fde13a 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 e0b558dcb0d8..fa19daf13280 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 23c3426bff08..84394a1ecae5 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 3336d512cfd8..d98325a99ac2 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 e00d3f7535b2..e76e06654aca 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 bcdbffdc20b7..97506045e0e1 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 11319e5f4f82..cce7cc235ec8 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 bf8b7deb59eb..f2af7dcde3d5 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 90a5128c02a5..8408f56f94f9 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 b84096861f56..58098c45535d 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 5146858cccf5..95eba86bcb65 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 d7149b35d4c0..842976c3574f 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 c1028a0ad7e9..0c9f8522cc12 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 4680cd8ae95a..1fdd4627a902 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 7f98756a7d9f..a32c19a4eba9 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 9b92dc829cd1..1a7b07a74f8a 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 c53dc1000c4a..354274478a38 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 190c49a33ec6..fb0fe26116a6 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 bedd87a368eb..85e5534e906f 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 552535c253e6..dc668796c788 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 afb74581e239..4f5a9250eaae 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 0540b493003f..ae98fba15805 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 7650da89cbdd..df08ac2959ed 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 f7b2f5c7fc1e..ef8c0d74f062 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 4596e163404c..d05c0c50e82c 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 000000000000..5413044f4614 --- /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 000000000000..15e429a75497 --- /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 366c07c0a352..be964ce7f3f9 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 55d474e5c9db..26db16750727 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 e0e2ffd80cff..6702e8efd1cb 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 74c3e4425a7c..484f9eb44406 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 a8c797d185a6..997f38c5066d 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 000000000000..5e441a75cb60 --- /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 1cf839a6ddb0..80dc2983ea50 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 bfa3d409ee30..9dd53483055c 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 0036677a1576..f2617e5bc038 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 2d262d906579..7a3cb588ee71 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 000000000000..4e4c235ccde4 --- /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 e42219e9638c..273a6dec59a5 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 b351d80c7acf..f101a44587a1 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 4fd800dbae79..728a0eb8cea5 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 7eaf79d864e7..fc352795c017 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 80198990ed11..44e65ee8a9a0 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 f794eac8af00..c7a947393496 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 d685a5259324..364debddb0f1 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 ed077e3daa76..c39908751d29 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 000000000000..4eb0be3f0e0b --- /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 f27bd42bd764..000000000000 --- 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 c66c29ed45fb..930cc1987a33 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 daa6ff7cb15d..410db8fd84e7 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 890c421b0ea9..39976380e3b4 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 9d0a1995e0ff..2b29c1174845 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 997328ad9e6a..71428b82f5da 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 246419b681af..6f9962e1d626 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 0adc27c47f02..bfc2a881387f 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 75f58462d13d..77e22a96b553 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 d9d6d9c9f253..cffa1a5849f9 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 f6dda21c6006..a7b27cbcf215 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 10ee036be84e..e3e43177def3 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 000000000000..13804fb82cba --- /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 885eaed1de6f..94b44630ba6c 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 7729da27304b..160dbddcd487 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 697732426ccf..f80d6b3f1ba5 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 990398e65463..3fe76a165401 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 a534b692f177..6fd7eae5b892 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 7932d094197b..e20591b5beb4 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 10d42325a6b1..be661b201f0d 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 000000000000..bef7db608f82 --- /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 dbd5605143f6..f58af82773f3 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 7e8e91e4b9c3..2388f1d6ca13 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 000000000000..0472fb4ba1e7 --- /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 000000000000..fff119c2cf00 --- /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 f0f5a6ecbfc5..bfb73f683715 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 000000000000..ccdf54d128e2 --- /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 17f2dde31a71..f55079300b15 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 3605d0365094..3a11a6513a49 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 733479e24c97..4275563f1a36 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 a7edac025384..7becf6240710 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 000000000000..9f99af48c48a --- /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 c70d999ca96d..050872e933fb 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 9c615fbe885f..e3da3092d459 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 49e04ca36228..52f24b8cee3c 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 32f361454bc1..b0045409ae60 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 3d307b1abcf8..bd4cf6a37bad 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 8126f27c2b0c..2e9e1c94857a 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 8f177da129e5..4fa41ac49edf 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 30c5550f71c5..502a5898a5de 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 0ec906713885..1477c471f8ab 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 92deabc3dd3b..3c0e6f78e74c 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 268fdcc819fd..35fb46d69d8e 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 8f8d0da7c8d3..18727acc7c75 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 2f176a038729..dd5d69b1147a 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 d1dfdb41bf40..89ff957babf5 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 6af32700fc77..f9e657f57742 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 29a83300ec10..09b453e75845 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 5bf57a1bf9cb..809f61cfa818 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 c8fdd89d0d8f..0b79a996dc78 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 72d4a8249a32..07af4c937f03 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 70895fa53e45..5c817422aae5 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 000000000000..cb6bf8508fb6 --- /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 6ffc44a5274e..0cc027cb1d74 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 c48036a99e8f..ae2ecb5ffeb7 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 0928ee81a648..4b35146d0844 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 cca98c43dc7a..492242e3296d 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 3d2b3ed85e3a..3c7f217b18df 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 7e312a1b81eb..bd62d16f61ce 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 fcd58509d6fc..7e667b6b1f04 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 d715d52c2d06..c391ad9694c9 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 db60445ef773..2916a3c82b34 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 748a025414a7..3f9ced5e86b1 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 d406bf6f5e39..39d669e8b30f 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 021f4f9534b4..164a0a44f8c8 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 2f83fd653bde..1c33ed064a19 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 f83962877700..f2fe8b41a9e2 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 55d5e703aa19..917a1d6541e0 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 7a4389038b22..83b17365d5dd 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 b390d8368c65..f2af40249271 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 2e8292742264..cd196e385539 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 1d002eac41de..250ea6d4575f 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 000000000000..5d6912595b52 --- /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 2638a21df733..000000000000 --- 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 577aad6c2987..8cee9f42b62f 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 13f3d61e84ca..5aee59cfdcce 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 f5401c180984..34596bf78184 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 a833e99ff8c6..a09079517f04 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 20c82ccdd56c..cf7dd5fe3a13 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 f20860af6e12..e598b0186450 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 be3667616942..8b997ccbf66e 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 f3831156f453..4b2e1a3c07f0 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 4168140b287a..daa407ca1f0e 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 11d67418a31e..dfa39e7f6024 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 51877970a8bc..e586af25c2b1 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 b139154432cf..c79e0eb83ece 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 f6ed4e25e9cb..6f49a1ab6d40 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 6bf31982b71a..ec0457bbd583 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 3876280ee6bc..68cb5d791aa3 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 adc1881a525d..3962d7b15989 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 83ab93bd7cfc..168056a475e5 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 39bbcaf4627c..11a4b0a858f9 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 000000000000..a18d60ad83be --- /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 a92ff3bee490..5939d7808f7f 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 6d8be5b926d5..4296b2270c29 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 2cda8c49f5e1..230a2ae3f825 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 72b8c4c08b92..766ebc8095a0 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 47812dd1e40e..892fbd33214a 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 e917209f3d1f..f5e78b182933 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 7ae00f3e501e..d58d93c4214c 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 2c2910e0aa9b..fe3f8ef9b391 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 6431531d5eb6..eb6a426684d4 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 df438a0c69d1..19e11b31d9ca 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 8f12a16906c5..2ebc675ab10a 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 36dda619ad06..21e92cfee016 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 f156595e6f88..aacdbe2aeed2 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 c1e5964c4536..7f8d2adac648 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 1fe77ce5a0c7..2d5fb40fad35 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 000000000000..0cad09927b2f --- /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 c296e048cea4..5cc2ff7f4bd1 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 000000000000..5fc19649d3d9 --- /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 46308f74dc91..f3a650a260f1 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 4708e16e2a6c..cf7fb5f78d3d 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 87d360681445..f69832e5b2bd 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 b1cf5a7d1104..9fcae6452696 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 528af486b414..f5163cf86cf5 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 8d3e294622d1..d175854d2d1e 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 c21cb2afc3ca..b7b6eb7cd66e 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 33a6fb152641..4b52963500d1 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 e4d5322f9b5f..7322e1c080be 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 2958cf214473..95afb0460fb8 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 74f4f671f460..f8c79f892da3 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 1c5ece868258..188e45abc58b 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 122c89ce0680..000000000000 --- 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 000000000000..0de5ba428110 --- /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 258476dd9feb..38910a5a005d 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 61d0ce0aef8c..aa9589853797 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 3bfcb636a3c6..f954249942a8 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 4a77045be28e..3ee0a4458bd0 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 74702c97f551..86033d02bf3f 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 0bda8980720d..703bc9416f88 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 ef8d5cbda889..2f2ac27eeb9d 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 107fb57fe1c4..529f584a201e 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 24780446d504..0c2407e1dd2f 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 20ba3d8ef0bc..000000000000 --- 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 8950010773cf..651ed3743884 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 3985dc0b303c..bfaf760fb836 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 61626e78f8b3..09b7f977bfbf 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 bf9a6914a483..1febdba0c8f9 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 042b496d35ee..9fab462f7e3b 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 cdf61730de33..ef34e3a779f0 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 aae02e384c97..000000000000 --- 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 9868192724b5..0ead6a816918 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 5cfbbe516ae1..a32dbfa3108f 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 dcaf73aca448..ae7b27de8e70 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 6b64045dde88..36008d257410 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 8a57277fafe7..a894caed1a34 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 753580c3e404..d1b388310280 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 d7f7324580c0..d5b3537068d3 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 5d91e44a199d..f6af7c75ebae 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 695a8c42e85e..655a6934a266 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 731ac743b7c6..ef3663c62e04 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 02a9f316fc32..2c5fe47242e7 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 5ee6b092a6a4..e91717fb2054 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 fe19ed561954..9b65c76ce02e 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 f7874af3df29..64d9d61950da 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 6da0831b4c5f..0a9dfa12eaa5 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 8af0650c7380..1ebf7ee6a761 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 6a3b97769462..9ac6869068f2 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 3ffde8e9bce2..a5233a46e341 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 9af6b1d94f37..1b02ebf37045 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 b67f697ca0de..84a72afac2f7 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 36ebffa44636..f9ad1457fc85 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 8a90afa99842..fe8d905da3fe 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 1cc346418091..972104630275 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 e9fa26cb1f5a..68afba21d64a 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 a01074758ff8..aba3533e4395 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 82a55bafc982..bd0026b55f72 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 7d8c6fb61404..18c5c4dd1623 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 000000000000..62c2cc568476 --- /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 ab3e3d7d5d50..d6dd62f871bd 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 5f9a52053f79..aee6bd5e66ce 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 ba852fea4336..56cddfc55b71 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 f40819e826b0..3b6ef1631f89 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 fe7ae8a8ac90..045e48a3d0f8 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 9aa0f1b85aac..8d0e8764001c 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 12153fa021ec..5b5a6e18fcd6 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 374f83a2939d..04421fc2d25a 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 000000000000..44b15cb2034c --- /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 ea155821ecc9..30b2916a9928 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 d668faa53cc3..ca2cff827232 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 d87867326682..5d131557e8be 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 000000000000..731260a5c20a --- /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 1bdc4e4410f1..a45e806d4ad8 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 543a7b25d5d6..d17959a6a305 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 100d458d536c..4b6f85e4a2c9 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 4ab74ed8e1c0..916e7eaaaa94 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 263b70d04a56..a43ac656f667 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 1dd869043f0c..5422d4dd4e26 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 79c4b7aee066..677111814a01 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 b17ec3aa9300..ccad64cfdb2a 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 a3c22ce69484..a115590ccaa0 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 26aa16679467..ae8a4958ca96 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 d09c6735e123..e3b95afb3d86 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 274b36171608..01a16698384a 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 da26246e703e..43829d36e417 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 3fb85b16cbe2..5f8ac96b2292 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 8402be939fe5..6ccc2dffb267 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 000000000000..1a2c4aec6651 --- /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 c430ce5af92a..1bfbc307c59d 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 7b2786034552..c0619211c2fe 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 d123bca93219..d06032daecc7 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 2586f2d74e9c..003609ea7054 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 8edcf925dbfa..000000000000 --- 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 afc7880392a1..000000000000 --- 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 000000000000..e48eb729103b --- /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 714a5903bff1..377d7bc57058 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 6a38f85c48a2..a5af25b983b9 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 15aaf7410674..cdc3a172ea70 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 e192b70c129c..f3fdd576b65c 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 7083d87c4073..cb954fd836bc 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 a638a3083fba..52c895215fbe 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 178a832c166e..69d4ed047756 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 4f60300f5ff4..8334dc68d623 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 aff71e5e97da..4678829986c6 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 e2c2275b5512..93a21fd4c97e 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 97b5843bbcf1..46051d7044b5 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 f5abe61a1baf..b236552eb653 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 839fa48d9a42..6be67a8b96f4 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 85f52be8a6ac..495102cb7eee 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 bdea6a1d1caa..553415a2f329 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 1cc1dd3f2f62..12ff89fe8492 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 fc516c01230a..c5a84eebd46f 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 000000000000..09d357cd2b6e --- /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 682eaa6eb297..b8b4f37c84a8 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 3ddea3c9757b..c580ba47dad3 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 e0a6c112e3cb..dbc35e2e71c0 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 98a3456f6396..b95364308682 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 000000000000..cc98414257ca --- /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 a3d61922e578..482d6ff456b1 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 43a9a0b2598b..ead7f0859434 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 f1238bc6b168..21ae9eb8b6d4 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 92088623517f..77e979a8a424 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 53029b590677..6f24141b33cf 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 ad7c013a5449..ec9d9753cfe2 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 000000000000..3f2ce5bca4da --- /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 d24d6f77a491..cc061bf6e3b9 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 bc0966e6b8e6..429580e5c6c4 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 c74476c7a155..f1062edaa05b 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 1197c84f0459..54ff054d84c7 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 471d15b1687b..67a04d48d308 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 dbb2e3b4c409..637ed618b893 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 f5b174dd7b7b..24b5bbc5104e 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 000000000000..0e32f182e2a1 --- /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 dbe3b7380970..1ff9388346b6 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 e96c27bd84b4..c1cbdb461765 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 c936417e68cb..9c9eeba23da2 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 b495b3948fb5..52ecd90b7c69 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 000000000000..2f612c9db686 --- /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 1daced4a6c70..30bf22586f86 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 9b25aa575837..e74e03fc0b07 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 a6a069ec50c0..c7d174a00de2 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 68e005ab81da..2e988e0ca2e0 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 000000000000..16383be2530f --- /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 000000000000..e081aedc6c34 --- /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 e548ec66962a..a808a7f39d05 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 000000000000..f1888af70416 --- /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 b48b0b3a9d6b..37ee2a803890 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 000000000000..c4d06df6ad4a --- /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 b0e2e303cbc0..17f31e3a488d 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 b38bcd4cec05..c5e0f929a126 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 35c1e649e2e1..b5b9989ce186 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 64eb11068329..dc9fb31ffd0b 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 b3f2af5b1794..e717d78feed5 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 000000000000..513c42b40117 --- /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 a0ccb9950094..18f2e135124b 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 1d3492151690..f88e34827d00 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 c922ba15960f..4bdfa8143dce 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 90093d9a78d9..b3e201844236 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 b770d47d269e..ff1bdeed9f48 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 980961225c9e..e8f83f6dd8bf 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 8f05c3949fba..de0f11595a94 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 000000000000..87c029156b9e --- /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 764af3846fe5..cf39ed065a76 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 0a9848a49349..a7315896c506 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 cc35be49bc3b..59306d625e6b 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 a32907647a0d..cefe72b0e999 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 e43ca014e148..42bed21bf25b 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 6740928db9a7..7a44489efe61 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 43a63aa8fdc2..2beb265ee5d1 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 5ef7d9893a49..a8615a20a1cf 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 d1817db07555..903a53270377 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 e89078883ebe..94c0ba141179 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 ef5bde7907e0..aaf6fb0479ba 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 716ae7a2d2f4..3f84f9c2560c 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 474490391463..f203f2abc033 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 4a174564dd2c..e7a9cefdef30 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 08da726437ea..39551190dd33 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 c60c745443bc..47ac95c4626e 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 b0ab8fadcbec..6a8a3a93327e 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 936646a5fd78..4a60fec1ca80 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 c3c0b432b494..74925c5e2c47 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 0c72505395dd..2f1e7300ca38 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 f7a88867b616..fd28b94f7be3 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 f127d8a0276d..f3a629f7af70 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 000000000000..c59ca9983a6c --- /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 5f56f8ed5a09..751f81649ddb 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 1b90299aa23c..a5f48e744fdc 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 000000000000..07af7aa0dfec --- /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 a9a30b409220..1b5890d6b0c7 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 000000000000..b184c0754d45 --- /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 000000000000..568bdfd0c429 --- /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 000000000000..68769ac8c031 --- /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 000000000000..4f181257ef7c --- /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 bd524524130d..56265e80957e 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 8c7fc4056adc..853347bf86e2 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 43edc04e1a49..e9ed53857d81 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 0fee64be0bb2..dc7abce2a5cb 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 ac59f9e0012a..1196780cf6ef 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 e3a2db398e62..5f6f2bc7a16d 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 d66e0f0c2997..fc454f8ba254 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 2c2f36ac598a..9d0a3f65253e 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 000000000000..6f47193c62b9 --- /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 13d21a0b4aed..5fbe53221ae8 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 830edac20bac..b4d653d2d77e 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 09538726b7cd..007195128347 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 850d3052533a..832c8b30ee9d 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 000000000000..8ea88f94f973 --- /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 c36207d54607..000000000000 --- 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 000000000000..2e806afb42c5 --- /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 132c50735d96..0e6e10a5f47d 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 9b476ba7f1e5..8d49dc66eb1a 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 272fd1480185..f7fb07bb7975 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 2c73da103946..3db19c781d03 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 68261c50324d..6d12925829f7 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 5b0fc467ea46..4ab7307c3b67 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 b07212580a55..f8a18954fc99 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 af70f32f32d0..4b74c329e3dc 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 970fa620c6b6..ea6aac9f6c92 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 04e82599b948..32c9a40e535c 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 6d9bd284bc72..ac8e70c52bcc 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 65a7b9c628e5..e997b9a11343 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 fe63f36cf96a..f236c14fcf3e 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 e07d5b5eaad7..01fe230b8a43 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 000000000000..9541f2cfd4ee --- /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 fce274477b62..60ef0159ff1a 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 a08b1947f65b..d39b4d64904f 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 1dbe703b5662..2b08c62d0ad1 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 2d809b5cc9fd..2a7a19e7695a 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 6630f012f04f..d7bef68e5bcb 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 0025f9b36037..16d7fdf15cf6 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 77c94114e6d9..087c6b9c38ac 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 000000000000..a9ba8e6280d6 --- /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 f7face0adb7e..479548863b47 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 1af98a1318bb..f48216ff446f 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 71065dfc26bb..9548ecb8ef6d 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 c03bb3b494fb..000000000000 --- 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 61174672e2dd..e3bd21be73e4 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 2478aaabb799..56e30c79d1f1 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 9bfcfa9b065d..867ac38a944f 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 1f6ee7cfffda..6aec1c0753a2 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 7f4584435266..912420347dc0 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 641cf9faadc9..b82d69b3bb85 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 f67d29005616..f6739977fa4f 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 cb8fc957a990..0ab6e626b340 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 2d3e3b05c980..60760487a1d2 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 8a309f3bc5fe..43871f439f7f 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 9a4db84f7b73..c775632a4aa0 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 a09c5dc47618..8df18cbd9013 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 94e5a14174b0..71e50dd0577e 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 08d4ab14c9ca..6f48d2539ace 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 0bb8396a44fc..31f1e22cda32 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 58d914d08106..3078f84f6e92 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 f520bf54ad1b..607aec87f01e 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 4c2d130d5a5d..dfd158e2d75f 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 28ad4f121bbe..fa109394fedb 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 3ddd45b13482..06ea5ee49f72 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 7951dcc816a3..7f207e6c7ef4 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 57ade2880962..1f4d54a1ae20 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 7fe066991918..e70004e643e1 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 2c9231f55236..bc0933f16fec 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 688c77cb22d1..0ade74b957a0 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 48be18c71021..f64493e1a3c7 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 d14ba98ec48b..43347161a84c 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 1726d05115ea..9720d90217c6 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 e25dc0c0b39a..23e1e611a71e 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 31e2ed1cd1ea..44677d417ead 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 609831506e16..e8064f9fa80c 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 17d5e3376908..99a9f979068d 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 03239991b95a..8efa177e30d1 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 e91dd72ff5d4..21fd58e5c902 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 09678ce9ea71..dad211ef55ba 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 59b0943f591f..5ab990a3d7cc 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 0f1f052880c5..adc2810a9939 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 000000000000..be2f12b7d014 --- /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 36ef6d17df69..0902d2dc2cb0 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 52d852894ce5..4f22099443f4 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 9b5adaf08249..f484d5ee59a8 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 b4934a86cf56..de48d3a780e2 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 6b8ad83661fe..c6a3ceddc3e0 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 ab65523592d7..788b4d9d9761 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 6fd54c527580..7f0af9901b9b 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 ca9c6f9a7f91..87783c660953 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 74c16e990f35..6da2c59cedd4 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 f40b5fa9bd7f..6107f3529715 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 b8e1dac0e89e..3e2061d7e42f 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 6bd315ff1eaa..693f02962f45 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 6413895c4c5e..b0c9c7bc2258 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 e5be652c7112..0a97d5556a26 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 2adc2ee1eeea..000000000000 --- 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 f5c8c4863b6f..0d979dc2d054 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 000000000000..a6f33e0143c5 --- /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 fc10df0c79b5..144d83179a16 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 000000000000..a6f73e00c066 --- /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 52a0b5caf235..22fe5cada480 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 da92a73e14d9..01c4b4138451 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 cb69f35e862f..ef32f54400e3 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 af5db2a3dbe1..fc5d3a5c52fe 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 496283fddc7b..d0cc5e19837c 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 000000000000..80893da02524 --- /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 110a2520971d..1a0ee882572c 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 e7ac2bae46bd..2474019cbac3 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 000000000000..fd537c3260f1 --- /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 1068a344e0cf..2c21a8d51673 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 1e69b63191a7..ba087bb60090 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 c530de817bf2..000000000000 --- 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 ca4f71ae688a..000000000000 --- 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 6be8d1d18e62..09a74de20faa 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 9cd531a1f96c..a57ee2d59ae3 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 5ad0ac20fac8..0d76a0e972ff 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 61df74042cb3..c4f2002918fc 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 000000000000..741fa448f680 --- /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 37689c3d9137..3cf179a38216 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 98153d5c9047..b614d912a9f4 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 972552735202..0e318a52d9f1 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 9ab1a71f3314..51b472fcf9ce 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 000000000000..38bde10f47ed --- /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 c19850f418bc..bcbe234fd805 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 b33d98b85d69..d3dc6dde1359 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 000000000000..7252d19e4e65 --- /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 56ddabbae771..7071baceba73 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 9991c5eaa329..7615732c20ca 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 000000000000..349d0e7bc6f0 --- /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 000000000000..6cee64a20095 --- /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 000000000000..b610caf06fb2 --- /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 8f9cb8973d51..cb07bc09511d 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 aa03501f6a55..b59badcd5de4 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 ab363efb6a19..17e72c5f6510 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 27a87bdbb9f2..71776a94cbd6 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 000000000000..7fa479ed2c42 --- /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 6277ebb4933f..3ca19cb0971c 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 b6fed3e2108f..79f34b07faf4 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 cbf76f9e5587..5ed0dfcf9ab8 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 106120256412..904d12619d70 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 6b53914fd859..80dca43f1f3d 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 000000000000..f612717dc968 --- /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 000000000000..cf74acfd67aa --- /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 6ca05a2c7797..2336e4033d6d 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 126178d11879..b527aa706ad2 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 000000000000..7df0ea0b691f --- /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 749d7857a134..000000000000 --- 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 73d9f938e226..017de6882081 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 af340535f0a3..000000000000 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 385c625522aa..000000000000 --- 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 0183e12d7a88..3d7978890ab0 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 000000000000..f914b3f712fc --- /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 000000000000..40de4a8ac602 --- /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 816d65435fd7..000000000000 --- 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 5b72b8085f27..000000000000 --- 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 000000000000..f1e29459b7a3 --- /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 000000000000..3aa1587e1dce --- /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 4796ff9b7c8d..9c35b7305768 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 8e997ee4aeb9..b6bdfea22770 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 b9f761e99582..6a0ceb57dda4 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 000000000000..7a06cf792bdd --- /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 000000000000..41493a730890 --- /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 000000000000..d4e214c41988 --- /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 b16008ff4add..90529d37ee0f 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 eb1f4f192dd1..c5abd458ec9a 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 000000000000..41fb2e7778d4 --- /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 000000000000..0f5af7f718a4 --- /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 000000000000..5bda6f493f0e --- /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 48ca98da8fa1..d29c802b47b4 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 000000000000..d0bf9d465200 --- /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 b13b4131091f..ec0cd9796b0e 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 2b4c1ab7b052..09d5d2a6c9e1 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 0588cf86ac09..8bab917a351e 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 7d7926309c95..be6ebce9e051 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 f01cf6988eef..be195b513935 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 46bcb01a5265..638942e15407 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 ad66ada106b7..7228fcb83315 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 53074385a652..198171082d88 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 000000000000..144a07e13492 --- /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 fca53009083a..f3623aa3c094 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 ca28bc31cf1c..17260ce64067 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 9ebf84eed232..a637ec4bfc00 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 895b7e2014c8..60aef586ad5c 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 652d49a24b1c..e9b6d14c6a1f 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 2c0d212c2f1d..11c1dabf9360 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 000000000000..6f5d44472878 --- /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 6388b67a6e40..000000000000 --- 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 8dd5eafb0977..4ddc96e8bc22 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 ab908c96e5ee..bae9c66ed61a 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 9448a104073f..3d8ab761a446 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 75862feb202d..92ac5c46e8f0 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 b9ba5888187d..8db630be893a 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 324853350af6..95219cac9be8 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 a1a09ee0f45c..c49ebddc2fdd 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 000000000000..63ab2e0c6c27 --- /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 000000000000..432913cb42d2 --- /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 e19992cb6bf7..8834fc31c387 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 d0b7306ae83b..18822f095688 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 c3c91e71b5ca..bcc14e817a87 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 b315426532ba..395ed9153ea1 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 e6f52db1d984..17c1a569ba0d 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 d0225016ab76..97c9137fe1d6 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 46d7a6a72f89..24b7737058c8 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 5407a62339fe..6a38f5ca531c 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 000000000000..9ab14f722d08 --- /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 000000000000..e93a31834185 --- /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 609afe7b2145..39a4234dbf73 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 791b041ba95b..372dd9d8c1c1 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 e71c38882881..3201e22555ea 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 83883477a5cc..bab091d57acf 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 4d0df289cf75..355c94a03861 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 563f24726477..4fc3668cfafb 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 1f39e903cddb..6a14a9af59ae 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 000000000000..846d2a930188 --- /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 8e7f34d06e32..f403e4ac2edc 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 f0f4cbf6a21c..73eb684f33a9 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 000000000000..67bb7f1933d6 --- /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 68a9b7315b35..6915779e7e9c 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 1897b53e283a..97e1125694b6 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 f17e61814c5e..50523920c60b 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 339a4b9a7404..67840f3e9fe7 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 194a2e3d2b94..10753c4ed0c8 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 000000000000..284b38932cce --- /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 000000000000..adb3fcd36d7a --- /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 c746d46dc550..e4b830e9e237 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 17527378cf0a..d0e62d15437c 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 2108e851bc59..dc5770e16bc7 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 000000000000..6eff32a2e75d --- /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 000000000000..b8d4b8279f4d --- /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 7076bd77b770..9ef96cec5ef3 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 000000000000..280691f7cb40 --- /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 b7b10fb36aac..f22836e227b0 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 000000000000..af7813a2e604 --- /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 be5c0da981d2..319e5e94eceb 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 4b71b4d67597..ca2e36a443e9 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 c7740d5ade35..b80e3451700a 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 000000000000..0e21a7cf8437 --- /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 000000000000..6346575b33da --- /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 000000000000..36ce2b1ae192 --- /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 0cbfa0c4c7be..64f5b6c40d20 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 d2e7fdd4fbeb..a7d837ea0708 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 000000000000..73ef8b728615 --- /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 32637d2c1efe..aec8da6a2af3 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 8206823a9181..e3bc31c600f9 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 000000000000..d2740549738b --- /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 000000000000..7354dd01a34a --- /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 000000000000..0fded20ff1a9 --- /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 10e92b40e956..4a8d3f4cebf7 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 3ea96b383631..99065669661a 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 ef711f8dcf6a..56baae8b9d3c 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 1aceeffb955d..6d7f2b9249ff 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 3a7dea07d53a..b77bbbbb3c4e 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 9108004d4df9..b374ef296807 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 8f844aca4160..7ba60ee9806c 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 3e03cf2da730..192bf041c64e 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 000000000000..43844d0c66bb --- /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 e4fd66679a79..b645bc61848b 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 d9a05e0bf660..2e2af8f3a9a2 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 cf383c1dd495..253e724cd313 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 42f8af99e6f4..8b7629bc908b 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 283317200484..64468bddc852 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 5892351225d3..194514c65b53 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 adb38d4bbbab..4cb28e512a72 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 631e0c9cca52..bc626cbad114 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 389052d30e1c..bfd75b4e75cf 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 737e73421c9b..176d1d4cfb37 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 5c379b57ad6a..f781aad905d0 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 cd951701e771..25fceb357cc5 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 000000000000..e6c4fbe802e1 --- /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 30a4e052d77c..fadfedf5384f 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 4b48f5f1eea2..99a09e7ee330 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 4b76ebdf6053..0265e0f75ecb 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 5a0b6797a241..7d90ac36f366 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 000000000000..4aff3e1f7bfb --- /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 12e8237d4857..b06175f37f31 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 baf7b108e504..45525571a646 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 2fd3e5c27fe7..a1f4b9ad950a 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 534b87e9fa74..eee293b76c2f 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 db5f081c4ed4..5bc7f8432582 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 eeb0f67d1937..000000000000 --- 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 fb9b3c9513f8..3d907e421b3e 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 e9fa6daecfe3..80ec696c6459 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 1a6ebd346cca..49b788f66537 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 c35df95b24c7..0d95675d1e67 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 29cecb169998..000000000000 --- 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 6f471f3a0283..ac05a9367cc9 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 835868471906..910c1cfe51b5 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 dd59ac5080ff..64ee40e038ce 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 504900d65955..704b888e2293 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 2dee463aeee2..76a789356193 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 b91554f5716e..e63124e85479 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 732a8cf1ce2f..a2f96bc288c9 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 3273d7de68c2..bae2407ec7b9 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 cd1d837e1dd1..4f4ad4b8c5b0 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 0106e8b45846..bbeef4c395a2 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 876889416daa..799cefc78193 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 eabbf8668375..dc8511bf5007 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 98a4ddd29d6e..bf297d8a83ca 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 1ab39311258b..c95390958637 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 5c5c262056ec..2bdca386bf45 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 76f76c1e750d..2ceb5f6d09a2 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 4e517ee636e8..0658305723c4 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 000000000000..2e2746f43417 --- /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 000000000000..732c2968fde4 --- /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 692485d0dcfd..6970296cbd99 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 0a374c26142a..4a32b099d15b 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 4da2228c6c13..3c78295db674 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 000000000000..96cc3c573198 --- /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 b88951c0fc5b..3e5916ba0983 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 54f1050da466..6695b9a7237c 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 865bc130db91..a5947bd37f19 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 f7bf919c2212..0181ede26dda 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 0b8afada0206..756c21892fb2 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 d16d93318216..895609d3c023 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 758448c2fb33..4b426609fea4 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 a6ca5b3639da..4c2323fbe8a5 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 c37308459bb7..000000000000 --- 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 b26360f0c469..337d570a9353 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 8a81101983f7..294d3a0ad8bf 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 5b27f3c3f323..95606a869b7f 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 f3adec4fece2..1438b066061d 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 1785ca60060c..7965cbd83fdb 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 1fcdda408966..5e0cf3616fe5 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 054fc758d645..0f651f47a488 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 ea0ce8cb5f30..fbf25384eef2 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 da915f3fc3e4..99c07ba8f5fe 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 2581f223c91d..454befd55f9d 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 b926ff09d22b..ae32a5f41a3e 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 4c2b97e727f4..3f294342da70 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 6c9cd628a518..13c48fc12af3 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 2338c0ed376e..f9a579512cab 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 37c95430627f..000000000000 --- 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 5940203d04d1..e2413a4fe87f 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 0308fad831d0..cc3a3c9ac1f5 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 6b5101b50b5a..aa68fd5363d6 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 8d7db50fd323..6bcffcbc5c34 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 bbfe1ad5623f..c86e7b5e9ba1 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 687608b43524..64b8e7244311 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 21cd3fbdb25a..33df1ce5d4ee 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 7762ca393690..f032f435a35e 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 000000000000..2562237424e5 --- /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 5a015e5ca31e..144d19cb01e4 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 3472ce5047eb..51d956b14036 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 3b6ca9e4053f..90bd8bc60ad0 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 df3aa987c3fb..bd8b9bea82b7 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 19ed23523556..6f13b710effc 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 9dd5da4c1a90..1da40e754153 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 8e2895bf8478..9d9772cde29a 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 ee45217e4909..114cf5e192ff 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 248967e06e6f..d957c7ec33d8 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 a92d331baadb..a712eef06501 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 b17561e1567a..643b648fa88d 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 a2588093309d..6ee120f3d1a8 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 000000000000..e80239553f1b --- /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 d95b3eea596d..51f895ea2d5f 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 8907011c16fb..eff1d6411a15 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 b8ec2d7116f5..08eec3135081 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 42285ba4bf86..9e016c68608b 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 cae35b625190..7ae02ae38d85 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 8446855d190c..bfe9f72d6646 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 f5887e870db6..000000000000 --- 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 7a44ebe67694..d5bec0c09e5f 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 b51b72f1c8a4..509d3ddcf751 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 b972aae7de80..1905699e516c 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 487b0a730d83..384235fc0650 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 000000000000..e2ba4ee2244e --- /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 b653ae5ca588..a81834c1fff7 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 fd3632ee1552..1f293fe2d796 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 91f4b1dcdfe9..095cd79b56e4 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 1d5579d74c05..b2d99e0eba86 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 1f4323eb9d55..077bb407020e 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 bfd211316a7c..3ada3224e33e 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 428490e119a6..8459967a363c 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 19aac1bd1e95..3f1fac79623d 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 50093f8a61de..b3aff4e4c509 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 f3928499413c..daedb9b98206 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 a893390d74ed..2d4a2e9265a3 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 0fdb3b2a4a14..75d999ede1d7 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 341c41818421..2cfe77ec291f 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 1e249b51fb76..c5d4b3f87f49 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 9d3656a81f97..f9f58ab5ec1a 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 92b2f8ac5153..80f15935af23 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 c62ccc4fc883..e443a0a52694 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 5bad5453504f..08263f2abddc 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 26a717dbd6e4..d13dbcc16889 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 e44dfddd37b7..2a75b384af5c 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 fe7c83dd56f1..c3a46439ba70 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 a40d5101b34f..bbf66a74bc50 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 3511a08682c3..a9b423320a0e 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 a9eb15aabf35..426fea21107f 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 d47fc3b6190d..710c1e807929 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 75ffd083a5a4..cfcad390f4c9 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 f33245d8f1c9..9ff063c1c807 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 44186abc3c46..a0fc8631fb39 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 a7779ee8aeea..76acd1daba7f 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 3fad5de1de59..d51aa3b75e1f 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 e96972b0d1b1..cb0a3ee05e12 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 3135a00334c7..efafc5b05b18 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 d2ec92e0654a..bf45a466d30d 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 b5a99150cb22..cd9ca5e26748 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 f13f10d15e82..6b6cfd55926b 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 99503fc3942b..c243e9beb233 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 2d2062696d77..e4b8b906fa64 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 47d8f165ad05..d530aff9faa6 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 fdba836a6ae2..c1494ffc3334 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 f1eddb626245..aee910f56eb6 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 6488d1bd65e5..e16198696a69 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 c5728b6e8b7b..1ccc9f3fcd5b 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 331e58c4bd29..d5ed7e85b696 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 046ee70e990c..6d119394d5de 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 aa7da17dafd1..0eb68e65eae6 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 ae05866e57d0..be8ad72d28df 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 718bbdaf49ea..dce2db4cb770 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 fece392ab1cc..172b5ed38913 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 356e95bf97c8..11d51d756abc 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 292cd3dfd860..360cee243c33 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 61f2bc33f7f7..2464abb6585c 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 4d2fa0e15b48..9d807358cd5a 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 12383dcbbda4..cd9523d27108 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 e4d6c0293df8..67204260da24 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 3c5660724d39..071b18e5a8a6 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 c8a751c235b1..6af11d42e31f 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 4aacfcc89a36..7e364ff984a5 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 48052fc4ec88..388fc2a1b3ea 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 42fa8b7621a5..9be303cb652a 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 7f86e2c20716..d7b9e5a6355b 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 e91b2c9360de..e33e69ad78c3 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 2d301a8b6a96..47e9fa306dc4 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 5cf9b1b8ab70..f889d9e1e8d2 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 89d062d584e5..18b5a980633a 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 c20f04ec9470..765def25d600 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 2df54fa7fb46..0b9f81533020 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 8c173140efd8..3dea9156f8fc 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 88cdde2ceb2a..2badfd6a0b1c 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 2ffc736572bf..085fe855e8a8 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 6d0cc370ff34..23e01c02a0f5 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 d41fb12ae8d3..ffd9af76d173 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 000000000000..ae65d9b2f6ed --- /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 b657f69e26ee..a9902ca41721 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 000000000000..4dd32ea3aa35 --- /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 483852455aa7..32019c74f86d 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 727133be78df..2943a31454a6 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 233aebfa1470..f2b4564c7ccf 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 6700f21fc8cc..69ca271d27dd 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 f067c5af6df3..323854575ea7 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 6c35779f6c4c..636fb7d9b9a1 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 1e8d73ce560f..a226b720df9b 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 f024e5a6a1d1..ef5cb169a2cf 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 6c4b9a431768..53e66e580da8 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 fdefcf7e77d6..63b8e2d867a7 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 000000000000..347cddca8564 --- /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 000000000000..5059e71001f0 --- /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 372c8faf773d..87f86306b482 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 000000000000..a11970b7111a --- /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 8b08aed62b8b..8870a144c9f5 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 5368fcb61656..063a05a72f3a 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 53a0c90ce46e..57a6092d5852 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 e7a9e22c2d68..b1e8822cdcf8 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 58eb5462ef84..c08e4f7f4ffa 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 2ba36b4a50d9..f8adc522fcb5 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 53ed9b3297c1..32d8df2f0487 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 136f6fc1427d..bee1065328a7 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 76dcba304a32..c4cc291d026c 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 146e13f34de1..3b2f233c6afe 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 5f8c82b98d04..9b4b147c2304 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 000000000000..b0d4843aecd5 --- /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 000000000000..16df55c1dfba --- /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 490ecc967bbf..0aa264116932 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 0bb970500bdc..bc5a3efc59a3 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 08c5c1a5c361..aebc7dc7baa7 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 69fa75d85f4d..9d95c362d928 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 25636863793f..c09b3f415d86 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 6d97a2da739f..911bb4c8c773 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 2507f08e9e59..cc5d84d9471b 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 7c4520967850..71d852485991 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 9c59b5466c74..b5ec1206ce3d 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 fb5fe47f4f2d..e4728b9b9c45 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 e7c4cab9af18..ac679d6dd949 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 b9a3f39affb1..f6cee7672f7c 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 fee86cb5bcae..301e44168d39 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 6440f6e787ff..56f1ec518de0 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 6c7a4b03ef59..be5a385d3088 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 21ba375200bc..aec793c4ee8a 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 028a4667cb2d..cefee430ad5f 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 c214d3fcf405..7a5014664d55 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 fa9660fbbf61..e68610a02269 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 cc307417c061..4f8269081362 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 8bbeffb1f7a3..322eba2b9521 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 26b94f306bc6..28173d34b78d 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 fee456ae717c..4832fce1e962 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 2b1b28c5a849..000000000000 --- 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 8cdd8738e2b3..000000000000 --- 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 b40ab6d4f7a5..5830e1eefb88 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 20a6e928cefb..6c3ffebc8c95 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 8c21dc8f2ad7..15385e91927c 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 f444ad6cb323..3c852cf450e9 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 f9b3fbae2137..0da86ca9bd1a 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 000000000000..270d51840d78 --- /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 6d168ec56618..6c289a97384f 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 9414f4211d7a..2fb8e30a64d8 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 e7aace763a1b..205a3ad287e9 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 000000000000..2f21e3ea56b6 --- /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 3a6cd298557f..a0813fa0c801 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 6b7d242e1f6d..125dafc132e0 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 a9f56cca0015..75990d593dfe 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 328bd8b0b041..efe39aa1600e 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 b8082c12c644..2511cf0f20a5 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 2d941f74c73c..2972849a2d41 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 5886a465409a..9880a65d0cac 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 84cc11b8bf34..87666940c151 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 000000000000..4bbfe79a2c9f --- /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 01a33db5293a..10cbcb5d5b19 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 aee373329ce0..fe7b9f8ba66e 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 69cc5e6e89f2..1f65b3748381 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 aab854d24adc..5da8f4cd4626 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 46dafb72c412..344927bce774 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 68e8e6402acf..5b84989a7c41 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 573dca518e3a..704e20cc8c56 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 000000000000..fb2b30632761 --- /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 000000000000..ff118024011e --- /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 a64e407b39b8..014906594a7d 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 36302458a75b..4548f9ba624f 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 236c42b52930..2e63a3e8c7cd 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 e32fd42af323..140b163e25cd 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 7b2d92ad59d3..1cbd5b3afa28 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 e3eb750496ba..7a0a8a59a084 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 24b342a26a92..79560451e540 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 0ff23102e755..59979c410838 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 9def4a292f61..ef57466ec84f 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 9445bf3723c9..921c8fff67a1 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 4874969b6332..86f8f666d80d 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 f902b2dd41b0..b50dd78ff1ac 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 9bab024f021e..c8347d70b1d9 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 5a90ee659478..a7500f8c6a5e 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 000000000000..d785d3780658 --- /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 615a8a8c6604..165f8446c763 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 e3bfc60a40a5..de18f3c2ce8d 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 000000000000..d26d314cd3e4 --- /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 aff8c173d9f2..b0a50bbf128e 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 f95655f5e9a3..07215fc42f87 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 21a36cecbe54..531a633f05da 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 2ba9d4f50c3a..9bc8fcb66946 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 ecdafdaeaddd..d239fda11aee 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 b9293fe27294..68eefadf4110 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 000000000000..b837eb07cf1b --- /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 ac72a26b0eec..534ea1358803 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 501d097f29fa..e8b6a4d4313b 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 768b40a11388..3fb111db8517 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 5d8ae0928c90..7601f942868f 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 7f22a03c1bb4..dcad0cec1e81 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 5b5f01eef5cc..741211bd90d7 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 000000000000..ce73203c9590 --- /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 7544a3520c76..d8209dad02de 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 4c1682b1e0b8..35534750d0c6 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 6598d24fb07a..706a6956c5d2 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 f4922e388c46..88b22c59ae50 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 3c9565df9199..efad434e3079 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 bd4aaf5a2d63..5f9cf2720cda 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 bc95ec625bbb..245d96dee018 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 36ab017c5cbb..121f9cbc960f 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 2380c8e5d9ed..a51e82f29c4b 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 3184f89ced95..de135706ad3f 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 496ce779ffb5..e6dd48018e74 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 1247bbc19f97..9d519e14147b 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 6e64ebc7fb3e..d36b28df978a 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 07e7bb84c565..6c565911eb44 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 efa87a2f72cc..55ed40c2fb8d 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 000000000000..67053baa35ff --- /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 1a3d1a96c85d..48ad9bc971c2 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 8acd8e0b88b1..0f8e51438830 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 b59752d7cc3e..02499d54476f 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 349c7acc3db3..6339dad7f378 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 030bb2c01a72..96f9bb7053e0 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 40362fdd4968..8780e54bb7c3 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 8c7ed20e7482..8be43346bc04 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 000000000000..011d80253647 --- /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 d7d5b65375e9..c7ee3914f25c 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 8eb846ac9c56..d9469fa4b7ae 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 9188003ce66d..504e6ae96447 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 2ef77caa6f69..0ae90c1aebbe 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 521133cb08fc..3b25b4218f19 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 844eea11f514..9130461e4d72 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 c0bbd6e71db3..2aa09ec0be81 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 7f02ea9cefec..bcbfa6d3874f 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 485edaa1ff27..0e8f12823d1e 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 c26d8b6d3607..6ef992ffff67 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 f815ac02e6e5..2270e56e62ac 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 b27fdbffb7d6..bc05547e641d 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 5f56fb7297f4..d9b13f532735 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 ff278d4d7f23..5cbc9a07b6c7 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 13bf1d674c7c..7d42a3c4e7bf 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 000000000000..fb05a50b4e59 --- /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 000000000000..7a96e3fd4f2f --- /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 967f3f4f92ba..8ec53b0c66ad 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 c8902f1dda4b..68423197f3c8 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 7976f7477171..8f86d6e7ba93 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 24620d91ff5a..f8ea58fef3ce 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 a8236b4b60f1..a34773513d93 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 000000000000..ad2ea53e9f7e --- /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 000000000000..d357febd882e --- /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 1ec6946cf38c..3a293cfc026f 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 e22bf9ed653a..9a432f73d3f0 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 d02aa4b8444f..b4d644430dd1 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 d19314ce9ce1..d283dc7107d7 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 000000000000..1a4d1832c7e1 --- /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 d65889be3ac0..5e0c25466ebe 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 d872204c6b0e..afc5b40f9db5 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 ddce5c3f7150..01c1264567ce 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 000000000000..7205e882c314 --- /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 c0d51e66db33..f755efaa0e12 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 2fa8ea6467c1..15094a1eee40 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 000000000000..9a8db94401cd --- /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 f6c9fee7a1c5..61765913464f 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 01c47b320de5..f0bcda579301 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 03dcd6cb54e6..d0c3fed4350b 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 0ab63bb53951..8aa693d28714 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 000000000000..0d0fc081a118 --- /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 02744e50647e..b1ebebdd213a 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 5bc81a6daf66..ad574c82b464 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 bc354a5213ea..758673229afa 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 6cf84f76f919..cc28fff96c47 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 34cfe868c0b3..6a443571d0f2 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 d5e84a71d276..edc68f9d0c7a 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 33ac2be18322..ec1658b595d3 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 fd18b3fa3997..dd45746c8df5 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 2990b44c7f4c..9dd564d715cc 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 7082794bba76..48a6d81b6ba1 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 e540f1960d6c..6d3313624e37 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 7eb4238679eb..2a04beb93796 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 4b8dc5525dc4..02f2249862d0 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 2b7ae5d9c6e6..664e26740629 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 0615aed2ca03..b18c121607ab 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 ffa509d2320e..000000000000 --- 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 1b5870b429b1..e390b78b86df 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 7f28d97bf81a..000000000000 --- 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 613d57cd9c8c..5cb94b8bd547 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 22fdc7f51c5c..600e462b390e 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 b50b14258ccc..a919a3054196 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 000000000000..49bc0be108ff --- /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 4c3f9fe0760b..6bb717a0344b 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 000000000000..84f7925d2180 --- /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 000000000000..1b8b0376331a --- /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 9599dc9407c3..6b9630fa6b70 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 8b25e098b2fe..1094d7f0f7ba 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 f6114b3c2134..e2c57d514cda 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 31703f8fb2a5..6cd2ae018fb6 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 3128f125cd9e..488ef4cfedd4 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 b5b26d7cc430..256ecd59f4e9 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 000000000000..7e37d1348749 --- /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 952aa2856370..1a65ebd33577 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 91fe3e5b22f2..ab7dd90801ce 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 2f0a770bc71c..f16dd62bb1a4 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 735e83a0842a..3ebeaa6262b7 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 1bd73bebe03b..56a144bdfb8d 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 31d0806df8a5..9be6d56ab345 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 05a997c62ffa..0625431462cb 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 fcd15355a101..a6b99e583518 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 000000000000..623f86a61c2c --- /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 000000000000..94c70da276c9 --- /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 170fde7b9caf..4ba8932fec25 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 8bf2adf484e2..141d51bed0f8 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 26deee3b8598..fbe08dbfe7b7 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 46dd4a228645..cf783053679a 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 000000000000..b3c3caae4e45 --- /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 f78f7fbf9148..ff1daef8b80d 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 439b721632d0..3e01bcdb0f9d 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 2e79b80d6105..8a61e0252bc3 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 2c6b153370e4..2cf094c091a6 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 72642cfbe63f..4e2ac8a50f14 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 efb3a2f9ffab..0a635b7ba82e 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 2f83b0b8d992..f973e67599c2 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 6ae9eb078e26..8b6a0c164e90 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 13db2d13567d..66bdfb15c69b 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 b2fdeafd37c3..fab7317868a9 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 90a7eeffb047..37d055e26852 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 1161fc8256cb..c43640b65245 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 27c13c0cb396..052206002610 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 4b7e4c8a3ca4..3a6c8c97b221 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 5fbe095c4f35..45f20fccad90 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 33f2ad79ea0c..ba54e5f43412 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 a8d9a38729f4..9ae07c1c900c 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 077e72f55764..5beaed582407 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 c6e1c5a50f4a..00879463276c 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 255b30d60ed1..34b74374b230 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 75b72516a3cd..6c2db85d7942 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 27dcd1063bf2..946342922289 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 0529fce2b16d..57bccc608183 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 d773de4375cb..f04319f23de3 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 e15da80b3b1b..5c9456b76a63 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 becc2dc5dc9b..4240263dd0b8 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 8d70794a7540..302f5adcfb1f 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 241ec3b42c9e..93af03ce229f 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 9f251f54d6aa..7f2454c811a7 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 000000000000..549633b7dfbd --- /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 337a1585b1b4..7f5a097daa93 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 ba716e1dd13b..8ca8d1feaa1e 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 7a29ea7cd1dd..b512d5f5c751 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 54e5a89dd9f6..4320a88457a4 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 165e0c13c8fe..e4b739af0517 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 fcb37e7ebad3..7e611d68a0a4 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 bcd947983a34..211be0a90897 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 3b746c293d88..b87390d4609f 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 209a99245ecd..4dc56894914e 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 9403a51df532..c771f5423a95 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 42edb7c707e1..1ee2f5d4fe7c 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 2862ba7184fa..9d0fc4565385 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 e9307c7e80b9..1624e62026af 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 e48fba1551e7..c6089fd5308c 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 cbff8e606f2d..3d6aac7e18e5 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 b08e3b5fa23c..30e8af7facdb 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 d32a3fb5f1b5..f19a264c06a5 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 1e07902365d2..8c1b95a1d26e 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 000000000000..928291940cfe --- /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 bda0552e7529..c58d12a58f89 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 cfd3a4289901..33a321329341 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 f194227932d0..e3d039e42232 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 4e67fc304b18..7d1830c842b6 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 a6437f070b98..a1b90b83d589 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 ef3635aa8d29..79e0027d5096 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 09191b38e1bc..916dd4a15948 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 5e5f2f8563cb..975016d55417 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 fc1fe969bdc0..096b69a5e82a 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 21a6a8475182..fd8b53372510 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 48af3c9b014f..b98acae2a8f1 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 6f5839b3d06f..bb227512387d 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 70b2d3c148db..53549986ed24 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 4a44b35a0fa7..79db7b8a558a 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 43cea9fcae93..fba884f5a2fd 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 a6580581f850..6a468bd67eb5 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 19fef1c42dc3..72ef08107040 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 7723b9482a2d..275aaba4f2eb 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 0ed4fe0aaad7..ad83bd43af2f 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 21b469347dfb..51dfbbab61e8 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 494ad686ee3b..f928dbb6ad13 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 9d0d91f4be54..71fa2bcd41b5 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 508d2329edc4..94fa0be01737 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 bd433436eb02..f7c6d80dbf1a 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 90e8c73e075d..26c5ee421527 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 811284491dd7..deeb9b36c719 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 e6b93f20c488..6a1ee5d196ee 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 000000000000..e8ed69a9088b --- /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 9cfcf95e78b1..1397ea2d586d 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 2c36be1c21bc..692b82dc6887 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 4e960524b94f..060abda33d0d 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 8522ecf9c78f..08841eb58100 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 7b2992201fc7..b4ce588050fa 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 eab37fba19a7..5f3a1ac91bd6 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 3c96ba911651..4faf1e28b1cc 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 4ff8c759a260..e1d1fa3070a9 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 b3e2ed510153..475330a5fe57 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 764d7004940d..e9f42d2b9b5e 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 9893c6085a69..06beff03f904 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 3a46f68e7755..8fe93d37c7e8 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 6a3f581c4e81..d0827bf2a7ff 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 ffe597b00db8..c7d5f7649783 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 38b92151b29f..b2a13e3db7cd 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 efda2c583604..a51f5106930e 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 a7a6b35a24a0..e28b2b43061e 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 567f47520352..dcf42b55c5c5 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 5c7ddfb34d46..fa63ee90adc9 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 000000000000..093635b10e42 --- /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 000000000000..36dc41b7ef14 --- /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 d9c3bd0825de..9bc8e1bc920f 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 000000000000..cb658e8fcdac --- /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 000000000000..3b50532d6a0d --- /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 6bb40f0166d1..7f94b354dd29 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 e97423892616..7752313b2a7e 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 933644cc4717..d429bb4bcbbf 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 78dd0d095414..4e92856fee24 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 ac171f60ead7..cbb9f7bd5b87 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 5a13d91aef2c..18d9338f9093 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 24639f3bfd46..b10008d0c499 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 8e52237d949d..a75233fcf359 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 6714f917315c..dc18bd694c69 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 48af4a99dada..3df13260d51f 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 ec2498aa69b9..9479295e7471 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 5d5843890e14..a5117f3a6786 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 8ca3f8cb2a9d..91e2427a6c84 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 71043cb78fe1..0b78ff54c358 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 13b7f4db0c5b..94837023ca0d 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 85006e51b663..bb771c89010b 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 8042363f73c9..d0347bcb37c6 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 e1c939c93c93..706d3fd71763 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 e66530aaf769..0e73dffb20a9 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 6bfce921d0f6..3dc7d04ede38 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 09baf383f972..bd183f97c126 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 0a2df6b6d4bb..e14a07eb6835 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 d1aa59569e62..110b7caaf81a 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 ceecfa73ce4c..03b7d57b49dc 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 bb3d571e6f86..3b37c805cdd7 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 ae4e9ac8a9c9..95d2076153cb 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 e0ba5145b3e5..000000000000 --- 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 ede12f50feca..9eabadae3b05 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 0d6a87000ccd..20c350bdaea1 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 fef296f45be2..be487fcb8a6b 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 0eb4f21e53ca..46be8d145320 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 2535f7514f1d..fcb4bdb53743 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 f5fa8ca9221d..7c586374ec51 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 e4ab5639ba66..6fb5b91c2a92 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 86867cd1cca7..9e3ab37c3223 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 205376b1257c..965ac5db6821 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 039bb1917d37..2a2a6a675989 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 403a5285e150..be5114565ff5 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 f8d50a7c7982..352b6b900cc6 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 f0057f3a1a88..4a6526fe9c6e 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 d7b964259683..ccddf907e94c 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 8f7800a7323a..7314ff893b00 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 36afe8dd3e00..4bf414cf8dd5 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 20c9772ce464..3ffadb5acbe3 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 385f9825e46f..ba437eab4122 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 6472712bcb40..d47369f5094a 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 1fa3ec8ccc68..5943632930c5 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 000000000000..80420202c053 --- /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 49868bbd831f..06549468efe9 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 5f06feb7c622..88b4a8476658 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 3996b94ba14d..86fb6e034915 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 0cb09ecb6430..6a2a8dbc18fe 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 4eb7518cc102..000000000000 --- 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 cc1ca3a0ff2a..265ce82b8ac3 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 1c65c7da3a28..5fe35edabdf6 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 d3bc8deb05e0..c74f35e4334a 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 47a0687e79da..e5aac9b8823d 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 52397ac33c4f..6ad67f75b218 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 c4c889cdba52..818fc63535ed 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 201a4fe113e3..5e950eeac04b 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 94899c937a86..811a907746d5 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 0a3368ec2abe..53d1c5c3f732 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 7ad8c388a203..0b2e5bc37774 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 9733f1e2efa0..6ac937dcb931 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 d629c776194d..2af79659cedb 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 63cc4a3a8d35..e17664a018ab 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 7274bdacd9d0..91278c9881fe 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 1acaf4850ebe..5ebbee0e4d6f 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 48a79e8844e8..f0d9329bc5a9 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 bbd2f0b59298..89d49a151457 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 7225efadebd9..1f2861e7109c 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 2c95f6d403f2..95af658ddd36 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 719aca5096a5..c03bdd8331be 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 1a47a3557493..15d70d143081 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 78f6d8bcbaff..fa3034cb3b07 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 3df2ab4ab406..b127be821c13 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 37857fc459ea..edd923822ea3 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 78d16e692261..9fec8b99c1bd 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 68afdd8694b1..71c63bc82aa2 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 5e7fb5cf7a0a..1c6c1b433547 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 140903766848..af51c78a1698 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 35ab27bcbf63..dd8e84349fad 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 1ad51e92d472..505f28a24510 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 9972ea757098..cad6a35ce3f6 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 4d416a7c106d..4f7e5b931f47 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 000000000000..2756d659edf3 --- /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 750217d99188..d3dd917d7b7d 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 fafc76a76ffe..1653ea927206 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 0595ab2963ca..b6f25795665a 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 2e12e18a5a53..aa6db0accdba 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 bda164465245..812c26f56e59 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 426985d312c7..bf0b92b6f6d4 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 c527ce2b229a..eb8ecc34b8f3 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 4e8519d17b67..53e8109fef51 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 000000000000..11529eee2107 --- /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 b431cf51b019..22e8a2ca5360 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 da136a7f9e1e..682e401c069b 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 4245acf716d5..6aba42d33e63 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 d4165be3784f..37ac02987061 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 92cec3ca82c2..d3e8b417017d 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 c0a0206ddd1f..2ef1e26f5ac6 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 b00f8f6c58d7..188431bda6c6 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 09b431fdb116..22a8f4dc3bda 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 63f16f688acd..e4598193469b 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 14efe48f30db..bc54f3aa627a 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 88bbbd9d8646..11e37c4bf649 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 79bc743fbf01..b03d0a01dd6f 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 957692b4ba17..cddc99eebe29 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 377a5ae61687..0df161cd4731 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 7046caad295e..bd084b4287dc 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 f56646e5aedd..fc9132ec0b40 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 99c151f8c80b..4cf0ae555789 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 188f7cb29343..e2ffd1602585 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 157c0b9742bf..dc9d4ac2d595 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 548f58a50fb1..d7c3cacc1f96 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 47da0b749df3..f6ad16d7f90b 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 8355545e8dd6..ac382bb63278 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 131d83f0d58e..9e05a41e8483 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 09abfc60a528..14ff5f9a519f 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 a80e89e72bcd..41463a7627ae 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 fab85052df3b..b5e9d0b8cf2d 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 8d6eca7ef32c..19c30f3ecc4d 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 0f1020b0b078..b1bfbe3c4cf3 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 e80362c386b9..767f3aa920bf 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 56388a8a2555..5e3c252435cd 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 ae4765fc9e76..8d36e4630dc5 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 cd9d068b8acf..8a5d9c3597b8 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 76f8e03fa13f..65aa17e3b4ee 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 de3f3a78988b..67f43faf99a3 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 000000000000..157ef3753e08 --- /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 8ef705f7ef4b..6cc59a7e60bd 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 40e69f8c9bcb..60df1f899ded 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 000000000000..a2bfa88f8127 --- /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 a335b0ef8e8a..3f6dc9ef1810 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 000000000000..a0cef882f596 --- /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 000000000000..fbcddd46ca85 --- /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 4ac9c9b925af..000000000000 --- 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 b7c691e9594b..95496f90e043 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 46722ff5fba0..000000000000 --- 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 6d7bd0daa96b..65719514f96b 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 cc3e104775ff..000000000000 --- 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 57741c03ad54..efe247df7376 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 5fb953acbd62..180d066a87cf 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 ce66de251dca..303ea6162ba4 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 000000000000..b51d0d147e2e --- /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 1be5b0b4a894..ed26dc08bb6c 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 bb44762e65c5..978baa925e5a 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 89ac92bb4745..2b0a1a5c5141 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 000000000000..b18a3e7cf8f7 --- /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 000000000000..3641c1b33323 --- /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 000000000000..4b7b8538290c --- /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 377fbe3339a7..f07df73a2556 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 f869f984e001..f0501ffadee4 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 8d199a291c44..dc6eb0f09e8c 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 6f9c8df30012..cb7f7070b24a 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 1c409c232a82..b27569a8a30c 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 f87bd4c11ec4..4c03b197b4a0 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 d1e4856e0523..b67e514ce54d 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 465c72d73f5c..043f1c86bd12 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 4b4148bdc63d..b6248b8f6f13 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 6fc5f9514651..5c43d717913b 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 06321d9d6218..f554d36a0c6a 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 8c5aded5ed9b..dff6b15494bb 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 8108b9e4ddb4..49da252b6c0d 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 68cd91c1676a..d5d37ae27c95 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 b5af1af91f36..48efafa74fcd 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 03f534e1a4da..64b592b78714 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 b03d2aa208b5..648a2cfd9945 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 0e524ede0912..592c0938ffbd 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 622e7169faec..32ea821b22d6 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 7c4e6ff8c3d7..59c7154fa7de 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 0add5ed78cc5..0ca01c8d2aed 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 09b75e27d46a..ebb04a30ab86 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 b00686fb24f6..a33261e7a59d 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 165bee76b69b..f4a56e4f9240 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 10e46176c6e6..28b65d2b58b6 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 b0af34ec7606..4a023849f390 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 06df1df9f769..fd7eb4990f06 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 8945ffbb384f..665198b3d1f4 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 a3f0a3b84f23..9489bfa0016b 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 22eb3e3d8594..41b0d3c13a80 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 39ecaa995d14..29522f75c257 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 090cb2f519e1..000000000000 --- 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 225a5c5fc376..0111f8519e7c 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 000000000000..43b96466df28 --- /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 8c4833be3e6c..e27aca4fc3d1 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 e6f956cc0910..896daa27f7cb 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 98f6e2895d18..f4018cff5f43 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 8f8934cb084b..ce3a2c0a271f 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 9701db3c0b79..afd602f60884 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 77cabc409c74..a951046ce015 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 40dbfea9801b..83340f78dd48 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 09c36f9eb2f1..6b4ab1f3a8bf 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 e506829b575e..e7664244db7b 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 c05c7423d9a5..09236565d598 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 a86c1e8bc055..b4765c0aae32 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 d760cee6374d..7c00add77971 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 ef47e3e03586..cdcfcc00481a 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 4986661e2f63..112341dcd4f0 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 f9c08d1f00a1..bfa6f2ea8555 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 a2e452562698..ed8767419d4d 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 129516a44982..82d6272aadcd 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 7577c0a3db99..4bc56f0c4526 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 9f86ec94f184..fa0e10f9eef8 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 29700774219e..ef897d2ea598 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 554c7d8c78bb..1eda11890e79 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 b07e0fb8c520..bb1aacc2069b 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 c9dcc97d5cd1..739ad07adbf3 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 58a85f8f6e97..081acb3acb61 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 0601514546f2..bbb7c53b61f6 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 dae25f6b8176..aed44d1213ce 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 2d612c16fef3..889c17e6988d 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 72918a40733b..602fe4308160 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 7187b8c00991..4c4fe9b1abdd 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 000000000000..3826e92440f0 --- /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 aad9b9bee89f..a5cfa937fd8d 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 c67fcb74047d..229966561c6d 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 733aa27da854..5edaabbacb0f 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 e6c277959e03..e32117a103ee 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 acffc741d578..2ce0fab170ea 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 1972042f805e..1191be09f76e 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 a367efaaef38..821b88f9b20d 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 6594deb84a5a..2eb256935d77 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 41f110e9ee10..d353fff87efe 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 60598e565395..64c3f8ac2828 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 fbeb965df380..7612c00393fa 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 9b877c2594b3..c4639150dd4b 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 a1fdabd8ccb1..ad8b56e830fa 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 5699396a0840..2961baee1024 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 1bfb6bbfeaf3..69c7f0dc17fb 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 af47afcc601d..83116da4df05 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 37ed8eb23fb6..17dfd08f90b2 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 e76f95b6a50d..374c4cf66487 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 8f7dbd2d2eda..038df41875f5 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 1c3b41338674..cf02efdcece5 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 8d13ac42e1fc..e4d0c82c4176 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 000000000000..7b17d4847718 --- /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 3888c4ce0a0d..97510bc3b457 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 4d266827415f..1b969869f76c 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 d72a5b848261..48e45328f67b 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 1332b265d54c..999904a21d3c 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 5150f13fb80c..b515074fd475 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 226bdea03013..05d3ddb7cfba 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 5d99cbaa988c..052e290120d7 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 e6cfca5667e1..1616c082c017 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 fc5192bb5e47..33a8284744e5 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 df95b26b9c5b..d1011548b2a6 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 88f44c6cc853..b7c655caaaf4 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 3d71d9855d04..78dc54497dd9 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 62358d41cc53..e0fcc221100e 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 de922bb39900..7cbae2271aea 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 56cac7ca9185..b51acd9fa728 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 000000000000..69e2d3d55981 --- /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 e9d1317390ed..d72aeb629c38 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 984ade077a8a..7a5284a527a6 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 f96d3f0f57c7..9daaf7268c39 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 51e9c4371b5b..de2ed0d15964 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 e7d0e6a63a59..187988077435 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 db78f2ec9204..cae637c2c4a4 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 6c4ecf6fa392..9e3790090272 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 e87c86f1b4b3..1397f0a057da 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 edee9ab33e9e..ee4b05fa689f 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 82bcf5a4aa07..05c535e62c0e 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 06cf3c06ffa6..2e389c753e2e 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 000000000000..4794e14b4698 --- /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 2ca059820ef0..cf93729eddd3 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 edb47e11dd7f..008e59eebee6 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 26478c7f2ed0..b777c3b72e72 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 000000000000..dc3f1922c214 --- /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 aee3937689b3..5774320220a1 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 bbc78efe5cd2..8b6898958d3c 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 000000000000..91a7b0ed37fd --- /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 67d4bd65a9f9..2884fca62398 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 ecf8ae9da8d4..1964ba6aaf73 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 1a9789114dca..791db13e4239 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 fb6902634da8..ff3408eb8dd2 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 96d3d34046e1..2e8478f41d3d 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 b97b079ab663..ba6868b62f6f 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 f5eb6e188b7a..24906b11dd59 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 8381f182e5d3..b8b1193058bc 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 57060179473f..b7b90448e4bc 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 baf2f5165d6d..9c05e9847202 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 b2a992b850e1..8ac0b000c46d 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 6bfb4907807a..45bca7d3fbf5 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 f44cdd0bad72..bc7c66ee5310 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 4a806cbb183d..bfa504477616 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 519df42c789a..88991bb40a19 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 b8f13d01424c..d576d2b5b476 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 50dda9510b91..eaee8fb5fb37 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 c8bbcf2aa7f3..5ed69e7bc69e 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 f05c5fd210c4..f007f0ae52e1 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 11bfbaaacd07..06bc0024995d 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 01f5af339ff0..cb9d10377cb8 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 7484998ab205..17aa7e9aa060 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 7fba1d49d747..3dffc5c77c2a 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 000000000000..31c7a6382292 --- /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 000000000000..fc1fcbb0db07 --- /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 e917cc024d5b..cd8ecc18223b 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 8ecb546df703..4759cdcf5737 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 e9a177ee1937..9005f38f563b 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 61e0db781b87..3febcea2f9a6 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 000000000000..5d412469617f --- /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 181273752ea8..dff69130c18a 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 60feecd665de..3e4c9828edec 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 41cdf267f5de..350cb56695f9 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 a48890144127..cd7b724a1d78 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 9954ff660adc..cf3d6fe9e93e 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 d06970e8d07c..1235a41ffc7b 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 c1c2a44bd7f2..668706ca3895 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 9d244ca18f32..ef4c732ef521 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 000000000000..57eca9f47a58 --- /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 9c0dc48d42ee..63ca213c2c42 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 04ab062c1a1b..64296688c93e 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 a341a212a37f..dcf022fc4453 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 b4778f9f4f8b..3b432ff66b12 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 9a9edba512aa..7077b855e3d0 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 84be50ccb5e5..e5a2b87f16ef 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 d86db7adb9d0..4e888f4faac8 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 87e636b9c030..a4932943fa23 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 36ca31707c8a..e64ae08037a3 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 b84053b94adc..e80f43f5bd9b 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 ea78331e4764..e83e349b21c1 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 9b8d6a7f976b..21ad7d757a19 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 d1daec284826..af121758c3cd 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 f94f8f5dd707..accf62c0c469 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 6e6145e79086..adabe22c6b64 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 7353078600d1..98f84ca68b8e 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 989dfb886ec3..c97a67c0bd38 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 000000000000..f301122a92de --- /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 8bae8ce373c7..32c8c696730f 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 e452ec0511e7..8a8f80f57977 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 279791561d90..51b08af23c5c 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 ba23078bba93..edb8114e4a41 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 437c42b03317..91a66bc73781 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 0d25d3d686c9..b1e740fb7607 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 b2997ece5d56..bbe05e0396bb 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 d6f8983c5eeb..7fc042832b50 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 f21675e60b2d..1535b1a2568e 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 3ee4fd8259a9..7b642dffa503 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 957f0f7f68bb..1515b4b0f99d 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 000000000000..c981857a248b --- /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 7fd9abd82a3f..d698d25cb3b9 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 4d4dd248bc53..111b0a8867a4 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 43a2d0cf2d0b..51a835e4b9f0 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 2b1c03ce882d..44d7f1d0fc8c 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 31568c7b0fd6..47f02e32d77d 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 3561fcde839d..134354de40b7 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 ff0332e1e5ff..5787836487b4 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 a3cbdabeacf6..eec7a066a887 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 a5196811a6a5..70ca28b46783 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 2a9e162e7ea9..d30e5d96df45 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 3260f6a50690..992b981c0037 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 aedfff40d702..8899654cc4c8 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 d3cef00bbe8a..9e2857c960fc 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 e8bdcb371189..c3d2feb2fed7 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 76ea9df78c25..f9dbf14624f7 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 562835159eb3..3d41c45f6dc5 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 b954d2d3cdb8..1d668e039bd0 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 36734a97516b..fdd11db509fc 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 06fc04ba8fb4..469b4cf5ea6d 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 6232d1118a7b..95ca5d4587fe 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 7adbcb86c501..d0980001c8f6 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 756c8e259718..ae9576e6cbc7 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 000000000000..c3c982547aef --- /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 1c6708c51c97..0d3c9d0cbd06 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 6900f305c0f8..d16822279206 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 44d231cb07f9..8073c11fbd2a 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 bc1b369d98d9..000000000000 --- 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 68566e2a899f..000000000000 --- 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 898186b714b6..ff6b1e9de2dc 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 7868e74d010c..307781931e97 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 000000000000..78b32f7fca15 --- /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 000000000000..9df4c59717cc --- /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 8b6b7741c7df..816b352460ba 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 15979def34b0..ab13c4989d9a 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 f3daedfb96b6..3fc5099acc2c 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 76abe7c9b4b3..532166cf6fb0 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 846ce3098425..2bd8bfa99bcd 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 142dafe38eb1..0df0f86ef456 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 7b5b40d65a36..9e651c59d4eb 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 e9dba4bcf469..28f9625b5b66 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 25f9b10b1e85..e2ec64932ff2 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 f84ac6d600a6..4b201c66fe5e 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 5dd5fa0f5122..335279c7084a 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 61151cb15506..2ceb8e91def8 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 58492259b090..6f8d690779be 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 c9ea146f063b..297596b8e39c 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 0802a32d92b1..8c002bd14b08 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 f7964e4e5c6d..b96e6b2a02d5 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 9a134343d296..a61c66d93746 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 f2585f781465..7dedf52e8939 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 ffb938f30a57..e1b14acb46f4 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 000000000000..0261dfbe8991 --- /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 000000000000..5813fc15c0d0 --- /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 000000000000..b108d1a5647e --- /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 03f30d64fb2d..b96c4d00214b 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 b84bc08ddb37..bd018a690d48 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 f084d17e3896..1ed1ef4afb53 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 000000000000..07d194dbff42 --- /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 6e51e3cda762..3a26def26c91 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 3749f568aef2..66fe0d7207c2 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 e06f2a88ade4..22cf63e536c7 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 e643c212225b..79ee45b4c1c4 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 ca4f91533ecf..f5185c639873 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 000000000000..8377505ec1c5 --- /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 2eee9ad40c16..84cc0e0bc8dc 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 5c31cdf6e727..fd1aa050fe74 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 eff93c8e99c1..61b900c40122 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 a8402d975931..6fbe39c4da2d 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 debcea78f555..471ec1d4a76a 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 0c8ad9ae1b3c..da6250fadf3a 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 e734e44a2e04..0a54bc98bb9a 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 08f510a2840e..328e106694b2 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 c0d41cda02dd..81c236589654 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 753a0d24d0a3..b1118cfc5977 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 35de284c0baa..eacc4b5758c3 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 0e8cc2ebcea9..1f6112d7d7bb 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 a6efb19b5774..6717fc3c97f9 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 12a0720e4473..e598e099d065 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 ab8802a1b691..5225f88094fd 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 32c117c01738..a3067bc4af86 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 249d9ff1d400..3be02e7c41c2 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 443fe2f1d6c8..03483a1a2b8a 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 000000000000..ace1e5add43f --- /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 6a6c95b6572d..27caef9ea2eb 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 b4d97c368ea2..cf7689367bd3 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 9a40e3bc1053..80c455f41a0e 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 29e768c257f1..099bcbfb25df 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 4104d35cf10c..992a3c0248a0 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 c1ba5ba23b1e..f2fdd01215d6 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 0560b1d25b3e..9d690546102a 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 55538925abd7..528b0d9b9585 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 de92219e7f97..8dde3e336cdb 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 03ee66fc5987..7cfd0a935f3d 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 b0fb18c89b1a..a553eb3e7153 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 29b0a7867db2..4e56ce7f5a12 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 e826dee0d252..8bb67df70da9 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 497630c9aa65..43b4622ab03a 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 f0abbdc049a9..5ded38d974e0 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 3eaa882cb73d..6d3a3d1f104f 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 ea9d7c9ea855..9fcd5cfebf6e 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 9a4f922c2b6e..b6e1b5a1667e 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 2144ccd33037..dcd56182e320 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 ad59b1be10e0..f3c7bcbd1a0e 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 88ac4f0c3eb9..2dd4b830102a 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 31afed3061a3..05ef696f99b8 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 dec8b4ba0a7c..92bb4ca22077 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 e7c32c130956..7adc777c00da 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 6cc5dc9066dc..2be5a4ab83b9 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 085dff7ce04e..9a00959de020 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 da7775769d4b..3498ef278675 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 4568c3e8acc1..36fa888e8884 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 484ff62e9e68..e2bff0031186 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 3ad837768421..ada603cba963 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 8b0cab315888..ce80ae14f233 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 000000000000..aa11c069a7a8 --- /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 a604349afb01..ef371dc59fff 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 29a04627bef4..b9951b666296 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 ce800e8f18be..69eb313238bd 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 000000000000..66c2e83d62ca --- /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 27d7ad8730b6..47536cc9f6a4 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 1e578cde512a..e427519d4d6e 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 3a0a548be0b9..1c5858b5677f 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 8f7f74f71232..e58570103240 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 e943263600cd..6140343fae75 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 375552aaa33a..f5a88cbaee17 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 c98defee57a0..e537180686cd 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 370f88d7b479..f20d5ccdc4ac 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 1dc6a9cfee56..c9fc0ff30fc0 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 e404da974c46..d869b0939558 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 8ffc8ec69fec..e5838dc1bbe6 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 2dfbb7a23705..b0f1f48d9aea 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 8499ad0880c0..90b42ba72b7f 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 c6cd118aea80..202e7a2de95f 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 17253173a5e4..6c3241d629b8 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 9756d9b42b0a..d364074d4450 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 ed54ccbb0a15..58d889484d6f 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 ee54904bfd66..93ca8c644798 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 1adab6b70a3e..d8203b9e7b5d 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 4b086c691cdf..abf49f936845 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 fc4e5229c9c0..ae96ce6925e3 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 ae81ef3c9f6c..87a6bdf5e53d 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 86e10ae0943e..5fc0703e011b 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 241d5786468e..68f29cb9b9ac 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 5ce7d06d7273..7532c6e9bc91 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 6fb70f1c9a26..017383a79a2d 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 48188574ad4b..fe9838fe0d97 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 8413f8c8f102..fc86b2e885de 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 fcc6ead550a8..1fc0162f8d08 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 7209ee3e4009..674570ec3dd7 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 34144e35bd5a..cadd98c74260 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 cd3a46ab09ba..1e6c558defbe 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 caf4f270a151..144addf02c66 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 501fae0ef0a2..dfaa018d3724 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 f5504721987a..ef490702a672 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 81e316eb0ee9..a5fd55c967bb 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 000000000000..e90a86f225bf --- /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 b1f4e5f9e42b..91845abc8b21 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 bfbee1bea24d..aa2835107088 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 614e3ca81350..be12906e61ec 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 60de2f9abdc9..05338b38dfef 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 0375b99af483..00c451141792 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 977511273425..c2adcabe414c 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 000000000000..84782e1e7178 --- /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 000000000000..4f046e34b189 --- /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 21d4b0031792..c57153fe0e0d 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 aae38f7d0f17..d780125fbbfa 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 a679a4f1112f..213780842143 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 21fbbf3253f7..a3238f7cba47 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 49993f2f7ea7..623bd050dc9b 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 b7c137258fd9..913d2bc3c6ba 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 4100ab3536b7..3e55215f4733 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 46b446b429bf..70d9f600fa03 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 702cadfdaa91..c65e5377eb3b 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 21d51f172582..c5dfdf95fb5e 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 f185524da587..faa199147490 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 948bcf33d378..1956f0ad41d5 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 7045228d6a2f..68ddef656972 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 71d79b88f440..ec40347cbcb3 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 2eebe67c46da..c14eee398cee 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 e9862041f4a8..81fbcc8b4838 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 816a158c0319..22f46eed7df4 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 00640be6c74a..f42a58e0057d 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 8df4e960c180..ef0a30472974 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 000000000000..9b9479b1b49a --- /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 000000000000..14742da35dae --- /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 2255089ab7e2..088ec29ae37b 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 eabf77f0e951..d8e600f60193 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 8c24d27f0752..4e69f9cce145 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 137ec920f750..4f63ed057b78 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 6ee9966401b5..eefc0a0c5772 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 20211ecb53b1..c4547e875130 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 000000000000..74bfbe83e91f --- /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 3e67e4ec085f..4b6b4eb8184c 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 4f4319af6cbd..f81709b97390 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 13e005014f10..0c95acd72057 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 b976388ae2c4..53bb938c3330 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 000000000000..a056e603f004 --- /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 2982c02cce9a..71a55f9293c6 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 ba8ec3a6e72a..5a84a9b472a5 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 2f2c20558031..aebbedacef64 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 000000000000..6512f402ffbd --- /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 000000000000..38978799b5a8 --- /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 acdd21a1c219..c71973da13be 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 7c239a9b7543..000000000000 --- 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 fd0860b3aaef..000000000000 --- 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 125170d36c27..f6bb7133d999 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 f646b4739154..34a6142e83a1 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 a04b0dcbba6a..0c5494f146f7 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 6f38ba5662b5..821fbe35ca1a 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 c95eba48bdfb..6ee4695d1717 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 3cebcc0101f8..997786fc1072 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 9bbae33b3e41..fe8598e49157 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 4f8315f060a7..070a81167ada 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 e81c0b99264e..16a11342d812 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 30aa45c14ffa..3638a1d18809 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 2b44b0398b55..c0e255a36e37 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 1829407705b9..195437250a18 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 d2d5e9548a0c..e93baa997c86 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 9ee30d347b0a..1eaf907b7edf 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 a32709294175..0753045cc4be 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 8dbd0cd57767..25019f76545e 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 193bcf205f5b..55025621fc7d 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 bfb3d010a3c7..5c13cbf86694 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 722b0bc5077e..d2a883c295db 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 9550a8d4fd7b..45dc487c8ed1 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 000000000000..b8e9f1e9195e --- /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 103075024dd5..27d5610956d0 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 bb1655b44632..c52573785ef6 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 000000000000..24b7953fe3d2 --- /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 47d7279a47fa..33924bdb7be5 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 9407243c6a21..3e29abee5d65 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 ebb50e685da7..6b4bf1946306 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 8c47de3afac0..038d04adeaa8 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 75f3be85dadf..87e8316c2c4f 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 a3247b29fb8e..0a6e947f15c2 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 340b59d5ff23..67f48d67f807 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 000000000000..027e3f493e12 --- /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 960b7b9eeef5..d262fb74c4b5 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 8102375479be..dd1218282d85 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 76a62d1762c2..7f094607859c 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 1d3f1a41e162..ec759572443c 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 c12f5b176790..751c0a48f5b3 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 a07fe0c75103..38826b7735fb 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 857dcfaf69f2..16bfdfb9a032 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 000000000000..ab08195e794d --- /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 377d83e59627..bb922f3ca5b2 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 000000000000..2ce277d261b1 --- /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 56dc6112844e..000000000000 --- 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 003d7d22421a..000000000000 --- 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 87b53e78585b..000000000000 --- 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 fbb1832735be..1b29118c9b14 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 ee516ac97aa7..993606d39c0e 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 08bea18d8e9a..000000000000 --- 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 6b38c3d59c29..a1d04a13af85 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 d1642e76fa65..8831993117d2 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 23252d0c4807..6b3ef60d6382 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 dcc46e370e71..0f05c496173f 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 838cc199a6ca..64753397833a 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 0450cb40a555..46378aec33ae 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 847092356d28..a60ca997ee03 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 931a27fbeff6..4c577049f44a 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 ba919fbc6267..67f2fd8927bd 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 547eea4f2d23..020298a0c523 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 000000000000..7cca3afa764d --- /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 94eacb1fe067..5ccdbbbb6b42 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 00300e65abb4..cde53ef41654 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 ba898932f06c..68241d79850d 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 d09c98b67090..ea73d5cbb68a 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 fce46d120de5..4c38e530247e 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 2a610edde034..63565e207f77 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 000000000000..5988f569109b --- /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 b17645919824..1ba22911c51f 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 c057fde95d7f..fd6065010fb6 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 39f54156fef8..f8ae5587ff92 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 2fa193fc8e7a..4707685e3dab 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 a8b86e71cb13..1a21bb43868f 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 c85feff43603..dc991402eec6 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 000000000000..8316fd918ab1 --- /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 8d84ab59d479..c85192603cbc 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 ead8d7298e66..c03918c4875e 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 bbd3073a4d8e..40505c4fdbea 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 93f233a4f925..f55b3852e5bf 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 000000000000..798f1708ae70 --- /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 eaedad167489..1e82ac2cccbe 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 bf22cb0181da..410c17be803a 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 d8a6f86f104b..ff4faf139e6c 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 13e0cdfb2607..7f1c3648f245 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 15c675c902fb..904782f3e1f8 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 b955711d0030..2bbb95d01ae7 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 a2f6980abd9e..e418ee69b95b 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 76ac3f75b266..792b80d04629 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 000000000000..e479dc26f175 --- /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 000000000000..586766e5456c --- /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 000000000000..89453f121a9e --- /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 38865ca4f3d9..68d25e4e3de7 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 cd58219721c9..69f58b828c46 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 ae4185441320..5c2b1312faf9 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 3cc4fcc1517b..dbf721888df6 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 63892439fa03..aa2246603f33 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 000000000000..f14d7f718027 --- /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 9fa284aba434..34ca82b8d04c 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 000000000000..f6d00f9fafd5 --- /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 000000000000..3757c8ce3bb4 --- /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 791075e4dd9b..ef4684689b8a 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 ad29c8f94d8b..6430a1bc7196 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 344c07d845be..9234d8ad202a 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 5a12465c4c49..6a1dd06de32c 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 6d8da4a1007a..4241f9153293 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 b25e7f76cefe..9519e033473e 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 fe1de349cff9..07e0a046ac53 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 680573fd304d..a322756c157f 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 f71e7a7a9602..d939beb443e1 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 c5ba35d97475..03d3256e375a 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 64645e00bd85..cc88cb1751ef 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 9953af19d90d..3ae4aacb872b 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 3561135ce618..845bdae6bec7 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 a59a25a144e9..7284fa65e8bd 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 a5024cb7f36b..ce45471c2f02 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 002bdef7333e..408ef0a32330 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 ff770f516bc5..94c56ba5439c 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 2748d576c692..ce4fae1cb229 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 567d299fd3a6..0dc13e290f58 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 74ab69a30e14..133315cd0222 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 d38383c30ecb..e528dab0c9fd 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 6a5f7c17b208..d3b5541ac4db 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 68f6c4df1593..8e760b787b49 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 289c60b44029..37b991e6d476 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 5a1093b47797..1f0414838adb 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 6ff09a5b4b0e..8b9ed8300648 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 4fc06b5c1ad4..b0020b64eded 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 3dee9844c0c9..12780ca73a1a 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 4086c0e094a1..719d26c7199b 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 295d721d3c5f..4f441d8a9a99 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 8c5a2e3d2db9..bf6b37b10286 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 8875c95fe578..80a1ced563f8 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 56168b348596..b4d821e1deb1 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 444ab802673e..29a20e0ece29 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 5d2b70a80ee4..c61e64a8a3a7 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 2e81e9b05d34..027ff8f264cf 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 d6709ecc1a62..d03d78a9fd1d 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 abc808477a39..296d6f38db64 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 dc618e4561e6..1e6384c7d576 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 f65f5bc26e8b..3e729af71fe5 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 441cab3dd7b6..a205b402bc8a 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 f3bbbf42d5bc..e75055e92b80 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 40f7ef9da08e..8944011a8d73 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 cf6f5f32ee2a..3b982b1766f9 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 41071012ae9f..9d57b4fcfac0 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 244a2c43a155..e3db746ee028 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 517105d7e1fd..4db034476c7a 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 aa851e14ab5f..c7c10254c0ca 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 83ba28bfce37..f6837b692b19 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 51575d62ed50..f7c0edf22420 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 db952758f04c..64d55322896b 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 4f1ecbaf8b3c..c7f449d97cdb 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 2135c7fd6174..e66f397a3830 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 f2da2957bd3e..c5489b8b9813 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 09a6cc4a3c0a..6c03bbc33b39 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 6b3a4f747f47..00507d2ee888 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 d7a019c1c416..eb39a702f93f 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 7c2c8fb31cab..4e2d16819ba5 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 99729125b631..44f200174d9b 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 54f68969d4f7..954df5301e31 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 d8c1364d3957..82c94d48068a 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 5b38555eda1a..bafa293ad9c3 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 48d42b5e9399..05cc570eb8f1 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 6c8ad97d3556..5d37b5190d02 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 ec8deadf9f54..df6e011e4d58 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 b9d97e3c328a..000000000000 --- 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 178be4911693..6616f7e4294e 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 18876cf355b8..402032b5cec3 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 36f6279c2092..64e0a9dcba27 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 31eb4dd7378a..66329b64eace 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 57db827169ec..88ad2c609bfa 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 ef0b8ec76190..bab24d014567 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 c3f5cb131645..3662c3badd3e 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 fae04b4d6a58..9a6a898beb5b 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 e7bec997119e..3ce04842c6e4 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 bbfce71a115c..7c0609730c24 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 7ce1c35e9eb1..fdb8584f08e8 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 c3522e17379b..25ef76f331ba 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 db9d6082756d..b5372d1a2556 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 000000000000..bd278633f67e --- /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 3abdef62eefc..1dd9baa628ab 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 6a4e46e74bde..cf542faa8a1e 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 be1389c2121f..000000000000 --- 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 8d6c99d2468c..fa1fa76340c3 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 da6a7bc47155..985497a095cb 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 000000000000..22792b6c0790 --- /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 b9b183a03ff3..cfccacf1ae08 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 d5a1063a688a..53d0ffb4c193 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 6e21456a9a92..954b45a2042b 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 cdd6415fc411..0737bac48c79 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 c9dbe6ba4b96..71940c1b33ae 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 a362045451a6..f10bd8e9f39d 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 0a819fac91bd..997d6d984050 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 c6dcd20d62f1..5dc791631d8b 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 f48cad9e67a2..000000000000 --- 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 1c3c32948944..000000000000 --- 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 de278152f978..000000000000 --- 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 105a0a18d6b9..e419137c4e9b 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 4901d694f49f..0afa8ca7b834 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 9f49925b2672..e5cd08f7df7f 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 b09be81cc418..d58fc8fd19bf 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 0605eda7fc76..bf10043e942e 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 3f4f96d33efb..8aeee45b9e54 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 1d1928d168b6..66f6384643ad 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 e8841a0ab6fb..000000000000 --- 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 585b7426eb67..6672a75d574d 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 0f7ded95f40f..3661f6edb530 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 fb36125b3a17..000000000000 --- 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 101ae99d6659..000000000000 --- 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 b7d05ddd0ef5..000000000000 --- 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 1128381238b4..000000000000 --- 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 dcac4f17928b..000000000000 --- 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 bde4ce15d7c0..000000000000 --- 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 1e2c31d9527a..000000000000 --- 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 fd956f62327e..000000000000 --- 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 a5bfda9f26c9..000000000000 --- 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 10ae0eb1da60..000000000000 --- 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 62831613a2e2..000000000000 --- 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 97c65fc12ef5..e03f918a587c 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 a71583ffbec5..8039c5492408 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 c1ede5044492..686ffee91488 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 d41f84404201..000000000000 --- 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 05262b0cf508..7c010b91a1e6 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 b616e82a2098..537bb0ebf2ec 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 56f6bcebf280..d54a37fe71fe 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 0437ab933bd7..03571469da1f 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 ff87e6b703da..97a03ccbab5b 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 7ff099853e29..000000000000 --- 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 0a72099e653c..099d81c99f80 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 643eda642c71..776ed8f4471b 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 3207409a6ba5..2643bd3e58d9 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 a21de1acad28..6e807aac5df6 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 373fa43c72c3..a15d6844f56d 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 b86ba3c39f06..7dbb6a3c5388 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 c000a37ff029..98d2f4aa81d6 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 065f264f1529..18a9bc0f4225 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 6462dd499493..c9e6b6f6de09 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 4c1f7ea77492..11eb24ff7031 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 6712dcd486bc..d441e539aaa6 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 e5ca7be00705..000000000000 --- 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 9295e90794d2..891d153a09e1 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 b275cd21cf48..000000000000 --- 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 000000000000..7f9ebda93c0a --- /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 000000000000..ac597f4187e9 --- /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 67e91870f1a1..cb846060a3de 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 78be19cd81e5..e2452b2b4411 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 f4d6fce3545e..2c0e73fb30db 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 88dbd177da04..8e74f834eaf4 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 d0186fb9b4c0..8988c7efc33f 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 115dc3835fc5..321084260320 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 000000000000..ba3b1e4d889b --- /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 de122dd2a5a2..9352ba69da88 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 eb2946cec771..6659b18b1bd2 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 99cb7b98f5cc..000000000000 --- 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 1c2caff50d53..8c63a70b6d6e 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 f8c73c65991c..3d418f9a47fb 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 904eabfcda82..10991d47cca9 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 9bf801ee93d7..f2f3925fbe4d 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 45b6e9dcf334..aee162ba6f22 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 6decad2f9fbe..1318ff003de3 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 b9413577b104..21f4011f0706 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 4de0c3fbd7b6..1d9940c8f318 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 88aa8777ee5e..e2c0b663befa 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 000000000000..b18e1f08dd43 --- /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 000000000000..afe2c356aa4d --- /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 6fbad55f8070..1cf76e1cff30 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 52abc3189903..ebf98840ee2b 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 1a14e1ed273e..09a69f4b80e2 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 359b289dbbcd..87ae71f6a48d 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 267f25f8bb58..a5f1806e5779 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 7058c009f2dd..2eea6adb28d1 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 69d013e3f034..bf4ec9492157 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 aaf183ad6667..48540bffb536 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 c2751ac270a7..3a91efd064cc 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 3a2463447a2c..ef87b67a3600 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 779edad8de34..114c5f5af152 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 84e9b8899431..569baf6000ad 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 000000000000..370fe9a1cd82 --- /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 8c0265d14914..3d66a7c62f20 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 aad752643645..010d8cf4d215 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 72bd82be6c16..df571f4cf869 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 1ad30335b94d..ac1feee5d72b 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 cf7318ecb273..1e2840017b34 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 5637e486ef11..d48a28f46a89 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 43e960d9403e..3dcfbf6fd7e3 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 000000000000..a7a98de6d39b --- /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 6afbbf215a3f..829ea1000f06 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 3b96ef4ea45e..a9b0ed3fcb59 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 de0bb015852c..65a4a1938430 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 26c39f8cbe21..afcd736e629c 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 ae407727b9d4..000000000000 --- 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 1c802802c096..0b2f798d35b4 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 9e578b9b333a..53b421ec5521 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 000000000000..2180d8d30489 --- /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 000000000000..293a72a16237 --- /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 66560873b4c5..47cdb6942cec 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 000000000000..ece04f6621bb --- /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 000000000000..7d419edb74a2 --- /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 b8d4b947e324..162585851d0c 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 3423163f5902..a5a2ace2399b 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 606cd0370aa2..a5b6e7d2f5e7 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 1bb8df88d010..38fbd1b42865 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 b801fad546df..7307d8a33f3c 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 32f6680b2f8b..903aa9abb6e2 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 cd37083d9359..d07b6321cb2c 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 6298c25ba254..c3c44160c1b7 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 06d7b8a9f073..bd667dbc15f6 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 23c4f4bfa8b3..daffb5930903 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 000000000000..fd2a6c36d65c --- /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 bdde66006787..000000000000 --- 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 893a6b1c7d7d..89ed5a94f2ab 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 <