diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index d1086658a077a65278bfb54758efb0a250f826f2..c9abac5851b553dc3a8185aab34d05ea42d10111 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 706952b208db1080bd5734cebf28f292d17b8d3e..a50a8a507de346115e886cae859ee95e7f0932dc 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 d7463385ae587553d7ef6c708368e7d458e3f418..1913e321a8c8a49b99b226985639db31bac558f8 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 8cc9a80758d331f13d77c107e1d29a41b5f8dfb5..4d3c8888f3a2c7543da988c6653e022aa6b966a9 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 89c751f4db7660b49c2b9ca7eded84c1c2f566c7..8b12c5f1aacf7a358348c59b64e7a228c1216489 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 b3ae9e6ea863d213c35110b264068cf9dc8eadb0..05ada15f43a03067be51c8c43cdb1b7a89479c9a 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 88b8320330daf8986231569f186c981de4f98464..3eea3c4c0e9371bcaa58036b19802a01e019710f 100644 --- a/.version +++ b/.version @@ -1 +1 @@ -20.03 \ No newline at end of file +20.09 diff --git a/COPYING b/COPYING index 9a73903d6df1c13050792807b6976a79d18488f5..a422167e1174aa5a4dd59ee02c0bf8f9a842a989 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 15ef4048d900736741a01ac1a8a5839348bcd520..edcd8dc0a00c1b8433dba29c1a189b0313099f16 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 e7ca31b20d71b0c58f9c9b4e40e47122ca4224d1..cdef493502bf5368c0ef5872c32dd92a7024ed58 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 f61075b242f8ad6054099dcd3c75da76607f7fc5..e8cd3472f54de0d36603c25bfc61e9e009ecd08c 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 9f3f58a8d90319e8020497e2830432599f1803b7..4e109bd1c5994737e945a69169b0a9bdf3814f15 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 0000000000000000000000000000000000000000..f85680cecc40279914148d3945e374951616c742 --- /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 80514cba49043c7271e02ae6816d1b8a1bb44e12..8e4e914d4511365d2690c0215616286510cd786f 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 ed8f379c460e576d1c5de7d225cebec33a1136cb..fe79d8d992b14689bf133ad747809ea9f69110e4 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 950e1ea974a073c9261fcb8f4813405009e79511..73222c1a49acc43c83bc5f2d57ffa07006dcf698 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 f9234069392ea89f030aac86701e9d32bad2dda7..3c5823c25891c55d6154b17645a582b854ee7fdc 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 9a5df2523a25a7dac730a06e5b32a92fc47b2b2a..6ee450eeb59fb71dbc3b8ed19338196fd35cf3a4 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 07bfc65a553f00076c457a9cfa20378aa9a50f9a..af0853dbf75bb2b4c66bf4cd6a26a238f3fa2545 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 0000000000000000000000000000000000000000..c56f4728bed8cfb641efd53686ac24b777fd66f6 --- /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 bb68d026ae23f6db62972bfe691fbe453e60ebf1..7671714d8a9b4aea6d2cfcf07b2635ffb43e1aed 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 bd1ee8eba2758c7df9b8cc4a3a74ed413884aa71..84b146532b14fa5ae7371ddb691b4006c9738394 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 be5c7b7c8d162dc0450a6e2eaa506987f46f449c..733e75c16a7966f5c500cea60e920bb13dc56a0d 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 8d7962d7fb9b2224e5302fd7835b2da4957e1c15..f071b9ce1785b30e623b3be891f046c6e29c6d09 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 a0ea209b493c0facb30fbf7a25e1d7fb9e3f2a2e..3f72092ec150b8719ed0d25813725b1b415a2ce5 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 0000000000000000000000000000000000000000..a302a9a7f87d78920c494aaa1a4eb52eb6a9dc3e --- /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 9cb0e1eecc1683862bce36852f1f8a3d0c536370..f8884785e90ddc95b6d8e2142f8d9392f96c8693 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: - -* `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. +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. ##### 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 b28745fd6e2754ce91dae7068b8a1ba5db8495e7..9b36801fb96677c43db2e154e4054209af6bb345 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 709a0d504cf73b6ea07d372882ba8db24c30b429..cec3373cbee69018a1f08ee4795906aeceef3ec5 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 7876cc213b667d4f7e6f7978753e9d99df5cc725..8fa8f963b2f6b2f2cd218f02c8bd5d6608d9eb76 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 05a23d26cf2f77b78aacdbe53c7070c1a1429bd4..4911509212e6386084fe2af5035a88add0acae37 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 ff9fefb04a86020ae8367e9f368577aa7d0333dc..9dd5b4c9993b9b71c464d04b04b8a0ba7c0446d9 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 4c7d4a31be2d09210f8dfeb67eb3ba85b98a42d3..73901a3f543bf9269eaf2654997ff5856cce65f8 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 88ca5e2e3cec591c744ed1c5218ef66787abc64b..7fa65ab11021a3a06341ca575f45f3d958ef6e6e 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 b85f61da079c0444e1cb0a2205db087686f803a4..7575289e7559b20eba47a8386a0708afbb575388 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 9371196818ad9272a557400d26c0ea687e4cd632..45f7834eb2cc9ddb1d3b48f3bc5988a59246f990 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 83275bb2fbd1acd133ef3024b682052c51abaa58..51e1cc2e024a2b7da915c096677aa03773cc4bc7 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 1e97bf6157bb33291d327602273d500d2d595cc7..e4cbdd4abb57ba92a46c1faeb89686a3d00def85 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 0000000000000000000000000000000000000000..52fd2f82a37e7c5aeb11cdb3c243919e29994da9 --- /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 086c3d746fc187873ecede9c7e433526936d849a..7d84c25de77a197ce0a22aefca46ddefa10ac3fc 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 0000000000000000000000000000000000000000..c96d4dbb0432dd3cab8ac388b9de1c955d46d42a --- /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 ac234e3b8c6fb2f3916e4e99984b12b41fef2f1e..dc5dd769197652832585170e2fb37045d472269d 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 8af5315258606b4c59ddb84a71302372ed0c98c3..d00c4abec0a9662d4b45b4a7a861c21b24bc104c 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 155d6f0c3611ef1e128165423a6c5c636de8aafd..8c4fe9c390c6f4ffdf95704a00cf757fe0443d4b 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 a71654bec6c3673bd9f64202b4918818ec518833..efe6ea6031d338efb7e869ae7a5963af6bff96a2 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 36ea3083828939bdc237c33cc60560207c9d4bcb..2ce19f8cb68c051e834b50acc5f3ec8c0b74d23b 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 986b7fa1fdd9df83e37dab9a2999469f64b2a56d..94bcd777f0d155646270dec7149a83862b8f10a2 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 44db77b5d1c6a4a2b1fd62d58ea1042ea11cc970..c18fec66c7056598eb4301dc4f34f362e86a0bce 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 e5c0631a5437330bd4b4184d5809cbab763f086e..38f4f1329f2127f6362ec870e254e13e626903a6 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 51bcf5559e3216ab97aa88eb261eebbed4c54b04..ed9bce485300ab7b6928ac9879ea0951ca9ff3c2 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 6dbb3d3a3e8b69c40fb5c65cfab5a654e125ee38..74e3eaa0722de16e7d7111b48636d6784b946a9b 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 026117cc34fd2317fcfabc04af57d805f569f531..210674cc6399bed8d1d7e600f947fc1c1c6404cb 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 700c895b3aba6de9c1e58fe8f6bc080b10f2275c..a839b3d3d573579ca466492aa0f5d8426cb3ad11 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 cb8bc3de6c4894aa8a531ac5a280857ca8053159..19b3790ecbe0e599fa14b962d1c6adc990b817c6 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 d1980c6dff817fd3f0fdc7062900ba216908c1e4..90a1fb6d80c24c03d87365e193ed8e71928bd2f9 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 6a02dbb51528cb5366c5d4cfc6f3ff5c9d995151..648e7c270240504a8b85f8ba41ffd237b7aa12d9 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 0000000000000000000000000000000000000000..60d296eecae6af153a23b947ef1a68f288ff47f3 --- /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 b064faa1e1ba637645593bbef548590d38249d66..36ddd186d7b793f4e8a9edce5fa9bda128c1403a 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 cf344122cf4e427a27e3cc29737de587dec35048..6258244457aa34b674aa4d604f0eeba1a455274f 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 ed8c612ff960c032d69cd304ab975e947b5a8b7f..dcf96307c3b7eb5aad624b26cbfdce1d178e852f 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 a267a5fa8715dfdbd3f7768304b766b1b8e1260a..c6c980dd0cb67a0101ff362d24e7ba20e3196e56 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 1a31d71086fa973ccc4902012c80cfb192fe78cb..5c42080745ebc041474791327296d4270b4b756a 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 60c6113bf70f25e0e15e36efdcc216e27703c0a0..7c45e148e8225f4932058a39afa350893dad321c 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 0000000000000000000000000000000000000000..7efff7f45ecaeddd8431aae49bd6cd81ee33568f --- /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 5bf0635cc1aa614f3fac70592e5be260d7429cd4..df9ff2615e1ae36f5b4437deecbd80f5b6de7a67 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 eadafb94b8f6d1b3aabdbbe6c50ffbec236184c4..7ccb5b3664ea340e6734af819df7f3a3a0bcc79e 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 5961209bc13ace2d262906147b5422e1d3760fb0..507d28814ead3b7e29f2998e5367263fb7313122 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 5fb3bcb9f8f568528f60ce620f82b1bbb05aff2f..cd84d1951d247629fe0a46b95900847ff2289359 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 8a2b107e0ee8aa5c61d6624e53152f07731ca1a5..d3007843d68bd19042bdd5f510aba32749837034 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 7ad0ae80a48af09f8626fff30283511b3d36e6db..532a2c615e4df8bfd4480c4f743cfdba9c845de8 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 d103ee24978390131729ad7270c2f1c879aa72cd..3953e0ffe851a0b8f310e61256ac28a8fbb3edea 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 55ad9fe6e6530b76cb847834edf83154a45c60e8..06dd7c8bfb949b3e08999aea05f4c2d7360c2a90 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 027828bb936d663d59d854279a5b26823440391e..ebf1f493c5ce5b6f16aeb25bb7641e425280f584 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 - - To enable Thunar volume support, put - - = true; - - into your configuration.nix. - - - - Polkit Authentication Agent + + Thunar Plugins - 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 8fcbb627342b2af55682deae862bd478f7fdbebe..957349ad1811a066721fe296f103366a0aa44c3e 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 9371af9984d1d3948e831a5f6f70b175a1536d02..cc0ec78cc74e29307c204935ce6685f5fc754039 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 7b103c36d907d4f6344493fb11dc8937e04e6eab..b4a466e2294220ad80102b4e4e8d0b5b4d252715 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 24efd2e3273ab810ca88a35744896ca98d41f8d3..e5a887c18c7709e7accc26508f519a719dc58ebe 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 8f9baff44b51e3d85fe0d5fcae1b75b14114f709..c1ef638e876ea66e9becd4be7657d338db46d9f7 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 4041b4ad163a96ab9ac5485eb2374d9e42644526..0dbfb39c32b22e7b0896f590db5e4dd8b7195595 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 8d3f35b7c26f4e34cd75abb769e2c51d8f1ef0dd..92864cf2557a3f617d394c52f11ff9f546705859 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 45bbd5d81ff0294feee88236459dbe84322bd264..9255ce763efee152f24a093a27f2a2b98047fe0e 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 b82f31256099ca809bb90f315a7772e0449b071f..b921386d0df01515a5da27385608bc072940901b 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 @@ -46,23 +50,22 @@ - - path - + + - This option is passed to the underlying - nix-instantiate invocation. + Print all the values at or below the specified path recursively. - + path - Print the values of all options. + This option is passed to the underlying + nix-instantiate invocation. diff --git a/nixos/doc/manual/man-nixos-rebuild.xml b/nixos/doc/manual/man-nixos-rebuild.xml index 495dbc8859b1db4ba438e6873b7bc7c1435d5845..f4f663b84f0569c361c38408231078f93040b9a0 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 e9ad8bddcace63391333f7c3bd7bfdd6d2b45428..aada08c5b4a97526f045e438bf65d80439a8213c 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 f5a1dd2d69f49b1aae4b03ef531f849e86d4d221..49acfe7330b6da6aabbd2d1974c8f8b434883947 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 444862c5739bbd1b0d91c55661963923b3de82f6..e2913b8a5353d90145f65b9526a272417f512b42 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 5744de96b74b3e2b58ef8fea2c8e615c6219cb53..8f97de24ab12539b3b5e13b0d9b0f861d4c3eb07 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 0000000000000000000000000000000000000000..0f22f4331f4d42508511557331ba8c63bc73f883 --- /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 77490ca3762a53688b0ebd3b8a63dc6e38f8b69f..c8824c2690d335e56619552ecbb9895f4745e824 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 f46d3990c06baca0168aa543aeb756e04c4df970..627ac324cf57e8b2ab9a8bcd52b0929dee977164 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 b7b1ab52a637365f03424b80d88d6725da9abc51..d4633d2c8d16949e1285835a7641a52909ca1cc8 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 eee8f612410de6a35a36cbe0dda6279f78156972..772b7d3add9518b201b59ba481d0f184028f9319 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 774f66b4804e0de6fe58c7f88a407744905b2137..859d9e975fec7a2418d57403efe669fcfe59eca0 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 7e575189209ae944717651c1d77a863c1443f742..07f27515990bdaad12a1d6b4e9d15948aa5b2f71 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 c4eb9328b1db190d24cdc0a75e8a26563be4e4af..3891adc10435b06a437f7c8dc06249b2cb2a0116 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 ae8ecd6270ce316b9453a01a2b7ac65994922ef8..7d6a5c0a29009d15a0c6475ea3e20bf7caa2903d 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 e65107a3c2fbc643de3400fb9c8059e2f1c51ffd..05bd8dc2f946989186e8bbbf13aa499e97f34d32 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 e272f66a5765e0f0534a11923d5083aa0669eda4..732fdb3ba879e1d609f1f3084d0c4e3aeb4d3962 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 a522834e42942deb87b780bf6fb5989ab66ccb8e..21f4c7c6988fff11a424246ea579f509c909bbf3 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 0000000000000000000000000000000000000000..26905a862347354c9668b4b00d9cee976b30ff94 --- /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 0000000000000000000000000000000000000000..20e81c44ce5db5697edeecf569b46131335be639 --- /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 0000000000000000000000000000000000000000..1ce3a5f9db1e77c089972246b9298180a7a1b1dd --- /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 0000000000000000000000000000000000000000..eb87c3e065019d0ff58324e5329d063d2da6081f --- /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 0000000000000000000000000000000000000000..74b1281515879f99f252a46d2ff6b3bbc5366108 --- /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 0000000000000000000000000000000000000000..855bd3bab7193108ab2c2743b40bdc20aa2b9c3f --- /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 0000000000000000000000000000000000000000..592f1bf9056e5d3b0052e4bff22fc7d859bc8f71 --- /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 0000000000000000000000000000000000000000..1466dcd1f0a2e904e2553a488ccd0825fd392dfb --- /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 2b22cb53661905309bfe4b5c56d28080b780afd7..0558f8dfffcb80ac0ea93f6184171407d05f5243 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 31e15537179a91fa53290f165697c23491f98ad0..36f3e7af873d29d020f3e96c0696d0e1a6c60427 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 5dc1c5aaed57d503e3afc97e77163989950116f5..145eb49ced7a31aa99fbe09ae9c513287da7980f 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 86a6bfb5af41a99c72e67ef6851afe43b6233d31..7441f4de40eb85fe1f2bd527b82cfd4e8be4d9fb 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 45691f4839c8d34f21644bd42459aba2eca98a17..cc2ddda9d32fcbdc934f19e44216a161cfcefca3 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 e008497a2a6e04c6eb7bcceaba0b7dfd231fad5d..b554f197dc4ba8f8e41dc80c871a6be0eb6450e7 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 81427bb8ee64cea50d064df79ca7c230dd299ec5..dd36696b94d2385c702cf3f41ab323a7908a1ca3 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 9baad9b585455a6099110ba40a2881de3f310d32..408d0a9c33f27732b5d653ca236cc242f61fd492 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 7d2f252a88863fed6f84514b3cbb3906e9d90135..cc202bca6c4e41f4d19f0a7cd2b296fa2d61c27a 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 fed3fa3bc7c88b2853e606ef73639cbb7f9a0892..adb4e2294213d61902fc8057fcd1a4da9ffa1c33 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 aba9bc0945b19118552b39346c009422885de5f7..4100ec897016dfe9cd1e18db66f17e6e83cd126f 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 d4a8c926fef2e19a18fdb57152a18cd4443aaae0..24d32a00fd45807cab5a14a741bfec82bf9f31e1 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 0ee94fed818b16dc109c764fb7422239d0243a36..40984cb5ec53f9d0eb52c6323b3672a6061d0c44 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 4677ce090b0bda3b7cb6109786d64233c725cc25..c83fdc251ef0093080bd22504b4d0a3e61d9d5b9 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 c172692df5d7d64d5213bdb2fcaa357414053200..6735a7a5c430f96a33de0cb1fd5e020822e0d1bd 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 a5374c2b468daffdce3d6799478f0e7e91cc4da7..4cdb3f30994b3cdf3f4e15422845b6c5002631cf 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 95fa8e05fa3fff35ff08e5c31db9f8bd614611bf..3c7cd729c60a6c040a525f2515f6b32019a0e79d 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 14d6340fc33bc06363abe2c900f0c01337f396cb..0b94f550929b41c34abc33f9402a92262e029efd 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 2d54398d10df559f4cf8ecedc327a9a2702399b4..0000000000000000000000000000000000000000 --- 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 89dc5008df5838b7abddc7f8027e548026b1c78e..28cddea8b79cf4fd6e4e4d960bafcc245a410405 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 883db7f2f4f192c283239a6c365baaa1afc5148b..b5c3d67441422c01aca637077bf5690963f10b28 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 4d7af138292cc93569fa30de2fbe1d636edf9671..c4977e3fd70aab76e0b6df19f9766d70377deee3 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 a8bc1880002145f3e79f548c2faed726c4d43187..4c359c3b172559995978c4979dae47d1e0df2400 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 0000000000000000000000000000000000000000..898eed2449355cb94e6316f2734468af8af2d39b --- /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 0000000000000000000000000000000000000000..55e86bfa6bdbfe23a306e5a657b729476358acae --- /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 2d20421586a7929238064d43f8887aad1ef3913f..679a6c6497cb63dc93e35145d2f95742406ad3bb 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 8e91e9d2baa9397798cb3c1a6a737e1071fe2848..ec1c8c2d57a1aaa7a1f62387ab60eaad6a7792db 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 0aab7bd6b92c9c2780e2af9ecec8afc0321abcec..06d3ea324d8d5c2f407f3bed0910bc8d6e15dd6b 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 fcb30187fa2fbba0d7e35d71ef047f40136c3728..7461e231402a548d5eda1cb3c87d521b13c698cb 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 0000000000000000000000000000000000000000..ee550cbbf6b83a5106ef3c6d36d54e2cc945132c --- /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 810e1643d3167e85341ca783a7b30c2da03867c3..b4746b21b653f9b30d6f734693dc326e8565ffee 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 ab5e7c0645f3bbb4ed3c782f501d79afa74e7c31..92164d65e533511b29aa2e710da3476dfcde8a8c 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 24070a786945a6bc6d52f47dbca3678a08a6234d..9303e8fde13a8b2a5cea21f1befb67d022603063 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 e0b558dcb0d85b9a6c8d1e99fd4b088809c61fe0..fa19daf132800a2b7780ddc7bf6b3b119560afe2 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 23c3426bff08899ff2aaf5c99811ea737ae21926..84394a1ecae5b9be7f382e912d3293e47eae9243 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 3336d512cfd86e58c2be5685af09f551cff1bd8a..d98325a99ac2a30714eae1ac3df38238590cb505 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 e00d3f7535b2f68c67727912f9c4ceec91a65f04..e76e06654aca0f92821b3f89a601fb0ad4c1f240 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 bcdbffdc20b7d8c11a07583109f27a1f19882d1b..97506045e0e153cc5af58ba7b8aff9f85dc2a607 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 11319e5f4f823e0438689fb560fa40fd5c531219..cce7cc235ec8175ab68ff1022572c1ba0cb9c4d3 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 bf8b7deb59eb8d9f545ab37304090fe224d52e61..f2af7dcde3d548e4e3cdc0569f41696b0e1d5716 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 90a5128c02a5880ebab06d9e1fff455ef77bbdb8..8408f56f94f91f030a9d2e47d64a6bef79230163 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 b84096861f56e4264a594afcf2fc3623a1e7f70c..58098c45535db45f4275fada677ebec7efd5343b 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 5146858cccf5a399cc422da0a1f41a2f6c930d42..95eba86bcb6544a10fe72fc744134994f700208f 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 d7149b35d4c0cde9c7ad5279a5b1286029c1ef63..842976c3574f08af78d75586abaed0c16475c08d 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 c1028a0ad7e93d830fd69b0733954fb5f1e2689b..0c9f8522cc12b0f5bb83db36a1d4bf82fe756827 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 4680cd8ae95a4a1076247880af01d1c46b52c44b..1fdd4627a902cb19c2b7d6292006e62f50cf16e3 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 7f98756a7d9ff22eaa425b122e3166231e502d81..a32c19a4eba94ba31f6ad1255cfea1c9867a293e 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 9b92dc829cd16a5be4ffa5c30e670b4c2cc100ba..1a7b07a74f8ac2bea57925ec0b453d107616b901 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 c53dc1000c4ac00ce328505e23352414bcc1bbe0..354274478a384a0983482218b24526b6adff283c 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 190c49a33ec611e91000264899643ad9630324d3..fb0fe26116a6e47f4b6aea06f293e1f5100dbf98 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 bedd87a368eb10ab944cef5aa30025c14a6d77f6..85e5534e906fdfa52e8fa81277a1d1b7f3c0bf5c 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 552535c253e615111ac87d2b1e5a9e69a77aa4e0..dc668796c78869e02450c466b060369f3427ed78 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 afb74581e239885b0a151ada55ff1299851f44d8..4f5a9250eaaee83887b27e23a05002a7d878774e 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 0540b493003fe360a102b1e88feb75262d8caa2f..ae98fba15805f0044514a34f46e2437d558625f9 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 7650da89cbddd71cda5736096300fd2d24e4669c..df08ac2959ed41816e7de2437b86fca6a8ff4b01 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 f7b2f5c7fc1e8a34316bf7b09e5fc406a7c5c1de..ef8c0d74f0628e84a9063c8ce339be11fe0d652c 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 4596e163404ca5c3e206e6e6533f647c8051545b..d05c0c50e82c150f089b6bfe5e7c3f5c5b1b1660 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 0000000000000000000000000000000000000000..5413044f46141b10d5a1be4a08a304f18b1b01bf --- /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 0000000000000000000000000000000000000000..15e429a7549763edcb11b32697ab9ab0e9f0ff77 --- /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 366c07c0a3528e113d0b5f7d5ca7d2132a37e366..be964ce7f3f9a787e0c0c252d2c62ae543fa5b6d 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 55d474e5c9db07297c3f775bc79d07acc0b1df1c..26db167507271caeea41f2ef192883d89b815d34 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 e0e2ffd80cffb5dfde712fa6a9a3c6ef88070861..6702e8efd1cb48d638dc1bd2a76560c0ec4b9755 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 74c3e4425a7c53289ea28b0d5801f69a9e344d97..484f9eb444060ce4d772d945a49f2c4c4f261055 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 a8c797d185a6852b390c2b51d517a42299b35d3d..997f38c5066dc857106ff9fc3c668759483708fe 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 0000000000000000000000000000000000000000..5e441a75cb60270fb59e4a6395f7d196f934439c --- /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 1cf839a6ddb0df357d79151db680846bbc85d125..80dc2983ea504e1dedced7844025db503de54cb5 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 bfa3d409ee301f0f9d6b2633890f98fd2be8ffa2..9dd53483055cd486a62bcc675116b17be2e8346d 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 0036677a1576527c80c30ea25f305f751c859f64..f2617e5bc0385cf4b69e3b829028468b3c5db113 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 2d262d9065796c374d57c7beb5ea799c4f9bb27b..7a3cb588ee719dba8f3bef32f230df17965a772d 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 0000000000000000000000000000000000000000..4e4c235ccde4a99720773641a8764f3d5665df86 --- /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 e42219e9638c931b179b52ca72697d74eb4f5367..273a6dec59a58aebd9bc42e15f5cc1b83b8783ff 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 b351d80c7acfc80481cd0ec30c4dcac8c17cfb0e..f101a44587a16f93f740e9a930dabd0f18c4ff01 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 4fd800dbae79ac27dd146a55f5ce2471cc793b0e..728a0eb8cea5b2e2bebbcf05e7ef4d79817cf033 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 7eaf79d864e79251e048c716e8a572a73dd32dde..fc352795c017c4830e2ceaba25b24ad140d9da62 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/default/useradd: configuration for useradd. - source = pkgs.writeText "useradd" - '' - GROUP=100 - HOME=/home - SHELL=${utils.toShellPath config.users.defaultUserShell} - ''; - target = "default/useradd"; - } - ]; + { # /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. + "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 80198990ed110c687455293a0df475f7b1d2f4e3..44e65ee8a9a05136d7dc7498c739a2a21838e649 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 f794eac8af00cc2373c8ec7735f101d05cbac507..c7a947393496d8be8e5346a1a62795635acbe53a 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 d685a525932409193da280a6db8e7c8d1b6f956b..364debddb0f1f32659db126a915ef4c9dde2f362 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 - - if [ ! "$_SWAY_WRAPPER_ALREADY_EXECUTED" ]; then - export _SWAY_WRAPPER_ALREADY_EXECUTED=1 - ${cfg.extraSessionCommands} - fi + 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 [ "$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 ed077e3daa76209031a441b76ef8bb587dd35b10..c39908751d29f62e808b08a34de895bdb2b6a470 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 0000000000000000000000000000000000000000..4eb0be3f0e0beccb1de4da16f2c07f8477f3ee75 --- /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 f27bd42bd764c89496de010bd025aeb397b77df8..0000000000000000000000000000000000000000 --- 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 c66c29ed45fb926716f56f8bb66184d2372bda40..930cc1987a33f3a4f767c83861932fce6ecf763b 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" - - # 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 + # Configure sane keyboard defaults. + . /etc/zinputrc - ${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 daa6ff7cb15d19ae88c93d216ab93314674455d1..410db8fd84e76da877cbd8e6f0c4cfad7b0549f4 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 890c421b0ea9d5fb76b936f5ae93d35a10351400..39976380e3b455401c463d20fffe0f60ebce193f 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}"); - - systemd.timers = flip mapAttrs' cfg.certs (cert: data: nameValuePair + map (data: "d ${data.webroot}/.well-known/acme-challenge - ${data.user} ${data.group}") (filter (data: data.webroot != null) (attrValues cfg.certs)); + + 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 9d0a1995e0ff08fca1857b239bed8956f8a6c3a0..2b29c11748455a31e605396ad5335a36c5d4271c 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 997328ad9e6ab0a4d4978343b5f50f04b2621e59..71428b82f5dac6643a34b0a68bb8910868d5b6a8 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 ]; - - security.wrappers.login_duo.source = "${pkgs.duo-unix.out}/bin/login_duo"; - environment.etc = loginCfgFile ++ pamCfgFile; - - /* 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 - ''} - ''); + environment.systemPackages = [ pkgs.duo-unix ]; + + security.wrappers.login_duo.source = "${pkgs.duo-unix.out}/bin/login_duo"; + + 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 246419b681af0cadcc00246353edeb4a53fb2005..6f9962e1d6266e0fc4c931623c669d13521094e4 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 0adc27c47f021922242d8b3fd2c171fc76d04cfe..bfc2a881387f6838dd302e7ded3829fcb34ee3d1 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 75f58462d13d32fba2762afe9bd2e312dd202673..77e22a96b553c73f12e99d4016c05d4671d08414 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 d9d6d9c9f2536d12597ecba48e698b2ea23907f1..cffa1a5849f9d8d6e8016da8b80a008305d420af 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 f6dda21c600643c3365bcca7b182fad6f668b5f1..a7b27cbcf215db8e68c97ba6058a39493033a312 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 10ee036be84ebc6653b79a6690d0b5fbf3f737fd..e3e43177def32d85a779d781f08819e5b2655851 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" ]; } - - # 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" ]; } ]; } - ]; + 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 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 0000000000000000000000000000000000000000..13804fb82cbaafcfcf1f495fa1aae331052002fb --- /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 885eaed1de6f372882b0f05f8269b6d164c9f676..94b44630ba6c4f5aa0ed75463eca5da1a65026a3 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 7729da27304bb6438100a923f463e0c231d46b92..160dbddcd487db31809db37c8c97b66ffcd0a512 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 697732426ccfbefc2a02198fff8d6be96de843df..f80d6b3f1ba56003d5b7166c0c4b259a56fab120 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 990398e65463c8517197791619587852ab25a028..3fe76a165401044dd583bcd4bcdea361ee20aa2c 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 a534b692f1771c29820c945d140ad731f8e2fba4..6fd7eae5b892d1756516847a2fd4630d7ca9e8f8 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 7932d094197b7672b048786b08342fa1dcfb7496..e20591b5beb4f81c9fdecfe6c8b2746eeac51c94 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.groups = optionalAttrs (cfg.group == name) (singleton { - inherit name; - gid = gid; - }); + 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) { + ${name}.gid = gid; + }; }; } diff --git a/nixos/modules/services/backup/borgbackup.nix b/nixos/modules/services/backup/borgbackup.nix index 10d42325a6b16160852d40e7c45944cc98b92dbf..be661b201f0df9e229898c973c059f5fbb4eba48 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 0000000000000000000000000000000000000000..bef7db608f8232b67fa0b1d8ecfff2926f6dc596 --- /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 dbd5605143f609343469be80399fec3691b86be9..f58af82773f36c16e2e9b6e2c812ca2ac0496f28 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 7e8e91e4b9c386def17bab01e36c89399311f25d..2388f1d6ca1378061b748355789300b4fdd96bfd 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 0000000000000000000000000000000000000000..0472fb4ba1e752ae5da60c524aeb690b6505348d --- /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 0000000000000000000000000000000000000000..fff119c2cf009bea20fee2e144e32f59ef9d8025 --- /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 f0f5a6ecbfc54cb2c0ce7a639938a0cb6d26f6c0..bfb73f683715975728a7a5b21e0a25be9a4e5fb3 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 0000000000000000000000000000000000000000..ccdf54d128e2948e85db3331b921fac3ab284835 --- /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 17f2dde31a71eb325104ae97c3003f6446c9b34a..f55079300b15e6854c451d9ca6fb76206988286b 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 3605d0365094c0d5251a87aa83221e01eabeb12b..3a11a6513a4912fd783213ab0a48308f2efa4d67 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 733479e24c97717df05ae799f7734093f8f7401a..4275563f1a36b3d7eaff41d153f0892d9773a465 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 a7edac0253841e98c1f6f1bc2c1773b96fc257ef..7becf6240710edec5d812be6a2981fdc0795db8d 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 0000000000000000000000000000000000000000..9f99af48c48a61c30e12eeb69b7dce09f1814bb9 --- /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 c70d999ca96d9cb152ec014be190c113aec5227e..050872e933fb1d64ecfa1b1ae1fce8470e33d696 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 9c615fbe885f623f6bf35abe2096308b27f25a9f..e3da3092d4593df9065813f88f6a268d5f8b3d63 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 49e04ca36228c0bfa20c484bae8957057e32c1fe..52f24b8cee3c36923da0b2afc84bb120533321dd 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 32f361454bc18434845a5c70398cc7a5402b6bf9..b0045409ae609d13e24b60af36f3851ca1fc11f5 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. - - A run-time path to the key file, which is supposed to be provisioned - outside of Nix store. - ''; - }; - }; + description = '' + OpenSSH private key + + 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. ''; }; - }; - }; - 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; + 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. + ''; + }; - environment.systemPackages = [ cfg.package ]; + 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}" = {}; + }); - 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 3d307b1abcf83dd95c1fd503a79d82a060cc8f25..bd4cf6a37bad8e853e55f123ae047b6b2ada8244 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 8126f27c2b0c5de0fd01675facd9ab7dc8248f87..2e9e1c94857a0e6f5174cc0a0d4cdaa9289222d6 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 8f177da129e50364379c694640124770e05ffec3..4fa41ac49edfc6ea9e24d02f4d0c39b1b72894f9 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 30c5550f71c5a99ee8195b2cc93f69653696258e..502a5898a5de5bc800edd9c634b02a60193315f6 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 0ec906713885d12d1496506135fb85ec757f4761..1477c471f8ab1b4d0d5176c58acd738e4221463a 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 92deabc3dd3b022724ba90a7d5e0bcfecb8125d6..3c0e6f78e74ca4489de0c115ba63dfbdc47a7a80 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 268fdcc819fd0150067c7041daf79d008fc87624..35fb46d69d8e56ac88967bd0a476ee70ff8a0327 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 8f8d0da7c8d3d4e9c960f989dbe40509a2060986..18727acc7c75628088468131f7af93e813666741 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 2f176a0387299e98eaefb80642a668ce4ec81f80..dd5d69b1147a064ed1b73dbe8b7c50c10a5e1dee 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 d1dfdb41bf402fdcf5b33f51723ca3a62b40791a..89ff957babf5af4994b99614eb9aac4c45514732 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 6af32700fc77bfeb97effdb7ea422a2701b3d8b6..f9e657f5774254d7ec914e152e51ba611031ffd7 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 ${mysqldOptions} + touch /tmp/mysql_init + fi + '' else '' if ! test -e ${cfg.dataDir}/mysql; then - ${mysql}/bin/mysql_install_db --defaults-file=/etc/my.cnf ${installOptions} + ${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 29a83300ec10aed439c8fecf77a97553488f2195..09b453e75845178b43784224c906ad8b7cfcb8a9 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 5bf57a1bf9cbadb989e107f3836180be761fec20..809f61cfa8186c177b536a515717e19b0d30ecda 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 c8fdd89d0d8fb4852180d2f92e4ece21849a2673..0b79a996dc788e03367d038fc147eca3c9fbef6f 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 72d4a8249a321c936ac766bc4109e4e9a3c7e095..07af4c937f0377f58388a6b693d746584bfb0e8d 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 70895fa53e455ec1073a0c4953875994171eb04a..5c817422aae5ace42004d643d826a99d5e4885ad 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 0000000000000000000000000000000000000000..cb6bf8508fb6581f2cdfec3b3d8ae1acbc5ce11f --- /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 6ffc44a5274e64da8cde7d5ee3747f85b0eceb87..0cc027cb1d7412d30e8e6344fe1205755ddd08ec 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 c48036a99e8fb5a15358845811eea68cc873e955..ae2ecb5ffeb71e2a6ce45181fa60f19e132381a1 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 0928ee81a64874a19b9ee717460239dd99797ab0..4b35146d084497a08607dc17c4e86865fedc28ca 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 cca98c43dc7a2da31f6e157362a054603d9c77cb..492242e3296da1e3a3d2ac282c79094e7628f998 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 3d2b3ed85e3a3f94594cc73e15be4d37d4bab18e..3c7f217b18df037b831d57e77a5c207f723a14ee 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 7e312a1b81eb3ee39fde9608e69e419b5c2089a2..bd62d16f61cebc030276ae4330751baf37d0bc93 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 fcd58509d6fce469d3188e460e73e2661583b8b3..7e667b6b1f04742362df7eb8657f082205022294 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 d715d52c2d067807dafc2537b395f6b88300f380..c391ad9694c9c55b108bf835d0a171134318d707 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 db60445ef7731dfba3f25037954386da2f68148d..2916a3c82b343c03ab16b912525dccd3b9cdbe1f 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 748a025414a789f2062c22a4ad900ac7fe26a47e..3f9ced5e86b18ee5f13ef08724b073820b32eecb 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 d406bf6f5e391e79920b3c7c17d89c7fafe05c66..39d669e8b30f6d0936db282b7643e29805fc0410 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 021f4f9534b42439b99ca492de9114fc7b3da489..164a0a44f8c819cfd219c08ae7cded01fc685767 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 2f83fd653bdee97cd329af445df6308d8f7b22fc..1c33ed064a19a3490a5140efa4872d8677e16ab1 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 f839628777008cd7eb506ad0b64ff43d988859bd..f2fe8b41a9e2d5fbbaf4cff09f5567d73466d3da 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 55d5e703aa19d9b1ec362d99158b9ee9c323c032..917a1d6541e06940071689516a1f915ead48bd5d 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 7a4389038b220870e5abffd41b4b30800ed8f980..83b17365d5dd79bb278a4cf857a25558794e6b4f 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 b390d8368c6522d562075118db6df511c1f3fb47..f2af4024927190e9a7f2d2f5b6416cd99dd72dc1 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 2e82927422644e2ff73e6dde9de75caf2f89dafb..cd196e385539b189be32586fefc705cabb109015 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 1d002eac41def6539a8952d502ba41b5f60008c9..250ea6d4575fca8521ffc2ba1af2a2661dd29645 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 0000000000000000000000000000000000000000..5d6912595b52dfce64ade6c659b82fdae1562ae5 --- /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 2638a21df73363e4815585584bbbe08787eaeb7a..0000000000000000000000000000000000000000 --- 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 577aad6c29872918246746b84595fad8c1a15a34..8cee9f42b62ff63cfdbfbd8b14022ab72faf37a2 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 13f3d61e84ca1ef3f0ffa6b4b72cea8464368c37..5aee59cfdcce999b68a63a3d40addc8f79968976 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 f5401c180984f376633a15033c2e0e48e21aa61e..34596bf7818490edae5c9506d719aba6fd7a0e8b 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 a833e99ff8c6837a6a0f35d4f68bbd21e47e6a71..a09079517f042a8c99b2053908e991e2485176d0 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 20c82ccdd56cc1c083e4a1bcfeccd84e3ee9cae3..cf7dd5fe3a13c54432d581bed995e9f1bd42ae7a 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 f20860af6e12874b6462bc0e2c7a5e71cbcb8e58..e598b0186450bea61247a2ffe6085a868459a726 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 be36676169427a0bf508aae32a41f52c13059466..8b997ccbf66e58b185c115063c5bdf060a0eeb88 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 f3831156f453e26f8a3ffd192a9702b616371da7..4b2e1a3c07f06dd6cd184c8df2fa0a7063c84fdd 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 4168140b287a69e8bcc855f36f7f47e9b784faa0..daa407ca1f0e5e3962ac030418554d41cc30a79a 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 11d67418a31e554cd79a0a475138b3747422ada8..dfa39e7f6024c0711affffa1dc01f05c3fc913dd 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 51877970a8bcb25eaa58aca2270d48728e39403f..e586af25c2b1d180bb098be5fc58ebf8070746d6 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 b139154432cf95f0801bf3c6d0461c075b84fb2b..c79e0eb83ecea1754bdb7be54d9fe23e18284b21 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 f6ed4e25e9cb9a9645ccc667fa9eacbdf99cda15..6f49a1ab6d4063a639055d4fa57c5c3d8ef952c9 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 6bf31982b71a91639e68cfe28bba2daf740cb7f1..ec0457bbd583051588974b61952c4cec17775b90 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 3876280ee6bcde7ef80e802bdcf4e494b2cb2e5a..68cb5d791aa3572a98b654b10470470586c503ad 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 adc1881a525d738cc19f6b02f569160570c10aba..3962d7b1598940882481c7bd2940d2c7bc0d64fb 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; + # 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; + }; - tlp = { - description = "TLP system startup/shutdown"; + services.udev.packages = [ tlp ]; - after = [ "multi-user.target" ]; + 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; + + 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" ]; - 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" ]; + 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" ]; - - unitConfig = { - StopWhenUnneeded = true; - }; - - serviceConfig = { - Type = "oneshot"; - RemainAfterExit = true; - ExecStart = "${tlp}/bin/tlp suspend"; - ExecStop = "${tlp}/bin/tlp resume"; - }; + 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"; }; }; - - 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"; - }; - - environment.systemPackages = [ tlp ]; - - boot.kernelModules = [ "msr" ]; - }; - } diff --git a/nixos/modules/services/hardware/udev.nix b/nixos/modules/services/hardware/udev.nix index 83ab93bd7cfc0c7d071860e171121ee5ec9fa90b..168056a475e5c0c16ec2fb7877fa189de55eec51 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 39bbcaf4627ca77d7750fc7ecb28e8e49d73606b..11a4b0a858f9ca980c24e43571aa92bd27620ce8 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 0000000000000000000000000000000000000000..a18d60ad83bec07971e68328f0ab44561f277ea4 --- /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 a92ff3bee490b02ee9efb9f90b5cecf0478b62b9..5939d7808f7f1b1eca1d975bdae5836484ce8576 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"; + }; + + 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."; + }; + }; + }; + }; + 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 = 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. - ''; - }; - vardir = mkOption { + 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 \ - -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 - - ''; - }; + ('' + 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; - 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; - }; + # 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") + '' + 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 6d8be5b926d5f3c64c60170a1507a159f0f9ad13..4296b2270c29f7133c304ae2e94a92f031545df7 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 2cda8c49f5e13f336540db0df9eb235642effcd6..230a2ae3f82510bc9f9d661084a3052e5c4bd170 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.enablePAM '' + userdb { + driver = passwd + } - (optionalString (cfg.sieveScripts != {}) '' - plugin { - ${concatStringsSep "\n" (mapAttrsToList (to: from: "sieve_${to} = ${stateDir}/sieve/${to}") cfg.sieveScripts)} - } - '') + passdb { + driver = pam + args = ${optionalString cfg.showPAMFailure "failure_show_msg=yes"} dovecot2 + } + '' + ) - (optionalString (cfg.mailboxes != []) '' - protocol imap { - namespace inbox { - inbox=yes - ${concatStringsSep "\n" (map mailboxConfig cfg.mailboxes)} + ( + optionalString (cfg.sieveScripts != {}) '' + plugin { + ${concatStringsSep "\n" (mapAttrsToList (to: from: "sieve_${to} = ${stateDir}/sieve/${to}") cfg.sieveScripts)} } - } - '') - - (optionalString cfg.enableQuota '' - mail_plugins = $mail_plugins quota - service quota-status { - executable = ${dovecotPkg}/libexec/dovecot/quota-status -p postfix - inet_listener { - port = ${cfg.quotaPort} + '' + ) + + ( + 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 } - client_limit = 1 - } - - protocol imap { - mail_plugins = $mail_plugins imap_quota - } - 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%% - } - '') + 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"; - - 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; - }); - - 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; - }; + services.dovecot2.protocols = + optional cfg.enableImap "imap" + ++ optional cfg.enablePop3 "pop3" + ++ optional cfg.enableLmtp "lmtp"; + + services.dovecot2.mailPlugins = mkIf cfg.enableQuota { + globally.enable = [ "quota" ]; + perProtocol.imap.enable = [ "imap_quota" ]; + }; + + 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 72b8c4c08b9262dfcd2ed6cd5527a683a1622499..766ebc8095a07cb111c81425fe904ed36c3a8fee 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 47812dd1e40ee78d9b80a6d603c39d23b561e6e7..892fbd33214a275aa6dce567df13d4109b14f3ce 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 e917209f3d1f500274028c37cec4dea918594abf..f5e78b18293388730111da2abb226a3af480f1b9 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]); - - 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 - ''; - }; + # 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; + + 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-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 = '' + 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 = { + Type = "oneshot"; + # 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" ]; - requiredBy = [ "httpd.service" ]; + before = [ "httpd.service" "uwsgi.service" ]; + requiredBy = [ "httpd.service" "uwsgi.service" ]; + restartTriggers = [ config.environment.etc."mailman3/settings.py".source ]; script = '' - ${mailmanWebExe}/bin/mailman-web migrate + ${pkgs.mailman-web}/bin/mailman-web migrate rm -rf static - ${mailmanWebExe}/bin/mailman-web collectstatic - ${mailmanWebExe}/bin/mailman-web compress + ${pkgs.mailman-web}/bin/mailman-web collectstatic + ${pkgs.mailman-web}/bin/mailman-web compress ''; serviceConfig = { - User = config.services.httpd.user; + User = cfg.webUser; Type = "oneshot"; - StateDirectory = "mailman-web"; - StateDirectoryMode = "0700"; + # 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 7ae00f3e501eb745552aff9ee8f1937fb63db378..d58d93c4214c13bb4d37d002ddef5368e72a92d6 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 2c2910e0aa9b7d3be085e4dd9e1b23563f7b716a..fe3f8ef9b39137694234513861ba4c023a94f16e 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 6431531d5eb6f131a0275e56707d79be9e9518eb..eb6a426684d42496136d560cc4f96d24f23add03 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 df438a0c69d197cc212088e81a5334e300fe46e9..19e11b31d9ca67d48d14f30b30df418f7e315be1 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 8f12a16906c5ab745c42f88cca34a8c9dc9eabfa..2ebc675ab10af4e8ffaad75d8cc73f5fa94d1b59 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 36dda619ad06335a76c16a256efd35537d2d8db1..21e92cfee01652629e068bbea36577c279746be6 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 + + 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 - ${pkgs.php}/bin/php ${cfg.package}/bin/update.sh + ${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 f156595e6f88bee9ea8df48d5c28792a5e62b7b1..aacdbe2aeed257feb882a057be1dc77e0122abf6 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 c1e5964c4536d8e5149e66c7b487b7fd174c49d5..7f8d2adac648a1870443257d7b3211bf600ca370 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 1fe77ce5a0c7621e1de72f597274c7588da7093f..2d5fb40fad357ea30a20b49d9fd958f0e75b6f14 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 0000000000000000000000000000000000000000..0cad09927b2fb9a86537e26e70b2bb3737c7732e --- /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 c296e048cea41507576276b842167777eeb1aa15..5cc2ff7f4bd121a4834f9fdda1580af7af1cf415 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 0000000000000000000000000000000000000000..5fc19649d3d958c05874393b02fd2bda1820c107 --- /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 46308f74dc915571ed862ccb00b8a8f065f99e73..f3a650a260f1e243b6617b8c361dead71cb6b9aa 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 4708e16e2a6c6fc31668f9c73028dec0a3a4611d..cf7fb5f78d3d53e2404d94f70f8cd2cfdbdefc2e 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 87d3606814459cf32441435c539355fcbbc8351f..f69832e5b2bd94cfe12cab3bb5c773e626ce4f18 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.groups = [{ - name = group; - gid = config.ids.gids.bepasty; - }]; + users.users.${user} = + { uid = config.ids.uids.bepasty; + group = group; + home = default_home; + }; + + 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 b1cf5a7d110406d3194070430e8efff5c68d1709..9fcae6452696f15a1ef4a8444be7d3e7a5b73c5e 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 528af486b414c6f692b4610cb548db3e882ca897..f5163cf86cf5f09f3331df8eef064b42642b3a1c 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 8d3e294622d13af1b179cb0781788854bfecc17c..d175854d2d1ef4f8fca0799802fa7985ac453d26 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 c21cb2afc3ca4b8531b7110b5bc83bd6483d5b5e..b7b6eb7cd66e47f6da839b805ca37571fac0b1e9 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 33a6fb15264165e105daacaf9af861b1fdd52b3b..4b52963500d1b7e14087bb18a0f22e467b434c68 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 e4d5322f9b5f0f1bc6cac56bcea747c00f45f96e..7322e1c080befda757db82181e4baebe07acb56b 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 2958cf2144735f0aac38a1028fd315b8b277cca9..95afb0460fb8ea38bcee00bd70f4d3e9e574f716 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 74f4f671f4605e2b79db1a38948fe634cc29ca38..f8c79f892da3614e23adf9c9f7228efa6bcd9dc2 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 1c5ece868258791dd4fb0c756b994344247e7e7f..188e45abc58b32cda012cea3608ffdfec569b98e 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 122c89ce0680afda3027ce57d81deb7daac8bc0f..0000000000000000000000000000000000000000 --- 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 0000000000000000000000000000000000000000..0de5ba428110ae5e586f645b462826cc2c60b256 --- /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 258476dd9feb3933cdfcc1e384b9eadd99378e14..38910a5a005d4b21a977ce528354ea4b97829da3 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 61d0ce0aef8ce4159c2a2ab299e8a9784ee23fb2..aa958985379783b1a4bd0264fc90f6e1361d2794 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 3bfcb636a3c6c322c05708325dc84373b276d165..f954249942a8264e3bd060ad708eccad70f9d495 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 4a77045be28e50aab91cca131b4ac158ffe8ae0c..3ee0a4458bd0e052e5707ff9ce3ed3e98436ca55 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 74702c97f551fae2591463543b7fc9bb4ea6e299..86033d02bf3f247fdcbe63694258102775dd5453 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 0bda8980720d2c14d97a61c79f40de97b323d5b8..703bc9416f886998e9839d4627e638e1dea4da7d 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 ef8d5cbda8895d150fd4d2b6cf57483365a14949..2f2ac27eeb9d0518f0594b9681f8f0625d754188 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 107fb57fe1c45fd812d95498f4cba2e0f27002ad..529f584a201e4519568fca4cf2192f2cb3754044 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 24780446d50499fe7ac311c0631d323af098998d..0c2407e1dd2ff51c1e901051629ab7ecfec73062 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 20ba3d8ef0bc1ae89713180356fc1249f9651cc4..0000000000000000000000000000000000000000 --- 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 8950010773cf0c5063cce11eae045b378d591bb9..651ed3743884be517b6ea69cfab511da2394d106 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 3985dc0b303c20e4c2bf84c86b99728964db981d..bfaf760fb8363a7ed8c7365bb69b9194c9b4bced 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 61626e78f8b383141b300f4f4aafc61e4615f516..09b7f977bfbfcb97bcb212e3e2f1a623accc17b6 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 bf9a6914a48314a41114ae815936ee9ba60a5fb8..1febdba0c8f928605006e5db3503a9587870ba63 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 042b496d35eebc2208cdffbfe70bbedb5c8b7258..9fab462f7e3b4d2b04c78555a8899348e9ba260e 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 cdf61730de33adaa60738de1039d10a7abc2a7de..ef34e3a779f011797f34b1b6d5ff0d88abf57411 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 aae02e384c97f8e8dfa4df7b4b3f7317af42d51c..0000000000000000000000000000000000000000 --- 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 9868192724b5032143a6c30f03a52adf97621770..0ead6a81691893c5a1850271f72f2991a23dee37 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 5cfbbe516ae1b7ddc44f6df38e907ceb7263eafc..a32dbfa3108f9e3ed65ec592a0a9e5b497c853dc 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 dcaf73aca4482a4b444295e19d0d1d3f39507448..ae7b27de8e706901ba76322cce59b36c67f4ebbe 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 6b64045dde88d26b9b49e9c962a466d0e878a610..36008d257410d7614dfb5167ef7dff79e8cb3c34 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 8a57277fafe7610f07a87e5e8f818d85b1bc2e33..a894caed1a34a9ba118793e0b7b03fa10ea2f39e 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 753580c3e404f14a7a8a6bc3bd453357c9588c93..d1b388310280eba21209352f55ff960c98118ed6 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 d7f7324580c036be4a5a386857cedca33fb4b04a..d5b3537068d34de9686b31a563793cf2ef899974 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 5d91e44a199ddf6ae98824b65593953e93bf3817..f6af7c75ebae9d6ce671b4ffecddc9917ca39a0b 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 695a8c42e85e0bb96a2fcb2d0615510e4d584bfd..655a6934a266f92212a9ce3afe78cc1142512601 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 731ac743b7c631b8e6ba6ec192fe0b0a64e685e2..ef3663c62e048fc403f0ba879d8f29e3a7c929c4 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 02a9f316fc327d07a272fe94bdd5a83299bb03ff..2c5fe47242e76a1603cbfb243b9e04fc0f497d30 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 5ee6b092a6a47a63b437cee509fc2c2e659447bf..e91717fb20547ba34acd6fc0b42c3edcbd22875f 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 fe19ed5619542a0b66047a45bd6c6ad8f5ee8f16..9b65c76ce02e597462a7be954ea24132371159fa 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 f7874af3df29c5f60885e99b2fe97561440a1c5d..64d9d61950da1d6d779ff3f50b73a0667be441e7 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 6da0831b4c5f6449b86632374d0478ee13591464..0a9dfa12eaa5196ee64d2f613bafe4d71c0574d0 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 8af0650c7380d49eebe9d47f1f30abb066521978..1ebf7ee6a761cdb791ad1b71743789ab3eeb9ca3 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 6a3b977694620cd4a0d5e60978dcb418e5fc7c90..9ac6869068f2baa09050bc01649e038de24f03c6 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 3ffde8e9bce225bf6cb76fdd8f6025e7f19e965f..a5233a46e34117291ab7df98beee2e0d308e0fa2 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 9af6b1d94f374e66e32fd7cb88f1b3f0ba4a2320..1b02ebf37045f671b39f04fdfbf0a00ca8ea418b 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 b67f697ca0dea383b4af34c4b1e6d806ef90c6d1..84a72afac2f7673edca6c3dc88931510fa7767ab 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 36ebffa44636f5f742a9d1b2047d72c783e6bffa..f9ad1457fc8549e0a2b326920268c4ebb9d68f05 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 8a90afa998423b65e3db1ace5255509687ff8821..fe8d905da3fe36ebf183e40428893fee061e081b 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 1cc34641809184483b6ca7ad51d23e71af7f82c8..972104630275b187e7b045c7215301923af19810 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 e9fa26cb1f5ad1c142da78982f8e8cbdf6b3f23b..68afba21d64a5ab0b7e6bf8a895135b90b0a2fed 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 a01074758ff81a7a3fb06b3a36912945167e6857..aba3533e4395c0f0389a7e4d6018bb386b17f212 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 82a55bafc98210e8ccb2ac48485db1d03da3f3e7..bd0026b55f721228836b72d2bdc21cc54711c80d 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 7d8c6fb614044bc432826a9b02e8bf96791a177f..18c5c4dd16234bc990ed305806653d37e4a8d97e 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 0000000000000000000000000000000000000000..62c2cc5684764569f6932032a3701eacd59f3820 --- /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 ab3e3d7d5d50173362722c40294a6dfe0d389076..d6dd62f871bd1feef97c423d07bb9b4fba98e403 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 5f9a52053f79eabb29d732252eb5617d63fdb578..aee6bd5e66cea499ab61373188ab8f0939c4f50c 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 ba852fea4336da19b2b02fd28da925964467704a..56cddfc55b719ab96999e06e56fb364bce777d86 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 f40819e826b0d6f4c4e725360360fc19f6857789..3b6ef1631f8975b5db4116dd7c508ecc4002cdbf 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 fe7ae8a8ac90a72e6d0776866eff57e55dc66a10..045e48a3d0f88bb870196f8424df31bd4f53bcac 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 9aa0f1b85aac7abecf363e9006bb483e216ec22f..8d0e8764001c420abacdfa72b11d8b334fca8abd 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 12153fa021eca6fa47476c2f7e59c0d736d187d5..5b5a6e18fcd651c52d80176c47df16acecccbb7c 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 374f83a2939d01527cfbe0c390c082b7af49b8e0..04421fc2d25a8f8b3969dbc104bb9f11f241d5cb 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 0000000000000000000000000000000000000000..44b15cb2034c2520446e0570c2c2ccd0f01054a1 --- /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 ea155821ecc9b0efda11ec1fb2f2d487f3c66443..30b2916a9928565e96fb894622761edf9f27524e 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 d668faa53cc33ea4feb00258ff9a9cd88ad2dc71..ca2cff827232013dfdc821ace316e719b4b330f4 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 d878673266821c2d47003e675d17ee8a773cd3f6..5d131557e8be9636e56a52b1db29c49b74064d8d 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 0000000000000000000000000000000000000000..731260a5c20afa508047aec3338e07c399fca8b5 --- /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 1bdc4e4410f135ae72e57751efe73ddc72e5ed7f..a45e806d4ad86ac74e90ca30efc0b4e87514fdb7 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 543a7b25d5d6173939ddabc520559b5807185a21..d17959a6a30594f352932b6dd7b0a781018089b9 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 100d458d536c0e0560400b08afb3b6519ede58a1..4b6f85e4a2c97e0170b5d616733928be4248a6bb 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 4ab74ed8e1c0e57d4096c59b347f33a67abaaf53..916e7eaaaa949a0280c34a41d18e18a43bcadc4c 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 263b70d04a56d5ad620e4e513ec808d31aa851fc..a43ac656f6676298250ad8463ff8f340d1b9109c 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 { - - 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; + 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"; + + # 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 1dd869043f0cce5fb0163d4506fabcb0646b843e..5422d4dd4e26d7e3562cc17b3259394b1fb9c475 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 79c4b7aee066cd2f421151787735c3eb0e0b9744..677111814a01820127ba7bc1dc5e848c80a31549 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 b17ec3aa930089b61d8072e6fe118908f25e5287..ccad64cfdb2ada978f58491ccf7cd24451097537 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 a3c22ce69484cb4aad18dcd3453e823013e95273..a115590ccaa006dac22ac8575f538c26586ac5ec 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 26aa16679467ad34b22cbed81ce79a651bc7eb19..ae8a4958ca965068955dbdf18670b88d518fcc87 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 d09c6735e123c4b25295ebf9f3d6ef8b2abae913..e3b95afb3d8661db055181844d45f541a31574f5 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 274b36171608e863ad26f4a0874e3f8ddc620038..01a16698384aba58b1572ec800350d5bc38acbd6 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 da26246e703e097c3e1577ab5f2c0c3f4a573758..43829d36e41760da719aa15e8fd3b8baa5a6ce56 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 3fb85b16cbe20aab7be46b152f81a13a7b4b5985..5f8ac96b2292c5f1f10035953fdedd9f7beb8221 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 8402be939fe5319e08c58ba7ec8d3e251ef14a40..6ccc2dffb2676ea77aef0a733b6f75f4cfe0dac5 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 0000000000000000000000000000000000000000..1a2c4aec665142e7426dd1421c57ced8d2687161 --- /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 c430ce5af92a34682e29b9057bc789f5de666507..1bfbc307c59d1c2dcceb1181aaa79ea5e82cc47e 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 7b2786034552ff992343f6ac2972b6be9bcbd081..c0619211c2fe93462cc4281ff578cfbf8905f7f8 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 d123bca9321931485be589eb48f346c8acb3b923..d06032daecc721df7092386ac26538c6841c87fd 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 2586f2d74e9c32e05dfe767da1ad5e86c5b33f94..003609ea7054aaf17fcaac8346de2508bb98b483 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 8edcf925dbfa13ae2b383f31c258b781218547db..0000000000000000000000000000000000000000 --- 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 afc7880392a1a50ec4f7bf7ef9d26fa64f49f416..0000000000000000000000000000000000000000 --- 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 0000000000000000000000000000000000000000..e48eb729103be3ec39141ebc1100ce84147dae17 --- /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 714a5903bff16bf03553e6157d02360f0ce78d9b..377d7bc570587513f2d0047821a9afae33340dac 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 6a38f85c48a24fefcd958f39153e7d19bd0792fc..a5af25b983b915ac79b71ba62c951cf03110418f 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 15aaf74106740abf7705995dc7fce145c9e507b6..cdc3a172ea7066216bf7d23a2994c654f425b946 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 e192b70c129c0fb317284a8438c01145dbdf1ce6..f3fdd576b65c03c0161463b2f2bcae8bc98d30b2 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 7083d87c4073537b2cdd97217e8f0d36b86e9cc4..cb954fd836bc499bae2527389a5de402489b0939 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 a638a3083fbafe172c2f565a4e3a708add8a95d9..52c895215fbe42047f180e0c9195fa79bc670312 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 178a832c166ef1fcfbac7afe3521b24494e89556..69d4ed047756a1e7583162b3925c690866f6abfa 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 4f60300f5ff41b27757c05cc8df1198882c55941..8334dc68d623f9b5a223d32842a311d0cdaa05c6 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 aff71e5e97daff7295f749dc4984e84704918cce..4678829986c643e5b245c26ffd7d3eff84433cd5 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 e2c2275b5512ca21a5e3f4c5c36391c7d37b31b8..93a21fd4c97efa45a2877ab3af334b2f0218de8a 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 97b5843bbcf1cfb9ca8c7e78fad8115371c3a4bd..46051d7044b5e0b5d4345fbc48e5469a761e5a09 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"; - }; - - relay = mkOption { - type = types.str; - default = ""; - description = "DNS server to use as a 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"; - }; - - passwordFile = mkOption { - type = types.str; - default = ""; - description = "File that contains password"; - }; - }; - })); + 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 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"; + }; + + 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"; + 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"; + + # 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; + }; + }; }; - }; - 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}"; - }; - }; - users.users = singleton { - name = iodinedUser; + 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 f5abe61a1baf4c8c3a3db0ca8bddc7bda715fdf9..b236552eb65305b3e2058cfa461873ba39da5d12 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 839fa48d9a4233cd088cca66d0257281d4322e06..6be67a8b96f4dc464d37bd0a8bfd1a4e8e80e8e4 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 85f52be8a6ac972a2e39451317b2bedcda966da2..495102cb7eeee1fa595e87d102490c5f157bd281 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 bdea6a1d1caab78826bd1fd35b0f3c9298af24c8..553415a2f32977a8aea6fb703d577999b7dde95c 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 1cc1dd3f2f62bf14b6ad40dba881336fcbd4a118..12ff89fe849234b3449213e4bd35d7d4a0f665c4 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 fc516c01230a331dcaf932cfae834d8fd31c0c39..c5a84eebd46f4415842cd21732e0dd58a0be328f 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,105 +69,77 @@ in Extra lines to be added verbatim to the generated configuration file. ''; }; - cacheDir = mkOption { - type = types.path; - default = "/var/cache/kresd"; + listenPlain = mkOption { + type = with types; listOf str; + default = [ "[::1]:53" "127.0.0.1:53" ]; + example = [ "53" ]; description = '' - Directory for caches. They are intended to survive reboots. + What addresses and ports the server should listen on. + For detailed syntax see ListenStream in man systemd.socket. ''; }; - interfaces = mkOption { + listenTLS = mkOption { type = with types; listOf str; - default = [ "::1" "127.0.0.1" ]; + default = []; + example = [ "198.51.100.1:853" "[2001:db8::1]:853" "853" ]; description = '' - What addresses the server should listen on. (UDP+TCP 53) + Addresses and ports on which kresd should provide DNS over TLS (see RFC 7858). + For detailed syntax see ListenStream in man systemd.socket. ''; }; - listenTLS = mkOption { + listenDoH = mkOption { type = with types; listOf str; default = []; - example = [ "198.51.100.1:853" "[2001:db8::1]:853" "853" ]; + example = [ "198.51.100.1:443" "[2001:db8::1]:443" "443" ]; description = '' - Addresses on which kresd should provide DNS over TLS (see RFC 7858). + 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.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"; - }; + 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.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.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.tmpfiles.rules = [ "d '${cfg.cacheDir}' 0770 kresd kresd - -" ]; + environment.etc."tmpfiles.d/knot-resolver.conf".source = + "${package}/lib/tmpfiles.d/knot-resolver.conf"; - 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 0000000000000000000000000000000000000000..09d357cd2b6e4b38e3c0a1f781979b2f32969901 --- /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 682eaa6eb297bf5ace9c531e07ea6ad0e2febbb6..b8b4f37c84a89eb7a2e20de34fcdfa12383ec1f4 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 3ddea3c9757b30acf90eaa69eacc8b355f09f582..c580ba47dad33dfc5ffe7c36415fd8c41abcb8f3 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 e0a6c112e3cbfb92435618726bed81b0e8475e94..dbc35e2e71c005a43da61a76b889907f0a3b5539 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 98a3456f639696df9b0eb43cfd09118a7d4238e0..b953643086827f17711a1bc2bdf180121656e490 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 0000000000000000000000000000000000000000..cc98414257ca7d2a57b5b05970d1bc9274352d2e --- /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 a3d61922e578593179614f0b4893da871978b23e..482d6ff456b16e599ed6d5cfbd241b7367e9531b 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 43a9a0b2598b8d6946ca3a946cb82e203878d8c8..ead7f0859434d1e3d6b05d5de098a1d9c63d557c 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 f1238bc6b168ba53aa1f0142f2f72c01199767de..21ae9eb8b6d467723e37f75f6235acac1de7a9e9 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 92088623517f8b8e96cd509cdba5e836d6a3e388..77e979a8a424f0ea17ced7333d75530df3022d77 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 53029b590677d079b3c36b813d454168efb053e5..6f24141b33cfd51fc10f57249b5818b455c94e7c 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"; - } - { 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"; + 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"; } - ] ++ 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 ad7c013a544916cf6f81c157c63451c04697ba03..ec9d9753cfe257dfdc027645b64661242ea6d91d 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 0000000000000000000000000000000000000000..3f2ce5bca4da4bebfcdf1041d1ac7de9d93684da --- /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 d24d6f77a4916af6ae4eec21cb433d39887e4a90..cc061bf6e3b91d52686ad569bad62695191f97a0 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 bc0966e6b8e6ad117ffc975490e117e6789a0f35..429580e5c6c48b532460bc45a299119551c98bb1 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 c74476c7a155837deebf5ceaf2de40373b598a47..f1062edaa05ba3725172c9a224bcb2b92f5b8440 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 1197c84f0459f3106a9e173acbfaeb6c64091f6d..54ff054d84c71a77c110436e2ca3d53287f98104 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 471d15b1687bd856fed18b398b951b93d6a91a85..67a04d48d3083bcc9565ba43b98f2225738f9e8d 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 dbb2e3b4c40923fe936e2a15a5157a17ba3a90c7..637ed618b8938425920d4c845366133a935386a8 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 f5b174dd7b7b9cc24313489be7ac6dbb084f5c1f..24b5bbc5104e18a41ff94ed0e37bd2941aa704fe 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 0000000000000000000000000000000000000000..0e32f182e2a10ba0914ade36d07c277072c71c27 --- /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 dbe3b7380970bc3655496effb6c9b6de39d5d61f..1ff9388346b61f7d941de8f6bce00303fb6baf24 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 e96c27bd84b4a3fc45b1382c13839fdb959a4cc3..c1cbdb461765ba90ed93b1997fa9044812383ea0 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 c936417e68cbd0eac239bffde00c52d6f6e30d4b..9c9eeba23da2a405803eaa6cb6b7a7e8e2366dee 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 b495b3948fb573d246659a9f585a5f97e38351aa..52ecd90b7c6991089b4cc3c55a05d5d7bef05b52 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 0000000000000000000000000000000000000000..2f612c9db68611b950d482abb9c16fc614d30b05 --- /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 1daced4a6c70e1fcbaa7947b12ac4df57224bb0a..30bf22586f86f6e5ca9e809c0ab4b897a5b7a9ab 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 9b25aa57583748c52591cfa2dc5eef6c2fcf9937..e74e03fc0b0750cd6ddd8a7491f023bab1825d29 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 a6a069ec50c065bb4193e5296a3c400b7daa4b84..c7d174a00de2f6291734d6886bcc2cec048e2d63 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 68e005ab81dad8be46a2081f6ec005239e9887d2..2e988e0ca2e016df05d2fec5db6e62e8a86c43f1 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 0000000000000000000000000000000000000000..16383be2530f76cfb7dec96d4c68341ae7963c86 --- /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 0000000000000000000000000000000000000000..e081aedc6c344fc396b1017f9172ef6c80122f24 --- /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 e548ec66962a60c73879bdd71a5595ba8bbe7ab9..a808a7f39d0500c4876615d904e14b667b10fed3 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 0000000000000000000000000000000000000000..f1888af704164c09caefcfd8e1f26d2fcee6d4c8 --- /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 b48b0b3a9d6bb71930f50c437476c2b875bc5408..37ee2a80389088df66f4ed71a3a6fe57784c3ff5 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 0000000000000000000000000000000000000000..c4d06df6ad4abc70f82e0e0a90fc5b3801c1bbc1 --- /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 b0e2e303cbc027b3d46fc8ae33363393ab37e1c9..17f31e3a488d82f91b1991ff5e2a8fb1803d4c09 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 b38bcd4cec05857a64b6c3a20f2395aade8b3256..c5e0f929a126753022f16cec95c517162fb863a1 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 35c1e649e2e127c5275dcea7ef3f9c0ca8c8b6b4..b5b9989ce1863e2ea2ef29fcae93be789971c9d8 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 64eb110683290b813ef70a19cf3daefce8697442..dc9fb31ffd0bfc2b7096117485fe22943528135b 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 b3f2af5b179416a39104808ac87812c192b56a34..e717d78feed576a768f2c080770b49e32b1053e7 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 0000000000000000000000000000000000000000..513c42b4011741e12e577a3dd2e4cef2352801d5 --- /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 a0ccb99500941ff57c4f98ab77ae931a86c80ca8..18f2e135124b4560efa85356bfb4b767bc641cca 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 1d34921516903b7ddd14d72b31ddb3f5a79088bf..f88e34827d00f6d95b31aec138cebae51a215472 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 c922ba15960fd2828af688387b15c65e91bec5e7..4bdfa8143dce09f74a00afb3a40cecf1223860bc 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 90093d9a78d9e0ac8bf4400391e3b16e99b4e4c2..b3e201844236eee3d05baf2b329f22981f652211 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 b770d47d269ef45155d71a80b4db6bdd49fbcb1e..ff1bdeed9f481ec83bd92310f83809929be545f5 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 980961225c9e0944064b5a0569446f117327bfe2..e8f83f6dd8bf86d08f1d918d9c72b556fd7d00c6 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 8f05c3949fba71b1efd41acaca92655a560eaebf..de0f11595a949b0575b259827a01847e7c703c9b 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 0000000000000000000000000000000000000000..87c029156b9e7e0cd8e351a2e1302db7ab478a51 --- /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 764af3846fe5dd5ac8e92e46c406929a7be3c73a..cf39ed065a769531c8f2201fb25210cd08576262 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 0a9848a49349075836d6ed06b81a53c6d82d78b2..a7315896c5063dc2dd92124359e6fa2e579a5746 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 cc35be49bc3bdb7a8764c0e15f468d3c5350a4c4..59306d625e6bf8473838497f5db9b16dcc875209 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 a32907647a0d5802e74c4d0cd5d6bf0f5f74cefa..cefe72b0e999c755e81a434366562e2df2e8d9b6 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 e43ca014e148a15954271a4fc4678d0d5b5a7ac1..42bed21bf25bd84d6e7ccaba7747043ac3405ef8 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 6740928db9a70e0bfe49b9f1f43ad983c708a2e5..7a44489efe61fd865602a384369ea072ac4f5d9d 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 43a63aa8fdc2aa4fa61c164459688da55662051f..2beb265ee5d1183b39d317745b4ec22ce2ac311d 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 5ef7d9893a49d8fd6f81ef761be340e3fb56dcef..a8615a20a1cf2b0b806d16832b6da363dfedf700 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 d1817db0755501081ae3038bc4cf9045111f385b..903a532703774dc61f12091450725367db6a6997 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 e89078883ebedcd9e754092ca439b18d965caffc..94c0ba141179ee2c59ae122faeba10438fbfadb1 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 ef5bde7907e0a7ecc03476382ca317a41f3ead4f..aaf6fb0479baf164ef0c211b0bfcab5f687f7fc6 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 716ae7a2d2f4cd1055401396f12d4caa5e46e4d6..3f84f9c2560ccd5d55d440637e8bcf8555892878 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 474490391463f814c1d6c8fd08dcc646efdb623c..f203f2abc033bd60ecd6ebd524a3bafcad164a9e 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 4a174564dd2cabcd35e66ab6928cd282783d849a..e7a9cefdef30ad112be73a75ad8eb1a70a6cc725 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 08da726437ea89e14d299b06427d74066d1ae195..39551190dd33f21cb9cd06dee699c2adfb1fe276 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 c60c745443bcf006729f87e82dcd5ef95e1a4443..47ac95c4626e0d0b8be2840888ca0d15efcc2d7c 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 b0ab8fadcbec9a8c442dc5185d5c3fcd599ada82..6a8a3a93327eb7b086c62c4e1a971fa4010faa12 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 936646a5fd78f5176c13aa49d0cbc4d1d518c156..4a60fec1ca806bb8fedf00414d3b3f46bb6d1938 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 c3c0b432b4940bf9c0b4ecfa11cf25ac231734d0..74925c5e2c477bc8e7fe1a5208bc21ae8cce0b54 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 0c72505395ddb08963abca6d54fd47fbd0e16be8..2f1e7300ca3858184203410ae6c72b37bbd3dab3 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 f7a88867b616eee173b72afd0480bb21ed6be3cf..fd28b94f7be3b6f22ea7e34bb490869cd49e2e69 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 f127d8a0276db4f380083287d5bc50158fe41ee5..f3a629f7af700760069621a9fc03957125b1996b 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 0000000000000000000000000000000000000000..c59ca9983a6c68604923d997b635307dc018b158 --- /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 5f56f8ed5a09175499c1986d0aaf4215fe5f780c..751f81649ddb45d32de9d90beadce280937ee1be 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 1b90299aa23c83f366842e4301c5e7ad2d0e56e1..a5f48e744fdc34421556798b23a107dbc9484f3f 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 0000000000000000000000000000000000000000..07af7aa0dfec7c3625505b2bf769b18b69348239 --- /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 a9a30b409220f036b2813080e575bf1e42af49d4..1b5890d6b0c739e52d33bf2649d1aafd56acf440 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 0000000000000000000000000000000000000000..b184c0754d45b3bf515f80501feeac8184dfdc09 --- /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 0000000000000000000000000000000000000000..568bdfd0c42972d0bfacc5a1784bbfa0e942c75d --- /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 0000000000000000000000000000000000000000..68769ac8c03161933ae04b3cc71891d5277e772a --- /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 0000000000000000000000000000000000000000..4f181257ef7cd2bc684168a896d3cf79ba138240 --- /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 bd524524130d61f3c264fedef071d93bdf26d1a9..56265e80957ed1b7a8056e4250d1b9352b6f2b7f 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 - - - Alias "/upload" "${stateDir}/upload" - - AllowOverride all - Require all granted - Options -Indexes - - - - - - SetHandler "proxy:unix:${fpm.socket}|fcgi://localhost/" - - - - AllowOverride all - Options -Indexes - DirectoryIndex index.php - - ''; - } - ]) ]; + 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 + + + + + + SetHandler "proxy:unix:${fpm.socket}|fcgi://localhost/" + + + + 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 8c7fc4056adc91ff7ef9a3b82dff73dadb57eaa2..853347bf86e2c8e2eb2cb7b845a205bdb6a910b7 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.groups = optionalAttrs (cfg.group == "mattermost") (singleton { - name = "mattermost"; - gid = config.ids.gids.mattermost; - }); + users.users = optionalAttrs (cfg.user == "mattermost") { + mattermost = { + group = cfg.group; + uid = config.ids.uids.mattermost; + home = cfg.statePath; + }; + }; + + 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 43edc04e1a49241f98d3b6a854616814e46a548d..e9ed53857d8119d8da20b2ef2fa130177b25c80c 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/" - - - - Require all granted - DirectoryIndex index.php - AllowOverride All - - '' + optionalString (cfg.uploadsDir != null) '' - Alias "/images" "${cfg.uploadsDir}" - - Require all granted - - ''; - } - ]) ]; + 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 + + ''; + } ]; }; systemd.tmpfiles.rules = [ diff --git a/nixos/modules/services/web-apps/moinmoin.nix b/nixos/modules/services/web-apps/moinmoin.nix index 0fee64be0bb2ffd2b505891eba40e193856a8aed..dc7abce2a5cb5422db10eea942c485170552f141 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 ac59f9e0012a8d70004a3e14cefa7026f318d2cc..1196780cf6ef96a14b52801aec745cde74c42094 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 e3a2db398e62676ddf8439e1805448ad51846519..5f6f2bc7a16db3336af286f505bdf4900d4cc2d5 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 d66e0f0c29973e13f4a6aad4c9656f210caef971..fc454f8ba254966b9162a62045ae11fe740f5b34 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 2c2f36ac598ab6356959c711032e81abfd19e0b8..9d0a3f65253e9b17f70945289e506f20c5336cac 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 0000000000000000000000000000000000000000..6f47193c62b9d4d98a118cc141b6c35ef6f798d7 --- /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 13d21a0b4aede2945a53d84d8f15bbee3a1de6c4..5fbe53221ae87159e6b62af15743c40dab3b276a 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/" - - - - # 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 - - - # https://wordpress.org/support/article/hardening-wordpress/#securing-wp-config-php - - Require all denied - - ''; - } - ]) - ) eachSite; + 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] + + + DirectoryIndex index.php + Require all granted + Options +FollowSymLinks + + + # 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 830edac20bac367db9a4d79cd458f0940cca771c..b4d653d2d77e3a83c3ca9b581f0ed7988722efc2 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 09538726b7cd82be0fe2e09020e805730083ca5a..00719512834783f52f9055168d1122022f305b68 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 850d3052533a0c3e9061577f1f13a8cba0d854df..832c8b30ee9da28d7b650f86eb2a0f68ca4bde3c 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 ''; - - perServerConf = isMainServer: cfg: let - - # 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)); - - maybeDocumentRoot = fold (svc: acc: - if acc == null then svc.documentRoot else assert svc.documentRoot == null; acc - ) null ([ cfg ]); - - documentRoot = if maybeDocumentRoot != null then maybeDocumentRoot else - pkgs.runCommand "empty" { preferLocalBuild = true; } "mkdir -p $out"; - - documentRootConf = '' - DocumentRoot "${documentRoot}" - - - Options Indexes FollowSymLinks - AllowOverride None - ${allGranted} - - ''; - - # 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)); - - in '' - ${concatStringsSep "\n" (map (n: "ServerName ${n}") canonicalNames)} - - ${concatMapStrings (alias: "ServerAlias ${alias}\n") cfg.serverAliases} - - ${if cfg.sslServerCert != null then '' - SSLCertificateFile ${cfg.sslServerCert} - SSLCertificateKeyFile ${cfg.sslServerKey} - ${if cfg.sslServerChain != null then '' - SSLCertificateChainFile ${cfg.sslServerChain} - '' else ""} - '' else ""} - - ${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 ""} - - ${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} - ''; + 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); + + 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."; + + 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; + + 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} + + '' + ; + + mkVHostCommonConf = hostOpts: + let + documentRoot = if hostOpts.documentRoot != null + then hostOpts.documentRoot + else pkgs.runCommand "empty" { preferLocalBuild = true; } "mkdir -p $out" + ; + + 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} + ''} + + ${optionalString (hostOpts.robotsEntries != "") '' + Alias /robots.txt ${pkgs.writeText "robots.txt" hostOpts.robotsEntries} + ''} + + DocumentRoot "${documentRoot}" + + + Options Indexes FollowSymLinks + AllowOverride None + Require all granted + + + ${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 + + + ''} + + ${optionalString (hostOpts.globalRedirect != null && hostOpts.globalRedirect != "") '' + RedirectPermanent / ${hostOpts.globalRedirect} + ''} + + ${ + let makeDirConf = elem: '' + Alias ${elem.urlPath} ${elem.dir}/ + + Options +Indexes + Require all granted + AllowOverride All + + ''; + in concatMapStrings makeDirConf hostOpts.servedDirs + } + + ${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 (cfg.group == "wwwrun") { + wwwrun.gid = config.ids.gids.wwwrun; + }; + + 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); - users.groups = optionalAttrs (mainCfg.group == "wwwrun") (singleton - { name = "wwwrun"; - gid = config.ids.gids.wwwrun; - }); + environment.systemPackages = [ pkg ]; - environment.systemPackages = [httpd]; + # 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 0000000000000000000000000000000000000000..8ea88f94f973fd73cb28b5e1dc32a68ed28d9e93 --- /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 c36207d54607fef4052b9d6762a914d1cfc33c76..0000000000000000000000000000000000000000 --- 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 0000000000000000000000000000000000000000..2e806afb42c5243f02ce818590c9f9a36162a874 --- /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 132c50735d96e0fb401364e289a8b35c436513e1..0e6e10a5f47d9d5fe838bd3c33169a0d60d40b57 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 9b476ba7f1e52ed8b5a49b4919edc06ccc7caf18..8d49dc66eb1abc686b0cda82d963026842f39eb8 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 272fd1480185ead4e337ebb2196c4ba621ce3928..f7fb07bb79755234b8dc6c1d86f56568d8c3d482 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 2c73da103946fa518a612d46b6e8026f9a12df4e..3db19c781d03487afc1fe9f645389190af875866 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 68261c50324d0bd20f53c961ab4522097676f6a1..6d12925829f78bf7fdb890eaeae61ffb92fac3e6 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 5b0fc467ea4694d9548284c4d69d3dccc4c9c74c..4ab7307c3b67143589ffcf68c713c8183c11e487 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 b07212580a5550f30cafacd363f4e9386e4453cc..f8a18954fc99b97952d002eb2e01e5695b7c038a 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 af70f32f32d0f973908633dae647277c1bc76e50..4b74c329e3dc0923ac14e64fffc19f643c71dbee 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") { + uwsgi.gid = config.ids.gids.uwsgi; + }; - users.groups = optionalAttrs (cfg.group == "uwsgi") (singleton - { name = "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 970fa620c6b6db32a0ac15d2fa6d307b7db5d137..ea6aac9f6c92faa36e47f618e1044c056e2bc91f 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 04e82599b948759ff3f2b329ca03ef3c59ec9302..32c9a40e535cf67e72d5313a555b365a2b836bf8 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 6d9bd284bc725e8b849752df1d1177a777e942ba..ac8e70c52bcc24df3860351c342510fc17568ee1 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 65a7b9c628e526b38c2fca06d4874eed32bff127..e997b9a11343b249105fafa826a217abbe182293 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 fe63f36cf96a21d2c4fcc3aa5f56350e8987ab26..f236c14fcf3e96b9ff93a24ebc4a1077963267a9 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 e07d5b5eaad71a08be05128f15d59ac211cf5640..01fe230b8a433062624160ca1a3d8bda151d098b 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; - - # 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 + # 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; + + # 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 + + # 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; + }) + + # 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); - fonts.fonts = with pkgs; [ - open-sans - roboto-mono - pantheon.elementary-redacted-script # needed by screenshot-tool - ]; + programs.evince.enable = mkDefault true; + programs.file-roller.enable = mkDefault true; - fonts.fontconfig.defaultFonts = { - monospace = [ "Roboto Mono" ]; - sansSerif = [ "Open Sans" ]; - }; + # 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 0000000000000000000000000000000000000000..9541f2cfd4ee7c15b6c2068067c4c59bbe49f5e9 --- /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 fce274477b6238455a528fa3502105423de51eaf..60ef0159ff1abae54b78ac66ff37621bf2856d1c 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 a08b1947f65ba4c2f2a898dcf300f7e6d256d75e..d39b4d64904fb3bed30ab7aa6ecbb58f403dd90e 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 1dbe703b5662f3c94d0cce87f767cd2d55f78b4c..2b08c62d0ad1365c3c5c8ef1e6103d00f30455f4 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 2d809b5cc9fdfca7c739a9526a4e64b52de17fd3..2a7a19e7695a6357381df246fc5736f4b925a8ea 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 6630f012f04fc5e37c8cf9d688b26af29d987a0c..d7bef68e5bcbbc33c22439e3163f18f9fb63f365 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 0025f9b36037d1deed1cf772d36500149501ef92..16d7fdf15cf6849ce3788db437f54d6dec58dedc 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 77c94114e6d9908723fed4a3c02f984cf1e5130d..087c6b9c38ac030e7795e741011f8fdb15a61d99 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 0000000000000000000000000000000000000000..a9ba8e6280d6c419aac7a7e75ab0a1b48d02aaa6 --- /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 f7face0adb7ef58aee13c42d2c4aa7a5c4bf0185..479548863b474ee6e2962265c02124e4683d792e 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 1af98a1318bb3231023115ef2ed2f6bd7438495d..f48216ff446f588bfd5bc48fb3176d08e7c13838 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 71065dfc26bb7ffff7418e333f2fe8ceaa6d194a..9548ecb8ef6daae373799c953a271d274f2880f6 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 c03bb3b494fb55fdb4df4b2de74acb7024ecb299..0000000000000000000000000000000000000000 --- 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 61174672e2dd304fd27d3aaeee9df62d18cd1d7b..e3bd21be73e4aa6200cc0a20957aa0533fe5d41c 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 2478aaabb7998fe42c09ba44ab6de2b60092653a..56e30c79d1f1a1b02ec180a6472fade841ab0f17 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 9bfcfa9b065d7f0df2664796cffedc891b7b35bf..867ac38a944ff0ba741d07e36e90be33ae2846ff 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 1f6ee7cfffda7e1d8f145a2264a9570b1e68d2a1..6aec1c0753a2f64044cd9bcdba682e35ca51073a 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"; - } + (optionalAttrs cfg.exportConfiguration + { + "X11/xorg.conf".source = "${configFile}"; # -xkbdir command line option does not seems to be passed to xkbcomp. - { source = "${cfg.xkbDir}"; - target = "X11/xkb"; - } - ]) + "X11/xkb".source = "${cfg.xkbDir}"; + }) # localectl looks into 00-keyboard.conf - ++ [ - { - text = '' + //{ + "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]" + ''} + + ${cfg.screenSection} + ${driver.screenSection or ""} + + ${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] + )} - Section "Screen" - Identifier "Screen-${driver.name}[0]" - Device "Device-${driver.name}[0]" - ${optionalString (cfg.monitorSection != "") '' - Monitor "Monitor[0]" - ''} - - ${cfg.screenSection} - ${driver.screenSection or ""} - - ${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] - )} - - EndSection + EndSection + ''} '')} ${xrandrMonitorSections} diff --git a/nixos/modules/system/activation/no-clone.nix b/nixos/modules/system/activation/no-clone.nix index 7f4584435266ba1a50587e6b828a5230e8bcbbaf..912420347dc0f385a7d78b6a17574488cd2b1065 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 641cf9faadc9794414a0374bc743aa89e6023e7d..b82d69b3bb85374093fde4d932e71750b53a29e3 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 f67d290056169216f7b3d8599155c01c23e8891c..f6739977fa4f1f08e8bf8f27921225ae8acade02 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 = []; - description = '' - Additional configurations to build. - ''; - }; - - nesting.clone = mkOption { - default = []; + specialisation = mkOption { + default = {}; + example = lib.literalExample "{ fewJobsManyCores.configuration = { nix.buildCores = 0; nix.maxJobs = 1; }; }"; description = '' - Additional configurations to build based on the current - configuration which then has a lower priority. + Additional configurations to build. If + inheritParentConfig is true, the system + will be based on the overall system configuration. - 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 cb8fc957a990b03b03d67b9c6f26ed684f1b425e..0ab6e626b340eece70790055a6584fb1e20b7780 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 - - # Bring up all interfaces. - for iface in $(ls /sys/class/net/); do - echo "bringing up network interface $iface..." - ip link set "$iface" up - done + + 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 - # 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 2d3e3b05c9807538dd8d4b2f51136602203985a5..60760487a1d24804e1f5e62139abc06c44fed064 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; - description = '' - RSA 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.hostDSSKey = 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 = '' - 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! + Specify SSH host keys to import into the initrd. + + 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.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 8a309f3bc5fe130d5d1803b44efd63f8fbf301a9..43871f439f7f38d834e6adc3015a450052bb0ab4 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) { - - system.build = { inherit kernel; }; - - system.modulesTree = [ kernel ] ++ config.boot.extraModulePackages; - - # 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" ]; - - boot.kernel.sysctl."kernel.printk" = mkDefault config.boot.consoleLogLevel; - - boot.kernelModules = [ "loop" "atkbd" ]; - - 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. - - # Some SATA/PATA stuff. - "ahci" - "sata_nv" - "sata_via" - "sata_sis" - "sata_uli" - "ata_piix" - "pata_marvell" - - # Standard SCSI stuff. - "sd_mod" - "sr_mod" - - # SD cards and internal eMMC drives. - "mmc_block" - - # 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" - - ] ++ optionals (pkgs.stdenv.isi686 || pkgs.stdenv.isx86_64) [ - # Misc. x86 keyboard stuff. - "pcips2" "atkbd" "i8042" - - # x86 RTC needed by the stage 2 init script. - "rtc_cmos" - ]; - - boot.initrd.kernelModules = - [ # For LVM. - "dm_mod" - ]; - - # 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"; + 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. + + # Some SATA/PATA stuff. + "ahci" + "sata_nv" + "sata_via" + "sata_sis" + "sata_uli" + "ata_piix" + "pata_marvell" + + # Standard SCSI stuff. + "sd_mod" + "sr_mod" + + # SD cards and internal eMMC drives. + "mmc_block" + + # 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" + + ] ++ optionals (pkgs.stdenv.isi686 || pkgs.stdenv.isx86_64) [ + # Misc. x86 keyboard stuff. + "pcips2" "atkbd" "i8042" + + # x86 RTC needed by the stage 2 init script. + "rtc_cmos" + ]; + + boot.initrd.kernelModules = + [ # For LVM. + "dm_mod" + ]; + }) + + (mkIf (!config.boot.isContainer) { + system.build = { inherit kernel; }; + + system.modulesTree = [ kernel ] ++ config.boot.extraModulePackages; + + # 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" ]; + + boot.kernel.sysctl."kernel.printk" = mkDefault config.boot.consoleLogLevel; + + boot.kernelModules = [ "loop" "atkbd" ]; + + # 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 = + { "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"; - }; - - isNo = option: { - assertion = config: config.isNo option; - message = "CONFIG_${option} is not no!"; - configLine = "CONFIG_${option}=n"; - }; - - isModule = option: { - assertion = config: config.isModule option; - message = "CONFIG_${option} is not built as a module!"; - configLine = "CONFIG_${option}=m"; - }; - - ### 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"; - }; - - # True if no or omitted - isDisabled = option: { - assertion = config: config.isDisabled option; - message = "CONFIG_${option} is not disabled!"; - configLine = "CONFIG_${option}=n"; - }; - }; - # 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")); + 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"; + }; + }; - # 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; + lib.kernelConfig = { + isYes = option: { + assertion = config: config.isYes option; + message = "CONFIG_${option} is not yes!"; + configLine = "CONFIG_${option}=y"; + }; - }; + isNo = option: { + assertion = config: config.isNo option; + message = "CONFIG_${option} is not no!"; + configLine = "CONFIG_${option}=n"; + }; + + isModule = option: { + assertion = config: config.isModule option; + message = "CONFIG_${option} is not built as a module!"; + configLine = "CONFIG_${option}=m"; + }; + + ### 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"; + }; + + # True if no or omitted + isDisabled = option: { + assertion = config: config.isDisabled option; + message = "CONFIG_${option} is not disabled!"; + configLine = "CONFIG_${option}=n"; + }; + }; + + # 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 9a4db84f7b731ad3cbc314a876ccabb3b9b1a33e..c775632a4aa09e74946f7fae7c881218a3f0dbcc 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 a09c5dc4761803958f947332aa91b4276786ba1d..8df18cbd90136f71b14d629f54ecad99419adfb1 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 94e5a14174b0d8e7061cc5d7a6b0f09921261d1e..71e50dd0577efe12719935702471f3a541b88524 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 { - - 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"; + config = mkMerge [ + (mkIf (cfg.enable && efiSupport) { + assertions = [ + { + assertion = cfg.params == []; + message = "Parameters are not available for MemTest86"; + } + ]; + + boot.loader.grub.extraFiles = { + "memtest86.efi" = "${pkgs.memtest86-efi}/BOOTX64.efi"; + }; - }; + 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 08d4ab14c9ca299052a65ff2787e9b22e24c931f..6f48d2539aceefd7389c192f232444b3d762bbbc 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 0bb8396a44fc813a58553af1d3a6ed4da5a2a8ff..31f1e22cda32c1083212d547eeb0d21b45f0582b 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 58d914d08106a8f6ebcdf98fc01b7d4f8fe259e7..3078f84f6e920e8ab20f4e7a96f8597a7abd6a0d 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 = { + wantedBy = [ "multi-user.target" ]; + restartTriggers = attrNames 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-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-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; - }; + 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 f520bf54ad1bd743c38bdb7b6ce3e89874b0634d..607aec87f01e5a974e6371233bbd893378ec04f5 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 4c2d130d5a5d7b205f62c77ab1b871986f927097..dfd158e2d75f49c213d8a86417beeed75634a310 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 28ad4f121bbee3515d0b216e27ca356ee21a7447..fa109394fedbe6ab316f7ab31e45273e76ed50ae 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 3ddd45b1348201d3252605df0b01214891fe7249..06ea5ee49f7279b06805407e4ed58027e8fd51f8 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 7951dcc816a3a41ceca8840a2dffec82a64c1aba..7f207e6c7ef49badb2af45cf4333c21589d0b55e 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 57ade28809625663746dc0d3de63425e28f5f681..1f4d54a1ae205b5115eebe16142157d7ae8a587b 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 7fe066991918792a74b11d5cf8c53373537d1931..e70004e643e10cdcd902a3332273d3827a1e237a 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 2c9231f55236359090bfbaf8ece75542d533beb8..bc0933f16fec4cf503532898ca5ee4f7001369c0 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 688c77cb22d15845edc1de654ef625a0d9f939d4..0ade74b957a0cf53cb78a7f7e18bc381c1098e3b 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 48be18c710212b1e06a027c25120ed865800b5d9..f64493e1a3c78e6029afe777bec1f98117ccb1be 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 d14ba98ec48bb8c45bf1a8cbb7264168fd62ef5a..43347161a84c6a59d782c4005efd65be0e29a0bb 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 1726d05115ea8600ecd85c2c98abc76c79b8ef81..9720d90217c665384cfccd0f6fd7f76cdae63da0 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 e25dc0c0b39a8a8ea117e0247ffbe3e479b5c3b3..23e1e611a71e93ea7a0e08b521b7e026d192a406 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 31e2ed1cd1eaed569b76a73c97e94af92ce4b028..44677d417ead01efd0e90ee96e1c819b732f473c 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 609831506e16d346d7c67ba145a9a4c1d24924cc..e8064f9fa80c6c653a61c4fc1ac16e6d3f47d54e 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 17d5e33769086e9080481ee8e83fafbc28f5c783..99a9f979068daad2651ddc1539b02945440be8a6 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 03239991b95a57e19fe396218928a58c0063e96c..8efa177e30d165c77466ca9367023ad16a928345 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 e91dd72ff5d430ad822f3c9fa1fe5b5de0b4cf86..21fd58e5c9024d8385d2a04c56b8b2edcaaaea84 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 09678ce9ea7168076bfd2371d2ec5cb979989bd2..dad211ef55bae12ef616806b219ac00e265338a9 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 59b0943f591f1effafcc914062390c9c4fb065f2..5ab990a3d7cc378e242479afaa63aecd5991e8fc 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 0f1f052880c5ffeca2478871bb84345c97570cdc..adc2810a993989014918523f1debe53d3c7176d0 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 0000000000000000000000000000000000000000..be2f12b7d0147488f6d8648f51c8170081563417 --- /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 36ef6d17df69df166b1c06fa702a45756eb36517..0902d2dc2cb092b5eef774d9224f0c099efd5ed7 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 52d852894ce5ff29bc453c766b514f5d93d34e67..4f22099443f438ab1ac5793f1a781797b02f2568 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 9b5adaf08249e4020a197bfbe90f8210d37f6d56..f484d5ee59a88e446719598edd55b9ddb80146a2 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 b4934a86cf56ce2e9aae7d2d42cdf42e59dc2988..de48d3a780e270b25eafcf9d9bd1432ef84e6254 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 6b8ad83661fe761d10f4636efc3c4c33f0211e0a..c6a3ceddc3e035e0778447170ed93aac6c9eda0c 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 ab65523592d7a84f28e8d906da0b8f7152aece9c..788b4d9d9761d3b1bb6e13731c50947429fdf919 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 6fd54c527580ca76b46f40bce0a1f1315d09f203..7f0af9901b9b66c2ca469b6391dea67cf94ffada 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 - - ${cfg.domains.extraConfig} - ''; - target = "default/xendomains"; - } - ] - ++ lib.optionals (builtins.compareVersions cfg.package.version "4.10" >= 0) [ + { + "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} + ''; + } + // 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 ca9c6f9a7f911e1cdb9591d5a7719ac875c247ca..87783c6609535b13eca8f0468ce38edf2423ed25 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 74c16e990f35881e400a1ab01c64c809dff80b4c..6da2c59cedd49d0d74f8d61820550e61b59d39a9 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 f40b5fa9bd7f70aacc7848341547059eedcafb8c..6107f35297159bf804361c4226e6b161b7588ccd 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 b8e1dac0e89e8aead10fcf14e34cd6c1c084531f..3e2061d7e42fd31c68be35f83c71627e88c3f073 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 6bd315ff1eaa427b9477384bb4ff84ef66516041..693f02962f45217e449948b37d7443a30543cc79 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 + ]; + }; + + 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" ]; + }; + }; + }; - acmeStandalone = { config, pkgs, ... }: { + acmeStandalone = { nodes, lib, config, pkgs, ... }: { imports = [ commonConfig ]; + networking.nameservers = lib.mkForce [ + nodes.dnsserver.config.networking.primaryIPAddress + ]; 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"; - }; + security.acme.certs."standalone.test" = { + webroot = "/var/lib/acme/acme-challenges"; }; - systemd.targets."acme-finished-standalone.com" = {}; - systemd.services."acme-standalone.com" = { - wants = [ "acme-finished-standalone.com.target" ]; - before = [ "acme-finished-standalone.com.target" ]; + 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"; - - nesting.clone = [ - ({pkgs, ...}: { + security.acme.server = "https://acme.test/dir"; - 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.test.target") + client.succeed( + "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-b.example.com.target") + webserver.wait_for_unit("acme-finished-example.test.target") client.succeed( - "curl --cacert /tmp/ca.crt https://b.example.com/ | grep -qF 'hello world'" + "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 6413895c4c5efbeeba6bb90b6f973dbb8e65bcaf..b0c9c7bc2258d5389aa5a04772e3787c20b74e00 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 e5be652c711248378342be5806155acc79658408..0a97d5556a2692395175c45eb8e982fc757ce75a 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 ]; - - virtualisation.vlans = [ 1 ]; - 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} - ''; + nodes = { + tracker = { pkgs, ... }: { + imports = [ transmissionConfig ]; + + 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; + virtualHosts = { + "torrentserver.org" = { + adminAddr = "foo@example.org"; + documentRoot = "/tmp"; }; }; + }; + services.opentracker.enable = true; + }; - 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; - }; + 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} + ''; + }; + }; - 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; - }; + 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; }; - testScript = - { nodes, ... }: - '' + 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 2adc2ee1eeea3fba543ee4c4925b9cdc4e67508d..0000000000000000000000000000000000000000 --- 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 f5c8c4863b6f16b5517cae4b2d0312c7f0305022..0d979dc2d0540be4aa44811afd37e5081aaea582 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 & \ - ")); - - # 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 \ - ")); - - # 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")); - + gitrepo.wait_for_unit("git-daemon.service") + gitrepo.wait_for_unit("multi-user.target") - # 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 \ - ")); + 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") + 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") - # 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("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") + 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 0000000000000000000000000000000000000000..a6f33e0143c5ee43d933473f7cb1b254ba64e00e --- /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 fc10df0c79b549e90a38e7c97cc667832ee6685c..144d83179a16d698df557d12e7297c514e066f44 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 0000000000000000000000000000000000000000..a6f73e00c066e770a4ec3e34b58347d8d1b2ad0c --- /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 52a0b5caf23543ca4ade5cfaca7ad74edd9db38d..22fe5cada4800a3ecf0d60dc30b34619a4d947ff 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 da92a73e14d9314dbce281f212362e3d1109edf2..01c4b41384513acae4b47675ce8406b081f7761f 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 cb69f35e862f8eae32d70878640fb278a719caec..ef32f54400e309b955384a53a1d81ff8c54b2e0e 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 af5db2a3dbe1f1d57494fff99355ad3e458b7476..fc5d3a5c52fe5e6afd0432ebd2a931ef739ff656 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'"; - } - - 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); - } - } - } - - 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); - - last; - } - $machine->sleep(1); - } - }); - return $ret; - } - - 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; - } - - $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 - ''}"); - - createAndWaitForNewWin; - $machine->screenshot("empty_windows"); - closeWin; - - $machine->screenshot("startup_done"); - - 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->screenshot("sandbox_info"); - - $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 - ''}"); - - 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->sleep(1); - $machine->succeed(ru "${xdo "find-window-after-copy" '' - search --onlyvisible --name "sandbox status" - ''}"); - - 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 - ''}"); - - 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("afer_copy_from_chromium"); - }; - - $machine->shutdown; + def ru(cmd): + return "su - ${user} -c " + shlex.quote(cmd) + + + 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 + ''}" + ) + ) + + + 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 + + retry(try_close) + + + 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 + + + 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" + + + @contextmanager + def test_new_win(description): + create_and_wait_for_new_win() + with machine.nested(description): + yield + close_win() + + + machine.wait_for_x() + + 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 + ''}" + ) + ) + + create_and_wait_for_new_win() + machine.screenshot("empty_windows") + close_win() + + machine.screenshot("startup_done") + + 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" + ''}" + ) + ) + + machine.succeed( + ru( + "${xdo "submit-url" '' + search --sync --onlyvisible --name "new tab" + windowfocus --sync + key --delay 1000 Return + ''}" + ) + ) + + machine.screenshot("sandbox_info") + + 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 + ''}" + ) + ) + + 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 496283fddc7b0e389664e0364dcb6e915dbce527..d0cc5e19837c663e3775dedd8f92a27831cff97d 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 0000000000000000000000000000000000000000..80893da025244e329484464492eb8a059b92c0af --- /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 110a2520971d0b588352b3eb30dea2c292f1094e..1a0ee882572ce0327eb4c2e098f8626558f68d68 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 e7ac2bae46bd2537076bdf112adb62a9ffff3937..2474019cbac3b25755fbafca3a6e3ee4ce16bbe2 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 0000000000000000000000000000000000000000..fd537c3260f1d808acd9afc6e1af2a5b510812cf --- /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 1068a344e0cfb76eb3baee0ddb48628970f77cc4..2c21a8d51673789f0f46f034e8d9e75b7e314542 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 1e69b63191a70b9ed49a904dfc4b3bf52cc64bbf..ba087bb600905f1d3e42f148de317a534ae205e7 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 c530de817bf2d9e97679365be1d03ec59a26e732..0000000000000000000000000000000000000000 --- 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 ca4f71ae688a49dc5d81dc890dcb74fd47edf435..0000000000000000000000000000000000000000 --- 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 6be8d1d18e62214d915124c269fcf372295cf29e..09a74de20faaef6c2b9806257fc9c403a5b818c2 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 9cd531a1f96c8db94b686bedd6ce5c660bfbe315..a57ee2d59ae36e97f1508b5a7fe2d92797258b4b 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 5ad0ac20fac85dc7a9c05c8750702e6706961159..0d76a0e972ff51315496aec8faf2b7d51deeb730 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 61df74042cb31e606259898a75299256187b84e2..c4f2002918fc7ce71eaada78cbdc34e230f43afa 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 0000000000000000000000000000000000000000..741fa448f680a933e2ffd6af154194a30ebe914f --- /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 37689c3d91372199e08d8a6a4639fec44baa8c58..3cf179a38216419d20a9a46f4b29e237483966fc 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 98153d5c9047051d7f24fb31d38dd6fc0342d6a1..b614d912a9f4ed45d16ffbf4ae344e5225f6d4a2 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 972552735202044986a48159090ae69cc4094a43..0e318a52d9f187a2cded9e4259a1d0358c785b15 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 9ab1a71f3314aa6949e9281e764c736e96daeb35..51b472fcf9ce5e6bf837ea9cafb8aad0b7510ca1 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"); - - # 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->succeed("docker run --rm ${pkgs.dockerTools.examples.bash.imageName} bash --version"); - $docker->succeed("docker rmi ${pkgs.dockerTools.examples.bash.imageName}"); - - # 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}"); - - # 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"); - - # 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}'"); - - # 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"); - - # 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}'"); - - # 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)\" ]"); - - # 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"); - - # 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}"); - - # 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 ]'); - - # 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"); - ''; + testScript = with pkgs.dockerTools; '' + unix_time_second1 = "1970-01-01T00:00:01Z" + + docker.wait_for_unit("sockets.target") + + 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", + ) + + docker.succeed("docker run --rm ${examples.bash.imageName} bash --version") + docker.succeed("docker rmi ${examples.bash.imageName}") + + 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}", + ) + + 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", + ) + + 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}'", + ) + + 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", + ) + + 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}'", + ) + + 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" + ) + + 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", + ) + + 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}", + ) + + + 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 0000000000000000000000000000000000000000..38bde10f47edc88e4479f5b8144f648bda1dc23f --- /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 c19850f418bc16d2906dc22f025799077e945339..bcbe234fd805209f17006c4c810779e9a1e04609 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 b33d98b85d6976c1e5a098bd35f1241766a5603d..d3dc6dde13592e3ba0b60ea555016b04fa218e4e 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 + + + 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() - # Wait until elasticsearch is listening for connections. - $one->waitForUnit("elasticsearch.service"); - $one->waitForOpenPort(9200); + 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"); - - # 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"); - - # 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"); - - # See if logstash messages arive in elasticsearch. - $one->waitUntilSucceeds("${totalHits "flowers"} | grep -v 0"); - $one->waitUntilSucceeds("${totalHits "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"); - - '' + 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"); + one.wait_until_succeeds( + "curl --silent --show-error '${esUrl}/_cluster/health' | jq .status | grep -v red" + ) + + 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") + + 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" + ) + + 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") + + 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" + ) + + 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 0000000000000000000000000000000000000000..7252d19e4e654a433d19a9b7e9ef93ed2fc5cd70 --- /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 56ddabbae7714dbc38379939a6013f8f7484d351..7071baceba7399b24df41f6ff39e06d8e354b96e 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 9991c5eaa329ac8c5871532b20a635e18a8f1faf..7615732c20cac9c32ba567cb5b5e04bab9266013 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 0000000000000000000000000000000000000000..349d0e7bc6f0dff7426bb2e6f4413b5e0e3324a8 --- /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 0000000000000000000000000000000000000000..6cee64a20095a09d87d32cd881c13c57beebb1a3 --- /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 0000000000000000000000000000000000000000..b610caf06fb2a80214c3896cb1678352ab9051c5 --- /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 8f9cb8973d51e4f4001a4724432f07c9767caf74..cb07bc09511dd8d880a54e556bb5f01e491f8e1c 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 aa03501f6a55046bc239a90246afb7172c075bc6..b59badcd5de40244ae549d26e470de21d371db0f 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}'"; + + # 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 = su "${gdbus} ${eval} Main.layoutManager._startingUp"; + + # Start gnome-terminal + gnomeTerminalCommand = su "gnome-terminal"; - # wait for alice to be logged in - $machine->waitForUnit("default.target","alice"); + # 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") - # Check that logging in has given the user ownership of devices. - $machine->succeed("getfacl -p /dev/snd/timer | grep -q alice"); + with subtest("Wait for GNOME Shell"): + # correct output should be (true, 'false') + machine.wait_until_succeeds( + "${startingUp} | grep -q 'true,..false'" + ) - $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"); + 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 ab363efb6a197b37486d60d04e97f10e0ac27b12..17e72c5f6510314b44ca526ddd7d402188f38755 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"; - # Hopefully gnome-terminal's wm class - wmClass = "${gdbus} ${eval} global.display.focus_window.wm_class"; - in '' - # wait for gdm to start - $machine->waitForUnit("display-manager.service"); - # wait for alice to be logged in - $machine->waitForUnit("default.target","alice"); - - # 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"; - # Wait for the wayland server - $machine->waitForFile("/run/user/1000/wayland-0"); + # Start gnome-terminal + gnomeTerminalCommand = su "${bus} gnome-terminal"; - # Wait for gnome shell, correct output should be "(true, 'false')" - $machine->waitUntilSucceeds("su - alice -c '${startingUp} | grep -q true,..false'"); + # Hopefully gnome-terminal's wm class + wmClass = su "${gdbus} ${eval} global.display.focus_window.wm_class"; + in '' + 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") - # 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'"); + with subtest("Wait for GNOME Shell"): + # correct output should be (true, 'false') + machine.wait_until_succeeds( + "${startingUp} | grep -q 'true,..false'" + ) - # 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 27a87bdbb9f29177fb4c8a730410865a5c8f39e8..71776a94cbd644ba979dbd5a010a910540608477 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 0000000000000000000000000000000000000000..7fa479ed2c42e42a990d8ed2b53d5661a94e3ce5 --- /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 6277ebb4933fdedfff8595de1048e6a0eb471433..3ca19cb0971c777ba65ff6054f000e5a3ceac42d 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 b6fed3e2108f1f1ea38eadd22d2ef24dbc82db42..79f34b07faf4b5d1109177e79d1093b23b79f028 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 cbf76f9e558774638fba800b48bd69f8950164ca..5ed0dfcf9ab8fd9b9d3b527556913817be190f39 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 1061202564125a7e2a28d81bdac89f2d285c0e89..904d12619d70e00764f542411b7e9c5b1a85df78 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 6b53914fd8598d5f0c9e7964c878016cdf83979f..80dca43f1f3df6688464635e52a8ac54a14dbf5c 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"); - - # 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"; + 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") - # 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 0000000000000000000000000000000000000000..f612717dc968656a188a3d67bfe71efd904116d4 --- /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 0000000000000000000000000000000000000000..cf74acfd67aab9e2c15a95bb8073d88f1171e908 --- /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 6ca05a2c7797eda9fb02a140f7e733f7cb83266f..2336e4033d6dcef9b0e59d394c5a6a8bbab15505 100644 --- a/nixos/tests/hydra/default.nix +++ b/nixos/tests/hydra/default.nix @@ -3,98 +3,57 @@ , pkgs ? import ../../.. { inherit system config; } }: -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"]; - }; - } - ''; +with import ../../lib/testing-python.nix { inherit system pkgs; }; +with pkgs.lib; - 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} - ''; - }; +let - callTest = f: f { inherit system pkgs; }; + inherit (import ./common.nix { inherit system; }) baseConfig; hydraPkgs = { - inherit (pkgs) nixStable nixUnstable; + inherit (pkgs) hydra-migration hydra-unstable; }; - 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"'); - ''; - }))); + 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"' + ) + ''; + }; in - tests + +mapAttrs makeHydraTest hydraPkgs diff --git a/nixos/tests/i3wm.nix b/nixos/tests/i3wm.nix index 126178d118790feb038dda85564fe5ac38c32a97..b527aa706ad2190223dad28834a3263d061fbbbd 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 0000000000000000000000000000000000000000..7df0ea0b691fc84df43d0310355cd1660b3b9444 --- /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 749d7857a13411d0913b4396430e2d2bf0b2888a..0000000000000000000000000000000000000000 --- 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 73d9f938e226c9a74a178f962a7f2f04d7788f5a..017de6882081def6696658f788963dddbbfff3cd 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 af340535f0a3841d2b9ed2abbd60f64118f924da..0000000000000000000000000000000000000000 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 385c625522aa1f074a5baae566bc77bf7a50b9cd..0000000000000000000000000000000000000000 --- 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 0183e12d7a88f4627fdfae5fa81ca0299e84ba98..3d7978890ab08a86e34aa2a55fa885eadf6515b4 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 0000000000000000000000000000000000000000..f914b3f712fc56ab212b53cb9055e1291b5c77a2 --- /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 0000000000000000000000000000000000000000..40de4a8ac6027f64ac85f687bea7049467b428a2 --- /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 816d65435fd70a09789c6f285764238161e4f252..0000000000000000000000000000000000000000 --- 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 5b72b8085f2707482fa8ae70d2b12b7a0525c1a0..0000000000000000000000000000000000000000 --- 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 0000000000000000000000000000000000000000..f1e29459b7a339cbd1bb3ae52f59ca598500897d --- /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 0000000000000000000000000000000000000000..3aa1587e1dce946181dadbfff40db9505b35310c --- /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 4796ff9b7c8dd4951970727d37c9a4f8740f66d5..9c35b7305768f889eb58191832a211a9148323f3 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 8e997ee4aeb9b5fda4c646634766eaaf5c4c3424..b6bdfea2277010e097663825353e75bc71a8bd18 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 b9f761e99582e5b9388fe362ed6b0762216408d0..6a0ceb57dda489ccfa2fe6d98f01489bd13d0536 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 0000000000000000000000000000000000000000..7a06cf792bdd16d7346cf4f431a6b4ff8e8c1ff3 --- /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 0000000000000000000000000000000000000000..41493a730890a15a8d6213361f8a34ddf5d175ea --- /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 0000000000000000000000000000000000000000..d4e214c41988c4337e5aaf10f6f30d8ebf452a86 --- /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 b16008ff4addb4a64f6aa2ef17bfc8d48dd4b938..90529d37ee0faf4f027c5a8cfd4da292a11a7321 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 eb1f4f192dd11db946b94a3bab634cd092c0aab3..c5abd458ec9a9d11431f07fe67b2b7be0bc410e8 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} - # Partition the disk. - ${createPartitions} - # Create the NixOS configuration. - $machine->succeed("nixos-generate-config --root /mnt"); + def create_machine_named(name): + return create_machine({**default_flags, "name": "boot-after-install"}) - $machine->succeed("cat /mnt/etc/nixos/hardware-configuration.nix >&2"); - $machine->copyFileFromHost( - "${ makeConfig { inherit bootLoader grubVersion grubDevice grubIdentifier grubUseEfi extraConfig; } }", - "/mnt/etc/nixos/configuration.nix"); + machine.start() - # Perform the installation. - $machine->succeed("nixos-install < /dev/null >&2"); + with subtest("Assert readiness of login prompt"): + machine.succeed("echo hello") - # Do it again to make sure it's idempotent. - $machine->succeed("nixos-install < /dev/null >&2"); + with subtest("Wait for hard disks to appear in /dev"): + machine.succeed("udevadm settle") - $machine->succeed("umount /mnt/boot || true"); - $machine->succeed("umount /mnt"); - $machine->succeed("sync"); + ${createPartitions} - $machine->shutdown; + 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", + ) + + with subtest("Perform the installation"): + machine.succeed("nixos-install < /dev/null >&2") + + with subtest("Do it again to make sure it's idempotent"): + machine.succeed("nixos-install < /dev/null >&2") + + 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"); - - ${if bootLoader == "grub" then - ''$machine->succeed("test -e /boot/grub");'' - else - ''$machine->succeed("test -e /boot/loader/loader.conf");'' - } - - # Check whether /root has correct permissions. - $machine->succeed("stat -c '%a' /root") =~ /700/ or die; - - # 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"); - - # Check that the store is in good shape - $machine->succeed("nix-store --verify --check-contents >&2"); - - # 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"; - - # 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"); - - # 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"); - - # Check whether nixos-rebuild works. - $machine->succeed("nixos-rebuild switch >&2"); - - # 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; + 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")'' + } + + with subtest("Check whether /root has correct permissions"): + assert "700" in machine.succeed("stat -c '%a' /root") + + 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") + + with subtest("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") + + 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") + + 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", + ) + + with subtest("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 + + 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"); - - # 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"); + '' + + optionalString testSpecialisationConfig '' + # Reboot Machine + machine = create_machine_named("clone-default-config") + ${preBootCommands} + machine.wait_for_unit("multi-user.target") - # We should find **not** a file named /etc/gitconfig - $machine->fail("test -e /etc/gitconfig"); + 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") - # Set grub to boot the second configuration - $machine->succeed("grub-reboot 1"); + with subtest("We should **not** find a file named /etc/gitconfig"): + machine.fail("test -e /etc/gitconfig") - $machine->shutdown; + with subtest("Set grub to boot the second configuration"): + machine.succeed("grub-reboot 1") - # Reboot Machine - $machine = createMachine({ ${hdFlags} qemuFlags => "${qemuFlags}", name => "clone-alternate-config" }); - ${preBootCommands} + machine.shutdown() - $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"); + # Reboot Machine + machine = create_machine_named("clone-alternate-config") + ${preBootCommands} - # We should find a file named /etc/gitconfig - $machine->succeed("test -e /etc/gitconfig"); + 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") - $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, ... }: - - { imports = - [ ../modules/profiles/installation-device.nix - ../modules/profiles/base.nix - extraInstallerConfig - ]; - - 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"; - - boot.loader.systemd-boot.enable = mkIf (bootLoader == "systemd-boot") true; - - 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; - [ 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 ]; - - nix.binaryCaches = mkForce [ ]; - nix.extraOptions = - '' - hashed-mirrors = - connect-timeout = 1 - ''; - }; + machine = { pkgs, ... }: { + imports = [ + ../modules/profiles/installation-device.nix + ../modules/profiles/base.nix + extraInstallerConfig + ]; + + 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"; + + boot.loader.systemd-boot.enable = mkIf (bootLoader == "systemd-boot") true; + + 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 + + # 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 + ''; + }; }; 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-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-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", + ) + ''; + }; - clone-test-extraconfig = { extraConfig = - '' - environment.systemPackages = [ pkgs.grub2 ]; - boot.loader.grub.configurationName = "Home"; - nesting.clone = [ - { - boot.loader.grub.configurationName = lib.mkForce "Work"; - - environment.etc = { - "gitconfig".text = " - [core] - gitproxy = none for work.com - "; - }; - } - ]; - ''; - testCloneConfig = 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; + }; + + 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 + "; + }; + }; + ''; + 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", + zfsroot = makeInstallerTest "zfs-root" { + extraInstallerConfig = { + boot.supportedFilesystems = [ "zfs" ]; + }; - "mkswap /dev/vda1 -L swap", - "swapon -L swap", + extraConfig = '' + boot.supportedFilesystems = [ "zfs" ]; - "zpool create rpool /dev/vda2", - "zfs create -o mountpoint=legacy rpool/root", - "mount -t zfs rpool/root /mnt", + # 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"; + ''; - "udevadm settle" - ); - ''; - }; + 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 0000000000000000000000000000000000000000..41fb2e7778d42bdca910a609acf313a7f1cb1a4a --- /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 0000000000000000000000000000000000000000..0f5af7f718a403ee872f384e241f5947f7105fbe --- /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 0000000000000000000000000000000000000000..5bda6f493f0e31a766d19e3e061eb143e3200c99 --- /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 48ca98da8fa1fbe6abfaf2636f9065253009957f..d29c802b47b4244cba40145742ae00458916f9e7 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 0000000000000000000000000000000000000000..d0bf9d46520033ad836a93184008e925049ab068 --- /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 b13b4131091fbd68c8cfa11082d99200f1dfaf5c..ec0cd9796b0e2a488266303ac1b9eddb9a3bd4fb 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 2b4c1ab7b052920690c866d31cb07f03c67b7982..09d5d2a6c9e140cf2c8a5267383064b8d5eb8df4 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 = '' - - 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} & )); - - 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"); - } - - # wait for reader to be ready - $machine->waitForFile("${readyFile}"); - $machine->sleep(1); - - # send all keys - foreach ((${send})) { $machine->sendKeys($_); }; - - # wait for result and check - $machine->waitForFile("${resultFile}"); - $machine->succeed("grep -q 'PASS:' ${resultFile}"); - }; - }; - - $machine->waitForX; - - mkTest "VT keymap", "openvt -sw --"; - mkTest "Xorg keymap", "DISPLAY=:0 xterm -title testterm -class testterm -fullscreen -e"; + import json + import shlex + + + 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}") + + # set up process that expects all the keys to be entered + machine.succeed( + "{} {} {} {} &".format( + cmd, + "${testReader}", + len(inputs), + shlex.quote("".join(expected)), + ) + ) + + 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" + ) + + # wait for reader to be ready + machine.wait_for_file("${readyFile}") + machine.sleep(1) + + # send all keys + for key in inputs: + machine.send_key(key) + + # wait for result and check + machine.wait_for_file("${resultFile}") + machine.succeed("grep -q 'PASS:' ${resultFile}") + + + 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 0588cf86ac09e50178087be26f760929ddcbe51d..8bab917a351e39bcb37ab518a0ed600ffd97c00c 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 7d7926309c95bdded33635cc6a2f990003c297de..be6ebce9e0516900a0eabe66a68cab5e5f91a066 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 f01cf6988eef773330136305f1538b2b0f054777..be195b5139352bc154e3e48f361799029c8d0052 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 46bcb01a52652c080f1fb19414aa209e9768b8f9..638942e15407d39b5f086a3967f0a6864100799f 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 ad66ada106b711181372b12a8996e180b1eccb42..7228fcb833155a787606b03451253ca2fdc40f03 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"; + }; }; + # limesurvey won't work without a dot in the hostname + networking.hosts."127.0.0.1" = [ "example.local" ]; + }; + testScript = '' - startAll; + start_all() - $machine->waitForUnit('phpfpm-limesurvey.service'); - $machine->succeed('curl http://example.local/') =~ /The following surveys are available/ or die; + 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 53074385a652d35ecf95899eb28dba70d336e6e6..198171082d880f0c2923bbcd290cbb414f1d8547 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 0000000000000000000000000000000000000000..144a07e13492f670b176450a0b40f06fdc15e06c --- /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 fca53009083a4128df8eb20fc9ed10311e726109..f3623aa3c094d06e5765a0e94fa5e0e406c2611d 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 ca28bc31cf1c2564fe1f6dfcfcbba4270c7488f2..17260ce640676def13ea8e481ec5049886fdbc5e 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 9ebf84eed2325503176a73d6733247fc2b490aea..a637ec4bfc00fd2afb11ab4227ebe2327962ba9d 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 ]; + }; + + nodes = { + node = {...}: { + environment.systemPackages = with pkgs; [ + mongodb-3_4 + mongodb-3_6 + mongodb-4_0 + ]; + }; }; - testScript = '' - start_all() - one.wait_for_unit("mongodb.service") - one.succeed( - "mongo -u nixtest -p nixtest nixtest ${testQuery} | grep -q hello" - ) - ''; -}) + 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 895b7e2014c8586360b9a31c299053236f4de381..60aef586ad5c9e8b9cdb69256cc297afe91dea43 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 652d49a24b1cad89806bad15a468ca68a7de3324..e9b6d14c6a1fa517db2f173d27d4322de1e1e4a1 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 2c0d212c2f1daf04a4f61f5163d818faa46119a7..11c1dabf9360ef402ee33b04c6118c380ea378e0 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 0000000000000000000000000000000000000000..6f5d444728788dcba10d8992adf718fe991e764b --- /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 6388b67a6e403b8f1bdfd7894fdf2deb07b65d35..0000000000000000000000000000000000000000 --- 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 8dd5eafb0977cf41d3fea596e02f0bb945dc9fb1..4ddc96e8bc22440fc86c9b78a936c9a7206d0d36 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 ab908c96e5eea233650261cfb3fd48ecd81b19e9..bae9c66ed61a2828b17ba924545b9f677c5801cc 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; - - # 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'"); - - # 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'"); - - # 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'"); + from typing import Dict, Optional + + + 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"} + + 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 + + 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 9448a104073f7a501e64d9875bce90b79fbc2daf..3d8ab761a4464bc58496a9a8a732551547bc24f3 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() - - 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() + 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", + ] 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 75862feb202d25721d802a9c4ca2f4ba652160a5..92ac5c46e8f03b3c64f8f312d37e947e7dd24c66 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 b9ba5888187d51c1b43bd89eff6576c767b63318..8db630be893af2e53dafeb8619f1adea89f1aadb 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 324853350af6ebf39e4712c0fbede642dbf68808..95219cac9be8e613b8c55fa32ea9a8cc6565ae9b 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 a1a09ee0f45c84ae9cbf8ab987e7b6030bec85de..c49ebddc2fddf25b928ab257d63810925e2fe7d4 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 0000000000000000000000000000000000000000..63ab2e0c6c2753bd4dccbe853ef357e6b0aded6c --- /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 0000000000000000000000000000000000000000..432913cb42d26f80f87c6d5b85e432a6f5bf0d05 --- /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 e19992cb6bf7583b16b3c69c1b003684af718698..8834fc31c387b58107476beefa299721b15b855d 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 d0b7306ae83b7ecb9778b55ba08d934e58727c81..18822f095688b9018e87888f9cbdbc0327d03581 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" - ''); - }; - } - - { - services.nginx.virtualHosts."1.my.test".listen = [ { addr = "127.0.0.1"; port = 8080; }]; - } - - { - services.nginx.package = pkgs.nginxUnstable; - } - ]; - }; + specialisation.etagSystem.configuration = { + services.nginx.virtualHosts.localhost = { + root = lib.mkForce (pkgs.runCommand "testdir2" {} '' + mkdir "$out" + echo content changed > "$out/index.html" + ''); + }; + }; + specialisation.justReloadSystem.configuration = { + services.nginx.virtualHosts."1.my.test".listen = [ { addr = "127.0.0.1"; port = 8080; }]; + }; + + 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'; - - 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"); - - 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; - }; + url = "http://localhost/index.html" - 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"); - }; + 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" + + return etag + + + 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 c3c91e71b5ca85730486de918670ff52045472e6..bcc14e817a876dff56f79d2d2d65b61ad15ad634 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 b315426532baea25fe6d10578f21a6c3858a8b19..395ed9153ea11da0a37504a22675dd775be4af8e 100644 --- a/nixos/tests/openarena.nix +++ b/nixos/tests/openarena.nix @@ -1,41 +1,71 @@ -import ./make-test-python.nix ({ pkgs, ...} : { +import ./make-test-python.nix ({ pkgs, ...} : + +let + client = + { pkgs, ... }: + + { imports = [ ./common/x11.nix ]; + hardware.opengl.driSupport = true; + environment.systemPackages = [ pkgs.openarena ]; + }; + +in { name = "openarena"; meta = with pkgs.stdenv.lib.maintainers; { - maintainers = [ tomfitzhenry ]; + maintainers = [ fpletz ]; }; - machine = - { pkgs, ... }: + nodes = + { server = + { services.openarena = { + enable = true; + extraFlags = [ "+set g_gametype 0" "+map oa_dm7" "+addbot Angelyss" "+addbot Arachna" ]; + openPorts = true; + }; + }; - { imports = []; - environment.systemPackages = with pkgs; [ - socat - ]; - services.openarena = { - enable = true; - extraFlags = [ - "+set dedicated 2" - "+set sv_hostname 'My NixOS server'" - "+map oa_dm1" - ]; - }; + 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() - # 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" + 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'" ) + + 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 e6f52db1d9843c339b9c9e330eb4047982c12ddc..17c1a569ba0d942e0f9e245221dfdfce7cf3a4ab 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 d0225016ab7624d8e6861df9651e9d2b18aeb69f..97c9137fe1d6780e6a37bcf10d6223bd42dc1eec 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 46d7a6a72f89f50b81650bc6c4ea907511e8f065..24b7737058c83798ae4f3dbc97c4173dc0579bdb 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 5407a62339fe614e44c74afb5b983ffbe0b3bc98..6a38f5ca531c5d643c4ef464729f5ef9719b19dd 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 0000000000000000000000000000000000000000..9ab14f722d087acc8846203ab84893d6e7e78ceb --- /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 0000000000000000000000000000000000000000..e93a318341856f957f6fd4f68a956554836c7877 --- /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 609afe7b2145f47c2e04438289ae4defb40568fd..39a4234dbf73a7e0a8bfa833e14c8b74f53d493e 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 791b041ba95bd675eec8788bd7307c062b439465..372dd9d8c1c117979e62dffb96370cc4fec68904 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 e71c38882881f414488ad2258e96189df261cb85..3201e22555eabf46aa51610045e5de78572b2a67 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 83883477a5ccf9081f6dc2224ea60d2f13b01bb0..bab091d57acf1e402fbf75e0e82511e381b389fd 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 4d0df289cf75c021e78b009b5f3ad45fa255c6ab..355c94a0386162ff41795491d4a02c5a45754dbb 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; - - # 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); + testScript = '' + import os + import re + import sys + + 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 563f24726477569dae27a8f97deb91ea681692dc..4fc3668cfafb32e883b5c8dfafa3967e88e648a4 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 1f39e903cddb332b800248e907dd3cc0ff4274e8..6a14a9af59aec0da67be086afa3d63cb237500ae 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, ... }: - - { services.httpd.enable = true; - services.httpd.adminAddr = "bar@example.org"; - services.httpd.extraModules = [ "proxy_balancer" "lbmethod_byrequests" ]; - - services.httpd.extraConfig = - '' - ExtendedStatus on - - - 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 ]; + 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 + + + + 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 + ''; }; - - backend1 = backend; - backend2 = backend; - - client = { ... }: { }; + }; + networking.firewall.allowedTCPPorts = [ 80 ]; }; - testScript = - '' - startAll; + backend1 = backend; + backend2 = backend; + + client = { ... }: { }; + }; - $proxy->waitForUnit("httpd"); - $backend1->waitForUnit("httpd"); - $backend2->waitForUnit("httpd"); - $client->waitForUnit("network.target"); + testScript = '' + start_all() - # With the back-ends up, the proxy should work. - $client->succeed("curl --fail http://proxy/"); + proxy.wait_for_unit("httpd") + backend1.wait_for_unit("httpd") + backend2.wait_for_unit("httpd") + client.wait_for_unit("network.target") - $client->succeed("curl --fail http://proxy/server-status"); + # With the back-ends up, the proxy should work. + client.succeed("curl --fail http://proxy/") - # Block the first back-end. - $backend1->block; + client.succeed("curl --fail http://proxy/server-status") - # The proxy should still work. - $client->succeed("curl --fail http://proxy/"); + # Block the first back-end. + backend1.block() - $client->succeed("curl --fail http://proxy/"); + # The proxy should still work. + client.succeed("curl --fail http://proxy/") + client.succeed("curl --fail http://proxy/") - # Block the second back-end. - $backend2->block; + # Block the second back-end. + backend2.block() - # Now the proxy should fail as well. - $client->fail("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/"); - ''; + # 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 0000000000000000000000000000000000000000..846d2a93018896d8bf50b56184bee8b352a29a2f --- /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 8e7f34d06e32e54935ad55e81c8546b021b74ec6..f403e4ac2edc5e3f3f49edcf2177338d6806c889 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 f0f4cbf6a21ce652e0928e4d5b0792df9c1b6ea4..73eb684f33a9ad47ed0dfaec4330793ce91c7e64 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 0000000000000000000000000000000000000000..67bb7f1933d66a80944dc4076b4d1009e88f792c --- /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 68a9b7315b3501ef6b49c309fb8bf6e742f3c5ce..6915779e7e9c2e4873ffbfdb09905892b63ce120 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 1897b53e283a0e0d7b06819ac94e36be93c15287..97e1125694b6bfce0e5948495a9310a85f38ff34 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 f17e61814c5e9798f516f0dcb95a2c9e8effb32e..50523920c60b2bae9b972c46733fe116f484e231 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 339a4b9a7404b2574023dc4a2f7921dcbf521e88..67840f3e9fe7f8449baf8bfa40e291f83938af3d 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 194a2e3d2b94f92c00e99a6f892a7149d0a60d70..10753c4ed0c854e317e9506d52de2fe8e3afd27c 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 0000000000000000000000000000000000000000..284b38932ccebf65c501b0bd639292cafc856eab --- /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 0000000000000000000000000000000000000000..adb3fcd36d7a3213960ddce51d94cc4c2310fd36 --- /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 c746d46dc5505bedabd69de8a2abef6e20196917..e4b830e9e237c2ebedaa3361fd72965269edf0c1 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 17527378cf0a57b6842286baa666f33ec488e82f..d0e62d15437c0c85e5197e9a6a130670013a3ea9 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 2108e851bc5954a20463b8655e6f5cf1be705dbe..dc5770e16bc729d5df6cccfadcde893756bd2fd3 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 0000000000000000000000000000000000000000..6eff32a2e75d7ab3d43a4db5af0347801bd08cd6 --- /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 0000000000000000000000000000000000000000..b8d4b8279f4da2c1ab1637360cadd8b546e34cac --- /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 7076bd77b770a4900abb6096da0a04bcd40b91ad..9ef96cec5ef36e15d00892a30b0efc403ae3cf75 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 0000000000000000000000000000000000000000..280691f7cb402be1ca27343a6ee57fcd66771733 --- /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 b7b10fb36aac4423c4d72cc495aa33e4759b1b1a..f22836e227b0f13dfd05acfda4cc47aa0224ad25 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 0000000000000000000000000000000000000000..af7813a2e604a149c096f5800fd976e58f3e27fa --- /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 be5c0da981d2d84a807a99dfb816cf2b09112e77..319e5e94eceb17cf3d0ffc87d2cb9f22986db01e 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 4b71b4d67597de858b23e3792c0bd79e23688214..ca2e36a443e99c0baa18a7c634007d1bcdc63fc3 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) + + with subtest("systemd-shutdown works"): + machine.shutdown() + machine.wait_for_unit("multi-user.target") + machine.succeed("test -e /tmp/shared/shutdown-test") + + # 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" + ) - # 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"'); - }; - - # 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:"'); - }; + 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 c7740d5ade35327105ef9ce00af4178c7682f362..b80e3451700a6842d1943bf86efe073847362976 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 0000000000000000000000000000000000000000..0e21a7cf8437f43d1c0ebe5db5b81b5a956d5928 --- /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 0000000000000000000000000000000000000000..6346575b33da6bc5ec15f61cc32fc1393a76d0ef --- /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 0000000000000000000000000000000000000000..36ce2b1ae19236771d7bf607ffc466756b755560 --- /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 0cbfa0c4c7beeceadfb70cc80d6ae8d3722a166d..64f5b6c40d20d13ec69cd87cc857558757b4db11 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 d2e7fdd4fbeb713f4eb26a6e0eff76167c6ea019..a7d837ea0708e860e058ac018c47de24e14870b1 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 0000000000000000000000000000000000000000..73ef8b72861530971140825c71717cbd1bcfd388 --- /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 32637d2c1efe277f25d8c7b5e86e1311c8d8a801..aec8da6a2af3cdbe02ea79fbd1861b302af4ac5f 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 8206823a9181d6cfcc731e4a021b0ad5f69b597c..e3bc31c600f954e2a368d4f92fb956f9ba5c0660 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, ...} : { - name = "wireguard"; - meta = with pkgs.stdenv.lib.maintainers; { - maintainers = [ ma27 ]; - }; - - nodes = { - peer0 = { lib, ... }: { - 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 = lib.singleton { - address = "192.168.0.1"; - prefixLength = 24; - }; - ipv6.addresses = lib.singleton { - address = "fd00::1"; - prefixLength = 64; - }; - }; +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 ]; + }; - networking.firewall.allowedUDPPorts = [ 23542 ]; - networking.wireguard.interfaces.wg0 = { - ips = [ "10.23.42.1/32" "fc00::1/128" ]; - listenPort = 23542; + 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; - inherit (wg-snakeoil-keys.peer0) privateKey; + inherit (wg-snakeoil-keys.peer0) privateKey; - peers = lib.singleton { - allowedIPs = [ "10.23.42.2/32" "fc00::2/128" ]; + peers = lib.singleton { + allowedIPs = [ "10.23.42.2/32" "fc00::2/128" ]; - inherit (wg-snakeoil-keys.peer1) publicKey; + inherit (wg-snakeoil-keys.peer1) publicKey; + }; + }; }; }; - }; - peer1 = { pkgs, lib, ... }: { - 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 = lib.singleton { - address = "192.168.0.2"; - prefixLength = 24; - }; - ipv6.addresses = lib.singleton { - address = "fd00::2"; - prefixLength = 64; + 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.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 + ''; + }; }; }; - - 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() + testScript = '' + start_all() - peer0.wait_for_unit("wireguard-wg0.service") - peer1.wait_for_unit("wireguard-wg0.service") + 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 0000000000000000000000000000000000000000..d2740549738b4c477b517c9bc838ae1891dfda7a --- /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 0000000000000000000000000000000000000000..7354dd01a34a7dae4e55061f4d4f92d7a4e897df --- /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 0000000000000000000000000000000000000000..0fded20ff1a9cdea4776ed4769b0d82882345ddc --- /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 10e92b40e9562f065d63cdd4a937a84afd8ca740..4a8d3f4cebf7c91f7d18b9113a90e6fa72d03ae5 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 3ea96b383631d49eb29c5447ea470fbf64894bd5..99065669661a0c9d4856418d94730ec42cf360fb 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 ef711f8dcf6ae729913d25ffa7a7518f6c9e9995..56baae8b9d3cd6cb1a81b53b11d7bd146602f513 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 1aceeffb955d47e9fbad09d9ca456c20a30dfc4d..6d7f2b9249ffa22206ef33d56ff72458eeab8c32 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 3a7dea07d53a5ff22f8b9809e02ac1b85e69dad3..b77bbbbb3c4e7e21385fc81c9d4e5d9127f0842a 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 9108004d4df9d42408de58b8f467e36b2236d0ed..b374ef2968074d8241c65c4f85ee7dbb40dc3dae 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 8f844aca416051fbb4b478ff7cbfca2be7a687fd..7ba60ee9806c5b217539f11d4422b083890d16d8 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 3e03cf2da730162a70e534464cba561f80903692..192bf041c64e6a596cd56158cf040ff17685f6f3 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 0000000000000000000000000000000000000000..43844d0c66bb2aa79f242a8fabd52f796f3a697f --- /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 e4fd66679a79d5e620beab650a507c2c74c87298..b645bc61848beb796354f5e23d674e74ecaaa5da 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 d9a05e0bf66090b76c3009e80005fe8a1d9ba0b0..2e2af8f3a9a2d3bef5012e0b6ac6f65edb771b9f 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 cf383c1dd495ede35d98cb054361125e608ecdc7..253e724cd313fcda09bf1cd073663c192364fdbe 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 42f8af99e6f4565c9aad146ca9b53a6b58f67be8..8b7629bc908bc27c7af47dbf4859b6a5daf17b36 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 28331720048443c657769aae4249b558558ada07..64468bddc852910c0db4eb6c19efc0788c5a2c3e 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 5892351225d3152c3a44689d291265189b3a2d79..194514c65b535f4e9338283575e33030b10b84e3 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 adb38d4bbbabe67fbec78993ea03d75477fdc422..4cb28e512a72ca47959ca67d3d544ad8c4b685b3 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 631e0c9cca52adaa98e31ac75c9236f8fec50843..bc626cbad1146aabb5744cbdb3da2feb4d431b53 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 389052d30e1cb3a1af53801acde5f2cd7b077da4..bfd75b4e75cfe0d70dab9f8df5b3666a46c72b58 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 737e73421c9bd490be998cef7d144210e03d561d..176d1d4cfb37e7dcc8b09c8618509c19df8c0a73 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 5c379b57ad6a36c0f32bbc0f60102e44778e2acc..f781aad905d070bd13639e82d3ff54b52aa3a723 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 cd951701e7714c643e679ebaa3fbab8b87293c5d..25fceb357cc5a47f4dacb62c6c333b1175742302 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 0000000000000000000000000000000000000000..e6c4fbe802e1a0812c77927860204c255ff2e4a1 --- /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 30a4e052d77c2b4e60e473bd69f390d909e92a0b..fadfedf5384f4145ae578b837e2f3791e4dcb173 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 4b48f5f1eea2c51c25f956fab8c681977ea62967..99a09e7ee330028918773ab239544c69b66f5699 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 4b76ebdf6053277eeb8b78c62ee8b8ccb3c2cd29..0265e0f75ecb9fb6b180321b9773a9ad37802f90 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 5a0b6797a241793b0bcd2d881e3dab686b22d0d1..7d90ac36f3660b99b442a60fe79dd2c02497b713 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 0000000000000000000000000000000000000000..4aff3e1f7bfbc2c539b8f8133ba2707f36ad413c --- /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 12e8237d4857dacf4a19f816ff0cbb3449815447..b06175f37f315d0d687e0bda802f682f7727ced8 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 baf7b108e5047f952c02022d78405bba624330bf..45525571a646b5856e33532e8ca3c53a9e1e47f1 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 2fd3e5c27fe76f496af07a87dadfae17334d242a..a1f4b9ad950a95525bbe23b33587f4d3b25b889e 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 534b87e9fa7430eb1022b7e6aad0bbd7ae4405fc..eee293b76c2f99ff30e5084404d31f827d1d7aef 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 db5f081c4ed49a4f4d2d3d1af7498a9b601fecbd..5bc7f843258244381c2ceffcfcdaa984d2f58642 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 eeb0f67d19371cd567c72a872177b6475abd46d8..0000000000000000000000000000000000000000 --- 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 fb9b3c9513f8d6aa068de4282d7ee2a74b1f76b5..3d907e421b3e367fd7c9ec7f1c196f89ef7c73c3 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 e9fa6daecfe393f747b45581e87a4dcf4bf9bcb8..80ec696c64594e501211673753ff251e8660999e 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 1a6ebd346ccab1c5cde9a25704ad12d0135ce18a..49b788f66537cdaa4fc018c237d6ac4084095e79 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 c35df95b24c70da82f478215152973959a270d96..0d95675d1e67a86e9c14b714477bd61aa1da8311 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 29cecb1699980675965bb18ca59c80ea6bda622b..0000000000000000000000000000000000000000 --- 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 6f471f3a02839097dc934ceb02ffbc79cc2f595b..ac05a9367cc994b29ff5c56343e1c116ad28f6fa 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 83586847190607f9b8d1774ab20cc277c5e87c83..910c1cfe51b54d619b014d2d5cde692a1884995c 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 dd59ac5080ffa250a9f599312e66ea0821092106..64ee40e038ced68c9ffda27e5be17c0a99a136d6 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 504900d65955b4a63b93b6e577ada0b80c698055..704b888e22932afdb1a5e76f062562991554c9af 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 2dee463aeee23fa7525a8ae834633cc7d9b4a997..76a789356193bd34b5fa23e1d3d2438b1f01e088 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 b91554f5716e741b5fc1a4e830ff0d12ed1b13ba..e63124e8547931b046cc59f8981b72ab6f87fc98 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 732a8cf1ce2f2e19330f9ba3ed2b2bc4378851ab..a2f96bc288c957409ea92d5a3dcdae8f454ab54e 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 3273d7de68c2e8a0225d84b304fd3b6b1467f45d..bae2407ec7b99c729e096c1988ded1226c15926c 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 cd1d837e1dd1183666df9da333726e35c2d0dd78..4f4ad4b8c5b0308411c4bb4f3671e6a9dced715f 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 0106e8b45846bf6f2eddb1a054ff19352f557f98..bbeef4c395a2beb9aea1f59247f9051fac059d6c 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 876889416daa0810464576d5d2af41f5a6027691..799cefc781931764abfb6d907c9d8f03dab08765 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 eabbf86683752fcce87b6927bf88a8e273763d44..dc8511bf5007ebbf098a1ddd65404367778bc5b2 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 98a4ddd29d6ec3ebbcf0530ed9f3e8f2b7f30409..bf297d8a83cacb6ec6a23537297f0f0f5040c35f 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 1ab39311258b997b3cfe5c620b76e1eb24f9d169..c9539095863747c2d847fe6f002638e0f60293b5 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 5c5c262056ec657f11468cd04ae2824e366de0af..2bdca386bf456256ca27fc56449770660f272b91 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 76f76c1e750dbd2ad943d8383eca9c07328f21f6..2ceb5f6d09a2e1f5064cd59d730c732ee3fc9406 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 4e517ee636e81e32dd73e648388dc9ec77b611d5..0658305723c4e9280c254515dedaef4a9952a041 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 0000000000000000000000000000000000000000..2e2746f43417c28d8c6499a79dc9a31c93989bf7 --- /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 0000000000000000000000000000000000000000..732c2968fde4e5fdc1b8319583f54cd2f037f705 --- /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 692485d0dcfd7d7d63a9ae891dccd532c5c79776..6970296cbd99c2b9ea9e72ced87e5e2475c076da 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 0a374c26142a1f345b15f21812e4f7ce6ae33c14..4a32b099d15b577d60054fe530904923cb6f2fa4 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 4da2228c6c1302697e7d87e31dbef63ca46f0c1c..3c78295db67452c793252da5ca74c73f2910fa6a 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 0000000000000000000000000000000000000000..96cc3c5731988bf613fead4fd6377c0ccd7481ba --- /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 b88951c0fc5ba8f8f14ac4eda8e2c87438f94c38..3e5916ba0983e7edcea2afb8dc754e27a876ebe9 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 54f1050da466e2d869bba0eb6e320fd5cf7add13..6695b9a7237ce2bd8c84ad877a30c3c784138678 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 865bc130db915e159e3928866f8e2e8f4f0990e9..a5947bd37f19a588cc8aa82689bcc63e0dfb77f0 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 f7bf919c22129cdee5fc783dcd32a0ee83ebbad6..0181ede26dda0b78ead28caf1c9aa49c914a2309 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 0b8afada0206f95566b4111a198ab2c7ecfe04a0..756c21892fb28fb35b6a254355e2280f1cfcdd26 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 d16d93318216319f3e7353d79367817334a7ab55..895609d3c0232f7bba1a0117ef4037acf7996f29 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 758448c2fb33b5d5f74c4a1cca2fc932bcad9d6f..4b426609fea47d2938dd602d1e379d7a352d383a 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 a6ca5b3639da095e5d2be1d369afb5136c9c9490..4c2323fbe8a56608cf0b3cc3418ebe59f0dbaed2 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 c37308459bb7ed5079fbb211ae2fe917d2170c5f..0000000000000000000000000000000000000000 --- 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 b26360f0c469bd3b9e516cc13e4f685a5fa298a0..337d570a935359d3729161384f7759c04c03eddd 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 8a81101983f7bae3dab425a558e10bf84444b7db..294d3a0ad8bf14e5e02a5c82ee48c110b28a08f3 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 5b27f3c3f3235f74c5f0ab699b0f46865adfa1fd..95606a869b7f10f56209f724a91b92af019c5f51 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 f3adec4fece222eee36597f09bd89d6adcb98bbb..1438b066061d116fc2d599a6a3b11fed735b9102 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 1785ca60060c724fe5a20313a9f3ba063acf0945..7965cbd83fdbe3e4a4146fc5aa7ae386e4d62318 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 1fcdda408966626b8374dc3cf38ee09e2370634e..5e0cf3616fe531cb3ca1cc995e80975fbbaeaca2 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 054fc758d645098d7c90eb8d07f88b357f43da25..0f651f47a48847c069ff545bab929e3fd54ba5aa 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 ea0ce8cb5f30de803f9a951f3f935c695460c162..fbf25384eef2b93e7054d83e79b411b1311f2f46 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 da915f3fc3e40aeaff9e2e4e18c8b50a61648e13..99c07ba8f5fed893bf8b10e7576e8d73cee01b4b 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 2581f223c91d7f74d969155158501ae46f29acee..454befd55f9d5cc162fd09e276b09110e77d577e 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 b926ff09d22bf6cdba3faf4773309073c94cdc85..ae32a5f41a3e5ac1ecdcab7637b739e83eb88150 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 4c2b97e727f474f63dcfa8d12a50d13affbdaee9..3f294342da70f939607a098874dad7c3e99e3edd 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 6c9cd628a518c1359202f46eb906964969e0add2..13c48fc12af31c2e113da11e264d4a6f25cd9abe 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 2338c0ed376e9bab6ad5f0009e067ab4d348c0dc..f9a579512cabaf64ea801afa53f837cad95762da 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 37c95430627f625eeb6b5de6613ec4f56d178762..0000000000000000000000000000000000000000 --- 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 5940203d04d174ed13aa6e2edf3743530234505b..e2413a4fe87f1faf00adbec039292f53c2f6fd50 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 0308fad831d0867a92076c486febb1c26f42680e..cc3a3c9ac1f56c797264deb698cce5d5c25b272b 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 6b5101b50b5a2f63cbaa943f6d0b5027e9d0d8df..aa68fd5363d639b61cf06a133c8c5f5b8795e386 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 8d7db50fd323449daaf9fc3be3fb4ba05934b2ea..6bcffcbc5c3467916ba3c82cfe22b886b299def3 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 bbfe1ad5623f3d3c753f24ba9e7a30d8cd341a71..c86e7b5e9ba19fe16f5006072413354841d85ad2 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 687608b435246c39a9f8d40a02f38dbeed613b0e..64b8e72443115c30d41bb7ddfbe5d8288c3379d0 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 21cd3fbdb25a695f9eda04e5fb5388a7487d79c2..33df1ce5d4ee1cfb79c4220329bd86a1d9969094 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 7762ca393690ded3384368d182835f647f71b0bb..f032f435a35e7cdd6f7cd84ea40a52990640f91b 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 0000000000000000000000000000000000000000..2562237424e5511fc17e64b3d3cbdd546abe6cbf --- /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 5a015e5ca31e57a3d005063ae71d4bcbc0579330..144d19cb01e4c5dc5dc5da4d04ebe473039f16e0 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 3472ce5047eb5ed57f46a489d4bb83f868d1fe41..51d956b140364ba51771e2c5c8bb2426851d3d5c 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 3b6ca9e4053f98c7c2cb912664568e2a3b6cfa34..90bd8bc60ad0402baad8f7cb4cb245667ae2af09 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 df3aa987c3fb554df482b02a6535ab5658258635..bd8b9bea82b75e4d9da04078ab86648a95ec2593 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 19ed23523556e924c773b1c4bed993ded44e7a57..6f13b710effc6a4a19f41274ef63fe87317fb275 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 9dd5da4c1a902f1ffdd2c19633560a51bc604ec3..1da40e75415311d6506a2cb20824dbfed1c02261 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 8e2895bf84780c3c518d58ae43c35dc8d7c2c660..9d9772cde29a594455515299c15c9be7bbf4fead 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 ee45217e490917fbf99b21a07d2607a5245657d0..114cf5e192ff8aa15bc7053b662184ab4baec582 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 248967e06e6f33c81afe47f0b551bba2c418fb55..d957c7ec33d87cb316f7ba8b46648f44f22d53ef 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 a92d331baadbbcf4b7e7ae1d8e40e5452f186181..a712eef06501f55f611644a8a461811414c0e7dc 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 b17561e1567abe61017fb4fdb7613031de957e2e..643b648fa88d8df0e32da5112cdadf4edbae2946 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 a2588093309d4f4d1d698b979764ada1ac041085..6ee120f3d1a8a045008213b21631aa05a8145717 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 0000000000000000000000000000000000000000..e80239553f1b84d00833b603c7ee1d18cb20fc90 --- /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 d95b3eea596d6beec810b161e8b33d1fc54491c6..51f895ea2d5ff13907867282a1ddcb95a7cf0b1f 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 8907011c16fb8e3c64189a49cc0e17444a82a982..eff1d6411a15b77eebcf1e985b9c5b5917c729e3 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 b8ec2d7116f5d210062dc5816544e56a0e6c1b47..08eec3135081ddb6ed8b2dadea9efc7125306a3d 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 42285ba4bf862af5d0a2a0641ea2f22bb32f0f5e..9e016c68608bd108458ac76c779873f9cf2d5e22 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 cae35b6251904f8be6fc92b36b7940913d2f98cf..7ae02ae38d852f2961852ddd0224b39075a4a43a 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 8446855d190c3a9339767b5c860f0fc97b676efd..bfe9f72d66463a86dfb089bce7543b7ed3d00b6b 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 f5887e870db6e8cb1ff6c182a7dae6c327e14c7b..0000000000000000000000000000000000000000 --- 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 7a44ebe67694c5e669955e6102467086ac838acd..d5bec0c09e5fafb031c85e492688a1e074db8eef 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 b51b72f1c8a4551bb83568986ffe9b7261c6468d..509d3ddcf751f8e151ad4f8323c3b6b1f65e93da 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 b972aae7de80782f6862fc594a7bbcb9ee91137c..1905699e516ce4ffcc400386a080b3746d8ad2ad 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 487b0a730d83b4378d8f188d882321651533cde5..384235fc0650d27d084f1c64bf07c923f74458b9 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 0000000000000000000000000000000000000000..e2ba4ee2244e58a43085d3faa20863c49d8a2d97 --- /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 b653ae5ca5881d3b8606de585677a9b29be466d1..a81834c1fff79517c25b60f7acd5c563c6a05bfe 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 fd3632ee1552e45cb273c6619764231b9ebf7269..1f293fe2d796020d0910b64dec17260f26de4297 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 91f4b1dcdfe9c31352cacc22f208ee0208278506..095cd79b56e45dc3f38f67534e9e5e21c381bbfa 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 1d5579d74c05014bd6fe9b93c153a28f5c1d3dfe..b2d99e0eba866e5a4d0e55457f6375ca5ca63673 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 1f4323eb9d55ce2297a551af351851d3b4b6292f..077bb407020e4651b4c9f795b7b33b80191db6c3 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 bfd211316a7c9766acf4328ddf01dd57d22e6a2c..3ada3224e33e01642d9c4b1e501d6e4a0842f8ce 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 428490e119a62a6673714d24e5c5deb8b2fb51ab..8459967a363c535948d64ef8c0b31a90cac07d85 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 19aac1bd1e9578e5236cd203e0d52eb67d5c9bb4..3f1fac79623d5b0c560031dd8ed91249074b0357 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 50093f8a61dee1df9e314bfce2e6c15ed3dfb20b..b3aff4e4c5091e7b3ea9006acccd26ac2487d67e 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 f3928499413c77ad8010096aed67e8b1e008ca99..daedb9b98206c9ac56f679334c6ed1c0d95569a3 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 a893390d74edf44190857e2171116583334eadae..2d4a2e9265a3c515321d5a23432fdda527da9d92 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 0fdb3b2a4a14958730bbb74c1cf019a13504b681..75d999ede1d7a008aa09615db2f13c9f5cb8629f 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 341c41818421de9de1a23b80d064861b0ddc74be..2cfe77ec291fdec822aa690ded72d7245a38d5b2 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 1e249b51fb76bb24550744b5e7b60dd9973f7e5c..c5d4b3f87f49146169527c0ed03179657d6fceff 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 9d3656a81f97d2513cc7eacb705c6b0d3d765183..f9f58ab5ec1a6b626771a823e4675915fccd92eb 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 92b2f8ac5153c35a03bf3cff42672563d42e769e..80f15935af23f49870ddcccf8d3bcb2629054518 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 c62ccc4fc8831a757bc5f795fb6923d20c76823e..e443a0a52694acb8fead5399754903b1bf90dc4f 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 5bad5453504fab088452fb185421935fe1d7b3f9..08263f2abddc22bec91d8ed3177527e4467acf38 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 26a717dbd6e4c22bd58b74071618951b60566958..d13dbcc1688950857e209ecd35dfbb914c0f58a0 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 e44dfddd37b7c1564428eea5bb6048e1b91fe145..2a75b384af5ca13808208aab2467cc256c62a708 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 fe7c83dd56f1b013b7e14de7526a5c7e04fd4822..c3a46439ba709a8e353ff71e2b23f83e6797919c 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 a40d5101b34f228af783dc0c9ee4428a25d89ec2..bbf66a74bc50375ee50b3ce467828ea89b1ccab7 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 3511a08682c3d551feacb6750f2dca2081c50779..a9b423320a0ea642c210d57b2033cefc34a27590 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 a9eb15aabf357dfc3979d51ce69e8093b5a9fd39..426fea21107f42655713292b69455c5de390b0a8 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 d47fc3b6190dab4afddfe0e10f9103fe1bb3ed0d..710c1e80792972087a973598525c6dcbcf1f0911 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 75ffd083a5a488d5dd6843bcb26f16252089add8..cfcad390f4c9ab76907ed74b218f757d0ea3eecc 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 f33245d8f1c955a0b828f8e9b96b51532711d72d..9ff063c1c8078a077a9b5a21884f317603a03b5e 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 44186abc3c46c0a56cecf69a4e4083673632ee6c..a0fc8631fb39197144cca33a671a3b6f02aa44d0 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 a7779ee8aeea1db822c6c727297224bae153b157..76acd1daba7fbf55ddc914b56be6361cf46fc2db 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 3fad5de1de5929aae50ad121ec34689e89e97c7b..d51aa3b75e1f202e4a238a19b5fb2805e46fad51 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 e96972b0d1b1e0157e6a07719f01918992857287..cb0a3ee05e122a53bab0b1d7b6743d7db90a5501 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 3135a00334c7d941ea9d5fd575bd613845a34364..efafc5b05b1841e624dbb1466f83245b676cb944 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 d2ec92e0654adf618a89bc66444935f041c63a7d..bf45a466d30d911b3ade706ef66d570f2025089f 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 b5a99150cb223a4af71159a6b168710900c546ca..cd9ca5e26748918b4ca13d47a3062bd773247bdd 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 f13f10d15e82037e18378e33ee6787c7fa78f86f..6b6cfd55926b648fe278a44fbbed6ea15c74a829 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 99503fc3942b9518d59212569d6f337be1425d8b..c243e9beb233ee4d8d17f09b28a554554bd01592 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 2d2062696d7769258f995e33afa6ffd942f5b598..e4b8b906fa64fbc7478feed26d2b509c7e862ab9 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 47d8f165ad05780816df4487ce6fd7f10a8ab41f..d530aff9faa68bf13a73235bc968c00c72bdc82b 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 fdba836a6ae2ecfaa25a07bc773eda3c08fd81df..c1494ffc3334e401a66267face07c377c7f79881 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 f1eddb626245c2abf614f062394cc1ac4bc4e25d..aee910f56eb6e0f609e965102494937e32506c77 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 6488d1bd65e562482d8f30d2f94e37fa0d6345df..e16198696a6976dff3835500b4ad7ba317d59aef 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 c5728b6e8b7bce19492334c45cba1db3379ab693..1ccc9f3fcd5b1144d6becdd82bd2066b85f481eb 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 331e58c4bd2947cf7c5febff76631709b3b2da2c..d5ed7e85b696b3890c67a33b41367f5429deecaa 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 046ee70e990c9f0debc3b908e532e035d48de912..6d119394d5de8e9883c5e9bf224c777395432cd2 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 aa7da17dafd18bb18099b18690b2778253578869..0eb68e65eae60d12aa16a1e2697382c6107bccdf 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 ae05866e57d09abdd81e5b852a6525f75f1f448d..be8ad72d28dff7930d75ddad39cbbde429218879 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 718bbdaf49ea9c4469097a70e7decfafbb3ab1e6..dce2db4cb7708ab9f91fe9e8f8361cfcb3861390 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 fece392ab1cc3ff4a56343a9b062b2ac12611c3e..172b5ed38913f3781aaf85671c2b87bbdbdcd9c1 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 356e95bf97c84c6fc2524d6392ff7822dcc7de08..11d51d756abcdca36a37e2c6cacf4ab7b695fc90 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 292cd3dfd8606453631f2e4b30ba180faa946cd3..360cee243c33a4a0d1eb5c6e64b584f405ea0aa3 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 61f2bc33f7f7f3fd52d46bcb21900d26ae5dbb1e..2464abb6585c15cfd91159a8bfddfab09750645f 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 4d2fa0e15b48923caf02ad660b5d4c57d3a145b2..9d807358cd5a954c1a385412a67ad1cf5c830aac 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 12383dcbbda4a1159fa756ed0259e2663ec553ca..cd9523d2710863032566824000e8c7baadf752d7 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 e4d6c0293df84597c59746456d4885e5ea309d56..67204260da247b742f214d866943f9daa1d42913 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 3c5660724d39726ca7d00b5d4ed81ce4ea445d2c..071b18e5a8a6334e2fd608ba001ed89013744750 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 c8a751c235b1c8d118971bb3641d85fb09e6112d..6af11d42e31f9ffe6e3792de5fb181d7bd5f08d2 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 4aacfcc89a368e05ae03afaa5ddff8fe7756d4f5..7e364ff984a5f1c5eaa1d6d45860566476fad553 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 48052fc4ec88321c187c333f96b590459fdb3025..388fc2a1b3ea11f8020b634778894fc2a6d29776 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 42fa8b7621a5df0227aa8058b0cc2b21548e93aa..9be303cb652ad42e93a65bb8daaa516c2639e462 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 7f86e2c20716880cdffe94fae89f4ae5c013bf4c..d7b9e5a6355ba6068556a8903ae4654327908c8c 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 e91b2c9360de7a95802a9af07d3bbb08cbb11f70..e33e69ad78c311c5f6e69cb3e38298061c735c2e 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 2d301a8b6a967be21d0906f3c0b88bba5d552d8d..47e9fa306dc433f835bf6fbd744c3d24cf5479a6 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 5cf9b1b8ab70bb34606c0bc7c7856f32be53a033..f889d9e1e8d23be5363afc9f8426962db3da2dc9 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 89d062d584e56f2342175429d87215a000e7e8bf..18b5a980633aa8b3a6dca145ddd8c2925a93677f 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 c20f04ec9470f68dff435b0e8b0966c2a916aa46..765def25d60048390a106ed34c883f8d78a7c72f 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 2df54fa7fb46c17a4088787a91df0f019089a65d..0b9f815330200ab0cd6b216d908be505d4dbbd61 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 -}: - -pythonPackages.buildPythonApplication rec { - pname = "mopidy"; - version = "2.3.1"; - - src = fetchFromGitHub { - owner = "mopidy"; - repo = "mopidy"; - rev = "v${version}"; - sha256 = "1qdflxr0an6l2m3j90h55bzyj7rjlkkwmxx945hwv8xi472rcgdj"; - }; +{ newScope, python }: + +# 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 { }; - 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 8c173140efd8fd42636be5505934f9b9d1c52f28..3dea9156f8fcbfe713cb42574cdbdd2adcd113e9 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 88cdde2ceb2aadb54d14f597671361f42bda009e..2badfd6a0b1c9651dd25d46903efb8465680e6f5 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 2ffc736572bf796765619ff1281a72fa9f781cf6..085fe855e8a8a7231dfce22086a3d1f780971109 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 6d0cc370ff3463ae8b187387fb4bbcef7e8f9257..23e01c02a0f501af17ba125df13e20d0210089b9 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 d41fb12ae8d3e5443644833bb0297fdef0da0e3b..ffd9af76d173bd27338b12e70fa926a52975af05 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 0000000000000000000000000000000000000000..ae65d9b2f6eded7e56b40cb03ca0998fde32d47e --- /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 b657f69e26eec318844b9d04eab8251dbf878591..a9902ca4172126e0d5a4dc776f7dc1bd617ced9d 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 0000000000000000000000000000000000000000..4dd32ea3aa3562330ff3fe63267e504e795c5460 --- /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 483852455aa7b92700148b78b67371adc5821fae..32019c74f86d7026a22fcbb1c477e20ae6362031 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 727133be78df0aeebc2560504b20af635156140c..2943a31454a6446fb2b809484e22e72ad5e53cb1 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 233aebfa1470ffc75e7f627baffac19d3a402e96..f2b4564c7ccf5c23e5f77504e1ce084445bc5897 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 6700f21fc8cca9f0ee957ae7540ec45cd8fe6d5a..69ca271d27dd97aa1e2d038bd6e449dc39398de7 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 f067c5af6df3f4638b76d0b7ac03bcedd14c9fa4..323854575ea74ad8648742d2f341dcc2d1583622 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 6c35779f6c4cf0e52e39c71d0d1ca52f4e4c2348..636fb7d9b9a170d956383e08f24ac1c5d1c168fa 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 1e8d73ce560f0a20557d5266c72e377c256b4f35..a226b720df9b2930a339a4e897062c49c9714cd6 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 f024e5a6a1d16bc655cedcbba8596ea84d9a1727..ef5cb169a2cf7c60936c16ad8160e18cc66454b3 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 6c4b9a43176817547d720f776e54f84ec1d6f029..53e66e580da897aed2b2fa38143f2ad17fd5a9b7 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 fdefcf7e77d64f5d1676db1c442f2a340bda0a5d..63b8e2d867a72d889d227daa8ed1acb14e6dd224 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 0000000000000000000000000000000000000000..347cddca8564af7b06628e0683eee0b9a8f5bc93 --- /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 0000000000000000000000000000000000000000..5059e71001f02181fecb78fdc5a88671c3888fbe --- /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 372c8faf773d522de26a8362bf984965d5d93332..87f86306b482ba61fbf3add80bed79fdaaa53a00 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 0000000000000000000000000000000000000000..a11970b7111a544984ed187d1289e309822ee976 --- /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 8b08aed62b8b1cfcfa21c36960641e46f1610148..8870a144c9f5aaff92e806c2c6e106444a1d776c 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 5368fcb61656612edde8a70370a4a96c4dd03909..063a05a72f3a8f2b1289287ce7f7184d1c9adfee 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 53a0c90ce46edc7c3b62b207ee692af04fdc2133..57a6092d58522dd753b51a132a7d4344ef5b6d32 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 e7a9e22c2d680567f768d7461ebc12c872b08f93..b1e8822cdcf8be73420b71c17d223df5bbfa6b0a 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 58eb5462ef84b3f8603c6f4d15a9c656ae634c3f..c08e4f7f4ffaacbb4a13e95ac0843816a8b6594f 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 2ba36b4a50d92fcd7fb7e45c4f67f18b24353fc8..f8adc522fcb5e26f1c63e96559a36d5a08645f5f 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 53ed9b3297c178dbe685e737d0b9f56f7d03e6e2..32d8df2f0487fe3fd38456d967a1988a34dac914 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 136f6fc1427d935b1d483d010827f489f0de8a5b..bee1065328a75dd31af97298a19c34cb07954870 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 76dcba304a32b1dd4c70bd85fd1a2199d5c489ab..c4cc291d026c9902dd24bb7ba5684dc7f17576de 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 146e13f34de15eff190cbd91cdd3322e885bad93..3b2f233c6afef1130b98a318f26f8a72bfc39a2b 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 5f8c82b98d040840b8ecde445af5062908e1cd39..9b4b147c2304d95c821148f15424ebf856fa3a37 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 0000000000000000000000000000000000000000..b0d4843aecd5d63ccae23166c9b765b13a9663a6 --- /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 0000000000000000000000000000000000000000..16df55c1dfba056ea78df468977e69fb0cd8078e --- /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 490ecc967bbfbd9c0bedb79f29e128fbb5c9d08a..0aa264116932569bbb54f13ed646001fabf50838 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 0bb970500bdc54b38939a6d85444b69bcbec15a1..bc5a3efc59a382701d8afa5d6d09fa4a45f60867 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 08c5c1a5c361c1ee50085a7ab58f14c6f605059b..aebc7dc7baa7152879e226e395545c89a84b0e36 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 69fa75d85f4d16723e519533b253ec64a68aba58..9d95c362d92858911b828583bc00e477adab982a 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 25636863793f0ef65e873d8ebad8b0245a99781c..c09b3f415d869ad7051561db2280d7b6bb144012 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 6d97a2da739f18538c335f6d65d20f7b04233c58..911bb4c8c77311a6da941a3b262153a077826101 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 2507f08e9e5990580429e0cebcfbf114f9e74da0..cc5d84d9471b1d8062f027236ae851b1b0cc7674 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 7c4520967850870025399fb3dce3801f97319f2c..71d85248599150ca4b5240f7f9b3a6ff61a0d254 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 9c59b5466c747c47f5e85b2340d3c2a5ef7b2c04..b5ec1206ce3daf52bc6329b3439c4ef9db1e95ae 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 fb5fe47f4f2d0bd1fa2b4326c3bb315bfd62d299..e4728b9b9c450e842d801d46bbbdde5180c9b3f5 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 e7c4cab9af18f27f111d07dd140dbabd67bd1b6e..ac679d6dd949960991e983e8530f3f984ee15aed 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 b9a3f39affb1791349c702642ba320972be35cef..f6cee7672f7ca5f2ac7e370120b5d4b5ef306ccd 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 fee86cb5bcaee7408e10d076be596d019e55bb5a..301e44168d39b1a055b40156b4307faf89f693fb 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 6440f6e787ffaf96610fbbfc3277740cac3664c7..56f1ec518de01845aaeb46bb8e7f6fa29c1dc46f 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 6c7a4b03ef59db664eacf0310a30aca2c9e3ccfd..be5a385d3088fca1044f52b9ce58a16739eedd40 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 21ba375200bc65d97db135a4474de924bcea047b..aec793c4ee8ad975ffb05bbd510d91ec38ab544c 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 028a4667cb2da166128d303cef2ed74cea2cf14e..cefee430ad5ff71de4bde7bb83297d9c9f3589a1 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 c214d3fcf40509b379ebac0407563c9c33fd8b4a..7a5014664d556526478f564905628447e8b361a3 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 fa9660fbbf61a7954bbba612608727ccd27ea900..e68610a022691e82e24a45c29841244e9791ed80 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 cc307417c061f6ebcc290a8802a4cd338132fce1..4f82690813627b104bd14ae3f8f3b07e7d4e135f 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 8bbeffb1f7a3266723572400d949e1c0006115dc..322eba2b9521a57e0b474d98de9ab8158230d740 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 26b94f306bc6ad916368a8e42d72faa2cced509c..28173d34b78d15a5040c2d05b4ea7d33532af928 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 fee456ae717ca7527e750b61af0e4a2820a733da..4832fce1e9626a710bc1ee1d9979daaa8d94bfd5 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 - ]; - - preConfigure = "cd src"; + nativeBuildInputs = [ cmake pkg-config qttools ]; - buildInputs = [ alsaLib cmake makeWrapper libGLU libGL qt4 ]; - NIX_LDFLAGS = [ "-lGL" "-lpthread" ]; + buildInputs = [ alsaLib ftgl libGLU libjack2 qtbase rtmidi ]; - postInstall = '' - wrapProgram $out/bin/pianobooster \ - --prefix LD_LIBRARY_PATH : ${libGL}/lib \ - --prefix LD_LIBRARY_PATH : ${libGLU}/lib - ''; + cmakeFlags = [ + "-DOpenGL_GL_PREFERENCE=GLVND" + ]; 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 2b1b28c5a849bdaff08340ee87baef88b00834a9..0000000000000000000000000000000000000000 --- 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 8cdd8738e2b302b54cf29f13defea7e0aca3375a..0000000000000000000000000000000000000000 --- 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 b40ab6d4f7a5eb929bf3648fc48d78a093136715..5830e1eefb88c44a0ea0435a2c61c00d4943b6a5 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 20a6e928cefbd7bbe3d173286a36964b0a550323..6c3ffebc8c955c859e3ea9cca6a0fd3adbab4be8 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 8c21dc8f2ad71495148309c20481648e21f1fbd7..15385e91927c67635b98d72761fa45dde94ce810 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 f444ad6cb3236f675297f9aa6ee289ebb9248c6e..3c852cf450e937bd67230d02fe6878a6f12972bf 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 f9b3fbae21370b8ff2c6cc1961d347e64bf52e57..0da86ca9bd1a7770d777eb5e137ac94fcd178c95 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 0000000000000000000000000000000000000000..270d51840d788d11e5ed5f8aa2a9e72d3ad779e9 --- /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 6d168ec566187c627cebb36bc1ceee1db3e30098..6c289a97384f7db123ae480073aace215799ddd4 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 9414f4211d7a202b59e04d4c97803e0b73ededf8..2fb8e30a64d8bfae7621782a06c77f8c23521c51 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 e7aace763a1b77e9e926c4926cfdb6d188ebc1e4..205a3ad287e936b623eb584b387fd144bb2da814 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 0000000000000000000000000000000000000000..2f21e3ea56b6f38335028bd2faac344928b9a2a8 --- /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 3a6cd298557f86aed7383a0073b32b3cfbf3f9ab..a0813fa0c80181968352a285121b115445b21967 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 6b7d242e1f6d0b5cbf5cab8db4e3e98f895fadcd..125dafc132e0748031052796d1bdc03091b46672 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 a9f56cca0015ea6bbe175c2c4122e12a087a450e..75990d593dfe4ed4f60d135379e56061f0f250ca 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 328bd8b0b041b7d3137a7befe635989a7778753a..efe39aa1600ee98e8658f27b181ba5b9bdea5143 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 b8082c12c644e45668189742e6424c3f9a81a4a0..2511cf0f20a54677413b41cda9547c863ea004cd 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 2d941f74c73c0a23590a4bf616d074271814e915..2972849a2d4176799e764dc195a7182313995691 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 5886a465409a12c36aa61b3eb53e231c1bbb9daf..9880a65d0cac5a1f5834ba26d8f7a7e7acf8f42c 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 84cc11b8bf3456414107b4c5de9fa16eeebcd347..87666940c151dbe4f9c9834c9eb58158d90f2f11 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 0000000000000000000000000000000000000000..4bbfe79a2c9f9a678e82343923632b1bc1cfa446 --- /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 01a33db5293ae24f6c0988cf82cec8d448a236d6..10cbcb5d5b196b6f7533780765ea03fd5ede46cc 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 aee373329ce0543d21d9d7ed34e6d9c42a5da10b..fe7b9f8ba66e709e7f49f754ddf159c4504bd26a 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 69cc5e6e89f20cecad776a5451265a5b69d295ab..1f65b37483814a9f03c9cded865ae2043781dbd3 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 aab854d24adca51d830205335e72155974e4fbca..5da8f4cd4626486a32af34a7e0d3a10baf7dab78 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 46dafb72c4128e040ab8b88ec703046a09bfd952..344927bce774ce6b5143243254b4bda460481880 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 68e8e6402acf5291b77d02bf90188262d9a37a18..5b84989a7c41f2168ffe20c2f5e27df4cd989192 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 573dca518e3a972607a4fa546bb1855dd56781e6..704e20cc8c563a431378a21309eb604503598d8e 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 0000000000000000000000000000000000000000..fb2b3063276113ac665a04f1f27943f689b37e4c --- /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 0000000000000000000000000000000000000000..ff118024011ef062da46aea9d93fb1cceceabf6b --- /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 a64e407b39b8806496a25661f46193682d0572ac..014906594a7d50f664ed4563ba45e6307ef6b1c4 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 36302458a75b0410400f7e3377faf0467fa09a8c..4548f9ba624fa448995466424ade4770d0bd11d0 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 236c42b529305f07716ceb72680415b8895ae168..2e63a3e8c7cda061b523d0289c37ccd3362d7612 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 e32fd42af3232c6d8630d72a7c66f319d95749ca..140b163e25cd1705baeafe291ad4adb3b89383da 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 7b2d92ad59d31e199db8e119da485038d67ab5d4..1cbd5b3afa28f53b3ac652cca94412bbd8bf12ec 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 e3eb750496baef4be8ccbaabcac3c06879d8cc51..7a0a8a59a084ea399f0895d63739323a20ef6861 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 24b342a26a92d3465199f9316307846cc07a952b..79560451e540c238bf22fb9071783d8eec562db0 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 0ff23102e75528e916e2388762a3c96e769081a5..59979c4108386e126daaea805f0390020a7689f7 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 9def4a292f618e416ac25b295d2e7fc92cc674db..ef57466ec84fa70ba08f887f8d245fef4fc35985 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 9445bf3723c992eb78551b56b556d5307e302e97..921c8fff67a19be29ef031b7c282b4a30087e5f5 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 4874969b633245931e4747a587e368e6741f0d45..86f8f666d80d344d3a4fdca11e6527e427040d03 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 f902b2dd41b0e808166e7ee62767890a09b2c3fd..b50dd78ff1ac143b25f138050e26879caa2fa1a9 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 9bab024f021e5e33fb501e98cba5316fc034268d..c8347d70b1d93416429397b0b7c45d27d16d7633 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 5a90ee659478b7f8bfdfe3be64685cfbe11af346..a7500f8c6a5efc5c19fe9b00c58d4ab03bfc7905 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 0000000000000000000000000000000000000000..d785d37806580012ac177eb29845ea0b9736861a --- /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 615a8a8c660444337d37f100e7dcf0411803ec63..165f8446c763bc70feb96f7036bccc2c9b28c172 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 e3bfc60a40a5fa207f3a2171a2162ced141da516..de18f3c2ce8d3dd41b112af85fc2237db474578f 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 0000000000000000000000000000000000000000..d26d314cd3e45fd9409a866c6ce28265ce62f7ae --- /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 aff8c173d9f2b617f918db8122fead4fb59a3c3c..b0a50bbf128e9080a32333aaadf5829ff17af89c 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 f95655f5e9a350d29d99339c7ae6b622a4fe1f8d..07215fc42f87f88d6f314b41376947d40f181abf 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 21a36cecbe5495a4d2b3b5466d81c9ec3a817da3..531a633f05da90c05b19d178efad97218eb23be2 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 2ba9d4f50c3ab0ebdcde6903722e19015d415d01..9bc8fcb66946ef8ff6918e2c5a39ccaad43f7f3e 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 ecdafdaeadddc433156975a0b714302905b0be72..d239fda11aee4dcbd7c8f28909ffa35c5a2380e8 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 b9293fe27294b2b1b6ff967148e2d4aa16851ee4..68eefadf41108bf1d83fd04c1184e24d196aab79 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 0000000000000000000000000000000000000000..b837eb07cf1be0cbba3d6aaafa503999be06f143 --- /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 ac72a26b0eecf4609c9bed3e45f9ec6435e33233..534ea1358803580fd5bc2bcceeb0b054710d4525 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 501d097f29faabf42b5ec0a20cedd127e405cf4a..e8b6a4d4313b876784cfca76af3a92da582bdb6e 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 768b40a1138832908a098aa61238220a359fa598..3fb111db85172e1db0d55dddf5abf1a6da6c816d 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 5d8ae0928c907b008006556f53d67bdabcf09b97..7601f942868fc06a447acf426841e7e3b2dfcd55 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 7f22a03c1bb4b93d3d2c7a36f7a4acb5204f8ca2..dcad0cec1e81ae13db6849a506648b54f862ab95 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 5b5f01eef5cc8629c996c268df5518429bd8368d..741211bd90d7b996bf57162b7acb00669bf92eb0 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 0000000000000000000000000000000000000000..ce73203c9590d541a7aad1a047151b433365962f --- /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 7544a3520c76061aaf6f0f57bef12de6c2962759..d8209dad02de6fd695af93c2246c15492ebcf903 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 4c1682b1e0b8f3b071ca5cd59dcac49e8812d076..35534750d0c6c3b1cb3f9efcfc0a79121f58ccfd 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 6598d24fb07a50a8e658c1edc1cd903f83da7c01..706a6956c5d253f8a3059ed27bd87332c273034a 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 f4922e388c46f78f8f5e11850bfe852fdbcd60a0..88b22c59ae508ab535d5ca0a1a617ee048e94e7a 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 3c9565df9199bbdaf110680db04847fa67be4db0..efad434e30796e22868bd5102dd016481563cad2 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 bd4aaf5a2d630e81c0696420a20a95e6b3559611..5f9cf2720cdaab2a516e6abc9051a801604675ab 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 bc95ec625bbbd6e67106b1bb7639a231e7afff29..245d96dee01844f84ebcc2064686adb46ae8088c 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 36ab017c5cbb01e9acc64a6aecdf0bc26903b779..121f9cbc960f836c96a082f270c80e5fc47f2504 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 2380c8e5d9edcd101ec47cc2711828d488bd7ac6..a51e82f29c4bccc8fb2c9e6884329cdfd849b1d7 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 3184f89ced9557a17693b796d230d094e6bb12c8..de135706ad3f8c3c9e93f7eca5b4ee872eda03e7 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 496ce779ffb5739d3d757b905410cf4c7d9f5ff7..e6dd48018e7458e9b258e1f009c9150841bafc3d 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 1247bbc19f9763650f6366f09744679eb833748d..9d519e14147b222db416ea8e2a5fed715e79131b 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 6e64ebc7fb3e9d97742ae69443d2f232d8049ccf..d36b28df978a78305686f9ce64cd30f9e45fbe89 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 07e7bb84c565c1c3d12da853d62e3a0c43a44b16..6c565911eb44490c98676e2eb6e40e4c8adf8524 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 efa87a2f72cca04b2ab64e76e7ce0bd83d63f3e7..55ed40c2fb8d3162ee39445bc96a5186eb8e2903 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 0000000000000000000000000000000000000000..67053baa35fffd7b6e38a251f2a2815d014539bf --- /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 1a3d1a96c85dc2423e51be7e443f2137251bfd61..48ad9bc971c23ba337abe4debd671e1fdf1a1371 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 8acd8e0b88b128efe94818bc9ba68e44bd340920..0f8e514388304a64cf52857eb5409e34e4668b2f 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 b59752d7cc3e5e43ae5bd44d60e6c902fc700121..02499d54476f10592b465ddda8e37fbd329a8a25 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 349c7acc3db37ced5e59ea1b1655d057e918bbc4..6339dad7f37833e88ba94500e74a748898597ab9 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 030bb2c01a72b1b1dced2fd09e25327557077ec7..96f9bb7053e0be0768a600e82ae8e0a86b2a22dd 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 40362fdd49688f9ef5c0dab4e19b5b49661a2d5e..8780e54bb7c330ff2532428b21623a09af1bcc3b 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 8c7ed20e74822b25366782ff02f8fae8df8f21fb..8be43346bc04dc449c2dd70c1f8fa59d016de217 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 0000000000000000000000000000000000000000..011d802536477fc53a671586f5d0cb0ed539dc1e --- /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 d7d5b65375e9ba905eb0e90bbec175f021e7e83b..c7ee3914f25ccf73d86829e8d76e5582c15b34a3 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 8eb846ac9c56dcc7edeaa0911dc3c3882fcea489..d9469fa4b7ae72c3f73699780b00dfb5ea056dee 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 9188003ce66dfd98bf22c5e2556b88e6af985a87..504e6ae96447ebef389f73aa2aff115334ae93ef 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 2ef77caa6f69e6b19c26e14a6373676f51aa4593..0ae90c1aebbea2a9e4fb48c3a988d961478e36c3 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 521133cb08fcaf2760b86b9543389f5e2c835841..3b25b4218f19f08d6f1cdc4aa85add5a7ce14fbb 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 844eea11f514439ffd12f0b92203836bda625223..9130461e4d7284b025cf14ff20e750143cdfd7bc 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 c0bbd6e71db314b17c7ab8add82330e3fa0328b9..2aa09ec0be818f870f1415464c4d64e1670318ed 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 7f02ea9cefec0540d33a7b3598ae529ec864b916..bcbfa6d3874f47fd0bd207c0f9a49dd78ecbbcf8 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 485edaa1ff27538b0b5dcba724c5d14f2bb0f0f6..0e8f12823d1e4dd101105923e5d47bc2a38cc50e 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 c26d8b6d3607a68a1ca863e78d207e83572d2297..6ef992ffff670a35d96c96b75f56d60d1f916fbe 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 f815ac02e6e56346a285f65934237d6812a66af2..2270e56e62ac36235ab2b96544017ce36f6adb23 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 b27fdbffb7d68df846c0769ff663a6382b8b4cd4..bc05547e641d2192594dc78f066185c0c047123c 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 5f56fb7297f476887c021987c89ad04b0aa8ff09..d9b13f532735e2411d642345e50fc555dd086b91 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 ff278d4d7f2335e574501696f7ca29da37ddd0f3..5cbc9a07b6c771506b584d30d80364a80bbd5ae0 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 13bf1d674c7c4b795c7098aee7a902eb29c53620..7d42a3c4e7bf9a9ac1a4538514908ce583491f71 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 0000000000000000000000000000000000000000..fb05a50b4e5943d3e64e358e6c50805a6707d978 --- /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 0000000000000000000000000000000000000000..7a96e3fd4f2f8201574daed34fc31c50cd2a5266 --- /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 967f3f4f92baac7a3a9d1ea26cbf54d7a24b43e8..8ec53b0c66ad2ec983e0be83145457c157e367d2 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 c8902f1dda4be6866995bd562c712ab02105b67f..68423197f3c8bac0aeb6a9b74a184b833beb2b1e 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 7976f7477171f26cfae17f7b8d365344c41907bc..8f86d6e7ba93da615c6ade67bf4b2e3c767fbe53 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 24620d91ff5a34b627c6dcadf014f6457103ca82..f8ea58fef3ce74eb899127652e258e269940c000 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 a8236b4b60f1496c3c43d278a9dec40f9a4cc8da..a34773513d93392478caae5dcf004cc067b1489b 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 0000000000000000000000000000000000000000..ad2ea53e9f7e1182d3b27a9f4bebf4929cb13062 --- /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 0000000000000000000000000000000000000000..d357febd882e3eb41c3b2125cd8b7f8c91df706b --- /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 1ec6946cf38c3d976b2c208d3cac7913bb9b3b67..3a293cfc026f4ada37d7e33a01486ddd809e1406 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 e22bf9ed653a462a87331090ebff7ed0332e03cd..9a432f73d3f04e88cd0d82293423a41c95b98e79 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 d02aa4b8444f635349903b401e532bf4aa4c95a0..b4d644430dd1921ad12df75af7af4ddcacfd6b74 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 d19314ce9ce18a2070c34988ec272f0d328461eb..d283dc7107d746dc6ab77a355819b5c890034d02 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 0000000000000000000000000000000000000000..1a4d1832c7e159d39e30245b7de50321d2644086 --- /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 d65889be3ac03e45c2ec82d86ae5bbb1f1cb02f8..5e0c25466ebef7d5dfc9df1e88f265b7c767a3b5 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 d872204c6b0e84a1762a3d715b622a019ec4339e..afc5b40f9db5b7d0d647244c875dc4da20bd7198 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 ddce5c3f715033a637012a8cfa2a6d0f2572d2aa..01c1264567ce7a112c7db9fbe03a352e3ff34fbd 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 0000000000000000000000000000000000000000..7205e882c314528629fef93853cac41e93a6bbe8 --- /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 c0d51e66db334b8d72ae94b75ad08c2d863b64b5..f755efaa0e12405ca877d84f10ab64a61287e62d 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 2fa8ea6467c1ad6a246a60e35fcf2404b7e337c3..15094a1eee4019fa1edf5401a94270c24fc20000 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 0000000000000000000000000000000000000000..9a8db94401cd7c2b5debd3d5aaa602aca1079ab5 --- /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 f6c9fee7a1c53e721074dd4348ec10b51f17dfaf..61765913464fda1ceccaff42ae4aa1b4ab4bea78 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 01c47b320de58105baa6aaf210dc239695c9b305..f0bcda5793013a0bcd69fabd3d3ee99186d0aa87 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 03dcd6cb54e6de4f6fa055af5886c832f14a6e99..d0c3fed4350ba2f66f849a1cc7c536ae08a9ed7c 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 0ab63bb53951e6096a37f8555225f49299a85b4d..8aa693d2871475fcd884c673f50657123f0f87f1 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 0000000000000000000000000000000000000000..0d0fc081a118d5dcb284d882dc8b542395033b97 --- /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 02744e50647ea69a93ef5a34a6cf0df25efb48b9..b1ebebdd213a1004b518d308ad2ed44902d1170a 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 5bc81a6daf66aad41ad69c4a8d96d6421ece5ee7..ad574c82b4649e6a773bcec8e8aefee01aea3e6f 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 bc354a5213eadc2b4229efde97f959759b725c90..758673229afa7b17b1e8394c7e7ff0028965fcd7 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 6cf84f76f919c19701dfdeb571259758a0bbc72a..cc28fff96c47ab4b9fdd467e60b3c1130af19041 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 34cfe868c0b3381e75076f8b6bb5e2b5a34b3fbb..6a443571d0f28227556094ade34c0255cbc5ed30 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 d5e84a71d2763cdd72e6d67a1df6ed19a9a4de99..edc68f9d0c7add71e83a87045a880102b1950e32 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 33ac2be1832287ca2f4a5806503ae88fdf95dc9c..ec1658b595d39f7c61ad627247ee0055b7cc3c70 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 fd18b3fa39979a58246d1569803d524edbaa2081..dd45746c8df5b9df3fd7e39f2301230ad32efa72 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 2990b44c7f4c19f0495d92a2400eaeb4339e2b94..9dd564d715cc8ccd32cf75c406e3793296f5ae47 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 7082794bba76b5bd54e6619e17f9c02d95a3dac5..48a6d81b6ba1039fe464c798201d3fad2201084f 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 e540f1960d6cd3e12021f96c36d218513ae86d79..6d3313624e37760b4c93371adf60de4c29dd76b4 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 7eb4238679eb855d03dea5f70e82b3328285a208..2a04beb9379646a1068f9a102eda25be732fe64e 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 4b8dc5525dc46c3f22d6692499553e1c30bb147f..02f2249862d0f1809318613495d50c79bd0e2d8c 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 2b7ae5d9c6e6ad46057e10db950d3481692dd7d6..664e26740629a886473e6b56d43fae51f17cad05 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 0615aed2ca03fc02a5ec354ee0169e5467d4a24b..b18c121607abdb2ea89b307b1404cebd3d9a983a 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 ffa509d2320e33479b7a0c9e6959462cbf11980b..0000000000000000000000000000000000000000 --- 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 1b5870b429b13d5e0386a4e80ec612aa509d31ba..e390b78b86df20b3fb442c7aa347356ea5cb7b5a 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 7f28d97bf81a2d454a1218aaaa0891dc83ee8fb0..0000000000000000000000000000000000000000 --- 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 613d57cd9c8c8700da20692c513bfacd25a3102d..5cb94b8bd54747d802758e787f930659be97ae83 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 22fdc7f51c5c4b5dc09b214423c89531265a63c9..600e462b390e2191e8bc756e62d02186f1454dd7 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 b50b14258ccc72fe3e39996dc1026c8139e34594..a919a30541963af28e0c84b4b20d17666cb7a4bf 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 0000000000000000000000000000000000000000..49bc0be108ff69326e4e9188393e68be58ab0a77 --- /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 4c3f9fe0760bb1f4688495368940300e014caffd..6bb717a0344b0617686996c9f737ba013627f798 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 0000000000000000000000000000000000000000..84f7925d21804d7b5ed641e636316c67be1eabc2 --- /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 0000000000000000000000000000000000000000..1b8b0376331aaeb93d1ea0f1aade8f3e889fbc84 --- /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 9599dc9407c3e0bafae9c1a060cccfb9d703d7d7..6b9630fa6b70090822a8ee242ce542a7a0430231 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 8b25e098b2fe2b1e352de1bbca699157a26926a7..1094d7f0f7ba44ac6de7016f83e89c0408e11590 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 f6114b3c2134b582ba3a5d20608ffbf441b3e459..e2c57d514cda6c839a49e8ada24340cfeb5c174b 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 31703f8fb2a50fac88d7aae79a132701d979fe68..6cd2ae018fb6c21a9f0cbf957f8348b66ca55d48 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 3128f125cd9ebabcf869d6511e8a76589b3f643f..488ef4cfedd4742c58eabfb01183125639397206 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 b5b26d7cc4305a930e1a183dd7ec4aefb4b21ffb..256ecd59f4e94d951376335784469f1c49133159 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 0000000000000000000000000000000000000000..7e37d1348749d8cfde735b7dcbf8efbda7de7cd5 --- /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 952aa2856370b6381fddd8522cd363454b870651..1a65ebd33577bb8d6062620f65b79bc45f87998f 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 91fe3e5b22f2c25940baae30f6afcc237674a091..ab7dd90801cedc95dd734aeedc975c073f505655 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 2f0a770bc71c0cc078bd51b307d2ee4b4dfb2671..f16dd62bb1a4467cc32fb2890f943a7818b5b150 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 735e83a0842a6327af09d59dd22c8e705f6b4fe9..3ebeaa6262b7a19e8fdd7181a4435fb11ec7da3b 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 1bd73bebe03b0beaba568baac8847be053ff7f95..56a144bdfb8d2c5542b314e36be26170ac66df03 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 31d0806df8a52e75542cf6a259ae434354447544..9be6d56ab345c4406a673d14546e1850d4a46e20 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 05a997c62ffa1044ac74bad4273a6c1f88f9a562..0625431462cb2a870c178ad93c4b9c28836babc5 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 fcd15355a101484f64854aa716ad890f21035ece..a6b99e583518910dca70bb399fa59d8aa86bd630 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 0000000000000000000000000000000000000000..623f86a61c2c66d52f94922bf8d4f1497bb7ffe2 --- /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 0000000000000000000000000000000000000000..94c70da276c94156282708ab8492218786a37940 --- /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 170fde7b9cafa74ca25f9ddd9d7d2c84141da78c..4ba8932fec259bcdb74f64356ce74fb28db7c879 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 8bf2adf484e23b9b85be32abc848337b8b84b637..141d51bed0f8ff67d8af858f7b0c144b3d6551ed 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 26deee3b859849718a8b37af068190dd8512b5d9..fbe08dbfe7b7b51382507d9a618894190467ab81 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 46dd4a228645014816c8f827d0d278d7dd36e816..cf783053679a2c36ff56e3376d52d8b7ff2a739e 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 0000000000000000000000000000000000000000..b3c3caae4e4516c6f19c773a8344167a6abbe2d6 --- /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 f78f7fbf91487a1b6831f06c4fc5ed744de9d561..ff1daef8b80d0451c6b832f23232af875c49a708 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 439b721632d06a76287d8f01d5e6c2797f2fda20..3e01bcdb0f9d58c8dd7a15474a2e57c3de2edefa 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 2e79b80d6105f347fc226cbe55dcbedaac255ffb..8a61e0252bc3a585e2176a15a6a899da843cd2da 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 2c6b153370e40bae607e2beab2c4eb68f7666c3c..2cf094c091a6e378d94d8bf241b116a5a478d8ef 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 72642cfbe63fc9c794d5ace0797aa9ed5b6a0ad8..4e2ac8a50f14f88d7399746e96ed6b94acee9645 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 efb3a2f9ffabbe8ae25b8fe38d29079fa63f29d7..0a635b7ba82e9ea6b027df48155764eb21451195 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 2f83b0b8d992ab3eae31358ea1743d23dc099b1b..f973e67599c28a42d604cb6913398070c8c9af42 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 6ae9eb078e2623269042b1dd015d857c6b01f244..8b6a0c164e908561843eeae5c6aa7b98d702b12e 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 13db2d13567da8baada69d693da60ac2f1007490..66bdfb15c69b74184aa3389b23203602af9f12b6 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 b2fdeafd37c3534d9f6fa653d782684b48a137d8..fab7317868a9250a22221bc98701ad0814ce121e 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 90a7eeffb0479d575acc62f99ea73c3dc54a207f..37d055e268522f49c06212b825648c838b98e3f4 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 1161fc8256cbe0a36635a8391ce4c9be32f92879..c43640b65245beaa6fc8a30eb94667697fe42052 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 27c13c0cb3968f6f70f902c0ec6d4067c9ff9c2c..052206002610e7d6ce79e13d06fa305d7420d499 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 4b7e4c8a3ca4310b8503986361f040a7c60e2508..3a6c8c97b221965521410e32a028acf357a212e0 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 5fbe095c4f355e15ef5c80265fcf1e023f0f141d..45f20fccad9049320888f36554d63a4c9354b9eb 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 33f2ad79ea0c89099d279c7b09ee0f19ae9cc6f4..ba54e5f4341293a71bbb35dfd387b49b07ef931a 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 a8d9a38729f4cc0a1a5e9393b49e69ce69bd71b0..9ae07c1c900c85610f1ac175797f6cc7a838fff7 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 077e72f55764fe4f01ecc04a655cc2648a9fa36f..5beaed5824071c6d422ad2580e2526dc0d1dd72f 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 c6e1c5a50f4a43ec04c185f277076384eda4b24f..00879463276c9423815c916a23016910c23e7bfe 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 255b30d60ed1129c54844cbbf222782c0923bf28..34b74374b230be5742ff7be736bf9885c8d48c3e 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 75b72516a3cd28eb1e3cbbb0d1eb76f4872e80ae..6c2db85d7942ef5e34725516a502c1953763cb80 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 27dcd1063bf2a2bb2532d7f229ee4c6077b0ddb7..946342922289cf0eb557bf40a814e52fafafcbf3 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 0529fce2b16d65a581aae83689aa73051ef2ddc2..57bccc6081831f839fcecc77ea2bbe0c5289b180 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 d773de4375cb3cd7b4e3c83cbc4588838c48856d..f04319f23de3eb43bfd153b33063f6b85a826d60 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 e15da80b3b1bc78bbbce560f0ddba06424d38bb3..5c9456b76a637084c7634d4cf96d94f7beead1f1 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 becc2dc5dc9b80e65b5417081c6e322de5d13f1c..4240263dd0b830627ea4823cb026aa95c4c63e08 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 8d70794a754006eedfb64c9e30ff022cf1d3d7c7..302f5adcfb1f7f47ffc3872b2b44001851edf7bc 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 241ec3b42c9e40492d9125302bee2a7eb3f170f5..93af03ce229fd954bb952b68c8cf4fe0376f6c62 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 9f251f54d6aa96cfc1ee58e97ffd24716a387fc3..7f2454c811a7ae68437710b59d7f7faa1cbbf504 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 0000000000000000000000000000000000000000..549633b7dfbdce297c6a767a914a5dce6c1149ef --- /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 337a1585b1b4cc81121624df5b9659ffde9b0b34..7f5a097daa935367407db43db69cb1559f486d30 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 ba716e1dd13b1acac200f8f20b9e40a82dcc1f4f..8ca8d1feaa1e8a52ed3de4128f27a823bcffff45 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 7a29ea7cd1dd12a76b42ac1b45f523312a7324a9..b512d5f5c75135b13a23153d4c4cd9ecab6b052a 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 + ], + "deps": [ + "request" ], - "commit": "aafc01726f1b3160321d40160298a0e1b054b382", - "sha256": "18p55zghycsx88dn0iw610fklkhi5chzycrpjb4xzs5x1l5l2v08" + "commit": "86bb7249bd4b0c8ebaf749f69f00c8faeff11063", + "sha256": "062m653pyzddwjf75a6clsdkihfg35b3phbbff6vdyymg77608f2" }, "stable": { "version": [ 0, - 2, - 1 + 3, + 0 + ], + "deps": [ + "request" ], - "commit": "2b353f9029f359eb4eb4f0364bd2fbbedf081e42", - "sha256": "0zyqnwmrj7yigk1z9baqxmzxnwhpxfjz9r1gl090harl69hdp67d" + "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 + ], + "deps": [ + "seq" ], - "commit": "57cf7e6da30250587c28ebf592d7bca9a3bae1df", - "sha256": "1m9r3vicmljypq6mhgr86lzgi26dnnlp7g0jbl9bjdk48xfg79wb" + "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": "deef2bb343463f5196545f1dd8c2a32d0cb3b146", + "sha256": "0aav9qdswnw7ynqlzn0sm34as5fj2d85syxgg8zjabzp6646ay29" + }, + "stable": { + "version": [ + 1, + 1 ], "deps": [ + "iter2", "promise" ], - "commit": "c1348cc02ed54ccf49b7f39f1ebbf7df17e63c74", - "sha256": "18li54j0rnx64nnaw2wp2nl92msdryb7sjxmaip6b88q9qiwkdi5" + "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": "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": "2d75594b8b016597f1c2ffa15f9974a0fa825d8d", - "sha256": "0l76km14qgj9vww8znl92dfqcbn6vlb1qngcwp35q8fwxi5biy9l" + "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": "2b4c341640c8191a39e4bc28d6cd04c7d6dcbb37", + "sha256": "0ni9cnrv464fk840i1ll241kzkiy1zc6nfrbdv3ciixxdxbshxbn" + }, + "stable": { + "version": [ + 0, + 2 ], - "commit": "12678144d17edf36d34e6bcdc5435593e191d96d", - "sha256": "0fld15h92193bnbmka3ikq27hggxvsikzlzq4pi2n3kknq9hyh56" + "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": "18b83d29dae75239e22ca73d91eb09ceca5e77c4", + "sha256": "0gb3y80qhk1xgdx0iglcj78wvnbxnaiyvfgg0bmfvhswjii80160" + }, + "stable": { + "version": [ + 0, + 1, + 0 ], "deps": [ "company", "posframe" ], - "commit": "849867a05efdc1a93ef989e3a0f8944522bf16b3", - "sha256": "1q1iflh9sx90g53hl5hkgv5g09jm3am87mg3nysq1rjkm40d1nc1" + "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": "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 ], - "commit": "67104a38763cc819644f711248b170a43bce151b", - "sha256": "1f6y6cr67gps9jp5hd20xszfd3k26v70g6z4g5db6wdkvlnc2wkg" + "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": "61a38c9d50fa9d1e38b2fa550d07130eb9322524", + "sha256": "0c8assn7dc8dhzyzk37x7y8s266pvr6hs0vh13y65z0sgxk59i2w" + }, + "stable": { + "version": [ + 1, + 0, + 7 ], "deps": [ "cl-lib", "counsel" ], - "commit": "0536af00236cdce1ed08b40dd46c917e8b4b8869", - "sha256": "04qm5dqxnl4s0axbrin7a7dpj3h8rx096q01bwzfs10qsdx3l7c0" + "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": "08208ca7b9dc4ac940ce9ca1f79424d2f3d3d391", + "sha256": "0yspf51h5b7wbqvi9lbd22chyw799n5d05xdzl5axg0i33lzk7bq" + }, + "stable": { + "version": [ + 0, + 2, + 0 ], "deps": [ "cl-lib" ], - "commit": "f3b9bfa668fcd38da8a9dbef0e33a536be239468", - "sha256": "1qnmmk97963j92d4h7vjf27dmiwnjk6q2ls0xy0xx5rg0y7firjf" + "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,8 @@ "repo": "jyp/dante", "unstable": { "version": [ - 20191004, - 1233 + 20200131, + 1211 ], "deps": [ "company", @@ -15502,13 +16445,13 @@ "lcr", "s" ], - "commit": "38b589417294c7ea44bf65b73b8046d950f9531b", - "sha256": "1mnmn635552zlwd4zr68jbvdjipl6gi4mi6wiyck28fsmq8kw96h" + "commit": "4955bc7363e250d22579bc34b0b4ab6611c0766c", + "sha256": "06xagrjl00iwvaf0cli3dhhvvn4x7ysvkir4120lwc9ispzc077m" }, "stable": { "version": [ 1, - 5 + 6 ], "deps": [ "company", @@ -15519,8 +16462,8 @@ "lcr", "s" ], - "commit": "3bd1bfdd775a309565a850e37dfbd42f1b33068e", - "sha256": "0f76snwsy735r7pl3gdzvajsmpd12qkj03lyjxq1x44a79a1gfwk" + "commit": "38b589417294c7ea44bf65b73b8046d950f9531b", + "sha256": "1mnmn635552zlwd4zr68jbvdjipl6gi4mi6wiyck28fsmq8kw96h" } }, { @@ -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": "28c85a65c9c61f2aff50bc5e93f61cde26a5d9c0", + "sha256": "1wciwx9zk28r21v9ampjd8wn19g19ia7hiq1x0hami479dxwinfc" + } + }, + { + "ename": "edit-chrome-textarea", + "commit": "d9e8d07ed13d190a8a7eab75a59ec5b9a01d97a8", + "sha256": "0xp7925y04gr09j204r01jq7hqjp32gqsazwsbih4fkx0n30aqbs", + "fetcher": "github", + "repo": "xuchunyang/edit-chrome-textarea.el", + "unstable": { + "version": [ + 20200324, + 1513 ], - "commit": "3b800c11685102e1eab62ec71c5fc1589ebb81a7", - "sha256": "0crwdgng377sy1zbq7kqkz24v697mlzgdsvkdp1m8r7ympikkj6w" + "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": [ - 0, - 9 + 1, + 0 ], "deps": [ "flycheck" ], - "commit": "d1ca6d9d4d64aa343598018134506930434ac5e0", - "sha256": "0s7kbs764nhq4nlfbbilz5clvadcyz5bi0ksrbm9kczhagisxnjv" + "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, + 1, + 4 + ], + "deps": [ + "cl-lib", + "flycheck", + "grammarly" + ], + "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": "7b4cf8c9ba5ac65e3bb2b62f5b72d45f4c9cf7b6", + "sha256": "1m5da6r82hk0c2x3lw03qnkk79sx67875afw0ybblj3cmfk6szd1" + } + }, + { + "ename": "flyspell-correct-avy-menu", + "commit": "be7986f018c7029a8e581059bec31ed23a464e0a", + "sha256": "1mwdg1q7818kl5r9rnsqd11p9b2clcm0bxph4i1rll9rvggfgjp6", + "fetcher": "github", + "repo": "d12frosted/flyspell-correct", + "unstable": { + "version": [ + 20200215, + 1337 ], - "commit": "a9b53c52ab350aead0851e140d813cfd7b1bd680", - "sha256": "1r9hmz7sihhy7npv6nxp04sy57glzmfax5d67mwn96fdnc0yhlnd" + "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": "8c8c47a863a397d947999fff4358caf20bafca0a", + "sha256": "0ayb57p114z64ppf74g2wpm2g2iga2vrl8rhay7fnfv1j2i4xjss" + }, + "stable": { + "version": [ + 0, + 3, + 0 + ], + "deps": [ + "cl-lib", + "language-id" ], - "commit": "a1d3ad48f21086788cd1effaf30227308a18d98f", - "sha256": "0xa3ajx6izb086r4gwxfsqwrlnyil6yrqgl8mhv14zfs93k7w8p6" + "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": "56a864ecff99ae314b838b755cf26af66f4f9323", + "sha256": "0mlvvagdr2bj13ibms1vq8p9zp10ag4qhyfklkj93lg6j744qav4" + }, + "stable": { + "version": [ + 1, + 0, + 2 ], - "commit": "31af5283eaec207bc864022a28e2824132471eaf", - "sha256": "0f24zsklkhhvj6qdyid2j1qcyhjnncxjma93zhr0klvn5j1z3aar" + "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": "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": "d218b4cb3726476caee91db6f6c920856ab992bc", - "sha256": "0z427rvvhw5raql5391sajm4rk1n2y8khsy2wqr7r66fdv5hg2mg" + "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 + ], + "deps": [ + "cl-lib" ], - "commit": "4c0ef992a6fcd2aed62e3866d56650463108ab5a", - "sha256": "1rz5wf19lg1lnm0h73ynhb0vl3c99k7vpipay2f8jls24pv60bra" + "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 + ], + "deps": [ + "fuz", + "ivy" ], - "commit": "051eac49cae32b16fab2e06ff0115cd8fb5dc499", - "sha256": "1irp76kbg8d7wmgvfjbb4c3wmd29bdrl503jkq4w52fl57g94cvj" + "commit": "f171ac73422a4bae1503d63d804e691482ed35b2", + "sha256": "0ir1ighdlkh7ff1n607rwqyw2m9x9gr1ss4abdx6walajs7q3dki" }, "stable": { "version": [ + 1, 0, - 4, - 2 + 0 + ], + "deps": [ + "fuz", + "ivy" ], - "commit": "051eac49cae32b16fab2e06ff0115cd8fb5dc499", - "sha256": "1irp76kbg8d7wmgvfjbb4c3wmd29bdrl503jkq4w52fl57g94cvj" + "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": "5d0c799099aa5810858174f390e28fff3894bc06", + "sha256": "002h0i93blsv092pnfmzsfx0pj98r9glki0ki9n7gxg1z3nb0ybp" + }, + "stable": { + "version": [ + 0, + 6, + 0 + ], + "deps": [ + "cl-lib", + "lsp-mode" ], - "commit": "2760d4f7c87af4af9f9917e51de0263f6ed574ac", - "sha256": "133jqzmqyhl3wi9zs38cpfli5ybz598hbjw22j393rkbl210x6jl" + "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 + ], + "deps": [ + "s" ], - "commit": "fc4b2f0f8a07db107234490fdfbf72f8b76a6643", - "sha256": "014fivh9shi7p3x31bl22x48agrgygp0pf2lgzzflrxcynmprbnp" + "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": "0dfab46a728a21c91658ffcb14101b182cf1b403", + "sha256": "1c17r1vz6181plbhb5nh36q6r2rwkrxhy45xmk7rjghmdd765f2r" + }, + "stable": { + "version": [ + 1, + 1 ], - "commit": "1bed33b0752380b548b822fe72e6858c5fe70c8e", - "sha256": "10wl7kc76dyijrmdlcl5cx821jg7clsj35r22955mbbgh7zl1x07" + "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": "0177fc4e7edd705db59b82c83a24db51dc405890", + "sha256": "1whl7kz4im2jmdz99336wfn152q0l3qwii4w7sn45rlsm2sijiw1" + } + }, + { + "ename": "metrics-tracker", + "commit": "e0250d97fd363b90ff4b69757cac3370c37c4b8f", + "sha256": "1823irgkfpsjl550pkc9qc7j5qkx1gw1b3116b203g4nhzh20h6p", + "fetcher": "github", + "repo": "ianxm/emacs-tracker", + "unstable": { + "version": [ + 20200126, + 1851 + ], + "deps": [ + "seq" ], - "commit": "3cad357cd5c0f7f949fc6c7aa42d76155d036e78", - "sha256": "136l0lm8lv7fgpzply241fngxfl3ck11raamqwislyv0nnjwdfdi" + "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": "2b4c341640c8191a39e4bc28d6cd04c7d6dcbb37", + "sha256": "0ni9cnrv464fk840i1ll241kzkiy1zc6nfrbdv3ciixxdxbshxbn" + }, + "stable": { + "version": [ + 0, + 2 ], "deps": [ "colorless-themes" ], - "commit": "12678144d17edf36d34e6bcdc5435593e191d96d", - "sha256": "0fld15h92193bnbmka3ikq27hggxvsikzlzq4pi2n3kknq9hyh56" + "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": "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 ], - "commit": "1c8d9e172e57bad26ebb94a8cb22a959ebedb9a3", - "sha256": "02v0h60vglkjivwq6n0xbg6pyf7dd9ndfmywk0amxq9gg0szybbl" + "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": "a601855cc96e303e38051d0d1af3402721dbb969", + "sha256": "0xbh5max7wbsw3iaa5ai9l5brky3mykyzn77a4w5r1m1f4a67y97" + }, + "stable": { + "version": [ + 1, + 1 ], - "commit": "19c04c1042fa1ff45bf923e9e50271c0bb57268d", - "sha256": "15qsc494xl4mwvwfybla45q7l43cxdd827d7nx4wfmbpw0c6cyc5" + "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,32 +70293,35 @@ "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": "0d6523f85b48080582a84b1dc1213f80de40d3c6", - "sha256": "0g01yrf5zcpnf6m4q37b3qzkqgs5s97b6l5wdgf9yy8rgj7rbpgr" + "commit": "ab5e9aa9116010e5da1995bf19ff26f55b93c214", + "sha256": "0h90vagb91zskvmy06yq0b1vjbkqry0fkxiagg4d076rbx3ryc0n" }, "stable": { "version": [ 0, - 3, - 2 + 4, + 4 ], "deps": [ "dash", "dash-functional", + "f", "org", "org-super-agenda", "ov", @@ -67027,8 +70329,8 @@ "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 + ], + "deps": [ + "autothemer" ], - "commit": "30eedd346175072e013b7bcf6ae1795f022fee0b", - "sha256": "01yiz4zkbmb95whgpg6n0mmjsi2fvnakvpg1cnx68k1nmd8waiv2" + "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": "636059b6ca21d7dd2d46776d799f94b476c62ee2", + "sha256": "014zvdqizjqp1cxs8a45nj2nfpvjsfmls41780pjdvzvrvyq16p0" + }, + "stable": { + "version": [ + 0, + 2 ], "deps": [ "dash" ], - "commit": "49c8b97b286c7403bf239645964416200ea82dd5", - "sha256": "0dcy032g4jc027mwq8dfadsc05bsi1k6yiab3rpdxwc17c9pg9x8" + "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" } }, { @@ -79368,12 +83031,32 @@ "sha256": "11kcqpw1wrhghbw2dx3pqndmq9a1rbqir3k71ggaj1x2y2arzvm7" } }, + { + "ename": "remind-bindings", + "commit": "b55af46fa0ca3b32bcafcb8601ce1a3e660502ba", + "sha256": "0s6pqg9pgi1qjss90ip2ryn4604lij3z4acpg6pqhf99y4yjrchv", + "fetcher": "github", + "repo": "mtekman/remind-bindings.el", + "unstable": { + "version": [ + 20200301, + 2213 + ], + "deps": [ + "map", + "omni-quotes", + "popwin" + ], + "commit": "730b6d7b30e397f8f11a6d3d5c269df21a33c450", + "sha256": "16fk0xnp5awsq45i0wpdkzy6hwccayvwwiag9kar8kmb6nqs2y17" + } + }, { "ename": "renpy", - "commit": "cc928aed12275dc3780d7d8acc6ceca0f69ef63f", - "sha256": "1xfk3j13wzgxg56izbwad0kw4izg0hdzkh7h7cfdmdf4v6mxc7f0", + "commit": "cdd1f8002636bf02c7a3d3d0a075758972eaf228", + "sha256": "173391mcv56ljrkhl6hb9fhkl2vic9wj2xmd21hq88m3awpjmill", "fetcher": "github", - "repo": "billywade/renpy-mode", + "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": "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": "7169ed577d676690a3c6f0025b54e8477d80eacf", - "sha256": "1i94dizg3wvkvq8c2pf5bzkx8zwzcfi4p3l73c779y145bygssnq" + "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,28 +89150,27 @@ "repo": "bbatsov/solarized-emacs", "unstable": { "version": [ - 20190809, - 1202 + 20200329, + 1048 ], "deps": [ - "cl-lib", "dash" ], - "commit": "55cd77b61b6968048c61e13358ba487d217f24c0", - "sha256": "15ql8xcixgm7mbs7rsbybwszanqibq057j5b5ds89a31dw7zxf1g" + "commit": "8cd79c8afd7563a69764c4174098d2b8e7fd0c96", + "sha256": "1x1cbyd7kr1izcbbffq1amxgg1gqfwaa5y4m17ffmdrhal37mdzb" }, "stable": { "version": [ 1, 3, - 0 + 1 ], "deps": [ "cl-lib", "dash" ], - "commit": "c42a932e5c467c1ce12c42276d35bfb8f666e96d", - "sha256": "1m6grd8ym4azxi09ya236vil9ylqalli99p9fafd5zmzq647l840" + "commit": "55cd77b61b6968048c61e13358ba487d217f24c0", + "sha256": "15ql8xcixgm7mbs7rsbybwszanqibq057j5b5ds89a31dw7zxf1g" } }, { @@ -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": "e58f26b8ab9cf0522d52fe9890d39dc9e645577e", + "sha256": "1yx73wgvaf01wi26ahc9cblsk3sj98rgljb19dxc9ab7hjyncd46" + }, + "stable": { + "version": [ + 0, + 2 ], "deps": [ "dash", "lsp-mode", "swift-mode" ], - "commit": "5b5eee7122803ca405bc68b67d967a1757d4404c", - "sha256": "1vz1dd3w978b3k2ix3vjgz8i2xaxqf24qc5cwhar7n1jwjrzgqig" + "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 + ], + "deps": [ + "seq" ], - "commit": "e40a7c407f24158c45eaa5f54ed41f5e416a51dc", - "sha256": "0ibz3392d3jw1l8006h9kf8s7bg6vl7jc92bmqc031a433009ic7" + "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 - ], - "deps": [ - "dash" + 20200226, + 1612 ], - "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": "12e523d70ff78cc8868097b56120848befab5dbc", + "sha256": "01j4ci0c52r2c31hc9r4p7nsb6s8blmvg50g9n5v5h3afjl1c35v" + }, + "stable": { + "version": [ + 0, + 2, + 0 ], - "commit": "011f420c3496b69fc22d789f64cb8091834feba7", - "sha256": "1nhbinwv1ld13c0b0lxlvfm9s6bvxcz2vgfccqg45ncg9rx70rsw" + "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": "6c905772e6aa9969fd9ca500d2fe93e114130fe6", + "sha256": "0hmx2b20nrxg2lb8vplgrzdh8chgxwlbmjvbq5scddggd302sd56" + }, + "stable": { + "version": [ + 0, + 2, + 1 ], "deps": [ "cl-lib" ], - "commit": "d2239a5f736724ceb9e3b6bcaa86f4064805cda0", - "sha256": "1c0daw246ky7b1x5b8h55x79pl1pjqk1k348l487bdd8zdj4w9wx" + "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": "f096f35a6e1f27d2bc9e9093cd61dd97bc33f502", + "sha256": "1nzf7cllyvx7kwdzpf0nl3g5a8mn6qgifa60aw68h0sx9a80xp01" + }, + "stable": { + "version": [ + 1, + 0 ], - "commit": "7eb96415484c3854a3f383d1a3e10b87ae674e22", - "sha256": "19bf6vpc2b9hfjkjanji96fflvk1lbillasnpwcb6zzyq0cs47bw" + "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 - ], - "deps": [ - "s", - "seq" + 20200215, + 1807 ], - "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 + ], + "deps": [ + "cl-lib" ], - "commit": "0a8b531b3a3c8afe7235c8c212e08bfe2021a629", - "sha256": "007837w6gd7k253h7g2in6l3ihcbwv733yiffs26pnymgk21xdqz" + "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 + ], + "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": "243f0fb7fd1dfebf0f0bdf94046b72d1bea4f66c", - "sha256": "0jydy2zcbksi7db7bvfhgdh08np8k4a1yd6q2wq6m3ll2y3zd0w2" + "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": "fc7fde327f45533bb73be643e7bda1eda10394b6", + "sha256": "1ld34xs25bysxw9ialrlm6pnp5qbzx94zbb3594ghc2ggz5ph5d5" + } + }, + { + "ename": "zim-wiki-mode", + "commit": "a10d6b0fb4d5b87d7dea1bbc4e4e0495aa51627c", + "sha256": "188g8jf5004amq10gm7p9w1m1ff67l8sxlp1m38wpkivhkgfxzcb", + "fetcher": "github", + "repo": "WillForan/zim-wiki-mode", + "unstable": { + "version": [ + 20200316, + 1223 ], - "commit": "77202ac26ee6091d69d40990fddb1ce6cfcc6dc8", - "sha256": "0d2f6nz99dp3yxr7m8i78lc313qzssm7k4783w6kkvcsbpknazlw" + "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 54e5a89dd9f689a98099f131057375737ad122c4..4320a88457a4181d4db099b70e01ba03fd55b15c 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 165e0c13c8fe6bb46abf2ae0e3368c5b649ed82b..e4b739af0517833572c08d3d65bc47ef253c4042 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 fcb37e7ebad358161918b84a6fe97da660e76f02..7e611d68a0a464a6e9031e2ae1a453e9dbb694e7 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 bcd947983a346600bb5a47a618f2bf664d9dfcbe..211be0a908971f3181227b344e026f6e737dd677 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 3b746c293d88cda474a11a843a64507d24357e84..b87390d4609f850fa3212b4a8c1e20b614fdd45a 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 209a99245ecd6e04db6675196ae7adf7448f4303..4dc56894914e97edf1642010d6d7caa76603c9e5 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 9403a51df53244c51b40fdfe25ff98f4f364b80c..c771f5423a9535edcaf1a570ce42907bbf236f9a 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 42edb7c707e10ff394b6c505f0872d7512278dc4..1ee2f5d4fe7c11eb1f932be718495fa915e34727 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 2862ba7184fa838f07c2d1f0ce09e2262ecec4a0..9d0fc45653859c7c8f550acadb0ad9e8b1fbcc51 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 e9307c7e80b998e0a7b0ce325fdd9f42dd685281..1624e62026af9514041b24d70d90868d637adadd 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 e48fba1551e7829946975dd365cecac12f96be30..c6089fd5308cde777a48fa68f6cd833741670f36 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 cbff8e606f2d32f44d210641fdf61abaf4d819b5..3d6aac7e18e5a362eafe51122580185edf4de630 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 b08e3b5fa23cb1a0ff7f22f0a45fd2e2585bb435..30e8af7facdb850e94e17e4d92589c0e3e0259b8 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 d32a3fb5f1b5a8f1e70eaca2ee3d078146ea3419..f19a264c06a564e15018f559637066264c2b9918 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 1e07902365d23edd43abc3fb4006a8a9ade38b82..8c1b95a1d26e04a5e2ece638fa4a008ea13d1c27 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 0000000000000000000000000000000000000000..928291940cfe3a8c6f11ad61803e37affc768110 --- /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 bda0552e7529ad7053da11ce162989d89a6f5417..c58d12a58f89ce26c7ac09c225ec0c020ea40b10 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 cfd3a4289901f648e0fffa1bdc9c3dcc2cd91e3c..33a321329341f69b905dfb3b2b4ec7c8540fbc29 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 f194227932d08ab86d2c045e0d1ef6921fd97b22..e3d039e42232deba553a397140f0d950917cf141 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 4e67fc304b184685c10ac0daa713c883dee41ebf..7d1830c842b636e0dddf1e6cd8c103280c38bb43 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 a6437f070b98ea38101b4a13d213b2867f906f12..a1b90b83d589ba53c673c1e6a296f8facef4421f 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 ef3635aa8d296d24e06d401a90d5725bf5aed395..79e0027d5096317a1d7fabf3cc69d85898ebd68c 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 09191b38e1bc302d666780279bd4388a6067d605..916dd4a15948add29e756ba223d45513a814cb0b 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 5e5f2f8563cb8ae03d761d0b0ab136f072c0b160..975016d55417e1fcaeb52c41187ada963607e5be 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 fc1fe969bdc0d59b4374fd518f2bad74dece34d6..096b69a5e82a7afd2acb4e340f7afe64831e790a 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 21a6a8475182af29d83d0105daf42021c36acece..fd8b53372510d89e5a9835ea054368e930b98257 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 48af3c9b014f4723afb6f99caaea36ca04578af8..b98acae2a8f153a2baa3fbd3ffdf3d3e9e748c87 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 6f5839b3d06f6de0d43a11277ccb922f4198a9df..bb227512387d2038e766b4915641fe5795fad6e5 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 70b2d3c148db5f8888f7b78c84080cf1c209c6c6..53549986ed241f8a097b4979a2bfee888370ff23 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 4a44b35a0fa77cbda71f1c0d59f11c6f6930410e..79db7b8a558a7fd1ba7bece27392d71a895b2228 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 43cea9fcae93d144268cd009a784913dbfb06bf8..fba884f5a2fd4bf964bf743dc2238e18463c8d19 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 a6580581f850185aadfe6dbc7f1ae91949ae5838..6a468bd67eb5eb46f28640f6f151b0075ad2e4d5 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 19fef1c42dc3e58d1c2e479337e1a9f0634a0795..72ef081070400a639c43a5742b4edeccf05fed5b 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 7723b9482a2d3ce3370b067e8912cb4c711f595f..275aaba4f2eba04aca4ba9943e90a6cdb892e6e8 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 0ed4fe0aaad722c10dbe1f23352a674c7edd62af..ad83bd43af2f258141855d6705da77706f8d3b85 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 21b469347dfb3f92d4fb811404b33d6f2cd20782..51dfbbab61e8d8e127615acc2a7aba69b8898e3b 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 494ad686ee3bbc9a94c27b0829404842962b4d57..f928dbb6ad13f70fc31255f9c143584cf41263ab 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 9d0d91f4be54988c076ed93c2fe35099385cb010..71fa2bcd41b50d5e2efa155d87140f8b3cdd20d3 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 508d2329edc4c05c7b2967609db15edbb95167ec..94fa0be017375b27f2d6564985a8bf9643aa05a9 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 bd433436eb02319ea6c39e801aaa79d385c71c77..f7c6d80dbf1a1ebadaa06150fcdad0daa3d9ca7f 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 90e8c73e075d3dd5e6047301dd45b2f4d1410094..26c5ee4215279e429bd5e0bed59d66e632ad6e9e 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 811284491dd74fe060c572d0ca2516355eee00b1..deeb9b36c7194a6698af1bd3e7137bb7768c210e 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 e6b93f20c48862e09b7f315ba681c847490f40d7..6a1ee5d196ee788e9491a397a644918662e37127 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 0000000000000000000000000000000000000000..e8ed69a9088b36de213304eb306215a46303c9fb --- /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 9cfcf95e78b16cfd549b1f8c548adada00a67475..1397ea2d586df8aa414e39125c101e13e66559c7 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 2c36be1c21bcc442679fbb1a0201d5034f1d478f..692b82dc6887462f4b4c9e3b4fbc33cadd5534ef 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 4e960524b94f74ec06b05349f523b15173b68373..060abda33d0d14b5c6967004a0777a1bf696dc45 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 8522ecf9c78fc7c92786a8c696326d90d9455c0f..08841eb581002760ffab7936cf917a1f41ea8026 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 7b2992201fc7515a61bdfa475cf85accb6d391dc..b4ce588050faafa0dfff4d4176a83f92b93a7c9e 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 eab37fba19a74a22dd432c842a0366c77ef018f1..5f3a1ac91bd67604a9ab5e0bf43db039f17783d8 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 3c96ba91165159e2c56586001ca98dccb1d52572..4faf1e28b1cca979143efd6d9254d39af202788a 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 4ff8c759a2605249daabf44c09ef315e59f93083..e1d1fa3070a9178a66cb681b241b009186db5455 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 b3e2ed5101531ae45b109699ca154cb1b09440e8..475330a5fe57beda40142e4ed8e46d6ad5ce1723 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 764d7004940d7a7cd435fd9017652f59ab690d7a..e9f42d2b9b5e74abcaa0a7f5f172109db3062b77 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 9893c6085a69bba859a729eb2ffc9180f6b3da1e..06beff03f9041f49c31132003098cf4a02aa5814 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 3a46f68e77550e009951ca995d090f065d0d49cb..8fe93d37c7e877f1aa548704f842781f90de023e 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 6a3f581c4e8121c2b5a873aed8bde767492819bd..d0827bf2a7ff915cc86188df16075cdd8e1ab733 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 ffe597b00db8e833f8737a93b26e7f43744994cc..c7d5f7649783c195c7be65545916ec1693819be5 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 38b92151b29f5a8f1d7b7e4a850615258c555cad..b2a13e3db7cd27b7c6e3611f66d8cef112253b5c 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 efda2c583604449aa841b95651b4414abe294e3f..a51f5106930e2705febc0b2fade757a18715dda6 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 a7a6b35a24a060f57d31929972a8aebfe095e48b..e28b2b43061ea537e79f28fb21ddc0a523082a6b 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 567f47520352799555ee8ceb544613dca076bb2e..dcf42b55c5c59f25250c74bbbec774769ea2ee5e 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 5c7ddfb34d46fbbebb8ea2f625cbda600ff7a269..fa63ee90adc91e6890ab8e8d3bf7c8cb2ee57d98 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 0000000000000000000000000000000000000000..093635b10e42f9205bc744c57846ede85be5d91e --- /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 0000000000000000000000000000000000000000..36dc41b7ef14446d5e30df9137b3ea69691f7520 --- /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 d9c3bd0825dec1baad620c2f3ec82f4353433a9a..9bc8e1bc920fbd088421cd31b13f404b3d096eeb 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 0000000000000000000000000000000000000000..cb658e8fcdac3a837606c3ae9d523bba29146d05 --- /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 0000000000000000000000000000000000000000..3b50532d6a0dfb674d518b4258b86a6d76306c0e --- /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 6bb40f0166d1f5da59c178c176755242fb5aca15..7f94b354dd29fc7d7d8c07e02bd7c17d95a78c95 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 e974238926167f2c8725f4c8cbc046ddb4e6ab13..7752313b2a7ed62d6c0d6b52e66e6dc8276f66b2 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 933644cc471763fe21346fe055c6a1e642be46fc..d429bb4bcbbfc9c457e563ae717558de60cbbeab 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 78dd0d095414a0a1023fab8a3f77bd24b371e779..4e92856fee2417561ffa64c084618ec8b2b59faf 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 ac171f60ead75d4664a8cef768096bf0fed6182c..cbb9f7bd5b874decdf3f11775b6b87b10e465d26 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 5a13d91aef2cc9cb3075a4b9af9638b92b2b9842..18d9338f90932ffde566c435bf2ea99fc37e3039 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; + }; + + nativeBuildInputs = [ autoPatchelfHook desktop-file-utils ]; + +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} - dontUnpack = true; + # 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 - 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 + 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 24639f3bfd4625653d093e4199dccba1ecbf6cfd..b10008d0c4992302b061a373dbb8cee9c372db10 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 8e52237d949d2ae337a063a99112509ab9cbf7d4..a75233fcf359830e0b592e959c2b02c1fca6cb9e 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 6714f917315c801aadfa3376944f6c8ba43ae9f1..dc18bd694c696842c6a29d47c39948c4cd3a4f81 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 48af4a99dadaa27ff611fd7609df53680e1f576f..3df13260d51f3d416c02cb73ee7673b604cfaeef 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 ec2498aa69b9aa2e43108f683c04339879d4390d..9479295e7471ff92c4f6f02fd16dcf096187ee63 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 5d5843890e14b894116e320d0e53088bca371830..a5117f3a678636d1b49f463eab8073d8678f9910 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 8ca3f8cb2a9d3373cdf2ce630d7b0fb03867799c..91e2427a6c84a6998a4c1631471865fce90842ed 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 71043cb78fe13d69173bd0966e7856ecab76124a..0b78ff54c358fee898c1e3aecfed91e4c5279dca 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 13b7f4db0c5b306f389b5e952370d0e9666783b5..94837023ca0d81b79b35bd99fbb8ded53bd61667 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 85006e51b6636c2f8919821cfa586e1c15300c82..bb771c89010b14b5b63edca7b028c2c138b7d7c0 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 8042363f73c9e193811bc6799a8c6247b644c3d5..d0347bcb37c617b44e0b816c2ff9510d5d0e324f 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 e1c939c93c9323eaff2f95ce06b6a44fede90536..706d3fd717630f64ad4db12c2f5e56ebaca0dee4 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 e66530aaf769c116828ba18c519c461fc30f8e07..0e73dffb20a97dc41ce5320d99fe7ff682272e6c 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 6bfce921d0f6e05372621411c7f79d15b2adc1ec..3dc7d04ede388b29d17b18132c64bd91004cfe6a 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 09baf383f97257fe84a4b6876e21ed6a2a86faeb..bd183f97c126a150cec54a2f51b55581ca0bdb1e 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 0a2df6b6d4bb31c4bcd7987f3e84a867e8cec3dd..e14a07eb6835bed3e85f36186f74db16021d77ad 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 d1aa59569e62bb6cc6c039c0efc41b6c43b902d0..110b7caaf81aca2ad76af67f73a26df7805b4db1 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 ceecfa73ce4c215115f792c79650b952c821ee7f..03b7d57b49dcb12ff4c66d3501f9e48522612c0d 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 bb3d571e6f865411b3baa2d1744a675f01746e18..3b37c805cdd73ca1bb2b8c4ae148fc81d9fb5a6b 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 ae4e9ac8a9c9955cce292f6fb85cabf1f532e026..95d2076153cb3f6bcea9ad9a528a806947eb7ff5 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 e0ba5145b3e5cc21deee6ce2dcb7ce0f6893bcc0..0000000000000000000000000000000000000000 --- 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 ede12f50fecac226dda7263c158666a4ede94a11..9eabadae3b05a25178d0a9418807e14f88a9cf25 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 0d6a87000ccdc511df5787ca5555cff5921519e4..20c350bdaea19914b327fc193128f41caa29c4e4 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 fef296f45be208344e762e949e014a7c576d1c80..be487fcb8a6bd24188cbf75eb2704ef573be6cc7 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 0eb4f21e53cad9d2f14759db54b7bacc43138896..46be8d145320c3100fc88365cccf8d7fd74b81a4 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 2535f7514f1dd73b45dd426e6cd5cf5dc5e798ad..fcb4bdb537437b18decdb04e4dd213ddfead312d 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 f5fa8ca9221dd86d3c5f2cec3c77fb5003cfc4fc..7c586374ec5130733a32d73595c4adafa2592871 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 e4ab5639ba6612a1716434ec4a1cffaa0e903643..6fb5b91c2a92d1fedf88e4e31e89eb9b2398d25b 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 86867cd1cca739eae0b26200205cc3edf6ca0341..9e3ab37c3223391e529abbc8734aa0cd09ea4c03 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 205376b1257c5ee44797cf7d20e8ca09b75f66f9..965ac5db6821927dad8e5005192b8703b93b7dda 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 039bb1917d37b2db79dd96abb6607a2d529d6414..2a2a6a6759891947c1ffea27be79eb964e7a33a2 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 403a5285e1501da6630f889b03b870432a4c3471..be5114565ff59d0b404910796f7fba9d2922dd68 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 f8d50a7c79826431ed941b133208e0b57a739d92..352b6b900cc65efba1c108e60be9f420b3c92618 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 f0057f3a1a8845dda9279f514333c97cf97756f9..4a6526fe9c6ec9e10155aaccd149e826b4cc3360 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 d7b96425968382a349f8df300acd8efb2682592a..ccddf907e94cc5fb634a0f32b9538380ce18175c 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 8f7800a7323a67d0d85daf0f0944c94551af8c76..7314ff893b00ddb826446614d73103a4952c7c25 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 36afe8dd3e00f3c284f26fc029147713dce1da90..4bf414cf8dd5d03120d519a85a1fd0bbaae6ffb1 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 20c9772ce4648fd443fd8fea700aed206c2e758a..3ffadb5acbe31238745bb0432af85e46fad71acf 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 385f9825e46f70517aca842e0cbcf6db143ee5a7..ba437eab4122ef3caed5240b61232058b4c37ef1 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 6472712bcb400a1a4b963e6b423a4a69b1426107..d47369f5094a00cade55462f11088e5cd1dfc3f4 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 1fa3ec8ccc6892238f9bcfc76ec3e3689ec9c173..5943632930c578a7f90f7ca257ed4a6e1c8e202e 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 0000000000000000000000000000000000000000..80420202c0532485f8b6bd79062dac68d5ddce01 --- /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 49868bbd831f1c38da46988de267b481959bce8a..06549468efe98ff3ae6061f7b1e8f57e9cecc9a9 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 5f06feb7c6227f38f587855425442ee53a7a5f69..88b4a8476658d570a44f75f51635c95a6349a9b3 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 3996b94ba14df847f7ad845ef42008b7c234bd40..86fb6e03491525820ef118231296cbff83c2f391 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 ]); - buildInputs = [ - libXft libpng zlib popt boehmgc - libxml2 libxslt glib gtkmm2 glibmm libsigcxx lcms boost gettext - gsl poppler imagemagick libwpg librevenge - libvisio libcdr libexif potrace + nativeBuildInputs = [ + pkg-config + cmake + makeWrapper + python3Env + wrapGAppsHook + ] ++ (with perlPackages; [ + perl + XMLParser + ]); + buildInputs = [ + 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 0cb09ecb6430d08ca25535529b06e287514bfb3c..6a2a8dbc18fe9140d94ac89ac0a6c435833547fb 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 4eb7518cc1027164854fce4d45e5602fb64caf48..0000000000000000000000000000000000000000 --- 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 cc1ca3a0ff2a26b915d454c01c8f0ead6f055a08..265ce82b8ac3f7ed818bdd2f301a8c7f59dd175a 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 1c65c7da3a2842cb957f70b3d3432815223fb6b7..5fe35edabdf6f6cb7ee45fb594f4de2dbaa8c384 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 d3bc8deb05e06e686242220f8b9fae633a35538f..c74f35e4334afea199cff382d39778ba4717843d 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 47a0687e79daf4d05f1bb82e9d270be7fc59b088..e5aac9b8823d2aafaf55e785945e0631e1e08f58 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 52397ac33c4f950908f49a724e4fa530b50044b8..6ad67f75b21833e0deaff1814001d35afd4ec100 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 c4c889cdba526477b334aee726b3ac1a6721db74..818fc63535ed807d2a7d9bebafe7d48ebe3ed019 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 201a4fe113e3b28780843c517a507140d9a08f63..5e950eeac04ba44f6a30974774eb046fb2bcab8d 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 94899c937a86b1662b12d6fe60acf91ca287b5d1..811a907746d551d9d335a7ecbbd65f9669bef3e3 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 0a3368ec2abe288be70debb927e61301e483bc99..53d1c5c3f732445166e05b7f5459dfbe847368d8 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 7ad8c388a203b1db6f1c4bdf60d0c735de47c682..0b2e5bc377747e488ce293e087c09f5443c193b5 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 9733f1e2efa07a93eb0e41b31e669c6abf54ee83..6ac937dcb931f872242eec1c16f5f07e67a64821 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 d629c776194d93751ec427a1456405bad8e131d2..2af79659cedb20efdeb3c9b6f1c6fd801bb15174 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 63cc4a3a8d3591204d7fd8c0aa48aedf1af00830..e17664a018ab744044e116cc2bb4975d3caf85d6 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 7274bdacd9d04c5c11d97d23f7007b16307e4012..91278c9881fefa91d2eed86f723a1d948761d847 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 1acaf4850ebec5d42334f0ea04d623b6191286ef..5ebbee0e4d6f3fe74e8038a78637d3413298a632 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 48a79e8844e8537fa7f45f8e1765312edf64d1cc..f0d9329bc5a9f5a12ee4d26a07b36fa3087130f1 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 bbd2f0b59298ec0468867e2b756e4ebfd5a27e92..89d49a1514577a30918d7df6178e29b49f76d15e 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 7225efadebd9e538b9d7b2b12694c9c7c6c23605..1f2861e7109c93d49e4b6d48a999d5578cd8fa9d 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 2c95f6d403f2cf469afa3adde4cd4f81e6bcbc6e..95af658ddd36b1f6c6c7f765b5240501822ef61d 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 719aca5096a584c082a316be9efe598f1e0c632e..c03bdd8331be867967bd11784829da8e545d8751 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 1a47a35574938cd2d2008249f441776fe7d1104a..15d70d1430812c0fc9014bb813103eaa5086585d 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 78f6d8bcbaff8e9653eec5b2379bf80c6dc4a4bc..fa3034cb3b074b102d26d0b0d354de6868d12beb 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 3df2ab4ab4069e2bc7a9666ef81996713aaa1552..b127be821c1394008244ac96b7fd9f16d589e3d3 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 37857fc459ea9c2c682e3c8b188671b7a7fe81ab..edd923822ea3920a9d9eab900841a094df92fb0e 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 78d16e692261187f60ba4f1df4922f065b4cfd42..9fec8b99c1bd0960012bef9f85b8ff6abbc434f0 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 68afdd8694b1a37fe7e4a83ae64b46d717f27788..71c63bc82aa23b8a6922d4485f40954508c1b5d7 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 5e7fb5cf7a0a855276d57479ddc4910f8a89e6af..1c6c1b43354779ea15921ad2f03bd1b9950c8e53 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 14090376684897afcd1a548768f81e48af7da2fb..af51c78a1698d92371ff4bac56911db615b5cd9a 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 35ab27bcbf63826a26f2f3b43cbaf79791da85d3..dd8e84349fad86260af1f451ee2a0b51e4404029 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 1ad51e92d472e47da9b41ad3bc6a4a37945cf088..505f28a24510a080782bddac8741a269ec6011b3 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 9972ea75709827a7486e788a1d73f04c0afa885b..cad6a35ce3f6b897bd2b43fb8dcc573fa7d4224e 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 4d416a7c106d23563fe041a8cf91985c9837a332..4f7e5b931f47bbb98a7cfcddbfeda16efaf7091a 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 0000000000000000000000000000000000000000..2756d659edf39e807e9daf85a8bb319d7e93e3ae --- /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 750217d99188c4f03f39f83220ddc479078ae193..d3dd917d7b7dd3b68b96dc0bc23196f08c5daf6c 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 fafc76a76ffeb80812ba5ab262b20dafe89b0374..1653ea9272062c298a484c1b0ae4dbae5f8fee11 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 0595ab2963ca5214c81591c407f5d5934ceeca4c..b6f25795665a2b7e84f4a58f40af16c62ea921cd 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 2e12e18a5a535243cda7b88da1ad6a5bfc4805e2..aa6db0accdba8d1e5d611b9d86558f82a56295e7 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 bda164465245c30497002d9678d428f01260832b..812c26f56e5961e0a9d96e38ecf3abc2c80b4054 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 426985d312c7a279f5edead58e1c5836e4d47fab..bf0b92b6f6d454e8f6ead62c017c6e268e9600a9 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 c527ce2b229a571a54acd651748eca95b29b3a42..eb8ecc34b8f352bb905ed1b9f80349e27e9f67ff 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 4e8519d17b6719257764e33b4ff62b7079c01708..53e8109fef51078272e2ddc855fb0c39bc19d718 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 }: - -assert stdenv.isLinux -> xorg != null; -assert stdenv.isLinux -> vulkan-loader != null; - -let - graphicsBackend = if stdenv.isDarwin then "metal" else "vulkan"; -in - with stdenv.lib; - rustPlatform.buildRustPackage rec { - pname = "rx"; - version = "0.2.0"; - - src = fetchFromGitHub { - owner = "cloudhead"; - repo = pname; - rev = "v${version}"; - sha256 = "0f6cw8zqr45bprj8ibhp89bb2a077g4zinfrdn943csdmh47qzcl"; - }; - - cargoSha256 = "05bqsw0nw24xysq86qa3hx9b5ncf50wfxsgpy388yrs2dfnphwlx"; - - nativeBuildInputs = [ cmake pkgconfig makeWrapper ]; - - buildInputs = optionals stdenv.isLinux - (with xorg; [ - # glfw-sys dependencies: - libX11 libXrandr libXinerama libXcursor libXi libXext - ]); - - cargoBuildFlags = [ "--features=${graphicsBackend}" ]; - - # 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 : ${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; - }; - } +, libGL ? null }: + +with stdenv.lib; + +rustPlatform.buildRustPackage rec { + pname = "rx"; + version = "0.4.0"; + + src = fetchFromGitHub { + owner = "cloudhead"; + repo = pname; + rev = "v${version}"; + sha256 = "1pln65pqy39ijrld11d06klwzfhhzmrgdaxijpx9q7w9z66zmqb8"; + }; + + cargoSha256 = "143a5x61s7ywk0ljqd10jkfvs6lrhlibkm2a9lw41wq13mgzb78j"; + + nativeBuildInputs = [ cmake pkg-config makeWrapper ]; + + buildInputs = optionals stdenv.isLinux + (with xorg; [ + # glfw-sys dependencies: + libX11 libXrandr libXinerama libXcursor libXi libXext + ]); + + # FIXME: GLFW (X11) requires DISPLAY env variable for all tests + doCheck = false; + + 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 + ''; + + 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 0000000000000000000000000000000000000000..11529eee2107753a8b54b83c5a969956b4addc96 --- /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 b431cf51b019e9d65b69fc2ab292b158554172e5..22e8a2ca536072b15e0bc0c3a28b58673b2abdc2 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 da136a7f9e1e6fb9166e2f4f3fc748e03d3ce5ab..682e401c069bdce1f6243a6f42de5618f4b747c4 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 4245acf716d5a29356f1ca00639ade69c735ff4c..6aba42d33e63db50c5ce17792ff0c35e40bbd790 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 d4165be3784fd110cfac4d9f3ea4e886b559be5a..37ac02987061e0cce04d481a16c5926ebc5f0559 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 92cec3ca82c220201a49dd6e37c3e0b856fe75a1..d3e8b417017d184f956a397af164755a2c0d26ea 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,15 +19,30 @@ stdenv.mkDerivation { outputs = [ "out" "doc" "man" ]; - configureFlags = [] - ++ stdenv.lib.optional (avahi != null) "--enable-avahi" - ++ stdenv.lib.optional (libusb1 != null) "--enable-libusb_1_0" - ; + nativeBuildInputs = [ + gettext + pkgconfig + ]; + + buildInputs = [ + avahi + libgphoto2 + libieee1284 + libjpeg + libpng + libtiff + libusb1 + libv4l + net-snmp + ]; - buildInputs = [ avahi libusb1 libv4l net_snmp libpng ]; - nativeBuildInputs = [ gettext pkgconfig ]; enableParallelBuilding = true; + configureFlags = [] + ++ stdenv.lib.optional (avahi != null) "--enable-avahi" + ++ stdenv.lib.optional (libusb1 != null) "--with-usb" + ; + postInstall = let compatFirmware = extraFirmware @@ -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 c0a0206ddd1f12c298a43ff7f6a6b16e405ff320..2ef1e26f5ac6b8828bead35128b5cc0a6856e1e0 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 b00f8f6c58d7cce0ab78db67338efeaebc9f1688..188431bda6c64be650b03afd03a0233eb50a51cb 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 09b431fdb116cfb677064f3071cf2952657f780e..22a8f4dc3bdae46b8fb2be8f9a0dc822df1561d4 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 63f16f688acd3235c91661c0afb090ffbdb9641b..e4598193469b8f63fa1eedc0aa295eedef123b26 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 14efe48f30dbe06782ab9e8daeae4168534f0c2d..bc54f3aa627a7fc7bd0140e3a140055f74a345bd 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 88bbbd9d86462e8b1c27ff2a8eff5f1d5eaacd61..11e37c4bf649d48b2e6ca8606a074a10db810283 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 79bc743fbf01f0478c635df25015f8b0e1ae2c49..b03d0a01dd6f8a3f5f323392cf63eab704b9122a 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 957692b4ba17a659f5f6d834334fefbf9748172a..cddc99eebe29e2b2268b1cb56f0c99fb0cf99cf7 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 377a5ae616875f119b04fba88b84bdae23eb9b08..0df161cd4731e47485d02522a60cfd9ba39f738c 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 7046caad295e2b79b92a87f5d4b67a27e4b85238..bd084b4287dc130a209b185ac1167c0a23a77677 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 f56646e5aedd9c1f74af606792aca07d6bf366e9..fc9132ec0b4011d1d8dba457e6162ea584633d67 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 99c151f8c80b4a4fa6c6399d6a41c22b7fbf238d..4cf0ae5557897eed4d32c38b84b2fd21d56711e3 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 188f7cb29343a9f0c0ffffc07380c20f56322db4..e2ffd16025857123d53744d18f66f32cd554cf5b 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 157c0b9742bfb6046bd529b4b10fb23e1663c6c5..dc9d4ac2d595dfd71d2ea5dc9eda92c3cbbc9d60 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 548f58a50fb1ba4d678f446f951855b2d00ea688..d7c3cacc1f961f6f911f50397e3599ed57086b65 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 47da0b749df36732b043374d98c8c06cf43cd0c5..f6ad16d7f90b98eeb8ef37195da9345a3fd20509 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 8355545e8dd6df60f3b1e5bd13689ee38a9ad004..ac382bb6327804571952904750fa22f8fdb3679a 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 131d83f0d58eabffc717d045e5e8ec2af236131c..9e05a41e84837c4ffb520a5cb66a45e2cf6d707b 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 09abfc60a5282fe47e88a4e197cc84a4ef1db7cf..14ff5f9a519fa95c23adc59ee3d0c97f74139f37 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 a80e89e72bcda78e3cd1e2f05b95507535650203..41463a7627ae778ff18f58c94938fa9ada42323b 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 fab85052df3b9286ace5b4609762a7f908ebc831..b5e9d0b8cf2dd84beec4c038d986068388ee1057 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 8d6eca7ef32c5a683275b32cbd6b682d85bfc5f2..19c30f3ecc4d1b616ff79f614412a92b592e5b8a 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 0f1020b0b07846f0b1cee847f4d9a0c6f6265e3d..b1bfbe3c4cf3d0bee70a36e9b269792b2d2eecb3 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 e80362c386b98208da2f8d16238728dcda42a620..767f3aa920bfbe1df2ef398b88c25bbcc912f39c 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 56388a8a2555a636c36a36392222f48e25217bed..5e3c252435cd1399b56da8d5c21616dce4b9b1d9 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 ae4765fc9e76909db1da94d68e76ce2561d8170f..8d36e4630dc574a8ce365bf52da1bc64c328e06c 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 cd9d068b8acf33f119d0b33cff251e129aeb0945..8a5d9c3597b83bfa2d9116160b71f797e6f63a31 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 76f8e03fa13f34f86ea088e1b5059a4d1f77e937..65aa17e3b4eed1f9432843b7e1e91802d6f290e7 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 de3f3a78988b17e525eb26d4608ee441b7efeae5..67f43faf99a3040b01e3243e2293b98b9165fc3d 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 0000000000000000000000000000000000000000..157ef3753e083dbed733d4f9b8687c07e7fa329f --- /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 8ef705f7ef4b4c2cf3d0607e9a192a69f3280a6a..6cc59a7e60bdd36cafe168960b70bdde8eda1157 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 40e69f8c9bcb4d80bc8db83455aeee6b45ebab15..60df1f899dedd2696b963c417d82fe185db18606 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 0000000000000000000000000000000000000000..a2bfa88f81278f980ea9fce3956b4179d752be2d --- /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 a335b0ef8e8ac651c26cdee12c0a2c757e6760b8..3f6dc9ef181022a859234ffdb3671b4180a8d4be 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 0000000000000000000000000000000000000000..a0cef882f596db51ea41229fa217a91004fc4039 --- /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 0000000000000000000000000000000000000000..fbcddd46ca8566e4ed84af8362f91fe3fa12c18f --- /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 4ac9c9b925afeac52b6a29593e25a91cd33dd979..0000000000000000000000000000000000000000 --- 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 b7c691e9594bd1b2619d4062ecbe0561104d8fa3..95496f90e0437e566953ceb6013766727a6a0948 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 46722ff5fba01cea6cdf1a1d028b1d08e2c8e940..0000000000000000000000000000000000000000 --- 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 6d7bd0daa96b57abb0d1512dbd7163f092aad5b8..65719514f96b0c7b35050b3547afe8e2b1755701 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 cc3e104775fffe7b33aa5bba79bb350e2e24df46..0000000000000000000000000000000000000000 --- 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 57741c03ad54773ad7c2232b5b6ab192823558f6..efe247df737631b58b153228458fc9b0f35d0aa0 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 5fb953acbd62e14b21c97aaca3c7a6dbb07865aa..180d066a87cf42a9182c5d3efedd068618547aa4 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 ce66de251dca27172fa565a7b30b6289158abe57..303ea6162ba49cbbb144b25e00902bc076b5752f 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 0000000000000000000000000000000000000000..b51d0d147e2ec13f4637851209f354d93853600d --- /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 1be5b0b4a8945b61129606432c3cb6dbb2ce1a64..ed26dc08bb6c33893d9b84122b14adb897f21dd1 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 bb44762e65c5e8c5620ceb751ad0fef3ab64f6b6..978baa925e5acd802a448721e4d1a6a4dc863f14 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 89ac92bb474535e1f7b4ad4ca1b001779f18aa4b..2b0a1a5c514130fcce90e632fd2f1a9163d29591 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 0000000000000000000000000000000000000000..b18a3e7cf8f73d0475dfe98e4c5a11d5b3589351 --- /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 0000000000000000000000000000000000000000..3641c1b333237931a6641bd4a253cab72ebd5f09 --- /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 0000000000000000000000000000000000000000..4b7b8538290c5af74ffd227afb91af39000b8ae0 --- /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 377fbe3339a7cc267d15d267a9315a08af79eba6..f07df73a2556434bcaa177acbb514248892cebe7 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 f869f984e001870528435fee2444bb729f5830ee..f0501ffadee48b88ccf31e6c822f1da2aaff458b 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 8d199a291c442d01d35aa97a315f31a0062ba5a0..dc6eb0f09e8c1c4cc8487757b71804ec3614586d 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"; - 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"; + version = "19.12.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 6f9c8df30012658af53e619094c7b9cae1866ea7..cb7f7070b24a14cd4dfd17cabfb2102b37c4e549 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 1c409c232a82dfb1334be6aa0c67a32c67a51dc2..b27569a8a30c3038fd1f5bfd0e5be459689253bf 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 f87bd4c11ec47235833699e418fac78c76f78682..4c03b197b4a030d5a18627b8046f9902ea96a959 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 d1e4856e0523ec3bdfdb03e92d31440f86964d6c..b67e514ce54d11bb10da9adcda8d24abc2614a2a 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 465c72d73f5cc1af7ae5739cfd028d99bbc9f334..043f1c86bd1298444fbb220801fc794066dda152 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 4b4148bdc63d21db3bd0133f9a70d7d640217142..b6248b8f6f131163c14d115f4c4bb7787da4efa0 100644 --- a/pkgs/applications/misc/alacritty/default.nix +++ b/pkgs/applications/misc/alacritty/default.nix @@ -1,39 +1,38 @@ -{ stdenv, - lib, - fetchFromGitHub, - rustPlatform, - - cmake, - gzip, - makeWrapper, - ncurses, - pkgconfig, - python3, - - expat, - fontconfig, - freetype, - libGL, - libX11, - libXcursor, - libXi, - libXrandr, - libXxf86vm, - libxcb, - libxkbcommon, - wayland, - xdg_utils, +{ stdenv +, lib +, fetchFromGitHub +, rustPlatform + +, cmake +, gzip +, installShellFiles +, makeWrapper +, ncurses +, pkgconfig +, python3 + +, 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 - '') + '' - - 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/" + '' + ( + 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 + '' + ) + '' + + 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 6fc5f9514651dd2e37c81c4f16b800330bc9cc1f..5c43d717913bceee15107fd857d7ffcaefaf7819 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 06321d9d6218e0eb4ec8b514506581693348481c..f554d36a0c6ac445668d9e2ce3075bb6c217d743 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 8c5aded5ed9ba494ab4ae4ca3fce4419919df548..dff6b15494bbae4e5b86ebd5fe7b98c207edbaa7 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 8108b9e4ddb4c93504c48a876d1e0f54dd6ddbfb..49da252b6c0d1ff4086312c9ade160719dca5235 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 68cd91c1676a4088ba80c47eae439b78f1bfb4e3..d5d37ae27c950ebdf2d634842880b87866af7858 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 b5af1af91f36c5241d6ed3e4c66931a43ad49584..48efafa74fcd768f95bf0327a3cb0360a771b423 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 03f534e1a4daf53c8f3523e1371729dd80793077..64b592b78714b112e74f7f546ca7777a083369f1 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 b03d2aa208b552e8d282472f22360c741807d39b..648a2cfd99459d664576abcd67dbdeff519ac2f2 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 0e524ede0912e9e51162a4bffcca31efb76878af..592c0938ffbd42823bbe90f65e26cdbeddcaaf78 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 622e7169faec66320f6916a40eef3d5819c0d94e..32ea821b22d672d37e02cf9c904388183935d60e 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 7c4e6ff8c3d7bb4dc174c1d62ab234f731908ba1..59c7154fa7deaa90d68f59b876a495e08fc9086d 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 0add5ed78cc53f22a9899e6d630d728958de32bd..0ca01c8d2aeded3f7698b742c4039cf84b9e5d6b 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 09b75e27d46a1705a55382d77b8436f1a849b409..ebb04a30ab866721b2d18e729e673a66d4c067cd 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 b00686fb24f67848e769db7abd64ec0a162d5832..a33261e7a59de3b338f79581c5b82e48f2df8f6b 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 165bee76b69b68b097a4851ae64d0e857d0e2ae6..f4a56e4f92403d96271c74c0deb2b28713c5aa4f 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 10e46176c6e6e92a69b7cba1e6188f0c30d98ae3..28b65d2b58b67c7d48e4d17a12c9640de37b78d2 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 b0af34ec7606bb99696cf6e75699f403c68efda4..4a023849f390394541a1878fdcde63f02706ef9c 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 06df1df9f769aae165283f95b0f05b1b9f8f7524..fd7eb4990f0611224558f5f397808d14c3fc93bb 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 8945ffbb384f558b47d19966d18e6a13a41ceeb6..665198b3d1f4881d89241dd5536760955808980f 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 a3f0a3b84f230c4a42b892003f73efdf4182a1f0..9489bfa0016ba5cfeb2bad157c2be6b7e2d65611 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 22eb3e3d8594e13595b49d94f3e420f89f5edce2..41b0d3c13a80e3b60cb2640b4a141e533f5a125e 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 39ecaa995d14562a115d5a0c6d1b7cc66fd8cd65..29522f75c25748861eb255c4392ded6fde76b6ff 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 090cb2f519e151a48340b4632429dd38ae00eee6..0000000000000000000000000000000000000000 --- 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 225a5c5fc3763484a5b1155ac20a7f8ff5e8ec6e..0111f8519e7cc6fa7cf7c2f8c38749ca9ee3a92c 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 0000000000000000000000000000000000000000..43b96466df28ad55d048217938b3fc2bab37c2fb --- /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 8c4833be3e6cf9df47ce241b6e39d296f18a251c..e27aca4fc3d1656731ef8448a2eb655037125226 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 e6f956cc09101c53b64e5fee2664d225b2ce8e3e..896daa27f7cb3b089d684111d482df5332d0a5cc 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 98f6e2895d181895de55156e1372cad4cf20f978..f4018cff5f43169ba9d1a72829a494bd6366444d 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 8f8934cb084bd22ca67deb845ef89d7f51226c3f..ce3a2c0a271fc6c64d724af93917c63b05323e1e 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 9701db3c0b79100617ba8e84758b4969128fec3b..afd602f6088496c8a127844544feba4dc763b6d2 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 77cabc409c74486e3195faf350e4286b2f9baf5f..a951046ce015139bea3dd022327c3a7970978c00 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 40dbfea9801bc1826666c16d96b06e38c90cba46..83340f78dd482b799acb65ec501f85c531715e33 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 09c36f9eb2f11197c808096a7a235e55bdd0ab7a..6b4ab1f3a8bf21e04979172b05ad17019620c096 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 e506829b575e25e6676543099435bae20d646ac1..e7664244db7bb24e74a14a9c5105bad838a7d2f2 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 c05c7423d9a565ee1b067f4cac8cf0336346f41d..09236565d5984055dd94bbbee49b308a1426769f 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 a86c1e8bc055594f53f58ad10d16a3aa0ce606a8..b4765c0aae32b0ab00eb3949edb0550f979d7637 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 d760cee6374d0544b28dba1d0def30571c9aa2ea..7c00add7797143ca74febe7ff0dc605caa112bbc 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 ef47e3e035869060d7eaa85152d7d04121fd3e7d..cdcfcc00481a16d41a98b67d1f8e163159dec736 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 4986661e2f638f683d4328a749e626b1ac5dd4f0..112341dcd4f0af77f6973383c71de60395b2e6c0 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 f9c08d1f00a1a2c52f787abb51b5e3c796fa4b0b..bfa6f2ea8555bf99d3c9dcb92b6240f9b049f01d 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 a2e4525626985ee7f75a0593447360d8e2d4928e..ed8767419d4df6531294783b188f5130367abd3a 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 129516a44982092e5090b3efe32a1902df94db6b..82d6272aadcda6f02b8ae1f32c9fde2c50ff2393 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 7577c0a3db99f0f790f804103cd7e6952a7e9619..4bc56f0c4526f9d6f9ee6f4c290124aad7496348 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 9f86ec94f184ae6049cfbf79a139241168016dca..fa0e10f9eef825565fe5bd201bc9020627b7b2cc 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 29700774219e218ba8ec042bb1b109572179cd36..ef897d2ea5988b72a8aa2a506988b88ddd6b1bc7 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 554c7d8c78bbf2abd137c07c03e8b72b0247beb9..1eda11890e795f35a813e6e2ae8103b05f937089 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 b07e0fb8c5208cef4ebfedc0bc2a26da56a5fde8..bb1aacc2069b7f8e2a89e04c331188374725d99c 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 c9dcc97d5cd14642c47bff807ff808b53833051f..739ad07adbf3adf3a5e46a0492a58ac98c3bed25 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 58a85f8f6e97383536c73c7cc2a8879548807ccf..081acb3acb611eb8b9a79bff184538b7a72df5a1 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 0601514546f22a26cdcd4c8f0948b2eedb3e88a5..bbb7c53b61f65929ba9466d4f397a2a8ae38bc9b 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 dae25f6b8176f868586e0d11116a96e6d7badacd..aed44d1213ce1213fea45ff5b766738eb29953af 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 2d612c16fef3afba72572176c6924292af112632..889c17e6988d7ca92abba055cb8c8bab43a48002 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 72918a40733ba74b61c3c4f85e18ee093ab751c9..602fe43081607dcb0aefb7198366b3a00700e406 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 7187b8c00991b06fca8290a7e78dd98802696234..4c4fe9b1abdd4b82090537258c22d5c3dbd33511 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 0000000000000000000000000000000000000000..3826e92440f0bd7bd4e579cd1e1fe3f7a3673a3e --- /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 aad9b9bee89f4d4d0657ba52fcaf9a9ffb32091f..a5cfa937fd8ddd74d0540c54896db06c265d79c3 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 c67fcb74047da054c8cf3a7e1a06d0b9c840e26b..229966561c6d5096c1cc796c36751dbd4095dd6b 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 733aa27da854d5bac2506b26be3f221e0376c1f1..5edaabbacb0f7ff616ee9a1490b16d6126f95fef 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 e6c277959e03f806433accb6a09ad9656b091116..e32117a103ee02463ff8356e74aac80293b011bc 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 acffc741d57812b5957891cdce048826d151555b..2ce0fab170ea05ab20b1dfd3ec59c1c2c2fadef8 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 1972042f805e61437b085b61f7d9eb79b9bb94b8..1191be09f76ec1d3013dca4f299310bae18ea5f4 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 a367efaaef383fa2c697babaf74172b72c2ee4e4..821b88f9b20d54438b79d34fe1a1f1e937edf723 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 6594deb84a5a575b4a084677568a9b5d1ade67e7..2eb256935d77f571e10159b06f38d2af3ea7b52e 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 41f110e9ee102b1b2a4ea41d1f1c074e731eaa78..d353fff87efe2e678c33722b77e4d67448481c88 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 60598e565395fd59d82f7fca500a0f670ebfb638..64c3f8ac2828e6bd43c0cc0081115a11578d9944 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 fbeb965df3805d99eab21639f4915e4bd72cb4f1..7612c00393fa22bc5fb15bdba586cfdc05e7aba2 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 9b877c2594b3ef059448357f77fdaf90cf59c320..c4639150dd4b47ba242a8b1ca7d53c51b11953dc 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 a1fdabd8ccb128889589e9386348389e617197ee..ad8b56e830fadff44b0d5e42d42e238efce28b93 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 5699396a0840362587feb8848f457bb5012dda4e..2961baee10243670120a5e4d8c65b658eb77fd3f 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 1bfb6bbfeaf3d70472d8b8a88f1016659d6d0a6e..69c7f0dc17fb036b30a0801a81aec15cb3147564 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 af47afcc601d1d326b909401605bafa2b9b8b70d..83116da4df05bf33ead543ac446e18e04e6574ff 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 37ed8eb23fb609d0b419478e2c845ac6fd2496a6..17dfd08f90b21ba9f2d71e8e74d50241a4a09291 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 e76f95b6a50d3725fca5e0068dc309ecbd252204..374c4cf66487e91d304ae9d2da6637dcc8e75d3d 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 8f7dbd2d2edab721cb038a8327fc689929807314..038df41875f5909fc0c2c0578453bec08e013b97 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 1c3b41338674017c17f701ca6a1c0ec591a7be06..cf02efdcece50d4624f23a22d0e62c4a2a967fc9 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 8d13ac42e1fccc2ca5ac1dcf655ce393dfe02122..e4d0c82c4176c9a5903835b8a09caf8c6033b19e 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 0000000000000000000000000000000000000000..7b17d484771805a8063489645953aeb6651e2991 --- /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 3888c4ce0a0dbac38a35e0843d4fd6fb4deda3bc..97510bc3b4577c3cddefd4336d2a2065329a7225 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 4d266827415f92cf139a6494f87411e245ffecaf..1b969869f76c25db217041698f8474700a187599 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 d72a5b848261df44f0407f9b0ee452abeaaa67b8..48e45328f67bacd76fb87fa7485881494b572121 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 1332b265d54c78d34cf7cde01120e7baaf2aed71..999904a21d3c0a1b68890e2c27d8b36f7d86af79 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 ]; - buildInputs = [ qtbase qtmultimedia zlib bzip2 ]; - nativeBuildInputs = [ cmake qttools pkgconfig xxd ]; + buildInputs = [ qtbase qtmultimedia zlib bzip2 ]; - 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 5150f13fb80ce8a528fa1e569d0eb7434014e09f..b515074fd475058c6b58ebb44ba990239f1b5428 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 226bdea03013cd6e9176af67193cd114897466da..05d3ddb7cfbaaf31e48842f31a3980e6adf37353 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 5d99cbaa988cd6e06521d7e4bd00546750a9fdd8..052e290120d76c3a00726a30328a32b91ba143a1 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 e6cfca5667e1dd26a0cb621f33a11a694948ad7c..1616c082c01793c0b62bb367be775b780cc6aa20 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 fc5192bb5e47bae5985f943c62a382fee4c55a82..33a8284744e507d754b208c2d03fe719aae2878d 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 df95b26b9c5b09c83829ba71d32a26f3f493b070..d1011548b2a693f59c8b23340eb43ade50d42313 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 88f44c6cc8531850c7e16ae2453b31dfa6c68d12..b7c655caaaf4225edc17be1b061c44c9a869cb36 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 3d71d9855d04b255c6b5b2fbe9c9855bb177c712..78dc54497dd923b823d5eb6eb6cb64543ccf3068 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 62358d41cc53ad0939df66b8660a0bad32283e3d..e0fcc221100e19bf2bffe69168f4c922044490e2 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 de922bb39900f0bd1a22934bd31fe7398ec76e06..7cbae2271aea9e8345e99b06c96bd4a22db69d9f 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 56cac7ca9185cca90ddd814e68093a799f30976a..b51acd9fa728421c3f36a97e0662cd0acc26d576 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 0000000000000000000000000000000000000000..69e2d3d5598161485c250186a6524d81ee53994f --- /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 e9d1317390ed9a870b532817ba80b4765d5b62df..d72aeb629c381cdebd47826de53ae1863cd3af90 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 984ade077a8a9dc6c69296418da194ee93fcfa1b..7a5284a527a67a04a2107b4ec6d2032ae7d5fb9f 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 f96d3f0f57c7bc09cb75d22b6addcd89fa66301b..9daaf7268c39c3dbfe7b5a63e4cf35e65d3f6ea8 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 51e9c4371b5b51c01acb39394bd772338b813e37..de2ed0d15964b7e18f9fd310d0e7db25d21bd7a9 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 e7d0e6a63a5907baede82ab4ba894e8c891a4198..187988077435c9beaa51c7ce33c501ab34d7c790 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 db78f2ec92043c3df91f1a927fb7b1ecf87d9231..cae637c2c4a484000751e71a3e1e2e43b493958e 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 6c4ecf6fa39212fe58be166e19a65c11d45575fe..9e37900902726518e4f6b88a4c67553d9c5b6093 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 e87c86f1b4b31206569255a992a9dcd135b3b716..1397f0a057da5a6d1b89de5c5af892e40b07266e 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 edee9ab33e9e1787732433d618c5a68c1a573de6..ee4b05fa689f2472123d65116104a9d7e9a902d4 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 82bcf5a4aa07b0de322cfb1ab513eec1767581d6..05c535e62c0e3976b574ae7480098ed2a12a2e99 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 06cf3c06ffa6e8a80c3581af96d2db522b8f40d0..2e389c753e2ed8f6f0194e2d702398a75967c8c6 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 0000000000000000000000000000000000000000..4794e14b4698e8855ffd61ba4b642c9f41fc475a --- /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 2ca059820ef0f04abcdf3823815eac45d1bd5817..cf93729eddd33e4bd58de08c29d7ba8bc9cdb9c1 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 edb47e11dd7f7289a309c198931cc8757a614ec1..008e59eebee6f7e60f407e2912692cc5566fba6b 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 26478c7f2ed0ce4a8516045e0af06ccad64e1f32..b777c3b72e72ab498f3992746f19dd49849545d7 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 0000000000000000000000000000000000000000..dc3f1922c21442785df4e397d9579bd8d5bc51ac --- /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 aee3937689b3ab4999590b3ed7dcf5a7a1daf308..5774320220a162e32d52c582f164040404e97764 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 bbc78efe5cd206902f85ccb52b3dbbadc1f5391e..8b6898958d3cfb6d27cf5aadc7edb9ac66fb5afa 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 0000000000000000000000000000000000000000..91a7b0ed37fd229a19ed041c9f5ed89fb3bdf9e1 --- /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 67d4bd65a9f9fe6d27bbab4aec1498dfcc945b93..2884fca623983b0145bf687de6f382723c797d0d 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 ecf8ae9da8d4b750478f08abb8596415e07e8b31..1964ba6aaf73a4ce83c27a2ddfbc432900670f73 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 1a9789114dca7fe31835a7e45237dc07e155c21a..791db13e42398dba42474ebf98c632b4463ec9db 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 fb6902634da8b18f0959ce40849820bf96a51b45..ff3408eb8dd29fc6d72e393cd1bf7a400adca626 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 96d3d34046e1bcf925ce4823f6ddee9c054f3e1f..2e8478f41d3d15b8dbca893077047f1b719878ff 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 b97b079ab663d84ca95deb77529a545b12e3b696..ba6868b62f6f636fcf2ed49d0e72bfc98537efbb 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 f5eb6e188b7aba026b064df1b18c5d71ad376e3c..24906b11dd5972c1704d1365903e11ca30509bed 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 8381f182e5d33f0ee92d4e5c22d72466df66830c..b8b1193058bc7fb0becb942fd536aa0bbccc005a 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 57060179473f2d654e9dfb18a078ffd16b6b4c88..b7b90448e4bc1213bd722ecefe770136c490b9ad 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 baf2f5165d6d4312d70bb2afc9c7fda5c2dd01fb..9c05e9847202739329f5538dddb116c9d538132c 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 b2a992b850e1796d246c27a45236a6d62a679c3b..8ac0b000c46d139a1a774e433f7460ce96cf668d 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 6bfb4907807a0bf7fde2b33c5666e015dc557606..45bca7d3fbf54c45342549a37d784fe533bb2177 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 f44cdd0bad7254c9137def4eaa56616203e53636..bc7c66ee5310d0f8bd7784db6c2f638363519d7b 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 4a806cbb183d6aa390ad123b429208d8534593f8..bfa504477616858694f1373f11447082ddb8a8e7 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 519df42c789af906800b6d2cfba5efcfd60cd464..88991bb40a192c52b8a193b893d4c323950ff843 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 b8f13d01424cd2aa05d45f213fda025514a7129f..d576d2b5b476093afa0a828852b2d07c826c919a 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 50dda9510b918bcb2a8818955f1ec434e5a18dad..eaee8fb5fb37037fc9b970e632997e745c0fa1ab 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 c8bbcf2aa7f3c3f345e00521980c8e50bb173ca7..5ed69e7bc69ee5d4ebae9b573475601a3c35898f 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 f05c5fd210c4f79e21f0c08dba1120c35ea3b875..f007f0ae52e16a13954b77ab31ad200b102dfea0 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 11bfbaaacd078909661c8fc44b1fdc1835b0aef9..06bc0024995d889e3852b9cb7c35cbb9d4a89785 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 01f5af339ff084023c1f3cfc89eba7361d1d6320..cb9d10377cb8de5267d28d80cba3b1f33f222bad 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 7484998ab2053ad49c0d01e25313443f69d43aad..17aa7e9aa060d8fb963f814fd7793fa709de1546 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 7fba1d49d7476ac254a863bacedaea5216ecf181..3dffc5c77c2ad582db3dfb8ab351179b0a015c19 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 0000000000000000000000000000000000000000..31c7a6382292c19a2a19695d5adcb3883cc304a5 --- /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 0000000000000000000000000000000000000000..fc1fcbb0db0725456360a42fffcb2f1714b5c0c6 --- /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 e917cc024d5bc1b8c8badc6424eb54c410c6745b..cd8ecc18223be9036e888e46ff6c3dbf449d187a 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 8ecb546df703a4b0632b14b4229836a44b9d1bb6..4759cdcf57377d79487c5782f10c390c5b7673ad 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 e9a177ee19374b3956c4600a3177dd097a0347f0..9005f38f563be709d6d202c12a00e92e90f72813 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 61e0db781b87f4e24016c68e619fa188fab40272..3febcea2f9a6fc6495845ac7715e560c34c77505 100644 --- a/pkgs/applications/misc/gollum/gemset.nix +++ b/pkgs/applications/misc/gollum/gemset.nix @@ -1,88 +1,107 @@ { - 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"; }; - gemojione = { - dependencies = ["json"]; + crass = { groups = ["default"]; platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0ayk8r147k1s38nj18pwk76npx1p7jhi86silk800nj913pjvrhj"; + sha256 = "0pfl5c0pyqaparxaqxi6s4gfl21bdldwiawrc0aknyvflli60lfw"; type = "gem"; }; - version = "3.3.0"; + version = "1.0.6"; }; - github-markup = { + execjs = { groups = ["default"]; platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "17g6g18gdjg63k75sfwiskjzl9i0hfcnrkcpb4fwrnb20v3jgswp"; + sha256 = "1yz55sf2nd3l666ms6xr18sm2aggcvmb8qr3v53lr4rir32y1yp1"; type = "gem"; }; - version = "1.7.0"; + version = "2.7.0"; }; - gitlab-grit = { - dependencies = ["charlock_holmes" "diff-lcs" "mime-types" "posix-spawn"]; + ffi = { groups = ["default"]; platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0xgs3l81ghlc5nm75n0pz7b2cj3hpscfq5iy27c483nnjn2v5mc4"; + sha256 = "10lfhahnnc91v63xpvk65apn61pib086zha3z5sp1xk9acfx12h4"; type = "gem"; }; - version = "2.8.2"; + version = "1.12.2"; }; - gollum = { - dependencies = ["gemojione" "gollum-lib" "kramdown" "mustache" "sinatra" "useragent"]; + gemojione = { + dependencies = ["json"]; groups = ["default"]; platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0ik1b0f73lcxfwfml1h84dp6br79g0z9v6x54wvl46n9d1ndrhl7"; + sha256 = "097mrsahv1h67kjrk1cpiqc1cbrfgvlp2rqwmzdzxrq0kx50461w"; type = "gem"; }; - version = "4.1.4"; + version = "4.3.2"; }; - gollum-grit_adapter = { - dependencies = ["gitlab-grit"]; + github-markup = { groups = ["default"]; platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "0fcibm63v1afc0fj5rki0mm51m7nndil4cjcjjvkh3yigfn4nr4b"; + sha256 = "14991x92v8s60hfqv7162jfmdqa20fifn2bz0km3k5cgi01pf9rs"; type = "gem"; }; - version = "1.0.1"; + version = "3.0.4"; + }; + gollum = { + 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 = "1f9p1230xmrvcb7ii2gkcvhpgcaqvvd47gy3c58nn730jkv471dr"; + type = "gem"; + }; + 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 = "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 = "1.5.5"; + 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 = "1b1zx07kr64kkpm4lssd4r1a1qyr829ppmfl85i4adcvx9mqfid0"; + type = "gem"; + }; + version = "0.2.9"; + }; + ruby2_keywords = { groups = ["default"]; platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "12ip1d80r0dgc621qn7c32bk12xxgkkg3w6q21s1ckxivcd7r898"; + sha256 = "17pcc0wgvh3ikrkr7bm3nx0qhyiqwidd13ij0fa50k7gsbnr2p0l"; type = "gem"; }; - version = "2.1.1"; + 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 0000000000000000000000000000000000000000..5d412469617fca9cd71453a44ead08d64ad6887d --- /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 181273752ea87a31bd178da90cda38a314036642..dff69130c18acd1187460367265fb7369c98ea16 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 60feecd665de87082830a01dd9917fdbd96b576e..3e4c9828edec27ca8338efeaccf03071cd87475a 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 41cdf267f5de4a51a4c1588ff771bb0eb335bb7a..350cb56695f931c5901a36e7343a4c344d3e4684 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 a488901441271dde264a6f6df35317b67406c2c9..cd7b724a1d78f07890b72b1b9c8b8c64485832b6 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 9954ff660adcd26c3a218970c5cb93ec09bf712e..cf3d6fe9e93e98eba5edd7e39f4297e0c2bce885 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 d06970e8d07cba781de346898f42636b494888c6..1235a41ffc7bf315724234ea80317b1f7e8cdec6 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 c1c2a44bd7f29a46980d248d9e2410af6ea73096..668706ca389598133f56cea6b5cd9428edf9445a 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 9d244ca18f323e226996e366f7e40587366ccba5..ef4c732ef52176af2e87e0339474eee424559171 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 0000000000000000000000000000000000000000..57eca9f47a58f78d3ecbf99450255f18f8231ff0 --- /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 9c0dc48d42eecaa40fa7bc1ad263d9071a02a076..63ca213c2c4234ee1808ff01f9ffe32588041593 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 04ab062c1a1b1c091e2968954466ff74ce3f7402..64296688c93e931c6d8c46fda0f31dc6a1125311 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 a341a212a37f6b4bab34abea8587fdf5807a3d10..dcf022fc445317035ceabd16c7238d4c46524d72 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 b4778f9f4f8be1888d0af18bd9386ac3eba2d63d..3b432ff66b128f0a5a25ab41dc983b1daa2641a2 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 9a9edba512aade156261439ce0f0d9fb5c06b52b..7077b855e3d0353e678ca65725395842c66038b8 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 84be50ccb5e506c4867d2a9f2e3a695c7e4009da..e5a2b87f16ef9ba1a03a47cbe76ee094cc0e2c96 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 d86db7adb9d024321d7d1e8d2a031b56ea51a85e..4e888f4faac893abab923221de62a567320d719a 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 87e636b9c030fc9bc1ed2e02889a9e99473769aa..a4932943fa23600db46e35998e6459bdd44548a6 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 36ca31707c8ab801546acffcb72502cfd1aeb3ba..e64ae08037a3b85b102de3f5f175282b932d70f5 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 b84053b94adc13e521aa82ac63ac15f4b370ca0a..e80f43f5bd9ba07b5eb8d8f6d2d598a67cc52c56 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 ea78331e47640dfee6f814ae33c7151ffc4c6795..e83e349b21c1ecb78f304f5566cc4f9a18bc354b 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 9b8d6a7f976b57014a0f260f9101aca0eb26ca9b..21ad7d757a19fc1590989c717b3d953ed57c274d 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 d1daec2848269a02c5970ef853fdf671e96012b6..af121758c3cd66229b950a340b38e79c243eeacb 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 f94f8f5dd707ba4350dc8aced091130aeed1583f..accf62c0c469ded79e6774f30cdfa3b9f1f0b5e7 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 6e6145e790863abe10e14b3d0eb07254c76b6f7f..adabe22c6b64fe26aaaab4cd8ee2f798c6cc28e8 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 7353078600d1af5746fd473a87fc8fda64eb4fdb..98f84ca68b8e388adb0cff84ad4a5bfa9beaaa75 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 989dfb886ec340e3ab3f09fab3f212363b450171..c97a67c0bd38f654656362d1186731b37f8adb9f 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 0000000000000000000000000000000000000000..f301122a92de9b0491fe1c801d6d7b29a4789c60 --- /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 8bae8ce373c7868f2038a52d779c6a2ee10a5a7c..32c8c696730f7ce4b25f1a5940202f5616fcb89e 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 e452ec0511e75da7027b4470b2d7bc7105fda014..8a8f80f57977ffa79c3250128817684e6d740cf6 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 279791561d90861e94d038c511fb0b905fe5e51d..51b08af23c5c93765aa0d66350b3bbd479de515d 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 ba23078bba9340a720e8e002fd0c46a183b5cd0a..edb8114e4a416ae669fdbbfd401ac6b7738679b8 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 437c42b03317db6c0e91abfd35cd88c6a3fcd206..91a66bc737819c716ef6382a0b155ada621cb833 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 0d25d3d686c9908f34db769d0fa7223895ada2ca..b1e740fb76078616125179f6831c9b8ee2704a6b 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 b2997ece5d566083e13d1a4c305e236d4bd8ab25..bbe05e0396bbc4296ae950238c87f620271070e0 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 d6f8983c5eeb828da03fbfdccb446cd0fbfe3b1d..7fc042832b50c52ba60dde1a0a566d31126a5223 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 f21675e60b2d8676e24a87f7406d403e64b3a97f..1535b1a2568eb0d8487911fff081849656103445 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 3ee4fd8259a9e2c2e9add7aedf04eb061f29c037..7b642dffa50381ba88fbcb2057358b2b4eb1a7a5 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 957f0f7f68bbb8600882c3494329b2e325e48228..1515b4b0f99d3664dc794766e17c4649afbc312a 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 0000000000000000000000000000000000000000..c981857a248b2f2816d81175a1c39d897b9331fd --- /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 7fd9abd82a3fcea78ef9d04d40a92b59b9de594f..d698d25cb3b986d858b5666ad5e14ad7c858aa3b 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 4d4dd248bc53789fbb7efe8492e50b24156fe758..111b0a8867a47bdb5721dcf28bb5133d19970909 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 43a2d0cf2d0ba29c8ec7eb6823550243c2a310a4..51a835e4b9f0dffa06870911781d56493ae0e92f 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 2b1c03ce882dd9957c81eced74510d8df1b5e94a..44d7f1d0fc8c4290508a29c5e5bc6e8959d2ea21 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 31568c7b0fd636f7e511500e168247bf759df72c..47f02e32d77d93121578c36e3dc2b401e1295e65 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 3561fcde839d2cf93107be024fe5b524c86c06d8..134354de40b753d16abd224a6af84c5116b97c37 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 ff0332e1e5ff4f3a7a875cf6020b7c7cba1695a4..5787836487b4a5dfbdfe27e1a025f14d1ecd96e9 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 a3cbdabeacf6b79e294473b2cf3b744aad51726f..eec7a066a887a1bb2dac3d38d9ddfdcea9655081 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 a5196811a6a51b552b0bf814dfe3311d42dd3636..70ca28b4678317abc43e4c8e8b77c92158166a7f 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 2a9e162e7ea9f80d477b21b806f370549c302977..d30e5d96df45182b242e2132abd4b6cf4d153585 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 3260f6a506908b8d492f4aa44807c92b1d093029..992b981c0037689fda0cb8c93c6bd063982e9b7e 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 aedfff40d702831d04121ed76030f2f5e0d4a834..8899654cc4c88e23de743c68f80deacb66193bc2 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 d3cef00bbe8adb44a2678e3ea310c346bfbf87d6..9e2857c960fc452cfed83f19971ebcfefa56c590 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 e8bdcb37118962c851668f2b75fd5729e52a696f..c3d2feb2fed78bbffe33dd210c894370cea86534 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 76ea9df78c25e429cf0244130828a216bd2557b1..f9dbf14624f72ffa4bc65b545a939d4c3bd4e97a 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 562835159eb3865b8020b1516590d710eabb8a3e..3d41c45f6dc532204ed0da55a7ca66205bd17d2f 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 b954d2d3cdb8abe2e734dcbfc08d6b891fdd2728..1d668e039bd07a8186ea228264c276bdfbfbbfa0 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 36734a97516b9c1f302d1cd4ce4aa6ded8d8c113..fdd11db509fc3dce16d2c0c3a319ec7dd77e935d 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 06fc04ba8fb46dcc149214b015a6a2a197642ca1..469b4cf5ea6d7303706683d0bda169cb563ea815 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 6232d1118a7b96c33600b1028dcd48c7616c741f..95ca5d4587feaa5377e18273495962d9bcefc4c4 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 7adbcb86c501aab6b6756b3b47d3fbc9d41f0dbc..d0980001c8f69dcfb215e905e4ba1c2bfcae5dbd 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 756c8e2597180c4a30a14b47c42d5f1eb3d2a7f1..ae9576e6cbc77e985d029d3a5ef1c4b6b72d4438 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 0000000000000000000000000000000000000000..c3c982547aef0a55578527a60042d2e85735c9c7 --- /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 1c6708c51c97183330d796062a0ee78b4f7e999d..0d3c9d0cbd06f0ac9139850ed80577408098d2aa 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 6900f305c0f8a83d91efb2eb121669cb13086817..d168222792067e5f1cf29b5f634381a33e8a3a6f 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 44d231cb07f9430fe5202ff645c9d37f6f70dcc1..8073c11fbd2a03355fd75e8cd17a4ec2741ab59a 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 bc1b369d98d9374bd13c2116b943c08c6ffde3ac..0000000000000000000000000000000000000000 --- 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 68566e2a899fd96f33f362341c8a1893014e31d6..0000000000000000000000000000000000000000 --- 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 898186b714b69433c653b623aca1463fa6b8dd2c..ff6b1e9de2dc6eded2fae4d4b5e0a233223cf2a8 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 7868e74d010c0d26b76d33608b90411d1207fa82..307781931e971ac206dc9a5e6fd7df117aed91e2 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 0000000000000000000000000000000000000000..78b32f7fca15afa34d2edb8e5c3aaad83e7fa1b7 --- /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 0000000000000000000000000000000000000000..9df4c59717cc08029908c30a55aecead7ac05a4c --- /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 8b6b7741c7df9ade09dbe7aa4453e2f83f421224..816b352460ba20ba3df836f55eb7cb4faaa7c637 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 15979def34b03c0352fef27dfecfd74b83a2e0b4..ab13c4989d9a988b5de8e26aca187823269d8838 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 f3daedfb96b6c2381820c20f1d9b8486baef61c5..3fc5099acc2c27348d22577c74734b27f25c11f3 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 76abe7c9b4b34245bc6ea0996cadc449fc1c3150..532166cf6fb087f0fe99121fb42dbd0e3159d142 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 846ce30984250269cd9beb73495b2aeab8193fda..2bd8bfa99bcd6e5ae71077f42c1946849ea7acc1 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 142dafe38eb16948b90360f07b6c9365286580a5..0df0f86ef4568f57e7b9c00503d5977efe6570e7 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 }: - -mkDerivation rec { +{ boost +, fetchFromGitHub +, installShellFiles +, mkDerivationWith +, muparser +, pkgconfig +, qmake +, qtbase +, qtsvg +, qttools +, runtimeShell +, gcc8Stdenv +}: + +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 7b5b40d65a363494ba1a19ea4b089da5f217be4b..9e651c59d4eb0c931009a8cb80f4676846183572 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 e9dba4bcf4694b899617b9d8a6a3984b6c165c05..28f9625b5b6675ccde4f6c6cf9e00e6ce15cec1c 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 25f9b10b1e859abb3098847af94902a4594e4661..e2ec64932ff222252da5512859c4fa934b0464f7 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 f84ac6d600a69b1b845a835ee502cc7ecdd1350d..4b201c66fe5ef97e53c011dc0af1ece0de303e9b 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 5dd5fa0f5122fd26f05ac81426cadb4e84dbfeed..335279c7084ada714d5b0d2961e48677df803e6f 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 61151cb15506195d7331f0973dffbc44b749a7dc..2ceb8e91def8705524c8040d2f0768395b619d87 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 58492259b090e0b40b48506eabb58d46796b6053..6f8d690779be5df66d6ced7b465117637fb921ce 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 c9ea146f063b6aafbb2f64173a52f7d2404d65f0..297596b8e39cffab8a1688306984a0570d15759d 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 0802a32d92b18a316a6965359eba701a5b243fc6..8c002bd14b0864203c8a4d0fa743022db5ff40b9 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 f7964e4e5c6df01356db0c0a84d14a6fab657d30..b96e6b2a02d568b4a6829c8fa15d717f8d2eaf57 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 9a134343d296b922753914893f8b9ce2c0540568..a61c66d93746144bf6856b2a180623c1d5b97f5b 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 f2585f7814656cf9759bb19d34850a3bacd79e73..7dedf52e89396245c8f8cdd7e34ff0dc4ebeba6e 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 ffb938f30a576767471cfbcba11e3c3a78d8df18..e1b14acb46f4f38356180ca1d529da57521d55f0 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 0000000000000000000000000000000000000000..0261dfbe89914b6e0daa29124f9f655287303b75 --- /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 0000000000000000000000000000000000000000..5813fc15c0d070fb09d13b93205d86c52da1f348 --- /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 0000000000000000000000000000000000000000..b108d1a5647e98e413ba322144df185f5904dfac --- /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 03f30d64fb2decd04fe7f2c47f33c974dfee81e4..b96c4d00214b88350ffa29af05cb103051bb9aeb 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 b84bc08ddb374fae75fb99619fd2230cc34f1ebe..bd018a690d48b98753c0dec476b336c85e80c1dc 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 f084d17e3896a7d96442fe96f49baffcda20dbad..1ed1ef4afb5359e373b10acdbf0f6d9a7481861f 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 0000000000000000000000000000000000000000..07d194dbff42a12c4b5a7347e6fb92f177545510 --- /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 6e51e3cda762b3d1334da79689e1e3e9bb3749d8..3a26def26c9141960019c29d92429f228a28baa5 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 3749f568aef2975298ac0de18f30f4085bf5839d..66fe0d7207c23aa5ecd26652b6bc2265958a1667 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 e06f2a88ade4c4021562a82b7abd6820913848b6..22cf63e536c70ddc0698d2d446fed8dbf4e5e620 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 e643c212225b60b676adef72ff521c5151171d66..79ee45b4c1c4ff25c3157f1e8d00653668d67350 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 ca4f91533ecfabbc9517294cc9028acefeb95afe..f5185c639873960469bb9dd5a0e0a8f822851399 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 0000000000000000000000000000000000000000..8377505ec1c5414ec6c6ae8ea73b4c115e86327e --- /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 2eee9ad40c16818ec768319c3fea69dce3d57852..84cc0e0bc8dc1de202102b01449e26e09df99cef 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 5c31cdf6e72776ad5a2d4075eba24f39ca20e5e7..fd1aa050fe74f328722d76267562f4bc63b3e849 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 eff93c8e99c11c838aafd0dfa6f69bb91415a69b..61b900c40122cd042708b08139235876385a6453 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 a8402d9759319dc4d576b7db7bc1407376822d56..6fbe39c4da2d1a475e732c04427c3b5c2db0ec7f 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 debcea78f555d19b37a0aaf1cd2a2693bda8c751..471ec1d4a76a8ddfd1ba2c86dd71dd6dcd0330c4 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 0c8ad9ae1b3cb94487378c4f4b261d30f8d4d05d..da6250fadf3aae730e61682d2585c5d2d399bee9 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 e734e44a2e0467dacf994d13c0c3ac3ece181dda..0a54bc98bb9a2c2ae6f15b7773e31e2a8f304b7f 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 08f510a2840e25fca4dde4d622cc6bdf1f10e6bb..328e106694b21d429b7e80e25da9185655b12678 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 c0d41cda02dd49e14fb05b3a07ac4854aaf4e809..81c236589654dff67bcb00832f128f774fabc850 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 753a0d24d0a31aebc3260640337a406b7af3c55a..b1118cfc59770e682299d7181179ef585672d9dc 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 35de284c0baa76f27cea2974f9f269b04cf2e9ad..eacc4b5758c365962077ff5149e860597dfe5f5d 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 0e8cc2ebcea982e8f8e1864db5631d472039a346..1f6112d7d7bbb67e1d785681cde479aa6377a4d0 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 a6efb19b5774a1a2eec2e6f003fe9227e9d0675c..6717fc3c97f9531906a68200e2e3da0ffc415ffb 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 12a0720e44730aa0ef92da4b7f01b370056c9059..e598e099d06503ea0a13dc1470419acf5cd14001 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 ab8802a1b691772e488c0c8f134ae70bd49ea1ef..5225f88094fd33a5755e43a7ddcf49956c834a6c 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 32c117c01738bb348f5df8256366380deafaecf5..a3067bc4af864ddd6b1e6bf94d78c718eaa8c4a7 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 249d9ff1d4007ac6f1bdd4aac24ea82374cf5299..3be02e7c41c2a5a940afcbd535ff3437e62f51e1 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 443fe2f1d6c801e38a287f37417e82549722822b..03483a1a2b8ad21c00cc25b67ac91d60f54cb719 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 0000000000000000000000000000000000000000..ace1e5add43f66e5dc8702e2c33a21fe4d3bed4d --- /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 6a6c95b6572dbb22572ff9e2efebae24d161aee8..27caef9ea2eb2fe668d476c54195cc7cb601f413 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 b4d97c368ea219e6d0ebd912c87c4e35fadc52d6..cf7689367bd3eb79102d197d4dcb06df6820df7f 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 9a40e3bc1053b42698eb4e8bc1c6a8feaeb8fcd5..80c455f41a0eee3bf2b878719f7ce46ad5901a25 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 29e768c257f101aef62049e8682cefbc02cdb2be..099bcbfb25dfd592b8c75f1fc14f41d17c16e212 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 4104d35cf10c3bbf220aaf4b8c3e4764df6d082f..992a3c0248a0c8f4f687fa248352ba405da68447 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 c1ba5ba23b1e47dec84620fd67bbc2f59e19a42f..f2fdd01215d68947194fc43c6502033a19fda5e4 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 0560b1d25b3e3028467b469d7fc7b99b1e62d776..9d690546102abf12fadf3e13e8eaba4c646f4d77 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 55538925abd78e8e0e03b8edff33aa0e14b50c3e..528b0d9b9585d5e5f43e733aab7be7856b23a719 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 de92219e7f979f07c95ced1d6450b01c0060c0a2..8dde3e336cdb2b07fc4504caea036ed5bdaf5c4e 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 03ee66fc5987678caa533ef300e87219ae13d7a0..7cfd0a935f3d43d94e6816d2d599a4e88b177d9b 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 b0fb18c89b1ab87fbb6ae8335d388c78933f7f33..a553eb3e7153daaec00179e25da3834fddc1e511 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 29b0a7867db2db526304e019b0132d2133a1e11c..4e56ce7f5a126d257dc4680ff5fbfa3d568136ad 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 e826dee0d2529df71b319d8be96a248da611581b..8bb67df70da97339a0f29902a3f256d0061c2369 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 497630c9aa65d76335e393d1cb3dee0fc4d29005..43b4622ab03a9cebc2dc61d7f1cc30dd90993b0f 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 f0abbdc049a9bd96b20e3c0dcb8cfa52f43a560b..5ded38d974e0b1f944473011c90aef2e0ed47879 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 3eaa882cb73d0869b1cf84307e7778ea3d02222d..6d3a3d1f104fd9f047cb419e99ade05363019a06 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 ea9d7c9ea855520b028e54980729ee3755395a97..9fcd5cfebf6efb456eb6dc8073f680a94d16fdee 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 9a4f922c2b6e6f0d2a042fcc769af83714c89a53..b6e1b5a1667eb2a18bdfa75729e1ccb2dcc5bf7a 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 2144ccd3303754bc894fcf5fea5558fa5f9e56b9..dcd56182e3208a75f086ae32fea8539afbc1e8a0 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 ad59b1be10e0e8d539a2ae7d62ac2f9298ce3ef7..f3c7bcbd1a0ebba158758594d8342760f963cbab 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 88ac4f0c3eb9a3b5ecf1785941b63c0defce3a5d..2dd4b830102a34e42a20f82c6183bf80ec7ecbff 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 31afed3061a36dd812eb890837944a0943c59c58..05ef696f99b8469c6734ce6965719d9c102e2b7b 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 dec8b4ba0a7c3c4f3d65060c8cfdc91786c36ef8..92bb4ca22077326003e3c04c9ffa3c5e1a2161bc 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 e7c32c13095617dc7e4123dafb949061dc19e815..7adc777c00da2bc8e123dd21d6dac25b4ee3b11f 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 6cc5dc9066dc4e7fd3ce0670198f5b2168b7731a..2be5a4ab83b93e13b05cbaa285b8e318c92294e6 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 085dff7ce04ea9b0a53327b08fb08e9a8c854660..9a00959de020b8ffe4e3a3966c5c0f6cbac61f6a 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 da7775769d4bf1052ea7b60c700f82c34776e7b3..3498ef278675392065a93f2094ac1b71528d2df1 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 4568c3e8acc189f6d659ebe093191cd4366e4442..36fa888e88843621d299f6f4dfa484209c77263a 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 484ff62e9e685c26d91b055b1098ee304fb9e7ed..e2bff0031186029c2ae2aafcb7e804d8461169e4 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 3ad83776842186a65e935abb141ad4f320670429..ada603cba96315afc40d2de65aaeb86ae8726a8b 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 8b0cab31588899886d546cadd2c7ff033c542310..ce80ae14f2331c8118d5c66bc8c726d7bba4d40b 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 0000000000000000000000000000000000000000..aa11c069a7a80945b207f63e82841a43618ef369 --- /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 a604349afb01032275dd870e21306c58bfe38251..ef371dc59fff98ebda4409f54a176174b945f767 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 29a04627bef4031533b6172dab174d4f82f89ff5..b9951b6662968054374ad84b4d68af39a4c5fecb 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 ce800e8f18bef04aa5a7a5b2335e3a5d4bd82910..69eb313238bde74bde63ac2991312b1eb269c034 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 0000000000000000000000000000000000000000..66c2e83d62ca8dcf2a28c8443634c2dd1d5af89b --- /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 27d7ad8730b6a8b290a7cd0337e13f5b2543c80d..47536cc9f6a48c6604a72b9952ae6ed9a61fa875 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 1e578cde512a7400055f4e0345764939bf9aafc9..e427519d4d6e253170b8d0091f36ed69f5c38fa1 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 3a0a548be0b9405c9ec6d9d79cf7d4232a82d5fd..1c5858b5677fc65bcbdd901f11e190aa194224e0 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 8f7f74f712321cee6918d595ff97141d49aef2ce..e58570103240398f51149ceed8a4b2a62640ad30 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 e943263600cdad9df5de68fadae1e9814192451a..6140343fae75f8cc7279be23ac73f1b10c199ada 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 375552aaa33a4efe1df4cf820e7d39d4d7007085..f5a88cbaee1726e110bf2267b2f83bc1a62a7264 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 c98defee57a09da5dfca41c8d9be917d75f9b106..e537180686cd6d486e8da6dae39154d6a51a8654 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 370f88d7b47944b9f0f41e83fde14d6fdbcd0e3f..f20d5ccdc4acb9d1297d7dfa1a4bf69b1bff24e7 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 1dc6a9cfee566f02b157b981e7518427278f6d90..c9fc0ff30fc0d39720b4c2c269bd0e6361bb8a3b 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 e404da974c46f4f61a2cd8f311fcb4b0a31eb831..d869b09395580fa8b3be56eed9f72c2b74a9ce64 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 8ffc8ec69fecf711158949c13e1b444c4ea28596..e5838dc1bbe62ecba7b37b33cce7390b49c83e4c 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 2dfbb7a23705d3ebb35d74ff348c98c96b706f1c..b0f1f48d9aea38b2a750fffa606e9724b89ac306 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 - }; +stdenv.mkDerivation rec { + pname = "osmctools"; + version = "0.9"; - filter_src = fetchurl { - url = http://m.m.i24.cc/osmfilter.c; - sha256 = "0vm3bls9jb2cb5b11dn82sxnc22qzkf4ghmnkivycigrwa74i6xl"; - # version = 1.4.0 + src = fetchFromGitLab { + owner = "osm-c-tools"; + repo = pname; + rev = version; + sha256 = "1m8d3r1q1v05pkr8k9czrmb4xjszw6hvgsf3kn9pf0v14gpn4r8f"; }; -in - -stdenv.mkDerivation { - pname = "osmctools"; - version = "0.8.5plus1.4.0"; - + 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 8499ad0880c0a57daf52d43934f264f24e56202d..90b42ba72b7fde4de5782287d499c003a2b465b7 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 c6cd118aea80a1cc431b0e35df33dab66f1972a1..202e7a2de95f8a8a3f8966a26d552661e7e23ce2 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 17253173a5e4f6901a0ea4da49ebb45ff9beec80..6c3241d629b8f27c326059e215d4561511d61f2a 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 9756d9b42b0a2c0cc8b237296c283e7645c185cc..d364074d4450e5cede33c6020037070437aceeaf 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 ed54ccbb0a15cb420f52cd87ee398c5b1dc95e49..58d889484d6fb1cfb21c1a21d78a2086503e9538 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 ee54904bfd66e479d3b58751af56d39218b8ef41..93ca8c64479830463a83d9ad4de81062d2af7696 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 1adab6b70a3eadf724e1bea3217e2e79fa37990c..d8203b9e7b5dc39ac64f12cae271b5b59dba64be 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 4b086c691cdf8ec53b8be63d8d9e7d714aff9ea4..abf49f9368459d22efe54f15082166db913fe7d7 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 fc4e5229c9c015716e5a3c7a9abde5e9217b95ba..ae96ce6925e3d3077c2fa744bd3b9c6b83f988c8 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 ae81ef3c9f6c210d2b403bc02a3ac3c6421b556c..87a6bdf5e53daadefcbc79c938e1fdc7254efcc5 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 86e10ae0943ea8c2fba9b7955303f9477f9b0adf..5fc0703e011b5eae37376490d082ee6098ae035c 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 241d5786468e2def49d9ff416505f28231e09de6..68f29cb9b9ace1325ac72da1a0224bb9f6a59f8c 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 5ce7d06d7273c559ac1c59d3ed4f3e8fec2550ab..7532c6e9bc9157ab65658d6f30e4fd9ef2477d96 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 6fb70f1c9a267474c76960a100a8a7660082b924..017383a79a2d24f050d5764eb38b08c12f0fabe9 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 48188574ad4be7e6d003e5d156ea548510cc1e36..fe9838fe0d97a462ccaa8df90292d4c769cb49ec 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 8413f8c8f1023a23d573b625bd58cfe1e6007f4a..fc86b2e885de30a885322ec4f39583c4d0252591 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 fcc6ead550a8f06d452d07c16eb48b74081f9aa3..1fc0162f8d083d3a4a81e15372d58b76bc3e81d8 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 7209ee3e4009073595a0c4af00b0532f2dc9e815..674570ec3dd786ada9219620b57a6a440032def7 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 34144e35bd5ab9a3f6dcc6ff7e438ce2f6ada13c..cadd98c7426027dc26223e16ca8a6373e0a545b1 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 cd3a46ab09ba8d892dd3fc215587c7a07129d3e9..1e6c558defbe07300275a7920ca41eaac6a5cf04 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 caf4f270a151233b427f499964f0dac1db9fa6fa..144addf02c662a665dbd9b1260c27787a03f3619 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 501fae0ef0a249e9dca727859321f8c087ccb42f..dfaa018d3724d1c58b89830fa1ca10f2d92fd23c 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 f5504721987a9851625aebe28cd507b6206e5c3d..ef490702a672f664f0499c70111b521eeb35ee6c 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 81e316eb0ee920a5769738237859f3cb8721be85..a5fd55c967bb2b4d000839173b1701762992b6a1 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 0000000000000000000000000000000000000000..e90a86f225bf0ed4a980397bed40e2c151f92b38 --- /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 b1f4e5f9e42bb1f504673b03a0288f94a20ea9d9..91845abc8b21bbfb0c2c027c2869fc33fdb7f5d4 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 bfbee1bea24d51a8708e5ac002b647c25091e8f7..aa2835107088daf6d7d68d44ccff33b5f0a1d64d 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 614e3ca813500dd488402326440f756bcf375d71..be12906e61ec389acd01536c55ed685993e6d559 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 60de2f9abdc96b0c7bf65d89f6046292ed0f5f94..05338b38dfefe695c08c878dfe13ad87558e88cb 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 0375b99af483e3ccb689d9bb492104c47faeb9e3..00c451141792266915c41155a18aa51e6af41375 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 97751127342587787b4e7eab1ba701368c25bba7..c2adcabe414c4d92d122095271d573e9f50e0470 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 0000000000000000000000000000000000000000..84782e1e7178f8e515c078f82484849e9c702216 --- /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 0000000000000000000000000000000000000000..4f046e34b18926bd4213f69ea0cbe8861655a808 --- /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 21d4b00317926938c6782ca1a72ea0d426115062..c57153fe0e0dfb55a8c1b0e223058f0c32f25871 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 aae38f7d0f17b86c38c7747ee435b0abf5a2fecb..d780125fbbfa3bd583c20e221fa7ada86034d747 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 a679a4f1112faacc48b6ad739386eb0d869516be..2137808421437808e7c12b9c45d1e1ba835626f6 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 21fbbf3253f79b5c91e01c3e0d0ecbdcfcf5ce30..a3238f7cba474316b6fe93fd3b2e14f370d6132b 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 49993f2f7ea7515e0a991872a5bd25eee8ce70ba..623bd050dc9b6455ce1ae6a9fcd3c9786826e839 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 b7c137258fd97d501bccdd149c368aeec71fb30a..913d2bc3c6ba350395508081ab27bf8a861b3f88 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 4100ab3536b7c489c417b0ca4ae631718703fd5e..3e55215f4733c68011a5b74d5e3aa13493f40ac9 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 46b446b429bf67d76dfde04edeb5a289875edffa..70d9f600fa03bbd2db6344608d42558a929e5063 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 702cadfdaa91bface095e6006204943df2056fc9..c65e5377eb3b17e95c17833ed4559443aea0e251 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 21d51f172582d37d088489aed27195a08cedb50b..c5dfdf95fb5e30d8a2f4e8afe07dac5127ed76c5 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 f185524da5875275629b19775cd1d68a47e1f817..faa199147490ecb2ef96219d80eb734d690ab7ac 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 948bcf33d378fff643ac9b2453ce545dd96dd334..1956f0ad41d5ef77259f1350827b0d44fd224564 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 7045228d6a2fcf27bdefd13856cd595700289a6f..68ddef65697245259978f9ebb7486225ac71f969 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 71d79b88f440518c74e749e551b19fac52a1736b..ec40347cbcb337d13b8271d648f357a5796733d2 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 2eebe67c46da3bbe0bd4240fee57a8abc5c74ce3..c14eee398ceecb74dcf3dd4bc22ba3dc7e9c9425 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 e9862041f4a82fe2912ed29d59b3f368182796f7..81fbcc8b48380c77ac679c3bec27c5e3c344c9ba 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 816a158c0319b6020903e4b88d45ad7aba56506e..22f46eed7df47f73c9a97d57082fc061e57aed22 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 00640be6c74a6dc1a0828255e5741280636a87c8..f42a58e0057da6e10ff7bd39f89c50a1e3f7cb65 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 8df4e960c180ef51055fb3d585986b2198b731ae..ef0a3047297472292a4a0cd0c4927423654c7b86 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 0000000000000000000000000000000000000000..9b9479b1b49a0566ed091041b92651699444f717 --- /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 0000000000000000000000000000000000000000..14742da35daeae9d16a28e604509c19adb3bde74 --- /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 2255089ab7e2568a53ca1ca21c0167ca4829f37d..088ec29ae37b0016abca5b9f8c7ad0c26100dba4 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 eabf77f0e951ec9d5fe9e00060f49d63d48e0cf2..d8e600f60193e5f49a138dd1e18f1fd2abc243ae 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 8c24d27f07529e8bf06022663f7433bef0caa8cd..4e69f9cce145285d202b45fd77002fe266d04d11 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 137ec920f75051b3e7ec761ee0303df757181e2d..4f63ed057b78f82622397cb8cd3433f616f027bd 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 6ee9966401b5fd630be15c4fa967243d4638c623..eefc0a0c577210bc6c9cdb0c8352ee3404ef4e0a 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 20211ecb53b18619f49ec97129efc855e99408f6..c4547e87513079ca8824b7367dacdd186d96ecbd 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 0000000000000000000000000000000000000000..74bfbe83e91f35a2f6d378c84f0448cb651c9472 --- /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 3e67e4ec085f5e2350db04ba632ee6f6e0bbcf2a..4b6b4eb8184cc20dc92a695e9cf988718b60448f 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 4f4319af6cbdc653a6e6298185fbfda31e3ebfaf..f81709b973900bae3cf7b51b85f40ecca30177b5 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 13e005014f105301dcecfc5ff11dad1b0d1ef1b2..0c95acd72057fb1a1115b850da813c3400a07fe5 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 b976388ae2c463dd15ca766dfbba3545e9560d9f..53bb938c3330d001db678a0ef45b8c5fd8ad0b74 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 0000000000000000000000000000000000000000..a056e603f004439fa1f0dcc87bb51e643efa5c73 --- /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 2982c02cce9aea56e38896ce50760b559f0af430..71a55f9293c66c2e8106fdf0709120351bb703aa 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 ba8ec3a6e72ab4bc20539f30035cc4045d6faadd..5a84a9b472a5ba97351d4c70c3c1797b0b49c8e4 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 2f2c20558031d2d4640b1814e7a538958d5eb64c..aebbedacef64465f511613c6648090e59bc9c81b 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 0000000000000000000000000000000000000000..6512f402ffbd82e0fbb77d2a481ba21ffda6c01d --- /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 0000000000000000000000000000000000000000..38978799b5a8de3ade8c3e07a190980047cd3d98 --- /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 acdd21a1c219444a7b9a0df993d7f8c056653088..c71973da13beb8945c298f510942cfdf6a189457 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 7c239a9b75436fa96ad4feb4e5b69a4899b2c37b..0000000000000000000000000000000000000000 --- 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 fd0860b3aaef3e8e288f433e60dc3224b98505b7..0000000000000000000000000000000000000000 --- 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 125170d36c27625befd4d0f9c5b6944f82f4913c..f6bb7133d99968de6d16db8786132f3aea7af755 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 f646b4739154ecb997232d206f171eac835c0a35..34a6142e83a18b8d6b1509813a1ab31a0e55d799 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 a04b0dcbba6a5e168b9ad9c8aa16792be6af9f61..0c5494f146f70cfcad7a228ad38f18522473bb74 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 6f38ba5662b5f63a53a73c5fcf64d0ad49e50825..821fbe35ca1a1679b18a34d25f321350f97473c4 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 c95eba48bdfb441b46a9c71d57e0c2f5d438da66..6ee4695d1717aecdbdf7d930776da5ee668b0ad5 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 3cebcc0101f87f6c2366a90526ac9b6f1d6a9af0..997786fc10724aef185b8fcce825c0c3d6965491 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 9bbae33b3e4115f021cf5431958b357a3d140eab..fe8598e49157d6b5b2587f5c48e84ee77d9819e5 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 4f8315f060a74ab443e88d6d75f693fda06fccf7..070a81167ada635470be05cb8a491e9d0f9132e8 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 e81c0b99264e777580a03edb5b9f85b1f7a488ee..16a11342d812941b863860ff9fab9e62350130bf 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 30aa45c14ffa97bf1587297c061b6255753391ba..3638a1d18809bd3464399efe2c457fd59dd68f1c 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 2b44b0398b55d49dc5c3fa23ea565912f63ee242..c0e255a36e377b268bdb1eaede739aeb58933005 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 1829407705b9dbbfeeb396fcbda6cb977e9cc7bf..195437250a18ff91d4e9730125264572b48fdceb 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 d2d5e9548a0c341b3b1934b934da0d1077ab0feb..e93baa997c86cc3ce8d0f098fa45d5a24d04685c 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 9ee30d347b0a819e2d678a3d354578b026cb5754..1eaf907b7edfc3d1829d44a99c8c8b7752aedcdd 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 a32709294175b4ce5f3fd369796c3dad43a99aea..0753045cc4be7e1b971da167467d5857bc3f47bb 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 8dbd0cd577678df2dfea90d36ecc786dbf9e9772..25019f76545e36fca309e2d03119204214374c7e 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 193bcf205f5b1c00ef0bbb8c28e2e59c6773215f..55025621fc7db817edb64f12be0cde34a28f2f38 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 bfb3d010a3c7cc5415614c412ac1f2d8560ccd29..5c13cbf866940ddb75cefe5af4a2a32372f5a927 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 722b0bc5077e7d985eafd8c71c449c9c473af7eb..d2a883c295dbdfb4998195f887b4d506fc5828f9 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 9550a8d4fd7b0accc3f2c7197ab2d6b8233c6e5b..45dc487c8ed11a75d8ad82b80b253e1c16ccd0c5 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 0000000000000000000000000000000000000000..b8e9f1e9195e7367fba17e15a9180fc43fa1494e --- /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 103075024dd5fb3bb7f7e37c014f91cc73c7ea11..27d5610956d032f0bba5fdc7de42acc810a446be 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 bb1655b44632f018554feacd06e0494d3feb64f5..c52573785ef6619aab6abbc5e7d59bdf9601f13a 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 0000000000000000000000000000000000000000..24b7953fe3d283e1f4e3aab2498280908d7ac5bc --- /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 47d7279a47fa783bc0bde156e38c738d110e8cb0..33924bdb7be50feae0c276c4e9e5e6ccf220f9e9 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 9407243c6a21f49d1d893eca167889c50a8ce0fc..3e29abee5d65d95143069dabac8ac20d06c859af 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 ebb50e685da73204880923186124134e64cb10d7..6b4bf19463061b8905da24c65723b2c3423bd0c1 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 8c47de3afac03b87b8367960b56ea7b121b96390..038d04adeaa84a9fba51a0881ba8158ad1642542 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 75f3be85dadf654a45e613669fa74ac58a276734..87e8316c2c4f44b54b05926f4b57c613c91aeaba 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 - ]; - - libPath = lib.makeLibraryPath libs; - - stretchly = - stdenv.mkDerivation rec { - pname = "stretchly"; - version = "0.21.0"; - - src = fetchurl { - url = "https://github.com/hovancik/stretchly/releases/download/v${version}/stretchly-${version}.tar.xz"; - sha256 = "1gyyr22xq8s4miiacs8wqhp7lxnwvkvlwhngnq8671l62s6iyjzl"; - }; - - nativeBuildInputs = [ - wrapGAppsHook - coreutils - ]; - - 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/ - ''; +stdenv.mkDerivation rec { + pname = "stretchly"; + version = "0.21.1"; - 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 - ''; + src = fetchurl { + url = "https://github.com/hovancik/stretchly/releases/download/v${version}/stretchly-${version}.tar.xz"; + sha256 = "0776pywyqylwd33m85l4wdr89x0q9xkrjgliag10fp1bswz844lf"; + }; - 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; - }; - }; + nativeBuildInputs = [ + wrapGAppsHook + ]; -in + installPhase = '' + runHook preInstall -buildFHSUserEnv { - inherit (stretchly) meta; + mkdir -p $out/bin $out/share/${pname}/ + mv resources/app.asar $out/share/${pname}/ - name = "stretchly"; + 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 ]}" - targetPkgs = pkgs: [ - stretchly - ]; + runHook postInstall + ''; - 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 a3247b29fb8e181df9f6a55b50b2346d25746cea..0a6e947f15c2843474dd01e71f021b98c9663a32 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 340b59d5ff23adecd9baa318c15b687f0175b4fb..67f48d67f8071cde458e1786d7a896d87939aa9d 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 0000000000000000000000000000000000000000..027e3f493e12ae322c110230b87f3d80eb8b7465 --- /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 960b7b9eeef5ee37978d154e4c4f64e3190caf89..d262fb74c4b5451343d7ff466eda795dc6af5175 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 8102375479be562f03553747452472d26ab5e09c..dd1218282d85fc2f5ae33580889f286be4788f9c 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 76a62d1762c27c05ab1461b90be62afc21700e14..7f094607859cf1a88595a71383b428cbff755d19 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 1d3f1a41e162d723c1046f18860e7233df597d2e..ec759572443cb17694c9cef7f7e2bfa8ef978c26 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 c12f5b176790d6e4ddcff45a503ea99de2bfe1ac..751c0a48f5b3721bcc2c2ef15c92a4b77ec389be 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 a07fe0c75103bcfb3ec659c2b781dea370e67335..38826b7735fb9bed2b946a9cd22ef31566eb7d4c 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 857dcfaf69f2efcd0fe78827381718bc7d0d8225..16bfdfb9a032eb08f919f986789ea58e8c1c2bfe 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 0000000000000000000000000000000000000000..ab08195e794d6ffbf991f7648db4ee1d5e00b6a2 --- /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 377d83e596272f44a19a62ed396734b5a5590237..bb922f3ca5b28a259d3622c587254790b80255a4 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 0000000000000000000000000000000000000000..2ce277d261b1457949bb8c3048a16da180003870 --- /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 56dc6112844ed4ea2411af4aabccaa8b4b8de1c9..0000000000000000000000000000000000000000 --- 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 003d7d22421a1c359fa8042bf1322691b5f49d10..0000000000000000000000000000000000000000 --- 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 87b53e78585b98416a830c57050025142bfb9580..0000000000000000000000000000000000000000 --- 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 fbb1832735beaa1007dca29644300cdde2617ec2..1b29118c9b14fd50ddf187bbe40505ccfd18d0b0 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 ee516ac97aa778c36b122d2da6ed422082a5609b..993606d39c0e31509192471ebdf347b30de7fafd 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 08bea18d8e9a378430a4a428d2cbfe7cd8b58cea..0000000000000000000000000000000000000000 --- 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 6b38c3d59c29d884f5497bffd4abc5b4f0cecfe4..a1d04a13af85ad3ed1215a804090bc96b472a2a9 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 d1642e76fa652108f07eac5e2101960417861f78..8831993117d24fd7072b7d3a0ac6c742c678fc8c 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 23252d0c4807384ec1ce907235fd8e8f94920037..6b3ef60d6382eb09de21a129eb0f193afd932f45 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 dcc46e370e7194e0196257f8c30acbd1a18567a8..0f05c496173f6bf2a5d935e9d41431173506138e 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 838cc199a6cad19beda21193a9aa87bc3e24b22a..64753397833a64d18c2d42aa06827bde8cf126b6 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 0450cb40a555b763314d860b9851ba40a003abcc..46378aec33aed8b46353622343719bd5bb727b9e 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 847092356d28b2961ffc0c28b7fa858a345a8356..a60ca997ee0335ac0157503742b31c481dd34afa 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 931a27fbeff69bc848d16bcc167325d80cf42007..4c577049f44a361dbb305be441dc6cf0d61be99b 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 ba919fbc626743dca3b3bc10be2d7e1331a2e7c7..67f2fd8927bdffed8dc8579b9be339982c8a5833 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 547eea4f2d23e1b7c2acff7ef0bcd7f51afac985..020298a0c52376c5ac673c4c3fd49b8962ea610f 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 0000000000000000000000000000000000000000..7cca3afa764d25112b3550f1d7196e7bed356024 --- /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 94eacb1fe0671e6f37179af79b97c1e4fd82d166..5ccdbbbb6b422777858bb9ba3142f0872e6cebf2 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 00300e65abb45053b2eaad8ef11f4accf8a20dd8..cde53ef41654b218e60059e0b544a8b21f6a1681 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 ba898932f06cc86ef0c6620fba1e3b9c2c9b51a6..68241d79850d8898cb7b6708097dff45f4e38c93 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 d09c98b670905675ee743dd9d78f4de4b00a88a4..ea73d5cbb68a3778bf00100c01573a638bb5f600 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 fce46d120de56d74f76d336765d0372a8360278d..4c38e530247e883dadcab3a30f52f339069c0d9b 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 2a610edde0346f9bed6863d0117cca8c7aa863b4..63565e207f77fdf57318b983bd188a0a5327f155 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 0000000000000000000000000000000000000000..5988f569109b0e7fcee650969e12e1e11a2226a9 --- /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 b176459198242968ef45a9675823eebe7029ff78..1ba22911c51fd5cd2c6542e9103d9be2461b12dc 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 c057fde95d7f8d27fc00cd700f9db12a34dc6800..fd6065010fb6a3f385bae49769eb6e3efc2a27de 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 39f54156fef8f37d819e954c5813de18124ef97d..f8ae5587ff92b61d19032b1ad6b856fedbdf325f 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 2fa193fc8e7a09124c2c0295f528f8db12374c54..4707685e3dab3069aa7507e59c3080f4bab146d3 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 a8b86e71cb135c4f4dabb503481c1cc1e5da0ae1..1a21bb43868f2a1479432bb87b580b7efe8856ee 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 c85feff43603aee1a7c6a5d66631093133ac69dd..dc991402eec63085206ff6c03c2903c4a466b86e 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 0000000000000000000000000000000000000000..8316fd918ab132df7a6a6928a85804b7dce7de9b --- /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 8d84ab59d479e90faa50f0431c1cca67deea4304..c85192603cbcb2621af23fb3ed307a050e95954a 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 ead8d7298e66a641da6916577753888f6ffb2049..c03918c4875eaae5ec2c4be83a356dd514dea479 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 bbd3073a4d8ee07167f1609dcc973c8f0faceb18..40505c4fdbea40557968ce2470b3c3eb3e81fb3d 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 93f233a4f9252999b7d953a87bccfe71784e1ded..f55b3852e5bf59d78db77648346b62caa0ad9e8d 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 0000000000000000000000000000000000000000..798f1708ae705ab185ca86b632c5968e0a95d00c --- /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 eaedad167489e623a002d20f98c8a20e90be22f3..1e82ac2cccbe6f11773adbbe1435255bb600c5ea 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 bf22cb0181da287526bc3014121ea502b8100d1a..410c17be803afa4586f759381a59a8a661eac4b2 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 d8a6f86f104b62f9d629bbadfef003b1935bef79..ff4faf139e6cd0c381f289dc376e1e15f86dd89c 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 13e0cdfb26072b519615484af8bf7feea84e62d6..7f1c3648f24545eb4817ecb6a2b9c2c36486babc 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 15c675c902fbbaf9cfb2fa862a97f7993ba5b8b5..904782f3e1f85a060bc1e25f903485be270f8c24 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 b955711d0030f1bfa6b3c350dd159a366928569d..2bbb95d01ae7d0566fe5c7c51445adf2e4207b5d 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 a2f6980abd9e238d0e0e724bda61292493667571..e418ee69b95bef2d40be9e16af30c5221dac06bd 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 76ac3f75b2660a6861738e3c083202a1b524c402..792b80d04629e8750768e20b313568ae3452d9ee 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 0000000000000000000000000000000000000000..e479dc26f175c746dae83ee918a5712e3d0c1514 --- /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 0000000000000000000000000000000000000000..586766e5456c405e8f5f7f3d05720ef3f29c7638 --- /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 0000000000000000000000000000000000000000..89453f121a9e231d600697ba4b16825293590b15 --- /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 38865ca4f3d96eacb4859b6720d2a73894bc2033..68d25e4e3de7a64737367d3d7dfb56bb244611f0 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 cd58219721c97269bd6a64c206130359b8e1e8a0..69f58b828c46e300064407949c904313404f0726 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 ae4185441320a11435dc7d6d7f4fc523139c0381..5c2b1312faf985478b47bfdeac62d32c80aab193 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 3cc4fcc1517b5583b8ee52a742f5da9ffac48aad..dbf721888df6d4c0b8b465f9c7e6ec87781eeedc 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 63892439fa03c1fdc78dd2452bde5bffc98006bb..aa2246603f33b9ee86de3cb55d30b8b93de8de04 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 0000000000000000000000000000000000000000..f14d7f7180271d7f0856141556d67ef5665806d1 --- /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 9fa284aba434f157f33f159ac3b9cb0f0144a3b2..34ca82b8d04ce4d2d8b35be8bb1a4d969d6ba7c7 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 0000000000000000000000000000000000000000..f6d00f9fafd592f2af463412dbfc91bfee62d805 --- /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 0000000000000000000000000000000000000000..3757c8ce3bb4f2cd33e4c3d0cdf0c3cd24bc4551 --- /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 791075e4dd9b74f5d430f349d58339a08db67a0f..ef4684689b8ae0020ddea0b08d68d315eecc6e45 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 ad29c8f94d8b916d09bede130066b76f7c587255..6430a1bc7196bb1a84ce44733fb433ff37149ebd 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 344c07d845be1ae23d76c77338061bb42681bad5..9234d8ad202aa5bc030d8018485482509c8d93e3 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 5a12465c4c494d27dd14ffec31d7b7425cdf6b96..6a1dd06de32c1374703b2ab8e36c85a6cd3fa17c 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 6d8da4a1007a3ae389d30502d06059ddc561790b..4241f9153293af25d70d5642af9dc4de9bf4e84d 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 b25e7f76cefed08fdc3dc44a0135c99837788736..9519e033473e3350d81fb78ddaa1f6306290f2dd 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 fe1de349cff92385aca1916aa8a74400d5764aa7..07e0a046ac53931f0dbccafc3467d6c71fc04bec 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 680573fd304d121355d044ecbae7c9bff209d3e4..a322756c157f042170cbd0c2dd3824d275e76a21 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 f71e7a7a9602df5984ad2c09bf8348d65fa21058..d939beb443e1d8ad40d545392fe4c8d25dc144ca 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 c5ba35d974755c761f8bc2d3183ecea3d2584de6..03d3256e375a6db62d7d62ea0aff19ae1245d2d6 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 64645e00bd852a7ba30cffaf919ca625eb93784a..cc88cb1751ef19c6fc4295c88800b0bb4e06f541 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 9953af19d90d5eec775c26323840e648de8bac6d..3ae4aacb872b0660217bd2598406bae2bb54add3 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 3561135ce618cf15007e1cdf91b91d876b27a380..845bdae6bec78ac062484c58ffe47bc88be0aef8 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 a59a25a144e9233cf6f5ed1ddc770f996f23ebc0..7284fa65e8bdc2732bd720c80ed9c7b237bfb767 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 a5024cb7f36b8d593d001e25d3d47ce7057cd42c..ce45471c2f022beb66312aeac16bdb1da33ae594 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 002bdef7333e342abfc3cf2d7ac3bef77eea08c2..408ef0a32330e5f64138589da2c5e52b98c75bf4 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 ff770f516bc55ec9afd476fb63f683a2a5c5d521..94c56ba5439c2f02bb5bf82ddd87066ae1c24d47 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 2748d576c692fab7e6c688baa13f42fdb3cd4563..ce4fae1cb2293ba2bc76547c8a68619cf00beec8 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 567d299fd3a6e2cc2df6aee699d4202517027a00..0dc13e290f58b4d42ac033ade1f9215e44e88368 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 74ab69a30e146c54086353b9541d2e701eebcf9f..133315cd0222368cbd2ac2202662d64c8c4d56df 100644 --- a/pkgs/applications/misc/wego/deps.nix +++ b/pkgs/applications/misc/wego/deps.nix @@ -1,29 +1,30 @@ +# This file was generated by https://github.com/kamilchm/go2nix v1.3.0 [ { - goPackagePath = "github.com/mattn/go-isatty"; + goPackagePath = "github.com/mattn/go-colorable"; fetch = { type = "git"; - url = "https://github.com/mattn/go-isatty"; - rev = "v0.0.4"; - sha256 = "0zs92j2cqaw9j8qx1sdxpv3ap0rgbs0vrvi72m40mg8aa36gd39w"; + url = "https://github.com/mattn/go-colorable"; + rev = "98ec13f34aabf44cc914c65a1cfb7b9bc815aef1"; + sha256 = "1yxcz08kminqr1221zxpibnbzfcgs3fafin0z9zqb3gqvf74jywz"; }; } { - goPackagePath = "github.com/mattn/go-runewidth"; + goPackagePath = "github.com/mattn/go-isatty"; fetch = { type = "git"; - url = "https://github.com/mattn/go-runewidth"; - rev = "v0.0.4"; - sha256 = "00b3ssm7wiqln3k54z2wcnxr3k3c7m1ybyhb9h8ixzbzspld0qzs"; + url = "https://github.com/mattn/go-isatty"; + rev = "31745d66dd679ac0ac4f8d3ecff168fce6170c6a"; + sha256 = "0h671sv7hfprja495kavazkalkx7xzaqksjh13brcnwq67ijrali"; }; } { - goPackagePath = "github.com/mattn/go-colorable"; + goPackagePath = "github.com/mattn/go-runewidth"; fetch = { type = "git"; - url = "https://github.com/mattn/go-colorable"; - rev = "v0.0.9"; - sha256 = "1nwjmsppsjicr7anq8na6md7b1z84l9ppnlr045hhxjvbkqwalvx"; + url = "https://github.com/mattn/go-runewidth"; + 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 d38383c30ecb782969def6b445143e4e3a1a8aec..e528dab0c9fd5edc2937c5d88185894ec71554b8 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 6a5f7c17b208182aebb824200c567fcb95582f86..d3b5541ac4dbf0d3559804ee9f8d51cb72911d84 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 68f6c4df15936559e892326e533a8c43bacd8ce9..8e760b787b492b58b9824086871ae29921a548ea 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 289c60b440298123de43423a1587c3f1a703f806..37b991e6d476f58584f98f850b5c5bc137d0b071 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 5a1093b47797bb82dccc0e6f7d9304a441f0dd13..1f0414838adba4fe5449195d13c31d34d3fcb91d 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 6ff09a5b4b0e31214dec2845a5436fbb4cd622a4..8b9ed830064838ca368903b67ffbda29494538c7 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 4fc06b5c1ad43aac2a88fd41b5cbc0614271a0c9..b0020b64ededa210b93f2feaf6fd1dfe304e5400 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 3dee9844c0c95cf21792ab12da1aeff7b20ed223..12780ca73a1a9797601d49b1a50f443f4b7cd0ca 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 4086c0e094a18323924ac6eec09a7df046312d72..719d26c7199b581ed9235901b442aa21276de1e5 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 295d721d3c5f694b474264496bfac2976dfacc97..4f441d8a9a99ebe989b7b442514b41cdbc8c8097 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 8c5a2e3d2db9041542301d5275e5a7ba2e31c8e1..bf6b37b10286c0b623ff805b56a939f8be7875df 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 8875c95fe578e2c42d2902a394ca3dd0f8e2a8c4..80a1ced563f8b7a6f185c9dd704fa5aba521f3b7 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 56168b348596af5770583c00be3f17fb5b68ce98..b4d821e1deb1107de1a6e135011d6ef23183b5c1 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 444ab802673e61c3098994542c789df26a632beb..29a20e0ece29268ff3b7d3acd5bf1b0539d47571 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 5d2b70a80ee415bec83b893874f2f184abaca773..c61e64a8a3a7baa2444c02deb4fa7a28615940b4 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 2e81e9b05d34efde782cf9e040f5d5a5ed33c1d9..027ff8f264cf9bef1e744b3762b346b7c7176884 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 d6709ecc1a62402a2a405a49b23b93eadb9661ee..d03d78a9fd1d2b432481210af37b8712d0a94443 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 abc808477a39e5b991ab6f61595733e2fa3f22ac..296d6f38db64a7fef1e3367611955eac9063b17e 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 dc618e4561e6e54a636805eef6178744031dd7a7..1e6384c7d5763fd3a1367f99c70b17985a285832 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 f65f5bc26e8ba664d461ab3905f41762abe64553..3e729af71fe53cf1a73cf59b45c06adb419e671f 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 441cab3dd7b61f60ab19675156564da37d6ababc..a205b402bc8a155611e471b5376cb481632b3bbf 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 f3bbbf42d5bc4fedc64514db95f0f2371fab5320..e75055e92b804c4572f8fb203ef475ac883101ac 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 40f7ef9da08e14f45b2d0229326bc803a8dd2a45..8944011a8d7306ae6775d43ed76c568560d25c68 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 cf6f5f32ee2afd5a16be17c6fde22a418a5a4400..3b982b1766f97ebd5ed98d175a32d509fc61b25e 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 41071012ae9f651f1a72269a9765cfe0c6f46469..9d57b4fcfac0ac1b936f98c42c0c47b02a0615fc 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 244a2c43a155f77cfe17d441365415ed0ccaffdf..e3db746ee028e9e4683991897d3976f56842ba96 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 517105d7e1fd63abc251c4694028b02e57d300f2..4db034476c7aff0dce5c8f820f987672cfc3ebcb 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 aa851e14ab5fdde660ff47de394fd137db092e80..c7c10254c0ca0ce3bfb2022ee75967ec5af971a9 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 83ba28bfce37d0736606a49f7aa2754ff4678b5a..f6837b692b197f310c56bc24cc08e61633227e50 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 51575d62ed501442eda9e6a66655ea1b8feb9d70..f7c0edf22420f880879137658a437351dd4c8585 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 db952758f04cabb5cb57e4e7980efdebff08232a..64d55322896b9aa401a5b9645839f9e74e027bbf 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 4f1ecbaf8b3c0545b36565c252b760d7a18067de..c7f449d97cdb16eb3cb6e1f5dbe64f05816e8e12 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 2135c7fd617423f244d9e54cecbb911fa60aa5b1..e66f397a383079bab4573c10d8577406006a2023 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 f2da2957bd3e45fda61236e2f5c85bcd4e23bc96..c5489b8b9813c890e322a888c8c2c582636cfd2a 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 09a6cc4a3c0a4ae1250ba2fa5533c6f2b88b942f..6c03bbc33b39b8f78ab4ce2b3195b070c17cd056 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 6b3a4f747f47db5f45b5644316cb5f2e7ec3d6f7..00507d2ee88816e56dd286f97caa0fb962f40aa2 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 d7a019c1c416985143ed9e8abb82914eb1b340ed..eb39a702f93fba13f114c58e9727f96642dc6bc0 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 7c2c8fb31cab2b4fefec1105a96f8f94680653aa..4e2d16819ba587b3bdfc96cffbaa52996fb4ee61 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 99729125b63180e5ca6eb64e9ab1a5517c2a9ae2..44f200174d9ba787fbfe9923abe5425f48dcffc5 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 54f68969d4f7d61be3925d526a76b69b71568ecc..954df5301e312456b4e0d7b5a9fa16639294fbdc 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 d8c1364d3957339263e0fb0034ed7a5e7b83a850..82c94d48068a9a26c5e88b6cd2de388967b420ac 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 5b38555eda1a6ac9b87354d813ef54ceef557e1d..bafa293ad9c3ba3957b23ba7583d9ddecf659946 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 48d42b5e93990b3ef3dd8754c20439baa9ff0ec4..05cc570eb8f102225c24ca7fcbbcf10729a99d06 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 6c8ad97d3556a5fe5b1977b83c68b1f6585a5028..5d37b5190d0273776282538b408dc136725c9652 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 ec8deadf9f54fb96db3a9697ada3e691ee3023ad..df6e011e4d585eaa8c42e9adcbb7ddb44b83a4b1 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 b9d97e3c328a42e4b4a83a6dfc222e799557e74b..0000000000000000000000000000000000000000 --- 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 178be491169328da694fce897153900030f1fa66..6616f7e4294ee7dc7222e7b1c95dd114b5f83078 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 18876cf355b86e73c46c1b2daf949680d294f104..402032b5cec3fe1cd96b29954d87eccf738303b9 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 36f6279c20924345ef5370c51f335f5772c0d1cc..64e0a9dcba279148ea8d8d81240f871974f8bc11 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 31eb4dd7378ac2ca3262f3183e37ec751c33ddee..66329b64eaceb1ee601e529b437169dae777ffb4 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 57db827169eca55c4b11e1a441c225c5ff9f0c98..88ad2c609bfab0a3b19c10ea9c4c9b216a57d369 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 ef0b8ec76190136f30bb7286746f72441a6fa1ce..bab24d014567f965f54bc70e309e8e5dc6224071 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 c3f5cb131645297cf1bc943dd551fad47665aa8e..3662c3badd3e8aa31fec4362323235ca0ecd1fa3 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 fae04b4d6a58e603683b0ea16fd993a1adc81c15..9a6a898beb5b0dce097581f06678a76f3c511a53 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 e7bec997119e08fbde2612959467254f11f9eec6..3ce04842c6e482c2ad97baecae4a6d43c8338ef0 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 bbfce71a115ca6ec898982a7f43e777650fd13d0..7c0609730c24961f61d7b57ba23b931706ef941c 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 7ce1c35e9eb1a8f9fea71a6784e8eea9e9c058f7..fdb8584f08e8bd0d897e15dcec7108fad7ed0f02 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 c3522e17379b99c6c8c64cbe51da947bea02eede..25ef76f331ba464cff8681338dbf09de4cbecd67 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 db9d6082756d3e6a6b5d9b207d2b324b458c9d31..b5372d1a2556516f8b2bb3086f6c5256febfa2ae 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 0000000000000000000000000000000000000000..bd278633f67e06a912b496992af349ca68eeb136 --- /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 3abdef62eefcb1289c6f2a8bde3e5e2f632ddbce..1dd9baa628ab58d5ab9be3979d75e642f14b0fc6 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 6a4e46e74bde5f9a0abe0ab9795b1da5fab31ca9..cf542faa8a1e11e42b32a5b77b238a766d99c8f3 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 be1389c2121f71c35d40ed025525686dea481a5a..0000000000000000000000000000000000000000 --- 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 8d6c99d2468c9ff689115712ee6f14bfbcc43d69..fa1fa76340c3260bf62858f37554cf979587921e 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 da6a7bc471551b91a97006b6e600f02752431951..985497a095cb4940b09adcff8759a3bca2ba8606 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 0000000000000000000000000000000000000000..22792b6c0790abce26d932fb0bb7ce05e2463b4b --- /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 b9b183a03ff355452d07852260749ef96c025e6a..cfccacf1ae08ce71ca6cc8ab8c11217a5f77d8b1 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 d5a1063a688a706a58fcd73dcd446ea1a62abcff..53d0ffb4c193b458e9e122a140f75f8e41de9b4a 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 6e21456a9a9252abd08eb4bb78da833f4acfa52a..954b45a2042b449f784e5e27a13620c560aaa90a 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 cdd6415fc411c6c1b6528127e1ccddc06573ad70..0737bac48c79fed88dbcf9a86f522a101169f7c8 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 c9dbe6ba4b96f11abf074ae52bf0820ae65eba67..71940c1b33ae9ef8832a9026bbe784868eba3631 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 a362045451a65e81462278f186ec09cee05999aa..f10bd8e9f39df4a4b25dccd78c152d882b8c840e 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 0a819fac91bd93bb98ea95b445fcbedcd0909dad..997d6d984050d445604ac9165d203092d2c39c8d 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 c6dcd20d62f15ee840d7a847b1b741a79f4f6ce7..5dc791631d8bf8f8a0be651463156af0aa818848 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"; +in + +stdenv.mkDerivation ({ + name = "${pname}-unwrapped-${ffversion}"; + version = ffversion; - browserVersion = if isIceCatLike then icversion - else if isTorBrowserLike then tbversion - else ffversion; + inherit src unpackPhase meta; - browserPatches = [ + patches = [ ./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; - - inherit src unpackPhase meta; - - patches = browserPatches; # 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 f48cad9e67a21d157085bead69f9f8fa216d09ba..0000000000000000000000000000000000000000 --- 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 1c3c3294894459a0c6af9908c31e30a2718c2857..0000000000000000000000000000000000000000 --- 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 de278152f97833bbdd38a0abfc738ef9c7e120e4..0000000000000000000000000000000000000000 --- 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 105a0a18d6b98e2d938c72591bdef74966944173..e419137c4e9bc1715f5e2c25ca7ca376c095971d 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"; }; }; - -} // (let - - iccommon = args: common (args // { - pname = "icecat"; - isIceCatLike = true; - - 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. - - 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; - -}) +} // lib.optionalAttrs (config.allowAliases or true) { + #### ALIASES + #### remove after 20.03 branchoff + + 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."; + + 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."; + + 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."; + +} diff --git a/pkgs/applications/networking/browsers/firefox/wrapper.nix b/pkgs/applications/networking/browsers/firefox/wrapper.nix index 4901d694f49f789be62b5dfc883018849a03f1b9..0afa8ca7b83451a36b5e433c003a04aec8aef785 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 9f49925b2672511e6ccf3e5ab3ce0d9244662702..e5cd08f7df7fdfd1c89b490eeabccd5befcecec9 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 b09be81cc418fa0d4e7bc904640ee3c560552ff6..d58fc8fd19bf83eae588d62c99ae9c410023f374 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 0605eda7fc76af86fd84d1aad9054238f72e1632..bf10043e942e76265a69dafdd508f7fd9593fcb9 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 3f4f96d33efb6401b96e08d5c1fddda1aeb7af27..8aeee45b9e5420ffb4ef99e259ca603819447140 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 1d1928d168b6bf8a4b639a50dfbcd651f2981097..66f6384643ad0e448aaa6134dc9b8aae0f7c4acb 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 e8841a0ab6fbec1fa9f4fcaf5fd35e63b3bb72e1..0000000000000000000000000000000000000000 --- 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 585b7426eb6753485480dcb04d2aca17947e0f47..6672a75d574d718c85f25f20ff3087f4aa60006e 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 0f7ded95f40f2d886615be1d0ef1cd84c4a62608..3661f6edb530fc83385fc6a0c744c1fd99f5fac8 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 fb36125b3a174d616e250cf80c25198672c1cee9..0000000000000000000000000000000000000000 --- 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 101ae99d6659bea3c3a454a3c99e0cae592052b6..0000000000000000000000000000000000000000 --- 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 b7d05ddd0ef5646e37f1322f122a56272394c432..0000000000000000000000000000000000000000 --- 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 1128381238b4b50f0b0c847bbf58dac36390e783..0000000000000000000000000000000000000000 --- 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 dcac4f17928b5a23a93e480e4b2f41b2037d219f..0000000000000000000000000000000000000000 --- 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 bde4ce15d7c0cd3cb7e8403c3e0ecfa825aa9f9a..0000000000000000000000000000000000000000 --- 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 1e2c31d9527ac719de3757337ed0ea8253ef97d8..0000000000000000000000000000000000000000 --- 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 fd956f62327e255e0323d96105f5512dacdeb7dd..0000000000000000000000000000000000000000 --- 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 a5bfda9f26c97ecc6b275d6c594b82461e9cf531..0000000000000000000000000000000000000000 --- 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 10ae0eb1da601b175f517e63763f625f69ea8419..0000000000000000000000000000000000000000 --- 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 62831613a2e22ee7302bab48b687be4b3c5214cb..0000000000000000000000000000000000000000 --- 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 97c65fc12ef5c4d88c824c8a671afabe0fc52661..e03f918a587c21ff6ba46df5c1b1ea7a2e76ef8c 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 a71583ffbec599b1ec8298d0d201d9730fceb8e1..8039c5492408a25324a8a290ccdf38e783172f80 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 c1ede5044492bd6b43a5fdc77de350ff8bdf320e..686ffee91488d2bef7e04af0c53c21662a22f29f 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 d41f8440420122dbf399dbc79a1e8d496e6a1bbb..0000000000000000000000000000000000000000 --- 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 05262b0cf508556af1874384f0efceeb3dc673b8..7c010b91a1e6cdf878904dcd07e9bcb74624e812 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 b616e82a20989a2f4611065065b215ec3cf6e28b..537bb0ebf2ecf2796770139211ed3300e02a6ae1 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 56f6bcebf2808142883ecb159e23eb3e94cedb3b..d54a37fe71fed67062ff1f49ad56d425a4fd0220 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 0437ab933bd75081d1ad77fc3adc33bcad716be0..03571469da1f557e75ea5d830d6013a1baf394f3 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 ff87e6b703da3f0b472f8a9fa739a146d2dc12bf..97a03ccbab5b887166f68fc7d15f0f3b3aeb412d 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 7ff099853e29797a598e7368ff3dc445479dce9e..0000000000000000000000000000000000000000 --- 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 0a72099e653ccad87fe2e85f5723a0041791263d..099d81c99f801462a65434252924f9c3d11b9b2a 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 643eda642c71f7256f87039bd22270d3e5ccd3cc..776ed8f4471b4c4cdd82133c325e7c9dfbf48adc 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 3207409a6ba5a694e1de156d61cc5a9d00cbd2cf..2643bd3e58d9bdba0ecc066ce8fd8972b21f4bad 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 a21de1acad28761e7a104a7249e1e032db567dd2..6e807aac5df6ffa051b427410df06ce072d814bd 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 373fa43c72c3e773f1aee9f0568fcd3b875bb19e..a15d6844f56df28bae4d509712b49aec9b6ca107 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 b86ba3c39f063f403259b7481afeb4ec50bba6a3..7dbb6a3c538871d7f911094f446d1e7a29b22645 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 c000a37ff02969137f77e13beb92771781d81d94..98d2f4aa81d60bb14b086f1cec7b348d00327c3d 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 065f264f15295b8aeff70891ec58c6b169d5ab89..18a9bc0f42254e3be4bccd8938e61852941afcfd 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 6462dd49949331fac94db41cfa366f21e6109a4c..c9e6b6f6de09c076d44f0fd827c2a30bc4323552 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 4c1f7ea77492d13f3eceed3e1f91fdaeb6ffa103..11eb24ff70313d5419eea995cc05d384a2c3e31e 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 6712dcd486bc9540bb08049f4ab4e41ceeb45ec0..d441e539aaa64c6bcfabe6944632bfff87986d80 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 e5ca7be00705b4684664923825edf1a04113ba36..0000000000000000000000000000000000000000 --- 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 9295e90794d229c8d3fec662ca15746f0d8b464c..891d153a09e1fe4c90b2f5f18c53f76527d10777 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 b275cd21cf48742a76a43e29a912532aa5a6e14e..0000000000000000000000000000000000000000 --- 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 0000000000000000000000000000000000000000..7f9ebda93c0a346b1d8e3911a69fbe4330dd9ffd --- /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 0000000000000000000000000000000000000000..ac597f4187e94b0078f9a5fb38bc2e53942d008c --- /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 67e91870f1a135b624e5d8fb262b8394119fe4c8..cb846060a3de1d355f9256fca515240b01cd4ae7 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 78be19cd81e5d8c240479d74788380d76a6b4fa7..e2452b2b44114d734cb26867c5de274861a08d75 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 f4d6fce3545e365087fceac825060b4f7a90f504..2c0e73fb30dbb33cba111f6a3043a6877f755b89 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 88dbd177da048447f12f297781b34fd7b0dd812f..8e74f834eaf4643e0d762580a8cdf2037493c524 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 d0186fb9b4c03313af10a1f2d0542b8c65ad3c10..8988c7efc33f0e42fc709e043cf1ff687d1e2bba 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 115dc3835fc55a972fd1454bdae1870a5cc3a4e3..32108426032072c92ae3d8425434497b3bda4d7b 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 0000000000000000000000000000000000000000..ba3b1e4d889b77138f26bd7d24294fd66ca2422a --- /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 de122dd2a5a24d0db8bd4aa36f18f5b9ecb45203..9352ba69da88c237a4f367c9cd4c214d931ec1e9 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 eb2946cec7718a97dd0a556ce2fe5166fd3ea64b..6659b18b1bd26f2c5b8ef7196d2b2546c4c30500 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 99cb7b98f5cc8881e4b568c402551031901ba5a5..0000000000000000000000000000000000000000 --- 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 1c2caff50d5368521192b1c0e04d366325ca2edc..8c63a70b6d6e495ed8c043ecb8d536fc2e2fa9f2 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 f8c73c65991ca30bf6133db83c378d1cbb3e4de2..3d418f9a47fb8f0c129116a7bdf6f884e065bfba 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 904eabfcda828f724b4602fdffafb53d2cf5bee5..10991d47cca9e7980008dd1395e2781a4c5965e7 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 9bf801ee93d72bbbc6075e18d2b49cf461c060c8..f2f3925fbe4d3101aa73ac388230508f9f615d3e 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 45b6e9dcf334f09ac1f82bf571227ff6eb4ddefd..aee162ba6f22fa21e3a69f48bb9708cc8c285f04 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 6decad2f9fbe4117963f7baac2a9f1da7cba1b78..1318ff003de3b8d0e3d58cbcc223bc513e49e624 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 b9413577b10445fc3efe2c244dbd77c858f4c5f3..21f4011f070654f7501a71c6d8e5d2d8567bbf3a 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 4de0c3fbd7b62f60d3fd5e27c6f3ecde9d59b1c1..1d9940c8f3189c7078124fb71f4cd635a0a80887 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 88aa8777ee5ec9042c2c15f5658836975e0bcec9..e2c0b663befab8e66b494d8cba9d9b17443ae420 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 0000000000000000000000000000000000000000..b18e1f08dd43d5ee989da8fbbc9c0d48c51478ad --- /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 0000000000000000000000000000000000000000..afe2c356aa4d970a2b0a80e3ab446138241d8609 --- /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 6fbad55f80704294cee4bc42ec89ea447f4676ea..1cf76e1cff30c2ac4916579bba310c1bcc7d9534 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 52abc3189903da488b6218c217124f0d4aba90cf..ebf98840ee2ba8d71921cbb2b8f57f4b9bbe3462 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 1a14e1ed273ee301705019a7caa4f6ef6be8cef3..09a69f4b80e255fd867414712766a5012091d613 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 359b289dbbcdf6a3800efa93a44e815b71a955f4..87ae71f6a48dc998a403da664be0bf55644f355b 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 267f25f8bb5809360f855adc1c2277f4384c7f01..a5f1806e5779711ce40afb384b62de658e9533cb 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 7058c009f2dd44cabc4d98ff1c35964789ae2951..2eea6adb28d1404d412e5b7f0b00a1ee100d1493 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 69d013e3f0340e659962bcef3e2244f9365d4746..bf4ec94921570dcfffd9df1014f2ac9415a90dfe 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 aaf183ad6667c7b1a4e955e17d5cd4a7c2f0a9b4..48540bffb53697e240a288cd09d89ed3d0940216 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 c2751ac270a7acc6438230f8c05e6f4f3f7389e7..3a91efd064cc5286e36d0408bffef87fa5c83ae6 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 3a2463447a2c756de33f0cbb4d36f9621cc30e2e..ef87b67a36002362f95533053dcfed069b4b92ce 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 779edad8de34041c035cd0afa85db1416f921f75..114c5f5af152e90b305bb269204e90ee2daf843c 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 84e9b889943139b913b4292d1be132fb278a5857..569baf6000ad368d405bf668649a2a3d40a2e8ef 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 0000000000000000000000000000000000000000..370fe9a1cd8231f2143c62f4212eb5fcd50f7266 --- /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 8c0265d14914916a216d4fa1d7fdcb7d20694d42..3d66a7c62f20e051dba04104b79dbe5c922dec9f 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 aad752643645947a2ea956e6f48dd9f5635c4005..010d8cf4d2152b86abc7bd9d8a93b184b8f4d0ee 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 72bd82be6c16eed21ac54ab288a715feb362e055..df571f4cf8690109c7ca6f9c9d01ca0cd92c31d1 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 1ad30335b94d69de74564ca9d05888972ed9b0fd..ac1feee5d72bbe7cb824820adce61bddead5294d 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 cf7318ecb27398f348f911580559ec9f06b041e2..1e2840017b3446edab3c1a5d403041426c74c32d 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 5637e486ef116458765d952505f33025fa8a00ce..d48a28f46a8965d145256bdbc50b22d0f019f76f 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 43e960d9403ee4911ba22f22db2b0868014abfa3..3dcfbf6fd7e39126f468e77b6eb510fd52155330 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 0000000000000000000000000000000000000000..a7a98de6d39b16a419c03c44f2908f06bcc4d8d5 --- /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 6afbbf215a3ff4fcd73bfb6194afcd8b98358ca2..829ea1000f0685ca63d7707e125c1626843e14f9 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 3b96ef4ea45e10560151671da22159697b0dc9f7..a9b0ed3fcb5901021572beee10f675b6157b913d 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 de0bb015852cfda8cc157f81e17c8bcc75eec3f9..65a4a19384305502b306c4ca0a61184acc1086ff 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 26c39f8cbe216240f8e3c6bbc5580cc58abf9ff6..afcd736e629c6b771566e79a6dddc9fd49b773f2 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 ae407727b9d4e3428e92ee6a4ca256f62e151354..0000000000000000000000000000000000000000 --- 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 1c802802c096ed8479bc411b81080c4d507c125a..0b2f798d35b46e148b977b69deba27ac442b9259 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 9e578b9b333a5517aaafd62e5c746cbe62c7e439..53b421ec5521d79c3039e7bf0b069c0cff1e2aaf 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 0000000000000000000000000000000000000000..2180d8d304890da9970efb041e2a90e47350b9a7 --- /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 0000000000000000000000000000000000000000..293a72a1623738dad835d8399bdbcb3385375654 --- /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 66560873b4c50306bef712d2a6d2ae7dea11dd74..47cdb6942ceccd61e324fd45ea97d2823b6af3a4 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 0000000000000000000000000000000000000000..ece04f6621bb446e1f631fa196289fb34aa3eb65 --- /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 0000000000000000000000000000000000000000..7d419edb74a274cb9e17379f003fa561cb05cf10 --- /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 b8d4b947e324909cd853f7bdb64050f7bdc4252b..162585851d0c6ff2f72c754e93b62de9d1368b69 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 3423163f590267ba61225e9ee62c80bfe213c669..a5a2ace2399ba67c0aeff044915b78b2d02c709c 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 606cd0370aa2c8820cd8a41f5ae4c4d963b033a9..a5b6e7d2f5e714d0f5001af557c52ca85d0796d1 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 1bb8df88d0101f6432a28dc279a7f5b77f6917a9..38fbd1b428656741940b43ece50cc04a4474b2b9 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 b801fad546dfa851e03063c1adabfd2424ecf173..7307d8a33f3c12eeb2da20f98ec7fb2296f18e09 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 32f6680b2f8bd59233f2e0924148257810f331da..903aa9abb6e2bfd08ab4e1928a6f9623994cbdcf 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 cd37083d9359cb03423df059f40c9dfdddf53478..d07b6321cb2c3dffa7134917c1d6d7ad6719d40e 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"; }; - bigip = + baiducloud = { owner = "terraform-providers"; - repo = "terraform-provider-bigip"; + repo = "terraform-provider-baiducloud"; rev = "v1.1.0"; version = "1.1.0"; - sha256 = "15fmxr1c39xx6ix38nigf8izrqzlmjjr6hvlkf7yhb5z7485nvsg"; + sha256 = "1va0b9vqfcv2nrqh8jwf80ylyl1x826jhb7h4ghnf18c144qm0i1"; + }; + bigip = + { + owner = "terraform-providers"; + repo = "terraform-provider-bigip"; + 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 = + docker = { owner = "terraform-providers"; - repo = "terraform-provider-dnsimple"; - rev = "v0.2.0"; - version = "0.2.0"; - sha256 = "0jj82fffqaz7gramj5d4avx7vka6w190yz4r9q7628qh8ih2pfhz"; + repo = "terraform-provider-docker"; + rev = "v2.7.0"; + version = "2.7.0"; + sha256 = "0pl515xjnic7mhfvqbml1z1win5mrhjdqb84jhd5n09j39lb24gx"; }; - docker = + dome9 = { owner = "terraform-providers"; - repo = "terraform-provider-docker"; - rev = "v2.6.0"; - version = "2.6.0"; - sha256 = "12qq7m75yxfczik78klqaimrzhp70m2vk5q0h3v8b2dwvvynj0dg"; + 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"; + rev = "v2.5.0"; + version = "2.5.0"; + sha256 = "1g7girhjks6p7rcs82p2zd8clp6kdfn6d1synlmfwiw6d3496fvf"; }; - google = + google-beta = { owner = "terraform-providers"; - repo = "terraform-provider-google"; - rev = "v2.20.0"; - version = "2.20.0"; - sha256 = "1b19hql244lv74gxdwgqh9955d3zkwj7riaq6kj5ylbj44spcpjy"; + repo = "terraform-provider-google-beta"; + rev = "v3.15.0"; + version = "3.15.0"; + sha256 = "1xncw82y48dcc464v2gzfmr94l3kgh9x2rlmpmmy6g4mihiwh38b"; }; - google-beta = + google = { owner = "terraform-providers"; - repo = "terraform-provider-google-beta"; - rev = "v2.20.0"; - version = "2.20.0"; - sha256 = "0zkhyn17kji6yyl5582g5vhqj3rcbin73ym6vn6f0m7sf5yaplky"; + 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"; }; - vsphere = + venafi = { owner = "terraform-providers"; - repo = "terraform-provider-vsphere"; - rev = "v1.13.0"; - version = "1.13.0"; - sha256 = "10gl042l5mlmklhjjknwln1qcwl65xz8sbg1acyv8xkb6nsaxcf1"; + repo = "terraform-provider-venafi"; + rev = "v0.9.2"; + version = "0.9.2"; + sha256 = "06nk5c7lxs8fc04sz97lc3yk1zk1b9phkzw6fj9fnmpgaak87bj9"; }; - yandex = + vra7 = { owner = "terraform-providers"; - repo = "terraform-provider-yandex"; - rev = "v0.24.0"; - version = "0.24.0"; - sha256 = "0a9isivn3ni0d1id8ww97xbcwrxc0c4pn1m1q21cipqs6mwksq9m"; + repo = "terraform-provider-vra7"; + rev = "v0.5.0"; + version = "0.5.0"; + sha256 = "123yskwgzp771nx03sg49vwi5ph3zf2ajf06s7msj0blvz6wan4v"; }; - segment = + vsphere = { - owner = "ajbosco"; - repo = "terraform-provider-segment"; - rev = "v0.2.0"; - version = "0.2.0"; - sha256 = "0ic5b9djhnb1bs2bz3zdprgy3r55dng09xgc4d9l9fyp85g2amaz"; + owner = "terraform-providers"; + repo = "terraform-provider-vsphere"; + rev = "v1.17.0"; + version = "1.17.0"; + sha256 = "16fglpfy8grlifaa1d1ymvjys7wh39m6py8h45g1xgs1jyfkz00s"; }; - pass = + vthunder = { - owner = "camptocamp"; - repo = "terraform-provider-pass"; - rev = "1.2.1"; - version = "1.2.1"; - sha256 = "1hf5mvgz5ycp7shiy8px205d9kwswfjmclg7mlh9a55bkraffahk"; + owner = "terraform-providers"; + repo = "terraform-provider-vthunder"; + rev = "v0.1.0"; + version = "0.1.0"; + sha256 = "1mw55g0kjgp300p6y4s8wc91fgfxjm0cbszfzgbc8ca4b00j8cc2"; }; - matchbox = + vultr = { - 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 = - { - owner = "tweag"; - repo = "terraform-provider-nixos"; - rev = "v0.0.1"; - version = "0.0.1"; - sha256 = "00vz6qjq1pk39iqg4356b8g3c6slla9jifkv2knk46gc9q93q0lf"; - }; - secret = + yandex = { - 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 6298c25ba2540b45fbc4aeb7b7a193b94e68097f..c3c44160c1b75c3b4de81bbcc79a9f564dd72ae4 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 06d7b8a9f073eaaa4c3837d41a96700ef3057989..bd667dbc15f6eb2a3b8a25513b00d445dcb9dc00 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 23c4f4bfa8b3519e7659791c35aae7334299a7f1..daffb59309037578750954ec7c74905685ad34ac 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 0000000000000000000000000000000000000000..fd2a6c36d65c35e442b78f274488cfa78c74be36 --- /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 bdde66006787fed6aaaf023d248df294437e49a2..0000000000000000000000000000000000000000 --- 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 893a6b1c7d7df9d859f8291bded2ed0914c39cc7..89ed5a94f2ab599b000b7daf4ca535c31034e342 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. - -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 +# 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 +) + +# 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 - - 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 )" - - for repo in $repos; do - add_repo "$org" "$repo" - done - fi -done < <(grep -v '^#\|^$' providers.txt) +# assemble list of terraform providers +providers=$(get_tf_providers_org "terraform-providers") +providers=$(echo "$providers";get_tf_providers_org "hashicorp") + +# add terraform-providers from slugs +for slug in "${slugs[@]}"; do + # retrieve latest tag + org=${slug%/*} + repo=${slug#*/} + rev=$(get_latest_repo_tag "$org" "$repo") + + # 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 <