diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 76fb19529b0..5c2096cfe4d 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -12,7 +12,7 @@ # Libraries /lib @edolstra @nbp -/lib/systems @nbp @ericson2314 +/lib/systems @nbp @ericson2314 @matthewbauer /lib/generators.nix @edolstra @nbp @Profpatsch /lib/debug.nix @edolstra @nbp @Profpatsch @@ -20,9 +20,11 @@ /default.nix @nbp /pkgs/top-level/default.nix @nbp @Ericson2314 /pkgs/top-level/impure.nix @nbp @Ericson2314 -/pkgs/top-level/stage.nix @nbp @Ericson2314 -/pkgs/stdenv/generic @Ericson2314 -/pkgs/stdenv/cross @Ericson2314 +/pkgs/top-level/stage.nix @nbp @Ericson2314 @matthewbauer +/pkgs/top-level/splice.nix @Ericson2314 @matthewbauer +/pkgs/top-level/release-cross.nix @Ericson2314 @matthewbauer +/pkgs/stdenv/generic @Ericson2314 @matthewbauer +/pkgs/stdenv/cross @Ericson2314 @matthewbauer /pkgs/build-support/cc-wrapper @Ericson2314 @orivej /pkgs/build-support/bintools-wrapper @Ericson2314 @orivej /pkgs/build-support/setup-hooks @Ericson2314 @@ -45,12 +47,15 @@ /nixos/doc/manual/man-nixos-option.xml @nbp /nixos/modules/installer/tools/nixos-option.sh @nbp +# NixOS modules +/nixos/modules @Infinisil + # Python-related code and docs /maintainers/scripts/update-python-libraries @FRidh /pkgs/top-level/python-packages.nix @FRidh /pkgs/development/interpreters/python @FRidh /pkgs/development/python-modules @FRidh -/doc/languages-frameworks/python.md @FRidh +/doc/languages-frameworks/python.section.md @FRidh # Haskell /pkgs/development/compilers/ghc @peti @ryantm @basvandijk @@ -59,13 +64,18 @@ /pkgs/development/haskell-modules/generic-builder.nix @peti @ryantm @basvandijk /pkgs/development/haskell-modules/hoogle.nix @peti @ryantm @basvandijk +# Perl +/pkgs/development/interpreters/perl @volth +/pkgs/top-level/perl-packages.nix @volth +/pkgs/development/perl-modules @volth + # R /pkgs/applications/science/math/R @peti /pkgs/development/r-modules @peti # Ruby -/pkgs/development/interpreters/ruby @zimbatm -/pkgs/development/ruby-modules @zimbatm +/pkgs/development/interpreters/ruby @alyssais @zimbatm +/pkgs/development/ruby-modules @alyssais @zimbatm # Rust /pkgs/development/compilers/rust @Mic92 @LnL7 @@ -74,6 +84,14 @@ /pkgs/stdenv/darwin @NixOS/darwin-maintainers /pkgs/os-specific/darwin @NixOS/darwin-maintainers +# C compilers +/pkgs/development/compilers/gcc @matthewbauer +/pkgs/development/compilers/llvm @matthewbauer + +# Compatibility stuff +/pkgs/top-level/unix-tools.nix @matthewbauer +/pkgs/development/tools/xcbuild @matthewbauer + # Beam-related (Erlang, Elixir, LFE, etc) /pkgs/development/beam-modules @gleber /pkgs/development/interpreters/erlang @gleber @@ -97,3 +115,19 @@ /pkgs/desktops/plasma-5 @ttuegel /pkgs/development/libraries/kde-frameworks @ttuegel /pkgs/development/libraries/qt-5 @ttuegel + +# PostgreSQL and related stuff +/pkgs/servers/sql/postgresql @thoughtpolice +/nixos/modules/services/databases/postgresql.xml @thoughtpolice +/nixos/modules/services/databases/postgresql.nix @thoughtpolice +/nixos/tests/postgresql.nix @thoughtpolice + +# Dhall +/pkgs/development/dhall-modules @Gabriel439 @Profpatsch +/pkgs/development/interpreters/dhall @Gabriel439 @Profpatsch + +# Idris +/pkgs/development/idris-modules @Infinisil + +# Bazel +/pkgs/development/tools/build-managers/bazel @mboes @Profpatsch diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index ab1a50865f0..22940f5ea98 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -14,6 +14,7 @@ - [ ] Tested compilation of all pkgs that depend on this change using `nix-shell -p nox --run "nox-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) +- [ ] Assured whether relevant documentation is up to date - [ ] Fits [CONTRIBUTING.md](https://github.com/NixOS/nixpkgs/blob/master/.github/CONTRIBUTING.md). --- diff --git a/.gitignore b/.gitignore index dba957f7662..b3ae9e6ea86 100644 --- a/.gitignore +++ b/.gitignore @@ -13,4 +13,5 @@ result-* .DS_Store /pkgs/development/libraries/qt-5/*/tmp/ -/pkgs/desktops/kde-5/*/tmp/ \ No newline at end of file +/pkgs/desktops/kde-5/*/tmp/ +/pkgs/development/mobile/androidenv/xml/* diff --git a/COPYING b/COPYING index 198597a1b41..7c52fb76897 100644 --- a/COPYING +++ b/COPYING @@ -18,12 +18,3 @@ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -====================================================================== - -Note: the license above does not apply to the packages built by the -Nix Packages collection, merely to the package descriptions (i.e., Nix -expressions, build scripts, etc.). It also might not apply to patches -included in Nixpkgs, which may be derivative works of the packages to -which they apply. The aforementioned artifacts are all covered by the -licenses of the respective packages. diff --git a/README.md b/README.md index 144a23027db..29c023e4dcd 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ release and `nixos-unstable` for the latest successful build of master: % git rebase channels/nixos-18.09 ``` -For pull-requests, please rebase onto nixpkgs `master`. +For pull requests, please rebase onto nixpkgs `master`. [NixOS](https://nixos.org/nixos/) Linux distribution source code is located inside `nixos/` folder. @@ -39,3 +39,9 @@ Communication: * [Discourse Forum](https://discourse.nixos.org/) * [IRC - #nixos on freenode.net](irc://irc.freenode.net/#nixos) + +Note: MIT license does not apply to the packages built by Nixpkgs, merely to +the package descriptions (Nix expressions, build scripts, and so on). It also +might not apply to patches included in Nixpkgs, which may be derivative works +of the packages to which they apply. The aforementioned artifacts are all +covered by the licenses of the respective packages. diff --git a/doc/Makefile b/doc/Makefile index c6aed62a939..91b62fe138b 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -9,8 +9,10 @@ debug: .PHONY: format format: - find . -iname '*.xml' -type f -print0 | xargs -0 -I{} -n1 \ - xmlformat --config-file "$$XMLFORMAT_CONFIG" -i {} + find . -iname '*.xml' -type f | while read f; do \ + echo $$f ;\ + xmlformat --config-file "$$XMLFORMAT_CONFIG" -i $$f ;\ + done .PHONY: fix-misc-xml fix-misc-xml: diff --git a/doc/coding-conventions.xml b/doc/coding-conventions.xml index b3f7f093835..d2c7a1baae9 100644 --- a/doc/coding-conventions.xml +++ b/doc/coding-conventions.xml @@ -56,25 +56,30 @@ foo { arg = ...; } or list elements should be aligned: # A long list. -list = - [ elem1 - elem2 - elem3 - ]; +list = [ + elem1 + elem2 + elem3 +]; # A long attribute set. -attrs = - { attr1 = short_expr; - attr2 = - if true then big_expr else big_expr; - }; - -# Alternatively: attrs = { attr1 = short_expr; attr2 = if true then big_expr else big_expr; }; + +# Combined +listOfAttrs = [ + { + attr1 = 3; + attr2 = "fff"; + } + { + attr1 = 5; + attr2 = "ggg"; + } +]; @@ -191,6 +196,23 @@ args.stdenv.mkDerivation (args // {
Package naming + + The key words + must, + must not, + required, + shall, + shall not, + should, + should not, + recommended, + may, + and optional in this section + are to be interpreted as described in + RFC 2119. + Only emphasized words are to be interpreted in this way. + + In Nixpkgs, there are generally three different names associated with a package: @@ -231,14 +253,15 @@ args.stdenv.mkDerivation (args // { - Generally, try to stick to the upstream package name. + The name attribute should + be identical to the upstream package name. - Don’t use uppercase letters in the name attribute - — e.g., "mplayer-1.0rc2" instead of - "MPlayer-1.0rc2". + The name attribute must not + contain uppercase letters — e.g., "mplayer-1.0rc2" + instead of "MPlayer-1.0rc2". @@ -252,14 +275,14 @@ args.stdenv.mkDerivation (args // { If a package is not a release but a commit from a repository, then the version part of the name must be the date of that - (fetched) commit. The date must be in "YYYY-MM-DD" + (fetched) commit. The date must be in "YYYY-MM-DD" format. Also append "unstable" to the name - e.g., "pkgname-unstable-2014-09-23". - Dashes in the package name should be preserved in new variable names, + Dashes in the package name should be preserved in new variable names, rather than converted to underscores or camel cased — e.g., http-parser instead of http_parser or httpParser. The hyphenated style is preferred in @@ -268,7 +291,7 @@ args.stdenv.mkDerivation (args // { - If there are multiple versions of a package, this should be reflected in + If there are multiple versions of a package, this should be reflected in the variable names in all-packages.nix, e.g. json-c-0-9 and json-c-0-11. If there is an obvious “default” version, make an attribute like @@ -791,7 +814,7 @@ args.stdenv.mkDerivation (args // { There are multiple ways to fetch a package source in nixpkgs. The general - guideline is that you should package sources with a high degree of + guideline is that you should package reproducible sources with a high degree of availability. Right now there is only one fetcher which has mirroring support and that is fetchurl. Note that you should also prefer protocols which have a corresponding proxy environment variable. @@ -842,14 +865,134 @@ src = fetchFromGitHub { owner = "NixOS"; repo = "nix"; rev = "1f795f9f44607cc5bec70d1300150bfefcef2aae"; - sha256 = "04yri911rj9j19qqqn6m82266fl05pz98inasni0vxr1cf1gdgv9"; + sha256 = "1i2yxndxb6yc9l6c99pypbd92lfq5aac4klq7y2v93c9qvx2cgpc"; } + Find the value to put as sha256 by running + nix run -f '<nixpkgs>' nix-prefetch-github -c nix-prefetch-github --rev 1f795f9f44607cc5bec70d1300150bfefcef2aae NixOS nix + or nix-prefetch-url --unpack https://github.com/NixOS/nix/archive/1f795f9f44607cc5bec70d1300150bfefcef2aae.tar.gz.
+
+ Obtaining source hash + + + Preferred source hash type is sha256. There are several ways to get it. + + + + + + Prefetch URL (with nix-prefetch-XXX + URL, where + XXX is one of url, + git, hg, cvs, + bzr, svn). Hash is printed to + stdout. + + + + + Prefetch by package source (with nix-prefetch-url + '<nixpkgs>' -A PACKAGE.src, + where PACKAGE is package attribute name). Hash + is printed to stdout. + + + This works well when you've upgraded existing package version and want to + find out new hash, but is useless if package can't be accessed by + attribute or package has multiple sources (.srcs, + architecture-dependent sources, etc). + + + + + Upstream provided hash: use it when upstream provides + sha256 or sha512 (when upstream + provides md5, don't use it, compute + sha256 instead). + + + A little nuance is that nix-prefetch-* tools produce + hash encoded with base32, but upstream usually provides + hexadecimal (base16) encoding. Fetchers understand both + formats. Nixpkgs does not standardize on any one format. + + + You can convert between formats with nix-hash, for example: + +$ nix-hash --type sha256 --to-base32 HASH + + + + + + Extracting hash from local source tarball can be done with + sha256sum. Use nix-prefetch-url + file:///path/to/tarball if you want base32 hash. + + + + + Fake hash: set fake hash in package expression, perform build and extract + correct hash from error Nix prints. + + + For package updates it is enough to change one symbol to make hash fake. + For new packages, you can use lib.fakeSha256, + lib.fakeSha512 or any other fake hash. + + + This is last resort method when reconstructing source URL is non-trivial + and nix-prefetch-url -A isn't applicable (for example, + + one of kodi dependencies). The easiest way then + would be replace hash with a fake one and rebuild. Nix build will fail and + error message will contain desired hash. + + This method has security problems. Check below for details. + + + +
+ Obtaining hashes securely + + Let's say Man-in-the-Middle (MITM) sits close to your network. Then instead of fetching + source you can fetch malware, and instead of source hash you get hash of malware. Here are + security considerations for this scenario: + + + + + http:// URLs are not secure to prefetch hash from; + + + + + hashes from upstream (in method 3) should be obtained via secure protocol; + + + + + https:// URLs are secure in methods 1, 2, 3; + + + + + https:// URLs are not secure in method 5. When obtaining hashes + with fake hash method, TLS checks are disabled. So + refetch source hash from several different networks to exclude MITM scenario. + Alternatively, use fake hash method to make Nix error, but instead of extracting + hash from error, extract https:// URL and prefetch it + with method 1. + + + +
+
Patches diff --git a/doc/configuration.xml b/doc/configuration.xml index af74f3f9c01..8a5ff8dcb8e 100644 --- a/doc/configuration.xml +++ b/doc/configuration.xml @@ -132,7 +132,7 @@ - The difference between an a package being unsupported on some system and + The difference between a package being unsupported on some system and being broken is admittedly a bit fuzzy. If a program ought to work on a certain platform, but doesn't, the platform should be included in meta.platforms, but marked @@ -175,11 +175,16 @@ - A more useful example, the following configuration allows only allows - flash player and visual studio code: + For a more useful example, try the following. This configuration + only allows unfree packages named flash player and visual studio + code: { - allowUnfreePredicate = (pkg: elem (builtins.parseDrvName pkg.name).name [ "flashplayer" "vscode" ]); + allowUnfreePredicate = (pkg: builtins.elem + (builtins.parseDrvName pkg.name).name [ + "flashplayer" + "vscode" + ]); } @@ -286,8 +291,8 @@ You can define a function called packageOverrides in your - local ~/.config/nixpkgs/config.nix to override nix - packages. It must be a function that takes pkgs as an argument and return + local ~/.config/nixpkgs/config.nix to override Nix + packages. It must be a function that takes pkgs as an argument and returns a modified set of packages. { @@ -321,7 +326,18 @@ packageOverrides = pkgs: with pkgs; { myPackages = pkgs.buildEnv { name = "my-packages"; - paths = [ aspell bc coreutils gdb ffmpeg nixUnstable emscripten jq nox silver-searcher ]; + paths = [ + aspell + bc + coreutils + gdb + ffmpeg + nixUnstable + emscripten + jq + nox + silver-searcher + ]; }; }; } @@ -342,7 +358,18 @@ packageOverrides = pkgs: with pkgs; { myPackages = pkgs.buildEnv { name = "my-packages"; - paths = [ aspell bc coreutils gdb ffmpeg nixUnstable emscripten jq nox silver-searcher ]; + paths = [ + aspell + bc + coreutils + gdb + ffmpeg + nixUnstable + emscripten + jq + nox + silver-searcher + ]; pathsToLink = [ "/share" "/bin" ]; }; }; @@ -377,7 +404,17 @@ packageOverrides = pkgs: with pkgs; { myPackages = pkgs.buildEnv { name = "my-packages"; - paths = [ aspell bc coreutils ffmpeg nixUnstable emscripten jq nox silver-searcher ]; + paths = [ + aspell + bc + coreutils + ffmpeg + nixUnstable + emscripten + jq + nox + silver-searcher + ]; pathsToLink = [ "/share/man" "/share/doc" "/bin" ]; extraOutputsToInstall = [ "man" "doc" ]; }; diff --git a/doc/cross-compilation.xml b/doc/cross-compilation.xml index da664394f26..40cf11304ea 100644 --- a/doc/cross-compilation.xml +++ b/doc/cross-compilation.xml @@ -6,17 +6,17 @@ Introduction - "Cross-compilation" means compiling a program on one machine for another - type of machine. For example, a typical use of cross compilation is to - compile programs for embedded devices. These devices often don't have the - computing power and memory to compile their own programs. One might think - that cross-compilation is a fairly niche concern, but there are advantages - to being rigorous about distinguishing build-time vs run-time environments - even when one is developing and deploying on the same machine. Nixpkgs is - increasingly adopting the opinion that packages should be written with - cross-compilation in mind, and nixpkgs should evaluate in a similar way (by - minimizing cross-compilation-specific special cases) whether or not one is - cross-compiling. + "Cross-compilation" means compiling a program on one machine for another type + of machine. For example, a typical use of cross-compilation is to compile + programs for embedded devices. These devices often don't have the computing + power and memory to compile their own programs. One might think that + cross-compilation is a fairly niche concern. However, there are significant + advantages to rigorously distinguishing between build-time and run-time + environments! This applies even when one is developing and deploying on the + same machine. Nixpkgs is increasingly adopting the opinion that packages + should be written with cross-compilation in mind, and nixpkgs should evaluate + in a similar way (by minimizing cross-compilation-specific special cases) + whether or not one is cross-compiling. @@ -34,15 +34,15 @@ Platform parameters - Nixpkgs follows the - common - historical convention of GNU autoconf of distinguishing between 3 - types of platform: build, - host, and target. In - summary, build is the platform on which a package - is being built, host is the platform on which it - is to run. The third attribute, target, is - relevant only for certain specific compilers and build tools. + Nixpkgs follows the conventions + of GNU autoconf. We distinguish between 3 types of platforms when + building a derivation: build, + host, and target. In + summary, build is the platform on which a package + is being built, host is the platform on which it + will run. The third attribute, target, is relevant + only for certain specific compilers and build tools. @@ -64,7 +64,7 @@ The "build platform" is the platform on which a package is built. Once someone has a built package, or pre-built binary package, the build - platform should not matter and be safe to ignore. + platform should not matter and can be ignored. @@ -94,11 +94,11 @@ The build process of certain compilers is written in such a way that the compiler resulting from a single build can itself only produce binaries - for a single platform. The task specifying this single "target platform" - is thus pushed to build time of the compiler. The root cause of this - mistake is often that the compiler (which will be run on the host) and - the the standard library/runtime (which will be run on the target) are - built by a single build process. + for a single platform. The task of specifying this single "target + platform" is thus pushed to build time of the compiler. The root cause of + this that the compiler (which will be run on the host) and the standard + library/runtime (which will be run on the target) are built by a single + build process. There is no fundamental need to think about a single target ahead of @@ -135,8 +135,10 @@ This is a two-component shorthand for the platform. Examples of this would be "x86_64-darwin" and "i686-linux"; see - lib.systems.doubles for more. This format isn't very - standard, but has built-in support in Nix, such as the + lib.systems.doubles for more. The first component + corresponds to the CPU architecture of the platform and the second to the + operating system of the platform ([cpu]-[os]). This + format has built-in support in Nix, such as the builtins.currentSystem impure string. @@ -147,12 +149,13 @@ - This is a 3- or 4- component shorthand for the platform. Examples of - this would be "x86_64-unknown-linux-gnu" and "aarch64-apple-darwin14". - This is a standard format called the "LLVM target triple", as they are - pioneered by LLVM and traditionally just used for the - targetPlatform. This format is strictly more - informative than the "Nix host double", as the previous format could + This is a 3- or 4- component shorthand for the platform. Examples of this + would be x86_64-unknown-linux-gnu and + aarch64-apple-darwin14. This is a standard format + called the "LLVM target triple", as they are pioneered by LLVM. In the + 4-part form, this corresponds to + [cpu]-[vendor]-[os]-[abi]. This format is strictly + more informative than the "Nix host double", as the previous format could analogously be termed. This needs a better name than config! @@ -164,12 +167,11 @@ - This is a nix representation of a parsed LLVM target triple with - white-listed components. This can be specified directly, or actually - parsed from the config. [Technically, only one need - be specified and the others can be inferred, though the precision of - inference may not be very good.] See - lib.systems.parse for the exact representation. + This is a Nix representation of a parsed LLVM target triple + with white-listed components. This can be specified directly, + or actually parsed from the config. See + lib.systems.parse for the exact + representation. @@ -193,7 +195,7 @@ These predicates are defined in lib.systems.inspect, - and slapped on every platform. They are superior to the ones in + and slapped onto every platform. They are superior to the ones in stdenv as they force the user to be explicit about which platform they are inspecting. Please use these instead of those. @@ -221,7 +223,7 @@ In this section we explore the relationship between both runtime and - buildtime dependencies and the 3 Autoconf platforms. + build-time dependencies and the 3 Autoconf platforms. @@ -249,17 +251,17 @@ - Some examples will probably make this clearer. If a package is being built - with a (build, host, target) platform triple of - (foo, bar, bar), then its build-time dependencies would - have a triple of (foo, foo, bar), and those - packages' build-time dependencies would have triple of - (foo, foo, foo). In other words, it should take two - "rounds" of following build-time dependency edges before one reaches a - fixed point where, by the sliding window principle, the platform triple no - longer changes. Indeed, this happens with cross compilation, where only - rounds of native dependencies starting with the second necessarily coincide - with native packages. + Some examples will make this clearer. If a package is being built with a + (build, host, target) platform triple of (foo, + bar, bar), then its build-time dependencies would have a triple of + (foo, foo, bar), and those packages' + build-time dependencies would have a triple of (foo, foo, + foo). In other words, it should take two "rounds" of following + build-time dependency edges before one reaches a fixed point where, by the + sliding window principle, the platform triple no longer changes. Indeed, + this happens with cross-compilation, where only rounds of native + dependencies starting with the second necessarily coincide with native + packages. @@ -271,23 +273,23 @@ - How does this work in practice? Nixpkgs is now structured so that - build-time dependencies are taken from buildPackages, - whereas run-time dependencies are taken from the top level attribute set. - For example, buildPackages.gcc should be used at build - time, while gcc should be used at run time. Now, for - most of Nixpkgs's history, there was no buildPackages, - and most packages have not been refactored to use it explicitly. Instead, - one can use the six (gasp) attributes used for - specifying dependencies as documented in - . We "splice" together the - run-time and build-time package sets with callPackage, - and then mkDerivation for each of four attributes pulls - the right derivation out. This splicing can be skipped when not cross - compiling as the package sets are the same, but is a bit slow for cross - compiling. Because of this, a best-of-both-worlds solution is in the works - with no splicing or explicit access of buildPackages - needed. For now, feel free to use either method. + How does this work in practice? Nixpkgs is now structured so that build-time + dependencies are taken from buildPackages, whereas + run-time dependencies are taken from the top level attribute set. For + example, buildPackages.gcc should be used at build-time, + while gcc should be used at run-time. Now, for most of + Nixpkgs's history, there was no buildPackages, and most + packages have not been refactored to use it explicitly. Instead, one can use + the six (gasp) attributes used for specifying + dependencies as documented in . We + "splice" together the run-time and build-time package sets with + callPackage, and then mkDerivation for + each of four attributes pulls the right derivation out. This splicing can be + skipped when not cross-compiling as the package sets are the same, but is a + bit slow for cross-compiling. Because of this, a best-of-both-worlds + solution is in the works with no splicing or explicit access of + buildPackages needed. For now, feel free to use either + method. @@ -305,11 +307,11 @@ Cross packaging cookbook - Some frequently problems when packaging for cross compilation are good to - just spell and answer. Ideally the information above is exhaustive, so this - section cannot provide any new information, but its ludicrous and cruel to - expect everyone to spend effort working through the interaction of many - features just to figure out the same answer to the same common problem. + Some frequently encountered problems when packaging for cross-compilation + should be answered here. Ideally, the information above is exhaustive, so + this section cannot provide any new information, but it is ludicrous and + cruel to expect everyone to spend effort working through the interaction of + many features just to figure out the same answer to the same common problem. Feel free to add to this list! @@ -364,17 +366,9 @@
Cross-building packages - - - More information needs to moved from the old wiki, especially - , for this - section. - - - Nixpkgs can be instantiated with localSystem alone, in - which case there is no cross compiling and everything is built by and for + which case there is no cross-compiling and everything is built by and for that system, or also with crossSystem, in which case packages run on the latter, but all building happens on the former. Both parameters take the same schema as the 3 (build, host, and target) platforms @@ -391,7 +385,7 @@ nix-build <nixpkgs> --arg crossSystem '(import <nixpkgs/lib>).system Eventually we would like to make these platform examples an unnecessary convenience so that -nix-build <nixpkgs> --arg crossSystem.config '<arch>-<os>-<vendor>-<abi>' -A whatever +nix-build <nixpkgs> --arg crossSystem '{ config = "<arch>-<os>-<vendor>-<abi>"; }' -A whatever works in the vast majority of cases. The problem today is dependencies on other sorts of configuration which aren't given proper defaults. We rely on the examples to crudely to set those configuration parameters in some @@ -440,15 +434,14 @@ nix-build <nixpkgs> --arg crossSystem.config '<arch>-<os>-< build plan or package set. A simple "build vs deploy" dichotomy is adequate: the sliding window principle described in the previous section shows how to interpolate between the these two "end points" to get the 3 platform triple - for each bootstrapping stage. That means for any package a given package - set, even those not bound on the top level but only reachable via - dependencies or buildPackages, the three platforms will - be defined as one of localSystem or - crossSystem, with the former replacing the latter as one - traverses build-time dependencies. A last simple difference then is - crossSystem should be null when one doesn't want to - cross-compile, while the *Platforms are always non-null. - localSystem is always non-null. + for each bootstrapping stage. That means for any package a given package set, + even those not bound on the top level but only reachable via dependencies or + buildPackages, the three platforms will be defined as one + of localSystem or crossSystem, with the + former replacing the latter as one traverses build-time dependencies. A last + simple difference is that crossSystem should be null when + one doesn't want to cross-compile, while the *Platforms + are always non-null. localSystem is always non-null.
@@ -461,14 +454,14 @@ nix-build <nixpkgs> --arg crossSystem.config '<arch>-<os>-< - If one explores nixpkgs, they will see derivations with names like - gccCross. Such *Cross derivations is - a holdover from before we properly distinguished between the host and - target platforms —the derivation with "Cross" in the name covered the - build = host != target case, while the other covered the - host = target, with build platform the same or not based - on whether one was using its .nativeDrv or - .crossDrv. This ugliness will disappear soon. + If one explores Nixpkgs, they will see derivations with names like + gccCross. Such *Cross derivations is a + holdover from before we properly distinguished between the host and target + platforms—the derivation with "Cross" in the name covered the build + = host != target case, while the other covered the host = + target, with build platform the same or not based on whether one + was using its .nativeDrv or .crossDrv. + This ugliness will disappear soon.
diff --git a/doc/default.nix b/doc/default.nix index 98b4b92be52..7ceaec28af3 100644 --- a/doc/default.nix +++ b/doc/default.nix @@ -2,8 +2,8 @@ let lib = pkgs.lib; locationsXml = import ./lib-function-locations.nix { inherit pkgs nixpkgs; }; -in -pkgs.stdenv.mkDerivation { + functionDocs = import ./lib-function-docs.nix { inherit locationsXml pkgs; }; +in pkgs.stdenv.mkDerivation { name = "nixpkgs-manual"; buildInputs = with pkgs; [ pandoc libxml2 libxslt zip jing xmlformat ]; @@ -32,6 +32,7 @@ pkgs.stdenv.mkDerivation { postPatch = '' rm -rf ./functions/library/locations.xml ln -s ${locationsXml} ./functions/library/locations.xml + ln -s ${functionDocs} ./functions/library/generated echo ${lib.version} > .version ''; diff --git a/doc/functions.xml b/doc/functions.xml index 4193bb49f77..e6d59ebde97 100644 --- a/doc/functions.xml +++ b/doc/functions.xml @@ -14,4 +14,5 @@ + diff --git a/doc/functions/library.xml b/doc/functions/library.xml index 901423c52a1..b01de3c6e41 100644 --- a/doc/functions/library.xml +++ b/doc/functions/library.xml @@ -12,4 +12,13 @@ + + + + + + + diff --git a/doc/functions/library/attrsets.xml b/doc/functions/library/attrsets.xml index 6f23e267bab..65d0b40e2e8 100644 --- a/doc/functions/library/attrsets.xml +++ b/doc/functions/library/attrsets.xml @@ -966,5 +966,766 @@ lib.attrsets.mapAttrsToList (name: value: "${name}=${value}") itself to attribute sets. Also, the first argument of the argument function is a list of the names of the containing attributes. + + + + + f + + + + [ String ] -> Any -> Any + + + Given a list of attribute names and value, return a new value. + + + + + name_path + + + + The list of attribute names to this value. + + + For example, the name_path for the + example string in the attribute set { foo + = { bar = "example"; }; } is [ "foo" "bar" + ]. + + + + + + value + + + + The attribute's value. + + + + + + + + + set + + + + The attribute set to recursively map over. + + + + + + + A contrived example of using <function>lib.attrsets.mapAttrsRecursive</function> + { + n = { + a = "n-a-A"; + m = { + b = "n-m-b-B"; + c = "n-m-c-C"; + }; + }; + d = "d-D"; + } + ]]> + + + +
+ <function>lib.attrsets.mapAttrsRecursiveCond</function> + + mapAttrsRecursiveCond :: (AttrSet -> Bool) -> ([ String ] -> Any -> Any) -> AttrSet -> AttrSet + + + + + + Like mapAttrsRecursive, but it takes an additional + predicate function that tells it whether to recursive into an attribute set. + If it returns false, mapAttrsRecursiveCond does not + recurse, but does apply the map function. It is returns true, it does + recurse, and does not apply the map function. + + + + + + cond + + + + (AttrSet -> Bool) + + + Determine if mapAttrsRecursive should recurse deeper + in to the attribute set. + + + + + attributeset + + + + An attribute set. + + + + + + + + + f + + + + [ String ] -> Any -> Any + + + Given a list of attribute names and value, return a new value. + + + + + name_path + + + + The list of attribute names to this value. + + + For example, the name_path for the + example string in the attribute set { foo + = { bar = "example"; }; } is [ "foo" "bar" + ]. + + + + + + value + + + + The attribute's value. + + + + + + + + + set + + + + The attribute set to recursively map over. + + + + + + + Only convert attribute values to JSON if the containing attribute set is marked for recursion + { + dorecur = { + hello = "\"there\""; + recurse = "true"; + }; + dontrecur = "{\"converted-to\":\"json\"}"; + } + ]]> + +
+ +
+ <function>lib.attrsets.genAttrs</function> + + genAttrs :: [ String ] -> (String -> Any) -> AttrSet + + + + + + Generate an attribute set by mapping a function over a list of attribute + names. + + + + + + names + + + + Names of values in the resulting attribute set. + + + + + + f + + + + String -> Any + + + Takes the name of the attribute and return the attribute's value. + + + + + name + + + + The name of the attribute to generate a value for. + + + + + + + + + + Generate an attrset based on names only + { foo = "x_foo"; bar = "x_bar"; } + ]]> + +
+ +
+ <function>lib.attrsets.isDerivation</function> + + isDerivation :: Any -> Bool + + + + + + Check whether the argument is a derivation. Any set with { type = + "derivation"; } counts as a derivation. + + + + + + value + + + + The value which is possibly a derivation. + + + + + + + A package is a derivation + {}).ruby +=> true + ]]> + + + + Anything else is not a derivation + false + ]]> + +
+ +
+ <function>lib.attrsets.toDerivation</function> + + toDerivation :: Path -> Derivation + + + + + + Converts a store path to a fake derivation. + + + + + + path + + + + A store path to convert to a derivation. + + + + +
+ +
+ <function>lib.attrsets.optionalAttrs</function> + + optionalAttrs :: Bool -> AttrSet + + + + + + Conditionally return an attribute set or an empty attribute set. + + + + + + cond + + + + Condition under which the as attribute set is + returned. + + + + + + as + + + + The attribute set to return if cond is true. + + + + + + + Return the provided attribute set when <varname>cond</varname> is true + { my = "set"; } + ]]> + + + + Return an empty attribute set when <varname>cond</varname> is false + { } + ]]> + +
+ +
+ <function>lib.attrsets.zipAttrsWithNames</function> + + zipAttrsWithNames :: [ String ] -> (String -> [ Any ] -> Any) -> [ AttrSet ] -> AttrSet + + + + + + Merge sets of attributes and use the function f to merge + attribute values where the attribute name is in names. + + + + + + names + + + + A list of attribute names to zip. + + + + + + f + + + + (String -> [ Any ] -> Any + + + Accepts an attribute name, all the values, and returns a combined value. + + + + + name + + + + The name of the attribute each value came from. + + + + + + vs + + + + A list of values collected from the list of attribute sets. + + + + + + + + + sets + + + + A list of attribute sets to zip together. + + + + + + + Summing a list of attribute sets of numbers + { a = "a 11"; b = "b 101"; } + ]]> + +
+ +
+ <function>lib.attrsets.zipAttrsWith</function> + + zipAttrsWith :: (String -> [ Any ] -> Any) -> [ AttrSet ] -> AttrSet + + + + + + Merge sets of attributes and use the function f to merge + attribute values. Similar to + where + all key names are passed for names. + + + + + + f + + + + (String -> [ Any ] -> Any + + + Accepts an attribute name, all the values, and returns a combined value. + + + + + name + + + + The name of the attribute each value came from. + + + + + + vs + + + + A list of values collected from the list of attribute sets. + + + + + + + + + sets + + + + A list of attribute sets to zip together. + + + + + + + Summing a list of attribute sets of numbers + { a = "a 11"; b = "b 101"; c = "c 1001"; } + ]]> + +
+ +
+ <function>lib.attrsets.zipAttrs</function> + + zipAttrsWith :: [ AttrSet ] -> AttrSet + + + + + + Merge sets of attributes and combine each attribute value in to a list. + Similar to + where the merge function returns a list of all values. + + + + + + sets + + + + A list of attribute sets to zip together. + + + + + + + Combining a list of attribute sets + { a = [ 1 10 ]; b = [ 1 100 ]; c = [ 1 1000 ]; } + ]]> + +
+ +
+ <function>lib.attrsets.recursiveUpdateUntil</function> + + recursiveUpdateUntil :: ( [ String ] -> AttrSet -> AttrSet -> Bool ) -> AttrSet -> AttrSet -> AttrSet + + + + + + Does the same as the update operator // except that + attributes are merged until the given predicate is verified. The predicate + should accept 3 arguments which are the path to reach the attribute, a part + of the first attribute set and a part of the second attribute set. When the + predicate is verified, the value of the first attribute set is replaced by + the value of the second attribute set. + + + + + + pred + + + + [ String ] -> AttrSet -> AttrSet -> Bool + + + + + path + + + + The path to the values in the left and right hand sides. + + + + + + l + + + + The left hand side value. + + + + + + r + + + + The right hand side value. + + + + + + + + + lhs + + + + The left hand attribute set of the merge. + + + + + + rhs + + + + The right hand attribute set of the merge. + + + + + + + Recursively merging two attribute sets + { + foo.bar = 1; # 'foo.*' from the second set + foo.quz = 2; # + bar = 3; # 'bar' from the first set + baz = 4; # 'baz' from the second set +} + ]]> + +
+ +
+ <function>lib.attrsets.recursiveUpdate</function> + + recursiveUpdate :: AttrSet -> AttrSet -> AttrSet + + + + + + A recursive variant of the update operator //. The + recursion stops when one of the attribute values is not an attribute set, in + which case the right hand side value takes precedence over the left hand + side value. + + + + + + lhs + + + + The left hand attribute set of the merge. + + + + + + rhs + + + + The right hand attribute set of the merge. + + + + + + + Recursively merging two attribute sets + { + boot.loader.grub.enable = true; + boot.loader.grub.device = ""; +} +]]> +
diff --git a/doc/functions/overrides.xml b/doc/functions/overrides.xml index 99e2a63631a..1bd90d2a0c7 100644 --- a/doc/functions/overrides.xml +++ b/doc/functions/overrides.xml @@ -6,8 +6,14 @@ Sometimes one wants to override parts of nixpkgs, e.g. - derivation attributes, the results of derivations or even the whole package - set. + derivation attributes, the results of derivations. + + + + These functions are used to make changes to packages, returning only single + packages. Overlays, on the other + hand, can be used to combine the overridden packages across the entire + package set of Nixpkgs.
@@ -25,6 +31,9 @@ Example usages: pkgs.foo.override { arg1 = val1; arg2 = val2; ... } + import pkgs.path { overlays = [ (self: super: { foo = super.foo.override { barSupport = true ; }; @@ -86,11 +95,11 @@ helloWithDebug = pkgs.hello.overrideAttrs (oldAttrs: rec { in this case, as it overrides only the attributes of the final derivation. It is for this reason that overrideAttrs should be preferred in (almost) all cases to overrideDerivation, - i.e. to allow using sdenv.mkDerivation to process input + i.e. to allow using stdenv.mkDerivation to process input arguments, as well as the fact that it is easier to use (you can use the same attribute names you see in your Nix code, instead of the ones generated (e.g. buildInputs vs - nativeBuildInputs, and involves less typing. + nativeBuildInputs), and it involves less typing).
diff --git a/doc/functions/prefer-remote-fetch.xml b/doc/functions/prefer-remote-fetch.xml new file mode 100644 index 00000000000..85f08f4eae1 --- /dev/null +++ b/doc/functions/prefer-remote-fetch.xml @@ -0,0 +1,27 @@ +
+ prefer-remote-fetch overlay + + + prefer-remote-fetch is an overlay that download sources + on remote builder. This is useful when the evaluating machine has a slow + upload while the builder can fetch faster directly from the source. + To use it, put the following snippet as a new overlay: + + self: super: + (super.prefer-remote-fetch self super) + + + A full configuration example for that sets the overlay up for your own account, + could look like this + + + $ mkdir ~/.config/nixpkgs/overlays/ + $ cat > ~/.config/nixpkgs/overlays/prefer-remote-fetch.nix <<EOF + self: super: super.prefer-remote-fetch self super + EOF + + +
diff --git a/doc/languages-frameworks/android.section.md b/doc/languages-frameworks/android.section.md new file mode 100644 index 00000000000..237f3441874 --- /dev/null +++ b/doc/languages-frameworks/android.section.md @@ -0,0 +1,240 @@ +--- +title: Android +author: Sander van der Burg +date: 2018-11-18 +--- +# Android + +The Android build environment provides three major features and a number of +supporting features. + +Deploying an Android SDK installation with plugins +-------------------------------------------------- +The first use case is deploying the SDK with a desired set of plugins or subsets +of an SDK. + +```nix +with import {}; + +let + androidComposition = androidenv.composeAndroidPackages { + toolsVersion = "25.2.5"; + platformToolsVersion = "27.0.1"; + buildToolsVersions = [ "27.0.3" ]; + includeEmulator = false; + emulatorVersion = "27.2.0"; + platformVersions = [ "24" ]; + includeSources = false; + includeDocs = false; + includeSystemImages = false; + systemImageTypes = [ "default" ]; + abiVersions = [ "armeabi-v7a" ]; + lldbVersions = [ "2.0.2558144" ]; + cmakeVersions = [ "3.6.4111459" ]; + includeNDK = false; + ndkVersion = "16.1.4479499"; + useGoogleAPIs = false; + useGoogleTVAddOns = false; + includeExtras = [ + "extras;google;gcm" + ]; + }; +in +androidComposition.androidsdk +``` + +The above function invocation states that we want an Android SDK with the above +specified plugin versions. By default, most plugins are disabled. Notable +exceptions are the tools, platform-tools and build-tools sub packages. + +The following parameters are supported: + +* `toolsVersion`, specifies the version of the tools package to use +* `platformsToolsVersion` specifies the version of the `platform-tools` plugin +* `buildToolsVersion` specifies the versions of the `build-tools` plugins to + use. +* `includeEmulator` specifies whether to deploy the emulator package (`false` + by default). When enabled, the version of the emulator to deploy can be + specified by setting the `emulatorVersion` parameter. +* `includeDocs` specifies whether the documentation catalog should be included. +* `lldbVersions` specifies what LLDB versions should be deployed. +* `cmakeVersions` specifies which CMake versions should be deployed. +* `includeNDK` specifies that the Android NDK bundle should be included. + Defaults to: `false`. +* `ndkVersion` specifies the NDK version that we want to use. +* `includeExtras` is an array of identifier strings referring to arbitrary + add-on packages that should be installed. +* `platformVersions` specifies which platform SDK versions should be included. + +For each platform version that has been specified, we can apply the following +options: + +* `includeSystemImages` specifies whether a system image for each platform SDK + should be included. +* `includeSources` specifies whether the sources for each SDK version should be + included. +* `useGoogleAPIs` specifies that for each selected platform version the + Google API should be included. +* `useGoogleTVAddOns` specifies that for each selected platform version the + Google TV add-on should be included. + +For each requested system image we can specify the following options: + +* `systemImageTypes` specifies what kind of system images should be included. + Defaults to: `default`. +* `abiVersions` specifies what kind of ABI version of each system image should + be included. Defaults to: `armeabi-v7a`. + +Most of the function arguments have reasonable default settings. + +When building the above expression with: + +```bash +$ nix-build +``` + +The Android SDK gets deployed with all desired plugin versions. + +We can also deploy subsets of the Android SDK. For example, to only the the +`platform-tools` package, you can evaluate the following expression: + +```nix +with import {}; + +let + androidComposition = androidenv.composeAndroidPackages { + # ... + }; +in +androidComposition.platform-tools +``` + +Using predefine Android package compositions +-------------------------------------------- +In addition to composing an Android package set manually, it is also possible +to use a predefined composition that contains all basic packages for a specific +Android version, such as version 9.0 (API-level 28). + +The following Nix expression can be used to deploy the entire SDK with all basic +plugins: + +```nix +with import {}; + +androidenv.androidPkgs_9_0.androidsdk +``` + +It is also possible to use one plugin only: + +```nix +with import {}; + +androidenv.androidPkgs_9_0.platform-tools +``` + +Building an Android application +------------------------------- +In addition to the SDK, it is also possible to build an Ant-based Android +project and automatically deploy all the Android plugins that a project +requires. + +```nix +with import {}; + +androidenv.buildApp { + name = "MyAndroidApp"; + src = ./myappsources; + release = true; + + # If release is set to true, you need to specify the following parameters + keyStore = ./keystore; + keyAlias = "myfirstapp"; + keyStorePassword = "mykeystore"; + keyAliasPassword = "myfirstapp"; + + # Any Android SDK parameters that install all the relevant plugins that a + # build requires + platformVersions = [ "24" ]; + + # When we include the NDK, then ndk-build is invoked before Ant gets invoked + includeNDK = true; +} +``` + +Aside from the app-specific build parameters (`name`, `src`, `release` and +keystore parameters), the `buildApp {}` function supports all the function +parameters that the SDK composition function (the function shown in the +previous section) supports. + +This build function is particularly useful when it is desired to use +[Hydra](http://nixos.org/hydra): the Nix-based continuous integration solution +to build Android apps. An Android APK gets exposed as a build product and can be +installed on any Android device with a web browser by navigating to the build +result page. + +Spawning emulator instances +--------------------------- +For testing purposes, it can also be quite convenient to automatically generate +scripts that spawn emulator instances with all desired configuration settings. + +An emulator spawn script can be configured by invoking the `emulateApp {}` +function: + +```nix +with import {}; + +androidenv.emulateApp { + name = "emulate-MyAndroidApp"; + platformVersion = "24"; + abiVersion = "armeabi-v7a"; # mips, x86 or x86_64 + systemImageType = "default"; + useGoogleAPIs = false; +} +``` + +It is also possible to specify an APK to deploy inside the emulator +and the package and activity names to launch it: + +```nix +with import {}; + +androidenv.emulateApp { + name = "emulate-MyAndroidApp"; + platformVersion = "24"; + abiVersion = "armeabi-v7a"; # mips, x86 or x86_64 + systemImageType = "default"; + useGoogleAPIs = false; + app = ./MyApp.apk; + package = "MyApp"; + activity = "MainActivity"; +} +``` + +In addition to prebuilt APKs, you can also bind the APK parameter to a +`buildApp {}` function invocation shown in the previous example. + +Querying the available versions of each plugin +---------------------------------------------- +When using any of the previously shown functions, it may be a bit inconvenient +to find out what options are supported, since the Android SDK provides many +plugins. + +A shell script in the `pkgs/development/mobile/androidenv/` sub directory can be used to retrieve all +possible options: + +```bash +sh ./querypackages.sh packages build-tools +``` + +The above command-line instruction queries all build-tools versions in the +generated `packages.nix` expression. + +Updating the generated expressions +---------------------------------- +Most of the Nix expressions are generated from XML files that the Android +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 +``` diff --git a/doc/languages-frameworks/coq.xml b/doc/languages-frameworks/coq.xml index d5f2574039f..4314df5c9df 100644 --- a/doc/languages-frameworks/coq.xml +++ b/doc/languages-frameworks/coq.xml @@ -11,10 +11,9 @@ - Some libraries require OCaml and sometimes also Camlp5 or findlib. The exact - versions that were used to build Coq are saved in the - coq.ocaml and coq.camlp5 and - coq.findlib attributes. + Some extensions (plugins) might require OCaml and sometimes other OCaml + packages. The coq.ocamlPackages attribute can be used to + depend on the same package set Coq was built against. diff --git a/doc/languages-frameworks/haskell.section.md b/doc/languages-frameworks/haskell.section.md index 7677c366191..74b7a9f961e 100644 --- a/doc/languages-frameworks/haskell.section.md +++ b/doc/languages-frameworks/haskell.section.md @@ -935,7 +935,7 @@ The implementation can be found in the [integer-gmp](http://hackage.haskell.org/package/integer-gmp) package. A potential problem with this is that GMP is licensed under the -[GNU Lesser General Public License (LGPL)](http://www.gnu.org/copyleft/lesser.html), +[GNU Lesser General Public License (LGPL)](https://www.gnu.org/copyleft/lesser.html), a kind of "copyleft" license. According to the terms of the LGPL, paragraph 5, you may distribute a program that is designed to be compiled and dynamically linked with the library under the terms of your choice (i.e., commercially) but diff --git a/doc/languages-frameworks/idris.section.md b/doc/languages-frameworks/idris.section.md index 005ed360285..50979d76d98 100644 --- a/doc/languages-frameworks/idris.section.md +++ b/doc/languages-frameworks/idris.section.md @@ -1,39 +1,115 @@ -Idris packages -============== +# Idris packages -This directory contains build rules for idris packages. In addition, -it contains several functions to build and compose those packages. -Everything is exposed to the user via the `idrisPackages` attribute. +## Installing Idris -callPackage ------------- +The easiest way to get a working idris version is to install the `idris` attribute: -This is like the normal nixpkgs callPackage function, specialized to -idris packages. +``` +$ # On NixOS +$ nix-env -i nixos.idris +$ # On non-NixOS +$ nix-env -i nixpkgs.idris +``` -builtins ---------- +This however only provides the `prelude` and `base` libraries. To install additional libraries: -This is a list of all of the libraries that come packaged with Idris -itself. +``` +$ nix-env -iE 'pkgs: pkgs.idrisPackages.with-packages (with pkgs.idrisPackages; [ contrib pruviloj ])' +``` -build-idris-package --------------------- +To see all available Idris packages: +``` +$ # On NixOS +$ nix-env -qaPA nixos.idrisPackages +$ # On non-NixOS +$ nix-env -qaPA nixpkgs.idrisPackages +``` -A function to build an idris package. Its sole argument is a set like -you might pass to `stdenv.mkDerivation`, except `build-idris-package` -sets several attributes for you. See `build-idris-package.nix` for -details. +Similarly, entering a `nix-shell`: +``` +$ nix-shell -p 'idrisPackages.with-packages (with idrisPackages; [ contrib pruviloj ])' +``` -build-builtin-package ----------------------- +## Starting Idris with library support -A version of `build-idris-package` specialized to builtin libraries. -Mostly for internal use. +To have access to these libraries in idris, call it with an argument `-p ` for each library: -with-packages -------------- +``` +$ nix-shell -p 'idrisPackages.with-packages (with idrisPackages; [ contrib pruviloj ])' +[nix-shell:~]$ idris -p contrib -p pruviloj +``` -Bundle idris together with a list of packages. Because idris currently -only supports a single directory in its library path, you must include -all desired libraries here, including `prelude` and `base`. \ No newline at end of file +A listing of all available packages the Idris binary has access to is available via `--listlibs`: + +``` +$ idris --listlibs +00prelude-idx.ibc +pruviloj +base +contrib +prelude +00pruviloj-idx.ibc +00base-idx.ibc +00contrib-idx.ibc +``` + +## Building an Idris project with Nix + +As an example of how a Nix expression for an Idris package can be created, here is the one for `idrisPackages.yaml`: + +```nix +{ build-idris-package +, fetchFromGitHub +, contrib +, lightyear +, lib +}: +build-idris-package { + name = "yaml"; + version = "2018-01-25"; + + # This is the .ipkg file that should be built, defaults to the package name + # In this case it should build `Yaml.ipkg` instead of `yaml.ipkg` + # This is only necessary because the yaml packages ipkg file is + # different from its package name here. + ipkgName = "Yaml"; + # Idris dependencies to provide for the build + idrisDeps = [ contrib lightyear ]; + + src = fetchFromGitHub { + owner = "Heather"; + repo = "Idris.Yaml"; + rev = "5afa51ffc839844862b8316faba3bafa15656db4"; + sha256 = "1g4pi0swmg214kndj85hj50ccmckni7piprsxfdzdfhg87s0avw7"; + }; + + meta = { + description = "Idris YAML lib"; + homepage = https://github.com/Heather/Idris.Yaml; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.brainrape ]; + }; +} +``` + +Assuming this file is saved as `yaml.nix`, it's buildable using + +``` +$ nix-build -E '(import {}).idrisPackages.callPackage ./yaml.nix {}' +``` + +Or it's possible to use + +```nix +with import {}; + +{ + yaml = idrisPackages.callPackage ./yaml.nix {}; +} +``` + +in another file (say `default.nix`) to be able to build it with + +``` +$ nix-build -A yaml +``` diff --git a/doc/languages-frameworks/index.xml b/doc/languages-frameworks/index.xml index f22984cb56b..4564df98fe9 100644 --- a/doc/languages-frameworks/index.xml +++ b/doc/languages-frameworks/index.xml @@ -10,15 +10,18 @@ Nixpkgs to easily build packages for other programming languages, such as Perl or Haskell. These are described in this chapter. + + + @@ -26,6 +29,7 @@ + diff --git a/doc/languages-frameworks/ios.section.md b/doc/languages-frameworks/ios.section.md new file mode 100644 index 00000000000..6684b809ffe --- /dev/null +++ b/doc/languages-frameworks/ios.section.md @@ -0,0 +1,219 @@ +--- +title: iOS +author: Sander van der Burg +date: 2018-11-18 +--- +# iOS + +This component is basically a wrapper/workaround that makes it possible to +expose an Xcode installation as a Nix package by means of symlinking to the +relevant executables on the host system. + +Since Xcode can't be packaged with Nix, nor we can publish it as a Nix package +(because of its license) this is basically the only integration strategy +making it possible to do iOS application builds that integrate with other +components of the Nix ecosystem + +The primary objective of this project is to use the Nix expression language to +specify how iOS apps can be built from source code, and to automatically spawn +iOS simulator instances for testing. + +This component also makes it possible to use [Hydra](http://nixos.org/hydra), +the Nix-based continuous integration server to regularly build iOS apps and to +do wireless ad-hoc installations of enterprise IPAs on iOS devices through +Hydra. + +The Xcode build environment implements a number of features. + +Deploying a proxy component wrapper exposing Xcode +-------------------------------------------------- +The first use case is deploying a Nix package that provides symlinks to the Xcode +installation on the host system. This package can be used as a build input to +any build function implemented in the Nix expression language that requires +Xcode. + +```nix +let + pkgs = import {}; + + xcodeenv = import ./xcodeenv { + inherit (pkgs) stdenv; + }; +in +xcodeenv.composeXcodeWrapper { + version = "9.2"; + xcodeBaseDir = "/Applications/Xcode.app"; +} +``` + +By deploying the above expression with `nix-build` and inspecting its content +you will notice that several Xcode-related executables are exposed as a Nix +package: + +```bash +$ ls result/bin +lrwxr-xr-x 1 sander staff 94 1 jan 1970 Simulator -> /Applications/Xcode.app/Contents/Developer/Applications/Simulator.app/Contents/MacOS/Simulator +lrwxr-xr-x 1 sander staff 17 1 jan 1970 codesign -> /usr/bin/codesign +lrwxr-xr-x 1 sander staff 17 1 jan 1970 security -> /usr/bin/security +lrwxr-xr-x 1 sander staff 21 1 jan 1970 xcode-select -> /usr/bin/xcode-select +lrwxr-xr-x 1 sander staff 61 1 jan 1970 xcodebuild -> /Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild +lrwxr-xr-x 1 sander staff 14 1 jan 1970 xcrun -> /usr/bin/xcrun +``` + +Building an iOS application +--------------------------- +We can build an iOS app executable for the simulator, or an IPA/xcarchive file +for release purposes, e.g. ad-hoc, enterprise or store installations, by +executing the `xcodeenv.buildApp {}` function: + +```nix +let + pkgs = import {}; + + xcodeenv = import ./xcodeenv { + inherit (pkgs) stdenv; + }; +in +xcodeenv.buildApp { + name = "MyApp"; + src = ./myappsources; + sdkVersion = "11.2"; + + target = null; # Corresponds to the name of the app by default + configuration = null; # Release for release builds, Debug for debug builds + scheme = null; # -scheme will correspond to the app name by default + sdk = null; # null will set it to 'iphonesimulator` for simulator builds or `iphoneos` to real builds + xcodeFlags = ""; + + release = true; + certificateFile = ./mycertificate.p12; + certificatePassword = "secret"; + provisioningProfile = ./myprovisioning.profile; + signMethod = "ad-hoc"; # 'enterprise' or 'store' + generateIPA = true; + generateXCArchive = false; + + enableWirelessDistribution = true; + installURL = "/installipa.php"; + bundleId = "mycompany.myapp"; + appVersion = "1.0"; + + # Supports all xcodewrapper parameters as well + xcodeBaseDir = "/Applications/Xcode.app"; +} +``` + +The above function takes a variety of parameters: +* The `name` and `src` parameters are mandatory and specify the name of the app + and the location where the source code resides +* `sdkVersion` specifies which version of the iOS SDK to use. + +It also possile to adjust the `xcodebuild` parameters. This is only needed in +rare circumstances. In most cases the default values should suffice: + +* Specifies which `xcodebuild` target to build. By default it takes the target + that has the same name as the app. +* The `configuration` parameter can be overridden if desired. By default, it + will do a debug build for the simulator and a release build for real devices. +* The `scheme` parameter specifies which `-scheme` parameter to propagate to + `xcodebuild`. By default, it corresponds to the app name. +* The `sdk` parameter specifies which SDK to use. By default, it picks + `iphonesimulator` for simulator builds and `iphoneos` for release builds. +* The `xcodeFlags` parameter specifies arbitrary command line parameters that + should be propagated to `xcodebuild`. + +By default, builds are carried out for the iOS simulator. To do release builds +(builds for real iOS devices), you must set the `release` parameter to `true`. +In addition, you need to set the following parameters: + +* `certificateFile` refers to a P12 certificate file. +* `certificatePassword` specifies the password of the P12 certificate. +* `provisioningProfile` refers to the provision profile needed to sign the app +* `signMethod` should refer to `ad-hoc` for signing the app with an ad-hoc + certificate, `enterprise` for enterprise certificates and `app-store` for App + store certificates. +* `generateIPA` specifies that we want to produce an IPA file (this is probably + what you want) +* `generateXCArchive` specifies thet we want to produce an xcarchive file. + +When building IPA files on Hydra and when it is desired to allow iOS devices to +install IPAs by browsing to the Hydra build products page, you can enable the +`enableWirelessDistribution` parameter. + +When enabled, you need to configure the following options: + +* The `installURL` parameter refers to the URL of a PHP script that composes the + `itms-services://` URL allowing iOS devices to install the IPA file. +* `bundleId` refers to the bundle ID value of the app +* `appVersion` refers to the app's version number + +To use wireless adhoc distributions, you must also install the corresponding +PHP script on a web server (see section: 'Installing the PHP script for wireless +ad hoc installations from Hydra' for more information). + +In addition to the build parameters, you can also specify any parameters that +the `xcodeenv.composeXcodeWrapper {}` function takes. For example, the +`xcodeBaseDir` parameter can be overridden to refer to a different Xcode +version. + +Spawning simulator instances +---------------------------- +In addition to building iOS apps, we can also automatically spawn simulator +instances: + +```nix +let + pkgs = import {}; + + xcodeenv = import ./xcodeenv { + inherit (pkgs) stdenv; + }; +in +xcode.simulateApp { + name = "simulate"; + + # Supports all xcodewrapper parameters as well + xcodeBaseDir = "/Applications/Xcode.app"; +} +``` + +The above expression produces a script that starts the simulator from the +provided Xcode installation. The script can be started as follows: + +```bash +./result/bin/run-test-simulator +``` + +By default, the script will show an overview of UDID for all available simulator +instances and asks you to pick one. You can also provide a UDID as a +command-line parameter to launch an instance automatically: + +```bash +./result/bin/run-test-simulator 5C93129D-CF39-4B1A-955F-15180C3BD4B8 +``` + +You can also extend the simulator script to automatically deploy and launch an +app in the requested simulator instance: + +```nix +let + pkgs = import {}; + + xcodeenv = import ./xcodeenv { + inherit (pkgs) stdenv; + }; +in +xcode.simulateApp { + name = "simulate"; + bundleId = "mycompany.myapp"; + app = xcode.buildApp { + # ... + }; + + # Supports all xcodewrapper parameters as well + xcodeBaseDir = "/Applications/Xcode.app"; +} +``` + +By providing the result of an `xcode.buildApp {}` function and configuring the +app bundle id, the app gets deployed automatically and started. diff --git a/doc/languages-frameworks/node.section.md b/doc/languages-frameworks/node.section.md index f6701c1ab9c..c6dce04c7b8 100644 --- a/doc/languages-frameworks/node.section.md +++ b/doc/languages-frameworks/node.section.md @@ -14,7 +14,7 @@ project. The package set also provides support for multiple Node.js versions. The policy is that a new package should be added to the collection for the latest stable LTS -release (which is currently 8.x), unless there is an explicit reason to support +release (which is currently 10.x), unless there is an explicit reason to support a different release. If your package uses native addons, you need to examine what kind of native @@ -26,7 +26,7 @@ build system it uses. Here are some examples: After you have identified the correct system, you need to override your package expression while adding in build system as a build input. For example, `dat` -requires `node-gyp-build`, so we override its expression in `default-v8.nix`: +requires `node-gyp-build`, so we override its expression in `default-v10.nix`: ```nix dat = nodePackages.dat.override (oldAttrs: { @@ -36,9 +36,9 @@ dat = nodePackages.dat.override (oldAttrs: { To add a package from NPM to nixpkgs: - 1. Modify `pkgs/development/node-packages/node-packages-v8.json` to add, update - or remove package entries. (Or `pkgs/development/node-packages/node-packages-v10.json` - for packages depending on Node.js 10.x) + 1. Modify `pkgs/development/node-packages/node-packages-v10.json` to add, update + or remove package entries. (Or `pkgs/development/node-packages/node-packages-v8.json` + for packages depending on Node.js 8.x) 2. Run the script: `(cd pkgs/development/node-packages && ./generate.sh)`. 3. Build your new package to test your changes: `cd /path/to/nixpkgs && nix-build -A nodePackages.`. diff --git a/doc/languages-frameworks/ocaml.xml b/doc/languages-frameworks/ocaml.xml new file mode 100644 index 00000000000..ea077061680 --- /dev/null +++ b/doc/languages-frameworks/ocaml.xml @@ -0,0 +1,99 @@ +
+ OCaml + + + OCaml libraries should be installed in + $(out)/lib/ocaml/${ocaml.version}/site-lib/. Such + directories are automatically added to the $OCAMLPATH + environment variable when building another package that depends on them + or when opening a nix-shell. + + + + Given that most of the OCaml ecosystem is now built with dune, + nixpkgs includes a convenience build support function called + buildDunePackage that will build an OCaml package + using dune, OCaml and findlib and any additional dependencies provided + as buildInputs or propagatedBuildInputs. + + + + Here is a simple package example. It defines an (optional) attribute + minimumOCamlVersion that will be used to throw a + descriptive evaluation error if building with an older OCaml is attempted. + It uses the fetchFromGitHub fetcher to get its source. + It sets the doCheck (optional) attribute to + true which means that tests will be run with + dune runtest -p angstrom after the build + (dune build -p angstrom) is complete. + It uses alcotest as a build input (because it is needed + to run the tests) and bigstringaf and + result as propagated build inputs (thus they will also + be available to libraries depending on this library). + The library will be installed using the angstrom.install + file that dune generates. + + + +{ stdenv, fetchFromGitHub, buildDunePackage, alcotest, result, bigstringaf }: + +buildDunePackage rec { + pname = "angstrom"; + version = "0.10.0"; + + minimumOCamlVersion = "4.03"; + + src = fetchFromGitHub { + owner = "inhabitedtype"; + repo = pname; + rev = version; + sha256 = "0lh6024yf9ds0nh9i93r9m6p5psi8nvrqxl5x7jwl13zb0r9xfpw"; + }; + + buildInputs = [ alcotest ]; + propagatedBuildInputs = [ bigstringaf result ]; + doCheck = true; + + meta = { + 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 ]; + }; +} + + + + Here is a second example, this time using a source archive generated with + dune-release. It is a good idea to use this archive when + it is available as it will usually contain substituted variables such as a + %%VERSION%% field. This library does not depend + on any other OCaml library and no tests are run after building it. + + + +{ stdenv, fetchurl, buildDunePackage }: + +buildDunePackage rec { + pname = "wtf8"; + version = "1.0.1"; + + minimumOCamlVersion = "4.01"; + + src = fetchurl { + url = "https://github.com/flowtype/ocaml-${pname}/releases/download/v${version}/${pname}-${version}.tbz"; + sha256 = "1msg3vycd3k8qqj61sc23qks541cxpb97vrnrvrhjnqxsqnh6ygq"; + }; + + meta = with stdenv.lib; { + 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/python.section.md b/doc/languages-frameworks/python.section.md index 5eabb866654..acd2bf769b0 100644 --- a/doc/languages-frameworks/python.section.md +++ b/doc/languages-frameworks/python.section.md @@ -186,7 +186,7 @@ building Python libraries is `buildPythonPackage`. Let's see how we can build th `toolz` package. ```nix -{ # ... +{ lib, buildPythonPackage, fetchPypi }: toolz = buildPythonPackage rec { pname = "toolz"; @@ -199,8 +199,8 @@ building Python libraries is `buildPythonPackage`. Let's see how we can build th doCheck = false; - meta = { - homepage = "https://github.com/pytoolz/toolz/"; + meta = with lib; { + homepage = https://github.com/pytoolz/toolz; description = "List processing tools and functional utilities"; license = licenses.bsd3; maintainers = with maintainers; [ fridh ]; @@ -267,12 +267,13 @@ that we introduced with the `let` expression. #### Handling dependencies -Our example, `toolz`, does not have any dependencies on other Python -packages or system libraries. According to the manual, `buildPythonPackage` -uses the arguments `buildInputs` and `propagatedBuildInputs` to specify dependencies. If something is -exclusively a build-time dependency, then the dependency should be included as a -`buildInput`, but if it is (also) a runtime dependency, then it should be added -to `propagatedBuildInputs`. Test dependencies are considered build-time dependencies. +Our example, `toolz`, does not have any dependencies on other Python packages or +system libraries. According to the manual, `buildPythonPackage` uses the +arguments `buildInputs` and `propagatedBuildInputs` to specify dependencies. If +something is exclusively a build-time dependency, then the dependency should be +included as a `buildInput`, but if it is (also) a runtime dependency, then it +should be added to `propagatedBuildInputs`. Test dependencies are considered +build-time dependencies and passed to `checkInputs`. The following example shows which arguments are given to `buildPythonPackage` in order to build [`datashape`](https://github.com/blaze/datashape). @@ -292,7 +293,7 @@ order to build [`datashape`](https://github.com/blaze/datashape). checkInputs = with self; [ pytest ]; propagatedBuildInputs = with self; [ numpy multipledispatch dateutil ]; - meta = { + meta = with lib; { homepage = https://github.com/ContinuumIO/datashape; description = "A data description language"; license = licenses.bsd2; @@ -326,7 +327,7 @@ when building the bindings and are therefore added as `buildInputs`. buildInputs = with self; [ pkgs.libxml2 pkgs.libxslt ]; - meta = { + meta = with lib; { description = "Pythonic binding for the libxml2 and libxslt libraries"; homepage = https://lxml.de; license = licenses.bsd3; @@ -370,9 +371,9 @@ and `CFLAGS`. export CFLAGS="-I${pkgs.fftw.dev}/include -I${pkgs.fftwFloat.dev}/include -I${pkgs.fftwLongDouble.dev}/include" ''; - meta = { + 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 ]; }; @@ -478,18 +479,18 @@ don't explicitly define which `python` derivation should be used. In the above example we use `buildPythonPackage` that is part of the set `python35Packages`, and in this case the `python35` interpreter is automatically used. - - ## Reference ### Interpreters -Versions 2.7, 3.4, 3.5, 3.6 and 3.7 of the CPython interpreter are available as -respectively `python27`, `python34`, `python35` and `python36`. The PyPy interpreter -is available as `pypy`. The aliases `python2` and `python3` correspond to respectively `python27` and -`python35`. The default interpreter, `python`, maps to `python2`. -The Nix expressions for the interpreters can be found in -`pkgs/development/interpreters/python`. +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 +`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`. All packages depending on any Python interpreter get appended `out/{python.sitePackages}` to `$PYTHONPATH` if such directory @@ -508,7 +509,7 @@ Each interpreter has the following attributes: - `buildEnv`. Function to build python interpreter environments with extra packages bundled together. See section *python.buildEnv function* for usage and documentation. - `withPackages`. Simpler interface to `buildEnv`. See section *python.withPackages function* for usage and documentation. - `sitePackages`. Alias for `lib/${libPrefix}/site-packages`. -- `executable`. Name of the interpreter executable, e.g. `python3.4`. +- `executable`. Name of the interpreter executable, e.g. `python3.7`. - `pkgs`. Set of Python packages for that specific interpreter. The package set can be modified by overriding the interpreter and passing `packageOverrides`. ### Building packages and applications @@ -530,7 +531,6 @@ attribute set is created for each available Python interpreter. The available sets are * `pkgs.python27Packages` -* `pkgs.python34Packages` * `pkgs.python35Packages` * `pkgs.python36Packages` * `pkgs.python37Packages` @@ -539,7 +539,7 @@ sets are and the aliases * `pkgs.python2Packages` pointing to `pkgs.python27Packages` -* `pkgs.python3Packages` pointing to `pkgs.python36Packages` +* `pkgs.python3Packages` pointing to `pkgs.python37Packages` * `pkgs.pythonPackages` pointing to `pkgs.python2Packages` #### `buildPythonPackage` function @@ -549,31 +549,31 @@ The `buildPythonPackage` function is implemented in The following is an example: ```nix +{ lib, buildPythonPackage, fetchPypi, hypothesis, setuptools_scm, attrs, py, setuptools, six, pluggy }: buildPythonPackage rec { - version = "3.3.1"; pname = "pytest"; - - preCheck = '' - # don't test bash builtins - rm testing/test_argcomplete.py - ''; + version = "3.3.1"; src = fetchPypi { inherit pname version; sha256 = "cf8436dc59d8695346fcd3ab296de46425ecab00d64096cebe79fb51ecb2eb93"; }; + postPatch = '' + # don't test bash builtins + rm testing/test_argcomplete.py + ''; + checkInputs = [ hypothesis ]; buildInputs = [ setuptools_scm ]; propagatedBuildInputs = [ attrs py setuptools six pluggy ]; - meta = with stdenv.lib; { + meta = with lib; { maintainers = with maintainers; [ domenkozar lovek323 madjar lsix ]; description = "Framework for writing tests"; }; } - ``` The `buildPythonPackage` mainly does four things: @@ -655,6 +655,39 @@ Another difference is that `buildPythonPackage` by default prefixes the names of the packages with the version of the interpreter. Because this is irrelevant for applications, the prefix is omitted. +When packaging a python application with `buildPythonApplication`, it should be +called with `callPackage` and passed `python` or `pythonPackages` (possibly +specifying an interpreter version), like this: + +```nix +{ lib, python3Packages }: + +python3Packages.buildPythonApplication rec { + pname = "luigi"; + version = "2.7.9"; + + src = python3Packages.fetchPypi { + inherit pname version; + sha256 = "035w8gqql36zlan0xjrzz9j4lh9hs0qrsgnbyw07qs7lnkvbdv9x"; + }; + + propagatedBuildInputs = with python3Packages; [ tornado_4 python-daemon ]; + + meta = with lib; { + ... + }; +} +``` + +This is then added to `all-packages.nix` just as any other application would be. + +```nix +luigi = callPackage ../applications/networking/cluster/luigi { }; +``` + +Since the package is an application, a consumer doesn't need to care about +python versions or modules, which is why they don't go in `pythonPackages`. + #### `toPythonApplication` function A distinction is made between applications and libraries, however, sometimes a @@ -805,7 +838,7 @@ community to help save time. No tool is preferred at the moment. ### Deterministic builds -Python 2.7, 3.5 and 3.6 are now built deterministically and 3.4 mostly. +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`. @@ -1047,8 +1080,7 @@ To modify only a Python package set instead of a whole Python derivation, use th Use the following overlay template: ```nix -self: super: -{ +self: super: { python = super.python.override { packageOverrides = python-self: python-super: { zerobin = python-super.zerobin.overrideAttrs (oldAttrs: { @@ -1063,6 +1095,34 @@ 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`. + +The following is an overlay that configures `numpy` to use `mkl`: +```nix +self: super: { + python37 = super.python37.override { + packageOverrides = python-self: python-super: { + numpy = python-super.numpy.override { + blas = super.pkgs.mkl; + }; + }; + }; +} +``` + +`mkl` requires an `openmp` implementation when running with multiple processors. +By default, `mkl` will use Intel's `iomp` implementation if no other is +specified, but this is a runtime-only dependency and binary compatible with the +LLVM implementation. To use that one instead, Intel recommends users set it with +`LD_PRELOAD`. + +Note that `mkl` is only available on `x86_64-{linux,darwin}` platforms; +moreover, Hydra is not building and distributing pre-compiled binaries using it. + ## Contributing ### Contributing guidelines diff --git a/doc/languages-frameworks/ruby.xml b/doc/languages-frameworks/ruby.xml index c52a72a3df4..df4e5acb22c 100644 --- a/doc/languages-frameworks/ruby.xml +++ b/doc/languages-frameworks/ruby.xml @@ -50,6 +50,17 @@ bundlerEnv rec { future updates can be run easily. + + Updating Ruby packages can then be done like this: + + + + + + For tools written in Ruby - i.e. where the desire is to install a package and then execute e.g. rake at the command line, there is an diff --git a/doc/languages-frameworks/rust.section.md b/doc/languages-frameworks/rust.section.md index 4549bbd1686..14b36f55f52 100644 --- a/doc/languages-frameworks/rust.section.md +++ b/doc/languages-frameworks/rust.section.md @@ -303,11 +303,15 @@ with import {}; stdenv.mkDerivation { name = "rust-env"; - buildInputs = [ + nativeBuildInputs = [ rustc cargo - # Example Additional Dependencies - pkgconfig openssl + # Example Build-time Additional Dependencies + pkgconfig + ]; + buildInputs = [ + # Example Run-time Additional Dependencies + openssl ]; # Set Environment Variables diff --git a/doc/languages-frameworks/texlive.xml b/doc/languages-frameworks/texlive.xml index e42d0a81111..5792a16963a 100644 --- a/doc/languages-frameworks/texlive.xml +++ b/doc/languages-frameworks/texlive.xml @@ -49,12 +49,12 @@ texlive.combine { - You can list packages e.g. by nix-repl. - -$ nix-repl -nix-repl> :l <nixpkgs> -nix-repl> texlive.collection-<TAB> - + You can list packages e.g. by nix repl. + :l +nix-repl> texlive.collection- +]]> diff --git a/doc/languages-frameworks/titanium.section.md b/doc/languages-frameworks/titanium.section.md new file mode 100644 index 00000000000..7a97664ec59 --- /dev/null +++ b/doc/languages-frameworks/titanium.section.md @@ -0,0 +1,115 @@ +--- +title: Titanium +author: Sander van der Burg +date: 2018-11-18 +--- +# Titanium + +The Nixpkgs repository contains facilities to deploy a variety of versions of +the [Titanium SDK](https://www.appcelerator.com) versions, a cross-platform +mobile app development framework using JavaScript as an implementation language, +and includes a function abstraction making it possible to build Titanium +applications for Android and iOS devices from source code. + +Not all Titanium features supported -- currently, it can only be used to build +Android and iOS apps. + +Building a Titanium app +----------------------- +We can build a Titanium app from source for Android or iOS and for debugging or +release purposes by invoking the `titaniumenv.buildApp {}` function: + +```nix +titaniumenv.buildApp { + name = "myapp"; + src = ./myappsource; + + preBuild = ""; + target = "android"; # or 'iphone' + tiVersion = "7.1.0.GA"; + release = true; + + androidsdkArgs = { + platformVersions = [ "25" "26" ]; + }; + androidKeyStore = ./keystore; + androidKeyAlias = "myfirstapp"; + androidKeyStorePassword = "secret"; + + xcodeBaseDir = "/Applications/Xcode.app"; + xcodewrapperArgs = { + version = "9.3"; + }; + iosMobileProvisioningProfile = ./myprovisioning.profile; + iosCertificateName = "My Company"; + iosCertificate = ./mycertificate.p12; + iosCertificatePassword = "secret"; + iosVersion = "11.3"; + iosBuildStore = false; + + enableWirelessDistribution = true; + installURL = "/installipa.php"; +} +``` + +The `titaniumenv.buildApp {}` function takes the following parameters: + +* The `name` parameter refers to the name in the Nix store. +* The `src` parameter refers to the source code location of the app that needs + to be built. +* `preRebuild` contains optional build instructions that are carried out before + the build starts. +* `target` indicates for which device the app must be built. Currently only + 'android' and 'iphone' (for iOS) are supported. +* `tiVersion` can be used to optionally override the requested Titanium version + in `tiapp.xml`. If not specified, it will use the version in `tiapp.xml`. +* `release` should be set to true when building an app for submission to the + Google Playstore or Apple Appstore. Otherwise, it should be false. + +When the `target` has been set to `android`, we can configure the following +parameters: + +* The `androidSdkArgs` parameter refers to an attribute set that propagates all + parameters to the `androidenv.composeAndroidPackages {}` function. This can + be used to install all relevant Android plugins that may be needed to perform + the Android build. If no parameters are given, it will deploy the platform + SDKs for API-levels 25 and 26 by default. + +When the `release` parameter has been set to true, you need to provide +parameters to sign the app: + +* `androidKeyStore` is the path to the keystore file +* `androidKeyAlias` is the key alias +* `androidKeyStorePassword` refers to the password to open the keystore file. + +When the `target` has been set to `iphone`, we can configure the following +parameters: + +* The `xcodeBaseDir` parameter refers to the location where Xcode has been + installed. When none value is given, the above value is the default. +* The `xcodewrapperArgs` parameter passes arbitrary parameters to the + `xcodeenv.composeXcodeWrapper {}` function. This can, for example, be used + to adjust the default version of Xcode. + +When `release` has been set to true, you also need to provide the following +parameters: + +* `iosMobileProvisioningProfile` refers to a mobile provisioning profile needed + for signing. +* `iosCertificateName` refers to the company name in the P12 certificate. +* `iosCertificate` refers to the path to the P12 file. +* `iosCertificatePassword` contains the password to open the P12 file. +* `iosVersion` refers to the iOS SDK version to use. It defaults to the latest + version. +* `iosBuildStore` should be set to `true` when building for the Apple Appstore + submission. For enterprise or ad-hoc builds it should be set to `false`. + +When `enableWirelessDistribution` has been enabled, you must also provide the +path of the PHP script (`installURL`) (that is included with the iOS build +environment) to enable wireless ad-hoc installations. + +Emulating or simulating the app +------------------------------- +It is also possible to simulate the correspond iOS simulator build by using +`xcodeenv.simulateApp {}` and emulate an Android APK by using +`androidenv.emulateApp {}`. diff --git a/doc/languages-frameworks/vim.section.md b/doc/languages-frameworks/vim.section.md index 1b235dbb52f..e4c486a0e52 100644 --- a/doc/languages-frameworks/vim.section.md +++ b/doc/languages-frameworks/vim.section.md @@ -23,6 +23,7 @@ Adding custom .vimrc lines can be done using the following code: ``` vim_configurable.customize { + # `name` specifies the name of the executable and package name = "vim-with-plugins"; vimrcConfig.customRC = '' @@ -31,6 +32,8 @@ vim_configurable.customize { } ``` +This configuration is used when vim is invoked with the command specified as name, in this case `vim-with-plugins`. + For Neovim the `configure` argument can be overridden to achieve the same: ``` @@ -43,9 +46,24 @@ neovim.override { } ``` +If you want to use `neovim-qt` as a graphical editor, you can configure it by overriding neovim in an overlay +or passing it an overridden neovimn: + +``` +neovim-qt.override { + neovim = neovim.override { + configure = { + customRC = '' + # your custom configuration + ''; + }; + }; +} +``` + ## Managing plugins with Vim packages -To store you plugins in Vim packages the following example can be used: +To store you plugins in Vim packages (the native vim plugin manager, see `:help packages`) the following example can be used: ``` vim_configurable.customize { @@ -53,6 +71,8 @@ vim_configurable.customize { # loaded on launch start = [ youcompleteme fugitive ]; # manually loadable by calling `:packadd $plugin-name` + # however, if a vim plugin has a dependency that is not explicitly listed in + # opt that dependency will always be added to start to avoid confusion. opt = [ phpCompletion elm-vim ]; # To automatically load a plugin when opening a filetype, add vimrc lines like: # autocmd FileType php :packadd phpCompletion @@ -60,6 +80,7 @@ vim_configurable.customize { } ``` +`myVimPackage` is an arbitrary name for the generated package. You can choose any name you like. For Neovim the syntax is: ``` @@ -71,6 +92,8 @@ neovim.override { packages.myVimPackage = with pkgs.vimPlugins; { # see examples below how to use custom packages start = [ ]; + # If a vim plugin has a dependency that is not explicitly listed in + # opt that dependency will always be added to start to avoid confusion. opt = [ ]; }; }; @@ -83,6 +106,7 @@ The resulting package can be added to `packageOverrides` in `~/.nixpkgs/config.n { packageOverrides = pkgs: with pkgs; { myVim = vim_configurable.customize { + # `name` specifies the name of the executable and package name = "vim-with-plugins"; # add here code from the example section }; diff --git a/doc/lib-function-docs.nix b/doc/lib-function-docs.nix new file mode 100644 index 00000000000..421f848d25a --- /dev/null +++ b/doc/lib-function-docs.nix @@ -0,0 +1,26 @@ +# Generates the documentation for library functons via nixdoc. To add +# another library function file to this list, the include list in the +# file `doc/functions/library.xml` must also be updated. + +{ pkgs ? import ./.. {}, locationsXml }: + +with pkgs; stdenv.mkDerivation { + name = "nixpkgs-lib-docs"; + src = ./../lib; + + buildInputs = [ nixdoc ]; + installPhase = '' + function docgen { + nixdoc -c "$1" -d "$2" -f "../lib/$1.nix" > "$out/$1.xml" + } + + mkdir -p $out + ln -s ${locationsXml} $out/locations.xml + + docgen strings 'String manipulation functions' + docgen trivial 'Miscellaneous functions' + docgen lists 'List manipulation functions' + docgen debug 'Debugging functions' + docgen options 'NixOS / nixpkgs option handling' + ''; +} diff --git a/doc/meta.xml b/doc/meta.xml index 496b3291655..774ed2db750 100644 --- a/doc/meta.xml +++ b/doc/meta.xml @@ -14,7 +14,7 @@ meta = with stdenv.lib; { GNU Hello is a program that prints "Hello, world!" when you run it. It is fully customizable. ''; - homepage = http://www.gnu.org/software/hello/manual/; + homepage = https://www.gnu.org/software/hello/manual/; license = licenses.gpl3Plus; maintainers = [ maintainers.eelco ]; platforms = platforms.all; @@ -35,7 +35,7 @@ $ nix-env -qa hello --json "hello": { "meta": { "description": "A program that produces a familiar, friendly greeting", - "homepage": "http://www.gnu.org/software/hello/manual/", + "homepage": "https://www.gnu.org/software/hello/manual/", "license": { "fullName": "GNU General Public License version 3 or later", "shortName": "GPLv3+", @@ -135,7 +135,7 @@ hello-2.3 A program that produces a familiar, friendly greeting The package’s homepage. Example: - http://www.gnu.org/software/hello/manual/ + https://www.gnu.org/software/hello/manual/ @@ -146,7 +146,7 @@ hello-2.3 A program that produces a familiar, friendly greeting The page where a link to the current version can be found. Example: - http://ftp.gnu.org/gnu/hello/ + https://ftp.gnu.org/gnu/hello/ @@ -250,6 +250,60 @@ meta.platforms = stdenv.lib.platforms.linux; + + + tests + + + + + This attribute is special in that it is not actually under the + meta attribute set but rather under the + passthru attribute set. This is due to a current + limitation of Nix, and will change as soon as Nixpkgs will be able to + depend on a new enough version of Nix. See + the relevant + issue for more details. + + + + An attribute set with as values tests. A test is a derivation, which + builds successfully when the test passes, and fails to build otherwise. A + derivation that is a test needs to have meta.timeout + defined. + + + The NixOS tests are available as nixosTests in + parameters of derivations. For instance, the OpenSMTPD derivation + includes lines similar to: + +{ /* ... */, nixosTests }: +{ + # ... + passthru.tests = { + basic-functionality-and-dovecot-integration = nixosTests.opensmtpd; + }; +} + + + + + + + timeout + + + + A timeout (in seconds) for building the derivation. If the derivation + takes longer than this time to build, it can fail due to breaking the + timeout. However, all computers do not have the same computing power, + hence some builders may decide to apply a multiplicative factor to this + value. When filling this value in, try to keep it approximately + consistent with other values already present in + nixpkgs. + + + hydraPlatforms diff --git a/doc/multiple-output.xml b/doc/multiple-output.xml index e96e84bfe72..d18e282c5bd 100644 --- a/doc/multiple-output.xml +++ b/doc/multiple-output.xml @@ -12,7 +12,7 @@ The Nix language allows a derivation to produce multiple outputs, which is similar to what is utilized by other Linux distribution packaging systems. - The outputs reside in separate nix store paths, so they can be mostly + The outputs reside in separate Nix store paths, so they can be mostly handled independently of each other, including passing to build inputs, garbage collection or binary substitution. The exception is that building from source always produces all the outputs. diff --git a/doc/overlays.xml b/doc/overlays.xml index 2decf9febe8..bff2339ca93 100644 --- a/doc/overlays.xml +++ b/doc/overlays.xml @@ -3,9 +3,9 @@ xml:id="chap-overlays"> Overlays - This chapter describes how to extend and change Nixpkgs packages using - overlays. Overlays are used to add layers in the fix-point used by Nixpkgs to - compose the set of all packages. + This chapter describes how to extend and change Nixpkgs using overlays. + Overlays are used to add layers in the fixed-point used by Nixpkgs to compose + the set of all packages. Nixpkgs can be configured with a list of overlays, which are applied in @@ -17,91 +17,122 @@ Installing overlays - The list of overlays is determined as follows. + The list of overlays can be set either explicitly in a Nix expression, or + through <nixpkgs-overlays> or user configuration + files. - - If the overlays argument is not provided explicitly, we - look for overlays in a path. The path is determined as follows: - - - - First, if an overlays argument to the nixpkgs function - itself is given, then that is used. - - - This can be passed explicitly when importing nipxkgs, for example - import <nixpkgs> { overlays = [ overlay1 overlay2 ]; - }. - - - - - Otherwise, if the Nix path entry <nixpkgs-overlays> - exists, we look for overlays at that path, as described below. - - - See the section on NIX_PATH in the Nix manual for more - details on how to set a value for - <nixpkgs-overlays>. - - - - - If one of ~/.config/nixpkgs/overlays.nix and - ~/.config/nixpkgs/overlays/ exists, then we look for - overlays at that path, as described below. It is an error if both exist. - - - - +
+ Set overlays in NixOS or Nix expressions - - If we are looking for overlays at a path, then there are two cases: - - - - If the path is a file, then the file is imported as a Nix expression and - used as the list of overlays. - - - - - If the path is a directory, then we take the content of the directory, - order it lexicographically, and attempt to interpret each as an overlay - by: - - - - Importing the file, if it is a .nix file. - - - - - Importing a top-level default.nix file, if it is - a directory. - - - - - - - + + On a NixOS system the value of the nixpkgs.overlays + option, if present, is passed to the system Nixpkgs directly as an + argument. Note that this does not affect the overlays for non-NixOS + operations (e.g. nix-env), which are + looked up independently. + - - On a NixOS system the value of the nixpkgs.overlays - option, if present, is passed to the system Nixpkgs directly as an argument. - Note that this does not affect the overlays for non-NixOS operations (e.g. - nix-env), which are looked up independently. - + + The list of overlays can be passed explicitly when importing nixpkgs, for + example import <nixpkgs> { overlays = [ overlay1 overlay2 ]; + }. + - - The overlays.nix option therefore provides a convenient - way to use the same overlays for a NixOS system configuration and user - configuration: the same file can be used as - overlays.nix and imported as the value of - nixpkgs.overlays. - + + Further overlays can be added by calling the pkgs.extend + or pkgs.appendOverlays, although it is often preferable + to avoid these functions, because they recompute the Nixpkgs fixpoint, + which is somewhat expensive to do. + +
+ +
+ Install overlays via configuration lookup + + + The list of overlays is determined as follows. + + + + + + + First, if an + overlays + argument to the Nixpkgs function itself is given, then that is + used and no path lookup will be performed. + + + + + Otherwise, if the Nix path entry + <nixpkgs-overlays> exists, we look for overlays at + that path, as described below. + + + See the section on NIX_PATH in the Nix manual for + more details on how to set a value for + <nixpkgs-overlays>. + + + + + If one of ~/.config/nixpkgs/overlays.nix and + ~/.config/nixpkgs/overlays/ exists, then we look + for overlays at that path, as described below. It is an error if both + exist. + + + + + + + If we are looking for overlays at a path, then there are two cases: + + + + If the path is a file, then the file is imported as a Nix expression and + used as the list of overlays. + + + + + If the path is a directory, then we take the content of the directory, + order it lexicographically, and attempt to interpret each as an overlay + by: + + + + Importing the file, if it is a .nix file. + + + + + Importing a top-level default.nix file, if it is + a directory. + + + + + + + + + + Because overlays that are set in NixOS configuration do not affect + non-NixOS operations such as nix-env, the + overlays.nix option provides a convenient way to use + the same overlays for a NixOS system configuration and user configuration: + the same file can be used as overlays.nix and imported + as the value of nixpkgs.overlays. + + + +
diff --git a/doc/package-notes.xml b/doc/package-notes.xml index 0543e06a05d..e23593107d8 100644 --- a/doc/package-notes.xml +++ b/doc/package-notes.xml @@ -205,7 +205,7 @@ $ cat $(PRINT_PATH=1 nix-prefetch-url $i | tail -n 1) \ Nixpkgs provides a number of packages that will install Eclipse in its - various forms, these range from the bare-bones Eclipse Platform to the more + various forms. These range from the bare-bones Eclipse Platform to the more fully featured Eclipse SDK or Scala-IDE packages and multiple version are often available. It is possible to list available Eclipse packages by issuing the command: @@ -307,23 +307,19 @@ packageOverrides = pkgs: {
+
Elm - The Nix expressions for Elm reside in - pkgs/development/compilers/elm. They are generated - automatically by update-elm.rb script. One should specify - versions of Elm packages inside the script, clear the - packages directory and run the script from inside it. - elm-reactor is special because it also has Elm package - dependencies. The process is not automated very much for now -- you should - get the elm-reactor source tree (e.g. with - nix-shell) and run elm2nix.rb inside - it. Place the resulting package.nix file into - packages/elm-reactor-elm.nix. + To update Elm compiler, see nixpkgs/pkgs/development/compilers/elm/README.md. + + + + To package Elm applications, read about elm2nix.
+
Interactive shell helpers @@ -413,7 +409,8 @@ packageOverrides = pkgs: { in your /etc/nixos/configuration.nix. You'll also need hardware.pulseaudio.support32Bit = true; if you are using PulseAudio - this will enable 32bit ALSA apps integration. - To use the Steam controller or other Steam supported controllers such as the DualShock 4 or Nintendo Switch Pro, you need to add + To use the Steam controller or other Steam supported controllers such as + the DualShock 4 or Nintendo Switch Pro, you need to add hardware.steam-hardware.enable = true; to your configuration. @@ -680,10 +677,10 @@ overrides = self: super: rec { - The python plugin allows the addition of extra libraries. For instance, the - inotify.py script in weechat-scripts requires D-Bus or - libnotify, and the fish.py script requires pycrypto. To - use these scripts, use the python plugin's + The python and perl plugins allows the addition of extra libraries. For + instance, the inotify.py script in weechat-scripts + requires D-Bus or libnotify, and the fish.py script + requires pycrypto. To use these scripts, use the plugin's withPackages attribute: weechat.override { configure = {availablePlugins, ...}: { plugins = with availablePlugins; [ diff --git a/doc/platform-notes.xml b/doc/platform-notes.xml index cde27b8a5ed..6050271dbf6 100644 --- a/doc/platform-notes.xml +++ b/doc/platform-notes.xml @@ -6,13 +6,13 @@ Darwin (macOS) - Some common issues when packaging software for darwin: + Some common issues when packaging software for Darwin: - The darwin stdenv uses clang instead of gcc. When + The Darwin stdenv uses clang instead of gcc. When referring to the compiler $CC or cc will work in both cases. Some builds hardcode gcc/g++ in their build scripts, that can usually be fixed with using something like @@ -31,7 +31,7 @@ - On darwin libraries are linked using absolute paths, libraries are + On Darwin, libraries are linked using absolute paths, libraries are resolved by their install_name at link time. Sometimes packages won't set this correctly causing the library lookups to fail at runtime. This can be fixed by adding extra linker flags or by running @@ -96,8 +96,8 @@ The package xcbuild can be used to build projects that - really depend on Xcode, however projects that build some kind of graphical - interface won't work without using Xcode in an impure way. + really depend on Xcode. However, this replacement is not 100% + compatible with Xcode and can occasionally cause issues. diff --git a/doc/quick-start.xml b/doc/quick-start.xml index b9e6d789404..8dd673ed273 100644 --- a/doc/quick-start.xml +++ b/doc/quick-start.xml @@ -147,8 +147,8 @@ $ git add pkgs/development/libraries/libfoo/default.nix - You can use nix-prefetch-url (or similar - nix-prefetch-git, etc) url to get the + You can use nix-prefetch-url + url to get the SHA-256 hash of source distributions. There are similar commands as nix-prefetch-git and nix-prefetch-hg available in diff --git a/doc/reviewing-contributions.xml b/doc/reviewing-contributions.xml index 849bb9316c6..f541b7f22da 100644 --- a/doc/reviewing-contributions.xml +++ b/doc/reviewing-contributions.xml @@ -17,22 +17,20 @@ - The nixpkgs project receives a fairly high number of contributions via GitHub - pull-requests. Reviewing and approving these is an important task and a way + The Nixpkgs project receives a fairly high number of contributions via GitHub + pull requests. Reviewing and approving these is an important task and a way to contribute to the project. - The high change rate of nixpkgs makes any pull request that remains open for + The high change rate of Nixpkgs makes any pull request that remains open for too long subject to conflicts that will require extra work from the submitter - or the merger. Reviewing pull requests in a timely manner and being - responsive to the comments is the key to avoid these. GitHub provides sort - filters that can be used to see the - most - recently and the - least - recently updated pull-requests. We highly encourage looking at + or the merger. Reviewing pull requests in a timely manner and being responsive + to the comments is the key to avoid this issue. GitHub provides sort filters + that can be used to see the most + recently and the least + recently updated pull requests. We highly encourage looking at this list of ready to merge, unreviewed pull requests. @@ -43,12 +41,12 @@ GitHub provides reactions as a simple and quick way to provide feedback to - pull-requests or any comments. The thumb-down reaction should be used with + pull requests or any comments. The thumb-down reaction should be used with care and if possible accompanied with some explanation so the submitter has directions to improve their contribution. - Pull-request reviews should include a list of what has been reviewed in a + pull request reviews should include a list of what has been reviewed in a comment, so other reviewers and mergers can know the state of the review. @@ -60,8 +58,8 @@ Package updates - A package update is the most trivial and common type of pull-request. These - pull-requests mainly consist of updating the version part of the package + A package update is the most trivial and common type of pull request. These + pull requests mainly consist of updating the version part of the package name and the source hash. @@ -77,7 +75,7 @@ - Add labels to the pull-request. (Requires commit rights) + Add labels to the pull request. (Requires commit rights) @@ -144,8 +142,8 @@ - Pull-requests are often targeted to the master or staging branch, and - building the pull-request locally when it is submitted can trigger many + pull requests are often targeted to the master or staging branch, and + building the pull request locally when it is submitted can trigger many source builds. @@ -174,14 +172,14 @@ $ git rebase --onto nixos-unstable BASEBRANCH FETCH_HEAD - Fetching the pull-request changes, PRNUMBER is the - number at the end of the pull-request title and - BASEBRANCH the base branch of the pull-request. + Fetching the pull request changes, PRNUMBER is the + number at the end of the pull request title and + BASEBRANCH the base branch of the pull request. - Rebasing the pull-request changes to the nixos-unstable branch. + Rebasing the pull request changes to the nixos-unstable branch. @@ -190,10 +188,10 @@ $ git rebase --onto nixos-unstable BASEBRANCH FETCH_HEAD The nox tool can - be used to review a pull-request content in a single command. It doesn't + be used to review a pull request content in a single command. It doesn't rebase on a channel branch so it might trigger multiple source builds. PRNUMBER should be replaced by the number at the end - of the pull-request title. + of the pull request title. $ nix-shell -p nox --run "nox-review -k pr PRNUMBER" @@ -230,7 +228,7 @@ $ nix-shell -p nox --run "nox-review -k pr PRNUMBER" New packages - New packages are a common type of pull-requests. These pull requests + New packages are a common type of pull requests. These pull requests consists in adding a new nix-expression for a package. @@ -241,7 +239,7 @@ $ nix-shell -p nox --run "nox-review -k pr PRNUMBER" - Add labels to the pull-request. (Requires commit rights) + Add labels to the pull request. (Requires commit rights) @@ -279,7 +277,7 @@ $ nix-shell -p nox --run "nox-review -k pr PRNUMBER" - A maintainer must be set, this can be the package submitter or a + A maintainer must be set. This can be the package submitter or a community member that accepts to take maintainership of the package. @@ -361,7 +359,7 @@ $ nix-shell -p nox --run "nox-review -k pr PRNUMBER" - Add labels to the pull-request. (Requires commit rights) + Add labels to the pull request. (Requires commit rights) @@ -474,7 +472,7 @@ $ nix-shell -p nox --run "nox-review -k pr PRNUMBER" - Add labels to the pull-request. (Requires commit rights) + Add labels to the pull request. (Requires commit rights) @@ -576,7 +574,7 @@ $ nix-shell -p nox --run "nox-review -k pr PRNUMBER" like to be a long-term reviewer for related submissions, please contact the current reviewers for that topic. They will give you information about the reviewing process. The main reviewers for a topic can be hard to find as - there is no list, but checking past pull-requests to see who reviewed or + there is no list, but checking past pull requests to see who reviewed or git-blaming the code to see who committed to that topic can give some hints. @@ -586,7 +584,7 @@ $ nix-shell -p nox --run "nox-review -k pr PRNUMBER"
- Merging pull-requests + Merging pull requests It is possible for community members that have enough knowledge and @@ -607,11 +605,11 @@ policy. --> - In a case a contributor leaves definitively the Nix community, he should + In a case a contributor definitively leaves the Nix community, they should create an issue or post on Discourse with - references of packages and modules he maintains so the maintainership can be + references of packages and modules they maintain so the maintainership can be taken over by other contributors.
diff --git a/doc/stdenv.xml b/doc/stdenv.xml index cc0c13c5447..ac0d84b90f9 100644 --- a/doc/stdenv.xml +++ b/doc/stdenv.xml @@ -228,18 +228,19 @@ genericBuild
- The extension of PATH with dependencies, alluded to above, - proceeds according to the relative platforms alone. The process is carried - out only for dependencies whose host platform matches the new derivation's - build platform–i.e. which run on the platform where the new derivation - will be built. + The extension of PATH with dependencies, alluded to + above, proceeds according to the relative platforms alone. The + process is carried out only for dependencies whose host platform + matches the new derivation's build platform i.e. dependencies which + run on the platform where the new derivation will be built. - Currently, that means for native builds all dependencies are put on the - PATH. But in the future that may not be the case for sake - of matching cross: the platforms would be assumed to be unique for native - and cross builds alike, so only the depsBuild* and - nativeBuildDependencies dependencies would affect the + Currently, this means for native builds all dependencies are put + on the PATH. But in the future that may not be the + case for sake of matching cross: the platforms would be assumed + to be unique for native and cross builds alike, so only the + depsBuild* and + nativeBuildInputs would be added to the PATH. @@ -251,28 +252,27 @@ genericBuild The dependency is propagated when it forces some of its other-transitive (non-immediate) downstream dependencies to also take it on as an immediate - dependency. Nix itself already takes a package's transitive dependencies - into account, but this propagation ensures nixpkgs-specific infrastructure - like setup hooks (mentioned above) also are run as if the propagated - dependency. + dependency. Nix itself already takes a package's transitive dependencies into + account, but this propagation ensures nixpkgs-specific infrastructure like + setup hooks (mentioned above) also are run as if the propagated dependency. - It is important to note dependencies are not necessary propagated as the - same sort of dependency that they were before, but rather as the + It is important to note that dependencies are not necessarily propagated as + the same sort of dependency that they were before, but rather as the corresponding sort so that the platform rules still line up. The exact rules - for dependency propagation can be given by assigning each sort of dependency - two integers based one how it's host and target platforms are offset from - the depending derivation's platforms. Those offsets are given are given - below in the descriptions of each dependency list attribute. - Algorithmically, we traverse propagated inputs, accumulating every - propagated dep's propagated deps and adjusting them to account for the - "shift in perspective" described by the current dep's platform offsets. This - results in sort a transitive closure of the dependency relation, with the - offsets being approximately summed when two dependency links are combined. - We also prune transitive deps whose combined offsets go out-of-bounds, which - can be viewed as a filter over that transitive closure removing dependencies - that are blatantly absurd. + for dependency propagation can be given by assigning to each dependency two + integers based one how its host and target platforms are offset from the + depending derivation's platforms. Those offsets are given below in the + descriptions of each dependency list attribute. Algorithmically, we traverse + propagated inputs, accumulating every propagated dependency's propagated + dependencies and adjusting them to account for the "shift in perspective" + described by the current dependency's platform offsets. This results in sort + a transitive closure of the dependency relation, with the offsets being + approximately summed when two dependency links are combined. We also prune + transitive dependencies whose combined offsets go out-of-bounds, which can be + viewed as a filter over that transitive closure removing dependencies that + are blatantly absurd. @@ -287,8 +287,8 @@ genericBuild propagation logic. - They're confusing in very different ways so...hopefully if something doesn't - make sense in one presentation, it does in the other! + They're confusing in very different ways so... hopefully if something doesn't + make sense in one presentation, it will in the other! let mapOffset(h, t, i) = i + (if i <= 0 then h else t - 1) @@ -307,13 +307,13 @@ dep(h0, _, A, B) propagated-dep(h1, t1, B, C) h0 + h1 in {-1, 0, 1} h0 + t1 in {-1, 0, -1} --------------------------------------- Take immediate deps' propagated deps +----------------------------- Take immediate dependencies' propagated dependencies propagated-dep(mapOffset(h0, t0, h1), mapOffset(h0, t0, t1), A, C) propagated-dep(h, t, A, B) --------------------------------------- Propagated deps count as deps +----------------------------- Propagated dependencies count as dependencies dep(h, t, A, B) Some explanation of this monstrosity is in order. In the common case, the target offset of a dependency is the successor to the target offset: @@ -324,31 +324,31 @@ let f(h, h + 1, i) = i + (if i <= 0 then h else (h + 1) - 1) let f(h, h + 1, i) = i + (if i <= 0 then h else h) let f(h, h + 1, i) = i + h - This is where the "sum-like" comes from above: We can just sum all the host - offset to get the host offset of the transitive dependency. The target - offset is the transitive dep is simply the host offset + 1, just as it was - with the dependencies composed to make this transitive one; it can be + This is where "sum-like" comes in from above: We can just sum all of the host + offsets to get the host offset of the transitive dependency. The target + offset is the transitive dependency is simply the host offset + 1, just as it + was with the dependencies composed to make this transitive one; it can be ignored as it doesn't add any new information. - Because of the bounds checks, the uncommon cases are h = - t and h + 2 = t. In the former case, the - motivation for mapOffset is that since its host and - target platforms are the same, no transitive dep of it should be able to - "discover" an offset greater than its reduced target offsets. + Because of the bounds checks, the uncommon cases are h = t + and h + 2 = t. In the former case, the motivation for + mapOffset is that since its host and target platforms + are the same, no transitive dependency of it should be able to "discover" an + offset greater than its reduced target offsets. mapOffset effectively "squashes" all its transitive dependencies' offsets so that none will ever be greater than the target offset of the original h = t package. In the other case, - h + 1 is skipped over between the host and target - offsets. Instead of squashing the offsets, we need to "rip" them apart so no + h + 1 is skipped over between the host and target offsets. + Instead of squashing the offsets, we need to "rip" them apart so no transitive dependencies' offset is that one. - Overall, the unifying theme here is that propagation shouldn't be - introducing transitive dependencies involving platforms the needing package - is unaware of. The offset bounds checking and definition of + Overall, the unifying theme here is that propagation shouldn't be introducing + transitive dependencies involving platforms the depending package is unaware + of. The offset bounds checking and definition of mapOffset together ensure that this is the case. Discovering a new offset is discovering a new platform, and since those platforms weren't in the derivation "spec" of the needing package, they @@ -369,20 +369,20 @@ let f(h, h + 1, i) = i + h A list of dependencies whose host and target platforms are the new derivation's build platform. This means a -1 host and -1 target offset from the new derivation's platforms. - They are programs/libraries used at build time that furthermore produce - programs/libraries also used at build time. If the dependency doesn't - care about the target platform (i.e. isn't a compiler or similar tool), - put it in nativeBuildInputsinstead. The most common - use for this buildPackages.stdenv.cc, the default C - compiler for this role. That example crops up more than one might think - in old commonly used C libraries. + These are programs and libraries used at build time that produce programs + and libraries also used at build time. If the dependency doesn't care + about the target platform (i.e. isn't a compiler or similar tool), put it + in nativeBuildInputs instead. The most common use of + this buildPackages.stdenv.cc, the default C compiler + for this role. That example crops up more than one might think in old + commonly used C libraries. - Since these packages are able to be run at build time, that are always + Since these packages are able to be run at build-time, they are always added to the PATH, as described above. But since these packages are only guaranteed to be able to run then, they shouldn't - persist as run-time dependencies. This isn't currently enforced, but - could be in the future. + persist as run-time dependencies. This isn't currently enforced, but could + be in the future.
@@ -395,21 +395,20 @@ let f(h, h + 1, i) = i + h A list of dependencies whose host platform is the new derivation's build platform, and target platform is the new derivation's host platform. This means a -1 host offset and 0 target - offset from the new derivation's platforms. They are programs/libraries - used at build time that, if they are a compiler or similar tool, produce - code to run at run time—i.e. tools used to build the new derivation. If - the dependency doesn't care about the target platform (i.e. isn't a - compiler or similar tool), put it here, rather than in + offset from the new derivation's platforms. These are programs and + libraries used at build-time that, if they are a compiler or similar tool, + produce code to run at run-time—i.e. tools used to build the new + derivation. If the dependency doesn't care about the target platform (i.e. + isn't a compiler or similar tool), put it here, rather than in depsBuildBuild or depsBuildTarget. - This would be called depsBuildHost but for historical - continuity. + This could be called depsBuildHost but + nativeBuildInputs is used for historical continuity. - Since these packages are able to be run at build time, that are added to - the PATH, as described above. But since these packages - only are guaranteed to be able to run then, they shouldn't persist as - run-time dependencies. This isn't currently enforced, but could be in the - future. + Since these packages are able to be run at build-time, they are added to + the PATH, as described above. But since these packages are + only guaranteed to be able to run then, they shouldn't persist as run-time + dependencies. This isn't currently enforced, but could be in the future. @@ -422,34 +421,33 @@ let f(h, h + 1, i) = i + h A list of dependencies whose host platform is the new derivation's build platform, and target platform is the new derivation's target platform. This means a -1 host offset and 1 - target offset from the new derivation's platforms. They are programs used - at build time that produce code to run at run with code produced by the - depending package. Most commonly, these would tools used to build the - runtime or standard library the currently-being-built compiler will - inject into any code it compiles. In many cases, the currently-being - built compiler is itself employed for that task, but when that compiler - won't run (i.e. its build and host platform differ) this is not possible. - Other times, the compiler relies on some other tool, like binutils, that - is always built separately so the dependency is unconditional. + target offset from the new derivation's platforms. These are programs used + at build time that produce code to run with code produced by the depending + package. Most commonly, these are tools used to build the runtime or + standard library that the currently-being-built compiler will inject into + any code it compiles. In many cases, the currently-being-built-compiler is + itself employed for that task, but when that compiler won't run (i.e. its + build and host platform differ) this is not possible. Other times, the + compiler relies on some other tool, like binutils, that is always built + separately so that the dependency is unconditional. - This is a somewhat confusing dependency to wrap ones head around, and for - good reason. As the only one where the platform offsets are not adjacent - integers, it requires thinking of a bootstrapping stage - two away from the current one. It and it's use-case - go hand in hand and are both considered poor form: try not to need this - sort dependency, and try not avoid building standard libraries / runtimes + This is a somewhat confusing concept to wrap one’s head around, and for + good reason. As the only dependency type where the platform offsets are + not adjacent integers, it requires thinking of a bootstrapping stage + two away from the current one. It and its use-case go + hand in hand and are both considered poor form: try to not need this sort + of dependency, and try to avoid building standard libraries and runtimes in the same derivation as the compiler produces code using them. Instead strive to build those like a normal library, using the newly-built compiler just as a normal library would. In short, do not use this attribute unless you are packaging a compiler and are sure it is needed. - Since these packages are able to be run at build time, that are added to - the PATH, as described above. But since these packages - only are guaranteed to be able to run then, they shouldn't persist as - run-time dependencies. This isn't currently enforced, but could be in the - future. + Since these packages are able to run at build time, they are added to the + PATH, as described above. But since these packages are only + guaranteed to be able to run then, they shouldn't persist as run-time + dependencies. This isn't currently enforced, but could be in the future. @@ -460,15 +458,15 @@ let f(h, h + 1, i) = i + h A list of dependencies whose host and target platforms match the new - derivation's host platform. This means a both 0 host - offset and 0 target offset from the new derivation's - host platform. These are packages used at run-time to generate code also - used at run-time. In practice, that would usually be tools used by - compilers for metaprogramming/macro systems, or libraries used by the - macros/metaprogramming code itself. It's always preferable to use a - depsBuildBuild dependency in the derivation being - built than a depsHostHost on the tool doing the - building for this purpose. + derivation's host platform. This means a 0 host offset + and 0 target offset from the new derivation's host + platform. These are packages used at run-time to generate code also used + at run-time. In practice, this would usually be tools used by compilers + for macros or a metaprogramming system, or libraries used by the macros or + metaprogramming code itself. It's always preferable to use a + depsBuildBuild dependency in the derivation being built + over a depsHostHost on the tool doing the building for + this purpose. @@ -479,20 +477,20 @@ let f(h, h + 1, i) = i + h A list of dependencies whose host platform and target platform match the - new derivation's. This means a 0 host offset and + new derivation's. This means a 0 host offset and a 1 target offset from the new derivation's host platform. This would be called depsHostTarget but for historical continuity. If the dependency doesn't care about the target - platform (i.e. isn't a compiler or similar tool), put it here, rather - than in depsBuildBuild. + platform (i.e. isn't a compiler or similar tool), put it here, rather than + in depsBuildBuild. - These often are programs/libraries used by the new derivation at + These are often programs and libraries used by the new derivation at run-time, but that isn't always the case. For - example, the machine code in a statically linked library is only used at - run time, but the derivation containing the library is only needed at - build time. Even in the dynamic case, the library may also be needed at - build time to appease the linker. + example, the machine code in a statically-linked library is only used at + run-time, but the derivation containing the library is only needed at + build-time. Even in the dynamic case, the library may also be needed at + build-time to appease the linker. @@ -581,7 +579,7 @@ let f(h, h + 1, i) = i + h - depsTargetTarget + depsTargetTargetPropagated @@ -604,10 +602,10 @@ let f(h, h + 1, i) = i + h A natural number indicating how much information to log. If set to 1 or - higher, stdenv will print moderate debug information - during the build. In particular, the gcc and - ld wrapper scripts will print out the complete command - line passed to the wrapped tools. If set to 6 or higher, the + higher, stdenv will print moderate debugging + information during the build. In particular, the gcc + and ld wrapper scripts will print out the complete + command line passed to the wrapped tools. If set to 6 or higher, the stdenv setup script will be run with set -x tracing. If set to 7 or higher, the gcc and ld wrapper scripts will also be run with @@ -618,7 +616,7 @@ let f(h, h + 1, i) = i + h - Variables affecting build properties + Attributes affecting build properties enableParallelBuilding @@ -637,21 +635,6 @@ let f(h, h + 1, i) = i + h - - - preferLocalBuild - - - - If set, specifies that the package is so lightweight in terms of build - operations (e.g. write a text file from a Nix string to the store) that - there's no need to look for it in binary caches -- it's faster to just - build it locally. It also tells Hydra and other facilities that this - package doesn't need to be exported in binary caches (noone would use it, - after all). - - - @@ -681,11 +664,47 @@ passthru = { hello.baz.value1. We don't specify any usage or schema of passthru - it is meant for values that would be useful outside the derivation in other parts of a Nix expression (e.g. in - other derivations). An example would be to convey some specific - dependency of your derivation which contains a program with plugins - support. Later, others who make derivations with plugins can use - passed-through dependency to ensure that their plugin would be - binary-compatible with built program. + other derivations). An example would be to convey some specific dependency + of your derivation which contains a program with plugins support. Later, + others who make derivations with plugins can use passed-through dependency + to ensure that their plugin would be binary-compatible with built program. + + + + + + passthru.updateScript + + + + A script to be run by maintainers/scripts/update.nix when + the package is matched. It needs to be an executable file, either on the file + system: + +passthru.updateScript = ./update.sh; + + or inside the expression itself: + +passthru.updateScript = writeScript "update-zoom-us" '' + #!/usr/bin/env nix-shell + #!nix-shell -i bash -p curl pcre common-updater-scripts + + set -eu -o pipefail + + version="$(curl -sI https://zoom.us/client/latest/zoom_x86_64.tar.xz | grep -Fi 'Location:' | pcregrep -o1 '/(([0-9]\.?)+)/')" + update-source-version zoom-us "$version" +''; + + The attribute can also contain a list, a script followed by arguments to be passed to it: + +passthru.updateScript = [ ../../update.sh pname "--requested-release=unstable" ]; + + Note that the update scripts will be run in parallel by default; you should avoid running git commit or any other commands that cannot handle that. + + + + For information about how to run the updates, execute + nix-shell maintainers/scripts/update.nix. @@ -851,7 +870,7 @@ passthru = { Zip files are unpacked using unzip. However, unzip is not in the standard environment, so you - should add it to buildInputs yourself. + should add it to nativeBuildInputs yourself. @@ -1091,6 +1110,17 @@ passthru = { + + + prefixKey + + + + The key to use when specifying the prefix. By default, this is set to + as that is used by the majority of packages. + + + dontAddDisableDepTrack @@ -1148,12 +1178,11 @@ passthru = { By default, when cross compiling, the configure script has and passed. Packages can instead pass [ "build" "host" "target" ] - or a subset to control exactly which platform flags are passed. - Compilers and other tools should use this to also pass the target - platform, for example. + or a subset to control exactly which platform flags are passed. Compilers + and other tools can use this to also pass the target platform. - Eventually these will be passed when in native builds too, to improve + Eventually these will be passed building natively as well, to improve determinism: build-time guessing, as is done today, is a risk of impurity. @@ -1218,17 +1247,6 @@ passthru = { - - - checkInputs - - - - A list of dependencies used by the phase. This gets included in - buildInputs when doCheck is set. - - - makeFlags @@ -1261,7 +1279,9 @@ makeFlags = [ "PREFIX=$(out)" ]; make. You must use this instead of makeFlags if the arguments contain spaces, e.g. -makeFlagsArray=(CFLAGS="-O0 -g" LDFLAGS="-lfoo -lbar") +preBuild = '' + makeFlagsArray+=(CFLAGS="-O0 -g" LDFLAGS="-lfoo -lbar") +''; Note that shell arrays cannot be passed through environment variables, so you cannot set makeFlagsArray in a derivation @@ -1378,6 +1398,18 @@ makeFlagsArray=(CFLAGS="-O0 -g" LDFLAGS="-lfoo -lbar") + + + checkInputs + + + + A list of dependencies used by the phase. This gets included in + nativeBuildInputs when doCheck is + set. + + + preCheck @@ -1650,13 +1682,11 @@ installTargets = "install-bin install-doc"; - A package can export a setup - hook by setting this variable. The setup hook, if defined, is - copied to $out/nix-support/setup-hook. Environment - variables are then substituted in it using - substituteAll. + A package can export a setup hook + by setting this variable. The setup hook, if defined, is copied to + $out/nix-support/setup-hook. Environment variables + are then substituted in it using substituteAll. @@ -2089,40 +2119,39 @@ someVar=$(stripHash $name) Package setup hooks - Nix itself considers a build-time dependency merely something that should + Nix itself considers a build-time dependency as merely something that should previously be built and accessible at build time—packages themselves are on their own to perform any additional setup. In most cases, that is fine, - and the downstream derivation can deal with it's own dependencies. But for a + and the downstream derivation can deal with its own dependencies. But for a few common tasks, that would result in almost every package doing the same - sort of setup work---depending not on the package itself, but entirely on + sort of setup work—depending not on the package itself, but entirely on which dependencies were used. - In order to alleviate this burden, the setup - hook>mechanism was written, where any package can include a - shell script that [by convention rather than enforcement by Nix], any - downstream reverse-dependency will source as part of its build process. That - allows the downstream dependency to merely specify its dependencies, and - lets those dependencies effectively initialize themselves. No boilerplate - mirroring the list of dependencies is needed. + In order to alleviate this burden, the setup hook + mechanism was written, where any package can include a shell script that [by + convention rather than enforcement by Nix], any downstream + reverse-dependency will source as part of its build process. That allows the + downstream dependency to merely specify its dependencies, and lets those + dependencies effectively initialize themselves. No boilerplate mirroring the + list of dependencies is needed. - The Setup hook mechanism is a bit of a sledgehammer though: a powerful + The setup hook mechanism is a bit of a sledgehammer though: a powerful feature with a broad and indiscriminate area of effect. The combination of its power and implicit use may be expedient, but isn't without costs. Nix - itself is unchanged, but the spirit of adding dependencies being effect-free + itself is unchanged, but the spirit of added dependencies being effect-free is violated even if the letter isn't. For example, if a derivation path is mentioned more than once, Nix itself doesn't care and simply makes sure the dependency derivation is already built just the same—depending is just needing something to exist, and needing is idempotent. However, a dependency specified twice will have its setup hook run twice, and that could easily - change the build environment (though a well-written setup hook will - therefore strive to be idempotent so this is in fact not observable). More - broadly, setup hooks are anti-modular in that multiple dependencies, whether - the same or different, should not interfere and yet their setup hooks may - well do so. + change the build environment (though a well-written setup hook will therefore + strive to be idempotent so this is in fact not observable). More broadly, + setup hooks are anti-modular in that multiple dependencies, whether the same + or different, should not interfere and yet their setup hooks may well do so. @@ -2141,15 +2170,14 @@ someVar=$(stripHash $name) Packages adding a hook should not hard code a specific hook, but rather choose a variable relative to how they are included. - Returning to the C compiler wrapper example, if it itself is an + Returning to the C compiler wrapper example, if the wrapper itself is an n dependency, then it only wants to accumulate flags from n + 1 dependencies, as only those ones match the - compiler's target platform. The hostOffset variable is - defined with the current dependency's host offset - targetOffset with its target offset, before it's setup hook - is sourced. Additionally, since most environment hooks don't care about the - target platform, That means the setup hook can append to the right bash - array by doing something like + compiler's target platform. The hostOffset variable is defined + with the current dependency's host offset targetOffset with + its target offset, before its setup hook is sourced. Additionally, since most + environment hooks don't care about the target platform, that means the setup + hook can append to the right bash array by doing something like addEnvHooks "$hostOffset" myBashFunction @@ -2157,7 +2185,7 @@ addEnvHooks "$hostOffset" myBashFunction The existence of setups hooks has long been documented - and packages inside Nixpkgs are free to use these mechanism. Other packages, + and packages inside Nixpkgs are free to use this mechanism. Other packages, however, should not rely on these mechanisms not changing between Nixpkgs versions. Because of the existing issues with this system, there's little benefit from mandating it be stable for any period of time. @@ -2174,19 +2202,19 @@ addEnvHooks "$hostOffset" myBashFunction - Bintools Wrapper wraps the binary utilities for a bunch of miscellaneous - purposes. These are GNU Binutils when targetting Linux, and a mix of - cctools and GNU binutils for Darwin. [The "Bintools" name is supposed to - be a compromise between "Binutils" and "cctools" not denoting any - specific implementation.] Specifically, the underlying bintools package, - and a C standard library (glibc or Darwin's libSystem, just for the - dynamic loader) are all fed in, and dependency finding, hardening (see - below), and purity checks for each are handled by Bintools Wrapper. - Packages typically depend on CC Wrapper, which in turn (at run time) - depends on Bintools Wrapper. + The Bintools Wrapper wraps the binary utilities for a bunch of + miscellaneous purposes. These are GNU Binutils when targetting Linux, and + a mix of cctools and GNU binutils for Darwin. [The "Bintools" name is + supposed to be a compromise between "Binutils" and "cctools" not denoting + any specific implementation.] Specifically, the underlying bintools + package, and a C standard library (glibc or Darwin's libSystem, just for + the dynamic loader) are all fed in, and dependency finding, hardening + (see below), and purity checks for each are handled by the Bintools + Wrapper. Packages typically depend on CC Wrapper, which in turn (at run + time) depends on the Bintools Wrapper. - Bintools Wrapper was only just recently split off from CC Wrapper, so + The Bintools Wrapper was only just recently split off from CC Wrapper, so the division of labor is still being worked out. For example, it shouldn't care about about the C standard library, but just take a derivation with the dynamic loader (which happens to be the glibc on @@ -2194,24 +2222,24 @@ addEnvHooks "$hostOffset" myBashFunction to need to share, and probably the most important to understand. It is currently accomplished by collecting directories of host-platform dependencies (i.e. buildInputs and - nativeBuildInputs) in environment variables. Bintools - Wrapper's setup hook causes any lib and + nativeBuildInputs) in environment variables. The + Bintools Wrapper's setup hook causes any lib and lib64 subdirectories to be added to - NIX_LDFLAGS. Since CC Wrapper and Bintools Wrapper use - the same strategy, most of the Bintools Wrapper code is sparsely - commented and refers to CC Wrapper. But CC Wrapper's code, by contrast, - has quite lengthy comments. Bintools Wrapper merely cites those, rather - than repeating them, to avoid falling out of sync. + NIX_LDFLAGS. Since the CC Wrapper and the Bintools Wrapper + use the same strategy, most of the Bintools Wrapper code is sparsely + commented and refers to the CC Wrapper. But the CC Wrapper's code, by + contrast, has quite lengthy comments. The Bintools Wrapper merely cites + those, rather than repeating them, to avoid falling out of sync. A final task of the setup hook is defining a number of standard - environment variables to tell build systems which executables full-fill + environment variables to tell build systems which executables fulfill which purpose. They are defined to just be the base name of the tools, - under the assumption that Bintools Wrapper's binaries will be on the + under the assumption that the Bintools Wrapper's binaries will be on the path. Firstly, this helps poorly-written packages, e.g. ones that look for just gcc when CC isn't defined yet - clang is to be used. Secondly, this helps packages - not get confused when cross-compiling, in which case multiple Bintools + clang is to be used. Secondly, this helps packages not + get confused when cross-compiling, in which case multiple Bintools Wrappers may simultaneously be in use. @@ -2223,20 +2251,20 @@ addEnvHooks "$hostOffset" myBashFunction BUILD_- and TARGET_-prefixed versions of - the normal environment variable are defined for the additional Bintools + the normal environment variable are defined for additional Bintools Wrappers, properly disambiguating them. - A problem with this final task is that Bintools Wrapper is honest and + A problem with this final task is that the Bintools Wrapper is honest and defines LD as ld. Most packages, however, firstly use the C compiler for linking, secondly use LD anyways, defining it as the C compiler, and thirdly, - only so define LD when it is undefined as a fallback. - This triple-threat means Bintools Wrapper will break those packages, as - LD is already defined as the actual linker which the package won't - override yet doesn't want to use. The workaround is to define, just for - the problematic package, LD as the C compiler. A good way - to do this would be preConfigure = "LD=$CC". + only so define LD when it is undefined as a fallback. This + triple-threat means Bintools Wrapper will break those packages, as LD is + already defined as the actual linker which the package won't override yet + doesn't want to use. The workaround is to define, just for the + problematic package, LD as the C compiler. A good way to + do this would be preConfigure = "LD=$CC". @@ -2246,30 +2274,31 @@ addEnvHooks "$hostOffset" myBashFunction - CC Wrapper wraps a C toolchain for a bunch of miscellaneous purposes. + The CC Wrapper wraps a C toolchain for a bunch of miscellaneous purposes. Specifically, a C compiler (GCC or Clang), wrapped binary tools, and a C standard library (glibc or Darwin's libSystem, just for the dynamic loader) are all fed in, and dependency finding, hardening (see below), - and purity checks for each are handled by CC Wrapper. Packages typically - depend on CC Wrapper, which in turn (at run time) depends on Bintools - Wrapper. + and purity checks for each are handled by the CC Wrapper. Packages + typically depend on the CC Wrapper, which in turn (at run-time) depends + on the Bintools Wrapper. - Dependency finding is undoubtedly the main task of CC Wrapper. This - works just like Bintools Wrapper, except that any + Dependency finding is undoubtedly the main task of the CC Wrapper. This + works just like the Bintools Wrapper, except that any include subdirectory of any relevant dependency is added to NIX_CFLAGS_COMPILE. The setup hook itself contains some lengthy comments describing the exact convoluted mechanism by which this is accomplished. - CC Wrapper also like Bintools Wrapper defines standard environment - variables with the names of the tools it wraps, for the same reasons - described above. Importantly, while it includes a cc - symlink to the c compiler for portability, the CC will be - defined using the compiler's "real name" (i.e. gcc or - clang). This helps lousy build systems that inspect - on the name of the compiler rather than run it. + Similarly, the CC Wrapper follows the Bintools Wrapper in defining + standard environment variables with the names of the tools it wraps, for + the same reasons described above. Importantly, while it includes a + cc symlink to the c compiler for portability, the + CC will be defined using the compiler's "real name" (i.e. + gcc or clang). This helps lousy + build systems that inspect on the name of the compiler rather than run + it. @@ -2329,9 +2358,11 @@ addEnvHooks "$hostOffset" myBashFunction The autoreconfHook derivation adds - autoreconfPhase, which runs autoreconf, libtoolize - and automake, essentially preparing the configure script in - autotools-based builds. + autoreconfPhase, which runs autoreconf, libtoolize and + automake, essentially preparing the configure script in autotools-based + builds. Most autotools-based packages come with the configure script + pre-generated, but this hook is necessary for a few packages and when you + need to patch the package’s configure scripts. @@ -2375,9 +2406,9 @@ addEnvHooks "$hostOffset" myBashFunction - Exports GDK_PIXBUF_MODULE_FILE environment variable the - the builder. Add librsvg package to buildInputs to - get svg support. + Exports GDK_PIXBUF_MODULE_FILE environment variable to the + builder. Add librsvg package to buildInputs to get svg + support. @@ -2404,30 +2435,6 @@ addEnvHooks "$hostOffset" myBashFunction - - - paxctl - - - - Defines the paxmark helper for setting per-executable - PaX flags on Linux (where it is available by default; on all other - platforms, paxmark is a no-op). For example, to - disable secure memory protections on the executable - foo: - - postFixup = '' - paxmark m $out/bin/foo - ''; - - The m flag is the most common flag and is typically - required for applications that employ JIT compilation or otherwise need - to execute code generated at run-time. Disabling PaX protections should - be considered a last resort: if possible, problematic features should be - disabled or patched to work with PaX. - - - autoPatchelfHook @@ -2436,16 +2443,181 @@ addEnvHooks "$hostOffset" myBashFunction This is a special setup hook which helps in packaging proprietary software in that it automatically tries to find missing shared library - dependencies of ELF files. All packages within the - runtimeDependencies environment variable are - unconditionally added to executables, which is useful for programs that - use - dlopen - 3 to load libraries at runtime. + dependencies of ELF files based on the given + buildInputs and nativeBuildInputs. + + + You can also specify a runtimeDependencies environment + variable which lists dependencies that are unconditionally added to all + executables. + + + This is useful for programs that use + dlopen + 3 + to load libraries at runtime. + + + In certain situations you may want to run the main command + (autoPatchelf) of the setup hook on a file or a set + of directories instead of unconditionally patching all outputs. This + can be done by setting the dontAutoPatchelf environment + variable to a non-empty value. + + + The autoPatchelf command also recognizes a + --no-recurse command line flag, + which prevents it from recursing into subdirectories. - + + + breakpointHook + + + + This hook will make a build pause instead of stopping when a failure + happens. It prevents nix from cleaning up the build environment immediately and + allows the user to attach to a build environment using the + cntr command. Upon build error it will print + instructions on how to use cntr. Installing + cntr and running the command will provide shell access to the build + sandbox of failed build. At /var/lib/cntr the + sandboxed filesystem is mounted. All commands and files of the system are + still accessible within the shell. To execute commands from the sandbox + use the cntr exec subcommand. Note that cntr also + needs to be executed on the machine that is doing the build, which might + not be the case when remote builders are enabled. + cntr is only supported on Linux-based platforms. To + use it first add cntr to your + environment.systemPackages on NixOS or alternatively to + the root user on non-NixOS systems. Then in the package that is supposed + to be inspected, add breakpointHook to + nativeBuildInputs. + + nativeBuildInputs = [ breakpointHook ]; + + When a build failure happens there will be an instruction printed that + shows how to attach with cntr to the build sandbox. + + + + + + libiconv, libintl + + + + A few libraries automatically add to + NIX_LDFLAGS their library, making their + symbols automatically available to the linker. This includes + libiconv and libintl (gettext). This is done to provide + compatibility between GNU Linux, where libiconv and libintl + are bundled in, and other systems where that might not be the + case. Sometimes, this behavior is not desired. To disable + this behavior, set dontAddExtraLibs. + + + + + + cmake + + + + Overrides the default configure phase to run the CMake command. By + default, we use the Make generator of CMake. In + addition, dependencies are added automatically to CMAKE_PREFIX_PATH so + that packages are correctly detected by CMake. Some additional flags + are passed in to give similar behavior to configure-based packages. You + can disable this hook’s behavior by setting configurePhase to a custom + value, or by setting dontUseCmakeConfigure. cmakeFlags controls flags + passed only to CMake. By default, parallel building is enabled as CMake + supports parallel building almost everywhere. When Ninja is also in + use, CMake will detect that and use the ninja generator. + + + + + + xcbuildHook + + + + Overrides the build and install phases to run the “xcbuild” command. + This hook is needed when a project only comes with build files for the + XCode build system. You can disable this behavior by setting buildPhase + and configurePhase to a custom value. xcbuildFlags controls flags + passed only to xcbuild. + + + + + + meson + + + + Overrides the configure phase to run meson to generate Ninja files. You + can disable this behavior by setting configurePhase to a custom value, + or by setting dontUseMesonConfigure. To run these files, you should + accompany meson with ninja. mesonFlags controls only the flags passed + to meson. By default, parallel building is enabled as Meson supports + parallel building almost everywhere. + + + + + + ninja + + + + Overrides the build, install, and check phase to run ninja instead of + make. You can disable this behavior with the dontUseNinjaBuild, + dontUseNinjaInstall, and dontUseNinjaCheck, respectively. Parallel + building is enabled by default in Ninja. + + + + + + unzip + + + + This setup hook will allow you to unzip .zip files specified in $src. + There are many similar packages like unrar, undmg, etc. + + + + + + wafHook + + + + Overrides the configure, build, and install phases. This will run the + "waf" script used by many projects. If waf doesn’t exist, it will copy + the version of waf available in Nixpkgs wafFlags can be used to pass + flags to the waf script. + + + + + + scons + + + + Overrides the build, install, and check phases. This uses the scons + build system as a replacement for make. scons does not provide a + configure phase, so everything is managed at build and install time. + + + +
diff --git a/doc/style.css b/doc/style.css index 0db907815b6..474dd32e3fb 100644 --- a/doc/style.css +++ b/doc/style.css @@ -9,6 +9,7 @@ body { font-family: "Nimbus Sans L", sans-serif; + font-size: 1em; background: white; margin: 2em 1em 2em 1em; } @@ -28,6 +29,25 @@ h2 /* chapters, appendices, subtitle */ font-size: 180%; } +div.book +{ + text-align: center; +} + +div.book > div +{ + /* + * based on https://medium.com/@zkareemz/golden-ratio-62b3b6d4282a + * we do 70 characters per line to fit code listings better + * 70 * (font-size / 1.618) + * expression for emacs: + * (* 70 (/ 1 1.618)) + */ + max-width: 43.2em; + text-align: left; + margin: auto; +} + /* Extra space between chapters, appendices. */ div.chapter > div.titlepage h2, div.appendix > div.titlepage h2 { @@ -102,8 +122,8 @@ pre.screen, pre.programlisting { border: 1px solid #b0b0b0; padding: 3px 3px; - margin-left: 1.5em; - margin-right: 1.5em; + margin-left: 0.5em; + margin-right: 0.5em; background: #f4f4f8; font-family: monospace; diff --git a/lib/attrsets.nix b/lib/attrsets.nix index 2a1b866dbc5..d374d229f59 100644 --- a/lib/attrsets.nix +++ b/lib/attrsets.nix @@ -94,6 +94,15 @@ rec { attrValues = builtins.attrValues or (attrs: attrVals (attrNames attrs) attrs); + /* Given a set of attribute names, return the set of the corresponding + attributes from the given set. + + Example: + getAttrs [ "a" "b" ] { a = 1; b = 2; c = 3; } + => { a = 1; b = 2; } + */ + getAttrs = names: attrs: genAttrs names (name: attrs.${name}); + /* Collect each attribute named `attr' from a list of attribute sets. Sets that don't contain the named attribute are ignored. diff --git a/lib/composable-derivation.nix b/lib/composable-derivation.nix deleted file mode 100644 index cb1fdc121e1..00000000000 --- a/lib/composable-derivation.nix +++ /dev/null @@ -1,113 +0,0 @@ -{lib, pkgs}: -let inherit (lib) nvs; in -{ - - # composableDerivation basically mixes these features: - # - fix function - # - mergeAttrBy - # - provides shortcuts for "options" such as "--enable-foo" and adding - # buildInputs, see php example - # - # It predates styles which are common today, such as - # * the config attr - # * mkDerivation.override feature - # * overrideDerivation (lib/customization.nix) - # - # Some of the most more important usage examples (which could be rewritten if it was important): - # * php - # * postgis - # * vim_configurable - # - # A minimal example illustrating most features would look like this: - # let base = composableDerivation { (fixed: let inherit (fixed.fixed) name in { - # src = fetchurl { - # } - # buildInputs = [A]; - # preConfigre = "echo ${name}"; - # # attention, "name" attr is missing, thus you cannot instantiate "base". - # } - # in { - # # These all add name attribute, thus you can instantiate those: - # v1 = base.merge ({ name = "foo-add-B"; buildInputs = [B]; }); // B gets merged into buildInputs - # v2 = base.merge ({ name = "mix-in-pre-configure-lines" preConfigre = ""; }); - # v3 = base.replace ({ name = "foo-no-A-only-B;" buildInputs = [B]; }); - # } - # - # So yes, you can think about it being something like nixos modules, and - # you'd be merging "features" in one at a time using .merge or .replace - # Thanks Shea for telling me that I rethink the documentation .. - # - # issues: - # * its complicated to understand - # * some "features" such as exact merge behaviour are buried in mergeAttrBy - # and defaultOverridableDelayableArgs assuming the default behaviour does - # the right thing in the common case - # * Eelco once said using such fix style functions are slow to evaluate - # * Too quick & dirty. Hard to understand for others. The benefit was that - # you were able to create a kernel builder like base derivation and replace - # / add patches the way you want without having to declare function arguments - # - # nice features: - # declaring "optional features" is modular. For instance: - # flags.curl = { - # configureFlags = ["--with-curl=${curl.dev}" "--with-curlwrappers"]; - # buildInputs = [curl openssl]; - # }; - # flags.other = { .. } - # (Example taken from PHP) - # - # alternative styles / related features: - # * Eg see function supporting building the kernel - # * versionedDerivation (discussion about this is still going on - or ended) - # * composedArgsAndFun - # * mkDerivation.override - # * overrideDerivation - # * using { .., *Support ? false }: like configurable options. - # To find those examples use grep - # - # To sum up: It exists for historical reasons - and for most commonly used - # tasks the alternatives should be used - # - # If you have questions about this code ping Marc Weber. - composableDerivation = { - mkDerivation ? pkgs.stdenv.mkDerivation, - - # list of functions to be applied before defaultOverridableDelayableArgs removes removeAttrs names - # prepareDerivationArgs handles derivation configurations - applyPreTidy ? [ lib.prepareDerivationArgs ], - - # consider adding addtional elements by derivation.merge { removeAttrs = ["elem"]; }; - removeAttrs ? ["cfg" "flags"] - - }: (lib.defaultOverridableDelayableArgs ( a: mkDerivation a) - { - inherit applyPreTidy removeAttrs; - }).merge; - - # some utility functions - # use this function to generate flag attrs for prepareDerivationArgs - # E nable D isable F eature - edf = {name, feat ? name, enable ? {}, disable ? {} , value ? ""}: - nvs name { - set = { - configureFlags = ["--enable-${feat}${if value == "" then "" else "="}${value}"]; - } // enable; - unset = { - configureFlags = ["--disable-${feat}"]; - } // disable; - }; - - # same for --with and --without- - # W ith or W ithout F eature - wwf = {name, feat ? name, enable ? {}, disable ? {}, value ? ""}: - nvs name { - set = enable // { - configureFlags = ["--with-${feat}${if value == "" then "" else "="}${value}"] - ++ lib.maybeAttr "configureFlags" [] enable; - }; - unset = disable // { - configureFlags = ["--without-${feat}"] - ++ lib.maybeAttr "configureFlags" [] disable; - }; - }; -} diff --git a/lib/customisation.nix b/lib/customisation.nix index df9d977e9ec..68062dd0daf 100644 --- a/lib/customisation.nix +++ b/lib/customisation.nix @@ -196,7 +196,7 @@ rec { newScope = scope: newScope (self // scope); callPackage = self.newScope {}; overrideScope = g: lib.warn - "`overrideScope` (from `lib.makeScope`) is deprecated. Do `overrideScope' (self: self: { … })` instead of `overrideScope (super: self: { … })`. All other overrides have the parameters in that order, including other definitions of `overrideScope`. This was the only definition violating the pattern." + "`overrideScope` (from `lib.makeScope`) is deprecated. Do `overrideScope' (self: super: { … })` instead of `overrideScope (super: self: { … })`. All other overrides have the parameters in that order, including other definitions of `overrideScope`. This was the only definition violating the pattern." (makeScope newScope (lib.fixedPoints.extends (lib.flip g) f)); overrideScope' = g: makeScope newScope (lib.fixedPoints.extends g f); packages = f; diff --git a/lib/debug.nix b/lib/debug.nix index 383eb32d75d..2879f72ed2b 100644 --- a/lib/debug.nix +++ b/lib/debug.nix @@ -23,27 +23,54 @@ rec { # -- TRACING -- - /* Trace msg, but only if pred is true. + /* Conditionally trace the supplied message, based on a predicate. + + Type: traceIf :: bool -> string -> a -> a Example: traceIf true "hello" 3 trace: hello => 3 */ - traceIf = pred: msg: x: if pred then trace msg x else x; + traceIf = + # Predicate to check + pred: + # Message that should be traced + msg: + # Value to return + x: if pred then trace msg x else x; - /* Trace the value and also return it. + /* Trace the supplied value after applying a function to it, and + return the original value. + + Type: traceValFn :: (a -> b) -> a -> a Example: traceValFn (v: "mystring ${v}") "foo" trace: mystring foo => "foo" */ - traceValFn = f: x: trace (f x) x; + traceValFn = + # Function to apply + f: + # Value to trace and return + x: trace (f x) x; + + /* Trace the supplied value and return it. + + Type: traceVal :: a -> a + + Example: + traceVal 42 + # trace: 42 + => 42 + */ traceVal = traceValFn id; /* `builtins.trace`, but the value is `builtins.deepSeq`ed first. + Type: traceSeq :: a -> b -> b + Example: trace { a.b.c = 3; } null trace: { a = ; } @@ -52,7 +79,11 @@ rec { trace: { a = { b = { c = 3; }; }; } => null */ - traceSeq = x: y: trace (builtins.deepSeq x x) y; + traceSeq = + # The value to trace + x: + # The value to return + y: trace (builtins.deepSeq x x) y; /* Like `traceSeq`, but only evaluate down to depth n. This is very useful because lots of `traceSeq` usages @@ -76,27 +107,49 @@ rec { in trace (generators.toPretty { allowPrettyValues = true; } (modify depth snip x)) y; - /* A combination of `traceVal` and `traceSeq` */ - traceValSeqFn = f: v: traceValFn f (builtins.deepSeq v v); + /* A combination of `traceVal` and `traceSeq` that applies a + provided function to the value to be traced after `deepSeq`ing + it. + */ + traceValSeqFn = + # Function to apply + f: + # Value to trace + v: traceValFn f (builtins.deepSeq v v); + + /* A combination of `traceVal` and `traceSeq`. */ traceValSeq = traceValSeqFn id; + /* A combination of `traceVal` and `traceSeqN` that applies a + provided function to the value to be traced. */ + traceValSeqNFn = + # Function to apply + f: + depth: + # Value to trace + v: traceSeqN depth (f v) v; + /* A combination of `traceVal` and `traceSeqN`. */ - traceValSeqNFn = f: depth: v: traceSeqN depth (f v) v; traceValSeqN = traceValSeqNFn id; # -- TESTING -- - /* Evaluate a set of tests. A test is an attribute set {expr, - expected}, denoting an expression and its expected result. The - result is a list of failed tests, each represented as {name, - expected, actual}, denoting the attribute name of the failing - test and its expected and actual results. Used for regression - testing of the functions in lib; see tests.nix for an example. - Only tests having names starting with "test" are run. - Add attr { tests = ["testName"]; } to run these test only + /* Evaluate a set of tests. A test is an attribute set `{expr, + expected}`, denoting an expression and its expected result. The + result is a list of failed tests, each represented as `{name, + expected, actual}`, denoting the attribute name of the failing + test and its expected and actual results. + + Used for regression testing of the functions in lib; see + tests.nix for an example. Only tests having names starting with + "test" are run. + + Add attr { tests = ["testName"]; } to run these tests only. */ - runTests = tests: lib.concatLists (lib.attrValues (lib.mapAttrs (name: test: + runTests = + # Tests to run + tests: lib.concatLists (lib.attrValues (lib.mapAttrs (name: test: let testsToRun = if tests ? tests then tests.tests else []; in if (substring 0 4 name == "test" || elem name testsToRun) && ((testsToRun == []) || elem name tests.tests) @@ -105,8 +158,11 @@ rec { then [ { inherit name; expected = test.expected; result = test.expr; } ] else [] ) tests)); - # create a test assuming that list elements are true - # usage: { testX = allTrue [ true ]; } + /* Create a test assuming that list elements are `true`. + + Example: + { testX = allTrue [ true ]; } + */ testAllTrue = expr: { inherit expr; expected = map (x: true) expr; }; diff --git a/lib/default.nix b/lib/default.nix index d7a05fec833..d400907ebb0 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -61,10 +61,10 @@ let boolToString mergeAttrs flip mapNullable inNixShell min max importJSON warn info nixpkgsVersion version mod compare splitByAndCompare functionArgs setFunctionArgs isFunction; - inherit (fixedPoints) fix fix' extends composeExtensions + inherit (fixedPoints) fix fix' converge extends composeExtensions makeExtensible makeExtensibleWithCustomName; inherit (attrsets) attrByPath hasAttrByPath setAttrByPath - getAttrFromPath attrVals attrValues catAttrs filterAttrs + getAttrFromPath attrVals attrValues getAttrs catAttrs filterAttrs filterAttrsRecursive foldAttrs collect nameValuePair mapAttrs mapAttrs' mapAttrsToList mapAttrsRecursive mapAttrsRecursiveCond genAttrs isDerivation toDerivation optionalAttrs @@ -80,7 +80,7 @@ let inherit (strings) concatStrings concatMapStrings concatImapStrings intersperse concatStringsSep concatMapStringsSep concatImapStringsSep makeSearchPath makeSearchPathOutput - makeLibraryPath makeBinPath makePerlPath makeFullPerlPath optionalString + makeLibraryPath makeBinPath optionalString hasPrefix hasSuffix stringToCharacters stringAsChars escape escapeShellArg escapeShellArgs replaceChars lowerChars upperChars toLower toUpper addContextFrom splitString @@ -94,7 +94,7 @@ let callPackageWith callPackagesWith extendDerivation hydraJob makeScope; inherit (meta) addMetaAttrs dontDistribute setName updateName - appendToName mapDerivationAttrset lowPrio lowPrioSet hiPrio + appendToName mapDerivationAttrset setPrio lowPrio lowPrioSet hiPrio hiPrioSet; inherit (sources) pathType pathIsDirectory cleanSourceFilter cleanSource sourceByRegex sourceFilesBySuffices @@ -109,7 +109,7 @@ let mkFixStrictness mkOrder mkBefore mkAfter mkAliasDefinitions mkAliasAndWrapDefinitions fixMergeModules mkRemovedOptionModule mkRenamedOptionModule mkMergedOptionModule mkChangedOptionModule - mkAliasOptionModule doRename filterModules; + mkAliasOptionModule mkAliasOptionModuleWithPriority doRename filterModules; inherit (options) isOption mkEnableOption mkSinkUndeclaredOptions mergeDefaultOption mergeOneOption mergeEqualOption getValues getFiles optionAttrSetToDocList optionAttrSetToDocList' @@ -125,14 +125,14 @@ let traceShowValMarked showVal traceCall traceCall2 traceCall3 traceValIfNot runTests testAllTrue traceCallXml attrNamesToStr; inherit (misc) maybeEnv defaultMergeArg defaultMerge foldArgs - defaultOverridableDelayableArgs composedArgsAndFun maybeAttrNullable maybeAttr ifEnable checkFlag getValue checkReqs uniqList uniqListExt condConcat lazyGenericClosure innerModifySumArgs modifySumArgs innerClosePropagation closePropagation mapAttrsFlatten nvs setAttr setAttrMerge mergeAttrsWithFunc mergeAttrsConcatenateValues mergeAttrsNoOverride mergeAttrByFunc mergeAttrsByFuncDefaults - mergeAttrsByFuncDefaultsClean mergeAttrBy prepareDerivationArgs - nixType imap overridableDelayableArgs; + mergeAttrsByFuncDefaultsClean mergeAttrBy + fakeSha256 fakeSha512 + nixType imap; }); in lib diff --git a/lib/deprecated.nix b/lib/deprecated.nix index 34cf336d1f4..15de5045661 100644 --- a/lib/deprecated.nix +++ b/lib/deprecated.nix @@ -35,74 +35,6 @@ rec { withStdOverrides; - # predecessors: proposed replacement for applyAndFun (which has a bug cause it merges twice) - # the naming "overridableDelayableArgs" tries to express that you can - # - override attr values which have been supplied earlier - # - use attr values before they have been supplied by accessing the fix point - # name "fixed" - # f: the (delayed overridden) arguments are applied to this - # - # initial: initial attrs arguments and settings. see defaultOverridableDelayableArgs - # - # returns: f applied to the arguments // special attributes attrs - # a) merge: merge applied args with new args. Wether an argument is overridden depends on the merge settings - # b) replace: this let's you replace and remove names no matter which merge function has been set - # - # examples: see test cases "res" below; - overridableDelayableArgs = - f: # the function applied to the arguments - initial: # you pass attrs, the functions below are passing a function taking the fix argument - let - takeFixed = if lib.isFunction initial then initial else (fixed : initial); # transform initial to an expression always taking the fixed argument - tidy = args: - let # apply all functions given in "applyPreTidy" in sequence - applyPreTidyFun = fold ( n: a: x: n ( a x ) ) lib.id (maybeAttr "applyPreTidy" [] args); - in removeAttrs (applyPreTidyFun args) ( ["applyPreTidy"] ++ (maybeAttr "removeAttrs" [] args) ); # tidy up args before applying them - fun = n: x: - let newArgs = fixed: - let args = takeFixed fixed; - mergeFun = args.${n}; - in if isAttrs x then (mergeFun args x) - else assert lib.isFunction x; - mergeFun args (x ( args // { inherit fixed; })); - in overridableDelayableArgs f newArgs; - in - (f (tidy (lib.fix takeFixed))) // { - merge = fun "mergeFun"; - replace = fun "keepFun"; - }; - defaultOverridableDelayableArgs = f: - let defaults = { - mergeFun = mergeAttrByFunc; # default merge function. merge strategie (concatenate lists, strings) is given by mergeAttrBy - keepFun = a: b: { inherit (a) removeAttrs mergeFun keepFun mergeAttrBy; } // b; # even when using replace preserve these values - applyPreTidy = []; # list of functions applied to args before args are tidied up (usage case : prepareDerivationArgs) - mergeAttrBy = mergeAttrBy // { - applyPreTidy = a: b: a ++ b; - removeAttrs = a: b: a ++ b; - }; - removeAttrs = ["mergeFun" "keepFun" "mergeAttrBy" "removeAttrs" "fixed" ]; # before applying the arguments to the function make sure these names are gone - }; - in (overridableDelayableArgs f defaults).merge; - - - - # rec { # an example of how composedArgsAndFun can be used - # a = composedArgsAndFun (x: x) { a = ["2"]; meta = { d = "bar";}; }; - # # meta.d will be lost ! It's your task to preserve it (eg using a merge function) - # b = a.passthru.function { a = [ "3" ]; meta = { d2 = "bar2";}; }; - # # instead of passing/ overriding values you can use a merge function: - # c = b.passthru.function ( x: { a = x.a ++ ["4"]; }); # consider using (maybeAttr "a" [] x) - # } - # result: - # { - # a = { a = ["2"]; meta = { d = "bar"; }; passthru = { function = .. }; }; - # b = { a = ["3"]; meta = { d2 = "bar2"; }; passthru = { function = .. }; }; - # c = { a = ["3" "4"]; meta = { d2 = "bar2"; }; passthru = { function = .. }; }; - # # c2 is equal to c - # } - composedArgsAndFun = f: foldArgs defaultMerge f {}; - - # shortcut for attrByPath ["name"] default attrs maybeAttrNullable = maybeAttr; @@ -285,7 +217,7 @@ rec { # }; # will result in # { mergeAttrsBy = [...]; buildInputs = [ a b c d ]; } - # is used by prepareDerivationArgs, defaultOverridableDelayableArgs and can be used when composing using + # is used by defaultOverridableDelayableArgs and can be used when composing using # foldArgs, composedArgsAndFun or applyAndFun. Example: composableDerivation in all-packages.nix mergeAttrByFunc = x: y: let @@ -318,58 +250,6 @@ rec { // listToAttrs (map (n: nameValuePair n (a: b: "${a}\n${b}") ) [ "preConfigure" "postInstall" ]) ; - # prepareDerivationArgs tries to make writing configurable derivations easier - # example: - # prepareDerivationArgs { - # mergeAttrBy = { - # myScript = x: y: x ++ "\n" ++ y; - # }; - # cfg = { - # readlineSupport = true; - # }; - # flags = { - # readline = { - # set = { - # configureFlags = [ "--with-compiler=${compiler}" ]; - # buildInputs = [ compiler ]; - # pass = { inherit compiler; READLINE=1; }; - # assertion = compiler.dllSupport; - # myScript = "foo"; - # }; - # unset = { configureFlags = ["--without-compiler"]; }; - # }; - # }; - # src = ... - # buildPhase = '' ... ''; - # name = ... - # myScript = "bar"; - # }; - # if you don't have need for unset you can omit the surrounding set = { .. } attr - # all attrs except flags cfg and mergeAttrBy will be merged with the - # additional data from flags depending on config settings - # It's used in composableDerivation in all-packages.nix. It's also used - # heavily in the new python and libs implementation - # - # should we check for misspelled cfg options? - # TODO use args.mergeFun here as well? - prepareDerivationArgs = args: - let args2 = { cfg = {}; flags = {}; } // args; - flagName = name: "${name}Support"; - cfgWithDefaults = (listToAttrs (map (n: nameValuePair (flagName n) false) (attrNames args2.flags))) - // args2.cfg; - opts = attrValues (mapAttrs (a: v: - let v2 = if v ? set || v ? unset then v else { set = v; }; - n = if cfgWithDefaults.${flagName a} then "set" else "unset"; - attr = maybeAttr n {} v2; in - if (maybeAttr "assertion" true attr) - then attr - else throw "assertion of flag ${a} of derivation ${args.name} failed" - ) args2.flags ); - in removeAttrs - (mergeAttrsByFuncDefaults ([args] ++ opts ++ [{ passthru = cfgWithDefaults; }])) - ["flags" "cfg" "mergeAttrBy" ]; - - nixType = x: if isAttrs x then if x ? outPath then "derivation" @@ -390,4 +270,8 @@ rec { starting at zero. */ imap = imap1; + + # Fake hashes. Can be used as hash placeholders, when computing hash ahead isn't trivial + fakeSha256 = "0000000000000000000000000000000000000000000000000000000000000000"; + fakeSha512 = "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; } diff --git a/lib/fixed-points.nix b/lib/fixed-points.nix index 13e053b5aa7..2f818c88de5 100644 --- a/lib/fixed-points.nix +++ b/lib/fixed-points.nix @@ -24,6 +24,16 @@ rec { # for a concrete example. fix' = f: let x = f x // { __unfix__ = f; }; in x; + # Return the fixpoint that `f` converges to when called recursively, starting + # with the input `x`. + # + # nix-repl> converge (x: x / 2) 16 + # 0 + converge = f: x: + if (f x) == x + then x + else converge f (f x); + # Modify the contents of an explicitly recursive attribute set in a way that # honors `self`-references. This is accomplished with a function # @@ -41,6 +51,18 @@ rec { # think of it as an infix operator `g extends f` that mimics the syntax from # Java. It may seem counter-intuitive to have the "base class" as the second # argument, but it's nice this way if several uses of `extends` are cascaded. + # + # To get a better understanding how `extends` turns a function with a fix + # point (the package set we start with) into a new function with a different fix + # point (the desired packages set) lets just see, how `extends g f` + # unfolds with `g` and `f` defined above: + # + # extends g f = self: let super = f self; in super // g self super; + # = self: let super = { foo = "foo"; bar = "bar"; foobar = self.foo + self.bar; }; in super // g self super + # = self: { foo = "foo"; bar = "bar"; foobar = self.foo + self.bar; } // g self { foo = "foo"; bar = "bar"; foobar = self.foo + self.bar; } + # = self: { foo = "foo"; bar = "bar"; foobar = self.foo + self.bar; } // { foo = "foo" + " + "; } + # = self: { foo = "foo + "; bar = "bar"; foobar = self.foo + self.bar; } + # extends = f: rattrs: self: let super = rattrs self; in super // f self super; # Compose two extending functions of the type expected by 'extends' diff --git a/lib/generators.nix b/lib/generators.nix index f5faf700786..863ba847423 100644 --- a/lib/generators.nix +++ b/lib/generators.nix @@ -143,6 +143,7 @@ rec { }@args: v: with builtins; let isPath = v: typeOf v == "path"; in if isInt v then toString v + else if isFloat v then "~${toString v}" else if isString v then ''"${libStr.escape [''"''] v}"'' else if true == v then "true" else if false == v then "false" diff --git a/lib/licenses.nix b/lib/licenses.nix index c4db280645a..fc9cb42621d 100644 --- a/lib/licenses.nix +++ b/lib/licenses.nix @@ -13,6 +13,11 @@ lib.mapAttrs (n: v: v // { shortName = n; }) rec { * add it to this list. The URL mentioned above is a good source for inspiration. */ + abstyles = spdx { + spdxId = "Abstyles"; + fullName = "Abstyles License"; + }; + afl21 = spdx { spdxId = "AFL-2.1"; fullName = "Academic Free License v2.1"; @@ -24,13 +29,13 @@ lib.mapAttrs (n: v: v // { shortName = n; }) rec { }; agpl3 = spdx { - spdxId = "AGPL-3.0"; - fullName = "GNU Affero General Public License v3.0"; + spdxId = "AGPL-3.0-only"; + fullName = "GNU Affero General Public License v3.0 only"; }; - agpl3Plus = { + agpl3Plus = spdx { + spdxId = "AGPL-3.0-or-later"; fullName = "GNU Affero General Public License v3.0 or later"; - inherit (agpl3) url; }; amazonsl = { @@ -42,6 +47,7 @@ lib.mapAttrs (n: v: v // { shortName = n; }) rec { amd = { fullName = "AMD License Agreement"; url = http://developer.amd.com/amd-license-agreement/; + free = false; }; apsl20 = spdx { @@ -99,14 +105,10 @@ lib.mapAttrs (n: v: v // { shortName = n; }) rec { fullName = ''BSD 4-clause "Original" or "Old" License''; }; - bsl10 = { - fullName = "Business Source License 1.0"; - url = https://mariadb.com/bsl10; - }; - bsl11 = { fullName = "Business Source License 1.1"; url = https://mariadb.com/bsl11; + free = false; }; clArtistic = spdx { @@ -264,13 +266,23 @@ lib.mapAttrs (n: v: v // { shortName = n; }) rec { }; fdl12 = spdx { - spdxId = "GFDL-1.2"; - fullName = "GNU Free Documentation License v1.2"; + spdxId = "GFDL-1.2-only"; + fullName = "GNU Free Documentation License v1.2 only"; + }; + + fdl12Plus = spdx { + spdxId = "GFDL-1.2-or-later"; + fullName = "GNU Free Documentation License v1.2 or later"; }; fdl13 = spdx { - spdxId = "GFDL-1.3"; - fullName = "GNU Free Documentation License v1.3"; + spdxId = "GFDL-1.3-only"; + fullName = "GNU Free Documentation License v1.3 only"; + }; + + fdl13Plus = spdx { + spdxId = "GFDL-1.3-or-later"; + fullName = "GNU Free Documentation License v1.3 or later"; }; ffsl = { @@ -295,20 +307,25 @@ lib.mapAttrs (n: v: v // { shortName = n; }) rec { }; gpl1 = spdx { - spdxId = "GPL-1.0"; + spdxId = "GPL-1.0-only"; fullName = "GNU General Public License v1.0 only"; }; gpl1Plus = spdx { - spdxId = "GPL-1.0+"; + spdxId = "GPL-1.0-or-later"; fullName = "GNU General Public License v1.0 or later"; }; gpl2 = spdx { - spdxId = "GPL-2.0"; + spdxId = "GPL-2.0-only"; fullName = "GNU General Public License v2.0 only"; }; + gpl2Classpath = spdx { + spdxId = "GPL-2.0-with-classpath-exception"; + fullName = "GNU General Public License v2.0 only (with Classpath exception)"; + }; + gpl2ClasspathPlus = { fullName = "GNU General Public License v2.0 or later (with Classpath exception)"; url = https://fedoraproject.org/wiki/Licensing/GPL_Classpath_Exception; @@ -320,17 +337,17 @@ lib.mapAttrs (n: v: v // { shortName = n; }) rec { }; gpl2Plus = spdx { - spdxId = "GPL-2.0+"; + spdxId = "GPL-2.0-or-later"; fullName = "GNU General Public License v2.0 or later"; }; gpl3 = spdx { - spdxId = "GPL-3.0"; + spdxId = "GPL-3.0-only"; fullName = "GNU General Public License v3.0 only"; }; gpl3Plus = spdx { - spdxId = "GPL-3.0+"; + spdxId = "GPL-3.0-or-later"; fullName = "GNU General Public License v3.0 or later"; }; @@ -387,33 +404,45 @@ lib.mapAttrs (n: v: v // { shortName = n; }) rec { fullName = "ISC License"; }; + # 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; + free = false; + }; + + jasper = spdx { + spdxId = "JasPer-2.0"; + fullName = "JasPer License"; + }; + lgpl2 = spdx { - spdxId = "LGPL-2.0"; + spdxId = "LGPL-2.0-only"; fullName = "GNU Library General Public License v2 only"; }; lgpl2Plus = spdx { - spdxId = "LGPL-2.0+"; + spdxId = "LGPL-2.0-or-later"; fullName = "GNU Library General Public License v2 or later"; }; lgpl21 = spdx { - spdxId = "LGPL-2.1"; + spdxId = "LGPL-2.1-only"; fullName = "GNU Library General Public License v2.1 only"; }; lgpl21Plus = spdx { - spdxId = "LGPL-2.1+"; + spdxId = "LGPL-2.1-or-later"; fullName = "GNU Library General Public License v2.1 or later"; }; lgpl3 = spdx { - spdxId = "LGPL-3.0"; + spdxId = "LGPL-3.0-only"; fullName = "GNU Lesser General Public License v3.0 only"; }; lgpl3Plus = spdx { - spdxId = "LGPL-3.0+"; + spdxId = "LGPL-3.0-or-later"; fullName = "GNU Lesser General Public License v3.0 or later"; }; @@ -485,6 +514,12 @@ lib.mapAttrs (n: v: v // { shortName = n; }) rec { free = false; }; + nasa13 = spdx { + spdxId = "NASA-1.3"; + fullName = "NASA Open Source Agreement 1.3"; + free = false; + }; + ncsa = spdx { spdxId = "NCSA"; fullName = "University of Illinois/NCSA Open Source License"; @@ -500,6 +535,12 @@ lib.mapAttrs (n: v: v // { shortName = n; }) rec { fullName = "Non-Profit Open Software License 3.0"; }; + ocamlpro_nc = { + fullName = "OCamlPro Non Commercial license version 1"; + url = "https://alt-ergo.ocamlpro.com/http/alt-ergo-2.2.0/OCamlPro-Non-Commercial-License.pdf"; + free = false; + }; + ofl = spdx { spdxId = "OFL-1.1"; fullName = "SIL Open Font License 1.1"; @@ -571,6 +612,11 @@ lib.mapAttrs (n: v: v // { shortName = n; }) rec { fullName = "Ruby License"; }; + sendmail = spdx { + spdxId = "Sendmail"; + fullName = "Sendmail License"; + }; + sgi-b-20 = spdx { spdxId = "SGI-B-2.0"; fullName = "SGI Free Software License B v2.0"; @@ -660,7 +706,7 @@ lib.mapAttrs (n: v: v // { shortName = n; }) rec { }; wxWindows = spdx { - spdxId = "WXwindows"; + spdxId = "wxWindows"; fullName = "wxWindows Library Licence, Version 3.1"; }; diff --git a/lib/lists.nix b/lib/lists.nix index 9ecd8f22003..be541427c24 100644 --- a/lib/lists.nix +++ b/lib/lists.nix @@ -1,4 +1,5 @@ # General list operations. + { lib }: with lib.trivial; let @@ -8,21 +9,23 @@ rec { inherit (builtins) head tail length isList elemAt concatLists filter elem genList; - /* Create a list consisting of a single element. `singleton x' is - sometimes more convenient with respect to indentation than `[x]' + /* Create a list consisting of a single element. `singleton x` is + sometimes more convenient with respect to indentation than `[x]` when x spans multiple lines. + Type: singleton :: a -> [a] + Example: singleton "foo" => [ "foo" ] */ singleton = x: [x]; - /* “right fold” a binary function `op' between successive elements of - `list' with `nul' as the starting value, i.e., - `foldr op nul [x_1 x_2 ... x_n] == op x_1 (op x_2 ... (op x_n nul))'. - Type: - foldr :: (a -> b -> b) -> b -> [a] -> b + /* “right fold” a binary function `op` between successive elements of + `list` with `nul' as the starting value, i.e., + `foldr op nul [x_1 x_2 ... x_n] == op x_1 (op x_2 ... (op x_n nul))`. + + Type: foldr :: (a -> b -> b) -> b -> [a] -> b Example: concat = foldr (a: b: a + b) "z" @@ -42,16 +45,15 @@ rec { else op (elemAt list n) (fold' (n + 1)); in fold' 0; - /* `fold' is an alias of `foldr' for historic reasons */ + /* `fold` is an alias of `foldr` for historic reasons */ # FIXME(Profpatsch): deprecate? fold = foldr; - /* “left fold”, like `foldr', but from the left: + /* “left fold”, like `foldr`, but from the left: `foldl op nul [x_1 x_2 ... x_n] == op (... (op (op nul x_1) x_2) ... x_n)`. - Type: - foldl :: (b -> a -> b) -> b -> [a] -> b + Type: foldl :: (b -> a -> b) -> b -> [a] -> b Example: lconcat = foldl (a: b: a + b) "z" @@ -70,16 +72,20 @@ rec { else op (foldl' (n - 1)) (elemAt list n); in foldl' (length list - 1); - /* Strict version of `foldl'. + /* Strict version of `foldl`. The difference is that evaluation is forced upon access. Usually used with small whole results (in contract with lazily-generated list or large lists where only a part is consumed.) + + Type: foldl' :: (b -> a -> b) -> b -> [a] -> b */ foldl' = builtins.foldl' or foldl; /* Map with index starting from 0 + Type: imap0 :: (int -> a -> b) -> [a] -> [b] + Example: imap0 (i: v: "${v}-${toString i}") ["a" "b"] => [ "a-0" "b-1" ] @@ -88,6 +94,8 @@ rec { /* Map with index starting from 1 + Type: imap1 :: (int -> a -> b) -> [a] -> [b] + Example: imap1 (i: v: "${v}-${toString i}") ["a" "b"] => [ "a-1" "b-2" ] @@ -96,6 +104,8 @@ rec { /* Map and concatenate the result. + Type: concatMap :: (a -> [b]) -> [a] -> [b] + Example: concatMap (x: [x] ++ ["z"]) ["a" "b"] => [ "a" "z" "b" "z" ] @@ -118,15 +128,21 @@ rec { /* Remove elements equal to 'e' from a list. Useful for buildInputs. + Type: remove :: a -> [a] -> [a] + Example: remove 3 [ 1 3 4 3 ] => [ 1 4 ] */ - remove = e: filter (x: x != e); + remove = + # Element to remove from the list + e: filter (x: x != e); /* Find the sole element in the list matching the specified - predicate, returns `default' if no such element exists, or - `multiple' if there are multiple matching elements. + predicate, returns `default` if no such element exists, or + `multiple` if there are multiple matching elements. + + Type: findSingle :: (a -> bool) -> a -> a -> [a] -> a Example: findSingle (x: x == 3) "none" "multiple" [ 1 3 3 ] @@ -136,14 +152,24 @@ rec { findSingle (x: x == 3) "none" "multiple" [ 1 9 ] => "none" */ - findSingle = pred: default: multiple: list: + findSingle = + # Predicate + pred: + # Default value to return if element was not found. + default: + # Default value to return if more than one element was found + multiple: + # Input list + list: let found = filter pred list; len = length found; in if len == 0 then default else if len != 1 then multiple else head found; /* Find the first element in the list matching the specified - predicate or returns `default' if no such element exists. + predicate or return `default` if no such element exists. + + Type: findFirst :: (a -> bool) -> a -> [a] -> a Example: findFirst (x: x > 3) 7 [ 1 6 4 ] @@ -151,12 +177,20 @@ rec { findFirst (x: x > 9) 7 [ 1 6 4 ] => 7 */ - findFirst = pred: default: list: + findFirst = + # Predicate + pred: + # Default value to return + default: + # Input list + list: let found = filter pred list; in if found == [] then default else head found; - /* Return true iff function `pred' returns true for at least element - of `list'. + /* Return true if function `pred` returns true for at least one + element of `list`. + + Type: any :: (a -> bool) -> [a] -> bool Example: any isString [ 1 "a" { } ] @@ -166,8 +200,10 @@ rec { */ any = builtins.any or (pred: foldr (x: y: if pred x then true else y) false); - /* Return true iff function `pred' returns true for all elements of - `list'. + /* Return true if function `pred` returns true for all elements of + `list`. + + Type: all :: (a -> bool) -> [a] -> bool Example: all (x: x < 3) [ 1 2 ] @@ -177,19 +213,25 @@ rec { */ all = builtins.all or (pred: foldr (x: y: if pred x then y else false) true); - /* Count how many times function `pred' returns true for the elements - of `list'. + /* Count how many elements of `list` match the supplied predicate + function. + + Type: count :: (a -> bool) -> [a] -> int Example: count (x: x == 3) [ 3 2 3 4 6 ] => 2 */ - count = pred: foldl' (c: x: if pred x then c + 1 else c) 0; + count = + # Predicate + pred: foldl' (c: x: if pred x then c + 1 else c) 0; /* Return a singleton list or an empty list, depending on a boolean value. Useful when building lists with optional elements (e.g. `++ optional (system == "i686-linux") flashplayer'). + Type: optional :: bool -> a -> [a] + Example: optional true "foo" => [ "foo" ] @@ -200,13 +242,19 @@ rec { /* Return a list or an empty list, depending on a boolean value. + Type: optionals :: bool -> [a] -> [a] + Example: optionals true [ 2 3 ] => [ 2 3 ] optionals false [ 2 3 ] => [ ] */ - optionals = cond: elems: if cond then elems else []; + optionals = + # Condition + cond: + # List to return if condition is true + elems: if cond then elems else []; /* If argument is a list, return it; else, wrap it in a singleton @@ -223,20 +271,28 @@ rec { /* Return a list of integers from `first' up to and including `last'. + Type: range :: int -> int -> [int] + Example: range 2 4 => [ 2 3 4 ] range 3 2 => [ ] */ - range = first: last: + range = + # First integer in the range + first: + # Last integer in the range + last: if first > last then [] else genList (n: first + n) (last - first + 1); - /* Splits the elements of a list in two lists, `right' and - `wrong', depending on the evaluation of a predicate. + /* Splits the elements of a list in two lists, `right` and + `wrong`, depending on the evaluation of a predicate. + + Type: (a -> bool) -> [a] -> { right :: [a], wrong :: [a] } Example: partition (x: x > 2) [ 5 1 2 3 4 ] @@ -252,7 +308,7 @@ rec { /* Splits the elements of a list into many lists, using the return value of a predicate. Predicate should return a string which becomes keys of attrset `groupBy' returns. - `groupBy'' allows to customise the combining function and initial value + `groupBy'` allows to customise the combining function and initial value Example: groupBy (x: boolToString (x > 2)) [ 5 1 2 3 4 ] @@ -268,10 +324,6 @@ rec { xfce = [ { name = "xfce"; script = "xfce4-session &"; } ]; } - - groupBy' allows to customise the combining function and initial value - - Example: groupBy' builtins.add 0 (x: boolToString (x > 2)) [ 5 1 2 3 4 ] => { true = 12; false = 3; } */ @@ -289,17 +341,27 @@ rec { the merging stops at the shortest. How both lists are merged is defined by the first argument. + Type: zipListsWith :: (a -> b -> c) -> [a] -> [b] -> [c] + Example: zipListsWith (a: b: a + b) ["h" "l"] ["e" "o"] => ["he" "lo"] */ - zipListsWith = f: fst: snd: + zipListsWith = + # Function to zip elements of both lists + f: + # First list + fst: + # Second list + snd: genList (n: f (elemAt fst n) (elemAt snd n)) (min (length fst) (length snd)); /* Merges two lists of the same size together. If the sizes aren't the same the merging stops at the shortest. + Type: zipLists :: [a] -> [b] -> [{ fst :: a, snd :: b}] + Example: zipLists [ 1 2 ] [ "a" "b" ] => [ { fst = 1; snd = "a"; } { fst = 2; snd = "b"; } ] @@ -308,6 +370,8 @@ rec { /* Reverse the order of the elements of a list. + Type: reverseList :: [a] -> [a] + Example: reverseList [ "b" "o" "j" ] @@ -321,8 +385,7 @@ rec { `before a b == true` means that `b` depends on `a` (there's an edge from `b` to `a`). - Examples: - + Example: listDfs true hasPrefix [ "/home/user" "other" "/" "/home" ] == { minimal = "/"; # minimal element visited = [ "/home/user" ]; # seen elements (in reverse order) @@ -336,7 +399,6 @@ rec { rest = [ "/home" "other" ]; # everything else */ - listDfs = stopOnCycles: before: list: let dfs' = us: visited: rest: @@ -361,7 +423,7 @@ rec { `before a b == true` means that `b` should be after `a` in the result. - Examples: + Example: toposort hasPrefix [ "/home/user" "other" "/" "/home" ] == { result = [ "/" "/home" "/home/user" "other" ]; } @@ -376,7 +438,6 @@ rec { toposort (a: b: a < b) [ 3 2 1 ] == { result = [ 1 2 3 ]; } */ - toposort = before: list: let dfsthis = listDfs true before list; @@ -467,26 +528,38 @@ rec { /* Return the first (at most) N elements of a list. + Type: take :: int -> [a] -> [a] + Example: take 2 [ "a" "b" "c" "d" ] => [ "a" "b" ] take 2 [ ] => [ ] */ - take = count: sublist 0 count; + take = + # Number of elements to take + count: sublist 0 count; /* Remove the first (at most) N elements of a list. + Type: drop :: int -> [a] -> [a] + Example: drop 2 [ "a" "b" "c" "d" ] => [ "c" "d" ] drop 2 [ ] => [ ] */ - drop = count: list: sublist count (length list) list; + drop = + # Number of elements to drop + count: + # Input list + list: sublist count (length list) list; - /* Return a list consisting of at most ‘count’ elements of ‘list’, - starting at index ‘start’. + /* Return a list consisting of at most `count` elements of `list`, + starting at index `start`. + + Type: sublist :: int -> int -> [a] -> [a] Example: sublist 1 3 [ "a" "b" "c" "d" "e" ] @@ -494,7 +567,13 @@ rec { sublist 1 3 [ ] => [ ] */ - sublist = start: count: list: + sublist = + # Index at which to start the sublist + start: + # Number of elements to take + count: + # Input list + list: let len = length list; in genList (n: elemAt list (n + start)) @@ -504,6 +583,10 @@ rec { /* Return the last element of a list. + This function throws an error if the list is empty. + + Type: last :: [a] -> a + Example: last [ 1 2 3 ] => 3 @@ -512,7 +595,11 @@ rec { assert lib.assertMsg (list != []) "lists.last: list must not be empty!"; elemAt list (length list - 1); - /* Return all elements but the last + /* Return all elements but the last. + + This function throws an error if the list is empty. + + Type: init :: [a] -> [a] Example: init [ 1 2 3 ] @@ -523,7 +610,7 @@ rec { take (length list - 1) list; - /* return the image of the cross product of some lists by a function + /* Return the image of the cross product of some lists by a function. Example: crossLists (x:y: "${toString x}${toString y}") [[1 2] [3 4]] @@ -534,8 +621,9 @@ rec { /* Remove duplicate elements from the list. O(n^2) complexity. - Example: + Type: unique :: [a] -> [a] + Example: unique [ 3 2 3 4 ] => [ 3 2 4 ] */ diff --git a/lib/meta.nix b/lib/meta.nix index 199030c103a..2e83c4247dd 100644 --- a/lib/meta.nix +++ b/lib/meta.nix @@ -41,16 +41,18 @@ rec { let x = builtins.parseDrvName name; in "${x.name}-${suffix}-${x.version}"); - /* Apply a function to each derivation and only to derivations in an attrset + /* Apply a function to each derivation and only to derivations in an attrset. */ mapDerivationAttrset = f: set: lib.mapAttrs (name: pkg: if lib.isDerivation pkg then (f pkg) else pkg) set; + /* Set the nix-env priority of the package. + */ + setPrio = priority: addMetaAttrs { inherit priority; }; /* Decrease the nix-env priority of the package, i.e., other versions/variants of the package will be preferred. */ - lowPrio = drv: addMetaAttrs { priority = 10; } drv; - + lowPrio = setPrio 10; /* Apply lowPrio to an attrset with derivations */ @@ -60,8 +62,7 @@ rec { /* Increase the nix-env priority of the package, i.e., this version/variant of the package will be preferred. */ - hiPrio = drv: addMetaAttrs { priority = -10; } drv; - + hiPrio = setPrio (-10); /* Apply hiPrio to an attrset with derivations */ diff --git a/lib/modules.nix b/lib/modules.nix index 5fb83a4a538..9f8e196ee0f 100644 --- a/lib/modules.nix +++ b/lib/modules.nix @@ -450,8 +450,7 @@ rec { filterOverrides' = defs: let - defaultPrio = 100; - getPrio = def: if def.value._type or "" == "override" then def.value.priority else defaultPrio; + getPrio = def: if def.value._type or "" == "override" then def.value.priority else defaultPriority; highestPrio = foldl' (prio: def: min (getPrio def) prio) 9999 defs; strip = def: if def.value._type or "" == "override" then def // { value = def.value.content; } else def; in { @@ -534,6 +533,8 @@ rec { mkBefore = mkOrder 500; mkAfter = mkOrder 1500; + # The default priority for things that don't have a priority specified. + defaultPriority = 100; # Convenient property used to transfer all definitions and their # properties from one option to another. This property is useful for @@ -556,8 +557,20 @@ rec { # mkAliasDefinitions = mkAliasAndWrapDefinitions id; mkAliasAndWrapDefinitions = wrap: option: - mkIf (isOption option && option.isDefined) (wrap (mkMerge option.definitions)); + mkAliasIfDef option (wrap (mkMerge option.definitions)); + # Similar to mkAliasAndWrapDefinitions but copies over the priority from the + # option as well. + # + # If a priority is not set, it assumes a priority of defaultPriority. + mkAliasAndWrapDefsWithPriority = wrap: option: + let + prio = option.highestPrio or defaultPriority; + defsWithPrio = map (mkOverride prio) option.definitions; + in mkAliasIfDef option (wrap (mkMerge defsWithPrio)); + + mkAliasIfDef = option: + mkIf (isOption option && option.isDefined); /* Compatibility. */ fixMergeModules = modules: args: evalModules { inherit modules args; check = false; }; @@ -690,7 +703,16 @@ rec { use = id; }; - doRename = { from, to, visible, warn, use }: + /* Like ‘mkAliasOptionModule’, but copy over the priority of the option as well. */ + mkAliasOptionModuleWithPriority = from: to: doRename { + inherit from to; + visible = true; + warn = false; + use = id; + withPriority = true; + }; + + doRename = { from, to, visible, warn, use, withPriority ? false }: { config, options, ... }: let fromOpt = getAttrFromPath from options; @@ -708,7 +730,9 @@ rec { warnings = optional (warn && fromOpt.isDefined) "The option `${showOption from}' defined in ${showFiles fromOpt.files} has been renamed to `${showOption to}'."; } - (mkAliasAndWrapDefinitions (setAttrByPath to) fromOpt) + (if withPriority + then mkAliasAndWrapDefsWithPriority (setAttrByPath to) fromOpt + else mkAliasAndWrapDefinitions (setAttrByPath to) fromOpt) ]; }; diff --git a/lib/options.nix b/lib/options.nix index 0e342117530..791930eafbd 100644 --- a/lib/options.nix +++ b/lib/options.nix @@ -8,61 +8,72 @@ with lib.strings; rec { - # Returns true when the given argument is an option - # - # Examples: - # isOption 1 // => false - # isOption (mkOption {}) // => true + /* Returns true when the given argument is an option + + Type: isOption :: a -> bool + + Example: + isOption 1 // => false + isOption (mkOption {}) // => true + */ isOption = lib.isType "option"; - # Creates an Option attribute set. mkOption accepts an attribute set with the following keys: - # - # default: Default value used when no definition is given in the configuration. - # defaultText: Textual representation of the default, for in the manual. - # example: Example value used in the manual. - # description: String describing the option. - # type: Option type, providing type-checking and value merging. - # apply: Function that converts the option value to something else. - # internal: Whether the option is for NixOS developers only. - # visible: Whether the option shows up in the manual. - # readOnly: Whether the option can be set only once - # options: Obsolete, used by types.optionSet. - # - # All keys default to `null` when not given. - # - # Examples: - # mkOption { } // => { _type = "option"; } - # mkOption { defaultText = "foo"; } // => { _type = "option"; defaultText = "foo"; } + /* Creates an Option attribute set. mkOption accepts an attribute set with the following keys: + + All keys default to `null` when not given. + + Example: + mkOption { } // => { _type = "option"; } + mkOption { defaultText = "foo"; } // => { _type = "option"; defaultText = "foo"; } + */ mkOption = - { default ? null # Default value used when no definition is given in the configuration. - , defaultText ? null # Textual representation of the default, for in the manual. - , example ? null # Example value used in the manual. - , description ? null # String describing the option. - , relatedPackages ? null # Related packages used in the manual (see `genRelatedPackages` in ../nixos/doc/manual/default.nix). - , type ? null # Option type, providing type-checking and value merging. - , apply ? null # Function that converts the option value to something else. - , internal ? null # Whether the option is for NixOS developers only. - , visible ? null # Whether the option shows up in the manual. - , readOnly ? null # Whether the option can be set only once - , options ? null # Obsolete, used by types.optionSet. + { + # Default value used when no definition is given in the configuration. + default ? null, + # Textual representation of the default, for the manual. + defaultText ? null, + # Example value used in the manual. + example ? null, + # String describing the option. + description ? null, + # Related packages used in the manual (see `genRelatedPackages` in ../nixos/doc/manual/default.nix). + relatedPackages ? null, + # Option type, providing type-checking and value merging. + type ? null, + # Function that converts the option value to something else. + apply ? null, + # Whether the option is for NixOS developers only. + internal ? null, + # Whether the option shows up in the manual. + visible ? null, + # Whether the option can be set only once + readOnly ? null, + # Obsolete, used by types.optionSet. + options ? null } @ attrs: attrs // { _type = "option"; }; - # Creates a Option attribute set for a boolean value option i.e an option to be toggled on or off: - # - # Examples: - # mkEnableOption "foo" // => { _type = "option"; default = false; description = "Whether to enable foo."; example = true; type = { ... }; } - mkEnableOption = name: mkOption { + /* Creates an Option attribute set for a boolean value option i.e an + option to be toggled on or off: + + Example: + mkEnableOption "foo" + => { _type = "option"; default = false; description = "Whether to enable foo."; example = true; type = { ... }; } + */ + mkEnableOption = + # Name for the created option + name: mkOption { default = false; example = true; description = "Whether to enable ${name}."; type = lib.types.bool; }; - # This option accept anything, but it does not produce any result. This - # is useful for sharing a module across different module sets without - # having to implement similar features as long as the value of the options - # are not expected. + /* This option accepts anything, but it does not produce any result. + + This is useful for sharing a module across different module sets + without having to implement similar features as long as the + values of the options are not accessed. */ mkSinkUndeclaredOptions = attrs: mkOption ({ internal = true; visible = false; @@ -102,18 +113,24 @@ rec { else val) (head defs).value defs; - # Extracts values of all "value" keys of the given list - # - # Examples: - # getValues [ { value = 1; } { value = 2; } ] // => [ 1 2 ] - # getValues [ ] // => [ ] + /* Extracts values of all "value" keys of the given list. + + Type: getValues :: [ { value :: a } ] -> [a] + + Example: + getValues [ { value = 1; } { value = 2; } ] // => [ 1 2 ] + getValues [ ] // => [ ] + */ getValues = map (x: x.value); - # Extracts values of all "file" keys of the given list - # - # Examples: - # getFiles [ { file = "file1"; } { file = "file2"; } ] // => [ "file1" "file2" ] - # getFiles [ ] // => [ ] + /* Extracts values of all "file" keys of the given list + + Type: getFiles :: [ { file :: a } ] -> [a] + + Example: + getFiles [ { file = "file1"; } { file = "file2"; } ] // => [ "file1" "file2" ] + getFiles [ ] // => [ ] + */ getFiles = map (x: x.file); # Generate documentation template from the list of option declaration like @@ -146,10 +163,13 @@ rec { /* This function recursively removes all derivation attributes from - `x' except for the `name' attribute. This is to make the - generation of `options.xml' much more efficient: the XML - representation of derivations is very large (on the order of - megabytes) and is not actually used by the manual generator. */ + `x` except for the `name` attribute. + + This is to make the generation of `options.xml` much more + efficient: the XML representation of derivations is very large + (on the order of megabytes) and is not actually used by the + manual generator. + */ scrubOptionValue = x: if isDerivation x then { type = "derivation"; drvPath = x.name; outPath = x.name; name = x.name; } @@ -158,20 +178,21 @@ rec { else x; - /* For use in the ‘example’ option attribute. It causes the given - text to be included verbatim in documentation. This is necessary - for example values that are not simple values, e.g., - functions. */ + /* For use in the `example` option attribute. It causes the given + text to be included verbatim in documentation. This is necessary + for example values that are not simple values, e.g., functions. + */ literalExample = text: { _type = "literalExample"; inherit text; }; + # Helper functions. - /* Helper functions. */ + /* Convert an option, described as a list of the option parts in to a + safe, human readable version. - # Convert an option, described as a list of the option parts in to a - # safe, human readable version. ie: - # - # (showOption ["foo" "bar" "baz"]) == "foo.bar.baz" - # (showOption ["foo" "bar.baz" "tux"]) == "foo.\"bar.baz\".tux" + Example: + (showOption ["foo" "bar" "baz"]) == "foo.bar.baz" + (showOption ["foo" "bar.baz" "tux"]) == "foo.\"bar.baz\".tux" + */ showOption = parts: let escapeOptionPart = part: let diff --git a/lib/sources.nix b/lib/sources.nix index e64b23414e8..1a9f3f7d1f3 100644 --- a/lib/sources.nix +++ b/lib/sources.nix @@ -73,7 +73,7 @@ rec { # Get the commit id of a git repo # Example: commitIdFromGitRepo commitIdFromGitRepo = - let readCommitFromFile = path: file: + let readCommitFromFile = file: path: with builtins; let fileName = toString path + "/" + file; packedRefsName = toString path + "/packed-refs"; @@ -85,7 +85,7 @@ rec { matchRef = match "^ref: (.*)$" fileContent; in if isNull matchRef then fileContent - else readCommitFromFile path (lib.head matchRef) + else readCommitFromFile (lib.head matchRef) path # 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 @@ -96,7 +96,7 @@ rec { then throw ("Could not find " + file + " in " + packedRefsName) else lib.head matchRef else throw ("Not a .git directory: " + path); - in lib.flip readCommitFromFile "HEAD"; + in readCommitFromFile "HEAD"; pathHasContext = builtins.hasContext or (lib.hasPrefix builtins.storeDir); diff --git a/lib/strings.nix b/lib/strings.nix index 0c4095bb55c..47c881cfbc7 100644 --- a/lib/strings.nix +++ b/lib/strings.nix @@ -12,6 +12,8 @@ rec { /* Concatenate a list of strings. + Type: concatStrings :: [string] -> string + Example: concatStrings ["foo" "bar"] => "foobar" @@ -20,15 +22,19 @@ rec { /* Map a function over a list and concatenate the resulting strings. + Type: concatMapStrings :: (a -> string) -> [a] -> string + Example: concatMapStrings (x: "a" + x) ["foo" "bar"] => "afooabar" */ concatMapStrings = f: list: concatStrings (map f list); - /* Like `concatMapStrings' except that the f functions also gets the + /* Like `concatMapStrings` except that the f functions also gets the position as a parameter. + Type: concatImapStrings :: (int -> a -> string) -> [a] -> string + Example: concatImapStrings (pos: x: "${toString pos}-${x}") ["foo" "bar"] => "1-foo2-bar" @@ -37,17 +43,25 @@ rec { /* Place an element between each element of a list + Type: intersperse :: a -> [a] -> [a] + Example: intersperse "/" ["usr" "local" "bin"] => ["usr" "/" "local" "/" "bin"]. */ - intersperse = separator: list: + intersperse = + # Separator to add between elements + separator: + # Input list + list: if list == [] || length list == 1 then list else tail (lib.concatMap (x: [separator x]) list); /* Concatenate a list of strings with a separator between each element + Type: concatStringsSep :: string -> [string] -> string + Example: concatStringsSep "/" ["usr" "local" "bin"] => "usr/local/bin" @@ -55,43 +69,77 @@ rec { concatStringsSep = builtins.concatStringsSep or (separator: list: concatStrings (intersperse separator list)); - /* First maps over the list and then concatenates it. + /* Maps a function over a list of strings and then concatenates the + result with the specified separator interspersed between + elements. + + Type: concatMapStringsSep :: string -> (string -> string) -> [string] -> string Example: concatMapStringsSep "-" (x: toUpper x) ["foo" "bar" "baz"] => "FOO-BAR-BAZ" */ - concatMapStringsSep = sep: f: list: concatStringsSep sep (map f list); + concatMapStringsSep = + # Separator to add between elements + sep: + # Function to map over the list + f: + # List of input strings + list: concatStringsSep sep (map f list); - /* First imaps over the list and then concatenates it. + /* Same as `concatMapStringsSep`, but the mapping function + additionally receives the position of its argument. + + Type: concatMapStringsSep :: string -> (int -> string -> string) -> [string] -> string Example: - concatImapStringsSep "-" (pos: x: toString (x / pos)) [ 6 6 6 ] => "6-3-2" */ - concatImapStringsSep = sep: f: list: concatStringsSep sep (lib.imap1 f list); + concatImapStringsSep = + # Separator to add between elements + sep: + # Function that receives elements and their positions + f: + # List of input strings + list: concatStringsSep sep (lib.imap1 f list); - /* Construct a Unix-style search path consisting of each `subDir" - directory of the given list of packages. + /* Construct a Unix-style, colon-separated search path consisting of + the given `subDir` appended to each of the given paths. + + Type: makeSearchPath :: string -> [string] -> string Example: makeSearchPath "bin" ["/root" "/usr" "/usr/local"] => "/root/bin:/usr/bin:/usr/local/bin" - makeSearchPath "bin" ["/"] - => "//bin" + makeSearchPath "bin" [""] + => "/bin" */ - makeSearchPath = subDir: packages: - concatStringsSep ":" (map (path: path + "/" + subDir) (builtins.filter (x: x != null) packages)); + makeSearchPath = + # Directory name to append + subDir: + # List of base paths + paths: + concatStringsSep ":" (map (path: path + "/" + subDir) (builtins.filter (x: x != null) paths)); - /* Construct a Unix-style search path, using given package output. - If no output is found, fallback to `.out` and then to the default. + /* Construct a Unix-style search path by appending the given + `subDir` to the specified `output` of each of the packages. If no + output by the given name is found, fallback to `.out` and then to + the default. + + Type: string -> string -> [package] -> string Example: makeSearchPathOutput "dev" "bin" [ pkgs.openssl pkgs.zlib ] => "/nix/store/9rz8gxhzf8sw4kf2j2f1grr49w8zx5vj-openssl-1.0.1r-dev/bin:/nix/store/wwh7mhwh269sfjkm6k5665b5kgp7jrk2-zlib-1.2.8/bin" */ - makeSearchPathOutput = output: subDir: pkgs: makeSearchPath subDir (map (lib.getOutput output) pkgs); + makeSearchPathOutput = + # Package output to use + output: + # Directory name to append + subDir: + # List of packages + pkgs: makeSearchPath subDir (map (lib.getOutput output) pkgs); /* Construct a library search path (such as RPATH) containing the libraries for a set of packages @@ -114,64 +162,80 @@ rec { */ makeBinPath = makeSearchPathOutput "bin" "bin"; - - /* Construct a perl search path (such as $PERL5LIB) - - FIXME(zimbatm): this should be moved in perl-specific code - - Example: - pkgs = import { } - makePerlPath [ pkgs.perlPackages.libnet ] - => "/nix/store/n0m1fk9c960d8wlrs62sncnadygqqc6y-perl-Net-SMTP-1.25/lib/perl5/site_perl" - */ - makePerlPath = makeSearchPathOutput "lib" "lib/perl5/site_perl"; - - /* Construct a perl search path recursively including all dependencies (such as $PERL5LIB) - - Example: - pkgs = import { } - makeFullPerlPath [ pkgs.perlPackages.CGI ] - => "/nix/store/fddivfrdc1xql02h9q500fpnqy12c74n-perl-CGI-4.38/lib/perl5/site_perl:/nix/store/8hsvdalmsxqkjg0c5ifigpf31vc4vsy2-perl-HTML-Parser-3.72/lib/perl5/site_perl:/nix/store/zhc7wh0xl8hz3y3f71nhlw1559iyvzld-perl-HTML-Tagset-3.20/lib/perl5/site_perl" - */ - makeFullPerlPath = deps: makePerlPath (lib.misc.closePropagation deps); - /* Depending on the boolean `cond', return either the given string or the empty string. Useful to concatenate against a bigger string. + Type: optionalString :: bool -> string -> string + Example: optionalString true "some-string" => "some-string" optionalString false "some-string" => "" */ - optionalString = cond: string: if cond then string else ""; + optionalString = + # Condition + cond: + # String to return if condition is true + string: if cond then string else ""; /* Determine whether a string has given prefix. + Type: hasPrefix :: string -> string -> bool + Example: hasPrefix "foo" "foobar" => true hasPrefix "foo" "barfoo" => false */ - hasPrefix = pref: str: - substring 0 (stringLength pref) str == pref; + hasPrefix = + # Prefix to check for + pref: + # Input string + str: substring 0 (stringLength pref) str == pref; /* Determine whether a string has given suffix. + Type: hasSuffix :: string -> string -> bool + Example: hasSuffix "foo" "foobar" => false hasSuffix "foo" "barfoo" => true */ - hasSuffix = suffix: content: + hasSuffix = + # Suffix to check for + suffix: + # Input string + content: let lenContent = stringLength content; lenSuffix = stringLength suffix; in lenContent >= lenSuffix && substring (lenContent - lenSuffix) lenContent content == suffix; + /* Determine whether a string contains the given infix + + Type: hasInfix :: string -> string -> bool + + Example: + hasInfix "bc" "abcd" + => true + hasInfix "ab" "abcd" + => true + hasInfix "cd" "abcd" + => true + hasInfix "foo" "abcd" + => false + */ + hasInfix = infix: content: + let + drop = x: substring 1 (stringLength x) x; + in hasPrefix infix content + || content != "" && hasInfix infix (drop content); + /* Convert a string to a list of characters (i.e. singleton strings). This allows you to, e.g., map a function over each character. However, note that this will likely be horribly inefficient; Nix is not a @@ -180,6 +244,8 @@ rec { Also note that Nix treats strings as a list of bytes and thus doesn't handle unicode. + Type: stringtoCharacters :: string -> [string] + Example: stringToCharacters "" => [ ] @@ -194,18 +260,25 @@ rec { /* Manipulate a string character by character and replace them by strings before concatenating the results. + Type: stringAsChars :: (string -> string) -> string -> string + Example: stringAsChars (x: if x == "a" then "i" else x) "nax" => "nix" */ - stringAsChars = f: s: - concatStrings ( + stringAsChars = + # Function to map over each individual character + f: + # Input string + s: concatStrings ( map f (stringToCharacters s) ); - /* Escape occurrence of the elements of ‘list’ in ‘string’ by + /* Escape occurrence of the elements of `list` in `string` by prefixing it with a backslash. + Type: escape :: [string] -> string -> string + Example: escape ["(" ")"] "(foo)" => "\\(foo\\)" @@ -214,6 +287,8 @@ rec { /* Quote string to be used safely within the Bourne shell. + Type: escapeShellArg :: string -> string + Example: escapeShellArg "esc'ape\nme" => "'esc'\\''ape\nme'" @@ -222,6 +297,8 @@ rec { /* Quote all arguments to be safely passed to the Bourne shell. + Type: escapeShellArgs :: [string] -> string + Example: escapeShellArgs ["one" "two three" "four'five"] => "'one' 'two three' 'four'\\''five'" @@ -230,13 +307,15 @@ rec { /* Turn a string into a Nix expression representing that string + Type: string -> string + Example: escapeNixString "hello\${}\n" => "\"hello\\\${}\\n\"" */ escapeNixString = s: escape ["$"] (builtins.toJSON s); - /* Obsolete - use replaceStrings instead. */ + # Obsolete - use replaceStrings instead. replaceChars = builtins.replaceStrings or ( del: new: s: let @@ -256,6 +335,8 @@ rec { /* Converts an ASCII string to lower-case. + Type: toLower :: string -> string + Example: toLower "HOME" => "home" @@ -264,6 +345,8 @@ rec { /* Converts an ASCII string to upper-case. + Type: toUpper :: string -> string + Example: toUpper "home" => "HOME" @@ -273,7 +356,7 @@ rec { /* Appends string context from another string. This is an implementation detail of Nix. - Strings in Nix carry an invisible `context' which is a list of strings + Strings in Nix carry an invisible `context` which is a list of strings representing store paths. If the string is later used in a derivation attribute, the derivation will properly populate the inputDrvs and inputSrcs. @@ -319,8 +402,9 @@ rec { in recurse 0 0; - /* Return the suffix of the second argument if the first argument matches - its prefix. + /* Return a string without the specified prefix, if the prefix matches. + + Type: string -> string -> string Example: removePrefix "foo." "foo.bar.baz" @@ -328,18 +412,23 @@ rec { removePrefix "xxx" "foo.bar.baz" => "foo.bar.baz" */ - removePrefix = pre: s: + removePrefix = + # Prefix to remove if it matches + prefix: + # Input string + str: let - preLen = stringLength pre; - sLen = stringLength s; + preLen = stringLength prefix; + sLen = stringLength str; in - if hasPrefix pre s then - substring preLen (sLen - preLen) s + if hasPrefix prefix str then + substring preLen (sLen - preLen) str else - s; + str; - /* Return the prefix of the second argument if the first argument matches - its suffix. + /* Return a string without the specified suffix, if the suffix matches. + + Type: string -> string -> string Example: removeSuffix "front" "homefront" @@ -347,17 +436,21 @@ rec { removeSuffix "xxx" "homefront" => "homefront" */ - removeSuffix = suf: s: + removeSuffix = + # Suffix to remove if it matches + suffix: + # Input string + str: let - sufLen = stringLength suf; - sLen = stringLength s; + sufLen = stringLength suffix; + sLen = stringLength str; in - if sufLen <= sLen && suf == substring (sLen - sufLen) sufLen s then - substring 0 (sLen - sufLen) s + if sufLen <= sLen && suffix == substring (sLen - sufLen) sufLen str then + substring 0 (sLen - sufLen) str else - s; + str; - /* Return true iff string v1 denotes a version older than v2. + /* Return true if string v1 denotes a version older than v2. Example: versionOlder "1.1" "1.2" @@ -367,7 +460,7 @@ rec { */ versionOlder = v1: v2: builtins.compareVersions v2 v1 == 1; - /* Return true iff string v1 denotes a version equal to or newer than v2. + /* Return true if string v1 denotes a version equal to or newer than v2. Example: versionAtLeast "1.1" "1.0" @@ -459,6 +552,11 @@ rec { /* Create a fixed width string with additional prefix to match required width. + This function will fail if the input string is longer than the + requested length. + + Type: fixedWidthString :: int -> string -> string + Example: fixedWidthString 5 "0" (toString 15) => "00015" @@ -502,12 +600,16 @@ rec { => false */ isStorePath = x: - isCoercibleToString x - && builtins.substring 0 1 (toString x) == "/" - && dirOf x == builtins.storeDir; + if isCoercibleToString x then + let str = toString x; in + builtins.substring 0 1 str == "/" + && dirOf str == builtins.storeDir + else + false; - /* Convert string to int - Obviously, it is a bit hacky to use fromJSON that way. + /* Parse a string string as an int. + + Type: string -> int Example: toInt "1337" @@ -517,17 +619,18 @@ rec { toInt "3.14" => error: floating point JSON numbers are not supported */ + # Obviously, it is a bit hacky to use fromJSON this way. toInt = str: let may_be_int = builtins.fromJSON str; in if builtins.isInt may_be_int then may_be_int else throw "Could not convert ${str} to int."; - /* Read a list of paths from `file', relative to the `rootPath'. Lines - beginning with `#' are treated as comments and ignored. Whitespace - is significant. + /* Read a list of paths from `file`, relative to the `rootPath`. + Lines beginning with `#` are treated as comments and ignored. + Whitespace is significant. - NOTE: this function is not performant and should be avoided + NOTE: This function is not performant and should be avoided. Example: readPathsFromFile /prefix @@ -549,6 +652,8 @@ rec { /* Read the contents of a file removing the trailing \n + Type: fileContents :: path -> string + Example: $ echo "1.0" > ./version diff --git a/lib/systems/default.nix b/lib/systems/default.nix index 5eacc9eb23e..9b25052ab88 100644 --- a/lib/systems/default.nix +++ b/lib/systems/default.nix @@ -32,6 +32,7 @@ rec { else if final.isUClibc then "uclibc" else if final.isAndroid then "bionic" else if final.isLinux /* default */ then "glibc" + else if final.isAvr then "avrlibc" # TODO(@Ericson2314) think more about other operating systems else "native/impure"; extensions = { @@ -46,6 +47,65 @@ rec { # Misc boolean options useAndroidPrebuilt = false; useiOSPrebuilt = false; + + # Output from uname + uname = { + # uname -s + system = { + "linux" = "Linux"; + "windows" = "Windows"; + "darwin" = "Darwin"; + "netbsd" = "NetBSD"; + "freebsd" = "FreeBSD"; + "openbsd" = "OpenBSD"; + }.${final.parsed.kernel.name} or null; + + # uname -p + processor = final.parsed.cpu.name; + + # uname -r + release = null; + }; + + qemuArch = + if final.isArm then "arm" + else if final.isx86_64 then "x86_64" + else if final.isx86 then "i386" + else { + "powerpc" = "ppc"; + "powerpc64" = "ppc64"; + "powerpc64le" = "ppc64"; + "mips64" = "mips"; + "mipsel64" = "mipsel"; + }.${final.parsed.cpu.name} or final.parsed.cpu.name; + + emulator = pkgs: let + qemu-user = pkgs.qemu.override { + smartcardSupport = false; + spiceSupport = false; + openGLSupport = false; + virglSupport = false; + vncSupport = false; + gtkSupport = false; + sdlSupport = false; + pulseSupport = false; + smbdSupport = false; + seccompSupport = false; + hostCpuTargets = ["${final.qemuArch}-linux-user"]; + }; + wine-name = "wine${toString final.parsed.cpu.bits}"; + wine = (pkgs.winePackagesFor wine-name).minimal; + in + if final.parsed.kernel.name == pkgs.stdenv.hostPlatform.parsed.kernel.name && + (final.parsed.cpu.name == pkgs.stdenv.hostPlatform.parsed.cpu.name || + (final.isi686 && pkgs.stdenv.hostPlatform.isx86_64)) + then pkgs.runtimeShell + else if final.isWindows + then "${wine}/bin/${wine-name}" + else if final.isLinux && pkgs.stdenv.hostPlatform.isLinux + then "${qemu-user}/bin/qemu-${final.qemuArch}" + else throw "Don't know how to run ${final.config} executables."; + } // mapAttrs (n: v: v final.parsed) inspect.predicates // args; in assert final.useAndroidPrebuilt -> final.isAndroid; diff --git a/lib/systems/doubles.nix b/lib/systems/doubles.nix index a00165db171..58677c0bdd9 100644 --- a/lib/systems/doubles.nix +++ b/lib/systems/doubles.nix @@ -15,6 +15,8 @@ let "x86_64-cygwin" "x86_64-darwin" "x86_64-freebsd" "x86_64-linux" "x86_64-netbsd" "x86_64-openbsd" "x86_64-solaris" + + "x86_64-windows" "i686-windows" ]; allParsed = map parse.mkSystemFromString all; @@ -37,12 +39,13 @@ in rec { darwin = filterDoubles predicates.isDarwin; freebsd = filterDoubles predicates.isFreeBSD; # Should be better, but MinGW is unclear. - gnu = filterDoubles (matchAttrs { kernel = parse.kernels.linux; abi = parse.abis.gnu; }); + gnu = filterDoubles (matchAttrs { kernel = parse.kernels.linux; abi = parse.abis.gnu; }) ++ filterDoubles (matchAttrs { kernel = parse.kernels.linux; abi = parse.abis.gnueabi; }) ++ filterDoubles (matchAttrs { kernel = parse.kernels.linux; abi = parse.abis.gnueabihf; }); illumos = filterDoubles predicates.isSunOS; linux = filterDoubles predicates.isLinux; netbsd = filterDoubles predicates.isNetBSD; openbsd = filterDoubles predicates.isOpenBSD; unix = filterDoubles predicates.isUnix; + windows = filterDoubles predicates.isWindows; mesaPlatforms = ["i686-linux" "x86_64-linux" "x86_64-darwin" "armv5tel-linux" "armv6l-linux" "armv7l-linux" "aarch64-linux" "powerpc64le-linux"]; } diff --git a/lib/systems/examples.nix b/lib/systems/examples.nix index 8ba03a63fd8..ac1633a1a15 100644 --- a/lib/systems/examples.nix +++ b/lib/systems/examples.nix @@ -2,7 +2,14 @@ # `crossSystem`. They are put here for user convenience, but also used by cross # tests and linux cross stdenv building, so handle with care! { lib }: -let platforms = import ./platforms.nix { inherit lib; }; in +let + platforms = import ./platforms.nix { inherit lib; }; + + riscv = bits: { + config = "riscv${bits}-unknown-linux-gnu"; + platform = platforms.riscv-multiplatform bits; + }; +in rec { # @@ -40,7 +47,7 @@ rec { armv5te-android-prebuilt = rec { config = "armv5tel-unknown-linux-androideabi"; sdkVer = "21"; - ndkVer = "10e"; + ndkVer = "18b"; platform = platforms.armv5te-android; useAndroidPrebuilt = true; }; @@ -48,7 +55,7 @@ rec { armv7a-android-prebuilt = rec { config = "armv7a-unknown-linux-androideabi"; sdkVer = "24"; - ndkVer = "17c"; + ndkVer = "18b"; platform = platforms.armv7a-android; useAndroidPrebuilt = true; }; @@ -56,7 +63,7 @@ rec { aarch64-android-prebuilt = rec { config = "aarch64-unknown-linux-android"; sdkVer = "24"; - ndkVer = "17c"; + ndkVer = "18b"; platform = platforms.aarch64-multiplatform; useAndroidPrebuilt = true; }; @@ -92,13 +99,56 @@ rec { musl64 = { config = "x86_64-unknown-linux-musl"; }; musl32 = { config = "i686-unknown-linux-musl"; }; - riscv = bits: { - config = "riscv${bits}-unknown-linux-gnu"; - platform = platforms.riscv-multiplatform bits; - }; riscv64 = riscv "64"; riscv32 = riscv "32"; + avr = { + config = "avr"; + }; + + arm-embedded = { + config = "arm-none-eabi"; + libc = "newlib"; + }; + armhf-embedded = { + config = "arm-none-eabihf"; + libc = "newlib"; + }; + + aarch64-embedded = { + config = "aarch64-none-elf"; + libc = "newlib"; + }; + + aarch64be-embedded = { + config = "aarch64_be-none-elf"; + libc = "newlib"; + }; + + ppc-embedded = { + config = "powerpc-none-eabi"; + libc = "newlib"; + }; + + ppcle-embedded = { + config = "powerpcle-none-eabi"; + libc = "newlib"; + }; + + alpha-embedded = { + config = "alpha-elf"; + libc = "newlib"; + }; + + i686-embedded = { + config = "i686-elf"; + libc = "newlib"; + }; + + x86_64-embedded = { + config = "x86_64-elf"; + libc = "newlib"; + }; # # Darwin diff --git a/lib/systems/inspect.nix b/lib/systems/inspect.nix index 65f560328af..2fcf1afe462 100644 --- a/lib/systems/inspect.nix +++ b/lib/systems/inspect.nix @@ -19,6 +19,7 @@ rec { isRiscV = { cpu = { family = "riscv"; }; }; isSparc = { cpu = { family = "sparc"; }; }; isWasm = { cpu = { family = "wasm"; }; }; + isAvr = { cpu = { family = "avr"; }; }; is32bit = { cpu = { bits = 32; }; }; is64bit = { cpu = { bits = 64; }; }; diff --git a/lib/systems/parse.nix b/lib/systems/parse.nix index bb26c93f3d7..6947d41419e 100644 --- a/lib/systems/parse.nix +++ b/lib/systems/parse.nix @@ -80,7 +80,11 @@ rec { armv8r = { bits = 32; significantByte = littleEndian; family = "arm"; version = "8"; }; armv8m = { bits = 32; significantByte = littleEndian; family = "arm"; version = "8"; }; aarch64 = { bits = 64; significantByte = littleEndian; family = "arm"; version = "8"; }; + aarch64_be = { bits = 64; significantByte = bigEndian; family = "arm"; version = "8"; }; + i386 = { bits = 32; significantByte = littleEndian; family = "x86"; }; + i486 = { bits = 32; significantByte = littleEndian; family = "x86"; }; + i586 = { bits = 32; significantByte = littleEndian; family = "x86"; }; i686 = { bits = 32; significantByte = littleEndian; family = "x86"; }; x86_64 = { bits = 64; significantByte = littleEndian; family = "x86"; }; @@ -92,6 +96,7 @@ rec { powerpc = { bits = 32; significantByte = bigEndian; family = "power"; }; powerpc64 = { bits = 64; significantByte = bigEndian; family = "power"; }; powerpc64le = { bits = 64; significantByte = littleEndian; family = "power"; }; + powerpcle = { bits = 32; significantByte = littleEndian; family = "power"; }; riscv32 = { bits = 32; significantByte = littleEndian; family = "riscv"; }; riscv64 = { bits = 64; significantByte = littleEndian; family = "riscv"; }; @@ -101,6 +106,10 @@ rec { wasm32 = { bits = 32; significantByte = littleEndian; family = "wasm"; }; wasm64 = { bits = 64; significantByte = littleEndian; family = "wasm"; }; + + alpha = { bits = 64; significantByte = littleEndian; family = "alpha"; }; + + avr = { bits = 8; family = "avr"; }; }; ################################################################################ @@ -117,6 +126,7 @@ rec { apple = {}; pc = {}; + none = {}; unknown = {}; }; @@ -199,7 +209,15 @@ rec { abis = setTypes types.openAbi { cygnus = {}; msvc = {}; - eabi = {}; + + # Note: eabi is specific to ARM and PowerPC. + # On PowerPC, this corresponds to PPCEABI. + # On ARM, this corresponds to ARMEABI. + eabi = { float = "soft"; }; + eabihf = { float = "hard"; }; + + # Other architectures should use ELF in embedded situations. + elf = {}; androideabi = {}; android = { @@ -255,9 +273,20 @@ rec { setType "system" components; mkSkeletonFromList = l: { + "1" = if elemAt l 0 == "avr" + then { cpu = elemAt l 0; kernel = "none"; abi = "unknown"; } + else throw "Target specification with 1 components is ambiguous"; "2" = # We only do 2-part hacks for things Nix already supports if elemAt l 1 == "cygwin" then { cpu = elemAt l 0; kernel = "windows"; abi = "cygnus"; } + # MSVC ought to be the default ABI so this case isn't needed. But then it + # becomes difficult to handle the gnu* variants for Aarch32 correctly for + # minGW. So it's easier to make gnu* the default for the MinGW, but + # hack-in MSVC for the non-MinGW case right here. + else if elemAt l 1 == "windows" + then { cpu = elemAt l 0; kernel = "windows"; abi = "msvc"; } + else if (elemAt l 1) == "elf" + then { cpu = elemAt l 0; vendor = "unknown"; kernel = "none"; abi = elemAt l 1; } else { cpu = elemAt l 0; kernel = elemAt l 1; }; "3" = # Awkwards hacks, beware! if elemAt l 1 == "apple" @@ -265,9 +294,11 @@ rec { else if (elemAt l 1 == "linux") || (elemAt l 2 == "gnu") then { cpu = elemAt l 0; kernel = elemAt l 1; abi = elemAt l 2; } else if (elemAt l 2 == "mingw32") # autotools breaks on -gnu for window - then { cpu = elemAt l 0; vendor = elemAt l 1; kernel = "windows"; abi = "gnu"; } + then { cpu = elemAt l 0; vendor = elemAt l 1; kernel = "windows"; } else if hasPrefix "netbsd" (elemAt l 2) then { cpu = elemAt l 0; vendor = elemAt l 1; kernel = elemAt l 2; } + else if (elem (elemAt l 2) ["eabi" "eabihf" "elf"]) + then { cpu = elemAt l 0; vendor = "unknown"; kernel = elemAt l 1; abi = 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)} @@ -299,13 +330,12 @@ rec { else getKernel args.kernel; abi = /**/ if args ? abi then getAbi args.abi - else if isLinux parsed then + else if isLinux parsed || isWindows parsed then if isAarch32 parsed then if lib.versionAtLeast (parsed.cpu.version or "0") "6" then abis.gnueabihf else abis.gnueabi else abis.gnu - else if isWindows parsed then abis.gnu else abis.unknown; }; diff --git a/lib/systems/platforms.nix b/lib/systems/platforms.nix index 56783d99e3d..1ed072e9464 100644 --- a/lib/systems/platforms.nix +++ b/lib/systems/platforms.nix @@ -471,6 +471,7 @@ rec { "x86_64-linux" = pc64; "armv5tel-linux" = sheevaplug; "armv6l-linux" = raspberrypi; + "armv7a-linux" = armv7l-hf-multiplatform; "armv7l-linux" = armv7l-hf-multiplatform; "aarch64-linux" = aarch64-multiplatform; "mipsel-linux" = fuloong2f_n32; diff --git a/lib/tests/misc.nix b/lib/tests/misc.nix index d89bcfde481..d8f412d3fc4 100644 --- a/lib/tests/misc.nix +++ b/lib/tests/misc.nix @@ -112,7 +112,7 @@ runTests { storePathAppendix = isStorePath "${goodPath}/bin/python"; nonAbsolute = isStorePath (concatStrings (tail (stringToCharacters goodPath))); - asPath = isStorePath goodPath; + asPath = isStorePath (/. + goodPath); otherPath = isStorePath "/something/else"; otherVals = { attrset = isStorePath {}; @@ -369,6 +369,7 @@ runTests { testToPretty = { expr = mapAttrs (const (generators.toPretty {})) rec { int = 42; + float = 0.1337; bool = true; string = ''fno"rd''; path = /. + "/foo"; @@ -381,6 +382,7 @@ runTests { }; expected = rec { int = "42"; + float = "~0.133700"; bool = "true"; string = ''"fno\"rd"''; path = "/foo"; @@ -399,42 +401,4 @@ runTests { expected = "«foo»"; }; - -# MISC - - testOverridableDelayableArgsTest = { - expr = - let res1 = defaultOverridableDelayableArgs id {}; - res2 = defaultOverridableDelayableArgs id { a = 7; }; - res3 = let x = defaultOverridableDelayableArgs id { a = 7; }; - in (x.merge) { b = 10; }; - res4 = let x = defaultOverridableDelayableArgs id { a = 7; }; - in (x.merge) ( x: { b = 10; }); - res5 = let x = defaultOverridableDelayableArgs id { a = 7; }; - in (x.merge) ( x: { a = builtins.add x.a 3; }); - res6 = let x = defaultOverridableDelayableArgs id { a = 7; mergeAttrBy = { a = builtins.add; }; }; - y = x.merge {}; - in (y.merge) { a = 10; }; - - resRem7 = res6.replace (a: removeAttrs a ["a"]); - - # fixed tests (delayed args): (when using them add some comments, please) - resFixed1 = - let x = defaultOverridableDelayableArgs id ( x: { a = 7; c = x.fixed.b; }); - y = x.merge (x: { name = "name-${builtins.toString x.fixed.c}"; }); - in (y.merge) { b = 10; }; - strip = attrs: removeAttrs attrs ["merge" "replace"]; - in all id - [ ((strip res1) == { }) - ((strip res2) == { a = 7; }) - ((strip res3) == { a = 7; b = 10; }) - ((strip res4) == { a = 7; b = 10; }) - ((strip res5) == { a = 10; }) - ((strip res6) == { a = 17; }) - ((strip resRem7) == {}) - ((strip resFixed1) == { a = 7; b = 10; c =10; name = "name-10"; }) - ]; - expected = true; - }; - } diff --git a/lib/tests/modules.sh b/lib/tests/modules.sh index b83e1eb7d82..a72777cbf2a 100755 --- a/lib/tests/modules.sh +++ b/lib/tests/modules.sh @@ -149,6 +149,12 @@ checkConfigOutput "1 2 3 4 5 6 7 8 9 10" config.result ./loaOf-with-long-list.ni # 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 mkAliasOptionModuleWithPriority. +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 + cat < a */ - id = x: x; + id = + # The value to return + x: x; /* The constant function - Ignores the second argument. - Or: Construct a function that always returns a static value. + + Ignores the second argument. If called with only one argument, + constructs a function that always returns a static value. Type: const :: a -> b -> a Example: let f = const 5; in f 10 => 5 */ - const = x: y: x; + const = + # Value to return + x: + # Value to ignore + y: x; ## Named versions corresponding to some builtin operators. - /* Concatenate two lists */ + /* Concatenate two lists + + Type: concat :: [a] -> [a] -> [a] + + Example: + concat [ 1 2 ] [ 3 4 ] + => [ 1 2 3 4 ] + */ concat = x: y: x ++ y; /* boolean “or” */ @@ -53,27 +67,40 @@ rec { bitNot = builtins.sub (-1); /* Convert a boolean to a string. - Note that toString on a bool returns "1" and "". + + This function uses the strings "true" and "false" to represent + boolean values. Calling `toString` on a bool instead returns "1" + and "" (sic!). + + Type: boolToString :: bool -> string */ boolToString = b: if b then "true" else "false"; /* Merge two attribute sets shallowly, right side trumps left + mergeAttrs :: attrs -> attrs -> attrs + Example: mergeAttrs { a = 1; b = 2; } { b = 3; c = 4; } => { a = 1; b = 3; c = 4; } */ - mergeAttrs = x: y: x // y; + mergeAttrs = + # Left attribute set + x: + # Right attribute set (higher precedence for equal keys) + y: x // y; /* Flip the order of the arguments of a binary function. + Type: flip :: (a -> b -> c) -> (b -> a -> c) + Example: flip concat [1] [2] => [ 2 1 ] */ flip = f: a: b: f b a; - /* Apply function if argument is non-null. + /* Apply function if the supplied argument is non-null. Example: mapNullable (x: x+1) null @@ -81,7 +108,11 @@ rec { mapNullable (x: x+1) 22 => 23 */ - mapNullable = f: a: if isNull a then a else f a; + mapNullable = + # Function to call + f: + # Argument to check for null before passing it to `f` + a: if isNull a then a else f a; # Pull in some builtins not included elsewhere. inherit (builtins) @@ -92,21 +123,34 @@ rec { ## nixpks version strings - # The current full nixpkgs version number. + /* Returns the current full nixpkgs version number. */ version = release + versionSuffix; - # The current nixpkgs version number as string. + /* Returns the current nixpkgs release number as string. */ release = lib.strings.fileContents ../.version; - # The current nixpkgs version suffix as string. + /* Returns the current nixpkgs release code name. + + On each release the first letter is bumped and a new animal is chosen + starting with that new letter. + */ + codeName = "Koi"; + + /* Returns the current nixpkgs version suffix as string. */ versionSuffix = let suffixFile = ../.version-suffix; in if pathExists suffixFile then lib.strings.fileContents suffixFile else "pre-git"; - # Attempt to get the revision nixpkgs is from - revisionWithDefault = default: + /* Attempts to return the the current revision of nixpkgs and + returns the supplied default value otherwise. + + Type: revisionWithDefault :: string -> string + */ + revisionWithDefault = + # Default value to return if revision can not be determined + default: let revisionFile = "${toString ./..}/.git-revision"; gitRepo = "${toString ./..}/.git"; @@ -117,14 +161,20 @@ rec { nixpkgsVersion = builtins.trace "`lib.nixpkgsVersion` is deprecated, use `lib.version` instead!" version; - # Whether we're being called by nix-shell. + /* Determine whether the function is being called from inside a Nix + shell. + + Type: inNixShell :: bool + */ inNixShell = builtins.getEnv "IN_NIX_SHELL" != ""; ## Integer operations - # Return minimum/maximum of two numbers. + /* Return minimum of two numbers. */ min = x: y: if x < y then x else y; + + /* Return maximum of two numbers. */ max = x: y: if x > y then x else y; /* Integer modulus @@ -158,8 +208,9 @@ rec { second subtype, compare elements of a single subtype with `yes` and `no` respectively. - Example: + Type: (a -> bool) -> (a -> a -> int) -> (a -> a -> int) -> (a -> a -> int) + Example: let cmp = splitByAndCompare (hasPrefix "foo") compare compare; in cmp "a" "z" => -1 @@ -170,31 +221,44 @@ rec { # while compare "fooa" "a" => 1 */ - splitByAndCompare = p: yes: no: a: b: + splitByAndCompare = + # Predicate + p: + # Comparison function if predicate holds for both values + yes: + # Comparison function if predicate holds for neither value + no: + # First value to compare + a: + # Second value to compare + b: if p a then if p b then yes a b else -1 else if p b then 1 else no a b; - /* Reads a JSON file. */ + /* Reads a JSON file. + + Type :: path -> any + */ importJSON = path: builtins.fromJSON (builtins.readFile path); ## Warnings - /* See https://github.com/NixOS/nix/issues/749. Eventually we'd like these - to expand to Nix builtins that carry metadata so that Nix can filter out - the INFO messages without parsing the message string. + # See https://github.com/NixOS/nix/issues/749. Eventually we'd like these + # to expand to Nix builtins that carry metadata so that Nix can filter out + # the INFO messages without parsing the message string. + # + # Usage: + # { + # foo = lib.warn "foo is deprecated" oldFoo; + # } + # + # TODO: figure out a clever way to integrate location information from + # something like __unsafeGetAttrPos. - Usage: - { - foo = lib.warn "foo is deprecated" oldFoo; - } - - TODO: figure out a clever way to integrate location information from - something like __unsafeGetAttrPos. - */ warn = msg: builtins.trace "WARNING: ${msg}"; info = msg: builtins.trace "INFO: ${msg}"; diff --git a/lib/types.nix b/lib/types.nix index 4e44e7521c4..d1ece2402ad 100644 --- a/lib/types.nix +++ b/lib/types.nix @@ -169,6 +169,9 @@ rec { # s32 = sign 32 4294967296; }; + # Alias of u16 for a port number + port = ints.u16; + float = mkOptionType rec { name = "float"; description = "floating point number"; @@ -194,7 +197,10 @@ rec { # separator between the values). separatedString = sep: mkOptionType rec { name = "separatedString"; - description = "string"; + description = if sep == "" + then "Concatenated string" # for types.string. + else "strings concatenated with ${builtins.toJSON sep}" + ; check = isString; merge = loc: defs: concatStringsSep sep (getValues defs); functor = (defaultFunctor name) // { diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index a77df8e8cc2..fed2cacbddf 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -1,21 +1,41 @@ /* List of NixOS maintainers. handle = { - name = "Real name"; + # Required + name = "Your name"; email = "address@example.org"; + + # Optional github = "GithubUsername"; + keys = [{ + longkeyid = "rsa2048/0x0123456789ABCDEF"; + fingerprint = "AAAA BBBB CCCC DDDD EEEE FFFF 0000 1111 2222 3333"; + }]; }; - where `name` is your 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/`). - address - The only required fields are `name` and `email`. + 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/`), + - `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. + + 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 + ``` + + !!! 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. Please keep the list alphabetically sorted. - See `../maintainers/scripts/check-maintainer-github-handles.sh` - for an example on how to work with this data. + See `./scripts/check-maintainer-github-handles.sh` for an example on how to work with this data. */ { "1000101" = { @@ -73,6 +93,11 @@ github = "acowley"; name = "Anthony Cowley"; }; + adamt = { + email = "mail@adamtulinius.dk"; + github = "adamtulinius"; + name = "Adam Tulinius"; + }; adelbertc = { email = "adelbertc@gmail.com"; github = "adelbertc"; @@ -143,6 +168,11 @@ github = "ahmedtd"; name = "Taahir Ahmed"; }; + ahuzik = { + email = "ales.guzik@gmail.com"; + github = "alesguzik"; + name = "Ales Huzik"; + }; aij = { email = "aij+git@mrph.org"; github = "aij"; @@ -158,6 +188,11 @@ github = "alexanderkjeldaas"; name = "Alexander Kjeldaas"; }; + akavel = { + email = "czapkofan@gmail.com"; + github = "akavel"; + name = "Mateusz Czapliński"; + }; akaWolf = { email = "akawolf0@gmail.com"; github = "akaWolf"; @@ -202,10 +237,15 @@ name = "Nix Committers"; }; alunduil = { - email = "alunduil@alunduil.com"; + email = "alunduil@gmail.com"; github = "alunduil"; name = "Alex Brandt"; }; + amar1729 = { + email = "amar.paul16@gmail.com"; + github = "amar1729"; + name = "Amar Paul"; + }; ambrop72 = { email = "ambrop7@gmail.com"; github = "ambrop72"; @@ -236,6 +276,11 @@ github = "AndrewMorsillo"; name = "Andrew Morsillo"; }; + andersk = { + email = "andersk@mit.edu"; + github = "andersk"; + name = "Anders Kaseorg"; + }; AndersonTorres = { email = "torres.anderson.85@protonmail.com"; github = "AndersonTorres"; @@ -316,6 +361,11 @@ github = "apeyroux"; name = "Alexandre Peyroux"; }; + ar1a = { + email = "aria@ar1as.space"; + github = "ar1a"; + name = "Aria Edmonds"; + }; arcadio = { email = "arc@well.ox.ac.uk"; github = "arcadio"; @@ -366,6 +416,11 @@ github = "asppsa"; name = "Alastair Pharo"; }; + astro = { + email = "astro@spaceboyz.net"; + github = "astro"; + name = "Astro"; + }; astsmtl = { email = "astsmtl@yandex.ru"; github = "astsmtl"; @@ -381,6 +436,11 @@ github = "aszlig"; name = "aszlig"; }; + atnnn = { + email = "etienne@atnnn.com"; + github = "atnnn"; + name = "Etienne Laurin"; + }; auntie = { email = "auntieNeo@gmail.com"; github = "auntie"; @@ -396,6 +456,11 @@ github = "AveryLychee"; name = "Avery Lychee"; }; + averelld = { + email = "averell+nixos@rxd4.com"; + github = "averelld"; + name = "averelld"; + }; avnik = { email = "avn@avnik.info"; github = "avnik"; @@ -435,6 +500,11 @@ github = "bandresen"; name = "Benjamin Andresen"; }; + baracoder = { + email = "baracoder@googlemail.com"; + github = "baracoder"; + name = "Herman Fries"; + }; barrucadu = { email = "mike@barrucadu.co.uk"; github = "barrucadu"; @@ -490,6 +560,11 @@ github = "bennofs"; name = "Benno Fünfstück"; }; + benpye = { + email = "ben@curlybracket.co.uk"; + github = "benpye"; + name = "Ben Pye"; + }; benwbooth = { email = "benwbooth@gmail.com"; github = "benwbooth"; @@ -520,6 +595,11 @@ github = "bgamari"; name = "Ben Gamari"; }; + bhall = { + email = "brendan.j.hall@bath.edu"; + github = "brendan-hall"; + name = "Brendan Hall"; + }; bhipple = { email = "bhipple@protonmail.com"; github = "bhipple"; @@ -599,6 +679,11 @@ github = "bramd"; name = "Bram Duvigneau"; }; + braydenjw = { + email = "nixpkgs@willenborg.ca"; + github = "braydenjw"; + name = "Brayden Willenborg"; + }; brian-dawn = { email = "brian.t.dawn@gmail.com"; github = "brian-dawn"; @@ -614,6 +699,11 @@ github = "bstrik"; name = "Berno Strik"; }; + buffet = { + email = "niclas@countingsort.com"; + github = "buffet"; + name = "Niclas Meyer"; + }; bugworm = { email = "bugworm@zoho.com"; github = "bugworm"; @@ -653,6 +743,11 @@ github = "campadrenalin"; name = "Philip Horger"; }; + candeira = { + email = "javier@candeira.com"; + github = "candeira"; + name = "Javier Candeira"; + }; canndrew = { email = "shum@canndrew.org"; github = "canndrew"; @@ -727,6 +822,11 @@ github = "ChengCat"; name = "Yucheng Zhang"; }; + chessai = { + email = "chessai1996@gmail.com"; + github = "chessai"; + name = "Daniel Cartwright"; + }; chiiruno = { email = "okinan@protonmail.com"; github = "chiiruno"; @@ -862,11 +962,6 @@ github = "couchemar"; name = "Andrey Pavlov"; }; - countingsort = { - email = "niclas@countingsort.com"; - github = "countingsort"; - name = "Niclas Meyer"; - }; cpages = { email = "page@ruiec.cat"; github = "cpages"; @@ -937,6 +1032,11 @@ github = "danielfullmer"; name = "Daniel Fullmer"; }; + das-g = { + email = "nixpkgs@raphael.dasgupta.ch"; + github = "das-g"; + name = "Raphael Das Gupta"; + }; das_j = { email = "janne@hess.ooo"; github = "dasJ"; @@ -981,6 +1081,11 @@ github = "deepfire"; name = "Kosyrev Serge"; }; + delroth = { + email = "delroth@gmail.com"; + github = "delroth"; + name = "Pierre Bourdon"; + }; deltaevo = { email = "deltaduartedavid@gmail.com"; github = "DeltaEvo"; @@ -1259,6 +1364,16 @@ github = "ellis"; name = "Ellis Whitehead"; }; + elohmeier = { + email = "elo-nixos@nerdworks.de"; + github = "elohmeier"; + name = "Enno Lohmeier"; + }; + elseym = { + email = "elseym@me.com"; + github = "elseym"; + name = "Simon Waibl"; + }; elvishjerricco = { email = "elvishjerricco@gmail.com"; github = "ElvishJerricco"; @@ -1341,6 +1456,10 @@ email = "elis@hirwing.se"; github = "etu"; name = "Elis Hirwing"; + keys = [{ + longkeyid = "rsa4096/0xD57EFA625C9A925F"; + fingerprint = "67FE 98F2 8C44 CF22 1828 E12F D57E FA62 5C9A 925F"; + }]; }; evck = { email = "eric@evenchick.com"; @@ -1367,6 +1486,11 @@ github = "expipiplus1"; name = "Joe Hermaszewski"; }; + f--t = { + email = "git@f-t.me"; + github = "f--t"; + name = "f--t"; + }; f-breidenstein = { email = "mail@felixbreidenstein.de"; github = "f-breidenstein"; @@ -1393,7 +1517,7 @@ name = "Felipe Espinoza"; }; fgaz = { - email = "francygazz@gmail.com"; + email = "fgaz@fgaz.me"; github = "fgaz"; name = "Francesco Gazzetta"; }; @@ -1482,15 +1606,30 @@ github = "ftrvxmtrx"; name = "Siarhei Zirukin"; }; + fuerbringer = { + email = "severin@fuerbringer.info"; + github = "fuerbringer"; + name = "Severin Fürbringer"; + }; funfunctor = { email = "eocallaghan@alterapraxis.com"; name = "Edward O'Callaghan"; }; + fusion809 = { + email = "brentonhorne77@gmail.com"; + github = "fusion809"; + name = "Brenton Horne"; + }; fuuzetsu = { email = "fuuzetsu@fuuzetsu.co.uk"; github = "fuuzetsu"; name = "Mateusz Kowalczyk"; }; + fuwa = { + email = "echowss@gmail.com"; + github = "fuwa0529"; + name = "Haruka Akiyama"; + }; fuzzy-id = { email = "hacking+nixos@babibo.de"; name = "Thomas Bach"; @@ -1650,6 +1789,16 @@ github = "hamhut1066"; name = "Hamish Hutchings"; }; + hansjoergschurr = { + email = "commits@schurr.at"; + github = "hansjoergschurr"; + name = "Hans-Jörg Schurr"; + }; + HaoZeke = { + email = "r95g10@gmail.com"; + github = "haozeke"; + name = "Rohit Goswami"; + }; haslersn = { email = "haslersn@fius.informatik.uni-stuttgart.de"; github = "haslersn"; @@ -1709,6 +1858,11 @@ email = "t@larkery.com"; name = "Tom Hinton"; }; + hlolli = { + email = "hlolli@gmail.com"; + github = "hlolli"; + name = "Hlodver Sigurdsson"; + }; hodapp = { email = "hodapp87@gmail.com"; github = "Hodapp87"; @@ -1799,15 +1953,34 @@ github = "infinisil"; name = "Silvan Mosberger"; }; + ingenieroariel = { + email = "ariel@nunez.co"; + github = "ingenieroariel"; + name = "Ariel Nunez"; + }; ironpinguin = { email = "michele@catalano.de"; github = "ironpinguin"; name = "Michele Catalano"; }; + ivan = { + email = "ivan@ludios.org"; + github = "ivan"; + name = "Ivan Kozik"; + }; ivan-tkatchev = { email = "tkatchev@gmail.com"; name = "Ivan Tkatchev"; }; + ivegotasthma = { + email = "ivegotasthma@protonmail.com"; + github = "ivegotasthma"; + name = "John Doe"; + keys = [{ + longkeyid = "rsa4096/09AC52AEA87817A4"; + fingerprint = "4008 2A5B 56A4 79B9 83CB 95FD 09AC 52AE A878 17A4"; + }]; + }; ixmatus = { email = "parnell@digitalmentat.com"; github = "ixmatus"; @@ -1833,6 +2006,16 @@ github = "jagajaga"; name = "Arseniy Seroka"; }; + jakelogemann = { + email = "jake.logemann@gmail.com"; + github = "jakelogemann"; + name = "Jake Logemann"; + }; + jakewaksbaum = { + email = "jake.waksbaum@gmail.com"; + github = "jbaum98"; + name = "Jake Waksbaum"; + }; jammerful = { email = "jammerful@gmail.com"; github = "jammerful"; @@ -1877,6 +2060,11 @@ github = "jdagilliland"; name = "Jason Gilliland"; }; + jdehaas = { + email = "qqlq@nullptr.club"; + github = "jeroendehaas"; + name = "Jeroen de Haas"; + }; jefdaj = { email = "jefdaj@gmail.com"; github = "jefdaj"; @@ -1942,6 +2130,11 @@ github = "jhhuh"; name = "Ji-Haeng Huh"; }; + jhillyerd = { + email = "james+nixos@hillyerd.com"; + github = "jhillyerd"; + name = "James Hillyerd"; + }; jirkamarsik = { email = "jiri.marsik89@gmail.com"; github = "jirkamarsik"; @@ -1957,6 +2150,11 @@ github = "jluttine"; name = "Jaakko Luttinen"; }; + jmagnusj = { + email = "jmagnusj@gmail.com"; + github = "magnusjonsson"; + name = "Johan Magnus Jonsson"; + }; jmettes = { email = "jonathan@jmettes.com"; github = "jmettes"; @@ -2040,6 +2238,11 @@ github = "joncojonathan"; name = "Jonathan Haddock"; }; + jorsn = { + name = "Johannes Rosenberger"; + email = "johannes@jorsn.eu"; + github = "jorsn"; + }; jpdoyle = { email = "joethedoyle@gmail.com"; github = "jpdoyle"; @@ -2153,6 +2356,11 @@ github = "kiloreux"; name = "Kiloreux Emperex"; }; + kimburgess = { + email = "kim@acaprojects.com"; + github = "kimburgess"; + name = "Kim Burgess"; + }; kini = { email = "keshav.kini@gmail.com"; github = "kini"; @@ -2163,11 +2371,20 @@ github = "kirelagin"; name = "Kirill Elagin"; }; + kisonecat = { + email = "kisonecat@gmail.com"; + github = "kisonecat"; + name = "Jim Fowler"; + }; kkallio = { email = "tierpluspluslists@gmail.com"; name = "Karn Kallio"; }; - + klntsky = { + email = "klntsky@gmail.com"; + name = "Vladimir Kalnitsky"; + github = "8084"; + }; kmeakin = { email = "karlwfmeakin@gmail.com"; name = "Karl Meakin"; @@ -2179,6 +2396,11 @@ github = "knedlsepp"; name = "Josef Kemetmüller"; }; + knl = { + email = "nikola@knezevic.co"; + github = "knl"; + name = "Nikola Knežević"; + }; konimex = { email = "herdiansyah@netc.eu"; github = "konimex"; @@ -2354,6 +2576,11 @@ github = "listx"; name = "Linus Arver"; }; + lionello = { + email = "lio@lunesu.com"; + github = "lionello"; + name = "Lionello Lunesu"; + }; lluchs = { email = "lukas.werling@gmail.com"; github = "lluchs"; @@ -2626,6 +2853,11 @@ github = "melsigl"; name = "Melanie B. Sigl"; }; + melkor333 = { + email = "samuel@ton-kunst.ch"; + github = "melkor333"; + name = "Samuel Ruprecht"; + }; metabar = { email = "softs@metabarcoding.org"; name = "Celine Mercier"; @@ -2635,6 +2867,11 @@ github = "mgdelacroix"; name = "Miguel de la Cruz"; }; + mgregoire = { + email = "gregoire@martinache.net"; + github = "M-Gregoire"; + name = "Gregoire Martinache"; + }; mgttlinger = { email = "megoettlinger@gmail.com"; github = "mgttlinger"; @@ -2649,6 +2886,11 @@ email = "joerg@thalheim.io"; github = "mic92"; name = "Jörg Thalheim"; + keys = [{ + # compare with https://keybase.io/Mic92 + longkeyid = "rsa4096/0x003F2096411B5F92"; + fingerprint = "3DEE 1C55 6E1C 3DC5 54F5 875A 003F 2096 411B 5F92"; + }]; }; michaelpj = { email = "michaelpj@gmail.com"; @@ -2893,6 +3135,11 @@ github = "nadrieril"; name = "Nadrieril Feneanar"; }; + nalbyuites = { + email = "ashijit007@gmail.com"; + github = "nalbyuites"; + name = "Ashijit Pramanik"; + }; namore = { email = "namor@hemio.de"; github = "namore"; @@ -2937,6 +3184,11 @@ github = "nequissimus"; name = "Tim Steinbach"; }; + nikitavoloboev = { + email = "nikita.voloboev@gmail.com"; + github = "nikitavoloboev"; + name = "Nikita Voloboev"; + }; nfjinjing = { email = "nfjinjing@gmail.com"; github = "nfjinjing"; @@ -3046,6 +3298,11 @@ github = "nyarly"; name = "Judson Lester"; }; + nzhang-zh = { + email = "n.zhang.hp.au@gmail.com"; + github = "nzhang-zh"; + name = "Ning Zhang"; + }; obadz = { email = "obadz-nixos@obadz.com"; github = "obadz"; @@ -3090,6 +3347,11 @@ github = "olynch"; name = "Owen Lynch"; }; + OPNA2608 = { + email = "christoph.neidahl@gmail.com"; + github = "OPNA2608"; + name = "Christoph Neidahl"; + }; orbekk = { email = "kjetil.orbekk@gmail.com"; github = "orbekk"; @@ -3119,6 +3381,10 @@ email = "oxij@oxij.org"; github = "oxij"; name = "Jan Malakhovski"; + keys = [{ + longkeyid = "rsa2048/0x0E6CA66E5C557AA8"; + fingerprint = "514B B966 B46E 3565 0508 86E8 0E6C A66E 5C55 7AA8"; + }]; }; oyren = { email = "m.scheuren@oyra.eu"; @@ -3130,6 +3396,11 @@ github = "pacien"; name = "Pacien Tran-Girard"; }; + paddygord = { + email = "pgpatrickgordon@gmail.com"; + github = "paddygord"; + name = "Patrick Gordon"; + }; paholg = { email = "paho@paholg.com"; github = "paholg"; @@ -3274,6 +3545,11 @@ github = "pkmx"; name = "Chih-Mao Chen"; }; + plchldr = { + email = "mail@oddco.de"; + github = "plchldr"; + name = "Jonas Beyer"; + }; plcplc = { email = "plcplc@gmail.com"; github = "plcplc"; @@ -3304,6 +3580,11 @@ github = "pmyjavec"; name = "Pauly Myjavec"; }; + pnelson = { + email = "me@pnelson.ca"; + github = "pnelson"; + name = "Philip Nelson"; + }; pneumaticat = { email = "kevin@potatofrom.space"; github = "pneumaticat"; @@ -3328,6 +3609,14 @@ email = "dev.primeos@gmail.com"; github = "primeos"; name = "Michael Weiss"; + keys = [ + { longkeyid = "ed25519/0x130826A6C2A389FD"; # Git only + fingerprint = "86A7 4A55 07D0 58D1 322E 37FD 1308 26A6 C2A3 89FD"; + } + { longkeyid = "rsa3072/0xBCA9943DD1DF4C04"; # Email, etc. + fingerprint = "AF85 991C C950 49A2 4205 1933 BCA9 943D D1DF 4C04"; + } + ]; }; Profpatsch = { email = "mail@profpatsch.de"; @@ -3365,7 +3654,7 @@ }; psyanticy = { email = "iuns@outlook.fr"; - github = "Assassinkin"; + github = "PsyanticY"; name = "Psyanticy"; }; puffnfresh = { @@ -3396,6 +3685,10 @@ email = "hi@alyssa.is"; github = "alyssais"; name = "Alyssa Ross"; + keys = [{ + longkeyid = "rsa4096/736CCDF9EF51BD97"; + fingerprint = "7573 56D7 79BB B888 773E 415E 736C CDF9 EF51 BD97"; + }]; }; ragge = { email = "r.dahlen@gmail.com"; @@ -3596,6 +3889,11 @@ github = "roosemberth"; name = "Roosembert (Roosemberth) Palacios"; }; + royneary = { + email = "christian@ulrich.earth"; + github = "royneary"; + name = "Christian Ulrich"; + }; rprospero = { email = "rprospero+nix@gmail.com"; github = "rprospero"; @@ -3711,11 +4009,30 @@ github = "sauyon"; name = "Sauyon Lee"; }; + sb0 = { + email = "sb@m-labs.hk"; + github = "sbourdeauducq"; + name = "Sébastien Bourdeauducq"; + }; + sboosali = { + email = "SamBoosalis@gmail.com"; + github = "sboosali"; + name = "Sam Boosalis"; + }; + scalavision = { + email = "scalavision@gmail.com"; + github = "scalavision"; + name = "Tom Sorlie"; + }; schmitthenner = { email = "development@schmitthenner.eu"; github = "fkz"; name = "Fabian Schmitthenner"; }; + schmittlauch = { + email = "t.schmittlauch+nixos@orlives.de"; + github = "schmittlauch"; + }; schneefux = { email = "schneefux+nixos_pkg@schneefux.xyz"; github = "schneefux"; @@ -3735,6 +4052,11 @@ github = "scolobb"; name = "Sergiu Ivanov"; }; + screendriver = { + email = "nix@echooff.de"; + github = "screendriver"; + name = "Christian Rackerseder"; + }; Scriptkiddi = { email = "nixos@scriptkiddi.de"; github = "scriptkiddi"; @@ -3775,6 +4097,11 @@ github = "seppeljordan"; name = "Sebastian Jordan"; }; + seqizz = { + email = "seqizz@gmail.com"; + github = "seqizz"; + name = "Gurkan Gur"; + }; sfrijters = { email = "sfrijters@gmail.com"; github = "sfrijters"; @@ -3845,6 +4172,11 @@ github = "sjagoe"; name = "Simon Jagoe"; }; + sjau = { + email = "nixos@sjau.ch"; + github = "sjau"; + name = "Stephan Jau"; + }; sjmackenzie = { email = "setori88@gmail.com"; github = "sjmackenzie"; @@ -3872,6 +4204,10 @@ email = "sebastien.maret@icloud.com"; github = "smaret"; name = "Sébastien Maret"; + keys = [{ + longkeyid = "rsa4096/0x86E30E5A0F5FC59C"; + fingerprint = "4242 834C D401 86EF 8281 4093 86E3 0E5A 0F5F C59C"; + }]; }; smironov = { email = "grrwlf@gmail.com"; @@ -3913,6 +4249,11 @@ github = "spacefrogg"; name = "Michael Raitza"; }; + spacekookie = { + email = "kookie@spacekookie.de"; + github = "spacekookie"; + name = "Katharina Fey"; + }; spencerjanssen = { email = "spencerjanssen@gmail.com"; github = "spencerjanssen"; @@ -4053,6 +4394,15 @@ github = "t184256"; name = "Alexander Sosedkin"; }; + tadeokondrak = { + email = "me@tadeo.ca"; + github = "tadeokondrak"; + name = "Tadeo Kondrak"; + keys = [{ + longkeyid = "ed25519/0xFBE607FCC49516D3"; + fingerprint = "0F2B C0C7 E77C 5B42 AC5B 4C18 FBE6 07FC C495 16D3"; + }]; + }; tadfisher = { email = "tadfisher@gmail.com"; github = "tadfisher"; @@ -4093,6 +4443,16 @@ github = "taku0"; name = "Takuo Yonezawa"; }; + talyz = { + email = "kim.lindberger@gmail.com"; + github = "talyz"; + name = "Kim Lindberger"; + }; + taneb = { + email = "nvd1234@gmail.com"; + github = "Taneb"; + name = "Nathan van Doorn"; + }; tari = { email = "peter@taricorp.net"; github = "tari"; @@ -4108,10 +4468,10 @@ github = "tazjin"; name = "Vincent Ambo"; }; - TealG = { - email = "~@Teal.Gr"; - github = "TealG"; - name = "Teal Gaure"; + tbenst = { + email = "nix@tylerbenster.com"; + github = "tbenst"; + name = "Tyler Benster"; }; teh = { email = "tehunger@gmail.com"; @@ -4138,6 +4498,11 @@ github = "tex"; name = "Milan Svoboda"; }; + tg-x = { + email = "*@tg-x.net"; + github = "tg-x"; + name = "TG ⊗ Θ"; + }; thall = { email = "niclas.thall@gmail.com"; github = "thall"; @@ -4457,6 +4822,11 @@ github = "vklquevs"; name = "vklquevs"; }; + vlaci = { + email = "laszlo.vasko@outlook.com"; + github = "vlaci"; + name = "László Vaskó"; + }; vlstill = { email = "xstill@fi.muni.cz"; github = "vlstill"; @@ -4573,6 +4943,11 @@ github = "wucke13"; name = "Wucke"; }; + wykurz = { + email = "wykurz@gmail.com"; + github = "wykurz"; + name = "Mateusz Wykurz"; + }; wyvie = { email = "elijahrum@gmail.com"; github = "wyvie"; @@ -4634,7 +5009,7 @@ name = "Dmitry V."; }; yegortimoshenko = { - email = "yegortimoshenko@gmail.com"; + email = "yegortimoshenko@riseup.net"; github = "yegortimoshenko"; name = "Yegor Timoshenko"; }; @@ -4698,6 +5073,11 @@ github = "umazalakain"; name = "Unai Zalakain"; }; + zaninime = { + email = "francesco@zanini.me"; + github = "zaninime"; + name = "Francesco Zanini"; + }; zarelit = { email = "david@zarel.net"; github = "zarelit"; @@ -4752,4 +5132,9 @@ github = "zzamboni"; name = "Diego Zamboni"; }; + mredaelli = { + email = "massimo@typish.io"; + github = "mredaelli"; + name = "Massimo Redaelli"; + }; } diff --git a/maintainers/scripts/copy-tarballs.pl b/maintainers/scripts/copy-tarballs.pl index 31e6045fb64..59696a4432d 100755 --- a/maintainers/scripts/copy-tarballs.pl +++ b/maintainers/scripts/copy-tarballs.pl @@ -1,5 +1,5 @@ #! /usr/bin/env nix-shell -#! nix-shell -i perl -p perl perlPackages.NetAmazonS3 perlPackages.FileSlurp nixUnstable nixUnstable.perl-bindings +#! nix-shell -i perl -p perl perlPackages.NetAmazonS3 perlPackages.FileSlurp perlPackages.JSON perlPackages.LWPProtocolHttps nixUnstable nixUnstable.perl-bindings # This command uploads tarballs to tarballs.nixos.org, the # content-addressed cache used by fetchurl as a fallback for when @@ -101,8 +101,8 @@ sub uploadFile { my ($name, $dest) = @_; #print STDERR "linking $name to $dest...\n"; $bucket->add_key($name, "", { - 'x-amz-website-redirect-location' => "/" . $dest, - 'x-amz-acl' => "public-read" + 'x-amz-website-redirect-location' => "/" . $dest, + 'x-amz-acl' => "public-read" }) or die "failed to create redirect from $name to $dest\n"; $cache{$name} = 1; @@ -116,8 +116,8 @@ sub uploadFile { # Upload the file as sha512/. print STDERR "uploading $fn to $mainKey...\n"; $bucket->add_key_filename($mainKey, $fn, { - 'x-amz-meta-original-name' => $name, - 'x-amz-acl' => "public-read" + 'x-amz-meta-original-name' => $name, + 'x-amz-acl' => "public-read" }) or die "failed to upload $fn to $mainKey\n"; $cache{$mainKey} = 1; diff --git a/maintainers/scripts/test-eval-release.sh b/maintainers/scripts/eval-release.sh similarity index 62% rename from maintainers/scripts/test-eval-release.sh rename to maintainers/scripts/eval-release.sh index 9ef531319e4..e0dfaf1de74 100755 --- a/maintainers/scripts/test-eval-release.sh +++ b/maintainers/scripts/eval-release.sh @@ -4,4 +4,8 @@ if [[ -z "$VERBOSE" ]]; then echo "You may set VERBOSE=1 to see debug output or to any other non-empty string to make this script completely silent" fi unset HOME NIXPKGS_CONFIG # Force empty config + +# With the default heap size (380MB), nix-instantiate fails: +# Too many heap sections: Increase MAXHINCR or MAX_HEAP_SECTS +export GC_INITIAL_HEAP_SIZE=${GC_INITIAL_HEAP_SIZE:-2000000000} # 2GB nix-instantiate --strict --eval-only --xml --show-trace "$(dirname "$0")"/eval-release.nix 2>&1 > /dev/null diff --git a/maintainers/scripts/find-tarballs.nix b/maintainers/scripts/find-tarballs.nix index bd6afda900c..52cce909918 100644 --- a/maintainers/scripts/find-tarballs.nix +++ b/maintainers/scripts/find-tarballs.nix @@ -31,7 +31,7 @@ let if !canEval x then [] else if isDerivation x then optional (canEval x.drvPath) x else if isList x then concatLists (map derivationsIn' x) - else if isAttrs x then concatLists (mapAttrsToList (n: v: derivationsIn' v) x) + else if isAttrs x then concatLists (mapAttrsToList (n: v: addErrorContext "while finding tarballs in '${n}':" (derivationsIn' v)) x) else [ ]; keyDrv = drv: if canEval drv.drvPath then { key = drv.drvPath; value = drv; } else { }; diff --git a/maintainers/scripts/nix-generate-from-cpan.nix b/maintainers/scripts/nix-generate-from-cpan.nix index ec406ac1a70..5c4cf0f6c55 100644 --- a/maintainers/scripts/nix-generate-from-cpan.nix +++ b/maintainers/scripts/nix-generate-from-cpan.nix @@ -4,7 +4,7 @@ stdenv.mkDerivation { name = "nix-generate-from-cpan-3"; buildInputs = with perlPackages; [ - makeWrapper perl CPANMeta GetoptLongDescriptive CPANPLUS Readonly LogLog4perl + makeWrapper perl GetoptLongDescriptive CPANPLUS Readonly LogLog4perl ]; phases = [ "installPhase" ]; diff --git a/maintainers/scripts/update-python-libraries b/maintainers/scripts/update-python-libraries index d95ff4f347e..4a6024c4038 100755 --- a/maintainers/scripts/update-python-libraries +++ b/maintainers/scripts/update-python-libraries @@ -1,361 +1,5 @@ -#! /usr/bin/env nix-shell -#! nix-shell -i python3 -p "python3.withPackages(ps: with ps; [ packaging requests toolz ])" -p git +#!/bin/sh +build=`nix-build -E "with import (fetchTarball "channel:nixpkgs-unstable") {}; python3.withPackages(ps: with ps; [ packaging requests toolz ])"` +python=${build}/bin/python +exec ${python} pkgs/development/interpreters/python/update-python-libraries/update-python-libraries.py $@ -""" -Update a Python package expression by passing in the `.nix` file, or the directory containing it. -You can pass in multiple files or paths. - -You'll likely want to use -`` - $ ./update-python-libraries ../../pkgs/development/python-modules/* -`` -to update all libraries in that folder. -""" - -import argparse -import logging -import os -import re -import requests -import toolz -from concurrent.futures import ThreadPoolExecutor as Pool -from packaging.version import Version as _Version -from packaging.version import InvalidVersion -from packaging.specifiers import SpecifierSet -import collections -import subprocess - -INDEX = "https://pypi.io/pypi" -"""url of PyPI""" - -EXTENSIONS = ['tar.gz', 'tar.bz2', 'tar', 'zip', '.whl'] -"""Permitted file extensions. These are evaluated from left to right and the first occurance is returned.""" - -PRERELEASES = False - -import logging -logging.basicConfig(level=logging.INFO) - - -class Version(_Version, collections.abc.Sequence): - - def __init__(self, version): - super().__init__(version) - # We cannot use `str(Version(0.04.21))` because that becomes `0.4.21` - # https://github.com/avian2/unidecode/issues/13#issuecomment-354538882 - self.raw_version = version - - def __getitem__(self, i): - return self._version.release[i] - - def __len__(self): - return len(self._version.release) - - def __iter__(self): - yield from self._version.release - - -def _get_values(attribute, text): - """Match attribute in text and return all matches. - - :returns: List of matches. - """ - regex = '{}\s+=\s+"(.*)";'.format(attribute) - regex = re.compile(regex) - values = regex.findall(text) - return values - -def _get_unique_value(attribute, text): - """Match attribute in text and return unique match. - - :returns: Single match. - """ - values = _get_values(attribute, text) - n = len(values) - if n > 1: - raise ValueError("found too many values for {}".format(attribute)) - elif n == 1: - return values[0] - else: - raise ValueError("no value found for {}".format(attribute)) - -def _get_line_and_value(attribute, text): - """Match attribute in text. Return the line and the value of the attribute.""" - regex = '({}\s+=\s+"(.*)";)'.format(attribute) - regex = re.compile(regex) - value = regex.findall(text) - n = len(value) - if n > 1: - raise ValueError("found too many values for {}".format(attribute)) - elif n == 1: - return value[0] - else: - raise ValueError("no value found for {}".format(attribute)) - - -def _replace_value(attribute, value, text): - """Search and replace value of attribute in text.""" - old_line, old_value = _get_line_and_value(attribute, text) - new_line = old_line.replace(old_value, value) - new_text = text.replace(old_line, new_line) - return new_text - -def _fetch_page(url): - r = requests.get(url) - if r.status_code == requests.codes.ok: - return r.json() - else: - raise ValueError("request for {} failed".format(url)) - - -SEMVER = { - 'major' : 0, - 'minor' : 1, - 'patch' : 2, -} - - -def _determine_latest_version(current_version, target, versions): - """Determine latest version, given `target`. - """ - current_version = Version(current_version) - - def _parse_versions(versions): - for v in versions: - try: - yield Version(v) - except InvalidVersion: - pass - - versions = _parse_versions(versions) - - index = SEMVER[target] - - ceiling = list(current_version[0:index]) - if len(ceiling) == 0: - ceiling = None - else: - ceiling[-1]+=1 - ceiling = Version(".".join(map(str, ceiling))) - - # We do not want prereleases - versions = SpecifierSet(prereleases=PRERELEASES).filter(versions) - - if ceiling is not None: - versions = SpecifierSet(f"<{ceiling}").filter(versions) - - return (max(sorted(versions))).raw_version - - -def _get_latest_version_pypi(package, extension, current_version, target): - """Get latest version and hash from PyPI.""" - url = "{}/{}/json".format(INDEX, package) - json = _fetch_page(url) - - versions = json['releases'].keys() - version = _determine_latest_version(current_version, target, versions) - - try: - releases = json['releases'][version] - except KeyError as e: - raise KeyError('Could not find version {} for {}'.format(version, package)) from e - for release in releases: - if release['filename'].endswith(extension): - # TODO: In case of wheel we need to do further checks! - sha256 = release['digests']['sha256'] - break - else: - sha256 = None - return version, sha256 - - -def _get_latest_version_github(package, extension, current_version, target): - raise ValueError("updating from GitHub is not yet supported.") - - -FETCHERS = { - 'fetchFromGitHub' : _get_latest_version_github, - 'fetchPypi' : _get_latest_version_pypi, - 'fetchurl' : _get_latest_version_pypi, -} - - -DEFAULT_SETUPTOOLS_EXTENSION = 'tar.gz' - - -FORMATS = { - 'setuptools' : DEFAULT_SETUPTOOLS_EXTENSION, - 'wheel' : 'whl' -} - -def _determine_fetcher(text): - # Count occurences of fetchers. - nfetchers = sum(text.count('src = {}'.format(fetcher)) for fetcher in FETCHERS.keys()) - if nfetchers == 0: - raise ValueError("no fetcher.") - elif nfetchers > 1: - raise ValueError("multiple fetchers.") - else: - # Then we check which fetcher to use. - for fetcher in FETCHERS.keys(): - if 'src = {}'.format(fetcher) in text: - return fetcher - - -def _determine_extension(text, fetcher): - """Determine what extension is used in the expression. - - If we use: - - fetchPypi, we check if format is specified. - - fetchurl, we determine the extension from the url. - - fetchFromGitHub we simply use `.tar.gz`. - """ - if fetcher == 'fetchPypi': - try: - src_format = _get_unique_value('format', text) - except ValueError as e: - src_format = None # format was not given - - try: - extension = _get_unique_value('extension', text) - except ValueError as e: - extension = None # extension was not given - - if extension is None: - if src_format is None: - src_format = 'setuptools' - elif src_format == 'flit': - raise ValueError("Don't know how to update a Flit package.") - extension = FORMATS[src_format] - - elif fetcher == 'fetchurl': - url = _get_unique_value('url', text) - extension = os.path.splitext(url)[1] - if 'pypi' not in url: - raise ValueError('url does not point to PyPI.') - - elif fetcher == 'fetchFromGitHub': - raise ValueError('updating from GitHub is not yet implemented.') - - return extension - - -def _update_package(path, target): - - # Read the expression - with open(path, 'r') as f: - text = f.read() - - # Determine pname. - pname = _get_unique_value('pname', text) - - # Determine version. - version = _get_unique_value('version', text) - - # First we check how many fetchers are mentioned. - fetcher = _determine_fetcher(text) - - extension = _determine_extension(text, fetcher) - - new_version, new_sha256 = FETCHERS[fetcher](pname, extension, version, target) - - if new_version == version: - logging.info("Path {}: no update available for {}.".format(path, pname)) - return False - elif Version(new_version) <= Version(version): - raise ValueError("downgrade for {}.".format(pname)) - if not new_sha256: - raise ValueError("no file available for {}.".format(pname)) - - text = _replace_value('version', new_version, text) - text = _replace_value('sha256', new_sha256, text) - - with open(path, 'w') as f: - f.write(text) - - logging.info("Path {}: updated {} from {} to {}".format(path, pname, version, new_version)) - - result = { - 'path' : path, - 'target': target, - 'pname': pname, - 'old_version' : version, - 'new_version' : new_version, - #'fetcher' : fetcher, - } - - return result - - -def _update(path, target): - - # We need to read and modify a Nix expression. - if os.path.isdir(path): - path = os.path.join(path, 'default.nix') - - # If a default.nix does not exist, we quit. - if not os.path.isfile(path): - logging.info("Path {}: does not exist.".format(path)) - return False - - # If file is not a Nix expression, we quit. - if not path.endswith(".nix"): - logging.info("Path {}: does not end with `.nix`.".format(path)) - return False - - try: - return _update_package(path, target) - except ValueError as e: - logging.warning("Path {}: {}".format(path, e)) - return False - - -def _commit(path, pname, old_version, new_version, **kwargs): - """Commit result. - """ - - msg = f'python: {pname}: {old_version} -> {new_version}' - - try: - subprocess.check_call(['git', 'add', path]) - subprocess.check_call(['git', 'commit', '-m', msg]) - except subprocess.CalledProcessError as e: - subprocess.check_call(['git', 'checkout', path]) - raise subprocess.CalledProcessError(f'Could not commit {path}') from e - - return True - - -def main(): - - parser = argparse.ArgumentParser() - parser.add_argument('package', type=str, nargs='+') - parser.add_argument('--target', type=str, choices=SEMVER.keys(), default='major') - parser.add_argument('--commit', action='store_true', help='Create a commit for each package update') - - args = parser.parse_args() - target = args.target - - packages = list(map(os.path.abspath, args.package)) - - logging.info("Updating packages...") - - # Use threads to update packages concurrently - with Pool() as p: - results = list(p.map(lambda pkg: _update(pkg, target), packages)) - - logging.info("Finished updating packages.") - - # Commits are created sequentially. - if args.commit: - logging.info("Committing updates...") - list(map(lambda x: _commit(**x), filter(bool, results))) - logging.info("Finished committing updates") - - count = sum(map(bool, results)) - logging.info("{} package(s) updated".format(count)) - - - -if __name__ == '__main__': - main() diff --git a/maintainers/scripts/update.nix b/maintainers/scripts/update.nix index 8d1e47c6bc9..120cd5552f4 100755 --- a/maintainers/scripts/update.nix +++ b/maintainers/scripts/update.nix @@ -1,6 +1,8 @@ { package ? null , maintainer ? null , path ? null +, max-workers ? null +, keep-going ? null }: # TODO: add assert statements @@ -105,26 +107,23 @@ let % nix-shell maintainers/scripts/update.nix --argstr path gnome3 to run update script for all package under an attribute path. + + You can also add + + --argstr max-workers 8 + + to increase the number of jobs in parallel, or + + --argstr keep-going true + + to continue running when a single update fails. ''; - runUpdateScript = package: '' - echo -ne " - ${package.name}: UPDATING ..."\\r - ${package.updateScript} &> ${(builtins.parseDrvName package.name).name}.log - CODE=$? - if [ "$CODE" != "0" ]; then - echo " - ${package.name}: ERROR " - echo "" - echo "--- SHOWING ERROR LOG FOR ${package.name} ----------------------" - echo "" - cat ${(builtins.parseDrvName package.name).name}.log - echo "" - echo "--- SHOWING ERROR LOG FOR ${package.name} ----------------------" - exit $CODE - else - rm ${(builtins.parseDrvName package.name).name}.log - fi - echo " - ${package.name}: DONE. " - ''; + packageData = package: { + name = package.name; + pname = (builtins.parseDrvName package.name).name; + updateScript = pkgs.lib.toList package.updateScript; + }; in pkgs.stdenv.mkDerivation { name = "nixpkgs-update-script"; @@ -139,21 +138,7 @@ in pkgs.stdenv.mkDerivation { exit 1 ''; shellHook = '' - echo "" - echo "Going to be running update for following packages:" - echo "${builtins.concatStringsSep "\n" (map (x: " - ${x.name}") packages)}" - echo "" - read -n1 -r -p "Press space to continue..." confirm - if [ "$confirm" = "" ]; then - echo "" - echo "Running update for:" - ${builtins.concatStringsSep "\n" (map runUpdateScript packages)} - echo "" - echo "Packages updated!" - exit 0 - else - echo "Aborting!" - exit 1 - fi + unset shellHook # do not contaminate nested shells + exec ${pkgs.python3.interpreter} ${./update.py} ${pkgs.writeText "packages.json" (builtins.toJSON (map packageData packages))}${pkgs.lib.optionalString (max-workers != null) " --max-workers=${max-workers}"}${pkgs.lib.optionalString (keep-going == "true") " --keep-going"} ''; } diff --git a/maintainers/scripts/update.py b/maintainers/scripts/update.py new file mode 100644 index 00000000000..eb7d0ef2647 --- /dev/null +++ b/maintainers/scripts/update.py @@ -0,0 +1,79 @@ +import argparse +import concurrent.futures +import json +import os +import subprocess +import sys + +updates = {} + +def eprint(*args, **kwargs): + print(*args, file=sys.stderr, **kwargs) + +def run_update_script(package): + eprint(f" - {package['name']}: UPDATING ...") + + subprocess.run(package['updateScript'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, check=True) + + +def main(max_workers, keep_going, packages): + with open(sys.argv[1]) as f: + packages = json.load(f) + + eprint() + eprint('Going to be running update for following packages:') + for package in packages: + eprint(f" - {package['name']}") + eprint() + + confirm = input('Press Enter key to continue...') + if confirm == '': + eprint() + eprint('Running update for:') + + with concurrent.futures.ProcessPoolExecutor(max_workers=max_workers) as executor: + for package in packages: + updates[executor.submit(run_update_script, package)] = package + + for future in concurrent.futures.as_completed(updates): + package = updates[future] + + try: + future.result() + eprint(f" - {package['name']}: DONE.") + except subprocess.CalledProcessError as e: + eprint(f" - {package['name']}: ERROR") + eprint() + eprint(f"--- SHOWING ERROR LOG FOR {package['name']} ----------------------") + eprint() + eprint(e.stdout.decode('utf-8')) + with open(f"{package['pname']}.log", 'wb') as f: + f.write(e.stdout) + eprint() + eprint(f"--- SHOWING ERROR LOG FOR {package['name']} ----------------------") + + if not keep_going: + sys.exit(1) + + eprint() + eprint('Packages updated!') + sys.exit() + else: + eprint('Aborting!') + sys.exit(130) + +parser = argparse.ArgumentParser(description='Update packages') +parser.add_argument('--max-workers', '-j', dest='max_workers', type=int, help='Number of updates to run concurrently', nargs='?', default=4) +parser.add_argument('--keep-going', '-k', dest='keep_going', action='store_true', help='Do not stop after first failure') +parser.add_argument('packages', help='JSON file containing the list of package names and their update scripts') + +if __name__ == '__main__': + args = parser.parse_args() + + try: + main(args.max_workers, args.keep_going, args.packages) + except (KeyboardInterrupt, SystemExit) as e: + for update in updates: + update.cancel() + + sys.exit(e.code if isinstance(e, SystemExit) else 130) diff --git a/nixos/doc/manual/administration/container-networking.xml b/nixos/doc/manual/administration/container-networking.xml index 8aca329c8f1..2ee8bfdd50f 100644 --- a/nixos/doc/manual/administration/container-networking.xml +++ b/nixos/doc/manual/administration/container-networking.xml @@ -52,6 +52,7 @@ $ ping -c1 10.233.4.2 networking.networkmanager.unmanaged = [ "interface-name:ve-*" ]; + You may need to restart your system for the changes to take effect. diff --git a/nixos/doc/manual/administration/declarative-containers.xml b/nixos/doc/manual/administration/declarative-containers.xml index 2a98fb12623..d03dbc4d705 100644 --- a/nixos/doc/manual/administration/declarative-containers.xml +++ b/nixos/doc/manual/administration/declarative-containers.xml @@ -15,7 +15,7 @@ containers.database = { config = { config, pkgs, ... }: { = true; - = pkgs.postgresql96; + = pkgs.postgresql_9_6; }; }; diff --git a/nixos/doc/manual/configuration/adding-custom-packages.xml b/nixos/doc/manual/configuration/adding-custom-packages.xml index 028a9427534..cdcfa10b820 100644 --- a/nixos/doc/manual/configuration/adding-custom-packages.xml +++ b/nixos/doc/manual/configuration/adding-custom-packages.xml @@ -31,7 +31,7 @@ $ cd nixpkgs The second possibility is to add the package outside of the Nixpkgs tree. For instance, here is how you specify a build of the - GNU Hello + GNU Hello package directly in configuration.nix: = diff --git a/nixos/doc/manual/configuration/config-file.xml b/nixos/doc/manual/configuration/config-file.xml index 8a1a39c98c1..c77cfe137ba 100644 --- a/nixos/doc/manual/configuration/config-file.xml +++ b/nixos/doc/manual/configuration/config-file.xml @@ -197,10 +197,10 @@ swapDevices = [ { device = "/dev/disk/by-label/swap"; } ]; pkgs.emacs ]; - = pkgs.postgresql90; + = pkgs.postgresql_10; The latter option definition changes the default PostgreSQL package used - by NixOS’s PostgreSQL service to 9.0. For more information on packages, + by NixOS’s PostgreSQL service to 10.x. For more information on packages, including how to add new ones, see . diff --git a/nixos/doc/manual/configuration/configuration.xml b/nixos/doc/manual/configuration/configuration.xml index 8d05dcd34b4..cebc4122c6c 100644 --- a/nixos/doc/manual/configuration/configuration.xml +++ b/nixos/doc/manual/configuration/configuration.xml @@ -22,5 +22,6 @@ + diff --git a/nixos/doc/manual/configuration/firewall.xml b/nixos/doc/manual/configuration/firewall.xml index b66adcedce6..47a19ac82c0 100644 --- a/nixos/doc/manual/configuration/firewall.xml +++ b/nixos/doc/manual/configuration/firewall.xml @@ -34,13 +34,4 @@ Similarly, UDP port ranges can be opened through . - - - Also of interest is - - = true; - - to allow the machine to respond to ping requests. (ICMPv6 pings are always - allowed.) -
diff --git a/nixos/doc/manual/configuration/modularity.xml b/nixos/doc/manual/configuration/modularity.xml index 298ffd661f6..5ff5bc22c85 100644 --- a/nixos/doc/manual/configuration/modularity.xml +++ b/nixos/doc/manual/configuration/modularity.xml @@ -113,12 +113,10 @@ $ nixos-option [ "tun" "ipv6" "loop" ... ] Interactive exploration of the configuration is possible using - nix-repl, - a read-eval-print loop for Nix expressions. It’s not installed by default; - run nix-env -i nix-repl to get it. A typical use: + nix repl, a read-eval-print loop for Nix expressions. + A typical use: -$ nix-repl '<nixpkgs/nixos>' +$ nix repl '<nixpkgs/nixos>' nix-repl> config. "mandark" @@ -127,4 +125,23 @@ nix-repl> map (x: x.hostName) config. + + + While abstracting your configuration, you may find it useful to generate + modules using code, instead of writing files. The example + below would have the same effect as importing a file which sets those + options. + + { config, pkgs, ... }: + + let netConfig = { hostName }: { + networking.hostName = hostName; + networking.useDHCP = false; + }; + + in + + { imports = [ (netConfig "nixos.localdomain") ]; } + + diff --git a/nixos/doc/manual/configuration/profiles.xml b/nixos/doc/manual/configuration/profiles.xml new file mode 100644 index 00000000000..92c0f6202f2 --- /dev/null +++ b/nixos/doc/manual/configuration/profiles.xml @@ -0,0 +1,39 @@ + + Profiles + + In some cases, it may be desirable to take advantage of commonly-used, + predefined configurations provided by nixpkgs, but different from those that + come as default. This is a role fulfilled by NixOS's Profiles, which come as + files living in <nixpkgs/nixos/modules/profiles>. + That is to say, expected usage is to add them to the imports list of your + /etc/configuration.nix as such: + + + imports = [ + <nixpkgs/nixos/modules/profiles/profile-name.nix> + ]; + + + Even if some of these profiles seem only useful in the context of + install media, many are actually intended to be used in real installs. + + + What follows is a brief explanation on the purpose and use-case for each + profile. Detailing each option configured by each one is out of scope. + + + + + + + + + + + + + diff --git a/nixos/doc/manual/configuration/profiles/all-hardware.xml b/nixos/doc/manual/configuration/profiles/all-hardware.xml new file mode 100644 index 00000000000..17297519947 --- /dev/null +++ b/nixos/doc/manual/configuration/profiles/all-hardware.xml @@ -0,0 +1,20 @@ + +
+ All Hardware + + Enables all hardware supported by NixOS: i.e., all firmware is + included, and all devices from which one may boot are enabled in the initrd. + Its primary use is in the NixOS installation CDs. + + + The enabled kernel modules include support for SATA and PATA, SCSI + (partially), USB, Firewire (untested), Virtio (QEMU, KVM, etc.), VMware, and + Hyper-V. Additionally, is + enabled, and the firmware for the ZyDAS ZD1211 chipset is specifically + installed. + +
diff --git a/nixos/doc/manual/configuration/profiles/base.xml b/nixos/doc/manual/configuration/profiles/base.xml new file mode 100644 index 00000000000..f58a35d626e --- /dev/null +++ b/nixos/doc/manual/configuration/profiles/base.xml @@ -0,0 +1,15 @@ + +
+ Base + + Defines the software packages included in the "minimal" + installation CD. It installs several utilities useful in a simple recovery or + install media, such as a text-mode web browser, and tools for manipulating + block devices, networking, hardware diagnostics, and filesystems (with their + respective kernel modules). + +
diff --git a/nixos/doc/manual/configuration/profiles/clone-config.xml b/nixos/doc/manual/configuration/profiles/clone-config.xml new file mode 100644 index 00000000000..87c8b9ee31b --- /dev/null +++ b/nixos/doc/manual/configuration/profiles/clone-config.xml @@ -0,0 +1,14 @@ + +
+ Clone Config + + This profile is used in installer images. + It provides an editable configuration.nix that imports all the modules that + were also used when creating the image in the first place. + As a result it allows users to edit and rebuild the live-system. + +
diff --git a/nixos/doc/manual/configuration/profiles/demo.xml b/nixos/doc/manual/configuration/profiles/demo.xml new file mode 100644 index 00000000000..98829e4696d --- /dev/null +++ b/nixos/doc/manual/configuration/profiles/demo.xml @@ -0,0 +1,13 @@ + +
+ Demo + + This profile just enables a demo user, with password demo, uid 1000, wheel + group and + autologin in the SDDM display manager. + +
diff --git a/nixos/doc/manual/configuration/profiles/docker-container.xml b/nixos/doc/manual/configuration/profiles/docker-container.xml new file mode 100644 index 00000000000..bf962442cce --- /dev/null +++ b/nixos/doc/manual/configuration/profiles/docker-container.xml @@ -0,0 +1,15 @@ + +
+ Docker Container + + This is the profile from which the Docker images are generated. It prepares a + working system by importing the Minimal and + Clone Config profiles, and setting appropriate + configuration options that are useful inside a container context, like + . + +
diff --git a/nixos/doc/manual/configuration/profiles/graphical.xml b/nixos/doc/manual/configuration/profiles/graphical.xml new file mode 100644 index 00000000000..5ded61d9763 --- /dev/null +++ b/nixos/doc/manual/configuration/profiles/graphical.xml @@ -0,0 +1,21 @@ + +
+ Graphical + + Defines a NixOS configuration with the Plasma 5 desktop. It's used by the + graphical installation CD. + + + It sets , + , + ( + + without Qt4 Support), and + to true. It also + includes glxinfo and firefox in the system packages list. + +
diff --git a/nixos/doc/manual/configuration/profiles/hardened.xml b/nixos/doc/manual/configuration/profiles/hardened.xml new file mode 100644 index 00000000000..b3b433792f5 --- /dev/null +++ b/nixos/doc/manual/configuration/profiles/hardened.xml @@ -0,0 +1,22 @@ + +
+ Hardened + + A profile with most (vanilla) hardening options enabled by default, + potentially at the cost of features and performance. + + + This includes a hardened kernel, and limiting the system information + available to processes through the /sys and + /proc filesystems. It also disables the User Namespaces + feature of the kernel, which stops Nix from being able to build anything + (this particular setting can be overriden via + ). See the + profile source for further detail on which settings are altered. + +
diff --git a/nixos/doc/manual/configuration/profiles/headless.xml b/nixos/doc/manual/configuration/profiles/headless.xml new file mode 100644 index 00000000000..54dc61f236e --- /dev/null +++ b/nixos/doc/manual/configuration/profiles/headless.xml @@ -0,0 +1,18 @@ + +
+ Headless + + Common configuration for headless machines (e.g., Amazon EC2 instances). + + + Disables sound, + vesa, serial consoles, + emergency mode, + grub splash images and + configures the kernel to reboot automatically on panic. + +
diff --git a/nixos/doc/manual/configuration/profiles/installation-device.xml b/nixos/doc/manual/configuration/profiles/installation-device.xml new file mode 100644 index 00000000000..44ccfc538ad --- /dev/null +++ b/nixos/doc/manual/configuration/profiles/installation-device.xml @@ -0,0 +1,35 @@ + +
+ Installation Device + + Provides a basic configuration for installation devices like CDs. This means + enabling hardware scans, using the + Clone Config profile to guarantee + /etc/nixos/configuration.nix exists (for + nixos-rebuild to work), a copy of the Nixpkgs channel + snapshot used to create the install media. + + + Additionally, documentation for + Nixpkgs and NixOS + are forcefully enabled (to override the + Minimal profile preference); the + NixOS manual is shown automatically on TTY 8, sudo and udisks are disabled. + Autologin is enabled as root. + + + A message is shown to the user to start a display manager if needed, + ssh with are enabled (but + doesn't autostart). WPA Supplicant is also enabled without autostart. + + + Finally, vim is installed, root is set to not have a password, the kernel is + made more silent for remote public IP installs, and several settings are + tweaked so that the installer has a better chance of succeeding under + low-memory environments. + +
diff --git a/nixos/doc/manual/configuration/profiles/minimal.xml b/nixos/doc/manual/configuration/profiles/minimal.xml new file mode 100644 index 00000000000..a24af21bd7f --- /dev/null +++ b/nixos/doc/manual/configuration/profiles/minimal.xml @@ -0,0 +1,17 @@ + +
+ Minimal + + This profile defines a small NixOS configuration. It does not contain any + graphical stuff. It's a very short file that enables + noXlibs, sets + i18n.supportedLocales + to only support the user-selected locale, + disables packages' documentation + , and disables sound. + +
diff --git a/nixos/doc/manual/configuration/profiles/qemu-guest.xml b/nixos/doc/manual/configuration/profiles/qemu-guest.xml new file mode 100644 index 00000000000..d08068650fb --- /dev/null +++ b/nixos/doc/manual/configuration/profiles/qemu-guest.xml @@ -0,0 +1,16 @@ +
+ QEMU Guest + + This profile contains common configuration for virtual machines running under + QEMU (using virtio). + + + It makes virtio modules available on the initrd, sets the system time from + the hardware clock to work around a bug in qemu-kvm, and + enables rngd. + +
diff --git a/nixos/doc/manual/configuration/x-windows.xml b/nixos/doc/manual/configuration/x-windows.xml index 703a1b8b7f0..e7d66f391f5 100644 --- a/nixos/doc/manual/configuration/x-windows.xml +++ b/nixos/doc/manual/configuration/x-windows.xml @@ -35,11 +35,11 @@ NixOS’s default display manager (the program that - provides a graphical login prompt and manages the X server) is SLiM. You can + provides a graphical login prompt and manages the X server) is LightDM. You can select an alternative one by picking one of the following lines: = true; - = true; + = true; diff --git a/nixos/doc/manual/development/debugging-nixos-tests.xml b/nixos/doc/manual/development/debugging-nixos-tests.xml deleted file mode 100644 index 30e58e1e355..00000000000 --- a/nixos/doc/manual/development/debugging-nixos-tests.xml +++ /dev/null @@ -1,37 +0,0 @@ -
- Debugging NixOS tests - - - Tests may fail and infrastructure offers access to inspect machine state. - - - - To prevent test from stopping and cleaning up, insert a sleep command: - - - -$machine->succeed("sleep 84000"); - - - - As soon as machine starts run as root: - - - -nix-shell -p socat --run "socat STDIO,raw,echo=0,escape=0x11 UNIX:/tmp/nix-build-vm-test-run-*.drv-0/vm-state-machine/backdoor" - - - - You may need to find the correct path, replacing /tmp, - * or machine. - - - - Press "enter" to open up console and login as "root". After you're done, - press "ctrl-q" to exit the console. - -
diff --git a/nixos/doc/manual/development/nixos-tests.xml b/nixos/doc/manual/development/nixos-tests.xml index d068887200a..2695082e386 100644 --- a/nixos/doc/manual/development/nixos-tests.xml +++ b/nixos/doc/manual/development/nixos-tests.xml @@ -16,5 +16,4 @@ xlink:href="https://github.com/NixOS/nixpkgs/tree/master/nixos/tests">nixos/test - diff --git a/nixos/doc/manual/development/option-types.xml b/nixos/doc/manual/development/option-types.xml index e6c9eae11a7..d993e47bc91 100644 --- a/nixos/doc/manual/development/option-types.xml +++ b/nixos/doc/manual/development/option-types.xml @@ -106,7 +106,7 @@
- + types.ints.{u8, u16, u32} @@ -131,6 +131,17 @@ + + + types.port + + + + A port number. This type is an alias to + types.ints.u16. + + + diff --git a/nixos/doc/manual/development/running-nixos-tests-interactively.xml b/nixos/doc/manual/development/running-nixos-tests-interactively.xml index b25d3dcb911..c15ad448317 100644 --- a/nixos/doc/manual/development/running-nixos-tests-interactively.xml +++ b/nixos/doc/manual/development/running-nixos-tests-interactively.xml @@ -19,7 +19,7 @@ starting VDE switch for network 1 > startAll > testScript > $machine->succeed("touch /tmp/foo") -> print($machine->succeed("pwd"), "\n") # Show stdout of command +> print($machine->succeed("pwd")) # Show stdout of command
The function testScript executes the entire test script and drops you back into the test driver command line upon its completion. diff --git a/nixos/doc/manual/development/writing-nixos-tests.xml b/nixos/doc/manual/development/writing-nixos-tests.xml index 983f8f9cbe3..4a2615c9407 100644 --- a/nixos/doc/manual/development/writing-nixos-tests.xml +++ b/nixos/doc/manual/development/writing-nixos-tests.xml @@ -108,7 +108,7 @@ xlink:href="https://github.com/NixOS/nixpkgs/blob/master/nixos/modules/virtualis $machine->start; $machine->waitForUnit("default.target"); -die unless $machine->succeed("uname") =~ /Linux/; +$machine->succeed("uname") =~ /Linux/ or die; The first line is actually unnecessary; machines are implicitly started when you first execute an action on them (such as waitForUnit diff --git a/nixos/doc/manual/installation/installing-usb.xml b/nixos/doc/manual/installation/installing-usb.xml index 0b311189430..3a81b3a2040 100644 --- a/nixos/doc/manual/installation/installing-usb.xml +++ b/nixos/doc/manual/installation/installing-usb.xml @@ -23,7 +23,7 @@ $ diskutil list [..] $ diskutil unmountDisk diskN Unmount of all volumes on diskN was successful -$ sudo dd bs=1m if=nix.iso of=/dev/rdiskN +$ sudo dd bs=1000000 if=nix.iso of=/dev/rdiskN Using the 'raw' rdiskN device instead of diskN completes in minutes instead of hours. After diff --git a/nixos/doc/manual/installation/installing-virtualbox-guest.xml b/nixos/doc/manual/installation/installing-virtualbox-guest.xml index da78b480f5a..766785dfe07 100644 --- a/nixos/doc/manual/installation/installing-virtualbox-guest.xml +++ b/nixos/doc/manual/installation/installing-virtualbox-guest.xml @@ -77,18 +77,22 @@ Shared folders can be given a name and a path in the host system in the VirtualBox settings (Machine / Settings / Shared Folders, then click on the "Add" icon). Add the following to the - /etc/nixos/configuration.nix to auto-mount them: + /etc/nixos/configuration.nix to auto-mount them. If you + do not add "nofail", the system will no boot properly. + The same goes for disabling rngd which is normally used + to get randomness but this does not work in virtual machines. { config, pkgs, ...} : { + security.rngd.enable = false; // otherwise vm will not boot ... fileSystems."/virtualboxshare" = { fsType = "vboxsf"; device = "nameofthesharedfolder"; - options = [ "rw" ]; + options = [ "rw" "nofail" ]; }; } diff --git a/nixos/doc/manual/man-nixos-generate-config.xml b/nixos/doc/manual/man-nixos-generate-config.xml index 1227873f578..43d6c2696a2 100644 --- a/nixos/doc/manual/man-nixos-generate-config.xml +++ b/nixos/doc/manual/man-nixos-generate-config.xml @@ -13,18 +13,18 @@ - nixos-generate-config + nixos-generate-config - + root - + @@ -167,7 +167,7 @@ $ nixos-generate-config --root /mnt { imports = - [ <nixos/modules/installer/scan/not-detected.nix> + [ <nixos/modules/installer/scan/not-detected.nix> ]; boot.initrd.availableKernelModules = [ "ehci_hcd" "ahci" ]; diff --git a/nixos/doc/manual/man-nixos-rebuild.xml b/nixos/doc/manual/man-nixos-rebuild.xml index 551a65f5e96..b6a247286d4 100644 --- a/nixos/doc/manual/man-nixos-rebuild.xml +++ b/nixos/doc/manual/man-nixos-rebuild.xml @@ -13,35 +13,35 @@ - nixos-rebuild + nixos-rebuild - + - + - + - + - + - + - + @@ -50,29 +50,33 @@ - + - + - + - + + + + builder-spec + - + - + @@ -315,6 +319,27 @@ $ ./result/bin/run-*-vm + + + + builder-spec + + + + Allow ad-hoc remote builders for building the new system. + This requires the user executing nixos-rebuild (usually + root) to be configured as a trusted user in the Nix daemon. This can be + achieved by using the nix.trustedUsers NixOS option. + Examples values for that option are described in the + Remote builds chapter in the Nix manual, + (i.e. --builders "ssh://bigbrother x86_64-linux"). + By specifying an empty string existing builders specified in + /etc/nix/machines can be ignored: + --builders "" for example when they are not + reachable due to network connectivity. + + + diff --git a/nixos/doc/manual/release-notes/rl-1412.xml b/nixos/doc/manual/release-notes/rl-1412.xml index 4d93aa644c1..139f61c2a55 100644 --- a/nixos/doc/manual/release-notes/rl-1412.xml +++ b/nixos/doc/manual/release-notes/rl-1412.xml @@ -17,7 +17,7 @@ - + Nix has been updated to 1.8. diff --git a/nixos/doc/manual/release-notes/rl-1809.xml b/nixos/doc/manual/release-notes/rl-1809.xml index c5521735428..8715a05f508 100644 --- a/nixos/doc/manual/release-notes/rl-1809.xml +++ b/nixos/doc/manual/release-notes/rl-1809.xml @@ -475,6 +475,48 @@ $ nix-instantiate -E '(import <nixpkgsunstable> {}).gitFull' + + + Some licenses that were incorrectly not marked as unfree now are. This is + the case for: + + + + cc-by-nc-sa-20: Creative Commons Attribution Non Commercial Share Alike + 2.0 + + + + + cc-by-nc-sa-25: Creative Commons Attribution Non Commercial Share Alike + 2.5 + + + + + cc-by-nc-sa-30: Creative Commons Attribution Non Commercial Share Alike + 3.0 + + + + + cc-by-nc-sa-40: Creative Commons Attribution Non Commercial Share Alike + 4.0 + + + + + cc-by-nd-30: Creative Commons Attribution-No Derivative Works v3.00 + + + + + msrla: Microsoft Research License Agreement + + + + + The deprecated services.cassandra module has seen a @@ -595,6 +637,11 @@ $ nix-instantiate -E '(import <nixpkgsunstable> {}).gitFull' anyways for clarity. + + + Groups kvm and render are introduced now, as systemd requires them. + + diff --git a/nixos/doc/manual/release-notes/rl-1903.xml b/nixos/doc/manual/release-notes/rl-1903.xml index 9cb5b93f27c..da3b75cf614 100644 --- a/nixos/doc/manual/release-notes/rl-1903.xml +++ b/nixos/doc/manual/release-notes/rl-1903.xml @@ -19,7 +19,9 @@ - + + The default Python 3 interpreter is now CPython 3.7 instead of CPython 3.6. + @@ -37,7 +39,18 @@ - + + ./programs/nm-applet.nix + + + + + There is a new security.googleOsLogin module for using + OS Login + to manage SSH access to Google Compute Engine instances, which supersedes + the imperative and broken google-accounts-daemon used + in nixos/modules/virtualisation/google-compute-config.nix. + @@ -99,6 +112,26 @@ + + + The Syncthing state and configuration data has been moved from + services.syncthing.dataDir to the newly defined + services.syncthing.configDir, which default to + /var/lib/syncthing/.config/syncthing. + This change makes possible to share synced directories using ACLs + without Syncthing resetting the permission on every start. + + + + + The ntp module now has sane default restrictions. + If you're relying on the previous defaults, which permitted all queries + and commands from all firewall-permitted sources, you can set + services.ntp.restrictDefault and + services.ntp.restrictSource to + []. + + Package rabbitmq_server is renamed to @@ -106,12 +139,216 @@ - - The light module no longer uses setuid binaries, but - udev rules. As a consequence users of that module have to belong to the - video group in order to use the executable - (i.e. users.users.yourusername.extraGroups = ["video"];). - + + The light module no longer uses setuid binaries, but + udev rules. As a consequence users of that module have to belong to the + video group in order to use the executable (i.e. + users.users.yourusername.extraGroups = ["video"];). + + + + + Buildbot now supports Python 3 and its packages have been moved to + pythonPackages. The options + and + can be used to select + the Python 2 or 3 version of the package. + + + + + Options + services.znc.confOptions.networks.name.userName and + services.znc.confOptions.networks.name.modulePackages + were removed. They were never used for anything and can therefore safely be removed. + + + + + Package wasm has been renamed proglodyte-wasm. The package + wasm will be pointed to ocamlPackages.wasm in 19.09, so + make sure to update your configuration if you want to keep proglodyte-wasm + + + + + When the nixpkgs.pkgs option is set, NixOS will no + longer ignore the nixpkgs.overlays option. The old + behavior can be recovered by setting nixpkgs.overlays = + lib.mkForce [];. + + + + + OpenSMTPD has been upgraded to version 6.4.0p1. This release makes + backwards-incompatible changes to the configuration file format. See + man smtpd.conf for more information on the new file + format. + + + + + The versioned postgresql have been renamed to use + underscore number seperators. For example, postgresql96 + has been renamed to postgresql_9_6. + + + + + Package consul-ui and passthrough consul.ui have been removed. + The package consul now uses upstream releases that vendor the UI into the binary. + See #48714 + for details. + + + + + Slurm introduces the new option + services.slurm.stateSaveLocation, + which is now set to /var/spool/slurm by default + (instead of /var/spool). + Make sure to move all files to the new directory or to set the option accordingly. + + + The slurmctld now runs as user slurm instead of root. + If you want to keep slurmctld running as root, set + services.slurm.user = root. + + + The options services.slurm.nodeName and + services.slurm.partitionName are now sets of + strings to correctly reflect that fact that each of these + options can occour more than once in the configuration. + + + + + The solr package has been upgraded from 4.10.3 to 7.5.0 and has undergone + some major changes. The services.solr module has been updated to reflect + these changes. Please review http://lucene.apache.org/solr/ carefully before upgrading. + + + + + Package ckb is renamed to ckb-next, + and options hardware.ckb.* are renamed to + hardware.ckb-next.*. + + + + + The option services.xserver.displayManager.job.logToFile which was + previously set to true when using the display managers + lightdm, sddm or xpra has been + reset to the default value (false). + + + + + Network interface indiscriminate NixOS firewall options + (networking.firewall.allow*) are now preserved when also + setting interface specific rules such as networking.firewall.interfaces.en0.allow*. + These rules continue to use the pseudo device "default" + (networking.firewall.interfaces.default.*), and assigning + to this pseudo device will override the (networking.firewall.allow*) + options. + + + + + The nscd service now disables all caching of + passwd and group databases by + default. This was interferring with the correct functioning of the + libnss_systemd.so module which is used by + systemd to manage uids and usernames in the presence of + DynamicUser= in systemd services. This was already the + default behaviour in presence of services.sssd.enable = + true because nscd caching would interfere with + sssd in unpredictable ways as well. Because we're + using nscd not for caching, but for convincing glibc to find NSS modules + in the nix store instead of an absolute path, we have decided to disable + caching globally now, as it's usually not the behaviour the user wants and + can lead to surprising behaviour. Furthermore, negative caching of host + lookups is also disabled now by default. This should fix the issue of dns + lookups failing in the presence of an unreliable network. + + + If the old behaviour is desired, this can be restored by setting + the services.nscd.config option + with the desired caching parameters. + + services.nscd.config = + '' + server-user nscd + threads 1 + paranoia no + debug-level 0 + + enable-cache passwd yes + positive-time-to-live passwd 600 + negative-time-to-live passwd 20 + suggested-size passwd 211 + check-files passwd yes + persistent passwd no + shared passwd yes + + enable-cache group yes + positive-time-to-live group 3600 + negative-time-to-live group 60 + suggested-size group 211 + check-files group yes + persistent group no + shared group yes + + enable-cache hosts yes + positive-time-to-live hosts 600 + negative-time-to-live hosts 5 + suggested-size hosts 211 + check-files hosts yes + persistent hosts no + shared hosts yes + ''; + + See #50316 + for details. + + + + + GitLab Shell previously used the nix store paths for the + gitlab-shell command in its + authorized_keys file, which might stop working after + garbage collection. To circumvent that, we regenerated that file on each + startup. As gitlab-shell has now been changed to use + /var/run/current-system/sw/bin/gitlab-shell, this is + not necessary anymore, but there might be leftover lines with a nix store + path. Regenerate the authorized_keys file via + sudo -u git -H gitlab-rake gitlab:shell:setup in that + case. + + + + + The pam_unix account module is now loaded with its + control field set to required instead of + sufficient, so that later pam account modules that + might do more extensive checks are being executed. + Previously, the whole account module verification was exited prematurely + in case a nss module provided the account name to + pam_unix. + The LDAP and SSSD NixOS modules already add their NSS modules when + enabled. In case your setup breaks due to some later pam account module + previosuly shadowed, or failing NSS lookups, please file a bug. You can + get back the old behaviour by manually setting + .text]]>. + + + + + fish has been upgraded to 3.0. + It comes with a number of improvements and backwards incompatible changes. + See the fish release notes for more information. + @@ -125,7 +362,66 @@ - + + The module gained the option + which determines the used + Matomo version. + + + + + composableDerivation along with supporting library functions + has been removed. + + + + + The deprecated truecrypt package has been removed + and truecrypt attribute is now an alias for + veracrypt. VeraCrypt is backward-compatible with + TrueCrypt volumes. Note that cryptsetup also + supports loading TrueCrypt volumes. + + + + + The Kubernetes DNS addons, kube-dns, has been replaced with CoreDNS. + This change is made in accordance with Kubernetes making CoreDNS the official default + starting from + Kubernetes v1.11. + Please beware that upgrading DNS-addon on existing clusters might induce + minor downtime while the DNS-addon terminates and re-initializes. + Also note that the DNS-service now runs with 2 pod replicas by default. + The desired number of replicas can be configured using: + . + + + + + The quassel-webserver package and module was removed from nixpkgs due to the lack + of maintainers. + + + + + The owncloud server packages and httpd subservice module were removed + from nixpkgs due to the lack of maintainers. + + + + + It is possible now to uze ZRAM devices as general purpose ephemeral block devices, + not only as swap. Using more than 1 device as ZRAM swap is no longer recommended, + but is still possible by setting zramSwap.swapDevices explicitly. + + + Default algorithm for ZRAM swap was changed to zstd. + + + Changes to ZRAM algorithm are applied during nixos-rebuild switch, + so make sure you have enough swap space on disk to survive ZRAM device rebuild. Alternatively, + use nixos-rebuild boot; reboot. + diff --git a/nixos/lib/build-vms.nix b/nixos/lib/build-vms.nix index 4f65501f89c..a5580f4712e 100644 --- a/nixos/lib/build-vms.nix +++ b/nixos/lib/build-vms.nix @@ -1,6 +1,13 @@ -{ system, minimal ? false, config ? {} }: - -let pkgs = import ../.. { inherit system config; }; in +{ system +, # Use a minimal kernel? + minimal ? false +, # Ignored + config ? null + # Nixpkgs, for qemu, lib and more +, pkgs +, # NixOS configuration to add to the VMs + extraConfigurations ? [] +}: with pkgs.lib; with import ../lib/qemu-flags.nix { inherit pkgs; }; @@ -30,7 +37,8 @@ rec { ../modules/testing/test-instrumentation.nix # !!! should only get added for automated test runs { key = "no-manual"; documentation.nixos.enable = false; } { key = "qemu"; system.build.qemu = qemu; } - ] ++ optional minimal ../modules/testing/minimal-kernel.nix; + ] ++ optional minimal ../modules/testing/minimal-kernel.nix + ++ extraConfigurations; extraArgs = { inherit nodes; }; }; @@ -75,6 +83,8 @@ rec { (m': let config = (getAttr m' nodes).config; in optionalString (config.networking.primaryIPAddress != "") ("${config.networking.primaryIPAddress} " + + optionalString (config.networking.domain != null) + "${config.networking.hostName}.${config.networking.domain} " + "${config.networking.hostName}\n")); virtualisation.qemu.options = diff --git a/nixos/lib/eval-config.nix b/nixos/lib/eval-config.nix index f71e264c347..5f05b037bdd 100644 --- a/nixos/lib/eval-config.nix +++ b/nixos/lib/eval-config.nix @@ -53,7 +53,8 @@ in rec { inherit prefix check; modules = modules ++ extraModules ++ baseModules ++ [ pkgsModule ]; args = extraArgs; - specialArgs = { modulesPath = ../modules; } // specialArgs; + specialArgs = + { modulesPath = builtins.toString ../modules; } // specialArgs; }) config options; # These are the extra arguments passed to every module. In diff --git a/nixos/lib/make-channel.nix b/nixos/lib/make-channel.nix index fd805f7f943..9b920b989fc 100644 --- a/nixos/lib/make-channel.nix +++ b/nixos/lib/make-channel.nix @@ -1,3 +1,7 @@ +/* Build a channel tarball. These contain, in addition to the nixpkgs + * expressions themselves, files that indicate the version of nixpkgs + * that they represent. + */ { pkgs, nixpkgs, version, versionSuffix }: pkgs.releaseTools.makeSourceTarball { diff --git a/nixos/lib/make-disk-image.nix b/nixos/lib/make-disk-image.nix index bf32a36895c..5e86ea479d5 100644 --- a/nixos/lib/make-disk-image.nix +++ b/nixos/lib/make-disk-image.nix @@ -27,6 +27,9 @@ , # The root file system type. fsType ? "ext4" +, # Filesystem label + label ? "nixos" + , # The initial NixOS configuration file to be copied to # /etc/nixos/configuration.nix. configFile ? null @@ -84,7 +87,7 @@ let format' = format; in let # FIXME: merge with channel.nix / make-channel.nix. channelSources = pkgs.runCommand "nixos-${config.system.nixos.version}" {} '' mkdir -p $out - cp -prd ${nixpkgs} $out/nixos + cp -prd ${nixpkgs.outPath} $out/nixos chmod -R u+w $out/nixos if [ ! -e $out/nixos/nixpkgs ]; then ln -s . $out/nixos/nixpkgs @@ -134,9 +137,9 @@ let format' = format; in let # Get start & length of the root partition in sectors to $START and $SECTORS. eval $(partx $diskImage -o START,SECTORS --nr ${rootPartition} --pairs) - mkfs.${fsType} -F -L nixos $diskImage -E offset=$(sectorsToBytes $START) $(sectorsToKilobytes $SECTORS)K + mkfs.${fsType} -F -L ${label} $diskImage -E offset=$(sectorsToBytes $START) $(sectorsToKilobytes $SECTORS)K '' else '' - mkfs.${fsType} -F -L nixos $diskImage + mkfs.${fsType} -F -L ${label} $diskImage ''} root="$PWD/root" diff --git a/nixos/lib/make-ext4-fs.nix b/nixos/lib/make-ext4-fs.nix index 88be8b73ab3..47c6374c81a 100644 --- a/nixos/lib/make-ext4-fs.nix +++ b/nixos/lib/make-ext4-fs.nix @@ -9,6 +9,7 @@ , e2fsprogs , libfaketime , perl +, lkl }: let @@ -18,16 +19,13 @@ in pkgs.stdenv.mkDerivation { name = "ext4-fs.img"; - nativeBuildInputs = [e2fsprogs.bin libfaketime perl]; + nativeBuildInputs = [e2fsprogs.bin libfaketime perl lkl]; buildCommand = '' # Add the closures of the top-level store objects. storePaths=$(cat ${sdClosureInfo}/store-paths) - # Also include a manifest of the closures in a format suitable for nix-store --load-db. - cp ${sdClosureInfo}/registration nix-path-registration - # Make a crude approximation of the size of the target image. # If the script starts failing, increase the fudge factors here. numInodes=$(find $storePaths | wc -l) @@ -38,55 +36,16 @@ pkgs.stdenv.mkDerivation { truncate -s $bytes $out faketime -f "1970-01-01 00:00:01" mkfs.ext4 -L ${volumeLabel} -U ${uuid} $out - # Populate the image contents by piping a bunch of commands to the `debugfs` tool from e2fsprogs. - # For example, to copy /nix/store/abcd...efg-coreutils-8.23/bin/sleep: - # cd /nix/store/abcd...efg-coreutils-8.23/bin - # write /nix/store/abcd...efg-coreutils-8.23/bin/sleep sleep - # sif sleep mode 040555 - # sif sleep gid 30000 - # In particular, debugfs doesn't handle absolute target paths; you have to 'cd' in the virtual - # filesystem first. Likewise the intermediate directories must already exist (using `find` - # handles that for us). And when setting the file's permissions, the inode type flags (__S_IFDIR, - # __S_IFREG) need to be set as well. - ( - echo write nix-path-registration nix-path-registration - echo mkdir nix - echo cd /nix - echo mkdir store + # Also include a manifest of the closures in a format suitable for nix-store --load-db. + cp ${sdClosureInfo}/registration nix-path-registration + cptofs -t ext4 -i $out nix-path-registration / - # XXX: This explodes in exciting ways if anything in /nix/store has a space in it. - find $storePaths -printf '%y %f %h %m\n'| while read -r type file dir perms; do - # echo "TYPE=$type DIR=$dir FILE=$file PERMS=$perms" >&2 + # Create nix/store before copying paths + faketime -f "1970-01-01 00:00:01" mkdir -p nix/store + cptofs -t ext4 -i $out nix / - echo "cd $dir" - case $type in - d) - echo "mkdir $file" - echo sif $file mode $((040000 | 0$perms)) # magic constant is __S_IFDIR - ;; - f) - echo "write $dir/$file $file" - echo sif $file mode $((0100000 | 0$perms)) # magic constant is __S_IFREG - ;; - l) - echo "symlink $file $(readlink "$dir/$file")" - ;; - *) - echo "Unknown entry: $type $dir $file $perms" >&2 - exit 1 - ;; - esac - - echo sif $file gid 30000 # chgrp to nixbld - done - ) | faketime -f "1970-01-01 00:00:01" debugfs -w $out -f /dev/stdin > errorlog 2>&1 - - # The debugfs tool doesn't terminate on error nor exit with a non-zero status. Check manually. - if egrep -q 'Could not allocate|File not found' errorlog; then - cat errorlog - echo "--- Failed to create EXT4 image of $bytes bytes (numInodes=$numInodes, numDataBlocks=$numDataBlocks) ---" - return 1 - fi + echo "copying store paths to image..." + cptofs -t ext4 -i $out $storePaths /nix/store/ # 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 $out; then @@ -94,5 +53,24 @@ pkgs.stdenv.mkDerivation { cat errorlog return 1 fi + + ( + # Resizes **snugly** to its actual limits (or closer to) + free=$(dumpe2fs $out | grep '^Free blocks:') + blocksize=$(dumpe2fs $out | grep '^Block size:') + blocks=$(dumpe2fs $out | 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 $out -f $size + ) + + # And a final fsck, because of the previous truncating. + fsck.ext4 -n -f $out ''; } diff --git a/nixos/lib/make-iso9660-image.sh b/nixos/lib/make-iso9660-image.sh index 45cdef1ef4d..b7b1ab52a63 100644 --- a/nixos/lib/make-iso9660-image.sh +++ b/nixos/lib/make-iso9660-image.sh @@ -47,7 +47,8 @@ if test -n "$bootable"; then isoBootFlags="-eltorito-boot ${bootImage} -eltorito-catalog .boot.cat - -no-emul-boot -boot-load-size 4 -boot-info-table" + -no-emul-boot -boot-load-size 4 -boot-info-table + --sort-weight 1 /isolinux" # Make sure isolinux is near the beginning of the ISO fi if test -n "$usbBootable"; then @@ -112,7 +113,7 @@ xorriso="xorriso -r -path-list pathlist --sort-weight 0 / - --sort-weight 1 /isolinux" # Make sure isolinux is near the beginning of the ISO +" $xorriso -output $out/iso/$isoName diff --git a/nixos/lib/make-squashfs.nix b/nixos/lib/make-squashfs.nix index 7ab84e47f53..ee76c9c5bf2 100644 --- a/nixos/lib/make-squashfs.nix +++ b/nixos/lib/make-squashfs.nix @@ -3,6 +3,9 @@ , # The root directory of the squashfs filesystem is filled with the # closures of the Nix store paths listed here. storeContents ? [] +, # Compression parameters. + # For zstd compression you can use "zstd -Xcompression-level 6". + comp ? "xz -Xdict-size 100%" }: stdenv.mkDerivation { @@ -20,6 +23,6 @@ stdenv.mkDerivation { # Generate the squashfs image. mksquashfs nix-path-registration $(cat $closureInfo/store-paths) $out \ - -keep-as-directory -all-root -b 1048576 -comp xz -Xdict-size 100% + -keep-as-directory -all-root -b 1048576 -comp ${comp} ''; } diff --git a/nixos/lib/make-system-tarball.nix b/nixos/lib/make-system-tarball.nix index 846013b02d1..dee91a6ce3f 100644 --- a/nixos/lib/make-system-tarball.nix +++ b/nixos/lib/make-system-tarball.nix @@ -1,4 +1,4 @@ -{ stdenv, perl, pixz, pathsFromGraph +{ stdenv, closureInfo, pixz , # The file name of the resulting tarball fileName ? "nixos-system-${stdenv.hostPlatform.system}" @@ -29,24 +29,28 @@ , extraInputs ? [ pixz ] }: +let + symlinks = map (x: x.symlink) storeContents; + objects = map (x: x.object) storeContents; +in + stdenv.mkDerivation { name = "tarball"; builder = ./make-system-tarball.sh; - buildInputs = [ perl ] ++ extraInputs; + buildInputs = extraInputs; - inherit fileName pathsFromGraph extraArgs extraCommands compressCommand; + inherit fileName extraArgs extraCommands compressCommand; # !!! should use XML. sources = map (x: x.source) contents; targets = map (x: x.target) contents; # !!! should use XML. - objects = map (x: x.object) storeContents; - symlinks = map (x: x.symlink) storeContents; + inherit symlinks objects; - # For obtaining the closure of `storeContents'. - exportReferencesGraph = - map (x: [("closure-" + baseNameOf x.object) x.object]) storeContents; + closureInfo = closureInfo { + rootPaths = objects; + }; extension = compressionExtension; } diff --git a/nixos/lib/make-system-tarball.sh b/nixos/lib/make-system-tarball.sh index 1a52a284a25..1a0017a1799 100644 --- a/nixos/lib/make-system-tarball.sh +++ b/nixos/lib/make-system-tarball.sh @@ -3,7 +3,6 @@ source $stdenv/setup sources_=($sources) targets_=($targets) -echo $objects objects=($objects) symlinks=($symlinks) @@ -14,8 +13,6 @@ stripSlash() { if test "${res:0:1}" = /; then res=${res:1}; fi } -touch pathlist - # Add the individual files. for ((i = 0; i < ${#targets_[@]}; i++)); do stripSlash "${targets_[$i]}" @@ -25,9 +22,9 @@ done # Add the closures of the top-level store objects. +chmod +w . mkdir -p nix/store -storePaths=$(perl $pathsFromGraph closure-*) -for i in $storePaths; do +for i in $(< $closureInfo/store-paths); do cp -a "$i" "${i:1}" done @@ -35,7 +32,7 @@ done # TODO tar ruxo # Also include a manifest of the closures in a format suitable for # nix-store --load-db. -printRegistration=1 perl $pathsFromGraph closure-* > nix-path-registration +cp $closureInfo/registration nix-path-registration # Add symlinks to the top-level store objects. for ((n = 0; n < ${#objects[*]}; n++)); do diff --git a/nixos/lib/test-driver/Logger.pm b/nixos/lib/test-driver/Logger.pm index 3fe5ef67c14..080310ea34e 100644 --- a/nixos/lib/test-driver/Logger.pm +++ b/nixos/lib/test-driver/Logger.pm @@ -4,6 +4,7 @@ use strict; use Thread::Queue; use XML::Writer; use Encode qw(decode encode); +use Time::HiRes qw(clock_gettime CLOCK_MONOTONIC); sub new { my ($class) = @_; @@ -46,10 +47,12 @@ sub nest { print STDERR maybePrefix("$msg\n", $attrs); $self->{log}->startTag("nest"); $self->{log}->dataElement("head", $msg, %{$attrs}); + my $now = clock_gettime(CLOCK_MONOTONIC); $self->drainLogQueue(); eval { &$coderef }; my $res = $@; $self->drainLogQueue(); + $self->log(sprintf("(%.2f seconds)", clock_gettime(CLOCK_MONOTONIC) - $now)); $self->{log}->endTag("nest"); die $@ if $@; } diff --git a/nixos/lib/test-driver/Machine.pm b/nixos/lib/test-driver/Machine.pm index a00fe25c2b8..006da889671 100644 --- a/nixos/lib/test-driver/Machine.pm +++ b/nixos/lib/test-driver/Machine.pm @@ -10,6 +10,7 @@ use Cwd; use File::Basename; use File::Path qw(make_path); use File::Slurp; +use Time::HiRes qw(clock_gettime CLOCK_MONOTONIC); my $showGraphics = defined $ENV{'DISPLAY'}; @@ -155,10 +156,8 @@ sub start { $ENV{USE_TMPDIR} = 1; $ENV{QEMU_OPTS} = ($self->{allowReboot} ? "" : "-no-reboot ") . - "-monitor unix:./monitor " . - "-chardev socket,id=shell,path=./shell -device virtio-serial -device virtconsole,chardev=shell " . - # socket backdoor, see "Debugging NixOS tests" section in NixOS manual - "-chardev socket,id=backdoor,path=./backdoor,server,nowait -device virtio-serial -device virtconsole,chardev=backdoor " . + "-monitor unix:./monitor -chardev socket,id=shell,path=./shell " . + "-device virtio-serial -device virtconsole,chardev=shell " . "-device virtio-rng-pci " . ($showGraphics ? "-serial stdio" : "-nographic") . " " . ($ENV{QEMU_OPTS} || ""); chdir $self->{stateDir} or die; @@ -249,12 +248,15 @@ sub connect { $self->start; + my $now = clock_gettime(CLOCK_MONOTONIC); local $SIG{ALRM} = sub { die "timed out waiting for the VM to connect\n"; }; - alarm 300; + alarm 600; readline $self->{socket} or die "the VM quit before connecting\n"; alarm 0; $self->log("connected to guest root shell"); + # We're interested in tracking how close we are to `alarm`. + $self->log(sprintf("(connecting took %.2f seconds)", clock_gettime(CLOCK_MONOTONIC) - $now)); $self->{connected} = 1; }); diff --git a/nixos/lib/testing.nix b/nixos/lib/testing.nix index 42a0c60c7e1..e68563ef48d 100644 --- a/nixos/lib/testing.nix +++ b/nixos/lib/testing.nix @@ -1,6 +1,13 @@ -{ system, minimal ? false, config ? {} }: +{ system +, pkgs ? import ../.. { inherit system config; } + # Use a minimal kernel? +, minimal ? false + # Ignored +, config ? null + # Modules to add to each VM +, extraConfigurations ? [] }: -with import ./build-vms.nix { inherit system minimal config; }; +with import ./build-vms.nix { inherit system pkgs minimal extraConfigurations; }; with pkgs; let @@ -27,14 +34,14 @@ in rec { cp ${./test-driver/test-driver.pl} $out/bin/nixos-test-driver chmod u+x $out/bin/nixos-test-driver - libDir=$out/lib/perl5/site_perl + libDir=$out/${perl.libPrefix} mkdir -p $libDir cp ${./test-driver/Machine.pm} $libDir/Machine.pm cp ${./test-driver/Logger.pm} $libDir/Logger.pm wrapProgram $out/bin/nixos-test-driver \ --prefix PATH : "${lib.makeBinPath [ qemu_test vde2 netpbm coreutils ]}" \ - --prefix PERL5LIB : "${with perlPackages; lib.makePerlPath [ TermReadLineGnu XMLWriter IOTty FileSlurp ]}:$out/lib/perl5/site_perl" + --prefix PERL5LIB : "${with perlPackages; makePerlPath [ TermReadLineGnu XMLWriter IOTty FileSlurp ]}:$out/${perl.libPrefix}" ''; }; @@ -69,7 +76,7 @@ in rec { mkdir -p $out/coverage-data mv $i $out/coverage-data/$(dirname $(dirname $i)) done - ''; # */ + ''; }; @@ -109,7 +116,7 @@ in rec { vms = map (m: m.config.system.build.vm) (lib.attrValues nodes); - ocrProg = tesseract_4.override { enableLanguages = [ "eng" ]; }; + ocrProg = tesseract4.override { enableLanguages = [ "eng" ]; }; imagemagick_tiff = imagemagick_light.override { inherit libtiff; }; @@ -149,9 +156,23 @@ in rec { test = passMeta (runTests driver); report = passMeta (releaseTools.gcovReport { coverageRuns = [ test ]; }); - in (if makeCoverageReport then report else test) // { - inherit nodes driver test; - }; + nodeNames = builtins.attrNames nodes; + invalidNodeNames = lib.filter + (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 + script when special characters are used. + + Please stick to alphanumeric chars and underscores as separation. + '' + else + (if makeCoverageReport then report else test) // { + inherit nodes driver test; + }; runInMachine = { drv diff --git a/nixos/lib/utils.nix b/nixos/lib/utils.nix index 1ef915d4061..b68e55a40b9 100644 --- a/nixos/lib/utils.nix +++ b/nixos/lib/utils.nix @@ -7,9 +7,8 @@ rec { || elem fs.mountPoint [ "/" "/nix" "/nix/store" "/var" "/var/log" "/var/lib" "/etc" ]; # Check whenever `b` depends on `a` as a fileSystem - # FIXME: it's incorrect to simply use hasPrefix here: "/dev/a" is not a parent of "/dev/ab" - fsBefore = a: b: ((any (x: elem x [ "bind" "move" ]) b.options) && (a.mountPoint == b.device)) - || (hasPrefix a.mountPoint b.mountPoint); + fsBefore = a: b: a.mountPoint == b.device + || hasPrefix "${a.mountPoint}${optionalString (!(hasSuffix "/" a.mountPoint)) "/"}" b.mountPoint; # Escape a path according to the systemd rules, e.g. /dev/xyzzy # becomes dev-xyzzy. FIXME: slow. diff --git a/nixos/maintainers/scripts/gce/create-gce.sh b/nixos/maintainers/scripts/gce/create-gce.sh index 0fd26d34d07..48748a59d29 100755 --- a/nixos/maintainers/scripts/gce/create-gce.sh +++ b/nixos/maintainers/scripts/gce/create-gce.sh @@ -7,9 +7,9 @@ BUCKET_NAME="${BUCKET_NAME:-nixos-cloud-images}" TIMESTAMP="$(date +%Y%m%d%H%M)" export TIMESTAMP -nix-build '' \ +nix-build '' \ -A config.system.build.googleComputeImage \ - --arg configuration "{ imports = [ ]; }" \ + --arg modules "[ ]" \ --argstr system x86_64-linux \ -o gce \ -j 10 diff --git a/nixos/modules/config/appstream.nix b/nixos/modules/config/appstream.nix new file mode 100644 index 00000000000..483ac9c3cd7 --- /dev/null +++ b/nixos/modules/config/appstream.nix @@ -0,0 +1,25 @@ +{ config, lib, ... }: + +with lib; +{ + options = { + appstream.enable = mkOption { + type = types.bool; + default = true; + description = '' + Whether to install files to support the + AppStream metadata specification. + ''; + }; + }; + + config = mkIf config.appstream.enable { + environment.pathsToLink = [ + # per component metadata + "/share/metainfo" + # legacy path for above + "/share/appdata" + ]; + }; + +} diff --git a/nixos/modules/config/fonts/fontconfig-penultimate.nix b/nixos/modules/config/fonts/fontconfig-penultimate.nix index fc01c15acb9..7e05e77d967 100644 --- a/nixos/modules/config/fonts/fontconfig-penultimate.nix +++ b/nixos/modules/config/fonts/fontconfig-penultimate.nix @@ -269,7 +269,7 @@ in }; - config = mkIf (config.fonts.fontconfig.enable && cfg.enable) { + config = mkIf (config.fonts.fontconfig.enable && config.fonts.fontconfig.penultimate.enable) { fonts.fontconfig.confPackages = [ penultimateConf ]; diff --git a/nixos/modules/config/gtk/gtk-icon-cache.nix b/nixos/modules/config/gtk/gtk-icon-cache.nix new file mode 100644 index 00000000000..9c5d993b9c5 --- /dev/null +++ b/nixos/modules/config/gtk/gtk-icon-cache.nix @@ -0,0 +1,86 @@ +{ config, lib, pkgs, ... }: + +with lib; +{ + options = { + gtk.iconCache.enable = mkOption { + type = types.bool; + default = config.services.xserver.enable; + description = '' + Whether to build icon theme caches for GTK+ applications. + ''; + }; + }; + + config = mkIf config.gtk.iconCache.enable { + + # (Re)build icon theme caches + # --------------------------- + # Each icon theme has its own cache. The difficult is that many + # packages may contribute with icons to the same theme by installing + # some icons. + # + # For instance, on my current NixOS system, the following packages + # (among many others) have icons installed into the hicolor icon + # theme: hicolor-icon-theme, psensor, wpa_gui, caja, etc. + # + # As another example, the mate icon theme has icons installed by the + # packages mate-icon-theme, mate-settings-daemon, and libmateweather. + # + # The HighContrast icon theme also has icons from different packages, + # like gnome-theme-extras and meld. + + # When the cache is built all of its icons has to be known. How to + # implement this? + # + # I think that most themes have all icons installed by only one + # package. On my system there are 71 themes installed. Only 3 of them + # have icons installed from more than one package. + # + # If the main package of the theme provides a cache, presumably most + # of its icons will be available to applications without running this + # module. But additional icons offered by other packages will not be + # available. Therefore I think that it is good that the main theme + # package installs a cache (although it does not completely fixes the + # situation for packages installed with nix-env). + # + # The module solution presented here keeps the cache when there is + # only one package contributing with icons to the theme. Otherwise it + # rebuilds the cache taking into account the icons provided all + # packages. + + environment.extraSetup = '' + # For each icon theme directory ... + + find $out/share/icons -mindepth 1 -maxdepth 1 -print0 | while read -d $'\0' themedir + do + + # In order to build the cache, the theme dir should be + # writable. When the theme dir is a symbolic link to somewhere + # in the nix store it is not writable and it means that only + # one package is contributing to the theme. If it already has + # a cache, no rebuild is needed. Otherwise a cache has to be + # built, and to be able to do that we first remove the + # symbolic link and make a directory, and then make symbolic + # links from the original directory into the new one. + + if [ ! -w "$themedir" -a -L "$themedir" -a ! -r "$themedir"/icon-theme.cache ]; then + name=$(basename "$themedir") + path=$(readlink -f "$themedir") + rm "$themedir" + mkdir -p "$themedir" + ln -s "$path"/* "$themedir"/ + fi + + # (Re)build the cache if the theme dir is writable, replacing any + # existing cache for the theme + + if [ -w "$themedir" ]; then + rm -f "$themedir"/icon-theme.cache + ${pkgs.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 6bf8c653e11..dc7305b1ba2 100644 --- a/nixos/modules/config/i18n.nix +++ b/nixos/modules/config/i18n.nix @@ -34,6 +34,17 @@ with lib; ''; }; + extraLocaleSettings = mkOption { + type = types.attrsOf types.str; + default = {}; + example = { LC_MESSAGES = "en_US.UTF-8"; LC_TIME = "de_DE.UTF-8"; }; + description = '' + A set of additional system-wide locale settings other than + LANG which can be configured with + . + ''; + }; + supportedLocales = mkOption { type = types.listOf types.str; default = ["all"]; @@ -129,7 +140,7 @@ with lib; environment.sessionVariables = { LANG = config.i18n.defaultLocale; LOCALE_ARCHIVE = "/run/current-system/sw/lib/locale/locale-archive"; - }; + } // config.i18n.extraLocaleSettings; systemd.globalEnvironment = mkIf (config.i18n.supportedLocales != []) { LOCALE_ARCHIVE = "${config.i18n.glibcLocales}/lib/locale/locale-archive"; @@ -141,6 +152,7 @@ with lib; 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/krb5/default.nix b/nixos/modules/config/krb5/default.nix index c22e99a0a2f..87021a27d34 100644 --- a/nixos/modules/config/krb5/default.nix +++ b/nixos/modules/config/krb5/default.nix @@ -79,7 +79,7 @@ in { options = { krb5 = { - enable = mkEnableOption "Whether to enable Kerberos V."; + enable = mkEnableOption "building krb5.conf, configuration file for Kerberos V"; kerberos = mkOption { type = types.package; diff --git a/nixos/modules/config/networking.nix b/nixos/modules/config/networking.nix index 1ef5313d3fd..25253cf02e1 100644 --- a/nixos/modules/config/networking.nix +++ b/nixos/modules/config/networking.nix @@ -16,6 +16,13 @@ let resolvconfOptions = cfg.resolvconfOptions ++ optional cfg.dnsSingleRequest "single-request" ++ optional cfg.dnsExtensionMechanism "edns0"; + + + localhostMapped4 = cfg.hosts ? "127.0.0.1" && elem "localhost" cfg.hosts."127.0.0.1"; + localhostMapped6 = cfg.hosts ? "::1" && elem "localhost" cfg.hosts."::1"; + + localhostMultiple = any (elem "localhost") (attrValues (removeAttrs cfg.hosts [ "127.0.0.1" "::1" ])); + in { @@ -23,8 +30,7 @@ in options = { networking.hosts = lib.mkOption { - type = types.attrsOf ( types.listOf types.str ); - default = {}; + type = types.attrsOf (types.listOf types.str); example = literalExample '' { "127.0.0.1" = [ "foo.bar.baz" ]; @@ -192,6 +198,29 @@ in config = { + assertions = [{ + assertion = localhostMapped4; + message = ''`networking.hosts` doesn't map "127.0.0.1" to "localhost"''; + } { + assertion = !cfg.enableIPv6 || localhostMapped6; + message = ''`networking.hosts` doesn't map "::1" to "localhost"''; + } { + assertion = !localhostMultiple; + message = '' + `networking.hosts` maps "localhost" to something other than "127.0.0.1" + or "::1". This will break some applications. Please use + `networking.extraHosts` if you really want to add such a mapping. + ''; + }]; + + networking.hosts = { + "127.0.0.1" = [ "localhost" ]; + } // optionalAttrs (cfg.hostName != "") { + "127.0.1.1" = [ cfg.hostName ]; + } // optionalAttrs cfg.enableIPv6 { + "::1" = [ "localhost" ]; + }; + environment.etc = { # /etc/services: TCP/UDP port assignments. "services".source = pkgs.iana-etc + "/etc/services"; @@ -199,29 +228,14 @@ in # /etc/protocols: IP protocol numbers. "protocols".source = pkgs.iana-etc + "/etc/protocols"; - # /etc/rpc: RPC program numbers. - "rpc".source = pkgs.glibc.out + "/etc/rpc"; - # /etc/hosts: Hostname-to-IP mappings. - "hosts".text = - let oneToString = set : ip : ip + " " + concatStringsSep " " ( getAttr ip set ); - allToString = set : concatMapStringsSep "\n" ( oneToString set ) ( attrNames set ); - userLocalHosts = optionalString - ( builtins.hasAttr "127.0.0.1" cfg.hosts ) - ( concatStringsSep " " ( remove "localhost" cfg.hosts."127.0.0.1" )); - userLocalHosts6 = optionalString - ( builtins.hasAttr "::1" cfg.hosts ) - ( concatStringsSep " " ( remove "localhost" cfg.hosts."::1" )); - otherHosts = allToString ( removeAttrs cfg.hosts [ "127.0.0.1" "::1" ]); - in - '' - 127.0.0.1 ${userLocalHosts} localhost - ${optionalString cfg.enableIPv6 '' - ::1 ${userLocalHosts6} localhost - ''} - ${otherHosts} - ${cfg.extraHosts} - ''; + "hosts".text = let + oneToString = set: ip: ip + " " + concatStringsSep " " set.${ip}; + allToString = set: concatMapStringsSep "\n" (oneToString set) (attrNames set); + in '' + ${allToString cfg.hosts} + ${cfg.extraHosts} + ''; # /etc/host.conf: resolver configuration file "host.conf".text = cfg.hostConf; @@ -233,6 +247,10 @@ in # a collision with an apparently unrelated environment # variable with the same name exported by dhcpcd. interface_order='lo lo[0-9]*' + '' + optionalString config.services.nscd.enable '' + # Invalidate the nscd cache whenever resolv.conf is + # regenerated. + libc_restart='${pkgs.systemd}/bin/systemctl try-restart --no-block nscd.service 2> /dev/null' '' + optionalString (length resolvconfOptions > 0) '' # Options as described in resolv.conf(5) resolv_conf_options='${concatStringsSep " " resolvconfOptions}' @@ -246,11 +264,14 @@ in ''; } // optionalAttrs config.services.resolved.enable { - # symlink the static version of resolv.conf as recommended by upstream: + # symlink the dynamic stub resolver of resolv.conf as recommended by upstream: # https://www.freedesktop.org/software/systemd/man/systemd-resolved.html#/etc/resolv.conf - "resolv.conf".source = "${pkgs.systemd}/lib/systemd/resolv.conf"; + "resolv.conf".source = "/run/systemd/resolve/stub-resolv.conf"; } // optionalAttrs (config.services.resolved.enable && dnsmasqResolve) { "dnsmasq-resolv.conf".source = "/run/systemd/resolve/resolv.conf"; + } // optionalAttrs (pkgs.stdenv.hostPlatform.libc == "glibc") { + # /etc/rpc: RPC program numbers. + "rpc".source = pkgs.glibc.out + "/etc/rpc"; }; networking.proxy.envVars = @@ -296,4 +317,4 @@ in }; - } +} diff --git a/nixos/modules/config/no-x-libs.nix b/nixos/modules/config/no-x-libs.nix index d9ecaa4818b..37e66c64542 100644 --- a/nixos/modules/config/no-x-libs.nix +++ b/nixos/modules/config/no-x-libs.nix @@ -35,7 +35,7 @@ with lib; networkmanager-vpnc = super.networkmanager-vpnc.override { withGnome = false; }; networkmanager-iodine = super.networkmanager-iodine.override { withGnome = false; }; pinentry = super.pinentry_ncurses; - gobjectIntrospection = super.gobjectIntrospection.override { x11Support = false; }; + gobject-introspection = super.gobject-introspection.override { x11Support = false; }; })); }; } diff --git a/nixos/modules/config/nsswitch.nix b/nixos/modules/config/nsswitch.nix index a74d551f50d..b601e908e49 100644 --- a/nixos/modules/config/nsswitch.nix +++ b/nixos/modules/config/nsswitch.nix @@ -1,6 +1,6 @@ # Configuration for the Name Service Switch (/etc/nsswitch.conf). -{ config, lib, ... }: +{ config, lib, pkgs, ... }: with lib; @@ -15,6 +15,7 @@ let ldap = canLoadExternalModules && (config.users.ldap.enable && config.users.ldap.nsswitch); sssd = canLoadExternalModules && config.services.sssd.enable; resolved = canLoadExternalModules && config.services.resolved.enable; + googleOsLogin = canLoadExternalModules && config.security.googleOsLogin.enable; hostArray = [ "files" ] ++ optional mymachines "mymachines" @@ -29,6 +30,7 @@ let ++ optional sssd "sss" ++ optional ldap "ldap" ++ optional mymachines "mymachines" + ++ optional googleOsLogin "cache_oslogin oslogin" ++ [ "systemd" ]; shadowArray = [ "files" ] @@ -97,7 +99,7 @@ in { # configured IP addresses, or ::1 and 127.0.0.2 as # fallbacks. Systemd also provides nss-mymachines to return IP # addresses of local containers. - system.nssModules = optionals canLoadExternalModules [ config.systemd.package.out ]; - + system.nssModules = (optionals canLoadExternalModules [ config.systemd.package.out ]) + ++ optional googleOsLogin pkgs.google-compute-engine-oslogin.out; }; } diff --git a/nixos/modules/config/pulseaudio.nix b/nixos/modules/config/pulseaudio.nix index e16a021ec20..67f7105fe2f 100644 --- a/nixos/modules/config/pulseaudio.nix +++ b/nixos/modules/config/pulseaudio.nix @@ -1,4 +1,4 @@ -{ config, lib, pkgs, pkgs_i686, ... }: +{ config, lib, pkgs, ... }: with pkgs; with lib; @@ -19,7 +19,7 @@ let # Forces 32bit pulseaudio and alsaPlugins to be built/supported for apps # using 32bit alsa on 64bit linux. - enable32BitAlsaPlugins = cfg.support32Bit && stdenv.isx86_64 && (pkgs_i686.alsaLib != null && pkgs_i686.libpulseaudio != null); + enable32BitAlsaPlugins = cfg.support32Bit && stdenv.isx86_64 && (pkgs.pkgsi686Linux.alsaLib != null && pkgs.pkgsi686Linux.libpulseaudio != null); myConfigFile = @@ -63,7 +63,7 @@ let pcm_type.pulse { libs.native = ${pkgs.alsaPlugins}/lib/alsa-lib/libasound_module_pcm_pulse.so ; ${lib.optionalString enable32BitAlsaPlugins - "libs.32Bit = ${pkgs_i686.alsaPlugins}/lib/alsa-lib/libasound_module_pcm_pulse.so ;"} + "libs.32Bit = ${pkgs.pkgsi686Linux.alsaPlugins}/lib/alsa-lib/libasound_module_pcm_pulse.so ;"} } pcm.!default { type pulse @@ -72,7 +72,7 @@ let ctl_type.pulse { libs.native = ${pkgs.alsaPlugins}/lib/alsa-lib/libasound_module_ctl_pulse.so ; ${lib.optionalString enable32BitAlsaPlugins - "libs.32Bit = ${pkgs_i686.alsaPlugins}/lib/alsa-lib/libasound_module_ctl_pulse.so ;"} + "libs.32Bit = ${pkgs.pkgsi686Linux.alsaPlugins}/lib/alsa-lib/libasound_module_ctl_pulse.so ;"} } ctl.!default { type pulse @@ -154,6 +154,18 @@ in { ''; }; + extraModules = mkOption { + type = types.listOf types.package; + default = []; + example = literalExample "[ pkgs.pulseaudio-modules-bt ]"; + description = '' + Extra pulseaudio modules to use. This is intended for out-of-tree + pulseaudio modules like extra bluetooth codecs. + + Extra modules take precedence over built-in pulseaudio modules. + ''; + }; + daemon = { logLevel = mkOption { type = types.str; @@ -236,6 +248,18 @@ in { systemd.packages = [ overriddenPackage ]; }) + (mkIf (cfg.extraModules != []) { + hardware.pulseaudio.daemon.config.dl-search-path = let + overriddenModules = builtins.map + (drv: drv.override { pulseaudio = overriddenPackage; }) + cfg.extraModules; + modulePaths = builtins.map + (drv: "${drv}/lib/pulse-${overriddenPackage.version}/modules") + # User-provided extra modules take precedence + (overriddenModules ++ [ overriddenPackage ]); + in lib.concatStringsSep ":" modulePaths; + }) + (mkIf hasZeroconf { services.avahi.enable = true; }) diff --git a/nixos/modules/config/shells-environment.nix b/nixos/modules/config/shells-environment.nix index 555db459f57..6379b52870e 100644 --- a/nixos/modules/config/shells-environment.nix +++ b/nixos/modules/config/shells-environment.nix @@ -108,14 +108,14 @@ in }; environment.shellAliases = mkOption { - default = {}; - example = { ll = "ls -l"; }; + example = { l = null; ll = "ls -l"; }; description = '' An attribute set that maps aliases (the top level attribute names in this option) to command strings or directly to build outputs. The aliases are added to all users' shells. + Aliases mapped to null are ignored. ''; - type = types.attrs; # types.attrsOf types.stringOrPath; + type = with types; attrsOf (nullOr (either str path)); }; environment.binsh = mkOption { @@ -157,6 +157,12 @@ in # terminal instead of logging out of X11). environment.variables = config.environment.sessionVariables; + environment.shellAliases = mapAttrs (name: mkDefault) { + ls = "ls --color=tty"; + ll = "ls -l"; + l = "ls -alh"; + }; + environment.etc."shells".text = '' ${concatStringsSep "\n" (map utils.toShellPath cfg.shells)} diff --git a/nixos/modules/config/system-path.nix b/nixos/modules/config/system-path.nix index 3c24dab85e4..7a65e44e828 100644 --- a/nixos/modules/config/system-path.nix +++ b/nixos/modules/config/system-path.nix @@ -7,7 +7,7 @@ with lib; let - requiredPackages = + requiredPackages = map lib.lowPrio [ config.nix.package pkgs.acl pkgs.attr @@ -19,7 +19,9 @@ let pkgs.diffutils pkgs.findutils pkgs.gawk - pkgs.glibc # for ldd, getent + pkgs.stdenv.cc.libc + pkgs.getent + pkgs.getconf pkgs.gnugrep pkgs.gnupatch pkgs.gnused @@ -133,14 +135,10 @@ in # outputs TODO: note that the tools will often not be linked by default postBuild = '' - if [ -x $out/bin/gtk-update-icon-cache -a -f $out/share/icons/hicolor/index.theme ]; then - $out/bin/gtk-update-icon-cache $out/share/icons/hicolor - fi - if [ -x $out/bin/glib-compile-schemas -a -w $out/share/glib-2.0/schemas ]; then $out/bin/glib-compile-schemas $out/share/glib-2.0/schemas fi - + ${config.environment.extraSetup} ''; }; diff --git a/nixos/modules/config/users-groups.nix b/nixos/modules/config/users-groups.nix index 426e1666a81..c3f228c9bcc 100644 --- a/nixos/modules/config/users-groups.nix +++ b/nixos/modules/config/users-groups.nix @@ -266,7 +266,7 @@ let (mkIf config.isNormalUser { group = mkDefault "users"; createHome = mkDefault true; - home = mkDefault "/home/${name}"; + home = mkDefault "/home/${config.name}"; useDefaultShell = mkDefault true; isSystemUser = mkDefault false; }) @@ -534,8 +534,8 @@ in { install -m 0755 -d /home ${pkgs.perl}/bin/perl -w \ - -I${pkgs.perlPackages.FileSlurp}/lib/perl5/site_perl \ - -I${pkgs.perlPackages.JSON}/lib/perl5/site_perl \ + -I${pkgs.perlPackages.FileSlurp}/${pkgs.perl.libPrefix} \ + -I${pkgs.perlPackages.JSON}/${pkgs.perl.libPrefix} \ ${./update-users-groups.pl} ${spec} ''; diff --git a/nixos/modules/config/xdg/mime.nix b/nixos/modules/config/xdg/mime.nix index 4323a49ea1d..cd1064630fb 100644 --- a/nixos/modules/config/xdg/mime.nix +++ b/nixos/modules/config/xdg/mime.nix @@ -24,11 +24,11 @@ with lib; environment.extraSetup = '' if [ -w $out/share/mime ] && [ -d $out/share/mime/packages ]; then - XDG_DATA_DIRS=$out/share ${pkgs.shared-mime-info}/bin/update-mime-database -V $out/share/mime > /dev/null + XDG_DATA_DIRS=$out/share ${pkgs.buildPackages.shared-mime-info}/bin/update-mime-database -V $out/share/mime > /dev/null fi if [ -w $out/share/applications ]; then - ${pkgs.desktop-file-utils}/bin/update-desktop-database $out/share/applications + ${pkgs.buildPackages.desktop-file-utils}/bin/update-desktop-database $out/share/applications fi ''; }; diff --git a/nixos/modules/config/xdg/sounds.nix b/nixos/modules/config/xdg/sounds.nix new file mode 100644 index 00000000000..148240d631c --- /dev/null +++ b/nixos/modules/config/xdg/sounds.nix @@ -0,0 +1,22 @@ +{ config, lib, ... }: + +with lib; +{ + options = { + xdg.sounds.enable = mkOption { + type = types.bool; + default = true; + description = '' + Whether to install files to support the + XDG Sound Theme specification. + ''; + }; + }; + + config = mkIf config.xdg.sounds.enable { + environment.pathsToLink = [ + "/share/sounds" + ]; + }; + +} diff --git a/nixos/modules/config/zram.nix b/nixos/modules/config/zram.nix index c1748812821..925d945c081 100644 --- a/nixos/modules/config/zram.nix +++ b/nixos/modules/config/zram.nix @@ -6,10 +6,27 @@ let cfg = config.zramSwap; - devices = map (nr: "zram${toString nr}") (range 0 (cfg.numDevices - 1)); + # don't set swapDevices as mkDefault, so we can detect user had read our warning + # (see below) and made an action (or not) + devicesCount = if cfg.swapDevices != null then cfg.swapDevices else cfg.numDevices; + + devices = map (nr: "zram${toString nr}") (range 0 (devicesCount - 1)); modprobe = "${pkgs.kmod}/bin/modprobe"; + warnings = + assert cfg.swapDevices != null -> cfg.numDevices >= cfg.swapDevices; + flatten [ + (optional (cfg.numDevices > 1 && cfg.swapDevices == null) '' + Using several small zram devices as swap is no better than using one large. + Set either zramSwap.numDevices = 1 or explicitly set zramSwap.swapDevices. + + Previously multiple zram devices were used to enable multithreaded + compression. Linux supports multithreaded compression for 1 device + since 3.15. See https://lkml.org/lkml/2014/2/28/404 for details. + '') + ]; + in { @@ -24,9 +41,11 @@ in default = false; type = types.bool; description = '' - Enable in-memory compressed swap space provided by the zram kernel - module. - See https://www.kernel.org/doc/Documentation/blockdev/zram.txt + Enable in-memory compressed devices and swap space provided by the zram + kernel module. + See + https://www.kernel.org/doc/Documentation/blockdev/zram.txt + . ''; }; @@ -34,7 +53,19 @@ in default = 1; type = types.int; description = '' - Number of zram swap devices to create. + Number of zram devices to create. See also + zramSwap.swapDevices + ''; + }; + + swapDevices = mkOption { + default = null; + example = 1; + type = with types; nullOr int; + description = '' + Number of zram devices to be used as swap. Must be + <= zramSwap.numDevices. + Default is same as zramSwap.numDevices, recommended is 1. ''; }; @@ -44,7 +75,8 @@ in description = '' Maximum amount of memory that can be used by the zram swap devices (as a percentage of your total memory). Defaults to 1/2 of your total - RAM. + RAM. Run zramctl to check how good memory is + compressed. ''; }; @@ -58,12 +90,26 @@ in ''; }; + algorithm = mkOption { + default = "zstd"; + example = "lzo"; + type = with types; either (enum [ "lzo" "lz4" "zstd" ]) str; + description = '' + Compression algorithm. lzo has good compression, + but is slow. lz4 has bad compression, but is fast. + zstd is both good compression and fast. + You can check what other algorithms are supported by your zram device with + cat /sys/class/block/zram*/comp_algorithm + ''; + }; }; }; config = mkIf cfg.enable { + inherit warnings; + system.requiredKernelConfig = with config.lib.kernelConfig; [ (isModule "ZRAM") ]; @@ -85,25 +131,25 @@ in createZramInitService = dev: nameValuePair "zram-init-${dev}" { description = "Init swap on zram-based device ${dev}"; - bindsTo = [ "dev-${dev}.swap" ]; after = [ "dev-${dev}.device" "zram-reloader.service" ]; requires = [ "dev-${dev}.device" "zram-reloader.service" ]; before = [ "dev-${dev}.swap" ]; requiredBy = [ "dev-${dev}.swap" ]; + unitConfig.DefaultDependencies = false; # needed to prevent a cycle serviceConfig = { Type = "oneshot"; RemainAfterExit = true; ExecStop = "${pkgs.runtimeShell} -c 'echo 1 > /sys/class/block/${dev}/reset'"; }; script = '' - set -u - set -o pipefail - - # Calculate memory to use for zram - totalmem=$(${pkgs.gnugrep}/bin/grep 'MemTotal: ' /proc/meminfo | ${pkgs.gawk}/bin/awk '{print $2}') - mem=$(((totalmem * ${toString cfg.memoryPercent} / 100 / ${toString cfg.numDevices}) * 1024)) + set -euo pipefail - echo $mem > /sys/class/block/${dev}/disksize + # Calculate memory to use for zram + mem=$(${pkgs.gawk}/bin/awk '/MemTotal: / { + print int($2*${toString cfg.memoryPercent}/100.0/${toString devicesCount}*1024) + }' /proc/meminfo) + + ${pkgs.utillinux}/sbin/zramctl --size $mem --algorithm ${cfg.algorithm} /dev/${dev} ${pkgs.utillinux}/sbin/mkswap /dev/${dev} ''; restartIfChanged = false; @@ -111,6 +157,9 @@ in in listToAttrs ((map createZramInitService devices) ++ [(nameValuePair "zram-reloader" { description = "Reload zram kernel module when number of devices changes"; + wants = [ "systemd-udevd.service" ]; + after = [ "systemd-udevd.service" ]; + unitConfig.DefaultDependencies = false; # needed to prevent a cycle serviceConfig = { Type = "oneshot"; RemainAfterExit = true; @@ -118,7 +167,11 @@ in ExecStart = "${modprobe} zram"; ExecStop = "${modprobe} -r zram"; }; - restartTriggers = [ cfg.numDevices ]; + restartTriggers = [ + cfg.numDevices + cfg.algorithm + cfg.memoryPercent + ]; restartIfChanged = true; })]); diff --git a/nixos/modules/hardware/all-firmware.nix b/nixos/modules/hardware/all-firmware.nix index e978ec6b40a..69cc22aaa34 100644 --- a/nixos/modules/hardware/all-firmware.nix +++ b/nixos/modules/hardware/all-firmware.nix @@ -38,7 +38,7 @@ in { firmwareLinuxNonfree intel2200BGFirmware rtl8192su-firmware - ] ++ optional (pkgs.stdenv.isAarch32 || pkgs.stdenv.isAarch64) raspberrypiWirelessFirmware + ] ++ optional (pkgs.stdenv.hostPlatform.isAarch32 || pkgs.stdenv.hostPlatform.isAarch64) raspberrypiWirelessFirmware ++ optionals (versionOlder config.boot.kernelPackages.kernel.version "4.13") [ rtl8723bs-firmware ]; diff --git a/nixos/modules/hardware/bladeRF.nix b/nixos/modules/hardware/bladeRF.nix new file mode 100644 index 00000000000..92544347714 --- /dev/null +++ b/nixos/modules/hardware/bladeRF.nix @@ -0,0 +1,28 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.hardware.bladeRF; + +in + +{ + options.hardware.bladeRF = { + enable = mkOption { + type = types.bool; + default = false; + description = '' + Enables udev rules for BladeRF devices. By default grants access + to users in the "bladerf" group. You may want to install the + libbladeRF package. + ''; + }; + + }; + + config = mkIf cfg.enable { + services.udev.packages = [ pkgs.libbladeRF ]; + users.groups.bladerf = {}; + }; +} \ No newline at end of file diff --git a/nixos/modules/hardware/ckb-next.nix b/nixos/modules/hardware/ckb-next.nix new file mode 100644 index 00000000000..20b2756d8b2 --- /dev/null +++ b/nixos/modules/hardware/ckb-next.nix @@ -0,0 +1,49 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.hardware.ckb-next; + +in + { + options.hardware.ckb-next = { + enable = mkEnableOption "the Corsair keyboard/mouse driver"; + + gid = mkOption { + type = types.nullOr types.int; + default = null; + example = 100; + description = '' + Limit access to the ckb daemon to a particular group. + ''; + }; + + package = mkOption { + type = types.package; + default = pkgs.ckb-next; + defaultText = "pkgs.ckb-next"; + description = '' + The package implementing the Corsair keyboard/mouse driver. + ''; + }; + }; + + config = mkIf cfg.enable { + environment.systemPackages = [ cfg.package ]; + + systemd.services.ckb-next = { + description = "Corsair Keyboards and Mice Daemon"; + wantedBy = ["multi-user.target"]; + serviceConfig = { + ExecStart = "${cfg.package}/bin/ckb-next-daemon ${optionalString (cfg.gid != null) "--gid=${builtins.toString cfg.gid}"}"; + Restart = "on-failure"; + StandardOutput = "syslog"; + }; + }; + }; + + meta = { + maintainers = with lib.maintainers; [ kierdavis ]; + }; + } diff --git a/nixos/modules/hardware/ckb.nix b/nixos/modules/hardware/ckb.nix deleted file mode 100644 index 8429572a882..00000000000 --- a/nixos/modules/hardware/ckb.nix +++ /dev/null @@ -1,40 +0,0 @@ -{ config, lib, pkgs, ... }: - -with lib; - -let - cfg = config.hardware.ckb; - -in - { - options.hardware.ckb = { - enable = mkEnableOption "the Corsair keyboard/mouse driver"; - - package = mkOption { - type = types.package; - default = pkgs.ckb; - defaultText = "pkgs.ckb"; - description = '' - The package implementing the Corsair keyboard/mouse driver. - ''; - }; - }; - - config = mkIf cfg.enable { - environment.systemPackages = [ cfg.package ]; - - systemd.services.ckb = { - description = "Corsair Keyboard Daemon"; - wantedBy = ["multi-user.target"]; - script = "${cfg.package}/bin/ckb-daemon"; - serviceConfig = { - Restart = "always"; - StandardOutput = "syslog"; - }; - }; - }; - - meta = { - maintainers = with lib.maintainers; [ kierdavis ]; - }; - } diff --git a/nixos/modules/hardware/opengl.nix b/nixos/modules/hardware/opengl.nix index 46d06d71333..6b7b8069fd4 100644 --- a/nixos/modules/hardware/opengl.nix +++ b/nixos/modules/hardware/opengl.nix @@ -1,4 +1,4 @@ -{ config, lib, pkgs, pkgs_i686, ... }: +{ config, lib, pkgs, ... }: with lib; @@ -124,10 +124,14 @@ in config = mkIf cfg.enable { - assertions = lib.singleton { - assertion = cfg.driSupport32Bit -> pkgs.stdenv.isx86_64; - message = "Option driSupport32Bit only makes sense on a 64-bit system."; - }; + assertions = [ + { assertion = cfg.driSupport32Bit -> pkgs.stdenv.isx86_64; + message = "Option driSupport32Bit only makes sense on a 64-bit system."; + } + { assertion = cfg.driSupport32Bit -> (config.boot.kernelPackages.kernel.features.ia32Emulation or false); + message = "Option driSupport32Bit requires a kernel that supports 32bit emulation"; + } + ]; systemd.tmpfiles.rules = [ "L+ /run/opengl-driver - - - - ${package}" @@ -148,7 +152,7 @@ in [ "/run/opengl-driver/share" ] ++ optional cfg.driSupport32Bit "/run/opengl-driver-32/share"; hardware.opengl.package = mkDefault (makePackage pkgs); - hardware.opengl.package32 = mkDefault (makePackage pkgs_i686); + hardware.opengl.package32 = mkDefault (makePackage pkgs.pkgsi686Linux); boot.extraModulePackages = optional (elem "virtualbox" videoDrivers) kernelPackages.virtualboxGuestAdditions; }; diff --git a/nixos/modules/hardware/raid/hpsa.nix b/nixos/modules/hardware/raid/hpsa.nix index 1b4b1fa1954..3a65cb800a9 100644 --- a/nixos/modules/hardware/raid/hpsa.nix +++ b/nixos/modules/hardware/raid/hpsa.nix @@ -8,7 +8,7 @@ let version = "2.40-13.0"; src = pkgs.fetchurl { - url = "http://downloads.linux.hpe.com/SDR/downloads/MCP/Ubuntu/pool/non-free/${name}_amd64.deb"; + url = "https://downloads.linux.hpe.com/SDR/downloads/MCP/Ubuntu/pool/non-free/${name}_amd64.deb"; sha256 = "11w7fwk93lmfw0yya4jpjwdmgjimqxx6412sqa166g1pz4jil4sw"; }; @@ -34,7 +34,7 @@ let meta = with lib; { description = "HP Smart Array CLI"; - homepage = http://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/video/amdgpu-pro.nix b/nixos/modules/hardware/video/amdgpu-pro.nix index 50af022b93c..ab9e0c92020 100644 --- a/nixos/modules/hardware/video/amdgpu-pro.nix +++ b/nixos/modules/hardware/video/amdgpu-pro.nix @@ -1,6 +1,6 @@ # This module provides the proprietary AMDGPU-PRO drivers. -{ config, lib, pkgs, pkgs_i686, ... }: +{ config, lib, pkgs, ... }: with lib; @@ -11,7 +11,7 @@ let enabled = elem "amdgpu-pro" drivers; package = config.boot.kernelPackages.amdgpu-pro; - package32 = pkgs_i686.linuxPackages.amdgpu-pro.override { libsOnly = true; kernel = null; }; + package32 = pkgs.pkgsi686Linux.linuxPackages.amdgpu-pro.override { libsOnly = true; kernel = null; }; opengl = config.hardware.opengl; diff --git a/nixos/modules/hardware/video/ati.nix b/nixos/modules/hardware/video/ati.nix index 2fa37af6ca5..6102919f015 100644 --- a/nixos/modules/hardware/video/ati.nix +++ b/nixos/modules/hardware/video/ati.nix @@ -1,6 +1,6 @@ # This module provides the proprietary ATI X11 / OpenGL drivers. -{ config, lib, pkgs_i686, ... }: +{ config, lib, pkgs, ... }: with lib; @@ -24,7 +24,7 @@ in { name = "fglrx"; modules = [ ati_x11 ]; libPath = [ "${ati_x11}/lib" ]; }; hardware.opengl.package = ati_x11; - hardware.opengl.package32 = pkgs_i686.linuxPackages.ati_drivers_x11.override { libsOnly = true; kernel = null; }; + hardware.opengl.package32 = pkgs.pkgsi686Linux.linuxPackages.ati_drivers_x11.override { libsOnly = true; kernel = null; }; environment.systemPackages = [ ati_x11 ]; diff --git a/nixos/modules/hardware/video/nvidia.nix b/nixos/modules/hardware/video/nvidia.nix index 6944d1a4f76..6ba8130af71 100644 --- a/nixos/modules/hardware/video/nvidia.nix +++ b/nixos/modules/hardware/video/nvidia.nix @@ -1,6 +1,6 @@ # This module provides the proprietary NVIDIA X11 / OpenGL drivers. -{ config, lib, pkgs, pkgs_i686, ... }: +{ stdenv, config, lib, pkgs, ... }: with lib; @@ -20,10 +20,16 @@ let kernelPackages.nvidia_x11_legacy304 else if elem "nvidiaLegacy340" drivers then kernelPackages.nvidia_x11_legacy340 + else if elem "nvidiaLegacy390" drivers then + kernelPackages.nvidia_x11_legacy390 else null; nvidia_x11 = nvidiaForKernel config.boot.kernelPackages; - nvidia_libs32 = (nvidiaForKernel pkgs_i686.linuxPackages).override { libsOnly = true; kernel = null; }; + nvidia_libs32 = + if versionOlder nvidia_x11.version "391" then + ((nvidiaForKernel pkgs.pkgsi686Linux.linuxPackages).override { libsOnly = true; kernel = null; }).out + else + (nvidiaForKernel config.boot.kernelPackages).lib32; enabled = nvidia_x11 != null; @@ -97,8 +103,8 @@ in config = mkIf enabled { assertions = [ { - assertion = config.services.xserver.displayManager.gdm.wayland; - message = "NVidia drivers don't support wayland"; + assertion = with config.services.xserver.displayManager; gdm.enable -> !gdm.wayland; + message = "NVIDIA drivers don't support wayland, set services.xserver.displayManager.gdm.wayland=false"; } { assertion = !optimusCfg.enable || @@ -161,7 +167,7 @@ in }; hardware.opengl.package = nvidia_x11.out; - hardware.opengl.package32 = nvidia_libs32.out; + hardware.opengl.package32 = nvidia_libs32; environment.systemPackages = [ nvidia_x11.bin nvidia_x11.settings ] ++ lib.filter (p: p != null) [ nvidia_x11.persistenced ]; diff --git a/nixos/modules/installer/cd-dvd/channel.nix b/nixos/modules/installer/cd-dvd/channel.nix index 01cfe8a02e1..e946c4abc57 100644 --- a/nixos/modules/installer/cd-dvd/channel.nix +++ b/nixos/modules/installer/cd-dvd/channel.nix @@ -16,7 +16,7 @@ let { } '' mkdir -p $out - cp -prd ${nixpkgs} $out/nixos + cp -prd ${nixpkgs.outPath} $out/nixos chmod -R u+w $out/nixos if [ ! -e $out/nixos/nixpkgs ]; then ln -s . $out/nixos/nixpkgs diff --git a/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix b/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix index 3dc0f606bf6..bcdbffdc20b 100644 --- a/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix +++ b/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix @@ -7,4 +7,6 @@ imports = [ ./installation-cd-base.nix ]; + + 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 96fdb997b2c..9475da23b1f 100644 --- a/nixos/modules/installer/cd-dvd/iso-image.nix +++ b/nixos/modules/installer/cd-dvd/iso-image.nix @@ -50,7 +50,7 @@ let finalCfg = { name = "NixOS ${config.system.nixos.label}${config.isoImage.appendToMenuLabel}"; params = "init=${config.system.build.toplevel}/init ${additional} ${toString config.boot.kernelParams}"; - image = "/boot/bzImage"; + image = "/boot/${config.system.boot.loader.kernelFile}"; initrd = "/boot/initrd"; }; in @@ -163,7 +163,7 @@ let cp -v ${pkgs.refind}/share/refind/refind_x64.efi $out/EFI/boot/ '' else - "# No refind for ia32" + "# No refind for ${targetArch}" ; grubMenuCfg = '' @@ -222,18 +222,34 @@ let efiDir = pkgs.runCommand "efi-directory" {} '' mkdir -p $out/EFI/boot/ + # ALWAYS required modules. MODULES="fat iso9660 part_gpt part_msdos \ normal boot linux configfile loopback chain halt \ - efifwsetup efi_gop efi_uga \ + efifwsetup efi_gop \ ls search search_label search_fs_uuid search_fs_file \ gfxmenu gfxterm gfxterm_background gfxterm_menu test all_video loadenv \ exfat ext2 ntfs btrfs hfsplus udf \ videoinfo png \ echo serial \ " + + echo "Building GRUB with modules:" + for mod in $MODULES; do + echo " - $mod" + done + + # Modules that may or may not be available per-platform. + echo "Adding additional modules:" + for mod in efi_uga; do + if [ -f ${pkgs.grub2_efi}/lib/grub/${pkgs.grub2_efi.grubTarget}/$mod.mod ]; then + echo " - $mod" + MODULES+=" $mod" + fi + done + # Make our own efi program, we can't rely on "grub-install" since it seems to # probe for devices, even with --skip-fs-probe. - ${pkgs.grub2_efi}/bin/grub-mkimage -o $out/EFI/boot/${if targetArch == "x64" then "bootx64" else "bootia32"}.efi -p /EFI/boot -O ${if targetArch == "x64" then "x86_64" else "i386"}-efi \ + ${pkgs.grub2_efi}/bin/grub-mkimage -o $out/EFI/boot/boot${targetArch}.efi -p /EFI/boot -O ${pkgs.grub2_efi.grubTarget} \ $MODULES cp ${pkgs.grub2_efi}/share/grub/unicode.pf2 $out/EFI/boot/ @@ -339,15 +355,24 @@ let echo "Image size: $image_size" truncate --size=$image_size "$out" ${pkgs.libfaketime}/bin/faketime "2000-01-01 00:00:00" ${pkgs.dosfstools}/sbin/mkfs.vfat -i 12345678 -n EFIBOOT "$out" - mcopy -bpsvm -i "$out" ./* :: + mcopy -psvm -i "$out" ./* :: + # Verify the FAT partition. + ${pkgs.dosfstools}/sbin/fsck.vfat -vn "$out" ''; # */ - targetArch = if pkgs.stdenv.isi686 then - "ia32" - else if pkgs.stdenv.isx86_64 then - "x64" - else - throw "Unsupported architecture"; + # Name used by UEFI for architectures. + targetArch = + if pkgs.stdenv.isi686 then + "ia32" + else if pkgs.stdenv.isx86_64 then + "x64" + else if pkgs.stdenv.isAarch64 then + "aa64" + else + throw "Unsupported architecture"; + + # Syslinux (and isolinux) only supports x86-based architectures. + canx86BiosBoot = pkgs.stdenv.isi686 || pkgs.stdenv.isx86_64; in @@ -481,9 +506,9 @@ in # here and it causes a cyclic dependency. boot.loader.grub.enable = false; - # !!! Hack - attributes expected by other modules. - system.boot.loader.kernelFile = "bzImage"; - environment.systemPackages = [ pkgs.grub2 pkgs.grub2_efi pkgs.syslinux ]; + environment.systemPackages = [ pkgs.grub2 pkgs.grub2_efi ] + ++ optional canx86BiosBoot pkgs.syslinux + ; # In stage 1 of the boot, mount the CD as the root FS by label so # that we don't need to know its device. We pass the label of the @@ -554,13 +579,7 @@ in # Individual files to be included on the CD, outside of the Nix # store on the CD. isoImage.contents = - [ { source = pkgs.substituteAll { - name = "isolinux.cfg"; - src = pkgs.writeText "isolinux.cfg-in" isolinuxCfg; - bootRoot = "/boot"; - }; - target = "/isolinux/isolinux.cfg"; - } + [ { source = config.boot.kernelPackages.kernel + "/" + config.system.boot.loader.kernelFile; target = "/boot/" + config.system.boot.loader.kernelFile; } @@ -570,9 +589,6 @@ in { source = config.system.build.squashfsStore; target = "/nix-store.squashfs"; } - { source = "${pkgs.syslinux}/share/syslinux"; - target = "/isolinux"; - } { source = config.isoImage.efiSplashImage; target = "/EFI/boot/efi-background.png"; } @@ -582,6 +598,17 @@ in { source = pkgs.writeText "version" config.system.nixos.label; target = "/version.txt"; } + ] ++ optionals canx86BiosBoot [ + { source = pkgs.substituteAll { + name = "isolinux.cfg"; + src = pkgs.writeText "isolinux.cfg-in" isolinuxCfg; + bootRoot = "/boot"; + }; + target = "/isolinux/isolinux.cfg"; + } + { source = "${pkgs.syslinux}/share/syslinux"; + target = "/isolinux"; + } ] ++ optionals config.isoImage.makeEfiBootable [ { source = efiImg; target = "/boot/efi.img"; @@ -589,7 +616,7 @@ in { source = "${efiDir}/EFI"; target = "/EFI"; } - ] ++ optionals config.boot.loader.grub.memtest86.enable [ + ] ++ optionals (config.boot.loader.grub.memtest86.enable && canx86BiosBoot) [ { source = "${pkgs.memtest86plus}/memtest.bin"; target = "/boot/memtest.bin"; } @@ -604,9 +631,10 @@ in # Create the ISO image. system.build.isoImage = pkgs.callPackage ../../../lib/make-iso9660-image.nix ({ inherit (config.isoImage) isoName compressImage volumeID contents; - bootable = true; + bootable = canx86BiosBoot; bootImage = "/isolinux/isolinux.bin"; - } // optionalAttrs config.isoImage.makeUsbBootable { + syslinux = if canx86BiosBoot then pkgs.syslinux else null; + } // optionalAttrs (config.isoImage.makeUsbBootable && canx86BiosBoot) { usbBootable = true; isohybridMbrImage = "${pkgs.syslinux}/share/syslinux/isohdpfx.bin"; } // optionalAttrs config.isoImage.makeEfiBootable { diff --git a/nixos/modules/installer/cd-dvd/sd-image-aarch64-new-kernel.nix b/nixos/modules/installer/cd-dvd/sd-image-aarch64-new-kernel.nix new file mode 100644 index 00000000000..2882fbcc730 --- /dev/null +++ b/nixos/modules/installer/cd-dvd/sd-image-aarch64-new-kernel.nix @@ -0,0 +1,7 @@ +{ pkgs, ... }: + +{ + imports = [ ./sd-image-aarch64.nix ]; + + boot.kernelPackages = pkgs.linuxPackages_latest; +} diff --git a/nixos/modules/installer/cd-dvd/sd-image-aarch64.nix b/nixos/modules/installer/cd-dvd/sd-image-aarch64.nix index 86e19f3da56..5f7194e92a3 100644 --- a/nixos/modules/installer/cd-dvd/sd-image-aarch64.nix +++ b/nixos/modules/installer/cd-dvd/sd-image-aarch64.nix @@ -5,7 +5,7 @@ let extlinux-conf-builder = import ../../system/boot/loader/generic-extlinux-compatible/extlinux-conf-builder.nix { - inherit pkgs; + pkgs = pkgs.buildPackages; }; in { @@ -15,18 +15,10 @@ in ./sd-image.nix ]; - assertions = lib.singleton { - assertion = pkgs.stdenv.hostPlatform.system == "aarch64-linux" - && pkgs.stdenv.hostPlatform.system == pkgs.stdenv.buildPlatform.system; - message = "sd-image-aarch64.nix can be only built natively on Aarch64 / ARM64; " + - "it cannot be cross compiled"; - }; - boot.loader.grub.enable = false; boot.loader.generic-extlinux-compatible.enable = true; boot.consoleLogLevel = lib.mkDefault 7; - boot.kernelPackages = pkgs.linuxPackages_latest; # The serial ports listed here are: # - ttyS0: for Tegra (Jetson TX1) diff --git a/nixos/modules/installer/cd-dvd/sd-image-armv7l-multiplatform.nix b/nixos/modules/installer/cd-dvd/sd-image-armv7l-multiplatform.nix index 695c79ca170..71448f74c36 100644 --- a/nixos/modules/installer/cd-dvd/sd-image-armv7l-multiplatform.nix +++ b/nixos/modules/installer/cd-dvd/sd-image-armv7l-multiplatform.nix @@ -5,7 +5,7 @@ let extlinux-conf-builder = import ../../system/boot/loader/generic-extlinux-compatible/extlinux-conf-builder.nix { - inherit pkgs; + pkgs = pkgs.buildPackages; }; in { @@ -15,13 +15,6 @@ in ./sd-image.nix ]; - assertions = lib.singleton { - assertion = pkgs.stdenv.hostPlatform.system == "armv7l-linux" - && pkgs.stdenv.hostPlatform.system == pkgs.stdenv.buildPlatform.system; - message = "sd-image-armv7l-multiplatform.nix can be only built natively on ARMv7; " + - "it cannot be cross compiled"; - }; - boot.loader.grub.enable = false; boot.loader.generic-extlinux-compatible.enable = true; diff --git a/nixos/modules/installer/cd-dvd/sd-image-raspberrypi.nix b/nixos/modules/installer/cd-dvd/sd-image-raspberrypi.nix index e395b265d15..96e06670694 100644 --- a/nixos/modules/installer/cd-dvd/sd-image-raspberrypi.nix +++ b/nixos/modules/installer/cd-dvd/sd-image-raspberrypi.nix @@ -5,7 +5,7 @@ let extlinux-conf-builder = import ../../system/boot/loader/generic-extlinux-compatible/extlinux-conf-builder.nix { - inherit pkgs; + pkgs = pkgs.buildPackages; }; in { @@ -15,13 +15,6 @@ in ./sd-image.nix ]; - assertions = lib.singleton { - assertion = pkgs.stdenv.hostPlatform.system == "armv6l-linux" - && pkgs.stdenv.hostPlatform.system == pkgs.stdenv.buildPlatform.system; - message = "sd-image-raspberrypi.nix can be only built natively on ARMv6; " + - "it cannot be cross compiled"; - }; - boot.loader.grub.enable = false; boot.loader.generic-extlinux-compatible.enable = true; diff --git a/nixos/modules/installer/cd-dvd/sd-image.nix b/nixos/modules/installer/cd-dvd/sd-image.nix index b6e1d11c2b5..69746a8e979 100644 --- a/nixos/modules/installer/cd-dvd/sd-image.nix +++ b/nixos/modules/installer/cd-dvd/sd-image.nix @@ -134,7 +134,9 @@ in ${config.sdImage.populateBootCommands} # Copy the populated /boot into the SD image - (cd boot; mcopy -bpsvm -i ../bootpart.img ./* ::) + (cd boot; mcopy -psvm -i ../bootpart.img ./* ::) + # Verify the FAT partition before copying it. + fsck.vfat -vn bootpart.img dd conv=notrunc if=bootpart.img of=$img seek=$START count=$SECTORS ''; }) {}; diff --git a/nixos/modules/installer/tools/nix-fallback-paths.nix b/nixos/modules/installer/tools/nix-fallback-paths.nix index 1cfc8ff8612..5d431df4b11 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/cdcia67siabmj6li7vyffgv2cry86fq8-nix-2.1.3"; - i686-linux = "/nix/store/6q3xi6y5qnsv7d62b8n00hqfxi8rs2xs-nix-2.1.3"; - aarch64-linux = "/nix/store/2v93d0vimlm28jg0ms6v1i6lc0fq13pn-nix-2.1.3"; - x86_64-darwin = "/nix/store/dkjlfkrknmxbjmpfk3dg4q3nmb7m3zvk-nix-2.1.3"; + x86_64-linux = "/nix/store/pid1yakjasch4pwl63nzbj22z9zf0q26-nix-2.2"; + i686-linux = "/nix/store/qpkl0cxy0xh4h432lv2qsjrmhvx5x2vy-nix-2.2"; + aarch64-linux = "/nix/store/0jg7h94x986d8cskg6gcfza9x67spdbp-nix-2.2"; + x86_64-darwin = "/nix/store/a48whqkmxnsfhwbk6nay74iyc1cf0lr2-nix-2.2"; } 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 4372d196261..c1028a0ad7e 100644 --- a/nixos/modules/installer/tools/nixos-build-vms/build-vms.nix +++ b/nixos/modules/installer/tools/nixos-build-vms/build-vms.nix @@ -1,9 +1,13 @@ { system ? builtins.currentSystem +, config ? {} , networkExpr }: let nodes = import networkExpr; in -with import ../../../../lib/testing.nix { inherit system; }; +with import ../../../../lib/testing.nix { + inherit system; + pkgs = import ../../../../.. { inherit system config; }; +}; (makeTest { inherit nodes; testScript = ""; }).driver diff --git a/nixos/modules/installer/tools/nixos-generate-config.pl b/nixos/modules/installer/tools/nixos-generate-config.pl index b70faa380e5..bad9356ab5a 100644 --- a/nixos/modules/installer/tools/nixos-generate-config.pl +++ b/nixos/modules/installer/tools/nixos-generate-config.pl @@ -314,14 +314,16 @@ push @attrs, "services.xserver.videoDrivers = [ \"$videoDriver\" ];" if $videoDr # Generate the swapDevices option from the currently activated swap # devices. -my @swaps = read_file("/proc/swaps"); -shift @swaps; +my @swaps = read_file("/proc/swaps", err_mode => 'carp'); my @swapDevices; -foreach my $swap (@swaps) { - $swap =~ /^(\S+)\s/; - next unless -e $1; - my $dev = findStableDevPath $1; - push @swapDevices, "{ device = \"$dev\"; }"; +if (@swaps) { + shift @swaps; + foreach my $swap (@swaps) { + $swap =~ /^(\S+)\s/; + next unless -e $1; + my $dev = findStableDevPath $1; + push @swapDevices, "{ device = \"$dev\"; }"; + } } @@ -447,7 +449,11 @@ EOF if (-e $slave) { my $dmName = read_file("/sys/class/block/$deviceName/dm/name"); chomp $dmName; - $fileSystems .= " boot.initrd.luks.devices.\"$dmName\".device = \"${\(findStableDevPath $slave)}\";\n\n"; + # Ensure to add an entry only once + my $luksDevice = " boot.initrd.luks.devices.\"$dmName\".device"; + if ($fileSystems !~ /^\Q$luksDevice\E/m) { + $fileSystems .= "$luksDevice = \"${\(findStableDevPath $slave)}\";\n\n"; + } } } } diff --git a/nixos/modules/installer/tools/nixos-install.sh b/nixos/modules/installer/tools/nixos-install.sh index 22c1e0fe9a3..defc46ad2a7 100644 --- a/nixos/modules/installer/tools/nixos-install.sh +++ b/nixos/modules/installer/tools/nixos-install.sh @@ -13,6 +13,7 @@ extraBuildFlags=() mountPoint=/mnt channelPath= +system= while [ "$#" -gt 0 ]; do i="$1"; shift 1 diff --git a/nixos/modules/installer/tools/nixos-option.sh b/nixos/modules/installer/tools/nixos-option.sh index 327e3e6989f..4560e9c7403 100644 --- a/nixos/modules/installer/tools/nixos-option.sh +++ b/nixos/modules/installer/tools/nixos-option.sh @@ -314,13 +314,13 @@ else # echo 1>&2 "Warning: This value is not an option." result=$(evalCfg "") - if names=$(attrNames "$result" 2> /dev/null); then + if [ ! -z "$result" ]; then + names=$(attrNames "$result" 2> /dev/null) echo 1>&2 "This attribute set contains:" escapeQuotes () { eval echo "$1"; } nixMap escapeQuotes "$names" else - echo 1>&2 "An error occurred while looking for attribute names." - echo $result + echo 1>&2 "An error occurred while looking for attribute names. Are you sure that '$option' exists?" fi fi diff --git a/nixos/modules/installer/tools/nixos-rebuild.sh b/nixos/modules/installer/tools/nixos-rebuild.sh index 2af73519bc5..361c2e49e05 100644 --- a/nixos/modules/installer/tools/nixos-rebuild.sh +++ b/nixos/modules/installer/tools/nixos-rebuild.sh @@ -53,11 +53,11 @@ while [ "$#" -gt 0 ]; do repair=1 extraBuildFlags+=("$i") ;; - --max-jobs|-j|--cores|-I) + --max-jobs|-j|--cores|-I|--builders) j="$1"; shift 1 extraBuildFlags+=("$i" "$j") ;; - --show-trace|--no-build-hook|--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*) extraBuildFlags+=("$i") ;; --option) diff --git a/nixos/modules/installer/tools/tools.nix b/nixos/modules/installer/tools/tools.nix index af0a3a2fcc8..00c4d5018bf 100644 --- a/nixos/modules/installer/tools/tools.nix +++ b/nixos/modules/installer/tools/tools.nix @@ -37,7 +37,7 @@ let name = "nixos-generate-config"; src = ./nixos-generate-config.pl; path = [ pkgs.btrfs-progs ]; - perl = "${pkgs.perl}/bin/perl -I${pkgs.perlPackages.FileSlurp}/lib/perl5/site_perl"; + perl = "${pkgs.perl}/bin/perl -I${pkgs.perlPackages.FileSlurp}/${pkgs.perl.libPrefix}"; inherit (config.system.nixos) release; }; diff --git a/nixos/modules/installer/virtualbox-demo.nix b/nixos/modules/installer/virtualbox-demo.nix index 8ca3592f380..2e1b4b3998b 100644 --- a/nixos/modules/installer/virtualbox-demo.nix +++ b/nixos/modules/installer/virtualbox-demo.nix @@ -22,4 +22,42 @@ with lib; powerManagement.enable = false; system.stateVersion = mkDefault "18.03"; + + installer.cloneConfigExtra = '' + # Let demo build as a trusted user. + # nix.trustedUsers = [ "demo" ]; + + # Mount a VirtualBox shared folder. + # This is configurable in the VirtualBox menu at + # Machine / Settings / Shared Folders. + # fileSystems."/mnt" = { + # fsType = "vboxsf"; + # device = "nameofdevicetomount"; + # options = [ "rw" ]; + # }; + + # By default, the NixOS VirtualBox demo image includes SDDM and Plasma. + # If you prefer another desktop manager or display manager, you may want + # to disable the default. + # services.xserver.desktopManager.plasma5.enable = lib.mkForce false; + # services.xserver.displayManager.sddm.enable = lib.mkForce false; + + # Enable GDM/GNOME by uncommenting above two lines and two lines below. + # services.xserver.displayManager.gdm.enable = true; + # services.xserver.desktopManager.gnome3.enable = true; + + # Set your time zone. + # time.timeZone = "Europe/Amsterdam"; + + # List packages installed in system profile. To search, run: + # \$ nix search wget + # environment.systemPackages = with pkgs; [ + # wget vim + # ]; + + # Enable the OpenSSH daemon. + # services.openssh.enable = true; + + system.stateVersion = mkDefault "18.03"; + ''; } diff --git a/nixos/modules/misc/documentation.nix b/nixos/modules/misc/documentation.nix index 6a7105e9cda..09d53c322fb 100644 --- a/nixos/modules/misc/documentation.nix +++ b/nixos/modules/misc/documentation.nix @@ -166,7 +166,7 @@ in if [ -w $out/share/info ]; then shopt -s nullglob for i in $out/share/info/*.info $out/share/info/*.info.gz; do - ${pkgs.texinfo}/bin/install-info $i $out/share/info/dir + ${pkgs.buildPackages.texinfo}/bin/install-info $i $out/share/info/dir done fi ''; diff --git a/nixos/modules/misc/ids.nix b/nixos/modules/misc/ids.nix index 0b4ed6d3b62..d6e6ccaecd2 100644 --- a/nixos/modules/misc/ids.nix +++ b/nixos/modules/misc/ids.nix @@ -101,7 +101,7 @@ iodined = 66; #libvirtd = 67; # unused graphite = 68; - statsd = 69; + #statsd = 69; # removed 2018-11-14 transmission = 70; postgres = 71; #vboxusers = 72; # unused @@ -175,7 +175,7 @@ dnsmasq = 141; uhub = 142; yandexdisk = 143; - #collectd = 144; #unused + mxisd = 144; # was once collectd consul = 145; mailpile = 146; redmine = 147; @@ -306,7 +306,7 @@ rslsync = 279; minio = 280; kanboard = 281; - pykms = 282; + # pykms = 282; # DynamicUser = true kodi = 283; restya-board = 284; mighttpd2 = 285; @@ -331,6 +331,14 @@ zeronet = 304; lirc = 305; lidarr = 306; + slurm = 307; + kapacitor = 308; + solr = 309; + alerta = 310; + minetest = 311; + rss2email = 312; + cockroachdb = 313; + zoneminder = 314; # When adding a uid, make sure it doesn't match an existing gid. And don't use uids above 399! @@ -385,7 +393,7 @@ virtuoso = 44; #rtkit = 45; # unused dovecot2 = 46; - #dovenull = 47; # unused + dovenull2 = 47; prayer = 49; mpd = 50; clamav = 51; @@ -406,7 +414,7 @@ iodined = 66; libvirtd = 67; graphite = 68; - #statsd = 69; # unused + #statsd = 69; # removed 2018-11-14 transmission = 70; postgres = 71; vboxusers = 72; @@ -478,7 +486,7 @@ #dnsmasq = 141; # unused uhub = 142; #yandexdisk = 143; # unused - #collectd = 144; # unused + mxisd = 144; # was once collectd #consul = 145; # unused mailpile = 146; redmine = 147; @@ -597,7 +605,7 @@ rslsync = 279; minio = 280; kanboard = 281; - pykms = 282; + # pykms = 282; # DynamicUser = true kodi = 283; restya-board = 284; mighttpd2 = 285; @@ -622,6 +630,14 @@ zeronet = 304; lirc = 305; lidarr = 306; + slurm = 307; + kapacitor = 308; + solr = 309; + alerta = 310; + minetest = 311; + rss2email = 312; + cockroachdb = 313; + zoneminder = 314; # When adding a gid, make sure it doesn't match an existing # uid. Users and groups with the same name should have equal diff --git a/nixos/modules/misc/nixpkgs.nix b/nixos/modules/misc/nixpkgs.nix index 7f9833e184a..3a717fddaba 100644 --- a/nixos/modules/misc/nixpkgs.nix +++ b/nixos/modules/misc/nixpkgs.nix @@ -1,9 +1,10 @@ -{ config, lib, pkgs, ... }: +{ config, options, lib, pkgs, ... }: with lib; let cfg = config.nixpkgs; + opt = options.nixpkgs; isConfig = x: builtins.isAttrs x || lib.isFunction x; @@ -54,6 +55,12 @@ let check = builtins.isAttrs; }; + defaultPkgs = import ../../.. { + inherit (cfg) config overlays localSystem crossSystem; + }; + + finalPkgs = if opt.pkgs.isDefined then cfg.pkgs.appendOverlays cfg.overlays else defaultPkgs; + in { @@ -65,17 +72,21 @@ in inherit (cfg) config overlays localSystem crossSystem; } ''; - default = import ../../.. { - inherit (cfg) config overlays localSystem crossSystem; - }; type = pkgsType; example = literalExample ''import {}''; description = '' - This is the evaluation of Nixpkgs that will be provided to - all NixOS modules. Defining this option has the effect of - ignoring the other options that would otherwise be used to - evaluate Nixpkgs, because those are arguments to the default - value. The default value imports the Nixpkgs source files + If set, the pkgs argument to all NixOS modules is the value of + this option, extended with nixpkgs.overlays, if + that is also set. Either nixpkgs.crossSystem or + nixpkgs.localSystem will be used in an assertion + to check that the NixOS and Nixpkgs architectures match. Any + other options in nixpkgs.*, notably config, + will be ignored. + + If unset, the pkgs argument to all NixOS modules is determined + as shown in the default value for this option. + + The default value imports the Nixpkgs source files relative to the location of this NixOS module, because NixOS and Nixpkgs are distributed together for consistency, so the nixos in the default value is in fact a @@ -128,12 +139,14 @@ in description = '' List of overlays to use with the Nix Packages collection. (For details, see the Nixpkgs documentation.) It allows - you to override packages globally. This is a function that + you to override packages globally. Each function in the list takes as an argument the original Nixpkgs. The first argument should be used for finding dependencies, and the second should be used for overriding recipes. - Ignored when nixpkgs.pkgs is set. + If nixpkgs.pkgs is set, overlays specified here + will be applied after the overlays that were already present + in nixpkgs.pkgs. ''; }; @@ -207,8 +220,26 @@ in config = { _module.args = { - pkgs = cfg.pkgs; - pkgs_i686 = cfg.pkgs.pkgsi686Linux; + pkgs = finalPkgs; }; + + assertions = [ + ( + let + nixosExpectedSystem = + if config.nixpkgs.crossSystem != null + then config.nixpkgs.crossSystem.system + else config.nixpkgs.localSystem.system; + nixosOption = + if config.nixpkgs.crossSystem != null + then "nixpkgs.crossSystem" + else "nixpkgs.localSystem"; + pkgsSystem = finalPkgs.stdenv.targetPlatform.system; + in { + assertion = nixosExpectedSystem == pkgsSystem; + message = "The NixOS nixpkgs.pkgs option was set to a Nixpkgs invocation that compiles to target system ${pkgsSystem} but NixOS was configured for system ${nixosExpectedSystem} via NixOS option ${nixosOption}. The NixOS system settings must match the Nixpkgs target system."; + } + ) + ]; }; } diff --git a/nixos/modules/misc/version.nix b/nixos/modules/misc/version.nix index 6d78b7c593f..001505320c0 100644 --- a/nixos/modules/misc/version.nix +++ b/nixos/modules/misc/version.nix @@ -43,6 +43,7 @@ in nixos.codeName = mkOption { readOnly = true; type = types.str; + default = lib.trivial.codeName; description = "The NixOS release code name (e.g. Emu)."; }; @@ -79,9 +80,6 @@ in version = mkDefault (cfg.release + cfg.versionSuffix); revision = mkIf (pathIsDirectory gitRepo) (mkDefault gitCommitId); versionSuffix = mkIf (pathIsDirectory gitRepo) (mkDefault (".git." + gitCommitId)); - - # Note: the first letter is bumped on every release. It's an animal. - codeName = "Koi"; }; # Generate /etc/os-release. See @@ -95,6 +93,7 @@ in VERSION_CODENAME=${toLower cfg.codeName} VERSION_ID="${cfg.version}" PRETTY_NAME="NixOS ${cfg.version} (${cfg.codeName})" + LOGO="nix-snowflake" HOME_URL="https://nixos.org/" SUPPORT_URL="https://nixos.org/nixos/support.html" BUG_REPORT_URL="https://github.com/NixOS/nixpkgs/issues" diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index 261de6955ec..1a8bd9cccb1 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -11,6 +11,9 @@ ./config/xdg/icons.nix ./config/xdg/menus.nix ./config/xdg/mime.nix + ./config/appstream.nix + ./config/xdg/sounds.nix + ./config/gtk/gtk-icon-cache.nix ./config/gnu.nix ./config/i18n.nix ./config/iproute2.nix @@ -33,8 +36,9 @@ ./config/vpnc.nix ./config/zram.nix ./hardware/all-firmware.nix + ./hardware/bladeRF.nix ./hardware/brightnessctl.nix - ./hardware/ckb.nix + ./hardware/ckb-next.nix ./hardware/cpu/amd-microcode.nix ./hardware/cpu/intel-microcode.nix ./hardware/digitalbitbox.nix @@ -63,7 +67,6 @@ ./i18n/input-method/ibus.nix ./i18n/input-method/nabi.nix ./i18n/input-method/uim.nix - ./installer/tools/auto-upgrade.nix ./installer/tools/tools.nix ./misc/assertions.nix ./misc/crashdump.nix @@ -90,6 +93,7 @@ ./programs/criu.nix ./programs/dconf.nix ./programs/digitalbitbox/default.nix + ./programs/dmrconfig.nix ./programs/environment.nix ./programs/firejail.nix ./programs/fish.nix @@ -102,13 +106,14 @@ ./programs/less.nix ./programs/light.nix ./programs/mosh.nix + ./programs/mininet.nix ./programs/mtr.nix ./programs/nano.nix + ./programs/nm-applet.nix ./programs/npm.nix ./programs/oblogout.nix ./programs/plotinus.nix ./programs/qt5ct.nix - ./programs/rootston.nix ./programs/screen.nix ./programs/sedutil.nix ./programs/slock.nix @@ -121,11 +126,13 @@ ./programs/sysdig.nix ./programs/systemtap.nix ./programs/sway.nix + ./programs/sway-beta.nix ./programs/thefuck.nix ./programs/tmux.nix ./programs/udevil.nix ./programs/venus.nix ./programs/vim.nix + ./programs/wavemon.nix ./programs/way-cooler.nix ./programs/wireshark.nix ./programs/xfs_quota.nix @@ -147,8 +154,10 @@ ./security/chromium-suid-sandbox.nix ./security/dhparams.nix ./security/duosec.nix + ./security/google_oslogin.nix ./security/hidepid.nix ./security/lock-kernel-modules.nix + ./security/misc.nix ./security/oath.nix ./security/pam.nix ./security/pam_usb.nix @@ -208,6 +217,7 @@ ./services/databases/aerospike.nix ./services/databases/cassandra.nix ./services/databases/clickhouse.nix + ./services/databases/cockroachdb.nix ./services/databases/couchdb.nix ./services/databases/firebird.nix ./services/databases/foundationdb.nix @@ -233,14 +243,17 @@ ./services/desktops/dleyna-server.nix ./services/desktops/flatpak.nix ./services/desktops/geoclue2.nix + ./services/desktops/gsignond.nix ./services/desktops/pipewire.nix ./services/desktops/gnome3/at-spi2-core.nix ./services/desktops/gnome3/chrome-gnome-shell.nix ./services/desktops/gnome3/evolution-data-server.nix + ./services/desktops/gnome3/file-roller.nix ./services/desktops/gnome3/gnome-disks.nix ./services/desktops/gnome3/gnome-documents.nix ./services/desktops/gnome3/gnome-keyring.nix ./services/desktops/gnome3/gnome-online-accounts.nix + ./services/desktops/gnome3/gnome-remote-desktop.nix ./services/desktops/gnome3/gnome-online-miners.nix ./services/desktops/gnome3/gnome-terminal-server.nix ./services/desktops/gnome3/gnome-user-share.nix @@ -292,12 +305,14 @@ ./services/hardware/usbmuxd.nix ./services/hardware/thermald.nix ./services/hardware/undervolt.nix + ./services/hardware/vdr.nix ./services/logging/SystemdJournal2Gelf.nix ./services/logging/awstats.nix ./services/logging/fluentd.nix ./services/logging/graylog.nix ./services/logging/heartbeat.nix ./services/logging/journalbeat.nix + ./services/logging/journaldriver.nix ./services/logging/journalwatch.nix ./services/logging/klogd.nix ./services/logging/logcheck.nix @@ -324,12 +339,15 @@ ./services/mail/postgrey.nix ./services/mail/spamassassin.nix ./services/mail/rspamd.nix + ./services/mail/rss2email.nix ./services/mail/rmilter.nix + ./services/mail/roundcube.nix ./services/mail/nullmailer.nix ./services/misc/airsonic.nix ./services/misc/apache-kafka.nix ./services/misc/autofs.nix ./services/misc/autorandr.nix + ./services/misc/bees.nix ./services/misc/bepasty.nix ./services/misc/canto-daemon.nix ./services/misc/calibre-server.nix @@ -415,7 +433,9 @@ ./services/misc/uhub.nix ./services/misc/weechat.nix ./services/misc/xmr-stak.nix + ./services/misc/zoneminder.nix ./services/misc/zookeeper.nix + ./services/monitoring/alerta.nix ./services/monitoring/apcupsd.nix ./services/monitoring/arbtt.nix ./services/monitoring/bosun.nix @@ -426,10 +446,12 @@ ./services/monitoring/dd-agent/dd-agent.nix ./services/monitoring/fusion-inventory.nix ./services/monitoring/grafana.nix + ./services/monitoring/grafana-reporter.nix ./services/monitoring/graphite.nix ./services/monitoring/hdaps.nix ./services/monitoring/heapster.nix ./services/monitoring/incron.nix + ./services/monitoring/kapacitor.nix ./services/monitoring/longview.nix ./services/monitoring/monit.nix ./services/monitoring/munin.nix @@ -444,7 +466,6 @@ ./services/monitoring/riemann-tools.nix ./services/monitoring/scollector.nix ./services/monitoring/smartd.nix - ./services/monitoring/statsd.nix ./services/monitoring/sysstat.nix ./services/monitoring/systemhealth.nix ./services/monitoring/teamviewer.nix @@ -503,6 +524,7 @@ ./services/networking/dnsmasq.nix ./services/networking/ejabberd.nix ./services/networking/epmd.nix + ./services/networking/eternal-terminal.nix ./services/networking/fakeroute.nix ./services/networking/ferm.nix ./services/networking/firefox/sync-server.nix @@ -550,6 +572,7 @@ ./services/networking/miredo.nix ./services/networking/mstpd.nix ./services/networking/murmur.nix + ./services/networking/mxisd.nix ./services/networking/namecoind.nix ./services/networking/nat.nix ./services/networking/ndppd.nix @@ -612,6 +635,7 @@ ./services/networking/supplicant.nix ./services/networking/supybot.nix ./services/networking/syncthing.nix + ./services/networking/syncthing-relay.nix ./services/networking/tcpcrypt.nix ./services/networking/teamspeak3.nix ./services/networking/tinc.nix @@ -634,7 +658,7 @@ ./services/networking/zerobin.nix ./services/networking/zeronet.nix ./services/networking/zerotierone.nix - ./services/networking/znc.nix + ./services/networking/znc/default.nix ./services/printing/cupsd.nix ./services/scheduling/atd.nix ./services/scheduling/chronos.nix @@ -673,7 +697,7 @@ ./services/system/dbus.nix ./services/system/earlyoom.nix ./services/system/localtime.nix - ./services/system/kerberos.nix + ./services/system/kerberos/default.nix ./services/system/nscd.nix ./services/system/saslauthd.nix ./services/system/uptimed.nix @@ -698,7 +722,6 @@ ./services/web-apps/restya-board.nix ./services/web-apps/tt-rss.nix ./services/web-apps/selfoss.nix - ./services/web-apps/quassel-webserver.nix ./services/web-apps/virtlyst.nix ./services/web-apps/youtrack.nix ./services/web-servers/apache-httpd/default.nix @@ -742,6 +765,7 @@ ./services/x11/hardware/multitouch.nix ./services/x11/hardware/synaptics.nix ./services/x11/hardware/wacom.nix + ./services/x11/gdk-pixbuf.nix ./services/x11/redshift.nix ./services/x11/urxvtd.nix ./services/x11/window-managers/awesome.nix @@ -792,6 +816,7 @@ ./system/boot/timesyncd.nix ./system/boot/tmp.nix ./system/etc/etc.nix + ./tasks/auto-upgrade.nix ./tasks/bcache.nix ./tasks/cpu-freq.nix ./tasks/encrypted-devices.nix diff --git a/nixos/modules/profiles/base.nix b/nixos/modules/profiles/base.nix index 5aaffa4f1f2..2a2fe119d30 100644 --- a/nixos/modules/profiles/base.nix +++ b/nixos/modules/profiles/base.nix @@ -7,7 +7,7 @@ # Include some utilities that are useful for installing or repairing # the system. environment.systemPackages = [ - pkgs.w3m-nox # needed for the manual anyway + pkgs.w3m-nographics # needed for the manual anyway pkgs.testdisk # useful for repairing boot problems pkgs.ms-sys # for writing Microsoft boot sectors / MBRs pkgs.efibootmgr @@ -19,6 +19,9 @@ pkgs.cryptsetup # needed for dm-crypt volumes pkgs.mkpasswd # for generating password files + # Some text editors. + pkgs.vim + # Some networking tools. pkgs.fuse pkgs.fuse3 @@ -46,7 +49,7 @@ ]; # Include support for various filesystems. - boot.supportedFilesystems = [ "btrfs" "reiserfs" "vfat" "f2fs" "xfs" "ntfs" "cifs" ]; + boot.supportedFilesystems = [ "btrfs" "reiserfs" "vfat" "f2fs" "xfs" "zfs" "ntfs" "cifs" ]; # Configure host id for ZFS to work networking.hostId = lib.mkDefault "8425e349"; diff --git a/nixos/modules/profiles/clone-config.nix b/nixos/modules/profiles/clone-config.nix index 99d4774584f..3f669ba7d2e 100644 --- a/nixos/modules/profiles/clone-config.nix +++ b/nixos/modules/profiles/clone-config.nix @@ -48,6 +48,8 @@ let { imports = [ ${toString config.installer.cloneConfigIncludes} ]; + + ${config.installer.cloneConfigExtra} } ''; @@ -73,6 +75,13 @@ in ''; }; + installer.cloneConfigExtra = mkOption { + default = ""; + description = '' + Extra text to include in the cloned configuration.nix included in this + installer. + ''; + }; }; config = { diff --git a/nixos/modules/profiles/docker-container.nix b/nixos/modules/profiles/docker-container.nix index 7031d7d1d59..5d6b11498b5 100644 --- a/nixos/modules/profiles/docker-container.nix +++ b/nixos/modules/profiles/docker-container.nix @@ -15,15 +15,19 @@ in { # Create the tarball system.build.tarball = pkgs.callPackage ../../lib/make-system-tarball.nix { - contents = []; + contents = [ + { + source = "${config.system.build.toplevel}/."; + target = "./"; + } + ]; extraArgs = "--owner=0"; # Add init script to image - storeContents = [ - { object = config.system.build.toplevel + "/init"; - symlink = "/init"; - } - ] ++ (pkgs2storeContents [ pkgs.stdenv ]); + storeContents = pkgs2storeContents [ + config.system.build.toplevel + pkgs.stdenv + ]; # Some container managers like lxc need these extraCommands = "mkdir -p proc sys dev"; diff --git a/nixos/modules/profiles/hardened.nix b/nixos/modules/profiles/hardened.nix index 2af8bf1f8e3..9ab2ee87a19 100644 --- a/nixos/modules/profiles/hardened.nix +++ b/nixos/modules/profiles/hardened.nix @@ -6,23 +6,43 @@ with lib; { + meta = { + maintainers = [ maintainers.joachifm ]; + }; + boot.kernelPackages = mkDefault pkgs.linuxPackages_hardened; + nix.allowedUsers = mkDefault [ "@users" ]; + security.hideProcessInformation = mkDefault true; security.lockKernelModules = mkDefault true; + security.allowUserNamespaces = mkDefault false; + + security.protectKernelImage = mkDefault true; + + security.allowSimultaneousMultithreading = mkDefault false; + + security.virtualization.flushL1DataCache = mkDefault "always"; + security.apparmor.enable = mkDefault true; boot.kernelParams = [ + # 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" - # Disable hibernation (allows replacing the running kernel) - "nohibernate" + # Enable PTI even if CPU claims to be safe from meltdown + "pti=on" ]; boot.blacklistedKernelModules = [ @@ -36,9 +56,6 @@ with lib; # (e.g., parent/child) boot.kernel.sysctl."kernel.yama.ptrace_scope" = mkOverride 500 1; - # Prevent replacing the running kernel image w/o reboot - boot.kernel.sysctl."kernel.kexec_load_disabled" = mkDefault true; - # Restrict access to kernel ring buffer (information leaks) boot.kernel.sysctl."kernel.dmesg_restrict" = mkDefault true; @@ -55,18 +72,6 @@ with lib; # ... or at least apply some hardening to it boot.kernel.sysctl."net.core.bpf_jit_harden" = mkDefault true; - # A recurring problem with user namespaces is that there are - # still code paths where the kernel's permission checking logic - # fails to account for namespacing, instead permitting a - # namespaced process to act outside the namespace with the - # same privileges as it would have inside it. This is particularly - # bad in the common case of running as root within the namespace. - # - # Setting the number of allowed user namespaces to 0 effectively disables - # the feature at runtime. Attempting to create a user namespace - # with unshare will then fail with "no space left on device". - boot.kernel.sysctl."user.max_user_namespaces" = mkDefault 0; - # Raise ASLR entropy for 64bit & 32bit, respectively. # # Note: mmap_rnd_compat_bits may not exist on 64bit. diff --git a/nixos/modules/profiles/headless.nix b/nixos/modules/profiles/headless.nix index 131ee272859..46a9b6a7d8d 100644 --- a/nixos/modules/profiles/headless.nix +++ b/nixos/modules/profiles/headless.nix @@ -6,7 +6,6 @@ with lib; { - sound.enable = false; boot.vesa = false; # Don't start a tty on the serial consoles. diff --git a/nixos/modules/profiles/installation-device.nix b/nixos/modules/profiles/installation-device.nix index d51ed195580..580ea4a58e5 100644 --- a/nixos/modules/profiles/installation-device.nix +++ b/nixos/modules/profiles/installation-device.nix @@ -63,7 +63,7 @@ with lib; # Tell the Nix evaluator to garbage collect more aggressively. # This is desirable in memory-constrained environments that don't # (yet) have swap set up. - environment.variables.GC_INITIAL_HEAP_SIZE = "100000"; + environment.variables.GC_INITIAL_HEAP_SIZE = "1M"; # Make the installer more likely to succeed in low memory # environments. The kernel's overcommit heustistics bite us @@ -87,9 +87,6 @@ with lib; # console less cumbersome if the machine has a public IP. networking.firewall.logRefusedConnections = mkDefault false; - environment.systemPackages = [ pkgs.vim ]; - - # Allow the user to log in as root without a password. users.users.root.initialHashedPassword = ""; }; diff --git a/nixos/modules/profiles/minimal.nix b/nixos/modules/profiles/minimal.nix index 138eda117c7..809bedc588f 100644 --- a/nixos/modules/profiles/minimal.nix +++ b/nixos/modules/profiles/minimal.nix @@ -13,5 +13,5 @@ with lib; documentation.enable = mkDefault false; - sound.enable = mkDefault false; + services.nixosManual.enable = mkDefault false; } diff --git a/nixos/modules/programs/adb.nix b/nixos/modules/programs/adb.nix index 942572cef9d..250d8c252a3 100644 --- a/nixos/modules/programs/adb.nix +++ b/nixos/modules/programs/adb.nix @@ -16,7 +16,6 @@ with lib; To grant access to a user, it must be part of adbusers group: users.users.alice.extraGroups = ["adbusers"]; ''; - relatedPackages = [ ["androidenv" "platformTools"] ]; }; }; }; @@ -24,7 +23,7 @@ with lib; ###### implementation config = mkIf config.programs.adb.enable { services.udev.packages = [ pkgs.android-udev-rules ]; - environment.systemPackages = [ pkgs.androidenv.platformTools ]; + environment.systemPackages = [ pkgs.androidenv.androidPkgs_9_0.platform-tools ]; users.groups.adbusers = {}; }; } diff --git a/nixos/modules/programs/bash/bash.nix b/nixos/modules/programs/bash/bash.nix index f664e222555..d22f9dfa319 100644 --- a/nixos/modules/programs/bash/bash.nix +++ b/nixos/modules/programs/bash/bash.nix @@ -16,7 +16,7 @@ let # programmable completion. If we do, enable all modules installed in # the system and user profile in obsolete /etc/bash_completion.d/ # directories. Bash loads completions in all - # $XDG_DATA_DIRS/share/bash-completion/completions/ + # $XDG_DATA_DIRS/bash-completion/completions/ # on demand, so they do not need to be sourced here. if shopt -q progcomp &>/dev/null; then . "${pkgs.bash-completion}/etc/profile.d/bash_completion.sh" @@ -33,7 +33,8 @@ let ''; bashAliases = concatStringsSep "\n" ( - mapAttrsFlatten (k: v: "alias ${k}=${escapeShellArg v}") cfg.shellAliases + mapAttrsFlatten (k: v: "alias ${k}=${escapeShellArg v}") + (filterAttrs (k: v: !isNull v) cfg.shellAliases) ); in @@ -59,12 +60,12 @@ in */ shellAliases = mkOption { - default = config.environment.shellAliases; + default = {}; description = '' - Set of aliases for bash shell. See - for an option format description. + Set of aliases for bash shell, which overrides . + See for an option format description. ''; - type = types.attrs; # types.attrsOf types.stringOrPath; + type = with types; attrsOf (nullOr (either str path)); }; shellInit = mkOption { @@ -97,7 +98,12 @@ in if [ "$TERM" != "dumb" -o -n "$INSIDE_EMACS" ]; then PROMPT_COLOR="1;31m" let $UID && PROMPT_COLOR="1;32m" - PS1="\n\[\033[$PROMPT_COLOR\][\u@\h:\w]\\$\[\033[0m\] " + if [ -n "$INSIDE_EMACS" ]; then + # Emacs term mode doesn't support xterm title escape sequence (\e]0;) + PS1="\n\[\033[$PROMPT_COLOR\][\u@\h:\w]\\$\[\033[0m\] " + else + PS1="\n\[\033[$PROMPT_COLOR\][\[\e]0;\u@\h: \w\a\]\u@\h:\w]\$\[\033[0m\] " + fi if test "$TERM" = "xterm"; then PS1="\[\033]2;\h:\u:\w\007\]$PS1" fi @@ -125,6 +131,8 @@ in programs.bash = { + shellAliases = mapAttrs (name: mkDefault) cfge.shellAliases; + shellInit = '' if [ -z "$__NIXOS_SET_ENVIRONMENT_DONE" ]; then . ${config.system.build.setEnvironment} diff --git a/nixos/modules/programs/command-not-found/command-not-found.nix b/nixos/modules/programs/command-not-found/command-not-found.nix index bbe7165c62f..656c255fcb1 100644 --- a/nixos/modules/programs/command-not-found/command-not-found.nix +++ b/nixos/modules/programs/command-not-found/command-not-found.nix @@ -16,7 +16,7 @@ let isExecutable = true; inherit (pkgs) perl; inherit (cfg) dbPath; - perlFlags = concatStrings (map (path: "-I ${path}/lib/perl5/site_perl ") + perlFlags = concatStrings (map (path: "-I ${path}/${pkgs.perl.libPrefix} ") [ pkgs.perlPackages.DBI pkgs.perlPackages.DBDSQLite pkgs.perlPackages.StringShellQuote ]); }; diff --git a/nixos/modules/programs/dmrconfig.nix b/nixos/modules/programs/dmrconfig.nix new file mode 100644 index 00000000000..e48a4f31837 --- /dev/null +++ b/nixos/modules/programs/dmrconfig.nix @@ -0,0 +1,38 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.programs.dmrconfig; + +in { + meta.maintainers = [ maintainers.etu ]; + + ###### interface + options = { + programs.dmrconfig = { + enable = mkOption { + default = false; + type = types.bool; + description = '' + Whether to configure system to enable use of dmrconfig. This + enables the required udev rules and installs the program. + ''; + relatedPackages = [ "dmrconfig" ]; + }; + + package = mkOption { + default = pkgs.dmrconfig; + type = types.package; + defaultText = "pkgs.dmrconfig"; + description = "dmrconfig derivation to use"; + }; + }; + }; + + ###### implementation + config = mkIf cfg.enable { + environment.systemPackages = [ cfg.package ]; + services.udev.packages = [ cfg.package ]; + }; +} diff --git a/nixos/modules/programs/fish.nix b/nixos/modules/programs/fish.nix index c3f742acde2..b38af07b92c 100644 --- a/nixos/modules/programs/fish.nix +++ b/nixos/modules/programs/fish.nix @@ -9,7 +9,8 @@ let cfg = config.programs.fish; fishAliases = concatStringsSep "\n" ( - mapAttrsFlatten (k: v: "alias ${k} '${v}'") cfg.shellAliases + mapAttrsFlatten (k: v: "alias ${k} ${escapeShellArg v}") + (filterAttrs (k: v: !isNull v) cfg.shellAliases) ); in @@ -53,12 +54,12 @@ in }; shellAliases = mkOption { - default = config.environment.shellAliases; + default = {}; description = '' - Set of aliases for fish shell. See - for an option format description. + Set of aliases for fish shell, which overrides . + See for an option format description. ''; - type = types.attrs; + type = with types; attrsOf (nullOr (either str path)); }; shellInit = mkOption { @@ -99,6 +100,8 @@ in config = mkIf cfg.enable { + programs.fish.shellAliases = mapAttrs (name: mkDefault) cfge.shellAliases; + environment.etc."fish/foreign-env/shellInit".text = cfge.shellInit; environment.etc."fish/foreign-env/loginShellInit".text = cfge.loginShellInit; environment.etc."fish/foreign-env/interactiveShellInit".text = cfge.interactiveShellInit; diff --git a/nixos/modules/programs/gnupg.nix b/nixos/modules/programs/gnupg.nix index addc9dcca87..b01de9efaa5 100644 --- a/nixos/modules/programs/gnupg.nix +++ b/nixos/modules/programs/gnupg.nix @@ -77,7 +77,7 @@ in systemd.packages = [ pkgs.gnupg ]; - environment.extraInit = '' + environment.interactiveShellInit = '' # Bind gpg-agent to this TTY if gpg commands are used. export GPG_TTY=$(tty) diff --git a/nixos/modules/programs/mininet.nix b/nixos/modules/programs/mininet.nix new file mode 100644 index 00000000000..ecc924325e6 --- /dev/null +++ b/nixos/modules/programs/mininet.nix @@ -0,0 +1,39 @@ +# Global configuration for mininet +# kernel must have NETNS/VETH/SCHED +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.programs.mininet; + + generatedPath = with pkgs; makeSearchPath "bin" [ + iperf ethtool iproute socat + ]; + + pyEnv = pkgs.python.withPackages(ps: [ ps.mininet-python ]); + + mnexecWrapped = pkgs.runCommand "mnexec-wrapper" + { buildInputs = [ pkgs.makeWrapper pkgs.pythonPackages.wrapPython ]; } + '' + makeWrapper ${pkgs.mininet}/bin/mnexec \ + $out/bin/mnexec \ + --prefix PATH : "${generatedPath}" + + ln -s ${pyEnv}/bin/mn $out/bin/mn + + # mn errors out without a telnet binary + # pkgs.telnet brings an undesired ifconfig into PATH see #43105 + ln -s ${pkgs.telnet}/bin/telnet $out/bin/telnet + ''; +in +{ + options.programs.mininet.enable = mkEnableOption "Mininet"; + + config = mkIf cfg.enable { + + virtualisation.vswitch.enable = true; + + environment.systemPackages = [ mnexecWrapped ]; + }; +} diff --git a/nixos/modules/programs/nano.nix b/nixos/modules/programs/nano.nix index 27b6d446c75..6a4d46338e1 100644 --- a/nixos/modules/programs/nano.nix +++ b/nixos/modules/programs/nano.nix @@ -2,6 +2,7 @@ let cfg = config.programs.nano; + LF = "\n"; in { @@ -33,9 +34,9 @@ in ###### implementation - config = lib.mkIf (cfg.nanorc != "") { + config = lib.mkIf (cfg.nanorc != "" || cfg.syntaxHighlight) { environment.etc."nanorc".text = lib.concatStrings [ cfg.nanorc - (lib.optionalString cfg.syntaxHighlight ''include "${pkgs.nano}/share/nano/*.nanorc"'') ]; + (lib.optionalString cfg.syntaxHighlight ''${LF}include "${pkgs.nano}/share/nano/*.nanorc"'') ]; }; } diff --git a/nixos/modules/programs/nm-applet.nix b/nixos/modules/programs/nm-applet.nix new file mode 100644 index 00000000000..e42219e9638 --- /dev/null +++ b/nixos/modules/programs/nm-applet.nix @@ -0,0 +1,14 @@ +{ config, lib, pkgs, ... }: + +{ + options.programs.nm-applet.enable = lib.mkEnableOption "nm-applet"; + + config = lib.mkIf config.programs.nm-applet.enable { + systemd.user.services.nm-applet = { + description = "Network manager applet"; + wantedBy = [ "graphical-session.target" ]; + partOf = [ "graphical-session.target" ]; + serviceConfig.ExecStart = "${pkgs.networkmanagerapplet}/bin/nm-applet"; + }; + }; +} diff --git a/nixos/modules/programs/rootston.nix b/nixos/modules/programs/rootston.nix deleted file mode 100644 index 842d9e6cfb4..00000000000 --- a/nixos/modules/programs/rootston.nix +++ /dev/null @@ -1,103 +0,0 @@ -{ config, pkgs, lib, ... }: - -with lib; - -let - cfg = config.programs.rootston; - - rootstonWrapped = pkgs.writeScriptBin "rootston" '' - #! ${pkgs.runtimeShell} - if [[ "$#" -ge 1 ]]; then - exec ${pkgs.rootston}/bin/rootston "$@" - else - ${cfg.extraSessionCommands} - exec ${pkgs.rootston}/bin/rootston -C ${cfg.configFile} - fi - ''; -in { - options.programs.rootston = { - enable = mkEnableOption '' - rootston, the reference compositor for wlroots. The purpose of rootston - is to test and demonstrate the features of wlroots (if you want a real - Wayland compositor you should e.g. use Sway instead). You can manually - start the compositor by running "rootston" from a terminal''; - - extraSessionCommands = mkOption { - type = types.lines; - default = ""; - example = '' - # Define a keymap (US QWERTY is the default) - export XKB_DEFAULT_LAYOUT=de,us - export XKB_DEFAULT_VARIANT=nodeadkeys - export XKB_DEFAULT_OPTIONS=grp:alt_shift_toggle,caps:escape - ''; - description = '' - Shell commands executed just before rootston is started. - ''; - }; - - extraPackages = mkOption { - type = with types; listOf package; - default = with pkgs; [ - westonLite xwayland rofi - ]; - defaultText = literalExample '' - with pkgs; [ - westonLite xwayland rofi - ] - ''; - example = literalExample "[ ]"; - description = '' - Extra packages to be installed system wide. - ''; - }; - - config = mkOption { - type = types.str; - default = '' - [keyboard] - meta-key = Logo - - # Sway/i3 like Keybindings - # Maps key combinations with commands to execute - # Commands include: - # - "exit" to stop the compositor - # - "exec" to execute a shell command - # - "close" to close the current view - # - "next_window" to cycle through windows - [bindings] - Logo+Shift+e = exit - Logo+q = close - Logo+m = maximize - Alt+Tab = next_window - Logo+Return = exec weston-terminal - Logo+d = exec rofi -show run - ''; - description = '' - Default configuration for rootston (used when called without any - parameters). - ''; - }; - - configFile = mkOption { - type = types.path; - default = "/etc/rootston.ini"; - example = literalExample "${pkgs.rootston}/etc/rootston.ini"; - description = '' - Path to the default rootston configuration file (the "config" option - will have no effect if you change the path). - ''; - }; - }; - - config = mkIf cfg.enable { - environment.etc."rootston.ini".text = cfg.config; - environment.systemPackages = [ rootstonWrapped ] ++ cfg.extraPackages; - - hardware.opengl.enable = mkDefault true; - fonts.enableDefaultFonts = mkDefault true; - programs.dconf.enable = mkDefault true; - }; - - meta.maintainers = with lib.maintainers; [ primeos gnidorah ]; -} diff --git a/nixos/modules/programs/shell.nix b/nixos/modules/programs/shell.nix index 944a8bdf16f..9842e2bef64 100644 --- a/nixos/modules/programs/shell.nix +++ b/nixos/modules/programs/shell.nix @@ -8,18 +8,12 @@ with lib; config = { - environment.shellAliases = - { ls = "ls --color=tty"; - ll = "ls -l"; - l = "ls -alh"; - }; - environment.shellInit = '' # Set up the per-user profile. mkdir -m 0755 -p "$NIX_USER_PROFILE_DIR" if [ "$(stat --printf '%u' "$NIX_USER_PROFILE_DIR")" != "$(id -u)" ]; then - echo "WARNING: bad ownership on $NIX_USER_PROFILE_DIR, should be $(id -u)" >&2 + echo "WARNING: the per-user profile dir $NIX_USER_PROFILE_DIR should belong to user id $(id -u)" >&2 fi if [ -w "$HOME" ]; then @@ -41,7 +35,7 @@ with lib; NIX_USER_GCROOTS_DIR="/nix/var/nix/gcroots/per-user/$USER" mkdir -m 0755 -p "$NIX_USER_GCROOTS_DIR" if [ "$(stat --printf '%u' "$NIX_USER_GCROOTS_DIR")" != "$(id -u)" ]; then - echo "WARNING: bad ownership on $NIX_USER_GCROOTS_DIR, should be $(id -u)" >&2 + echo "WARNING: the per-user gcroots dir $NIX_USER_GCROOTS_DIR should belong to user id $(id -u)" >&2 fi # Set up a default Nix expression from which to install stuff. diff --git a/nixos/modules/programs/ssh.nix b/nixos/modules/programs/ssh.nix index cc398174e6c..4640c1d78d2 100644 --- a/nixos/modules/programs/ssh.nix +++ b/nixos/modules/programs/ssh.nix @@ -167,16 +167,16 @@ in The set of system-wide known SSH hosts. ''; example = literalExample '' - [ - { + { + myhost = { hostNames = [ "myhost" "myhost.mydomain.com" "10.10.1.4" ]; publicKeyFile = ./pubkeys/myhost_ssh_host_dsa_key.pub; - } - { + }; + myhost2 = { hostNames = [ "myhost2" ]; publicKeyFile = ./pubkeys/myhost2_ssh_host_dsa_key.pub; - } - ] + }; + } ''; }; diff --git a/nixos/modules/programs/sway-beta.nix b/nixos/modules/programs/sway-beta.nix new file mode 100644 index 00000000000..7fc5979a38a --- /dev/null +++ b/nixos/modules/programs/sway-beta.nix @@ -0,0 +1,90 @@ +{ config, pkgs, lib, ... }: + +with lib; + +let + cfg = config.programs.sway-beta; + swayPackage = cfg.package; + + swayWrapped = pkgs.writeShellScriptBin "sway" '' + set -o errexit + + if [ ! "$_SWAY_WRAPPER_ALREADY_EXECUTED" ]; then + export _SWAY_WRAPPER_ALREADY_EXECUTED=1 + ${cfg.extraSessionCommands} + fi + + if [ "$DBUS_SESSION_BUS_ADDRESS" ]; then + export DBUS_SESSION_BUS_ADDRESS + exec ${swayPackage}/bin/sway "$@" + else + exec ${pkgs.dbus}/bin/dbus-run-session ${swayPackage}/bin/sway "$@" + fi + ''; + swayJoined = pkgs.symlinkJoin { + name = "sway-joined"; + paths = [ swayWrapped swayPackage ]; + }; +in { + options.programs.sway-beta = { + enable = mkEnableOption '' + Sway, the i3-compatible tiling Wayland compositor. This module will be removed after the final release of Sway 1.0 + ''; + + package = mkOption { + type = types.package; + default = pkgs.sway-beta; + defaultText = "pkgs.sway-beta"; + description = '' + The package to be used for `sway`. + ''; + }; + + extraSessionCommands = mkOption { + type = types.lines; + default = ""; + example = '' + export SDL_VIDEODRIVER=wayland + # needs qt5.qtwayland in systemPackages + export QT_QPA_PLATFORM=wayland + export QT_WAYLAND_DISABLE_WINDOWDECORATION="1" + # Fix for some Java AWT applications (e.g. Android Studio), + # use this if they aren't displayed properly: + export _JAVA_AWT_WM_NONREPARENTING=1 + ''; + description = '' + Shell commands executed just before Sway is started. + ''; + }; + + extraPackages = mkOption { + type = with types; listOf package; + default = with pkgs; [ + xwayland rxvt_unicode dmenu + ]; + defaultText = literalExample '' + with pkgs; [ xwayland rxvt_unicode dmenu ]; + ''; + example = literalExample '' + with pkgs; [ + xwayland + i3status i3status-rust + termite rofi light + ] + ''; + description = '' + Extra packages to be installed system wide. + ''; + }; + }; + + config = mkIf cfg.enable { + environment.systemPackages = [ swayJoined ] ++ cfg.extraPackages; + security.pam.services.swaylock = {}; + hardware.opengl.enable = mkDefault true; + fonts.enableDefaultFonts = mkDefault true; + programs.dconf.enable = mkDefault true; + }; + + meta.maintainers = with lib.maintainers; [ gnidorah primeos colemickens ]; +} diff --git a/nixos/modules/programs/sway.nix b/nixos/modules/programs/sway.nix index 0eaaf6b85b9..b3847db8cd9 100644 --- a/nixos/modules/programs/sway.nix +++ b/nixos/modules/programs/sway.nix @@ -7,11 +7,18 @@ let swayPackage = pkgs.sway; swayWrapped = pkgs.writeShellScriptBin "sway" '' - if [[ "$#" -ge 1 ]]; then + set -o errexit + + if [ ! "$_SWAY_WRAPPER_ALREADY_EXECUTED" ]; then + export _SWAY_WRAPPER_ALREADY_EXECUTED=1 + ${cfg.extraSessionCommands} + fi + + if [ "$DBUS_SESSION_BUS_ADDRESS" ]; then + export DBUS_SESSION_BUS_ADDRESS exec sway-setcap "$@" else - ${cfg.extraSessionCommands} - exec ${pkgs.dbus.dbus-launch} --exit-with-session sway-setcap + exec ${pkgs.dbus}/bin/dbus-run-session sway-setcap "$@" fi ''; swayJoined = pkgs.symlinkJoin { diff --git a/nixos/modules/programs/thefuck.nix b/nixos/modules/programs/thefuck.nix index f4ae5293476..21ed6603c1b 100644 --- a/nixos/modules/programs/thefuck.nix +++ b/nixos/modules/programs/thefuck.nix @@ -29,8 +29,8 @@ in config = mkIf cfg.enable { environment.systemPackages = with pkgs; [ thefuck ]; - environment.shellInit = initScript; + programs.bash.interactiveShellInit = initScript; programs.zsh.interactiveShellInit = mkIf prg.zsh.enable initScript; programs.fish.interactiveShellInit = mkIf prg.fish.enable '' ${pkgs.thefuck}/bin/thefuck --alias | source diff --git a/nixos/modules/programs/wavemon.nix b/nixos/modules/programs/wavemon.nix new file mode 100644 index 00000000000..ac665fe4a02 --- /dev/null +++ b/nixos/modules/programs/wavemon.nix @@ -0,0 +1,28 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.programs.wavemon; +in { + options = { + programs.wavemon = { + enable = mkOption { + type = types.bool; + default = false; + description = '' + Whether to add wavemon to the global environment and configure a + setcap wrapper for it. + ''; + }; + }; + }; + + config = mkIf cfg.enable { + environment.systemPackages = with pkgs; [ wavemon ]; + security.wrappers.wavemon = { + source = "${pkgs.wavemon}/bin/wavemon"; + capabilities = "cap_net_admin+ep"; + }; + }; +} diff --git a/nixos/modules/programs/way-cooler.nix b/nixos/modules/programs/way-cooler.nix index 633e959be9f..f27bd42bd76 100644 --- a/nixos/modules/programs/way-cooler.nix +++ b/nixos/modules/programs/way-cooler.nix @@ -8,7 +8,7 @@ let wcWrapped = pkgs.writeShellScriptBin "way-cooler" '' ${cfg.extraSessionCommands} - exec ${pkgs.dbus.dbus-launch} --exit-with-session ${way-cooler}/bin/way-cooler + exec ${pkgs.dbus}/bin/dbus-run-session ${way-cooler}/bin/way-cooler ''; wcJoined = pkgs.symlinkJoin { name = "way-cooler-wrapped"; diff --git a/nixos/modules/programs/xss-lock.nix b/nixos/modules/programs/xss-lock.nix index 49d522c604f..c290df01b96 100644 --- a/nixos/modules/programs/xss-lock.nix +++ b/nixos/modules/programs/xss-lock.nix @@ -9,7 +9,8 @@ in options.programs.xss-lock = { enable = mkEnableOption "xss-lock"; lockerCommand = mkOption { - example = "xlock"; + default = "${pkgs.i3lock}/bin/i3lock"; + example = literalExample ''''${pkgs.i3lock-fancy}/bin/i3lock-fancy''; type = types.string; description = "Locker to be used with xsslock"; }; diff --git a/nixos/modules/programs/zsh/oh-my-zsh.xml b/nixos/modules/programs/zsh/oh-my-zsh.xml index 5cf690c1a56..b26980daf06 100644 --- a/nixos/modules/programs/zsh/oh-my-zsh.xml +++ b/nixos/modules/programs/zsh/oh-my-zsh.xml @@ -19,7 +19,7 @@ configuration format of oh-my-zsh. { - programs.ohMyZsh = { + programs.zsh.ohMyZsh = { enable = true; plugins = [ "git" "python" "man" ]; theme = "agnoster"; @@ -51,7 +51,7 @@ The module can do this as well: { - programs.ohMyZsh.custom = "~/path/to/custom/scripts"; + programs.zsh.ohMyZsh.custom = "~/path/to/custom/scripts"; } @@ -73,7 +73,7 @@ { pkgs, ... }: { - programs.ohMyZsh.customPkgs = with pkgs; [ + programs.zsh.ohMyZsh.customPkgs = with pkgs; [ pkgs.nix-zsh-completions # and even more... ]; @@ -87,7 +87,7 @@ Please keep in mind that this is not compatible with - programs.ohMyZsh.custom as it requires an immutable store + programs.zsh.ohMyZsh.custom as it requires an immutable store path while custom shall remain mutable! An evaluation failure will be thrown if both custom and customPkgs are set. diff --git a/nixos/modules/programs/zsh/zsh-autosuggestions.nix b/nixos/modules/programs/zsh/zsh-autosuggestions.nix index 416f4c9c675..ded17f38a61 100644 --- a/nixos/modules/programs/zsh/zsh-autosuggestions.nix +++ b/nixos/modules/programs/zsh/zsh-autosuggestions.nix @@ -18,13 +18,13 @@ in }; strategy = mkOption { - type = types.enum [ "default" "match_prev_cmd" ]; - default = "default"; + type = types.enum [ "history" "match_prev_cmd" ]; + default = "history"; description = '' Set ZSH_AUTOSUGGEST_STRATEGY to choose the strategy for generating suggestions. There are currently two to choose from: - * default: Chooses the most recent match. + * history: Chooses the most recent match. * match_prev_cmd: Chooses the most recent match whose preceding history item matches the most recently executed command (more info). Note that this strategy won't work as expected with ZSH options that don't preserve the history order such as @@ -51,7 +51,7 @@ in source ${pkgs.zsh-autosuggestions}/share/zsh-autosuggestions/zsh-autosuggestions.zsh export ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="${cfg.highlightStyle}" - export ZSH_AUTOSUGGEST_STRATEGY="${cfg.strategy}" + export ZSH_AUTOSUGGEST_STRATEGY=("${cfg.strategy}") ${concatStringsSep "\n" (mapAttrsToList (key: value: ''export ${key}="${value}"'') cfg.extraConfig)} ''; diff --git a/nixos/modules/programs/zsh/zsh.nix b/nixos/modules/programs/zsh/zsh.nix index 865d148c162..164d8db5859 100644 --- a/nixos/modules/programs/zsh/zsh.nix +++ b/nixos/modules/programs/zsh/zsh.nix @@ -11,7 +11,8 @@ let cfg = config.programs.zsh; zshAliases = concatStringsSep "\n" ( - mapAttrsFlatten (k: v: "alias ${k}=${escapeShellArg v}") cfg.shellAliases + mapAttrsFlatten (k: v: "alias ${k}=${escapeShellArg v}") + (filterAttrs (k: v: !isNull v) cfg.shellAliases) ); in @@ -34,13 +35,12 @@ in }; shellAliases = mkOption { - default = config.environment.shellAliases; + default = {}; description = '' - Set of aliases for zsh shell. Overrides the default value taken from - . + Set of aliases for zsh shell, which overrides . See for an option format description. ''; - type = types.attrs; # types.attrsOf types.stringOrPath; + type = with types; attrsOf (nullOr (either str path)); }; shellInit = mkOption { @@ -106,6 +106,8 @@ in config = mkIf cfg.enable { + programs.zsh.shellAliases = mapAttrs (name: mkDefault) cfge.shellAliases; + environment.etc."zshenv".text = '' # /etc/zshenv: DO NOT EDIT -- this file has been generated automatically. diff --git a/nixos/modules/rename.nix b/nixos/modules/rename.nix index eb74b9bcac1..dc0a175d5bb 100644 --- a/nixos/modules/rename.nix +++ b/nixos/modules/rename.nix @@ -28,7 +28,10 @@ with lib; (config: let enabled = getAttrFromPath [ "services" "printing" "gutenprint" ] config; in if enabled then [ pkgs.gutenprint ] else [ ])) - (mkRenamedOptionModule [ "services" "ddclient" "domain" ] [ "services" "ddclient" "domains" ]) + (mkChangedOptionModule [ "services" "ddclient" "domain" ] [ "services" "ddclient" "domains" ] + (config: + let value = getAttrFromPath [ "services" "ddclient" "domain" ] config; + in if value != "" then [ value ] else [])) (mkRemovedOptionModule [ "services" "ddclient" "homeDir" ] "") (mkRenamedOptionModule [ "services" "elasticsearch" "host" ] [ "services" "elasticsearch" "listenAddress" ]) (mkRenamedOptionModule [ "services" "graphite" "api" "host" ] [ "services" "graphite" "api" "listenAddress" ]) @@ -279,6 +282,10 @@ with lib; (mkRenamedOptionModule [ "programs" "man" "enable" ] [ "documentation" "man" "enable" ]) (mkRenamedOptionModule [ "services" "nixosManual" "enable" ] [ "documentation" "nixos" "enable" ]) + # ckb + (mkRenamedOptionModule [ "hardware" "ckb" "enable" ] [ "hardware" "ckb-next" "enable" ]) + (mkRenamedOptionModule [ "hardware" "ckb" "package" ] [ "hardware" "ckb-next" "package" ]) + ] ++ (flip map [ "blackboxExporter" "collectdExporter" "fritzboxExporter" "jsonExporter" "minioExporter" "nginxExporter" "nodeExporter" "snmpExporter" "unifiExporter" "varnishExporter" ] diff --git a/nixos/modules/security/apparmor-suid.nix b/nixos/modules/security/apparmor-suid.nix index dfbf5d859ba..498c2f25d1c 100644 --- a/nixos/modules/security/apparmor-suid.nix +++ b/nixos/modules/security/apparmor-suid.nix @@ -28,7 +28,7 @@ with lib; capability setuid, network inet raw, - ${pkgs.glibc.out}/lib/*.so mr, + ${pkgs.stdenv.cc.libc.out}/lib/*.so mr, ${pkgs.libcap.lib}/lib/libcap.so* mr, ${pkgs.attr.out}/lib/libattr.so* mr, diff --git a/nixos/modules/security/dhparams.nix b/nixos/modules/security/dhparams.nix index e2b84c3e3b3..62a499ea624 100644 --- a/nixos/modules/security/dhparams.nix +++ b/nixos/modules/security/dhparams.nix @@ -170,4 +170,6 @@ in { ''; }) cfg.params; }; + + meta.maintainers = with lib.maintainers; [ ekleog ]; } diff --git a/nixos/modules/security/google_oslogin.nix b/nixos/modules/security/google_oslogin.nix new file mode 100644 index 00000000000..246419b681a --- /dev/null +++ b/nixos/modules/security/google_oslogin.nix @@ -0,0 +1,68 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + + cfg = config.security.googleOsLogin; + package = pkgs.google-compute-engine-oslogin; + +in + +{ + + options = { + + security.googleOsLogin.enable = mkOption { + type = types.bool; + default = false; + description = '' + Whether to enable Google OS Login + + The OS Login package enables the following components: + AuthorizedKeysCommand to query valid SSH keys from the user's OS Login + profile during ssh authentication phase. + NSS Module to provide user and group information + PAM Module for the sshd service, providing authorization and + authentication support, allowing the system to use data stored in + Google Cloud IAM permissions to control both, the ability to log into + an instance, and to perform operations as root (sudo). + ''; + }; + + }; + + config = mkIf cfg.enable { + security.pam.services.sshd = { + makeHomeDir = true; + googleOsLoginAccountVerification = true; + # disabled for now: googleOsLoginAuthentication = true; + }; + + security.sudo.extraConfig = '' + #includedir /run/google-sudoers.d + ''; + systemd.tmpfiles.rules = [ + "d /run/google-sudoers.d 750 root root -" + "d /var/google-users.d 750 root root -" + ]; + + # enable the nss module, so user lookups etc. work + system.nssModules = [ package ]; + + # Ugly: sshd refuses to start if a store path is given because /nix/store is group-writable. + # So indirect by a symlink. + environment.etc."ssh/authorized_keys_command_google_oslogin" = { + mode = "0755"; + text = '' + #!/bin/sh + exec ${package}/bin/google_authorized_keys "$@" + ''; + }; + services.openssh.extraConfig = '' + AuthorizedKeysCommand /etc/ssh/authorized_keys_command_google_oslogin %u + AuthorizedKeysCommandUser nobody + ''; + }; + +} diff --git a/nixos/modules/security/lock-kernel-modules.nix b/nixos/modules/security/lock-kernel-modules.nix index c81521ed9b0..fc9e7939d81 100644 --- a/nixos/modules/security/lock-kernel-modules.nix +++ b/nixos/modules/security/lock-kernel-modules.nix @@ -3,6 +3,10 @@ with lib; { + meta = { + maintainers = [ maintainers.joachifm ]; + }; + options = { security.lockKernelModules = mkOption { type = types.bool; diff --git a/nixos/modules/security/misc.nix b/nixos/modules/security/misc.nix new file mode 100644 index 00000000000..4506a67487d --- /dev/null +++ b/nixos/modules/security/misc.nix @@ -0,0 +1,125 @@ +{ config, lib, ... }: + +with lib; + +{ + meta = { + maintainers = [ maintainers.joachifm ]; + }; + + options = { + security.allowUserNamespaces = mkOption { + type = types.bool; + default = true; + description = '' + Whether to allow creation of user namespaces. A recurring problem + with user namespaces is the presence of code paths where the kernel's + permission checking logic fails to account for namespacing, instead + permitting a namespaced process to act outside the namespace with the + same privileges as it would have inside it. This is particularly + damaging in the common case of running as root within the namespace. + When user namespace creation is disallowed, attempting to create + a user namespace fails with "no space left on device" (ENOSPC). + ''; + }; + + security.protectKernelImage = mkOption { + type = types.bool; + default = false; + description = '' + Whether to prevent replacing the running kernel image. + ''; + }; + + security.allowSimultaneousMultithreading = mkOption { + type = types.bool; + default = true; + description = '' + Whether to allow SMT/hyperthreading. Disabling SMT means that only + physical CPU cores will be usable at runtime, potentially at + significant performance cost. + + + + The primary motivation for disabling SMT is to mitigate the risk of + leaking data between threads running on the same CPU core (due to + e.g., shared caches). This attack vector is unproven. + + + + Disabling SMT is a supplement to the L1 data cache flushing mitigation + (see ) + versus malicious VM guests (SMT could "bring back" previously flushed + data). + + + ''; + }; + + security.virtualization.flushL1DataCache = mkOption { + type = types.nullOr (types.enum [ "never" "cond" "always" ]); + default = null; + description = '' + Whether the hypervisor should flush the L1 data cache before + entering guests. + See also . + + + + + + null + uses the kernel default + + + "never" + disables L1 data cache flushing entirely. + May be appropriate if all guests are trusted. + + + "cond" + flushes L1 data cache only for pre-determined + code paths. May leak information about the host address space + layout. + + + "always" + flushes L1 data cache every time the hypervisor + enters the guest. May incur significant performance cost. + + + + ''; + }; + }; + + config = mkMerge [ + (mkIf (!config.security.allowUserNamespaces) { + # Setting the number of allowed user namespaces to 0 effectively disables + # the feature at runtime. Note that root may raise the limit again + # at any time. + boot.kernel.sysctl."user.max_user_namespaces" = 0; + + assertions = [ + { assertion = config.nix.useSandbox -> config.security.allowUserNamespaces; + message = "`nix.useSandbox = true` conflicts with `!security.allowUserNamespaces`."; + } + ]; + }) + + (mkIf config.security.protectKernelImage { + # Disable hibernation (allows replacing the running kernel) + boot.kernelParams = [ "nohibernate" ]; + # Prevent replacing the running kernel image w/o reboot + boot.kernel.sysctl."kernel.kexec_load_disabled" = mkDefault true; + }) + + (mkIf (!config.security.allowSimultaneousMultithreading) { + boot.kernelParams = [ "nosmt" ]; + }) + + (mkIf (config.security.virtualization.flushL1DataCache != null) { + boot.kernelParams = [ "kvm-intel.vmentry_l1d_flush=${config.security.virtualization.flushL1DataCache}" ]; + }) + ]; +} diff --git a/nixos/modules/security/pam.nix b/nixos/modules/security/pam.nix index 926c6d77d3b..b1a0eff98c2 100644 --- a/nixos/modules/security/pam.nix +++ b/nixos/modules/security/pam.nix @@ -77,6 +77,30 @@ let ''; }; + googleOsLoginAccountVerification = mkOption { + default = false; + type = types.bool; + description = '' + If set, will use the Google OS Login PAM modules + (pam_oslogin_login, + pam_oslogin_admin) to verify possible OS Login + users and set sudoers configuration accordingly. + This only makes sense to enable for the sshd PAM + service. + ''; + }; + + googleOsLoginAuthentication = mkOption { + default = false; + type = types.bool; + description = '' + If set, will use the pam_oslogin_login's user + authentication methods to authenticate users using 2FA. + This only makes sense to enable for the sshd PAM + service. + ''; + }; + fprintAuth = mkOption { default = config.services.fprintd.enable; type = types.bool; @@ -269,7 +293,7 @@ let text = mkDefault ('' # Account management. - account ${if cfg.sssdStrictAccess then "required" else "sufficient"} pam_unix.so + account required pam_unix.so ${optionalString use_ldap "account sufficient ${pam_ldap}/lib/security/pam_ldap.so"} ${optionalString (config.services.sssd.enable && cfg.sssdStrictAccess==false) @@ -278,8 +302,14 @@ let "account [default=bad success=ok user_unknown=ignore] ${pkgs.sssd}/lib/security/pam_sss.so"} ${optionalString config.krb5.enable "account sufficient ${pam_krb5}/lib/security/pam_krb5.so"} + ${optionalString cfg.googleOsLoginAccountVerification '' + account [success=ok ignore=ignore default=die] ${pkgs.google-compute-engine-oslogin}/lib/pam_oslogin_login.so + account [success=ok default=ignore] ${pkgs.google-compute-engine-oslogin}/lib/pam_oslogin_admin.so + ''} # Authentication management. + ${optionalString cfg.googleOsLoginAuthentication + "auth [success=done perm_denied=bad default=ignore] ${pkgs.google-compute-engine-oslogin}/lib/pam_oslogin_login.so"} ${optionalString cfg.rootOK "auth sufficient pam_rootok.so"} ${optionalString cfg.requireWheel diff --git a/nixos/modules/security/rngd.nix b/nixos/modules/security/rngd.nix index 3a1ffc55e5f..a54ef2e6fca 100644 --- a/nixos/modules/security/rngd.nix +++ b/nixos/modules/security/rngd.nix @@ -20,7 +20,6 @@ with lib; KERNEL=="random", TAG+="systemd" SUBSYSTEM=="cpu", ENV{MODALIAS}=="cpu:type:x86,*feature:*009E*", TAG+="systemd", ENV{SYSTEMD_WANTS}+="rngd.service" KERNEL=="hw_random", TAG+="systemd", ENV{SYSTEMD_WANTS}+="rngd.service" - ${if config.services.tcsd.enable then "" else ''KERNEL=="tpm0", TAG+="systemd", ENV{SYSTEMD_WANTS}+="rngd.service"''} ''; systemd.services.rngd = { @@ -30,8 +29,7 @@ with lib; description = "Hardware RNG Entropy Gatherer Daemon"; - serviceConfig.ExecStart = "${pkgs.rng_tools}/sbin/rngd -f -v" + - (if config.services.tcsd.enable then " --no-tpm=1" else ""); + serviceConfig.ExecStart = "${pkgs.rng-tools}/sbin/rngd -f"; }; }; } diff --git a/nixos/modules/security/wrappers/default.nix b/nixos/modules/security/wrappers/default.nix index 77e4b2a616d..dcb9c8d4ed5 100644 --- a/nixos/modules/security/wrappers/default.nix +++ b/nixos/modules/security/wrappers/default.nix @@ -180,35 +180,6 @@ in # programs to be wrapped. WRAPPER_PATH=${config.system.path}/bin:${config.system.path}/sbin - # Remove the old /var/setuid-wrappers path from the system... - # - # TODO: this is only necessary for upgrades 16.09 => 17.x; - # this conditional removal block needs to be removed after - # the release. - if [ -d /var/setuid-wrappers ]; then - rm -rf /var/setuid-wrappers - ln -s /run/wrappers/bin /var/setuid-wrappers - fi - - # Remove the old /run/setuid-wrappers-dir path from the - # system as well... - # - # TODO: this is only necessary for upgrades 16.09 => 17.x; - # this conditional removal block needs to be removed after - # the release. - if [ -d /run/setuid-wrapper-dirs ]; then - rm -rf /run/setuid-wrapper-dirs - ln -s /run/wrappers/bin /run/setuid-wrapper-dirs - fi - - # TODO: this is only necessary for upgrades 16.09 => 17.x; - # this conditional removal block needs to be removed after - # the release. - if readlink -f /run/booted-system | grep nixos-17 > /dev/null; then - rm -rf /run/setuid-wrapper-dirs - rm -rf /var/setuid-wrappers - fi - # We want to place the tmpdirs for the wrappers to the parent dir. wrapperDir=$(mktemp --directory --tmpdir="${parentWrapperDir}" wrappers.XXXXXXXXXX) chmod a+rx $wrapperDir diff --git a/nixos/modules/services/admin/salt/master.nix b/nixos/modules/services/admin/salt/master.nix index 165580b9783..c6b1b0cc0bd 100644 --- a/nixos/modules/services/admin/salt/master.nix +++ b/nixos/modules/services/admin/salt/master.nix @@ -53,6 +53,9 @@ in Type = "notify"; NotifyAccess = "all"; }; + restartTriggers = [ + config.environment.etc."salt/master".source + ]; }; }; diff --git a/nixos/modules/services/admin/salt/minion.nix b/nixos/modules/services/admin/salt/minion.nix index 9ecefb32cfa..c8fa9461a20 100644 --- a/nixos/modules/services/admin/salt/minion.nix +++ b/nixos/modules/services/admin/salt/minion.nix @@ -15,7 +15,6 @@ let # Default is in /etc/salt/pki/minion pki_dir = "/var/lib/salt/pki/minion"; } cfg.configuration; - configDir = pkgs.writeTextDir "minion" (builtins.toJSON fullConfig); in @@ -28,15 +27,24 @@ in default = {}; description = '' Salt minion configuration as Nix attribute set. - See - for details. + See + for details. ''; }; }; }; config = mkIf cfg.enable { - environment.systemPackages = with pkgs; [ salt ]; + environment = { + # Set this up in /etc/salt/minion so `salt-call`, etc. work. + # The alternatives are + # - passing --config-dir to all salt commands, not just the minion unit, + # - setting aglobal environment variable. + etc."salt/minion".source = pkgs.writeText "minion" ( + builtins.toJSON fullConfig + ); + systemPackages = with pkgs; [ salt ]; + }; systemd.services.salt-minion = { description = "Salt Minion"; wantedBy = [ "multi-user.target" ]; @@ -45,11 +53,14 @@ in utillinux ]; serviceConfig = { - ExecStart = "${pkgs.salt}/bin/salt-minion --config-dir=${configDir}"; + ExecStart = "${pkgs.salt}/bin/salt-minion"; LimitNOFILE = 8192; Type = "notify"; NotifyAccess = "all"; }; + restartTriggers = [ + config.environment.etc."salt/minion".source + ]; }; }; } diff --git a/nixos/modules/services/amqp/rabbitmq.nix b/nixos/modules/services/amqp/rabbitmq.nix index c6878dd67db..7373be2a9b0 100644 --- a/nixos/modules/services/amqp/rabbitmq.nix +++ b/nixos/modules/services/amqp/rabbitmq.nix @@ -87,9 +87,19 @@ in { } ''; description = '' - New style config options. + Configuration options in RabbitMQ's new config file format, + which is a simple key-value format that can not express nested + data structures. This is known as the rabbitmq.conf file, + although outside NixOS that filename may have Erlang syntax, particularly + prior to RabbitMQ 3.7.0. - See http://www.rabbitmq.com/configure.html + If you do need to express nested data structures, you can use + config option. Configuration from config + 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 ''; }; @@ -97,10 +107,17 @@ in { default = ""; type = types.str; description = '' - Verbatim advanced configuration file contents. - Prefered way is to use configItems. + Verbatim advanced configuration file contents using the Erlang syntax. + This is also known as the advanced.config file or the old config format. - See http://www.rabbitmq.com/configure.html + configItems is preferred whenever possible. However, nested + data structures can only be expressed properly using the config option. + + 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 ''; }; diff --git a/nixos/modules/services/backup/bacula.nix b/nixos/modules/services/backup/bacula.nix index a0565ca2620..24cad612826 100644 --- a/nixos/modules/services/backup/bacula.nix +++ b/nixos/modules/services/backup/bacula.nix @@ -346,8 +346,12 @@ in { description = "Bacula File Daemon"; wantedBy = [ "multi-user.target" ]; path = [ pkgs.bacula ]; - serviceConfig.ExecStart = "${pkgs.bacula}/sbin/bacula-fd -f -u root -g bacula -c ${fd_conf}"; - serviceConfig.ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID"; + serviceConfig = { + ExecStart = "${pkgs.bacula}/sbin/bacula-fd -f -u root -g bacula -c ${fd_conf}"; + ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID"; + LogsDirectory = "bacula"; + StateDirectory = "bacula"; + }; }; systemd.services.bacula-sd = mkIf sd_cfg.enable { @@ -355,8 +359,12 @@ in { description = "Bacula Storage Daemon"; wantedBy = [ "multi-user.target" ]; path = [ pkgs.bacula ]; - serviceConfig.ExecStart = "${pkgs.bacula}/sbin/bacula-sd -f -u bacula -g bacula -c ${sd_conf}"; - serviceConfig.ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID"; + serviceConfig = { + ExecStart = "${pkgs.bacula}/sbin/bacula-sd -f -u bacula -g bacula -c ${sd_conf}"; + ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID"; + LogsDirectory = "bacula"; + StateDirectory = "bacula"; + }; }; services.postgresql.enable = dir_cfg.enable == true; @@ -366,8 +374,12 @@ in { description = "Bacula Director Daemon"; wantedBy = [ "multi-user.target" ]; path = [ pkgs.bacula ]; - serviceConfig.ExecStart = "${pkgs.bacula}/sbin/bacula-dir -f -u bacula -g bacula -c ${dir_conf}"; - serviceConfig.ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID"; + serviceConfig = { + ExecStart = "${pkgs.bacula}/sbin/bacula-dir -f -u bacula -g bacula -c ${dir_conf}"; + ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID"; + LogsDirectory = "bacula"; + StateDirectory = "bacula"; + }; preStart = '' if ! test -e "${libDir}/db-created"; then ${pkgs.postgresql}/bin/createuser --no-superuser --no-createdb --no-createrole bacula diff --git a/nixos/modules/services/backup/borgbackup.nix b/nixos/modules/services/backup/borgbackup.nix index 415a70ea5ad..2ad116a7872 100644 --- a/nixos/modules/services/backup/borgbackup.nix +++ b/nixos/modules/services/backup/borgbackup.nix @@ -191,10 +191,9 @@ in { options = { paths = mkOption { - type = with types; either path (nonEmptyListOf path); + type = with types; coercedTo str lib.singleton (listOf str); description = "Path(s) to back up."; example = "/home/user"; - apply = x: if isList x then x else [ x ]; }; repo = mkOption { diff --git a/nixos/modules/services/backup/postgresql-backup.nix b/nixos/modules/services/backup/postgresql-backup.nix index 2ec78ce6f2c..11efa47ec5b 100644 --- a/nixos/modules/services/backup/postgresql-backup.nix +++ b/nixos/modules/services/backup/postgresql-backup.nix @@ -6,11 +6,11 @@ let cfg = config.services.postgresqlBackup; - postgresqlBackupService = db : + postgresqlBackupService = db: dumpCmd: { enable = true; - description = "Backup of database ${db}"; + description = "Backup of ${db} database(s)"; requires = [ "postgresql.service" ]; @@ -20,11 +20,13 @@ let ''; script = '' + umask 0077 # ensure backup is only readable by postgres user + if [ -e ${cfg.location}/${db}.sql.gz ]; then ${pkgs.coreutils}/bin/mv ${cfg.location}/${db}.sql.gz ${cfg.location}/${db}.prev.sql.gz fi - ${config.services.postgresql.package}/bin/pg_dump ${cfg.pgdumpOptions} ${db} | \ + ${dumpCmd} | \ ${pkgs.gzip}/bin/gzip -c > ${cfg.location}/${db}.sql.gz ''; @@ -40,9 +42,7 @@ let in { options = { - services.postgresqlBackup = { - enable = mkOption { default = false; description = '' @@ -59,6 +59,19 @@ in { ''; }; + backupAll = mkOption { + default = cfg.databases == []; + defaultText = "services.postgresqlBackup.databases == []"; + type = lib.types.bool; + description = '' + Backup all databases using pg_dumpall. + This option is mutual exclusive to + services.postgresqlBackup.databases. + The resulting backup dump will have the name all.sql.gz. + This option is the default if no databases are specified. + ''; + }; + databases = mkOption { default = []; description = '' @@ -77,18 +90,36 @@ in { type = types.string; default = "-Cbo"; description = '' - Command line options for pg_dump. + Command line options for pg_dump. This options is not used + if config.services.postgresqlBackup.backupAll is enabled. + Note that config.services.postgresqlBackup.backupAll is also active, + when no databases where specified. ''; }; }; }; - config = mkIf config.services.postgresqlBackup.enable { - - systemd.services = listToAttrs (map (db : { + config = mkMerge [ + { + assertions = [{ + assertion = cfg.backupAll -> cfg.databases == []; + message = "config.services.postgresqlBackup.backupAll cannot be used together with config.services.postgresqlBackup.databases"; + }]; + } + (mkIf (cfg.enable && cfg.backupAll) { + systemd.services.postgresqlBackup = + postgresqlBackupService "all" "${config.services.postgresql.package}/bin/pg_dumpall"; + }) + (mkIf (cfg.enable && !cfg.backupAll) { + systemd.services = listToAttrs (map (db: + let + cmd = "${config.services.postgresql.package}/bin/pg_dump ${cfg.pgdumpOptions} ${db}"; + in { name = "postgresqlBackup-${db}"; - value = postgresqlBackupService db; } ) cfg.databases); - }; + value = postgresqlBackupService db cmd; + }) cfg.databases); + }) + ]; } diff --git a/nixos/modules/services/backup/restic.nix b/nixos/modules/services/backup/restic.nix index 6ece5a9b5ad..7e8e91e4b9c 100644 --- a/nixos/modules/services/backup/restic.nix +++ b/nixos/modules/services/backup/restic.nix @@ -1,6 +1,11 @@ { config, lib, pkgs, ... }: with lib; + +let + # Type for a valid systemd unit option. Needed for correctly passing "timerConfig" to "systemd.timers" + unitOption = (import ../../system/boot/systemd-unit-options.nix { inherit config lib; }).unitOption; +in { options.services.restic.backups = mkOption { description = '' @@ -47,7 +52,7 @@ with lib; }; timerConfig = mkOption { - type = types.attrsOf types.str; + type = types.attrsOf unitOption; default = { OnCalendar = "daily"; }; diff --git a/nixos/modules/services/cluster/kubernetes/default.nix b/nixos/modules/services/cluster/kubernetes/default.nix index e63d91eb9ac..6f3c45b29bf 100644 --- a/nixos/modules/services/cluster/kubernetes/default.nix +++ b/nixos/modules/services/cluster/kubernetes/default.nix @@ -784,7 +784,7 @@ in { clusterCidr = mkOption { description = "Kubernetes controller manager and proxy CIDR Range for Pods in cluster."; default = "10.1.0.0/16"; - type = types.str; + type = types.nullOr types.str; }; flannel.enable = mkOption { @@ -1018,9 +1018,9 @@ in { ${if (cfg.controllerManager.rootCaFile!=null) then "--root-ca-file=${cfg.controllerManager.rootCaFile}" else "--root-ca-file=/var/run/kubernetes/apiserver.crt"} \ - ${optionalString (cfg.clusterCidr!=null) - "--cluster-cidr=${cfg.clusterCidr}"} \ - --allocate-node-cidrs=true \ + ${if (cfg.clusterCidr!=null) + then "--cluster-cidr=${cfg.clusterCidr} --allocate-node-cidrs=true" + else "--allocate-node-cidrs=false"} \ ${optionalString (cfg.controllerManager.featureGates != []) "--feature-gates=${concatMapStringsSep "," (feature: "${feature}=true") cfg.controllerManager.featureGates}"} \ ${optionalString cfg.verbose "--v=6"} \ diff --git a/nixos/modules/services/cluster/kubernetes/dns.nix b/nixos/modules/services/cluster/kubernetes/dns.nix index 43bbb50a48d..5a3e281ea69 100644 --- a/nixos/modules/services/cluster/kubernetes/dns.nix +++ b/nixos/modules/services/cluster/kubernetes/dns.nix @@ -3,8 +3,13 @@ with lib; let - version = "1.14.10"; + version = "1.2.5"; cfg = config.services.kubernetes.addons.dns; + ports = { + dns = 10053; + health = 10054; + metrics = 10055; + }; in { options.services.kubernetes.addons.dns = { enable = mkEnableOption "kubernetes dns addon"; @@ -27,49 +32,130 @@ in { type = types.str; }; - kube-dns = mkOption { - description = "Docker image to seed for the kube-dns main container."; - type = types.attrs; - default = { - imageName = "k8s.gcr.io/k8s-dns-kube-dns-amd64"; - imageDigest = "sha256:b99fc3eee2a9f052f7eb4cc00f15eb12fc405fa41019baa2d6b79847ae7284a8"; - finalImageTag = version; - sha256 = "0x583znk9smqn0fix7ld8sm5jgaxhqhx3fq97b1wkqm7iwhvl3pj"; - }; + replicas = mkOption { + description = "Number of DNS pod replicas to deploy in the cluster."; + default = 2; + type = types.int; }; - dnsmasq-nanny = mkOption { - description = "Docker image to seed for the kube-dns dnsmasq container."; + coredns = mkOption { + description = "Docker image to seed for the CoreDNS container."; type = types.attrs; default = { - imageName = "k8s.gcr.io/k8s-dns-dnsmasq-nanny-amd64"; - imageDigest = "sha256:bbb2a290a568125b3b996028958eb773f33b5b87a6b37bf38a28f8b62dddb3c8"; + imageName = "coredns/coredns"; + imageDigest = "sha256:33c8da20b887ae12433ec5c40bfddefbbfa233d5ce11fb067122e68af30291d6"; finalImageTag = version; - sha256 = "1fihml7s2mfwgac51cbqpylkwbivc8nyhgi4vb820s83zvl8a6y1"; - }; - }; - - sidecar = mkOption { - description = "Docker image to seed for the kube-dns sidecar container."; - type = types.attrs; - default = { - imageName = "k8s.gcr.io/k8s-dns-sidecar-amd64"; - imageDigest = "sha256:4f1ab957f87b94a5ec1edc26fae50da2175461f00afecf68940c4aa079bd08a4"; - finalImageTag = version; - sha256 = "08l1bv5jgrhvjzpqpbinrkgvv52snc4fzyd8ya9v18ns2klyz7m0"; + sha256 = "13q19rgwapv27xcs664dw502254yw4zw63insf6g2danidv2mg6i"; }; }; }; config = mkIf cfg.enable { - services.kubernetes.kubelet.seedDockerImages = with pkgs.dockerTools; [ - (pullImage cfg.kube-dns) - (pullImage cfg.dnsmasq-nanny) - (pullImage cfg.sidecar) - ]; + services.kubernetes.kubelet.seedDockerImages = + singleton (pkgs.dockerTools.pullImage cfg.coredns); services.kubernetes.addonManager.addons = { - kubedns-deployment = { + coredns-sa = { + apiVersion = "v1"; + kind = "ServiceAccount"; + metadata = { + labels = { + "addonmanager.kubernetes.io/mode" = "Reconcile"; + "k8s-app" = "kube-dns"; + "kubernetes.io/cluster-service" = "true"; + }; + name = "coredns"; + namespace = "kube-system"; + }; + }; + + coredns-cr = { + apiVersion = "rbac.authorization.k8s.io/v1beta1"; + kind = "ClusterRole"; + metadata = { + labels = { + "addonmanager.kubernetes.io/mode" = "Reconcile"; + "k8s-app" = "kube-dns"; + "kubernetes.io/cluster-service" = "true"; + "kubernetes.io/bootstrapping" = "rbac-defaults"; + }; + name = "system:coredns"; + }; + rules = [ + { + apiGroups = [ "" ]; + resources = [ "endpoints" "services" "pods" "namespaces" ]; + verbs = [ "list" "watch" ]; + } + { + apiGroups = [ "" ]; + resources = [ "nodes" ]; + verbs = [ "get" ]; + } + ]; + }; + + coredns-crb = { + apiVersion = "rbac.authorization.k8s.io/v1beta1"; + kind = "ClusterRoleBinding"; + metadata = { + annotations = { + "rbac.authorization.kubernetes.io/autoupdate" = "true"; + }; + labels = { + "addonmanager.kubernetes.io/mode" = "Reconcile"; + "k8s-app" = "kube-dns"; + "kubernetes.io/cluster-service" = "true"; + "kubernetes.io/bootstrapping" = "rbac-defaults"; + }; + name = "system:coredns"; + }; + roleRef = { + apiGroup = "rbac.authorization.k8s.io"; + kind = "ClusterRole"; + name = "system:coredns"; + }; + subjects = [ + { + kind = "ServiceAccount"; + name = "coredns"; + namespace = "kube-system"; + } + ]; + }; + + coredns-cm = { + apiVersion = "v1"; + kind = "ConfigMap"; + metadata = { + labels = { + "addonmanager.kubernetes.io/mode" = "Reconcile"; + "k8s-app" = "kube-dns"; + "kubernetes.io/cluster-service" = "true"; + }; + name = "coredns"; + namespace = "kube-system"; + }; + data = { + Corefile = ".:${toString ports.dns} { + errors + health :${toString ports.health} + kubernetes ${cfg.clusterDomain} in-addr.arpa ip6.arpa { + pods insecure + upstream + fallthrough in-addr.arpa ip6.arpa + } + prometheus :${toString ports.metrics} + proxy . /etc/resolv.conf + cache 30 + loop + reload + loadbalance + }"; + }; + }; + + coredns-deploy = { apiVersion = "extensions/v1beta1"; kind = "Deployment"; metadata = { @@ -77,182 +163,96 @@ in { "addonmanager.kubernetes.io/mode" = "Reconcile"; "k8s-app" = "kube-dns"; "kubernetes.io/cluster-service" = "true"; + "kubernetes.io/name" = "CoreDNS"; }; - name = "kube-dns"; + name = "coredns"; namespace = "kube-system"; }; spec = { - selector.matchLabels."k8s-app" = "kube-dns"; + replicas = cfg.replicas; + selector = { + matchLabels = { k8s-app = "kube-dns"; }; + }; strategy = { - rollingUpdate = { - maxSurge = "10%"; - maxUnavailable = 0; - }; + rollingUpdate = { maxUnavailable = 1; }; + type = "RollingUpdate"; }; template = { metadata = { - annotations."scheduler.alpha.kubernetes.io/critical-pod" = ""; - labels.k8s-app = "kube-dns"; + labels = { + k8s-app = "kube-dns"; + }; }; spec = { - priorityClassName = "system-cluster-critical"; containers = [ { - name = "kubedns"; - image = with cfg.kube-dns; "${imageName}:${finalImageTag}"; + args = [ "-conf" "/etc/coredns/Corefile" ]; + image = with cfg.coredns; "${imageName}:${finalImageTag}"; + imagePullPolicy = "Never"; + livenessProbe = { + failureThreshold = 5; + httpGet = { + path = "/health"; + port = ports.health; + scheme = "HTTP"; + }; + initialDelaySeconds = 60; + successThreshold = 1; + timeoutSeconds = 5; + }; + name = "coredns"; + ports = [ + { + containerPort = ports.dns; + name = "dns"; + protocol = "UDP"; + } + { + containerPort = ports.dns; + name = "dns-tcp"; + protocol = "TCP"; + } + { + containerPort = ports.metrics; + name = "metrics"; + protocol = "TCP"; + } + ]; resources = { - limits.memory = "170Mi"; + limits = { + memory = "170Mi"; + }; requests = { cpu = "100m"; memory = "70Mi"; }; }; - livenessProbe = { - failureThreshold = 5; - httpGet = { - path = "/healthcheck/kubedns"; - port = 10054; - scheme = "HTTP"; - }; - initialDelaySeconds = 60; - successThreshold = 1; - timeoutSeconds = 5; - }; - readinessProbe = { - httpGet = { - path = "/readiness"; - port = 8081; - scheme = "HTTP"; - }; - initialDelaySeconds = 3; - timeoutSeconds = 5; - }; - args = [ - "--domain=${cfg.clusterDomain}" - "--dns-port=10053" - "--config-dir=/kube-dns-config" - "--v=2" - ]; - env = [ - { - name = "PROMETHEUS_PORT"; - value = "10055"; - } - ]; - ports = [ - { - containerPort = 10053; - name = "dns-local"; - protocol = "UDP"; - } - { - containerPort = 10053; - name = "dns-tcp-local"; - protocol = "TCP"; - } - { - containerPort = 10055; - name = "metrics"; - protocol = "TCP"; - } - ]; - volumeMounts = [ - { - mountPath = "/kube-dns-config"; - name = "kube-dns-config"; - } - ]; - } - { - name = "dnsmasq"; - image = with cfg.dnsmasq-nanny; "${imageName}:${finalImageTag}"; - livenessProbe = { - httpGet = { - path = "/healthcheck/dnsmasq"; - port = 10054; - scheme = "HTTP"; - }; - initialDelaySeconds = 60; - timeoutSeconds = 5; - successThreshold = 1; - failureThreshold = 5; - }; - args = [ - "-v=2" - "-logtostderr" - "-configDir=/etc/k8s/dns/dnsmasq-nanny" - "-restartDnsmasq=true" - "--" - "-k" - "--cache-size=1000" - "--log-facility=-" - "--server=/${cfg.clusterDomain}/127.0.0.1#10053" - "--server=/in-addr.arpa/127.0.0.1#10053" - "--server=/ip6.arpa/127.0.0.1#10053" - ]; - ports = [ - { - containerPort = 53; - name = "dns"; - protocol = "UDP"; - } - { - containerPort = 53; - name = "dns-tcp"; - protocol = "TCP"; - } - ]; - resources = { - requests = { - cpu = "150m"; - memory = "20Mi"; + securityContext = { + allowPrivilegeEscalation = false; + capabilities = { + drop = [ "all" ]; }; + readOnlyRootFilesystem = true; }; volumeMounts = [ { - mountPath = "/etc/k8s/dns/dnsmasq-nanny"; - name = "kube-dns-config"; + mountPath = "/etc/coredns"; + name = "config-volume"; + readOnly = true; } ]; } - { - name = "sidecar"; - image = with cfg.sidecar; "${imageName}:${finalImageTag}"; - livenessProbe = { - httpGet = { - path = "/metrics"; - port = 10054; - scheme = "HTTP"; - }; - initialDelaySeconds = 60; - timeoutSeconds = 5; - successThreshold = 1; - failureThreshold = 5; - }; - args = [ - "--v=2" - "--logtostderr" - "--probe=kubedns,127.0.0.1:10053,kubernetes.default.svc.${cfg.clusterDomain},5,A" - "--probe=dnsmasq,127.0.0.1:53,kubernetes.default.svc.${cfg.clusterDomain},5,A" - ]; - ports = [ - { - containerPort = 10054; - name = "metrics"; - protocol = "TCP"; - } - ]; - resources = { - requests = { - cpu = "10m"; - memory = "20Mi"; - }; - }; - } ]; dnsPolicy = "Default"; - serviceAccountName = "kube-dns"; + nodeSelector = { + "beta.kubernetes.io/os" = "linux"; + }; + serviceAccountName = "coredns"; tolerations = [ + { + effect = "NoSchedule"; + key = "node-role.kubernetes.io/master"; + } { key = "CriticalAddonsOnly"; operator = "Exists"; @@ -261,10 +261,15 @@ in { volumes = [ { configMap = { - name = "kube-dns"; - optional = true; + items = [ + { + key = "Corefile"; + path = "Corefile"; + } + ]; + name = "coredns"; }; - name = "kube-dns-config"; + name = "config-volume"; } ]; }; @@ -272,51 +277,40 @@ in { }; }; - kubedns-svc = { + coredns-svc = { apiVersion = "v1"; kind = "Service"; metadata = { + annotations = { + "prometheus.io/port" = toString ports.metrics; + "prometheus.io/scrape" = "true"; + }; labels = { "addonmanager.kubernetes.io/mode" = "Reconcile"; "k8s-app" = "kube-dns"; "kubernetes.io/cluster-service" = "true"; - "kubernetes.io/name" = "KubeDNS"; + "kubernetes.io/name" = "CoreDNS"; }; name = "kube-dns"; - namespace = "kube-system"; + namespace = "kube-system"; }; spec = { clusterIP = cfg.clusterIp; ports = [ - {name = "dns"; port = 53; protocol = "UDP";} - {name = "dns-tcp"; port = 53; protocol = "TCP";} + { + name = "dns"; + port = 53; + targetPort = ports.dns; + protocol = "UDP"; + } + { + name = "dns-tcp"; + port = 53; + targetPort = ports.dns; + protocol = "TCP"; + } ]; - selector.k8s-app = "kube-dns"; - }; - }; - - kubedns-sa = { - apiVersion = "v1"; - kind = "ServiceAccount"; - metadata = { - name = "kube-dns"; - namespace = "kube-system"; - labels = { - "kubernetes.io/cluster-service" = "true"; - "addonmanager.kubernetes.io/mode" = "Reconcile"; - }; - }; - }; - - kubedns-cm = { - apiVersion = "v1"; - kind = "ConfigMap"; - metadata = { - name = "kube-dns"; - namespace = "kube-system"; - labels = { - "addonmanager.kubernetes.io/mode" = "EnsureExists"; - }; + selector = { k8s-app = "kube-dns"; }; }; }; }; diff --git a/nixos/modules/services/computing/slurm/slurm.nix b/nixos/modules/services/computing/slurm/slurm.nix index 09174ed39f5..d1a1383e45b 100644 --- a/nixos/modules/services/computing/slurm/slurm.nix +++ b/nixos/modules/services/computing/slurm/slurm.nix @@ -6,13 +6,18 @@ let cfg = config.services.slurm; # configuration file can be generated by http://slurm.schedmd.com/configurator.html + + defaultUser = "slurm"; + configFile = pkgs.writeTextDir "slurm.conf" '' ClusterName=${cfg.clusterName} + StateSaveLocation=${cfg.stateSaveLocation} + SlurmUser=${cfg.user} ${optionalString (cfg.controlMachine != null) ''controlMachine=${cfg.controlMachine}''} ${optionalString (cfg.controlAddr != null) ''controlAddr=${cfg.controlAddr}''} - ${optionalString (cfg.nodeName != null) ''nodeName=${cfg.nodeName}''} - ${optionalString (cfg.partitionName != null) ''partitionName=${cfg.partitionName}''} + ${toString (map (x: "NodeName=${x}\n") cfg.nodeName)} + ${toString (map (x: "PartitionName=${x}\n") cfg.partitionName)} PlugStackConfig=${plugStackConfig} ProctrackType=${cfg.procTrackType} ${cfg.extraConfig} @@ -24,17 +29,24 @@ let ${cfg.extraPlugstackConfig} ''; - cgroupConfig = pkgs.writeTextDir "cgroup.conf" '' ${cfg.extraCgroupConfig} ''; + slurmdbdConf = pkgs.writeTextDir "slurmdbd.conf" + '' + DbdHost=${cfg.dbdserver.dbdHost} + SlurmUser=${cfg.user} + StorageType=accounting_storage/mysql + ${cfg.dbdserver.extraConfig} + ''; + # slurm expects some additional config files to be # in the same directory as slurm.conf etcSlurm = pkgs.symlinkJoin { name = "etc-slurm"; - paths = [ configFile cgroupConfig plugStackConfig ]; + paths = [ configFile cgroupConfig plugStackConfig ] ++ cfg.extraConfigPaths; }; in @@ -43,6 +55,8 @@ in ###### interface + meta.maintainers = [ maintainers.markuskowa ]; + options = { services.slurm = { @@ -60,6 +74,27 @@ in }; }; + dbdserver = { + enable = mkEnableOption "SlurmDBD service"; + + dbdHost = mkOption { + type = types.str; + default = config.networking.hostName; + description = '' + Hostname of the machine where slurmdbd + is running (i.e. name returned by hostname -s). + ''; + }; + + extraConfig = mkOption { + type = types.lines; + default = ""; + description = '' + Extra configuration for slurmdbd.conf + ''; + }; + }; + client = { enable = mkEnableOption "slurm client daemon"; }; @@ -116,9 +151,9 @@ in }; nodeName = mkOption { - type = types.nullOr types.str; - default = null; - example = "linux[1-32] CPUs=1 State=UNKNOWN"; + type = types.listOf types.str; + default = []; + example = literalExample ''[ "linux[1-32] CPUs=1 State=UNKNOWN" ];''; description = '' Name that SLURM uses to refer to a node (or base partition for BlueGene systems). Typically this would be the string that "/bin/hostname -s" @@ -127,9 +162,9 @@ in }; partitionName = mkOption { - type = types.nullOr types.str; - default = null; - example = "debug Nodes=linux[1-32] Default=YES MaxTime=INFINITE State=UP"; + type = types.listOf types.str; + default = []; + example = literalExample ''[ "debug Nodes=linux[1-32] Default=YES MaxTime=INFINITE State=UP" ];''; description = '' Name by which the partition may be referenced. Note that now you have to write the partition's parameters after the name. @@ -150,7 +185,7 @@ in }; procTrackType = mkOption { - type = types.string; + type = types.str; default = "proctrack/linuxproc"; description = '' Plugin to be used for process tracking on a job step basis. @@ -159,6 +194,25 @@ in ''; }; + stateSaveLocation = mkOption { + type = types.str; + default = "/var/spool/slurmctld"; + description = '' + Directory into which the Slurm controller, slurmctld, saves its state. + ''; + }; + + user = mkOption { + type = types.str; + default = defaultUser; + description = '' + Set this option when you want to run the slurmctld daemon + as something else than the default slurm user "slurm". + Note that the UID of this user needs to be the same + on all nodes. + ''; + }; + extraConfig = mkOption { default = ""; type = types.lines; @@ -184,6 +238,19 @@ in used when procTrackType=proctrack/cgroup. ''; }; + + extraConfigPaths = mkOption { + type = with types; listOf path; + default = []; + description = '' + Slurm expects config files for plugins in the same path + as slurm.conf. Add extra nix store + paths that should be merged into same directory as + slurm.conf. + ''; + }; + + }; }; @@ -220,12 +287,24 @@ in ''; }; - in mkIf (cfg.enableStools || cfg.client.enable || cfg.server.enable) { + in mkIf ( cfg.enableStools || + cfg.client.enable || + cfg.server.enable || + cfg.dbdserver.enable ) { environment.systemPackages = [ wrappedSlurm ]; services.munge.enable = mkDefault true; + # use a static uid as default to ensure it is the same on all nodes + users.users.slurm = mkIf (cfg.user == defaultUser) { + name = defaultUser; + group = "slurm"; + uid = config.ids.uids.slurm; + }; + + users.groups.slurm.gid = config.ids.uids.slurm; + systemd.services.slurmd = mkIf (cfg.client.enable) { path = with pkgs; [ wrappedSlurm coreutils ] ++ lib.optional cfg.enableSrunX11 slurm-spank-x11; @@ -235,6 +314,7 @@ in serviceConfig = { Type = "forking"; + KillMode = "process"; ExecStart = "${wrappedSlurm}/bin/slurmd"; PIDFile = "/run/slurmd.pid"; ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID"; @@ -261,6 +341,29 @@ in PIDFile = "/run/slurmctld.pid"; ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID"; }; + + preStart = '' + mkdir -p ${cfg.stateSaveLocation} + chown -R ${cfg.user}:slurm ${cfg.stateSaveLocation} + ''; + }; + + systemd.services.slurmdbd = mkIf (cfg.dbdserver.enable) { + path = with pkgs; [ wrappedSlurm munge coreutils ]; + + wantedBy = [ "multi-user.target" ]; + after = [ "network.target" "munged.service" "mysql.service" ]; + requires = [ "munged.service" "mysql.service" ]; + + # slurm strips the last component off the path + environment.SLURM_CONF = "${slurmdbdConf}/slurm.conf"; + + serviceConfig = { + Type = "forking"; + ExecStart = "${cfg.package}/bin/slurmdbd"; + PIDFile = "/run/slurmdbd.pid"; + ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID"; + }; }; }; diff --git a/nixos/modules/services/continuous-integration/buildbot/master.nix b/nixos/modules/services/continuous-integration/buildbot/master.nix index 8d767de37f0..0f07e6133bb 100644 --- a/nixos/modules/services/continuous-integration/buildbot/master.nix +++ b/nixos/modules/services/continuous-integration/buildbot/master.nix @@ -6,8 +6,12 @@ with lib; let cfg = config.services.buildbot-master; + + python = cfg.package.pythonModule; + escapeStr = s: escape ["'"] s; - masterCfg = if cfg.masterCfg == null then pkgs.writeText "master.cfg" '' + + defaultMasterCfg = pkgs.writeText "master.cfg" '' from buildbot.plugins import * factory = util.BuildFactory() c = BuildmasterConfig = dict( @@ -27,8 +31,28 @@ let factory.addStep(step) ${cfg.extraConfig} - '' - else cfg.masterCfg; + ''; + + tacFile = pkgs.writeText "buildbot-master.tac" '' + import os + + from twisted.application import service + from buildbot.master import BuildMaster + + basedir = '${cfg.buildbotDir}' + + configfile = '${cfg.masterCfg}' + + # Default umask for server + umask = None + + # note: this line is matched against to check that this is a buildmaster + # directory; do not edit it. + application = service.Application('buildmaster') + + m = BuildMaster(basedir, configfile, umask) + m.setServiceParent(application) + ''; in { options = { @@ -66,9 +90,9 @@ in { }; masterCfg = mkOption { - type = types.nullOr types.path; + type = types.path; description = "Optionally pass master.cfg path. Other options in this configuration will be ignored."; - default = null; + default = defaultMasterCfg; example = "/etc/nixos/buildbot/master.cfg"; }; @@ -175,18 +199,25 @@ in { package = mkOption { type = types.package; - default = pkgs.buildbot-full; - defaultText = "pkgs.buildbot-full"; + default = pkgs.pythonPackages.buildbot-full; + defaultText = "pkgs.pythonPackages.buildbot-full"; description = "Package to use for buildbot."; - example = literalExample "pkgs.buildbot-full"; + example = literalExample "pkgs.python3Packages.buildbot-full"; }; packages = mkOption { - default = with pkgs; [ python27Packages.twisted git ]; + default = [ pkgs.git ]; example = literalExample "[ pkgs.git ]"; type = types.listOf types.package; description = "Packages to add to PATH for the buildbot process."; }; + + pythonPackages = mkOption { + default = pythonPackages: with pythonPackages; [ ]; + defaultText = "pythonPackages: with pythonPackages; [ ]"; + description = "Packages to add the to the PYTHONPATH of the buildbot process."; + example = literalExample "pythonPackages: with pythonPackages; [ requests ]"; + }; }; }; @@ -210,14 +241,15 @@ in { description = "Buildbot Continuous Integration Server."; after = [ "network-online.target" ]; wantedBy = [ "multi-user.target" ]; - path = cfg.packages; + path = cfg.packages ++ cfg.pythonPackages python.pkgs; + environment.PYTHONPATH = "${python.withPackages (self: cfg.pythonPackages self ++ [ cfg.package ])}/${python.sitePackages}"; preStart = '' - env > envvars - mkdir -vp ${cfg.buildbotDir} - ln -sfv ${masterCfg} ${cfg.buildbotDir}/master.cfg - rm -fv $cfg.buildbotDir}/buildbot.tac - ${cfg.package}/bin/buildbot create-master ${cfg.buildbotDir} + mkdir -vp "${cfg.buildbotDir}" + # Link the tac file so buildbot command line tools recognize the directory + ln -sf "${tacFile}" "${cfg.buildbotDir}/buildbot.tac" + ${cfg.package}/bin/buildbot create-master --db "${cfg.dbUrl}" "${cfg.buildbotDir}" + rm -f buildbot.tac.new master.cfg.sample ''; serviceConfig = { @@ -225,12 +257,11 @@ in { User = cfg.user; Group = cfg.group; WorkingDirectory = cfg.home; - ExecStart = "${cfg.package}/bin/buildbot start --nodaemon ${cfg.buildbotDir}"; + # NOTE: call twistd directly with stdout logging for systemd + ExecStart = "${python.pkgs.twisted}/bin/twistd -o --nodaemon --pidfile= --logfile - --python ${tacFile}"; }; - }; }; meta.maintainers = with lib.maintainers; [ nand0p mic92 ]; - } diff --git a/nixos/modules/services/continuous-integration/buildbot/worker.nix b/nixos/modules/services/continuous-integration/buildbot/worker.nix index 67c541570b9..4130ec918a7 100644 --- a/nixos/modules/services/continuous-integration/buildbot/worker.nix +++ b/nixos/modules/services/continuous-integration/buildbot/worker.nix @@ -7,6 +7,40 @@ with lib; let cfg = config.services.buildbot-worker; + python = cfg.package.pythonModule; + + tacFile = pkgs.writeText "aur-buildbot-worker.tac" '' + import os + from io import open + + from buildbot_worker.bot import Worker + from twisted.application import service + + basedir = '${cfg.buildbotDir}' + + # note: this line is matched against to check that this is a worker + # directory; do not edit it. + application = service.Application('buildbot-worker') + + master_url_split = '${cfg.masterUrl}'.split(':') + buildmaster_host = master_url_split[0] + port = int(master_url_split[1]) + workername = '${cfg.workerUser}' + + with open('${cfg.workerPassFile}', 'r', encoding='utf-8') as passwd_file: + passwd = passwd_file.read().strip('\r\n') + keepalive = 600 + umask = None + maxdelay = 300 + numcpus = None + allow_shutdown = None + + s = Worker(buildmaster_host, port, workername, passwd, basedir, + keepalive, umask=umask, maxdelay=maxdelay, + numcpus=numcpus, allow_shutdown=allow_shutdown) + s.setServiceParent(application) + ''; + in { options = { services.buildbot-worker = { @@ -59,6 +93,23 @@ in { description = "Specifies the Buildbot Worker password."; }; + workerPassFile = mkOption { + type = types.path; + description = "File used to store the Buildbot Worker password"; + }; + + hostMessage = mkOption { + default = null; + type = types.nullOr types.str; + description = "Description of this worker"; + }; + + adminMessage = mkOption { + default = null; + type = types.nullOr types.str; + description = "Name of the administrator of this worker"; + }; + masterUrl = mkOption { default = "localhost:9989"; type = types.str; @@ -67,23 +118,24 @@ in { package = mkOption { type = types.package; - default = pkgs.buildbot-worker; - defaultText = "pkgs.buildbot-worker"; + default = pkgs.pythonPackages.buildbot-worker; + defaultText = "pkgs.pythonPackages.buildbot-worker"; description = "Package to use for buildbot worker."; - example = literalExample "pkgs.buildbot-worker"; + example = literalExample "pkgs.python3Packages.buildbot-worker"; }; packages = mkOption { - default = with pkgs; [ python27Packages.twisted git ]; + default = with pkgs; [ git ]; example = literalExample "[ pkgs.git ]"; type = types.listOf types.package; description = "Packages to add to PATH for the buildbot process."; }; - }; }; config = mkIf cfg.enable { + services.buildbot-worker.workerPassFile = mkDefault (pkgs.writeText "buildbot-worker-password" cfg.workerPass); + users.groups = optional (cfg.group == "bbworker") { name = "bbworker"; }; @@ -104,11 +156,16 @@ in { after = [ "network.target" "buildbot-master.service" ]; wantedBy = [ "multi-user.target" ]; path = cfg.packages; + environment.PYTHONPATH = "${python.withPackages (p: [ cfg.package ])}/${python.sitePackages}"; preStart = '' - mkdir -vp ${cfg.buildbotDir} - rm -fv $cfg.buildbotDir}/buildbot.tac - ${cfg.package}/bin/buildbot-worker create-worker ${cfg.buildbotDir} ${cfg.masterUrl} ${cfg.workerUser} ${cfg.workerPass} + mkdir -vp "${cfg.buildbotDir}/info" + ${optionalString (cfg.hostMessage != null) '' + ln -sf "${pkgs.writeText "buildbot-worker-host" cfg.hostMessage}" "${cfg.buildbotDir}/info/host" + ''} + ${optionalString (cfg.adminMessage != null) '' + ln -sf "${pkgs.writeText "buildbot-worker-admin" cfg.adminMessage}" "${cfg.buildbotDir}/info/admin" + ''} ''; serviceConfig = { @@ -116,11 +173,9 @@ in { User = cfg.user; Group = cfg.group; WorkingDirectory = cfg.home; - Environment = "PYTHONPATH=${cfg.package}/lib/python2.7/site-packages:${pkgs.python27Packages.future}/lib/python2.7/site-packages"; # NOTE: call twistd directly with stdout logging for systemd - #ExecStart = "${cfg.package}/bin/buildbot-worker start --nodaemon ${cfg.buildbotDir}"; - ExecStart = "${pkgs.python27Packages.twisted}/bin/twistd -n -l - -y ${cfg.buildbotDir}/buildbot.tac"; + ExecStart = "${python.pkgs.twisted}/bin/twistd --nodaemon --pidfile= --logfile - --python ${tacFile}"; }; }; diff --git a/nixos/modules/services/continuous-integration/jenkins/job-builder.nix b/nixos/modules/services/continuous-integration/jenkins/job-builder.nix index 861b46a2d64..5d1bfe4ec40 100644 --- a/nixos/modules/services/continuous-integration/jenkins/job-builder.nix +++ b/nixos/modules/services/continuous-integration/jenkins/job-builder.nix @@ -42,6 +42,18 @@ in { type = types.str; description = '' User token in Jenkins used to reload config. + WARNING: This token will be world readable in the Nix store. To keep + it secret, use the option instead. + ''; + }; + + accessTokenFile = mkOption { + default = ""; + type = types.str; + example = "/run/keys/jenkins-job-builder-access-token"; + description = '' + File containing the API token for the + user. ''; }; @@ -103,6 +115,21 @@ in { }; config = mkIf (jenkinsCfg.enable && cfg.enable) { + assertions = [ + { assertion = + if cfg.accessUser != "" + then (cfg.accessToken != "" && cfg.accessTokenFile == "") || + (cfg.accessToken == "" && cfg.accessTokenFile != "") + else true; + message = '' + One of accessToken and accessTokenFile options must be non-empty + strings, but not both. Current values: + services.jenkins.jobBuilder.accessToken = "${cfg.accessToken}" + services.jenkins.jobBuilder.accessTokenFile = "${cfg.accessTokenFile}" + ''; + } + ]; + systemd.services.jenkins-job-builder = { description = "Jenkins Job Builder Service"; # JJB can run either before or after jenkins. We chose after, so we can @@ -128,8 +155,13 @@ in { ownerStamp = ".config-xml-managed-by-nixos-jenkins-job-builder"; reloadScript = '' echo "Asking Jenkins to reload config" - CRUMB=$(curl -s 'http://${cfg.accessUser}:${cfg.accessToken}@${jenkinsCfg.listenAddress}:${toString jenkinsCfg.port}${jenkinsCfg.prefix}/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,":",//crumb)') - curl --silent -X POST -H "$CRUMB" http://${cfg.accessUser}:${cfg.accessToken}@${jenkinsCfg.listenAddress}:${toString jenkinsCfg.port}${jenkinsCfg.prefix}/reload + curl_opts="--silent --fail --show-error" + access_token=${if cfg.accessTokenFile != "" + then "$(cat '${cfg.accessTokenFile}')" + else cfg.accessToken} + jenkins_url="http://${cfg.accessUser}:$access_token@${jenkinsCfg.listenAddress}:${toString jenkinsCfg.port}${jenkinsCfg.prefix}" + crumb=$(curl $curl_opts "$jenkins_url"'/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,":",//crumb)') + curl $curl_opts -X POST -H "$crumb" "$jenkins_url"/reload ''; in '' diff --git a/nixos/modules/services/databases/aerospike.nix b/nixos/modules/services/databases/aerospike.nix index 5f33164998b..4b905f90529 100644 --- a/nixos/modules/services/databases/aerospike.nix +++ b/nixos/modules/services/databases/aerospike.nix @@ -43,6 +43,7 @@ in package = mkOption { default = pkgs.aerospike; + defaultText = "pkgs.aerospike"; type = types.package; description = "Which Aerospike derivation to use"; }; diff --git a/nixos/modules/services/databases/cassandra.nix b/nixos/modules/services/databases/cassandra.nix index 86e74d5d5ab..d741ee48c48 100644 --- a/nixos/modules/services/databases/cassandra.nix +++ b/nixos/modules/services/databases/cassandra.nix @@ -34,11 +34,13 @@ let { name = "cassandra-etc"; cassandraYaml = builtins.toJSON cassandraConfigWithAddresses; cassandraEnvPkg = "${cfg.package}/conf/cassandra-env.sh"; + cassandraLogbackConfig = pkgs.writeText "logback.xml" cfg.logbackConfig; buildCommand = '' mkdir -p "$out" echo "$cassandraYaml" > "$out/cassandra.yaml" ln -s "$cassandraEnvPkg" "$out/cassandra-env.sh" + ln -s "$cassandraLogbackConfig" "$out/logback.xml" ''; }; in { @@ -139,7 +141,27 @@ in { correspond to a single address, IP aliasing is not supported. ''; }; + logbackConfig = mkOption { + type = types.lines; + default = '' + + + + %-5level %date{HH:mm:ss,SSS} %msg%n + + + + + + + + + ''; + description = '' + XML logback configuration for cassandra + ''; + }; extraConfig = mkOption { type = types.attrs; default = {}; diff --git a/nixos/modules/services/databases/clickhouse.nix b/nixos/modules/services/databases/clickhouse.nix index 1b8771cec39..21e0cee3415 100644 --- a/nixos/modules/services/databases/clickhouse.nix +++ b/nixos/modules/services/databases/clickhouse.nix @@ -70,6 +70,11 @@ with lib; }; }; + environment.systemPackages = [ pkgs.clickhouse ]; + + # startup requires a `/etc/localtime` which only if exists if `time.timeZone != null` + time.timeZone = mkDefault "UTC"; + }; } diff --git a/nixos/modules/services/databases/cockroachdb.nix b/nixos/modules/services/databases/cockroachdb.nix new file mode 100644 index 00000000000..e977751b21e --- /dev/null +++ b/nixos/modules/services/databases/cockroachdb.nix @@ -0,0 +1,217 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.services.cockroachdb; + crdb = cfg.package; + + escape = builtins.replaceStrings ["%"] ["%%"]; + ifNotNull = v: s: optionalString (!isNull v) s; + + startupCommand = lib.concatStringsSep " " + [ # Basic startup + "${crdb}/bin/cockroach start" + "--logtostderr" + "--store=/var/lib/cockroachdb" + (ifNotNull cfg.locality "--locality='${cfg.locality}'") + + # WebUI settings + "--http-addr='${cfg.http.address}:${toString cfg.http.port}'" + + # Cluster listen address + "--listen-addr='${cfg.listen.address}:${toString cfg.listen.port}'" + + # Cluster configuration + (ifNotNull cfg.join "--join=${cfg.join}") + + # Cache and memory settings. Must be escaped. + "--cache='${escape cfg.cache}'" + "--max-sql-memory='${escape cfg.maxSqlMemory}'" + + # Certificate/security settings. + (if cfg.insecure then "--insecure" else "--certs-dir=${cfg.certsDir}") + ]; + + addressOption = descr: defaultPort: { + address = mkOption { + type = types.str; + default = "localhost"; + description = "Address to bind to for ${descr}"; + }; + + port = mkOption { + type = types.port; + default = defaultPort; + description = "Port to bind to for ${descr}"; + }; + }; +in + +{ + options = { + services.cockroachdb = { + enable = mkEnableOption "CockroachDB Server"; + + listen = addressOption "intra-cluster communication" 26257; + + http = addressOption "http-based Admin UI" 8080; + + locality = mkOption { + type = types.nullOr types.str; + default = null; + description = '' + An ordered, comma-separated list of key-value pairs that describe the + topography of the machine. Topography might include country, + datacenter or rack designations. Data is automatically replicated to + maximize diversities of each tier. The order of tiers is used to + determine the priority of the diversity, so the more inclusive + localities like country should come before less inclusive localities + like datacenter. The tiers and order must be the same on all nodes. + Including more tiers is better than including fewer. For example: + + + country=us,region=us-west,datacenter=us-west-1b,rack=12 + country=ca,region=ca-east,datacenter=ca-east-2,rack=4 + + planet=earth,province=manitoba,colo=secondary,power=3 + + ''; + }; + + join = mkOption { + type = types.nullOr types.str; + default = null; + description = "The addresses for connecting the node to a cluster."; + }; + + insecure = mkOption { + type = types.bool; + default = false; + description = "Run in insecure mode."; + }; + + certsDir = mkOption { + type = types.nullOr types.path; + default = null; + description = "The path to the certificate directory."; + }; + + user = mkOption { + type = types.str; + default = "cockroachdb"; + description = "User account under which CockroachDB runs"; + }; + + group = mkOption { + type = types.str; + default = "cockroachdb"; + description = "User account under which CockroachDB runs"; + }; + + openPorts = mkOption { + type = types.bool; + default = false; + description = "Open firewall ports for cluster communication by default"; + }; + + cache = mkOption { + type = types.str; + default = "25%"; + description = '' + The total size for caches. + + This can be a percentage, expressed with a fraction sign or as a + decimal-point number, or any bytes-based unit. For example, + "25%", "0.25" both represent + 25% of the available system memory. The values + "1000000000" and "1GB" both + represent 1 gigabyte of memory. + + ''; + }; + + maxSqlMemory = mkOption { + type = types.str; + default = "25%"; + description = '' + The maximum in-memory storage capacity available to store temporary + data for SQL queries. + + This can be a percentage, expressed with a fraction sign or as a + decimal-point number, or any bytes-based unit. For example, + "25%", "0.25" both represent + 25% of the available system memory. The values + "1000000000" and "1GB" both + represent 1 gigabyte of memory. + ''; + }; + + package = mkOption { + type = types.package; + default = pkgs.cockroachdb; + 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). + ''; + }; + }; + }; + + config = mkIf config.services.cockroachdb.enable { + assertions = [ + { assertion = !cfg.insecure -> !(isNull cfg.certsDir); + message = "CockroachDB must have a set of SSL certificates (.certsDir), or run in Insecure Mode (.insecure = true)"; + } + ]; + + environment.systemPackages = [ crdb ]; + + users.users = optionalAttrs (cfg.user == "cockroachdb") (singleton + { name = "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; + }); + + networking.firewall.allowedTCPPorts = lib.optionals cfg.openPorts + [ cfg.http.port cfg.listen.port ]; + + systemd.services.cockroachdb = + { description = "CockroachDB Server"; + documentation = [ "man:cockroach(1)" "https://www.cockroachlabs.com" ]; + + after = [ "network.target" "time-sync.target" ]; + requires = [ "time-sync.target" ]; + wantedBy = [ "multi-user.target" ]; + + unitConfig.RequiresMountsFor = "/var/lib/cockroachdb"; + + serviceConfig = + { ExecStart = startupCommand; + Type = "notify"; + User = cfg.user; + StateDirectory = "cockroachdb"; + StateDirectoryMode = "0700"; + + Restart = "always"; + + # A conservative-ish timeout is alright here, because for Type=notify + # cockroach will send systemd pings during startup to keep it alive + TimeoutStopSec = 60; + RestartSec = 10; + }; + }; + }; + + meta.maintainers = with lib.maintainers; [ thoughtpolice ]; +} diff --git a/nixos/modules/services/databases/mysql.nix b/nixos/modules/services/databases/mysql.nix index 0dde9ee6e2e..8e7945cfdb5 100644 --- a/nixos/modules/services/databases/mysql.nix +++ b/nixos/modules/services/databases/mysql.nix @@ -12,26 +12,22 @@ let let pName = _p: (builtins.parseDrvName (_p.name)).name; in pName mysql == pName pkgs.mariadb; + isMysqlAtLeast57 = + let + pName = _p: (builtins.parseDrvName (_p.name)).name; + in (pName mysql == pName pkgs.mysql57) + && ((builtins.compareVersions mysql.version "5.7") >= 0); pidFile = "${cfg.pidDir}/mysqld.pid"; + mysqldAndInstallOptions = + "--user=${cfg.user} --datadir=${cfg.dataDir} --basedir=${mysql}"; mysqldOptions = - "--user=${cfg.user} --datadir=${cfg.dataDir} --basedir=${mysql} " + - "--pid-file=${pidFile}"; - - myCnf = pkgs.writeText "my.cnf" - '' - [mysqld] - port = ${toString cfg.port} - ${optionalString (cfg.bind != null) "bind-address = ${cfg.bind}" } - ${optionalString (cfg.replication.role == "master" || cfg.replication.role == "slave") "log-bin=mysql-bin"} - ${optionalString (cfg.replication.role == "master" || cfg.replication.role == "slave") "server-id = ${toString cfg.replication.serverId}"} - ${optionalString (cfg.ensureUsers != []) - '' - plugin-load-add = auth_socket.so - ''} - ${cfg.extraOptions} - ''; + "${mysqldAndInstallOptions} --pid-file=${pidFile}"; + # For MySQL 5.7+, --insecure creates the root user without password + # (earlier versions and MariaDB do this by default). + installOptions = + "${mysqldAndInstallOptions} ${lib.optionalString isMysqlAtLeast57 "--insecure"}"; in @@ -147,7 +143,7 @@ in option is changed. This means that users created and permissions assigned once through this option or otherwise have to be removed manually. ''; - example = [ + example = literalExample ''[ { name = "nextcloud"; ensurePermissions = { @@ -160,7 +156,7 @@ in "*.*" = "SELECT, LOCK TABLES"; }; } - ]; + ]''; }; # FIXME: remove this option; it's a really bad idea. @@ -231,6 +227,21 @@ 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"} + ${optionalString (cfg.replication.role == "master" || cfg.replication.role == "slave") "server-id = ${toString cfg.replication.serverId}"} + ${optionalString (cfg.ensureUsers != []) + '' + plugin-load-add = auth_socket.so + ''} + ${cfg.extraOptions} + ''; + systemd.services.mysql = let hasNotify = (cfg.package == pkgs.mariadb); in { @@ -252,7 +263,7 @@ in if ! test -e ${cfg.dataDir}/mysql; then mkdir -m 0700 -p ${cfg.dataDir} chown -R ${cfg.user} ${cfg.dataDir} - ${mysql}/bin/mysql_install_db ${mysqldOptions} + ${mysql}/bin/mysql_install_db --defaults-file=/etc/my.cnf ${installOptions} touch /tmp/mysql_init fi @@ -263,7 +274,8 @@ in serviceConfig = { Type = if hasNotify then "notify" else "simple"; RuntimeDirectory = "mysqld"; - ExecStart = "${mysql}/bin/mysqld --defaults-extra-file=${myCnf} ${mysqldOptions}"; + # 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"; }; postStart = '' @@ -351,7 +363,7 @@ in ${optionalString (cfg.ensureDatabases != []) '' ( ${concatMapStrings (database: '' - echo "CREATE DATABASE IF NOT EXISTS ${database};" + echo "CREATE DATABASE IF NOT EXISTS \`${database}\`;" '') cfg.ensureDatabases} ) | ${mysql}/bin/mysql -u root -N ''} diff --git a/nixos/modules/services/databases/openldap.nix b/nixos/modules/services/databases/openldap.nix index 9f2bf5ef8a9..e996211be7d 100644 --- a/nixos/modules/services/databases/openldap.nix +++ b/nixos/modules/services/databases/openldap.nix @@ -54,6 +54,13 @@ in description = "The database directory."; }; + logLevel = mkOption { + type = types.str; + default = "0"; + example = "acl trace"; + description = "The log level selector of slapd."; + }; + configDir = mkOption { type = types.nullOr types.path; default = null; @@ -139,7 +146,7 @@ in chown -R "${cfg.user}:${cfg.group}" "${cfg.dataDir}" ''; serviceConfig.ExecStart = - "${openldap.out}/libexec/slapd -d 0 " + + "${openldap.out}/libexec/slapd -d ${cfg.logLevel} " + "-u '${cfg.user}' -g '${cfg.group}' " + "-h '${concatStringsSep " " cfg.urlList}' " + "${configOpts}"; diff --git a/nixos/modules/services/databases/postgresql.nix b/nixos/modules/services/databases/postgresql.nix index de2a757196a..aeab445a998 100644 --- a/nixos/modules/services/databases/postgresql.nix +++ b/nixos/modules/services/databases/postgresql.nix @@ -55,7 +55,7 @@ in package = mkOption { type = types.package; - example = literalExample "pkgs.postgresql96"; + example = literalExample "pkgs.postgresql_9_6"; description = '' PostgreSQL package to use. ''; @@ -118,7 +118,7 @@ in extraPlugins = mkOption { type = types.listOf types.path; default = []; - example = literalExample "[ (pkgs.postgis.override { postgresql = pkgs.postgresql94; }) ]"; + example = literalExample "[ (pkgs.postgis.override { postgresql = pkgs.postgresql_9_4; }) ]"; description = '' When this list contains elements a new store path is created. PostgreSQL and the elements are symlinked into it. Then pg_config, @@ -167,9 +167,9 @@ in # Note: when changing the default, make it conditional on # ‘system.stateVersion’ to maintain compatibility with existing # systems! - mkDefault (if versionAtLeast config.system.stateVersion "17.09" then pkgs.postgresql96 - else if versionAtLeast config.system.stateVersion "16.03" then pkgs.postgresql95 - else pkgs.postgresql94); + mkDefault (if versionAtLeast config.system.stateVersion "17.09" then pkgs.postgresql_9_6 + else if versionAtLeast config.system.stateVersion "16.03" then pkgs.postgresql_9_5 + else pkgs.postgresql_9_4); services.postgresql.dataDir = mkDefault (if versionAtLeast config.system.stateVersion "17.09" then "/var/lib/postgresql/${config.services.postgresql.package.psqlSchema}" @@ -238,6 +238,9 @@ in User = "postgres"; Group = "postgres"; PermissionsStartOnly = true; + Type = if lib.versionAtLeast cfg.package.version "9.6" + then "notify" + else "simple"; # Shut down Postgres using SIGINT ("Fast Shutdown mode"). See # http://www.postgresql.org/docs/current/static/server-shutdown.html @@ -271,5 +274,5 @@ in }; meta.doc = ./postgresql.xml; - + meta.maintainers = with lib.maintainers; [ thoughtpolice ]; } diff --git a/nixos/modules/services/databases/postgresql.xml b/nixos/modules/services/databases/postgresql.xml index f89f0d65316..14f4d4909bc 100644 --- a/nixos/modules/services/databases/postgresql.xml +++ b/nixos/modules/services/databases/postgresql.xml @@ -27,12 +27,12 @@ configuration.nix: = true; - = pkgs.postgresql94; + = pkgs.postgresql_9_4; Note that you are required to specify the desired version of PostgreSQL - (e.g. pkgs.postgresql94). Since upgrading your PostgreSQL - version requires a database dump and reload (see below), NixOS cannot - provide a default value for + (e.g. pkgs.postgresql_9_4). 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. diff --git a/nixos/modules/services/desktops/accountsservice.nix b/nixos/modules/services/desktops/accountsservice.nix index 933b9da2c83..c48036a99e8 100644 --- a/nixos/modules/services/desktops/accountsservice.nix +++ b/nixos/modules/services/desktops/accountsservice.nix @@ -39,14 +39,14 @@ with lib; systemd.packages = [ pkgs.accountsservice ]; - systemd.services.accounts-daemon = { + systemd.services.accounts-daemon = recursiveUpdate { wantedBy = [ "graphical.target" ]; # Accounts daemon looks for dbus interfaces in $XDG_DATA_DIRS/accountsservice environment.XDG_DATA_DIRS = "${config.system.path}/share"; - } // (optionalAttrs (!config.users.mutableUsers) { + } (optionalAttrs (!config.users.mutableUsers) { environment.NIXOS_USERS_PURE = "true"; }); }; diff --git a/nixos/modules/services/desktops/geoclue2.nix b/nixos/modules/services/desktops/geoclue2.nix index dafb0af2075..840aa5294ed 100644 --- a/nixos/modules/services/desktops/geoclue2.nix +++ b/nixos/modules/services/desktops/geoclue2.nix @@ -61,6 +61,8 @@ in wantedBy = [ "default.target" ]; }; }; + + environment.etc."geoclue/geoclue.conf".source = "${package}/etc/geoclue/geoclue.conf"; }; } diff --git a/nixos/modules/services/desktops/gnome3/file-roller.nix b/nixos/modules/services/desktops/gnome3/file-roller.nix new file mode 100644 index 00000000000..7fb558a9895 --- /dev/null +++ b/nixos/modules/services/desktops/gnome3/file-roller.nix @@ -0,0 +1,32 @@ +# File Roller. + +{ config, pkgs, lib, ... }: + +with lib; + +{ + + ###### interface + + options = { + + services.gnome3.file-roller = { + + enable = mkEnableOption "File Roller, an archive manager for GNOME"; + + }; + + }; + + + ###### implementation + + config = mkIf config.services.gnome3.file-roller.enable { + + environment.systemPackages = [ pkgs.gnome3.file-roller ]; + + services.dbus.packages = [ pkgs.gnome3.file-roller ]; + + }; + +} diff --git a/nixos/modules/services/desktops/gnome3/gnome-keyring.nix b/nixos/modules/services/desktops/gnome3/gnome-keyring.nix index aa1165ab3bb..5ea4350be5b 100644 --- a/nixos/modules/services/desktops/gnome3/gnome-keyring.nix +++ b/nixos/modules/services/desktops/gnome3/gnome-keyring.nix @@ -33,7 +33,7 @@ with lib; environment.systemPackages = [ pkgs.gnome3.gnome-keyring ]; - services.dbus.packages = [ pkgs.gnome3.gnome-keyring pkgs.gnome3.gcr ]; + services.dbus.packages = [ pkgs.gnome3.gnome-keyring pkgs.gcr ]; }; diff --git a/nixos/modules/services/desktops/gnome3/gnome-remote-desktop.nix b/nixos/modules/services/desktops/gnome3/gnome-remote-desktop.nix new file mode 100644 index 00000000000..021f4f9534b --- /dev/null +++ b/nixos/modules/services/desktops/gnome3/gnome-remote-desktop.nix @@ -0,0 +1,18 @@ +# Remote desktop daemon using Pipewire. +{ config, lib, pkgs, ... }: + +with lib; + +{ + ###### interface + options = { + services.gnome3.gnome-remote-desktop = { + enable = mkEnableOption "Remote Desktop support using Pipewire"; + }; + }; + + ###### implementation + config = mkIf config.services.gnome3.gnome-remote-desktop.enable { + systemd.packages = [ pkgs.gnome3.gnome-remote-desktop ]; + }; +} diff --git a/nixos/modules/services/desktops/gnome3/seahorse.nix b/nixos/modules/services/desktops/gnome3/seahorse.nix index e9ad738269e..9631157934f 100644 --- a/nixos/modules/services/desktops/gnome3/seahorse.nix +++ b/nixos/modules/services/desktops/gnome3/seahorse.nix @@ -29,7 +29,7 @@ with lib; config = mkIf config.services.gnome3.seahorse.enable { - environment.systemPackages = [ pkgs.gnome3.seahorse ]; + environment.systemPackages = [ pkgs.gnome3.seahorse pkgs.gnome3.dconf ]; services.dbus.packages = [ pkgs.gnome3.seahorse ]; diff --git a/nixos/modules/services/desktops/gsignond.nix b/nixos/modules/services/desktops/gsignond.nix new file mode 100644 index 00000000000..cf26e05d5c1 --- /dev/null +++ b/nixos/modules/services/desktops/gsignond.nix @@ -0,0 +1,43 @@ +# Accounts-SSO gSignOn daemon + +{ config, lib, pkgs, ... }: + +with lib; + +let + package = pkgs.gsignond.override { plugins = config.services.gsignond.plugins; }; +in +{ + + ###### interface + + options = { + + services.gsignond = { + + enable = mkOption { + type = types.bool; + default = false; + description = '' + Whether to enable gSignOn daemon, a DBus service + which performs user authentication on behalf of its clients. + ''; + }; + + plugins = mkOption { + type = types.listOf types.package; + default = []; + description = '' + What plugins to use with the gSignOn daemon. + ''; + }; + }; + }; + + ###### implementation + config = mkIf config.services.gsignond.enable { + environment.etc."gsignond.conf".source = "${package}/etc/gsignond.conf"; + services.dbus.packages = [ package ]; + }; + +} diff --git a/nixos/modules/services/desktops/profile-sync-daemon.nix b/nixos/modules/services/desktops/profile-sync-daemon.nix index 4165bb64fe4..e4e47cfbd43 100644 --- a/nixos/modules/services/desktops/profile-sync-daemon.nix +++ b/nixos/modules/services/desktops/profile-sync-daemon.nix @@ -36,7 +36,7 @@ in { description = "Profile Sync daemon"; wants = [ "psd-resync.service" "local-fs.target" ]; wantedBy = [ "default.target" ]; - path = with pkgs; [ rsync kmod gawk nettools profile-sync-daemon ]; + path = with pkgs; [ rsync kmod gawk nettools utillinux profile-sync-daemon ]; unitConfig = { RequiresMountsFor = [ "/home/" ]; }; @@ -55,7 +55,7 @@ in { wants = [ "psd-resync.timer" ]; partOf = [ "psd.service" ]; wantedBy = [ "default.target" ]; - path = with pkgs; [ rsync kmod gawk nettools profile-sync-daemon ]; + path = with pkgs; [ rsync kmod gawk nettools utillinux profile-sync-daemon ]; serviceConfig = { Type = "oneshot"; ExecStart = "${pkgs.profile-sync-daemon}/bin/profile-sync-daemon resync"; diff --git a/nixos/modules/services/development/jupyter/default.nix b/nixos/modules/services/development/jupyter/default.nix index 9fcc0043186..f20860af6e1 100644 --- a/nixos/modules/services/development/jupyter/default.nix +++ b/nixos/modules/services/development/jupyter/default.nix @@ -145,6 +145,7 @@ in { systemd.services.jupyter = { description = "Jupyter development server"; + after = [ "network.target" ]; wantedBy = [ "multi-user.target" ]; # TODO: Patch notebook so we can explicitly pass in a shell diff --git a/nixos/modules/services/editors/emacs.xml b/nixos/modules/services/editors/emacs.xml index 6cf20cf4aa7..1ac53c818a7 100644 --- a/nixos/modules/services/editors/emacs.xml +++ b/nixos/modules/services/editors/emacs.xml @@ -11,7 +11,7 @@ Rodney Lorrimar @rvl --> - Emacs is an + Emacs is an extensible, customizable, self-documenting real-time display editor — and more. At its core is an interpreter for Emacs Lisp, a dialect of the Lisp programming language with extensions to support text editing. diff --git a/nixos/modules/services/games/minetest-server.nix b/nixos/modules/services/games/minetest-server.nix index 2de42f20f6c..98e69c6dc0e 100644 --- a/nixos/modules/services/games/minetest-server.nix +++ b/nixos/modules/services/games/minetest-server.nix @@ -84,7 +84,9 @@ in home = "/var/lib/minetest"; createHome = true; uid = config.ids.uids.minetest; + group = "minetest"; }; + users.groups.minetest.gid = config.ids.gids.minetest; systemd.services.minetest-server = { description = "Minetest Server Service"; @@ -93,6 +95,7 @@ in serviceConfig.Restart = "always"; serviceConfig.User = "minetest"; + serviceConfig.Group = "minetest"; script = '' cd /var/lib/minetest diff --git a/nixos/modules/services/hardware/bluetooth.nix b/nixos/modules/services/hardware/bluetooth.nix index d7ca8a43179..2a8dfe4a66c 100644 --- a/nixos/modules/services/hardware/bluetooth.nix +++ b/nixos/modules/services/hardware/bluetooth.nix @@ -25,9 +25,14 @@ in { type = types.package; default = pkgs.bluez; defaultText = "pkgs.bluez"; - example = "pkgs.bluez.override { enableMidi = true; }"; + example = "pkgs.bluezFull"; description = '' Which BlueZ package to use. + + + Use the pkgs.bluezFull package to enable all + bluez plugins. + ''; }; diff --git a/nixos/modules/services/hardware/lirc.nix b/nixos/modules/services/hardware/lirc.nix index a66a7fbf495..826e512c75d 100644 --- a/nixos/modules/services/hardware/lirc.nix +++ b/nixos/modules/services/hardware/lirc.nix @@ -32,7 +32,6 @@ in { default = []; description = "Extra arguments to lircd."; }; - }; }; @@ -43,13 +42,15 @@ in { # Note: LIRC executables raises a warning, if lirc_options.conf do not exists environment.etc."lirc/lirc_options.conf".text = cfg.options; + passthru.lirc.socket = "/run/lirc/lircd"; + environment.systemPackages = [ pkgs.lirc ]; systemd.sockets.lircd = { description = "LIRC daemon socket"; wantedBy = [ "sockets.target" ]; socketConfig = { - ListenStream = "/run/lirc/lircd"; + ListenStream = config.passthru.lirc.socket; SocketUser = "lirc"; SocketMode = "0660"; }; @@ -65,6 +66,20 @@ in { serviceConfig = { RuntimeDirectory = "lirc"; + + # Service runtime directory and socket share same folder. + # Following hacks are necessary to get everything right: + + # 1. prevent socket deletion during stop and restart + RuntimeDirectoryPreserve = true; + + # 2. fix runtime folder owner-ship, happens when socket activation + # creates the folder + PermissionsStartOnly = true; + ExecStartPre = [ + "${pkgs.coreutils}/bin/chown lirc /run/lirc/" + ]; + ExecStart = '' ${pkgs.lirc}/bin/lircd --nodaemon \ ${escapeShellArgs cfg.extraArguments} \ diff --git a/nixos/modules/services/hardware/tlp.nix b/nixos/modules/services/hardware/tlp.nix index 68425822a88..b894025c0fd 100644 --- a/nixos/modules/services/hardware/tlp.nix +++ b/nixos/modules/services/hardware/tlp.nix @@ -56,6 +56,8 @@ in powerManagement.scsiLinkPolicy = null; powerManagement.cpuFreqGovernor = null; + powerManagement.cpufreq.max = null; + powerManagement.cpufreq.min = null; systemd.sockets."systemd-rfkill".enable = false; diff --git a/nixos/modules/services/hardware/trezord.nix b/nixos/modules/services/hardware/trezord.nix index dfefc1171e6..c06a0665d02 100644 --- a/nixos/modules/services/hardware/trezord.nix +++ b/nixos/modules/services/hardware/trezord.nix @@ -27,13 +27,13 @@ in { destination = "/etc/udev/rules.d/51-trezor.rules"; text = '' # TREZOR v1 (One) - SUBSYSTEM=="usb", ATTR{idVendor}=="534c", ATTR{idProduct}=="0001", MODE="0666", GROUP="dialout", TAG+="uaccess", TAG+="udev-acl", SYMLINK+="trezor%n" - KERNEL=="hidraw*", ATTRS{idVendor}=="534c", ATTRS{idProduct}=="0001", MODE="0666", GROUP="dialout", TAG+="uaccess", TAG+="udev-acl" + SUBSYSTEM=="usb", ATTR{idVendor}=="534c", ATTR{idProduct}=="0001", MODE="0660", GROUP="trezord", TAG+="uaccess", SYMLINK+="trezor%n" + KERNEL=="hidraw*", ATTRS{idVendor}=="534c", ATTRS{idProduct}=="0001", MODE="0660", GROUP="trezord", TAG+="uaccess" # TREZOR v2 (T) - SUBSYSTEM=="usb", ATTR{idVendor}=="1209", ATTR{idProduct}=="53c0", MODE="0661", GROUP="dialout", TAG+="uaccess", TAG+="udev-acl", SYMLINK+="trezor%n" - SUBSYSTEM=="usb", ATTR{idVendor}=="1209", ATTR{idProduct}=="53c1", MODE="0666", GROUP="dialout", TAG+="uaccess", TAG+="udev-acl", SYMLINK+="trezor%n" - KERNEL=="hidraw*", ATTRS{idVendor}=="1209", ATTRS{idProduct}=="53c1", MODE="0666", GROUP="dialout", TAG+="uaccess", TAG+="udev-acl" + SUBSYSTEM=="usb", ATTR{idVendor}=="1209", ATTR{idProduct}=="53c0", MODE="0660", GROUP="trezord", TAG+="uaccess", SYMLINK+="trezor%n" + SUBSYSTEM=="usb", ATTR{idVendor}=="1209", ATTR{idProduct}=="53c1", MODE="0660", GROUP="trezord", TAG+="uaccess", SYMLINK+="trezor%n" + KERNEL=="hidraw*", ATTRS{idVendor}=="1209", ATTRS{idProduct}=="53c1", MODE="0660", GROUP="trezord", TAG+="uaccess" ''; }); diff --git a/nixos/modules/services/hardware/upower.nix b/nixos/modules/services/hardware/upower.nix index 2198842a451..1da47349c07 100644 --- a/nixos/modules/services/hardware/upower.nix +++ b/nixos/modules/services/hardware/upower.nix @@ -56,6 +56,32 @@ in { Type = "dbus"; BusName = "org.freedesktop.UPower"; ExecStart = "@${cfg.package}/libexec/upowerd upowerd"; + Restart = "on-failure"; + # Upstream lockdown: + # Filesystem lockdown + ProtectSystem = "strict"; + # Needed by keyboard backlight support + ProtectKernelTunables = false; + ProtectControlGroups = true; + ReadWritePaths = "/var/lib/upower"; + ProtectHome = true; + PrivateTmp = true; + + # Network + # PrivateNetwork=true would block udev's netlink socket + RestrictAddressFamilies = "AF_UNIX AF_NETLINK"; + + # Execute Mappings + MemoryDenyWriteExecute = true; + + # Modules + ProtectKernelModules = true; + + # Real-time + RestrictRealtime = true; + + # Privilege escalation + NoNewPrivileges = true; }; }; diff --git a/nixos/modules/services/hardware/vdr.nix b/nixos/modules/services/hardware/vdr.nix new file mode 100644 index 00000000000..4822506a899 --- /dev/null +++ b/nixos/modules/services/hardware/vdr.nix @@ -0,0 +1,81 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.services.vdr; + libDir = "/var/lib/vdr"; +in { + + ###### interface + + options = { + + services.vdr = { + enable = mkEnableOption "enable VDR. Please put config into ${libDir}."; + + package = mkOption { + type = types.package; + default = pkgs.vdr; + defaultText = "pkgs.vdr"; + example = literalExample "pkgs.wrapVdr.override { plugins = with pkgs.vdrPlugins; [ hello ]; }"; + description = "Package to use."; + }; + + videoDir = mkOption { + type = types.path; + default = "/srv/vdr/video"; + description = "Recording directory"; + }; + + extraArguments = mkOption { + type = types.listOf types.str; + default = []; + description = "Additional command line arguments to pass to VDR."; + }; + + enableLirc = mkEnableOption "enable LIRC"; + }; + }; + + ###### implementation + + config = mkIf cfg.enable (mkMerge [{ + systemd.tmpfiles.rules = [ + "d ${cfg.videoDir} 0755 vdr vdr -" + "Z ${cfg.videoDir} - vdr vdr -" + ]; + + systemd.services.vdr = { + description = "VDR"; + wantedBy = [ "multi-user.target" ]; + serviceConfig = { + ExecStart = '' + ${cfg.package}/bin/vdr \ + --video="${cfg.videoDir}" \ + --config="${libDir}" \ + ${escapeShellArgs cfg.extraArguments} + ''; + User = "vdr"; + CacheDirectory = "vdr"; + StateDirectory = "vdr"; + Restart = "on-failure"; + }; + }; + + users.users.vdr = { + group = "vdr"; + home = libDir; + }; + + users.groups.vdr = {}; + } + + (mkIf cfg.enableLirc { + services.lirc.enable = true; + users.users.vdr.extraGroups = [ "lirc" ]; + services.vdr.extraArguments = [ + "--lirc=${config.passthru.lirc.socket}" + ]; + })]); +} diff --git a/nixos/modules/services/mail/clamsmtp.nix b/nixos/modules/services/mail/clamsmtp.nix index 8f4f39aa728..fc1267c5d28 100644 --- a/nixos/modules/services/mail/clamsmtp.nix +++ b/nixos/modules/services/mail/clamsmtp.nix @@ -176,4 +176,6 @@ in } ) cfg.instances); }; + + meta.maintainers = with lib.maintainers; [ ekleog ]; } diff --git a/nixos/modules/services/mail/dkimproxy-out.nix b/nixos/modules/services/mail/dkimproxy-out.nix index 894b88e25c1..f4ac9e47007 100644 --- a/nixos/modules/services/mail/dkimproxy-out.nix +++ b/nixos/modules/services/mail/dkimproxy-out.nix @@ -115,4 +115,6 @@ in }; }; }; + + meta.maintainers = with lib.maintainers; [ ekleog ]; } diff --git a/nixos/modules/services/mail/dovecot.nix b/nixos/modules/services/mail/dovecot.nix index e6091182b2a..30ad7d82fb8 100644 --- a/nixos/modules/services/mail/dovecot.nix +++ b/nixos/modules/services/mail/dovecot.nix @@ -311,7 +311,7 @@ in { name = "dovenull"; uid = config.ids.uids.dovenull2; description = "Dovecot user for untrusted logins"; - group = cfg.group; + group = "dovenull"; } ] ++ optional (cfg.user == "dovecot2") { name = "dovecot2"; @@ -332,6 +332,10 @@ in } ++ optional (cfg.createMailUser && cfg.mailGroup != null) { name = cfg.mailGroup; + } + ++ singleton + { name = "dovenull"; + gid = config.ids.gids.dovenull2; }; environment.etc."dovecot/modules".source = modulesDir; diff --git a/nixos/modules/services/mail/postfix.nix b/nixos/modules/services/mail/postfix.nix index 33249aa3e55..d43733484ff 100644 --- a/nixos/modules/services/mail/postfix.nix +++ b/nixos/modules/services/mail/postfix.nix @@ -602,7 +602,7 @@ in target = "postfix"; }; - # This makes comfortable for root to run 'postqueue' for example. + # This makes it comfortable to run 'postqueue/postdrop' for example. systemPackages = [ pkgs.postfix ]; }; @@ -616,6 +616,22 @@ in setgid = true; }; + security.wrappers.postqueue = { + program = "postqueue"; + source = "${pkgs.postfix}/bin/postqueue"; + group = setgidGroup; + setuid = false; + setgid = true; + }; + + security.wrappers.postdrop = { + program = "postdrop"; + source = "${pkgs.postfix}/bin/postdrop"; + group = setgidGroup; + setuid = false; + setgid = true; + }; + users.users = optional (user == "postfix") { name = "postfix"; description = "Postfix mail server user"; diff --git a/nixos/modules/services/mail/rmilter.nix b/nixos/modules/services/mail/rmilter.nix index 0d91b247cd3..492c6458321 100644 --- a/nixos/modules/services/mail/rmilter.nix +++ b/nixos/modules/services/mail/rmilter.nix @@ -52,7 +52,7 @@ in enable = mkOption { type = types.bool; - default = cfg.rspamd.enable; + default = false; description = "Whether to run the rmilter daemon."; }; diff --git a/nixos/modules/services/mail/roundcube.nix b/nixos/modules/services/mail/roundcube.nix new file mode 100644 index 00000000000..6d81c7374f4 --- /dev/null +++ b/nixos/modules/services/mail/roundcube.nix @@ -0,0 +1,153 @@ +{ lib, config, pkgs, ... }: + +with lib; + +let + cfg = config.services.roundcube; +in +{ + options.services.roundcube = { + enable = mkOption { + type = types.bool; + default = false; + description = '' + Whether to enable roundcube. + + Also enables nginx virtual host management. + Further nginx configuration can be done by adapting services.nginx.virtualHosts.<name>. + See for further information. + ''; + }; + + hostName = mkOption { + type = types.str; + example = "webmail.example.com"; + description = "Hostname to use for the nginx vhost"; + }; + + database = { + username = mkOption { + type = types.str; + default = "roundcube"; + description = "Username for the postgresql connection"; + }; + host = mkOption { + type = types.str; + default = "localhost"; + description = '' + Host of the postgresql server. If this is not set to + localhost, you have to create the + postgresql user and database yourself, with appropriate + permissions. + ''; + }; + password = mkOption { + type = types.str; + description = "Password for the postgresql connection"; + }; + dbname = mkOption { + type = types.str; + default = "roundcube"; + description = "Name of the postgresql database"; + }; + }; + + plugins = mkOption { + type = types.listOf types.str; + default = []; + description = '' + List of roundcube plugins to enable. Currently, only those directly shipped with Roundcube are supported. + ''; + }; + + extraConfig = mkOption { + type = types.lines; + default = ""; + description = "Extra configuration for roundcube webmail instance"; + }; + }; + + config = mkIf cfg.enable { + environment.etc."roundcube/config.inc.php".text = '' + proxy is + deprecated and only kept for backwards compatibility and should be + replaced with rspamd_proxy. + ''; + apply = let + from = "services.rspamd.workers.\”${name}\".type"; + files = options.type.files; + warning = "The option `${from}` defined in ${showFiles files} has enum value `proxy` which has been renamed to `rspamd_proxy`"; + in x: if x == "proxy" then traceWarning warning "rspamd_proxy" else x; }; bindSockets = mkOption { type = types.listOf (types.either types.str (types.submodule bindSocketOpts)); @@ -99,19 +111,21 @@ let description = "Additional entries to put verbatim into worker section of rspamd config file."; }; }; - config = mkIf (name == "normal" || name == "controller" || name == "fuzzy") { + config = mkIf (name == "normal" || name == "controller" || name == "fuzzy" || name == "rspamd_proxy") { type = mkDefault name; - includes = mkDefault [ "$CONFDIR/worker-${name}.inc" ]; - bindSockets = mkDefault (if name == "normal" - then [{ - socket = "/run/rspamd/rspamd.sock"; - mode = "0660"; - owner = cfg.user; - group = cfg.group; - }] - else if name == "controller" - then [ "localhost:11334" ] - else [] ); + includes = mkDefault [ "$CONFDIR/worker-${if name == "rspamd_proxy" then "proxy" else name}.inc" ]; + bindSockets = + let + unixSocket = name: { + mode = "0660"; + socket = "/run/rspamd/${name}.sock"; + owner = cfg.user; + group = cfg.group; + }; + in mkDefault (if name == "normal" then [(unixSocket "rspamd")] + else if name == "controller" then [ "localhost:11334" ] + else if name == "rspamd_proxy" then [ (unixSocket "proxy") ] + else [] ); }; }; @@ -127,28 +141,83 @@ let options { pidfile = "$RUNDIR/rspamd.pid"; .include "$CONFDIR/options.inc" + .include(try=true; priority=1,duplicate=merge) "$LOCAL_CONFDIR/local.d/options.inc" + .include(try=true; priority=10) "$LOCAL_CONFDIR/override.d/options.inc" } logging { type = "syslog"; .include "$CONFDIR/logging.inc" + .include(try=true; priority=1,duplicate=merge) "$LOCAL_CONFDIR/local.d/logging.inc" + .include(try=true; priority=10) "$LOCAL_CONFDIR/override.d/logging.inc" } - ${concatStringsSep "\n" (mapAttrsToList (name: value: '' - worker ${optionalString (value.name != "normal" && value.name != "controller") "${value.name}"} { + ${concatStringsSep "\n" (mapAttrsToList (name: value: let + includeName = if name == "rspamd_proxy" then "proxy" else name; + tryOverride = if value.extraConfig == "" then "true" else "false"; + in '' + worker "${value.type}" { type = "${value.type}"; ${optionalString (value.enable != null) "enabled = ${if value.enable != false then "yes" else "no"};"} ${mkBindSockets value.enable value.bindSockets} ${optionalString (value.count != null) "count = ${toString value.count};"} ${concatStringsSep "\n " (map (each: ".include \"${each}\"") value.includes)} - ${value.extraConfig} + .include(try=true; priority=1,duplicate=merge) "$LOCAL_CONFDIR/local.d/worker-${includeName}.inc" + .include(try=${tryOverride}; priority=10) "$LOCAL_CONFDIR/override.d/worker-${includeName}.inc" } '') cfg.workers)} - ${cfg.extraConfig} + ${optionalString (cfg.extraConfig != "") '' + .include(priority=10) "$LOCAL_CONFDIR/override.d/extra-config.inc" + ''} ''; + filterFiles = files: filterAttrs (n: v: v.enable) files; + rspamdDir = pkgs.linkFarm "etc-rspamd-dir" ( + (mapAttrsToList (name: file: { name = "local.d/${name}"; path = file.source; }) (filterFiles cfg.locals)) ++ + (mapAttrsToList (name: file: { name = "override.d/${name}"; path = file.source; }) (filterFiles cfg.overrides)) ++ + (optional (cfg.localLuaRules != null) { name = "rspamd.local.lua"; path = cfg.localLuaRules; }) ++ + [ { name = "rspamd.conf"; path = rspamdConfFile; } ] + ); + + configFileModule = prefix: { name, config, ... }: { + options = { + enable = mkOption { + type = types.bool; + default = true; + description = '' + Whether this file ${prefix} should be generated. This + option allows specific ${prefix} files to be disabled. + ''; + }; + + text = mkOption { + default = null; + type = types.nullOr types.lines; + description = "Text of the file."; + }; + + source = mkOption { + type = types.path; + description = "Path of the source file."; + }; + }; + config = { + source = mkIf (config.text != null) ( + let name' = "rspamd-${prefix}-" + baseNameOf name; + in mkDefault (pkgs.writeText name' config.text)); + }; + }; + + configOverrides = + (mapAttrs' (n: v: nameValuePair "worker-${if n == "rspamd_proxy" then "proxy" else n}.inc" { + text = v.extraConfig; + }) + (filterAttrs (n: v: v.extraConfig != "") cfg.workers)) + // (if cfg.extraConfig == "" then {} else { + "extra-config.inc".text = cfg.extraConfig; + }); in { @@ -159,7 +228,7 @@ in services.rspamd = { - enable = mkEnableOption "Whether to run the rspamd daemon."; + enable = mkEnableOption "rspamd, the Rapid spam filtering system"; debug = mkOption { type = types.bool; @@ -167,6 +236,41 @@ in description = "Whether to run the rspamd daemon in debug mode."; }; + locals = mkOption { + type = with types; attrsOf (submodule (configFileModule "locals")); + default = {}; + description = '' + Local configuration files, written into /etc/rspamd/local.d/{name}. + ''; + example = literalExample '' + { "redis.conf".source = "/nix/store/.../etc/dir/redis.conf"; + "arc.conf".text = "allow_envfrom_empty = true;"; + } + ''; + }; + + overrides = mkOption { + type = with types; attrsOf (submodule (configFileModule "overrides")); + default = {}; + description = '' + Overridden configuration files, written into /etc/rspamd/override.d/{name}. + ''; + example = literalExample '' + { "redis.conf".source = "/nix/store/.../etc/dir/redis.conf"; + "arc.conf".text = "allow_envfrom_empty = true;"; + } + ''; + }; + + localLuaRules = mkOption { + default = null; + type = types.nullOr types.path; + description = '' + Path of file to link to /etc/rspamd/rspamd.local.lua for local + rules written in Lua + ''; + }; + workers = mkOption { type = with types; attrsOf (submodule workerOpts); description = '' @@ -210,7 +314,7 @@ in description = '' User to use when no root privileges are required. ''; - }; + }; group = mkOption { type = types.string; @@ -218,7 +322,30 @@ in description = '' Group to use when no root privileges are required. ''; - }; + }; + + postfix = { + enable = mkOption { + type = types.bool; + default = false; + description = "Add rspamd milter to postfix main.conf"; + }; + + config = mkOption { + type = with types; attrsOf (either bool (either str (listOf str))); + description = '' + Addon to postfix configuration + ''; + default = { + smtpd_milters = ["unix:/run/rspamd/rspamd-milter.sock"]; + non_smtpd_milters = ["unix:/run/rspamd/rspamd-milter.sock"]; + }; + example = { + smtpd_milters = ["unix:/run/rspamd/rspamd-milter.sock"]; + non_smtpd_milters = ["unix:/run/rspamd/rspamd-milter.sock"]; + }; + }; + }; }; }; @@ -226,6 +353,25 @@ in ###### implementation config = mkIf cfg.enable { + services.rspamd.overrides = configOverrides; + services.rspamd.workers = mkIf cfg.postfix.enable { + controller = {}; + rspamd_proxy = { + bindSockets = [ { + mode = "0660"; + socket = "/run/rspamd/rspamd-milter.sock"; + owner = cfg.user; + group = postfixCfg.group; + } ]; + extraConfig = '' + upstream "local" { + default = yes; # Self-scan upstreams are always default + self_scan = yes; # Enable self-scan + } + ''; + }; + }; + services.postfix.config = mkIf cfg.postfix.enable cfg.postfix.config; # Allow users to run 'rspamc' and 'rspamadm'. environment.systemPackages = [ pkgs.rspamd ]; @@ -242,16 +388,17 @@ in gid = config.ids.gids.rspamd; }; - environment.etc."rspamd.conf".source = rspamdConfFile; + environment.etc."rspamd".source = rspamdDir; systemd.services.rspamd = { description = "Rspamd Service"; wantedBy = [ "multi-user.target" ]; after = [ "network.target" ]; + restartTriggers = [ rspamdDir ]; serviceConfig = { - ExecStart = "${pkgs.rspamd}/bin/rspamd ${optionalString cfg.debug "-d"} --user=${cfg.user} --group=${cfg.group} --pid=/run/rspamd.pid -c ${rspamdConfFile} -f"; + ExecStart = "${pkgs.rspamd}/bin/rspamd ${optionalString cfg.debug "-d"} --user=${cfg.user} --group=${cfg.group} --pid=/run/rspamd.pid -c /etc/rspamd/rspamd.conf -f"; Restart = "always"; RuntimeDirectory = "rspamd"; PrivateTmp = true; diff --git a/nixos/modules/services/mail/rss2email.nix b/nixos/modules/services/mail/rss2email.nix new file mode 100644 index 00000000000..5f3b2877008 --- /dev/null +++ b/nixos/modules/services/mail/rss2email.nix @@ -0,0 +1,136 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.services.rss2email; +in { + + ###### interface + + options = { + + services.rss2email = { + + enable = mkOption { + type = types.bool; + default = false; + description = "Whether to enable rss2email."; + }; + + to = mkOption { + type = types.str; + description = "Mail address to which to send emails"; + }; + + interval = mkOption { + type = types.str; + default = "12h"; + description = "How often to check the feeds, in systemd interval format"; + }; + + config = mkOption { + type = with types; attrsOf (either str (either int bool)); + default = {}; + description = '' + The configuration to give rss2email. + + Default will use system-wide sendmail to send the + email. This is rss2email's default when running + r2e new. + + This set contains key-value associations that will be set in the + [DEFAULT] block along with the + to parameter. + + See + https://github.com/rss2email/rss2email/blob/master/r2e.1 + for more information on which parameters are accepted. + ''; + }; + + feeds = mkOption { + description = "The feeds to watch."; + type = types.attrsOf (types.submodule { + options = { + url = mkOption { + type = types.str; + description = "The URL at which to fetch the feed."; + }; + + to = mkOption { + type = with types; nullOr str; + default = null; + description = '' + Email address to which to send feed items. + + If null, this will not be set in the + configuration file, and rss2email will make it default to + rss2email.to. + ''; + }; + }; + }); + }; + }; + + }; + + + ###### implementation + + config = mkIf cfg.enable { + users.groups = { + rss2email.gid = config.ids.gids.rss2email; + }; + + users.users = { + rss2email = { + description = "rss2email user"; + uid = config.ids.uids.rss2email; + group = "rss2email"; + }; + }; + + services.rss2email.config.to = cfg.to; + + systemd.services.rss2email = let + conf = pkgs.writeText "rss2email.cfg" (lib.generators.toINI {} ({ + DEFAULT = cfg.config; + } // lib.mapAttrs' (name: feed: nameValuePair "feed.${name}" ( + { inherit (feed) url; } // + lib.optionalAttrs (feed.to != null) { inherit (feed) to; } + )) cfg.feeds + )); + in + { + preStart = '' + mkdir -p /var/rss2email + chmod 700 /var/rss2email + + cp ${conf} /var/rss2email/conf.cfg + if [ ! -f /var/rss2email/db.json ]; then + echo '{"version":2,"feeds":[]}' > /var/rss2email/db.json + fi + + chown -R rss2email:rss2email /var/rss2email + ''; + path = [ pkgs.system-sendmail ]; + serviceConfig = { + ExecStart = + "${pkgs.rss2email}/bin/r2e -c /var/rss2email/conf.cfg -d /var/rss2email/db.json run"; + User = "rss2email"; + PermissionsStartOnly = "true"; + }; + }; + + systemd.timers.rss2email = { + partOf = [ "rss2email.service" ]; + wantedBy = [ "timers.target" ]; + timerConfig.OnBootSec = "0"; + timerConfig.OnUnitActiveSec = cfg.interval; + }; + }; + + meta.maintainers = with lib.maintainers; [ ekleog ]; +} diff --git a/nixos/modules/services/misc/bees.nix b/nixos/modules/services/misc/bees.nix new file mode 100644 index 00000000000..b0ed2d5c286 --- /dev/null +++ b/nixos/modules/services/misc/bees.nix @@ -0,0 +1,123 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + + cfg = config.services.beesd; + + logLevels = { emerg = 0; alert = 1; crit = 2; err = 3; warning = 4; notice = 5; info = 6; debug = 7; }; + + fsOptions = with types; { + options.spec = mkOption { + type = str; + description = '' + Description of how to identify the filesystem to be duplicated by this + instance of bees. Note that deduplication crosses subvolumes; one must + not configure multiple instances for subvolumes of the same filesystem + (or block devices which are part of the same filesystem), but only for + completely independent btrfs filesystems. + + + This must be in a format usable by findmnt; that could be a key=value + pair, or a bare path to a mount point. + ''; + example = "LABEL=MyBulkDataDrive"; + }; + options.hashTableSizeMB = mkOption { + type = types.addCheck types.int (n: mod n 16 == 0); + default = 1024; # 1GB; default from upstream beesd script + description = '' + Hash table size in MB; must be a multiple of 16. + + + A larger ratio of index size to storage size means smaller blocks of + duplicate content are recognized. + + + If you have 1TB of data, a 4GB hash table (which is to say, a value of + 4096) will permit 4KB extents (the smallest possible size) to be + recognized, whereas a value of 1024 -- creating a 1GB hash table -- + will recognize only aligned duplicate blocks of 16KB. + ''; + }; + options.verbosity = mkOption { + type = types.enum (attrNames logLevels ++ attrValues logLevels); + apply = v: if isString v then logLevels.${v} else v; + default = "info"; + description = "Log verbosity (syslog keyword/level)."; + }; + options.workDir = mkOption { + type = str; + default = ".beeshome"; + description = '' + Name (relative to the root of the filesystem) of the subvolume where + the hash table will be stored. + ''; + }; + options.extraOptions = mkOption { + type = listOf str; + default = []; + description = '' + Extra command-line options passed to the daemon. See upstream bees documentation. + ''; + example = literalExample '' + [ "--thread-count" "4" ] + ''; + }; + }; + +in { + + options.services.beesd = { + filesystems = mkOption { + type = with types; attrsOf (submodule fsOptions); + description = "BTRFS filesystems to run block-level deduplication on."; + default = { }; + example = literalExample '' + { + root = { + spec = "LABEL=root"; + hashTableSizeMB = 2048; + verbosity = "crit"; + extraOptions = [ "--loadavg-target" "5.0" ]; + }; + } + ''; + }; + }; + config = { + systemd.services = mapAttrs' (name: fs: nameValuePair "beesd@${name}" { + description = "Block-level BTRFS deduplication for %i"; + after = [ "sysinit.target" ]; + + serviceConfig = let + configOpts = [ + fs.spec + "verbosity=${toString fs.verbosity}" + "idxSizeMB=${toString fs.hashTableSizeMB}" + "workDir=${fs.workDir}" + ]; + configOptsStr = escapeShellArgs configOpts; + in { + # Values from https://github.com/Zygo/bees/blob/v0.6.1/scripts/beesd%40.service.in + ExecStart = "${pkgs.bees}/bin/bees-service-wrapper run ${configOptsStr} -- --no-timestamps ${escapeShellArgs fs.extraOptions}"; + ExecStopPost = "${pkgs.bees}/bin/bees-service-wrapper cleanup ${configOptsStr}"; + CPUAccounting = true; + CPUWeight = 12; + IOSchedulingClass = "idle"; + IOSchedulingPriority = 7; + IOWeight = 10; + KillMode = "control-group"; + KillSignal = "SIGTERM"; + MemoryAccounting = true; + Nice = 19; + Restart = "on-abnormal"; + StartupCPUWeight = 25; + StartupIOWeight = 25; + SyslogIdentifier = "bees"; # would otherwise be "bees-service-wrapper" + }; + wantedBy = ["multi-user.target"]; + }) cfg.filesystems; + }; +} diff --git a/nixos/modules/services/misc/exhibitor.nix b/nixos/modules/services/misc/exhibitor.nix index a90c7f402e7..665084a8ae0 100644 --- a/nixos/modules/services/misc/exhibitor.nix +++ b/nixos/modules/services/misc/exhibitor.nix @@ -405,6 +405,9 @@ in cp -Rf ${pkgs.zookeeper}/* ${cfg.baseDir}/zookeeper chown -R zookeeper ${cfg.baseDir}/zookeeper/conf chmod -R u+w ${cfg.baseDir}/zookeeper/conf + replace_what=$(echo ${pkgs.zookeeper} | sed 's/[\/&]/\\&/g') + replace_with=$(echo ${cfg.baseDir}/zookeeper | sed 's/[\/&]/\\&/g') + sed -i 's/'"$replace_what"'/'"$replace_with"'/g' ${cfg.baseDir}/zookeeper/bin/zk*.sh ''; }; users.users = singleton { diff --git a/nixos/modules/services/misc/gitea.nix b/nixos/modules/services/misc/gitea.nix index a222325579f..be4d3871978 100644 --- a/nixos/modules/services/misc/gitea.nix +++ b/nixos/modules/services/misc/gitea.nix @@ -6,6 +6,7 @@ let cfg = config.services.gitea; gitea = cfg.package; pg = config.services.postgresql; + useMysql = cfg.database.type == "mysql"; usePostgresql = cfg.database.type == "postgres"; configFile = pkgs.writeText "app.ini" '' APP_NAME = ${cfg.appName} @@ -14,7 +15,7 @@ let [database] DB_TYPE = ${cfg.database.type} - HOST = ${cfg.database.host}:${toString cfg.database.port} + HOST = ${if cfg.database.socket != null then cfg.database.socket else cfg.database.host + ":" + toString cfg.database.port} NAME = ${cfg.database.name} USER = ${cfg.database.user} PASSWD = #dbpass# @@ -45,6 +46,9 @@ let ROOT_PATH = ${cfg.log.rootPath} LEVEL = ${cfg.log.level} + [service] + DISABLE_REGISTRATION = ${boolToString cfg.disableRegistration} + ${cfg.extraConfig} ''; in @@ -148,6 +152,13 @@ in ''; }; + socket = mkOption { + type = types.nullOr types.path; + default = null; + example = "/run/mysqld/mysqld.sock"; + description = "Path to the unix socket file to use for authentication."; + }; + path = mkOption { type = types.str; default = "${cfg.stateDir}/data/gitea.db"; @@ -240,6 +251,18 @@ in description = "Upper level of template and static files path."; }; + disableRegistration = mkEnableOption "the registration lock" // { + description = '' + By default any user can create an account on this gitea instance. + This can be disabled by using this option. + + Note: please keep in mind that this should be added after the initial + deploy unless services.gitea.useWizard + is true as the first registered user will be the administrator if + no install wizard is used. + ''; + }; + extraConfig = mkOption { type = types.str; default = ""; @@ -253,9 +276,9 @@ in systemd.services.gitea = { description = "gitea"; - after = [ "network.target" "postgresql.service" ]; + after = [ "network.target" ] ++ lib.optional usePostgresql "postgresql.service" ++ lib.optional useMysql "mysql.service"; wantedBy = [ "multi-user.target" ]; - path = [ gitea.bin ]; + path = [ gitea.bin pkgs.gitAndTools.git ]; preStart = let runConfig = "${cfg.stateDir}/custom/conf/app.ini"; diff --git a/nixos/modules/services/misc/gitlab.nix b/nixos/modules/services/misc/gitlab.nix index d81aa5643e5..769a9526cf6 100644 --- a/nixos/modules/services/misc/gitlab.nix +++ b/nixos/modules/services/misc/gitlab.nix @@ -14,15 +14,16 @@ let pathUrlQuote = url: replaceStrings ["/"] ["%2F"] url; pgSuperUser = config.services.postgresql.superUser; - databaseYml = '' - production: - adapter: postgresql - database: ${cfg.databaseName} - host: ${cfg.databaseHost} - password: ${cfg.databasePassword} - username: ${cfg.databaseUsername} - encoding: utf8 - ''; + databaseConfig = { + production = { + adapter = "postgresql"; + database = cfg.databaseName; + host = cfg.databaseHost; + password = cfg.databasePassword; + username = cfg.databaseUsername; + encoding = "utf8"; + }; + }; gitalyToml = pkgs.writeText "gitaly.toml" '' socket_path = "${lib.escape ["\""] gitalySocket}" @@ -45,34 +46,31 @@ let '') gitlabConfig.production.repositories.storages))} ''; - gitlabShellYml = '' - user: ${cfg.user} - gitlab_url: "http+unix://${pathUrlQuote gitlabSocket}" - http_settings: - self_signed_cert: false - repos_path: "${cfg.statePath}/repositories" - secret_file: "${cfg.statePath}/config/gitlab_shell_secret" - log_file: "${cfg.statePath}/log/gitlab-shell.log" - redis: - bin: ${pkgs.redis}/bin/redis-cli - host: 127.0.0.1 - port: 6379 - database: 0 - namespace: resque:gitlab - ''; + gitlabShellConfig = { + user = cfg.user; + gitlab_url = "http+unix://${pathUrlQuote gitlabSocket}"; + http_settings.self_signed_cert = false; + repos_path = "${cfg.statePath}/repositories"; + secret_file = "${cfg.statePath}/config/gitlab_shell_secret"; + log_file = "${cfg.statePath}/log/gitlab-shell.log"; + custom_hooks_dir = "${cfg.statePath}/custom_hooks"; + redis = { + bin = "${pkgs.redis}/bin/redis-cli"; + host = "127.0.0.1"; + port = 6379; + database = 0; + namespace = "resque:gitlab"; + }; + }; - redisYml = '' - production: - url: redis://localhost:6379/ - ''; + redisConfig.production.url = "redis://localhost:6379/"; - secretsYml = '' - production: - secret_key_base: ${cfg.secrets.secret} - otp_key_base: ${cfg.secrets.otp} - db_key_base: ${cfg.secrets.db} - openid_connect_signing_key: ${builtins.toJSON cfg.secrets.jws} - ''; + secretsConfig.production = { + secret_key_base = cfg.secrets.secret; + otp_key_base = cfg.secrets.otp; + db_key_base = cfg.secrets.db; + openid_connect_signing_key = cfg.secrets.jws; + }; gitlabConfig = { # These are the default settings from config/gitlab.example.yml @@ -114,12 +112,8 @@ let upload_pack = true; receive_pack = true; }; - workhorse = { - secret_file = "${cfg.statePath}/.gitlab_workhorse_secret"; - }; - git = { - bin_path = "git"; - }; + workhorse.secret_file = "${cfg.statePath}/.gitlab_workhorse_secret"; + git.bin_path = "git"; monitoring = { ip_whitelist = [ "127.0.0.0/8" "::1/128" ]; sidekiq_exporter = { @@ -137,7 +131,7 @@ let HOME = "${cfg.statePath}/home"; UNICORN_PATH = "${cfg.statePath}/"; GITLAB_PATH = "${cfg.packages.gitlab}/share/gitlab/"; - GITLAB_STATE_PATH = "${cfg.statePath}"; + GITLAB_STATE_PATH = cfg.statePath; GITLAB_UPLOADS_PATH = "${cfg.statePath}/uploads"; SCHEMA = "${cfg.statePath}/db/schema.rb"; GITLAB_LOG_PATH = "${cfg.statePath}/log"; @@ -145,13 +139,11 @@ let GITLAB_SHELL_CONFIG_PATH = "${cfg.statePath}/shell/config.yml"; GITLAB_SHELL_SECRET_PATH = "${cfg.statePath}/config/gitlab_shell_secret"; GITLAB_SHELL_HOOKS_PATH = "${cfg.statePath}/shell/hooks"; - GITLAB_REDIS_CONFIG_FILE = pkgs.writeText "gitlab-redis.yml" redisYml; + GITLAB_REDIS_CONFIG_FILE = pkgs.writeText "redis.yml" (builtins.toJSON redisConfig); prometheus_multiproc_dir = "/run/gitlab"; RAILS_ENV = "production"; }; - unicornConfig = builtins.readFile ./defaultUnicornConfig.rb; - gitlab-rake = pkgs.stdenv.mkDerivation rec { name = "gitlab-rake"; buildInputs = [ pkgs.makeWrapper ]; @@ -161,7 +153,6 @@ let mkdir -p $out/bin makeWrapper ${cfg.packages.gitlab.rubyEnv}/bin/rake $out/bin/gitlab-rake \ ${concatStrings (mapAttrsToList (name: value: "--set ${name} '${value}' ") gitlabEnv)} \ - --set GITLAB_CONFIG_PATH '${cfg.statePath}/config' \ --set PATH '${lib.makeBinPath [ pkgs.nodejs pkgs.gzip pkgs.git pkgs.gnutar config.services.postgresql.package pkgs.coreutils pkgs.procps ]}:$PATH' \ --set RAKEOPT '-f ${cfg.packages.gitlab}/share/gitlab/Rakefile' \ --run 'cd ${cfg.packages.gitlab}/share/gitlab' @@ -305,7 +296,6 @@ in { initialRootPassword = mkOption { type = types.str; - default = "UseNixOS!"; description = '' Initial password of the root account if this is a new install. ''; @@ -460,10 +450,30 @@ in { } ]; + systemd.tmpfiles.rules = [ + "d /run/gitlab 0755 ${cfg.user} ${cfg.group} -" + "d ${gitlabEnv.HOME} 0750 ${cfg.user} ${cfg.group} -" + "d ${cfg.backupPath} 0750 ${cfg.user} ${cfg.group} -" + "d ${cfg.statePath}/builds 0750 ${cfg.user} ${cfg.group} -" + "d ${cfg.statePath}/config 0750 ${cfg.user} ${cfg.group} -" + "d ${cfg.statePath}/db 0750 ${cfg.user} ${cfg.group} -" + "d ${cfg.statePath}/log 0750 ${cfg.user} ${cfg.group} -" + "d ${cfg.statePath}/repositories 2770 ${cfg.user} ${cfg.group} -" + "d ${cfg.statePath}/shell 0750 ${cfg.user} ${cfg.group} -" + "d ${cfg.statePath}/tmp/pids 0750 ${cfg.user} ${cfg.group} -" + "d ${cfg.statePath}/tmp/sockets 0750 ${cfg.user} ${cfg.group} -" + "d ${cfg.statePath}/uploads 0700 ${cfg.user} ${cfg.group} -" + "d ${cfg.statePath}/custom_hooks/pre-receive.d 0700 ${cfg.user} ${cfg.group} -" + "d ${cfg.statePath}/custom_hooks/post-receive.d 0700 ${cfg.user} ${cfg.group} -" + "d ${cfg.statePath}/custom_hooks/update.d 0700 ${cfg.user} ${cfg.group} -" + "d ${gitlabConfig.production.shared.path}/artifacts 0750 ${cfg.user} ${cfg.group} -" + "d ${gitlabConfig.production.shared.path}/lfs-objects 0750 ${cfg.user} ${cfg.group} -" + "d ${gitlabConfig.production.shared.path}/pages 0750 ${cfg.user} ${cfg.group} -" + ]; + systemd.services.gitlab-sidekiq = { - after = [ "network.target" "redis.service" ]; + after = [ "network.target" "redis.service" "gitlab.service" ]; wantedBy = [ "multi-user.target" ]; - partOf = [ "gitlab.service" ]; environment = gitlabEnv; path = with pkgs; [ config.services.postgresql.package @@ -485,10 +495,8 @@ in { }; systemd.services.gitaly = { - after = [ "network.target" "gitlab.service" ]; + after = [ "network.target" ]; wantedBy = [ "multi-user.target" ]; - environment.HOME = gitlabEnv.HOME; - environment.GITLAB_SHELL_CONFIG_PATH = gitlabEnv.GITLAB_SHELL_CONFIG_PATH; path = with pkgs; [ gitAndTools.git cfg.packages.gitaly.rubyEnv cfg.packages.gitaly.rubyEnv.wrappedRuby ]; serviceConfig = { Type = "simple"; @@ -504,8 +512,6 @@ in { systemd.services.gitlab-workhorse = { after = [ "network.target" ]; wantedBy = [ "multi-user.target" ]; - environment.HOME = gitlabEnv.HOME; - environment.GITLAB_SHELL_CONFIG_PATH = gitlabEnv.GITLAB_SHELL_CONFIG_PATH; path = with pkgs; [ gitAndTools.git gnutar @@ -513,10 +519,6 @@ in { openssh gitlab-workhorse ]; - preStart = '' - mkdir -p /run/gitlab - chown ${cfg.user}:${cfg.group} /run/gitlab - ''; serviceConfig = { PermissionsStartOnly = true; # preStart must be run as root Type = "simple"; @@ -537,7 +539,7 @@ in { }; systemd.services.gitlab = { - after = [ "network.target" "postgresql.service" "redis.service" ]; + after = [ "gitlab-workhorse.service" "gitaly.service" "network.target" "postgresql.service" "redis.service" ]; requires = [ "gitlab-sidekiq.service" ]; wantedBy = [ "multi-user.target" ]; environment = gitlabEnv; @@ -550,99 +552,72 @@ in { gnupg ]; preStart = '' - mkdir -p ${cfg.backupPath} - mkdir -p ${cfg.statePath}/builds - mkdir -p ${cfg.statePath}/repositories - mkdir -p ${gitlabConfig.production.shared.path}/artifacts - mkdir -p ${gitlabConfig.production.shared.path}/lfs-objects - mkdir -p ${gitlabConfig.production.shared.path}/pages - mkdir -p ${cfg.statePath}/log - mkdir -p ${cfg.statePath}/tmp/pids - mkdir -p ${cfg.statePath}/tmp/sockets - mkdir -p ${cfg.statePath}/shell - mkdir -p ${cfg.statePath}/db - mkdir -p ${cfg.statePath}/uploads - - rm -rf ${cfg.statePath}/config ${cfg.statePath}/shell/hooks - mkdir -p ${cfg.statePath}/config - - ${pkgs.openssl}/bin/openssl rand -hex 32 > ${cfg.statePath}/config/gitlab_shell_secret - - mkdir -p /run/gitlab - mkdir -p ${cfg.statePath}/log - [ -d /run/gitlab/log ] || ln -sf ${cfg.statePath}/log /run/gitlab/log - [ -d /run/gitlab/tmp ] || ln -sf ${cfg.statePath}/tmp /run/gitlab/tmp - [ -d /run/gitlab/uploads ] || ln -sf ${cfg.statePath}/uploads /run/gitlab/uploads - ln -sf $GITLAB_SHELL_CONFIG_PATH /run/gitlab/shell-config.yml - chown -R ${cfg.user}:${cfg.group} /run/gitlab - - # Prepare home directory - mkdir -p ${gitlabEnv.HOME}/.ssh - touch ${gitlabEnv.HOME}/.ssh/authorized_keys - chown -R ${cfg.user}:${cfg.group} ${gitlabEnv.HOME}/ - cp -rf ${cfg.packages.gitlab}/share/gitlab/db/* ${cfg.statePath}/db + rm -rf ${cfg.statePath}/config + mkdir ${cfg.statePath}/config + if [ -e ${cfg.statePath}/lib ]; then + rm ${cfg.statePath}/lib + fi + + ln -sf ${cfg.packages.gitlab}/share/gitlab/lib ${cfg.statePath}/lib + [ -L /run/gitlab/config ] || ln -sf ${cfg.statePath}/config /run/gitlab/config + [ -L /run/gitlab/log ] || ln -sf ${cfg.statePath}/log /run/gitlab/log + [ -L /run/gitlab/tmp ] || ln -sf ${cfg.statePath}/tmp /run/gitlab/tmp + [ -L /run/gitlab/uploads ] || ln -sf ${cfg.statePath}/uploads /run/gitlab/uploads + cp ${cfg.packages.gitlab}/share/gitlab/VERSION ${cfg.statePath}/VERSION cp -rf ${cfg.packages.gitlab}/share/gitlab/config.dist/* ${cfg.statePath}/config ${optionalString cfg.smtp.enable '' ln -sf ${smtpSettings} ${cfg.statePath}/config/initializers/smtp_settings.rb ''} - ln -sf ${cfg.statePath}/config /run/gitlab/config - if [ -e ${cfg.statePath}/lib ]; then - rm ${cfg.statePath}/lib - fi - ln -sf ${pkgs.gitlab}/share/gitlab/lib ${cfg.statePath}/lib - cp ${cfg.packages.gitlab}/share/gitlab/VERSION ${cfg.statePath}/VERSION + ${pkgs.openssl}/bin/openssl rand -hex 32 > ${cfg.statePath}/config/gitlab_shell_secret # JSON is a subset of YAML - ln -fs ${pkgs.writeText "gitlab.yml" (builtins.toJSON gitlabConfig)} ${cfg.statePath}/config/gitlab.yml - ln -fs ${pkgs.writeText "database.yml" databaseYml} ${cfg.statePath}/config/database.yml - ln -fs ${pkgs.writeText "secrets.yml" secretsYml} ${cfg.statePath}/config/secrets.yml - ln -fs ${pkgs.writeText "unicorn.rb" unicornConfig} ${cfg.statePath}/config/unicorn.rb + ln -sf ${pkgs.writeText "gitlab.yml" (builtins.toJSON gitlabConfig)} ${cfg.statePath}/config/gitlab.yml + ln -sf ${pkgs.writeText "database.yml" (builtins.toJSON databaseConfig)} ${cfg.statePath}/config/database.yml + ln -sf ${pkgs.writeText "secrets.yml" (builtins.toJSON secretsConfig)} ${cfg.statePath}/config/secrets.yml + ln -sf ${./defaultUnicornConfig.rb} ${cfg.statePath}/config/unicorn.rb + + # Install the shell required to push repositories + ln -sf ${pkgs.writeText "config.yml" (builtins.toJSON gitlabShellConfig)} /run/gitlab/shell-config.yml + [ -L ${cfg.statePath}/shell/hooks ] || ln -sf ${cfg.packages.gitlab-shell}/hooks ${cfg.statePath}/shell/hooks + ${cfg.packages.gitlab-shell}/bin/install chown -R ${cfg.user}:${cfg.group} ${cfg.statePath}/ chmod -R ug+rwX,o-rwx+X ${cfg.statePath}/ + chown -R ${cfg.user}:${cfg.group} /run/gitlab - # Install the shell required to push repositories - ln -fs ${pkgs.writeText "config.yml" gitlabShellYml} "$GITLAB_SHELL_CONFIG_PATH" - ln -fs ${cfg.packages.gitlab-shell}/hooks "$GITLAB_SHELL_HOOKS_PATH" - ${cfg.packages.gitlab-shell}/bin/install - - if [ "${cfg.databaseHost}" = "127.0.0.1" ]; then - if ! test -e "${cfg.statePath}/db-created"; then + if ! test -e "${cfg.statePath}/db-created"; then + if [ "${cfg.databaseHost}" = "127.0.0.1" ]; then ${pkgs.sudo}/bin/sudo -u ${pgSuperUser} psql postgres -c "CREATE ROLE ${cfg.databaseUsername} WITH LOGIN NOCREATEDB NOCREATEROLE ENCRYPTED PASSWORD '${cfg.databasePassword}'" ${pkgs.sudo}/bin/sudo -u ${pgSuperUser} ${config.services.postgresql.package}/bin/createdb --owner ${cfg.databaseUsername} ${cfg.databaseName} - touch "${cfg.statePath}/db-created" + + # enable required pg_trgm extension for gitlab + ${pkgs.sudo}/bin/sudo -u ${pgSuperUser} psql ${cfg.databaseName} -c "CREATE EXTENSION IF NOT EXISTS pg_trgm" fi - # enable required pg_trgm extension for gitlab - ${pkgs.sudo}/bin/sudo -u ${pgSuperUser} psql ${cfg.databaseName} -c "CREATE EXTENSION IF NOT EXISTS pg_trgm" + ${pkgs.sudo}/bin/sudo -u ${cfg.user} -H ${gitlab-rake}/bin/gitlab-rake db:schema:load + + touch "${cfg.statePath}/db-created" fi # Always do the db migrations just to be sure the database is up-to-date - ${gitlab-rake}/bin/gitlab-rake db:migrate RAILS_ENV=production + ${pkgs.sudo}/bin/sudo -u ${cfg.user} -H ${gitlab-rake}/bin/gitlab-rake db:migrate - # The gitlab:setup task is horribly broken somehow, the db:migrate - # task above and the db:seed_fu below will do the same for setting - # up the initial database if ! test -e "${cfg.statePath}/db-seeded"; then - ${gitlab-rake}/bin/gitlab-rake db:seed_fu RAILS_ENV=production \ + ${pkgs.sudo}/bin/sudo -u ${cfg.user} ${gitlab-rake}/bin/gitlab-rake db:seed_fu \ GITLAB_ROOT_PASSWORD='${cfg.initialRootPassword}' GITLAB_ROOT_EMAIL='${cfg.initialRootEmail}' touch "${cfg.statePath}/db-seeded" fi - # The gitlab:shell:setup regenerates the authorized_keys file so that - # the store path to the gitlab-shell in it gets updated - ${pkgs.sudo}/bin/sudo -u ${cfg.user} force=yes ${gitlab-rake}/bin/gitlab-rake gitlab:shell:setup RAILS_ENV=production - # The gitlab:shell:create_hooks task seems broken for fixing links # so we instead delete all the hooks and create them anew rm -f ${cfg.statePath}/repositories/**/*.git/hooks - ${gitlab-rake}/bin/gitlab-rake gitlab:shell:create_hooks RAILS_ENV=production + ${pkgs.sudo}/bin/sudo -u ${cfg.user} -H ${gitlab-rake}/bin/gitlab-rake gitlab:shell:create_hooks + + ${pkgs.sudo}/bin/sudo -u ${cfg.user} -H ${pkgs.git}/bin/git config --global core.autocrlf "input" # Change permissions in the last step because some of the # intermediary scripts like to create directories as root. - chown -R ${cfg.user}:${cfg.group} ${cfg.statePath} - chmod -R ug+rwX,o-rwx+X ${cfg.statePath} chmod -R u+rwX,go-rwx+X ${gitlabEnv.HOME} chmod -R ug+rwX,o-rwx ${cfg.statePath}/repositories chmod -R ug-s ${cfg.statePath}/repositories diff --git a/nixos/modules/services/misc/home-assistant.nix b/nixos/modules/services/misc/home-assistant.nix index 0756e81612a..2e9aa33aeee 100644 --- a/nixos/modules/services/misc/home-assistant.nix +++ b/nixos/modules/services/misc/home-assistant.nix @@ -157,6 +157,7 @@ in { Restart = "on-failure"; ProtectSystem = "strict"; ReadWritePaths = "${cfg.configDir}"; + KillSignal = "SIGINT"; PrivateTmp = true; RemoveIPC = true; }; diff --git a/nixos/modules/services/misc/nix-daemon.nix b/nixos/modules/services/misc/nix-daemon.nix index 24379ec2735..9a8116a03e8 100644 --- a/nixos/modules/services/misc/nix-daemon.nix +++ b/nixos/modules/services/misc/nix-daemon.nix @@ -62,11 +62,15 @@ let ''} $extraOptions END - '' + optionalString cfg.checkConfig '' - echo "Checking that Nix can read nix.conf..." - ln -s $out ./nix.conf - NIX_CONF_DIR=$PWD ${cfg.package}/bin/nix show-config >/dev/null - ''); + '' + optionalString cfg.checkConfig ( + if pkgs.stdenv.hostPlatform != pkgs.stdenv.buildPlatform then '' + echo "Ignore nix.checkConfig when cross-compiling" + '' else '' + echo "Checking that Nix can read nix.conf..." + ln -s $out ./nix.conf + NIX_CONF_DIR=$PWD ${cfg.package}/bin/nix show-config >/dev/null + '') + ); in @@ -113,11 +117,11 @@ in buildCores = mkOption { type = types.int; - default = 1; + default = 0; example = 64; description = '' This option defines the maximum number of concurrent tasks during - one build. It affects, e.g., -j option for make. The default is 1. + one build. It affects, e.g., -j option for make. The special value 0 means that the builder should use all available CPU cores in the system. Some builds may become non-deterministic with this option; use with care! Packages will @@ -399,8 +403,8 @@ in systemd.sockets.nix-daemon.wantedBy = [ "sockets.target" ]; systemd.services.nix-daemon = - { path = [ nix pkgs.utillinux ] - ++ optionals cfg.distributedBuilds [ config.programs.ssh.package pkgs.gzip ] + { path = [ nix pkgs.utillinux config.programs.ssh.package ] + ++ optionals cfg.distributedBuilds [ pkgs.gzip ] ++ optionals (!isNix20) [ pkgs.openssl.bin ]; environment = cfg.envVars diff --git a/nixos/modules/services/misc/nscd-sssd.conf b/nixos/modules/services/misc/nscd-sssd.conf deleted file mode 100644 index 92380f3e4ba..00000000000 --- a/nixos/modules/services/misc/nscd-sssd.conf +++ /dev/null @@ -1,36 +0,0 @@ -server-user nscd -threads 1 -paranoia no -debug-level 0 - -enable-cache passwd yes -positive-time-to-live passwd 0 -negative-time-to-live passwd 0 -suggested-size passwd 211 -check-files passwd yes -persistent passwd no -shared passwd yes - -enable-cache group yes -positive-time-to-live group 0 -negative-time-to-live group 0 -suggested-size group 211 -check-files group yes -persistent group no -shared group yes - -enable-cache hosts yes -positive-time-to-live hosts 600 -negative-time-to-live hosts 5 -suggested-size hosts 211 -check-files hosts yes -persistent hosts no -shared hosts yes - -enable-cache services yes -positive-time-to-live services 0 -negative-time-to-live services 0 -suggested-size services 211 -check-files services yes -persistent services no -shared services yes diff --git a/nixos/modules/services/misc/nzbget.nix b/nixos/modules/services/misc/nzbget.nix index a472b6c7157..e24cecf2080 100644 --- a/nixos/modules/services/misc/nzbget.nix +++ b/nixos/modules/services/misc/nzbget.nix @@ -16,6 +16,20 @@ in { description = "The NZBGet package to use"; }; + dataDir = mkOption { + type = types.str; + default = "/var/lib/nzbget"; + description = "The directory where NZBGet stores its configuration files."; + }; + + openFirewall = mkOption { + type = types.bool; + default = false; + description = '' + Open ports in the firewall for the NZBGet web interface + ''; + }; + user = mkOption { type = types.str; default = "nzbget"; @@ -40,7 +54,8 @@ in { p7zip ]; preStart = '' - datadir=/var/lib/nzbget + datadir=${cfg.dataDir} + configfile=${cfg.dataDir}/nzbget.conf cfgtemplate=${cfg.package}/share/nzbget/nzbget.conf test -d $datadir || { echo "Creating nzbget data directory in $datadir" @@ -60,7 +75,7 @@ in { ''; script = '' - configfile=/var/lib/nzbget/nzbget.conf + configfile=${cfg.dataDir}/nzbget.conf args="--daemon --configfile $configfile" # The script in preStart (above) copies nzbget's config template to datadir on first run, containing paths that point to the nzbget derivation installed at the time. # These paths break when nzbget is upgraded & the original derivation is garbage collected. If such broken paths are found in the config file, override them to point to @@ -86,6 +101,10 @@ in { }; }; + networking.firewall = mkIf cfg.openFirewall { + allowedTCPPorts = [ 8989 ]; + }; + users.users = mkIf (cfg.user == "nzbget") { nzbget = { group = cfg.group; diff --git a/nixos/modules/services/misc/packagekit.nix b/nixos/modules/services/misc/packagekit.nix index 2d1ff7bb411..bce21e8acff 100644 --- a/nixos/modules/services/misc/packagekit.nix +++ b/nixos/modules/services/misc/packagekit.nix @@ -6,11 +6,8 @@ let cfg = config.services.packagekit; - backend = "nix"; - packagekitConf = '' [Daemon] -DefaultBackend=${backend} KeepCache=false ''; diff --git a/nixos/modules/services/misc/plex.nix b/nixos/modules/services/misc/plex.nix index 8fe5879c276..e4810ce9f87 100644 --- a/nixos/modules/services/misc/plex.nix +++ b/nixos/modules/services/misc/plex.nix @@ -145,7 +145,7 @@ in PLEX_MEDIA_SERVER_HOME="${cfg.package}/usr/lib/plexmediaserver"; PLEX_MEDIA_SERVER_MAX_PLUGIN_PROCS="6"; PLEX_MEDIA_SERVER_TMPDIR="/tmp"; - LD_LIBRARY_PATH="${cfg.package}/usr/lib/plexmediaserver"; + LD_LIBRARY_PATH="/run/opengl-driver/lib:${cfg.package}/usr/lib/plexmediaserver"; LC_ALL="en_US.UTF-8"; LANG="en_US.UTF-8"; }; diff --git a/nixos/modules/services/misc/pykms.nix b/nixos/modules/services/misc/pykms.nix index a11296e1bd0..ef90d124a28 100644 --- a/nixos/modules/services/misc/pykms.nix +++ b/nixos/modules/services/misc/pykms.nix @@ -5,20 +5,8 @@ with lib; let cfg = config.services.pykms; - home = "/var/lib/pykms"; - - services = { - serviceConfig = { - Restart = "on-failure"; - RestartSec = "10s"; - StartLimitInterval = "1min"; - PrivateTmp = true; - ProtectSystem = "full"; - ProtectHome = true; - }; - }; - in { + meta.maintainers = with lib.maintainers; [ peterhoeg ]; options = { services.pykms = rec { @@ -51,39 +39,38 @@ in { default = false; description = "Whether the listening port should be opened automatically."; }; + + memoryLimit = mkOption { + type = types.str; + default = "64M"; + description = "How much memory to use at most."; + }; }; }; config = mkIf cfg.enable { networking.firewall.allowedTCPPorts = lib.mkIf cfg.openFirewallPort [ cfg.port ]; - systemd.services = { - pykms = services // { - description = "Python KMS"; - wantedBy = [ "multi-user.target" ]; - serviceConfig = with pkgs; { - User = "pykms"; - Group = "pykms"; - ExecStartPre = "${getBin pykms}/bin/create_pykms_db.sh ${home}/clients.db"; - ExecStart = "${getBin pykms}/bin/server.py ${optionalString cfg.verbose "--verbose"} ${cfg.listenAddress} ${toString cfg.port}"; - WorkingDirectory = home; - MemoryLimit = "64M"; - }; - }; - }; - - users = { - users.pykms = { - name = "pykms"; - group = "pykms"; - home = home; - createHome = true; - uid = config.ids.uids.pykms; - description = "PyKMS daemon user"; - }; - - groups.pykms = { - gid = config.ids.gids.pykms; + systemd.services.pykms = let + home = "/var/lib/pykms"; + in { + description = "Python KMS"; + after = [ "network.target" ]; + wantedBy = [ "multi-user.target" ]; + # python programs with DynamicUser = true require HOME to be set + environment.HOME = home; + serviceConfig = with pkgs; { + DynamicUser = true; + StateDirectory = baseNameOf home; + ExecStartPre = "${getBin pykms}/bin/create_pykms_db.sh ${home}/clients.db"; + ExecStart = lib.concatStringsSep " " ([ + "${getBin pykms}/bin/server.py" + cfg.listenAddress + (toString cfg.port) + ] ++ lib.optional cfg.verbose "--verbose"); + WorkingDirectory = home; + Restart = "on-failure"; + MemoryLimit = cfg.memoryLimit; }; }; }; diff --git a/nixos/modules/services/misc/sonarr.nix b/nixos/modules/services/misc/sonarr.nix index 97b67a0b503..a99445a268d 100644 --- a/nixos/modules/services/misc/sonarr.nix +++ b/nixos/modules/services/misc/sonarr.nix @@ -9,6 +9,32 @@ in options = { services.sonarr = { enable = mkEnableOption "Sonarr"; + + dataDir = mkOption { + type = types.str; + default = "/var/lib/sonarr/.config/NzbDrone"; + description = "The directory where Sonarr stores its data files."; + }; + + openFirewall = mkOption { + type = types.bool; + default = false; + description = '' + Open ports in the firewall for the Sonarr web interface + ''; + }; + + user = mkOption { + type = types.str; + default = "sonarr"; + description = "User account under which Sonaar runs."; + }; + + group = mkOption { + type = types.str; + default = "sonarr"; + description = "Group under which Sonaar runs."; + }; }; }; @@ -18,30 +44,38 @@ in after = [ "network.target" ]; wantedBy = [ "multi-user.target" ]; preStart = '' - test -d /var/lib/sonarr/ || { - echo "Creating sonarr data directory in /var/lib/sonarr/" - mkdir -p /var/lib/sonarr/ + test -d ${cfg.dataDir} || { + echo "Creating sonarr data directory in ${cfg.dataDir}" + mkdir -p ${cfg.dataDir} } - chown -R sonarr:sonarr /var/lib/sonarr/ - chmod 0700 /var/lib/sonarr/ + chown -R ${cfg.user}:${cfg.group} ${cfg.dataDir} + chmod 0700 ${cfg.dataDir} ''; serviceConfig = { Type = "simple"; - User = "sonarr"; - Group = "sonarr"; + User = cfg.user; + Group = cfg.group; PermissionsStartOnly = "true"; - ExecStart = "${pkgs.sonarr}/bin/NzbDrone --no-browser"; + ExecStart = "${pkgs.sonarr}/bin/NzbDrone -nobrowser -data='${cfg.dataDir}'"; Restart = "on-failure"; }; }; - users.users.sonarr = { - uid = config.ids.uids.sonarr; - home = "/var/lib/sonarr"; - group = "sonarr"; + networking.firewall = mkIf cfg.openFirewall { + allowedTCPPorts = [ 8989 ]; }; - users.groups.sonarr.gid = config.ids.gids.sonarr; + users.users = mkIf (cfg.user == "sonarr") { + sonarr = { + group = cfg.group; + home = cfg.dataDir; + uid = config.ids.uids.sonarr; + }; + }; + + users.groups = mkIf (cfg.group == "sonarr") { + sonarr.gid = config.ids.gids.sonarr; + }; }; } diff --git a/nixos/modules/services/misc/sssd.nix b/nixos/modules/services/misc/sssd.nix index e818f4a4804..fe472a6c68e 100644 --- a/nixos/modules/services/misc/sssd.nix +++ b/nixos/modules/services/misc/sssd.nix @@ -75,7 +75,6 @@ in { }; system.nssModules = optional cfg.enable pkgs.sssd; - services.nscd.config = builtins.readFile ./nscd-sssd.conf; services.dbus.packages = [ pkgs.sssd ]; }) diff --git a/nixos/modules/services/misc/weechat.nix b/nixos/modules/services/misc/weechat.nix index 1fcfb440485..c6ff540ea12 100644 --- a/nixos/modules/services/misc/weechat.nix +++ b/nixos/modules/services/misc/weechat.nix @@ -46,10 +46,12 @@ in Group = "weechat"; RemainAfterExit = "yes"; }; - script = "exec ${pkgs.screen}/bin/screen -Dm -S ${cfg.sessionName} ${cfg.binary}"; + script = "exec ${config.security.wrapperDir}/screen -Dm -S ${cfg.sessionName} ${cfg.binary}"; wantedBy = [ "multi-user.target" ]; wants = [ "network.target" ]; }; + + security.wrappers.screen.source = "${pkgs.screen}/bin/screen"; }; meta.doc = ./weechat.xml; diff --git a/nixos/modules/services/misc/weechat.xml b/nixos/modules/services/misc/weechat.xml index 9c9ee0448c9..b7f755bbc5c 100644 --- a/nixos/modules/services/misc/weechat.xml +++ b/nixos/modules/services/misc/weechat.xml @@ -54,7 +54,7 @@ Now, the session can be re-attached like this: -screen -r weechat-screen +screen -x weechat/weechat-screen diff --git a/nixos/modules/services/misc/zoneminder.nix b/nixos/modules/services/misc/zoneminder.nix new file mode 100644 index 00000000000..a40e9e84613 --- /dev/null +++ b/nixos/modules/services/misc/zoneminder.nix @@ -0,0 +1,362 @@ +{ config, lib, pkgs, ... }: + +let + cfg = config.services.zoneminder; + pkg = pkgs.zoneminder; + + dirName = pkg.dirName; + + user = "zoneminder"; + group = { + nginx = config.services.nginx.group; + none = user; + }."${cfg.webserver}"; + + useNginx = cfg.webserver == "nginx"; + + defaultDir = "/var/lib/${user}"; + home = if useCustomDir then cfg.storageDir else defaultDir; + + useCustomDir = !(builtins.isNull cfg.storageDir); + + socket = "/run/phpfpm/${dirName}.sock"; + + zms = "/cgi-bin/zms"; + + dirs = dirList: [ dirName ] ++ map (e: "${dirName}/${e}") dirList; + + cacheDirs = [ "swap" ]; + libDirs = [ "events" "exports" "images" "sounds" ]; + + dirStanzas = baseDir: + lib.concatStringsSep "\n" (map (e: + "ZM_DIR_${lib.toUpper e}=${baseDir}/${e}" + ) libDirs); + + defaultsFile = pkgs.writeText "60-defaults.conf" '' + # 01-system-paths.conf + ${dirStanzas home} + ZM_PATH_ARP=${lib.getBin pkgs.nettools}/bin/arp + ZM_PATH_LOGS=/var/log/${dirName} + ZM_PATH_MAP=/dev/shm + ZM_PATH_SOCKS=/run/${dirName} + ZM_PATH_SWAP=/var/cache/${dirName}/swap + ZM_PATH_ZMS=${zms} + + # 02-multiserver.conf + ZM_SERVER_HOST= + + # Database + ZM_DB_TYPE=mysql + ZM_DB_HOST=${cfg.database.host} + ZM_DB_NAME=${cfg.database.name} + ZM_DB_USER=${cfg.database.username} + ZM_DB_PASS=${cfg.database.password} + + # Web + ZM_WEB_USER=${user} + ZM_WEB_GROUP=${group} + ''; + + configFile = pkgs.writeText "80-nixos.conf" '' + # You can override defaults here + + ${cfg.extraConfig} + ''; + + phpExtensions = with pkgs.phpPackages; [ + { pkg = apcu; name = "apcu"; } + ]; + +in { + options = { + services.zoneminder = with lib; { + enable = lib.mkEnableOption '' + ZoneMinder + + If you intend to run the database locally, you should set + `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. + ''; + + webserver = mkOption { + type = types.enum [ "nginx" "none" ]; + default = "nginx"; + description = '' + The webserver to configure for the PHP frontend. + + + + Set it to `none` if you want to configure it yourself. PRs are welcome + for support for other web servers. + ''; + }; + + hostname = mkOption { + type = types.str; + default = "localhost"; + description = '' + The hostname on which to listen. + ''; + }; + + port = mkOption { + type = types.int; + default = 8095; + description = '' + The port on which to listen. + ''; + }; + + openFirewall = mkOption { + type = types.bool; + default = false; + description = '' + Open the firewall port(s). + ''; + }; + + database = { + createLocally = mkOption { + type = types.bool; + default = false; + description = '' + Create the database and database user locally. + ''; + }; + + host = mkOption { + type = types.str; + default = "localhost"; + description = '' + Hostname hosting the database. + ''; + }; + + name = mkOption { + type = types.str; + default = "zm"; + description = '' + Name of database. + ''; + }; + + username = mkOption { + type = types.str; + default = "zmuser"; + description = '' + Username for accessing the database. + ''; + }; + + password = mkOption { + type = types.str; + default = "zmpass"; + description = '' + Username for accessing the database. + ''; + }; + }; + + cameras = mkOption { + type = types.int; + default = 1; + description = '' + Set this to the number of cameras you expect to support. + ''; + }; + + storageDir = mkOption { + type = types.nullOr types.str; + default = null; + example = "/storage/tank"; + description = '' + ZoneMinder can generate quite a lot of data, so in case you don't want + to use the default ${home}, you can override the path here. + ''; + }; + + extraConfig = mkOption { + type = types.lines; + default = ""; + description = '' + Additional configuration added verbatim to the configuration file. + ''; + }; + }; + }; + + config = lib.mkIf cfg.enable { + + environment.etc = { + "zoneminder/60-defaults.conf".source = defaultsFile; + "zoneminder/80-nixos.conf".source = configFile; + }; + + networking.firewall.allowedTCPPorts = lib.mkIf cfg.openFirewall [ cfg.port ]; + + services = { + fcgiwrap = lib.mkIf useNginx { + enable = true; + preforkProcesses = cfg.cameras; + inherit user group; + }; + + mysql = lib.mkIf cfg.database.createLocally { + ensureDatabases = [ cfg.database.name ]; + ensureUsers = { + name = cfg.database.username; + ensurePermissions = [ + { "${cfg.database.name}.*" = "ALL PRIVILEGES"; } + ]; + initialDatabases = [ + { inherit (cfg.database) name; schema = "${pkg}/share/zoneminder/db/zm_create.sql"; } + ]; + }; + }; + + nginx = lib.mkIf useNginx { + enable = true; + virtualHosts = { + "${cfg.hostname}" = { + default = true; + root = "${pkg}/share/zoneminder/www"; + listen = [ { addr = "0.0.0.0"; inherit (cfg) port; } ]; + extraConfig = let + fcgi = config.services.fcgiwrap; + in '' + index index.php; + + location / { + try_files $uri $uri/ /index.php?$args =404; + + location ~ /api/(css|img|ico) { + rewrite ^/api(.+)$ /api/app/webroot/$1 break; + try_files $uri $uri/ =404; + } + + location ~ \.(gif|ico|jpg|jpeg|png)$ { + access_log off; + expires 30d; + } + + location /api { + rewrite ^/api(.+)$ /api/app/webroot/index.php?p=$1 last; + } + + location /cgi-bin { + gzip off; + + include ${pkgs.nginx}/conf/fastcgi_params; + fastcgi_param SCRIPT_FILENAME ${pkg}/libexec/zoneminder/${zms}; + fastcgi_param HTTP_PROXY ""; + fastcgi_intercept_errors on; + + fastcgi_pass ${fcgi.socketType}:${fcgi.socketAddress}; + } + + location /cache { + alias /var/cache/${dirName}; + } + + location ~ \.php$ { + try_files $uri =404; + fastcgi_index index.php; + + include ${pkgs.nginx}/conf/fastcgi_params; + fastcgi_param SCRIPT_FILENAME $request_filename; + fastcgi_param HTTP_PROXY ""; + + fastcgi_pass unix:${socket}; + } + } + ''; + }; + }; + }; + + phpfpm = lib.mkIf useNginx { + phpOptions = '' + date.timezone = "${config.time.timeZone}" + + ${lib.concatStringsSep "\n" (map (e: + "extension=${e.pkg}/lib/php/extensions/${e.name}.so") phpExtensions)} + ''; + pools.zoneminder = { + listen = socket; + extraConfig = '' + user = ${user} + group = ${group} + + listen.owner = ${user} + listen.group = ${group} + listen.mode = 0660 + + pm = dynamic + pm.start_servers = 1 + pm.min_spare_servers = 1 + pm.max_spare_servers = 2 + pm.max_requests = 500 + pm.max_children = 5 + pm.status_path = /$pool-status + ping.path = /$pool-ping + ''; + }; + }; + }; + + systemd.services = { + zoneminder = with pkgs; rec { + inherit (zoneminder.meta) description; + documentation = [ "https://zoneminder.readthedocs.org/en/latest/" ]; + path = [ + coreutils + procps + psmisc + ]; + after = [ "mysql.service" "nginx.service" ]; + wantedBy = [ "multi-user.target" ]; + restartTriggers = [ defaultsFile configFile ]; + preStart = lib.mkIf useCustomDir '' + install -dm775 -o ${user} -g ${group} ${cfg.storageDir}/{${lib.concatStringsSep "," libDirs}} + ''; + serviceConfig = { + User = user; + Group = group; + SupplementaryGroups = [ "video" ]; + ExecStart = "${zoneminder}/bin/zmpkg.pl start"; + ExecStop = "${zoneminder}/bin/zmpkg.pl stop"; + ExecReload = "${zoneminder}/bin/zmpkg.pl restart"; + PIDFile = "/run/${dirName}/zm.pid"; + Type = "forking"; + Restart = "on-failure"; + RestartSec = "10s"; + CacheDirectory = dirs cacheDirs; + RuntimeDirectory = dirName; + ReadWriteDirectories = lib.mkIf useCustomDir [ cfg.storageDir ]; + StateDirectory = dirs (if useCustomDir then [] else libDirs); + LogsDirectory = dirName; + PrivateTmp = true; + ProtectSystem = "strict"; + ProtectKernelTunables = true; + SystemCallArchitectures = "native"; + NoNewPrivileges = true; + }; + }; + }; + + users.groups."${user}" = { + gid = config.ids.gids.zoneminder; + }; + + users.users."${user}" = { + uid = config.ids.uids.zoneminder; + group = user; + inherit home; + inherit (pkgs.zoneminder.meta) description; + }; + }; + + meta.maintainers = with lib.maintainers; [ peterhoeg ]; +} diff --git a/nixos/modules/services/monitoring/alerta.nix b/nixos/modules/services/monitoring/alerta.nix new file mode 100644 index 00000000000..8f4258e26de --- /dev/null +++ b/nixos/modules/services/monitoring/alerta.nix @@ -0,0 +1,116 @@ +{ options, config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.services.alerta; + + alertaConf = pkgs.writeTextFile { + name = "alertad.conf"; + text = '' + DATABASE_URL = '${cfg.databaseUrl}' + DATABASE_NAME = '${cfg.databaseName}' + LOG_FILE = '${cfg.logDir}/alertad.log' + LOG_FORMAT = '%(asctime)s - %(name)s - %(levelname)s - %(message)s' + CORS_ORIGINS = [ ${concatMapStringsSep ", " (s: "\"" + s + "\"") cfg.corsOrigins} ]; + AUTH_REQUIRED = ${if cfg.authenticationRequired then "True" else "False"} + SIGNUP_ENABLED = ${if cfg.signupEnabled then "True" else "False"} + ${cfg.extraConfig} + ''; + }; +in +{ + options.services.alerta = { + enable = mkEnableOption "alerta"; + + port = mkOption { + type = types.int; + default = 5000; + description = "Port of Alerta"; + }; + + bind = mkOption { + type = types.str; + default = "0.0.0.0"; + example = literalExample "0.0.0.0"; + description = "Address to bind to. The default is to bind to all addresses"; + }; + + logDir = mkOption { + type = types.path; + description = "Location where the logfiles are stored"; + default = "/var/log/alerta"; + }; + + databaseUrl = mkOption { + type = types.str; + description = "URL of the MongoDB or PostgreSQL database to connect to"; + default = "mongodb://localhost"; + example = "mongodb://localhost"; + }; + + databaseName = mkOption { + type = types.str; + description = "Name of the database instance to connect to"; + default = "monitoring"; + example = "monitoring"; + }; + + corsOrigins = mkOption { + type = types.listOf types.str; + description = "List of URLs that can access the API for Cross-Origin Resource Sharing (CORS)"; + example = [ "http://localhost" "http://localhost:5000" ]; + default = [ "http://localhost" "http://localhost:5000" ]; + }; + + authenticationRequired = mkOption { + type = types.bool; + description = "Whether users must authenticate when using the web UI or command-line tool"; + default = false; + }; + + signupEnabled = mkOption { + type = types.bool; + description = "Whether to prevent sign-up of new users via the web UI"; + default = true; + }; + + extraConfig = mkOption { + description = "These lines go into alertad.conf verbatim."; + default = ""; + type = types.lines; + }; + }; + + config = mkIf cfg.enable { + systemd.services.alerta = { + description = "Alerta Monitoring System"; + wantedBy = [ "multi-user.target" ]; + after = [ "networking.target" ]; + environment = { + ALERTA_SVR_CONF_FILE = alertaConf; + }; + serviceConfig = { + ExecStart = "${pkgs.python36Packages.alerta-server}/bin/alertad run --port ${toString cfg.port} --host ${cfg.bind}"; + User = "alerta"; + Group = "alerta"; + PermissionsStartOnly = true; + }; + preStart = '' + mkdir -p ${cfg.logDir} + chown alerta:alerta ${cfg.logDir} + ''; + }; + + environment.systemPackages = [ pkgs.python36Packages.alerta ]; + + users.users.alerta = { + uid = config.ids.uids.alerta; + description = "Alerta user"; + }; + + users.groups.alerta = { + gid = config.ids.gids.alerta; + }; + }; +} diff --git a/nixos/modules/services/monitoring/apcupsd.nix b/nixos/modules/services/monitoring/apcupsd.nix index 839116de626..7ee870183ca 100644 --- a/nixos/modules/services/monitoring/apcupsd.nix +++ b/nixos/modules/services/monitoring/apcupsd.nix @@ -180,7 +180,7 @@ in serviceConfig = { Type = "oneshot"; ExecStart = "${pkgs.apcupsd}/bin/apcupsd --killpower -f ${configFile}"; - TimeoutSec = 0; + TimeoutSec = "infinity"; StandardOutput = "tty"; RemainAfterExit = "yes"; }; diff --git a/nixos/modules/services/monitoring/datadog-agent.nix b/nixos/modules/services/monitoring/datadog-agent.nix index 8fd3455a238..a4d29d45bac 100644 --- a/nixos/modules/services/monitoring/datadog-agent.nix +++ b/nixos/modules/services/monitoring/datadog-agent.nix @@ -7,7 +7,7 @@ let ddConf = { dd_url = "https://app.datadoghq.com"; - skip_ssl_validation = "no"; + skip_ssl_validation = false; confd_path = "/etc/datadog-agent/conf.d"; additional_checksd = "/etc/datadog-agent/checks.d"; use_dogstatsd = true; @@ -16,6 +16,7 @@ let // optionalAttrs (cfg.hostname != null) { inherit (cfg) hostname; } // optionalAttrs (cfg.tags != null ) { tags = concatStringsSep ", " cfg.tags; } // optionalAttrs (cfg.enableLiveProcessCollection) { process_config = { enabled = "true"; }; } + // optionalAttrs (cfg.enableTraceAgent) { apm_config = { enabled = true; }; } // cfg.extraConfig; # Generate Datadog configuration files for each configured checks. @@ -132,6 +133,15 @@ in { default = false; type = types.bool; }; + + enableTraceAgent = mkOption { + description = '' + Whether to enable the trace agent. + ''; + default = false; + type = types.bool; + }; + checks = mkOption { description = '' Configuration for all Datadog checks. Keys of this attribute @@ -176,7 +186,7 @@ in { type = types.attrs; default = { init_config = {}; - instances = [ { use-mount = "no"; } ]; + instances = [ { use_mount = "false"; } ]; }; }; @@ -244,6 +254,16 @@ in { ${pkgs.datadog-process-agent}/bin/agent --config /etc/datadog-agent/datadog.yaml ''; }); + + datadog-trace-agent = lib.mkIf cfg.enableTraceAgent (makeService { + description = "Datadog Trace Agent"; + path = [ ]; + script = '' + export DD_API_KEY=$(head -n 1 ${cfg.apiKeyFile}) + ${pkgs.datadog-trace-agent}/bin/trace-agent -config /etc/datadog-agent/datadog.yaml + ''; + }); + }; environment.etc = etcfiles; diff --git a/nixos/modules/services/monitoring/grafana-reporter.nix b/nixos/modules/services/monitoring/grafana-reporter.nix new file mode 100644 index 00000000000..149026d2018 --- /dev/null +++ b/nixos/modules/services/monitoring/grafana-reporter.nix @@ -0,0 +1,66 @@ +{ options, config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.services.grafana_reporter; + +in { + options.services.grafana_reporter = { + enable = mkEnableOption "grafana_reporter"; + + grafana = { + protocol = mkOption { + description = "Grafana protocol."; + default = "http"; + type = types.enum ["http" "https"]; + }; + addr = mkOption { + description = "Grafana address."; + default = "127.0.0.1"; + type = types.str; + }; + port = mkOption { + description = "Grafana port."; + default = 3000; + type = types.int; + }; + + }; + addr = mkOption { + description = "Listening address."; + default = "127.0.0.1"; + type = types.str; + }; + + port = mkOption { + description = "Listening port."; + default = 8686; + type = types.int; + }; + + templateDir = mkOption { + description = "Optional template directory to use custom tex templates"; + default = "${pkgs.grafana_reporter}"; + type = types.str; + }; + }; + + config = mkIf cfg.enable { + systemd.services.grafana_reporter = { + description = "Grafana Reporter Service Daemon"; + wantedBy = ["multi-user.target"]; + after = ["network.target"]; + serviceConfig = let + args = lib.concatSepString " " [ + "-proto ${cfg.grafana.protocol}://" + "-ip ${cfg.grafana.addr}:${toString cfg.grafana.port}" + "-port :${toString cfg.port}" + "-templates ${cfg.templateDir}" + ]; + in { + ExecStart = "${pkgs.grafana_reporter.bin}/bin/grafana-reporter ${args}"; + }; + }; + }; +} diff --git a/nixos/modules/services/monitoring/grafana.nix b/nixos/modules/services/monitoring/grafana.nix index c30647f5460..5fb3e377122 100644 --- a/nixos/modules/services/monitoring/grafana.nix +++ b/nixos/modules/services/monitoring/grafana.nix @@ -4,6 +4,7 @@ with lib; let cfg = config.services.grafana; + opt = options.services.grafana; envOptions = { PATHS_DATA = cfg.dataDir; @@ -41,6 +42,12 @@ let AUTH_ANONYMOUS_ORG_ROLE = cfg.auth.anonymous.org_role; ANALYTICS_REPORTING_ENABLED = boolToString cfg.analytics.reporting.enable; + + SMTP_ENABLE = boolToString cfg.smtp.enable; + SMTP_HOST = cfg.smtp.host; + SMTP_USER = cfg.smtp.user; + SMTP_PASSWORD = cfg.smtp.password; + SMTP_FROM_ADDRESS = cfg.smtp.fromAddress; } // cfg.extraOptions; in { @@ -134,11 +141,23 @@ in { }; password = mkOption { - description = "Database password."; + description = '' + Database password. + This option is mutual exclusive with the passwordFile option. + ''; default = ""; type = types.str; }; + passwordFile = mkOption { + description = '' + File that containts the database password. + This option is mutual exclusive with the password option. + ''; + default = null; + type = types.nullOr types.path; + }; + path = mkOption { description = "Database path."; default = "${cfg.dataDir}/data/grafana.db"; @@ -150,8 +169,9 @@ in { Sets the maximum amount of time (in seconds) a connection may be reused. For MySQL this setting should be shorter than the `wait_timeout' variable. ''; - default = 14400; - type = types.int; + default = "unlimited"; + example = 14400; + type = types.either types.int (types.enum [ "unlimited" ]); }; }; @@ -163,16 +183,69 @@ in { }; adminPassword = mkOption { - description = "Default admin password."; + description = '' + Default admin password. + This option is mutual exclusive with the adminPasswordFile option. + ''; default = "admin"; type = types.str; }; + adminPasswordFile = mkOption { + description = '' + Default admin password. + This option is mutual exclusive with the adminPassword option. + ''; + default = null; + type = types.nullOr types.path; + }; + secretKey = mkOption { description = "Secret key used for signing."; default = "SW2YcwTIb9zpOOhoPsMm"; type = types.str; }; + + secretKeyFile = mkOption { + description = "Secret key used for signing."; + default = null; + type = types.nullOr types.path; + }; + }; + + smtp = { + enable = mkEnableOption "smtp"; + host = mkOption { + description = "Host to connect to"; + default = "localhost:25"; + type = types.str; + }; + user = mkOption { + description = "User used for authentication"; + default = ""; + type = types.str; + }; + password = mkOption { + description = '' + Password used for authentication. + This option is mutual exclusive with the passwordFile option. + ''; + default = ""; + type = types.str; + }; + passwordFile = mkOption { + description = '' + Password used for authentication. + This option is mutual exclusive with the password option. + ''; + default = null; + type = types.nullOr types.path; + }; + fromAddress = mkOption { + description = "Email address used for sending"; + default = "admin@grafana.localhost"; + type = types.str; + }; }; users = { @@ -241,12 +314,31 @@ in { config = mkIf cfg.enable { warnings = optional ( - cfg.database.password != options.services.grafana.database.password.default || - cfg.security.adminPassword != options.services.grafana.security.adminPassword.default + cfg.database.password != opt.database.password.default || + cfg.security.adminPassword != opt.security.adminPassword.default ) "Grafana passwords will be stored as plaintext in the Nix store!"; environment.systemPackages = [ cfg.package ]; + assertions = [ + { + assertion = cfg.database.password != opt.database.password.default -> cfg.database.passwordFile == null; + message = "Cannot set both password and passwordFile"; + } + { + assertion = cfg.security.adminPassword != opt.security.adminPassword.default -> cfg.security.adminPasswordFile == null; + message = "Cannot set both adminPassword and adminPasswordFile"; + } + { + assertion = cfg.security.secretKeyFile != opt.security.secretKeyFile.default -> cfg.security.secretKeyFile == null; + message = "Cannot set both secretKey and secretKeyFile"; + } + { + assertion = cfg.smtp.password != opt.smtp.password.default -> cfg.smtp.passwordFile == null; + message = "Cannot set both password and secretKeyFile"; + } + ]; + systemd.services.grafana = { description = "Grafana Service Daemon"; wantedBy = ["multi-user.target"]; @@ -254,8 +346,22 @@ in { environment = { QT_QPA_PLATFORM = "offscreen"; } // mapAttrs' (n: v: nameValuePair "GF_${n}" (toString v)) envOptions; + script = '' + ${optionalString (cfg.database.passwordFile != null) '' + export GF_DATABASE_PASSWORD="$(cat ${escapeShellArg cfg.database.passwordFile})" + ''} + ${optionalString (cfg.security.adminPasswordFile != null) '' + export GF_SECURITY_ADMIN_PASSWORD="$(cat ${escapeShellArg cfg.security.adminPasswordFile})" + ''} + ${optionalString (cfg.security.secretKeyFile != null) '' + export GF_SECURITY_SECRET_KEY="$(cat ${escapeShellArg cfg.security.secretKeyFile})" + ''} + ${optionalString (cfg.smtp.passwordFile != null) '' + export GF_SMTP_PASSWORD="$(cat ${escapeShellArg cfg.smtp.passwordFile})" + ''} + exec ${cfg.package.bin}/bin/grafana-server -homepath ${cfg.dataDir} + ''; serviceConfig = { - ExecStart = "${cfg.package.bin}/bin/grafana-server -homepath ${cfg.dataDir}"; WorkingDirectory = cfg.dataDir; User = "grafana"; }; diff --git a/nixos/modules/services/monitoring/kapacitor.nix b/nixos/modules/services/monitoring/kapacitor.nix new file mode 100644 index 00000000000..a4bdfa8f805 --- /dev/null +++ b/nixos/modules/services/monitoring/kapacitor.nix @@ -0,0 +1,192 @@ +{ options, config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.services.kapacitor; + + kapacitorConf = pkgs.writeTextFile { + name = "kapacitord.conf"; + text = '' + hostname="${config.networking.hostName}" + data_dir="${cfg.dataDir}" + + [http] + bind-address = "${cfg.bind}:${toString cfg.port}" + log-enabled = false + auth-enabled = false + + [task] + dir = "${cfg.dataDir}/tasks" + snapshot-interval = "${cfg.taskSnapshotInterval}" + + [replay] + dir = "${cfg.dataDir}/replay" + + [storage] + boltdb = "${cfg.dataDir}/kapacitor.db" + + ${optionalString (cfg.loadDirectory != null) '' + [load] + enabled = true + dir = "${cfg.loadDirectory}" + ''} + + ${optionalString (cfg.defaultDatabase.enable) '' + [[influxdb]] + name = "default" + enabled = true + default = true + urls = [ "${cfg.defaultDatabase.url}" ] + username = "${cfg.defaultDatabase.username}" + password = "${cfg.defaultDatabase.password}" + ''} + + ${optionalString (cfg.alerta.enable) '' + [alerta] + enabled = true + url = "${cfg.alerta.url}" + token = "${cfg.alerta.token}" + environment = "${cfg.alerta.environment}" + origin = "${cfg.alerta.origin}" + ''} + + ${cfg.extraConfig} + ''; + }; +in +{ + options.services.kapacitor = { + enable = mkEnableOption "kapacitor"; + + dataDir = mkOption { + type = types.path; + example = "/var/lib/kapacitor"; + default = "/var/lib/kapacitor"; + description = "Location where Kapacitor stores its state"; + }; + + port = mkOption { + type = types.int; + default = 9092; + description = "Port of Kapacitor"; + }; + + bind = mkOption { + type = types.str; + default = ""; + example = literalExample "0.0.0.0"; + description = "Address to bind to. The default is to bind to all addresses"; + }; + + extraConfig = mkOption { + description = "These lines go into kapacitord.conf verbatim."; + default = ""; + type = types.lines; + }; + + user = mkOption { + type = types.str; + default = "kapacitor"; + description = "User account under which Kapacitor runs"; + }; + + group = mkOption { + type = types.str; + default = "kapacitor"; + description = "Group under which Kapacitor runs"; + }; + + taskSnapshotInterval = mkOption { + type = types.str; + description = "Specifies how often to snapshot the task state (in InfluxDB time units)"; + default = "1m0s"; + example = "1m0s"; + }; + + loadDirectory = mkOption { + type = types.nullOr types.path; + description = "Directory where to load services from, such as tasks, templates and handlers (or null to disable service loading on startup)"; + default = null; + }; + + defaultDatabase = { + enable = mkEnableOption "kapacitor.defaultDatabase"; + + url = mkOption { + description = "The URL to an InfluxDB server that serves as the default database"; + example = "http://localhost:8086"; + type = types.string; + }; + + username = mkOption { + description = "The username to connect to the remote InfluxDB server"; + type = types.string; + }; + + password = mkOption { + description = "The password to connect to the remote InfluxDB server"; + type = types.string; + }; + }; + + alerta = { + enable = mkEnableOption "kapacitor alerta integration"; + + url = mkOption { + description = "The URL to the Alerta REST API"; + default = "http://localhost:5000"; + example = "http://localhost:5000"; + type = types.string; + }; + + token = mkOption { + description = "Default Alerta authentication token"; + type = types.str; + default = ""; + }; + + environment = mkOption { + description = "Default Alerta environment"; + type = types.str; + default = "Production"; + }; + + origin = mkOption { + description = "Default origin of alert"; + type = types.str; + default = "kapacitor"; + }; + }; + }; + + config = mkIf cfg.enable { + environment.systemPackages = [ pkgs.kapacitor ]; + + systemd.services.kapacitor = { + description = "Kapacitor Real-Time Stream Processing Engine"; + wantedBy = [ "multi-user.target" ]; + after = [ "networking.target" ]; + serviceConfig = { + ExecStart = "${pkgs.kapacitor}/bin/kapacitord -config ${kapacitorConf}"; + User = "kapacitor"; + Group = "kapacitor"; + PermissionsStartOnly = true; + }; + preStart = '' + mkdir -p ${cfg.dataDir} + chown ${cfg.user}:${cfg.group} ${cfg.dataDir} + ''; + }; + + users.users.kapacitor = { + uid = config.ids.uids.kapacitor; + description = "Kapacitor user"; + home = cfg.dataDir; + }; + + users.groups.kapacitor = { + gid = config.ids.gids.kapacitor; + }; + }; +} diff --git a/nixos/modules/services/monitoring/monit.nix b/nixos/modules/services/monitoring/monit.nix index d48e5c550ab..32e14ab21ff 100644 --- a/nixos/modules/services/monitoring/monit.nix +++ b/nixos/modules/services/monitoring/monit.nix @@ -1,33 +1,30 @@ -# Monit system watcher -# http://mmonit.org/monit/ - {config, pkgs, lib, ...}: -let inherit (lib) mkOption mkIf; +with lib; + +let + cfg = config.services.monit; in { - options = { - services.monit = { - enable = mkOption { - default = false; - description = '' - Whether to run Monit system watcher. - ''; - }; - config = mkOption { - default = ""; - description = "monitrc content"; - }; + options.services.monit = { + + enable = mkEnableOption "Monit"; + + config = mkOption { + type = types.lines; + default = ""; + description = "monitrc content"; }; + }; - config = mkIf config.services.monit.enable { + config = mkIf cfg.enable { environment.systemPackages = [ pkgs.monit ]; environment.etc."monitrc" = { - text = config.services.monit.config; + text = cfg.config; mode = "0400"; }; diff --git a/nixos/modules/services/monitoring/munin.nix b/nixos/modules/services/monitoring/munin.nix index ff9604c7dbc..2b265d5b5a9 100644 --- a/nixos/modules/services/monitoring/munin.nix +++ b/nixos/modules/services/monitoring/munin.nix @@ -5,8 +5,8 @@ # TODO: support fastcgi # http://munin-monitoring.org/wiki/CgiHowto2 -# spawn-fcgi -s /var/run/munin/fastcgi-graph.sock -U www-data -u munin -g munin /usr/lib/munin/cgi/munin-cgi-graph -# spawn-fcgi -s /var/run/munin/fastcgi-html.sock -U www-data -u munin -g munin /usr/lib/munin/cgi/munin-cgi-html +# spawn-fcgi -s /run/munin/fastcgi-graph.sock -U www-data -u munin -g munin /usr/lib/munin/cgi/munin-cgi-graph +# spawn-fcgi -s /run/munin/fastcgi-html.sock -U www-data -u munin -g munin /usr/lib/munin/cgi/munin-cgi-html # https://paste.sh/vofcctHP#-KbDSXVeWoifYncZmLfZzgum # nginx http://munin.readthedocs.org/en/latest/example/webserver/nginx.html @@ -22,7 +22,7 @@ let dbdir /var/lib/munin htmldir /var/www/munin logdir /var/log/munin - rundir /var/run/munin + rundir /run/munin ${cronCfg.extraGlobalConfig} @@ -170,7 +170,7 @@ in wantedBy = [ "multi-user.target" ]; path = with pkgs; [ munin smartmontools "/run/current-system/sw" "/run/wrappers" ]; environment.MUNIN_LIBDIR = "${pkgs.munin}/lib"; - environment.MUNIN_PLUGSTATE = "/var/run/munin"; + environment.MUNIN_PLUGSTATE = "/run/munin"; environment.MUNIN_LOGDIR = "/var/log/munin"; preStart = '' echo "updating munin plugins..." @@ -188,7 +188,7 @@ in }; # munin_stats plugin breaks as of 2.0.33 when this doesn't exist - systemd.tmpfiles.rules = [ "d /var/run/munin 0755 munin munin -" ]; + systemd.tmpfiles.rules = [ "d /run/munin 0755 munin munin -" ]; }) (mkIf cronCfg.enable { @@ -210,7 +210,7 @@ in }; systemd.tmpfiles.rules = [ - "d /var/run/munin 0755 munin munin -" + "d /run/munin 0755 munin munin -" "d /var/log/munin 0755 munin munin -" "d /var/www/munin 0755 munin munin -" "d /var/lib/munin 0755 munin munin -" diff --git a/nixos/modules/services/monitoring/netdata.nix b/nixos/modules/services/monitoring/netdata.nix index edcaa10d969..4873ab1fc60 100644 --- a/nixos/modules/services/monitoring/netdata.nix +++ b/nixos/modules/services/monitoring/netdata.nix @@ -12,7 +12,7 @@ let localConfig = { global = { - "plugins directory" = "${wrappedPlugins}/libexec/netdata/plugins.d ${pkgs.netdata}/libexec/netdata/plugins.d"; + "plugins directory" = "${pkgs.netdata}/libexec/netdata/plugins.d ${wrappedPlugins}/libexec/netdata/plugins.d"; }; web = { "web files owner" = "root"; @@ -53,6 +53,31 @@ in { ''; }; + python = { + enable = mkOption { + type = types.bool; + default = true; + description = '' + Whether to enable python-based plugins + ''; + }; + extraPackages = mkOption { + default = ps: []; + defaultText = "ps: []"; + example = literalExample '' + ps: [ + ps.psycopg2 + ps.docker + ps.dnspython + ] + ''; + description = '' + Extra python packages available at runtime + to enable additional python plugins. + ''; + }; + }; + config = mkOption { type = types.attrsOf types.attrs; default = {}; @@ -74,21 +99,27 @@ in { message = "Cannot specify both config and configText"; } ]; + + systemd.tmpfiles.rules = [ + "d /var/cache/netdata 0755 ${cfg.user} ${cfg.group} -" + "Z /var/cache/netdata - ${cfg.user} ${cfg.group} -" + "d /var/log/netdata 0755 ${cfg.user} ${cfg.group} -" + "Z /var/log/netdata - ${cfg.user} ${cfg.group} -" + "d /var/lib/netdata 0755 ${cfg.user} ${cfg.group} -" + "Z /var/lib/netdata - ${cfg.user} ${cfg.group} -" + "d /etc/netdata 0755 ${cfg.user} ${cfg.group} -" + "Z /etc/netdata - ${cfg.user} ${cfg.group} -" + ]; systemd.services.netdata = { - path = with pkgs; [ gawk curl ]; description = "Real time performance monitoring"; after = [ "network.target" ]; wantedBy = [ "multi-user.target" ]; - preStart = concatStringsSep "\n" (map (dir: '' - mkdir -vp ${dir} - chmod 750 ${dir} - chown -R ${cfg.user}:${cfg.group} ${dir} - '') [ "/var/cache/netdata" - "/var/log/netdata" - "/var/lib/netdata" ]); + path = (with pkgs; [ gawk curl ]) ++ lib.optional cfg.python.enable + (pkgs.python3.withPackages cfg.python.extraPackages); serviceConfig = { User = cfg.user; Group = cfg.group; + Environment="PYTHONPATH=${pkgs.netdata}/libexec/netdata/python.d/python_modules"; PermissionsStartOnly = true; ExecStart = "${pkgs.netdata}/bin/netdata -D -c ${configFile}"; TimeoutStopSec = 60; @@ -96,7 +127,7 @@ in { }; security.wrappers."apps.plugin" = { - source = "${pkgs.netdata}/libexec/netdata/plugins.d/apps.plugin"; + source = "${pkgs.netdata}/libexec/netdata/plugins.d/apps.plugin.org"; capabilities = "cap_dac_read_search,cap_sys_ptrace+ep"; owner = cfg.user; group = cfg.group; diff --git a/nixos/modules/services/monitoring/osquery.nix b/nixos/modules/services/monitoring/osquery.nix index ba0dc4c2176..c8c625577d3 100644 --- a/nixos/modules/services/monitoring/osquery.nix +++ b/nixos/modules/services/monitoring/osquery.nix @@ -78,7 +78,7 @@ in mkdir -p "$(dirname ${escapeShellArg cfg.databasePath})" ''; serviceConfig = { - TimeoutStartSec = 0; + TimeoutStartSec = "infinity"; ExecStart = "${pkgs.osquery}/bin/osqueryd --logger_path ${escapeShellArg cfg.loggerPath} --pidfile ${escapeShellArg cfg.pidfile} --database_path ${escapeShellArg cfg.databasePath}"; KillMode = "process"; KillSignal = "SIGTERM"; diff --git a/nixos/modules/services/monitoring/prometheus/alertmanager.nix b/nixos/modules/services/monitoring/prometheus/alertmanager.nix index 8a44cf7fd8f..43b4a41eaf3 100644 --- a/nixos/modules/services/monitoring/prometheus/alertmanager.nix +++ b/nixos/modules/services/monitoring/prometheus/alertmanager.nix @@ -5,10 +5,18 @@ with lib; let cfg = config.services.prometheus.alertmanager; mkConfigFile = pkgs.writeText "alertmanager.yml" (builtins.toJSON cfg.configuration); - alertmanagerYml = - if cfg.configText != null then - pkgs.writeText "alertmanager.yml" cfg.configText - else mkConfigFile; + + checkedConfig = file: pkgs.runCommand "checked-config" { buildInputs = [ cfg.package ]; } '' + ln -s ${file} $out + amtool check-config $out + ''; + + alertmanagerYml = let + yml = if cfg.configText != null then + pkgs.writeText "alertmanager.yml" cfg.configText + else mkConfigFile; + in checkedConfig yml; + cmdlineArgs = cfg.extraFlags ++ [ "--config.file ${alertmanagerYml}" "--web.listen-address ${cfg.listenAddress}:${toString cfg.port}" @@ -23,6 +31,15 @@ in { services.prometheus.alertmanager = { enable = mkEnableOption "Prometheus Alertmanager"; + package = mkOption { + type = types.package; + default = pkgs.prometheus-alertmanager; + defaultText = "pkgs.alertmanager"; + description = '' + Package that should be used for alertmanager. + ''; + }; + user = mkOption { type = types.str; default = "nobody"; @@ -40,8 +57,8 @@ in { }; configuration = mkOption { - type = types.attrs; - default = {}; + type = types.nullOr types.attrs; + default = null; description = '' Alertmanager configuration as nix attribute set. ''; @@ -119,26 +136,34 @@ in { }; }; - - config = mkIf cfg.enable { - networking.firewall.allowedTCPPorts = optional cfg.openFirewall cfg.port; - - systemd.services.alertmanager = { - wantedBy = [ "multi-user.target" ]; - after = [ "network.target" ]; - script = '' - ${pkgs.prometheus-alertmanager.bin}/bin/alertmanager \ - ${concatStringsSep " \\\n " cmdlineArgs} - ''; - - serviceConfig = { - User = cfg.user; - Group = cfg.group; - Restart = "always"; - PrivateTmp = true; - WorkingDirectory = "/tmp"; - ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID"; + config = mkMerge [ + (mkIf cfg.enable { + assertions = singleton { + assertion = cfg.configuration != null || cfg.configText != null; + message = "Can not enable alertmanager without a configuration. " + + "Set either the `configuration` or `configText` attribute."; }; - }; - }; + }) + (mkIf cfg.enable { + networking.firewall.allowedTCPPorts = optional cfg.openFirewall cfg.port; + + systemd.services.alertmanager = { + wantedBy = [ "multi-user.target" ]; + after = [ "network.target" ]; + script = '' + ${cfg.package}/bin/alertmanager \ + ${concatStringsSep " \\\n " cmdlineArgs} + ''; + + serviceConfig = { + User = cfg.user; + Group = cfg.group; + Restart = "always"; + PrivateTmp = true; + WorkingDirectory = "/tmp"; + ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID"; + }; + }; + }) + ]; } diff --git a/nixos/modules/services/monitoring/prometheus/default.nix b/nixos/modules/services/monitoring/prometheus/default.nix index 5dda763bd56..1b1503ab5fc 100644 --- a/nixos/modules/services/monitoring/prometheus/default.nix +++ b/nixos/modules/services/monitoring/prometheus/default.nix @@ -10,6 +10,13 @@ let # Get a submodule without any embedded metadata: _filter = x: filterAttrs (k: v: k != "_module") x; + # a wrapper that verifies that the configuration is valid + promtoolCheck = what: name: file: pkgs.runCommand "${name}-${what}-checked" + { buildInputs = [ cfg.package ]; } '' + ln -s ${file} $out + promtool ${what} $out + ''; + # Pretty-print JSON to a file writePrettyJSON = name: x: pkgs.runCommand name { } '' @@ -19,18 +26,19 @@ let # This becomes the main config file promConfig = { global = cfg.globalConfig; - rule_files = cfg.ruleFiles ++ [ + rule_files = map (promtoolCheck "check-rules" "rules") (cfg.ruleFiles ++ [ (pkgs.writeText "prometheus.rules" (concatStringsSep "\n" cfg.rules)) - ]; + ]); scrape_configs = cfg.scrapeConfigs; }; generatedPrometheusYml = writePrettyJSON "prometheus.yml" promConfig; - prometheusYml = - if cfg.configText != null then + prometheusYml = let + yml = if cfg.configText != null then pkgs.writeText "prometheus.yml" cfg.configText - else generatedPrometheusYml; + else generatedPrometheusYml; + in promtoolCheck "check-config" "prometheus.yml" yml; cmdlineArgs = cfg.extraFlags ++ [ "-storage.local.path=${cfg.dataDir}/metrics" @@ -39,6 +47,7 @@ let "-alertmanager.notification-queue-capacity=${toString cfg.alertmanagerNotificationQueueCapacity}" "-alertmanager.timeout=${toString cfg.alertmanagerTimeout}s" (optionalString (cfg.alertmanagerURL != []) "-alertmanager.url=${concatStringsSep "," cfg.alertmanagerURL}") + (optionalString (cfg.webExternalUrl != null) "-web.external-url=${cfg.webExternalUrl}") ]; promTypes.globalConfig = types.submodule { @@ -316,7 +325,8 @@ let promTypes.relabel_config = types.submodule { options = { source_labels = mkOption { - type = types.listOf types.str; + type = with types; nullOr (listOf str); + default = null; description = '' The source labels select values from existing labels. Their content is concatenated using the configured separator and matched against @@ -375,6 +385,15 @@ in { ''; }; + package = mkOption { + type = types.package; + default = pkgs.prometheus; + defaultText = "pkgs.prometheus"; + description = '' + The prometheus package that should be used. + ''; + }; + listenAddress = mkOption { type = types.str; default = "0.0.0.0:9090"; @@ -467,6 +486,16 @@ in { Alert manager HTTP API timeout (in seconds). ''; }; + + webExternalUrl = mkOption { + type = types.nullOr types.str; + default = null; + example = "https://example.com/"; + description = '' + The URL under which Prometheus is externally reachable (for example, + if Prometheus is served via a reverse proxy). + ''; + }; }; }; @@ -484,7 +513,7 @@ in { after = [ "network.target" ]; script = '' #!/bin/sh - exec ${pkgs.prometheus}/bin/prometheus \ + exec ${cfg.package}/bin/prometheus \ ${concatStringsSep " \\\n " cmdlineArgs} ''; serviceConfig = { diff --git a/nixos/modules/services/monitoring/prometheus/exporters.nix b/nixos/modules/services/monitoring/prometheus/exporters.nix index 1d5f400250f..0a084561002 100644 --- a/nixos/modules/services/monitoring/prometheus/exporters.nix +++ b/nixos/modules/services/monitoring/prometheus/exporters.nix @@ -30,8 +30,10 @@ let postfix = import ./exporters/postfix.nix { inherit config lib pkgs; }; snmp = import ./exporters/snmp.nix { inherit config lib pkgs; }; surfboard = import ./exporters/surfboard.nix { inherit config lib pkgs; }; + tor = import ./exporters/tor.nix { inherit config lib pkgs; }; unifi = import ./exporters/unifi.nix { inherit config lib pkgs; }; varnish = import ./exporters/varnish.nix { inherit config lib pkgs; }; + bind = import ./exporters/bind.nix { inherit config lib pkgs; }; }; mkExporterOpts = ({ name, port }: { @@ -123,15 +125,13 @@ let systemd.services."prometheus-${name}-exporter" = mkMerge ([{ wantedBy = [ "multi-user.target" ]; after = [ "network.target" ]; - serviceConfig = { - Restart = mkDefault "always"; - PrivateTmp = mkDefault true; - WorkingDirectory = mkDefault /tmp; - } // mkIf (!(serviceOpts.serviceConfig.DynamicUser or false)) { - User = conf.user; - Group = conf.group; - }; - } serviceOpts ]); + serviceConfig.Restart = mkDefault "always"; + serviceConfig.PrivateTmp = mkDefault true; + serviceConfig.WorkingDirectory = mkDefault /tmp; + } serviceOpts ] ++ optional (!(serviceOpts.serviceConfig.DynamicUser or false)) { + serviceConfig.User = conf.user; + serviceConfig.Group = conf.group; + }); }; in { @@ -172,5 +172,8 @@ in }) exporterOpts) ); - meta.doc = ./exporters.xml; + meta = { + doc = ./exporters.xml; + maintainers = [ maintainers.willibutz ]; + }; } diff --git a/nixos/modules/services/monitoring/prometheus/exporters/bind.nix b/nixos/modules/services/monitoring/prometheus/exporters/bind.nix new file mode 100644 index 00000000000..a9746c4d65d --- /dev/null +++ b/nixos/modules/services/monitoring/prometheus/exporters/bind.nix @@ -0,0 +1,55 @@ +{ config, lib, pkgs }: + +with lib; + +let + cfg = config.services.prometheus.exporters.bind; +in +{ + port = 9119; + extraOpts = { + bindURI = mkOption { + type = types.str; + default = "http://localhost:8053/"; + description = '' + HTTP XML API address of an Bind server. + ''; + }; + bindTimeout = mkOption { + type = types.str; + default = "10s"; + description = '' + Timeout for trying to get stats from Bind. + ''; + }; + bindVersion = mkOption { + type = types.enum [ "xml.v2" "xml.v3" "auto" ]; + default = "auto"; + description = '' + BIND statistics version. Can be detected automatically. + ''; + }; + bindGroups = mkOption { + type = types.listOf (types.enum [ "server" "view" "tasks" ]); + default = [ "server" "view" ]; + description = '' + List of statistics to collect. Available: [server, view, tasks] + ''; + }; + }; + serviceOpts = { + serviceConfig = { + DynamicUser = true; + ExecStart = '' + ${pkgs.prometheus-bind-exporter}/bin/bind_exporter \ + -web.listen-address ${cfg.listenAddress}:${toString cfg.port} \ + -bind.pid-file /var/run/named/named.pid \ + -bind.timeout ${toString cfg.bindTimeout} \ + -bind.stats-url ${cfg.bindURI} \ + -bind.stats-version ${cfg.bindVersion} \ + -bind.stats-groups ${concatStringsSep "," cfg.bindGroups} \ + ${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 4ca6d4e5f8b..c47e87a3dc3 100644 --- a/nixos/modules/services/monitoring/prometheus/exporters/dovecot.nix +++ b/nixos/modules/services/monitoring/prometheus/exporters/dovecot.nix @@ -18,12 +18,34 @@ in socketPath = mkOption { type = types.path; default = "/var/run/dovecot/stats"; - example = "/var/run/dovecot2/stats"; + example = "/var/run/dovecot2/old-stats"; description = '' Path under which the stats socket is placed. The user/group under which the exporter runs, should be able to access the socket in order to scrape the metrics successfully. + + Please keep in mind that the stats module has changed in + Dovecot 2.3+ which + is not compatible with this exporter. + + The following extra config has to be passed to Dovecot to ensure that recent versions + work with this exporter: + + { + = true; + = "/var/run/dovecot2/old-stats"; + = ''' + mail_plugins = $mail_plugins old_stats + service old-stats { + unix_listener old-stats { + user = nobody + group = nobody + } + } + '''; + } + ''; }; scopes = mkOption { diff --git a/nixos/modules/services/monitoring/prometheus/exporters/tor.nix b/nixos/modules/services/monitoring/prometheus/exporters/tor.nix new file mode 100644 index 00000000000..e0ae8380242 --- /dev/null +++ b/nixos/modules/services/monitoring/prometheus/exporters/tor.nix @@ -0,0 +1,45 @@ +{ config, lib, pkgs }: + +with lib; + +let + cfg = config.services.prometheus.exporters.tor; +in +{ + port = 9130; + extraOpts = { + torControlAddress = mkOption { + type = types.str; + default = "127.0.0.1"; + description = '' + Tor control IP address or hostname. + ''; + }; + + torControlPort = mkOption { + type = types.int; + default = 9051; + description = '' + Tor control port. + ''; + }; + }; + serviceOpts = { + serviceConfig = { + DynamicUser = true; + ExecStart = '' + ${pkgs.prometheus-tor-exporter}/bin/prometheus-tor-exporter \ + -b ${cfg.listenAddress} \ + -p ${toString cfg.port} \ + -a ${cfg.torControlAddress} \ + -c ${toString cfg.torControlPort} \ + ${concatStringsSep " \\\n " cfg.extraFlags} + ''; + }; + + # CPython requires a process to either have $HOME defined or run as a UID + # defined in /etc/passwd. The latter is false with DynamicUser, so define a + # dummy $HOME. https://bugs.python.org/issue10496 + environment = { HOME = "/var/empty"; }; + }; +} diff --git a/nixos/modules/services/monitoring/prometheus/exporters/varnish.nix b/nixos/modules/services/monitoring/prometheus/exporters/varnish.nix index 8dbf2d735ab..aaed76175b8 100644 --- a/nixos/modules/services/monitoring/prometheus/exporters/varnish.nix +++ b/nixos/modules/services/monitoring/prometheus/exporters/varnish.nix @@ -69,6 +69,7 @@ in path = [ pkgs.varnish ]; serviceConfig = { DynamicUser = true; + RestartSec = mkDefault 1; ExecStart = '' ${pkgs.prometheus-varnish-exporter}/bin/prometheus_varnish_exporter \ --web.listen-address ${cfg.listenAddress}:${toString cfg.port} \ diff --git a/nixos/modules/services/monitoring/systemhealth.nix b/nixos/modules/services/monitoring/systemhealth.nix index 20d1dadd3bf..32d4314d5f7 100644 --- a/nixos/modules/services/monitoring/systemhealth.nix +++ b/nixos/modules/services/monitoring/systemhealth.nix @@ -8,7 +8,7 @@ let systemhealth = with pkgs; stdenv.mkDerivation { name = "systemhealth-1.0"; src = fetchurl { - url = "http://www.brianlane.com/static/downloads/systemhealth/systemhealth-1.0.tar.bz2"; + url = "https://www.brianlane.com/downloads/systemhealth/systemhealth-1.0.tar.bz2"; sha256 = "1q69lz7hmpbdpbz36zb06nzfkj651413n9icx0njmyr3xzq1j9qy"; }; buildInputs = [ python ]; diff --git a/nixos/modules/services/network-filesystems/glusterfs.nix b/nixos/modules/services/network-filesystems/glusterfs.nix index 8ac9f801dcb..00875c6c4a1 100644 --- a/nixos/modules/services/network-filesystems/glusterfs.nix +++ b/nixos/modules/services/network-filesystems/glusterfs.nix @@ -176,10 +176,8 @@ in ''; serviceConfig = { - Type="forking"; - PIDFile="/run/glusterd.pid"; LimitNOFILE=65536; - ExecStart="${glusterfs}/sbin/glusterd -p /run/glusterd.pid --log-level=${cfg.logLevel} ${toString cfg.extraFlags}"; + ExecStart="${glusterfs}/sbin/glusterd --no-daemon --log-level=${cfg.logLevel} ${toString cfg.extraFlags}"; KillMode=cfg.killMode; TimeoutStopSec=cfg.stopKillTimeout; }; @@ -198,9 +196,11 @@ in install -m 0755 -d /var/log/glusterfs ''; + # glustereventsd uses the `gluster` executable + path = [ glusterfs ]; + serviceConfig = { Type="simple"; - Environment="PYTHONPATH=${glusterfs}/usr/lib/python2.7/site-packages"; PIDFile="/run/glustereventsd.pid"; ExecStart="${glusterfs}/sbin/glustereventsd --pid-file /run/glustereventsd.pid"; ExecReload="/bin/kill -SIGUSR2 $MAINPID"; diff --git a/nixos/modules/services/network-filesystems/ipfs.nix b/nixos/modules/services/network-filesystems/ipfs.nix index 412d57b27b8..602cd50d8f5 100644 --- a/nixos/modules/services/network-filesystems/ipfs.nix +++ b/nixos/modules/services/network-filesystems/ipfs.nix @@ -74,7 +74,7 @@ in { services.ipfs = { - enable = mkEnableOption "Interplanetary File System"; + enable = mkEnableOption "Interplanetary File System (WARNING: may cause severe network degredation)"; user = mkOption { type = types.str; diff --git a/nixos/modules/services/network-filesystems/openafs/client.nix b/nixos/modules/services/network-filesystems/openafs/client.nix index 52c0966e05b..240c1392088 100644 --- a/nixos/modules/services/network-filesystems/openafs/client.nix +++ b/nixos/modules/services/network-filesystems/openafs/client.nix @@ -149,11 +149,13 @@ in packages = { module = mkOption { default = config.boot.kernelPackages.openafs; + defaultText = "config.boot.kernelPackages.openafs"; type = types.package; description = "OpenAFS kernel module package. MUST match the userland package!"; }; programs = mkOption { default = getBin pkgs.openafs; + defaultText = "config.boot.kernelPackages.openafs"; type = types.package; description = "OpenAFS programs package. MUST match the kernel module package!"; }; diff --git a/nixos/modules/services/network-filesystems/openafs/server.nix b/nixos/modules/services/network-filesystems/openafs/server.nix index 4c80ed0839f..095024d2c8a 100644 --- a/nixos/modules/services/network-filesystems/openafs/server.nix +++ b/nixos/modules/services/network-filesystems/openafs/server.nix @@ -80,6 +80,7 @@ in { package = mkOption { default = pkgs.openafs.server or pkgs.openafs; + defaultText = "pkgs.openafs.server or pkgs.openafs"; type = types.package; description = "OpenAFS package for the server binaries"; }; diff --git a/nixos/modules/services/networking/bitlbee.nix b/nixos/modules/services/networking/bitlbee.nix index 46e3b745761..274b3617160 100644 --- a/nixos/modules/services/networking/bitlbee.nix +++ b/nixos/modules/services/networking/bitlbee.nix @@ -33,7 +33,7 @@ let purple_plugin_path = lib.concatMapStringsSep ":" - (plugin: "${plugin}/lib/pidgin/") + (plugin: "${plugin}/lib/pidgin/:${plugin}/lib/purple-2/") cfg.libpurple_plugins ; diff --git a/nixos/modules/services/networking/chrony.nix b/nixos/modules/services/networking/chrony.nix index a363b545d64..77f70257700 100644 --- a/nixos/modules/services/networking/chrony.nix +++ b/nixos/modules/services/networking/chrony.nix @@ -12,7 +12,7 @@ let ${concatMapStringsSep "\n" (server: "server " + server) cfg.servers} ${optionalString - cfg.initstepslew.enabled + (cfg.initstepslew.enabled && (cfg.servers != [])) "initstepslew ${toString cfg.initstepslew.threshold} ${concatStringsSep " " cfg.initstepslew.servers}" } @@ -93,6 +93,8 @@ in services.timesyncd.enable = mkForce false; + systemd.services.systemd-timedated.environment = { SYSTEMD_TIMEDATED_NTP_SERVICES = "chronyd.service"; }; + systemd.services.chronyd = { description = "chrony NTP daemon"; @@ -111,6 +113,7 @@ in chown chrony:chrony ${stateDir} ${keyFile} ''; + unitConfig.ConditionCapability = "CAP_SYS_TIME"; serviceConfig = { Type = "forking"; ExecStart = "${pkgs.chrony}/bin/chronyd ${chronyFlags}"; @@ -119,8 +122,8 @@ in ProtectSystem = "full"; PrivateTmp = "yes"; - ConditionCapability = "CAP_SYS_TIME"; }; + }; }; } diff --git a/nixos/modules/services/networking/consul.nix b/nixos/modules/services/networking/consul.nix index ab3f8103768..3a92a883fbf 100644 --- a/nixos/modules/services/networking/consul.nix +++ b/nixos/modules/services/networking/consul.nix @@ -6,9 +6,10 @@ let dataDir = "/var/lib/consul"; cfg = config.services.consul; - configOptions = { data_dir = dataDir; } // - (if cfg.webUi then { ui_dir = "${cfg.package.ui}"; } else { }) // - cfg.extraConfig; + configOptions = { + data_dir = dataDir; + ui = cfg.webUi; + } // cfg.extraConfig; configFiles = [ "/etc/consul.json" "/etc/consul-addrs.json" ] ++ cfg.extraConfigFiles; @@ -184,7 +185,7 @@ in PermissionsStartOnly = true; User = if cfg.dropPrivileges then "consul" else null; Restart = "on-failure"; - TimeoutStartSec = "0"; + TimeoutStartSec = "infinity"; } // (optionalAttrs (cfg.leaveOnStop) { ExecStop = "${cfg.package.bin}/bin/consul leave"; }); diff --git a/nixos/modules/services/networking/dhcpcd.nix b/nixos/modules/services/networking/dhcpcd.nix index efdbca5d52e..c217ccaa405 100644 --- a/nixos/modules/services/networking/dhcpcd.nix +++ b/nixos/modules/services/networking/dhcpcd.nix @@ -71,7 +71,7 @@ let # anything ever again ("couldn't resolve ..., giving up on # it"), so we silently lose time synchronisation. This also # applies to openntpd. - ${config.systemd.package}/bin/systemctl try-reload-or-restart ntpd.service openntpd.service || true + ${config.systemd.package}/bin/systemctl try-reload-or-restart ntpd.service openntpd.service chronyd.service || true fi ${cfg.runHook} diff --git a/nixos/modules/services/networking/eternal-terminal.nix b/nixos/modules/services/networking/eternal-terminal.nix new file mode 100644 index 00000000000..be7337ece7e --- /dev/null +++ b/nixos/modules/services/networking/eternal-terminal.nix @@ -0,0 +1,89 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + + cfg = config.services.eternal-terminal; + +in + +{ + + ###### interface + + options = { + + services.eternal-terminal = { + + enable = mkEnableOption "Eternal Terminal server"; + + port = mkOption { + default = 2022; + type = types.int; + description = '' + The port the server should listen on. Will use the server's default (2022) if not specified. + ''; + }; + + verbosity = mkOption { + default = 0; + type = types.enum (lib.range 0 9); + description = '' + The verbosity level (0-9). + ''; + }; + + silent = mkOption { + default = false; + type = types.bool; + description = '' + If enabled, disables all logging. + ''; + }; + + logSize = mkOption { + default = 20971520; + type = types.int; + description = '' + The maximum log size. + ''; + }; + }; + }; + + ###### implementation + + config = mkIf cfg.enable { + + # We need to ensure the et package is fully installed because + # the (remote) et client runs the `etterminal` binary when it + # connects. + environment.systemPackages = [ pkgs.eternal-terminal ]; + + systemd.services = { + eternal-terminal = { + description = "Eternal Terminal server."; + wantedBy = [ "multi-user.target" ]; + after = [ "syslog.target" "network.target" ]; + serviceConfig = { + Type = "forking"; + ExecStart = "${pkgs.eternal-terminal}/bin/etserver --daemon --cfgfile=${pkgs.writeText "et.cfg" '' + ; et.cfg : Config file for Eternal Terminal + ; + + [Networking] + port = ${toString cfg.port} + + [Debug] + verbose = ${toString cfg.verbosity} + silent = ${if cfg.silent then "1" else "0"} + logsize = ${toString cfg.logSize} + ''}"; + Restart = "on-failure"; + KillMode = "process"; + }; + }; + }; + }; +} diff --git a/nixos/modules/services/networking/firewall.nix b/nixos/modules/services/networking/firewall.nix index 86463f276c6..aba64e4f60f 100644 --- a/nixos/modules/services/networking/firewall.nix +++ b/nixos/modules/services/networking/firewall.nix @@ -58,6 +58,9 @@ let ${text} ''; in "${dir}/bin/${name}"; + defaultInterface = { default = mapAttrs (name: value: cfg."${name}") commonOptions; }; + allInterfaces = defaultInterface // cfg.interfaces; + startScript = writeShScript "firewall-start" '' ${helpers} @@ -154,7 +157,7 @@ let ip46tables -A nixos-fw -p tcp --dport ${toString port} -j nixos-fw-accept ${optionalString (iface != "default") "-i ${iface}"} '' ) cfg.allowedTCPPorts - ) cfg.interfaces)} + ) allInterfaces)} # Accept connections to the allowed TCP port ranges. ${concatStrings (mapAttrsToList (iface: cfg: @@ -164,7 +167,7 @@ let ip46tables -A nixos-fw -p tcp --dport ${range} -j nixos-fw-accept ${optionalString (iface != "default") "-i ${iface}"} '' ) cfg.allowedTCPPortRanges - ) cfg.interfaces)} + ) allInterfaces)} # Accept packets on the allowed UDP ports. ${concatStrings (mapAttrsToList (iface: cfg: @@ -173,7 +176,7 @@ let ip46tables -A nixos-fw -p udp --dport ${toString port} -j nixos-fw-accept ${optionalString (iface != "default") "-i ${iface}"} '' ) cfg.allowedUDPPorts - ) cfg.interfaces)} + ) allInterfaces)} # Accept packets on the allowed UDP port ranges. ${concatStrings (mapAttrsToList (iface: cfg: @@ -183,7 +186,7 @@ let ip46tables -A nixos-fw -p udp --dport ${range} -j nixos-fw-accept ${optionalString (iface != "default") "-i ${iface}"} '' ) cfg.allowedUDPPortRanges - ) cfg.interfaces)} + ) allInterfaces)} # Accept IPv4 multicast. Not a big security risk since # probably nobody is listening anyway. @@ -508,15 +511,11 @@ in }; interfaces = mkOption { - default = { - default = mapAttrs (name: value: cfg."${name}") commonOptions; - }; + default = { }; type = with types; attrsOf (submodule [ { options = commonOptions; } ]); description = '' - Interface-specific open ports. Setting this value will override - all values of the networking.firewall.allowed* - options. + Interface-specific open ports. ''; }; } // commonOptions; diff --git a/nixos/modules/services/networking/flashpolicyd.nix b/nixos/modules/services/networking/flashpolicyd.nix index 5b83ce13138..9c51b88ef67 100644 --- a/nixos/modules/services/networking/flashpolicyd.nix +++ b/nixos/modules/services/networking/flashpolicyd.nix @@ -11,7 +11,7 @@ let src = pkgs.fetchurl { name = "flashpolicyd_v0.6.zip"; - url = "http://www.adobe.com/content/dotcom/en/devnet/flashplayer/articles/socket_policy_files/_jcr_content/articlePrerequistes/multiplefiles/node_1277808777771/file.res/flashpolicyd_v0.6%5B1%5D.zip"; + url = "https://download.adobe.com/pub/adobe/devnet/flashplayer/articles/socket_policy_files/flashpolicyd_v0.6.zip"; sha256 = "16zk237233npwfq1m4ksy4g5lzy1z9fp95w7pz0cdlpmv0fv9sm3"; }; @@ -35,9 +35,9 @@ in ###### interface options = { - + services.flashpolicyd = { - + enable = mkOption { default = false; description = @@ -47,13 +47,13 @@ in connections to your server. ''; }; - + policy = mkOption { default = '' - + diff --git a/nixos/modules/services/networking/hostapd.nix b/nixos/modules/services/networking/hostapd.nix index 3af0441a89d..9f74e496329 100644 --- a/nixos/modules/services/networking/hostapd.nix +++ b/nixos/modules/services/networking/hostapd.nix @@ -157,9 +157,9 @@ in { description = "hostapd wireless AP"; path = [ pkgs.hostapd ]; - wantedBy = [ "network.target" ]; - - after = [ "${cfg.interface}-cfg.service" "nat.service" "bind.service" "dhcpd.service" "sys-subsystem-net-devices-${cfg.interface}.device" ]; + after = [ "sys-subsystem-net-devices-${cfg.interface}.device" ]; + bindsTo = [ "sys-subsystem-net-devices-${cfg.interface}.device" ]; + requiredBy = [ "network-link-${cfg.interface}.service" ]; serviceConfig = { ExecStart = "${pkgs.hostapd}/bin/hostapd ${configFile}"; diff --git a/nixos/modules/services/networking/mxisd.nix b/nixos/modules/services/networking/mxisd.nix new file mode 100644 index 00000000000..0aa6d0d9ecd --- /dev/null +++ b/nixos/modules/services/networking/mxisd.nix @@ -0,0 +1,125 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.services.mxisd; + + server = optionalAttrs (cfg.server.name != null) { inherit (cfg.server) name; } + // optionalAttrs (cfg.server.port != null) { inherit (cfg.server) port; }; + + baseConfig = { + matrix.domain = cfg.matrix.domain; + key.path = "${cfg.dataDir}/signing.key"; + storage = { + provider.sqlite.database = "${cfg.dataDir}/mxisd.db"; + }; + } // optionalAttrs (server != {}) { inherit server; }; + + # merges baseConfig and extraConfig into a single file + fullConfig = recursiveUpdate baseConfig cfg.extraConfig; + + configFile = pkgs.writeText "mxisd-config.yaml" (builtins.toJSON fullConfig); + +in { + options = { + services.mxisd = { + enable = mkEnableOption "mxisd matrix federated identity server"; + + package = mkOption { + type = types.package; + default = pkgs.mxisd; + defaultText = "pkgs.mxisd"; + description = "The mxisd package to use"; + }; + + dataDir = mkOption { + type = types.str; + default = "/var/lib/mxisd"; + description = "Where data mxisd uses resides"; + }; + + extraConfig = mkOption { + type = types.attrs; + default = {}; + description = "Extra options merged into the mxisd configuration"; + }; + + matrix = { + + domain = mkOption { + type = types.str; + description = '' + the domain of the matrix homeserver + ''; + }; + + }; + + server = { + + name = mkOption { + type = types.nullOr types.str; + default = null; + description = '' + Public hostname of mxisd, if different from the Matrix domain. + ''; + }; + + port = mkOption { + type = types.nullOr types.int; + default = null; + description = '' + HTTP port to listen on (unencrypted) + ''; + }; + + }; + + }; + }; + + config = mkIf cfg.enable { + users.users = [ + { + name = "mxisd"; + group = "mxisd"; + home = cfg.dataDir; + createHome = true; + shell = "${pkgs.bash}/bin/bash"; + uid = config.ids.uids.mxisd; + } + ]; + + users.groups = [ + { + name = "mxisd"; + gid = config.ids.gids.mxisd; + } + ]; + + systemd.services.mxisd = { + description = "a federated identity server for the matrix ecosystem"; + after = [ "network.target" ]; + wantedBy = [ "multi-user.target" ]; + + # mxisd / spring.boot needs the configuration to be named "application.yaml" + preStart = '' + config=${cfg.dataDir}/application.yaml + cp ${configFile} $config + chmod 444 $config + ''; + + serviceConfig = { + Type = "simple"; + User = "mxisd"; + Group = "mxisd"; + ExecStart = "${cfg.package}/bin/mxisd --spring.config.location=${cfg.dataDir}/ --spring.profiles.active=systemd --java.security.egd=file:/dev/./urandom"; + WorkingDirectory = cfg.dataDir; + PermissionsStartOnly = true; + SuccessExitStatus = 143; + Restart = "on-failure"; + }; + }; + }; +} diff --git a/nixos/modules/services/networking/networkmanager.nix b/nixos/modules/services/networking/networkmanager.nix index 2d76e0676b2..d372dfd8f41 100644 --- a/nixos/modules/services/networking/networkmanager.nix +++ b/nixos/modules/services/networking/networkmanager.nix @@ -488,7 +488,7 @@ in { '') cfg.dynamicHosts.hostsDirs); serviceConfig = { Type = "oneshot"; - RemainAfterExist = true; + RemainAfterExit = true; }; }; diff --git a/nixos/modules/services/networking/nsd.nix b/nixos/modules/services/networking/nsd.nix index cde47bf23ea..8b918dab86d 100644 --- a/nixos/modules/services/networking/nsd.nix +++ b/nixos/modules/services/networking/nsd.nix @@ -435,7 +435,9 @@ let dnssecZones = (filterAttrs (n: v: if v ? dnssec then v.dnssec else false) zoneConfigs); - dnssec = length (attrNames dnssecZones) != 0; + dnssec = dnssecZones != {}; + + dnssecTools = pkgs.bind.override { enablePython = true; }; signZones = optionalString dnssec '' mkdir -p ${stateDir}/dnssec @@ -445,8 +447,8 @@ let ${concatStrings (mapAttrsToList signZone dnssecZones)} ''; signZone = name: zone: '' - ${pkgs.bind}/bin/dnssec-keymgr -g ${pkgs.bind}/bin/dnssec-keygen -s ${pkgs.bind}/bin/dnssec-settime -K ${stateDir}/dnssec -c ${policyFile name zone.dnssecPolicy} ${name} - ${pkgs.bind}/bin/dnssec-signzone -S -K ${stateDir}/dnssec -o ${name} -O full -N date ${stateDir}/zones/${name} + ${dnssecTools}/bin/dnssec-keymgr -g ${dnssecTools}/bin/dnssec-keygen -s ${dnssecTools}/bin/dnssec-settime -K ${stateDir}/dnssec -c ${policyFile name zone.dnssecPolicy} ${name} + ${dnssecTools}/bin/dnssec-signzone -S -K ${stateDir}/dnssec -o ${name} -O full -N date ${stateDir}/zones/${name} ${nsdPkg}/sbin/nsd-checkzone ${name} ${stateDir}/zones/${name}.signed && mv -v ${stateDir}/zones/${name}.signed ${stateDir}/zones/${name} ''; policyFile = name: policy: pkgs.writeText "${name}.policy" '' @@ -953,10 +955,6 @@ in ''; }; - nixpkgs.config = mkIf dnssec { - bind.enablePython = true; - }; - systemd.timers."nsd-dnssec" = mkIf dnssec { description = "Automatic DNSSEC key rollover"; diff --git a/nixos/modules/services/networking/ntpd.nix b/nixos/modules/services/networking/ntpd.nix index 342350d49ab..588d1c6edb0 100644 --- a/nixos/modules/services/networking/ntpd.nix +++ b/nixos/modules/services/networking/ntpd.nix @@ -15,6 +15,10 @@ let configFile = pkgs.writeText "ntp.conf" '' driftfile ${stateDir}/ntp.drift + restrict default ${toString cfg.restrictDefault} + restrict -6 default ${toString cfg.restrictDefault} + restrict source ${toString cfg.restrictSource} + restrict 127.0.0.1 restrict -6 ::1 @@ -36,11 +40,40 @@ in enable = mkOption { default = false; description = '' - Whether to synchronise your machine's time using the NTP - protocol. + Whether to synchronise your machine's time using ntpd, as a peer in + the NTP network. + + + Disables systemd.timesyncd if enabled. ''; }; + restrictDefault = mkOption { + type = types.listOf types.str; + description = '' + The restriction flags to be set by default. + + + The default flags prevent external hosts from using ntpd as a DDoS + reflector, setting system time, and querying OS/ntpd version. As + recommended in section 6.5.1.1.3, answer "No" of + http://support.ntp.org/bin/view/Support/AccessRestrictions + ''; + default = [ "limited" "kod" "nomodify" "notrap" "noquery" "nopeer" ]; + }; + + restrictSource = mkOption { + type = types.listOf types.str; + description = '' + The restriction flags to be set on source. + + + The default flags allow peers to be added by ntpd from configured + pool(s), but not by other means. + ''; + default = [ "limited" "kod" "nomodify" "notrap" "noquery" ]; + }; + servers = mkOption { default = config.networking.timeServers; description = '' @@ -51,6 +84,7 @@ in extraFlags = mkOption { type = types.listOf types.str; description = "Extra flags passed to the ntpd command."; + example = literalExample ''[ "--interface=eth0" ]''; default = []; }; @@ -67,6 +101,8 @@ in environment.systemPackages = [ pkgs.ntp ]; services.timesyncd.enable = mkForce false; + systemd.services.systemd-timedated.environment = { SYSTEMD_TIMEDATED_NTP_SERVICES = "ntpd.service"; }; + users.users = singleton { name = ntpUser; uid = config.ids.uids.ntp; diff --git a/nixos/modules/services/networking/oidentd.nix b/nixos/modules/services/networking/oidentd.nix index 8cf34623ab5..feb84806ba9 100644 --- a/nixos/modules/services/networking/oidentd.nix +++ b/nixos/modules/services/networking/oidentd.nix @@ -28,8 +28,7 @@ with lib; after = [ "network.target" ]; wantedBy = [ "multi-user.target" ]; serviceConfig.Type = "forking"; - script = "${pkgs.oidentd}/sbin/oidentd -u oidentd -g nogroup" + - optionalString config.networking.enableIPv6 " -a ::"; + script = "${pkgs.oidentd}/sbin/oidentd -u oidentd -g nogroup"; }; users.users.oidentd = { diff --git a/nixos/modules/services/networking/pptpd.nix b/nixos/modules/services/networking/pptpd.nix index 56a612b9105..d8b9e8f8341 100644 --- a/nixos/modules/services/networking/pptpd.nix +++ b/nixos/modules/services/networking/pptpd.nix @@ -5,7 +5,7 @@ with lib; { options = { services.pptpd = { - enable = mkEnableOption "Whether pptpd should be run on startup."; + enable = mkEnableOption "pptpd, the Point-to-Point Tunneling Protocol daemon"; serverIp = mkOption { type = types.string; diff --git a/nixos/modules/services/networking/prosody.nix b/nixos/modules/services/networking/prosody.nix index a37ef98caec..25b7d6dbeba 100644 --- a/nixos/modules/services/networking/prosody.nix +++ b/nixos/modules/services/networking/prosody.nix @@ -228,6 +228,7 @@ let createSSLOptsStr = o: '' ssl = { + cafile = "/etc/ssl/certs/ca-bundle.crt"; key = "${o.key}"; certificate = "${o.cert}"; ${concatStringsSep "\n" (mapAttrsToList (name: value: "${name} = ${toLua value};") o.extraOptions)} diff --git a/nixos/modules/services/networking/redsocks.nix b/nixos/modules/services/networking/redsocks.nix index a47a78f1005..8481f9debf3 100644 --- a/nixos/modules/services/networking/redsocks.nix +++ b/nixos/modules/services/networking/redsocks.nix @@ -267,4 +267,6 @@ in "ip46tables -t nat -D OUTPUT -p tcp ${redCond block} -j ${chain} 2>/dev/null || true" ) cfg.redsocks; }; + + meta.maintainers = with lib.maintainers; [ ekleog ]; } diff --git a/nixos/modules/services/networking/shairport-sync.nix b/nixos/modules/services/networking/shairport-sync.nix index 36ecb74ffc9..68e005ab81d 100644 --- a/nixos/modules/services/networking/shairport-sync.nix +++ b/nixos/modules/services/networking/shairport-sync.nix @@ -27,7 +27,7 @@ in }; arguments = mkOption { - default = "-v -d pulse"; + default = "-v -o pa"; description = '' Arguments to pass to the daemon. Defaults to a local pulseaudio server. diff --git a/nixos/modules/services/networking/ssh/sshd.nix b/nixos/modules/services/networking/ssh/sshd.nix index c16fbe8a52f..90d08ca3131 100644 --- a/nixos/modules/services/networking/ssh/sshd.nix +++ b/nixos/modules/services/networking/ssh/sshd.nix @@ -130,7 +130,7 @@ in }; ports = mkOption { - type = types.listOf types.int; + type = types.listOf types.port; default = [22]; description = '' Specifies on which ports the SSH daemon listens. @@ -352,6 +352,10 @@ in path = [ cfgc.package pkgs.gawk ]; environment.LD_LIBRARY_PATH = nssModulesPath; + restartTriggers = optionals (!cfg.startWhenNeeded) [ + config.environment.etc."ssh/sshd_config".source + ]; + preStart = '' # Make sure we don't write to stdout, since in case of @@ -387,6 +391,7 @@ in Restart = "always"; Type = "simple"; }); + }; in diff --git a/nixos/modules/services/networking/strongswan-swanctl/swanctl-params.nix b/nixos/modules/services/networking/strongswan-swanctl/swanctl-params.nix index b16d299917f..d4f7e95f859 100644 --- a/nixos/modules/services/networking/strongswan-swanctl/swanctl-params.nix +++ b/nixos/modules/services/networking/strongswan-swanctl/swanctl-params.nix @@ -248,6 +248,14 @@ in { ''; + ppk_id = mkOptionalStrParam '' + String identifying the Postquantum Preshared Key (PPK) to be used. + ''; + + ppk_required = mkYesNoParam no '' + Whether a Postquantum Preshared Key (PPK) is required for this connection. + ''; + keyingtries = mkIntParam 1 '' Number of retransmission sequences to perform during initial connect. Instead of giving up initiation after the first retransmission @@ -922,6 +930,36 @@ in { 0xffffffff. ''; + set_mark_in = mkStrParam "0/0x00000000" '' + Netfilter mark applied to packets after the inbound IPsec SA processed + them. This way it's not necessary to mark packets via Netfilter before + decryption or right afterwards to match policies or process them + differently (e.g. via policy routing). + + An additional mask may be appended to the mark, separated by + /. The default mask if omitted is 0xffffffff. The + special value %same uses the value (but not the mask) + from as mark value, which can be fixed, + %unique or %unique-dir. + + Setting marks in XFRM input requires Linux 4.19 or higher. + ''; + + set_mark_out = mkStrParam "0/0x00000000" '' + Netfilter mark applied to packets after the outbound IPsec SA processed + them. This allows processing ESP packets differently than the original + traffic (e.g. via policy routing). + + An additional mask may be appended to the mark, separated by + /. The default mask if omitted is 0xffffffff. The + special value %same uses the value (but not the mask) + from as mark value, which can be fixed, + %unique_ or %unique-dir. + + Setting marks in XFRM output is supported since Linux 4.14. Setting a + mask requires at least Linux 4.19. + ''; + tfc_padding = mkParamOfType (with lib.types; either int (enum ["mtu"])) 0 '' Pads ESP packets with additional data to have a consistent ESP packet size for improved Traffic Flow Confidentiality. The padding defines the @@ -946,6 +984,33 @@ in { supported, but the installation does not fail otherwise. ''; + copy_df = mkYesNoParam yes '' + Whether to copy the DF bit to the outer IPv4 header in tunnel mode. This + effectively disables Path MTU discovery (PMTUD). Controlling this + behavior is not supported by all kernel interfaces. + ''; + + copy_ecn = mkYesNoParam yes '' + Whether to copy the ECN (Explicit Congestion Notification) header field + to/from the outer IP header in tunnel mode. Controlling this behavior is + not supported by all kernel interfaces. + ''; + + copy_dscp = mkEnumParam [ "out" "in" "yes" "no" ] "out" '' + Whether to copy the DSCP (Differentiated Services Field Codepoint) + header field to/from the outer IP header in tunnel mode. The value + out only copies the field from the inner to the outer + header, the value in does the opposite and only + copies the field from the outer to the inner header when decapsulating, + the value yes copies the field in both directions, + and the value no disables copying the field + altogether. Setting this to yes or + in could allow an attacker to adversely affect other + traffic at the receiver, which is why the default is + out. Controlling this behavior is not supported by + all kernel interfaces. + ''; + start_action = mkEnumParam ["none" "trap" "start"] "none" '' Action to perform after loading the configuration. @@ -1060,6 +1125,24 @@ in { defined in a unique section having the ike prefix. ''; + ppk = mkPrefixedAttrsOfParams { + secret = mkOptionalStrParam '' + Value of the PPK. It may either be an ASCII string, a hex encoded string + if it has a 0x prefix or a Base64 encoded string if + it has a 0s prefix in its value. Should have at least + 256 bits of entropy for 128-bit security. + ''; + + id = mkPrefixedAttrsOfParam (mkOptionalStrParam "") '' + PPK identity the PPK belongs to. Multiple unique identities may be + specified, each having an id prefix, if a secret is + shared between multiple peers. + ''; + } '' + Postquantum Preshared Key (PPK) section for a specific secret. Each PPK is + defined in a unique section having the ppk prefix. + ''; + private = mkPrefixedAttrsOfParams { file = mkOptionalStrParam '' File name in the private folder for which this passphrase should be used. diff --git a/nixos/modules/services/networking/syncthing-relay.nix b/nixos/modules/services/networking/syncthing-relay.nix new file mode 100644 index 00000000000..f5ca63e7893 --- /dev/null +++ b/nixos/modules/services/networking/syncthing-relay.nix @@ -0,0 +1,121 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.services.syncthing.relay; + + dataDirectory = "/var/lib/syncthing-relay"; + + relayOptions = + [ + "--keys=${dataDirectory}" + "--listen=${cfg.listenAddress}:${toString cfg.port}" + "--status-srv=${cfg.statusListenAddress}:${toString cfg.statusPort}" + "--provided-by=${escapeShellArg cfg.providedBy}" + ] + ++ optional (cfg.pools != null) "--pools=${escapeShellArg (concatStringsSep "," cfg.pools)}" + ++ optional (cfg.globalRateBps != null) "--global-rate=${toString cfg.globalRateBps}" + ++ optional (cfg.perSessionRateBps != null) "--per-session-rate=${toString cfg.perSessionRateBps}" + ++ cfg.extraOptions; +in { + ###### interface + + options.services.syncthing.relay = { + enable = mkEnableOption "Syncthing relay service"; + + listenAddress = mkOption { + type = types.str; + default = ""; + example = "1.2.3.4"; + description = '' + Address to listen on for relay traffic. + ''; + }; + + port = mkOption { + type = types.port; + default = 22067; + description = '' + Port to listen on for relay traffic. This port should be added to + networking.firewall.allowedTCPPorts. + ''; + }; + + statusListenAddress = mkOption { + type = types.str; + default = ""; + example = "1.2.3.4"; + description = '' + Address to listen on for serving the relay status API. + ''; + }; + + statusPort = mkOption { + type = types.port; + default = 22070; + description = '' + Port to listen on for serving the relay status API. This port should be + added to networking.firewall.allowedTCPPorts. + ''; + }; + + pools = mkOption { + type = types.nullOr (types.listOf types.str); + default = null; + description = '' + Relay pools to join. If null, uses the default global pool. + ''; + }; + + providedBy = mkOption { + type = types.str; + default = ""; + description = '' + Human-readable description of the provider of the relay (you). + ''; + }; + + globalRateBps = mkOption { + type = types.nullOr types.ints.positive; + default = null; + description = '' + Global bandwidth rate limit in bytes per second. + ''; + }; + + perSessionRateBps = mkOption { + type = types.nullOr types.ints.positive; + default = null; + description = '' + Per session bandwidth rate limit in bytes per second. + ''; + }; + + extraOptions = mkOption { + type = types.listOf types.str; + default = []; + description = '' + Extra command line arguments to pass to strelaysrv. + ''; + }; + }; + + ###### implementation + + config = mkIf cfg.enable { + systemd.services.syncthing-relay = { + description = "Syncthing relay service"; + wantedBy = [ "multi-user.target" ]; + after = [ "network.target" ]; + + serviceConfig = { + DynamicUser = true; + StateDirectory = baseNameOf dataDirectory; + + Restart = "on-failure"; + ExecStart = "${pkgs.syncthing-relay}/bin/strelaysrv ${concatStringsSep " " relayOptions}"; + }; + }; + }; +} diff --git a/nixos/modules/services/networking/syncthing.nix b/nixos/modules/services/networking/syncthing.nix index c610b3b6660..b2ef1885a95 100644 --- a/nixos/modules/services/networking/syncthing.nix +++ b/nixos/modules/services/networking/syncthing.nix @@ -16,6 +16,14 @@ in { available on http://127.0.0.1:8384/. ''; + guiAddress = mkOption { + type = types.str; + default = "127.0.0.1:8384"; + description = '' + Address to serve the GUI. + ''; + }; + systemService = mkOption { type = types.bool; default = true; @@ -23,7 +31,7 @@ in { }; user = mkOption { - type = types.string; + type = types.str; default = defaultUser; description = '' Syncthing will be run under this user (user will be created if it doesn't exist. @@ -32,7 +40,7 @@ in { }; group = mkOption { - type = types.string; + type = types.str; default = "nogroup"; description = '' Syncthing will be run under this group (group will not be created if it doesn't exist. @@ -41,7 +49,7 @@ in { }; all_proxy = mkOption { - type = types.nullOr types.string; + type = with types; nullOr str; default = null; example = "socks5://address.com:1234"; description = '' @@ -54,9 +62,21 @@ in { dataDir = mkOption { type = types.path; default = "/var/lib/syncthing"; + description = '' + Path where synced directories will exist. + ''; + }; + + configDir = mkOption { + type = types.path; description = '' Path where the settings and keys will exist. ''; + default = + let + nixos = config.system.stateVersion; + cond = versionAtLeast nixos "19.03"; + in cfg.dataDir + (optionalString cond "/.config/syncthing"); }; openDefaultPorts = mkOption { @@ -132,7 +152,12 @@ in { User = cfg.user; Group = cfg.group; PermissionsStartOnly = true; - ExecStart = "${cfg.package}/bin/syncthing -no-browser -home=${cfg.dataDir}"; + ExecStart = '' + ${cfg.package}/bin/syncthing \ + -no-browser \ + -gui-address=${cfg.guiAddress} \ + -home=${cfg.configDir} + ''; }; }; diff --git a/nixos/modules/services/networking/tinc.nix b/nixos/modules/services/networking/tinc.nix index 35cdddc590b..3379efd1afc 100644 --- a/nixos/modules/services/networking/tinc.nix +++ b/nixos/modules/services/networking/tinc.nix @@ -148,14 +148,6 @@ in } )); - networking.interfaces = flip mapAttrs' cfg.networks (network: data: nameValuePair - ("tinc.${network}") - ({ - virtual = true; - virtualType = "${data.interfaceType}"; - }) - ); - systemd.services = flip mapAttrs' cfg.networks (network: data: nameValuePair ("tinc.${network}") ({ diff --git a/nixos/modules/services/networking/wireguard.nix b/nixos/modules/services/networking/wireguard.nix index 564632a85ae..41aff1480a0 100644 --- a/nixos/modules/services/networking/wireguard.nix +++ b/nixos/modules/services/networking/wireguard.nix @@ -202,7 +202,7 @@ let }; script = '' - modprobe wireguard + ${optionalString (!config.boot.isContainer) "modprobe wireguard"} ${values.preSetup} diff --git a/nixos/modules/services/networking/xl2tpd.nix b/nixos/modules/services/networking/xl2tpd.nix index 46111a76af8..d0a3ed7bb5e 100644 --- a/nixos/modules/services/networking/xl2tpd.nix +++ b/nixos/modules/services/networking/xl2tpd.nix @@ -5,7 +5,7 @@ with lib; { options = { services.xl2tpd = { - enable = mkEnableOption "Whether xl2tpd should be run on startup."; + enable = mkEnableOption "xl2tpd, the Layer 2 Tunnelling Protocol Daemon"; serverIp = mkOption { type = types.string; diff --git a/nixos/modules/services/networking/xrdp.nix b/nixos/modules/services/networking/xrdp.nix index 61f22a366a0..a1c5d879f3c 100644 --- a/nixos/modules/services/networking/xrdp.nix +++ b/nixos/modules/services/networking/xrdp.nix @@ -26,6 +26,12 @@ let substituteInPlace $out/sesman.ini \ --replace LogFile=xrdp-sesman.log LogFile=/dev/null \ --replace EnableSyslog=1 EnableSyslog=0 + + # Ensure that clipboard works for non-ASCII characters + sed -i -e '/.*SessionVariables.*/ a\ + LANG=${config.i18n.defaultLocale}\ + LOCALE_ARCHIVE=${config.i18n.glibcLocales}/lib/locale/locale-archive + ' $out/sesman.ini ''; in { @@ -36,7 +42,7 @@ in services.xrdp = { - enable = mkEnableOption "Whether xrdp should be run on startup."; + enable = mkEnableOption "xrdp, the Remote Desktop Protocol server"; package = mkOption { type = types.package; diff --git a/nixos/modules/services/networking/zerotierone.nix b/nixos/modules/services/networking/zerotierone.nix index a4cd368397e..764af3846fe 100644 --- a/nixos/modules/services/networking/zerotierone.nix +++ b/nixos/modules/services/networking/zerotierone.nix @@ -39,7 +39,8 @@ in systemd.services.zerotierone = { description = "ZeroTierOne"; path = [ cfg.package ]; - after = [ "network.target" ]; + bindsTo = [ "network-online.target" ]; + after = [ "network-online.target" ]; wantedBy = [ "multi-user.target" ]; preStart = '' mkdir -p /var/lib/zerotier-one/networks.d diff --git a/nixos/modules/services/networking/znc.nix b/nixos/modules/services/networking/znc.nix deleted file mode 100644 index f817db2ad00..00000000000 --- a/nixos/modules/services/networking/znc.nix +++ /dev/null @@ -1,431 +0,0 @@ -{ config, lib, pkgs, ...}: - -with lib; - -let - cfg = config.services.znc; - - defaultUser = "znc"; # Default user to own process. - - # Default user and pass: - # un=znc - # pw=nixospass - - defaultUserName = "znc"; - defaultPassBlock = " - - Method = sha256 - Hash = e2ce303c7ea75c571d80d8540a8699b46535be6a085be3414947d638e48d9e93 - Salt = l5Xryew4g*!oa(ECfX2o - - "; - - modules = pkgs.buildEnv { - name = "znc-modules"; - paths = cfg.modulePackages; - }; - - # Keep znc.conf in nix store, then symlink or copy into `dataDir`, depending on `mutable`. - mkZncConf = confOpts: '' - Version = 1.6.3 - ${concatMapStrings (n: "LoadModule = ${n}\n") confOpts.modules} - - - Port = ${toString confOpts.port} - IPv4 = true - IPv6 = true - SSL = ${boolToString confOpts.useSSL} - ${lib.optionalString (confOpts.uriPrefix != null) "URIPrefix = ${confOpts.uriPrefix}"} - - - - ${confOpts.passBlock} - Admin = true - Nick = ${confOpts.nick} - AltNick = ${confOpts.nick}_ - Ident = ${confOpts.nick} - RealName = ${confOpts.nick} - ${concatMapStrings (n: "LoadModule = ${n}\n") confOpts.userModules} - - ${ lib.concatStringsSep "\n" (lib.mapAttrsToList (name: net: '' - - ${concatMapStrings (m: "LoadModule = ${m}\n") net.modules} - Server = ${net.server} ${lib.optionalString net.useSSL "+"}${toString net.port} ${net.password} - ${concatMapStrings (c: "\n\n") net.channels} - ${lib.optionalString net.hasBitlbeeControlChannel '' - - - ''} - ${net.extraConf} - - '') confOpts.networks) } - - ${confOpts.extraZncConf} - ''; - - zncConfFile = pkgs.writeTextFile { - name = "znc.conf"; - text = if cfg.zncConf != "" - then cfg.zncConf - else mkZncConf cfg.confOptions; - }; - - networkOpts = { ... }: { - options = { - server = mkOption { - type = types.str; - example = "chat.freenode.net"; - description = '' - IRC server address. - ''; - }; - - port = mkOption { - type = types.int; - default = 6697; - example = 6697; - description = '' - IRC server port. - ''; - }; - - userName = mkOption { - default = ""; - example = "johntron"; - type = types.string; - description = '' - A nick identity specific to the IRC server. - ''; - }; - - password = mkOption { - type = types.str; - default = ""; - description = '' - IRC server password, such as for a Slack gateway. - ''; - }; - - useSSL = mkOption { - type = types.bool; - default = true; - description = '' - Whether to use SSL to connect to the IRC server. - ''; - }; - - modulePackages = mkOption { - type = types.listOf types.package; - default = []; - example = [ "pkgs.zncModules.push" "pkgs.zncModules.fish" ]; - description = '' - External ZNC modules to build. - ''; - }; - - modules = mkOption { - type = types.listOf types.str; - default = [ "simple_away" ]; - example = literalExample "[ simple_away sasl ]"; - description = '' - ZNC modules to load. - ''; - }; - - channels = mkOption { - type = types.listOf types.str; - default = []; - example = [ "nixos" ]; - description = '' - IRC channels to join. - ''; - }; - - hasBitlbeeControlChannel = mkOption { - type = types.bool; - default = false; - description = '' - Whether to add the special Bitlbee operations channel. - ''; - }; - - extraConf = mkOption { - default = ""; - type = types.lines; - example = '' - Encoding = ^UTF-8 - FloodBurst = 4 - FloodRate = 1.00 - IRCConnectEnabled = true - Ident = johntron - JoinDelay = 0 - Nick = johntron - ''; - description = '' - Extra config for the network. - ''; - }; - }; - }; - -in - -{ - - ###### Interface - - options = { - services.znc = { - enable = mkOption { - default = false; - type = types.bool; - description = '' - Enable a ZNC service for a user. - ''; - }; - - user = mkOption { - default = "znc"; - example = "john"; - type = types.string; - description = '' - The name of an existing user account to use to own the ZNC server process. - If not specified, a default user will be created to own the process. - ''; - }; - - group = mkOption { - default = ""; - example = "users"; - type = types.string; - description = '' - Group to own the ZNCserver process. - ''; - }; - - dataDir = mkOption { - default = "/var/lib/znc/"; - example = "/home/john/.znc/"; - type = types.path; - description = '' - The data directory. Used for configuration files and modules. - ''; - }; - - openFirewall = mkOption { - type = types.bool; - default = false; - description = '' - Whether to open ports in the firewall for ZNC. - ''; - }; - - zncConf = mkOption { - default = ""; - example = "See: http://wiki.znc.in/Configuration"; - type = types.lines; - description = '' - Config file as generated with `znc --makeconf` to use for the whole ZNC configuration. - If specified, `confOptions` will be ignored, and this value, as-is, will be used. - If left empty, a conf file with default values will be used. - ''; - }; - - confOptions = { - modules = mkOption { - type = types.listOf types.str; - default = [ "webadmin" "adminlog" ]; - example = [ "partyline" "webadmin" "adminlog" "log" ]; - description = '' - A list of modules to include in the `znc.conf` file. - ''; - }; - - userModules = mkOption { - type = types.listOf types.str; - default = [ "chansaver" "controlpanel" ]; - example = [ "chansaver" "controlpanel" "fish" "push" ]; - description = '' - A list of user modules to include in the `znc.conf` file. - ''; - }; - - userName = mkOption { - default = defaultUserName; - example = "johntron"; - type = types.string; - description = '' - The user name used to log in to the ZNC web admin interface. - ''; - }; - - networks = mkOption { - default = { }; - type = with types; attrsOf (submodule networkOpts); - description = '' - IRC networks to connect the user to. - ''; - example = { - "freenode" = { - server = "chat.freenode.net"; - port = 6697; - useSSL = true; - modules = [ "simple_away" ]; - }; - }; - }; - - nick = mkOption { - default = "znc-user"; - example = "john"; - type = types.string; - description = '' - The IRC nick. - ''; - }; - - passBlock = mkOption { - example = defaultPassBlock; - type = types.string; - description = '' - Generate with `nix-shell -p znc --command "znc --makepass"`. - This is the password used to log in to the ZNC web admin interface. - ''; - }; - - port = mkOption { - default = 5000; - example = 5000; - type = types.int; - description = '' - Specifies the port on which to listen. - ''; - }; - - useSSL = mkOption { - default = true; - type = types.bool; - description = '' - Indicates whether the ZNC server should use SSL when listening on the specified port. A self-signed certificate will be generated. - ''; - }; - - uriPrefix = mkOption { - type = types.nullOr types.str; - default = null; - example = "/znc/"; - description = '' - An optional URI prefix for the ZNC web interface. Can be - used to make ZNC available behind a reverse proxy. - ''; - }; - - extraZncConf = mkOption { - default = ""; - type = types.lines; - description = '' - Extra config to `znc.conf` file. - ''; - }; - }; - - modulePackages = mkOption { - type = types.listOf types.package; - default = [ ]; - example = literalExample "[ pkgs.zncModules.fish pkgs.zncModules.push ]"; - description = '' - A list of global znc module packages to add to znc. - ''; - }; - - mutable = mkOption { - default = true; - type = types.bool; - description = '' - Indicates whether to allow the contents of the `dataDir` directory to be changed - by the user at run-time. - If true, modifications to the ZNC configuration after its initial creation are not - overwritten by a NixOS system rebuild. - If false, the ZNC configuration is rebuilt by every system rebuild. - If the user wants to manage the ZNC service using the web admin interface, this value - should be set to true. - ''; - }; - - extraFlags = mkOption { - default = [ ]; - example = [ "--debug" ]; - type = types.listOf types.str; - description = '' - Extra flags to use when executing znc command. - ''; - }; - }; - }; - - - ###### Implementation - - config = mkIf cfg.enable { - - networking.firewall = mkIf cfg.openFirewall { - allowedTCPPorts = [ cfg.confOptions.port ]; - }; - - systemd.services.znc = { - description = "ZNC Server"; - wantedBy = [ "multi-user.target" ]; - after = [ "network.service" ]; - serviceConfig = { - User = cfg.user; - Group = cfg.group; - Restart = "always"; - ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID"; - ExecStop = "${pkgs.coreutils}/bin/kill -INT $MAINPID"; - }; - preStart = '' - ${pkgs.coreutils}/bin/mkdir -p ${cfg.dataDir}/configs - - # If mutable, regenerate conf file every time. - ${optionalString (!cfg.mutable) '' - ${pkgs.coreutils}/bin/echo "znc is set to be system-managed. Now deleting old znc.conf file to be regenerated." - ${pkgs.coreutils}/bin/rm -f ${cfg.dataDir}/configs/znc.conf - ''} - - # Ensure essential files exist. - if [[ ! -f ${cfg.dataDir}/configs/znc.conf ]]; then - ${pkgs.coreutils}/bin/echo "No znc.conf file found in ${cfg.dataDir}. Creating one now." - ${pkgs.coreutils}/bin/cp --no-clobber ${zncConfFile} ${cfg.dataDir}/configs/znc.conf - ${pkgs.coreutils}/bin/chmod u+rw ${cfg.dataDir}/configs/znc.conf - ${pkgs.coreutils}/bin/chown ${cfg.user} ${cfg.dataDir}/configs/znc.conf - fi - - if [[ ! -f ${cfg.dataDir}/znc.pem ]]; then - ${pkgs.coreutils}/bin/echo "No znc.pem file found in ${cfg.dataDir}. Creating one now." - ${pkgs.znc}/bin/znc --makepem --datadir ${cfg.dataDir} - fi - - # Symlink modules - rm ${cfg.dataDir}/modules || true - ln -fs ${modules}/lib/znc ${cfg.dataDir}/modules - ''; - script = "${pkgs.znc}/bin/znc --foreground --datadir ${cfg.dataDir} ${toString cfg.extraFlags}"; - }; - - 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.groups = optional (cfg.user == defaultUser) - { name = defaultUser; - gid = config.ids.gids.znc; - members = [ defaultUser ]; - }; - - }; -} diff --git a/nixos/modules/services/networking/znc/default.nix b/nixos/modules/services/networking/znc/default.nix new file mode 100644 index 00000000000..bce5b15a19e --- /dev/null +++ b/nixos/modules/services/networking/znc/default.nix @@ -0,0 +1,306 @@ +{ config, lib, pkgs, ...}: + +with lib; + +let + + cfg = config.services.znc; + + defaultUser = "znc"; + + modules = pkgs.buildEnv { + name = "znc-modules"; + paths = cfg.modulePackages; + }; + + listenerPorts = concatMap (l: optional (l ? Port) l.Port) + (attrValues (cfg.config.Listener or {})); + + # Converts the config option to a string + semanticString = let + + sortedAttrs = set: sort (l: r: + if l == "extraConfig" then false # Always put extraConfig last + else if isAttrs set.${l} == isAttrs set.${r} then l < r + else isAttrs set.${r} # Attrsets should be last, makes for a nice config + # This last case occurs when any side (but not both) is an attrset + # The order of these is correct when the attrset is on the right + # which we're just returning + ) (attrNames set); + + # Specifies an attrset that encodes the value according to its type + encode = name: value: { + null = []; + bool = [ "${name} = ${boolToString value}" ]; + int = [ "${name} = ${toString value}" ]; + + # extraConfig should be inserted verbatim + string = [ (if name == "extraConfig" then value else "${name} = ${value}") ]; + + # Values like `Foo = [ "bar" "baz" ];` should be transformed into + # Foo=bar + # Foo=baz + list = concatMap (encode name) value; + + # Values like `Foo = { bar = { Baz = "baz"; Qux = "qux"; Florps = null; }; };` should be transmed into + # + # Baz=baz + # Qux=qux + # + set = concatMap (subname: [ + "<${name} ${subname}>" + ] ++ map (line: "\t${line}") (toLines value.${subname}) ++ [ + "" + ]) (filter (v: v != null) (attrNames value)); + + }.${builtins.typeOf value}; + + # One level "above" encode, acts upon a set and uses encode on each name,value pair + toLines = set: concatMap (name: encode name set.${name}) (sortedAttrs set); + + in + concatStringsSep "\n" (toLines cfg.config); + + semanticTypes = with types; rec { + zncAtom = nullOr (either (either int bool) str); + zncAttr = attrsOf (nullOr zncConf); + zncAll = either (either zncAtom (listOf zncAtom)) zncAttr; + zncConf = attrsOf (zncAll // { + # Since this is a recursive type and the description by default contains + # the description of its subtypes, infinite recursion would occur without + # explicitly breaking this cycle + description = "znc values (null, atoms (str, int, bool), list of atoms, or attrsets of znc values)"; + }); + }; + +in + +{ + + imports = [ ./options.nix ]; + + options = { + services.znc = { + enable = mkEnableOption "ZNC"; + + user = mkOption { + default = "znc"; + example = "john"; + type = types.str; + description = '' + The name of an existing user account to use to own the ZNC server + process. If not specified, a default user will be created. + ''; + }; + + group = mkOption { + default = defaultUser; + example = "users"; + type = types.str; + description = '' + Group to own the ZNC process. + ''; + }; + + dataDir = mkOption { + default = "/var/lib/znc/"; + example = "/home/john/.znc/"; + type = types.path; + description = '' + The state directory for ZNC. The config and the modules will be linked + to from this directory as well. + ''; + }; + + openFirewall = mkOption { + type = types.bool; + default = false; + description = '' + Whether to open ports in the firewall for ZNC. Does work with + ports for listeners specified in + . + ''; + }; + + config = mkOption { + type = semanticTypes.zncConf; + default = {}; + example = literalExample '' + { + LoadModule = [ "webadmin" "adminlog" ]; + User.paul = { + Admin = true; + Nick = "paul"; + AltNick = "paul1"; + LoadModule = [ "chansaver" "controlpanel" ]; + Network.freenode = { + Server = "chat.freenode.net +6697"; + LoadModule = [ "simple_away" ]; + Chan = { + "#nixos" = { Detached = false; }; + "##linux" = { Disabled = true; }; + }; + }; + Pass.password = { + Method = "sha256"; + Hash = "e2ce303c7ea75c571d80d8540a8699b46535be6a085be3414947d638e48d9e93"; + Salt = "l5Xryew4g*!oa(ECfX2o"; + }; + }; + } + ''; + description = '' + Configuration for ZNC, see + https://wiki.znc.in/Configuration for details. The + Nix value declared here will be translated directly to the xml-like + format ZNC expects. This is much more flexible than the legacy options + under , but also can't do + any type checking. + + + You can use nix-instantiate --eval --strict '<nixpkgs/nixos>' -A config.services.znc.config + to view the current value. By default it contains a listener for port + 5000 with SSL enabled. + + + Nix attributes called extraConfig will be inserted + verbatim into the resulting config file. + + + If is turned on, the + option values in will be + gracefully be applied to this option. + + + If you intend to update the configuration through this option, be sure + to enable , otherwise none of the + changes here will be applied after the initial deploy. + ''; + }; + + configFile = mkOption { + type = types.path; + example = "~/.znc/configs/znc.conf"; + description = '' + Configuration file for ZNC. It is recommended to use the + option instead. + + + Setting this option will override any auto-generated config file + through the or + options. + ''; + }; + + modulePackages = mkOption { + type = types.listOf types.package; + default = [ ]; + example = literalExample "[ pkgs.zncModules.fish pkgs.zncModules.push ]"; + description = '' + A list of global znc module packages to add to znc. + ''; + }; + + mutable = mkOption { + default = true; # TODO: Default to true when config is set, make sure to not delete the old config if present + type = types.bool; + description = '' + Indicates whether to allow the contents of the + dataDir directory to be changed by the user at + run-time. + + + If enabled, modifications to the ZNC configuration after its initial + creation are not overwritten by a NixOS rebuild. If disabled, the + ZNC configuration is rebuilt on every NixOS rebuild. + + + If the user wants to manage the ZNC service using the web admin + interface, this option should be enabled. + ''; + }; + + extraFlags = mkOption { + default = [ ]; + example = [ "--debug" ]; + type = types.listOf types.str; + description = '' + Extra arguments to use for executing znc. + ''; + }; + }; + }; + + + ###### Implementation + + config = mkIf cfg.enable { + + services.znc = { + configFile = mkDefault (pkgs.writeText "znc-generated.conf" semanticString); + config = { + Version = (builtins.parseDrvName pkgs.znc.name).version; + Listener.l.Port = mkDefault 5000; + Listener.l.SSL = mkDefault true; + }; + }; + + networking.firewall.allowedTCPPorts = mkIf cfg.openFirewall listenerPorts; + + systemd.services.znc = { + description = "ZNC Server"; + wantedBy = [ "multi-user.target" ]; + after = [ "network-online.target" ]; + serviceConfig = { + User = cfg.user; + Group = cfg.group; + Restart = "always"; + ExecStart = "${pkgs.znc}/bin/znc --foreground --datadir ${cfg.dataDir} ${escapeShellArgs cfg.extraFlags}"; + ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID"; + ExecStop = "${pkgs.coreutils}/bin/kill -INT $MAINPID"; + }; + preStart = '' + mkdir -p ${cfg.dataDir}/configs + + # If mutable, regenerate conf file every time. + ${optionalString (!cfg.mutable) '' + echo "znc is set to be system-managed. Now deleting old znc.conf file to be regenerated." + rm -f ${cfg.dataDir}/configs/znc.conf + ''} + + # Ensure essential files exist. + if [[ ! -f ${cfg.dataDir}/configs/znc.conf ]]; then + echo "No znc.conf file found in ${cfg.dataDir}. Creating one now." + cp --no-clobber ${cfg.configFile} ${cfg.dataDir}/configs/znc.conf + chmod u+rw ${cfg.dataDir}/configs/znc.conf + chown ${cfg.user} ${cfg.dataDir}/configs/znc.conf + fi + + if [[ ! -f ${cfg.dataDir}/znc.pem ]]; then + echo "No znc.pem file found in ${cfg.dataDir}. Creating one now." + ${pkgs.znc}/bin/znc --makepem --datadir ${cfg.dataDir} + fi + + # Symlink modules + rm ${cfg.dataDir}/modules || true + ln -fs ${modules}/lib/znc ${cfg.dataDir}/modules + ''; + }; + + 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.groups = optional (cfg.user == defaultUser) + { name = defaultUser; + gid = config.ids.gids.znc; + members = [ defaultUser ]; + }; + + }; +} diff --git a/nixos/modules/services/networking/znc/options.nix b/nixos/modules/services/networking/znc/options.nix new file mode 100644 index 00000000000..048dbd73863 --- /dev/null +++ b/nixos/modules/services/networking/znc/options.nix @@ -0,0 +1,270 @@ +{ lib, config, ... }: + +with lib; + +let + + cfg = config.services.znc; + + networkOpts = { + options = { + + server = mkOption { + type = types.str; + example = "chat.freenode.net"; + description = '' + IRC server address. + ''; + }; + + port = mkOption { + type = types.ints.u16; + default = 6697; + description = '' + IRC server port. + ''; + }; + + password = mkOption { + type = types.str; + default = ""; + description = '' + IRC server password, such as for a Slack gateway. + ''; + }; + + useSSL = mkOption { + type = types.bool; + default = true; + description = '' + Whether to use SSL to connect to the IRC server. + ''; + }; + + modules = mkOption { + type = types.listOf types.str; + default = [ "simple_away" ]; + example = literalExample "[ simple_away sasl ]"; + description = '' + ZNC network modules to load. + ''; + }; + + channels = mkOption { + type = types.listOf types.str; + default = []; + example = [ "nixos" ]; + description = '' + IRC channels to join. + ''; + }; + + hasBitlbeeControlChannel = mkOption { + type = types.bool; + default = false; + description = '' + Whether to add the special Bitlbee operations channel. + ''; + }; + + extraConf = mkOption { + default = ""; + type = types.lines; + example = '' + Encoding = ^UTF-8 + FloodBurst = 4 + FloodRate = 1.00 + IRCConnectEnabled = true + Ident = johntron + JoinDelay = 0 + Nick = johntron + ''; + description = '' + Extra config for the network. Consider using + instead. + ''; + }; + }; + }; + +in + +{ + + options = { + services.znc = { + + useLegacyConfig = mkOption { + default = true; + type = types.bool; + description = '' + Whether to propagate the legacy options under + to the znc config. If this + is turned on, the znc config will contain a user with the default name + "znc", global modules "webadmin" and "adminlog" will be enabled by + default, and more, all controlled through the + options. + You can use nix-instantiate --eval --strict '<nixpkgs/nixos>' -A config.services.znc.config + to view the current value of the config. + + + In any case, if you need more flexibility, + can be used to override/add to + all of the legacy options. + ''; + }; + + confOptions = { + modules = mkOption { + type = types.listOf types.str; + default = [ "webadmin" "adminlog" ]; + example = [ "partyline" "webadmin" "adminlog" "log" ]; + description = '' + A list of modules to include in the `znc.conf` file. + ''; + }; + + userModules = mkOption { + type = types.listOf types.str; + default = [ "chansaver" "controlpanel" ]; + example = [ "chansaver" "controlpanel" "fish" "push" ]; + description = '' + A list of user modules to include in the `znc.conf` file. + ''; + }; + + userName = mkOption { + default = "znc"; + example = "johntron"; + type = types.str; + description = '' + The user name used to log in to the ZNC web admin interface. + ''; + }; + + networks = mkOption { + default = { }; + type = with types; attrsOf (submodule networkOpts); + description = '' + IRC networks to connect the user to. + ''; + example = literalExample '' + { + "freenode" = { + server = "chat.freenode.net"; + port = 6697; + useSSL = true; + modules = [ "simple_away" ]; + }; + }; + ''; + }; + + nick = mkOption { + default = "znc-user"; + example = "john"; + type = types.str; + description = '' + The IRC nick. + ''; + }; + + passBlock = mkOption { + example = literalExample '' + <Pass password> + Method = sha256 + Hash = e2ce303c7ea75c571d80d8540a8699b46535be6a085be3414947d638e48d9e93 + Salt = l5Xryew4g*!oa(ECfX2o + </Pass> + ''; + type = types.str; + description = '' + Generate with `nix-shell -p znc --command "znc --makepass"`. + This is the password used to log in to the ZNC web admin interface. + You can also set this through + + and co. + ''; + }; + + port = mkOption { + default = 5000; + type = types.int; + description = '' + Specifies the port on which to listen. + ''; + }; + + useSSL = mkOption { + default = true; + type = types.bool; + description = '' + Indicates whether the ZNC server should use SSL when listening on + the specified port. A self-signed certificate will be generated. + ''; + }; + + uriPrefix = mkOption { + type = types.nullOr types.str; + default = null; + example = "/znc/"; + description = '' + An optional URI prefix for the ZNC web interface. Can be + used to make ZNC available behind a reverse proxy. + ''; + }; + + extraZncConf = mkOption { + default = ""; + type = types.lines; + description = '' + Extra config to `znc.conf` file. + ''; + }; + }; + + }; + }; + + config = mkIf cfg.useLegacyConfig { + + services.znc.config = let + c = cfg.confOptions; + # defaults here should override defaults set in the non-legacy part + mkDefault = mkOverride 900; + in { + LoadModule = mkDefault c.modules; + Listener.l = { + Port = mkDefault c.port; + IPv4 = mkDefault true; + IPv6 = mkDefault true; + SSL = mkDefault c.useSSL; + URIPrefix = c.uriPrefix; + }; + User.${c.userName} = { + Admin = mkDefault true; + Nick = mkDefault c.nick; + AltNick = mkDefault "${c.nick}_"; + Ident = mkDefault c.nick; + RealName = mkDefault c.nick; + LoadModule = mkDefault c.userModules; + Network = mapAttrs (name: net: { + LoadModule = mkDefault net.modules; + Server = mkDefault "${net.server} ${optionalString net.useSSL "+"}${toString net.port} ${net.password}"; + Chan = optionalAttrs net.hasBitlbeeControlChannel { "&bitlbee" = mkDefault {}; } // + listToAttrs (map (n: nameValuePair "#${n}" (mkDefault {})) net.channels); + extraConfig = if net.extraConf == "" then mkDefault null else net.extraConf; + }) c.networks; + extraConfig = [ c.passBlock ]; + }; + extraConfig = optional (c.extraZncConf != "") c.extraZncConf; + }; + }; + + imports = [ + (mkRemovedOptionModule ["services" "znc" "zncConf"] '' + Instead of `services.znc.zncConf = "... foo ...";`, use + `services.znc.configFile = pkgs.writeText "znc.conf" "... foo ...";`. + '') + ]; +} diff --git a/nixos/modules/services/printing/cupsd.nix b/nixos/modules/services/printing/cupsd.nix index dbf18ec1d11..1031d6f3d7e 100644 --- a/nixos/modules/services/printing/cupsd.nix +++ b/nixos/modules/services/printing/cupsd.nix @@ -250,7 +250,7 @@ in drivers = mkOption { type = types.listOf types.path; default = []; - example = literalExample "[ pkgs.gutenprint pkgs.hplip pkgs.splix ]"; + example = literalExample "with pkgs; [ gutenprint hplip splix cups-googlecloudprint ]"; description = '' CUPS drivers to use. Drivers provided by CUPS, cups-filters, Ghostscript and Samba are added unconditionally. If this list contains diff --git a/nixos/modules/services/search/elasticsearch-curator.nix b/nixos/modules/services/search/elasticsearch-curator.nix index 43785c392fe..8cb1275284a 100644 --- a/nixos/modules/services/search/elasticsearch-curator.nix +++ b/nixos/modules/services/search/elasticsearch-curator.nix @@ -82,11 +82,12 @@ in { }; config = mkIf cfg.enable { - systemd.services.elasticsearch-curator = { startAt = cfg.interval; serviceConfig = { - ExecStart = ''${pkgs.python36Packages.elasticsearch-curator}/bin/curator --config ${curatorConfig} ${curatorAction}''; + ExecStart = + "${pkgs.python3Packages.elasticsearch-curator}/bin/curator" + + " --config ${curatorConfig} ${curatorAction}"; }; }; }; diff --git a/nixos/modules/services/search/kibana.nix b/nixos/modules/services/search/kibana.nix index ca36bba58c0..3539b3ddb4f 100644 --- a/nixos/modules/services/search/kibana.nix +++ b/nixos/modules/services/search/kibana.nix @@ -149,7 +149,10 @@ in { after = [ "network.target" "elasticsearch.service" ]; environment = { BABEL_CACHE_PATH = "${cfg.dataDir}/.babelcache.json"; }; serviceConfig = { - ExecStart = "${cfg.package}/bin/kibana --config ${cfgFile}"; + ExecStart = + "${cfg.package}/bin/kibana" + + " --config ${cfgFile}" + + " --path.data ${cfg.dataDir}"; User = "kibana"; WorkingDirectory = cfg.dataDir; }; diff --git a/nixos/modules/services/search/solr.nix b/nixos/modules/services/search/solr.nix index 90140a337ed..7200c40e89f 100644 --- a/nixos/modules/services/search/solr.nix +++ b/nixos/modules/services/search/solr.nix @@ -6,142 +6,105 @@ let cfg = config.services.solr; - # Assemble all jars needed for solr - solrJars = pkgs.stdenv.mkDerivation { - name = "solr-jars"; - - src = pkgs.fetchurl { - url = http://archive.apache.org/dist/tomcat/tomcat-5/v5.5.36/bin/apache-tomcat-5.5.36.tar.gz; - sha256 = "01mzvh53wrs1p2ym765jwd00gl6kn8f9k3nhdrnhdqr8dhimfb2p"; - }; - - installPhase = '' - mkdir -p $out/lib - cp common/lib/*.jar $out/lib/ - ln -s ${pkgs.ant}/lib/ant/lib/ant.jar $out/lib/ - ln -s ${cfg.solrPackage}/lib/ext/* $out/lib/ - ln -s ${pkgs.jdk.home}/lib/tools.jar $out/lib/ - '' + optionalString (cfg.extraJars != []) '' - for f in ${concatStringsSep " " cfg.extraJars}; do - cp $f $out/lib - done - ''; - }; - -in { +in +{ options = { services.solr = { - enable = mkOption { - type = types.bool; - default = false; - description = '' - Enables the solr service. - ''; - }; + enable = mkEnableOption "Enables the solr service."; - javaPackage = mkOption { - type = types.package; - default = pkgs.jre; - defaultText = "pkgs.jre"; - description = '' - Which Java derivation to use for running solr. - ''; - }; - - solrPackage = mkOption { + package = mkOption { type = types.package; default = pkgs.solr; defaultText = "pkgs.solr"; - description = '' - Which solr derivation to use for running solr. - ''; + description = "Which Solr package to use."; }; - extraJars = mkOption { - type = types.listOf types.path; - default = []; - description = '' - List of paths pointing to jars. Jars are copied to commonLibFolder to be available to java/solr. - ''; + port = mkOption { + type = types.int; + default = 8983; + description = "Port on which Solr is ran."; }; - log4jConfiguration = mkOption { - type = types.lines; - default = '' - log4j.rootLogger=INFO, stdout - log4j.appender.stdout=org.apache.log4j.ConsoleAppender - log4j.appender.stdout.Target=System.out - log4j.appender.stdout.layout=org.apache.log4j.PatternLayout - log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n - ''; - description = '' - Contents of the log4j.properties used. By default, - everything is logged to stdout (picked up by systemd) with level INFO. - ''; - }; - - user = mkOption { - type = types.str; - description = '' - The user that should run the solr process and. - the working directories. - ''; - }; - - group = mkOption { - type = types.str; - description = '' - The group that will own the working directory. - ''; - }; - - solrHome = mkOption { - type = types.str; - description = '' - The solr home directory. It is your own responsibility to - make sure this directory contains a working solr configuration, - and is writeable by the the user running the solr service. - Failing to do so, the solr will not start properly. - ''; + stateDir = mkOption { + type = types.path; + default = "/var/lib/solr"; + description = "The solr home directory containing config, data, and logging files."; }; extraJavaOptions = mkOption { type = types.listOf types.str; default = []; - description = '' - Extra command line options given to the java process running - solr. - ''; + description = "Extra command line options given to the java process running Solr."; }; - extraWinstoneOptions = mkOption { - type = types.listOf types.str; - default = []; - description = '' - Extra command line options given to the Winstone, which is - the servlet container hosting solr. - ''; + user = mkOption { + type = types.str; + default = "solr"; + description = "User under which Solr is ran."; + }; + + group = mkOption { + type = types.str; + default = "solr"; + description = "Group under which Solr is ran."; }; }; }; config = mkIf cfg.enable { - services.winstone.solr = { - serviceName = "solr"; - inherit (cfg) user group javaPackage; - warFile = "${cfg.solrPackage}/lib/solr.war"; - extraOptions = [ - "--commonLibFolder=${solrJars}/lib" - "--useJasper" - ] ++ cfg.extraWinstoneOptions; - extraJavaOptions = [ - "-Dsolr.solr.home=${cfg.solrHome}" - "-Dlog4j.configuration=file://${pkgs.writeText "log4j.properties" cfg.log4jConfiguration}" - ] ++ cfg.extraJavaOptions; + environment.systemPackages = [ cfg.package ]; + + systemd.services.solr = { + after = [ "network.target" "remote-fs.target" "nss-lookup.target" "systemd-journald-dev-log.socket" ]; + wantedBy = [ "multi-user.target" ]; + + environment = { + SOLR_HOME = "${cfg.stateDir}/data"; + LOG4J_PROPS = "${cfg.stateDir}/log4j2.xml"; + SOLR_LOGS_DIR = "${cfg.stateDir}/logs"; + SOLR_PORT = "${toString cfg.port}"; + }; + path = with pkgs; [ + gawk + procps + ]; + preStart = '' + mkdir -p "${cfg.stateDir}/data"; + mkdir -p "${cfg.stateDir}/logs"; + + if ! test -e "${cfg.stateDir}/data/solr.xml"; then + install -D -m0640 ${cfg.package}/server/solr/solr.xml "${cfg.stateDir}/data/solr.xml" + install -D -m0640 ${cfg.package}/server/solr/zoo.cfg "${cfg.stateDir}/data/zoo.cfg" + fi + + if ! test -e "${cfg.stateDir}/log4j2.xml"; then + install -D -m0640 ${cfg.package}/server/resources/log4j2.xml "${cfg.stateDir}/log4j2.xml" + fi + ''; + + serviceConfig = { + User = cfg.user; + Group = cfg.group; + ExecStart="${cfg.package}/bin/solr start -f -a \"${concatStringsSep " " cfg.extraJavaOptions}\""; + ExecStop="${cfg.package}/bin/solr stop"; + }; }; + users.users = optionalAttrs (cfg.user == "solr") (singleton + { name = "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; + }); + }; } diff --git a/nixos/modules/services/security/munge.nix b/nixos/modules/services/security/munge.nix index 5bca1583354..fda864f2c30 100644 --- a/nixos/modules/services/security/munge.nix +++ b/nixos/modules/services/security/munge.nix @@ -53,8 +53,6 @@ in chmod 0700 ${cfg.password} mkdir -p /var/lib/munge -m 0711 chown -R munge:munge /var/lib/munge - mkdir -p /var/log/munge -m 0700 - chown -R munge:munge /var/log/munge mkdir -p /run/munge -m 0755 chown -R munge:munge /run/munge ''; diff --git a/nixos/modules/services/security/tor.nix b/nixos/modules/services/security/tor.nix index 9b6d4be9bda..61b751bb518 100644 --- a/nixos/modules/services/security/tor.nix +++ b/nixos/modules/services/security/tor.nix @@ -57,6 +57,11 @@ let AutomapHostsSuffixes ${concatStringsSep "," cfg.client.dns.automapHostsSuffixes} ''} '' + # Explicitly disable the SOCKS server if the client is disabled. In + # particular, this makes non-anonymous hidden services possible. + + optionalString (! cfg.client.enable) '' + SOCKSPort 0 + '' # Relay config + optionalString cfg.relay.enable '' ORPort ${toString cfg.relay.port} @@ -87,6 +92,7 @@ let # Hidden services + concatStrings (flip mapAttrsToList cfg.hiddenServices (n: v: '' HiddenServiceDir ${torDirectory}/onion/${v.name} + ${optionalString (v.version != null) "HiddenServiceVersion ${toString v.version}"} ${flip concatMapStrings v.map (p: '' HiddenServicePort ${toString p.port} ${p.destination} '')} @@ -662,6 +668,12 @@ in }; })); }; + + version = mkOption { + default = null; + description = "Rendezvous service descriptor version to publish for the hidden service. Currently, versions 2 and 3 are supported. (Default: 2)"; + type = types.nullOr (types.enum [ 2 3 ]); + }; }; config = { diff --git a/nixos/modules/services/system/cloud-init.nix b/nixos/modules/services/system/cloud-init.nix index 1a700828ce7..3ad555f78ef 100644 --- a/nixos/modules/services/system/cloud-init.nix +++ b/nixos/modules/services/system/cloud-init.nix @@ -3,13 +3,20 @@ with lib; let cfg = config.services.cloud-init; - path = with pkgs; [ cloud-init nettools utillinux e2fsprogs shadow openssh iproute ]; + path = with pkgs; [ + cloud-init + iproute + nettools + openssh + shadow + utillinux + ] ++ optional cfg.btrfs.enable btrfs-progs + ++ optional cfg.ext4.enable e2fsprogs + ; in { options = { - services.cloud-init = { - enable = mkOption { type = types.bool; default = false; @@ -29,6 +36,22 @@ in ''; }; + btrfs.enable = mkOption { + type = types.bool; + default = false; + description = '' + Allow the cloud-init service to operate `btrfs` filesystem. + ''; + }; + + ext4.enable = mkOption { + type = types.bool; + default = true; + description = '' + Allow the cloud-init service to operate `ext4` filesystem. + ''; + }; + config = mkOption { type = types.str; default = '' @@ -96,7 +119,7 @@ in { Type = "oneshot"; ExecStart = "${pkgs.cloud-init}/bin/cloud-init init --local"; RemainAfterExit = "yes"; - TimeoutSec = "0"; + TimeoutSec = "infinity"; StandardOutput = "journal+console"; }; }; @@ -114,7 +137,7 @@ in { Type = "oneshot"; ExecStart = "${pkgs.cloud-init}/bin/cloud-init init"; RemainAfterExit = "yes"; - TimeoutSec = "0"; + TimeoutSec = "infinity"; StandardOutput = "journal+console"; }; }; @@ -130,7 +153,7 @@ in { Type = "oneshot"; ExecStart = "${pkgs.cloud-init}/bin/cloud-init modules --mode=config"; RemainAfterExit = "yes"; - TimeoutSec = "0"; + TimeoutSec = "infinity"; StandardOutput = "journal+console"; }; }; @@ -146,7 +169,7 @@ in { Type = "oneshot"; ExecStart = "${pkgs.cloud-init}/bin/cloud-init modules --mode=final"; RemainAfterExit = "yes"; - TimeoutSec = "0"; + TimeoutSec = "infinity"; StandardOutput = "journal+console"; }; }; diff --git a/nixos/modules/services/system/kerberos.nix b/nixos/modules/services/system/kerberos.nix deleted file mode 100644 index e2c45ed64ac..00000000000 --- a/nixos/modules/services/system/kerberos.nix +++ /dev/null @@ -1,64 +0,0 @@ -{pkgs, config, lib, ...}: - -let - - inherit (lib) mkOption mkIf; - - inherit (pkgs) heimdalFull; - - stateDir = "/var/heimdal"; -in - -{ - - ###### interface - - options = { - - services.kerberos_server = { - - enable = mkOption { - default = false; - description = '' - Enable the kerberos authentification server. - ''; - }; - - }; - - }; - - - ###### implementation - - config = mkIf config.services.kerberos_server.enable { - - environment.systemPackages = [ heimdalFull ]; - - services.xinetd.enable = true; - services.xinetd.services = lib.singleton - { name = "kerberos-adm"; - flags = "REUSE NAMEINARGS"; - protocol = "tcp"; - user = "root"; - server = "${pkgs.tcp_wrappers}/bin/tcpd"; - serverArgs = "${pkgs.heimdalFull}/libexec/heimdal/kadmind"; - }; - - systemd.services.kdc = { - description = "Key Distribution Center daemon"; - wantedBy = [ "multi-user.target" ]; - preStart = '' - mkdir -m 0755 -p ${stateDir} - ''; - script = "${heimdalFull}/libexec/heimdal/kdc"; - }; - - systemd.services.kpasswdd = { - description = "Kerberos Password Changing daemon"; - wantedBy = [ "multi-user.target" ]; - script = "${heimdalFull}/libexec/heimdal/kpasswdd"; - }; - }; - -} diff --git a/nixos/modules/services/system/kerberos/default.nix b/nixos/modules/services/system/kerberos/default.nix new file mode 100644 index 00000000000..26ac85de402 --- /dev/null +++ b/nixos/modules/services/system/kerberos/default.nix @@ -0,0 +1,80 @@ +{pkgs, config, lib, ...}: + +let + inherit (lib) mkOption mkIf types length attrNames; + cfg = config.services.kerberos_server; + kerberos = config.krb5.kerberos; + + aclEntry = { + options = { + principal = mkOption { + type = types.str; + description = "Which principal the rule applies to"; + }; + access = mkOption { + type = types.either + (types.listOf (types.enum ["add" "cpw" "delete" "get" "list" "modify"])) + (types.enum ["all"]); + default = "all"; + description = "The changes the principal is allowed to make."; + }; + target = mkOption { + type = types.str; + default = "*"; + description = "The principals that 'access' applies to."; + }; + }; + }; + + realm = { + options = { + acl = mkOption { + type = types.listOf (types.submodule aclEntry); + default = [ + { principal = "*/admin"; access = "all"; } + { principal = "admin"; access = "all"; } + ]; + description = '' + The privileges granted to a user. + ''; + }; + }; + }; +in + +{ + imports = [ + ./mit.nix + ./heimdal.nix + ]; + + ###### interface + options = { + services.kerberos_server = { + enable = mkOption { + default = false; + description = '' + Enable the kerberos authentification server. + ''; + }; + + realms = mkOption { + type = types.attrsOf (types.submodule realm); + description = '' + The realm(s) to serve keys for. + ''; + }; + }; + }; + + + ###### implementation + + config = mkIf cfg.enable { + environment.systemPackages = [ kerberos ]; + assertions = [{ + assertion = length (attrNames cfg.realms) <= 1; + message = "Only one realm per server is currently supported."; + }]; + }; +} diff --git a/nixos/modules/services/system/kerberos/heimdal.nix b/nixos/modules/services/system/kerberos/heimdal.nix new file mode 100644 index 00000000000..d0f470f836e --- /dev/null +++ b/nixos/modules/services/system/kerberos/heimdal.nix @@ -0,0 +1,68 @@ +{ pkgs, config, lib, ... } : + +let + inherit (lib) mkIf concatStringsSep concatMapStrings toList mapAttrs + mapAttrsToList attrValues; + cfg = config.services.kerberos_server; + kerberos = config.krb5.kerberos; + stateDir = "/var/heimdal"; + aclFiles = mapAttrs + (name: {acl, ...}: pkgs.writeText "${name}.acl" (concatMapStrings (( + {principal, access, target, ...} : + "${principal}\t${concatStringsSep "," (toList access)}\t${target}\n" + )) acl)) cfg.realms; + + kdcConfigs = mapAttrsToList (name: value: '' + database = { + dbname = ${stateDir}/heimdal + acl_file = ${value} + } + '') aclFiles; + kdcConfFile = pkgs.writeText "kdc.conf" '' + [kdc] + ${concatStringsSep "\n" kdcConfigs} + ''; +in + +{ + # No documentation about correct triggers, so guessing at them. + + config = mkIf (cfg.enable && kerberos == pkgs.heimdalFull) { + systemd.services.kadmind = { + description = "Kerberos Administration Daemon"; + wantedBy = [ "multi-user.target" ]; + preStart = '' + mkdir -m 0755 -p ${stateDir} + ''; + serviceConfig.ExecStart = + "${kerberos}/libexec/heimdal/kadmind --config-file=/etc/heimdal-kdc/kdc.conf"; + restartTriggers = [ kdcConfFile ]; + }; + + systemd.services.kdc = { + description = "Key Distribution Center daemon"; + wantedBy = [ "multi-user.target" ]; + preStart = '' + mkdir -m 0755 -p ${stateDir} + ''; + serviceConfig.ExecStart = + "${kerberos}/libexec/heimdal/kdc --config-file=/etc/heimdal-kdc/kdc.conf"; + restartTriggers = [ kdcConfFile ]; + }; + + systemd.services.kpasswdd = { + description = "Kerberos Password Changing daemon"; + wantedBy = [ "multi-user.target" ]; + preStart = '' + mkdir -m 0755 -p ${stateDir} + ''; + serviceConfig.ExecStart = "${kerberos}/libexec/heimdal/kpasswdd"; + restartTriggers = [ kdcConfFile ]; + }; + + environment.etc = { + # Can be set via the --config-file option to KDC + "heimdal-kdc/kdc.conf".source = kdcConfFile; + }; + }; +} diff --git a/nixos/modules/services/system/kerberos/mit.nix b/nixos/modules/services/system/kerberos/mit.nix new file mode 100644 index 00000000000..a53d9dd0c6b --- /dev/null +++ b/nixos/modules/services/system/kerberos/mit.nix @@ -0,0 +1,68 @@ +{ pkgs, config, lib, ... } : + +let + inherit (lib) mkIf concatStrings concatStringsSep concatMapStrings toList + mapAttrs mapAttrsToList attrValues; + cfg = config.services.kerberos_server; + kerberos = config.krb5.kerberos; + stateDir = "/var/lib/krb5kdc"; + PIDFile = "/run/kdc.pid"; + aclMap = { + add = "a"; cpw = "c"; delete = "d"; get = "i"; list = "l"; modify = "m"; + all = "*"; + }; + aclFiles = mapAttrs + (name: {acl, ...}: (pkgs.writeText "${name}.acl" (concatMapStrings ( + {principal, access, target, ...} : + let access_code = map (a: aclMap.${a}) (toList access); in + "${principal} ${concatStrings access_code} ${target}\n" + ) acl))) cfg.realms; + kdcConfigs = mapAttrsToList (name: value: '' + ${name} = { + acl_file = ${value} + } + '') aclFiles; + kdcConfFile = pkgs.writeText "kdc.conf" '' + [realms] + ${concatStringsSep "\n" kdcConfigs} + ''; + env = { + # What Debian uses, could possibly link directly to Nix store? + KRB5_KDC_PROFILE = "/etc/krb5kdc/kdc.conf"; + }; +in + +{ + config = mkIf (cfg.enable && kerberos == pkgs.krb5Full) { + systemd.services.kadmind = { + description = "Kerberos Administration Daemon"; + wantedBy = [ "multi-user.target" ]; + preStart = '' + mkdir -m 0755 -p ${stateDir} + ''; + serviceConfig.ExecStart = "${kerberos}/bin/kadmind -nofork"; + restartTriggers = [ kdcConfFile ]; + environment = env; + }; + + systemd.services.kdc = { + description = "Key Distribution Center daemon"; + wantedBy = [ "multi-user.target" ]; + preStart = '' + mkdir -m 0755 -p ${stateDir} + ''; + serviceConfig = { + Type = "forking"; + PIDFile = PIDFile; + ExecStart = "${kerberos}/bin/krb5kdc -P ${PIDFile}"; + }; + restartTriggers = [ kdcConfFile ]; + environment = env; + }; + + environment.etc = { + "krb5kdc/kdc.conf".source = kdcConfFile; + }; + environment.variables = env; + }; +} diff --git a/nixos/modules/services/system/nscd.conf b/nixos/modules/services/system/nscd.conf index 6d0dcacf977..603a5d01acc 100644 --- a/nixos/modules/services/system/nscd.conf +++ b/nixos/modules/services/system/nscd.conf @@ -1,28 +1,52 @@ +# We basically use nscd as a proxy for forwarding nss requests to appropriate +# nss modules, as we run nscd with LD_LIBRARY_PATH set to the directory +# containing all such modules +# Note that we can not use `enable-cache no` As this will actually cause nscd +# to just reject the nss requests it receives, which then causes glibc to +# fallback to trying to handle the request by itself. Which won't work as glibc +# is not aware of the path in which the nss modules live. As a workaround, we +# have `enable-cache yes` with an explicit ttl of 0 server-user nscd threads 1 paranoia no debug-level 0 enable-cache passwd yes -positive-time-to-live passwd 600 -negative-time-to-live passwd 20 +positive-time-to-live passwd 0 +negative-time-to-live passwd 0 suggested-size passwd 211 check-files passwd yes persistent passwd no shared passwd yes enable-cache group yes -positive-time-to-live group 3600 -negative-time-to-live group 60 +positive-time-to-live group 0 +negative-time-to-live group 0 suggested-size group 211 check-files group yes persistent group no shared group yes +enable-cache netgroup yes +positive-time-to-live netgroup 0 +negative-time-to-live netgroup 0 +suggested-size netgroup 211 +check-files netgroup yes +persistent netgroup no +shared netgroup yes + enable-cache hosts yes positive-time-to-live hosts 600 -negative-time-to-live hosts 5 +negative-time-to-live hosts 0 suggested-size hosts 211 check-files hosts yes persistent hosts no shared hosts yes + +enable-cache services yes +positive-time-to-live services 0 +negative-time-to-live services 0 +suggested-size services 211 +check-files services yes +persistent services no +shared services yes diff --git a/nixos/modules/services/system/saslauthd.nix b/nixos/modules/services/system/saslauthd.nix index c8ddca9a0db..8fcf4fb91fc 100644 --- a/nixos/modules/services/system/saslauthd.nix +++ b/nixos/modules/services/system/saslauthd.nix @@ -16,7 +16,7 @@ in services.saslauthd = { - enable = mkEnableOption "Whether to enable the Cyrus SASL authentication daemon."; + enable = mkEnableOption "saslauthd, the Cyrus SASL authentication daemon"; package = mkOption { default = pkgs.cyrus_sasl.bin; diff --git a/nixos/modules/services/ttys/kmscon.nix b/nixos/modules/services/ttys/kmscon.nix index 59c45fcb44e..82b6a51028e 100644 --- a/nixos/modules/services/ttys/kmscon.nix +++ b/nixos/modules/services/ttys/kmscon.nix @@ -4,6 +4,8 @@ let cfg = config.services.kmscon; + autologinArg = lib.optionalString (cfg.autologinUser != null) "-f ${cfg.autologinUser}"; + configDir = pkgs.writeTextFile { name = "kmscon-config"; destination = "/kmscon.conf"; text = cfg.extraConfig; }; in { options = { @@ -39,6 +41,15 @@ in { default = ""; example = "--term xterm-256color"; }; + + autologinUser = mkOption { + type = types.nullOr types.str; + default = null; + description = '' + Username of the account that will be automatically logged in at the console. + If unspecified, a login prompt is shown as usual. + ''; + }; }; }; @@ -61,7 +72,7 @@ in { [Service] ExecStart= - ExecStart=${pkgs.kmscon}/bin/kmscon "--vt=%I" ${cfg.extraOptions} --seats=seat0 --no-switchvt --configdir ${configDir} --login -- ${pkgs.shadow}/bin/login -p + ExecStart=${pkgs.kmscon}/bin/kmscon "--vt=%I" ${cfg.extraOptions} --seats=seat0 --no-switchvt --configdir ${configDir} --login -- ${pkgs.shadow}/bin/login -p ${autologinArg} UtmpIdentifier=%I TTYPath=/dev/%I TTYReset=yes diff --git a/nixos/modules/services/web-apps/atlassian/confluence.nix b/nixos/modules/services/web-apps/atlassian/confluence.nix index f896d92fd6f..b71887fcc6e 100644 --- a/nixos/modules/services/web-apps/atlassian/confluence.nix +++ b/nixos/modules/services/web-apps/atlassian/confluence.nix @@ -166,7 +166,7 @@ in ln -sf ${cfg.home}/{logs,work,temp,server.xml} /run/confluence ln -sf ${cfg.home} /run/confluence/home - chown -R ${cfg.user} ${cfg.home} + chown ${cfg.user} ${cfg.home} sed -e 's,port="8090",port="${toString cfg.listenPort}" address="${cfg.listenAddress}",' \ '' + (lib.optionalString cfg.proxy.enable '' diff --git a/nixos/modules/services/web-apps/atlassian/crowd.nix b/nixos/modules/services/web-apps/atlassian/crowd.nix index b6cb9f3b7c4..9f48d1e16a4 100644 --- a/nixos/modules/services/web-apps/atlassian/crowd.nix +++ b/nixos/modules/services/web-apps/atlassian/crowd.nix @@ -130,9 +130,10 @@ in mkdir -p ${cfg.home}/{logs,database,work} mkdir -p /run/atlassian-crowd - ln -sf ${cfg.home}/{database,work,server.xml} /run/atlassian-crowd + ln -sf ${cfg.home}/{database,logs,work,server.xml} /run/atlassian-crowd - chown -R ${cfg.user}:${cfg.group} ${cfg.home} + chown ${cfg.user}:${cfg.group} ${cfg.home} + chown ${cfg.user}:${cfg.group} ${cfg.home}/{logs,database,work} sed -e 's,port="8095",port="${toString cfg.listenPort}" address="${cfg.listenAddress}",' \ '' + (lib.optionalString cfg.proxy.enable '' diff --git a/nixos/modules/services/web-apps/atlassian/jira.nix b/nixos/modules/services/web-apps/atlassian/jira.nix index f5ec0a5f31b..dba970c612b 100644 --- a/nixos/modules/services/web-apps/atlassian/jira.nix +++ b/nixos/modules/services/web-apps/atlassian/jira.nix @@ -171,7 +171,7 @@ in ln -sf ${cfg.home}/{logs,work,temp,server.xml} /run/atlassian-jira ln -sf ${cfg.home} /run/atlassian-jira/home - chown -R ${cfg.user} ${cfg.home} + chown ${cfg.user} ${cfg.home} sed -e 's,port="8080",port="${toString cfg.listenPort}" address="${cfg.listenAddress}",' \ '' + (lib.optionalString cfg.proxy.enable '' diff --git a/nixos/modules/services/web-apps/matomo.nix b/nixos/modules/services/web-apps/matomo.nix index fbbd7715c6b..9fddf832074 100644 --- a/nixos/modules/services/web-apps/matomo.nix +++ b/nixos/modules/services/web-apps/matomo.nix @@ -34,6 +34,13 @@ in { ''; }; + package = mkOption { + type = types.package; + description = "Matomo package to use"; + default = pkgs.matomo; + defaultText = "pkgs.matomo"; + }; + webServerUser = mkOption { type = types.nullOr types.str; default = null; @@ -124,7 +131,7 @@ in { # the update part of the script can only work if the database is already up and running requires = [ databaseService ]; after = [ databaseService ]; - path = [ pkgs.matomo ]; + path = [ cfg.package ]; serviceConfig = { Type = "oneshot"; User = user; @@ -151,7 +158,7 @@ in { # Use User-Private Group scheme to protect matomo data, but allow administration / backup via matomo group # Copy config folder chmod g+s "${dataDir}" - cp -r "${pkgs.matomo}/config" "${dataDir}/" + cp -r "${cfg.package}/config" "${dataDir}/" chmod -R u+rwX,g+rwX,o-rwx "${dataDir}" # check whether user setup has already been done @@ -164,7 +171,7 @@ in { systemd.services.${phpExecutionUnit} = { # stop phpfpm on package upgrade, do database upgrade via matomo_setup_update, and then restart - restartTriggers = [ pkgs.matomo ]; + restartTriggers = [ cfg.package ]; # stop config.ini.php from getting written with read permission for others serviceConfig.UMask = "0007"; }; @@ -195,7 +202,7 @@ in { "${user}.${fqdn}" = mkMerge [ cfg.nginx { # don't allow to override the root easily, as it will almost certainly break matomo. # disadvantage: not shown as default in docs. - root = mkForce "${pkgs.matomo}/share"; + root = mkForce "${cfg.package}/share"; # define locations here instead of as the submodule option's default # so that they can easily be extended with additional locations if required diff --git a/nixos/modules/services/web-apps/nextcloud.nix b/nixos/modules/services/web-apps/nextcloud.nix index 44c3df1d057..ecb1c5615d5 100644 --- a/nixos/modules/services/web-apps/nextcloud.nix +++ b/nixos/modules/services/web-apps/nextcloud.nix @@ -70,7 +70,15 @@ in { ''; }; - nginx.enable = mkEnableOption "nginx vhost management"; + nginx.enable = mkOption { + type = types.bool; + default = false; + description = '' + Whether to enable nginx virtual host management. + Further nginx configuration can be done by adapting services.nginx.virtualHosts.<name>. + See for further information. + ''; + }; webfinger = mkOption { type = types.bool; @@ -114,6 +122,21 @@ in { ''; }; + poolConfig = mkOption { + type = types.lines; + 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 nextcloud's PHP pool. See the documentation on php-fpm.conf for details on configuration directives. + ''; + }; + config = { dbtype = mkOption { type = types.enum [ "sqlite" "pgsql" "mysql" ]; @@ -148,7 +171,12 @@ in { dbhost = mkOption { type = types.nullOr types.str; default = "localhost"; - description = "Database host."; + description = '' + Database host. + + Note: for using Unix authentication with PostgreSQL, this should be + set to /tmp. + ''; }; dbport = mkOption { type = with types; nullOr (either int str); @@ -169,7 +197,7 @@ in { type = types.nullOr types.str; default = null; description = '' - Database password. Use adminpassFile to avoid this + Admin password. Use adminpassFile to avoid this being world-readable in the /nix/store. ''; }; @@ -339,11 +367,7 @@ in { listen.group = nginx user = nextcloud group = nginx - pm = dynamic - pm.max_children = 32 - pm.start_servers = 2 - pm.min_spare_servers = 2 - pm.max_spare_servers = 4 + ${cfg.poolConfig} env[NEXTCLOUD_CONFIG_DIR] = ${cfg.home}/config env[PATH] = /run/wrappers/bin:/nix/var/nix/profiles/default/bin:/run/current-system/sw/bin:/usr/bin:/bin ${phpAdminValues} @@ -460,4 +484,6 @@ in { }; }) ]); + + meta.doc = ./nextcloud.xml; } diff --git a/nixos/modules/services/web-apps/nextcloud.xml b/nixos/modules/services/web-apps/nextcloud.xml new file mode 100644 index 00000000000..9600d1be7c8 --- /dev/null +++ b/nixos/modules/services/web-apps/nextcloud.xml @@ -0,0 +1,99 @@ + + Nextcloud + + + Nextcloud is an open-source, self-hostable cloud + platform. The server setup can be automated using + services.nextcloud. A desktop client is packaged + at pkgs.nextcloud-client. + + +
+ Basic usage + + Nextcloud is a PHP-based application which requires an HTTP server + (services.nextcloud optionally supports + services.nginx) and a database + (it's recommended to use services.postgresql). + + + A very basic configuration may look like this: +{ pkgs, ... }: +{ + services.nextcloud = { + enable = true; + hostName = "nextcloud.tld"; + nginx.enable = true; + config = { + dbtype = "pgsql"; + dbuser = "nextcloud"; + dbhost = "/tmp"; # nextcloud will add /.s.PGSQL.5432 by itself + dbname = "nextcloud"; + adminpassFile = "/path/to/admin-pass-file"; + adminuser = "root"; + }; + }; + + services.postgresql = { + enable = true; + initialScript = pkgs.writeText "psql-init" '' + CREATE ROLE nextcloud WITH LOGIN; + CREATE DATABASE nextcloud WITH OWNER nextcloud; + ''; + }; + + # ensure that postgres is running *before* running the setup + systemd.services."nextcloud-setup" = { + requires = ["postgresql.service"]; + after = ["postgresql.service"]; + }; + + networking.firewall.allowedTCPPorts = [ 80 443 ]; +} + + + The options hostName and nginx.enable are used internally to configure an + HTTP server using PHP-FPM and nginx. + The config attribute set is used for the config.php which is used + for the application's configuration. + Beware: this isn't entirely pure since the config is modified by the application's runtime! + + + In case the application serves multiple hosts (those are checked with + $_SERVER['HTTP_HOST']) + those can be added using + services.nextcloud.config.extraTrustedDomains. + +
+ +
+ Pitfalls + + Unfortunately Nextcloud appears to be very stateful when it comes to managing its own configuration. The + config file lives in the home directory of the nextcloud user (by default + /var/lib/nextcloud/config/config.php) and is also used to track several + states of the application (e.g. whether installed or not). + + + Right now changes to the services.nextcloud.config attribute set won't take effect + after the first install + (except services.nextcloud.config.extraTrustedDomains) since the actual configuration + file is generated by the NextCloud installer which also sets up critical parts such as the database + structure. + + + Warning: don't delete config.php! This file tracks the application's state and a deletion can cause unwanted side-effects! + + + Warning: don't rerun nextcloud-occ maintenance:install! This command tries to install the application and can cause unwanted side-effects! + + + The issues are known and reported in #49783, for now it's unfortunately necessary to manually work around these issues. + +
+ +
diff --git a/nixos/modules/services/web-apps/quassel-webserver.nix b/nixos/modules/services/web-apps/quassel-webserver.nix deleted file mode 100644 index 2ba5698d6cb..00000000000 --- a/nixos/modules/services/web-apps/quassel-webserver.nix +++ /dev/null @@ -1,101 +0,0 @@ -{ config, lib, pkgs, ... }: - -with lib; - -let - cfg = config.services.quassel-webserver; - quassel-webserver = cfg.pkg; - settings = '' - module.exports = { - default: { - host: '${cfg.quasselCoreHost}', // quasselcore host - port: ${toString cfg.quasselCorePort}, // quasselcore port - initialBacklogLimit: ${toString cfg.initialBacklogLimit}, // Amount of backlogs to fetch per buffer on connection - backlogLimit: ${toString cfg.backlogLimit}, // Amount of backlogs to fetch per buffer after first retrieval - securecore: ${boolToString cfg.secureCore}, // Connect to the core using SSL - theme: '${cfg.theme}' // Default UI theme - }, - themes: ['default', 'darksolarized'], // Available themes - forcedefault: ${boolToString cfg.forceHostAndPort}, // Will force default host and port to be used, and will hide the corresponding fields in the UI - prefixpath: '${cfg.prefixPath}' // Configure this if you use a reverse proxy - }; - ''; - settingsFile = pkgs.writeText "settings-user.js" settings; -in { - options = { - services.quassel-webserver = { - enable = mkOption { - default = false; - type = types.bool; - description = "Whether to enable the quassel webclient service"; - }; - pkg = mkOption { - default = pkgs.quassel-webserver; - defaultText = "pkgs.quassel-webserver"; - type = types.package; - description = "The quassel-webserver package"; - }; - quasselCoreHost = mkOption { - default = ""; - type = types.str; - description = "The default host of the quassel core"; - }; - quasselCorePort = mkOption { - default = 4242; - type = types.int; - description = "The default quassel core port"; - }; - initialBacklogLimit = mkOption { - default = 20; - type = types.int; - description = "Amount of backlogs to fetch per buffer on connection"; - }; - backlogLimit = mkOption { - default = 100; - type = types.int; - description = "Amount of backlogs to fetch per buffer after first retrieval"; - }; - secureCore = mkOption { - default = true; - type = types.bool; - description = "Connect to the core using SSL"; - }; - theme = mkOption { - default = "default"; - type = types.str; - description = "default or darksolarized"; - }; - prefixPath = mkOption { - default = ""; - type = types.str; - description = "Configure this if you use a reverse proxy. Must start with a '/'"; - example = "/quassel"; - }; - port = mkOption { - default = 60443; - type = types.int; - description = "The port the quassel webserver should listen on"; - }; - useHttps = mkOption { - default = true; - type = types.bool; - description = "Whether the quassel webserver connection should be a https connection"; - }; - forceHostAndPort = mkOption { - default = false; - type = types.bool; - description = "Force the users to use the quasselCoreHost and quasselCorePort defaults"; - }; - }; - }; - - config = mkIf cfg.enable { - systemd.services.quassel-webserver = { - description = "A web server/client for Quassel"; - wantedBy = [ "multi-user.target" ]; - serviceConfig = { - ExecStart = "${quassel-webserver}/lib/node_modules/quassel-webserver/bin/www -p ${toString cfg.port} -m ${if cfg.useHttps == true then "https" else "http"} -c ${settingsFile}"; - }; - }; - }; -} diff --git a/nixos/modules/services/web-apps/selfoss.nix b/nixos/modules/services/web-apps/selfoss.nix index 5571f77334c..7b0ce8a8d03 100644 --- a/nixos/modules/services/web-apps/selfoss.nix +++ b/nixos/modules/services/web-apps/selfoss.nix @@ -21,8 +21,8 @@ let db_database=${cfg.database.name} db_username=${cfg.database.user} db_password=${cfg.database.password} - db_port=${if (cfg.database.port != null) then cfg.database.port - else default_port} + db_port=${toString (if (cfg.database.port != null) then cfg.database.port + else default_port)} '' } ${cfg.extraConfig} diff --git a/nixos/modules/services/web-servers/apache-httpd/default.nix b/nixos/modules/services/web-servers/apache-httpd/default.nix index 73607c6f9a3..2d6ed853074 100644 --- a/nixos/modules/services/web-servers/apache-httpd/default.nix +++ b/nixos/modules/services/web-servers/apache-httpd/default.nix @@ -187,8 +187,8 @@ let SSLRandomSeed startup builtin SSLRandomSeed connect builtin - SSLProtocol All -SSLv2 -SSLv3 - SSLCipherSuite HIGH:!aNULL:!MD5:!EXP + SSLProtocol ${mainCfg.sslProtocols} + SSLCipherSuite ${mainCfg.sslCiphers} SSLHonorCipherOrder on ''; @@ -630,6 +630,19 @@ in description = "Maximum number of httpd requests answered per httpd child (prefork), 0 means unlimited"; }; + + sslCiphers = mkOption { + type = types.str; + default = "HIGH:!aNULL:!MD5:!EXP"; + description = "Cipher Suite available for negotiation in SSL proxy handshake."; + }; + + sslProtocols = mkOption { + type = types.str; + default = "All -SSLv2 -SSLv3"; + example = "All -SSLv2 -SSLv3 -TLSv1"; + description = "Allowed SSL/TLS protocol versions."; + }; } # Include the options shared between the main server and virtual hosts. diff --git a/nixos/modules/services/web-servers/apache-httpd/limesurvey.nix b/nixos/modules/services/web-servers/apache-httpd/limesurvey.nix index 77194f34749..5c387700a5d 100644 --- a/nixos/modules/services/web-servers/apache-httpd/limesurvey.nix +++ b/nixos/modules/services/web-servers/apache-httpd/limesurvey.nix @@ -85,7 +85,7 @@ in rec { id = mkOption { default = "main"; description = '' - A unique identifier necessary to keep multiple owncloud server + A unique identifier necessary to keep multiple Limesurvey server instances on the same machine apart. This is used to disambiguate the administrative scripts, which get names like mediawiki-$id-change-password. diff --git a/nixos/modules/services/web-servers/apache-httpd/mediawiki.nix b/nixos/modules/services/web-servers/apache-httpd/mediawiki.nix index 02695c1c43a..e871ae6ff15 100644 --- a/nixos/modules/services/web-servers/apache-httpd/mediawiki.nix +++ b/nixos/modules/services/web-servers/apache-httpd/mediawiki.nix @@ -83,11 +83,11 @@ let # Unpack Mediawiki and put the config file in its root directory. mediawikiRoot = pkgs.stdenv.mkDerivation rec { - name= "mediawiki-1.29.1"; + name= "mediawiki-1.31.1"; src = pkgs.fetchurl { - url = "http://download.wikimedia.org/mediawiki/1.29/${name}.tar.gz"; - sha256 = "03mpazbxvb011s2nmlw5p6dc43yjgl5yrsilmj1imyykm57bwb3m"; + url = "https://releases.wikimedia.org/mediawiki/1.31/${name}.tar.gz"; + sha256 = "13x48clij21cmysjkpnx68vggchrdasqp7b290j87xlfgjhdhnnf"; }; skins = config.skins; @@ -111,7 +111,7 @@ let sed -i \ -e 's|/bin/bash|${pkgs.bash}/bin/bash|g' \ -e 's|/usr/bin/timeout|${pkgs.coreutils}/bin/timeout|g' \ - $out/includes/limit.sh \ + $out/includes/shell/limit.sh \ $out/includes/GlobalFunctions.php ''; }; @@ -311,7 +311,7 @@ in description = '' Any additional text to be appended to MediaWiki's configuration file. This is a PHP script. For configuration - settings, see . + settings, see . ''; }; diff --git a/nixos/modules/services/web-servers/apache-httpd/owncloud.nix b/nixos/modules/services/web-servers/apache-httpd/owncloud.nix deleted file mode 100644 index 6345a9a5693..00000000000 --- a/nixos/modules/services/web-servers/apache-httpd/owncloud.nix +++ /dev/null @@ -1,608 +0,0 @@ -{ config, lib, pkgs, serverInfo, php, ... }: - -with lib; - -let - - owncloudConfig = pkgs.writeText "config.php" - '' - true, - - /* Type of database, can be sqlite, mysql or pgsql */ - "dbtype" => "${config.dbType}", - - /* Name of the ownCloud database */ - "dbname" => "${config.dbName}", - - /* User to access the ownCloud database */ - "dbuser" => "${config.dbUser}", - - /* Password to access the ownCloud database */ - "dbpassword" => "${config.dbPassword}", - - /* Host running the ownCloud database. To specify a port use "HOSTNAME:####"; to specify a unix sockets use "localhost:/path/to/socket". */ - "dbhost" => "${config.dbServer}", - - /* Prefix for the ownCloud tables in the database */ - "dbtableprefix" => "", - - /* Force use of HTTPS connection (true = use HTTPS) */ - "forcessl" => ${config.forceSSL}, - - /* Blacklist a specific file and disallow the upload of files with this name - WARNING: USE THIS ONLY IF YOU KNOW WHAT YOU ARE DOING. */ - "blacklisted_files" => array('.htaccess'), - - /* The automatic hostname detection of ownCloud can fail in certain reverse proxy and CLI/cron situations. This option allows to manually override the automatic detection. You can also add a port. For example "www.example.com:88" */ - "overwritehost" => "${config.overwriteHost}", - - /* The automatic protocol detection of ownCloud can fail in certain reverse proxy and CLI/cron situations. This option allows to manually override the protocol detection. For example "https" */ - "overwriteprotocol" => "${config.overwriteProtocol}", - - /* The automatic webroot detection of ownCloud can fail in certain reverse proxy and CLI/cron situations. This option allows to manually override the automatic detection. For example "/domain.tld/ownCloud". The value "/" can be used to remove the root. */ - "overwritewebroot" => "${config.overwriteWebRoot}", - - /* The automatic detection of ownCloud can fail in certain reverse proxy and CLI/cron situations. This option allows to define a manually override condition as regular expression for the remote ip address. For example "^10\.0\.0\.[1-3]$" */ - "overwritecondaddr" => "", - - /* A proxy to use to connect to the internet. For example "myproxy.org:88" */ - "proxy" => "", - - /* The optional authentication for the proxy to use to connect to the internet. The format is: [username]:[password] */ - "proxyuserpwd" => "", - - /* List of trusted domains, to prevent host header poisoning ownCloud is only using these Host headers */ - ${if config.trustedDomain != "" then "'trusted_domains' => array('${config.trustedDomain}')," else ""} - - /* Theme to use for ownCloud */ - "theme" => "", - - /* Optional ownCloud default language - overrides automatic language detection on public pages like login or shared items. This has no effect on the user's language preference configured under "personal -> language" once they have logged in */ - "default_language" => "${config.defaultLang}", - - /* Path to the parent directory of the 3rdparty directory */ - "3rdpartyroot" => "", - - /* URL to the parent directory of the 3rdparty directory, as seen by the browser */ - "3rdpartyurl" => "", - - /* Default app to open on login. - * This can be a comma-separated list of app ids. - * If the first app is not enabled for the current user, - * it will try with the second one and so on. If no enabled app could be found, - * the "files" app will be displayed instead. */ - "defaultapp" => "${config.defaultApp}", - - /* Enable the help menu item in the settings */ - "knowledgebaseenabled" => true, - - /* Enable installing apps from the appstore */ - "appstoreenabled" => ${config.appStoreEnable}, - - /* URL of the appstore to use, server should understand OCS */ - "appstoreurl" => "https://api.owncloud.com/v1", - - /* Domain name used by ownCloud for the sender mail address, e.g. no-reply@example.com */ - "mail_domain" => "${config.mailFromDomain}", - - /* FROM address used by ownCloud for the sender mail address, e.g. owncloud@example.com - This setting overwrites the built in 'sharing-noreply' and 'lostpassword-noreply' - FROM addresses, that ownCloud uses - */ - "mail_from_address" => "${config.mailFrom}", - - /* Enable SMTP class debugging */ - "mail_smtpdebug" => false, - - /* Mode to use for sending mail, can be sendmail, smtp, qmail or php, see PHPMailer docs */ - "mail_smtpmode" => "${config.SMTPMode}", - - /* Host to use for sending mail, depends on mail_smtpmode if this is used */ - "mail_smtphost" => "${config.SMTPHost}", - - /* Port to use for sending mail, depends on mail_smtpmode if this is used */ - "mail_smtpport" => ${config.SMTPPort}, - - /* SMTP server timeout in seconds for sending mail, depends on mail_smtpmode if this is used */ - "mail_smtptimeout" => ${config.SMTPTimeout}, - - /* SMTP connection prefix or sending mail, depends on mail_smtpmode if this is used. - Can be "", ssl or tls */ - "mail_smtpsecure" => "${config.SMTPSecure}", - - /* authentication needed to send mail, depends on mail_smtpmode if this is used - * (false = disable authentication) - */ - "mail_smtpauth" => ${config.SMTPAuth}, - - /* authentication type needed to send mail, depends on mail_smtpmode if this is used - * Can be LOGIN (default), PLAIN or NTLM */ - "mail_smtpauthtype" => "${config.SMTPAuthType}", - - /* Username to use for sendmail mail, depends on mail_smtpauth if this is used */ - "mail_smtpname" => "${config.SMTPUser}", - - /* Password to use for sendmail mail, depends on mail_smtpauth if this is used */ - "mail_smtppassword" => "${config.SMTPPass}", - - /* memcached servers (Only used when xCache, APC and APCu are absent.) */ - "memcached_servers" => array( - // hostname, port and optional weight. Also see: - // http://www.php.net/manual/en/memcached.addservers.php - // http://www.php.net/manual/en/memcached.addserver.php - //array('localhost', 11211), - //array('other.host.local', 11211), - ), - - /* How long should ownCloud keep deleted files in the trash bin, default value: 30 days */ - 'trashbin_retention_obligation' => 30, - - /* Disable/Enable auto expire for the trash bin, by default auto expire is enabled */ - 'trashbin_auto_expire' => true, - - /* allow user to change his display name, if it is supported by the back-end */ - 'allow_user_to_change_display_name' => true, - - /* Check 3rdparty apps for malicious code fragments */ - "appcodechecker" => true, - - /* Check if ownCloud is up to date */ - "updatechecker" => true, - - /* Are we connected to the internet or are we running in a closed network? */ - "has_internet_connection" => true, - - /* Check if the ownCloud WebDAV server is working correctly. Can be disabled if not needed in special situations*/ - "check_for_working_webdav" => true, - - /* Check if .htaccess protection of data is working correctly. Can be disabled if not needed in special situations*/ - "check_for_working_htaccess" => true, - - /* Place to log to, can be owncloud and syslog (owncloud is log menu item in admin menu) */ - "log_type" => "owncloud", - - /* File for the owncloud logger to log to, (default is ownloud.log in the data dir) */ - "logfile" => "${config.dataDir}/owncloud.log", - - /* Loglevel to start logging at. 0=DEBUG, 1=INFO, 2=WARN, 3=ERROR (default is WARN) */ - "loglevel" => "2", - - /* date format to be used while writing to the owncloud logfile */ - 'logdateformat' => 'F d, Y H:i:s', - - ${tzSetting} - - /* Append all database queries and parameters to the log file. - (watch out, this option can increase the size of your log file)*/ - "log_query" => false, - - /* Whether ownCloud should log the last successfull cron exec */ - "cron_log" => true, - - /* - * Configure the size in bytes log rotation should happen, 0 or false disables the rotation. - * This rotates the current owncloud logfile to a new name, this way the total log usage - * will stay limited and older entries are available for a while longer. The - * total disk usage is twice the configured size. - * WARNING: When you use this, the log entries will eventually be lost. - */ - 'log_rotate_size' => "104857600", // 104857600, // 100 MiB - - /* Lifetime of the remember login cookie, default is 15 days */ - "remember_login_cookie_lifetime" => 1296000, - - /* Life time of a session after inactivity */ - "session_lifetime" => 86400, - - /* - * Enable/disable session keep alive when a user is logged in in the Web UI. - * This is achieved by sending a "heartbeat" to the server to prevent - * the session timing out. - */ - "session_keepalive" => true, - - /* Custom CSP policy, changing this will overwrite the standard policy */ - "custom_csp_policy" => "default-src 'self'; script-src 'self' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; frame-src *; img-src *; font-src 'self' data:; media-src *", - - /* Enable/disable X-Frame-Restriction */ - /* HIGH SECURITY RISK IF DISABLED*/ - "xframe_restriction" => true, - - /* The directory where the user data is stored, default to data in the owncloud - * directory. The sqlite database is also stored here, when sqlite is used. - */ - "datadirectory" => "${config.dataDir}/storage", - - /* The directory where the skeleton files are located. These files will be copied to the data - * directory of new users. Leave empty to not copy any skeleton files. - */ - // "skeletondirectory" => "", - - /* Enable maintenance mode to disable ownCloud - If you want to prevent users to login to ownCloud before you start doing some maintenance work, - you need to set the value of the maintenance parameter to true. - Please keep in mind that users who are already logged-in are kicked out of ownCloud instantly. - */ - "maintenance" => false, - - "apps_paths" => array( - - /* Set an array of path for your apps directories - key 'path' is for the fs path and the key 'url' is for the http path to your - applications paths. 'writable' indicates whether the user can install apps in this folder. - You must have at least 1 app folder writable or you must set the parameter 'appstoreenabled' to false - */ - array( - 'path'=> '${config.dataDir}/apps', - 'url' => '/apps', - 'writable' => true, - ), - ), - 'user_backends'=>array( - /* - array( - 'class'=>'OC_User_IMAP', - 'arguments'=>array('{imap.gmail.com:993/imap/ssl}INBOX') - ) - */ - ), - //links to custom clients - 'customclient_desktop' => ''', //http://owncloud.org/sync-clients/ - 'customclient_android' => ''', //https://play.google.com/store/apps/details?id=com.owncloud.android - 'customclient_ios' => ''', //https://itunes.apple.com/us/app/owncloud/id543672169?mt=8 - - // PREVIEW - 'enable_previews' => true, - /* the max width of a generated preview, if value is null, there is no limit */ - 'preview_max_x' => null, - /* the max height of a generated preview, if value is null, there is no limit */ - 'preview_max_y' => null, - /* the max factor to scale a preview, default is set to 10 */ - 'preview_max_scale_factor' => 10, - /* custom path for libreoffice / openoffice binary */ - 'preview_libreoffice_path' => '${config.libreofficePath}', - /* cl parameters for libreoffice / openoffice */ - 'preview_office_cl_parameters' => ''', - - /* whether avatars should be enabled */ - 'enable_avatars' => true, - - // Extra SSL options to be used for configuration - 'openssl' => array( - 'config' => '/etc/ssl/openssl.cnf', - ), - - // default cipher used for file encryption, currently we support AES-128-CFB and AES-256-CFB - 'cipher' => 'AES-256-CFB', - - /* whether usage of the instance should be restricted to admin users only */ - 'singleuser' => false, - - /* all css and js files will be served by the web server statically in one js file and ons css file*/ - 'asset-pipeline.enabled' => false, - - /* where mount.json file should be stored, defaults to data/mount.json */ - 'mount_file' => ''', - - /* - * Location of the cache folder, defaults to "data/$user/cache" where "$user" is the current user. - * - * When specified, the format will change to "$cache_path/$user" where "$cache_path" is the configured - * cache directory and "$user" is the user. - * - */ - 'cache_path' => ''', - - /* EXPERIMENTAL: option whether to include external storage in quota calculation, defaults to false */ - 'quota_include_external_storage' => false, - - /* - * specifies how often the filesystem is checked for changes made outside owncloud - * 0 -> never check the filesystem for outside changes, provides a performance increase when it's certain that no changes are made directly to the filesystem - * 1 -> check each file or folder at most once per request, recomended for general use if outside changes might happen - * 2 -> check every time the filesystem is used, causes a performance hit when using external storages, not recomended for regular use - */ - 'filesystem_check_changes' => 1, - - /* If true, prevent owncloud from changing the cache due to changes in the filesystem for all storage */ - 'filesystem_cache_readonly' => false, - - /** - * define default folder for shared files and folders - */ - 'share_folder' => '/', - - 'version' => '${config.package.version}', - - 'openssl' => '${pkgs.openssl.bin}/bin/openssl' - - ); - - ''; - - tzSetting = let tz = serverInfo.fullConfig.time.timeZone; in optionalString (!isNull tz) '' - /* timezone used while writing to the owncloud logfile (default: UTC) */ - 'logtimezone' => '${tz}', - ''; - - postgresql = serverInfo.fullConfig.services.postgresql.package; - - setupDb = pkgs.writeScript "setup-owncloud-db" '' - #!${pkgs.runtimeShell} - PATH="${postgresql}/bin" - createuser --no-superuser --no-createdb --no-createrole "${config.dbUser}" || true - createdb "${config.dbName}" -O "${config.dbUser}" || true - psql -U postgres -d postgres -c "alter user ${config.dbUser} with password '${config.dbPassword}';" || true - - QUERY="CREATE TABLE appconfig - ( appid VARCHAR( 255 ) NOT NULL - , configkey VARCHAR( 255 ) NOT NULL - , configvalue VARCHAR( 255 ) NOT NULL - ); - GRANT ALL ON appconfig TO ${config.dbUser}; - ALTER TABLE appconfig OWNER TO ${config.dbUser};" - - psql -h "/tmp" -U postgres -d ${config.dbName} -Atw -c "$QUERY" || true - ''; - -in - -rec { - - extraConfig = - '' - ${if config.urlPrefix != "" then "Alias ${config.urlPrefix} ${config.package}" else '' - - RewriteEngine On - RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f - RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d - ''} - - - Include ${config.package}/.htaccess - - ''; - - globalEnvVars = [ - { name = "OC_CONFIG_PATH"; value = "${config.dataDir}/config/"; } - ]; - - documentRoot = if config.urlPrefix == "" then config.package else null; - - enablePHP = true; - - options = { - - package = mkOption { - type = types.package; - default = pkgs.owncloud70; - defaultText = "pkgs.owncloud70"; - example = literalExample "pkgs.owncloud70"; - description = '' - ownCloud package to use. - ''; - }; - - urlPrefix = mkOption { - default = ""; - example = "/owncloud"; - description = '' - The URL prefix under which the owncloud service appears. - ''; - }; - - id = mkOption { - default = "main"; - description = '' - A unique identifier necessary to keep multiple owncloud server - instances on the same machine apart. This is used to - disambiguate the administrative scripts, which get names like - mediawiki-$id-change-password. - ''; - }; - - adminUser = mkOption { - default = "owncloud"; - description = "The admin user name for accessing owncloud."; - }; - - adminPassword = mkOption { - description = "The admin password for accessing owncloud."; - }; - - dbType = mkOption { - default = "pgsql"; - description = "Type of database, in NixOS, for now, only pgsql."; - }; - - dbName = mkOption { - default = "owncloud"; - description = "Name of the database that holds the owncloud data."; - }; - - dbServer = mkOption { - default = "localhost:5432"; - description = '' - The location of the database server. - ''; - }; - - dbUser = mkOption { - default = "owncloud"; - description = "The user name for accessing the database."; - }; - - dbPassword = mkOption { - example = "foobar"; - description = '' - The password of the database user. Warning: this is stored in - cleartext in the Nix store! - ''; - }; - - forceSSL = mkOption { - default = "false"; - description = "Force use of HTTPS connection."; - }; - - adminAddr = mkOption { - default = serverInfo.serverConfig.adminAddr; - example = "admin@example.com"; - description = '' - Emergency contact e-mail address. Defaults to the Apache - admin address. - ''; - }; - - siteName = mkOption { - default = "owncloud"; - example = "Foobar owncloud"; - description = "Name of the owncloud"; - }; - - trustedDomain = mkOption { - default = ""; - description = "Trusted domain"; - }; - - defaultLang = mkOption { - default = ""; - description = "Default language"; - }; - - defaultApp = mkOption { - default = ""; - description = "Default application"; - }; - - appStoreEnable = mkOption { - default = "true"; - description = "Enable app store"; - }; - - mailFrom = mkOption { - default = "no-reply"; - description = "Mail from"; - }; - - mailFromDomain = mkOption { - default = "example.xyz"; - description = "Mail from domain"; - }; - - SMTPMode = mkOption { - default = "smtp"; - description = "Which mode to use for sending mail: sendmail, smtp, qmail or php."; - }; - - SMTPHost = mkOption { - default = ""; - description = "SMTP host"; - }; - - SMTPPort = mkOption { - default = "25"; - description = "SMTP port"; - }; - - SMTPTimeout = mkOption { - default = "10"; - description = "SMTP mode"; - }; - - SMTPSecure = mkOption { - default = "ssl"; - description = "SMTP secure"; - }; - - SMTPAuth = mkOption { - default = "true"; - description = "SMTP auth"; - }; - - SMTPAuthType = mkOption { - default = "LOGIN"; - description = "SMTP auth type"; - }; - - SMTPUser = mkOption { - default = ""; - description = "SMTP user"; - }; - - SMTPPass = mkOption { - default = ""; - description = "SMTP pass"; - }; - - dataDir = mkOption { - default = "/var/lib/owncloud"; - description = "Data dir"; - }; - - libreofficePath = mkOption { - default = "/usr/bin/libreoffice"; - description = "Path for LibreOffice/OpenOffice binary."; - }; - - overwriteHost = mkOption { - default = ""; - description = "The automatic hostname detection of ownCloud can fail in - certain reverse proxy and CLI/cron situations. This option allows to - manually override the automatic detection. You can also add a port."; - }; - - overwriteProtocol = mkOption { - default = ""; - description = "The automatic protocol detection of ownCloud can fail in - certain reverse proxy and CLI/cron situations. This option allows to - manually override the protocol detection."; - }; - - overwriteWebRoot = mkOption { - default = ""; - description = "The automatic webroot detection of ownCloud can fail in - certain reverse proxy and CLI/cron situations. This option allows to - manually override the automatic detection."; - }; - - }; - - startupScript = pkgs.writeScript "owncloud_startup.sh" '' - - if [ ! -d ${config.dataDir}/config ]; then - mkdir -p ${config.dataDir}/config - cp ${owncloudConfig} ${config.dataDir}/config/config.php - mkdir -p ${config.dataDir}/storage - mkdir -p ${config.dataDir}/apps - cp -r ${config.package}/apps/* ${config.dataDir}/apps/ - chmod -R ug+rw ${config.dataDir} - chmod -R o-rwx ${config.dataDir} - chown -R wwwrun:wwwrun ${config.dataDir} - - ${pkgs.sudo}/bin/sudo -u postgres ${setupDb} - fi - - if [ -e ${config.package}/config/ca-bundle.crt ]; then - cp -f ${config.package}/config/ca-bundle.crt ${config.dataDir}/config/ - fi - - ${php}/bin/php ${config.package}/occ upgrade >> ${config.dataDir}/upgrade.log || true - - chown wwwrun:wwwrun ${config.dataDir}/owncloud.log || true - - QUERY="INSERT INTO groups (gid) values('admin'); - INSERT INTO users (uid,password) - values('${config.adminUser}','${builtins.hashString "sha1" config.adminPassword}'); - INSERT INTO group_user (gid,uid) - values('admin','${config.adminUser}');" - ${pkgs.sudo}/bin/sudo -u postgres ${postgresql}/bin/psql -h "/tmp" -U postgres -d ${config.dbName} -Atw -c "$QUERY" || true - ''; -} diff --git a/nixos/modules/services/web-servers/apache-httpd/wordpress.nix b/nixos/modules/services/web-servers/apache-httpd/wordpress.nix index c810b914e25..c68bfd25f6a 100644 --- a/nixos/modules/services/web-servers/apache-httpd/wordpress.nix +++ b/nixos/modules/services/web-servers/apache-httpd/wordpress.nix @@ -85,10 +85,10 @@ let # remove bundled themes(s) coming with wordpress rm -Rf $out/wp-content/themes/* - # symlink additional theme(s) - ${concatMapStrings (theme: "ln -s ${theme} $out/wp-content/themes/${theme.name}\n") config.themes} - # symlink additional plugin(s) - ${concatMapStrings (plugin: "ln -s ${plugin} $out/wp-content/plugins/${plugin.name}\n") (config.plugins) } + # copy additional theme(s) + ${concatMapStrings (theme: "cp -r ${theme} $out/wp-content/themes/${theme.name}\n") config.themes} + # copy additional plugin(s) + ${concatMapStrings (plugin: "cp -r ${plugin} $out/wp-content/plugins/${plugin.name}\n") (config.plugins) } # symlink additional translation(s) mkdir -p $out/wp-content/languages diff --git a/nixos/modules/services/web-servers/lighttpd/collectd.nix b/nixos/modules/services/web-servers/lighttpd/collectd.nix index 35b5edced68..e70c980d524 100644 --- a/nixos/modules/services/web-servers/lighttpd/collectd.nix +++ b/nixos/modules/services/web-servers/lighttpd/collectd.nix @@ -48,7 +48,7 @@ in "/collectd" => "${cfg.collectionCgi}" ) setenv.add-environment = ( - "PERL5LIB" => "${with pkgs; lib.makePerlPath [ perlPackages.CGI perlPackages.HTMLParser perlPackages.URI rrdtool ]}", + "PERL5LIB" => "${with pkgs.perlPackages; makePerlPath [ CGI HTMLParser URI pkgs.rrdtool ]}", "COLLECTION_CONF" => "${collectionConf}" ) } diff --git a/nixos/modules/services/web-servers/nginx/default.nix b/nixos/modules/services/web-servers/nginx/default.nix index 508398f03ac..6c733f093ba 100644 --- a/nixos/modules/services/web-servers/nginx/default.nix +++ b/nixos/modules/services/web-servers/nginx/default.nix @@ -46,7 +46,7 @@ let configFile = pkgs.writeText "nginx.conf" '' user ${cfg.user} ${cfg.group}; - error_log stderr; + error_log ${cfg.logError}; daemon off; ${cfg.config} @@ -341,6 +341,35 @@ in "; }; + logError = mkOption { + default = "stderr"; + description = " + Configures logging. + The first parameter defines a file that will store the log. The + special value stderr selects the standard error file. Logging to + syslog can be configured by specifying the “syslog:” prefix. + The second parameter determines the level of logging, and can be + one of the following: debug, info, notice, warn, error, crit, + alert, or emerg. Log levels above are listed in the order of + increasing severity. Setting a certain log level will cause all + messages of the specified and more severe log levels to be logged. + If this parameter is omitted then error is used. + "; + }; + + preStart = mkOption { + type = types.lines; + default = '' + test -d ${cfg.stateDir}/logs || mkdir -m 750 -p ${cfg.stateDir}/logs + test `stat -c %a ${cfg.stateDir}` = "750" || chmod 750 ${cfg.stateDir} + test `stat -c %a ${cfg.stateDir}/logs` = "750" || chmod 750 ${cfg.stateDir}/logs + chown -R ${cfg.user}:${cfg.group} ${cfg.stateDir} + ''; + description = " + Shell commands executed before the service's nginx is started. + "; + }; + config = mkOption { default = ""; description = " @@ -608,9 +637,7 @@ in stopIfChanged = false; preStart = '' - mkdir -p ${cfg.stateDir}/logs - chmod 700 ${cfg.stateDir} - chown -R ${cfg.user}:${cfg.group} ${cfg.stateDir} + ${cfg.preStart} ${cfg.package}/bin/nginx -c ${configFile} -p ${cfg.stateDir} -t ''; serviceConfig = { diff --git a/nixos/modules/services/web-servers/nginx/vhost-options.nix b/nixos/modules/services/web-servers/nginx/vhost-options.nix index 8e2b8819e71..6a50d8ed5cd 100644 --- a/nixos/modules/services/web-servers/nginx/vhost-options.nix +++ b/nixos/modules/services/web-servers/nginx/vhost-options.nix @@ -69,7 +69,7 @@ with lib; acmeRoot = mkOption { type = types.str; default = "/var/lib/acme/acme-challenge"; - description = "Directory to store certificates and keys managed by the ACME service."; + description = "Directory for the acme challenge which is PUBLIC, don't put certs or keys in here"; }; acmeFallbackHost = mkOption { diff --git a/nixos/modules/services/web-servers/phpfpm/default.nix b/nixos/modules/services/web-servers/phpfpm/default.nix index e1f4ff5db7f..152c89a2cae 100644 --- a/nixos/modules/services/web-servers/phpfpm/default.nix +++ b/nixos/modules/services/web-servers/phpfpm/default.nix @@ -8,21 +8,31 @@ let stateDir = "/run/phpfpm"; - poolConfigs = cfg.poolConfigs // mapAttrs mkPool cfg.pools; + poolConfigs = + (mapAttrs mapPoolConfig cfg.poolConfigs) // + (mapAttrs mapPool cfg.pools); - mkPool = n: p: '' - listen = ${p.listen} - ${p.extraConfig} - ''; + mapPoolConfig = n: p: { + phpPackage = cfg.phpPackage; + config = p; + }; - fpmCfgFile = pool: poolConfig: pkgs.writeText "phpfpm-${pool}.conf" '' + mapPool = n: p: { + phpPackage = p.phpPackage; + config = '' + listen = ${p.listen} + ${p.extraConfig} + ''; + }; + + fpmCfgFile = pool: conf: pkgs.writeText "phpfpm-${pool}.conf" '' [global] error_log = syslog daemonize = no ${cfg.extraConfig} [${pool}] - ${poolConfig} + ${conf} ''; phpIni = pkgs.runCommand "php.ini" { @@ -97,13 +107,14 @@ in { pools = mkOption { type = types.attrsOf (types.submodule (import ./pool-options.nix { - inherit lib; + inherit lib config; })); default = {}; example = literalExample '' { mypool = { listen = "/path/to/unix/socket"; + phpPackage = pkgs.php; extraConfig = ''' user = nobody pm = dynamic @@ -144,7 +155,7 @@ in { mkdir -p ${stateDir} ''; serviceConfig = let - cfgFile = fpmCfgFile pool poolConfig; + cfgFile = fpmCfgFile pool poolConfig.config; in { Slice = "phpfpm.slice"; PrivateDevices = true; @@ -153,7 +164,7 @@ in { # XXX: We need AF_NETLINK to make the sendmail SUID binary from postfix work RestrictAddressFamilies = "AF_UNIX AF_INET AF_INET6 AF_NETLINK"; Type = "notify"; - ExecStart = "${cfg.phpPackage}/bin/php-fpm -y ${cfgFile} -c ${phpIni}"; + ExecStart = "${poolConfig.phpPackage}/bin/php-fpm -y ${cfgFile} -c ${phpIni}"; ExecReload = "${pkgs.coreutils}/bin/kill -USR2 $MAINPID"; }; } diff --git a/nixos/modules/services/web-servers/phpfpm/pool-options.nix b/nixos/modules/services/web-servers/phpfpm/pool-options.nix index cc688c2c48a..40c83cddb95 100644 --- a/nixos/modules/services/web-servers/phpfpm/pool-options.nix +++ b/nixos/modules/services/web-servers/phpfpm/pool-options.nix @@ -1,4 +1,8 @@ -{ lib }: +{ lib, config }: + +let + fpmCfg = config.services.phpfpm; +in with lib; { @@ -12,6 +16,15 @@ with lib; { ''; }; + phpPackage = mkOption { + type = types.package; + default = fpmCfg.phpPackage; + defaultText = "config.services.phpfpm.phpPackage"; + description = '' + The PHP package to use for running this PHP-FPM pool. + ''; + }; + extraConfig = mkOption { type = types.lines; example = '' diff --git a/nixos/modules/services/web-servers/tomcat.nix b/nixos/modules/services/web-servers/tomcat.nix index d92ba72a833..68261c50324 100644 --- a/nixos/modules/services/web-servers/tomcat.nix +++ b/nixos/modules/services/web-servers/tomcat.nix @@ -31,10 +31,26 @@ in ''; }; + purifyOnStart = mkOption { + type = types.bool; + default = false; + description = '' + On startup, the `baseDir` directory is populated with various files, + subdirectories and symlinks. If this option is enabled, these items + (except for the `logs` and `work` subdirectories) are first removed. + This prevents interference from remainders of an old configuration + (libraries, webapps, etc.), so it's recommended to enable this option. + ''; + }; + baseDir = mkOption { type = lib.types.path; default = "/var/tomcat"; - description = "Location where Tomcat stores configuration files, webapplications and logfiles"; + description = '' + Location where Tomcat stores configuration files, web applications + and logfiles. Note that it is partially cleared on each service startup + if `purifyOnStart` is enabled. + ''; }; logDirs = mkOption { @@ -121,6 +137,11 @@ in type = types.str; description = "name of the virtualhost"; }; + aliases = mkOption { + type = types.listOf types.str; + description = "aliases of the virtualhost"; + default = []; + }; webapps = mkOption { type = types.listOf types.path; description = '' @@ -192,6 +213,15 @@ in after = [ "network.target" ]; preStart = '' + ${lib.optionalString cfg.purifyOnStart '' + # Delete most directories/symlinks we create from the existing base directory, + # to get rid of remainders of an old configuration. + # The list of directories to delete is taken from the "mkdir" command below, + # excluding "logs" (because logs are valuable) and "work" (because normally + # session files are there), and additionally including "bin". + rm -rf ${cfg.baseDir}/{conf,virtualhosts,temp,lib,shared/lib,webapps,bin} + ''} + # Create the base directory mkdir -p \ ${cfg.baseDir}/{conf,virtualhosts,logs,temp,lib,shared/lib,webapps,work} @@ -220,10 +250,28 @@ in ${if cfg.serverXml != "" then '' cp -f ${pkgs.writeTextDir "server.xml" cfg.serverXml}/* ${cfg.baseDir}/conf/ - '' else '' - # Create a modified server.xml which also includes all virtual hosts - sed -e "//a\ ${toString (map (virtualHost: ''${if cfg.logPerVirtualHost then '''' else ""}'') cfg.virtualHosts)}" \ - ${tomcat}/conf/server.xml > ${cfg.baseDir}/conf/server.xml + '' else + let + hostElementForVirtualHost = virtualHost: '' + + '' + concatStrings (innerElementsForVirtualHost virtualHost) + '' + + ''; + innerElementsForVirtualHost = virtualHost: + (map (alias: '' + ${alias} + '') virtualHost.aliases) + ++ (optional cfg.logPerVirtualHost '' + + ''); + hostElementsString = concatMapStringsSep "\n" hostElementForVirtualHost cfg.virtualHosts; + hostElementsSedString = replaceStrings ["\n"] ["\\\n"] hostElementsString; + in '' + # Create a modified server.xml which also includes all virtual hosts + sed -e "//a\\"${escapeShellArg hostElementsSedString} \ + ${tomcat}/conf/server.xml > ${cfg.baseDir}/conf/server.xml '' } ${optionalString (cfg.logDirs != []) '' diff --git a/nixos/modules/services/x11/compton.nix b/nixos/modules/services/x11/compton.nix index 8641c05de52..cafd8d88ec4 100644 --- a/nixos/modules/services/x11/compton.nix +++ b/nixos/modules/services/x11/compton.nix @@ -238,6 +238,12 @@ in { description = "Compton composite manager"; wantedBy = [ "graphical-session.target" ]; partOf = [ "graphical-session.target" ]; + + # Temporarily fixes corrupt colours with Mesa 18 + environment = mkIf (cfg.backend == "glx") { + allow_rgb10_configs = "false"; + }; + serviceConfig = { ExecStart = "${cfg.package}/bin/compton --config ${configFile}"; RestartSec = 3; diff --git a/nixos/modules/services/x11/desktop-managers/gnome3.nix b/nixos/modules/services/x11/desktop-managers/gnome3.nix index 0d5b860d461..7544ba4638a 100644 --- a/nixos/modules/services/x11/desktop-managers/gnome3.nix +++ b/nixos/modules/services/x11/desktop-managers/gnome3.nix @@ -5,14 +5,6 @@ with lib; let cfg = config.services.xserver.desktopManager.gnome3; - # Remove packages of ys from xs, based on their names - removePackagesByName = xs: ys: - let - pkgName = drv: (builtins.parseDrvName drv.name).name; - ysNames = map pkgName ys; - in - filter (x: !(builtins.elem (pkgName x) ysNames)) xs; - # Prioritize nautilus by default when opening directories mimeAppsList = pkgs.writeTextFile { name = "gnome-mimeapps"; @@ -44,6 +36,8 @@ let ${pkgs.glib.dev}/bin/glib-compile-schemas $out/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas/ ''; + flashbackEnabled = cfg.flashback.enableMetacity || length cfg.flashback.customSessions > 0; + in { options = { @@ -79,6 +73,36 @@ in { }; debug = mkEnableOption "gnome-session debug messages"; + + flashback = { + enableMetacity = mkEnableOption "Enable the standard GNOME Flashback session with Metacity."; + + customSessions = mkOption { + type = types.listOf (types.submodule { + options = { + wmName = mkOption { + type = types.str; + description = "The filename-compatible name of the window manager to use."; + example = "xmonad"; + }; + + wmLabel = mkOption { + type = types.str; + description = "The pretty name of the window manager to use."; + example = "XMonad"; + }; + + wmCommand = mkOption { + type = types.str; + description = "The executable of the window manager to use."; + example = "\${pkgs.haskellPackages.xmonad}/bin/xmonad"; + }; + }; + }); + default = []; + description = "Other GNOME Flashback sessions to enable."; + }; + }; }; environment.gnome3.excludePackages = mkOption { @@ -103,10 +127,12 @@ in { services.dleyna-server.enable = mkDefault true; services.gnome3.at-spi2-core.enable = true; services.gnome3.evolution-data-server.enable = true; + services.gnome3.file-roller.enable = mkDefault true; services.gnome3.gnome-disks.enable = mkDefault true; services.gnome3.gnome-documents.enable = mkDefault true; services.gnome3.gnome-keyring.enable = true; services.gnome3.gnome-online-accounts.enable = mkDefault true; + services.gnome3.gnome-remote-desktop.enable = mkDefault true; services.gnome3.gnome-terminal-server.enable = mkDefault true; services.gnome3.gnome-user-share.enable = mkDefault true; services.gnome3.gvfs.enable = true; @@ -119,7 +145,9 @@ in { services.telepathy.enable = mkDefault true; networking.networkmanager.enable = mkDefault true; services.upower.enable = config.powerManagement.enable; - services.dbus.packages = mkIf config.services.printing.enable [ pkgs.system-config-printer ]; + services.dbus.packages = + optional config.services.printing.enable pkgs.system-config-printer ++ + optional flashbackEnabled pkgs.gnome3.gnome-screensaver; services.colord.enable = mkDefault true; services.packagekit.enable = mkDefault true; hardware.bluetooth.enable = mkDefault true; @@ -133,21 +161,27 @@ in { fonts.fonts = [ pkgs.dejavu_fonts pkgs.cantarell-fonts ]; - services.xserver.displayManager.extraSessionFilePackages = [ pkgs.gnome3.gnome-session ]; + services.xserver.displayManager.extraSessionFilePackages = [ pkgs.gnome3.gnome-session ] + ++ map + (wm: pkgs.gnome3.gnome-flashback.mkSessionForWm { + inherit (wm) wmName wmLabel wmCommand; + }) (optional cfg.flashback.enableMetacity { + wmName = "metacity"; + wmLabel = "Metacity"; + wmCommand = "${pkgs.gnome3.metacity}/bin/metacity"; + } ++ cfg.flashback.customSessions); - services.xserver.displayManager.sessionCommands = '' - if test "$XDG_CURRENT_DESKTOP" = "GNOME"; 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 + environment.extraInit = '' + ${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 + 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} ''; environment.variables.GNOME_SESSION_DEBUG = optionalString cfg.debug "1"; @@ -168,7 +202,7 @@ in { "${pkgs.gnome3.glib-networking.out}/lib/gio/modules" "${pkgs.gnome3.gvfs}/lib/gio/modules" ]; environment.systemPackages = pkgs.gnome3.corePackages ++ cfg.sessionPath - ++ (removePackagesByName pkgs.gnome3.optionalPackages config.environment.gnome3.excludePackages) ++ [ + ++ (pkgs.gnome3.removePackagesByName pkgs.gnome3.optionalPackages config.environment.gnome3.excludePackages) ++ [ pkgs.xdg-user-dirs # Update user dirs as described in http://freedesktop.org/wiki/Software/xdg-user-dirs/ ]; @@ -180,8 +214,14 @@ in { networkmanager-iodine networkmanager-l2tp; }; # Needed for themes and backgrounds - environment.pathsToLink = [ "/share" ]; + environment.pathsToLink = [ + "/share" + "/share/nautilus-python/extensions" + ]; + security.pam.services.gnome-screensaver = mkIf flashbackEnabled { + enableGnomeKeyring = true; + }; }; diff --git a/nixos/modules/services/x11/desktop-managers/lxqt.nix b/nixos/modules/services/x11/desktop-managers/lxqt.nix index 896f70c86eb..686bbd0dcf9 100644 --- a/nixos/modules/services/x11/desktop-managers/lxqt.nix +++ b/nixos/modules/services/x11/desktop-managers/lxqt.nix @@ -3,15 +3,6 @@ with lib; let - - # Remove packages of ys from xs, based on their names - removePackagesByName = xs: ys: - let - pkgName = drv: (builtins.parseDrvName drv.name).name; - ysNames = map pkgName ys; - in - filter (x: !(builtins.elem (pkgName x) ysNames)) xs; - xcfg = config.services.xserver; cfg = xcfg.desktopManager.lxqt; @@ -60,7 +51,7 @@ in environment.systemPackages = pkgs.lxqt.preRequisitePackages ++ pkgs.lxqt.corePackages ++ - (removePackagesByName + (pkgs.gnome3.removePackagesByName pkgs.lxqt.optionalPackages config.environment.lxqt.excludePackages); diff --git a/nixos/modules/services/x11/desktop-managers/mate.nix b/nixos/modules/services/x11/desktop-managers/mate.nix index db83aaf3c19..4d2fafd1496 100644 --- a/nixos/modules/services/x11/desktop-managers/mate.nix +++ b/nixos/modules/services/x11/desktop-managers/mate.nix @@ -4,14 +4,6 @@ with lib; let - # Remove packages of ys from xs, based on their names - removePackagesByName = xs: ys: - let - pkgName = drv: (builtins.parseDrvName drv.name).name; - ysNames = map pkgName ys; - in - filter (x: !(builtins.elem (pkgName x) ysNames)) xs; - addToXDGDirs = 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} @@ -96,7 +88,7 @@ in environment.systemPackages = pkgs.mate.basePackages ++ - (removePackagesByName + (pkgs.gnome3.removePackagesByName pkgs.mate.extraPackages config.environment.mate.excludePackages); diff --git a/nixos/modules/services/x11/desktop-managers/plasma5.nix b/nixos/modules/services/x11/desktop-managers/plasma5.nix index 11c1aa4315a..704cc78c152 100644 --- a/nixos/modules/services/x11/desktop-managers/plasma5.nix +++ b/nixos/modules/services/x11/desktop-managers/plasma5.nix @@ -185,10 +185,8 @@ in target = "X11/xkb"; }; - environment.variables = { - # Enable GTK applications to load SVG icons - GDK_PIXBUF_MODULE_FILE = "${pkgs.librsvg.out}/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache"; - }; + # Enable GTK applications to load SVG icons + services.xserver.gdk-pixbuf.modulePackages = [ pkgs.librsvg ]; fonts.fonts = with pkgs; [ noto-fonts hack-font ]; fonts.fontconfig.defaultFonts = { diff --git a/nixos/modules/services/x11/desktop-managers/xfce.nix b/nixos/modules/services/x11/desktop-managers/xfce.nix index 75b9a76e192..dabf09418da 100644 --- a/nixos/modules/services/x11/desktop-managers/xfce.nix +++ b/nixos/modules/services/x11/desktop-managers/xfce.nix @@ -101,10 +101,11 @@ in ]; environment.variables = { - GDK_PIXBUF_MODULE_FILE = "${pkgs.librsvg.out}/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache"; GIO_EXTRA_MODULES = [ "${pkgs.xfce.gvfs}/lib/gio/modules" ]; }; + services.xserver.gdk-pixbuf.modulePackages = [ pkgs.librsvg ]; + services.xserver.desktopManager.session = [{ name = "xfce"; bgSupport = true; diff --git a/nixos/modules/services/x11/display-managers/default.nix b/nixos/modules/services/x11/display-managers/default.nix index 26b79730dd3..0e87e6adbab 100644 --- a/nixos/modules/services/x11/display-managers/default.nix +++ b/nixos/modules/services/x11/display-managers/default.nix @@ -78,8 +78,7 @@ let # This is required by user units using the session bus. ${config.systemd.package}/bin/systemctl --user import-environment DISPLAY XAUTHORITY DBUS_SESSION_BUS_ADDRESS - # Load X defaults. - # FIXME: Check XDG_SESSION_TYPE against x11 + # Load X defaults. This should probably be safe on wayland too. ${xorg.xrdb}/bin/xrdb -merge ${xresourcesXft} if test -e ~/.Xresources; then ${xorg.xrdb}/bin/xrdb -merge ~/.Xresources @@ -192,7 +191,17 @@ let '') names} ${concatMapStrings (pkg: '' - ${xorg.lndir}/bin/lndir ${pkg}/share/xsessions $out/share/xsessions + if test -d ${pkg}/share/xsessions; then + ${xorg.lndir}/bin/lndir ${pkg}/share/xsessions $out/share/xsessions + fi + '') cfg.displayManager.extraSessionFilePackages} + + + ${concatMapStrings (pkg: '' + if test -d ${pkg}/share/wayland-sessions; then + mkdir -p "$out/share/wayland-sessions" + ${xorg.lndir}/bin/lndir ${pkg}/share/wayland-sessions $out/share/wayland-sessions + fi '') cfg.displayManager.extraSessionFilePackages} ''; @@ -240,7 +249,10 @@ in '' xmessage "Hello World!" & ''; - description = "Shell commands executed just before the window or desktop manager is started."; + description = '' + Shell commands executed just before the window or desktop manager is + started. These commands are not currently sourced for Wayland sessions. + ''; }; hiddenUsers = mkOption { diff --git a/nixos/modules/services/x11/display-managers/gdm.nix b/nixos/modules/services/x11/display-managers/gdm.nix index 6cc30b218f4..226fee7491c 100644 --- a/nixos/modules/services/x11/display-managers/gdm.nix +++ b/nixos/modules/services/x11/display-managers/gdm.nix @@ -116,7 +116,7 @@ in environment = { GDM_X_SERVER_EXTRA_ARGS = toString (filter (arg: arg != "-terminate") cfg.xserverArgs); - GDM_SESSIONS_DIR = "${cfg.session.desktops}/share/xsessions"; + XDG_DATA_DIRS = "${cfg.session.desktops}/share/"; # Find the mouse XCURSOR_PATH = "~/.icons:${pkgs.gnome3.adwaita-icon-theme}/share/icons"; } // optionalAttrs (xSessionWrapper != null) { diff --git a/nixos/modules/services/x11/display-managers/lightdm-greeters/gtk.nix b/nixos/modules/services/x11/display-managers/lightdm-greeters/gtk.nix index 013956c0546..d1ee076e918 100644 --- a/nixos/modules/services/x11/display-managers/lightdm-greeters/gtk.nix +++ b/nixos/modules/services/x11/display-managers/lightdm-greeters/gtk.nix @@ -22,7 +22,7 @@ let # This wrapper ensures that we actually get themes makeWrapper ${pkgs.lightdm_gtk_greeter}/sbin/lightdm-gtk-greeter \ $out/greeter \ - --prefix PATH : "${pkgs.glibc.bin}/bin" \ + --prefix PATH : "${lib.getBin pkgs.stdenv.cc.libc}/bin" \ --set GDK_PIXBUF_MODULE_FILE "${pkgs.librsvg.out}/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache" \ --set GTK_PATH "${theme}:${pkgs.gtk3.out}" \ --set GTK_EXE_PREFIX "${theme}" \ diff --git a/nixos/modules/services/x11/display-managers/lightdm.nix b/nixos/modules/services/x11/display-managers/lightdm.nix index a685dbfff2a..567c3ac3454 100644 --- a/nixos/modules/services/x11/display-managers/lightdm.nix +++ b/nixos/modules/services/x11/display-managers/lightdm.nix @@ -196,7 +196,7 @@ in { assertion = cfg.autoLogin.enable -> dmDefault != "none" || wmDefault != "none"; message = '' LightDM auto-login requires that services.xserver.desktopManager.default and - services.xserver.windowMananger.default are set to valid values. The current + services.xserver.windowManager.default are set to valid values. The current default session: ${defaultSessionName} is not valid. ''; } @@ -208,15 +208,11 @@ in } ]; - services.xserver.displayManager.job = { - logToFile = true; - - # lightdm relaunches itself via just `lightdm`, so needs to be on the PATH - execCmd = '' - export PATH=${lightdm}/sbin:$PATH - exec ${lightdm}/sbin/lightdm - ''; - }; + # lightdm relaunches itself via just `lightdm`, so needs to be on the PATH + services.xserver.displayManager.job.execCmd = '' + export PATH=${lightdm}/sbin:$PATH + exec ${lightdm}/sbin/lightdm + ''; environment.etc."lightdm/lightdm.conf".source = lightdmConf; environment.etc."lightdm/users.conf".source = usersConf; diff --git a/nixos/modules/services/x11/display-managers/sddm.nix b/nixos/modules/services/x11/display-managers/sddm.nix index 522a0dc92d6..05830e325d5 100644 --- a/nixos/modules/services/x11/display-managers/sddm.nix +++ b/nixos/modules/services/x11/display-managers/sddm.nix @@ -59,6 +59,7 @@ let [Wayland] EnableHidpi=${if cfg.enableHidpi then "true" else "false"} + SessionDir=${dmcfg.session.desktops}/share/wayland-sessions ${optionalString cfg.autoLogin.enable '' [Autologin] @@ -202,15 +203,13 @@ in { assertion = cfg.autoLogin.enable -> elem defaultSessionName dmcfg.session.names; message = '' SDDM auto-login requires that services.xserver.desktopManager.default and - services.xserver.windowMananger.default are set to valid values. The current + services.xserver.windowManager.default are set to valid values. The current default session: ${defaultSessionName} is not valid. ''; } ]; services.xserver.displayManager.job = { - logToFile = true; - environment = { # Load themes from system environment QT_PLUGIN_PATH = "/run/current-system/sw/" + pkgs.qt5.qtbase.qtPluginPrefix; diff --git a/nixos/modules/services/x11/display-managers/xpra.nix b/nixos/modules/services/x11/display-managers/xpra.nix index b46ede550c1..a4b57cfdab6 100644 --- a/nixos/modules/services/x11/display-managers/xpra.nix +++ b/nixos/modules/services/x11/display-managers/xpra.nix @@ -219,30 +219,26 @@ in VideoRam 192000 ''; - services.xserver.displayManager.job = { - logToFile = true; - - execCmd = '' - ${optionalString (cfg.pulseaudio) - "export PULSE_COOKIE=/var/run/pulse/.config/pulse/cookie"} - exec ${pkgs.xpra}/bin/xpra start \ - --daemon=off \ - --log-dir=/var/log \ - --log-file=xpra.log \ - --opengl=on \ - --clipboard=on \ - --notifications=on \ - --speaker=yes \ - --mdns=no \ - --pulseaudio=no \ - ${optionalString (cfg.pulseaudio) "--sound-source=pulse"} \ - --socket-dirs=/var/run/xpra \ - --xvfb="xpra_Xdummy ${concatStringsSep " " dmcfg.xserverArgs}" \ - ${optionalString (cfg.bindTcp != null) "--bind-tcp=${cfg.bindTcp}"} \ - --auth=${cfg.auth} \ - ${concatStringsSep " " cfg.extraOptions} - ''; - }; + services.xserver.displayManager.job.execCmd = '' + ${optionalString (cfg.pulseaudio) + "export PULSE_COOKIE=/var/run/pulse/.config/pulse/cookie"} + exec ${pkgs.xpra}/bin/xpra start \ + --daemon=off \ + --log-dir=/var/log \ + --log-file=xpra.log \ + --opengl=on \ + --clipboard=on \ + --notifications=on \ + --speaker=yes \ + --mdns=no \ + --pulseaudio=no \ + ${optionalString (cfg.pulseaudio) "--sound-source=pulse"} \ + --socket-dirs=/var/run/xpra \ + --xvfb="xpra_Xdummy ${concatStringsSep " " dmcfg.xserverArgs}" \ + ${optionalString (cfg.bindTcp != null) "--bind-tcp=${cfg.bindTcp}"} \ + --auth=${cfg.auth} \ + ${concatStringsSep " " cfg.extraOptions} + ''; services.xserver.terminateOnReset = false; diff --git a/nixos/modules/services/x11/gdk-pixbuf.nix b/nixos/modules/services/x11/gdk-pixbuf.nix new file mode 100644 index 00000000000..58faa8e2f9d --- /dev/null +++ b/nixos/modules/services/x11/gdk-pixbuf.nix @@ -0,0 +1,45 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.services.xserver.gdk-pixbuf; + + # Get packages to generate the cache for. We always include gdk_pixbuf. + effectivePackages = unique ([pkgs.gdk_pixbuf] ++ cfg.modulePackages); + + # Generate the cache file by running gdk-pixbuf-query-loaders for each + # package and concatenating the results. + loadersCache = pkgs.runCommand "gdk-pixbuf-loaders.cache" {} '' + ( + for package in ${concatStringsSep " " effectivePackages}; do + module_dir="$package/${pkgs.gdk_pixbuf.moduleDir}" + if [[ ! -d $module_dir ]]; then + echo "Warning (services.xserver.gdk-pixbuf): missing module directory $module_dir" 1>&2 + continue + fi + GDK_PIXBUF_MODULEDIR="$module_dir" \ + ${pkgs.gdk_pixbuf.dev}/bin/gdk-pixbuf-query-loaders + done + ) > "$out" + ''; +in + +{ + options = { + services.xserver.gdk-pixbuf.modulePackages = mkOption { + type = types.listOf types.package; + default = [ ]; + description = "Packages providing GDK-Pixbuf modules, for cache generation."; + }; + }; + + # If there is any package configured in modulePackages, we generate the + # loaders.cache based on that and set the environment variable + # GDK_PIXBUF_MODULE_FILE to point to it. + config = mkIf (cfg.modulePackages != []) { + environment.variables = { + GDK_PIXBUF_MODULE_FILE = "${loadersCache}"; + }; + }; +} diff --git a/nixos/modules/services/x11/urxvtd.nix b/nixos/modules/services/x11/urxvtd.nix index f2ce089ce19..d916fa5bb39 100644 --- a/nixos/modules/services/x11/urxvtd.nix +++ b/nixos/modules/services/x11/urxvtd.nix @@ -7,41 +7,41 @@ with lib; let cfg = config.services.urxvtd; in { + options.services.urxvtd = { + enable = mkOption { + type = types.bool; + default = false; + description = '' + Enable urxvtd, the urxvt terminal daemon. To use urxvtd, run + "urxvtc". + ''; + }; - options.services.urxvtd.enable = mkOption { - type = types.bool; - default = false; - description = '' - Enable urxvtd, the urxvt terminal daemon. To use urxvtd, run - "urxvtc". - ''; + package = mkOption { + default = pkgs.rxvt_unicode-with-plugins; + defaultText = "pkgs.rxvt_unicode-with-plugins"; + description = '' + Package to install. Usually pkgs.rxvt_unicode-with-plugins or pkgs.rxvt_unicode + ''; + type = types.package; + }; }; config = mkIf cfg.enable { - systemd.user = { - sockets.urxvtd = { - description = "socket for urxvtd, the urxvt terminal daemon"; - wantedBy = [ "graphical-session.target" ]; - partOf = [ "graphical-session.target" ]; - socketConfig = { - ListenStream = "%t/urxvtd-socket"; - }; + systemd.user.services.urxvtd = { + description = "urxvt terminal daemon"; + wantedBy = [ "graphical-session.target" ]; + partOf = [ "graphical-session.target" ]; + path = [ pkgs.xsel ]; + serviceConfig = { + ExecStart = "${cfg.package}/bin/urxvtd -o"; + Environment = "RXVT_SOCKET=%t/urxvtd-socket"; + Restart = "on-failure"; + RestartSec = "5s"; }; - - services.urxvtd = { - description = "urxvt terminal daemon"; - path = [ pkgs.xsel ]; - serviceConfig = { - ExecStart = "${pkgs.rxvt_unicode-with-plugins}/bin/urxvtd -o"; - Environment = "RXVT_SOCKET=%t/urxvtd-socket"; - Restart = "on-failure"; - RestartSec = "5s"; - }; - }; - }; - environment.systemPackages = [ pkgs.rxvt_unicode-with-plugins ]; + environment.systemPackages = [ cfg.package ]; environment.variables.RXVT_SOCKET = "/run/user/$(id -u)/urxvtd-socket"; }; diff --git a/nixos/modules/services/x11/xserver.nix b/nixos/modules/services/x11/xserver.nix index 297e3631165..34ae8c11a3f 100644 --- a/nixos/modules/services/x11/xserver.nix +++ b/nixos/modules/services/x11/xserver.nix @@ -13,7 +13,8 @@ let # Map video driver names to driver packages. FIXME: move into card-specific modules. knownVideoDrivers = { - virtualbox = { modules = [ kernelPackages.virtualboxGuestAdditions ]; driverName = "vboxvideo"; }; + # Alias so people can keep using "virtualbox" instead of "vboxvideo". + virtualbox = { modules = [ xorg.xf86videovboxvideo ]; driverName = "vboxvideo"; }; # modesetting does not have a xf86videomodesetting package as it is included in xorgserver modesetting = {}; @@ -564,8 +565,6 @@ in knownVideoDrivers; in optional (driver != null) ({ inherit name; modules = []; driverName = name; } // driver)); - nixpkgs.config = optionalAttrs (elem "vboxvideo" cfg.videoDrivers) { xorg.abiCompat = "1.18"; }; - assertions = [ { assertion = config.security.polkit.enable; message = "X11 requires Polkit to be enabled (‘security.polkit.enable = true’)."; @@ -631,6 +630,8 @@ in ] ++ optional (elem "virtualbox" cfg.videoDrivers) xorg.xrefresh; + environment.pathsToLink = [ "/share/X11" ]; + xdg = { autostart.enable = true; menus.enable = true; diff --git a/nixos/modules/system/activation/activation-script.nix b/nixos/modules/system/activation/activation-script.nix index b1eaf018956..74c150a848d 100644 --- a/nixos/modules/system/activation/activation-script.nix +++ b/nixos/modules/system/activation/activation-script.nix @@ -21,7 +21,8 @@ let [ coreutils gnugrep findutils - glibc # needed for getent + getent + stdenv.cc.libc # nscd in update-users-groups.pl shadow nettools # needed for hostname utillinux # needed for mount and mountpoint diff --git a/nixos/modules/system/boot/initrd-network.nix b/nixos/modules/system/boot/initrd-network.nix index dd0ea69e968..cb8fc957a99 100644 --- a/nixos/modules/system/boot/initrd-network.nix +++ b/nixos/modules/system/boot/initrd-network.nix @@ -56,7 +56,8 @@ in is acquired using DHCP. You should add the module(s) required for your network card to - boot.initrd.availableKernelModules. lspci -v -s <ethernet controller> + boot.initrd.availableKernelModules. + lspci -v | grep -iA8 'network\|ethernet' will tell you which. ''; }; diff --git a/nixos/modules/system/boot/initrd-ssh.nix b/nixos/modules/system/boot/initrd-ssh.nix index 53e993603e2..2d3e3b05c98 100644 --- a/nixos/modules/system/boot/initrd-ssh.nix +++ b/nixos/modules/system/boot/initrd-ssh.nix @@ -82,6 +82,7 @@ in default = 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. ''; }; diff --git a/nixos/modules/system/boot/loader/generations-dir/generations-dir.nix b/nixos/modules/system/boot/loader/generations-dir/generations-dir.nix index 2d27611946e..ff90a9b4617 100644 --- a/nixos/modules/system/boot/loader/generations-dir/generations-dir.nix +++ b/nixos/modules/system/boot/loader/generations-dir/generations-dir.nix @@ -7,8 +7,8 @@ let generationsDirBuilder = pkgs.substituteAll { src = ./generations-dir-builder.sh; isExecutable = true; - inherit (pkgs) bash; - path = [pkgs.coreutils pkgs.gnused pkgs.gnugrep]; + inherit (pkgs.buildPackages) bash; + path = with pkgs.buildPackages; [coreutils gnused gnugrep]; inherit (config.boot.loader.generationsDir) copyKernels; }; diff --git a/nixos/modules/system/boot/loader/generic-extlinux-compatible/default.nix b/nixos/modules/system/boot/loader/generic-extlinux-compatible/default.nix index af39c7bb684..5f5dbe1092d 100644 --- a/nixos/modules/system/boot/loader/generic-extlinux-compatible/default.nix +++ b/nixos/modules/system/boot/loader/generic-extlinux-compatible/default.nix @@ -8,7 +8,7 @@ let timeoutStr = if blCfg.timeout == null then "-1" else toString blCfg.timeout; - builder = import ./extlinux-conf-builder.nix { inherit pkgs; }; + builder = import ./extlinux-conf-builder.nix { pkgs = pkgs.buildPackages; }; in { options = { diff --git a/nixos/modules/system/boot/loader/generic-extlinux-compatible/extlinux-conf-builder.nix b/nixos/modules/system/boot/loader/generic-extlinux-compatible/extlinux-conf-builder.nix index 576a07c1d27..9ac6b6b1224 100644 --- a/nixos/modules/system/boot/loader/generic-extlinux-compatible/extlinux-conf-builder.nix +++ b/nixos/modules/system/boot/loader/generic-extlinux-compatible/extlinux-conf-builder.nix @@ -3,6 +3,6 @@ pkgs.substituteAll { src = ./extlinux-conf-builder.sh; isExecutable = true; - path = [pkgs.coreutils pkgs.gnused pkgs.gnugrep]; - inherit (pkgs) bash; + path = [pkgs.buildPackages.coreutils pkgs.buildPackages.gnused pkgs.buildPackages.gnugrep]; + inherit (pkgs.buildPackages) bash; } diff --git a/nixos/modules/system/boot/loader/grub/grub.nix b/nixos/modules/system/boot/loader/grub/grub.nix index 3a33b3f65d3..a1537ad3ced 100644 --- a/nixos/modules/system/boot/loader/grub/grub.nix +++ b/nixos/modules/system/boot/loader/grub/grub.nix @@ -586,7 +586,7 @@ in in pkgs.writeScript "install-grub.sh" ('' #!${pkgs.runtimeShell} set -e - export PERL5LIB=${makePerlPath (with pkgs.perlPackages; [ FileSlurp XMLLibXML XMLSAX XMLSAXBase ListCompare ])} + export PERL5LIB=${with pkgs.perlPackages; makePerlPath [ FileSlurp XMLLibXML XMLSAX XMLSAXBase ListCompare ]} ${optionalString cfg.enableCryptodisk "export GRUB_ENABLE_CRYPTODISK=y"} '' + flip concatMapStrings cfg.mirroredBoots (args: '' ${pkgs.perl}/bin/perl ${install-grub-pl} ${grubConfig args} $@ diff --git a/nixos/modules/system/boot/loader/init-script/init-script.nix b/nixos/modules/system/boot/loader/init-script/init-script.nix index 374d9524ff1..385a2603678 100644 --- a/nixos/modules/system/boot/loader/init-script/init-script.nix +++ b/nixos/modules/system/boot/loader/init-script/init-script.nix @@ -7,8 +7,8 @@ let initScriptBuilder = pkgs.substituteAll { src = ./init-script-builder.sh; isExecutable = true; - inherit (pkgs) bash; - path = [pkgs.coreutils pkgs.gnused pkgs.gnugrep]; + inherit (pkgs.buildPackages) bash; + path = with pkgs.buildPackages; [coreutils gnused gnugrep]; }; in diff --git a/nixos/modules/system/boot/loader/raspberrypi/builder_uboot.sh b/nixos/modules/system/boot/loader/raspberrypi/builder_uboot.sh deleted file mode 100644 index 36bf1506627..00000000000 --- a/nixos/modules/system/boot/loader/raspberrypi/builder_uboot.sh +++ /dev/null @@ -1,29 +0,0 @@ -#! @bash@/bin/sh -e - -copyForced() { - local src="$1" - local dst="$2" - cp $src $dst.tmp - mv $dst.tmp $dst -} - -# Call the extlinux builder -"@extlinuxConfBuilder@" "$@" - -# Add the firmware files -fwdir=@firmware@/share/raspberrypi/boot/ -copyForced $fwdir/bootcode.bin /boot/bootcode.bin -copyForced $fwdir/fixup.dat /boot/fixup.dat -copyForced $fwdir/fixup_cd.dat /boot/fixup_cd.dat -copyForced $fwdir/fixup_db.dat /boot/fixup_db.dat -copyForced $fwdir/fixup_x.dat /boot/fixup_x.dat -copyForced $fwdir/start.elf /boot/start.elf -copyForced $fwdir/start_cd.elf /boot/start_cd.elf -copyForced $fwdir/start_db.elf /boot/start_db.elf -copyForced $fwdir/start_x.elf /boot/start_x.elf - -# Add the uboot file -copyForced @uboot@/u-boot.bin /boot/u-boot-rpi.bin - -# Add the config.txt -copyForced @configTxt@ /boot/config.txt diff --git a/nixos/modules/system/boot/loader/raspberrypi/raspberrypi-builder.nix b/nixos/modules/system/boot/loader/raspberrypi/raspberrypi-builder.nix new file mode 100644 index 00000000000..7eb52e3d021 --- /dev/null +++ b/nixos/modules/system/boot/loader/raspberrypi/raspberrypi-builder.nix @@ -0,0 +1,10 @@ +{ pkgs, configTxt }: + +pkgs.substituteAll { + src = ./raspberrypi-builder.sh; + isExecutable = true; + inherit (pkgs) bash; + path = [pkgs.coreutils pkgs.gnused pkgs.gnugrep]; + firmware = pkgs.raspberrypifw; + inherit configTxt; +} diff --git a/nixos/modules/system/boot/loader/raspberrypi/builder.sh b/nixos/modules/system/boot/loader/raspberrypi/raspberrypi-builder.sh similarity index 59% rename from nixos/modules/system/boot/loader/raspberrypi/builder.sh rename to nixos/modules/system/boot/loader/raspberrypi/raspberrypi-builder.sh index 8adc8a6a7e1..0fb07de10c0 100644 --- a/nixos/modules/system/boot/loader/raspberrypi/builder.sh +++ b/nixos/modules/system/boot/loader/raspberrypi/raspberrypi-builder.sh @@ -5,15 +5,25 @@ shopt -s nullglob export PATH=/empty for i in @path@; do PATH=$PATH:$i/bin; done -default=$1 -if test -z "$1"; then - echo "Syntax: builder.sh " +usage() { + echo "usage: $0 -c [-d ]" >&2 exit 1 -fi +} + +default= # Default configuration +target=/boot # Target directory + +while getopts "c:d:" opt; do + case "$opt" in + c) default="$OPTARG" ;; + d) target="$OPTARG" ;; + \?) usage ;; + esac +done echo "updating the boot generations directory..." -mkdir -p /boot/old +mkdir -p $target/old # Convert a path to a file in the Nix store such as # /nix/store/-/file to --. @@ -22,12 +32,12 @@ cleanName() { echo "$path" | sed 's|^/nix/store/||' | sed 's|/|-|g' } -# Copy a file from the Nix store to /boot/kernels. +# Copy a file from the Nix store to $target/kernels. declare -A filesCopied copyToKernelsDir() { local src="$1" - local dst="/boot/old/$(cleanName $src)" + local dst="$target/old/$(cleanName $src)" # Don't copy the file if $dst already exists. This means that we # have to create $dst atomically to prevent partially copied # kernels or initrd if this script is ever interrupted. @@ -47,10 +57,10 @@ copyForced() { mv $dst.tmp $dst } -outdir=/boot/old +outdir=$target/old mkdir -p $outdir || true -# Copy its kernel and initrd to /boot/kernels. +# Copy its kernel and initrd to $target/old. addEntry() { local path="$1" local generation="$2" @@ -74,25 +84,21 @@ addEntry() { echo $initrd > $outdir/$generation-initrd echo $kernel > $outdir/$generation-kernel - if test $(readlink -f "$path") = "$default"; then - if [ @version@ -eq 1 ]; then - copyForced $kernel /boot/kernel.img - else - copyForced $kernel /boot/kernel7.img - fi - copyForced $initrd /boot/initrd - for dtb in $dtb_path/bcm*.dtb; do - dst="/boot/$(basename $dtb)" + if test "$generation" = "default"; then + copyForced $kernel $target/kernel.img + copyForced $initrd $target/initrd + for dtb in $dtb_path/{broadcom,}/bcm*.dtb; do + dst="$target/$(basename $dtb)" copyForced $dtb "$dst" filesCopied[$dst]=1 done - cp "$(readlink -f "$path/init")" /boot/nixos-init - echo "`cat $path/kernel-params` init=$path/init" >/boot/cmdline.txt - - echo "$2" > /boot/defaultgeneration + cp "$(readlink -f "$path/init")" $target/nixos-init + echo "`cat $path/kernel-params` init=$path/init" >$target/cmdline.txt fi } +addEntry $default default + # Add all generations of the system profile to the menu, in reverse # (most recent to least recent) order. for generation in $( @@ -105,21 +111,21 @@ done # Add the firmware files fwdir=@firmware@/share/raspberrypi/boot/ -copyForced $fwdir/bootcode.bin /boot/bootcode.bin -copyForced $fwdir/fixup.dat /boot/fixup.dat -copyForced $fwdir/fixup_cd.dat /boot/fixup_cd.dat -copyForced $fwdir/fixup_db.dat /boot/fixup_db.dat -copyForced $fwdir/fixup_x.dat /boot/fixup_x.dat -copyForced $fwdir/start.elf /boot/start.elf -copyForced $fwdir/start_cd.elf /boot/start_cd.elf -copyForced $fwdir/start_db.elf /boot/start_db.elf -copyForced $fwdir/start_x.elf /boot/start_x.elf +copyForced $fwdir/bootcode.bin $target/bootcode.bin +copyForced $fwdir/fixup.dat $target/fixup.dat +copyForced $fwdir/fixup_cd.dat $target/fixup_cd.dat +copyForced $fwdir/fixup_db.dat $target/fixup_db.dat +copyForced $fwdir/fixup_x.dat $target/fixup_x.dat +copyForced $fwdir/start.elf $target/start.elf +copyForced $fwdir/start_cd.elf $target/start_cd.elf +copyForced $fwdir/start_db.elf $target/start_db.elf +copyForced $fwdir/start_x.elf $target/start_x.elf # Add the config.txt -copyForced @configTxt@ /boot/config.txt +copyForced @configTxt@ $target/config.txt -# Remove obsolete files from /boot and /boot/old. -for fn in /boot/old/*linux* /boot/old/*initrd-initrd* /boot/bcm*.dtb; do +# Remove obsolete files from $target and $target/old. +for fn in $target/old/*linux* $target/old/*initrd-initrd* $target/bcm*.dtb; do if ! test "${filesCopied[$fn]}" = 1; then rm -vf -- "$fn" fi diff --git a/nixos/modules/system/boot/loader/raspberrypi/raspberrypi.nix b/nixos/modules/system/boot/loader/raspberrypi/raspberrypi.nix index 9bec24c53f5..047651dc642 100644 --- a/nixos/modules/system/boot/loader/raspberrypi/raspberrypi.nix +++ b/nixos/modules/system/boot/loader/raspberrypi/raspberrypi.nix @@ -5,30 +5,21 @@ with lib; let cfg = config.boot.loader.raspberryPi; - builderGeneric = pkgs.substituteAll { - src = ./builder.sh; - isExecutable = true; - inherit (pkgs) bash; - path = [pkgs.coreutils pkgs.gnused pkgs.gnugrep]; - firmware = pkgs.raspberrypifw; - version = cfg.version; - inherit configTxt; - }; - inherit (pkgs.stdenv.hostPlatform) platform; - builderUboot = import ./builder_uboot.nix { inherit config; inherit pkgs; inherit configTxt; }; + builderUboot = import ./uboot-builder.nix { inherit pkgs configTxt; inherit (cfg) version; }; + builderGeneric = import ./raspberrypi-builder.nix { inherit pkgs configTxt; }; builder = if cfg.uboot.enable then "${builderUboot} -g ${toString cfg.uboot.configurationLimit} -t ${timeoutStr} -c" else - builderGeneric; + "${builderGeneric} -c"; blCfg = config.boot.loader; timeoutStr = if blCfg.timeout == null then "-1" else toString blCfg.timeout; - isAarch64 = pkgs.stdenv.isAarch64; + isAarch64 = pkgs.stdenv.hostPlatform.isAarch64; optional = pkgs.stdenv.lib.optionalString; configTxt = @@ -43,9 +34,12 @@ let '' + optional isAarch64 '' # Boot in 64-bit mode. arm_control=0x200 - '' + optional cfg.uboot.enable '' + '' + (if cfg.uboot.enable then '' kernel=u-boot-rpi.bin - '' + optional (cfg.firmwareConfig != null) cfg.firmwareConfig); + '' else '' + kernel=kernel.img + initramfs initrd followkernel + '') + optional (cfg.firmwareConfig != null) cfg.firmwareConfig); in @@ -65,7 +59,7 @@ in version = mkOption { default = 2; - type = types.enum [ 1 2 3 ]; + type = types.enum [ 0 1 2 3 ]; description = '' ''; }; @@ -103,7 +97,7 @@ in config = mkIf cfg.enable { assertions = singleton { - assertion = !pkgs.stdenv.isAarch64 || cfg.version == 3; + assertion = !pkgs.stdenv.hostPlatform.isAarch64 || cfg.version == 3; message = "Only Raspberry Pi 3 supports aarch64."; }; diff --git a/nixos/modules/system/boot/loader/raspberrypi/builder_uboot.nix b/nixos/modules/system/boot/loader/raspberrypi/uboot-builder.nix similarity index 54% rename from nixos/modules/system/boot/loader/raspberrypi/builder_uboot.nix rename to nixos/modules/system/boot/loader/raspberrypi/uboot-builder.nix index 47f25a9c2b1..94599a0081c 100644 --- a/nixos/modules/system/boot/loader/raspberrypi/builder_uboot.nix +++ b/nixos/modules/system/boot/loader/raspberrypi/uboot-builder.nix @@ -1,13 +1,14 @@ -{ config, pkgs, configTxt }: +{ pkgs, version, configTxt }: let - cfg = config.boot.loader.raspberryPi; - isAarch64 = pkgs.stdenv.isAarch64; + isAarch64 = pkgs.stdenv.hostPlatform.isAarch64; uboot = - if cfg.version == 1 then + if version == 0 then + pkgs.ubootRaspberryPiZero + else if version == 1 then pkgs.ubootRaspberryPi - else if cfg.version == 2 then + else if version == 2 then pkgs.ubootRaspberryPi2 else if isAarch64 then @@ -17,18 +18,17 @@ let extlinuxConfBuilder = import ../generic-extlinux-compatible/extlinux-conf-builder.nix { - inherit pkgs; + pkgs = pkgs.buildPackages; }; in pkgs.substituteAll { - src = ./builder_uboot.sh; + src = ./uboot-builder.sh; isExecutable = true; - inherit (pkgs) bash; - path = [pkgs.coreutils pkgs.gnused pkgs.gnugrep]; + inherit (pkgs.buildPackages) bash; + path = with pkgs.buildPackages; [coreutils gnused gnugrep]; firmware = pkgs.raspberrypifw; inherit uboot; inherit configTxt; inherit extlinuxConfBuilder; - version = cfg.version; + inherit version; } - diff --git a/nixos/modules/system/boot/loader/raspberrypi/uboot-builder.sh b/nixos/modules/system/boot/loader/raspberrypi/uboot-builder.sh new file mode 100644 index 00000000000..ea591427179 --- /dev/null +++ b/nixos/modules/system/boot/loader/raspberrypi/uboot-builder.sh @@ -0,0 +1,38 @@ +#! @bash@/bin/sh -e + +target=/boot # Target directory + +while getopts "t:c:d:g:" opt; do + case "$opt" in + d) target="$OPTARG" ;; + *) ;; + esac +done + +copyForced() { + local src="$1" + local dst="$2" + cp $src $dst.tmp + mv $dst.tmp $dst +} + +# Call the extlinux builder +"@extlinuxConfBuilder@" "$@" + +# Add the firmware files +fwdir=@firmware@/share/raspberrypi/boot/ +copyForced $fwdir/bootcode.bin $target/bootcode.bin +copyForced $fwdir/fixup.dat $target/fixup.dat +copyForced $fwdir/fixup_cd.dat $target/fixup_cd.dat +copyForced $fwdir/fixup_db.dat $target/fixup_db.dat +copyForced $fwdir/fixup_x.dat $target/fixup_x.dat +copyForced $fwdir/start.elf $target/start.elf +copyForced $fwdir/start_cd.elf $target/start_cd.elf +copyForced $fwdir/start_db.elf $target/start_db.elf +copyForced $fwdir/start_x.elf $target/start_x.elf + +# Add the uboot file +copyForced @uboot@/u-boot.bin $target/u-boot-rpi.bin + +# Add the config.txt +copyForced @configTxt@ $target/config.txt diff --git a/nixos/modules/system/boot/loader/systemd-boot/systemd-boot.nix b/nixos/modules/system/boot/loader/systemd-boot/systemd-boot.nix index feed863efd6..9ad2a2779e1 100644 --- a/nixos/modules/system/boot/loader/systemd-boot/systemd-boot.nix +++ b/nixos/modules/system/boot/loader/systemd-boot/systemd-boot.nix @@ -12,7 +12,7 @@ let isExecutable = true; - inherit (pkgs) python3; + inherit (pkgs.buildPackages) python3; systemd = config.systemd.package; diff --git a/nixos/modules/system/boot/luksroot.nix b/nixos/modules/system/boot/luksroot.nix index 1079089bc5a..aa4a5f8abcc 100644 --- a/nixos/modules/system/boot/luksroot.nix +++ b/nixos/modules/system/boot/luksroot.nix @@ -7,19 +7,19 @@ let commonFunctions = '' die() { - echo "$@" >&2 - exit 1 + echo "$@" >&2 + exit 1 } dev_exist() { - local target="$1" - if [ -e $target ]; then - return 0 - else - local uuid=$(echo -n $target | sed -e 's,UUID=\(.*\),\1,g') - local dev=$(blkid --uuid $uuid) - return $? - fi + local target="$1" + if [ -e $target ]; then + return 0 + else + local uuid=$(echo -n $target | sed -e 's,UUID=\(.*\),\1,g') + blkid --uuid $uuid >/dev/null + return $? + fi } wait_target() { @@ -51,30 +51,30 @@ let } wait_yubikey() { - local secs="''${1:-10}" + local secs="''${1:-10}" - ykinfo -v 1>/dev/null 2>&1 - if [ $? != 0 ]; then - echo -n "Waiting $secs seconds for Yubikey to appear..." - local success=false - for try in $(seq $secs); do - echo -n . - sleep 1 - ykinfo -v 1>/dev/null 2>&1 - if [ $? == 0 ]; then - success=true - break - fi - done - if [ $success == true ]; then - echo " - success"; - return 0 - else - echo " - failure"; - return 1 - fi - fi - return 0 + ykinfo -v 1>/dev/null 2>&1 + if [ $? != 0 ]; then + echo -n "Waiting $secs seconds for Yubikey to appear..." + local success=false + for try in $(seq $secs); do + echo -n . + sleep 1 + ykinfo -v 1>/dev/null 2>&1 + if [ $? == 0 ]; then + success=true + break + fi + done + if [ $success == true ]; then + echo " - success"; + return 0 + else + echo " - failure"; + return 1 + fi + fi + return 0 } ''; @@ -144,7 +144,7 @@ let fi fi done - echo -n "Verifiying passphrase for ${device}..." + echo -n "Verifying passphrase for ${device}..." echo -n "$passphrase" | ${csopen} --key-file=- if [ $? == 0 ]; then echo " - success" diff --git a/nixos/modules/system/boot/stage-1-init.sh b/nixos/modules/system/boot/stage-1-init.sh index 3bc33a20a09..6dafc6cddde 100644 --- a/nixos/modules/system/boot/stage-1-init.sh +++ b/nixos/modules/system/boot/stage-1-init.sh @@ -246,10 +246,7 @@ checkFS() { if [ "$fsType" = iso9660 -o "$fsType" = udf ]; then return 0; fi # Don't check resilient COWs as they validate the fs structures at mount time - if [ "$fsType" = btrfs -o "$fsType" = zfs ]; then return 0; fi - - # Skip fsck for bcachefs - not implemented yet. - if [ "$fsType" = bcachefs ]; then return 0; fi + if [ "$fsType" = btrfs -o "$fsType" = zfs -o "$fsType" = bcachefs ]; then return 0; fi # Skip fsck for nilfs2 - not needed by design and no fsck tool for this filesystem. if [ "$fsType" = nilfs2 ]; then return 0; fi @@ -343,6 +340,10 @@ mountFS() { echo "resizing $device..." e2fsck -fp "$device" resize2fs "$device" + elif [ "$fsType" = f2fs ]; then + echo "resizing $device..." + fsck.f2fs -fp "$device" + resize.f2fs "$device" fi ;; esac diff --git a/nixos/modules/system/boot/stage-1.nix b/nixos/modules/system/boot/stage-1.nix index f58b68cb335..c8ea1401528 100644 --- a/nixos/modules/system/boot/stage-1.nix +++ b/nixos/modules/system/boot/stage-1.nix @@ -127,8 +127,8 @@ let copy_bin_and_libs ${pkgs.kmod}/bin/kmod ln -sf kmod $out/bin/modprobe - # Copy resize2fs if needed. - ${optionalString (any (fs: fs.autoResize) fileSystems) '' + # Copy resize2fs if any ext* filesystems are to be resized + ${optionalString (any (fs: fs.autoResize && (lib.hasPrefix "ext" fs.fsType)) fileSystems) '' # We need mke2fs in the initrd. copy_bin_and_libs ${pkgs.e2fsprogs}/sbin/resize2fs ''} @@ -147,7 +147,7 @@ let ${config.boot.initrd.extraUtilsCommands} # Copy ld manually since it isn't detected correctly - cp -pv ${pkgs.glibc.out}/lib/ld*.so.? $out/lib + cp -pv ${pkgs.stdenv.cc.libc.out}/lib/ld*.so.? $out/lib # Copy all of the needed libraries find $out/bin $out/lib -type f | while read BIN; do @@ -251,9 +251,9 @@ let postInstall = '' echo checking syntax # check both with bash - ${pkgs.bash}/bin/sh -n $target + ${pkgs.buildPackages.bash}/bin/sh -n $target # and with ash shell, just in case - ${extraUtils}/bin/ash -n $target + ${pkgs.buildPackages.busybox}/bin/ash -n $target ''; inherit udevRules extraUtils modulesClosure; diff --git a/nixos/modules/system/boot/systemd-nspawn.nix b/nixos/modules/system/boot/systemd-nspawn.nix index 83fef835436..34a34091a7d 100644 --- a/nixos/modules/system/boot/systemd-nspawn.nix +++ b/nixos/modules/system/boot/systemd-nspawn.nix @@ -10,8 +10,13 @@ let checkExec = checkUnitConfig "Exec" [ (assertOnlyFields [ "Boot" "ProcessTwo" "Parameters" "Environment" "User" "WorkingDirectory" - "Capability" "DropCapability" "KillSignal" "Personality" "MachineId" - "PrivateUsers" "NotifyReady" + "PivotRoot" "Capability" "DropCapability" "NoNewPrivileges" "KillSignal" + "Personality" "MachineId" "PrivateUsers" "NotifyReady" "SystemCallFilter" + "LimitCPU" "LimitFSIZE" "LimitDATA" "LimitSTACK" "LimitCORE" "LimitRSS" + "LimitNOFILE" "LimitAS" "LimitNPROC" "LimitMEMLOCK" "LimitLOCKS" + "LimitSIGPENDING" "LimitMSGQUEUE" "LimitNICE" "LimitRTPRIO" "LimitRTTIME" + "OOMScoreAdjust" "CPUAffinity" "Hostname" "ResolvConf" "Timezone" + "LinkJournal" ]) (assertValueOneOf "Boot" boolValues) (assertValueOneOf "ProcessTwo" boolValues) @@ -20,8 +25,8 @@ let checkFiles = checkUnitConfig "Files" [ (assertOnlyFields [ - "ReadOnly" "Volatile" "Bind" "BindReadOnly" "TemporaryFileSystems" - "PrivateUsersChown" + "ReadOnly" "Volatile" "Bind" "BindReadOnly" "TemporaryFileSystem" + "Overlay" "OverlayReadOnly" "PrivateUsersChown" ]) (assertValueOneOf "ReadOnly" boolValues) (assertValueOneOf "Volatile" (boolValues ++ [ "state" ])) @@ -112,9 +117,7 @@ in { environment.etc."systemd/nspawn".source = generateUnits "nspawn" units [] []; - systemd.services."systemd-nspawn@" = { - wantedBy = [ "machine.target" ]; - }; + systemd.targets."multi-user".wants = [ "machines.target" ]; }; } diff --git a/nixos/modules/system/boot/systemd.nix b/nixos/modules/system/boot/systemd.nix index a1412bc3290..860268ab23a 100644 --- a/nixos/modules/system/boot/systemd.nix +++ b/nixos/modules/system/boot/systemd.nix @@ -387,7 +387,7 @@ let logindHandlerType = types.enum [ "ignore" "poweroff" "reboot" "halt" "kexec" "suspend" - "hibernate" "hybrid-sleep" "lock" + "hibernate" "hybrid-sleep" "suspend-then-hibernate" "lock" ]; in @@ -587,13 +587,41 @@ in ''; }; + services.journald.forwardToSyslog = mkOption { + default = config.services.rsyslogd.enable || config.services.syslog-ng.enable; + defaultText = "config.services.rsyslogd.enable || config.services.syslog-ng.enable"; + type = types.bool; + description = '' + Whether to forward log messages to syslog. + ''; + }; + services.logind.extraConfig = mkOption { default = ""; type = types.lines; example = "IdleAction=lock"; description = '' - Extra config options for systemd-logind. See man logind.conf for - available options. + Extra config options for systemd-logind. See + + logind.conf(5) for available options. + ''; + }; + + services.logind.killUserProcesses = mkOption { + default = false; + type = types.bool; + description = '' + Specifies whether the processes of a user should be killed + when the user logs out. If true, the scope unit corresponding + to the session and all processes inside that scope will be + terminated. If false, the scope is "abandoned" (see + + systemd.scope(5)), and processes are not killed. +
+ + + See logind.conf(5) + for more details. ''; }; @@ -754,12 +782,15 @@ in ForwardToConsole=yes TTYPath=${config.services.journald.console} ''} + ${optionalString (config.services.journald.forwardToSyslog) '' + ForwardToSyslog=yes + ''} ${config.services.journald.extraConfig} ''; "systemd/logind.conf".text = '' [Login] - KillUserProcesses=no + KillUserProcesses=${if config.services.logind.killUserProcesses then "yes" else "no"} HandleLidSwitch=${config.services.logind.lidSwitch} HandleLidSwitchDocked=${config.services.logind.lidSwitchDocked} ${config.services.logind.extraConfig} @@ -867,6 +898,7 @@ in systemd.services.systemd-remount-fs.restartIfChanged = false; systemd.services.systemd-update-utmp.restartIfChanged = false; systemd.services.systemd-user-sessions.restartIfChanged = false; # Restart kills all active sessions. + systemd.services.systemd-udev-settle.restartIfChanged = false; # Causes long delays in nixos-rebuild # Restarting systemd-logind breaks X11 # - upstream commit: https://cgit.freedesktop.org/xorg/xserver/commit/?id=dc48bd653c7e101 # - systemd announcement: https://github.com/systemd/systemd/blob/22043e4317ecd2bc7834b48a6d364de76bb26d91/NEWS#L103-L112 diff --git a/nixos/modules/system/etc/etc.nix b/nixos/modules/system/etc/etc.nix index 7d43ba07ca5..57ade288096 100644 --- a/nixos/modules/system/etc/etc.nix +++ b/nixos/modules/system/etc/etc.nix @@ -154,7 +154,7 @@ in '' # Set up the statically computed bits of /etc. echo "setting up /etc..." - ${pkgs.perl}/bin/perl -I${pkgs.perlPackages.FileSlurp}/lib/perl5/site_perl ${./setup-etc.pl} ${etc}/etc + ${pkgs.perl}/bin/perl -I${pkgs.perlPackages.FileSlurp}/${pkgs.perl.libPrefix} ${./setup-etc.pl} ${etc}/etc ''; }; diff --git a/nixos/modules/installer/tools/auto-upgrade.nix b/nixos/modules/tasks/auto-upgrade.nix similarity index 100% rename from nixos/modules/installer/tools/auto-upgrade.nix rename to nixos/modules/tasks/auto-upgrade.nix diff --git a/nixos/modules/tasks/cpu-freq.nix b/nixos/modules/tasks/cpu-freq.nix index 5f8b5df52ac..513382936e4 100644 --- a/nixos/modules/tasks/cpu-freq.nix +++ b/nixos/modules/tasks/cpu-freq.nix @@ -10,43 +10,81 @@ in { ###### interface - options = { + options.powerManagement = { - powerManagement.cpuFreqGovernor = mkOption { + # TODO: This should be aliased to powerManagement.cpufreq.governor. + # https://github.com/NixOS/nixpkgs/pull/53041#commitcomment-31825338 + cpuFreqGovernor = mkOption { type = types.nullOr types.str; default = null; example = "ondemand"; description = '' Configure the governor used to regulate the frequence of the available CPUs. By default, the kernel configures the - performance governor. + performance governor, although this may be overwritten in your + hardware-configuration.nix file. + + Often used values: "ondemand", "powersave", "performance" ''; }; + cpufreq = { + + max = mkOption { + type = types.nullOr types.ints.unsigned; + default = null; + example = 2200000; + description = '' + The maximum frequency the CPU will use. Defaults to the maximum possible. + ''; + }; + + min = mkOption { + type = types.nullOr types.ints.unsigned; + default = null; + example = 800000; + description = '' + The minimum frequency the CPU will use. + ''; + }; + }; + }; ###### implementation - config = mkIf (!config.boot.isContainer && config.powerManagement.cpuFreqGovernor != null) { + config = + let + governorEnable = cfg.cpuFreqGovernor != null; + maxEnable = cfg.cpufreq.max != null; + minEnable = cfg.cpufreq.min != null; + enable = + !config.boot.isContainer && + (governorEnable || maxEnable || minEnable); + in + mkIf enable { - boot.kernelModules = [ "cpufreq_${cfg.cpuFreqGovernor}" ]; + boot.kernelModules = optional governorEnable "cpufreq_${cfg.cpuFreqGovernor}"; - environment.systemPackages = [ cpupower ]; + environment.systemPackages = [ cpupower ]; - systemd.services.cpufreq = { - description = "CPU Frequency Governor Setup"; - after = [ "systemd-modules-load.service" ]; - wantedBy = [ "multi-user.target" ]; - path = [ cpupower pkgs.kmod ]; - unitConfig.ConditionVirtualization = false; - serviceConfig = { - Type = "oneshot"; - RemainAfterExit = "yes"; - ExecStart = "${cpupower}/bin/cpupower frequency-set -g ${cfg.cpuFreqGovernor}"; - SuccessExitStatus = "0 237"; + systemd.services.cpufreq = { + description = "CPU Frequency Setup"; + after = [ "systemd-modules-load.service" ]; + wantedBy = [ "multi-user.target" ]; + path = [ cpupower pkgs.kmod ]; + unitConfig.ConditionVirtualization = false; + serviceConfig = { + Type = "oneshot"; + RemainAfterExit = "yes"; + ExecStart = "${cpupower}/bin/cpupower frequency-set " + + optionalString governorEnable "--governor ${cfg.cpuFreqGovernor} " + + optionalString maxEnable "--max ${toString cfg.cpufreq.max} " + + optionalString minEnable "--min ${toString cfg.cpufreq.min} "; + SuccessExitStatus = "0 237"; + }; }; - }; }; } diff --git a/nixos/modules/tasks/filesystems.nix b/nixos/modules/tasks/filesystems.nix index b3690fad1a6..9e4057b5089 100644 --- a/nixos/modules/tasks/filesystems.nix +++ b/nixos/modules/tasks/filesystems.nix @@ -230,6 +230,8 @@ in let fsToSkipCheck = [ "none" "bindfs" "btrfs" "zfs" "tmpfs" "nfs" "vboxsf" "glusterfs" ]; skipCheck = fs: fs.noCheck || fs.device == "none" || builtins.elem fs.fsType fsToSkipCheck; + # https://wiki.archlinux.org/index.php/fstab#Filepath_spaces + escape = string: builtins.replaceStrings [ " " ] [ "\\040" ] string; in '' # This is a generated file. Do not edit! # @@ -238,10 +240,10 @@ in # Filesystems. ${concatMapStrings (fs: - (if fs.device != null then fs.device - else if fs.label != null then "/dev/disk/by-label/${fs.label}" + (if fs.device != null then escape fs.device + else if fs.label != null then "/dev/disk/by-label/${escape fs.label}" else throw "No device specified for mount point ‘${fs.mountPoint}’.") - + " " + fs.mountPoint + + " " + escape fs.mountPoint + " " + fs.fsType + " " + builtins.concatStringsSep "," fs.options + " 0" diff --git a/nixos/modules/tasks/filesystems/bcachefs.nix b/nixos/modules/tasks/filesystems/bcachefs.nix index 227707173a3..5fda24adb97 100644 --- a/nixos/modules/tasks/filesystems/bcachefs.nix +++ b/nixos/modules/tasks/filesystems/bcachefs.nix @@ -1,26 +1,65 @@ -{ config, lib, pkgs, ... }: +{ config, lib, pkgs, utils, ... }: with lib; let - inInitrd = any (fs: fs == "bcachefs") config.boot.initrd.supportedFilesystems; + bootFs = filterAttrs (n: fs: (fs.fsType == "bcachefs") && (utils.fsNeededForBoot fs)) config.fileSystems; + + commonFunctions = '' + prompt() { + local name="$1" + printf "enter passphrase for $name: " + } + tryUnlock() { + local name="$1" + local path="$2" + if bcachefs unlock -c $path > /dev/null 2> /dev/null; then # test for encryption + prompt $name + until bcachefs unlock $path 2> /dev/null; do # repeat until sucessfully unlocked + printf "unlocking failed!\n" + prompt $name + done + printf "unlocking successful.\n" + fi + } + ''; + + openCommand = name: fs: + let + # we need only unlock one device manually, and cannot pass multiple at once + # remove this adaptation when bcachefs implements mounting by filesystem uuid + # also, implement automatic waiting for the constituent devices when that happens + # bcachefs does not support mounting devices with colons in the path, ergo we don't (see #49671) + firstDevice = head (splitString ":" fs.device); + in + '' + tryUnlock ${name} ${firstDevice} + ''; in { - config = mkIf (any (fs: fs == "bcachefs") config.boot.supportedFilesystems) { + config = mkIf (elem "bcachefs" config.boot.supportedFilesystems) (mkMerge [ + { + system.fsPackages = [ pkgs.bcachefs-tools ]; - system.fsPackages = [ pkgs.bcachefs-tools ]; + # use kernel package with bcachefs support until it's in mainline + boot.kernelPackages = pkgs.linuxPackages_testing_bcachefs; + } - # use kernel package with bcachefs support until it's in mainline - boot.kernelPackages = pkgs.linuxPackages_testing_bcachefs; - boot.initrd.availableKernelModules = mkIf inInitrd [ "bcachefs" ]; + (mkIf ((elem "bcachefs" config.boot.initrd.supportedFilesystems) || (bootFs != {})) { + # the cryptographic modules are required only for decryption attempts + boot.initrd.availableKernelModules = [ "bcachefs" "chacha20" "poly1305" ]; - boot.initrd.extraUtilsCommands = mkIf inInitrd - '' - copy_bin_and_libs ${pkgs.bcachefs-tools}/bin/fsck.bcachefs + boot.initrd.extraUtilsCommands = '' + copy_bin_and_libs ${pkgs.bcachefs-tools}/bin/bcachefs + ''; + boot.initrd.extraUtilsCommandsTest = '' + $out/bin/bcachefs version ''; - }; + boot.initrd.postDeviceCommands = commonFunctions + concatStrings (mapAttrsToList openCommand bootFs); + }) + ]); } diff --git a/nixos/modules/tasks/filesystems/f2fs.nix b/nixos/modules/tasks/filesystems/f2fs.nix index d103ff1a57b..a305235979a 100644 --- a/nixos/modules/tasks/filesystems/f2fs.nix +++ b/nixos/modules/tasks/filesystems/f2fs.nix @@ -4,6 +4,7 @@ with lib; let inInitrd = any (fs: fs == "f2fs") config.boot.initrd.supportedFilesystems; + fileSystems = filter (x: x.fsType == "f2fs") config.system.build.fileSystems; in { config = mkIf (any (fs: fs == "f2fs") config.boot.supportedFilesystems) { @@ -14,6 +15,11 @@ in boot.initrd.extraUtilsCommands = mkIf inInitrd '' copy_bin_and_libs ${pkgs.f2fs-tools}/sbin/fsck.f2fs + ${optionalString (any (fs: fs.autoResize) fileSystems) '' + # We need f2fs-tools' tools to resize filesystems + copy_bin_and_libs ${pkgs.f2fs-tools}/sbin/resize.f2fs + ''} + ''; }; } diff --git a/nixos/modules/tasks/filesystems/zfs.nix b/nixos/modules/tasks/filesystems/zfs.nix index 2b3b09d725c..37a19fb9fc8 100644 --- a/nixos/modules/tasks/filesystems/zfs.nix +++ b/nixos/modules/tasks/filesystems/zfs.nix @@ -74,7 +74,7 @@ let importLib = {zpoolCmd, awkCmd, cfgZfs}: '' poolReady() { pool="$1" - state="$("${zpoolCmd}" import | "${awkCmd}" "/pool: $pool/ { found = 1 }; /state:/ { if (found == 1) { print \$2; exit } }; END { if (found == 0) { print \"MISSING\" } }")" + state="$("${zpoolCmd}" import 2>/dev/null | "${awkCmd}" "/pool: $pool/ { found = 1 }; /state:/ { if (found == 1) { print \$2; exit } }; END { if (found == 0) { print \"MISSING\" } }")" if [[ "$state" = "ONLINE" ]]; then return 0 else @@ -535,6 +535,7 @@ in systemd.timers.zfs-scrub = { wantedBy = [ "timers.target" ]; + after = [ "multi-user.target" ]; # Apparently scrubbing before boot is complete hangs the system? #53583 timerConfig = { OnCalendar = cfgScrub.interval; Persistent = "yes"; diff --git a/nixos/modules/tasks/network-interfaces-scripted.nix b/nixos/modules/tasks/network-interfaces-scripted.nix index af61c95da0a..93dfefdce90 100644 --- a/nixos/modules/tasks/network-interfaces-scripted.nix +++ b/nixos/modules/tasks/network-interfaces-scripted.nix @@ -85,7 +85,8 @@ let after = [ "network-pre.target" "systemd-udevd.service" "systemd-sysctl.service" ]; before = [ "network.target" "shutdown.target" ]; wants = [ "network.target" ]; - partOf = map (i: "network-addresses-${i.name}.service") interfaces; + # exclude bridges from the partOf relationship to fix container networking bug #47210 + partOf = map (i: "network-addresses-${i.name}.service") (filter (i: !(hasAttr i.name cfg.bridges)) interfaces); conflicts = [ "shutdown.target" ]; wantedBy = [ "multi-user.target" ] ++ optional hasDefaultGatewaySet "network-online.target"; diff --git a/nixos/modules/testing/service-runner.nix b/nixos/modules/testing/service-runner.nix index 25490d67115..5ead75788e5 100644 --- a/nixos/modules/testing/service-runner.nix +++ b/nixos/modules/testing/service-runner.nix @@ -6,7 +6,7 @@ let makeScript = name: service: pkgs.writeScript "${name}-runner" '' - #! ${pkgs.perl}/bin/perl -w -I${pkgs.perlPackages.FileSlurp}/lib/perl5/site_perl + #! ${pkgs.perl}/bin/perl -w -I${pkgs.perlPackages.FileSlurp}/${pkgs.perl.libPrefix} use File::Slurp; diff --git a/nixos/modules/testing/test-instrumentation.nix b/nixos/modules/testing/test-instrumentation.nix index aa0db4afd97..ed4cfa7805e 100644 --- a/nixos/modules/testing/test-instrumentation.nix +++ b/nixos/modules/testing/test-instrumentation.nix @@ -55,8 +55,7 @@ with import ../../lib/qemu-flags.nix { inherit pkgs; }; systemd.services."serial-getty@hvc0".enable = false; # Only use a serial console, no TTY. - # hvc1: socket backdoor, see "Debugging NixOS tests" section in NixOS manual - virtualisation.qemu.consoles = [ "hvc1" qemuSerialDevice ]; + virtualisation.qemu.consoles = [ qemuSerialDevice ]; boot.initrd.preDeviceCommands = '' diff --git a/nixos/modules/virtualisation/amazon-image.nix b/nixos/modules/virtualisation/amazon-image.nix index e9e935e9020..9015200beea 100644 --- a/nixos/modules/virtualisation/amazon-image.nix +++ b/nixos/modules/virtualisation/amazon-image.nix @@ -53,7 +53,7 @@ let cfg = config.ec2; in # Mount all formatted ephemeral disks and activate all swap devices. # We cannot do this with the ‘fileSystems’ and ‘swapDevices’ options # because the set of devices is dependent on the instance type - # (e.g. "m1.large" has one ephemeral filesystem and one swap device, + # (e.g. "m1.small" has one ephemeral filesystem and one swap device, # while "m1.large" has two ephemeral filesystems and no swap # devices). Also, put /tmp and /var on /disk0, since it has a lot # more space than the root device. Similarly, "move" /nix to /disk0 @@ -145,8 +145,12 @@ let cfg = config.ec2; in environment.systemPackages = [ pkgs.cryptsetup ]; boot.initrd.supportedFilesystems = [ "unionfs-fuse" ]; - + # EC2 has its own NTP server provided by the hypervisor networking.timeServers = [ "169.254.169.123" ]; + + # udisks has become too bloated to have in a headless system + # (e.g. it depends on GTK+). + services.udisks2.enable = false; }; } diff --git a/nixos/modules/virtualisation/container-config.nix b/nixos/modules/virtualisation/container-config.nix index 561db7cabcf..604fb8a7593 100644 --- a/nixos/modules/virtualisation/container-config.nix +++ b/nixos/modules/virtualisation/container-config.nix @@ -7,7 +7,6 @@ with lib; config = mkIf config.boot.isContainer { # Disable some features that are not useful in a container. - sound.enable = mkDefault false; services.udisks2.enable = mkDefault false; powerManagement.enable = mkDefault false; @@ -22,12 +21,8 @@ with lib; # Not supported in systemd-nspawn containers. security.audit.enable = false; - # Make sure that root user in container will talk to host nix-daemon - environment.etc."profile".text = '' - export NIX_REMOTE=daemon - ''; - - + # Use the host's nix-daemon. + environment.variables.NIX_REMOTE = "daemon"; }; diff --git a/nixos/modules/virtualisation/containers.nix b/nixos/modules/virtualisation/containers.nix index b91165ce3b8..c2e6e9f6a13 100644 --- a/nixos/modules/virtualisation/containers.nix +++ b/nixos/modules/virtualisation/containers.nix @@ -36,7 +36,7 @@ let #! ${pkgs.runtimeShell} -e # Initialise the container side of the veth pair. - if [ "$PRIVATE_NETWORK" = 1 ]; then + if [ -n "$HOST_ADDRESS" ] || [ -n "$LOCAL_ADDRESS" ]; then ip link set host0 name eth0 ip link set dev eth0 up @@ -85,6 +85,10 @@ let cp --remove-destination /etc/resolv.conf "$root/etc/resolv.conf" if [ "$PRIVATE_NETWORK" = 1 ]; then + extraFlags+=" --private-network" + fi + + if [ -n "$HOST_ADDRESS" ] || [ -n "$LOCAL_ADDRESS" ]; then extraFlags+=" --network-veth" if [ -n "$HOST_BRIDGE" ]; then extraFlags+=" --network-bridge=$HOST_BRIDGE" @@ -130,6 +134,7 @@ let --bind-ro=/nix/var/nix/daemon-socket \ --bind="/nix/var/nix/profiles/per-container/$INSTANCE:/nix/var/nix/profiles" \ --bind="/nix/var/nix/gcroots/per-container/$INSTANCE:/nix/var/nix/gcroots" \ + --link-journal=try-guest \ --setenv PRIVATE_NETWORK="$PRIVATE_NETWORK" \ --setenv HOST_BRIDGE="$HOST_BRIDGE" \ --setenv HOST_ADDRESS="$HOST_ADDRESS" \ @@ -152,7 +157,7 @@ let # Clean up existing machined registration and interfaces. machinectl terminate "$INSTANCE" 2> /dev/null || true - if [ "$PRIVATE_NETWORK" = 1 ]; then + if [ -n "$HOST_ADDRESS" ] || [ -n "$LOCAL_ADDRESS" ]; then ip link del dev "ve-$INSTANCE" 2> /dev/null || true ip link del dev "vb-$INSTANCE" 2> /dev/null || true fi @@ -183,6 +188,8 @@ let '' else '' + echo "Bring ${name} up" + ip link set dev ${name} up # Set IPs and routes for ${name} ${optionalString (cfg.hostAddress != null) '' ip addr add ${cfg.hostAddress} dev ${name} @@ -199,7 +206,7 @@ let ''; in '' - if [ "$PRIVATE_NETWORK" = 1 ]; then + if [ -n "$HOST_ADDRESS" ] || [ -n "$LOCAL_ADDRESS" ]; then if [ -z "$HOST_BRIDGE" ]; then ifaceHost=ve-$INSTANCE ip link set dev $ifaceHost up @@ -242,6 +249,9 @@ let Restart = "on-failure"; + Slice = "machine.slice"; + Delegate = true; + # Hack: we don't want to kill systemd-nspawn, since we call # "machinectl poweroff" in preStop to shut down the # container cleanly. But systemd requires sending a signal @@ -348,7 +358,7 @@ let List of forwarded ports from host to container. Each forwarded port is specified by protocol, hostPort and containerPort. By default, protocol is tcp and hostPort and containerPort are assumed to be - the same if containerPort is not explicitly given. + the same if containerPort is not explicitly given. ''; }; @@ -453,6 +463,16 @@ in { boot.isContainer = true; networking.hostName = mkDefault name; networking.useDHCP = false; + assertions = [ + { + assertion = config.privateNetwork -> stringLength name < 12; + message = '' + Container name `${name}` is too long: When `privateNetwork` is enabled, container names can + not be longer than 11 characters, because the container's interface name is derived from it. + This might be fixed in the future. See https://github.com/NixOS/nixpkgs/issues/38509 + ''; + } + ]; }; in [ extraConfig ] ++ (map (x: x.value) defs); prefix = [ "containers" name ]; @@ -605,7 +625,7 @@ in { config = { config, pkgs, ... }: { services.postgresql.enable = true; - services.postgresql.package = pkgs.postgresql96; + services.postgresql.package = pkgs.postgresql_9_6; system.stateVersion = "17.03"; }; @@ -656,6 +676,8 @@ in serviceConfig = serviceDirectives dummyConfig; }; in { + systemd.targets."multi-user".wants = [ "machines.target" ]; + systemd.services = listToAttrs (filter (x: x.value != null) ( # The generic container template used by imperative containers [{ name = "container@"; value = unit; }] @@ -679,7 +701,7 @@ in } // ( if config.autoStart then { - wantedBy = [ "multi-user.target" ]; + wantedBy = [ "machines.target" ]; wants = [ "network.target" ]; after = [ "network.target" ]; restartTriggers = [ config.path ]; @@ -693,7 +715,7 @@ in # container so that container@.target can get the container # configuration. environment.etc = - let mkPortStr = p: p.protocol + ":" + (toString p.hostPort) + ":" + (if p.containerPort == null then toString p.hostPort else toString p.containerPort); + let mkPortStr = p: p.protocol + ":" + (toString p.hostPort) + ":" + (if p.containerPort == null then toString p.hostPort else toString p.containerPort); in mapAttrs' (name: cfg: nameValuePair "containers/${name}.conf" { text = '' diff --git a/nixos/modules/virtualisation/docker-image.nix b/nixos/modules/virtualisation/docker-image.nix index 2f304094d55..baac3a35a78 100644 --- a/nixos/modules/virtualisation/docker-image.nix +++ b/nixos/modules/virtualisation/docker-image.nix @@ -17,3 +17,41 @@ # Socket activated ssh presents problem in Docker. services.openssh.startWhenNeeded = false; } + +# Example usage: +# +## default.nix +# let +# nixos = import { +# configuration = ./configuration.nix; +# system = "x86_64-linux"; +# }; +# in +# nixos.config.system.build.tarball +# +## configuration.nix +# { pkgs, config, lib, ... }: +# { +# imports = [ +# +# +# ]; +# +# documentation.doc.enable = false; +# +# environment.systemPackages = with pkgs; [ +# bashInteractive +# cacert +# nix +# ]; +# } +# +## Run +# Build the tarball: +# $ nix-build default.nix +# Load into docker: +# $ docker import result/tarball/nixos-system-*.tar.xz nixos-docker +# Boots into systemd +# $ docker run --privileged -it nixos-docker /init +# Log into the container +# $ docker exec -it /run/current-system/sw/bin/bash diff --git a/nixos/modules/virtualisation/docker-preloader.nix b/nixos/modules/virtualisation/docker-preloader.nix new file mode 100644 index 00000000000..faa94f53d98 --- /dev/null +++ b/nixos/modules/virtualisation/docker-preloader.nix @@ -0,0 +1,135 @@ +{ config, lib, pkgs, ... }: + +with lib; +with builtins; + +let + cfg = config.virtualisation; + + sanitizeImageName = image: replaceStrings ["/"] ["-"] image.imageName; + hash = drv: head (split "-" (baseNameOf drv.outPath)); + # The label of an ext4 FS is limited to 16 bytes + labelFromImage = image: substring 0 16 (hash image); + + # The Docker image is loaded and some files from /var/lib/docker/ + # are written into a qcow image. + preload = image: pkgs.vmTools.runInLinuxVM ( + pkgs.runCommand "docker-preload-image-${sanitizeImageName image}" { + buildInputs = with pkgs; [ docker e2fsprogs utillinux curl kmod ]; + preVM = pkgs.vmTools.createEmptyImage { + size = cfg.dockerPreloader.qcowSize; + fullName = "docker-deamon-image.qcow2"; + }; + } + '' + mkfs.ext4 /dev/vda + e2label /dev/vda ${labelFromImage image} + mkdir -p /var/lib/docker + mount -t ext4 /dev/vda /var/lib/docker + + modprobe overlay + + # from https://github.com/tianon/cgroupfs-mount/blob/master/cgroupfs-mount + mount -t tmpfs -o uid=0,gid=0,mode=0755 cgroup /sys/fs/cgroup + cd /sys/fs/cgroup + for sys in $(awk '!/^#/ { if ($4 == 1) print $1 }' /proc/cgroups); do + mkdir -p $sys + if ! mountpoint -q $sys; then + if ! mount -n -t cgroup -o $sys cgroup $sys; then + rmdir $sys || true + fi + fi + done + + dockerd -H tcp://127.0.0.1:5555 -H unix:///var/run/docker.sock & + + until $(curl --output /dev/null --silent --connect-timeout 2 http://127.0.0.1:5555); do + printf '.' + sleep 1 + done + + docker load -i ${image} + + kill %1 + find /var/lib/docker/ -maxdepth 1 -mindepth 1 -not -name "image" -not -name "overlay2" | xargs rm -rf + ''); + + preloadedImages = map preload cfg.dockerPreloader.images; + +in + +{ + options.virtualisation.dockerPreloader = { + images = mkOption { + default = [ ]; + type = types.listOf types.package; + description = + '' + A list of Docker images to preload (in the /var/lib/docker directory). + ''; + }; + qcowSize = mkOption { + default = 1024; + type = types.int; + description = + '' + The size (MB) of qcow files. + ''; + }; + }; + + config = { + assertions = [{ + # If docker.storageDriver is null, Docker choose the storage + # driver. So, in this case, we cannot be sure overlay2 is used. + assertion = cfg.dockerPreloader.images == [] + || cfg.docker.storageDriver == "overlay2" + || cfg.docker.storageDriver == "overlay" + || cfg.docker.storageDriver == null; + message = "The Docker image Preloader only works with overlay2 storage driver!"; + }]; + + virtualisation.qemu.options = + map (path: "-drive if=virtio,file=${path}/disk-image.qcow2,readonly,media=cdrom,format=qcow2") + preloadedImages; + + + # All attached QCOW files are mounted and their contents are linked + # to /var/lib/docker/ in order to make image available. + systemd.services.docker-preloader = { + description = "Preloaded Docker images"; + wantedBy = ["docker.service"]; + after = ["network.target"]; + path = with pkgs; [ mount rsync jq ]; + script = '' + mkdir -p /var/lib/docker/overlay2/l /var/lib/docker/image/overlay2 + echo '{}' > /tmp/repositories.json + + for i in ${concatStringsSep " " (map labelFromImage cfg.dockerPreloader.images)}; do + mkdir -p /mnt/docker-images/$i + + # The ext4 label is limited to 16 bytes + mount /dev/disk/by-label/$(echo $i | cut -c1-16) -o ro,noload /mnt/docker-images/$i + + find /mnt/docker-images/$i/overlay2/ -maxdepth 1 -mindepth 1 -not -name l\ + -exec ln -s '{}' /var/lib/docker/overlay2/ \; + cp -P /mnt/docker-images/$i/overlay2/l/* /var/lib/docker/overlay2/l/ + + rsync -a /mnt/docker-images/$i/image/ /var/lib/docker/image/ + + # Accumulate image definitions + cp /tmp/repositories.json /tmp/repositories.json.tmp + jq -s '.[0] * .[1]' \ + /tmp/repositories.json.tmp \ + /mnt/docker-images/$i/image/overlay2/repositories.json \ + > /tmp/repositories.json + done + + mv /tmp/repositories.json /var/lib/docker/image/overlay2/repositories.json + ''; + serviceConfig = { + Type = "oneshot"; + }; + }; + }; +} diff --git a/nixos/modules/virtualisation/ec2-amis.nix b/nixos/modules/virtualisation/ec2-amis.nix index 76facac39fc..aaea06bb9a6 100644 --- a/nixos/modules/virtualisation/ec2-amis.nix +++ b/nixos/modules/virtualisation/ec2-amis.nix @@ -257,5 +257,22 @@ let self = { "18.03".sa-east-1.hvm-ebs = "ami-163e1f7a"; "18.03".ap-south-1.hvm-ebs = "ami-6a390b05"; - latest = self."18.03"; + # 18.09.910.c15e342304a + "18.09".eu-west-1.hvm-ebs = "ami-0f412186fb8a0ec97"; + "18.09".eu-west-2.hvm-ebs = "ami-0dada3805ce43c55e"; + "18.09".eu-west-3.hvm-ebs = "ami-074df85565f2e02e2"; + "18.09".eu-central-1.hvm-ebs = "ami-07c9b884e679df4f8"; + "18.09".us-east-1.hvm-ebs = "ami-009c9c3f1af480ff3"; + "18.09".us-east-2.hvm-ebs = "ami-08199961085ea8bc6"; + "18.09".us-west-1.hvm-ebs = "ami-07aa7f56d612ddd38"; + "18.09".us-west-2.hvm-ebs = "ami-01c84b7c368ac24d1"; + "18.09".ca-central-1.hvm-ebs = "ami-04f66113f76198f6c"; + "18.09".ap-southeast-1.hvm-ebs = "ami-0892c7e24ebf2194f"; + "18.09".ap-southeast-2.hvm-ebs = "ami-010730f36424b0a2c"; + "18.09".ap-northeast-1.hvm-ebs = "ami-0cdba8e998f076547"; + "18.09".ap-northeast-2.hvm-ebs = "ami-0400a698e6a9f4a15"; + "18.09".sa-east-1.hvm-ebs = "ami-0e4a8a47fd6db6112"; + "18.09".ap-south-1.hvm-ebs = "ami-0880a678d3f555313"; + + latest = self."18.09"; }; in self diff --git a/nixos/modules/virtualisation/gce-images.nix b/nixos/modules/virtualisation/gce-images.nix index 575bbaadbcd..5354d91deb9 100644 --- a/nixos/modules/virtualisation/gce-images.nix +++ b/nixos/modules/virtualisation/gce-images.nix @@ -4,6 +4,6 @@ let self = { "16.03" = "gs://nixos-cloud-images/nixos-image-16.03.847.8688c17-x86_64-linux.raw.tar.gz"; "17.03" = "gs://nixos-cloud-images/nixos-image-17.03.1082.4aab5c5798-x86_64-linux.raw.tar.gz"; "18.03" = "gs://nixos-cloud-images/nixos-image-18.03.132536.fdb5ba4cdf9-x86_64-linux.raw.tar.gz"; - - latest = self."18.03"; + "18.09" = "gs://nixos-cloud-images/nixos-image-18.09.1228.a4c4cbb613c-x86_64-linux.raw.tar.gz"; + latest = self."18.09"; }; in self diff --git a/nixos/modules/virtualisation/google-compute-config.nix b/nixos/modules/virtualisation/google-compute-config.nix index 8f20100bc1b..8c7331fe4d2 100644 --- a/nixos/modules/virtualisation/google-compute-config.nix +++ b/nixos/modules/virtualisation/google-compute-config.nix @@ -1,5 +1,235 @@ -{ ... }: - +{ config, lib, pkgs, ... }: +with lib; +let + gce = pkgs.google-compute-engine; + cfg = config.virtualisation.googleComputeImage; +in { - imports = [ ]; + imports = [ + ../profiles/headless.nix + ../profiles/qemu-guest.nix + ]; + + + fileSystems."/" = { + device = "/dev/disk/by-label/nixos"; + autoResize = true; + }; + + boot.growPartition = true; + boot.kernelParams = [ "console=ttyS0" "panic=1" "boot.panic_on_fail" ]; + boot.initrd.kernelModules = [ "virtio_scsi" ]; + boot.kernelModules = [ "virtio_pci" "virtio_net" ]; + + # Generate a GRUB menu. Amazon's pv-grub uses this to boot our kernel/initrd. + boot.loader.grub.device = "/dev/sda"; + boot.loader.timeout = 0; + + # Don't put old configurations in the GRUB menu. The user has no + # way to select them anyway. + boot.loader.grub.configurationLimit = 0; + + # Allow root logins only using the SSH key that the user specified + # at instance creation time. + services.openssh.enable = true; + services.openssh.permitRootLogin = "prohibit-password"; + services.openssh.passwordAuthentication = mkDefault false; + + # Use GCE udev rules for dynamic disk volumes + services.udev.packages = [ gce ]; + + # Force getting the hostname from Google Compute. + networking.hostName = mkDefault ""; + + # Always include cryptsetup so that NixOps can use it. + environment.systemPackages = [ pkgs.cryptsetup ]; + + # Make sure GCE image does not replace host key that NixOps sets + environment.etc."default/instance_configs.cfg".text = lib.mkDefault '' + [InstanceSetup] + set_host_keys = false + ''; + + # Rely on GCP's firewall instead + networking.firewall.enable = mkDefault false; + + # Configure default metadata hostnames + networking.extraHosts = '' + 169.254.169.254 metadata.google.internal metadata + ''; + + networking.timeServers = [ "metadata.google.internal" ]; + + networking.usePredictableInterfaceNames = false; + + # GC has 1460 MTU + networking.interfaces.eth0.mtu = 1460; + + security.googleOsLogin.enable = true; + + systemd.services.google-clock-skew-daemon = { + description = "Google Compute Engine Clock Skew Daemon"; + after = [ + "network.target" + "google-instance-setup.service" + "google-network-setup.service" + ]; + requires = ["network.target"]; + wantedBy = ["multi-user.target"]; + serviceConfig = { + Type = "simple"; + ExecStart = "${gce}/bin/google_clock_skew_daemon --debug"; + }; + }; + + systemd.services.google-instance-setup = { + description = "Google Compute Engine Instance Setup"; + after = ["local-fs.target" "network-online.target" "network.target" "rsyslog.service"]; + before = ["sshd.service"]; + wants = ["local-fs.target" "network-online.target" "network.target"]; + wantedBy = [ "sshd.service" "multi-user.target" ]; + path = with pkgs; [ ethtool openssh ]; + serviceConfig = { + ExecStart = "${gce}/bin/google_instance_setup --debug"; + Type = "oneshot"; + }; + }; + + systemd.services.google-network-daemon = { + description = "Google Compute Engine Network Daemon"; + after = ["local-fs.target" "network-online.target" "network.target" "rsyslog.service" "google-instance-setup.service"]; + wants = ["local-fs.target" "network-online.target" "network.target"]; + requires = ["network.target"]; + partOf = ["network.target"]; + wantedBy = [ "multi-user.target" ]; + path = with pkgs; [ iproute ]; + serviceConfig = { + ExecStart = "${gce}/bin/google_network_daemon --debug"; + }; + }; + + systemd.services.google-shutdown-scripts = { + description = "Google Compute Engine Shutdown Scripts"; + after = [ + "local-fs.target" + "network-online.target" + "network.target" + "rsyslog.service" + "systemd-resolved.service" + "google-instance-setup.service" + "google-network-daemon.service" + ]; + wants = [ "local-fs.target" "network-online.target" "network.target"]; + wantedBy = [ "multi-user.target" ]; + serviceConfig = { + ExecStart = "${pkgs.coreutils}/bin/true"; + ExecStop = "${gce}/bin/google_metadata_script_runner --debug --script-type shutdown"; + Type = "oneshot"; + RemainAfterExit = true; + TimeoutStopSec = "infinity"; + }; + }; + + systemd.services.google-startup-scripts = { + description = "Google Compute Engine Startup Scripts"; + after = [ + "local-fs.target" + "network-online.target" + "network.target" + "rsyslog.service" + "google-instance-setup.service" + "google-network-daemon.service" + ]; + wants = ["local-fs.target" "network-online.target" "network.target"]; + wantedBy = [ "multi-user.target" ]; + serviceConfig = { + ExecStart = "${gce}/bin/google_metadata_script_runner --debug --script-type startup"; + KillMode = "process"; + Type = "oneshot"; + }; + }; + + + # Settings taken from https://github.com/GoogleCloudPlatform/compute-image-packages/blob/master/google_config/sysctl/11-gce-network-security.conf + boot.kernel.sysctl = { + # Turn on SYN-flood protections. Starting with 2.6.26, there is no loss + # of TCP functionality/features under normal conditions. When flood + # protections kick in under high unanswered-SYN load, the system + # should remain more stable, with a trade off of some loss of TCP + # functionality/features (e.g. TCP Window scaling). + "net.ipv4.tcp_syncookies" = mkDefault "1"; + + # ignores source-routed packets + "net.ipv4.conf.all.accept_source_route" = mkDefault "0"; + + # ignores source-routed packets + "net.ipv4.conf.default.accept_source_route" = mkDefault "0"; + + # ignores ICMP redirects + "net.ipv4.conf.all.accept_redirects" = mkDefault "0"; + + # ignores ICMP redirects + "net.ipv4.conf.default.accept_redirects" = mkDefault "0"; + + # ignores ICMP redirects from non-GW hosts + "net.ipv4.conf.all.secure_redirects" = mkDefault "1"; + + # ignores ICMP redirects from non-GW hosts + "net.ipv4.conf.default.secure_redirects" = mkDefault "1"; + + # don't allow traffic between networks or act as a router + "net.ipv4.ip_forward" = mkDefault "0"; + + # don't allow traffic between networks or act as a router + "net.ipv4.conf.all.send_redirects" = mkDefault "0"; + + # don't allow traffic between networks or act as a router + "net.ipv4.conf.default.send_redirects" = mkDefault "0"; + + # reverse path filtering - IP spoofing protection + "net.ipv4.conf.all.rp_filter" = mkDefault "1"; + + # reverse path filtering - IP spoofing protection + "net.ipv4.conf.default.rp_filter" = mkDefault "1"; + + # ignores ICMP broadcasts to avoid participating in Smurf attacks + "net.ipv4.icmp_echo_ignore_broadcasts" = mkDefault "1"; + + # ignores bad ICMP errors + "net.ipv4.icmp_ignore_bogus_error_responses" = mkDefault "1"; + + # logs spoofed, source-routed, and redirect packets + "net.ipv4.conf.all.log_martians" = mkDefault "1"; + + # log spoofed, source-routed, and redirect packets + "net.ipv4.conf.default.log_martians" = mkDefault "1"; + + # implements RFC 1337 fix + "net.ipv4.tcp_rfc1337" = mkDefault "1"; + + # randomizes addresses of mmap base, heap, stack and VDSO page + "kernel.randomize_va_space" = mkDefault "2"; + + # Reboot the machine soon after a kernel panic. + "kernel.panic" = mkDefault "10"; + + ## Not part of the original config + + # provides protection from ToCToU races + "fs.protected_hardlinks" = mkDefault "1"; + + # provides protection from ToCToU races + "fs.protected_symlinks" = mkDefault "1"; + + # makes locating kernel addresses more difficult + "kernel.kptr_restrict" = mkDefault "1"; + + # set ptrace protections + "kernel.yama.ptrace_scope" = mkOverride 500 "1"; + + # set perf only available to root + "kernel.perf_event_paranoid" = mkDefault "2"; + + }; + } diff --git a/nixos/modules/virtualisation/google-compute-image.nix b/nixos/modules/virtualisation/google-compute-image.nix index caaf6c0aa59..0d2d25d3075 100644 --- a/nixos/modules/virtualisation/google-compute-image.nix +++ b/nixos/modules/virtualisation/google-compute-image.nix @@ -2,334 +2,59 @@ with lib; let - diskSize = 1536; # MB - gce = pkgs.google-compute-engine; + cfg = config.virtualisation.googleComputeImage; + defaultConfigFile = pkgs.writeText "configuration.nix" '' + { ... }: + { + imports = [ + + ]; + } + ''; in { - imports = [ ../profiles/headless.nix ../profiles/qemu-guest.nix ]; - system.build.googleComputeImage = import ../../lib/make-disk-image.nix { - name = "google-compute-image"; - postVM = '' - PATH=$PATH:${pkgs.stdenv.lib.makeBinPath [ pkgs.gnutar pkgs.gzip ]} - pushd $out - mv $diskImage disk.raw - tar -Szcf nixos-image-${config.system.nixos.label}-${pkgs.stdenv.hostPlatform.system}.raw.tar.gz disk.raw - rm $out/disk.raw - popd - ''; - configFile = ; - format = "raw"; - inherit diskSize; - inherit config lib pkgs; - }; + imports = [ ./google-compute-config.nix ]; - fileSystems."/" = { - device = "/dev/disk/by-label/nixos"; - autoResize = true; - }; + options = { + virtualisation.googleComputeImage.diskSize = mkOption { + type = with types; int; + default = 1536; + description = '' + Size of disk image. Unit is MB. + ''; + }; - boot.growPartition = true; - boot.kernelParams = [ "console=ttyS0" "panic=1" "boot.panic_on_fail" ]; - boot.initrd.kernelModules = [ "virtio_scsi" ]; - boot.kernelModules = [ "virtio_pci" "virtio_net" ]; - - # Generate a GRUB menu. Amazon's pv-grub uses this to boot our kernel/initrd. - boot.loader.grub.device = "/dev/sda"; - boot.loader.timeout = 0; - - # Don't put old configurations in the GRUB menu. The user has no - # way to select them anyway. - boot.loader.grub.configurationLimit = 0; - - # Allow root logins only using the SSH key that the user specified - # at instance creation time. - services.openssh.enable = true; - services.openssh.permitRootLogin = "prohibit-password"; - services.openssh.passwordAuthentication = mkDefault false; - - # Use GCE udev rules for dynamic disk volumes - services.udev.packages = [ gce ]; - - # Force getting the hostname from Google Compute. - networking.hostName = mkDefault ""; - - # Always include cryptsetup so that NixOps can use it. - environment.systemPackages = [ pkgs.cryptsetup ]; - - # Make sure GCE image does not replace host key that NixOps sets - environment.etc."default/instance_configs.cfg".text = lib.mkDefault '' - [InstanceSetup] - set_host_keys = false - ''; - - # Rely on GCP's firewall instead - networking.firewall.enable = mkDefault false; - - # Configure default metadata hostnames - networking.extraHosts = '' - 169.254.169.254 metadata.google.internal metadata - ''; - - networking.timeServers = [ "metadata.google.internal" ]; - - networking.usePredictableInterfaceNames = false; - - # GC has 1460 MTU - networking.interfaces.eth0.mtu = 1460; - - # allow the google-accounts-daemon to manage users - users.mutableUsers = true; - # and allow users to sudo without password - security.sudo.enable = true; - security.sudo.extraConfig = '' - %google-sudoers ALL=(ALL:ALL) NOPASSWD:ALL - ''; - - # NOTE: google-accounts tries to write to /etc/sudoers.d but the folder doesn't exist - # FIXME: not such file or directory on dynamic SSH provisioning - systemd.services.google-accounts-daemon = { - description = "Google Compute Engine Accounts Daemon"; - # This daemon creates dynamic users - enable = config.users.mutableUsers; - after = [ - "network.target" - "google-instance-setup.service" - "google-network-setup.service" - ]; - requires = ["network.target"]; - wantedBy = ["multi-user.target"]; - path = with pkgs; [ shadow ]; - serviceConfig = { - Type = "simple"; - ExecStart = "${gce}/bin/google_accounts_daemon --debug"; + virtualisation.googleComputeImage.configFile = mkOption { + type = with types; nullOr str; + default = null; + description = '' + A path to a configuration file which will be placed at `/etc/nixos/configuration.nix` + and be used when switching to a new configuration. + If set to `null`, a default configuration is used, where the only import is + ``. + ''; }; }; - systemd.services.google-clock-skew-daemon = { - description = "Google Compute Engine Clock Skew Daemon"; - after = [ - "network.target" - "google-instance-setup.service" - "google-network-setup.service" - ]; - requires = ["network.target"]; - wantedBy = ["multi-user.target"]; - serviceConfig = { - Type = "simple"; - ExecStart = "${gce}/bin/google_clock_skew_daemon --debug"; + #### implementation + config = { + + system.build.googleComputeImage = import ../../lib/make-disk-image.nix { + name = "google-compute-image"; + postVM = '' + PATH=$PATH:${with pkgs; stdenv.lib.makeBinPath [ gnutar gzip ]} + pushd $out + mv $diskImage disk.raw + tar -Szcf nixos-image-${config.system.nixos.label}-${pkgs.stdenv.hostPlatform.system}.raw.tar.gz disk.raw + rm $out/disk.raw + popd + ''; + format = "raw"; + configFile = if isNull cfg.configFile then defaultConfigFile else cfg.configFile; + inherit (cfg) diskSize; + inherit config lib pkgs; }; - }; - - systemd.services.google-instance-setup = { - description = "Google Compute Engine Instance Setup"; - after = ["local-fs.target" "network-online.target" "network.target" "rsyslog.service"]; - before = ["sshd.service"]; - wants = ["local-fs.target" "network-online.target" "network.target"]; - wantedBy = [ "sshd.service" "multi-user.target" ]; - path = with pkgs; [ ethtool openssh ]; - serviceConfig = { - ExecStart = "${gce}/bin/google_instance_setup --debug"; - Type = "oneshot"; - }; - }; - - systemd.services.google-network-daemon = { - description = "Google Compute Engine Network Daemon"; - after = ["local-fs.target" "network-online.target" "network.target" "rsyslog.service" "google-instance-setup.service"]; - wants = ["local-fs.target" "network-online.target" "network.target"]; - requires = ["network.target"]; - partOf = ["network.target"]; - wantedBy = [ "multi-user.target" ]; - path = with pkgs; [ iproute ]; - serviceConfig = { - ExecStart = "${gce}/bin/google_network_daemon --debug"; - Type = "oneshot"; - }; - }; - - systemd.services.google-shutdown-scripts = { - description = "Google Compute Engine Shutdown Scripts"; - after = [ - "local-fs.target" - "network-online.target" - "network.target" - "rsyslog.service" - "systemd-resolved.service" - "google-instance-setup.service" - "google-network-daemon.service" - ]; - wants = [ "local-fs.target" "network-online.target" "network.target"]; - wantedBy = [ "multi-user.target" ]; - serviceConfig = { - ExecStart = "${pkgs.coreutils}/bin/true"; - ExecStop = "${gce}/bin/google_metadata_script_runner --debug --script-type shutdown"; - Type = "oneshot"; - RemainAfterExit = true; - TimeoutStopSec = 0; - }; - }; - - systemd.services.google-startup-scripts = { - description = "Google Compute Engine Startup Scripts"; - after = [ - "local-fs.target" - "network-online.target" - "network.target" - "rsyslog.service" - "google-instance-setup.service" - "google-network-daemon.service" - ]; - wants = ["local-fs.target" "network-online.target" "network.target"]; - wantedBy = [ "multi-user.target" ]; - serviceConfig = { - ExecStart = "${gce}/bin/google_metadata_script_runner --debug --script-type startup"; - KillMode = "process"; - Type = "oneshot"; - }; - }; - - # TODO: remove this - systemd.services.fetch-ssh-keys = - { description = "Fetch host keys and authorized_keys for root user"; - - wantedBy = [ "sshd.service" ]; - before = [ "sshd.service" ]; - after = [ "network-online.target" ]; - wants = [ "network-online.target" ]; - - script = let wget = "${pkgs.wget}/bin/wget --retry-connrefused -t 15 --waitretry=10 --header='Metadata-Flavor: Google'"; - mktemp = "mktemp --tmpdir=/run"; in - '' - # When dealing with cryptographic keys, we want to keep things private. - umask 077 - # Don't download the SSH key if it has already been downloaded - echo "Obtaining SSH keys..." - mkdir -m 0700 -p /root/.ssh - AUTH_KEYS=$(${mktemp}) - ${wget} -O $AUTH_KEYS http://metadata.google.internal/computeMetadata/v1/instance/attributes/sshKeys - if [ -s $AUTH_KEYS ]; then - - # Read in key one by one, split in case Google decided - # to append metadata (it does sometimes) and add to - # authorized_keys if not already present. - touch /root/.ssh/authorized_keys - NEW_KEYS=$(${mktemp}) - # Yes this is a nix escape of two single quotes. - while IFS=''' read -r line || [[ -n "$line" ]]; do - keyLine=$(echo -n "$line" | cut -d ':' -f2) - IFS=' ' read -r -a array <<< "$keyLine" - if [ ''${#array[@]} -ge 3 ]; then - echo ''${array[@]:0:3} >> $NEW_KEYS - echo "Added ''${array[@]:2} to authorized_keys" - fi - done < $AUTH_KEYS - mv $NEW_KEYS /root/.ssh/authorized_keys - chmod 600 /root/.ssh/authorized_keys - rm -f $KEY_PUB - else - echo "Downloading http://metadata.google.internal/computeMetadata/v1/project/attributes/sshKeys failed." - false - fi - rm -f $AUTH_KEYS - SSH_HOST_KEYS_DIR=$(${mktemp} -d) - ${wget} -O $SSH_HOST_KEYS_DIR/ssh_host_ed25519_key http://metadata.google.internal/computeMetadata/v1/instance/attributes/ssh_host_ed25519_key - ${wget} -O $SSH_HOST_KEYS_DIR/ssh_host_ed25519_key.pub http://metadata.google.internal/computeMetadata/v1/instance/attributes/ssh_host_ed25519_key_pub - if [ -s $SSH_HOST_KEYS_DIR/ssh_host_ed25519_key -a -s $SSH_HOST_KEYS_DIR/ssh_host_ed25519_key.pub ]; then - mv -f $SSH_HOST_KEYS_DIR/ssh_host_ed25519_key* /etc/ssh/ - chmod 600 /etc/ssh/ssh_host_ed25519_key - chmod 644 /etc/ssh/ssh_host_ed25519_key.pub - else - echo "Setup of ssh host keys from http://metadata.google.internal/computeMetadata/v1/instance/attributes/ failed." - false - fi - rm -rf $SSH_HOST_KEYS_DIR - ''; - serviceConfig.Type = "oneshot"; - serviceConfig.RemainAfterExit = true; - serviceConfig.StandardError = "journal+console"; - serviceConfig.StandardOutput = "journal+console"; - }; - - # Settings taken from https://github.com/GoogleCloudPlatform/compute-image-packages/blob/master/google_config/sysctl/11-gce-network-security.conf - boot.kernel.sysctl = { - # Turn on SYN-flood protections. Starting with 2.6.26, there is no loss - # of TCP functionality/features under normal conditions. When flood - # protections kick in under high unanswered-SYN load, the system - # should remain more stable, with a trade off of some loss of TCP - # functionality/features (e.g. TCP Window scaling). - "net.ipv4.tcp_syncookies" = mkDefault "1"; - - # ignores source-routed packets - "net.ipv4.conf.all.accept_source_route" = mkDefault "0"; - - # ignores source-routed packets - "net.ipv4.conf.default.accept_source_route" = mkDefault "0"; - - # ignores ICMP redirects - "net.ipv4.conf.all.accept_redirects" = mkDefault "0"; - - # ignores ICMP redirects - "net.ipv4.conf.default.accept_redirects" = mkDefault "0"; - - # ignores ICMP redirects from non-GW hosts - "net.ipv4.conf.all.secure_redirects" = mkDefault "1"; - - # ignores ICMP redirects from non-GW hosts - "net.ipv4.conf.default.secure_redirects" = mkDefault "1"; - - # don't allow traffic between networks or act as a router - "net.ipv4.ip_forward" = mkDefault "0"; - - # don't allow traffic between networks or act as a router - "net.ipv4.conf.all.send_redirects" = mkDefault "0"; - - # don't allow traffic between networks or act as a router - "net.ipv4.conf.default.send_redirects" = mkDefault "0"; - - # reverse path filtering - IP spoofing protection - "net.ipv4.conf.all.rp_filter" = mkDefault "1"; - - # reverse path filtering - IP spoofing protection - "net.ipv4.conf.default.rp_filter" = mkDefault "1"; - - # ignores ICMP broadcasts to avoid participating in Smurf attacks - "net.ipv4.icmp_echo_ignore_broadcasts" = mkDefault "1"; - - # ignores bad ICMP errors - "net.ipv4.icmp_ignore_bogus_error_responses" = mkDefault "1"; - - # logs spoofed, source-routed, and redirect packets - "net.ipv4.conf.all.log_martians" = mkDefault "1"; - - # log spoofed, source-routed, and redirect packets - "net.ipv4.conf.default.log_martians" = mkDefault "1"; - - # implements RFC 1337 fix - "net.ipv4.tcp_rfc1337" = mkDefault "1"; - - # randomizes addresses of mmap base, heap, stack and VDSO page - "kernel.randomize_va_space" = mkDefault "2"; - - # Reboot the machine soon after a kernel panic. - "kernel.panic" = mkDefault "10"; - - ## Not part of the original config - - # provides protection from ToCToU races - "fs.protected_hardlinks" = mkDefault "1"; - - # provides protection from ToCToU races - "fs.protected_symlinks" = mkDefault "1"; - - # makes locating kernel addresses more difficult - "kernel.kptr_restrict" = mkDefault "1"; - - # set ptrace protections - "kernel.yama.ptrace_scope" = mkOverride 500 "1"; - - # set perf only available to root - "kernel.perf_event_paranoid" = mkDefault "2"; }; diff --git a/nixos/modules/virtualisation/kvmgt.nix b/nixos/modules/virtualisation/kvmgt.nix index fc0bedb68bd..132815a0ad6 100644 --- a/nixos/modules/virtualisation/kvmgt.nix +++ b/nixos/modules/virtualisation/kvmgt.nix @@ -50,11 +50,17 @@ in { nameValuePair "kvmgt-${name}" { description = "KVMGT VGPU ${name}"; serviceConfig = { - Type = "oneshot"; + Type = "forking"; RemainAfterExit = true; + Restart = "on-failure"; + RestartSec = 5; ExecStart = "${pkgs.runtimeShell} -c 'echo ${value.uuid} > /sys/bus/pci/devices/${cfg.device}/mdev_supported_types/${name}/create'"; ExecStop = "${pkgs.runtimeShell} -c 'echo 1 > /sys/bus/pci/devices/${cfg.device}/${value.uuid}/remove'"; }; + unitConfig = { + StartLimitBurst = 5; + StartLimitIntervalSec = 30; + }; wantedBy = [ "multi-user.target" ]; } ) cfg.vgpus; diff --git a/nixos/modules/virtualisation/libvirtd.nix b/nixos/modules/virtualisation/libvirtd.nix index 3e38662f5b0..f4d7af1664a 100644 --- a/nixos/modules/virtualisation/libvirtd.nix +++ b/nixos/modules/virtualisation/libvirtd.nix @@ -196,6 +196,8 @@ in { wantedBy = [ "multi-user.target" ]; path = with pkgs; [ coreutils libvirt gawk ]; restartIfChanged = false; + + environment.ON_SHUTDOWN = "${cfg.onShutdown}"; }; systemd.sockets.virtlogd = { diff --git a/nixos/modules/virtualisation/parallels-guest.nix b/nixos/modules/virtualisation/parallels-guest.nix index 36ca7f356d4..4e0f2cae299 100644 --- a/nixos/modules/virtualisation/parallels-guest.nix +++ b/nixos/modules/virtualisation/parallels-guest.nix @@ -1,4 +1,4 @@ -{ config, lib, pkgs, pkgs_i686, ... }: +{ config, lib, pkgs, ... }: with lib; @@ -64,7 +64,7 @@ in }; hardware.opengl.package = prl-tools; - hardware.opengl.package32 = pkgs_i686.linuxPackages.prl-tools.override { libsOnly = true; kernel = null; }; + hardware.opengl.package32 = pkgs.pkgsi686Linux.linuxPackages.prl-tools.override { libsOnly = true; kernel = null; }; services.udev.packages = [ prl-tools ]; diff --git a/nixos/modules/virtualisation/qemu-guest-agent.nix b/nixos/modules/virtualisation/qemu-guest-agent.nix index e0d2b3dc509..665224e35d8 100644 --- a/nixos/modules/virtualisation/qemu-guest-agent.nix +++ b/nixos/modules/virtualisation/qemu-guest-agent.nix @@ -25,7 +25,7 @@ in { systemd.services.qemu-guest-agent = { description = "Run the QEMU Guest Agent"; serviceConfig = { - ExecStart = "${pkgs.kvm.ga}/bin/qemu-ga"; + ExecStart = "${pkgs.qemu.ga}/bin/qemu-ga"; Restart = "always"; RestartSec = 0; }; diff --git a/nixos/modules/virtualisation/qemu-vm.nix b/nixos/modules/virtualisation/qemu-vm.nix index 4e9c87222d0..ed3431554be 100644 --- a/nixos/modules/virtualisation/qemu-vm.nix +++ b/nixos/modules/virtualisation/qemu-vm.nix @@ -185,7 +185,10 @@ let in { - imports = [ ../profiles/qemu-guest.nix ]; + imports = [ + ../profiles/qemu-guest.nix + ./docker-preloader.nix + ]; options = { diff --git a/nixos/modules/virtualisation/virtualbox-image.nix b/nixos/modules/virtualisation/virtualbox-image.nix index 60048911658..037c0d2f0d8 100644 --- a/nixos/modules/virtualisation/virtualbox-image.nix +++ b/nixos/modules/virtualisation/virtualbox-image.nix @@ -12,7 +12,7 @@ in { virtualbox = { baseImageSize = mkOption { type = types.int; - default = 10 * 1024; + default = 50 * 1024; description = '' The size of the VirtualBox base image in MiB. ''; @@ -61,7 +61,7 @@ in { export HOME=$PWD export PATH=${pkgs.virtualbox}/bin:$PATH - echo "creating VirtualBox pass-through disk wrapper (no copying invovled)..." + echo "creating VirtualBox pass-through disk wrapper (no copying involved)..." VBoxManage internalcommands createrawvmdk -filename disk.vmdk -rawdisk $diskImage echo "creating VirtualBox VM..." @@ -72,9 +72,9 @@ in { --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 \ + --audiocontroller ac97 --audio alsa --audioout on \ --rtcuseutc on \ - --usb on --mouse usbtablet + --usb on --usbehci on --mouse usbtablet 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 @@ -82,7 +82,7 @@ in { echo "exporting VirtualBox VM..." mkdir -p $out fn="$out/${cfg.vmFileName}" - VBoxManage export "$vmName" --output "$fn" + VBoxManage export "$vmName" --output "$fn" --options manifest rm -v $diskImage diff --git a/nixos/modules/virtualisation/xe-guest-utilities.nix b/nixos/modules/virtualisation/xe-guest-utilities.nix index d703353858c..675cf929737 100644 --- a/nixos/modules/virtualisation/xe-guest-utilities.nix +++ b/nixos/modules/virtualisation/xe-guest-utilities.nix @@ -5,7 +5,7 @@ let in { options = { services.xe-guest-utilities = { - enable = mkEnableOption "Whether to enable the Xen guest utilities daemon."; + enable = mkEnableOption "the Xen guest utilities daemon"; }; }; config = mkIf cfg.enable { diff --git a/nixos/release-combined.nix b/nixos/release-combined.nix index 66b253c230f..ea8b92e94f0 100644 --- a/nixos/release-combined.nix +++ b/nixos/release-combined.nix @@ -5,7 +5,7 @@ { nixpkgs ? { outPath = (import ../lib).cleanSource ./..; revCount = 56789; shortRev = "gfedcba"; } , stableBranch ? false , supportedSystems ? [ "x86_64-linux" ] -, limitedSupportedSystems ? [ "i686-linux" ] +, limitedSupportedSystems ? [ "i686-linux" "aarch64-linux" ] }: let @@ -46,16 +46,20 @@ in rec { }; constituents = let - all = x: map (system: x.${system}) supportedSystems; + # 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_minimal.x86_64-linux or [] - nixos.iso_minimal.i686-linux or [] 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) @@ -63,24 +67,24 @@ in rec { nixos.tests.chromium.x86_64-linux or [] (all nixos.tests.firefox) (all nixos.tests.firewall) - (all nixos.tests.gnome3) + (except ["aarch64-linux"] nixos.tests.gnome3) nixos.tests.installer.zfsroot.x86_64-linux or [] # ZFS is 64bit only - (all nixos.tests.installer.lvm) - (all nixos.tests.installer.luksroot) - (all nixos.tests.installer.separateBoot) - (all nixos.tests.installer.separateBootFat) - (all nixos.tests.installer.simple) - (all nixos.tests.installer.simpleLabels) - (all nixos.tests.installer.simpleProvided) - (all nixos.tests.installer.simpleUefiSystemdBoot) - (all nixos.tests.installer.swraid) - (all nixos.tests.installer.btrfsSimple) - (all nixos.tests.installer.btrfsSubvols) - (all nixos.tests.installer.btrfsSubvolDefault) - (all nixos.tests.boot.biosCdrom) - #(all nixos.tests.boot.biosUsb) # disabled due to issue #15690 - (all nixos.tests.boot.uefiCdrom) - (all nixos.tests.boot.uefiUsb) + (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 [] @@ -132,7 +136,8 @@ in rec { nixpkgs.tarball (all allSupportedNixpkgs.emacs) - (all allSupportedNixpkgs.jdk) + # The currently available aarch64 JDK is unfree + (except ["aarch64-linux"] allSupportedNixpkgs.jdk) ]; }); diff --git a/nixos/release.nix b/nixos/release.nix index b0bf94924f3..df2c52ccd0b 100644 --- a/nixos/release.nix +++ b/nixos/release.nix @@ -14,28 +14,19 @@ let versionSuffix = (if stableBranch then "." else "pre") + "${toString nixpkgs.revCount}.${nixpkgs.shortRev}"; - importTest = fn: args: system: import fn ({ - inherit system; - } // args); - - # Note: only supportedSystems are considered. - callTestOnMatchingSystems = systems: fn: args: - forMatchingSystems - (intersectLists supportedSystems systems) - (system: hydraJob (importTest fn args system)); - callTest = callTestOnMatchingSystems supportedSystems; - - callSubTests = callSubTestsOnMatchingSystems supportedSystems; - callSubTestsOnMatchingSystems = systems: fn: args: let - discover = attrs: let - subTests = filterAttrs (const (hasAttr "test")) attrs; - in mapAttrs (const (t: hydraJob t.test)) subTests; - - discoverForSystem = system: mapAttrs (_: test: { - ${system} = test; - }) (discover (importTest fn args system)); - - in foldAttrs mergeAttrs {} (map discoverForSystem (intersectLists systems supportedSystems)); + # Run the tests for each platform. You can run a test by doing + # e.g. ‘nix-build -A tests.login.x86_64-linux’, or equivalently, + # ‘nix-build tests/login.nix -A result’. + allTestsForSystem = system: + import ./tests/all-tests.nix { + inherit system; + pkgs = import nixpkgs { inherit system; }; + callTest = t: { + ${system} = hydraJob t.test; + }; + }; + allTests = + foldAttrs recursiveUpdate {} (map allTestsForSystem supportedSystems); pkgs = import nixpkgs { system = "x86_64-linux"; }; @@ -45,6 +36,7 @@ let system.nixos.revision = nixpkgs.rev or nixpkgs.shortRev; }; + makeModules = module: rest: [ configuration versionModule module rest ]; makeIso = { module, type, system, ... }: @@ -53,7 +45,9 @@ let hydraJob ((import lib/eval-config.nix { inherit system; - modules = [ configuration module versionModule { isoImage.isoBaseName = "nixos-${type}"; } ]; + modules = makeModules module { + isoImage.isoBaseName = "nixos-${type}"; + }; }).config.system.build.isoImage); @@ -64,7 +58,7 @@ let hydraJob ((import lib/eval-config.nix { inherit system; - modules = [ configuration module versionModule ]; + modules = makeModules module {}; }).config.system.build.sdImage); @@ -77,7 +71,7 @@ let config = (import lib/eval-config.nix { inherit system; - modules = [ configuration module versionModule ]; + modules = makeModules module {}; }).config; tarball = config.system.build.tarball; @@ -97,7 +91,7 @@ let buildFromConfig = module: sel: forAllSystems (system: hydraJob (sel (import ./lib/eval-config.nix { inherit system; - modules = [ configuration module versionModule ] ++ singleton + modules = makeModules module ({ ... }: { fileSystems."/".device = mkDefault "/dev/sda1"; boot.loader.grub.device = mkDefault "/dev/sda"; @@ -108,7 +102,7 @@ let let configEvaled = import lib/eval-config.nix { inherit system; - modules = [ module versionModule ]; + modules = makeModules module {}; }; build = configEvaled.config.system.build; kernelTarget = configEvaled.pkgs.stdenv.hostPlatform.platform.kernelTarget; @@ -163,7 +157,7 @@ in rec { # A variant with a more recent (but possibly less stable) kernel # that might support more hardware. - iso_minimal_new_kernel = forMatchingSystems [ "x86_64-linux" ] (system: makeIso { + iso_minimal_new_kernel = forMatchingSystems [ "x86_64-linux" "aarch64-linux" ] (system: makeIso { module = ./modules/installer/cd-dvd/installation-cd-minimal-new-kernel.nix; type = "minimal-new-kernel"; inherit system; @@ -178,6 +172,14 @@ in rec { inherit system; }); + sd_image_new_kernel = forMatchingSystems [ "aarch64-linux" ] (system: makeSdImage { + module = { + aarch64-linux = ./modules/installer/cd-dvd/sd-image-aarch64-new-kernel.nix; + }.${system}; + type = "minimal-new-kernel"; + inherit system; + }); + # A bootable VirtualBox virtual appliance as an OVA file (i.e. packaged OVF). ova = forMatchingSystems [ "x86_64-linux" ] (system: @@ -242,194 +244,7 @@ in rec { }; */ - - # Run the tests for each platform. You can run a test by doing - # e.g. ‘nix-build -A tests.login.x86_64-linux’, or equivalently, - # ‘nix-build tests/login.nix -A result’. - tests.atd = callTest tests/atd.nix {}; - tests.acme = callTest tests/acme.nix {}; - tests.avahi = callTest tests/avahi.nix {}; - tests.beegfs = callTest tests/beegfs.nix {}; - tests.upnp = callTest tests/upnp.nix {}; - tests.bittorrent = callTest tests/bittorrent.nix {}; - tests.bind = callTest tests/bind.nix {}; - #tests.blivet = callTest tests/blivet.nix {}; # broken since 2017-07024 - tests.boot = callSubTests tests/boot.nix {}; - tests.boot-stage1 = callTest tests/boot-stage1.nix {}; - tests.borgbackup = callTest tests/borgbackup.nix {}; - tests.buildbot = callTest tests/buildbot.nix {}; - tests.cadvisor = callTestOnMatchingSystems ["x86_64-linux"] tests/cadvisor.nix {}; - tests.ceph = callTestOnMatchingSystems ["x86_64-linux"] tests/ceph.nix {}; - tests.certmgr = callSubTests tests/certmgr.nix {}; - tests.cfssl = callTestOnMatchingSystems ["x86_64-linux"] tests/cfssl.nix {}; - tests.chromium = (callSubTestsOnMatchingSystems ["x86_64-linux"] tests/chromium.nix {}).stable or {}; - tests.cjdns = callTest tests/cjdns.nix {}; - tests.cloud-init = callTest tests/cloud-init.nix {}; - tests.codimd = callTest tests/codimd.nix {}; - tests.containers-ipv4 = callTest tests/containers-ipv4.nix {}; - tests.containers-ipv6 = callTest tests/containers-ipv6.nix {}; - tests.containers-bridge = callTest tests/containers-bridge.nix {}; - tests.containers-imperative = callTest tests/containers-imperative.nix {}; - tests.containers-extra_veth = callTest tests/containers-extra_veth.nix {}; - tests.containers-physical_interfaces = callTest tests/containers-physical_interfaces.nix {}; - tests.containers-restart_networking = callTest tests/containers-restart_networking.nix {}; - tests.containers-tmpfs = callTest tests/containers-tmpfs.nix {}; - tests.containers-hosts = callTest tests/containers-hosts.nix {}; - tests.containers-macvlans = callTest tests/containers-macvlans.nix {}; - tests.couchdb = callTest tests/couchdb.nix {}; - tests.deluge = callTest tests/deluge.nix {}; - tests.dhparams = callTest tests/dhparams.nix {}; - tests.docker = callTestOnMatchingSystems ["x86_64-linux"] tests/docker.nix {}; - tests.docker-tools = callTestOnMatchingSystems ["x86_64-linux"] tests/docker-tools.nix {}; - tests.docker-tools-overlay = callTestOnMatchingSystems ["x86_64-linux"] tests/docker-tools-overlay.nix {}; - tests.docker-edge = callTestOnMatchingSystems ["x86_64-linux"] tests/docker-edge.nix {}; - tests.docker-registry = callTest tests/docker-registry.nix {}; - tests.dovecot = callTest tests/dovecot.nix {}; - tests.dnscrypt-proxy = callTestOnMatchingSystems ["x86_64-linux"] tests/dnscrypt-proxy.nix {}; - tests.ecryptfs = callTest tests/ecryptfs.nix {}; - tests.etcd = callTestOnMatchingSystems ["x86_64-linux"] tests/etcd.nix {}; - tests.ec2-nixops = (callSubTestsOnMatchingSystems ["x86_64-linux"] tests/ec2.nix {}).boot-ec2-nixops or {}; - # ec2-config doesn't work in a sandbox as the simulated ec2 instance needs network access - #tests.ec2-config = (callSubTestsOnMatchingSystems ["x86_64-linux"] tests/ec2.nix {}).boot-ec2-config or {}; - tests.elk = callSubTestsOnMatchingSystems ["x86_64-linux"] tests/elk.nix {}; - tests.env = callTest tests/env.nix {}; - tests.ferm = callTest tests/ferm.nix {}; - tests.firefox = callTest tests/firefox.nix {}; - tests.flatpak = callTest tests/flatpak.nix {}; - tests.firewall = callTest tests/firewall.nix {}; - tests.fsck = callTest tests/fsck.nix {}; - tests.fwupd = callTest tests/fwupd.nix {}; - tests.gdk-pixbuf = callTest tests/gdk-pixbuf.nix {}; - #tests.gitlab = callTest tests/gitlab.nix {}; - tests.gitolite = callTest tests/gitolite.nix {}; - tests.gjs = callTest tests/gjs.nix {}; - tests.gocd-agent = callTest tests/gocd-agent.nix {}; - tests.gocd-server = callTest tests/gocd-server.nix {}; - tests.gnome3 = callTest tests/gnome3.nix {}; - tests.gnome3-gdm = callTest tests/gnome3-gdm.nix {}; - tests.grafana = callTest tests/grafana.nix {}; - tests.graphite = callTest tests/graphite.nix {}; - tests.hadoop.hdfs = callTestOnMatchingSystems [ "x86_64-linux" ] tests/hadoop/hdfs.nix {}; - tests.hadoop.yarn = callTestOnMatchingSystems [ "x86_64-linux" ] tests/hadoop/yarn.nix {}; - tests.hardened = callTest tests/hardened.nix { }; - tests.haproxy = callTest tests/haproxy.nix {}; - tests.hibernate = callTest tests/hibernate.nix {}; - tests.hitch = callTest tests/hitch {}; - tests.home-assistant = callTest tests/home-assistant.nix { }; - tests.hound = callTest tests/hound.nix {}; - tests.hocker-fetchdocker = callTest tests/hocker-fetchdocker {}; - tests.hydra = callTest tests/hydra {}; - tests.i3wm = callTest tests/i3wm.nix {}; - tests.iftop = callTest tests/iftop.nix {}; - tests.initrd-network-ssh = callTest tests/initrd-network-ssh {}; - tests.installer = callSubTests tests/installer.nix {}; - tests.influxdb = callTest tests/influxdb.nix {}; - tests.ipv6 = callTest tests/ipv6.nix {}; - tests.jenkins = callTest tests/jenkins.nix {}; - tests.ostree = callTest tests/ostree.nix {}; - tests.osquery = callTest tests/osquery.nix {}; - tests.plasma5 = callTest tests/plasma5.nix {}; - tests.plotinus = callTest tests/plotinus.nix {}; - tests.keymap = callSubTests tests/keymap.nix {}; - tests.initrdNetwork = callTest tests/initrd-network.nix {}; - tests.kafka = callSubTests tests/kafka.nix {}; - tests.kernel-latest = callTest tests/kernel-latest.nix {}; - tests.kernel-lts = callTest tests/kernel-lts.nix {}; - tests.kubernetes.dns = callSubTestsOnMatchingSystems ["x86_64-linux"] tests/kubernetes/dns.nix {}; - ## kubernetes.e2e should eventually replace kubernetes.rbac when it works - #tests.kubernetes.e2e = callSubTestsOnMatchingSystems ["x86_64-linux"] tests/kubernetes/e2e.nix {}; - tests.kubernetes.rbac = callSubTestsOnMatchingSystems ["x86_64-linux"] tests/kubernetes/rbac.nix {}; - tests.latestKernel.login = callTest tests/login.nix { latestKernel = true; }; - tests.ldap = callTest tests/ldap.nix {}; - #tests.lightdm = callTest tests/lightdm.nix {}; - tests.login = callTest tests/login.nix {}; - #tests.logstash = callTest tests/logstash.nix {}; - tests.mathics = callTest tests/mathics.nix {}; - tests.matrix-synapse = callTest tests/matrix-synapse.nix {}; - tests.memcached = callTest tests/memcached.nix {}; - tests.mesos = callTest tests/mesos.nix {}; - tests.misc = callTest tests/misc.nix {}; - tests.mongodb = callTest tests/mongodb.nix {}; - tests.mpd = callTest tests/mpd.nix {}; - tests.mumble = callTest tests/mumble.nix {}; - tests.munin = callTest tests/munin.nix {}; - tests.mutableUsers = callTest tests/mutable-users.nix {}; - tests.mysql = callTest tests/mysql.nix {}; - tests.mysqlBackup = callTest tests/mysql-backup.nix {}; - tests.mysqlReplication = callTest tests/mysql-replication.nix {}; - tests.nat.firewall = callTest tests/nat.nix { withFirewall = true; }; - tests.nat.firewall-conntrack = callTest tests/nat.nix { withFirewall = true; withConntrackHelpers = true; }; - tests.nat.standalone = callTest tests/nat.nix { withFirewall = false; }; - tests.netdata = callTest tests/netdata.nix { }; - tests.networking.networkd = callSubTests tests/networking.nix { networkd = true; }; - tests.networking.scripted = callSubTests tests/networking.nix { networkd = false; }; - tests.nextcloud = callSubTests tests/nextcloud { }; - # TODO: put in networking.nix after the test becomes more complete - tests.networkingProxy = callTest tests/networking-proxy.nix {}; - tests.nexus = callTest tests/nexus.nix { }; - tests.nfs3 = callTest tests/nfs.nix { version = 3; }; - tests.nfs4 = callTest tests/nfs.nix { version = 4; }; - tests.nginx = callTest tests/nginx.nix { }; - tests.nghttpx = callTest tests/nghttpx.nix { }; - tests.nix-ssh-serve = callTest tests/nix-ssh-serve.nix { }; - tests.novacomd = callTestOnMatchingSystems ["x86_64-linux"] tests/novacomd.nix { }; - tests.leaps = callTest tests/leaps.nix { }; - tests.nsd = callTest tests/nsd.nix {}; - tests.openssh = callTest tests/openssh.nix {}; - tests.openldap = callTest tests/openldap.nix {}; - tests.opensmtpd = callTest tests/opensmtpd.nix {}; - tests.owncloud = callTest tests/owncloud.nix {}; - tests.pam-oath-login = callTest tests/pam-oath-login.nix {}; - tests.peerflix = callTest tests/peerflix.nix {}; - tests.php-pcre = callTest tests/php-pcre.nix {}; - tests.postgresql = callSubTests tests/postgresql.nix {}; - tests.pgmanage = callTest tests/pgmanage.nix {}; - tests.postgis = callTest tests/postgis.nix {}; - tests.powerdns = callTest tests/powerdns.nix {}; - tests.pgjwt = callTest tests/pgjwt.nix {}; - tests.predictable-interface-names = callSubTests tests/predictable-interface-names.nix {}; - tests.printing = callTest tests/printing.nix {}; - tests.prometheus = callTest tests/prometheus.nix {}; - tests.prosody = callTest tests/prosody.nix {}; - tests.proxy = callTest tests/proxy.nix {}; - tests.quagga = callTest tests/quagga.nix {}; - tests.quake3 = callTest tests/quake3.nix {}; - tests.rabbitmq = callTest tests/rabbitmq.nix {}; - tests.radicale = callTest tests/radicale.nix {}; - tests.redmine = callTest tests/redmine.nix {}; - tests.rspamd = callSubTests tests/rspamd.nix {}; - tests.runInMachine = callTest tests/run-in-machine.nix {}; - tests.rxe = callTest tests/rxe.nix {}; - tests.samba = callTest tests/samba.nix {}; - tests.sddm = callSubTests tests/sddm.nix {}; - tests.simple = callTest tests/simple.nix {}; - tests.slim = callTest tests/slim.nix {}; - tests.slurm = callTest tests/slurm.nix {}; - tests.smokeping = callTest tests/smokeping.nix {}; - tests.snapper = callTest tests/snapper.nix {}; - #tests.statsd = callTest tests/statsd.nix {}; # statsd is broken: #45946 - tests.strongswan-swanctl = callTest tests/strongswan-swanctl.nix {}; - tests.sudo = callTest tests/sudo.nix {}; - tests.systemd = callTest tests/systemd.nix {}; - tests.switchTest = callTest tests/switch-test.nix {}; - tests.taskserver = callTest tests/taskserver.nix {}; - tests.tomcat = callTest tests/tomcat.nix {}; - tests.tor = callTest tests/tor.nix {}; - tests.transmission = callTest tests/transmission.nix {}; - tests.udisks2 = callTest tests/udisks2.nix {}; - tests.vault = callTest tests/vault.nix {}; - tests.virtualbox = callSubTestsOnMatchingSystems ["x86_64-linux"] tests/virtualbox.nix {}; - tests.wordpress = callTest tests/wordpress.nix {}; - tests.xautolock = callTest tests/xautolock.nix {}; - tests.xdg-desktop-portal = callTest tests/xdg-desktop-portal.nix {}; - tests.xfce = callTest tests/xfce.nix {}; - tests.xmonad = callTest tests/xmonad.nix {}; - tests.xrdp = callTest tests/xrdp.nix {}; - tests.xss-lock = callTest tests/xss-lock.nix {}; - tests.yabar = callTest tests/yabar.nix {}; - tests.zookeeper = callTest tests/zookeeper.nix {}; - tests.morty = callTest tests/morty.nix { }; - tests.bcachefs = callTest tests/bcachefs.nix { }; + tests = allTests; /* Build a bunch of typical closures so that Hydra can keep track of the evolution of closure sizes. */ @@ -466,7 +281,7 @@ in rec { { services.httpd.enable = true; services.httpd.adminAddr = "foo@example.org"; services.postgresql.enable = true; - services.postgresql.package = pkgs.postgresql93; + services.postgresql.package = pkgs.postgresql; environment.systemPackages = [ pkgs.php ]; }); }; diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix new file mode 100644 index 00000000000..7bc2f3076f1 --- /dev/null +++ b/nixos/tests/all-tests.nix @@ -0,0 +1,224 @@ +{ system, pkgs, callTest }: +# The return value of this function will be an attrset with arbitrary depth and +# the `anything` returned by callTest at its test leafs. +# The tests not supported by `system` will be replaced with `{}`, so that +# `passthru.tests` can contain links to those without breaking on architectures +# where said tests are unsupported. +# Example callTest that just extracts the derivation from the test: +# callTest = t: t.test; + +with pkgs.lib; + +let + discoverTests = val: + if !isAttrs val then val + else if hasAttr "test" val then callTest val + else mapAttrs (n: s: discoverTests s) val; + handleTest = path: args: + discoverTests (import path ({ inherit system pkgs; } // args)); + handleTestOn = systems: path: args: + if elem system systems then handleTest path args + else {}; +in +{ + acme = handleTestOn ["x86_64-linux"] ./acme.nix {}; + atd = handleTest ./atd.nix {}; + avahi = handleTest ./avahi.nix {}; + bcachefs = handleTestOn ["x86_64-linux"] ./bcachefs.nix {}; # linux-4.18.2018.10.12 is unsupported on aarch64 + beegfs = handleTestOn ["x86_64-linux"] ./beegfs.nix {}; # beegfs is unsupported on aarch64 + bind = handleTest ./bind.nix {}; + bittorrent = handleTest ./bittorrent.nix {}; + #blivet = handleTest ./blivet.nix {}; # broken since 2017-07024 + 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 {}; + cadvisor = handleTestOn ["x86_64-linux"] ./cadvisor.nix {}; + ceph = handleTestOn ["x86_64-linux"] ./ceph.nix {}; + certmgr = handleTest ./certmgr.nix {}; + cfssl = handleTestOn ["x86_64-linux"] ./cfssl.nix {}; + chromium = (handleTestOn ["x86_64-linux"] ./chromium.nix {}).stable or {}; + cjdns = handleTest ./cjdns.nix {}; + clickhouse = handleTest ./clickhouse.nix {}; + cloud-init = handleTest ./cloud-init.nix {}; + codimd = handleTest ./codimd.nix {}; + containers-bridge = handleTest ./containers-bridge.nix {}; + containers-extra_veth = handleTest ./containers-extra_veth.nix {}; + containers-hosts = handleTest ./containers-hosts.nix {}; + containers-imperative = handleTest ./containers-imperative.nix {}; + containers-ipv4 = handleTest ./containers-ipv4.nix {}; + containers-ipv6 = handleTest ./containers-ipv6.nix {}; + containers-macvlans = handleTest ./containers-macvlans.nix {}; + containers-physical_interfaces = handleTest ./containers-physical_interfaces.nix {}; + containers-restart_networking = handleTest ./containers-restart_networking.nix {}; + containers-tmpfs = handleTest ./containers-tmpfs.nix {}; + #couchdb = handleTest ./couchdb.nix {}; # spidermonkey-1.8.5 is marked as broken + deluge = handleTest ./deluge.nix {}; + dhparams = handleTest ./dhparams.nix {}; + dnscrypt-proxy = handleTestOn ["x86_64-linux"] ./dnscrypt-proxy.nix {}; + docker = handleTestOn ["x86_64-linux"] ./docker.nix {}; + docker-edge = handleTestOn ["x86_64-linux"] ./docker-edge.nix {}; + docker-preloader = handleTestOn ["x86_64-linux"] ./docker-preloader.nix {}; + docker-registry = handleTest ./docker-registry.nix {}; + docker-tools = handleTestOn ["x86_64-linux"] ./docker-tools.nix {}; + docker-tools-overlay = handleTestOn ["x86_64-linux"] ./docker-tools-overlay.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 {}; + ec2-nixops = (handleTestOn ["x86_64-linux"] ./ec2.nix {}).boot-ec2-nixops or {}; + ecryptfs = handleTest ./ecryptfs.nix {}; + elk = handleTestOn ["x86_64-linux"] ./elk.nix {}; + env = handleTest ./env.nix {}; + etcd = handleTestOn ["x86_64-linux"] ./etcd.nix {}; + ferm = handleTest ./ferm.nix {}; + firefox = handleTest ./firefox.nix {}; + firewall = handleTest ./firewall.nix {}; + flatpak = handleTest ./flatpak.nix {}; + fsck = handleTest ./fsck.nix {}; + fwupd = handleTestOn ["x86_64-linux"] ./fwupd.nix {}; # libsmbios is unsupported on aarch64 + gdk-pixbuf = handleTest ./gdk-pixbuf.nix {}; + gitea = handleTest ./gitea.nix {}; + gitlab = handleTest ./gitlab.nix {}; + gitolite = handleTest ./gitolite.nix {}; + gjs = handleTest ./gjs.nix {}; + google-oslogin = handleTest ./google-oslogin {}; + gnome3 = handleTestOn ["x86_64-linux"] ./gnome3.nix {}; # libsmbios is unsupported on aarch64 + gnome3-gdm = handleTestOn ["x86_64-linux"] ./gnome3-gdm.nix {}; # libsmbios is unsupported on aarch64 + gocd-agent = handleTest ./gocd-agent.nix {}; + gocd-server = handleTest ./gocd-server.nix {}; + grafana = handleTest ./grafana.nix {}; + graphite = handleTest ./graphite.nix {}; + hadoop.hdfs = handleTestOn [ "x86_64-linux" ] ./hadoop/hdfs.nix {}; + hadoop.yarn = handleTestOn [ "x86_64-linux" ] ./hadoop/yarn.nix {}; + handbrake = handleTestOn ["x86_64-linux"] ./handbrake.nix {}; + haproxy = handleTest ./haproxy.nix {}; + hardened = handleTest ./hardened.nix {}; + hibernate = handleTest ./hibernate.nix {}; + hitch = handleTest ./hitch {}; + hocker-fetchdocker = handleTest ./hocker-fetchdocker {}; + home-assistant = handleTest ./home-assistant.nix {}; + hound = handleTest ./hound.nix {}; + hydra = handleTest ./hydra {}; + i3wm = handleTest ./i3wm.nix {}; + iftop = handleTest ./iftop.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 {}; + ipv6 = handleTest ./ipv6.nix {}; + jackett = handleTest ./jackett.nix {}; + jenkins = handleTest ./jenkins.nix {}; + #kafka = handleTest ./kafka.nix {}; # broken since openjdk: 8u181 -> 8u192 + kerberos = handleTest ./kerberos/default.nix {}; + kernel-latest = handleTest ./kernel-latest.nix {}; + kernel-lts = handleTest ./kernel-lts.nix {}; + keymap = handleTest ./keymap.nix {}; + 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.login = handleTest ./login.nix { latestKernel = true; }; + ldap = handleTest ./ldap.nix {}; + leaps = handleTest ./leaps.nix {}; + lidarr = handleTest ./lidarr.nix {}; + #lightdm = handleTest ./lightdm.nix {}; + login = handleTest ./login.nix {}; + #logstash = handleTest ./logstash.nix {}; + mathics = handleTest ./mathics.nix {}; + matrix-synapse = handleTest ./matrix-synapse.nix {}; + memcached = handleTest ./memcached.nix {}; + mesos = handleTest ./mesos.nix {}; + misc = handleTest ./misc.nix {}; + mongodb = handleTest ./mongodb.nix {}; + morty = handleTest ./morty.nix {}; + mpd = handleTest ./mpd.nix {}; + mumble = handleTest ./mumble.nix {}; + munin = handleTest ./munin.nix {}; + mutableUsers = handleTest ./mutable-users.nix {}; + mysql = handleTest ./mysql.nix {}; + mysqlBackup = handleTest ./mysql-backup.nix {}; + mysqlReplication = handleTest ./mysql-replication.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; }; + netdata = handleTest ./netdata.nix {}; + networking.networkd = handleTest ./networking.nix { networkd = true; }; + networking.scripted = handleTest ./networking.nix { networkd = false; }; + # TODO: put in networking.nix after the test becomes more complete + networkingProxy = handleTest ./networking-proxy.nix {}; + nextcloud = handleTest ./nextcloud {}; + nexus = handleTest ./nexus.nix {}; + nfs3 = handleTest ./nfs.nix { version = 3; }; + nfs4 = handleTest ./nfs.nix { version = 4; }; + nghttpx = handleTest ./nghttpx.nix {}; + nginx = handleTest ./nginx.nix {}; + nix-ssh-serve = handleTest ./nix-ssh-serve.nix {}; + novacomd = handleTestOn ["x86_64-linux"] ./novacomd.nix {}; + nsd = handleTest ./nsd.nix {}; + openldap = handleTest ./openldap.nix {}; + opensmtpd = handleTest ./opensmtpd.nix {}; + openssh = handleTest ./openssh.nix {}; + osquery = handleTest ./osquery.nix {}; + ostree = handleTest ./ostree.nix {}; + pam-oath-login = handleTest ./pam-oath-login.nix {}; + peerflix = handleTest ./peerflix.nix {}; + pgjwt = handleTest ./pgjwt.nix {}; + pgmanage = handleTest ./pgmanage.nix {}; + php-pcre = handleTest ./php-pcre.nix {}; + plasma5 = handleTest ./plasma5.nix {}; + plotinus = handleTest ./plotinus.nix {}; + postgis = handleTest ./postgis.nix {}; + postgresql = handleTest ./postgresql.nix {}; + powerdns = handleTest ./powerdns.nix {}; + predictable-interface-names = handleTest ./predictable-interface-names.nix {}; + printing = handleTest ./printing.nix {}; + prometheus = handleTest ./prometheus.nix {}; + prometheus-exporters = handleTest ./prometheus-exporters.nix {}; + prosody = handleTest ./prosody.nix {}; + proxy = handleTest ./proxy.nix {}; + quagga = handleTest ./quagga.nix {}; + quake3 = handleTest ./quake3.nix {}; + rabbitmq = handleTest ./rabbitmq.nix {}; + radarr = handleTest ./radarr.nix {}; + radicale = handleTest ./radicale.nix {}; + redmine = handleTest ./redmine.nix {}; + roundcube = handleTest ./roundcube.nix {}; + rspamd = handleTest ./rspamd.nix {}; + rss2email = handleTest ./rss2email.nix {}; + rsyslogd = handleTest ./rsyslogd.nix {}; + runInMachine = handleTest ./run-in-machine.nix {}; + rxe = handleTest ./rxe.nix {}; + samba = handleTest ./samba.nix {}; + sddm = handleTest ./sddm.nix {}; + simple = handleTest ./simple.nix {}; + slim = handleTest ./slim.nix {}; + slurm = handleTest ./slurm.nix {}; + smokeping = handleTest ./smokeping.nix {}; + snapper = handleTest ./snapper.nix {}; + solr = handleTest ./solr.nix {}; + sonarr = handleTest ./sonarr.nix {}; + strongswan-swanctl = handleTest ./strongswan-swanctl.nix {}; + sudo = handleTest ./sudo.nix {}; + switchTest = handleTest ./switch-test.nix {}; + syncthing-relay = handleTest ./syncthing-relay.nix {}; + systemd = handleTest ./systemd.nix {}; + taskserver = handleTest ./taskserver.nix {}; + telegraf = handleTest ./telegraf.nix {}; + tomcat = handleTest ./tomcat.nix {}; + tor = handleTest ./tor.nix {}; + transmission = handleTest ./transmission.nix {}; + udisks2 = handleTest ./udisks2.nix {}; + upnp = handleTest ./upnp.nix {}; + vault = handleTest ./vault.nix {}; + virtualbox = handleTestOn ["x86_64-linux"] ./virtualbox.nix {}; + wordpress = handleTest ./wordpress.nix {}; + xautolock = handleTest ./xautolock.nix {}; + xdg-desktop-portal = handleTest ./xdg-desktop-portal.nix {}; + xfce = handleTest ./xfce.nix {}; + xmonad = handleTest ./xmonad.nix {}; + xrdp = handleTest ./xrdp.nix {}; + xss-lock = handleTest ./xss-lock.nix {}; + yabar = handleTest ./yabar.nix {}; + zookeeper = handleTest ./zookeeper.nix {}; +} diff --git a/nixos/tests/bees.nix b/nixos/tests/bees.nix new file mode 100644 index 00000000000..6f68c2f834f --- /dev/null +++ b/nixos/tests/bees.nix @@ -0,0 +1,55 @@ +import ./make-test.nix ({ lib, ... }: +{ + name = "bees"; + + machine = { config, pkgs, ... }: { + boot.initrd.postDeviceCommands = '' + ${pkgs.btrfs-progs}/bin/mkfs.btrfs -f -L aux1 /dev/vdb + ${pkgs.btrfs-progs}/bin/mkfs.btrfs -f -L aux2 /dev/vdc + ''; + virtualisation.emptyDiskImages = [ 4096 4096 ]; + fileSystems = lib.mkVMOverride { + "/aux1" = { # filesystem configured to be deduplicated + device = "/dev/disk/by-label/aux1"; + fsType = "btrfs"; + }; + "/aux2" = { # filesystem not configured to be deduplicated + device = "/dev/disk/by-label/aux2"; + fsType = "btrfs"; + }; + }; + services.beesd.filesystems = { + aux1 = { + spec = "LABEL=aux1"; + hashTableSizeMB = 16; + verbosity = "debug"; + }; + }; + }; + + testScript = + let + withRetry = content: maxTests: sleepTime: '' + max_tests=${lib.escapeShellArg maxTests}; sleep_time=${lib.escapeShellArg sleepTime}; for ((i=0; i1 && $3 == 0 { count++ } END { print count }') -eq 0 ]]''; + in '' + # shut down the instance started by systemd at boot, so we can test our test procedure + $machine->succeed("systemctl stop beesd\@aux1.service"); + + $machine->succeed("dd if=/dev/urandom of=/aux1/dedup-me-1 bs=1M count=8"); + $machine->succeed("cp --reflink=never /aux1/dedup-me-1 /aux1/dedup-me-2"); + $machine->succeed("cp --reflink=never /aux1/* /aux2/"); + $machine->succeed("sync"); + $machine->fail(q(${someContentIsShared "/aux1"})); + $machine->fail(q(${someContentIsShared "/aux2"})); + $machine->succeed("systemctl start beesd\@aux1.service"); + + # assert that "Set Shared" column is nonzero + $machine->succeed(q(${withRetry (someContentIsShared "/aux1") 20 2})); + $machine->fail(q(${someContentIsShared "/aux2"})); + + # assert that 16MB hash table size requested was honored + $machine->succeed(q([[ $(stat -c %s /aux1/.beeshome/beeshash.dat) = $(( 16 * 1024 * 1024)) ]])) + ''; +}) diff --git a/nixos/tests/boot.nix b/nixos/tests/boot.nix index 301d9d0f817..c9bb1e77c6d 100644 --- a/nixos/tests/boot.nix +++ b/nixos/tests/boot.nix @@ -1,6 +1,9 @@ -{ system ? builtins.currentSystem }: +{ system ? builtins.currentSystem, + config ? {}, + pkgs ? import ../.. { inherit system config; } +}: -with import ../lib/testing.nix { inherit system; }; +with import ../lib/testing.nix { inherit system pkgs; }; with pkgs.lib; let diff --git a/nixos/tests/borgbackup.nix b/nixos/tests/borgbackup.nix index 9b39abdfa8e..fdb87dbea43 100644 --- a/nixos/tests/borgbackup.nix +++ b/nixos/tests/borgbackup.nix @@ -130,6 +130,9 @@ in { # Make sure keepFile has the correct content $client->succeed("$borg extract '${localRepo}::${archiveName}'"); $client->succeed('c=$(cat ${dataDir}/${keepFile}) && [[ "$c" == "${keepFileData}" ]]'); + # Make sure the same is true when using `borg mount` + $client->succeed("mkdir -p /mnt/borg && $borg mount '${localRepo}::${archiveName}' /mnt/borg"); + $client->succeed('c=$(cat /mnt/borg/${dataDir}/${keepFile}) && [[ "$c" == "${keepFileData}" ]]'); }; subtest "remote", sub { diff --git a/nixos/tests/buildbot.nix b/nixos/tests/buildbot.nix index cf408dc7fec..210ad8e91df 100644 --- a/nixos/tests/buildbot.nix +++ b/nixos/tests/buildbot.nix @@ -1,111 +1,120 @@ -# Test ensures buildbot master comes up correctly and workers can connect +{ system ? builtins.currentSystem, + config ? {}, + pkgs ? import ../.. { inherit system config; } +}: -import ./make-test.nix ({ pkgs, ... } : { - name = "buildbot"; +with import ../lib/testing.nix { inherit system pkgs; }; - nodes = { - bbmaster = { pkgs, ... }: { - services.buildbot-master = { - enable = true; - package = pkgs.buildbot-full; +let + # Test ensures buildbot master comes up correctly and workers can connect + mkBuildbotTest = python: makeTest { + name = "buildbot"; - # NOTE: use fake repo due to no internet in hydra ci - factorySteps = [ - "steps.Git(repourl='git://gitrepo/fakerepo.git', mode='incremental')" - "steps.ShellCommand(command=['bash', 'fakerepo.sh'])" - ]; - changeSource = [ - "changes.GitPoller('git://gitrepo/fakerepo.git', workdir='gitpoller-workdir', branch='master', pollinterval=300)" - ]; + nodes = { + bbmaster = { pkgs, ... }: { + services.buildbot-master = { + enable = true; + package = python.pkgs.buildbot-full; + + # NOTE: use fake repo due to no internet in hydra ci + factorySteps = [ + "steps.Git(repourl='git://gitrepo/fakerepo.git', mode='incremental')" + "steps.ShellCommand(command=['bash', 'fakerepo.sh'])" + ]; + changeSource = [ + "changes.GitPoller('git://gitrepo/fakerepo.git', workdir='gitpoller-workdir', branch='master', pollinterval=300)" + ]; + }; + networking.firewall.allowedTCPPorts = [ 8010 8011 9989 ]; + environment.systemPackages = with pkgs; [ git python.pkgs.buildbot-full ]; }; - networking.firewall.allowedTCPPorts = [ 8010 8011 9989 ]; - environment.systemPackages = with pkgs; [ git buildbot-full ]; - }; - bbworker = { pkgs, ... }: { - services.buildbot-worker = { - enable = true; - masterUrl = "bbmaster:9989"; + bbworker = { pkgs, ... }: { + services.buildbot-worker = { + enable = true; + masterUrl = "bbmaster:9989"; + }; + environment.systemPackages = with pkgs; [ git python.pkgs.buildbot-worker ]; + }; + + gitrepo = { pkgs, ... }: { + services.openssh.enable = true; + networking.firewall.allowedTCPPorts = [ 22 9418 ]; + environment.systemPackages = with pkgs; [ git ]; }; - environment.systemPackages = with pkgs; [ git buildbot-worker ]; }; - gitrepo = { pkgs, ... }: { - services.openssh.enable = true; - networking.firewall.allowedTCPPorts = [ 22 9418 ]; - environment.systemPackages = with pkgs; [ git ]; - }; + 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")); + + + # Test stop buildbot master and worker + print($bbmaster->execute(" \ + systemctl -l --no-pager status buildbot-master && \ + systemctl stop buildbot-master \ + ")); + $bbworker->fail("nc -z bbmaster 8010"); + $bbworker->fail("nc -z bbmaster 9989"); + print($bbworker->execute(" \ + systemctl -l --no-pager status buildbot-worker && \ + systemctl stop buildbot-worker && \ + ls -la /home/bbworker/worker \ + ")); + + + # Test buildbot daemon mode + $bbmaster->execute("buildbot create-master /tmp"); + $bbmaster->execute("mv -fv /tmp/master.cfg.sample /tmp/master.cfg"); + $bbmaster->execute("sed -i 's/8010/8011/' /tmp/master.cfg"); + $bbmaster->execute("buildbot start /tmp"); + $bbworker->execute("nc -z bbmaster 8011"); + $bbworker->waitUntilSucceeds("curl -s --head http://bbmaster:8011") =~ /200 OK/; + $bbmaster->execute("buildbot stop /tmp"); + $bbworker->fail("nc -z bbmaster 8011"); + + ''; + + meta.maintainers = with pkgs.stdenv.lib.maintainers; [ nand0p ]; + }; - - 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")); - - - # Test stop buildbot master and worker - print($bbmaster->execute(" \ - systemctl -l --no-pager status buildbot-master && \ - systemctl stop buildbot-master \ - ")); - $bbworker->fail("nc -z bbmaster 8010"); - $bbworker->fail("nc -z bbmaster 9989"); - print($bbworker->execute(" \ - systemctl -l --no-pager status buildbot-worker && \ - systemctl stop buildbot-worker && \ - ls -la /home/bbworker/worker \ - ")); - - - # Test buildbot daemon mode - # NOTE: daemon mode tests disabled due to broken PYTHONPATH child inheritence - # - #$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"); - - ''; - - meta.maintainers = with pkgs.stdenv.lib.maintainers; [ nand0p ]; - -}) +in { + python2 = mkBuildbotTest pkgs.python2; + python3 = mkBuildbotTest pkgs.python3; +} diff --git a/nixos/tests/ceph.nix b/nixos/tests/ceph.nix index dd45f0157b0..7408029c460 100644 --- a/nixos/tests/ceph.nix +++ b/nixos/tests/ceph.nix @@ -10,9 +10,8 @@ import ./make-test.nix ({pkgs, ...}: rec { emptyDiskImages = [ 20480 20480 ]; vlans = [ 1 ]; }; - + networking = { - firewall.allowPing = true; useDHCP = false; interfaces.eth1.ipv4.addresses = pkgs.lib.mkOverride 0 [ { address = "192.168.1.1"; prefixLength = 24; } @@ -54,7 +53,7 @@ import ./make-test.nix ({pkgs, ...}: rec { }; }; }; - + testScript = { ... }: '' startAll; @@ -83,7 +82,7 @@ import ./make-test.nix ({pkgs, ...}: rec { # Can't check ceph status until a mon is up $aio->succeed("ceph -s | grep 'mon: 1 daemons'"); - + # Start the ceph-mgr daemon, it has no deps and hardly any setup $aio->mustSucceed( "ceph auth get-or-create mgr.aio mon 'allow profile mgr' osd 'allow *' mds 'allow *' > /var/lib/ceph/mgr/ceph-aio/keyring", diff --git a/nixos/tests/certmgr.nix b/nixos/tests/certmgr.nix index 8354c46b85f..fe67833808c 100644 --- a/nixos/tests/certmgr.nix +++ b/nixos/tests/certmgr.nix @@ -1,6 +1,9 @@ -{ system ? builtins.currentSystem }: +{ system ? builtins.currentSystem, + config ? {}, + pkgs ? import ../.. { inherit system config; } +}: -with import ../lib/testing.nix { inherit system; }; +with import ../lib/testing.nix { inherit system pkgs; }; let mkSpec = { host, service ? null, action }: { inherit action; diff --git a/nixos/tests/chromium.nix b/nixos/tests/chromium.nix index c341e83961a..af5db2a3dbe 100644 --- a/nixos/tests/chromium.nix +++ b/nixos/tests/chromium.nix @@ -1,5 +1,6 @@ { system ? builtins.currentSystem -, pkgs ? import ../.. { inherit system; } +, config ? {} +, pkgs ? import ../.. { inherit system config; } , channelMap ? { stable = pkgs.chromium; beta = pkgs.chromiumBeta; @@ -7,13 +8,15 @@ } }: -with import ../lib/testing.nix { inherit system; }; +with import ../lib/testing.nix { inherit system pkgs; }; with pkgs.lib; mapAttrs (channel: chromiumPkg: makeTest rec { name = "chromium-${channel}"; - meta = with pkgs.stdenv.lib.maintainers; { - maintainers = [ aszlig ]; + meta = { + maintainers = with maintainers; [ aszlig ]; + # https://github.com/NixOS/hydra/issues/591#issuecomment-435125621 + inherit (chromiumPkg.meta) timeout; }; enableOCR = true; @@ -166,7 +169,7 @@ mapAttrs (channel: chromiumPkg: makeTest rec { my $clipboard = $machine->succeed(ru "${pkgs.xclip}/bin/xclip -o"); die "sandbox not working properly: $clipboard" - unless $clipboard =~ /namespace sandbox.*yes/mi + unless $clipboard =~ /layer 1 sandbox.*namespace/mi && $clipboard =~ /pid namespaces.*yes/mi && $clipboard =~ /network namespaces.*yes/mi && $clipboard =~ /seccomp.*sandbox.*yes/mi @@ -184,7 +187,7 @@ mapAttrs (channel: chromiumPkg: makeTest rec { my $clipboard = $machine->succeed(ru "${pkgs.xclip}/bin/xclip -o"); die "copying twice in a row does not work properly: $clipboard" - unless $clipboard =~ /namespace sandbox.*yes/mi + unless $clipboard =~ /layer 1 sandbox.*namespace/mi && $clipboard =~ /pid namespaces.*yes/mi && $clipboard =~ /network namespaces.*yes/mi && $clipboard =~ /seccomp.*sandbox.*yes/mi diff --git a/nixos/tests/cjdns.nix b/nixos/tests/cjdns.nix index ab5f8e0bcf3..e03bb988254 100644 --- a/nixos/tests/cjdns.nix +++ b/nixos/tests/cjdns.nix @@ -13,9 +13,6 @@ let # CJDNS output is incompatible with the XML log. systemd.services.cjdns.serviceConfig.StandardOutput = "null"; - #networking.firewall.enable = true; - networking.firewall.allowPing = true; - #networking.firewall.rejectPackets = true; }; in diff --git a/nixos/tests/clickhouse.nix b/nixos/tests/clickhouse.nix new file mode 100644 index 00000000000..7d835069ec4 --- /dev/null +++ b/nixos/tests/clickhouse.nix @@ -0,0 +1,25 @@ +import ./make-test.nix ({ pkgs, ... }: { + name = "clickhouse"; + meta.maintainers = with pkgs.stdenv.lib.maintainers; [ ma27 ]; + + machine = { + services.clickhouse.enable = true; + }; + + testScript = + let + # work around quote/substitution complexity by Nix, Perl, bash and SQL. + tableDDL = pkgs.writeText "ddl.sql" "CREATE TABLE `demo` (`value` FixedString(10)) engine = MergeTree PARTITION BY value ORDER BY tuple();"; + insertQuery = pkgs.writeText "insert.sql" "INSERT INTO `demo` (`value`) VALUES ('foo');"; + selectQuery = pkgs.writeText "select.sql" "SELECT * from `demo`"; + in + '' + $machine->start(); + $machine->waitForUnit("clickhouse.service"); + $machine->waitForOpenPort(9000); + + $machine->succeed("cat ${tableDDL} | clickhouse-client"); + $machine->succeed("cat ${insertQuery} | clickhouse-client"); + $machine->succeed("cat ${selectQuery} | clickhouse-client | grep foo"); + ''; +}) diff --git a/nixos/tests/cloud-init.nix b/nixos/tests/cloud-init.nix index 303e7408646..516d29c9036 100644 --- a/nixos/tests/cloud-init.nix +++ b/nixos/tests/cloud-init.nix @@ -1,6 +1,9 @@ -{ system ? builtins.currentSystem }: +{ system ? builtins.currentSystem, + config ? {}, + pkgs ? import ../.. { inherit system config; } +}: -with import ../lib/testing.nix { inherit system; }; +with import ../lib/testing.nix { inherit system pkgs; }; with pkgs.lib; let diff --git a/nixos/tests/cockroachdb.nix b/nixos/tests/cockroachdb.nix new file mode 100644 index 00000000000..56c624d8cf2 --- /dev/null +++ b/nixos/tests/cockroachdb.nix @@ -0,0 +1,126 @@ +# 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) +# +# CockroachDB requires synchronized system clocks within a small error window +# (~500ms by default) on each node in order to maintain a multi-node cluster. +# Cluster joins that are outside this window will fail, and nodes that skew +# outside the window after joining will promptly get kicked out. +# +# To accomodate this, we use QEMU/virtio infrastructure and load the 'ptp_kvm' +# driver inside a guest. This driver allows the host machine to pass its clock +# through to the guest as a hardware clock that appears as a Precision Time +# Protocol (PTP) Clock device, generally /dev/ptp0. PTP devices can be measured +# and used as hardware reference clocks (similar to an on-board GPS clock) by +# NTP software. In our case, we use Chrony to synchronize to the reference +# clock. +# +# This test is currently NOT enabled as a continuously-checked NixOS test. +# Ideally, this test would be run by Hydra and Borg on all relevant changes, +# except: +# +# - Not every build machine is compatible with the ptp_kvm driver. +# Virtualized EC2 instances, for example, do not support loading the ptp_kvm +# driver into guests. However, bare metal builders (e.g. Packet) do seem to +# work just fine. In practice, this means x86_64-linux builds would fail +# randomly, depending on which build machine got the job. (This is probably +# worth some investigation; I imagine it's based on ptp_kvm's usage of paravirt +# support which may not be available in 'nested' environments.) +# +# - ptp_kvm is not supported on aarch64, otherwise it seems likely Cockroach +# could be tested there, as well. This seems to be due to the usage of +# the TSC in ptp_kvm, which isn't supported (easily) on AArch64. (And: +# testing stuff, not just making sure it builds, is important to ensure +# aarch64 support remains viable.) +# +# For future developers who are reading this message, are daring and would want +# to fix this, some options are: +# +# - Just test a single node cluster instead (boring and less thorough). +# - Move all CI to bare metal packet builders, and we can at least do x86_64-linux. +# - Get virtualized clocking working in aarch64, somehow. +# - Add a 4th node that acts as an NTP service and uses no PTP clocks for +# references, at the client level. This bloats the node and memory +# requirements, but would probably allow both aarch64/x86_64 to work. +# + +let + + # Creates a node. If 'joinNode' parameter, a string containing an IP address, + # is non-null, then the CockroachDB server will attempt to join/connect to + # the cluster node specified at that address. + makeNode = locality: myAddr: joinNode: + { nodes, pkgs, lib, config, ... }: + + { + # Bank/TPC-C benchmarks take some memory to complete + virtualisation.memorySize = 1024; + + # Install the KVM PTP "Virtualized Clock" driver. This allows a /dev/ptp0 + # device to appear as a reference clock, synchronized to the host clock. + # Because CockroachDB *requires* a time-synchronization mechanism for + # the system time in a cluster scenario, this is necessary to work. + boot.kernelModules = [ "ptp_kvm" ]; + + # Enable and configure Chrony, using the given virtualized clock passed + # through by KVM. + services.chrony.enable = true; + services.chrony.servers = lib.mkForce [ ]; + services.chrony.extraConfig = '' + refclock PHC /dev/ptp0 poll 2 prefer require refid KVM + makestep 0.1 3 + ''; + + # Enable CockroachDB. In order to ensure that Chrony has performed its + # first synchronization at boot-time (which may take ~10 seconds) before + # starting CockroachDB, we block the ExecStartPre directive using the + # 'waitsync' command. This ensures Cockroach doesn't have its system time + # leap forward out of nowhere during startup/execution. + # + # Note that the default threshold for NTP-based skew in CockroachDB is + # ~500ms by default, so making sure it's started *after* accurate time + # synchronization is extremely important. + services.cockroachdb.enable = true; + services.cockroachdb.insecure = true; + services.cockroachdb.openPorts = true; + services.cockroachdb.locality = locality; + services.cockroachdb.listen.address = myAddr; + services.cockroachdb.join = lib.mkIf (joinNode != null) joinNode; + + # Hold startup until Chrony has performed its first measurement (which + # will probably result in a full timeskip, thanks to makestep) + systemd.services.cockroachdb.preStart = '' + ${pkgs.chrony}/bin/chronyc waitsync + ''; + }; + +in import ./make-test.nix ({ pkgs, ...} : { + name = "cockroachdb"; + meta.maintainers = with pkgs.stdenv.lib.maintainers; + [ thoughtpolice ]; + + nodes = rec { + node1 = makeNode "country=us,region=east,dc=1" "192.168.1.1" null; + node2 = makeNode "country=us,region=west,dc=2b" "192.168.1.2" "192.168.1.1"; + node3 = makeNode "country=eu,region=west,dc=2" "192.168.1.3" "192.168.1.1"; + }; + + # NOTE: All the nodes must start in order and you must NOT use startAll, because + # 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'"); + ''; +}) diff --git a/nixos/tests/common/webroot/news-rss.xml b/nixos/tests/common/webroot/news-rss.xml new file mode 100644 index 00000000000..28e6fa7da1f --- /dev/null +++ b/nixos/tests/common/webroot/news-rss.xml @@ -0,0 +1,15 @@ + +NixOS Newshttps://nixos.orgNews for NixOS, the purely functional Linux distribution.NixOShttps://nixos.org/logo/nixos-logo-only-hires.pnghttps://nixos.org/ + NixOS 18.09 released + https://nixos.org/news.html + + 18.09 Jellyfish logo + + NixOS 18.09 “Jellyfish” has been released, the tenth stable release branch. + See the release notes + for details. You can get NixOS 18.09 ISOs and VirtualBox appliances + from the download page. + For information on how to upgrade from older release branches + to 18.09, check out the + manual section on upgrading. + Sat Oct 06 2018 00:00:00 GMT diff --git a/nixos/tests/containers-bridge.nix b/nixos/tests/containers-bridge.nix index bd8bd5dee9c..777cf9a7e7f 100644 --- a/nixos/tests/containers-bridge.nix +++ b/nixos/tests/containers-bridge.nix @@ -42,7 +42,6 @@ import ./make-test.nix ({ pkgs, ...} : { { services.httpd.enable = true; services.httpd.adminAddr = "foo@example.org"; networking.firewall.allowedTCPPorts = [ 80 ]; - networking.firewall.allowPing = true; }; }; diff --git a/nixos/tests/containers-extra_veth.nix b/nixos/tests/containers-extra_veth.nix index 8f874b3585d..b3d3bce8757 100644 --- a/nixos/tests/containers-extra_veth.nix +++ b/nixos/tests/containers-extra_veth.nix @@ -13,6 +13,7 @@ import ./make-test.nix ({ pkgs, ...} : { virtualisation.memorySize = 768; virtualisation.vlans = []; + networking.useDHCP = false; networking.bridges = { br0 = { interfaces = []; @@ -43,7 +44,6 @@ import ./make-test.nix ({ pkgs, ...} : { config = { networking.firewall.allowedTCPPorts = [ 80 ]; - networking.firewall.allowPing = true; }; }; diff --git a/nixos/tests/containers-ipv4.nix b/nixos/tests/containers-ipv4.nix index 4affe3d9d56..5f83a33b107 100644 --- a/nixos/tests/containers-ipv4.nix +++ b/nixos/tests/containers-ipv4.nix @@ -20,7 +20,6 @@ import ./make-test.nix ({ pkgs, ...} : { { services.httpd.enable = true; services.httpd.adminAddr = "foo@example.org"; networking.firewall.allowedTCPPorts = [ 80 ]; - networking.firewall.allowPing = true; system.stateVersion = "18.03"; }; }; diff --git a/nixos/tests/containers-ipv6.nix b/nixos/tests/containers-ipv6.nix index 7db389a18e7..5866e51b731 100644 --- a/nixos/tests/containers-ipv6.nix +++ b/nixos/tests/containers-ipv6.nix @@ -25,7 +25,6 @@ import ./make-test.nix ({ pkgs, ...} : { { services.httpd.enable = true; services.httpd.adminAddr = "foo@example.org"; networking.firewall.allowedTCPPorts = [ 80 ]; - networking.firewall.allowPing = true; }; }; diff --git a/nixos/tests/containers-portforward.nix b/nixos/tests/containers-portforward.nix index be83f82445e..d2dda926fc0 100644 --- a/nixos/tests/containers-portforward.nix +++ b/nixos/tests/containers-portforward.nix @@ -28,7 +28,6 @@ import ./make-test.nix ({ pkgs, ...} : { { services.httpd.enable = true; services.httpd.adminAddr = "foo@example.org"; networking.firewall.allowedTCPPorts = [ 80 ]; - networking.firewall.allowPing = true; }; }; diff --git a/nixos/tests/containers-restart_networking.nix b/nixos/tests/containers-restart_networking.nix index aeb0a6e68e2..0fb3b591e9f 100644 --- a/nixos/tests/containers-restart_networking.nix +++ b/nixos/tests/containers-restart_networking.nix @@ -10,7 +10,6 @@ let hostBridge = "br0"; config = { networking.firewall.enable = false; - networking.firewall.allowPing = true; networking.interfaces.eth0.ipv4.addresses = [ { address = "192.168.1.122"; prefixLength = 24; } ]; diff --git a/nixos/tests/docker-preloader.nix b/nixos/tests/docker-preloader.nix new file mode 100644 index 00000000000..eeedec9a392 --- /dev/null +++ b/nixos/tests/docker-preloader.nix @@ -0,0 +1,27 @@ +import ./make-test.nix ({ pkgs, ...} : { + name = "docker-preloader"; + meta = with pkgs.stdenv.lib.maintainers; { + maintainers = [ lewo ]; + }; + + nodes = { + docker = + { pkgs, ... }: + { + virtualisation.docker.enable = true; + virtualisation.dockerPreloader.images = [ pkgs.dockerTools.examples.nix pkgs.dockerTools.examples.bash ]; + + services.openssh.enable = true; + services.openssh.permitRootLogin = "yes"; + services.openssh.extraConfig = "PermitEmptyPasswords yes"; + users.extraUsers.root.password = ""; + }; + }; + testScript = '' + startAll; + + $docker->waitForUnit("sockets.target"); + $docker->succeed("docker run nix nix-store --version"); + $docker->succeed("docker run bash bash --version"); + ''; +}) diff --git a/nixos/tests/docker-tools.nix b/nixos/tests/docker-tools.nix index 360b32faae7..58f106314ab 100644 --- a/nixos/tests/docker-tools.nix +++ b/nixos/tests/docker-tools.nix @@ -62,5 +62,10 @@ import ./make-test.nix ({ pkgs, ... }: { # 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}"); ''; }) diff --git a/nixos/tests/ec2.nix b/nixos/tests/ec2.nix index 8271747ccc6..ed6bf7da988 100644 --- a/nixos/tests/ec2.nix +++ b/nixos/tests/ec2.nix @@ -1,6 +1,9 @@ -{ system ? builtins.currentSystem }: +{ system ? builtins.currentSystem, + config ? {}, + pkgs ? import ../.. { inherit system config; } +}: -with import ../lib/testing.nix { inherit system; }; +with import ../lib/testing.nix { inherit system pkgs; }; with pkgs.lib; let diff --git a/nixos/tests/elk.nix b/nixos/tests/elk.nix index 15be72b80bb..d787ac97300 100644 --- a/nixos/tests/elk.nix +++ b/nixos/tests/elk.nix @@ -1,6 +1,12 @@ -{ system ? builtins.currentSystem, enableUnfree ? false }: -with import ../lib/testing.nix { inherit system; }; +{ system ? builtins.currentSystem, + config ? {}, + pkgs ? import ../.. { inherit system config; }, + enableUnfree ? false +}: + +with import ../lib/testing.nix { inherit system pkgs; }; with pkgs.lib; + let esUrl = "http://localhost:9200"; diff --git a/nixos/tests/gitea.nix b/nixos/tests/gitea.nix new file mode 100644 index 00000000000..28e6479e9cb --- /dev/null +++ b/nixos/tests/gitea.nix @@ -0,0 +1,79 @@ +{ system ? builtins.currentSystem, + config ? {}, + pkgs ? import ../.. { inherit system config; } +}: + +with import ../lib/testing.nix { inherit system pkgs; }; +with pkgs.lib; + +{ + mysql = makeTest { + name = "gitea-mysql"; + meta.maintainers = [ maintainers.aanderse ]; + + machine = + { config, pkgs, ... }: + { services.mysql.enable = true; + services.mysql.package = pkgs.mariadb; + services.mysql.ensureDatabases = [ "gitea" ]; + services.mysql.ensureUsers = [ + { name = "gitea"; + ensurePermissions = { "gitea.*" = "ALL PRIVILEGES"; }; + } + ]; + + services.gitea.enable = true; + services.gitea.database.type = "mysql"; + services.gitea.database.socket = "/run/mysqld/mysqld.sock"; + }; + + testScript = '' + startAll; + + $machine->waitForUnit('gitea.service'); + $machine->waitForOpenPort('3000'); + $machine->succeed("curl --fail http://localhost:3000/"); + ''; + }; + + postgres = makeTest { + name = "gitea-postgres"; + meta.maintainers = [ maintainers.aanderse ]; + + machine = + { config, pkgs, ... }: + { + services.gitea.enable = true; + services.gitea.database.type = "postgres"; + services.gitea.database.password = "secret"; + }; + + testScript = '' + startAll; + + $machine->waitForUnit('gitea.service'); + $machine->waitForOpenPort('3000'); + $machine->succeed("curl --fail http://localhost:3000/"); + ''; + }; + + sqlite = makeTest { + name = "gitea-sqlite"; + meta.maintainers = [ maintainers.aanderse ]; + + machine = + { config, pkgs, ... }: + { services.gitea.enable = true; + services.gitea.disableRegistration = true; + }; + + testScript = '' + startAll; + + $machine->waitForUnit('gitea.service'); + $machine->waitForOpenPort('3000'); + $machine->succeed("curl --fail http://localhost:3000/"); + $machine->succeed("curl --fail http://localhost:3000/user/sign_up | grep 'Registration is disabled. Please contact your site administrator.'"); + ''; + }; +} diff --git a/nixos/tests/gitlab.nix b/nixos/tests/gitlab.nix index 3af2cbcd098..16e0dd723ec 100644 --- a/nixos/tests/gitlab.nix +++ b/nixos/tests/gitlab.nix @@ -1,17 +1,22 @@ # This test runs gitlab and checks if it works -import ./make-test.nix ({ pkgs, ...} : { +import ./make-test.nix ({ pkgs, lib, ...} : with lib; { name = "gitlab"; meta = with pkgs.stdenv.lib.maintainers; { - maintainers = [ domenkozar offline ]; + maintainers = [ globin ]; }; nodes = { gitlab = { ... }: { - virtualisation.memorySize = 768; + virtualisation.memorySize = if pkgs.stdenv.is64bit then 4096 else 2047; + systemd.services.gitlab.serviceConfig.Restart = mkForce "no"; + systemd.services.gitlab-workhorse.serviceConfig.Restart = mkForce "no"; + systemd.services.gitaly.serviceConfig.Restart = mkForce "no"; + systemd.services.gitlab-sidekiq.serviceConfig.Restart = mkForce "no"; services.nginx = { enable = true; + recommendedProxySettings = true; virtualHosts = { "localhost" = { locations."/".proxyPass = "http://unix:/run/gitlab/gitlab-workhorse.socket"; @@ -19,10 +24,11 @@ import ./make-test.nix ({ pkgs, ...} : { }; }; - systemd.services.gitlab.serviceConfig.TimeoutStartSec = "10min"; services.gitlab = { enable = true; databasePassword = "dbPassword"; + initialRootPassword = "notproduction"; + smtp.enable = true; secrets = { secret = "secret"; otp = "otpsecret"; @@ -65,8 +71,13 @@ import ./make-test.nix ({ pkgs, ...} : { testScript = '' $gitlab->start(); + $gitlab->waitForUnit("gitaly.service"); + $gitlab->waitForUnit("gitlab-workhorse.service"); $gitlab->waitForUnit("gitlab.service"); $gitlab->waitForUnit("gitlab-sidekiq.service"); - $gitlab->waitUntilSucceeds("curl http://localhost:80/users/sign_in"); + $gitlab->waitForFile("/var/gitlab/state/tmp/sockets/gitlab.socket"); + $gitlab->waitUntilSucceeds("curl -sSf http://gitlab/users/sign_in"); + $gitlab->succeed("curl -isSf http://gitlab | grep -i location | grep -q http://gitlab/users/sign_in"); + $gitlab->succeed("${pkgs.sudo}/bin/sudo -u gitlab -H gitlab-rake gitlab:check 1>&2") ''; }) diff --git a/nixos/tests/gnome3-gdm.nix b/nixos/tests/gnome3-gdm.nix index 959030d5988..c2808d87d99 100644 --- a/nixos/tests/gnome3-gdm.nix +++ b/nixos/tests/gnome3-gdm.nix @@ -23,11 +23,21 @@ import ./make-test.nix ({ pkgs, ...} : { virtualisation.memorySize = 1024; }; - testScript = - '' - # wait for gdm to start and bring up X + testScript = let + # Keep line widths somewhat managable + bus = "DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus"; + gdbus = "${bus} gdbus"; + # 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"); - $machine->waitForX; # wait for alice to be logged in $machine->waitForUnit("default.target","alice"); @@ -35,10 +45,16 @@ import ./make-test.nix ({ pkgs, ...} : { # Check that logging in has given the user ownership of devices. $machine->succeed("getfacl /dev/snd/timer | grep -q alice"); - # open a terminal and check it's there - $machine->succeed("su - alice -c 'DISPLAY=:0.0 XAUTHORITY=/run/user/\$UID/gdm/Xauthority gnome-terminal'"); - $machine->succeed("xauth merge /run/user/1000/gdm/Xauthority"); - $machine->waitForWindow(qr/Terminal/); + # Wait for the wayland server + $machine->waitForFile("/run/user/1000/wayland-0"); + + # Wait for gnome shell, correct output should be "(true, 'false')" + $machine->waitUntilSucceeds("su - alice -c '${startingUp} | grep -q true,..false'"); + + # open a terminal + $machine->succeed("su - alice -c '${bus} gnome-terminal'"); + # and check it's there + $machine->waitUntilSucceeds("su - alice -c '${wmClass} | grep -q gnome-terminal-server'"); # wait to get a nice screenshot $machine->sleep(20); diff --git a/nixos/tests/gnome3.nix b/nixos/tests/gnome3.nix index 3f0368592b8..95694ea4828 100644 --- a/nixos/tests/gnome3.nix +++ b/nixos/tests/gnome3.nix @@ -16,7 +16,7 @@ import ./make-test.nix ({ pkgs, ...} : { services.xserver.displayManager.lightdm.autoLogin.enable = true; services.xserver.displayManager.lightdm.autoLogin.user = "alice"; services.xserver.desktopManager.gnome3.enable = true; - services.xserver.desktopManager.default = "gnome"; + services.xserver.desktopManager.default = "gnome-xorg"; virtualisation.memorySize = 1024; }; @@ -33,7 +33,7 @@ import ./make-test.nix ({ pkgs, ...} : { $machine->succeed("su - alice -c 'DISPLAY=:0.0 gnome-terminal &'"); $machine->succeed("xauth merge ~alice/.Xauthority"); - $machine->waitForWindow(qr/Terminal/); + $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"); diff --git a/nixos/tests/google-oslogin/default.nix b/nixos/tests/google-oslogin/default.nix new file mode 100644 index 00000000000..3b84bba3f98 --- /dev/null +++ b/nixos/tests/google-oslogin/default.nix @@ -0,0 +1,52 @@ +import ../make-test.nix ({ pkgs, ... } : +let + inherit (import ./../ssh-keys.nix pkgs) + snakeOilPrivateKey snakeOilPublicKey; +in { + name = "google-oslogin"; + meta = with pkgs.stdenv.lib.maintainers; { + maintainers = [ adisbladis flokli ]; + }; + + nodes = { + # the server provides both the the mocked google metadata server and the ssh server + server = (import ./server.nix pkgs); + + client = { ... }: {}; + }; + testScript = '' + startAll; + + $server->waitForUnit("mock-google-metadata.service"); + $server->waitForOpenPort(80); + + # mockserver should return a non-expired ssh key for both mockuser and mockadmin + $server->succeed('${pkgs.google-compute-engine-oslogin}/bin/google_authorized_keys mockuser | grep -q "${snakeOilPublicKey}"'); + $server->succeed('${pkgs.google-compute-engine-oslogin}/bin/google_authorized_keys mockadmin | grep -q "${snakeOilPublicKey}"'); + + # install snakeoil ssh key on the client + $client->succeed("mkdir -p ~/.ssh"); + $client->succeed("cat ${snakeOilPrivateKey} > ~/.ssh/id_snakeoil"); + $client->succeed("chmod 600 ~/.ssh/id_snakeoil"); + + $client->waitForUnit("network.target"); + $server->waitForUnit("sshd.service"); + + # we should not be able to connect as non-existing user + $client->fail("ssh -o User=ghost -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no server -i ~/.ssh/id_snakeoil 'true'"); + + # we should be able to connect as mockuser + $client->succeed("ssh -o User=mockuser -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no server -i ~/.ssh/id_snakeoil 'true'"); + # but we shouldn't be able to sudo + $client->fail("ssh -o User=mockuser -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no server -i ~/.ssh/id_snakeoil '/run/wrappers/bin/sudo /run/current-system/sw/bin/id' | grep -q 'root'"); + + # we should also be able to log in as mockadmin + $client->succeed("ssh -o User=mockadmin -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no server -i ~/.ssh/id_snakeoil 'true'"); + # pam_oslogin_admin.so should now have generated a sudoers file + $server->succeed("find /run/google-sudoers.d | grep -q '/run/google-sudoers.d/mockadmin'"); + + # and we should be able to sudo + $client->succeed("ssh -o User=mockadmin -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no server -i ~/.ssh/id_snakeoil '/run/wrappers/bin/sudo /run/current-system/sw/bin/id' | grep -q 'root'"); + ''; + }) + diff --git a/nixos/tests/google-oslogin/server.nix b/nixos/tests/google-oslogin/server.nix new file mode 100644 index 00000000000..fdb7141da31 --- /dev/null +++ b/nixos/tests/google-oslogin/server.nix @@ -0,0 +1,29 @@ +{ pkgs, ... }: +let + inherit (import ./../ssh-keys.nix pkgs) + snakeOilPrivateKey snakeOilPublicKey; +in { + networking.firewall.allowedTCPPorts = [ 80 ]; + + systemd.services.mock-google-metadata = { + description = "Mock Google metadata service"; + serviceConfig.Type = "simple"; + serviceConfig.ExecStart = "${pkgs.python3}/bin/python ${./server.py}"; + environment = { + SNAKEOIL_PUBLIC_KEY = snakeOilPublicKey; + }; + wantedBy = [ "multi-user.target" ]; + after = [ "network.target" ]; + }; + + services.openssh.enable = true; + services.openssh.challengeResponseAuthentication = false; + services.openssh.passwordAuthentication = false; + + security.googleOsLogin.enable = true; + + # Mock google service + networking.extraHosts = '' + 127.0.0.1 metadata.google.internal + ''; +} diff --git a/nixos/tests/google-oslogin/server.py b/nixos/tests/google-oslogin/server.py new file mode 100644 index 00000000000..bfc527cb97d --- /dev/null +++ b/nixos/tests/google-oslogin/server.py @@ -0,0 +1,96 @@ +#!/usr/bin/env python3 +import json +import sys +import time +import os +import hashlib +import base64 + +from http.server import BaseHTTPRequestHandler, HTTPServer +from typing import Dict + +SNAKEOIL_PUBLIC_KEY = os.environ['SNAKEOIL_PUBLIC_KEY'] + + +def w(msg): + sys.stderr.write(f"{msg}\n") + sys.stderr.flush() + + +def gen_fingerprint(pubkey): + decoded_key = base64.b64decode(pubkey.encode("ascii").split()[1]) + return hashlib.sha256(decoded_key).hexdigest() + +def gen_email(username): + """username seems to be a 21 characters long number string, so mimic that in a reproducible way""" + return str(int(hashlib.sha256(username.encode()).hexdigest(), 16))[0:21] + +def gen_mockuser(username: str, uid: str, gid: str, home_directory: str, snakeoil_pubkey: str) -> Dict: + snakeoil_pubkey_fingerprint = gen_fingerprint(snakeoil_pubkey) + # seems to be a 21 characters long numberstring, so mimic that in a reproducible way + email = gen_email(username) + return { + "loginProfiles": [ + { + "name": email, + "posixAccounts": [ + { + "primary": True, + "username": username, + "uid": uid, + "gid": gid, + "homeDirectory": home_directory, + "operatingSystemType": "LINUX" + } + ], + "sshPublicKeys": { + snakeoil_pubkey_fingerprint: { + "key": snakeoil_pubkey, + "expirationTimeUsec": str((time.time() + 600) * 1000000), # 10 minutes in the future + "fingerprint": snakeoil_pubkey_fingerprint + } + } + } + ] + } + + +class ReqHandler(BaseHTTPRequestHandler): + def _send_json_ok(self, data): + self.send_response(200) + self.send_header('Content-type', 'application/json') + self.end_headers() + out = json.dumps(data).encode() + w(out) + self.wfile.write(out) + + def do_GET(self): + p = str(self.path) + # mockuser and mockadmin are allowed to login, both use the same snakeoil public key + if p == '/computeMetadata/v1/oslogin/users?username=mockuser' \ + or p == '/computeMetadata/v1/oslogin/users?uid=1009719690': + self._send_json_ok(gen_mockuser(username='mockuser', uid='1009719690', gid='1009719690', + home_directory='/home/mockuser', snakeoil_pubkey=SNAKEOIL_PUBLIC_KEY)) + elif p == '/computeMetadata/v1/oslogin/users?username=mockadmin' \ + or p == '/computeMetadata/v1/oslogin/users?uid=1009719691': + self._send_json_ok(gen_mockuser(username='mockadmin', uid='1009719691', gid='1009719691', + home_directory='/home/mockadmin', snakeoil_pubkey=SNAKEOIL_PUBLIC_KEY)) + + # mockuser is allowed to login + elif p == f"/computeMetadata/v1/oslogin/authorize?email={gen_email('mockuser')}&policy=login": + self._send_json_ok({'success': True}) + + # mockadmin may also become root + elif p == f"/computeMetadata/v1/oslogin/authorize?email={gen_email('mockadmin')}&policy=login" or p == f"/computeMetadata/v1/oslogin/authorize?email={gen_email('mockadmin')}&policy=adminLogin": + self._send_json_ok({'success': True}) + else: + sys.stderr.write(f"Unhandled path: {p}\n") + sys.stderr.flush() + self.send_response(501) + self.end_headers() + self.wfile.write(b'') + + +if __name__ == '__main__': + s = HTTPServer(('0.0.0.0', 80), ReqHandler) + s.serve_forever() diff --git a/nixos/tests/handbrake.nix b/nixos/tests/handbrake.nix new file mode 100644 index 00000000000..ae87e1f69a7 --- /dev/null +++ b/nixos/tests/handbrake.nix @@ -0,0 +1,25 @@ +import ./make-test.nix ({ pkgs, ... }: +let + # Download Big Buck Bunny example, licensed under CC Attribution 3.0. + testMkv = pkgs.fetchurl { + url = "https://github.com/Matroska-Org/matroska-test-files/blob/cf0792be144ac470c4b8052cfe19bb691993e3a2/test_files/test1.mkv?raw=true"; + sha256 = "1hfxbbgxwfkzv85pvpvx55a72qsd0hxjbm9hkl5r3590zw4s75h9"; + }; +in { + name = "handbrake"; + + meta = { + maintainers = with pkgs.stdenv.lib.maintainers; [ danieldk ]; + }; + + machine = { pkgs, ... }: { + environment.systemPackages = with pkgs; [ handbrake ]; + }; + + testScript = '' + # Test MP4 and MKV transcoding. Since this is a short clip, transcoding typically + # only takes a few seconds. + $machine->succeed("HandBrakeCLI -i ${testMkv} -o test.mp4 -e x264 -q 20 -B 160"); + $machine->succeed("HandBrakeCLI -i ${testMkv} -o test.mkv -e x264 -q 20 -B 160"); + ''; +}) diff --git a/nixos/tests/hardened.nix b/nixos/tests/hardened.nix index 2700b8e5935..07bd10963ba 100644 --- a/nixos/tests/hardened.nix +++ b/nixos/tests/hardened.nix @@ -5,11 +5,12 @@ import ./make-test.nix ({ pkgs, ...} : { }; machine = - { lib, pkgs, ... }: + { lib, pkgs, config, ... }: with lib; { users.users.alice = { isNormalUser = true; extraGroups = [ "proc" ]; }; users.users.sybil = { isNormalUser = true; group = "wheel"; }; imports = [ ../modules/profiles/hardened.nix ]; + nix.useSandbox = false; virtualisation.emptyDiskImages = [ 4096 ]; boot.initrd.postDeviceCommands = '' ${pkgs.dosfstools}/bin/mkfs.vfat -n EFISYS /dev/vdb @@ -21,12 +22,19 @@ import ./make-test.nix ({ pkgs, ...} : { options = [ "noauto" ]; }; }; + boot.extraModulePackages = [ config.boot.kernelPackages.wireguard ]; + boot.kernelModules = [ "wireguard" ]; }; testScript = '' $machine->waitForUnit("multi-user.target"); + # Test loading out-of-tree modules + subtest "extra-module-packages", sub { + $machine->succeed("grep -Fq wireguard /proc/modules"); + }; + # Test hidepid subtest "hidepid", sub { $machine->succeed("grep -Fq hidepid=2 /proc/mounts"); @@ -63,5 +71,17 @@ import ./make-test.nix ({ pkgs, ...} : { $machine->succeed("mount /dev/disk/by-label/EFISYS /efi"); $machine->succeed("mountpoint -q /efi"); # now mounted }; + + # Test Nix dæmon usage + subtest "nix-daemon", sub { + $machine->fail("su -l nobody -s /bin/sh -c 'nix ping-store'"); + $machine->succeed("su -l alice -c 'nix ping-store'") =~ "OK"; + }; + + # Test kernel image protection + subtest "kernelimage", sub { + $machine->fail("systemctl hibernate"); + $machine->fail("systemctl kexec"); + }; ''; }) diff --git a/nixos/tests/home-assistant.nix b/nixos/tests/home-assistant.nix index 2d74b59bca4..73c1e71eb51 100644 --- a/nixos/tests/home-assistant.nix +++ b/nixos/tests/home-assistant.nix @@ -4,6 +4,7 @@ let configDir = "/var/lib/foobar"; apiPassword = "some_secret"; mqttPassword = "another_secret"; + hassCli = "hass-cli --server http://hass:8123 --password '${apiPassword}'"; in { name = "home-assistant"; @@ -16,7 +17,7 @@ in { { pkgs, ... }: { environment.systemPackages = with pkgs; [ - mosquitto + mosquitto home-assistant-cli ]; services.home-assistant = { inherit configDir; @@ -31,6 +32,9 @@ in { latitude = "0.0"; longitude = "0.0"; elevation = 0; + auth_providers = [ + { type = "legacy_api_password"; } + ]; }; frontend = { }; http.api_password = apiPassword; @@ -68,13 +72,17 @@ in { $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} entity get binary_sensor.mqtt_binary_sensor | grep -qF '\"state\": \"on\"'"); + $hass->succeed("${hassCli} entity edit binary_sensor.mqtt_binary_sensor --json='{\"state\": \"off\"}'"); + $hass->succeed("curl http://localhost:8123/api/states/binary_sensor.mqtt_binary_sensor -H 'x-ha-access: ${apiPassword}' | grep -qF '\"state\": \"off\"'"); + # Print log to ease debugging my $log = $hass->succeed("cat ${configDir}/home-assistant.log"); print "\n### home-assistant.log ###\n"; print "$log\n"; # Check that no errors were logged - # The timer can get out of sync due to Hydra's load, so this error is ignored - $hass->fail("cat ${configDir}/home-assistant.log | grep -vF 'Timer got out of sync' | grep -qF ERROR"); + $hass->fail("cat ${configDir}/home-assistant.log | grep -qF ERROR"); ''; }) diff --git a/nixos/tests/hydra/create-trivial-project.sh b/nixos/tests/hydra/create-trivial-project.sh index 3cca5665acc..39122c9b473 100755 --- a/nixos/tests/hydra/create-trivial-project.sh +++ b/nixos/tests/hydra/create-trivial-project.sh @@ -31,7 +31,8 @@ mycurl -X POST -d '@data.json' $URL/login -c hydra-cookie.txt cat >data.json <waitForFile("/home/alice/.config/i3/config"); $machine->sleep(2); $machine->sendKeys("alt-ret"); - $machine->waitForWindow(qr/machine.*alice/); + $machine->waitForWindow(qr/alice.*machine/); $machine->sleep(2); $machine->screenshot("terminal"); ''; diff --git a/nixos/tests/incron.nix b/nixos/tests/incron.nix new file mode 100644 index 00000000000..e39bbb5f096 --- /dev/null +++ b/nixos/tests/incron.nix @@ -0,0 +1,52 @@ +import ./make-test.nix ({ pkgs, lib, ... }: + +{ + name = "incron"; + meta.maintainers = [ lib.maintainers.aanderse ]; + + machine = + { ... }: + { services.incron.enable = true; + services.incron.extraPackages = [ pkgs.coreutils ]; + services.incron.systab = '' + /test IN_CREATE,IN_MODIFY,IN_CLOSE_WRITE,IN_MOVED_FROM,IN_MOVED_TO echo "$@/$# $%" >> /root/incron.log + ''; + + # ensure the directory to be monitored exists before incron is started + system.activationScripts.incronTest = '' + mkdir /test + ''; + }; + + testScript = '' + startAll; + + $machine->waitForUnit("multi-user.target"); + $machine->waitForUnit("incron.service"); + + $machine->succeed("test -d /test"); + # create some activity for incron to monitor + $machine->succeed("touch /test/file"); + $machine->succeed("echo foo >> /test/file"); + $machine->succeed("mv /test/file /root"); + $machine->succeed("mv /root/file /test"); + + $machine->sleep(1); + + # touch /test/file + $machine->succeed("grep '/test/file IN_CREATE' /root/incron.log"); + + # echo foo >> /test/file + $machine->succeed("grep '/test/file IN_MODIFY' /root/incron.log"); + $machine->succeed("grep '/test/file IN_CLOSE_WRITE' /root/incron.log"); + + # mv /test/file /root + $machine->succeed("grep '/test/file IN_MOVED_FROM' /root/incron.log"); + + # mv /root/file /test + $machine->succeed("grep '/test/file IN_MOVED_TO' /root/incron.log"); + + # ensure something unexpected is not present + $machine->fail("grep 'IN_OPEN' /root/incron.log"); + ''; +}) diff --git a/nixos/tests/installer.nix b/nixos/tests/installer.nix index 3f9fa0e6016..c8edaaba158 100644 --- a/nixos/tests/installer.nix +++ b/nixos/tests/installer.nix @@ -1,6 +1,9 @@ -{ system ? builtins.currentSystem }: +{ system ? builtins.currentSystem, + config ? {}, + pkgs ? import ../.. { inherit system config; } +}: -with import ../lib/testing.nix { inherit system; }; +with import ../lib/testing.nix { inherit system pkgs; }; with pkgs.lib; let @@ -478,7 +481,7 @@ in { # Test whether opening encrypted filesystem with keyfile # Checks for regression of missing cryptsetup, when no luks device without # keyfile is configured - filesystemEncryptedWithKeyfile = makeInstallerTest "filesystemEncryptedWithKeyfile" + encryptedFSWithKeyfile = makeInstallerTest "encryptedFSWithKeyfile" { createPartitions = '' $machine->succeed( "flock /dev/vda parted --script /dev/vda -- mklabel msdos" diff --git a/nixos/tests/jackett.nix b/nixos/tests/jackett.nix new file mode 100644 index 00000000000..399a0c27232 --- /dev/null +++ b/nixos/tests/jackett.nix @@ -0,0 +1,18 @@ +import ./make-test.nix ({ lib, ... }: + +with lib; + +rec { + name = "jackett"; + meta.maintainers = with maintainers; [ etu ]; + + nodes.machine = + { pkgs, ... }: + { services.jackett.enable = true; }; + + testScript = '' + $machine->waitForUnit('jackett.service'); + $machine->waitForOpenPort('9117'); + $machine->succeed("curl --fail http://localhost:9117/"); + ''; +}) diff --git a/nixos/tests/kafka.nix b/nixos/tests/kafka.nix index c9fd74620ef..72f91f6428a 100644 --- a/nixos/tests/kafka.nix +++ b/nixos/tests/kafka.nix @@ -1,5 +1,9 @@ -{ system ? builtins.currentSystem }: -with import ../lib/testing.nix { inherit system; }; +{ system ? builtins.currentSystem, + config ? {}, + pkgs ? import ../.. { inherit system config; } +}: + +with import ../lib/testing.nix { inherit system pkgs; }; with pkgs.lib; let @@ -36,7 +40,7 @@ let networking.firewall.allowedTCPPorts = [ 9092 ]; # i686 tests: qemu-system-i386 can simulate max 2047MB RAM (not 2048) - virtualisation.memorySize = 2047; + virtualisation.memorySize = 2047; }; }; @@ -66,4 +70,6 @@ in with pkgs; { kafka_0_11 = makeKafkaTest "kafka_0_11" apacheKafka_0_11; kafka_1_0 = makeKafkaTest "kafka_1_0" apacheKafka_1_0; kafka_1_1 = makeKafkaTest "kafka_1_1" apacheKafka_1_1; + kafka_2_0 = makeKafkaTest "kafka_2_0" apacheKafka_2_0; + kafka_2_1 = makeKafkaTest "kafka_2_1" apacheKafka_2_1; } diff --git a/nixos/tests/kerberos/default.nix b/nixos/tests/kerberos/default.nix new file mode 100644 index 00000000000..f2f1a438918 --- /dev/null +++ b/nixos/tests/kerberos/default.nix @@ -0,0 +1,7 @@ +{ system ? builtins.currentSystem +, pkgs ? import ../../.. { inherit system; } +}: +{ + mit = import ./mit.nix { inherit system pkgs; }; + heimdal = import ./heimdal.nix { inherit system pkgs; }; +} diff --git a/nixos/tests/kerberos/heimdal.nix b/nixos/tests/kerberos/heimdal.nix new file mode 100644 index 00000000000..a0551b131e9 --- /dev/null +++ b/nixos/tests/kerberos/heimdal.nix @@ -0,0 +1,53 @@ +import ../make-test.nix ({pkgs, ...}: { + name = "kerberos_server-heimdal"; + machine = { config, libs, pkgs, ...}: + { services.kerberos_server = + { enable = true; + realms = { + "FOO.BAR".acl = [{principal = "admin"; access = ["add" "cpw"];}]; + }; + }; + krb5 = { + enable = true; + kerberos = pkgs.heimdalFull; + libdefaults = { + default_realm = "FOO.BAR"; + }; + realms = { + "FOO.BAR" = { + admin_server = "machine"; + kdc = "machine"; + }; + }; + }; + }; + + testScript = '' + $machine->start; + + $machine->succeed( + "kadmin -l init --realm-max-ticket-life='8 day' \\ + --realm-max-renewable-life='10 day' FOO.BAR" + ); + + $machine->succeed("systemctl restart kadmind.service kdc.service"); + $machine->waitForUnit("kadmind.service"); + $machine->waitForUnit("kdc.service"); + $machine->waitForUnit("kpasswdd.service"); + + $machine->succeed( + "kadmin -l add --password=admin_pw --use-defaults admin" + ); + $machine->succeed( + "kadmin -l ext_keytab --keytab=admin.keytab admin" + ); + $machine->succeed( + "kadmin -p admin -K admin.keytab add --password=alice_pw --use-defaults \\ + alice" + ); + $machine->succeed( + "kadmin -l ext_keytab --keytab=alice.keytab alice" + ); + $machine->succeed("kinit -kt alice.keytab alice"); + ''; +}) diff --git a/nixos/tests/kerberos/mit.nix b/nixos/tests/kerberos/mit.nix new file mode 100644 index 00000000000..6da3a384aa9 --- /dev/null +++ b/nixos/tests/kerberos/mit.nix @@ -0,0 +1,45 @@ +import ../make-test.nix ({pkgs, ...}: { + name = "kerberos_server-mit"; + machine = { config, libs, pkgs, ...}: + { services.kerberos_server = + { enable = true; + realms = { + "FOO.BAR".acl = [{principal = "admin"; access = ["add" "cpw"];}]; + }; + }; + krb5 = { + enable = true; + kerberos = pkgs.krb5Full; + libdefaults = { + default_realm = "FOO.BAR"; + }; + realms = { + "FOO.BAR" = { + admin_server = "machine"; + kdc = "machine"; + }; + }; + }; + users.extraUsers.alice = { isNormalUser = true; }; + }; + + testScript = '' + $machine->start; + + $machine->succeed( + "kdb5_util create -s -r FOO.BAR -P master_key" + ); + + $machine->succeed("systemctl restart kadmind.service kdc.service"); + $machine->waitForUnit("kadmind.service"); + $machine->waitForUnit("kdc.service"); + + $machine->succeed( + "kadmin.local add_principal -pw admin_pw admin" + ); + $machine->succeed( + "kadmin -p admin -w admin_pw addprinc -pw alice_pw alice" + ); + $machine->succeed("echo alice_pw | sudo -u alice kinit"); + ''; +}) diff --git a/nixos/tests/keymap.nix b/nixos/tests/keymap.nix index be880388314..2b4c1ab7b05 100644 --- a/nixos/tests/keymap.nix +++ b/nixos/tests/keymap.nix @@ -1,6 +1,9 @@ -{ system ? builtins.currentSystem }: +{ system ? builtins.currentSystem, + config ? {}, + pkgs ? import ../.. { inherit system config; } +}: -with import ../lib/testing.nix { inherit system; }; +with import ../lib/testing.nix { inherit system pkgs; }; let readyFile = "/tmp/readerReady"; @@ -96,7 +99,7 @@ in pkgs.lib.mapAttrs mkKeyboardTest { homerow.expect = [ "a" "r" "s" "t" "n" "e" "i" "o" ]; }; - extraConfig.i18n.consoleKeyMap = "en-latin9"; + extraConfig.i18n.consoleKeyMap = "colemak/colemak"; extraConfig.services.xserver.layout = "us"; extraConfig.services.xserver.xkbVariant = "colemak"; }; diff --git a/nixos/tests/kubernetes/base.nix b/nixos/tests/kubernetes/base.nix index e4bc5b326d3..9d77be13175 100644 --- a/nixos/tests/kubernetes/base.nix +++ b/nixos/tests/kubernetes/base.nix @@ -1,6 +1,9 @@ -{ system ? builtins.currentSystem }: +{ system ? builtins.currentSystem, + config ? {}, + pkgs ? import ../../.. { inherit system config; } +}: -with import ../../lib/testing.nix { inherit system; }; +with import ../../lib/testing.nix { inherit system pkgs; }; with pkgs.lib; let diff --git a/nixos/tests/kubernetes/dns.nix b/nixos/tests/kubernetes/dns.nix index 30e1acd255a..f25ea5b9ed8 100644 --- a/nixos/tests/kubernetes/dns.nix +++ b/nixos/tests/kubernetes/dns.nix @@ -87,7 +87,7 @@ let # check if pods are running $machine1->waitUntilSucceeds("kubectl get pod redis | grep Running"); $machine1->waitUntilSucceeds("kubectl get pod probe | grep Running"); - $machine1->waitUntilSucceeds("kubectl get pods -n kube-system | grep 'kube-dns.*3/3'"); + $machine1->waitUntilSucceeds("kubectl get pods -n kube-system | grep 'coredns.*1/1'"); # check dns on host (dnsmasq) $machine1->succeed("host redis.default.svc.cluster.local"); @@ -111,7 +111,7 @@ let # check if pods are running $machine1->waitUntilSucceeds("kubectl get pod redis | grep Running"); $machine1->waitUntilSucceeds("kubectl get pod probe | grep Running"); - $machine1->waitUntilSucceeds("kubectl get pods -n kube-system | grep 'kube-dns.*3/3'"); + $machine1->waitUntilSucceeds("kubectl get pods -n kube-system | grep 'coredns.*1/1'"); # check dns on hosts (dnsmasq) $machine1->succeed("host redis.default.svc.cluster.local"); diff --git a/nixos/tests/kubernetes/kubernetes-common.nix b/nixos/tests/kubernetes/kubernetes-common.nix index 125c176f113..87c65b88365 100644 --- a/nixos/tests/kubernetes/kubernetes-common.nix +++ b/nixos/tests/kubernetes/kubernetes-common.nix @@ -3,7 +3,6 @@ with pkgs.lib; let base = { inherit roles; - featureGates = ["AllAlpha"]; flannel.enable = true; addons.dashboard.enable = true; diff --git a/nixos/tests/lidarr.nix b/nixos/tests/lidarr.nix new file mode 100644 index 00000000000..58bf82503f8 --- /dev/null +++ b/nixos/tests/lidarr.nix @@ -0,0 +1,18 @@ +import ./make-test.nix ({ lib, ... }: + +with lib; + +rec { + name = "lidarr"; + meta.maintainers = with maintainers; [ etu ]; + + nodes.machine = + { pkgs, ... }: + { services.lidarr.enable = true; }; + + testScript = '' + $machine->waitForUnit('lidarr.service'); + $machine->waitForOpenPort('8686'); + $machine->succeed("curl --fail http://localhost:8686/"); + ''; +}) diff --git a/nixos/tests/make-test.nix b/nixos/tests/make-test.nix index ee4ba310ad5..cee5da93454 100644 --- a/nixos/tests/make-test.nix +++ b/nixos/tests/make-test.nix @@ -1,5 +1,9 @@ -f: { system ? builtins.currentSystem, ... } @ args: +f: { + system ? builtins.currentSystem, + pkgs ? import ../.. { inherit system; config = {}; }, + ... +} @ args: -with import ../lib/testing.nix { inherit system; }; +with import ../lib/testing.nix { inherit system pkgs; }; makeTest (if pkgs.lib.isFunction f then f (args // { inherit pkgs; inherit (pkgs) lib; }) else f) diff --git a/nixos/tests/mxisd.nix b/nixos/tests/mxisd.nix new file mode 100644 index 00000000000..3d03a5a53e3 --- /dev/null +++ b/nixos/tests/mxisd.nix @@ -0,0 +1,21 @@ +import ./make-test.nix ({ pkgs, ... } : { + + name = "mxisd"; + meta = with pkgs.stdenv.lib.maintainers; { + maintainers = [ mguentner ]; + }; + + nodes = { + server_mxisd = args : { + services.mxisd.enable = true; + services.mxisd.matrix.domain = "example.org"; + }; + }; + + testScript = '' + startAll; + $server_mxisd->waitForUnit("mxisd.service"); + $server_mxisd->waitForOpenPort(8090); + $server_mxisd->succeed("curl -Ssf \"http://127.0.0.1:8090/_matrix/identity/api/v1\"") + ''; +}) diff --git a/nixos/tests/nat.nix b/nixos/tests/nat.nix index 9c280fe8b5b..04b4f0f045f 100644 --- a/nixos/tests/nat.nix +++ b/nixos/tests/nat.nix @@ -11,7 +11,6 @@ import ./make-test.nix ({ pkgs, lib, withFirewall, withConntrackHelpers ? false, lib.mkMerge [ { virtualisation.vlans = [ 2 1 ]; networking.firewall.enable = withFirewall; - networking.firewall.allowPing = true; networking.nat.internalIPs = [ "192.168.1.0/24" ]; networking.nat.externalInterface = "eth1"; } @@ -33,7 +32,6 @@ import ./make-test.nix ({ pkgs, lib, withFirewall, withConntrackHelpers ? false, { pkgs, nodes, ... }: lib.mkMerge [ { virtualisation.vlans = [ 1 ]; - networking.firewall.allowPing = true; networking.defaultGateway = (pkgs.lib.head nodes.router.config.networking.interfaces.eth2.ipv4.addresses).address; } diff --git a/nixos/tests/networking.nix b/nixos/tests/networking.nix index 87a8c4c0e19..e689eadf1dd 100644 --- a/nixos/tests/networking.nix +++ b/nixos/tests/networking.nix @@ -1,8 +1,10 @@ { system ? builtins.currentSystem +, config ? {} +, pkgs ? import ../.. { inherit system config; } # bool: whether to use networkd in the tests , networkd }: -with import ../lib/testing.nix { inherit system; }; +with import ../lib/testing.nix { inherit system pkgs; }; with pkgs.lib; let @@ -17,7 +19,6 @@ let networking = { useDHCP = false; useNetworkd = networkd; - firewall.allowPing = true; firewall.checkReversePath = true; firewall.allowedUDPPorts = [ 547 ]; interfaces = mkOverride 0 (listToAttrs (flip map vlanIfs (n: @@ -86,7 +87,6 @@ let virtualisation.vlans = [ 1 2 ]; networking = { useNetworkd = networkd; - firewall.allowPing = true; useDHCP = false; defaultGateway = "192.168.1.1"; interfaces.eth1.ipv4.addresses = mkOverride 0 [ @@ -139,7 +139,6 @@ let virtualisation.vlans = [ 1 2 ]; networking = { useNetworkd = networkd; - firewall.allowPing = true; useDHCP = true; interfaces.eth1 = { ipv4.addresses = mkOverride 0 [ ]; @@ -194,7 +193,6 @@ let virtualisation.vlans = [ 1 2 ]; networking = { useNetworkd = networkd; - firewall.allowPing = true; useDHCP = false; interfaces.eth1 = { ipv4.addresses = mkOverride 0 [ ]; @@ -234,7 +232,6 @@ let virtualisation.vlans = [ 1 2 ]; networking = { useNetworkd = networkd; - firewall.allowPing = true; useDHCP = false; bonds.bond = { interfaces = [ "eth1" "eth2" ]; @@ -271,7 +268,6 @@ let virtualisation.vlans = [ vlan ]; networking = { useNetworkd = networkd; - firewall.allowPing = true; useDHCP = false; interfaces.eth1.ipv4.addresses = mkOverride 0 [ { inherit address; prefixLength = 24; } ]; @@ -285,7 +281,6 @@ let virtualisation.vlans = [ 1 2 ]; networking = { useNetworkd = networkd; - firewall.allowPing = true; useDHCP = false; bridges.bridge.interfaces = [ "eth1" "eth2" ]; interfaces.eth1.ipv4.addresses = mkOverride 0 [ ]; @@ -329,7 +324,6 @@ let # reverse path filtering rules for the macvlan interface seem # to be incorrect, causing the test to fail. Disable temporarily. firewall.checkReversePath = false; - firewall.allowPing = true; useDHCP = true; macvlans.macvlan.interface = "eth1"; interfaces.eth1.ipv4.addresses = mkOverride 0 [ ]; @@ -415,7 +409,6 @@ let #virtualisation.vlans = [ 1 ]; networking = { useNetworkd = networkd; - firewall.allowPing = true; useDHCP = false; vlans.vlan = { id = 1; diff --git a/nixos/tests/nextcloud/default.nix b/nixos/tests/nextcloud/default.nix index 66da6794b96..e4c7a70606c 100644 --- a/nixos/tests/nextcloud/default.nix +++ b/nixos/tests/nextcloud/default.nix @@ -1,6 +1,9 @@ -{ system ? builtins.currentSystem }: +{ system ? builtins.currentSystem, + config ? {}, + pkgs ? import ../../.. { inherit system config; } +}: { - basic = import ./basic.nix { inherit system; }; - with-postgresql-and-redis = import ./with-postgresql-and-redis.nix { inherit system; }; - with-mysql-and-memcached = import ./with-mysql-and-memcached.nix { inherit system; }; + basic = import ./basic.nix { inherit system pkgs; }; + with-postgresql-and-redis = import ./with-postgresql-and-redis.nix { inherit system pkgs; }; + with-mysql-and-memcached = import ./with-mysql-and-memcached.nix { inherit system pkgs; }; } diff --git a/nixos/tests/nexus.nix b/nixos/tests/nexus.nix index bf49d2247bd..783c9f5c019 100644 --- a/nixos/tests/nexus.nix +++ b/nixos/tests/nexus.nix @@ -14,7 +14,7 @@ import ./make-test.nix ({ pkgs, ...} : { server = { ... }: { virtualisation.memorySize = 2047; # qemu-system-i386 has a 2047M limit - virtualisation.diskSize = 2048; + virtualisation.diskSize = 8192; services.nexus.enable = true; }; diff --git a/nixos/tests/opensmtpd.nix b/nixos/tests/opensmtpd.nix index 4c0cbca2101..883ad760494 100644 --- a/nixos/tests/opensmtpd.nix +++ b/nixos/tests/opensmtpd.nix @@ -17,11 +17,12 @@ import ./make-test.nix { extraServerArgs = [ "-v" ]; serverConfiguration = '' listen on 0.0.0.0 + action do_relay relay # DO NOT DO THIS IN PRODUCTION! # Setting up authentication requires a certificate which is painful in # a test environment, but THIS WOULD BE DANGEROUS OUTSIDE OF A # WELL-CONTROLLED ENVIRONMENT! - accept from any for any relay + match from any for any action do_relay ''; }; }; @@ -41,8 +42,9 @@ import ./make-test.nix { extraServerArgs = [ "-v" ]; serverConfiguration = '' listen on 0.0.0.0 - accept from any for local deliver to mda \ + action dovecot_deliver mda \ "${pkgs.dovecot}/libexec/dovecot/deliver -d %{user.username}" + match from any for local action dovecot_deliver ''; }; services.dovecot2 = { @@ -118,4 +120,6 @@ import ./make-test.nix { $smtp2->waitUntilFails('smtpctl show queue | egrep .'); $client->succeed('check-mail-landed >&2'); ''; + + meta.timeout = 30; } diff --git a/nixos/tests/owncloud.nix b/nixos/tests/owncloud.nix deleted file mode 100644 index c968569f200..00000000000 --- a/nixos/tests/owncloud.nix +++ /dev/null @@ -1,39 +0,0 @@ -import ./make-test.nix ({ ... }: - -{ - name = "owncloud"; - nodes = - { web = - { ... }: - { - services.postgresql.enable = true; - services.httpd = { - enable = true; - logPerVirtualHost = true; - adminAddr = "example@example.com"; - virtualHosts = [ - { - hostName = "owncloud"; - extraSubservices = - [ - { - serviceType = "owncloud"; - adminPassword = "secret"; - dbPassword = "secret"; - } - ]; - } - ]; - }; - }; - }; - - testScript = '' - startAll; - - $web->waitForUnit("postgresql"); - $web->waitForUnit("httpd"); - - $web->succeed("curl -L 127.0.0.1:80"); - ''; -}) diff --git a/nixos/tests/plasma5.nix b/nixos/tests/plasma5.nix index eb705536827..788c8719c8d 100644 --- a/nixos/tests/plasma5.nix +++ b/nixos/tests/plasma5.nix @@ -26,31 +26,20 @@ import ./make-test.nix ({ pkgs, ...} : services.xserver.displayManager.sddm.theme = "breeze-ocr-theme"; services.xserver.desktopManager.plasma5.enable = true; services.xserver.desktopManager.default = "plasma5"; + services.xserver.displayManager.sddm.autoLogin = { + enable = true; + user = "alice"; + }; virtualisation.memorySize = 1024; environment.systemPackages = [ sddm_theme ]; - - # fontconfig-penultimate-0.3.3 -> 0.3.4 broke OCR apparently, but no idea why. - nixpkgs.config.packageOverrides = superPkgs: { - fontconfig-penultimate = superPkgs.fontconfig-penultimate.override { - version = "0.3.3"; - sha256 = "1z76jbkb0nhf4w7fy647yyayqr4q02fgk6w58k0yi700p0m3h4c9"; - }; - }; }; - enableOCR = true; - testScript = { nodes, ... }: let user = nodes.machine.config.users.users.alice; xdo = "${pkgs.xdotool}/bin/xdotool"; in '' startAll; - # Wait for display manager to start - $machine->waitForText(qr/${user.description}/); - $machine->screenshot("sddm"); - - # Log in - $machine->sendChars("${user.password}\n"); + # wait for log in $machine->waitForFile("/home/alice/.Xauthority"); $machine->succeed("xauth merge ~alice/.Xauthority"); diff --git a/nixos/tests/postgis.nix b/nixos/tests/postgis.nix index f8b63c5b6a2..49be0672a8e 100644 --- a/nixos/tests/postgis.nix +++ b/nixos/tests/postgis.nix @@ -9,7 +9,7 @@ import ./make-test.nix ({ pkgs, ...} : { { pkgs, ... }: { - services.postgresql = let mypg = pkgs.postgresql100; in { + services.postgresql = let mypg = pkgs.postgresql_11; in { enable = true; package = mypg; extraPlugins = [ (pkgs.postgis.override { postgresql = mypg; }) ]; diff --git a/nixos/tests/postgresql.nix b/nixos/tests/postgresql.nix index f1f09277f34..975ba7f488e 100644 --- a/nixos/tests/postgresql.nix +++ b/nixos/tests/postgresql.nix @@ -1,6 +1,11 @@ -{ system ? builtins.currentSystem }: -with import ../lib/testing.nix { inherit system; }; +{ system ? builtins.currentSystem, + config ? {}, + pkgs ? import ../.. { inherit system config; } +}: + +with import ../lib/testing.nix { inherit system pkgs; }; with pkgs.lib; + let postgresql-versions = pkgs.callPackages ../../pkgs/servers/sql/postgresql { }; test-sql = pkgs.writeText "postgresql-test" '' @@ -16,7 +21,7 @@ let CREATE TABLE xmltest ( doc xml ); INSERT INTO xmltest (doc) VALUES ('ok'); -- check if libxml2 enabled ''; - make-postgresql-test = postgresql-name: postgresql-package: makeTest { + make-postgresql-test = postgresql-name: postgresql-package: backup-all: makeTest { name = postgresql-name; meta = with pkgs.stdenv.lib.maintainers; { maintainers = [ zagy ]; @@ -24,14 +29,17 @@ let machine = {...}: { - services.postgresql.package=postgresql-package; + services.postgresql.package = postgresql-package; services.postgresql.enable = true; services.postgresqlBackup.enable = true; - services.postgresqlBackup.databases = [ "postgres" ]; + services.postgresqlBackup.databases = optional (!backup-all) "postgres"; }; - testScript = '' + testScript = let + backupName = if backup-all then "all" else "postgres"; + backupService = if backup-all then "postgresqlBackup" else "postgresqlBackup-postgres"; + in '' sub check_count { my ($select, $nlines) = @_; return 'test $(sudo -u postgres psql postgres -tAc "' . $select . '"|wc -l) -eq ' . $nlines; @@ -51,11 +59,20 @@ let $machine->succeed(check_count("SELECT xpath(\'/test/text()\', doc) FROM xmltest;", 1)); # Check backup service - $machine->succeed("systemctl start postgresqlBackup-postgres.service"); - $machine->succeed("zcat /var/backup/postgresql/postgres.sql.gz | grep 'ok'"); + $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"); $machine->shutdown; ''; }; in - mapAttrs' (p-name: p-package: {name=p-name; value=make-postgresql-test p-name p-package;}) postgresql-versions + (mapAttrs' (name: package: { inherit name; value=make-postgresql-test name package false;}) postgresql-versions) // ( + # just pick one version for the dump all test + let + first = head (attrNames postgresql-versions); + name = "${first}-backup-all"; + in { + ${name} = make-postgresql-test name postgresql-versions.${first} true; + } + ) diff --git a/nixos/tests/predictable-interface-names.nix b/nixos/tests/predictable-interface-names.nix index 0d73436c1c3..8306abb8c42 100644 --- a/nixos/tests/predictable-interface-names.nix +++ b/nixos/tests/predictable-interface-names.nix @@ -1,7 +1,10 @@ -{ system ? builtins.currentSystem }: +{ system ? builtins.currentSystem, + config ? {}, + pkgs ? import ../.. { inherit system config; } +}: let - inherit (import ../lib/testing.nix { inherit system; }) makeTest pkgs; + inherit (import ../lib/testing.nix { inherit system pkgs; }) makeTest; in pkgs.lib.listToAttrs (pkgs.lib.crossLists (predictable: withNetworkd: { name = pkgs.lib.optionalString (!predictable) "un" + "predictable" + pkgs.lib.optionalString withNetworkd "Networkd"; diff --git a/nixos/tests/prometheus-exporters.nix b/nixos/tests/prometheus-exporters.nix new file mode 100644 index 00000000000..140687a8182 --- /dev/null +++ b/nixos/tests/prometheus-exporters.nix @@ -0,0 +1,335 @@ +import ./make-test.nix ({ lib, pkgs, ... }: +let + escape' = str: lib.replaceChars [''"'' "$" "\n"] [''\\\"'' "\\$" ""] str; + +/* + * The attrset `exporterTests` contains one attribute + * for each exporter test. Each of these attributes + * is expected to be an attrset containing: + * + * `exporterConfig`: + * this attribute set contains config for the exporter itself + * + * `exporterTest` + * this attribute set contains test instructions + * + * `metricProvider` (optional) + * this attribute contains additional machine config + * + * Example: + * exporterTests. = { + * exporterConfig = { + * enable = true; + * }; + * metricProvider = { + * services..enable = true; + * }; + * exporterTest = '' + * waitForUnit("prometheus--exporter.service"); + * waitForOpenPort("1234"); + * succeed("curl -sSf 'localhost:1234/metrics'"); + * ''; + * }; + * + * # this would generate the following test config: + * + * nodes. = { + * services.prometheus. = { + * enable = true; + * }; + * services..enable = true; + * }; + * + * testScript = '' + * $->start(); + * $->waitForUnit("prometheus--exporter.service"); + * $->waitForOpenPort("1234"); + * $->succeed("curl -sSf 'localhost:1234/metrics'"); + * $->shutdown(); + * ''; + */ + + exporterTests = { + + blackbox = { + exporterConfig = { + enable = true; + configFile = pkgs.writeText "config.yml" (builtins.toJSON { + modules.icmp_v6 = { + prober = "icmp"; + icmp.preferred_ip_protocol = "ip6"; + }; + }); + }; + exporterTest = '' + waitForUnit("prometheus-blackbox-exporter.service"); + waitForOpenPort(9115); + succeed("curl -sSf 'http://localhost:9115/probe?target=localhost&module=icmp_v6' | grep -q 'probe_success 1'"); + ''; + }; + + collectd = { + exporterConfig = { + enable = true; + extraFlags = [ "--web.collectd-push-path /collectd" ]; + }; + exporterTest =let postData = escape' '' + [{ + "values":[23], + "dstypes":["gauge"], + "type":"gauge", + "interval":1000, + "host":"testhost", + "plugin":"testplugin", + "time":$(date +%s) + }] + ''; in '' + waitForUnit("prometheus-collectd-exporter.service"); + waitForOpenPort(9103); + succeed("curl -sSfH 'Content-Type: application/json' -X POST --data \"${postData}\" localhost:9103/collectd"); + succeed("curl -sSf localhost:9103/metrics | grep -q 'collectd_testplugin_gauge{instance=\"testhost\"} 23'"); + ''; + }; + + dnsmasq = { + exporterConfig = { + enable = true; + leasesPath = "/var/lib/dnsmasq/dnsmasq.leases"; + }; + metricProvider = { + services.dnsmasq.enable = true; + }; + exporterTest = '' + waitForUnit("prometheus-dnsmasq-exporter.service"); + waitForOpenPort(9153); + succeed("curl -sSf http://localhost:9153/metrics | grep -q 'dnsmasq_leases 0'"); + ''; + }; + + bind = { + exporterConfig = { + enable = true; + }; + metricProvider = { + services.bind.enable = true; + services.bind.extraConfig = '' + statistics-channels { + inet 127.0.0.1 port 8053 allow { localhost; }; + }; + ''; + }; + exporterTest = '' + waitForUnit("prometheus-bind-exporter.service"); + waitForOpenPort(9119); + succeed("curl -sSf http://localhost:9119/metrics" | grep -q 'bind_query_recursions_total 0'); + ''; + }; + + dovecot = { + exporterConfig = { + enable = true; + scopes = [ "global" ]; + socketPath = "/var/run/dovecot2/old-stats"; + user = "root"; # <- don't use user root in production + }; + metricProvider = { + services.dovecot2.enable = true; + }; + exporterTest = '' + waitForUnit("prometheus-dovecot-exporter.service"); + waitForOpenPort(9166); + succeed("curl -sSf http://localhost:9166/metrics | grep -q 'dovecot_up{scope=\"global\"} 1'"); + ''; + }; + + fritzbox = { # TODO add proper test case + exporterConfig = { + enable = true; + }; + exporterTest = '' + waitForUnit("prometheus-fritzbox-exporter.service"); + waitForOpenPort(9133); + succeed("curl -sSf http://localhost:9133/metrics | grep -q 'fritzbox_exporter_collect_errors 0'"); + ''; + }; + + json = { + exporterConfig = { + enable = true; + url = "http://localhost"; + configFile = pkgs.writeText "json-exporter-conf.json" (builtins.toJSON [{ + name = "json_test_metric"; + path = "$.test"; + }]); + }; + metricProvider = { + systemd.services.prometheus-json-exporter.after = [ "nginx.service" ]; + services.nginx = { + enable = true; + virtualHosts.localhost.locations."/".extraConfig = '' + return 200 "{\"test\":1}"; + ''; + }; + }; + exporterTest = '' + waitForUnit("nginx.service"); + waitForOpenPort(80); + waitForUnit("prometheus-json-exporter.service"); + waitForOpenPort(7979); + succeed("curl -sSf localhost:7979/metrics | grep -q 'json_test_metric 1'"); + ''; + }; + + nginx = { + exporterConfig = { + enable = true; + }; + metricProvider = { + services.nginx = { + enable = true; + statusPage = true; + virtualHosts."/".extraConfig = "return 204;"; + }; + }; + exporterTest = '' + waitForUnit("nginx.service") + waitForUnit("prometheus-nginx-exporter.service") + waitForOpenPort(9113) + succeed("curl -sSf http://localhost:9113/metrics | grep -q 'nginx_up 1'") + ''; + }; + + node = { + exporterConfig = { + enable = true; + }; + exporterTest = '' + waitForUnit("prometheus-node-exporter.service"); + waitForOpenPort(9100); + succeed("curl -sSf http://localhost:9100/metrics | grep -q 'node_exporter_build_info{.\\+} 1'"); + ''; + }; + + postfix = { + exporterConfig = { + enable = true; + }; + metricProvider = { + services.postfix.enable = true; + }; + exporterTest = '' + waitForUnit("prometheus-postfix-exporter.service"); + waitForOpenPort(9154); + succeed("curl -sSf http://localhost:9154/metrics | grep -q 'postfix_smtpd_connects_total 0'"); + ''; + }; + + snmp = { + exporterConfig = { + enable = true; + configuration.default = { + version = 2; + auth.community = "public"; + }; + }; + exporterTest = '' + waitForUnit("prometheus-snmp-exporter.service"); + waitForOpenPort(9116); + succeed("curl -sSf localhost:9116/metrics | grep -q 'snmp_request_errors_total 0'"); + ''; + }; + + surfboard = { + exporterConfig = { + enable = true; + modemAddress = "localhost"; + }; + metricProvider = { + systemd.services.prometheus-surfboard-exporter.after = [ "nginx.service" ]; + services.nginx = { + enable = true; + virtualHosts.localhost.locations."/cgi-bin/status".extraConfig = '' + return 204; + ''; + }; + }; + exporterTest = '' + waitForUnit("nginx.service"); + waitForOpenPort(80); + waitForUnit("prometheus-surfboard-exporter.service"); + waitForOpenPort(9239); + succeed("curl -sSf localhost:9239/metrics | grep -q 'surfboard_up 1'"); + ''; + }; + + tor = { + exporterConfig = { + enable = true; + }; + metricProvider = { + # Note: this does not connect the test environment to the Tor network. + # Client, relay, bridge or exit connectivity are disabled by default. + services.tor.enable = true; + services.tor.controlPort = 9051; + }; + exporterTest = '' + waitForUnit("tor.service"); + waitForOpenPort(9051); + waitForUnit("prometheus-tor-exporter.service"); + waitForOpenPort(9130); + succeed("curl -sSf localhost:9130/metrics | grep -q 'tor_version{.\\+} 1'"); + ''; + }; + + varnish = { + exporterConfig = { + enable = true; + instance = "/var/spool/varnish/varnish"; + group = "varnish"; + }; + metricProvider = { + systemd.services.prometheus-varnish-exporter.after = [ + "varnish.service" + ]; + services.varnish = { + enable = true; + config = '' + vcl 4.0; + backend default { + .host = "127.0.0.1"; + .port = "80"; + } + ''; + }; + }; + exporterTest = '' + waitForUnit("prometheus-varnish-exporter.service"); + waitForOpenPort(9131); + succeed("curl -sSf http://localhost:9131/metrics | grep -q 'varnish_up 1'"); + ''; + }; + }; + + nodes = lib.mapAttrs (exporter: testConfig: lib.mkMerge [{ + services.prometheus.exporters.${exporter} = testConfig.exporterConfig; + } testConfig.metricProvider or {}]) exporterTests; + + testScript = lib.concatStrings (lib.mapAttrsToList (exporter: testConfig: ('' + subtest "${exporter}", sub { + ${"$"+exporter}->start(); + ${lib.concatStringsSep " " (map (line: '' + ${"$"+exporter}->${line}; + '') (lib.splitString "\n" (lib.removeSuffix "\n" testConfig.exporterTest)))} + ${"$"+exporter}->shutdown(); + }; + '')) exporterTests); +in +{ + name = "prometheus-exporters"; + + inherit nodes testScript; + + meta = with lib.maintainers; { + maintainers = [ willibutz ]; + }; +}) diff --git a/nixos/tests/prometheus.nix b/nixos/tests/prometheus.nix index 87a6510f40f..f1b20a33d71 100644 --- a/nixos/tests/prometheus.nix +++ b/nixos/tests/prometheus.nix @@ -13,6 +13,25 @@ import ./make-test.nix { }]; }]; rules = [ ''testrule = count(up{job="prometheus"})'' ]; + + # a very simple version of the alertmanager configuration just to see if + # configuration checks & service startup are working + alertmanager = { + enable = true; + listenAddress = "[::1]"; + port = 9093; + configuration = { + route.receiver = "webhook"; + receivers = [ + { + name = "webhook"; + webhook_configs = [ + { url = "http://localhost"; } + ]; + } + ]; + }; + }; }; }; }; @@ -22,5 +41,8 @@ import ./make-test.nix { $one->waitForUnit("prometheus.service"); $one->waitForOpenPort(9090); $one->succeed("curl -s http://127.0.0.1:9090/metrics"); + $one->waitForUnit("alertmanager.service"); + $one->waitForOpenPort("9093"); + $one->succeed("curl -f -s http://localhost:9093/"); ''; } diff --git a/nixos/tests/quagga.nix b/nixos/tests/quagga.nix index 0ff14a21584..6aee7ea57f0 100644 --- a/nixos/tests/quagga.nix +++ b/nixos/tests/quagga.nix @@ -66,7 +66,6 @@ import ./make-test.nix ({ pkgs, ... }: virtualisation.vlans = [ 3 ]; networking.defaultGateway = ifAddr nodes.router2 "eth1"; networking.firewall.allowedTCPPorts = [ 80 ]; - networking.firewall.allowPing = true; services.httpd.enable = true; services.httpd.adminAddr = "foo@example.com"; }; diff --git a/nixos/tests/radarr.nix b/nixos/tests/radarr.nix new file mode 100644 index 00000000000..6b9a909e44b --- /dev/null +++ b/nixos/tests/radarr.nix @@ -0,0 +1,18 @@ +import ./make-test.nix ({ lib, ... }: + +with lib; + +rec { + name = "radarr"; + meta.maintainers = with maintainers; [ etu ]; + + nodes.machine = + { pkgs, ... }: + { services.radarr.enable = true; }; + + testScript = '' + $machine->waitForUnit('radarr.service'); + $machine->waitForOpenPort('7878'); + $machine->succeed("curl --fail http://localhost:7878/"); + ''; +}) diff --git a/nixos/tests/roundcube.nix b/nixos/tests/roundcube.nix new file mode 100644 index 00000000000..178134fd9b3 --- /dev/null +++ b/nixos/tests/roundcube.nix @@ -0,0 +1,28 @@ +import ./make-test.nix ({ pkgs, ...} : { + name = "roundcube"; + meta = with pkgs.stdenv.lib.maintainers; { + maintainers = [ globin ]; + }; + + nodes = { + roundcube = { config, pkgs, ... }: { + services.roundcube = { + enable = true; + hostName = "roundcube"; + database.password = "notproduction"; + }; + services.nginx.virtualHosts.roundcube = { + forceSSL = false; + enableACME = false; + }; + }; + }; + + testScript = '' + $roundcube->start; + $roundcube->waitForUnit("postgresql.service"); + $roundcube->waitForUnit("phpfpm-roundcube.service"); + $roundcube->waitForUnit("nginx.service"); + $roundcube->succeed("curl -sSfL http://roundcube/"); + ''; +}) diff --git a/nixos/tests/rspamd.nix b/nixos/tests/rspamd.nix index a12622b6aa0..396cd5b67d8 100644 --- a/nixos/tests/rspamd.nix +++ b/nixos/tests/rspamd.nix @@ -1,6 +1,11 @@ -{ system ? builtins.currentSystem }: -with import ../lib/testing.nix { inherit system; }; +{ system ? builtins.currentSystem, + config ? {}, + pkgs ? import ../.. { inherit system config; } +}: + +with import ../lib/testing.nix { inherit system pkgs; }; with pkgs.lib; + let initMachine = '' startAll @@ -27,7 +32,9 @@ let $machine->succeed("id \"rspamd\" >/dev/null"); ${checkSocket "/run/rspamd/rspamd.sock" "rspamd" "rspamd" "660" } sleep 10; - $machine->log($machine->succeed("cat /etc/rspamd.conf")); + $machine->log($machine->succeed("cat /etc/rspamd/rspamd.conf")); + $machine->log($machine->succeed("grep 'CONFDIR/worker-controller.inc' /etc/rspamd/rspamd.conf")); + $machine->log($machine->succeed("grep 'CONFDIR/worker-normal.inc' /etc/rspamd/rspamd.conf")); $machine->log($machine->succeed("systemctl cat rspamd.service")); $machine->log($machine->succeed("curl http://localhost:11334/auth")); $machine->log($machine->succeed("curl http://127.0.0.1:11334/auth")); @@ -55,7 +62,9 @@ in $machine->waitForFile("/run/rspamd.sock"); ${checkSocket "/run/rspamd.sock" "root" "root" "600" } ${checkSocket "/run/rspamd-worker.sock" "root" "root" "666" } - $machine->log($machine->succeed("cat /etc/rspamd.conf")); + $machine->log($machine->succeed("cat /etc/rspamd/rspamd.conf")); + $machine->log($machine->succeed("grep 'CONFDIR/worker-controller.inc' /etc/rspamd/rspamd.conf")); + $machine->log($machine->succeed("grep 'CONFDIR/worker-normal.inc' /etc/rspamd/rspamd.conf")); $machine->log($machine->succeed("rspamc -h /run/rspamd-worker.sock stat")); $machine->log($machine->succeed("curl --unix-socket /run/rspamd-worker.sock http://localhost/ping")); ''; @@ -78,6 +87,15 @@ in owner = "root"; group = "root"; }]; + workers.controller2 = { + type = "controller"; + bindSockets = [ "0.0.0.0:11335" ]; + extraConfig = '' + static_dir = "''${WWWDIR}"; + secure_ip = null; + password = "verysecretpassword"; + ''; + }; }; }; @@ -86,9 +104,152 @@ in $machine->waitForFile("/run/rspamd.sock"); ${checkSocket "/run/rspamd.sock" "root" "root" "600" } ${checkSocket "/run/rspamd-worker.sock" "root" "root" "666" } - $machine->log($machine->succeed("cat /etc/rspamd.conf")); + $machine->log($machine->succeed("cat /etc/rspamd/rspamd.conf")); + $machine->log($machine->succeed("grep 'CONFDIR/worker-controller.inc' /etc/rspamd/rspamd.conf")); + $machine->log($machine->succeed("grep 'CONFDIR/worker-normal.inc' /etc/rspamd/rspamd.conf")); + $machine->log($machine->succeed("grep 'LOCAL_CONFDIR/override.d/worker-controller2.inc' /etc/rspamd/rspamd.conf")); + $machine->log($machine->succeed("grep 'verysecretpassword' /etc/rspamd/override.d/worker-controller2.inc")); + $machine->waitUntilSucceeds("journalctl -u rspamd | grep -i 'starting controller process' >&2"); $machine->log($machine->succeed("rspamc -h /run/rspamd-worker.sock stat")); $machine->log($machine->succeed("curl --unix-socket /run/rspamd-worker.sock http://localhost/ping")); + $machine->log($machine->succeed("curl http://localhost:11335/ping")); + ''; + }; + customLuaRules = makeTest { + name = "rspamd-custom-lua-rules"; + machine = { + environment.etc."tests/no-muh.eml".text = '' + From: Sheep1 + To: Sheep2 + Subject: Evil cows + + I find cows to be evil don't you? + ''; + environment.etc."tests/muh.eml".text = '' + From: Cow + To: Sheep2 + Subject: Evil cows + + Cows are majestic creatures don't Muh agree? + ''; + services.rspamd = { + enable = true; + locals = { + "antivirus.conf" = mkIf false { text = '' + clamav { + action = "reject"; + symbol = "CLAM_VIRUS"; + type = "clamav"; + log_clean = true; + servers = "/run/clamav/clamd.ctl"; + } + '';}; + "redis.conf" = { + enable = false; + text = '' + servers = "127.0.0.1"; + ''; + }; + "groups.conf".text = '' + group "cows" { + symbol { + NO_MUH = { + weight = 1.0; + description = "Mails should not muh"; + } + } + } + ''; + }; + localLuaRules = pkgs.writeText "rspamd.local.lua" '' + local rspamd_logger = require "rspamd_logger" + rspamd_config.NO_MUH = { + callback = function (task) + local parts = task:get_text_parts() + if parts then + for _,part in ipairs(parts) do + local content = tostring(part:get_content()) + rspamd_logger.infox(rspamd_config, 'Found content %s', content) + local found = string.find(content, "Muh"); + rspamd_logger.infox(rspamd_config, 'Found muh %s', tostring(found)) + if found then + return true + end + end + end + return false + end, + score = 5.0, + description = 'Allow no cows', + group = "cows", + } + rspamd_logger.infox(rspamd_config, 'Work dammit!!!') + ''; + }; + }; + testScript = '' + ${initMachine} + $machine->waitForOpenPort(11334); + $machine->log($machine->succeed("cat /etc/rspamd/rspamd.conf")); + $machine->log($machine->succeed("cat /etc/rspamd/rspamd.local.lua")); + $machine->log($machine->succeed("cat /etc/rspamd/local.d/groups.conf")); + # Verify that redis.conf was not written + $machine->fail("cat /etc/rspamd/local.d/redis.conf >&2"); + # Verify that antivirus.conf was not written + $machine->fail("cat /etc/rspamd/local.d/antivirus.conf >&2"); + ${checkSocket "/run/rspamd/rspamd.sock" "rspamd" "rspamd" "660" } + $machine->log($machine->succeed("curl --unix-socket /run/rspamd/rspamd.sock http://localhost/ping")); + $machine->log($machine->succeed("rspamc -h 127.0.0.1:11334 stat")); + $machine->log($machine->succeed("cat /etc/tests/no-muh.eml | rspamc -h 127.0.0.1:11334")); + $machine->log($machine->succeed("cat /etc/tests/muh.eml | rspamc -h 127.0.0.1:11334 symbols")); + $machine->waitUntilSucceeds("journalctl -u rspamd | grep -i muh >&2"); + $machine->log($machine->fail("cat /etc/tests/no-muh.eml | rspamc -h 127.0.0.1:11334 symbols | grep NO_MUH")); + $machine->log($machine->succeed("cat /etc/tests/muh.eml | rspamc -h 127.0.0.1:11334 symbols | grep NO_MUH")); + ''; + }; + postfixIntegration = makeTest { + name = "rspamd-postfix-integration"; + machine = { + environment.systemPackages = with pkgs; [ msmtp ]; + environment.etc."tests/gtube.eml".text = '' + From: Sheep1 + To: Sheep2 + Subject: Evil cows + + I find cows to be evil don't you? + + XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X + ''; + environment.etc."tests/example.eml".text = '' + From: Sheep1 + To: Sheep2 + Subject: Evil cows + + I find cows to be evil don't you? + ''; + users.users.tester.password = "test"; + services.postfix = { + enable = true; + destination = ["example.com"]; + }; + services.rspamd = { + enable = true; + postfix.enable = true; + workers.rspamd_proxy.type = "proxy"; + }; + }; + testScript = '' + ${initMachine} + $machine->waitForOpenPort(11334); + $machine->waitForOpenPort(25); + ${checkSocket "/run/rspamd/rspamd-milter.sock" "rspamd" "postfix" "660" } + $machine->log($machine->succeed("rspamc -h 127.0.0.1:11334 stat")); + $machine->log($machine->succeed("msmtp --host=localhost -t --read-envelope-from < /etc/tests/example.eml")); + $machine->log($machine->fail("msmtp --host=localhost -t --read-envelope-from < /etc/tests/gtube.eml")); + + $machine->waitUntilFails('[ "$(postqueue -p)" != "Mail queue is empty" ]'); + $machine->fail("journalctl -u postfix | grep -i error >&2"); + $machine->fail("journalctl -u postfix | grep -i warning >&2"); ''; }; } diff --git a/nixos/tests/rss2email.nix b/nixos/tests/rss2email.nix new file mode 100644 index 00000000000..492d47da9f5 --- /dev/null +++ b/nixos/tests/rss2email.nix @@ -0,0 +1,66 @@ +import ./make-test.nix { + name = "opensmtpd"; + + nodes = { + server = { pkgs, ... }: { + imports = [ common/user-account.nix ]; + services.nginx = { + enable = true; + virtualHosts."127.0.0.1".root = ./common/webroot; + }; + services.rss2email = { + enable = true; + to = "alice@localhost"; + interval = "1"; + config.from = "test@example.org"; + feeds = { + nixos = { url = "http://127.0.0.1/news-rss.xml"; }; + }; + }; + services.opensmtpd = { + enable = true; + extraServerArgs = [ "-v" ]; + serverConfiguration = '' + listen on 127.0.0.1 + action dovecot_deliver mda \ + "${pkgs.dovecot}/libexec/dovecot/deliver -d %{user.username}" + match from any for local action dovecot_deliver + ''; + }; + services.dovecot2 = { + enable = true; + enableImap = true; + mailLocation = "maildir:~/mail"; + protocols = [ "imap" ]; + }; + environment.systemPackages = let + checkMailLanded = pkgs.writeScriptBin "check-mail-landed" '' + #!${pkgs.python3.interpreter} + import imaplib + + with imaplib.IMAP4('127.0.0.1', 143) as imap: + imap.login('alice', 'foobar') + imap.select() + status, refs = imap.search(None, 'ALL') + print("=====> Result of search for all:", status, refs) + assert status == 'OK' + assert len(refs) > 0 + status, msg = imap.fetch(refs[0], 'BODY[TEXT]') + assert status == 'OK' + ''; + in [ pkgs.opensmtpd checkMailLanded ]; + }; + }; + + testScript = '' + startAll; + + $server->waitForUnit("network-online.target"); + $server->waitForUnit("opensmtpd"); + $server->waitForUnit("dovecot2"); + $server->waitForUnit("nginx"); + $server->waitForUnit("rss2email"); + + $server->waitUntilSucceeds('check-mail-landed >&2'); + ''; +} diff --git a/nixos/tests/rsyslogd.nix b/nixos/tests/rsyslogd.nix new file mode 100644 index 00000000000..f17e61814c5 --- /dev/null +++ b/nixos/tests/rsyslogd.nix @@ -0,0 +1,42 @@ +{ system ? builtins.currentSystem, + config ? {}, + pkgs ? import ../.. { inherit system config; } +}: + +with import ../lib/testing.nix { inherit system pkgs; }; +with pkgs.lib; + +{ + test1 = makeTest { + name = "rsyslogd-test1"; + meta.maintainers = [ maintainers.aanderse ]; + + 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"); + ''; + }; + + test2 = makeTest { + name = "rsyslogd-test2"; + meta.maintainers = [ maintainers.aanderse ]; + + 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"); + ''; + }; +} diff --git a/nixos/tests/run-in-machine.nix b/nixos/tests/run-in-machine.nix index bd90dc3080b..339a4b9a740 100644 --- a/nixos/tests/run-in-machine.nix +++ b/nixos/tests/run-in-machine.nix @@ -1,17 +1,23 @@ -{ system ? builtins.currentSystem }: +{ system ? builtins.currentSystem, + config ? {}, + pkgs ? import ../.. { inherit system config; } +}: -with import ../lib/testing.nix { inherit system; }; +with import ../lib/testing.nix { inherit system pkgs; }; let output = runInMachine { drv = pkgs.hello; machine = { ... }: { /* services.sshd.enable = true; */ }; }; -in pkgs.runCommand "verify-output" { inherit output; } '' - if [ ! -e "$output/bin/hello" ]; then - echo "Derivation built using runInMachine produced incorrect output:" >&2 - ls -laR "$output" >&2 - exit 1 - fi - "$output/bin/hello" > "$out" -'' + + test = pkgs.runCommand "verify-output" { inherit output; } '' + if [ ! -e "$output/bin/hello" ]; then + echo "Derivation built using runInMachine produced incorrect output:" >&2 + ls -laR "$output" >&2 + exit 1 + fi + "$output/bin/hello" > "$out" + ''; + +in test // { inherit test; } # To emulate behaviour of makeTest diff --git a/nixos/tests/sddm.nix b/nixos/tests/sddm.nix index 7b9fdc0b344..678bcbeab20 100644 --- a/nixos/tests/sddm.nix +++ b/nixos/tests/sddm.nix @@ -1,6 +1,9 @@ -{ system ? builtins.currentSystem }: +{ system ? builtins.currentSystem, + config ? {}, + pkgs ? import ../.. { inherit system config; } +}: -with import ../lib/testing.nix { inherit system; }; +with import ../lib/testing.nix { inherit system pkgs; }; let inherit (pkgs) lib; diff --git a/nixos/tests/slurm.nix b/nixos/tests/slurm.nix index 60f44c3c845..b4458d8d095 100644 --- a/nixos/tests/slurm.nix +++ b/nixos/tests/slurm.nix @@ -1,22 +1,27 @@ -import ./make-test.nix ({ ... }: -let mungekey = "mungeverryweakkeybuteasytointegratoinatest"; +import ./make-test.nix ({ lib, ... }: +let + mungekey = "mungeverryweakkeybuteasytointegratoinatest"; + slurmconfig = { controlMachine = "control"; - nodeName = '' - control - NodeName=node[1-3] CPUs=1 State=UNKNOWN + nodeName = [ "node[1-3] CPUs=1 State=UNKNOWN" ]; + partitionName = [ "debug Nodes=node[1-3] Default=YES MaxTime=INFINITE State=UP" ]; + extraConfig = '' + AccountingStorageHost=dbd + AccountingStorageType=accounting_storage/slurmdbd ''; - partitionName = "debug Nodes=node[1-3] Default=YES MaxTime=INFINITE State=UP"; }; in { name = "slurm"; + meta.maintainers = [ lib.maintainers.markuskowa ]; + nodes = let computeNode = { ...}: { - # TODO slrumd port and slurmctld port should be configurations and + # TODO slurmd port and slurmctld port should be configurations and # automatically allowed by the firewall. networking.firewall.enable = false; services.slurm = { @@ -43,6 +48,30 @@ in { } // slurmconfig; }; + dbd = + { pkgs, ... } : + { + networking.firewall.enable = false; + services.slurm.dbdserver = { + enable = true; + }; + services.mysql = { + enable = true; + package = pkgs.mysql; + ensureDatabases = [ "slurm_acct_db" ]; + ensureUsers = [{ + ensurePermissions = { "slurm_acct_db.*" = "ALL PRIVILEGES"; }; + name = "slurm"; + }]; + extraOptions = '' + # recommendations from: https://slurm.schedmd.com/accounting.html#mysql-configuration + innodb_buffer_pool_size=1024M + innodb_log_file_size=64M + innodb_lock_wait_timeout=900 + ''; + }; + }; + node1 = computeNode; node2 = computeNode; node3 = computeNode; @@ -54,7 +83,7 @@ in { startAll; # Set up authentification across the cluster - foreach my $node (($submit,$control,$node1,$node2,$node3)) + foreach my $node (($submit,$control,$dbd,$node1,$node2,$node3)) { $node->waitForUnit("default.target"); @@ -63,10 +92,23 @@ in { $node->succeed("chmod 0400 /etc/munge/munge.key"); $node->succeed("chown munge:munge /etc/munge/munge.key"); $node->succeed("systemctl restart munged"); - } + + $node->waitForUnit("munged"); + }; # Restart the services since they have probably failed due to the munge init # failure + subtest "can_start_slurmdbd", sub { + $dbd->succeed("systemctl restart slurmdbd"); + $dbd->waitForUnit("slurmdbd.service"); + $dbd->waitForOpenPort(6819); + }; + + # there needs to be an entry for the current + # cluster in the database before slurmctld is restarted + subtest "add_account", sub { + $control->succeed("sacctmgr -i add cluster default"); + }; subtest "can_start_slurmctld", sub { $control->succeed("systemctl restart slurmctld"); @@ -81,12 +123,17 @@ in { } }; - # Test that the cluster work and can distribute jobs; + # Test that the cluster works and can distribute jobs; subtest "run_distributed_command", sub { # Run `hostname` on 3 nodes of the partition (so on all the 3 nodes). # The output must contain the 3 different names $submit->succeed("srun -N 3 hostname | sort | uniq | wc -l | xargs test 3 -eq"); }; + + subtest "check_slurm_dbd", sub { + # find the srun job from above in the database + $submit->succeed("sacct | grep hostname"); + }; ''; }) diff --git a/nixos/tests/solr.nix b/nixos/tests/solr.nix new file mode 100644 index 00000000000..9ba3863411e --- /dev/null +++ b/nixos/tests/solr.nix @@ -0,0 +1,47 @@ +import ./make-test.nix ({ pkgs, lib, ... }: +{ + name = "solr"; + meta.maintainers = [ lib.maintainers.aanderse ]; + + 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; + }; + + testScript = '' + startAll; + + $machine->waitForUnit('solr.service'); + $machine->waitForOpenPort('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 '{ + "add-field" : { + "name":"name", + "type":"text_general", + "multiValued":false, + "stored":true + }, + "add-field" : { + "name":"initial_release_date", + "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; + ''; +}) diff --git a/nixos/tests/sonarr.nix b/nixos/tests/sonarr.nix new file mode 100644 index 00000000000..3d5c3b19b6e --- /dev/null +++ b/nixos/tests/sonarr.nix @@ -0,0 +1,18 @@ +import ./make-test.nix ({ lib, ... }: + +with lib; + +rec { + name = "sonarr"; + meta.maintainers = with maintainers; [ etu ]; + + nodes.machine = + { pkgs, ... }: + { services.sonarr.enable = true; }; + + testScript = '' + $machine->waitForUnit('sonarr.service'); + $machine->waitForOpenPort('8989'); + $machine->succeed("curl --fail http://localhost:8989/"); + ''; +}) diff --git a/nixos/tests/statsd.nix b/nixos/tests/statsd.nix deleted file mode 100644 index 666961249ce..00000000000 --- a/nixos/tests/statsd.nix +++ /dev/null @@ -1,51 +0,0 @@ -import ./make-test.nix ({ pkgs, lib, ... }: - -with lib; - -{ - name = "statsd"; - meta = with pkgs.stdenv.lib.maintainers; { - maintainers = [ ma27 ]; - }; - - machine = { - services.statsd.enable = true; - services.statsd.backends = [ "statsd-influxdb-backend" "console" ]; - services.statsd.extraConfig = '' - influxdb: { - username: "root", - password: "root", - database: "statsd" - } - ''; - - services.influxdb.enable = true; - - systemd.services.influx-init = { - description = "Setup Influx Test Base"; - after = [ "influxdb.service" ]; - before = [ "statsd.service" ]; - - script = '' - echo "CREATE DATABASE statsd" | ${pkgs.influxdb}/bin/influx - ''; - }; - }; - - testScript = '' - $machine->start(); - $machine->waitForUnit("statsd.service"); - $machine->waitForOpenPort(8126); - - # check state of the `statsd` server - $machine->succeed('[ "health: up" = "$(echo health | nc 127.0.0.1 8126 -w 120 -N)" ];'); - - # confirm basic examples for metrics derived from docs: - # https://github.com/etsy/statsd/blob/v0.8.0/README.md#usage and - # https://github.com/etsy/statsd/blob/v0.8.0/docs/admin_interface.md - $machine->succeed("echo 'foo:1|c' | nc -u -w 0 127.0.0.1 8125"); - $machine->succeed("echo counters | nc -w 120 127.0.0.1 8126 -N | grep foo"); - $machine->succeed("echo 'delcounters foo' | nc -w 120 127.0.0.1 8126 -N"); - $machine->fail("echo counters | nc -w 120 127.0.0.1 8126 -N | grep foo"); - ''; -}) diff --git a/nixos/tests/syncthing-relay.nix b/nixos/tests/syncthing-relay.nix new file mode 100644 index 00000000000..f1ceb499333 --- /dev/null +++ b/nixos/tests/syncthing-relay.nix @@ -0,0 +1,22 @@ +import ./make-test.nix ({ lib, pkgs, ... }: { + name = "syncthing-relay"; + meta.maintainers = with pkgs.stdenv.lib.maintainers; [ delroth ]; + + machine = { + environment.systemPackages = [ pkgs.jq ]; + services.syncthing.relay = { + enable = true; + providedBy = "nixos-test"; + pools = []; # Don't connect to any pool while testing. + port = 12345; + statusPort = 12346; + }; + }; + + testScript = '' + $machine->waitForUnit("syncthing-relay.service"); + $machine->waitForOpenPort(12345); + $machine->waitForOpenPort(12346); + $machine->succeed("curl http://localhost:12346/status | jq -r '.options.\"provided-by\"'") =~ /nixos-test/ or die; + ''; +}) diff --git a/nixos/tests/systemd.nix b/nixos/tests/systemd.nix index 65aa553b314..4d470126abe 100644 --- a/nixos/tests/systemd.nix +++ b/nixos/tests/systemd.nix @@ -56,6 +56,11 @@ import ./make-test.nix { $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'); + }; + # Regression test for https://github.com/NixOS/nixpkgs/issues/35268 subtest "file system with x-initrd.mount is not unmounted", sub { $machine->shutdown; diff --git a/nixos/tests/telegraf.nix b/nixos/tests/telegraf.nix new file mode 100644 index 00000000000..6776f8d8c37 --- /dev/null +++ b/nixos/tests/telegraf.nix @@ -0,0 +1,30 @@ +import ./make-test.nix ({ pkgs, ...} : { + name = "telegraf"; + meta = with pkgs.stdenv.lib.maintainers; { + maintainers = [ mic92 ]; + }; + + machine = { ... }: { + services.telegraf.enable = true; + services.telegraf.extraConfig = { + agent.interval = "1s"; + agent.flush_interval = "1s"; + inputs.exec = { + commands = [ + "${pkgs.runtimeShell} -c 'echo example,tag=a i=42i'" + ]; + timeout = "5s"; + data_format = "influx"; + }; + outputs.file.files = ["/tmp/metrics.out"]; + outputs.file.data_format = "influx"; + }; + }; + + testScript = '' + startAll; + + $machine->waitForUnit("telegraf.service"); + $machine->waitUntilSucceeds("grep -q example /tmp/metrics.out"); + ''; +}) diff --git a/nixos/tests/virtualbox.nix b/nixos/tests/virtualbox.nix index ce84576edca..385e2939fe3 100644 --- a/nixos/tests/virtualbox.nix +++ b/nixos/tests/virtualbox.nix @@ -1,6 +1,11 @@ -{ system ? builtins.currentSystem, debug ? false, enableUnfree ? false }: +{ system ? builtins.currentSystem, + config ? {}, + pkgs ? import ../.. { inherit system config; }, + debug ? false, + enableUnfree ? false +}: -with import ../lib/testing.nix { inherit system; }; +with import ../lib/testing.nix { inherit system pkgs; }; with pkgs.lib; let diff --git a/nixos/tests/xmonad.nix b/nixos/tests/xmonad.nix index 61fa7c1a67d..6d6db6b0ea9 100644 --- a/nixos/tests/xmonad.nix +++ b/nixos/tests/xmonad.nix @@ -22,7 +22,7 @@ import ./make-test.nix ({ pkgs, ...} : { $machine->waitUntilSucceeds("xmonad --restart"); $machine->sleep(3); $machine->sendKeys("alt-shift-ret"); - $machine->waitForWindow(qr/machine.*alice/); + $machine->waitForWindow(qr/alice.*machine/); $machine->sleep(1); $machine->screenshot("terminal"); ''; diff --git a/nixos/tests/xss-lock.nix b/nixos/tests/xss-lock.nix index 045667bdcde..b46bb1a8f6e 100644 --- a/nixos/tests/xss-lock.nix +++ b/nixos/tests/xss-lock.nix @@ -9,7 +9,6 @@ with lib; machine = { imports = [ ./common/x11.nix ./common/user-account.nix ]; programs.xss-lock.enable = true; - programs.xss-lock.lockerCommand = "${pkgs.xlockmore}/bin/xlock"; services.xserver.displayManager.auto.user = "alice"; }; @@ -20,6 +19,6 @@ with lib; $machine->fail("pgrep xlock"); $machine->succeed("su -l alice -c 'xset dpms force standby'"); - $machine->waitUntilSucceeds("pgrep xlock"); + $machine->waitUntilSucceeds("pgrep i3lock"); ''; }) diff --git a/nixos/tests/zfs.nix b/nixos/tests/zfs.nix index 1434038e90c..d7a08268e98 100644 --- a/nixos/tests/zfs.nix +++ b/nixos/tests/zfs.nix @@ -1,6 +1,9 @@ -{ system ? builtins.currentSystem }: +{ system ? builtins.currentSystem, + config ? {}, + pkgs ? import ../.. { inherit system config; } +}: -with import ../lib/testing.nix { inherit system; }; +with import ../lib/testing.nix { inherit system pkgs; }; let diff --git a/pkgs/applications/altcoins/aeon/default.nix b/pkgs/applications/altcoins/aeon/default.nix index 0489c8b649f..42717d3a266 100644 --- a/pkgs/applications/altcoins/aeon/default.nix +++ b/pkgs/applications/altcoins/aeon/default.nix @@ -1,10 +1,10 @@ { stdenv, fetchFromGitHub, cmake, pkgconfig, git, doxygen, graphviz , boost, miniupnpc, openssl, unbound, cppzmq -, zeromq, pcsclite, readline +, zeromq, pcsclite, readline, libsodium }: let - version = "0.12.0.0"; + version = "0.12.8.0"; in stdenv.mkDerivation { name = "aeon-${version}"; @@ -12,16 +12,16 @@ stdenv.mkDerivation { src = fetchFromGitHub { owner = "aeonix"; repo = "aeon"; - rev = "v${version}"; + rev = "v${version}-aeon"; fetchSubmodules = true; - sha256 = "1schzlscslhqq7zcd68b1smqlaf7k789x1rwpplm7qi5iz9a8cfr"; + sha256 = "1qmlz820mjs0b60d7i90lxcwwxmsdy6swq67v6n8mbb79zmcx8ii"; }; nativeBuildInputs = [ cmake pkgconfig git doxygen graphviz ]; buildInputs = [ boost miniupnpc openssl unbound - cppzmq zeromq pcsclite readline + cppzmq zeromq pcsclite readline libsodium ]; cmakeFlags = [ diff --git a/pkgs/applications/altcoins/bitcoin-abc.nix b/pkgs/applications/altcoins/bitcoin-abc.nix index 6d2cbcdf9f9..3b65b06d8db 100644 --- a/pkgs/applications/altcoins/bitcoin-abc.nix +++ b/pkgs/applications/altcoins/bitcoin-abc.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchFromGitHub, pkgconfig, autoreconfHook, openssl, db48, boost +{ stdenv, fetchFromGitHub, pkgconfig, autoreconfHook, openssl, db53, boost , zlib, miniupnpc, qtbase ? null , qttools ? null, utillinux, protobuf, qrencode, libevent , withGui }: @@ -7,19 +7,19 @@ with stdenv.lib; stdenv.mkDerivation rec { name = "bitcoin" + (toString (optional (!withGui) "d")) + "-abc-" + version; - version = "0.17.1"; + version = "0.18.2"; src = fetchFromGitHub { owner = "bitcoin-ABC"; repo = "bitcoin-abc"; rev = "v${version}"; - sha256 = "1kq9n3s9vhkmfaizsyi2cb91ibi06gb6wx0hkcb9hg3nrrvcka3y"; + sha256 = "1ha219xnd61qicf7r3j0wbfrifh7blwp3lyk3ycgdn381q1qln29"; }; patches = [ ./fix-bitcoin-qt-build.patch ]; nativeBuildInputs = [ pkgconfig autoreconfHook ]; - buildInputs = [ openssl db48 boost zlib + buildInputs = [ openssl db53 boost zlib miniupnpc utillinux protobuf libevent ] ++ optionals withGui [ qtbase qttools qrencode ]; diff --git a/pkgs/applications/altcoins/bitcoin.nix b/pkgs/applications/altcoins/bitcoin.nix index c266fa2fef2..b50508342bf 100644 --- a/pkgs/applications/altcoins/bitcoin.nix +++ b/pkgs/applications/altcoins/bitcoin.nix @@ -5,13 +5,13 @@ with stdenv.lib; stdenv.mkDerivation rec{ name = "bitcoin" + (toString (optional (!withGui) "d")) + "-" + version; - version = "0.17.0"; + version = "0.17.1"; src = fetchurl { urls = [ "https://bitcoincore.org/bin/bitcoin-core-${version}/bitcoin-${version}.tar.gz" "https://bitcoin.org/bin/bitcoin-core-${version}/bitcoin-${version}.tar.gz" ]; - sha256 = "0pkq28d2dj22qrxyyg9kh0whmhj7ghyabnhyqldbljv4a7l3kvwq"; + sha256 = "0am4pnaf2cisv172jqx6jdpzx770agm8777163lkjbw3ryslymiy"; }; nativeBuildInputs = [ pkgconfig autoreconfHook ] diff --git a/pkgs/applications/altcoins/clightning.nix b/pkgs/applications/altcoins/clightning.nix index 5ef1c06688d..38b49fcb1c3 100644 --- a/pkgs/applications/altcoins/clightning.nix +++ b/pkgs/applications/altcoins/clightning.nix @@ -1,24 +1,30 @@ { stdenv, python3, pkgconfig, which, libtool, autoconf, automake, - autogen, sqlite, gmp, zlib, fetchFromGitHub }: + autogen, sqlite, gmp, zlib, fetchzip }: with stdenv.lib; stdenv.mkDerivation rec { name = "clightning-${version}"; - version = "0.6.1"; + version = "0.6.3"; - src = fetchFromGitHub { - fetchSubmodules = true; - owner = "ElementsProject"; - repo = "lightning"; - rev = "v${version}"; - sha256 = "0qx30i1c97ic4ii8bm0sk9dh76nfg4ihl9381gxjj14i4jr1q8y4"; + src = fetchzip { + # + # NOTE 0.6.3 release zip was bugged, this zip is a fix provided by the team + # https://github.com/ElementsProject/lightning/issues/2254#issuecomment-453791475 + # + # replace url with: + # https://github.com/ElementsProject/lightning/releases/download/v${version}/clightning-v${version}.zip + # for future relases + # + url = "https://github.com/ElementsProject/lightning/files/2752675/clightning-v0.6.3.zip"; + sha256 = "0k5pwimwn69pcakiq4a7qnjyf4i8w1jlacwrjazm1sfivr6nfiv6"; }; enableParallelBuilding = true; - buildInputs = [ which sqlite gmp zlib autoconf libtool automake autogen python3 pkgconfig ]; + nativeBuildInputs = [ autoconf autogen automake libtool pkgconfig which ]; + buildInputs = [ sqlite gmp zlib python3 ]; - makeFlags = [ "prefix=$(out)" ]; + makeFlags = [ "prefix=$(out) VERSION=v${version}" ]; configurePhase = '' ./configure --prefix=$out --disable-developer --disable-valgrind diff --git a/pkgs/applications/altcoins/default.nix b/pkgs/applications/altcoins/default.nix index e0a0dbef632..c7a81b6b11f 100644 --- a/pkgs/applications/altcoins/default.nix +++ b/pkgs/applications/altcoins/default.nix @@ -45,7 +45,7 @@ rec { dcrd = callPackage ./dcrd.nix { }; dcrwallet = callPackage ./dcrwallet.nix { }; - dero = callPackage ./dero.nix { }; + dero = callPackage ./dero.nix { boost = boost165; }; dogecoin = callPackage ./dogecoin.nix { boost = boost165; withGui = true; }; dogecoind = callPackage ./dogecoin.nix { boost = boost165; withGui = false; }; @@ -53,7 +53,6 @@ rec { freicoin = callPackage ./freicoin.nix { boost = boost155; }; go-ethereum = callPackage ./go-ethereum.nix { - buildGoPackage = buildGo110Package; inherit (darwin) libobjc; inherit (darwin.apple_sdk.frameworks) IOKit; }; @@ -66,7 +65,7 @@ rec { }; litecoind = litecoin.override { withGui = false; }; - masari = callPackage ./masari.nix { }; + masari = callPackage ./masari.nix { boost = boost165; }; memorycoin = callPackage ./memorycoin.nix { boost = boost165; withGui = true; }; memorycoind = callPackage ./memorycoin.nix { boost = boost165; withGui = false; }; @@ -80,7 +79,11 @@ rec { stellar-core = callPackage ./stellar-core.nix { }; - sumokoin = callPackage ./sumokoin.nix { }; + sumokoin = callPackage ./sumokoin.nix { boost = boost165; }; + + wownero = callPackage ./wownero.nix { + inherit (darwin.apple_sdk.frameworks) CoreData IOKit PCSC; + }; zcash = callPackage ./zcash { withGui = false; @@ -91,5 +94,7 @@ rec { parity-beta = callPackage ./parity/beta.nix { }; parity-ui = callPackage ./parity-ui { }; - particl-core = callPackage ./particl/particl-core.nix { boost = boost165; miniupnpc = miniupnpc_2; }; + polkadot = callPackage ./polkadot { }; + + particl-core = callPackage ./particl/particl-core.nix { miniupnpc = miniupnpc_2; }; } diff --git a/pkgs/applications/altcoins/go-ethereum.nix b/pkgs/applications/altcoins/go-ethereum.nix index 02e0412449a..ad1ccbf496c 100644 --- a/pkgs/applications/altcoins/go-ethereum.nix +++ b/pkgs/applications/altcoins/go-ethereum.nix @@ -2,7 +2,7 @@ buildGoPackage rec { name = "go-ethereum-${version}"; - version = "1.8.13"; + version = "1.8.21"; goPackagePath = "github.com/ethereum/go-ethereum"; # Fix for usb-related segmentation faults on darwin @@ -16,13 +16,13 @@ buildGoPackage rec { owner = "ethereum"; repo = "go-ethereum"; rev = "v${version}"; - sha256 = "123jkyb293z7ww3sa9ji5rw7xd229isi03k4ayyh5p7rr0dg8al0"; + sha256 = "1p4qfxa90l26s9q4hddyb93gdf7vb0sb46z9n26ijiqlxdq3z7v2"; }; meta = with stdenv.lib; { homepage = https://ethereum.github.io/go-ethereum/; description = "Official golang implementation of the Ethereum protocol"; license = with licenses; [ lgpl3 gpl3 ]; - maintainers = [ maintainers.adisbladis ]; + maintainers = [ maintainers.adisbladis maintainers.lionello ]; }; } diff --git a/pkgs/applications/altcoins/litecoin.nix b/pkgs/applications/altcoins/litecoin.nix index b23f3ad4243..33ac2be1832 100644 --- a/pkgs/applications/altcoins/litecoin.nix +++ b/pkgs/applications/altcoins/litecoin.nix @@ -11,13 +11,13 @@ with stdenv.lib; stdenv.mkDerivation rec { name = "litecoin" + (toString (optional (!withGui) "d")) + "-" + version; - version = "0.16.2"; + version = "0.16.3"; src = fetchFromGitHub { owner = "litecoin-project"; repo = "litecoin"; rev = "v${version}"; - sha256 = "0xfwh7cxxz6w8kgr4kl48w3zm81n1hv8fxb5l9zx3460im1ffgy6"; + sha256 = "0vc184qfdkjky1qffa7309k6973k4197bkzwcmffc9r5sdfhrhkp"; }; nativeBuildInputs = [ pkgconfig autoreconfHook ]; diff --git a/pkgs/applications/altcoins/mist.nix b/pkgs/applications/altcoins/mist.nix index 194c004f9c7..2990b44c7f4 100644 --- a/pkgs/applications/altcoins/mist.nix +++ b/pkgs/applications/altcoins/mist.nix @@ -2,7 +2,7 @@ let version = "0.11.1"; - name = "mist"; + pname = "mist"; throwSystem = throw "Unsupported system: ${stdenv.hostPlatform.system}"; @@ -26,7 +26,7 @@ let }; mist = stdenv.lib.appendToName "unwrapped" (stdenv.mkDerivation { - inherit name version meta; + inherit pname version meta; src = { i686-linux = fetchurl { diff --git a/pkgs/applications/altcoins/monero-gui/default.nix b/pkgs/applications/altcoins/monero-gui/default.nix index 49b8db51bcc..331ef6b92a4 100644 --- a/pkgs/applications/altcoins/monero-gui/default.nix +++ b/pkgs/applications/altcoins/monero-gui/default.nix @@ -5,20 +5,21 @@ , qtlocation, qtquickcontrols2, qtwebchannel , qtwebengine, qtx11extras, qtxmlpatterns , monero, unbound, readline, boost, libunwind -, pcsclite, zeromq, cppzmq, pkgconfig +, libsodium, pcsclite, zeromq, cppzmq, pkgconfig +, hidapi }: with stdenv.lib; stdenv.mkDerivation rec { name = "monero-gui-${version}"; - version = "0.12.3.0"; + version = "0.13.0.4"; src = fetchFromGitHub { owner = "monero-project"; repo = "monero-gui"; rev = "v${version}"; - sha256 = "1ry0455cgirkc6n46qnlv5p49axjllil78xmx6469nbp3a2r3z7i"; + sha256 = "142yj5s15bhm300dislq3x5inw1f37shnrd5vyj78jjcvry3wymw"; }; nativeBuildInputs = [ qmake pkgconfig ]; @@ -28,8 +29,8 @@ stdenv.mkDerivation rec { qtdeclarative qtlocation qtquickcontrols2 qtwebchannel qtwebengine qtx11extras qtxmlpatterns monero unbound readline - boost libunwind pcsclite zeromq cppzmq - makeWrapper + boost libunwind libsodium pcsclite zeromq + cppzmq makeWrapper hidapi ]; patches = [ @@ -59,7 +60,7 @@ stdenv.mkDerivation rec { name = "monero-wallet-gui"; exec = "monero-wallet-gui"; icon = "monero"; - desktopName = "Monero Wallet"; + desktopName = "Monero"; genericName = "Wallet"; categories = "Application;Network;Utility;"; }; @@ -86,7 +87,7 @@ stdenv.mkDerivation rec { description = "Private, secure, untraceable currency"; homepage = https://getmonero.org/; license = licenses.bsd3; - platforms = platforms.all; + platforms = [ "x86_64-linux" ]; maintainers = with maintainers; [ rnhmjoj ]; }; } diff --git a/pkgs/applications/altcoins/monero/default.nix b/pkgs/applications/altcoins/monero/default.nix index a4a884707a9..3a962458632 100644 --- a/pkgs/applications/altcoins/monero/default.nix +++ b/pkgs/applications/altcoins/monero/default.nix @@ -1,7 +1,7 @@ { stdenv, fetchgit , cmake, pkgconfig, git , boost, miniupnpc, openssl, unbound, cppzmq -, zeromq, pcsclite, readline +, zeromq, pcsclite, readline, libsodium, hidapi , CoreData, IOKit, PCSC }: @@ -11,12 +11,12 @@ with stdenv.lib; stdenv.mkDerivation rec { name = "monero-${version}"; - version = "0.12.3.0"; + version = "0.13.0.4"; src = fetchgit { url = "https://github.com/monero-project/monero.git"; rev = "v${version}"; - sha256 = "1609k1qn9xx37a92ai36rajds9cmdjlkqyka95hks5xjr3l5ca8i"; + sha256 = "1ambgakapijhsi1pd70vw8vvnlwa3nid944lqkbfq3wl25lmc70d"; }; nativeBuildInputs = [ cmake pkgconfig git ]; @@ -24,6 +24,7 @@ stdenv.mkDerivation rec { buildInputs = [ boost miniupnpc openssl unbound cppzmq zeromq pcsclite readline + libsodium hidapi ] ++ optionals stdenv.isDarwin [ IOKit CoreData PCSC ]; cmakeFlags = [ diff --git a/pkgs/applications/altcoins/namecoin.nix b/pkgs/applications/altcoins/namecoin.nix index 93f9faf833a..4b8dc5525dc 100644 --- a/pkgs/applications/altcoins/namecoin.nix +++ b/pkgs/applications/altcoins/namecoin.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchFromGitHub, openssl, boost, libevent, autoreconfHook, db4, miniupnpc, eject, pkgconfig, qt4, protobuf, libqrencode, hexdump +{ stdenv, fetchFromGitHub, openssl, boost, libevent, autoreconfHook, db4, miniupnpc, eject, pkgconfig, qt4, protobuf, qrencode, hexdump , withGui }: with stdenv.lib; @@ -29,7 +29,7 @@ stdenv.mkDerivation rec { ] ++ optionals withGui [ qt4 protobuf - libqrencode + qrencode ]; enableParallelBuilding = true; diff --git a/pkgs/applications/altcoins/nano-wallet/default.nix b/pkgs/applications/altcoins/nano-wallet/default.nix index 3426d8d07a0..62e72592874 100644 --- a/pkgs/applications/altcoins/nano-wallet/default.nix +++ b/pkgs/applications/altcoins/nano-wallet/default.nix @@ -3,13 +3,13 @@ stdenv.mkDerivation rec { name = "nano-wallet-${version}"; - version = "16.1"; + version = "16.3"; src = fetchFromGitHub { owner = "nanocurrency"; repo = "raiblocks"; rev = "V${version}"; - sha256 = "0sk9g4fv494a5w75vs5a3s5c139lxzz1svz0cn1hkhxqlmz8w081"; + sha256 = "1rhq7qzfd8li33pmzcjxrhbbgdklxlcijam62s385f8yqjwy80dz"; fetchSubmodules = true; }; diff --git a/pkgs/applications/altcoins/parity-ui/default.nix b/pkgs/applications/altcoins/parity-ui/default.nix index ec2e571e3f0..c59b2ccb8ac 100644 --- a/pkgs/applications/altcoins/parity-ui/default.nix +++ b/pkgs/applications/altcoins/parity-ui/default.nix @@ -34,8 +34,6 @@ in stdenv.mkDerivation rec { find $out/share/parity-ui -name "*.node" -exec patchelf --set-rpath "${uiEnv.libPath}:$out/share/parity-ui" {} \; - paxmark m $out/share/parity-ui/parity-ui - mkdir -p $out/bin ln -s $out/share/parity-ui/parity-ui $out/bin/parity-ui ''; diff --git a/pkgs/applications/altcoins/parity/beta.nix b/pkgs/applications/altcoins/parity/beta.nix index fc772246cfc..46985fd065e 100644 --- a/pkgs/applications/altcoins/parity/beta.nix +++ b/pkgs/applications/altcoins/parity/beta.nix @@ -1,7 +1,6 @@ let - version = "2.0.3"; - sha256 = "1yf3ln4ksk8613kqkpsh16cj8xwx761q6czy57rs8kfh7pgc2pzb"; - cargoSha256 = "1jayk4ngwbg0rv7x1slkl2z46czgy2hnfcxc0dhaz4xpbp2bjqq8"; - patches = [ ./patches/vendored-sources-2.0.patch ]; + version = "2.2.5"; + sha256 = "0q9vgwc0jlja73r4na7yil624iagq1607ac47wh8a7xgfjmjjai1"; + cargoSha256 = "0ibdmyh1jvfq51vhwn4riyhilqwhf71hjd4vyj525smn95p75b14"; in - import ./parity.nix { inherit version sha256 cargoSha256 patches; } + import ./parity.nix { inherit version sha256 cargoSha256; } diff --git a/pkgs/applications/altcoins/parity/default.nix b/pkgs/applications/altcoins/parity/default.nix index 234364e7336..81923849094 100644 --- a/pkgs/applications/altcoins/parity/default.nix +++ b/pkgs/applications/altcoins/parity/default.nix @@ -1,7 +1,6 @@ let - version = "1.11.10"; - sha256 = "15sk6dvc8h1bdm6v7xlq517km0bakb9f13h1n7ixj311vahnmk15"; - cargoSha256 = "0p2idd36cyzp2ax81k533bdma4hz0ws2981qj2s7jnhvmj4941l8"; - patches = [ ./patches/vendored-sources-1.11.patch ]; + version = "2.1.10"; + sha256 = "1l4yl8i24q8v4hzljzai37f587x8m3cz3byzifhvq3bjky7p8h80"; + cargoSha256 = "04pni9cmz8nhlqznwafz9d81006808kh24aqnb8rjdcr84d11zis"; in - import ./parity.nix { inherit version sha256 cargoSha256 patches; } + import ./parity.nix { inherit version sha256 cargoSha256; } diff --git a/pkgs/applications/altcoins/parity/parity.nix b/pkgs/applications/altcoins/parity/parity.nix index 55665034ccf..9eb189f014e 100644 --- a/pkgs/applications/altcoins/parity/parity.nix +++ b/pkgs/applications/altcoins/parity/parity.nix @@ -1,7 +1,6 @@ { version , sha256 , cargoSha256 -, patches }: { stdenv @@ -16,7 +15,7 @@ rustPlatform.buildRustPackage rec { name = "parity-${version}"; - inherit cargoSha256 patches; + inherit cargoSha256; src = fetchFromGitHub { owner = "paritytech"; @@ -30,7 +29,7 @@ rustPlatform.buildRustPackage rec { systemd.lib systemd.dev openssl openssl.dev ]; - # Some checks failed + # test result: FAILED. 80 passed; 12 failed; 0 ignored; 0 measured; 0 filtered out doCheck = false; meta = with stdenv.lib; { diff --git a/pkgs/applications/altcoins/parity/patches/vendored-sources-1.11.patch b/pkgs/applications/altcoins/parity/patches/vendored-sources-1.11.patch deleted file mode 100644 index 733f6880ad9..00000000000 --- a/pkgs/applications/altcoins/parity/patches/vendored-sources-1.11.patch +++ /dev/null @@ -1,113 +0,0 @@ -diff --git a/.cargo/config b/.cargo/config -index 72652ad2f..57c5c2f8f 100644 ---- a/.cargo/config -+++ b/.cargo/config -@@ -1,3 +1,108 @@ - [target.x86_64-pc-windows-msvc] - # Link the C runtime statically ; https://github.com/paritytech/parity/issues/6643 - rustflags = ["-Ctarget-feature=+crt-static"] -+ -+[source."https://github.com/alexcrichton/mio-named-pipes"] -+git = "https://github.com/alexcrichton/mio-named-pipes" -+branch = "master" -+replace-with = "vendored-sources" -+ -+[source."https://github.com/js-dist-paritytech/parity-master-1-10-shell.git"] -+git = "https://github.com/js-dist-paritytech/parity-master-1-10-shell.git" -+rev = "bd25b41cd642c6b822d820dded3aa601a29aa079" -+replace-with = "vendored-sources" -+ -+[source."https://github.com/js-dist-paritytech/parity-master-1-10-wallet.git"] -+git = "https://github.com/js-dist-paritytech/parity-master-1-10-wallet.git" -+rev = "4b6f112412716cd05123d32eeb7fda448288a6c6" -+replace-with = "vendored-sources" -+ -+[source."https://github.com/nikvolf/parity-tokio-ipc"] -+git = "https://github.com/nikvolf/parity-tokio-ipc" -+branch = "master" -+replace-with = "vendored-sources" -+ -+[source."https://github.com/nikvolf/tokio-named-pipes"] -+git = "https://github.com/nikvolf/tokio-named-pipes" -+branch = "master" -+replace-with = "vendored-sources" -+ -+[source."https://github.com/parity-js/dapp-wallet.git"] -+git = "https://github.com/parity-js/dapp-wallet.git" -+rev = "65deb02e7c007a0fd8aab0c089c93e3fd1de6f87" -+replace-with = "vendored-sources" -+ -+[source."https://github.com/parity-js/shell.git"] -+git = "https://github.com/parity-js/shell.git" -+rev = "eecaadcb9e421bce31e91680d14a20bbd38f92a2" -+replace-with = "vendored-sources" -+ -+[source."https://github.com/paritytech/app-dirs-rs"] -+git = "https://github.com/paritytech/app-dirs-rs" -+branch = "master" -+replace-with = "vendored-sources" -+ -+[source."https://github.com/paritytech/bn"] -+git = "https://github.com/paritytech/bn" -+branch = "master" -+replace-with = "vendored-sources" -+ -+[source."https://github.com/paritytech/daemonize"] -+git = "https://github.com/paritytech/daemonize" -+branch = "master" -+replace-with = "vendored-sources" -+ -+[source."https://github.com/paritytech/hidapi-rs"] -+git = "https://github.com/paritytech/hidapi-rs" -+branch = "master" -+replace-with = "vendored-sources" -+ -+[source."https://github.com/paritytech/jsonrpc.git"] -+git = "https://github.com/paritytech/jsonrpc.git" -+branch = "parity-1.11" -+replace-with = "vendored-sources" -+ -+[source."https://github.com/paritytech/libusb-rs"] -+git = "https://github.com/paritytech/libusb-rs" -+branch = "master" -+replace-with = "vendored-sources" -+ -+[source."https://github.com/paritytech/libusb-sys"] -+git = "https://github.com/paritytech/libusb-sys" -+branch = "master" -+replace-with = "vendored-sources" -+ -+[source."https://github.com/paritytech/ring"] -+git = "https://github.com/paritytech/ring" -+branch = "master" -+replace-with = "vendored-sources" -+ -+[source."https://github.com/paritytech/rust-ctrlc.git"] -+git = "https://github.com/paritytech/rust-ctrlc.git" -+branch = "master" -+replace-with = "vendored-sources" -+ -+[source."https://github.com/paritytech/rust-rocksdb"] -+git = "https://github.com/paritytech/rust-rocksdb" -+branch = "master" -+replace-with = "vendored-sources" -+ -+[source."https://github.com/paritytech/rust-secp256k1"] -+git = "https://github.com/paritytech/rust-secp256k1" -+branch = "master" -+replace-with = "vendored-sources" -+ -+[source."https://github.com/paritytech/rust-snappy"] -+git = "https://github.com/paritytech/rust-snappy" -+branch = "master" -+replace-with = "vendored-sources" -+ -+[source."https://github.com/paritytech/trezor-sys"] -+git = "https://github.com/paritytech/trezor-sys" -+branch = "master" -+replace-with = "vendored-sources" -+ -+[source."https://github.com/tomusdrw/ws-rs"] -+git = "https://github.com/tomusdrw/ws-rs" -+branch = "master" -+replace-with = "vendored-sources" diff --git a/pkgs/applications/altcoins/parity/patches/vendored-sources-2.0.patch b/pkgs/applications/altcoins/parity/patches/vendored-sources-2.0.patch deleted file mode 100644 index 9af64559d97..00000000000 --- a/pkgs/applications/altcoins/parity/patches/vendored-sources-2.0.patch +++ /dev/null @@ -1,98 +0,0 @@ -diff --git a/.cargo/config b/.cargo/config -index 72652ad2f..3c0eca89a 100644 ---- a/.cargo/config -+++ b/.cargo/config -@@ -1,3 +1,93 @@ - [target.x86_64-pc-windows-msvc] - # Link the C runtime statically ; https://github.com/paritytech/parity/issues/6643 - rustflags = ["-Ctarget-feature=+crt-static"] -+ -+[source."https://github.com/alexcrichton/mio-named-pipes"] -+git = "https://github.com/alexcrichton/mio-named-pipes" -+branch = "master" -+replace-with = "vendored-sources" -+ -+[source."https://github.com/nikvolf/parity-tokio-ipc"] -+git = "https://github.com/nikvolf/parity-tokio-ipc" -+branch = "master" -+replace-with = "vendored-sources" -+ -+[source."https://github.com/nikvolf/tokio-named-pipes"] -+git = "https://github.com/nikvolf/tokio-named-pipes" -+branch = "master" -+replace-with = "vendored-sources" -+ -+[source."https://github.com/paritytech/app-dirs-rs"] -+git = "https://github.com/paritytech/app-dirs-rs" -+branch = "master" -+replace-with = "vendored-sources" -+ -+[source."https://github.com/paritytech/bn"] -+git = "https://github.com/paritytech/bn" -+branch = "master" -+replace-with = "vendored-sources" -+ -+[source."https://github.com/paritytech/daemonize"] -+git = "https://github.com/paritytech/daemonize" -+branch = "master" -+replace-with = "vendored-sources" -+ -+[source."https://github.com/paritytech/hidapi-rs"] -+git = "https://github.com/paritytech/hidapi-rs" -+branch = "master" -+replace-with = "vendored-sources" -+ -+[source."https://github.com/paritytech/jsonrpc.git"] -+git = "https://github.com/paritytech/jsonrpc.git" -+branch = "parity-1.11" -+replace-with = "vendored-sources" -+ -+[source."https://github.com/paritytech/libusb-rs"] -+git = "https://github.com/paritytech/libusb-rs" -+branch = "master" -+replace-with = "vendored-sources" -+ -+[source."https://github.com/paritytech/libusb-sys"] -+git = "https://github.com/paritytech/libusb-sys" -+branch = "master" -+replace-with = "vendored-sources" -+ -+[source."https://github.com/paritytech/parity-common"] -+git = "https://github.com/paritytech/parity-common" -+branch = "master" -+replace-with = "vendored-sources" -+ -+[source."https://github.com/paritytech/ring"] -+git = "https://github.com/paritytech/ring" -+branch = "master" -+replace-with = "vendored-sources" -+ -+[source."https://github.com/paritytech/rust-ctrlc.git"] -+git = "https://github.com/paritytech/rust-ctrlc.git" -+branch = "master" -+replace-with = "vendored-sources" -+ -+[source."https://github.com/paritytech/rust-rocksdb"] -+git = "https://github.com/paritytech/rust-rocksdb" -+branch = "master" -+replace-with = "vendored-sources" -+ -+[source."https://github.com/paritytech/rust-secp256k1"] -+git = "https://github.com/paritytech/rust-secp256k1" -+branch = "master" -+replace-with = "vendored-sources" -+ -+[source."https://github.com/paritytech/rust-snappy"] -+git = "https://github.com/paritytech/rust-snappy" -+branch = "master" -+replace-with = "vendored-sources" -+ -+[source."https://github.com/paritytech/trezor-sys"] -+git = "https://github.com/paritytech/trezor-sys" -+branch = "master" -+replace-with = "vendored-sources" -+ -+[source."https://github.com/tomusdrw/ws-rs"] -+git = "https://github.com/tomusdrw/ws-rs" -+branch = "master" -+replace-with = "vendored-sources" diff --git a/pkgs/applications/altcoins/particl/particl-core.nix b/pkgs/applications/altcoins/particl/particl-core.nix index a06f373683a..d3b20ef2ea3 100644 --- a/pkgs/applications/altcoins/particl/particl-core.nix +++ b/pkgs/applications/altcoins/particl/particl-core.nix @@ -10,31 +10,40 @@ , zeromq , zlib , unixtools +, python3 }: with stdenv.lib; stdenv.mkDerivation rec { name = "particl-core-${version}"; - version = "0.16.2.0"; + version = "0.17.0.2"; src = fetchurl { url = "https://github.com/particl/particl-core/archive/v${version}.tar.gz"; - sha256 = "1d2vvg7avlhsg0rcpd5pbzafnk1w51a2y29xjjkpafi6iqs2l617"; + sha256 = "0bkxdayl0jrfhgz8qzqqpwzv0yavz3nwsn6c8k003jnbcw65fkhx"; }; nativeBuildInputs = [ pkgconfig autoreconfHook ]; - buildInputs = [ - openssl db48 boost zlib miniupnpc libevent zeromq - unixtools.hexdump + buildInputs = [ openssl db48 boost zlib miniupnpc libevent zeromq unixtools.hexdump python3 ]; + + configureFlags = [ + "--disable-bench" + "--with-boost-libdir=${boost.out}/lib" + ] ++ optionals (!doCheck) [ + "--enable-tests=no" ]; - configureFlags = [ "--with-boost-libdir=${boost.out}/lib" ]; + # Always check during Hydra builds + doCheck = true; + preCheck = "patchShebangs test"; + enableParallelBuilding = true; meta = { description = "Privacy-Focused Marketplace & Decentralized Application Platform"; longDescription= '' An open source, decentralized privacy platform built for global person to person eCommerce. + RPC daemon and CLI client only. ''; homepage = https://particl.io/; maintainers = with maintainers; [ demyanrogozhin ]; diff --git a/pkgs/applications/altcoins/polkadot/default.nix b/pkgs/applications/altcoins/polkadot/default.nix new file mode 100644 index 00000000000..6d4e0417cde --- /dev/null +++ b/pkgs/applications/altcoins/polkadot/default.nix @@ -0,0 +1,30 @@ +{ stdenv +, fetchFromGitHub +, rustPlatform +, pkgconfig +, openssl +}: + +rustPlatform.buildRustPackage rec { + name = "polkadot-${version}"; + version = "0.2.17"; + + src = fetchFromGitHub { + owner = "paritytech"; + repo = "substrate"; + rev = "19f4f4d4df3bb266086b4e488739f73d3d5e588c"; + sha256 = "0v7g03rbml2afw0splmyjh9nqpjg0ldjw09hyc0jqd3qlhgxiiyj"; + }; + + cargoSha256 = "0wwkaxqj2v5zach5xcqfzf6prc0gxy2v47janglp44xbxbx9xk08"; + + buildInputs = [ pkgconfig openssl openssl.dev ]; + + meta = with stdenv.lib; { + description = "Polkadot Node Implementation"; + homepage = http://polkadot.network; + license = licenses.gpl3; + maintainers = [ maintainers.akru ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/applications/altcoins/wownero.nix b/pkgs/applications/altcoins/wownero.nix new file mode 100644 index 00000000000..4b62ba759f3 --- /dev/null +++ b/pkgs/applications/altcoins/wownero.nix @@ -0,0 +1,51 @@ +{ stdenv, fetchFromGitHub, cmake, pkgconfig, git +, boost, miniupnpc, openssl, unbound, cppzmq +, zeromq, pcsclite, readline, libsodium +, CoreData, IOKit, PCSC +}: + +assert stdenv.isDarwin -> IOKit != null; + +with stdenv.lib; + +stdenv.mkDerivation rec { + name = "wownero-${version}"; + + version = "0.4.0.0"; + src = fetchFromGitHub { + owner = "wownero"; + repo = "wownero"; + fetchSubmodules = true; + rev = "v${version}"; + sha256 = "1z5fpl4gwys4v8ffrymlzwrbnrbg73x553a9lxwny7ba8yg2k14p"; + }; + + nativeBuildInputs = [ cmake pkgconfig git ]; + + buildInputs = [ + boost miniupnpc openssl unbound + cppzmq zeromq pcsclite readline libsodium + ] ++ optionals stdenv.isDarwin [ IOKit CoreData PCSC ]; + + cmakeFlags = [ + "-DReadline_ROOT_DIR=${readline.dev}" + "-DMANUAL_SUBMODULES=ON" + ] ++ optional stdenv.isDarwin "-DBoost_USE_MULTITHREADED=OFF"; + + hardeningDisable = [ "fortify" ]; + + meta = { + description = "Wownero is a fork of the cryptocurrency Monero with primary alterations"; + longDescription = '' + Wownero’s emission is capped and supply is finite. Wownero is a fairly + launched coin with no premine. It’s not a fork of another blockchain. With + its own genesis block there is no degradation of privacy caused by ring + signatures using different participants for the same transaction outputs. + Unlike opposing forks. + ''; + homepage = http://wownero.org/; + license = licenses.bsd3; + platforms = platforms.all; + maintainers = with maintainers; [ fuwa ]; + }; +} diff --git a/pkgs/applications/audio/a2jmidid/default.nix b/pkgs/applications/audio/a2jmidid/default.nix index d09a10a15b2..70709ae4ac4 100644 --- a/pkgs/applications/audio/a2jmidid/default.nix +++ b/pkgs/applications/audio/a2jmidid/default.nix @@ -1,4 +1,5 @@ -{ stdenv, fetchurl, makeWrapper, pkgconfig, alsaLib, dbus, libjack2 +{ stdenv, fetchurl, fetchpatch, makeWrapper, pkgconfig, alsaLib, dbus, libjack2 +, wafHook , python2Packages}: let @@ -8,19 +9,25 @@ in stdenv.mkDerivation rec { version = "8"; src = fetchurl { - url = "http://repo.or.cz/a2jmidid.git/snapshot/7383d268c4bfe85df9f10df6351677659211d1ca.tar.gz"; + url = "https://repo.or.cz/a2jmidid.git/snapshot/7383d268c4bfe85df9f10df6351677659211d1ca.tar.gz"; sha256 = "06dgf5655znbvrd7fhrv8msv6zw8vk0hjqglcqkh90960mnnmwz7"; }; - nativeBuildInputs = [ pkgconfig ]; - buildInputs = [ makeWrapper alsaLib dbus libjack2 python dbus-python ]; + nativeBuildInputs = [ pkgconfig makeWrapper wafHook ]; + buildInputs = [ alsaLib dbus libjack2 python dbus-python ]; - configurePhase = "${python.interpreter} waf configure --prefix=$out"; + patches = [ + (fetchpatch { + url = https://repo.or.cz/a2jmidid.git/patch/24e3b8e543256ae8fdfb4b75eb9fd775f07c46e2; + sha256 = "1nxrvnhxlgqc9wbxnp1gnpw4wjyzxvymwcg1gh2nqzmssgfykfkc"; + }) + (fetchpatch { + url = https://repo.or.cz/a2jmidid.git/patch/7f82da7eb2f540a94db23331be98d42a58ddc269; + sha256 = "1nab9zf0agbcj5pvhl90pz0cx1d204d4janqflc5ymjhy8jyrsdv"; + }) + ]; - buildPhase = "${python.interpreter} waf"; - - installPhase = '' - ${python.interpreter} waf install + postInstall = '' wrapProgram $out/bin/a2j_control --set PYTHONPATH $PYTHONPATH ''; diff --git a/pkgs/applications/audio/abcde/default.nix b/pkgs/applications/audio/abcde/default.nix index 58e8ecc4fca..24072981135 100644 --- a/pkgs/applications/audio/abcde/default.nix +++ b/pkgs/applications/audio/abcde/default.nix @@ -1,6 +1,6 @@ { stdenv, fetchurl, libcdio-paranoia, cddiscid, wget, which, vorbis-tools, id3v2, eyeD3 , lame, flac, glyr -, perl, MusicBrainz, MusicBrainzDiscID +, perlPackages , makeWrapper }: let version = "2.9.2"; @@ -29,7 +29,7 @@ in nativeBuildInputs = [ makeWrapper ]; - buildInputs = [ perl MusicBrainz MusicBrainzDiscID ]; + buildInputs = with perlPackages; [ perl MusicBrainz MusicBrainzDiscID ]; installFlags = [ "sysconfdir=$(out)/etc" ]; diff --git a/pkgs/applications/audio/aeolus/default.nix b/pkgs/applications/audio/aeolus/default.nix index 68a9bb63e2e..7b80b32331b 100644 --- a/pkgs/applications/audio/aeolus/default.nix +++ b/pkgs/applications/audio/aeolus/default.nix @@ -4,11 +4,11 @@ stdenv.mkDerivation rec { name = "aeolus-${version}"; - version = "0.9.5"; + version = "0.9.7"; src = fetchurl { url = "https://kokkinizita.linuxaudio.org/linuxaudio/downloads/${name}.tar.bz2"; - sha256 = "0wfp8ihldyq2dhdyy7ld7z0zzfvnwam1dvbxnpd9d6xgc4k3j4nv"; + sha256 = "0lhbr95hmbfj8ynbcpawn7jzjbpvrkm6k2yda39yhqk1bzg38v2k"; }; buildInputs = [ diff --git a/pkgs/applications/audio/ams-lv2/default.nix b/pkgs/applications/audio/ams-lv2/default.nix index 7858631f797..7383623a5ff 100644 --- a/pkgs/applications/audio/ams-lv2/default.nix +++ b/pkgs/applications/audio/ams-lv2/default.nix @@ -1,4 +1,5 @@ -{ stdenv, fetchFromGitHub, cairo, fftw, gtkmm2, lv2, lvtk, pkgconfig, python3 }: +{ stdenv, fetchFromGitHub, cairo, fftw, gtkmm2, lv2, lvtk, pkgconfig, python3 +, wafHook }: stdenv.mkDerivation rec { name = "ams-lv2-${version}"; @@ -11,20 +12,16 @@ stdenv.mkDerivation rec { sha256 = "1n1dnqnj24xhiy9323lj52nswr5120cj56fpckg802miss05sr6x"; }; - nativeBuildInputs = [ pkgconfig ]; + nativeBuildInputs = [ pkgconfig wafHook ]; buildInputs = [ cairo fftw gtkmm2 lv2 lvtk ]; - configurePhase = "${python3.interpreter} waf configure --prefix=$out"; - - buildPhase = "${python3.interpreter} waf"; - - installPhase = "${python3.interpreter} waf install"; - meta = with stdenv.lib; { description = "An LV2 port of the internal modules found in Alsa Modular Synth"; homepage = http://objectivewave.wordpress.com/ams-lv2; license = licenses.gpl3; maintainers = [ maintainers.goibhniu ]; platforms = platforms.linux; + # Build uses `-msse` and `-mfpmath=sse` + badPlatforms = [ "aarch64-linux" ]; }; } diff --git a/pkgs/applications/audio/ardour/default.nix b/pkgs/applications/audio/ardour/default.nix index 850848abcde..1bb1e404b5c 100644 --- a/pkgs/applications/audio/ardour/default.nix +++ b/pkgs/applications/audio/ardour/default.nix @@ -4,7 +4,8 @@ , 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 }: +, taglib, vampSDK, dbus, fftw, pango, suil, libarchive +, wafHook }: let @@ -29,6 +30,7 @@ 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 @@ -47,13 +49,13 @@ stdenv.mkDerivation rec { patchShebangs ./tools/ ''; - configurePhase = "${python2.interpreter} waf configure --optimize --docs --with-backends=jack,alsa,dummy --prefix=$out"; - - buildPhase = "${python2.interpreter} waf"; - - installPhase = '' - ${python2.interpreter} waf install + configureFlags = [ + "--optimize" + "--docs" + "--with-backends=jack,alsa,dummy" + ]; + postInstall = '' # Install desktop file mkdir -p "$out/share/applications" cat > "$out/share/applications/ardour.desktop" << EOF diff --git a/pkgs/applications/audio/ario/default.nix b/pkgs/applications/audio/ario/default.nix index a99fb80df72..02d818410df 100644 --- a/pkgs/applications/audio/ario/default.nix +++ b/pkgs/applications/audio/ario/default.nix @@ -1,27 +1,24 @@ -{ stdenv, fetchurl, pkgconfig, gettext, gtk2, expat, intltool, libgcrypt, - libunique, gnutls, libxml2, curl, mpd_clientlib, dbus-glib, libnotify, +{ stdenv, fetchurl, pkgconfig, gettext, gtk3, intltool, + wrapGAppsHook, libxml2, curl, mpd_clientlib, dbus-glib, libsoup, avahi, taglib }: stdenv.mkDerivation rec { - version = "1.5.1"; + version = "1.6"; name = "ario-${version}"; src = fetchurl { url = "mirror://sourceforge/ario-player/${name}.tar.gz"; - sha256 = "07n97618jv1ilxnm5c6qj9zjz0imw3p304mn4hjbjkk3p0d2hc88"; + sha256 = "16nhfb3h5pc7flagfdz7xy0iq6kvgy6h4bfpi523i57rxvlfshhl"; }; - patches = [ ./glib-single-include.patch ]; - - nativeBuildInputs = [ pkgconfig ]; + nativeBuildInputs = [ pkgconfig gettext intltool wrapGAppsHook ]; buildInputs = [ - gettext gtk2 expat intltool libgcrypt libunique gnutls - libxml2 curl mpd_clientlib dbus-glib libnotify libsoup avahi taglib + gtk3 libxml2 curl mpd_clientlib dbus-glib libsoup avahi taglib ]; meta = { - description = "GTK2 client for MPD (Music player daemon)"; + description = "GTK client for MPD (Music player daemon)"; homepage = http://ario-player.sourceforge.net/; license = stdenv.lib.licenses.gpl2Plus; maintainers = [ stdenv.lib.maintainers.garrison ]; diff --git a/pkgs/applications/audio/ario/glib-single-include.patch b/pkgs/applications/audio/ario/glib-single-include.patch deleted file mode 100644 index 45e0a1738f8..00000000000 --- a/pkgs/applications/audio/ario/glib-single-include.patch +++ /dev/null @@ -1,40 +0,0 @@ -From: Michael Biebl -Origin: vendor -Bug-Debian: http://bugs.debian.org/665506 -Subject: Including individual glib headers no longer supported - ---- a/src/ario-profiles.h -+++ b/src/ario-profiles.h -@@ -20,7 +20,7 @@ - #ifndef __ARIO_PROFILES_H - #define __ARIO_PROFILES_H - --#include -+#include - #include "servers/ario-server.h" - - G_BEGIN_DECLS ---- a/src/plugins/ario-plugin-info.c -+++ b/src/plugins/ario-plugin-info.c -@@ -27,7 +27,7 @@ - - #include - #include --#include -+#include - - #include "plugins/ario-plugin-info-priv.h" - #include "ario-debug.h" ---- a/src/ario-util.h -+++ b/src/ario-util.h -@@ -18,8 +18,8 @@ - */ - - #include "servers/ario-server.h" --#include "glib/gslist.h" --#include "gdk/gdkpixbuf.h" -+#include -+#include - - /* Number of covers used to generate the drag & drop image */ - #define MAX_COVERS_IN_DRAG 3 diff --git a/pkgs/applications/audio/artyFX/default.nix b/pkgs/applications/audio/artyFX/default.nix index 9a9095d2fc1..91a0a1f140c 100644 --- a/pkgs/applications/audio/artyFX/default.nix +++ b/pkgs/applications/audio/artyFX/default.nix @@ -20,5 +20,7 @@ stdenv.mkDerivation rec { license = licenses.gpl2; maintainers = [ maintainers.magnetophon ]; platforms = platforms.linux; + # Build uses `-msse` and `-mfpmath=sse` + badPlatforms = [ "aarch64-linux" ]; }; } diff --git a/pkgs/applications/audio/audacity/default.nix b/pkgs/applications/audio/audacity/default.nix index 1989fd1400d..fc32eb799cf 100644 --- a/pkgs/applications/audio/audacity/default.nix +++ b/pkgs/applications/audio/audacity/default.nix @@ -7,12 +7,12 @@ with stdenv.lib; stdenv.mkDerivation rec { - version = "2.2.2"; + version = "2.3.0"; name = "audacity-${version}"; src = fetchurl { url = "https://github.com/audacity/audacity/archive/Audacity-${version}.tar.gz"; - sha256 = "18q7i77ynihx7xp45lz2lv0k0wrh6736pcrivlpwrxjgbvyqx7km"; + sha256 = "0pi7ksm8hfvwbn580z4kkc55sbaylrrr7v08s04dmdgfvil7y4ip"; }; preConfigure = /* we prefer system-wide libs */ '' diff --git a/pkgs/applications/audio/avldrums-lv2/default.nix b/pkgs/applications/audio/avldrums-lv2/default.nix new file mode 100644 index 00000000000..75b6d8e2758 --- /dev/null +++ b/pkgs/applications/audio/avldrums-lv2/default.nix @@ -0,0 +1,30 @@ +{ stdenv, fetchFromGitHub, pkgconfig, pango, cairo, libGLU, lv2 }: + +stdenv.mkDerivation rec { + name = "${pname}-${version}"; + pname = "avldrums.lv2"; + version = "0.3.1"; + + src = fetchFromGitHub { + owner = "x42"; + repo = pname; + rev = "v${version}"; + sha256 = "0yhq3n5bahhqpj40mvlkxcjsdsw63jsbz20pl77bx2qj30w25i2j"; + 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 986e476779c..e3f1b6acf87 100644 --- a/pkgs/applications/audio/axoloti/default.nix +++ b/pkgs/applications/audio/axoloti/default.nix @@ -1,15 +1,16 @@ { stdenv, fetchFromGitHub, fetchurl, makeWrapper, unzip -, gnumake, gcc-arm-embedded, dfu-util-axoloti, jdk, ant, libfaketime }: +, gnumake, gcc-arm-embedded, binutils-arm-embedded +, dfu-util-axoloti, jdk, ant, libfaketime }: stdenv.mkDerivation rec { - version = "1.0.12-1"; + version = "1.0.12-2"; name = "axoloti-${version}"; src = fetchFromGitHub { owner = "axoloti"; repo = "axoloti"; rev = "${version}"; - sha256 = "13njmv8zac0kaaxgkv4y4zfjcclafn9cw0m8lj2k4926wnwjmf50"; + sha256 = "1qffis277wshldr3i939b0r2x3a2mlr53samxqmr2nk1sfm2b4w9"; }; chibi_version = "2.6.9"; @@ -20,7 +21,15 @@ stdenv.mkDerivation rec { sha256 = "0lb5s8pkj80mqhsy47mmq0lqk34s2a2m3xagzihalvabwd0frhlj"; }; - buildInputs = [ makeWrapper unzip gcc-arm-embedded dfu-util-axoloti jdk ant libfaketime ]; + nativeBuildInputs = [ + makeWrapper + unzip + gcc-arm-embedded + binutils-arm-embedded + dfu-util-axoloti + ant + ]; + buildInputs = [jdk libfaketime ]; patchPhase = '' unzip ${chibios} @@ -31,15 +40,6 @@ stdenv.mkDerivation rec { substituteInPlace "chibios/os/various/shell.c" \ --replace "#ifdef __DATE__" "#if 0" - # Hardcode full path to compiler tools - for f in "firmware/Makefile.patch" \ - "firmware/Makefile" \ - "firmware/flasher/Makefile" \ - "firmware/mounter/Makefile"; do - substituteInPlace "$f" \ - --replace "arm-none-eabi-" "${gcc-arm-embedded}/bin/arm-none-eabi-" - done - # Hardcode path to "make" for f in "firmware/compile_firmware_linux.sh" \ "firmware/compile_patch_linux.sh"; do @@ -96,6 +96,6 @@ stdenv.mkDerivation rec { SUBSYSTEM=="usb", ATTR{idVendor}=="16c0", ATTR{idProduct}=="0442", OWNER="someuser", GROUP="somegroup" ''; license = licenses.gpl3; - maintainers = with maintainers; [ TealG ]; + maintainers = with maintainers; [ ]; }; } diff --git a/pkgs/applications/audio/bitmeter/default.nix b/pkgs/applications/audio/bitmeter/default.nix index 5f3229dc157..fbe2c97042f 100644 --- a/pkgs/applications/audio/bitmeter/default.nix +++ b/pkgs/applications/audio/bitmeter/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, libjack2, gtk2, pkgconfig }: +{ stdenv, autoreconfHook, fetchurl, libjack2, gtk2, pkgconfig }: stdenv.mkDerivation rec { name = "bitmeter-${version}"; @@ -9,9 +9,16 @@ stdenv.mkDerivation rec { sha256 = "09ck2gxqky701dc1p0ip61rrn16v0pdc7ih2hc2sd63zcw53g2a7"; }; - nativeBuildInputs = [ pkgconfig ]; + nativeBuildInputs = [ autoreconfHook pkgconfig ]; buildInputs = [ libjack2 gtk2 ]; + patches = [ + (fetchurl { + 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/; description = "Also known as jack bitscope. Useful to detect denormals"; diff --git a/pkgs/applications/audio/bristol/default.nix b/pkgs/applications/audio/bristol/default.nix index 42e99fa5186..e1ed12b9bd2 100644 --- a/pkgs/applications/audio/bristol/default.nix +++ b/pkgs/applications/audio/bristol/default.nix @@ -12,7 +12,7 @@ stdenv.mkDerivation rec { nativeBuildInputs = [ pkgconfig ]; buildInputs = [ alsaLib libjack2 libpulseaudio xorg.libX11 xorg.libXext - xorg.xproto + xorg.xorgproto ]; patchPhase = "sed -i '41,43d' libbristolaudio/audioEngineJack.c"; # disable alsa/iatomic diff --git a/pkgs/applications/audio/bs1770gain/default.nix b/pkgs/applications/audio/bs1770gain/default.nix index 2401a610156..44296d3c8b9 100644 --- a/pkgs/applications/audio/bs1770gain/default.nix +++ b/pkgs/applications/audio/bs1770gain/default.nix @@ -2,11 +2,11 @@ stdenv.mkDerivation rec { name = "bs1770gain-${version}"; - version = "0.4.12"; + version = "0.5.1"; src = fetchurl { url = "mirror://sourceforge/bs1770gain/${name}.tar.gz"; - sha256 = "0n9skdap1vnl6w52fx0gsrjlk7w3xgdwi62ycyf96h29rx059z6a"; + sha256 = "0r4fbajgfmnwgl63hcm56f1j8m5f135q6j5jkzdvrrhpcj39yx06"; }; buildInputs = [ ffmpeg sox ]; diff --git a/pkgs/applications/audio/cadence/default.nix b/pkgs/applications/audio/cadence/default.nix index 87dbb310995..ef7eeab4b60 100644 --- a/pkgs/applications/audio/cadence/default.nix +++ b/pkgs/applications/audio/cadence/default.nix @@ -1,5 +1,5 @@ { stdenv -, fetchurl +, fetchzip , pkgconfig , qtbase , makeWrapper @@ -10,56 +10,72 @@ stdenv.mkDerivation rec { version = "0.9.0"; - name = "cadence"; + pname = "cadence"; - src = fetchurl { + src = fetchzip { url = "https://github.com/falkTX/Cadence/archive/v${version}.tar.gz"; - sha256 = "07z1mnb0bmldb3i31bgw816pnvlvr9gawr51rpx3mhixg5wpiqzb"; + sha256 = "08vcggypkdfr70v49innahs5s11hi222dhhnm5wcqzdgksphqzwx"; }; - buildInputs = [ - makeWrapper - pkgconfig - qtbase - ]; - - apps = [ - "cadence" - "cadence-jacksettings" - "cadence-pulse2loopback" - "claudia" - "cadence-aloop-daemon" - "cadence-logs" - "cadence-render" - "catarina" - "claudia-launcher" - "cadence-pulse2jack" - "cadence-session-start" - "catia" - ]; + nativeBuildInputs = [ makeWrapper pkgconfig ]; + buildInputs = [ qtbase ]; makeFlags = '' PREFIX="" DESTDIR=$(out) ''; - propagatedBuildInputs = with python3Packages; [ pyqt5 ]; + propagatedBuildInputs = with python3Packages; [ pyqt5_with_qtwebkit ]; postInstall = '' - # replace with our own wrappers. - for app in $apps; do - rm $out/bin/$app - makeWrapper ${python3Packages.python.interpreter} $out/bin/$app \ - --set PYTHONPATH "$PYTHONPATH:$out/share/cadence" \ - --add-flags "-O $out/share/cadence/src/$app.py" - done + # replace with our own wrappers. They need to be changed manually since it wouldn't work otherwise + rm $out/bin/cadence + makeWrapper ${python3Packages.python.interpreter} $out/bin/cadence \ + --set PYTHONPATH "$PYTHONPATH:$out/share/cadence" \ + --add-flags "-O $out/share/cadence/src/cadence.py" + rm $out/bin/claudia + makeWrapper ${python3Packages.python.interpreter} $out/bin/claudia \ + --set PYTHONPATH "$PYTHONPATH:$out/share/cadence" \ + --add-flags "-O $out/share/cadence/src/claudia.py" + rm $out/bin/catarina + makeWrapper ${python3Packages.python.interpreter} $out/bin/catarina \ + --set PYTHONPATH "$PYTHONPATH:$out/share/cadence" \ + --add-flags "-O $out/share/cadence/src/catarina.py" + rm $out/bin/catia + makeWrapper ${python3Packages.python.interpreter} $out/bin/catia \ + --set PYTHONPATH "$PYTHONPATH:$out/share/cadence" \ + --add-flags "-O $out/share/cadence/src/catia.py" + rm $out/bin/cadence-jacksettings + makeWrapper ${python3Packages.python.interpreter} $out/bin/cadence-jacksettings \ + --set PYTHONPATH "$PYTHONPATH:$out/share/cadence" \ + --add-flags "-O $out/share/cadence/src/jacksettings.py" + rm $out/bin/cadence-aloop-daemon + makeWrapper ${python3Packages.python.interpreter} $out/bin/cadence-aloop-daemon \ + --set PYTHONPATH "$PYTHONPATH:$out/share/cadence" \ + --add-flags "-O $out/share/cadence/src/cadence_aloop_daemon.py" + rm $out/bin/cadence-logs + makeWrapper ${python3Packages.python.interpreter} $out/bin/cadence-logs \ + --set PYTHONPATH "$PYTHONPATH:$out/share/cadence" \ + --add-flags "-O $out/share/cadence/src/logs.py" + rm $out/bin/cadence-render + makeWrapper ${python3Packages.python.interpreter} $out/bin/cadence-render \ + --set PYTHONPATH "$PYTHONPATH:$out/share/cadence" \ + --add-flags "-O $out/share/cadence/src/render.py" + rm $out/bin/claudia-launcher + makeWrapper ${python3Packages.python.interpreter} $out/bin/claudia-launcher \ + --set PYTHONPATH "$PYTHONPATH:$out/share/cadence" \ + --add-flags "-O $out/share/cadence/src/claudia_launcher.py" + rm $out/bin/cadence-session-start + makeWrapper ${python3Packages.python.interpreter} $out/bin/cadence-session-start \ + --set PYTHONPATH "$PYTHONPATH:$out/share/cadence" \ + --add-flags "-O $out/share/cadence/src/cadence_session_start.py" ''; meta = { homepage = https://github.com/falkTX/Cadence/; description = "Collection of tools useful for audio production"; - license = stdenv.lib.licenses.mit; + license = stdenv.lib.licenses.gpl2Plus; maintainers = with stdenv.lib.maintainers; [ genesis ]; - platforms = stdenv.lib.platforms.linux; + platforms = [ "x86_64-linux" ]; }; } diff --git a/pkgs/applications/audio/cantata/default.nix b/pkgs/applications/audio/cantata/default.nix index e379072b7e7..64e99768ded 100644 --- a/pkgs/applications/audio/cantata/default.nix +++ b/pkgs/applications/audio/cantata/default.nix @@ -28,7 +28,7 @@ assert withOnlineServices -> withTaglib; assert withReplaygain -> withTaglib; let - version = "2.3.2"; + version = "2.3.3"; pname = "cantata"; fstat = x: fn: "-DENABLE_" + fn + "=" + (if x then "ON" else "OFF"); fstats = x: map (fstat x); @@ -42,7 +42,7 @@ in stdenv.mkDerivation rec { owner = "CDrummond"; repo = "cantata"; rev = "v${version}"; - sha256 = "11hjday5vj0wzkc8yb5wbs05jwa8mvgxswd5qvhpci0zkl975yzn"; + sha256 = "1m651fmdbnb50glym75kzma0bllvqbmrb2afp1g9g5cxm1898c0f"; }; buildInputs = [ vlc qtbase qtmultimedia qtsvg ] diff --git a/pkgs/applications/audio/caps/default.nix b/pkgs/applications/audio/caps/default.nix index 2d90599346f..1f53809e905 100644 --- a/pkgs/applications/audio/caps/default.nix +++ b/pkgs/applications/audio/caps/default.nix @@ -1,23 +1,12 @@ { stdenv, fetchurl }: stdenv.mkDerivation rec { name = "caps-${version}"; - version = "0.9.24"; + version = "0.9.26"; src = fetchurl { url = "http://www.quitte.de/dsp/caps_${version}.tar.bz2"; - sha256 = "081zx0i2ysw5nmy03j60q9j11zdlg1fxws81kwanncdgayxgwipp"; + sha256 = "1jcq9y51vdnk93q27r566y9qmddvadhr4ddnvkiypaq5rrdnqjg7"; }; - patches = [ - (fetchurl { - url = "https://salsa.debian.org/multimedia-team/caps/raw/9a99c225/debian/patches/0001-Avoid-ambiguity-in-div-invocation.patch"; - sha256 = "1b1pb5yfskiw8zi1lkj572l2ajpirh4amq538vggwvlpv1fqfway"; - }) - (fetchurl { - url = "https://salsa.debian.org/multimedia-team/caps/raw/a411203d/debian/patches/0002-Use-standard-exp10f-instead-of-pow10f.patch"; - sha256 = "18ciklnscabr77l8b89xmbagkk79w4iqfpzr2yhn2ywv2jp8akx9"; - }) - ]; - configurePhase = '' echo "PREFIX = $out" > defines.make ''; diff --git a/pkgs/applications/audio/clementine/default.nix b/pkgs/applications/audio/clementine/default.nix index 611828753e4..a28125d24d4 100644 --- a/pkgs/applications/audio/clementine/default.nix +++ b/pkgs/applications/audio/clementine/default.nix @@ -69,7 +69,8 @@ let name = "clementine-free-${version}"; inherit src patches nativeBuildInputs postPatch; - buildInputs = buildInputs ++ [ makeWrapper ]; + # gst_plugins needed for setup-hooks + buildInputs = buildInputs ++ [ makeWrapper gst_plugins ]; cmakeFlags = [ "-DUSE_SYSTEM_PROJECTM=ON" ]; @@ -101,7 +102,7 @@ let ./clementine-spotify-blob.patch ]; - buildInputs = buildInputs ++ [ libspotify makeWrapper gst_plugins ]; + buildInputs = buildInputs ++ [ libspotify makeWrapper ]; # Only build and install the Spotify blob preBuild = '' cd ext/clementine-spotifyblob diff --git a/pkgs/applications/audio/cmusfm/default.nix b/pkgs/applications/audio/cmusfm/default.nix new file mode 100644 index 00000000000..e528e9699a7 --- /dev/null +++ b/pkgs/applications/audio/cmusfm/default.nix @@ -0,0 +1,36 @@ +{ stdenv, fetchFromGitHub, autoreconfHook, pkgconfig, curl, libnotify, gdk_pixbuf }: + +stdenv.mkDerivation rec { + version = "2018-10-11"; + name = "cmusfm-unstable-${version}"; + src = fetchFromGitHub { + owner = "Arkq"; + repo = "cmusfm"; + rev = "ad2fd0aad3f4f1a25add1b8c2f179e8859885873"; + sha256 = "0wpwdwgyrp64nvwc6shy0n387p31j6aw6cnmfi9x2y1jhl5hbv6b"; + }; + # building + configureFlags = [ "--enable-libnotify" ]; + nativeBuildInputs = [ autoreconfHook pkgconfig ]; + buildInputs = [ curl libnotify gdk_pixbuf ]; + + meta = with stdenv.lib; { + description = "Last.fm and Libre.fm standalone scrobbler for the cmus music player"; + longDescription = '' + Features: + + Listening now notification support + + Off-line played track cache for later submission + + POSIX ERE-based file name parser + + Desktop notification support (optionally) + + Customizable scrobbling service + + Small memory footprint + Configuration: + + 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/; + 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 new file mode 100644 index 00000000000..b7b8a4410b7 --- /dev/null +++ b/pkgs/applications/audio/cozy-audiobooks/default.nix @@ -0,0 +1,79 @@ +{ stdenv, fetchFromGitHub +, ninja +, boost +, meson +, pkgconfig +, wrapGAppsHook +, appstream-glib +, desktop-file-utils +, gtk3 +, gst_all_1 +, gobject-introspection +, python3Packages +, file +, cairo +, sqlite +, gettext +, gnome3 +}: + +python3Packages.buildPythonApplication rec { + + format = "other"; # no setup.py + + pname = "cozy"; + version = "0.6.7"; + + src = fetchFromGitHub { + owner = "geigi"; + repo = pname; + rev = version; + sha256 = "0f8dyqj6111czn8spgsnic1fqs3kimjwl1b19mw55fa924b9bhsa"; + }; + + nativeBuildInputs = [ + meson ninja pkgconfig + wrapGAppsHook + appstream-glib + desktop-file-utils + gobject-introspection + ]; + + buildInputs = [ + gtk3 + cairo + gettext + gnome3.defaultIconTheme + ] ++ (with gst_all_1; [ + gstreamer + gst-plugins-good + gst-plugins-ugly + gst-plugins-base + ]); + + propagatedBuildInputs = with python3Packages; [ + gst-python + pygobject3 + dbus-python + mutagen + peewee + magic + ]; + + postPatch = '' + chmod +x data/meson_post_install.py + patchShebangs data/meson_post_install.py + substituteInPlace cozy/magic/magic.py --replace "ctypes.util.find_library('magic')" "'${file}/lib/libmagic${stdenv.hostPlatform.extensions.sharedLibrary}'" + ''; + + postInstall = '' + ln -s $out/bin/com.github.geigi.cozy $out/bin/cozy + ''; + + meta = with stdenv.lib; { + description = "A modern audio book player for Linux using GTK+ 3"; + 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 0383af06795..f7bf919c221 100644 --- a/pkgs/applications/audio/crip/default.nix +++ b/pkgs/applications/audio/crip/default.nix @@ -2,7 +2,6 @@ , fetchurl , makeWrapper -, perl , perlPackages , cdparanoia @@ -26,7 +25,7 @@ stdenv.mkDerivation rec { sha256 = "0pk9152wll6fmkj1pki3fz3ijlf06jyk32v31yarwvdkwrk7s9xz"; }; - buildInputs = [ perl perlPackages.CDDB_get ]; + buildInputs = [ perlPackages.perl perlPackages.CDDB_get ]; nativeBuildInputs = [ makeWrapper ]; toolDeps = makeBinPath [ @@ -53,7 +52,7 @@ stdenv.mkDerivation rec { --replace '$editor = "vim";' '$editor = "${nano}/bin/nano";' wrapProgram $out/bin/$script \ - --set PERL5LIB "${makePerlPath [ perlPackages.CDDB_get ]}" \ + --set PERL5LIB "${perlPackages.makePerlPath [ perlPackages.CDDB_get ]}" \ --set PATH "${toolDeps}" done ''; diff --git a/pkgs/applications/audio/csound/csound-qt/default.nix b/pkgs/applications/audio/csound/csound-qt/default.nix new file mode 100644 index 00000000000..e9415335388 --- /dev/null +++ b/pkgs/applications/audio/csound/csound-qt/default.nix @@ -0,0 +1,49 @@ +{ stdenv, csound, desktop-file-utils, + fetchFromGitHub, python, python-qt, qmake, + qtwebengine, rtmidi, unzip }: + +stdenv.mkDerivation rec { + name = "csound-qt-${version}"; + version = "0.9.6-beta2"; + + src = fetchFromGitHub { + owner = "CsoundQt"; + repo = "CsoundQt"; + rev = "${version}"; + sha256 = "12jv7cvns3wj2npha0mvpn88kkkfsxsvhgzs2wrw04kbrvbhbffi"; + }; + + patches = [ ./rtmidipath.patch ]; + + nativeBuildInputs = [ qmake qtwebengine ]; + + buildInputs = [ csound desktop-file-utils rtmidi unzip ]; + + qmakeFlags = [ "qcs.pro" "CONFIG+=rtmidi" "CONFIG+=pythonqt" + "CSOUND_INCLUDE_DIR=${csound}/include/csound" + "CSOUND_LIBRARY_DIR=${csound}/lib" + "RTMIDI_DIR=${rtmidi.src}" + "PYTHONQT_SRC_DIR=${python-qt}/lib" + "PYTHONQT_LIB_DIR=${python-qt}/lib" + "LIBS+=${python-qt}/lib/libPythonQt-Qt5-Python2.7.so" + "LIBS+=${python-qt}/lib/libPythonQt_QtAll-Qt5-Python2.7.so" + "INCLUDEPATH+=${python-qt}/include/PythonQt" + "INCLUDEPATH+=${python}/include/python2.7" + "INSTALL_DIR=$(out)" + "SHARE_DIR=$(out)/share" + ]; + + installPhase = '' + mkdir -p $out + cp -r bin $out + make install + ''; + + meta = with stdenv.lib; { + description = "CsoundQt is a frontend for Csound with editor, integrated help, widgets and other features."; + homepage = https://csoundqt.github.io/; + license = licenses.gpl2; + platforms = platforms.linux; + maintainers = with maintainers; [ hlolli ]; + }; +} diff --git a/pkgs/applications/audio/csound/csound-qt/rtmidipath.patch b/pkgs/applications/audio/csound/csound-qt/rtmidipath.patch new file mode 100644 index 00000000000..f9522adb4b3 --- /dev/null +++ b/pkgs/applications/audio/csound/csound-qt/rtmidipath.patch @@ -0,0 +1,17 @@ +diff --git a/src/src.pri b/src/src.pri +index e5e0c896..9a9fa513 100644 +--- a/src/src.pri ++++ b/src/src.pri +@@ -155,9 +155,9 @@ pythonqt { + "src/pyqcsobject.cpp" + } + rtmidi { +- HEADERS += "src/../$${RTMIDI_DIR}/RtMidi.h" +- SOURCES += "src/../$${RTMIDI_DIR}/RtMidi.cpp" +- INCLUDEPATH += src/../$${RTMIDI_DIR} ++ HEADERS += "$${RTMIDI_DIR}/RtMidi.h" ++ SOURCES += "$${RTMIDI_DIR}/RtMidi.cpp" ++ INCLUDEPATH += $${RTMIDI_DIR} + } + + perfThread_build { diff --git a/pkgs/applications/audio/csound/default.nix b/pkgs/applications/audio/csound/default.nix index c8ac0a938ef..b11f525e9d2 100644 --- a/pkgs/applications/audio/csound/default.nix +++ b/pkgs/applications/audio/csound/default.nix @@ -14,7 +14,10 @@ stdenv.mkDerivation rec { name = "csound-${version}"; - version = "6.11.0"; + # When updating, please check if https://github.com/csound/csound/issues/1078 + # has been fixed in the new version so we can use the normal fluidsynth + # version and remove fluidsynth 1.x from nixpkgs again. + version = "6.12.2"; enableParallelBuilding = true; @@ -24,7 +27,7 @@ stdenv.mkDerivation rec { owner = "csound"; repo = "csound"; rev = version; - sha256 = "1nnfl8dqvc5b3f94zbvdg6bxr2wlp7as78hb31awxmvfwwihpv18"; + sha256 = "01krxcf0alw9k7p5sv0s707600an4sl7lhw3bymbwgqrj0v2p9z2"; }; cmakeFlags = [ "-DBUILD_CSOUND_AC=0" ] # fails to find Score.hpp diff --git a/pkgs/applications/audio/distrho/default.nix b/pkgs/applications/audio/distrho/default.nix index bf79b68bc7d..1c41451b08f 100644 --- a/pkgs/applications/audio/distrho/default.nix +++ b/pkgs/applications/audio/distrho/default.nix @@ -1,7 +1,13 @@ { stdenv, fetchFromGitHub, alsaLib, fftwSinglePrec, freetype, libjack2 -, pkgconfig, premake3, xorg, ladspa-sdk }: +, pkgconfig, ladspa-sdk, premake3 +, libX11, libXcomposite, libXcursor, libXext, libXinerama, libXrender +}: -stdenv.mkDerivation rec { +let + premakeos = if stdenv.hostPlatform.isDarwin then "osx" + else if stdenv.hostPlatform.isWindows then "mingw" + else "linux"; +in stdenv.mkDerivation rec { name = "distrho-ports-${version}"; version = "2018-04-16"; @@ -12,27 +18,26 @@ stdenv.mkDerivation rec { sha256 = "0l4zwl4mli8jzch32a1fh7c88r9q17xnkxsdw17ds5hadnxlk12v"; }; + configurePhase = '' + runHook preConfigure + + sh ./scripts/premake-update.sh ${premakeos} + + runHook postConfigure + ''; + patchPhase = '' sed -e "s#@./scripts#sh scripts#" -i Makefile ''; - nativeBuildInputs = [ pkgconfig ]; + nativeBuildInputs = [ pkgconfig premake3 ]; buildInputs = [ - alsaLib fftwSinglePrec freetype libjack2 premake3 - xorg.libX11 xorg.libXcomposite xorg.libXcursor xorg.libXext - xorg.libXinerama xorg.libXrender ladspa-sdk + alsaLib fftwSinglePrec freetype libjack2 + libX11 libXcomposite libXcursor libXext + libXinerama libXrender ladspa-sdk ]; - buildPhase = '' - sh ./scripts/premake-update.sh linux - make lv2 - ''; - - installPhase = '' - mkdir -p $out/bin - mkdir -p $out/lib/lv2 - cp -a bin/lv2/* $out/lib/lv2/ - ''; + makeFlags = "PREFIX=$(out)"; meta = with stdenv.lib; { homepage = http://distrho.sourceforge.net; diff --git a/pkgs/applications/audio/dragonfly-reverb/default.nix b/pkgs/applications/audio/dragonfly-reverb/default.nix index b3d9fd58028..1710931aa22 100644 --- a/pkgs/applications/audio/dragonfly-reverb/default.nix +++ b/pkgs/applications/audio/dragonfly-reverb/default.nix @@ -1,12 +1,14 @@ -{ stdenv, fetchgit, libjack2, libGL, pkgconfig, xorg }: +{ stdenv, fetchFromGitHub, libjack2, libGL, pkgconfig, xorg }: stdenv.mkDerivation rec { name = "dragonfly-reverb-${src.rev}"; - src = fetchgit { - url = "https://github.com/michaelwillis/dragonfly-reverb"; - rev = "0.9.1"; - sha256 = "1dbykx044h768bbzabdagl4jh65gqgfsxsrarjrkp07sqnhlnhpd"; + src = fetchFromGitHub { + owner = "michaelwillis"; + repo = "dragonfly-reverb"; + rev = "1.0.0"; + sha256 = "05m4hd8lg0a7iiia6cbiw5qmc4p8vbkxp2qh7ywaabawiwa9r24x"; + fetchSubmodules = true; }; patchPhase = '' diff --git a/pkgs/applications/audio/drumkv1/default.nix b/pkgs/applications/audio/drumkv1/default.nix index 555a44e89eb..fd5cc4a416e 100644 --- a/pkgs/applications/audio/drumkv1/default.nix +++ b/pkgs/applications/audio/drumkv1/default.nix @@ -2,11 +2,11 @@ stdenv.mkDerivation rec { name = "drumkv1-${version}"; - version = "0.9.2"; + version = "0.9.4"; src = fetchurl { url = "mirror://sourceforge/drumkv1/${name}.tar.gz"; - sha256 = "1z9l43z91d01b9rzam2cj9qmmg6s5y65fjvb83ms4iaa1p0mnwrn"; + sha256 = "02j10khl3wd17z0wfs3crr55wv7h9f0qhhg90xg0kvrxvw83vzy9"; }; buildInputs = [ libjack2 alsaLib libsndfile liblo lv2 qt5.qtbase qt5.qttools ]; diff --git a/pkgs/applications/audio/espeak-ng/default.nix b/pkgs/applications/audio/espeak-ng/default.nix index f4160ff6f80..5d0af8cf17a 100644 --- a/pkgs/applications/audio/espeak-ng/default.nix +++ b/pkgs/applications/audio/espeak-ng/default.nix @@ -27,7 +27,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Open source speech synthesizer that supports over 70 languages, based on eSpeak"; - homepage = https://github.com/espeak-ng/espeak-ng; + homepage = src.meta.homepage; license = licenses.gpl3; maintainers = with maintainers; [ aske ]; platforms = platforms.linux; diff --git a/pkgs/applications/audio/faust/faust1.nix b/pkgs/applications/audio/faust/faust1.nix index bf5bb781585..6e47d921d34 100644 --- a/pkgs/applications/audio/faust/faust1.nix +++ b/pkgs/applications/audio/faust/faust1.nix @@ -18,7 +18,7 @@ let meta = with stdenv.lib; { homepage = http://faust.grame.fr/; - downloadPage = http://sourceforge.net/projects/faudiostream/files/; + 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 cfb37e5761a..383d2deb10b 100644 --- a/pkgs/applications/audio/faust/faust2.nix +++ b/pkgs/applications/audio/faust/faust2.nix @@ -27,7 +27,7 @@ let meta = with stdenv.lib; { homepage = http://faust.grame.fr/; - downloadPage = http://sourceforge.net/projects/faudiostream/files/; + 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/faustlive.nix b/pkgs/applications/audio/faust/faustlive.nix index b8ff73f2cb3..754c4807060 100644 --- a/pkgs/applications/audio/faust/faustlive.nix +++ b/pkgs/applications/audio/faust/faustlive.nix @@ -1,5 +1,5 @@ { stdenv, fetchFromGitHub -, llvm, qt48Full, libqrencode, libmicrohttpd, libjack2, alsaLib, faust, curl +, llvm, qt48Full, qrencode, libmicrohttpd, libjack2, alsaLib, faust, curl , bc, coreutils, which }: @@ -14,7 +14,7 @@ stdenv.mkDerivation rec { }; buildInputs = [ - llvm qt48Full libqrencode libmicrohttpd libjack2 alsaLib faust curl + llvm qt48Full qrencode libmicrohttpd libjack2 alsaLib faust curl bc coreutils which ]; diff --git a/pkgs/applications/audio/flacon/default.nix b/pkgs/applications/audio/flacon/default.nix index 8f3facec09b..cec20743abd 100644 --- a/pkgs/applications/audio/flacon/default.nix +++ b/pkgs/applications/audio/flacon/default.nix @@ -5,13 +5,13 @@ stdenv.mkDerivation rec { name = "flacon-${version}"; - version = "4.1.0"; + version = "5.0.0"; src = fetchFromGitHub { owner = "flacon"; repo = "flacon"; rev = "v${version}"; - sha256 = "1sw2v2w3s79lbzhkf96m8lwvag824am7rwfzzsi8bz6sa6krmj0m"; + sha256 = "0pglqm2z7mp5igqmfnmvrgjhfbfrj8q5jvd0a0g2dzv3rqwfw4vc"; }; nativeBuildInputs = [ cmake pkgconfig makeWrapper ]; diff --git a/pkgs/applications/audio/fluidsynth/default.nix b/pkgs/applications/audio/fluidsynth/default.nix index 27ca539850e..3eb5806aa4c 100644 --- a/pkgs/applications/audio/fluidsynth/default.nix +++ b/pkgs/applications/audio/fluidsynth/default.nix @@ -1,17 +1,33 @@ { stdenv, lib, fetchFromGitHub, pkgconfig, cmake , alsaLib, glib, libjack2, libsndfile, libpulseaudio , AudioUnit, CoreAudio, CoreMIDI, CoreServices +, version ? "2" }: +let + versionMap = { + "1" = { + fluidsynthVersion = "1.1.11"; + sha256 = "0n75jq3xgq46hfmjkaaxz3gic77shs4fzajq40c8gk043i84xbdh"; + }; + "2" = { + fluidsynthVersion = "2.0.2"; + sha256 = "02vs5sfsyh1dl7wlcvgs4w3x0qcmsl7vi000qgp99ynwh3wjb274"; + }; + }; +in + +with versionMap.${version}; + stdenv.mkDerivation rec { - name = "fluidsynth-${version}"; - version = "1.1.10"; + name = "fluidsynth-${fluidsynthVersion}"; + version = fluidsynthVersion; src = fetchFromGitHub { owner = "FluidSynth"; repo = "fluidsynth"; - rev = "v${version}"; - sha256 = "04jlgq1d1hd8r9cnmkl3lgf1fgm7kgy4hh9nfddap41fm1wp121p"; + rev = "v${fluidsynthVersion}"; + inherit sha256; }; nativeBuildInputs = [ pkgconfig cmake ]; diff --git a/pkgs/applications/audio/fomp/default.nix b/pkgs/applications/audio/fomp/default.nix index d7a46143939..680fab4ca64 100644 --- a/pkgs/applications/audio/fomp/default.nix +++ b/pkgs/applications/audio/fomp/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, lv2, pkgconfig, python2 }: +{ stdenv, fetchurl, lv2, pkgconfig, python2, wafHook }: stdenv.mkDerivation rec { name = "fomp-${version}"; @@ -9,15 +9,9 @@ stdenv.mkDerivation rec { sha256 = "1hh2xhknanqn3iwp12ihl6bf8p7bqxryms9qk7mh21lixl42b8k5"; }; - nativeBuildInputs = [ pkgconfig ]; + nativeBuildInputs = [ pkgconfig wafHook ]; buildInputs = [ lv2 python2 ]; - installPhase = '' - python waf configure --prefix=$out - python waf - python waf install - ''; - meta = with stdenv.lib; { homepage = http://drobilla.net/software/fomp/; description = "An LV2 port of the MCP, VCO, FIL, and WAH plugins by Fons Adriaensen"; diff --git a/pkgs/applications/audio/gnome-podcasts/default.nix b/pkgs/applications/audio/gnome-podcasts/default.nix new file mode 100644 index 00000000000..c8db1ac6d10 --- /dev/null +++ b/pkgs/applications/audio/gnome-podcasts/default.nix @@ -0,0 +1,44 @@ +{ stdenv, fetchurl, fetchFromGitLab, meson, ninja, gettext, cargo, rustc, python3, rustPlatform, pkgconfig, gnome3 +, glib, libhandy, gtk3, dbus, openssl, sqlite, gst_all_1, wrapGAppsHook }: + +# TODO: build from git for easier updates +# rustPlatform.buildRustPackage rec { +stdenv.mkDerivation rec { + version = "0.4.6"; + name = "gnome-podcasts-${version}"; + + src = fetchurl { + url = https://gitlab.gnome.org/World/podcasts/uploads/e59ac5d618d7daf4c7f33ba72957c466/gnome-podcasts-0.4.6.tar.xz; + sha256 = "0g2rk3w251fp5jwbxs5ya1adv8nsgdqjy1vmfg8qqab6qyndhbrc"; + }; + + # src = fetchFromGitLab { + # domain = "gitlab.gnome.org"; + # owner = "World"; + # repo = "podcasts"; + # rev = version; + # sha256 = "15xj98dhxvys0cnya9488qsfsm0ys1wy69wkc39z8j6hwdm7byq2"; + # }; + + nativeBuildInputs = [ + meson ninja pkgconfig gettext cargo rustc python3 wrapGAppsHook + ]; + buildInputs = [ + glib gtk3 libhandy dbus openssl sqlite gst_all_1.gstreamer gst_all_1.gst-plugins-base gst_all_1.gst-plugins-bad + ]; + + # cargoSha256 = "0721b5f700vvvzvmdl8nfjaa6j412q1fjssgrjv8n6rmn9z13d2v"; + + postPatch = '' + chmod +x scripts/compile-gschema.py # patchShebangs requires executable file + patchShebangs scripts/compile-gschema.py + ''; + + meta = with stdenv.lib; { + description = "Listen to your favorite podcasts"; + homepage = https://wiki.gnome.org/Apps/Podcasts; + license = licenses.gpl3; + maintainers = gnome3.maintainers; + platforms = platforms.unix; + }; +} diff --git a/pkgs/applications/audio/gpodder/default.nix b/pkgs/applications/audio/gpodder/default.nix index ccd20a6b7b2..2da60a8bfd8 100644 --- a/pkgs/applications/audio/gpodder/default.nix +++ b/pkgs/applications/audio/gpodder/default.nix @@ -1,18 +1,18 @@ { stdenv, fetchFromGitHub, python3, python3Packages, intltool , glibcLocales, gnome3, gtk3, wrapGAppsHook -, ipodSupport ? false, libgpod, gobjectIntrospection +, ipodSupport ? false, libgpod, gobject-introspection }: python3Packages.buildPythonApplication rec { pname = "gpodder"; - version = "3.10.5"; + version = "3.10.6"; format = "other"; src = fetchFromGitHub { owner = "gpodder"; repo = "gpodder"; rev = version; - sha256 = "00lvma40d62h4haybabh15x1y7rnmd84whbjgjv773igwagkn9vw"; + sha256 = "11nccsnlxrj8wwl8dyz9a0yrzma6ipx5gwj2lc7m308z60r8wvjs"; }; postPatch = with stdenv.lib; '' @@ -27,7 +27,7 @@ python3Packages.buildPythonApplication rec { buildInputs = [ python3 - gobjectIntrospection + gobject-introspection gnome3.defaultIconTheme ]; diff --git a/pkgs/applications/audio/gradio/default.nix b/pkgs/applications/audio/gradio/default.nix index 0e636c532b4..3aea07235d8 100644 --- a/pkgs/applications/audio/gradio/default.nix +++ b/pkgs/applications/audio/gradio/default.nix @@ -16,7 +16,7 @@ , gst_plugins ? with gst_all_1; [ gst-plugins-good gst-plugins-ugly ] }: let - version = "7.1"; + version = "7.2"; in stdenv.mkDerivation rec { name = "gradio-${version}"; @@ -25,7 +25,7 @@ in stdenv.mkDerivation rec { owner = "haecker-felix"; repo = "gradio"; rev = "v${version}"; - sha256 = "0x0hmcjvpgvsm64ywcc71srlwqybfhadn5nkwycq0lh7r49d89kx"; + sha256 = "0c4vlrfl0ljkiwarpwa8wcfmmihh6a5j4pi4yr0qshyl9xxvxiv3"; }; nativeBuildInputs = [ diff --git a/pkgs/applications/audio/gtkpod/default.nix b/pkgs/applications/audio/gtkpod/default.nix index 6546fd7866e..c40f84348de 100644 --- a/pkgs/applications/audio/gtkpod/default.nix +++ b/pkgs/applications/audio/gtkpod/default.nix @@ -1,5 +1,5 @@ { stdenv, fetchurl, pkgconfig, wrapGAppsHook, intltool, libgpod, curl, flac, - gnome3, gtk3, gettext, perl, perlXMLParser, flex, libid3tag, + gnome3, gtk3, gettext, perlPackages, flex, libid3tag, gdl, libvorbis, gdk_pixbuf }: stdenv.mkDerivation rec { @@ -13,10 +13,10 @@ stdenv.mkDerivation rec { nativeBuildInputs = [ pkgconfig wrapGAppsHook intltool ]; buildInputs = [ - curl gettext perl perlXMLParser + curl gettext flex libgpod libid3tag flac libvorbis gtk3 gdk_pixbuf - gnome3.gdl gnome3.defaultIconTheme gnome3.anjuta - ]; + gdl gnome3.defaultIconTheme gnome3.anjuta + ] ++ (with perlPackages; [ perl XMLParser ]); patchPhase = '' sed -i 's/which/type -P/' scripts/*.sh diff --git a/pkgs/applications/audio/guitarix/default.nix b/pkgs/applications/audio/guitarix/default.nix index 041f847585d..bc4c18aab08 100644 --- a/pkgs/applications/audio/guitarix/default.nix +++ b/pkgs/applications/audio/guitarix/default.nix @@ -2,7 +2,7 @@ , avahi, bluez, boost, eigen, fftw, glib, glib-networking , glibmm, gsettings-desktop-schemas, gtkmm2, libjack2 , ladspaH, libav, librdf, libsndfile, lilv, lv2, serd, sord, sratom -, wrapGAppsHook, zita-convolver, zita-resampler, curl +, wrapGAppsHook, zita-convolver, zita-resampler, curl, wafHook , optimizationSupport ? false # Enable support for native CPU extensions }: @@ -19,7 +19,7 @@ stdenv.mkDerivation rec { sha256 = "1wfm8wrwrnqpb4ihy75n7l9i6vml536jlq9pdx2pblbc4ba3paac"; }; - nativeBuildInputs = [ gettext intltool wrapGAppsHook pkgconfig python2 ]; + nativeBuildInputs = [ gettext intltool wrapGAppsHook pkgconfig python2 wafHook ]; buildInputs = [ avahi bluez boost eigen fftw glib glibmm glib-networking.out @@ -38,12 +38,6 @@ stdenv.mkDerivation rec { "--convolver-ffmpeg" ] ++ optional optimizationSupport "--optimization"; - configurePhase = ''python2 waf configure --prefix=$out $configureFlags''; - - buildPhase = ''python2 waf build''; - - installPhase = ''python2 waf install''; - meta = with stdenv.lib; { description = "A virtual guitar amplifier for Linux running with JACK"; longDescription = '' diff --git a/pkgs/applications/audio/gxplugins-lv2/default.nix b/pkgs/applications/audio/gxplugins-lv2/default.nix new file mode 100644 index 00000000000..62f11cbfb74 --- /dev/null +++ b/pkgs/applications/audio/gxplugins-lv2/default.nix @@ -0,0 +1,29 @@ +{ stdenv, fetchFromGitHub, xorg, xorgproto, cairo, lv2, pkgconfig }: + +stdenv.mkDerivation rec { + name = "${pname}-${version}"; + pname = "GxPlugins.lv2"; + version = "0.5"; + + src = fetchFromGitHub { + owner = "brummer10"; + repo = pname; + rev = "v${version}"; + sha256 = "16r5bj7w726d9327flg530fn0bli4crkxjss7i56yhb1bsi39mbv"; + fetchSubmodules = true; + }; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ + xorg.libX11 xorgproto cairo lv2 + ]; + + installFlags = [ "INSTALL_DIR=$(out)/lib/lv2" ]; + + meta = with stdenv.lib; { + 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/hybridreverb2/default.nix b/pkgs/applications/audio/hybridreverb2/default.nix new file mode 100644 index 00000000000..19aac1bd1e9 --- /dev/null +++ b/pkgs/applications/audio/hybridreverb2/default.nix @@ -0,0 +1,49 @@ +{ stdenv, fetchFromGitHub, fetchzip, cmake, pkgconfig, lv2, alsaLib, libjack2, + freetype, libX11, gtk3, pcre, libpthreadstubs, libXdmcp, libxkbcommon, + epoxy, at-spi2-core, dbus, curl, fftwFloat }: + +let + pname = "HybridReverb2"; + version = "2.1.1"; + owner = "jpcima"; + DBversion = "1.0.0"; +in + +stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + impulseDB = fetchzip { + url = "https://github.com/${owner}/${pname}-impulse-response-database/archive/v${DBversion}.zip"; + sha256 = "1hlfxbbkahm1k2sk3c3n2mjaz7k80ky3r55xil8nfbvbv0qan89z"; + }; + + src = fetchFromGitHub { + inherit owner; + repo = pname; + rev = "v${version}"; + sha256 = "15mba9qvlis0qrklr50wp3jdysvmk33m7pvclp0k1is9pirj97cb"; + fetchSubmodules = true; + }; + + nativeBuildInputs = [ pkgconfig cmake ]; + buildInputs = [ lv2 alsaLib libjack2 freetype libX11 gtk3 pcre + libpthreadstubs libXdmcp libxkbcommon epoxy at-spi2-core dbus curl fftwFloat ]; + + cmakeFlags = [ + "-DHybridReverb2_AdvancedJackStandalone=ON" + "-DHybridReverb2_UseLocalDatabase=ON" + ]; + + postInstall = '' + mkdir -p $out/share/${pname}/ + cp -r ${impulseDB}/* $out/share/${pname}/ + ''; + + meta = with stdenv.lib; { + homepage = http://www2.ika.ruhr-uni-bochum.de/HybridReverb2; + description = "Reverb effect using hybrid impulse convolution"; + license = licenses.gpl2Plus; + maintainers = [ maintainers.magnetophon ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/applications/audio/ingen/default.nix b/pkgs/applications/audio/ingen/default.nix index d9109dd1c0e..1e249b51fb7 100644 --- a/pkgs/applications/audio/ingen/default.nix +++ b/pkgs/applications/audio/ingen/default.nix @@ -1,6 +1,6 @@ { stdenv, fetchgit, boost, ganv, glibmm, gtkmm2, libjack2, lilv , lv2Unstable, makeWrapper, pkgconfig, python, raul, rdflib, serd, sord, sratom - +, wafHook , suil }: @@ -15,27 +15,23 @@ stdenv.mkDerivation rec { deepClone = true; }; - nativeBuildInputs = [ pkgconfig ]; + nativeBuildInputs = [ pkgconfig wafHook ]; buildInputs = [ boost ganv glibmm gtkmm2 libjack2 lilv lv2Unstable makeWrapper python raul serd sord sratom suil ]; - configurePhase = '' + preConfigure = '' sed -e "s@{PYTHONDIR}/'@out/'@" -i wscript - ${python.interpreter} waf configure --prefix=$out ''; propagatedBuildInputs = [ rdflib ]; - buildPhase = "${python.interpreter} waf"; - - installPhase = '' - ${python.interpreter} waf install + postInstall = '' for program in ingenams ingenish do wrapProgram $out/bin/$program \ - --prefix PYTHONPATH : $out/lib/python${python.majorVersion}/site-packages:$PYTHONPATH + --prefix PYTHONPATH : $out/${python.sitePackages}:$PYTHONPATH done ''; diff --git a/pkgs/applications/audio/jack-rack/default.nix b/pkgs/applications/audio/jack-rack/default.nix index d68e67d19dd..26a717dbd6e 100644 --- a/pkgs/applications/audio/jack-rack/default.nix +++ b/pkgs/applications/audio/jack-rack/default.nix @@ -7,6 +7,11 @@ stdenv.mkDerivation rec { }; nativeBuildInputs = [ pkgconfig ]; buildInputs = [ libjack2 ladspaH gtk2 alsaLib libxml2 librdf ]; + NIX_LDFLAGS = [ + "-ldl" + "-lm" + "-lpthread" + ]; meta = { description = ''An effects "rack" for the JACK low latency audio API''; diff --git a/pkgs/applications/audio/jackmix/default.nix b/pkgs/applications/audio/jackmix/default.nix index aa78527d787..83644dd5ea5 100644 --- a/pkgs/applications/audio/jackmix/default.nix +++ b/pkgs/applications/audio/jackmix/default.nix @@ -17,12 +17,8 @@ stdenv.mkDerivation rec { jack ]; - buildPhase = '' - scons - ''; installPhase = '' - mkdir -p $out/bin - cp jackmix/jackmix $out/bin + install -D jackmix/jackmix $out/bin/jackmix ''; meta = { diff --git a/pkgs/applications/audio/jalv/default.nix b/pkgs/applications/audio/jalv/default.nix index f78110e8bbb..e2f0c7ea7af 100644 --- a/pkgs/applications/audio/jalv/default.nix +++ b/pkgs/applications/audio/jalv/default.nix @@ -1,5 +1,5 @@ { stdenv, fetchurl, gtk2, libjack2, lilv, lv2, pkgconfig, python -, serd, sord , sratom, suil }: +, serd, sord , sratom, suil, wafHook }: stdenv.mkDerivation rec { name = "jalv-${version}"; @@ -10,17 +10,11 @@ stdenv.mkDerivation rec { sha256 = "1x2wpzzx2cgvz3dgdcgsj8dr0w3zsasy62mvl199bsdj5fbjaili"; }; - nativeBuildInputs = [ pkgconfig ]; + nativeBuildInputs = [ pkgconfig wafHook ]; buildInputs = [ gtk2 libjack2 lilv lv2 python serd sord sratom suil ]; - configurePhase = "python waf configure --prefix=$out"; - - buildPhase = "python waf"; - - installPhase = "python waf install"; - meta = with stdenv.lib; { description = "A simple but fully featured LV2 host for Jack"; homepage = http://drobilla.net/software/jalv; diff --git a/pkgs/applications/audio/jamin/default.nix b/pkgs/applications/audio/jamin/default.nix index 77946fc41cc..eea9de5a159 100644 --- a/pkgs/applications/audio/jamin/default.nix +++ b/pkgs/applications/audio/jamin/default.nix @@ -1,5 +1,5 @@ { stdenv, fetchurl, fftwFloat, gtk2, ladspaPlugins, libjack2, liblo, libxml2 -, makeWrapper, pkgconfig, perl, perlXMLParser +, makeWrapper, pkgconfig, perlPackages }: stdenv.mkDerivation { @@ -11,11 +11,9 @@ stdenv.mkDerivation { }; nativeBuildInputs = [ pkgconfig ]; - buildInputs = [ - fftwFloat gtk2 ladspaPlugins libjack2 liblo libxml2 perl - perlXMLParser makeWrapper - ]; - + buildInputs = [ fftwFloat gtk2 ladspaPlugins libjack2 liblo libxml2 makeWrapper ] + ++ (with perlPackages; [ perl XMLParser ]); + postInstall = '' wrapProgram $out/bin/jamin --set LADSPA_PATH ${ladspaPlugins}/lib/ladspa ''; diff --git a/pkgs/applications/audio/kid3/default.nix b/pkgs/applications/audio/kid3/default.nix index 22342581434..522ffa2a533 100644 --- a/pkgs/applications/audio/kid3/default.nix +++ b/pkgs/applications/audio/kid3/default.nix @@ -9,11 +9,11 @@ stdenv.mkDerivation rec { name = "kid3-${version}"; - version = "3.6.2"; + version = "3.7.0"; src = fetchurl { url = "mirror://sourceforge/project/kid3/kid3/${version}/${name}.tar.gz"; - sha256 = "19yq39fqj19g98cxd4cdgv0f935ckfw0c43cxaxbf27x5f5dj0yz"; + sha256 = "1bj4kq9hklgfp81rbxcjzbxmdgxjqksx7cqnw3m9dc0pnns5jx0x"; }; buildInputs = with stdenv.lib; diff --git a/pkgs/applications/audio/klick/default.nix b/pkgs/applications/audio/klick/default.nix index 3a0da876acf..5e54609f8bf 100644 --- a/pkgs/applications/audio/klick/default.nix +++ b/pkgs/applications/audio/klick/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, scons, pkgconfig +{ stdenv, fetchurl, sconsPackages, pkgconfig , libsamplerate, libsndfile, liblo, libjack2, boost }: stdenv.mkDerivation rec { @@ -10,17 +10,11 @@ stdenv.mkDerivation rec { sha256 = "1289533c0849b1b66463bf27f7ce5f71736b655cfb7672ef884c7e6eb957ac42"; }; - nativeBuildInputs = [ pkgconfig ]; - buildInputs = [ scons libsamplerate libsndfile liblo libjack2 boost ]; + nativeBuildInputs = [ sconsPackages.scons_3_0_1 pkgconfig ]; + buildInputs = [ libsamplerate libsndfile liblo libjack2 boost ]; + prefixKey = "PREFIX="; NIX_CFLAGS_COMPILE = "-fpermissive"; - buildPhase = '' - mkdir -p $out - scons PREFIX=$out - ''; - - installPhase = "scons install"; - meta = { homepage = http://das.nasophon.de/klick/; description = "Advanced command-line metronome for JACK"; @@ -28,4 +22,3 @@ stdenv.mkDerivation rec { platforms = stdenv.lib.platforms.linux; }; } - diff --git a/pkgs/applications/audio/lash/default.nix b/pkgs/applications/audio/lash/default.nix index da61eee3b64..7fb5a01e2c8 100644 --- a/pkgs/applications/audio/lash/default.nix +++ b/pkgs/applications/audio/lash/default.nix @@ -18,6 +18,11 @@ stdenv.mkDerivation rec { buildInputs = [ alsaLib gtk2 libjack2 libxml2 makeWrapper pkgconfig readline ]; propagatedBuildInputs = [ libuuid ]; + NIX_LDFLAGS = [ + "-lm" + "-lpthread" + "-luuid" + ]; postInstall = '' for i in lash_control lash_panel @@ -30,7 +35,7 @@ stdenv.mkDerivation rec { longDescription = '' Session management system for GNU/Linux audio applications. ''; - homepage = http://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/lingot/default.nix b/pkgs/applications/audio/lingot/default.nix index 389db3d548d..d2ec92e0654 100644 --- a/pkgs/applications/audio/lingot/default.nix +++ b/pkgs/applications/audio/lingot/default.nix @@ -17,7 +17,7 @@ stdenv.mkDerivation { meta = { description = "Not a Guitar-Only tuner"; - homepage = http://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]; diff --git a/pkgs/applications/audio/lmms/default.nix b/pkgs/applications/audio/lmms/default.nix index 0ff864c0048..59e94e0bdad 100644 --- a/pkgs/applications/audio/lmms/default.nix +++ b/pkgs/applications/audio/lmms/default.nix @@ -1,17 +1,17 @@ { stdenv, fetchFromGitHub, cmake, pkgconfig, alsaLib ? null, fftwFloat, fltk13 -, fluidsynth ? null, lame ? null, libgig ? null, libjack2 ? null, libpulseaudio ? null +, fluidsynth_1 ? null, lame ? null, libgig ? null, libjack2 ? null, libpulseaudio ? null , libsamplerate, libsoundio ? null, libsndfile, libvorbis ? null, portaudio ? null , qtbase, qtx11extras, qttools, SDL ? null }: stdenv.mkDerivation rec { name = "lmms-${version}"; - version = "1.2.0-rc6"; + version = "1.2.0-rc7"; src = fetchFromGitHub { owner = "LMMS"; repo = "lmms"; rev = "v${version}"; - sha256 = "1pqir5srfrknfd8nmbz565ymq18ffw8d8k9pbmzggaxvlcr12b25"; + sha256 = "1hshzf2sbdfw37y9rz1ksgvn81kp2n23dp74lsaasc2n7wzjwdis"; fetchSubmodules = true; }; @@ -21,7 +21,7 @@ stdenv.mkDerivation rec { alsaLib fftwFloat fltk13 - fluidsynth + fluidsynth_1 lame libgig libjack2 diff --git a/pkgs/applications/audio/lollypop/default.nix b/pkgs/applications/audio/lollypop/default.nix index 2ba35a9a044..51c5cdad69d 100644 --- a/pkgs/applications/audio/lollypop/default.nix +++ b/pkgs/applications/audio/lollypop/default.nix @@ -1,11 +1,11 @@ { stdenv, fetchgit, meson, ninja, pkgconfig , python3, gtk3, gst_all_1, libsecret, libsoup -, appstream-glib, desktop-file-utils, gnome3 -, gobjectIntrospection, wrapGAppsHook }: +, appstream-glib, desktop-file-utils, totem-pl-parser +, gobject-introspection, wrapGAppsHook }: python3.pkgs.buildPythonApplication rec { - version = "0.9.601"; - name = "lollypop-${version}"; + pname = "lollypop"; + version = "0.9.914"; format = "other"; doCheck = false; @@ -14,13 +14,13 @@ python3.pkgs.buildPythonApplication rec { url = "https://gitlab.gnome.org/World/lollypop"; rev = "refs/tags/${version}"; fetchSubmodules = true; - sha256 = "029hyylwjsbwkw1v75nbkkmrncgz30y2qwdysmpz0xyb5q7x6zbj"; + sha256 = "0nkwic6mq4fs467c696m5w0wqrii5rzvf2il6vkw861my1bl9wzj"; }; - nativeBuildInputs = with python3.pkgs; [ + nativeBuildInputs = [ appstream-glib desktop-file-utils - gobjectIntrospection + gobject-introspection meson ninja pkgconfig @@ -28,7 +28,6 @@ python3.pkgs.buildPythonApplication rec { ]; buildInputs = with gst_all_1; [ - gnome3.totem-pl-parser gst-libav gst-plugins-bad gst-plugins-base @@ -38,9 +37,10 @@ python3.pkgs.buildPythonApplication rec { gtk3 libsecret libsoup + totem-pl-parser ]; - pythonPath = with python3.pkgs; [ + propagatedBuildInputs = with python3.pkgs; [ beautifulsoup4 gst-python pillow @@ -56,15 +56,15 @@ python3.pkgs.buildPythonApplication rec { ''; preFixup = '' - buildPythonPath "$out/libexec/lollypop-sp $pythonPath" + buildPythonPath "$out $propagatedBuildInputs" patchPythonScript "$out/libexec/lollypop-sp" ''; meta = with stdenv.lib; { description = "A modern music player for GNOME"; - homepage = https://wiki.gnome.org/Apps/Lollypop; - license = licenses.gpl3Plus; + homepage = https://wiki.gnome.org/Apps/Lollypop; + license = licenses.gpl3Plus; maintainers = with maintainers; [ worldofpeace ]; - platforms = platforms.linux; + platforms = platforms.linux; }; } diff --git a/pkgs/applications/audio/ltc-tools/default.nix b/pkgs/applications/audio/ltc-tools/default.nix new file mode 100644 index 00000000000..79edfdef504 --- /dev/null +++ b/pkgs/applications/audio/ltc-tools/default.nix @@ -0,0 +1,25 @@ +{stdenv, fetchFromGitHub, pkgconfig, libltc, libsndfile, jack2}: + +stdenv.mkDerivation rec { + name = "ltc-tools-${version}"; + version = "0.6.4"; + + src = fetchFromGitHub { + owner = "x42"; + repo = "ltc-tools"; + rev = "v${version}"; + sha256 = "1a7r99mwc7p5j5y453mrgph67wlznd674v4k2pfmlvc91s6lh44y"; + }; + + buildInputs = [ pkgconfig libltc libsndfile jack2 ]; + + makeFlags = [ "PREFIX=$(out)" ]; + + meta = with stdenv.lib; { + homepage = "https://github.com/x42/ltc-tools"; + description = "Tools to deal with linear-timecode (LTC)"; + license = licenses.gpl2; + platforms = platforms.unix; + maintainers = with maintainers; [ tg-x ]; + }; +} diff --git a/pkgs/applications/audio/luppp/build-install.patch b/pkgs/applications/audio/luppp/build-install.patch new file mode 100644 index 00000000000..4dae65438cb --- /dev/null +++ b/pkgs/applications/audio/luppp/build-install.patch @@ -0,0 +1,16 @@ +commit 4ec09e6f6e00e40622a5207ed24dc657da9a9090 +Author: Pavol Rusnak +Date: Tue Dec 4 12:06:22 2018 +0100 + + build: add install: true to executable in meson.build + +diff --git a/meson.build b/meson.build +index 050e1b1..9224ed5 100644 +--- a/meson.build ++++ b/meson.build +@@ -39,4 +39,5 @@ endforeach + + # compile the main project + executable('luppp', luppp_src + [version_hxx], ++ install: true, + dependencies: deps) diff --git a/pkgs/applications/audio/luppp/default.nix b/pkgs/applications/audio/luppp/default.nix new file mode 100644 index 00000000000..fdba836a6ae --- /dev/null +++ b/pkgs/applications/audio/luppp/default.nix @@ -0,0 +1,40 @@ +{ stdenv, fetchFromGitHub +, meson +, ninja +, pkgconfig +, jack2 +, cairo +, liblo +, libsndfile +, libsamplerate +, ntk +}: + +stdenv.mkDerivation rec { + pname = "luppp"; + version = "1.2.0"; + patches = [ ./build-install.patch ]; + + src = fetchFromGitHub { + owner = "openAVproductions"; + repo = "openAV-Luppp"; + rev = "release-${version}"; + sha256 = "194yq0lqc2psq9vyxmzif40ccawcvd9jndcn18mkz4f8h5w5rc1a"; + }; + + nativeBuildInputs = [ + meson ninja pkgconfig + ]; + + buildInputs = [ + jack2 cairo liblo libsndfile libsamplerate ntk + ]; + + meta = with stdenv.lib; { + homepage = http://openavproductions.com/luppp/; + description = "A music creation tool, intended for live use"; + license = licenses.gpl3Plus; + maintainers = with maintainers; [ prusnak ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/applications/audio/mda-lv2/default.nix b/pkgs/applications/audio/mda-lv2/default.nix index e27aab6e898..26290e5bf88 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 }: +{ stdenv, fetchurl, fftwSinglePrec, lv2, pkgconfig, python, wafHook }: stdenv.mkDerivation rec { name = "mda-lv2-${version}"; @@ -9,15 +9,9 @@ stdenv.mkDerivation rec { sha256 = "0hh40c5d2m0k5gb3vw031l6lqn59dg804an3mkmhkc7qv4gc6xm4"; }; - nativeBuildInputs = [ pkgconfig ]; + nativeBuildInputs = [ pkgconfig wafHook ]; buildInputs = [ fftwSinglePrec lv2 python ]; - configurePhase = "python waf configure --prefix=$out"; - - buildPhase = "python waf"; - - installPhase = "python waf install"; - meta = with stdenv.lib; { homepage = http://drobilla.net/software/mda-lv2/; description = "An LV2 port of the MDA plugins by Paul Kellett"; diff --git a/pkgs/applications/audio/mi2ly/default.nix b/pkgs/applications/audio/mi2ly/default.nix index 4dfc7b13046..58c1690a9bb 100644 --- a/pkgs/applications/audio/mi2ly/default.nix +++ b/pkgs/applications/audio/mi2ly/default.nix @@ -6,7 +6,7 @@ let version="0.12"; name="${baseName}-${version}"; hash="1b14zcwlvnxhjxr3ymyzg0mg4sbijkinzpxm641s859jxcgylmll"; - url="http://download.savannah.gnu.org/releases/mi2ly/mi2ly.0.12.tar.bz2"; + url="https://download.savannah.gnu.org/releases/mi2ly/mi2ly.0.12.tar.bz2"; sha256="1b14zcwlvnxhjxr3ymyzg0mg4sbijkinzpxm641s859jxcgylmll"; }; buildInputs = [ diff --git a/pkgs/applications/audio/mi2ly/default.upstream b/pkgs/applications/audio/mi2ly/default.upstream index 131f0e3a71d..0b2607989aa 100644 --- a/pkgs/applications/audio/mi2ly/default.upstream +++ b/pkgs/applications/audio/mi2ly/default.upstream @@ -1,3 +1,3 @@ -url http://download.savannah.gnu.org/releases/mi2ly/ +url https://download.savannah.gnu.org/releases/mi2ly/ ensure_choice version '.*/mi2ly[.]([0-9.]+)[.]tar.*' '\1' diff --git a/pkgs/applications/audio/mid2key/default.nix b/pkgs/applications/audio/mid2key/default.nix index 26ea2c7b0b2..3c5660724d3 100644 --- a/pkgs/applications/audio/mid2key/default.nix +++ b/pkgs/applications/audio/mid2key/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, alsaLib, libX11, libXi, libXtst, xextproto }: +{ stdenv, fetchurl, alsaLib, libX11, libXi, libXtst, xorgproto }: stdenv.mkDerivation rec { name = "mid2key-r1"; @@ -10,7 +10,7 @@ stdenv.mkDerivation rec { unpackPhase = "tar xvzf $src"; - buildInputs = [ alsaLib libX11 libXi libXtst xextproto ]; + buildInputs = [ alsaLib libX11 libXi libXtst xorgproto ]; buildPhase = "make"; diff --git a/pkgs/applications/audio/mimms/default.nix b/pkgs/applications/audio/mimms/default.nix index b9b840682d7..2d301a8b6a9 100644 --- a/pkgs/applications/audio/mimms/default.nix +++ b/pkgs/applications/audio/mimms/default.nix @@ -5,7 +5,7 @@ pythonPackages.buildPythonApplication rec { version = "3.2"; src = fetchurl { - url = "http://download.savannah.gnu.org/releases/mimms/mimms-${version}.tar.bz2"; + url = "https://download.savannah.gnu.org/releases/mimms/mimms-${version}.tar.bz2"; sha256 = "0zmcd670mpq85cs3nvdq3i805ba0d1alqahfy1m9cpf7kxrivfml"; }; diff --git a/pkgs/applications/audio/mixxx/default.nix b/pkgs/applications/audio/mixxx/default.nix index 28e29850606..4c84fb3c3f7 100644 --- a/pkgs/applications/audio/mixxx/default.nix +++ b/pkgs/applications/audio/mixxx/default.nix @@ -1,26 +1,27 @@ { stdenv, fetchFromGitHub, makeWrapper, chromaprint, fetchpatch , fftw, flac, faad2, glibcLocales, mp4v2 , libid3tag, libmad, libopus, libshout, libsndfile, libusb1, libvorbis +, opusfile , pkgconfig, portaudio, portmidi, protobuf, qt4, rubberband, scons, sqlite , taglib, upower, vampSDK }: stdenv.mkDerivation rec { name = "mixxx-${version}"; - version = "2.1.4"; + version = "2.1.5"; src = fetchFromGitHub { owner = "mixxxdj"; repo = "mixxx"; rev = "release-${version}"; - sha256 = "1q1px4033marraprvgr5yq9jlz943kcc10fdkn7py2ma8cfgnipq"; + sha256 = "0h14pwglz03sdmgzviypv1qa1xfjclrnhyqaq5nd60j47h4z39dr"; }; nativeBuildInputs = [ makeWrapper ]; buildInputs = [ chromaprint fftw flac faad2 glibcLocales mp4v2 libid3tag libmad libopus libshout libsndfile - libusb1 libvorbis pkgconfig portaudio portmidi protobuf qt4 + libusb1 libvorbis opusfile pkgconfig portaudio portmidi protobuf qt4 rubberband scons sqlite taglib upower vampSDK ]; @@ -28,28 +29,14 @@ stdenv.mkDerivation rec { "build=release" "qtdir=${qt4}" "faad=1" + "opus=1" ]; - buildPhase = '' - runHook preBuild - mkdir -p "$out" - scons \ - -j$NIX_BUILD_CORES -l$NIX_BUILD_CORES \ - $sconsFlags "prefix=$out" - runHook postBuild - ''; - - installPhase = '' - runHook preInstall - scons $sconsFlags "prefix=$out" install - runHook postInstall - ''; - fixupPhase = '' wrapProgram $out/bin/mixxx \ --set LOCALE_ARCHIVE ${glibcLocales}/lib/locale/locale-archive; ''; - + meta = with stdenv.lib; { homepage = https://mixxx.org; description = "Digital DJ mixing software"; diff --git a/pkgs/applications/audio/mopidy/default.nix b/pkgs/applications/audio/mopidy/default.nix index 753a273a08c..9015a8c749a 100644 --- a/pkgs/applications/audio/mopidy/default.nix +++ b/pkgs/applications/audio/mopidy/default.nix @@ -1,27 +1,27 @@ { stdenv, fetchFromGitHub, pythonPackages, wrapGAppsHook -, gst_all_1, glib-networking, gobjectIntrospection +, gst_all_1, glib-networking, gobject-introspection }: pythonPackages.buildPythonApplication rec { pname = "mopidy"; - version = "2.1.0"; + version = "2.2.2"; src = fetchFromGitHub { owner = "mopidy"; repo = "mopidy"; rev = "v${version}"; - sha256 = "0krq5fbscqxayyc4vxai7iwxm2kdbgs5jicrdb013v04phw2za06"; + sha256 = "01vl162c7ssf69b0m65ys9fxnsqnfa1whwbprnc063lkcnrnlkr1"; }; nativeBuildInputs = [ wrapGAppsHook ]; buildInputs = with gst_all_1; [ gst-plugins-base gst-plugins-good gst-plugins-ugly gst-plugins-bad - glib-networking gobjectIntrospection + glib-networking gobject-introspection ]; propagatedBuildInputs = with pythonPackages; [ - gst-python pygobject3 pykka tornado requests + gst-python pygobject3 pykka tornado_4 requests ] ++ stdenv.lib.optional (!stdenv.isDarwin) dbus-python; # There are no tests diff --git a/pkgs/applications/audio/mopidy/gmusic.nix b/pkgs/applications/audio/mopidy/gmusic.nix index 5566c4b07b2..8c173140efd 100644 --- a/pkgs/applications/audio/mopidy/gmusic.nix +++ b/pkgs/applications/audio/mopidy/gmusic.nix @@ -13,7 +13,7 @@ pythonPackages.buildPythonApplication rec { mopidy pythonPackages.requests pythonPackages.gmusicapi - pythonPackages.cachetools_1 + pythonPackages.cachetools ]; doCheck = false; diff --git a/pkgs/applications/audio/mopidy/iris.nix b/pkgs/applications/audio/mopidy/iris.nix index be44112d82a..dc129f945fd 100644 --- a/pkgs/applications/audio/mopidy/iris.nix +++ b/pkgs/applications/audio/mopidy/iris.nix @@ -2,11 +2,11 @@ pythonPackages.buildPythonApplication rec { pname = "Mopidy-Iris"; - version = "3.26.2"; + version = "3.31.8"; src = pythonPackages.fetchPypi { inherit pname version; - sha256 = "04jg5k8znkn0iirfnsndm74f8mypj8zwj76j489l0m263k1kn715"; + sha256 = "16rrvby6rdiz53minfqsbgmymnc4agi2iwp0pf5ahsaxp1xq0cqy"; }; propagatedBuildInputs = [ @@ -17,7 +17,7 @@ pythonPackages.buildPythonApplication rec { pylast spotipy raven - tornado + tornado_4 ]); postPatch = "sed -i /tornado/d setup.py"; diff --git a/pkgs/applications/audio/mopidy/local-images.nix b/pkgs/applications/audio/mopidy/local-images.nix index 3e10904f3e6..2ffc736572b 100644 --- a/pkgs/applications/audio/mopidy/local-images.nix +++ b/pkgs/applications/audio/mopidy/local-images.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchFromGitHub, pythonPackages, mopidy, gobjectIntrospection }: +{ stdenv, fetchFromGitHub, pythonPackages, mopidy, gobject-introspection }: pythonPackages.buildPythonApplication rec { pname = "mopidy-local-images"; @@ -11,7 +11,7 @@ pythonPackages.buildPythonApplication rec { sha256 = "0gdqxws0jish50mmi57mlqcs659wrllzv00czl18niz94vzvyc0d"; }; - buildInputs = [ gobjectIntrospection ]; + buildInputs = [ gobject-introspection ]; checkInputs = [ pythonPackages.mock diff --git a/pkgs/applications/audio/musescore/default.nix b/pkgs/applications/audio/musescore/default.nix index 28381fcfee6..340978c8183 100644 --- a/pkgs/applications/audio/musescore/default.nix +++ b/pkgs/applications/audio/musescore/default.nix @@ -1,20 +1,24 @@ { stdenv, lib, fetchFromGitHub, cmake, pkgconfig , alsaLib, freetype, libjack2, lame, libogg, libpulseaudio, libsndfile, libvorbis , portaudio, portmidi, qtbase, qtdeclarative, qtscript, qtsvg, qttools -, qtwebkit, qtxmlpatterns +, qtwebengine, qtxmlpatterns }: stdenv.mkDerivation rec { name = "musescore-${version}"; - version = "2.3.2"; + version = "3.0"; src = fetchFromGitHub { owner = "musescore"; repo = "MuseScore"; rev = "v${version}"; - sha256 = "0ncv0xfmq87plqa43cm0fpidlwzz1nq5s7h7139llrbc36yp3pr1"; + sha256 = "0g8n8xpw5d6wh8bwbvy12sinl9i0ir009sr28i4izr28lr4x8v50"; }; + patches = [ + ./remove_qtwebengine_install_hack.patch + ]; + cmakeFlags = [ ] ++ lib.optional (lib.versionAtLeast freetype.version "2.5.2") "-DUSE_SYSTEM_FREETYPE=ON"; @@ -23,7 +27,7 @@ stdenv.mkDerivation rec { buildInputs = [ alsaLib libjack2 freetype lame libogg libpulseaudio libsndfile libvorbis portaudio portmidi # tesseract - qtbase qtdeclarative qtscript qtsvg qttools qtwebkit qtxmlpatterns + qtbase qtdeclarative qtscript qtsvg qttools qtwebengine qtxmlpatterns ]; meta = with stdenv.lib; { diff --git a/pkgs/applications/audio/musescore/remove_qtwebengine_install_hack.patch b/pkgs/applications/audio/musescore/remove_qtwebengine_install_hack.patch new file mode 100644 index 00000000000..53a0c90ce46 --- /dev/null +++ b/pkgs/applications/audio/musescore/remove_qtwebengine_install_hack.patch @@ -0,0 +1,25 @@ +--- a/mscore/CMakeLists.txt ++++ b/mscore/CMakeLists.txt +@@ -660,22 +660,6 @@ if (MINGW) + else (MINGW) + + if ( NOT MSVC ) +-## install qwebengine core +- if (NOT APPLE AND USE_WEBENGINE) +- install(FILES +- ${QT_INSTALL_LIBEXECS}/QtWebEngineProcess +- DESTINATION bin +- ) +- install(DIRECTORY +- ${QT_INSTALL_DATA}/resources +- DESTINATION lib/qt5 +- ) +- install(DIRECTORY +- ${QT_INSTALL_TRANSLATIONS}/qtwebengine_locales +- DESTINATION lib/qt5/translations +- ) +- endif(NOT APPLE AND USE_WEBENGINE) +- + target_link_libraries(mscore + ${ALSA_LIB} + ${QT_LIBRARIES} diff --git a/pkgs/applications/audio/ncmpc/default.nix b/pkgs/applications/audio/ncmpc/default.nix index 08d30059823..7089f4dba92 100644 --- a/pkgs/applications/audio/ncmpc/default.nix +++ b/pkgs/applications/audio/ncmpc/default.nix @@ -1,18 +1,18 @@ { stdenv, fetchFromGitHub, meson, ninja, pkgconfig, glib, ncurses -, mpd_clientlib, gettext }: +, mpd_clientlib, gettext, boost }: stdenv.mkDerivation rec { name = "ncmpc-${version}"; - version = "0.31"; + version = "0.33"; src = fetchFromGitHub { owner = "MusicPlayerDaemon"; repo = "ncmpc"; rev = "v${version}"; - sha256 = "09h1m9rkk89729i2d5zsfdc6rxajvikgsi3h99rwz2192gm457rj"; + sha256 = "1ymnxb85v2pc0qpk0yz5gdxayc0ialk82ba521lgdw66li7fr4as"; }; - buildInputs = [ glib ncurses mpd_clientlib ]; + buildInputs = [ glib ncurses mpd_clientlib boost ]; nativeBuildInputs = [ meson ninja pkgconfig gettext ]; meta = with stdenv.lib; { diff --git a/pkgs/applications/audio/non/default.nix b/pkgs/applications/audio/non/default.nix index c28c711d618..44dd0d2d4ec 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 +, libsndfile, ladspaH, liblrdf, liblo, libsigcxx, wafHook }: stdenv.mkDerivation rec { @@ -12,13 +12,10 @@ stdenv.mkDerivation rec { sha256 = "1cljkkyi9dxqpqhx8y6l2ja4zjmlya26m26kqxml8gx08vyvddhx"; }; - nativeBuildInputs = [ pkgconfig ]; + nativeBuildInputs = [ pkgconfig wafHook ]; buildInputs = [ python2 cairo libjpeg ntk libjack2 libsndfile ladspaH liblrdf liblo libsigcxx ]; - configurePhase = "python waf configure --prefix=$out"; - buildPhase = "python waf build"; - installPhase = "python waf install"; meta = { description = "Lightweight and lightning fast modular Digital Audio Workstation"; diff --git a/pkgs/applications/audio/normalize/default.nix b/pkgs/applications/audio/normalize/default.nix index a727160ff29..85c902d3839 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 = http://normalize.nongnu.org/; + 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 e65604e974a..bb186687c66 100644 --- a/pkgs/applications/audio/nova-filters/default.nix +++ b/pkgs/applications/audio/nova-filters/default.nix @@ -1,4 +1,4 @@ -{stdenv, fetchurl, scons, boost, ladspaH, pkgconfig }: +{stdenv, fetchurl, sconsPackages, boost, ladspaH, pkgconfig }: stdenv.mkDerivation rec { version = "0.2-2"; @@ -9,8 +9,8 @@ stdenv.mkDerivation rec { sha256 = "16064vvl2w5lz4xi3lyjk4xx7fphwsxc14ajykvndiz170q32s6i"; }; - nativeBuildInputs = [ pkgconfig ]; - buildInputs = [ scons boost ladspaH ]; + nativeBuildInputs = [ pkgconfig sconsPackages.scons_3_0_1 ]; + buildInputs = [ boost ladspaH ]; patchPhase = '' # remove TERM: @@ -21,14 +21,6 @@ stdenv.mkDerivation rec { sed -i "s/= check/= detail::filter_base::check/" nova/source/dsp/filter.hpp ''; - buildPhase = '' - scons - ''; - - installPhase = '' - scons $sconsFlags "prefix=$out" install - ''; - meta = with stdenv.lib; { description = "LADSPA plugins based on filters of nova"; homepage = http://klingt.org/~tim/nova-filters/; diff --git a/pkgs/applications/audio/openmpt123/default.nix b/pkgs/applications/audio/openmpt123/default.nix index 5d13aa7daf4..af859702292 100644 --- a/pkgs/applications/audio/openmpt123/default.nix +++ b/pkgs/applications/audio/openmpt123/default.nix @@ -1,24 +1,30 @@ -{ stdenv, fetchurl, SDL2, pkgconfig, flac, libsndfile }: +{ stdenv, fetchurl, zlib, pkgconfig, mpg123, libogg, libvorbis, portaudio, libsndfile, flac +, usePulseAudio ? false, libpulseaudio }: let - version = "0.2.7025-beta20.1"; + version = "0.4.1"; in stdenv.mkDerivation rec { name = "openmpt123-${version}"; + src = fetchurl { - url = "https://lib.openmpt.org/files/libopenmpt/src/libopenmpt-${version}.tar.gz"; - sha256 = "0qp2nnz6pnl1d7yv9hcjyim7q6yax5881k1jxm8jfgjqagmz5k6p"; + url = "https://lib.openmpt.org/files/libopenmpt/src/libopenmpt-${version}+release.autotools.tar.gz"; + sha256 = "1k1m1adjh4s2q9lxgkf836k5243akxrzq1hsdjhrkg4idd3pxzp4"; }; + + enableParallelBuilding = true; + doCheck = true; + nativeBuildInputs = [ pkgconfig ]; - buildInputs = [ SDL2 flac libsndfile ]; - makeFlags = [ "NO_PULSEAUDIO=1 NO_LTDL=1 TEST=0 EXAMPLES=0" ] - ++ stdenv.lib.optional (stdenv.isDarwin) "SHARED_SONAME=0"; - installFlags = "PREFIX=\${out}"; + buildInputs = [ zlib mpg123 libogg libvorbis portaudio libsndfile flac ] + ++ stdenv.lib.optional usePulseAudio libpulseaudio; + + 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/; license = licenses.bsd3; - maintainers = [ stdenv.lib.maintainers.gnidorah ]; - platforms = stdenv.lib.platforms.unix; + 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 658ba1700f2..85d0e1fbaf7 100644 --- a/pkgs/applications/audio/opus-tools/default.nix +++ b/pkgs/applications/audio/opus-tools/default.nix @@ -1,14 +1,14 @@ -{stdenv, fetchurl, libogg, libao, pkgconfig, libopus, flac}: +{stdenv, fetchurl, libogg, libao, pkgconfig, flac, opusfile, libopusenc}: stdenv.mkDerivation rec { - name = "opus-tools-0.1.10"; + name = "opus-tools-0.2"; src = fetchurl { url = "http://downloads.xiph.org/releases/opus/${name}.tar.gz"; - sha256 = "135jfb9ny3xvd27idsxj7j5ns90lslbyrq70cq3bfwcls4r7add2"; + sha256 = "11pzl27s4vcz4m18ch72nivbhww2zmzn56wspb7rll1y1nq6rrdl"; }; nativeBuildInputs = [ pkgconfig ]; - buildInputs = [ libogg libao libopus flac ]; + buildInputs = [ libogg libao flac opusfile libopusenc ]; meta = { description = "Tools to work with opus encoded audio streams"; diff --git a/pkgs/applications/audio/padthv1/default.nix b/pkgs/applications/audio/padthv1/default.nix index ece0a70a7e9..084487fd407 100644 --- a/pkgs/applications/audio/padthv1/default.nix +++ b/pkgs/applications/audio/padthv1/default.nix @@ -2,11 +2,11 @@ stdenv.mkDerivation rec { name = "padthv1-${version}"; - version = "0.9.2"; + version = "0.9.4"; src = fetchurl { url = "mirror://sourceforge/padthv1/${name}.tar.gz"; - sha256 = "1alfl0l5qdll0w5lwhrwzj5dina1big1zmjg5imi9h06dzhz51xl"; + sha256 = "0k4vlg3clsn2i4k12imvcjiwlp9nx1mikwyrnarg9shxzzdzcf4y"; }; buildInputs = [ libjack2 alsaLib libsndfile liblo lv2 qt5.qtbase qt5.qttools fftw ]; diff --git a/pkgs/applications/audio/patchage/default.nix b/pkgs/applications/audio/patchage/default.nix index 8425b48166e..7f3940e0ae9 100644 --- a/pkgs/applications/audio/patchage/default.nix +++ b/pkgs/applications/audio/patchage/default.nix @@ -1,5 +1,5 @@ { stdenv, alsaLib, boost, dbus-glib, fetchsvn, ganv, glibmm -, gtkmm2, libjack2, pkgconfig, python2 +, gtkmm2, libjack2, pkgconfig, python2, wafHook }: stdenv.mkDerivation rec { @@ -13,13 +13,9 @@ stdenv.mkDerivation rec { buildInputs = [ alsaLib boost dbus-glib ganv glibmm gtkmm2 libjack2 - pkgconfig python2 + pkgconfig python2 wafHook ]; - configurePhase = "python waf configure --prefix=$out"; - buildPhase = "python waf build"; - installPhase = "python waf install"; - meta = { description = "Modular patch bay for Jack and ALSA systems"; homepage = http://non.tuxfamily.org; diff --git a/pkgs/applications/audio/pianobooster/default.nix b/pkgs/applications/audio/pianobooster/default.nix index d013a26277e..53afcdd2306 100644 --- a/pkgs/applications/audio/pianobooster/default.nix +++ b/pkgs/applications/audio/pianobooster/default.nix @@ -17,6 +17,7 @@ stdenv.mkDerivation rec { preConfigure = "cd src"; buildInputs = [ alsaLib cmake makeWrapper libGLU_combined qt4 ]; + NIX_LDFLAGS = [ "-lGL" "-lpthread" ]; postInstall = '' wrapProgram $out/bin/pianobooster \ diff --git a/pkgs/applications/audio/picard/default.nix b/pkgs/applications/audio/picard/default.nix index d7e6173da9a..e7c2c2e3634 100644 --- a/pkgs/applications/audio/picard/default.nix +++ b/pkgs/applications/audio/picard/default.nix @@ -1,21 +1,22 @@ -{ stdenv, python2Packages, fetchurl, gettext }: +{ stdenv, python3Packages, fetchurl, gettext, chromaprint }: let - pythonPackages = python2Packages; + pythonPackages = python3Packages; in pythonPackages.buildPythonApplication rec { pname = "picard"; - version = "1.4.2"; + version = "2.1"; src = fetchurl { url = "http://ftp.musicbrainz.org/pub/musicbrainz/picard/picard-${version}.tar.gz"; - sha256 = "0d12k40d9fbcn801gp5zdsgvjdrh4g97vda3ga16rmmvfwwfxbgh"; + sha256 = "054a37q5828q59jzml4npkyczsp891d89kawgsif9kwpi0dxa06c"; }; buildInputs = [ gettext ]; propagatedBuildInputs = with pythonPackages; [ - pyqt4 + pyqt5 mutagen + chromaprint discid ]; @@ -23,6 +24,11 @@ in pythonPackages.buildPythonApplication rec { python setup.py install --prefix="$out" ''; + prePatch = '' + # Pesky unicode punctuation. + substituteInPlace setup.cfg --replace "‘" "'" + ''; + doCheck = false; meta = with stdenv.lib; { diff --git a/pkgs/applications/audio/pithos/default.nix b/pkgs/applications/audio/pithos/default.nix index 1d3fffb549d..c7bb1a4193f 100644 --- a/pkgs/applications/audio/pithos/default.nix +++ b/pkgs/applications/audio/pithos/default.nix @@ -1,4 +1,4 @@ -{ fetchFromGitHub, stdenv, pythonPackages, gtk3, gobjectIntrospection, libnotify +{ fetchFromGitHub, stdenv, pythonPackages, gtk3, gobject-introspection, libnotify , gst_all_1, wrapGAppsHook }: pythonPackages.buildPythonApplication rec { @@ -27,7 +27,7 @@ pythonPackages.buildPythonApplication rec { buildInputs = [ wrapGAppsHook ]; propagatedBuildInputs = - [ gtk3 gobjectIntrospection libnotify ] ++ + [ gtk3 gobject-introspection libnotify ] ++ (with gst_all_1; [ gstreamer gst-plugins-base gst-plugins-good gst-plugins-ugly gst-plugins-bad ]) ++ (with pythonPackages; [ pygobject3 pylast ]); diff --git a/pkgs/applications/audio/pulseaudio-modules-bt/default.nix b/pkgs/applications/audio/pulseaudio-modules-bt/default.nix index e3d07fcc245..cb267d8bbb6 100644 --- a/pkgs/applications/audio/pulseaudio-modules-bt/default.nix +++ b/pkgs/applications/audio/pulseaudio-modules-bt/default.nix @@ -1,14 +1,17 @@ { stdenv , runCommand , fetchFromGitHub -, libpulseaudio , pulseaudio , pkgconfig +, ffmpeg_4 +, patchelf +, fdk_aac , libtool , cmake , bluez , dbus , sbc +, lib }: let @@ -20,42 +23,58 @@ let in stdenv.mkDerivation rec { name = "pulseaudio-modules-bt-${version}"; - version = "unstable-2018-09-11"; + version = "unstable-2018-11-01"; src = fetchFromGitHub { owner = "EHfive"; repo = "pulseaudio-modules-bt"; - rev = "9c6ad75382f3855916ad2feaa6b40e37356d80cc"; - sha256 = "1iz4m3y6arsvwcyvqc429w252dl3apnhvl1zhyvfxlbg00d2ii0h"; + rev = "a2f62fcaa702bb883c07d074ebca8d7135520ab8"; + sha256 = "1fhg7q9064zikhy0xxldn4fvh49pc47mgikcbd9yhsk66gcn6zj3"; fetchSubmodules = true; }; + patches = [ + ./fix-install-path.patch + ]; + nativeBuildInputs = [ pkgconfig + patchelf cmake ]; buildInputs = [ - libpulseaudio pulseaudio + ffmpeg_4 + fdk_aac libtool bluez dbus sbc ]; - NIX_CFLAGS_COMPILE = [ - "-L${pulseaudio}/lib/pulseaudio" - ]; - - prePatch = '' + postPatch = '' + # Upstream bundles pulseaudio as a submodule rm -r pa ln -s ${pulseSources} pa + + # Pulseaudio version is detected with a -rebootstrapped suffix which build system assumptions + substituteInPlace config.h.in --replace PulseAudio_VERSION ${pulseaudio.version} + substituteInPlace CMakeLists.txt --replace '${"\${PulseAudio_VERSION}"}' ${pulseaudio.version} + ''; + + postFixup = '' + for so in $out/lib/pulse-${pulseaudio.version}/modules/*.so; do + orig_rpath=$(patchelf --print-rpath "$so") + patchelf \ + --set-rpath "${lib.getLib ffmpeg_4}/lib:$out/lib/pulse-${pulseaudio.version}/modules:$orig_rpath" \ + "$so" + done ''; meta = with stdenv.lib; { homepage = https://github.com/EHfive/pulseaudio-modules-bt; - description = "SBC, Sony LDAC codec (A2DP Audio) support for Pulseaudio"; + description = "LDAC, aptX, aptX HD, AAC codecs (A2DP Audio) support for Linux PulseAudio"; platforms = platforms.linux; license = licenses.mit; maintainers = with maintainers; [ adisbladis ]; diff --git a/pkgs/applications/audio/pulseaudio-modules-bt/fix-install-path.patch b/pkgs/applications/audio/pulseaudio-modules-bt/fix-install-path.patch new file mode 100644 index 00000000000..e500d1fb133 --- /dev/null +++ b/pkgs/applications/audio/pulseaudio-modules-bt/fix-install-path.patch @@ -0,0 +1,20 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index d869979..185144d 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -143,13 +143,13 @@ INSTALL(TARGETS + module-bluez5-device + module-bluetooth-discover + module-bluetooth-policy +- LIBRARY DESTINATION ${PulseAudio_modlibexecdir}) ++ LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/pulse-${PulseAudio_VERSION}/modules/) + + if(NOT ${HAVE_SYSTEM_LDAC}) + + INSTALL(TARGETS + ldacBT_enc + ldacBT_abr +- LIBRARY DESTINATION ${PulseAudio_modlibexecdir}) ++ LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/pulse-${PulseAudio_VERSION}/modules/) + + endif() diff --git a/pkgs/applications/audio/pulseeffects/default.nix b/pkgs/applications/audio/pulseeffects/default.nix index f7463207045..f414c64d671 100644 --- a/pkgs/applications/audio/pulseeffects/default.nix +++ b/pkgs/applications/audio/pulseeffects/default.nix @@ -24,6 +24,7 @@ , libsndfile , libebur128 , boost +, dbus , fftwFloat , calf , zita-convolver @@ -43,14 +44,14 @@ let zam-plugins # maximizer ]; in stdenv.mkDerivation rec { - name = "pulseeffects-${version}"; - version = "4.3.7"; + pname = "pulseeffects"; + version = "4.4.6"; src = fetchFromGitHub { owner = "wwmm"; repo = "pulseeffects"; rev = "v${version}"; - sha256 = "1x1jnbpbc9snya9k2xq39gssf0k4lnd1hr4cjrnwscg5rqybxqsk"; + sha256 = "0zvcj2qliz2rlcz59ag4ljrs78qb7kpyaph16qvi07ij7c5bm333"; }; nativeBuildInputs = [ @@ -80,6 +81,7 @@ in stdenv.mkDerivation rec { libsamplerate libsndfile boost + dbus fftwFloat zita-convolver hicolor-icon-theme @@ -91,8 +93,6 @@ in stdenv.mkDerivation rec { ''; preFixup = '' - addToSearchPath GST_PLUGIN_SYSTEM_PATH_1_0 $out/lib/gstreamer-1.0 - gappsWrapperArgs+=( --set LV2_PATH "${stdenv.lib.makeSearchPath "lib/lv2" lv2Plugins}" --set LADSPA_PATH "${stdenv.lib.makeSearchPath "lib/ladspa" ladspaPlugins}" diff --git a/pkgs/applications/audio/qjackctl/default.nix b/pkgs/applications/audio/qjackctl/default.nix index 83608014f14..eafde7957a2 100644 --- a/pkgs/applications/audio/qjackctl/default.nix +++ b/pkgs/applications/audio/qjackctl/default.nix @@ -1,14 +1,14 @@ { stdenv, fetchurl, pkgconfig, alsaLib, libjack2, dbus, qtbase, qttools, qtx11extras }: stdenv.mkDerivation rec { - version = "0.5.3"; + version = "0.5.5"; name = "qjackctl-${version}"; # some dependencies such as killall have to be installed additionally src = fetchurl { url = "mirror://sourceforge/qjackctl/${name}.tar.gz"; - sha256 = "0x08af8m5l8qy9av3dlldsg58ny9nc69h1s4i6hqkvj24jwy6fw1"; + sha256 = "1rzzqa39a6llr52vjkjr0a86nc776kmr5xs52qqga8ms9697psz5"; }; buildInputs = [ diff --git a/pkgs/applications/audio/qmmp/default.nix b/pkgs/applications/audio/qmmp/default.nix index f58e75c9e26..c10358eed1e 100644 --- a/pkgs/applications/audio/qmmp/default.nix +++ b/pkgs/applications/audio/qmmp/default.nix @@ -29,11 +29,11 @@ # handle that. stdenv.mkDerivation rec { - name = "qmmp-1.2.3"; + name = "qmmp-1.2.5"; src = fetchurl { url = "http://qmmp.ylsoftware.com/files/${name}.tar.bz2"; - sha256 = "05lqmj22vr5ch1i0928d64ybdnn3qc66s9lgarx5s6x6ffr6589j"; + sha256 = "1xs8kg65088yzdhdkymmknkp1s4adzv095f5jhjvy62s8ymyjvnx"; }; buildInputs = diff --git a/pkgs/applications/audio/qsampler/default.nix b/pkgs/applications/audio/qsampler/default.nix index 8ad251652d0..69bf41e1e4f 100644 --- a/pkgs/applications/audio/qsampler/default.nix +++ b/pkgs/applications/audio/qsampler/default.nix @@ -3,11 +3,11 @@ stdenv.mkDerivation rec { name = "qsampler-${version}"; - version = "0.5.2"; + version = "0.5.3"; src = fetchurl { url = "mirror://sourceforge/qsampler/${name}.tar.gz"; - sha256 = "0xb0j57k03pkdl7yl5mcv1i21ljnxcq6b9h3zp6mris916lj45zq"; + sha256 = "02xazvz8iaksglbgq3jhw4fq3f5pdcq9sss79jxs082md0mry17d"; }; nativeBuildInputs = [ autoconf automake libtool pkgconfig qttools ]; diff --git a/pkgs/applications/audio/quodlibet/default.nix b/pkgs/applications/audio/quodlibet/default.nix index baf49ff78e5..a1d85ac91e8 100644 --- a/pkgs/applications/audio/quodlibet/default.nix +++ b/pkgs/applications/audio/quodlibet/default.nix @@ -1,5 +1,5 @@ -{ stdenv, fetchurl, python3, wrapGAppsHook, gettext, intltool, libsoup, gnome3, gtk3, gdk_pixbuf, - tag ? "", xvfb_run, dbus, glibcLocales, glib, glib-networking, gobjectIntrospection, +{ stdenv, fetchurl, python3, wrapGAppsHook, gettext, libsoup, gnome3, gtk3, gdk_pixbuf, + tag ? "", xvfb_run, dbus, glibcLocales, glib, glib-networking, gobject-introspection, gst_all_1, withGstPlugins ? true, xineBackend ? false, xineLib, withDbusPython ? false, withPyInotify ? false, withMusicBrainzNgs ? false, withPahoMqtt ? false, @@ -9,22 +9,18 @@ let optionals = stdenv.lib.optionals; in python3.pkgs.buildPythonApplication rec { pname = "quodlibet${tag}"; - version = "4.1.0"; - - # XXX, tests fail - # https://github.com/quodlibet/quodlibet/issues/2820 - doCheck = false; + version = "4.2.1"; src = fetchurl { url = "https://github.com/quodlibet/quodlibet/releases/download/release-${version}/quodlibet-${version}.tar.gz"; - sha256 = "1vcxx4sz5i4ag74pjpdfw7jkwxfb8jhvn8igcjwd5cccw4gscm2z"; + sha256 = "0b1rvr4hqs2bjmhayms7vxxkn3d92k9v7p1269rjhf11hpk122l7"; }; - nativeBuildInputs = [ wrapGAppsHook gettext intltool ]; + nativeBuildInputs = [ wrapGAppsHook gettext ]; checkInputs = with python3.pkgs; [ pytest pytest_xdist pyflakes pycodestyle polib xvfb_run dbus.daemon glibcLocales ]; - buildInputs = [ gnome3.defaultIconTheme libsoup glib glib-networking gtk3 webkitgtk gdk_pixbuf keybinder3 gtksourceview libmodplug libappindicator-gtk3 kakasi gobjectIntrospection ] + buildInputs = [ gnome3.defaultIconTheme 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; [ gstreamer gst-plugins-base ] ++ optionals withGstPlugins [ gst-plugins-good gst-plugins-ugly gst-plugins-bad ]); @@ -39,13 +35,11 @@ python3.pkgs.buildPythonApplication rec { checkPhase = '' runHook preCheck - checkHomeDir=$(mktemp -d) - mkdir -p $checkHomeDir/.cache/thumbnails/normal # Required by TThumb.test_recreate_broken_cache_file env XDG_DATA_DIRS="$out/share:${gtk3}/share/gsettings-schemas/${gtk3.name}:$XDG_DATA_DIRS" \ - HOME=$checkHomeDir \ + HOME=$(mktemp -d) \ xvfb-run -s '-screen 0 800x600x24' dbus-run-session \ --config-file=${dbus.daemon}/share/dbus-1/session.conf \ - py.test + py.test${stdenv.lib.optionalString (xineBackend || !withGstPlugins) " --ignore=tests/plugin/test_replaygain.py"} runHook postCheck ''; diff --git a/pkgs/applications/audio/radiotray-ng/default.nix b/pkgs/applications/audio/radiotray-ng/default.nix index 82bc42143c6..900c2bf7a41 100644 --- a/pkgs/applications/audio/radiotray-ng/default.nix +++ b/pkgs/applications/audio/radiotray-ng/default.nix @@ -40,13 +40,13 @@ let in stdenv.mkDerivation rec { name = "radiotray-ng-${version}"; - version = "0.2.3"; + version = "0.2.4"; src = fetchFromGitHub { owner = "ebruck"; repo = "radiotray-ng"; rev = "v${version}"; - sha256 = "1sq7bc0dswv3vv56w527z268ib0pyhdxyf25388vnj1fv0c146wc"; + sha256 = "1jk80fv8ivwdx7waivls0mczn0rx4wv0fy7a28k77m88i5gkfgyw"; }; nativeBuildInputs = [ cmake pkgconfig wrapGAppsHook makeWrapper ]; @@ -80,7 +80,6 @@ stdenv.mkDerivation rec { enableParallelBuilding = true; checkInputs = [ gtest ]; - checkPhase = "ctest"; # doCheck = stdenv.hostPlatform == stdenv.buildPlatform; doCheck = false; # fails to pick up supplied gtest, tries to download it instead diff --git a/pkgs/applications/audio/reaper/default.nix b/pkgs/applications/audio/reaper/default.nix index 28aaf8a5354..cabebb6f18e 100644 --- a/pkgs/applications/audio/reaper/default.nix +++ b/pkgs/applications/audio/reaper/default.nix @@ -1,68 +1,47 @@ { stdenv, fetchurl, autoPatchelfHook, makeWrapper , alsaLib, xorg -, fetchFromGitHub, pkgconfig, gnome3 -, gnome2, gdk_pixbuf, cairo, glib, freetype -, libpulseaudio +, gnome3, pango, gdk_pixbuf, cairo, glib, freetype +, libpulseaudio, xdg_utils }: -let - libSwell = stdenv.mkDerivation { - name = "libSwell"; - - src = fetchFromGitHub { - owner = "justinfrankel"; - repo = "WDL"; - rev = "e87f5bdee7327b63398366fde6ec0a3f08bf600d"; - sha256 = "147idjqc6nc23w9krl8a9w571k5jx190z3id6ir6cr8zsx0lakdb"; - }; - - nativeBuildInputs = [ pkgconfig ]; - buildInputs = [ gnome3.gtk ]; - - buildPhase = '' - cd WDL/swell - make - ''; - - installPhase = '' - mv libSwell.so $out - ''; - }; - -in stdenv.mkDerivation rec { +stdenv.mkDerivation rec { name = "reaper-${version}"; - version = "5.94"; + version = "5.965"; src = fetchurl { url = "https://www.reaper.fm/files/${stdenv.lib.versions.major version}.x/reaper${builtins.replaceStrings ["."] [""] version}_linux_x86_64.tar.xz"; - sha256 = "16g5q12wh1cfbl9wq03vb7vpsd870k7i7883z0wn492x7y9syz8z"; + sha256 = "05fn7r3v4qcb1b31g8layzvqilrwdr0s8yskr61yvbhx2dnjp9iw"; }; nativeBuildInputs = [ autoPatchelfHook makeWrapper ]; buildInputs = [ alsaLib - stdenv.cc.cc.lib xorg.libX11 xorg.libXi - gnome3.gtk gdk_pixbuf - gnome2.pango + pango cairo glib freetype + + xdg_utils + ]; + + runtimeDependencies = [ + gnome3.gtk ]; dontBuild = true; installPhase = '' - ./install-reaper.sh --install $out/opt + XDG_DATA_HOME="$out/share" ./install-reaper.sh \ + --install $out/opt \ + --integrate-user-desktop rm $out/opt/REAPER/uninstall-reaper.sh - cp ${libSwell.out} $out/opt/REAPER/libSwell.so - wrapProgram $out/opt/REAPER/reaper \ --prefix LD_LIBRARY_PATH : ${libpulseaudio}/lib diff --git a/pkgs/applications/audio/renoise/default.nix b/pkgs/applications/audio/renoise/default.nix index cd06fa80f5a..081c4ab41ac 100644 --- a/pkgs/applications/audio/renoise/default.nix +++ b/pkgs/applications/audio/renoise/default.nix @@ -1,4 +1,5 @@ -{ stdenv, fetchurl, libX11, libXext, libXcursor, libXrandr, libjack2, alsaLib, releasePath ? null }: +{ stdenv, fetchurl, libX11, libXext, libXcursor, libXrandr, libjack2, alsaLib +, mpg123, releasePath ? null }: with stdenv.lib; @@ -35,7 +36,7 @@ stdenv.mkDerivation rec { releasePath else throw "Platform is not supported by Renoise"; - buildInputs = [ libX11 libXext libXcursor libXrandr alsaLib libjack2 ]; + buildInputs = [ alsaLib libjack2 libX11 libXcursor libXext libXrandr ]; installPhase = '' cp -r Resources $out @@ -54,13 +55,18 @@ stdenv.mkDerivation rec { mkdir $out/bin ln -s $out/renoise $out/bin/renoise + ''; - patchelf --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) --set-rpath $out/lib $out/renoise + postFixup = '' + patchelf \ + --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \ + --set-rpath ${mpg123}/lib:$out/lib \ + $out/renoise ''; meta = { description = "Modern tracker-based DAW"; - homepage = http://www.renoise.com/; + homepage = https://www.renoise.com/; license = licenses.unfree; maintainers = []; platforms = [ "i686-linux" "x86_64-linux" ]; diff --git a/pkgs/applications/audio/rhvoice/default.nix b/pkgs/applications/audio/rhvoice/default.nix index 65cb7dab34a..6516532df33 100644 --- a/pkgs/applications/audio/rhvoice/default.nix +++ b/pkgs/applications/audio/rhvoice/default.nix @@ -1,5 +1,5 @@ -{ stdenv, lib, pkgconfig, fetchFromGitHub, scons, python, glibmm, libpulseaudio, libao -}: +{ stdenv, lib, pkgconfig, fetchFromGitHub, scons +, python, glibmm, libpulseaudio, libao }: let version = "unstable-2018-02-10"; @@ -30,14 +30,6 @@ in stdenv.mkDerivation rec { patches = [ ./honor_nix_environment.patch ]; - buildPhase = '' - scons prefix=$out - ''; - - installPhase = '' - scons install - ''; - meta = { description = "A free and open source speech synthesizer for Russian language and others"; homepage = https://github.com/Olga-Yakovleva/RHVoice/wiki; diff --git a/pkgs/applications/audio/rhythmbox/default.nix b/pkgs/applications/audio/rhythmbox/default.nix index 968c5edae63..e540016ac81 100644 --- a/pkgs/applications/audio/rhythmbox/default.nix +++ b/pkgs/applications/audio/rhythmbox/default.nix @@ -6,6 +6,7 @@ , intltool , libsoup , gnome3 +, totem-pl-parser , tdb , json-glib , itstool @@ -48,7 +49,7 @@ in stdenv.mkDerivation rec { gtk3 gnome3.libpeas - gnome3.totem-pl-parser + totem-pl-parser gnome3.defaultIconTheme gst_all_1.gstreamer diff --git a/pkgs/applications/audio/rosegarden/default.nix b/pkgs/applications/audio/rosegarden/default.nix index 0b2bd9507e5..55e3b55472b 100644 --- a/pkgs/applications/audio/rosegarden/default.nix +++ b/pkgs/applications/audio/rosegarden/default.nix @@ -3,12 +3,12 @@ , liblo, liblrdf, libsamplerate, libsndfile, lirc ? null, qtbase }: stdenv.mkDerivation (rec { - version = "18.06"; + version = "18.12"; name = "rosegarden-${version}"; src = fetchurl { url = "mirror://sourceforge/rosegarden/${name}.tar.bz2"; - sha256 = "04qc80sqb2ji42pq3mayhvqqn39hlxzymsywpbpzfpchr19chxx7"; + sha256 = "15i9fm0vkn3wsgahaxqi1j5zs0wc0j3wdwml0x49084gk2p328vb"; }; patchPhase = '' diff --git a/pkgs/applications/audio/samplv1/default.nix b/pkgs/applications/audio/samplv1/default.nix index f6ff38b0042..73f24e03e30 100644 --- a/pkgs/applications/audio/samplv1/default.nix +++ b/pkgs/applications/audio/samplv1/default.nix @@ -2,11 +2,11 @@ stdenv.mkDerivation rec { name = "samplv1-${version}"; - version = "0.9.2"; + version = "0.9.4"; src = fetchurl { url = "mirror://sourceforge/samplv1/${name}.tar.gz"; - sha256 = "0rfcp4v971qfhw1hb43hw12wlxmg2q13l0m1h93pyfi5l4mfjkds"; + sha256 = "17a61lliplhs14b3x83qz3kv7ww4dn3a02jfdlcx2z903hwn5sld"; }; buildInputs = [ libjack2 alsaLib liblo libsndfile lv2 qt5.qtbase qt5.qttools]; diff --git a/pkgs/applications/audio/seq24/default.nix b/pkgs/applications/audio/seq24/default.nix index 11ee00adc88..d47ede27ece 100644 --- a/pkgs/applications/audio/seq24/default.nix +++ b/pkgs/applications/audio/seq24/default.nix @@ -5,7 +5,7 @@ stdenv.mkDerivation rec { version = "0.9.3"; src = fetchurl { - url = "http://launchpad.net/seq24/trunk/${version}/+download/${name}.tar.gz"; + url = "https://launchpad.net/seq24/trunk/${version}/+download/${name}.tar.gz"; sha256 = "1qpyb7355s21sgy6gibkybxpzx4ikha57a8w644lca6qy9mhcwi3"; }; diff --git a/pkgs/applications/audio/sfxr-qt/default.nix b/pkgs/applications/audio/sfxr-qt/default.nix new file mode 100644 index 00000000000..a98d1431d65 --- /dev/null +++ b/pkgs/applications/audio/sfxr-qt/default.nix @@ -0,0 +1,36 @@ +{ stdenv, fetchFromGitHub +, cmake +, qtbase, qtquickcontrols2 +, SDL +, python3 +}: + +stdenv.mkDerivation rec { + name = "sfxr-qt-${version}"; + version = "1.2.0"; + src = fetchFromGitHub { + owner = "agateau"; + repo = "sfxr-qt"; + rev = version; + sha256 = "1ndw1dcmzvkrc6gnb0y057zb4lqlhwrv18jlbx26w3s4xrbxqr41"; + fetchSubmodules = true; + }; + nativeBuildInputs = [ + cmake + (python3.withPackages (pp: with pp; [ pyyaml jinja2 ])) + ]; + buildInputs = [ + qtbase qtquickcontrols2 + SDL + ]; + configurePhase = "cmake . -DCMAKE_INSTALL_PREFIX=$out"; + + meta = with stdenv.lib; { + homepage = https://github.com/agateau/sfxr-qt; + description = "A sound effect generator, QtQuick port of sfxr"; + license = licenses.gpl2; + maintainers = with maintainers; [ fgaz ]; + platforms = platforms.linux; + }; +} + diff --git a/pkgs/applications/audio/snapcast/default.nix b/pkgs/applications/audio/snapcast/default.nix index 3afd73493b0..5730dec6b99 100644 --- a/pkgs/applications/audio/snapcast/default.nix +++ b/pkgs/applications/audio/snapcast/default.nix @@ -1,49 +1,61 @@ { stdenv, lib, fetchFromGitHub, cmake, pkgconfig -, asio, alsaLib, avahi, libogg, libvorbis, flac }: +, alsaLib, asio, avahi, flac, libogg, libvorbis }: let - popl = stdenv.mkDerivation rec { - name = "popl-${version}"; - version = "1.1.0"; + dependency = { name, version, sha256 }: + stdenv.mkDerivation { + name = "${name}-${version}"; src = fetchFromGitHub { owner = "badaix"; - repo = "popl"; - rev = "v${version}"; - sha256 = "1zgjgcingyi1xw61azxxasaidbgqidncml5c2y2cj90mz23yam1i"; + repo = name; + rev = "v${version}"; + inherit sha256; }; + nativeBuildInputs = [ cmake ]; }; - aixlog = stdenv.mkDerivation rec { - name = "aixlog-${version}"; + aixlog = dependency { + name = "aixlog"; version = "1.2.1"; + sha256 = "1rh4jib5g41b85bqrxkl5g74hk5ryf187y9fw0am76g59xlymfpr"; + }; - src = fetchFromGitHub { - owner = "badaix"; - repo = "aixlog"; - rev = "v${version}"; - sha256 = "1rh4jib5g41b85bqrxkl5g74hk5ryf187y9fw0am76g59xlymfpr"; - }; - nativeBuildInputs = [ cmake ]; + popl = dependency { + name = "popl"; + version = "1.2.0"; + sha256 = "1z6z7fwffs3d9h56mc2m24d5gp4fc5bi8836zyfb276s6fjyfcai"; }; in stdenv.mkDerivation rec { name = "snapcast-${version}"; - version = "0.14.0"; + version = "0.15.0"; src = fetchFromGitHub { - owner = "badaix"; - repo = "snapcast"; - rev = "v${version}"; - sha256 = "14f5jrsarjdk2mixmznmighrh22j6flp7y47r9j3qzxycmm1mcf6"; + owner = "badaix"; + repo = "snapcast"; + rev = "v${version}"; + sha256 = "11rnpy6w3wm240qgmkp74k5w8wh5b7hzfx05qrnh6l7ng7m25ky2"; }; nativeBuildInputs = [ cmake pkgconfig ]; - buildInputs = [ asio popl aixlog alsaLib avahi libogg libvorbis flac ]; + # snapcast also supports building against tremor but as we have libogg, that's + # not needed + buildInputs = [ + alsaLib asio avahi flac libogg libvorbis + aixlog popl + ]; + + # Upstream systemd unit files are pretty awful, so we provide our own in a + # NixOS module. It might make sense to get that upstreamed... + postInstall = '' + install -d $out/share/doc/snapcast + cp -r ../doc/* ../*.md $out/share/doc/snapcast + ''; meta = with lib; { description = "Synchronous multi-room audio player"; diff --git a/pkgs/applications/audio/snd/default.nix b/pkgs/applications/audio/snd/default.nix index 0709917a044..8534d871c66 100644 --- a/pkgs/applications/audio/snd/default.nix +++ b/pkgs/applications/audio/snd/default.nix @@ -4,11 +4,11 @@ }: stdenv.mkDerivation rec { - name = "snd-18.7"; + name = "snd-18.8"; src = fetchurl { url = "mirror://sourceforge/snd/${name}.tar.gz"; - sha256 = "1d7g043r534shwsq5s4xsywgn5qv96v9wnhdx04j21s9w7fy9ypl"; + sha256 = "16p6cmxl8y58wa19k1z6i66qsqaz7rld4850b0sprbxjjb6cqhf7"; }; nativeBuildInputs = [ pkgconfig ]; diff --git a/pkgs/applications/audio/sonata/default.nix b/pkgs/applications/audio/sonata/default.nix index 0affe5dc89d..012270905cc 100644 --- a/pkgs/applications/audio/sonata/default.nix +++ b/pkgs/applications/audio/sonata/default.nix @@ -1,5 +1,5 @@ { stdenv, fetchFromGitHub, pkgconfig, intltool, wrapGAppsHook -, python3Packages, gnome3, gtk3, gobjectIntrospection}: +, python3Packages, gnome3, gtk3, gobject-introspection}: let inherit (python3Packages) buildPythonApplication isPy3k dbus-python pygobject3 mpd2; @@ -29,7 +29,7 @@ in buildPythonApplication rec { ''; propagatedBuildInputs = [ - gobjectIntrospection gtk3 pygobject3 + gobject-introspection gtk3 pygobject3 ]; # The optional tagpy dependency (for editing metadata) is not yet @@ -61,7 +61,7 @@ in buildPythonApplication rec { - Commandline control - Available in 24 languages ''; - homepage = http://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-pi/default.nix b/pkgs/applications/audio/sonic-pi/default.nix index d1c48ce44ed..ee72b6cdb1a 100644 --- a/pkgs/applications/audio/sonic-pi/default.nix +++ b/pkgs/applications/audio/sonic-pi/default.nix @@ -20,14 +20,14 @@ let }; in stdenv.mkDerivation rec { - version = "3.0.1"; + version = "3.1.0"; name = "sonic-pi-${version}"; src = fetchFromGitHub { owner = "samaaron"; repo = "sonic-pi"; rev = "v${version}"; - sha256 = "1l1892hijp1dj2h799sfjr699q6xp660n0siibab5kv238521a81"; + sha256 = "0gi4a73szaa8iz5q1gxgpsnyvhhghcfqm6bfwwxbix4m5csbfgh9"; }; buildInputs = [ @@ -58,21 +58,21 @@ in stdenv.mkDerivation rec { export SONIC_PI_HOME=$TMPDIR export AUBIO_LIB=${aubio}/lib/libaubio.so - pushd app/server/bin + pushd app/server/ruby/bin ./compile-extensions.rb ./i18n-tool.rb -t popd pushd app/gui/qt cp -f ruby_help.tmpl ruby_help.h - ../../server/bin/qt-doc.rb -o ruby_help.h + ../../server/ruby/bin/qt-doc.rb -o ruby_help.h substituteInPlace SonicPi.pro \ --replace "LIBS += -lrt -lqt5scintilla2" \ "LIBS += -lrt -lqscintilla2 -lqwt" lrelease SonicPi.pro - qmake SonicPi.pro + qmake SonicPi.pro make popd diff --git a/pkgs/applications/audio/sound-juicer/default.nix b/pkgs/applications/audio/sound-juicer/default.nix index 5679a4d5342..686b27223a6 100644 --- a/pkgs/applications/audio/sound-juicer/default.nix +++ b/pkgs/applications/audio/sound-juicer/default.nix @@ -4,13 +4,13 @@ let pname = "sound-juicer"; - version = "3.16.1"; + version = "3.24.0"; in stdenv.mkDerivation rec{ name = "${pname}-${version}"; src = fetchurl { url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; - sha256 = "0mx6n901vb97hsv0cwaafjffj75s1kcp8jsqay90dy3099849dyz"; + sha256 = "19qg4xv0f9rkq34lragkmhii1llxsa87llbl28i759b0ks4f6sny"; }; nativeBuildInputs = [ pkgconfig intltool itstool libxml2 wrapGAppsHook ]; diff --git a/pkgs/applications/audio/spectmorph/default.nix b/pkgs/applications/audio/spectmorph/default.nix new file mode 100644 index 00000000000..9557770418e --- /dev/null +++ b/pkgs/applications/audio/spectmorph/default.nix @@ -0,0 +1,22 @@ +{ stdenv, fetchurl, pkgconfig, libjack2, lv2, glib, qt5, libao, cairo, libsndfile, fftwFloat }: + +stdenv.mkDerivation rec { + name = "spectmorph-${version}"; + version = "0.4.1"; + src = fetchurl { + url = "http://spectmorph.org/files/releases/${name}.tar.bz2"; + sha256 = "0z00yvv3jl8qsx6bz9msmg09mdnj5r5d4ws5bmnylwxk182whbrv"; + }; + + buildInputs = [ libjack2 lv2 glib qt5.qtbase libao cairo libsndfile fftwFloat ]; + + nativeBuildInputs = [ pkgconfig ]; + + 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; + license = licenses.gpl3; + platforms = [ "x86_64-linux" "i686-linux" ]; + maintainers = [ maintainers.magnetophon ]; + }; +} diff --git a/pkgs/applications/audio/spotify/default.nix b/pkgs/applications/audio/spotify/default.nix index 81cda4edaed..06f8e8616f0 100644 --- a/pkgs/applications/audio/spotify/default.nix +++ b/pkgs/applications/audio/spotify/default.nix @@ -1,23 +1,26 @@ { fetchurl, stdenv, squashfsTools, xorg, alsaLib, makeWrapper, openssl, freetype , glib, pango, cairo, atk, gdk_pixbuf, gtk2, cups, nspr, nss, libpng -, libgcrypt, systemd, fontconfig, dbus, expat, ffmpeg_0_10, curl, zlib, gnome3 }: +, libgcrypt, systemd, fontconfig, dbus, expat, ffmpeg_0_10, curl, zlib, gnome3 +, at-spi2-atk +}: let # TO UPDATE: just execute the ./update.sh script (won't do anything if there is no update) # "rev" decides what is actually being downloaded - version = "1.0.83.316.ge96b6e67-5"; + version = "1.0.96.181.gf6bc1b6b-12"; # 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 = "17"; + rev = "30"; deps = [ alsaLib atk + at-spi2-atk cairo cups curl @@ -65,7 +68,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 = "19bbr4142shsl4qrikf48vq7kyrd4k4jbsada13qxicxps46a9bx51vjm2hkijqv739c1gdkgzwx7llyk95z26lhrz53shm2n5ij8xi"; + sha512 = "859730fbc80067f0828f7e13eee9a21b13b749f897a50e17c2da4ee672785cfd79e1af6336e609529d105e040dc40f61b6189524783ac93d49f991c4ea8b3c56"; }; buildInputs = [ squashfsTools makeWrapper ]; @@ -126,6 +129,9 @@ stdenv.mkDerivation { --prefix LD_LIBRARY_PATH : "$librarypath" \ --prefix PATH : "${gnome3.zenity}/bin" + # fix Icon line in the desktop file (#48062) + sed -i "s:^Icon=.*:Icon=spotify-client:" "$out/share/spotify/spotify.desktop" + # Desktop file mkdir -p "$out/share/applications/" cp "$out/share/spotify/spotify.desktop" "$out/share/applications/" diff --git a/pkgs/applications/audio/spotify/update.sh b/pkgs/applications/audio/spotify/update.sh index 114245f6d46..0e19ca1920b 100755 --- a/pkgs/applications/audio/spotify/update.sh +++ b/pkgs/applications/audio/spotify/update.sh @@ -1,8 +1,31 @@ -channel="stable" # stable/candidate/edge +#!/usr/bin/env nix-shell +#! nix-shell -i bash -p curl jq git gnused gnugrep + + +# executing this script without arguments will +# - find the newest stable spotify version avaiable on snapcraft (https://snapcraft.io/spotify) +# - read the current spotify version from the current nix expression +# - update the nix expression if the versions differ +# - try to build the updated version, exit if that fails +# - give instructions for upstreaming + +# Please test the update manually before pushing. There have been errors before +# and because the service is proprietary and a paid account is necessary to do +# anything with spotify automatic testing is not possible. + +# As an optional argument you can specify the snapcraft channel to update to. +# Default is `stable` and only stable updates should be pushed to nixpkgs. For +# testing you may specify `candidate` or `edge`. + + +channel="${1:-stable}" # stable/candidate/edge nixpkgs="$(git rev-parse --show-toplevel)" spotify_nix="$nixpkgs/pkgs/applications/audio/spotify/default.nix" +# +# find the newest stable spotify version avaiable on snapcraft +# # create bash array from snap info snap_info=($( @@ -12,38 +35,62 @@ snap_info=($( '.revision,.download_sha512,.version,.last_updated' )) +# "revision" is the actual version identifier on snapcraft, the "version" is +# just for human consumption. Revision is just an integer that gets increased +# by one every (stable or unstable) release. revision="${snap_info[0]}" sha512="${snap_info[1]}" -version="${snap_info[2]}" +upstream_version="${snap_info[2]}" last_updated="${snap_info[3]}" -# find the last commited version -version_pre=$( - git grep 'version\s*=' HEAD "$spotify_nix" \ +echo "Latest $channel release is $upstream_version from $last_updated." + +# +# read the current spotify version from the currently *committed* nix expression +# + +current_nix_version=$( + grep 'version\s*=' "$spotify_nix" \ | sed -Ene 's/.*"(.*)".*/\1/p' ) -if [[ "$version_pre" = "$version" ]]; then +echo "Current nix version: $current_nix_version" + +# +# update the nix expression if the versions differ +# + +if [[ "$current_nix_version" = "$upstream_version" ]]; then echo "Spotify is already up ot date" exit 0 fi -echo "Updating from ${version_pre} to ${version}, released on ${last_updated}" +echo "Updating from ${current_nix_version} to ${upstream_version}, released on ${last_updated}" -# search-andreplace revision, hash and version +# search-and-replace revision, hash and version sed --regexp-extended \ -e 's/rev\s*=\s*"[0-9]+"\s*;/rev = "'"${revision}"'";/' \ - -e 's/sha512\s*=\s*".{128}"\s*;/sha512 = "'"${sha512}"'";/' \ - -e 's/version\s*=\s*".*"\s*;/version = "'"${version}"'";/' \ + -e 's/sha512\s*=\s*"[^"]*"\s*;/sha512 = "'"${sha512}"'";/' \ + -e 's/version\s*=\s*".*"\s*;/version = "'"${upstream_version}"'";/' \ -i "$spotify_nix" +# +# try to build the updated version +# + if ! nix-build -A spotify "$nixpkgs"; then echo "The updated spotify failed to build." exit 1 fi +# +# give instructions for upstreaming +# + git add "$spotify_nix" -# show diff for review -git diff HEAD -# prepare commit message, but allow edit -git commit --edit --message "spotify: $version_pre -> $version" +# show changes for review +git status +echo 'Please review and test the changes (./result/bin/spotify).' +echo 'Then stage the changes with `git add` and commit with:' +# prepare commit message +echo "git commit -m 'spotify: $current_nix_version -> $upstream_version'" diff --git a/pkgs/applications/audio/spotifywm/default.nix b/pkgs/applications/audio/spotifywm/default.nix new file mode 100644 index 00000000000..f22340b6941 --- /dev/null +++ b/pkgs/applications/audio/spotifywm/default.nix @@ -0,0 +1,31 @@ +{ stdenv, fetchFromGitHub, spotify, xorg }: +stdenv.mkDerivation rec { + name = "spotifywm-unstable-${version}"; + version = "2016-11-28"; + + src = fetchFromGitHub { + owner = "dasJ"; + repo = "spotifywm"; + rev = "91dd5532ffb7a398d775abe94fe7781904ab406f"; + sha256 = "01z088i83410bpx1vbp7c6cq01r431v55l7340x3izp53lnpp379"; + }; + + buildInputs = [ xorg.libX11 ]; + + propagatedBuildInputs = [ spotify ]; + + installPhase = '' + echo "#!${stdenv.shell}" > spotifywm + echo "LD_PRELOAD="$out/lib/spotifywm.so" ${spotify}/bin/spotify \$*" >> spotifywm + install -Dm644 spotifywm.so $out/lib/spotifywm.so + install -Dm755 spotifywm $out/bin/spotifywm + ''; + + meta = with stdenv.lib; { + 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; + maintainers = with maintainers; [ jqueiroz ]; + }; +} diff --git a/pkgs/applications/audio/synthv1/default.nix b/pkgs/applications/audio/synthv1/default.nix index 8ed71ce6c39..e44df51404a 100644 --- a/pkgs/applications/audio/synthv1/default.nix +++ b/pkgs/applications/audio/synthv1/default.nix @@ -2,11 +2,11 @@ stdenv.mkDerivation rec { name = "synthv1-${version}"; - version = "0.9.2"; + version = "0.9.4"; src = fetchurl { url = "mirror://sourceforge/synthv1/${name}.tar.gz"; - sha256 = "1r60l286n8y4a4rrlnbc3h7xk4s2pvqykvskls89prxg0lkpz7kl"; + sha256 = "18xjj14g8gnnbwyrf39bdxc5aswb620w9i323skdf6rnaq229jyv"; }; buildInputs = [ qt5.qtbase qt5.qttools libjack2 alsaLib liblo lv2 ]; @@ -15,7 +15,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "An old-school 4-oscillator subtractive polyphonic synthesizer with stereo fx"; - homepage = http://synthv1.sourceforge.net/; + homepage = https://synthv1.sourceforge.io/; license = licenses.gpl2Plus; platforms = platforms.linux; maintainers = [ maintainers.goibhniu ]; diff --git a/pkgs/applications/audio/tetraproc/default.nix b/pkgs/applications/audio/tetraproc/default.nix index 535d53d99ee..257963de256 100644 --- a/pkgs/applications/audio/tetraproc/default.nix +++ b/pkgs/applications/audio/tetraproc/default.nix @@ -5,11 +5,11 @@ stdenv.mkDerivation rec { name = "tetraproc-${version}"; - version = "0.8.2"; + version = "0.8.6"; src = fetchurl { url = "https://kokkinizita.linuxaudio.org/linuxaudio/downloads/${name}.tar.bz2"; - sha256 = "17y3vbm5f6h5cmh3yfxjgqz4xhfwpkla3lqfspnbm4ndlzmfpykv"; + sha256 = "02155ljfwgvfgq9z258fb4z7jrz7qx022d054fj5gr0v007cv0r7"; }; nativeBuildInputs = [ makeWrapper ]; diff --git a/pkgs/applications/audio/timemachine/default.nix b/pkgs/applications/audio/timemachine/default.nix index 8837566b13d..643f5075298 100644 --- a/pkgs/applications/audio/timemachine/default.nix +++ b/pkgs/applications/audio/timemachine/default.nix @@ -19,6 +19,10 @@ stdenv.mkDerivation rec { preConfigure = "./autogen.sh"; + NIX_LDFLAGS = [ + "-lm" + ]; + meta = { description = "JACK audio recorder"; homepage = http://plugin.org.uk/timemachine/; diff --git a/pkgs/applications/audio/transcribe/default.nix b/pkgs/applications/audio/transcribe/default.nix index c6d5ebc1627..9a76f2d15c7 100644 --- a/pkgs/applications/audio/transcribe/default.nix +++ b/pkgs/applications/audio/transcribe/default.nix @@ -1,33 +1,31 @@ -{ stdenv, fetchzip, lib, makeWrapper, alsaLib, atk, cairo, gdk_pixbuf -, glib, gst-ffmpeg, gst-plugins-bad, gst-plugins-base -, gst-plugins-good, gst-plugins-ugly, gstreamer, gtk2, libSM, libX11 -, libpng12, pango, zlib }: +{ stdenv, fetchzip, wrapGAppsHook, alsaLib, atk, cairo, gdk_pixbuf +, glib, gst_all_1, gtk3, libSM, libX11, libpng12, pango, zlib }: stdenv.mkDerivation rec { name = "transcribe-${version}"; - version = "8.40"; + version = "8.72"; src = if stdenv.hostPlatform.system == "i686-linux" then fetchzip { - url = "https://www.seventhstring.com/xscribe/downlinux32_old/xscsetup.tar.gz"; - sha256 = "1ngidmj9zz8bmv754s5xfsjv7v6xr03vck4kigzq4bpc9b1fdhjq"; + url = "https://www.seventhstring.com/xscribe/downlinux32/xscsetup.tar.gz"; + sha256 = "1h5l7ry9c9awpxfnd29b0wm973ifrhj17xl5d2fdsclw2swsickb"; } else if stdenv.hostPlatform.system == "x86_64-linux" then fetchzip { - url = "https://www.seventhstring.com/xscribe/downlinux64_old/xsc64setup.tar.gz"; - sha256 = "0svzi8svj6zn06gj0hr8mpnhq4416dvb4g5al0gpb1g3paywdaf9"; + url = "https://www.seventhstring.com/xscribe/downlinux64/xsc64setup.tar.gz"; + sha256 = "1rpd3ppnx5i5yrnfbjrx7h7dk48kwl99i9lnpa75ap7nxvbiznm0"; } else throw "Platform not supported"; - nativeBuildInputs = [ makeWrapper ]; + nativeBuildInputs = [ wrapGAppsHook ]; - buildInputs = [ gst-plugins-base gst-plugins-good - gst-plugins-bad gst-plugins-ugly gst-ffmpeg ]; + buildInputs = with gst_all_1; [ gst-plugins-base gst-plugins-good + gst-plugins-bad gst-plugins-ugly ]; dontPatchELF = true; - libPath = lib.makeLibraryPath [ - stdenv.cc.cc glib gtk2 atk pango cairo gdk_pixbuf alsaLib + libPath = with gst_all_1; stdenv.lib.makeLibraryPath [ + stdenv.cc.cc glib gtk3 atk pango cairo gdk_pixbuf alsaLib libX11 libSM libpng12 gstreamer gst-plugins-base zlib ]; @@ -42,13 +40,18 @@ stdenv.mkDerivation rec { patchelf \ --set-interpreter $(cat ${stdenv.cc}/nix-support/dynamic-linker) \ $out/libexec/transcribe + ''; - wrapProgram $out/libexec/transcribe \ - --prefix GST_PLUGIN_SYSTEM_PATH : "$GST_PLUGIN_SYSTEM_PATH" \ + preFixup = '' + gappsWrapperArgs+=( + --prefix GST_PLUGIN_SYSTEM_PATH : "$GST_PLUGIN_SYSTEM_PATH_1_0" --prefix LD_LIBRARY_PATH : "${libPath}" + ) + ''; + postFixup = '' ln -s $out/libexec/transcribe $out/bin/ - ''; + ''; meta = with stdenv.lib; { description = "Software to help transcribe recorded music"; diff --git a/pkgs/applications/audio/traverso/default.nix b/pkgs/applications/audio/traverso/default.nix new file mode 100644 index 00000000000..9729b136d90 --- /dev/null +++ b/pkgs/applications/audio/traverso/default.nix @@ -0,0 +1,31 @@ +{ stdenv, fetchurl, cmake, pkgconfig +, alsaLib, fftw, flac, lame, libjack2, libmad, libpulseaudio +, libsamplerate, libsndfile, libvorbis, portaudio, qtbase, wavpack +}: +stdenv.mkDerivation rec { + name = "traverso-${version}"; + version = "0.49.5"; + + src = fetchurl { + url = "http://traverso-daw.org/traverso-0.49.5.tar.gz"; + sha256 = "169dsqrf807ciavrd82d3iil0xy0r3i1js08xshcrn80ws9hv63m"; + }; + + nativeBuildInputs = [ cmake pkgconfig ]; + buildInputs = [ alsaLib fftw flac.dev libjack2 lame + libmad libpulseaudio libsamplerate.dev libsndfile.dev libvorbis + portaudio qtbase wavpack ]; + + cmakeFlags = [ "-DWANT_PORTAUDIO=1" "-DWANT_PULSEAUDIO=1" "-DWANT_MP3_ENCODE=1" "-DWANT_LV2=0" ]; + + enableParallelBuilding = true; + hardeningDisable = [ "format" ]; + + meta = with stdenv.lib; { + description = "Cross-platform multitrack audio recording and audio editing suite"; + homepage = http://traverso-daw.org/; + license = with licenses; [ gpl2Plus lgpl21Plus ]; + platforms = platforms.all; + maintainers = with maintainers; [ coconnor ]; + }; +} diff --git a/pkgs/applications/audio/vcv-rack/default.nix b/pkgs/applications/audio/vcv-rack/default.nix index 74e041868db..27533084804 100644 --- a/pkgs/applications/audio/vcv-rack/default.nix +++ b/pkgs/applications/audio/vcv-rack/default.nix @@ -3,8 +3,9 @@ , libzip, rtaudio, rtmidi, speex }: let - glfw-git = glfw.overrideAttrs (oldAttrs: { - name = "glfw-git-20180529"; + glfw-git = glfw.overrideAttrs (oldAttrs: rec { + name = "glfw-git-${version}"; + version = "unstable-2018-05-29"; src = fetchFromGitHub { owner = "glfw"; repo = "glfw"; diff --git a/pkgs/applications/audio/vocal/default.nix b/pkgs/applications/audio/vocal/default.nix index 97f59ee5f94..75f67adf464 100644 --- a/pkgs/applications/audio/vocal/default.nix +++ b/pkgs/applications/audio/vocal/default.nix @@ -1,9 +1,9 @@ -{ stdenv, fetchFromGitHub, cmake, ninja, pkgconfig, vala, gtk3, libxml2, granite, webkitgtk, clutter-gtk -, clutter-gst, libunity, libnotify, sqlite, gst_all_1, libsoup, json-glib, gnome3, gobjectIntrospection, wrapGAppsHook }: +{ stdenv, fetchFromGitHub, cmake, ninja, pkgconfig, vala_0_40, gtk3, libxml2, granite, webkitgtk, clutter-gtk +, clutter-gst, libunity, libnotify, sqlite, gst_all_1, libsoup, json-glib, gnome3, gobject-introspection, wrapGAppsHook }: stdenv.mkDerivation rec { pname = "vocal"; - version = "2.2.0"; + version = "2.3.0"; name = "${pname}-${version}"; @@ -11,22 +11,23 @@ stdenv.mkDerivation rec { owner = "needle-and-thread"; repo = pname; rev = version; - sha256 = "09cm4azyaa9fmfymygf25gf0klpm5p04k6bc1i90jhw0f1im8sgl"; + sha256 = "1wkkyai14in4yk3q4qq23wk3l49px2xi8z819y3glna236qsq6qp"; }; nativeBuildInputs = [ cmake - gobjectIntrospection + gobject-introspection libxml2 ninja pkgconfig - vala + vala_0_40 # should be `elementary.vala` when elementary attribute set is merged wrapGAppsHook ]; buildInputs = with gst_all_1; [ clutter-gst clutter-gtk + gnome3.defaultIconTheme # should be `elementary.defaultIconTheme`when elementary attribute set is merged gnome3.libgee granite gst-plugins-base diff --git a/pkgs/applications/audio/whipper/default.nix b/pkgs/applications/audio/whipper/default.nix index 1097e7b8fd7..07ab9b55e5b 100644 --- a/pkgs/applications/audio/whipper/default.nix +++ b/pkgs/applications/audio/whipper/default.nix @@ -3,17 +3,17 @@ python2.pkgs.buildPythonApplication rec { name = "whipper-${version}"; - version = "0.7.0"; + version = "0.7.3"; src = fetchFromGitHub { - owner = "JoeLametta"; + owner = "whipper-team"; repo = "whipper"; rev = "v${version}"; - sha256 = "04m8s0s9dcnly9l6id8vv99n9kbjrjid79bss52ay9yvwng0frmj"; + sha256 = "0ypbgc458i7yvbyvg6wg6agz5yzlwm1v6zw7fmyq9h59xsv27mpr"; }; pythonPath = with python2.pkgs; [ - pygobject2 musicbrainzngs urllib3 chardet + pygobject3 musicbrainzngs urllib3 chardet pycdio setuptools mutagen CDDB requests ]; @@ -25,11 +25,14 @@ python2.pkgs.buildPythonApplication rec { patches = [ (substituteAll { src = ./paths.patch; - inherit cdrdao cdparanoia utillinux flac sox; - accurateripChecksum = accuraterip-checksum; + inherit cdparanoia; }) ]; + makeWrapperArgs = [ + "--prefix" "PATH" ":" "${stdenv.lib.makeBinPath [ accuraterip-checksum cdrdao utillinux flac sox ]}" + ]; + # some tests require internet access # https://github.com/JoeLametta/whipper/issues/291 doCheck = false; @@ -39,7 +42,7 @@ python2.pkgs.buildPythonApplication rec { ''; meta = with stdenv.lib; { - homepage = https://github.com/JoeLametta/whipper; + homepage = https://github.com/whipper-team/whipper; description = "A CD ripper aiming for accuracy over speed"; maintainers = with maintainers; [ rycee jgeerds ]; license = licenses.gpl3Plus; diff --git a/pkgs/applications/audio/whipper/paths.patch b/pkgs/applications/audio/whipper/paths.patch index 9fe9f7a57c5..14b5384330d 100644 --- a/pkgs/applications/audio/whipper/paths.patch +++ b/pkgs/applications/audio/whipper/paths.patch @@ -1,16 +1,3 @@ ---- a/whipper/program/arc.py -+++ b/whipper/program/arc.py -@@ -3,8 +3,8 @@ - import logging - logger = logging.getLogger(__name__) - --ARB = 'accuraterip-checksum' --FLAC = 'flac' -+ARB = '@accurateripChecksum@/bin/accuraterip-checksum' -+FLAC = '@flac@/bin/flac' - - - def _execute(cmd, **redirects): --- a/whipper/program/cdparanoia.py +++ b/whipper/program/cdparanoia.py @@ -280,10 +280,10 @@ @@ -43,63 +30,3 @@ + self.command = ['@cdparanoia@/bin/cdparanoia', '-A'] if device: self.command += ['-d', device] - ---- a/whipper/program/cdrdao.py -+++ b/whipper/program/cdrdao.py -@@ -9,7 +9,7 @@ - import logging - logger = logging.getLogger(__name__) - --CDRDAO = 'cdrdao' -+CDRDAO = '@cdrdao@/bin/cdrdao' - - - def read_toc(device, fast_toc=False): ---- a/whipper/program/sox.py -+++ b/whipper/program/sox.py -@@ -4,7 +4,7 @@ - import logging - logger = logging.getLogger(__name__) - --SOX = 'sox' -+SOX = '@sox@/bin/sox' - - - def peak_level(track_path): ---- a/whipper/program/soxi.py -+++ b/whipper/program/soxi.py -@@ -6,7 +6,7 @@ - import logging - logger = logging.getLogger(__name__) - --SOXI = 'soxi' -+SOXI = '@sox@/bin/soxi' - - - class AudioLengthTask(ctask.PopenTask): ---- a/whipper/program/utils.py -+++ b/whipper/program/utils.py -@@ -9,7 +9,7 @@ - Eject the given device. - """ - logger.debug("ejecting device %s", device) -- os.system('eject %s' % device) -+ os.system('@utillinux@/bin/eject %s' % device) - - - def load_device(device): -@@ -17,7 +17,7 @@ - Load the given device. - """ - logger.debug("loading (eject -t) device %s", device) -- os.system('eject -t %s' % device) -+ os.system('@utillinux@/bin/eject -t %s' % device) - - - def unmount_device(device): -@@ -32,4 +32,4 @@ - proc = open('/proc/mounts').read() - if device in proc: - print 'Device %s is mounted, unmounting' % device -- os.system('umount %s' % device) -+ os.system('@utillinux@/bin/umount %s' % device) diff --git a/pkgs/applications/audio/wolf-shaper/default.nix b/pkgs/applications/audio/wolf-shaper/default.nix new file mode 100644 index 00000000000..562fdc1be8b --- /dev/null +++ b/pkgs/applications/audio/wolf-shaper/default.nix @@ -0,0 +1,47 @@ +{ stdenv, fetchFromGitHub , libjack2, lv2, xorg, liblo, libGL, libXcursor, pkgconfig }: + +stdenv.mkDerivation rec { + name = "wolf-shaper-${version}"; + version = "0.1.6"; + + src = fetchFromGitHub { + owner = "pdesaulniers"; + repo = "wolf-shaper"; + rev = "v${version}"; + sha256 = "01h5dm1nrr0i54ancwznr7wn4vpw08dw0b69v3axy32r5j7plw6s"; + fetchSubmodules = true; + }; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ libjack2 lv2 xorg.libX11 liblo libGL libXcursor ]; + + makeFlags = [ + "BUILD_LV2=true" + "BUILD_DSSI=true" + "BUILD_VST2=true" + "BUILD_JACK=true" + ]; + + patchPhase = '' + patchShebangs ./dpf/utils/generate-ttl.sh + ''; + + installPhase = '' + mkdir -p $out/lib/lv2 + mkdir -p $out/lib/dssi + mkdir -p $out/lib/vst + mkdir -p $out/bin/ + cp -r bin/wolf-shaper.lv2 $out/lib/lv2/ + cp -r bin/wolf-shaper-dssi* $out/lib/dssi/ + cp -r bin/wolf-shaper-vst.so $out/lib/vst/ + cp -r bin/wolf-shaper $out/bin/ + ''; + + meta = with stdenv.lib; { + homepage = https://pdesaulniers.github.io/wolf-shaper/; + description = "Waveshaper plugin with spline-based graph editor"; + license = licenses.gpl3; + maintainers = [ maintainers.magnetophon ]; + platforms = [ "i686-linux" "x86_64-linux" ]; + }; +} diff --git a/pkgs/applications/audio/x42-plugins/default.nix b/pkgs/applications/audio/x42-plugins/default.nix index 7c57b884c8e..e6041dc9b1c 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 = "20180812"; + version = "20181103"; name = "x42-plugins-${version}"; src = fetchurl { url = "https://gareus.org/misc/x42-plugins/${name}.tar.xz"; - sha256 = "0gzwzxpa2k2w9c6j3pspwi9slfyd57wb192d6yqcg92pfmnxy9dz"; + sha256 = "085d6qjj7nl22f0xamqdrnfxwi8zrfwgkwm1svm73bjkdv270438"; }; nativeBuildInputs = [ pkgconfig ]; @@ -34,6 +34,6 @@ stdenv.mkDerivation rec { homepage = https://github.com/x42/x42-plugins; maintainers = with maintainers; [ magnetophon ]; license = licenses.gpl2; - platforms = platforms.linux; + platforms = [ "i686-linux" "x86_64-linux" ]; }; } diff --git a/pkgs/applications/audio/yoshimi/default.nix b/pkgs/applications/audio/yoshimi/default.nix index d35c7b05a89..9d57095a26a 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 { name = "yoshimi-${version}"; - version = "1.5.9"; + version = "1.5.10"; src = fetchurl { url = "mirror://sourceforge/yoshimi/${name}.tar.bz2"; - sha256 = "1nqwxwq6814m860zrh33r85vdyi2bgkvjg5372h3ngcdmxnb7wr0"; + sha256 = "0mazzn5pc4xnjci3yy1yfsx9l05gkxqzkmscaq1h75jpa7qfsial"; }; buildInputs = [ diff --git a/pkgs/applications/backup/crashplan/crashplan-small-business.nix b/pkgs/applications/backup/crashplan/crashplan-small-business.nix index 529b0dbd42b..2016d21c592 100644 --- a/pkgs/applications/backup/crashplan/crashplan-small-business.nix +++ b/pkgs/applications/backup/crashplan/crashplan-small-business.nix @@ -98,6 +98,6 @@ stdenv.mkDerivation rec { license = licenses.unfree; platforms = [ "x86_64-linux" ]; maintainers = with maintainers; [ xvapx ]; + broken = true; # 2018-12-06 }; - } diff --git a/pkgs/applications/backup/deja-dup/default.nix b/pkgs/applications/backup/deja-dup/default.nix index c8fb4af3c4b..7876ebc244b 100644 --- a/pkgs/applications/backup/deja-dup/default.nix +++ b/pkgs/applications/backup/deja-dup/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, substituteAll, meson, ninja, pkgconfig, vala_0_40, gettext +{ stdenv, fetchFromGitLab, substituteAll, meson, ninja, pkgconfig, vala_0_40, gettext , gnome3, libnotify, itstool, glib, gtk3, libxml2 , coreutils, libsecret, pcre, libxkbcommon, wrapGAppsHook , libpthreadstubs, libXdmcp, epoxy, at-spi2-core, dbus, libgpgerror @@ -6,12 +6,15 @@ }: stdenv.mkDerivation rec { - name = "deja-dup-${version}"; - version = "38.0"; + pname = "deja-dup"; + version = "38.3"; - src = fetchurl { - url = "https://launchpad.net/deja-dup/${stdenv.lib.versions.major version}/${version}/+download/deja-dup-${version}.tar.xz"; - sha256 = "1l3sa24v0v6xf312h36jikfi8zyx6z3nmc7pjzgdp7l89gkdm65v"; + src = fetchFromGitLab { + domain = "gitlab.gnome.org"; + owner = "World"; + repo = pname; + rev = version; + sha256 = "1bnvmdlm67k1b6115x75j3nl92x5yl4psq5pna2w6cg9npxdd3fa"; }; patches = [ @@ -23,7 +26,7 @@ stdenv.mkDerivation rec { ]; postPatch = '' - substituteInPlace deja-dup/nautilus/NautilusExtension.c --subst-var-by DEJA_DUP_GSETTINGS_PATH $out/share/gsettings-schemas/${name}/glib-2.0/schemas + substituteInPlace deja-dup/nautilus/NautilusExtension.c --subst-var-by DEJA_DUP_GSETTINGS_PATH $out/share/gsettings-schemas/${pname}-${version}/glib-2.0/schemas ''; nativeBuildInputs = [ @@ -57,9 +60,9 @@ stdenv.mkDerivation rec { of backing up the Right Way (encrypted, off-site, and regular) \ and uses duplicity as the backend. ''; - homepage = https://launchpad.net/deja-dup; - license = with licenses; gpl3; + homepage = https://wiki.gnome.org/Apps/DejaDup; + license = licenses.gpl3Plus; maintainers = with maintainers; [ jtojnar joncojonathan ]; - platforms = with platforms; linux; + platforms = platforms.linux; }; } diff --git a/pkgs/applications/backup/vdmfec/default.nix b/pkgs/applications/backup/vdmfec/default.nix new file mode 100644 index 00000000000..3a480f70d4b --- /dev/null +++ b/pkgs/applications/backup/vdmfec/default.nix @@ -0,0 +1,19 @@ +{ stdenv, fetchurl }: + +stdenv.mkDerivation rec { + name = "vdmfec-${version}"; + version = "1.0"; + + src = fetchurl { + url = "http://members.tripod.com/professor_tom/archives/${name}.tgz"; + sha256 = "0i7q4ylx2xmzzq778anpkj4nqir5gf573n1lbpxnbc10ymsjq2rm"; + }; + + meta = with stdenv.lib; { + description = "A program that adds error correction blocks"; + homepage = "http://members.tripod.com/professor_tom/archives/index.html"; + maintainers = [ maintainers.ar1a ]; + license = with licenses; [ gpl2 /* for vdmfec */ bsd2 /* for fec */ ]; + platforms = platforms.all; + }; +} diff --git a/pkgs/applications/display-managers/lightdm-mini-greeter/default.nix b/pkgs/applications/display-managers/lightdm-mini-greeter/default.nix index ef80aa00563..91446f73507 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 { name = "lightdm-mini-greeter-${version}"; - version = "0.3.2"; + version = "0.3.4"; src = fetchFromGitHub { owner = "prikhi"; repo = "lightdm-mini-greeter"; rev = version; - sha256 = "1g3lrh034w38hiq96b0xmghmlf87hcycwdh06dwkdksr0hl08wxy"; + sha256 = "1qi0bsqi8z2zv3303ww0kd7bciz6qx8na5bkvgrqlwyvq31czai5"; }; nativeBuildInputs = [ autoreconfHook pkgconfig ]; @@ -26,7 +26,7 @@ stdenv.mkDerivation rec { description = "A minimal, configurable, single-user GTK3 LightDM greeter"; homepage = https://github.com/prikhi/lightdm-mini-greeter; license = licenses.gpl3; - maintainers = with maintainers; [ mnacamura ]; + maintainers = with maintainers; [ mnacamura prikhi ]; platforms = platforms.linux; }; } diff --git a/pkgs/applications/display-managers/lightdm/default.nix b/pkgs/applications/display-managers/lightdm/default.nix index da7189f9196..36928a29897 100644 --- a/pkgs/applications/display-managers/lightdm/default.nix +++ b/pkgs/applications/display-managers/lightdm/default.nix @@ -1,6 +1,6 @@ { stdenv, fetchFromGitHub, pam, pkgconfig, autoconf, automake, libtool, libxcb , glib, libXdmcp, itstool, intltool, libxklavier, libgcrypt, audit, busybox -, polkit, accountsservice, gtk-doc, gnome3, gobjectIntrospection, vala +, polkit, accountsservice, gtk-doc, gnome3, gobject-introspection, vala , withQt4 ? false, qt4 , withQt5 ? false, qtbase }: @@ -27,7 +27,7 @@ stdenv.mkDerivation rec { automake gnome3.yelp-tools gnome3.yelp-xsl - gobjectIntrospection + gobject-introspection gtk-doc intltool itstool diff --git a/pkgs/applications/display-managers/ly/default.nix b/pkgs/applications/display-managers/ly/default.nix new file mode 100644 index 00000000000..e8edcc3f634 --- /dev/null +++ b/pkgs/applications/display-managers/ly/default.nix @@ -0,0 +1,29 @@ +{ stdenv, lib, fetchFromGitHub, linux-pam }: + +stdenv.mkDerivation rec { + name = "ly-${version}"; + version = "0.2.1"; + + src = fetchFromGitHub { + owner = "cylgom"; + repo = "ly"; + rev = version; + sha256 = "16gjcrd4a6i4x8q8iwlgdildm7cpdsja8z22pf2izdm6rwfki97d"; + fetchSubmodules = true; + }; + + buildInputs = [ linux-pam ]; + makeFlags = [ "FLAGS=-Wno-error" ]; + + installPhase = '' + mkdir -p $out/bin + cp bin/ly $out/bin + ''; + + meta = with lib; { + description = "TUI display manager"; + license = licenses.wtfpl; + 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 c9fd4f9c4ab..3de4067f55d 100644 --- a/pkgs/applications/display-managers/sddm/default.nix +++ b/pkgs/applications/display-managers/sddm/default.nix @@ -4,7 +4,7 @@ }: let - version = "0.17.0"; + version = "0.18.0"; in mkDerivation rec { name = "sddm-${version}"; @@ -13,12 +13,11 @@ in mkDerivation rec { owner = "sddm"; repo = "sddm"; rev = "v${version}"; - sha256 = "1m35ly6miwy8ivsln3j1bfv0nxbc4gyqnj7f847zzp53jsqrm3mq"; + sha256 = "16xnm02iqgy4hydzd6my0widq981glbazbhxnihhclgsaczh8mfq"; }; patches = [ ./sddm-ignore-config-mtime.patch - ./qt511.patch ]; postPatch = diff --git a/pkgs/applications/display-managers/sddm/qt511.patch b/pkgs/applications/display-managers/sddm/qt511.patch deleted file mode 100644 index 6430e60ed41..00000000000 --- a/pkgs/applications/display-managers/sddm/qt511.patch +++ /dev/null @@ -1,28 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 005c9ad..71b46d7 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -93,7 +93,7 @@ find_package(XCB REQUIRED) - find_package(XKB REQUIRED) - - # Qt 5 --find_package(Qt5 5.6.0 CONFIG REQUIRED Core DBus Gui Qml Quick LinguistTools) -+find_package(Qt5 5.6.0 CONFIG REQUIRED Core DBus Gui Qml Quick LinguistTools Test) - - # find qt5 imports dir - get_target_property(QMAKE_EXECUTABLE Qt5::qmake LOCATION) -diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt -index c9d935a..bb85ddd 100644 ---- a/test/CMakeLists.txt -+++ b/test/CMakeLists.txt -@@ -2,9 +2,8 @@ set(QT_USE_QTTEST TRUE) - - include_directories(../src/common) - -- - set(ConfigurationTest_SRCS ConfigurationTest.cpp ../src/common/ConfigReader.cpp) - add_executable(ConfigurationTest ${ConfigurationTest_SRCS}) - add_test(NAME Configuration COMMAND ConfigurationTest) - --qt5_use_modules(ConfigurationTest Test) -+target_link_libraries(ConfigurationTest Qt5::Core Qt5::Test) diff --git a/pkgs/applications/editors/android-studio/common.nix b/pkgs/applications/editors/android-studio/common.nix index 23e0584cb7f..a1465766f8b 100644 --- a/pkgs/applications/editors/android-studio/common.nix +++ b/pkgs/applications/editors/android-studio/common.nix @@ -158,9 +158,9 @@ in runCommand '' mkdir -p $out/{bin,share/pixmaps} - # TODO: Rename preview -> beta (and add -stable suffix?): echo -n "$startScript" > $out/bin/${pname} chmod +x $out/bin/${pname} + ln -s ${androidStudio}/bin/studio.png $out/share/pixmaps/${drvName}.png ln -s ${desktopItem}/share/applications $out/share/applications '' diff --git a/pkgs/applications/editors/android-studio/default.nix b/pkgs/applications/editors/android-studio/default.nix index 051078e1f5a..4b53774662f 100644 --- a/pkgs/applications/editors/android-studio/default.nix +++ b/pkgs/applications/editors/android-studio/default.nix @@ -8,19 +8,30 @@ let inherit (gnome2) GConf gnome_vfs; }; stableVersion = { - version = "3.2.0.26"; # "Android Studio 3.2.0" - build = "181.5014246"; - sha256Hash = "0v1a3b0n8dq5p8f6jap2ypqw724v61ki31qhqmh9hn36mn6d8wg6"; + version = "3.3.0.20"; # "Android Studio 3.3" + build = "182.5199772"; + sha256Hash = "0dracganibnkyapn2pk2qqnxpwmii57371ycri4nccaci9v9pcjw"; + }; + betaVersion = { + version = "3.4.0.11"; # "Android Studio 3.4 Beta 2" + build = "183.5240537"; + sha256Hash = "0mv7ayqjkw97jzdifw1cdvjhnzygzkd2a9rc0h99fclhf2nii5yr"; }; - betaVersion = stableVersion; latestVersion = { # canary & dev - version = "3.3.0.12"; # "Android Studio 3.3 Canary 13" - build = "182.5035453"; - sha256Hash = "0f2glxm41ci016dv9ygr12s72lc5mh0zsxhpmx0xswg9mdwrvwa7"; + version = "3.5.0.1"; # "Android Studio 3.5 Canary 2" + build = "183.5240547"; + sha256Hash = "0z52ig9v2w9i6bqiqpdvgcr6g6sgl8p5317jamg72d5csm9hgfx3"; }; in rec { - # Old alias - preview = beta; + # Old alias (TODO @primeos: Remove after 19.03 is branched off): + preview = throw '' + The attributes "android-studio-preview" and "androidStudioPackages.preview" + are now deprecated and will be removed soon, please use + "androidStudioPackages.beta" instead. This attribute corresponds to the + beta channel, if you want the latest release you can use + "androidStudioPackages.dev" or "androidStudioPackages.canary" instead + (currently, there is no difference between both channels). + ''; # Attributes are named by their corresponding release channels @@ -31,7 +42,7 @@ in rec { beta = mkStudio (betaVersion // { channel = "beta"; - pname = "android-studio-preview"; + pname = "android-studio-beta"; }); dev = mkStudio (latestVersion // { diff --git a/pkgs/applications/editors/atom/default.nix b/pkgs/applications/editors/atom/default.nix index 6cfba39ed4b..13dc9e1285b 100644 --- a/pkgs/applications/editors/atom/default.nix +++ b/pkgs/applications/editors/atom/default.nix @@ -1,6 +1,19 @@ { stdenv, pkgs, fetchurl, makeWrapper, wrapGAppsHook, gvfs, gtk3, atomEnv }: let + versions = { + atom = { + version = "1.33.0"; + sha256 = "0f6m6zwgz94m3q11ipyiliap3s5a3zlrg3ldjwkqnxjl6gwlxc2r"; + }; + + atom-beta = { + version = "1.34.0"; + beta = 0; + sha256 = "1xnrr4z55sj46hqr0il26sfs6s3knv60m340cw3rzzic271b3ifw"; + }; + }; + common = pname: {version, sha256, beta ? null}: let fullVersion = version + stdenv.lib.optionalString (beta != null) "-beta${toString beta}"; name = "${pname}-${fullVersion}"; @@ -31,8 +44,7 @@ let buildCommand = '' mkdir -p $out/usr/ ar p $src data.tar.xz | tar -C $out -xJ ./usr - substituteInPlace $out/usr/share/applications/${pname}.desktop \ - --replace /usr/share/${pname} $out/bin + sed -i -e "s|Exec=.*$|Exec=$out/bin/${pname}|" $out/usr/share/applications/${pname}.desktop mv $out/usr/* $out/ rm -r $out/share/lintian rm -r $out/usr/ @@ -58,28 +70,14 @@ let ln -s ${pkgs.git}/bin/git $dugite/git/libexec/git-core/git find $share -name "*.node" -exec patchelf --set-rpath "${atomEnv.libPath}:$share" {} \; - - paxmark m $share/atom - paxmark m $share/resources/app/apm/bin/node ''; meta = with stdenv.lib; { description = "A hackable text editor for the 21st Century"; homepage = https://atom.io/; license = licenses.mit; - maintainers = with maintainers; [ offline nequissimus synthetica ysndr ]; + maintainers = with maintainers; [ offline nequissimus ysndr ]; platforms = platforms.x86_64; }; }; -in stdenv.lib.mapAttrs common { - atom = { - version = "1.31.2"; - sha256 = "1szx9p2nz1qzjpig0l8h4hj5mqwpjvkcynn8crh21drply4bpfr0"; - }; - - atom-beta = { - version = "1.32.0"; - beta = 0; - sha256 = "12k5cn70a0diyaqbmq6s6l2sbi9i3d9p7i38qnm97lnw0y1kh0jm"; - }; -} +in stdenv.lib.mapAttrs common versions diff --git a/pkgs/applications/editors/eclipse/default.nix b/pkgs/applications/editors/eclipse/default.nix index 4d77c47695a..55bbc778e3a 100644 --- a/pkgs/applications/editors/eclipse/default.nix +++ b/pkgs/applications/editors/eclipse/default.nix @@ -228,6 +228,27 @@ rec { }; eclipse_sdk_37 = eclipse-sdk-37; # backward compatibility, added 2016-01-30 + ### Eclipse Java + + eclipse-java = eclipse-java-49; + + eclipse-java-49 = buildEclipse { + name = "eclipse-java-4.9.0"; + description = "Eclipse IDE for Java Developers"; + src = + if stdenv.system == "x86_64-linux" then + fetchurl { + url = http://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/technology/epp/downloads/release/2018-09/R/eclipse-java-2018-09-linux-gtk-x86_64.tar.gz; + sha512 = "9dac5d040cdabf779de3996de87290e352130c7e860c1d0a98772f41da828ad45f90748b68e0a8a4f8d1ebbbbe5fdfe6401b7d871b93af34103d4a81a041c6a5"; + } + else if stdenv.system == "i686-linux" then + fetchurl { + url = http://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/technology/epp/downloads/release/2018-09/R/eclipse-java-2018-09-linux-gtk.tar.gz; + sha512 = "24208e95b972e848d6b65ed8108d9e81584cf051397f2f43fb6269f5a625b8d7552ad77c7980a1a5653c87f06776e2926fd85607aae44e44657b4f6cc9b3e2e3"; + } + else throw "Unsupported system: ${stdenv.system}"; + }; + ### Environments # Function that assembles a complete Eclipse environment from an diff --git a/pkgs/applications/editors/eclipse/plugins.nix b/pkgs/applications/editors/eclipse/plugins.nix index fa83975b8d9..30f381644ac 100644 --- a/pkgs/applications/editors/eclipse/plugins.nix +++ b/pkgs/applications/editors/eclipse/plugins.nix @@ -555,12 +555,12 @@ rec { spotbugs = buildEclipseUpdateSite rec { name = "spotbugs-${version}"; - version = "3.1.6"; + version = "3.1.10"; src = fetchzip { stripRoot = false; url = "https://github.com/spotbugs/spotbugs/releases/download/${version}/eclipsePlugin.zip"; - sha256 = "1qsams12n64slp00nfc9v943sy9bzffzm7anqqaz2hjw64iia7fh"; + sha256 = "0xrflgw0h05z3za784ach2fx6dh04lgmfr426m1q235vv2ibds5y"; }; meta = with stdenv.lib; { diff --git a/pkgs/applications/editors/ed/default.nix b/pkgs/applications/editors/ed/default.nix index 536b319cab0..90a7eeffb04 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.14.2"; + version = "1.15"; src = fetchurl { url = "mirror://gnu/ed/${name}.tar.lz"; - sha256 = "1nqhk3n1s1p77g2bjnj55acicsrlyb2yasqxqwpx0w0djfx64ygm"; + sha256 = "0x6ivy5k0d7dy5z9g8q8nipr89m4qbk2ink2898qq43smp08ji5d"; }; nativeBuildInputs = [ lzip ]; @@ -30,7 +30,7 @@ stdenv.mkDerivation (rec { license = stdenv.lib.licenses.gpl3Plus; - homepage = http://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 28775e48e1a..0b6e28434f5 100644 --- a/pkgs/applications/editors/edbrowse/default.nix +++ b/pkgs/applications/editors/edbrowse/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchFromGitHub, duktape, curl, pcre, readline, openssl, perl, html-tidy }: +{ stdenv, fetchFromGitHub, fetchpatch, duktape, curl, pcre, readline, openssl, perl, html-tidy }: stdenv.mkDerivation rec { name = "edbrowse-${version}"; @@ -6,7 +6,15 @@ stdenv.mkDerivation rec { buildInputs = [ curl pcre readline openssl duktape perl html-tidy ]; - patchPhase = '' + patches = [ + # Fix build against recent libcurl + (fetchpatch { + url = https://github.com/CMB/edbrowse/commit/5d2b9e21fdf019f461ebe62738d615428d5db963.diff; + sha256 = "167q8n0syj3iv6lxrbpv4kvb63j4byj4qxrxayy08bah3pss3gky"; + }) + ]; + + postPatch = '' for i in ./tools/*.pl do substituteInPlace $i --replace "/usr/bin/perl" "${perl}/bin/perl" diff --git a/pkgs/applications/editors/emacs-modes/bbdb/3.nix b/pkgs/applications/editors/emacs-modes/bbdb/3.nix index 44116fbac0c..d20ab53bf7e 100644 --- a/pkgs/applications/editors/emacs-modes/bbdb/3.nix +++ b/pkgs/applications/editors/emacs-modes/bbdb/3.nix @@ -4,7 +4,7 @@ stdenv.mkDerivation rec { name = "bbdb-3.1.2"; src = fetchurl { - url = "http://download.savannah.gnu.org/releases/bbdb/${name}.tar.gz"; + url = "https://download.savannah.gnu.org/releases/bbdb/${name}.tar.gz"; sha256 = "1gs16bbpiiy01w9pyg12868r57kx1v3hnw04gmqsmpc40l1hyy05"; }; @@ -18,7 +18,7 @@ stdenv.mkDerivation rec { ''; meta = { - homepage = http://savannah.nongnu.org/projects/bbdb/; + homepage = https://savannah.nongnu.org/projects/bbdb/; description = "The Insidious Big Brother Database (BBDB), a contact management utility for Emacs, version 3"; license = "GPL"; }; diff --git a/pkgs/applications/editors/emacs-modes/cedille/default.nix b/pkgs/applications/editors/emacs-modes/cedille/default.nix new file mode 100644 index 00000000000..2d1cbb75981 --- /dev/null +++ b/pkgs/applications/editors/emacs-modes/cedille/default.nix @@ -0,0 +1,30 @@ +{ stdenv, cedille, emacs }: + +stdenv.mkDerivation rec { + name = "cedille-mode-${version}"; + version = cedille.version; + + src = cedille.src; + + buildInputs = [ emacs ]; + + buildPhase = ":"; + + installPhase = '' + install -d $out/share/emacs/site-lisp + install se-mode/*.el se-mode/*.elc $out/share/emacs/site-lisp + install cedille-mode/*.el cedille-mode/*.elc $out/share/emacs/site-lisp + install *.el *.elc $out/share/emacs/site-lisp + substituteInPlace $out/share/emacs/site-lisp/cedille-mode.el \ + --replace /usr/bin/cedille ${cedille}/bin/cedille \ + + ''; + + meta = { + description = "Emacs major mode for Cedille"; + homepage = cedille.meta.homepage; + license = cedille.meta.license ; + platforms = cedille.meta.platforms; + maintainers = cedille.meta.maintainers; + }; +} diff --git a/pkgs/applications/editors/emacs-modes/color-theme/default.nix b/pkgs/applications/editors/emacs-modes/color-theme/default.nix index a3d76a307c7..407b9e58f0b 100644 --- a/pkgs/applications/editors/emacs-modes/color-theme/default.nix +++ b/pkgs/applications/editors/emacs-modes/color-theme/default.nix @@ -18,7 +18,7 @@ stdenv.mkDerivation rec { meta = { description = "Emacs-lisp mode for skinning your Emacs"; - homepage = http://www.nongnu.org/color-theme; + homepage = https://www.nongnu.org/color-theme; license = stdenv.lib.licenses.gpl2Plus; platforms = stdenv.lib.platforms.all; diff --git a/pkgs/applications/editors/emacs-modes/elpa-generated.nix b/pkgs/applications/editors/emacs-modes/elpa-generated.nix index f793366a70a..2fd8add173d 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 = "5.3.1"; + version = "6.0.1"; src = fetchurl { - url = "https://elpa.gnu.org/packages/ada-mode-5.3.1.tar"; - sha256 = "0srna7w3y2nq0y80a01bcx8mg6gvind7nzvsbk9bd7rrr05njrd9"; + url = "https://elpa.gnu.org/packages/ada-mode-6.0.1.tar"; + sha256 = "12ryblyqnhqibaffibs7qq3xq9rf5d4y9dishq82pbbh9y8s17hj"; }; packageRequires = [ cl-lib emacs wisi ]; meta = { @@ -69,10 +69,10 @@ elpaBuild { pname = "adaptive-wrap"; ename = "adaptive-wrap"; - version = "0.5.2"; + version = "0.7"; src = fetchurl { - url = "https://elpa.gnu.org/packages/adaptive-wrap-0.5.2.el"; - sha256 = "1qcf1cabn4wb34cdmlyk3rv5dl1dcrxrbaw38kly1prs6y4l22aw"; + url = "https://elpa.gnu.org/packages/adaptive-wrap-0.7.el"; + sha256 = "10fb8gzvkbnrgzv28n1rczs03dvapr7rvi0kd73j6yf1zg2iz6qp"; }; packageRequires = []; meta = { @@ -163,10 +163,10 @@ elpaBuild { pname = "arbitools"; ename = "arbitools"; - version = "0.95"; + version = "0.97"; src = fetchurl { - url = "https://elpa.gnu.org/packages/arbitools-0.95.el"; - sha256 = "1v6i9d35xqag9a8j12n3xjircwzndjwgb84qm7rsgbns60v3ci8y"; + url = "https://elpa.gnu.org/packages/arbitools-0.97.el"; + sha256 = "0fx1z4mw3v42xzixsj80xw56pg00bch04galkjbxbqzm25nl4aha"; }; packageRequires = [ cl-lib ]; meta = { @@ -313,10 +313,10 @@ elpaBuild { pname = "brief"; ename = "brief"; - version = "5.85"; + version = "5.87"; src = fetchurl { - url = "https://elpa.gnu.org/packages/brief-5.85.el"; - sha256 = "10a41qidns28cka0y25rapla58fzjy9c8cw9v9bmrm4gkjqapsv4"; + url = "https://elpa.gnu.org/packages/brief-5.87.tar"; + sha256 = "02z8fzzf1zsk2r0cnssz3i2nd4qwsnya4i2r4qi4ndc1xjlsvgwc"; }; packageRequires = []; meta = { @@ -478,10 +478,10 @@ elpaBuild { pname = "company"; ename = "company"; - version = "0.9.6"; + version = "0.9.9"; src = fetchurl { - url = "https://elpa.gnu.org/packages/company-0.9.6.tar"; - sha256 = "0w1jqhs87g0sqhv2iw6a5i8f4yjkrc65fb3h6vyv11sb8kfnhda7"; + url = "https://elpa.gnu.org/packages/company-0.9.9.tar"; + sha256 = "1qinkz8gwgc27p3p3c9kddrrwx0jb4w0vgx7jq8fwpfj1n92m1rv"; }; packageRequires = [ emacs ]; meta = { @@ -493,10 +493,10 @@ elpaBuild { pname = "company-ebdb"; ename = "company-ebdb"; - version = "1"; + version = "1.1"; src = fetchurl { - url = "https://elpa.gnu.org/packages/company-ebdb-1.el"; - sha256 = "1awriwvjpf9k2r6hzawai5kxz28j40zk9fvpb946kd5yj0hxr9nc"; + url = "https://elpa.gnu.org/packages/company-ebdb-1.1.el"; + sha256 = "146qpiigz12zp1823ggxfrx090g0mxs7gz1ba7sa0iq6ibgzwwm9"; }; packageRequires = [ company ebdb ]; meta = { @@ -576,10 +576,10 @@ elpaBuild { pname = "crisp"; ename = "crisp"; - version = "1.3.4"; + version = "1.3.6"; src = fetchurl { - url = "https://elpa.gnu.org/packages/crisp-1.3.4.el"; - sha256 = "1xbnf7xlw499zsnr5ky2bghb2fzg3g7cf2ldmbb7c3b84raryn0i"; + url = "https://elpa.gnu.org/packages/crisp-1.3.6.el"; + sha256 = "0jf4668h0mzh8han2vbvpzz8m02b8rsbdrj0ddar30w5i6v2f8kz"; }; packageRequires = []; meta = { @@ -670,10 +670,10 @@ elpaBuild { pname = "debbugs"; ename = "debbugs"; - version = "0.15"; + version = "0.16"; src = fetchurl { - url = "https://elpa.gnu.org/packages/debbugs-0.15.tar"; - sha256 = "1x7jw2ldgkknyxg7x9fhnqkary691icnysmi3xw0g2fjrvllzhqw"; + url = "https://elpa.gnu.org/packages/debbugs-0.16.tar"; + sha256 = "0y3bq803c7820h15g66d1648skxfhlfa2v6vincj6xk5ssp44s9p"; }; packageRequires = [ cl-lib soap-client ]; meta = { @@ -711,16 +711,16 @@ license = lib.licenses.free; }; }) {}; - diff-hl = callPackage ({ cl-lib ? null, elpaBuild, fetchurl, lib }: + diff-hl = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib }: elpaBuild { pname = "diff-hl"; ename = "diff-hl"; - version = "1.8.4"; + version = "1.8.5"; src = fetchurl { - url = "https://elpa.gnu.org/packages/diff-hl-1.8.4.tar"; - sha256 = "0axhidc3cym7a2x4rpxf4745qss9s9ajyg4s9h5b4zn7v7fyp71n"; + url = "https://elpa.gnu.org/packages/diff-hl-1.8.5.tar"; + sha256 = "1vxc7z7c2qs0mx7l5sa4sybi5qbzv0s79flj74p1ynw8dl3qxg3d"; }; - packageRequires = [ cl-lib ]; + packageRequires = [ cl-lib emacs ]; meta = { homepage = "https://elpa.gnu.org/packages/diff-hl.html"; license = lib.licenses.free; @@ -745,10 +745,10 @@ elpaBuild { pname = "dired-du"; ename = "dired-du"; - version = "0.5"; + version = "0.5.1"; src = fetchurl { - url = "https://elpa.gnu.org/packages/dired-du-0.5.tar"; - sha256 = "09yj37p2fa5f81fqrzwghjkyy2ydsf4rbkfwpn2yyvzd5nd97bpl"; + url = "https://elpa.gnu.org/packages/dired-du-0.5.1.tar"; + sha256 = "1091scnrjh0a4gja4z6jxic6ghy1yryv46qk9c76pmh50cpw6766"; }; packageRequires = [ cl-lib emacs ]; meta = { @@ -775,10 +775,10 @@ elpaBuild { pname = "djvu"; ename = "djvu"; - version = "0.5"; + version = "1.0.1"; src = fetchurl { - url = "https://elpa.gnu.org/packages/djvu-0.5.el"; - sha256 = "1wpyv4ismfsz5hfaj75j3h3nni1mnk33czhw3rd45cf32a2zkqsj"; + url = "https://elpa.gnu.org/packages/djvu-1.0.1.el"; + sha256 = "1am4cm9csc5df3mbdby7j197j8yxv0x0maf6kfmn2ww1iwcyv8x6"; }; packageRequires = []; meta = { @@ -835,10 +835,10 @@ elpaBuild { pname = "ebdb"; ename = "ebdb"; - version = "0.6"; + version = "0.6.2"; src = fetchurl { - url = "https://elpa.gnu.org/packages/ebdb-0.6.tar"; - sha256 = "1zj8jvq5l4wlk4734i3isxi4barpivarq2f9kqzkfia7mcspxav8"; + url = "https://elpa.gnu.org/packages/ebdb-0.6.2.tar"; + sha256 = "1b37962mvm80vk5sdk9kfvvxsxn83z5z6zvm20m9997ggl5dv4dz"; }; packageRequires = [ cl-lib emacs seq ]; meta = { @@ -891,16 +891,21 @@ license = lib.licenses.free; }; }) {}; - eglot = callPackage ({ elpaBuild, emacs, fetchurl, jsonrpc, lib }: + eglot = callPackage ({ elpaBuild + , emacs + , fetchurl + , flymake ? null + , jsonrpc + , lib }: elpaBuild { pname = "eglot"; ename = "eglot"; - version = "1.1"; + version = "1.3"; src = fetchurl { - url = "https://elpa.gnu.org/packages/eglot-1.1.tar"; - sha256 = "01h4wh87lrd9l50y20gjjkgg760v8ixvbcb3q8jykl29989zw62y"; + url = "https://elpa.gnu.org/packages/eglot-1.3.tar"; + sha256 = "0hndqabxvrq4ak5kx2xlds5pkayi2bfd1f1xk8aidzk5i70f7yry"; }; - packageRequires = [ emacs jsonrpc ]; + packageRequires = [ emacs flymake jsonrpc ]; meta = { homepage = "https://elpa.gnu.org/packages/eglot.html"; license = lib.licenses.free; @@ -915,10 +920,10 @@ elpaBuild { pname = "el-search"; ename = "el-search"; - version = "1.7.9"; + version = "1.8.8"; src = fetchurl { - url = "https://elpa.gnu.org/packages/el-search-1.7.9.tar"; - sha256 = "06da4v03zis1mf09v61c1jzkp5x6drm61iakcbpy5hkdq8nvm3xc"; + url = "https://elpa.gnu.org/packages/el-search-1.8.8.tar"; + sha256 = "1yv91vzpxn29rr8rkrihcbf26pafnxj25j7g38rss9qigswjkpnk"; }; packageRequires = [ cl-print emacs stream ]; meta = { @@ -1017,10 +1022,10 @@ elpaBuild { pname = "excorporate"; ename = "excorporate"; - version = "0.8.0"; + version = "0.8.1"; src = fetchurl { - url = "https://elpa.gnu.org/packages/excorporate-0.8.0.tar"; - sha256 = "0sx04w7yp2byda0maifsmapqmq6w43r114a6gzqar0j82rsc0mfg"; + url = "https://elpa.gnu.org/packages/excorporate-0.8.1.tar"; + sha256 = "1k89472x80wsn14y16km5bgynmmd2kbdfhylb3cc17jvdn1xr53y"; }; packageRequires = [ emacs fsm nadvice soap-client url-http-ntlm ]; meta = { @@ -1032,10 +1037,10 @@ elpaBuild { pname = "exwm"; ename = "exwm"; - version = "0.19"; + version = "0.21"; src = fetchurl { - url = "https://elpa.gnu.org/packages/exwm-0.19.tar"; - sha256 = "11xd2w4h3zdwkdxypvmcz8s7q72cn76lfr9js77jbizyj6b04lr0"; + url = "https://elpa.gnu.org/packages/exwm-0.21.tar"; + sha256 = "07ng1pgsnc3isfsyzh2gfc7391p9il8lb5xqf1z6yqn20w7k6xzj"; }; packageRequires = [ xelb ]; meta = { @@ -1088,6 +1093,36 @@ license = lib.licenses.free; }; }) {}; + flymake = callPackage ({ elpaBuild, emacs, fetchurl, lib }: + elpaBuild { + pname = "flymake"; + ename = "flymake"; + version = "1.0.3"; + src = fetchurl { + url = "https://elpa.gnu.org/packages/flymake-1.0.3.el"; + sha256 = "1algny2zhcl4vc7kp5czcqvxzpgqfjnz2rnkv26r0ylxig3s98v7"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://elpa.gnu.org/packages/flymake.html"; + license = lib.licenses.free; + }; + }) {}; + fountain-mode = callPackage ({ elpaBuild, emacs, fetchurl, lib }: + elpaBuild { + pname = "fountain-mode"; + ename = "fountain-mode"; + version = "2.6.1"; + src = fetchurl { + url = "https://elpa.gnu.org/packages/fountain-mode-2.6.1.el"; + sha256 = "0p0h28cmryhsgrp2ghk28i1xkfz4gvdwaa38galn4jksn9dh0dyb"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://elpa.gnu.org/packages/fountain-mode.html"; + license = lib.licenses.free; + }; + }) {}; frame-tabs = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild { pname = "frame-tabs"; @@ -1182,10 +1217,10 @@ elpaBuild { pname = "gnorb"; ename = "gnorb"; - version = "1.5.5"; + version = "1.6.1"; src = fetchurl { - url = "https://elpa.gnu.org/packages/gnorb-1.5.5.tar"; - sha256 = "02l9snarsnzwp9w284wiylbd596g0f9bmahb1nybr14vh64ygh3r"; + url = "https://elpa.gnu.org/packages/gnorb-1.6.1.tar"; + sha256 = "0n4460hsmcc3l0y3nb3fysvh33cjwgv0a3mkc26xcx8v85zl7m63"; }; packageRequires = [ cl-lib ]; meta = { @@ -1213,6 +1248,36 @@ license = lib.licenses.free; }; }) {}; + gnus-mock = callPackage ({ elpaBuild, fetchurl, lib }: + elpaBuild { + pname = "gnus-mock"; + ename = "gnus-mock"; + version = "0.4.0"; + src = fetchurl { + url = "https://elpa.gnu.org/packages/gnus-mock-0.4.0.tar"; + sha256 = "058bd4f8za9bxayrd2j5b05qvk8lxxm8mmfwxb73d7k15z3z3l3s"; + }; + packageRequires = []; + meta = { + homepage = "https://elpa.gnu.org/packages/gnus-mock.html"; + license = lib.licenses.free; + }; + }) {}; + gpastel = callPackage ({ elpaBuild, emacs, fetchurl, lib }: + elpaBuild { + pname = "gpastel"; + ename = "gpastel"; + version = "0.5.0"; + src = fetchurl { + url = "https://elpa.gnu.org/packages/gpastel-0.5.0.el"; + sha256 = "1wky6047071vgyyw2m929nbwg4d9qqp1mjqwk7a5rs8hfr4xqxfw"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://elpa.gnu.org/packages/gpastel.html"; + license = lib.licenses.free; + }; + }) {}; heap = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild { pname = "heap"; @@ -1249,10 +1314,10 @@ elpaBuild { pname = "highlight-escape-sequences"; ename = "highlight-escape-sequences"; - version = "0.3"; + version = "0.4"; src = fetchurl { - url = "https://elpa.gnu.org/packages/highlight-escape-sequences-0.3.el"; - sha256 = "0q54h0zdaflr2sk4mwgm2ix8cdq4rm4pz03ln430qxc1zm8pz6gy"; + url = "https://elpa.gnu.org/packages/highlight-escape-sequences-0.4.el"; + sha256 = "1z8r9rnppn7iy7xv4kprfsqxday16h7c471i7rkyi3rv3l0pfxd0"; }; packageRequires = []; meta = { @@ -1429,10 +1494,10 @@ elpaBuild { pname = "jsonrpc"; ename = "jsonrpc"; - version = "1.0.6"; + version = "1.0.7"; src = fetchurl { - url = "https://elpa.gnu.org/packages/jsonrpc-1.0.6.el"; - sha256 = "13a19smz8cksv6fgcyxb111csvagkp07z5nl4imyp5b23asgl70p"; + url = "https://elpa.gnu.org/packages/jsonrpc-1.0.7.el"; + sha256 = "19z35gjphl4mlgpznfhlccgipnmbb3c1dvax48f4hw8qwksfcac1"; }; packageRequires = [ emacs ]; meta = { @@ -1594,10 +1659,10 @@ elpaBuild { pname = "markchars"; ename = "markchars"; - version = "0.2.0"; + version = "0.2.1"; src = fetchurl { - url = "https://elpa.gnu.org/packages/markchars-0.2.0.el"; - sha256 = "1wn9v9jzcyq5wxhw5839jsggfy97955ngspn2gn6jmvz6zdgy4hv"; + url = "https://elpa.gnu.org/packages/markchars-0.2.1.el"; + sha256 = "0dpq3brblcxjkcqv3xsmlsx5z9zbv94v0kg4j1sic3brz6hbl4lk"; }; packageRequires = []; meta = { @@ -1774,10 +1839,10 @@ elpaBuild { pname = "nadvice"; ename = "nadvice"; - version = "0.2"; + version = "0.3"; src = fetchurl { - url = "https://elpa.gnu.org/packages/nadvice-0.2.el"; - sha256 = "094slkgw4f7cd88r76d0rgpbqr7zzwy19ssndg8v3sm4p5ld6vwg"; + url = "https://elpa.gnu.org/packages/nadvice-0.3.el"; + sha256 = "0gi3csnxbs8h7iy0scsl35sic3gv90swa89hhdjwb7qvpirfdcgw"; }; packageRequires = []; meta = { @@ -1800,7 +1865,12 @@ license = lib.licenses.free; }; }) {}; - names = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib }: + names = callPackage ({ cl-lib ? null + , elpaBuild + , emacs + , fetchurl + , lib + , nadvice }: elpaBuild { pname = "names"; ename = "names"; @@ -1809,7 +1879,7 @@ url = "https://elpa.gnu.org/packages/names-20151201.0.tar"; sha256 = "13smsf039x4yd7pzvllgn1vz8lhkwghnhip9y2bka38vk37w912d"; }; - packageRequires = [ cl-lib emacs ]; + packageRequires = [ cl-lib emacs nadvice ]; meta = { homepage = "https://elpa.gnu.org/packages/names.html"; license = lib.licenses.free; @@ -1823,10 +1893,10 @@ elpaBuild { pname = "nhexl-mode"; ename = "nhexl-mode"; - version = "0.9"; + version = "1.2"; src = fetchurl { - url = "https://elpa.gnu.org/packages/nhexl-mode-0.9.el"; - sha256 = "1xdr0z5nlfqsyrmj3cwgfp6qlirhr46ggawr7pr2ipnp64wgnmkc"; + url = "https://elpa.gnu.org/packages/nhexl-mode-1.2.el"; + sha256 = "031h22p564qdvr9khs05qcba06pmsk68cr7zyc7c04hfr3y3ziaf"; }; packageRequires = [ cl-lib emacs ]; meta = { @@ -1943,10 +2013,10 @@ elpaBuild { pname = "org"; ename = "org"; - version = "9.1.14"; + version = "9.2"; src = fetchurl { - url = "https://elpa.gnu.org/packages/org-9.1.14.tar"; - sha256 = "17vd9hig26rqv90l6y92hc2i0x29g44lsdsp0xd4m53s8r3zdikz"; + url = "https://elpa.gnu.org/packages/org-9.2.tar"; + sha256 = "14ydwh2r360fpi6v2g9rgf0zazy2ddq1pcdxvzn73h65glnnclz9"; }; packageRequires = []; meta = { @@ -1954,14 +2024,29 @@ license = lib.licenses.free; }; }) {}; + org-edna = callPackage ({ elpaBuild, emacs, fetchurl, lib, org, seq }: + elpaBuild { + pname = "org-edna"; + ename = "org-edna"; + version = "1.0.1"; + src = fetchurl { + url = "https://elpa.gnu.org/packages/org-edna-1.0.1.tar"; + sha256 = "0xzyzx3pq1q6d66qcqx38pgxzn160y9yrzpy0ka8ap5xsm7ngn7m"; + }; + packageRequires = [ emacs org seq ]; + meta = { + homepage = "https://elpa.gnu.org/packages/org-edna.html"; + license = lib.licenses.free; + }; + }) {}; orgalist = callPackage ({ elpaBuild, emacs, fetchurl, lib }: elpaBuild { pname = "orgalist"; ename = "orgalist"; - version = "1.8"; + version = "1.9"; src = fetchurl { - url = "https://elpa.gnu.org/packages/orgalist-1.8.el"; - sha256 = "1wqwnmn08i0qkxm8b2iclvf6cydcn68h1p3h7r1kig2bdn5b8948"; + url = "https://elpa.gnu.org/packages/orgalist-1.9.el"; + sha256 = "1rmmcyiiqkq54hn74nhzxzl4nvd902hv6gq341jwhrm7yiagffi6"; }; packageRequires = [ emacs ]; meta = { @@ -2078,10 +2163,10 @@ elpaBuild { pname = "posframe"; ename = "posframe"; - version = "0.3.0"; + version = "0.4.2"; src = fetchurl { - url = "https://elpa.gnu.org/packages/posframe-0.3.0.el"; - sha256 = "0q74lwklr29c50qgaqly48nj7f49kgxiv70lsvhdy8cg2v082v8k"; + url = "https://elpa.gnu.org/packages/posframe-0.4.2.el"; + sha256 = "1h8vvxvsg41vc1nnglqjs2q0k1yzfsn72skga9s76qa3zxmx6kds"; }; packageRequires = [ emacs ]; meta = { @@ -2397,10 +2482,10 @@ elpaBuild { pname = "sml-mode"; ename = "sml-mode"; - version = "6.8"; + version = "6.9"; src = fetchurl { - url = "https://elpa.gnu.org/packages/sml-mode-6.8.el"; - sha256 = "105fcrz5qp95f2n3fdm3awr6z58sbrjihjss6qnrg4lz2ggbc328"; + url = "https://elpa.gnu.org/packages/sml-mode-6.9.el"; + sha256 = "1bdg9ywpvj85hxqah9w1raxlcrhkyx67nw22jwd1bd5j0fhmgqij"; }; packageRequires = [ cl-lib emacs ]; meta = { @@ -2412,10 +2497,10 @@ elpaBuild { pname = "soap-client"; ename = "soap-client"; - version = "3.1.4"; + version = "3.1.5"; src = fetchurl { - url = "https://elpa.gnu.org/packages/soap-client-3.1.4.tar"; - sha256 = "0q59abh2dmp7z0bcn672n9c2cfhg1xvxv1h9m9pwn97jw0ylf4mc"; + url = "https://elpa.gnu.org/packages/soap-client-3.1.5.tar"; + sha256 = "0nnf075ywxmsfd6vmzk2yg3khx6sycl5l6qrgp5rqqmw0wzhxlh0"; }; packageRequires = [ cl-lib ]; meta = { @@ -2472,10 +2557,10 @@ elpaBuild { pname = "sql-indent"; ename = "sql-indent"; - version = "1.2"; + version = "1.3"; src = fetchurl { - url = "https://elpa.gnu.org/packages/sql-indent-1.2.tar"; - sha256 = "0rbkj46gkn1dh5avrhxzhkb01ajm9q3iqfp10lgp3f4w1m2bhab4"; + url = "https://elpa.gnu.org/packages/sql-indent-1.3.tar"; + sha256 = "0zira8my1q975bad2h76bz4yddjzf0dskvy6x865np86rmzd0c9w"; }; packageRequires = [ cl-lib ]; meta = { @@ -2483,6 +2568,21 @@ license = lib.licenses.free; }; }) {}; + ssh-deploy = callPackage ({ elpaBuild, emacs, fetchurl, lib }: + elpaBuild { + pname = "ssh-deploy"; + ename = "ssh-deploy"; + version = "3.0"; + src = fetchurl { + url = "https://elpa.gnu.org/packages/ssh-deploy-3.0.tar"; + sha256 = "0lv9qwm1dhcd2l2mnhjfpqsz6xx0wabjg5j5sm3425fjsaqws6m7"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://elpa.gnu.org/packages/ssh-deploy.html"; + license = lib.licenses.free; + }; + }) {}; stream = callPackage ({ elpaBuild, emacs, fetchurl, lib }: elpaBuild { pname = "stream"; @@ -2502,10 +2602,10 @@ elpaBuild { pname = "svg"; ename = "svg"; - version = "0.1"; + version = "0.2"; src = fetchurl { - url = "https://elpa.gnu.org/packages/svg-0.1.el"; - sha256 = "0v27casnjvjjaalmrbw494sk0zciws037cn6cmcc6rnhj30lzbv5"; + url = "https://elpa.gnu.org/packages/svg-0.2.el"; + sha256 = "14yfi27v3zdzh1chcjiq4l63iwh0vd99wv1z4w7agr33540jybc5"; }; packageRequires = [ emacs ]; meta = { @@ -2528,6 +2628,21 @@ license = lib.licenses.free; }; }) {}; + system-packages = callPackage ({ elpaBuild, emacs, fetchurl, lib }: + elpaBuild { + pname = "system-packages"; + ename = "system-packages"; + version = "1.0.10"; + src = fetchurl { + url = "https://elpa.gnu.org/packages/system-packages-1.0.10.tar"; + sha256 = "1vwf2j0fxrsqmrgc7x5nkkg0vlhwgxppc4w7kb5is6dgrssskpb5"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://elpa.gnu.org/packages/system-packages.html"; + license = lib.licenses.free; + }; + }) {}; tNFA = callPackage ({ elpaBuild, fetchurl, lib, queue }: elpaBuild { pname = "tNFA"; @@ -2717,6 +2832,21 @@ license = lib.licenses.free; }; }) {}; + vcl-mode = callPackage ({ elpaBuild, fetchurl, lib }: + elpaBuild { + pname = "vcl-mode"; + ename = "vcl-mode"; + version = "1.1"; + src = fetchurl { + url = "https://elpa.gnu.org/packages/vcl-mode-1.1.el"; + sha256 = "1r70pmvr95k5f2xphvhliqvyh7al0qabm7wvkamximcssvs38q1h"; + }; + packageRequires = []; + meta = { + homepage = "https://elpa.gnu.org/packages/vcl-mode.html"; + license = lib.licenses.free; + }; + }) {}; vdiff = callPackage ({ elpaBuild, emacs, fetchurl, hydra, lib }: elpaBuild { pname = "vdiff"; @@ -2747,6 +2877,21 @@ license = lib.licenses.free; }; }) {}; + visual-fill = callPackage ({ elpaBuild, fetchurl, lib }: + elpaBuild { + pname = "visual-fill"; + ename = "visual-fill"; + version = "0.1"; + src = fetchurl { + url = "https://elpa.gnu.org/packages/visual-fill-0.1.el"; + sha256 = "1y4xqcr1am74y9jy7kdkjigvx7h3208si5lm4p6a0kzxa3xizhvx"; + }; + packageRequires = []; + meta = { + homepage = "https://elpa.gnu.org/packages/visual-fill.html"; + license = lib.licenses.free; + }; + }) {}; vlf = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild { pname = "vlf"; @@ -2867,16 +3012,16 @@ license = lib.licenses.free; }; }) {}; - wisi = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib }: + wisi = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib, seq }: elpaBuild { pname = "wisi"; ename = "wisi"; - version = "1.1.6"; + version = "2.0.1"; src = fetchurl { - url = "https://elpa.gnu.org/packages/wisi-1.1.6.tar"; - sha256 = "0p7hm9l4gbp50rmpqna6jnc1pss2axdd6m6hk9ik4afbz0knzwnk"; + url = "https://elpa.gnu.org/packages/wisi-2.0.1.tar"; + sha256 = "1h0g6y33jrafcabgyi7j700hpv4p56v84c2mlqb334k1g9rq3709"; }; - packageRequires = [ cl-lib emacs ]; + packageRequires = [ cl-lib emacs seq ]; meta = { homepage = "https://elpa.gnu.org/packages/wisi.html"; license = lib.licenses.free; @@ -2901,10 +3046,10 @@ elpaBuild { pname = "xclip"; ename = "xclip"; - version = "1.4"; + version = "1.7"; src = fetchurl { - url = "https://elpa.gnu.org/packages/xclip-1.4.el"; - sha256 = "12rw790wzj10jcsqf292hc7qx18ybyay8jqji4shmrv16igrzl6p"; + url = "https://elpa.gnu.org/packages/xclip-1.7.el"; + sha256 = "0jpy3zzbyb16vqa9l6m45crzlypwvscvs76h8lci7kvp91kq954r"; }; packageRequires = []; meta = { @@ -2916,10 +3061,10 @@ elpaBuild { pname = "xelb"; ename = "xelb"; - version = "0.15"; + version = "0.16"; src = fetchurl { - url = "https://elpa.gnu.org/packages/xelb-0.15.tar"; - sha256 = "031rvgprsqhf344p9wsczr50vj2qcpwdmhxi80jdbrsm7wyxf3qz"; + url = "https://elpa.gnu.org/packages/xelb-0.16.tar"; + sha256 = "03wsr1jr7f7zfd80h864rd4makwh4widdnj1kjv2xyjwdgap9rl8"; }; packageRequires = [ cl-generic emacs ]; meta = { @@ -2975,6 +3120,21 @@ license = lib.licenses.free; }; }) {}; + zones = callPackage ({ elpaBuild, fetchurl, lib }: + elpaBuild { + pname = "zones"; + ename = "zones"; + version = "2018.11.21"; + src = fetchurl { + url = "https://elpa.gnu.org/packages/zones-2018.11.21.el"; + sha256 = "0s68mnynjd08gyga7xdnb0zy3irsxl1jryidpcrkzg821vfrk11i"; + }; + packageRequires = []; + meta = { + homepage = "https://elpa.gnu.org/packages/zones.html"; + license = lib.licenses.free; + }; + }) {}; ztree = callPackage ({ cl-lib ? null, elpaBuild, fetchurl, lib }: elpaBuild { pname = "ztree"; diff --git a/pkgs/applications/editors/emacs-modes/emacs-libvterm/default.nix b/pkgs/applications/editors/emacs-modes/emacs-libvterm/default.nix index f37d2289342..8d39c185aca 100644 --- a/pkgs/applications/editors/emacs-modes/emacs-libvterm/default.nix +++ b/pkgs/applications/editors/emacs-modes/emacs-libvterm/default.nix @@ -19,13 +19,13 @@ let in stdenv.mkDerivation rec { name = "emacs-libvterm-${version}"; - version = "unstable-2017-11-24"; + version = "unstable-2018-11-16"; src = fetchFromGitHub { owner = "akermu"; repo = "emacs-libvterm"; - rev = "829ae86f60c3a54048804997edffa161c77a2f4b"; - sha256 = "1xb24kpvypvskh4vr3b45nl2m2vsczcr9rnsr2sjzf32mnapyjnp"; + rev = "8be9316156be75a685c0636258b2fec2daaf5ab5"; + sha256 = "059js4aa7xgqcpaicgy4gz683hppa1iyp1r98mnms5hd31a304k8"; }; nativeBuildInputs = [ cmake ]; @@ -36,6 +36,6 @@ in stdenv.mkDerivation rec { installPhase = '' install -d $out/share/emacs/site-lisp install ../*.el $out/share/emacs/site-lisp - install ../*.so $out/share/emacs/site-lisp + install ./*.so $out/share/emacs/site-lisp ''; } diff --git a/pkgs/applications/editors/emacs-modes/emms/default.nix b/pkgs/applications/editors/emacs-modes/emms/default.nix index c873a7c0ca8..f966989b5a3 100644 --- a/pkgs/applications/editors/emacs-modes/emms/default.nix +++ b/pkgs/applications/editors/emacs-modes/emms/default.nix @@ -8,7 +8,7 @@ stdenv.mkDerivation rec { src = fetchurl { # These guys don't use ftp.gnu.org... - url = "http://www.gnu.org/software/emms/download/${name}.tar.gz"; + url = "https://www.gnu.org/software/emms/download/${name}.tar.gz"; sha256 = "151mfx97x15lfpd1qc2sqbvhwhvg46axgh15qyqmdy42vh906xav"; }; @@ -62,7 +62,7 @@ stdenv.mkDerivation rec { support, with no effort from your side. ''; - homepage = http://www.gnu.org/software/emms/; + homepage = https://www.gnu.org/software/emms/; license = stdenv.lib.licenses.gpl3Plus; diff --git a/pkgs/applications/editors/emacs-modes/font-lock-plus/default.nix b/pkgs/applications/editors/emacs-modes/font-lock-plus/default.nix index b4ee54f3bd3..fdb28f44719 100644 --- a/pkgs/applications/editors/emacs-modes/font-lock-plus/default.nix +++ b/pkgs/applications/editors/emacs-modes/font-lock-plus/default.nix @@ -1,7 +1,7 @@ -{ fetchurl, lib, melpaBuild }: +{ fetchurl, lib, melpaBuild, writeText }: melpaBuild { - pname = "font-lock-plus"; + pname = "font-lock+"; version = "20180101.25"; src = fetchurl { @@ -10,11 +10,7 @@ melpaBuild { name = "font-lock+.el"; }; - recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/a5d15f875b0080b12ce45cf696c581f6bbf061ba/recipes/font-lock+"; - sha256 = "1wn99cb53ykds87lg9mrlfpalrmjj177nwskrnp9wglyqs65lk4g"; - name = "font-lock-plus"; - }; + recipe = writeText "recipe" "(font-lock+ :fetcher github :repo \"\")"; meta = { homepage = "https://melpa.org/#/font-lock+"; diff --git a/pkgs/applications/editors/emacs-modes/let-alist/default.nix b/pkgs/applications/editors/emacs-modes/let-alist/default.nix index 05ddfbf6c16..f6fee846f92 100644 --- a/pkgs/applications/editors/emacs-modes/let-alist/default.nix +++ b/pkgs/applications/editors/emacs-modes/let-alist/default.nix @@ -4,7 +4,7 @@ stdenv.mkDerivation rec { name = "let-alist-1.0.3"; src = fetchurl { - url = "http://elpa.gnu.org/packages/let-alist-1.0.3.el"; + url = "https://elpa.gnu.org/packages/let-alist-1.0.3.el"; sha256 = "12n1cmjc7hzyy0jmsdxqz1hqzg4ri4nvvi0p9mw1d6v44xzfm0mx"; }; @@ -19,7 +19,7 @@ stdenv.mkDerivation rec { ''; meta = { - homepage = http://elpa.gnu.org/packages/let-alist.html; + homepage = https://elpa.gnu.org/packages/let-alist.html; description = "Easily let-bind values of an assoc-list by their names"; license = stdenv.lib.licenses.gpl3Plus; }; diff --git a/pkgs/applications/editors/emacs-modes/melpa-generated.nix b/pkgs/applications/editors/emacs-modes/melpa-generated.nix index 829dff1749d..bfc6c26ea09 100644 --- a/pkgs/applications/editors/emacs-modes/melpa-generated.nix +++ b/pkgs/applications/editors/emacs-modes/melpa-generated.nix @@ -216,12 +216,12 @@ melpaBuild { pname = "abl-mode"; ename = "abl-mode"; - version = "20170604.1309"; + version = "20181031.130"; src = fetchFromGitHub { owner = "afroisalreadyinu"; repo = "abl-mode"; - rev = "9aff997fe7b4caded60150a832e3704ac55e69e5"; - sha256 = "0yfk7s7n10lkf11dy1l0xi0bbsjbam5lqq8kj9hxpz2zkddbaljl"; + rev = "b4c65b5a60a83200fe06f6caa77073316e5a4228"; + sha256 = "1farkn2zap0aww3nfrby4hkp7a2442sqn5g77w1krsxl9wf71fc3"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/70a52edb381daa9c4dcc9f7e511175b38fc141be/recipes/abl-mode"; @@ -786,12 +786,12 @@ melpaBuild { pname = "ac-js2"; ename = "ac-js2"; - version = "20140906.442"; + version = "20190101.133"; src = fetchFromGitHub { owner = "ScottyB"; repo = "ac-js2"; - rev = "721c482e1d4a08f4a29a74437257d573e8f69969"; - sha256 = "0yn9333rjs2pzb1wk1japclsqagdcl28j0yjl3q5b70g5gi5vx7k"; + rev = "2b56d09a16c1a0ce514cc1b85d64cb1be4502723"; + sha256 = "11q4aaiqr4xnw5j0yqj35gc4a290az75qdyhadj09xr2j2jay35x"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/255588a330e4c9a03517885092d5678375aa7850/recipes/ac-js2"; @@ -927,12 +927,12 @@ melpaBuild { pname = "ac-php-core"; ename = "ac-php-core"; - version = "20180824.106"; + version = "20181225.2341"; src = fetchFromGitHub { owner = "xcwen"; repo = "ac-php"; - rev = "dcac8321b85b2ef6d43244e2b0932cb3ec7cfefb"; - sha256 = "1a4hc06f8xqkc07a2b72baz6bb7znkf15yvdj5sccwkrnhqw8cqh"; + rev = "e270e65338d5e57d0df4e167d39cd7c11537f385"; + sha256 = "16ahvzqlbla7qid7xq0s6g1s8pfxxixvjq7vh0v2w5c1rvqc2vb7"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/ac283f1b65c3ba6278e9d3236e5a19734e42b123/recipes/ac-php-core"; @@ -982,12 +982,12 @@ melpaBuild { pname = "ac-rtags"; ename = "ac-rtags"; - version = "20170522.2154"; + version = "20181117.1149"; src = fetchFromGitHub { owner = "Andersbakken"; repo = "rtags"; - rev = "7e6b6f21935eedbe4678ba91c5531ac162b51a5a"; - sha256 = "12629d1s8rplhjh17n3bmgnkpscq4gljgyl84j8qyhh40dwq1qk0"; + rev = "5e51faa79016b3302d8037e13329a4320de524f5"; + sha256 = "0qw6l96k2hxv3jvjw3nvas7m73jqj7mcchawzss8by92l61n0cx7"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/3dea16daf0d72188c8b4043534f0833fe9b04e07/recipes/ac-rtags"; @@ -1280,12 +1280,12 @@ melpaBuild { pname = "ace-link"; ename = "ace-link"; - version = "20180308.100"; + version = "20181210.654"; src = fetchFromGitHub { owner = "abo-abo"; repo = "ace-link"; - rev = "fae5d508ff519ba1fab21c51f46c0906fd82229f"; - sha256 = "118dp8w0z475j67gvl1dj137glbli2ykbm934vdvlz6q0k94vds7"; + rev = "19dd9c3363c6ff03b7f710a85b8fbbd646cc06ec"; + sha256 = "1yf2kw6q209ckfb5ckfy87pbsx1wa74ypig7dml15dccnivrjv5c"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/68032f40c0ce4170a22db535be4bfa7099f61f85/recipes/ace-link"; @@ -1362,12 +1362,12 @@ melpaBuild { pname = "ace-popup-menu"; ename = "ace-popup-menu"; - version = "20171231.2215"; + version = "20181231.2302"; src = fetchFromGitHub { owner = "mrkkrp"; repo = "ace-popup-menu"; - rev = "7b8ad628a058d32c420f7615927a34a5d51a7ad3"; - sha256 = "183gc5lidxahfzik9ima2vph2sdi2rd9805kfnghsmwhck275i2r"; + rev = "580f2eab0e8621ae08b85b70cd573a764a5e0f7d"; + sha256 = "0f4rzbx1apl6pzkbg43sjirbr4nm97bgfbvk15w68jj91q804b9h"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/53742e2242101c4b3b3901f5c74e24facf62c7d6/recipes/ace-popup-menu"; @@ -1388,12 +1388,12 @@ melpaBuild { pname = "ace-window"; ename = "ace-window"; - version = "20180814.816"; + version = "20181220.646"; src = fetchFromGitHub { owner = "abo-abo"; repo = "ace-window"; - rev = "d93e16b52ee7c1b6c9df599060e7077b4e46cbf8"; - sha256 = "19wi7sk5kbfk6zxbr08wprkihq6wygvyq281xl5vwxxbl8n83dvs"; + rev = "2e3b9562b52e3ce2def3adf32f5ec8fe77f573d6"; + sha256 = "148wsl1qs42lp748g9rvs6wxm9hrs0dy41rramqn56qkpx82fyhr"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/42fe131d3c2ea498e4df30ba539a6b91c00f5b07/recipes/ace-window"; @@ -1482,6 +1482,34 @@ license = lib.licenses.free; }; }) {}; + activity-watch-mode = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild + , projectile + , request }: + melpaBuild { + pname = "activity-watch-mode"; + ename = "activity-watch-mode"; + version = "20181228.34"; + src = fetchFromGitHub { + owner = "pauldub"; + repo = "activity-watch-mode"; + rev = "27a0841b32dfd2b691a1dcf3a4a50d74660676b1"; + sha256 = "1hfmll3g33529pshzvh2gxqr0h53p1v68wq0zlq2h2wfml89bzr9"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/9780c413da8001651191fb8f9708fe9691d714cf/recipes/activity-watch-mode"; + sha256 = "0k0ai6658gb43c4ylrq66zqzrfh6ksvkf0kxj2qx8a5a1aw9bd4d"; + name = "recipe"; + }; + packageRequires = [ emacs projectile request ]; + meta = { + homepage = "https://melpa.org/#/activity-watch-mode"; + license = lib.licenses.free; + }; + }) {}; adafruit-wisdom = callPackage ({ emacs , fetchFromGitHub , fetchurl @@ -1724,12 +1752,12 @@ melpaBuild { pname = "aggressive-indent"; ename = "aggressive-indent"; - version = "20180626.1721"; + version = "20181017.1936"; src = fetchFromGitHub { owner = "Malabarba"; repo = "aggressive-indent-mode"; - rev = "8e70039c7190639c43794cb75eae118c2faaa0d1"; - sha256 = "1h46krxk7wdhfvfmhdzp6c4dh2x53np41a17372k6b74hd15mgl0"; + rev = "cc8da01e32684e1b75d2901400e6723b2c2d42f8"; + sha256 = "1ypsqlyka6cc8rvdmhnf62ix26hr20vlsc477g1wwd64ygvys79s"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/1e6aed365c42987d64d0cd9a8a6178339b1b39e8/recipes/aggressive-indent"; @@ -1742,6 +1770,32 @@ license = lib.licenses.free; }; }) {}; + agtags = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "agtags"; + ename = "agtags"; + version = "20181229.1634"; + src = fetchFromGitHub { + owner = "vietor"; + repo = "agtags"; + rev = "7a59137db7780678cf86d0c1193da5fde38bc759"; + sha256 = "1mr1k7bx5zq54j3vhjhny5wzh3z8dh94rcv0bqlmzc8ibidj557p"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/eb6677262303a0cad2d844db77693c00d9bc575a/recipes/agtags"; + sha256 = "07kpdbchplkbspid8gnjsprbdwf244nr2q596pw6jl17bysbbbk7"; + name = "recipe"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://melpa.org/#/agtags"; + license = lib.licenses.free; + }; + }) {}; ahg = callPackage ({ fetchhg , fetchurl , lib @@ -1749,11 +1803,11 @@ melpaBuild { pname = "ahg"; ename = "ahg"; - version = "20180808.2353"; + version = "20181120.501"; src = fetchhg { url = "https://bitbucket.com/agriggio/ahg"; - rev = "763e15a00b37"; - sha256 = "1c76dzdcg2xr5fbqv33wa5vx84k0944qbqnxg3a4hax7k45c6ba6"; + rev = "7213c02fdbd6"; + sha256 = "0dxgb033rzayjah2yyxprjsk7ir25a5pqjp3lmx8dj8g9bcxddx5"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/5b7972602399f9df9139cff177e38653bb0f43ed/recipes/ahg"; @@ -1774,12 +1828,12 @@ melpaBuild { pname = "ahk-mode"; ename = "ahk-mode"; - version = "20160320.1521"; + version = "20181113.438"; src = fetchFromGitHub { owner = "ralesi"; repo = "ahk-mode"; - rev = "9cfc4840507f6cc8016fdede84ad90df53285359"; - sha256 = "07qpwa990bgs9028rqqk344c3z4hnr1jkfzcx9fi4z5k756zmw3b"; + rev = "fde5be2cd4a0a48dc876031fb25be82892f700e0"; + sha256 = "1fr7wc9avk5z07s5jf2bry1wx5kmcr85hmn2m54wj7ryv5gm30d9"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/e608f40d00a3b2a80a6997da00e7d04f76d8ef0d/recipes/ahk-mode"; @@ -1882,12 +1936,12 @@ melpaBuild { pname = "alan-mode"; ename = "alan-mode"; - version = "20180902.731"; + version = "20181213.652"; src = fetchFromGitHub { owner = "M-industries"; repo = "AlanForEmacs"; - rev = "998bf0a8a494783c65fd9fa2c1fd6f081002dc59"; - sha256 = "1wcp8f9lqyys2ybmngrgca8mgsj65ncx1f1zixkn3arfd5lj69d6"; + rev = "d2cf2d80df55b0689ac13f1ad2c707987741ae37"; + sha256 = "07xl4mvjyjcvlyqcziqzrxn8dm8gs01a44qn0x3fmmk8icm8im4a"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/6e52314db81dad3517ab400099b032260c3e3e6f/recipes/alan-mode"; @@ -1900,6 +1954,33 @@ license = lib.licenses.free; }; }) {}; + alarm-clock = callPackage ({ emacs + , f + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "alarm-clock"; + ename = "alarm-clock"; + version = "20181121.348"; + src = fetchFromGitHub { + owner = "wlemuel"; + repo = "alarm-clock"; + rev = "925c39b2fc1bd782c43d387831a42c37b4173c9e"; + sha256 = "0hj92gwnlafj2bv8wlz56sp7hr4wiwfl1dh509wmssl4j3h3p5wp"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/440fe05fa0d10d54e9c52e2e54e71a1321325376/recipes/alarm-clock"; + sha256 = "1cgrj6dzpx0q15qzr9d342wg8w92c2r4zmk7rif2h87qxr66fbrg"; + name = "recipe"; + }; + packageRequires = [ emacs f ]; + meta = { + homepage = "https://melpa.org/#/alarm-clock"; + license = lib.licenses.free; + }; + }) {}; alchemist = callPackage ({ company , dash , elixir-mode @@ -1965,12 +2046,12 @@ melpaBuild { pname = "alect-themes"; ename = "alect-themes"; - version = "20180504.1020"; + version = "20181220.1135"; src = fetchFromGitHub { owner = "alezost"; repo = "alect-themes"; - rev = "4d90833a7381123a979f73fa97a013071ca7ff00"; - sha256 = "19cb6zgg495d62wb6jn6cql5fhv8qd7rxpgxx90klp8yfizr0gmj"; + rev = "0c4c26331c7c8349f9751d23d62df8758a693f94"; + sha256 = "0ravnjn0jijai3wdl2fx2p9i48hk5i3ddbhrmv1fi0bgazxr590g"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/84c25a290ae4bcc4674434c83c66ae128e4c4282/recipes/alect-themes"; @@ -1983,7 +2064,8 @@ license = lib.licenses.free; }; }) {}; - alert = callPackage ({ fetchFromGitHub + alert = callPackage ({ cl-lib ? null + , fetchFromGitHub , fetchurl , gntp , lib @@ -1992,24 +2074,50 @@ melpaBuild { pname = "alert"; ename = "alert"; - version = "20180826.2122"; + version = "20181022.1042"; src = fetchFromGitHub { owner = "jwiegley"; repo = "alert"; - rev = "fe494d1e80e308f7db7273bf02281757fdf86e6f"; - sha256 = "1v5pn7qnrqqckfhmk6zy46kqarvb9svkmgc3asi4xz8n11271cxi"; + rev = "9f329be87820474925f29b52a1131084c8ea95b9"; + sha256 = "0lc0p5cl4hfrzw1z2ghb11k1lvljn5m08jw5fmgwgxv667kwh49r"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/113953825ac4ff98d90a5375eb48d8b7bfa224e7/recipes/alert"; sha256 = "0x3cvczq09jvshz435jw2fjm69457x2wxdvvbbjq46nfnybhi118"; name = "recipe"; }; - packageRequires = [ gntp log4e ]; + packageRequires = [ cl-lib gntp log4e ]; meta = { homepage = "https://melpa.org/#/alert"; license = lib.licenses.free; }; }) {}; + alert-termux = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "alert-termux"; + ename = "alert-termux"; + version = "20181119.151"; + src = fetchFromGitHub { + owner = "gergelypolonkai"; + repo = "alert-termux"; + rev = "8215cf1d86392738c35a90bbc0055359265dfc4d"; + sha256 = "05znscs3dljkzsk6xkbw3mx3ns8j0y31l9m01mswqmq98msa409f"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/d43e98a7142cf0edc89fa9e2f2817787c073667f/recipes/alert-termux"; + sha256 = "19dfxbpp1kn1ara0fj9xr0ishpk1yiykg2al8g43rcy615vkpk8j"; + name = "recipe"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://melpa.org/#/alert-termux"; + license = lib.licenses.free; + }; + }) {}; align-cljlet = callPackage ({ clojure-mode , fetchFromGitHub , fetchurl @@ -2298,12 +2406,12 @@ melpaBuild { pname = "amx"; ename = "amx"; - version = "20180627.1555"; + version = "20181011.1551"; src = fetchFromGitHub { owner = "DarwinAwardWinner"; repo = "amx"; - rev = "09e919512692dc31df079ad2cd1a3ca3ac4f1949"; - sha256 = "180841qv24z6kn3qry5216ija1h50ymm4kcmcxg4pc47bhzcjn1h"; + rev = "4b08edb34c4d9c807ef1a820a629cda15e2347a0"; + sha256 = "1vs9hrldg3amxv61m2gpph8fdjidsa7x17djxx23r7px5mhkwqgn"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/c55bfad05343b2b0f3150fd2b4adb07a1768c1c0/recipes/amx"; @@ -2328,12 +2436,12 @@ melpaBuild { pname = "anaconda-mode"; ename = "anaconda-mode"; - version = "20180807.2325"; + version = "20181209.2016"; src = fetchFromGitHub { owner = "proofit404"; repo = "anaconda-mode"; - rev = "706ad11477b48a2b891235869d32e4aa5536774f"; - sha256 = "1pcsp9wva3jxxfd6aj25h1fn67xsm951m82mrd51sasdyayhdc0q"; + rev = "0f8e86f723c2ef172947a94735c970065788f39b"; + sha256 = "0cf0dqsk9mf9gn0a9f38c75x13jr5mkdqyqccv2qs2z54q2yfydl"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/e03b698fd3fe5b80bdd24ce01f7fba28e9da0da8/recipes/anaconda-mode"; @@ -2378,12 +2486,12 @@ melpaBuild { pname = "android-mode"; ename = "android-mode"; - version = "20170323.115"; + version = "20181016.9"; src = fetchFromGitHub { owner = "remvee"; repo = "android-mode"; - rev = "f274da87429617b0b9c5889d46b36de64d982da4"; - sha256 = "17m4hp2qb54widwadv23amc1lasnbwzh2ipc6180fnajg8zcbvyw"; + rev = "f8cabafaa266b56fcf4b3c6942b3ae062735251a"; + sha256 = "0npx54w565mkxkgkpv02dgmfc44i1256p0w331pf3nfxq145xh27"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/77633aa340803a433570327943fbe31b396f4355/recipes/android-mode"; @@ -2483,12 +2591,12 @@ melpaBuild { pname = "anki-editor"; ename = "anki-editor"; - version = "20180905.621"; + version = "20181230.2353"; src = fetchFromGitHub { owner = "louietan"; repo = "anki-editor"; - rev = "44624cd391b64148c0290c91b3e4f35354bb9819"; - sha256 = "1d35s70p9nh8dwa2zxp0ycsw8bf573ixj7740jyh40ymngy61bsc"; + rev = "115ce2e2e62deb8dbca91fd84c7999ba80916c89"; + sha256 = "0njwsq03h36hqw55xk6n8225k52nlw1lq0mc9pzww2bf7dccjl9r"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/8155d649e4b129d0c72da6bb2b1aac66c8483491/recipes/anki-editor"; @@ -2501,6 +2609,36 @@ license = lib.licenses.free; }; }) {}; + anki-mode = callPackage ({ dash + , emacs + , fetchFromGitHub + , fetchurl + , lib + , markdown-mode + , melpaBuild + , request + , s }: + melpaBuild { + pname = "anki-mode"; + ename = "anki-mode"; + version = "20181106.1037"; + src = fetchFromGitHub { + owner = "davidshepherd7"; + repo = "anki-mode"; + rev = "095fbe74604892a131a4ffc1f6bb9404717028be"; + sha256 = "08vn9xkp6894s8580gj36ink3bqgcw932rpy6yn6n5qcfykmhpnq"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/fc02d06e7c7e9230e4b082923b889e1e83676263/recipes/anki-mode"; + sha256 = "1d429ws6kmswcyk0dnb303z01kq475n60a520hj258x23vp8802q"; + name = "recipe"; + }; + packageRequires = [ dash emacs markdown-mode request s ]; + meta = { + homepage = "https://melpa.org/#/anki-mode"; + license = lib.licenses.free; + }; + }) {}; annotate = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -2665,12 +2803,12 @@ melpaBuild { pname = "ansible-vault"; ename = "ansible-vault"; - version = "20170111.1318"; + version = "20181116.906"; src = fetchFromGitHub { owner = "zellio"; repo = "ansible-vault-mode"; - rev = "57cf7e6da30250587c28ebf592d7bca9a3bae1df"; - sha256 = "1m9r3vicmljypq6mhgr86lzgi26dnnlp7g0jbl9bjdk48xfg79wb"; + rev = "d16389f44a4e76a12c789fe65df20692c7113685"; + sha256 = "1gppgqsnn5qfhjzfkdy5br5p0k3f7v5mpigcmzzqmjniz49l0015"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/2bff0da29a9b883e53a3d211c5577a3e0bc263a0/recipes/ansible-vault"; @@ -3043,12 +3181,12 @@ melpaBuild { pname = "apropospriate-theme"; ename = "apropospriate-theme"; - version = "20180906.1106"; + version = "20181220.1306"; src = fetchFromGitHub { owner = "waymondo"; repo = "apropospriate-theme"; - rev = "409af2b22ec03cbb81318df7982afa463deb73d2"; - sha256 = "0m58m0dhlbxlwxm81d22ncax3ndnjjmfkzxwrzqaggch0fx0xggj"; + rev = "140284fdf2f235d0b899857b3ef5b5be49c19f7c"; + sha256 = "092632myvpsndbr2psvm3slsb0farpzn4icdwnl3p2xfl3fdpmyl"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/1da33013f15825ab656260ce7453b8127e0286f4/recipes/apropospriate-theme"; @@ -3384,12 +3522,12 @@ melpaBuild { pname = "assess"; ename = "assess"; - version = "20170504.657"; + version = "20190102.211"; src = fetchFromGitHub { owner = "phillord"; repo = "assess"; - rev = "e5b0415126c6bd24bd220759ff04220d963a0195"; - sha256 = "04242jhrajd9qi9dzngv33730sqhymgr0f18hf92fgb2k5649lqk"; + rev = "7a3189a5870fb20d179ff3ea761707a046814966"; + sha256 = "0qif6q4j0i5p2izj9p7sv1j2s6a95zklswfx8x2shv22dkphznkl"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/6f917a34506193f2674b195569dfd3c13ba62c1d/recipes/assess"; @@ -3409,12 +3547,12 @@ melpaBuild { pname = "async"; ename = "async"; - version = "20180527.1030"; + version = "20181223.2054"; src = fetchFromGitHub { owner = "jwiegley"; repo = "emacs-async"; - rev = "6fa6a866b4b31908166e010ac60e77927bdbfc5a"; - sha256 = "0m4nwc032xhwx3k1948zs3nz80rxnr1qsfdqmbxwm5vyx9mmqm9n"; + rev = "81dc034572e963550c5403a2b3c28047e46b4029"; + sha256 = "04lxfpdfvbh67cv9i3j7jya56lv3q97qp5b75zfy1k4dzqhjzfpz"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/855ea20024b606314f8590129259747cac0bcc97/recipes/async"; @@ -3462,12 +3600,12 @@ melpaBuild { pname = "at"; ename = "@"; - version = "20180726.1231"; + version = "20181225.638"; src = fetchFromGitHub { owner = "skeeto"; repo = "at-el"; - rev = "3671318a811fb51c03a792342af7b42004922809"; - sha256 = "14cpmwfw2b3yh3s0lj21myrdic9gdbs9pcshv9wj96ksijknhmiy"; + rev = "0a6189f8be42dbbc5d9358cbd447d471236135a2"; + sha256 = "11s46n3j6ij0ynxwl35wxbzg97pkmnhxh43l5vvaz9kizf6mhpbj"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/855ea20024b606314f8590129259747cac0bcc97/recipes/@"; @@ -3487,12 +3625,12 @@ melpaBuild { pname = "atom-dark-theme"; ename = "atom-dark-theme"; - version = "20170710.1612"; + version = "20181022.902"; src = fetchFromGitHub { owner = "whitlockjc"; repo = "atom-dark-theme-emacs"; - rev = "7fb37fd953e417acbcf7dd3f36e3167bed9bc887"; - sha256 = "040xp0nqa9akjv30kgnw6l1248g2cl5yzihhfwbr8cgywqfir1lw"; + rev = "5c8610d0b45a536b8f7f9777297c86362685a357"; + sha256 = "15mjn5z7f7x8k4lbab5xv2r88s9ch9b58znv6vwpqakp63rx8hsx"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/d1f565871559d6ea4ca4bb2fbaebce58f2f383eb/recipes/atom-dark-theme"; @@ -3512,12 +3650,12 @@ melpaBuild { pname = "atom-one-dark-theme"; ename = "atom-one-dark-theme"; - version = "20180607.1638"; + version = "20181010.648"; src = fetchFromGitHub { owner = "jonathanchu"; repo = "atom-one-dark-theme"; - rev = "d56b0db8d03fae2b47a6dbaadb5805105e394070"; - sha256 = "0bv80pg1bnpsv6j56ydlxm9h1cnicimcbwm1nw642fnf0zxw7p8g"; + rev = "8cba629dce7a2c53c690337915fdcaa80b4af769"; + sha256 = "1ajfw5mr6mm5qmxlmw09k8i4cpx6jchgxrpmrgnk17h04r5fznmk"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/3ba1c4625c9603372746a6c2edb69d65f0ef79f5/recipes/atom-one-dark-theme"; @@ -3570,12 +3708,12 @@ melpaBuild { pname = "attrap"; ename = "attrap"; - version = "20180901.207"; + version = "20181216.1024"; src = fetchFromGitHub { owner = "jyp"; repo = "attrap"; - rev = "a971acb251e343d4c6b0253f69dcce0c2cee0fac"; - sha256 = "0p93y151730ga7v9xa5gkp306s32qw53086i829fcbxf83c2wslv"; + rev = "62494c4bf0be556e827b23b14b48f09c8990ae3a"; + sha256 = "095qsj0h8cig9mbhlfjbh4i55lngs02vkgnv1jbyiphhz53f2k11"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/b7420eca80a8c1776d68b1f121511cc265cc70dc/recipes/attrap"; @@ -3727,12 +3865,12 @@ melpaBuild { pname = "auth-source-pass"; ename = "auth-source-pass"; - version = "20180529.657"; + version = "20181106.548"; src = fetchFromGitHub { owner = "DamienCassou"; repo = "auth-password-store"; - rev = "303b96b2a4ced825390ac0a4f48c4151fe7a8150"; - sha256 = "0jhr6b2xrmki0l0hlmw4nxslky9vnym4lnq2y7pf81gj1zfk1h3f"; + rev = "63c0631896b2f2ed6b359e026c6a7949932aa0bf"; + sha256 = "1hf9106fdkmr9kzpykbx8s0krnpgjv2w42c4ly1yxw9d5dg0kkb6"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/5e268441634a6e58a00e577d6e2292fa226c11b8/recipes/auth-source-pass"; @@ -3806,12 +3944,12 @@ melpaBuild { pname = "auto-compile"; ename = "auto-compile"; - version = "20180321.807"; + version = "20181230.1416"; src = fetchFromGitHub { owner = "emacscollective"; repo = "auto-compile"; - rev = "6ce4255ab9a0b010ef8414c5bd9a6d6d9eea012f"; - sha256 = "013vw4sgw6hpz7kskilndv7i7ik40asrkgicghjbygwk0lj5ran3"; + rev = "e6bbb1371324c8884af3b201e9adbc9296eb2ff4"; + sha256 = "1jyn7yvbvk7cydy3pzwqlb0yxf5cxdiipa1gnigdk9wdbj68wjjk"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/57a2fb9524df3fdfdc54c403112e12bd70888b23/recipes/auto-compile"; @@ -4372,6 +4510,32 @@ license = lib.licenses.free; }; }) {}; + auto-rename-tag = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "auto-rename-tag"; + ename = "auto-rename-tag"; + version = "20181215.2324"; + src = fetchFromGitHub { + owner = "jcs090218"; + repo = "auto-rename-tag"; + rev = "00080e323addaaca560842feb87ca688e7a3d9b6"; + sha256 = "1pksqhfw3np7lkw0xjhpsq3zv3zbxmq3561g77n2c503qyzjpmx8"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/edf44f990306d9edba7054cb8f530208e53d69bc/recipes/auto-rename-tag"; + sha256 = "058fn84sw15kdyxgnjzdi4lq6s9xg63cw8vzparh6km3xf2pqw0x"; + name = "recipe"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://melpa.org/#/auto-rename-tag"; + license = lib.licenses.free; + }; + }) {}; auto-save-buffers-enhanced = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -4489,12 +4653,12 @@ melpaBuild { pname = "auto-virtualenvwrapper"; ename = "auto-virtualenvwrapper"; - version = "20180408.310"; + version = "20181006.237"; src = fetchFromGitHub { owner = "robert-zaremba"; repo = "auto-virtualenvwrapper.el"; - rev = "e2628408d4e67e1b1714cf7682cff9405e735c81"; - sha256 = "1cj4a6yay02gvi04lyhnfb7gws8jrappprnv36mcqlq053202wij"; + rev = "72cc9168db475e8328019f9592493560dab832a5"; + sha256 = "1cvc2k5x0ircnpppwwmm813h7c59pyswz4dfgwqqrk325zcnp80f"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/02a209ae8f9fc68feb3bb64d32d129fedef2b80b/recipes/auto-virtualenvwrapper"; @@ -4515,12 +4679,12 @@ melpaBuild { pname = "auto-yasnippet"; ename = "auto-yasnippet"; - version = "20180503.1208"; + version = "20181124.838"; src = fetchFromGitHub { owner = "abo-abo"; repo = "auto-yasnippet"; - rev = "438c160b94975e9332b4ae3845e986ae6166dd47"; - sha256 = "07i46xfphvsspd0ls5jjlch650h24h79yfvhbmizrpyrh3616smd"; + rev = "c2485ef58a77f0f90755275d2bc2054b6194337f"; + sha256 = "0dc6nrxayifv1h6ag1bwzaz7y47mi5zyf4qsy9yxnzig4a9jkjlr"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/d33c0aee6a5d27217bbae28fc8f448c3badc8a4b/recipes/auto-yasnippet"; @@ -4722,16 +4886,16 @@ melpaBuild { pname = "autothemer"; ename = "autothemer"; - version = "20170112.1324"; + version = "20180920.223"; src = fetchFromGitHub { - owner = "sebastiansturm"; + owner = "jasonm23"; repo = "autothemer"; - rev = "8c467f57571c154129d660dfccebd151c998f2d9"; - sha256 = "0cd2pqh6k32sjidkcd8682y4l6mx52xw4a05f38kk8nsrk28m74k"; + rev = "69488c71dfc182cf2e7be2d745037f230ade678e"; + sha256 = "0l3xsnp5j46jcjc1nkfbfg0pyzdi94rn0h5idfpqikj6f3ralh10"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/3d7d7beed6ba10d7aa6a36328a696ba2d0d21dc2/recipes/autothemer"; - sha256 = "1lcyqfzx7qpkr3ajk0zi0mn32yvcwn06f61vhghn9c66xambsr7f"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/9a15a17a5aa78aed72958b2a1bde53f0c0ab5be7/recipes/autothemer"; + sha256 = "0wahmbihyr3dx4lgiwi7041gvmmqlzlv7ss25fw90srs9n2h05gj"; name = "recipe"; }; packageRequires = [ cl-lib dash emacs ]; @@ -4797,12 +4961,12 @@ melpaBuild { pname = "avk-emacs-themes"; ename = "avk-emacs-themes"; - version = "20180822.839"; + version = "20181127.2345"; src = fetchFromGitHub { owner = "avkoval"; repo = "avk-emacs-themes"; - rev = "80a8e4f88ccd4a9ff29dc50afb2da6aa290611d8"; - sha256 = "1r10ysknnbicn9hxp94n7nfgciabrfsljmbnh9pa2szb9knbw80k"; + rev = "cadbfb4c9cd6812d63b69076a9d90514bfd2db66"; + sha256 = "07isy168fnvyy25z1wwyr6740bmwmff6c3yfcdy7dnypcj9whllr"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/ef362a76a3881c7596dcc2639df588227b3713c0/recipes/avk-emacs-themes"; @@ -4824,12 +4988,12 @@ melpaBuild { pname = "avy"; ename = "avy"; - version = "20180913.1119"; + version = "20181126.905"; src = fetchFromGitHub { owner = "abo-abo"; repo = "avy"; - rev = "cd8fb10759a5be2ded3a344d8c0e472eb9fef5e3"; - sha256 = "1cmrjwf2zyx5l1ikdh9d3wlsg1hn8kcazrd5rs72krc94vxj50nz"; + rev = "24b51374bef91cb24ec5993217187bf616fcb663"; + sha256 = "1164vklckc3rq22yp7z82m4z9ad2jlqxdd1f4rim0gmdj4j6wzym"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/77fac7a702d4086fb860514e377037acedc60412/recipes/avy"; @@ -4880,12 +5044,12 @@ melpaBuild { pname = "avy-menu"; ename = "avy-menu"; - version = "20171231.2220"; + version = "20181231.2308"; src = fetchFromGitHub { owner = "mrkkrp"; repo = "avy-menu"; - rev = "990cc94d708c923f761be083b3a57f6f844566c8"; - sha256 = "0kjxfg8wx5c8cixazih24s0mv4crk648v9bb6pd1i6lmh266rc6g"; + rev = "4610cb0f41a84b2a8506360768d74e93661da8b3"; + sha256 = "1yms2n1j1w19g7rjxpxhi5bfkl1czjaqyz5lqabmndcd4sljbc4y"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/2f0b4cfb30c405d44803b36ebcaccef0cf87fe2d/recipes/avy-menu"; @@ -5038,12 +5202,12 @@ melpaBuild { pname = "babel"; ename = "babel"; - version = "20161122.2340"; + version = "20181201.119"; src = fetchFromGitHub { owner = "juergenhoetzel"; repo = "babel"; - rev = "d4212e25fcbd22b8e38be13936f937a2963d34a9"; - sha256 = "0lxiavjs2fbwlqbmkl2hssjzv8a8baa8vvqqfnprhnipngkkgdaf"; + rev = "c25dedb5c7f2465b122102f02cd9845668818c20"; + sha256 = "1ydb8zbg8n56wf5hb8i3i2s40mspqfkszfdd8v8jjqb5wm8q32rc"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/b0d748fa06b3cbe336cb01a7e3ed7b0421d885cc/recipes/babel"; @@ -5146,6 +5310,33 @@ license = lib.licenses.free; }; }) {}; + backline = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild + , outline-minor-faces }: + melpaBuild { + pname = "backline"; + ename = "backline"; + version = "20181111.32"; + src = fetchFromGitHub { + owner = "tarsius"; + repo = "backline"; + rev = "960deaef1d87658f79a0bd95c85946371d211590"; + sha256 = "017w7qa74laq04h359znn9kjsqpl91gypsqsldpnlrb25jw0z0gl"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/f252e45e8bd6e8af1267755d108f378a974ddaf1/recipes/backline"; + sha256 = "0y5y048s6r3mcgjfxpmwarnhn6lh00j9cla6qjsd83f79hw5cq4y"; + name = "recipe"; + }; + packageRequires = [ emacs outline-minor-faces ]; + meta = { + homepage = "https://melpa.org/#/backline"; + license = lib.licenses.free; + }; + }) {}; backup-each-save = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -5281,12 +5472,12 @@ melpaBuild { pname = "banner-comment"; ename = "banner-comment"; - version = "20180510.620"; + version = "20180923.1211"; src = fetchFromGitHub { owner = "WJCFerguson"; repo = "banner-comment"; - rev = "fedbb071d043106a30e378ee58b96e349e8068ed"; - sha256 = "1d6yp96rv6p9f3b8ddrpzb3ng2v0vlqb1akcpd7dria6y6aai8l4"; + rev = "ac52f6b24e590787a385c08cc3751d6f2ddca815"; + sha256 = "1630py97ldh3w71s26jbcxk58529g03sl0padnzqj0rbqy82yw8w"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/4bb69f15cb6be38a86abf4d15450a29c9a819068/recipes/banner-comment"; @@ -5382,12 +5573,12 @@ melpaBuild { pname = "base16-theme"; ename = "base16-theme"; - version = "20180524.1311"; + version = "20181213.1042"; src = fetchFromGitHub { owner = "belak"; repo = "base16-emacs"; - rev = "c9acfddcc0a3a3753223d4e8742de6af284154cc"; - sha256 = "10kwilq2fn3bdh21zzw8h30kr1xalrjm7nbi003315qham2dkyh2"; + rev = "8e7cb5005fa429b8d55c7d464deff02abe70a446"; + sha256 = "091fw1vg0rgppcdsv7zvqjrlk71q2inx3dr1rh700b9kgx33hg78"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/30862f6be74882cfb57fb031f7318d3fd15551e3/recipes/base16-theme"; @@ -5461,12 +5652,12 @@ melpaBuild { pname = "basic-mode"; ename = "basic-mode"; - version = "20180612.1152"; + version = "20180919.1052"; src = fetchFromGitHub { owner = "dykstrom"; repo = "basic-mode"; - rev = "024505ae0a37756e3259773383852ed208120bde"; - sha256 = "0fsy09m3mwvdxhlg4p0g95j1nsx8pp9ggslawpd4rj0rn6ffbq6d"; + rev = "812f078240f9de09491701853569335ba6d9b5ff"; + sha256 = "1492klgbkxb46x02kmhngccx4p9fmjvf6m4ay89j7pyaixvcqj8v"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/71801bdc0720f150edeab6796487c753c6e7c3f5/recipes/basic-mode"; @@ -5696,12 +5887,12 @@ melpaBuild { pname = "bbdb-vcard"; ename = "bbdb-vcard"; - version = "20150713.1350"; + version = "20181005.319"; src = fetchFromGitHub { owner = "tohojo"; repo = "bbdb-vcard"; - rev = "c3aafd4160854a38fd92afcdade32b9a13abe82c"; - sha256 = "1zlf9xhpirln72xr7v6kgndkg5wyz5ipsl4gpq9lbmp92jlgbwlj"; + rev = "3e8630a8c45add7b495d7ef290ba9f402b359489"; + sha256 = "0f4ccbffp5j1jzgpqb26dgsb8k3aikzam21ilqfcq8ac4sl6l4g6"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/dd5d9027c49beae89f78d2a30dfa4bd070dff1bd/recipes/bbdb-vcard"; @@ -5800,12 +5991,12 @@ melpaBuild { pname = "beacon"; ename = "beacon"; - version = "20180706.1025"; + version = "20181008.650"; src = fetchFromGitHub { owner = "Malabarba"; repo = "beacon"; - rev = "8dfe64496be3cb79d5b83891f95b70b1b699470b"; - sha256 = "169asr7dz9xn22sxm38xxfafl6k9qnv4ir5k5hzvc9l2xp05w3z3"; + rev = "07a2e9566be2a0b8f59b8ac8668448f1e250a400"; + sha256 = "1r7v4yip67rwvi75i6z0al95yjyqjk3f29fsm5kblvg9zivfbp9g"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/d09cfab21be800831644218e9c8c4433087951c0/recipes/beacon"; @@ -5877,11 +6068,11 @@ melpaBuild { pname = "belarus-holidays"; ename = "belarus-holidays"; - version = "20180615.611"; + version = "20190102.543"; src = fetchgit { url = "https://bitbucket.org/EugeneMakei/belarus-holidays.el"; - rev = "410a7dcf46fdcbee762a0c0aa0c7af03230b9656"; - sha256 = "186dka9ba9hx1xhd0lfj1x1njikixm09wd4xiqawgdczgfwyv4sq"; + rev = "35a18273e19edc3b4c761030ffbd11116483b83e"; + sha256 = "1mddjgv2q0sr5v4gxvrzz8y0ybj2bjb5klqsrjajcpbpgbim1qgf"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/6987c5fbafc602ff6b48c347b4e3e7c4471681e8/recipes/belarus-holidays"; @@ -6268,12 +6459,12 @@ melpaBuild { pname = "bifocal"; ename = "bifocal"; - version = "20171004.1124"; + version = "20181109.1941"; src = fetchFromGitHub { owner = "riscy"; repo = "bifocal-mode"; - rev = "a8b222b069a6bd64531b4780905989797bad8abe"; - sha256 = "0c6vzh35lj3pg9wd4v2fy6xdmcg9kq3n5br6rp4lx257gxglzpwh"; + rev = "add30c678488cec04976a85ba8cda20805938a01"; + sha256 = "01j8s6c3qm4scxy1dk07l41y0n55gz83zzfi254kc2vyx02vqg7f"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/79e71995bd8452bad2e717884f148ec74c9735fc/recipes/bifocal"; @@ -6397,12 +6588,12 @@ melpaBuild { pname = "bing-dict"; ename = "bing-dict"; - version = "20170604.1831"; + version = "20181110.1800"; src = fetchFromGitHub { owner = "cute-jumper"; repo = "bing-dict.el"; - rev = "d4b261739e53e8ed8fa5db3d3946de82c0ab8e34"; - sha256 = "0dn6rifr0njpw3mwbyn21bw88lp0kzwwjp7ivgbbl1bxshj0ybhk"; + rev = "51266b11bca22923c3a86bc101abf9145d1397d3"; + sha256 = "0c6d1kmgf9gyrqqfxisdlaavb4rx5scnh7dgqswlmj2fqws3yvna"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/855ea20024b606314f8590129259747cac0bcc97/recipes/bing-dict"; @@ -6607,12 +6798,12 @@ melpaBuild { pname = "blacken"; ename = "blacken"; - version = "20180831.2228"; + version = "20181205.1239"; src = fetchFromGitHub { owner = "proofit404"; repo = "blacken"; - rev = "48061012139d4524619dd90ce5b33775e394dabe"; - sha256 = "0v9b4a8kgp1n0zchi4zp5sgh4i1i703hnwalb7632wv4xlzrmg31"; + rev = "c0fb1b4ab2f223b4a109d0f3ff1369a969c655b8"; + sha256 = "1va06fmkd32gl4br7yagw25rvrwnwclf3zxvqvx9i7958rf5lik9"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/69d9802996a338be937d61678f2cadf3497f6b85/recipes/blacken"; @@ -6711,12 +6902,12 @@ melpaBuild { pname = "bln-mode"; ename = "bln-mode"; - version = "20180730.523"; + version = "20181121.118"; src = fetchFromGitHub { owner = "mgrachten"; repo = "bln-mode"; - rev = "b5e86b1bc8b7ac25bf8ec07056824861c4c3f050"; - sha256 = "12bf5l8x1bfg3hpnw3lg3qkxyyhsn6n6cmghdnf3gmd73arpzcbd"; + rev = "a601b0bf975dd1432f6552ab6afe3f4f71133b4a"; + sha256 = "19y1fs5bzp2sqvh6svmj0cpvgq13zmsn852027hi11zvwi6dzqz8"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/ee12ef97df241b7405feee69c1e66b3c1a67204b/recipes/bln-mode"; @@ -6797,12 +6988,12 @@ melpaBuild { pname = "blog-minimal"; ename = "blog-minimal"; - version = "20170311.555"; + version = "20181021.149"; src = fetchFromGitHub { owner = "thiefuniverse"; repo = "blog-minimal"; - rev = "d679d74039ecc114b037800c8a94303265b9542a"; - sha256 = "1x14xwnv22dc99gzbn6z48dhxpy46a7lrby2p59aizpwpysi64yk"; + rev = "a634a2db0b80cb445ef0b072d1a1482ced91f9ad"; + sha256 = "0mxfrp7gwg07d8vkipqf8p6mli9y5sqh25k1dkcsidmc6m09j5qn"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/56217a33b0669a782621dd65d83419ae371ed60a/recipes/blog-minimal"; @@ -6822,12 +7013,12 @@ melpaBuild { pname = "bm"; ename = "bm"; - version = "20180703.343"; + version = "20181012.931"; src = fetchFromGitHub { owner = "joodland"; repo = "bm"; - rev = "d224b6cd8341db4c2e11263c346dd44fb37fcd88"; - sha256 = "18xwm1xj436bwa2l3dkfx6hlj19y6f0xqd3jbd06j4g3idpryqma"; + rev = "b85d407b53e1d852c47fcea2a245a4e67e48c38a"; + sha256 = "1ypa1971yh6g0kximqxiv90h1l3m6fprwza6l88gwgackhg9wiz0"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/cae2ac3513e371a256be0f1a7468e38e686c2487/recipes/bm"; @@ -6852,12 +7043,12 @@ melpaBuild { pname = "bmx-mode"; ename = "bmx-mode"; - version = "20180324.857"; + version = "20180929.432"; src = fetchFromGitHub { owner = "josteink"; repo = "bmx-mode"; - rev = "7450c29f5c1f5f67b02bca1c89f06cdf01855f41"; - sha256 = "0knxsmlp1agfs5sj5iz13b8igjx4gpk1lj36wzh1rdiwcxicnr49"; + rev = "536b332edc3b98cc97588c937c7368803ba5961c"; + sha256 = "0hbkh4fb1cb1fd7fq1999i9rffr2xc0l16b0m5sajcrsir3gq4nr"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/7f456d2b2b8f5a33bcb0f2ffd19e6e0276950f24/recipes/bmx-mode"; @@ -7067,12 +7258,12 @@ melpaBuild { pname = "boon"; ename = "boon"; - version = "20180914.443"; + version = "20181014.227"; src = fetchFromGitHub { owner = "jyp"; repo = "boon"; - rev = "fe2f981e2e6446e0c6093d49496ec1104e4873b7"; - sha256 = "1g0cfg2mwr30727jzy0psmwgd97hhala5n2m0dvygr0pp7y2s7mn"; + rev = "675719ec1f6608a690fc613214920ac3c0d350a3"; + sha256 = "1h2mfvpsci60g7gwwwbb62n85sl1xvrmc1n2w3k8xvmszrmk05kq"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/091dcc3775ec2137cb61d66df4e72aca4900897a/recipes/boon"; @@ -7096,12 +7287,12 @@ melpaBuild { pname = "borg"; ename = "borg"; - version = "20180908.444"; + version = "20181227.946"; src = fetchFromGitHub { owner = "emacscollective"; repo = "borg"; - rev = "759dc85315d8788088dc5727a353e3777dc256fa"; - sha256 = "08f1bhwcrs3b80z4qwv44ymsjbdf59a4d98kk0fglj6a9ybpchc8"; + rev = "5aad7edbaa8a37581af280db64f237619d6c8dc0"; + sha256 = "16zxl0pmr8z3a2akhnh8g4sd1r7dag4g8p75niych272z0g96cll"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/878ab90d444f3a1fd2c9f9068ca7b477e218f1da/recipes/borg"; @@ -7332,12 +7523,12 @@ melpaBuild { pname = "browse-at-remote"; ename = "browse-at-remote"; - version = "20180621.2331"; + version = "20181209.248"; src = fetchFromGitHub { owner = "rmuslimov"; repo = "browse-at-remote"; - rev = "0a06018e3500f36917284d552917702de3c5fae5"; - sha256 = "1vci2azq00n2vx1kf0adhzddqj607l5341ym4p6ndk6xhdhqhkbs"; + rev = "2ffeb5d871701df20cd82d2ec5b4fd9b6ae61248"; + sha256 = "0a81kcdxr3jk1k2i8lyi31dawwwp613hysbr3pimdf3kkkv6ps1j"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/855ea20024b606314f8590129259747cac0bcc97/recipes/browse-at-remote"; @@ -7401,6 +7592,30 @@ license = lib.licenses.free; }; }) {}; + brutalist-theme = callPackage ({ fetchgit + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "brutalist-theme"; + ename = "brutalist-theme"; + version = "20181023.522"; + src = fetchgit { + url = "https://git.madhouse-project.org/algernon/brutalist-theme.el.git"; + rev = "15ea5d881cad24c40d02a1980891b3c17853ad20"; + sha256 = "1zlkx9l8srdw4f95355mng08sx9r23dl7318bpkrw6q56lnp79sf"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/ec889956a5685c3a60003ad2bfa04b03b57aa8e8/recipes/brutalist-theme"; + sha256 = "0dg0432r3cpjgdlpz583vky4hj5vld9d25dvaj6nxlir2ph9g9hn"; + name = "recipe"; + }; + packageRequires = []; + meta = { + homepage = "https://melpa.org/#/brutalist-theme"; + license = lib.licenses.free; + }; + }) {}; bshell = callPackage ({ buffer-manage , emacs , fetchFromGitHub @@ -7804,12 +8019,12 @@ melpaBuild { pname = "bui"; ename = "bui"; - version = "20180812.1413"; + version = "20181218.1030"; src = fetchFromGitHub { owner = "alezost"; repo = "bui.el"; - rev = "bd3c5ee32d28d80c6eb54b0340626103c32e3093"; - sha256 = "0ixia5s41f2nbal3wsixacbhbc0mk9yb75ir1amqakip30sq4apv"; + rev = "9162c24b75799857d54838d961c60776ffcd657e"; + sha256 = "0sszdl4kvqbihdh8d7mybpp0d8yw2p3gyiipjcxz9xhvvmw3ww4x"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/38b7c9345de75a707b4a73e8bb8e2f213e4fd739/recipes/bui"; @@ -7832,12 +8047,12 @@ melpaBuild { pname = "build-farm"; ename = "build-farm"; - version = "20180906.1158"; + version = "20181218.1202"; src = fetchFromGitHub { owner = "alezost"; repo = "build-farm.el"; - rev = "e244dea35566a10253d61be430d3caf81b779af8"; - sha256 = "1a4ky0hca26p7f3i2c2s5517ygkyaaz52vs0vxy6f5q95rhlgdhd"; + rev = "5c268a3c235ace0d79ef1ec82c440120317e06f5"; + sha256 = "0i0bwbav5861j2y15j9nd5m9rdqg9q97zgcbld8pivr9nyxy63lz"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/bc97bf56ea50788ecbbbb1f46e188e8487370936/recipes/build-farm"; @@ -7936,12 +8151,12 @@ melpaBuild { pname = "bury-successful-compilation"; ename = "bury-successful-compilation"; - version = "20150328.1728"; + version = "20181105.2003"; src = fetchFromGitHub { owner = "EricCrosson"; repo = "bury-successful-compilation"; - rev = "7b16dc71b43914928cc16da674e69d7af975238a"; - sha256 = "08ny1iycsgpal99g180w9yvk6ql8qn2kkc9xk9lmfv5p1wqm3l4w"; + rev = "674644c844184605a1bb4f9487a60f7a780a6fe7"; + sha256 = "13ilv4zbzwb5rz0gf69z8pvxazvwlmb5shkb055l42ksxslp49hh"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/f66e2e23c7a1fa0ce6fa8a0e814242b7c46c299c/recipes/bury-successful-compilation"; @@ -8065,12 +8280,12 @@ melpaBuild { pname = "buttercup"; ename = "buttercup"; - version = "20180903.42"; + version = "20181202.807"; src = fetchFromGitHub { owner = "jorgenschaefer"; repo = "emacs-buttercup"; - rev = "0d742b00debd59f07320638c505777f6a908f5ad"; - sha256 = "0cy3gqw8h4p09n2n9icnyydgymmxcgyz7r1536cg07nhc0kvgccf"; + rev = "810fa6fb8dab06610dbf2b5ccbc64b4d0ecc7485"; + sha256 = "0dckgcyzsav6ld78bcyrrygy1cz1jvqgav6vy8f6klpmk3r8xrl1"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/d4b187cb5b3cc5b546bfa6b94b6792e6363242d1/recipes/buttercup"; @@ -8083,6 +8298,32 @@ license = lib.licenses.free; }; }) {}; + buttercup-junit = callPackage ({ buttercup + , emacs + , fetchgit + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "buttercup-junit"; + ename = "buttercup-junit"; + version = "20181111.1258"; + src = fetchgit { + url = "https://bitbucket.org/olanilsson/buttercup-junit"; + rev = "1b3214d3d74d998c475f54035643231d8bcffbee"; + sha256 = "120ayxx7f8vdmjwdvycjpkc9acb03z1l0jf2ndigyg64jb8q7a4g"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/f1030960afe994da338d78607233319b3f7f0c8b/recipes/buttercup-junit"; + sha256 = "1v848vbwxqrw9sdsvjaggkspavmbwkmqshf321m4n8srvi51383w"; + name = "recipe"; + }; + packageRequires = [ buttercup emacs ]; + meta = { + homepage = "https://melpa.org/#/buttercup-junit"; + license = lib.licenses.free; + }; + }) {}; button-lock = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -8108,6 +8349,32 @@ license = lib.licenses.free; }; }) {}; + buttons = callPackage ({ cl-lib ? null + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "buttons"; + ename = "buttons"; + version = "20181220.915"; + src = fetchFromGitHub { + owner = "erjoalgo"; + repo = "emacs-buttons"; + rev = "6bfeca7216ce8fa301e6e99bd40883cc3f1d3787"; + sha256 = "1h5w97q2lz741ny33qrrvh6m0h45ch19fqlkw7kggz207klfx858"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/3b8f9437268a51654b2bebdd024c35060b078962/recipes/buttons"; + sha256 = "0pp7x4z6vzdfav5ljxsk1q6xby7gcxnkyl5fcbsd4r98ja4zmyq4"; + name = "recipe"; + }; + packageRequires = [ cl-lib ]; + meta = { + homepage = "https://melpa.org/#/buttons"; + license = lib.licenses.free; + }; + }) {}; c-c-combo = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -8140,12 +8407,12 @@ melpaBuild { pname = "c-eldoc"; ename = "c-eldoc"; - version = "20170917.1502"; + version = "20181108.2039"; src = fetchFromGitHub { owner = "nflath"; repo = "c-eldoc"; - rev = "79d09769362228058246f5e6fa183d121f7fb322"; - sha256 = "1398lfd18zn2xym36p71yavgggqbb15xz9m7gah4w4k2bk15aczk"; + rev = "e35c0e40f71c25804919f6c01fd27e95c2e2adb7"; + sha256 = "0rwxlq8w6507lkvvj0krwvg4ai1wyj466nhns1f857kry7cssnzy"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/cae2ac3513e371a256be0f1a7468e38e686c2487/recipes/c-eldoc"; @@ -8261,6 +8528,33 @@ license = lib.licenses.free; }; }) {}; + caddyfile-mode = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , loop + , melpaBuild }: + melpaBuild { + pname = "caddyfile-mode"; + ename = "caddyfile-mode"; + version = "20181204.58"; + src = fetchFromGitHub { + owner = "Schnouki"; + repo = "caddyfile-mode"; + rev = "9da9c964f926690b1a1c029bd6d89ae83c5cef41"; + sha256 = "0wip6n5x1prp7dzbvm8qik87iqpinr8yy138idddj4jc6hwd78p4"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/ec771222056dcb6c67e133cd6aa6b4e4d03ac264/recipes/caddyfile-mode"; + sha256 = "12d57xcpp78lmcr95nfp0r9g7lkw8kfxf9c3rc7g53kh5xaaj4i2"; + name = "recipe"; + }; + packageRequires = [ emacs loop ]; + meta = { + homepage = "https://melpa.org/#/caddyfile-mode"; + license = lib.licenses.free; + }; + }) {}; cake-inflector = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -8295,12 +8589,12 @@ melpaBuild { pname = "cakecrumbs"; ename = "cakecrumbs"; - version = "20180222.1845"; + version = "20180928.1839"; src = fetchFromGitHub { owner = "kuanyui"; repo = "cakecrumbs.el"; - rev = "76cfbfacfaa9d2128fc9218338a0ba2bb47349ab"; - sha256 = "18ni6krymzm1af2vmw2n82s0ifny6pn1p0qifn3646xx4p210a4z"; + rev = "cf8c1df885eee004602f73c4f841301e200e5850"; + sha256 = "0s5ga39dpn9rjxjk5inkylqh56w3qgaq2wmwwgv5gsydqdyil31f"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/c970907affeb4a21fa1b7c350edf171dbdcd8de5/recipes/cakecrumbs"; @@ -8526,12 +8820,12 @@ melpaBuild { pname = "call-graph"; ename = "call-graph"; - version = "20180509.635"; + version = "20190102.1823"; src = fetchFromGitHub { owner = "beacoder"; repo = "call-graph"; - rev = "1ba83f20e56cfe77f6165df4ffde1d152647ec3b"; - sha256 = "0qs3wg6ls4s400hdcimwf9lj9mz6g39sk3nqxvp4fk01jjzcas39"; + rev = "20c18b4d1991181762ecb881134e0dcefc0d7ed9"; + sha256 = "145qxfbmqi5g5m2670hznn3glycql1m4cg36db7i18xy9c3y2kja"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/a6acf099e2510c82b4b03e2f35051afc3d28af45/recipes/call-graph"; @@ -8604,12 +8898,12 @@ melpaBuild { pname = "caml"; ename = "caml"; - version = "20180913.557"; + version = "20181011.628"; src = fetchFromGitHub { owner = "ocaml"; repo = "ocaml"; - rev = "f179a652635117f0238258a3235c5bec35efe062"; - sha256 = "129gg21acylb7n59xdcqkbfajzdqz0nfhvcmy87yz5189ywd3p55"; + rev = "e52b1c65189bb7833feb72fe6b9975eda6635bf3"; + sha256 = "0pj1v4lbwnx1nviwrxvkh24k3rxhl7sj21blnqdfzyrf3hlk01r4"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/d5a3263cdcc229b11a3e96edbf632d56f32c47aa/recipes/caml"; @@ -8622,6 +8916,35 @@ license = lib.licenses.free; }; }) {}; + cangjie = callPackage ({ dash + , emacs + , f + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild + , s }: + melpaBuild { + pname = "cangjie"; + ename = "cangjie"; + version = "20181209.133"; + src = fetchFromGitHub { + owner = "kisaragi-hiu"; + repo = "cangjie.el"; + rev = "d37ff3c0b7e40a04c2c09fd5fb8ae1693df7ab9b"; + sha256 = "0cyry0idblgflg1i9v0jjdhxwql75zjd11qx8zy9pkw3wsjamfy6"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/ed79fc972f7fe69d7bad5d1cdde3a276885a9fe8/recipes/cangjie"; + sha256 = "0gdp6dlkzkkd8r3cmwakwxlxsbysb351n1lr9sq4d60gbbskklln"; + name = "recipe"; + }; + packageRequires = [ dash emacs f s ]; + meta = { + homepage = "https://melpa.org/#/cangjie"; + license = lib.licenses.free; + }; + }) {}; capture = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -8684,12 +9007,12 @@ melpaBuild { pname = "cargo"; ename = "cargo"; - version = "20180812.518"; + version = "20190101.1243"; src = fetchFromGitHub { owner = "kwrooijen"; repo = "cargo.el"; - rev = "c995b42e2c0fc609d265286ce465d508d81b8a4d"; - sha256 = "0jcppqbm84kwph9cq2yy2a2yjpb57vb1552rm4dphfdac8kajqq5"; + rev = "5462994393b01b85a76caacf9277bff431211ae4"; + sha256 = "1lzbyzri6yvqqanslvq5hbr63lpsa22g5sr2jhj377d2l57q8xmv"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/e997b356b009b3d2ab467fe49b79d728a8cfe24b/recipes/cargo"; @@ -8757,7 +9080,8 @@ license = lib.licenses.free; }; }) {}; - cask = callPackage ({ cl-lib ? null + cask = callPackage ({ ansi + , cl-lib ? null , dash , epl , f @@ -8771,19 +9095,19 @@ melpaBuild { pname = "cask"; ename = "cask"; - version = "20180831.608"; + version = "20181107.142"; src = fetchFromGitHub { owner = "cask"; repo = "cask"; - rev = "1350f50e7955d3adf160a3fffa9b26524eb09f4c"; - sha256 = "03fp7ja7kqgc3jl46kzdrv26wclsrawq082hqxsajr8mj3gzi5xv"; + rev = "199b4380dd3e178ff9df3a9d13d044d67e522b3f"; + sha256 = "14q76wdlnwg08ais2gpmdrjvshly1wp8p8ckyhdmnwq7x39qvh7d"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/b86c666ee9b0620390a250dddd42b17cbec2409f/recipes/cask"; sha256 = "11nr6my3vlb1xiyai7qwii3nszda2mnkhkjlbh3d0699h0yw7dk5"; name = "recipe"; }; - packageRequires = [ cl-lib dash epl f package-build s shut-up ]; + packageRequires = [ ansi cl-lib dash epl f package-build s shut-up ]; meta = { homepage = "https://melpa.org/#/cask"; license = lib.licenses.free; @@ -8926,6 +9250,32 @@ license = lib.licenses.free; }; }) {}; + cc-cedict = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "cc-cedict"; + ename = "cc-cedict"; + version = "20181217.312"; + src = fetchFromGitHub { + owner = "xuchunyang"; + repo = "cc-cedict.el"; + rev = "7dd6e8a99c634c9eff5fa2931ad8828ff02dbd90"; + sha256 = "1clpwp5vp9rlnms3xfr4c0ddhc3cxl3vv76jasxiqjzidjs8n090"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/368aaef30c5c4f38d9d2dd09f966e3dcc2463e11/recipes/cc-cedict"; + sha256 = "1h8i9nfd66ayka5vkm1lp5crr4nm1bzi4sak0xid85fzgmx364vr"; + name = "recipe"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://melpa.org/#/cc-cedict"; + license = lib.licenses.free; + }; + }) {}; ccc = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -8957,23 +9307,24 @@ , fetchurl , lib , lsp-mode - , melpaBuild }: + , melpaBuild + , projectile }: melpaBuild { pname = "ccls"; ename = "ccls"; - version = "20180914.2138"; + version = "20181225.53"; src = fetchFromGitHub { owner = "MaskRay"; repo = "emacs-ccls"; - rev = "791bde91845852c19ad1b4a4c9df87137d3e5625"; - sha256 = "1601w5gmq39g2ksvil0hhfsh0hm91646qb88ppafqhm8hig91kna"; + rev = "8345c08d1d8fb784d3cc8b35bfbaedfa1861cc2e"; + sha256 = "1bs4jx36vrkrdfr6ah6hcy19fyv73d39dgrl8w6j555ahswk2c9h"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/be27a4022d58860917a659fce2b7d7791fbea4e2/recipes/ccls"; sha256 = "0kiv0n6pdpa75wjcimpwccwbjbhga4gjnphjrkpj4qz5qv42rbnm"; name = "recipe"; }; - packageRequires = [ dash emacs lsp-mode ]; + packageRequires = [ dash emacs lsp-mode projectile ]; meta = { homepage = "https://melpa.org/#/ccls"; license = lib.licenses.free; @@ -9239,29 +9590,27 @@ license = lib.licenses.free; }; }) {}; - cerbere = callPackage ({ f - , fetchFromGitHub + cerbere = callPackage ({ fetchFromGitHub , fetchurl , lib , melpaBuild - , pkg-info - , s }: + , pkg-info }: melpaBuild { pname = "cerbere"; ename = "cerbere"; - version = "20140418.715"; + version = "20181113.841"; src = fetchFromGitHub { owner = "nlamirault"; repo = "cerbere"; - rev = "ef573b05f4c2a067b8234003aaa4b2a76fffea5c"; - sha256 = "17jg5d5afh9zpnjx8wkys8bjllxq99j0yhz8j3fvkskisvhkz1im"; + rev = "bb18d932b16541105d41a668dbf6fc4e833a6dc2"; + sha256 = "1sx61pgh12iqby4yvslrmn634hn4hk2bh2zfybj1b5p3iwzzmpzd"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/4145e270a2113f30f8bb4d0f6c335f1c76f77b1c/recipes/cerbere"; sha256 = "1g3svmh5dlh5mvyag3hmiy90dfkk6f7ppd9qpwckxqyll9vl7r06"; name = "recipe"; }; - packageRequires = [ f pkg-info s ]; + packageRequires = [ pkg-info ]; meta = { homepage = "https://melpa.org/#/cerbere"; license = lib.licenses.free; @@ -9427,26 +9776,27 @@ license = lib.licenses.free; }; }) {}; - cg = callPackage ({ fetchFromGitHub + cg = callPackage ({ emacs + , fetchFromGitHub , fetchurl , lib , melpaBuild }: melpaBuild { pname = "cg"; ename = "cg"; - version = "20171123.301"; + version = "20181022.616"; src = fetchFromGitHub { owner = "emacsorphanage"; repo = "cg"; - rev = "e19f3bf60b9c8dbcff053b008fa3ace17fc073fe"; - sha256 = "13j7x6ngjga2idixw02llmykzsrihsxnfdj5jkx5sdkvrmqymmfz"; + rev = "34a892aa77c9870006bae988c79f694f2e5a68a3"; + sha256 = "0jjjqy7rmr2yzjqzvhz0nxs3nvwjh4gjf8rrh3maivw0wd1l8pl1"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/30de78c9cf83de30093a5647976eeaf552d4b2cb/recipes/cg"; sha256 = "0yl2w48953vym4gxcxvjfaq3jgsv5jlya9vq3iwlfxqpapd3r3k9"; name = "recipe"; }; - packageRequires = []; + packageRequires = [ emacs ]; meta = { homepage = "https://melpa.org/#/cg"; license = lib.licenses.free; @@ -9460,12 +9810,12 @@ melpaBuild { pname = "challenger-deep-theme"; ename = "challenger-deep-theme"; - version = "20180816.1558"; + version = "20181205.1034"; src = fetchFromGitHub { owner = "challenger-deep-theme"; repo = "emacs"; - rev = "443ca72dca966b3d27dbec9eab54a09cbd76eac0"; - sha256 = "19gv0fczdy8hpv836ak2aa70cz0hwm0mw7dinrwz9kyw3wkfi8yv"; + rev = "64a27ff3d7f6633234f7f1ec28a70b47a176bb04"; + sha256 = "17pmr3fbcyhhv03y9x32h0bwi2mrbqnjv9cy04ghpr3hkpgkpz65"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/3416586d4d782cdd61a56159c5f80a0ca9b3ddf4/recipes/challenger-deep-theme"; @@ -9538,12 +9888,12 @@ melpaBuild { pname = "char-menu"; ename = "char-menu"; - version = "20171231.2218"; + version = "20181231.2305"; src = fetchFromGitHub { owner = "mrkkrp"; repo = "char-menu"; - rev = "3235f8e3c88848ce10d25f84a5da39061fd35c0d"; - sha256 = "05pjfj6g4gdbdj4z63283j5qzkvhvrzsx1jhbc5iih0nsffwapc3"; + rev = "bf6f64e8347bdf6f8421d0494d30b9af30a49778"; + sha256 = "0dslfmhzxxyl9i9vfff21yjwjl9y8zhmgap7p3b2bdivks50hwwd"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/f6676747e853045b3b19e7fc9524c793c6a08303/recipes/char-menu"; @@ -9954,12 +10304,12 @@ melpaBuild { pname = "choice-program"; ename = "choice-program"; - version = "20171004.931"; + version = "20180920.2013"; src = fetchFromGitHub { owner = "plandes"; repo = "choice-program"; - rev = "27607ec1fe241c58fbc1f861454a8e2ec1fd7b15"; - sha256 = "0q8krgsydrc2xc29y60qljifdvxfmxnvbncxsh64xhrzsnrgwmq5"; + rev = "08ce5a5dd79690aed12fd9d152d8cb4be988fdb1"; + sha256 = "19mq8z00g12cpyrb8z0m9sxqs8adp4hbcbqxcila53myfcf7v92h"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/6e39555b2538cc8a955766c5533871396e8fe712/recipes/choice-program"; @@ -10062,12 +10412,12 @@ melpaBuild { pname = "cider"; ename = "cider"; - version = "20180914.2345"; + version = "20190102.2219"; src = fetchFromGitHub { owner = "clojure-emacs"; repo = "cider"; - rev = "baa0430625d486bc4752337716770b979d687a5d"; - sha256 = "1g7zwyyjrzlz7wnf3jq2n797dh00gxad7m3ak2gwkwsnyhs494k1"; + rev = "0c09c9bc2972c2b4917c8e3cf526de31e59cd619"; + sha256 = "1fj7i223lf5vnbh44rih02z87crhhcaadapjkarhmqn1jrbvmmxh"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/55a937aed818dbe41530037da315f705205f189b/recipes/cider"; @@ -10152,12 +10502,12 @@ melpaBuild { pname = "cider-hydra"; ename = "cider-hydra"; - version = "20161018.2254"; + version = "20181015.27"; src = fetchFromGitHub { owner = "clojure-emacs"; repo = "cider-hydra"; - rev = "6bb341143fe16f12be2262b2bcd003a246962676"; - sha256 = "094641g6rzm4y6k8ph1bbkfiwpp37wk1q9mcylbah01qlqd9c9qm"; + rev = "5956c3909cd9beae11f64973e4f0d830cea7860d"; + sha256 = "1hnari85c4y5sc8cdv2idkg2qv058crz54xdidnphr1wgw5zhvpk"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/51d5e6471f88337c478ee5c189f037aaec937f56/recipes/cider-hydra"; @@ -10170,36 +10520,6 @@ license = lib.licenses.free; }; }) {}; - cider-spy = callPackage ({ cider - , cl-lib ? null - , dash - , emacs - , fetchFromGitHub - , fetchurl - , lib - , melpaBuild - , noflet }: - melpaBuild { - pname = "cider-spy"; - ename = "cider-spy"; - version = "20160313.740"; - src = fetchFromGitHub { - owner = "jonpither"; - repo = "cider-spy"; - rev = "0224608d240e9900e588b6df049c2a87c24fc936"; - sha256 = "1x96f5wc916dcwb75a34b6x1mas20gdgy34c7rg59n91ydn1mfaf"; - }; - recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/855ea20024b606314f8590129259747cac0bcc97/recipes/cider-spy"; - sha256 = "086yxz90mgc5si9k4j15nkc51k0lfk1dx1kq3r3swhyw3cwn7vh3"; - name = "recipe"; - }; - packageRequires = [ cider cl-lib dash emacs noflet ]; - meta = { - homepage = "https://melpa.org/#/cider-spy"; - license = lib.licenses.free; - }; - }) {}; ciel = callPackage ({ emacs , fetchFromGitHub , fetchurl @@ -10288,16 +10608,16 @@ melpaBuild { pname = "circadian"; ename = "circadian"; - version = "20180708.643"; + version = "20181024.556"; src = fetchFromGitHub { - owner = "GuidoSchmidt"; + owner = "guidoschmidt"; repo = "circadian.el"; - rev = "9894361dcd6ffb6d4629b4cbbabda2153699eb8e"; - sha256 = "0wpsykmai3idz0bgfl07hwl9nr4x9sgprvqgw8jln4dz2wf5gdic"; + rev = "e0547c1779f2653dac09192951a0756ce2e2ea89"; + sha256 = "120b6wr2b4dmgaz5y3vpc5f68nqm1lfkgwpcxwxncspds7qb987j"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/3440905a20bc91bb2637a87c04ff8410379f150d/recipes/circadian"; - sha256 = "13797y1w1636bibisz5i5p2xp0smd3apnhc1nx8ijm75smx679id"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/35763febad20f29320d459394f810668db6c3353/recipes/circadian"; + sha256 = "1xxrhifw371yc4i2cddzcdmqh5dfc905wyl88765098685q8k4bp"; name = "recipe"; }; packageRequires = [ emacs ]; @@ -10443,6 +10763,32 @@ license = lib.licenses.free; }; }) {}; + cl-libify = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "cl-libify"; + ename = "cl-libify"; + version = "20181129.1830"; + src = fetchFromGitHub { + owner = "purcell"; + repo = "cl-libify"; + rev = "e205b96f944a4f312fd523804cbbaf00027a3c8b"; + sha256 = "03xmpgpd4zw9x4shkz9aa744ifnwfblnq369qsp3r1awjacksrg3"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/22088f8779652072871d5c472c67f34bd0470129/recipes/cl-libify"; + sha256 = "0p3b57vfzhk348hb7bcnkq4ihi4qzsy4hcdvwa1h85i84vwyzk5d"; + name = "recipe"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://melpa.org/#/cl-libify"; + license = lib.licenses.free; + }; + }) {}; clang-format = callPackage ({ cl-lib ? null , fetchFromGitHub , fetchurl @@ -10605,12 +10951,12 @@ melpaBuild { pname = "cliphist"; ename = "cliphist"; - version = "20171112.2138"; + version = "20181229.611"; src = fetchFromGitHub { owner = "redguardtoo"; repo = "cliphist"; - rev = "e454254f8bd9dbaea28e95c786d7297a2d4e920a"; - sha256 = "1lxsy78kmrrb82y7nlaaaq2qsly7f3wa8jw1bagjax4rwvld0vim"; + rev = "232ab0b3f6d502de61ebe76681a6a04d4223b877"; + sha256 = "0is772r0b7i8rvra9zb94g9aczv8b6q0dmdk67wbli5rv5drfjyq"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/82d86dae4ad8efc8ef342883c164c56e43079171/recipes/cliphist"; @@ -10716,12 +11062,12 @@ melpaBuild { pname = "clj-refactor"; ename = "clj-refactor"; - version = "20180826.1449"; + version = "20181224.510"; src = fetchFromGitHub { owner = "clojure-emacs"; repo = "clj-refactor.el"; - rev = "ec158357c4f7a375bc47f89de71ea28028a3bfa0"; - sha256 = "06iymh1n3kyfw4q6kwghqilas1wvpsj5ryvkmgh7lg4da97037fx"; + rev = "feb78480422b715ab9246648d1d4faca2a1eb029"; + sha256 = "104jwdp6awzjmivlwv7x42dr7vnhf8g7nq6h21p5l4kh1l3f95nh"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/e608f40d00a3b2a80a6997da00e7d04f76d8ef0d/recipes/clj-refactor"; @@ -10902,33 +11248,6 @@ license = lib.licenses.free; }; }) {}; - clojure-cheatsheet = callPackage ({ cider - , fetchFromGitHub - , fetchurl - , helm - , lib - , melpaBuild }: - melpaBuild { - pname = "clojure-cheatsheet"; - ename = "clojure-cheatsheet"; - version = "20180201.4"; - src = fetchFromGitHub { - owner = "clojure-emacs"; - repo = "clojure-cheatsheet"; - rev = "85c382317a56bbdfac03ae95999c28fc0cde65d7"; - sha256 = "0w9l6nz583qyldz44jqdh4414rgm6n2fzbaj5hsr5j1bkdizq7xl"; - }; - recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/0569da79bd8145df334965c5d4364a50b6b548fa/recipes/clojure-cheatsheet"; - sha256 = "05sw3bkdcadslpsk64ds0ciavmdgqk7fr5q3z505vvafmszfnaqv"; - name = "recipe"; - }; - packageRequires = [ cider helm ]; - meta = { - homepage = "https://melpa.org/#/clojure-cheatsheet"; - license = lib.licenses.free; - }; - }) {}; clojure-mode = callPackage ({ emacs , fetchFromGitHub , fetchurl @@ -10937,12 +11256,12 @@ melpaBuild { pname = "clojure-mode"; ename = "clojure-mode"; - version = "20180827.1127"; + version = "20181119.400"; src = fetchFromGitHub { owner = "clojure-emacs"; repo = "clojure-mode"; - rev = "aecb12973d2b090f8675e8926d77a68269be55a2"; - sha256 = "0k5rlipjij4sjvd8vizzldv3fhm48b7s9vi80gaf2jh2fzih02jb"; + rev = "0d2e6a6d744c31b2c0992e5a7a0eb348daa29b7d"; + sha256 = "0qal0147bl8nr6njy0a2bj7g8f0p07qi1l59ipyjj0ghza85qz0c"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/5e3cd2e6ee52692dc7b2a04245137130a9f521c7/recipes/clojure-mode"; @@ -11045,12 +11364,12 @@ melpaBuild { pname = "clomacs"; ename = "clomacs"; - version = "20180901.1241"; + version = "20190102.1411"; src = fetchFromGitHub { owner = "clojure-emacs"; repo = "clomacs"; - rev = "7b63b802318e3bcae1591f868b2493246cc98310"; - sha256 = "0lhayg3f724iik11jl394jj80kbi4dq7kdasl4f0jm1yarcp8p2n"; + rev = "b450edfe25271ff922538426f85c649f33f71d50"; + sha256 = "1shnzkici3sjm4n6q8xcxvdd3bhbi7qx8jbjcnwmccr6dwgqwava"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/345f9797e87e3f5f957c167a5e3d33d1e31b50a3/recipes/clomacs"; @@ -11072,12 +11391,12 @@ melpaBuild { pname = "closql"; ename = "closql"; - version = "20180807.2141"; + version = "20181031.1458"; src = fetchFromGitHub { owner = "emacscollective"; repo = "closql"; - rev = "edb441335b98c71516046cfe8d2c8c1c2cfd8c5a"; - sha256 = "0rp3ny5djsrsa437cm6dna8vj7784y89738rxcsxd1w1x8h6jbn0"; + rev = "012b94f8695e194455111fd54eff0b94dd0dd0db"; + sha256 = "1xhpfjjkjqfc1k2rj77cscclz5r7gpvv3hi202x178vdcpipjwar"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/2df16abf56e53d4a1cc267a78797419520ff8a1c/recipes/closql"; @@ -11230,12 +11549,12 @@ melpaBuild { pname = "cmake-ide"; ename = "cmake-ide"; - version = "20180713.813"; + version = "20181023.730"; src = fetchFromGitHub { owner = "atilaneves"; repo = "cmake-ide"; - rev = "0fa6258692908c4c461d46827db0be6cf0a5d5b1"; - sha256 = "0jnhxz6f04f4ckxljhn0sraw3z6w2w8yjfksx2wdggwi1qhvn3vh"; + rev = "53cda742eadb5bdb5d60ac089717154b34694fbe"; + sha256 = "1h7932f2mywghng7yacnydlwrjbrrg5rqimwas2rxdndg5zcfci7"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/17e8a8a5205d222950dc8e9245549a48894b864a/recipes/cmake-ide"; @@ -11489,12 +11808,12 @@ melpaBuild { pname = "code-stats"; ename = "code-stats"; - version = "20180810.542"; + version = "20181206.22"; src = fetchFromGitHub { owner = "xuchunyang"; repo = "code-stats-emacs"; - rev = "8ffa1a24206565fe52abec1f1f0458fa3adb253f"; - sha256 = "0gd6xdrx6gbxqn63rrbcca0852ww8vah41hv6azhjhrfg2h1sgnk"; + rev = "71220f4e3afaf175b2ca49139c713774e49d294b"; + sha256 = "1mz1cnfcvl6zp2m32gzh37bz7sc48q5bqpzncmawq4phm172183s"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/20af5580926e9975605c0a245f6ac15c25f4921e/recipes/code-stats"; @@ -11532,27 +11851,27 @@ license = lib.licenses.free; }; }) {}; - codesearch = callPackage ({ elog - , fetchFromGitHub + codesearch = callPackage ({ fetchFromGitHub , fetchurl , lib + , log4e , melpaBuild }: melpaBuild { pname = "codesearch"; ename = "codesearch"; - version = "20180508.822"; + version = "20181006.731"; src = fetchFromGitHub { owner = "abingham"; repo = "emacs-codesearch"; - rev = "e40efc62e9333db0593bd81b5c78d08b19bfb193"; - sha256 = "04xivg6f19mlpsv77jwasg4ii9vlv8amblm03siwhx53ib9wlcyc"; + rev = "f6eb96f034a925444412cfa03e45e0ccbbafe3f2"; + sha256 = "1xdkm1f04z1h3ivd6zm8hckf3n3fbi5rwybg4dwi5mim6w84i7j9"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/0da1c6971ac2d3e9ee67731d00a9e8ca2d169826/recipes/codesearch"; sha256 = "1zm7fqwiknk07c8aks1silnkxifkfbdzvbzg77wrap48k8mnw03l"; name = "recipe"; }; - packageRequires = [ elog ]; + packageRequires = [ log4e ]; meta = { homepage = "https://melpa.org/#/codesearch"; license = lib.licenses.free; @@ -11725,12 +12044,12 @@ melpaBuild { pname = "color-identifiers-mode"; ename = "color-identifiers-mode"; - version = "20180504.926"; + version = "20181120.1151"; src = fetchFromGitHub { owner = "ankurdave"; repo = "color-identifiers-mode"; - rev = "60ae3ab0fdffe0efae7e08950d7b2a96f4ea49e2"; - sha256 = "0f2ji7ip1cm25fbna6yib37fjc4f1pafh9zld6a61ajgy1b3wjda"; + rev = "4ba39f0274e1f85e50c956c507f942d950891a20"; + sha256 = "102vyyal2zv8smbc7a362ibk5kl5nylplfjjx9w8r5pyapygq7mq"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/5c735755e414fdf169aca5ec6f742533d21472e0/recipes/color-identifiers-mode"; @@ -11777,14 +12096,14 @@ ename = "color-theme"; version = "20080305.34"; src = fetchFromGitHub { - owner = "emacsorphanage"; + owner = "emacsattic"; repo = "color-theme"; rev = "f6bbc9eb7a136dd5f6e094cf1e9072b78a05e2de"; sha256 = "1jlwz8wyilrry13pihmpa9v7zn4l4r6hrxr8qf3l7yinbhzs70p1"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/be81fe3d1594473cb857d6d8d1345b60e512b802/recipes/color-theme"; - sha256 = "1j5gdx452fzk20cdcy09spp1vbzxdqq573j3yamnw7gkppbc6298"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/90fc6a19838f8e5ffe3b96747784d2f5628f7434/recipes/color-theme"; + sha256 = "0sgjyiqi65ylvd926ywfjzh752bpch3szvx4z3la1r9gpkrnwspd"; name = "recipe"; }; packageRequires = []; @@ -11877,12 +12196,12 @@ melpaBuild { pname = "color-theme-sanityinc-solarized"; ename = "color-theme-sanityinc-solarized"; - version = "20160429.1903"; + version = "20181021.1355"; src = fetchFromGitHub { owner = "purcell"; repo = "color-theme-sanityinc-solarized"; - rev = "6d1cf921881a0db6286ad6904aff2d17b2a335b3"; - sha256 = "0cw1al8dan7vglkm33wkznvmyma903ckd95l1ns6qmf1d55lnpig"; + rev = "fa2afc66beebdf7936b9f1391878798d6426730c"; + sha256 = "0fw2x763xfs8c8xw5ard46hc7ypfyx5nc3d3r2v17vbq19syy550"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/cae2ac3513e371a256be0f1a7468e38e686c2487/recipes/color-theme-sanityinc-solarized"; @@ -11902,12 +12221,12 @@ melpaBuild { pname = "color-theme-sanityinc-tomorrow"; ename = "color-theme-sanityinc-tomorrow"; - version = "20180804.345"; + version = "20181222.449"; src = fetchFromGitHub { owner = "purcell"; repo = "color-theme-sanityinc-tomorrow"; - rev = "f45776485147b92fee9e09eaf99f91c2d4970098"; - sha256 = "1s0bqd2yp1fg2hn8ji79n0m9h6qplzd17zhy836wg3adya737cy1"; + rev = "791e282b504df36ea97b9602316be5125715a08f"; + sha256 = "1nb31dmwzzdfl07hiamzncc9x40ydsbdq27f6rzzq0q5gwflcwip"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/cae2ac3513e371a256be0f1a7468e38e686c2487/recipes/color-theme-sanityinc-tomorrow"; @@ -12032,12 +12351,12 @@ melpaBuild { pname = "com-css-sort"; ename = "com-css-sort"; - version = "20180607.1808"; + version = "20181206.859"; src = fetchFromGitHub { owner = "jcs090218"; repo = "com-css-sort"; - rev = "1564c035039a053936d186b4db7a71b34db99200"; - sha256 = "15caqg1sdd5kc81ipi9x2crqfhm6sdgwgvvk0gxx8dsr93rg22zy"; + rev = "8a6e8ba3883cfddc5f1d4149412226602efea931"; + sha256 = "0fzb1lv7l9zrgzxdmrmc34gr4wnzs4ymv2ajyxyny5iyk6wrj3ab"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/5189ae21fc97f6b96024a3279a26e43ddc23ae29/recipes/com-css-sort"; @@ -12241,12 +12560,12 @@ melpaBuild { pname = "commentary-theme"; ename = "commentary-theme"; - version = "20180816.1415"; + version = "20181213.245"; src = fetchFromGitHub { owner = "pzel"; repo = "commentary-theme"; - rev = "1e2a64719b9d52992c6cdb91911ab313bcd69a77"; - sha256 = "1bs7dz10f25pi5wfszxgf6afrsbfw6fwp8sm55fa6c46l3pi9jpm"; + rev = "9a825ae98166c9dbbf106e7be62ee69dd9f0342f"; + sha256 = "1x30iyvvxggbh7xvp8lwpirvpqijchqf2fdaw4xrlbw5vajlaxcx"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/852b5f83c9870209080d2ed39fede3215ae43e64/recipes/commentary-theme"; @@ -12346,12 +12665,12 @@ melpaBuild { pname = "company"; ename = "company"; - version = "20180913.1611"; + version = "20181221.738"; src = fetchFromGitHub { owner = "company-mode"; repo = "company-mode"; - rev = "4205ad678436e0e0d314792cb2ad222541458a16"; - sha256 = "0dz6ilvw6vnm6fcnmrp2g8r4zzl72jiaf042jxvw7rjrznnrmy1y"; + rev = "b696b3943d2a55aed937cb0ba971d6e29b2e3a8b"; + sha256 = "16k498pgpdk4yigsv9rdzxpyhf6fpwfyil0qx08c8zibj8y8a9nj"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/96e7b4184497d0d0db532947f2801398b72432e4/recipes/company"; @@ -12376,12 +12695,12 @@ melpaBuild { pname = "company-anaconda"; ename = "company-anaconda"; - version = "20180610.2321"; + version = "20181025.605"; src = fetchFromGitHub { owner = "proofit404"; repo = "company-anaconda"; - rev = "ef6cbe26af1ee526a38139ed21cec8569c1b989d"; - sha256 = "1dk1gzd59abh123xqb7r8h5flf4f29mljh48qzkx0r7ppqdzqgnz"; + rev = "0ab70de1740e67cee451abcf3685c7525ff9e95a"; + sha256 = "182cijh6l82jj1r7iwd93h3np9c8fvcibjhv7860rk9ik41n7wil"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/0eb23a75c8b57b4af1737c0508f03e66430e6076/recipes/company-anaconda"; @@ -12628,33 +12947,6 @@ license = lib.licenses.free; }; }) {}; - company-childframe = callPackage ({ company-posframe - , emacs - , fetchFromGitHub - , fetchurl - , lib - , melpaBuild }: - melpaBuild { - pname = "company-childframe"; - ename = "company-childframe"; - version = "20180704.2246"; - src = fetchFromGitHub { - owner = "tumashu"; - repo = "company-childframe"; - rev = "562eaa1e3a0c39dd36f10cda37a3724384fde1df"; - sha256 = "0g40i3qwh0wnspwd4a5p08ndfjj21zmqv155c7ngp7bxnhvkn6vh"; - }; - recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/4fda072eb1e3f4feb9ad9834104f748f5b749a0d/recipes/company-childframe"; - sha256 = "1l8bd9fnw49apvwjgrlfywascbczavpaxns2ydymmb6ksj00rvzy"; - name = "recipe"; - }; - packageRequires = [ company-posframe emacs ]; - meta = { - homepage = "https://melpa.org/#/company-childframe"; - license = lib.licenses.free; - }; - }) {}; company-coq = callPackage ({ cl-lib ? null , company , company-math @@ -12667,12 +12959,12 @@ melpaBuild { pname = "company-coq"; ename = "company-coq"; - version = "20180307.510"; + version = "20181107.1336"; src = fetchFromGitHub { owner = "cpitclaudel"; repo = "company-coq"; - rev = "c2bd34f79472c27ee6f819820558c8b26f774748"; - sha256 = "1dvd7w93gly70x7j7dsn2n90w7n76k2bp96p4zlzxad94kvdj2a8"; + rev = "24f33527c5917cdd4c3c139f966c49c33b21d4d0"; + sha256 = "1y956x0d42qjl6id8a3qfqaa9bzbnradii67g7bl2673kvb0lf63"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/7f89e3097c654774981953ef125679fec0b5b7c9/recipes/company-coq"; @@ -12698,12 +12990,12 @@ melpaBuild { pname = "company-dcd"; ename = "company-dcd"; - version = "20170516.210"; + version = "20181212.2123"; src = fetchFromGitHub { owner = "tsukimizake"; repo = "company-dcd"; - rev = "4832188a9e42287539a69c372fe1643166a6a7aa"; - sha256 = "07caaff8chabrgl4hqanq13p5qhzqx5fcg2synl8856d7v1456vc"; + rev = "678229f2676bdfbe588f066e9cb0e7d5eed050f8"; + sha256 = "14h6v6djc2j97j0d910vjc2vcxlg8dnb1fxp94nlldzd6vxwccpw"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/ad5be8c53911271fba03a88da7e9d518c6508ffe/recipes/company-dcd"; @@ -12843,12 +13135,12 @@ melpaBuild { pname = "company-emoji"; ename = "company-emoji"; - version = "20180909.819"; + version = "20180925.1308"; src = fetchFromGitHub { owner = "dunn"; repo = "company-emoji"; - rev = "271909be44f86bcc294739ca45992cdc3caee39f"; - sha256 = "1rihgld1wxwfdpqv7d9gcgd8xpnms5kpw61z30y18fmkxhhmid3c"; + rev = "f0d91d5be0077b20b418a3ba37d36f431fae322f"; + sha256 = "0aqqi1ksyglx7w347a99flpfa9pm1jakdvsgk4jr2ahv6j13nawg"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/5733dccdffe97911a30352fbcda2900c33d79810/recipes/company-emoji"; @@ -13012,14 +13304,14 @@ ename = "company-glsl"; version = "20171015.1049"; src = fetchFromGitHub { - owner = "GuidoSchmidt"; + owner = "guidoschmidt"; repo = "company-glsl"; rev = "a262c12c3bcd0807718c4edcaf2b054e30ef0e26"; sha256 = "0338bym8ifvkgpbc4vyzf3nmlp6rc8lihyxcbym5m08612ln78mk"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/abab3b5a9762639812e2aabf9d288ed367dcdc22/recipes/company-glsl"; - sha256 = "0lzy3xln5780yjwhhcz6vnc2j0k0rc7jfvqc8bv0xfabikgadmkn"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/35763febad20f29320d459394f810668db6c3353/recipes/company-glsl"; + sha256 = "1wzfdp6xz4nydfdcba8vs1za60lbfa0v4b8007dzn2fyg26rl326"; name = "recipe"; }; packageRequires = [ company emacs glsl-mode ]; @@ -13037,16 +13329,16 @@ melpaBuild { pname = "company-go"; ename = "company-go"; - version = "20170825.943"; + version = "20180427.1156"; src = fetchFromGitHub { - owner = "nsf"; + owner = "mdempsky"; repo = "gocode"; - rev = "84b76ec55b44739143088371a34ef30a4719dfe4"; - sha256 = "0ig9jsx9gv3cya11r0w07xpby9rzlh3iz02mir0z7ffnf8qawmrc"; + rev = "bf5e5d0215cbdfb334c65c2c6aca36ca89e429a2"; + sha256 = "1bffkyxj3k9dbmdlpj97lq5sih9vlm5zk4fsdzczkyiln8k5jaww"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/04867a574773e8794335a2664d4f5e8b243f3ec9/recipes/company-go"; - sha256 = "1ncy5wlg3ywr17zrxb1d1bap4gdvwr35w9a8b0crz5h3l3y4cp29"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/ef45683cbfe82bf8a9d6f3f1c59e3cf340accbe3/recipes/company-go"; + sha256 = "1zhdckq1c9jzi5cf90w2m77fq6l67rjri4lnf8maq82gxqzk6wa5"; name = "recipe"; }; packageRequires = [ company go-mode ]; @@ -13213,12 +13505,12 @@ melpaBuild { pname = "company-lsp"; ename = "company-lsp"; - version = "20180827.2138"; + version = "20181225.2309"; src = fetchFromGitHub { owner = "tigersoldier"; repo = "company-lsp"; - rev = "b93abde5bbc870170d2a2f5aa309be8a9618daf9"; - sha256 = "1jb75km5w2y7iawknyb5nhi1k4mlll4srd6vaf4zm7frmx50jwyc"; + rev = "7167fa4547a83d6e07196ebf0b05c384b0a9a2c6"; + sha256 = "1gxcj8mir4mdf4m4hh9napjaszcps00iyxq1rp01hnhq71iqzsms"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/5125f53307c1af3d9ccf2bae3c25e7d23dfe1932/recipes/company-lsp"; @@ -13406,12 +13698,12 @@ melpaBuild { pname = "company-php"; ename = "company-php"; - version = "20180510.1500"; + version = "20181109.1903"; src = fetchFromGitHub { owner = "xcwen"; repo = "ac-php"; - rev = "e452a20a9f94113260b9cba9af7fb44cc8c647ef"; - sha256 = "08gvn4gq2j349rz24ask6nzqnvw15p9c8r2lby4n6n0zc6iaxzm5"; + rev = "11234d073f363edff255e8632b728777e2807d01"; + sha256 = "15rinvamhzbx0n1fxwpq7nbjqgqvksgf4q8k3lkyy6ifchwiqys4"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/ac283f1b65c3ba6278e9d3236e5a19734e42b123/recipes/company-php"; @@ -13424,6 +13716,35 @@ license = lib.licenses.free; }; }) {}; + company-phpactor = callPackage ({ cl-lib ? null + , company + , emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild + , phpactor }: + melpaBuild { + pname = "company-phpactor"; + ename = "company-phpactor"; + version = "20181110.102"; + src = fetchFromGitHub { + owner = "emacs-php"; + repo = "phpactor.el"; + rev = "eda8b34a729b3acb641aafa30552c501dec27d37"; + sha256 = "1i96v9167hsw5wwmlq07kiyxqz035ianid1cj8ym17bfj0js0j97"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/dc6edd22befea0aee9b11bc8df7d42c400e12f43/recipes/company-phpactor"; + sha256 = "1a6szs85hmxm2xpkmc3dyx2daap7bjvpnrl4gcmbq26zbz2f0z0a"; + name = "recipe"; + }; + packageRequires = [ cl-lib company emacs phpactor ]; + meta = { + homepage = "https://melpa.org/#/company-phpactor"; + license = lib.licenses.free; + }; + }) {}; company-plsense = callPackage ({ cl-lib ? null , company , dash @@ -13491,12 +13812,12 @@ melpaBuild { pname = "company-posframe"; ename = "company-posframe"; - version = "20180610.1010"; + version = "20181222.18"; src = fetchFromGitHub { owner = "tumashu"; repo = "company-posframe"; - rev = "47861f501891d3c67958353c25f4dce13b386c3d"; - sha256 = "03fs5w72wfnk0mr31q5kczlpk0rbim850pj6wzr0f6zn8j0p2lci"; + rev = "91e8ce6823d1174399f8908e2f70ebcb693aa56d"; + sha256 = "0d1qmc0km4hkbhsab66901gjcq5v7qvxzhx77n49vc59q68jnqaf"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/68c1203ae710e5f7af3f0e5e2877aba6deaf1ac8/recipes/company-posframe"; @@ -13519,12 +13840,12 @@ melpaBuild { pname = "company-prescient"; ename = "company-prescient"; - version = "20180823.1838"; + version = "20181220.1624"; src = fetchFromGitHub { owner = "raxod502"; repo = "prescient.el"; - rev = "1e0db9451e75f0db29668bebe98dfa747c6b4bcf"; - sha256 = "0zm9phc4cv7ldgyngcj84fxc1j0nh12c05lxiwv0n1xb8wc6awvf"; + rev = "c395c6dee67cf269be12467b768343fb10f2399f"; + sha256 = "0zh0g9vxgqbs48li91ar5swn9mrskmqc0kk7sbymkclkb60xcjs9"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/b92c34e493bbefab1d7747b0855d1ab2f984cb7c/recipes/company-prescient"; @@ -13631,12 +13952,12 @@ melpaBuild { pname = "company-reftex"; ename = "company-reftex"; - version = "20180713.141"; + version = "20181222.106"; src = fetchFromGitHub { owner = "TheBB"; repo = "company-reftex"; - rev = "d96ce340851499452c8d4d64bee80a3d7f9e9275"; - sha256 = "1bh9h6frp6yibw1qyca1f2s375s5pn27ry2n4j036c5r4kx4wpx6"; + rev = "33935e96540201adab43f3a765d62289eba9e286"; + sha256 = "1sp4109fbj6cxq6v9lmkpkrlr6is340ibaqpslkkjyacjv6sv4cm"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/84c938612d46d45b5bb05ee35178eaa2284023e0/recipes/company-reftex"; @@ -13752,16 +14073,16 @@ melpaBuild { pname = "company-solidity"; ename = "company-solidity"; - version = "20180407.1344"; + version = "20181117.718"; src = fetchFromGitHub { - owner = "ssmolkin1"; - repo = "company-solidity"; - rev = "8ea7b96c7a17f4a11ca47021067350bc3c6606c5"; - sha256 = "1gz43k7jckk520nvx124i4ap8bi61ah70wj3d40cbq77a3z8lmkw"; + owner = "ethereum"; + repo = "emacs-solidity"; + rev = "d6c48a1cb64d3c8a825dc0d06c839f2cacd4d289"; + sha256 = "14v71xf3z60s1fhpsz8b3l1v4na2ds0ddcp41y412fnrg4scbrhr"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/ef246601ff6d92d6dfcd809f637e50d9838da0b8/recipes/company-solidity"; - sha256 = "076z5jqh486k2lkh9rgbhs71bws4fba68pjybr9yyf0sdc5m7kc6"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/e561d869f4e32bad5d1a8678f67e591ff586d6de/recipes/company-solidity"; + sha256 = "1rkja48j2m0g0azc34i715ckkqwjkb44y3b4a9vlxs8cjqza4w7q"; name = "recipe"; }; packageRequires = [ cl-lib company solidity-mode ]; @@ -13854,6 +14175,36 @@ license = lib.licenses.free; }; }) {}; + company-tabnine = callPackage ({ cl-lib ? null + , company + , emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild + , s + , unicode-escape }: + melpaBuild { + pname = "company-tabnine"; + ename = "company-tabnine"; + version = "20181207.1531"; + src = fetchFromGitHub { + owner = "TommyX12"; + repo = "company-tabnine"; + rev = "2d63df791027ec2bcc8956be6b7078d17f95217c"; + sha256 = "06p7z0nnal26xb3kkh3ik0q42wkn146mr15bz3c1amfpkx60y1qi"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/94476897a71a271b985967334632836252eb131b/recipes/company-tabnine"; + sha256 = "1x37xacrscmh9hq9mljbgdcl3pwfn2kmn567qv0jqys8ihbzi3v7"; + name = "recipe"; + }; + packageRequires = [ cl-lib company emacs s unicode-escape ]; + meta = { + homepage = "https://melpa.org/#/company-tabnine"; + license = lib.licenses.free; + }; + }) {}; company-tern = callPackage ({ cl-lib ? null , company , dash @@ -14067,12 +14418,12 @@ melpaBuild { pname = "composer"; ename = "composer"; - version = "20180819.1821"; + version = "20180923.440"; src = fetchFromGitHub { owner = "emacs-php"; repo = "composer.el"; - rev = "d759562626520a61cdfc358ee8081795874d2450"; - sha256 = "15ga89zxmxfcpb6rkfsa21iv8f7k8x0rjd89f8jydwh1xp85c5x3"; + rev = "6c1578b2352c81cc9a22616a70db2a14b7d2b67f"; + sha256 = "0fijw3kcl4vyc5x7a1syqslsj13mwkq1k3bs4p60v2jg1fxqarrb"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/eb13cb0dba1696cc51132cd1ff723fa17f892a7c/recipes/composer"; @@ -14124,12 +14475,12 @@ melpaBuild { pname = "conda"; ename = "conda"; - version = "20171122.716"; + version = "20181107.1151"; src = fetchFromGitHub { owner = "necaris"; repo = "conda.el"; - rev = "0bba56d80bb959a20838a024b174d1cf1e2cfd07"; - sha256 = "0gr3z9s4qzvkmh7wziw5x77w9vch1riqjv5g1kl995yv7v5lxmnp"; + rev = "ac304a85a1af2e0fb180a3fbe7989c26a5cfee37"; + sha256 = "1c0nl0wfz16qyaq7w4w31kb91ryadyi8i3zx6bsdbh8xbnngl7cy"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/fcf762e34837975f5440a1d81a7f09699778123e/recipes/conda"; @@ -14151,14 +14502,14 @@ ename = "config-general-mode"; version = "20171024.1140"; src = fetchFromGitHub { - owner = "tlinden"; + owner = "TLINDEN"; repo = "config-general-mode"; rev = "b4a8e6ba0bb027a77e4a0f701409f3e57bb2e4c0"; sha256 = "115sk0h6i1bfnxw1v11719926cvnq7gyisjcysvkam40hp3d5fx5"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/6c06831528e4bbc44aae1cc5cd6bec60150ae087/recipes/config-general-mode"; - sha256 = "1408xyzmb5aj1yrlgkymwy5x6rb1a9ynkx2m6hgj38qj6dz44cyy"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/35763febad20f29320d459394f810668db6c3353/recipes/config-general-mode"; + sha256 = "1pqivnyb1yljzs3fd554s0971wr9y6g1dx3lgym9gi5jhpyza38z"; name = "recipe"; }; packageRequires = []; @@ -14248,25 +14599,27 @@ , emacs , fetchFromGitHub , fetchurl + , flycheck + , hydra , lib , melpaBuild - , parsec }: + , s }: melpaBuild { pname = "conllu-mode"; ename = "conllu-mode"; - version = "20180730.1018"; + version = "20181222.1056"; src = fetchFromGitHub { owner = "odanoburu"; repo = "conllu-mode"; - rev = "a752e9f7a04237e70e58beba23871f8fee4fd4e3"; - sha256 = "0nany4lqhn56xan9hjr4cwv77ydgi51aqsm150j0093qsr1a91xp"; + rev = "b301934e852bac8942f671998cfcac669c7ea97c"; + sha256 = "15jfbs5k5anxbcsadvb1sz5a3vm96f976c1iga4k16jz16mkhjxa"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/444f943baddfeafe29708d6d68aeeeedbb7aa7bd/recipes/conllu-mode"; sha256 = "1wffvvs8d0xcnz6mcm9rbr8imyj4npyc148yh0gzfzlgjm0fiz1v"; name = "recipe"; }; - packageRequires = [ cl-lib emacs parsec ]; + packageRequires = [ cl-lib emacs flycheck hydra s ]; meta = { homepage = "https://melpa.org/#/conllu-mode"; license = lib.licenses.free; @@ -14297,6 +14650,32 @@ license = lib.licenses.free; }; }) {}; + constant-theme = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "constant-theme"; + ename = "constant-theme"; + version = "20180921.312"; + src = fetchFromGitHub { + owner = "Jannis"; + repo = "emacs-constant-theme"; + rev = "0feb9f99d708633d62fa548c953ebbe68fd70de0"; + sha256 = "14w92qh791zz22c1r47ncglh92ifgqxmz0pk5w61ka7zi7xqylg1"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/35763febad20f29320d459394f810668db6c3353/recipes/constant-theme"; + sha256 = "13m4r37gscnqg3qmb0rs2r8sslp0irm7n4p6p496mmvljvjmpv6b"; + name = "recipe"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://melpa.org/#/constant-theme"; + license = lib.licenses.free; + }; + }) {}; contextual = callPackage ({ cl-lib ? null , dash , emacs @@ -14525,14 +14904,14 @@ ename = "coq-commenter"; version = "20170822.1609"; src = fetchFromGitHub { - owner = "ailrun"; + owner = "Ailrun"; repo = "coq-commenter"; rev = "7fe9a2cc0ebdb0b1e54a24eb7971d757fb588ac3"; sha256 = "1rq0j6ds9snv21k2lzyja96qxxz8nrai5aj1k1si9zshld28mapx"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/c97d3f653057eab35c612109792884334be556fe/recipes/coq-commenter"; - sha256 = "19726z8yvgwjikbl95smdl60k58a5yf7cjbinnb7251d8mhd8562"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/35763febad20f29320d459394f810668db6c3353/recipes/coq-commenter"; + sha256 = "1d6a40f8b4r8x08sy7qs335c9z744xmll326qzsjmxiqdkjv7h2k"; name = "recipe"; }; packageRequires = [ cl-lib dash s ]; @@ -14601,12 +14980,12 @@ melpaBuild { pname = "counsel"; ename = "counsel"; - version = "20180913.221"; + version = "20181222.1925"; src = fetchFromGitHub { owner = "abo-abo"; repo = "swiper"; - rev = "f969cf8fcb0f4d201e719a2abbfba466fa6187f8"; - sha256 = "042brxz4qlyhpwz71g8pym065dbdqvvkbrascfbnlz28c9rm0rkq"; + rev = "58bf1b94c8346491b906aa306f5ed734be67310c"; + sha256 = "14j28ffkcq485043w6pxgqrn8s8jkp50pny9jzm7ybm2wz62r7i9"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/06c50f32b8d603db0d70e77907e36862cd66b811/recipes/counsel"; @@ -14628,12 +15007,12 @@ melpaBuild { pname = "counsel-bbdb"; ename = "counsel-bbdb"; - version = "20171129.1737"; + version = "20181128.520"; src = fetchFromGitHub { owner = "redguardtoo"; repo = "counsel-bbdb"; - rev = "c86f4b9ef99c9db0b2c4196a300d61300dc2d0c1"; - sha256 = "1dchyg8cs7n0zbj6mr2z840yi06b2wja65k04idlcs6ngy1vc3sr"; + rev = "df2890deb73b09f8055243bd91942ea887d9b7a1"; + sha256 = "0bki658mvlchqf3prkzxz4217a95cxm58c1qmf84yp2n8h6gd0d8"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/0ed9bcdb1f25a6dd743c1dac2bb6cda73a5a5dc2/recipes/counsel-bbdb"; @@ -14657,12 +15036,12 @@ melpaBuild { pname = "counsel-codesearch"; ename = "counsel-codesearch"; - version = "20180913.541"; + version = "20180925.103"; src = fetchFromGitHub { owner = "abingham"; repo = "emacs-counsel-codesearch"; - rev = "504a6f58552294fd0853850bfe4d050ff90cf093"; - sha256 = "02v0cjwvnkasmsqljm510kmz2xifk1x00g51yj9qsn4jh2j14mbm"; + rev = "b7989fad3e06f301c31d5e896c42b6cc549a0e0c"; + sha256 = "1qv82nvj0kddmajm6pniadnz96mqz8rhl0g2w2z5834r48higxqv"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/d3404c3cdfa6654ad80378ab258f0df68a6beeb9/recipes/counsel-codesearch"; @@ -14737,24 +15116,25 @@ , emacs , fetchFromGitHub , fetchurl + , ivy , lib , melpaBuild }: melpaBuild { pname = "counsel-etags"; ename = "counsel-etags"; - version = "20180806.2255"; + version = "20181226.212"; src = fetchFromGitHub { owner = "redguardtoo"; repo = "counsel-etags"; - rev = "0ff874cd5ad5b29ca557685d04087e3eec859fe7"; - sha256 = "1pzi0yz320xy72z65nahrxm2dspnnzz55zxjf01ha5nr1nh01q2h"; + rev = "0bd1bf33088a3e31c01e7f239c5cd9c0b0468ab7"; + sha256 = "1dchql9r4qs9lv71hcpy72mdx83gxmmhyxpxkg836701246x1np1"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/87528349a3ab305bfe98f30c5404913272817a38/recipes/counsel-etags"; sha256 = "1h3dlczm1m21d4h41vz9ngg5fi02g6f95qalfxdnsvz0d4w4yxk0"; name = "recipe"; }; - packageRequires = [ counsel emacs ]; + packageRequires = [ counsel emacs ivy ]; meta = { homepage = "https://melpa.org/#/counsel-etags"; license = lib.licenses.free; @@ -14798,12 +15178,12 @@ melpaBuild { pname = "counsel-notmuch"; ename = "counsel-notmuch"; - version = "20180713.1740"; + version = "20181203.135"; src = fetchFromGitHub { owner = "fuxialexander"; repo = "counsel-notmuch"; - rev = "f4c864eca400abe0bb7420bcee80f2f8259ca0ff"; - sha256 = "0f5w4m5qripca5agbgil0qvd4h9ypi63kpz90n744v60r3lddcjl"; + rev = "a4a1562935e4180c42524c51609d1283e9be0688"; + sha256 = "01k1321d961kc2i660a5595bqk0d85f16snsxngsn5si6y83kqr7"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/54fe0be4e8e8b90cd2dc3cc8b9c573694c8f773b/recipes/counsel-notmuch"; @@ -14853,12 +15233,12 @@ melpaBuild { pname = "counsel-org-clock"; ename = "counsel-org-clock"; - version = "20180623.617"; + version = "20190103.237"; src = fetchFromGitHub { owner = "akirak"; repo = "counsel-org-clock"; - rev = "7b172847f19571fa8f4092899bff75fab0821b07"; - sha256 = "08ci1pb0w1aalhhsg8v0b37xapy72svfkzclk54f3813vxd2naxs"; + rev = "07c761353a7b1ad21c9b037b22e7d2fbde7fbc9b"; + sha256 = "1c67lfpny4jvza1qm1dbc1mm47d5vff69cn4919jbb4sngnbzpfp"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/d21e10ba82b4ae0f8101031be16bc5f7e80ba5d5/recipes/counsel-org-clock"; @@ -14907,12 +15287,12 @@ melpaBuild { pname = "counsel-projectile"; ename = "counsel-projectile"; - version = "20180906.39"; + version = "20181226.714"; src = fetchFromGitHub { owner = "ericdanan"; repo = "counsel-projectile"; - rev = "878f95c55d7647723e679ce7a179d584db0c382d"; - sha256 = "1nmgnfgjxxbw9nbdph7ib2m81qncvayn43hb572b64k81ysvvpdi"; + rev = "b3ea4f242d58ff9b903ece4b0e2513d6aed41578"; + sha256 = "0cakmwfgjp5ibasdjlm6jrwnx1b3c2i2w2rbh9dhwx2fs9p30l07"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/389f16f886a385b02f466540f042a16eea8ba792/recipes/counsel-projectile"; @@ -15174,12 +15554,12 @@ melpaBuild { pname = "cpputils-cmake"; ename = "cpputils-cmake"; - version = "20170819.259"; + version = "20181005.2028"; src = fetchFromGitHub { owner = "redguardtoo"; repo = "cpputils-cmake"; - rev = "4fa37dd075c716f98b67b96f3b6e022730df1c1b"; - sha256 = "194vayk2hvqm2nv1rr3myiadrfvk8fpch1qlbic9bzbgfrl74i41"; + rev = "64b2b05eff5398b4cd522e66efaf14553ab18ff4"; + sha256 = "0kmqk0ba9cacss3m34a8sdnmdir4ci7mv3j176ylm5af0x9yqc45"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/9b84a159e97f7161d0705da5dd5e8c34ae5cb848/recipes/cpputils-cmake"; @@ -15228,12 +15608,12 @@ melpaBuild { pname = "cquery"; ename = "cquery"; - version = "20180811.1431"; + version = "20181203.1029"; src = fetchFromGitHub { owner = "cquery-project"; repo = "emacs-cquery"; - rev = "a803e92e77e1ffc74c13a753c1eb4f6f47127a97"; - sha256 = "0b5f8lk790iavs1fd7hwihqrwx0ipg67hsx7qrs3cw96icl9vjcs"; + rev = "fd4f226b3ded297e3279b77bffc5fd9d5bce37c5"; + sha256 = "0ma6gqndy6n2bx37gw506p9flhp6kcczzkj4mfhzv3s9rklijhdp"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/3cd3bffff0d2564c39735f844f9a02a660272caa/recipes/cquery"; @@ -15439,12 +15819,12 @@ melpaBuild { pname = "crux"; ename = "crux"; - version = "20180611.2355"; + version = "20181108.27"; src = fetchFromGitHub { owner = "bbatsov"; repo = "crux"; - rev = "c79985f69b7cd96edb505199bd751f71ce6d4e58"; - sha256 = "0k58k3vzcxcgjaz230m18piq3gfw8w0h1g3n4jpp447indzwn4rr"; + rev = "308f17d914e2cd79cbc809de66d02b03ceb82859"; + sha256 = "0rf84finwlvmy0xpgyljjvnrijlmkzjyw9rh97svgxp9c1rzfk0x"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/575e3442a925500a5806e0b900208c1e6bfd11ae/recipes/crux"; @@ -15593,12 +15973,12 @@ melpaBuild { pname = "csharp-mode"; ename = "csharp-mode"; - version = "20180831.324"; + version = "20181011.18"; src = fetchFromGitHub { owner = "josteink"; repo = "csharp-mode"; - rev = "20efdc8b9fa21fe4c297cc290c4fe68ef21d896e"; - sha256 = "0bvdqiz28sn9kimd3abvqy23d4sis504qg8g0cnp0ijyb8dzi7cs"; + rev = "239527c1f27cf5246505f1faf23269487fdbfdd2"; + sha256 = "0ygc8mpsmicsm2j50kg22yllbj5ply56cwx9hvb6cflzmwlmgyvw"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/736716bbcfd9c9fb1d10ce290cb4f66fe1c68f44/recipes/csharp-mode"; @@ -15621,12 +16001,12 @@ melpaBuild { pname = "csound-mode"; ename = "csound-mode"; - version = "20180505.1225"; + version = "20180925.1114"; src = fetchFromGitHub { owner = "hlolli"; repo = "csound-mode"; - rev = "5137de36e49b41ec428f35d9bfa08b5cc82e066c"; - sha256 = "0v4yv4v6l0m1rkj3cb35f6hqhvbwh48ii6vb9xnc99r984jrs4f4"; + rev = "9bc2d0badf8316cca2d167348bb81a82e34297c8"; + sha256 = "0r8c82wp1mpx8xvycncni02vymhr81jnxrqi6rr1majpgan5jvb5"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/c940d29de11e43b4abf2901c466c94d426a21818/recipes/csound-mode"; @@ -16133,12 +16513,12 @@ melpaBuild { pname = "cyphejor"; ename = "cyphejor"; - version = "20171231.2218"; + version = "20181231.2304"; src = fetchFromGitHub { owner = "mrkkrp"; repo = "cyphejor"; - rev = "d2faf26420ac16c4056f6eda067b845d33e102cd"; - sha256 = "0vg0n8xcqiv28i3xmnxzji77dbnyxrld4ncdzpa3hpc1j92s9a09"; + rev = "7b1937abcded165efeabf37d26a7194a21cee3e6"; + sha256 = "163mhk7vqga230dz9aqfm01r85x7j3n9bmxiqiazj6p91zq0sxfs"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/ad7cacfa39d8f85e26372ef21898663aebb68e43/recipes/cyphejor"; @@ -16234,12 +16614,12 @@ melpaBuild { pname = "d-mode"; ename = "d-mode"; - version = "20180502.710"; + version = "20181204.2207"; src = fetchFromGitHub { owner = "Emacs-D-Mode-Maintainers"; repo = "Emacs-D-Mode"; - rev = "026fceb78e13d67778d72d90ba83f337d0144707"; - sha256 = "0yxmhdfxp6zplfpq52krx86n5sfa60rc1fjcd09g5f1621m31y70"; + rev = "b5d936dfd4c1d0b68a0d911aadd4ba25df7af0e4"; + sha256 = "0915kb9jcaixgindhj85fmykkhvj31ckp1yg6746fznwdgfrlifv"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/3c13e9ccc358743de660b1f0e89d6bb709c42bff/recipes/d-mode"; @@ -16311,12 +16691,12 @@ melpaBuild { pname = "daemons"; ename = "daemons"; - version = "20180610.810"; + version = "20181231.1157"; src = fetchFromGitHub { owner = "cbowdon"; repo = "daemons.el"; - rev = "dcf42cb3178d7245d6d49de346d5e2b44e5b7498"; - sha256 = "00bkzfaw3bqykcks610vk9wlpa2z360xn32bpsrycacwfv29j7g4"; + rev = "a64a4e55666afea6f5bc8e4b7b08bafdab7c7d04"; + sha256 = "0w9hicarnv517ca93hd7dp5xi3pfm8plv2zk64w9f4kapx6xinkf"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/1f780485e72ae2885f698fdab0156855f70831f1/recipes/daemons"; @@ -16386,12 +16766,12 @@ melpaBuild { pname = "danneskjold-theme"; ename = "danneskjold-theme"; - version = "20180708.724"; + version = "20181101.57"; src = fetchFromGitHub { owner = "rails-to-cosmos"; repo = "danneskjold-theme"; - rev = "abc8c7fbe7ab071b8260e3355051304bb36adbd7"; - sha256 = "1zd6z66hfdb992r85mvjlaqfavyw5g4g6vak38zj8ycbjdj28p59"; + rev = "5c55c2ced259e8bbf658b23fc0cb74946caa009e"; + sha256 = "14zrqvfx4243qd1ziqm76irnwgn00dh94qicl1f8bdksyiaz2mvr"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/557244a3b60c7cd3ca964ff843aa1e9d5a1e32ec/recipes/danneskjold-theme"; @@ -16418,12 +16798,12 @@ melpaBuild { pname = "dante"; ename = "dante"; - version = "20180908.1216"; + version = "20181231.454"; src = fetchFromGitHub { owner = "jyp"; repo = "dante"; - rev = "5cbf6726afe56f99b44b20d655c638292c3de8f9"; - sha256 = "0jzwqm9dwbyhp4758yn2m232k3ql9x2h1w8db5qz0gsr0v8ii677"; + rev = "64e667acdd7efec329bf3049e99418858a13fdff"; + sha256 = "07sxpjcbgzvaac549plhalxkmhp0sd7d5ibmb95ldc3mshgg0y9n"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/5afa8226077cbda4b76f52734cf8e0b745ab88e8/recipes/dante"; @@ -16451,16 +16831,16 @@ melpaBuild { pname = "dap-mode"; ename = "dap-mode"; - version = "20180912.1048"; + version = "20190102.1124"; src = fetchFromGitHub { owner = "yyoncho"; repo = "dap-mode"; - rev = "78f73fc17d4f1c324720af6170447a3bc8d3f62f"; - sha256 = "000ln7wvzsag7dxdzdi9mhznx2c2v3w3l9iw8wn56945x1vmh481"; + rev = "8f07efcee5b46e580f9b7e511f52b5ea20607b07"; + sha256 = "10gh8gyrd7lxv4lc0l3s40xs5k9pbdgws4gimnw5z3fq23bnvndd"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/9b5296ada8eb52689acb1f236e0e74fecbbfd5fb/recipes/dap-mode"; - sha256 = "1hbsmgfgn742fs086m80rjlidglmran0b072f7s8js4c00jy2xdv"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/a50eb6f60824a0eb9baacd694274a1042ffc66ec/recipes/dap-mode"; + sha256 = "1vxqgi50wa151k1gc8ja8nma1v2qrinp26lwrn2w2jlihh1jpb3f"; name = "recipe"; }; packageRequires = [ @@ -16661,12 +17041,12 @@ melpaBuild { pname = "darkokai-theme"; ename = "darkokai-theme"; - version = "20180513.1857"; + version = "20181019.1159"; src = fetchFromGitHub { owner = "sjrmanning"; repo = "darkokai"; - rev = "bd5efef1edd42664bb731abd398d5d71a5d2d145"; - sha256 = "05k892zkdfzz05bypf4qdjm49n5gmf7swml2w80zc88dall3hmk9"; + rev = "b887fc6080f8e021058bff7f53fad84c82c81a7a"; + sha256 = "1rjpzf6n9vclyqfdz1nqaf9ky2jhk9jn1jmx9h2bd4kil9bjbyrm"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/81387a5a70f7c42fbae16b52db765136795a37e1/recipes/darkokai-theme"; @@ -16687,12 +17067,12 @@ melpaBuild { pname = "darktooth-theme"; ename = "darktooth-theme"; - version = "20180725.2002"; + version = "20181013.206"; src = fetchFromGitHub { owner = "emacsfodder"; repo = "emacs-theme-darktooth"; - rev = "ae14a9be19b6fbd287e0f5ad156e7942cd6a5bc6"; - sha256 = "1jisiz0blksjl6d8q7bnvnlfrwalqfpd93fs66i8pgllhf5z7j19"; + rev = "780f9e25ae4abccab4e053f2caba7add4bc9d3be"; + sha256 = "0y19dzr9qd5qxvp8yjgrcawji7ahqcpqy0cbyy4hjbzi48si6126"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/b7f62ac1566ced7332e83253f79078dc30cb7889/recipes/darktooth-theme"; @@ -16717,12 +17097,12 @@ melpaBuild { pname = "dart-mode"; ename = "dart-mode"; - version = "20180731.2049"; + version = "20181230.1856"; src = fetchFromGitHub { owner = "bradyt"; repo = "dart-mode"; - rev = "c11d02ab6a912abb675b0b7e331aca883ffbae30"; - sha256 = "1jpwv6b3kfdajndmxkrlx533b995nhj9qnfz3vh8gs6axamcp6wv"; + rev = "36fe2ce002e616e8ba69eb9b7cb20959023861c1"; + sha256 = "0lmlxlwnssqhcrin7jl9fgxg9sgqn7qgc3d5zq2y27kam8mbnar1"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/3416586d4d782cdd61a56159c5f80a0ca9b3ddf4/recipes/dart-mode"; @@ -16839,6 +17219,34 @@ license = lib.licenses.free; }; }) {}; + dashboard-hackernews = callPackage ({ dashboard + , emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild + , request }: + melpaBuild { + pname = "dashboard-hackernews"; + ename = "dashboard-hackernews"; + version = "20181209.2102"; + src = fetchFromGitHub { + owner = "hyakt"; + repo = "emacs-dashboard-hackernews"; + rev = "0e30d3dfd67d87f970edd025b4739bbb286a5d8c"; + sha256 = "09bwhd7ci767nssn22nalb7k9a65iq2f5k62ap4rv4c4w3w0pv0w"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/a5ba74a9b76458bfd53e9cea7bd704d1488c9c98/recipes/dashboard-hackernews"; + sha256 = "0j5ai05g84cl6dhzw1cjvvhchg0sy7zwv355x87c5mg1kx0mrdpk"; + name = "recipe"; + }; + packageRequires = [ dashboard emacs request ]; + meta = { + homepage = "https://melpa.org/#/dashboard-hackernews"; + license = lib.licenses.free; + }; + }) {}; date-at-point = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -16901,12 +17309,12 @@ melpaBuild { pname = "datetime"; ename = "datetime"; - version = "20180912.1336"; + version = "20181021.1050"; src = fetchFromGitHub { owner = "doublep"; repo = "datetime"; - rev = "a4191272d5ef950712d3d9668209d09db7bfef65"; - sha256 = "0klgjlp3dpj530iq1l4i96adkpas8id27m9iwpng39mhfqhc050a"; + rev = "178befd4881f407ad97c05fadb74589ade7297f2"; + sha256 = "12f5jv6x3lm08lz674783cqppr9khi56s028zc6bndq3qc797h4d"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/91ef4352603cc69930ab3d63f0a90eee63f5f328/recipes/datetime"; @@ -17062,12 +17470,12 @@ melpaBuild { pname = "ddskk"; ename = "ddskk"; - version = "20180706.2232"; + version = "20181220.1202"; src = fetchFromGitHub { owner = "skk-dev"; repo = "ddskk"; - rev = "cb727af4ca4e119be6e9509f14bfd61d9c6b758a"; - sha256 = "0qpgj1zvx2y8rmba4pqiypqi6dalg5lalhfafcvhsnnz1553fp7n"; + rev = "cc3abce75d196d0634270c01ced44a63e7713d8a"; + sha256 = "0c6gfaf2x7310mc8m7pfbp8xw12kna6779r7rwk0va7dr43cvsvq"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/6eccccb79881eaa04af3ed6395cd2ab981d9c894/recipes/ddskk"; @@ -17086,30 +17494,53 @@ , fetchurl , lib , melpaBuild - , projectile , s , spinner }: melpaBuild { pname = "deadgrep"; ename = "deadgrep"; - version = "20180912.1603"; + version = "20181229.548"; src = fetchFromGitHub { owner = "Wilfred"; repo = "deadgrep"; - rev = "ad27fc0009ea591c4f3423e83327fb0acc2b7b4f"; - sha256 = "0mjdm2gxppgbh4dpb95w9g5z6ahla7dih3l8dxv61173vm7v5mm9"; + rev = "b663a8f27513ab68081e2bb46402b74834b5ad65"; + sha256 = "0fg64mi7kx8jpg0316dvlja71n50m5ba52zyscd92r8c2c4znqgr"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/93389fae7233b83ea904e17bdaf83f8247cda3d8/recipes/deadgrep"; sha256 = "01m5ds7lic9g11a5iwzw86k6xcv56wbbzjm1343ckbbi255h9i09"; name = "recipe"; }; - packageRequires = [ dash emacs projectile s spinner ]; + packageRequires = [ dash emacs s spinner ]; meta = { homepage = "https://melpa.org/#/deadgrep"; license = lib.licenses.free; }; }) {}; + debian-el = callPackage ({ fetchgit + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "debian-el"; + ename = "debian-el"; + version = "20181020.813"; + src = fetchgit { + url = "https://salsa.debian.org/emacsen-team/debian-el.git"; + rev = "a499822afc2154ca83edf6a605ed22c5a932fa12"; + sha256 = "0bfgh6v0q93lfd0q628r11jd45cys89z4874a19w61cb0mfpvks0"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/1a381ec81eb160365f478c6a3af638c14558d7d6/recipes/debian-el"; + sha256 = "0x74a4nm2p4w82kzrdqy90969sminsrhdzppld2mg63jg0wxb8ga"; + name = "recipe"; + }; + packageRequires = []; + meta = { + homepage = "https://melpa.org/#/debian-el"; + license = lib.licenses.free; + }; + }) {}; debpaste = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -17402,12 +17833,12 @@ melpaBuild { pname = "deft"; ename = "deft"; - version = "20180902.602"; + version = "20181226.734"; src = fetchFromGitHub { owner = "jrblevin"; repo = "deft"; - rev = "9d31a92ed8407ee92cfd7102538dc9ec6c41559c"; - sha256 = "0cri5rqnv49yv1rhg3d418pprabjhshsc8i3sqs26wav0j02i4yb"; + rev = "f54e8a65a7e75a029657364055420374df45656d"; + sha256 = "1vas6jgwli0jcxmxmcwvzwv4414q8kkmhqfz5m96r7l4lpgcrhdr"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/1e2a0e4698d4e71ec28656594f6a83504a823490/recipes/deft"; @@ -17602,6 +18033,32 @@ license = lib.licenses.free; }; }) {}; + detour = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "detour"; + ename = "detour"; + version = "20181122.1338"; + src = fetchFromGitHub { + owner = "ska2342"; + repo = "detour"; + rev = "f41f17cf1cf4f3db41563ff011786b6567596fb4"; + sha256 = "1mgz2gicp7wm41x8y8q4wwsa92pga67wngpf8473lb2jrzpf78k6"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/010af7946b10ded846225a19d375434b5d9427a8/recipes/detour"; + sha256 = "0w63vqlzkvx54y8y71gzzdyxzm4430bqfyapzyrzrsmxh773hnmn"; + name = "recipe"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://melpa.org/#/detour"; + license = lib.licenses.free; + }; + }) {}; devdocs = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -17612,13 +18069,13 @@ version = "20170731.150"; src = fetchFromGitHub { owner = "xuchunyang"; - repo = "devdocs.el"; + repo = "DevDocs.el"; rev = "a2d51e824f0cc48a9dd611cc740bc8b86143e611"; sha256 = "0nzh7pgvj4cs5d29lrrmbas29xdslgqzsqjmpapzqzbnrgprnbx8"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/a54ff5faeefabf484ef175433cfc2b8317993f74/recipes/devdocs"; - sha256 = "04a1yspk3dwx0lzyg03lrbvig4g6sqmavzwicshdyr7q1bny7ikn"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/35763febad20f29320d459394f810668db6c3353/recipes/devdocs"; + sha256 = "14vab71fy5i1ccmzgfdg37lfs1ix3qwhcyk9lvbahcmwnbnimlzm"; name = "recipe"; }; packageRequires = []; @@ -17660,12 +18117,12 @@ melpaBuild { pname = "dhall-mode"; ename = "dhall-mode"; - version = "20180715.213"; + version = "20181127.1743"; src = fetchFromGitHub { owner = "psibi"; repo = "dhall-mode"; - rev = "5aa24b844ee0371024b7b65d1682984d3c1d82bf"; - sha256 = "0ql595j63n6r7381sw8hvkcy2dsly3fxw8qb5g0w2g2f7902905x"; + rev = "ca4cc8556e890c016b5dcc21e842dc5e7a8a4a19"; + sha256 = "09n5x35a1brk67qlw8qw2xxl13sk336g6xyb5xkg0m8ww0agd58b"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/c7ab435077b2f47d75ddc0ff10c64ee2b46044e2/recipes/dhall-mode"; @@ -17686,12 +18143,12 @@ melpaBuild { pname = "diary-manager"; ename = "diary-manager"; - version = "20180626.1058"; + version = "20181214.1926"; src = fetchFromGitHub { owner = "raxod502"; repo = "diary-manager"; - rev = "01851f42aee0526995ea88c3d42b7fe12e1cb7fd"; - sha256 = "1q1zrqawrr844lzjc5l480im6rjdyagir0dr805vgyv31fhp1vmw"; + rev = "919f724bb58e36b8626dd8d7c8475f71c0c54443"; + sha256 = "12zg022bhfn4gsclb5wk8wh0bqyy0v5j37369haq6rb5jcc6x5fb"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/a014f4d862a2480f7edb1266f79ce0801cca13c2/recipes/diary-manager"; @@ -17713,12 +18170,12 @@ melpaBuild { pname = "dic-lookup-w3m"; ename = "dic-lookup-w3m"; - version = "20170803.354"; + version = "20180526.921"; src = fetchFromGitHub { owner = "emacsorphanage"; repo = "dic-lookup-w3m"; - rev = "79aca5eb9c78e67cb85a386060d48113caad5ec3"; - sha256 = "18l2s37bnnzbgw22mivgw5isxck2y0n3nk7735r4ir5y5wqx88mr"; + rev = "3254ab10cbf0078c7162557dd1f68dac28459cf9"; + sha256 = "0g8kzaxjka7n9jdldh45m22nizgv0m0v94ns7vmmhf1hpsf3zfxz"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/30de78c9cf83de30093a5647976eeaf552d4b2cb/recipes/dic-lookup-w3m"; @@ -17741,12 +18198,12 @@ melpaBuild { pname = "dictcc"; ename = "dictcc"; - version = "20171213.1334"; + version = "20181212.1037"; src = fetchFromGitHub { owner = "cqql"; repo = "dictcc.el"; - rev = "a77cf1fadadcbde762466970b503c8a8916b35b2"; - sha256 = "0aaah14nc8ajqhbjmwp7257k2n8ay6g87spb734kxfs8irzg52fa"; + rev = "413bd0b27c35fee75de622ff5c504b6453ca9819"; + sha256 = "061cha9yh4prqqhdvgn43b18h1sirh7l289ygckf2zqw50klx82d"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/5e867df96915a0c4f22fdccd4e2096878895bda6/recipes/dictcc"; @@ -17795,12 +18252,12 @@ melpaBuild { pname = "diff-hl"; ename = "diff-hl"; - version = "20180201.355"; + version = "20181218.1034"; src = fetchFromGitHub { owner = "dgutov"; repo = "diff-hl"; - rev = "190622d3fa2c3237529ec073a8fa00aee06023a1"; - sha256 = "0jh270anr2ralixgwsc3wn48jnw3qwz6m18lg0sgwgzyajh0fpb9"; + rev = "2cddce48d472111f178da84d44656f92012aa64b"; + sha256 = "1ghkkg1cp8s8q8sjfb1l523p8xpqzqgq8rwb1lcvrmf5wszm1fwf"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/855ea20024b606314f8590129259747cac0bcc97/recipes/diff-hl"; @@ -18163,12 +18620,12 @@ melpaBuild { pname = "dired-atool"; ename = "dired-atool"; - version = "20180302.2340"; + version = "20181228.622"; src = fetchFromGitHub { owner = "HKey"; repo = "dired-atool"; - rev = "b92e0106827d34fa686e189c7e9a537a3a947a8b"; - sha256 = "1i40zd7y1jf9skr3wi2zqv4awrgff244p1h89r707aq67v1j19yk"; + rev = "09dbb769fe02f546da470369a12468ab4a0cceb2"; + sha256 = "0j2dz4vy4i22185hhlwg2kprpis97xb12qvfdhvdcnz2vwy61sxa"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/0fe7b0857828a041ee06b30edd2cd488cc3394c7/recipes/dired-atool"; @@ -18373,12 +18830,12 @@ melpaBuild { pname = "dired-filter"; ename = "dired-filter"; - version = "20180830.1602"; + version = "20180922.407"; src = fetchFromGitHub { owner = "Fuco1"; repo = "dired-hacks"; - rev = "b6f3b7addefa046f22a15e72a25e4368e8a33d5e"; - sha256 = "1afb6mmgnzkl3ywz35cmf5mcra17qh0wm44rnb5nw7s7k8wxqrhz"; + rev = "65ccc2487e87b11bc7ca1c0d3118003dcfd0a71b"; + sha256 = "1fzzyp0lizk5avz96aa4k9yrabljjv69x9462fdxfpjh7hyb5zqf"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/568e524b7bdf91b31655bdbb30fe9481d7a0ffbf/recipes/dired-filter"; @@ -18554,12 +19011,12 @@ melpaBuild { pname = "dired-narrow"; ename = "dired-narrow"; - version = "20170309.329"; + version = "20181114.923"; src = fetchFromGitHub { owner = "Fuco1"; repo = "dired-hacks"; - rev = "342d75f1240ebe17959ec25a5b050b40156e10cb"; - sha256 = "18s8jax1k1p1x3r2rl398r1cxy0i2ss9vv23bgv3dna4hvwv65jc"; + rev = "c7184dc8f6ed3f2330db8d8f21f01c4b08056dd3"; + sha256 = "1i5a6srd3fpqdvvhyv0swybznimx9ilpm3sd76ha3shispyij1x5"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/8994330f90a925df17ae425ccdc87865df8e19cd/recipes/dired-narrow"; @@ -18581,12 +19038,12 @@ melpaBuild { pname = "dired-open"; ename = "dired-open"; - version = "20160205.1213"; + version = "20180922.413"; src = fetchFromGitHub { owner = "Fuco1"; repo = "dired-hacks"; - rev = "49bb19a92a4256057f151da9ad6d0a91d46dacc0"; - sha256 = "0hdpn2q55qqvqffb70c8z72ah516l1d3gbzibrr5d0i31xggx4g3"; + rev = "a45737d3a5aaac6928ebd7af041e5603dffaca64"; + sha256 = "1bhz0x7sa4a56f5ha8h9w36y5pirvzhkhczyfwf4z74j4z5z44sm"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/568e524b7bdf91b31655bdbb30fe9481d7a0ffbf/recipes/dired-open"; @@ -18687,16 +19144,16 @@ melpaBuild { pname = "dired-recent"; ename = "dired-recent"; - version = "20180527.1259"; + version = "20180921.1538"; src = fetchFromGitHub { - owner = "vifon"; + owner = "Vifon"; repo = "dired-recent.el"; - rev = "22104c87593f24ec513dfdf97fc4c8c91defec33"; - sha256 = "0ddpsfq1frzx9nkiakkrxm8x6xg8f5fpvqlln8ksys7x2cmzk092"; + rev = "b67f0fd346b03012f3c31d0a979d16290140557b"; + sha256 = "0nnaxynvwz346mr26l1whkd6myynr5fl0mhih3q1bkwsd93s0k4q"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/d717543b63f9eb1ed6b8f78de84da717d3b8e4bc/recipes/dired-recent"; - sha256 = "1hspi9bazbij9h05qaljgn5035p409w28mzvmrl4j6isx306s61l"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/35763febad20f29320d459394f810668db6c3353/recipes/dired-recent"; + sha256 = "1qvw7m6wzahc0xmf37cyl9lv1k9442j0kkzx6dl6f0wclw0v6hgs"; name = "recipe"; }; packageRequires = [ emacs ]; @@ -18705,6 +19162,31 @@ license = lib.licenses.free; }; }) {}; + dired-rifle = callPackage ({ fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "dired-rifle"; + ename = "dired-rifle"; + version = "20181012.1431"; + src = fetchFromGitHub { + owner = "Vifon"; + repo = "dired-rifle.el"; + rev = "a4f7b1e798397688b9c00d3507fcd395ece17a40"; + sha256 = "09jp54drbx1hb4fj6bzh8ava7nk56pp500xsa9712vscg1f38fpz"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/35763febad20f29320d459394f810668db6c3353/recipes/dired-rifle"; + sha256 = "1x6i68i7f1c3k0w3w4zph16s046ccajyb2641fx0j8dl5367qgbc"; + name = "recipe"; + }; + packageRequires = []; + meta = { + homepage = "https://melpa.org/#/dired-rifle"; + license = lib.licenses.free; + }; + }) {}; dired-rsync = callPackage ({ dash , emacs , fetchFromGitHub @@ -18742,12 +19224,12 @@ melpaBuild { pname = "dired-sidebar"; ename = "dired-sidebar"; - version = "20180902.900"; + version = "20181111.940"; src = fetchFromGitHub { owner = "jojojames"; repo = "dired-sidebar"; - rev = "4e0c89cf99d3176809275f53571d8ca89f3f40b9"; - sha256 = "0ckzs2bazvd8297p3dgr2aphvywxsjykz8v6v876wyf0rsx9inan"; + rev = "f7782416e5e8e5018f775106dc61dd3a4e5dda84"; + sha256 = "0vl5rpdgr0p5airh7l4glc03hghb0rmjgdxgk1l1g4a58m8cbhga"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/30e15c8361b01195f198197e704828fbcac0e8d6/recipes/dired-sidebar"; @@ -18794,12 +19276,12 @@ melpaBuild { pname = "dired-subtree"; ename = "dired-subtree"; - version = "20170910.1521"; + version = "20180922.915"; src = fetchFromGitHub { owner = "Fuco1"; repo = "dired-hacks"; - rev = "3e7d46f898eba8611eafbfecf5333cc2325f89f5"; - sha256 = "1z2jc221cbgmy0rqb4ns5pq6fmfl7li3p9xhy6if2v8r82m5yn4q"; + rev = "c5e9dcdf2ee6fd5660e2bfbb8c635674053df7c9"; + sha256 = "1qcsklrvs8dajj7nyhd70ql4df3ayjkgxyf8ldm48ajms5qslkfb"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/d6a947ac9476f10b95a3c153ec784d2a8330dd4c/recipes/dired-subtree"; @@ -19053,12 +19535,12 @@ melpaBuild { pname = "disable-mouse"; ename = "disable-mouse"; - version = "20171226.1715"; + version = "20181225.1406"; src = fetchFromGitHub { owner = "purcell"; repo = "disable-mouse"; - rev = "541363bd6353b8b05375552bab884a6315ea545c"; - sha256 = "1grs3cz2zdw49frvxy4vc1z3ld804kk5g2ad6ln5grprcd188bz9"; + rev = "236d9b9d03544f92ebf44a2861c469c685857b67"; + sha256 = "0lpmjzwzbpnhkwrwxai0g35mglhbccnlsc18zgf2rfhi8ggfla9b"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/dbbc396373212fdf731e135cde391f27708ff015/recipes/disable-mouse"; @@ -19306,6 +19788,34 @@ license = lib.licenses.free; }; }) {}; + dist-file-mode = callPackage ({ cl-lib ? null + , emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild + , s }: + melpaBuild { + pname = "dist-file-mode"; + ename = "dist-file-mode"; + version = "20180829.2118"; + src = fetchFromGitHub { + owner = "emacs-php"; + repo = "dist-file-mode.el"; + rev = "e1ce8f592bc5d4d86d2f09e334728ac0d524c761"; + sha256 = "09rp83d81y9mm81isrwvacl21vgah7nhi5r4j2xbp13kgdn7my1w"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/dd10fbed2810a642600dba9dfe320fa6299e6d34/recipes/dist-file-mode"; + sha256 = "1gbnkb0537gw8flv4gdi4jzb7y9dnbf9cfj2jw8y84axyfzbb4mf"; + name = "recipe"; + }; + packageRequires = [ cl-lib emacs s ]; + meta = { + homepage = "https://melpa.org/#/dist-file-mode"; + license = lib.licenses.free; + }; + }) {}; distel-completion-lib = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -19381,6 +19891,7 @@ }; }) {}; dix = callPackage ({ cl-lib ? null + , emacs , fetchFromGitHub , fetchurl , lib @@ -19388,19 +19899,19 @@ melpaBuild { pname = "dix"; ename = "dix"; - version = "20170224.615"; + version = "20181210.400"; src = fetchFromGitHub { owner = "unhammer"; repo = "dix"; - rev = "bcc7fd7aef5d25171978c386c620e09d0ba8d2f8"; - sha256 = "12ny1a89xhjcnz03s1bw96y14kqb2w6cpf2rk8lv6kri7dasfq4n"; + rev = "b973de948deb7aa2995b1895e1e62bbe3129b5a5"; + sha256 = "1bjxyidcp7y309asbk4pfb4mzgb8j62fmp3w3zl2nahdgv1rja45"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/149eeba213b82aa0bcda1073aaf1aa02c2593f91/recipes/dix"; sha256 = "0c5fmknpy6kwlz7nx0csbbia1maz0szj7yha1p7wq28s3a5426xq"; name = "recipe"; }; - packageRequires = [ cl-lib ]; + packageRequires = [ cl-lib emacs ]; meta = { homepage = "https://melpa.org/#/dix"; license = lib.licenses.free; @@ -19458,6 +19969,32 @@ license = lib.licenses.free; }; }) {}; + django-commands = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "django-commands"; + ename = "django-commands"; + version = "20181216.1327"; + src = fetchFromGitHub { + owner = "muffinmad"; + repo = "emacs-django-commands"; + rev = "eff302cbac0bd797108aafe05cc57c9e9112e381"; + sha256 = "0mvgcmniaj8nllzhm5jv68fad8m41wgadwlw54dyra99wfb30fh8"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/fd217a23a9670c7eb826360b34df1a06ab3e450f/recipes/django-commands"; + sha256 = "17k9bnig2cfnxbbz6k9vdk5k5gzhvn1h5j9wvww7n137c9vv0qmk"; + name = "recipe"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://melpa.org/#/django-commands"; + license = lib.licenses.free; + }; + }) {}; django-manage = callPackage ({ fetchFromGitHub , fetchurl , hydra @@ -19818,12 +20355,12 @@ melpaBuild { pname = "docker"; ename = "docker"; - version = "20180914.742"; + version = "20181215.1026"; src = fetchFromGitHub { owner = "Silex"; repo = "docker.el"; - rev = "c66a56f4af3bdd0e3b3f457867b537494b1abd91"; - sha256 = "0cni8qkfyjdza4jb4rs12ca650j32a8zx0ahgb62xpbrw0qp61xl"; + rev = "eae8586b65289bc0e6a556d1aeb633663bdcd029"; + sha256 = "055bp8p88r0icxkwhls5hwh5gd5di9c7rzd8anshn9qllpdpc3yz"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/6c74bf8a41c17bc733636f9e7c05f3858d17936b/recipes/docker"; @@ -19936,12 +20473,12 @@ melpaBuild { pname = "dockerfile-mode"; ename = "dockerfile-mode"; - version = "20180914.416"; + version = "20181104.1000"; src = fetchFromGitHub { owner = "spotify"; repo = "dockerfile-mode"; - rev = "9f4381178aa03212cd3400c60c0f48ff306a0994"; - sha256 = "0mm87gp2iw313bdhrvhvxq5j9cklh12zvskdcvaxpn1y264rfmsi"; + rev = "7223d92718f78fa3ab15667cdb2ed90cfeb579e7"; + sha256 = "0hmipgl4rk6aih11i8mnspwdijjiwk2y0wns6lzs8bgkvy3c064r"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/1406f5a24115d29e3b140c360a51b977a369e4f9/recipes/dockerfile-mode"; @@ -20039,12 +20576,12 @@ melpaBuild { pname = "doneburn-theme"; ename = "doneburn-theme"; - version = "20180502.1004"; + version = "20181110.1057"; src = fetchFromGitHub { owner = "manuel-uberti"; repo = "doneburn-theme"; - rev = "e27a599166ed5f1993e6eabdb223a0f374516e89"; - sha256 = "0ni6v7n6wfax5f3ndyx2rhizcr067adkiqgcvwl5smdykiw7gbsp"; + rev = "9c31dd6d664436df73c776560c7a660041b3a5bf"; + sha256 = "042jfjlhyk2lc4wbqsyvb09q5k3jsxsdi89ymwl59j0mvhxws7lj"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/7fc483d5f487f462567bba22d611f90fc8a1a709/recipes/doneburn-theme"; @@ -20091,31 +20628,23 @@ , fetchurl , lib , melpaBuild - , projectile , shrink-path }: melpaBuild { pname = "doom-modeline"; ename = "doom-modeline"; - version = "20180911.241"; + version = "20190103.535"; src = fetchFromGitHub { owner = "seagle0128"; repo = "doom-modeline"; - rev = "54c28241253b3036ce76a71ef7c9a3edc14e0847"; - sha256 = "1hprvzm34acirvk9cdk76dqzn9wsnmxds5lad1fhv00sm3lspwcy"; + rev = "804167cf5a05f0b0332fc9bdb8275cefb76622f2"; + sha256 = "15mqn38w6x2wamwp0llg5m9j57cnhm0mzczxp68ni74dwksgrgk7"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/f4f610757f85fb01bd9b1dd212ddbea8f34f3ecd/recipes/doom-modeline"; sha256 = "0pscrhhgk4wpz1f2r94ficgan4f9blbhqzvav1wjahwp7fn5m29j"; name = "recipe"; }; - packageRequires = [ - all-the-icons - dash - eldoc-eval - emacs - projectile - shrink-path - ]; + packageRequires = [ all-the-icons dash eldoc-eval emacs shrink-path ]; meta = { homepage = "https://melpa.org/#/doom-modeline"; license = lib.licenses.free; @@ -20131,12 +20660,12 @@ melpaBuild { pname = "doom-themes"; ename = "doom-themes"; - version = "20180909.1057"; + version = "20181219.1820"; src = fetchFromGitHub { owner = "hlissner"; repo = "emacs-doom-themes"; - rev = "89c4a62ecf46ce4bcb0bc8cb825609729d411b31"; - sha256 = "0fxnf22c68426vy7mvd9szdwm6c88p4l6cp1fxda195l3abzmygz"; + rev = "2f4a0cdf287a086d45a1d9e8536ace6a2e152318"; + sha256 = "1rvqiyc7i2zzzip3aqv8s3ik9qa4qav04fiyps1bvbsv7flzsfg0"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/c5084bc2c3fe378af6ff39d65e40649c6359b7b5/recipes/doom-themes"; @@ -20208,12 +20737,12 @@ melpaBuild { pname = "dotnet"; ename = "dotnet"; - version = "20170827.838"; + version = "20181117.731"; src = fetchFromGitHub { owner = "julienXX"; repo = "dotnet.el"; - rev = "fc1c98025f4f9394ce9b70f9bdafd18d897f27f2"; - sha256 = "1pb45rpr2anqgxrdnp3sz3adx8gvpwvdms47gh75ran4sn191l19"; + rev = "70ed170caeeecba5fddbd82b0d6aec967b6c6ee4"; + sha256 = "1hdghrcyic1jng1k08fsq9fscyqx6s3rmsh9k21b91dfaxyaqj6b"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/6ef473594ec57a747ad7d9d57d7287bcacf4b446/recipes/dotnet"; @@ -20328,6 +20857,31 @@ license = lib.licenses.free; }; }) {}; + dpkg-dev-el = callPackage ({ debian-el + , fetchgit + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "dpkg-dev-el"; + ename = "dpkg-dev-el"; + version = "20181021.1708"; + src = fetchgit { + url = "https://salsa.debian.org/emacsen-team/dpkg-dev-el.git"; + rev = "a80f8ac5d81720cce90cf3bc5fbb45d50b1953d7"; + sha256 = "0358c6gvyb85zr5r79ar3q46c83gz39rawyhgcg1h1hqxgj6a2lx"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/3e057df3608780a6191f761b9a81262c2eaa053c/recipes/dpkg-dev-el"; + sha256 = "1cgfzxlw4m3wsl5fhck08pc2w7fw91mxk58yaprk9lkw4jxd1yjy"; + name = "recipe"; + }; + packageRequires = [ debian-el ]; + meta = { + homepage = "https://melpa.org/#/dpkg-dev-el"; + license = lib.licenses.free; + }; + }) {}; dr-racket-like-unicode = callPackage ({ emacs , fetchFromGitHub , fetchurl @@ -20516,12 +21070,12 @@ melpaBuild { pname = "dropbox"; ename = "dropbox"; - version = "20170502.1722"; + version = "20181208.1448"; src = fetchFromGitHub { owner = "pavpanchekha"; repo = "dropbox.el"; - rev = "d85bbf6caa4203d6088ea29f5c057c1e9bcacd85"; - sha256 = "15fg46pb64sz17sz3bqcpvg0nlsy4fs7ppzdq7q1686q3ihczk31"; + rev = "9fcb70c3e4e32b1612644d65e3b98f00255a40d4"; + sha256 = "0a26cfv7ayalwgg78jm4r6m2wv1wjqy4s0y1lv6j8zv193mqzgdz"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/855ea20024b606314f8590129259747cac0bcc97/recipes/dropbox"; @@ -20610,6 +21164,36 @@ license = lib.licenses.free; }; }) {}; + dtk = callPackage ({ cl-lib ? null + , dash + , emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild + , s + , seq }: + melpaBuild { + pname = "dtk"; + ename = "dtk"; + version = "20181213.946"; + src = fetchFromGitHub { + owner = "dtk01"; + repo = "dtk"; + rev = "7c278b81ffdced72d160e302356ac29fe592dc10"; + sha256 = "13p53byz2fbzyam2p8v4i8c43ffsawacjdjgsris8nrqhgmi0vp6"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/39333468fb6e9493deb86511f0032610a412ec8a/recipes/dtk"; + sha256 = "005x3j5q8dhphhh4c48l6qx7qi3jz9k02m86ww1bzwfzji55p9sp"; + name = "recipe"; + }; + packageRequires = [ cl-lib dash emacs s seq ]; + meta = { + homepage = "https://melpa.org/#/dtk"; + license = lib.licenses.free; + }; + }) {}; dtrace-script-mode = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -20642,12 +21226,12 @@ melpaBuild { pname = "dtrt-indent"; ename = "dtrt-indent"; - version = "20180628.1438"; + version = "20180921.1521"; src = fetchFromGitHub { owner = "jscheid"; repo = "dtrt-indent"; - rev = "084dac7ab36a89d2a7d6cb8f443b1eccbfd189e2"; - sha256 = "1afb7la1nfymhi9pzf00r3hf8w6h7scv22vps8jbijg27kvssk9k"; + rev = "e860db7235147ed5ac1fd8f12b51dbb7cf2e75f1"; + sha256 = "0i98rrk5wil0aldmmh6xkjy1mr4438z0i77l176wgl50dkj7xa6g"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/61bcbcfa6c0f38a1d87f5b6913b8be6c50ef2994/recipes/dtrt-indent"; @@ -20749,12 +21333,12 @@ melpaBuild { pname = "dumb-jump"; ename = "dumb-jump"; - version = "20180911.1231"; + version = "20181221.1547"; src = fetchFromGitHub { owner = "jacktasia"; repo = "dumb-jump"; - rev = "9e79b748746db86e9198a933914a8a9770f57604"; - sha256 = "1gkzzq128h3z8dxc7r4nax3f844kvrl9nx3cmbc46axh3fixs6j9"; + rev = "41ab1d621ad9c1d69572779e9c8e991526dcda40"; + sha256 = "1s91m9qr515d1dxl2qywjx7ymz340482qj9kd2bk72s70xc4z9kb"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/855ea20024b606314f8590129259747cac0bcc97/recipes/dumb-jump"; @@ -20799,12 +21383,12 @@ melpaBuild { pname = "duplicate-thing"; ename = "duplicate-thing"; - version = "20120515.948"; + version = "20181031.800"; src = fetchFromGitHub { owner = "ongaeshi"; repo = "duplicate-thing"; - rev = "f6ed0232fd0653621afe450d53775a32a9d0e328"; - sha256 = "1qaiwm8mf4656gc1pdj8ivgy4abkjsypr52pvf4nrdkkln9qzfli"; + rev = "9d8fd05e3e5caa35d3f2a0c0032c92f0c0908e21"; + sha256 = "05lflc0r84c95vb81wbn44kh11cbgm42zn3y4ss0ychbf13mzdb5"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/be28db1bfbd663af5b5c24bad50372fddd341982/recipes/duplicate-thing"; @@ -20852,11 +21436,11 @@ melpaBuild { pname = "dyalog-mode"; ename = "dyalog-mode"; - version = "20180605.1413"; + version = "20181231.941"; src = fetchhg { url = "https://bitbucket.com/harsman/dyalog-mode"; - rev = "b2322f244c76"; - sha256 = "0vgi6cw14fp8iihzmnk7jifdlbqhhcgnh26r30mnvsbycmbnvf0r"; + rev = "a86091740e75"; + sha256 = "1z2hc6ms454h6f513kkcidq7grfd7d4mjrd3vmwfvkjwh48lp8kz"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/e608f40d00a3b2a80a6997da00e7d04f76d8ef0d/recipes/dyalog-mode"; @@ -20876,12 +21460,12 @@ melpaBuild { pname = "dylan-mode"; ename = "dylan-mode"; - version = "20160405.1514"; + version = "20180927.2205"; src = fetchFromGitHub { owner = "dylan-lang"; repo = "dylan-mode"; - rev = "7e8ba16bf125f0066d3e1caeefaba94a6d32ac72"; - sha256 = "0fxdv594k6p4kv6nc598rw51sy4x10dvbyhzn3gni2linb3v1c5h"; + rev = "a347998ae3ab69c181e09d73f49e11666e89fe71"; + sha256 = "1jyfnxf5rgjl9dhpd2z7kisf2282pgp5z3vpa02qis2kgwfz2gy8"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/94481ba3ebba6a99f11efab5a33e8bc6ea2d857a/recipes/dylan-mode"; @@ -21222,12 +21806,12 @@ melpaBuild { pname = "eacl"; ename = "eacl"; - version = "20180607.658"; + version = "20181216.2127"; src = fetchFromGitHub { owner = "redguardtoo"; repo = "eacl"; - rev = "ccf1401b1acff67fe445c95e8be7b09e8c3ae5d8"; - sha256 = "0v02asdmhj5la9nqck2230s04gf518cjs7wa4lykf8j46bc13vac"; + rev = "e484807861cf6e4dbba41e3d8c343f01b96b9c5f"; + sha256 = "03ydcxkavgzfj8vxwi0a5jn6hp1c4cnf1sk5x9z4m96jac9xpkxq"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/8223bec7eed97f0bad300af9caa4c8207322d39a/recipes/eacl"; @@ -21299,12 +21883,12 @@ melpaBuild { pname = "easy-hugo"; ename = "easy-hugo"; - version = "20180822.1826"; + version = "20181202.31"; src = fetchFromGitHub { owner = "masasam"; repo = "emacs-easy-hugo"; - rev = "31cd8060d4ebb117599b90bee0f470ed148bcfba"; - sha256 = "1sd38chf5zlhyiz2p56bwl35j22h7bfqqrwxxsccyypk217nrvnh"; + rev = "e7b6c75a7e46290d9d0cdac9ec56fbf35a6b9c98"; + sha256 = "1xhyky1593qxq7kfbv2ighx957w5pizkki0q77nrvjxlwbqghgz2"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/855ea20024b606314f8590129259747cac0bcc97/recipes/easy-hugo"; @@ -21325,12 +21909,12 @@ melpaBuild { pname = "easy-jekyll"; ename = "easy-jekyll"; - version = "20180821.1845"; + version = "20181202.145"; src = fetchFromGitHub { owner = "masasam"; repo = "emacs-easy-jekyll"; - rev = "dc8a97d3d512dccf908f63f54a2679e3450fec85"; - sha256 = "0y6d9gmrk9cka1kl09qfjfrm8p70bxy7bisfl0c7ays9ky7pniix"; + rev = "5ee52c0bb01336a03a8f07e072841caf13f86c0a"; + sha256 = "1xibnw3jmmwrc1z7hnifjzhq4mn2834lk7f22x7rwh857iamlply"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/c3f281145bad12c27bdbef32ccc07b6a5f13b577/recipes/easy-jekyll"; @@ -21352,12 +21936,12 @@ melpaBuild { pname = "easy-kill"; ename = "easy-kill"; - version = "20151030.2229"; + version = "20181114.1530"; src = fetchFromGitHub { owner = "leoliu"; repo = "easy-kill"; - rev = "af565684a71b24be1f602fda5b986d841fc33b3a"; - sha256 = "1l4wl9wyjgcvl44iziicz9kzhvdw8pz1hzgd41bbmwj7jrfb3fqv"; + rev = "2a6309d98aa6b71df6bbbcdf15cab3187c521a6b"; + sha256 = "1j8hl0f52fqb21775xn94sf9g12yqyg6z0ibgmxzmnl02ir4xr86"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/7d0a74c2a7d8859e9311bc8d71f5e6cf5a8063b6/recipes/easy-kill"; @@ -21378,12 +21962,12 @@ melpaBuild { pname = "easy-kill-extras"; ename = "easy-kill-extras"; - version = "20180914.54"; + version = "20180920.634"; src = fetchFromGitHub { owner = "knu"; repo = "easy-kill-extras.el"; - rev = "8ec0e03f7de50c292ddaba696d542a33dd583e8e"; - sha256 = "131qkgszb0jq42zpnwirb6wp0g5qd4b4w8km50l3p7c0rlydwj04"; + rev = "b8ce8350cc86e0229f195082557970cd51def960"; + sha256 = "1f8db92zzk8g8yyj0g334mdbgqmzrs8xamm1d24jai1289hm29xa"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/7b55d93f78fefde47a2bd4ebbfd93c028fab1f40/recipes/easy-kill-extras"; @@ -21477,30 +22061,28 @@ license = lib.licenses.free; }; }) {}; - ebib = callPackage ({ dash - , emacs + ebib = callPackage ({ emacs , fetchFromGitHub , fetchurl , lib , melpaBuild - , parsebib - , seq }: + , parsebib }: melpaBuild { pname = "ebib"; ename = "ebib"; - version = "20180817.324"; + version = "20190102.441"; src = fetchFromGitHub { owner = "joostkremers"; repo = "ebib"; - rev = "1b675d32ebeb8b52cd20934b6e4a4914361329fa"; - sha256 = "0g12bg4wnzki6v780zhn8gxr80lrszldq8wpcni20l78kn799rdv"; + rev = "ecac86f83985baba4077d34d6b9a844c5b30ae2f"; + sha256 = "1i97wp0ly7r7cmwiq5q93n24xzm28y5ih96pjrfqjwj0qc1i4cyj"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/4e39cd8e8b4f61c04fa967def6a653bb22f45f5b/recipes/ebib"; sha256 = "1kdqf5nk9l6mr3698nqngrkw5dicgf7d24krir5wrcfbrsqrfmid"; name = "recipe"; }; - packageRequires = [ dash emacs parsebib seq ]; + packageRequires = [ emacs parsebib ]; meta = { homepage = "https://melpa.org/#/ebib"; license = lib.licenses.free; @@ -21544,12 +22126,12 @@ melpaBuild { pname = "eclim"; ename = "eclim"; - version = "20180911.1026"; + version = "20181108.334"; src = fetchFromGitHub { owner = "emacs-eclim"; repo = "emacs-eclim"; - rev = "99fda18e661c3420fe997a217024cf7186303c2b"; - sha256 = "19ri07pqry2v2l5ax0wvsay6fwibdw5s87v3axfjcyvq47qq0k8h"; + rev = "23f5b294f833ce58516d7b9ae08a7792d70022a1"; + sha256 = "17q972354nkkynfjmwih4vp7s5dzdvr3nf7ni3ci095lzb0zzf4g"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/1e9d3075587fbd9ca188535fd945a7dc451c6d7e/recipes/eclim"; @@ -21569,12 +22151,12 @@ melpaBuild { pname = "eclipse-theme"; ename = "eclipse-theme"; - version = "20160430.322"; + version = "20181219.1321"; src = fetchFromGitHub { owner = "abo-abo"; repo = "eclipse-theme"; - rev = "dc54d9312d97210823b922038076e2b1b132eff2"; - sha256 = "03yyagd37l9kgdnkqrkvrcgp5njyl4an0af7cfmcdnpyjghczf4d"; + rev = "4aea0df40cc797ad749a9cf8656baa9f92a3bf97"; + sha256 = "0h8ryj4xkbc7idid30a7kn41m7zy43bhr7p9vw0abxyahmxi87z1"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/81fcf3536ead18a91400f6936b3f789b4b594b9c/recipes/eclipse-theme"; @@ -21683,12 +22265,12 @@ melpaBuild { pname = "edbi-django"; ename = "edbi-django"; - version = "20180627.300"; + version = "20180924.1534"; src = fetchFromGitHub { owner = "proofit404"; repo = "edbi-django"; - rev = "5fe3fe82c8691af91dfc24ad3dc591ca228ec875"; - sha256 = "1ssznmfgr0g497j1syikzj8yndnjby7225fskkd5x2z3krjgs4id"; + rev = "fc0b246c51a817595e803bb68dc5f9bf906b7dc3"; + sha256 = "10f6kfh4yyzw3d9sqx6x88rxkkmh33i2d91whmjq9sd9b9sxjyfp"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/345cafbf5358f8179bcbcb895cace75f289c02f1/recipes/edbi-django"; @@ -21791,14 +22373,14 @@ ename = "ede-php-autoload"; version = "20180901.555"; src = fetchFromGitHub { - owner = "stevenremot"; + owner = "emacs-php"; repo = "ede-php-autoload"; rev = "8a4eeeaa93b8d87b65a107c4ebcbeb14528d9449"; sha256 = "109cys3d4pfaa2c6gb33p5b40cd6wmisx63w20cxpj86drx8iabf"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/8ee9f7fd9cbc3397cd9af34b08b75c3d9d8bc551/recipes/ede-php-autoload"; - sha256 = "0b7qbighncipgfaksvggpyldc5h0wxbjbiyaghglvycc4p1sfjd0"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/afc7ddfcf16e92889e54f30599b576a24823f60d/recipes/ede-php-autoload"; + sha256 = "1255a1drpb50650i0yijahbp97chpw89mi9fvdrk3vf64xlysamq"; name = "recipe"; }; packageRequires = []; @@ -22026,12 +22608,12 @@ melpaBuild { pname = "edit-server"; ename = "edit-server"; - version = "20180120.752"; + version = "20181016.425"; src = fetchFromGitHub { owner = "stsquad"; repo = "emacs_chrome"; - rev = "de3b6483362637beeb185192bc92f23e75a15b82"; - sha256 = "06w0v2a3f2mjbhj206fdmpnisqj612swxrzg2zznk8hrgsimbnhl"; + rev = "81eb5211f79cf5a2234b7a932f6006d27d506aa5"; + sha256 = "0s30a2rr89qcw798xswmg2nnxhjf2rfl1z474vb37db22qnlnzgz"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/d98d69008b5ca8b92fa7a6045b9d1af86f269386/recipes/edit-server"; @@ -22078,12 +22660,12 @@ melpaBuild { pname = "editorconfig"; ename = "editorconfig"; - version = "20180903.1912"; + version = "20181224.1849"; src = fetchFromGitHub { owner = "editorconfig"; repo = "editorconfig-emacs"; - rev = "24d65714fe6a934266b5c19aa82ab3215bdb710a"; - sha256 = "1v96yg4cb1fdxqn28m7a0mijyzvryc7prbxfmincjbqm96rns4zp"; + rev = "c03200da052d316188da87e25192a07aced50095"; + sha256 = "19j2428ij7sqvrqs7rqg1mcnv9109y6drqba40dkv3vrkk5d2yia"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/50d4f2ed288ef38153a7eab44c036e4f075b51d0/recipes/editorconfig"; @@ -22175,6 +22757,32 @@ license = lib.licenses.free; }; }) {}; + editorconfig-generate = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "editorconfig-generate"; + ename = "editorconfig-generate"; + version = "20181115.2235"; + src = fetchFromGitHub { + owner = "10sr"; + repo = "editorconfig-generate-el"; + rev = "2921b53700dedf16b57d684439add187663954cd"; + sha256 = "0dqmq0hq603r2qn4wjdzlmsv4csci8d36i259jmwf71v8m1j4rc7"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/dc1cfe5ce6bc3d247c5b7730ac6cb2d6c6198a0c/recipes/editorconfig-generate"; + sha256 = "1xfm3vnr5ngi1vihs7cack8a6zyipvdq260v43cr0y8dqg3sn89i"; + name = "recipe"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://melpa.org/#/editorconfig-generate"; + license = lib.licenses.free; + }; + }) {}; edn = callPackage ({ cl-lib ? null , emacs , fetchFromGitHub @@ -22303,12 +22911,12 @@ melpaBuild { pname = "egg"; ename = "egg"; - version = "20180713.218"; + version = "20181125.2100"; src = fetchFromGitHub { owner = "byplayer"; repo = "egg"; - rev = "5bf9879eec067e25a60f2363137c9e69f7b5cc68"; - sha256 = "0k7j76hqgnlci944vz1gbyifqd4fh6agmpmf5a883vimw5fpm2q9"; + rev = "00e768a78ac3d25f457eed667d02cac568480bf9"; + sha256 = "1ak23v9gqj6x104mzgihn0hi7w0kr76q1sl929wmbb9h8s3a54q8"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/a1c97870c2641d73685f07a12f010530cc186544/recipes/egg"; @@ -22328,12 +22936,12 @@ melpaBuild { pname = "egison-mode"; ename = "egison-mode"; - version = "20180910.133"; + version = "20181109.824"; src = fetchFromGitHub { owner = "egison"; repo = "egison"; - rev = "78ba8fb1e31167bc54aa96cf70e5a734eee2cd48"; - sha256 = "0xs6g76i7hxqg83v3569ascaww3aph28ncdnwzg09fjhldcqmy89"; + rev = "ddc6d910be421d891efc8c7c033b99b10364c4c3"; + sha256 = "1rw5xjs4hnikj2swskczxn3x31811znsgzj72b975zbmd5vp98kd"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/3416586d4d782cdd61a56159c5f80a0ca9b3ddf4/recipes/egison-mode"; @@ -22349,25 +22957,26 @@ eglot = callPackage ({ emacs , fetchFromGitHub , fetchurl + , flymake ? null , jsonrpc , lib , melpaBuild }: melpaBuild { pname = "eglot"; ename = "eglot"; - version = "20180908.1519"; + version = "20190101.656"; src = fetchFromGitHub { owner = "joaotavora"; repo = "eglot"; - rev = "6f1d64c21aa6b7031b28c8e84f49407d4abca5e8"; - sha256 = "0h99bjwg3v46svgc09nlgkr2yv5z5cjmc0xh33lvs9vfqrbcx72x"; + rev = "e65792fc4313ee7143efc6c133c5824be4fb7db2"; + sha256 = "1hmn1daq3nqyzsyniv5gg9kd0ihx0mhhw11v0w154b32hbn9qw42"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/6c644530eca56f93d94fac2c9d7663c35c2b8c01/recipes/eglot"; sha256 = "17w39hcgv4p49g841qaicjdx7xac72yxvsc83jf1rrakg713pj7y"; name = "recipe"; }; - packageRequires = [ emacs jsonrpc ]; + packageRequires = [ emacs flymake jsonrpc ]; meta = { homepage = "https://melpa.org/#/eglot"; license = lib.licenses.free; @@ -22412,11 +23021,11 @@ melpaBuild { pname = "eide"; ename = "eide"; - version = "20180626.1259"; + version = "20181204.1335"; src = fetchgit { url = "https://framagit.org/eide/eide.git"; - rev = "6bd4c3b67a532527b3514c72bf2d7371172b8a93"; - sha256 = "1jrbvzf7mk8jpdm3i9vipq9wsgny3ni896s12n68d9chby5cj65n"; + rev = "d5397d2ab2f46dcb536022c47e2d5aeed992bd82"; + sha256 = "1ivl5whj2k7inla1g8gy0k53hragkm2ynhl49g358ic9bvj5jcnq"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/a42244392719c620b47bc43a7a8501dab4b6f74e/recipes/eide"; @@ -22463,19 +23072,18 @@ , lib , melpaBuild , request - , request-deferred , s , skewer-mode , websocket }: melpaBuild { pname = "ein"; ename = "ein"; - version = "20180909.751"; + version = "20181229.1515"; src = fetchFromGitHub { owner = "millejoh"; repo = "emacs-ipython-notebook"; - rev = "1122c88e0d34c63b52a4cba049e93ba80919d86e"; - sha256 = "19mjwd5075i1vviah5m7qr6jfc7k08w8fd3i8w58f0xav21rl3w2"; + rev = "624e9549ef20ab4d16806dae448c942baffef4a0"; + sha256 = "0z699x90qz2icb06g4v6q2d7p8arx4727rb2v9k7p9kmf830dhhl"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/215e163755fe391ce1f049622e7b9bf9a8aea95a/recipes/ein"; @@ -22488,7 +23096,6 @@ dash deferred request - request-deferred s skewer-mode websocket @@ -22562,16 +23169,16 @@ melpaBuild { pname = "ejc-sql"; ename = "ejc-sql"; - version = "20180827.708"; + version = "20190103.624"; src = fetchFromGitHub { owner = "kostafey"; repo = "ejc-sql"; - rev = "53ef8f3b2e809016ad3d2a1bafc5e6ac942a5557"; - sha256 = "1njpz8dz3pmbll4lcx13mg5329anpyzl9rrn9gsg5yhvy11viqci"; + rev = "bc9a17a19a6b44ab2ee913b20fdb0efd0909ce80"; + sha256 = "19z1xv2q4vmwi2fsksmlifxjgs07pxp8hv1lxx0bsx6sfdm9gpjz"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/8f2cd74717269ef7f10362077a91546723a72104/recipes/ejc-sql"; - sha256 = "0v9mmwc2gm58nky81q7fibj93zi7zbxq1jzjw55dg6cb6qb87vnx"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/e01655679087504db1206b22435ba8eb7050aa23/recipes/ejc-sql"; + sha256 = "13i55l6hwsxbmdxmvh6aajayivgskw4iagmj9in1qkd9rnrykhn9"; name = "recipe"; }; packageRequires = [ auto-complete clomacs dash direx emacs spinner ]; @@ -22638,12 +23245,12 @@ melpaBuild { pname = "el-get"; ename = "el-get"; - version = "20180610.1821"; + version = "20181005.1925"; src = fetchFromGitHub { owner = "dimitri"; repo = "el-get"; - rev = "8e96907b8b2a95485b8e1e5a450510513ed9e524"; - sha256 = "0xzkgzhdr1dda95wx6i8ygb9wylxjm2j7n53mldz2gigswl6lsja"; + rev = "08005ef89b468aae2269021a82c7edca3dadb438"; + sha256 = "07pljkgg4na929hdw8kaddf3z9a7m0dspmgrdqf1b0mw1xg7cl58"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/1c61197a2b616d6d3c6b652248cb166196846b44/recipes/el-get"; @@ -22748,12 +23355,12 @@ melpaBuild { pname = "el-patch"; ename = "el-patch"; - version = "20180904.1636"; + version = "20181220.1548"; src = fetchFromGitHub { owner = "raxod502"; repo = "el-patch"; - rev = "15b3e84ab7001d42acd621cd6572ffdca839ea33"; - sha256 = "0fg4zzvk7vddiqgk9hcq8h09j8xr6c3hxhh7fa9rah4ni6clxmaw"; + rev = "ca6c6ba40f4cee3156415ee793bbbf24fe06e9ca"; + sha256 = "144dj8cary6c15pgnarbx0v9bjx8n4w22jq4wswis7vnsy03rcnn"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/2f4f57e0edbae35597aa4a7744d22d2f971d5de5/recipes/el-patch"; @@ -22984,13 +23591,13 @@ version = "20180316.643"; src = fetchFromGitHub { owner = "NicolasPetton"; - repo = "Elbank"; + repo = "elbank"; rev = "6dbd21e31fdf7cf62491f6d24b8198d4f91a031b"; sha256 = "1krqvwh6a4cqbqawmydq16ardnn6ddf7wm5605794j145dd2268v"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/05d252ee84adae2adc88fd325540f76b6cdaf010/recipes/elbank"; - sha256 = "1ry84aiajyrnrspf7w4yjm0rmdam8ijrz0s7291yr8c70hslc997"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/35763febad20f29320d459394f810668db6c3353/recipes/elbank"; + sha256 = "1i1cdywcbdj9ykfczbagrqdpgf3c88f1kc0mdlj8mzyvjixx7mhk"; name = "recipe"; }; packageRequires = [ emacs seq ]; @@ -23038,12 +23645,12 @@ melpaBuild { pname = "elcord"; ename = "elcord"; - version = "20180909.1402"; + version = "20181027.2350"; src = fetchFromGitHub { owner = "Mstrodl"; repo = "elcord"; - rev = "edc003bb2d35df54289c3a071aaa17dac156a5f6"; - sha256 = "1h1k184qlfkf4vy3fx4gni2q09a5bxwfmxab2ww7a3vjzj2ypcdx"; + rev = "2224b0dd9137c04a62dd8ff7078ab80e9289643e"; + sha256 = "1gi0hs0kakyrhh2g3555njs6g83zy4whf70gd9ysa8pvh05br8ga"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/cf2c52366a8f60b68a33a40ea92cc96e7f0933d2/recipes/elcord"; @@ -23066,12 +23673,12 @@ melpaBuild { pname = "elcouch"; ename = "elcouch"; - version = "20180529.57"; + version = "20180809.236"; src = fetchFromGitHub { owner = "DamienCassou"; repo = "elcouch"; - rev = "608fe254a7ee69c43c69b905ef708189dc3e3192"; - sha256 = "0bn8xh3i962l8jzv33mmrd22fbig19bjw89hz9by5xa35q1nnvf5"; + rev = "1491b04d2aa4a15dd61ef8df1710fd6724f0f384"; + sha256 = "0a72nwy48sh97g75m3paj2h61j4a9jhar6n5jj6n0jk8jdrc0wwj"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/b5d9a35dd5a272a592d248993ea7e5dda8fdf0ab/recipes/elcouch"; @@ -23091,12 +23698,12 @@ melpaBuild { pname = "eldoc-eval"; ename = "eldoc-eval"; - version = "20180607.457"; + version = "20181227.2326"; src = fetchFromGitHub { owner = "thierryvolpiatto"; repo = "eldoc-eval"; - rev = "f59a1ae7ecfa97ef659c7adb93e0673419acc485"; - sha256 = "1anpshps44zx4qrkddbxd24q63fm5y93zbwmsb1l2cwbykf5s5iz"; + rev = "17946951b914b8520f41d804a6b32830ed32d0c7"; + sha256 = "1khnh4yxwbbcyqcldy0c17s0d0bzgca7x8p7v48886qg4d4aqkm8"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/63ba2004d3db4c5a71676dca82ad880328cf6073/recipes/eldoc-eval"; @@ -23171,12 +23778,12 @@ melpaBuild { pname = "electric-operator"; ename = "electric-operator"; - version = "20180831.1046"; + version = "20181123.5"; src = fetchFromGitHub { owner = "davidshepherd7"; repo = "electric-operator"; - rev = "33c7f737423d3712e5b2c29c81b4f8d52f8d3621"; - sha256 = "1fccvqsb38hkjnh85yvjcc5lq3pghjrfc85vn3hqaxnhkrid397k"; + rev = "6de04b2c622b6384adc3d861ea6f02bd895b7463"; + sha256 = "084clwn617snv5vh5pz368m40fn3adklhi99sqdj71sssy5xidxr"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/906cdf8647524bb76f644373cf8b65397d9053a5/recipes/electric-operator"; @@ -23273,12 +23880,12 @@ melpaBuild { pname = "elfeed"; ename = "elfeed"; - version = "20180829.1016"; + version = "20181127.1143"; src = fetchFromGitHub { owner = "skeeto"; repo = "elfeed"; - rev = "3d1c6ecbe585f9fe6ca5a97a3fc352d68f303f9e"; - sha256 = "1bzpl6lc7kq9bph4bfz1fn19207blrnhjr2g7yinhn0nnnjmxi8i"; + rev = "448ad647449b2712409fb784e2cc90af5b8491f1"; + sha256 = "05001p2bl6v92zlj4s2a1fz4fncnrmlvyqwp5qkw3lrzf5qkiyn2"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/407ae027fcec444622c2a822074b95996df9e6af/recipes/elfeed"; @@ -23341,12 +23948,12 @@ melpaBuild { pname = "elfeed-org"; ename = "elfeed-org"; - version = "20180129.507"; + version = "20181015.400"; src = fetchFromGitHub { owner = "remyhonig"; repo = "elfeed-org"; - rev = "b9d09a554127244d4807a3d2d90e062df63b2fd5"; - sha256 = "0szij299pfxbgqfps8njnxa2w862zzn40crsbc1ppww267dbp60j"; + rev = "607b8bf4923a995260a072559b77bee188614a06"; + sha256 = "1m4v5z2ciqlmnr7gfzx6cbi81ck80fvy88fd0lpnhlqj2h9k5pys"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/855ea20024b606314f8590129259747cac0bcc97/recipes/elfeed-org"; @@ -23369,12 +23976,12 @@ melpaBuild { pname = "elfeed-protocol"; ename = "elfeed-protocol"; - version = "20180728.207"; + version = "20181123.653"; src = fetchFromGitHub { owner = "fasheng"; repo = "elfeed-protocol"; - rev = "81ae532fba657ff230568a14277d1f71940688a3"; - sha256 = "09s5jnb5sbraszwcmwaa7fzvv8qd6l7cnyl18rzfszhkqkc17xhj"; + rev = "3b5d8592a68635a89ea6cded5bb9fe49779c3ce0"; + sha256 = "13l94xid4pac1pkz6sbbximb93yjzqz3g4ci1xr6m3h2wi4khzn7"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/3f1eef8add7cd2cfefe6fad6d8e69d65696e9677/recipes/elfeed-protocol"; @@ -23423,12 +24030,12 @@ melpaBuild { pname = "elgrep"; ename = "elgrep"; - version = "20180904.1622"; + version = "20181126.59"; src = fetchFromGitHub { owner = "TobiasZawada"; repo = "elgrep"; - rev = "55efe10b2c479e6c51725be68e64310f75c249b0"; - sha256 = "0k2vv4vymsygxxxc43sigvc2f2rwpxn6qfqgs2bb54jzm5yaw01d"; + rev = "73679c28737f8d6d34444df46bed5293d4845f82"; + sha256 = "091ghc7grd6znsfxnwg30w9i32818j6arxgnz9fkkwizngw5v9hv"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/0d9ab623b2d634936a79ff6f4b98b31825d44b6d/recipes/elgrep"; @@ -23496,6 +24103,32 @@ license = lib.licenses.free; }; }) {}; + elisp-demos = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "elisp-demos"; + ename = "elisp-demos"; + version = "20181230.907"; + src = fetchFromGitHub { + owner = "xuchunyang"; + repo = "elisp-demos"; + rev = "50b0f4a52fe3ca049f02a195d225a2089321d840"; + sha256 = "1aa07vr6pqbbv51dibcgdj26np438zp6vsbrmprc7nr374viqbq7"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/e1bd1c7a4576d4874a8c5fc8ab2dbc65f0e5bc8c/recipes/elisp-demos"; + sha256 = "1571l826x8ixlqd3nkqgizkzrq37af13ihrm1rvgaf5gl0va9ik8"; + name = "recipe"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://melpa.org/#/elisp-demos"; + license = lib.licenses.free; + }; + }) {}; elisp-depend = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -23607,12 +24240,12 @@ melpaBuild { pname = "elisp-refs"; ename = "elisp-refs"; - version = "20180715.1602"; + version = "20181210.1655"; src = fetchFromGitHub { owner = "Wilfred"; repo = "elisp-refs"; - rev = "c3fefb803bd0a1b6de654dbd380a8487804789a5"; - sha256 = "1va1lgc6dhqif11wxsd3b5kzv01q7ys800sly2v605153ajafqw4"; + rev = "a8900dab9f8e2925ce5dea0f97bdac4ce47714d9"; + sha256 = "1k3qnc5qyq7k968zy57c243953yb76zqnf02xwmz7rq11nlrxfr6"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/3416586d4d782cdd61a56159c5f80a0ca9b3ddf4/recipes/elisp-refs"; @@ -23742,12 +24375,12 @@ melpaBuild { pname = "elm-mode"; ename = "elm-mode"; - version = "20180828.1527"; + version = "20181225.1346"; src = fetchFromGitHub { owner = "jcollard"; repo = "elm-mode"; - rev = "5167d3fd8a32d384d999655dbed6870352b65673"; - sha256 = "1njwjlvda9n96zjg1lrhjjg4rhnj3yc210qyhc3h8zpq46fpld96"; + rev = "dc5ce009b18c07e5235d1974691b372fc0cacace"; + sha256 = "19v0l0zwxfy6slwknzf3y6accd7rwq6yv24bn745miyvcdbw8nmi"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/5d1a4d786b137f61ed3a1dd4ec236d0db120e571/recipes/elm-mode"; @@ -23768,12 +24401,12 @@ melpaBuild { pname = "elm-test-runner"; ename = "elm-test-runner"; - version = "20180830.612"; + version = "20180918.1555"; src = fetchFromGitHub { owner = "juanedi"; repo = "elm-test-runner"; - rev = "09a274ca8dc0e3d3a2d4ce15c4c5457ac52e95a9"; - sha256 = "00xzvww0lm84lzgnmyxcyi3qpi12gxjlgcs80r7j3hryr5zvs5r0"; + rev = "73696add403cee6547fcb6eb4e49798e1583d0e2"; + sha256 = "1pphswh5dps98y4zm9fm5wvs3g0ayx7l2nv7wd6np3ydn3gwj25m"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/064db8f60438927255458a7fbd8ae871f8264d67/recipes/elm-test-runner"; @@ -24037,12 +24670,12 @@ melpaBuild { pname = "elpa-mirror"; ename = "elpa-mirror"; - version = "20180228.1636"; + version = "20181012.1956"; src = fetchFromGitHub { owner = "redguardtoo"; repo = "elpa-mirror"; - rev = "6ca78e3fb69ef582da1a01f1d193e07ae8223142"; - sha256 = "0s0c5qqg1cl63kig7kc4fx9rz4kgchxc3w3ywgh5csmgwlkpg0id"; + rev = "7b881f881a0c8a8de14161cbd3869c2a7591706c"; + sha256 = "1hrj6jkmk5b0q40nnpadn08b4cnals48rvlqrmfshjc7gz06kjcj"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/d64ce7042c45f29fb394be25ce415912182bac8b/recipes/elpa-mirror"; @@ -24069,12 +24702,12 @@ melpaBuild { pname = "elpy"; ename = "elpy"; - version = "20180915.346"; + version = "20181228.921"; src = fetchFromGitHub { owner = "jorgenschaefer"; repo = "elpy"; - rev = "1ef3ba3be237b2bbd9ecbbb79ca63cc7ba849c0d"; - sha256 = "02hpy7cnd2mwm05cvajifigwg4y978b1sk3nwh0l500n4p1ac8kq"; + rev = "b4803b554d78941e871cd976ff7828294e85c991"; + sha256 = "073bwxwjzcbmvpcz9q2xjwzx9x7hkvjni6fwvikh6yawzjp56jis"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/1d8fcd8745bb15402c9f3b6f4573ea151415237a/recipes/elpy"; @@ -24132,12 +24765,12 @@ melpaBuild { pname = "elquery"; ename = "elquery"; - version = "20180513.1912"; + version = "20180917.1517"; src = fetchFromGitHub { owner = "AdamNiederer"; repo = "elquery"; - rev = "7b2e40dcae09de9074fae1a7893b82b41987106b"; - sha256 = "1sfwsccpaipa5j10114jya8327nbllywgvzhxsqml0fwpg1ifyyq"; + rev = "eac429d8550fbf1582c57d5e16fed9f320d6eb30"; + sha256 = "1jkbrv5r5vzqjhadb4dcgks47gaj7aavzdkzc5gjn5zv5fmm1in2"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/121f7d2091b83143402b44542db12e8f78275103/recipes/elquery"; @@ -24150,6 +24783,36 @@ license = lib.licenses.free; }; }) {}; + elsa = callPackage ({ cl-lib ? null + , dash + , emacs + , f + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild + , trinary }: + melpaBuild { + pname = "elsa"; + ename = "elsa"; + version = "20181119.1347"; + src = fetchFromGitHub { + owner = "emacs-elsa"; + repo = "Elsa"; + rev = "9a2f3d5abfac44ab50aa9b6c34bbe8b9562741b1"; + sha256 = "1plsrjpbxb45cv98bjkn05lmv7brc16l8l2qrha9w2y363fqlc8d"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/f126c49fe01a1c21aca0f45643d44ecf4c3ad95b/recipes/elsa"; + sha256 = "0g8l61fg9krqakp6fjvm6jr1lss3mll707rknhm5d2grr6ik3lvl"; + name = "recipe"; + }; + packageRequires = [ cl-lib dash emacs f trinary ]; + meta = { + homepage = "https://melpa.org/#/elsa"; + license = lib.licenses.free; + }; + }) {}; elscreen = callPackage ({ emacs , fetchFromGitHub , fetchurl @@ -24158,12 +24821,12 @@ melpaBuild { pname = "elscreen"; ename = "elscreen"; - version = "20180320.1902"; + version = "20181008.2151"; src = fetchFromGitHub { owner = "knu"; repo = "elscreen"; - rev = "02164afab2c5fbff6e4aa7c59e0daedc6c504772"; - sha256 = "1jzp7w2c9xl8x8kdxcchgp8s3ygvj70pi2vwwg1qilkya7yv61p0"; + rev = "cc58337faf5ba1eae7e87f75f6ff3758675688f2"; + sha256 = "15kffci7qlhjwz1rlr0zg0z9rq0vlsxy295dvg96wiiz4fvs4jk2"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/e6140694c1dea0a573586d23d1f63d46c9b22936/recipes/elscreen"; @@ -24186,12 +24849,12 @@ melpaBuild { pname = "elscreen-buffer-group"; ename = "elscreen-buffer-group"; - version = "20170808.1825"; + version = "20181026.2228"; src = fetchFromGitHub { owner = "jeffgran"; repo = "elscreen-buffer-group"; - rev = "a3cd4d7eae3cca87bede4b39a46d3c0641f8cd06"; - sha256 = "0flja2j5xqhxc0qrclnxcpyzvn7gyjynfpa3mp1hb250c313igy5"; + rev = "cd671c4a86ff6e481d24d060b4069e518940f9c9"; + sha256 = "1nff1frlni7lbxrk26idzxlm0npzrjvfmzsv3y9nwy9v8djsiwy3"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/9c6fedb7b6ef58089da4b35ad115f699b4b24ff2/recipes/elscreen-buffer-group"; @@ -24372,12 +25035,12 @@ melpaBuild { pname = "elx"; ename = "elx"; - version = "20180909.937"; + version = "20181111.207"; src = fetchFromGitHub { owner = "emacscollective"; repo = "elx"; - rev = "02b973c31f037806bcb676b4d98987ed7709f21e"; - sha256 = "1ixk7j62j4z3i7n4v5wa5yhclshjh83qc1dhwfdqlc7g60xdl8p0"; + rev = "c554db7e7f2c0c8a503def7739b8205193ba821f"; + sha256 = "07i739v2w5dbhyfhvfw4phcrdk5sf7ncsd47y8hkf5m4zgw4kw4n"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/57a2fb9524df3fdfdc54c403112e12bd70888b23/recipes/elx"; @@ -24499,12 +25162,12 @@ melpaBuild { pname = "emacsql"; ename = "emacsql"; - version = "20180712.1052"; + version = "20181111.205"; src = fetchFromGitHub { owner = "skeeto"; repo = "emacsql"; - rev = "6f1e375a2ebb558138b73d2a63f2077da1028f92"; - sha256 = "046c9jr4azfz5cfpdlp160da3z9lcff12ldlvnzraxx8bzfbxqi5"; + rev = "f8c3d9fce28ab7d5b0c9fcf2c1236151ca7add24"; + sha256 = "0kfr3y54b7cj9zm3dnqfryilhgiaa78ani5fgi402l5h9i922isn"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/9c3b6175b5c64f03b0b9dfdc10f393081d681309/recipes/emacsql"; @@ -24709,12 +25372,12 @@ melpaBuild { pname = "ember-mode"; ename = "ember-mode"; - version = "20180823.306"; + version = "20181001.236"; src = fetchFromGitHub { owner = "madnificent"; repo = "ember-mode"; - rev = "0f984f9ea709dfc3b13acae3a29956147ad4e2c2"; - sha256 = "0z0fhj2wj9m69rgc21b5rkk7a3g3css3c5gmla2x0mwnxwdc6fyb"; + rev = "88e5ffd33d8664b4d5124d6aa2ea9ed8d50c8c9e"; + sha256 = "0y0lpzkcalis1jzclphnbd3p3656i3qzvinrwf40j3rylrp2vcc4"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/9ac1eef4ad87b1b6b6d8e63d340ba03dc013425b/recipes/ember-mode"; @@ -24780,6 +25443,34 @@ license = lib.licenses.free; }; }) {}; + emidje = callPackage ({ cider + , emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild + , seq }: + melpaBuild { + pname = "emidje"; + ename = "emidje"; + version = "20181219.956"; + src = fetchFromGitHub { + owner = "nubank"; + repo = "emidje"; + rev = "0a27ad9571eaff772a6c6fe7228d76269f82183b"; + sha256 = "1jj42vskz56sgq4cqsnl4yms88dh7kdbd2f8m81dqyi4r5im4j1w"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/5d64b3b42b4b9acd3e9d84921df287f3217db83e/recipes/emidje"; + sha256 = "1p2aa4wl2465gm7ljgr5lbvxfgx0g1w1170zdv3596hi07mccabs"; + name = "recipe"; + }; + packageRequires = [ cider emacs seq ]; + meta = { + homepage = "https://melpa.org/#/emidje"; + license = lib.licenses.free; + }; + }) {}; emlib = callPackage ({ cl-lib ? null , dash , fetchFromGitHub @@ -24840,11 +25531,11 @@ melpaBuild { pname = "emms"; ename = "emms"; - version = "20180907.1359"; + version = "20181122.1132"; src = fetchgit { url = "https://git.savannah.gnu.org/git/emms.git"; - rev = "fd9079a9101cc99ca62cfe9187c28b1c8fd69eb6"; - sha256 = "11560smmyh3wixpq5q6xh5chnq71q6ydri4d4py3paxsgmn268xb"; + rev = "359e1d38d09060b5f7860320649d6c30b71e4bbe"; + sha256 = "0ayfmr0rg002xi5dklap87a2765z724cl8qs6j5l7qlq4k9dzwqq"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/caaa21f235c4864f6008fb454d0a970a2fd22a86/recipes/emms"; @@ -24963,32 +25654,6 @@ license = lib.licenses.free; }; }) {}; - emms-player-mpv = callPackage ({ emms - , fetchFromGitHub - , fetchurl - , lib - , melpaBuild }: - melpaBuild { - pname = "emms-player-mpv"; - ename = "emms-player-mpv"; - version = "20180503.1427"; - src = fetchFromGitHub { - owner = "dochang"; - repo = "emms-player-mpv"; - rev = "9c9ffc6f00a737a6db6377681a88e5292ebcf86b"; - sha256 = "17kvkx63q30p5r2lsv6pqdm2zi8my3yn3js7j3c2qlygd9sf80pz"; - }; - recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/9679cb8d4b3b9dce1e0bff16647ea3f3e02c4189/recipes/emms-player-mpv"; - sha256 = "175rmqx3bgys4chw8ylyf9rk07sg0llwbs9ivrv2d3ayhcz1lg9y"; - name = "recipe"; - }; - packageRequires = [ emms ]; - meta = { - homepage = "https://melpa.org/#/emms-player-mpv"; - license = lib.licenses.free; - }; - }) {}; emms-player-mpv-jp-radios = callPackage ({ cl-lib ? null , emacs , emms @@ -25212,12 +25877,12 @@ melpaBuild { pname = "emojify"; ename = "emojify"; - version = "20180611.838"; + version = "20181220.1950"; src = fetchFromGitHub { owner = "iqbalansari"; repo = "emacs-emojify"; - rev = "38ae28d95b58e9fb86a3495a2dda3e5de254c4fc"; - sha256 = "1dk4kx5hvhcrmbhyx0ri9i934i8m3mcs76hk5h8qnbhdknmsh3rz"; + rev = "f2edcba0f6b19717e38a3e96adc8adc262f3b5a5"; + sha256 = "0yynms2mcrfxgs27kzk3ag8d24ifffs9fyv7m4hvv46mwwhnmyk8"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/488d2751b5fd3bf00f5a6f0545530f44563b86d7/recipes/emojify"; @@ -25298,12 +25963,12 @@ melpaBuild { pname = "emr"; ename = "emr"; - version = "20180908.817"; + version = "20180921.1415"; src = fetchFromGitHub { owner = "Wilfred"; repo = "emacs-refactor"; - rev = "c3ff7f007ebd8241dea10a6632073bea778409a4"; - sha256 = "0yqyn3plqs264c3zjnb6js7jmvnvlcjv6x4z9himi4vfy262wl3j"; + rev = "8856b2ed7e45dd33a5f81e1302a2fba736c64dd6"; + sha256 = "1swsh3ld5vlp3fx9dynri6rphpsn9i7n3amzlbzh36w0jkkjcz0m"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/3416586d4d782cdd61a56159c5f80a0ca9b3ddf4/recipes/emr"; @@ -25386,12 +26051,12 @@ melpaBuild { pname = "engine-mode"; ename = "engine-mode"; - version = "20180401.946"; + version = "20181222.1227"; src = fetchFromGitHub { owner = "hrs"; repo = "engine-mode"; - rev = "fd5a235b2c93b95143d676e6b654e388d7cdd956"; - sha256 = "0lynwd7s1mjppynh8424qk30jzcr384wvr21bqy6ylsxs19kqg0w"; + rev = "117a9c0cbc1ff8ade7f17cd40d1d2f5eb24f51a3"; + sha256 = "1pm6xi0bcab3mpmvy8g449d5iv8s3cjqqvm2rcnlz1d6223pszh0"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/ea1b5dfb6628cf17e77369f25341835aad425f54/recipes/engine-mode"; @@ -25667,12 +26332,12 @@ melpaBuild { pname = "epkg"; ename = "epkg"; - version = "20180627.1353"; + version = "20181104.1143"; src = fetchFromGitHub { owner = "emacscollective"; repo = "epkg"; - rev = "b3dac5d4596d304f17a283c5cfe9dc77989fa96a"; - sha256 = "17qdywa8qw6n8a3r4s1cbjbmh2a4vjnxp6fqhiglbbfc1xqw2p1n"; + rev = "c42bc98a711ffa8d2a7b9096b563ac0edb0b9bf3"; + sha256 = "0hn67mdv6i8l1sfvs8gm2my05chk69nm4vf108l2ff22lims8ghx"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/2df16abf56e53d4a1cc267a78797419520ff8a1c/recipes/epkg"; @@ -26256,26 +26921,27 @@ license = lib.licenses.free; }; }) {}; - eredis = callPackage ({ fetchFromGitHub + eredis = callPackage ({ dash + , fetchFromGitHub , fetchurl , lib , melpaBuild }: melpaBuild { pname = "eredis"; ename = "eredis"; - version = "20180221.1313"; + version = "20181118.1731"; src = fetchFromGitHub { owner = "justinhj"; repo = "eredis"; - rev = "8a96034805fe0664132ce2e12deb9936503af2d4"; - sha256 = "1w4z98vr7iy6yxdk3lha7flk48ckxl2baaq8kx7abkirzfl8j4hh"; + rev = "cfbfc25832f6fbc507bdd56b02e3a0b851a3c368"; + sha256 = "1f2f57c0bz3c6p11hr69aar6z5gg33zvfvsm76ma11vx21qilz6i"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/63f06713d06911f836fe2a4bf199b0794ac89cf0/recipes/eredis"; sha256 = "087lln2izn5bv7bprmbaciivf17vv4pz2cjl91hy2f0sww6nsiw8"; name = "recipe"; }; - packageRequires = []; + packageRequires = [ dash ]; meta = { homepage = "https://melpa.org/#/eredis"; license = lib.licenses.free; @@ -26317,12 +26983,12 @@ melpaBuild { pname = "ergoemacs-mode"; ename = "ergoemacs-mode"; - version = "20180709.645"; + version = "20181127.1330"; src = fetchFromGitHub { owner = "ergoemacs"; repo = "ergoemacs-mode"; - rev = "a5d46653fd3a521276630c81bf75d3e8d224e5cb"; - sha256 = "10y79z7xakjl4x95mvf8jjqxxsgkmz0k7czl0vwhk6j8c910v871"; + rev = "cac7b5628d54fbce1b4e564fdfd36dc6b989c228"; + sha256 = "0aimaq0crkbdpj7y01ydg052i5iqajf295nka099mi1yrbl2ppr3"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/02920517987c7fc698de9952cbb09dfd41517c40/recipes/ergoemacs-mode"; @@ -26370,12 +27036,12 @@ melpaBuild { pname = "erlang"; ename = "erlang"; - version = "20180910.600"; + version = "20181011.536"; src = fetchFromGitHub { owner = "erlang"; repo = "otp"; - rev = "2eccf112d0ed6d0736562ca5260740cc670b7ddb"; - sha256 = "0yfycmb6vlhdgq0i7nmnxdsjx41q9h2bbig5qzxmjvn1brv8adca"; + rev = "76e2f04bff3685a8efb9321edf02a6996c5fbf59"; + sha256 = "1qx5n9q3j1nq8n83g34jvcfxk5f3y3y9q4h8y4gvv2d2gns0zblv"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/d9cd526f43981e0826af59cdc4bb702f644781d9/recipes/erlang"; @@ -26397,12 +27063,12 @@ melpaBuild { pname = "erlstack-mode"; ename = "erlstack-mode"; - version = "20180817.226"; + version = "20181221.1101"; src = fetchFromGitHub { owner = "k32"; repo = "erlstack-mode"; - rev = "d480d937f02f8cc66350bc583ee54942a786ac49"; - sha256 = "1y664369wdhd4ir8lmhgvwrzj6w8j9s67327jkr310vmfdlgxhvy"; + rev = "b748eae5905c671effd6dfb8f5dd1a6863bc524f"; + sha256 = "1f49r0f46s2ii4ml7r92q9nnnikil0yxpwvxif3j4z45apcg7y0y"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/6ee61c1c5f116082b37fb13d15052ed9bbbc1dac/recipes/erlstack-mode"; @@ -26500,11 +27166,11 @@ melpaBuild { pname = "ert-junit"; ename = "ert-junit"; - version = "20180809.1411"; + version = "20181118.1456"; src = fetchgit { url = "https://bitbucket.org/olanilsson/ert-junit"; - rev = "69177610824f20d4c4e16af4b9850fd96bea6491"; - sha256 = "1mkxxpnzfhd0gf4jjnvrx2x0m8nxs8viwfzhs4r2rn6h7j48ynza"; + rev = "b0649e94460aff5176dee5b33f28946bffb602d5"; + sha256 = "0hj85hz4s1q4dalinhgahn8jn97s2pdpv41d9qqbvbdzwhhw2mrk"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/27c627eacab54896a1363dbabc56250a65343dd8/recipes/ert-junit"; @@ -26615,12 +27281,12 @@ melpaBuild { pname = "es-mode"; ename = "es-mode"; - version = "20180212.1425"; + version = "20181004.1517"; src = fetchFromGitHub { owner = "dakrone"; repo = "es-mode"; - rev = "c5ad728ce3fc2c513108e0ada2cd0c08ab94f870"; - sha256 = "0drmxxqgml36fymn4gqxbjimh8dgmm4yr68hsmsd0iz1lxglgda1"; + rev = "1b7aca9b4e9fcebf4a67682203035eaf75b692e2"; + sha256 = "16vdy6kknwi1hxgkfrzc6jk9h41l6agyiw6k21j3dcz237ngrkhv"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/9912193f73c4beae03b295822bf41cb2298756e2/recipes/es-mode"; @@ -26929,12 +27595,12 @@ melpaBuild { pname = "eshell-prompt-extras"; ename = "eshell-prompt-extras"; - version = "20180109.2234"; + version = "20181229.618"; src = fetchFromGitHub { owner = "kaihaosw"; repo = "eshell-prompt-extras"; - rev = "1d8825dcc005b488c6366d0b3015fc6686194eea"; - sha256 = "1nqzd24wwvyzf3bn7m7vd4xqmj4p8z51h8cnli07yja17cr5gwx6"; + rev = "5a328e1b9112c7f31ce2da7cde340f96626546b6"; + sha256 = "0fwlvrzjygs12dcp89wy3rb3wa03mrvbzpmpvmz4x6dfpr7csznk"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/3416586d4d782cdd61a56159c5f80a0ca9b3ddf4/recipes/eshell-prompt-extras"; @@ -27058,12 +27724,12 @@ melpaBuild { pname = "espresso-theme"; ename = "espresso-theme"; - version = "20170716.813"; + version = "20181025.126"; src = fetchFromGitHub { owner = "dgutov"; repo = "espresso-theme"; - rev = "e79c5c14732b7e34aab75dbcc968839536536c59"; - sha256 = "0jdyxyc6mk0vh35wgic8ikvs9cid7b5ffqx94pkg1kpridm2wrzc"; + rev = "d2fa034eb833bf37cc6842017070725e0da9b046"; + sha256 = "0fds36w6l2aaa88wjkd2ck561i0wwpxgz5ldadhbi5lvfwj9386m"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/e608f40d00a3b2a80a6997da00e7d04f76d8ef0d/recipes/espresso-theme"; @@ -27104,6 +27770,32 @@ license = lib.licenses.free; }; }) {}; + espy = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "espy"; + ename = "espy"; + version = "20180929.902"; + src = fetchFromGitHub { + owner = "walseb"; + repo = "espy"; + rev = "e5dadc232ad985ede2b7d68a09be4c8014ded56a"; + sha256 = "08crl0q7xc8gx245cfylb3j5xncqviq402gizhv0lb6rs0bpsc4y"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/184718ee62f25b2bfed7d5126e02bce3290c50c4/recipes/espy"; + sha256 = "1icyiygw7brn4lrp28szmk4kk94n5q1zlrzrl6z7y0hdhdsjflgg"; + name = "recipe"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://melpa.org/#/espy"; + license = lib.licenses.free; + }; + }) {}; esqlite = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -27157,7 +27849,8 @@ license = lib.licenses.free; }; }) {}; - ess = callPackage ({ fetchFromGitHub + ess = callPackage ({ emacs + , fetchFromGitHub , fetchurl , julia-mode , lib @@ -27165,19 +27858,19 @@ melpaBuild { pname = "ess"; ename = "ess"; - version = "20180911.1435"; + version = "20190103.559"; src = fetchFromGitHub { owner = "emacs-ess"; repo = "ESS"; - rev = "bd6bdd45e800d36fbd6541289f0b00e15b352f98"; - sha256 = "1h1ba55pp0prfjxc2jv14gy1j3qgd4j6qjhgz2f4nprwp6ql8s30"; + rev = "2d11bb6d1851aadbf35c621b36603230b08b4f80"; + sha256 = "01c2r5l0bd31bakhbjwgdzm8klbs2iqq993ma6iqawvkm14virw1"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/156a6fa9e6ee16174d215c1dcd524aff847b3bf0/recipes/ess"; sha256 = "1psqrw9k7d2ha8zid2mkc6bgcyalrm3n53c00g3cgckkbahl7r6n"; name = "recipe"; }; - packageRequires = [ julia-mode ]; + packageRequires = [ emacs julia-mode ]; meta = { homepage = "https://melpa.org/#/ess"; license = lib.licenses.free; @@ -27246,12 +27939,12 @@ melpaBuild { pname = "ess-smart-underscore"; ename = "ess-smart-underscore"; - version = "20180910.2223"; + version = "20181112.1302"; src = fetchFromGitHub { owner = "mattfidler"; repo = "ess-smart-underscore.el"; - rev = "863ed5c012acd702d71074c56315e668b61880ea"; - sha256 = "1qnxsagvjar8513bsyp361iy41k0c5z6ricwaw56xyxna5h6i5ma"; + rev = "17fde1f2bffffeb67520922e09ebf66693ef0c6f"; + sha256 = "0pc3vx8v59gvqamklv291ivm5ddg7wmzy358lqnl2hhgg85s90i7"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/b4d6166f5c80cf37c79256402fa633ad2274d065/recipes/ess-smart-underscore"; @@ -27274,12 +27967,12 @@ melpaBuild { pname = "ess-view"; ename = "ess-view"; - version = "20180525.1503"; + version = "20181001.1030"; src = fetchFromGitHub { owner = "GioBo"; repo = "ess-view"; - rev = "dab08b405dbda5aff71022c5cf021ea18b2bde0f"; - sha256 = "1qi7gp5aj64b7sddvcms1c1x5h7j7dcd0rw6h4liw0d0gjkq82br"; + rev = "d4e5a340b7bcc58c434867b97923094bd0680283"; + sha256 = "1yzki5f2k7gmj4m0871h4h46zalv2x71rbpa6glkfx7bm9kyc193"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/96960a8799138187b748a47ac007dc25d739fe10/recipes/ess-view"; @@ -27382,12 +28075,12 @@ melpaBuild { pname = "eterm-256color"; ename = "eterm-256color"; - version = "20180520.523"; + version = "20181026.829"; src = fetchFromGitHub { owner = "dieggsy"; repo = "eterm-256color"; - rev = "ef99d3a12ddce4aa06069c19e66e826f4cfc91e4"; - sha256 = "1q1m125qwga8397qx5ln326aw3x8vi2y8w065w0zccxrq7n21ds4"; + rev = "1340f69a78faf4e709ee29875550ecc9f434b216"; + sha256 = "1q66v7qk3xririsqx1nkckrd9v8lq4nl5j0b0dmxnq0hg5a0kxxh"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/e556383f7e18c0215111aa720d4653465e91eff6/recipes/eterm-256color"; @@ -27626,12 +28319,12 @@ melpaBuild { pname = "evil"; ename = "evil"; - version = "20180914.516"; + version = "20181206.409"; src = fetchFromGitHub { owner = "emacs-evil"; repo = "evil"; - rev = "6fde982d731e2cc4e5f6bded6f8955ab2daee3b7"; - sha256 = "1w2fzsq15qhh3kqrjiyb236k84v61bsg22ym27rm3bd7gikd9v36"; + rev = "82c65dcfe23aff3d764cafc78124d92940c5bd59"; + sha256 = "128zn8k44s0v8wbxlcya46vga70mizy9rn6q2vwlajyxbndl0k00"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/440482c0edac8ee8bd4fe22f6bc5c1607f34c7ad/recipes/evil"; @@ -27726,6 +28419,32 @@ license = lib.licenses.free; }; }) {}; + evil-better-visual-line = callPackage ({ evil + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "evil-better-visual-line"; + ename = "evil-better-visual-line"; + version = "20181026.328"; + src = fetchFromGitHub { + owner = "YourFin"; + repo = "evil-better-visual-line"; + rev = "05e8270ae62e71b652513407c561b136c258f04c"; + sha256 = "1q7jsmk301ncpn18g5qk02ypbxc9irfh30rxi9k2ab8p35j3ml4i"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/c46640394c29643eea4e59066bab9963db67b8d7/recipes/evil-better-visual-line"; + sha256 = "00l6gd66apf0gphlx5hk9lcl7rmj7ag8kf558psyzcyvhpmff2bq"; + name = "recipe"; + }; + packageRequires = [ evil ]; + meta = { + homepage = "https://melpa.org/#/evil-better-visual-line"; + license = lib.licenses.free; + }; + }) {}; evil-cleverparens = callPackage ({ dash , emacs , evil @@ -27821,12 +28540,12 @@ melpaBuild { pname = "evil-collection"; ename = "evil-collection"; - version = "20180915.632"; + version = "20181224.1551"; src = fetchFromGitHub { owner = "emacs-evil"; repo = "evil-collection"; - rev = "efc0a73eb8f6f30c1564004a954fd08501409ad0"; - sha256 = "0bqawzf4qsnql7h2mmxp0nzhy5jjgfzh2jay1frhkh1fxdnlz0is"; + rev = "4737aa47438a565119652212c16dade59f23b785"; + sha256 = "0lzwcmsm0igvh1jhjq2a8ipa2pf4lw7lm04xfxf7xj1ai30l7i40"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/fbc35279115f6fdf1ce7d1ecef3b413c7ca9c4f1/recipes/evil-collection"; @@ -27998,6 +28717,61 @@ license = lib.licenses.free; }; }) {}; + evil-ex-fasd = callPackage ({ emacs + , evil + , fasd + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "evil-ex-fasd"; + ename = "evil-ex-fasd"; + version = "20180902.2312"; + src = fetchFromGitHub { + owner = "yqrashawn"; + repo = "evil-ex-fasd"; + rev = "ed8fbbe23a8a268d9dcbf1a6132e928ba2c655c5"; + sha256 = "0fr57nlg7m65gzhnrwnqi5bgy4vzl0l0mxk63sr3561r8fnm8hbc"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/8ebdddebb0272765ebbf72073da8c2158a05f624/recipes/evil-ex-fasd"; + sha256 = "1zljsrpbsimldpc1wviw87vgm6941zz4wy8vhpplwkfbnywiwnp7"; + name = "recipe"; + }; + packageRequires = [ emacs evil fasd ]; + meta = { + homepage = "https://melpa.org/#/evil-ex-fasd"; + license = lib.licenses.free; + }; + }) {}; + evil-ex-shell-command = callPackage ({ emacs + , evil + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "evil-ex-shell-command"; + ename = "evil-ex-shell-command"; + version = "20181225.1826"; + src = fetchFromGitHub { + owner = "yqrashawn"; + repo = "evil-ex-shell-command"; + rev = "a6ca6d27c07f6a0807abfb5b8f8865f1d17f54aa"; + sha256 = "0jx2cj6p8wag7aphbgf3ij5v71prxkbxpfia8nmcpmrpvjqpsb74"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/6d4205a35cc0c4518ab1424d91bbc627e8cdae42/recipes/evil-ex-shell-command"; + sha256 = "1lbk31l7g6n6lqm8rvsfqbagqvhkp0s2v6wz8x4fnrjj0ymd4syf"; + name = "recipe"; + }; + packageRequires = [ emacs evil ]; + meta = { + homepage = "https://melpa.org/#/evil-ex-shell-command"; + license = lib.licenses.free; + }; + }) {}; evil-exchange = callPackage ({ cl-lib ? null , evil , fetchFromGitHub @@ -28034,12 +28808,12 @@ melpaBuild { pname = "evil-expat"; ename = "evil-expat"; - version = "20180719.116"; + version = "20181227.448"; src = fetchFromGitHub { owner = "edkolev"; repo = "evil-expat"; - rev = "3ff831784c5f301330ecced5ebd43cce42980d2b"; - sha256 = "15x9fl7r25dygzkc6hhw5yzza7g2dwgr7gvvim913ahnzk5g9nag"; + rev = "bfbcabe8a071f9ba628d3d88579097973bbec9e9"; + sha256 = "0midcnvzss7brlzhbmp8ig3mr26w5zl3dzd8zjgks9b222kqvvh5"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/f08f6396e66479eb9510727968c5bb01ac239476/recipes/evil-expat"; @@ -28170,12 +28944,12 @@ melpaBuild { pname = "evil-goggles"; ename = "evil-goggles"; - version = "20180725.252"; + version = "20181123.1146"; src = fetchFromGitHub { owner = "edkolev"; repo = "evil-goggles"; - rev = "d7876e6566ac82b7c3251a59651e7db6ab756589"; - sha256 = "0xr6svfk3p5py6q922p7nlaxqpd7iid2q1x5xwjfy4cg89h29vd2"; + rev = "78454a7e8bd609edf0d93cb0a7f9ed576dd33546"; + sha256 = "1yn72wmrda670h0bz3gdqh6k44ja60wkk9f4hijh9w1hw0vazk20"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/811b1261705b4c525e165fa9ee23ae191727a623/recipes/evil-goggles"; @@ -28414,12 +29188,12 @@ melpaBuild { pname = "evil-magit"; ename = "evil-magit"; - version = "20180702.853"; + version = "20181127.701"; src = fetchFromGitHub { owner = "emacs-evil"; repo = "evil-magit"; - rev = "9f32c4e190e3d67f193485f12199275ff1a047f0"; - sha256 = "0lmsc02fb9s43gs7svqq57bsznqxxzjv6s79lz2hc0rhacxb5pp9"; + rev = "c636350113995313d7c158175276849824a12a74"; + sha256 = "14kcy3fpywm5zqxqyjma8k29qhiw83s15vn3dy0jc96wxvh10rlr"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/50315ec837d2951bf5b2bb75809a35dd7ffc8fe8/recipes/evil-magit"; @@ -28458,7 +29232,8 @@ license = lib.licenses.free; }; }) {}; - evil-matchit = callPackage ({ evil + evil-matchit = callPackage ({ emacs + , evil , fetchFromGitHub , fetchurl , lib @@ -28466,19 +29241,19 @@ melpaBuild { pname = "evil-matchit"; ename = "evil-matchit"; - version = "20180822.12"; + version = "20181229.1739"; src = fetchFromGitHub { owner = "redguardtoo"; repo = "evil-matchit"; - rev = "47894a6cc02c037dd782d0c0023a3193b6b49e89"; - sha256 = "0wkgjpql7x27pgj3w20cxnl0gjcvjmphsxyvvlr79504lgmdk41a"; + rev = "abe43359bfc2608c03267639b1688e237ee7b66b"; + sha256 = "134m20ylf6vm02xgnh385w745x0ldi42m8asz41h4das6n3wv3fx"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/aeab4a998bffbc784e8fb23927d348540baf9951/recipes/evil-matchit"; sha256 = "01z69n20qs4gngd28ry4kn825cax5km9hn96i87yrvq7nfa64swq"; name = "recipe"; }; - packageRequires = [ evil ]; + packageRequires = [ emacs evil ]; meta = { homepage = "https://melpa.org/#/evil-matchit"; license = lib.licenses.free; @@ -28494,12 +29269,12 @@ melpaBuild { pname = "evil-mc"; ename = "evil-mc"; - version = "20180603.2033"; + version = "20180921.1027"; src = fetchFromGitHub { owner = "gabesoft"; repo = "evil-mc"; - rev = "779e7d35bf38b482c0fccacfbffd877e5f455457"; - sha256 = "0p0jc3vlf5q8b76adxznpsfp1clhm171ddwq63vsg6b5iwk0fpdz"; + rev = "2af29ecd2fbed1571c4cc2501dfb2e38ffd4bfa2"; + sha256 = "1996ysiaj9s34cf2z4vyw3i6jwsc1s7b6r8v3hgb8h6rg19a77mf"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/96770d778a03ab012fb82a3a0122983db6f9b0c4/recipes/evil-mc"; @@ -28580,12 +29355,12 @@ melpaBuild { pname = "evil-multiedit"; ename = "evil-multiedit"; - version = "20180209.1819"; + version = "20190102.2315"; src = fetchFromGitHub { owner = "hlissner"; repo = "evil-multiedit"; - rev = "ea3d9177b74ab0bc65e55df9cc0a0b42e4ef815d"; - sha256 = "17zm35r474z8ras4xy7124pcb972d385pbdv4jxyj5vq042vq07w"; + rev = "cb35914ffabb4f65d22ab2f812ff6e7622cc5c26"; + sha256 = "19h3kqylqzbjv4297wkzzxdmn9yxbg6z4ga4ssrqri90xs7m3rw3"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/997f5a6999d1add57fae33ba8eb3e3bc60d7bb56/recipes/evil-multiedit"; @@ -28606,12 +29381,12 @@ melpaBuild { pname = "evil-nerd-commenter"; ename = "evil-nerd-commenter"; - version = "20180722.1625"; + version = "20181226.219"; src = fetchFromGitHub { owner = "redguardtoo"; repo = "evil-nerd-commenter"; - rev = "275c95c89cc09c7096bd6fd0deabd49f29634f5d"; - sha256 = "07k4d1dy1nm9g54zwqzdqhibz2a2zfi7q27z7k8wq0ibjph96nwh"; + rev = "151ac5747539eaac5562b93c94f738d6001ab0c7"; + sha256 = "0fqcdc7wl39xrmq6ygjy5v5v2jlj6disd1bgbyy1mi8phw6irghl"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/a3e1ff69e7cc95a5b5d628524ad836833f4ee736/recipes/evil-nerd-commenter"; @@ -28624,6 +29399,31 @@ license = lib.licenses.free; }; }) {}; + evil-nl-break-undo = callPackage ({ fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "evil-nl-break-undo"; + ename = "evil-nl-break-undo"; + version = "20181125.1254"; + src = fetchFromGitHub { + owner = "VanLaser"; + repo = "evil-nl-break-undo"; + rev = "8acaecadd32937f6f1d8c3f8141fcee0de7d324e"; + sha256 = "1155bbp7mais3cf378zxnrxc5qg9qai7rcr7whd0ljf9i4aic0y9"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/a43ea989f52cebadc68c8e9c0f87f8f2e23b0974/recipes/evil-nl-break-undo"; + sha256 = "0q6b459z06h4l47b5lcxlqbksf8sbazkk569r3h2577zpc56prfn"; + name = "recipe"; + }; + packageRequires = []; + meta = { + homepage = "https://melpa.org/#/evil-nl-break-undo"; + license = lib.licenses.free; + }; + }) {}; evil-numbers = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -29035,12 +29835,12 @@ melpaBuild { pname = "evil-surround"; ename = "evil-surround"; - version = "20180102.601"; + version = "20181218.1157"; src = fetchFromGitHub { owner = "emacs-evil"; repo = "evil-surround"; - rev = "5a20c9757eff64e1567d313eb254126aef2bf3b2"; - sha256 = "094vz707iyjknmhmhdlzc8sv8x86yxgx863c23nm6fjn5n5h7jmz"; + rev = "9e445b7ab1b2381a1882804553af2789c2282987"; + sha256 = "1l1iywjhzjwkvpiibfqmv9d86iy7pvi57ajdjhgk38yj9yc9nz8i"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/2c9dc47a4c837c44429a74fd998fe468c00639f2/recipes/evil-surround"; @@ -29167,12 +29967,12 @@ melpaBuild { pname = "evil-text-object-python"; ename = "evil-text-object-python"; - version = "20160815.141"; + version = "20181126.524"; src = fetchFromGitHub { owner = "wbolster"; repo = "evil-text-object-python"; - rev = "7aae5558be25b4a33abdede8a91da1cc7d08f1bc"; - sha256 = "0qfqfqbq3jijnmg0rp6agz9skcv2drnpyn481c7f455z46xi87kl"; + rev = "9a064fe6475429145cbcc3b270fcc963b67adb15"; + sha256 = "074zpm6mmr1wfl6d5xdf8jk1fs4ccpbzf4ahhkwga9g71xiplszv"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/0d0893b07bc4a057561a1c1a85b7520c50f31e12/recipes/evil-text-object-python"; @@ -29240,6 +30040,87 @@ license = lib.licenses.free; }; }) {}; + evil-textobj-entire = callPackage ({ emacs + , evil + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "evil-textobj-entire"; + ename = "evil-textobj-entire"; + version = "20150422.554"; + src = fetchFromGitHub { + owner = "supermomonga"; + repo = "evil-textobj-entire"; + rev = "5b3a98f3a69edc3a788f539f6ffef4a0ef5e853d"; + sha256 = "0m3krfmc9llpywr0lbya36b2jbnzx1pylvhj0p1ss5rh735m00jy"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/e1da0063a17d53f30e041e08161ad8fbc9942270/recipes/evil-textobj-entire"; + sha256 = "0hkdnkv03b31330pnkijhhbyw00m7bxfvs3cgzfazsvvcsha4gmi"; + name = "recipe"; + }; + packageRequires = [ emacs evil ]; + meta = { + homepage = "https://melpa.org/#/evil-textobj-entire"; + license = lib.licenses.free; + }; + }) {}; + evil-textobj-line = callPackage ({ evil + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "evil-textobj-line"; + ename = "evil-textobj-line"; + version = "20150729.822"; + src = fetchFromGitHub { + owner = "syohex"; + repo = "evil-textobj-line"; + rev = "0209f9b84c7e1e1c42e346cdb8c0e36619471e5f"; + sha256 = "0ln72zfrzn1bnv40kyzjchmfv3dgd2wm596lxacd2kygcx4a4gky"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/24bf766525ffdaded519ac9f78ae89d8ab5108ef/recipes/evil-textobj-line"; + sha256 = "158w524qzj0f03ihid2fisxyf1g7vwpv3ckfkzi7c2l549jnsdsa"; + name = "recipe"; + }; + packageRequires = [ evil ]; + meta = { + homepage = "https://melpa.org/#/evil-textobj-line"; + license = lib.licenses.free; + }; + }) {}; + evil-textobj-syntax = callPackage ({ emacs + , evil + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild + , names }: + melpaBuild { + pname = "evil-textobj-syntax"; + ename = "evil-textobj-syntax"; + version = "20181210.413"; + src = fetchFromGitHub { + owner = "laishulu"; + repo = "evil-textobj-syntax"; + rev = "2d9ba8c75c754b409aea7469f46a5cfa52a872f3"; + sha256 = "031p5i3274dazp7rz6m5y38shfgszm1clmkcf58qfqlvy978ammc"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/0dba37e5a2ba5ef1f397b37d6845acdc4872e5f2/recipes/evil-textobj-syntax"; + sha256 = "0d0fg71xmbqhx91ljnkxmakcc0qn3341wjjmzax33qilz5syp3m9"; + name = "recipe"; + }; + packageRequires = [ emacs evil names ]; + meta = { + homepage = "https://melpa.org/#/evil-textobj-syntax"; + license = lib.licenses.free; + }; + }) {}; evil-tutor = callPackage ({ evil , fetchFromGitHub , fetchurl @@ -29741,12 +30622,12 @@ melpaBuild { pname = "extmap"; ename = "extmap"; - version = "20180205.1047"; + version = "20181028.945"; src = fetchFromGitHub { owner = "doublep"; repo = "extmap"; - rev = "3860b69fb19c962425d4e271ee0a24547b67d323"; - sha256 = "1vjwinb7m9l2bw324v4m1g4mc9yqjs84bfjci93m0a1ih8n4zdbr"; + rev = "1139b57d8f4276fe56b8416fdaf4745f2cdfe7c3"; + sha256 = "0jgyscjfparnby0whrmbgvsab2a7qkaqhysmh3s3jh635fndm253"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/91ef4352603cc69930ab3d63f0a90eee63f5f328/recipes/extmap"; @@ -29759,6 +30640,35 @@ license = lib.licenses.free; }; }) {}; + exunit = callPackage ({ dash + , emacs + , f + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild + , s }: + melpaBuild { + pname = "exunit"; + ename = "exunit"; + version = "20181231.18"; + src = fetchFromGitHub { + owner = "ananthakumaran"; + repo = "exunit.el"; + rev = "8cae9a7420c2872984fdb9a93e20a78c4f714560"; + sha256 = "0v7zf81pr7g487df41hic0b3zhyvhfprv89ysy9pq658980sq759"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/94e4fd4cf58b280d08d22aff4dd9c47201a29e72/recipes/exunit"; + sha256 = "1wyxxy1hd50p17widf31sysp28adr09n8ksyd3hn6pnvyn2m0k81"; + name = "recipe"; + }; + packageRequires = [ dash emacs f s ]; + meta = { + homepage = "https://melpa.org/#/exunit"; + license = lib.licenses.free; + }; + }) {}; exwm-edit = callPackage ({ emacs , fetchFromGitHub , fetchurl @@ -29785,6 +30695,61 @@ license = lib.licenses.free; }; }) {}; + exwm-firefox-core = callPackage ({ emacs + , exwm + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "exwm-firefox-core"; + ename = "exwm-firefox-core"; + version = "20181126.920"; + src = fetchFromGitHub { + owner = "walseb"; + repo = "exwm-firefox-core"; + rev = "e2cc27e180a6721e9cf1c84d354bdbfff515d054"; + sha256 = "0a84s3bx62ld14zkirywx7cfc018zbx6caaav9mlqj03lvc6wcsi"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/745a2b98c48b00cd794dfb97be4072813ee67ada/recipes/exwm-firefox-core"; + sha256 = "1d6j8nrlb7lsyki796vpfidj8y2cz5lnqf8zzfqsbqf92kj5v9zd"; + name = "recipe"; + }; + packageRequires = [ emacs exwm ]; + meta = { + homepage = "https://melpa.org/#/exwm-firefox-core"; + license = lib.licenses.free; + }; + }) {}; + exwm-firefox-evil = callPackage ({ emacs + , evil + , exwm + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "exwm-firefox-evil"; + ename = "exwm-firefox-evil"; + version = "20181203.411"; + src = fetchFromGitHub { + owner = "walseb"; + repo = "exwm-firefox-evil"; + rev = "e23ebbb9bf1c75536bde9d563ec8668db11533d6"; + sha256 = "1mm84028yjz790xpqpdal8k1pd4adlfk6cn35rrqh5yb0g9wj91c"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/09fa63c7bd639c0b7dda540504c74cdbbe4f9875/recipes/exwm-firefox-evil"; + sha256 = "0wg3jydgj2fi5gxv3kwm1dvpxvc3ypn28kxlzfp801xrrfc241ml"; + name = "recipe"; + }; + packageRequires = [ emacs evil exwm ]; + meta = { + homepage = "https://melpa.org/#/exwm-firefox-evil"; + license = lib.licenses.free; + }; + }) {}; exwm-surf = callPackage ({ emacs , exwm , fetchFromGitHub @@ -29826,12 +30791,12 @@ melpaBuild { pname = "exwm-x"; ename = "exwm-x"; - version = "20180227.257"; + version = "20181213.608"; src = fetchFromGitHub { owner = "tumashu"; repo = "exwm-x"; - rev = "4f7946db67d6599baba6b3961e8f543a68707742"; - sha256 = "00lcn5106xig2y9gyir1f1gzyp2i05rwq1lbbbah8aipkdi3z9xl"; + rev = "88c8b70be678ce0e9fa31e191ffd3f76bbfee61f"; + sha256 = "03l3dl7s1qys1kkh40rm1sfx7axy1b8sf5f6nyksj9ps6d30p5i4"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/a0e6e23bcffdcd1e17c70599c563609050e5de40/recipes/exwm-x"; @@ -30121,12 +31086,12 @@ melpaBuild { pname = "faff-theme"; ename = "faff-theme"; - version = "20180702.1023"; + version = "20181114.536"; src = fetchFromGitHub { owner = "WJCFerguson"; repo = "emacs-faff-theme"; - rev = "596c8cfbf1a7fbc3b93643359f8d0f4c612d69be"; - sha256 = "03jrlk5n9jd3mw6k36qblzl89yj6q8ir9krvilb3da170pr6b4pa"; + rev = "646ab8b56093614679b8465993eae9678e792c12"; + sha256 = "031jqw9sna4b12ki1am0xy9mqzh6a6r5dayhqpv0fbnbr6spvscy"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/0b35c169fe56a5612ff5a4242140f617fdcae14f/recipes/faff-theme"; @@ -30528,12 +31493,12 @@ melpaBuild { pname = "fennel-mode"; ename = "fennel-mode"; - version = "20180731.2050"; + version = "20181230.1836"; src = fetchFromGitLab { owner = "technomancy"; repo = "fennel-mode"; - rev = "b1f07dff0b16a0bc912528e3c1a70231488a1399"; - sha256 = "1s07qbj6m93g4cjhmwxb1s7bh3py68knznnmhh3fqwxbqzm6bzf0"; + rev = "1addd6a49a42921cf3de5b58499c692c888b0afb"; + sha256 = "1b381crm847aid7w44ig17jyffnhyafbj8libvrac3cgw3ndcqj7"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/cda0732050a17b2dc70b80afd6fc6bb9cf8bb60f/recipes/fennel-mode"; @@ -30813,12 +31778,12 @@ melpaBuild { pname = "find-file-in-project"; ename = "find-file-in-project"; - version = "20180912.518"; + version = "20181216.1846"; src = fetchFromGitHub { owner = "technomancy"; repo = "find-file-in-project"; - rev = "a3d89bc16432bd44d4a4ebfd01dab57a88025327"; - sha256 = "033pfb1xc2chnbnwbf2vbhc96dnjmj37yhgbmxjl4b5hws73wh3c"; + rev = "0072b813fc77ef34f776fcafbd13c4aeeae360cf"; + sha256 = "1m7z4m9b3a7pfsbcda71mhn9vjjjbnaql69jnb4i1afwh5nwm7hx"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/cae2ac3513e371a256be0f1a7468e38e686c2487/recipes/find-file-in-project"; @@ -31044,12 +32009,12 @@ melpaBuild { pname = "fireplace"; ename = "fireplace"; - version = "20160811.519"; + version = "20181211.1127"; src = fetchFromGitHub { owner = "johanvts"; repo = "emacs-fireplace"; - rev = "2b966ed65b714c613f79e9144d004dfa3b28f1ed"; - sha256 = "1f5053bbvjdmm64zv6r2qkswkpwvx0s3qz4bwm9zya583a6g0nv8"; + rev = "571ffa7dd0ce46edca838df74d055aaa83da4d78"; + sha256 = "1iw17rkihsn50p3zljag82v09zyav8bzgfn6mfa267fkf4f1fgjy"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/4c1ac52c1cfe7ccf46092c2d299ebbffdc1b7609/recipes/fireplace"; @@ -31097,14 +32062,14 @@ ename = "firrtl-mode"; version = "20180221.1555"; src = fetchFromGitHub { - owner = "ibm"; + owner = "IBM"; repo = "firrtl-mode"; rev = "1ac00d526018945389bcb2292dbdd8395381774a"; sha256 = "02xznsiij39lhjr261vl7yz4k4i76vshh5kwa7ax95zpj2zbs0v6"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/8bbf9ab9db03410c35b8b73a23bf8062b10f0815/recipes/firrtl-mode"; - sha256 = "11n3wjr9sinqafjs88bznb5rppnignwkn4m4ppixi6xr31v3i4ws"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/35763febad20f29320d459394f810668db6c3353/recipes/firrtl-mode"; + sha256 = "19r7wbw9pr05p8fywcnbbpdpklic2vd2bsy80r7xrzgs4fcl12as"; name = "recipe"; }; packageRequires = [ emacs ]; @@ -31172,12 +32137,12 @@ melpaBuild { pname = "fix-input"; ename = "fix-input"; - version = "20171231.2220"; + version = "20181231.2308"; src = fetchFromGitHub { owner = "mrkkrp"; repo = "fix-input"; - rev = "e053fcc641f1f835f2fdb71143e095c1889b8233"; - sha256 = "1w8vv2ijmsch02xsc1r97r6s3jz0dkd8kwz5wgiizq5ghx7x6x6j"; + rev = "02ce45f104284bc9ea7f8e7d1dc73bf9cd3f47d7"; + sha256 = "0xqid3s8q3swc2j4rj94lv8snk898www9ycp5l4264lii2dc7mnm"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/7d31f907997d1d07ec794a4f09824f43818f035c/recipes/fix-input"; @@ -31224,12 +32189,12 @@ melpaBuild { pname = "fix-word"; ename = "fix-word"; - version = "20171231.2215"; + version = "20181231.2303"; src = fetchFromGitHub { owner = "mrkkrp"; repo = "fix-word"; - rev = "3e3339f5d44dd8be100cec1c88bcaefd328a2bde"; - sha256 = "0hd5bhq57qgabs881xfrz1v1n8sp1nv2hrfs386dx7g5b3ancr0i"; + rev = "a8472f32a923388c4c4bc3b0bed4da915f03276b"; + sha256 = "1k23bpjy17pmycin4886cxk49gw1flqbfnwgxnxmmk3v39nx58s3"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/22636390e8a15c09293a1506a901286dd72e565f/recipes/fix-word"; @@ -31493,12 +32458,12 @@ melpaBuild { pname = "flex-compile"; ename = "flex-compile"; - version = "20180812.1156"; + version = "20181227.2248"; src = fetchFromGitHub { owner = "plandes"; repo = "flex-compile"; - rev = "4ca1a706aa1bc684a143d3430f009147df9c8e82"; - sha256 = "0dzh3f99hf5n3fzqsxm4asl34sr451rn15miy4xk7jlg9j6y8i9s"; + rev = "e91797c2185ed93e64fd5d11ab244d561278c744"; + sha256 = "18nbwidahm2n7fwznk5flxnf7rq77r5649wz45j0g4zvqpi1nwkl"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/259caeebc317e81ab9d532a371ea85656c2b1619/recipes/flex-compile"; @@ -31675,12 +32640,12 @@ melpaBuild { pname = "flower"; ename = "flower"; - version = "20180821.902"; + version = "20181025.926"; src = fetchFromGitHub { owner = "PositiveTechnologies"; repo = "flower"; - rev = "a0e6912e6e709e5cf083d48cebffdb60b809c59a"; - sha256 = "04m6x5hiac9f4ffjw82g9gcy5r84vfrm4vj67f1vqr7llqbflkzm"; + rev = "49e224ab26d85f5cd4a3ad9cdac391264b80ad5e"; + sha256 = "1kn9sibvsnaprhjwfz1cdvb4mi4d4qsp70gxjij58dk51jpni7yf"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/c8a731715d360aea9af2b898242fd4eee5419d14/recipes/flower"; @@ -31693,6 +32658,32 @@ license = lib.licenses.free; }; }) {}; + flucui-themes = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "flucui-themes"; + ename = "flucui-themes"; + version = "20181217.1649"; + src = fetchFromGitHub { + owner = "MetroWind"; + repo = "flucui-theme"; + rev = "bbea224c8020d40260e7da581acd7601eeaf84c4"; + sha256 = "1fdvl2i3h0ql678jcd1jsp008rwl5clm438gi8hgdjwygn3byv1k"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/77d06aa7405f0badf5ab425ddeeb7a754c17d2af/recipes/flucui-themes"; + sha256 = "0ki2vxjhccyi6w2y9qj6xbfqgvjd91wqkzn6qq8ig6ggqir7wc6a"; + name = "recipe"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://melpa.org/#/flucui-themes"; + license = lib.licenses.free; + }; + }) {}; fluxus-mode = callPackage ({ emacs , fetchFromGitHub , fetchurl @@ -31813,12 +32804,12 @@ melpaBuild { pname = "flycheck"; ename = "flycheck"; - version = "20180907.619"; + version = "20181214.248"; src = fetchFromGitHub { owner = "flycheck"; repo = "flycheck"; - rev = "253febbdab8630814eb6b59daf536dfdb948a575"; - sha256 = "0azc678wrxqsqg504wslzb99r5fmwbivs7z7nbp2p9v2rmr56ixy"; + rev = "365e3aa8f3ace560a12b4bf57bbf775b4f9db7a3"; + sha256 = "12lkdzr7iqgrsq3ll12rqka1d5mccx656bgid7f8xf1bipnz0129"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/649f9c3576e81409ae396606798035173cc6669f/recipes/flycheck"; @@ -31839,12 +32830,12 @@ melpaBuild { pname = "flycheck-apertium"; ename = "flycheck-apertium"; - version = "20160406.618"; + version = "20181211.238"; src = fetchFromGitHub { owner = "unhammer"; repo = "flycheck-apertium"; - rev = "71cf49d5aaee962b995583384bfa045a1d4c3db7"; - sha256 = "14idjjz6fhmq806mmncmqnr9bvcjks6spin8z6jb0gqcg1dbhm06"; + rev = "22b60a17836477ac1edd15dc85b14f88ca871ba9"; + sha256 = "0313h4yh85xndzvy3yzznar79ys0ng3rdsz0xa237xqsf71ypg4z"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/7f6cec0d312f0e86e17829e6fd8f87acabc0174f/recipes/flycheck-apertium"; @@ -32002,12 +32993,12 @@ melpaBuild { pname = "flycheck-clang-analyzer"; ename = "flycheck-clang-analyzer"; - version = "20180903.2004"; + version = "20180917.725"; src = fetchFromGitHub { owner = "alexmurray"; repo = "flycheck-clang-analyzer"; - rev = "6568e082057c028c721ceda69bddd745fee5c5d5"; - sha256 = "1ljgwyn44qcqmxxwff332d7ks6ky3rcwji6kfyrx4cadcvsyc81g"; + rev = "5c707505e3ea806fddb54d031ab64351293d7c2d"; + sha256 = "0frbblyibalzskw2kv294yz846g04wlvpyshfwm95vwilv1f305v"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/8de7b717a1b0caf30f8f29d3e764b4756b93aeff/recipes/flycheck-clang-analyzer"; @@ -32355,14 +33346,14 @@ ename = "flycheck-demjsonlint"; version = "20161114.2318"; src = fetchFromGitHub { - owner = "zenkiezhu"; + owner = "uqix"; repo = "flycheck-demjsonlint"; rev = "1c433150fdf628dda4c9fad938bf7c79610b4460"; sha256 = "0kmvwmaxw64xjgchq8szk9mhbi6xp2jhv7qpgqndf4svia4pqws6"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/3416586d4d782cdd61a56159c5f80a0ca9b3ddf4/recipes/flycheck-demjsonlint"; - sha256 = "034n95wknsqapi6n38v83zym5zi07q364b8icm27clpvgv5jy2fi"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/9a15a17a5aa78aed72958b2a1bde53f0c0ab5be7/recipes/flycheck-demjsonlint"; + sha256 = "0bcfkc9fch1h6gva64j71kb9l8fc9rz6wk0s9w1c1chx1z4nlill"; name = "recipe"; }; packageRequires = [ flycheck ]; @@ -32533,24 +33524,26 @@ , fetchFromGitHub , fetchurl , flycheck + , let-alist , lib - , melpaBuild }: + , melpaBuild + , seq }: melpaBuild { pname = "flycheck-elm"; ename = "flycheck-elm"; - version = "20160717.257"; + version = "20181106.1746"; src = fetchFromGitHub { owner = "bsermons"; repo = "flycheck-elm"; - rev = "b401873ebd2176190a0a6fb4d61c2cca97d3b9fb"; - sha256 = "18apypk32dyg8zwvrcsza2j10z4zbpff04cz3xzhjskmkzw6210i"; + rev = "debd0af563cb6c2944367a691c7fa3021d9378c1"; + sha256 = "1vl0lss2n50pz5wscqj6vhjwb4hbg8xx2chh5vafsrnn0a3fryrd"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/78bdcdaa660beda29acecb51761b95d8664d28ac/recipes/flycheck-elm"; sha256 = "06dpv19wgbw48gbf701c77vw1dkpddx8056wpim3zbvwwfwk8ra4"; name = "recipe"; }; - packageRequires = [ emacs flycheck ]; + packageRequires = [ emacs flycheck let-alist seq ]; meta = { homepage = "https://melpa.org/#/flycheck-elm"; license = lib.licenses.free; @@ -32566,12 +33559,12 @@ melpaBuild { pname = "flycheck-elsa"; ename = "flycheck-elsa"; - version = "20180823.726"; + version = "20181029.721"; src = fetchFromGitHub { owner = "emacs-elsa"; repo = "flycheck-elsa"; - rev = "74afd455e47b917899c81313392ce414042f252c"; - sha256 = "1q81g96kg243y0ihz8vmvdzycyabzm3x1kd97qpj89a4vcka26id"; + rev = "ea7bac8ddd1e2bf60ee1744a83bc0c4dd1dc70d0"; + sha256 = "0bcfbdnc13jscl7dw06yfzgkamfapfnyqccg8mdm5sin8kvbdhc8"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/2a15c49d2fc800a6b69304edd6dbad90aaa5053f/recipes/flycheck-elsa"; @@ -32620,12 +33613,12 @@ melpaBuild { pname = "flycheck-flow"; ename = "flycheck-flow"; - version = "20180801.542"; + version = "20181128.736"; src = fetchFromGitHub { owner = "lbolla"; repo = "emacs-flycheck-flow"; - rev = "5d42270c798918c05c5e983e774063930bd87838"; - sha256 = "009nlyyb5z09d8474fhfwi0imia2igiq1adxa6ibqrz9km867b8q"; + rev = "d945f21c74ba8a0f32e1eacb96c1361ebbe2d863"; + sha256 = "1yvzfbvr47yd4ykasw7rlw32jd30b1zryyj1zwcy3dfqc72b3qrg"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/4d18fb21d8ef9b33aa84bc26f5918e636c5771e5/recipes/flycheck-flow"; @@ -32728,12 +33721,12 @@ melpaBuild { pname = "flycheck-gradle"; ename = "flycheck-gradle"; - version = "20180403.33"; + version = "20180923.1900"; src = fetchFromGitHub { owner = "jojojames"; repo = "flycheck-gradle"; - rev = "a14b45183e50993e8b28a4c57ad5db82b789faef"; - sha256 = "1n3i0fh0rvy29gykqamxayfbbv5jy3h6l375pw4ckydcqlp0dgxk"; + rev = "6a61daada4b2353a1c7c223cf8d5bccb907534c8"; + sha256 = "1crfmz3blki768a91pn6gm24fwlfid3pm4xchjr416amm539md08"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/382d9afd2bbb0c137719c308a67d185b86d84331/recipes/flycheck-gradle"; @@ -32755,11 +33748,11 @@ melpaBuild { pname = "flycheck-grammalecte"; ename = "flycheck-grammalecte"; - version = "20180723.204"; + version = "20181129.920"; src = fetchgit { url = "https://git.deparis.io/flycheck-grammalecte/"; - rev = "4f5937c58f895a62ccb3466af20b26a61ef9071c"; - sha256 = "15jpck7h2bn6idfzizjw79nfza3lm9dj03v0r44pnm1ryx7l89w7"; + rev = "dae94fceeaf6ffc758b58eef6cecaadb6cb6c98b"; + sha256 = "1k72qhjdzd38ij45ji636ybqx8dd4h99di6aqv80z5p7njj93z6d"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/fdd82aa0568d998a3d176b5ee47b8a227438ea09/recipes/flycheck-grammalecte"; @@ -32785,12 +33778,12 @@ melpaBuild { pname = "flycheck-haskell"; ename = "flycheck-haskell"; - version = "20180611.1442"; + version = "20181207.846"; src = fetchFromGitHub { owner = "flycheck"; repo = "flycheck-haskell"; - rev = "32877c2912d435c30c0202680611d127862a372c"; - sha256 = "1glqpgk27fabhs8g6h6g0mlaxbvg2vb2z99rr27nk938f0mv65za"; + rev = "32ddff87165a7d3a35e7318bee997b5b4bd41278"; + sha256 = "10pgsbagq6qj4mshq5sypv0q0khck92b30sc793b4g1pfpsxvgjn"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/6ca601613788ae830655e148a222625035195f55/recipes/flycheck-haskell"; @@ -32839,12 +33832,12 @@ melpaBuild { pname = "flycheck-inline"; ename = "flycheck-inline"; - version = "20180821.149"; + version = "20181218.410"; src = fetchFromGitHub { owner = "flycheck"; repo = "flycheck-inline"; - rev = "259ad47ac4ab42b7cc5c41f6d80b9888941507c6"; - sha256 = "0cfk1ji1sn3ikhk8jvs2bhdhpd60dw7162112s2zp6yrbr9d6lkw"; + rev = "242c975bce9dfae8c36f4986cddb84358a3f9e56"; + sha256 = "0lzy2k7i4jxcixx7ivkhivl5zan6ag9kkxns7wviinj67nwmcvv0"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/a9ecc3a4696d2b3b0f0b8b1ca6e5285380ac046a/recipes/flycheck-inline"; @@ -33080,12 +34073,12 @@ melpaBuild { pname = "flycheck-mercury"; ename = "flycheck-mercury"; - version = "20151122.2334"; + version = "20181118.1152"; src = fetchFromGitHub { owner = "flycheck"; repo = "flycheck-mercury"; - rev = "fa9e433a0a912f0fae9e4dec9ea616ef99fcf861"; - sha256 = "0isqa6ybdd4166h3rdcg0b8pcxn00v8dav58xwfcj92nhzvs0qca"; + rev = "b6807a8db70981e21a91a93324c31e49de85c89f"; + sha256 = "15pjqglpcwm4wy0cxk1man3ar0n56qi1bjrr1fxfjq2xwsgsfagh"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/a775d12d9b9b6f27a44aeffbbb18de46a9e1b532/recipes/flycheck-mercury"; @@ -33134,12 +34127,12 @@ melpaBuild { pname = "flycheck-mmark"; ename = "flycheck-mmark"; - version = "20180203.932"; + version = "20181231.2257"; src = fetchFromGitHub { owner = "mmark-md"; repo = "flycheck-mmark"; - rev = "7fdcc48ff6ffa5e7db126a76f4948ab08b9eb8d4"; - sha256 = "0g6a8nm5mxgca7psyi127ky68mal0lj7n486fgrwsg3bxglbsk5m"; + rev = "a11563dcb9ed48f71274e0c6eb9e76b65d44bf40"; + sha256 = "00pg5cds9s82aip9bh9f6qlknzcfdxlj37gi8cffknxxgmvrrjbc"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/2fd10423ab80e32245bb494005c8f87a8987fffb/recipes/flycheck-mmark"; @@ -33241,12 +34234,12 @@ melpaBuild { pname = "flycheck-objc-clang"; ename = "flycheck-objc-clang"; - version = "20180410.422"; + version = "20181116.401"; src = fetchFromGitHub { owner = "GyazSquare"; repo = "flycheck-objc-clang"; - rev = "f4a76ac199b67ff383ab5e70434c9b98b48c92d5"; - sha256 = "0ryanx4vmy9jwqjnwvma6dm136y4fh227cyhz206km6595bbn3nc"; + rev = "a3781e47f14068c811534a3348bf479eeb3f2041"; + sha256 = "00a2wg6g74plbmva3bwms7brdlv9i28w51yxisiv04la126m69js"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/4ff4412f507371b93cfb85fc744e54110cd87338/recipes/flycheck-objc-clang"; @@ -33325,15 +34318,15 @@ melpaBuild { pname = "flycheck-pact"; ename = "flycheck-pact"; - version = "20180830.846"; + version = "20180920.1352"; src = fetchFromGitHub { owner = "kadena-io"; repo = "flycheck-pact"; - rev = "45fae1ceeface5ab15fc63a9143440060f8d09c0"; - sha256 = "1zvhffrl2xcxmmfv8qavm2ig8zvpax8g7azxbdbbjq3nc6b6fv7b"; + rev = "0e10045064ef89ec8b6f5a473073d47b976a2ca3"; + sha256 = "072jc0vrjg531ydk5bjrjpmbvdk81yw75jqjnvb7alkib6jn5f9r"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/d0cf6f4a6c7c156aa0edc903521dca82e312621c/recipes/flycheck-pact"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/0ffc77b2ddcd4f9c27a2306459cf2fcde7880e3e/recipes/flycheck-pact"; sha256 = "1nxmh6p2id4cxzs7jxdrk88g8qmvk33nbzmrqhm7962iqizlvnrw"; name = "recipe"; }; @@ -33628,12 +34621,12 @@ melpaBuild { pname = "flycheck-pycheckers"; ename = "flycheck-pycheckers"; - version = "20180820.1344"; + version = "20190102.1014"; src = fetchFromGitHub { owner = "msherry"; repo = "flycheck-pycheckers"; - rev = "427e54a783174004202b6397b1e060c4b0a6989f"; - sha256 = "0071qvqqyaniwc7xd8wq7vg17rx8w02k9nb6ji3fjhv5ywpk9w07"; + rev = "23de65612cf29ab77504e8b61aa000f548463410"; + sha256 = "0hjwcb77bmqzajzwmjs01kpqhh7l71vrvad4zlfwhyqnkdsn0x7c"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/af36dca316b318d25d65c9e842f15f736e19ea63/recipes/flycheck-pycheckers"; @@ -33672,6 +34665,34 @@ license = lib.licenses.free; }; }) {}; + flycheck-pyre = callPackage ({ cl-lib ? null + , emacs + , fetchFromGitHub + , fetchurl + , flycheck + , lib + , melpaBuild }: + melpaBuild { + pname = "flycheck-pyre"; + ename = "flycheck-pyre"; + version = "20181013.1855"; + src = fetchFromGitHub { + owner = "linnik"; + repo = "flycheck-pyre"; + rev = "8b14688df52de9f2d8f8ddcb9bc6f2b44bc8e70c"; + sha256 = "0zw76znq80bxa6imn5nyzdpwn3fa0wsm3jfdaayllkqix6x6igvk"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/aca6199ebfbf93f844c8f7a3db785dec079ef8af/recipes/flycheck-pyre"; + sha256 = "0h7ccxw9ymlmr2vq3p61cbfxfcjs8pzm73654s13c18rbl6dzfxv"; + name = "recipe"; + }; + packageRequires = [ cl-lib emacs flycheck ]; + meta = { + homepage = "https://melpa.org/#/flycheck-pyre"; + license = lib.licenses.free; + }; + }) {}; flycheck-rebar3 = callPackage ({ fetchFromGitHub , fetchurl , flycheck @@ -33756,6 +34777,33 @@ license = lib.licenses.free; }; }) {}; + flycheck-soar = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , flycheck + , lib + , melpaBuild }: + melpaBuild { + pname = "flycheck-soar"; + ename = "flycheck-soar"; + version = "20181106.52"; + src = fetchFromGitHub { + owner = "tszg"; + repo = "flycheck-soar"; + rev = "d2f03a0af9b625a645f3194dc24cfeee94d92760"; + sha256 = "02ll2nw2x45nfmxdj1ps62jr663spy01vy8gfg1qh2rl1pjviwqw"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/15cae578c5ba5152be0726f046b5f2dc4719a387/recipes/flycheck-soar"; + sha256 = "14xpq3pdfwacmhl9x8fdzcsanpf6zljdzh6gwclw724k720acbdl"; + name = "recipe"; + }; + packageRequires = [ emacs flycheck ]; + meta = { + homepage = "https://melpa.org/#/flycheck-soar"; + license = lib.licenses.free; + }; + }) {}; flycheck-stack = callPackage ({ fetchFromGitHub , fetchurl , flycheck @@ -33848,12 +34896,12 @@ melpaBuild { pname = "flycheck-swift3"; ename = "flycheck-swift3"; - version = "20180411.652"; + version = "20181116.402"; src = fetchFromGitHub { owner = "GyazSquare"; repo = "flycheck-swift3"; - rev = "06a6f98d7e498860b345bbd03e96bfe59608f508"; - sha256 = "0h1n4x0fvqfb6jcapbab1ck6bj4d7irbn9zz2hxv2rlrkqxfsmh3"; + rev = "37994f11c93f585119647e6ba10761e9766b593d"; + sha256 = "12611z7f53pw0yn70m40nsp6qd2jpm2hdf8s2gqz4lf0qh2z91lb"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/f1fb8c731c118327dc0bbb726e046fec46bcfb82/recipes/flycheck-swift3"; @@ -33985,12 +35033,12 @@ melpaBuild { pname = "flycheck-vale"; ename = "flycheck-vale"; - version = "20180308.2243"; + version = "20180928.42"; src = fetchFromGitHub { owner = "abingham"; repo = "flycheck-vale"; - rev = "7777e0d4cf961b6ee6ae4ef917636121d18b3ee8"; - sha256 = "1k0bhyy2r9c79lld7mbhw8n4c1hlzwr5qp5wmcxzya0fnp3s6g9j"; + rev = "131dacdf55e2b469d64543e4ae373aa93ec40a4f"; + sha256 = "07927h7d8qpf7wi6ish8lh15x414qz4298bik3p7vgls7qr8di4h"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/7693eeb536e601589b49f96d0e2734cd08fad4f2/recipes/flycheck-vale"; @@ -34013,12 +35061,12 @@ melpaBuild { pname = "flycheck-vdm"; ename = "flycheck-vdm"; - version = "20180830.2352"; + version = "20181127.1223"; src = fetchFromGitHub { owner = "peterwvj"; repo = "vdm-mode"; - rev = "0c083ee4848ea5d78de7894a4a0722d6630839c9"; - sha256 = "175zlxxjxl7zp80hm2hz5xw7gy3qh0hz3fdvqy8v3n0vz4zvqx1k"; + rev = "e131edb0d35de28bd47d6128dd70d9a6fc46e0fa"; + sha256 = "090a0imk7dr6vqq4lf806pvajqc499x2gmi0k7rgc1696rbyzhb5"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/f246b9dcf7915a845b9e2cd44cc1a0833b412c8f/recipes/flycheck-vdm"; @@ -34123,12 +35171,12 @@ melpaBuild { pname = "flycheck-ycmd"; ename = "flycheck-ycmd"; - version = "20180207.843"; + version = "20181015.2318"; src = fetchFromGitHub { owner = "abingham"; repo = "emacs-ycmd"; - rev = "e21c99de8fd2992031adaa758df0d495e55d682a"; - sha256 = "1l9xsqlcqi25mdka806gz3h4y4x0dh00n6bajh3x908ayixjgf91"; + rev = "ef87d020d3314efbac2e8925c115d0ac5c128c2a"; + sha256 = "143xc0ji8s3par4jfz8fxwrxqwfhndc1w8vrzpsycxc36mryzy26"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/855ea20024b606314f8590129259747cac0bcc97/recipes/flycheck-ycmd"; @@ -34245,6 +35293,33 @@ license = lib.licenses.free; }; }) {}; + flymake-diagnostic-at-point = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild + , popup }: + melpaBuild { + pname = "flymake-diagnostic-at-point"; + ename = "flymake-diagnostic-at-point"; + version = "20180815.304"; + src = fetchFromGitHub { + owner = "meqif"; + repo = "flymake-diagnostic-at-point"; + rev = "379616b1c6f5ebeaf08fbe54ae765008a78b3be7"; + sha256 = "1wbzrxxz5z1xg2lwmqgglvixxf1xm3gl6mdyj9idsbym05azm3hg"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/b7ae169ca3b59d3b876d52148dac573b7f083ac3/recipes/flymake-diagnostic-at-point"; + sha256 = "0cdxb9w5sq6z6wramj1bss5vwqzxkmdyzb1di39rghyh243cdrzx"; + name = "recipe"; + }; + packageRequires = [ emacs popup ]; + meta = { + homepage = "https://melpa.org/#/flymake-diagnostic-at-point"; + license = lib.licenses.free; + }; + }) {}; flymake-easy = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -34371,6 +35446,32 @@ license = lib.licenses.free; }; }) {}; + flymake-gradle = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "flymake-gradle"; + ename = "flymake-gradle"; + version = "20180923.1900"; + src = fetchFromGitHub { + owner = "jojojames"; + repo = "flymake-gradle"; + rev = "812f2ecf93781b0c152cd278f9cb5a6b662d66bf"; + sha256 = "1dns1k0jp8av9yx5d3061x82f0kfm6a2gkax954l7f03mhiyxmww"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/7cccc8537324e0faf7fd35325e3ccd3b2e05771a/recipes/flymake-gradle"; + sha256 = "00wpymzw2j2zx37nq8qf77pk04r0hxlmlwykcj6yzq9bfgi75wnf"; + name = "recipe"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://melpa.org/#/flymake-gradle"; + license = lib.licenses.free; + }; + }) {}; flymake-haml = callPackage ({ fetchFromGitHub , fetchurl , flymake-easy @@ -34735,6 +35836,32 @@ license = lib.licenses.free; }; }) {}; + flymake-racket = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "flymake-racket"; + ename = "flymake-racket"; + version = "20180911.1809"; + src = fetchFromGitHub { + owner = "jojojames"; + repo = "flymake-racket"; + rev = "7900d9c1a34a55ca281cc997e9620f5f31cc098c"; + sha256 = "10iygb5wmdqc2fk398l918bz56myd858h6xvgd8ml1av7v5x3zmp"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/67f2b469ea8df6d0db6b9ece91f544c0e7dd3ab2/recipes/flymake-racket"; + sha256 = "173dyn8bxggyh0g97gg5f0si3905116i3k6s3islsblgrz00gjcn"; + name = "recipe"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://melpa.org/#/flymake-racket"; + license = lib.licenses.free; + }; + }) {}; flymake-ruby = callPackage ({ fetchFromGitHub , fetchurl , flymake-easy @@ -34847,12 +35974,12 @@ melpaBuild { pname = "flymake-shellcheck"; ename = "flymake-shellcheck"; - version = "20180830.445"; + version = "20181213.1624"; src = fetchFromGitHub { owner = "federicotdn"; repo = "flymake-shellcheck"; - rev = "d56607235bb2b0a08920c326702fea0724f118a7"; - sha256 = "14jb789sn9najrkvwp5v3pjfq5va192wmc5zf86ni0am2856z3pl"; + rev = "ee240f2177510ffadbb21220e2b2376edff05020"; + sha256 = "1nrpgxwkybz7wd0751j9224fvg0lfmkdxqac39mlbzx8ypk6sy3q"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/8dccb106ff6c9cb4b14440be9026c3e427dddff2/recipes/flymake-shellcheck"; @@ -34917,6 +36044,32 @@ license = lib.licenses.free; }; }) {}; + flymake-vnu = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "flymake-vnu"; + ename = "flymake-vnu"; + version = "20181127.1816"; + src = fetchFromGitHub { + owner = "theneosloth"; + repo = "flymake-vnu"; + rev = "7c4ab9d12611756ad5a80d866890b2f9b73fb611"; + sha256 = "1jzdypfbvdbm9z6ankl35bzlpf32iymzlvxmdykddzwzbhkj1npf"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/0cfb4c70ebb75088ef6fb39efde91429802b4671/recipes/flymake-vnu"; + sha256 = "05i6sfylg716cr0k0hyvkmag25qcqh51plljv6sw8250fwxwn0xn"; + name = "recipe"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://melpa.org/#/flymake-vnu"; + license = lib.licenses.free; + }; + }) {}; flymake-yaml = callPackage ({ fetchFromGitHub , fetchurl , flymake-easy @@ -35001,12 +36154,12 @@ melpaBuild { pname = "flyspell-correct"; ename = "flyspell-correct"; - version = "20180915.654"; + version = "20181223.348"; src = fetchFromGitHub { owner = "d12frosted"; repo = "flyspell-correct"; - rev = "8aae6cf10527651b4a07b0b5f33257713d8f4211"; - sha256 = "1xvnwd7pn5f6kyv8p6rc84414yvhg6qwfddwxbqyyb13d48haxvd"; + rev = "cf492832a59d1b1112868fff430a6f74f9baf83a"; + sha256 = "102nf4abm6kpk3mkf850hq55x61nvv919p66jdg9ry732682987b"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/fa06fbe3bc40ae5e3f6d10dee93a9d49e9288ba5/recipes/flyspell-correct"; @@ -35028,12 +36181,12 @@ melpaBuild { pname = "flyspell-correct-helm"; ename = "flyspell-correct-helm"; - version = "20180427.1135"; + version = "20181205.1132"; src = fetchFromGitHub { owner = "d12frosted"; repo = "flyspell-correct"; - rev = "e47b83e5efb524dfab5a6f92304b319fa6376ae0"; - sha256 = "1w1idyryxq496i1plx8xjyfidakyncx3sa9j3ik7x148ywaf8kwm"; + rev = "2f5548ded6991b22ad291372640aecaf6eac7a39"; + sha256 = "1xwm0kg3x403x5s2bg9f42qwbc9hq4x7lhqjw95q7jsbq5nq4kiy"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/ef7b9302d8f804c77eb81fee7ed27f13cb1176f6/recipes/flyspell-correct-helm"; @@ -35055,12 +36208,12 @@ melpaBuild { pname = "flyspell-correct-ivy"; ename = "flyspell-correct-ivy"; - version = "20180427.1135"; + version = "20181205.1132"; src = fetchFromGitHub { owner = "d12frosted"; repo = "flyspell-correct"; - rev = "e47b83e5efb524dfab5a6f92304b319fa6376ae0"; - sha256 = "1w1idyryxq496i1plx8xjyfidakyncx3sa9j3ik7x148ywaf8kwm"; + rev = "2f5548ded6991b22ad291372640aecaf6eac7a39"; + sha256 = "1xwm0kg3x403x5s2bg9f42qwbc9hq4x7lhqjw95q7jsbq5nq4kiy"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/ef7b9302d8f804c77eb81fee7ed27f13cb1176f6/recipes/flyspell-correct-ivy"; @@ -35082,12 +36235,12 @@ melpaBuild { pname = "flyspell-correct-popup"; ename = "flyspell-correct-popup"; - version = "20180427.1135"; + version = "20181205.1132"; src = fetchFromGitHub { owner = "d12frosted"; repo = "flyspell-correct"; - rev = "e47b83e5efb524dfab5a6f92304b319fa6376ae0"; - sha256 = "1w1idyryxq496i1plx8xjyfidakyncx3sa9j3ik7x148ywaf8kwm"; + rev = "2f5548ded6991b22ad291372640aecaf6eac7a39"; + sha256 = "1xwm0kg3x403x5s2bg9f42qwbc9hq4x7lhqjw95q7jsbq5nq4kiy"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/ef7b9302d8f804c77eb81fee7ed27f13cb1176f6/recipes/flyspell-correct-popup"; @@ -35625,6 +36778,52 @@ license = lib.licenses.free; }; }) {}; + forge = callPackage ({ closql + , dash + , emacs + , emacsql-sqlite + , fetchFromGitHub + , fetchurl + , ghub + , graphql + , let-alist + , lib + , magit + , magit-popup + , markdown-mode + , melpaBuild }: + melpaBuild { + pname = "forge"; + ename = "forge"; + version = "20190101.1658"; + src = fetchFromGitHub { + owner = "magit"; + repo = "forge"; + rev = "e2ee3cabc7a9e2f3198dd25a17bf591450175903"; + sha256 = "1y4jhys4ypikmzh5ym8m7n0l670sk97pvs5nbk4xzyww2vy6cpxr"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/23512cf8152161322960d72a5ec49a7595003477/recipes/forge"; + sha256 = "0a1yvdxx43zq9ivwmg34wyybkw4vhgzd2c54cchsbrbr972x9522"; + name = "recipe"; + }; + packageRequires = [ + closql + dash + emacs + emacsql-sqlite + ghub + graphql + let-alist + magit + magit-popup + markdown-mode + ]; + meta = { + homepage = "https://melpa.org/#/forge"; + license = lib.licenses.free; + }; + }) {}; form-feed = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -35659,12 +36858,12 @@ melpaBuild { pname = "format-all"; ename = "format-all"; - version = "20180902.458"; + version = "20181207.1219"; src = fetchFromGitHub { owner = "lassik"; repo = "emacs-format-all-the-code"; - rev = "d4a832c2fb6d0db76dff14342d001e69296f9316"; - sha256 = "1713aprpxhf9wp644rhmg3y8hdk6f557icx5hb5gmwkcp5hn03yx"; + rev = "87c7a43abb43722eb49f3591ef4a687cc26ce7d0"; + sha256 = "0n4qd56hllddvnbxwwc6r7mcfvwycgahm9wrb3lqh0m5bllp56kx"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/f53143ebd42ef5be793b86d50b23f0a57617d6cc/recipes/format-all"; @@ -35702,6 +36901,33 @@ license = lib.licenses.free; }; }) {}; + format-table = callPackage ({ dash + , emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "format-table"; + ename = "format-table"; + version = "20181223.816"; + src = fetchFromGitHub { + owner = "functionreturnfunction"; + repo = "format-table"; + rev = "dfcae3a867e574577fc09a43b045889ff155b58f"; + sha256 = "1z9l1qmv5hw7bgchi5f68nzsz9arjwsazvd6viq6k6jmjzncli6q"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/e307ead5e8a291cb5dfe316f3b13144e71b6a1b7/recipes/format-table"; + sha256 = "1fwjilx0n9m8q0macq231i73zvridjfgqlhw7d1xblw4qp82rzvp"; + name = "recipe"; + }; + packageRequires = [ dash emacs ]; + meta = { + homepage = "https://melpa.org/#/format-table"; + license = lib.licenses.free; + }; + }) {}; forth-mode = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -35763,12 +36989,12 @@ melpaBuild { pname = "fortune-cookie"; ename = "fortune-cookie"; - version = "20170407.1517"; + version = "20181223.42"; src = fetchFromGitHub { owner = "andschwa"; repo = "fortune-cookie"; - rev = "bad99a2cd090f6646c7ee1125b95dd98744939c6"; - sha256 = "1kiflisiabc39lxi5hcazfvcwrpasl01lqsi2sri6pyrcrjyh8mf"; + rev = "6c1c08f5be83822c0b762872ab25e3dbee96f333"; + sha256 = "0gnidiryappk9naazwv0dd3b1dyd284zkwnhy2b1z3zkc9i7awfq"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/ab0d56626c9bf847c693b4d9ddb08acee636054f/recipes/fortune-cookie"; @@ -35781,32 +37007,6 @@ license = lib.licenses.free; }; }) {}; - fountain-mode = callPackage ({ emacs - , fetchFromGitHub - , fetchurl - , lib - , melpaBuild }: - melpaBuild { - pname = "fountain-mode"; - ename = "fountain-mode"; - version = "20180911.534"; - src = fetchFromGitHub { - owner = "rnkn"; - repo = "fountain-mode"; - rev = "55e8b6ac6e95a1478cf5fe9479d92b30c5ec71fd"; - sha256 = "06hj78hqfcfp12pkx74yiqlia6db0qaadylz75vv5yf0iklbggkf"; - }; - recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/913386ac8d5049d37154da3ab32bde408a226511/recipes/fountain-mode"; - sha256 = "1i55gcjy8ycr1ww2fh1a2j0bchx1bsfs0zd6v4cv5zdgy7vw6840"; - name = "recipe"; - }; - packageRequires = [ emacs ]; - meta = { - homepage = "https://melpa.org/#/fountain-mode"; - license = lib.licenses.free; - }; - }) {}; fraktur-mode = callPackage ({ cl-lib ? null , fetchFromGitHub , fetchurl @@ -35896,12 +37096,12 @@ melpaBuild { pname = "frame-purpose"; ename = "frame-purpose"; - version = "20180623.1757"; + version = "20181229.1311"; src = fetchFromGitHub { owner = "alphapapa"; repo = "frame-purpose.el"; - rev = "6cff3bff74f9cf1dc31bbc5e1f9a513a5f55def6"; - sha256 = "08pmmzjdbvp09rxn3d332101qmg6c4xx2y6dwzczii70ac7m5v9f"; + rev = "bf17e2bb89ab5655355515e8b59c3c225abf29b9"; + sha256 = "1pvys1d9f99kb9f1yz7znq6n83iaym9ymqma5x3gwfjc0jwizig8"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/033bd36a2419f4521944ccbfe8ce1eb56af20472/recipes/frame-purpose"; @@ -35976,12 +37176,12 @@ melpaBuild { pname = "frameshot"; ename = "frameshot"; - version = "20180723.1428"; + version = "20181219.1300"; src = fetchFromGitHub { owner = "tarsius"; repo = "frameshot"; - rev = "917efdd678e397aa01efa657e3488d34445eca90"; - sha256 = "1c19magazz78jd65r7c58nhp0bcyfysrlvf4jbfgrdd9bf7xlkx6"; + rev = "3830aae976603ff4e41e09fdca7554594075694c"; + sha256 = "1sbxr78gl822gl0ky7iz1wb558ch9gp7igg4aq63gjlq6wfx2v93"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/e5cfaa4b5fda97054d45691fad9d79b559f2df14/recipes/frameshot"; @@ -36133,14 +37333,14 @@ ename = "fsbot-data-browser"; version = "20160921.833"; src = fetchFromGitHub { - owner = "benaiah"; + owner = "Benaiah"; repo = "fsbot-data-browser"; rev = "6bca4f7de63e31839d2542f6c678b79931dec344"; sha256 = "0lvpgfp89sz6f6rn576g1g88s0q3ibj5ghydjwfcg9w6h7vx5b5s"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/37a0901b98e1c66be6906234e6d6520a6e940e97/recipes/fsbot-data-browser"; - sha256 = "0jijvl07jk200fs01ln4dmw5nx9jg3f9b7gjaknyd18vyvbwr3s5"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/35763febad20f29320d459394f810668db6c3353/recipes/fsbot-data-browser"; + sha256 = "14d4d8lasvgj520rmqgnzk6mi16znzcdvja9p8164fr9l41wnzgd"; name = "recipe"; }; packageRequires = []; @@ -36203,12 +37403,12 @@ melpaBuild { pname = "fstar-mode"; ename = "fstar-mode"; - version = "20180814.1244"; + version = "20181110.549"; src = fetchFromGitHub { owner = "FStarLang"; repo = "fstar-mode.el"; - rev = "20633d42734ff54d662d8da618dc5aa5e20c743f"; - sha256 = "02xmz181ncfnbdbsjphdysdi1ia8i9ynk0pqfk8flhfkxx5karsv"; + rev = "0089f2d4451f73c389f82ebff9e22773f2d0014d"; + sha256 = "1mwqdww9sw14s4h4hdndadkxh8lgynwjkfyzf55fnjhf068hzsv8"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/c58ace42342c3d3ff5a56d86a16206f2ecb45f77/recipes/fstar-mode"; @@ -36410,7 +37610,7 @@ license = lib.licenses.free; }; }) {}; - futhark-mode = callPackage ({ cl-lib ? null + futhark-mode = callPackage ({ emacs , fetchFromGitHub , fetchurl , lib @@ -36418,19 +37618,19 @@ melpaBuild { pname = "futhark-mode"; ename = "futhark-mode"; - version = "20180910.122"; + version = "20190103.616"; src = fetchFromGitHub { owner = "diku-dk"; repo = "futhark-mode"; - rev = "ecfd751e243893445bc240d083e269a8ecf08231"; - sha256 = "0jas5nkanvai6mjh38ljbx3xgskgi6kdi86szlf980rabi8q5lmn"; + rev = "9f778251c13fcfae27d4f764f18fd727985e0e2e"; + sha256 = "0fhwyw2la3h1papr1cnxmzywy41pgqcx5q9agz08pncl52lsxjvs"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/97210774b450b7611d2bfdf36e04a425835d86b9/recipes/futhark-mode"; sha256 = "1sck984a8m0i9n07jnhpnin6k060756g73ix34ghzd65j5f0pvlw"; name = "recipe"; }; - packageRequires = [ cl-lib ]; + packageRequires = [ emacs ]; meta = { homepage = "https://melpa.org/#/futhark-mode"; license = lib.licenses.free; @@ -36624,12 +37824,12 @@ melpaBuild { pname = "gams-mode"; ename = "gams-mode"; - version = "20180416.206"; + version = "20181111.2201"; src = fetchFromGitHub { owner = "ShiroTakeda"; repo = "gams-mode"; - rev = "0a7f3f5d44ea59c34677049882f0a34ff9935bc9"; - sha256 = "0wl2dfcfvjy23gcwk6qfxbxjlykw438fi9h1y2855adcc9zrhwzx"; + rev = "fd88a310614a7c6e39e45ca65c4273ad90e3b688"; + sha256 = "0bvvar05zqfk1y5nqv1w6ji2mysdx62v7nxajnmbp386ldcjs4bn"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/c895a716636b00c2a158d33aab18f664a8601833/recipes/gams-mode"; @@ -36830,12 +38030,12 @@ melpaBuild { pname = "geiser"; ename = "geiser"; - version = "20180626.440"; + version = "20181128.352"; src = fetchFromGitLab { owner = "jaor"; repo = "geiser"; - rev = "1bdd966a4fbe0c8bd5bcb04dad5213e47a1534e6"; - sha256 = "165vssixx16lvig7hjgh75pi15r53s3n8fn8wyfzdbnkihkwmqbk"; + rev = "b421d3b4693249e2e46095693b41eed1e8161a58"; + sha256 = "0bvlv2yx9x8zb8ndkmk91gpd55c0ms9vgjw23nl89zda2gmlazzx"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/67dc8d6e33f3522043f96761b23ea68c9c27084e/recipes/geiser"; @@ -36857,12 +38057,12 @@ melpaBuild { pname = "general"; ename = "general"; - version = "20180901.852"; + version = "20181229.742"; src = fetchFromGitHub { owner = "noctuid"; repo = "general.el"; - rev = "f1feeb8241bc724ced9952f328d6694329178cf1"; - sha256 = "05qw2g01pv6a0i58khs8kwwc3gy40ngrpis8y4rh81ghgp1i2j71"; + rev = "90da0ca74f83eceacb0a7b8d2d44dd699c5d534e"; + sha256 = "0w3lify62hb2g7kb3gypfich1v74iqnk1g8iha6xwkikfayk8v7g"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/d86383b443622d78f6d8ff7b8ac74c8d72879d26/recipes/general"; @@ -36911,12 +38111,12 @@ melpaBuild { pname = "german-holidays"; ename = "german-holidays"; - version = "20161011.13"; + version = "20181212.2244"; src = fetchFromGitHub { owner = "rudolfochrist"; repo = "german-holidays"; - rev = "d7d540c229c1a8be68ee09fbda08fe3ea31b7d29"; - sha256 = "1rfka83jwd68k93vn3f7llxd6z0ma5k98gws0081y8i9fc21fnsd"; + rev = "a8462dffccaf2b665f2032e646b5370e993a386a"; + sha256 = "1rf8p42pl7jmmdiibfcamlbr3kg6kslffv8vbpwn20xm2ii13rxz"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/bf5b3807ff989b13f95e8d6fad2f26a42ff0643c/recipes/german-holidays"; @@ -36965,16 +38165,16 @@ melpaBuild { pname = "gf"; ename = "gf"; - version = "20180822.1325"; + version = "20181028.842"; src = fetchFromGitHub { - owner = "grammaticalframework"; + owner = "GrammaticalFramework"; repo = "gf-emacs-mode"; - rev = "e8e55584b0a473922c58cbb4860306a84c3336e5"; - sha256 = "09fqax9dr40rj8f6b4z7lkjrs305gnkm2f4q314f4k7yxnz3c055"; + rev = "49fa46db67634530499be969ffd3c436a22d4404"; + sha256 = "0q234wzzmq1r53dv7z798liwkcbpnvc8mnxvkyfxd94f6za9ylgz"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/1c2cc74eb19c54219cd5c5c11d886074859f0948/recipes/gf"; - sha256 = "170q5a7lwa9pbpn0ghcfzny0jfn42wgns1lcv8fngr0k1njfj6v8"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/35763febad20f29320d459394f810668db6c3353/recipes/gf"; + sha256 = "0vk866gy97zk8dbx48azjlpnrnf0snc50zlhbzv1is97d9frjici"; name = "recipe"; }; packageRequires = [ ht s ]; @@ -37016,12 +38216,12 @@ melpaBuild { pname = "ggtags"; ename = "ggtags"; - version = "20180725.1013"; + version = "20181220.1838"; src = fetchFromGitHub { owner = "leoliu"; repo = "ggtags"; - rev = "c737181c16a673d36e81b4c8ec4f389d630ec49d"; - sha256 = "0analdydfnyvrv58062a6dgkp985zin4blyl0yygarj5drskn0k0"; + rev = "2f538aa15c60ad8365b7240579f67a90f600c1d1"; + sha256 = "16fjj3f5i3kjvk93bm8y5ginwk6rkizkgd63y4fi799rx12n2kc2"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/b158bb1bc2fbe3de61a6b21174eac7b1457edda2/recipes/ggtags"; @@ -37256,12 +38456,12 @@ melpaBuild { pname = "ghub"; ename = "ghub"; - version = "20180914.102"; + version = "20190101.1709"; src = fetchFromGitHub { owner = "magit"; repo = "ghub"; - rev = "440a563d65ae1f15ac8bc5e100e40968450d16fd"; - sha256 = "06kj524cv5z73q4xasha1z02z26d04yxgdb4il7bfai1rfrffc8z"; + rev = "f1b8aebf99a7de298de6333a82c9b714609f2e99"; + sha256 = "0nn0y194m7l1pzsv83vvhghfrnwqv7w8770g9nsrps0f0jhfi7rf"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/f403587f77380d1db214aa34933a9b5cce1ef2bd/recipes/ghub"; @@ -37284,12 +38484,12 @@ melpaBuild { pname = "ghub-plus"; ename = "ghub+"; - version = "20180602.1545"; + version = "20181112.1632"; src = fetchFromGitHub { owner = "vermiculus"; repo = "ghub-plus"; - rev = "b4a9662f5a6562f8d1dfdda2f009ec78a107c9a2"; - sha256 = "0xi7xhdla64xbcfqi8x8yzqc6v6rrqxd4q8lcrv7sw08ap5ykfas"; + rev = "51ebffe549286b3c0b0565a373f44f4d64fc57af"; + sha256 = "11fr6ri95a9wkc0mqrkhjxz1fm2cb52151fc88k73l93mggib3ak"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/03a412fd25218ff6f302734e078a699ff0234e36/recipes/ghub+"; @@ -37362,12 +38562,12 @@ melpaBuild { pname = "gildas-mode"; ename = "gildas-mode"; - version = "20150919.1501"; + version = "20181021.2349"; src = fetchFromGitHub { owner = "smaret"; repo = "gildas-mode"; - rev = "1ac31c83ac363550d8ceb0041924d984cd62683f"; - sha256 = "0a8wwczh9g8b0gpc4hlgg9n6y9n4x18b4pchm4arjsccmh3l5bs3"; + rev = "d0c9e997e2aa0bcd9b8b7db082d69100448cb1b2"; + sha256 = "11290b6daly9nn73iw0s6386hzjk3q2iywdhiazxscxaxzhx2c8c"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/f43d3aec955d31023056baba971805f0ebbb6702/recipes/gildas-mode"; @@ -37468,12 +38668,12 @@ melpaBuild { pname = "git-attr"; ename = "git-attr"; - version = "20180204.15"; + version = "20180925.1303"; src = fetchFromGitHub { owner = "arnested"; repo = "emacs-git-attr"; - rev = "c03078637a00ea301cbcc7ae301ae928b10af889"; - sha256 = "05wzy8g0yjkks0zmcvwn9dmr6kxk1bz91xic3c08b0j1z5lbsdv7"; + rev = "3e43a0cf616b00a4bbd3c6b49fd2397f3103796f"; + sha256 = "1alpr4gnkikwzljz0fdbrx5hs3zy5s2fz7qyxdz0nx9hv8zb5ir5"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/3417e4bc586df60b5e6239b1f7683b87953f5b7c/recipes/git-attr"; @@ -37573,12 +38773,12 @@ melpaBuild { pname = "git-commit"; ename = "git-commit"; - version = "20180912.312"; + version = "20190101.1707"; src = fetchFromGitHub { owner = "magit"; repo = "magit"; - rev = "d913880e165b162420347cbcf10a40dc21094248"; - sha256 = "1ad3al4qkxrwl6nc40ql6r14axfypzlcr3fnp68csfbd5zig595g"; + rev = "cc435005b07bd7ba17962ffa4e210b441e8a1a52"; + sha256 = "1aiqqdc8j81d16bvj978a6z50rfhl18j0grad7r9wnwd6bda64gz"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/cec5af50ae7634cc566adfbfdf0f95c3e2951c0c/recipes/git-commit"; @@ -37815,12 +39015,12 @@ melpaBuild { pname = "git-link"; ename = "git-link"; - version = "20180708.943"; + version = "20181030.1959"; src = fetchFromGitHub { owner = "sshaw"; repo = "git-link"; - rev = "efd14ab5f17f5942d25e165210447f3983f3250e"; - sha256 = "0rd2g4s73xk8m595aa11vr59gnn5mx7lbcf0040w1xqvlrryzyc9"; + rev = "976723dfdb9ae42e093a3cb32fc41841e94201e6"; + sha256 = "0xsyzgwbsnf4xah860182pfirkfbixsf0nkfm05n1rvid7a6495d"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/1385443585e628e3d4efb3badb7611e9d653e0c9/recipes/git-link"; @@ -37895,12 +39095,12 @@ melpaBuild { pname = "git-ps1-mode"; ename = "git-ps1-mode"; - version = "20180413.247"; + version = "20181114.1949"; src = fetchFromGitHub { owner = "10sr"; repo = "git-ps1-mode-el"; - rev = "6a06bf57cbe614ab26032b153d3dcf4fb4bfa7ee"; - sha256 = "1lgvzla1bg7gmkj41hmzhiqcbdmdw9ycpzfvpl6xl0sm0fk3j3rj"; + rev = "b9188e26a64fa6f8678da6cbf5e3e865065f4f04"; + sha256 = "0l9y6x53li7fqfrwb4037psn92xciylanj0fmmy8jy6n51dlzxyn"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/ea177b5ea168828881bd8dcd29ef6b4cb81317f0/recipes/git-ps1-mode"; @@ -37913,6 +39113,31 @@ license = lib.licenses.free; }; }) {}; + git-time-metric = callPackage ({ fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "git-time-metric"; + ename = "git-time-metric"; + version = "20181116.1211"; + src = fetchFromGitHub { + owner = "c301"; + repo = "gtm-emacs-plugin"; + rev = "287108ed1d6885dc795eb3bad4476aa08c626186"; + sha256 = "0cq4jn2vvcm8hyzmmnnvbmffygxnnv0v71kqlgjm8lcil0xsf84d"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/7f6f8839be619d3eeb6ab83b630441bf8c0ca024/recipes/git-time-metric"; + sha256 = "1lwpj3z1i532v59vcpkcp1bkad7i2gmlk2yspjhvyvsgp1slsxl1"; + name = "recipe"; + }; + packageRequires = []; + meta = { + homepage = "https://melpa.org/#/git-time-metric"; + license = lib.licenses.free; + }; + }) {}; git-timemachine = callPackage ({ emacs , fetchFromGitLab , fetchurl @@ -37921,12 +39146,12 @@ melpaBuild { pname = "git-timemachine"; ename = "git-timemachine"; - version = "20180607.120"; + version = "20181204.746"; src = fetchFromGitLab { owner = "pidu"; repo = "git-timemachine"; - rev = "90a980578249c102da3e904fccdc9a2a5a0e7bcc"; - sha256 = "027zpl603kad2x59wzygiblpc84cn945fnqpm7m1yi3lw4smxsbr"; + rev = "3a4a7f11af613090122d1d4bb8823eaeed93398f"; + sha256 = "0qfwqnp2yxgb3jgzlv33n6zvk24bgrrh6h1aj8hxnpdca0nihx8v"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/a52b516b7b10bdada2f64499c8f43f85a236f254/recipes/git-timemachine"; @@ -38158,13 +39383,13 @@ version = "20171109.451"; src = fetchFromGitHub { owner = "philiparvidsson"; - repo = "GitHub-Modern-Theme-For-Emacs"; + repo = "GitHub-Modern-Theme-for-Emacs"; rev = "a7e7b8e5e9c122138e79e837caf9b7299e748d44"; sha256 = "0agfy3wiznb2ksfa00g7066mb0vps4g74mj6nl9wkvx847dzg34h"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/d5506d93bd8cf59cd281091b377c1bb9a4243666/recipes/github-modern-theme"; - sha256 = "1falal6cffiih3q8q9xdyv7bkzw43p56d8ln13g9ad1jz319b3fi"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/35763febad20f29320d459394f810668db6c3353/recipes/github-modern-theme"; + sha256 = "07xv4psw34mrpb1f5fsvj8vcm9k3xlm43zxr6qmj00p46b35z25r"; name = "recipe"; }; packageRequires = []; @@ -38264,12 +39489,12 @@ melpaBuild { pname = "github-stars"; ename = "github-stars"; - version = "20180328.433"; + version = "20181117.2048"; src = fetchFromGitHub { owner = "xuchunyang"; repo = "github-stars.el"; - rev = "283dbe4d10f2b11d15d6871e86c28b8f42759b63"; - sha256 = "1bdhvf2mjg818mfl8w9c2b8prqbd0v59xnjjkaq8qwgb7n7925bq"; + rev = "807de6da3ab32d278d68a1b709c012f6bfa4d280"; + sha256 = "152gqg2kvfnfflndx15zkyzapzfkv741rwd0g3m7dn37mblnhgvl"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/58df7d536f9711e10ecaa6e0a37b9ad255e8fca5/recipes/github-stars"; @@ -38396,12 +39621,12 @@ melpaBuild { pname = "gitlab-ci-mode"; ename = "gitlab-ci-mode"; - version = "20180604.1503"; + version = "20181127.1041"; src = fetchFromGitLab { owner = "joewreschnig"; repo = "gitlab-ci-mode"; - rev = "b9fd692d27351e959c4d272a2149def63ef1c00c"; - sha256 = "132b0m3sp6vwknr665aw1mwx1q69ksrmr6xih7qi6nfgny6938qc"; + rev = "99214277a0ea0f20472631e05ba8302997d5d364"; + sha256 = "1xwsdclv1q98dsb79bd9yq050axqzc1y4vswz4gf5zhshmfvg130"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/d7915ddcf21fdec539a86bb86c209cf0bbd378cb/recipes/gitlab-ci-mode"; @@ -38763,12 +39988,12 @@ melpaBuild { pname = "gnu-apl-mode"; ename = "gnu-apl-mode"; - version = "20180129.2300"; + version = "20181217.54"; src = fetchFromGitHub { owner = "lokedhs"; repo = "gnu-apl-mode"; - rev = "fa569827c916ed46e410e9f28e4b4d28f8567654"; - sha256 = "0x1i1xcd3d34c9c87isd39d9ra69ywd01ag0hgkkgdzrk44znshj"; + rev = "3b5b13abeb424e8ed399379fdefc168422664def"; + sha256 = "0nhbfzfwl44ffvhzrnkjxaxz2nfrp1a7zcy6fg6cm13c2z40jslp"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/369a55301bba0c4f7ce27f6e141944a523beaa0f/recipes/gnu-apl-mode"; @@ -38882,6 +40107,32 @@ license = lib.licenses.free; }; }) {}; + gnus-recent = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "gnus-recent"; + ename = "gnus-recent"; + version = "20181228.1051"; + src = fetchFromGitHub { + owner = "unhammer"; + repo = "gnus-recent"; + rev = "b73c7b069c22b84182b22bbffc39c1073aa309c8"; + sha256 = "04riqy1jzidg0jzdiaj707smypnqj0zx1vm6k0ghhswwly8brlfq"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/0b80d94cf1a8b8e2d4da5d45f65231aa4884a3a0/recipes/gnus-recent"; + sha256 = "14xac6bmn61bk0h6dby14111iijz0j254v4mh77lf0ydbz6wxjf1"; + name = "recipe"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://melpa.org/#/gnus-recent"; + license = lib.licenses.free; + }; + }) {}; gnus-select-account = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -39020,16 +40271,16 @@ melpaBuild { pname = "go-autocomplete"; ename = "go-autocomplete"; - version = "20170626.323"; + version = "20150903.1940"; src = fetchFromGitHub { - owner = "nsf"; + owner = "mdempsky"; repo = "gocode"; - rev = "beae6bdcc6fc300059038961b7a3e977e0fb7c61"; - sha256 = "0fhs17v2x24nhs0kd2yjzr56jni2767yrjxims6phsaxs9m5aih2"; + rev = "ccbc3bda7debb16fa6672e719f8f74fa2523c321"; + sha256 = "0gshb5d20v342disc290pry8i6p60srl2ip186kb4sk692lk0ily"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/04867a574773e8794335a2664d4f5e8b243f3ec9/recipes/go-autocomplete"; - sha256 = "1ldsq81a167dk2r2mvzyp3v3j2mxc4l9p6b12i7pv8zrjlkhma5a"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/ef45683cbfe82bf8a9d6f3f1c59e3cf340accbe3/recipes/go-autocomplete"; + sha256 = "15ns1zzw6kblcbih7dmjvk1p0f6f3p2wpgx4gnd9ax0fcj65ghwi"; name = "recipe"; }; packageRequires = [ auto-complete ]; @@ -39258,12 +40509,12 @@ melpaBuild { pname = "go-guru"; ename = "go-guru"; - version = "20180628.310"; + version = "20181011.2030"; src = fetchFromGitHub { owner = "dominikh"; repo = "go-mode.el"; - rev = "7f87c32464d2eb22ac7a413cac741a89fbfdc740"; - sha256 = "06znpm5zfi41rcdrjgf79w9zifn2my56sfys5fyafqc53rjya4pv"; + rev = "120fb911f1d8038f828da85eed8aaad977dabd8c"; + sha256 = "18qx1mf4fgrzm8g89c4y7zvwl3djrbbkhar242zl5ab5218dsp0s"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/0cede3a468b6f7e4ad88e9fa985f0fdee7d195f5/recipes/go-guru"; @@ -39276,6 +40527,32 @@ license = lib.licenses.free; }; }) {}; + go-imenu = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "go-imenu"; + ename = "go-imenu"; + version = "20181029.329"; + src = fetchFromGitHub { + owner = "brantou"; + repo = "go-imenu.el"; + rev = "00bb69c1c71453f43ab2d6622a74e3c8e6b454b9"; + sha256 = "1bwcsph6ywnqf2dbzh82vzw7m6g5qyxzjln8n3470h06iv7jhic2"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/d602b6071787018e3e0a68b4852eb978b34acbea/recipes/go-imenu"; + sha256 = "0s8rc7rkqlywrhnm2h8yygn87jhjc492wmsvnr1rxl62wf5cijms"; + name = "recipe"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://melpa.org/#/go-imenu"; + license = lib.licenses.free; + }; + }) {}; go-impl = callPackage ({ emacs , fetchFromGitHub , fetchurl @@ -39335,12 +40612,12 @@ melpaBuild { pname = "go-mode"; ename = "go-mode"; - version = "20180327.830"; + version = "20181011.2029"; src = fetchFromGitHub { owner = "dominikh"; repo = "go-mode.el"; - rev = "7c50c800bc06f7e3b2f2d3fc0410e2cea78a5cb3"; - sha256 = "1ain754h3kglk1qiqjkc3mwcyl2wmqywv4qkqfp7wkyyj34gncb6"; + rev = "be9186c658c33e2cfd09e8808e578d525dcbf2a2"; + sha256 = "086qj1rmfkk7x0a1p76z33rycgrcawmyg7h3k9j978v4k1xa5xnf"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/0cede3a468b6f7e4ad88e9fa985f0fdee7d195f5/recipes/go-mode"; @@ -39363,12 +40640,12 @@ melpaBuild { pname = "go-playground"; ename = "go-playground"; - version = "20170226.43"; + version = "20181103.1146"; src = fetchFromGitHub { owner = "grafov"; repo = "go-playground"; - rev = "559d53bbc507394aaca3683325d17286637bf4f0"; - sha256 = "04hxgi27cyhs07mb0wz21q11b1nxmfsx56gynxjc2gqj2wb5i086"; + rev = "790562506dc941648d7a54fd21677871942251e4"; + sha256 = "06aaxx7qk1g7sk80rr3jgz6qrqlh5zlf57h9di740645kmyr6vkd"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/900aabb7bc2350698f8740d72a5fad69c9219c33/recipes/go-playground"; @@ -39426,12 +40703,12 @@ melpaBuild { pname = "go-projectile"; ename = "go-projectile"; - version = "20180808.1122"; + version = "20181023.1444"; src = fetchFromGitHub { owner = "dougm"; repo = "go-projectile"; - rev = "11989b104a4bef406bf0e7b31ef6608aa6057cf7"; - sha256 = "1w61jxmwardmv383xms4rjfk6czdzr9j8qbpbmaw1lj0b8lbkvgs"; + rev = "7910884b4de560f3fc70b53752f658ef9cdc02cd"; + sha256 = "03bh8k95qrc3q1sja05bbv3jszh6rgdv56jpi8g06yxk53457a1n"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/3559a179be2a5cda71ee0a5a18bead4b3a1a8138/recipes/go-projectile"; @@ -39863,12 +41140,12 @@ melpaBuild { pname = "google-contacts"; ename = "google-contacts"; - version = "20171027.1033"; + version = "20180919.614"; src = fetchFromGitHub { owner = "jd"; repo = "google-contacts.el"; - rev = "a40389bae006ae094aeb1a39fae9891ca687c0fa"; - sha256 = "06mfdmr3dlmk4gyq8fxqv78c5jyis8vxx4ih2azcr5c831pkayzi"; + rev = "2273582713712a58e71156a8a29972d42e8e690e"; + sha256 = "1iw5khd3mcgq7vmpm2xw1s713glc8c569n4mgrmmggg73sjnj4kf"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/671afe0ff3889ae8c4b2d7b8617a3a25c16f3f0f/recipes/google-contacts"; @@ -39889,12 +41166,12 @@ melpaBuild { pname = "google-maps"; ename = "google-maps"; - version = "20171002.734"; + version = "20181121.732"; src = fetchFromGitHub { owner = "jd"; repo = "google-maps.el"; - rev = "c0e5dccfdc9f7f77ff8f29177547be47833d7156"; - sha256 = "1agsfmbd2zbn1xs05kxlb32hhkmrri3hdmcrvf0w1fcsgc5a9085"; + rev = "2eb16ff609f5a9f8d02c15238a111fbb7db6c146"; + sha256 = "1bl0dnksbf14d0xcnvdy9qpvzc5c8jwkxpmfvgayj6djikxnw2md"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/671afe0ff3889ae8c4b2d7b8617a3a25c16f3f0f/recipes/google-maps"; @@ -39940,12 +41217,12 @@ melpaBuild { pname = "google-translate"; ename = "google-translate"; - version = "20170713.119"; + version = "20181201.1656"; src = fetchFromGitHub { owner = "atykhonov"; repo = "google-translate"; - rev = "486c63bbfa0338589589f628703c38112035a5b2"; - sha256 = "08b4lxnwy9iqxacbjjljybvvdkl9g2dy6vga6hw7h7h32qra8w2j"; + rev = "17a1ddc074b96cdc3b8199ccb06824a7a95bf9ff"; + sha256 = "09sxphprj3aq9q2dpy5gmyjnwjcyd3vb4jcg0mx3cv3ibly86ysl"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/e3c275e59cbfe6e40f9cd4c470fc66544c9a6d21/recipes/google-translate"; @@ -40100,12 +41377,12 @@ melpaBuild { pname = "goto-chg"; ename = "goto-chg"; - version = "20180105.1033"; + version = "20181228.503"; src = fetchFromGitHub { owner = "emacs-evil"; repo = "goto-chg"; - rev = "e5b38e4e1378f6ea48fa9e8439f49c2998654aa4"; - sha256 = "1fxdvgdafavc4sad5i8g0wvpdqzlgzmvfi07yrah1c5vwkrslbvj"; + rev = "e6e4298ac53a030933ddba76f6efe68aa929faf0"; + sha256 = "1zc8n5ggm6m5pnxvaq9nc6gjx72qkr14rigglib94ggy1hmjxgwa"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/cf1fc176430fe3ab55ce537a0efc59780bb812be/recipes/goto-chg"; @@ -40232,12 +41509,12 @@ melpaBuild { pname = "gpastel"; ename = "gpastel"; - version = "20180419.2350"; + version = "20181229.604"; src = fetchFromGitHub { owner = "DamienCassou"; repo = "gpastel"; - rev = "21b7d79530134d6a47eeb252b684f884c769d291"; - sha256 = "1s1gnkpz6byf6by8r1bl9vq3slmsdavjb2ybp2zgic48favz1qm2"; + rev = "8a5522b274f79d55d7c9a0b2aaf062526f9253c7"; + sha256 = "01pnnqcxni55xr7r2lxcnsqiszm2w5iwnjcwp748p1faq6ywhi19"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/9b70e05ff0a074f9e2f1373e8495dc8df462deea/recipes/gpastel"; @@ -40539,12 +41816,12 @@ melpaBuild { pname = "graphql-mode"; ename = "graphql-mode"; - version = "20180303.1558"; + version = "20181223.652"; src = fetchFromGitHub { owner = "davazp"; repo = "graphql-mode"; - rev = "36b1a4ed9fe78ccd1f386111644e69a5424a1a7b"; - sha256 = "1azq0igx07aff9r7fbl0l4vbr44c4ylfq41g5rahbc70spd85bk6"; + rev = "0f2b4b16049b7b4043575f0ec592305624a8775c"; + sha256 = "0cq72dcidmqld7gb0wdw36k75jwbpwrhi47lff1xxyllh7nwvgk9"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/3850073e6706d4d8151bc6ab12963a19deae8be9/recipes/graphql-mode"; @@ -40564,12 +41841,12 @@ melpaBuild { pname = "graphviz-dot-mode"; ename = "graphviz-dot-mode"; - version = "20171103.127"; + version = "20181117.2151"; src = fetchFromGitHub { owner = "ppareit"; repo = "graphviz-dot-mode"; - rev = "c456a2b65c734089e6c44e87209a5a432a741b1a"; - sha256 = "0j1r2rspaakw37b0mx7pwpvdsvixq9sw3xjbww5piihzpdxz58z1"; + rev = "243de72e09ddd5cdc4863613af8b749827a5e1cd"; + sha256 = "10ss7mhlkqvxh7y2w7njzh3hiz3r7y49a3q9j41bwipia4yzq4n5"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/6e2f1e66b33fd95142be4622c996911e38d56281/recipes/graphviz-dot-mode"; @@ -40793,12 +42070,12 @@ melpaBuild { pname = "grep-context"; ename = "grep-context"; - version = "20180415.435"; + version = "20181002.954"; src = fetchFromGitHub { owner = "mkcms"; repo = "grep-context"; - rev = "4c63d0f2654dee1e249c2054d118d674a757bd45"; - sha256 = "0n2bc9q6bvbfpaqivp3ajy9ad1wr7hfdd98qhnspsap67p73kfn4"; + rev = "5a4e3efdf775755c1bbefcfe4b461c1166d81d7d"; + sha256 = "00q7l4a3c0ay6g5ff9bfa2qgkiswsyh4s6pqnpg0zpzhvv5710f5"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/41dbaf627ae4ef86c222d2b6b5d3523fdb9a4637/recipes/grep-context"; @@ -40926,12 +42203,12 @@ melpaBuild { pname = "groovy-mode"; ename = "groovy-mode"; - version = "20180809.2307"; + version = "20181111.257"; src = fetchFromGitHub { owner = "Groovy-Emacs-Modes"; repo = "groovy-emacs-modes"; - rev = "c32f82dd3a11be5871a71e8ffac55022bbbc5cfb"; - sha256 = "1jh197yzkfdviiq09hihhn0ycxfn7g9hk4a376a7ybv8q7wkal0m"; + rev = "f80b6795f645aff592ffbdc6b500084955094f5c"; + sha256 = "14wlr28hkb4za3pdd3z6s2nb20rwy064cjv0kcca56hyd71i2i4w"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/3fe318b4e51a280a55c01fa30455e4a180df8bd6/recipes/groovy-mode"; @@ -41005,16 +42282,16 @@ melpaBuild { pname = "gruvbox-theme"; ename = "gruvbox-theme"; - version = "20180623.2009"; + version = "20181013.444"; src = fetchFromGitHub { - owner = "Greduan"; + owner = "greduan"; repo = "emacs-theme-gruvbox"; - rev = "796999e5db2a0e43ad64c062c1bec3c966d095bc"; - sha256 = "0qj5k0c1592ikrb7gcibqwf8hhj6lq4cw7zrb3kmpk4zakzy7a2w"; + rev = "39124183cf47d25780cd02e33e57743484b4c680"; + sha256 = "1zaba3hlk0h3n20gyk1s6kd2hdk47vfm6yb8fa4v80znhmgfwhac"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/2bd48c87919f64ced9f3add4860751bb34cb5ecb/recipes/gruvbox-theme"; - sha256 = "042mnwlmixygk2mf24ygk7rkv1rfavc5a36hs9x8b68jnf3khj32"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/35763febad20f29320d459394f810668db6c3353/recipes/gruvbox-theme"; + sha256 = "12z89fjfqcp9rx2f2x9wcffgxxv3kjn1dabyk0cjf286hgvmgz88"; name = "recipe"; }; packageRequires = [ autothemer ]; @@ -41107,12 +42384,12 @@ melpaBuild { pname = "guess-language"; ename = "guess-language"; - version = "20170620.308"; + version = "20181124.919"; src = fetchFromGitHub { owner = "tmalsburg"; repo = "guess-language.el"; - rev = "1f1602f74d7159e7fb8c90f92ec5a3d1df5429da"; - sha256 = "1764v96sdn3zvpd35ppn31ib4p8cvdrj0bfmbplxg2xhp7xkgmca"; + rev = "bc6fe11d7ea36d5319ac05c00d52b50d42d64cea"; + sha256 = "1sfvlpqfp24gbav7ahhwgaakiw4xn07mzgxwnqhwr5ilj6322w0i"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/6e78cb707943fcaaba0414d7af2af717efce84d0/recipes/guess-language"; @@ -41193,12 +42470,12 @@ melpaBuild { pname = "guix"; ename = "guix"; - version = "20180914.1413"; + version = "20181222.1355"; src = fetchFromGitHub { owner = "alezost"; repo = "guix.el"; - rev = "0111d16547d730fda81374714267775b06897501"; - sha256 = "0agh5nyiwc5vvwgqhshffj0vds1505q67xr2fnfpd2d21l04bki2"; + rev = "495baedc983070f0158442173bdef0a35c2a1e9d"; + sha256 = "0p2sn6siq7ns1qjw51jcr20v0dz1z7s11mym892hiq6hib2ykdgz"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/b3d8c73e8a946b8265487a0825d615d80aa3337d/recipes/guix"; @@ -41320,12 +42597,12 @@ melpaBuild { pname = "habamax-theme"; ename = "habamax-theme"; - version = "20180820.219"; + version = "20181001.150"; src = fetchFromGitHub { owner = "habamax"; repo = "habamax-theme"; - rev = "23a87d831f35ec0a187a2bd9aa8ffbe06e671f8e"; - sha256 = "160jbd024f6f5nfpahddinvdlpzi0xc1bbi5dymp8nmi48fppp2c"; + rev = "6e86a1b23b6e2aaf40d4374b5673da00a28be447"; + sha256 = "0k96mdxg28bbm14d6rdlin8l4c75i9wicj3mxrd0bys0shxl9jm6"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/77386484ad0b31c2818fae52cd312821c4632cb8/recipes/habamax-theme"; @@ -41347,12 +42624,12 @@ melpaBuild { pname = "habitica"; ename = "habitica"; - version = "20171022.1922"; + version = "20181024.1111"; src = fetchFromGitHub { owner = "abrochard"; repo = "emacs-habitica"; - rev = "e51ff7436fe1da10404e2c0872b15d6a7a926717"; - sha256 = "1hiiqf82nagnpq2qdcdv6y2blfiqs6f8ia8k66a4zn5xgwpd13f4"; + rev = "d977984ac342e9177ba98f400b3c160c450c936d"; + sha256 = "10x0bcd67b2q4zhww6bzqics18kkv198d2hy6digi385fkwhvfxb"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/cf9543db3564f4806440ed8c5c30fecbbc625fa1/recipes/habitica"; @@ -41369,23 +42646,24 @@ , fetchFromGitHub , fetchurl , lib - , melpaBuild }: + , melpaBuild + , s }: melpaBuild { pname = "hack-mode"; ename = "hack-mode"; - version = "20180914.615"; + version = "20181207.342"; src = fetchFromGitHub { owner = "hhvm"; repo = "hack-mode"; - rev = "306bc45412665b74c05267a3367f3ae7b03604db"; - sha256 = "0q2n8nfll6480xhz7wap88xgxbxrzwx1qpg1kinfw796a3l6vy2s"; + rev = "789207479cea0adc3f2ba4d567964a261b782e9d"; + sha256 = "0930h02z3z644jzbq970nmdk10jlldvyw0fd6gzs4x1z99bjrxad"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/27e238e5d2aaca810fd3fb6836ca49c9fa07cc87/recipes/hack-mode"; sha256 = "1zs7p6fczj526wz9kvyhmxqkgrkfkkrvm9ma4cg349sfpjpxwkbl"; name = "recipe"; }; - packageRequires = [ emacs ]; + packageRequires = [ emacs s ]; meta = { homepage = "https://melpa.org/#/hack-mode"; license = lib.licenses.free; @@ -41451,12 +42729,12 @@ melpaBuild { pname = "hackernews"; ename = "hackernews"; - version = "20180902.2312"; + version = "20181123.1722"; src = fetchFromGitHub { owner = "clarete"; repo = "hackernews.el"; - rev = "e14dcab09dccb8128198e83d42a75fc310da5329"; - sha256 = "0z1jf8hvfb28dmjfm2sbxf6gg7v3gq9502b62nnsn4mdl1yk2p1d"; + rev = "916c3da8da45c757f5ec2faeed57fa370513d4ac"; + sha256 = "09bxaaczana1cfvxyk9aagjvdszkj0j1yldl5r4xa60b59lxihsg"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/c43a342e47e5ede468bcf51a60d4dea3926f51bd/recipes/hackernews"; @@ -41867,12 +43145,12 @@ melpaBuild { pname = "haskell-mode"; ename = "haskell-mode"; - version = "20180912.2048"; + version = "20181122.23"; src = fetchFromGitHub { owner = "haskell"; repo = "haskell-mode"; - rev = "d6c2666eacab9ddf3b88f2a31d5e6f2ca7e039a8"; - sha256 = "09k3bjdlwz2far2s7r3li4cwf0l80jgcs11aybj31xyzzpr7fglm"; + rev = "4aa88752ab23bca3ded36a9c9fd9c34cffbb129b"; + sha256 = "0697l2rpfacjapazvxhrnp0524zjgvw13c3168czljijknx3b54r"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/7f18b4dcbad4192b0153a316cff6533272898f1a/recipes/haskell-mode"; @@ -41936,6 +43214,32 @@ license = lib.licenses.free; }; }) {}; + hasklig-mode = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "hasklig-mode"; + ename = "hasklig-mode"; + version = "20181110.1059"; + src = fetchFromGitHub { + owner = "minad"; + repo = "hasklig-mode"; + rev = "386c098c93a744f6b30ad937d193eebf0fd79e1b"; + sha256 = "0m1cn59fzsfqc6j1892yaaddh6g6mwiqnp1ssxhic5fcm2xk00rz"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/15a60278102de9e078b613456126945737718ce9/recipes/hasklig-mode"; + sha256 = "0gz0k9ahk0jpdp893ckbby9ilkac1zp95kpfqdnpfy0a036xfwm7"; + name = "recipe"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://melpa.org/#/hasklig-mode"; + license = lib.licenses.free; + }; + }) {}; hasky-extensions = callPackage ({ avy-menu , emacs , fetchFromGitHub @@ -41945,12 +43249,12 @@ melpaBuild { pname = "hasky-extensions"; ename = "hasky-extensions"; - version = "20180107.2112"; + version = "20181231.2310"; src = fetchFromGitHub { owner = "hasky-mode"; repo = "hasky-extensions"; - rev = "d75dc57f4eaeb92785bde6c26c1031710be1cf00"; - sha256 = "135rn33ldrhz3z6fg1rcdaxs1dnahliw782qc4ffxkays186id63"; + rev = "fc36f6ebfa296764076858c858ce508b24895255"; + sha256 = "0wy90lr5gpp3cby8flwsnzf5dxv2dv88xby0fadx3kmwh9c40mr6"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/e3f73e3df8476fa231d04211866671dd74911603/recipes/hasky-extensions"; @@ -41973,12 +43277,12 @@ melpaBuild { pname = "hasky-stack"; ename = "hasky-stack"; - version = "20180331.208"; + version = "20181231.2311"; src = fetchFromGitHub { owner = "hasky-mode"; repo = "hasky-stack"; - rev = "3e17ce07dd6b0207474e4ff14ad7b8c467382947"; - sha256 = "0cdsdlgapf9xxj928hlb7ch9x8rznayrvj7n8j2vzfa0kfmg7qwf"; + rev = "b2d3d2906523973310c83cf253341f332cdf8fc2"; + sha256 = "0gqfylcwc1py26dw73nzad8d1r0f091r8rb0j7a8dxsf4hvpw8ya"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/c3faf544872478c3bccf2fe7dc51d406031e4d80/recipes/hasky-stack"; @@ -42235,12 +43539,12 @@ melpaBuild { pname = "helm"; ename = "helm"; - version = "20180905.2217"; + version = "20181221.1344"; src = fetchFromGitHub { owner = "emacs-helm"; repo = "helm"; - rev = "f4e0168b281e127b8ace87e5fc28cac4116d893d"; - sha256 = "047s677kas4vpy4q709248i6kcrfbc97i6d93pvkip9xqb9pvybg"; + rev = "d27efee1002e6afc31b0fea9e4c14fe6330d8437"; + sha256 = "1l8xma5xp7xib6pizy7w68kpdmaw5iy84hahdi60977scc0al1zh"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/7e8bccffdf69479892d76b9336a4bec3f35e919d/recipes/helm"; @@ -42513,12 +43817,12 @@ melpaBuild { pname = "helm-bibtex"; ename = "helm-bibtex"; - version = "20180826.848"; + version = "20181030.1442"; src = fetchFromGitHub { owner = "tmalsburg"; repo = "helm-bibtex"; - rev = "b1a4f7d7c0dd3a258ee9f5cdc22b9a7847a2c4c6"; - sha256 = "1mmm10jb6gng6s7fnkm96sz5pwfiiwqsi1lydi7g939pgl1rhbp6"; + rev = "af05ccb498d89550644cc01c80628053d4d2d73f"; + sha256 = "0m2yn7n7i5kn31m72006n58qw8qhklylna0l2yv4maf46k527xxw"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/f4118a7721435240cf8489daa4dd39369208855b/recipes/helm-bibtex"; @@ -43033,12 +44337,12 @@ melpaBuild { pname = "helm-core"; ename = "helm-core"; - version = "20180825.2215"; + version = "20181224.2239"; src = fetchFromGitHub { owner = "emacs-helm"; repo = "helm"; - rev = "40a3fd4f232dc3cc0f9fc9a00276c1ee95992a2d"; - sha256 = "05x5liway8idqj3fd6dl2j0wibfmmsn2hggxz7jfyf3hkgs1z4lc"; + rev = "8433e877e31537d65e017219c1fe226abd78ae57"; + sha256 = "14z01xsv9lkzi9dr3w7glvkzjqghs5p1fqiaycdxhcmpizhvb2ja"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/ef7a700c5665e6d72cb4cecf7fb5a2dd43ef9bf7/recipes/helm-core"; @@ -44798,12 +46102,12 @@ melpaBuild { pname = "helm-make"; ename = "helm-make"; - version = "20180602.653"; + version = "20181107.1326"; src = fetchFromGitHub { owner = "abo-abo"; repo = "helm-make"; - rev = "014e81c638fae3ad891a0b9317ae368d9eee7c5f"; - sha256 = "1p7pdrq4vh9adk9m19dyapadaz6karlcksmah3g4l1c8zr0awf4h"; + rev = "f86c3973af760df6d7d0ecc61c3d9d14e1d93e2b"; + sha256 = "0lfwgdcvyg67m43gz00q65widv72hyqy2xgshd2j1pxkmqj2pmwk"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/0f25f066c60d4caff1fbf885bc944cac47515ec8/recipes/helm-make"; @@ -44937,12 +46241,12 @@ melpaBuild { pname = "helm-navi"; ename = "helm-navi"; - version = "20170402.752"; + version = "20181225.1629"; src = fetchFromGitHub { owner = "emacs-helm"; repo = "helm-navi"; - rev = "eb5d53f2abc640bea90e3c221562913c4d144638"; - sha256 = "0d2nm35hnp26xlpp4s60ddg8mn89bpaa5b6qsap9ff6kqxfnhww1"; + rev = "3b9abcc39ce7c657bc2dcc054b850dc2a7cf0448"; + sha256 = "1kxv8qx7s51fnzrslwqrgayqvyq30ycnb84p5qy7jf0rf69hxxjh"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/e5ffbc25c0eb30b9c96594d50f47cd0383aa8ebc/recipes/helm-navi"; @@ -45049,12 +46353,12 @@ melpaBuild { pname = "helm-org-rifle"; ename = "helm-org-rifle"; - version = "20180712.1545"; + version = "20181216.329"; src = fetchFromGitHub { owner = "alphapapa"; repo = "helm-org-rifle"; - rev = "b712ced914da3ae733ee7c355261071d4eed4876"; - sha256 = "0s8dq2x73p6dfrkyiq7zajl24wrsdmh6wgwrjjf9d6hdla64pfy8"; + rev = "23f4ae05f5a9d1894f4afdb9ef774c342eb7e787"; + sha256 = "040jmacydgp56gd48ddfn1yk8bsdaawhdkpb0nr898q0bkk5arzj"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/f39cc94dde5aaf0d6cfea5c98dd52cdb0bcb1615/recipes/helm-org-rifle"; @@ -45911,6 +47215,35 @@ license = lib.licenses.free; }; }) {}; + helm-slime = callPackage ({ cl-lib ? null + , emacs + , fetchFromGitHub + , fetchurl + , helm-core + , lib + , melpaBuild + , slime }: + melpaBuild { + pname = "helm-slime"; + ename = "helm-slime"; + version = "20181110.134"; + src = fetchFromGitHub { + owner = "emacs-helm"; + repo = "helm-slime"; + rev = "070d024147e1632b7358711b7f8fb77a28dcf265"; + sha256 = "1gbifis00x6wd81smng81xn7xgflwxnzrr4g49g159g3dj3vvlzx"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/c35d43a7a8219de4a7f675147f598966aaecb9db/recipes/helm-slime"; + sha256 = "0qv4c1dd28zqbjxpshga967szrh75a4k51n4x86xkbax7ycca4hh"; + name = "recipe"; + }; + packageRequires = [ cl-lib emacs helm-core slime ]; + meta = { + homepage = "https://melpa.org/#/helm-slime"; + license = lib.licenses.free; + }; + }) {}; helm-smex = callPackage ({ emacs , fetchFromGitHub , fetchurl @@ -46003,12 +47336,12 @@ melpaBuild { pname = "helm-spotify-plus"; ename = "helm-spotify-plus"; - version = "20180107.338"; + version = "20181229.345"; src = fetchFromGitHub { owner = "wandersoncferreira"; repo = "helm-spotify-plus"; - rev = "c0903491da0adf215ad44bd31e11604da95062d6"; - sha256 = "0wqj28i5l43xf8l24g4qn6vra489f0lp7nb5rj7yywy6siikmvx6"; + rev = "8404541463a398007c7a38a28df10d89f3ef9668"; + sha256 = "0mqyzac48pmmazxb9vl9b5jymr53blzlmjbkmdsxnmk6gml27acr"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/306aa9fd29f1495eef71476dfcba3b494223b0a9/recipes/helm-spotify-plus"; @@ -46084,12 +47417,12 @@ melpaBuild { pname = "helm-system-packages"; ename = "helm-system-packages"; - version = "20180911.1432"; + version = "20181011.2355"; src = fetchFromGitHub { owner = "emacs-helm"; repo = "helm-system-packages"; - rev = "2b4636dc861ffe2c4a2025b67ab40460f85b9563"; - sha256 = "01by0c4lqi2cw8xmbxkjw7m9x78zssm31sx4hdpw5j35s2951j0f"; + rev = "d25e88c6791fb6166aa3f69693670750e56caa5b"; + sha256 = "1r3m81rylyhk9vvl4mv4rrqzh5lj2i944n7ih0zca3y8z37klh67"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/0c46cfb0fcda0500e15d04106150a072a1a75ccc/recipes/helm-system-packages"; @@ -46114,14 +47447,14 @@ ename = "helm-systemd"; version = "20180130.2034"; src = fetchFromGitHub { - owner = "lompik"; + owner = "Lompik"; repo = "helm-systemd"; rev = "96f5cd3ee3412539c2f8d145201f47c4f8e53b4f"; sha256 = "0wyabh76q2lighd7qxpkzp35fkblxlz8g7p4lpgfwvjid0ixmnvq"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/855ea20024b606314f8590129259747cac0bcc97/recipes/helm-systemd"; - sha256 = "0k2yqmvwswihcn75wzn5923z5y4njarmvdlx3j7w3hwsxh6k1mcw"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/35763febad20f29320d459394f810668db6c3353/recipes/helm-systemd"; + sha256 = "1m1by9i37ban3zkznyamp5vxizj8zsz06fdscdhmky1grf6ri4r8"; name = "recipe"; }; packageRequires = [ emacs helm with-editor ]; @@ -46139,12 +47472,12 @@ melpaBuild { pname = "helm-tail"; ename = "helm-tail"; - version = "20180624.203"; + version = "20181123.2039"; src = fetchFromGitHub { owner = "akirak"; repo = "helm-tail"; - rev = "ff3895e2fbc6d3cc6503bc295a49bba70654aaef"; - sha256 = "0ixdr93axjqdqv2m4yvpnf2v4g7c1d1hkqhid2lfg8vaqb9dvqpw"; + rev = "1f5a6355aa3bdb00b9b0bc93db29c17f0d6701e3"; + sha256 = "1ad0khw26m22xpdv0iyg5gac92i8m455sznsfh16vxaa98gq0c4q"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/74b235c2ecf8c8f8206670bca3b915deb4b77c2b/recipes/helm-tail"; @@ -46277,12 +47610,12 @@ melpaBuild { pname = "helm-w3m"; ename = "helm-w3m"; - version = "20171102.216"; + version = "20181029.26"; src = fetchFromGitHub { owner = "emacs-helm"; repo = "helm-w3m"; - rev = "8345b7e60702911f54eb6571e429c0d31878957d"; - sha256 = "05izdvs8hwkkmz6hvlm2b5p5jmha39nsnnzzhnli70jrbqj013cq"; + rev = "c15d926631198d6d759ec8881837bcca5a64963b"; + sha256 = "0qaqcwhwmckfmg3axiad35azn0l74k1niw4ix0v1bn2vqrxanqcw"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/f683fc9c7990e9ecb8a94808a7d03eb90c5569b1/recipes/helm-w3m"; @@ -46387,12 +47720,12 @@ melpaBuild { pname = "helm-youtube"; ename = "helm-youtube"; - version = "20161113.1848"; + version = "20190101.933"; src = fetchFromGitHub { owner = "maximus12793"; repo = "helm-youtube"; - rev = "7a944bc25f0f9e915011e9325caf46b46fcaa1b8"; - sha256 = "0948rq6i4ibwhmi6m2k23f83yvf56vwgri1sg2060d901zd86cxy"; + rev = "e7272f1648c7fa836ea5ac1a61770b4931ab4709"; + sha256 = "062i1gkwa1rmxaw5mf20vc3nqsj6g6hfbggcglgd3wfn9rckvlqb"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/7537f732091b96b6c1b96c0174895278eba6776a/recipes/helm-youtube"; @@ -46459,6 +47792,32 @@ license = lib.licenses.free; }; }) {}; + help-find-org-mode = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "help-find-org-mode"; + ename = "help-find-org-mode"; + version = "20181203.1834"; + src = fetchFromGitHub { + owner = "EricCrosson"; + repo = "help-find-org-mode"; + rev = "c6fa2c8a8e9381572190010a9fa01f2be78f2790"; + sha256 = "1szjqaw31r5070wpbj5rcai124c66bs32x35w1hsxyvzs5k85wg9"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/572003398d1bba572fa9f6332b25ade9306bf718/recipes/help-find-org-mode"; + sha256 = "149rd61bcvgrwhnhlqriw6fn6fr4pwr4ynmj2bwcp558nwf0py0b"; + name = "recipe"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://melpa.org/#/help-find-org-mode"; + license = lib.licenses.free; + }; + }) {}; helpful = callPackage ({ dash , dash-functional , elisp-refs @@ -46473,12 +47832,12 @@ melpaBuild { pname = "helpful"; ename = "helpful"; - version = "20180912.1643"; + version = "20181229.523"; src = fetchFromGitHub { owner = "Wilfred"; repo = "helpful"; - rev = "2565d0425297567ab176ab55670c7d0d108b1cb9"; - sha256 = "1dxilg2dhm844hmf0b1mq4f3a1mn2lwzf5hgq9b98qk40vgdc50k"; + rev = "dcf0b2fc030675a6030e458a927d74025a954122"; + sha256 = "1wi2gjix6qjsj7p9b0qwig058g8p0260xq1v46r8asgikma63li9"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/889d34b654de13bd413d46071a5ff191cbf3d157/recipes/helpful"; @@ -46499,16 +47858,16 @@ melpaBuild { pname = "hemera-theme"; ename = "hemera-theme"; - version = "20170910.603"; + version = "20180916.224"; src = fetchFromGitHub { - owner = "GuidoSchmidt"; + owner = "guidoschmidt"; repo = "emacs-hemera-theme"; - rev = "354ae3b788c11ac08e6e2fe7c86adc621e2b16fd"; - sha256 = "00cfi9gsn9fvjpgxkz931p02gs8dcgwwsaqz3anss9qadxxmi9xv"; + rev = "b67c902b210b37b00cac68726822404543147ba8"; + sha256 = "1q31kz5p97pby26lyb6r0jfcx5pdyax3sfba4lp8dzmxpisz2g2p"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/3440905a20bc91bb2637a87c04ff8410379f150d/recipes/hemera-theme"; - sha256 = "0lxm06gv5f75s86320m8wh3dirdcspb6zd5n1a6l0pnn585xqkrn"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/35763febad20f29320d459394f810668db6c3353/recipes/hemera-theme"; + sha256 = "00d8dmmn7mhzj6ai0qgdkj4hy1qpdcyiriky97prydibjvljq239"; name = "recipe"; }; packageRequires = [ emacs ]; @@ -46827,11 +48186,11 @@ melpaBuild { pname = "highlight"; ename = "highlight"; - version = "20180604.2335"; + version = "20181002.451"; src = fetchgit { url = "https://framagit.org/steckerhalter/highlight.el.git"; - rev = "6f92253690dde26d9bfd21546fdf68ef2fdd486b"; - sha256 = "01c911p0bqq391hv7lfvz51fyismrvbkk5yyzwipmx0wrr9qjgfv"; + rev = "ea733e17884aeae19172407e20559fc693fdd3a7"; + sha256 = "13ajbhpwvdmk0mzaffj45gxqmq13b57d81iqdpg9q2l2wjk95jq7"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/f0a8eb0eefe88b4ea683a4743c0f8393506e014b/recipes/highlight"; @@ -46877,12 +48236,12 @@ melpaBuild { pname = "highlight-context-line"; ename = "highlight-context-line"; - version = "20170319.1442"; + version = "20181122.1403"; src = fetchFromGitHub { owner = "ska2342"; repo = "highlight-context-line"; - rev = "f91e99c178831830801299b9c3a512c4d70871a0"; - sha256 = "0q8z7i0jijj0yjz9smsqhx2hgrps0vyspadpc1ssb8vn5mn7vngb"; + rev = "c3257c0ca9dba76167bbd7e0718a65ecd26ef26f"; + sha256 = "10mv1hd33msafp3r62p9zhwivy0l876ci9xjh7nqc9621qxxd5rw"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/00df721571ff67fe158251fa843c8f515ded3469/recipes/highlight-context-line"; @@ -46903,12 +48262,12 @@ melpaBuild { pname = "highlight-defined"; ename = "highlight-defined"; - version = "20141225.730"; + version = "20181106.918"; src = fetchFromGitHub { owner = "Fanael"; repo = "highlight-defined"; - rev = "243478cc204ab42d29805ed610961cbb260c1dfd"; - sha256 = "1l10xnjyvcbv1v8xlldaca7z3fk5qav7nsbhfnjxxd0bgh5v9by2"; + rev = "8e05be23e555ab05edc6fb188f5ce28ef495c946"; + sha256 = "1xqs8shzka47ns4a60ba2i2kgjcq9vl9w1518ffhb4x2x41lr4ri"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/acc9b816796b9f142c53f90593952b43c962d2d8/recipes/highlight-defined"; @@ -47005,12 +48364,12 @@ melpaBuild { pname = "highlight-indent-guides"; ename = "highlight-indent-guides"; - version = "20180910.1027"; + version = "20181106.1021"; src = fetchFromGitHub { owner = "DarthFennec"; repo = "highlight-indent-guides"; - rev = "e46356487d4b19144af3025cf16f1b1bd174a450"; - sha256 = "1fm13mx7qcwr0jnwknaja4qg92l2yq1f303hx4fjqm609s5vm1hz"; + rev = "fc99ee753ac9d53ce91fb032f97430a551e04466"; + sha256 = "0czg07gjwf6r0bn6848yaq96v9y32aizdglmdp4d7vk7bryvcd1i"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/c8acca65a5c134d4405900a43b422c4f4e18b586/recipes/highlight-indent-guides"; @@ -47030,12 +48389,12 @@ melpaBuild { pname = "highlight-indentation"; ename = "highlight-indentation"; - version = "20171218.137"; + version = "20181204.39"; src = fetchFromGitHub { owner = "antonj"; repo = "Highlight-Indentation-for-Emacs"; - rev = "35e2c1d4f8f368685893128f77f90454cb9c2708"; - sha256 = "1rmqi8k8p0f3aawh2l119hsfnnd060bv9hhjx13pabid8xhhvs73"; + rev = "d03803f2c06749c430443a3d24e039cbafc9c58f"; + sha256 = "1jq0gf4kcx9hvrw40rnw5c2qynjpjw1vsjbi2i4lqjbsnfnxn4wz"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/31c443de5088410c0fe1b1c18f664b33ad259277/recipes/highlight-indentation"; @@ -47083,12 +48442,12 @@ melpaBuild { pname = "highlight-numbers"; ename = "highlight-numbers"; - version = "20170905.342"; + version = "20181013.1044"; src = fetchFromGitHub { owner = "Fanael"; repo = "highlight-numbers"; - rev = "f952ecb7448c125d4ef82ee6ad136b25e640d74a"; - sha256 = "0fgb63iwdaakzm9cddivmr2j0mmay3512wmd14dh804a62j5l2pv"; + rev = "8b4744c7f46c72b1d3d599d4fb75ef8183dee307"; + sha256 = "075ip8h7bdin0yvvhn5nkwnz58arlaw1imr866ghp12q5rl4shmc"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/882e3a4877ddd22cc52f56f0ce3d55b6e4831c7a/recipes/highlight-numbers"; @@ -47258,12 +48617,12 @@ melpaBuild { pname = "highlight-thing"; ename = "highlight-thing"; - version = "20170919.704"; + version = "20181229.501"; src = fetchFromGitHub { owner = "fgeller"; repo = "highlight-thing.el"; - rev = "efa9abbef9b23d24179fad2518ac03e31d2dd9a9"; - sha256 = "1a39nvlcih26qsjb5s0051j9c9vqv5l66m7wl3ja4pnxx9k4754g"; + rev = "361a3301ba37663c8e27ba75d2743a2501f4b8b9"; + sha256 = "07ywg6idbwm91wbzpdp57w3n84pbbjyzmf5gp3m7qvm2h0xxv9av"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/84b6cb403ff9a588771d051e472596f4e3cc974d/recipes/highlight-thing"; @@ -47328,33 +48687,6 @@ license = lib.licenses.free; }; }) {}; - himp = callPackage ({ emacs - , fetchFromGitHub - , fetchurl - , lib - , melpaBuild - , vimish-fold }: - melpaBuild { - pname = "himp"; - ename = "himp"; - version = "20170814.1215"; - src = fetchFromGitHub { - owner = "mkcms"; - repo = "himp"; - rev = "140234b7f7cde03cf858c5011a2ab63e3bc802ec"; - sha256 = "1g3ivash185anw8i67di1mxdfxa9py51prdy5ixl95vpqk5nmwbw"; - }; - recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/51b31fb1fa7052d16d659313d249eef01ca3ee88/recipes/himp"; - sha256 = "1igzlvm4g4rcnlvnwi5kn1jfvyrw2vnmp1kpvfnv7w9n6d8kflla"; - name = "recipe"; - }; - packageRequires = [ emacs vimish-fold ]; - meta = { - homepage = "https://melpa.org/#/himp"; - license = lib.licenses.free; - }; - }) {}; hindent = callPackage ({ cl-lib ? null , fetchFromGitHub , fetchurl @@ -47365,14 +48697,14 @@ ename = "hindent"; version = "20180518.202"; src = fetchFromGitHub { - owner = "chrisdone"; + owner = "commercialhaskell"; repo = "hindent"; rev = "dc47d8b98ebd6ee7fdd7de5f75e65e5b5eedf72f"; sha256 = "0xp3mpiyrc6886bi9rih4vbmsar56h8i5sapigd3gn2pv2v688bc"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/dbae71a47446095f768be35e689025aed57f462f/recipes/hindent"; - sha256 = "1f3vzgnqigwbwvglxv0ziz3kyp5dxjraw3vlghkpw39f57mky4xz"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/9a15a17a5aa78aed72958b2a1bde53f0c0ab5be7/recipes/hindent"; + sha256 = "0az2zhdi73sa3h1q1c0bayqdk22a7ngrvsg9fr8b0i39sn3w8y07"; name = "recipe"; }; packageRequires = [ cl-lib ]; @@ -47610,6 +48942,33 @@ license = lib.licenses.free; }; }) {}; + hl-fill-column = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild + , names }: + melpaBuild { + pname = "hl-fill-column"; + ename = "hl-fill-column"; + version = "20181210.404"; + src = fetchFromGitHub { + owner = "laishulu"; + repo = "hl-fill-column"; + rev = "d6d121a71458052df5371ca2e2d867632d0b2eba"; + sha256 = "122i9f6sl8jhpdy6fwfr287lg66rcynknaq3qhf760wmdx1lpij9"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/68c40d7b6af664e01083b78c60b6a8e66b278a4e/recipes/hl-fill-column"; + sha256 = "1kv77zfz1rd60cajjgljn8b04j6szqwwc3ialfxf6wdzh1w28jd3"; + name = "recipe"; + }; + packageRequires = [ emacs names ]; + meta = { + homepage = "https://melpa.org/#/hl-fill-column"; + license = lib.licenses.free; + }; + }) {}; hl-indent = callPackage ({ cl-lib ? null , emacs , fetchFromGitHub @@ -47669,12 +49028,12 @@ melpaBuild { pname = "hl-todo"; ename = "hl-todo"; - version = "20180709.2155"; + version = "20181031.1209"; src = fetchFromGitHub { owner = "tarsius"; repo = "hl-todo"; - rev = "3401f322d954e635372995bf5cc77dae171a78ba"; - sha256 = "1dk4sb2z07cnndzs4dclqgnp3bldl2k3acr21cfdvp87flvpph0y"; + rev = "24b9925b1b2c7ad6bf7b66800395f74abf035c5f"; + sha256 = "1bqi2kchcj58j1y3k439v6jk86cg73m0qwfyjz1396h0h2rspnnd"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/7c262f6a1a10e8b3cc30151cad2e34ceb66c6ed7/recipes/hl-todo"; @@ -47698,12 +49057,12 @@ melpaBuild { pname = "hledger-mode"; ename = "hledger-mode"; - version = "20180821.733"; + version = "20181230.217"; src = fetchFromGitHub { owner = "narendraj9"; repo = "hledger-mode"; - rev = "af51c0a7a0952c244e5c6bb818ab4ce3b9806609"; - sha256 = "1j3bi47wfwa9d34yf6c2bmibmmags8q3vd3l2raqriagjf5gzwgb"; + rev = "adff3104a6fb7e5e9369221a4ff226273beafb2f"; + sha256 = "1n8vr85xnfw82dpahsyg1hiybfr9ky6c0pj9vywzn8sk1yil1szq"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/855ea20024b606314f8590129259747cac0bcc97/recipes/hledger-mode"; @@ -48032,31 +49391,6 @@ license = lib.licenses.free; }; }) {}; - how-many-lines-in-project = callPackage ({ fetchFromGitHub - , fetchurl - , lib - , melpaBuild }: - melpaBuild { - pname = "how-many-lines-in-project"; - ename = "how-many-lines-in-project"; - version = "20140806.2142"; - src = fetchFromGitHub { - owner = "kaihaosw"; - repo = "how-many-lines-in-project"; - rev = "8a37ef885d004fe2ce231bfe05ed4867c6192d9b"; - sha256 = "0vygbdjy2dv7n50vrkcnqyswq48sgas0zzjfsac8x5g9vhxjkawj"; - }; - recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/3416586d4d782cdd61a56159c5f80a0ca9b3ddf4/recipes/how-many-lines-in-project"; - sha256 = "0rsl8f0ww2q5w87a8ddfjadw4mx4g2ahb62yb6xw7pzadmmz89f8"; - name = "recipe"; - }; - packageRequires = []; - meta = { - homepage = "https://melpa.org/#/how-many-lines-in-project"; - license = lib.licenses.free; - }; - }) {}; howdoi = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -48090,11 +49424,11 @@ melpaBuild { pname = "howm"; ename = "howm"; - version = "20180225.205"; + version = "20180929.514"; src = fetchgit { url = "https://scm.osdn.net/gitroot/howm/howm.git"; - rev = "b932fa603f074049637907d35594f73c3fba45d0"; - sha256 = "189j3061g2s1286434x3zyh6xyjycfrd2sqxx655biicy1xxyk52"; + rev = "f707233a99f425d67ddb86b197edeaa3f03a280d"; + sha256 = "1k1fv6yyydxcv8rm5f3cyly0fl0vmxgqxdk9wnakabcb14d32ws4"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/0099a1f9b0efb3fc3a1420cfe71a647ec6458998/recipes/howm"; @@ -48107,6 +49441,32 @@ license = lib.licenses.free; }; }) {}; + hsluv = callPackage ({ fetchFromGitHub + , fetchurl + , lib + , melpaBuild + , seq }: + melpaBuild { + pname = "hsluv"; + ename = "hsluv"; + version = "20181127.406"; + src = fetchFromGitHub { + owner = "hsluv"; + repo = "hsluv-emacs"; + rev = "bc6e27d25b62f5a2f79836a32e8de6125f4d1564"; + sha256 = "08jkba7z0w1ma9j2y93aic3sbgnzxyyiradk69qylnl60q4xnx19"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/b74189f827ed54760c758f0364e573809ab32a22/recipes/hsluv"; + sha256 = "1g7g8434q2a4vpzxa4y5vrplzjali89px3gr8vhzfhscxg6mdcki"; + name = "recipe"; + }; + packageRequires = [ seq ]; + meta = { + homepage = "https://melpa.org/#/hsluv"; + license = lib.licenses.free; + }; + }) {}; ht = callPackage ({ dash , fetchFromGitHub , fetchurl @@ -48115,12 +49475,12 @@ melpaBuild { pname = "ht"; ename = "ht"; - version = "20180129.1434"; + version = "20181216.337"; src = fetchFromGitHub { owner = "Wilfred"; repo = "ht.el"; - rev = "5a665d00dc8fda77bad2a43277d8809c23e46ab8"; - sha256 = "0w0zi393ixgi154c6dq2i1kf3kraqyfw8alfxcn6fhhxy1g9p02y"; + rev = "8ec3eb96ee63430fb24257e4aa8169b50cb7be12"; + sha256 = "0nhk8l0qp92ch3jzln66igcsjnkq4nzml35mxyljx0189w64s7dq"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/6c7589bca1c1dfcc0fe76779f6847fda946ab981/recipes/ht"; @@ -48271,12 +49631,12 @@ melpaBuild { pname = "htmlize"; ename = "htmlize"; - version = "20180412.1244"; + version = "20180923.1129"; src = fetchFromGitHub { owner = "hniksic"; repo = "emacs-htmlize"; - rev = "315a8f23cfd3e87642ff9e30ae3300c7a84244d5"; - sha256 = "0pjiid5a16xx9n5bvfff612mpli00y9nbzjapn9f1y79yl99yvxy"; + rev = "8db0aa6aab77475a732b7363f0d57bd3933c18fd"; + sha256 = "19hwcqla1mnp5k8mll4in1pimqpa8zmqd8yfmxkikldmwwsilaq0"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/075aa00a0757c6cd1ad392f0300bf5f1b937648d/recipes/htmlize"; @@ -48289,6 +49649,32 @@ license = lib.licenses.free; }; }) {}; + htmltagwrap = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "htmltagwrap"; + ename = "htmltagwrap"; + version = "20181211.606"; + src = fetchFromGitHub { + owner = "jcs090218"; + repo = "htmltagwrap"; + rev = "c9722bcaf449ca3e52628827d063233f4c8a7d1f"; + sha256 = "0xd9841b9jfxsnmv5083yhh8d9fskyy7d0h0fhk922qcvhx0swhq"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/3ab8c9de8a9a1d0f8a7dd70d2cb191fec8714592/recipes/htmltagwrap"; + sha256 = "1084vq3qpyjakph5yb95r0f7a4bjqfnhj5pnpv7qk39xnr640mxb"; + name = "recipe"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://melpa.org/#/htmltagwrap"; + license = lib.licenses.free; + }; + }) {}; http = callPackage ({ edit-indirect , emacs , fetchFromGitHub @@ -48299,12 +49685,12 @@ melpaBuild { pname = "http"; ename = "http"; - version = "20170906.1111"; + version = "20181008.1421"; src = fetchFromGitHub { owner = "emacs-pe"; repo = "http.el"; - rev = "193a7bf843dd6b6805c7b18dab31f50c8325d710"; - sha256 = "1v6adfy1774axplsjfsdkm0azfwb5g7iq26zcss4mj966q1633xv"; + rev = "1bbfff5994e16ffc185c4ac28d792cb040da3351"; + sha256 = "0bs2l487mn8zkx3h7zgynm5cq54w8wlr150izaxynqddcpkrr44h"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/c7c63aaf27240706d84e464881d40cfb7cbe9ee3/recipes/http"; @@ -48509,12 +49895,12 @@ melpaBuild { pname = "hy-mode"; ename = "hy-mode"; - version = "20180702.1240"; + version = "20181124.1106"; src = fetchFromGitHub { owner = "hylang"; repo = "hy-mode"; - rev = "71a12a9208c4b87859bcbb6978e7915dd518e8dd"; - sha256 = "1px4kws91y581bg2zaav2nx972v73r4r0j135p5cbnynvkrknhnz"; + rev = "9b32a3c37aa6252c5f642e1f8fcba6d6fbbbeffc"; + sha256 = "08fcnn8s90782l1ljb3hxvdycvarv5nrlc9n63sfzjn0434bgk6z"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/fc9ab5cf16b61bb27559cd8ec5cf665a5aab2154/recipes/hy-mode"; @@ -48612,12 +49998,12 @@ melpaBuild { pname = "hydra"; ename = "hydra"; - version = "20180703.802"; + version = "20181128.916"; src = fetchFromGitHub { owner = "abo-abo"; repo = "hydra"; - rev = "87cc74b2644daa2e9e660bc8a447c84a0ddeeab6"; - sha256 = "1pizlg7qbzjy6jrs1ivhxx5kfnlbkkfwf5q3jl4695gh7z0spfkb"; + rev = "67098cc9149854a95b589c3763843eabc82c9b2d"; + sha256 = "1bql4kyvsafyr0r78ybawhkwgjb3wld9acg7p0pzmmvk9izsji38"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/a4375d8ae519290fd5018626b075c226016f951d/recipes/hydra"; @@ -48687,12 +50073,12 @@ melpaBuild { pname = "ialign"; ename = "ialign"; - version = "20180705.453"; + version = "20181202.346"; src = fetchFromGitHub { owner = "mkcms"; repo = "interactive-align"; - rev = "e92664e673647826161a19e9cfc327fa8c69ba6e"; - sha256 = "0x3naly4qh3q2ngm91y1pkm5s59kqgbgydax46hp6jnasdk4klk5"; + rev = "e1308c8f6aea05ad6dbcaa33b9bee4eb7e05ee39"; + sha256 = "0b7a2z4v1nyyaw0lvql9xrakpsi1a6kflqr74k56ndm3ivmqwx09"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/072f1f7ce17e2972863bce10af9c52b3c6502eab/recipes/ialign"; @@ -48755,7 +50141,34 @@ license = lib.licenses.free; }; }) {}; - ibuffer-projectile = callPackage ({ fetchFromGitHub + ibuffer-project = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "ibuffer-project"; + ename = "ibuffer-project"; + version = "20181216.1325"; + src = fetchFromGitHub { + owner = "muffinmad"; + repo = "emacs-ibuffer-project"; + rev = "7424e71062f2cb969c3e9951203022414dea37fb"; + sha256 = "02rr81ddpand0hb3yaskklhpknnqfjkcqaa2w77xi4xlzjdima01"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/895d692a678322e2d082ead155b679fa24a3a82d/recipes/ibuffer-project"; + sha256 = "14lpjf9lsjzvkbp5ai95ymgl6h8waq80623hnamg6mv83vg7w135"; + name = "recipe"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://melpa.org/#/ibuffer-project"; + license = lib.licenses.free; + }; + }) {}; + ibuffer-projectile = callPackage ({ emacs + , fetchFromGitHub , fetchurl , lib , melpaBuild @@ -48763,19 +50176,19 @@ melpaBuild { pname = "ibuffer-projectile"; ename = "ibuffer-projectile"; - version = "20180324.2025"; + version = "20181201.1952"; src = fetchFromGitHub { owner = "purcell"; repo = "ibuffer-projectile"; - rev = "1e89bfa7cae0629d29f24af3d81774b88b3cede0"; - sha256 = "0y0pvjic5n5wmkrjzjjnhz2xaknib6w5p01vgv2jf5ylwq84wray"; + rev = "76496214144687cee0b5139be2e61b1e400cac87"; + sha256 = "0vv9xwb1qd5x8zhqmmsn1nrpd11cql9hxb7483nsdhcfwl4apqav"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/363a6a888945f2c8b02f5715539439ba744d737d/recipes/ibuffer-projectile"; sha256 = "1qh4krggmsc6lx5mg60n8aakmi3f6ppl1gw094vfcsni96jl34fk"; name = "recipe"; }; - packageRequires = [ projectile ]; + packageRequires = [ emacs projectile ]; meta = { homepage = "https://melpa.org/#/ibuffer-projectile"; license = lib.licenses.free; @@ -48866,12 +50279,12 @@ melpaBuild { pname = "ibuffer-vc"; ename = "ibuffer-vc"; - version = "20171106.2341"; + version = "20181225.1427"; src = fetchFromGitHub { owner = "purcell"; repo = "ibuffer-vc"; - rev = "83d60aefd21e2aa20c7217d224f38a40bb75e63b"; - sha256 = "06jk5ccsfivh6bf6ppkli6cni39rvmm9asack1056f9q6jq6l8p1"; + rev = "64cb03887bcae6127e80f0d9342c33206e21d2d2"; + sha256 = "1ayqa7l5ny7g01pb3917w2phnsdfw69scw3lk6bpa773pq00n2vi"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/cae2ac3513e371a256be0f1a7468e38e686c2487/recipes/ibuffer-vc"; @@ -48967,12 +50380,12 @@ melpaBuild { pname = "idle-highlight-in-visible-buffers-mode"; ename = "idle-highlight-in-visible-buffers-mode"; - version = "20180810.2331"; + version = "20181027.831"; src = fetchFromGitHub { owner = "ignacy"; repo = "idle-highlight-in-visible-buffers-mode"; - rev = "09bb527ff9b8e5ad3da15aa461d595f187b91172"; - sha256 = "0yfxd2ffib7xjk9hbx3xhm6dap01a4649x333bfva0bpz26g55np"; + rev = "8d8de309d5bd4b035c01bf7f0cfc6e079c79d898"; + sha256 = "194r7f4ngwx03n74rs26hqn9wypn9idjizvmffpsjpxfr7wr9z7l"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/b5a533be3b8dea556438d93ac48853dd3a9690f1/recipes/idle-highlight-in-visible-buffers-mode"; @@ -49095,12 +50508,12 @@ melpaBuild { pname = "ido-complete-space-or-hyphen"; ename = "ido-complete-space-or-hyphen"; - version = "20130228.208"; + version = "20180928.1850"; src = fetchFromGitHub { owner = "doitian"; repo = "ido-complete-space-or-hyphen"; - rev = "3fe1fe1e1a743f8deb8f4025977647afecd58f14"; - sha256 = "1aih8n10lcrw0bdgvlrkxzhkpxpmphw07cvbp6zd27ia25037fzw"; + rev = "ed60ebed113e4e1552efeab0c416f7c88428268e"; + sha256 = "15h0alwi7qfqyi7w7gdl06ykxvafbx1p4614rg81kmzgs4dpqgy3"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/59e11094068d3a0c0e4edc1f82158c43d3b15e0e/recipes/ido-complete-space-or-hyphen"; @@ -49204,12 +50617,12 @@ melpaBuild { pname = "ido-flex-with-migemo"; ename = "ido-flex-with-migemo"; - version = "20180817.740"; + version = "20181219.1657"; src = fetchFromGitHub { owner = "ROCKTAKEY"; repo = "ido-flex-with-migemo"; - rev = "acced7c19f3ad505cc27cd95ab05593b8194d2e5"; - sha256 = "186idn1385n342cdrbf9glkd9bw8vihyq51mlk642fmkiadv9hwd"; + rev = "3ad1d8248d238c47ead545478df7690e3f6d1d06"; + sha256 = "1zj2q97qxp07yfgl6k1fz5nrshryibf773czvrc8i9cm401bx235"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/1647d1ae7400ddbc8367c355ade16b5c360b42fc/recipes/ido-flex-with-migemo"; @@ -49593,12 +51006,12 @@ melpaBuild { pname = "idris-mode"; ename = "idris-mode"; - version = "20180416.2245"; + version = "20181211.650"; src = fetchFromGitHub { owner = "idris-hackers"; repo = "idris-mode"; - rev = "2cd2ace9327248e141c35127b8ef9114a1301a1d"; - sha256 = "1bszb2bccjvamxbyyhbmw7hqhs71yyx4x0bxzszs9036f6p1znph"; + rev = "3e5b2a6406dfeab6c6b43169afd9dd8f31e14d9b"; + sha256 = "09n93blwsjyk5aww5ii2f01d8yq7nfq7zhv801j6kls8g4kvaj45"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/17a86efca3bdebef7c92ba6ece2de214d283c627/recipes/idris-mode"; @@ -49644,12 +51057,12 @@ melpaBuild { pname = "iedit"; ename = "iedit"; - version = "20180829.2231"; + version = "20181114.150"; src = fetchFromGitHub { owner = "victorhge"; repo = "iedit"; - rev = "2ab2e8bea4b25cf7dcdabccffc81fcb9db7bbff9"; - sha256 = "00pkdr0wj488r7k7r1hbazjhw3z5gzb5nw3j587mwmwc5z6d5n95"; + rev = "35505ad860be27feaee71e8caf646706bf8ee31d"; + sha256 = "154d0zxn4vn4y2xglccpxkzlmg9k1g58hldgimv67x9cphsc0mpi"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/855ea20024b606314f8590129259747cac0bcc97/recipes/iedit"; @@ -50080,12 +51493,12 @@ melpaBuild { pname = "impatient-mode"; ename = "impatient-mode"; - version = "20180901.1607"; + version = "20181002.531"; src = fetchFromGitHub { owner = "skeeto"; repo = "impatient-mode"; - rev = "b1146e87b4ee31ca7bfc17009e779e273137b081"; - sha256 = "1065m5gyqihmk36im7k0din7dngbmq3a4p8v2qwfl8ybxrsfajvg"; + rev = "96f6a05f8de74e19d570217fe83f0734623ddb0c"; + sha256 = "1qddy3b3fmxgkpl10p0hvmgrzhkrxyxg72sxxg5ndfwvjpf2rf91"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/aaa64c4d43139075d77f4518de94bcbe475d21fc/recipes/impatient-mode"; @@ -50297,12 +51710,12 @@ melpaBuild { pname = "indium"; ename = "indium"; - version = "20180914.102"; + version = "20181206.244"; src = fetchFromGitHub { owner = "NicolasPetton"; repo = "Indium"; - rev = "db2d38359358e225753066913ca2e0099acc2956"; - sha256 = "1nlgrr147z31i6kak45n050rh48vnpj6ykd39vhv7if0q6jrsqir"; + rev = "fd5de13204b3b5f0d2a598fbe74c5a6ac13125bd"; + sha256 = "1v2r9k589l3rsxvijs783dsk5fpl00hrpk6xffirc6rhbkij9bjh"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/4292058cc6e31cabc0de575134427bce7fcef541/recipes/indium"; @@ -50444,31 +51857,6 @@ license = lib.licenses.free; }; }) {}; - inferior-spim = callPackage ({ fetchFromGitHub - , fetchurl - , lib - , melpaBuild }: - melpaBuild { - pname = "inferior-spim"; - ename = "inferior-spim"; - version = "20160826.646"; - src = fetchFromGitHub { - owner = "kaihaosw"; - repo = "inferior-spim"; - rev = "93f67ee49f1c6899a7efd52ea4e80e9f9da3371c"; - sha256 = "1ffa29clfsr3wb00irzqlazk9d0qmjxn9wy8zfca61lh0ax5khbg"; - }; - recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/3416586d4d782cdd61a56159c5f80a0ca9b3ddf4/recipes/inferior-spim"; - sha256 = "0p0g8diqijxpgr21890lnmzkyl74sv42ddgpfpv51b9fwnqky524"; - name = "recipe"; - }; - packageRequires = []; - meta = { - homepage = "https://melpa.org/#/inferior-spim"; - license = lib.licenses.free; - }; - }) {}; inflections = callPackage ({ cl-lib ? null , emacs , fetchFromGitHub @@ -50734,12 +52122,12 @@ melpaBuild { pname = "inkpot-theme"; ename = "inkpot-theme"; - version = "20171217.144"; + version = "20181118.2306"; src = fetchFromGitHub { owner = "ideasman42"; repo = "emacs-inkpot-theme"; - rev = "8d59548ff5171bf6be6acc58d111674579646124"; - sha256 = "0r63rb99nm7fpw8yn3gkbfka12jqwzkdhv97hm89nvdrxdnbggfs"; + rev = "054c125b49247a08af5a391992817776fd0e8af6"; + sha256 = "06g4xsirag4gjd9khii4yhca29g5z9507lyyxxk35k36ckarg07i"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/dd3e02aaf8865d8038b9c590c8545e7a1b21d620/recipes/inkpot-theme"; @@ -51014,12 +52402,12 @@ melpaBuild { pname = "intero"; ename = "intero"; - version = "20180806.1445"; + version = "20181224.1111"; src = fetchFromGitHub { owner = "commercialhaskell"; repo = "intero"; - rev = "0eec1536a0b051d1628895205c273d498385c7a7"; - sha256 = "0cr9z1inn8sjqs6lh5shwfdxqkvrr52fjmrs4y5fi9s96hmyx07l"; + rev = "382bc27f28101f6ac98dd7f15ca80e7316831bf1"; + sha256 = "0n9bls8vnxqzwxz9vyn8pnbcxhhmqzbrkcmb64zrbjl5kmmmk0r5"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/1b56ca344ad944e03b669a9974e9b734b5b445bb/recipes/intero"; @@ -51323,12 +52711,12 @@ melpaBuild { pname = "iqa"; ename = "iqa"; - version = "20170722.834"; + version = "20181024.1553"; src = fetchFromGitHub { owner = "a13"; repo = "iqa.el"; - rev = "08e3f70d0a3ed95a0c5675ae88e7966474ecc45a"; - sha256 = "1n7ghcixk16n6x8p7128mqjfcsalxfyp3asydnijw7qp358l7f9r"; + rev = "b45614f5204ed851de0abe93907aa94de5e37379"; + sha256 = "11wrmiwlp91x59cn9k2j2pqgvzbrnzvf81dqgm9l5ph5fym0jqsd"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/a9bd2e952d98f7ac2dc823581b07b65e951e9e45/recipes/iqa"; @@ -51400,12 +52788,12 @@ melpaBuild { pname = "irony"; ename = "irony"; - version = "20180703.1040"; + version = "20181218.1441"; src = fetchFromGitHub { owner = "Sarcasm"; repo = "irony-mode"; - rev = "91353a291509f0615fabaedcd92663cd6d94d345"; - sha256 = "12951pqrk5r9wr4ir1nr810g8p6ddyldh1m6f48r7999fb5y14rw"; + rev = "2136d457698754d56092a25fbe72f8cc6d7be8e2"; + sha256 = "145j9z6qg397s8g9y53nmvx0p379nx7gmwczq4hyzkgm92pfcm1q"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/d2b6a8d57b192325dcd30fddc9ff8dd1516ad680/recipes/irony"; @@ -51555,12 +52943,12 @@ melpaBuild { pname = "isolate"; ename = "isolate"; - version = "20180902.1237"; + version = "20181216.47"; src = fetchFromGitHub { owner = "casouri"; repo = "isolate"; - rev = "ec44bcb44d0332111d76d697deb6699c4ab2a91d"; - sha256 = "1f6dfj974ss0wy78phkjkk8h81qf5lqdnijfrmlk1cf2i2wj5sf3"; + rev = "700aa3c7945580c876d29c3c064282c33ebb365c"; + sha256 = "0j96rzfabn6lgv9xxyndpq3d2nys5z1brrrd7bga786zzwlp78a9"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/c8091f8d72c24a103f6dcaadc18bbec745c1c3d3/recipes/isolate"; @@ -51582,12 +52970,12 @@ melpaBuild { pname = "isortify"; ename = "isortify"; - version = "20180612.622"; + version = "20181205.604"; src = fetchFromGitHub { owner = "proofit404"; repo = "isortify"; - rev = "442f12fa91695a43a4b542f7b82d6ac9b004729b"; - sha256 = "02rjyza8a0j3a2jfm9ps8gvsjqx3gxznaxw1d1zjam0a87fp7p1k"; + rev = "5b79751aed815d151c13a8def8a487e786684e3a"; + sha256 = "0x4l5pq9vgv9kb8kcwpzb1vy7wqlq17w0g31q8yj17dqn5v59x19"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/9d4ad18492e7f4a56a1515873bc0b66fa49829bb/recipes/isortify"; @@ -51684,12 +53072,12 @@ melpaBuild { pname = "iter2"; ename = "iter2"; - version = "20180510.633"; + version = "20181020.802"; src = fetchFromGitHub { owner = "doublep"; repo = "iter2"; - rev = "f8fb8dc7230cdcd37c5d0e4e5a432125c13816d2"; - sha256 = "13q8p9cjz9c9j2l4vlwy6nvwh9y3b0aclg1b32zfdqhs6kmypisd"; + rev = "3b418e05e93ea380baf905de14efda4c174f779c"; + sha256 = "16mmqnwip3cixsmmij4dnjc8h323z280fk51w5rmwnnb0qmfzp66"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/d94316660051ee0ba0c12e380e6203986440368f/recipes/iter2"; @@ -51792,12 +53180,12 @@ melpaBuild { pname = "ivy"; ename = "ivy"; - version = "20180911.1001"; + version = "20181223.1202"; src = fetchFromGitHub { owner = "abo-abo"; repo = "swiper"; - rev = "41bd2486b174f0feff953722d3203a086d8e537e"; - sha256 = "0jgxi3vznfj7apzp8w74blmnfj0rhhisz3h823r6rg1zj8c31gy3"; + rev = "201c5d78c4985fb803eb681cca0ccc5a4f90b717"; + sha256 = "1vwki00v52gikrm908sw5mj5rqvywk7acy52358dy8gb5h54syd5"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/06c24112a5e17c423a4d92607356b25eb90a9a7b/recipes/ivy"; @@ -51824,12 +53212,12 @@ melpaBuild { pname = "ivy-bibtex"; ename = "ivy-bibtex"; - version = "20180826.848"; + version = "20181030.1442"; src = fetchFromGitHub { owner = "tmalsburg"; repo = "helm-bibtex"; - rev = "b1a4f7d7c0dd3a258ee9f5cdc22b9a7847a2c4c6"; - sha256 = "1mmm10jb6gng6s7fnkm96sz5pwfiiwqsi1lydi7g939pgl1rhbp6"; + rev = "af05ccb498d89550644cc01c80628053d4d2d73f"; + sha256 = "0m2yn7n7i5kn31m72006n58qw8qhklylna0l2yv4maf46k527xxw"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/c23c09225c57a9b9abe0a0a770a9184ae2e58f7c/recipes/ivy-bibtex"; @@ -51900,6 +53288,33 @@ license = lib.licenses.free; }; }) {}; + ivy-explorer = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , ivy + , lib + , melpaBuild }: + melpaBuild { + pname = "ivy-explorer"; + ename = "ivy-explorer"; + version = "20181221.427"; + src = fetchFromGitHub { + owner = "clemera"; + repo = "ivy-explorer"; + rev = "783816afda31d1b75487b906257e23e273bad6fa"; + sha256 = "1y3igqvmikz21ikzhmrmz2mpmk1pw6x2bk2d2i4z6l580fhz0h5y"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/8b590a6e0d11fda3d93e4d92f847138f8968b332/recipes/ivy-explorer"; + sha256 = "088ciy051b3kcd6anm66fnkg510c72hrfgdbgdf4mb9z4d9bk056"; + name = "recipe"; + }; + packageRequires = [ emacs ivy ]; + meta = { + homepage = "https://melpa.org/#/ivy-explorer"; + license = lib.licenses.free; + }; + }) {}; ivy-feedwrangler = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -51936,12 +53351,12 @@ melpaBuild { pname = "ivy-gitlab"; ename = "ivy-gitlab"; - version = "20180312.947"; + version = "20181228.26"; src = fetchFromGitHub { owner = "nlamirault"; repo = "emacs-gitlab"; - rev = "68318aca3206d50701039c9aae39734ca29a49f9"; - sha256 = "0arsjdn0anp7pacwxd3cw4db8a7pgzjlnwav1l3maaz1176h4lpb"; + rev = "8c2324c02119500f094c2f92dfaba4c9977ce1ba"; + sha256 = "056c4fb5sj2y4h94klx2g24n1g3qdi7ifzs8ksw5v6hcj9lrkb1n"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/35d4d4f22e4c567954287b2a1cabcb595497095a/recipes/ivy-gitlab"; @@ -51993,12 +53408,12 @@ melpaBuild { pname = "ivy-hydra"; ename = "ivy-hydra"; - version = "20180614.1500"; + version = "20181212.855"; src = fetchFromGitHub { owner = "abo-abo"; repo = "swiper"; - rev = "8c1a191764446397f31d4c8e47e687f5b521e46f"; - sha256 = "14csqz3mj33rjby8vgzlarcymn97jx8678w4n6mfd9m1h40fb7nv"; + rev = "dd8a947997158bb107f250ff2e38278d1266ba0b"; + sha256 = "0c1l3jaz8ynwd3dx3i2s76srywxnmih8jalfzx4i2xhc9896ldcj"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/06c24112a5e17c423a4d92607356b25eb90a9a7b/recipes/ivy-hydra"; @@ -52160,12 +53575,12 @@ melpaBuild { pname = "ivy-posframe"; ename = "ivy-posframe"; - version = "20180817.2124"; + version = "20181226.2132"; src = fetchFromGitHub { owner = "tumashu"; repo = "ivy-posframe"; - rev = "b92aaa1c4695e2c6012cdbc1469b89e8c0dac4c2"; - sha256 = "0hng52hcarpxry99cppl5sysf13rv536n22fqj8myh1b1657186a"; + rev = "3d98dbde1d9b1b170b87828d34d068c358de591d"; + sha256 = "0i8ak4yp97zljz0mg2icyziis5xdp44qzkddb86n0vfjglc5kry3"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/9e7c6f7ca439683abf11dcaa38672ac139c0da4f/recipes/ivy-posframe"; @@ -52188,12 +53603,12 @@ melpaBuild { pname = "ivy-prescient"; ename = "ivy-prescient"; - version = "20180823.1838"; + version = "20181220.1624"; src = fetchFromGitHub { owner = "raxod502"; repo = "prescient.el"; - rev = "1e0db9451e75f0db29668bebe98dfa747c6b4bcf"; - sha256 = "0zm9phc4cv7ldgyngcj84fxc1j0nh12c05lxiwv0n1xb8wc6awvf"; + rev = "c395c6dee67cf269be12467b768343fb10f2399f"; + sha256 = "0zh0g9vxgqbs48li91ar5swn9mrskmqc0kk7sbymkclkb60xcjs9"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/a92495d09689932ab9f0b716078ceeeb9cc154e0/recipes/ivy-prescient"; @@ -52243,16 +53658,16 @@ melpaBuild { pname = "ivy-rich"; ename = "ivy-rich"; - version = "20180826.2356"; + version = "20181220.34"; src = fetchFromGitHub { - owner = "yevgnen"; + owner = "Yevgnen"; repo = "ivy-rich"; - rev = "b40a76d5c2c29fcc035daa04a7125ffadbedc471"; - sha256 = "0ayf3dwfhafcbqnckm65zy8nc1rv9ji939qfn53wbhxkrgqdicgz"; + rev = "7b0fc52a6ebb9b53aef04f68672d25337c2a4540"; + sha256 = "04n8whm00p1qhvwq3cz75qjxkx9sw4in9djsawmpsi63cqm78czx"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/0fc297f4949e8040d1b0b3271c9a70c64887b960/recipes/ivy-rich"; - sha256 = "0knkqc403gch4dp1q114h64cwwisxwnsxjqbl3cnidlwkn7lzk7m"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/35763febad20f29320d459394f810668db6c3353/recipes/ivy-rich"; + sha256 = "1il1lhxxg694j9w65qwzjm4p4l3q1h1hfndybj6z1cb72ijw27fr"; name = "recipe"; }; packageRequires = [ emacs ivy ]; @@ -52381,12 +53796,12 @@ melpaBuild { pname = "ivy-yasnippet"; ename = "ivy-yasnippet"; - version = "20180831.915"; + version = "20181002.955"; src = fetchFromGitHub { owner = "mkcms"; repo = "ivy-yasnippet"; - rev = "1d4ac765f5376263fa25b595b9cd7dcfb999cc52"; - sha256 = "1850a0x64qc0kwc2qp1pb3v8l6dvdkyyzw1v01hfp3jnx3gxkw17"; + rev = "32580b4fd23ebf9ca7dde96704f7d53df6e253cd"; + sha256 = "1wfg6mmd5gl1qgvayyzpxlkh9s7jgn20y8l1vh1zbj1czvv51xp8"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/8c76857d716afab46f5efe46e353935921d5f217/recipes/ivy-yasnippet"; @@ -52438,12 +53853,12 @@ melpaBuild { pname = "ivy-youtube"; ename = "ivy-youtube"; - version = "20171112.732"; + version = "20181126.239"; src = fetchFromGitHub { owner = "squiter"; repo = "ivy-youtube"; - rev = "23e1089d4c4fc32db20df14ba10078aabf117e87"; - sha256 = "0m70vxjj49kf8bzni2qchgzgx808z1fcfh02cflkhjcb77dkq8d6"; + rev = "849b6db7ef02b080a86c1b887488e2935c31059a"; + sha256 = "0f90dq8qhmsnm2hvnvzyb20nq0vmgnqzqa693scq69dv5rdjgwyj"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/855ea20024b606314f8590129259747cac0bcc97/recipes/ivy-youtube"; @@ -52536,22 +53951,23 @@ , fetchurl , fsm , lib - , melpaBuild }: + , melpaBuild + , srv }: melpaBuild { pname = "jabber"; ename = "jabber"; - version = "20170423.513"; + version = "20180927.1625"; src = fetchgit { url = "https://github.com/legoscia/emacs-jabber.git"; - rev = "3de7fb40ab9c82ada2a4b5f364a2417345953050"; - sha256 = "0miq8y9yfnhihwxayzri81s21qwqm5vyj3h7j95q5kmdml661fb4"; + rev = "fff33826f42e040dad7ef64ea312d85215d3b0a1"; + sha256 = "1fif38qhiaxskfmqin82n9334bzrkgd1h5ip1djcm571i670gj74"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/ef7dbf3c2ffee5a4d71466ce037c618e0434a346/recipes/jabber"; sha256 = "04d2jdzs3c790ms70px8xvyip1liqvd3jy2mbs8qqbwyiccb74xx"; name = "recipe"; }; - packageRequires = [ fsm ]; + packageRequires = [ fsm srv ]; meta = { homepage = "https://melpa.org/#/jabber"; license = lib.licenses.free; @@ -52692,12 +54108,12 @@ melpaBuild { pname = "japanlaw"; ename = "japanlaw"; - version = "20160129.20"; + version = "20160614.2343"; src = fetchFromGitHub { owner = "mhayashi1120"; repo = "japanlaw.el"; - rev = "ad318559d626652d1bc59baa8ab86d5075361e33"; - sha256 = "1wjgjbzk66a4bv60lkf76g1bd9rw892kx36ijvr9vl6z760rrrcm"; + rev = "db8825309bec3eb8c89ff29bad4ecd2f54bbef81"; + sha256 = "04hrfqbl88dqpgbqby6708q5ghgkyfgkl4awbd5dfzzs9nfbmmyk"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/6192e1db76f017c3b1315453144cffc47cdd495d/recipes/japanlaw"; @@ -53088,12 +54504,12 @@ melpaBuild { pname = "jedi-core"; ename = "jedi-core"; - version = "20170121.610"; + version = "20181206.1601"; src = fetchFromGitHub { owner = "tkf"; repo = "emacs-jedi"; - rev = "de1f5597b600c0cb7661b5f451da2af4cb722571"; - sha256 = "120l9zfh432ffj5n6q4x16msvnqwcazkaxib2n19k4pdyvpd1gbp"; + rev = "615544c6ca81bbc53140aefe345e2120110c1660"; + sha256 = "0lc8p7xswsm5kir2paw3l65psq9fz4xd81r9ip3d7hsyab4jnvvf"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/bded1840a39fbf1e014c01276eb2f9c5a4fc218f/recipes/jedi-core"; @@ -53238,6 +54654,48 @@ license = lib.licenses.free; }; }) {}; + jest = callPackage ({ cl-lib ? null + , dash + , dash-functional + , emacs + , fetchFromGitHub + , fetchurl + , js2-mode + , lib + , magit-popup + , melpaBuild + , projectile + , s }: + melpaBuild { + pname = "jest"; + ename = "jest"; + version = "20181215.2059"; + src = fetchFromGitHub { + owner = "emiller88"; + repo = "emacs-jest"; + rev = "b753aa69511ac1219c39ea1584dd1571b55a221e"; + sha256 = "0csf6ld88b8722j6favx19ilsfc0mc56k6kmv6d2nixj1xl0pl27"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/a656c058c423ea6396b831d45c6dbb9bce6c4881/recipes/jest"; + sha256 = "10xsqcjskh2s6mlh07vf10whaas3aqm18hk3w309r3n1qmqihf75"; + name = "recipe"; + }; + packageRequires = [ + cl-lib + dash + dash-functional + emacs + js2-mode + magit-popup + projectile + s + ]; + meta = { + homepage = "https://melpa.org/#/jest"; + license = lib.licenses.free; + }; + }) {}; jetbrains = callPackage ({ cl-lib ? null , emacs , f @@ -53463,12 +54921,12 @@ melpaBuild { pname = "jq-mode"; ename = "jq-mode"; - version = "20180407.1048"; + version = "20181103.558"; src = fetchFromGitHub { owner = "ljos"; repo = "jq-mode"; - rev = "72ea5e35e0a66c7275cf4fe4af25a619761653d7"; - sha256 = "0xgkmadbbs3zid11pn6silb25kyng424ikgx0wib48yzcra0kdw4"; + rev = "d6bbd83baf0746f22564f7ae92db44e06da6e08c"; + sha256 = "1sk603258gvnfrvl641xfmgapg67z44wnlx6qba73wn3f2055765"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/318705966e26e58f87b53c115c519db95874ac1c/recipes/jq-mode"; @@ -53593,12 +55051,12 @@ melpaBuild { pname = "js-comint"; ename = "js-comint"; - version = "20171129.2056"; + version = "20181106.1438"; src = fetchFromGitHub { owner = "redguardtoo"; repo = "js-comint"; - rev = "83e932e4a83d1a69098ee87e0ab911d299368e60"; - sha256 = "1r2fwsdfkbqnm4n4dwlp7gc267ghj4vd0naj431w7pl529dmrb6x"; + rev = "01be9d821269c513665d00416f6dac5c77808801"; + sha256 = "17933bxyq6jff2ibaxj2w4d9i9a5hbcfv5kh84m2vqgxcilvlx2a"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/bc9d20b95e369e5a73c85a4a9385d3a8f9edd4ca/recipes/js-comint"; @@ -53861,12 +55319,12 @@ melpaBuild { pname = "jsfmt"; ename = "jsfmt"; - version = "20150727.1525"; + version = "20180920.308"; src = fetchFromGitHub { owner = "brettlangdon"; repo = "jsfmt.el"; - rev = "68109120f553fbc651fafb6fc35ed83c3e79f8a6"; - sha256 = "0h9gx5cl3lashk0n8pv9yzb0mm8dyziddfbwfqfm70638p93ylhc"; + rev = "ca141a135c7700eaedef92561d334e1fb7dc28a1"; + sha256 = "13b2y6q6hqgdf32vyph407jlgki8xf5kflqz8zi0hcrmb8wkrd5x"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/4ddc99843dec18a295dfc36e7b429f0e1ab7fb71/recipes/jsfmt"; @@ -54019,12 +55477,12 @@ melpaBuild { pname = "jsonnet-mode"; ename = "jsonnet-mode"; - version = "20180822.919"; + version = "20181211.1053"; src = fetchFromGitHub { owner = "mgyucht"; repo = "jsonnet-mode"; - rev = "0d68681d501fd57ebde5ed4fe100033a5d3aafa8"; - sha256 = "1r54fhmrcr9nrmiwrz10y2fyx0cvvb5mcmb3g0iypwpbg86vklv4"; + rev = "2b90b4e12a11c42df0f1e5db327a50555b6ff023"; + sha256 = "0j1dggxq1rm47cbi7khask40sj1wrcd0jki4m7j15qaxw7ryihhm"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/ba17372732723f73e8eeb6e7c47abc0edeb20da4/recipes/jsonnet-mode"; @@ -54177,12 +55635,12 @@ melpaBuild { pname = "julia-repl"; ename = "julia-repl"; - version = "20180910.141"; + version = "20180923.424"; src = fetchFromGitHub { owner = "tpapp"; repo = "julia-repl"; - rev = "06678ed0cb07807f6cb153c6b0997edc6a18f22c"; - sha256 = "1z03pgmfs8r9rwd8yhbb71fkl2lhr8i5ajs7n5gg1syrhnlj89ml"; + rev = "d8b94c6dbfa47fd51540b9d5b1bb0c2dfce3ebc2"; + sha256 = "027ib0i5af23s3kxsfbxh3jgw944crry0v4c7yxz9l8r8p3wpq1k"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/9a2a494969a9caf2f4513b12504379c9685047dc/recipes/julia-repl"; @@ -54404,6 +55862,33 @@ license = lib.licenses.free; }; }) {}; + k8s-mode = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild + , yaml-mode }: + melpaBuild { + pname = "k8s-mode"; + ename = "k8s-mode"; + version = "20181230.2341"; + src = fetchFromGitHub { + owner = "TxGVNN"; + repo = "emacs-k8s-mode"; + rev = "bd435186d807dc20e40cb72abf57542a3ddcc9c9"; + sha256 = "06hxs2syashv0r4d6w8v8p7pzab3cxwf3ymx5lrpicq5zjc3x3h5"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/44085c3f730315a5fc2a9a003ffa16d5df9f9a52/recipes/k8s-mode"; + sha256 = "14m4s0l61a2h38pdq6iczva24cl3mqdkw99k1q0drisdrvy57f33"; + name = "recipe"; + }; + packageRequires = [ emacs yaml-mode ]; + meta = { + homepage = "https://melpa.org/#/k8s-mode"; + license = lib.licenses.free; + }; + }) {}; kaesar = callPackage ({ cl-lib ? null , fetchFromGitHub , fetchurl @@ -54622,12 +56107,12 @@ melpaBuild { pname = "kaolin-themes"; ename = "kaolin-themes"; - version = "20180915.16"; + version = "20181231.1440"; src = fetchFromGitHub { owner = "ogdenwebb"; repo = "emacs-kaolin-themes"; - rev = "a6b22fd71c539f6c13c7e261ead25961a1f297b4"; - sha256 = "1x4cwakxs971pdj9s13g1nwwb16fkkc9wdm93igymk8wplfwl8m1"; + rev = "8c5667dc5622019d21c4e999e0c8e031c9593686"; + sha256 = "1wnk9q5pxncv6m41mhg8gh13y02vz8w8l0sbmf5rjvn8vl9ik7x7"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/043a4e3bd5301ef8f4df2cbda0b3f4111eb399e4/recipes/kaolin-themes"; @@ -54907,12 +56392,12 @@ melpaBuild { pname = "keycast"; ename = "keycast"; - version = "20180318.1321"; + version = "20181223.1908"; src = fetchFromGitHub { owner = "tarsius"; repo = "keycast"; - rev = "0d28c26b07a062ab58c01c6cbedc3e68bd4ec8a1"; - sha256 = "0wfy5wbr150y57mlzsxhb6bq9ycqj2jk5i6nhwl4q8b6xd3mh6p6"; + rev = "c855511785d6e843f584e6ffdc54b4ac3f7a62d0"; + sha256 = "1xk9flcj4f37lqiizq1lgq0x1v64yhfqldaa9sq64nzwib5cp9z1"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/aaaf62c586818f2493667ad6ec8877234a58da53/recipes/keycast"; @@ -55131,31 +56616,6 @@ license = lib.licenses.free; }; }) {}; - kfg = callPackage ({ f - , fetchFromGitHub - , fetchurl - , lib - , melpaBuild }: - melpaBuild { - pname = "kfg"; - version = "20140908.2238"; - src = fetchFromGitHub { - owner = "abingham"; - repo = "kfg"; - rev = "d2c9dd26618fb2f7bf1e7b6eae193b1cceba3c97"; - sha256 = "0xq835xzywks4b4kaz5i0pp759i23kibs5gkvvxasw0dncqh7j5c"; - }; - recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/9b212de583b43dd05d2acd15bb2245e735d0b14c/recipes/kfg"; - sha256 = "0vvvxl6a4ac27igwmsgzpf0whf9h2pjl9d89fd9fizad6gi8x1fs"; - name = "kfg"; - }; - packageRequires = [ f ]; - meta = { - homepage = "https://melpa.org/#/kfg"; - license = lib.licenses.free; - }; - }) {}; kibit-helper = callPackage ({ emacs , fetchFromGitHub , fetchurl @@ -55192,12 +56652,12 @@ melpaBuild { pname = "kill-or-bury-alive"; ename = "kill-or-bury-alive"; - version = "20171231.2218"; + version = "20181231.2304"; src = fetchFromGitHub { owner = "mrkkrp"; repo = "kill-or-bury-alive"; - rev = "d21aa7a12f1a76d47249db36eb9825242df9d512"; - sha256 = "1m790afdrns8afh7f690slq2gcya5bp7630fxwi8fqp5vil7lswg"; + rev = "e4a3c0f75c966826092b83e1fff5a3bc8ba55572"; + sha256 = "1zi471b2clkaz19qkn9p0qgrjvaxxxzdm7hqqicjfv5fmgpydk9v"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/25016ed09b6333bd79b989a8f6b7b03cd92e08b3/recipes/kill-or-bury-alive"; @@ -55454,12 +56914,12 @@ melpaBuild { pname = "kodi-remote"; ename = "kodi-remote"; - version = "20180820.15"; + version = "20181204.1326"; src = fetchFromGitHub { owner = "spiderbit"; repo = "kodi-remote.el"; - rev = "e2df2b6032255a6dc4292e95992e72f579262aaf"; - sha256 = "10s40dbyhhw44y0163wlrb0pb4qwnh9rkbfcqkvjk7x265b786nm"; + rev = "4b39b3088c909f05bb60d3b8eb763a43db8eed50"; + sha256 = "1mcmwcpxr4d3i9208kazn1fjyn8sy47hr9459j45bvicqz466dm9"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/08f06dd824e67250afafdecc25128ba794ca971f/recipes/kodi-remote"; @@ -55530,12 +56990,12 @@ melpaBuild { pname = "korean-holidays"; ename = "korean-holidays"; - version = "20170228.2045"; + version = "20190102.758"; src = fetchFromGitHub { owner = "tttuuu888"; repo = "korean-holidays"; - rev = "aed79c24e3f91d8f9508367758b18e5fa3a9eaf4"; - sha256 = "1kqbxnjmp7hxjcv8zhy9v8v6220l9vd7rgqicjln4yrjz82z4579"; + rev = "3f90ed86f46f8e5533f23baa40e2513ac497ca2b"; + sha256 = "0y88b4mr73qcshr87750jkjzz1mc2wwra6ca3y8spv4qc6cadwls"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/855ea20024b606314f8590129259747cac0bcc97/recipes/korean-holidays"; @@ -55582,12 +57042,12 @@ melpaBuild { pname = "kotlin-mode"; ename = "kotlin-mode"; - version = "20180219.853"; + version = "20181121.2022"; src = fetchFromGitHub { owner = "Emacs-Kotlin-Mode-Maintainers"; repo = "kotlin-mode"; - rev = "a2c2628d55c4e8b018ffe9f55ca38d89302a1bbc"; - sha256 = "12zng3rq134f0d49fr2rsf0jgmxl3qc7kkhziy7r27hx6ny9h8z2"; + rev = "002dd1497ce7fb7266729cb2c9284cc945988411"; + sha256 = "14gdg93cnkbmb2fwia8d8pqp81xcjk78slfqgw5hd9gc3js9pk8a"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/9f2560e913b215821221c96069a1385fe4e19c3e/recipes/kotlin-mode"; @@ -55740,12 +57200,12 @@ melpaBuild { pname = "kubernetes-tramp"; ename = "kubernetes-tramp"; - version = "20171026.922"; + version = "20181228.122"; src = fetchFromGitHub { owner = "gruggiero"; repo = "kubernetes-tramp"; - rev = "9fa84df71f6e88bc23a756cdf2df393a35aec945"; - sha256 = "1l1ibc97ahp3zwwypqfg3201qdxad4sdpdaq7nsfb87gh46vsbz8"; + rev = "8713571b66940f8f3f496b55baa23cdf1df7a869"; + sha256 = "05xbpdgxglqw7s2chay32s5kmglpd446dg3vh02d1462lh474snf"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/8ea4b15e64a9dc33b9977650488693cacadd1ab1/recipes/kubernetes-tramp"; @@ -55835,6 +57295,32 @@ license = lib.licenses.free; }; }) {}; + lab-themes = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "lab-themes"; + ename = "lab-themes"; + version = "20181015.1120"; + src = fetchFromGitHub { + owner = "MetroWind"; + repo = "lab-theme"; + rev = "8b717c1bf6c702e0bae2537df9ef2147d0d3a60a"; + sha256 = "1nr8x3r86bfg6bryl98pl5kwjs6pn42mxddvg3zs3zqa6aj5gszb"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/c5817cb4cb3a573f93bacfb8ef340bef0e1c5df4/recipes/lab-themes"; + sha256 = "10gvrrbqp6rxc9kwk8315pa1ldmja42vwr31xskjaq0l4fd28kx0"; + name = "recipe"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://melpa.org/#/lab-themes"; + license = lib.licenses.free; + }; + }) {}; labburn-theme = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -56101,12 +57587,12 @@ melpaBuild { pname = "latex-preview-pane"; ename = "latex-preview-pane"; - version = "20180222.951"; + version = "20181008.1122"; src = fetchFromGitHub { owner = "jsinglet"; repo = "latex-preview-pane"; - rev = "e7dbe0df3ca938128ab394cdf04f3e40eb5b139e"; - sha256 = "1i8mc2qdyyg04rm946vqmmw021c4v8aq7yvxsgl53mfbx9snm3dv"; + rev = "5297668a89996b50b2b62f99cba01cc544dbed2e"; + sha256 = "1m4f5p53275k8i9p0y105kkrp9nx1bwn6726my9s5dwnjhr5dnp2"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/bb3227f2e35d701915a8d3479d20581dcbe3a778/recipes/latex-preview-pane"; @@ -56389,6 +57875,33 @@ license = lib.licenses.free; }; }) {}; + ledger-import = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , ledger-mode + , lib + , melpaBuild }: + melpaBuild { + pname = "ledger-import"; + ename = "ledger-import"; + version = "20181211.2039"; + src = fetchFromGitHub { + owner = "DamienCassou"; + repo = "ledger-import"; + rev = "17fe337f79601b95fb1ff980da65b446da4bffa1"; + sha256 = "0xv6g9b2gw3ajzhljd4dpv10k2rj3w92nfmwkxwmwc8pr4rzyh27"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/4a1e2a9546b8b40f5f880197cb8166a6a715451f/recipes/ledger-import"; + sha256 = "1lcibmjk2d49vsa89wri7bbf695mjq2ikddz3nlzb6ljywsnqzm4"; + name = "recipe"; + }; + packageRequires = [ emacs ledger-mode ]; + meta = { + homepage = "https://melpa.org/#/ledger-import"; + license = lib.licenses.free; + }; + }) {}; ledger-mode = callPackage ({ emacs , fetchFromGitHub , fetchurl @@ -56397,12 +57910,12 @@ melpaBuild { pname = "ledger-mode"; ename = "ledger-mode"; - version = "20180825.1943"; + version = "20181230.1320"; src = fetchFromGitHub { owner = "ledger"; repo = "ledger-mode"; - rev = "b0e31e8788dac15c7eed855e5c92ad3d2b45c114"; - sha256 = "0163m5rwzvny769df5zq03cnv2ma39vxmsaf11hs24il02b11w99"; + rev = "3ec8506e3daafb32ebf0de7d177759ea63e83092"; + sha256 = "1w7793bkyqmx7cdjgb7cl5avjc7kfgkx9xsjr5k6wwbk8nv50xpz"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/1549048b6f57fbe9d1f7fcda74b78a7294327b7b/recipes/ledger-mode"; @@ -56528,12 +58041,12 @@ melpaBuild { pname = "lentic"; ename = "lentic"; - version = "20161202.1352"; + version = "20190102.1324"; src = fetchFromGitHub { owner = "phillord"; repo = "lentic"; - rev = "c744f3d3be20ce2a9f25890db2b4500438dfa547"; - sha256 = "1rvjmn70ncrsv6rzxhjiplibf0ypkg0qlg21ra53bhvy6vlizdsi"; + rev = "90fb12acdfe9d6ace2c52c7557c91a66ce1448b5"; + sha256 = "09llb5cwmj5a934z2fn39yh7h5p26hcjpyjbxjn00x0hhqnw31v2"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/cbb6f9cc3c1040b80fbf3f2df2ac2c3c8d18b6b1/recipes/lentic"; @@ -56656,12 +58169,12 @@ melpaBuild { pname = "leuven-theme"; ename = "leuven-theme"; - version = "20170919.252"; + version = "20181201.307"; src = fetchFromGitHub { owner = "fniessen"; repo = "emacs-leuven-theme"; - rev = "9d31a9d4ed763d6309e9d44985cd8b4a5a2fb500"; - sha256 = "0vr535a32cgkna0h1z8ac9cb4al3jb01bybn956rz51qdbzm2d1h"; + rev = "030658ab409cfe927514120ac13ffd716d41b04a"; + sha256 = "1h21byiz30g5l0fs234c71dk1nf8zz3qkmgqynga7wyv1am6r5x4"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/b09451f4eb2be820e94d3fecbf4ec7cecd2cabdc/recipes/leuven-theme"; @@ -56784,12 +58297,12 @@ melpaBuild { pname = "libgit"; ename = "libgit"; - version = "20180624.2359"; + version = "20181222.322"; src = fetchFromGitHub { owner = "magit"; repo = "libegit2"; - rev = "5e8dedb8275d394ce423a73ce39934302fa84f50"; - sha256 = "1nr9h8qkkjv1r5jzyydxqmq02kxays1yqxlqd7s9968gqacyqkyv"; + rev = "57a9f07725ff8215403dc453582294f490f40392"; + sha256 = "1fqy7bh0zgvbbgz43yghpfxz5xwi25n5vafr8nkfl4xr24klyck6"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/993a5abe3a9e8b160f0d68283eeca6af033abc79/recipes/libgit"; @@ -56835,12 +58348,12 @@ melpaBuild { pname = "libmpdel"; ename = "libmpdel"; - version = "20180606.453"; + version = "20181015.2353"; src = fetchFromGitHub { owner = "mpdel"; repo = "libmpdel"; - rev = "fcc719c2f23df4b5838eab76a40fef11055203de"; - sha256 = "0qw6rrb16bbhwg1gci4ymn2nshzf21lcf2nyphxbn4vcv400cw4k"; + rev = "76711d7c32fe617647098f01d4fee9b3c1eaab46"; + sha256 = "0n3fm7dxwf53lb60mwaf6z5vmmzax3q15a4lrk1ra4w4snlr0x39"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/bb25443752e18e47afc63d5497cc5052c388a607/recipes/libmpdel"; @@ -56913,12 +58426,12 @@ melpaBuild { pname = "line-reminder"; ename = "line-reminder"; - version = "20180602.2252"; + version = "20181215.2324"; src = fetchFromGitHub { owner = "jcs090218"; repo = "line-reminder"; - rev = "0db41599b7663c4c8257aaf733323e84e95ef042"; - sha256 = "09pzynms4m4m54fk2ci1wizkgrqkgh4mqyrj9wzpwpkdik7zvr7b"; + rev = "f7d4a1e542404f7c3574bffc3034f39869e587d9"; + sha256 = "06y2wizyxh2bh2ia2v42qpi6r1x82v7vnifdsimkyflg236082cf"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/456f760f7f7d4151e18f08b2f1154c5880423b21/recipes/line-reminder"; @@ -57014,12 +58527,12 @@ melpaBuild { pname = "linguistic"; ename = "linguistic"; - version = "20180902.631"; + version = "20181129.1316"; src = fetchFromGitHub { owner = "andcarnivorous"; repo = "linguistic"; - rev = "b1c586fa71f20a8de5e6062592862641b7970c04"; - sha256 = "17gl4yrr7fzcmgkidyn4lvs88w715z4zn8v04qw3ix7c0qvbsq50"; + rev = "23e47e98cdb09ee61883669b6d8a11bf6449862c"; + sha256 = "1bz2w43v1w5xlkbmhmb423nisyhja6qkgwhl68r5vjxqj1gxn2xj"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/aedc03a846b873edf2426c422abb8c75732158f8/recipes/linguistic"; @@ -57232,12 +58745,12 @@ melpaBuild { pname = "lisp-extra-font-lock"; ename = "lisp-extra-font-lock"; - version = "20160930.1227"; + version = "20181008.1221"; src = fetchFromGitHub { owner = "Lindydancer"; repo = "lisp-extra-font-lock"; - rev = "092f5a6e75ddfc8051b252f10e182723a17980e4"; - sha256 = "0cdjgnh2hzwpim4vl2siykfsfni1z5h45vn5dcm52yx8p10s7mzd"; + rev = "4605eccbe1a7fcbd3cacf5b71249435413b4db4f"; + sha256 = "152vcp3mdlv33jf5va4rinl1d0k960gnfhbrqqrafazgx9j3ya8w"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/13e01d4faf9ecb4dde8b6eb4acdb0e48e3e5b6ea/recipes/lisp-extra-font-lock"; @@ -57288,12 +58801,12 @@ melpaBuild { pname = "lispy"; ename = "lispy"; - version = "20180914.1138"; + version = "20181210.951"; src = fetchFromGitHub { owner = "abo-abo"; repo = "lispy"; - rev = "bc025d9710beaa5bd0341cbb285e8352470db943"; - sha256 = "1nk4pwg772lhp5z6sy5lgcd7qm4p5kp6lmff1pya7pg6xcqnwvdd"; + rev = "d1f3a66a5f15c33418b8115162c94be94a2b47a3"; + sha256 = "07mm9ixj2ghsyh61zxhxgwjkg95l0hmgx0g5xapy31jdvmqq1h4n"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/e23c062ff32d7aeae486c01e29c56a74727dcf1d/recipes/lispy"; @@ -57342,12 +58855,12 @@ melpaBuild { pname = "lispyville"; ename = "lispyville"; - version = "20180704.458"; + version = "20181217.647"; src = fetchFromGitHub { owner = "noctuid"; repo = "lispyville"; - rev = "aea9df65cc0916789e20c0eb7575624a19388bee"; - sha256 = "05maf5aacjfiap7fyl7mnx1chbs6k30cl1k5af6ar45lhvg7srva"; + rev = "d28b937f0cabd8ce61e2020fe9a733ca80d82c74"; + sha256 = "0f6srwj1qqkfkbmp5n5pjvi6gm7b7xav05p5hrs2i83rjrakzzqx"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/b5d96d3603dc328467fcce29d3ac1b0a02833d51/recipes/lispyville"; @@ -57413,7 +58926,7 @@ license = lib.licenses.free; }; }) {}; - list-unicode-display = callPackage ({ cl-lib ? null + list-unicode-display = callPackage ({ emacs , fetchFromGitHub , fetchurl , lib @@ -57421,19 +58934,19 @@ melpaBuild { pname = "list-unicode-display"; ename = "list-unicode-display"; - version = "20150219.101"; + version = "20181121.1516"; src = fetchFromGitHub { owner = "purcell"; repo = "list-unicode-display"; - rev = "59770cf3572bd36c3e9ba044846dc420c0dca09b"; - sha256 = "05nn4db8s8h4mn3fxhwsa111ayvlq1raf6bifh7jciyw7a2c3aww"; + rev = "62fbf84dbf0b9a4cbbbeede69d5392fe2774391b"; + sha256 = "0397inzyqssy8j1yz1j5mgjnwyx559f82hy4w8kz1hv3mhih8lp0"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/0c8e2a974a56665b97d7622b0428994edadc88a0/recipes/list-unicode-display"; sha256 = "01x9i5k5vhjscmkx0l6r27w1cdp9n6xk1pdjf98z3y88dnsmyfha"; name = "recipe"; }; - packageRequires = [ cl-lib ]; + packageRequires = [ emacs ]; meta = { homepage = "https://melpa.org/#/list-unicode-display"; license = lib.licenses.free; @@ -57594,6 +59107,33 @@ license = lib.licenses.free; }; }) {}; + literate-elisp = callPackage ({ cl-lib ? null + , emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "literate-elisp"; + ename = "literate-elisp"; + version = "20190102.2349"; + src = fetchFromGitHub { + owner = "jingtaozf"; + repo = "literate-elisp"; + rev = "69af3f1fdaabf38178603deb32e233a2190e24da"; + sha256 = "0dvlmivcm5cx8396gcnx6hxijvixpdyvd3zk8p0ly8p5g99mrpzx"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/fd4c1c4da2a5571babda9a29a56b8972ad0687c0/recipes/literate-elisp"; + sha256 = "10vc3m54jp2wqjrmn9plq6lb5zfiy6jy0acpp09q3z325z0sql9j"; + name = "recipe"; + }; + packageRequires = [ cl-lib emacs ]; + meta = { + homepage = "https://melpa.org/#/literate-elisp"; + license = lib.licenses.free; + }; + }) {}; literate-starter-kit = callPackage ({ emacs , fetchFromGitHub , fetchurl @@ -57656,12 +59196,12 @@ melpaBuild { pname = "live-py-mode"; ename = "live-py-mode"; - version = "20180811.1120"; + version = "20181213.2159"; src = fetchFromGitHub { owner = "donkirkby"; repo = "live-py-plugin"; - rev = "efd9bba8a40448cccfcb745a84d479cb5275122b"; - sha256 = "0va4cirxwv0k9q74ac313pvxvnkvqpp6zqxwscpx4v6hp1gw7wvw"; + rev = "c60962245d412cfeab2cc82c850e5432fa28f690"; + sha256 = "1jwlx5p96adgyibzbnpk2cvh9g7q3pkmjwjmk9lz8jargn8ga3ak"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/c7615237e80b46b5c50cb51a3ed5b07d92566fb7/recipes/live-py-mode"; @@ -57786,11 +59326,11 @@ melpaBuild { pname = "lms"; ename = "lms"; - version = "20170804.922"; + version = "20181216.1446"; src = fetchhg { url = "https://bitbucket.com/inigoserna/lms.el"; - rev = "f07ac3678e27"; - sha256 = "15l3nfrddblfzqxgvf0dmmsk4h5l80l6r2kgxcfk8s01msjka3sl"; + rev = "38302acf2aa3"; + sha256 = "0da14qr7lgkfxksnhf37ss5w6wxkw9qv5hvxk7z76jyzwqdc6w4x"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/b8be8497494b8543a8257c9ea92444baf7674951/recipes/lms"; @@ -57803,6 +59343,33 @@ license = lib.licenses.free; }; }) {}; + load-bash-alias = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild + , seq }: + melpaBuild { + pname = "load-bash-alias"; + ename = "load-bash-alias"; + version = "20181220.955"; + src = fetchFromGitHub { + owner = "daviderestivo"; + repo = "load-bash-alias"; + rev = "50df445bace7896318f10c58d26b673635704215"; + sha256 = "0m84ylx4j4bp898xc43yrkrk3csr2ppv3c51nirx5gdc5hnhykxj"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/063fa99446bb54fadbbad1af90427462afe8bd8d/recipes/load-bash-alias"; + sha256 = "1maq7wykhn3cvxl8fiws3d2d63zlkzgpd3d9jz3rhyi9rcjcjzak"; + name = "recipe"; + }; + packageRequires = [ emacs seq ]; + meta = { + homepage = "https://melpa.org/#/load-bash-alias"; + license = lib.licenses.free; + }; + }) {}; load-env-vars = callPackage ({ emacs , fetchFromGitHub , fetchurl @@ -57912,12 +59479,12 @@ melpaBuild { pname = "loccur"; ename = "loccur"; - version = "20161227.251"; + version = "20181203.1238"; src = fetchFromGitHub { owner = "fourier"; repo = "loccur"; - rev = "650d91dda0d313c8f445a0803c07809d857dee0f"; - sha256 = "09xc2207dhlbw0x9pks2gay09adzijzcabdwg55iszrs7pxjjfa0"; + rev = "194d70e6be82c4622b7460ca46ced38109ac0507"; + sha256 = "136ixa0w94imwacdjispcn81v5i7pb0qqzy6bzgjw2cr9z9539bx"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/72550b043794331e85bc4b124f6d8ab70d969eff/recipes/loccur"; @@ -58094,8 +59661,8 @@ version = "20180708.322"; src = fetchhg { url = "https://bitbucket.com/ellisvelo/lognav-mode"; - rev = "73aba5c1b9c6"; - sha256 = "0bshlkxzb1wbvm5fpsmqd51z4y1nfqkh802ddd8pfs5k22lv21sk"; + rev = "d6d39829ff0b"; + sha256 = "0hlc5gp5fdswkf8h2nz6ayndq8r7599skz846q19q29p6yj5wg0s"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/ad86b93f4982a0c6291c771e12c8f42ace3b88f9/recipes/lognav-mode"; @@ -58167,12 +59734,12 @@ melpaBuild { pname = "logview"; ename = "logview"; - version = "20180913.1037"; + version = "20181027.1057"; src = fetchFromGitHub { owner = "doublep"; repo = "logview"; - rev = "6a45a358635dccc5eb970722f14444415e40e832"; - sha256 = "0fd79ig5fha207959qr9hib0b4l7wlg7sis03zbhx944xqr8mrv9"; + rev = "bd662d467dbd7c93cfe1e3058e4f11c49314fd6a"; + sha256 = "03s4q5xdz84cjn4qkfhsc3l9y3v5avrl2i5dby4bgsg2zj7n7f73"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/1df3c11ed7738f32e6ae457647e62847701c8b19/recipes/logview"; @@ -58373,12 +59940,12 @@ melpaBuild { pname = "lsp-css"; ename = "lsp-css"; - version = "20180627.1251"; + version = "20181218.2104"; src = fetchFromGitHub { owner = "emacs-lsp"; repo = "lsp-css"; - rev = "1395b48209c5744e19f688ebb5fe8201e5a006df"; - sha256 = "1h043gmrly820gnx1ccavms1f6xkc2zbdhfm5lbaix45i61z62jm"; + rev = "bb5ab8d63087b41ae66d9cfef41f6ee2cd088669"; + sha256 = "1v3rnsicjl1xmjsbbcv3yk51id2d3yvkpxzcisqgimlz28wrnla3"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/a9d16c625893fce39d1253b101b826ba96e1f26e/recipes/lsp-css"; @@ -58391,6 +59958,59 @@ license = lib.licenses.free; }; }) {}; + lsp-dart = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , lsp-mode + , melpaBuild }: + melpaBuild { + pname = "lsp-dart"; + ename = "lsp-dart"; + version = "20181021.1008"; + src = fetchFromGitHub { + owner = "twlz0ne"; + repo = "lsp-dart"; + rev = "c52d825aeebcad250890fe8ded1147df8f9499cf"; + sha256 = "0c3ii7np45bz6wlqzwn1bacdwa8r0880qygjb71ypf5ilq1gk40y"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/da22fe98eb57e143077c4a7c4dbeba70120d527a/recipes/lsp-dart"; + sha256 = "0zv6spd1h2ijkix38hxvvblg37ybm65568gg8fv9qr8giw0bjfy2"; + name = "recipe"; + }; + packageRequires = [ emacs lsp-mode ]; + meta = { + homepage = "https://melpa.org/#/lsp-dart"; + license = lib.licenses.free; + }; + }) {}; + lsp-fortran = callPackage ({ fetchFromGitHub + , fetchurl + , lib + , lsp-mode + , melpaBuild }: + melpaBuild { + pname = "lsp-fortran"; + ename = "lsp-fortran"; + version = "20180904.936"; + src = fetchFromGitHub { + owner = "MagB93"; + repo = "lsp-fortran"; + rev = "0c25c13a224dc8dd07294647efd355248e1b6c4e"; + sha256 = "0cbn28fw9q5qvw3h86195dxmcbsll9nc20216az0x808b2p8p24g"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/676b780c19f84b1967350c54a793fb33a18130d5/recipes/lsp-fortran"; + sha256 = "0qlfdiz8rxjmc2v2qxkjihb373364a0b2b4ccjljhv9xz4aia3bj"; + name = "recipe"; + }; + packageRequires = [ lsp-mode ]; + meta = { + homepage = "https://melpa.org/#/lsp-fortran"; + license = lib.licenses.free; + }; + }) {}; lsp-go = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -58425,12 +60045,12 @@ melpaBuild { pname = "lsp-hack"; ename = "lsp-hack"; - version = "20180817.1900"; + version = "20181114.947"; src = fetchFromGitHub { owner = "jra3"; repo = "lsp-hack"; - rev = "a7fe82cc598264be3a0a378426a1da2c41ffc140"; - sha256 = "0kq8p4pdrlggi16hbzkzvi218fps4q955papj9w9vxm55bpfqsiq"; + rev = "2a9025a331aa08ebc4ad3524fe69eaa6f624ceae"; + sha256 = "01vidax1ihs87c0zb4kvadbs12agdgjjj01dh48yz769gcn0p0qc"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/a70d8442c653554d28dc87425913424ab42ab5c8/recipes/lsp-hack"; @@ -58452,12 +60072,12 @@ melpaBuild { pname = "lsp-haskell"; ename = "lsp-haskell"; - version = "20180828.138"; + version = "20181223.326"; src = fetchFromGitHub { owner = "emacs-lsp"; repo = "lsp-haskell"; - rev = "11871b327ddee15da8e80bd3e678d6cee0e95348"; - sha256 = "08ac95kw7j9fyd7g972ip10g8s24hkn6zac26xd1154p6fca0hxq"; + rev = "533970d5552c4820aa45901ba89565f3419d991c"; + sha256 = "0xah24q8c62kk0m5ivhx51a3h46vlc626qsh8rlysdsdv59121sa"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/1a7b69312e688211089a23b75910c05efb507e35/recipes/lsp-haskell"; @@ -58523,9 +60143,13 @@ license = lib.licenses.free; }; }) {}; - lsp-java = callPackage ({ emacs + lsp-java = callPackage ({ dash + , dash-functional + , emacs + , f , fetchFromGitHub , fetchurl + , ht , lib , lsp-mode , markdown-mode @@ -58533,19 +60157,27 @@ melpaBuild { pname = "lsp-java"; ename = "lsp-java"; - version = "20180905.2337"; + version = "20181221.816"; src = fetchFromGitHub { owner = "emacs-lsp"; repo = "lsp-java"; - rev = "17f80c9935a0004e59c2e706de4b91eba45344c8"; - sha256 = "11ki7mb2pivvmqhn3ya67ph7vz7l3pfa0cqmv6jny12l6iq6awcb"; + rev = "34cebe5e9a1ca400b44fe872986f2d52cca7027e"; + sha256 = "0zysjw4hyphjgxx198r07yk823gpzmipl04m9favf0y4b3pbb7wk"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/1a7b69312e688211089a23b75910c05efb507e35/recipes/lsp-java"; - sha256 = "1y5wxggkr7v4a2a3h2n01911gd1xv047dikbvyy1gappf05fdngj"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/c03cb07862c5f35487fb4fb3cc44623774724717/recipes/lsp-java"; + sha256 = "0rrl9mh25w1avvyww840d3yh8nw0shirspxl2nxqwwdaymbkg2wr"; name = "recipe"; }; - packageRequires = [ emacs lsp-mode markdown-mode ]; + packageRequires = [ + dash + dash-functional + emacs + f + ht + lsp-mode + markdown-mode + ]; meta = { homepage = "https://melpa.org/#/lsp-java"; license = lib.licenses.free; @@ -58561,12 +60193,12 @@ melpaBuild { pname = "lsp-javacomp"; ename = "lsp-javacomp"; - version = "20180904.2251"; + version = "20181210.1804"; src = fetchFromGitHub { owner = "tigersoldier"; repo = "lsp-javacomp"; - rev = "6a8779417466a67475f4d71a234ab6ae02e404b2"; - sha256 = "1rq62zq89l705a7nfii86rqhh25xx058s5jzvq20ig4pv7ylip87"; + rev = "0cdf9c2e4e66aa77cfb23ed9d12c296cfe7db872"; + sha256 = "0s1p5j62x0vjvh73fqym1zifda95ij6j9jddpb12rgalc6lfw9vw"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/6b8a1c034554579a7e271409fa72020cfe441f68/recipes/lsp-javacomp"; @@ -58588,12 +60220,12 @@ melpaBuild { pname = "lsp-javascript-flow"; ename = "lsp-javascript-flow"; - version = "20180612.2208"; + version = "20181218.2042"; src = fetchFromGitHub { owner = "emacs-lsp"; repo = "lsp-javascript"; - rev = "b9873765270ac5c76013efe6fae0beb60f55f85c"; - sha256 = "1cpwivz6cy9rs5s3723j0y3wf6bhr4avazdyl1f2gv3xiwr0gbns"; + rev = "392f162ce675a56c60997e8b0b6eba384ccb456a"; + sha256 = "0cj9svzd10wxb83lan83k8r6qvcafnwcb7z70cpksywgs1a2xwml"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/f9a28de5ce89080ba224e07734b3ba0b0992acd6/recipes/lsp-javascript-flow"; @@ -58616,12 +60248,12 @@ melpaBuild { pname = "lsp-javascript-typescript"; ename = "lsp-javascript-typescript"; - version = "20180614.1311"; + version = "20181218.2042"; src = fetchFromGitHub { owner = "emacs-lsp"; repo = "lsp-javascript"; - rev = "7e7c5f66b02321f402712841064347cb872c41e4"; - sha256 = "1ilhnbdvfjanv0cjwk289dq1whpf69qzw0hh9ak37gbi4pqvsbdv"; + rev = "392f162ce675a56c60997e8b0b6eba384ccb456a"; + sha256 = "0cj9svzd10wxb83lan83k8r6qvcafnwcb7z70cpksywgs1a2xwml"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/97b6ddeb34297aacfefdd4c227ad520b70a12bc6/recipes/lsp-javascript-typescript"; @@ -58634,27 +60266,32 @@ license = lib.licenses.free; }; }) {}; - lsp-mode = callPackage ({ emacs + lsp-mode = callPackage ({ dash + , dash-functional + , emacs + , f , fetchFromGitHub , fetchurl + , ht , lib - , melpaBuild }: + , melpaBuild + , spinner }: melpaBuild { pname = "lsp-mode"; ename = "lsp-mode"; - version = "20180911.1129"; + version = "20190102.2247"; src = fetchFromGitHub { owner = "emacs-lsp"; repo = "lsp-mode"; - rev = "14eac3f677a52063e95bb93d46a968cd967ea010"; - sha256 = "0inbav1zybyp15lj98fhl6fm9lf8mp49q2bhdcslykmpb2cgdcff"; + rev = "2c1755d76387bed7c96a9c827753b6dcd9cf1a2c"; + sha256 = "10fk3mfyrvg706547nwhxrvimqsdpsmxipigmk9n2n8cmjr5k52l"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/1a7b69312e688211089a23b75910c05efb507e35/recipes/lsp-mode"; sha256 = "0cklwllqxzsvs4wvvvsc1pqpmp9w99m8wimpby6v6wlijfg6y1m9"; name = "recipe"; }; - packageRequires = [ emacs ]; + packageRequires = [ dash dash-functional emacs f ht spinner ]; meta = { homepage = "https://melpa.org/#/lsp-mode"; license = lib.licenses.free; @@ -58748,12 +60385,12 @@ melpaBuild { pname = "lsp-python"; ename = "lsp-python"; - version = "20180816.614"; + version = "20181107.2354"; src = fetchFromGitHub { owner = "emacs-lsp"; repo = "lsp-python"; - rev = "b97688aa82b41828d3ffb5345c809d1fee88839d"; - sha256 = "1ic14lvpyga0y66fayvciwb60mrcx7nnppsxl2n9j0pvk6pd5907"; + rev = "9b67b63c4c8c53c77eda8b8081b8d458e655ba55"; + sha256 = "15dbjvmcc38rpz6s9vpmgvjppjiyh6qr09zjb66as1sjnhxni11g"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/1a7b69312e688211089a23b75910c05efb507e35/recipes/lsp-python"; @@ -58775,12 +60412,12 @@ melpaBuild { pname = "lsp-ruby"; ename = "lsp-ruby"; - version = "20180910.1221"; + version = "20181218.2107"; src = fetchFromGitHub { owner = "emacs-lsp"; repo = "lsp-ruby"; - rev = "8016a714403587f95a9bf6516c2a91a0a880fa2f"; - sha256 = "00jm2fvvgidxd4vsajhaqw8s9r61smxjfzdshhpqnq1zkfxa7yjc"; + rev = "2d3e4e78c69f538bf00f66565278ea4aa686c863"; + sha256 = "0q0d3zsv49i93czph8k23z0dlcwrff5fanaq7x66ynwfg8cws0aw"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/41422dbdee6ecc71a9e4b1520c705a6fd07c9c94/recipes/lsp-ruby"; @@ -58823,6 +60460,32 @@ license = lib.licenses.free; }; }) {}; + lsp-sh = callPackage ({ fetchFromGitHub + , fetchurl + , lib + , lsp-mode + , melpaBuild }: + melpaBuild { + pname = "lsp-sh"; + ename = "lsp-sh"; + version = "20180912.1858"; + src = fetchFromGitHub { + owner = "emacs-lsp"; + repo = "lsp-sh"; + rev = "d9e94837ccbb54eafa381833d2a9a0089e01096b"; + sha256 = "11wq5cqg9b198gw0rhzv4sc12zp0gb1mvizhm42nsvcb6a1pfnjr"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/474cecd0b488da2585ff36d01ae453310ede478b/recipes/lsp-sh"; + sha256 = "13wwwh9mak1gbdcasjjwlngh4dya08cm5wqqhvs4a8caiika8byj"; + name = "recipe"; + }; + packageRequires = [ lsp-mode ]; + meta = { + homepage = "https://melpa.org/#/lsp-sh"; + license = lib.licenses.free; + }; + }) {}; lsp-typescript = callPackage ({ emacs , fetchFromGitHub , fetchurl @@ -58833,12 +60496,12 @@ melpaBuild { pname = "lsp-typescript"; ename = "lsp-typescript"; - version = "20180905.2224"; + version = "20181218.2042"; src = fetchFromGitHub { owner = "emacs-lsp"; repo = "lsp-javascript"; - rev = "ab62826962887e82f0bc968817be4fc89a6953e4"; - sha256 = "0fwmclcgl0lv3j2nqw6njxmi4sbgyp508v66d0ymjl419mhlqdrg"; + rev = "392f162ce675a56c60997e8b0b6eba384ccb456a"; + sha256 = "0cj9svzd10wxb83lan83k8r6qvcafnwcb7z70cpksywgs1a2xwml"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/e7903d6b51132c0d8ad209f13ffe915c1bc5a76d/recipes/lsp-typescript"; @@ -58856,7 +60519,6 @@ , emacs , fetchFromGitHub , fetchurl - , flycheck , lib , lsp-mode , markdown-mode @@ -58864,26 +60526,19 @@ melpaBuild { pname = "lsp-ui"; ename = "lsp-ui"; - version = "20180914.2117"; + version = "20181225.2223"; src = fetchFromGitHub { owner = "emacs-lsp"; repo = "lsp-ui"; - rev = "35caa39d8d4776472f4f54ab54c94d2de2532d06"; - sha256 = "14qgd6z9sharw5x27jv2avfq6mjnvb5lqasiib5ck07b8x9czav8"; + rev = "efdd4a883341bbd4d7ad216a2a50ba59c5a90f33"; + sha256 = "1ij0804srxwxph8m5y9y3fk9d264l912895ji65k6189fr82d4n7"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/1e4fa7cdf71f49f6998b26d81de9522248bc58e6/recipes/lsp-ui"; sha256 = "00y5i44yd79z0v00a9lvgixb4mrx9nq5vcgmib70h41ffffaq42j"; name = "recipe"; }; - packageRequires = [ - dash - dash-functional - emacs - flycheck - lsp-mode - markdown-mode - ]; + packageRequires = [ dash dash-functional emacs lsp-mode markdown-mode ]; meta = { homepage = "https://melpa.org/#/lsp-ui"; license = lib.licenses.free; @@ -58898,12 +60553,12 @@ melpaBuild { pname = "lsp-vue"; ename = "lsp-vue"; - version = "20180628.15"; + version = "20181030.436"; src = fetchFromGitHub { owner = "emacs-lsp"; repo = "lsp-vue"; - rev = "3c3f364f70d300101a37a239a6bf8c382176f238"; - sha256 = "0m5bi99y02jvjv25jpm5sj50x4k75md9p6qqq5bzsdj3b07d2gxx"; + rev = "85567342323943b37bb4e90376d3fae740be4aeb"; + sha256 = "1s8bbrp2gvhjqzmw24sq58i1y3fzy93w4896rlb8ajqzjdl9j6n4"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/0d9eb7699630fd7e11f38b4ba278a497633c9733/recipes/lsp-vue"; @@ -59026,12 +60681,12 @@ melpaBuild { pname = "lv"; ename = "lv"; - version = "20160912.756"; + version = "20181110.940"; src = fetchFromGitHub { owner = "abo-abo"; repo = "hydra"; - rev = "a07b92a8755dfb064701210b634e2dc4839552ac"; - sha256 = "11k0ifmr90vdinibhyqqyqrmpxbn9c5pjpzhr4p66wv6249s540w"; + rev = "5c5b9ca3262594c92f8f73c98db5ed0f1efd0319"; + sha256 = "0dvh4sg1s76jy41vsy6dh3a4b8vr5msldnyssmqzdqwrsw64hl6r"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/5114349617617673d5055fe28cb8f8c86cf41f83/recipes/lv"; @@ -59096,6 +60751,33 @@ license = lib.licenses.free; }; }) {}; + lxd-tramp = callPackage ({ cl-lib ? null + , emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "lxd-tramp"; + ename = "lxd-tramp"; + version = "20181022.1707"; + src = fetchFromGitHub { + owner = "onixie"; + repo = "lxd-tramp"; + rev = "f335c76245f62b02cf67a9376eca6f3863c8a75a"; + sha256 = "0byhafxcc4qw08b16fd00nkyqz1jmq7js0l5q4lda4xdpfgl1a65"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/ef7778f5961eaaa356e5e383ef2323c5713e5bf2/recipes/lxd-tramp"; + sha256 = "0i611z4pksrf4zf0h8wnradqbcad5f43dq8bg3dsik0jdcjlvg5p"; + name = "recipe"; + }; + packageRequires = [ cl-lib emacs ]; + meta = { + homepage = "https://melpa.org/#/lxd-tramp"; + license = lib.licenses.free; + }; + }) {}; lyrics = callPackage ({ emacs , fetchFromGitHub , fetchurl @@ -59367,12 +61049,12 @@ melpaBuild { pname = "magik-mode"; ename = "magik-mode"; - version = "20180910.1128"; + version = "20181005.141"; src = fetchFromGitHub { owner = "roadrunner1776"; repo = "magik"; - rev = "bd9739e9d7d5bb2e939e4e9ea7f19326bc0a9aaf"; - sha256 = "1dvh4swnnzjxzswj1inmygaykaivmcnslacpmjvs9warhyr266jk"; + rev = "d87b9a5be8fc56e48241e02bab4b4a2d347b999d"; + sha256 = "08l2mkgabd885sq8s4vg9xfiszwnh5b20kwds9glymkfi7rh0wvp"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/291cce8e8e3475348b446ba38833eb1e37d4db65/recipes/magik-mode"; @@ -59390,7 +61072,6 @@ , emacs , fetchFromGitHub , fetchurl - , ghub , git-commit , lib , magit-popup @@ -59399,12 +61080,12 @@ melpaBuild { pname = "magit"; ename = "magit"; - version = "20180915.659"; + version = "20190101.1707"; src = fetchFromGitHub { owner = "magit"; repo = "magit"; - rev = "8adbe43554d5a36acf1de6a23f4395bfa82a85e2"; - sha256 = "1fzil54zra5m12wdg5fxxfn2y8wphc4lvyzm0kmxpa2m9hfaw7p3"; + rev = "cc435005b07bd7ba17962ffa4e210b441e8a1a52"; + sha256 = "1aiqqdc8j81d16bvj978a6z50rfhl18j0grad7r9wnwd6bda64gz"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/ac8feccfa0f4eb5bda2ef561a6be66ba145c00e0/recipes/magit"; @@ -59415,7 +61096,6 @@ async dash emacs - ghub git-commit magit-popup with-editor @@ -59434,12 +61114,12 @@ melpaBuild { pname = "magit-annex"; ename = "magit-annex"; - version = "20180715.1812"; + version = "20181119.1826"; src = fetchFromGitHub { owner = "magit"; repo = "magit-annex"; - rev = "e36674fa052431342942ce42c3e396318a5bb5b0"; - sha256 = "085qwg8f68j6lcdfm0ri6a8fjvb2z7qwkvaflcff7rr7hjbmnb29"; + rev = "21cb2927d672cc6bf631d8373a361b1766ccf004"; + sha256 = "07r0d2i1hws63wfv1jys63r3lmrl4ywwi76gi7srwhzhqdr1af0n"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/cec5af50ae7634cc566adfbfdf0f95c3e2951c0c/recipes/magit-annex"; @@ -59598,12 +61278,12 @@ melpaBuild { pname = "magit-imerge"; ename = "magit-imerge"; - version = "20180609.858"; + version = "20181119.1855"; src = fetchFromGitHub { owner = "magit"; repo = "magit-imerge"; - rev = "6f64cd84f1cfed9ee976a9059494128c9b52bdf4"; - sha256 = "0adgkqp4s70qph73xrgxr56c2vrfmmqn0c4llzvxp0yp7linnr8d"; + rev = "5b45efa65317886640c339d1c71d2b9e00e98b77"; + sha256 = "02597aq00fq7b9284kq7s55ddrjb6xhh1l280gq3czi75658d3db"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/e78a5c27eedfc9b1d79e37e8d333c5d253f31a3c/recipes/magit-imerge"; @@ -59628,14 +61308,14 @@ ename = "magit-lfs"; version = "20170312.1524"; src = fetchFromGitHub { - owner = "ailrun"; + owner = "Ailrun"; repo = "magit-lfs"; rev = "9897c59109ce34755cbd35eff689680351c45fba"; sha256 = "05cy0pw5lcyzcqxycvwbw39l88405lc92x0w1lvhlbwwylpbhw2s"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/1a92f0963d8df3e299a999948828173dac38a612/recipes/magit-lfs"; - sha256 = "1im9skj74jdi7jh0fnyyk8a4g4sk48clgn107ggf69lnfpxh8xxa"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/35763febad20f29320d459394f810668db6c3353/recipes/magit-lfs"; + sha256 = "1xc32f2k3dwpqncnrr3xyr2963ywa0006z3c01nypxgs1xkfsbdx"; name = "recipe"; }; packageRequires = [ dash emacs magit ]; @@ -59710,12 +61390,12 @@ melpaBuild { pname = "magit-popup"; ename = "magit-popup"; - version = "20180726.1337"; + version = "20181204.1231"; src = fetchFromGitHub { owner = "magit"; repo = "magit-popup"; - rev = "6e07f745a18af514c2885eeabe9b2b2a5216e53c"; - sha256 = "08952nzn0cb6gxscqyiljk4fq2zxjvr3ism0lvgw0gs9hl5phiwx"; + rev = "8eaa0becc2370484a432a8a19f40ce5e8d0f1642"; + sha256 = "13riknyqr6vxqll80sfhvz165flvdz367rbd0pr5slb01bnfsi2i"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/0263ca6aea7bf6eae26a637454affbda6bd106df/recipes/magit-popup"; @@ -59728,6 +61408,33 @@ license = lib.licenses.free; }; }) {}; + magit-rbr = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , magit + , melpaBuild }: + melpaBuild { + pname = "magit-rbr"; + ename = "magit-rbr"; + version = "20181009.1316"; + src = fetchFromGitHub { + owner = "fanatoly"; + repo = "magit-rbr"; + rev = "029203b3e48537205052a058e964f058cd802c3c"; + sha256 = "1z48m0al8bb4ppic483jvika9q47c67g7fazk25431sr5rv9h4d2"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/10427817a1fc2fa8aaf11897719cbb851d9e4b15/recipes/magit-rbr"; + sha256 = "086vb7xrgyrazc3a7bpyhy219szvrvl59l8wlqakimx0mav7qipr"; + name = "recipe"; + }; + packageRequires = [ emacs magit ]; + meta = { + homepage = "https://melpa.org/#/magit-rbr"; + license = lib.licenses.free; + }; + }) {}; magit-stgit = callPackage ({ emacs , fetchFromGitHub , fetchurl @@ -59791,12 +61498,12 @@ melpaBuild { pname = "magit-tbdiff"; ename = "magit-tbdiff"; - version = "20180912.1946"; + version = "20181119.1722"; src = fetchFromGitHub { owner = "magit"; repo = "magit-tbdiff"; - rev = "bbc4d070b3e89511595dc182565004101a1e65e2"; - sha256 = "16jhk7m3kgdh7hdij9bpli5q4qmdzpy4bcp1xvlpycv6b6k270h6"; + rev = "4273bfab1d2b620d68d890fbaaa78c56cf210059"; + sha256 = "0d1cn0nshxnvgjvl9j7wsai75pvsxmrmkdj57xdpyggwxgcpl1m4"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/ad97eea866c8732e3adc17551d37a6d1ae511e6c/recipes/magit-tbdiff"; @@ -59824,12 +61531,12 @@ melpaBuild { pname = "magit-todos"; ename = "magit-todos"; - version = "20180909.2328"; + version = "20181219.2058"; src = fetchFromGitHub { owner = "alphapapa"; repo = "magit-todos"; - rev = "ced8717d61ba66b5310a62e61fb8cf718ea2661c"; - sha256 = "1bbsi8xavs7hbs88k8qbb98vjwl8dnsmw60pfxxca5hw69rkaij8"; + rev = "4383f95ea434b41131313eadffe77c2fe8369c5d"; + sha256 = "1i0xbx81s7hw7chspr22mv1jj1qm04dyk8inv2rypwjnp9kgwhya"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/b4544ab55d2c8b8c3b7eb739b9fb90ebb246d68b/recipes/magit-todos"; @@ -59882,12 +61589,12 @@ melpaBuild { pname = "magithub"; ename = "magithub"; - version = "20180908.739"; + version = "20190101.1549"; src = fetchFromGitHub { owner = "vermiculus"; repo = "magithub"; - rev = "9be91acd1ecc06cfcfab7912821a08cbf1b1fff2"; - sha256 = "11w856cnj52zq2640sk5pk5j4n90c4ldpl62f342mjkjvisfzxrd"; + rev = "d23713941690d25d47560e480d344c9e1123b3ae"; + sha256 = "0pkqrzy1762inbcgsfwq6i30c72qr98la2n1bhbyb2z7av72a7cb"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/e555b46f5de7591aa8e10a7cf67421e26a676db8/recipes/magithub"; @@ -59910,12 +61617,12 @@ melpaBuild { pname = "magma-mode"; ename = "magma-mode"; - version = "20180413.727"; + version = "20181205.908"; src = fetchFromGitHub { owner = "ThibautVerron"; repo = "magma-mode"; - rev = "db5bff33611027418ba387c7e223d5de82dd9e94"; - sha256 = "0k973dwk2frcdjdpxv26v584ldyhprny001l48wwwiyc2mf08bzk"; + rev = "bded7fd29722dcfd451422530877067915fd7c80"; + sha256 = "0x858v67kjpqbijlg2fbs4qj0g92b3d6f3rjphzcm8776shwp6ry"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/59764a0aab7c3f32b5a872a3d10a7e144f273a7e/recipes/magma-mode"; @@ -60283,12 +61990,12 @@ melpaBuild { pname = "mandm-theme"; ename = "mandm-theme"; - version = "20170925.321"; + version = "20180915.1240"; src = fetchFromGitHub { owner = "choppsv1"; repo = "emacs-mandm-theme"; - rev = "078d6d6f11bd48193c5de590cfb0e3d0d687ffc9"; - sha256 = "070280438388q57lpzvd5wdk16abmxixiq01n68hdskfcipdkn2d"; + rev = "b560aa0129c55a2f4fcc5e67a7d6c66ee4dc3124"; + sha256 = "17af3bs55c6bxf1izvfgg0kag5az64ncbabgbh6ry14nv3r9lwy6"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/855ea20024b606314f8590129259747cac0bcc97/recipes/mandm-theme"; @@ -60509,12 +62216,12 @@ melpaBuild { pname = "markdown-mode"; ename = "markdown-mode"; - version = "20180904.901"; + version = "20181229.630"; src = fetchFromGitHub { owner = "jrblevin"; repo = "markdown-mode"; - rev = "30ae22215da05c4e02fcc3bfee0317cfec9c8fe5"; - sha256 = "02p2ivh81pipjqiahw2jchla563rgksdhc7r81nb7p522ma5463v"; + rev = "da1c825433fd6e9a392754118a205e3eb7b39ac4"; + sha256 = "1pbm0nggdv30ik1823v0zyx65xdpdvx4q4vf6sxbxd22gvpvqx0q"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/74610ec93d4478e835f8b3b446279efc0c71d644/recipes/markdown-mode"; @@ -60586,32 +62293,24 @@ , lib , markdown-mode , melpaBuild - , uuidgen , web-server , websocket }: melpaBuild { pname = "markdown-preview-mode"; ename = "markdown-preview-mode"; - version = "20171121.2323"; + version = "20181213.539"; src = fetchFromGitHub { owner = "ancane"; repo = "markdown-preview-mode"; - rev = "4ec15183fc9fadb9368902c9b77a2d0e1196d1c6"; - sha256 = "1zvpcnn0lafd6pvp5d42rid20dqi7zrpyai1q0kagpv3grbbyzc8"; + rev = "f98d9114ca87e3e8e5ce70e601d13061eda15415"; + sha256 = "1d1id99gagymvzdfa1mwqh8y3szm8ii47rpijkfi1qnifjg5jaq9"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/d3c5d222cf0d7eca6a4e3eb914907f8ca58e40f0/recipes/markdown-preview-mode"; sha256 = "1cam5wfxca91q3i1kl0qbdvnfy62hr5ksargi4430kgaz34bcbyn"; name = "recipe"; }; - packageRequires = [ - cl-lib - emacs - markdown-mode - uuidgen - web-server - websocket - ]; + packageRequires = [ cl-lib emacs markdown-mode web-server websocket ]; meta = { homepage = "https://melpa.org/#/markdown-preview-mode"; license = lib.licenses.free; @@ -60863,12 +62562,12 @@ melpaBuild { pname = "math-symbol-lists"; ename = "math-symbol-lists"; - version = "20170221.553"; + version = "20190102.1031"; src = fetchFromGitHub { owner = "vspinu"; repo = "math-symbol-lists"; - rev = "1af8fdcab7941a62287c2d04b8876e1538f39c60"; - sha256 = "1kj9r2mvmvnj6m2bwhbj8fspqiq8fdrhkaj0ir43f7qmd4imblsj"; + rev = "e15ec26a010b4f38111bc150c51ecb1a319f6bdb"; + sha256 = "11jk0xdlc8zk2way1d85n2khmydzzvpjhh8bbjbdsv8d1z3j9yfh"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/fadff01600d57f5b9ea9c0c47ed109e058114998/recipes/math-symbol-lists"; @@ -60914,11 +62613,11 @@ melpaBuild { pname = "matlab-mode"; ename = "matlab-mode"; - version = "20180125.1010"; + version = "20180928.826"; src = fetchgit { url = "https://git.code.sf.net/p/matlab-emacs/src"; - rev = "50266ff812607e55bddacd71a46d1b96e36fb0bd"; - sha256 = "1spyfnkw6j0v947m6yj6mv6ni1za0a9m9iycpjycpcb42q7d9rlg"; + rev = "3fbca4259b2584bde08df07ba51944d7e3e2b4f4"; + sha256 = "1diqx2k16iyj5a7kcc58kyl6mzw05cyq6ia4z3fciz716gkspgpi"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/6f78cff288077e04f8c9e4c2e5be9f3c33d8ff49/recipes/matlab-mode"; @@ -61016,12 +62715,12 @@ melpaBuild { pname = "mb-url"; ename = "mb-url"; - version = "20180906.1901"; + version = "20181225.924"; src = fetchFromGitHub { owner = "dochang"; repo = "mb-url"; - rev = "aa13abfc6231076a53b8a9903c9804443960d589"; - sha256 = "17qlx1n2vxc5dhvjiw6nl9n74ansbra6hzazcxx0xrz5vx0ssh1i"; + rev = "23078f2e59808890268401f294d860ba51bc71d9"; + sha256 = "07b9w9vd22ma4s3qhplmg84sylihz920byyi9qa7dwj7b59d4avf"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/dd9a8ff6e094b061a7b9d790df1fd4086c5d0a9d/recipes/mb-url"; @@ -61094,12 +62793,12 @@ melpaBuild { pname = "mbsync"; ename = "mbsync"; - version = "20180530.33"; + version = "20181001.2340"; src = fetchFromGitHub { owner = "dimitri"; repo = "mbsync-el"; - rev = "bca442138f24f20479b89bd5d77b012ab06f4232"; - sha256 = "1wb3wasfcqcwdlvhgr6y334mgjdkis1s6lf1bbypw9dzi1xmkj21"; + rev = "f549eccde6033449d24cd5b6148599484850c403"; + sha256 = "1pdj41rq3pq4jdb5pma5j495xj7w7jgn8pnz1z1zwg75pn7ydfp0"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/3ef6ffa53bb0ce2ba796555e39f59534fc134aa5/recipes/mbsync"; @@ -61120,12 +62819,12 @@ melpaBuild { pname = "mc-extras"; ename = "mc-extras"; - version = "20180519.2139"; + version = "20181109.935"; src = fetchFromGitHub { owner = "knu"; repo = "mc-extras.el"; - rev = "fac7e42d03078b4ca0fa72f191995c727143a0d1"; - sha256 = "097rzzd3r43f406axpvf4xfc5fxpb3v2dcrlxk5axpvr0m31b0d1"; + rev = "053abc52181b8718559d7361a587bbb795faf164"; + sha256 = "16y48qrd20m20vypvys5jp4v4gc1qrqlkm75s1pk1r68i9zrw481"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/12747bb8603ebc09ce0873f3317a99e34d818313/recipes/mc-extras"; @@ -61177,12 +62876,12 @@ melpaBuild { pname = "md4rd"; ename = "md4rd"; - version = "20180625.2236"; + version = "20181208.2112"; src = fetchFromGitHub { owner = "ahungry"; repo = "md4rd"; - rev = "3a6c5055330f1cad455cbeb6ad6f9eb4751a8309"; - sha256 = "1c0g6f6myllqz6mymqxbpi392fg1hvzas0ah2wmyw5ycmaafpz3d"; + rev = "c55512c2f7680db2a1e73db6bdf93adecaf40fec"; + sha256 = "0mvv1mvsrpkrmikcpfqf2zbawnzgq33j6zjdrlv48mcw57xb2ak9"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/48d4a3b3337e16e68631409d1de0ce67ae22b837/recipes/md4rd"; @@ -61231,12 +62930,12 @@ melpaBuild { pname = "meghanada"; ename = "meghanada"; - version = "20180909.1931"; + version = "20181116.502"; src = fetchFromGitHub { owner = "mopemope"; repo = "meghanada-emacs"; - rev = "59568a4b32373d2ae7917673896369a922375a3e"; - sha256 = "12sswa3fyf0pgawfz6ak9xc97da3bnv1qng2apw42gwg5yc0qlq4"; + rev = "4914ab1496d88251f179dc3b6158fc65e999804a"; + sha256 = "1mzl09fn3wxkhxpa4xzn306blzk07gdyzghf1d1vz3x6ll7r0gpk"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/4c75c69b2f00be9a93144f632738272c1e375785/recipes/meghanada"; @@ -61378,7 +63077,8 @@ license = lib.licenses.free; }; }) {}; - mentor = callPackage ({ cl-lib ? null + mentor = callPackage ({ async + , cl-lib ? null , fetchFromGitHub , fetchurl , lib @@ -61388,19 +63088,19 @@ melpaBuild { pname = "mentor"; ename = "mentor"; - version = "20170105.221"; + version = "20181029.1307"; src = fetchFromGitHub { owner = "skangas"; repo = "mentor"; - rev = "9a160d718b02a95b1bb24072cca87b4348e1e261"; - sha256 = "16n5dd00ajr2qqwm51v1whf2kmyr27mx30n3xlydf9np3f34hlax"; + rev = "9415472470ff23ee9600d94123c51c455d63018d"; + sha256 = "05gfprcrh9p06arsni58nf60inlf1zbd18i678r9xd4q0v35k491"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/083de4bd25b6b013a31b9d5ecdffad139a4ba91e/recipes/mentor"; sha256 = "0nkf7f90m2qf11l97zwvb114yrpbqk1xxr2bh2nvbx8m1c8nad9s"; name = "recipe"; }; - packageRequires = [ cl-lib seq xml-rpc ]; + packageRequires = [ async cl-lib seq xml-rpc ]; meta = { homepage = "https://melpa.org/#/mentor"; license = lib.licenses.free; @@ -61413,16 +63113,16 @@ melpaBuild { pname = "merlin"; ename = "merlin"; - version = "20180214.242"; + version = "20181212.316"; src = fetchFromGitHub { owner = "ocaml"; repo = "merlin"; - rev = "0a14a7df44cd8f5cea7928f3097b5bb5257cb61d"; - sha256 = "145r8bhvkar0fwajsg4msyg40na8ii0xbrwbi9b81cx1g17k5c7k"; + rev = "18f67a19dd340df8a7304c2b7b16c0baeb8e8117"; + sha256 = "1ck1h4d68px83l5vmm16p7qia7gcfxbi8ymc2w7y7an5f2158f7k"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/6440f81aed1fcddcaf7afeedb74520e605211986/recipes/merlin"; - sha256 = "1b6zdm68ds94mqiygifqi45k3czrmwvaki58jwxbbddn3ya7iinz"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/9338298a79b7f2d654df90b0f553aeed1428de13/recipes/merlin"; + sha256 = "0r4wc5ann6239bagj364yyzw4y3lcpkl5nnn0vmx4hgkwdg509fn"; name = "recipe"; }; packageRequires = []; @@ -61442,14 +63142,14 @@ ename = "merlin-eldoc"; version = "20180830.316"; src = fetchFromGitHub { - owner = "khady"; + owner = "Khady"; repo = "merlin-eldoc"; rev = "85dec436648f43c050048524fae7a3ad7ad4c019"; sha256 = "1kpdz540j32hpjykyagpwvzh7cf4gx2rfp3pdq2agc7b3bsg2jyz"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/a7130ec893175323775e887babbcec7a1e324c01/recipes/merlin-eldoc"; - sha256 = "0r4997813yz81zvmdgvr0xcp9c321h55z39lajpj1plmrs3c7bry"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/35763febad20f29320d459394f810668db6c3353/recipes/merlin-eldoc"; + sha256 = "0bx383nxd97as0d362n1jn62k2rypxvxhcjasgwf0cr8vxr244fp"; name = "recipe"; }; packageRequires = [ emacs merlin ]; @@ -61466,12 +63166,12 @@ melpaBuild { pname = "meson-mode"; ename = "meson-mode"; - version = "20170901.1135"; + version = "20181115.1325"; src = fetchFromGitHub { owner = "wentasah"; repo = "meson-mode"; - rev = "212d9f38a08074f1cb6e914e12b60bc52dcb8bee"; - sha256 = "1kv7413y5530frs1nrp0nl40h9j0idwp7vlg761r260200m8sl3v"; + rev = "b507a87455af906e6c49aa4af70eba5b1d1af9ef"; + sha256 = "046kf04vqq1wf9ncxq40fcjcgl18hk4vii5wl3m08rpvdwbnmfwr"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/4702a31ffd6b9c34f96d151f2611a1bfb25baa88/recipes/meson-mode"; @@ -61560,6 +63260,32 @@ license = lib.licenses.free; }; }) {}; + metamorph = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "metamorph"; + ename = "metamorph"; + version = "20180930.1328"; + src = fetchFromGitHub { + owner = "AdamNiederer"; + repo = "metamorph"; + rev = "d9dc7037b7eed7b3fe85ea50e91f332e3f831514"; + sha256 = "1zprgjh1wyqbpy1qvng57r6jm10k6vffpb6znm47fm8xx1h0s8k4"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/741982c7ce83a77d0b43d196eeac6e949dc5fd81/recipes/metamorph"; + sha256 = "0mqzqwwzb4x2j6jh6acx5ni9z5k56586jv4n88d3fi4vry9k4mv3"; + name = "recipe"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://melpa.org/#/metamorph"; + license = lib.licenses.free; + }; + }) {}; metascript-mode = callPackage ({ emacs , fetchFromGitHub , fetchurl @@ -62079,12 +63805,12 @@ melpaBuild { pname = "minions"; ename = "minions"; - version = "20180709.1012"; + version = "20181030.1401"; src = fetchFromGitHub { owner = "tarsius"; repo = "minions"; - rev = "2f5e73e15d0021e7ba26cf09f1cd2734b018fb69"; - sha256 = "12acfjmk6n40k5mb2hy1izbk483y83bc3d54r76l750sbm3kpdar"; + rev = "d36d2445420460c81bcd4822d0bfcbafaec2c682"; + sha256 = "0q2y37zfxlbfvgdn70ikg3abp8vljna4ir9nyqlz1awmz5i1c43s"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/769a2167d7f6dfdbbfda058ddea036f80b97d230/recipes/minions"; @@ -62232,12 +63958,12 @@ melpaBuild { pname = "mixed-pitch"; ename = "mixed-pitch"; - version = "20180410.917"; + version = "20181119.1503"; src = fetchFromGitLab { owner = "jabranham"; repo = "mixed-pitch"; - rev = "b6b1601c7a3eb9ab23e33192bc479bccc4dd5e7b"; - sha256 = "0g3mcbsjgcwg196ygj21i454ifyf0898r0xlkar1fqdl8lckb8zj"; + rev = "9acced5c7797fe855550d0870e874bbf030169fa"; + sha256 = "1j4bm0sq2za4hix6fhfhsyzp1ji3y6ql5ipjll0b55nxxxmbs5cz"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/7d3c7af03e0bca3f834c32827cbcca29e29ef4db/recipes/mixed-pitch"; @@ -62336,12 +64062,12 @@ melpaBuild { pname = "mmt"; ename = "mmt"; - version = "20171231.2219"; + version = "20181231.2307"; src = fetchFromGitHub { owner = "mrkkrp"; repo = "mmt"; - rev = "b8cc8d29e185c15a1e43ecc2a78e36a6d2f86b8f"; - sha256 = "17v26116g05py2yd24a5rjlr2lbdacahglxar10k5291v9i4msdw"; + rev = "db0f27b10bba0b26cdd208e9f6467bf455021e48"; + sha256 = "09imvxvbz57vfk9m1ljz81srllfr97p0k8n753g3qxs7p1ipaji5"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/d1137bb53ecd92b1a8537abcd2635602c5ab3277/recipes/mmt"; @@ -62386,12 +64112,12 @@ melpaBuild { pname = "mo-vi-ment-mode"; ename = "mo-vi-ment-mode"; - version = "20131028.2333"; + version = "20181216.1806"; src = fetchFromGitHub { owner = "AjayMT"; repo = "mo-vi-ment"; - rev = "6386db71640ed9415bbfa5f42296335f5da7d454"; - sha256 = "0rkjkr5ak75s2h8293ifgvq063xb1lsf0z0679bmvymq6li8gz6h"; + rev = "e8b525ffc5faa31d36ecc5496b40f0f5c3603c08"; + sha256 = "16ic8yhjfk0ijlcw7a270p7953w750qza3xdbf4vygkiqqkxiv84"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/85487df36bab0a4d2ea034dbe01c8f095a7efddc/recipes/mo-vi-ment-mode"; @@ -62519,12 +64245,12 @@ melpaBuild { pname = "modalka"; ename = "modalka"; - version = "20171231.2213"; + version = "20181231.2300"; src = fetchFromGitHub { owner = "mrkkrp"; repo = "modalka"; - rev = "e69ec8fa01e86cb789f7f2b27b6d5a47e1ca3069"; - sha256 = "10yn56vamcfblilsnfqfagssr4060gr7qbpnqa2fjqv1l8fg6jrf"; + rev = "6f07d94f9315d8f25adcfd69f8416780d96626af"; + sha256 = "1avjspidddrsqg16ah6gk4vc728xfnczpcr1a45sq34jnw9wpi8q"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/fa0a02da851a603b81e183f461da55bf4c71f0e9/recipes/modalka"; @@ -62571,12 +64297,12 @@ melpaBuild { pname = "mode-line-bell"; ename = "mode-line-bell"; - version = "20171231.1939"; + version = "20181028.2216"; src = fetchFromGitHub { owner = "purcell"; repo = "mode-line-bell"; - rev = "dd5c6d85079a25015704cc1132be3dc5388bf48b"; - sha256 = "152qaibhkiw9cij1k4m27mlsvnsvpdk113nsrf6d37czynfly6b3"; + rev = "4985ba42f5a19f46ddbf9b3622453a9694995ce5"; + sha256 = "13n3di05lgqfm4f8krn3p36yika5znhymp5vr2d747x54hqmgh7y"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/26f19808655b0242a1e9e5e5d41f7f794542e243/recipes/mode-line-bell"; @@ -62797,12 +64523,12 @@ melpaBuild { pname = "monky"; ename = "monky"; - version = "20180806.39"; + version = "20181120.1537"; src = fetchFromGitHub { owner = "ananthakumaran"; repo = "monky"; - rev = "c40038710db855a5b71fa8ba0032b397a6730d2d"; - sha256 = "0a264j6w3q0jhzqqbxfazp2c15xk2k5lm5004m958lhi53sr34fa"; + rev = "d5e787c153eeb35241c165cfda852d37f8dae562"; + sha256 = "1qpy6r0h1h62x7q76l2db9fx4dbiimn6j9d55cvmm3mn012gn4xw"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/9b33d35e3004f3cc8a5c17aa1ee07dd21d2d46dc/recipes/monky"; @@ -62899,12 +64625,12 @@ melpaBuild { pname = "monotropic-theme"; ename = "monotropic-theme"; - version = "20180218.357"; + version = "20181015.530"; src = fetchFromGitHub { owner = "caffo"; repo = "monotropic-theme"; - rev = "b46e94a712e01cebe69a6f7d950e91d7c7dd1b66"; - sha256 = "0lmyfqi6c5f2cr9ha1l2qnc4ayigb1zj9gz8xi5xxadhad3zymwh"; + rev = "36df566aa8225e303f6c9d90c00740dd678a415e"; + sha256 = "05n8s3719f6yrh4fi5xyzzlhpsgpbc60mmfmzycxlb4sinq9bfks"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/38222d109ece0030b0bfafb242aa100694b2bfcf/recipes/monotropic-theme"; @@ -62950,12 +64676,12 @@ melpaBuild { pname = "moody"; ename = "moody"; - version = "20180403.549"; + version = "20190101.1429"; src = fetchFromGitHub { owner = "tarsius"; repo = "moody"; - rev = "adf652f35cba1bb3d0f254e1905e2deeeb0fbdba"; - sha256 = "1zspq29n60r0kd9fy7d50zdypljigwcjb0qa5gkwiipnhpcnf9bp"; + rev = "3d4f407e61fd6d1c5019a76eeebde2c8069552c6"; + sha256 = "00f13w48sh3idjyb8jz8rxi2pg896zg98axqyad78p972rddqh09"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/63521fe6a1e540544a07231cc94144439e8caea7/recipes/moody"; @@ -63444,12 +65170,12 @@ melpaBuild { pname = "mpdel"; ename = "mpdel"; - version = "20180606.512"; + version = "20181223.803"; src = fetchFromGitHub { owner = "mpdel"; repo = "mpdel"; - rev = "a1e05828e3bc03679530b4cfff1306706171cb78"; - sha256 = "1avfhkklhkkazy1b0ymcmc0walrs29ak36vbvaxs480r5s16dkjd"; + rev = "c84da6bacfd9cf49155e1857d3065a475a865d69"; + sha256 = "13gikwfnl2x29z56c3xzbk575cn7k7z8wykqin94s81mhlgylkk0"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/bb25443752e18e47afc63d5497cc5052c388a607/recipes/mpdel"; @@ -63571,6 +65297,33 @@ license = lib.licenses.free; }; }) {}; + ms-python = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , lsp-mode + , melpaBuild }: + melpaBuild { + pname = "ms-python"; + ename = "ms-python"; + version = "20181215.1914"; + src = fetchFromGitHub { + owner = "xhcoding"; + repo = "ms-python"; + rev = "f8eb328109672ed3c710fb2209fe13e20107a500"; + sha256 = "0nvmrp86mil11p8yv27b1j44qj4whz607a4wlb9dy16g1w2dq5yv"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/6373142d80e84db8dec47abd0cdc562352b16681/recipes/ms-python"; + sha256 = "1zws8vsxmiwiy4ndxlnl8hn98gfkhf50w7mvq9plr4z6z1adzdi0"; + name = "recipe"; + }; + packageRequires = [ emacs lsp-mode ]; + meta = { + homepage = "https://melpa.org/#/ms-python"; + license = lib.licenses.free; + }; + }) {}; msvc = callPackage ({ ac-clang , cedet ? null , cl-lib ? null @@ -63689,12 +65442,12 @@ melpaBuild { pname = "mu4e-conversation"; ename = "mu4e-conversation"; - version = "20180827.145"; + version = "20181218.13"; src = fetchFromGitLab { owner = "ambrevar"; repo = "mu4e-conversation"; - rev = "32236a1a296a5f8e31673040fb2f0c008afd7d5f"; - sha256 = "1pfq12kxhaxwbikf3kqqp310da0c3lnz10arh30ggfszvipimspj"; + rev = "e022770609b997573c9bd1424b0f52ae57f49300"; + sha256 = "00p5s64yzw92z9c36ppljgmx407n5i0y9gmiva082l0f170dppx9"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/7638aecc7a2cd4b1646c6e32fe83e18ef212bbaa/recipes/mu4e-conversation"; @@ -63903,11 +65656,11 @@ melpaBuild { pname = "multi-project"; ename = "multi-project"; - version = "20171217.1211"; + version = "20181230.1134"; src = fetchhg { url = "https://bitbucket.com/ellisvelo/multi-project"; - rev = "a6e7c1542c0b"; - sha256 = "1wh7xlas6chdliya847092j5rkngxxg1m9a98y2r782ywgyl7xv6"; + rev = "2f03ef533b85"; + sha256 = "1hyr35kqmsj6mfrmg3glasz5wad5drzhpif1p6rh9kgypklq8rgj"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/5b7972602399f9df9139cff177e38653bb0f43ed/recipes/multi-project"; @@ -63929,12 +65682,12 @@ melpaBuild { pname = "multi-run"; ename = "multi-run"; - version = "20180122.709"; + version = "20181118.1514"; src = fetchFromGitHub { owner = "sagarjha"; repo = "multi-run"; - rev = "87d9eed414999fd94685148d39e5308c099e65ca"; - sha256 = "0m4wk6sf01b7bq5agmyfcm9kpmwmd90wbvh7fkhs61mrs86s2zw8"; + rev = "ce5ce0c56b56a9f47915dd8b83a94db353b548a5"; + sha256 = "1zh6fck20hn5nb3lbahkgkmdndid7s2kvg4g2lig9qrhzn83cl4b"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/e05ad99477bb97343232ded7083fddb810ae1781/recipes/multi-run"; @@ -64082,12 +65835,12 @@ melpaBuild { pname = "multitran"; ename = "multitran"; - version = "20180320.956"; + version = "20181215.727"; src = fetchFromGitHub { owner = "zevlg"; repo = "multitran.el"; - rev = "d826eff6ada28799a9ff6c8a4c2884b2ef1e36fb"; - sha256 = "0rk8fidq8fp9k4m21wvkld3w8g13nbfpxnj10g35c16n5wa0ydkb"; + rev = "e773138e1f24be805e9284fbedf0f237e01d1e6b"; + sha256 = "0j5if86rmg6zg2qcs7xln5inqn0a0bvbxzr8a5zznba79rpnwhy8"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/d665759fa6491b77103920a75c18a561f6800c1c/recipes/multitran"; @@ -64238,12 +65991,12 @@ melpaBuild { pname = "mvn"; ename = "mvn"; - version = "20160211.743"; + version = "20181002.917"; src = fetchFromGitHub { owner = "apg"; repo = "mvn-el"; - rev = "8a65b4eb88c9801aa3bff1921b600c72dfb8791a"; - sha256 = "1jg3xrk44lspxli0zr02jcsl8phj0ns7ly3dkd7rx2wgsk69ari3"; + rev = "ffa40235b7dabb6c6c165f64f32a963cde8031f0"; + sha256 = "0ximk0aan7jqn5x7fk4pj35bxhi6zaspvyxrmac9kxaiz8znwffr"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/7fabdb05de9b8ec18a3a566f99688b50443b6b44/recipes/mvn"; @@ -64289,12 +66042,12 @@ melpaBuild { pname = "mwim"; ename = "mwim"; - version = "20180227.852"; + version = "20181110.1100"; src = fetchFromGitHub { owner = "alezost"; repo = "mwim.el"; - rev = "462207227b98a6a4356d51419f5ad5ba9356e5cf"; - sha256 = "06lw6064i82daasgm87gm58d142pypqc1q3cnx1cm35hyj4skd32"; + rev = "b4f3edb4c0fb8f8b71cecbf8095c2c25a8ffbf85"; + sha256 = "0l3k611gp9g2x2vfmh92wnhnda81dslpwwpb8mxmzk308man77ya"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/b7e1aa2fa1294b27ed7b6c5bdd5844fa5c37df72/recipes/mwim"; @@ -64420,12 +66173,12 @@ melpaBuild { pname = "mysql-to-org"; ename = "mysql-to-org"; - version = "20180123.714"; + version = "20181012.1334"; src = fetchFromGitHub { owner = "mallt"; repo = "mysql-to-org-mode"; - rev = "2526205ad484ad3fa38d41e7d537ace38c27645c"; - sha256 = "1yinix08mzr7v2jm3yx1j3h15cw7i202wi100nmnmvqrylpd9zr2"; + rev = "a8a0c15b04c9a9e9d936908731bf43e6faf81fa8"; + sha256 = "0qi2q3ggq7fjwxl8ir6dbysfm31dzvcsp0nhm6xrk8gv6xfsyvlh"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/855ea20024b606314f8590129259747cac0bcc97/recipes/mysql-to-org"; @@ -64545,6 +66298,32 @@ license = lib.licenses.free; }; }) {}; + named-timer = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "named-timer"; + ename = "named-timer"; + version = "20181120.1424"; + src = fetchFromGitHub { + owner = "DarwinAwardWinner"; + repo = "emacs-named-timer"; + rev = "670b81e3eddef2e7353a4eedc9553a85306445db"; + sha256 = "1inbizxlfgndwxsn8cwnpf4vm42rby7pkjqxyzl7ldq4qln7q8v1"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/3e8248bab40fddc97fe48dbd103bc2aa51eb287f/recipes/named-timer"; + sha256 = "1k2gkm193fh02vsj8h9kn0y1azispcz1b3ywwmb3cbif51l956g3"; + name = "recipe"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://melpa.org/#/named-timer"; + license = lib.licenses.free; + }; + }) {}; nameframe = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -64966,12 +66745,12 @@ melpaBuild { pname = "navi-mode"; ename = "navi-mode"; - version = "20180515.1948"; + version = "20190101.1723"; src = fetchFromGitHub { owner = "alphapapa"; repo = "navi"; - rev = "7c3fd1a9b520300abfdb1b7c3de21403e81a95bf"; - sha256 = "1k5g3ij6rq20jllb7w21sp068lvcc2cjrxm2yq76bjaajbfsa501"; + rev = "d3b66180e93e009c1bae352a7e74edf58f81487e"; + sha256 = "1dcvvkl6cm3f81l6abnzbwnbc7rymchp2dlswsmmykxyrxsabfdk"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/8edf78a0ecd2ff8e6e066b80751a31e11a068c3f/recipes/navi-mode"; @@ -65096,12 +66875,12 @@ melpaBuild { pname = "neato-graph-bar"; ename = "neato-graph-bar"; - version = "20171230.1753"; + version = "20181130.849"; src = fetchFromGitLab { owner = "RobertCochran"; repo = "neato-graph-bar"; - rev = "c59f15ed9a40aecc174aa22c4bbfa7978e182705"; - sha256 = "0bdgsxdlwpkd3hjnw1jmj30slakzmj2pinj3pyr5qqba9apxnvri"; + rev = "a7ae35afd67911e8924f36e646bce0d3e3c1bbe6"; + sha256 = "0sx2m2j00xhcb8l7fw595zsn9wjhcj4xb163rjqd3d1wjrk6fpn8"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/49c5bd4e1506a28ada9856e5f70e520890123d16/recipes/neato-graph-bar"; @@ -65172,12 +66951,12 @@ melpaBuild { pname = "neotree"; ename = "neotree"; - version = "20180616.903"; + version = "20181121.1226"; src = fetchFromGitHub { owner = "jaypei"; repo = "emacs-neotree"; - rev = "4f8d80fd51c712df7b11ae8491be3527db46f612"; - sha256 = "04w784pln671nmji7hwyka1vaj20114gfxyh513glhn78by2y5s1"; + rev = "c2420a4b344a9337760981c451783f0ff9df8bbf"; + sha256 = "1wfx37kvsfwrql8zs2739nx7wb51m26vwlcz1jygbrb62n6wq14k"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/9caf2e12762d334563496d2c75fae6c74cfe5c1c/recipes/neotree"; @@ -65225,12 +67004,12 @@ melpaBuild { pname = "netease-music"; ename = "netease-music"; - version = "20180911.2013"; + version = "20181028.554"; src = fetchFromGitHub { owner = "nicehiro"; repo = "netease-music"; - rev = "a4b86ba91398657ab08a8758a22a71ca0804e880"; - sha256 = "0gh9smjn5s2axzs9ahqn8djlbrzayp5g4n39wk68sdpljmkjadwz"; + rev = "31c31cff44d2889c0456ac11d5d38227f15f03b6"; + sha256 = "0fwph4vyp0w4ir2g9bvvmspsgwpl9wqpn43x36y8ihgb3n32wcw8"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/ca3d4a8f8d9080e26a8fe2c38c0001d5cfc3c88c/recipes/netease-music"; @@ -65405,12 +67184,12 @@ melpaBuild { pname = "ng2-mode"; ename = "ng2-mode"; - version = "20180908.2119"; + version = "20181211.1610"; src = fetchFromGitHub { owner = "AdamNiederer"; repo = "ng2-mode"; - rev = "b2ba86b3c38873fb34cf01f07cddfbaeac320346"; - sha256 = "0rm7nk23zn758vrbgx6nbb9l42s5mvki8s0gq03h7v85jk3b0kvq"; + rev = "aea614669669b40b67484d1c7dc50bd0a3efc011"; + sha256 = "19cmv9lxkmjfi6qiblwmy4r144hfk668l4pgbcvgs72lmrg26ik4"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/a856ecd8aca2d9232bb20fa7019de9e1dbbb19f4/recipes/ng2-mode"; @@ -65565,12 +67344,12 @@ melpaBuild { pname = "nim-mode"; ename = "nim-mode"; - version = "20180516.1309"; + version = "20181219.923"; src = fetchFromGitHub { owner = "nim-lang"; repo = "nim-mode"; - rev = "35f4b2cb2d4c142f6f7f0e3ffb06c87b81bb8c26"; - sha256 = "1c4gl09sm8hiwa308xifj4vnnhiv3hvqs7zk0cz245k8pba612ih"; + rev = "a508b4b22497194bc36ffff3744c49977ecd96dc"; + sha256 = "1p7q3vw8xhqgy6d5nnn23kjc66r53z7hxlbz35nr0jcz5ysnrk65"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/dc2ccb5f24b9d55c77eaa7952a9e6a2e0ed7be24/recipes/nim-mode"; @@ -65590,12 +67369,12 @@ melpaBuild { pname = "nimbus-theme"; ename = "nimbus-theme"; - version = "20180907.257"; + version = "20181228.1243"; src = fetchFromGitHub { owner = "m-cat"; repo = "nimbus-theme"; - rev = "bbf3c06f4d1046920c079414b4de4b13889fab70"; - sha256 = "03bg73xn2yhwl6h5vjwz9zsnwbixhjd4k9hzqkv024c44m1cqni0"; + rev = "49fd0442de38b3fc31ecabd88d455ecb9bb59f04"; + sha256 = "1lsi2846116fh16h46lw10xz5313h03k123kplfyq1p2ms4p0wwi"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/fc0e6b456b76e2379c64a86ad844362c58146dc6/recipes/nimbus-theme"; @@ -65616,12 +67395,12 @@ melpaBuild { pname = "ninja-mode"; ename = "ninja-mode"; - version = "20141203.2159"; + version = "20181024.739"; src = fetchFromGitHub { owner = "ninja-build"; repo = "ninja"; - rev = "d3238428c6ed77eb08dfc57854325634401481e2"; - sha256 = "05scnv74g9m70dfj1y71iw0dw38zbb77h2s7kciicr9pdrvdg8d4"; + rev = "d2045dedc39885e702176b2b5e05bc77024ae3aa"; + sha256 = "0jmvjpq7fabb0bjdd4dncb1vdfizya0rjs57d6wvgc8hbgfjsvj8"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/6440f81aed1fcddcaf7afeedb74520e605211986/recipes/ninja-mode"; @@ -65669,12 +67448,12 @@ melpaBuild { pname = "nix-mode"; ename = "nix-mode"; - version = "20180908.1540"; + version = "20181212.1342"; src = fetchFromGitHub { owner = "NixOS"; repo = "nix-mode"; - rev = "fde8c8e38c9f94518661b31eb24a535c93306868"; - sha256 = "0s66a3s5mh2ngs53z3b2xd5hmwy8m9hg0hm00skz7z89pd429zqd"; + rev = "1512d02830fe90dddd35c9b4bd83d0ee963de57b"; + sha256 = "1sn2077vmn71vwjvgs7a5prlp94kyds5x6dyspckxc78l2byb661"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/e1870d786dbfac3b14386c8030e06f2d13ab9da6/recipes/nix-mode"; @@ -65909,12 +67688,12 @@ melpaBuild { pname = "no-littering"; ename = "no-littering"; - version = "20180825.651"; + version = "20181220.1409"; src = fetchFromGitHub { owner = "emacscollective"; repo = "no-littering"; - rev = "3f6d290bb43d75ba749d56fffc21c15f1d4157d2"; - sha256 = "1lp2nbszixd2m6v8j026z02shihrf77p1lpvvpkmr8dc88ma9hzb"; + rev = "4e7ecf017140bc522629cd2c977160f7cc2b8020"; + sha256 = "0xff3iy099msfdi09wvl2iqkxgndb3asffb2w2dak6wva2kf1z0d"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/57a2fb9524df3fdfdc54c403112e12bd70888b23/recipes/no-littering"; @@ -65928,6 +67707,7 @@ }; }) {}; noaa = callPackage ({ cl-lib ? null + , dash , emacs , fetchFromGitHub , fetchurl @@ -65937,19 +67717,19 @@ melpaBuild { pname = "noaa"; ename = "noaa"; - version = "20180419.1133"; + version = "20181218.1016"; src = fetchFromGitHub { owner = "thomp"; repo = "noaa"; - rev = "e99f7702512de49f93138dce6e0a7cfe2bc5eed3"; - sha256 = "1fhq6bly76qj67dbkbdlhl0icqpl4h1k3lip9ig64d8fqykpi8al"; + rev = "47ee41e30194b1680aab0744b0d2fbeb3a74d893"; + sha256 = "0msg6gqbyd11dbnc5lcsnnd1knx79sb021h6wbiky70mnyy9anjl"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/1272203f85375e50d951451bd5fd3baffd57bbfa/recipes/noaa"; sha256 = "11hzpmgapmf6dc5imvj5jvzcy7hfddyz74lqmrq8128i72q1sj0v"; name = "recipe"; }; - packageRequires = [ cl-lib emacs request ]; + packageRequires = [ cl-lib dash emacs request ]; meta = { homepage = "https://melpa.org/#/noaa"; license = lib.licenses.free; @@ -66064,12 +67844,12 @@ melpaBuild { pname = "nodejs-repl"; ename = "nodejs-repl"; - version = "20180914.2151"; + version = "20181024.954"; src = fetchFromGitHub { owner = "abicky"; repo = "nodejs-repl.el"; - rev = "d67fdc7beda4a9021763e9f2ca1e3ed72864ad7d"; - sha256 = "1mc39wc7q7n5vs02cwj5r264bnwkllvi7i67r6zxc33abx2zmlwa"; + rev = "d518947584c8041a36ffa103e2d487d852cd12ee"; + sha256 = "05ccv87rnw7fss3lib8m9sywjrj6n92fnd7mmhmjh27g2klqc83z"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/14f22f97416111fcb02e299ff2b20c44fb75f049/recipes/nodejs-repl"; @@ -66116,12 +67896,12 @@ melpaBuild { pname = "nodenv"; ename = "nodenv"; - version = "20180830.517"; + version = "20181023.843"; src = fetchFromGitHub { owner = "twlz0ne"; repo = "nodenv.el"; - rev = "7ea70f1ee6c7bee422b9d090a49af6041ed81668"; - sha256 = "1kaky6qzr7w1v4ib79s54f882gp6biy2lzsy2022pl0mxyg1jx7f"; + rev = "832fb0cbac4513edde7ebd6d1ab971c54313be36"; + sha256 = "0hn29y8gv9y9646yacnhirx2iz1z7h0p3wrzjn5axbhw0y382qhq"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/272df58a1112c8c082c740d54bd37469af513d4a/recipes/nodenv"; @@ -66293,11 +68073,11 @@ melpaBuild { pname = "notmuch"; ename = "notmuch"; - version = "20180829.227"; + version = "20181208.445"; src = fetchgit { url = "https://git.notmuchmail.org/git/notmuch"; - rev = "cfd015bda413a5fee0bcc80e73008234fe88736f"; - sha256 = "19w0kn414xz4xaiiwn4npgpy57iip5406rf65fxn0w7bgvqanjk0"; + rev = "1ac110c12e9efe7c873bf6ace7211b6d07393d98"; + sha256 = "1x43jfg1bzimhf3cmzpkzs0a8yla02zsdcl0fsdd1f7a8pzpsq5b"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/d05fbde3aabfec4efdd19a33fd2b1297905acb5a/recipes/notmuch"; @@ -66346,12 +68126,12 @@ melpaBuild { pname = "nov"; ename = "nov"; - version = "20180617.1444"; + version = "20181117.2350"; src = fetchFromGitHub { owner = "wasamasa"; repo = "nov.el"; - rev = "3be6e8cd1a6311b0782ca2aa3d9961bec6183632"; - sha256 = "1i7caa7s0c2qmf8bf9bi6sp7yavpnxlck6gm9fc0lkywrjfq0ixs"; + rev = "3bb7a4038f0c2100df671c9f1f33b785ed4ae296"; + sha256 = "1s2av1yrzsqslgjfiislf9bljdk0rxpyq2vrbyralfnj2wvgpk9m"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/cf543955ba2d5d0074fa2a5ba176f9415f6e006d/recipes/nov"; @@ -66495,6 +68275,32 @@ license = lib.licenses.free; }; }) {}; + ns-auto-titlebar = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "ns-auto-titlebar"; + ename = "ns-auto-titlebar"; + version = "20181022.1454"; + src = fetchFromGitHub { + owner = "purcell"; + repo = "ns-auto-titlebar"; + rev = "b16092e8058af63ad2bc222f166b0aa3cb66bf9d"; + sha256 = "0m1ih8ca4702zrkhl3zdvwbci96wyjlxhpfx95w372k25rca87dq"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/d22ebb5ef16df0c56d6031cb1c7f312dca514482/recipes/ns-auto-titlebar"; + sha256 = "1wk4y2jwl65z18cv57m8zkcg31wp9by74z2zvccxzl7mwlhy7kqg"; + name = "recipe"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://melpa.org/#/ns-auto-titlebar"; + license = lib.licenses.free; + }; + }) {}; nsis-mode = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -66532,12 +68338,12 @@ melpaBuild { pname = "nu-mode"; ename = "nu-mode"; - version = "20180907.1315"; + version = "20181021.1332"; src = fetchFromGitHub { owner = "pyluyten"; repo = "emacs-nu"; - rev = "21bb07edb120fb3f888e4b38f1dc99508bb83640"; - sha256 = "1zhy2sg41l4nak1ry5xgzw373isdhj955zg3i4ivw1yax4c2h9pf"; + rev = "1c20826ee462ad991e8b9cdeedfacb6bf1c159bf"; + sha256 = "120ba0av9zczxncn97mlivjyaazlanrsisv6l8smhww0s7mvwhz6"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/230d5f8fdd965a24b8ff3cc94acf378d04815fca/recipes/nu-mode"; @@ -66772,14 +68578,14 @@ ename = "nyx-theme"; version = "20170910.607"; src = fetchFromGitHub { - owner = "GuidoSchmidt"; + owner = "guidoschmidt"; repo = "emacs-nyx-theme"; rev = "afe2b8c3b5421b4c292d182dcf77079b278e93d8"; sha256 = "1qamw4x3yrygy8qkicy6smxksnsfkkp76hlnivswh7dm3fr23v6m"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/3440905a20bc91bb2637a87c04ff8410379f150d/recipes/nyx-theme"; - sha256 = "17ajpsbwbal1rwgd38kckh1kvnd412h6fkvj2x4j5rqvjr9nhgr6"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/35763febad20f29320d459394f810668db6c3353/recipes/nyx-theme"; + sha256 = "11629h7jfnq2sahwiiqx01qpv3xb0iqvcqm5k9w1zhg01jhjfmw2"; name = "recipe"; }; packageRequires = [ emacs ]; @@ -67289,12 +69095,12 @@ melpaBuild { pname = "ob-go"; ename = "ob-go"; - version = "20170731.1057"; + version = "20181107.1141"; src = fetchFromGitHub { owner = "pope"; repo = "ob-go"; - rev = "28a0250cd969974936e44dfdccb0265632d25f84"; - sha256 = "1g595miqn7wdmphvgi06ijqzjy801nal226kbghk9p002s3xzzn0"; + rev = "237aded7aeb236573514fb26f23129852fd3c206"; + sha256 = "15a3m8hsnyarbpasv4hrzla7pfdfcarjwxdji52q1hb79r61nbs6"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/3afb687d6d3d1e52336ca9a7343278a9f37c3d54/recipes/ob-go"; @@ -67307,6 +69113,34 @@ license = lib.licenses.free; }; }) {}; + ob-html-chrome = callPackage ({ emacs + , f + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild + , s }: + melpaBuild { + pname = "ob-html-chrome"; + ename = "ob-html-chrome"; + version = "20181219.242"; + src = fetchFromGitHub { + owner = "nikclayton"; + repo = "ob-html-chrome"; + rev = "7af6e4a24ed0aaf67751bdf752c7ca0ba02bb8d4"; + sha256 = "0h33y11921ajw60b4hqpg0nvdvx3w3cia90wf53c5zg2bckcrfjh"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/ac4380b5ea63c5296e517fccafa4d6a69dc73d0d/recipes/ob-html-chrome"; + sha256 = "1z3bi5i9n6dqvarl32syb6y36px3pf0pppqxn02rrx1rwvg81iql"; + name = "recipe"; + }; + packageRequires = [ emacs f s ]; + meta = { + homepage = "https://melpa.org/#/ob-html-chrome"; + license = lib.licenses.free; + }; + }) {}; ob-http = callPackage ({ cl-lib ? null , fetchFromGitHub , fetchurl @@ -67528,14 +69362,14 @@ ename = "ob-nim"; version = "20170809.1130"; src = fetchFromGitHub { - owner = "lompik"; + owner = "Lompik"; repo = "ob-nim"; rev = "742b6b1fccdb245807b540f41f7f422b27f36230"; sha256 = "0qnx9b40y1vxb7wsznnn29chl80fwlh42g2gm9l1p8jvli3jm2wp"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/7263ebadeabe36359c14ffb36deda2bc75f2ca61/recipes/ob-nim"; - sha256 = "07i9n9z9xswbisq4rvgg7vbqj28c6j1xk96kpdbk8ffdvgybcpfz"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/35763febad20f29320d459394f810668db6c3353/recipes/ob-nim"; + sha256 = "0j8mk12d29jyhhj4dlc0jykqmqy8g0yrbv7f2sqig83wj531bwza"; name = "recipe"; }; packageRequires = [ cl-lib ]; @@ -67909,6 +69743,33 @@ license = lib.licenses.free; }; }) {}; + objed = callPackage ({ cl-lib ? null + , emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "objed"; + ename = "objed"; + version = "20181229.1022"; + src = fetchFromGitHub { + owner = "clemera"; + repo = "objed"; + rev = "d826c0f4969733e4f5275f564872e23b9a55f125"; + sha256 = "1j679h2sq0licmb2mjim1cb3kp9gdcmxl75flfsy29ng64w5yyqz"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/4abc6d927a2bf238d23256adcc9f09a751c90374/recipes/objed"; + sha256 = "0iqvwa664fzklajqgnss7igjh7jr9v9i8dp9acm42g8ingp9zf7b"; + name = "recipe"; + }; + packageRequires = [ cl-lib emacs ]; + meta = { + homepage = "https://melpa.org/#/objed"; + license = lib.licenses.free; + }; + }) {}; obsidian-theme = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -68144,12 +70005,12 @@ melpaBuild { pname = "octopress"; ename = "octopress"; - version = "20170813.615"; + version = "20181009.1651"; src = fetchFromGitHub { owner = "aaronbieber"; repo = "octopress.el"; - rev = "b4c25df9e3ccf49ac27c0a152daa4e27d1247d56"; - sha256 = "0zidh929sc1wi695ibzglbybfvxz2rj1365mij97088wwdk5dyz8"; + rev = "d4d16f52278b14a271131a11e9cc0a94316de10e"; + sha256 = "1b69ssf4kjwjdmibrw0f7bpqx2703lz6p25n6mqr68z86c19gr0x"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/7205d3d43797755077f19f57f531b4b39e77bae3/recipes/octopress"; @@ -68466,17 +70327,16 @@ , lib , melpaBuild , popup - , s - , shut-up }: + , s }: melpaBuild { pname = "omnisharp"; ename = "omnisharp"; - version = "20180805.924"; + version = "20181205.1621"; src = fetchFromGitHub { owner = "OmniSharp"; repo = "omnisharp-emacs"; - rev = "fccbc4a7f63a3a140476bd8c56320ccb6cd18df2"; - sha256 = "17qzdvwb4qzxdl4k8ndwggmxr7pnsinh6nz2ac19ammpbs1308fn"; + rev = "ec73a732c3bc903af33fe6ebc31d893ba45dd42c"; + sha256 = "0j2zgn81110lqd440fw2y4z9758l3hzkky1h0z0zxz69qhc2d4p8"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/e327c483be04de32638b420c5b4e043d12a2cd01/recipes/omnisharp"; @@ -68493,7 +70353,6 @@ flycheck popup s - shut-up ]; meta = { homepage = "https://melpa.org/#/omnisharp"; @@ -68588,12 +70447,12 @@ melpaBuild { pname = "one-themes"; ename = "one-themes"; - version = "20180507.1008"; + version = "20181030.442"; src = fetchFromGitHub { owner = "balajisivaraman"; repo = "emacs-one-themes"; - rev = "fb633009a173dee56cf581198d9c26871189edf8"; - sha256 = "0920g4mvqf97v6akw4fc1aq8aq2mnm8ah2xlkcgsc4a78bhk7aq1"; + rev = "1b50f2f88fe5e207cbe6d68db710361e3bc4a9ce"; + sha256 = "1jap6i7kavvwv7bis4x8s7a3ww4srsm3qb05r2vbchfgk7adw92m"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/504fb2fa2fe17eb008f7e9b8f7fb394f4a3ebd28/recipes/one-themes"; @@ -69108,12 +70967,12 @@ melpaBuild { pname = "org-board"; ename = "org-board"; - version = "20180530.1120"; + version = "20181124.802"; src = fetchFromGitHub { owner = "scallywag"; repo = "org-board"; - rev = "8899d8f8c1977df2397793a54868317463120553"; - sha256 = "190rf8hi1233rjmr78cqy03m1vspcsdbzcf64xs8n4vckyb18vl4"; + rev = "0ac7654e0dbab78dbc9897f8034ab349b4a4e1a7"; + sha256 = "18zgnwmv2b90v5p4cbj1krdc8vd7j5z1bcazl693sfx2hrs7j8r6"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/d8063ee17586d9b1e7415f7b924239826b81ab08/recipes/org-board"; @@ -69162,12 +71021,12 @@ melpaBuild { pname = "org-brain"; ename = "org-brain"; - version = "20180712.1410"; + version = "20181227.1604"; src = fetchFromGitHub { owner = "Kungsgeten"; repo = "org-brain"; - rev = "d8dc1c4914c6200eaf44e36bf51a3cf02ef88fb9"; - sha256 = "1lygmnxyqgp0pm7gjy38vlkycyipqwhmyhmwqs3xr2hxgb9rlfd3"; + rev = "9a3b4dd8c3a7122d4db98c189d55519da82b3706"; + sha256 = "03fmimbbnz7jsk8yd8zj813r3mw1hv47i5m17qbbllzvb21zyp9b"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/47480fbae06e4110d50bc89db7df05fa80afc7d3/recipes/org-brain"; @@ -69293,12 +71152,12 @@ melpaBuild { pname = "org-chef"; ename = "org-chef"; - version = "20180706.1835"; + version = "20181202.1421"; src = fetchFromGitHub { owner = "Chobbes"; repo = "org-chef"; - rev = "6b004af05d05c981b9cf9d24a525242e36129b46"; - sha256 = "1jb2s3q02z8rjzcdxmnk91p4f75illdfjmmz93yv0izp5irhm9s7"; + rev = "b55908c8a56bbb031ae88970db9ea64082f58870"; + sha256 = "0faamn0ngnpaz4xci5xympxr7g2w2gfnb066mikp5idigw24nlvi"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/23b9e64887a290fca7c7ab2718f627f8d728575f/recipes/org-chef"; @@ -69319,12 +71178,12 @@ melpaBuild { pname = "org-cliplink"; ename = "org-cliplink"; - version = "20180810.1334"; + version = "20181022.539"; src = fetchFromGitHub { owner = "rexim"; repo = "org-cliplink"; - rev = "d99f6f9618ad8ed6185714786ed0e89fc439749d"; - sha256 = "1q2abr0r1wv16wxl7gwzv1gxbq6bd4mg6l3kzi4pf73wjbnicq8s"; + rev = "7ab98f2b17a627e907b50c27737ec1a8ae8b0f3d"; + sha256 = "0rwh5602d6hd0nvr3j50m2xz48a2kwknnn0f4aabshhb5x0ry5g8"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/7ddb13c59441fdf4eb1ba3816e147279dea7d429/recipes/org-cliplink"; @@ -69392,6 +71251,32 @@ license = lib.licenses.free; }; }) {}; + org-clock-split = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "org-clock-split"; + ename = "org-clock-split"; + version = "20180909.1347"; + src = fetchFromGitHub { + owner = "justintaft"; + repo = "org-clock-split"; + rev = "b2f1497b62e7f4a767be02e249e4ac95d4f8f21c"; + sha256 = "099jxkyx7ikfqz99sx632a6c0mc630qkix3c307sm7y317jcdz8l"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/dc8517485e39093a3be387213f766d1df7d50061/recipes/org-clock-split"; + sha256 = "1ihqp4ilz4a3qs2lrc3j0lqkjh782510m2nbzba89pasgl4c4jhw"; + name = "recipe"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://melpa.org/#/org-clock-split"; + license = lib.licenses.free; + }; + }) {}; org-clock-today = callPackage ({ emacs , fetchFromGitHub , fetchurl @@ -69556,12 +71441,12 @@ melpaBuild { pname = "org-dotemacs"; ename = "org-dotemacs"; - version = "20180801.1728"; + version = "20181121.2045"; src = fetchFromGitHub { owner = "vapniks"; repo = "org-dotemacs"; - rev = "49072168158b6cd45796e92e940c9ac71e181722"; - sha256 = "18p9qpp1pja7b8bjsdghb2bfsqz72xg01ysmlj7105vn6zrsm161"; + rev = "c0a5c0c51b1612828dde9aec419ae1d9a2852bf3"; + sha256 = "1rr1z6h010k067j3qgxw1wbxwa2ac4j9lrl584cxghyzi90jjl6p"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/4c1847184312c8c95e7e81e5b3b73e5621cc2509/recipes/org-dotemacs"; @@ -69582,12 +71467,12 @@ melpaBuild { pname = "org-download"; ename = "org-download"; - version = "20180831.631"; + version = "20180925.828"; src = fetchFromGitHub { owner = "abo-abo"; repo = "org-download"; - rev = "cf87c16810a08c8eaed790e99c2bea5b3c9bb1ae"; - sha256 = "1jr0n426zm85nn6y2alrzldy3dn6j8gkwr2vaihb8xxcvp0vhjb8"; + rev = "07b98eb4f7252e3f64a306c09dfb618be6ac181d"; + sha256 = "1k1i6h0g00qa6bdiscx6k0b6xcwrijfmnhx4pz8pg8sjy5a3yp6k"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/edab283bc9ca736499207518b4c9f5e71e822bd9/recipes/org-download"; @@ -69792,23 +71677,23 @@ }; }) {}; org-emms = callPackage ({ emacs - , fetchFromGitHub + , fetchFromGitLab , fetchurl , lib , melpaBuild }: melpaBuild { pname = "org-emms"; ename = "org-emms"; - version = "20180820.1427"; - src = fetchFromGitHub { + version = "20181010.414"; + src = fetchFromGitLab { owner = "jagrg"; repo = "org-emms"; - rev = "69752f482dbc265aafedbf1d19e7fd8f4265ca0b"; - sha256 = "08naas4cpidy0lhbl7waq1qp4s9ljnq431k39q0lki2klbypg2ww"; + rev = "07a8917f3d628c32e5de1dbd118ac08203772533"; + sha256 = "1sqsm5sv311xfdk4f4rsnvprdf2v2vm7l1b3vqi7pc0g8adlnw1d"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/7455b0d5439e058f39d17a75ec3232c8ac3e26ec/recipes/org-emms"; - sha256 = "0gdv38dk70ncjn6xcrr8x75mw37f6p2w91jjy87v9zzrd7s22blh"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/4fa5c221790acca40316510fd495951f418c8e15/recipes/org-emms"; + sha256 = "0g7d2y1dgy2hgiwaxz9crxf3nv8aqzxhyf2jmnmhphdv2s9ipvjw"; name = "recipe"; }; packageRequires = [ emacs ]; @@ -69883,12 +71768,12 @@ melpaBuild { pname = "org-gcal"; ename = "org-gcal"; - version = "20180827.108"; + version = "20181208.1120"; src = fetchFromGitHub { owner = "kidd"; repo = "org-gcal.el"; - rev = "8636d25c81f8cb02d6522427753e76b853bda491"; - sha256 = "1hgbwp32psij3h0bypw2rl7bw5dsb8swy3426rfbsw9qllx3ivqw"; + rev = "7250742f3aef99611a792046f0a03bb1e053775c"; + sha256 = "18j671361li92zqij28nvyyisy10rr8kfikip8q0n46q7l9f5mx4"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/d97c701819ea8deaa8a9664db1f391200ee52c4f/recipes/org-gcal"; @@ -69988,16 +71873,16 @@ melpaBuild { pname = "org-index"; ename = "org-index"; - version = "20180830.850"; + version = "20181210.644"; src = fetchFromGitHub { - owner = "marcihm"; + owner = "marcIhm"; repo = "org-index"; - rev = "953f5a78f570be4745fb267523174e5f3fddc8a1"; - sha256 = "15q9hp3w5k4a8f9n3cbsgmpzyc9v0w74chdi1s47hkw9dgq8ajpw"; + rev = "5ee01abdf4386e74ffed0743290eb3f6be794f76"; + sha256 = "0638sx2vlsrdip5gr7mi2860bvpb743660hq1cz7ifkf77jbah68"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/54946e733901986304f7a7a5139b2818ebf97eb3/recipes/org-index"; - sha256 = "1dp52xqrhby2xyi6p2d0ggp5irqsqwicp62ndg5wszyd33clxab5"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/35763febad20f29320d459394f810668db6c3353/recipes/org-index"; + sha256 = "092q92hwvknwm3v2shp8dm59qdamfivx9z9v23msysy7x2mhg98f"; name = "recipe"; }; packageRequires = [ emacs ]; @@ -70046,12 +71931,12 @@ melpaBuild { pname = "org-jira"; ename = "org-jira"; - version = "20180910.1339"; + version = "20181223.2159"; src = fetchFromGitHub { owner = "ahungry"; repo = "org-jira"; - rev = "28c23a10788682cce27aa479e5eb942138e1b03e"; - sha256 = "15yw7ppm0l8rggdbgvc1izwn6w1lrgxpr4g74q3fjh9dkzmiyx0s"; + rev = "4b67f6cc2460f64df7b50983d018f9e29db48b1a"; + sha256 = "13hwyz5l9d07w0wyjym9vd9x2ndn906r6c5ir2qkji9rvlp6drnl"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/e0a2fae6eecb6b4b36fe97ad99691e2c5456586f/recipes/org-jira"; @@ -70072,12 +71957,12 @@ melpaBuild { pname = "org-journal"; ename = "org-journal"; - version = "20180903.307"; + version = "20181114.2314"; src = fetchFromGitHub { owner = "bastibe"; repo = "org-journal"; - rev = "db9c4c352bd56bebcac940adc70bfb89063ef3b9"; - sha256 = "0wigkkdi9yww83f076ykw6akwd716s2lwrc3hfr96vsw0zg33vh8"; + rev = "3ae2e7d7e372dee08143282a9137bf4dfc946645"; + sha256 = "1sqn68l1rlyypz3839hghrpwzcdxvqwr50dbfad5827garflg3m4"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/7fabdb05de9b8ec18a3a566f99688b50443b6b44/recipes/org-journal"; @@ -70100,12 +71985,12 @@ melpaBuild { pname = "org-kanban"; ename = "org-kanban"; - version = "20180819.1755"; + version = "20181222.618"; src = fetchFromGitHub { owner = "gizmomogwai"; repo = "org-kanban"; - rev = "2fc1ed815f7155df1169f68b19c1ad847e620fee"; - sha256 = "141j9z5a31hpxj073vf0yyhmdw3j89ywqac1a97c2k4967ps0nw1"; + rev = "a1994228c669ba23f20310d03d2dc58a2a3be6e6"; + sha256 = "0c6w9zh0l7x8gmmw64daswh1a8r23d0hzdz9piy1xz850xhkvp0f"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/a9f3a10c126fa43a6fa60ee7f8e50c7a9661dbc1/recipes/org-kanban"; @@ -70236,12 +72121,12 @@ melpaBuild { pname = "org-make-toc"; ename = "org-make-toc"; - version = "20180614.1959"; + version = "20181216.305"; src = fetchFromGitHub { owner = "alphapapa"; repo = "org-make-toc"; - rev = "c27e3600473100daa3007fb134cd3fe13e821d90"; - sha256 = "0078qpimkx6ps1cnyb1kaxiz4k93ppm7axsbrm18qic6mvp6i2nc"; + rev = "592fdc30f54775c0fc8c2a503305f71f95765b3e"; + sha256 = "175q6yvikarpasyva23i7asq4aiv0cygvc35bkg66sks3dq0fwl5"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/df87749128bcfd27ca93a65084a2e88cd9ed5c3f/recipes/org-make-toc"; @@ -70263,12 +72148,12 @@ melpaBuild { pname = "org-mime"; ename = "org-mime"; - version = "20180607.2350"; + version = "20181023.1614"; src = fetchFromGitHub { owner = "org-mime"; repo = "org-mime"; - rev = "895a7c31bb6aa0913b902ece414d0ad29dc8cf1f"; - sha256 = "1s0z2zljbk2nsd8rrpknrydi3b7rzfrc21bq396pxhfz11irz3pb"; + rev = "1e792ef0616069b3ec74a4b7d96fced8c9c6eb8a"; + sha256 = "182ifw3rdblmk6hrrybmz7g6dm9k4kxnqg89drmicfy0qvn4h059"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/521678fa13884dae69c2b4b7a2af718b2eea4b28/recipes/org-mime"; @@ -70361,6 +72246,33 @@ license = lib.licenses.free; }; }) {}; + org-msg = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , htmlize + , lib + , melpaBuild }: + melpaBuild { + pname = "org-msg"; + ename = "org-msg"; + version = "20181111.1015"; + src = fetchFromGitHub { + owner = "jeremy-compostella"; + repo = "org-msg"; + rev = "9c9ae7b37dc1404ff6d4de4b543ae01dd1562914"; + sha256 = "1gbjinnrn1y5506xjp8nmr15gh6pgwnwq1g8q30xmb3dbrrc43hx"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/6aec5f72baa870fe57df0fd366696329651a221f/recipes/org-msg"; + sha256 = "0pznyvjks4ga204nv9v1rn7y7ixki437gknp2h854kpf6pdlb2jy"; + name = "recipe"; + }; + packageRequires = [ emacs htmlize ]; + meta = { + homepage = "https://melpa.org/#/org-msg"; + license = lib.licenses.free; + }; + }) {}; org-multiple-keymap = callPackage ({ cl-lib ? null , emacs , fetchFromGitHub @@ -70427,12 +72339,12 @@ melpaBuild { pname = "org-noter"; ename = "org-noter"; - version = "20180912.1347"; + version = "20181106.1541"; src = fetchFromGitHub { owner = "weirdNox"; repo = "org-noter"; - rev = "9acb7c226e3ff0f922e8670bf67de391cfdb324a"; - sha256 = "037sfxdrx886ih98hljxl96y3zpjbcibnc5q96ax9lgif9f6qz8r"; + rev = "8e5d8eacffe251a4b6ab55f6cb36e0830f5fe8dc"; + sha256 = "0pz1rxfvbvdgv6nqgx5cdk858wqqrir11mxacqh6fs87yvbp1y33"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/4a2bc0d95dc2744277d6acbba1f7483b4c14d75c/recipes/org-noter"; @@ -70731,6 +72643,34 @@ license = lib.licenses.free; }; }) {}; + org-present-remote = callPackage ({ elnode + , emacs + , fetchFromGitLab + , fetchurl + , lib + , melpaBuild + , org-present }: + melpaBuild { + pname = "org-present-remote"; + ename = "org-present-remote"; + version = "20181001.1441"; + src = fetchFromGitLab { + owner = "duncan-bayne"; + repo = "org-present-remote"; + rev = "aca889be14400d68fb6b86bb89702942883e06b9"; + sha256 = "0xmsaza4i702hvm49kg8hh871isr4j5ra8w3yc27n2447jlsniif"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/66b092084565634cac8dd07b7b1694d0ddb236ba/recipes/org-present-remote"; + sha256 = "06xxxa8hxfxx47bs6wxi8nbgqc8nm82c3h0yv1ddlm35qfscggks"; + name = "recipe"; + }; + packageRequires = [ elnode emacs org-present ]; + meta = { + homepage = "https://melpa.org/#/org-present-remote"; + license = lib.licenses.free; + }; + }) {}; org-preview-html = callPackage ({ emacs , fetchFromGitHub , fetchurl @@ -71031,12 +72971,12 @@ melpaBuild { pname = "org-ref"; ename = "org-ref"; - version = "20180913.1607"; + version = "20190102.1046"; src = fetchFromGitHub { owner = "jkitchin"; repo = "org-ref"; - rev = "25833720609736f92b4b8c82740dfdb1985e8c1e"; - sha256 = "009qbp4z19dmqf34hbvbhk71y5sl6g6r0vss57mnizqq7wyk2y14"; + rev = "a1e2fc2326a376aeef0c0ce7e2aa99d8950f75cb"; + sha256 = "0bc1iq18lv18a280ia053s4ajykj2n5jghxdkihb0352gzzs6clx"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/550e4dcef2f74fbd96474561c1cb6c4fd80091fe/recipes/org-ref"; @@ -71119,12 +73059,12 @@ melpaBuild { pname = "org-rich-yank"; ename = "org-rich-yank"; - version = "20180430.644"; + version = "20181120.554"; src = fetchFromGitHub { owner = "unhammer"; repo = "org-rich-yank"; - rev = "b29bd06f295424fc15b3b8c1b3f78f501d67db47"; - sha256 = "0c4ywznxwf7hdc4x434d90hp440rplc4nsih4aswjkb7lx38lp9a"; + rev = "d2f350c5296cf05d6c84b02762ba44f09a02b4e3"; + sha256 = "0gxb0fnh5gxjmld0hnk5hli0cvdd8gjd27m30bk2b80kwldxlq1z"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/1261823d88459b6ac42d6c55c157a326173663df/recipes/org-rich-yank"; @@ -71200,12 +73140,12 @@ melpaBuild { pname = "org-send-ebook"; ename = "org-send-ebook"; - version = "20180731.2223"; + version = "20181016.100"; src = fetchFromGitHub { owner = "stardiviner"; repo = "org-send-ebook"; - rev = "39ee6440ec6f29f67cb24e3c62e179342d3a7b11"; - sha256 = "04q5kh6jxny2n68im1if8d4p257lx2q7gymlnbsslppl5jrnj8b5"; + rev = "b4913a709f9206115c3e3ea73e217029cc0fb3de"; + sha256 = "13bivxqgi5z7iyzw37zl168x8iip6g0yhbl5yywkdfj51z81alr7"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/646106cf43649544056285aef8c4035b6e5bbbdb/recipes/org-send-ebook"; @@ -71218,6 +73158,60 @@ license = lib.licenses.free; }; }) {}; + org-snooze = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "org-snooze"; + ename = "org-snooze"; + version = "20181229.624"; + src = fetchFromGitHub { + owner = "xueeinstein"; + repo = "org-snooze.el"; + rev = "8799adc14a20f3489063d279ff69312de3180bf9"; + sha256 = "0ni5vm6b8c09ybn9rg3smdsxq1mxyqvndi00wn718my7939g82kb"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/fd04816fb53fe01fa9924ec928c1dd41f2219d6a/recipes/org-snooze"; + sha256 = "00iwjj249vzqnfvbmlzrjig1sfhzbpv9kcpz95i3ir1w1qhw5119"; + name = "recipe"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://melpa.org/#/org-snooze"; + license = lib.licenses.free; + }; + }) {}; + org-starter = callPackage ({ dash + , dash-functional + , emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "org-starter"; + ename = "org-starter"; + version = "20180917.505"; + src = fetchFromGitHub { + owner = "akirak"; + repo = "org-starter"; + rev = "a1274f901366a39c2eeeaa36644c0bdd9837374b"; + sha256 = "157h9z8wxbbqlil7ka7awnqhk9d9qa7qnsc17vza7m8v4c9bsz54"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/7bdd9c835184ef1a6fabfaf7adb56a51514b75ea/recipes/org-starter"; + sha256 = "0vb11g5lvkvazrdzgdjvl8w7y5rr5nppg6685gq9pl6hw3sda0bs"; + name = "recipe"; + }; + packageRequires = [ dash dash-functional emacs ]; + meta = { + homepage = "https://melpa.org/#/org-starter"; + license = lib.licenses.free; + }; + }) {}; org-static-blog = callPackage ({ emacs , fetchFromGitHub , fetchurl @@ -71283,12 +73277,12 @@ melpaBuild { pname = "org-super-agenda"; ename = "org-super-agenda"; - version = "20180912.354"; + version = "20181218.427"; src = fetchFromGitHub { owner = "alphapapa"; repo = "org-super-agenda"; - rev = "4fb15caa693b588a73f82788861a964489316b67"; - sha256 = "0adfv63zhqlpwvhr432hklpxkd5110sv891l3rgkxlhnz69n8p49"; + rev = "4cd4a36cd0cabcf4ba4c6c11fff8ef879a5cd016"; + sha256 = "089y20zi5jy92zx66b4wkcfqpb3py5yn2lvfdmsmnlkg49h6sika"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/fd27b2df7594a867529de4b84c8107f82dabe2e9/recipes/org-super-agenda"; @@ -71311,12 +73305,12 @@ melpaBuild { pname = "org-sync"; ename = "org-sync"; - version = "20180221.1127"; + version = "20181203.1623"; src = fetchFromGitHub { owner = "arbox"; repo = "org-sync"; - rev = "fedddd20384de9919ba8e0b08344ff9356508805"; - sha256 = "0hkr5m795srmx8vzqaa4rhrnnm7qyxnadj5wlkdgsa8c3vcjl5gc"; + rev = "e34a385fa9e658c8341a0a6e6bc3472d4d536bb8"; + sha256 = "1xk0wqr66wjh00wgbr4f0q02zchmzdgpz2inz316zfjm4cik8y5c"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/923ddbaf1a158caac5e666a396a8dc66969d204a/recipes/org-sync"; @@ -71499,12 +73493,12 @@ melpaBuild { pname = "org-timeline"; ename = "org-timeline"; - version = "20180812.419"; + version = "20190103.401"; src = fetchFromGitHub { owner = "Fuco1"; repo = "org-timeline"; - rev = "701f13246ad1ce286be69cc16c1126536b71e7ca"; - sha256 = "09w5qd4bsahsp8qa14z380ahg5lmwdgvf6lqh092s142kljmag27"; + rev = "46246d612a184f6debe343c5011546ca8153ba4f"; + sha256 = "0bg1llfrq8q3p14f7hwzvnw46kqk30n3j53n3qsfw7ljmiq552c4"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/298bd714f6cefd83d594b0eea731a01fb2faf1ad/recipes/org-timeline"; @@ -71606,12 +73600,12 @@ melpaBuild { pname = "org-tree-slide"; ename = "org-tree-slide"; - version = "20180906.249"; + version = "20181226.147"; src = fetchFromGitHub { owner = "takaxp"; repo = "org-tree-slide"; - rev = "d45152fad1c0a153251073806f1b65ebd3731411"; - sha256 = "1qqjvbcwacxfkyq2y6vxsmlnq6z8b4fmxg91a9k4ws827qxrnass"; + rev = "603a383117b8c19004baeecfe34837e20568fdbd"; + sha256 = "0c6q2pdsq2dn66b3ghbz8p85qnaklq1pjyj6gja32w040nnzs413"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/6160c259bc4bbcf3b98c220222430f798ee6463f/recipes/org-tree-slide"; @@ -71662,12 +73656,12 @@ melpaBuild { pname = "org-variable-pitch"; ename = "org-variable-pitch"; - version = "20180429.1515"; + version = "20181206.651"; src = fetchFromGitHub { owner = "cadadr"; repo = "elisp"; - rev = "ffe03506694c94de0444995f973a925deccc400a"; - sha256 = "02wcvka96zdlq3myfar7dqywfil2b77bc6ydmgcphwn3as3kl08r"; + rev = "d5a1038b4b2820c2bdfeba577300732b9780f5d0"; + sha256 = "0gr0spsmhm17fml045zim0g3yxmrhnmlz28is3v16bina4azwqg1"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/9632b7e98772b584d6420f8d0f9652d67118e05e/recipes/org-variable-pitch"; @@ -71738,23 +73732,24 @@ , lib , melpaBuild , org + , request , s }: melpaBuild { pname = "org-web-tools"; ename = "org-web-tools"; - version = "20180903.34"; + version = "20181230.2323"; src = fetchFromGitHub { owner = "alphapapa"; repo = "org-web-tools"; - rev = "7ad832950cb17890a4da751ae6d6817a7428f342"; - sha256 = "0kak9h5ny00d39gnwspv53nadnag01brw2fq9zk5wpfc91h9bjng"; + rev = "fe9e4ce4896eee757fe4a2b6116d47fb3c7f1012"; + sha256 = "1p1nic5i2z1ryr6c45lv2sgyzx80arib3723hzl0g9cp46fi9dbm"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/f082bfb480649d21f586b7eb331c19d57e7a84cf/recipes/org-web-tools"; sha256 = "19zpspap85fjqg5a20ps34rcigb0ws986pj6dzd7xik8s6ia29s7"; name = "recipe"; }; - packageRequires = [ dash emacs esxml org s ]; + packageRequires = [ dash emacs esxml org request s ]; meta = { homepage = "https://melpa.org/#/org-web-tools"; license = lib.licenses.free; @@ -71770,12 +73765,12 @@ melpaBuild { pname = "org-wild-notifier"; ename = "org-wild-notifier"; - version = "20180221.2025"; + version = "20181128.259"; src = fetchFromGitHub { owner = "akhramov"; repo = "org-wild-notifier.el"; - rev = "d0df145d9bbb72b2c315b7d8007cb6a59fea2095"; - sha256 = "1xcnb5x539776b6ljd9qyl9jadp2r4qg805m4m8yfz9sk00dv7yl"; + rev = "12fd7a4994ee386b71b7d81f621ead7face60014"; + sha256 = "0pnsz3w5h3x7si1s8fqlnnvsrwn2qnc6lr7rpfgmsvm3xqcgvrp0"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/114552a24f73f13b253e3db4885039b680f6ef33/recipes/org-wild-notifier"; @@ -71856,12 +73851,12 @@ melpaBuild { pname = "org2ctex"; ename = "org2ctex"; - version = "20171016.2343"; + version = "20181011.1851"; src = fetchFromGitHub { owner = "tumashu"; repo = "org2ctex"; - rev = "1b74aa9cf45de224ffd6aa9b93f0debddc2b48bc"; - sha256 = "17qkz3ja87hhq41hvlxvdzqipmi1gn38khd00dshsxhk5hg7i99a"; + rev = "2143992462594ce63733305f75f7c7d08123710a"; + sha256 = "0xrg66yx4xrmkswbapaz21q4i6qm2199zvxqvgaxd8qyk19fc46c"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/8f77fe537ca8ee2ddb6e3efe71f3b3c560c52c7d/recipes/org2ctex"; @@ -72037,12 +74032,12 @@ melpaBuild { pname = "organize-imports-java"; ename = "organize-imports-java"; - version = "20180623.1209"; + version = "20181228.113"; src = fetchFromGitHub { owner = "jcs090218"; repo = "organize-imports-java"; - rev = "cd21c23f903384ffe0eca5e6511bdf893457ab19"; - sha256 = "196rwbj8ayccrm7qz72fxk5lngpi00vg9hn4v05krwfhg496yp0k"; + rev = "11a4c4cceb0a787d3d8ae22dc54b55bfd59bea72"; + sha256 = "0bfp2pn9jvrpgrymg8xlpn0ccd7whsazsjzmwsdb2cs5azbrq1py"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/ad0242f941ff44b4897c94d336bc0af498582dd7/recipes/organize-imports-java"; @@ -72093,12 +74088,12 @@ melpaBuild { pname = "orgit"; ename = "orgit"; - version = "20180318.1301"; + version = "20181211.1108"; src = fetchFromGitHub { owner = "magit"; repo = "orgit"; - rev = "d909f92d3b1b42184143fd5e6d4c6a2762477ab7"; - sha256 = "1jdc874bxkpbfpllak3vmfsn82p930s565bzff341vzv7aw2528c"; + rev = "ea79e0567ae65fc922fcb05da0f7f4af8eae1973"; + sha256 = "1ywavzki510rslsgfm0cnn3mlh644p61ha2nfb715xhkg7cd3j9g"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/73b5f7c44c90540e4cbdc003d9881f0ac22cc7bc/recipes/orgit"; @@ -72607,6 +74602,32 @@ license = lib.licenses.free; }; }) {}; + outline-minor-faces = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "outline-minor-faces"; + ename = "outline-minor-faces"; + version = "20181122.321"; + src = fetchFromGitHub { + owner = "tarsius"; + repo = "outline-minor-faces"; + rev = "8788f3e6f922f54b4eccfb80e4c246203a7e81c3"; + sha256 = "1ms4mgh8jlvyhdsx5166jqfjdx6rqfbhaqzfrzplgcn6v37097l4"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/f252e45e8bd6e8af1267755d108f378a974ddaf1/recipes/outline-minor-faces"; + sha256 = "1728imdqmmfqw5f67w8xsailn2b09y4xgdr769pd6kx8z6lsi8zb"; + name = "recipe"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://melpa.org/#/outline-minor-faces"; + license = lib.licenses.free; + }; + }) {}; outline-toc = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -72691,12 +74712,12 @@ melpaBuild { pname = "outorg"; ename = "outorg"; - version = "20170414.1215"; + version = "20181224.121"; src = fetchFromGitHub { owner = "alphapapa"; repo = "outorg"; - rev = "78b0695121fb974bc4e971eb4ef7f8afd6d89d64"; - sha256 = "03aclh4m3f7rb821gr9pwvnqkkl91px3qxdcarpf3ypa1x4fxvlj"; + rev = "91065d2c1700e8da0ca360373391f1d8741128e6"; + sha256 = "1dqkyw3ll370j23r2yz51yc973a8ky5prmfgl79idv4rjzc5g72q"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/8edf78a0ecd2ff8e6e066b80751a31e11a068c3f/recipes/outorg"; @@ -72744,12 +74765,12 @@ melpaBuild { pname = "outshine"; ename = "outshine"; - version = "20180625.1259"; + version = "20190102.1437"; src = fetchFromGitHub { owner = "alphapapa"; repo = "outshine"; - rev = "8712df02b97a148e11de2761f3e707623db6f9c2"; - sha256 = "18xpc0wa2xwb9f3lkmrvfd6wh42ca2msx5rwcwy9sra0x7qqiacf"; + rev = "1c3e1306a8ad20c201aac1ffabb005be86ea8c62"; + sha256 = "0dm7z4zl484vyxv2aiy8pvgkrmnxgzcp2jxixcq00f9nlv4mmb7x"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/8edf78a0ecd2ff8e6e066b80751a31e11a068c3f/recipes/outshine"; @@ -72879,12 +74900,12 @@ melpaBuild { pname = "ox-asciidoc"; ename = "ox-asciidoc"; - version = "20171111.354"; + version = "20181229.2220"; src = fetchFromGitHub { owner = "yashi"; repo = "org-asciidoc"; - rev = "e75d9565dd07dc59d11fa92d392ab47cecb3c902"; - sha256 = "1irv8k8l99kk5qqgapj1bfg9ppnd4fkkagm96mgxf0bxax0pblhn"; + rev = "e931362e641f97d17dc738d22bb461e54045786d"; + sha256 = "045kci7xvlp0kg8gmplnybc7ydv66hkl88dxgd113ac7ipf9zir7"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/3b268064f09ae5c3d15064b7d197c7af767fb278/recipes/ox-asciidoc"; @@ -72959,12 +74980,12 @@ melpaBuild { pname = "ox-epub"; ename = "ox-epub"; - version = "20171202.1713"; + version = "20181101.1154"; src = fetchFromGitHub { owner = "ofosos"; repo = "ox-epub"; - rev = "7991155e4b80bafee616108014be5281c22bae83"; - sha256 = "09di3qq0nc9m3dnqik392vbdps829wlkxdsjlcpdm0dfms9wq10v"; + rev = "a66eeb00daa01ad403ac1a1db953ddbf9054be07"; + sha256 = "0ws2dpybrafck07q12w0avxglwr7crf4xcqxqnp48sj993v2qggx"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/c3ac31dfef00e83fa6b716ea006f35afb5dc6cd5/recipes/ox-epub"; @@ -73037,12 +75058,12 @@ melpaBuild { pname = "ox-hugo"; ename = "ox-hugo"; - version = "20180915.2"; + version = "20181106.1550"; src = fetchFromGitHub { owner = "kaushalmodi"; repo = "ox-hugo"; - rev = "bdc20fb5bc3be9830d9265d75ebeb1cf7dffc7b9"; - sha256 = "16ifi5gnp401rqpdqp0rgrdzdq7l0vmi72rsqv4m4p4hvvrkxzgs"; + rev = "7fb284ec4b7f47ff1286598220650c5b24b56b45"; + sha256 = "159anw8vdkm4s72jih48y5nrbq9rz6ii3dja12d444hg2idiimza"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/1e1240bb7b5bb8773f804b987901566a20e3e8a9/recipes/ox-hugo"; @@ -73162,6 +75183,33 @@ license = lib.licenses.free; }; }) {}; + ox-mdx-deck = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild + , ox-hugo }: + melpaBuild { + pname = "ox-mdx-deck"; + ename = "ox-mdx-deck"; + version = "20181115.1047"; + src = fetchFromGitHub { + owner = "WolfeCub"; + repo = "ox-mdx-deck"; + rev = "f3dbc35870b69a5d8971b1647da8c5468f520c5d"; + sha256 = "0v82d3ylmrh6pbha4kxs3lif40jfa3sd0adqarmz7yyqccv9ixkk"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/13d1a86dfe682f65daf529f9f62dd494fd860be9/recipes/ox-mdx-deck"; + sha256 = "1k41sbqcfrj485ps11f6xdb1kxp7kh22k0zhn9vrjb5mxwdilfyl"; + name = "recipe"; + }; + packageRequires = [ emacs ox-hugo ]; + meta = { + homepage = "https://melpa.org/#/ox-mdx-deck"; + license = lib.licenses.free; + }; + }) {}; ox-mediawiki = callPackage ({ cl-lib ? null , fetchFromGitHub , fetchurl @@ -73378,6 +75426,86 @@ license = lib.licenses.free; }; }) {}; + ox-slack = callPackage ({ fetchFromGitHub + , fetchurl + , lib + , melpaBuild + , org + , ox-gfm }: + melpaBuild { + pname = "ox-slack"; + ename = "ox-slack"; + version = "20181119.331"; + src = fetchFromGitHub { + owner = "titaniumbones"; + repo = "ox-slack"; + rev = "96d90914e6df1a0141657fc51f1dc5bb8f1da6bd"; + sha256 = "1cda5c35wm7aqyj7yj80wkwb79dgzlzis1dlpysdxv30ahcf4w8p"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/55fda67a19f8799f00c8304a14ab88dde236aa48/recipes/ox-slack"; + sha256 = "0ggw64lx93crfzm1sfwqhsfhaprkbyrjay88nyn43frf7c5l4a63"; + name = "recipe"; + }; + packageRequires = [ org ox-gfm ]; + meta = { + homepage = "https://melpa.org/#/ox-slack"; + license = lib.licenses.free; + }; + }) {}; + ox-slimhtml = callPackage ({ cl-lib ? null + , emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "ox-slimhtml"; + ename = "ox-slimhtml"; + version = "20181219.50"; + src = fetchFromGitHub { + owner = "balddotcat"; + repo = "ox-slimhtml"; + rev = "a764ef64235845e4f5cfd73244d6cf1e7fee903b"; + sha256 = "14h0kks7i2k53fwbsqb4giafacm58inppqpr5mbj904cy146g29f"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/6fae8e3c4abd37a651d4cbdb337a74f1a7c7366a/recipes/ox-slimhtml"; + sha256 = "16jrw8n26iy69ibr29bp3pqp4lm66alihks37qipd2g5grqqfdnd"; + name = "recipe"; + }; + packageRequires = [ cl-lib emacs ]; + meta = { + homepage = "https://melpa.org/#/ox-slimhtml"; + license = lib.licenses.free; + }; + }) {}; + ox-spectacle = callPackage ({ fetchFromGitHub + , fetchurl + , lib + , melpaBuild + , org }: + melpaBuild { + pname = "ox-spectacle"; + ename = "ox-spectacle"; + version = "20181211.153"; + src = fetchFromGitHub { + owner = "lorniu"; + repo = "ox-spectacle"; + rev = "9d3ec9a6326289074d8620e97d65e3105307ff51"; + sha256 = "1gm8wwpsq10cfppzl104g3x2g9bha1209p2n8mj9azv71b9mszqx"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/f441e1b3ee30065f8a68c9b0b45d9db0cac8a289/recipes/ox-spectacle"; + sha256 = "1nf4765dihlcjbifhb9dinqin27ivqj2s8wzh1hj4vc3n8mdx5pr"; + name = "recipe"; + }; + packageRequires = [ org ]; + meta = { + homepage = "https://melpa.org/#/ox-spectacle"; + license = lib.licenses.free; + }; + }) {}; ox-textile = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -73536,6 +75664,33 @@ license = lib.licenses.free; }; }) {}; + ox-wk = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild + , org }: + melpaBuild { + pname = "ox-wk"; + ename = "ox-wk"; + version = "20181111.134"; + src = fetchFromGitHub { + owner = "w-vi"; + repo = "ox-wk.el"; + rev = "9fc37e7e2f789b0ba07cb117ea1e1dcd14a2fd83"; + sha256 = "00wsx21nmnvci2wfvxaci1kdxplavi2a4dw8ahvl7ncr3b60219f"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/0947993df2d9bee493c2c25760f1ac5bcc1136ac/recipes/ox-wk"; + sha256 = "0rb4xkkqb65ly01lb1gl3gyz4yj9hzv4ydbdzsbvmpj0hrdw5nv3"; + name = "recipe"; + }; + packageRequires = [ emacs org ]; + meta = { + homepage = "https://melpa.org/#/ox-wk"; + license = lib.licenses.free; + }; + }) {}; p4 = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -73586,6 +75741,59 @@ license = lib.licenses.free; }; }) {}; + pacfiles-mode = callPackage ({ cl-lib ? null + , emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "pacfiles-mode"; + ename = "pacfiles-mode"; + version = "20181028.1044"; + src = fetchFromGitHub { + owner = "UndeadKernel"; + repo = "pacfiles-mode"; + rev = "ff58f387e0f85ca20c4c9f119bf13303bf8b5a76"; + sha256 = "1my9qhnla61wgrhf0izjx0kyjrxwyz3cfh3xp80mmnxhxrrf21kl"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/bec20443188d9218235c4b31840544a7b1e0690d/recipes/pacfiles-mode"; + sha256 = "08yc3w7zvckg8s1g707hvbbkvi2k52jrk2iwlj0sk22ih3q3yaa9"; + name = "recipe"; + }; + packageRequires = [ cl-lib emacs ]; + meta = { + homepage = "https://melpa.org/#/pacfiles-mode"; + license = lib.licenses.free; + }; + }) {}; + pack = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "pack"; + ename = "pack"; + version = "20181228.2137"; + src = fetchFromGitHub { + owner = "10sr"; + repo = "pack-el"; + rev = "ef811927254b0fea170e2f2ddb94f6dd7c356dde"; + sha256 = "0bza802nzncmpnnzzrfqk4b8svbmgjnhrl28mvagi42wci19qf0x"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/96f55c1f15ca24134da378a1ea31f7bb31c84ea9/recipes/pack"; + sha256 = "0lwdhfrpqwpqqg3yhcyj11jv2mm8k9k54qdxlhdi8sxj1fdxmanw"; + name = "recipe"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://melpa.org/#/pack"; + license = lib.licenses.free; + }; + }) {}; package-build = callPackage ({ cl-lib ? null , fetchFromGitHub , fetchurl @@ -73594,12 +75802,12 @@ melpaBuild { pname = "package-build"; ename = "package-build"; - version = "20180806.1922"; + version = "20181125.1820"; src = fetchFromGitHub { owner = "melpa"; repo = "package-build"; - rev = "dfcb7f0cdd949a55ad023fb76ce2ea66e149d762"; - sha256 = "11qw5f2gfcf1s45z1v25g0bngcxwp6l9g98xf2aydh7p1pvpwpjp"; + rev = "12b1b0670fb6d1e1a646bd7282e8df61e878c016"; + sha256 = "0zfqn63i0bar16ifs4c8lnldrsmk85sbgs3nh1972f2xwxc2rmr5"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/948fb86b710aafe6bc71f95554655dfdfcab0cca/recipes/package-build"; @@ -73646,16 +75854,16 @@ melpaBuild { pname = "package-lint"; ename = "package-lint"; - version = "20180608.2119"; + version = "20181228.1510"; src = fetchFromGitHub { owner = "purcell"; repo = "package-lint"; - rev = "318a608ff94229dfd2e953e4fd6f37bab27adfaa"; - sha256 = "1ib41dp1dafnkmjga2imhgpgxmwrn4rsi72ylwhh6y9s7a55i8zp"; + rev = "4c90df4919f7b96921a939b3bd88bedfd08d041e"; + sha256 = "0nhznvsl3l3v7w5x2afw0ay31r6jrdvgr1ys9mhcmd1fsk57bj2r"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/9744d8521b4ac5aeb1f28229c0897af7260c6f78/recipes/package-lint"; - sha256 = "0w7nkj4yz5yqmhr3mr7kxa6aqqfs75m3l2578s39940a5sdzirwy"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/dbfb0250a58b2e31c32ff1496ed66a3c5439bd67/recipes/package-lint"; + sha256 = "05akg9cgcqbgja966iv2j878y14d5wvky6m9clkfbw5wyg66xpr0"; name = "recipe"; }; packageRequires = [ cl-lib emacs ]; @@ -73664,6 +75872,58 @@ license = lib.licenses.free; }; }) {}; + package-lint-flymake = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild + , package-lint }: + melpaBuild { + pname = "package-lint-flymake"; + ename = "package-lint-flymake"; + version = "20181117.56"; + src = fetchFromGitHub { + owner = "purcell"; + repo = "package-lint"; + rev = "83f34f747a13633c92210e6110e3c5377397761c"; + sha256 = "0mljhvc03a8fj3zn5rz8i3mfcb8vd4xfaxmb7m7h9gr8ap3lwz7g"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/dbfb0250a58b2e31c32ff1496ed66a3c5439bd67/recipes/package-lint-flymake"; + sha256 = "076v3xvbxym7dwwl95j8kynj9kj2xw3gzq6qv6qkm0xls7df4yjz"; + name = "recipe"; + }; + packageRequires = [ emacs package-lint ]; + meta = { + homepage = "https://melpa.org/#/package-lint-flymake"; + license = lib.licenses.free; + }; + }) {}; + package-plus = callPackage ({ fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "package-plus"; + ename = "package+"; + version = "20170815.1956"; + src = fetchFromGitHub { + owner = "zenspider"; + repo = "package"; + rev = "09f37a21256223a770d3b6a6174cb7da427720c3"; + sha256 = "149ba7nq380azi4rypvk0xqdv3bin2sqvab9q1kcwg3kidhspx8a"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/49cfbbc4535aa7e175aa819d67b8aa52a6f94384/recipes/package+"; + sha256 = "1mbsxr4llz8ny7n7w3lykld9yvbaywlfqnvr9l0aiv9rvmdv03bn"; + name = "recipe"; + }; + packageRequires = []; + meta = { + homepage = "https://melpa.org/#/package+"; + license = lib.licenses.free; + }; + }) {}; package-safe-delete = callPackage ({ emacs , epl , fetchFromGitHub @@ -73833,12 +76093,12 @@ melpaBuild { pname = "page-break-lines"; ename = "page-break-lines"; - version = "20171210.31"; + version = "20181221.1508"; src = fetchFromGitHub { owner = "purcell"; repo = "page-break-lines"; - rev = "fd3b7e38ad8747cd009ead7ef1bb150849ccc693"; - sha256 = "0ik5v2kd0l5a6sznld5ncdb4lsyqbbw7axs0qwxc968b540k9zq5"; + rev = "87e801efb816b24e83ebf84c052001e178e180bc"; + sha256 = "0y2ag7gfspcndjmap87n8mxn5kglb80fzpdmramzjjsrcx7dwdix"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/855ea20024b606314f8590129259747cac0bcc97/recipes/page-break-lines"; @@ -73993,12 +76253,12 @@ melpaBuild { pname = "panda-theme"; ename = "panda-theme"; - version = "20180807.443"; + version = "20181128.938"; src = fetchFromGitHub { owner = "jamiecollinson"; repo = "emacs-panda-theme"; - rev = "53b4cbb6bfdd531a8366bf1d01eede420e1f93c9"; - sha256 = "1l7vc6m6iklcdm3hw8h54q71wfk055mmmmzyp0hbvrnlicg5yvr9"; + rev = "60aa47c7a930377807da0d601351ad91e8ca446a"; + sha256 = "169khnipnxv0y412wc2r5nsh9d9zwpdyip0l9ayyzb19zdjl1l47"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/a90ca1275ceab8e1ea4fdfa9049fbd24a5fd0bf5/recipes/panda-theme"; @@ -74046,12 +76306,12 @@ melpaBuild { pname = "pandoc-mode"; ename = "pandoc-mode"; - version = "20180727.1501"; + version = "20180917.21"; src = fetchFromGitHub { owner = "joostkremers"; repo = "pandoc-mode"; - rev = "a3f25fec81022a76bc6aab236548d352b2a420cf"; - sha256 = "0dfqgan4qwk826jjzyhdlihfq9sxnxgays83fb2150v29yjyj0n6"; + rev = "d594ce399fc75eb553a6d8572713b827f744d95b"; + sha256 = "1n3rbjvaqf6gzqgqsfcn989cwhi2kva4dr9xy0vdhqxikwm5gkaq"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/4e39cd8e8b4f61c04fa967def6a653bb22f45f5b/recipes/pandoc-mode"; @@ -74156,12 +76416,12 @@ melpaBuild { pname = "paradox"; ename = "paradox"; - version = "20180216.334"; + version = "20181027.1534"; src = fetchFromGitHub { owner = "Malabarba"; repo = "paradox"; - rev = "e5dd26f67ba8fa8ab1631a00ddea4117805b3fd0"; - sha256 = "09x8glw949hivbzikki5blgjkzyws69hck501ym99663k4irdir1"; + rev = "798bdabdca6575d677631b1c482e975c9372d536"; + sha256 = "15xxfy947sgm8lcg1pghi8i0n0galzfsvvib8bfmgi4zs7dkvh0g"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/1e6aed365c42987d64d0cd9a8a6178339b1b39e8/recipes/paradox"; @@ -74353,6 +76613,32 @@ license = lib.licenses.free; }; }) {}; + parrot = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "parrot"; + ename = "parrot"; + version = "20181026.912"; + src = fetchFromGitHub { + owner = "dp12"; + repo = "parrot"; + rev = "e9fe686408214884b20c65284a6a595e1c755794"; + sha256 = "079k4j0lcaj0lff1llp29bj5ah2b59byw9lw3jjw9wkl9px87r0m"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/b1b393ffb9b7691e8fc99bee5fc676463038a68d/recipes/parrot"; + sha256 = "0m67b80vc3qivcxs4w6fpzdg6h9d8s75251rlhnbc0xp7271zgnk"; + name = "recipe"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://melpa.org/#/parrot"; + license = lib.licenses.free; + }; + }) {}; parse-csv = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -74386,12 +76672,12 @@ melpaBuild { pname = "parsebib"; ename = "parsebib"; - version = "20180116.627"; + version = "20181219.128"; src = fetchFromGitHub { owner = "joostkremers"; repo = "parsebib"; - rev = "683c970a6fb51591bc88ee80e295fedee876e044"; - sha256 = "0mpgyy9qfb5x4fvlmb274hgayjbwf0bgk65dxyx31zikjwpcd56p"; + rev = "9a5f1730b8ef1fb6c29262a8ba79f8136e5548d4"; + sha256 = "1d9x57njgl16yyjmscmai5ml9wrqfh35ilcz2s674s8fa4krqw72"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/c39633957475dcd6a033760ba20a957716cce59c/recipes/parsebib"; @@ -74495,12 +76781,12 @@ melpaBuild { pname = "pass"; ename = "pass"; - version = "20180201.451"; + version = "20190102.511"; src = fetchFromGitHub { owner = "NicolasPetton"; repo = "pass"; - rev = "da08fed8dbe1bac980088d47b01f90154dbb8d8b"; - sha256 = "1j5fdcqmqw62zvmwd80bjvkrr5vg59l5k6673hvvhjx77c8nvidv"; + rev = "cd79375005a1c1d8b45d38fefa91eef0bd23182c"; + sha256 = "05h4hacv3yygyjcjj004qbyqjpkl4pyhwgp25gsz8mw5c66l70cx"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/428c2d53db69bed8938ec3486dfcf7fc048cd4e8/recipes/pass"; @@ -74522,12 +76808,12 @@ melpaBuild { pname = "passmm"; ename = "passmm"; - version = "20180622.1626"; + version = "20181130.812"; src = fetchFromGitHub { owner = "pjones"; repo = "passmm"; - rev = "f6130373b84a2d7180a04f6bd533148aa778d8fc"; - sha256 = "19sszl0vjsy0wk0bysm938c3sj458faj4dhw8fqb2nhm6l5v194r"; + rev = "b25a92048c788a8477cc5ffe14c0c4a4df19d79a"; + sha256 = "1jg2rs010fmw10ld0bfl6x7af3v9yqfy9ga5ixmam3qpilc8c4fw"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/8ae2a1e10375f9cd55d19502c9740b2737eba209/recipes/passmm"; @@ -74627,12 +76913,12 @@ melpaBuild { pname = "password-store"; ename = "password-store"; - version = "20170829.1633"; + version = "20181031.740"; src = fetchFromGitHub { owner = "zx2c4"; repo = "password-store"; - rev = "65cead8c0fdb07ce3821f6b97bdcb32684d0c3f7"; - sha256 = "0rm364l9mg2gl16ng5zd02gkfq8592mhrp81sk1v0wwh8wlyrzrh"; + rev = "d29a389a40524c684595f51bb937f66958bc14ea"; + sha256 = "17g43i0if9nggcq6005iyxxy9my8s15ihc2nzwjgqzhy3svh5xvn"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/207f8ec84572176749d328cb2bbc4e87c36f202c/recipes/password-store"; @@ -74855,6 +77141,32 @@ license = lib.licenses.free; }; }) {}; + path-helper = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "path-helper"; + ename = "path-helper"; + version = "20181208.1429"; + src = fetchFromGitHub { + owner = "arouanet"; + repo = "path-helper"; + rev = "34538affb3f341b3c56a875bb094ddb2b859a8ef"; + sha256 = "0qzsalbxksb44f0x7fndl2qyp1yf575qs56skfzmpnpa82dck88g"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/a70b1a41e45d215be27d392429dcd4f82904295f/recipes/path-helper"; + sha256 = "0fff3l88jgflqpxlcfxfyp2prc2ichajvm7c8i19qhvw70sbasny"; + name = "recipe"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://melpa.org/#/path-helper"; + license = lib.licenses.free; + }; + }) {}; pathify = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -74939,12 +77251,12 @@ melpaBuild { pname = "pc-bufsw"; ename = "pc-bufsw"; - version = "20180107.1040"; + version = "20181221.56"; src = fetchFromGitHub { owner = "ibukanov"; repo = "pc-bufsw"; - rev = "b99ba484e18ebf2b88654704146746490bb7625f"; - sha256 = "184nnkfh7n6vbbmvykvklr1dn3dcwjj3w800irdg55bbnkxxzkj4"; + rev = "762d47b2f278c072643cf2a1ddc785516483d74a"; + sha256 = "1by9p0j6c21y04cc4ls7f87gks631lv1mxk0aqhh41rml5kj4l22"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/5f2bbd34d673935846c286e73a1e2efaa00ab01a/recipes/pc-bufsw"; @@ -75066,12 +77378,12 @@ melpaBuild { pname = "pcmpl-homebrew"; ename = "pcmpl-homebrew"; - version = "20170110.1609"; + version = "20181229.616"; src = fetchFromGitHub { owner = "kaihaosw"; repo = "pcmpl-homebrew"; - rev = "d001520fec4715c9a4c73f02fd948bac371cc50a"; - sha256 = "0mw8w2jd9qgyhxdbnvjays5q6c83i0sb3diizrkq23axprfg6d70"; + rev = "ad74a52b80823f2264962bbe392701da2577ee60"; + sha256 = "03wf8js64rgwc29phmqwd9q6aahlnnjwawc5hp11gv9bdaz61mx5"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/6440f81aed1fcddcaf7afeedb74520e605211986/recipes/pcmpl-homebrew"; @@ -75094,12 +77406,12 @@ melpaBuild { pname = "pcmpl-pip"; ename = "pcmpl-pip"; - version = "20171201.33"; + version = "20181229.620"; src = fetchFromGitHub { owner = "kaihaosw"; repo = "pcmpl-pip"; - rev = "8b001b579fc015f80ee0e4f3211058b830bf7c47"; - sha256 = "0f8s2gn82dhyrnv0j688697xy0ig2yhn5m94gwhcllxq5a3yhbdg"; + rev = "ebb672d4494f876f611639e65df4e28e566c06b5"; + sha256 = "0m0x41ymjqax7y7cy6ssgnrl708vr7xazac3nyznwfdsls1mzmbg"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/6440f81aed1fcddcaf7afeedb74520e605211986/recipes/pcmpl-pip"; @@ -75226,12 +77538,12 @@ melpaBuild { pname = "pdf-tools"; ename = "pdf-tools"; - version = "20180428.827"; + version = "20181221.1113"; src = fetchFromGitHub { owner = "politza"; repo = "pdf-tools"; - rev = "5209f620c85e6c7c23e96768ebae6b5c6f79f3e1"; - sha256 = "0dv3phzjp6z2f5bbl6m7ll073p81w1fkq543mp44g2cqb9dvq24s"; + rev = "a4cd69ea1d50b8e74ea515eec95948ad87c6c732"; + sha256 = "0m9hwihj2n8vv7hmcg6ax5sjxlmsb7wgsd6wqkp01x1xb5qjqhpm"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/8e3d53913f4e8a618e125fa9c1efb3787fbf002d/recipes/pdf-tools"; @@ -75244,6 +77556,32 @@ license = lib.licenses.free; }; }) {}; + pdfgrep = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "pdfgrep"; + ename = "pdfgrep"; + version = "20181007.1028"; + src = fetchFromGitHub { + owner = "jeremy-compostella"; + repo = "pdfgrep"; + rev = "e251cd5c88a4ba5cb69008ba412d329f4d59e1d2"; + sha256 = "0fy6h8ys490kw63l9jigsa0cf1psybyd9gcljpddnjd3nhkdwikw"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/55b0c24f883fe589d1159ce3845cf250a0f47feb/recipes/pdfgrep"; + sha256 = "0q511l57xv1s6z496jrlz6j2nf0fync0dlbm4r800p49lbh4abl3"; + name = "recipe"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://melpa.org/#/pdfgrep"; + license = lib.licenses.free; + }; + }) {}; peacock-theme = callPackage ({ emacs , fetchFromGitHub , fetchurl @@ -75481,12 +77819,12 @@ melpaBuild { pname = "persistent-scratch"; ename = "persistent-scratch"; - version = "20180425.1811"; + version = "20180929.713"; src = fetchFromGitHub { owner = "Fanael"; repo = "persistent-scratch"; - rev = "0bfd717d28ce9e262741b06341c61306602c7711"; - sha256 = "1fq3m3p81rrvv1yp0cxfznphx7gava11sn09x706lmm1js62jnip"; + rev = "2e6678a837db85e68da713bbd4772c7fb88d83d4"; + sha256 = "0ipr2cnw5b26q560c82mm6bmkx9clw1mrndycs2qz894y53dzlmk"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/f1e32702bfa15490b692d5db59e22d2c07b292d1/recipes/persistent-scratch"; @@ -75561,12 +77899,12 @@ melpaBuild { pname = "persp-mode"; ename = "persp-mode"; - version = "20180604.1018"; + version = "20180930.1020"; src = fetchFromGitHub { owner = "Bad-ptr"; repo = "persp-mode.el"; - rev = "cc1d16aeb17f45d7141fcdc45f8bbffa03b3127f"; - sha256 = "1qjnzdrx5a5nv742wvcv50jgjis6a44xwl29gj4k9ix5phgc2n9l"; + rev = "689f63e7370cd9424d84b9f7b2eb3d1955443313"; + sha256 = "141yakk7xfs0b58far1zqmwimim139bbzk0ymyzgghf5vyb5lxin"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/caad63d14f770f07d09b6174b7b40c5ab06a1083/recipes/persp-mode"; @@ -75643,12 +77981,12 @@ melpaBuild { pname = "perspective"; ename = "perspective"; - version = "20180717.1403"; + version = "20181119.1714"; src = fetchFromGitHub { owner = "nex3"; repo = "perspective-el"; - rev = "8e2f122de408d7866136dd861d513a9575cf32e6"; - sha256 = "0pd5sqrrz6y3md20yh6ffy32jdcgb1gc9b4j14pm6r54bqxik68h"; + rev = "2c8cf56d170c3eb1fcc1a8fe41026b780e0ffead"; + sha256 = "0xlib2f8fjmwk8r0p6r8y5ni687xmixqp9s40rgxc15ikin54hhf"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/855ea20024b606314f8590129259747cac0bcc97/recipes/perspective"; @@ -75696,12 +78034,12 @@ melpaBuild { pname = "pfuture"; ename = "pfuture"; - version = "20180908.404"; + version = "20180922.615"; src = fetchFromGitHub { owner = "Alexander-Miller"; repo = "pfuture"; - rev = "7e312204f97d4fd3d602d3cf72e8340513a9ab85"; - sha256 = "0h9gskp7d8l1a44g9ks49akrp8ansyfpnlg6mfqb255nnrnc2vdj"; + rev = "c06e78b37ac3fba72ea446f11da38a6a5cba428c"; + sha256 = "0239s4n8na7jxkc51zy8lnwdcncvr0l692sy0lha7pp0a620zc2d"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/5fb70c9f56a58b5c7a2e8b69b191aa2fc7c9bcc8/recipes/pfuture"; @@ -76218,12 +78556,12 @@ melpaBuild { pname = "php-mode"; ename = "php-mode"; - version = "20180828.2220"; + version = "20181227.1807"; src = fetchFromGitHub { owner = "emacs-php"; repo = "php-mode"; - rev = "16b3f7c1ae894c74b4f59026470b0183bf1bc188"; - sha256 = "0mc5nk8kabk6fp0xdbwwwhahxi6j7padm09g094hjgm2v293prxs"; + rev = "553977a423442f2b8a98de954ce62d224c7949f4"; + sha256 = "186l88y4mlljdrnw4a114caa6wm5726dkvipva2k3i2bpww828c5"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/2e41dc09413eaa93704e7d9f55bd2bd01f658806/recipes/php-mode"; @@ -76263,26 +78601,28 @@ }) {}; php-runtime = callPackage ({ cl-lib ? null , emacs + , f , fetchFromGitHub , fetchurl , lib - , melpaBuild }: + , melpaBuild + , s }: melpaBuild { pname = "php-runtime"; ename = "php-runtime"; - version = "20180110.934"; + version = "20181212.1025"; src = fetchFromGitHub { owner = "emacs-php"; repo = "php-runtime.el"; - rev = "fa4312863245511462b75cb31df2f8558288f4df"; - sha256 = "1glwy0cgnn0z4rnd45pqy0bmyaddhxfjlj778hz7ghy40h9kqbdn"; + rev = "017e0e70f07d6b25e37d5c5f4d271a914b677631"; + sha256 = "1c74xd6p3hfanpd4920agvnar9rjbyvz33kwrzw9vywzrs68ncvh"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/615c9ac208d8c20082a8ac83e49e93d99e2cbc89/recipes/php-runtime"; sha256 = "0dvnwajrjsgyqzglzpkx9vwx3f55mrag6dsbdjqc9vvpvxhmgfwb"; name = "recipe"; }; - packageRequires = [ cl-lib emacs ]; + packageRequires = [ cl-lib emacs f s ]; meta = { homepage = "https://melpa.org/#/php-runtime"; license = lib.licenses.free; @@ -76317,6 +78657,7 @@ }; }) {}; phpactor = callPackage ({ cl-lib ? null + , composer , emacs , f , fetchFromGitHub @@ -76326,19 +78667,19 @@ melpaBuild { pname = "phpactor"; ename = "phpactor"; - version = "20180823.438"; + version = "20181223.16"; src = fetchFromGitHub { owner = "emacs-php"; repo = "phpactor.el"; - rev = "3a37596c4f663419520f864d682250116252abcd"; - sha256 = "0jwxpygs0fw8261saafifpznck9ykzs68dpq9hr7m09qsgr4gcbi"; + rev = "c468ab22d3d291b03a7a0b2b929dcb1dfe0f4714"; + sha256 = "162zzsm2hmfvdkf7vv8nh628d5156f2hbcv1ds8fjzb93r09h0aw"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/d67b98ecd541c227c011615f67d7a0890f5e1af3/recipes/phpactor"; sha256 = "0w2iszi74y3s6rcn6p2ic545cg319y4jpy83npbh5m98y8jma84m"; name = "recipe"; }; - packageRequires = [ cl-lib emacs f ]; + packageRequires = [ cl-lib composer emacs f ]; meta = { homepage = "https://melpa.org/#/phpactor"; license = lib.licenses.free; @@ -76352,12 +78693,12 @@ melpaBuild { pname = "phpcbf"; ename = "phpcbf"; - version = "20180519.138"; + version = "20181227.2023"; src = fetchFromGitHub { owner = "nishimaki10"; repo = "emacs-phpcbf"; - rev = "a31020fc4c5add7339e009faea66894dc02a77f1"; - sha256 = "04iw5is9h6a0i650mymyxq32z02rzl6k7pvwmv849rka16xhw1aq"; + rev = "fb0bc6073a57126cf1a8404723aa0a715dd761aa"; + sha256 = "0k2wl137nippcfx3g35kfprz2fiv8rbbi7dcpxciwnbqmn6ry7rf"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/77ef54e3fb2715a081786dc54f99ae74def5c77c/recipes/phpcbf"; @@ -76378,12 +78719,12 @@ melpaBuild { pname = "phpstan"; ename = "phpstan"; - version = "20180721.1235"; + version = "20181203.208"; src = fetchFromGitHub { owner = "emacs-php"; repo = "phpstan.el"; - rev = "09102b062b607affc93f2d8a113a9fc9f9cf3016"; - sha256 = "0n21vyvd5c42v03xcfx94dz252z3s413i0f9pwjrssq2yd3x2bgm"; + rev = "abf5c786da4e6a0112aae2ee533ef4003a034497"; + sha256 = "0kkxq59cn13m16q8sjv1byz414h4jwms5li758afc167jqcyz82c"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/5a2b6cc39957e6d7185bd2bdfa3755e5b1f474a6/recipes/phpstan"; @@ -76657,6 +78998,32 @@ license = lib.licenses.free; }; }) {}; + pine-script-mode = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "pine-script-mode"; + ename = "pine-script-mode"; + version = "20181109.1751"; + src = fetchFromGitHub { + owner = "EricCrosson"; + repo = "pine-script-mode"; + rev = "9176de41a5c80f7b56e41fb7a9ba7350885a2512"; + sha256 = "1kxdrqa420zbl73jlakilvn1ja83vfqnhqdirgfvp23z4xhcddq6"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/287b781147fe41089fa8c76570bc30539e43e5bc/recipes/pine-script-mode"; + sha256 = "0ihijbcx7m4vhxr1fnfkwjdk6ka1mqzxb8z164yh8yn73qs0saiq"; + name = "recipe"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://melpa.org/#/pine-script-mode"; + license = lib.licenses.free; + }; + }) {}; pinot = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -76768,12 +79135,12 @@ melpaBuild { pname = "pip-requirements"; ename = "pip-requirements"; - version = "20180602.1034"; + version = "20181027.929"; src = fetchFromGitHub { owner = "Wilfred"; repo = "pip-requirements.el"; - rev = "4eff2953317272e145649effb1956081a31645ee"; - sha256 = "1hnkfbcsrf69pz71pka4hp8dv4qvq431x5ahind4iwz9lzsfhhwq"; + rev = "216cd1690f80cc965d4ae47b8753fc185f778ff6"; + sha256 = "0da3q0n5nn0l96kk49kanw5knx3jmga439zbmiii76na16bg5y3i"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/5eaf6987f92070ccc33d3e28c6bb2b96f72ba1aa/recipes/pip-requirements"; @@ -76953,12 +79320,12 @@ melpaBuild { pname = "pkgbuild-mode"; ename = "pkgbuild-mode"; - version = "20180723.531"; + version = "20181216.531"; src = fetchFromGitHub { owner = "juergenhoetzel"; repo = "pkgbuild-mode"; - rev = "358911236a070c5ec4e79887d8f45e67e141c547"; - sha256 = "1kksj7w5kyhwc5bd1ys8f41ahai6xm8sdi3i4hj5bxbkskzsix6n"; + rev = "e30e37730b5f30bc0dd5b9328fbf4cb3e6f46fdd"; + sha256 = "1ijx067hlbr4yz9b9h58pwlqd4rgjgm27f5s1f9f3rwb249s36s1"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/ca7bf43ef8893bf04e9658390e306ef69e80a156/recipes/pkgbuild-mode"; @@ -77511,12 +79878,12 @@ melpaBuild { pname = "pocket-reader"; ename = "pocket-reader"; - version = "20180819.1307"; + version = "20181219.130"; src = fetchFromGitHub { owner = "alphapapa"; repo = "pocket-reader.el"; - rev = "0eb2e678b3fdc8899e420e6ecca03a2ada4b6283"; - sha256 = "0060h0g2992iw030qp5fr81gl0cac43dj9w2apzslp7dqmk3d9df"; + rev = "a7f080ec3e9522f942166de61b24a375b8f1c2bb"; + sha256 = "0l7dln7qcrgzm73vk7jp8wr2kibg18973xmdzyyc162hdnlbrpb0"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/835a7bf2f72987183e9d15ada7ae747fb5715c11/recipes/pocket-reader"; @@ -77572,12 +79939,12 @@ melpaBuild { pname = "poet-theme"; ename = "poet-theme"; - version = "20180913.7"; + version = "20190103.302"; src = fetchFromGitHub { owner = "kunalb"; repo = "poet"; - rev = "a419b8faa60c07a1445da3868e88035651137cbd"; - sha256 = "1wbwsq04ld959f7x1h591wrp7a9zpcx9fq8g7da3ihipphvqccp0"; + rev = "c9495b5e7815682582d5b7a439823bbbbfedfb53"; + sha256 = "0mqcph0bygsl97bzbqrbvs1732nfvjjk09zlkwl3vw34fdxgsmg9"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/40bbe29dee56f7989d8e87c03f4842e2b191acc3/recipes/poet-theme"; @@ -77674,12 +80041,12 @@ melpaBuild { pname = "pollen-mode"; ename = "pollen-mode"; - version = "20180404.612"; + version = "20181021.1830"; src = fetchFromGitHub { owner = "lijunsong"; repo = "pollen-mode"; - rev = "df4eab5b490cb478a092e6bab6b07f9e2f9c6fad"; - sha256 = "0x8bnf0n109ard5zdmma04w0wv5jb1r7qh5smsa1kjvws98gnp57"; + rev = "3b57f40f78eb4458e7be41dc4051f9cf0ff6982e"; + sha256 = "0ddi08v94vjrvf6nwk18mppfp17d934r0wksw1h34szi7qf05hx7"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/97bda0616abe3bb632fc4231e5317d9472dfd14f/recipes/pollen-mode"; @@ -77697,28 +80064,66 @@ , fetchurl , lib , melpaBuild + , poly-markdown + , poly-noweb , polymode }: melpaBuild { pname = "poly-R"; ename = "poly-R"; - version = "20180906.1329"; + version = "20181024.1354"; src = fetchFromGitHub { owner = "polymode"; repo = "poly-R"; - rev = "b0518a2768740f97bdc65bf6291241ef143b7abd"; - sha256 = "1ip1awfpq20m6rqxqmsprgfyji9i5np24x2q3fqk8y2pbfigpbaf"; + rev = "b9236aab9043747bf764703e7b84f3c6bb526dec"; + sha256 = "0dipnlk79mnlw3mw9n7cp6dl0j1nfhaf04j8w4mhp4afpkfwbr3c"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/3058351c4500fdcbe7f40b4c96ac8d6de9bbeb1d/recipes/poly-R"; sha256 = "1v2was6pdynwm22b4n2hkwyrr0c0iir9kp1wz4hjab8haqxz68ii"; name = "recipe"; }; - packageRequires = [ emacs polymode ]; + packageRequires = [ emacs poly-markdown poly-noweb polymode ]; meta = { homepage = "https://melpa.org/#/poly-R"; license = lib.licenses.free; }; }) {}; + poly-ansible = callPackage ({ ansible + , ansible-doc + , fetchFromGitLab + , fetchurl + , jinja2-mode + , lib + , melpaBuild + , polymode + , yaml-mode }: + melpaBuild { + pname = "poly-ansible"; + ename = "poly-ansible"; + version = "20181222.717"; + src = fetchFromGitLab { + owner = "mavit"; + repo = "poly-ansible"; + rev = "2cb970a0e27b41ae85bc51d24ef36fa2c7b34bbc"; + sha256 = "04vf6zgcra47j3phxbb43q5sa5ldavnbiwwdlw1xipg44991j6md"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/6d8beef5daa1804f68c30138cb03b5085a282c34/recipes/poly-ansible"; + sha256 = "158z3nbqgrh71myyp4l263lw1gn4iiwxv8pl7fdlyp80hz5zs60y"; + name = "recipe"; + }; + packageRequires = [ + ansible + ansible-doc + jinja2-mode + polymode + yaml-mode + ]; + meta = { + homepage = "https://melpa.org/#/poly-ansible"; + license = lib.licenses.free; + }; + }) {}; poly-erb = callPackage ({ emacs , fetchFromGitHub , fetchurl @@ -77728,12 +80133,12 @@ melpaBuild { pname = "poly-erb"; ename = "poly-erb"; - version = "20180906.1354"; + version = "20181019.702"; src = fetchFromGitHub { owner = "polymode"; repo = "poly-erb"; - rev = "187f9594251b4d15dd52f6ff838439df9b217267"; - sha256 = "0xbb8bz98mj2glhnqhb3jgkwgglmf9hzilhnvq265hza00mkg28p"; + rev = "61fa4640a1cb08120c2c70bfc32029cc79b31b79"; + sha256 = "15k2gmjkn9w5gn7njh8nyr8whhn8xc1hcqqn2as2p1b6m2jh0xcl"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/3058351c4500fdcbe7f40b4c96ac8d6de9bbeb1d/recipes/poly-erb"; @@ -77756,12 +80161,12 @@ melpaBuild { pname = "poly-markdown"; ename = "poly-markdown"; - version = "20180912.1153"; + version = "20181010.1437"; src = fetchFromGitHub { owner = "polymode"; repo = "poly-markdown"; - rev = "fd9e89c08538326843dee6cf45331c674ae99237"; - sha256 = "11f7lnfppis6a8sd3h69v2xs8ra7gzdfmkcbm2wq6sna6m3sn51k"; + rev = "bf41bd2f30066573f562c674d38b9e42a43ed016"; + sha256 = "0w2xy1cksik332qs1i26imxiyd89vbfy3ff7di4b3l14cxz6ybra"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/3058351c4500fdcbe7f40b4c96ac8d6de9bbeb1d/recipes/poly-markdown"; @@ -77783,12 +80188,12 @@ melpaBuild { pname = "poly-noweb"; ename = "poly-noweb"; - version = "20180906.719"; + version = "20190102.1138"; src = fetchFromGitHub { owner = "polymode"; repo = "poly-noweb"; - rev = "cdc7227e1ba2ea9433487e66fd618699cf22c87d"; - sha256 = "13dhf0a4cgrx3s0l12k0ynaiyl2q3b4alpy51rgznfvd45fvjnad"; + rev = "69d3d9720755fe7dd8f248534e6cac786cbf947e"; + sha256 = "0kpw9czl9p39h5qi1cg3059q19499lnd8vwj9hqy7ki01qb6fdw2"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/3058351c4500fdcbe7f40b4c96ac8d6de9bbeb1d/recipes/poly-noweb"; @@ -77810,12 +80215,12 @@ melpaBuild { pname = "poly-org"; ename = "poly-org"; - version = "20180902.1536"; + version = "20181213.950"; src = fetchFromGitHub { owner = "polymode"; repo = "poly-org"; - rev = "7e958ddc40a4d713dec8ce6664b3ae44df2c536c"; - sha256 = "05l7mdifhnirl2kyb62rpp7ij3r54qfa0z5m57yxx6sv0cdy8rx4"; + rev = "588f298eb64b79fe450c56b0e5fd1282cd75eb1e"; + sha256 = "05dimsivc9lraiw7zx4kjz7l3d4cim5sm4y3mhimgmipsk2ps0np"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/3058351c4500fdcbe7f40b4c96ac8d6de9bbeb1d/recipes/poly-org"; @@ -77865,12 +80270,12 @@ melpaBuild { pname = "poly-slim"; ename = "poly-slim"; - version = "20180902.1537"; + version = "20181010.1438"; src = fetchFromGitHub { owner = "polymode"; repo = "poly-slim"; - rev = "cbf6ad711d4e166afc288eef95025d239b8d70ad"; - sha256 = "1x9jkia12h5yrgm7hi5hlj0ffnmc4c9027wj16j528cv1hhs19l1"; + rev = "2216d7edf315ab8df1e01c2a826041bcdb8bcd01"; + sha256 = "0wcfacd5wpi52glfz4snxh8ghff2qlv8d1jwj890297ikmk7mn1g"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/3058351c4500fdcbe7f40b4c96ac8d6de9bbeb1d/recipes/poly-slim"; @@ -77891,12 +80296,12 @@ melpaBuild { pname = "polymode"; ename = "polymode"; - version = "20180912.1154"; + version = "20190102.1110"; src = fetchFromGitHub { owner = "polymode"; repo = "polymode"; - rev = "056ce9ea6e55655065bbbf234a03a04f5d0ed21d"; - sha256 = "0zd97i1n4vqzjsjgn8cmng14qf0843anxp93l88yqmn9f5qzb5l5"; + rev = "c2d950a46c2851a94b7f7c506c572de08acdfd53"; + sha256 = "0r14dga0bxdl4zwwgpvk185axi64w9fsn301slv009756mkbysni"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/3058351c4500fdcbe7f40b4c96ac8d6de9bbeb1d/recipes/polymode"; @@ -78335,12 +80740,12 @@ melpaBuild { pname = "posframe"; ename = "posframe"; - version = "20180901.1905"; + version = "20181214.453"; src = fetchFromGitHub { owner = "tumashu"; repo = "posframe"; - rev = "08ef38d27dad266fb3f666890df4994db2346427"; - sha256 = "056vkjgm9c875ngkzbmm4s7rnzj1hf59jzzkk1ma9fahc7yfinmi"; + rev = "405b5a07aa2cb923f7657a98c7deaf601f5e09a5"; + sha256 = "0nxlzx5f7sysc27gllixri6q7j0vh02lji371cx7idgnzdfrzv2s"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/fa3488f2ede1201faf4a147313456ed90271f050/recipes/posframe"; @@ -78492,12 +80897,12 @@ melpaBuild { pname = "powershell"; ename = "powershell"; - version = "20180616.2328"; + version = "20181011.1251"; src = fetchFromGitHub { owner = "jschaf"; repo = "powershell.el"; - rev = "4e215e4cd683c727315301d1b61bef4f9773abec"; - sha256 = "0dhl3cn2szvrj4084ly1f4fiwgixasvwi6skdchfvzbpx9q05dlv"; + rev = "c9a20e5a8b02dc5d7ccd2b1974eba28a9348ad5e"; + sha256 = "1y8bph4133n4pcvsplni0ahg14ny27vl03jxf5lhhqkh06miqqsg"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/7002c50f2734675134791916aa9d8b82b4582fcb/recipes/powershell"; @@ -78624,12 +81029,12 @@ melpaBuild { pname = "prescient"; ename = "prescient"; - version = "20180823.1838"; + version = "20181220.1624"; src = fetchFromGitHub { owner = "raxod502"; repo = "prescient.el"; - rev = "1e0db9451e75f0db29668bebe98dfa747c6b4bcf"; - sha256 = "0zm9phc4cv7ldgyngcj84fxc1j0nh12c05lxiwv0n1xb8wc6awvf"; + rev = "c395c6dee67cf269be12467b768343fb10f2399f"; + sha256 = "0zh0g9vxgqbs48li91ar5swn9mrskmqc0kk7sbymkclkb60xcjs9"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/ec02349e31531c347e4a43fbde56ae4386898cc6/recipes/prescient"; @@ -78829,14 +81234,14 @@ ename = "private"; version = "20150121.1757"; src = fetchFromGitHub { - owner = "cheunghy"; + owner = "zhangkaiyulw"; repo = "private"; rev = "f57f1c2f6bfe900bd40b252688df4c6ed6a5f44b"; sha256 = "0720vrb9nwy4c069fk7adw5f50g9dji1wra9s3jwazr8jn45k0mn"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/6c4195e20f942f7c9499731f51d3eba14eefd650/recipes/private"; - sha256 = "1glpcwcyndyn683q9mg99hr0h3l8pz7rrhbnfak01v826d5cnk9g"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/6440f81aed1fcddcaf7afeedb74520e605211986/recipes/private"; + sha256 = "1mvma2xgjy9vkh468x80xlri6qfr7d494la1j6r1clkjsn5kg7hr"; name = "recipe"; }; packageRequires = [ aes ]; @@ -79086,12 +81491,12 @@ melpaBuild { pname = "project-abbrev"; ename = "project-abbrev"; - version = "20180705.1954"; + version = "20181206.902"; src = fetchFromGitHub { owner = "jcs090218"; repo = "project-abbrev"; - rev = "ca4bddd72a73d43332c5b262e6a104a341882af5"; - sha256 = "15nbfdc0z4wp8hakrc5m6bqn6klv22xxs3c3z6c49sdrlhqr9jvy"; + rev = "21572d56a70fc95ef2d3782310e634f1a2623bc5"; + sha256 = "0f8vd0yqa7k27jl9hxfqdfk6qs9q8p11j2iabdxi0v3wddhq3s2v"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/11580720cfbbbaeed9d914abb8a48705c195b159/recipes/project-abbrev"; @@ -79140,12 +81545,12 @@ melpaBuild { pname = "project-persist"; ename = "project-persist"; - version = "20150519.1324"; + version = "20180906.602"; src = fetchFromGitHub { owner = "rdallasgray"; repo = "project-persist"; - rev = "a4e5de1833edb60656d8a04357c527d34e81d27c"; - sha256 = "1x7hwda1w59b8hvzxyk996wdz6phs6rchh3f1ydf0ab6x7m7xvjr"; + rev = "26d9435bef44da2a1b0892eba822f9f487b98eec"; + sha256 = "0ja2pnbw11a2gwywfyfbdpk8rkm8imy04wkshpnlh0nwn7lf0clm"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/bd81d1f8a30ed951ed94b9a4db13a2f7735ea878/recipes/project-persist"; @@ -79244,12 +81649,12 @@ melpaBuild { pname = "projectile"; ename = "projectile"; - version = "20180910.2240"; + version = "20190101.837"; src = fetchFromGitHub { owner = "bbatsov"; repo = "projectile"; - rev = "0944c25d7679621cef1473ebb81cb560e9547a34"; - sha256 = "0vw94x9n8cq9sr3w9jwazhvv8g17fif2f5sk2fcdmzdkwg3wxbq9"; + rev = "823c0aa9ffd1e8e03b20efe97c16cfb66e2c56c5"; + sha256 = "16y0zcqydfag4igwcbljqymkwjgjxdh97ii616wgdsyjgk9xxd4h"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/ca7bf43ef8893bf04e9658390e306ef69e80a156/recipes/projectile"; @@ -79387,12 +81792,12 @@ melpaBuild { pname = "projectile-rails"; ename = "projectile-rails"; - version = "20180718.55"; + version = "20181009.617"; src = fetchFromGitHub { owner = "asok"; repo = "projectile-rails"; - rev = "38fa072fe2d63890a439cc29a19671da39e975bd"; - sha256 = "17fj0qmxnbj48d2mnpz0dw2060whi29b8d2qb9sa9irrwfb63ayw"; + rev = "af0f826f2e1b1aad4e31e089e5fc7b5937e82359"; + sha256 = "110mkg0wk1xcy8r031vyrbp5q9nz88jas94lgzqslbdh7ifj0907"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/b16532bb8d08f7385bca4b83ab4e030d7b453524/recipes/projectile-rails"; @@ -79711,12 +82116,12 @@ melpaBuild { pname = "proof-general"; ename = "proof-general"; - version = "20180901.1008"; + version = "20181226.1500"; src = fetchFromGitHub { owner = "ProofGeneral"; repo = "PG"; - rev = "65d69a7a6a4a5aa5518fd55671d58b0b4a350fe2"; - sha256 = "0a2b4lsyqmh7vv4jr1awnqimpmi7p0c8zq71pvcii6bbaj9x5351"; + rev = "fb3b75dab55b6e6befffc53e136422558be5faa0"; + sha256 = "1gxribixgx2s86kk98qxjb5i2lh3842qgr5lwzgnrrp0yqrh4i9w"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/135c8f2a04739145b500b8742a697907e398d270/recipes/proof-general"; @@ -79928,12 +82333,12 @@ melpaBuild { pname = "psc-ide"; ename = "psc-ide"; - version = "20180605.302"; + version = "20181002.619"; src = fetchFromGitHub { owner = "epost"; repo = "psc-ide-emacs"; - rev = "f71120b0c0d3192f79488ab000b9a689e5145ce4"; - sha256 = "1lg3bqspjmcdmfyjpnx5l9zy0lmicgnszcdbysjmf4q5jxqd3lhd"; + rev = "01a158b77210fec9c1bfc0caffaf08fccc0412ac"; + sha256 = "00lhidhi5m7lxpq2bm9prfzz35kgkjwyl27lmlyc49gh1ky4g19q"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/384ffc463cc6edb4806f8da68bd251e662718e65/recipes/psc-ide"; @@ -79995,12 +82400,12 @@ melpaBuild { pname = "psession"; ename = "psession"; - version = "20180423.2159"; + version = "20181214.2338"; src = fetchFromGitHub { owner = "thierryvolpiatto"; repo = "psession"; - rev = "702d20897c0839568201bc6921d5f0f80b8778c0"; - sha256 = "0ynd69fyjpgs6rs3kkznpx19kmdmd25wb46bj9zq61gj138b6p33"; + rev = "983830eabdbea2bdd72fcdf2f05ca5c271fd4122"; + sha256 = "09vw3wn69y712b9vpcr8m95if7xn63k3hsc6w9jwkz3xnlrz66q4"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/669342d2b3e6cb622f196571d776a98ec8f3b1d3/recipes/psession"; @@ -80023,12 +82428,12 @@ melpaBuild { pname = "psysh"; ename = "psysh"; - version = "20171022.2229"; + version = "20181128.922"; src = fetchFromGitHub { owner = "emacs-php"; repo = "psysh.el"; - rev = "926af4ae0c068ed699fc939f4b3e642aaa6f7c9e"; - sha256 = "0k6kb4xbfxcvd7dm3kb600mq56xyy086zi7nal04jkv9lc59bwn7"; + rev = "4709a57cdcf7103c4a606be89849ea3ead2d38a5"; + sha256 = "1apf6mnqp9bg5dfykgvsn02z0xpyx6k34sd2pvicicig7w09kzvb"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/eb13cb0dba1696cc51132cd1ff723fa17f892a7c/recipes/psysh"; @@ -80204,12 +82609,12 @@ melpaBuild { pname = "puppet-mode"; ename = "puppet-mode"; - version = "20171220.2249"; + version = "20180813.1247"; src = fetchFromGitHub { owner = "voxpupuli"; repo = "puppet-mode"; - rev = "b3ed5057166a4f49dfa9be638523a348b55a2fd2"; - sha256 = "0sgws5cl4vc8707l66lq0zi1p6pxik0474ihg9jczh2xxnq4clsk"; + rev = "7dee1b5a5debac6e56f9107492a413b6c0edb94d"; + sha256 = "01isn90h50p5c6cgzwhb1jq8yacj0fxw9ppfqrnynckg6ydpvg74"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/1de94f0ab39ab18dfd0b050e337f502d894fb3ad/recipes/puppet-mode"; @@ -80222,28 +82627,54 @@ license = lib.licenses.free; }; }) {}; - purescript-mode = callPackage ({ fetchFromGitHub + purescript-mode = callPackage ({ cl-lib ? null + , fetchFromGitHub , fetchurl , lib , melpaBuild }: melpaBuild { pname = "purescript-mode"; ename = "purescript-mode"; - version = "20180120.709"; + version = "20181028.138"; src = fetchFromGitHub { - owner = "dysinger"; + owner = "purescript-emacs"; repo = "purescript-mode"; - rev = "b76c7f37f1a3527e8ace66bbd584851e1f803cc8"; - sha256 = "0nnrfs1siz4wwn56razlig6cvi8fqgcgk5wv5b0iyizq8a8wwia7"; + rev = "a6c7e4cc5ea29cf96478490a57d495e745d6e054"; + sha256 = "0x6w9sgvq3xxxv4fni94acr2q683p81k7ipd7sc27yv8zzj2giyv"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/77175fa470e517fa134751fbb38e144eb5b979ff/recipes/purescript-mode"; - sha256 = "00gz752mh7144nsaka5q3q4681jp845kc5vcy2nbfnqp9b24l55m"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/55462ed7e9bf353f26c5315015436b2a1b37f9bc/recipes/purescript-mode"; + sha256 = "1g30xbv3xvv52r873465a2lp6fnws9q8dz277697qm0mgxkpimbp"; + name = "recipe"; + }; + packageRequires = [ cl-lib ]; + meta = { + homepage = "https://melpa.org/#/purescript-mode"; + license = lib.licenses.free; + }; + }) {}; + purp-theme = callPackage ({ fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "purp-theme"; + ename = "purp-theme"; + version = "20181211.1102"; + src = fetchFromGitHub { + owner = "gnuvince"; + repo = "purp"; + rev = "4f5a95b132779f5219f7dc6bd6a412b7de1d8d1b"; + sha256 = "1cbnw3fj5hy4wjkwrzikjpg1mk3dj9ic0bhdiyv9d6sv26d5f1sz"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/9e731ed27d812d822ebb1dbd639441ce59c4ecf7/recipes/purp-theme"; + sha256 = "1ni8nnyfg4g49fw5m4pxa8fr147pyyvqa5gmydggv5r1xmldgsli"; name = "recipe"; }; packageRequires = []; meta = { - homepage = "https://melpa.org/#/purescript-mode"; + homepage = "https://melpa.org/#/purp-theme"; license = lib.licenses.free; }; }) {}; @@ -80614,12 +83045,12 @@ melpaBuild { pname = "pydoc"; ename = "pydoc"; - version = "20180509.1519"; + version = "20181024.1751"; src = fetchFromGitHub { owner = "statmobile"; repo = "pydoc"; - rev = "253a95571fa80548e2174c89fa965e689030f09c"; - sha256 = "1linfl31i6wpbhyrrjw3xxxxi5d2747ng3bn3fk87ihd9zlbx6wz"; + rev = "abb948e27efaf2452f339c62cd99a1c69930bbfe"; + sha256 = "1da08x2hjjd9d832fwrd4rbd3h6f7m031kkxh53v9xdavkp0xqf1"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/5c4988a66040ddf659492bdb0ae2b9617c342c69/recipes/pydoc"; @@ -80774,12 +83205,12 @@ melpaBuild { pname = "pyim"; ename = "pyim"; - version = "20180910.2113"; + version = "20181109.550"; src = fetchFromGitHub { owner = "tumashu"; repo = "pyim"; - rev = "bdc8d921ae4d0f96716954c8734a2d0620aec809"; - sha256 = "0iabp7x3za0w6a5yv7rcvz32d8qvwyxxw90n138v1z2a6753fc8k"; + rev = "8648d467d79b3bf1c3a99623f9329939cacc40da"; + sha256 = "16rma4cv7xgky0g3x4an27v30jdi6i1sqw43cl99zhkqvp43l3f9"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/151a0af91a58e27f724854d85d5dd9668229fe8d/recipes/pyim"; @@ -80827,14 +83258,14 @@ ename = "pyim-cangjie5dict"; version = "20170729.1946"; src = fetchFromGitHub { - owner = "erstern"; + owner = "HesperusArcher"; repo = "pyim-cangjie5dict"; rev = "c8618590780b818db1a67a29bc47c5d25903517a"; sha256 = "0p49h2kn8wy3b51zahzyc1cy24h3b44cg5yjpmv4w23dhsr4zlz8"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/27a58729115b038abe813601bf16bba1524cdb2c/recipes/pyim-cangjie5dict"; - sha256 = "0k2nxdlrj3m09javv599ajwd8cd5mjz0hj1j51zpv4y0l1n801bn"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/9a15a17a5aa78aed72958b2a1bde53f0c0ab5be7/recipes/pyim-cangjie5dict"; + sha256 = "1l2k8kfnfciacp1zps8j1g6ijzv1k3g9198079l8c8xlw789irlv"; name = "recipe"; }; packageRequires = [ pyim ]; @@ -80851,12 +83282,12 @@ melpaBuild { pname = "pyim-wbdict"; ename = "pyim-wbdict"; - version = "20170724.1527"; + version = "20180929.2158"; src = fetchFromGitHub { owner = "tumashu"; repo = "pyim-wbdict"; - rev = "114489ed97e825ae11a8d09da6e873820cf23106"; - sha256 = "187wx418pj4h8p8baf4943v9dsb6mfbn0n19r8xiil1z2cmm4ygc"; + rev = "55c7eed02c3253de12c71b925b8d9ef23425b64c"; + sha256 = "0sc0zjp2k190vd8fyzild7ndvfpg528qdlgs1xl9jdkrjnwb85l0"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/ab1cb8bc623d1f12f78fa42ce8b16514e5b07c51/recipes/pyim-wbdict"; @@ -80987,12 +83418,12 @@ melpaBuild { pname = "pyramid"; ename = "pyramid"; - version = "20180718.1420"; + version = "20181212.404"; src = fetchFromGitHub { owner = "dakra"; repo = "pyramid.el"; - rev = "63b7ce47d3f79c8fdd06ea0cbdb519ae3e481aea"; - sha256 = "0al7sk1kj8czffxsc5dfhnpx7wh1iwxb3a3wx8ghgkgj5iw1y466"; + rev = "277f7c623f489fd31c56d6e131c5481a71b6a926"; + sha256 = "1xpb08m5zjyxpq45mmhfysxgaga2xj9r6nw6zs2rx0zkv6qjklnr"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/f786a47c2a6243c693163680146606c71502d0be/recipes/pyramid"; @@ -81013,12 +83444,12 @@ melpaBuild { pname = "pytest"; ename = "pytest"; - version = "20170614.745"; + version = "20181005.824"; src = fetchFromGitHub { owner = "ionrock"; repo = "pytest-el"; - rev = "013fccd684fc8f2092d6e1ec4203ec574e12051d"; - sha256 = "0yjnq2lyh6jr5xz29n6xxmp4lcy28wrcmw05j0zgcjdshri1pd43"; + rev = "1bfa7549001e61ecd59cd6eae7c6656a924d1ba4"; + sha256 = "1ry0czn0qjjiw75v47jamxbfzh70jxai6lvf3pp5v87wp1xhnznh"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/33a854a27adbaf57d344340199f90d52747b8450/recipes/pytest"; @@ -81038,12 +83469,12 @@ melpaBuild { pname = "python-cell"; ename = "python-cell"; - version = "20131029.1616"; + version = "20181028.1440"; src = fetchFromGitHub { owner = "thisch"; repo = "python-cell.el"; - rev = "ccacd91a19be784860d687eb1e8ce88fddaacaf6"; - sha256 = "1cnjdgw3x6yb5k06z57xifywlg0kdx9ai4f1ajc0wx9aax8r5gav"; + rev = "2faa78b3f4faa12f09f9864ebd854ae7d4e95fd0"; + sha256 = "13b1ym3bncahyarbiqib5qhkyn3s6brq78kmfl7xvgjvfqfsb8pl"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/0549866c5e96f673ec9dec298e7ff9d5779d443b/recipes/python-cell"; @@ -81164,12 +83595,12 @@ melpaBuild { pname = "python-mode"; ename = "python-mode"; - version = "20180814.21"; + version = "20181223.1133"; src = fetchFromGitLab { owner = "python-mode-devs"; repo = "python-mode"; - rev = "2353ed7b039693e70b39bd829f01d235b23fbbd3"; - sha256 = "0rc1kqz2b6r6b6wvbvlrhgcc7dxs6hml01hb4plmgsnqsi8hx4g7"; + rev = "f039fa485b3446c8afa73ac461174871ba8a229c"; + sha256 = "171hrzfyc4i4wlxsyf9pn4i990dyji6lsfpajsqzmhcvq1dkbiph"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/82861e1ab114451af5e1106d53195afd3605448a/recipes/python-mode"; @@ -81254,12 +83685,12 @@ melpaBuild { pname = "python-test"; ename = "python-test"; - version = "20171112.2137"; + version = "20181017.1729"; src = fetchFromGitHub { owner = "emacs-pe"; repo = "python-test.el"; - rev = "f00b9de14647b15b6f36ceee77d7e9e08dd074a4"; - sha256 = "1ba3r79afd5za36g09imp546bbvx2v9j58hl1bhjahx992wywrch"; + rev = "f899975b133539e19ba822e4b0bfd1a28572967e"; + sha256 = "0ww0qf9hsd8j31dc0p3fmsiqsir3mqbd4pwv4i29qidmbgrk3cv0"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/0ea68b3aa9c057e81a3e90a359a38ac16cb26c2f/recipes/python-test"; @@ -81310,12 +83741,12 @@ melpaBuild { pname = "pythonic"; ename = "pythonic"; - version = "20180807.2120"; + version = "20180920.1615"; src = fetchFromGitHub { owner = "proofit404"; repo = "pythonic"; - rev = "4eb5ad0d80308495c8a369c4268825d3ae2d3807"; - sha256 = "1mm2np4vrqj60ni4d9rvhg8v9ihban5j85sl8w9l6ca1j3wf20jv"; + rev = "6a5a2a365e4ea6fc5adfa96359418c437aa351c8"; + sha256 = "04x27zhj6yc2lvl79cns365a6w1psvamrzx5vmcqmi4imfp4g8a4"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/5589c55d459f15717914061d0f0f4caa32caa13c/recipes/pythonic"; @@ -81335,12 +83766,12 @@ melpaBuild { pname = "pyvenv"; ename = "pyvenv"; - version = "20180831.147"; + version = "20181228.922"; src = fetchFromGitHub { owner = "jorgenschaefer"; repo = "pyvenv"; - rev = "921ae2356b6a111ac0b7e44fd04cba8e95cbe936"; - sha256 = "04kxx8fjqzzdl2rn56vn9jac2v3irpmr9dfckwfa3r4gslvipybm"; + rev = "fa6a028349733b0ecb407c4cfb3a715b71931eec"; + sha256 = "1x052fsavb94x3scpqd6n9spqgzaahzbdxhg4qa5sy6hqsabn6zh"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/e37236b89b9705ba7a9d134b1fb2c3c003953a9b/recipes/pyvenv"; @@ -81353,6 +83784,32 @@ license = lib.licenses.free; }; }) {}; + q-mode = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "q-mode"; + ename = "q-mode"; + version = "20181216.947"; + src = fetchFromGitHub { + owner = "psaris"; + repo = "q-mode"; + rev = "7a13fb68a0ad3d843c8cdc188cf0adb9723f42f7"; + sha256 = "0di229ma7jr9jcck36qjrzilkbp428kkx53qs6c9xw9jhv6yklbz"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/fff65433eff01d6239809df4c047f0e4349cc4a9/recipes/q-mode"; + sha256 = "1vv3hynd6k050nxln83l703ymzyh1kl69cdy4yabdvmkqw4gbshz"; + name = "recipe"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://melpa.org/#/q-mode"; + license = lib.licenses.free; + }; + }) {}; qiita = callPackage ({ fetchFromGitHub , fetchurl , helm @@ -81457,6 +83914,31 @@ license = lib.licenses.free; }; }) {}; + quack = callPackage ({ fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "quack"; + ename = "quack"; + version = "20181106.501"; + src = fetchFromGitHub { + owner = "emacsmirror"; + repo = "quack"; + rev = "2146805ce2b5a9b155d73929986f11e713787e26"; + sha256 = "005wkji4wjqqilgmqy81rjqr8zx4gl39mari2ahvr9mfps2ypmjz"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/aa58bf19d4b65ec785677a36709794ae5aebded4/recipes/quack"; + sha256 = "18f3py9vr08589g9kvbcn2nvpd074rx45ni9k66cwl3hjb3hdkg5"; + name = "recipe"; + }; + packageRequires = []; + meta = { + homepage = "https://melpa.org/#/quack"; + license = lib.licenses.free; + }; + }) {}; quasi-monochrome-theme = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -81464,12 +83946,12 @@ melpaBuild { pname = "quasi-monochrome-theme"; ename = "quasi-monochrome-theme"; - version = "20180516.813"; + version = "20181213.27"; src = fetchFromGitHub { owner = "lbolla"; repo = "emacs-quasi-monochrome"; - rev = "e803bc0c2e38f350feb8297a092812e5204781c7"; - sha256 = "0s1pqyxahkz5rrczk8m7xiqm41rjhxsyfdl2klp2l8ih13zlwf6i"; + rev = "68060dbbc0bbfe4924387392874186c5a29bb434"; + sha256 = "0zp2xr0bjfqrpb0bqczzick1vvbjmipjavrdi70kw6a9caynvq22"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/a9c8498e4bcca19c4c24b2fd0db035c3da477e2a/recipes/quasi-monochrome-theme"; @@ -81490,11 +83972,11 @@ melpaBuild { pname = "quelpa"; ename = "quelpa"; - version = "20180907.1532"; + version = "20190102.2350"; src = fetchgit { url = "https://framagit.org/steckerhalter/quelpa.git"; - rev = "571ee896e00fd0b90373b94bf2689e1b9741a60e"; - sha256 = "0qz5zfj24cmaw903xszf8zg4hmas6q8k6bx5c10vq45rwqkdcgva"; + rev = "2593394b293d633fabe0583fc1f00bc19bee5978"; + sha256 = "0h8zlc5zns6q26kjvc3rbw4s3dbjxjpaf79pwf2aayvs8xy3p8h5"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/a496196d405c152600d44ef4aa28557f489c542c/recipes/quelpa"; @@ -81781,12 +84263,12 @@ melpaBuild { pname = "racer"; ename = "racer"; - version = "20180708.2325"; + version = "20181212.1825"; src = fetchFromGitHub { owner = "racer-rust"; repo = "emacs-racer"; - rev = "dd7f179efbab6597eb7eb1d66883f168b3dc5573"; - sha256 = "0drawn72lg6xxzg85909gfgrckh641m70gzqzrabcdqizfcxm5pk"; + rev = "7e1c0166ace3d56ba8914e1d07cb9faf0580b7b5"; + sha256 = "1psgx6nwbh5ac2l0ky8zh36zbv6rrwr03zhnwj506z7hv5mxdgby"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/97b97037c19655a3ddffee9a86359961f26c155c/recipes/racer"; @@ -81809,16 +84291,16 @@ melpaBuild { pname = "racket-mode"; ename = "racket-mode"; - version = "20180830.918"; + version = "20181205.1929"; src = fetchFromGitHub { owner = "greghendershott"; repo = "racket-mode"; - rev = "2b1c7d476dc71b1707fd5222f963ab6509e50805"; - sha256 = "0qdjn4xvnkamfzn6aq1lmmfmzw9ddj6p2azxpwi8cxzz1irdlydp"; + rev = "8180205ef83893e2a99e40168194b6d01b8e3281"; + sha256 = "0bnmrjlh82p2p09avjmlixyvqqsc5m70p3yybp3mlqbvib2vjs26"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/7ad88d92cf02e718c9318d197dd458a2ecfc0f46/recipes/racket-mode"; - sha256 = "04sr55zrgwyi48sj4ssm4rmm327yxs7hvjhxclnkhaaigrmrv7jb"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/9af8dea03aba378f21c6109faf48278b4d2bf59f/recipes/racket-mode"; + sha256 = "0cmlz314w5227br0vns5d7jhpspv1byzalgzv8f9v2qjyvk6jvsn"; name = "recipe"; }; packageRequires = [ emacs faceup s ]; @@ -81859,12 +84341,12 @@ melpaBuild { pname = "railscasts-reloaded-theme"; ename = "railscasts-reloaded-theme"; - version = "20180131.2246"; + version = "20181030.50"; src = fetchFromGitHub { owner = "thegeorgeous"; repo = "railscasts-reloaded-theme"; - rev = "6312f01470dcc73537dbdaaccabd59c4d18d23a9"; - sha256 = "1fqpqgkpn36kj3fb4na0w4cjwln05rvy6w1q5czas8z37rk2bs33"; + rev = "ae77bc04fe5a948f418ec8693f6ff2c9ea757c50"; + sha256 = "1vn9cw343w9vvxhzqi85vyqnj6kxcv99qvva4xjvy1sf65i24wy4"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/9817851bd06cbae30fb8f429401f1bbc0dc7be09/recipes/railscasts-reloaded-theme"; @@ -82449,12 +84931,12 @@ melpaBuild { pname = "react-snippets"; ename = "react-snippets"; - version = "20170803.1550"; + version = "20181002.346"; src = fetchFromGitHub { owner = "johnmastro"; repo = "react-snippets.el"; - rev = "bfc4b68b81374a6a080240592641091a7e8a6d61"; - sha256 = "1wna4v8l3j0ppjv4nj72lhp0yh6vbka6bvl1paqqfvay300kiqjb"; + rev = "87ccb640d265fe799583ab55605b84d113223694"; + sha256 = "0zs78mn37ngy86blmp2xfy7jr5p0s6r0qq6z3z924amrhy5bwdqc"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/3720192fdfa45f9b83259ab39356f469c5ac85b4/recipes/react-snippets"; @@ -82555,14 +85037,14 @@ ename = "real-auto-save"; version = "20180802.2147"; src = fetchFromGitHub { - owner = "chillaranand"; + owner = "ChillarAnand"; repo = "real-auto-save"; rev = "fb1477244fe365cc79c6946507fde2caf71af600"; sha256 = "0g4a3cmfngx59byn22ihq6izpjg1srpgn3gkx13jdsxdwxrwbg14"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/525039a3dc29190829bf50d608ef09bc4a8557af/recipes/real-auto-save"; - sha256 = "03dbbizpyg62v6zbq8hd16ikrifz8m2bdlbb3g67f2834xqmxha8"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/35763febad20f29320d459394f810668db6c3353/recipes/real-auto-save"; + sha256 = "1li0b2d93ffxjq4jdyzyvjdy5h7q5xllys0w4748d2bhr8q35p3w"; name = "recipe"; }; packageRequires = []; @@ -82583,12 +85065,12 @@ melpaBuild { pname = "realgud"; ename = "realgud"; - version = "20180710.1953"; + version = "20181210.1125"; src = fetchFromGitHub { owner = "realgud"; repo = "realgud"; - rev = "da2a74b50a770a2c1166656a05ba9d132a2a5c73"; - sha256 = "0w5lbwjaraw11sj36a9hsywa187g97hnvksrd6wbf8prbfwhghlx"; + rev = "2ae8fbf087aa7f1ecb51f7ecaa71cc54094ff5e0"; + sha256 = "1jzvf5ngcs3vqh7m6iym8k41y4fq6y28b7dkljk0jm0jqfhvypx8"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/6440f81aed1fcddcaf7afeedb74520e605211986/recipes/realgud"; @@ -82751,12 +85233,12 @@ melpaBuild { pname = "reazon"; ename = "reazon"; - version = "20180908.2010"; + version = "20180921.737"; src = fetchFromGitHub { owner = "nickdrozd"; repo = "reazon"; - rev = "3735592366666f6fccae37ce2f4ca07c0d3b5da9"; - sha256 = "1z9s55vzc0ckap3ngsbvw5f5wy3sf053w9j46xzx8qcvz0zgr76j"; + rev = "020be6467a83957adcbdcb192b61f2c76a94079b"; + sha256 = "18la2g0srybr10vm1dajgbxi67j1l0cs08mr696hxb6m558yxdv5"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/77020b6ea36a4115bdddbc9599fe4f4193ecc29d/recipes/reazon"; @@ -82871,6 +85353,33 @@ license = lib.licenses.free; }; }) {}; + recently = callPackage ({ cl-lib ? null + , emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "recently"; + ename = "recently"; + version = "20181220.746"; + src = fetchFromGitHub { + owner = "10sr"; + repo = "recently-el"; + rev = "3a331936ba33875d0f2fa47abe056aadbc59150e"; + sha256 = "0hdsv3whr2iqk6xirmfcjpbqjnckzqj54n5q04gh2z01bjxv3d7k"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/bb8d1628e1787cba10fc612f3351e4085e9a3153/recipes/recently"; + sha256 = "1928v1897l1n42zrzqfwkq6nckf9y822qcwy99294rq0b4z83kxs"; + name = "recipe"; + }; + packageRequires = [ cl-lib emacs ]; + meta = { + homepage = "https://melpa.org/#/recently"; + license = lib.licenses.free; + }; + }) {}; recompile-on-save = callPackage ({ cl-lib ? null , dash , fetchFromGitHub @@ -82982,12 +85491,12 @@ melpaBuild { pname = "recursive-narrow"; ename = "recursive-narrow"; - version = "20140902.1027"; + version = "20180916.2149"; src = fetchFromGitHub { owner = "nflath"; repo = "recursive-narrow"; - rev = "bc0cab88234ca92640d4b8da0d83e132c1897922"; - sha256 = "1mj7lyadzn3bwig3f9zariq5z4fg6liqnjvfd34yx88xc52nwf33"; + rev = "94f5c16a81ecf85c7442ebc8cd04ba7553ab5244"; + sha256 = "0l0czf1405pcxshwdvvniddz00lygh25xdim8xzn7b1w13knb863"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/855ea20024b606314f8590129259747cac0bcc97/recipes/recursive-narrow"; @@ -83133,6 +85642,32 @@ license = lib.licenses.free; }; }) {}; + redtt = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "redtt"; + ename = "redtt"; + version = "20181120.1621"; + src = fetchFromGitHub { + owner = "RedPRL"; + repo = "redtt"; + rev = "c95d1a0787fb92eb011df690b4bdc1029a611c0b"; + sha256 = "1l9agj28ik4b57rxai1jp23bc4l832m72znkqacch0gvxx553q2w"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/8db65908885f753bf65849b89ebabe0c4df664f9/recipes/redtt"; + sha256 = "0gnqik2p2rb8c1mp3vrz1xf7z89xfcx5pi4lqsdnwjhxjh2534zk"; + name = "recipe"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://melpa.org/#/redtt"; + license = lib.licenses.free; + }; + }) {}; refine = callPackage ({ dash , emacs , fetchFromGitHub @@ -83245,12 +85780,12 @@ melpaBuild { pname = "region-convert"; ename = "region-convert"; - version = "20161118.1859"; + version = "20181220.2128"; src = fetchFromGitHub { owner = "zonuexe"; repo = "right-click-context"; - rev = "32f572b4f9ff6f9a062a914b4f8ba66f43e7ee8a"; - sha256 = "1lsr7ljzvfs84jnlk2igg8h0ki09gzw2ihgl2p6wdn27d47blcwd"; + rev = "173c86b4b3fc187d54bcd85b4d7df27a5ee24965"; + sha256 = "1paljjwr6sfl835m24vj2j4x3zdh3whwayj6dvyfarbhhcwbwphj"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/ddcf4612cccb9a53425c5f0324206d70549d9d9e/recipes/region-convert"; @@ -83270,12 +85805,12 @@ melpaBuild { pname = "region-state"; ename = "region-state"; - version = "20151128.238"; + version = "20181205.946"; src = fetchFromGitHub { owner = "xuchunyang"; repo = "region-state.el"; - rev = "07ffb7d9ada2fcd204f3447f078c265d25f36f60"; - sha256 = "0gsh0x1rqxvzrszdyna9d8b8w22mqnd9yqcwzay2prc6rpl26g1f"; + rev = "f9e3926036a7c261b20bad9bf46f68ead8c15024"; + sha256 = "1wb46m7qdhbjkgzwf6yg0hsjh44dq8sa1w99k7czy1yq2i2mz1k6"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/716e82eb4ca0845f59a743556b37be8a1ecb29af/recipes/region-state"; @@ -83295,12 +85830,12 @@ melpaBuild { pname = "register-channel"; ename = "register-channel"; - version = "20150513.2059"; + version = "20180926.1649"; src = fetchFromGitHub { owner = "YangZhao11"; repo = "register-channel"; - rev = "f62f9a62ebd2537d4a8c8f2e358562c67d2aefc1"; - sha256 = "01k3v4yiilz1k6drv7b2x6zbjx6dlz7cch8rq63mwc7v8kvdnqmi"; + rev = "9272923757402d177a0b2deab1d9c3c74601c48e"; + sha256 = "0k9qgrbzbxx4sjffnr02qx5wm71i3m61w7mh2j4hq9jf8k6nbkq4"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/ad44618ac36e96d04f5c44c77637ea6229e61b4c/recipes/register-channel"; @@ -83446,6 +85981,31 @@ license = lib.licenses.free; }; }) {}; + renpy = callPackage ({ fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "renpy"; + ename = "renpy"; + version = "20180907.1234"; + src = fetchFromGitHub { + owner = "billywade"; + repo = "renpy-mode"; + rev = "cf9c9ead6084210a4c0290a0d999a099b8d00a81"; + sha256 = "1blv8f1qr0nd7j7ciyba05n5a4jijffqmchxjhl7nxljlghwiy27"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/cc928aed12275dc3780d7d8acc6ceca0f69ef63f/recipes/renpy"; + sha256 = "1xfk3j13wzgxg56izbwad0kw4izg0hdzkh7h7cfdmdf4v6mxc7f0"; + name = "recipe"; + }; + packageRequires = []; + meta = { + homepage = "https://melpa.org/#/renpy"; + license = lib.licenses.free; + }; + }) {}; repeatable-motion = callPackage ({ emacs , fetchFromGitHub , fetchurl @@ -83691,12 +86251,12 @@ melpaBuild { pname = "request"; ename = "request"; - version = "20170131.1747"; + version = "20181129.338"; src = fetchFromGitHub { owner = "tkf"; repo = "emacs-request"; - rev = "a3d080e57eb8be606fbf39d1baff94e1b16e1fb8"; - sha256 = "0wyxqbb35yqf6ci47531lk32d6fppamx9d8826kdz983vm87him7"; + rev = "b929e7c7b877b074f9ce582999bb6e196e0f745d"; + sha256 = "1xzar6mgchrq9q7sj4q9cch5sharxfj85sffhcgza7fz0vl5b0hc"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/8d113615dde757a60ce91e156f0714a1394c4bfc/recipes/request"; @@ -83718,12 +86278,12 @@ melpaBuild { pname = "request-deferred"; ename = "request-deferred"; - version = "20160419.1605"; + version = "20181128.1917"; src = fetchFromGitHub { owner = "tkf"; repo = "emacs-request"; - rev = "aeae9028de5c489b07a5f5df29682eff47f80f6b"; - sha256 = "002blp30bvi8l9b9mzjk8ib6xv3fps3j8cqrvbdj6dw2yvrcfl1g"; + rev = "a8d8d0714612d3b45188c6cd4237e091cc6d1366"; + sha256 = "1rar2b781gr8sb34n638a31f4pg5xh64xkmamvdr37i8wrr9i4cy"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/8d113615dde757a60ce91e156f0714a1394c4bfc/recipes/request-deferred"; @@ -83800,12 +86360,12 @@ melpaBuild { pname = "resize-window"; ename = "resize-window"; - version = "20170704.2212"; + version = "20180917.2238"; src = fetchFromGitHub { owner = "dpsutton"; repo = "resize-window"; - rev = "e281aca5a1b371aff20d7bfc6abc456de22e19dd"; - sha256 = "1d8jzhwif80bgj5pxa36hbavjrlmjg12yzxypl40d1wrjamq854c"; + rev = "09dc5968f1c988c51fcd6ea5d68bb38b7541eb66"; + sha256 = "02hzn0r9bzpmhjij1fvj6q3qvha8rwyn53m4yw995bg9xk32c0hj"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/601a8d8f9046db6c4d50af983a11fa2501304028/recipes/resize-window"; @@ -84005,12 +86565,12 @@ melpaBuild { pname = "review-mode"; ename = "review-mode"; - version = "20180312.535"; + version = "20181213.1915"; src = fetchFromGitHub { owner = "kmuto"; repo = "review-el"; - rev = "bf38b0ce8be2eef1cf810ac6f3664d2190bb9ef7"; - sha256 = "0vmv19qvpba715xqx18dmlxq9kgkzvkf6jfd03bdcj2lh804y3pb"; + rev = "978be7337628c746f2cb237094c65187a11d7682"; + sha256 = "07zli33hfdz0h4b491dl664gv7naky8db3kajxb3ncbizx99dz9m"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/f2f9e2667389577d0703874ca69ebe4800ae3e01/recipes/review-mode"; @@ -84055,23 +86615,24 @@ , fetchurl , lib , melpaBuild - , s }: + , s + , wgrep }: melpaBuild { pname = "rg"; ename = "rg"; - version = "20180915.350"; + version = "20181217.1034"; src = fetchFromGitHub { owner = "dajva"; repo = "rg.el"; - rev = "d1f4ec40cabc24524306d9a58590a3ad3c49b9cf"; - sha256 = "0fzzw7c5ydja20n3grwmv3rl6q3f5z2prcnl8xny1l5nr4iv2r4r"; + rev = "362c2b3938a0b81b71d7fa5a8a916b90a0f2aa4a"; + sha256 = "0qgg3rprrh2pjpn3d79vinmnz2ahahj87sqd69fvz59dxyr65b32"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/9ce1f721867383a841957370946f283f996fa76f/recipes/rg"; sha256 = "0i78qvqdznh1z3b0mnzihv07j8b9r86dc1lsa1qlzacv6a2i9sbm"; name = "recipe"; }; - packageRequires = [ cl-lib emacs s ]; + packageRequires = [ cl-lib emacs s wgrep ]; meta = { homepage = "https://melpa.org/#/rg"; license = lib.licenses.free; @@ -84154,6 +86715,34 @@ license = lib.licenses.free; }; }) {}; + right-click-context = callPackage ({ cl-lib ? null + , emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild + , popup }: + melpaBuild { + pname = "right-click-context"; + ename = "right-click-context"; + version = "20181220.2128"; + src = fetchFromGitHub { + owner = "zonuexe"; + repo = "right-click-context"; + rev = "173c86b4b3fc187d54bcd85b4d7df27a5ee24965"; + sha256 = "1paljjwr6sfl835m24vj2j4x3zdh3whwayj6dvyfarbhhcwbwphj"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/ce65fff520deed40670c38f45063dd79d3e6b98b/recipes/right-click-context"; + sha256 = "100qsckbq5myhqbkqsfb7703gcy2np66m6qxby7622px87m4vp7d"; + name = "recipe"; + }; + packageRequires = [ cl-lib emacs popup ]; + meta = { + homepage = "https://melpa.org/#/right-click-context"; + license = lib.licenses.free; + }; + }) {}; rigid-tabs = callPackage ({ emacs , fetchFromGitLab , fetchurl @@ -84320,12 +86909,12 @@ melpaBuild { pname = "rjsx-mode"; ename = "rjsx-mode"; - version = "20180913.1524"; + version = "20181207.3"; src = fetchFromGitHub { owner = "felipeochoa"; repo = "rjsx-mode"; - rev = "68fe4c0e0277220e04f420e1968b9d251b4b75d1"; - sha256 = "1x187pna2dbx8wqiy1w3ffs8wggnn33s5rcakqmailin6z2vkdch"; + rev = "a481ca375ca26ca3285e112fbf41e8fae8bd753f"; + sha256 = "0vydwdk0v0dsnx5pc8fm56kxp6srwr93yy4ld8q4nrh4lj8w19fv"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/b83be7efdef2457e1320fe3dec46484fbd20263c/recipes/rjsx-mode"; @@ -84338,6 +86927,32 @@ license = lib.licenses.free; }; }) {}; + rmsbolt = callPackage ({ emacs + , fetchFromGitLab + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "rmsbolt"; + ename = "rmsbolt"; + version = "20181227.655"; + src = fetchFromGitLab { + owner = "jgkamat"; + repo = "rmsbolt"; + rev = "246377bbff99734f30daedf2c47c03283c97e7c5"; + sha256 = "05v16g2drc57cjcdjqy9rk5m4i74v8raspgfsc62qbapy4kqvn78"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/798e7978f3ee32b3667956da8dc2dc7f005b6996/recipes/rmsbolt"; + sha256 = "0mgzc4q9mmnqjafp2i9qp0plc7qnh4kmkgjs1c7frk9x07navscf"; + name = "recipe"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://melpa.org/#/rmsbolt"; + license = lib.licenses.free; + }; + }) {}; robe = callPackage ({ emacs , fetchFromGitHub , fetchurl @@ -84372,12 +86987,12 @@ melpaBuild { pname = "robots-txt-mode"; ename = "robots-txt-mode"; - version = "20170908.642"; + version = "20180919.841"; src = fetchFromGitHub { owner = "emacs-php"; repo = "robots-txt-mode"; - rev = "4a77674ab2963b829d3b751741c4ce1169e87f6b"; - sha256 = "1ynmb9gpryfrml80kkv71k11j7r91mgyzh1q8xx52s0b4mkd33zc"; + rev = "f8fc7ee50a3d5d7a2838772ed298fb69b9051c5c"; + sha256 = "11qyzsfp2kmi6sd24m30y537mic9xg7y29npninrjihr6k9rw3a2"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/eb13cb0dba1696cc51132cd1ff723fa17f892a7c/recipes/robots-txt-mode"; @@ -84423,12 +87038,12 @@ melpaBuild { pname = "rope-read-mode"; ename = "rope-read-mode"; - version = "20171003.719"; + version = "20181224.300"; src = fetchFromGitHub { owner = "marcowahl"; repo = "rope-read-mode"; - rev = "77b183a6f5450138388509f54a6a2ce442766e50"; - sha256 = "0ddm7gwr51ip8mc79jxkvp52sxhlvs0kyy59v7r7pf5mbadbpsbz"; + rev = "20b1cf63b90ee1cddd093b16cf1f758be6f5bfa6"; + sha256 = "14p7lfsnd9mni2vl67cb66wxs6kfyzdavji3x6xg8pw371bk1c4n"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/14a674559aa485e92357a8b941304ae8167b9c3e/recipes/rope-read-mode"; @@ -84524,12 +87139,12 @@ melpaBuild { pname = "rpn-calc"; ename = "rpn-calc"; - version = "20170522.1842"; + version = "20181121.354"; src = fetchFromGitHub { owner = "zk-phi"; repo = "rpn-calc"; - rev = "66fcb64dbfddfc23823356b6213215bd7ab5efc6"; - sha256 = "1lgabs97x6h4yrgwln8hsxi47wgl46jzhf162wa1almdbqbp9100"; + rev = "27279f89c80eb3f28ff9f981eff06502056943e2"; + sha256 = "0klzhscdvzwpcrfkq2v28in5fv01zqabgxdrziyhj666sly1scjq"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/47d5b3c931cdbc2351e01d15e2b98c78081c9506/recipes/rpn-calc"; @@ -84576,12 +87191,12 @@ melpaBuild { pname = "rspec-mode"; ename = "rspec-mode"; - version = "20180614.448"; + version = "20181208.1625"; src = fetchFromGitHub { owner = "pezra"; repo = "rspec-mode"; - rev = "dda1ece81bd2802c4097e5c963fac33a444659cb"; - sha256 = "1d8i2y9r1im346df3ishsx16g5264pfq930whbj9hipfml6s8ddy"; + rev = "bcae3ec163c62c059eacc8765b01d4cead70ca33"; + sha256 = "1r5d3594dpjd7z7y7ncf6xbga25lrlwjbwv9j2y8kflpmksdcz9d"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/cd83e61b10da20198de990aa081b47d3b0b44d43/recipes/rspec-mode"; @@ -84601,12 +87216,12 @@ melpaBuild { pname = "rtags"; ename = "rtags"; - version = "20180909.1049"; + version = "20181205.839"; src = fetchFromGitHub { owner = "Andersbakken"; repo = "rtags"; - rev = "ce3bdfd90a73dd891b450e60c6a7683ce4f724f5"; - sha256 = "0ijhz6p6xd0xbbk6b5sz1ynr7fbh81yv7r82q6ic3pb5a737sc6k"; + rev = "15d10815b19ed84f78baf9c4ff91c604d9145153"; + sha256 = "1k1b88kczc716sd337rcqkiqm0yj4pn838ah1h5qa99vwywqs9mn"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/3dea16daf0d72188c8b4043534f0833fe9b04e07/recipes/rtags"; @@ -84706,12 +87321,12 @@ melpaBuild { pname = "rubocopfmt"; ename = "rubocopfmt"; - version = "20180519.748"; + version = "20181009.1003"; src = fetchFromGitHub { owner = "jimeh"; repo = "rubocopfmt.el"; - rev = "34c69c9c923d0da223f7569a6ecc842095adcf85"; - sha256 = "0aa683r16gvpv07i0gzbil81kgxbgk4pjn510xgalan3fk20nal4"; + rev = "fc96145719a65b2551339d087ddd95b72e14646f"; + sha256 = "12sfzvb5lf20d4kqa1fzhz8s48lgr8w0x7qimjcy5c75yjb123wl"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/ac01edffceea771d8fe41326e28dd9881f1661ab/recipes/rubocopfmt"; @@ -84733,16 +87348,16 @@ melpaBuild { pname = "ruby-additional"; ename = "ruby-additional"; - version = "20180316.1937"; + version = "20181221.359"; src = fetchFromGitHub { - owner = "emacsorphanage"; - repo = "ruby-additional"; - rev = "97998d908e3720c7cb45a80aeda4b55f3b8ea0f0"; - sha256 = "1jmnz1y2q5994x7j6gfqrbpjyd2rsnrjis8xlx14hplmfgm2scd5"; + owner = "ruby"; + repo = "elisp"; + rev = "75bccbb384e6907df47ab69acdccb4536806c890"; + sha256 = "1ic92ga7sy71qknn22xjbxrhpbq3sgb1ngfm2d0gjdmr0x6q8xkc"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/30de78c9cf83de30093a5647976eeaf552d4b2cb/recipes/ruby-additional"; - sha256 = "1ivxn787k64q5jl0dxmxbj240ykcyvfhfam5fdvrwvc3yysk2dx7"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/30fa1f6cb1128fc0c0e751330714f228e5616786/recipes/ruby-additional"; + sha256 = "09g4zz6pfzhxlhac2d041bys7qis4w4shpdn4bpskm1rnmvm10s7"; name = "recipe"; }; packageRequires = [ emacs ruby-mode ]; @@ -85159,6 +87774,31 @@ license = lib.licenses.free; }; }) {}; + rust-auto-use = callPackage ({ fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "rust-auto-use"; + ename = "rust-auto-use"; + version = "20181124.2237"; + src = fetchFromGitHub { + owner = "vmalloc"; + repo = "rust-auto-use.el"; + rev = "d924505ecd954625dcb2d56dfba97111dc6a17fa"; + sha256 = "1yw9l13dgkfsdv4kgpbvzx12g8bqycclgq2gk4b1r29mxy72wnpq"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/a9584d883934e36400ec1924755df34149ad2f9f/recipes/rust-auto-use"; + sha256 = "0jdg8xgxry0h9nbb9m446gpw54rymw3152n84lvsg5bv51861114"; + name = "recipe"; + }; + packageRequires = []; + meta = { + homepage = "https://melpa.org/#/rust-auto-use"; + license = lib.licenses.free; + }; + }) {}; rust-mode = callPackage ({ emacs , fetchFromGitHub , fetchurl @@ -85167,12 +87807,12 @@ melpaBuild { pname = "rust-mode"; ename = "rust-mode"; - version = "20180626.1512"; + version = "20181218.308"; src = fetchFromGitHub { owner = "rust-lang"; repo = "rust-mode"; - rev = "106aeab800fb3404baf231845d3e3549ec235afa"; - sha256 = "0bcrklyicxh032rrp585rl5mxd26nb61dp6r5bl935rlcmxzsczh"; + rev = "d3a70256fe560bcc463ed42e4259e9fce0fdfee3"; + sha256 = "1l5fbd79z80475xmhnpaf2b6bc8q9niarz9y31zq59k7zagiz3qj"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/8f6e5d990d699d571dccbdeb13327b33389bb113/recipes/rust-mode"; @@ -85217,7 +87857,6 @@ , fetchFromGitHub , fetchurl , lib - , magit , markdown-mode , melpaBuild , projectile @@ -85227,12 +87866,12 @@ melpaBuild { pname = "rustic"; ename = "rustic"; - version = "20180913.838"; + version = "20190101.1314"; src = fetchFromGitHub { owner = "brotzeit"; repo = "rustic"; - rev = "78143a0dcb0a11b37d011b06c4b16eb0ab4f9bb6"; - sha256 = "00pz9snlp4m0mga700wqnjiikfngfpmis25kndvyb21s1vlrnrb0"; + rev = "c274416555ecbb76b9b666bcad0ba4021ab8fba7"; + sha256 = "1ja0zakggpjwkb6nnjdcbrd0ma915148r24rkymzf6xm9gydbx3z"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/716c14a2ed8f5817c09c1ff530a4980c17b44bb3/recipes/rustic"; @@ -85243,7 +87882,6 @@ dash emacs f - magit markdown-mode projectile s @@ -85528,12 +88166,12 @@ melpaBuild { pname = "salt-mode"; ename = "salt-mode"; - version = "20180118.1754"; + version = "20181225.357"; src = fetchFromGitHub { owner = "glynnforrest"; repo = "salt-mode"; - rev = "e46c28ef77663391519646c79641c9d177f70d35"; - sha256 = "13zk20bif05qgpqsx9hf6ri7qkxqq7nicp2lb84dg7id24md22x9"; + rev = "adecd8d1016722a916d190e8738435668d664cca"; + sha256 = "0ncf3sr25vcjrcc9mn59mg0kkv59y6mlir2a7an3drzqlyfr44i0"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/9dcf1a93a06fc42581521c88cfd988b03bedc000/recipes/salt-mode"; @@ -85554,12 +88192,12 @@ melpaBuild { pname = "sane-term"; ename = "sane-term"; - version = "20160620.647"; + version = "20181129.1701"; src = fetchFromGitHub { owner = "adamrt"; repo = "sane-term"; - rev = "034033141b2eb467e2d0b79c8ce1da1f8ff2f013"; - sha256 = "0nhs916h52hxbp479ma01p6i0zfap26n4fvyx83822pisbcd3krb"; + rev = "ae0b3c024b66275f22809e2b41f428b01c259b96"; + sha256 = "1468byxxd0ysqzmi9ssypfhfyqrjgj5w7sx42qgw66m57sis8ra3"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/855ea20024b606314f8590129259747cac0bcc97/recipes/sane-term"; @@ -85606,12 +88244,12 @@ melpaBuild { pname = "sauron"; ename = "sauron"; - version = "20171105.247"; + version = "20181216.400"; src = fetchFromGitHub { owner = "djcb"; repo = "sauron"; - rev = "50f09bfc6f5bf79e72a1223e345ee720b507e56a"; - sha256 = "1k80vzgky4fcakxs3h0yb7g3zpn4382p8zz730kk1ibfd7i56a68"; + rev = "6a26e9df1e6a49b0ea4ccfd843a032033162a287"; + sha256 = "1pqw72mmi84813pigk0gcygrqw5ql2074kj55pihy784dm853rfg"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/9d30dcc4715422133e1bb00ad7a8e25b060387e4/recipes/sauron"; @@ -85708,14 +88346,14 @@ ename = "say-what-im-doing"; version = "20160706.1231"; src = fetchFromGitHub { - owner = "benaiah"; + owner = "Benaiah"; repo = "say-what-im-doing"; rev = "5b2ce6783b02805bcac1107a149bfba3852cd9d5"; sha256 = "0wy4hrc44ajl88krp6qy40szl2kl2wc3xjz3y4n250d1v81k25xi"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/4d22ddcd4ad9514fe0c36f299e7463a4b7e771d7/recipes/say-what-im-doing"; - sha256 = "1hgh842f7gs2sxy7s6zq57nsqy4jjlnjcga6hwzcx0kw3albgz7x"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/35763febad20f29320d459394f810668db6c3353/recipes/say-what-im-doing"; + sha256 = "0wi7318q7mms4wjbzhnsw298bjh7g957dnra0bvg87vv48pz3yfp"; name = "recipe"; }; packageRequires = []; @@ -85732,16 +88370,16 @@ melpaBuild { pname = "sayid"; ename = "sayid"; - version = "20180901.203"; + version = "20181223.35"; src = fetchFromGitHub { - owner = "bpiel"; + owner = "clojure-emacs"; repo = "sayid"; - rev = "a6d319ff55dc2f06d873d43f3924339d1dffd4c5"; - sha256 = "1a3l7l47sncmizs3d0zj1qais89yzfksvki5smry02l4q3nzk52h"; + rev = "3322ec3d6503f0e706b0b16d09865c00b92e7979"; + sha256 = "0sfc5fsb1h35ayzxaj5bz0za7zjbs6vxgzc7fqfvrpjazsv3jbcq"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/2bd2e05f9c9328d8f9ae434c86697a4a04af8b0d/recipes/sayid"; - sha256 = "0chz46wmwmsn4ys59pn7lqs4assqy2hv43rvka7kq61jdl4g6fgs"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/9a15a17a5aa78aed72958b2a1bde53f0c0ab5be7/recipes/sayid"; + sha256 = "065mxb2la3dq2zqyb8dfksb18fpqym04nnax5rrp19izcw488qsm"; name = "recipe"; }; packageRequires = [ cider ]; @@ -85884,12 +88522,12 @@ melpaBuild { pname = "scheme-complete"; ename = "scheme-complete"; - version = "20170824.713"; + version = "20181029.555"; src = fetchFromGitHub { owner = "ashinn"; repo = "scheme-complete"; - rev = "4c77038048cbcf34b5907f0439c93058a71a2d2b"; - sha256 = "14b1bajgvim48j7y4pss73lyxqfyazjnxn1dgvvmkvngm3k1a4y8"; + rev = "b86ee41d48664839181498313f4f3dc2fef17d6f"; + sha256 = "1by7ky8za6idam4m4xgmf0f5ss0cacd7wv53glhmjb4nslxhgl7d"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/0fda2b54a0ff0b6fc3bd6d20cfcbbf63cae5380f/recipes/scheme-complete"; @@ -85902,31 +88540,6 @@ license = lib.licenses.free; }; }) {}; - scheme-here = callPackage ({ fetchFromGitHub - , fetchurl - , lib - , melpaBuild }: - melpaBuild { - pname = "scheme-here"; - ename = "scheme-here"; - version = "20141028.18"; - src = fetchFromGitHub { - owner = "kaihaosw"; - repo = "scheme-here"; - rev = "fccf668bb8f1d481be6e70fffa2b52ea681e32a5"; - sha256 = "1m5aqcm4pd0m0rz3r09i52q55nlx3ga7hca9xlzf0gwcyyn8xzyg"; - }; - recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/6440f81aed1fcddcaf7afeedb74520e605211986/recipes/scheme-here"; - sha256 = "17r77b99nh03v79r97fzr3pyvigp4w8gr41k6zzj82xka2swhr2h"; - name = "recipe"; - }; - packageRequires = []; - meta = { - homepage = "https://melpa.org/#/scheme-here"; - license = lib.licenses.free; - }; - }) {}; schrute = callPackage ({ emacs , fetchgit , fetchurl @@ -86272,12 +88885,12 @@ melpaBuild { pname = "scribble-mode"; ename = "scribble-mode"; - version = "20160124.1528"; + version = "20181203.1925"; src = fetchFromGitHub { owner = "emacs-pe"; repo = "scribble-mode"; - rev = "7e83ddf30b7089607c1653eced3edef459d4ad16"; - sha256 = "14bpdn89ry1im84zcx3jq64q2gl0jxfz9x7fy0szdas7ycrhjghz"; + rev = "217945d54de5e4bb207033f2116baa28f5c5ecf2"; + sha256 = "1s5ccw1a5ack01wd94ywfcrar9j98agchwdh30q7iyxr0d2z4sii"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/6469c2b389d757003da69da727905228eb564d50/recipes/scribble-mode"; @@ -86479,7 +89092,7 @@ secretaria = callPackage ({ alert , emacs , f - , fetchgit + , fetchFromGitLab , fetchurl , lib , melpaBuild @@ -86487,15 +89100,16 @@ melpaBuild { pname = "secretaria"; ename = "secretaria"; - version = "20180104.720"; - src = fetchgit { - url = "https://bitbucket.org/shackra/secretaria.el"; - rev = "e9d59d264ba30f8055a1ee1576fe9296d5b41055"; - sha256 = "10ijr9babki05j3wlhwsym85q868kirivsml7jlmi1csnn2y3c6b"; + version = "20181025.1257"; + src = fetchFromGitLab { + owner = "shackra"; + repo = "secretaria"; + rev = "27528f57c7543b425940db29b9b99d59d430ff09"; + sha256 = "1kw91pp5aidlwk1cz0wq76xyqzrm1yilw0l0az7x0xvcz94l32xj"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/7b4c9ccbf2eeaa290f3b9d1e5eaaeb5b5547b365/recipes/secretaria"; - sha256 = "1a8jf91wplzazssh0s8ld0g8rp57gdfvxlsyn643w3mbp3ny8ybv"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/3eeddbcf95315da40d021a6913ccf344849c4284/recipes/secretaria"; + sha256 = "04pcibzdljcfiha4yh10van8gsjrzn6bdkvkm2ahfcwrmscfn3hf"; name = "recipe"; }; packageRequires = [ alert emacs f s ]; @@ -86965,12 +89579,12 @@ melpaBuild { pname = "sesman"; ename = "sesman"; - version = "20180903.1126"; + version = "20181109.300"; src = fetchFromGitHub { owner = "vspinu"; repo = "sesman"; - rev = "5a9727ee82a74035fa6aee1e4b94829bd4260f0c"; - sha256 = "0afnbgdq6cbiy2q4nqfvfg2xq7mhlyzfdcw8adbnql4x8a9z94ih"; + rev = "2a1a9a4ccfd88127e13f2655ac130c82fe84f2f7"; + sha256 = "02jb0fz6sg1dj8yb5yyn16pj4pnliz18y8vxylinqbwvn7v4q0rp"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/31110e9bd82ad9c817e6cb597fa9c26c4cdc93ed/recipes/sesman"; @@ -87473,12 +90087,12 @@ melpaBuild { pname = "shen-elisp"; ename = "shen-elisp"; - version = "20180915.958"; + version = "20180915.1328"; src = fetchFromGitHub { owner = "deech"; repo = "shen-elisp"; - rev = "e719fa0fe45926d098676b5c73bae62598b90451"; - sha256 = "1ki3jxk00gpyb6b1rfln591mm7nmndn8rdxh5gj73bhp7i4pz5ln"; + rev = "73b74c8d6e3a2ea34b667d177d9f130765bfe501"; + sha256 = "1ym048cmkghx373fb7n5m6r73q5nfa62m10mqr4nzhsizgyzdbrn"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/855ea20024b606314f8590129259747cac0bcc97/recipes/shen-elisp"; @@ -87550,12 +90164,12 @@ melpaBuild { pname = "shimbun"; ename = "shimbun"; - version = "20180325.2048"; + version = "20181019.121"; src = fetchFromGitHub { owner = "emacsorphanage"; repo = "w3m"; - rev = "59339a69a069fecf7b15148cbc141a6c1811edd6"; - sha256 = "1al8kjmp2jm2ssla8vhalrvpclragh999mgby5524cppwlzz592b"; + rev = "4eeed17f47a89031c51d843e902071738d5d2905"; + sha256 = "1f8ipg4ln2swykn8b4gzl288s21wfsgf7crwm13j21s4qgxhj9ip"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/30de78c9cf83de30093a5647976eeaf552d4b2cb/recipes/shimbun"; @@ -87778,23 +90392,23 @@ license = lib.licenses.free; }; }) {}; - shrink-whitespace = callPackage ({ fetchFromGitHub + shrink-whitespace = callPackage ({ fetchFromGitLab , fetchurl , lib , melpaBuild }: melpaBuild { pname = "shrink-whitespace"; ename = "shrink-whitespace"; - version = "20150916.1215"; - src = fetchFromGitHub { + version = "20181002.2021"; + src = fetchFromGitLab { owner = "jcpetkovich"; repo = "shrink-whitespace.el"; - rev = "8d4263d974fbe66417c0bb9edc155ecc2f48e4b7"; - sha256 = "07zzyfibs2c7w4gpvdh9003frznbg7zdnrx0nv8bvn0b68d3yz0m"; + rev = "0407b89c142bd17e65edb666f35e2c6755bd0867"; + sha256 = "1qxdi2jm3zl5f55c6irsbnxrmqw039pcm99jafn7hg5z5zc3xhbx"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/855ea20024b606314f8590129259747cac0bcc97/recipes/shrink-whitespace"; - sha256 = "0baqv4wr1wi4wd7cfhqf4y24qkpd72lax596z5lj934ihwf3gggw"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/a403093706d57887111e0d012e85273addaf0d35/recipes/shrink-whitespace"; + sha256 = "12i6xlcgk27bsdfnlcdjww8vxbx1yilaqa0pkh5n0hxb66zi6x15"; name = "recipe"; }; packageRequires = []; @@ -87838,12 +90452,12 @@ melpaBuild { pname = "shx"; ename = "shx"; - version = "20180909.859"; + version = "20181118.1851"; src = fetchFromGitHub { owner = "riscy"; repo = "shx-for-emacs"; - rev = "758ad3ab21daa055982ee5d165522a0de7948e93"; - sha256 = "0p923v4iqmyr4fhr2h5ydfaqplkhqllig6dcgp0bjvj7n9v8zpng"; + rev = "a7d9dda0196423bbb673f9a4d30ac948449758f6"; + sha256 = "0hf4b9a2azdj2xh7ffwz5j2b4akpxia0237ibk6g2kv902982n4s"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/7a2ff78ae3c4289ebf9e06cdfd8f8082c395a16f/recipes/shx"; @@ -87968,14 +90582,14 @@ ename = "signal"; version = "20160816.738"; src = fetchFromGitHub { - owner = "Mola-T"; + owner = "mola-T"; repo = "signal"; rev = "aa58327e2297df921d72a0370468b48663efd438"; sha256 = "1gzfdk3ks56h8q4xk69aaxkhkg9jhs55iqdicyvq7x9wmjn6b7xw"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/855ea20024b606314f8590129259747cac0bcc97/recipes/signal"; - sha256 = "0y4crwpnmwm8bi9jazrph4yj0nnva2i1js8h3bw3sizy20a4yf00"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/35763febad20f29320d459394f810668db6c3353/recipes/signal"; + sha256 = "1g8sbszh7cnhpfaql8jn22bsdjdyjdnjb00xr43krr6smc1dr2xq"; name = "recipe"; }; packageRequires = [ cl-lib emacs ]; @@ -88251,12 +90865,12 @@ melpaBuild { pname = "simpleclip"; ename = "simpleclip"; - version = "20180811.908"; + version = "20181105.836"; src = fetchFromGitHub { owner = "rolandwalker"; repo = "simpleclip"; - rev = "7fff9a1e574466878b5f91e9b56b16e490045aaa"; - sha256 = "02bj8b4xg930wzrjam0569k5cj1y0gkv28sjy567skdiw5zl14nn"; + rev = "2468b08ad829aaf4a90246541978be3974c60ab8"; + sha256 = "1pkv4mi0pmi3hwbl3yyzahin5xv4zkd0jw8xh1cdipymndga4iwq"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/7c921e27d6aafc1b82d37f6beb8407840034377a/recipes/simpleclip"; @@ -88522,12 +91136,12 @@ melpaBuild { pname = "slack"; ename = "slack"; - version = "20180712.2222"; + version = "20181222.2215"; src = fetchFromGitHub { owner = "yuya373"; repo = "emacs-slack"; - rev = "cec90237ed46443f8f67886a2188d518b0f3c7dc"; - sha256 = "0npim0rrq0jkw8vj5d8iwfi64nz3mqnciamjs9hamzkiv6z9yxkw"; + rev = "f4bd00fe8f3fef087ee6362c88425783699091c7"; + sha256 = "185djybhmwgyz7czcxsiny7ngs1lklsjmgncknrjdk5lgi3g855h"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/f0258cc41de809b67811a5dde3d475c429df0695/recipes/slack"; @@ -88600,16 +91214,16 @@ melpaBuild { pname = "slime"; ename = "slime"; - version = "20180903.1409"; + version = "20181214.1454"; src = fetchFromGitHub { owner = "slime"; repo = "slime"; - rev = "114bc26170523f3215b319baa35569ba6b3e6917"; - sha256 = "1v8xxdq7djjqbvxyh2zcx5rifxfdgnyxl5bg2vbsjry7lysqs7jr"; + rev = "56e32da66840e3d03947da2fdf9730824cfc870a"; + sha256 = "05pgcf3sd4dwl40kfw00s3si8rz8rk9pis81jlxdi5w6qzmlg7v1"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/14c60acbfde13d5e9256cea83d4d0d33e037d4b9/recipes/slime"; - sha256 = "04zcvjg0bbx5mdbsk9yn7rlprakl89dq6jmnq5v2g0n6q0mh6ign"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/f7b49074393c922c4c4da971f1af70ecdba84abb/recipes/slime"; + sha256 = "14l73q7hqwz5nl7nr8f3cc6bzzgbxgavj2f1z8aq76qfyhxc6zl5"; name = "recipe"; }; packageRequires = [ cl-lib macrostep ]; @@ -88657,12 +91271,12 @@ melpaBuild { pname = "slime-docker"; ename = "slime-docker"; - version = "20171004.1151"; + version = "20181126.624"; src = fetchFromGitHub { owner = "daewok"; repo = "slime-docker"; - rev = "13fa8be2fca516f3ff5fb70fa79dd8404bf86439"; - sha256 = "005zkypg2hkyzpkcv1rzfrmg8amg1bp0534y13xjqq3rz1p602bx"; + rev = "8b511c8c922f6944867f3cfaa7268988384064f1"; + sha256 = "0k7rvvyrrbbg9z46bxvzc4z4lnn9hjmv23m47ag191cqgag6r4fq"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/15ec3f7208287161571c8fc3b29369ceabb44e5f/recipes/slime-docker"; @@ -88838,12 +91452,12 @@ melpaBuild { pname = "sly"; ename = "sly"; - version = "20180906.558"; + version = "20190102.236"; src = fetchFromGitHub { owner = "joaotavora"; repo = "sly"; - rev = "25255c1756ac4b78d60db9a6bb979ccb2c5cdf29"; - sha256 = "109srjg00r87fcsd9vj2iilkph9r716hria4zmixxh4z8rgiww12"; + rev = "38a465bd9a2d17ed40d2164cd87de66f2e0bc8f6"; + sha256 = "0psh9xigsgm209lddd3bmji231vvsqmsni941ky64gg2fivrxvfy"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/4150455d424326667390f72f6edd22b274d9fa01/recipes/sly"; @@ -89198,12 +91812,12 @@ melpaBuild { pname = "smart-jump"; ename = "smart-jump"; - version = "20180821.1839"; + version = "20181103.1527"; src = fetchFromGitHub { owner = "jojojames"; repo = "smart-jump"; - rev = "7424267c88afcd113ef445272dde292ae5ff0fed"; - sha256 = "0flfla7jyw18jqvdpvpm9b1wph39cqa3dddyi15narg014sad76q"; + rev = "aa963735196b7f64fb286163cd5c3e4d435814e5"; + sha256 = "0nfqa9ziccf30fiy813qps34zn41a4am7d0v835c55hgdx97vgij"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/52f29e14e61b28cd1637ca5d6bd878d91a71251f/recipes/smart-jump"; @@ -89250,12 +91864,12 @@ melpaBuild { pname = "smart-mode-line"; ename = "smart-mode-line"; - version = "20180731.2041"; + version = "20180926.336"; src = fetchFromGitHub { owner = "Malabarba"; repo = "smart-mode-line"; - rev = "9a81b51cd37fc5b6d47abfbb2b32f98f36a0fcfc"; - sha256 = "055w1pcr96bfgbmig6ll2sgcisw82rf9dh4n8dhnsl75p32g1rcn"; + rev = "b79f4fa5f2380b0d726a895dd7199e5483004490"; + sha256 = "1n24g265slp655h5wn32ghcv1khn1dnf1l96c65mc6fd4csmzhd1"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/1e6aed365c42987d64d0cd9a8a6178339b1b39e8/recipes/smart-mode-line"; @@ -89268,6 +91882,33 @@ license = lib.licenses.free; }; }) {}; + smart-mode-line-atom-one-dark-theme = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild + , smart-mode-line }: + melpaBuild { + pname = "smart-mode-line-atom-one-dark-theme"; + ename = "smart-mode-line-atom-one-dark-theme"; + version = "20181220.956"; + src = fetchFromGitHub { + owner = "daviderestivo"; + repo = "smart-mode-line-atom-one-dark-theme"; + rev = "79261aeafa89664039201e3d3f405bc8b0a6aa8d"; + sha256 = "06x1na621cm7183im2g2gxkvaqm0yfr9b9i0fbz9bwkcmijxrgmw"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/0a6f3addec8d8fa957bfbc81071d3a434e843cf0/recipes/smart-mode-line-atom-one-dark-theme"; + sha256 = "02hasm2vjvw3r9xkdnn2ddsval8vvhvx15dsac0jp3cc1y1qkm27"; + name = "recipe"; + }; + packageRequires = [ emacs smart-mode-line ]; + meta = { + homepage = "https://melpa.org/#/smart-mode-line-atom-one-dark-theme"; + license = lib.licenses.free; + }; + }) {}; smart-mode-line-powerline-theme = callPackage ({ emacs , fetchFromGitHub , fetchurl @@ -89486,12 +92127,12 @@ melpaBuild { pname = "smartparens"; ename = "smartparens"; - version = "20180912.1050"; + version = "20181212.1156"; src = fetchFromGitHub { owner = "Fuco1"; repo = "smartparens"; - rev = "14a4d62b18da022bb7a4db4584dd82cda6d2f779"; - sha256 = "11phg3fp6558hvv8fk17wf9k293kknnh2jciczh1c3yla7x0593c"; + rev = "806d770ebdce93d984401825d78816fcbec12f1f"; + sha256 = "0nwcsyaahw9sxaqbak3ixdbr38ija6ih9pa0rsl6d357qnr2xk3q"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/bd98f85461ef7134502d4f2aa8ce1bc764f3bda3/recipes/smartparens"; @@ -89892,12 +92533,12 @@ melpaBuild { pname = "snakemake-mode"; ename = "snakemake-mode"; - version = "20180831.2150"; + version = "20181007.1950"; src = fetchFromGitHub { owner = "kyleam"; repo = "snakemake-mode"; - rev = "89caed9a05a9a18a21c312163b971795253678ac"; - sha256 = "01517mqkvmw61kc2ain743nvybmjd9d3gjiicr5fha0a9qlf97f7"; + rev = "0cadd2bbd20aae1555561e81ed72fec43ec7296e"; + sha256 = "1i4cwdyhfyawfx07i63iqdx524mlphgbrl44wqqnnxrbdqm0h534"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/c3a5b51fee1c9e6ce7e21555faa355d118d34b8d/recipes/snakemake-mode"; @@ -90156,12 +92797,12 @@ melpaBuild { pname = "solaire-mode"; ename = "solaire-mode"; - version = "20180521.235"; + version = "20181226.1426"; src = fetchFromGitHub { owner = "hlissner"; repo = "emacs-solaire-mode"; - rev = "abf2ce4da77d0877efb4a035687390ce921eda4f"; - sha256 = "15wszz841vd9i59gq2xxh8rk7bh7agwglh2dwhxgs70m24hsp3p4"; + rev = "620df5a1d3d7e780af87079d2a43edf11a7ad5d2"; + sha256 = "1bilnihakgkyhws5s80s1sbph6zp4dyws79b2l4dp820d324fsi5"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/52c69070eef3003eb53e1436c538779c74670ce6/recipes/solaire-mode"; @@ -90184,12 +92825,12 @@ melpaBuild { pname = "solarized-theme"; ename = "solarized-theme"; - version = "20180807.2239"; + version = "20181030.1212"; src = fetchFromGitHub { owner = "bbatsov"; repo = "solarized-emacs"; - rev = "d662ab1ff554cd083e29b5626fe3f28544b0d253"; - sha256 = "1f2klyzv9jfka5sgybgg78d8fhvvsl4al4pp8z347hy8g3xy8rxh"; + rev = "87d4758e7ecc8ed873f3326e4f8b185fd2b9da0a"; + sha256 = "004ivjg6hknx13cay7prj7yk6nnmyp6kk278lwc62d0z78a87821"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/cae2ac3513e371a256be0f1a7468e38e686c2487/recipes/solarized-theme"; @@ -90202,6 +92843,33 @@ license = lib.licenses.free; }; }) {}; + solidity-flycheck = callPackage ({ fetchFromGitHub + , fetchurl + , flycheck + , lib + , melpaBuild + , solidity-mode }: + melpaBuild { + pname = "solidity-flycheck"; + ename = "solidity-flycheck"; + version = "20181117.718"; + src = fetchFromGitHub { + owner = "ethereum"; + repo = "emacs-solidity"; + rev = "d6c48a1cb64d3c8a825dc0d06c839f2cacd4d289"; + sha256 = "14v71xf3z60s1fhpsz8b3l1v4na2ds0ddcp41y412fnrg4scbrhr"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/e561d869f4e32bad5d1a8678f67e591ff586d6de/recipes/solidity-flycheck"; + sha256 = "1lx64y77q33a2lrg5sj5h56gicw1lk8qmxmva5bgc4zxxd8qwz6f"; + name = "recipe"; + }; + packageRequires = [ flycheck solidity-mode ]; + meta = { + homepage = "https://melpa.org/#/solidity-flycheck"; + license = lib.licenses.free; + }; + }) {}; solidity-mode = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -90209,16 +92877,16 @@ melpaBuild { pname = "solidity-mode"; ename = "solidity-mode"; - version = "20180912.1454"; + version = "20181117.718"; src = fetchFromGitHub { owner = "ethereum"; repo = "emacs-solidity"; - rev = "1b71fd08998411b59c832aad0419cdfc71b19e92"; - sha256 = "0i2fnln5na3jdd41js285jwwz7v8bjijpzdjp7i1lrv57yy90kn6"; + rev = "d6c48a1cb64d3c8a825dc0d06c839f2cacd4d289"; + sha256 = "14v71xf3z60s1fhpsz8b3l1v4na2ds0ddcp41y412fnrg4scbrhr"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/bb9df5ec0692352b6494d435d11166f4ea26c99e/recipes/solidity-mode"; - sha256 = "1qdzdivrf5yaa80p61b9r1gryw112v5l2m2jkvkc7glhkhrcvwsx"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/02d3fdae111b14a87aaa7a1b3f44e545c5e3d2ac/recipes/solidity-mode"; + sha256 = "15vz3ayl1p3dn2cavm68rqv901c1b7dxm2j8iazwzj3q15ln8xvn"; name = "recipe"; }; packageRequires = []; @@ -90398,12 +93066,12 @@ melpaBuild { pname = "sound-wav"; ename = "sound-wav"; - version = "20160725.724"; + version = "20181126.926"; src = fetchFromGitHub { owner = "syohex"; repo = "emacs-sound-wav"; - rev = "406868043761524118c27b1207be0f8bbda8798e"; - sha256 = "1vwszcxknkjq4q32vb4dab4rlyd7w0l3pl5rpl08haczmr2frl4d"; + rev = "49a9f10334b914cf6429e49b5449e0711a3aa251"; + sha256 = "1zg32gn0r06qcp6i5fxwns8xv5nqpc6hfzqajwj0hfvhkqdndv4j"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/8333470e3d84d5433be489a23e065c876bed2ab2/recipes/sound-wav"; @@ -90630,12 +93298,12 @@ melpaBuild { pname = "spaceline"; ename = "spaceline"; - version = "20180628.46"; + version = "20181223.1224"; src = fetchFromGitHub { owner = "TheBB"; repo = "spaceline"; - rev = "29ced71ed0097cd5eba15d6bfdbafd9d18f5bd82"; - sha256 = "1l929zlma30h4b3bkldzn0pp5wps4ws0pylzw141nj0l3r7b3lcg"; + rev = "ae45a819ea7ae52febb4d7d82170af44dff10f19"; + sha256 = "01dyi0s8yilkgs0ifi489004195l4zrm9dqbybip4136l9zmlini"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/46e4c876aeeb0bb0d0e81dcbb8363a5db9c3ff61/recipes/spaceline"; @@ -90684,12 +93352,12 @@ melpaBuild { pname = "spacemacs-theme"; ename = "spacemacs-theme"; - version = "20180817.604"; + version = "20181107.925"; src = fetchFromGitHub { owner = "nashamri"; repo = "spacemacs-theme"; - rev = "3e1768ec49f0d5e58a66d7a9238a4adb4e9e43b6"; - sha256 = "18cv8inizksi2in232f6h237y58cf95zlly0zdjhyll179dczii5"; + rev = "c162ad13e4ae1965619012332d3b5f57c9172e98"; + sha256 = "03p9wcbyjy8jywdkmnql415l1y1dpb2fvlanqkp9lhzs4kxf1w2x"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/6c8ac39214856c1598beca0bd609e011b562346f/recipes/spacemacs-theme"; @@ -91031,14 +93699,14 @@ ename = "spiral"; version = "20180223.340"; src = fetchFromGitHub { - owner = "unrepl"; + owner = "Unrepl"; repo = "spiral"; rev = "907b9792467139a942ba7b07ca0276b90770baf9"; sha256 = "1rggzzvya26abbzd8bc2kpv59kzgm75wqv1vwqnj9c8im1jvs1na"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/77609e10c836a26de43ddb304ecfa275e314da21/recipes/spiral"; - sha256 = "18rww2nfy5s22czabk71wqzrb53r0p2635872vr44b6kfwlb6qcw"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/35763febad20f29320d459394f810668db6c3353/recipes/spiral"; + sha256 = "074ymaksb3dgrsrdsi6xdlvigki5l2v66r8204xv50yc88z7l8qr"; name = "recipe"; }; packageRequires = [ a avy clojure-mode emacs highlight treepy ]; @@ -91106,12 +93774,12 @@ melpaBuild { pname = "spotify"; ename = "spotify"; - version = "20170302.2229"; + version = "20181030.110"; src = fetchFromGitHub { owner = "remvee"; repo = "spotify-el"; - rev = "2825b5cac8406969405096660aeab6e5fef765eb"; - sha256 = "1270c4l7dxxsnzkifwa0ncgv078da9pzhlyxpdfbdbsj8w70plzm"; + rev = "29577cf1188161f98b8358c149aaf47b2c137902"; + sha256 = "0h6yhfvvyd9sd5d37d3ng3z56zfb546vl95qjq16kcvxq00hdn1v"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/855ea20024b606314f8590129259747cac0bcc97/recipes/spotify"; @@ -91342,12 +94010,12 @@ melpaBuild { pname = "sql-impala"; ename = "sql-impala"; - version = "20160427.1658"; + version = "20181217.2010"; src = fetchFromGitHub { owner = "jterk"; repo = "sql-impala"; - rev = "68248e9851b153850542ed1f709298bb9ab59610"; - sha256 = "12zyw8b8s3jga560wv141gc4yvlbldvfcmpibns8wrpx2w8aivfj"; + rev = "466e7c0c789ec3e5e8a276c8f6754f91bb584c3e"; + sha256 = "02psgbm06wivdm2cmjnj2vy05lnljxn44hj2arw2fr7x2qwn9r35"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/855ea20024b606314f8590129259747cac0bcc97/recipes/sql-impala"; @@ -91360,6 +94028,32 @@ license = lib.licenses.free; }; }) {}; + sqlformat = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "sqlformat"; + ename = "sqlformat"; + version = "20181121.1330"; + src = fetchFromGitHub { + owner = "purcell"; + repo = "sqlformat"; + rev = "bb1a9e6055e382dfb0810cf7dea1ebc5552908f5"; + sha256 = "0j2mdwzpq3k2hj1p4xxvdm22inh9bxinnd187mnz86zc8dy4lbnd"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/6bdaa1ccae12f2ea779ac6989607d8027feac2c9/recipes/sqlformat"; + sha256 = "07lf2gx629429b41qr04gl98gplb538gb5hw7idzrmi3higrmv8m"; + name = "recipe"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://melpa.org/#/sqlformat"; + license = lib.licenses.free; + }; + }) {}; sqlite = callPackage ({ fetchFromGitLab , fetchurl , lib @@ -91443,12 +94137,12 @@ melpaBuild { pname = "srcery-theme"; ename = "srcery-theme"; - version = "20180825.436"; + version = "20181231.503"; src = fetchFromGitHub { owner = "srcery-colors"; repo = "srcery-emacs"; - rev = "ff83762f00c2d36f002c2aad1d939d96b6d04fb4"; - sha256 = "1xi3cvlqim6vp7iv87481g0axcv9m2mnjrsmg7mdwz220zxkn42h"; + rev = "561d83d5bbd4c1c939ad9f52863e75b969af320d"; + sha256 = "19zxc4f559s6x0qlkb181h1wpyd0mrdl08dc3fhn9h1hg1lmn11p"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/2654fc05f55c7fab7d550b7db1d187edc9ff0f42/recipes/srcery-theme"; @@ -91598,12 +94292,12 @@ melpaBuild { pname = "ssh-config-mode"; ename = "ssh-config-mode"; - version = "20180609.251"; + version = "20180922.251"; src = fetchFromGitHub { owner = "jhgorrell"; repo = "ssh-config-mode-el"; - rev = "5429a02b8f7431c40e4a50e5d1ac2cd2d08c6511"; - sha256 = "1fid0713f0m1pwwppwh49k5cyrr3akvksfj3g9p4lndpqgwc1rcd"; + rev = "1ec676c021269c7b9cf814cf1d12f6acdcc25588"; + sha256 = "14d9zzfks4kqfqp54qzb2m74bd0rb25sff9rx2d90b5svmvbg15p"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/750b16ee631b4c2014f2ebf767609bab4b8ee421/recipes/ssh-config-mode"; @@ -91624,12 +94318,12 @@ melpaBuild { pname = "ssh-deploy"; ename = "ssh-deploy"; - version = "20180818.2246"; + version = "20181219.2316"; src = fetchFromGitHub { owner = "cjohansson"; repo = "emacs-ssh-deploy"; - rev = "67313e2c1c795317bf2bfb634705499757e4b889"; - sha256 = "1j1hcyl3vsx4w8q6zyrsl572pxl6gmrznsjsblaxsn4qqh3h0c52"; + rev = "4c3eee5feb4c3d1f08a60d4a286fa9a571dc7c57"; + sha256 = "19233qz2md4j6mpimr3qgxb63n21hywnqj6pf0hyzzni6p3d50q5"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/855ea20024b606314f8590129259747cac0bcc97/recipes/ssh-deploy"; @@ -91651,12 +94345,12 @@ melpaBuild { pname = "ssh-tunnels"; ename = "ssh-tunnels"; - version = "20180703.1327"; + version = "20181129.736"; src = fetchFromGitHub { owner = "death"; repo = "ssh-tunnels"; - rev = "a6b6ae9a5d17afa9ea39ca8c071e889deefcf8a3"; - sha256 = "01j0yvii46bd46miihkyggw1lkcr76j03wiw682ir5i1s6lli9k9"; + rev = "903bfd0d2d225c7e37fcc8c7596bd0a387384f05"; + sha256 = "0idxzza4n7cdhaw56zvz549i0ciihm74bqbq5ivsabvqg07r6qwm"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/b093a3a9a836bae8ce37a21188c64e9a878066e8/recipes/ssh-tunnels"; @@ -92418,12 +95112,12 @@ melpaBuild { pname = "sublimity"; ename = "sublimity"; - version = "20170820.827"; + version = "20181121.511"; src = fetchFromGitHub { owner = "zk-phi"; repo = "sublimity"; - rev = "62b0c526c599a0178a16a75f16513fc1f93a0d53"; - sha256 = "0kncjm6133a84z9rvygn5dqnwdj036sw6cf1pi595rk3f9r2ccg5"; + rev = "4c8d0280815978fc11e1c5f86266a11c717b0c89"; + sha256 = "1618ba3m36crh2wmmisi3ls5ijdqrwr58yda810jik0b6fjzzacv"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/c1e78cd1e5366a9b6d04237e9bf6a7e73424be52/recipes/sublimity"; @@ -92552,12 +95246,12 @@ melpaBuild { pname = "suggest"; ename = "suggest"; - version = "20180725.1612"; + version = "20180916.1159"; src = fetchFromGitHub { owner = "Wilfred"; repo = "suggest.el"; - rev = "ce7be778b0b32bf679e5929d013c310b061b5541"; - sha256 = "1alb42drkc7wfn54nhaw07x6m2bpfdgkb6jcpl0z91kzgxb9kc7z"; + rev = "58ea3b20544410b90ca3286cbda3d71c823c3bf9"; + sha256 = "00xbr3fbdjbmvy9nswzqxliavarqkgfa5ms6irfnbpng1ypmcvgf"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/b9fd27e812549587dc2ec26bb58974177ff263ff/recipes/suggest"; @@ -92656,12 +95350,12 @@ melpaBuild { pname = "sunshine"; ename = "sunshine"; - version = "20180325.548"; + version = "20181029.954"; src = fetchFromGitHub { owner = "aaronbieber"; repo = "sunshine.el"; - rev = "ecaccac91010f8d464646a0360b1676be71e6600"; - sha256 = "0n9ppy22ijc2cgs5xix8nks7abn0shvh0v0f2ir1j7v1ckjsklc5"; + rev = "8959dea03377e61aaca0124ac8d2703daaae6b9a"; + sha256 = "1shzhl5bi5dkmvc07mc7sknm5id89iivjkcxsrdcw004g08hr8y0"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/4a0ff9a4ef4bbe8de722a4f77f4a56a851497ff1/recipes/sunshine"; @@ -92707,12 +95401,12 @@ melpaBuild { pname = "super-save"; ename = "super-save"; - version = "20171008.3"; + version = "20180929.27"; src = fetchFromGitHub { owner = "bbatsov"; repo = "super-save"; - rev = "1c8fbd5e18277e4af0ada2678a854b1c9072db38"; - sha256 = "0mh7xp71l9xybbv17b1rsbpa60bwjw79ql9krj1kzy2c2pv9hmff"; + rev = "62512f60d6685d8601e2021d95e77603b6d96885"; + sha256 = "0cn39d1qfm119bxb9sdl43ya2vvadfp22qwdn3j843wyf92hpdn4"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/9730b65787b26d3909952cf246a01bd349e5fbab/recipes/super-save"; @@ -92944,12 +95638,12 @@ melpaBuild { pname = "swift-mode"; ename = "swift-mode"; - version = "20180721.35"; + version = "20181207.2339"; src = fetchFromGitHub { owner = "swift-emacs"; repo = "swift-mode"; - rev = "d2f2f1da6085c6fad2709b951d6891dd139a6080"; - sha256 = "1ldf593qzbscwlngbabxb52kcpriwhglk95l82qs8y3q1x6aj0cw"; + rev = "cde97e20a8c80075920f0e01ec76de1816aed114"; + sha256 = "1igk1d585f4bj7pw2ikfh843sfp0k80ibjkwvsjjpx272lz57qqk"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/6440f81aed1fcddcaf7afeedb74520e605211986/recipes/swift-mode"; @@ -92997,12 +95691,12 @@ melpaBuild { pname = "swiper"; ename = "swiper"; - version = "20180813.925"; + version = "20181212.855"; src = fetchFromGitHub { owner = "abo-abo"; repo = "swiper"; - rev = "2f5576ae9bfa7167a697dc34df05ca621d32b344"; - sha256 = "0wl88ry7b1h2pkmhmlmmjz656sn9607w1ji9afvfwk7z0z8b2658"; + rev = "dd8a947997158bb107f250ff2e38278d1266ba0b"; + sha256 = "0c1l3jaz8ynwd3dx3i2s76srywxnmih8jalfzx4i2xhc9896ldcj"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/e64cad81615ef3ec34fab1f438b0c55134833c97/recipes/swiper"; @@ -93076,12 +95770,12 @@ melpaBuild { pname = "switch-window"; ename = "switch-window"; - version = "20180723.2118"; + version = "20181103.2040"; src = fetchFromGitHub { owner = "dimitri"; repo = "switch-window"; - rev = "ceade03eba1b735aefcac70eefbab6b582750c48"; - sha256 = "0m1rs8chfifkkqa71c2i3s4fl9nyn74a6rk00nfylishvw2r9xvl"; + rev = "204f9fc1a39868a2d16ab9370a142c8c9c7a0943"; + sha256 = "0rci96asgamr6qp6nkyr5vwrnslswjxcjd96yccy4aivh0g66yfg"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/7d2204e3b53ade1e400e143ac219f3c7ab63a1e9/recipes/switch-window"; @@ -93186,12 +95880,12 @@ melpaBuild { pname = "symbol-overlay"; ename = "symbol-overlay"; - version = "20180814.2040"; + version = "20181229.1408"; src = fetchFromGitHub { owner = "wolray"; repo = "symbol-overlay"; - rev = "a37404a6a0e76ee2033d3ab31c2248d30c89c63a"; - sha256 = "0iy0hf7mkpbddwszq3lpsg0ns1sc1rm4pzcb3gbljx7syrian29q"; + rev = "39a2ad8ba53a7af52e265efc74ddd7a912bc57c6"; + sha256 = "176zm3ydshajv8v2wyy8wrcmaz02whciiz79d0fmlzx687w56pim"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/c2a468ebe1a3e5a35ef40c59a62befbf8960bd7b/recipes/symbol-overlay"; @@ -93424,12 +96118,12 @@ melpaBuild { pname = "syntactic-close"; ename = "syntactic-close"; - version = "20180909.141"; + version = "20181026.931"; src = fetchFromGitHub { owner = "emacs-berlin"; repo = "syntactic-close"; - rev = "902dd0aafe962d1577d0cba2db743ba73bdb2478"; - sha256 = "135k2nffhh01hyapamwwqyd30mlpfxf3g470f9xbsi8rkvfq8k59"; + rev = "426975d73c474eb4e6a0af20f34455aac6e89610"; + sha256 = "1gyhz4mzd5gcfy9mx65aym8abz4wfdgy229aj1ng1c0j32fjk9rm"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/f2c15c0c8ee37a1de042a974c6daddbfa7f33f1d/recipes/syntactic-close"; @@ -93499,12 +96193,12 @@ melpaBuild { pname = "system-packages"; ename = "system-packages"; - version = "20180911.1548"; + version = "20181219.821"; src = fetchFromGitLab { owner = "jabranham"; repo = "system-packages"; - rev = "b408ce44f56b1b6a038b511691cef94e30653793"; - sha256 = "1997da6jbpffq415dj8mglf2df5hxpifri3lrdhv9ciqy381xs1q"; + rev = "25da03bab9757009d095dc1ef3e93d8b1ef2d7c4"; + sha256 = "1qy9617dfcnaaa2ppw90chl7x4mkdm47j1ayis9s266gcphd14rk"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/7d3c7af03e0bca3f834c32827cbcca29e29ef4db/recipes/system-packages"; @@ -93913,12 +96607,12 @@ melpaBuild { pname = "tao-theme"; ename = "tao-theme"; - version = "20180911.1053"; + version = "20181222.948"; src = fetchFromGitHub { owner = "11111000000"; repo = "tao-theme-emacs"; - rev = "0ec17c48f428fd3139fe5fdf34f2acb020410f1e"; - sha256 = "070w0p31cbyi26zlssbj6qpw1s069vn2h7sam4hpa8q2dafxpr7i"; + rev = "7e4edd7898c5bc3d053799f521f16d1da4ccd161"; + sha256 = "0x04wq9qpsjq5xgfx8j10jx3zdidgdjy8bdc7rdnzahjqbszhwi7"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/94b70f11655944080507744fd06464607727ecef/recipes/tao-theme"; @@ -93938,12 +96632,12 @@ melpaBuild { pname = "taskpaper-mode"; ename = "taskpaper-mode"; - version = "20180820.711"; + version = "20181113.131"; src = fetchFromGitHub { owner = "saf-dmitry"; repo = "taskpaper-mode"; - rev = "b09e5d6afb2d3cd0b5349835d2c2ce79d6f00cbd"; - sha256 = "176vll1c4j7hcjxsarl9668l2v0hpkdpxx7in45yvn89piniyg2l"; + rev = "db15fa52d5f96085665b04265918c3c78a0ec059"; + sha256 = "1c771plbh2421lvdhfjbr5wfdp9pnnfgir52hiymq30ij804nqr3"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/f969b1cd58dfd22041a8a2b116db0f48e321e546/recipes/taskpaper-mode"; @@ -94047,12 +96741,12 @@ melpaBuild { pname = "tc"; ename = "tc"; - version = "20180715.6"; + version = "20181108.2028"; src = fetchFromGitHub { owner = "kanchoku"; repo = "tc"; - rev = "91bd7e29322f7477c9adb6a816c6207dcb48f6c1"; - sha256 = "1gb8zqnsaljm2qq2grk5y5pgrj8kg2cg0m4x6f6ngnf0bpfq4zjs"; + rev = "5496f8dee27c4d925977da3cca6fcacf9b45bc58"; + sha256 = "1clf56sxvrky05qzk5kri01r0jz4zfwysxzs3iix0aljrz8mdi8w"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/9fddfc79ed2c614c33e90ba80f300912fdab88a3/recipes/tc"; @@ -94142,6 +96836,32 @@ license = lib.licenses.free; }; }) {}; + teacode-expand = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "teacode-expand"; + ename = "teacode-expand"; + version = "20181230.2240"; + src = fetchFromGitHub { + owner = "raguay"; + repo = "TeaCode-Expand"; + rev = "7df6f9ec95da1fb47bbae489bb3f2c27ed3a9b3a"; + sha256 = "0z0297zrvd8zf8bmf4kf9gzf6qajs4abdy6appb3swz3z2v3nqkb"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/8b23b0f701627ed18886f29ffd33ef7fb1f82e04/recipes/teacode-expand"; + sha256 = "1hkh7mzzwrk7a8ihss7kyncw9mkwr4iw06gv5y6kg806qc4f1nn3"; + name = "recipe"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://melpa.org/#/teacode-expand"; + license = lib.licenses.free; + }; + }) {}; telepathy = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -94178,12 +96898,12 @@ melpaBuild { pname = "telephone-line"; ename = "telephone-line"; - version = "20180907.1507"; + version = "20181119.2055"; src = fetchFromGitHub { owner = "dbordak"; repo = "telephone-line"; - rev = "3cb6ab4afcefec1e08d5ca70f9bd4320a37a7fcf"; - sha256 = "055vzi64w6wpcrpghnx6nj74ww389av2g95253bs4sm8254b2kzj"; + rev = "74068cd04a4a34095fe816ae71880ca271f2ea9e"; + sha256 = "0rar24x5qi0zbxxnci7wnjzsw3qvyiq5ss8mv9l9bnxxwv2gf8m2"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/9c998b70365fb0a210c3b9639db84034c7d45097/recipes/telephone-line"; @@ -94585,12 +97305,12 @@ melpaBuild { pname = "tern"; ename = "tern"; - version = "20170925.1333"; + version = "20181107.2322"; src = fetchFromGitHub { owner = "ternjs"; repo = "tern"; - rev = "5c395b5d696aad5a185724f56c74a7f83349f3bd"; - sha256 = "11sp1jz0fn8gnc28qvyrmc7qxr1gn5r3vxv6gp46p7cmgg9mflri"; + rev = "40a0c74db3888b997a9115720ff91c399bb1b146"; + sha256 = "0dh0bfs0knikzn4gvjh9274yhbg3ndw46qmj4jy0kxh7gfl2lpkh"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/eaecd67af24050c72c5df73c3a12e717f95d5059/recipes/tern"; @@ -94852,12 +97572,12 @@ melpaBuild { pname = "texfrag"; ename = "texfrag"; - version = "20180318.1647"; + version = "20181001.53"; src = fetchFromGitHub { owner = "TobiasZawada"; repo = "texfrag"; - rev = "8bb74e2d38139d6497545581a3507c6f7b4fa5e2"; - sha256 = "03pqbx2mwz2lz7027da0aiyh12f2jifdfvxh0s83qshsnw6sipmk"; + rev = "87ebd2653c39abe0b02a91ab2182e6fff562f6c7"; + sha256 = "0fi9cih597g6iigrvdyfxa9cc3irsvfcbzf74fkp62ggpmqlal90"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/756649bbe2dc6233c66c3d128a8096be12231078/recipes/texfrag"; @@ -95203,26 +97923,27 @@ license = lib.licenses.free; }; }) {}; - thrift = callPackage ({ fetchFromGitHub + thrift = callPackage ({ emacs + , fetchFromGitHub , fetchurl , lib , melpaBuild }: melpaBuild { pname = "thrift"; ename = "thrift"; - version = "20140312.1348"; + version = "20180905.350"; src = fetchFromGitHub { - owner = "apache"; - repo = "thrift"; - rev = "98bebac1520bcf1dd5392535e06a751d7b2af58e"; - sha256 = "185hrigx5q15c2jimzbklmi4z6kzigsarqwr805llsmsmg9pp3wi"; + owner = "facebook"; + repo = "fbthrift"; + rev = "a1960cc1a78ada27872913a145395f6bd45c8fd9"; + sha256 = "1az66smmfdkm4rzb8pripsb8ymyvvpncpapg69byf0hqhklln55z"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/857ab7e3a5c290265d88ebacb9685b3faee586e5/recipes/thrift"; - sha256 = "0p1hxmm7gvhyigz8aylncgqbhk6cyf75rbcqis7x552g605mhiy9"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/0dca078c0c467bc44290a922ad5627d6a34194f8/recipes/thrift"; + sha256 = "13isxx16h7rg8q5a68qmgrf3rknhfrx1qh6fb5njlznfwhrqry3y"; name = "recipe"; }; - packageRequires = []; + packageRequires = [ emacs ]; meta = { homepage = "https://melpa.org/#/thrift"; license = lib.licenses.free; @@ -95288,12 +98009,12 @@ melpaBuild { pname = "tidal"; ename = "tidal"; - version = "20180410.1245"; + version = "20181219.100"; src = fetchFromGitHub { owner = "tidalcycles"; repo = "Tidal"; - rev = "ef658d3df0604f3dec955a150509ec1cc68fbd98"; - sha256 = "1ild1gnbcrw830b8d3byvqlmgm27609dgailmxgin6z7g1pg4r7z"; + rev = "93d30b30403bbca81d69488c6882e42f2d8dc18d"; + sha256 = "09gs8xby9bbs3fzbmja7w8rkzfyzkmslrh7hk71sh5fmamhmx53k"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/16a26659a16199b5bb066be6e5c4a40419bda018/recipes/tidal"; @@ -95318,12 +98039,12 @@ melpaBuild { pname = "tide"; ename = "tide"; - version = "20180809.2103"; + version = "20181229.1605"; src = fetchFromGitHub { owner = "ananthakumaran"; repo = "tide"; - rev = "d21568528c9bb1ba55627f548c7012f6bcc2fe58"; - sha256 = "04vhz8f00m5i36szml9npn4hwmcm2rp131r7m3z6dd0n01x8qr9k"; + rev = "2ff6e2f1b6c647d06a87dc9cc05cbf5110826875"; + sha256 = "1w4qyg96hknspybchfwa5bi3lns6qq8sp53vxbgrrazhwjr5np6f"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/a21e063011ebbb03ac70bdcf0a379f9e383bdfab/recipes/tide"; @@ -95720,6 +98441,34 @@ license = lib.licenses.free; }; }) {}; + tmux-pane = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild + , names + , s }: + melpaBuild { + pname = "tmux-pane"; + ename = "tmux-pane"; + version = "20181210.410"; + src = fetchFromGitHub { + owner = "laishulu"; + repo = "emacs-tmux-pane"; + rev = "5e83ec65a1d38af9b8a389bdf34a78d13437e63d"; + sha256 = "1451d51ml36i1pgksjkd4x2y8zjf4in9q8m6gda3b25v57fnkg2i"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/8bc165e115a2c457e44ac2762cf6a9f07f1b99c4/recipes/tmux-pane"; + sha256 = "0mv5y367i1wmk5kp8ms09xhrwvb4cwa08p39qy6mkakdhiby5m9q"; + name = "recipe"; + }; + packageRequires = [ emacs names s ]; + meta = { + homepage = "https://melpa.org/#/tmux-pane"; + license = lib.licenses.free; + }; + }) {}; toc-org = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -95727,12 +98476,12 @@ melpaBuild { pname = "toc-org"; ename = "toc-org"; - version = "20180815.27"; + version = "20181108.821"; src = fetchFromGitHub { owner = "snosov1"; repo = "toc-org"; - rev = "ce9e49303c602c30c58ae98d3ce5202e8419a3bc"; - sha256 = "17vnzdzjbbiyyk0pz532fj5h4x60varl4n3yaswd52mxzhvzn1fw"; + rev = "ebff38bfa4cc95476a20a349014e2d1862ff4647"; + sha256 = "0ml075741iw9n4apiy9iv30wx4bgzpn6iisrzx3mxjl85kgmlmf2"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/1305d88eca984a66039444da1ea64f29f1950206/recipes/toc-org"; @@ -96495,16 +99244,16 @@ melpaBuild { pname = "treemacs"; ename = "treemacs"; - version = "20180910.832"; + version = "20181223.519"; src = fetchFromGitHub { owner = "Alexander-Miller"; repo = "treemacs"; - rev = "7784111791e38bd9a1c60c32e9b186e029cf8e78"; - sha256 = "021rzb6k18grj17z6l2d7qdp5j9kr9wdywl72lfkp1jlykqjgq1b"; + rev = "c2a9b647c9ce61ecdb691c5217b5cb463db776d9"; + sha256 = "1nsccpvxllj7yy0lsx643hcfs2wb0wn107pn13mkq0r16dil34c3"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/91038c1ab2f463102263dcc3701c0fdaad55de4c/recipes/treemacs"; - sha256 = "1wcsn0kzrbawyyhxmsmrsxr1vp0llkxw6r7zx53pwyc82ia64nlv"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/37cca017cf529a0553ba73bcb824a945ec8b1137/recipes/treemacs"; + sha256 = "0is4waygw902vkha4jwav0i05298zhf4d559m91gmsfg1cfrlrr3"; name = "recipe"; }; packageRequires = [ ace-window cl-lib dash emacs f ht hydra pfuture s ]; @@ -96522,16 +99271,16 @@ melpaBuild { pname = "treemacs-evil"; ename = "treemacs-evil"; - version = "20180803.317"; + version = "20181227.747"; src = fetchFromGitHub { owner = "Alexander-Miller"; repo = "treemacs"; - rev = "82061efe99e34ac69367726d65fa0f517947b40b"; - sha256 = "0f2ybaf149ji54rgf7q9xbdx55jr2jgz9qbahsh2q7gl800nkg17"; + rev = "bd32972d009d810380cebf6ad2c305a2c66fc496"; + sha256 = "04rbfqjkydn8mv3k2843bnqvfglvjgg3s3i5mp858yrkvy39a2rz"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/91038c1ab2f463102263dcc3701c0fdaad55de4c/recipes/treemacs-evil"; - sha256 = "1i2mxqwnqb2jz775qg3z4lf7pk4mgi646fyyi2la5gdcnq6a46mg"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/37cca017cf529a0553ba73bcb824a945ec8b1137/recipes/treemacs-evil"; + sha256 = "144klr1gqqzfqy7fx9lzngc2vljy6mnz7awk0z5f8vfclczkihw2"; name = "recipe"; }; packageRequires = [ evil treemacs ]; @@ -96540,6 +99289,33 @@ license = lib.licenses.free; }; }) {}; + treemacs-icons-dired = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild + , treemacs }: + melpaBuild { + pname = "treemacs-icons-dired"; + ename = "treemacs-icons-dired"; + version = "20181228.1225"; + src = fetchFromGitHub { + owner = "Alexander-Miller"; + repo = "treemacs"; + rev = "c2a82e2db25522561ef3ba520338397b89b57f07"; + sha256 = "1ahvnil9cf3dcnrcp7qgx1zcs60rizxd38g7cc4vrs2a7xfb2ibw"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/37cca017cf529a0553ba73bcb824a945ec8b1137/recipes/treemacs-icons-dired"; + sha256 = "075897b11aaj9h59gbcldz2wd5557h86pq28qkijbgay4i3piv9v"; + name = "recipe"; + }; + packageRequires = [ emacs treemacs ]; + meta = { + homepage = "https://melpa.org/#/treemacs-icons-dired"; + license = lib.licenses.free; + }; + }) {}; treemacs-projectile = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -96549,16 +99325,16 @@ melpaBuild { pname = "treemacs-projectile"; ename = "treemacs-projectile"; - version = "20180614.1021"; + version = "20181227.747"; src = fetchFromGitHub { owner = "Alexander-Miller"; repo = "treemacs"; - rev = "cbc75759fd54a772fcb67bd8babacf1b2020ba88"; - sha256 = "18aafgiircgb5max35zqzdfb0yjmgjqacax9sfy39ihh9x9z0vc1"; + rev = "bd32972d009d810380cebf6ad2c305a2c66fc496"; + sha256 = "04rbfqjkydn8mv3k2843bnqvfglvjgg3s3i5mp858yrkvy39a2rz"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/91038c1ab2f463102263dcc3701c0fdaad55de4c/recipes/treemacs-projectile"; - sha256 = "1vyifik30673bwlfvbmw8pzz7f3wd4q6zzssvbj8d23zhk8kh8vc"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/37cca017cf529a0553ba73bcb824a945ec8b1137/recipes/treemacs-projectile"; + sha256 = "1lldvpasvgsd5xvnlafddqp47w7rdvf3vqfhr26rxn99kj5s9xzp"; name = "recipe"; }; packageRequires = [ projectile treemacs ]; @@ -96707,12 +99483,12 @@ melpaBuild { pname = "try"; ename = "try"; - version = "20170226.805"; + version = "20181203.1836"; src = fetchFromGitHub { owner = "larstvei"; repo = "Try"; - rev = "271b0a362cadf44d0694628b9e213f54516ef913"; - sha256 = "1fvpi02c6awyrwg2yqjapvcv4132qvmvd9bkbwpjmndxpicsann3"; + rev = "8831ded1784df43a2bd56c25ad3d0650cdb9df1d"; + sha256 = "0y26ybdsljph49w2834wssxgdx8ij7b6v4gp8jpgnbx118gr4jsz"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/13c0ed40ad02fa0893cbf4dd9617dccb624f064b/recipes/try"; @@ -96732,16 +99508,16 @@ melpaBuild { pname = "ts-comint"; ename = "ts-comint"; - version = "20171105.2247"; + version = "20181218.2319"; src = fetchFromGitHub { - owner = "josteink"; + owner = "emacs-typescript"; repo = "ts-comint"; - rev = "8817dc7b3a6eb78c3cad42e5677c2113274a1963"; - sha256 = "17cw9710ib80d626vv6bx6vdjdin78h6pja1lsr4r6mz8c5ihwxj"; + rev = "b280cfe9fe5ecec9d5970043b6b2866f644b39ad"; + sha256 = "15lf20w3diixcbpsw3vdqlpnpjp3v1spgxkiymq05q1mcy30n39n"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/84e7004395083b66fce7ff4676af818bc798058a/recipes/ts-comint"; - sha256 = "18swvzkzcwn0wks58flsjpn9dddzcznij67xifyz6009l4fgdrzd"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/4a1c08c22704ac689235b8d5cc36cc437ba7356a/recipes/ts-comint"; + sha256 = "0cmh8ww6myiaz42867d0dqfi64lxrbna1lcwl6x6rmdgf15k6c1m"; name = "recipe"; }; packageRequires = []; @@ -96829,6 +99605,7 @@ }; }) {}; tuareg = callPackage ({ caml + , emacs , fetchFromGitHub , fetchurl , lib @@ -96836,19 +99613,19 @@ melpaBuild { pname = "tuareg"; ename = "tuareg"; - version = "20180914.1324"; + version = "20181218.1954"; src = fetchFromGitHub { owner = "ocaml"; repo = "tuareg"; - rev = "40f974d3b0777f9666928d0b4a5126a4c7491b17"; - sha256 = "049nw6pkkxnq3k4vv4ksl93csiybm7q29xigdkc7cr9cls6h8jf0"; + rev = "f1fb36d2dbc34c989300662a4d94d7cdd8234f9e"; + sha256 = "16blfmnf2hgzlwrn23klnwwsq5kfc2d22zyfccpbi7x7amx2x2ln"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/01fb6435a1dfeebdf4e7fa3f4f5928bc75526809/recipes/tuareg"; sha256 = "0wx723dmjlpm86xdabl9n8p22zbbxpapyfn6ifz0b0pvhh49ip7q"; name = "recipe"; }; - packageRequires = [ caml ]; + packageRequires = [ caml emacs ]; meta = { homepage = "https://melpa.org/#/tuareg"; license = lib.licenses.free; @@ -97119,12 +99896,12 @@ melpaBuild { pname = "twittering-mode"; ename = "twittering-mode"; - version = "20180818.751"; + version = "20181121.602"; src = fetchFromGitHub { owner = "hayamiz"; repo = "twittering-mode"; - rev = "ab26e683674a854a1e518995d60967ff417b2cff"; - sha256 = "1z5mv2n7pbkm0mvcgkcs70ngp46n5rmz8ff1s3b7p71k8j1sklsw"; + rev = "114891e8fdb4f06b1326a6cf795e49c205cf9e29"; + sha256 = "1w1p5pg3ambixhc5l7490wf5qasw3xv9qg6f0xhfsnqk44fp70ia"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/091dcc3775ec2137cb61d66df4e72aca4900897a/recipes/twittering-mode"; @@ -97137,53 +99914,27 @@ license = lib.licenses.free; }; }) {}; - typed-clojure-mode = callPackage ({ cider - , clojure-mode - , fetchFromGitHub - , fetchurl - , lib - , melpaBuild }: - melpaBuild { - pname = "typed-clojure-mode"; - ename = "typed-clojure-mode"; - version = "20151003.1122"; - src = fetchFromGitHub { - owner = "typedclojure"; - repo = "typed-clojure-mode"; - rev = "3abd53d8cc1ad77ffe76e02849d0ab7731fd8364"; - sha256 = "1i826xq77nh4s7qlj63r2iznbn319l1l3fzpbjb2nj0m00bwvxl6"; - }; - recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/961471c194b508a5025f00a5be02d316b26f330a/recipes/typed-clojure-mode"; - sha256 = "1579zkhk2lwl5ij7dm9n2drggs5fmhpljrshc4ghhvig7nlyqjy3"; - name = "recipe"; - }; - packageRequires = [ cider clojure-mode ]; - meta = { - homepage = "https://melpa.org/#/typed-clojure-mode"; - license = lib.licenses.free; - }; - }) {}; - typescript-mode = callPackage ({ fetchFromGitHub + typescript-mode = callPackage ({ emacs + , fetchFromGitHub , fetchurl , lib , melpaBuild }: melpaBuild { pname = "typescript-mode"; ename = "typescript-mode"; - version = "20180708.1003"; + version = "20181221.105"; src = fetchFromGitHub { - owner = "ananthakumaran"; + owner = "emacs-typescript"; repo = "typescript.el"; - rev = "f9cd0dd539d5d23f2b466de0cf20f9b0aef07258"; - sha256 = "1f6j2xyws9ksv192si4hznyhglhqgk7v1i31wm2kf7m007yw2ibi"; + rev = "e608305ade7145df5637b22bbd2a1d190aaff048"; + sha256 = "11cj1gis2mirz8kfljgam5dzd9c0wqzsb0jkxc9xrz48akpyikqx"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/d3f534a1e2cee4ad2e32e32802c5080207417b3d/recipes/typescript-mode"; - sha256 = "01jyqy44ir59n9c2f6gh4xzwfmzdpnys1lw4lnsy6kirqgbsq9ha"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/94455323364d5a6b00e2786d577134eb350826b4/recipes/typescript-mode"; + sha256 = "1abnik2dq0zfnp8pk8x6zy962qww78xadm87xyiwz17559g88d82"; name = "recipe"; }; - packageRequires = []; + packageRequires = [ emacs ]; meta = { homepage = "https://melpa.org/#/typescript-mode"; license = lib.licenses.free; @@ -97249,12 +100000,12 @@ melpaBuild { pname = "typit"; ename = "typit"; - version = "20180317.107"; + version = "20181231.2302"; src = fetchFromGitHub { owner = "mrkkrp"; repo = "typit"; - rev = "4fe50d616fc60e77eb9b5a824c0a1ca4010b0746"; - sha256 = "0j5s86s9wb33fqw415mmkysdasyj3vdx9l8l6ca6f89ps6znr636"; + rev = "819a65ef22ec7a03c109aa7e8169e6ba174b17a1"; + sha256 = "0gvlb3vra01m8gbl0qqsy9lbkrmzfs8q33n626fny5hz23pba7l6"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/d17d019155e19c156f123dcd702f18cfba488701/recipes/typit"; @@ -97703,12 +100454,12 @@ melpaBuild { pname = "unicode-fonts"; ename = "unicode-fonts"; - version = "20150826.1532"; + version = "20181001.809"; src = fetchFromGitHub { owner = "rolandwalker"; repo = "unicode-fonts"; - rev = "a36597d83e0248bd0e6b2c1d5fb95bff72add527"; - sha256 = "0fbwncna6gxlynq9196djpkjhayzk8kxlsxg0gasdgqx1nyxl0mk"; + rev = "7b88ae84e589f6c8b9386b2fb5a02ff4ccb91169"; + sha256 = "07wzcfj92jiadgd6nj5rmxky2aiaxs89j7zywp877xdp4vv0v512"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/83459421dd2eb3d60ec668c3d5bb38d99ee64aff/recipes/unicode-fonts"; @@ -97751,6 +100502,32 @@ license = lib.licenses.free; }; }) {}; + unicode-math-input = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "unicode-math-input"; + ename = "unicode-math-input"; + version = "20181230.423"; + src = fetchFromGitHub { + owner = "astoff"; + repo = "unicode-math-input.el"; + rev = "6ad698bf4a8c64dd969ac58cf09ee66783cfcdce"; + sha256 = "0g72zh4a8mimmsiq53k0y9w4xmfhvdymksxdrkiygc3vji2jv6na"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/e0d39bc129500e55b99c11b3d27e042619777414/recipes/unicode-math-input"; + sha256 = "1hra3vf6nzh99piagbxsmp0sizvki2jl7qkfmlwd5nwmicw0ykrq"; + name = "recipe"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://melpa.org/#/unicode-math-input"; + license = lib.licenses.free; + }; + }) {}; unicode-progress-reporter = callPackage ({ emacs , fetchFromGitHub , fetchurl @@ -97988,26 +100765,27 @@ license = lib.licenses.free; }; }) {}; - unkillable-scratch = callPackage ({ fetchFromGitHub + unkillable-scratch = callPackage ({ emacs + , fetchFromGitHub , fetchurl , lib , melpaBuild }: melpaBuild { pname = "unkillable-scratch"; ename = "unkillable-scratch"; - version = "20160504.1903"; + version = "20181203.1521"; src = fetchFromGitHub { owner = "EricCrosson"; repo = "unkillable-scratch"; - rev = "0e1d9e1574e497171a7ccfbcb8c994cb9c5880da"; - sha256 = "0bhdqpxq6cly4b6v4ya1ksw0yfdb9g2f2ifbjn4gfcq6j4zszbdm"; + rev = "dac9dbed946a26829e6227ac15c0fa1d07ccd05f"; + sha256 = "0fgipv93x47cvyww07cqx8xa95jz36y6fy5rmaq40jnnmdkgq862"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/822ac5610f333e41b676a29ef45a6f8bfea3162e/recipes/unkillable-scratch"; sha256 = "0ghbpa9pf7k6vd2mjxkpqg2qfl4sd40ir6mrk1rxr1rv8s0afkf7"; name = "recipe"; }; - packageRequires = []; + packageRequires = [ emacs ]; meta = { homepage = "https://melpa.org/#/unkillable-scratch"; license = lib.licenses.free; @@ -98076,12 +100854,12 @@ melpaBuild { pname = "uptimes"; ename = "uptimes"; - version = "20180416.623"; + version = "20190101.1216"; src = fetchFromGitHub { owner = "davep"; repo = "uptimes.el"; - rev = "5e81f8bb419836602819045e7d5a74b76ad3e69c"; - sha256 = "04l452k249s3ilfj0da0k7rrfyjnxxdsipa2al46xqjds8l3h2rn"; + rev = "deca207e40f713f6006f9d4cd12f91b3eaf71c53"; + sha256 = "0v9iyvdgqli80lf533dia9c05fia0xsc1wwiinwhlqm598wvf4sd"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/72099e35ce3e34ec6afc6a3f87a4da07ec91499a/recipes/uptimes"; @@ -98178,12 +100956,12 @@ melpaBuild { pname = "use-package"; ename = "use-package"; - version = "20180715.1101"; + version = "20181119.1550"; src = fetchFromGitHub { owner = "jwiegley"; repo = "use-package"; - rev = "3fb8f39f5901a4c0ef7887283e56e60b541675ea"; - sha256 = "0am5kh073x52lrh1225m5wl4r18wffznlvhrrmm1wbya6n406q9h"; + rev = "39a8b8812c2c9f6f0b299e6a04e504ef393694ce"; + sha256 = "1b7mjjh0d6fmkkd9vyj64vca27xqhga0nvyrrcqxpqjn62zq046y"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/51a19a251c879a566d4ae451d94fcb35e38a478b/recipes/use-package"; @@ -98207,12 +100985,12 @@ melpaBuild { pname = "use-package-chords"; ename = "use-package-chords"; - version = "20180703.1258"; + version = "20181024.1622"; src = fetchFromGitHub { owner = "jwiegley"; repo = "use-package"; - rev = "4f0f5856798b8575d3d466fce2a3aed0ebf1acf1"; - sha256 = "1j1wgyhb0lvj0znkq56q5vv3irfgb6w3mwpcrvxq0b0wkwr121gz"; + rev = "763bf5337dab14b318a3ddce29140de1ed8fb35b"; + sha256 = "08v4rsl3x5dj7ihpnzbyxjbg2ls2kybcsb0rcxjh5anj4hmcsyly"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/6240afa625290187785e4b7535ee7b0d7aad8969/recipes/use-package-chords"; @@ -98278,6 +101056,33 @@ license = lib.licenses.free; }; }) {}; + use-package-hydra = callPackage ({ emacs + , fetchFromGitLab + , fetchurl + , lib + , melpaBuild + , use-package }: + melpaBuild { + pname = "use-package-hydra"; + ename = "use-package-hydra"; + version = "20181227.2345"; + src = fetchFromGitLab { + owner = "to1ne"; + repo = "use-package-hydra"; + rev = "8cd55a1128fbdf6327bb38a199d206225896d146"; + sha256 = "19dja25illcvwpx8j1kigw8dzby41bm57prx1bhaxkmsakxyl863"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/28589bb76442601930a4591e200c8e1db119caf6/recipes/use-package-hydra"; + sha256 = "0q2qfav2y1p6vxfvdblqlpjmj0z7z8w843jpry9g07d8kc4959f6"; + name = "recipe"; + }; + packageRequires = [ emacs use-package ]; + meta = { + homepage = "https://melpa.org/#/use-package-hydra"; + license = lib.licenses.free; + }; + }) {}; use-ttf = callPackage ({ emacs , fetchFromGitHub , fetchurl @@ -98287,12 +101092,12 @@ melpaBuild { pname = "use-ttf"; ename = "use-ttf"; - version = "20180608.2252"; + version = "20181206.902"; src = fetchFromGitHub { owner = "jcs090218"; repo = "use-ttf"; - rev = "be1599e10ae5c095cd263a1d9be3e8270f770f55"; - sha256 = "141gpnpj4gia7wyn60v24r0ysr0m2cx0p3sdh956hsk6bh29l78h"; + rev = "569b5df758bb85b69a98b3bed108b0735179eed9"; + sha256 = "0ama7qqi32vp5mgsdbz6vixp6h5jhkq1m82jqrrgddcd5ih8zan1"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/8af853b2db58300ba1685e3547a9f96c05b04df6/recipes/use-ttf"; @@ -98339,12 +101144,12 @@ melpaBuild { pname = "utop"; ename = "utop"; - version = "20180706.1549"; + version = "20181010.1455"; src = fetchFromGitHub { owner = "diml"; repo = "utop"; - rev = "48100fcf769bdaeb4a6c93bbb33c37b85c1dcb10"; - sha256 = "1cr1i5ywn9abqbrl4iq1c82vdjwrbh43v67zv1a8i4fvh99yzlv1"; + rev = "ea38850e606dd18c94e2ccabc28485fec1c8f91f"; + sha256 = "0g7mj1qag9d7mn58l3lh7as0w4bj7rq3r6d3mykafgyjaajsxnx0"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/30489fe52b4031184e54f994770aa3291257bc9d/recipes/utop"; @@ -98666,6 +101471,32 @@ license = lib.licenses.free; }; }) {}; + vc-hgcmd = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "vc-hgcmd"; + ename = "vc-hgcmd"; + version = "20181228.57"; + src = fetchFromGitHub { + owner = "muffinmad"; + repo = "emacs-vc-hgcmd"; + rev = "aef3092eb1d81e5fbcb65d92c519c587143fc8dc"; + sha256 = "1wv1jpl4s7vfvy1yx3kq64qpxcnjk2rv23wphr9z474bi6q776ac"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/111142342ab81dcaa88a831ba620be499a334c3f/recipes/vc-hgcmd"; + sha256 = "11p8r94s72x47nkxlarxwy33im167jpjas8b9i8dkrz2iggwn5xk"; + name = "recipe"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://melpa.org/#/vc-hgcmd"; + license = lib.licenses.free; + }; + }) {}; vc-msg = callPackage ({ emacs , fetchFromGitHub , fetchurl @@ -98718,31 +101549,6 @@ license = lib.licenses.free; }; }) {}; - vcl-mode = callPackage ({ fetchFromGitHub - , fetchurl - , lib - , melpaBuild }: - melpaBuild { - pname = "vcl-mode"; - ename = "vcl-mode"; - version = "20170119.1251"; - src = fetchFromGitHub { - owner = "ssm"; - repo = "vcl-mode"; - rev = "3d86c1352a7370d558d25f4c8f7be744e7d27332"; - sha256 = "1zp59p8pw65qy7s9y17a52y1pm35hajdfn3p1kfm1y3vmfxf9x3a"; - }; - recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/bcbe3892fd20e624117de534ca92ba3fba1669a1/recipes/vcl-mode"; - sha256 = "1h0a1briinp9ka7ga3ipdhyf7yfinwvf7babv36myi720900wcq5"; - name = "recipe"; - }; - packageRequires = []; - meta = { - homepage = "https://melpa.org/#/vcl-mode"; - license = lib.licenses.free; - }; - }) {}; vcomp = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -98777,12 +101583,12 @@ melpaBuild { pname = "vdiff"; ename = "vdiff"; - version = "20180719.1327"; + version = "20180920.1020"; src = fetchFromGitHub { owner = "justbur"; repo = "emacs-vdiff"; - rev = "40ffc92c566b55264f48167a02c17518743870b4"; - sha256 = "0r17cw58yabrkjrqis5bz7ikr1lgczpzd7zz895fzqrg4n901bj5"; + rev = "3bfb5decd7fcef73759b247b29aeae669fb79499"; + sha256 = "0l8si73dz9ch6gbl76ibhginzi8l92y3xa7w7jnr6hsyskrrlpid"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/e90f19c8fa4b0d267d269b76f117995e812e899c/recipes/vdiff"; @@ -98805,12 +101611,12 @@ melpaBuild { pname = "vdiff-magit"; ename = "vdiff-magit"; - version = "20180719.1401"; + version = "20180819.1102"; src = fetchFromGitHub { owner = "justbur"; repo = "emacs-vdiff-magit"; - rev = "73912622680ce761779158526e993933a2dbcb9e"; - sha256 = "1vcqfi94xs0ri5zv5h1pw8i0jy1gbx8811i2fshw70f1rmlzmaid"; + rev = "2589b93a0a789b1d86e607cb84979c6a837eb008"; + sha256 = "0cgmxm8rgla3iadwfla21xnxq7a10cwk9r2akk6hp2fpq2i38il9"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/2159275fabde8ec8b297f6635546b1314d519b8b/recipes/vdiff-magit"; @@ -98834,12 +101640,12 @@ melpaBuild { pname = "vdirel"; ename = "vdirel"; - version = "20170605.43"; + version = "20181001.435"; src = fetchFromGitHub { owner = "DamienCassou"; repo = "vdirel"; - rev = "a1e6ea3ed5faaf70667c62bc5591dc810331cb1a"; - sha256 = "1z8q3akm0hq7z7nqclra1wv7a6m0cbskhnd3ca4v9wf9dajiwnsb"; + rev = "dfe5f9478405b8292f85fc911db92e81b627626a"; + sha256 = "1m1k5sfmvi3hw8l4qd4sfhi9h8wk9jd4psb62m4bjf5gbk5ld1pw"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/72b5ea3f4444c3de73d986a28e1d12bf47c40246/recipes/vdirel"; @@ -98852,6 +101658,33 @@ license = lib.licenses.free; }; }) {}; + vdm-comint = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild + , vdm-mode }: + melpaBuild { + pname = "vdm-comint"; + ename = "vdm-comint"; + version = "20181127.1223"; + src = fetchFromGitHub { + owner = "peterwvj"; + repo = "vdm-mode"; + rev = "e131edb0d35de28bd47d6128dd70d9a6fc46e0fa"; + sha256 = "090a0imk7dr6vqq4lf806pvajqc499x2gmi0k7rgc1696rbyzhb5"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/077f586e59fe3b6085e1f19b3c18b218de5d4046/recipes/vdm-comint"; + sha256 = "1r7jg7dkzfs4n230n0jk23w0ncqsiwkslf2gmjfzfqg8qklr9bhs"; + name = "recipe"; + }; + packageRequires = [ emacs vdm-mode ]; + meta = { + homepage = "https://melpa.org/#/vdm-comint"; + license = lib.licenses.free; + }; + }) {}; vdm-mode = callPackage ({ emacs , fetchFromGitHub , fetchurl @@ -98860,16 +101693,16 @@ melpaBuild { pname = "vdm-mode"; ename = "vdm-mode"; - version = "20180830.2352"; + version = "20181127.1223"; src = fetchFromGitHub { owner = "peterwvj"; repo = "vdm-mode"; - rev = "0c083ee4848ea5d78de7894a4a0722d6630839c9"; - sha256 = "175zlxxjxl7zp80hm2hz5xw7gy3qh0hz3fdvqy8v3n0vz4zvqx1k"; + rev = "e131edb0d35de28bd47d6128dd70d9a6fc46e0fa"; + sha256 = "090a0imk7dr6vqq4lf806pvajqc499x2gmi0k7rgc1696rbyzhb5"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/f246b9dcf7915a845b9e2cd44cc1a0833b412c8f/recipes/vdm-mode"; - sha256 = "0paafpyzncl2325ly89591jnxhl9zc8jwsphav38nw0fsm9r9ah9"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/70a6c89d41235f7e8463a47400004a32b2979a5a/recipes/vdm-mode"; + sha256 = "1h72731vcsjqsbii1wbzpa114x09aqbkbnz5fg9fnjq9rybz6rn7"; name = "recipe"; }; packageRequires = [ emacs ]; @@ -98887,12 +101720,12 @@ melpaBuild { pname = "vdm-snippets"; ename = "vdm-snippets"; - version = "20180902.1135"; + version = "20181127.1223"; src = fetchFromGitHub { owner = "peterwvj"; repo = "vdm-mode"; - rev = "d2d9a4074906f4a1370a251180cebf958eb9e461"; - sha256 = "0rddkjnm4xggv7pr99p58n16ix0whxccyihamc373r0ld762qf3v"; + rev = "e131edb0d35de28bd47d6128dd70d9a6fc46e0fa"; + sha256 = "090a0imk7dr6vqq4lf806pvajqc499x2gmi0k7rgc1696rbyzhb5"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/f246b9dcf7915a845b9e2cd44cc1a0833b412c8f/recipes/vdm-snippets"; @@ -98930,6 +101763,34 @@ license = lib.licenses.free; }; }) {}; + veri-kompass = callPackage ({ cl-lib ? null + , emacs + , fetchFromGitLab + , fetchurl + , lib + , melpaBuild + , org }: + melpaBuild { + pname = "veri-kompass"; + ename = "veri-kompass"; + version = "20181110.133"; + src = fetchFromGitLab { + owner = "koral"; + repo = "veri-kompass"; + rev = "72aa690da9a349601c9befe454d456d46b17fee6"; + sha256 = "0da47w45a1q04srsc0kgjp4lacgaa6abf2b11qjgckm3drahifgg"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/18c3a69bec780e3e7456b310db6f0eec2a35c753/recipes/veri-kompass"; + sha256 = "103x4003qj0z9ki6xz4hymamyhipzfxz94x4gszk3k2qnvkjkxnj"; + name = "recipe"; + }; + packageRequires = [ cl-lib emacs org ]; + meta = { + homepage = "https://melpa.org/#/veri-kompass"; + license = lib.licenses.free; + }; + }) {}; verify-url = callPackage ({ cl-lib ? null , fetchFromGitHub , fetchurl @@ -98990,12 +101851,12 @@ melpaBuild { pname = "vertica-snippets"; ename = "vertica-snippets"; - version = "20180208.154"; + version = "20181212.827"; src = fetchFromGitHub { owner = "baron42bba"; repo = "vertica-snippets"; - rev = "5959d86c77d4b8f67383f65f7f6ca3e0db2a9529"; - sha256 = "0hmvd2kly7k51qfhkg6rzcq0a5ksskr1r0x07i0imz0idm77g29z"; + rev = "8558a97b1ddba0f9372e19dd02702ea472ff9eb6"; + sha256 = "1dqzjgarvdniv0qcgp5652v2wrr6zdl4sgywi5dzr3bikpfy6zs2"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/d3c8cb5c0fdbb6820a08091d8936dd53a3c43c56/recipes/vertica-snippets"; @@ -99016,12 +101877,12 @@ melpaBuild { pname = "vertigo"; ename = "vertigo"; - version = "20180408.920"; + version = "20180829.1530"; src = fetchFromGitHub { owner = "noctuid"; repo = "vertigo.el"; - rev = "117450dfad5d5ad45d40995cdf9a626cf9c2b136"; - sha256 = "1bxf2kzdj4xmy6wmajwvn40msp2q4szp25ylah49biw92dwi2bzw"; + rev = "6303d17270ea92290a6960890bca515274f1682b"; + sha256 = "0570x63l1j75issnq23hrhhpisv2jm18fn5mspsvbs4xy2hy4h8i"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/f1957e7fa03b6b8eb2f3250bd814d707bce3cfa3/recipes/vertigo"; @@ -99070,12 +101931,12 @@ melpaBuild { pname = "vhdl-tools"; ename = "vhdl-tools"; - version = "20180610.958"; + version = "20181115.936"; src = fetchFromGitHub { owner = "csantosb"; repo = "vhdl-tools"; - rev = "4e9df06c3519be22f1f713d18c80d325a5b0c3d2"; - sha256 = "0n6mmbg8g3ip3dkbc4kxqxsd4p1h7jry25n1cqvzm24x1adwlcfm"; + rev = "536a265d74c6fb750f35d50950bdccf12f929512"; + sha256 = "0x2xmk1ix16qdnjz1qi0vvycmqz7z95zkiqh4wymjmanvnqbwlrn"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/69fe2f8fb98ac1af1d3185f62ae1c89e646cfebf/recipes/vhdl-tools"; @@ -99148,14 +102009,14 @@ ename = "viking-mode"; version = "20160705.1327"; src = fetchFromGitHub { - owner = "tlinden"; + owner = "TLINDEN"; repo = "viking-mode"; rev = "c76aa265d13ad91d6890d242e142d05e31f0340b"; sha256 = "1944p3kbskzj4d9w9prbi7z59lrn087v3gphbhwjplz6mvwbl8g6"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/5805575f353c14a62d00543a23eb4c638d9d52dc/recipes/viking-mode"; - sha256 = "13g6gw8yc4pgi1zjig6nlpnsh52dzmprisq95r6lx6hk0xbzrx16"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/35763febad20f29320d459394f810668db6c3353/recipes/viking-mode"; + sha256 = "12z9807ya0gsgx7h3zdvpx7jksjjrglz3qqyz65wj71sibjfry4m"; name = "recipe"; }; packageRequires = []; @@ -99226,12 +102087,12 @@ melpaBuild { pname = "vimish-fold"; ename = "vimish-fold"; - version = "20171231.2212"; + version = "20181231.2300"; src = fetchFromGitHub { owner = "mrkkrp"; repo = "vimish-fold"; - rev = "1469c953bc20d21d87ce5d92def767e551cda07c"; - sha256 = "0nywz6nk1qanx7z9sykf28h9c2qj7xzs9w4hya4vmhwigqqbhldl"; + rev = "5ae201fc9a7024dd9c8d1713a00dd42cf1290d6e"; + sha256 = "0rwfzhqrs4gw5j9irzdy9lwk5m8ycaxdqp5b3gb238a2jqfcxnbz"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/b4862b0a3d43f073e645803cbbf11d973a4b51d5/recipes/vimish-fold"; @@ -99251,12 +102112,12 @@ melpaBuild { pname = "vimrc-mode"; ename = "vimrc-mode"; - version = "20170814.1837"; + version = "20181116.1119"; src = fetchFromGitHub { owner = "mcandre"; repo = "vimrc-mode"; - rev = "ba8140fba6e03a35b123acbd62fc8c6f0a03bf4a"; - sha256 = "07pwmjaa24hh20bcanmxgnaf050c0j6190i0qfvpd0gpc4p80pxx"; + rev = "13bc150a870d5d4a95f1111e4740e2b22813c30e"; + sha256 = "0026dqs3hwygk2k2xfra90w5sfnxrfj7l69jz7sq5glavbf340pk"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/855ea20024b606314f8590129259747cac0bcc97/recipes/vimrc-mode"; @@ -99379,12 +102240,12 @@ melpaBuild { pname = "visual-fill-column"; ename = "visual-fill-column"; - version = "20180727.1525"; + version = "20180919.57"; src = fetchFromGitHub { owner = "joostkremers"; repo = "visual-fill-column"; - rev = "ca65ed65d27bdce189bbb15f58399a682aa6f02b"; - sha256 = "1hxsh4jmbb6mykydy8c1vam538d2grdyv2f9zimk8q5mwgpnfggm"; + rev = "33f68b9d94b5877f21209b68438a3cd95f801dc1"; + sha256 = "1cd3d29blpxappd32m61m9y64ss252byl15xb2jkxjc731bk3z55"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/c7628c805840c4687686d0b9dc5007342864721e/recipes/visual-fill-column"; @@ -99576,6 +102437,32 @@ license = lib.licenses.free; }; }) {}; + vscode-icon = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "vscode-icon"; + ename = "vscode-icon"; + version = "20180922.1450"; + src = fetchFromGitHub { + owner = "jojojames"; + repo = "vscode-icon-emacs"; + rev = "3ad83ee122d312775a101c975424a2c87c3a80b1"; + sha256 = "0pd9j1bp8lqda8r6kgmxinf6x8aqfg1aikgk2svlcf1g8z31m66i"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/90a07c96a9223a9ad477cbea895ba522523c5be4/recipes/vscode-icon"; + sha256 = "0rhsqzgxl7hs52kniyi8yn4f953g7dgx49j4lzf2yr33ydxiw9d3"; + name = "recipe"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://melpa.org/#/vscode-icon"; + license = lib.licenses.free; + }; + }) {}; vue-html-mode = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -99688,12 +102575,12 @@ melpaBuild { pname = "w3m"; ename = "w3m"; - version = "20180404.2220"; + version = "20181022.155"; src = fetchFromGitHub { owner = "emacsorphanage"; repo = "w3m"; - rev = "ea64ccb3d792b60f0815309f588bf46b1f0ca80e"; - sha256 = "13dhr36177363x5zjbm5ig4g9xg0x6j0j37smzqlwy2bp244mm06"; + rev = "f392ad9864d3ec30e8b8151bdbd714f51be21bf3"; + sha256 = "03pjc431ql4kxdspa991d4aagb110qmqm604mq0fhvvhflc36fz8"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/30de78c9cf83de30093a5647976eeaf552d4b2cb/recipes/w3m"; @@ -99790,12 +102677,12 @@ melpaBuild { pname = "wakatime-mode"; ename = "wakatime-mode"; - version = "20170517.2053"; + version = "20180920.2"; src = fetchFromGitHub { owner = "wakatime"; repo = "wakatime-mode"; - rev = "b1eae15f38a367017e519c10837c44650631b154"; - sha256 = "0l2nwjz978lamlikipljw143j40bnli7rzf9rixsia9iby4krl25"; + rev = "2531cb58287770883ba534d20b3288955c4d6ef3"; + sha256 = "12wa845lwvwg38801mk880izfhjs50ssy5alj1743c2bz7ig5grk"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/a46036a0e53afbebacafd3bc9545c99af79ccfcc/recipes/wakatime-mode"; @@ -99834,6 +102721,34 @@ license = lib.licenses.free; }; }) {}; + walkclj = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild + , parseclj + , treepy }: + melpaBuild { + pname = "walkclj"; + ename = "walkclj"; + version = "20180718.200"; + src = fetchFromGitHub { + owner = "plexus"; + repo = "walkclj"; + rev = "2e54fa813b11d1a87c890cdf117f30165a193024"; + sha256 = "0bgvniw3ibcjsmzwrndg6pxwbpnpnxsb8ijs2gxg5kbm1hqqly32"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/44472b35938fe70d4cb3d15397495fe321fcd464/recipes/walkclj"; + sha256 = "0m971dlazildhgj8jqg4x679i6s6p80mbpri7l24ynxk45wix22m"; + name = "recipe"; + }; + packageRequires = [ emacs parseclj treepy ]; + meta = { + homepage = "https://melpa.org/#/walkclj"; + license = lib.licenses.free; + }; + }) {}; wand = callPackage ({ dash , fetchFromGitHub , fetchurl @@ -99843,12 +102758,12 @@ melpaBuild { pname = "wand"; ename = "wand"; - version = "20180112.454"; + version = "20180815.331"; src = fetchFromGitHub { owner = "cmpitg"; repo = "wand"; - rev = "e8939812e03255fff3e15c5d0f9d4da849aaf07b"; - sha256 = "0l79vhf0s5rz9s02bmcfyx7yn4pvn3dnxkr50qfhqajrvfx1105g"; + rev = "5c0d4833a3afc57e4b2398250139729cc9131d16"; + sha256 = "1d7zv5mk9mqlp40hzbf62y080a2aqvjw4x7y9frh33217r8h5b6i"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/38be840bbb32094b753ec169b717a70817006655/recipes/wand"; @@ -99897,12 +102812,12 @@ melpaBuild { pname = "wanderlust"; ename = "wanderlust"; - version = "20180826.649"; + version = "20181209.536"; src = fetchFromGitHub { owner = "wanderlust"; repo = "wanderlust"; - rev = "ebde9a49a80bba4e21ef4a95e77c634779f00aaa"; - sha256 = "1c149bdwz0jrmdy9dpdilwma8jpmm7myhh6q86k3ss539yhnqf43"; + rev = "d1df17c48972e006a7f74f7145461365576e2201"; + sha256 = "192np4fh5msfq1lac8z03ccaq0l0h222snb2a1jfxr8149b9jncj"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/426172b72026d1adeb1bf3fcc6b0407875047333/recipes/wanderlust"; @@ -100203,12 +103118,12 @@ melpaBuild { pname = "web-mode"; ename = "web-mode"; - version = "20180813.650"; + version = "20181213.2258"; src = fetchFromGitHub { owner = "fxbois"; repo = "web-mode"; - rev = "e31d1dd4ee436db8aaca3f35223af5a05fb47dec"; - sha256 = "00yhrd628dgylsvixy7gy1jw8xmszs4rvv2yc1v7jd3hli9bxf7s"; + rev = "5da977bec7714c09d41b556e2d651ccb269a14a2"; + sha256 = "0r21ixka96fn22blh9gvnqar99w7bnlnd092s8d8ihy25rm0qrr0"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/6f0565555eaa356141422c5175d6cca4e9eb5c00/recipes/web-mode"; @@ -100230,12 +103145,12 @@ melpaBuild { pname = "web-mode-edit-element"; ename = "web-mode-edit-element"; - version = "20161114.954"; + version = "20181214.509"; src = fetchFromGitHub { owner = "jtkDvlp"; repo = "web-mode-edit-element"; - rev = "8b8ac07aa8c920dafd94c96a51effb0d6c0ed1ce"; - sha256 = "0aj1ibmnrbaxrkwjf1fac2qzazrj39pql3prcibnchc2bmp191aa"; + rev = "30f0f697212a85a9b881549fc272fa7c96d3e703"; + sha256 = "1qnk4skzj6b47h8c2yg05hc7iv8y4102izlfc490307y264rv051"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/855ea20024b606314f8590129259747cac0bcc97/recipes/web-mode-edit-element"; @@ -100282,12 +103197,12 @@ melpaBuild { pname = "web-search"; ename = "web-search"; - version = "20170911.1246"; + version = "20181027.2225"; src = fetchFromGitHub { owner = "xuchunyang"; repo = "web-search.el"; - rev = "410c490ecf82a3693db3eb62003302233471ff84"; - sha256 = "0hib0ffwikdydkm5asmvzj6l49pd9694psnn2c010j3ixw6i8gsl"; + rev = "24f5b49774f4fb60c903c2b65598590d1c6456d9"; + sha256 = "1f7ysgc9gnfrlhb7y19ynfl5h1ckbqrm8hqly3kr2n2cvlzj9g2i"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/503ef2042cc14dbe53e7121b8d0b5ccbdf6c882b/recipes/web-search"; @@ -100389,12 +103304,12 @@ melpaBuild { pname = "webpaste"; ename = "webpaste"; - version = "20180815.1155"; + version = "20190101.138"; src = fetchFromGitHub { owner = "etu"; repo = "webpaste.el"; - rev = "e7fed98c30e960911426be054bad183fd1ab6a37"; - sha256 = "1k82apiylq9bqgwq2lg1ih16ghhh9r2h6izd4ljw1nm1p9gqqzh4"; + rev = "521de6d9d50d1e382bc5425749c3d4958b321c9b"; + sha256 = "11981fhh8vf6cjvcppg5ilk0yysfx91jhglk7jz49i5a3wwygxc3"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/13847d91c1780783e516943adee8a3530c757e17/recipes/webpaste"; @@ -100548,12 +103463,12 @@ melpaBuild { pname = "wgrep"; ename = "wgrep"; - version = "20180710.2326"; + version = "20181228.1640"; src = fetchFromGitHub { owner = "mhayashi1120"; repo = "Emacs-wgrep"; - rev = "414be70bd313e482cd9f0b70fd2daad4ee23497c"; - sha256 = "1sdhd587q3pg92lhiayph87azhalmf1gzrnsprkmqvnphv7mvks9"; + rev = "b22834e4597b5dfe06621d23cf93351d790df930"; + sha256 = "07p0wwigc99hx09n5fkzf5yxkr7z19rqy8wgxk5m1pyp1i75wiq8"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/9648e3df896fcd97b3757a727108bc78261973cc/recipes/wgrep"; @@ -100592,8 +103507,7 @@ license = lib.licenses.free; }; }) {}; - wgrep-ag = callPackage ({ cl-lib ? null - , fetchFromGitHub + wgrep-ag = callPackage ({ fetchFromGitHub , fetchurl , lib , melpaBuild @@ -100601,19 +103515,19 @@ melpaBuild { pname = "wgrep-ag"; ename = "wgrep-ag"; - version = "20160923.403"; + version = "20181228.1724"; src = fetchFromGitHub { owner = "mhayashi1120"; repo = "Emacs-wgrep"; - rev = "4e9f3d9822acab2d353c858d33ddaebb629fbfe8"; - sha256 = "14xja70gh9v3565fkl4b46swfrkmh6j6zg9pxwj5h1gicqrgaiwz"; + rev = "36c5e8d0e03bc16b19d30a603730065f74b5b767"; + sha256 = "0pgyf9vfcahb495q01hi1mvkmv846w4rj6zyf52is8x7sjj7x44s"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/2c50b704343c4cac5e2a62a67e284ba6d8e15f8a/recipes/wgrep-ag"; sha256 = "1b2mj06kws29ha7g16l5d1s3p3nwyw8rprbpaiijdk9nxqcm0a8a"; name = "recipe"; }; - packageRequires = [ cl-lib wgrep ]; + packageRequires = [ wgrep ]; meta = { homepage = "https://melpa.org/#/wgrep-ag"; license = lib.licenses.free; @@ -100627,12 +103541,12 @@ melpaBuild { pname = "wgrep-helm"; ename = "wgrep-helm"; - version = "20170510.1539"; + version = "20181228.1724"; src = fetchFromGitHub { owner = "mhayashi1120"; repo = "Emacs-wgrep"; - rev = "1cdd7c136f1e7565bb13d2df69be3dc77b83698d"; - sha256 = "057p99hq0r6z1k8sl15w3sxrqvlv0g9wp39zy1pqhccv2mn3g2d6"; + rev = "36c5e8d0e03bc16b19d30a603730065f74b5b767"; + sha256 = "0pgyf9vfcahb495q01hi1mvkmv846w4rj6zyf52is8x7sjj7x44s"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/9648e3df896fcd97b3757a727108bc78261973cc/recipes/wgrep-helm"; @@ -100704,12 +103618,12 @@ melpaBuild { pname = "which-key"; ename = "which-key"; - version = "20180621.1238"; + version = "20181114.632"; src = fetchFromGitHub { owner = "justbur"; repo = "emacs-which-key"; - rev = "ff79dfff66f880885c5893dd6fd05dc51173a476"; - sha256 = "0x9bmm4s5gq9k9x1rkwxr8zz8p2hgsxvzpji138m8m4j809l6cn4"; + rev = "43e3e3d7641a8e1c298b37e6a277612bf0898708"; + sha256 = "1vwbgz0x8k6xy37kn6zkzf5p7z2wjsk3p3qv24d5ysd2257bf32c"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/315865a3df97c0694f648633d44b8b34df1ac76d/recipes/which-key"; @@ -100858,12 +103772,12 @@ melpaBuild { pname = "whole-line-or-region"; ename = "whole-line-or-region"; - version = "20180324.2119"; + version = "20181211.1556"; src = fetchFromGitHub { owner = "purcell"; repo = "whole-line-or-region"; - rev = "944290d443a395ef0578531929186d6274ab03e9"; - sha256 = "04hbs8hrm5csnjxvxkfbd9fky0rd6xpr105cy0bvya5c14anzcd4"; + rev = "d816cf566f02a37ab46b44675e9f538a63a47d05"; + sha256 = "1b8n02dv5fyspsgi7daz6i790hp6s0lkiyj7gz8q34sf2924knvf"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/855ea20024b606314f8590129259747cac0bcc97/recipes/whole-line-or-region"; @@ -100990,12 +103904,12 @@ melpaBuild { pname = "wiki-summary"; ename = "wiki-summary"; - version = "20150408.1422"; + version = "20181010.1124"; src = fetchFromGitHub { owner = "jozefg"; repo = "wiki-summary.el"; - rev = "ec11f6b7177a3fc50702c771d347d1e86f4462fc"; - sha256 = "0c1j12lzkgb6rfq2zyfk9mj11qilymcpfp9lf38pkki527akxixl"; + rev = "fa41ab6e50b3b80e54148af9d4bac18fd0405000"; + sha256 = "0qcnqwiylkkb7132bzra49k7jg8kq13jif8096vpg4xzpcq5lpj2"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/31877f182ab82fd5bb73ec4ddd8526a032d9edf9/recipes/wiki-summary"; @@ -101221,12 +104135,12 @@ melpaBuild { pname = "window-purpose"; ename = "window-purpose"; - version = "20180809.456"; + version = "20180926.347"; src = fetchFromGitHub { owner = "bmag"; repo = "emacs-purpose"; - rev = "a302340e183d20baa4445858d321f43449298829"; - sha256 = "1dpy8hkjn87wbdkzyabhay4jx4dgc0ab2flyf0rjq1qaazk393sc"; + rev = "2b640955235d0a50dd1e3128612f41d595bc6dc8"; + sha256 = "10zvkp5vg1pg06p5mjghnnfkwpjx50527kx4ygdm84b1pxrnwlr6"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/5813120ab674f6db7d0a486433d8faa6cfec1727/recipes/window-purpose"; @@ -101246,12 +104160,12 @@ melpaBuild { pname = "windsize"; ename = "windsize"; - version = "20151121.540"; + version = "20181029.1557"; src = fetchFromGitHub { owner = "grammati"; repo = "windsize"; - rev = "beb6376fdf52afa6f220c89032448460faf76e7f"; - sha256 = "0hijf56ahbc5inn7n39nj96d948c4d05n9d5ci3g3vbl5hsyb121"; + rev = "62c2846bbe95b0a73e996c75e4a644d05f57aaaa"; + sha256 = "13kfrmv3vmkfanxv9nym5v43hx5p7xkgqmx65zcxh4gcbaham1mi"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/855ea20024b606314f8590129259747cac0bcc97/recipes/windsize"; @@ -101377,12 +104291,12 @@ melpaBuild { pname = "winum"; ename = "winum"; - version = "20171028.702"; + version = "20181119.905"; src = fetchFromGitHub { owner = "deb0ch"; repo = "emacs-winum"; - rev = "c56d1cdb8d1723eb4c0d7a7eb3ecd2697739146c"; - sha256 = "09jd5srlnd4060hs719qil84ssmnvq196bz7ywaswgapv1gs1h6r"; + rev = "efcb14fd306afbc738666e6b2e5a8a1bb5904392"; + sha256 = "0v1qmw3svydk7dlqbcymy1g1bygkfpb2h4b97zdp12xvd8mww9ny"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/c1caa7a54a910a44322fdee300e8cce6ddcde071/recipes/winum"; @@ -101405,8 +104319,8 @@ version = "20180520.58"; src = fetchhg { url = "https://bitbucket.com/ArneBab/wisp"; - rev = "c5e4b6448dfd"; - sha256 = "10ix9y29v0idcmvflyrmdzm5amxi9x0223kzazhgpf7j3xs8c0nn"; + rev = "cca15c7abc86"; + sha256 = "0nq8d2411fizphcq8157cfazghvsz1gy534fsan9ik30k9fnb5vn"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/5b7972602399f9df9139cff177e38653bb0f43ed/recipes/wisp-mode"; @@ -101454,12 +104368,12 @@ melpaBuild { pname = "with-editor"; ename = "with-editor"; - version = "20180726.1344"; + version = "20181113.1045"; src = fetchFromGitHub { owner = "magit"; repo = "with-editor"; - rev = "3e6424764ee06fb50c580283baea3851c6f9ea66"; - sha256 = "0xawvwvkqdy5hhbz9mbclha18w8nd36d9nyf7b6s2f5dw7xnlyb0"; + rev = "9dd9f176d96abc60365369de6d08c26c414ef1f3"; + sha256 = "16a71mld7knf5ppv4szlkfdq44cqi36jqmscn0fssffhg33xh8cs"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/8c52c840dc35f3fd17ec660e113ddbb53aa99076/recipes/with-editor"; @@ -101527,6 +104441,33 @@ license = lib.licenses.free; }; }) {}; + with-venv = callPackage ({ cl-lib ? null + , emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "with-venv"; + ename = "with-venv"; + version = "20181219.1843"; + src = fetchFromGitHub { + owner = "10sr"; + repo = "with-venv-el"; + rev = "d12341b93420f4acd7a277ed0cd4a54767bc5bd6"; + sha256 = "0knv2ybf4sbn31zyg9ms44mxvmvg7b51krq320g8fpcpa1bq28s6"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/555a2e49f18fbae59913459466babf8d55bd2151/recipes/with-venv"; + sha256 = "090jird410wn2w9pwr2d9pjw5xghcdxc4l578zay2akygg3c6blm"; + name = "recipe"; + }; + packageRequires = [ cl-lib emacs ]; + meta = { + homepage = "https://melpa.org/#/with-venv"; + license = lib.licenses.free; + }; + }) {}; wn-mode = callPackage ({ emacs , fetchFromGitHub , fetchurl @@ -101872,6 +104813,35 @@ license = lib.licenses.free; }; }) {}; + writefreely = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild + , org + , ox-gfm + , request }: + melpaBuild { + pname = "writefreely"; + ename = "writefreely"; + version = "20181130.422"; + src = fetchFromGitHub { + owner = "dangom"; + repo = "writefreely.el"; + rev = "016372a89987703a0903882db14aae13eacaf9bb"; + sha256 = "0xgp9c6ymqlgk641v1263a8wb12vc86i30dv6jqvjjkqxgmyb3kn"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/55ea1ad03ce5b5178435b8042be383065795ee71/recipes/writefreely"; + sha256 = "1lvar4kmzq3x7nmidklcryqscb5xzvkzbyn59a8ns0bml5sfrqyj"; + name = "recipe"; + }; + packageRequires = [ emacs org ox-gfm request ]; + meta = { + homepage = "https://melpa.org/#/writefreely"; + license = lib.licenses.free; + }; + }) {}; writegood-mode = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -102009,12 +104979,12 @@ melpaBuild { pname = "wucuo"; ename = "wucuo"; - version = "20180907.549"; + version = "20181106.1457"; src = fetchFromGitHub { owner = "redguardtoo"; repo = "wucuo"; - rev = "2657e78246001848fe1140c9d90cb96d796d5887"; - sha256 = "0s3ipmrw3gqyq6y4pxjm8cpnsar5hh27lclhjq7277zlbl3da32c"; + rev = "4e988c101fe82f2e8c7b3710d15982fe28b8d32d"; + sha256 = "0g558miz9f4g8jlq532fs9yxj3il62zajgcjfndall2853hn54af"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/819cacef2c31d750829980f3f6c3bfb72f36bbdd/recipes/wucuo"; @@ -102089,14 +105059,14 @@ ename = "x-path-walker"; version = "20160922.1135"; src = fetchFromGitHub { - owner = "lompik"; + owner = "Lompik"; repo = "x-path-walker"; rev = "3b01dbd7a039c6c84fdf8c8ee53ba72090ee950a"; sha256 = "1gb3lnl3gvckbakc4fy22fcvif3xdfkdaw334xmp33phjb8gjqvj"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/c51f2aba59cb93f4bb104a7dde214963cbf002a6/recipes/x-path-walker"; - sha256 = "03l83ph0d8g5pxnzp1gs3gdbwl3vhgvyk186yhqy6sbknq627k2x"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/35763febad20f29320d459394f810668db6c3353/recipes/x-path-walker"; + sha256 = "1k72c0i17k31p404nkzqkw25cpcfk66bmd0vjzwg34cnwcgfhnjg"; name = "recipe"; }; packageRequires = [ helm-core ]; @@ -102114,12 +105084,12 @@ melpaBuild { pname = "x509-mode"; ename = "x509-mode"; - version = "20180702.36"; + version = "20180921.103"; src = fetchFromGitHub { owner = "jobbflykt"; repo = "x509-mode"; - rev = "89bdeca8c7494eaaea115031b3235f0bfbd4d945"; - sha256 = "04m51c7w7nzh5nwpsyzwdcdfk1gsj9cy56xz51x53kla7xbwkdl8"; + rev = "9eb24c8721dcad9888b70213d06d770bc2386db7"; + sha256 = "1gr099bn4qn2b5jasbs4r04pf6wqsnpf2632vzvshzm9nkz4qnhg"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/27145423eb4e68e006ef96868a35b99d119a3099/recipes/x509-mode"; @@ -102193,12 +105163,12 @@ melpaBuild { pname = "xah-elisp-mode"; ename = "xah-elisp-mode"; - version = "20180914.1659"; + version = "20181122.37"; src = fetchFromGitHub { owner = "xahlee"; repo = "xah-elisp-mode"; - rev = "3b2d960b031952c768d705d566ead8d7119b7a91"; - sha256 = "071vzyd0rdg3n8wmfcsawgfr02y497p0s7r0nryh1i2v5rhmg2vk"; + rev = "f306142c41f352e56e966bef9036f61b6bdeab4c"; + sha256 = "1vjhjjc5wyxqffz51d6y63m4ai1szcrv678273h8xzj744fal7li"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/05eed39bae37cc8359d2cc678052cbbcc946e379/recipes/xah-elisp-mode"; @@ -102219,12 +105189,12 @@ melpaBuild { pname = "xah-find"; ename = "xah-find"; - version = "20180830.1658"; + version = "20181201.249"; src = fetchFromGitHub { owner = "xahlee"; repo = "xah-find"; - rev = "4019389a66abbb71d1a7c946c37efe184116bcc9"; - sha256 = "0j392z31z3b1sppx6p9hhy9s5qzl4a7la6rwxs9dp5q25n23avcz"; + rev = "cde62a040dda923279320a1ba7eafa30411b8545"; + sha256 = "1iz8x1axg4p6cch9qiw2vhmjwiqg9hn4s0nyryc5w1mg5qv3pcnm"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/05eed39bae37cc8359d2cc678052cbbcc946e379/recipes/xah-find"; @@ -102245,12 +105215,12 @@ melpaBuild { pname = "xah-fly-keys"; ename = "xah-fly-keys"; - version = "20180910.2232"; + version = "20181206.531"; src = fetchFromGitHub { owner = "xahlee"; repo = "xah-fly-keys"; - rev = "694b19d5a03ec450e7c8f6e340caf47ab4eed4a1"; - sha256 = "02y46b0nhly92rpymy1szgq2s83kfbjz7rc9sj5nc9vb0jrbkf4p"; + rev = "ff552e04ea66413cd0032643db6522f27e9d0e2c"; + sha256 = "0hba0qgq9wg9kbxfdkds4pchrvix154p8iq78xz4v4pagifyn701"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/05eed39bae37cc8359d2cc678052cbbcc946e379/recipes/xah-fly-keys"; @@ -102297,12 +105267,12 @@ melpaBuild { pname = "xah-lookup"; ename = "xah-lookup"; - version = "20180815.550"; + version = "20181225.1142"; src = fetchFromGitHub { owner = "xahlee"; repo = "lookup-word-on-internet"; - rev = "e3132ff21c3d0160e5bd5b7222c50dc9840727d4"; - sha256 = "0p7y6dj4a9ifcpsvg50jb3hqr0i6spscc5iw02fpyih6j65p3zbn"; + rev = "2cafbf3605a8f2ac4c56392c5b1f75adc3b11f24"; + sha256 = "1xr2fp6dylv098g7m7x31j7jllr87545snab3qw5r32rzsa7fswz"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/05eed39bae37cc8359d2cc678052cbbcc946e379/recipes/xah-lookup"; @@ -102323,12 +105293,12 @@ melpaBuild { pname = "xah-math-input"; ename = "xah-math-input"; - version = "20180906.1012"; + version = "20181224.2234"; src = fetchFromGitHub { owner = "xahlee"; repo = "xah-math-input"; - rev = "d0120a451daea474abeab7f87cc64d8ddc903ab4"; - sha256 = "0rsdvlfqdm69rj1gq4pkn9gw1n2sw5dr9xrk1aqin5rpgcgappaj"; + rev = "3569280ecf96198b50fa3c60069bbcd220345fd7"; + sha256 = "1ssqd3xvb03kv13kdihjvhzjjav27rnilawpq2ak3cbph6k03810"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/05eed39bae37cc8359d2cc678052cbbcc946e379/recipes/xah-math-input"; @@ -102480,12 +105450,12 @@ melpaBuild { pname = "xcode-project"; ename = "xcode-project"; - version = "20180509.1218"; + version = "20181025.544"; src = fetchFromGitHub { owner = "nhojb"; repo = "xcode-project"; - rev = "fe95fb1d1da89f4f03d5dff330fd2d663101f8f0"; - sha256 = "1fvk92zbl4rl0kz0wnrmrry1amcpqxqqprsjgn209b4i7sh05p06"; + rev = "0bf9a4230fab7830350c750c39beda99ef74d72f"; + sha256 = "0746f2niclmlx90skvdb1xdac0nqj8a9pd9ap8n89ckb5r6f9hbg"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/49b866ebf7e707bc74525f83dd5038e6e860fcef/recipes/xcode-project"; @@ -102608,12 +105578,12 @@ melpaBuild { pname = "xml-rpc"; ename = "xml-rpc"; - version = "20160430.1458"; + version = "20181002.653"; src = fetchFromGitHub { owner = "hexmode"; repo = "xml-rpc-el"; - rev = "0ab093d60140d19e31d217c8abdc7dbdac944486"; - sha256 = "0g52bmamcd54acyk6i47ar5jawad6ycvm9g656inb994wprnjin9"; + rev = "8f624f8b964e9145acb504e4457c9510e87dd93c"; + sha256 = "0xa54z52rsfl3n0xgmbycj4zazp8ksgdwcq56swzs6wp72zlalmj"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/547d773e07d6229d2135d1b081b5401039ffad39/recipes/xml-rpc"; @@ -102786,16 +105756,16 @@ melpaBuild { pname = "xresources-theme"; ename = "xresources-theme"; - version = "20160331.702"; + version = "20181127.1041"; src = fetchFromGitHub { - owner = "CQQL"; + owner = "cqql"; repo = "xresources-theme"; - rev = "09a0bfc1684161dd1cdc899c027808a99646a652"; - sha256 = "171vffga2yzxqmgh77vila6x96bz1i6818f1pfaxblw1hz2ga341"; + rev = "a36912dd953921b4cec943a0b0c20d546a889947"; + sha256 = "12lh3kfm5sls5c7y25jhfwpbif710aq92vipqn8bbcp945cq5lmq"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/4cef3a5683ea572f823d915ec2a94d591ac915d6/recipes/xresources-theme"; - sha256 = "0spqa3xn3p2lmvlc5hdn7prq4vb70nkyrryx1kavha9igzhlyaga"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/35763febad20f29320d459394f810668db6c3353/recipes/xresources-theme"; + sha256 = "1vsbvg9w5g6y2qlb8ssn12ax31r7fbslfi9vcgvmjydcr8r1z0zs"; name = "recipe"; }; packageRequires = []; @@ -102994,12 +105964,12 @@ melpaBuild { pname = "yahoo-weather"; ename = "yahoo-weather"; - version = "20170822.1544"; + version = "20181025.2020"; src = fetchFromGitHub { owner = "lujun9972"; repo = "yahoo-weather-mode"; - rev = "a74e29bc81b13efe285b87fa4d0694d75f8e2bb5"; - sha256 = "1nimmv84q5zsv81ji3nmvpmi30f8xh0ypa88hpdpykc5iirj1m0x"; + rev = "1d2db14daa1706e03dfe4379397eb89234a56400"; + sha256 = "01hydsjj427j4xyy8cwiz5kn67vwwi1qnih5qfyw04w29r9njh1n"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/ae5ca93d48a2d24787c3d4ed7ab3a65aa8023f4f/recipes/yahoo-weather"; @@ -103063,6 +106033,33 @@ license = lib.licenses.free; }; }) {}; + yaml-imenu = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild + , yaml-mode }: + melpaBuild { + pname = "yaml-imenu"; + ename = "yaml-imenu"; + version = "20180930.2327"; + src = fetchFromGitHub { + owner = "knu"; + repo = "yaml-imenu.el"; + rev = "78a383098807014d9e7f2941196d8271677158cd"; + sha256 = "1f85m0h19wjb0xrwkxrh7vrpphm8l5nkrv82zsl097dqw3ijj3f1"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/71e7c2df9e34093ad2634d5a56133fa30126fb5c/recipes/yaml-imenu"; + sha256 = "03r7020gyr96m1z7p947nb7z8szzlkqv21g1hm10sqa8qp7k0qli"; + name = "recipe"; + }; + packageRequires = [ emacs yaml-mode ]; + meta = { + homepage = "https://melpa.org/#/yaml-imenu"; + license = lib.licenses.free; + }; + }) {}; yaml-mode = callPackage ({ emacs , fetchFromGitHub , fetchurl @@ -103173,12 +106170,12 @@ melpaBuild { pname = "yankpad"; ename = "yankpad"; - version = "20180825.239"; + version = "20181115.1409"; src = fetchFromGitHub { owner = "Kungsgeten"; repo = "yankpad"; - rev = "6a22116057e4110f4d4b446780fe996abfeed2af"; - sha256 = "0r2drq158x55c0psjfyqg41gn2bjqvgxm53n4sk9nkxp4pvlxd1d"; + rev = "61c2f74b2858f383e95f89f9002f510146f53c4e"; + sha256 = "1k5giq6fwmai4iijiqc5nx17mqahy61i2158xf0n8r7w80nfacmg"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/e64746d10f9e0158621a7c4dc41dc2eca6ad573c/recipes/yankpad"; @@ -103352,12 +106349,12 @@ melpaBuild { pname = "yasnippet"; ename = "yasnippet"; - version = "20180620.1750"; + version = "20181015.512"; src = fetchFromGitHub { owner = "joaotavora"; repo = "yasnippet"; - rev = "d3bb879356288ef38975fbf85947c7371b8c9759"; - sha256 = "1bmwgbi303z1mvar46077vj4974bf7596fs0p4ncnqhcjl75m80j"; + rev = "1d96da2e08664c31ff7f6f7441da1f4fa5680b1f"; + sha256 = "01sjmc62rvyjysp031pwiqizk6b8i1jdxnq4v24ikx7d2f3bmpjy"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/5d1927dc3351d3522de1baccdc4ce200ba52bd6e/recipes/yasnippet"; @@ -103378,12 +106375,12 @@ melpaBuild { pname = "yasnippet-snippets"; ename = "yasnippet-snippets"; - version = "20180909.315"; + version = "20181211.1419"; src = fetchFromGitHub { owner = "AndreaCrotti"; repo = "yasnippet-snippets"; - rev = "ef6eae61f1c9b50efee1316e8d7925632bc9fa45"; - sha256 = "1lrv3mwx9zrz5yy43a2c6d20hxgg3ax0pf0wv1vh59jk3lfxvpni"; + rev = "c1a5a04de9fb0d7f52565f6e0f2c9b446f9e247e"; + sha256 = "1cmxan7788dbclsdww5mv90sl5gwf6qs351np0j195b7bywz0my8"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/42490bbdac871bce302fbc9a0488ff7de354627e/recipes/yasnippet-snippets"; @@ -103430,11 +106427,11 @@ melpaBuild { pname = "yatex"; ename = "yatex"; - version = "20180820.1849"; + version = "20190102.1926"; src = fetchhg { url = "https://www.yatex.org/hgrepos/yatex"; - rev = "d97881f33e28"; - sha256 = "1zr8li79shk1sxi43g93hrgs5vjilhfa8nndlyva2myjn05bcxg5"; + rev = "e947b9ae31c2"; + sha256 = "1h8f91imr85r29gqr1173i44jl1p4fc73grbf7fr5cwmsiqjwkc7"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/9854c39fc1889891fe460d0d5ac9224de3f6c635/recipes/yatex"; @@ -103566,6 +106563,33 @@ license = lib.licenses.free; }; }) {}; + yequake = callPackage ({ dash + , emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "yequake"; + ename = "yequake"; + version = "20190101.1346"; + src = fetchFromGitHub { + owner = "alphapapa"; + repo = "yequake"; + rev = "ca845ae228ad795cf52bfdef5c83bc2890d8c902"; + sha256 = "1ikmf2r85hdf1bg8hcsqd73mhvcjbvbzd2r4ic1aq96n8cahd1xl"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/194968f221b2f60042a3684e1ca3e1c18adbde8e/recipes/yequake"; + sha256 = "1ps5r6k2903w9qbr3aszw3l3mgcg2zlnxlzbak99314if5k6aiak"; + name = "recipe"; + }; + packageRequires = [ dash emacs ]; + meta = { + homepage = "https://melpa.org/#/yequake"; + license = lib.licenses.free; + }; + }) {}; yesql-ghosts = callPackage ({ cider , dash , fetchFromGitHub @@ -103601,12 +106625,12 @@ melpaBuild { pname = "yoficator"; ename = "yoficator"; - version = "20180814.1704"; + version = "20181220.555"; src = fetchFromGitLab { owner = "link2xt"; repo = "yoficator"; - rev = "a0c5bdf9db6e495549176755cd047fcf05c71255"; - sha256 = "1fqyd2srya78w1d3fbhzkl1ym5j8zm9ygg93yjaddzf0afc0aprm"; + rev = "95840df90063ba16a5f43c84de0746af6dfc01fc"; + sha256 = "1k9fxvc4jwbxddakig5lnk5xy79g3f6wn5151wdfk9ynq0m2fyrf"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/5156f01564978718dd99ab3a54f19b6512de5c3c/recipes/yoficator"; @@ -103785,12 +106809,12 @@ melpaBuild { pname = "zenburn-theme"; ename = "zenburn-theme"; - version = "20180911.544"; + version = "20181014.855"; src = fetchFromGitHub { owner = "bbatsov"; repo = "zenburn-emacs"; - rev = "7f467891dc8299d598208031f2e31eba286c2096"; - sha256 = "1i7frwb52wi4rg8b97426s5cfdpj65691g6y768dbbr4x6sh4z8r"; + rev = "d71a0f0556c1db785738ab9b0c989df342705a81"; + sha256 = "1pf9l138kdxqxgsjzarj4s3adqay4qfn3gqj6g84vw34wrncj4s1"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/091dcc3775ec2137cb61d66df4e72aca4900897a/recipes/zenburn-theme"; @@ -103861,12 +106885,12 @@ melpaBuild { pname = "zeno-theme"; ename = "zeno-theme"; - version = "20180831.1922"; + version = "20181026.1818"; src = fetchFromGitHub { owner = "jbharat"; repo = "zeno-theme"; - rev = "6d70168fcae333a9918c5315e6576f1e876874da"; - sha256 = "13nxgb74f5jzn88c6dbfg12plhk3i4z5d2zq3f0ffk3dypq9qkpa"; + rev = "0914c4a5b1b9499e7f1ca5699b1c3ea2f4be3f1a"; + sha256 = "1zl1ks7n35i9mn5w7ac3j15820fbgpbcmmysv25crvi4g9z94mqj"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/9703a222f51dc283e9462cceb5afeb009f7401dc/recipes/zeno-theme"; @@ -103915,12 +106939,12 @@ melpaBuild { pname = "zerodark-theme"; ename = "zerodark-theme"; - version = "20180911.751"; + version = "20181218.49"; src = fetchFromGitHub { owner = "NicolasPetton"; repo = "zerodark-theme"; - rev = "09a6bc6d8bcc7c2bb89e497dc8f6d3a29f6fe4c2"; - sha256 = "1i690ilvhskxqljjsnlpp124i8jl2njxmynppricxwvxrhh69pgz"; + rev = "a697570aeb5b8c008961e0869f5e05740f43113d"; + sha256 = "02i2vra853wb8nng37ybii70b3z6p10j5s3jnv9j2dlcnajbfvbr"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/d00b78ead693e844e35c760fe2c39b8ed6cb0d81/recipes/zerodark-theme"; @@ -103941,12 +106965,12 @@ melpaBuild { pname = "zig-mode"; ename = "zig-mode"; - version = "20180818.848"; + version = "20181130.1547"; src = fetchFromGitHub { owner = "ziglang"; repo = "zig-mode"; - rev = "3778fb55ca675f1eaa5cc85f941ef952a2daa5f4"; - sha256 = "0b3qwww71j6nm287yj55kj9wbq0a7l73r7gyc94c320c8wb3ivd8"; + rev = "1f4ebf10660e5e09e61d042d7db9e1ec5e8ff0cb"; + sha256 = "1d67irx95jcf08mnqq17hngv6x49vpfssnplgv0lgpnps5d8g5nh"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/6440f81aed1fcddcaf7afeedb74520e605211986/recipes/zig-mode"; @@ -103984,6 +107008,33 @@ license = lib.licenses.free; }; }) {}; + zmq = callPackage ({ cl-lib ? null + , emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "zmq"; + ename = "zmq"; + version = "20181203.1118"; + src = fetchFromGitHub { + owner = "dzop"; + repo = "emacs-zmq"; + rev = "f9877d8d8086d81007e2f1b2d4bd489c9b87b3b0"; + sha256 = "1a2yq65i49fhyqz4hbznp6f31138bdh17nkhv62wrb296mdm7751"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/72f4dcc2723de826bf1af7235ac6d9119a243c63/recipes/zmq"; + sha256 = "14bbh00a58xgxyxl8zjxl57rf6351fnwsnk4cvvy341fvf86dklc"; + name = "recipe"; + }; + packageRequires = [ cl-lib emacs ]; + meta = { + homepage = "https://melpa.org/#/zmq"; + license = lib.licenses.free; + }; + }) {}; znc = callPackage ({ cl-lib ? null , fetchFromGitHub , fetchurl @@ -104349,6 +107400,32 @@ license = lib.licenses.free; }; }) {}; + zpl-mode = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "zpl-mode"; + ename = "zpl-mode"; + version = "20180906.359"; + src = fetchFromGitHub { + owner = "ax487"; + repo = "zpl-mode"; + rev = "35e7e23c6baf31b5e65dd7405c8ab9b13c70637e"; + sha256 = "147d7ylpk77zcsjim0my6cbyms28yd7mfaigmzm009jc1bn4r7f5"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/0bf11cd6ceb2633f968134d80f37d32f91c48227/recipes/zpl-mode"; + sha256 = "0wqhwzanvc1gpnykfqzi02p9zx0c1n6gnavg5dv1mlmc8x0hr67s"; + name = "recipe"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://melpa.org/#/zpl-mode"; + license = lib.licenses.free; + }; + }) {}; zpresent = callPackage ({ dash , emacs , fetchhg @@ -104377,6 +107454,32 @@ license = lib.licenses.free; }; }) {}; + zprint-mode = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "zprint-mode"; + ename = "zprint-mode"; + version = "20181111.1145"; + src = fetchFromGitHub { + owner = "pesterhazy"; + repo = "zprint-mode.el"; + rev = "6b979f6cb50d1f3da0ec44f39fd0dd893785ca44"; + sha256 = "0fbm0klda8rbybp6rb1296czn8gc1c7bvcyd40qlg5jy1wxwjbd3"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/125f6358dd8d715b61b12de5d39215453e53ea10/recipes/zprint-mode"; + sha256 = "07ziwnk1c620s7rp42fylpw5vgin0p7aapp3g8aif60vcb8g3m7y"; + name = "recipe"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://melpa.org/#/zprint-mode"; + license = lib.licenses.free; + }; + }) {}; ztree = callPackage ({ cl-lib ? null , fetchFromGitHub , fetchurl @@ -104463,12 +107566,12 @@ melpaBuild { pname = "zzz-to-char"; ename = "zzz-to-char"; - version = "20171231.2219"; + version = "20181231.2307"; src = fetchFromGitHub { owner = "mrkkrp"; repo = "zzz-to-char"; - rev = "8ddda49de3356d8fa0308d79b5d68272baf2c57b"; - sha256 = "17d8mmmgj2w4nm2nfg12g35i7zbp4bp47ix5ifqqm1zvwmbmzrqx"; + rev = "2174905bea07862fc51e5c1cd3f9327f49bcbefd"; + sha256 = "1qxdvi5dh1wg0702s6n8j0hvrgcv7hxp9as4y4cl3cjlli3p07jl"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/7063cbc1f1501ce81552d7ef1d42d1309f547c42/recipes/zzz-to-char"; diff --git a/pkgs/applications/editors/emacs-modes/melpa-packages.nix b/pkgs/applications/editors/emacs-modes/melpa-packages.nix index 777d8e62541..7c153168496 100644 --- a/pkgs/applications/editors/emacs-modes/melpa-packages.nix +++ b/pkgs/applications/editors/emacs-modes/melpa-packages.nix @@ -89,6 +89,12 @@ self: # Expects bash to be at /bin/bash flycheck-rtags = markBroken super.flycheck-rtags; + forge = super.forge.overrideAttrs (attrs: { + # searches for Git at build time + nativeBuildInputs = + (attrs.nativeBuildInputs or []) ++ [ external.git ]; + }); + # build timeout graphene = markBroken super.graphene; @@ -167,6 +173,12 @@ self: (attrs.nativeBuildInputs or []) ++ [ external.git ]; }); + magit-filenotify = super.magit-filenotify.overrideAttrs (attrs: { + # searches for Git at build time + nativeBuildInputs = + (attrs.nativeBuildInputs or []) ++ [ external.git ]; + }); + # missing OCaml merlin = markBroken super.merlin; diff --git a/pkgs/applications/editors/emacs-modes/melpa-stable-generated.nix b/pkgs/applications/editors/emacs-modes/melpa-stable-generated.nix index f614db8d190..b359c5dcc1f 100644 --- a/pkgs/applications/editors/emacs-modes/melpa-stable-generated.nix +++ b/pkgs/applications/editors/emacs-modes/melpa-stable-generated.nix @@ -628,7 +628,7 @@ melpaBuild { pname = "ac-php"; ename = "ac-php"; - version = "2.0.5"; + version = "2.0.6"; src = fetchFromGitHub { owner = "xcwen"; repo = "ac-php"; @@ -660,12 +660,12 @@ melpaBuild { pname = "ac-php-core"; ename = "ac-php-core"; - version = "2.0.5"; + version = "2.0.6"; src = fetchFromGitHub { owner = "xcwen"; repo = "ac-php"; - rev = "c815709f46b87cd3677f0b29eecae4973709645a"; - sha256 = "04rbq9q86am6fm4z78pm7lkgjr2p01iq41yfd0qmas5bnvfbzsvk"; + rev = "40250a537830981104022f9afdb6202eb2692b82"; + sha256 = "12smcyc1gzgd3kxvas55n87biwc74ilnjfsg5rcjp0s10iiggkww"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/ac283f1b65c3ba6278e9d3236e5a19734e42b123/recipes/ac-php-core"; @@ -715,12 +715,12 @@ melpaBuild { pname = "ac-rtags"; ename = "ac-rtags"; - version = "2.18"; + version = "2.21"; src = fetchFromGitHub { owner = "Andersbakken"; repo = "rtags"; - rev = "7e6b6f21935eedbe4678ba91c5531ac162b51a5a"; - sha256 = "12629d1s8rplhjh17n3bmgnkpscq4gljgyl84j8qyhh40dwq1qk0"; + rev = "5e51faa79016b3302d8037e13329a4320de524f5"; + sha256 = "0qw6l96k2hxv3jvjw3nvas7m73jqj7mcchawzss8by92l61n0cx7"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/3dea16daf0d72188c8b4043534f0833fe9b04e07/recipes/ac-rtags"; @@ -1029,30 +1029,6 @@ license = lib.licenses.free; }; }) {}; - ack-menu = callPackage ({ fetchFromGitHub - , fetchurl - , lib - , melpaBuild }: - melpaBuild { - pname = "ack-menu"; - version = "0.2.3"; - src = fetchFromGitHub { - owner = "chumpage"; - repo = "ack-menu"; - rev = "37e9979eb65e3803fc00829377397b4e6f2bd059"; - sha256 = "0hib4a8385q2czi1yqs0hwnva2xi7kw0bdfnrgha1hrl30rilp2f"; - }; - recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/8ff331ed45e5b7697e4862e723408602ecc98bc7/recipes/ack-menu"; - sha256 = "1d2kw04ndxji2qjcm1b65qnxpp08zx8gbia8bl6x6mnjb2isc2d9"; - name = "ack-menu"; - }; - packageRequires = []; - meta = { - homepage = "https://melpa.org/#/ack-menu"; - license = lib.licenses.free; - }; - }) {}; actionscript-mode = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -1078,6 +1054,34 @@ license = lib.licenses.free; }; }) {}; + activity-watch-mode = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild + , projectile + , request }: + melpaBuild { + pname = "activity-watch-mode"; + ename = "activity-watch-mode"; + version = "1.0.2"; + src = fetchFromGitHub { + owner = "pauldub"; + repo = "activity-watch-mode"; + rev = "27a0841b32dfd2b691a1dcf3a4a50d74660676b1"; + sha256 = "1hfmll3g33529pshzvh2gxqr0h53p1v68wq0zlq2h2wfml89bzr9"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/9780c413da8001651191fb8f9708fe9691d714cf/recipes/activity-watch-mode"; + sha256 = "0k0ai6658gb43c4ylrq66zqzrfh6ksvkf0kxj2qx8a5a1aw9bd4d"; + name = "recipe"; + }; + packageRequires = [ emacs projectile request ]; + meta = { + homepage = "https://melpa.org/#/activity-watch-mode"; + license = lib.licenses.free; + }; + }) {}; adafruit-wisdom = callPackage ({ emacs , fetchFromGitHub , fetchurl @@ -1455,12 +1459,12 @@ melpaBuild { pname = "alect-themes"; ename = "alect-themes"; - version = "0.8"; + version = "0.9"; src = fetchFromGitHub { owner = "alezost"; repo = "alect-themes"; - rev = "1812abbe0079d1075525d9fb2da6fcfec7db3766"; - sha256 = "0sl2njnhm37cya06y39ls8p3zwpjwyv1pd7w3yfk5frz24vaxlcq"; + rev = "a24065dc780738e914140d617bfe119c889d9c78"; + sha256 = "0nffxpdm0sa7bynwi0rmlwpc4qmvbda5ankhzz7fmk4ap9fkjxv9"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/84c25a290ae4bcc4674434c83c66ae128e4c4282/recipes/alect-themes"; @@ -1686,12 +1690,12 @@ melpaBuild { pname = "android-mode"; ename = "android-mode"; - version = "0.5.0"; + version = "0.5.1"; src = fetchFromGitHub { owner = "remvee"; repo = "android-mode"; - rev = "f274da87429617b0b9c5889d46b36de64d982da4"; - sha256 = "17m4hp2qb54widwadv23amc1lasnbwzh2ipc6180fnajg8zcbvyw"; + rev = "f8cabafaa266b56fcf4b3c6942b3ae062735251a"; + sha256 = "0npx54w565mkxkgkpv02dgmfc44i1256p0w331pf3nfxq145xh27"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/77633aa340803a433570327943fbe31b396f4355/recipes/android-mode"; @@ -1756,6 +1760,36 @@ license = lib.licenses.free; }; }) {}; + anki-mode = callPackage ({ dash + , emacs + , fetchFromGitHub + , fetchurl + , lib + , markdown-mode + , melpaBuild + , request + , s }: + melpaBuild { + pname = "anki-mode"; + ename = "anki-mode"; + version = "0.1"; + src = fetchFromGitHub { + owner = "davidshepherd7"; + repo = "anki-mode"; + rev = "06dd1bd49b7a2b43cf9b744dd5caf67809f39d74"; + sha256 = "0ryyyihvvrcipj2bkx24cx1ibgcymnsbn79ibvmhb3wbad3hr072"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/fc02d06e7c7e9230e4b082923b889e1e83676263/recipes/anki-mode"; + sha256 = "1d429ws6kmswcyk0dnb303z01kq475n60a520hj258x23vp8802q"; + name = "recipe"; + }; + packageRequires = [ dash emacs markdown-mode request s ]; + meta = { + homepage = "https://melpa.org/#/anki-mode"; + license = lib.licenses.free; + }; + }) {}; annotate = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -1842,12 +1876,12 @@ melpaBuild { pname = "ansible"; ename = "ansible"; - version = "0.1.0"; + version = "0.2.0"; src = fetchFromGitHub { owner = "k1LoW"; repo = "emacs-ansible"; - rev = "e9b9431738de4808d8ef70871069f68885cc0d98"; - sha256 = "03d240jngxw51ybrsjw8kdxygrr0ymdckzwga2jr1bqf26v559j2"; + rev = "8a097176d6772b6667254dbbe19c5fb64527bf5d"; + sha256 = "1m2cb88jb1wxa9rydkbn5llx2gql453l87b4cgzsjllha6j1488k"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/8e45bf58b980ff542a5e887707a6361eb5ac0492/recipes/ansible"; @@ -2466,12 +2500,12 @@ melpaBuild { pname = "auth-source-pass"; ename = "auth-source-pass"; - version = "4.0.1"; + version = "4.0.2"; src = fetchFromGitHub { owner = "DamienCassou"; repo = "auth-password-store"; - rev = "5690092e40c790384692d8e8da3451e6878d8c17"; - sha256 = "1dv202z8briifd4aqn8yvn4kd6zi1cabb2p86qcjj40lzkgn6w3p"; + rev = "5822a35fa8cb74b8fc34600e82dbba1d341ce745"; + sha256 = "0qkyqnfx596s0ycavm4ri0nbzmy2c6g7ifgql798p0pwwjgbsjyy"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/5e268441634a6e58a00e577d6e2292fa226c11b8/recipes/auth-source-pass"; @@ -2493,12 +2527,12 @@ melpaBuild { pname = "auto-compile"; ename = "auto-compile"; - version = "1.4.3"; + version = "1.5.0"; src = fetchFromGitHub { owner = "emacscollective"; repo = "auto-compile"; - rev = "6ce4255ab9a0b010ef8414c5bd9a6d6d9eea012f"; - sha256 = "013vw4sgw6hpz7kskilndv7i7ik40asrkgicghjbygwk0lj5ran3"; + rev = "bed783e7a85d5812cf1cb3f39c40ba718e015be6"; + sha256 = "1nsv5j84gmr51gg49lc5pany1jkf6wlrnb62hbpyl19jsy7il8mc"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/57a2fb9524df3fdfdc54c403112e12bd70888b23/recipes/auto-compile"; @@ -2914,14 +2948,14 @@ ename = "autothemer"; version = "0.2.2"; src = fetchFromGitHub { - owner = "sebastiansturm"; + owner = "jasonm23"; repo = "autothemer"; rev = "8c467f57571c154129d660dfccebd151c998f2d9"; sha256 = "0cd2pqh6k32sjidkcd8682y4l6mx52xw4a05f38kk8nsrk28m74k"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/3d7d7beed6ba10d7aa6a36328a696ba2d0d21dc2/recipes/autothemer"; - sha256 = "1lcyqfzx7qpkr3ajk0zi0mn32yvcwn06f61vhghn9c66xambsr7f"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/9a15a17a5aa78aed72958b2a1bde53f0c0ab5be7/recipes/autothemer"; + sha256 = "0wahmbihyr3dx4lgiwi7041gvmmqlzlv7ss25fw90srs9n2h05gj"; name = "recipe"; }; packageRequires = [ cl-lib dash emacs ]; @@ -3099,6 +3133,33 @@ license = lib.licenses.free; }; }) {}; + backline = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild + , outline-minor-faces }: + melpaBuild { + pname = "backline"; + ename = "backline"; + version = "0.1.1"; + src = fetchFromGitHub { + owner = "tarsius"; + repo = "backline"; + rev = "035de23bbf2ca00e69095596b5b9b3ddfa364984"; + sha256 = "1b57iipkd78ryx71ygwampjm5mbwdb9mxnxpfs2wsm1zz8024xak"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/f252e45e8bd6e8af1267755d108f378a974ddaf1/recipes/backline"; + sha256 = "0y5y048s6r3mcgjfxpmwarnhn6lh00j9cla6qjsd83f79hw5cq4y"; + name = "recipe"; + }; + packageRequires = [ emacs outline-minor-faces ]; + meta = { + homepage = "https://melpa.org/#/backline"; + license = lib.licenses.free; + }; + }) {}; badwolf-theme = callPackage ({ emacs , fetchFromGitHub , fetchurl @@ -3133,12 +3194,12 @@ melpaBuild { pname = "banner-comment"; ename = "banner-comment"; - version = "2.6.2"; + version = "2.7"; src = fetchFromGitHub { owner = "WJCFerguson"; repo = "banner-comment"; - rev = "fedbb071d043106a30e378ee58b96e349e8068ed"; - sha256 = "1d6yp96rv6p9f3b8ddrpzb3ng2v0vlqb1akcpd7dria6y6aai8l4"; + rev = "ac52f6b24e590787a385c08cc3751d6f2ddca815"; + sha256 = "1630py97ldh3w71s26jbcxk58529g03sl0padnzqj0rbqy82yw8w"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/4bb69f15cb6be38a86abf4d15450a29c9a819068/recipes/banner-comment"; @@ -3598,12 +3659,12 @@ melpaBuild { pname = "bicycle"; ename = "bicycle"; - version = "0.1.0"; + version = "0.2.0"; src = fetchFromGitHub { owner = "tarsius"; repo = "bicycle"; - rev = "30c451e6c6910c5aa5ed2b189679ca5e3bc0d6f7"; - sha256 = "1kyiyq79shwkycgl3373pwgqbg1aqxsai44yl9vw17s37hhff70n"; + rev = "42a5db3514019d539500a67f913411f5533a1eb3"; + sha256 = "1nanf0dp7kqzs2mc8gzr9qzn9v6q86sdr35pzysdl41xqydxpsrd"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/ec9b4138ffaf81b556e01b85ce4b112e77909260/recipes/bicycle"; @@ -3624,12 +3685,12 @@ melpaBuild { pname = "bifocal"; ename = "bifocal"; - version = "0.0.3"; + version = "0.0.5"; src = fetchFromGitHub { owner = "riscy"; repo = "bifocal-mode"; - rev = "a8b222b069a6bd64531b4780905989797bad8abe"; - sha256 = "0c6vzh35lj3pg9wd4v2fy6xdmcg9kq3n5br6rp4lx257gxglzpwh"; + rev = "add30c678488cec04976a85ba8cda20805938a01"; + sha256 = "01j8s6c3qm4scxy1dk07l41y0n55gz83zzfi254kc2vyx02vqg7f"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/79e71995bd8452bad2e717884f148ec74c9735fc/recipes/bifocal"; @@ -3668,6 +3729,33 @@ license = lib.licenses.free; }; }) {}; + bind-chord = callPackage ({ bind-key + , fetchFromGitHub + , fetchurl + , key-chord + , lib + , melpaBuild }: + melpaBuild { + pname = "bind-chord"; + ename = "bind-chord"; + version = "2.4"; + src = fetchFromGitHub { + owner = "jwiegley"; + repo = "use-package"; + rev = "33127b706e66fb20dfa40d94eb553dd7d6ef9197"; + sha256 = "1iz7ibdvf3bnfkwfhakigvrdzg69qgx3z7qayq54spx3rpxf7x0b"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/6240afa625290187785e4b7535ee7b0d7aad8969/recipes/bind-chord"; + sha256 = "1hyhs3iypyg5730a20axcfzrrglm4nbgdz8x1ifkaa0iy5zc9hb0"; + name = "recipe"; + }; + packageRequires = [ bind-key key-chord ]; + meta = { + homepage = "https://melpa.org/#/bind-chord"; + license = lib.licenses.free; + }; + }) {}; bind-key = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -3675,12 +3763,12 @@ melpaBuild { pname = "bind-key"; ename = "bind-key"; - version = "2.3"; + version = "2.4"; src = fetchFromGitHub { owner = "jwiegley"; repo = "use-package"; - rev = "d867b0370e4e311c71665ccaa418374a15097461"; - sha256 = "193a9x1d6c8hprinrls2mpplrab2syn64zjyfgxwzisjqgik02dy"; + rev = "c03d153e5882109e24c016d3afa6940af673ede6"; + sha256 = "0zyl8dfg8acf99966sp8i5iky1mvn2h016viqk48s0hjv9va0wii"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/d39d33af6b6c9af9fe49bda319ea05c711a1b16e/recipes/bind-key"; @@ -3926,26 +4014,30 @@ license = lib.licenses.free; }; }) {}; - borg = callPackage ({ fetchFromGitHub + borg = callPackage ({ dash + , emacs + , epkg + , fetchFromGitHub , fetchurl , lib + , magit , melpaBuild }: melpaBuild { pname = "borg"; ename = "borg"; - version = "2.0.0"; + version = "3.0.1"; src = fetchFromGitHub { owner = "emacscollective"; repo = "borg"; - rev = "34eac585d6829e17ce59b09fe6ad5d675302c096"; - sha256 = "1q7k2c7pxcywg6xjk8awg73skyw59a6w4aa9sxbsz9vdj2zn04k9"; + rev = "99d166796f181741ebd79542b96824b096bcb36c"; + sha256 = "08jryf96v5cf1yl0jd6y84f3q2g75yiv6z2044y53llk1rxpcrhw"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/878ab90d444f3a1fd2c9f9068ca7b477e218f1da/recipes/borg"; sha256 = "0gn4hf7hn190gl0kg59nr6jzjnb39c0hy9b3brrsfld9hyxga9jr"; name = "recipe"; }; - packageRequires = []; + packageRequires = [ dash emacs epkg magit ]; meta = { homepage = "https://melpa.org/#/borg"; license = lib.licenses.free; @@ -4271,12 +4363,12 @@ melpaBuild { pname = "bui"; ename = "bui"; - version = "1.2.0"; + version = "1.2.1"; src = fetchFromGitHub { owner = "alezost"; repo = "bui.el"; - rev = "bd3c5ee32d28d80c6eb54b0340626103c32e3093"; - sha256 = "0ixia5s41f2nbal3wsixacbhbc0mk9yb75ir1amqakip30sq4apv"; + rev = "9162c24b75799857d54838d961c60776ffcd657e"; + sha256 = "0sszdl4kvqbihdh8d7mybpp0d8yw2p3gyiipjcxz9xhvvmw3ww4x"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/38b7c9345de75a707b4a73e8bb8e2f213e4fd739/recipes/bui"; @@ -4299,12 +4391,12 @@ melpaBuild { pname = "build-farm"; ename = "build-farm"; - version = "0.2.1"; + version = "0.2.2"; src = fetchFromGitHub { owner = "alezost"; repo = "build-farm.el"; - rev = "e244dea35566a10253d61be430d3caf81b779af8"; - sha256 = "1a4ky0hca26p7f3i2c2s5517ygkyaaz52vs0vxy6f5q95rhlgdhd"; + rev = "5c268a3c235ace0d79ef1ec82c440120317e06f5"; + sha256 = "0i0bwbav5861j2y15j9nd5m9rdqg9q97zgcbld8pivr9nyxy63lz"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/bc97bf56ea50788ecbbbb1f46e188e8487370936/recipes/build-farm"; @@ -4376,12 +4468,12 @@ melpaBuild { pname = "bury-successful-compilation"; ename = "bury-successful-compilation"; - version = "0.1"; + version = "0.1.2"; src = fetchFromGitHub { owner = "EricCrosson"; repo = "bury-successful-compilation"; - rev = "7b16dc71b43914928cc16da674e69d7af975238a"; - sha256 = "08ny1iycsgpal99g180w9yvk6ql8qn2kkc9xk9lmfv5p1wqm3l4w"; + rev = "064817b44a431476305099301311def0a2d9d543"; + sha256 = "13ilv4zbzwb5rz0gf69z8pvxazvwlmb5shkb055l42ksxslp49hh"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/f66e2e23c7a1fa0ce6fa8a0e814242b7c46c299c/recipes/bury-successful-compilation"; @@ -4429,12 +4521,12 @@ melpaBuild { pname = "buttercup"; ename = "buttercup"; - version = "1.13"; + version = "1.16"; src = fetchFromGitHub { owner = "jorgenschaefer"; repo = "emacs-buttercup"; - rev = "079ef3e4620075932fecdda01e55eb4d78ba13a4"; - sha256 = "0n87526mhsyswpnk5lmvlh00bnzm1sqfsl04kwab75kig8shs3bm"; + rev = "810fa6fb8dab06610dbf2b5ccbc64b4d0ecc7485"; + sha256 = "0dckgcyzsav6ld78bcyrrygy1cz1jvqgav6vy8f6klpmk3r8xrl1"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/d4b187cb5b3cc5b546bfa6b94b6792e6363242d1/recipes/buttercup"; @@ -4447,6 +4539,32 @@ license = lib.licenses.free; }; }) {}; + buttercup-junit = callPackage ({ buttercup + , emacs + , fetchgit + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "buttercup-junit"; + ename = "buttercup-junit"; + version = "1.1.0"; + src = fetchgit { + url = "https://bitbucket.org/olanilsson/buttercup-junit"; + rev = "1b3214d3d74d998c475f54035643231d8bcffbee"; + sha256 = "120ayxx7f8vdmjwdvycjpkc9acb03z1l0jf2ndigyg64jb8q7a4g"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/f1030960afe994da338d78607233319b3f7f0c8b/recipes/buttercup-junit"; + sha256 = "1v848vbwxqrw9sdsvjaggkspavmbwkmqshf321m4n8srvi51383w"; + name = "recipe"; + }; + packageRequires = [ buttercup emacs ]; + meta = { + homepage = "https://melpa.org/#/buttercup-junit"; + license = lib.licenses.free; + }; + }) {}; button-lock = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -4498,6 +4616,32 @@ license = lib.licenses.free; }; }) {}; + caddyfile-mode = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "caddyfile-mode"; + ename = "caddyfile-mode"; + version = "0.2"; + src = fetchFromGitHub { + owner = "Schnouki"; + repo = "caddyfile-mode"; + rev = "b0371063adc18d3cbd6dd673ea4fe39d27825d1b"; + sha256 = "1w0jfh8z9q2b0av66gckmb9d9dvx0wqmjf54avgynlmh3a7gv7lz"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/ec771222056dcb6c67e133cd6aa6b4e4d03ac264/recipes/caddyfile-mode"; + sha256 = "12d57xcpp78lmcr95nfp0r9g7lkw8kfxf9c3rc7g53kh5xaaj4i2"; + name = "recipe"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://melpa.org/#/caddyfile-mode"; + license = lib.licenses.free; + }; + }) {}; cake-inflector = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -4739,7 +4883,7 @@ melpaBuild { pname = "caml"; ename = "caml"; - version = "4.7.0"; + version = "4.7.1"; src = fetchFromGitHub { owner = "ocaml"; repo = "ocaml"; @@ -5126,7 +5270,7 @@ melpaBuild { pname = "cfengine-code-style"; ename = "cfengine-code-style"; - version = "3.12.0"; + version = "3.13.0"; src = fetchFromGitHub { owner = "cfengine"; repo = "core"; @@ -5422,12 +5566,12 @@ melpaBuild { pname = "cider"; ename = "cider"; - version = "0.18.0"; + version = "0.19.0"; src = fetchFromGitHub { owner = "clojure-emacs"; repo = "cider"; - rev = "97b95f5b5bb4f9c8f439375b4238d41fd5be9926"; - sha256 = "1m9kc88vga3q5d731qnpngnsa0n57pf21k3hll20rw8rggrx4vdn"; + rev = "91210f6866c8f034b956eac74694db8ea28d3b9a"; + sha256 = "1kvv1cyp2x744ixxhrg2573v3b5b9lxpqc3ijawwvwc0z6sy77aq"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/55a937aed818dbe41530037da315f705205f189b/recipes/cider"; @@ -5476,6 +5620,33 @@ license = lib.licenses.free; }; }) {}; + cider-hydra = callPackage ({ cider + , fetchFromGitHub + , fetchurl + , hydra + , lib + , melpaBuild }: + melpaBuild { + pname = "cider-hydra"; + ename = "cider-hydra"; + version = "0.1.0"; + src = fetchFromGitHub { + owner = "clojure-emacs"; + repo = "cider-hydra"; + rev = "5956c3909cd9beae11f64973e4f0d830cea7860d"; + sha256 = "1hnari85c4y5sc8cdv2idkg2qv058crz54xdidnphr1wgw5zhvpk"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/51d5e6471f88337c478ee5c189f037aaec937f56/recipes/cider-hydra"; + sha256 = "1qjgfrj3ck70vkyc9c00mif0jq5hc2yan2hql31qzbpqzg3pi2r7"; + name = "recipe"; + }; + packageRequires = [ cider hydra ]; + meta = { + homepage = "https://melpa.org/#/cider-hydra"; + license = lib.licenses.free; + }; + }) {}; cil-mode = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -5511,14 +5682,14 @@ ename = "circadian"; version = "0.3.2"; src = fetchFromGitHub { - owner = "GuidoSchmidt"; + owner = "guidoschmidt"; repo = "circadian.el"; rev = "9894361dcd6ffb6d4629b4cbbabda2153699eb8e"; sha256 = "0wpsykmai3idz0bgfl07hwl9nr4x9sgprvqgw8jln4dz2wf5gdic"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/3440905a20bc91bb2637a87c04ff8410379f150d/recipes/circadian"; - sha256 = "13797y1w1636bibisz5i5p2xp0smd3apnhc1nx8ijm75smx679id"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/35763febad20f29320d459394f810668db6c3353/recipes/circadian"; + sha256 = "1xxrhifw371yc4i2cddzcdmqh5dfc905wyl88765098685q8k4bp"; name = "recipe"; }; packageRequires = [ emacs ]; @@ -5663,6 +5834,32 @@ license = lib.licenses.free; }; }) {}; + cl-libify = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "cl-libify"; + ename = "cl-libify"; + version = "0.2"; + src = fetchFromGitHub { + owner = "purcell"; + repo = "cl-libify"; + rev = "f7df5d868ada173bc81860ef81ece359f13ae4e4"; + sha256 = "1xp0zajp4rsnxkfzrmz0m5bihk0n1hgwc1cm9q163b2azsvixxmw"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/22088f8779652072871d5c472c67f34bd0470129/recipes/cl-libify"; + sha256 = "0p3b57vfzhk348hb7bcnkq4ihi4qzsy4hcdvwa1h85i84vwyzk5d"; + name = "recipe"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://melpa.org/#/cl-libify"; + license = lib.licenses.free; + }; + }) {}; click-mode = callPackage ({ emacs , fetchFromGitHub , fetchurl @@ -5698,12 +5895,12 @@ melpaBuild { pname = "cliphist"; ename = "cliphist"; - version = "0.5.5"; + version = "0.5.6"; src = fetchFromGitHub { owner = "redguardtoo"; repo = "cliphist"; - rev = "e454254f8bd9dbaea28e95c786d7297a2d4e920a"; - sha256 = "1lxsy78kmrrb82y7nlaaaq2qsly7f3wa8jw1bagjax4rwvld0vim"; + rev = "232ab0b3f6d502de61ebe76681a6a04d4223b877"; + sha256 = "0is772r0b7i8rvra9zb94g9aczv8b6q0dmdk67wbli5rv5drfjyq"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/82d86dae4ad8efc8ef342883c164c56e43079171/recipes/cliphist"; @@ -5844,33 +6041,6 @@ license = lib.licenses.free; }; }) {}; - clojure-cheatsheet = callPackage ({ cider - , fetchFromGitHub - , fetchurl - , helm - , lib - , melpaBuild }: - melpaBuild { - pname = "clojure-cheatsheet"; - ename = "clojure-cheatsheet"; - version = "0.4.0"; - src = fetchFromGitHub { - owner = "clojure-emacs"; - repo = "clojure-cheatsheet"; - rev = "f8db406b7b13a580c142d08865c9a03c101235fa"; - sha256 = "1x1kfycf3023z0r3v7xqci59k8jv5wn2vqc9y0nx7k5qgifmswrx"; - }; - recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/0569da79bd8145df334965c5d4364a50b6b548fa/recipes/clojure-cheatsheet"; - sha256 = "05sw3bkdcadslpsk64ds0ciavmdgqk7fr5q3z505vvafmszfnaqv"; - name = "recipe"; - }; - packageRequires = [ cider helm ]; - meta = { - homepage = "https://melpa.org/#/clojure-cheatsheet"; - license = lib.licenses.free; - }; - }) {}; clojure-mode = callPackage ({ emacs , fetchFromGitHub , fetchurl @@ -5985,12 +6155,12 @@ melpaBuild { pname = "closql"; ename = "closql"; - version = "0.6.0"; + version = "1.0.0"; src = fetchFromGitHub { owner = "emacscollective"; repo = "closql"; - rev = "faed079570c2e70b0e4988177e35b7990afa4752"; - sha256 = "0ni2akjb1n5w6vz3b210c3bya9mbyyxiygn8hna707qnszd0li8r"; + rev = "012b94f8695e194455111fd54eff0b94dd0dd0db"; + sha256 = "1xhpfjjkjqfc1k2rj77cscclz5r7gpvv3hi202x178vdcpipjwar"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/2df16abf56e53d4a1cc267a78797419520ff8a1c/recipes/closql"; @@ -6091,12 +6261,12 @@ melpaBuild { pname = "cmake-mode"; ename = "cmake-mode"; - version = "3.12.2"; + version = "3.13.2"; src = fetchFromGitHub { owner = "Kitware"; repo = "CMake"; - rev = "d88451568dae61422d9d1b5796ad450ad28e0eb6"; - sha256 = "1hg99q4w0cfhm53qmiqirzrfk1bnx1lmb5kx2swfwcrxyyp80kby"; + rev = "8d478c0003cc9bb4836038fc1a27d3bbd40348d2"; + sha256 = "0i4rs8m7qf9milc9csy38r7m0j5xqy2q75fqmyxd4xpfmkf4a2v7"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/598723893ae4bc2e60f527a072efe6ed9d4e2488/recipes/cmake-mode"; @@ -6160,6 +6330,33 @@ license = lib.licenses.free; }; }) {}; + code-stats = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild + , request }: + melpaBuild { + pname = "code-stats"; + ename = "code-stats"; + version = "0.1"; + src = fetchFromGitHub { + owner = "xuchunyang"; + repo = "code-stats-emacs"; + rev = "20d60ded0743f01206c3c2e92ab73788def9adcb"; + sha256 = "0g8pqqpwmc646krdpfkri8q7pwnj8sb3pma5mfkwg8lvj6ddcx27"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/20af5580926e9975605c0a245f6ac15c25f4921e/recipes/code-stats"; + sha256 = "0mwjlhpmrbh3mbw3hjlsbv1fr4mxh068c9g0zcxq7wkksxx707if"; + name = "recipe"; + }; + packageRequires = [ emacs request ]; + meta = { + homepage = "https://melpa.org/#/code-stats"; + license = lib.licenses.free; + }; + }) {}; codic = callPackage ({ cl-lib ? null , emacs , fetchFromGitHub @@ -6458,12 +6655,12 @@ melpaBuild { pname = "commentary-theme"; ename = "commentary-theme"; - version = "0.3.2"; + version = "0.4.0"; src = fetchFromGitHub { owner = "pzel"; repo = "commentary-theme"; - rev = "1e2a64719b9d52992c6cdb91911ab313bcd69a77"; - sha256 = "1bs7dz10f25pi5wfszxgf6afrsbfw6fwp8sm55fa6c46l3pi9jpm"; + rev = "9a825ae98166c9dbbf106e7be62ee69dd9f0342f"; + sha256 = "1x30iyvvxggbh7xvp8lwpirvpqijchqf2fdaw4xrlbw5vajlaxcx"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/852b5f83c9870209080d2ed39fede3215ae43e64/recipes/commentary-theme"; @@ -6537,12 +6734,12 @@ melpaBuild { pname = "company"; ename = "company"; - version = "0.9.6"; + version = "0.9.9"; src = fetchFromGitHub { owner = "company-mode"; repo = "company-mode"; - rev = "4711695af3df93f1bbceee165c505fea5bfc49ac"; - sha256 = "0x8zwq88k85ikzr0klm6nfa6i1wbykzfa790cg9cmi7wrsywimm1"; + rev = "ac82e875e144b227e926c09c53def9b0c059115c"; + sha256 = "07zjaaf6nd6zkh0208774lw7bx7cfnl25zfgva51wki20rcq6cjp"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/96e7b4184497d0d0db532947f2801398b72432e4/recipes/company"; @@ -6842,25 +7039,24 @@ company-go = callPackage ({ company , fetchFromGitHub , fetchurl - , go-mode , lib , melpaBuild }: melpaBuild { pname = "company-go"; ename = "company-go"; - version = "20170907"; + version = "20150303"; src = fetchFromGitHub { - owner = "nsf"; + owner = "mdempsky"; repo = "gocode"; - rev = "84b76ec55b44739143088371a34ef30a4719dfe4"; - sha256 = "0ig9jsx9gv3cya11r0w07xpby9rzlh3iz02mir0z7ffnf8qawmrc"; + rev = "3109790fda3785bbad336e3dd85aaaa4604dbe8b"; + sha256 = "1sn6fvskb8drxphxjn57nr7y0wfh3y6xiksym1fqx68znzwf7ckh"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/04867a574773e8794335a2664d4f5e8b243f3ec9/recipes/company-go"; - sha256 = "1ncy5wlg3ywr17zrxb1d1bap4gdvwr35w9a8b0crz5h3l3y4cp29"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/ef45683cbfe82bf8a9d6f3f1c59e3cf340accbe3/recipes/company-go"; + sha256 = "1zhdckq1c9jzi5cf90w2m77fq6l67rjri4lnf8maq82gxqzk6wa5"; name = "recipe"; }; - packageRequires = [ company go-mode ]; + packageRequires = [ company ]; meta = { homepage = "https://melpa.org/#/company-go"; license = lib.licenses.free; @@ -7074,12 +7270,12 @@ melpaBuild { pname = "company-php"; ename = "company-php"; - version = "2.0.5"; + version = "2.0.6"; src = fetchFromGitHub { owner = "xcwen"; repo = "ac-php"; - rev = "e452a20a9f94113260b9cba9af7fb44cc8c647ef"; - sha256 = "08gvn4gq2j349rz24ask6nzqnvw15p9c8r2lby4n6n0zc6iaxzm5"; + rev = "440e4e63f88d2087305e738d0dae8edddfdcfb04"; + sha256 = "0f132gpc2kkbjjcq4kr1cw0ikjggvmz0z6f8ws7xmm5f5rnn6jg8"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/ac283f1b65c3ba6278e9d3236e5a19734e42b123/recipes/company-php"; @@ -7092,6 +7288,34 @@ license = lib.licenses.free; }; }) {}; + company-phpactor = callPackage ({ cl-lib ? null + , company + , emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "company-phpactor"; + ename = "company-phpactor"; + version = "0.1.0"; + src = fetchFromGitHub { + owner = "emacs-php"; + repo = "phpactor.el"; + rev = "61e4eab638168b7034eef0f11e35a89223fa7687"; + sha256 = "0dsa1mygb96nlz5gppf0sny3lxaacvmvnkg84c0cs6x223s6zfx8"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/dc6edd22befea0aee9b11bc8df7d42c400e12f43/recipes/company-phpactor"; + sha256 = "1a6szs85hmxm2xpkmc3dyx2daap7bjvpnrl4gcmbq26zbz2f0z0a"; + name = "recipe"; + }; + packageRequires = [ cl-lib company emacs ]; + meta = { + homepage = "https://melpa.org/#/company-phpactor"; + license = lib.licenses.free; + }; + }) {}; company-prescient = callPackage ({ company , emacs , fetchFromGitHub @@ -7102,12 +7326,12 @@ melpaBuild { pname = "company-prescient"; ename = "company-prescient"; - version = "2.2"; + version = "2.2.1"; src = fetchFromGitHub { owner = "raxod502"; repo = "prescient.el"; - rev = "1e0db9451e75f0db29668bebe98dfa747c6b4bcf"; - sha256 = "0zm9phc4cv7ldgyngcj84fxc1j0nh12c05lxiwv0n1xb8wc6awvf"; + rev = "1623a0d4e5b9a752db45923fd91da48b49c85068"; + sha256 = "0yan4m9xf4iia4ns8kqa0zsham4h2mcnwsq9xnfwm26rkn94xrw0"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/b92c34e493bbefab1d7747b0855d1ab2f984cb7c/recipes/company-prescient"; @@ -7194,12 +7418,12 @@ melpaBuild { pname = "company-rtags"; ename = "company-rtags"; - version = "2.18"; + version = "2.21"; src = fetchFromGitHub { owner = "Andersbakken"; repo = "rtags"; - rev = "e4060b551575be378344c0cc1aedf11446b4f264"; - sha256 = "01xc5r2am0xck7q6jal3zyrqbzpx68fzqi9af7zb1klyw2s5v807"; + rev = "7c470ba8e15740f37c3a7a9c56331c1cc4c0b1bb"; + sha256 = "05czbkgq48jv0f9vainflikil51xiwd0h24jmmx5886wi3v1wb4c"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/3dea16daf0d72188c8b4043534f0833fe9b04e07/recipes/company-rtags"; @@ -7241,6 +7465,33 @@ license = lib.licenses.free; }; }) {}; + company-solidity = callPackage ({ cl-lib ? null + , company + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "company-solidity"; + ename = "company-solidity"; + version = "0.1.9"; + src = fetchFromGitHub { + owner = "ethereum"; + repo = "emacs-solidity"; + rev = "d0ff4dea49540f37301d869f2797fca2492f55d5"; + sha256 = "1wcy5z4wggn3zs9h1kyvm0ji51ppjcqdmym3mmxbrhan6a0kq724"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/e561d869f4e32bad5d1a8678f67e591ff586d6de/recipes/company-solidity"; + sha256 = "1rkja48j2m0g0azc34i715ckkqwjkb44y3b4a9vlxs8cjqza4w7q"; + name = "recipe"; + }; + packageRequires = [ cl-lib company ]; + meta = { + homepage = "https://melpa.org/#/company-solidity"; + license = lib.licenses.free; + }; + }) {}; company-sourcekit = callPackage ({ company , dash , dash-functional @@ -7450,25 +7701,26 @@ , fetchurl , lib , melpaBuild + , php-runtime , request , s , seq }: melpaBuild { pname = "composer"; ename = "composer"; - version = "0.0.8"; + version = "0.1.1"; src = fetchFromGitHub { owner = "emacs-php"; repo = "composer.el"; - rev = "2d16d3bb65c53e9e26f4b7b22ad38590a4a48ee1"; - sha256 = "1zxqqd12p1db75icbwbdj51fvp8zzhivi8ssnxda1r5y5crbiqdv"; + rev = "d88741009cf7cae0a75e3cc7a19dd9143fcc92f9"; + sha256 = "0iqm8997pl3pni7a49igj8q6sp37bjdshjwl6d95bqrjkjf9ll08"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/eb13cb0dba1696cc51132cd1ff723fa17f892a7c/recipes/composer"; sha256 = "01w9cywhfngkrl9az8kfpzm12nc0zwmax01pyxlbi2l2icmvp5s1"; name = "recipe"; }; - packageRequires = [ emacs f request s seq ]; + packageRequires = [ emacs f php-runtime request s seq ]; meta = { homepage = "https://melpa.org/#/composer"; license = lib.licenses.free; @@ -7560,25 +7812,27 @@ , emacs , fetchFromGitHub , fetchurl + , flycheck + , hydra , lib , melpaBuild - , parsec }: + , s }: melpaBuild { pname = "conllu-mode"; ename = "conllu-mode"; - version = "0.1.1.1"; + version = "0.4.5"; src = fetchFromGitHub { owner = "odanoburu"; repo = "conllu-mode"; - rev = "a752e9f7a04237e70e58beba23871f8fee4fd4e3"; - sha256 = "0nany4lqhn56xan9hjr4cwv77ydgi51aqsm150j0093qsr1a91xp"; + rev = "b301934e852bac8942f671998cfcac669c7ea97c"; + sha256 = "15jfbs5k5anxbcsadvb1sz5a3vm96f976c1iga4k16jz16mkhjxa"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/444f943baddfeafe29708d6d68aeeeedbb7aa7bd/recipes/conllu-mode"; sha256 = "1wffvvs8d0xcnz6mcm9rbr8imyj4npyc148yh0gzfzlgjm0fiz1v"; name = "recipe"; }; - packageRequires = [ cl-lib emacs parsec ]; + packageRequires = [ cl-lib emacs flycheck hydra s ]; meta = { homepage = "https://melpa.org/#/conllu-mode"; license = lib.licenses.free; @@ -7833,12 +8087,12 @@ melpaBuild { pname = "counsel-bbdb"; ename = "counsel-bbdb"; - version = "0.0.3"; + version = "0.0.4"; src = fetchFromGitHub { owner = "redguardtoo"; repo = "counsel-bbdb"; - rev = "c86f4b9ef99c9db0b2c4196a300d61300dc2d0c1"; - sha256 = "1dchyg8cs7n0zbj6mr2z840yi06b2wja65k04idlcs6ngy1vc3sr"; + rev = "df2890deb73b09f8055243bd91942ea887d9b7a1"; + sha256 = "0bki658mvlchqf3prkzxz4217a95cxm58c1qmf84yp2n8h6gd0d8"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/0ed9bcdb1f25a6dd743c1dac2bb6cda73a5a5dc2/recipes/counsel-bbdb"; @@ -7885,24 +8139,25 @@ , emacs , fetchFromGitHub , fetchurl + , ivy , lib , melpaBuild }: melpaBuild { pname = "counsel-etags"; ename = "counsel-etags"; - version = "1.6.3"; + version = "1.7.4"; src = fetchFromGitHub { owner = "redguardtoo"; repo = "counsel-etags"; - rev = "0ff874cd5ad5b29ca557685d04087e3eec859fe7"; - sha256 = "1pzi0yz320xy72z65nahrxm2dspnnzz55zxjf01ha5nr1nh01q2h"; + rev = "0bd1bf33088a3e31c01e7f239c5cd9c0b0468ab7"; + sha256 = "1dchql9r4qs9lv71hcpy72mdx83gxmmhyxpxkg836701246x1np1"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/87528349a3ab305bfe98f30c5404913272817a38/recipes/counsel-etags"; sha256 = "1h3dlczm1m21d4h41vz9ngg5fi02g6f95qalfxdnsvz0d4w4yxk0"; name = "recipe"; }; - packageRequires = [ counsel emacs ]; + packageRequires = [ counsel emacs ivy ]; meta = { homepage = "https://melpa.org/#/counsel-etags"; license = lib.licenses.free; @@ -7971,12 +8226,12 @@ melpaBuild { pname = "counsel-tramp"; ename = "counsel-tramp"; - version = "0.4.1"; + version = "0.5.2"; src = fetchFromGitHub { owner = "masasam"; repo = "emacs-counsel-tramp"; - rev = "3f5ae75a6bde00bffeb2877b4ed4bd45610c0dfa"; - sha256 = "06dhhjrgpikzpdl1hck0ckjbx8yzx8jbymb3ajfxglgvrvid4l1k"; + rev = "5e3345f3d11f965e80763a3f68dca8a05f597224"; + sha256 = "0rjkgf5idbnkjscmg4n8wvwh2s7dpj0ic848icil2xhc4i189z7k"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/e1822b735b6bd533f658bd64ddccda29e19e9a5e/recipes/counsel-tramp"; @@ -8132,12 +8387,12 @@ melpaBuild { pname = "cricbuzz"; ename = "cricbuzz"; - version = "0.3.5"; + version = "0.3.6"; src = fetchFromGitHub { owner = "lepisma"; repo = "cricbuzz.el"; - rev = "557f75f10525e7a4d50e83010b9ed07fbf9df889"; - sha256 = "18lc56l5vcbrw2agpgjcap5q0l1mi64khgkk00x7r9wm1zilf9wp"; + rev = "0b95d45991bbcd2fa58d96ce921f6a57ba42c153"; + sha256 = "1s77a2lfy7nnaxm3ai9dg8lbdxp0892z4gr0yxqrgzawc4qcbb3x"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/855ea20024b606314f8590129259747cac0bcc97/recipes/cricbuzz"; @@ -8571,7 +8826,7 @@ melpaBuild { pname = "cython-mode"; ename = "cython-mode"; - version = "0.28.5"; + version = "0.29.2"; src = fetchFromGitHub { owner = "cython"; repo = "cython"; @@ -8648,12 +8903,12 @@ melpaBuild { pname = "daemons"; ename = "daemons"; - version = "1.2.0"; + version = "2.0.0"; src = fetchFromGitHub { owner = "cbowdon"; repo = "daemons.el"; - rev = "9e6868e2559ea7d70fbad8c419798124f406cc40"; - sha256 = "00ijgm22ck76gw0x79krl05yy0m8a502yfakazfy5xhpn1zi6ab7"; + rev = "dcf42cb3178d7245d6d49de346d5e2b44e5b7498"; + sha256 = "00bkzfaw3bqykcks610vk9wlpa2z360xn32bpsrycacwfv29j7g4"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/1f780485e72ae2885f698fdab0156855f70831f1/recipes/daemons"; @@ -8721,8 +8976,8 @@ sha256 = "0bp4giv3gjm3r9ws8qw260j29q7y5c5yj94afdhiqdj093yjv994"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/9b5296ada8eb52689acb1f236e0e74fecbbfd5fb/recipes/dap-mode"; - sha256 = "1hbsmgfgn742fs086m80rjlidglmran0b072f7s8js4c00jy2xdv"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/a50eb6f60824a0eb9baacd694274a1042ffc66ec/recipes/dap-mode"; + sha256 = "1vxqgi50wa151k1gc8ja8nma1v2qrinp26lwrn2w2jlihh1jpb3f"; name = "recipe"; }; packageRequires = [ @@ -8804,12 +9059,12 @@ melpaBuild { pname = "dart-mode"; ename = "dart-mode"; - version = "1.0.3"; + version = "1.0.4"; src = fetchFromGitHub { owner = "bradyt"; repo = "dart-mode"; - rev = "f3a7c7b71fb12d02fa02700bc10426cb10010d01"; - sha256 = "1g0c37qfqki7v1a5rxf6sy7k07i529rw3f1wmjl7g1zhd9bwsml2"; + rev = "d78c5c796da53108a824967932cf6c773426e10f"; + sha256 = "1x04vhmwg0hn54dfskwp8dnghjyyn8rha3vpfqw37qjchf3js3f0"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/3416586d4d782cdd61a56159c5f80a0ca9b3ddf4/recipes/dart-mode"; @@ -8963,12 +9218,12 @@ melpaBuild { pname = "datetime"; ename = "datetime"; - version = "0.5"; + version = "0.6.1"; src = fetchFromGitHub { owner = "doublep"; repo = "datetime"; - rev = "a4191272d5ef950712d3d9668209d09db7bfef65"; - sha256 = "0klgjlp3dpj530iq1l4i96adkpas8id27m9iwpng39mhfqhc050a"; + rev = "178befd4881f407ad97c05fadb74589ade7297f2"; + sha256 = "12f5jv6x3lm08lz674783cqppr9khi56s028zc6bndq3qc797h4d"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/91ef4352603cc69930ab3d63f0a90eee63f5f328/recipes/datetime"; @@ -8993,12 +9248,12 @@ melpaBuild { pname = "deadgrep"; ename = "deadgrep"; - version = "0.5"; + version = "0.6"; src = fetchFromGitHub { owner = "Wilfred"; repo = "deadgrep"; - rev = "4904896b4d8ed5bdae29e1bc5e2c0c4af050cf67"; - sha256 = "0kyqc5s109yhj73by429nsg19xwv2is803b04qigdfwrzm5cvk4y"; + rev = "c29f617569a82d67b2061f74c08f431520fc3f54"; + sha256 = "12j84yp94f2763gwpc07zqfi0ikz9n1a5ciyvcpsgfxpj8bkngzx"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/93389fae7233b83ea904e17bdaf83f8247cda3d8/recipes/deadgrep"; @@ -9011,6 +9266,30 @@ license = lib.licenses.free; }; }) {}; + debian-el = callPackage ({ fetchgit + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "debian-el"; + ename = "debian-el"; + version = "37.4"; + src = fetchgit { + url = "https://salsa.debian.org/emacsen-team/debian-el.git"; + rev = "9690c4adb71e0fc7d00fea24b49ba944f913f4f5"; + sha256 = "118yyhmfwpdlqvz5xjqfr4mmpjznkja3jn63n43z66q0apfhhk61"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/1a381ec81eb160365f478c6a3af638c14558d7d6/recipes/debian-el"; + sha256 = "0x74a4nm2p4w82kzrdqy90969sminsrhdzppld2mg63jg0wxb8ga"; + name = "recipe"; + }; + packageRequires = []; + meta = { + homepage = "https://melpa.org/#/debian-el"; + license = lib.licenses.free; + }; + }) {}; debpaste = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -9329,12 +9608,12 @@ melpaBuild { pname = "diary-manager"; ename = "diary-manager"; - version = "2.0.1"; + version = "2.0.2"; src = fetchFromGitHub { owner = "raxod502"; repo = "diary-manager"; - rev = "01851f42aee0526995ea88c3d42b7fe12e1cb7fd"; - sha256 = "1q1zrqawrr844lzjc5l480im6rjdyagir0dr805vgyv31fhp1vmw"; + rev = "919f724bb58e36b8626dd8d7c8475f71c0c54443"; + sha256 = "12zg022bhfn4gsclb5wk8wh0bqyy0v5j37369haq6rb5jcc6x5fb"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/a014f4d862a2480f7edb1266f79ce0801cca13c2/recipes/diary-manager"; @@ -9373,6 +9652,7 @@ }; }) {}; diff-hl = callPackage ({ cl-lib ? null + , emacs , fetchFromGitHub , fetchurl , lib @@ -9380,19 +9660,19 @@ melpaBuild { pname = "diff-hl"; ename = "diff-hl"; - version = "1.8.4"; + version = "1.8.5"; src = fetchFromGitHub { owner = "dgutov"; repo = "diff-hl"; - rev = "e93367512080e540dc5dd126dfcb38b4a5e9415b"; - sha256 = "03pvh213w0sgyvv0xrkj43bs53p2xfr7162yhzdh24qwa8dd23qv"; + rev = "069a92590000269a9a5b0b7aebbae9595675a59c"; + sha256 = "0557i1vw6pjn2gm9hc4nndy8hsgvymxnwab7pkxy8q4pwqd3s5na"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/855ea20024b606314f8590129259747cac0bcc97/recipes/diff-hl"; sha256 = "135jgjfaiq6kj72ji5k22v4pqc8gjjmcv80r5rkjbjigzlvcvvj2"; name = "recipe"; }; - packageRequires = [ cl-lib ]; + packageRequires = [ cl-lib emacs ]; meta = { homepage = "https://melpa.org/#/diff-hl"; license = lib.licenses.free; @@ -9618,12 +9898,12 @@ melpaBuild { pname = "dired-atool"; ename = "dired-atool"; - version = "1.1.0"; + version = "1.2.0"; src = fetchFromGitHub { owner = "HKey"; repo = "dired-atool"; - rev = "a2470f805c8cfbeee459b000edaaa5474bac35f9"; - sha256 = "1d813b4wiamif48v0za5invnss52mn7yw3hzrlxd4918gy5y2r74"; + rev = "09dbb769fe02f546da470369a12468ab4a0cceb2"; + sha256 = "0j2dz4vy4i22185hhlwg2kprpis97xb12qvfdhvdcnz2vwy61sxa"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/0fe7b0857828a041ee06b30edd2cd488cc3394c7/recipes/dired-atool"; @@ -10150,30 +10430,8 @@ license = lib.licenses.free; }; }) {}; - ditz-mode = callPackage ({ fetchhg - , fetchurl - , lib - , melpaBuild }: - melpaBuild { - pname = "ditz-mode"; - version = "0.3"; - src = fetchhg { - url = "https://bitbucket.com/zondo/ditz-mode"; - rev = "beac4c1f3b7e"; - sha256 = "1cbsy4lchl41zmyxfq828cjpl3h2dwvn8xf1qgf2lbscdb6cwbwb"; - }; - recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/02e2a2a25f42929626d7237511136ba6826dad33/recipes/ditz-mode"; - sha256 = "0shzm9l31n4ffjs1d26ykxsycd478lhlpl8xcwzbjryywg4gf5nd"; - name = "ditz-mode"; - }; - packageRequires = []; - meta = { - homepage = "https://melpa.org/#/ditz-mode"; - license = lib.licenses.free; - }; - }) {}; dix = callPackage ({ cl-lib ? null + , emacs , fetchFromGitHub , fetchurl , lib @@ -10181,19 +10439,19 @@ melpaBuild { pname = "dix"; ename = "dix"; - version = "0.3.5"; + version = "0.4.1"; src = fetchFromGitHub { owner = "unhammer"; repo = "dix"; - rev = "86880826a0cc878e2e5d50bc835eed5c8e2f001a"; - sha256 = "00qyzpqdw4im7c4bqqpiayv4kr9iqlm6mhsziazjvrjsvvi0p9ij"; + rev = "b973de948deb7aa2995b1895e1e62bbe3129b5a5"; + sha256 = "1bjxyidcp7y309asbk4pfb4mzgb8j62fmp3w3zl2nahdgv1rja45"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/149eeba213b82aa0bcda1073aaf1aa02c2593f91/recipes/dix"; sha256 = "0c5fmknpy6kwlz7nx0csbbia1maz0szj7yha1p7wq28s3a5426xq"; name = "recipe"; }; - packageRequires = [ cl-lib ]; + packageRequires = [ cl-lib emacs ]; meta = { homepage = "https://melpa.org/#/dix"; license = lib.licenses.free; @@ -10208,7 +10466,7 @@ melpaBuild { pname = "dix-evil"; ename = "dix-evil"; - version = "0.3.5"; + version = "0.4.1"; src = fetchFromGitHub { owner = "unhammer"; repo = "dix"; @@ -10226,6 +10484,32 @@ license = lib.licenses.free; }; }) {}; + django-commands = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "django-commands"; + ename = "django-commands"; + version = "1.3"; + src = fetchFromGitHub { + owner = "muffinmad"; + repo = "emacs-django-commands"; + rev = "51670fc54742aef03dde162c2fd73963d634dac8"; + sha256 = "1xfl74ac3n4rngpvg78mvq1v9riq8r0v9hshp6g0p3ka00hsn64k"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/fd217a23a9670c7eb826360b34df1a06ab3e450f/recipes/django-commands"; + sha256 = "17k9bnig2cfnxbbz6k9vdk5k5gzhvn1h5j9wvww7n137c9vv0qmk"; + name = "recipe"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://melpa.org/#/django-commands"; + license = lib.licenses.free; + }; + }) {}; docker = callPackage ({ dash , docker-tramp , emacs @@ -10240,12 +10524,12 @@ melpaBuild { pname = "docker"; ename = "docker"; - version = "1.0.0"; + version = "1.2.0"; src = fetchFromGitHub { owner = "Silex"; repo = "docker.el"; - rev = "03ab45c44a7db072dea4ea379930684c18c7d873"; - sha256 = "0q2mhh0al82hgr8kbb8pvhw2hf5ryf0gmch4fhpb4q5nq9gb6gnw"; + rev = "39ba86d65417adb0a0a3f0a5ef8c76759544a6d1"; + sha256 = "1nwla26bza293cidkg6i1x88qaxdw0ydih8skpdlf7lpibzsl5cx"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/6c74bf8a41c17bc733636f9e7c05f3858d17936b/recipes/docker"; @@ -10405,31 +10689,23 @@ , fetchurl , lib , melpaBuild - , projectile , shrink-path }: melpaBuild { pname = "doom-modeline"; ename = "doom-modeline"; - version = "0.4.0"; + version = "1.4.1"; src = fetchFromGitHub { owner = "seagle0128"; repo = "doom-modeline"; - rev = "ad7c7ae7e4639a9b93d66d85bdd47b66d8f65365"; - sha256 = "1zadmslgcw1r8wga06jpb6a3d5ylsbn0x3yad8hrzgn9rcyrpfgl"; + rev = "804167cf5a05f0b0332fc9bdb8275cefb76622f2"; + sha256 = "15mqn38w6x2wamwp0llg5m9j57cnhm0mzczxp68ni74dwksgrgk7"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/f4f610757f85fb01bd9b1dd212ddbea8f34f3ecd/recipes/doom-modeline"; sha256 = "0pscrhhgk4wpz1f2r94ficgan4f9blbhqzvav1wjahwp7fn5m29j"; name = "recipe"; }; - packageRequires = [ - all-the-icons - dash - eldoc-eval - emacs - projectile - shrink-path - ]; + packageRequires = [ all-the-icons dash eldoc-eval emacs shrink-path ]; meta = { homepage = "https://melpa.org/#/doom-modeline"; license = lib.licenses.free; @@ -10514,6 +10790,31 @@ license = lib.licenses.free; }; }) {}; + dpkg-dev-el = callPackage ({ debian-el + , fetchgit + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "dpkg-dev-el"; + ename = "dpkg-dev-el"; + version = "37.1"; + src = fetchgit { + url = "https://salsa.debian.org/emacsen-team/dpkg-dev-el.git"; + rev = "04fb5c930269e64ed73a13fa909588002f4e4e4f"; + sha256 = "0i0m4hdpdr4wz3r8cgxslwhm23z7002648dm7cw7cf3fwd4gi47q"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/3e057df3608780a6191f761b9a81262c2eaa053c/recipes/dpkg-dev-el"; + sha256 = "1cgfzxlw4m3wsl5fhck08pc2w7fw91mxk58yaprk9lkw4jxd1yjy"; + name = "recipe"; + }; + packageRequires = [ debian-el ]; + meta = { + homepage = "https://melpa.org/#/dpkg-dev-el"; + license = lib.licenses.free; + }; + }) {}; dr-racket-like-unicode = callPackage ({ emacs , fetchFromGitHub , fetchurl @@ -10748,31 +11049,6 @@ license = lib.licenses.free; }; }) {}; - dyalog-mode = callPackage ({ cl-lib ? null - , emacs - , fetchhg - , fetchurl - , lib - , melpaBuild }: - melpaBuild { - pname = "dyalog-mode"; - version = "0.7"; - src = fetchhg { - url = "https://bitbucket.com/harsman/dyalog-mode"; - rev = "87db00b912be"; - sha256 = "0jg289fj4q83dwj7i0w5zq8bwqxzwzzmyhvdrk6cfw3q6rlwk5fp"; - }; - recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/5b7972602399f9df9139cff177e38653bb0f43ed/recipes/dyalog-mode"; - sha256 = "1y17nd2xd8b3mhaybws8dr7yanzwqij9gzfywisy65ckflm9kfyq"; - name = "dyalog-mode"; - }; - packageRequires = [ cl-lib emacs ]; - meta = { - homepage = "https://melpa.org/#/dyalog-mode"; - license = lib.licenses.free; - }; - }) {}; dynamic-fonts = callPackage ({ fetchFromGitHub , fetchurl , font-utils @@ -10995,12 +11271,12 @@ melpaBuild { pname = "eacl"; ename = "eacl"; - version = "1.1.3"; + version = "2.0.1"; src = fetchFromGitHub { owner = "redguardtoo"; repo = "eacl"; - rev = "ccf1401b1acff67fe445c95e8be7b09e8c3ae5d8"; - sha256 = "0v02asdmhj5la9nqck2230s04gf518cjs7wa4lykf8j46bc13vac"; + rev = "ba6a95838422ec33191beaa12b3e43b67c105abc"; + sha256 = "0ksn11sm3g1ja5lpjz3hrzzw8b480mfcb3q589m52qjgvvn5iyfv"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/8223bec7eed97f0bad300af9caa4c8207322d39a/recipes/eacl"; @@ -11022,12 +11298,12 @@ melpaBuild { pname = "easy-hugo"; ename = "easy-hugo"; - version = "3.3.32"; + version = "3.8.37"; src = fetchFromGitHub { owner = "masasam"; repo = "emacs-easy-hugo"; - rev = "31cd8060d4ebb117599b90bee0f470ed148bcfba"; - sha256 = "1sd38chf5zlhyiz2p56bwl35j22h7bfqqrwxxsccyypk217nrvnh"; + rev = "e7b6c75a7e46290d9d0cdac9ec56fbf35a6b9c98"; + sha256 = "1xhyky1593qxq7kfbv2ighx957w5pizkki0q77nrvjxlwbqghgz2"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/855ea20024b606314f8590129259747cac0bcc97/recipes/easy-hugo"; @@ -11048,12 +11324,12 @@ melpaBuild { pname = "easy-jekyll"; ename = "easy-jekyll"; - version = "1.6.17"; + version = "2.0.19"; src = fetchFromGitHub { owner = "masasam"; repo = "emacs-easy-jekyll"; - rev = "dc8a97d3d512dccf908f63f54a2679e3450fec85"; - sha256 = "0y6d9gmrk9cka1kl09qfjfrm8p70bxy7bisfl0c7ays9ky7pniix"; + rev = "5ee52c0bb01336a03a8f07e072841caf13f86c0a"; + sha256 = "1xibnw3jmmwrc1z7hnifjzhq4mn2834lk7f22x7rwh857iamlply"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/c3f281145bad12c27bdbef32ccc07b6a5f13b577/recipes/easy-jekyll"; @@ -11101,12 +11377,12 @@ melpaBuild { pname = "easy-kill-extras"; ename = "easy-kill-extras"; - version = "0.9.5"; + version = "0.9.6"; src = fetchFromGitHub { owner = "knu"; repo = "easy-kill-extras.el"; - rev = "1dafa46271dfe08de77d0273451b1e91ed332692"; - sha256 = "12xm63kvqzxrw3c5ni2l93mjs5mfbh3k69j4157b54629rfkad9v"; + rev = "b8ce8350cc86e0229f195082557970cd51def960"; + sha256 = "1f8db92zzk8g8yyj0g334mdbgqmzrs8xamm1d24jai1289hm29xa"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/7b55d93f78fefde47a2bd4ebbfd93c028fab1f40/recipes/easy-kill-extras"; @@ -11200,30 +11476,28 @@ license = lib.licenses.free; }; }) {}; - ebib = callPackage ({ dash - , emacs + ebib = callPackage ({ emacs , fetchFromGitHub , fetchurl , lib , melpaBuild - , parsebib - , seq }: + , parsebib }: melpaBuild { pname = "ebib"; ename = "ebib"; - version = "2.12.1"; + version = "2.14.1"; src = fetchFromGitHub { owner = "joostkremers"; repo = "ebib"; - rev = "1b675d32ebeb8b52cd20934b6e4a4914361329fa"; - sha256 = "0g12bg4wnzki6v780zhn8gxr80lrszldq8wpcni20l78kn799rdv"; + rev = "712e2afeb6b8b61bd522d5f4eb91a267b4253912"; + sha256 = "193sbmxi9ny7829basy133jy7bcfxs0fv4gc4yyn3ykakawrbl20"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/4e39cd8e8b4f61c04fa967def6a653bb22f45f5b/recipes/ebib"; sha256 = "1kdqf5nk9l6mr3698nqngrkw5dicgf7d24krir5wrcfbrsqrfmid"; name = "recipe"; }; - packageRequires = [ dash emacs parsebib seq ]; + packageRequires = [ emacs parsebib ]; meta = { homepage = "https://melpa.org/#/ebib"; license = lib.licenses.free; @@ -11354,14 +11628,14 @@ ename = "ede-php-autoload"; version = "1.1.0"; src = fetchFromGitHub { - owner = "stevenremot"; + owner = "emacs-php"; repo = "ede-php-autoload"; rev = "3f13302b9e8dbb6a24205c4bc21acadff487d30b"; sha256 = "03mjw824d0l2g8n07ys3j89x8chbx64znhhz14y6ni4b9650njdf"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/8ee9f7fd9cbc3397cd9af34b08b75c3d9d8bc551/recipes/ede-php-autoload"; - sha256 = "0b7qbighncipgfaksvggpyldc5h0wxbjbiyaghglvycc4p1sfjd0"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/afc7ddfcf16e92889e54f30599b576a24823f60d/recipes/ede-php-autoload"; + sha256 = "1255a1drpb50650i0yijahbp97chpw89mi9fvdrk3vf64xlysamq"; name = "recipe"; }; packageRequires = []; @@ -11510,12 +11784,12 @@ melpaBuild { pname = "editorconfig"; ename = "editorconfig"; - version = "0.7.13"; + version = "0.7.14"; src = fetchFromGitHub { owner = "editorconfig"; repo = "editorconfig-emacs"; - rev = "e2a5cfe9709e75f4abf0b4856831a1699d2d7479"; - sha256 = "1jx1zxk2nib3vfzvwbkd22503h7n9faa409gl55gw5kysw9lk3pn"; + rev = "c03200da052d316188da87e25192a07aced50095"; + sha256 = "19j2428ij7sqvrqs7rqg1mcnv9109y6drqba40dkv3vrkk5d2yia"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/50d4f2ed288ef38153a7eab44c036e4f075b51d0/recipes/editorconfig"; @@ -11643,12 +11917,12 @@ melpaBuild { pname = "egg"; ename = "egg"; - version = "1.0.9"; + version = "1.1.4"; src = fetchFromGitHub { owner = "byplayer"; repo = "egg"; - rev = "59e87b5f150ba5add385b29f8e07cb41e6588bca"; - sha256 = "16cs1ba2v2pm8wsm6z71s7ad619f45vi4v6hwqswi6fljjhmc175"; + rev = "00e768a78ac3d25f457eed667d02cac568480bf9"; + sha256 = "1ak23v9gqj6x104mzgihn0hi7w0kr76q1sl929wmbb9h8s3a54q8"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/a1c97870c2641d73685f07a12f010530cc186544/recipes/egg"; @@ -11668,12 +11942,12 @@ melpaBuild { pname = "egison-mode"; ename = "egison-mode"; - version = "3.7.10"; + version = "3.7.14"; src = fetchFromGitHub { owner = "egison"; repo = "egison"; - rev = "0f8289294b1a8de029f89643438e8384e7ee789f"; - sha256 = "1rkxz4gj11z1jpd3g71m6sbzb5j4ggm6sixk3r18wb8wv91v4fgs"; + rev = "ddc6d910be421d891efc8c7c033b99b10364c4c3"; + sha256 = "1rw5xjs4hnikj2swskczxn3x31811znsgzj72b975zbmd5vp98kd"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/3416586d4d782cdd61a56159c5f80a0ca9b3ddf4/recipes/egison-mode"; @@ -11689,25 +11963,26 @@ eglot = callPackage ({ emacs , fetchFromGitHub , fetchurl + , flymake ? null , jsonrpc , lib , melpaBuild }: melpaBuild { pname = "eglot"; ename = "eglot"; - version = "1.1"; + version = "1.3"; src = fetchFromGitHub { owner = "joaotavora"; repo = "eglot"; - rev = "9211f162dc3eb956c51faeb3e7195603fa84c60c"; - sha256 = "0p3fry60xvh7za0p8pyz4h21nzj6df1cbl9lxdzd19rwfd35fzpp"; + rev = "23accee6dbf2eb7580fbb10f7ca09c13ba5700e8"; + sha256 = "0cdyfkack730yzydgph4hk34c0kv6521a6skqfjh0bxym2l9c7m0"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/6c644530eca56f93d94fac2c9d7663c35c2b8c01/recipes/eglot"; sha256 = "17w39hcgv4p49g841qaicjdx7xac72yxvsc83jf1rrakg713pj7y"; name = "recipe"; }; - packageRequires = [ emacs jsonrpc ]; + packageRequires = [ emacs flymake jsonrpc ]; meta = { homepage = "https://melpa.org/#/eglot"; license = lib.licenses.free; @@ -11806,6 +12081,37 @@ license = lib.licenses.free; }; }) {}; + ejc-sql = callPackage ({ auto-complete + , clomacs + , dash + , direx + , emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild + , spinner }: + melpaBuild { + pname = "ejc-sql"; + ename = "ejc-sql"; + version = "0.1"; + src = fetchFromGitHub { + owner = "kostafey"; + repo = "ejc-sql"; + rev = "a4db6db8a3f9d218bbba728c5ac2f2847df10343"; + sha256 = "1i0l3nzhqjarv9pi0jv1vwd2478v5ql7aajcxsigvakj0xg27dr9"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/e01655679087504db1206b22435ba8eb7050aa23/recipes/ejc-sql"; + sha256 = "13i55l6hwsxbmdxmvh6aajayivgskw4iagmj9in1qkd9rnrykhn9"; + name = "recipe"; + }; + packageRequires = [ auto-complete clomacs dash direx emacs spinner ]; + meta = { + homepage = "https://melpa.org/#/ejc-sql"; + license = lib.licenses.free; + }; + }) {}; el-autoyas = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -11948,12 +12254,12 @@ melpaBuild { pname = "el-patch"; ename = "el-patch"; - version = "2.2.1"; + version = "2.2.2"; src = fetchFromGitHub { owner = "raxod502"; repo = "el-patch"; - rev = "15b3e84ab7001d42acd621cd6572ffdca839ea33"; - sha256 = "0fg4zzvk7vddiqgk9hcq8h09j8xr6c3hxhh7fa9rah4ni6clxmaw"; + rev = "66510e01598a2c4ce6c973e0b6c1691d8d24c8e6"; + sha256 = "1mvb9fpzj65yfhjcbvbdqjaa8adn64ik8zccpppls3fq656rwbml"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/2f4f57e0edbae35597aa4a7744d22d2f971d5de5/recipes/el-patch"; @@ -12054,13 +12360,13 @@ version = "1.2"; src = fetchFromGitHub { owner = "NicolasPetton"; - repo = "Elbank"; + repo = "elbank"; rev = "f494716105b1a9f4f52f43bc3dd37c9cd0309bf5"; sha256 = "0bvx6nq0gjjbjs0mzd1x1ajyjpa181z0n4kv4aknh3is210gbpbb"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/05d252ee84adae2adc88fd325540f76b6cdaf010/recipes/elbank"; - sha256 = "1ry84aiajyrnrspf7w4yjm0rmdam8ijrz0s7291yr8c70hslc997"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/35763febad20f29320d459394f810668db6c3353/recipes/elbank"; + sha256 = "1i1cdywcbdj9ykfczbagrqdpgf3c88f1kc0mdlj8mzyvjixx7mhk"; name = "recipe"; }; packageRequires = [ emacs seq ]; @@ -12212,12 +12518,12 @@ melpaBuild { pname = "elfeed-protocol"; ename = "elfeed-protocol"; - version = "0.5.4"; + version = "0.5.7"; src = fetchFromGitHub { owner = "fasheng"; repo = "elfeed-protocol"; - rev = "81ae532fba657ff230568a14277d1f71940688a3"; - sha256 = "09s5jnb5sbraszwcmwaa7fzvv8qd6l7cnyl18rzfszhkqkc17xhj"; + rev = "3b5d8592a68635a89ea6cded5bb9fe49779c3ce0"; + sha256 = "13l94xid4pac1pkz6sbbximb93yjzqz3g4ci1xr6m3h2wi4khzn7"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/3f1eef8add7cd2cfefe6fad6d8e69d65696e9677/recipes/elfeed-protocol"; @@ -12593,12 +12899,12 @@ melpaBuild { pname = "elpy"; ename = "elpy"; - version = "1.24.0"; + version = "1.28.0"; src = fetchFromGitHub { owner = "jorgenschaefer"; repo = "elpy"; - rev = "5249e086b76ac7b22e9d5d094d92294d00067ba8"; - sha256 = "0rsg8a9nwqfkv0xcs11jzfp10ij7jm0v2ikx19zv2v7awqy0q5wf"; + rev = "b4803b554d78941e871cd976ff7828294e85c991"; + sha256 = "073bwxwjzcbmvpcz9q2xjwzx9x7hkvjni6fwvikh6yawzjp56jis"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/1d8fcd8745bb15402c9f3b6f4573ea151415237a/recipes/elpy"; @@ -12732,12 +13038,12 @@ melpaBuild { pname = "elx"; ename = "elx"; - version = "1.2.4"; + version = "1.2.6"; src = fetchFromGitHub { owner = "emacscollective"; repo = "elx"; - rev = "10a21c35915e249d5487aa3ced70fcfb749a9d0c"; - sha256 = "1jl2lp4gas89vx1xjx5gzh56fhx16mvfqwqs84cpxdbwb2qzch21"; + rev = "c554db7e7f2c0c8a503def7739b8205193ba821f"; + sha256 = "07i739v2w5dbhyfhvfw4phcrdk5sf7ncsd47y8hkf5m4zgw4kw4n"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/57a2fb9524df3fdfdc54c403112e12bd70888b23/recipes/elx"; @@ -12826,38 +13132,33 @@ license = lib.licenses.free; }; }) {}; - emacsql = callPackage ({ cl-generic - , cl-lib ? null - , emacs + emacsql = callPackage ({ emacs , fetchFromGitHub , fetchurl - , finalize , lib , melpaBuild }: melpaBuild { pname = "emacsql"; ename = "emacsql"; - version = "2.0.3"; + version = "3.0.0"; src = fetchFromGitHub { owner = "skeeto"; repo = "emacsql"; - rev = "dcf0dda9391f3978896547582efb72b5632c2ffe"; - sha256 = "07gvx0bbpf6j3g8kpk9908wf8fx1yb3075v6407wjxxighl0n5zz"; + rev = "8c5f095458aa37e4146b80d9319ee63571734127"; + sha256 = "1c84gxr1majqj4b59wgdy3lzm3ap66w9qsrnkx8hdbk9895ak81g"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/9c3b6175b5c64f03b0b9dfdc10f393081d681309/recipes/emacsql"; sha256 = "0c2d0kymzr53wh87fq1wy2x5ahfsymz0cw8qbrqx0k613l3mpr38"; name = "recipe"; }; - packageRequires = [ cl-generic cl-lib emacs finalize ]; + packageRequires = [ emacs ]; meta = { homepage = "https://melpa.org/#/emacsql"; license = lib.licenses.free; }; }) {}; - emacsql-mysql = callPackage ({ cl-generic - , cl-lib ? null - , emacs + emacsql-mysql = callPackage ({ emacs , emacsql , fetchFromGitHub , fetchurl @@ -12866,57 +13167,52 @@ melpaBuild { pname = "emacsql-mysql"; ename = "emacsql-mysql"; - version = "2.0.3"; + version = "3.0.0"; src = fetchFromGitHub { owner = "skeeto"; repo = "emacsql"; - rev = "5df2891557f52eadd094eca618775163b1618af5"; - sha256 = "18916pxlgamprv9lk0g0bfyx040imyfzry5r35gyf4s4jb8kjnsm"; + rev = "ea613c5191dcaa2583d3f7d5737b31bb88a07ed5"; + sha256 = "1i733wjvpd6lhdnwr8w2k0c8s7v7r9ivsmxxgdndlhdnkm17ca5j"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/9cc47c05fb0d282531c9560252090586e9f6196e/recipes/emacsql-mysql"; sha256 = "1c20zhpdzfqjds6kcjhiq1m5ch53fsx6n1xk30i35kkg1wxaaqzy"; name = "recipe"; }; - packageRequires = [ cl-generic cl-lib emacs emacsql ]; + packageRequires = [ emacs emacsql ]; meta = { homepage = "https://melpa.org/#/emacsql-mysql"; license = lib.licenses.free; }; }) {}; - emacsql-psql = callPackage ({ cl-generic - , cl-lib ? null - , emacs + emacsql-psql = callPackage ({ emacs , emacsql , fetchFromGitHub , fetchurl , lib - , melpaBuild - , pg }: + , melpaBuild }: melpaBuild { pname = "emacsql-psql"; ename = "emacsql-psql"; - version = "2.0.3"; + version = "3.0.0"; src = fetchFromGitHub { owner = "skeeto"; repo = "emacsql"; - rev = "5df2891557f52eadd094eca618775163b1618af5"; - sha256 = "18916pxlgamprv9lk0g0bfyx040imyfzry5r35gyf4s4jb8kjnsm"; + rev = "ea613c5191dcaa2583d3f7d5737b31bb88a07ed5"; + sha256 = "1i733wjvpd6lhdnwr8w2k0c8s7v7r9ivsmxxgdndlhdnkm17ca5j"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/9cc47c05fb0d282531c9560252090586e9f6196e/recipes/emacsql-psql"; sha256 = "1aa1g9jyjmz6w0lmi2cf67926ad3xvs0qsg7lrccnllr9k0flly3"; name = "recipe"; }; - packageRequires = [ cl-generic cl-lib emacs emacsql pg ]; + packageRequires = [ emacs emacsql ]; meta = { homepage = "https://melpa.org/#/emacsql-psql"; license = lib.licenses.free; }; }) {}; - emacsql-sqlite = callPackage ({ cl-generic - , cl-lib ? null - , emacs + emacsql-sqlite = callPackage ({ emacs , emacsql , fetchFromGitHub , fetchurl @@ -12925,19 +13221,19 @@ melpaBuild { pname = "emacsql-sqlite"; ename = "emacsql-sqlite"; - version = "2.0.3"; + version = "3.0.0"; src = fetchFromGitHub { owner = "skeeto"; repo = "emacsql"; - rev = "e597696682a9a7f9d2a8350dfe1f7beb05365da4"; - sha256 = "1900aca9nbcwmmmpm5h46zblzay47i2v4x4zb0w7mnzcidq8g1h4"; + rev = "62d39157370219a1680265fa593f90ccd51457da"; + sha256 = "0ghl3g8n8wlw8rnmgbivlrm99wcwn93bv8flyalzs0z9j7p7fdq9"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/3cfa28c7314fa57fa9a3aaaadf9ef83f8ae541a9/recipes/emacsql-sqlite"; sha256 = "1y81nabzzb9f7b8azb9giy23ckywcbrrg4b88gw5qyjizbb3h70x"; name = "recipe"; }; - packageRequires = [ cl-generic cl-lib emacs emacsql ]; + packageRequires = [ emacs emacsql ]; meta = { homepage = "https://melpa.org/#/emacsql-sqlite"; license = lib.licenses.free; @@ -13046,6 +13342,34 @@ license = lib.licenses.free; }; }) {}; + emidje = callPackage ({ cider + , emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild + , seq }: + melpaBuild { + pname = "emidje"; + ename = "emidje"; + version = "1.1.0"; + src = fetchFromGitHub { + owner = "nubank"; + repo = "emidje"; + rev = "e3ab498a21cefae2690b9bcf3f125517a6b984cc"; + sha256 = "004f4dqcw6m473hxj0zll9nwl4iq652d1fymcn2id0p42l7cf2kv"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/5d64b3b42b4b9acd3e9d84921df287f3217db83e/recipes/emidje"; + sha256 = "1p2aa4wl2465gm7ljgr5lbvxfgx0g1w1170zdv3596hi07mccabs"; + name = "recipe"; + }; + packageRequires = [ cider emacs seq ]; + meta = { + homepage = "https://melpa.org/#/emidje"; + license = lib.licenses.free; + }; + }) {}; emmet-mode = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -13079,11 +13403,11 @@ melpaBuild { pname = "emms"; ename = "emms"; - version = "5.0"; + version = "5.1"; src = fetchgit { url = "https://git.savannah.gnu.org/git/emms.git"; - rev = "cffef39bd9297154b3ed91a68f8fc230e0f87fba"; - sha256 = "1xzfpmcp3vnslv38ql7ympmmcbl0q3wzdvkbfn245g94iyz3a97f"; + rev = "47b1054683f4fa0a1ecd9999cb94c5c34994e018"; + sha256 = "1lrkj4gy592mrym0qfb05hydpr7c2sbk6ap5q19zkblizf0gnad6"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/caaa21f235c4864f6008fb454d0a970a2fd22a86/recipes/emms"; @@ -13123,32 +13447,6 @@ license = lib.licenses.free; }; }) {}; - emms-player-mpv = callPackage ({ emms - , fetchFromGitHub - , fetchurl - , lib - , melpaBuild }: - melpaBuild { - pname = "emms-player-mpv"; - ename = "emms-player-mpv"; - version = "0.2.0"; - src = fetchFromGitHub { - owner = "dochang"; - repo = "emms-player-mpv"; - rev = "9c9ffc6f00a737a6db6377681a88e5292ebcf86b"; - sha256 = "17kvkx63q30p5r2lsv6pqdm2zi8my3yn3js7j3c2qlygd9sf80pz"; - }; - recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/9679cb8d4b3b9dce1e0bff16647ea3f3e02c4189/recipes/emms-player-mpv"; - sha256 = "175rmqx3bgys4chw8ylyf9rk07sg0llwbs9ivrv2d3ayhcz1lg9y"; - name = "recipe"; - }; - packageRequires = [ emms ]; - meta = { - homepage = "https://melpa.org/#/emms-player-mpv"; - license = lib.licenses.free; - }; - }) {}; emms-player-simple-mpv = callPackage ({ cl-lib ? null , emacs , emms @@ -13536,12 +13834,12 @@ melpaBuild { pname = "epkg"; ename = "epkg"; - version = "3.1.0"; + version = "3.1.2"; src = fetchFromGitHub { owner = "emacscollective"; repo = "epkg"; - rev = "b3dac5d4596d304f17a283c5cfe9dc77989fa96a"; - sha256 = "17qdywa8qw6n8a3r4s1cbjbmh2a4vjnxp6fqhiglbbfc1xqw2p1n"; + rev = "c42bc98a711ffa8d2a7b9096b563ac0edb0b9bf3"; + sha256 = "0hn67mdv6i8l1sfvs8gm2my05chk69nm4vf108l2ff22lims8ghx"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/2df16abf56e53d4a1cc267a78797419520ff8a1c/recipes/epkg"; @@ -13633,33 +13931,6 @@ license = lib.licenses.free; }; }) {}; - erc-hipchatify = callPackage ({ alert - , emacs - , fetchhg - , fetchurl - , lib - , melpaBuild - , request - , s }: - melpaBuild { - pname = "erc-hipchatify"; - version = "0.1"; - src = fetchhg { - url = "https://bitbucket.com/seanfarley/erc-hipchatify"; - rev = "a53227513692"; - sha256 = "0av0y65hz7fbiiqzmk5mmw6jv7fivhcd1w3s2xn5y5jpgps56mrc"; - }; - recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/b60e01e7064ce486fdac3d1b39fd4a1296b0dac5/recipes/erc-hipchatify"; - sha256 = "1a4gl05i757vvap0rzrfwms7mhw80sa84gvbwafrvj3x11rja24x"; - name = "erc-hipchatify"; - }; - packageRequires = [ alert emacs request s ]; - meta = { - homepage = "https://melpa.org/#/erc-hipchatify"; - license = lib.licenses.free; - }; - }) {}; erc-hl-nicks = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -13789,6 +14060,32 @@ license = lib.licenses.free; }; }) {}; + eredis = callPackage ({ dash + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "eredis"; + ename = "eredis"; + version = "0.9.6"; + src = fetchFromGitHub { + owner = "justinhj"; + repo = "eredis"; + rev = "cfbfc25832f6fbc507bdd56b02e3a0b851a3c368"; + sha256 = "1f2f57c0bz3c6p11hr69aar6z5gg33zvfvsm76ma11vx21qilz6i"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/63f06713d06911f836fe2a4bf199b0794ac89cf0/recipes/eredis"; + sha256 = "087lln2izn5bv7bprmbaciivf17vv4pz2cjl91hy2f0sww6nsiw8"; + name = "recipe"; + }; + packageRequires = [ dash ]; + meta = { + homepage = "https://melpa.org/#/eredis"; + license = lib.licenses.free; + }; + }) {}; erefactor = callPackage ({ cl-lib ? null , fetchFromGitHub , fetchurl @@ -13851,12 +14148,12 @@ melpaBuild { pname = "erlang"; ename = "erlang"; - version = "21.0.9"; + version = "21.2.2"; src = fetchFromGitHub { owner = "erlang"; repo = "otp"; - rev = "9d5af99762b3795c763fb62c1516247bd3f8e12f"; - sha256 = "0anlp0qj2blgdjzdw8rxmpz659yzbdl3r69b6slm1c1aa77ayc17"; + rev = "a8495c5af68d5abdb3a49280b63985527e42be98"; + sha256 = "0aay768j678vdr820gjd8283749j7xal4ns78ndn1z492la8gza1"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/d9cd526f43981e0826af59cdc4bb702f644781d9/recipes/erlang"; @@ -13919,7 +14216,8 @@ license = lib.licenses.free; }; }) {}; - ert-junit = callPackage ({ ert ? null + ert-junit = callPackage ({ emacs + , ert ? null , fetchgit , fetchurl , lib @@ -13927,18 +14225,18 @@ melpaBuild { pname = "ert-junit"; ename = "ert-junit"; - version = "0.3"; + version = "0.4.0"; src = fetchgit { url = "https://bitbucket.org/olanilsson/ert-junit"; - rev = "cd1f63627d4e6635086322f34be09ba535e26b97"; - sha256 = "0a2ddvpm8yparl3zq05mp239k5dgplcmc9s61ak9d5qn65l8mwyr"; + rev = "b0649e94460aff5176dee5b33f28946bffb602d5"; + sha256 = "0hj85hz4s1q4dalinhgahn8jn97s2pdpv41d9qqbvbdzwhhw2mrk"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/27c627eacab54896a1363dbabc56250a65343dd8/recipes/ert-junit"; sha256 = "0bv22mhh1ahbjwi6s1csxkh11dmy0srabkddjd33l4havykxlg6g"; name = "recipe"; }; - packageRequires = [ ert ]; + packageRequires = [ emacs ert ]; meta = { homepage = "https://melpa.org/#/ert-junit"; license = lib.licenses.free; @@ -14400,24 +14698,25 @@ }) {}; ess = callPackage ({ fetchFromGitHub , fetchurl + , julia-mode , lib , melpaBuild }: melpaBuild { pname = "ess"; ename = "ess"; - version = "17.11.999"; + version = "18.10.2"; src = fetchFromGitHub { owner = "emacs-ess"; repo = "ESS"; - rev = "43a0cc8fba8f544362b79a8934ed4ec30c5fcd2c"; - sha256 = "0ssck7png966xs31hwgd6drrhrkcgxay6r7i59npviyl16jp6j3z"; + rev = "d4cd65da6dbfabf37fc6c7a4c49fb49cf289a11c"; + sha256 = "1avhb5mr8yyaa8gqccf8ghbl36iff61ha6444myvgqszd2a6pd8q"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/156a6fa9e6ee16174d215c1dcd524aff847b3bf0/recipes/ess"; sha256 = "1psqrw9k7d2ha8zid2mkc6bgcyalrm3n53c00g3cgckkbahl7r6n"; name = "recipe"; }; - packageRequires = []; + packageRequires = [ julia-mode ]; meta = { homepage = "https://melpa.org/#/ess"; license = lib.licenses.free; @@ -15016,7 +15315,8 @@ license = lib.licenses.free; }; }) {}; - evil-matchit = callPackage ({ evil + evil-matchit = callPackage ({ emacs + , evil , fetchFromGitHub , fetchurl , lib @@ -15024,19 +15324,19 @@ melpaBuild { pname = "evil-matchit"; ename = "evil-matchit"; - version = "2.2.8"; + version = "2.2.9"; src = fetchFromGitHub { owner = "redguardtoo"; repo = "evil-matchit"; - rev = "8a10046f25e4b707ccf8ff6fbcb74e71bd32498d"; - sha256 = "0ik105g50frj87c5awy4gkq43gm4hmlzr6klx7x5fbyjx9d9f2id"; + rev = "7d65b4167b1f0086c2b42b3aec805e47a0d355c4"; + sha256 = "12if45pxfndy3d7r4gd3zx4d3jk4d64fdmwkhc3y5zhqq9h9iy4c"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/aeab4a998bffbc784e8fb23927d348540baf9951/recipes/evil-matchit"; sha256 = "01z69n20qs4gngd28ry4kn825cax5km9hn96i87yrvq7nfa64swq"; name = "recipe"; }; - packageRequires = [ evil ]; + packageRequires = [ emacs evil ]; meta = { homepage = "https://melpa.org/#/evil-matchit"; license = lib.licenses.free; @@ -15081,12 +15381,12 @@ melpaBuild { pname = "evil-multiedit"; ename = "evil-multiedit"; - version = "1.3.8"; + version = "1.3.9"; src = fetchFromGitHub { owner = "hlissner"; repo = "evil-multiedit"; - rev = "c0cb6858399863e51935dae62c7c61ebc68f92eb"; - sha256 = "010y4vxj7rr5kr4csbh72s60ndqzqxdrvgkyb65vxb5vskr1n1wm"; + rev = "cb35914ffabb4f65d22ab2f812ff6e7622cc5c26"; + sha256 = "19h3kqylqzbjv4297wkzzxdmn9yxbg6z4ga4ssrqri90xs7m3rw3"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/997f5a6999d1add57fae33ba8eb3e3bc60d7bb56/recipes/evil-multiedit"; @@ -15107,12 +15407,12 @@ melpaBuild { pname = "evil-nerd-commenter"; ename = "evil-nerd-commenter"; - version = "3.2.3"; + version = "3.3.3"; src = fetchFromGitHub { owner = "redguardtoo"; repo = "evil-nerd-commenter"; - rev = "34d411715ead5829d6d8969511047feb703b067e"; - sha256 = "0ax846dy2hbrbvkj7nzfkcl5i1x9rga8bvg0ln55ivhq0iiy1lkv"; + rev = "151ac5747539eaac5562b93c94f738d6001ab0c7"; + sha256 = "0fqcdc7wl39xrmq6ygjy5v5v2jlj6disd1bgbyy1mi8phw6irghl"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/a3e1ff69e7cc95a5b5d628524ad836833f4ee736/recipes/evil-nerd-commenter"; @@ -15427,12 +15727,12 @@ melpaBuild { pname = "evil-surround"; ename = "evil-surround"; - version = "1.0.1"; + version = "1.0.3"; src = fetchFromGitHub { owner = "emacs-evil"; repo = "evil-surround"; - rev = "55c820083a5f28d5361baeb9cd7da92549e5b3f5"; - sha256 = "0qnv0c1byvzlclc8yaq6jjy61vza3zq2i773b30ss0rfpa03p13z"; + rev = "1a4bc20f158aa9f4e4811a6363cc65ea24f167ce"; + sha256 = "1sq7692k8ph4czqqg3f5cqlmk10q8mfkrnknnv79l9sza9jqfw9r"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/2c9dc47a4c837c44429a74fd998fe468c00639f2/recipes/evil-surround"; @@ -15895,12 +16195,12 @@ melpaBuild { pname = "extmap"; ename = "extmap"; - version = "1.0"; + version = "1.1"; src = fetchFromGitHub { owner = "doublep"; repo = "extmap"; - rev = "3860b69fb19c962425d4e271ee0a24547b67d323"; - sha256 = "1vjwinb7m9l2bw324v4m1g4mc9yqjs84bfjci93m0a1ih8n4zdbr"; + rev = "1139b57d8f4276fe56b8416fdaf4745f2cdfe7c3"; + sha256 = "0jgyscjfparnby0whrmbgvsab2a7qkaqhysmh3s3jh635fndm253"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/91ef4352603cc69930ab3d63f0a90eee63f5f328/recipes/extmap"; @@ -15927,12 +16227,12 @@ melpaBuild { pname = "exwm-x"; ename = "exwm-x"; - version = "1.8.1"; + version = "1.9.0"; src = fetchFromGitHub { owner = "tumashu"; repo = "exwm-x"; - rev = "4f7946db67d6599baba6b3961e8f543a68707742"; - sha256 = "00lcn5106xig2y9gyir1f1gzyp2i05rwq1lbbbah8aipkdi3z9xl"; + rev = "88c8b70be678ce0e9fa31e191ffd3f76bbfee61f"; + sha256 = "03l3dl7s1qys1kkh40rm1sfx7axy1b8sf5f6nyksj9ps6d30p5i4"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/a0e6e23bcffdcd1e17c70599c563609050e5de40/recipes/exwm-x"; @@ -16117,12 +16417,12 @@ melpaBuild { pname = "faff-theme"; ename = "faff-theme"; - version = "2.2"; + version = "2.4"; src = fetchFromGitHub { owner = "WJCFerguson"; repo = "emacs-faff-theme"; - rev = "8fbdf71a2e63a8ec997c387bd8319c0dc825a938"; - sha256 = "17ckad411h033l4cpg337vkwvyxrpvqvi9pa56p7mpxzfg3q8a3v"; + rev = "e4721d00852ebd3a745db7e0ed7c9889c013f945"; + sha256 = "0gqi9lzdbn5kh6p8a4kxjfyxb4yakpkac49lyaqcipz6spzhhzf1"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/0b35c169fe56a5612ff5a4242140f617fdcae14f/recipes/faff-theme"; @@ -16479,12 +16779,12 @@ melpaBuild { pname = "find-file-in-project"; ename = "find-file-in-project"; - version = "5.6.8"; + version = "5.7.2"; src = fetchFromGitHub { owner = "technomancy"; repo = "find-file-in-project"; - rev = "1c54325cb60bde7496dad4e19f4c2a857999df58"; - sha256 = "1pxqqpj6cdwbhca6vaj98d86f1l0vl09zp054wf0sv759l25ac0l"; + rev = "0072b813fc77ef34f776fcafbd13c4aeeae360cf"; + sha256 = "1m7z4m9b3a7pfsbcda71mhn9vjjjbnaql69jnb4i1afwh5nwm7hx"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/cae2ac3513e371a256be0f1a7468e38e686c2487/recipes/find-file-in-project"; @@ -16884,12 +17184,12 @@ melpaBuild { pname = "flower"; ename = "flower"; - version = "0.4.3"; + version = "0.4.5"; src = fetchFromGitHub { owner = "PositiveTechnologies"; repo = "flower"; - rev = "a0e6912e6e709e5cf083d48cebffdb60b809c59a"; - sha256 = "04m6x5hiac9f4ffjw82g9gcy5r84vfrm4vj67f1vqr7llqbflkzm"; + rev = "49e224ab26d85f5cd4a3ad9cdac391264b80ad5e"; + sha256 = "1kn9sibvsnaprhjwfz1cdvb4mi4d4qsp70gxjij58dk51jpni7yf"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/c8a731715d360aea9af2b898242fd4eee5419d14/recipes/flower"; @@ -16993,12 +17293,12 @@ melpaBuild { pname = "flycheck-apertium"; ename = "flycheck-apertium"; - version = "0.2"; + version = "0.3.0"; src = fetchFromGitHub { owner = "unhammer"; repo = "flycheck-apertium"; - rev = "71cf49d5aaee962b995583384bfa045a1d4c3db7"; - sha256 = "14idjjz6fhmq806mmncmqnr9bvcjks6spin8z6jb0gqcg1dbhm06"; + rev = "e146ab1b929c50450ba0708e1bdd9fed85606964"; + sha256 = "1g1m7pm84mkmjx7hdspb5k6n8aqphphxb5gya725qy1wqi950jqz"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/7f6cec0d312f0e86e17829e6fd8f87acabc0174f/recipes/flycheck-apertium"; @@ -17239,11 +17539,11 @@ melpaBuild { pname = "flycheck-grammalecte"; ename = "flycheck-grammalecte"; - version = "0.5"; + version = "0.6"; src = fetchgit { url = "https://git.deparis.io/flycheck-grammalecte/"; - rev = "4f5937c58f895a62ccb3466af20b26a61ef9071c"; - sha256 = "15jpck7h2bn6idfzizjw79nfza3lm9dj03v0r44pnm1ryx7l89w7"; + rev = "ca825419021a8da9e292812772dad35ef38ccc8e"; + sha256 = "11sydiznyqarbgm9izf6bh6sfdz5my51apibb2j13fajlfgkddai"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/fdd82aa0568d998a3d176b5ee47b8a227438ea09/recipes/flycheck-grammalecte"; @@ -17537,12 +17837,12 @@ melpaBuild { pname = "flycheck-objc-clang"; ename = "flycheck-objc-clang"; - version = "2.0.2"; + version = "2.0.4"; src = fetchFromGitHub { owner = "GyazSquare"; repo = "flycheck-objc-clang"; - rev = "f4a76ac199b67ff383ab5e70434c9b98b48c92d5"; - sha256 = "0ryanx4vmy9jwqjnwvma6dm136y4fh227cyhz206km6595bbn3nc"; + rev = "a3781e47f14068c811534a3348bf479eeb3f2041"; + sha256 = "00a2wg6g74plbmva3bwms7brdlv9i28w51yxisiv04la126m69js"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/4ff4412f507371b93cfb85fc744e54110cd87338/recipes/flycheck-objc-clang"; @@ -17783,12 +18083,12 @@ melpaBuild { pname = "flycheck-rtags"; ename = "flycheck-rtags"; - version = "2.18"; + version = "2.21"; src = fetchFromGitHub { owner = "Andersbakken"; repo = "rtags"; - rev = "7e6b6f21935eedbe4678ba91c5531ac162b51a5a"; - sha256 = "12629d1s8rplhjh17n3bmgnkpscq4gljgyl84j8qyhh40dwq1qk0"; + rev = "5dbb594a7202c4a2e84329cf821bd28bfbea5ae3"; + sha256 = "0x210bqv7618g85nzjy4x9gy31qcbjgppmk8zbpmqk59f2bp7bac"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/3dea16daf0d72188c8b4043534f0833fe9b04e07/recipes/flycheck-rtags"; @@ -17866,12 +18166,12 @@ melpaBuild { pname = "flycheck-swift3"; ename = "flycheck-swift3"; - version = "2.0.2"; + version = "2.0.4"; src = fetchFromGitHub { owner = "GyazSquare"; repo = "flycheck-swift3"; - rev = "06a6f98d7e498860b345bbd03e96bfe59608f508"; - sha256 = "0h1n4x0fvqfb6jcapbab1ck6bj4d7irbn9zz2hxv2rlrkqxfsmh3"; + rev = "37994f11c93f585119647e6ba10761e9766b593d"; + sha256 = "12611z7f53pw0yn70m40nsp6qd2jpm2hdf8s2gqz4lf0qh2z91lb"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/f1fb8c731c118327dc0bbb726e046fec46bcfb82/recipes/flycheck-swift3"; @@ -17949,12 +18249,12 @@ melpaBuild { pname = "flycheck-vdm"; ename = "flycheck-vdm"; - version = "0.0.3"; + version = "0.0.4"; src = fetchFromGitHub { owner = "peterwvj"; repo = "vdm-mode"; - rev = "0c083ee4848ea5d78de7894a4a0722d6630839c9"; - sha256 = "175zlxxjxl7zp80hm2hz5xw7gy3qh0hz3fdvqy8v3n0vz4zvqx1k"; + rev = "e131edb0d35de28bd47d6128dd70d9a6fc46e0fa"; + sha256 = "090a0imk7dr6vqq4lf806pvajqc499x2gmi0k7rgc1696rbyzhb5"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/f246b9dcf7915a845b9e2cd44cc1a0833b412c8f/recipes/flycheck-vdm"; @@ -18101,6 +18401,33 @@ license = lib.licenses.free; }; }) {}; + flymake-diagnostic-at-point = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild + , popup }: + melpaBuild { + pname = "flymake-diagnostic-at-point"; + ename = "flymake-diagnostic-at-point"; + version = "1.2.0"; + src = fetchFromGitHub { + owner = "meqif"; + repo = "flymake-diagnostic-at-point"; + rev = "379616b1c6f5ebeaf08fbe54ae765008a78b3be7"; + sha256 = "1wbzrxxz5z1xg2lwmqgglvixxf1xm3gl6mdyj9idsbym05azm3hg"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/b7ae169ca3b59d3b876d52148dac573b7f083ac3/recipes/flymake-diagnostic-at-point"; + sha256 = "0cdxb9w5sq6z6wramj1bss5vwqzxkmdyzb1di39rghyh243cdrzx"; + name = "recipe"; + }; + packageRequires = [ emacs popup ]; + meta = { + homepage = "https://melpa.org/#/flymake-diagnostic-at-point"; + license = lib.licenses.free; + }; + }) {}; flymake-easy = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -18469,12 +18796,12 @@ melpaBuild { pname = "flyspell-correct"; ename = "flyspell-correct"; - version = "0.4"; + version = "0.5"; src = fetchFromGitHub { owner = "d12frosted"; repo = "flyspell-correct"; - rev = "7e7f94a36699c7e7bba728df722e13a7b4af4b73"; - sha256 = "16lbhbgyrpp9ig9li1v31bs9i5z8dchjb1vrkcih020p3g9vwi27"; + rev = "a9b53c52ab350aead0851e140d813cfd7b1bd680"; + sha256 = "1r9hmz7sihhy7npv6nxp04sy57glzmfax5d67mwn96fdnc0yhlnd"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/fa06fbe3bc40ae5e3f6d10dee93a9d49e9288ba5/recipes/flyspell-correct"; @@ -18496,12 +18823,12 @@ melpaBuild { pname = "flyspell-correct-helm"; ename = "flyspell-correct-helm"; - version = "0.4"; + version = "0.5"; src = fetchFromGitHub { owner = "d12frosted"; repo = "flyspell-correct"; - rev = "7e7f94a36699c7e7bba728df722e13a7b4af4b73"; - sha256 = "16lbhbgyrpp9ig9li1v31bs9i5z8dchjb1vrkcih020p3g9vwi27"; + rev = "a9b53c52ab350aead0851e140d813cfd7b1bd680"; + sha256 = "1r9hmz7sihhy7npv6nxp04sy57glzmfax5d67mwn96fdnc0yhlnd"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/ef7b9302d8f804c77eb81fee7ed27f13cb1176f6/recipes/flyspell-correct-helm"; @@ -18523,12 +18850,12 @@ melpaBuild { pname = "flyspell-correct-ivy"; ename = "flyspell-correct-ivy"; - version = "0.4"; + version = "0.5"; src = fetchFromGitHub { owner = "d12frosted"; repo = "flyspell-correct"; - rev = "7e7f94a36699c7e7bba728df722e13a7b4af4b73"; - sha256 = "16lbhbgyrpp9ig9li1v31bs9i5z8dchjb1vrkcih020p3g9vwi27"; + rev = "a9b53c52ab350aead0851e140d813cfd7b1bd680"; + sha256 = "1r9hmz7sihhy7npv6nxp04sy57glzmfax5d67mwn96fdnc0yhlnd"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/ef7b9302d8f804c77eb81fee7ed27f13cb1176f6/recipes/flyspell-correct-ivy"; @@ -18550,12 +18877,12 @@ melpaBuild { pname = "flyspell-correct-popup"; ename = "flyspell-correct-popup"; - version = "0.4"; + version = "0.5"; src = fetchFromGitHub { owner = "d12frosted"; repo = "flyspell-correct"; - rev = "7e7f94a36699c7e7bba728df722e13a7b4af4b73"; - sha256 = "16lbhbgyrpp9ig9li1v31bs9i5z8dchjb1vrkcih020p3g9vwi27"; + rev = "a9b53c52ab350aead0851e140d813cfd7b1bd680"; + sha256 = "1r9hmz7sihhy7npv6nxp04sy57glzmfax5d67mwn96fdnc0yhlnd"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/ef7b9302d8f804c77eb81fee7ed27f13cb1176f6/recipes/flyspell-correct-popup"; @@ -18861,6 +19188,52 @@ license = lib.licenses.free; }; }) {}; + forge = callPackage ({ closql + , dash + , emacs + , emacsql-sqlite + , fetchFromGitHub + , fetchurl + , ghub + , graphql + , let-alist + , lib + , magit + , magit-popup + , markdown-mode + , melpaBuild }: + melpaBuild { + pname = "forge"; + ename = "forge"; + version = "0.1.0"; + src = fetchFromGitHub { + owner = "magit"; + repo = "forge"; + rev = "f5fc99935e2059ddede9766ce4bb96d99dcd203b"; + sha256 = "0jipyqj3r4gkdwpcy0m5ij7x510r2admi8fbzwfysqyrwahs60nv"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/23512cf8152161322960d72a5ec49a7595003477/recipes/forge"; + sha256 = "0a1yvdxx43zq9ivwmg34wyybkw4vhgzd2c54cchsbrbr972x9522"; + name = "recipe"; + }; + packageRequires = [ + closql + dash + emacs + emacsql-sqlite + ghub + graphql + let-alist + magit + magit-popup + markdown-mode + ]; + meta = { + homepage = "https://melpa.org/#/forge"; + license = lib.licenses.free; + }; + }) {}; form-feed = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -18936,29 +19309,31 @@ license = lib.licenses.free; }; }) {}; - fountain-mode = callPackage ({ emacs + frame-purpose = callPackage ({ dash + , dash-functional + , emacs , fetchFromGitHub , fetchurl , lib , melpaBuild }: melpaBuild { - pname = "fountain-mode"; - ename = "fountain-mode"; - version = "2.6.1"; + pname = "frame-purpose"; + ename = "frame-purpose"; + version = "1.0"; src = fetchFromGitHub { - owner = "rnkn"; - repo = "fountain-mode"; - rev = "7d84ed48df76ee05f629781741ad7c5783c3cc66"; - sha256 = "0f6vav08583gahr863sa5v7mabwjlm1dgfybv3843cscqmxb70zw"; + owner = "alphapapa"; + repo = "frame-purpose.el"; + rev = "60778ef3c02cb09a7ccc323732c89bf374dfbffe"; + sha256 = "0jq2aam1yvccw887ighd1wm2xkvk5bv53ffiz3crcl16a255aj4q"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/913386ac8d5049d37154da3ab32bde408a226511/recipes/fountain-mode"; - sha256 = "1i55gcjy8ycr1ww2fh1a2j0bchx1bsfs0zd6v4cv5zdgy7vw6840"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/033bd36a2419f4521944ccbfe8ce1eb56af20472/recipes/frame-purpose"; + sha256 = "0mvzryfakz5g8smsg4ciaa0bs0jp692rnjbahp9vl62ml5dp62fz"; name = "recipe"; }; - packageRequires = [ emacs ]; + packageRequires = [ dash dash-functional emacs ]; meta = { - homepage = "https://melpa.org/#/fountain-mode"; + homepage = "https://melpa.org/#/frame-purpose"; license = lib.licenses.free; }; }) {}; @@ -18997,12 +19372,12 @@ melpaBuild { pname = "frameshot"; ename = "frameshot"; - version = "0.2.0"; + version = "0.2.2"; src = fetchFromGitHub { owner = "tarsius"; repo = "frameshot"; - rev = "917efdd678e397aa01efa657e3488d34445eca90"; - sha256 = "1c19magazz78jd65r7c58nhp0bcyfysrlvf4jbfgrdd9bf7xlkx6"; + rev = "3830aae976603ff4e41e09fdca7554594075694c"; + sha256 = "1sbxr78gl822gl0ky7iz1wb558ch9gp7igg4aq63gjlq6wfx2v93"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/e5cfaa4b5fda97054d45691fad9d79b559f2df14/recipes/frameshot"; @@ -19075,14 +19450,14 @@ ename = "fsbot-data-browser"; version = "0.3"; src = fetchFromGitHub { - owner = "benaiah"; + owner = "Benaiah"; repo = "fsbot-data-browser"; rev = "6bca4f7de63e31839d2542f6c678b79931dec344"; sha256 = "0lvpgfp89sz6f6rn576g1g88s0q3ibj5ghydjwfcg9w6h7vx5b5s"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/37a0901b98e1c66be6906234e6d6520a6e940e97/recipes/fsbot-data-browser"; - sha256 = "0jijvl07jk200fs01ln4dmw5nx9jg3f9b7gjaknyd18vyvbwr3s5"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/35763febad20f29320d459394f810668db6c3353/recipes/fsbot-data-browser"; + sha256 = "14d4d8lasvgj520rmqgnzk6mi16znzcdvja9p8164fr9l41wnzgd"; name = "recipe"; }; packageRequires = []; @@ -19262,31 +19637,6 @@ license = lib.licenses.free; }; }) {}; - futhark-mode = callPackage ({ cl-lib ? null - , fetchFromGitHub - , fetchurl - , lib - , melpaBuild }: - melpaBuild { - pname = "futhark-mode"; - version = "0.4.1"; - src = fetchFromGitHub { - owner = "HIPERFIT"; - repo = "futhark"; - rev = "784e3147196bfe82ea9499628467335ea1d036f9"; - sha256 = "07dqqpacvap034jzvdvnpjyryzicbvjx2imnsghsxw9m52jsb9wn"; - }; - recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/0607f01aad7e77d53595ad8db95d32acfd29b148/recipes/futhark-mode"; - sha256 = "1k22xkg6vd60hk58zkxhmsw2gs6ikzmidvxcdglnr46m6x7r7pnq"; - name = "futhark-mode"; - }; - packageRequires = [ cl-lib ]; - meta = { - homepage = "https://melpa.org/#/futhark-mode"; - license = lib.licenses.free; - }; - }) {}; fuzzy = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -19608,16 +19958,16 @@ melpaBuild { pname = "gf"; ename = "gf"; - version = "1.1.1"; + version = "1.1.2"; src = fetchFromGitHub { - owner = "grammaticalframework"; + owner = "GrammaticalFramework"; repo = "gf-emacs-mode"; - rev = "e8e55584b0a473922c58cbb4860306a84c3336e5"; - sha256 = "09fqax9dr40rj8f6b4z7lkjrs305gnkm2f4q314f4k7yxnz3c055"; + rev = "49fa46db67634530499be969ffd3c436a22d4404"; + sha256 = "0q234wzzmq1r53dv7z798liwkcbpnvc8mnxvkyfxd94f6za9ylgz"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/1c2cc74eb19c54219cd5c5c11d886074859f0948/recipes/gf"; - sha256 = "170q5a7lwa9pbpn0ghcfzny0jfn42wgns1lcv8fngr0k1njfj6v8"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/35763febad20f29320d459394f810668db6c3353/recipes/gf"; + sha256 = "0vk866gy97zk8dbx48azjlpnrnf0snc50zlhbzv1is97d9frjici"; name = "recipe"; }; packageRequires = [ ht s ]; @@ -19783,28 +20133,31 @@ license = lib.licenses.free; }; }) {}; - ghub = callPackage ({ emacs + ghub = callPackage ({ dash + , emacs , fetchFromGitHub , fetchurl + , graphql , let-alist , lib - , melpaBuild }: + , melpaBuild + , treepy }: melpaBuild { pname = "ghub"; ename = "ghub"; - version = "2.0.1"; + version = "3.2.0"; src = fetchFromGitHub { owner = "magit"; repo = "ghub"; - rev = "4831933da059ee084a16016558b9ccd8c581a8ff"; - sha256 = "1b5jrpj3z989r3mf4jfch8rnaaa5hyb2395xz3v37f0vsphd7s0y"; + rev = "1a886a9910b3fe9f51624322a46d3ef5f9e83ae8"; + sha256 = "0mw48z3nfh1yrw9phb9da4705mrwmc7f2zbwn5hdpvw0ga2hd2qn"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/f403587f77380d1db214aa34933a9b5cce1ef2bd/recipes/ghub"; sha256 = "15kjyi8ialpr1zjqvw68w9pa5sigcwy2szq21yvcy295z7ylzy4i"; name = "recipe"; }; - packageRequires = [ emacs let-alist ]; + packageRequires = [ dash emacs graphql let-alist treepy ]; meta = { homepage = "https://melpa.org/#/ghub"; license = lib.licenses.free; @@ -19926,12 +20279,12 @@ melpaBuild { pname = "git-attr"; ename = "git-attr"; - version = "0.0.3"; + version = "1.0.0"; src = fetchFromGitHub { owner = "arnested"; repo = "emacs-git-attr"; - rev = "c03078637a00ea301cbcc7ae301ae928b10af889"; - sha256 = "05wzy8g0yjkks0zmcvwn9dmr6kxk1bz91xic3c08b0j1z5lbsdv7"; + rev = "3e43a0cf616b00a4bbd3c6b49fd2397f3103796f"; + sha256 = "1alpr4gnkikwzljz0fdbrx5hs3zy5s2fz7qyxdz0nx9hv8zb5ir5"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/3417e4bc586df60b5e6239b1f7683b87953f5b7c/recipes/git-attr"; @@ -20007,12 +20360,12 @@ melpaBuild { pname = "git-commit"; ename = "git-commit"; - version = "2.13.0"; + version = "2.90.1"; src = fetchFromGitHub { owner = "magit"; repo = "magit"; - rev = "e03685e813330a750c1d2e525a8f8c74901fccfb"; - sha256 = "119x8lg8alf97j8r3swmy6yf9112a9s2z2584n74bk847mxl2qwz"; + rev = "791901b2f1d26fa0a383147fe77948a9abc753da"; + sha256 = "1kw94sdczswsyzn1zlk5s5aplpdv4qd7qcqc5zfxsmsfwm3jacl4"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/cec5af50ae7634cc566adfbfdf0f95c3e2951c0c/recipes/git-commit"; @@ -20199,12 +20552,12 @@ melpaBuild { pname = "git-link"; ename = "git-link"; - version = "0.7.1"; + version = "0.7.2"; src = fetchFromGitHub { owner = "sshaw"; repo = "git-link"; - rev = "efd14ab5f17f5942d25e165210447f3983f3250e"; - sha256 = "0rd2g4s73xk8m595aa11vr59gnn5mx7lbcf0040w1xqvlrryzyc9"; + rev = "976723dfdb9ae42e093a3cb32fc41841e94201e6"; + sha256 = "0xsyzgwbsnf4xah860182pfirkfbixsf0nkfm05n1rvid7a6495d"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/1385443585e628e3d4efb3badb7611e9d653e0c9/recipes/git-link"; @@ -20277,12 +20630,12 @@ melpaBuild { pname = "git-timemachine"; ename = "git-timemachine"; - version = "4.5"; + version = "4.8"; src = fetchFromGitLab { owner = "pidu"; repo = "git-timemachine"; - rev = "dbcb92ffaa5f8350d47f4fbd74512f4000b8c043"; - sha256 = "1ml06jfjyrcqmbpr5hqvbpi3yy6l2aa836jq8qjla1h74g9qka7z"; + rev = "4eb2ee6eabcc437bc3a1addc19ba38eed165743d"; + sha256 = "1fdbyd3jhfif7i8zhprbld7jx210xpfrgp3gqn1g8hfzic0x8vxp"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/a52b516b7b10bdada2f64499c8f43f85a236f254/recipes/git-timemachine"; @@ -20594,12 +20947,12 @@ melpaBuild { pname = "gitlab-ci-mode"; ename = "gitlab-ci-mode"; - version = "20180306.1"; + version = "20181127.2"; src = fetchFromGitLab { owner = "joewreschnig"; repo = "gitlab-ci-mode"; - rev = "313431fa5b8b5ce4512909dfc15675bb99395f6f"; - sha256 = "0zdj3f0a5fg4vwhbv851jv4fs1dqfz2w4jsxqbri2zhzdjxc97vn"; + rev = "99214277a0ea0f20472631e05ba8302997d5d364"; + sha256 = "1xwsdclv1q98dsb79bd9yq050axqzc1y4vswz4gf5zhshmfvg130"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/d7915ddcf21fdec539a86bb86c209cf0bbd378cb/recipes/gitlab-ci-mode"; @@ -20718,28 +21071,26 @@ license = lib.licenses.free; }; }) {}; - glab = callPackage ({ emacs - , fetchFromGitHub + glab = callPackage ({ fetchFromGitHub , fetchurl - , ghub , lib , melpaBuild }: melpaBuild { pname = "glab"; ename = "glab"; - version = "2.0.1"; + version = "3.2.0"; src = fetchFromGitHub { owner = "magit"; repo = "ghub"; - rev = "4831933da059ee084a16016558b9ccd8c581a8ff"; - sha256 = "1b5jrpj3z989r3mf4jfch8rnaaa5hyb2395xz3v37f0vsphd7s0y"; + rev = "db15d00d01b8bd9187079a0b538d878d241743a8"; + sha256 = "0ikx80gj1v1kw2dp648ajiq6lmihg2va60bmjvi12rn8i2r5cga5"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/f403587f77380d1db214aa34933a9b5cce1ef2bd/recipes/glab"; sha256 = "0kyr1znf82qi15r6iha6dbyhmfzghx969hd364rsvkly8ry8pk5m"; name = "recipe"; }; - packageRequires = [ emacs ghub ]; + packageRequires = []; meta = { homepage = "https://melpa.org/#/glab"; license = lib.licenses.free; @@ -20897,6 +21248,32 @@ license = lib.licenses.free; }; }) {}; + gnus-recent = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "gnus-recent"; + ename = "gnus-recent"; + version = "0.2.0"; + src = fetchFromGitHub { + owner = "unhammer"; + repo = "gnus-recent"; + rev = "df85e5810c02f613bfa6e236674de969d6e00ae1"; + sha256 = "0hvsp9y0vzcr9c2wglh0wdavjmp2n2hbhlsr1bfvnfxk97ka0y5r"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/0b80d94cf1a8b8e2d4da5d45f65231aa4884a3a0/recipes/gnus-recent"; + sha256 = "14xac6bmn61bk0h6dby14111iijz0j254v4mh77lf0ydbz6wxjf1"; + name = "recipe"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://melpa.org/#/gnus-recent"; + license = lib.licenses.free; + }; + }) {}; gnus-x-gm-raw = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -20959,16 +21336,16 @@ melpaBuild { pname = "go-autocomplete"; ename = "go-autocomplete"; - version = "20170907"; + version = "20150303"; src = fetchFromGitHub { - owner = "nsf"; + owner = "mdempsky"; repo = "gocode"; - rev = "beae6bdcc6fc300059038961b7a3e977e0fb7c61"; - sha256 = "0fhs17v2x24nhs0kd2yjzr56jni2767yrjxims6phsaxs9m5aih2"; + rev = "b6fffd0527b4ab22df0170d7243317ab2773622e"; + sha256 = "1kdicb69dlm06r3skfk8bxygyjr5cvymal8fvbd8zzzfdzgnj7lg"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/04867a574773e8794335a2664d4f5e8b243f3ec9/recipes/go-autocomplete"; - sha256 = "1ldsq81a167dk2r2mvzyp3v3j2mxc4l9p6b12i7pv8zrjlkhma5a"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/ef45683cbfe82bf8a9d6f3f1c59e3cf340accbe3/recipes/go-autocomplete"; + sha256 = "15ns1zzw6kblcbih7dmjvk1p0f6f3p2wpgx4gnd9ax0fcj65ghwi"; name = "recipe"; }; packageRequires = [ auto-complete ]; @@ -21135,6 +21512,32 @@ license = lib.licenses.free; }; }) {}; + go-imenu = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "go-imenu"; + ename = "go-imenu"; + version = "0.1.0"; + src = fetchFromGitHub { + owner = "brantou"; + repo = "go-imenu.el"; + rev = "fc1566fbe396fc8c94f7de99d9c7191b47cd48d9"; + sha256 = "0qygxqrzx009cd59b452ampakr9rwmj1skl8pic9an4wjz742qlg"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/d602b6071787018e3e0a68b4852eb978b34acbea/recipes/go-imenu"; + sha256 = "0s8rc7rkqlywrhnm2h8yygn87jhjc492wmsvnr1rxl62wf5cijms"; + name = "recipe"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://melpa.org/#/go-imenu"; + license = lib.licenses.free; + }; + }) {}; go-impl = callPackage ({ emacs , fetchFromGitHub , fetchurl @@ -21403,12 +21806,12 @@ melpaBuild { pname = "google-translate"; ename = "google-translate"; - version = "0.11.14"; + version = "0.11.16"; src = fetchFromGitHub { owner = "atykhonov"; repo = "google-translate"; - rev = "486c63bbfa0338589589f628703c38112035a5b2"; - sha256 = "08b4lxnwy9iqxacbjjljybvvdkl9g2dy6vga6hw7h7h32qra8w2j"; + rev = "17a1ddc074b96cdc3b8199ccb06824a7a95bf9ff"; + sha256 = "09sxphprj3aq9q2dpy5gmyjnwjcyd3vb4jcg0mx3cv3ibly86ysl"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/e3c275e59cbfe6e40f9cd4c470fc66544c9a6d21/recipes/google-translate"; @@ -21589,7 +21992,7 @@ melpaBuild { pname = "govc"; ename = "govc"; - version = "0.18.0"; + version = "0.19.0"; src = fetchFromGitHub { owner = "vmware"; repo = "govmomi"; @@ -21615,12 +22018,12 @@ melpaBuild { pname = "gpastel"; ename = "gpastel"; - version = "0.3.0"; + version = "0.5.0"; src = fetchFromGitHub { owner = "DamienCassou"; repo = "gpastel"; - rev = "21b7d79530134d6a47eeb252b684f884c769d291"; - sha256 = "1s1gnkpz6byf6by8r1bl9vq3slmsdavjb2ybp2zgic48favz1qm2"; + rev = "8a5522b274f79d55d7c9a0b2aaf062526f9253c7"; + sha256 = "01pnnqcxni55xr7r2lxcnsqiszm2w5iwnjcwp748p1faq6ywhi19"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/9b70e05ff0a074f9e2f1373e8495dc8df462deea/recipes/gpastel"; @@ -21964,31 +22367,6 @@ license = lib.licenses.free; }; }) {}; - grass-mode = callPackage ({ cl-lib ? null - , dash - , fetchhg - , fetchurl - , lib - , melpaBuild }: - melpaBuild { - pname = "grass-mode"; - version = "0.1"; - src = fetchhg { - url = "https://bitbucket.com/tws/grass-mode.el"; - rev = "1ae8eae88117"; - sha256 = "1sl3d5759fjm98pb50ykz2c05czb2298ipccwj2qz2hdzq63hfv8"; - }; - recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/5b7972602399f9df9139cff177e38653bb0f43ed/recipes/grass-mode"; - sha256 = "1lq6bk4bwgcy4ra3d9rlca3fk87ydg7xnnqcqjg0pw4m9xnr3f7v"; - name = "grass-mode"; - }; - packageRequires = [ cl-lib dash ]; - meta = { - homepage = "https://melpa.org/#/grass-mode"; - license = lib.licenses.free; - }; - }) {}; green-is-the-new-black-theme = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -22067,29 +22445,6 @@ license = lib.licenses.free; }; }) {}; - grin = callPackage ({ fetchhg - , fetchurl - , lib - , melpaBuild }: - melpaBuild { - pname = "grin"; - version = "1.0"; - src = fetchhg { - url = "https://bitbucket.com/dariusp686/emacs-grin"; - rev = "f541aa22da52"; - sha256 = "0rqpgc50z86j4waijfm6kw4zjmzqfii6nnvyix4rkd4y3ryny1x2"; - }; - recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/855ea20024b606314f8590129259747cac0bcc97/recipes/grin"; - sha256 = "0rak710fp9c7wx39qn4dc9d0xfjr5w7hwklxh99v1x1ihkla9378"; - name = "grin"; - }; - packageRequires = []; - meta = { - homepage = "https://melpa.org/#/grin"; - license = lib.licenses.free; - }; - }) {}; grizzl = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -22232,14 +22587,14 @@ ename = "gruvbox-theme"; version = "1.26.0"; src = fetchFromGitHub { - owner = "Greduan"; + owner = "greduan"; repo = "emacs-theme-gruvbox"; rev = "796999e5db2a0e43ad64c062c1bec3c966d095bc"; sha256 = "0qj5k0c1592ikrb7gcibqwf8hhj6lq4cw7zrb3kmpk4zakzy7a2w"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/2bd48c87919f64ced9f3add4860751bb34cb5ecb/recipes/gruvbox-theme"; - sha256 = "042mnwlmixygk2mf24ygk7rkv1rfavc5a36hs9x8b68jnf3khj32"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/35763febad20f29320d459394f810668db6c3353/recipes/gruvbox-theme"; + sha256 = "12z89fjfqcp9rx2f2x9wcffgxxv3kjn1dabyk0cjf286hgvmgz88"; name = "recipe"; }; packageRequires = [ autothemer ]; @@ -22339,12 +22694,12 @@ melpaBuild { pname = "guix"; ename = "guix"; - version = "0.5"; + version = "0.5.1"; src = fetchFromGitHub { owner = "alezost"; repo = "guix.el"; - rev = "6ac7b47fa1ce4dbb8b897de7c73ff6802b15e52e"; - sha256 = "1wha6dnl17m683sjgwgh9apxvxzgg1f4k80sv6fl78w8q441f4bn"; + rev = "495baedc983070f0158442173bdef0a35c2a1e9d"; + sha256 = "0p2sn6siq7ns1qjw51jcr20v0dz1z7s11mym892hiq6hib2ykdgz"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/b3d8c73e8a946b8265487a0825d615d80aa3337d/recipes/guix"; @@ -22442,12 +22797,12 @@ melpaBuild { pname = "hackernews"; ename = "hackernews"; - version = "0.4.0"; + version = "0.5.0"; src = fetchFromGitHub { owner = "clarete"; repo = "hackernews.el"; - rev = "22a15dc57dd6aab7793c0f9c2b72e161e0bee00c"; - sha256 = "0bpbiadv4bf3lllsm0w1jcw8nc7c9zl97m972hbxb1dgv90gvs5b"; + rev = "916c3da8da45c757f5ec2faeed57fa370513d4ac"; + sha256 = "09bxaaczana1cfvxyk9aagjvdszkj0j1yldl5r4xa60b59lxihsg"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/c43a342e47e5ede468bcf51a60d4dea3926f51bd/recipes/hackernews"; @@ -23360,12 +23715,12 @@ melpaBuild { pname = "helm-core"; ename = "helm-core"; - version = "2.9.8"; + version = "3.0"; src = fetchFromGitHub { owner = "emacs-helm"; repo = "helm"; - rev = "8de42d08f45a7052ed858132de43a76f933f58f7"; - sha256 = "1g36knyppz8lfbcn84hx6ivf8b34s26wx5dh4xw85sq6pwi5yn7s"; + rev = "757263f9332d2d338ac3619f50547ef2f9d2bd9e"; + sha256 = "0qahykw30vwhkd579s3gs2hya0zw1jpmcw3n39vjg7za573xpgzb"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/ef7a700c5665e6d72cb4cecf7fb5a2dd43ef9bf7/recipes/helm-core"; @@ -23925,30 +24280,6 @@ license = lib.licenses.free; }; }) {}; - helm-lobsters = callPackage ({ fetchFromGitHub - , fetchurl - , lib - , melpaBuild }: - melpaBuild { - pname = "helm-lobsters"; - version = "0.1.0"; - src = fetchFromGitHub { - owner = "julienXX"; - repo = "helm-lobste.rs"; - rev = "d798bebb1a65e255c8ec791753a0c78e6b19243b"; - sha256 = "1nd562lffc41r3y5x7y46f37ra97avllk2m95w23f9g42h47f1ar"; - }; - recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/6247e3786131e5b2a7824804e49927ed65d266d5/recipes/helm-lobsters"; - sha256 = "0dkb78n373kywxj8zba2s5a2g85vx19rdswv9i78xjwv1lqh8cpp"; - name = "helm-lobsters"; - }; - packageRequires = []; - meta = { - homepage = "https://melpa.org/#/helm-lobsters"; - license = lib.licenses.free; - }; - }) {}; helm-ls-git = callPackage ({ fetchFromGitHub , fetchurl , helm @@ -24205,12 +24536,12 @@ melpaBuild { pname = "helm-org-rifle"; ename = "helm-org-rifle"; - version = "1.6.0"; + version = "1.6.1"; src = fetchFromGitHub { owner = "alphapapa"; repo = "helm-org-rifle"; - rev = "349a3d717d4201404d88c1ee71eb2cd8dc17aeb2"; - sha256 = "1i35cy8yk9r6k2fq07cnbqf7wlfmdqhwihffqkzdp2wm5m762mnv"; + rev = "f2c7f9e203287e3f6e5647406d21454218553e5a"; + sha256 = "1r38xhwvgbv6kn5x159phz3xgss7f1rc7icq27rnr4d8aj91wm6k"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/f39cc94dde5aaf0d6cfea5c98dd52cdb0bcb1615/recipes/helm-org-rifle"; @@ -24638,7 +24969,7 @@ melpaBuild { pname = "helm-rtags"; ename = "helm-rtags"; - version = "2.18"; + version = "2.21"; src = fetchFromGitHub { owner = "Andersbakken"; repo = "rtags"; @@ -24987,6 +25318,32 @@ license = lib.licenses.free; }; }) {}; + help-find-org-mode = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "help-find-org-mode"; + ename = "help-find-org-mode"; + version = "1.0.0"; + src = fetchFromGitHub { + owner = "EricCrosson"; + repo = "help-find-org-mode"; + rev = "c6fa2c8a8e9381572190010a9fa01f2be78f2790"; + sha256 = "1szjqaw31r5070wpbj5rcai124c66bs32x35w1hsxyvzs5k85wg9"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/572003398d1bba572fa9f6332b25ade9306bf718/recipes/help-find-org-mode"; + sha256 = "149rd61bcvgrwhnhlqriw6fn6fr4pwr4ynmj2bwcp558nwf0py0b"; + name = "recipe"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://melpa.org/#/help-find-org-mode"; + license = lib.licenses.free; + }; + }) {}; helpful = callPackage ({ dash , dash-functional , elisp-refs @@ -25001,12 +25358,12 @@ melpaBuild { pname = "helpful"; ename = "helpful"; - version = "0.13"; + version = "0.15"; src = fetchFromGitHub { owner = "Wilfred"; repo = "helpful"; - rev = "5568c780e1b609a18728c592c0f85d798b6a1a47"; - sha256 = "168zgmn1rwskj7v8m1vmryglf6kaky2f34nbgjibhhy6s3xbq63p"; + rev = "f8350169db7a8d77fc3e5389ad0d7bd864a0eb0a"; + sha256 = "1rqnx7672175288yqaslw0d9vw04j6psw7mys8j9zcp2i72hlvkn"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/889d34b654de13bd413d46071a5ff191cbf3d157/recipes/helpful"; @@ -25172,6 +25529,31 @@ license = lib.licenses.free; }; }) {}; + highlight-context-line = callPackage ({ fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "highlight-context-line"; + ename = "highlight-context-line"; + version = "2.0"; + src = fetchFromGitHub { + owner = "ska2342"; + repo = "highlight-context-line"; + rev = "c3257c0ca9dba76167bbd7e0718a65ecd26ef26f"; + sha256 = "10mv1hd33msafp3r62p9zhwivy0l876ci9xjh7nqc9621qxxd5rw"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/00df721571ff67fe158251fa843c8f515ded3469/recipes/highlight-context-line"; + sha256 = "0zmqcfsr2j0m2l76c8h6lmdqwrd1b38gi6yp5sdib0m4vj9d0pnd"; + name = "recipe"; + }; + packageRequires = []; + meta = { + homepage = "https://melpa.org/#/highlight-context-line"; + license = lib.licenses.free; + }; + }) {}; highlight-defined = callPackage ({ emacs , fetchFromGitHub , fetchurl @@ -25336,14 +25718,14 @@ ename = "hindent"; version = "5.2.6"; src = fetchFromGitHub { - owner = "chrisdone"; + owner = "commercialhaskell"; repo = "hindent"; rev = "dc47d8b98ebd6ee7fdd7de5f75e65e5b5eedf72f"; sha256 = "0xp3mpiyrc6886bi9rih4vbmsar56h8i5sapigd3gn2pv2v688bc"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/dbae71a47446095f768be35e689025aed57f462f/recipes/hindent"; - sha256 = "1f3vzgnqigwbwvglxv0ziz3kyp5dxjraw3vlghkpw39f57mky4xz"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/9a15a17a5aa78aed72958b2a1bde53f0c0ab5be7/recipes/hindent"; + sha256 = "0az2zhdi73sa3h1q1c0bayqdk22a7ngrvsg9fr8b0i39sn3w8y07"; name = "recipe"; }; packageRequires = [ cl-lib ]; @@ -25511,12 +25893,12 @@ melpaBuild { pname = "hl-todo"; ename = "hl-todo"; - version = "1.9.0"; + version = "2.1.0"; src = fetchFromGitHub { owner = "tarsius"; repo = "hl-todo"; - rev = "770c9862ed79a2437b764050a1006c62f9e32747"; - sha256 = "0vp8n7ymy7i3db2mqgj2a3sbd2hisj9kjvl6apn6y0bpw5vknfdy"; + rev = "24b9925b1b2c7ad6bf7b66800395f74abf035c5f"; + sha256 = "1bqi2kchcj58j1y3k439v6jk86cg73m0qwfyjz1396h0h2rspnnd"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/7c262f6a1a10e8b3cc30151cad2e34ceb66c6ed7/recipes/hl-todo"; @@ -25696,12 +26078,12 @@ melpaBuild { pname = "htmlize"; ename = "htmlize"; - version = "1.53"; + version = "1.54"; src = fetchFromGitHub { owner = "hniksic"; repo = "emacs-htmlize"; - rev = "1bc2f1b0feb852fa5a289a1d72646b16ac84adf1"; - sha256 = "0dr235c0z8is3pi5xdgqyqljg6px0b2aya6qb79zkyi477bmz4ip"; + rev = "a8b73f1393b2d73541ba4a8fd716c0d07ce50276"; + sha256 = "1d5hj8wibp1lxs697y7i4yrpv9gqq821gxmpqqkn2jwrb70nsngl"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/075aa00a0757c6cd1ad392f0300bf5f1b937648d/recipes/htmlize"; @@ -26080,6 +26462,31 @@ license = lib.licenses.free; }; }) {}; + idle-highlight-in-visible-buffers-mode = callPackage ({ fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "idle-highlight-in-visible-buffers-mode"; + ename = "idle-highlight-in-visible-buffers-mode"; + version = "0.2.0"; + src = fetchFromGitHub { + owner = "ignacy"; + repo = "idle-highlight-in-visible-buffers-mode"; + rev = "8d8de309d5bd4b035c01bf7f0cfc6e079c79d898"; + sha256 = "194r7f4ngwx03n74rs26hqn9wypn9idjizvmffpsjpxfr7wr9z7l"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/b5a533be3b8dea556438d93ac48853dd3a9690f1/recipes/idle-highlight-in-visible-buffers-mode"; + sha256 = "0kv06qlv1zp5hwaya0l90z6d5lhxcg69qac6x24ky6kf97vcdq72"; + name = "recipe"; + }; + packageRequires = []; + meta = { + homepage = "https://melpa.org/#/idle-highlight-in-visible-buffers-mode"; + license = lib.licenses.free; + }; + }) {}; idle-highlight-mode = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -26842,26 +27249,26 @@ , fetchFromGitHub , fetchurl , js2-mode + , js2-refactor , lib , melpaBuild - , seq - , websocket }: + , seq }: melpaBuild { pname = "indium"; ename = "indium"; - version = "1.2.0"; + version = "2.1.1"; src = fetchFromGitHub { owner = "NicolasPetton"; repo = "Indium"; - rev = "5ece767ea30a350dcdb1a4defaca174e85efedc5"; - sha256 = "1djkzjxv7idqg5pmbqf60lmvibp3ccvgdkdwb48wzn2yvnqr2vw6"; + rev = "fd5de13204b3b5f0d2a598fbe74c5a6ac13125bd"; + sha256 = "1v2r9k589l3rsxvijs783dsk5fpl00hrpk6xffirc6rhbkij9bjh"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/4292058cc6e31cabc0de575134427bce7fcef541/recipes/indium"; sha256 = "024ljx7v8xahmr8jm41fiy8i5jbg48ybqp5n67k4jwg819cz8wvl"; name = "recipe"; }; - packageRequires = [ company emacs js2-mode seq websocket ]; + packageRequires = [ company emacs js2-mode js2-refactor seq ]; meta = { homepage = "https://melpa.org/#/indium"; license = lib.licenses.free; @@ -27201,29 +27608,6 @@ license = lib.licenses.free; }; }) {}; - instapaper = callPackage ({ fetchhg - , fetchurl - , lib - , melpaBuild }: - melpaBuild { - pname = "instapaper"; - version = "0.9.5"; - src = fetchhg { - url = "https://bitbucket.com/jfm/emacs-instapaper"; - rev = "8daa0058ede7"; - sha256 = "0krscid3yz2b7kv75gd9fs92zgfl7pnl77dbp5gycv5rmw5mivp8"; - }; - recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/5b7972602399f9df9139cff177e38653bb0f43ed/recipes/instapaper"; - sha256 = "1yibdpj3lx6vr33s75s1y415lxqljrk7pqc901f8nfa01kca7axn"; - name = "instapaper"; - }; - packageRequires = []; - meta = { - homepage = "https://melpa.org/#/instapaper"; - license = lib.licenses.free; - }; - }) {}; intel-hex-mode = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -27328,30 +27712,6 @@ license = lib.licenses.free; }; }) {}; - inverse-acme-theme = callPackage ({ fetchFromGitHub - , fetchurl - , lib - , melpaBuild }: - melpaBuild { - pname = "inverse-acme-theme"; - version = "1.12.0"; - src = fetchFromGitHub { - owner = "dcjohnson"; - repo = "inverse-acme-theme"; - rev = "e57f494fd94e49321a6396f530b8a13bae8b57df"; - sha256 = "16f9vszl0f1dkjvqk5hxi570gf4l8p6fk27p0d7j11grsck0yzly"; - }; - recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/1c44dbc8d3ca29d8715af755b845af7236e95406/recipes/inverse-acme-theme"; - sha256 = "03g6h8dpn42qnr593ryhj22lj1h2nx4rdr1knhkvxygfv3c4lgh5"; - name = "inverse-acme-theme"; - }; - packageRequires = []; - meta = { - homepage = "https://melpa.org/#/inverse-acme-theme"; - license = lib.licenses.free; - }; - }) {}; iplayer = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -27437,12 +27797,12 @@ melpaBuild { pname = "irony"; ename = "irony"; - version = "1.2.0"; + version = "1.3.1"; src = fetchFromGitHub { owner = "Sarcasm"; repo = "irony-mode"; - rev = "78b06aa2df5251adaabb6c749febc1f1bd2ad605"; - sha256 = "0nhjrnlmss535jbshjjd30vydbr8py21vkx4p294w6d8vg2rssf8"; + rev = "79d5fc6152659f62b0f2e4df75665f5b625e9642"; + sha256 = "09i2f99ysisv2d4a0cpn75c0azhbashvz6ja5xy09i2a5svzgzpx"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/d2b6a8d57b192325dcd30fddc9ff8dd1516ad680/recipes/irony"; @@ -27480,6 +27840,32 @@ license = lib.licenses.free; }; }) {}; + isolate = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "isolate"; + ename = "isolate"; + version = "1.2"; + src = fetchFromGitHub { + owner = "casouri"; + repo = "isolate"; + rev = "700aa3c7945580c876d29c3c064282c33ebb365c"; + sha256 = "0j96rzfabn6lgv9xxyndpq3d2nys5z1brrrd7bga786zzwlp78a9"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/c8091f8d72c24a103f6dcaadc18bbec745c1c3d3/recipes/isolate"; + sha256 = "1ldyvw01nq2ynxaaqmw9ihk9kwfss9rqpaydn9f41bqj15xrypjc"; + name = "recipe"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://melpa.org/#/isolate"; + license = lib.licenses.free; + }; + }) {}; iter2 = callPackage ({ emacs , fetchFromGitHub , fetchurl @@ -27488,12 +27874,12 @@ melpaBuild { pname = "iter2"; ename = "iter2"; - version = "0.9.7"; + version = "0.9.9"; src = fetchFromGitHub { owner = "doublep"; repo = "iter2"; - rev = "f8fb8dc7230cdcd37c5d0e4e5a432125c13816d2"; - sha256 = "13q8p9cjz9c9j2l4vlwy6nvwh9y3b0aclg1b32zfdqhs6kmypisd"; + rev = "3b418e05e93ea380baf905de14efda4c174f779c"; + sha256 = "16mmqnwip3cixsmmij4dnjc8h323z280fk51w5rmwnnb0qmfzp66"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/d94316660051ee0ba0c12e380e6203986440368f/recipes/iter2"; @@ -27622,6 +28008,33 @@ license = lib.licenses.free; }; }) {}; + ivy-explorer = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , ivy + , lib + , melpaBuild }: + melpaBuild { + pname = "ivy-explorer"; + ename = "ivy-explorer"; + version = "0.1.5"; + src = fetchFromGitHub { + owner = "clemera"; + repo = "ivy-explorer"; + rev = "783816afda31d1b75487b906257e23e273bad6fa"; + sha256 = "1y3igqvmikz21ikzhmrmz2mpmk1pw6x2bk2d2i4z6l580fhz0h5y"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/8b590a6e0d11fda3d93e4d92f847138f8968b332/recipes/ivy-explorer"; + sha256 = "088ciy051b3kcd6anm66fnkg510c72hrfgdbgdf4mb9z4d9bk056"; + name = "recipe"; + }; + packageRequires = [ emacs ivy ]; + meta = { + homepage = "https://melpa.org/#/ivy-explorer"; + license = lib.licenses.free; + }; + }) {}; ivy-feedwrangler = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -27770,12 +28183,12 @@ melpaBuild { pname = "ivy-prescient"; ename = "ivy-prescient"; - version = "2.2"; + version = "2.2.1"; src = fetchFromGitHub { owner = "raxod502"; repo = "prescient.el"; - rev = "1e0db9451e75f0db29668bebe98dfa747c6b4bcf"; - sha256 = "0zm9phc4cv7ldgyngcj84fxc1j0nh12c05lxiwv0n1xb8wc6awvf"; + rev = "1623a0d4e5b9a752db45923fd91da48b49c85068"; + sha256 = "0yan4m9xf4iia4ns8kqa0zsham4h2mcnwsq9xnfwm26rkn94xrw0"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/a92495d09689932ab9f0b716078ceeeb9cc154e0/recipes/ivy-prescient"; @@ -27825,16 +28238,16 @@ melpaBuild { pname = "ivy-rich"; ename = "ivy-rich"; - version = "0.1.0"; + version = "0.1.2"; src = fetchFromGitHub { - owner = "yevgnen"; + owner = "Yevgnen"; repo = "ivy-rich"; - rev = "b40a76d5c2c29fcc035daa04a7125ffadbedc471"; - sha256 = "0ayf3dwfhafcbqnckm65zy8nc1rv9ji939qfn53wbhxkrgqdicgz"; + rev = "7b0fc52a6ebb9b53aef04f68672d25337c2a4540"; + sha256 = "04n8whm00p1qhvwq3cz75qjxkx9sw4in9djsawmpsi63cqm78czx"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/0fc297f4949e8040d1b0b3271c9a70c64887b960/recipes/ivy-rich"; - sha256 = "0knkqc403gch4dp1q114h64cwwisxwnsxjqbl3cnidlwkn7lzk7m"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/35763febad20f29320d459394f810668db6c3353/recipes/ivy-rich"; + sha256 = "1il1lhxxg694j9w65qwzjm4p4l3q1h1hfndybj6z1cb72ijw27fr"; name = "recipe"; }; packageRequires = [ emacs ivy ]; @@ -27852,7 +28265,7 @@ melpaBuild { pname = "ivy-rtags"; ename = "ivy-rtags"; - version = "2.18"; + version = "2.21"; src = fetchFromGitHub { owner = "Andersbakken"; repo = "rtags"; @@ -27974,29 +28387,6 @@ license = lib.licenses.free; }; }) {}; - jabber = callPackage ({ fetchgit - , fetchurl - , lib - , melpaBuild }: - melpaBuild { - pname = "jabber"; - version = "0.8.92"; - src = fetchgit { - url = "https://git.code.sf.net/p/emacs-jabber/git"; - rev = "2999f58619dd9c20cc6cac8060c4c850a504cbbd"; - sha256 = "03x93wkd8syj2ybf5ymwcm6khx0h5nhrl8pyync1520294pq6i1i"; - }; - recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/caaa21f235c4864f6008fb454d0a970a2fd22a86/recipes/jabber"; - sha256 = "0saajvfpzgcsqa7h7aa6l0bns6swr40c46md6s0d90x9lrvwp7ws"; - name = "jabber"; - }; - packageRequires = []; - meta = { - homepage = "https://melpa.org/#/jabber"; - license = lib.licenses.free; - }; - }) {}; jade-mode = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -28297,12 +28687,12 @@ melpaBuild { pname = "jq-mode"; ename = "jq-mode"; - version = "0.3.0"; + version = "0.4.1"; src = fetchFromGitHub { owner = "ljos"; repo = "jq-mode"; - rev = "8384a1926cc22000e5e42f86f28d807fd6149f8e"; - sha256 = "0fa84jln0vddrc218s8scz6hx12ym0wimh6dm58wqxias7gm9fgk"; + rev = "d6bbd83baf0746f22564f7ae92db44e06da6e08c"; + sha256 = "1sk603258gvnfrvl641xfmgapg67z44wnlx6qba73wn3f2055765"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/318705966e26e58f87b53c115c519db95874ac1c/recipes/jq-mode"; @@ -28690,12 +29080,12 @@ melpaBuild { pname = "julia-repl"; ename = "julia-repl"; - version = "1.0.1"; + version = "1.0.2"; src = fetchFromGitHub { owner = "tpapp"; repo = "julia-repl"; - rev = "06678ed0cb07807f6cb153c6b0997edc6a18f22c"; - sha256 = "1z03pgmfs8r9rwd8yhbb71fkl2lhr8i5ajs7n5gg1syrhnlj89ml"; + rev = "d8b94c6dbfa47fd51540b9d5b1bb0c2dfce3ebc2"; + sha256 = "027ib0i5af23s3kxsfbxh3jgw944crry0v4c7yxz9l8r8p3wpq1k"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/9a2a494969a9caf2f4513b12504379c9685047dc/recipes/julia-repl"; @@ -28903,12 +29293,12 @@ melpaBuild { pname = "kaolin-themes"; ename = "kaolin-themes"; - version = "1.4.1"; + version = "1.4.2"; src = fetchFromGitHub { owner = "ogdenwebb"; repo = "emacs-kaolin-themes"; - rev = "b0d8d0eb3e7d762a53587736894be0d0901c067a"; - sha256 = "0bh7cgr10in3vcc1l41qsxakajb0kp7gia959hryqjcf2aqipzvp"; + rev = "4e1f6b93e25ef0da3767fb4ffb7aa5545bbab01a"; + sha256 = "101hz2igwlx91rrsd56ll7018356qpd39ac6lnr3kj0dmi5vdhh3"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/043a4e3bd5301ef8f4df2cbda0b3f4111eb399e4/recipes/kaolin-themes"; @@ -29030,12 +29420,12 @@ melpaBuild { pname = "keycast"; ename = "keycast"; - version = "0.1.1"; + version = "0.1.2"; src = fetchFromGitHub { owner = "tarsius"; repo = "keycast"; - rev = "0d28c26b07a062ab58c01c6cbedc3e68bd4ec8a1"; - sha256 = "0wfy5wbr150y57mlzsxhb6bq9ycqj2jk5i6nhwl4q8b6xd3mh6p6"; + rev = "c855511785d6e843f584e6ffdc54b4ac3f7a62d0"; + sha256 = "1xk9flcj4f37lqiizq1lgq0x1v64yhfqldaa9sq64nzwib5cp9z1"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/aaaf62c586818f2493667ad6ec8877234a58da53/recipes/keycast"; @@ -29678,6 +30068,33 @@ license = lib.licenses.free; }; }) {}; + ledger-import = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , ledger-mode + , lib + , melpaBuild }: + melpaBuild { + pname = "ledger-import"; + ename = "ledger-import"; + version = "0.2.0"; + src = fetchFromGitHub { + owner = "DamienCassou"; + repo = "ledger-import"; + rev = "c3501ae1a2b590d2d22d4508e958977f51e73d96"; + sha256 = "1mrkrr2rnjrkjq7dihihq2ncn2fpgzwqr4s7j3mfj8gn3f4ak9q9"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/4a1e2a9546b8b40f5f880197cb8166a6a715451f/recipes/ledger-import"; + sha256 = "1lcibmjk2d49vsa89wri7bbf695mjq2ikddz3nlzb6ljywsnqzm4"; + name = "recipe"; + }; + packageRequires = [ emacs ledger-mode ]; + meta = { + homepage = "https://melpa.org/#/ledger-import"; + license = lib.licenses.free; + }; + }) {}; ledger-mode = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -29986,30 +30403,6 @@ license = lib.licenses.free; }; }) {}; - link-hint = callPackage ({ fetchFromGitHub - , fetchurl - , lib - , melpaBuild }: - melpaBuild { - pname = "link-hint"; - version = "0.1"; - src = fetchFromGitHub { - owner = "noctuid"; - repo = "link-hint.el"; - rev = "d26b5330e6e42b4bed4e4730054b4c5e308ceab2"; - sha256 = "1v4fadxv7ym6lc09nd2xpz2k5vrikjv7annw99ii5cqrwhqa5838"; - }; - recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/d24b48fe0bc127ae6ac4084be8059aacb8445afd/recipes/link-hint"; - sha256 = "12fb2zm9jnh92fc2nzmzmwjlhi64rhakwbh9lsydx9svsvkgcs89"; - name = "link-hint"; - }; - packageRequires = []; - meta = { - homepage = "https://melpa.org/#/link-hint"; - license = lib.licenses.free; - }; - }) {}; linum-relative = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -30255,6 +30648,33 @@ license = lib.licenses.free; }; }) {}; + literate-elisp = callPackage ({ cl-lib ? null + , emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "literate-elisp"; + ename = "literate-elisp"; + version = "0.3"; + src = fetchFromGitHub { + owner = "jingtaozf"; + repo = "literate-elisp"; + rev = "69af3f1fdaabf38178603deb32e233a2190e24da"; + sha256 = "0dvlmivcm5cx8396gcnx6hxijvixpdyvd3zk8p0ly8p5g99mrpzx"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/fd4c1c4da2a5571babda9a29a56b8972ad0687c0/recipes/literate-elisp"; + sha256 = "10vc3m54jp2wqjrmn9plq6lb5zfiy6jy0acpp09q3z325z0sql9j"; + name = "recipe"; + }; + packageRequires = [ cl-lib emacs ]; + meta = { + homepage = "https://melpa.org/#/literate-elisp"; + license = lib.licenses.free; + }; + }) {}; live-code-talks = callPackage ({ cl-lib ? null , emacs , fetchFromGitHub @@ -30291,12 +30711,12 @@ melpaBuild { pname = "live-py-mode"; ename = "live-py-mode"; - version = "2.23.1"; + version = "2.24.0"; src = fetchFromGitHub { owner = "donkirkby"; repo = "live-py-plugin"; - rev = "efd9bba8a40448cccfcb745a84d479cb5275122b"; - sha256 = "0va4cirxwv0k9q74ac313pvxvnkvqpp6zqxwscpx4v6hp1gw7wvw"; + rev = "c60962245d412cfeab2cc82c850e5432fa28f690"; + sha256 = "1jwlx5p96adgyibzbnpk2cvh9g7q3pkmjwjmk9lz8jargn8ga3ak"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/c7615237e80b46b5c50cb51a3ed5b07d92566fb7/recipes/live-py-mode"; @@ -30334,30 +30754,6 @@ license = lib.licenses.free; }; }) {}; - lms = callPackage ({ emacs - , fetchhg - , fetchurl - , lib - , melpaBuild }: - melpaBuild { - pname = "lms"; - version = "0.7"; - src = fetchhg { - url = "https://bitbucket.com/inigoserna/lms.el"; - rev = "f07ac3678e27"; - sha256 = "15l3nfrddblfzqxgvf0dmmsk4h5l80l6r2kgxcfk8s01msjka3sl"; - }; - recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/b8be8497494b8543a8257c9ea92444baf7674951/recipes/lms"; - sha256 = "1ckrh6qbh5y2y3yzl2iyq8nqlpy4qp6vzc72ijcgayvcflb01vr1"; - name = "lms"; - }; - packageRequires = [ emacs ]; - meta = { - homepage = "https://melpa.org/#/lms"; - license = lib.licenses.free; - }; - }) {}; load-relative = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -30494,12 +30890,12 @@ melpaBuild { pname = "logview"; ename = "logview"; - version = "0.11.2"; + version = "0.12"; src = fetchFromGitHub { owner = "doublep"; repo = "logview"; - rev = "6a45a358635dccc5eb970722f14444415e40e832"; - sha256 = "0fd79ig5fha207959qr9hib0b4l7wlg7sis03zbhx944xqr8mrv9"; + rev = "bd662d467dbd7c93cfe1e3058e4f11c49314fd6a"; + sha256 = "03s4q5xdz84cjn4qkfhsc3l9y3v5avrl2i5dby4bgsg2zj7n7f73"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/1df3c11ed7738f32e6ae457647e62847701c8b19/recipes/logview"; @@ -30590,6 +30986,61 @@ license = lib.licenses.free; }; }) {}; + lsp-dart = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , lsp-mode + , melpaBuild }: + melpaBuild { + pname = "lsp-dart"; + ename = "lsp-dart"; + version = "0.1.0"; + src = fetchFromGitHub { + owner = "twlz0ne"; + repo = "lsp-dart"; + rev = "c52d825aeebcad250890fe8ded1147df8f9499cf"; + sha256 = "0c3ii7np45bz6wlqzwn1bacdwa8r0880qygjb71ypf5ilq1gk40y"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/da22fe98eb57e143077c4a7c4dbeba70120d527a/recipes/lsp-dart"; + sha256 = "0zv6spd1h2ijkix38hxvvblg37ybm65568gg8fv9qr8giw0bjfy2"; + name = "recipe"; + }; + packageRequires = [ emacs lsp-mode ]; + meta = { + homepage = "https://melpa.org/#/lsp-dart"; + license = lib.licenses.free; + }; + }) {}; + lsp-java = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , lsp-mode + , markdown-mode + , melpaBuild }: + melpaBuild { + pname = "lsp-java"; + ename = "lsp-java"; + version = "1.0"; + src = fetchFromGitHub { + owner = "emacs-lsp"; + repo = "lsp-java"; + rev = "17f80c9935a0004e59c2e706de4b91eba45344c8"; + sha256 = "11ki7mb2pivvmqhn3ya67ph7vz7l3pfa0cqmv6jny12l6iq6awcb"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/c03cb07862c5f35487fb4fb3cc44623774724717/recipes/lsp-java"; + sha256 = "0rrl9mh25w1avvyww840d3yh8nw0shirspxl2nxqwwdaymbkg2wr"; + name = "recipe"; + }; + packageRequires = [ emacs lsp-mode markdown-mode ]; + meta = { + homepage = "https://melpa.org/#/lsp-java"; + license = lib.licenses.free; + }; + }) {}; lsp-mode = callPackage ({ emacs , fetchFromGitHub , fetchurl @@ -30598,12 +31049,12 @@ melpaBuild { pname = "lsp-mode"; ename = "lsp-mode"; - version = "4.2"; + version = "5.0"; src = fetchFromGitHub { owner = "emacs-lsp"; repo = "lsp-mode"; - rev = "8d20214293637beca0e8d50a864ac4980b9064e8"; - sha256 = "0l8i5ra5hzbj3r6qw26v7lqjdvc4yb956j2h2nv7ahmd4g5f95np"; + rev = "f54f564a498ac4f1b98e1dba3e3d621f624f9c02"; + sha256 = "115akc8qb152lcyp2x2z5k8mjdcyh92j8g9nzq5ffyc84jx450km"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/1a7b69312e688211089a23b75910c05efb507e35/recipes/lsp-mode"; @@ -30669,6 +31120,44 @@ license = lib.licenses.free; }; }) {}; + lsp-ui = callPackage ({ dash + , dash-functional + , emacs + , fetchFromGitHub + , fetchurl + , flycheck + , lib + , lsp-mode + , markdown-mode + , melpaBuild }: + melpaBuild { + pname = "lsp-ui"; + ename = "lsp-ui"; + version = "0.0.1"; + src = fetchFromGitHub { + owner = "emacs-lsp"; + repo = "lsp-ui"; + rev = "5138e720451dfbcae2f55a8380416340d5706583"; + sha256 = "10b1qcblarxl8xb1dpmrmh2yk998ln9mmx24hvmxf4skh2zr7zd7"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/1e4fa7cdf71f49f6998b26d81de9522248bc58e6/recipes/lsp-ui"; + sha256 = "00y5i44yd79z0v00a9lvgixb4mrx9nq5vcgmib70h41ffffaq42j"; + name = "recipe"; + }; + packageRequires = [ + dash + dash-functional + emacs + flycheck + lsp-mode + markdown-mode + ]; + meta = { + homepage = "https://melpa.org/#/lsp-ui"; + license = lib.licenses.free; + }; + }) {}; lua-mode = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -30908,7 +31397,6 @@ , fetchurl , ghub , git-commit - , let-alist , lib , magit-popup , melpaBuild @@ -30916,12 +31404,12 @@ melpaBuild { pname = "magit"; ename = "magit"; - version = "2.13.0"; + version = "2.90.1"; src = fetchFromGitHub { owner = "magit"; repo = "magit"; - rev = "e03685e813330a750c1d2e525a8f8c74901fccfb"; - sha256 = "119x8lg8alf97j8r3swmy6yf9112a9s2z2584n74bk847mxl2qwz"; + rev = "791901b2f1d26fa0a383147fe77948a9abc753da"; + sha256 = "1kw94sdczswsyzn1zlk5s5aplpdv4qd7qcqc5zfxsmsfwm3jacl4"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/ac8feccfa0f4eb5bda2ef561a6be66ba145c00e0/recipes/magit"; @@ -30934,7 +31422,6 @@ emacs ghub git-commit - let-alist magit-popup with-editor ]; @@ -30952,12 +31439,12 @@ melpaBuild { pname = "magit-annex"; ename = "magit-annex"; - version = "1.6.0"; + version = "1.7.1"; src = fetchFromGitHub { owner = "magit"; repo = "magit-annex"; - rev = "42ccbe9137718151accc85abc2726b4f3729b5cb"; - sha256 = "1zrqm4nhy1d2pg6gwd6m4225smcns5pl8kpcpi3072gprblncphl"; + rev = "21cb2927d672cc6bf631d8373a361b1766ccf004"; + sha256 = "07r0d2i1hws63wfv1jys63r3lmrl4ywwi76gi7srwhzhqdr1af0n"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/cec5af50ae7634cc566adfbfdf0f95c3e2951c0c/recipes/magit-annex"; @@ -31116,12 +31603,12 @@ melpaBuild { pname = "magit-imerge"; ename = "magit-imerge"; - version = "0.3.1"; + version = "1.0.0"; src = fetchFromGitHub { owner = "magit"; repo = "magit-imerge"; - rev = "d798ceef08c01f0475c78d394544a2ae910a9cea"; - sha256 = "0x86b9xh8j9qywqh78w6b6jj75yzzdcz17cqz8sy48y12zy2skpi"; + rev = "5b45efa65317886640c339d1c71d2b9e00e98b77"; + sha256 = "02597aq00fq7b9284kq7s55ddrjb6xhh1l280gq3czi75658d3db"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/e78a5c27eedfc9b1d79e37e8d333c5d253f31a3c/recipes/magit-imerge"; @@ -31171,12 +31658,12 @@ melpaBuild { pname = "magit-popup"; ename = "magit-popup"; - version = "2.12.4"; + version = "2.12.5"; src = fetchFromGitHub { owner = "magit"; repo = "magit-popup"; - rev = "6e07f745a18af514c2885eeabe9b2b2a5216e53c"; - sha256 = "08952nzn0cb6gxscqyiljk4fq2zxjvr3ism0lvgw0gs9hl5phiwx"; + rev = "8eaa0becc2370484a432a8a19f40ce5e8d0f1642"; + sha256 = "13riknyqr6vxqll80sfhvz165flvdz367rbd0pr5slb01bnfsi2i"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/0263ca6aea7bf6eae26a637454affbda6bd106df/recipes/magit-popup"; @@ -31252,12 +31739,12 @@ melpaBuild { pname = "magit-tbdiff"; ename = "magit-tbdiff"; - version = "0.2.0"; + version = "1.0.0"; src = fetchFromGitHub { owner = "magit"; repo = "magit-tbdiff"; - rev = "2e7d54d290260e5834cca06863d78fc563d7373c"; - sha256 = "07i0bnjkflgrrg246z996slzy28b2kjhhv13z0lcb72w46l935yr"; + rev = "4273bfab1d2b620d68d890fbaaa78c56cf210059"; + sha256 = "0d1cn0nshxnvgjvl9j7wsai75pvsxmrmkdj57xdpyggwxgcpl1m4"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/ad97eea866c8732e3adc17551d37a6d1ae511e6c/recipes/magit-tbdiff"; @@ -31285,12 +31772,12 @@ melpaBuild { pname = "magit-todos"; ename = "magit-todos"; - version = "1.1.2"; + version = "1.1.7"; src = fetchFromGitHub { owner = "alphapapa"; repo = "magit-todos"; - rev = "30622d12c6a085cfa727d0f5f889408e31653957"; - sha256 = "0sfsb4916wxpjfv7f4dqna4bmlyqmsc1ba0vsf16nzi9i2bk7wg3"; + rev = "42dde9c5df2e0d59b30faf866e0a9e9a75cd4be0"; + sha256 = "0qagdxpik64n4rw9scy451ws5sw00v64ri9g2dcw7b66bx2c6c6w"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/b4544ab55d2c8b8c3b7eb739b9fb90ebb246d68b/recipes/magit-todos"; @@ -31633,32 +32120,24 @@ , lib , markdown-mode , melpaBuild - , uuidgen , web-server , websocket }: melpaBuild { pname = "markdown-preview-mode"; ename = "markdown-preview-mode"; - version = "0.9"; + version = "0.9.2"; src = fetchFromGitHub { owner = "ancane"; repo = "markdown-preview-mode"; - rev = "134fd336750b8b3165bc906f0a7161c25eb6f589"; - sha256 = "0j1jdvmn8psarjdl1j4d3rsjmnb3gcissh2l78xj2c8vckmp2g24"; + rev = "f98d9114ca87e3e8e5ce70e601d13061eda15415"; + sha256 = "1d1id99gagymvzdfa1mwqh8y3szm8ii47rpijkfi1qnifjg5jaq9"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/d3c5d222cf0d7eca6a4e3eb914907f8ca58e40f0/recipes/markdown-preview-mode"; sha256 = "1cam5wfxca91q3i1kl0qbdvnfy62hr5ksargi4430kgaz34bcbyn"; name = "recipe"; }; - packageRequires = [ - cl-lib - emacs - markdown-mode - uuidgen - web-server - websocket - ]; + packageRequires = [ cl-lib emacs markdown-mode web-server websocket ]; meta = { homepage = "https://melpa.org/#/markdown-preview-mode"; license = lib.licenses.free; @@ -31830,12 +32309,12 @@ melpaBuild { pname = "math-symbol-lists"; ename = "math-symbol-lists"; - version = "1.2"; + version = "1.2.1"; src = fetchFromGitHub { owner = "vspinu"; repo = "math-symbol-lists"; - rev = "328f792599e4e298d164e3c6331a2426d82ebf64"; - sha256 = "1kj9r2mvmvnj6m2bwhbj8fspqiq8fdrhkaj0ir43f7qmd4imblsj"; + rev = "e15ec26a010b4f38111bc150c51ecb1a319f6bdb"; + sha256 = "11jk0xdlc8zk2way1d85n2khmydzzvpjhh8bbjbdsv8d1z3j9yfh"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/fadff01600d57f5b9ea9c0c47ed109e058114998/recipes/math-symbol-lists"; @@ -31908,12 +32387,12 @@ melpaBuild { pname = "mb-url"; ename = "mb-url"; - version = "0.2.1"; + version = "0.4.0"; src = fetchFromGitHub { owner = "dochang"; repo = "mb-url"; - rev = "aa13abfc6231076a53b8a9903c9804443960d589"; - sha256 = "17qlx1n2vxc5dhvjiw6nl9n74ansbra6hzazcxx0xrz5vx0ssh1i"; + rev = "23078f2e59808890268401f294d860ba51bc71d9"; + sha256 = "07b9w9vd22ma4s3qhplmg84sylihz920byyi9qa7dwj7b59d4avf"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/dd9a8ff6e094b061a7b9d790df1fd4086c5d0a9d/recipes/mb-url"; @@ -32015,12 +32494,12 @@ melpaBuild { pname = "meghanada"; ename = "meghanada"; - version = "1.0.9"; + version = "1.0.10"; src = fetchFromGitHub { owner = "mopemope"; repo = "meghanada-emacs"; - rev = "59568a4b32373d2ae7917673896369a922375a3e"; - sha256 = "12sswa3fyf0pgawfz6ak9xc97da3bnv1qng2apw42gwg5yc0qlq4"; + rev = "b8f18331683c32fb26b1be1a01466bd475373936"; + sha256 = "1cmnkszl5x7f1l3h7iwyqwznk3mvwllkkbz5n10359hb6gjdc326"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/4c75c69b2f00be9a93144f632738272c1e375785/recipes/meghanada"; @@ -32084,7 +32563,8 @@ license = lib.licenses.free; }; }) {}; - mentor = callPackage ({ cl-lib ? null + mentor = callPackage ({ async + , cl-lib ? null , fetchFromGitHub , fetchurl , lib @@ -32094,19 +32574,19 @@ melpaBuild { pname = "mentor"; ename = "mentor"; - version = "0.3.1"; + version = "0.3.4"; src = fetchFromGitHub { owner = "skangas"; repo = "mentor"; - rev = "2b6aea26fd998d6e6fdac5e6b768f9a1751e268a"; - sha256 = "1j6wf2z4816qj17bm45frhmxk1snsad3jvkjpasyg8pscf4kqi07"; + rev = "9415472470ff23ee9600d94123c51c455d63018d"; + sha256 = "05gfprcrh9p06arsni58nf60inlf1zbd18i678r9xd4q0v35k491"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/083de4bd25b6b013a31b9d5ecdffad139a4ba91e/recipes/mentor"; sha256 = "0nkf7f90m2qf11l97zwvb114yrpbqk1xxr2bh2nvbx8m1c8nad9s"; name = "recipe"; }; - packageRequires = [ cl-lib seq xml-rpc ]; + packageRequires = [ async cl-lib seq xml-rpc ]; meta = { homepage = "https://melpa.org/#/mentor"; license = lib.licenses.free; @@ -32119,16 +32599,16 @@ melpaBuild { pname = "merlin"; ename = "merlin"; - version = "3.1.0"; + version = "3.2.2"; src = fetchFromGitHub { owner = "ocaml"; repo = "merlin"; - rev = "a9149b6ec88b455e0e040da6a6c0ca325d052904"; - sha256 = "1f9aqlic7i9ib5lfsix731bkzh857djcgfsqggxy95xvxswm8xpr"; + rev = "8bcd99c8e5de984f04966674dcbb1c40c5d89045"; + sha256 = "1dd9mj8z6xpbvvgp489nxsscj8hcar4mx920d61cyxnxgz1phq5p"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/6440f81aed1fcddcaf7afeedb74520e605211986/recipes/merlin"; - sha256 = "1b6zdm68ds94mqiygifqi45k3czrmwvaki58jwxbbddn3ya7iinz"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/9338298a79b7f2d654df90b0f553aeed1428de13/recipes/merlin"; + sha256 = "0r4wc5ann6239bagj364yyzw4y3lcpkl5nnn0vmx4hgkwdg509fn"; name = "recipe"; }; packageRequires = []; @@ -32148,14 +32628,14 @@ ename = "merlin-eldoc"; version = "1.3"; src = fetchFromGitHub { - owner = "khady"; + owner = "Khady"; repo = "merlin-eldoc"; rev = "bbb1a10f2131c09a7f7f844d4da98efd77f927ae"; sha256 = "11gggay8srycpckclqvcmad6ym3lx2sxgj670z89br91jdwmkr2f"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/a7130ec893175323775e887babbcec7a1e324c01/recipes/merlin-eldoc"; - sha256 = "0r4997813yz81zvmdgvr0xcp9c321h55z39lajpj1plmrs3c7bry"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/35763febad20f29320d459394f810668db6c3353/recipes/merlin-eldoc"; + sha256 = "0bx383nxd97as0d362n1jn62k2rypxvxhcjasgwf0cr8vxr244fp"; name = "recipe"; }; packageRequires = [ emacs merlin ]; @@ -32274,7 +32754,7 @@ melpaBuild { pname = "mgmtconfig-mode"; ename = "mgmtconfig-mode"; - version = "0.0.15"; + version = "0.0.16"; src = fetchFromGitHub { owner = "purpleidea"; repo = "mgmt"; @@ -32477,12 +32957,12 @@ melpaBuild { pname = "minions"; ename = "minions"; - version = "0.3.0"; + version = "0.3.1"; src = fetchFromGitHub { owner = "tarsius"; repo = "minions"; - rev = "2f5e73e15d0021e7ba26cf09f1cd2734b018fb69"; - sha256 = "12acfjmk6n40k5mb2hy1izbk483y83bc3d54r76l750sbm3kpdar"; + rev = "d36d2445420460c81bcd4822d0bfcbafaec2c682"; + sha256 = "0q2y37zfxlbfvgdn70ikg3abp8vljna4ir9nyqlz1awmz5i1c43s"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/769a2167d7f6dfdbbfda058ddea036f80b97d230/recipes/minions"; @@ -32546,6 +33026,32 @@ license = lib.licenses.free; }; }) {}; + mixed-pitch = callPackage ({ emacs + , fetchFromGitLab + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "mixed-pitch"; + ename = "mixed-pitch"; + version = "1.0.0"; + src = fetchFromGitLab { + owner = "jabranham"; + repo = "mixed-pitch"; + rev = "f9bcdd9e30f8370ef0607d714b9411eddf8dd866"; + sha256 = "0wfwap23qdiagjp8c1p1mrzz4r3khb8j46sqy46mw20w7k5cn7lk"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/7d3c7af03e0bca3f834c32827cbcca29e29ef4db/recipes/mixed-pitch"; + sha256 = "1gda4jl946qlbf8rqm0mk493kwy8yqldr21cr583l6b6gl1nb4qf"; + name = "recipe"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://melpa.org/#/mixed-pitch"; + license = lib.licenses.free; + }; + }) {}; mmm-jinja2 = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -32572,30 +33078,6 @@ license = lib.licenses.free; }; }) {}; - mmm-mako = callPackage ({ fetchhg - , fetchurl - , lib - , melpaBuild - , mmm-mode }: - melpaBuild { - pname = "mmm-mako"; - version = "1.1"; - src = fetchhg { - url = "https://bitbucket.com/pjenvey/mmm-mako"; - rev = "5c9ff92137b5"; - sha256 = "0rpp748ym79sxccp9pyrwri14m7624zzb80srfgjfdpysrrs0jrr"; - }; - recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/5b7972602399f9df9139cff177e38653bb0f43ed/recipes/mmm-mako"; - sha256 = "0a4af5q9wxafrid8visp30cz6073ig0c961b78vmmgqrwvvxd3kn"; - name = "mmm-mako"; - }; - packageRequires = [ mmm-mode ]; - meta = { - homepage = "https://melpa.org/#/mmm-mako"; - license = lib.licenses.free; - }; - }) {}; mmt = callPackage ({ cl-lib ? null , emacs , fetchFromGitHub @@ -32755,6 +33237,31 @@ license = lib.licenses.free; }; }) {}; + mode-line-bell = callPackage ({ fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "mode-line-bell"; + ename = "mode-line-bell"; + version = "0.2"; + src = fetchFromGitHub { + owner = "purcell"; + repo = "mode-line-bell"; + rev = "4985ba42f5a19f46ddbf9b3622453a9694995ce5"; + sha256 = "13n3di05lgqfm4f8krn3p36yika5znhymp5vr2d747x54hqmgh7y"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/26f19808655b0242a1e9e5e5d41f7f794542e243/recipes/mode-line-bell"; + sha256 = "1ri771hb91b7hd203f8zp83h5hcndh8ccc1y8shhqmak6a6l04wk"; + name = "recipe"; + }; + packageRequires = []; + meta = { + homepage = "https://melpa.org/#/mode-line-bell"; + license = lib.licenses.free; + }; + }) {}; mode-line-debug = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -32914,12 +33421,12 @@ melpaBuild { pname = "moody"; ename = "moody"; - version = "0.3.0"; + version = "0.4.0"; src = fetchFromGitHub { owner = "tarsius"; repo = "moody"; - rev = "adf652f35cba1bb3d0f254e1905e2deeeb0fbdba"; - sha256 = "1zspq29n60r0kd9fy7d50zdypljigwcjb0qa5gkwiipnhpcnf9bp"; + rev = "f0cfdcff5946775a22e5b789899269669ba58ecd"; + sha256 = "19ahk775rd9rz8wv6kr5kdynblmyrgg0j6l7g9vs0rwn9ywdxqsn"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/63521fe6a1e540544a07231cc94144439e8caea7/recipes/moody"; @@ -33439,30 +33946,6 @@ license = lib.licenses.free; }; }) {}; - multi-project = callPackage ({ emacs - , fetchhg - , fetchurl - , lib - , melpaBuild }: - melpaBuild { - pname = "multi-project"; - version = "0.0.26"; - src = fetchhg { - url = "https://bitbucket.com/ellisvelo/multi-project"; - rev = "a6e7c1542c0b"; - sha256 = "1wh7xlas6chdliya847092j5rkngxxg1m9a98y2r782ywgyl7xv6"; - }; - recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/5b7972602399f9df9139cff177e38653bb0f43ed/recipes/multi-project"; - sha256 = "19dy2wl5ad1xldiznlw2vjvr9ja8h9wiv6igcggixq56fhngp40x"; - name = "multi-project"; - }; - packageRequires = [ emacs ]; - meta = { - homepage = "https://melpa.org/#/multi-project"; - license = lib.licenses.free; - }; - }) {}; multi-run = callPackage ({ emacs , fetchFromGitHub , fetchurl @@ -34257,12 +34740,12 @@ melpaBuild { pname = "nix-mode"; ename = "nix-mode"; - version = "1.2.2"; + version = "1.3.0"; src = fetchFromGitHub { owner = "NixOS"; repo = "nix-mode"; - rev = "cc23fd6a0e394aeeed603e2bfeb4a5ebc63db660"; - sha256 = "1vz3s2jx14nzy53f04d821n4f2s22ys5h9s7af6cnpynkwawyhhq"; + rev = "1389a6b25a22328f2a1333718882c7aa8a1f42c4"; + sha256 = "15n2prz07fsb6v0pyb1zkgamps6f6ynbfk8nv71g994k83x0178d"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/e1870d786dbfac3b14386c8030e06f2d13ab9da6/recipes/nix-mode"; @@ -34310,12 +34793,12 @@ melpaBuild { pname = "no-littering"; ename = "no-littering"; - version = "0.5.14"; + version = "1.0.0"; src = fetchFromGitHub { owner = "emacscollective"; repo = "no-littering"; - rev = "9bffebc0f4858a06ba374f1d48a7dffd3537b93e"; - sha256 = "02dhplz597r5qp1mljy1npx2kzg07l938d2xivwy9cd6jlkj35ya"; + rev = "0243e7485de736be9b7299c1e188d0cc9fdc3349"; + sha256 = "1llibjlfgf71ssc2yrqqkszvk5mmb1cdya9k1fgjdgvjg5hjsk8q"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/57a2fb9524df3fdfdc54c403112e12bd70888b23/recipes/no-littering"; @@ -34360,12 +34843,12 @@ melpaBuild { pname = "nodejs-repl"; ename = "nodejs-repl"; - version = "0.1.7"; + version = "0.2.1"; src = fetchFromGitHub { owner = "abicky"; repo = "nodejs-repl.el"; - rev = "d0b4e56488d16a695286a563a4ac27df7ea13100"; - sha256 = "1mc39wc7q7n5vs02cwj5r264bnwkllvi7i67r6zxc33abx2zmlwa"; + rev = "3f79caf542403ac80c7a1c3542f493f97a0c26ef"; + sha256 = "05ccv87rnw7fss3lib8m9sywjrj6n92fnd7mmhmjh27g2klqc83z"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/14f22f97416111fcb02e299ff2b20c44fb75f049/recipes/nodejs-repl"; @@ -34456,29 +34939,6 @@ license = lib.licenses.free; }; }) {}; - nose = callPackage ({ fetchhg - , fetchurl - , lib - , melpaBuild }: - melpaBuild { - pname = "nose"; - version = "0.1.1"; - src = fetchhg { - url = "https://bitbucket.com/durin42/nosemacs"; - rev = "194d7789bf79"; - sha256 = "07bhzddaxdjd591xmg59yd657a1is0q515291jd83mjsmgq258bm"; - }; - recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/855ea20024b606314f8590129259747cac0bcc97/recipes/nose"; - sha256 = "1xdqsxq06x2m9rcfn1qh89g0mz1rvzl246d3sfmciwcyl932x682"; - name = "nose"; - }; - packageRequires = []; - meta = { - homepage = "https://melpa.org/#/nose"; - license = lib.licenses.free; - }; - }) {}; notmuch = callPackage ({ fetchgit , fetchurl , lib @@ -34486,11 +34946,11 @@ melpaBuild { pname = "notmuch"; ename = "notmuch"; - version = "0.27"; + version = "0.28"; src = fetchgit { url = "https://git.notmuchmail.org/git/notmuch"; - rev = "c20a5eb80520a11cb697a45b0d9553c68e2199c8"; - sha256 = "13gpsgx5k26x8r38q56y01mfz2r1haxw76hc52mq8vypfl1gpw3x"; + rev = "e8cb6b2cd63c9ea8a011cb9f672baf04b4c14f7b"; + sha256 = "0lydra1i14l5kmhqa4n424hvsn65yf1vvvv8pkf0hl661i34dbkn"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/d05fbde3aabfec4efdd19a33fd2b1297905acb5a/recipes/notmuch"; @@ -34539,12 +34999,12 @@ melpaBuild { pname = "nov"; ename = "nov"; - version = "0.2.4"; + version = "0.2.7"; src = fetchFromGitHub { owner = "wasamasa"; repo = "nov.el"; - rev = "3be6e8cd1a6311b0782ca2aa3d9961bec6183632"; - sha256 = "1i7caa7s0c2qmf8bf9bi6sp7yavpnxlck6gm9fc0lkywrjfq0ixs"; + rev = "3bb7a4038f0c2100df671c9f1f33b785ed4ae296"; + sha256 = "1s2av1yrzsqslgjfiislf9bljdk0rxpyq2vrbyralfnj2wvgpk9m"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/cf543955ba2d5d0074fa2a5ba176f9415f6e006d/recipes/nov"; @@ -34634,6 +35094,32 @@ license = lib.licenses.free; }; }) {}; + ns-auto-titlebar = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "ns-auto-titlebar"; + ename = "ns-auto-titlebar"; + version = "0.3"; + src = fetchFromGitHub { + owner = "purcell"; + repo = "ns-auto-titlebar"; + rev = "b16092e8058af63ad2bc222f166b0aa3cb66bf9d"; + sha256 = "0m1ih8ca4702zrkhl3zdvwbci96wyjlxhpfx95w372k25rca87dq"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/d22ebb5ef16df0c56d6031cb1c7f312dca514482/recipes/ns-auto-titlebar"; + sha256 = "1wk4y2jwl65z18cv57m8zkcg31wp9by74z2zvccxzl7mwlhy7kqg"; + name = "recipe"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://melpa.org/#/ns-auto-titlebar"; + license = lib.licenses.free; + }; + }) {}; nsis-mode = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -35139,12 +35625,12 @@ melpaBuild { pname = "ocp-indent"; ename = "ocp-indent"; - version = "1.6.1"; + version = "1.7.0"; src = fetchFromGitHub { owner = "OCamlPro"; repo = "ocp-indent"; - rev = "5d83bc71d12c89850cb0fdff50d4830adb705b6c"; - sha256 = "0rcaa11mjqka032g94wgw9llqpflyk3ywr3lr6jyxbh1rjvnipnw"; + rev = "b15fd7585b42f89d745fad69ed1f2b70ecb8757d"; + sha256 = "0aszx9kxfbrlg0amsl3j3kdwn6n0a5fl33kvl8rgyv543p2jcx8f"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/e1af061328b15360ed25a232cc6b8fbce4a7b098/recipes/ocp-indent"; @@ -36121,14 +36607,14 @@ ename = "org-index"; version = "5.9.3"; src = fetchFromGitHub { - owner = "marcihm"; + owner = "marcIhm"; repo = "org-index"; rev = "d073e071ab5e96af6691ccf9b20c975e7a0c8e16"; sha256 = "15r9qxbkz2s82qj7fbdzcln4w3qipq6lgdfyrgmzi9f73v5l0c8f"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/54946e733901986304f7a7a5139b2818ebf97eb3/recipes/org-index"; - sha256 = "1dp52xqrhby2xyi6p2d0ggp5irqsqwicp62ndg5wszyd33clxab5"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/35763febad20f29320d459394f810668db6c3353/recipes/org-index"; + sha256 = "092q92hwvknwm3v2shp8dm59qdamfivx9z9v23msysy7x2mhg98f"; name = "recipe"; }; packageRequires = [ emacs ]; @@ -36149,12 +36635,12 @@ melpaBuild { pname = "org-jira"; ename = "org-jira"; - version = "4.0.2"; + version = "4.0.3"; src = fetchFromGitHub { owner = "ahungry"; repo = "org-jira"; - rev = "152ba45cded217e9f9f24a195cf9e078630cea89"; - sha256 = "0ivksfm6bwf9dxm0k56bfnz4v82cz0gd13f9cljvrpkxjxqvn95z"; + rev = "45f3e8f19f511fae2012828a99b8e3254708531c"; + sha256 = "1s42bvmg04vf5fl1y9pzga63xmbk72s3ydgnqhq88xg7cj9siw0h"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/e0a2fae6eecb6b4b36fe97ad99691e2c5456586f/recipes/org-jira"; @@ -36175,12 +36661,12 @@ melpaBuild { pname = "org-journal"; ename = "org-journal"; - version = "1.14.3"; + version = "1.15.0"; src = fetchFromGitHub { owner = "bastibe"; repo = "org-journal"; - rev = "9fc8eaf9279563f79d9ba7ff1d381534cfa57ec3"; - sha256 = "0xprwdzxf2y61nxfz3wf5zl4zfk3p0vbm646kkx3fmch9klkxlzl"; + rev = "3ae2e7d7e372dee08143282a9137bf4dfc946645"; + sha256 = "1sqn68l1rlyypz3839hghrpwzcdxvqwr50dbfad5827garflg3m4"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/7fabdb05de9b8ec18a3a566f99688b50443b6b44/recipes/org-journal"; @@ -36203,12 +36689,12 @@ melpaBuild { pname = "org-kanban"; ename = "org-kanban"; - version = "0.4.8"; + version = "0.4.9"; src = fetchFromGitHub { owner = "gizmomogwai"; repo = "org-kanban"; - rev = "2fc1ed815f7155df1169f68b19c1ad847e620fee"; - sha256 = "141j9z5a31hpxj073vf0yyhmdw3j89ywqac1a97c2k4967ps0nw1"; + rev = "a1994228c669ba23f20310d03d2dc58a2a3be6e6"; + sha256 = "0c6w9zh0l7x8gmmw64daswh1a8r23d0hzdz9piy1xz850xhkvp0f"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/a9f3a10c126fa43a6fa60ee7f8e50c7a9661dbc1/recipes/org-kanban"; @@ -36285,12 +36771,12 @@ melpaBuild { pname = "org-make-toc"; ename = "org-make-toc"; - version = "0.2"; + version = "0.3"; src = fetchFromGitHub { owner = "alphapapa"; repo = "org-make-toc"; - rev = "c27e3600473100daa3007fb134cd3fe13e821d90"; - sha256 = "0078qpimkx6ps1cnyb1kaxiz4k93ppm7axsbrm18qic6mvp6i2nc"; + rev = "f1a51017b0f85e0cb9ae7d0d8240f2115f57886c"; + sha256 = "0syhj8q4pv33xgl5qa6x27yhwqvfhffw5xqp819hj4qs1ddlc7j5"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/df87749128bcfd27ca93a65084a2e88cd9ed5c3f/recipes/org-make-toc"; @@ -36394,12 +36880,12 @@ melpaBuild { pname = "org-noter"; ename = "org-noter"; - version = "1.2.0"; + version = "1.3.0"; src = fetchFromGitHub { owner = "weirdNox"; repo = "org-noter"; - rev = "eec8f3a845fc08e7d3eda2d894db3f7d41b6649c"; - sha256 = "10kx3jlzvzig201zvklw0ndwxzhdcbshlkz4nrfl8fgz32ka0x8b"; + rev = "8fb007c329fee8cceca97338ae0e88aaafcb8535"; + sha256 = "0qcdw1px07ggnp74gb3hibd69cq8np9bdpcpvlkm5k32qxhsnwjy"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/4a2bc0d95dc2744277d6acbba1f7483b4c14d75c/recipes/org-noter"; @@ -36764,12 +37250,12 @@ melpaBuild { pname = "org-rich-yank"; ename = "org-rich-yank"; - version = "0.2.0"; + version = "0.2.1"; src = fetchFromGitHub { owner = "unhammer"; repo = "org-rich-yank"; - rev = "f6bbf973bef7063c6ab475db25a630bc7ee317da"; - sha256 = "1by1ymypwlnnnh8fx4ndcwsrif83xyx56mlvmv2lx6wmyliv0py9"; + rev = "d2f350c5296cf05d6c84b02762ba44f09a02b4e3"; + sha256 = "0gxb0fnh5gxjmld0hnk5hli0cvdd8gjd27m30bk2b80kwldxlq1z"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/1261823d88459b6ac42d6c55c157a326173663df/recipes/org-rich-yank"; @@ -36782,6 +37268,32 @@ license = lib.licenses.free; }; }) {}; + org-snooze = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "org-snooze"; + ename = "org-snooze"; + version = "0.1.0"; + src = fetchFromGitHub { + owner = "xueeinstein"; + repo = "org-snooze.el"; + rev = "6d30b0dcdfe9538e4400e49046291b7d07274164"; + sha256 = "0qxk6gldgcc0fbraa0l85nk4rpvn5b5nbgzkh1p8d2bkjcxjcm4g"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/fd04816fb53fe01fa9924ec928c1dd41f2219d6a/recipes/org-snooze"; + sha256 = "00iwjj249vzqnfvbmlzrjig1sfhzbpv9kcpz95i3ir1w1qhw5119"; + name = "recipe"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://melpa.org/#/org-snooze"; + license = lib.licenses.free; + }; + }) {}; org-static-blog = callPackage ({ emacs , fetchFromGitHub , fetchurl @@ -36820,12 +37332,12 @@ melpaBuild { pname = "org-super-agenda"; ename = "org-super-agenda"; - version = "1.0.1"; + version = "1.0.3"; src = fetchFromGitHub { owner = "alphapapa"; repo = "org-super-agenda"; - rev = "9dca3d88daf4ad58c5913846c968bbb9a37f95aa"; - sha256 = "0infnwhssnaksmha4731cn30vm83im0lyq71r5ns5sdgwx32sxhh"; + rev = "f2831038b4964b7873246e96508d560e89b55055"; + sha256 = "14ql68f42qsqna2v9cjqc9d83hvcy7irmnw5z85zbhih9png9hfh"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/fd27b2df7594a867529de4b84c8107f82dabe2e9/recipes/org-super-agenda"; @@ -36999,6 +37511,7 @@ }; }) {}; org-timeline = callPackage ({ dash + , emacs , fetchFromGitHub , fetchurl , lib @@ -37006,19 +37519,19 @@ melpaBuild { pname = "org-timeline"; ename = "org-timeline"; - version = "0.1.3"; + version = "0.2.0"; src = fetchFromGitHub { owner = "Fuco1"; repo = "org-timeline"; - rev = "5063120b688c60320aa19fa67787613929ca7b1d"; - sha256 = "0ih55nq2vhzk6n07ds1fgil72jq5fc9rjkqh2n32ch8cafzv2ma2"; + rev = "5d1adbbadf3a9ad4a4a70dbf4b7199a6f9992b59"; + sha256 = "1bvbq0xg0lp42pvl8a77f902yhfr5y7zy20jzpfsr94lyryh1p0b"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/298bd714f6cefd83d594b0eea731a01fb2faf1ad/recipes/org-timeline"; sha256 = "0zlhjzjc7jwqh6wcys17hraz76n2hnjwffis02x71maclrf2cfdd"; name = "recipe"; }; - packageRequires = [ dash ]; + packageRequires = [ dash emacs ]; meta = { homepage = "https://melpa.org/#/org-timeline"; license = lib.licenses.free; @@ -37191,23 +37704,24 @@ , lib , melpaBuild , org + , request , s }: melpaBuild { pname = "org-web-tools"; ename = "org-web-tools"; - version = "1.0"; + version = "1.1.1"; src = fetchFromGitHub { owner = "alphapapa"; repo = "org-web-tools"; - rev = "7ad832950cb17890a4da751ae6d6817a7428f342"; - sha256 = "0kak9h5ny00d39gnwspv53nadnag01brw2fq9zk5wpfc91h9bjng"; + rev = "ca87319cd42eaa2eb02213e81dec19b7bd2918f7"; + sha256 = "0v4qad54r0z7dr7kg5lpfdsazi44qvrbybx9aciyl4w9grfajphb"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/f082bfb480649d21f586b7eb331c19d57e7a84cf/recipes/org-web-tools"; sha256 = "19zpspap85fjqg5a20ps34rcigb0ws986pj6dzd7xik8s6ia29s7"; name = "recipe"; }; - packageRequires = [ dash emacs esxml org s ]; + packageRequires = [ dash emacs esxml org request s ]; meta = { homepage = "https://melpa.org/#/org-web-tools"; license = lib.licenses.free; @@ -37378,12 +37892,12 @@ melpaBuild { pname = "orgit"; ename = "orgit"; - version = "1.5.1"; + version = "1.5.3"; src = fetchFromGitHub { owner = "magit"; repo = "orgit"; - rev = "d909f92d3b1b42184143fd5e6d4c6a2762477ab7"; - sha256 = "1jdc874bxkpbfpllak3vmfsn82p930s565bzff341vzv7aw2528c"; + rev = "ea79e0567ae65fc922fcb05da0f7f4af8eae1973"; + sha256 = "1ywavzki510rslsgfm0cnn3mlh644p61ha2nfb715xhkg7cd3j9g"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/73b5f7c44c90540e4cbdc003d9881f0ac22cc7bc/recipes/orgit"; @@ -37603,6 +38117,32 @@ license = lib.licenses.free; }; }) {}; + outline-minor-faces = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "outline-minor-faces"; + ename = "outline-minor-faces"; + version = "0.1.1"; + src = fetchFromGitHub { + owner = "tarsius"; + repo = "outline-minor-faces"; + rev = "8788f3e6f922f54b4eccfb80e4c246203a7e81c3"; + sha256 = "1ms4mgh8jlvyhdsx5166jqfjdx6rqfbhaqzfrzplgcn6v37097l4"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/f252e45e8bd6e8af1267755d108f378a974ddaf1/recipes/outline-minor-faces"; + sha256 = "1728imdqmmfqw5f67w8xsailn2b09y4xgdr769pd6kx8z6lsi8zb"; + name = "recipe"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://melpa.org/#/outline-minor-faces"; + license = lib.licenses.free; + }; + }) {}; outlook = callPackage ({ emacs , fetchFromGitHub , fetchurl @@ -37654,26 +38194,28 @@ license = lib.licenses.free; }; }) {}; - outshine = callPackage ({ fetchFromGitHub + outshine = callPackage ({ cl-lib ? null + , fetchFromGitHub , fetchurl , lib - , melpaBuild }: + , melpaBuild + , outorg }: melpaBuild { pname = "outshine"; ename = "outshine"; - version = "2.0"; + version = "3.0"; src = fetchFromGitHub { owner = "alphapapa"; repo = "outshine"; - rev = "2313595aa2d72ec35e5bee31d1513752eafac01c"; - sha256 = "1jw09qh4vcp3d4qbp9bi4a4kxy88jrxfskh3r1pdbcjlci4wfhjm"; + rev = "d1e37053f186f9a090573b599fc1c0e88db524ae"; + sha256 = "0r3wj9gzy2m4d9i704z29zh5mps55rxmfavdpwjd1sbrrqwpl4jk"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/8edf78a0ecd2ff8e6e066b80751a31e11a068c3f/recipes/outshine"; sha256 = "1qqmvs17hq5s047nqplg4sa09xg5ck6zwqyg91xmbh71bx80v28v"; name = "recipe"; }; - packageRequires = []; + packageRequires = [ cl-lib outorg ]; meta = { homepage = "https://melpa.org/#/outshine"; license = lib.licenses.free; @@ -37924,6 +38466,33 @@ license = lib.licenses.free; }; }) {}; + ox-slimhtml = callPackage ({ cl-lib ? null + , emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "ox-slimhtml"; + ename = "ox-slimhtml"; + version = "0.4.5"; + src = fetchFromGitHub { + owner = "balddotcat"; + repo = "ox-slimhtml"; + rev = "a764ef64235845e4f5cfd73244d6cf1e7fee903b"; + sha256 = "14h0kks7i2k53fwbsqb4giafacm58inppqpr5mbj904cy146g29f"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/6fae8e3c4abd37a651d4cbdb337a74f1a7c7366a/recipes/ox-slimhtml"; + sha256 = "16jrw8n26iy69ibr29bp3pqp4lm66alihks37qipd2g5grqqfdnd"; + name = "recipe"; + }; + packageRequires = [ cl-lib emacs ]; + meta = { + homepage = "https://melpa.org/#/ox-slimhtml"; + license = lib.licenses.free; + }; + }) {}; ox-twbs = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -37949,6 +38518,33 @@ license = lib.licenses.free; }; }) {}; + ox-wk = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild + , org }: + melpaBuild { + pname = "ox-wk"; + ename = "ox-wk"; + version = "0.2.0"; + src = fetchFromGitHub { + owner = "w-vi"; + repo = "ox-wk.el"; + rev = "9fc37e7e2f789b0ba07cb117ea1e1dcd14a2fd83"; + sha256 = "00wsx21nmnvci2wfvxaci1kdxplavi2a4dw8ahvl7ncr3b60219f"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/0947993df2d9bee493c2c25760f1ac5bcc1136ac/recipes/ox-wk"; + sha256 = "0rb4xkkqb65ly01lb1gl3gyz4yj9hzv4ydbdzsbvmpj0hrdw5nv3"; + name = "recipe"; + }; + packageRequires = [ emacs org ]; + meta = { + homepage = "https://melpa.org/#/ox-wk"; + license = lib.licenses.free; + }; + }) {}; pabbrev = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -37974,6 +38570,59 @@ license = lib.licenses.free; }; }) {}; + pacfiles-mode = callPackage ({ cl-lib ? null + , emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "pacfiles-mode"; + ename = "pacfiles-mode"; + version = "1.0"; + src = fetchFromGitHub { + owner = "UndeadKernel"; + repo = "pacfiles-mode"; + rev = "180eea7ba33dc4fa5c116b01649c4e9ba3f43276"; + sha256 = "07ki2dz459nv4jshmgk2gq1b8c0x3iqy3nf9rwv0w3b3qm70gn3f"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/bec20443188d9218235c4b31840544a7b1e0690d/recipes/pacfiles-mode"; + sha256 = "08yc3w7zvckg8s1g707hvbbkvi2k52jrk2iwlj0sk22ih3q3yaa9"; + name = "recipe"; + }; + packageRequires = [ cl-lib emacs ]; + meta = { + homepage = "https://melpa.org/#/pacfiles-mode"; + license = lib.licenses.free; + }; + }) {}; + pack = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "pack"; + ename = "pack"; + version = "0.1"; + src = fetchFromGitHub { + owner = "10sr"; + repo = "pack-el"; + rev = "ef811927254b0fea170e2f2ddb94f6dd7c356dde"; + sha256 = "0bza802nzncmpnnzzrfqk4b8svbmgjnhrl28mvagi42wci19qf0x"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/96f55c1f15ca24134da378a1ea31f7bb31c84ea9/recipes/pack"; + sha256 = "0lwdhfrpqwpqqg3yhcyj11jv2mm8k9k54qdxlhdi8sxj1fdxmanw"; + name = "recipe"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://melpa.org/#/pack"; + license = lib.licenses.free; + }; + }) {}; package-build = callPackage ({ cl-lib ? null , fetchFromGitHub , fetchurl @@ -38009,16 +38658,16 @@ melpaBuild { pname = "package-lint"; ename = "package-lint"; - version = "0.5"; + version = "0.7"; src = fetchFromGitHub { owner = "purcell"; repo = "package-lint"; - rev = "f3ad224da996126873ee75484caafa874476ace6"; - sha256 = "03hgzm1d8srimkp9qpb3xi6sh8rvkdwkv7mr005fzhax6awd5a2h"; + rev = "4c90df4919f7b96921a939b3bd88bedfd08d041e"; + sha256 = "0nhznvsl3l3v7w5x2afw0ay31r6jrdvgr1ys9mhcmd1fsk57bj2r"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/9744d8521b4ac5aeb1f28229c0897af7260c6f78/recipes/package-lint"; - sha256 = "0w7nkj4yz5yqmhr3mr7kxa6aqqfs75m3l2578s39940a5sdzirwy"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/dbfb0250a58b2e31c32ff1496ed66a3c5439bd67/recipes/package-lint"; + sha256 = "05akg9cgcqbgja966iv2j878y14d5wvky6m9clkfbw5wyg66xpr0"; name = "recipe"; }; packageRequires = [ cl-lib emacs ]; @@ -38027,6 +38676,33 @@ license = lib.licenses.free; }; }) {}; + package-lint-flymake = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild + , package-lint }: + melpaBuild { + pname = "package-lint-flymake"; + ename = "package-lint-flymake"; + version = "0.7"; + src = fetchFromGitHub { + owner = "purcell"; + repo = "package-lint"; + rev = "83f34f747a13633c92210e6110e3c5377397761c"; + sha256 = "0mljhvc03a8fj3zn5rz8i3mfcb8vd4xfaxmb7m7h9gr8ap3lwz7g"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/dbfb0250a58b2e31c32ff1496ed66a3c5439bd67/recipes/package-lint-flymake"; + sha256 = "076v3xvbxym7dwwl95j8kynj9kj2xw3gzq6qv6qkm0xls7df4yjz"; + name = "recipe"; + }; + packageRequires = [ emacs package-lint ]; + meta = { + homepage = "https://melpa.org/#/package-lint-flymake"; + license = lib.licenses.free; + }; + }) {}; package-plus = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -38246,12 +38922,12 @@ melpaBuild { pname = "pandoc-mode"; ename = "pandoc-mode"; - version = "2.25"; + version = "2.26"; src = fetchFromGitHub { owner = "joostkremers"; repo = "pandoc-mode"; - rev = "436a5847df3326436ec546dbb360d23c8e0e2030"; - sha256 = "0qvfhgwvzfchzg2ap62f3giw0fnbapb2w67j3allpcra34qpnszd"; + rev = "d594ce399fc75eb553a6d8572713b827f744d95b"; + sha256 = "1n3rbjvaqf6gzqgqsfcn989cwhi2kva4dr9xy0vdhqxikwm5gkaq"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/4e39cd8e8b4f61c04fa967def6a653bb22f45f5b/recipes/pandoc-mode"; @@ -38446,6 +39122,32 @@ license = lib.licenses.free; }; }) {}; + parrot = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "parrot"; + ename = "parrot"; + version = "1.0.1"; + src = fetchFromGitHub { + owner = "dp12"; + repo = "parrot"; + rev = "e9fe686408214884b20c65284a6a595e1c755794"; + sha256 = "079k4j0lcaj0lff1llp29bj5ah2b59byw9lw3jjw9wkl9px87r0m"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/b1b393ffb9b7691e8fc99bee5fc676463038a68d/recipes/parrot"; + sha256 = "0m67b80vc3qivcxs4w6fpzdg6h9d8s75251rlhnbc0xp7271zgnk"; + name = "recipe"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://melpa.org/#/parrot"; + license = lib.licenses.free; + }; + }) {}; parsebib = callPackage ({ emacs , fetchFromGitHub , fetchurl @@ -38563,12 +39265,12 @@ melpaBuild { pname = "passmm"; ename = "passmm"; - version = "0.3.1"; + version = "0.4.1"; src = fetchFromGitHub { owner = "pjones"; repo = "passmm"; - rev = "2e0cd4e8ef7e6017dbc295664c925d32d6fdc688"; - sha256 = "0f2nkmbphmrnfkx4yw7w0ch33kpdzqjalah2pf6nj0rm629b1dad"; + rev = "b25a92048c788a8477cc5ffe14c0c4a4df19d79a"; + sha256 = "1jg2rs010fmw10ld0bfl6x7af3v9yqfy9ga5ixmam3qpilc8c4fw"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/8ae2a1e10375f9cd55d19502c9740b2737eba209/recipes/passmm"; @@ -38742,6 +39444,32 @@ license = lib.licenses.free; }; }) {}; + path-helper = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "path-helper"; + ename = "path-helper"; + version = "1.1"; + src = fetchFromGitHub { + owner = "arouanet"; + repo = "path-helper"; + rev = "34538affb3f341b3c56a875bb094ddb2b859a8ef"; + sha256 = "0qzsalbxksb44f0x7fndl2qyp1yf575qs56skfzmpnpa82dck88g"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/a70b1a41e45d215be27d392429dcd4f82904295f/recipes/path-helper"; + sha256 = "0fff3l88jgflqpxlcfxfyp2prc2ichajvm7c8i19qhvw70sbasny"; + name = "recipe"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://melpa.org/#/path-helper"; + license = lib.licenses.free; + }; + }) {}; pathify = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -38977,30 +39705,6 @@ license = lib.licenses.free; }; }) {}; - per-buffer-theme = callPackage ({ cl-lib ? null - , fetchhg - , fetchurl - , lib - , melpaBuild }: - melpaBuild { - pname = "per-buffer-theme"; - version = "1.5"; - src = fetchhg { - url = "https://bitbucket.com/inigoserna/per-buffer-theme.el"; - rev = "9e6200da91b3"; - sha256 = "0w02l91x624cgzdg33a9spgcwy12m607dsfnr1xbc1fi08np4sd1"; - }; - recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/5b7972602399f9df9139cff177e38653bb0f43ed/recipes/per-buffer-theme"; - sha256 = "1czcaybpfmx4mwff7hs07iayyvgvlhifkickccap6kpd0cp4n6hn"; - name = "per-buffer-theme"; - }; - packageRequires = [ cl-lib ]; - meta = { - homepage = "https://melpa.org/#/per-buffer-theme"; - license = lib.licenses.free; - }; - }) {}; persistent-scratch = callPackage ({ emacs , fetchFromGitHub , fetchurl @@ -39009,12 +39713,12 @@ melpaBuild { pname = "persistent-scratch"; ename = "persistent-scratch"; - version = "0.3.1"; + version = "0.3.2"; src = fetchFromGitHub { owner = "Fanael"; repo = "persistent-scratch"; - rev = "0bfd717d28ce9e262741b06341c61306602c7711"; - sha256 = "1fq3m3p81rrvv1yp0cxfznphx7gava11sn09x706lmm1js62jnip"; + rev = "2e6678a837db85e68da713bbd4772c7fb88d83d4"; + sha256 = "0ipr2cnw5b26q560c82mm6bmkx9clw1mrndycs2qz894y53dzlmk"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/f1e32702bfa15490b692d5db59e22d2c07b292d1/recipes/persistent-scratch"; @@ -39380,12 +40084,12 @@ melpaBuild { pname = "php-mode"; ename = "php-mode"; - version = "1.19.1"; + version = "1.20.0"; src = fetchFromGitHub { owner = "emacs-php"; repo = "php-mode"; - rev = "aacb133b3d89ed0da8d936a162f49afc2aa5dfd4"; - sha256 = "1al6l37377psiykk6syyyc3sfifr7x3mqyb2rms5kqqkff53x1yx"; + rev = "a459051036d7c0bedcbf54b904e30d4bc7179ad8"; + sha256 = "16yxwrvyaq0a86i9izrk5bdmxn4gsc2sh2abg038hzg3a1a2dz87"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/2e41dc09413eaa93704e7d9f55bd2bd01f658806/recipes/php-mode"; @@ -39400,26 +40104,28 @@ }) {}; php-runtime = callPackage ({ cl-lib ? null , emacs + , f , fetchFromGitHub , fetchurl , lib - , melpaBuild }: + , melpaBuild + , s }: melpaBuild { pname = "php-runtime"; ename = "php-runtime"; - version = "0.1.0"; + version = "0.2.0"; src = fetchFromGitHub { owner = "emacs-php"; repo = "php-runtime.el"; - rev = "fa4312863245511462b75cb31df2f8558288f4df"; - sha256 = "1glwy0cgnn0z4rnd45pqy0bmyaddhxfjlj778hz7ghy40h9kqbdn"; + rev = "017e0e70f07d6b25e37d5c5f4d271a914b677631"; + sha256 = "1c74xd6p3hfanpd4920agvnar9rjbyvz33kwrzw9vywzrs68ncvh"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/615c9ac208d8c20082a8ac83e49e93d99e2cbc89/recipes/php-runtime"; sha256 = "0dvnwajrjsgyqzglzpkx9vwx3f55mrag6dsbdjqc9vvpvxhmgfwb"; name = "recipe"; }; - packageRequires = [ cl-lib emacs ]; + packageRequires = [ cl-lib emacs f s ]; meta = { homepage = "https://melpa.org/#/php-runtime"; license = lib.licenses.free; @@ -39587,6 +40293,32 @@ license = lib.licenses.free; }; }) {}; + pine-script-mode = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "pine-script-mode"; + ename = "pine-script-mode"; + version = "1.0.0"; + src = fetchFromGitHub { + owner = "EricCrosson"; + repo = "pine-script-mode"; + rev = "9176de41a5c80f7b56e41fb7a9ba7350885a2512"; + sha256 = "1kxdrqa420zbl73jlakilvn1ja83vfqnhqdirgfvp23z4xhcddq6"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/287b781147fe41089fa8c76570bc30539e43e5bc/recipes/pine-script-mode"; + sha256 = "0ihijbcx7m4vhxr1fnfkwjdk6ka1mqzxb8z164yh8yn73qs0saiq"; + name = "recipe"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://melpa.org/#/pine-script-mode"; + license = lib.licenses.free; + }; + }) {}; pinyin-search = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -40036,6 +40768,7 @@ , emacs , fetchFromGitHub , fetchurl + , ht , kv , lib , melpaBuild @@ -40047,12 +40780,12 @@ melpaBuild { pname = "pocket-reader"; ename = "pocket-reader"; - version = "0.1.1"; + version = "0.2"; src = fetchFromGitHub { owner = "alphapapa"; repo = "pocket-reader.el"; - rev = "e65a7e7529ece4fb7a738c062e73d5c07ace9574"; - sha256 = "0bqxsvhmwvf0gpjmmh7pmzyw4lpcarj2prm52bgncch8x1f0gvnp"; + rev = "a7f080ec3e9522f942166de61b24a375b8f1c2bb"; + sha256 = "0l7dln7qcrgzm73vk7jp8wr2kibg18973xmdzyyc162hdnlbrpb0"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/835a7bf2f72987183e9d15ada7ae747fb5715c11/recipes/pocket-reader"; @@ -40062,6 +40795,7 @@ packageRequires = [ dash emacs + ht kv org-web-tools ov @@ -40099,6 +40833,173 @@ license = lib.licenses.free; }; }) {}; + poly-R = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild + , poly-markdown + , poly-noweb + , polymode }: + melpaBuild { + pname = "poly-R"; + ename = "poly-R"; + version = "0.1.5"; + src = fetchFromGitHub { + owner = "polymode"; + repo = "poly-R"; + rev = "876e1324ce3bc2b6e3b84e03d08d4b5cd06018c6"; + sha256 = "0xjlrdwp7vhk05lq9hkbm8gqda5valxc6siiydrwmpa79n8dbqxd"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/3058351c4500fdcbe7f40b4c96ac8d6de9bbeb1d/recipes/poly-R"; + sha256 = "1v2was6pdynwm22b4n2hkwyrr0c0iir9kp1wz4hjab8haqxz68ii"; + name = "recipe"; + }; + packageRequires = [ emacs poly-markdown poly-noweb polymode ]; + meta = { + homepage = "https://melpa.org/#/poly-R"; + license = lib.licenses.free; + }; + }) {}; + poly-ansible = callPackage ({ ansible-doc + , fetchFromGitLab + , fetchurl + , jinja2-mode + , lib + , melpaBuild + , polymode + , yaml-mode }: + melpaBuild { + pname = "poly-ansible"; + ename = "poly-ansible"; + version = "0.2.1"; + src = fetchFromGitLab { + owner = "mavit"; + repo = "poly-ansible"; + rev = "01c9ec1d8a933fa0b2711940d29331d58c27d2a7"; + sha256 = "02ff0df8bn5cwvnpc2862wsii2xvjh0waymgiybm8j829x1awjp9"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/6d8beef5daa1804f68c30138cb03b5085a282c34/recipes/poly-ansible"; + sha256 = "158z3nbqgrh71myyp4l263lw1gn4iiwxv8pl7fdlyp80hz5zs60y"; + name = "recipe"; + }; + packageRequires = [ ansible-doc jinja2-mode polymode yaml-mode ]; + meta = { + homepage = "https://melpa.org/#/poly-ansible"; + license = lib.licenses.free; + }; + }) {}; + poly-erb = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild + , polymode }: + melpaBuild { + pname = "poly-erb"; + ename = "poly-erb"; + version = "0.1.5"; + src = fetchFromGitHub { + owner = "polymode"; + repo = "poly-erb"; + rev = "aa8a40a1bb1035144b1cbc053d87305f70a442a7"; + sha256 = "0zsvywh9xs9wb6x70b7j3cpavbx7846p772qlqd141y2lcp1jss9"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/3058351c4500fdcbe7f40b4c96ac8d6de9bbeb1d/recipes/poly-erb"; + sha256 = "01c1z2jll497k1y8835pp54n121y0gkyz1pdxcdjjqv7ia8jwfyy"; + name = "recipe"; + }; + packageRequires = [ emacs polymode ]; + meta = { + homepage = "https://melpa.org/#/poly-erb"; + license = lib.licenses.free; + }; + }) {}; + poly-markdown = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , markdown-mode + , melpaBuild + , polymode }: + melpaBuild { + pname = "poly-markdown"; + ename = "poly-markdown"; + version = "0.1.5"; + src = fetchFromGitHub { + owner = "polymode"; + repo = "poly-markdown"; + rev = "bf41bd2f30066573f562c674d38b9e42a43ed016"; + sha256 = "0w2xy1cksik332qs1i26imxiyd89vbfy3ff7di4b3l14cxz6ybra"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/3058351c4500fdcbe7f40b4c96ac8d6de9bbeb1d/recipes/poly-markdown"; + sha256 = "0pxai5x2vz6j742s3bpcy82dxja6441fsgclhz1hbv2ykazbm141"; + name = "recipe"; + }; + packageRequires = [ emacs markdown-mode polymode ]; + meta = { + homepage = "https://melpa.org/#/poly-markdown"; + license = lib.licenses.free; + }; + }) {}; + poly-noweb = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild + , polymode }: + melpaBuild { + pname = "poly-noweb"; + ename = "poly-noweb"; + version = "0.1.5"; + src = fetchFromGitHub { + owner = "polymode"; + repo = "poly-noweb"; + rev = "f27f09184573c579bfcd164ba995e8b5bfb84954"; + sha256 = "096a2bm1i2ngyv4gdy0gz8bnwmgr50b4chvryxg2fh840p07540f"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/3058351c4500fdcbe7f40b4c96ac8d6de9bbeb1d/recipes/poly-noweb"; + sha256 = "1692js29wdjpxvcbcaxysbsq6pxdqr38frqf88ksldlz35cmy62b"; + name = "recipe"; + }; + packageRequires = [ emacs polymode ]; + meta = { + homepage = "https://melpa.org/#/poly-noweb"; + license = lib.licenses.free; + }; + }) {}; + poly-org = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild + , polymode }: + melpaBuild { + pname = "poly-org"; + ename = "poly-org"; + version = "0.1.5"; + src = fetchFromGitHub { + owner = "polymode"; + repo = "poly-org"; + rev = "2465f1d252940f13555252ef7b8e4d02ee3956ce"; + sha256 = "1xw6h7qcva4529vs8v13gsw5zdcgc1sky7i3vbhcchxkm3d4ffdb"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/3058351c4500fdcbe7f40b4c96ac8d6de9bbeb1d/recipes/poly-org"; + sha256 = "1xrhdjmz3p5d3sgbfpmf6wksa1cpxqhy1wg17b5x8ah4w4yhpdca"; + name = "recipe"; + }; + packageRequires = [ emacs polymode ]; + meta = { + homepage = "https://melpa.org/#/poly-org"; + license = lib.licenses.free; + }; + }) {}; poly-ruby = callPackage ({ emacs , fetchFromGitHub , fetchurl @@ -40126,6 +41027,34 @@ license = lib.licenses.free; }; }) {}; + poly-slim = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild + , polymode + , slim-mode }: + melpaBuild { + pname = "poly-slim"; + ename = "poly-slim"; + version = "0.1.5"; + src = fetchFromGitHub { + owner = "polymode"; + repo = "poly-slim"; + rev = "2216d7edf315ab8df1e01c2a826041bcdb8bcd01"; + sha256 = "0wcfacd5wpi52glfz4snxh8ghff2qlv8d1jwj890297ikmk7mn1g"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/3058351c4500fdcbe7f40b4c96ac8d6de9bbeb1d/recipes/poly-slim"; + sha256 = "15nh0d8y79rwc24akxfpf346jypadfgjjn6vlgaj6xjnj7wsp7ax"; + name = "recipe"; + }; + packageRequires = [ emacs polymode slim-mode ]; + meta = { + homepage = "https://melpa.org/#/poly-slim"; + license = lib.licenses.free; + }; + }) {}; polymode = callPackage ({ emacs , fetchFromGitHub , fetchurl @@ -40134,12 +41063,12 @@ melpaBuild { pname = "polymode"; ename = "polymode"; - version = "0.1.2"; + version = "0.1.5"; src = fetchFromGitHub { owner = "polymode"; repo = "polymode"; - rev = "a99a0e494c52ccdf83a58c394c701a114ba44bf3"; - sha256 = "075vap5i6g9zim4jpls1c34mzjwx6f8g410hnz4llmghf972xj68"; + rev = "06c4329fdf765b4f9072e20906c8737a19e6646b"; + sha256 = "0wwphs54jx48a3ca6x1qaz56j3j9bg4mv8g2akkffrzbdcb8sbc7"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/3058351c4500fdcbe7f40b4c96ac8d6de9bbeb1d/recipes/polymode"; @@ -40213,12 +41142,12 @@ melpaBuild { pname = "ponylang-mode"; ename = "ponylang-mode"; - version = "0.0.9"; + version = "0.0.11"; src = fetchFromGitHub { owner = "SeanTAllen"; repo = "ponylang-mode"; - rev = "38786ba7f9f5709d511e27b85028b2dc6aff532d"; - sha256 = "0cr22scxk3y2qdlhhfvwf4fkk2ql1c0r73fxzhw64dhwm4q01pih"; + rev = "963abdcdb398b71fb13a4f7d2ffde23eb20e2a23"; + sha256 = "1h0y6x4h7higwdq569h2lk0iddd23c3csqjk7y5phvc0lq812xs0"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/7d51adec3c6519d6ffe9b3f7f8a86b4dbc2c9817/recipes/ponylang-mode"; @@ -40500,12 +41429,12 @@ melpaBuild { pname = "prescient"; ename = "prescient"; - version = "2.2"; + version = "2.2.1"; src = fetchFromGitHub { owner = "raxod502"; repo = "prescient.el"; - rev = "1e0db9451e75f0db29668bebe98dfa747c6b4bcf"; - sha256 = "0zm9phc4cv7ldgyngcj84fxc1j0nh12c05lxiwv0n1xb8wc6awvf"; + rev = "1623a0d4e5b9a752db45923fd91da48b49c85068"; + sha256 = "0yan4m9xf4iia4ns8kqa0zsham4h2mcnwsq9xnfwm26rkn94xrw0"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/ec02349e31531c347e4a43fbde56ae4386898cc6/recipes/prescient"; @@ -40596,30 +41525,6 @@ license = lib.licenses.free; }; }) {}; - processing-snippets = callPackage ({ fetchFromGitHub - , fetchurl - , lib - , melpaBuild }: - melpaBuild { - pname = "processing-snippets"; - version = "1.0"; - src = fetchFromGitHub { - owner = "ptrv"; - repo = "processing2-emacs"; - rev = "228bc56369675787d60f637223b50ce3a1afebbd"; - sha256 = "08ljf39jfmfpdk36nws2dnwpm7y8252zsdprsc85hr1h1ig5xy15"; - }; - recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/ba59561e8a2f259fde170a79844af5e1ef5ed34f/recipes/processing-snippets"; - sha256 = "09vkm9asmjz1in0f63s7bf4amifspsqf5w9pxiy5y0qvmn28fr2r"; - name = "processing-snippets"; - }; - packageRequires = []; - meta = { - homepage = "https://melpa.org/#/processing-snippets"; - license = lib.licenses.free; - }; - }) {}; prodigy = callPackage ({ dash , emacs , f @@ -40756,29 +41661,6 @@ license = lib.licenses.free; }; }) {}; - project-root = callPackage ({ fetchhg - , fetchurl - , lib - , melpaBuild }: - melpaBuild { - pname = "project-root"; - version = "0.7"; - src = fetchhg { - url = "https://bitbucket.com/piranha/project-root"; - rev = "843ca1f4ab2b"; - sha256 = "0nw02f5lmbqdfnw93d3383sdxx1d31szk23zvjlrmmdwv2124281"; - }; - recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/5b7972602399f9df9139cff177e38653bb0f43ed/recipes/project-root"; - sha256 = "0xjir204zk254y2x70k9vqwirx2ljmrikpsgn5kn170d1bxvhwmb"; - name = "project-root"; - }; - packageRequires = []; - meta = { - homepage = "https://melpa.org/#/project-root"; - license = lib.licenses.free; - }; - }) {}; projectile = callPackage ({ emacs , fetchFromGitHub , fetchurl @@ -40788,12 +41670,12 @@ melpaBuild { pname = "projectile"; ename = "projectile"; - version = "1.0.0"; + version = "2.0.0"; src = fetchFromGitHub { owner = "bbatsov"; repo = "projectile"; - rev = "09d1ef17a20c42dc6a2b1622df8faa8fb1c6ad9f"; - sha256 = "1yyphiy2bc4kzc1bz1akfz5rrdrs0bq3zvsyam9bsx03jixzn7yv"; + rev = "823c0aa9ffd1e8e03b20efe97c16cfb66e2c56c5"; + sha256 = "16y0zcqydfag4igwcbljqymkwjgjxdh97ii616wgdsyjgk9xxd4h"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/ca7bf43ef8893bf04e9658390e306ef69e80a156/recipes/projectile"; @@ -41086,7 +41968,7 @@ melpaBuild { pname = "protobuf-mode"; ename = "protobuf-mode"; - version = "3.6.1"; + version = "3.6.1.3"; src = fetchFromGitHub { owner = "google"; repo = "protobuf"; @@ -41198,12 +42080,12 @@ melpaBuild { pname = "psysh"; ename = "psysh"; - version = "0.0.4"; + version = "0.0.5"; src = fetchFromGitHub { owner = "emacs-php"; repo = "psysh.el"; - rev = "f72d6fe41af2d9566d41b167cda66e97efdf8cfa"; - sha256 = "0hr8nlxcqfas9wl5ahz9hmvpa8b6k35n4f7iv9dx6zwf5q48q7y7"; + rev = "4709a57cdcf7103c4a606be89849ea3ead2d38a5"; + sha256 = "1apf6mnqp9bg5dfykgvsn02z0xpyx6k34sd2pvicicig7w09kzvb"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/eb13cb0dba1696cc51132cd1ff723fa17f892a7c/recipes/psysh"; @@ -41348,31 +42230,6 @@ license = lib.licenses.free; }; }) {}; - purescript-mode = callPackage ({ fetchFromGitHub - , fetchurl - , lib - , melpaBuild }: - melpaBuild { - pname = "purescript-mode"; - ename = "purescript-mode"; - version = "13.10"; - src = fetchFromGitHub { - owner = "dysinger"; - repo = "purescript-mode"; - rev = "6a4d4bdd178c65183a715c7729941a0b8fe5f253"; - sha256 = "1wk319akv0scvyyjsd48pisi2i1gkahhsan9hfszrs6xx3anvfd9"; - }; - recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/77175fa470e517fa134751fbb38e144eb5b979ff/recipes/purescript-mode"; - sha256 = "00gz752mh7144nsaka5q3q4681jp845kc5vcy2nbfnqp9b24l55m"; - name = "recipe"; - }; - packageRequires = []; - meta = { - homepage = "https://melpa.org/#/purescript-mode"; - license = lib.licenses.free; - }; - }) {}; pushbullet = callPackage ({ fetchFromGitHub , fetchurl , grapnel @@ -41554,7 +42411,6 @@ }; }) {}; pyim = callPackage ({ async - , cl-lib ? null , emacs , fetchFromGitHub , fetchurl @@ -41565,19 +42421,19 @@ melpaBuild { pname = "pyim"; ename = "pyim"; - version = "1.7"; + version = "1.8"; src = fetchFromGitHub { owner = "tumashu"; repo = "pyim"; - rev = "3b1c5fbdf3b910f96771935785e28cf33d8d54cc"; - sha256 = "1ijfsnjvyys941kgcq00d5dgnkbzj14gb7c9pks0x11bsdl0vr6p"; + rev = "8648d467d79b3bf1c3a99623f9329939cacc40da"; + sha256 = "16rma4cv7xgky0g3x4an27v30jdi6i1sqw43cl99zhkqvp43l3f9"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/151a0af91a58e27f724854d85d5dd9668229fe8d/recipes/pyim"; sha256 = "1ly4xhfr3irlrwvv20j3kyz98g7barridi9n8jppc0brh2dlv98j"; name = "recipe"; }; - packageRequires = [ async cl-lib emacs popup pyim-basedict ]; + packageRequires = [ async emacs popup pyim-basedict ]; meta = { homepage = "https://melpa.org/#/pyim"; license = lib.licenses.free; @@ -41844,12 +42700,12 @@ melpaBuild { pname = "pyvenv"; ename = "pyvenv"; - version = "1.18"; + version = "1.20"; src = fetchFromGitHub { owner = "jorgenschaefer"; repo = "pyvenv"; - rev = "921ae2356b6a111ac0b7e44fd04cba8e95cbe936"; - sha256 = "04kxx8fjqzzdl2rn56vn9jac2v3irpmr9dfckwfa3r4gslvipybm"; + rev = "fa6a028349733b0ecb407c4cfb3a715b71931eec"; + sha256 = "1x052fsavb94x3scpqd6n9spqgzaahzbdxhg4qa5sy6hqsabn6zh"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/e37236b89b9705ba7a9d134b1fb2c3c003953a9b/recipes/pyvenv"; @@ -41946,7 +42802,7 @@ melpaBuild { pname = "qt-pro-mode"; ename = "qt-pro-mode"; - version = "1.0.0"; + version = "1.0.1"; src = fetchFromGitHub { owner = "EricCrosson"; repo = "qt-pro-mode"; @@ -41971,12 +42827,12 @@ melpaBuild { pname = "quasi-monochrome-theme"; ename = "quasi-monochrome-theme"; - version = "1.1"; + version = "1.2"; src = fetchFromGitHub { owner = "lbolla"; repo = "emacs-quasi-monochrome"; - rev = "7d3afe41c2696ee25e3e4bcce987af1f589208d6"; - sha256 = "0bn1yzxzj6r1k3xcp45l04flq4avzlh0sbjfyiw4nglfhliyvwcf"; + rev = "68060dbbc0bbfe4924387392874186c5a29bb434"; + sha256 = "0zp2xr0bjfqrpb0bqczzick1vvbjmipjavrdi70kw6a9caynvq22"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/a9c8498e4bcca19c4c24b2fd0db035c3da477e2a/recipes/quasi-monochrome-theme"; @@ -42104,12 +42960,12 @@ melpaBuild { pname = "railscasts-reloaded-theme"; ename = "railscasts-reloaded-theme"; - version = "1.5.0"; + version = "2.0.0"; src = fetchFromGitHub { owner = "thegeorgeous"; repo = "railscasts-reloaded-theme"; - rev = "077af9cb791d9eba4c561cd7cb3b10d2fcfc39d2"; - sha256 = "1wd6j7m3w81rks6q8mrq5n6p6in0bc93szksds7sx2j2rz6vhfkn"; + rev = "ae77bc04fe5a948f418ec8693f6ff2c9ea757c50"; + sha256 = "1vn9cw343w9vvxhzqi85vyqnj6kxcv99qvva4xjvy1sf65i24wy4"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/9817851bd06cbae30fb8f429401f1bbc0dc7be09/recipes/railscasts-reloaded-theme"; @@ -42441,14 +43297,14 @@ ename = "real-auto-save"; version = "0.4"; src = fetchFromGitHub { - owner = "chillaranand"; + owner = "ChillarAnand"; repo = "real-auto-save"; rev = "2775cf497cce60335091817f9fea14f838cd725f"; sha256 = "0s19qy5idnzhd7aq0v538x3ysqh7lzddm98mkf8wmqf4xpws6h3j"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/525039a3dc29190829bf50d608ef09bc4a8557af/recipes/real-auto-save"; - sha256 = "03dbbizpyg62v6zbq8hd16ikrifz8m2bdlbb3g67f2834xqmxha8"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/35763febad20f29320d459394f810668db6c3353/recipes/real-auto-save"; + sha256 = "1li0b2d93ffxjq4jdyzyvjdy5h7q5xllys0w4748d2bhr8q35p3w"; name = "recipe"; }; packageRequires = []; @@ -42527,12 +43383,12 @@ melpaBuild { pname = "reazon"; ename = "reazon"; - version = "0.2"; + version = "0.3"; src = fetchFromGitHub { owner = "nickdrozd"; repo = "reazon"; - rev = "7e27f37c22f2fbad5315d71c9603309717680b6e"; - sha256 = "0nk7a73knc9ir1vkpyimjag1nqhrx9x4v2f975n790bgs24v4hhs"; + rev = "020be6467a83957adcbdcb192b61f2c76a94079b"; + sha256 = "18la2g0srybr10vm1dajgbxi67j1l0cs08mr696hxb6m558yxdv5"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/77020b6ea36a4115bdddbc9599fe4f4193ecc29d/recipes/reazon"; @@ -42571,6 +43427,33 @@ license = lib.licenses.free; }; }) {}; + recently = callPackage ({ cl-lib ? null + , emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "recently"; + ename = "recently"; + version = "0.1"; + src = fetchFromGitHub { + owner = "10sr"; + repo = "recently-el"; + rev = "3a331936ba33875d0f2fa47abe056aadbc59150e"; + sha256 = "0hdsv3whr2iqk6xirmfcjpbqjnckzqj54n5q04gh2z01bjxv3d7k"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/bb8d1628e1787cba10fc612f3351e4085e9a3153/recipes/recently"; + sha256 = "1928v1897l1n42zrzqfwkq6nckf9y822qcwy99294rq0b4z83kxs"; + name = "recipe"; + }; + packageRequires = [ cl-lib emacs ]; + meta = { + homepage = "https://melpa.org/#/recently"; + license = lib.licenses.free; + }; + }) {}; recover-buffers = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -42765,12 +43648,12 @@ melpaBuild { pname = "region-convert"; ename = "region-convert"; - version = "0.0.1"; + version = "0.2.0"; src = fetchFromGitHub { owner = "zonuexe"; repo = "right-click-context"; - rev = "4391dd89616584dc34773d7c304a7db93f9b63a4"; - sha256 = "0kqgznjrdg70y5zcz7y9fxssddib6m1wrgfqza2g97g4gl1m91vf"; + rev = "173c86b4b3fc187d54bcd85b4d7df27a5ee24965"; + sha256 = "1paljjwr6sfl835m24vj2j4x3zdh3whwayj6dvyfarbhhcwbwphj"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/ddcf4612cccb9a53425c5f0324206d70549d9d9e/recipes/region-convert"; @@ -42783,6 +43666,31 @@ license = lib.licenses.free; }; }) {}; + region-state = callPackage ({ fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "region-state"; + ename = "region-state"; + version = "0.1"; + src = fetchFromGitHub { + owner = "xuchunyang"; + repo = "region-state.el"; + rev = "17e2710d14f090201418ad511e3dbff7178b53a6"; + sha256 = "03ij1yjxf23lp24smna91c84iwamac6gi9chc6fmnlhxcpjcm8px"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/716e82eb4ca0845f59a743556b37be8a1ecb29af/recipes/region-state"; + sha256 = "1iq2x1w8lqjjiwjja7r3qki6drvydnk171k9fj9g6rk7wslknz8x"; + name = "recipe"; + }; + packageRequires = []; + meta = { + homepage = "https://melpa.org/#/region-state"; + license = lib.licenses.free; + }; + }) {}; relax = callPackage ({ fetchFromGitHub , fetchurl , json ? null @@ -43190,12 +44098,12 @@ melpaBuild { pname = "rg"; ename = "rg"; - version = "1.6.0"; + version = "1.6.1"; src = fetchFromGitHub { owner = "dajva"; repo = "rg.el"; - rev = "28b2f7d0025a803250806c7d274c6df43b4ccc4b"; - sha256 = "0i9022j7pd8ywrkkljhnhwdg28bv34lgvigg8anqfav9ahcqswf7"; + rev = "164349748da570b9b9105fa2a8294c9e1ec4cbee"; + sha256 = "1bmk4xbaipbcwqmvrhab0qp3rxv50486kf32kpm4lad4wis4318k"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/9ce1f721867383a841957370946f283f996fa76f/recipes/rg"; @@ -43260,6 +44168,34 @@ license = lib.licenses.free; }; }) {}; + right-click-context = callPackage ({ cl-lib ? null + , emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild + , popup }: + melpaBuild { + pname = "right-click-context"; + ename = "right-click-context"; + version = "0.2.0"; + src = fetchFromGitHub { + owner = "zonuexe"; + repo = "right-click-context"; + rev = "173c86b4b3fc187d54bcd85b4d7df27a5ee24965"; + sha256 = "1paljjwr6sfl835m24vj2j4x3zdh3whwayj6dvyfarbhhcwbwphj"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/ce65fff520deed40670c38f45063dd79d3e6b98b/recipes/right-click-context"; + sha256 = "100qsckbq5myhqbkqsfb7703gcy2np66m6qxby7622px87m4vp7d"; + name = "recipe"; + }; + packageRequires = [ cl-lib emacs popup ]; + meta = { + homepage = "https://melpa.org/#/right-click-context"; + license = lib.licenses.free; + }; + }) {}; rigid-tabs = callPackage ({ emacs , fetchFromGitLab , fetchurl @@ -43401,12 +44337,12 @@ melpaBuild { pname = "robots-txt-mode"; ename = "robots-txt-mode"; - version = "0.0.2"; + version = "0.0.3"; src = fetchFromGitHub { owner = "emacs-php"; repo = "robots-txt-mode"; - rev = "edf1f8082c88cb2ff5a784ba00f92c535aaa1c7d"; - sha256 = "11ig771ck610glb6f3322ka026ikq0b072rlq5z6ymr3rbxagn6j"; + rev = "431efda01e08426d671d51fcf1f98cfbc87f8c16"; + sha256 = "1mpg62ai721aasd1lm5xwcygpkyh9kp4x5zvmd62agmp3i8s78gc"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/eb13cb0dba1696cc51132cd1ff723fa17f892a7c/recipes/robots-txt-mode"; @@ -43529,12 +44465,12 @@ melpaBuild { pname = "rtags"; ename = "rtags"; - version = "2.18"; + version = "2.21"; src = fetchFromGitHub { owner = "Andersbakken"; repo = "rtags"; - rev = "98d668e85cf9ae84e775742752c5656dd2df2f17"; - sha256 = "0raqjbkl1ykga4ahgl9xw49cgh3cyqcf42z36z7d6fz1fw192kg0"; + rev = "1249950963e494fbd66a4138cef639ffe6e05cd2"; + sha256 = "10bswgpgwl0c1y2qiw3b11fkcz70j54q7895hsm85af84fipdili"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/3dea16daf0d72188c8b4043534f0833fe9b04e07/recipes/rtags"; @@ -43609,12 +44545,12 @@ melpaBuild { pname = "rubocopfmt"; ename = "rubocopfmt"; - version = "0.2.2"; + version = "0.3.0"; src = fetchFromGitHub { owner = "jimeh"; repo = "rubocopfmt.el"; - rev = "34c69c9c923d0da223f7569a6ecc842095adcf85"; - sha256 = "0aa683r16gvpv07i0gzbil81kgxbgk4pjn510xgalan3fk20nal4"; + rev = "43ffa9d9c3dcc0574038bebd049102642f50b290"; + sha256 = "0vzpfd9xv80ph9xz8psczz46blhsdnac8zh5i944klkxgqdw7x1x"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/ac01edffceea771d8fe41326e28dd9881f1661ab/recipes/rubocopfmt"; @@ -44098,14 +45034,14 @@ ename = "say-what-im-doing"; version = "0.2"; src = fetchFromGitHub { - owner = "benaiah"; + owner = "Benaiah"; repo = "say-what-im-doing"; rev = "4acc16360a29646040b51db158ba7fdeb711449d"; sha256 = "1gkzgcnh5ib4j5206mx8gbwj5ykay19vqlfg9070m2r09d1a55qf"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/4d22ddcd4ad9514fe0c36f299e7463a4b7e771d7/recipes/say-what-im-doing"; - sha256 = "1hgh842f7gs2sxy7s6zq57nsqy4jjlnjcga6hwzcx0kw3albgz7x"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/35763febad20f29320d459394f810668db6c3353/recipes/say-what-im-doing"; + sha256 = "0wi7318q7mms4wjbzhnsw298bjh7g957dnra0bvg87vv48pz3yfp"; name = "recipe"; }; packageRequires = []; @@ -44124,14 +45060,14 @@ ename = "sayid"; version = "0.0.17"; src = fetchFromGitHub { - owner = "bpiel"; + owner = "clojure-emacs"; repo = "sayid"; rev = "a2625e3975c2bc8449259f0ecd51b28068cbdfac"; sha256 = "1vw0dc8cx8npy79r53cw129h5s8n12629ah0ypkq15v2rh2hs1gk"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/2bd2e05f9c9328d8f9ae434c86697a4a04af8b0d/recipes/sayid"; - sha256 = "0chz46wmwmsn4ys59pn7lqs4assqy2hv43rvka7kq61jdl4g6fgs"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/9a15a17a5aa78aed72958b2a1bde53f0c0ab5be7/recipes/sayid"; + sha256 = "065mxb2la3dq2zqyb8dfksb18fpqym04nnax5rrp19izcw488qsm"; name = "recipe"; }; packageRequires = [ cider ]; @@ -44295,27 +45231,27 @@ secretaria = callPackage ({ alert , emacs , f - , fetchgit + , fetchFromGitLab , fetchurl , lib , melpaBuild - , org , s }: melpaBuild { pname = "secretaria"; ename = "secretaria"; - version = "0.2.7"; - src = fetchgit { - url = "https://bitbucket.org/shackra/secretaria.el"; - rev = "1cd32d957864be1ba5c44a3f505f662832169a28"; - sha256 = "1xvwzmcfwfxsm9chbjnqjsipmv5pqpzk5d0ybw3rcdc47nag3jdg"; + version = "0.2.9"; + src = fetchFromGitLab { + owner = "shackra"; + repo = "secretaria"; + rev = "7428b8302c01468b3c1318e318640f68fd5a61b1"; + sha256 = "16cm8xv7n012hvz757p940ahxp1ygji2vfzsaxal48y4cf026rpl"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/7b4c9ccbf2eeaa290f3b9d1e5eaaeb5b5547b365/recipes/secretaria"; - sha256 = "1a8jf91wplzazssh0s8ld0g8rp57gdfvxlsyn643w3mbp3ny8ybv"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/3eeddbcf95315da40d021a6913ccf344849c4284/recipes/secretaria"; + sha256 = "04pcibzdljcfiha4yh10van8gsjrzn6bdkvkm2ahfcwrmscfn3hf"; name = "recipe"; }; - packageRequires = [ alert emacs f org s ]; + packageRequires = [ alert emacs f s ]; meta = { homepage = "https://melpa.org/#/secretaria"; license = lib.licenses.free; @@ -44495,12 +45431,12 @@ melpaBuild { pname = "sesman"; ename = "sesman"; - version = "0.3"; + version = "0.3.3"; src = fetchFromGitHub { owner = "vspinu"; repo = "sesman"; - rev = "c81565a88b038f752de90998e651b94fa78a687f"; - sha256 = "029agil0ic8v4wxv39a5x2vw2p5a2hx8r1lbf8kwlddpgh8lb030"; + rev = "1a6c5448cbcab6320570ca17a04b7487cdae0bd5"; + sha256 = "0r32f8ma9ddczxrrdz0nadp14j3zmk10q1ch02gb82synkx3xdra"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/31110e9bd82ad9c817e6cb597fa9c26c4cdc93ed/recipes/sesman"; @@ -44999,23 +45935,23 @@ license = lib.licenses.free; }; }) {}; - shrink-whitespace = callPackage ({ fetchFromGitHub + shrink-whitespace = callPackage ({ fetchFromGitLab , fetchurl , lib , melpaBuild }: melpaBuild { pname = "shrink-whitespace"; ename = "shrink-whitespace"; - version = "0.0.1"; - src = fetchFromGitHub { + version = "0.0.4"; + src = fetchFromGitLab { owner = "jcpetkovich"; repo = "shrink-whitespace.el"; - rev = "24518d58e8e692fa98a73d5e7cd44c1536ab4e42"; - sha256 = "050gmxdk88zlfjwi07jsj2mvsfcv5imhzcpa6ip3cqkzpmw3pl32"; + rev = "0407b89c142bd17e65edb666f35e2c6755bd0867"; + sha256 = "1qxdi2jm3zl5f55c6irsbnxrmqw039pcm99jafn7hg5z5zc3xhbx"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/855ea20024b606314f8590129259747cac0bcc97/recipes/shrink-whitespace"; - sha256 = "0baqv4wr1wi4wd7cfhqf4y24qkpd72lax596z5lj934ihwf3gggw"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/a403093706d57887111e0d012e85273addaf0d35/recipes/shrink-whitespace"; + sha256 = "12i6xlcgk27bsdfnlcdjww8vxbx1yilaqa0pkh5n0hxb66zi6x15"; name = "recipe"; }; packageRequires = []; @@ -45059,12 +45995,12 @@ melpaBuild { pname = "shx"; ename = "shx"; - version = "0.0.17"; + version = "1.0.0"; src = fetchFromGitHub { owner = "riscy"; repo = "shx-for-emacs"; - rev = "758ad3ab21daa055982ee5d165522a0de7948e93"; - sha256 = "0p923v4iqmyr4fhr2h5ydfaqplkhqllig6dcgp0bjvj7n9v8zpng"; + rev = "a7d9dda0196423bbb673f9a4d30ac948449758f6"; + sha256 = "0hf4b9a2azdj2xh7ffwz5j2b4akpxia0237ibk6g2kv902982n4s"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/7a2ff78ae3c4289ebf9e06cdfd8f8082c395a16f/recipes/shx"; @@ -45213,12 +46149,12 @@ melpaBuild { pname = "simpleclip"; ename = "simpleclip"; - version = "1.0.6"; + version = "1.0.8"; src = fetchFromGitHub { owner = "rolandwalker"; repo = "simpleclip"; - rev = "7fff9a1e574466878b5f91e9b56b16e490045aaa"; - sha256 = "02bj8b4xg930wzrjam0569k5cj1y0gkv28sjy567skdiw5zl14nn"; + rev = "63b1a5356e6ff839b1dbacdf22a5c7a275ec88e6"; + sha256 = "0iic8r0q21gjhj0d1k5nin9abx3789j0a37n96a5sx6rb4ps4f2v"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/7c921e27d6aafc1b82d37f6beb8407840034377a/recipes/simpleclip"; @@ -45452,16 +46388,16 @@ melpaBuild { pname = "slime"; ename = "slime"; - version = "2.22"; + version = "2.23"; src = fetchFromGitHub { owner = "slime"; repo = "slime"; - rev = "8d9fdf34fe542ec280ee042ee7bdea16e512d3c0"; - sha256 = "0zsliqfd92ivg2y2w1z6scn6i3w658x8bi1wd0rvf6mddc74lvj6"; + rev = "56e32da66840e3d03947da2fdf9730824cfc870a"; + sha256 = "05pgcf3sd4dwl40kfw00s3si8rz8rk9pis81jlxdi5w6qzmlg7v1"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/14c60acbfde13d5e9256cea83d4d0d33e037d4b9/recipes/slime"; - sha256 = "04zcvjg0bbx5mdbsk9yn7rlprakl89dq6jmnq5v2g0n6q0mh6ign"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/f7b49074393c922c4c4da971f1af70ecdba84abb/recipes/slime"; + sha256 = "14l73q7hqwz5nl7nr8f3cc6bzzgbxgavj2f1z8aq76qfyhxc6zl5"; name = "recipe"; }; packageRequires = [ cl-lib macrostep ]; @@ -45585,12 +46521,12 @@ melpaBuild { pname = "sly"; ename = "sly"; - version = "2.14"; + version = "2.22"; src = fetchFromGitHub { owner = "joaotavora"; repo = "sly"; - rev = "9dfa53bbaa33c4e91fc58f816d0a766ae94f47c9"; - sha256 = "0bw6rvpkfpv5shih0ywjw6pa5h2a8v1xpvkxbijqd4dpdj3dlyj9"; + rev = "2bf65222066f4cfcc91f4a34f785ceac07ecb3a7"; + sha256 = "0l632f7mrf1qh00ccngywja4kxdzh7ygqdyjwm32c2kssa9h304y"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/4150455d424326667390f72f6edd22b274d9fa01/recipes/sly"; @@ -45612,12 +46548,12 @@ melpaBuild { pname = "smart-mode-line"; ename = "smart-mode-line"; - version = "2.11.0"; + version = "2.12.0"; src = fetchFromGitHub { owner = "Malabarba"; repo = "smart-mode-line"; - rev = "5aca51956fae55d7310c1f96b5d128201087864a"; - sha256 = "1wpavjkxszq1xr49q0qvqniq751s69axgnsdv37n73k3zl527vqw"; + rev = "9a81b51cd37fc5b6d47abfbb2b32f98f36a0fcfc"; + sha256 = "055w1pcr96bfgbmig6ll2sgcisw82rf9dh4n8dhnsl75p32g1rcn"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/1e6aed365c42987d64d0cd9a8a6178339b1b39e8/recipes/smart-mode-line"; @@ -45640,7 +46576,7 @@ melpaBuild { pname = "smart-mode-line-powerline-theme"; ename = "smart-mode-line-powerline-theme"; - version = "2.11.0"; + version = "2.12.0"; src = fetchFromGitHub { owner = "Malabarba"; repo = "smart-mode-line"; @@ -45947,12 +46883,12 @@ melpaBuild { pname = "snakemake-mode"; ename = "snakemake-mode"; - version = "1.4.0"; + version = "1.5.0"; src = fetchFromGitHub { owner = "kyleam"; repo = "snakemake-mode"; - rev = "3c2e5556c603d3f35135d531e4ff5e618b984de9"; - sha256 = "0j6aam0w3mwxl76zpxzvw92pk6w7h47pw6gpnd7hchjs8cav1q41"; + rev = "0cadd2bbd20aae1555561e81ed72fec43ec7296e"; + sha256 = "1i4cwdyhfyawfx07i63iqdx524mlphgbrl44wqqnnxrbdqm0h534"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/c3a5b51fee1c9e6ce7e21555faa355d118d34b8d/recipes/snakemake-mode"; @@ -46084,12 +47020,12 @@ melpaBuild { pname = "solaire-mode"; ename = "solaire-mode"; - version = "1.0.6"; + version = "1.0.7"; src = fetchFromGitHub { owner = "hlissner"; repo = "emacs-solaire-mode"; - rev = "abf2ce4da77d0877efb4a035687390ce921eda4f"; - sha256 = "15wszz841vd9i59gq2xxh8rk7bh7agwglh2dwhxgs70m24hsp3p4"; + rev = "d4e0babefc1d6bf157dcd1fe4da5758036c9d8ca"; + sha256 = "1s50nfmzn7ngpkg3v34j7zpjaap0jly1l7c17svhhv074wnjrcm0"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/52c69070eef3003eb53e1436c538779c74670ce6/recipes/solaire-mode"; @@ -46128,6 +47064,31 @@ license = lib.licenses.free; }; }) {}; + solidity-flycheck = callPackage ({ fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "solidity-flycheck"; + ename = "solidity-flycheck"; + version = "0.1.9"; + src = fetchFromGitHub { + owner = "ethereum"; + repo = "emacs-solidity"; + rev = "b5d95ef678305ca70b17e94fc2ee4289a8328048"; + sha256 = "04l3hvfpgqiaxdxh8s2cg2rx4cy50i7a411q81g8661fx60c6h6p"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/e561d869f4e32bad5d1a8678f67e591ff586d6de/recipes/solidity-flycheck"; + sha256 = "1lx64y77q33a2lrg5sj5h56gicw1lk8qmxmva5bgc4zxxd8qwz6f"; + name = "recipe"; + }; + packageRequires = []; + meta = { + homepage = "https://melpa.org/#/solidity-flycheck"; + license = lib.licenses.free; + }; + }) {}; solidity-mode = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -46143,8 +47104,8 @@ sha256 = "1wcy5z4wggn3zs9h1kyvm0ji51ppjcqdmym3mmxbrhan6a0kq724"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/bb9df5ec0692352b6494d435d11166f4ea26c99e/recipes/solidity-mode"; - sha256 = "1qdzdivrf5yaa80p61b9r1gryw112v5l2m2jkvkc7glhkhrcvwsx"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/02d3fdae111b14a87aaa7a1b3f44e545c5e3d2ac/recipes/solidity-mode"; + sha256 = "15vz3ayl1p3dn2cavm68rqv901c1b7dxm2j8iazwzj3q15ln8xvn"; name = "recipe"; }; packageRequires = []; @@ -46565,12 +47526,12 @@ melpaBuild { pname = "spotify"; ename = "spotify"; - version = "0.3.3"; + version = "0.3.4"; src = fetchFromGitHub { owner = "remvee"; repo = "spotify-el"; - rev = "472f6e61d732a7e700f5505e2a445fc0b030916a"; - sha256 = "0kc17ijjd8ygwjji23ndhq75kqjyxlb8kg9q0ij0l38q3b903fhi"; + rev = "29577cf1188161f98b8358c149aaf47b2c137902"; + sha256 = "0h6yhfvvyd9sd5d37d3ng3z56zfb546vl95qjq16kcvxq00hdn1v"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/855ea20024b606314f8590129259747cac0bcc97/recipes/spotify"; @@ -46643,12 +47604,12 @@ melpaBuild { pname = "sql-impala"; ename = "sql-impala"; - version = "1.0"; + version = "1.1"; src = fetchFromGitHub { owner = "jterk"; repo = "sql-impala"; - rev = "68248e9851b153850542ed1f709298bb9ab59610"; - sha256 = "12zyw8b8s3jga560wv141gc4yvlbldvfcmpibns8wrpx2w8aivfj"; + rev = "466e7c0c789ec3e5e8a276c8f6754f91bb584c3e"; + sha256 = "02psgbm06wivdm2cmjnj2vy05lnljxn44hj2arw2fr7x2qwn9r35"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/855ea20024b606314f8590129259747cac0bcc97/recipes/sql-impala"; @@ -46661,6 +47622,32 @@ license = lib.licenses.free; }; }) {}; + sqlformat = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "sqlformat"; + ename = "sqlformat"; + version = "0.1"; + src = fetchFromGitHub { + owner = "purcell"; + repo = "sqlformat"; + rev = "b70b05bf469a27c1a2940eeaa1a5c8cc93d805fd"; + sha256 = "14n2yjmi4ls8rmpvvw6d7cz5f6dcg7laaljxnhwbagfd5j4sdfrm"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/6bdaa1ccae12f2ea779ac6989607d8027feac2c9/recipes/sqlformat"; + sha256 = "07lf2gx629429b41qr04gl98gplb538gb5hw7idzrmi3higrmv8m"; + name = "recipe"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://melpa.org/#/sqlformat"; + license = lib.licenses.free; + }; + }) {}; sqlup-mode = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -46763,6 +47750,32 @@ license = lib.licenses.free; }; }) {}; + srv = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "srv"; + ename = "srv"; + version = "0.2"; + src = fetchFromGitHub { + owner = "legoscia"; + repo = "srv.el"; + rev = "b1eb7b109bc1c616dbf027429a90dc3b1a4263f1"; + sha256 = "05kp8ajbqk7vxzkv23akyk2m7yg81pbrxpl3dsw67101sjazsybi"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/6b0b7f22631e7749da484ced9192d8ae5e1be941/recipes/srv"; + sha256 = "0xrgbi63vg0msxkcmcnvijkxa9y0s7613liqac7fs9514yvkbwin"; + name = "recipe"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://melpa.org/#/srv"; + license = lib.licenses.free; + }; + }) {}; ssass-mode = callPackage ({ emacs , fetchFromGitHub , fetchurl @@ -46824,12 +47837,12 @@ melpaBuild { pname = "ssh-deploy"; ename = "ssh-deploy"; - version = "1.6"; + version = "3.0"; src = fetchFromGitHub { owner = "cjohansson"; repo = "emacs-ssh-deploy"; - rev = "b13ba60ea175798cfd1395ab833082789724073d"; - sha256 = "0fgcxvs2ngv65chnkb9w5rrak187xkwxiwmpc25iqvrrnrfr43s6"; + rev = "5b263c17a0709bb7944983fd2ae50bf022c2d412"; + sha256 = "1z6dbq0fhynmanhzhpwgsf4bx6dkgqfajp6bz3gj5x2wspn866ks"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/855ea20024b606314f8590129259747cac0bcc97/recipes/ssh-deploy"; @@ -46951,12 +47964,12 @@ melpaBuild { pname = "stgit"; ename = "stgit"; - version = "0.18"; + version = "0.19"; src = fetchFromGitHub { owner = "ctmarinas"; repo = "stgit"; - rev = "25a7ad1bbe8d529ab6c5bb8557d39650d0b2378f"; - sha256 = "17m3nb64wckh8jzcxah284cd8fakd4ja1mhix6v8nm9kknqic6xc"; + rev = "a29fc8873fca30cb5b13d94743a9010de28e2610"; + sha256 = "1xhxba0m78zx00m55y125bs1zxibyg7d9nw8xw9gqyshcncjffpg"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/726da64b7baea1735a916b826bdfb8f575860e21/recipes/stgit"; @@ -47313,12 +48326,12 @@ melpaBuild { pname = "super-save"; ename = "super-save"; - version = "0.2.0"; + version = "0.3.0"; src = fetchFromGitHub { owner = "bbatsov"; repo = "super-save"; - rev = "73397501fa5b01c02b9ae94f82a8cb37d1ed105f"; - sha256 = "0cw3yf2npy2ah00q2whpn52kaybbccw1qvfzsww0x4zshlrwvvvq"; + rev = "62512f60d6685d8601e2021d95e77603b6d96885"; + sha256 = "0cn39d1qfm119bxb9sdl43ya2vvadfp22qwdn3j843wyf92hpdn4"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/9730b65787b26d3909952cf246a01bd349e5fbab/recipes/super-save"; @@ -47423,12 +48436,12 @@ melpaBuild { pname = "swift-mode"; ename = "swift-mode"; - version = "6.0.0"; + version = "7.1.0"; src = fetchFromGitHub { owner = "swift-emacs"; repo = "swift-mode"; - rev = "d2f2f1da6085c6fad2709b951d6891dd139a6080"; - sha256 = "1ldf593qzbscwlngbabxb52kcpriwhglk95l82qs8y3q1x6aj0cw"; + rev = "cde97e20a8c80075920f0e01ec76de1816aed114"; + sha256 = "1igk1d585f4bj7pw2ikfh843sfp0k80ibjkwvsjjpx272lz57qqk"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/6440f81aed1fcddcaf7afeedb74520e605211986/recipes/swift-mode"; @@ -47555,12 +48568,12 @@ melpaBuild { pname = "switch-window"; ename = "switch-window"; - version = "1.6.1"; + version = "1.6.2"; src = fetchFromGitHub { owner = "dimitri"; repo = "switch-window"; - rev = "40565f7bdf11e86d882185fa4c4ec77b96dcc21c"; - sha256 = "047qx4vk86b9jbvv5w477215mkmqpdwl5wd4n9fhp5xjni11jnhx"; + rev = "204f9fc1a39868a2d16ab9370a142c8c9c7a0943"; + sha256 = "0rci96asgamr6qp6nkyr5vwrnslswjxcjd96yccy4aivh0g66yfg"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/7d2204e3b53ade1e400e143ac219f3c7ab63a1e9/recipes/switch-window"; @@ -47628,6 +48641,32 @@ license = lib.licenses.free; }; }) {}; + symbol-overlay = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "symbol-overlay"; + ename = "symbol-overlay"; + version = "4.1"; + src = fetchFromGitHub { + owner = "wolray"; + repo = "symbol-overlay"; + rev = "d1464042783e252f5cac1fcac82fee16fc3534db"; + sha256 = "0d5ir4f3xmz3kr0w93zw45ha4hzz4rvldiza3q9fmqm7m1w2c995"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/c2a468ebe1a3e5a35ef40c59a62befbf8960bd7b/recipes/symbol-overlay"; + sha256 = "1al60x2mnjsv99jd10v5sd56zz185wsddiq7128phf1l35bkibis"; + name = "recipe"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://melpa.org/#/symbol-overlay"; + license = lib.licenses.free; + }; + }) {}; symbolword-mode = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -47755,29 +48794,6 @@ license = lib.licenses.free; }; }) {}; - syntax-subword = callPackage ({ fetchhg - , fetchurl - , lib - , melpaBuild }: - melpaBuild { - pname = "syntax-subword"; - version = "0.2"; - src = fetchhg { - url = "https://bitbucket.com/jpkotta/syntax-subword"; - rev = "ad0db0fcb464"; - sha256 = "1wcgr6scvwwfmhhjbpq3riq0gmp4g08ffbl91fpgp72j8zrc1c6x"; - }; - recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/5b7972602399f9df9139cff177e38653bb0f43ed/recipes/syntax-subword"; - sha256 = "1as89ffqz2h69fdwybgs5wibnrvskm7hd58vagfjkla9pjlpffpm"; - name = "syntax-subword"; - }; - packageRequires = []; - meta = { - homepage = "https://melpa.org/#/syntax-subword"; - license = lib.licenses.free; - }; - }) {}; system-packages = callPackage ({ emacs , fetchFromGitLab , fetchurl @@ -47786,12 +48802,12 @@ melpaBuild { pname = "system-packages"; ename = "system-packages"; - version = "1.0.7"; + version = "1.0.10"; src = fetchFromGitLab { owner = "jabranham"; repo = "system-packages"; - rev = "604d16b8746c290327200e568d37914ad24daf1a"; - sha256 = "1idn6agxwdliyzpvqiqc48yhrggj2p858wms0gvalj39jdfjzir9"; + rev = "54f8243a8910535273dca9c439b257975a7ce405"; + sha256 = "1c67f6846p018y5dw7dkn79csrwfvq5rs8308gw7g3r4x40s2psb"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/7d3c7af03e0bca3f834c32827cbcca29e29ef4db/recipes/system-packages"; @@ -47986,6 +49002,31 @@ license = lib.licenses.free; }; }) {}; + tao-theme = callPackage ({ fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "tao-theme"; + ename = "tao-theme"; + version = "1.1.1"; + src = fetchFromGitHub { + owner = "11111000000"; + repo = "tao-theme-emacs"; + rev = "af142b423536b47bce67afda5108dbf3a9317521"; + sha256 = "1fs4rhb4g7s7x3cvqv9d2x5f3079z2hkmp5lns7qfziszkc9fxia"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/94b70f11655944080507744fd06464607727ecef/recipes/tao-theme"; + sha256 = "0gl6zzk5ha6vl2xxf5fcnv1k42cw4axdjdcirr1c4r8jwdq3nl3a"; + name = "recipe"; + }; + packageRequires = []; + meta = { + homepage = "https://melpa.org/#/tao-theme"; + license = lib.licenses.free; + }; + }) {}; tawny-mode = callPackage ({ cider , emacs , fetchFromGitHub @@ -48317,12 +49358,12 @@ melpaBuild { pname = "tern"; ename = "tern"; - version = "0.22.2"; + version = "0.23.0"; src = fetchFromGitHub { owner = "ternjs"; repo = "tern"; - rev = "5c395b5d696aad5a185724f56c74a7f83349f3bd"; - sha256 = "11sp1jz0fn8gnc28qvyrmc7qxr1gn5r3vxv6gp46p7cmgg9mflri"; + rev = "40a0c74db3888b997a9115720ff91c399bb1b146"; + sha256 = "0dh0bfs0knikzn4gvjh9274yhbg3ndw46qmj4jy0kxh7gfl2lpkh"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/eaecd67af24050c72c5df73c3a12e717f95d5059/recipes/tern"; @@ -48346,7 +49387,7 @@ melpaBuild { pname = "tern-auto-complete"; ename = "tern-auto-complete"; - version = "0.22.2"; + version = "0.23.0"; src = fetchFromGitHub { owner = "ternjs"; repo = "tern"; @@ -48676,26 +49717,27 @@ license = lib.licenses.free; }; }) {}; - thrift = callPackage ({ fetchFromGitHub + thrift = callPackage ({ emacs + , fetchFromGitHub , fetchurl , lib , melpaBuild }: melpaBuild { pname = "thrift"; ename = "thrift"; - version = "0.11.0"; + version = "2018.12.31.0"; src = fetchFromGitHub { - owner = "apache"; - repo = "thrift"; - rev = "98bebac1520bcf1dd5392535e06a751d7b2af58e"; - sha256 = "185hrigx5q15c2jimzbklmi4z6kzigsarqwr805llsmsmg9pp3wi"; + owner = "facebook"; + repo = "fbthrift"; + rev = "a1960cc1a78ada27872913a145395f6bd45c8fd9"; + sha256 = "1az66smmfdkm4rzb8pripsb8ymyvvpncpapg69byf0hqhklln55z"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/857ab7e3a5c290265d88ebacb9685b3faee586e5/recipes/thrift"; - sha256 = "0p1hxmm7gvhyigz8aylncgqbhk6cyf75rbcqis7x552g605mhiy9"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/0dca078c0c467bc44290a922ad5627d6a34194f8/recipes/thrift"; + sha256 = "13isxx16h7rg8q5a68qmgrf3rknhfrx1qh6fb5njlznfwhrqry3y"; name = "recipe"; }; - packageRequires = []; + packageRequires = [ emacs ]; meta = { homepage = "https://melpa.org/#/thrift"; license = lib.licenses.free; @@ -48736,12 +49778,12 @@ melpaBuild { pname = "tidal"; ename = "tidal"; - version = "0.9.10"; + version = "1.0.4"; src = fetchFromGitHub { owner = "tidalcycles"; repo = "Tidal"; - rev = "ef658d3df0604f3dec955a150509ec1cc68fbd98"; - sha256 = "1ild1gnbcrw830b8d3byvqlmgm27609dgailmxgin6z7g1pg4r7z"; + rev = "93d30b30403bbca81d69488c6882e42f2d8dc18d"; + sha256 = "09gs8xby9bbs3fzbmja7w8rkzfyzkmslrh7hk71sh5fmamhmx53k"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/16a26659a16199b5bb066be6e5c4a40419bda018/recipes/tidal"; @@ -48766,12 +49808,12 @@ melpaBuild { pname = "tide"; ename = "tide"; - version = "2.8.3.1"; + version = "3.2.3"; src = fetchFromGitHub { owner = "ananthakumaran"; repo = "tide"; - rev = "0c624e7f02fb8f5b78ec35436d7b2f3f42d46dea"; - sha256 = "0pcxfdql98nnfckjzpykr619p8qsy87wnhyqjajgqxh6ad5rq6si"; + rev = "2d17c051cccd248a980575caf5728f4d5c986b30"; + sha256 = "19kjq4kr2j853p5qp1s79zxmrfprli82lsnphbrlp9vbnib28xyd"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/a21e063011ebbb03ac70bdcf0a379f9e383bdfab/recipes/tide"; @@ -48875,12 +49917,12 @@ melpaBuild { pname = "toc-org"; ename = "toc-org"; - version = "1.0.1"; + version = "1.1.0"; src = fetchFromGitHub { owner = "snosov1"; repo = "toc-org"; - rev = "a0e8ca05e806e5074b8603985da7f18b92c15856"; - sha256 = "1sv9y5dln4ai9w3mgg8p4a3s05hflfqh0k7k8isjqikydbv85m2k"; + rev = "ebff38bfa4cc95476a20a349014e2d1862ff4647"; + sha256 = "0ml075741iw9n4apiy9iv30wx4bgzpn6iisrzx3mxjl85kgmlmf2"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/1305d88eca984a66039444da1ea64f29f1950206/recipes/toc-org"; @@ -48944,30 +49986,6 @@ license = lib.licenses.free; }; }) {}; - toxi-theme = callPackage ({ emacs - , fetchhg - , fetchurl - , lib - , melpaBuild }: - melpaBuild { - pname = "toxi-theme"; - version = "0.1.2"; - src = fetchhg { - url = "https://bitbucket.com/postspectacular/toxi-theme"; - rev = "b322fc7497a5"; - sha256 = "1pnsky541m8kzcv81w98jkv0hgajh04hxqlmgddc1y0wbvi849j0"; - }; - recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/5b7972602399f9df9139cff177e38653bb0f43ed/recipes/toxi-theme"; - sha256 = "032m3qbxfd0qp81qwayd5g9k7vz55g4yhw0d35qkxzf4qf58x9sd"; - name = "toxi-theme"; - }; - packageRequires = [ emacs ]; - meta = { - homepage = "https://melpa.org/#/toxi-theme"; - license = lib.licenses.free; - }; - }) {}; traad = callPackage ({ dash , deferred , fetchFromGitHub @@ -49103,16 +50121,16 @@ melpaBuild { pname = "treemacs"; ename = "treemacs"; - version = "2.2.2"; + version = "2.3"; src = fetchFromGitHub { owner = "Alexander-Miller"; repo = "treemacs"; - rev = "4976d15c5f29bb8200b5502b742a9ba4a743706f"; - sha256 = "04sv030az079hgj4mvyigwckl6vnw2gc9zy71zksl5vn7ii25m4m"; + rev = "3ab7593519104ef6852341e900f2682b89f12646"; + sha256 = "1k41lb7pbgjvc6pry629braaca0lzr7pcj09bmff7inj06p7gqps"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/91038c1ab2f463102263dcc3701c0fdaad55de4c/recipes/treemacs"; - sha256 = "1wcsn0kzrbawyyhxmsmrsxr1vp0llkxw6r7zx53pwyc82ia64nlv"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/37cca017cf529a0553ba73bcb824a945ec8b1137/recipes/treemacs"; + sha256 = "0is4waygw902vkha4jwav0i05298zhf4d559m91gmsfg1cfrlrr3"; name = "recipe"; }; packageRequires = [ ace-window cl-lib dash emacs f ht hydra pfuture s ]; @@ -49121,60 +50139,6 @@ license = lib.licenses.free; }; }) {}; - treemacs-evil = callPackage ({ evil - , fetchFromGitHub - , fetchurl - , lib - , melpaBuild - , treemacs }: - melpaBuild { - pname = "treemacs-evil"; - ename = "treemacs-evil"; - version = "2.2.2"; - src = fetchFromGitHub { - owner = "Alexander-Miller"; - repo = "treemacs"; - rev = "82061efe99e34ac69367726d65fa0f517947b40b"; - sha256 = "0f2ybaf149ji54rgf7q9xbdx55jr2jgz9qbahsh2q7gl800nkg17"; - }; - recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/91038c1ab2f463102263dcc3701c0fdaad55de4c/recipes/treemacs-evil"; - sha256 = "1i2mxqwnqb2jz775qg3z4lf7pk4mgi646fyyi2la5gdcnq6a46mg"; - name = "recipe"; - }; - packageRequires = [ evil treemacs ]; - meta = { - homepage = "https://melpa.org/#/treemacs-evil"; - license = lib.licenses.free; - }; - }) {}; - treemacs-projectile = callPackage ({ fetchFromGitHub - , fetchurl - , lib - , melpaBuild - , projectile - , treemacs }: - melpaBuild { - pname = "treemacs-projectile"; - ename = "treemacs-projectile"; - version = "2.2.2"; - src = fetchFromGitHub { - owner = "Alexander-Miller"; - repo = "treemacs"; - rev = "cbc75759fd54a772fcb67bd8babacf1b2020ba88"; - sha256 = "18aafgiircgb5max35zqzdfb0yjmgjqacax9sfy39ihh9x9z0vc1"; - }; - recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/91038c1ab2f463102263dcc3701c0fdaad55de4c/recipes/treemacs-projectile"; - sha256 = "1vyifik30673bwlfvbmw8pzz7f3wd4q6zzssvbj8d23zhk8kh8vc"; - name = "recipe"; - }; - packageRequires = [ projectile treemacs ]; - meta = { - homepage = "https://melpa.org/#/treemacs-projectile"; - license = lib.licenses.free; - }; - }) {}; treepy = callPackage ({ emacs , fetchFromGitHub , fetchurl @@ -49183,12 +50147,12 @@ melpaBuild { pname = "treepy"; ename = "treepy"; - version = "1.0.0"; + version = "0.1.1"; src = fetchFromGitHub { owner = "volrath"; repo = "treepy.el"; - rev = "282fbc94747fe2a00d36e2a74d147c8fa0ac4be7"; - sha256 = "0acw6c073h2a0fy8gx2xc2d1fw0yhaqikqrvs2iq53fqcqrrq81r"; + rev = "b40e6b09eb9be45da67b8c9e4990a5a0d7a2a09d"; + sha256 = "04zwm6gx9pxfvgfkizx6pvb1ql8pqxjyzqp8flz0432x0gq5nlxk"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/63c94a703841f8c11948200d86d98145bc62162c/recipes/treepy"; @@ -49485,33 +50449,6 @@ license = lib.licenses.free; }; }) {}; - typed-clojure-mode = callPackage ({ cider - , clojure-mode - , fetchFromGitHub - , fetchurl - , lib - , melpaBuild }: - melpaBuild { - pname = "typed-clojure-mode"; - ename = "typed-clojure-mode"; - version = "1.0.0"; - src = fetchFromGitHub { - owner = "typedclojure"; - repo = "typed-clojure-mode"; - rev = "03f01f5bfa93247f8f7958a8a45cf83604f7d96e"; - sha256 = "0d6i5n3s6b0q0c06ix7vm7iwx5zi4j7h2yygcsbzwyza1z284ry5"; - }; - recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/961471c194b508a5025f00a5be02d316b26f330a/recipes/typed-clojure-mode"; - sha256 = "1579zkhk2lwl5ij7dm9n2drggs5fmhpljrshc4ghhvig7nlyqjy3"; - name = "recipe"; - }; - packageRequires = [ cider clojure-mode ]; - meta = { - homepage = "https://melpa.org/#/typed-clojure-mode"; - license = lib.licenses.free; - }; - }) {}; typescript-mode = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -49521,14 +50458,14 @@ ename = "typescript-mode"; version = "0.3"; src = fetchFromGitHub { - owner = "ananthakumaran"; + owner = "emacs-typescript"; repo = "typescript.el"; rev = "7a5c74d88e3c5513cc4431a837003736f905a75e"; sha256 = "002f1xfhq43fjaqliwrgxspryfahpa82va5dw3p8kwil2xwvc6mh"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/d3f534a1e2cee4ad2e32e32802c5080207417b3d/recipes/typescript-mode"; - sha256 = "01jyqy44ir59n9c2f6gh4xzwfmzdpnys1lw4lnsy6kirqgbsq9ha"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/94455323364d5a6b00e2786d577134eb350826b4/recipes/typescript-mode"; + sha256 = "1abnik2dq0zfnp8pk8x6zy962qww78xadm87xyiwz17559g88d82"; name = "recipe"; }; packageRequires = []; @@ -49816,12 +50753,12 @@ melpaBuild { pname = "unicode-fonts"; ename = "unicode-fonts"; - version = "0.4.8"; + version = "0.4.10"; src = fetchFromGitHub { owner = "rolandwalker"; repo = "unicode-fonts"; - rev = "a36597d83e0248bd0e6b2c1d5fb95bff72add527"; - sha256 = "0fbwncna6gxlynq9196djpkjhayzk8kxlsxg0gasdgqx1nyxl0mk"; + rev = "7b88ae84e589f6c8b9386b2fb5a02ff4ccb91169"; + sha256 = "07wzcfj92jiadgd6nj5rmxky2aiaxs89j7zywp877xdp4vv0v512"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/83459421dd2eb3d60ec668c3d5bb38d99ee64aff/recipes/unicode-fonts"; @@ -49923,26 +50860,27 @@ license = lib.licenses.free; }; }) {}; - unkillable-scratch = callPackage ({ fetchFromGitHub + unkillable-scratch = callPackage ({ emacs + , fetchFromGitHub , fetchurl , lib , melpaBuild }: melpaBuild { pname = "unkillable-scratch"; ename = "unkillable-scratch"; - version = "0.1"; + version = "1.0.0"; src = fetchFromGitHub { owner = "EricCrosson"; repo = "unkillable-scratch"; - rev = "85e01b6da499a05bc920ca7958f0642c76dd9ce2"; - sha256 = "0j513ia8mfa4i8h1z0m00k65g89fdcdp6h37bdm2ymy4g26wbk6n"; + rev = "dac9dbed946a26829e6227ac15c0fa1d07ccd05f"; + sha256 = "0fgipv93x47cvyww07cqx8xa95jz36y6fy5rmaq40jnnmdkgq862"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/822ac5610f333e41b676a29ef45a6f8bfea3162e/recipes/unkillable-scratch"; sha256 = "0ghbpa9pf7k6vd2mjxkpqg2qfl4sd40ir6mrk1rxr1rv8s0afkf7"; name = "recipe"; }; - packageRequires = []; + packageRequires = [ emacs ]; meta = { homepage = "https://melpa.org/#/unkillable-scratch"; license = lib.licenses.free; @@ -49976,7 +50914,7 @@ }; }) {}; use-package = callPackage ({ bind-key - , diminish + , emacs , fetchFromGitHub , fetchurl , lib @@ -49984,24 +50922,53 @@ melpaBuild { pname = "use-package"; ename = "use-package"; - version = "2.3"; + version = "2.4"; src = fetchFromGitHub { owner = "jwiegley"; repo = "use-package"; - rev = "cd58b268a8a025451c11c3cb1ba18d4f27f245da"; - sha256 = "14x01dg7fgj4icf8l8w90pksazc0sn6qrrd0k3xjr2zg1wzdcang"; + rev = "39a8b8812c2c9f6f0b299e6a04e504ef393694ce"; + sha256 = "1b7mjjh0d6fmkkd9vyj64vca27xqhga0nvyrrcqxpqjn62zq046y"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/51a19a251c879a566d4ae451d94fcb35e38a478b/recipes/use-package"; sha256 = "0d0zpgxhj6crsdi9sfy30fn3is036apm1kz8fhjg1yzdapf1jdyp"; name = "recipe"; }; - packageRequires = [ bind-key diminish ]; + packageRequires = [ bind-key emacs ]; meta = { homepage = "https://melpa.org/#/use-package"; license = lib.licenses.free; }; }) {}; + use-package-chords = callPackage ({ bind-chord + , bind-key + , fetchFromGitHub + , fetchurl + , key-chord + , lib + , melpaBuild + , use-package }: + melpaBuild { + pname = "use-package-chords"; + ename = "use-package-chords"; + version = "2.4"; + src = fetchFromGitHub { + owner = "jwiegley"; + repo = "use-package"; + rev = "763bf5337dab14b318a3ddce29140de1ed8fb35b"; + sha256 = "08v4rsl3x5dj7ihpnzbyxjbg2ls2kybcsb0rcxjh5anj4hmcsyly"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/6240afa625290187785e4b7535ee7b0d7aad8969/recipes/use-package-chords"; + sha256 = "1217l0gpxcp8532p0d3g1xd2015qpx2g5xm0kwsbxdmffqqdaar3"; + name = "recipe"; + }; + packageRequires = [ bind-chord bind-key key-chord use-package ]; + meta = { + homepage = "https://melpa.org/#/use-package-chords"; + license = lib.licenses.free; + }; + }) {}; use-package-el-get = callPackage ({ fetchFromGitLab , fetchurl , lib @@ -50028,6 +50995,60 @@ license = lib.licenses.free; }; }) {}; + use-package-ensure-system-package = callPackage ({ fetchFromGitHub + , fetchurl + , lib + , melpaBuild + , system-packages + , use-package }: + melpaBuild { + pname = "use-package-ensure-system-package"; + ename = "use-package-ensure-system-package"; + version = "2.4"; + src = fetchFromGitHub { + owner = "jwiegley"; + repo = "use-package"; + rev = "2b89ca4b9102baaf3f84f3fc8177c8a17288e291"; + sha256 = "18xpjqvnrk72jybbd5xipnsbngkj38hqd9vfq0kb42fhiv1v5b92"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/6240afa625290187785e4b7535ee7b0d7aad8969/recipes/use-package-ensure-system-package"; + sha256 = "1cl61nwgsz5dh3v9rdiww8mq2k1sbx27gr6izb4ij4pnzjp7aaj6"; + name = "recipe"; + }; + packageRequires = [ system-packages use-package ]; + meta = { + homepage = "https://melpa.org/#/use-package-ensure-system-package"; + license = lib.licenses.free; + }; + }) {}; + use-package-hydra = callPackage ({ emacs + , fetchFromGitLab + , fetchurl + , lib + , melpaBuild + , use-package }: + melpaBuild { + pname = "use-package-hydra"; + ename = "use-package-hydra"; + version = "0.2"; + src = fetchFromGitLab { + owner = "to1ne"; + repo = "use-package-hydra"; + rev = "8cd55a1128fbdf6327bb38a199d206225896d146"; + sha256 = "19dja25illcvwpx8j1kigw8dzby41bm57prx1bhaxkmsakxyl863"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/28589bb76442601930a4591e200c8e1db119caf6/recipes/use-package-hydra"; + sha256 = "0q2qfav2y1p6vxfvdblqlpjmj0z7z8w843jpry9g07d8kc4959f6"; + name = "recipe"; + }; + packageRequires = [ emacs use-package ]; + meta = { + homepage = "https://melpa.org/#/use-package-hydra"; + license = lib.licenses.free; + }; + }) {}; usql = callPackage ({ emacs , fetchFromGitHub , fetchurl @@ -50161,6 +51182,32 @@ license = lib.licenses.free; }; }) {}; + vc-hgcmd = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "vc-hgcmd"; + ename = "vc-hgcmd"; + version = "1.3.1"; + src = fetchFromGitHub { + owner = "muffinmad"; + repo = "emacs-vc-hgcmd"; + rev = "261ef39b61849326e52465c3a26c3cc7ba0d7610"; + sha256 = "09g91xlm53g1ic4w9k3f7frxhvmggrpswipw6vhgk3fzbjm2d94m"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/111142342ab81dcaa88a831ba620be499a334c3f/recipes/vc-hgcmd"; + sha256 = "11p8r94s72x47nkxlarxwy33im167jpjas8b9i8dkrz2iggwn5xk"; + name = "recipe"; + }; + packageRequires = [ emacs ]; + meta = { + homepage = "https://melpa.org/#/vc-hgcmd"; + license = lib.licenses.free; + }; + }) {}; vc-msg = callPackage ({ emacs , fetchFromGitHub , fetchurl @@ -50297,6 +51344,33 @@ license = lib.licenses.free; }; }) {}; + vdm-comint = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild + , vdm-mode }: + melpaBuild { + pname = "vdm-comint"; + ename = "vdm-comint"; + version = "0.0.4"; + src = fetchFromGitHub { + owner = "peterwvj"; + repo = "vdm-mode"; + rev = "e131edb0d35de28bd47d6128dd70d9a6fc46e0fa"; + sha256 = "090a0imk7dr6vqq4lf806pvajqc499x2gmi0k7rgc1696rbyzhb5"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/077f586e59fe3b6085e1f19b3c18b218de5d4046/recipes/vdm-comint"; + sha256 = "1r7jg7dkzfs4n230n0jk23w0ncqsiwkslf2gmjfzfqg8qklr9bhs"; + name = "recipe"; + }; + packageRequires = [ emacs vdm-mode ]; + meta = { + homepage = "https://melpa.org/#/vdm-comint"; + license = lib.licenses.free; + }; + }) {}; vdm-mode = callPackage ({ emacs , fetchFromGitHub , fetchurl @@ -50305,16 +51379,16 @@ melpaBuild { pname = "vdm-mode"; ename = "vdm-mode"; - version = "0.0.3"; + version = "0.0.4"; src = fetchFromGitHub { owner = "peterwvj"; repo = "vdm-mode"; - rev = "0c083ee4848ea5d78de7894a4a0722d6630839c9"; - sha256 = "175zlxxjxl7zp80hm2hz5xw7gy3qh0hz3fdvqy8v3n0vz4zvqx1k"; + rev = "e131edb0d35de28bd47d6128dd70d9a6fc46e0fa"; + sha256 = "090a0imk7dr6vqq4lf806pvajqc499x2gmi0k7rgc1696rbyzhb5"; }; recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/f246b9dcf7915a845b9e2cd44cc1a0833b412c8f/recipes/vdm-mode"; - sha256 = "0paafpyzncl2325ly89591jnxhl9zc8jwsphav38nw0fsm9r9ah9"; + url = "https://raw.githubusercontent.com/milkypostman/melpa/70a6c89d41235f7e8463a47400004a32b2979a5a/recipes/vdm-mode"; + sha256 = "1h72731vcsjqsbii1wbzpa114x09aqbkbnz5fg9fnjq9rybz6rn7"; name = "recipe"; }; packageRequires = [ emacs ]; @@ -50332,12 +51406,12 @@ melpaBuild { pname = "vdm-snippets"; ename = "vdm-snippets"; - version = "0.0.3"; + version = "0.0.4"; src = fetchFromGitHub { owner = "peterwvj"; repo = "vdm-mode"; - rev = "0c083ee4848ea5d78de7894a4a0722d6630839c9"; - sha256 = "175zlxxjxl7zp80hm2hz5xw7gy3qh0hz3fdvqy8v3n0vz4zvqx1k"; + rev = "e131edb0d35de28bd47d6128dd70d9a6fc46e0fa"; + sha256 = "090a0imk7dr6vqq4lf806pvajqc499x2gmi0k7rgc1696rbyzhb5"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/f246b9dcf7915a845b9e2cd44cc1a0833b412c8f/recipes/vdm-snippets"; @@ -51010,12 +52084,12 @@ melpaBuild { pname = "web-mode-edit-element"; ename = "web-mode-edit-element"; - version = "2.1"; + version = "2.2"; src = fetchFromGitHub { owner = "jtkDvlp"; repo = "web-mode-edit-element"; - rev = "8b8ac07aa8c920dafd94c96a51effb0d6c0ed1ce"; - sha256 = "0aj1ibmnrbaxrkwjf1fac2qzazrj39pql3prcibnchc2bmp191aa"; + rev = "30f0f697212a85a9b881549fc272fa7c96d3e703"; + sha256 = "1qnk4skzj6b47h8c2yg05hc7iv8y4102izlfc490307y264rv051"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/855ea20024b606314f8590129259747cac0bcc97/recipes/web-mode-edit-element"; @@ -51064,12 +52138,12 @@ melpaBuild { pname = "webpaste"; ename = "webpaste"; - version = "2.1.0"; + version = "3.0.0"; src = fetchFromGitHub { owner = "etu"; repo = "webpaste.el"; - rev = "2da60b8857d107721b089346121a7d51296a58bf"; - sha256 = "1r945qz7z5z80qvzlqvz985mz51zy3pj3fk36y0flc380y4ap6hd"; + rev = "521de6d9d50d1e382bc5425749c3d4958b321c9b"; + sha256 = "11981fhh8vf6cjvcppg5ilk0yysfx91jhglk7jz49i5a3wwygxc3"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/13847d91c1780783e516943adee8a3530c757e17/recipes/webpaste"; @@ -51169,12 +52243,12 @@ melpaBuild { pname = "wgrep"; ename = "wgrep"; - version = "2.1.10"; + version = "2.3.0"; src = fetchFromGitHub { owner = "mhayashi1120"; repo = "Emacs-wgrep"; - rev = "3028e9b31427c528d9343d458abcb2222813410f"; - sha256 = "1gc3xwj7dffwpmjq1189x27ij25v2pp909xpdxc69a01yx5474i1"; + rev = "b22834e4597b5dfe06621d23cf93351d790df930"; + sha256 = "07p0wwigc99hx09n5fkzf5yxkr7z19rqy8wgxk5m1pyp1i75wiq8"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/9648e3df896fcd97b3757a727108bc78261973cc/recipes/wgrep"; @@ -51195,7 +52269,7 @@ melpaBuild { pname = "wgrep-ack"; ename = "wgrep-ack"; - version = "2.1.10"; + version = "2.3.0"; src = fetchFromGitHub { owner = "mhayashi1120"; repo = "Emacs-wgrep"; @@ -51221,12 +52295,12 @@ melpaBuild { pname = "wgrep-ag"; ename = "wgrep-ag"; - version = "2.1.10"; + version = "2.3.0"; src = fetchFromGitHub { owner = "mhayashi1120"; repo = "Emacs-wgrep"; - rev = "9448a9d597bd089ae61e58add2c5dbecb0aa2b8f"; - sha256 = "0x27h0ccq93avsmb8gim43zklbsb4ghfw30a7hjvz0ilfx02gdca"; + rev = "36c5e8d0e03bc16b19d30a603730065f74b5b767"; + sha256 = "0pgyf9vfcahb495q01hi1mvkmv846w4rj6zyf52is8x7sjj7x44s"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/2c50b704343c4cac5e2a62a67e284ba6d8e15f8a/recipes/wgrep-ag"; @@ -51247,12 +52321,12 @@ melpaBuild { pname = "wgrep-helm"; ename = "wgrep-helm"; - version = "2.1.10"; + version = "2.3.0"; src = fetchFromGitHub { owner = "mhayashi1120"; repo = "Emacs-wgrep"; - rev = "976eb41327e9c15c3be860a9d9962b3c3df9712e"; - sha256 = "1nh9gl1k54w7402fkphgw35bq3lljhv1alaaig2xfrjcm5x2phwv"; + rev = "36c5e8d0e03bc16b19d30a603730065f74b5b767"; + sha256 = "0pgyf9vfcahb495q01hi1mvkmv846w4rj6zyf52is8x7sjj7x44s"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/9648e3df896fcd97b3757a727108bc78261973cc/recipes/wgrep-helm"; @@ -51273,7 +52347,7 @@ melpaBuild { pname = "wgrep-pt"; ename = "wgrep-pt"; - version = "2.1.10"; + version = "2.3.0"; src = fetchFromGitHub { owner = "mhayashi1120"; repo = "Emacs-wgrep"; @@ -51299,12 +52373,12 @@ melpaBuild { pname = "which-key"; ename = "which-key"; - version = "3.3.0"; + version = "3.3.1"; src = fetchFromGitHub { owner = "justbur"; repo = "emacs-which-key"; - rev = "ff79dfff66f880885c5893dd6fd05dc51173a476"; - sha256 = "0x9bmm4s5gq9k9x1rkwxr8zz8p2hgsxvzpji138m8m4j809l6cn4"; + rev = "2f5661646b771f6c5a00a8a9aaa3f183abd5f84d"; + sha256 = "1dh6kr00wmql46whjkvnl953zngiv5j99ypvr1b3cb2174623afb"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/315865a3df97c0694f648633d44b8b34df1ac76d/recipes/which-key"; @@ -51658,12 +52732,12 @@ melpaBuild { pname = "winum"; ename = "winum"; - version = "2.0.0"; + version = "2.1.0"; src = fetchFromGitHub { owner = "deb0ch"; repo = "emacs-winum"; - rev = "c56d1cdb8d1723eb4c0d7a7eb3ecd2697739146c"; - sha256 = "09jd5srlnd4060hs719qil84ssmnvq196bz7ywaswgapv1gs1h6r"; + rev = "efcb14fd306afbc738666e6b2e5a8a1bb5904392"; + sha256 = "0v1qmw3svydk7dlqbcymy1g1bygkfpb2h4b97zdp12xvd8mww9ny"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/c1caa7a54a910a44322fdee300e8cce6ddcde071/recipes/winum"; @@ -51676,29 +52750,6 @@ license = lib.licenses.free; }; }) {}; - wisp-mode = callPackage ({ fetchhg - , fetchurl - , lib - , melpaBuild }: - melpaBuild { - pname = "wisp-mode"; - version = "0.9.8"; - src = fetchhg { - url = "https://bitbucket.com/ArneBab/wisp"; - rev = "d04938232934"; - sha256 = "1sjadb0kh3hrdsvwywi04agrzrs21sxzh1v1km0z3x6f15nr048c"; - }; - recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/5b7972602399f9df9139cff177e38653bb0f43ed/recipes/wisp-mode"; - sha256 = "10zkp1qbvl8dmxij7zz4p1fixs3891xr1nr57vyb3llar9fgzglc"; - name = "wisp-mode"; - }; - packageRequires = []; - meta = { - homepage = "https://melpa.org/#/wisp-mode"; - license = lib.licenses.free; - }; - }) {}; wispjs-mode = callPackage ({ clojure-mode , fetchFromGitHub , fetchurl @@ -51734,12 +52785,12 @@ melpaBuild { pname = "with-editor"; ename = "with-editor"; - version = "2.7.4"; + version = "2.8.1"; src = fetchFromGitHub { owner = "magit"; repo = "with-editor"; - rev = "3e6424764ee06fb50c580283baea3851c6f9ea66"; - sha256 = "0xawvwvkqdy5hhbz9mbclha18w8nd36d9nyf7b6s2f5dw7xnlyb0"; + rev = "9dd9f176d96abc60365369de6d08c26c414ef1f3"; + sha256 = "16a71mld7knf5ppv4szlkfdq44cqi36jqmscn0fssffhg33xh8cs"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/8c52c840dc35f3fd17ec660e113ddbb53aa99076/recipes/with-editor"; @@ -51780,6 +52831,33 @@ license = lib.licenses.free; }; }) {}; + with-venv = callPackage ({ cl-lib ? null + , emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild }: + melpaBuild { + pname = "with-venv"; + ename = "with-venv"; + version = "0.0.1"; + src = fetchFromGitHub { + owner = "10sr"; + repo = "with-venv-el"; + rev = "d12341b93420f4acd7a277ed0cd4a54767bc5bd6"; + sha256 = "0knv2ybf4sbn31zyg9ms44mxvmvg7b51krq320g8fpcpa1bq28s6"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/555a2e49f18fbae59913459466babf8d55bd2151/recipes/with-venv"; + sha256 = "090jird410wn2w9pwr2d9pjw5xghcdxc4l578zay2akygg3c6blm"; + name = "recipe"; + }; + packageRequires = [ cl-lib emacs ]; + meta = { + homepage = "https://melpa.org/#/with-venv"; + license = lib.licenses.free; + }; + }) {}; wn-mode = callPackage ({ emacs , fetchFromGitHub , fetchurl @@ -52103,12 +53181,12 @@ melpaBuild { pname = "wucuo"; ename = "wucuo"; - version = "0.0.3"; + version = "0.0.4"; src = fetchFromGitHub { owner = "redguardtoo"; repo = "wucuo"; - rev = "2657e78246001848fe1140c9d90cb96d796d5887"; - sha256 = "0s3ipmrw3gqyq6y4pxjm8cpnsar5hh27lclhjq7277zlbl3da32c"; + rev = "4e988c101fe82f2e8c7b3710d15982fe28b8d32d"; + sha256 = "0g558miz9f4g8jlq532fs9yxj3il62zajgcjfndall2853hn54af"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/819cacef2c31d750829980f3f6c3bfb72f36bbdd/recipes/wucuo"; @@ -52455,6 +53533,33 @@ license = lib.licenses.free; }; }) {}; + yaml-imenu = callPackage ({ emacs + , fetchFromGitHub + , fetchurl + , lib + , melpaBuild + , yaml-mode }: + melpaBuild { + pname = "yaml-imenu"; + ename = "yaml-imenu"; + version = "1.0.1"; + src = fetchFromGitHub { + owner = "knu"; + repo = "yaml-imenu.el"; + rev = "78a383098807014d9e7f2941196d8271677158cd"; + sha256 = "1f85m0h19wjb0xrwkxrh7vrpphm8l5nkrv82zsl097dqw3ijj3f1"; + }; + recipe = fetchurl { + url = "https://raw.githubusercontent.com/milkypostman/melpa/71e7c2df9e34093ad2634d5a56133fa30126fb5c/recipes/yaml-imenu"; + sha256 = "03r7020gyr96m1z7p947nb7z8szzlkqv21g1hm10sqa8qp7k0qli"; + name = "recipe"; + }; + packageRequires = [ emacs yaml-mode ]; + meta = { + homepage = "https://melpa.org/#/yaml-imenu"; + license = lib.licenses.free; + }; + }) {}; yaml-mode = callPackage ({ emacs , fetchFromGitHub , fetchurl @@ -52666,12 +53771,12 @@ melpaBuild { pname = "yasnippet-snippets"; ename = "yasnippet-snippets"; - version = "0.5"; + version = "0.7"; src = fetchFromGitHub { owner = "AndreaCrotti"; repo = "yasnippet-snippets"; - rev = "d153af6d1d8ab8dfbc57f4065cee72f86d5cd2c4"; - sha256 = "0dkhac40kiyqnq42c2fcdb1jzshgakabq4rq796qfhjpc5j8x5wk"; + rev = "88e209997a93f290206bb6e8c7c81d03307ae486"; + sha256 = "0rlg8zlg15kpayvwszif5axwfvd9kc60ipppbfhcypas2gmw35ys"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/42490bbdac871bce302fbc9a0488ff7de354627e/recipes/yasnippet-snippets"; @@ -52711,29 +53816,6 @@ license = lib.licenses.free; }; }) {}; - yatex = callPackage ({ fetchhg - , fetchurl - , lib - , melpaBuild }: - melpaBuild { - pname = "yatex"; - version = "1.80"; - src = fetchhg { - url = "https://www.yatex.org/hgrepos/yatex"; - rev = "af4601ee3c6a"; - sha256 = "1r0irbkg8c5aapd1i7il31wv2fmhi0bzspiy21k670m896jqx50p"; - }; - recipe = fetchurl { - url = "https://raw.githubusercontent.com/milkypostman/melpa/9854c39fc1889891fe460d0d5ac9224de3f6c635/recipes/yatex"; - sha256 = "1qbqdsqf5s61hyyzx84csnby242n5sdcmcw55pa8r16j8kyzgrc0"; - name = "yatex"; - }; - packageRequires = []; - meta = { - homepage = "https://melpa.org/#/yatex"; - license = lib.licenses.free; - }; - }) {}; yaxception = callPackage ({ fetchFromGitHub , fetchurl , lib @@ -52944,12 +54026,12 @@ melpaBuild { pname = "zenburn-theme"; ename = "zenburn-theme"; - version = "2.5"; + version = "2.6"; src = fetchFromGitHub { owner = "bbatsov"; repo = "zenburn-emacs"; - rev = "f031c785b469cf4356fddb997eccf60399e34235"; - sha256 = "029955wp29wdrk1ddmhxixd76vhkp2li3mjaknw9d8iqz819vshc"; + rev = "fdb1a9ca91ba04ed76a85af39890e1943774706b"; + sha256 = "15g8dk5qdx8r54ccawy6gyprvms7zp7cgf5pwf24b829l2mrrs6r"; }; recipe = fetchurl { url = "https://raw.githubusercontent.com/milkypostman/melpa/091dcc3775ec2137cb61d66df4e72aca4900897a/recipes/zenburn-theme"; diff --git a/pkgs/applications/editors/emacs-modes/melpa-stable-packages.nix b/pkgs/applications/editors/emacs-modes/melpa-stable-packages.nix index 98927cbd987..49486df9a3f 100644 --- a/pkgs/applications/editors/emacs-modes/melpa-stable-packages.nix +++ b/pkgs/applications/editors/emacs-modes/melpa-stable-packages.nix @@ -35,9 +35,6 @@ self: }); overrides = { - # upstream issue: mismatched filename - ack-menu = markBroken super.ack-menu; - # Expects bash to be at /bin/bash ac-rtags = markBroken super.ac-rtags; @@ -102,9 +99,6 @@ self: # build timeout graphene = markBroken super.graphene; - # upstream issue: mismatched filename - helm-lobsters = markBroken super.helm-lobsters; - # Expects bash to be at /bin/bash helm-rtags = markBroken super.helm-rtags; @@ -134,9 +128,6 @@ self: # upstream issue: missing file header link = markBroken super.link; - # upstream issue: mismatched filename - link-hint = markBroken super.link-hint; - # upstream issue: missing file header maxframe = markBroken super.maxframe; @@ -157,6 +148,12 @@ self: (attrs.nativeBuildInputs or []) ++ [ external.git ]; }); + magit-filenotify = super.magit-filenotify.overrideAttrs (attrs: { + # searches for Git at build time + nativeBuildInputs = + (attrs.nativeBuildInputs or []) ++ [ external.git ]; + }); + # missing OCaml merlin = markBroken super.merlin; @@ -179,9 +176,6 @@ self: # upstream issue: truncated file powershell = markBroken super.powershell; - # upstream issue: mismatched filename - processing-snippets = markBroken super.processing-snippets; - # upstream issue: missing file header qiita = markBroken super.qiita; diff --git a/pkgs/applications/editors/emacs-modes/org-generated.nix b/pkgs/applications/editors/emacs-modes/org-generated.nix index 1cca56ce8f8..6881ccd784e 100644 --- a/pkgs/applications/editors/emacs-modes/org-generated.nix +++ b/pkgs/applications/editors/emacs-modes/org-generated.nix @@ -4,10 +4,10 @@ elpaBuild { pname = "org"; ename = "org"; - version = "20180910"; + version = "20181230"; src = fetchurl { - url = "http://orgmode.org/elpa/org-20180910.tar"; - sha256 = "1j4n0a07bxjbdzx3dipxgi0h5r0yimwylp9cnzfm6m7nc7kas2sq"; + url = "http://orgmode.org/elpa/org-20181230.tar"; + sha256 = "1ydl6cikf4myrz59qvajbdxg1bvbpqjlkxn54qhrhh4755llcfkv"; }; packageRequires = []; meta = { @@ -19,10 +19,10 @@ elpaBuild { pname = "org-plus-contrib"; ename = "org-plus-contrib"; - version = "20180910"; + version = "20181230"; src = fetchurl { - url = "http://orgmode.org/elpa/org-plus-contrib-20180910.tar"; - sha256 = "17inl07kjdjamlqbyxbp42kx1nkbhbhz7lzqfvkhk6s7z16qvksq"; + url = "http://orgmode.org/elpa/org-plus-contrib-20181230.tar"; + sha256 = "0gibwcjlardjwq19bh0zzszv0dxxlml0rh5iikkcdynbgndk1aa1"; }; packageRequires = []; meta = { diff --git a/pkgs/applications/editors/emacs-modes/remember/default.nix b/pkgs/applications/editors/emacs-modes/remember/default.nix deleted file mode 100644 index 7c0bc517755..00000000000 --- a/pkgs/applications/editors/emacs-modes/remember/default.nix +++ /dev/null @@ -1,45 +0,0 @@ -{ fetchurl, stdenv, texinfo, emacs, bbdb }: - -stdenv.mkDerivation rec { - # Note: Remember is part of GNU Emacs 23. - name = "remember-2.0"; - - src = fetchurl { - url = "http://download.gna.org/remember-el/${name}.tar.gz"; - sha256 = "04bp071xjbb6mbspjpwcza0krgx2827v6rfxbsdcpn0qcjgad9wm"; - }; - - # FIXME: It also has a (soft) dependency on Planner and Bibl-mode. - buildInputs = [ emacs bbdb texinfo ]; - - patchPhase = '' - sed -i "Makefile.defs" \ - -e"s|^ *PREFIX *=.*$|PREFIX = $out|g ; - s|^ *ELISPDIR *=.*$|ELISPDIR = $out/share/emacs/site-lisp|g ; - s|^ *EMACS *=.*$|EMACS = emacs -L \"${bbdb}/share/emacs/site-lisp\"|g" - ''; - - meta = { - description = "Remember, an Emacs mode for quickly remembering data"; - - longDescription = '' - Remember is an Emacs mode for quickly remembering data. It uses - whatever back-end is appropriate to record and correlate the - data, but its main intention is to allow you to express as - little structure as possible up front. - - When you enter data, either by typing it into a buffer, or using - the contents of the selected region, Remember will store that - data -- unindexed, uninterpreted -- in a data pool. It will - also try to remember as much context information as possible - (any text properties that were set, where you copied it from, - when, how, etc). Later, you can walk through your accumulated - set of data (both organized, and unorganized) and easily begin - moving things around, and making annotations that will express - the full meaning of that data, as far as you know it. - ''; - - homepage = http://gna.org/projects/remember-el/; - license = stdenv.lib.licenses.gpl2Plus; - }; -} diff --git a/pkgs/applications/editors/emacs/25.nix b/pkgs/applications/editors/emacs/25.nix index ee21bbbd9bd..d9f0b211f15 100644 --- a/pkgs/applications/editors/emacs/25.nix +++ b/pkgs/applications/editors/emacs/25.nix @@ -1,7 +1,7 @@ { stdenv, lib, fetchurl, ncurses, xlibsWrapper, libXaw, libXpm, Xaw3d , pkgconfig, gettext, libXft, dbus, libpng, libjpeg, libungif , libtiff, librsvg, gconf, libxml2, imagemagick, gnutls, libselinux -, alsaLib, cairo, acl, gpm, AppKit, GSS, ImageIO +, alsaLib, cairo, acl, gpm, cf-private, AppKit, GSS, ImageIO , withX ? !stdenv.isDarwin , withGTK2 ? false, gtk2 ? null , withGTK3 ? true, gtk3 ? null, gsettings-desktop-schemas ? null @@ -61,9 +61,12 @@ stdenv.mkDerivation rec { ++ lib.optional (withX && withGTK2) gtk2 ++ lib.optionals (withX && withGTK3) [ gtk3 gsettings-desktop-schemas ] ++ lib.optional (stdenv.isDarwin && withX) cairo - ++ lib.optionals (withX && withXwidgets) [ webkitgtk24x-gtk3 glib-networking ]; - - propagatedBuildInputs = lib.optionals stdenv.isDarwin [ AppKit GSS ImageIO ]; + ++ lib.optionals (withX && withXwidgets) [ webkitgtk24x-gtk3 glib-networking ] + ++ lib.optionals stdenv.isDarwin [ + AppKit GSS ImageIO + # Needed for CFNotificationCenterAddObserver symbols. + cf-private + ]; hardeningDisable = [ "format" ]; @@ -111,7 +114,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "The extensible, customizable GNU text editor"; - homepage = http://www.gnu.org/software/emacs/; + homepage = https://www.gnu.org/software/emacs/; license = licenses.gpl3Plus; maintainers = with maintainers; [ chaoflow lovek323 peti the-kenny jwiegley ]; platforms = platforms.all; diff --git a/pkgs/applications/editors/emacs/builder.sh b/pkgs/applications/editors/emacs/builder.sh deleted file mode 100644 index 545520cca7c..00000000000 --- a/pkgs/applications/editors/emacs/builder.sh +++ /dev/null @@ -1,40 +0,0 @@ -source $stdenv/setup - -# This hook is supposed to be run on Linux. It patches the proper locations of -# the crt{1,i,n}.o files into the build to ensure that Emacs is linked with -# *our* versions, not the ones found in the system, as it would do by default. -# On other platforms, this appears to be unnecessary. -preConfigure() { - ./autogen.sh - - for i in Makefile.in ./src/Makefile.in ./lib-src/Makefile.in ./leim/Makefile.in; do - substituteInPlace $i --replace /bin/pwd pwd - done - - case "${system}" in - x86_64-linux) glibclibdir=lib64 ;; - i686-linux) glibclibdir=lib ;; - *) return; - esac - - libc=$(cat ${NIX_CC}/nix-support/orig-libc) - echo "libc: $libc" - - for i in src/s/*.h src/m/*.h; do - substituteInPlace $i \ - --replace /usr/${glibclibdir}/crt1.o $libc/${glibclibdir}/crt1.o \ - --replace /usr/${glibclibdir}/crti.o $libc/${glibclibdir}/crti.o \ - --replace /usr/${glibclibdir}/crtn.o $libc/${glibclibdir}/crtn.o \ - --replace /usr/lib/crt1.o $libc/${glibclibdir}/crt1.o \ - --replace /usr/lib/crti.o $libc/${glibclibdir}/crti.o \ - --replace /usr/lib/crtn.o $libc/${glibclibdir}/crtn.o - done -} - -preInstall () { - for i in Makefile.in ./src/Makefile.in ./lib-src/Makefile.in ./leim/Makefile.in; do - substituteInPlace $i --replace /bin/pwd pwd - done -} - -genericBuild diff --git a/pkgs/applications/editors/emacs/default.nix b/pkgs/applications/editors/emacs/default.nix index c1bfdf8157d..948d8cb9867 100644 --- a/pkgs/applications/editors/emacs/default.nix +++ b/pkgs/applications/editors/emacs/default.nix @@ -1,7 +1,7 @@ { stdenv, lib, fetchurl, ncurses, xlibsWrapper, libXaw, libXpm, Xaw3d , pkgconfig, gettext, libXft, dbus, libpng, libjpeg, libungif , libtiff, librsvg, gconf, libxml2, imagemagick, gnutls, libselinux -, alsaLib, cairo, acl, gpm, AppKit, GSS, ImageIO, m17n_lib, libotf +, alsaLib, cairo, acl, gpm, cf-private, AppKit, GSS, ImageIO, m17n_lib, libotf , systemd ? null , withX ? !stdenv.isDarwin , withNS ? stdenv.isDarwin @@ -64,9 +64,12 @@ 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 ]; - - propagatedBuildInputs = lib.optionals withNS [ AppKit GSS ImageIO ]; + ++ lib.optionals (withX && withXwidgets) [ webkitgtk ] + ++ lib.optionals withNS [ + AppKit GSS ImageIO + # Needed for CFNotificationCenterAddObserver symbols. + cf-private + ]; hardeningDisable = [ "format" ]; @@ -116,7 +119,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "The extensible, customizable GNU text editor"; - homepage = http://www.gnu.org/software/emacs/; + homepage = https://www.gnu.org/software/emacs/; license = licenses.gpl3Plus; maintainers = with maintainers; [ chaoflow lovek323 peti the-kenny jwiegley ]; platforms = platforms.all; diff --git a/pkgs/applications/editors/emacs/macport.nix b/pkgs/applications/editors/emacs/macport.nix index 71a41da5747..4eb0fecec40 100644 --- a/pkgs/applications/editors/emacs/macport.nix +++ b/pkgs/applications/editors/emacs/macport.nix @@ -1,16 +1,14 @@ { stdenv, fetchurl, ncurses, pkgconfig, texinfo, libxml2, gnutls, gettext, autoconf, automake -, AppKit, Carbon, Cocoa, IOKit, OSAKit, Quartz, QuartzCore, WebKit +, cf-private, AppKit, Carbon, Cocoa, IOKit, OSAKit, Quartz, QuartzCore, WebKit , ImageCaptureCore, GSS, ImageIO # These may be optional }: stdenv.mkDerivation rec { emacsVersion = "26.1"; emacsName = "emacs-${emacsVersion}"; - macportVersion = "7.2"; + macportVersion = "7.4"; name = "emacs-mac-${emacsVersion}-${macportVersion}"; - builder = ./builder.sh; - src = fetchurl { url = "mirror://gnu/emacs/${emacsName}.tar.xz"; sha256 = "0b6k1wq44rc8gkvxhi1bbjxbz3cwg29qbq8mklq2az6p1hjgrx0w"; @@ -18,7 +16,7 @@ stdenv.mkDerivation rec { macportSrc = fetchurl { url = "ftp://ftp.math.s.chiba-u.ac.jp/emacs/${emacsName}-mac-${macportVersion}.tar.gz"; - sha256 = "0j4dcjv7kh84d6lzzxdzambk6ybbdr2j7r63nkbivssjv29z7zag"; + sha256 = "1xl3rfqw1f3jil20xf6iy0f1hdk9adj8rnv7xhcjq4pymj4w8ka6"; }; hiresSrc = fetchurl { @@ -35,6 +33,8 @@ stdenv.mkDerivation rec { buildInputs = [ ncurses libxml2 gnutls texinfo gettext AppKit Carbon Cocoa IOKit OSAKit Quartz QuartzCore WebKit ImageCaptureCore GSS ImageIO # may be optional + # Needed for CFNotificationCenterAddObserver symbols. + cf-private ]; postUnpack = '' @@ -76,7 +76,7 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "The extensible, customizable text editor"; - homepage = http://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/emacs/site-start.el b/pkgs/applications/editors/emacs/site-start.el index cc1ab1d0e30..34addc33a59 100644 --- a/pkgs/applications/editors/emacs/site-start.el +++ b/pkgs/applications/editors/emacs/site-start.el @@ -30,7 +30,7 @@ least specific (the system profile)" woman-manpath))) ;;; Make tramp work for remote NixOS machines -(eval-after-load 'tramp +(eval-after-load 'tramp-sh ;; TODO: We should also add the other `NIX_PROFILES' to this path. ;; However, these are user-specific, so we would need to discover ;; them dynamically after connecting via `tramp' diff --git a/pkgs/applications/editors/featherpad/default.nix b/pkgs/applications/editors/featherpad/default.nix new file mode 100644 index 00000000000..b1e26910f1f --- /dev/null +++ b/pkgs/applications/editors/featherpad/default.nix @@ -0,0 +1,23 @@ +{ stdenv, fetchurl, pkgconfig, qt5, fetchFromGitHub }: + +with qt5; + +stdenv.mkDerivation rec { + version = "0.9.2"; + name = "featherpad-${version}"; + src = fetchFromGitHub { + owner = "tsujan"; + repo = "FeatherPad"; + rev = "V${version}"; + sha256 = "1kpv8x3m4hiz7q9k7qadgbrys5nyzm7v5mhjyk22hawnp98m9x4q"; + }; + nativeBuildInputs = [ qmake pkgconfig qttools ]; + buildInputs = [ qtbase qtsvg qtx11extras ]; + meta = with stdenv.lib; { + description = "Lightweight Qt5 Plain-Text Editor for Linux"; + homepage = https://github.com/tsujan/FeatherPad; + platforms = platforms.linux; + maintainers = [ maintainers.flosse ]; + license = licenses.gpl3; + }; +} diff --git a/pkgs/applications/editors/focuswriter/default.nix b/pkgs/applications/editors/focuswriter/default.nix index 000797c9b70..f656f874151 100644 --- a/pkgs/applications/editors/focuswriter/default.nix +++ b/pkgs/applications/editors/focuswriter/default.nix @@ -2,11 +2,11 @@ stdenv.mkDerivation rec { name = "focuswriter-${version}"; - version = "1.6.16"; + version = "1.7.1"; src = fetchurl { url = "https://gottcode.org/focuswriter/focuswriter-${version}-src.tar.bz2"; - sha256 = "1warfv9d485a7ysmjazxw4zvi9l0ih1021s6c5adkc86m88k296m"; + sha256 = "0ny0bri9yp6wcsj9s8vd0j4mzx44yw57axjx5piv44q2jgsgz401"; }; nativeBuildInputs = [ pkgconfig qmake qttools ]; diff --git a/pkgs/applications/editors/geany/default.nix b/pkgs/applications/editors/geany/default.nix index 24954a602cc..9f33bd08489 100644 --- a/pkgs/applications/editors/geany/default.nix +++ b/pkgs/applications/editors/geany/default.nix @@ -3,7 +3,7 @@ with stdenv.lib; let - version = "1.33"; + version = "1.34.1"; in stdenv.mkDerivation rec { @@ -11,7 +11,7 @@ stdenv.mkDerivation rec { src = fetchurl { url = "https://download.geany.org/${name}.tar.bz2"; - sha256 = "66baaff43f12caebcf0efec9a5533044dc52837f799c73a1fd7312caa86099c2"; + sha256 = "e765efd89e759defe3fd797d8a2052afbb4b23522efbcc72e3a72b7f1093ec11"; }; nativeBuildInputs = [ pkgconfig intltool libintl ]; @@ -46,7 +46,7 @@ stdenv.mkDerivation rec { ''; homepage = https://www.geany.org/; license = licenses.gpl2; - maintainers = []; + maintainers = with maintainers; [ frlan ]; platforms = platforms.all; }; } diff --git a/pkgs/applications/editors/ghostwriter/default.nix b/pkgs/applications/editors/ghostwriter/default.nix index 36259593463..65645dcc969 100644 --- a/pkgs/applications/editors/ghostwriter/default.nix +++ b/pkgs/applications/editors/ghostwriter/default.nix @@ -1,18 +1,18 @@ -{ stdenv, fetchFromGitHub, qmake, pkgconfig, qtwebkit, hunspell }: +{ stdenv, fetchFromGitHub, qmake, pkgconfig, qttools, qtwebkit, hunspell }: stdenv.mkDerivation rec { pname = "ghostwriter"; - version = "1.7.3"; + version = "1.7.4"; name = "${pname}-${version}"; src = fetchFromGitHub { owner = "wereturtle"; repo = pname; rev = "v${version}"; - sha256 = "1xkxd59rw2dn6xphgcl06zzmfgs1zna2w0pxrk0f49ywffvkvs72"; + sha256 = "1pqlr08z5syqcq5p282asxwzrrm7c1w94baxyb467swh8yp3fj5m"; }; - nativeBuildInputs = [ qmake pkgconfig ]; + nativeBuildInputs = [ qmake pkgconfig qttools ]; buildInputs = [ qtwebkit hunspell ]; diff --git a/pkgs/applications/editors/gnome-builder/default.nix b/pkgs/applications/editors/gnome-builder/default.nix index 9e890e172e5..99b014adb02 100644 --- a/pkgs/applications/editors/gnome-builder/default.nix +++ b/pkgs/applications/editors/gnome-builder/default.nix @@ -3,16 +3,16 @@ , desktop-file-utils , docbook_xsl , docbook_xml_dtd_43 -, fetchpatch , fetchurl , flatpak , glibcLocales , gnome3 -, gobjectIntrospection +, libgit2-glib +, gobject-introspection , gspell , gtk-doc , gtk3 -, gtksourceview3 +, gtksourceview4 , hicolor-icon-theme , json-glib , jsonrpc-glib @@ -27,18 +27,19 @@ , sysprof , template-glib , vala +, vte , webkitgtk , wrapGAppsHook }: let - version = "3.28.4"; + version = "3.30.3"; pname = "gnome-builder"; in stdenv.mkDerivation { name = "${pname}-${version}"; src = fetchurl { url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; - sha256 = "0ibb74jlyrl5f6rj1b74196zfg2qaf870lxgi76qzpkgwq0iya05"; + sha256 = "11h6apjyah91djf77m8xkl5rvdz7mwpp3bjc4yzzs9lm3pag764r"; }; nativeBuildInputs = [ @@ -47,7 +48,7 @@ in stdenv.mkDerivation { docbook_xsl docbook_xml_dtd_43 glibcLocales # for Meson's gtkdochelper - gobjectIntrospection + gobject-introspection gtk-doc hicolor-icon-theme meson @@ -62,12 +63,12 @@ in stdenv.mkDerivation { ctags flatpak gnome3.devhelp - gnome3.libgit2-glib + libgit2-glib gnome3.libpeas - gnome3.vte + vte gspell gtk3 - gtksourceview3 + gtksourceview4 json-glib jsonrpc-glib libdazzle @@ -87,24 +88,6 @@ in stdenv.mkDerivation { patchShebangs build-aux/meson/post_install.py ''; - patches = [ - (fetchpatch { - name = "absolute-shared-library-path.patch"; - url = "https://gitlab.gnome.org/GNOME/gnome-builder/commit/1011cabc519fd7322e2d695c79bfce3e18ff6200.patch"; - sha256 = "1g12zziidzrphp527aa8sklfaln4qpjprkz73f0c9w5ph6k252fw"; - }) - (fetchpatch { - name = "python-libprefix.patch"; - url = "https://gitlab.gnome.org/GNOME/gnome-builder/commit/43494ce83a347f369ed4cfb8dd71d3b93452736b.patch"; - sha256 = "0kgi3n3g13n1j4xa61ln9xiahcfdc43bxi5mw4yva2d5px445msf"; - }) - (fetchpatch { - name = "ostree-dependency.patch"; - url = "https://gitlab.gnome.org/GNOME/gnome-builder/commit/8b11773b65c95f464a0de16b91318c1ca73deeae.patch"; - sha256 = "18r4hd90id0w6r0lzqpw83bcj45nm9jhr46a0ffi1mcayb18mgbk"; - }) - ]; - mesonFlags = [ "-Dpython_libprefix=${python3.libPrefix}" "-Dwith_docs=true" diff --git a/pkgs/applications/editors/gnome-latex/default.nix b/pkgs/applications/editors/gnome-latex/default.nix index 055ac050b54..71d0f9450f2 100644 --- a/pkgs/applications/editors/gnome-latex/default.nix +++ b/pkgs/applications/editors/gnome-latex/default.nix @@ -1,14 +1,14 @@ { stdenv, fetchurl, wrapGAppsHook , tepl, amtk, gnome3, glib, pkgconfig, intltool, itstool, libxml2 }: let - version = "3.30.1"; + version = "3.30.2"; pname = "gnome-latex"; in stdenv.mkDerivation { name = "${pname}-${version}"; src = fetchurl { url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; - sha256 = "0yvkp311ikmiypzj2q6ypvyw5migxiqp8lwhyl3qq6mk6p0x66w8"; + sha256 = "0fn3vy6w714wy0bz3y11zpdprpwxbv5xfiyyxjwp2nix9mbvv2sm"; }; NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/gio-unix-2.0"; diff --git a/pkgs/applications/editors/jetbrains/default.nix b/pkgs/applications/editors/jetbrains/default.nix index 23ecfb0c19d..b8aa411523b 100644 --- a/pkgs/applications/editors/jetbrains/default.nix +++ b/pkgs/applications/editors/jetbrains/default.nix @@ -250,12 +250,12 @@ in clion = buildClion rec { name = "clion-${version}"; - version = "2018.2.4"; /* updated by script */ + version = "2018.3.3"; /* 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 = "0ljzdjvlkm37gclny652nm7kw2hlyl1iiix6h44zq7fhszp5kmyr"; /* updated by script */ + sha256 = "1pffxq69ihdc55lsy2q56vlanpgyks0g82n40b29j4m66flmxbkl"; /* 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 = "2018.2.4"; /* updated by script */ + version = "2018.2.5"; /* 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 = "1m3b8pfmzz9x2b9izf19ax8h67p1myqqalvm214g1b8qqskqz60i"; /* updated by script */ + sha256 = "0ls3qas8z0d1ynn6hh42qipa5br2g2497wf3pgcw3q0m3kp6wida"; /* updated by script */ }; wmClass = "jetbrains-datagrip"; update-channel = "DataGrip 2018.2"; @@ -276,12 +276,12 @@ in goland = buildGoland rec { name = "goland-${version}"; - version = "2018.2.3"; /* updated by script */ + version = "2018.3.2"; /* 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 = "0pd01aw1mv6w47ksgc8zbc7ppgbb64qsdgyqghiyibdjf07h53hd"; /* updated by script */ + sha256 = "0vnw6zc23dibpk1z7yg1lrgjznqc7508g1azybml878h6yykm5a4"; /* updated by script */ }; wmClass = "jetbrains-goland"; update-channel = "GoLand Release"; @@ -289,12 +289,12 @@ in idea-community = buildIdea rec { name = "idea-community-${version}"; - version = "2018.2.4"; /* updated by script */ + version = "2018.3.3"; /* 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 = "1syrxkp4pk95bvx02g2hg0mvn36w098h82k0qv0j6aqv0sidfzjy"; /* updated by script */ + sha256 = "1c9x3m7dknqr6yxqnn2ch3akwm6yskpmy32hcbjg7s87g1n6gy8m"; /* 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 = "2018.2.4"; /* updated by script */ + version = "2018.3.3"; /* 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-jdk.tar.gz"; - sha256 = "0z1ga6lzmkn7y7y24984vmp3ilrfc1ak1ddcgsdkwkiq5bx67ck8"; /* updated by script */ + sha256 = "1dj39hs63xba2jfk3sd2yiq7vk7758axrc5549krfd1aaawl4sl8"; /* updated by script */ }; wmClass = "jetbrains-idea"; update-channel = "IntelliJ IDEA Release"; @@ -315,12 +315,12 @@ in phpstorm = buildPhpStorm rec { name = "phpstorm-${version}"; - version = "2018.2.3"; /* updated by script */ + version = "2018.2.6"; /* 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 = "1kdv3h749ly2sadixz3khaxrias3k72fi2ixrzniynwhgiqixz70"; /* updated by script */ + sha256 = "0z627q9mcxlz8a92dndnaz2qa9dkaapimsfqkvc0i8ab88yw75v1"; /* updated by script */ }; wmClass = "jetbrains-phpstorm"; update-channel = "PhpStorm 2018.2"; @@ -328,12 +328,12 @@ in pycharm-community = buildPycharm rec { name = "pycharm-community-${version}"; - version = "2018.2.4"; /* updated by script */ + version = "2018.3.3"; /* updated by script */ description = "PyCharm Community Edition"; license = stdenv.lib.licenses.asl20; src = fetchurl { url = "https://download.jetbrains.com/python/${name}.tar.gz"; - sha256 = "1vjvbaqa1qq173m0xy16v9avav8az43s1dzks55x0gvh5yj3cyqz"; /* updated by script */ + sha256 = "0dnjkq1qbxc05cxafi5hw6pw9wya0w44ni32b34sclq26xr6blvj"; /* 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 = "2018.2.4"; /* updated by script */ + version = "2018.3.3"; /* updated by script */ description = "PyCharm Professional Edition"; license = stdenv.lib.licenses.unfree; src = fetchurl { url = "https://download.jetbrains.com/python/${name}.tar.gz"; - sha256 = "14q4n62ppp1cxrv8mq2lxv9mjm95adag9856jpl9734s0gyjj3a5"; /* updated by script */ + sha256 = "0z6qjc3qh58ds338rlfzi9446y3sghpnccaachkja2q59f97dfma"; /* updated by script */ }; wmClass = "jetbrains-pycharm"; update-channel = "PyCharm Release"; @@ -354,25 +354,25 @@ in rider = buildRider rec { name = "rider-${version}"; - version = "2018.2.3"; /* updated by script */ + version = "2018.3.1"; /* 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 = "1g2b7wszviknzd4srgcvwmci0pxyjbcmjzb4fg5clh62wwdpa16n"; /* updated by script */ + sha256 = "0ghk819ik28y9b61vb2h463zbvvq1n2wl778czkakc4qjba2qnks"; /* updated by script */ }; wmClass = "jetbrains-rider"; - update-channel = "Rider 2018.2"; + update-channel = "Rider 2018.3"; }; ruby-mine = buildRubyMine rec { name = "ruby-mine-${version}"; - version = "2018.2.2"; /* updated by script */ + version = "2018.2.6"; /* 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 = "0585dnbvmzxnj2am6b04lfw75rdhk0fby2cbj58pzzcjz5xlrhvq"; /* updated by script */ + sha256 = "0xbmj7d1ccq2qf1jsvch1zxdrypkvzxdfkr431c8fnabh993yxx1"; /* updated by script */ }; wmClass = "jetbrains-rubymine"; update-channel = "RubyMine 2018.2"; @@ -380,12 +380,12 @@ in webstorm = buildWebStorm rec { name = "webstorm-${version}"; - version = "2018.2.3"; /* updated by script */ + version = "2018.3.3"; /* 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 = "0y3a1p047knc598aamxxdmcf5nr86wk60w6nk2bhcasxjyqaw6r4"; /* updated by script */ + sha256 = "0q8njbrll7qgijnxqic2mpca2jb2plpd677xdj5v72mm66mvxmss"; /* updated by script */ }; wmClass = "jetbrains-webstorm"; update-channel = "WebStorm Release"; diff --git a/pkgs/applications/editors/kakoune/default.nix b/pkgs/applications/editors/kakoune/default.nix index e50625fa0e8..bcfbe53b565 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 { name = "kakoune-unstable-${version}"; - version = "2018.09.04"; + version = "2018.10.27"; src = fetchFromGitHub { repo = "kakoune"; owner = "mawww"; rev = "v${version}"; - sha256 = "08v55hh7whm6hx6a047gszh0h5g35k3r8r52aggv7r2ybzrrw6w1"; + sha256 = "1w7jmq57h8gxxbzg0n3lgd6cci77xb9mziy6lr8330nzqc85zp9p"; }; nativeBuildInputs = [ pkgconfig ]; buildInputs = [ ncurses asciidoc docbook_xsl libxslt ]; @@ -21,6 +21,10 @@ stdenv.mkDerivation rec { sed -ie 's#--no-xmllint#--no-xmllint --xsltproc-opts="--nonet"#g' Makefile ''; + preConfigure = '' + export version="v${version}" + ''; + meta = { homepage = http://kakoune.org/; description = "A vim inspired text editor"; diff --git a/pkgs/applications/editors/kile/default.nix b/pkgs/applications/editors/kile/default.nix index 259c319c70f..494ad686ee3 100644 --- a/pkgs/applications/editors/kile/default.nix +++ b/pkgs/applications/editors/kile/default.nix @@ -1,6 +1,6 @@ { mkDerivation , lib -, fetchgit +, fetchurl , extra-cmake-modules , kdoctools , wrapGAppsHook @@ -22,13 +22,11 @@ }: mkDerivation rec { - name = "kile-${version}"; - version = "2017-02-09"; + name = "kile-2.9.92"; - src = fetchgit { - url = git://anongit.kde.org/kile.git; - rev = "f77f6e627487c152f111e307ad6dc71699ade746"; - sha256 = "0wpqaix9ssa28cm7qqjj0zfrscjgk8s3kmi5b4kk8h583gsrikib"; + src = fetchurl { + url = "mirror://sourceforge/kile/${name}.tar.bz2"; + sha256 = "177372dc25b1d109e037a7dbfc64b5dab2efe538320c87f4a8ceada21e9097f2"; }; diff --git a/pkgs/applications/editors/leafpad/default.nix b/pkgs/applications/editors/leafpad/default.nix index dd3fb542da7..c3b46cf61df 100644 --- a/pkgs/applications/editors/leafpad/default.nix +++ b/pkgs/applications/editors/leafpad/default.nix @@ -4,7 +4,7 @@ stdenv.mkDerivation rec { version = "0.8.18.1"; name = "leafpad-${version}"; src = fetchurl { - url = "http://download.savannah.gnu.org/releases/leafpad/${name}.tar.gz"; + url = "https://download.savannah.gnu.org/releases/leafpad/${name}.tar.gz"; sha256 = "0b0az2wvqgvam7w0ns1j8xp2llslm1rx6h7zcsy06a7j0yp257cm"; }; diff --git a/pkgs/applications/editors/manuskript/default.nix b/pkgs/applications/editors/manuskript/default.nix index 815af2103d5..4f4be05f79e 100644 --- a/pkgs/applications/editors/manuskript/default.nix +++ b/pkgs/applications/editors/manuskript/default.nix @@ -2,13 +2,13 @@ python3Packages.buildPythonApplication rec { pname = "manuskript"; - version = "0.3.0"; + version = "0.8.0"; src = fetchFromGitHub { repo = pname; owner = "olivierkes"; rev = version; - sha256 = "0bqxc4a8kyi6xz1zs0dp85wxl9h4v8lzc6073bbcsn1zg4y59ys7"; + sha256 = "0vqz02p3m9n4hk2jplnklr9s6niqdm5iykab6nblqdm4plb04c34"; }; propagatedBuildInputs = [ diff --git a/pkgs/applications/editors/mindforger/build.patch b/pkgs/applications/editors/mindforger/build.patch new file mode 100644 index 00000000000..e2745cbce2d --- /dev/null +++ b/pkgs/applications/editors/mindforger/build.patch @@ -0,0 +1,91 @@ +diff --git a/app/app.pro b/app/app.pro +index 4d47065..a39a320 100644 +--- a/app/app.pro ++++ b/app/app.pro +@@ -18,6 +18,8 @@ + TARGET = mindforger + TEMPLATE = app + ++include(../config.pri) ++ + QT += widgets + + mfner { +@@ -297,7 +299,7 @@ RESOURCES += \ + # See http://doc.qt.io/qt-5/qmake-advanced-usage.html + + binfile.files += mindforger +-binfile.path = /usr/bin/ ++binfile.path = $$PREFIX/bin/ + INSTALLS += binfile + + # ######################################## +diff --git a/config.pri b/config.pri +new file mode 100644 +index 0000000..ce05df1 +--- /dev/null ++++ b/config.pri +@@ -0,0 +1,3 @@ ++isEmpty(PREFIX) { ++ PREFIX = /usr ++} +diff --git a/deps/discount/discount.pro b/deps/discount/discount.pro +index a8dfe35..ec16468 100644 +--- a/deps/discount/discount.pro ++++ b/deps/discount/discount.pro +@@ -5,6 +5,8 @@ + # Webpage: http://www.pell.portland.or.us/~orc/Code/discount/ + # + ++include(../../config.pri) ++ + QT -= core gui + + TARGET = discount +@@ -46,7 +48,7 @@ unix:!symbian { + maemo5 { + target.path = /opt/usr/lib + } else { +- target.path = /usr/lib ++ target.path = $$PREFIX/lib + } + INSTALLS += target + } +diff --git a/mindforger.pro b/mindforger.pro +index ae627f2..0953856 100644 +--- a/mindforger.pro ++++ b/mindforger.pro +@@ -32,6 +32,8 @@ TEMPLATE = subdirs + + SUBDIRS = deps lib app + ++include(config.pri) ++ + # build dependencies + lib.depends = deps + app.depends = lib +@@ -44,20 +46,20 @@ app.depends = lib + #IMPORTANT: binfile MUST be specified in app/app.pro (project next to/that builds binary) + + docfiles.files += doc/* +-docfiles.path = /usr/share/doc/mindforger/ ++docfiles.path = $$PREFIX/share/doc/mindforger/ + INSTALLS += docfiles + + manfiles.files += man/* +-manfiles.path = /usr/share/man/man1/ ++manfiles.path = $$PREFIX/share/man/man1/ + INSTALLS += manfiles + + iconfiles.files += app/resources/icons/* +-iconfiles.path = /usr/share/icons/mindforger/ ++iconfiles.path = $$PREFIX/share/icons/mindforger/ + INSTALLS += iconfiles + + # experiment w/ file + shortcutfiles.files += app/resources/gnome-shell/mindforger.desktop +-shortcutfiles.path = /usr/share/applications/ ++shortcutfiles.path = $$PREFIX/share/applications/ + INSTALLS += shortcutfiles + + # eof diff --git a/pkgs/applications/editors/mindforger/default.nix b/pkgs/applications/editors/mindforger/default.nix new file mode 100644 index 00000000000..a027242c5ee --- /dev/null +++ b/pkgs/applications/editors/mindforger/default.nix @@ -0,0 +1,45 @@ +{ stdenv, fetchurl, qmake, qtbase, qtwebkit }: + +stdenv.mkDerivation rec { + name = "mindforger-${version}"; + version = "1.48.2"; + + src = fetchurl { + url = "https://github.com/dvorka/mindforger/releases/download/1.48.0/mindforger_${version}.tgz"; + sha256 = "1wlrl8hpjcpnq098l3n2d1gbhbjylaj4z366zvssqvmafr72iyw4"; + }; + + nativeBuildInputs = [ qmake ] ; + buildInputs = [ qtbase qtwebkit ] ; + + doCheck = true; + + enableParallelBuilding = true ; + + patches = [ ./build.patch ] ; + + postPatch = '' + substituteInPlace deps/discount/version.c.in --subst-var-by TABSTOP 4 + substituteInPlace app/resources/gnome-shell/mindforger.desktop --replace /usr "$out" + ''; + + preConfigure = '' + export AC_PATH="$PATH" + pushd deps/discount + ./configure.sh + popd + ''; + + qmakeFlags = [ "-r mindforger.pro" "CONFIG+=mfnoccache" ] ; + + meta = with stdenv.lib; { + description = "Thinking Notebook & Markdown IDE"; + longDescription = '' + MindForger is actually more than an editor or IDE - it's human + mind inspired personal knowledge management tool + ''; + homepage = https://www.mindforger.com; + license = licenses.gpl2Plus; + platforms = platforms.all; + }; +} diff --git a/pkgs/applications/editors/moe/default.nix b/pkgs/applications/editors/moe/default.nix index 764877a11cb..3f7eba73ca4 100644 --- a/pkgs/applications/editors/moe/default.nix +++ b/pkgs/applications/editors/moe/default.nix @@ -6,11 +6,11 @@ with stdenv.lib; stdenv.mkDerivation rec { name = "moe-${version}"; - version = "1.9"; + version = "1.10"; src = fetchurl { url = "mirror://gnu/moe/${name}.tar.lz"; - sha256 = "1wsfzy0iia0c89wnx1ilzw54wqcmlp2nz8mkpvc393z0zagrx48q"; + sha256 = "0fymywdiy9xqppcmvgs7mf7d3gfrky3jp5jkxs2l3v93asml9zcc"; }; prePatch = '' @@ -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 = http://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/monodevelop/default.nix b/pkgs/applications/editors/monodevelop/default.nix index cccfddfe793..c2917aa394f 100644 --- a/pkgs/applications/editors/monodevelop/default.nix +++ b/pkgs/applications/editors/monodevelop/default.nix @@ -15,7 +15,7 @@ stdenv.mkDerivation rec { }; nunit2510 = fetchurl { - url = "http://launchpad.net/nunitv2/2.5/2.5.10/+download/NUnit-2.5.10.11092.zip"; + url = "https://launchpad.net/nunitv2/2.5/2.5.10/+download/NUnit-2.5.10.11092.zip"; sha256 = "0k5h5bz1p2v3d0w0hpkpbpvdkcszgp8sr9ik498r1bs72w5qlwnc"; }; diff --git a/pkgs/applications/editors/nano/default.nix b/pkgs/applications/editors/nano/default.nix index 36c400a74fa..0e313d33736 100644 --- a/pkgs/applications/editors/nano/default.nix +++ b/pkgs/applications/editors/nano/default.nix @@ -20,11 +20,11 @@ let in stdenv.mkDerivation rec { name = "nano-${version}"; - version = "3.1"; + version = "3.2"; src = fetchurl { url = "mirror://gnu/nano/${name}.tar.xz"; - sha256 = "17kinzyv6vwgyx2d0ym1kp65qbf7kxzwpyg21ic1rijv1aj2rh0l"; + sha256 = "0jb3zq0v84xb0chyynkcp2jhs9660wmpkic294p4p6c96npp69yi"; }; nativeBuildInputs = [ texinfo ] ++ optional enableNls gettext; diff --git a/pkgs/applications/editors/ne/default.nix b/pkgs/applications/editors/ne/default.nix index a24fb90ed9c..9bc6425bc41 100644 --- a/pkgs/applications/editors/ne/default.nix +++ b/pkgs/applications/editors/ne/default.nix @@ -3,12 +3,12 @@ stdenv.mkDerivation rec { name = "ne-${version}"; - version = "3.1.1"; + version = "3.1.2"; src = fetchFromGitHub { owner = "vigna"; repo = "ne"; rev = version; - sha256 = "1i4vk5r2wn4cd6sgsidzqs9s3bmb4j9cn4392izkidi0j9mm3hvg"; + sha256 = "154grh9gdzydnqn9xxj7zpia9cc5x6a7y1g73vwizr9bkg92l5cc"; }; buildInputs = [ ncurses texlive.combined.scheme-medium texinfo perl ghostscript ]; dontBuild = true; diff --git a/pkgs/applications/editors/neovim/default.nix b/pkgs/applications/editors/neovim/default.nix index 6690e4c9c1b..d7932dc4dcf 100644 --- a/pkgs/applications/editors/neovim/default.nix +++ b/pkgs/applications/editors/neovim/default.nix @@ -11,15 +11,22 @@ let neovim = stdenv.mkDerivation rec { name = "neovim-unwrapped-${version}"; - version = "0.3.1"; + version = "0.3.4"; src = fetchFromGitHub { owner = "neovim"; repo = "neovim"; rev = "v${version}"; - sha256 = "19jy9nr2ffscli6wsysqkdvqvh7sgkkwhzkw3yypfrvg4pj9rl56"; + sha256 = "07ncvgp6xfhiwc6hd7qf7zk28n3yj47p26qj1ji29vqkwnk28y3s"; }; + patches = [ + # introduce a system-wide rplugin.vim in addition to the user one + # necessary so that nix can handle `UpdateRemotePlugins` for the plugins + # it installs. See https://github.com/neovim/neovim/issues/9413. + ./system_rplugin_manifest.patch + ]; + enableParallelBuilding = true; buildInputs = [ @@ -46,6 +53,13 @@ let lualibs = [ luaPackages.mpack luaPackages.lpeg luaPackages.luabitop ]; + # nvim --version output retains compilation flags and references to build tools + postPatch = '' + substituteInPlace src/nvim/version.c --replace NVIM_VERSION_CFLAGS ""; + ''; + # check that the above patching actually works + disallowedReferences = [ stdenv.cc ]; + cmakeFlags = [ "-DLUA_PRG=${luaPackages.lua}/bin/lua" "-DGPERF_PRG=${gperf}/bin/gperf" @@ -86,6 +100,9 @@ let license = with licenses; [ asl20 vim ]; maintainers = with maintainers; [ manveru garbas rvolosatovs ]; platforms = platforms.unix; + # `lua: bad light userdata pointer` + # https://nix-cache.s3.amazonaws.com/log/9ahcb52905d9d417zsskjpc331iailpq-neovim-unwrapped-0.2.2.drv + broken = stdenv.isAarch64; }; }; diff --git a/pkgs/applications/editors/neovim/neovim-remote.nix b/pkgs/applications/editors/neovim/neovim-remote.nix index b0c834934f9..1444d53da07 100644 --- a/pkgs/applications/editors/neovim/neovim-remote.nix +++ b/pkgs/applications/editors/neovim/neovim-remote.nix @@ -4,17 +4,17 @@ with stdenv.lib; pythonPackages.buildPythonPackage rec { pname = "neovim-remote"; - version = "2.0.5"; + version = "2.1.4"; disabled = !pythonPackages.isPy3k; src = fetchFromGitHub { owner = "mhinz"; repo = "neovim-remote"; rev = "v${version}"; - sha256 = "08qsi61ba5d69ca77layypzvi7nalx4niy97xn4w88jibnbmbrxw"; + sha256 = "1s438cbyyzgg96b6639wk1ny6d6p2ywcba41l3r027wzyl7wrn8v"; }; - propagatedBuildInputs = with pythonPackages; [ neovim psutil ]; + propagatedBuildInputs = with pythonPackages; [ pynvim psutil ]; meta = { description = "A tool that helps controlling nvim processes from a terminal"; diff --git a/pkgs/applications/editors/neovim/qt.nix b/pkgs/applications/editors/neovim/qt.nix index cfdcd7fe939..3004bf544c4 100644 --- a/pkgs/applications/editors/neovim/qt.nix +++ b/pkgs/applications/editors/neovim/qt.nix @@ -1,62 +1,78 @@ { stdenv, fetchFromGitHub, cmake, doxygen, makeWrapper , msgpack, neovim, pythonPackages, qtbase }: -stdenv.mkDerivation rec { - name = "neovim-qt-${version}"; - version = "0.2.10"; +let + unwrapped = stdenv.mkDerivation rec { + pname = "neovim-qt-unwrapped"; + version = "0.2.11"; - src = fetchFromGitHub { - owner = "equalsraf"; - repo = "neovim-qt"; - rev = "v${version}"; - sha256 = "0hq3w9d6qbzf0j7zm3ls0wpvnab64kypb4i0bhmsnk605mvx63r4"; + src = fetchFromGitHub { + owner = "equalsraf"; + repo = "neovim-qt"; + rev = "v${version}"; + sha256 = "0pc1adxc89p2rdvb6nxyqr9sjzqz9zw2dg7a4ardxsl3a8jga1wh"; + }; + + cmakeFlags = [ + "-DUSE_SYSTEM_MSGPACK=1" + ]; + + buildInputs = [ + neovim.unwrapped # only used to generate help tags at build time + qtbase + ] ++ (with pythonPackages; [ + jinja2 python msgpack + ]); + + nativeBuildInputs = [ cmake doxygen makeWrapper ]; + + enableParallelBuilding = true; + + preCheck = '' + # The GUI tests require a running X server, disable them + sed -i ../test/CMakeLists.txt \ + -e '/^add_xtest_gui/d' + ''; + + doCheck = true; + + meta = with stdenv.lib; { + description = "Neovim client library and GUI, in Qt5"; + license = licenses.isc; + maintainers = with maintainers; [ peterhoeg ]; + inherit (neovim.meta) platforms; + inherit version; + }; }; +in + stdenv.mkDerivation { + pname = "neovim-qt"; + version = unwrapped.version; + buildCommand = if stdenv.isDarwin then '' + mkdir -p $out/Applications + cp -r ${unwrapped}/bin/nvim-qt.app $out/Applications - cmakeFlags = [ - "-DUSE_SYSTEM_MSGPACK=1" - ]; + chmod -R a+w "$out/Applications/nvim-qt.app/Contents/MacOS" + wrapProgram "$out/Applications/nvim-qt.app/Contents/MacOS/nvim-qt" \ + --prefix PATH : "${neovim}/bin" + '' else '' + makeWrapper '${unwrapped}/bin/nvim-qt' "$out/bin/nvim-qt" \ + --prefix PATH : "${neovim}/bin" - buildInputs = with pythonPackages; [ - neovim qtbase msgpack - ] ++ (with pythonPackages; [ - jinja2 msgpack python - ]); + # link .desktop file + mkdir -p "$out/share" + ln -s '${unwrapped}/share/applications' "$out/share/applications" + ''; - nativeBuildInputs = [ cmake doxygen makeWrapper ]; + preferLocalBuild = true; - enableParallelBuilding = true; + nativeBuildInputs = [ + makeWrapper + ]; - preConfigure = '' - # we rip out a number of tests that fail in the build env - # the GUI tests will never work but the others should - they did before neovim 0.2.0 - # was released - sed -i test/CMakeLists.txt \ - -e '/^add_xtest_gui/d' \ - -e '/tst_neovimobject/d' \ - -e '/tst_neovimconnector/d' \ - -e '/tst_callallmethods/d' \ - -e '/tst_encoding/d' - ''; + passthru = { + inherit unwrapped; + }; - doCheck = true; - - postInstall = if stdenv.isDarwin then '' - mkdir -p $out/Applications - mv $out/bin/nvim-qt.app $out/Applications - rmdir $out/bin || : - - wrapProgram "$out/Applications/nvim-qt.app/Contents/MacOS/nvim-qt" \ - --prefix PATH : "${neovim}/bin" - '' else '' - wrapProgram "$out/bin/nvim-qt" \ - --prefix PATH : "${neovim}/bin" - ''; - - meta = with stdenv.lib; { - description = "Neovim client library and GUI, in Qt5"; - license = licenses.isc; - maintainers = with maintainers; [ peterhoeg ]; - inherit (neovim.meta) platforms; - inherit version; - }; -} + inherit (unwrapped) meta; + } diff --git a/pkgs/applications/editors/neovim/system_rplugin_manifest.patch b/pkgs/applications/editors/neovim/system_rplugin_manifest.patch new file mode 100644 index 00000000000..f634d3ec056 --- /dev/null +++ b/pkgs/applications/editors/neovim/system_rplugin_manifest.patch @@ -0,0 +1,29 @@ +diff --git a/runtime/autoload/remote/host.vim b/runtime/autoload/remote/host.vim +index 6266b312b..965fabf1e 100644 +--- a/runtime/autoload/remote/host.vim ++++ b/runtime/autoload/remote/host.vim +@@ -71,7 +71,8 @@ function! remote#host#RegisterPlugin(host, path, specs) abort + + for plugin in plugins + if plugin.path == a:path +- throw 'Plugin "'.a:path.'" is already registered' ++ " plugin already registered ++ return + endif + endfor + +diff --git a/runtime/plugin/rplugin.vim b/runtime/plugin/rplugin.vim +index 122d8d47f..83fbf8b57 100644 +--- a/runtime/plugin/rplugin.vim ++++ b/runtime/plugin/rplugin.vim +@@ -54,6 +54,10 @@ function! s:GetManifest() abort + endfunction + + function! s:LoadRemotePlugins() abort ++ if exists('$NVIM_SYSTEM_RPLUGIN_MANIFEST') ++ let g:system_remote_plugins = fnamemodify($NVIM_SYSTEM_RPLUGIN_MANIFEST, ':p') ++ execute 'source' fnameescape(g:system_remote_plugins) ++ endif + let g:loaded_remote_plugins = s:GetManifest() + if filereadable(g:loaded_remote_plugins) + execute 'source' fnameescape(g:loaded_remote_plugins) diff --git a/pkgs/applications/editors/neovim/wrapper.nix b/pkgs/applications/editors/neovim/wrapper.nix index 568043f9668..7d76bc1fd1a 100644 --- a/pkgs/applications/editors/neovim/wrapper.nix +++ b/pkgs/applications/editors/neovim/wrapper.nix @@ -1,6 +1,8 @@ { stdenv, lib, makeWrapper , vimUtils , bundlerEnv, ruby +, nodejs +, nodePackages , pythonPackages , python3Packages }: @@ -12,8 +14,8 @@ let wrapper = { withPython ? true, extraPythonPackages ? (_: []) /* the function you would have passed to python.withPackages */ , withPython3 ? true, extraPython3Packages ? (_: []) /* the function you would have passed to python.withPackages */ + , withNodeJs? false , withRuby ? true - , withPyGUI ? false , vimAlias ? false , viAlias ? false , configure ? {} @@ -40,16 +42,18 @@ let pluginPythonPackages = getDeps "pythonDependencies" requiredPlugins; pythonEnv = pythonPackages.python.withPackages(ps: - (if withPyGUI then [ ps.neovim_gui ] else [ ps.neovim ]) + [ ps.pynvim ] ++ (extraPythonPackagesFun ps) ++ (concatMap (f: f ps) pluginPythonPackages)); pluginPython3Packages = getDeps "python3Dependencies" requiredPlugins; python3Env = python3Packages.python.withPackages (ps: - [ ps.neovim ] + [ ps.pynvim ] ++ (extraPython3PackagesFun ps) ++ (concatMap (f: f ps) pluginPython3Packages)); + binPath = makeBinPath (optionals withRuby [rubyEnv] ++ optionals withNodeJs [nodejs]); + in stdenv.mkDerivation { name = "neovim-${stdenv.lib.getVersion neovim}"; @@ -62,11 +66,12 @@ let makeWrapper "$(readlink -v --canonicalize-existing "${bin}")" \ "$out/bin/nvim" --add-flags " \ + --cmd \"${if withNodeJs then "let g:node_host_prog='${nodePackages.neovim}/bin/neovim-node-host'" else "let g:loaded_node_provider=1"}\" \ --cmd \"${if withPython then "let g:python_host_prog='$out/bin/nvim-python'" else "let g:loaded_python_provider = 1"}\" \ --cmd \"${if withPython3 then "let g:python3_host_prog='$out/bin/nvim-python3'" else "let g:loaded_python3_provider = 1"}\" \ --cmd \"${if withRuby then "let g:ruby_host_prog='$out/bin/nvim-ruby'" else "let g:loaded_ruby_provider=1"}\" " \ - ${optionalString withRuby '' --suffix PATH : ${rubyEnv}/bin --set GEM_HOME ${rubyEnv}/${rubyEnv.ruby.gemPath}'' } - + --suffix PATH : ${binPath} \ + ${optionalString withRuby '' --set GEM_HOME ${rubyEnv}/${rubyEnv.ruby.gemPath}'' } '' + optionalString (!stdenv.isDarwin) '' # copy and patch the original neovim.desktop file @@ -77,22 +82,39 @@ let '' + optionalString withPython '' makeWrapper ${pythonEnv}/bin/python $out/bin/nvim-python --unset PYTHONPATH - '' + optionalString withPython3 '' + '' + optionalString withPython3 '' makeWrapper ${python3Env}/bin/python3 $out/bin/nvim-python3 --unset PYTHONPATH - '' + optionalString withRuby '' - ln -s ${rubyEnv}/bin/neovim-ruby-host $out/bin/nvim-ruby - '' - + optionalString withPyGUI '' - makeWrapper "${pythonEnv}/bin/pynvim" "$out/bin/pynvim" \ - --prefix PATH : "$out/bin" - '' + optionalString vimAlias '' - ln -s $out/bin/nvim $out/bin/vim - '' + optionalString viAlias '' - ln -s $out/bin/nvim $out/bin/vi - '' + optionalString (configure != {}) '' - wrapProgram $out/bin/nvim --add-flags "-u ${vimUtils.vimrcFile configure}" - '' - ; + '' + optionalString withRuby '' + ln -s ${rubyEnv}/bin/neovim-ruby-host $out/bin/nvim-ruby + '' + optionalString vimAlias '' + ln -s $out/bin/nvim $out/bin/vim + '' + optionalString viAlias '' + ln -s $out/bin/nvim $out/bin/vi + '' + optionalString (configure != {}) '' + echo "Generating remote plugin manifest" + export NVIM_RPLUGIN_MANIFEST=$out/rplugin.vim + # 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 = ""; })} \ + -i NONE -n \ + -E -V1rplugins.log -s \ + +UpdateRemotePlugins +quit! > outfile 2>&1; then + cat outfile + echo -e "\nGenerating rplugin.vim failed!" + exit 1 + fi + unset NVIM_RPLUGIN_MANIFEST + + # this relies on a patched neovim, see + # https://github.com/neovim/neovim/issues/9413 + wrapProgram $out/bin/nvim \ + --set NVIM_SYSTEM_RPLUGIN_MANIFEST $out/rplugin.vim \ + --add-flags "-u ${vimUtils.vimrcFile configure}" + ''; preferLocalBuild = true; diff --git a/pkgs/applications/editors/notepadqq/default.nix b/pkgs/applications/editors/notepadqq/default.nix index 6d1bba8c4d5..ab79c3e780b 100644 --- a/pkgs/applications/editors/notepadqq/default.nix +++ b/pkgs/applications/editors/notepadqq/default.nix @@ -1,13 +1,14 @@ -{ stdenv, fetchgit, pkgconfig, which, qtbase, qtsvg, qttools, qtwebkit}: +{ stdenv, fetchFromGitHub, pkgconfig, which, qtbase, qtsvg, qttools, qtwebkit}: let - version = "1.2.0"; + version = "1.4.8"; in stdenv.mkDerivation { name = "notepadqq-${version}"; - src = fetchgit { - url = "https://github.com/notepadqq/notepadqq.git"; - rev = "ab074d30e02d49e0fe6957c1523e7fed239aff7d"; - sha256 = "0j8vqsdw314qpk5lrgccm9n7gbyr14ac3s65sl1qn87pxhrz1hpg"; + src = fetchFromGitHub { + owner = "notepadqq"; + repo = "notepadqq"; + rev = "v${version}"; + sha256 = "0lbv4s7ng31dkznzbkmp2cvkqglmfj6lv4mbg3r410fif2nrva7k"; fetchSubmodules = true; }; @@ -23,8 +24,10 @@ in stdenv.mkDerivation { export LRELEASE="lrelease" ''; + enableParallelBuilding = true; + meta = { - homepage = http://notepadqq.altervista.org/; + homepage = https://notepadqq.com/; description = "Notepad++-like editor for the Linux desktop"; license = stdenv.lib.licenses.gpl3; platforms = stdenv.lib.platforms.linux; diff --git a/pkgs/applications/editors/okteta/default.nix b/pkgs/applications/editors/okteta/default.nix index a2337483bf1..3cc3b914389 100644 --- a/pkgs/applications/editors/okteta/default.nix +++ b/pkgs/applications/editors/okteta/default.nix @@ -4,11 +4,11 @@ stdenv.mkDerivation rec { name = "okteta-${version}"; - version = "0.25.3"; + version = "0.25.5"; src = fetchurl { url = "mirror://kde/stable/okteta/${version}/src/${name}.tar.xz"; - sha256 = "0mm6pmk7k9c581b12a3wl0ayhadvyymfzmscy9x32b391qy9inai"; + sha256 = "1680hx4n36msz86gyjsdr5v7nf8rpybvzrvfw8y98l95hfq3l6g9"; }; nativeBuildInputs = [ qtscript extra-cmake-modules kdoctools ]; diff --git a/pkgs/applications/editors/quilter/default.nix b/pkgs/applications/editors/quilter/default.nix index 4d4cb0239bf..b9fe90be9fb 100644 --- a/pkgs/applications/editors/quilter/default.nix +++ b/pkgs/applications/editors/quilter/default.nix @@ -1,10 +1,10 @@ -{ stdenv, fetchFromGitHub, fetchpatch, vala, pkgconfig, meson, ninja, python3 +{ stdenv, fetchFromGitHub, fetchpatch, vala_0_40, pkgconfig, meson, ninja, python3 , granite, gtk3, desktop-file-utils, gnome3, gtksourceview, webkitgtk, gtkspell3 -, discount, gobjectIntrospection, wrapGAppsHook }: +, discount, gobject-introspection, wrapGAppsHook }: stdenv.mkDerivation rec { pname = "quilter"; - version = "1.6.3"; + version = "1.6.8"; name = "${pname}-${version}"; @@ -12,50 +12,29 @@ stdenv.mkDerivation rec { owner = "lainsce"; repo = pname; rev = version; - sha256 = "1wa0i6dgg6fgb7q9z33v9qmn1a1dn3ik58v1f3a49dvd5xyf8q6q"; + sha256 = "07i9pivpddgixn1wzbr15gvzf0n5pklx0gkjjaa35kvj2z8k31x5"; }; nativeBuildInputs = [ desktop-file-utils - gobjectIntrospection + gobject-introspection meson ninja pkgconfig python3 - vala + vala_0_40 # should be `elementary.vala` when elementary attribute set is merged wrapGAppsHook ]; buildInputs = [ discount + gnome3.defaultIconTheme # should be `elementary.defaultIconTheme`when elementary attribute set is merged + gnome3.libgee granite gtk3 gtksourceview gtkspell3 webkitgtk - gnome3.libgee - ]; - - patches = [ - # Fix build with vala 0.42 - Drop these in next release - (fetchpatch { - url = "https://github.com/lainsce/quilter/commit/a58838213cd7f2d33048c7b34b96dc8875612624.patch"; - sha256 = "1a4w1zql4zfk8scgrrssrm9n3sh5fsc1af5zvrqk8skbv7f2c80n"; - }) - (fetchpatch { - url = "https://github.com/lainsce/quilter/commit/d1800ce830343a1715bc83da3339816554896be5.patch"; - sha256 = "0xl5iz8bgx5661vbbq8qa1wkfvw9d3da67x564ckjfi05zq1vddz"; - }) - # Correct libMarkdown dependency discovery: See https://github.com/lainsce/quilter/pull/170 - (fetchpatch { - url = "https://github.com/lainsce/quilter/commit/8b1f3a60bd14cb86c1c62f9917c5f0c12bc4e459.patch"; - sha256 = "1kjc6ygf9yjvqfa4xhzxiava3338swp9wbjhpfaa3pyz3ayh188n"; - }) - # post_install script cleanups: See https://github.com/lainsce/quilter/pull/171 - (fetchpatch { - url = "https://github.com/lainsce/quilter/commit/55bf3b10cd94fcc40b0867bbdb1931a09f577922.patch"; - sha256 = "1330amichaif2qfrh4qkxwqbcpr87ipik7vzjbjdm2bv3jz9353r"; - }) ]; postPatch = '' @@ -65,9 +44,9 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Focus on your writing - designed for elementary OS"; - homepage = https://github.com/lainsce/quilter; - license = licenses.gpl2Plus; + homepage = https://github.com/lainsce/quilter; + license = licenses.gpl2Plus; maintainers = with maintainers; [ worldofpeace ]; - platforms = platforms.linux; + platforms = platforms.linux; }; } diff --git a/pkgs/applications/editors/rednotebook/default.nix b/pkgs/applications/editors/rednotebook/default.nix index 8b37f0b74d5..de9a089ec8c 100644 --- a/pkgs/applications/editors/rednotebook/default.nix +++ b/pkgs/applications/editors/rednotebook/default.nix @@ -1,26 +1,26 @@ { lib, buildPythonApplication, fetchFromGitHub -, gdk_pixbuf, glib, gobjectIntrospection, gtk3, pango, webkitgtk +, gdk_pixbuf, glib, gobject-introspection, gtk3, gtksourceview, pango, webkitgtk , pygobject3, pyyaml }: buildPythonApplication rec { pname = "rednotebook"; - version = "2.6.1"; + version = "2.8"; src = fetchFromGitHub { owner = "jendrikseipp"; repo = "rednotebook"; rev = "v${version}"; - sha256 = "1x6acx0hagsawx84cv55qz17p8qjpq1v1zaf8rmm6ifsslsxw91h"; + sha256 = "0k75lw3p6jx30ngvn8iipk1763gazkbrsad3fpl3sqppaqaggryj"; }; # We have not packaged tests. doCheck = false; - nativeBuildInputs = [ gobjectIntrospection ]; + nativeBuildInputs = [ gobject-introspection ]; propagatedBuildInputs = [ - gdk_pixbuf glib gtk3 pango webkitgtk + gdk_pixbuf glib gtk3 gtksourceview pango webkitgtk pygobject3 pyyaml ]; diff --git a/pkgs/applications/editors/rstudio/clang-location.patch b/pkgs/applications/editors/rstudio/clang-location.patch new file mode 100644 index 00000000000..402abdd8563 --- /dev/null +++ b/pkgs/applications/editors/rstudio/clang-location.patch @@ -0,0 +1,25 @@ +diff --git i/src/cpp/core/libclang/LibClang.cpp w/src/cpp/core/libclang/LibClang.cpp +index ec12a3a1ff..8c81b633ae 100644 +--- i/src/cpp/core/libclang/LibClang.cpp ++++ w/src/cpp/core/libclang/LibClang.cpp +@@ -54,7 +54,7 @@ std::vector defaultCompileArgs(LibraryVersion version) + + // we need to add in the associated libclang headers as + // they are not discovered / used by default during compilation +- FilePath llvmPath = s_libraryPath.parent().parent(); ++ FilePath llvmPath("@clang@"); + boost::format fmt("%1%/lib/clang/%2%/include"); + fmt % llvmPath.absolutePath() % version.asString(); + std::string includePath = fmt.str(); +@@ -77,10 +77,7 @@ std::vector systemClangVersions() + #elif defined(__unix__) + // default set of versions + clangVersions = { +- "/usr/lib/libclang.so", +- "/usr/lib/llvm/libclang.so", +- "/usr/lib64/libclang.so", +- "/usr/lib64/llvm/libclang.so", ++ "@libclang.so@" + }; + + // iterate through the set of available 'llvm' directories diff --git a/pkgs/applications/editors/rstudio/default.nix b/pkgs/applications/editors/rstudio/default.nix index 1a5c9d65583..86fb972e94c 100644 --- a/pkgs/applications/editors/rstudio/default.nix +++ b/pkgs/applications/editors/rstudio/default.nix @@ -1,12 +1,12 @@ { stdenv, fetchurl, fetchFromGitHub, makeDesktopItem, cmake, boost -, zlib, openssl, R, qtbase, qtwebkit, qtwebchannel, libuuid, hunspellDicts -, unzip, ant, jdk, gnumake, makeWrapper, pandoc +, zlib, openssl, R, qtbase, qtwebkit, qtwebchannel, qtxmlpatterns, libuuid +, hunspellDicts, unzip, ant, jdk, gnumake, makeWrapper, pandoc }: let verMajor = "1"; verMinor = "1"; - verPatch = "456"; + verPatch = "463"; version = "${verMajor}.${verMinor}.${verPatch}"; ginVer = "1.5"; gwtVer = "2.7.0"; @@ -16,13 +16,14 @@ stdenv.mkDerivation rec { nativeBuildInputs = [ cmake unzip ant jdk makeWrapper pandoc ]; - buildInputs = [ boost zlib openssl R qtbase qtwebkit qtwebchannel libuuid ]; + buildInputs = [ boost zlib openssl R qtbase qtwebkit qtwebchannel + qtxmlpatterns libuuid ]; src = fetchFromGitHub { owner = "rstudio"; repo = "rstudio"; rev = "v${version}"; - sha256 = "0hv07qrbjwapbjrkddasglsgk0x5j7qal468i5rv77krsp09s4fz"; + sha256 = "014g984znsczzy1fyn9y1ly3rbsngryfs674lfgciz60mqnl8im6"; }; # Hack RStudio to only use the input R. diff --git a/pkgs/applications/editors/rstudio/fix-cmake.patch b/pkgs/applications/editors/rstudio/fix-cmake.patch new file mode 100644 index 00000000000..3effc0eaa32 --- /dev/null +++ b/pkgs/applications/editors/rstudio/fix-cmake.patch @@ -0,0 +1,15 @@ +diff --git a/src/cpp/desktop/CMakeLists.txt b/src/cpp/desktop/CMakeLists.txt +index f5701bf735..27af4148ff 100644 +--- a/src/cpp/desktop/CMakeLists.txt ++++ b/src/cpp/desktop/CMakeLists.txt +@@ -112,6 +112,7 @@ find_package(Qt5WebEngine REQUIRED) + find_package(Qt5WebEngineWidgets REQUIRED) + find_package(Qt5PrintSupport REQUIRED) + find_package(Qt5Quick REQUIRED) ++find_package(Qt5QuickWidgets REQUIRED) + find_package(Qt5Positioning REQUIRED) + find_package(Qt5Sensors REQUIRED) + find_package(Qt5Svg REQUIRED) +-- +2.17.1 + diff --git a/pkgs/applications/editors/rstudio/preview.nix b/pkgs/applications/editors/rstudio/preview.nix new file mode 100644 index 00000000000..55c83ca85a6 --- /dev/null +++ b/pkgs/applications/editors/rstudio/preview.nix @@ -0,0 +1,119 @@ +{ stdenv, fetchurl, fetchFromGitHub, makeDesktopItem, cmake, boost, zlib +, openssl, R, qtbase, qtxmlpatterns, qtsensors, qtwebengine, qtwebchannel +, libuuid, hunspellDicts, unzip, ant, jdk, gnumake, makeWrapper, pandoc +, llvmPackages +}: + +let + rev = "f79330d4"; + ginVer = "2.1.2"; + gwtVer = "2.8.1"; +in +stdenv.mkDerivation rec { + name = "RStudio-preview-${rev}"; + + nativeBuildInputs = [ cmake unzip ant jdk makeWrapper pandoc ]; + + buildInputs = [ boost zlib openssl R qtbase qtxmlpatterns qtsensors + qtwebengine qtwebchannel libuuid ]; + + src = fetchFromGitHub { + owner = "rstudio"; + repo = "rstudio"; + inherit rev; + sha256 = "0v3vzqjp74c3m4h9l6w2lrdnjqaimdjzbf7vhnlxj2qa0lwsnykb"; + }; + + # Hack RStudio to only use the input R and provided libclang. + patches = [ ./r-location.patch ./clang-location.patch ]; + postPatch = '' + substituteInPlace src/cpp/core/r_util/REnvironmentPosix.cpp --replace '@R@' ${R} + substituteInPlace src/cpp/core/libclang/LibClang.cpp \ + --replace '@clang@' ${llvmPackages.clang.cc} \ + --replace '@libclang.so@' ${llvmPackages.clang.cc.lib}/lib/libclang.so + ''; + + ginSrc = fetchurl { + url = "https://s3.amazonaws.com/rstudio-buildtools/gin-${ginVer}.zip"; + sha256 = "16jzmljravpz6p2rxa87k5f7ir8vs7ya75lnfybfajzmci0p13mr"; + }; + + gwtSrc = fetchurl { + url = "https://s3.amazonaws.com/rstudio-buildtools/gwt-${gwtVer}.zip"; + sha256 = "19x000m3jwnkqgi6ic81lkzyjvvxcfacw2j0vcfcaknvvagzhyhb"; + }; + + hunspellDictionaries = with stdenv.lib; filter isDerivation (attrValues hunspellDicts); + + mathJaxSrc = fetchurl { + url = https://s3.amazonaws.com/rstudio-buildtools/mathjax-26.zip; + sha256 = "0wbcqb9rbfqqvvhqr1pbqax75wp8ydqdyhp91fbqfqp26xzjv6lk"; + }; + + rsconnectSrc = fetchFromGitHub { + owner = "rstudio"; + repo = "rsconnect"; + rev = "984745d8"; + sha256 = "037z0y32k1gdda192y5qn5hi7wp8wyap44mkjlklrgcqkmlcylb9"; + }; + + preConfigure = + '' + GWT_LIB_DIR=src/gwt/lib + + mkdir -p $GWT_LIB_DIR/gin/${ginVer} + unzip ${ginSrc} -d $GWT_LIB_DIR/gin/${ginVer} + + unzip ${gwtSrc} + mkdir -p $GWT_LIB_DIR/gwt + mv gwt-${gwtVer} $GWT_LIB_DIR/gwt/${gwtVer} + + mkdir dependencies/common/dictionaries + for dict in ${builtins.concatStringsSep " " hunspellDictionaries}; do + for i in "$dict/share/hunspell/"*; do + ln -sv $i dependencies/common/dictionaries/ + done + done + + unzip ${mathJaxSrc} -d dependencies/common/mathjax-26 + + mkdir -p dependencies/common/pandoc + cp ${pandoc}/bin/pandoc dependencies/common/pandoc/ + + cp -r ${rsconnectSrc} dependencies/common/rsconnect + pushd dependencies/common + ${R}/bin/R CMD build -d --no-build-vignettes rsconnect + popd + ''; + + enableParallelBuilding = true; + + cmakeFlags = [ "-DRSTUDIO_TARGET=Desktop" "-DQT_QMAKE_EXECUTABLE=$NIX_QT5_TMP/bin/qmake" ]; + + desktopItem = makeDesktopItem { + name = name; + exec = "rstudio %F"; + icon = "rstudio"; + desktopName = "RStudio Preview"; + genericName = "IDE"; + comment = meta.description; + categories = "Development;"; + 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;"; + }; + + 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; + { description = "Set of integrated tools for the R language"; + homepage = https://www.rstudio.com/; + license = licenses.agpl3; + maintainers = with maintainers; [ averelld ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/applications/editors/standardnotes/default.nix b/pkgs/applications/editors/standardnotes/default.nix new file mode 100644 index 00000000000..d9bca530948 --- /dev/null +++ b/pkgs/applications/editors/standardnotes/default.nix @@ -0,0 +1,48 @@ +{ stdenv, appimage-run, fetchurl }: + +let + version = "2.3.12"; + + plat = { + "i386-linux" = "i386"; + "x86_64-linux" = "x86_64"; + }.${stdenv.hostPlatform.system}; + + sha256 = { + "i386-linux" = "0q7izk20r14kxn3n4pn92jgnynfnlnylg55brz8n1lqxc0dc3v24"; + "x86_64-linux" = "0myg4qv0vrwh8s9sckb12ld9f86ymx4yypvpy0w5qn1bxk5hbafc"; + }.${stdenv.hostPlatform.system}; +in + +stdenv.mkDerivation rec { + name = "standardnotes-${version}"; + + src = fetchurl { + url = "https://github.com/standardnotes/desktop/releases/download/v${version}/standard-notes-${version}-${plat}.AppImage"; + inherit sha256; + }; + + buildInputs = [ appimage-run ]; + + unpackPhase = ":"; + + installPhase = '' + mkdir -p $out/{bin,share} + cp $src $out/share/standardNotes.AppImage + echo "#!/bin/sh" > $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 + ''; + + meta = with stdenv.lib; { + description = "A simple and private notes app"; + longDescription = '' + 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; + 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 11724d9802a..24639f3bfd4 100644 --- a/pkgs/applications/editors/sublime/2/default.nix +++ b/pkgs/applications/editors/sublime/2/default.nix @@ -9,13 +9,19 @@ stdenv.mkDerivation rec { if stdenv.hostPlatform.system == "i686-linux" then fetchurl { name = "sublimetext-2.0.2.tar.bz2"; - url = http://c758482.r82.cf2.rackcdn.com/Sublime%20Text%202.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 + ]; sha256 = "026g5mppk28lzzzn9ibykcqkrd5msfmg0sc0z8w8jd7v3h28wcq7"; } else fetchurl { name = "sublimetext-2.0.2.tar.bz2"; - url = http://c758482.r82.cf2.rackcdn.com/Sublime%20Text%202.0.2%20x64.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 + ]; sha256 = "115b71nbv9mv8cz6bkjwpbdf2ywnjc1zy2d3080f6ck4sqqfvfh1"; }; buildCommand = '' diff --git a/pkgs/applications/editors/sublime/3/common.nix b/pkgs/applications/editors/sublime/3/common.nix index eb282b1be3a..cf6802eb9a9 100644 --- a/pkgs/applications/editors/sublime/3/common.nix +++ b/pkgs/applications/editors/sublime/3/common.nix @@ -1,14 +1,14 @@ {buildVersion, x32sha256, x64sha256}: -{ fetchurl, stdenv, glib, xorg, cairo, gtk2, pango, makeWrapper, openssl, bzip2, +{ fetchurl, stdenv, glib, xorg, cairo, gtk2, gtk3, pango, makeWrapper, wrapGAppsHook, openssl, bzip2, pkexecPath ? "/run/wrappers/bin/pkexec", libredirect, gksuSupport ? false, gksu, unzip, zip, bash}: assert gksuSupport -> gksu != null; let - - libPath = stdenv.lib.makeLibraryPath [glib xorg.libX11 gtk2 cairo pango]; + legacy = stdenv.lib.versionOlder buildVersion "3181"; + libPath = stdenv.lib.makeLibraryPath [ glib xorg.libX11 (if legacy then gtk2 else gtk3) cairo pango ]; redirects = [ "/usr/bin/pkexec=${pkexecPath}" ] ++ stdenv.lib.optional gksuSupport "/usr/bin/gksudo=${gksu}/bin/gksudo"; in let @@ -36,11 +36,14 @@ in let dontStrip = true; dontPatchELF = true; - buildInputs = [ makeWrapper zip unzip ]; + buildInputs = stdenv.lib.optionals (!legacy) [ glib gtk3 ]; # for GSETTINGS_SCHEMAS_PATH + nativeBuildInputs = [ makeWrapper zip unzip ] ++ stdenv.lib.optional (!legacy) wrapGAppsHook; # make exec.py in Default.sublime-package use own bash with # an LD_PRELOAD instead of "/bin/bash" patchPhase = '' + runHook prePatch + mkdir Default.sublime-package-fix ( cd Default.sublime-package-fix unzip -q ../Packages/Default.sublime-package @@ -50,9 +53,13 @@ in let zip -q ../Packages/Default.sublime-package **/* ) rm -r Default.sublime-package-fix + + runHook postPatch ''; buildPhase = '' + runHook preBuild + for i in sublime_text plugin_host crash_reporter; do patchelf \ --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ @@ -62,9 +69,13 @@ in let # Rewrite pkexec|gksudo argument. Note that we can't delete bytes in binary. sed -i -e 's,/bin/cp\x00,cp\x00\x00\x00\x00\x00\x00,g' sublime_text + + runHook postBuild ''; installPhase = '' + runHook preInstall + # Correct sublime_text.desktop to exec `sublime' instead of /opt/sublime_text sed -e "s,/opt/sublime_text/sublime_text,$out/sublime_text," -i sublime_text.desktop @@ -74,12 +85,20 @@ in let # We can't just call /usr/bin/env bash because a relocation error occurs # when trying to run a build from within Sublime Text ln -s ${bash}/bin/bash $out/sublime_bash + + runHook postInstall + ''; + + dontWrapGApps = true; # non-standard location, need to wrap the executables manually + + postFixup = '' wrapProgram $out/sublime_bash \ --set LD_PRELOAD "${stdenv.cc.cc.lib}/lib${stdenv.lib.optionalString stdenv.is64bit "64"}/libgcc_s.so.1" wrapProgram $out/sublime_text \ --set LD_PRELOAD "${libredirect}/lib/libredirect.so" \ - --set NIX_REDIRECTS ${builtins.concatStringsSep ":" redirects} + --set NIX_REDIRECTS ${builtins.concatStringsSep ":" redirects} \ + ${stdenv.lib.optionalString (!legacy) ''"''${gappsWrapperArgs[@]}"''} # Without this, plugin_host crashes, even though it has the rpath wrapProgram $out/plugin_host --prefix LD_PRELOAD : ${stdenv.cc.cc.lib}/lib${stdenv.lib.optionalString stdenv.is64bit "64"}/libgcc_s.so.1:${openssl.out}/lib/libssl.so:${bzip2.out}/lib/libbz2.so diff --git a/pkgs/applications/editors/sublime/3/packages.nix b/pkgs/applications/editors/sublime/3/packages.nix index 8ab7c814407..2d214f18e9f 100644 --- a/pkgs/applications/editors/sublime/3/packages.nix +++ b/pkgs/applications/editors/sublime/3/packages.nix @@ -5,9 +5,9 @@ let in rec { sublime3-dev = common { - buildVersion = "3176"; - x32sha256 = "08asz13888d4ddsz81cfk7k3319dabzz1kgbnshw0756pvyrvr23"; - x64sha256 = "0cppkh5jx2g8f6jyy1bs81fpb90l0kn5m7y3skackpjdxhd7rwbl"; + buildVersion = "3184"; + x32sha256 = "1b6f1fid75g5z247dbnyyj276lrlv99scrdk1vvfcr6vyws77vzr"; + x64sha256 = "03127jhfjr17ai96p3axh5b5940fds8jcw6vkid8y6dmvd2dpylz"; } {}; sublime3 = common { diff --git a/pkgs/applications/editors/tecoc/default.nix b/pkgs/applications/editors/tecoc/default.nix index 1c5730838ff..dd986b346a3 100644 --- a/pkgs/applications/editors/tecoc/default.nix +++ b/pkgs/applications/editors/tecoc/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchgit +{ stdenv, fetchFromGitHub , ncurses }: stdenv.mkDerivation rec { @@ -6,20 +6,27 @@ stdenv.mkDerivation rec { name = "tecoc-git-${version}"; version = "20150606"; - src = fetchgit { - url = "https://github.com/blakemcbride/TECOC.git"; + src = fetchFromGitHub { + owner = "blakemcbride"; + repo = "TECOC"; rev = "d7dffdeb1dfb812e579d6d3b518545b23e1b50cb"; sha256 = "11zfa73dlx71c0hmjz5n3wqcvk6082rpb4sss877nfiayisc0njj"; }; buildInputs = [ ncurses ]; - configurePhase = '' - cp src/makefile.linux src/Makefile - ''; - buildPhase = '' - make CC=${stdenv.cc}/bin/cc -C src/ - ''; + makefile = if stdenv.hostPlatform.isDarwin + then "makefile.osx" + else if stdenv.hostPlatform.isFreeBSD + then "makefile.bsd" + else if stdenv.hostPlatform.isOpenBSD + then "makefile.bsd" + else if stdenv.hostPlatform.isWindows + then "makefile.win" + else "makefile.linux"; # I think Linux is a safe default... + + makeFlags = [ "CC=${stdenv.cc}/bin/cc" "-C src/" ]; + installPhase = '' mkdir -p $out/bin $out/share/doc/${name} $out/lib/teco/macros cp src/tecoc $out/bin @@ -31,26 +38,26 @@ stdenv.mkDerivation rec { ln -s tecoc teco ln -s tecoc Inspect ) ''; - + meta = with stdenv.lib; { description = "A clone of the good old TECO editor"; longDescription = '' - For those who don't know: TECO is the acronym of Tape Editor and - COrrector (because it was a paper tape edition tool in its debut - days). Now the acronym follows after Text Editor and Corrector, - or Text Editor Character-Oriented. - - TECO is a character-oriented text editor, originally developed - bu Dan Murphy at MIT circa 1962. It is also a Turing-complete - imperative interpreted programming language for text - manipulation, done via user-loaded sets of macros. In fact, Emacs - was born as a set of Editor MACroS for TECO. + For those who don't know: TECO is the acronym of Tape Editor and COrrector + (because it was a paper tape edition tool in its debut days). Now the + acronym follows after Text Editor and Corrector, or Text Editor + Character-Oriented. + + TECO is a character-oriented text editor, originally developed by Dan + Murphy at MIT circa 1962. It is also a Turing-complete imperative + interpreted programming language for text manipulation, done via + user-loaded sets of macros. In fact, the venerable Emacs was born as a set + of Editor MACroS for TECO. 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; }; maintainers = [ maintainers.AndersonTorres ]; - platforms = platforms.linux; + platforms = platforms.unix; }; } -# TODO: test in other platforms - especially Darwin diff --git a/pkgs/applications/editors/texmacs/default.nix b/pkgs/applications/editors/texmacs/default.nix index d3d95e5886a..ac5ac34d214 100644 --- a/pkgs/applications/editors/texmacs/default.nix +++ b/pkgs/applications/editors/texmacs/default.nix @@ -24,6 +24,7 @@ stdenv.mkDerivation { }; buildInputs = [ guile_1_8 qt4 makeWrapper ghostscriptX freetype ]; + NIX_LDFLAGS = [ "-lz" ]; postInstall = "wrapProgram $out/bin/texmacs --suffix PATH : " + (if ghostscriptX == null then "" else "${ghostscriptX}/bin:") + @@ -33,12 +34,6 @@ stdenv.mkDerivation { inherit (common) postPatch; - postFixup = '' - bin="$out/libexec/TeXmacs/bin/texmacs.bin" - rpath=$(patchelf --print-rpath "$bin") - patchelf --set-rpath "$rpath:${zlib.out}/lib" "$bin" - ''; - meta = common.meta // { maintainers = [ stdenv.lib.maintainers.roconnor ]; platforms = stdenv.lib.platforms.gnu ++ stdenv.lib.platforms.linux; # arbitrary choice diff --git a/pkgs/applications/editors/texmaker/default.nix b/pkgs/applications/editors/texmaker/default.nix index c5f691e95c2..036bd8e546c 100644 --- a/pkgs/applications/editors/texmaker/default.nix +++ b/pkgs/applications/editors/texmaker/default.nix @@ -2,12 +2,12 @@ stdenv.mkDerivation rec { pname = "texmaker"; - version = "5.0.2"; + version = "5.0.3"; name = "${pname}-${version}"; src = fetchurl { url = "http://www.xm1math.net/texmaker/${name}.tar.bz2"; - sha256 = "0y81mjm89b99pr9svcwpaf4iz2q9pc9hjas5kiwd1pbgl5vqskm9"; + sha256 = "0vrj9w5lk3vf6138n5bz8phmy3xp5kv4dq1rgirghcf4hbxdyx30"; }; buildInputs = [ qtbase qtscript poppler zlib ]; diff --git a/pkgs/applications/editors/texstudio/default.nix b/pkgs/applications/editors/texstudio/default.nix index 7ba37bd14ff..ca04cccdf17 100644 --- a/pkgs/applications/editors/texstudio/default.nix +++ b/pkgs/applications/editors/texstudio/default.nix @@ -2,14 +2,14 @@ stdenv.mkDerivation rec { pname = "texstudio"; - version = "2.12.10"; + version = "2.12.14"; name = "${pname}-${version}"; src = fetchFromGitHub { owner = "${pname}-org"; repo = pname; rev = version; - sha256 = "0mkx7fym41hwd7cdg31ji2hxlv3gxx0sa6bnap51ryxmq8sxdjhq"; + sha256 = "08vfhkgzhh1227wcvr5wwpnw0072c80nf2crhmxwh3jgjfgi538f"; }; nativeBuildInputs = [ qt5.qmake pkgconfig ]; diff --git a/pkgs/applications/editors/textadept/default.nix b/pkgs/applications/editors/textadept/default.nix index 818183b9852..f17f5a9a26a 100644 --- a/pkgs/applications/editors/textadept/default.nix +++ b/pkgs/applications/editors/textadept/default.nix @@ -64,7 +64,7 @@ let gtdialog_url = "http://foicica.com/gtdialog/download/" + gtdialog_zip; lspawn_url = "http://foicica.com/lspawn/download/" + lspawn_zip; - scintilla_url = "http://prdownloads.sourceforge.net/scintilla/" + scintilla_tgz; + scintilla_url = "mirror://sourceforge/scintilla/" + scintilla_tgz; lua_url = "http://www.lua.org/ftp/" + lua_tgz; lpeg_url = "http://www.inf.puc-rio.br/~roberto/lpeg/" + lpeg_tgz; lfs_url = "https://github.com/keplerproject/luafilesystem/archive/" + lfs_zip; diff --git a/pkgs/applications/editors/thonny/default.nix b/pkgs/applications/editors/thonny/default.nix index a4ea354ebf6..ba68a5420a8 100644 --- a/pkgs/applications/editors/thonny/default.nix +++ b/pkgs/applications/editors/thonny/default.nix @@ -4,16 +4,24 @@ with python3.pkgs; buildPythonApplication rec { pname = "thonny"; - version = "3.0.0b3"; + version = "3.0.5"; src = fetchFromBitbucket { owner = "plas"; repo = pname; - rev = "a511d4539c532b6dddf6d7f1586d30e1ac35bd86"; - sha256 = "1s3pp97r6p3j81idglnml4faxryk7saszxmv3gys1agdfj75qczr"; + rev = "e5a1ad4ae9d24066a769489b1e168b4bd6e00b03"; + sha256 = "1lrl5pj9dpw9i5ij863hd47gfd15nmvglqkl2ldwgfn7kgpsdkz5"; }; - propagatedBuildInputs = with python3.pkgs; [ jedi pyserial tkinter docutils pylint ]; + propagatedBuildInputs = with python3.pkgs; [ + jedi + pyserial + tkinter + docutils + pylint + mypy + pyperclip + ]; preInstall = '' export HOME=$(mktemp -d) diff --git a/pkgs/applications/editors/tiled/default.nix b/pkgs/applications/editors/tiled/default.nix index fb670d59bd1..ed37ad794a0 100644 --- a/pkgs/applications/editors/tiled/default.nix +++ b/pkgs/applications/editors/tiled/default.nix @@ -3,13 +3,13 @@ stdenv.mkDerivation rec { name = "tiled-${version}"; - version = "1.2.0"; + version = "1.2.1"; src = fetchFromGitHub { owner = "bjorn"; repo = "tiled"; rev = "v${version}"; - sha256 = "15apv81c5h17ljrxvm7hlyqg5bw58dzgik8gfhmh97wpwnbz1bl9"; + sha256 = "077fv3kn3fy06z8f414r3ny4a04l05prppmkyvjqhnwf1i1jck1w"; }; nativeBuildInputs = [ pkgconfig qmake ]; diff --git a/pkgs/applications/editors/vim/common.nix b/pkgs/applications/editors/vim/common.nix index 87a525b3302..e0ac32c54ec 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.0348"; + version = "8.1.0578"; src = fetchFromGitHub { owner = "vim"; repo = "vim"; rev = "v${version}"; - sha256 = "0f18kpywnph708mvj1fpi06qb53nbhc26ngjh2kvfxwawn63k8ab"; + sha256 = "0sawqxp2737y6mga9da36qya47h0idnnaxblzpsx8clw002piyv2"; }; enableParallelBuilding = true; diff --git a/pkgs/applications/editors/vim/default.nix b/pkgs/applications/editors/vim/default.nix index 26cd61d182b..2f34a6ddeb6 100644 --- a/pkgs/applications/editors/vim/default.nix +++ b/pkgs/applications/editors/vim/default.nix @@ -6,7 +6,7 @@ sha256 = "18ifhv5q9prd175q3vxbqf6qyvkk6bc7d2lhqdk0q78i68kv9y0c"; } # apple frameworks -, Carbon, Cocoa +, cf-private, Carbon, Cocoa }: let @@ -19,7 +19,11 @@ stdenv.mkDerivation rec { nativeBuildInputs = [ gettext pkgconfig ]; buildInputs = [ ncurses ] - ++ stdenv.lib.optionals stdenv.hostPlatform.isDarwin [ Carbon Cocoa ]; + ++ stdenv.lib.optionals stdenv.hostPlatform.isDarwin [ + Carbon Cocoa + # Needed for OBJC_CLASS_$_NSArray symbols. + cf-private + ]; configureFlags = [ "--enable-multibyte" diff --git a/pkgs/applications/editors/vscode/default.nix b/pkgs/applications/editors/vscode/default.nix index b8a717fc0e7..b38b357126f 100644 --- a/pkgs/applications/editors/vscode/default.nix +++ b/pkgs/applications/editors/vscode/default.nix @@ -1,9 +1,9 @@ { stdenv, lib, fetchurl, unzip, atomEnv, makeDesktopItem, - gtk2, wrapGAppsHook, libXScrnSaver, libxkbfile, libsecret }: + gtk2, wrapGAppsHook, libXScrnSaver, libxkbfile, libsecret, + isInsiders ? false }: let - version = "1.28.0"; - channel = "stable"; + executableName = "code" + lib.optionalString isInsiders "-insiders"; plat = { "i686-linux" = "linux-ia32"; @@ -12,9 +12,9 @@ let }.${stdenv.hostPlatform.system}; sha256 = { - "i686-linux" = "0f54py00lmw96x47nk823gwxxc9kr9haaa821ggi974ycr54af0y"; - "x86_64-linux" = "07bbzm1159k2gkajj6z7dsr0kmadd5gx721w92r252i5hcwg5sx4"; - "x86_64-darwin" = "019cl2rswls3gwwa8y70cllc4jnd8xj0y2m9rvg2rz695snp6rcm"; + "i686-linux" = "1g73fay6fxlqhalkqq5m6rjbp68k9npk0rrxrkhdj8mw0cz74dpm"; + "x86_64-linux" = "0mil8n5i2ajdyrgq862wq59ajy2122rvvn7m7mxq4ab92sk26rix"; + "x86_64-darwin" = "07r52scs1sgafzxqal39r8vf9p9qqvwwx8f6z09gqcf6clr6k48q"; }.${stdenv.hostPlatform.system}; archive_fmt = if stdenv.hostPlatform.system == "x86_64-darwin" then "zip" else "tar.gz"; @@ -31,19 +31,24 @@ let in stdenv.mkDerivation rec { name = "vscode-${version}"; + version = "1.30.2"; src = fetchurl { name = "VSCode_${version}_${plat}.${archive_fmt}"; - url = "https://vscode-update.azurewebsites.net/${version}/${plat}/${channel}"; + url = "https://vscode-update.azurewebsites.net/${version}/${plat}/stable"; inherit sha256; }; + passthru = { + inherit executableName; + }; + desktopItem = makeDesktopItem { - name = "code"; - exec = "code"; - icon = "code"; + name = executableName; + exec = executableName; + icon = "@out@/share/pixmaps/code.png"; comment = "Code editor redefined and optimized for building and debugging modern web and cloud applications"; - desktopName = "Visual Studio Code"; + desktopName = "Visual Studio Code" + lib.optionalString isInsiders " Insiders"; genericName = "Text Editor"; categories = "GNOME;GTK;Utility;TextEditor;Development;"; }; @@ -56,17 +61,18 @@ in if stdenv.hostPlatform.system == "x86_64-darwin" then '' mkdir -p $out/lib/vscode $out/bin cp -r ./* $out/lib/vscode - ln -s $out/lib/vscode/Contents/Resources/app/bin/code $out/bin + ln -s $out/lib/vscode/Contents/Resources/app/bin/${executableName} $out/bin '' else '' mkdir -p $out/lib/vscode $out/bin cp -r ./* $out/lib/vscode - substituteInPlace $out/lib/vscode/bin/code --replace '"$CLI" "$@"' '"$CLI" "--skip-getting-started" "$@"' + substituteInPlace $out/lib/vscode/bin/${executableName} --replace '"$CLI" "$@"' '"$CLI" "--skip-getting-started" "$@"' - ln -s $out/lib/vscode/bin/code $out/bin + ln -s $out/lib/vscode/bin/${executableName} $out/bin mkdir -p $out/share/applications - cp $desktopItem/share/applications/* $out/share/applications + substitute $desktopItem/share/applications/${executableName}.desktop $out/share/applications/${executableName}.desktop \ + --subst-var out mkdir -p $out/share/pixmaps cp $out/lib/vscode/resources/app/resources/linux/code.png $out/share/pixmaps/code.png @@ -76,7 +82,7 @@ in patchelf \ --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ --set-rpath "${rpath}" \ - $out/lib/vscode/code + $out/lib/vscode/${executableName} patchelf \ --set-rpath "${rpath}" \ diff --git a/pkgs/applications/editors/vscode/with-extensions.nix b/pkgs/applications/editors/vscode/with-extensions.nix index 5535d9ab112..88bea0c0809 100644 --- a/pkgs/applications/editors/vscode/with-extensions.nix +++ b/pkgs/applications/editors/vscode/with-extensions.nix @@ -1,4 +1,4 @@ -{ stdenv, lib, runCommand, buildEnv, vscode, which, writeScript +{ stdenv, lib, runCommand, buildEnv, vscode, makeWrapper , vscodeExtensions ? [] }: /* @@ -43,6 +43,7 @@ let + inherit (vscode) executableName; wrappedPkgVersion = lib.getVersion vscode; wrappedPkgName = lib.removeSuffix "-${wrappedPkgVersion}" vscode.name; @@ -51,22 +52,12 @@ let paths = vscodeExtensions; }; - wrappedExeName = "code"; - exeName = wrappedExeName; - - wrapperExeFile = writeScript "${exeName}" '' - #!${stdenv.shell} - exec ${vscode}/bin/${wrappedExeName} \ - --extensions-dir "${combinedExtensionsDrv}/share/${wrappedPkgName}/extensions" \ - "$@" - ''; - in # When no extensions are requested, we simply redirect to the original # non-wrapped vscode executable. runCommand "${wrappedPkgName}-with-extensions-${wrappedPkgVersion}" { - buildInputs = [ vscode which ]; + buildInputs = [ vscode makeWrapper ]; dontPatchELF = true; dontStrip = true; meta = vscode.meta; @@ -75,13 +66,9 @@ runCommand "${wrappedPkgName}-with-extensions-${wrappedPkgVersion}" { mkdir -p "$out/share/applications" mkdir -p "$out/share/pixmaps" - ln -sT "${vscode}/share/applications/code.desktop" "$out/share/applications/code.desktop" ln -sT "${vscode}/share/pixmaps/code.png" "$out/share/pixmaps/code.png" - ${if [] == vscodeExtensions - then '' - ln -sT "${vscode}/bin/${wrappedExeName}" "$out/bin/${exeName}" - '' - else '' - ln -sT "${wrapperExeFile}" "$out/bin/${exeName}" - ''} + ln -sT "${vscode}/share/applications/${executableName}.desktop" "$out/share/applications/${executableName}.desktop" + makeWrapper "${vscode}/bin/${executableName}" "$out/bin/${executableName}" ${lib.optionalString (vscodeExtensions != []) '' + --add-flags "--extensions-dir ${combinedExtensionsDrv}/share/${wrappedPkgName}/extensions" + ''} '' diff --git a/pkgs/applications/editors/xmlcopyeditor/default.nix b/pkgs/applications/editors/xmlcopyeditor/default.nix new file mode 100644 index 00000000000..229e37d0080 --- /dev/null +++ b/pkgs/applications/editors/xmlcopyeditor/default.nix @@ -0,0 +1,28 @@ +{ stdenv, fetchurl, aspell, boost, expat, expect, intltool, libxml2, libxslt, pcre, wxGTK, xercesc }: + +stdenv.mkDerivation rec { + name = "xmlcopyeditor-${version}"; + version = "1.2.1.3"; + + src = fetchurl { + name = "${name}.tar.gz"; + url = "mirror://sourceforge/xml-copy-editor/${name}.tar.gz"; + sha256 = "0bwxn89600jbrkvlwyawgc0c0qqxpl453mbgcb9qbbxl8984ns4v"; + }; + + patches = [ ./xmlcopyeditor.patch ]; + CPLUS_INCLUDE_PATH = "${libxml2.dev}/include/libxml2"; + + nativeBuildInputs = [ intltool ]; + buildInputs = [ aspell boost expat libxml2 libxslt pcre wxGTK xercesc ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "A fast, free, validating XML editor"; + homepage = http://xml-copy-editor.sourceforge.net/; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = with maintainers; [ candeira ]; + }; +} diff --git a/pkgs/applications/editors/xmlcopyeditor/xmlcopyeditor.patch b/pkgs/applications/editors/xmlcopyeditor/xmlcopyeditor.patch new file mode 100644 index 00000000000..253b9ce49ba --- /dev/null +++ b/pkgs/applications/editors/xmlcopyeditor/xmlcopyeditor.patch @@ -0,0 +1,36 @@ +From 626c385ba141c6abcff01bef4451fcad062d232c Mon Sep 17 00:00:00 2001 +From: Javier Candeira +Date: Sat, 7 Apr 2018 20:21:45 +1000 +Subject: [PATCH] nixpckgs patches + +--- + src/Makefile.in | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/src/Makefile.in b/src/Makefile.in +index e75918f..e04703b 100644 +--- a/src/Makefile.in ++++ b/src/Makefile.in +@@ -283,8 +283,8 @@ top_srcdir = @top_srcdir@ + # these are the headers for your project + noinst_HEADERS = $(srcdir)/*.h + xmlcopyeditordir = ${prefix}/share/xmlcopyeditor +-pixmapdir = /usr/share/pixmaps +-applicationsdir = /usr/share/applications ++pixmapdir = ${prefix}/share/pixmaps ++applicationsdir = ${prefix}/share/applications + + # the application source, library search path, and link libraries + xmlcopyeditor_SOURCES = aboutdialog.cpp associatedialog.cpp binaryfile.cpp \ +@@ -357,7 +357,7 @@ EXTRA_DIST = \ + $(srcdir)/xmlcopyeditor.rc \ + $(srcdir)/xmlschemaparser.cpp + +-AM_CPPFLAGS = -I/usr/include/libxml2 $(ENCHANT_CFLAGS) $(GTK_CFLAGS) ++AM_CPPFLAGS = -I$(CPLUS_INCLUDE_PATH) $(ENCHANT_CFLAGS) $(GTK_CFLAGS) + all: all-am + + .SUFFIXES: +-- +2.16.2 + diff --git a/pkgs/applications/editors/zile/default.nix b/pkgs/applications/editors/zile/default.nix index 7213b22c949..ae3871bb87a 100644 --- a/pkgs/applications/editors/zile/default.nix +++ b/pkgs/applications/editors/zile/default.nix @@ -45,7 +45,7 @@ stdenv.mkDerivation rec { compiles to about 130Kb. ''; - homepage = http://www.gnu.org/software/zile/; + homepage = https://www.gnu.org/software/zile/; license = licenses.gpl3Plus; diff --git a/pkgs/applications/gis/openorienteering-mapper/default.nix b/pkgs/applications/gis/openorienteering-mapper/default.nix index 6ed6326f16e..a5a0492ab87 100644 --- a/pkgs/applications/gis/openorienteering-mapper/default.nix +++ b/pkgs/applications/gis/openorienteering-mapper/default.nix @@ -4,7 +4,7 @@ stdenv.mkDerivation rec { name = "OpenOrienteering-Mapper-${version}"; - version = "0.8.2"; + version = "0.8.4"; buildInputs = [ gdal qtbase qttools qtlocation qtimageformats qtsensors clipper zlib proj doxygen cups]; @@ -15,7 +15,7 @@ stdenv.mkDerivation rec { owner = "OpenOrienteering"; repo = "mapper"; rev = "v${version}"; - sha256 = "02lga6nlal4c7898zc3lv1pcwyv1wpkn7v2xji2kgq68r6aw6j59"; + sha256 = "0rw34kp2vd1la97vnk9plwvis6lvyib2bvs7lgkhpnm4p5l7dp1g"; }; cmakeFlags = diff --git a/pkgs/applications/gis/qgis/default.nix b/pkgs/applications/gis/qgis/default.nix index 744aef20fda..b98d048d034 100644 --- a/pkgs/applications/gis/qgis/default.nix +++ b/pkgs/applications/gis/qgis/default.nix @@ -1,14 +1,15 @@ { stdenv, fetchurl, fetchpatch, gdal, cmake, qt4, flex, bison, proj, geos, xlibsWrapper, sqlite, gsl , qwt, fcgi, python2Packages, libspatialindex, libspatialite, qscintilla, postgresql, makeWrapper , qjson, qca2, txt2tags, openssl, darwin, pkgconfig -, withGrass ? true, grass, IOKit, ApplicationServices +, withGrass ? true, grass, saga, IOKit, ApplicationServices }: stdenv.mkDerivation rec { name = "qgis-2.18.22"; buildInputs = [ gdal qt4 flex openssl bison proj geos xlibsWrapper sqlite gsl qwt qscintilla - fcgi libspatialindex libspatialite postgresql qjson qca2 txt2tags pkgconfig ] + fcgi libspatialindex libspatialite postgresql qjson qca2 txt2tags pkgconfig + saga ] ++ (stdenv.lib.optionals stdenv.isDarwin [IOKit ApplicationServices]) ++ @@ -68,6 +69,8 @@ stdenv.mkDerivation rec { # Necessary for QGIS to find the correct default GRASS path # Plugins look for gdal tools like deminfo on the PATH ${stdenv.lib.optionalString withGrass "ln -sf ${grass} $out/QGIS.app/Contents/MacOS/grass"} + # Necessary for QGIS to find the right SAGA installation + ln -sf ${saga}/bin/saga_cmd $out/QGIS.app/Contents/MacOS/bin/saga_cmd for file in $(find $out -type f -name "QGIS"); do wrapProgram "$file" \ --prefix DYLD_LIBRARY_PATH : "${qwt}/lib" \ diff --git a/pkgs/applications/gis/saga/clang_patch.patch b/pkgs/applications/gis/saga/clang_patch.patch new file mode 100644 index 00000000000..e6af8d13051 --- /dev/null +++ b/pkgs/applications/gis/saga/clang_patch.patch @@ -0,0 +1,19 @@ +commit e92b250968e9656084ab5984689747ca615ff6e7 +Author: Volker Wichmann +Date: Sun Mar 5 13:49:53 2017 +0100 + + saga_api, CSG_Table::Del_Records(): bug fix, check record count correctly + +diff --git a/src/saga_core/saga_api/table.cpp b/src/saga_core/saga_api/table.cpp +index 76a1d8d..fa1a66f 100644 +--- a/src/saga_core/saga_api/table.cpp ++++ b/src/saga_core/saga_api/table.cpp +@@ -901,7 +901,7 @@ bool CSG_Table::Del_Record(int iRecord) + //--------------------------------------------------------- + bool CSG_Table::Del_Records(void) + { +- if( m_Records > 0 ) ++ if( m_nRecords > 0 ) + { + _Index_Destroy(); + diff --git a/pkgs/applications/gis/saga/default.nix b/pkgs/applications/gis/saga/default.nix index a0f2e007555..4738bfba14a 100644 --- a/pkgs/applications/gis/saga/default.nix +++ b/pkgs/applications/gis/saga/default.nix @@ -1,23 +1,33 @@ { stdenv, fetchurl, gdal, wxGTK30, proj, libiodbc, lzma, jasper, - libharu, opencv, vigra, postgresql }: + libharu, opencv, vigra, postgresql, Cocoa, + unixODBC , poppler, hdf4, hdf5, netcdf, sqlite, qhull, giflib }: stdenv.mkDerivation rec { name = "saga-6.3.0"; - buildInputs = [ gdal wxGTK30 proj libharu opencv vigra postgresql libiodbc lzma jasper ]; + # See https://groups.google.com/forum/#!topic/nix-devel/h_vSzEJAPXs + # for why the have additional buildInputs on darwin + buildInputs = [ gdal wxGTK30 proj libharu opencv vigra postgresql libiodbc lzma + jasper qhull giflib ] + ++ stdenv.lib.optionals stdenv.isDarwin + [ Cocoa unixODBC poppler hdf4.out hdf5 netcdf sqlite ]; enableParallelBuilding = true; + patches = [ ./finite-6.3.0.patch]; + + CXXFLAGS = stdenv.lib.optionalString stdenv.cc.isClang "-std=c++11 -Wno-narrowing"; + src = fetchurl { url = "mirror://sourceforge/project/saga-gis/SAGA%20-%206/SAGA%20-%206.3.0/saga-6.3.0.tar.gz"; sha256 = "0hyjim8fcp3mna1hig22nnn4ki3j6b7096am2amcs99sdr09jjxv"; }; - meta = { + meta = with stdenv.lib; { description = "System for Automated Geoscientific Analyses"; homepage = http://www.saga-gis.org; - license = stdenv.lib.licenses.gpl2Plus; - maintainers = [ stdenv.lib.maintainers.michelk ]; - platforms = ["x86_64-linux" ]; + license = licenses.gpl2Plus; + maintainers = with maintainers; [ michelk mpickering ]; + platforms = with platforms; unix; }; } diff --git a/pkgs/applications/gis/saga/finite-6.3.0.patch b/pkgs/applications/gis/saga/finite-6.3.0.patch new file mode 100644 index 00000000000..91c9543edfd --- /dev/null +++ b/pkgs/applications/gis/saga/finite-6.3.0.patch @@ -0,0 +1,55 @@ +diff --git a/src/tools/imagery/imagery_maxent/me.cpp b/src/tools/imagery/imagery_maxent/me.cpp +index c5da854..d3e9cff 100755 +--- a/src/tools/imagery/imagery_maxent/me.cpp ++++ b/src/tools/imagery/imagery_maxent/me.cpp +@@ -21,7 +21,7 @@ + #ifdef _SAGA_MSW + #define isinf(x) (!_finite(x)) + #else +-#define isinf(x) (!finite(x)) ++#define isinf(x) (!isfinite(x)) + #endif + + /** The input array contains a set of log probabilities lp1, lp2, lp3 +@@ -47,7 +47,7 @@ double sumLogProb(vector& logprobs) + /** returns log (e^logprob1 + e^logprob2). */ + double sumLogProb(double logprob1, double logprob2) + { +- if (isinf(logprob1) && isinf(logprob2)) ++ if (isinf(logprob1) && isinf(logprob2)) + return logprob1; // both prob1 and prob2 are 0, return log 0. + if (logprob1>logprob2) + return logprob1+log(1+exp(logprob2-logprob1)); +@@ -70,8 +70,8 @@ void MaxEntModel::print(ostream& ostrm, MaxEntTrainer& trainer) + for (FtMap::iterator it = _index.begin(); it!=_index.end(); it++) { + unsigned long i = it->second; + for (unsigned long c = 0; c<_classes; c++) { +- ostrm << "lambda(" << trainer.className(c) << ", " +- << trainer.getStr(it->first) << ")=" ++ ostrm << "lambda(" << trainer.className(c) << ", " ++ << trainer.getStr(it->first) << ")=" + << _lambda[i+c] << endl; + } + } +@@ -86,7 +86,7 @@ int MaxEntModel::getProbs(MaxEntEvent& event, vector& probs) + double s = 0; + for (unsigned int f = 0; fsecond+c]; + } + probs[c] = s; +@@ -142,10 +142,10 @@ double MaxEntModel::getObsCounts(EventSet& events, vector& obsCounts) + double ftSum = 0; + for (unsigned long j=0; jsecond+c] += count; + else { // new feature, need to expand obsCounts and _lambda +- for (unsigned int k = 0; k<_classes; k++) ++ for (unsigned int k = 0; k<_classes; k++) + obsCounts.push_back(0); + obsCounts[_lambda.size()+c] += count; + addFeature(e[j]); diff --git a/pkgs/applications/gis/saga/finite.patch b/pkgs/applications/gis/saga/finite.patch new file mode 100644 index 00000000000..7f60743534b --- /dev/null +++ b/pkgs/applications/gis/saga/finite.patch @@ -0,0 +1,13 @@ +diff --git a/saga-gis/src/modules/imagery/imagery_maxent/me.cpp b/saga-gis/src/modules/imagery/imagery_maxent/me.cpp +index c5da854..d3e9cff 100755 +--- a/src/modules/imagery/imagery_maxent/me.cpp ++++ b/src/modules/imagery/imagery_maxent/me.cpp +@@ -21,7 +21,7 @@ + #ifdef _SAGA_MSW + #define isinf(x) (!_finite(x)) + #else +-#define isinf(x) (!finite(x)) ++#define isinf(x) (!isfinite(x)) + #endif + + /** The input array contains a set of log probabilities lp1, lp2, lp3 diff --git a/pkgs/applications/gis/saga/lts.nix b/pkgs/applications/gis/saga/lts.nix new file mode 100644 index 00000000000..ca0034aa970 --- /dev/null +++ b/pkgs/applications/gis/saga/lts.nix @@ -0,0 +1,36 @@ +{ stdenv, fetchgit, gdal, wxGTK30, proj, libiodbc, lzma, jasper, + libharu, opencv, vigra, postgresql, autoreconfHook, Cocoa + , unixODBC , poppler, hdf4, hdf5, netcdf, sqlite, qhull, giflib }: + +stdenv.mkDerivation rec { + name = "saga-2.3.2"; + + # See https://groups.google.com/forum/#!topic/nix-devel/h_vSzEJAPXs + # for why the have additional buildInputs on darwin + buildInputs = [ autoreconfHook gdal wxGTK30 proj libharu opencv vigra + postgresql libiodbc lzma jasper + unixODBC poppler hdf4.out hdf5 netcdf sqlite qhull giflib ] + ++ stdenv.lib.optional stdenv.isDarwin Cocoa ; + + enableParallelBuilding = true; + + CXXFLAGS = stdenv.lib.optionalString stdenv.cc.isClang "-std=c++11 -Wno-narrowing"; + + sourceRoot = "code-b6f474f/saga-gis"; + + patches = [ ./clang_patch.patch ./finite.patch]; + + src = fetchgit { + url = "https://git.code.sf.net/p/saga-gis/code.git"; + rev = "b6f474f8af4af7f0ff82548cc6f88c53547d91f5"; + sha256 = "0iakynai8mhcwj6wxvafkqhd7b417ss7hyhbcp9wf6092l6vc2zd"; + }; + + meta = with stdenv.lib; { + description = "System for Automated Geoscientific Analyses"; + homepage = http://www.saga-gis.org; + license = licenses.gpl2Plus; + maintainers = [ maintainers.mpickering ]; + platforms = with platforms; unix; + }; +} diff --git a/pkgs/applications/graphics/ImageMagick/7.0.nix b/pkgs/applications/graphics/ImageMagick/7.0.nix index e164a789459..10cc55d3d2b 100644 --- a/pkgs/applications/graphics/ImageMagick/7.0.nix +++ b/pkgs/applications/graphics/ImageMagick/7.0.nix @@ -13,8 +13,8 @@ let else throw "ImageMagick is not supported on this platform."; cfg = { - version = "7.0.8-12"; - sha256 = "0rq7qhbfsxvclazi1l6kqi4wqsph7hmzcjbh2pmf0276mrkgm7cd"; + version = "7.0.8-22"; + sha256 = "1ivljgf192xh7pq1apdic923pvcb3aq74mx8d4hi65hhc9748gv7"; patches = []; }; in diff --git a/pkgs/applications/graphics/ahoviewer/default.nix b/pkgs/applications/graphics/ahoviewer/default.nix index 53264580380..6668bc42a8b 100644 --- a/pkgs/applications/graphics/ahoviewer/default.nix +++ b/pkgs/applications/graphics/ahoviewer/default.nix @@ -8,13 +8,13 @@ assert useUnrar -> unrar != null; stdenv.mkDerivation rec { name = "ahoviewer-${version}"; - version = "1.5.0"; + version = "1.6.4"; src = fetchFromGitHub { owner = "ahodesuka"; repo = "ahoviewer"; rev = version; - sha256 = "1adzxp30fwh41y339ha8i5qp89zf21dw18vcicqqnzvyxbk5r3ig"; + sha256 = "144jmk8w7dnmqy4w81b3kzama7i97chx16pgax2facn72a92921q"; }; enableParallelBuilding = true; @@ -29,10 +29,9 @@ stdenv.mkDerivation rec { gst_all_1.gst-plugins-base ] ++ stdenv.lib.optional useUnrar unrar; - # https://github.com/ahodesuka/ahoviewer/issues/60 - # Already fixed in the master branch - # TODO: remove this next release - makeFlags = [ ''LIBS=-lssl -lcrypto'' ]; + NIX_LDFLAGS = [ + "-lpthread" + ]; postPatch = ''patchShebangs version.sh''; diff --git a/pkgs/applications/graphics/antimony/default.nix b/pkgs/applications/graphics/antimony/default.nix index aa6305ce831..2e7435b48bb 100644 --- a/pkgs/applications/graphics/antimony/default.nix +++ b/pkgs/applications/graphics/antimony/default.nix @@ -24,7 +24,7 @@ in postPatch = '' sed -i "s,/usr/local,$out,g" \ app/CMakeLists.txt app/app/app.cpp app/app/main.cpp - sed -i "s,python-py35,python36," CMakeLists.txt + sed -i "s,python3,${python3.executable}," CMakeLists.txt ''; buildInputs = [ diff --git a/pkgs/applications/graphics/ao/default.nix b/pkgs/applications/graphics/ao/default.nix deleted file mode 100644 index f51777bdbf7..00000000000 --- a/pkgs/applications/graphics/ao/default.nix +++ /dev/null @@ -1,41 +0,0 @@ -{stdenv, fetchgit, cmake, ninja, boost, libpng, glfw3, epoxy, guile, pkgconfig -, libGLU_combined, libX11, libpthreadstubs, libXau, libXdmcp, libXrandr, libXext -, libXinerama, libXxf86vm, libXcursor, libXfixes -}: -stdenv.mkDerivation rec { - version = "0.0pre20160820"; - name = "ao-${version}"; - - nativeBuildInputs = [ pkgconfig ]; - buildInputs = [ - cmake ninja boost libpng glfw3 epoxy guile libGLU_combined libX11 - libpthreadstubs libXau libXdmcp libXrandr libXext libXinerama libXxf86vm - libXcursor libXfixes - ]; - - src = fetchgit { - url = https://github.com/mkeeter/ao; - rev = "69fadb81543cc9031e4a7ec2036c7f2ab505a620"; - sha256 = "1717k72vr0i5j7bvxmd6q16fpvkljnqfa1hr3i4yq8cjdsj69my7"; - }; - - cmakeFlags = "-G Ninja"; - installPhase = '' - ninja install - cd .. - cp lib/lib* bind/lib* "$out/lib" - cp -r bin "$out/bin" - mkdir "$out/doc" - cp -r doc "$out/doc/ao" - cp -r examples "$out/doc/ao/examples" - cp -r bind "$out/bind" - ''; - meta = { - inherit version; - description = ''Homoiconic CAD package''; - license = stdenv.lib.licenses.gpl2Plus ; # Some parts can be extracted and used under LGPL2+ - maintainers = [stdenv.lib.maintainers.raskin]; - platforms = stdenv.lib.platforms.linux; - broken = true; # 2018-04-10 - }; -} diff --git a/pkgs/applications/graphics/autopanosiftc/default.nix b/pkgs/applications/graphics/autopanosiftc/default.nix index 5fd1810bc28..c64604975ab 100644 --- a/pkgs/applications/graphics/autopanosiftc/default.nix +++ b/pkgs/applications/graphics/autopanosiftc/default.nix @@ -10,6 +10,13 @@ stdenv.mkDerivation { buildInputs = [ cmake libpng libtiff libjpeg panotools libxml2 ]; + patches = [ + (fetchurl { + url = https://gitweb.gentoo.org/repo/gentoo.git/plain/media-gfx/autopano-sift-C/files/autopano-sift-C-2.5.1-lm.patch; + sha256 = "1bfcr5sps0ip9gl4jprji5jgf9wkczz6d2clsjjlbsy8r3ixi3lv"; + }) + ]; + meta = { homepage = http://hugin.sourceforge.net/; description = "Implementation in C of the autopano-sift algorithm for automatically stitching panoramas"; diff --git a/pkgs/applications/graphics/avocode/default.nix b/pkgs/applications/graphics/avocode/default.nix index e0aea87c90c..7777be91897 100644 --- a/pkgs/applications/graphics/avocode/default.nix +++ b/pkgs/applications/graphics/avocode/default.nix @@ -1,23 +1,24 @@ { stdenv, makeDesktopItem, fetchurl, unzip -, gdk_pixbuf, glib, gtk2, atk, pango, cairo, freetype, fontconfig, dbus, nss, nspr, alsaLib, cups, expat, udev, gnome2 -, xorg, mozjpeg +, gdk_pixbuf, glib, gtk3, atk, at-spi2-atk, pango, cairo, freetype, fontconfig, dbus, nss, nspr, alsaLib, cups, expat, udev, gnome3 +, xorg, mozjpeg, makeWrapper, gsettings-desktop-schemas }: stdenv.mkDerivation rec { name = "avocode-${version}"; - version = "3.4.0"; + version = "3.6.2"; src = fetchurl { url = "https://media.avocode.com/download/avocode-app/${version}/avocode-${version}-linux.zip"; - sha256 = "1dk4vgam9r5nl8dvpfwrn52gq6r4zxs4zz63p3c4gk73d8qnh4dl"; + sha256 = "1slxxr3j0djqdnbk645sriwl99jp9imndyxiwd8aqggmmlp145a2"; }; - libPath = stdenv.lib.makeLibraryPath (with xorg; with gnome2; [ + libPath = stdenv.lib.makeLibraryPath (with xorg; with gnome3; [ stdenv.cc.cc.lib gdk_pixbuf glib - gtk2 + gtk3 atk + at-spi2-atk pango cairo freetype @@ -29,7 +30,6 @@ stdenv.mkDerivation rec { cups expat udev - GConf libX11 libxcb libXi @@ -54,7 +54,8 @@ stdenv.mkDerivation rec { comment = "The bridge between designers and developers"; }; - buildInputs = [ unzip ]; + nativeBuildInputs = [makeWrapper]; + buildInputs = [ unzip gtk3 gsettings-desktop-schemas]; # src is producing multiple folder on unzip so we must # override unpackCmd to extract it into newly created folder @@ -85,6 +86,10 @@ stdenv.mkDerivation rec { for file in $(find $out -type f \( -perm /0111 -o -name \*.so\* \) ); do patchelf --set-rpath ${libPath}:$out/ $file done + for file in $out/bin/*; do + wrapProgram $file \ + --prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS:${gtk3.out}/share:${gsettings-desktop-schemas}/share:$out/share:$GSETTINGS_SCHEMAS_PATH" + done ''; enableParallelBuilding = true; diff --git a/pkgs/applications/graphics/batik/default.nix b/pkgs/applications/graphics/batik/default.nix index 4032e2e3fee..51156dea4a1 100644 --- a/pkgs/applications/graphics/batik/default.nix +++ b/pkgs/applications/graphics/batik/default.nix @@ -15,5 +15,11 @@ stdenv.mkDerivation { homepage = https://xmlgraphics.apache.org/batik; license = licenses.asl20; platforms = platforms.unix; + knownVulnerabilities = [ + # vulnerabilities as of 16th October 2018 from https://xmlgraphics.apache.org/security.html: + "CVE-2018-8013" + "CVE-2017-5662" + "CVE-2015-0250" + ]; }; } diff --git a/pkgs/applications/graphics/cinepaint/default.nix b/pkgs/applications/graphics/cinepaint/default.nix index d46128c62c0..57cf6c3f13f 100644 --- a/pkgs/applications/graphics/cinepaint/default.nix +++ b/pkgs/applications/graphics/cinepaint/default.nix @@ -1,7 +1,7 @@ { stdenv, fetchurl, cmake, pkgconfig, gtk2, freetype, fontconfig, lcms, - flex, libtiff, libjpeg, libpng, libexif, zlib, perl, libX11, - perlXMLParser, pythonPackages, gettext, intltool, babl, gegl, - glib, makedepend, xf86vidmodeproto, xineramaproto, libXmu, openexr, + flex, libtiff, libjpeg, libpng, libexif, zlib, perlPackages, libX11, + pythonPackages, gettext, intltool, babl, gegl, + glib, makedepend, xorgproto, libXmu, openexr, libGLU_combined, libXext, libXpm, libXau, libXxf86vm, pixman, libpthreadstubs, fltk } : let @@ -15,10 +15,10 @@ in stdenv.mkDerivation rec { }; buildInputs = [ libpng gtk2 freetype fontconfig lcms flex libtiff libjpeg - libexif zlib perl libX11 perlXMLParser python pygtk gettext intltool babl - gegl glib makedepend xf86vidmodeproto xineramaproto libXmu openexr libGLU_combined + libexif zlib libX11 python pygtk gettext intltool babl + gegl glib makedepend xorgproto libXmu openexr libGLU_combined libXext libXpm libXau libXxf86vm pixman libpthreadstubs fltk - ]; + ] ++ (with perlPackages; [ perl XMLParser ]); hardeningDisable = [ "format" ]; @@ -26,7 +26,7 @@ in stdenv.mkDerivation rec { nativeBuildInputs = [ cmake pkgconfig ]; - NIX_LDFLAGS = "-llcms -ljpeg -lX11"; + NIX_LDFLAGS = "-lm -llcms -ljpeg -lpng -lX11"; meta = { homepage = http://www.cinepaint.org/; diff --git a/pkgs/applications/graphics/darktable/default.nix b/pkgs/applications/graphics/darktable/default.nix index 51a401d4b8c..bf5a2e2c34d 100644 --- a/pkgs/applications/graphics/darktable/default.nix +++ b/pkgs/applications/graphics/darktable/default.nix @@ -3,16 +3,16 @@ , ilmbase, gtk3, intltool, lcms2, lensfun, libX11, libexif, libgphoto2, libjpeg , libpng, librsvg, libtiff, openexr, osm-gps-map, pkgconfig, sqlite, libxslt , openjpeg, lua, pugixml, colord, colord-gtk, libwebp, libsecret, gnome3 -, ocl-icd, pcre, gtk-mac-integration +, ocl-icd, pcre, gtk-mac-integration, isocodes }: stdenv.mkDerivation rec { - version = "2.4.4"; + version = "2.6.0"; name = "darktable-${version}"; src = fetchurl { url = "https://github.com/darktable-org/darktable/releases/download/release-${version}/darktable-${version}.tar.xz"; - sha256 = "0kdhmiw4wxk2w9v2hms9yk8nl4ymdshnqyj0l07nivzzr6w20hwn"; + sha256 = "0y04cx0a0rwdclmn16f5y0z2vnm7yxly291gzjgdhcn59a77sga8"; }; nativeBuildInputs = [ cmake ninja llvm pkgconfig intltool perl desktop-file-utils wrapGAppsHook ]; @@ -21,7 +21,7 @@ stdenv.mkDerivation rec { cairo curl exiv2 glib gtk3 ilmbase lcms2 lensfun libexif libgphoto2 libjpeg libpng librsvg libtiff openexr sqlite libxslt libsoup graphicsmagick json-glib openjpeg lua pugixml - libwebp libsecret gnome3.adwaita-icon-theme osm-gps-map pcre + libwebp libsecret gnome3.adwaita-icon-theme osm-gps-map pcre isocodes ] ++ stdenv.lib.optionals stdenv.isLinux [ colord colord-gtk libX11 ocl-icd ] ++ stdenv.lib.optional stdenv.isDarwin gtk-mac-integration; diff --git a/pkgs/applications/graphics/deskew/default.nix b/pkgs/applications/graphics/deskew/default.nix new file mode 100644 index 00000000000..71e2d82ea7c --- /dev/null +++ b/pkgs/applications/graphics/deskew/default.nix @@ -0,0 +1,37 @@ +{ stdenv, fetchFromBitbucket, libtiff, fpc }: + +stdenv.mkDerivation rec { + + name = "deskew-${version}"; + version = "1.25"; + + src = fetchFromBitbucket { + owner = "galfar"; + repo = "app-deskew"; + rev = "v${version}"; + sha256 = "0zjjj66qhgqkmfxl3q7p78dv4xl4ci918pgl4d5259pqdj1bfgc8"; + }; + + nativeBuildInputs = [ fpc ]; + buildInputs = [ libtiff ]; + + buildPhase = '' + rm -r Bin # Remove pre-compiled binary + mkdir Bin + chmod +x compile.sh + ./compile.sh + ''; + + installPhase = '' + install -Dt $out/bin Bin/* + ''; + + meta = with stdenv.lib; { + description = "A command line tool for deskewing scanned text documents"; + homepage = https://bitbucket.org/galfar/app-deskew/overview; + license = licenses.mit; + maintainers = with maintainers; [ryantm]; + platforms = platforms.all; + }; + +} diff --git a/pkgs/applications/graphics/dia/default.nix b/pkgs/applications/graphics/dia/default.nix index 222328d2b91..0ce160242e5 100644 --- a/pkgs/applications/graphics/dia/default.nix +++ b/pkgs/applications/graphics/dia/default.nix @@ -1,5 +1,5 @@ -{ stdenv, fetchgit, autoconf, automake, libtool, gtk2, pkgconfig, perl, -perlXMLParser, libxml2, gettext, python, libxml2Python, docbook5, docbook_xsl, +{ stdenv, fetchgit, autoconf, automake, libtool, gtk2, pkgconfig, perlPackages, +libxml2, gettext, python, libxml2Python, docbook5, docbook_xsl, libxslt, intltool, libart_lgpl, withGNOME ? false, libgnomeui, hicolor-icon-theme, gtk-mac-integration-gtk2 }: @@ -14,12 +14,13 @@ stdenv.mkDerivation rec { }; buildInputs = - [ gtk2 perlXMLParser libxml2 gettext python libxml2Python docbook5 + [ gtk2 libxml2 gettext python libxml2Python docbook5 libxslt docbook_xsl libart_lgpl hicolor-icon-theme ] ++ stdenv.lib.optional withGNOME libgnomeui ++ stdenv.lib.optional stdenv.isDarwin gtk-mac-integration-gtk2; - nativeBuildInputs = [ autoconf automake libtool pkgconfig intltool perl ]; + nativeBuildInputs = [ autoconf automake libtool pkgconfig intltool ] + ++ (with perlPackages; [ perl XMLParser ]); preConfigure = '' NOCONFIGURE=1 ./autogen.sh # autoreconfHook is not enough diff --git a/pkgs/applications/graphics/digikam/default.nix b/pkgs/applications/graphics/digikam/default.nix index fb99d3e3832..e7621414b06 100644 --- a/pkgs/applications/graphics/digikam/default.nix +++ b/pkgs/applications/graphics/digikam/default.nix @@ -6,7 +6,7 @@ , qtbase , qtxmlpatterns , qtsvg -, qtwebkit +, qtwebengine , kcalcore , kconfigwidgets @@ -84,7 +84,7 @@ mkDerivation rec { qtbase qtxmlpatterns qtsvg - qtwebkit + qtwebengine kcalcore kconfigwidgets @@ -105,6 +105,7 @@ mkDerivation rec { "-DENABLE_MYSQLSUPPORT=1" "-DENABLE_INTERNALMYSQL=1" "-DENABLE_MEDIAPLAYER=1" + "-DENABLE_QWEBENGINE=on" ]; preFixup = '' diff --git a/pkgs/applications/graphics/feh/default.nix b/pkgs/applications/graphics/feh/default.nix index bbc533d37e8..02e6a10295e 100644 --- a/pkgs/applications/graphics/feh/default.nix +++ b/pkgs/applications/graphics/feh/default.nix @@ -6,11 +6,11 @@ with stdenv.lib; stdenv.mkDerivation rec { name = "feh-${version}"; - version = "2.28"; + version = "3.1.1"; src = fetchurl { url = "https://feh.finalrewind.org/${name}.tar.bz2"; - sha256 = "1nfka7w6pzj2bbwx8vydr2wwm7z8mrbqiy1xrq97c1g5bxy2vlhk"; + sha256 = "1sy8z6rv5sy1bhk3846hgfdy96wdi874yr2fnxfprks46qp29l31"; }; outputs = [ "out" "man" "doc" ]; @@ -35,9 +35,9 @@ stdenv.mkDerivation rec { install -D -m 644 man/*.1 $out/share/man/man1 ''; - checkInputs = [ perlPackages.TestCommand perlPackages.TestHarness ]; + checkInputs = [ perlPackages.perl perlPackages.TestCommand ]; preCheck = '' - export PERL5LIB="${perlPackages.TestCommand}/lib/perl5/site_perl" + export PERL5LIB="${perlPackages.TestCommand}/${perlPackages.perl.libPrefix}" ''; doCheck = true; diff --git a/pkgs/applications/graphics/gcolor2/default.nix b/pkgs/applications/graphics/gcolor2/default.nix index 27ca6e26e9f..025b3ae65ec 100644 --- a/pkgs/applications/graphics/gcolor2/default.nix +++ b/pkgs/applications/graphics/gcolor2/default.nix @@ -1,4 +1,4 @@ -{stdenv, fetchurl, gtk2, perl, perlXMLParser, pkgconfig } : +{stdenv, fetchurl, gtk2, perlPackages, pkgconfig } : let version = "0.4"; in stdenv.mkDerivation { @@ -21,7 +21,8 @@ stdenv.mkDerivation { [ ]; nativeBuildInputs = [ pkgconfig ]; -buildInputs = [ gtk2 perl perlXMLParser ]; + buildInputs = [ gtk2 ] + ++ (with perlPackages; [ perl XMLParser ]); meta = { description = "Simple GTK+2 color selector"; diff --git a/pkgs/applications/graphics/gimp/default.nix b/pkgs/applications/graphics/gimp/default.nix index 15033b8b2b0..4d835e6590e 100644 --- a/pkgs/applications/graphics/gimp/default.nix +++ b/pkgs/applications/graphics/gimp/default.nix @@ -1,19 +1,19 @@ -{ stdenv, fetchurl, pkgconfig, intltool, babl, gegl, gtk2, glib, gdk_pixbuf, isocodes +{ stdenv, fetchurl, substituteAll, pkgconfig, intltool, babl, gegl, gtk2, glib, gdk_pixbuf, isocodes , pango, cairo, freetype, fontconfig, lcms, libpng, libjpeg, poppler, poppler_data, libtiff , libmng, librsvg, libwmf, zlib, libzip, ghostscript, aalib, shared-mime-info , python2Packages, libexif, gettext, xorg, glib-networking, libmypaint, gexiv2 , harfbuzz, mypaint-brushes, libwebp, libheif, libgudev, openexr -, AppKit, Cocoa, gtk-mac-integration }: +, AppKit, Cocoa, gtk-mac-integration-gtk2, cf-private }: let inherit (python2Packages) pygtk wrapPython python; in stdenv.mkDerivation rec { name = "gimp-${version}"; - version = "2.10.6"; + version = "2.10.8"; src = fetchurl { url = "http://download.gimp.org/pub/gimp/v${stdenv.lib.versions.majorMinor version}/${name}.tar.bz2"; - sha256 = "07qh2ljbza2mph1gh8sicn27qihhj8hx3ivvry2874cfh8ghgj2f"; + sha256 = "16sb4kslwin2jbgdb4nhks78pd0af8mvj8g5hap3hj946p7w2jfq"; }; nativeBuildInputs = [ pkgconfig intltool gettext wrapPython ]; @@ -23,8 +23,11 @@ in stdenv.mkDerivation rec { freetype fontconfig lcms libpng libjpeg poppler poppler_data libtiff openexr libmng librsvg libwmf zlib libzip ghostscript aalib shared-mime-info libwebp libheif python pygtk libexif xorg.libXpm glib-networking libmypaint mypaint-brushes - ] ++ stdenv.lib.optionals stdenv.isDarwin [ AppKit Cocoa gtk-mac-integration ] - ++ stdenv.lib.optionals stdenv.isLinux [ libgudev ]; + ] ++ stdenv.lib.optionals stdenv.isDarwin [ + # cf-private is needed to get some things not in swift-corefoundation. + # For instance _OBJC_CLASS_$_NSArray is missing. + AppKit Cocoa gtk-mac-integration-gtk2 cf-private + ] ++ stdenv.lib.optionals stdenv.isLinux [ libgudev ]; pythonPath = [ pygtk ]; @@ -36,6 +39,15 @@ in stdenv.mkDerivation rec { export GIO_EXTRA_MODULES="${glib-networking}/lib/gio/modules:$GIO_EXTRA_MODULES" ''; + patches = [ + # to remove compiler from the runtime closure, reference was retained via + # gimp --version --verbose output + (substituteAll { + src = ./remove-cc-reference.patch; + cc_version = stdenv.cc.cc.name; + }) + ]; + postFixup = '' wrapPythonProgramsIn $out/lib/gimp/${passthru.majorVersion}/plug-ins/ wrapProgram $out/bin/gimp-${stdenv.lib.versions.majorMinor version} \ @@ -60,7 +72,9 @@ in stdenv.mkDerivation rec { "--with-icc-directory=/var/run/current-system/sw/share/color/icc" ]; - doCheck = true; + # on Darwin, + # test-eevl.c:64:36: error: initializer element is not a compile-time constant + doCheck = !stdenv.isDarwin; enableParallelBuilding = true; diff --git a/pkgs/applications/graphics/gimp/remove-cc-reference.patch b/pkgs/applications/graphics/gimp/remove-cc-reference.patch new file mode 100644 index 00000000000..0d6a87000cc --- /dev/null +++ b/pkgs/applications/graphics/gimp/remove-cc-reference.patch @@ -0,0 +1,13 @@ +diff --git a/app/gimp-version.c b/app/gimp-version.c +index 12605c6..a9083da 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@", + lib_versions); + g_free (lib_versions); + diff --git a/pkgs/applications/graphics/giv/default.nix b/pkgs/applications/graphics/giv/default.nix index fbc84521de0..c5eb126cfbf 100644 --- a/pkgs/applications/graphics/giv/default.nix +++ b/pkgs/applications/graphics/giv/default.nix @@ -1,5 +1,5 @@ -{ stdenv, fetchFromGitHub, gdk_pixbuf, scons, pkgconfig, gtk2, glib, - pcre, cfitsio, perl, gob2, vala, libtiff, json-glib }: +{ stdenv, fetchFromGitHub, gdk_pixbuf, scons, pkgconfig, gtk2, glib +, pcre, cfitsio, perl, gob2, vala, libtiff, json-glib }: stdenv.mkDerivation rec { name = "giv-${version}"; @@ -21,10 +21,6 @@ stdenv.mkDerivation rec { patches = [ ./build.patch ]; - buildPhase = "scons"; - - installPhase = "scons install"; - nativeBuildInputs = [ scons pkgconfig vala perl gob2 ]; buildInputs = [ gdk_pixbuf gtk2 glib pcre cfitsio libtiff json-glib ]; diff --git a/pkgs/applications/graphics/glabels/default.nix b/pkgs/applications/graphics/glabels/default.nix index df8ebee020c..cf4ecf15523 100644 --- a/pkgs/applications/graphics/glabels/default.nix +++ b/pkgs/applications/graphics/glabels/default.nix @@ -5,11 +5,11 @@ stdenv.mkDerivation rec { name = "glabels-${version}"; - version = "3.4.0"; + version = "3.4.1"; src = fetchurl { - url = "https://ftp.gnome.org/pub/GNOME/sources/glabels/3.4/glabels-3.4.0.tar.xz"; - sha256 = "04345crf5yrhq6rlrymz630rxnm8yw41vx04hb6xn2nkjn9hf3nl"; + url = "mirror://gnome/sources/glabels/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "0f2rki8i27pkd9r0gz03cdl1g4vnmvp0j49nhxqn275vi8lmgr0q"; }; nativeBuildInputs = [ autoreconfHook pkgconfig makeWrapper intltool ]; @@ -25,11 +25,11 @@ stdenv.mkDerivation rec { --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH" ''; - meta = { + meta = with stdenv.lib; { description = "Create labels and business cards"; - homepage = http://glabels.org/; - license = stdenv.lib.licenses.gpl2; - platforms = stdenv.lib.platforms.unix; - maintainers = [ stdenv.lib.maintainers.nico202 ]; + homepage = https://glabels.org/; + license = with licenses; [ gpl3Plus lgpl3Plus ]; + platforms = platforms.unix; + maintainers = [ maintainers.nico202 ]; }; } diff --git a/pkgs/applications/graphics/gocr/default.nix b/pkgs/applications/graphics/gocr/default.nix index 78772a63dfe..f5fa8ca9221 100644 --- a/pkgs/applications/graphics/gocr/default.nix +++ b/pkgs/applications/graphics/gocr/default.nix @@ -1,11 +1,11 @@ { stdenv, fetchurl, tk }: stdenv.mkDerivation rec { - name = "gocr-0.51"; + name = "gocr-0.52"; src = fetchurl { url = "https://www-e.uni-magdeburg.de/jschulen/ocr/${name}.tar.gz"; - sha256 = "14i6zi6q11h6d0qds2cpvgvhbxk5xaa027h8cd0wy1zblh7sxckf"; + sha256 = "11l6gds1lrm8lwrrsxnm5fjlwz8q1xbh896cprrl4psz21in946z"; }; buildFlags = [ "all" "libs" ]; diff --git a/pkgs/applications/graphics/goxel/default.nix b/pkgs/applications/graphics/goxel/default.nix index 99230eb23e3..71ee715b535 100644 --- a/pkgs/applications/graphics/goxel/default.nix +++ b/pkgs/applications/graphics/goxel/default.nix @@ -3,19 +3,22 @@ stdenv.mkDerivation rec { name = "goxel-${version}"; - version = "0.8.0"; + version = "0.8.2"; src = fetchFromGitHub { owner = "guillaumechereau"; repo = "goxel"; rev = "v${version}"; - sha256 = "01022c43pmwiqb18rx9fz08xr99h6p03gw6bp0lay5z61g3xkz17"; + sha256 = "14rycn6sd3wp90c9ghpif1al3rv1fdgvhmpldmwap0pk790kfxs1"; }; patches = [ ./disable-imgui_ini.patch ]; nativeBuildInputs = [ scons pkgconfig wrapGAppsHook ]; buildInputs = [ glfw3 gtk3 libpng12 ]; + NIX_LDFLAGS = [ + "-lpthread" + ]; buildPhase = '' make release @@ -29,7 +32,7 @@ stdenv.mkDerivation rec { description = "Open Source 3D voxel editor"; homepage = https://guillaumechereau.github.io/goxel/; license = licenses.gpl3; - platforms = platforms.linux; + platforms = [ "x86_64-linux" ]; # see https://github.com/guillaumechereau/goxel/issues/125 maintainers = with maintainers; [ tilpner ]; }; } diff --git a/pkgs/applications/graphics/gqview/default.nix b/pkgs/applications/graphics/gqview/default.nix index 75140bd005d..205376b1257 100644 --- a/pkgs/applications/graphics/gqview/default.nix +++ b/pkgs/applications/graphics/gqview/default.nix @@ -18,6 +18,10 @@ stdenv.mkDerivation { hardeningDisable = [ "format" ]; + NIX_LDFLAGS = [ + "-lm" + ]; + meta = with stdenv.lib; { description = "A fast image viewer"; homepage = http://gqview.sourceforge.net; diff --git a/pkgs/applications/graphics/graphicsmagick/default.nix b/pkgs/applications/graphics/graphicsmagick/default.nix index ee58e9831e9..c93b4fe958d 100644 --- a/pkgs/applications/graphics/graphicsmagick/default.nix +++ b/pkgs/applications/graphics/graphicsmagick/default.nix @@ -4,11 +4,11 @@ stdenv.mkDerivation rec { name = "graphicsmagick-${version}"; - version = "1.3.30"; + version = "1.3.31"; src = fetchurl { url = "mirror://sourceforge/graphicsmagick/GraphicsMagick-${version}.tar.xz"; - sha256 = "1warar0731xf94r4bn5x1km85rjabl4iq8r0dk3ywmczap3farfr"; + sha256 = "0y22740f25qxsqqqg26xqlfp920dm57b7hrgaqmx7azksrcvnsq9"; }; patches = [ diff --git a/pkgs/applications/graphics/gthumb/default.nix b/pkgs/applications/graphics/gthumb/default.nix index 7dc69bceda9..e8f831a21c2 100644 --- a/pkgs/applications/graphics/gthumb/default.nix +++ b/pkgs/applications/graphics/gthumb/default.nix @@ -5,13 +5,13 @@ let pname = "gthumb"; - version = "3.6.1"; + version = "3.6.2"; in stdenv.mkDerivation rec { name = "${pname}-${version}"; src = fetchurl { url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; - sha256 = "1vj26gw9b5y4bmb2m49wplqg0md568g3gxin500v3slggzhzkaww"; + sha256 = "0rjb0bsjhn7nyl5jyjgrypvr6qdr9dc2g586j3lzan96a2vnpgy9"; }; nativeBuildInputs = [ itstool libxml2 intltool pkgconfig bison flex wrapGAppsHook ]; diff --git a/pkgs/applications/graphics/inkscape/default.nix b/pkgs/applications/graphics/inkscape/default.nix index f4d08195309..25095f04d01 100644 --- a/pkgs/applications/graphics/inkscape/default.nix +++ b/pkgs/applications/graphics/inkscape/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, pkgconfig, perl, perlXMLParser, libXft +{ stdenv, fetchurl, pkgconfig, perlPackages, libXft , libpng, zlib, popt, boehmgc, libxml2, libxslt, glib, gtkmm2 , glibmm, libsigcxx, lcms, boost, gettext, makeWrapper , gsl, python2, poppler, imagemagick, libwpg, librevenge @@ -6,7 +6,8 @@ }: let - python2Env = python2.withPackages(ps: with ps; [ numpy lxml ]); + python2Env = python2.withPackages(ps: with ps; + [ numpy lxml scour ]); in stdenv.mkDerivation rec { @@ -39,12 +40,15 @@ stdenv.mkDerivation rec { --replace '"python-interpreter", "python"' '"python-interpreter", "${python2Env}/bin/python"' ''; - nativeBuildInputs = [ pkgconfig cmake makeWrapper python2Env perl perlXMLParser ]; + nativeBuildInputs = [ pkgconfig cmake makeWrapper python2Env ] + ++ (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 hicolor-icon-theme + + python2Env perlPackages.perl ]; enableParallelBuilding = true; diff --git a/pkgs/applications/graphics/ipe/default.nix b/pkgs/applications/graphics/ipe/default.nix index dbd209a57a2..ee5c348eb6b 100644 --- a/pkgs/applications/graphics/ipe/default.nix +++ b/pkgs/applications/graphics/ipe/default.nix @@ -3,11 +3,11 @@ }: stdenv.mkDerivation rec { - name = "ipe-7.2.7"; + name = "ipe-7.2.9"; src = fetchurl { url = "https://dl.bintray.com/otfried/generic/ipe/7.2/${name}-src.tar.gz"; - sha256 = "08lzqhagvr8l69hxghyw9akf5dixbily7hj2gxhzzrp334k3yvfn"; + sha256 = "1i0h0q32xvbb0d3y2ff76jxnaw05hjf2z5gzww886z8arxwar1xn"; }; # changes taken from Gentoo portage @@ -38,8 +38,6 @@ stdenv.mkDerivation rec { done ''; - patches = [ ./xlocale.patch ]; - #TODO: make .desktop entry meta = { diff --git a/pkgs/applications/graphics/ipe/xlocale.patch b/pkgs/applications/graphics/ipe/xlocale.patch deleted file mode 100644 index b440831d81b..00000000000 --- a/pkgs/applications/graphics/ipe/xlocale.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- ipe-7.2.7/src/ipelib/ipeplatform.cpp 2016-12-09 15:09:04.000000000 +0100 -+++ ipe-7.2.7/src/ipelib/ipeplatform.cpp 2017-11-23 17:13:11.152395834 +0100 -@@ -38,7 +38,6 @@ - #include - #else - #include --#include - #include - #endif - #ifdef __APPLE__ diff --git a/pkgs/applications/graphics/jpeginfo/default.nix b/pkgs/applications/graphics/jpeginfo/default.nix new file mode 100644 index 00000000000..f438bf6f7ed --- /dev/null +++ b/pkgs/applications/graphics/jpeginfo/default.nix @@ -0,0 +1,21 @@ +{ stdenv, fetchurl, libjpeg }: + +stdenv.mkDerivation rec { + name = "jpeginfo-${version}"; + version = "1.6.1"; + + src = fetchurl { + url = "https://www.kokkonen.net/tjko/src/${name}.tar.gz"; + sha256 = "0lvn3pnylyj56158d3ix9w1gas1s29klribw9bz1xym03p7k37k2"; + }; + + buildInputs = [ libjpeg ]; + + meta = with stdenv.lib; { + description = "Prints information and tests integrity of JPEG/JFIF files"; + homepage = "https://www.kokkonen.net/tjko/projects.html"; + license = licenses.gpl2Plus; + maintainers = [ maintainers.bjornfor ]; + platforms = platforms.all; + }; +} diff --git a/pkgs/applications/graphics/k3d/default.nix b/pkgs/applications/graphics/k3d/default.nix index a4b509704a7..301dc902dce 100644 --- a/pkgs/applications/graphics/k3d/default.nix +++ b/pkgs/applications/graphics/k3d/default.nix @@ -39,6 +39,10 @@ stdenv.mkDerivation rec { #doCheck = false; + 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/; diff --git a/pkgs/applications/graphics/krita/default.nix b/pkgs/applications/graphics/krita/default.nix index 0abe90e0ba7..c9fdbd255d4 100644 --- a/pkgs/applications/graphics/krita/default.nix +++ b/pkgs/applications/graphics/krita/default.nix @@ -8,13 +8,21 @@ , python3 }: +let + +major = "4.1"; +minor = "7"; +patch = "101"; + +in + mkDerivation rec { name = "krita-${version}"; - version = "4.1.1"; + version = "${major}.${minor}.${patch}"; src = fetchurl { - url = "https://download.kde.org/stable/krita/${version}/${name}.tar.gz"; - sha256 = "1qz9bjvnwa5gc2b0063i2p72jq6y1b6kgqdj39599acp7ws11asw"; + url = "https://download.kde.org/stable/krita/${major}.${minor}/${name}.tar.gz"; + sha256 = "0pvghb17vj3y19wa1n1zfg3yl5206ir3y45znrgdgdw076m5pjav"; }; nativeBuildInputs = [ cmake extra-cmake-modules ]; diff --git a/pkgs/applications/graphics/krop/default.nix b/pkgs/applications/graphics/krop/default.nix index 2858086e0d6..c4c889cdba5 100644 --- a/pkgs/applications/graphics/krop/default.nix +++ b/pkgs/applications/graphics/krop/default.nix @@ -2,13 +2,13 @@ python3Packages.buildPythonApplication rec { pname = "krop"; - version = "0.5.0"; + version = "0.5.1"; src = fetchFromGitHub { owner = "arminstraub"; repo = pname; rev = "v${version}"; - sha256 = "0y8z9xr10wbzmi1dg1zpcsf3ihnxrnvlaf72821x3390s3qsnydf"; + sha256 = "0b1zqpks4vzq7sfhf7r9qrshr77f1ncj18x7d0fa3g29rxa42dcr"; }; propagatedBuildInputs = with python3Packages; [ diff --git a/pkgs/applications/graphics/mypaint/default.nix b/pkgs/applications/graphics/mypaint/default.nix index 120fc1174cd..36c7e7e2fb3 100644 --- a/pkgs/applications/graphics/mypaint/default.nix +++ b/pkgs/applications/graphics/mypaint/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchFromGitHub, gtk3, intltool, json_c, lcms2, libpng, librsvg, gobjectIntrospection, hicolor-icon-theme +{ stdenv, fetchFromGitHub, gtk3, intltool, json_c, lcms2, libpng, librsvg, gobject-introspection, hicolor-icon-theme , gdk_pixbuf, pkgconfig, python2Packages, scons, swig, wrapGAppsHook }: let @@ -17,7 +17,7 @@ in stdenv.mkDerivation rec { nativeBuildInputs = [ intltool pkgconfig scons swig wrapGAppsHook - gobjectIntrospection # for setup hook + gobject-introspection # for setup hook ]; buildInputs = [ @@ -26,10 +26,7 @@ in stdenv.mkDerivation rec { propagatedBuildInputs = [ numpy ]; - buildPhase = "scons prefix=$out"; - - installPhase = '' - scons prefix=$out install + postInstall = '' sed -i -e 's|/usr/bin/env python2.7|${python}/bin/python|' $out/bin/mypaint ''; diff --git a/pkgs/applications/graphics/ocrad/default.nix b/pkgs/applications/graphics/ocrad/default.nix index 2ff62cc9eef..80f59268111 100644 --- a/pkgs/applications/graphics/ocrad/default.nix +++ b/pkgs/applications/graphics/ocrad/default.nix @@ -1,14 +1,16 @@ { fetchurl, stdenv, lzip, texinfo }: stdenv.mkDerivation rec { - name = "ocrad-0.26"; + pname = "ocrad"; + version = "0.27"; src = fetchurl { - url = "mirror://gnu/ocrad/${name}.tar.lz"; - sha256 = "0g4fq7maybdnd1471kd05a3f5sb7spa3d26k706rk85sd5wd70y3"; + url = "mirror://gnu/ocrad/${pname}-${version}.tar.lz"; + sha256 = "0divffvcaim89g4pvqs8kslbcxi475bcl3b4ynphf284k9zfdgx9"; }; - buildInputs = [ lzip texinfo ]; + nativeBuildInputs = [ lzip /* unpack */ ]; + buildInputs = [ texinfo ]; doCheck = true; diff --git a/pkgs/applications/graphics/openimageio/default.nix b/pkgs/applications/graphics/openimageio/default.nix index bc669e9e1a0..f405ca01200 100644 --- a/pkgs/applications/graphics/openimageio/default.nix +++ b/pkgs/applications/graphics/openimageio/default.nix @@ -4,13 +4,13 @@ stdenv.mkDerivation rec { name = "openimageio-${version}"; - version = "1.8.14"; + version = "1.8.16"; src = fetchFromGitHub { owner = "OpenImageIO"; repo = "oiio"; rev = "Release-${version}"; - sha256 = "07axn7bziy9h5jawpwcchag0nkczivaajsw69mxgmr508gw9r0xn"; + sha256 = "0isx137c6anvs1xfxi0z35v1cw855xvnq2ca0pakqqpdh0yivrps"; }; outputs = [ "bin" "out" "dev" "doc" ]; diff --git a/pkgs/applications/graphics/photoflow/default.nix b/pkgs/applications/graphics/photoflow/default.nix index 6f3bf69889c..db41ee0566f 100644 --- a/pkgs/applications/graphics/photoflow/default.nix +++ b/pkgs/applications/graphics/photoflow/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchFromGitHub, gettext, glib, libxml2, pkgconfig, swig, automake, gobjectIntrospection, cmake, ninja, libtiff, libjpeg, fftw, exiv2, lensfun, gtkmm2, libraw, lcms2, libexif, vips, expat, pcre, pugixml }: +{ stdenv, fetchFromGitHub, gettext, glib, libxml2, pkgconfig, swig, automake, gobject-introspection, cmake, ninja, libtiff, libjpeg, fftw, exiv2, lensfun, gtkmm2, libraw, lcms2, libexif, vips, expat, pcre, pugixml }: stdenv.mkDerivation { name = "photoflow-unstable-2018-08-28"; @@ -17,7 +17,7 @@ stdenv.mkDerivation { pkgconfig swig automake - gobjectIntrospection + gobject-introspection cmake ninja ]; diff --git a/pkgs/applications/graphics/phototonic/default.nix b/pkgs/applications/graphics/phototonic/default.nix index ce300eaf9f6..7da1d4b612f 100644 --- a/pkgs/applications/graphics/phototonic/default.nix +++ b/pkgs/applications/graphics/phototonic/default.nix @@ -2,15 +2,13 @@ stdenv.mkDerivation rec { name = "phototonic-${version}"; - version = "1.7.1"; + version = "2.1"; src = fetchFromGitHub { repo = "phototonic"; owner = "oferkv"; - # There is currently no tag for 1.7.1 see - # https://github.com/oferkv/phototonic/issues/214 - rev = "c37070e4a068570d34ece8de1e48aa0882c80c5b"; - sha256 = "1agd3bsrpljd019qrjvlbim5l0bhpx53dhpc0gvyn0wmcdzn92gj"; + rev = "v${version}"; + sha256 = "0csidmxl1sfmn6gq81vn9f9jckb4swz3sgngnwqa4f75lr6604h7"; }; buildInputs = [ qtbase exiv2 ]; diff --git a/pkgs/applications/graphics/pqiv/default.nix b/pkgs/applications/graphics/pqiv/default.nix index e4f565b3b05..ec4ce69d5e8 100644 --- a/pkgs/applications/graphics/pqiv/default.nix +++ b/pkgs/applications/graphics/pqiv/default.nix @@ -4,13 +4,13 @@ stdenv.mkDerivation (rec { name = "pqiv-${version}"; - version = "2.10.4"; + version = "2.11"; src = fetchFromGitHub { owner = "phillipberndt"; repo = "pqiv"; rev = version; - sha256 = "04fawc3sd625y1bbgfgwmak56pq28sm58dwn5db4h183iy3awdl9"; + sha256 = "06cwm28b7j1skwp21s5snmj1pqh3xh6y2i5v4w3pz0b8k3053h9i"; }; nativeBuildInputs = [ pkgconfig ]; diff --git a/pkgs/applications/graphics/processing3/default.nix b/pkgs/applications/graphics/processing3/default.nix index 5575c56b7fd..6f90131db12 100644 --- a/pkgs/applications/graphics/processing3/default.nix +++ b/pkgs/applications/graphics/processing3/default.nix @@ -23,7 +23,7 @@ stdenv.mkDerivation rec { ${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; - sha256 = "0dli1bdgw8hsx7g7b048ap81v2za9maa6pfcwdqm3qkfypr8q7pr"; + sha256 = "0ai0cr62gc7n6y22ki3qibyj1qnlaxv1miqxmmahfk3hpbyfqz9n"; } } ./java/reference.zip diff --git a/pkgs/applications/graphics/rapid-photo-downloader/default.nix b/pkgs/applications/graphics/rapid-photo-downloader/default.nix index d47f08c90b9..36087aa84bb 100644 --- a/pkgs/applications/graphics/rapid-photo-downloader/default.nix +++ b/pkgs/applications/graphics/rapid-photo-downloader/default.nix @@ -1,16 +1,16 @@ { stdenv, fetchurl, python3Packages -, file, intltool, gobjectIntrospection, libgudev +, file, intltool, gobject-introspection, libgudev , udisks, glib, gnome3, gst_all_1, libnotify , exiv2, exiftool, qt5, gdk_pixbuf }: python3Packages.buildPythonApplication rec { pname = "rapid-photo-downloader"; - version = "0.9.10"; + version = "0.9.13"; src = fetchurl { url = "https://launchpad.net/rapid/pyqt/${version}/+download/${pname}-${version}.tar.gz"; - sha256 = "1i0lfj9gnfya49gxx59ls364z651fqagd4krnz9jhg9m0l48ljdf"; + sha256 = "1517w18sxil1gwd78jjbbixcd1b0sp05imnnd5h5lr8wl3f0szj0"; }; # Disable version check and fix install tests @@ -23,7 +23,7 @@ python3Packages.buildPythonApplication rec { --replace "import problemnotification" "import raphodo.problemnotification" ''; - nativeBuildInputs = [ file intltool gobjectIntrospection ]; + nativeBuildInputs = [ file intltool gobject-introspection ]; buildInputs = [ libgudev diff --git a/pkgs/applications/graphics/rawtherapee/default.nix b/pkgs/applications/graphics/rawtherapee/default.nix index 52cdc0bc067..74e8c0e6b43 100644 --- a/pkgs/applications/graphics/rawtherapee/default.nix +++ b/pkgs/applications/graphics/rawtherapee/default.nix @@ -4,14 +4,14 @@ }: stdenv.mkDerivation rec { - version = "5.4"; + version = "5.5"; name = "rawtherapee-" + version; src = fetchFromGitHub { owner = "Beep6581"; repo = "RawTherapee"; rev = version; - sha256 = "1h2x5biqsb4kfwsffqkyk8ky22qv2a0cjs1s445x9farcr3kwk99"; + sha256 = "13clnx7rwkfa7wxgsim1xdx2pd7gwmmdad1m8a3fvywr20ml8xzk"; }; nativeBuildInputs = [ cmake pkgconfig wrapGAppsHook ]; diff --git a/pkgs/applications/graphics/renderdoc/default.nix b/pkgs/applications/graphics/renderdoc/default.nix index 99e250e9e4d..3990d098906 100644 --- a/pkgs/applications/graphics/renderdoc/default.nix +++ b/pkgs/applications/graphics/renderdoc/default.nix @@ -7,19 +7,19 @@ let custom_swig = fetchFromGitHub { owner = "baldurk"; repo = "swig"; - rev = "renderdoc-modified-5"; - sha256 = "0ihrxbx56p5wn589fbbsns93fp91sypqdzfxdy7l7v9sf69a41mw"; + rev = "renderdoc-modified-6"; + sha256 = "00ykqlzx1k9iwqjlc54kfch7cnzsj53hxn7ql70dj3rxqzrnadc0"; }; in stdenv.mkDerivation rec { - version = "1.1"; + version = "1.2"; name = "renderdoc-${version}"; src = fetchFromGitHub { owner = "baldurk"; repo = "renderdoc"; rev = "v${version}"; - sha256 = "0kb9m1dm0mnglqyh1srvl0f1bgjghxzbqarn0xfqw49wphqwhmcd"; + sha256 = "0s1q5d58x18yz3nf94pv5i1qd2hc0a4gdj4qkpcn8s6ms2x05pz4"; }; buildInputs = [ diff --git a/pkgs/applications/graphics/shotwell/default.nix b/pkgs/applications/graphics/shotwell/default.nix index be572ca32f9..2f06451438d 100644 --- a/pkgs/applications/graphics/shotwell/default.nix +++ b/pkgs/applications/graphics/shotwell/default.nix @@ -1,23 +1,23 @@ { fetchurl, stdenv, meson, ninja, gtk3, libexif, libgphoto2, libsoup, libxml2, vala, sqlite -, webkitgtk, pkgconfig, gnome3, gst_all_1, libgudev, libraw, glib, json-glib +, webkitgtk, pkgconfig, gnome3, gst_all_1, libgudev, libraw, glib, json-glib, gcr , gettext, desktop-file-utils, gdk_pixbuf, librsvg, wrapGAppsHook -, gobjectIntrospection, itstool, libgdata }: +, gobject-introspection, itstool, libgdata, python3 }: # for dependencies see https://wiki.gnome.org/Apps/Shotwell/BuildingAndInstalling let pname = "shotwell"; - version = "0.28.2"; + version = "0.30.1"; in stdenv.mkDerivation rec { name = "${pname}-${version}"; src = fetchurl { url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; - sha256 = "0pa7lb33i4hdnz7hr7x938d48ilrnj47jzb99la79rmm08yyin8n"; + sha256 = "01hsmig06hjv34yf9y60hv2gml593xfkza4ilq4b22gr8l4v2qip"; }; nativeBuildInputs = [ - meson ninja vala pkgconfig itstool gettext desktop-file-utils wrapGAppsHook gobjectIntrospection + meson ninja vala pkgconfig itstool gettext desktop-file-utils python3 wrapGAppsHook gobject-introspection ]; buildInputs = [ @@ -25,11 +25,12 @@ in stdenv.mkDerivation rec { gst_all_1.gstreamer gst_all_1.gst-plugins-base gnome3.libgee libgudev gnome3.gexiv2 gnome3.gsettings-desktop-schemas libraw json-glib glib gdk_pixbuf librsvg gnome3.rest - gnome3.gcr gnome3.defaultIconTheme libgdata + gcr gnome3.defaultIconTheme libgdata ]; - postInstall = '' - glib-compile-schemas $out/share/glib-2.0/schemas + postPatch = '' + chmod +x build-aux/meson/postinstall.py # patchShebangs requires executable file + patchShebangs build-aux/meson/postinstall.py ''; passthru = { diff --git a/pkgs/applications/graphics/shutter/default.nix b/pkgs/applications/graphics/shutter/default.nix index a409060afdc..5800fb6df3c 100644 --- a/pkgs/applications/graphics/shutter/default.nix +++ b/pkgs/applications/graphics/shutter/default.nix @@ -1,27 +1,28 @@ -{ stdenv, fetchurl, perl, perlPackages, makeWrapper, imagemagick, gdk_pixbuf, librsvg -, hicolor-icon-theme +{ stdenv, fetchurl, perlPackages, makeWrapper, imagemagick, gdk_pixbuf, librsvg +, hicolor-icon-theme, procps }: let perlModules = with perlPackages; [ Gnome2 Gnome2Canvas Gtk2 Glib Pango Gnome2VFS Gnome2Wnck Gtk2ImageView - Gtk2Unique FileWhich FileCopyRecursive XMLSimple NetDBus XMLTwig + Gtk2Unique FileBaseDir FileWhich FileCopyRecursive XMLSimple NetDBus XMLTwig XMLParser HTTPMessage ProcSimple SortNaturally LocaleGettext ProcProcessTable URI ImageExifTool Gtk2AppIndicator LWP JSON - PerlMagick WWWMechanize HTTPDate HTMLForm HTMLParser HTMLTagset JSONXS + PerlMagick WWWMechanize HTTPDate HTMLForm HTMLParser HTMLTagset JSONMaybeXS commonsense HTTPCookies NetOAuth PathClass GooCanvas X11Protocol Cairo EncodeLocale TryTiny TypesSerialiser LWPMediaTypes ]; in stdenv.mkDerivation rec { - name = "shutter-0.94"; + name = "shutter-0.94.2"; src = fetchurl { - url = "https://launchpad.net/shutter/0.9x/0.94/+download/shutter-0.94.tar.gz"; - sha256 = "943152cdf9e1b2096d38e3da9622d8bf97956a08eda747c3e7fcc564a3f0f40d"; + url = "https://launchpad.net/shutter/0.9x/0.94.2/+download/shutter-0.94.2.tar.gz"; + sha256 = "0mas7npm935j4rhqqjn226822s9sa4bsxrkp0b5fjj3z096k6vw0"; }; - buildInputs = [ perl makeWrapper gdk_pixbuf librsvg ] ++ perlModules; + nativeBuildInputs = [ makeWrapper ]; + buildInputs = [ perlPackages.perl procps gdk_pixbuf librsvg ] ++ perlModules; installPhase = '' mkdir -p "$out" @@ -29,7 +30,7 @@ stdenv.mkDerivation rec { (cd "$out" && mv CHANGES README COPYING "$out/share/doc/shutter") wrapProgram $out/bin/shutter \ - --set PERL5LIB "${stdenv.lib.makePerlPath perlModules}" \ + --set PERL5LIB "${perlPackages.makePerlPath perlModules}" \ --prefix PATH : "${imagemagick.out}/bin" \ --suffix XDG_DATA_DIRS : "${hicolor-icon-theme}/share" \ --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" diff --git a/pkgs/applications/graphics/tesseract/4.x.nix b/pkgs/applications/graphics/tesseract/4.x.nix deleted file mode 100644 index 156c911b9b8..00000000000 --- a/pkgs/applications/graphics/tesseract/4.x.nix +++ /dev/null @@ -1,61 +0,0 @@ -{ stdenv, fetchFromGitHub, autoreconfHook, autoconf-archive, pkgconfig -, leptonica, libpng, libtiff, icu, pango, opencl-headers - -# Supported list of languages or `null' for all available languages -, enableLanguages ? null -}: - -stdenv.mkDerivation rec { - name = "tesseract-${version}"; - version = "4.00.00alpha-git-20170410"; - - src = fetchFromGitHub { - owner = "tesseract-ocr"; - repo = "tesseract"; - rev = "36a995bdc92eb2dd8bc5a63205708944a3f990a1"; - sha256 = "0xz3krvap8sdm27v1dyb34lcdmx11wzvxyszpppfsfmjgkvg19bq"; - }; - - tessdata = fetchFromGitHub { - owner = "tesseract-ocr"; - repo = "tessdata"; - rev = "8bf2e7ad08db9ca174ae2b0b3a7498c9f1f71d40"; - sha256 = "0idwkv4qsmmqhrxcgyhy32yldl3vk054m7dkv4fjswfnalgsx794"; - }; - - nativeBuildInputs = [ pkgconfig autoreconfHook autoconf-archive ]; - buildInputs = [ leptonica libpng libtiff icu pango opencl-headers ]; - - # Copy the .traineddata files of the languages specified in enableLanguages - # into `$out/share/tessdata' and check afterwards if copying was successful. - postInstall = let - mkArg = lang: "-iname ${stdenv.lib.escapeShellArg "${lang}.traineddata"}"; - mkFindArgs = stdenv.lib.concatMapStringsSep " -o " mkArg; - findLangArgs = if enableLanguages != null - then "\\( ${mkFindArgs enableLanguages} \\)" - else "-iname '*.traineddata'"; - in '' - numLangs="$(find "$tessdata" -mindepth 1 -maxdepth 1 -type f \ - ${findLangArgs} -exec cp -t "$out/share/tessdata" {} + -print | wc -l)" - - ${if enableLanguages != null then '' - expected=${toString (builtins.length enableLanguages)} - '' else '' - expected="$(ls -1 "$tessdata/"*.traineddata | wc -l)" - ''} - - if [ "$numLangs" -ne "$expected" ]; then - echo "Expected $expected languages, but $numLangs" \ - "were copied to \`$out/share/tessdata'" >&2 - exit 1 - fi - ''; - - meta = { - description = "OCR engine"; - homepage = https://github.com/tesseract-ocr/tesseract; - license = stdenv.lib.licenses.asl20; - maintainers = with stdenv.lib.maintainers; [viric]; - platforms = with stdenv.lib.platforms; linux; - }; -} diff --git a/pkgs/applications/graphics/tesseract/default.nix b/pkgs/applications/graphics/tesseract/default.nix index 7940079d099..840c87de216 100644 --- a/pkgs/applications/graphics/tesseract/default.nix +++ b/pkgs/applications/graphics/tesseract/default.nix @@ -1,67 +1,18 @@ -{ stdenv, fetchFromGitHub, autoreconfHook, pkgconfig -, leptonica, libpng, libtiff, icu, pango, opencl-headers -# Supported list of languages or `null' for all available languages -, enableLanguages ? null -# if you want just a specific list of languages, optionally specify a hash -# to make tessdata a fixed output derivation. -, enableLanguagesHash ? (if enableLanguages == null # all languages - then "1h48xfzabhn0ldbx5ib67cp9607pr0zpblsy8z6fs4knn0zznfnw" - else null) -}: +{ callPackage, lowPrio }: -let tessdata = stdenv.mkDerivation ({ - name = "tessdata"; - src = fetchFromGitHub { - owner = "tesseract-ocr"; - repo = "tessdata"; - rev = "3cf1e2df1fe1d1da29295c9ef0983796c7958b7d"; - # when updating don't forget to update the default value fo enableLanguagesHash - sha256 = "1v4b63v5nzcxr2y3635r19l7lj5smjmc9vfk0wmxlryxncb4vpg7"; - }; - buildCommand = '' - cd $src; - for lang in ${if enableLanguages==null then "*.traineddata" else stdenv.lib.concatMapStringsSep " " (x: x+".traineddata") enableLanguages} ; do - install -Dt $out/share/tessdata $src/$lang ; - done; - ''; - preferLocalBuild = true; - } // (stdenv.lib.optionalAttrs (enableLanguagesHash != null) { - # when a hash is given, we make this a fixed output derivation. - outputHashMode = "recursive"; - outputHashAlgo = "sha256"; - outputHash = enableLanguagesHash; - })); +let + base3 = callPackage ./tesseract3.nix {}; + base4 = callPackage ./tesseract4.nix {}; + languages = callPackage ./languages.nix {}; in - -stdenv.mkDerivation rec { - name = "tesseract-${version}"; - version = "3.05.00"; - - src = fetchFromGitHub { - owner = "tesseract-ocr"; - repo = "tesseract"; - rev = version; - sha256 = "11wrpcfl118wxsv2c3w2scznwb48c4547qml42s2bpdz079g8y30"; +{ + tesseract3 = callPackage ./wrapper.nix { + tesseractBase = base3; + languages = languages.v3; }; - enableParallelBuilding = true; - - nativeBuildInputs = [ pkgconfig autoreconfHook ]; - buildInputs = [ leptonica libpng libtiff icu pango opencl-headers ]; - - LIBLEPT_HEADERSDIR = "${leptonica}/include"; - - postInstall = '' - for i in ${tessdata}/share/tessdata/*; do - ln -s $i $out/share/tessdata; - done - ''; - - meta = { - description = "OCR engine"; - homepage = https://github.com/tesseract-ocr/tesseract; - license = stdenv.lib.licenses.asl20; - maintainers = with stdenv.lib.maintainers; [viric]; - platforms = with stdenv.lib.platforms; linux ++ darwin; - }; + tesseract4 = lowPrio (callPackage ./wrapper.nix { + tesseractBase = base4; + languages = languages.v4; + }); } diff --git a/pkgs/applications/graphics/tesseract/fetch-language-hashes b/pkgs/applications/graphics/tesseract/fetch-language-hashes new file mode 100755 index 00000000000..c431f1d97c2 --- /dev/null +++ b/pkgs/applications/graphics/tesseract/fetch-language-hashes @@ -0,0 +1,35 @@ +#!/usr/bin/env bash + +# Usage: +# ./fetch-language-hashes […] +# +# Fetches all languages if no language codes are given. +# +# Example: +# ./fetch-language-hashes 4.0.0 eng spa +# +# Output: +# eng = "0iy0..."; +# spa = "15kw..."; + +set -e + +(( $# >= 1 )) || exit 1 +tessdataRev=$1 +shift + +if (( $# > 0 )); then + langCodes="$@" +else + repoPage=$(curl -fs https://github.com/tesseract-ocr/tessdata/tree/$tessdataRev || { + >&2 echo "Invalid tessdataRev: $tessdataRev" + exit 1 + }) + langCodes=$(echo $(echo "$repoPage" | grep -ohP "(?<=/)[^/]+?(?=\.traineddata)" | sort)) +fi + +for lang in $langCodes; do + url=https://github.com/tesseract-ocr/tessdata/raw/$tessdataRev/$lang.traineddata + hash=$(nix-prefetch-url $url 2>/dev/null) + echo "$lang = \"$hash\";" +done diff --git a/pkgs/applications/graphics/tesseract/languages.nix b/pkgs/applications/graphics/tesseract/languages.nix new file mode 100644 index 00000000000..08512a5cdd9 --- /dev/null +++ b/pkgs/applications/graphics/tesseract/languages.nix @@ -0,0 +1,289 @@ +{ stdenv, lib, fetchurl, fetchFromGitHub }: + +rec { + makeLanguages = { tessdataRev, tessdata ? null, all ? null, languages ? {} }: + let + tessdataSrc = fetchFromGitHub { + owner = "tesseract-ocr"; + repo = "tessdata"; + rev = tessdataRev; + sha256 = tessdata; + }; + + languageFile = lang: sha256: fetchurl { + url = "https://github.com/tesseract-ocr/tessdata/raw/${tessdataRev}/${lang}.traineddata"; + inherit sha256; + }; + in + { + # Use a simple fixed-output derivation for all languages to increase nix eval performance + all = stdenv.mkDerivation { + name = "all"; + buildCommand = '' + mkdir $out + cd ${tessdataSrc} + cp *.traineddata $out + ''; + outputHashMode = "recursive"; + outputHashAlgo = "sha256"; + outputHash = all; + }; + } // (lib.mapAttrs languageFile languages); + + v3 = makeLanguages { + tessdataRev = "3cf1e2df1fe1d1da29295c9ef0983796c7958b7d"; + tessdata = "1v4b63v5nzcxr2y3635r19l7lj5smjmc9vfk0wmxlryxncb4vpg7"; + all = "0yj6h9n6h0kzzcqsn3z87vsi8pa60szp0yiayb0znd0v9my0dqhn"; + + # Run `./fetch-language-hashes ` to generate these hashes + languages = { + afr = "15dsnzy4i9ai26ilm73gkfj4ck039raa88i6w443c4b1fnay2akf"; + amh = "1wbcsdq3svxga3j1alk61xs72a9fhsfsyjxhp3cwxfaqfhrzg7h4"; + ara = "0nk495gki6jbbnwcl2ybsx4nd02d6qykcjncq0d2g8pbgapqmj91"; + asm = "0c3wq15yphq7x74s2sn3f90k6z1cf5j7ic62z0dynidrv99bddfh"; + aze = "0pz073hxqkx1a1cshlgg5k11lj73s52sdxa7k3020drc314lhaxw"; + aze_cyrl = "0djbfgx28ykcjsn2p0766qrmj256g7vhc7valc3ivsva8b906lxq"; + bel = "04zqy8vik0fcakq6apfp8wjhkkhlg0yn9kmag1lk7s8fy9ax3ws2"; + ben = "0q7812kn5xjm47hcgdcg911lhbgqr7hbvqckfxxm8qw0yjx2cy0m"; + bod = "0rwq7539zzfs8xs0bf1535z1cwkm0yk1ni25f5gjav7nm6qpiaan"; + bos = "1qr04dj7lx347gxpin5nfprbggmxq2mwx8kf3pcc3vb5x3pa57g4"; + bul = "0cyyqgi3i4y9bfzwls0lwljzgd0r8ayfqb4bbvdh4qmbni9x42ya"; + cat = "0kgw8f5pdw9lfbn6cfp5n1s0j8pj3418yx6rsbagzcf1gr36gbr9"; + ceb = "1g1n4np4vhar7wfwx2km5k6kldb600rrl7npfbf75229rar068f1"; + ces = "0zxkkyhpd74i6321nv86pkjb0k7p9cp6m174rbn42nl7jz6qxib0"; + chi_sim = "0k250xr0gk9yh22yqxd0zpxdsrqfzs164kdv5n9rxx1g996yffij"; + chi_tra = "03nxqpd546p0gwfj6pqzbdbv5zjpdddzlpa10xn4nvmks1mmckbp"; + chr = "1k1sg3hap0kd5aa36ysvmhp7r3fynxf0f7lzz814h6p3g250zclb"; + cym = "0d6wbf9cmrrzf66mhcckwdfy3xh2i38r0by9nk6isw9rl7bf7j07"; + dan = "1s1yj56rpzmif3ir3qs4iab744cgpflk7y8812z2665bh61illpr"; + dan_frak = "1bxi53ymib5g0139vfd2pflh7nl5925vqznq3sfgaqx7gdx630vi"; + deu = "0fna7fqk1a8ivd7q2k38vx37qm3vbn183zh4z5zfqb4pgqmb8znb"; + deu_frak = "1y4krkvarg7jxhcq49fgybg4phbn58y9c0z2bm8mnp28jkih1cnb"; + dzo = "1fcz0imi7zxi99762pxfcm5iz2jcbqj3s742magka4ihrxnz07xm"; + ell = "0r0f71jy4y29bg055qvvy93wchi3lh08zz0k9c8l7466b03yvq5v"; + eng = "0vghah8kqcv0n5fnjb88w6siz156ysrc41fckw3f2y8c3sgmqlf0"; + enm = "10y61xv3w1ypgqz5rgb22y5hh1i4zx03cwiqw21ifqvg4xdrln46"; + epo = "1y5lh55mbcx33cm7qlf1dcah8ffycxmlcpzjzx9r6ij14fdd4964"; + equ = "1nqrd0a9jqqh6byy8snfhad1hisrc92dcx44wsy7v4nf40j3mx1s"; + est = "12ll8lq1hjcsq9hh93020w78r7f1rcxcwlvrjqw8j5p3k9jg5a4g"; + eus = "034s9mp7lw1a4yvf2cmbbj2fbqbaq6xnjqh30yn0wq0c0jck96nw"; + fas = "0m61p4byc0kzf75cdn6g18s8hcg9r8ifs34wr85lbsb65kil4ijx"; + fin = "1wac333k0lcd5jwprzg99b10bq8sdc96b9d6275kg9imyqjwcc7q"; + fra = "1ax7i0nw1lwkz4sbrvn4z0lcrcai77ymdpla7qk7yij6s4xb5bw6"; + frk = "16nmr71p93724vk1x5mq4r8vxpwnm448p6dwqv8scg8asch1cidp"; + frm = "00yz3hz7wcralq8wbx1ap4c6b37ac6vnz5bgmxmgdx0kqzibiddn"; + gle = "1n8z8kmn5m628rlzgz5v0iw6h46aalflq5asa1wj5rygx1y2azpa"; + glg = "0fdniayplc3iwmlmvhblarh1gm97dp8rqhhkb8b0clwfd9cj342z"; + grc = "04r2193qcxqyab5998xn8bf7197wiccmjm7iakij8d0c7l61dnxb"; + guj = "0dp8mlxmf0x9wb8dg0c508sdwz03icq94z8ji8jhwgdqgv8hw1al"; + hat = "0793mmlxbb09c8103jhdvlczz647nyn4ykkgd3gwgavncmjh72v8"; + heb = "16za9ff1i3ya6hz75l9v3v7j4039kscxxw21g3i2w5p9zn52hyag"; + hin = "1vnn5wpc724kgib8jbx0kpnnp4al60ivqir72gnbyh6cpnflb6bf"; + hrv = "15rqd6xiv2bdmalb5s6rxvw0yk6w9agn9fli3bvi703q6vpj2yn3"; + hun = "19zzwdxwi3h3vdsgr271i1m87gfpdirk6b1ljw2j8qmfilp4sw56"; + iku = "1v1yvc1194qycjgb4ihh5hpj6472nlbp66dii183514g2dh9x0db"; + ind = "120d4b41wvsgcd1sgy2mp78i9hvi7w03a63078dz1yds0yqdwf1p"; + isl = "003ngk8dfv6dglkq8pmi6jsglrfkc65js5ywh3vvkg7qfqf6qsxz"; + ita = "1lxklk3zc3x3k8yfpp6ygyv7fndgs57dfasc97rh8782ds16wkjs"; + ita_old = "188gby1y51pa1ycyc8y17d16hs5w27yl5ch7xzni98bdjkwbkl1z"; + jav = "1fjyjznjchls5ifbnx2b9xagisgxvgj9lsf39rr9d87sbzdbbwbp"; + jpn = "1wmayj8wh3pfwznjhalad2qzv38mhrzw2sxl71mycvzvpdy9ag1w"; + kan = "0hak4953whw9vd9dzl0hq076kzb19kk45kmfxk03af4k6gb206vg"; + kat = "16k0057cvvdc6snm5svhdv3cr7cw71g74yy8215njjbsi838imi3"; + kat_old = "02gl755d38plyvzwfjqxvjgfqkbjs9rvzx33qfhm2zvmgbwrfrfh"; + kaz = "0hc36w7zz5waycsk220v0r83sg991gd5f5r937mvz44viql80sgm"; + khm = "1gb2nv5qdq5fz9w9xq4fj68p46b62sd1m986ra5qbnskxqizr12s"; + kir = "1b1ing6qqi8qqfh4xpk76rp4gxp69wdjdl5m777ayx3v02d7nhh3"; + kor = "1rldj6f8h1nn5wpx57b0ci7p0fnivnwzgaf0d3576xls26z2wcgv"; + kur = "1cp2pfd6g662gvxi7ywkxfbfq1lwbis888bf1gg8ynzy342mx1ic"; + lao = "03bdaxakmxpbbr9vsnbzzfksvm6js0l5i0ijwl71piqyxqjj1gxf"; + lat = "1q7v7drnwpna9k2l79jbdlxiv1j617rqzjc9d48h3lfrma5z97sj"; + lav = "0fxzyvw7n67rmw2irvlghkf1bii4w47200zv26p0v3a9dwvhc7sg"; + lit = "0f00ggjjqrl94kwwjmjqwajyfprsml0br8vhn2gvn11gaxvm52hm"; + mal = "1i83plhin3m6sq8p92vzlyng5z59gvvqypyh7rnmvdmm9rranx8a"; + mar = "0ay7q53yl3709crvn5l9c9jx7hw6m5d3x2crmvnvczsh83ayfdik"; + mkd = "1q1wadcr4j1dzssyyqz43qmizc6vfqkbivr6xi2p7p4h9rl11x73"; + mlt = "1qp4v6habak1l7xrw322wglvjjndrfp4j7bj8d4npwbzk1sh4s0h"; + msa = "048p6mkx9zr40s9s5vbi0gnizhvqwn0g8i1hf1l8db7igbax5xyj"; + mya = "17nyr5bd42kzvid3421n3mwckd49vzrjhjahd8rnfsmbsy1x382l"; + nep = "154375r32sdmvcnp1ckvgbp3wxvb2xiiypb8bxbsvrabrz4wzjqc"; + nld = "1clwbky71zkz55zd3f8r9hj8fhpnbkply80p1js4fvs7x12r715x"; + nor = "1ynvrz6s0vmlq1xkjd8k2w6bx8770x6v29qgx83d4nl17ngjd459"; + ori = "0dsakc8gnwhs6z5kxc2wdkbn31gkkiqk5vriw0swghychp164aac"; + osd = "1zq0dfliavglmix7zzrqdxz1w01rm1f1x1352bqn8xf4zivdbxcw"; + pan = "1fwdpwkydfmr6drwgkqzn89z12r2rdm02a75vvdxhxg2a9yiwmbv"; + pol = "155z870ygzws476kp7qpzi8jcjcv3jb5px8rbzhnag1fklqr48hx"; + por = "1814cff2rffpzlg4hyyrjzpf5ps2i95rmpa4c8ikblbvrlcv97q8"; + pus = "1iz5nn1zfvn1l9gb1jriwx991d2hwwc7x4k1nvzjlwpzscplx25b"; + ron = "11lr80zhvnnngvwwk01z1d3prfpbh3qbwpl1nl5fp7h09d6n3wzl"; + rus = "1d6a8lg4bmd3np16jds1py3qpkaq4ahnhwghd5r0159y0jpxq00q"; + san = "169f4ajgwn99yfdfrlwfvdgvv1abal7fpdp31sknvq8l7w2sak3g"; + sin = "1411g18r6f6j6f4n0sn7ajgs4gkplb892s6ak0hi9nyyxwv3r1gm"; + slk = "0bxfbrg1nf6px0xzkh6ihdi71fmr1rxxs99qb191k7pm16x2lpds"; + slk_frak = "0zyqnn1y5cyx1y7wzgw743k4584ljl0rhvk2q1ni6jnjx9ciwzqy"; + slv = "1kjn9m9hbwp0m0p2v8c3skpzr6f8x42hz8x48zl22550a7hq8n1h"; + spa = "1npgl8ylvfm60hd4214z8a3lriy1hckhijschrbjpzmwdfcqafgj"; + spa_old = "0w4ivkv8flyn7bjlyjcrcrdnslkvrrfs7l33mvird1jhhkyqd8sx"; + sqi = "15wzvh6qm3yx7yf0k5j7g1imsaqxvq7r2xh6a0xgmkqbyypbbkdf"; + srp = "05blqriv30x02c80ds3x7zhw0y21nc6lkqlv5jwgwnjgw4yfpgrm"; + srp_latn = "0ss8s3q60aq8sd2a3sbnzvp13qqarxnjw4hij8hd9ab5gsjw0nwr"; + swa = "1pwwhx7ldq21cv06cchws8gvwsmkwn5sjcy9z3nk3nbp9qjsf44f"; + swe = "0l10iyn2cr7ibgk0akmpg8725mpwpydawgv3s77izsw7y6xhfr1a"; + syr = "08bxil13wyp5h4hvbxjcys7ypgqgg46rrp653m7gyv5q94ycjgb0"; + tam = "1g155kyba2wjfgzgy48g6yd2csinwbfjdi5r7vw0wm3dh1z39dvz"; + tel = "0fydrcb54b6mmqazb337x4s36i2a64sb4xm7y7g3nqqmk9afsipv"; + tgk = "0f6j37friywj7y132fv0jm6aj4sx8f0b7brspj3pbjqqpi4v5ws0"; + tgl = "0f1r0gicif57qhyw8xaa1sqgny720q3z5cpd5srrn9i6fihaz577"; + tha = "1y2hw55jfpidk95y8qbsiczgg2r2khabac97s1y3gl0v93a44jna"; + tir = "1y7iryhjr83ca4yh5jjz7qlnrx4kbrp0a0p650whjvk2gnv8m98h"; + tur = "0xqnq99b2jb4v74bj95py6wmg14dm31zp5s3l48dmcv6zdgcxg2w"; + uig = "1sdddr15zlb33kd1d7hzi5lfd15bfhqn105d7x6snfpqp7vq4bxv"; + ukr = "0cdwjnfnnmzz7jdn49l96vqgaimclfxcxaw09cm63f5my382r2rg"; + urd = "10xcn1zs2lfswp5yai0ckyg7js587qhr5cf7qib3i35qjbw7nc18"; + uzb = "1jkkd5j6vsx5jv5gwprbfwg1vwh714prm8j446wzvp74brmk949l"; + uzb_cyrl = "1kdia38rgm2qd3ly80a412jyagxxryr09h1nz2d0iw71bmfn4855"; + vie = "1ja18jxxaw282y4jljxpjf1gj15il61vc2ykpfy22vn88wvydxff"; + yid = "1jddd0g8mm5v00z5kb8rbpfs7ppzgq9kzm1xlhhvv960yfdbi6fd"; + }; + }; + + v4 = makeLanguages { + tessdataRev = "4.0.0"; + tessdata = "1chw1ya5zf8aaj2ixr9x013x7vwwwjjmx6f2ag0d6i14lypygy28"; + all = "0dqgkp369rcvq72yhgnzj1pj8yrv7kqzc7y6sqs7nzcq7l5qazlg"; + + # Run `./fetch-language-hashes ` to generate these hashes + languages = { + afr = "1a9f8pnrspfmcq9gpjnxn2kkhjlsmh912bnpx671fjizxpmiri2y"; + amh = "0m1vdyxjx57kmf2qra0p31k509y1cqn4pyckzw00i5n3wx11d2j0"; + ara = "0nswl6n0s94g900j5k1gwzp7m140c0yd9a2fdb2lzhdvg1krf190"; + asm = "025d9vrjcrwyd6cc6hrw1x8xqhicgrb9wpvhhmlw71ql04dadslf"; + aze = "01shcs78a6xn3my8p3y42x1c9f5hzfn83w2n2nwpffbgz4y2nsgf"; + aze_cyrl = "1sbd89i5r7rnkjh2in8j0plrxnfiill9jl8pr68iw77ghih6q1vg"; + bel = "0dhyymsxcyzwal8474q7ag3m2akv0b92hkdz7rka5z1cxry1cn8c"; + ben = "0a7q9414k3frn37x2qcglz722ysg2iivj6kqaaa0ik7z14ibc8v0"; + bod = "0rh7x54nlh6ir6ldccj8hi7g8hwlp13r3fkljw8gndvhwmgfkkar"; + bos = "1szym4n605hlx12a9vpz4jjs76jscajh22rgkqwbv4qdsl0gi3nd"; + bre = "070f4c84iznblsw4jkwpzh9dss8nfb678160szm5r8dlv2yinrrk"; + bul = "03bg2yw79lg8rl43y9288313jrfh0h69vl4s4cmlgbmnbx8pvxwj"; + cat = "19xs691aj8yy2ff07c3gzm07zicd5ha0gmcjxjh9pknqf2gfy7qv"; + ceb = "1896vn41hqc4anm6hjvrnn022i0p8pmhwsp5rv9w2cvr6738l79r"; + ces = "0fh2g47msfr91285rnccxcmcshihm126sqy496s4vrr0vk8ix1nf"; + chi_sim = "0qxkvbpm5l7gzsshnn72wfx473pprf5nmw8hd4i4x2qxnfddh1gw"; + chi_sim_vert = "1f75pzvxbda82vxa2zb1z9b9f13sh81kzaw45vg5118ncsklj8w7"; + chi_tra = "056vjws1fir1v5iv44pzykkxs5q1dbb2j8blhj47i53w1zf6g42m"; + chi_tra_vert = "10c9cdycg1a5kwlgg60sh8yp07w2fl4whinpxfhlzrzs56allql4"; + chr = "19qq8a6c27973djsc4xpcklis92r58x21fg4mz5azdyka5i1n46l"; + cos = "0z9kx1hw8h5n00pcahxla808wya50wrkk8cz7x676pd93ibyrlyx"; + cym = "13pk9cpf43xxqbz3blfz2av2yd1ma6ds6jbdiqw8anhhj7l9ch2d"; + dan = "1jirmahxvyyswhhyzhinvcqaycz7m3ixchqrj3lgfcdi3anvabr2"; + dan_frak = "17wcgdqxmbzn7qchnx5gsa05aj4wmhbwk43w173bl3wr6h5ylmh0"; + deu = "194rqsg4nlycca9bg2fqf15xgcl110rxp182l7dbjfjhar4knsw9"; + deu_frak = "12hhhp32f15c7fw2jp05mwim9ps14kmamhh6vmalvm7r2033vbm7"; + div = "09mm9r5hxhsc4qpyg10ym9mc2kdpawx8zk0aiv1xpgd35rzpyz41"; + dzo = "1zk7crgcazgqy5zmslp6iw4jws07nja31qdxx0rpzhn3c0bjgw1b"; + ell = "1hhym18a9411953j47xjk47jx9ij9xi2qwlx05c93zl41528nsqg"; + eng = "0iy07z182lwhqfa0q288ha691scpsry330aynaizn68wcmywk86s"; + enm = "1dhr1qvil38bil43wk5ci645sbm3my2y9y7qlcbnwz2p4pflayvm"; + epo = "1jig4db7050vww32vxsqyig3j1b0vgz9ipxbsw0jpkjia84k44n9"; + equ = "02qwg6s1z7pynwm0p6dvpwi04ivfkr1s7qgssbla1dx7v0ih6rlg"; + est = "1jxygahy6by7fbirbmjmd68k6560q1a3h5mvpzdx15h5fw0q58gl"; + eus = "0cai7nm7si8680avrrls8bf9ski980rvsj560fh9y6n9rz7mh9mp"; + fao = "1n3434jf18bzakbylzyg3jaw2ad4h376g56dsql32bgh2yvyww8a"; + fas = "17wjkfka9725rz32clgqgk9msmbz4axs59vz30jmhhxyrkliafqb"; + fil = "0p713k8g27df9z384ns111xqxii5kq20m8brflsmd3yckw1mibhz"; + fin = "1wc3y9nnm7rb2c2c5fkj7cv7jb27jlkb2bh0g8kaz57h6imfmb2g"; + fra = "04qrfvi6irlaahh1pgn5azyfhbhavm12yyybza8603alf8firh7a"; + frk = "05cqmxxxjqdl5hjyzi6dpmixnjpd6f3jr6741yapdmnxvkzxkiyp"; + frm = "0a86yy6hd0lvlbzvnzjmyapzc0rn7mnkdadqycd65bw1b714cvy2"; + fry = "0i84r8g9hlkr9nlhypl4lq6ncrhbcpskqkdcijgk88c2fdknh57h"; + gla = "17idyhb505waz9dnb8dsk54faw7y0xvvb12yw71k0skq3i90akar"; + gle = "1q87h5zzcva54pg364d3hl6q9hdlydlyj1qmq8n5k7hqk11msxmk"; + glg = "01xssz1rhpy3a0sm4i43nba61wc2srz6wv327vdw1kg8ijm0s0g4"; + grc = "00x0s3smx4wg5h12y2b9al0j2jk1y3f0yy2x6f2qf7ps831drgyl"; + guj = "028v4fgn0zi2044vk6j2rlqklc9i0kj22s52vhifmx1g02kz9154"; + hat = "1bca516pr2cnyjlwycc7pr6gfmdjb8565hp06pw9nwpr20ry0hss"; + heb = "1qfkffjh29b21frs0mv6llsrchixl5kjkpj1if7fq816g9mym9kx"; + hin = "1rkfam5c6qil2590lfffzndhq3bncdgf4ij0cyjcglgyljgx0xnc"; + hrv = "0da7b6mk0rwc9zlbqkycwjpddp3qpy07l643i00ia5a1zq35fmgp"; + hun = "0w2s4mn9p74zqzmp9hh2017zgsh5v43k4lid4pv29f4b0y5gj9xi"; + hye = "0ifzm875wlbjh4vkpmj1n6f14m8i174413l6pc6i44y4p5fpgxrf"; + iku = "19arnv82xbxhbcy8pf9fv1sl5zc5707mk34nh7w46dlz86qkidmn"; + ind = "1d421hizwni4m6sr4f3nqqpr1g744hzn0krk130m7x8mhzgamba5"; + isl = "1hjjw8k2r9qa990ziq5wxr36kyf16mnmrqfmq5vbcjprka9h08pq"; + ita = "1qyrvlf7pjxzyb29sc7aq3gq61bww14sijka44scxggfw7134l3r"; + ita_old = "1pf8461jbj0vpyry0b54crmkf2bk9mh4klxvmj09jvf0aq2vm9s6"; + jav = "18vvbyimj0y462amjmwvqa6h9n8l122j9v0w3hfp63hlxpfprm0m"; + jpn = "16hma9w32vdh41ihymp894jza72b0d235hwriv18r78j5n86nhbg"; + jpn_vert = "0yca09l9sbpfjgb2slnpb9q7qd7vz3a1wb6bkln30d3nl0d9r1rn"; + kan = "0lcmx37rjfxkbhhbrld1ndmkwkm9w9b3pzxhas0cv5dqsx2f84jd"; + kat = "1b164bgwa7bbvw4177h8fxfh0fbh4bycfl9pkaa184dpjpaiqpia"; + kat_old = "1mgff7sh93hdp3wh0ckikdggrdgf0syp75s39pickpbkp9ic41ai"; + kaz = "0h37y0kb5lwsp5zpl7bvxg3ryqldl5hxfnardliwgyqgnag951vi"; + khm = "0m7x1fynr18sid2kjjw8xa9ika0a0fc6a6hvc7ihizi47893hdfb"; + kir = "09kxwqpqf6kxjii07qlqsiii83zk12rszp88xnzzjp8rjsnk78s3"; + kor = "0nsr43fwrp9876ia1fc0zcviv2n8hw16n0wfh158vhygwglvy84m"; + kor_vert = "1wmvdznmikk9fq7wdffvn22scxmcl26vjh26jhicqwxpc7kg4bh8"; + kur = "0gbsf3ny3n5mgb30v54bz3crgnimdpg19jn633pbpzryzg3xhd25"; + kur_ara = "1sbj0cczhi9q119fbzpi0m6zr9kjp3k76bv9w8szkv1wc5y4fng6"; + lao = "1gvxlg8bw3a4c9izg3c2a2yl7q6rsy7z9y64axdw9a04pz2ndbl5"; + lat = "0b7an3q3xrf9c55bhiqqh7l45ga88l0kwvkp1akmlr98piach3vr"; + lav = "0fqsmy47cygamddxyjfrdgkfa9bvmrvf4csvppnkdvfzy6iiv0c2"; + lit = "0wjgbkwc3bf5khdqali7ylnhhs4xvpx19m3zx2y9s27v2wjbb6kv"; + ltz = "02zdxbniiqfl87fzsiaaqgldqfsv15z5hja1xhxnqpl0nds7shfc"; + mal = "0a41ifz8i6lj2ywxjkwvymxzxahkz2cjv4apbrawdj1h42bn7frd"; + mar = "00swhlh9bckvmlxanfmlw5j4n9qqhggl84bsq0827bmijsqwnl44"; + mkd = "1bqfiwxlzfpz4fs4z5ci2wbv01qhrcayk1inmk3dxq7dsywx1ajg"; + mlt = "1rmmga2aw88hr7q7cfr5cvhnsgnf1mi069d5k7z66zp4vzbl4zyz"; + mon = "1jksvcavn9plsmjdmhg40mwq5rlvrd1b9gvghdjg7zkf6qqqynlh"; + mri = "0jlfawx20s5clsnk82ndy3v2zidh4cfh4acrh8nindk21xmiwh5i"; + msa = "0m7zs8anaa3l4z5f3xvbhs4syp41dp4all2yfpi1plyr0hy784an"; + mya = "0hljm5haadlr4k5rhw4mvhkygcnrr709rvl7amz7av3nskmi8mb1"; + nep = "1dhy0m2h6xfgwibf92iwxsn926dmrhfvkg9rafkdaqcr4pq6w563"; + nld = "0bspf5bv1s7qzm6k4aqbpq91zvk4kxxhx5zv08w91xfsa1zpdxmi"; + nor = "08majhc9m0fjvac50yq52ia2af9kscclimwkv403klnj4kgf8ndq"; + oci = "1mzrw9gsdjrd1xj3zv7l5gzgjq5jrygxf8cfkz20d9lls0wj1xdv"; + ori = "1sh42mjzb1hv6l6lljp3wifjmz7wrv818f9f16m8qjikwqxm0s78"; + osd = "03mvfk1q1xp1klpf4bwna903rnp51bkqr3gl5hvxybvrc3l2m7z1"; + pan = "0165kr94p6x5yxzs4p8sfppvg9cywp65ps0xaym5rqz9iashz32h"; + pol = "0g0b71ms6ddgykmkna4mlavgzgmh9vj6s62fi8l4ja93nfpr37hp"; + por = "132jbhzmcsq8skanm15bw2niyx9xpbrqr411wn7w9r5i3cvnlv01"; + pus = "0iiglnkn478al11avigsav625pn7ifscycnxpj6fg8835vjww3xr"; + que = "01vkmfi9idjwskv5pllmrxpil0v5h7f7rzv5viclxrzkmbvrz9b5"; + ron = "0ag6vs0cn3sryavs1mfrallgdgi4h28114g7m61rhlhq0z484g0m"; + rus = "1hippm3w5d73sh50r136x0xff2p6x128ry2x4fywf6xdpv1f46v8"; + san = "1qlpqkr5c5wqcf1bvlipy72advqnvd4wm61vghmrj2sda8mx87sx"; + sin = "097d2s4ma0zsq0ab5qs1ylgl9l5phw91fnpsvb7vjmz2mw3ic964"; + slk = "0c97pp5iffhdzyma605x8q3rx1qq9pq2h6cai1kppaj92rz3ji9k"; + slk_frak = "16ivsam1g18zlpw6pgidvzwb7h8rvw1s10nigs6yfwir8hjxsgki"; + slv = "0644jlm55p0dg4zchgrashmbv36zb4x649ckmf2jkbss8bzx7wsf"; + snd = "1i2mfi4414l3v9nznjy7959y2jcr8ymvf6w8zpyrw6nad4d1aak7"; + spa = "15kwvr7cpcnlxm1ja1yyc022dmsd04gmk7h1p0df12aicsscn3qb"; + spa_old = "1jq80c4mi3rmwnfhb3mbaaq0ci101mgbibkji9ala4l5dkcwjra3"; + sqi = "19cvvixhz9906p4c9i2grpr386rbp5alp4fp14xm9nd81bmq4701"; + srp = "1jd25n13h6vxsa3gzbj6q6mdh02rjl4qrd1bffr5psp33asqvw0l"; + srp_latn = "1k7577mn3z0bm5ma9d8l14sn5wpvw50hq1nxwbc36yn3a5b3mhiz"; + sun = "0lvlaw3jfvr7b5v09669kq8mm19jdsk9g5h09jsa2gr6fvsq11pa"; + swa = "0qy9qc5pa1dzzqrh1z40gk845z1r4d2smywnzydknbb3n240lhz0"; + swe = "1y56r7bgzw0pqkdylbah07r1f0v03sblkggiql8x5200rhaxvqi4"; + syr = "1vfj5fsiv170jghryrxwyz0i9mdsaki1kglxrklkb2caal9kwy38"; + tam = "0rhhdbnp0a2hpg00vpc0xyxcl2w36i1kn63mrvwx1f9q7m3y1fmf"; + tat = "0a74rp8pyp4yivv2xcy2m8xgwch8scr3wmk1fzniwzf43fsrqp76"; + tel = "0gcq8hxhxvilyh7x7kiikq07hllqysc8sfyr88gvpj4xi092h2bx"; + tgk = "1458gk0k6gk49n8lr6fj7l7cwkhxn0lrhybzq10zl1ly7yzjhf67"; + tgl = "12yscwckdy3l21mvsrj1021gxw2isjrg369r08rsf7lh96wn4wkn"; + tha = "01f0j7gsc5slxaaql1gqbhk4wlwaxc29dlmfxwjzikxc46gjl0w8"; + tir = "1q6w48b1jchv55713pq20inzjjdymh32fw8wxfaj1qi7bjqfb9fk"; + ton = "06g60ga8rys8jaimqrvd4svh40qs1nz4bszdnf2hdv05ibryibdq"; + tur = "0g9g1wvibp61qbriy8ys948yfkl88xk9g8f93bnq8w8dx029b6s8"; + uig = "09sajx21lw3a3ph62dyqr10pjaq2mij10sdhkhvvjiydk34dn548"; + ukr = "14q8ls8gkrg7c9pc6qzm6yf5ady3i3303vs1hz4d2idcl6yry334"; + urd = "15vszhqraxqdcng1069p6i4xq3ck3904q207nkbap6dfpcpjig40"; + uzb = "03hyw0vavmjirqs4wkd5r85g91w2avsyl14z624fhm3gc66pqg7n"; + uzb_cyrl = "1433lrrp2lfgb1k0a4sc20b35b2jcl8f1z92vm2936y7w04xpaq7"; + vie = "02k40d3wji74d1jgvkr3zrn9gpzlmp0lqhrrdmc48r2sgvnrnk8n"; + yid = "0xnbvi04xv1qapqg72wa3bjwbw51pkdnyncjpjp37vn6dzh04l0z"; + yor = "07w3aci52ng6i6nyp97q5zb2dqlj08w6im90y1h691qah1x44zlv"; + }; + }; +} diff --git a/pkgs/applications/graphics/tesseract/tesseract3.nix b/pkgs/applications/graphics/tesseract/tesseract3.nix new file mode 100644 index 00000000000..db0e06434aa --- /dev/null +++ b/pkgs/applications/graphics/tesseract/tesseract3.nix @@ -0,0 +1,29 @@ +{ stdenv, fetchurl, fetchFromGitHub, autoreconfHook, pkgconfig +, leptonica, libpng, libtiff, icu, pango, opencl-headers }: + +stdenv.mkDerivation rec { + name = "tesseract-${version}"; + version = "3.05.00"; + + src = fetchFromGitHub { + owner = "tesseract-ocr"; + repo = "tesseract"; + rev = version; + sha256 = "11wrpcfl118wxsv2c3w2scznwb48c4547qml42s2bpdz079g8y30"; + }; + + enableParallelBuilding = true; + + nativeBuildInputs = [ pkgconfig autoreconfHook ]; + buildInputs = [ leptonica libpng libtiff icu pango opencl-headers ]; + + LIBLEPT_HEADERSDIR = "${leptonica}/include"; + + meta = { + description = "OCR engine"; + 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 new file mode 100644 index 00000000000..df321023c74 --- /dev/null +++ b/pkgs/applications/graphics/tesseract/tesseract4.nix @@ -0,0 +1,27 @@ +{ stdenv, fetchFromGitHub, autoreconfHook, autoconf-archive, pkgconfig +, leptonica, libpng, libtiff, icu, pango, opencl-headers }: + +stdenv.mkDerivation rec { + name = "tesseract-${version}"; + version = "4.0.0"; + + src = fetchFromGitHub { + owner = "tesseract-ocr"; + repo = "tesseract"; + rev = version; + sha256 = "1b5fi2vibc4kk9b30kkk4ais4bw8fbbv24bzr5709194hb81cav8"; + }; + + enableParallelBuilding = true; + + nativeBuildInputs = [ pkgconfig autoreconfHook autoconf-archive ]; + buildInputs = [ leptonica libpng libtiff icu pango opencl-headers ]; + + meta = { + description = "OCR engine"; + 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/wrapper.nix b/pkgs/applications/graphics/tesseract/wrapper.nix new file mode 100644 index 00000000000..365d68a9ee7 --- /dev/null +++ b/pkgs/applications/graphics/tesseract/wrapper.nix @@ -0,0 +1,58 @@ +{ stdenv, makeWrapper, tesseractBase, languages + +# A list of languages like [ "eng" "spa" … ] or `null` for all available languages +, enableLanguages ? null + +# A list of files or a directory containing files +, tessdata ? (if enableLanguages == null then languages.all + else map (lang: languages.${lang}) enableLanguages) + +# This argument is obsolete +, enableLanguagesHash ? null +}: + +let + passthru = { inherit tesseractBase languages tessdata; }; + + tesseractWithData = tesseractBase.overrideAttrs (_: { + inherit tesseractBase tessdata; + + buildInputs = [ makeWrapper ]; + + buildCommand = '' + makeWrapper {$tesseractBase,$out}/bin/tesseract --set-default TESSDATA_PREFIX $out/share/tessdata + + # Recursively link include, share + cp -rs --no-preserve=mode $tesseractBase/{include,share} $out + + cp -r --no-preserve=mode $tesseractBase/lib $out + # Fixup the store paths in lib so that the tessdata from this derivation is used. + if (( ''${#tesseractBase} != ''${#out} )); then + echo "Can't replace store paths due to differing lengths" + exit 1 + fi + find $out/lib -type f -exec sed -i "s|$tesseractBase|$out|g" {} \; + + if [[ -d "$tessdata" ]]; then + ln -s $tessdata/* $out/share/tessdata + else + for lang in $tessdata; do + ln -s $lang $out/share/tessdata/''${lang#/nix/store*-} + done + fi + + if [[ ! -e $out/share/tessdata/eng.traineddata ]]; then + # This is a bug in Tesseract's internal tessdata discovery mechanism + echo "eng.traineddata must be present in tessdata for Tesseract to work" + exit 1 + fi + ''; + }); + + tesseract = (if enableLanguages == [] then tesseractBase else tesseractWithData) // passthru; +in + if enableLanguagesHash == null then + tesseract + else + stdenv.lib.warn "Argument `enableLanguagesHash` is obsolete and can be removed." + tesseract diff --git a/pkgs/applications/graphics/vimiv/default.nix b/pkgs/applications/graphics/vimiv/default.nix index 538931c1040..e790ef49acb 100644 --- a/pkgs/applications/graphics/vimiv/default.nix +++ b/pkgs/applications/graphics/vimiv/default.nix @@ -6,7 +6,7 @@ }: python3Packages.buildPythonApplication rec { - name = "vimiv"; + pname = "vimiv"; version = "0.7.3"; src = fetchFromGitHub { diff --git a/pkgs/applications/graphics/wings/default.nix b/pkgs/applications/graphics/wings/default.nix index 9ecf94e21c0..ed3220d2bf9 100644 --- a/pkgs/applications/graphics/wings/default.nix +++ b/pkgs/applications/graphics/wings/default.nix @@ -1,34 +1,35 @@ -{ fetchurl, stdenv, erlang, esdl, cl }: +{ fetchurl, stdenv, erlang, cl, libGL, libGLU }: stdenv.mkDerivation rec { - name = "wings-1.5.4"; + name = "wings-2.2.1"; src = fetchurl { url = "mirror://sourceforge/wings/${name}.tar.bz2"; - sha256 = "0qz6rmmkqgk3p0d3v2ikkf22n511bq0m7xp3kkradwrp28fcl15x"; + sha256 = "1adlq3wd9bz0hjznpzsgilxgsbhr0kk01f06872mq37v4cbw76bh"; }; - ERL_LIBS = "${esdl}/lib/erlang/lib:${cl}/lib/erlang/lib"; + ERL_LIBS = "${cl}/lib/erlang/lib"; patchPhase = '' - sed -i 's,include("sdl_keyboard.hrl"),include_lib("esdl/include/sdl_keyboard.hrl"),' \ - src/wings_body.erl plugins_src/commands/wpc_constraints.erl - - # Fix reference - sed -i 's,wings/e3d/,,' plugins_src/import_export/wpc_lwo.erl + sed -i 's,-Werror ,,' e3d/Makefile + sed -i 's,../../wings/,../,' icons/Makefile + find plugins_src -mindepth 2 -type f -name "*.[eh]rl" -exec sed -i 's,wings/src/,../../src/,' {} \; + find plugins_src -mindepth 2 -type f -name "*.[eh]rl" -exec sed -i 's,wings/e3d/,../../e3d/,' {} \; + find plugins_src -mindepth 2 -type f -name "*.[eh]rl" -exec sed -i 's,wings/intl_tools/,../../intl_tools/,' {} \; + find . -type f -name "*.[eh]rl" -exec sed -i 's,wings/src/,../src/,' {} \; + find . -type f -name "*.[eh]rl" -exec sed -i 's,wings/e3d/,../e3d/,' {} \; + find . -type f -name "*.[eh]rl" -exec sed -i 's,wings/intl_tools/,../intl_tools/,' {} \; ''; - buildInputs = [ erlang esdl cl ]; + buildInputs = [ erlang cl libGL libGLU ]; # I did not test the *cl* part. I added the -pa just by imitation. installPhase = '' mkdir -p $out/bin $out/lib/${name}/ebin cp ebin/* $out/lib/${name}/ebin - cp -R fonts textures shaders plugins $out/lib/$name + cp -R textures shaders plugins $out/lib/$name cat << EOF > $out/bin/wings #!/bin/sh - ${erlang}/bin/erl -smp disable \ - -pa ${esdl}/lib/erlang/lib/${cl.name}/ebin \ - -pa ${esdl}/lib/erlang/lib/${esdl.name}/ebin \ + ${erlang}/bin/erl \ -pa $out/lib/${name}/ebin -run wings_start start_halt "$@" EOF chmod +x $out/bin/wings diff --git a/pkgs/applications/graphics/write_stylus/default.nix b/pkgs/applications/graphics/write_stylus/default.nix index 9fd464f4620..e11bc3dd5bb 100644 --- a/pkgs/applications/graphics/write_stylus/default.nix +++ b/pkgs/applications/graphics/write_stylus/default.nix @@ -1,4 +1,4 @@ -{ stdenv, lib, qtbase, qtsvg, fetchurl, makeDesktopItem }: +{ stdenv, lib, qtbase, qtsvg, libglvnd, fetchurl, makeDesktopItem }: stdenv.mkDerivation rec { name = "write_stylus-${version}"; version = "209"; @@ -43,9 +43,10 @@ stdenv.mkDerivation rec { ''; preFixup = let libPath = lib.makeLibraryPath [ - qtbase # libQt5PrintSupport.so.5 - qtsvg # libQt5Svg.so.5 + qtbase # libQt5PrintSupport.so.5 + qtsvg # libQt5Svg.so.5 stdenv.cc.cc.lib # libstdc++.so.6 + libglvnd # ibGL.so.1 ]; in '' patchelf \ diff --git a/pkgs/applications/graphics/xaos/default.nix b/pkgs/applications/graphics/xaos/default.nix index a6f97bb5334..182f68f3112 100644 --- a/pkgs/applications/graphics/xaos/default.nix +++ b/pkgs/applications/graphics/xaos/default.nix @@ -1,5 +1,5 @@ -{ stdenv, fetchurl, aalib, gsl, libpng, libX11, xproto, libXext -, xextproto, libXt, zlib, gettext, intltool, perl }: +{ stdenv, fetchurl, aalib, gsl, libpng, libX11, xorgproto, libXext +, libXt, zlib, gettext, intltool, perl }: stdenv.mkDerivation rec { name = "xaos-${version}"; @@ -13,7 +13,7 @@ stdenv.mkDerivation rec { hardeningDisable = [ "format" ]; buildInputs = [ - aalib gsl libpng libX11 xproto libXext xextproto + aalib gsl libpng libX11 xorgproto libXext libXt zlib gettext intltool perl ]; diff --git a/pkgs/applications/graphics/xournal/default.nix b/pkgs/applications/graphics/xournal/default.nix index cfad449fb02..cd9d068b8ac 100644 --- a/pkgs/applications/graphics/xournal/default.nix +++ b/pkgs/applications/graphics/xournal/default.nix @@ -1,7 +1,7 @@ { stdenv, fetchurl, makeDesktopItem , ghostscript, atk, gtk2, glib, fontconfig, freetype , libgnomecanvas, libgnomeprint, libgnomeprintui -, pango, libX11, xproto, zlib, poppler +, pango, libX11, xorgproto, zlib, poppler , autoconf, automake, libtool, pkgconfig}: let @@ -19,7 +19,7 @@ stdenv.mkDerivation rec { buildInputs = [ ghostscript atk gtk2 glib fontconfig freetype libgnomecanvas - pango libX11 xproto zlib poppler + pango libX11 xorgproto zlib poppler ] ++ stdenv.lib.optionals (!stdenv.isDarwin) [ libgnomeprint libgnomeprintui ]; diff --git a/pkgs/applications/graphics/yacreader/default.nix b/pkgs/applications/graphics/yacreader/default.nix new file mode 100644 index 00000000000..3cf42343658 --- /dev/null +++ b/pkgs/applications/graphics/yacreader/default.nix @@ -0,0 +1,25 @@ +{ stdenv, fetchurl, qmake, poppler, pkgconfig, libunarr, libGLU +, qtdeclarative, qtgraphicaleffects, qtmultimedia, qtquickcontrols, qtscript +}: + +stdenv.mkDerivation rec { + name = "yacreader-${version}"; + version = "9.5.0"; + + src = fetchurl { + url = "https://github.com/YACReader/yacreader/releases/download/${version}/${name}-src.tar.xz"; + sha256 = "0cv5y76kjvsqsv4fp99j8np5pm4m76868i1nn40q6hy573dmxwm6"; + }; + + nativeBuildInputs = [ qmake pkgconfig ]; + buildInputs = [ poppler libunarr libGLU qtmultimedia qtscript ]; + propagatedBuildInputs = [ qtquickcontrols qtgraphicaleffects qtdeclarative ]; + + enableParallelBuilding = true; + + meta = { + description = "A comic reader for cross-platform reading and managing your digital comic collection"; + homepage = http://www.yacreader.com; + license = stdenv.lib.licenses.gpl3; + }; +} diff --git a/pkgs/applications/graphics/yed/default.nix b/pkgs/applications/graphics/yed/default.nix index 9100efc8639..7267e9bc485 100644 --- a/pkgs/applications/graphics/yed/default.nix +++ b/pkgs/applications/graphics/yed/default.nix @@ -1,16 +1,15 @@ -{ stdenv, requireFile, makeWrapper, unzip, jre }: +{ stdenv, fetchzip, makeWrapper, unzip, jre }: stdenv.mkDerivation rec { name = "yEd-${version}"; - version = "3.18.1.1"; + version = "3.18.2"; - src = requireFile { - name = "${name}.zip"; - url = "https://www.yworks.com/en/products/yfiles/yed/"; - sha256 = "0jl0c18jkmy21ka5xgki8dqq2v8cy63qvmx3x01wrhiplmczn97y"; + src = fetchzip { + url = "https://www.yworks.com/resources/yed/demo/${name}.zip"; + sha256 = "1csj19j9mfx4jfc949sz672h8lnfj217nn32d54cxj8llks82ycy"; }; - nativeBuildInputs = [ unzip makeWrapper ]; + nativeBuildInputs = [ makeWrapper unzip ]; installPhase = '' mkdir -p $out/yed diff --git a/pkgs/applications/inferno/default.nix b/pkgs/applications/inferno/default.nix deleted file mode 100644 index de9be76b6e4..00000000000 --- a/pkgs/applications/inferno/default.nix +++ /dev/null @@ -1,58 +0,0 @@ -{ fetchhg, stdenv, xorg, makeWrapper }: - -stdenv.mkDerivation rec { - # Inferno is a rolling release from a mercurial repository. For the verison number - # of the package I'm using the mercurial commit number. - rev = "785"; - name = "inferno-${rev}"; - host = "Linux"; - objtype = "386"; - - src = fetchhg { - url = "https://bitbucket.org/inferno-os/inferno-os"; - sha256 = "1b428ma9fi5skvfrxp91dr43a62kax89wmx7950ahc1cxyx90k7x"; - }; - - buildInputs = [ makeWrapper ] ++ (with xorg; [ libX11 libXpm libXext xextproto ]); - - infernoWrapper = ./inferno; - - configurePhase = '' - sed -e 's@^ROOT=.*$@ROOT='"$out"'/share/inferno@g' \ - -e 's@^OBJTYPE=.*$@OBJTYPE=${objtype}@g' \ - -e 's@^SYSHOST=.*$@SYSHOST=${host}@g' \ - -i mkconfig - # Get rid of an annoying warning - sed -e 's/_BSD_SOURCE/_DEFAULT_SOURCE/g' \ - -i ${host}/${objtype}/include/lib9.h - ''; - - buildPhase = '' - mkdir -p $out/share/inferno - cp -r . $out/share/inferno - ./makemk.sh - export PATH=$PATH:$out/share/inferno/Linux/386/bin - mk nuke - mk - ''; - - installPhase = '' - # Installs executables in $out/share/inferno/${host}/${objtype}/bin - mk install - mkdir -p $out/bin - # Install start-up script - makeWrapper $infernoWrapper $out/bin/inferno \ - --suffix PATH ':' "$out/share/inferno/Linux/386/bin" \ - --set INFERNO_ROOT "$out/share/inferno" - ''; - - hardeningDisable = [ "fortify" ]; - - meta = { - description = "A compact distributed operating system for building cross-platform distributed systems"; - homepage = http://inferno-os.org/; - license = stdenv.lib.licenses.gpl2; - maintainers = with stdenv.lib.maintainers; [ doublec kovirobi ]; - platforms = with stdenv.lib.platforms; linux; - }; -} diff --git a/pkgs/applications/inferno/inferno b/pkgs/applications/inferno/inferno deleted file mode 100755 index 6eb6da8861a..00000000000 --- a/pkgs/applications/inferno/inferno +++ /dev/null @@ -1,31 +0,0 @@ -#! /usr/bin/env bash - - -export INFERNO_HOME="$HOME/.local/share/inferno" -if [ -n "$XDG_DATA_HOME" ] - then export INFERNO_HOME="$XDG_DATA_HOME/inferno" -fi - -if [ ! -d $INFERNO_HOME ]; then - mkdir -p $INFERNO_HOME -fi - -if [ ! -d $INFERNO_HOME/tmp ]; then - mkdir -p $INFERNO_HOME/tmp -fi - -for d in $INFERNO_HOME/{acme,appl,dis,lib,man,module,usr/inferno}; do - if [ ! -d $d ]; then - mkdir -p $d - cp --no-preserve=all -r $INFERNO_ROOT/${d#$INFERNO_HOME/}/* $d/ - chmod -R +w $d - fi -done - -if [ ! -d $INFERNO_HOME/usr/$USER ]; then - mkdir -p $INFERNO_HOME/usr/$USER - cp -r $INFERNO_ROOT/usr/inferno/* $INFERNO_HOME/usr/$USER/ - chmod -R +w $INFERNO_HOME/usr/$USER -fi - -exec emu "$@" /dis/sh.dis -c "bind -b -c '#U*$INFERNO_HOME/' /; /dis/sh.dis" diff --git a/pkgs/applications/kde/akonadi/akonadi-paths.patch b/pkgs/applications/kde/akonadi/akonadi-paths.patch index 4743c36c44d..9fa3c8a1414 100644 --- a/pkgs/applications/kde/akonadi/akonadi-paths.patch +++ b/pkgs/applications/kde/akonadi/akonadi-paths.patch @@ -1,8 +1,8 @@ diff --git a/src/akonadicontrol/agentmanager.cpp b/src/akonadicontrol/agentmanager.cpp -index 2e9f1acf4..ecc80afdc 100644 +index d85c1a79b..8df02710c 100644 --- a/src/akonadicontrol/agentmanager.cpp +++ b/src/akonadicontrol/agentmanager.cpp -@@ -84,12 +84,12 @@ AgentManager::AgentManager(bool verbose, QObject *parent) +@@ -78,12 +78,12 @@ AgentManager::AgentManager(bool verbose, QObject *parent) mStorageController = new Akonadi::ProcessControl; mStorageController->setShutdownTimeout(15 * 1000); // the server needs more time for shutdown if we are using an internal mysqld connect(mStorageController, &Akonadi::ProcessControl::unableToStart, this, &AgentManager::serverFailure); @@ -15,8 +15,8 @@ index 2e9f1acf4..ecc80afdc 100644 - mAgentServer->start(QStringLiteral("akonadi_agent_server"), serviceArgs, Akonadi::ProcessControl::RestartOnCrash); + mAgentServer->start(QLatin1String(NIX_OUT "/bin/akonadi_agent_server"), serviceArgs, Akonadi::ProcessControl::RestartOnCrash); } + } - #ifndef QT_NO_DEBUG diff --git a/src/akonadicontrol/agentprocessinstance.cpp b/src/akonadicontrol/agentprocessinstance.cpp index be1cc4afb..6d0c1d7e5 100644 --- a/src/akonadicontrol/agentprocessinstance.cpp @@ -31,7 +31,7 @@ index be1cc4afb..6d0c1d7e5 100644 } return true; diff --git a/src/server/storage/dbconfigmysql.cpp b/src/server/storage/dbconfigmysql.cpp -index a32e86602..48ea4e52e 100644 +index 8b057b459..3fa4548ad 100644 --- a/src/server/storage/dbconfigmysql.cpp +++ b/src/server/storage/dbconfigmysql.cpp @@ -63,7 +63,6 @@ bool DbConfigMysql::init(QSettings &settings) @@ -121,7 +121,7 @@ index a32e86602..48ea4e52e 100644 const QString actualConfig = StandardDirs::saveDir("data") + QLatin1String("/mysql.conf"); if (globalConfig.isEmpty()) { diff --git a/src/server/storage/dbconfigpostgresql.cpp b/src/server/storage/dbconfigpostgresql.cpp -index 60e6272f2..ad7cefbfe 100644 +index 6b50ae50e..f94a8c5eb 100644 --- a/src/server/storage/dbconfigpostgresql.cpp +++ b/src/server/storage/dbconfigpostgresql.cpp @@ -58,7 +58,6 @@ bool DbConfigPostgresql::init(QSettings &settings) @@ -132,7 +132,7 @@ index 60e6272f2..ad7cefbfe 100644 QString defaultInitDbPath; QString defaultPgData; -@@ -70,34 +69,7 @@ bool DbConfigPostgresql::init(QSettings &settings) +@@ -70,35 +69,7 @@ bool DbConfigPostgresql::init(QSettings &settings) mInternalServer = settings.value(QStringLiteral("QPSQL/StartServer"), defaultInternalServer).toBool(); if (mInternalServer) { @@ -144,7 +144,8 @@ index 60e6272f2..ad7cefbfe 100644 - postgresSearchPath << QStringLiteral(POSTGRES_PATH); - } -#endif -- postgresSearchPath << QStringLiteral("/usr/sbin") +- postgresSearchPath << QStringLiteral("/usr/bin") +- << QStringLiteral("/usr/sbin") - << QStringLiteral("/usr/local/sbin"); - // Locale all versions in /usr/lib/postgresql (i.e. /usr/lib/postgresql/X.Y) in reversed - // sorted order, so we search from the newest one to the oldest. @@ -168,7 +169,7 @@ index 60e6272f2..ad7cefbfe 100644 defaultHostName = Utils::preferredSocketDirectory(StandardDirs::saveDir("data", QStringLiteral("db_misc"))); defaultPgData = StandardDirs::saveDir("data", QStringLiteral("db_data")); } -@@ -117,10 +89,7 @@ bool DbConfigPostgresql::init(QSettings &settings) +@@ -118,10 +89,7 @@ bool DbConfigPostgresql::init(QSettings &settings) mUserName = settings.value(QStringLiteral("User")).toString(); mPassword = settings.value(QStringLiteral("Password")).toString(); mConnectionOptions = settings.value(QStringLiteral("Options"), defaultOptions).toString(); @@ -180,7 +181,7 @@ index 60e6272f2..ad7cefbfe 100644 qCDebug(AKONADISERVER_LOG) << "Found pg_ctl:" << mServerPath; mInitDbPath = settings.value(QStringLiteral("InitDbPath"), defaultInitDbPath).toString(); if (mInternalServer && mInitDbPath.isEmpty()) { -@@ -141,7 +110,6 @@ bool DbConfigPostgresql::init(QSettings &settings) +@@ -142,7 +110,6 @@ bool DbConfigPostgresql::init(QSettings &settings) settings.setValue(QStringLiteral("Port"), mHostPort); } settings.setValue(QStringLiteral("Options"), mConnectionOptions); diff --git a/pkgs/applications/kde/default.nix b/pkgs/applications/kde/default.nix index 072b66e5563..c062db9e254 100644 --- a/pkgs/applications/kde/default.nix +++ b/pkgs/applications/kde/default.nix @@ -93,6 +93,7 @@ let 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 {}; @@ -129,6 +130,7 @@ let kontact = callPackage ./kontact.nix {}; kontactinterface = callPackage ./kontactinterface.nix {}; konquest = callPackage ./konquest.nix {}; + konqueror = callPackage ./konqueror.nix {}; korganizer = callPackage ./korganizer.nix {}; kpimtextedit = callPackage ./kpimtextedit.nix {}; ksmtp = callPackage ./ksmtp {}; @@ -164,7 +166,6 @@ let pim-sieve-editor = callPackage ./pim-sieve-editor.nix {}; print-manager = callPackage ./print-manager.nix {}; spectacle = callPackage ./spectacle.nix {}; - syndication = callPackage ./syndication.nix {}; # Okteta was removed from kde applications and will now be released independently # Lets keep an alias for compatibility reasons inherit okteta; diff --git a/pkgs/applications/kde/dolphin.nix b/pkgs/applications/kde/dolphin.nix index dcc79774303..241bb71983a 100644 --- a/pkgs/applications/kde/dolphin.nix +++ b/pkgs/applications/kde/dolphin.nix @@ -4,7 +4,8 @@ baloo, baloo-widgets, kactivities, kbookmarks, kcmutils, kcompletion, kconfig, kcoreaddons, kdelibs4support, kdbusaddons, kfilemetadata, ki18n, kiconthemes, kinit, kio, knewstuff, knotifications, - kparts, ktexteditor, kwindowsystem, phonon, solid + kparts, ktexteditor, kwindowsystem, phonon, solid, + wayland, qtwayland }: mkDerivation { @@ -19,6 +20,7 @@ mkDerivation { kcoreaddons kdelibs4support kdbusaddons kfilemetadata ki18n kiconthemes kinit kio knewstuff knotifications kparts ktexteditor kwindowsystem phonon solid + wayland qtwayland ]; outputs = [ "out" "dev" ]; # We need the RPATH for linking, because the `libkdeinit5_dolphin.so` links diff --git a/pkgs/applications/kde/fetch.sh b/pkgs/applications/kde/fetch.sh index d4830a9e239..3b01e497039 100644 --- a/pkgs/applications/kde/fetch.sh +++ b/pkgs/applications/kde/fetch.sh @@ -1 +1 @@ -WGET_ARGS=( https://download.kde.org/stable/applications/18.08.1/ -A '*.tar.xz' ) +WGET_ARGS=( https://download.kde.org/stable/applications/18.12.0/ -A '*.tar.xz' ) diff --git a/pkgs/applications/kde/kcharselect.nix b/pkgs/applications/kde/kcharselect.nix new file mode 100644 index 00000000000..4af712b1d5a --- /dev/null +++ b/pkgs/applications/kde/kcharselect.nix @@ -0,0 +1,19 @@ +{ + mkDerivation, lib, + extra-cmake-modules, kdoctools, + kbookmarks, kconfig, kconfigwidgets, kcrash, kcoreaddons, ki18n, kwidgetsaddons, kxmlgui +}: + +mkDerivation { + name = "kcharselect"; + meta = { + license = lib.licenses.gpl2Plus; + maintainers = [ lib.maintainers.schmittlauch ]; + description = "A tool to select special characters from all installed fonts and copy them into the clipboard"; + }; + nativeBuildInputs = [ extra-cmake-modules kdoctools ]; + buildInputs = [ + kbookmarks kconfig kconfigwidgets kcoreaddons kcrash ki18n kwidgetsaddons kxmlgui + ]; + enableParallelBuilding = true; +} diff --git a/pkgs/applications/kde/kdepim-runtime.nix b/pkgs/applications/kde/kdepim-runtime.nix index b3cfed91dd4..fa090d50354 100644 --- a/pkgs/applications/kde/kdepim-runtime.nix +++ b/pkgs/applications/kde/kdepim-runtime.nix @@ -5,7 +5,7 @@ akonadi, akonadi-calendar, akonadi-contacts, akonadi-mime, akonadi-notes, kalarmcal, kcalutils, kcontacts, kdav, kdelibs4support, kidentitymanagement, kimap, kmailtransport, kmbox, kmime, knotifications, knotifyconfig, - pimcommon, qtwebengine, libkgapi + pimcommon, qtwebengine, libkgapi, qtspeech, qtxmlpatterns }: mkDerivation { @@ -19,7 +19,7 @@ mkDerivation { akonadi akonadi-calendar akonadi-contacts akonadi-mime akonadi-notes kalarmcal kcalutils kcontacts kdav kdelibs4support kidentitymanagement kimap kmailtransport kmbox kmime knotifications knotifyconfig qtwebengine - pimcommon libkgapi + pimcommon libkgapi qtspeech qtxmlpatterns ]; # Attempts to build some files before dependencies have been generated enableParallelBuilding = false; diff --git a/pkgs/applications/kde/kmbox.nix b/pkgs/applications/kde/kmbox.nix index 4b6b72a3734..c1348edf3f6 100644 --- a/pkgs/applications/kde/kmbox.nix +++ b/pkgs/applications/kde/kmbox.nix @@ -1,7 +1,7 @@ { mkDerivation, lib, kdepimTeam, extra-cmake-modules, kdoctools, - kmime, qtbase, + kmime, qtbase, kcodecs }: mkDerivation { @@ -11,6 +11,6 @@ mkDerivation { maintainers = kdepimTeam; }; nativeBuildInputs = [ extra-cmake-modules kdoctools ]; - buildInputs = [ kmime qtbase ]; + buildInputs = [ kmime qtbase kcodecs ]; outputs = [ "out" "dev" ]; } diff --git a/pkgs/applications/kde/konqueror.nix b/pkgs/applications/kde/konqueror.nix new file mode 100644 index 00000000000..e6442fea2f9 --- /dev/null +++ b/pkgs/applications/kde/konqueror.nix @@ -0,0 +1,20 @@ +{ lib +, mkDerivation +, extra-cmake-modules, kdoctools +, kdelibs4support, kcmutils, khtml, kdesu +, qtwebkit, qtwebengine, qtx11extras, qtscript, qtwayland +}: + +mkDerivation { + name = "konqueror"; + nativeBuildInputs = [ extra-cmake-modules kdoctools ]; + buildInputs = [ + kdelibs4support kcmutils khtml kdesu + qtwebkit qtwebengine qtx11extras qtscript qtwayland + ]; + meta = { + license = with lib.licenses; [ gpl2 ]; + maintainers = with lib.maintainers; [ ]; + }; +} + diff --git a/pkgs/applications/kde/konsole.nix b/pkgs/applications/kde/konsole.nix index 2847e312d00..004fc1c37ae 100644 --- a/pkgs/applications/kde/konsole.nix +++ b/pkgs/applications/kde/konsole.nix @@ -1,5 +1,5 @@ { - mkDerivation, lib, + mkDerivation, lib, makeWrapper, extra-cmake-modules, kdoctools, kbookmarks, kcompletion, kconfig, kconfigwidgets, kcoreaddons, kguiaddons, ki18n, kiconthemes, kinit, kdelibs4support, kio, knotifications, @@ -18,6 +18,12 @@ mkDerivation { kbookmarks kcompletion kconfig kconfigwidgets kcoreaddons kdelibs4support kguiaddons ki18n kiconthemes kinit kio knotifications knotifyconfig kparts kpty kservice ktextwidgets kwidgetsaddons kwindowsystem kxmlgui qtscript knewstuff + makeWrapper ]; + + postInstall = '' + wrapProgram $out/bin/konsole --prefix XDG_DATA_DIRS ":" $out/share + ''; + propagatedUserEnvPkgs = [ (lib.getBin kinit) ]; } diff --git a/pkgs/applications/kde/kpimtextedit.nix b/pkgs/applications/kde/kpimtextedit.nix index 05d174b0554..4ede854d546 100644 --- a/pkgs/applications/kde/kpimtextedit.nix +++ b/pkgs/applications/kde/kpimtextedit.nix @@ -2,7 +2,8 @@ mkDerivation, lib, kdepimTeam, extra-cmake-modules, kdoctools, grantlee, kcodecs, kconfigwidgets, kemoticons, ki18n, kiconthemes, kio, - kdesignerplugin, ktextwidgets, sonnet, syntax-highlighting, qttools, + kdesignerplugin, ktextwidgets, sonnet, syntax-highlighting, qttools, + qtspeech }: mkDerivation { @@ -14,7 +15,7 @@ mkDerivation { nativeBuildInputs = [ extra-cmake-modules kdoctools ]; buildInputs = [ grantlee kcodecs kconfigwidgets kemoticons ki18n kiconthemes kio kdesignerplugin - sonnet syntax-highlighting qttools + sonnet syntax-highlighting qttools qtspeech ]; propagatedBuildInputs = [ ktextwidgets ]; outputs = [ "out" "dev" ]; diff --git a/pkgs/applications/kde/marble.nix b/pkgs/applications/kde/marble.nix index ea140cad5ee..b02e29e3351 100644 --- a/pkgs/applications/kde/marble.nix +++ b/pkgs/applications/kde/marble.nix @@ -14,4 +14,7 @@ mkDerivation { qtscript qtsvg qtquickcontrols qtwebkit shared-mime-info krunner kparts knewstuff gpsd ]; + preConfigure = '' + cmakeFlags+=" -DINCLUDE_INSTALL_DIR=''${!outputDev}/include" + ''; } diff --git a/pkgs/applications/kde/srcs.nix b/pkgs/applications/kde/srcs.nix index bc7b7407d6a..b691902e133 100644 --- a/pkgs/applications/kde/srcs.nix +++ b/pkgs/applications/kde/srcs.nix @@ -3,1715 +3,1723 @@ { akonadi = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/akonadi-18.08.1.tar.xz"; - sha256 = "0fipz3xnbgqk7f9pxfm3p38fniddb76scpb80fvb2v6gn0snlabi"; - name = "akonadi-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/akonadi-18.12.0.tar.xz"; + sha256 = "1c3frrfkcpr01684c1fkrwxbnzb7ipvwncm0jf5nb4d0waiv8q08"; + name = "akonadi-18.12.0.tar.xz"; }; }; akonadi-calendar = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/akonadi-calendar-18.08.1.tar.xz"; - sha256 = "1knwr8s1qn13fan1pq31pr3dk219cmv96mwvd36ir0bd2l7vkmcs"; - name = "akonadi-calendar-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/akonadi-calendar-18.12.0.tar.xz"; + sha256 = "0amp79x3jwib7f0a8ksv96prb1mhfhpp475k09ryz7c054lmj1ys"; + name = "akonadi-calendar-18.12.0.tar.xz"; }; }; akonadi-calendar-tools = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/akonadi-calendar-tools-18.08.1.tar.xz"; - sha256 = "1l4idxwi9h0bff1cwwsm7s4m9bcw4vp4ip5r87vc7687hhphc27l"; - name = "akonadi-calendar-tools-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/akonadi-calendar-tools-18.12.0.tar.xz"; + sha256 = "0w2ng8lfy3cib49c0warqh0k43q17bfmkq3g4rjkwri9cqdqrahp"; + name = "akonadi-calendar-tools-18.12.0.tar.xz"; }; }; akonadiconsole = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/akonadiconsole-18.08.1.tar.xz"; - sha256 = "031garrv2q3rv6qjjkzm3rmmd25f6j17sz2yv4hn3zgzydkjjskn"; - name = "akonadiconsole-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/akonadiconsole-18.12.0.tar.xz"; + sha256 = "1qg889g1a1c5iwvwdwz8ygkj59v46yfk5cwpkf8q1jldjdxkrib5"; + name = "akonadiconsole-18.12.0.tar.xz"; }; }; akonadi-contacts = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/akonadi-contacts-18.08.1.tar.xz"; - sha256 = "1p7192f7n6g7ihj05f7zzqpzl33sbvzsg479lkl120rmvzbjhfxn"; - name = "akonadi-contacts-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/akonadi-contacts-18.12.0.tar.xz"; + sha256 = "0cn50nyrahb6pzshd35pc0issgiwg0r7j96xkmaxdigg9agjz9rn"; + name = "akonadi-contacts-18.12.0.tar.xz"; }; }; akonadi-import-wizard = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/akonadi-import-wizard-18.08.1.tar.xz"; - sha256 = "0x80nfa04ffwdvv861ahpgrbnx48ad28ii5glcg5pp5a840jx72s"; - name = "akonadi-import-wizard-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/akonadi-import-wizard-18.12.0.tar.xz"; + sha256 = "1s477z6vb9qqz4q8bwprznn11fjjq0a6xfdmif6x0z30qrddllfd"; + name = "akonadi-import-wizard-18.12.0.tar.xz"; }; }; akonadi-mime = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/akonadi-mime-18.08.1.tar.xz"; - sha256 = "04xf5kbf30y5g4amx1x3nvkfypid232l4jamx3lnhia5x4kn2q5g"; - name = "akonadi-mime-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/akonadi-mime-18.12.0.tar.xz"; + sha256 = "1w974gn81gyrp3m5r2l8jx7xrq610mhmmn005wqfl7ac1n3s65ln"; + name = "akonadi-mime-18.12.0.tar.xz"; }; }; akonadi-notes = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/akonadi-notes-18.08.1.tar.xz"; - sha256 = "1ib7a7y37mq0dj0arxg2f41a30d8i637359ixhcf9sgpcs3xysns"; - name = "akonadi-notes-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/akonadi-notes-18.12.0.tar.xz"; + sha256 = "0b233nw7jcr4dnlfnnymwrm9my47a4mdmdbp9qsp2rmlzwddplvw"; + name = "akonadi-notes-18.12.0.tar.xz"; }; }; akonadi-search = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/akonadi-search-18.08.1.tar.xz"; - sha256 = "0r7bwfjq9z6ky3riap5gnffzb9k7hwslfprk0jad63dl0djj4qzw"; - name = "akonadi-search-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/akonadi-search-18.12.0.tar.xz"; + sha256 = "1kg8q5jkzcc4vndc8l2q7hvkjkdw2v5500pjw8pszwifzmi5klln"; + name = "akonadi-search-18.12.0.tar.xz"; }; }; akregator = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/akregator-18.08.1.tar.xz"; - sha256 = "1js6fbz7hhj0pyjgaz5zhi5bbyw2l9v2gkpj8f8jw4ria2hiz4w8"; - name = "akregator-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/akregator-18.12.0.tar.xz"; + sha256 = "03968pcpvggn19721x89wn7d1n757xdk22f4rvxqq4d6qqh2myhd"; + name = "akregator-18.12.0.tar.xz"; }; }; analitza = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/analitza-18.08.1.tar.xz"; - sha256 = "11zzrgjl2fjbpjagzpzff0aq83ss5037pj4g83wi3qqvlkhphzf2"; - name = "analitza-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/analitza-18.12.0.tar.xz"; + sha256 = "0g8iz69cq2gc0qsraaqji8h7z1wcqq1baic4x7158q3xkrc7hg1f"; + name = "analitza-18.12.0.tar.xz"; }; }; ark = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/ark-18.08.1.tar.xz"; - sha256 = "1k95qnjn4xgi0dnypfiwa86n0zwckkh5qnc54mv9g1xvvzah04cq"; - name = "ark-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/ark-18.12.0.tar.xz"; + sha256 = "16nmi8a9j4s00m4dnh4l7kcz1vjaqpcq1ilr0iv6wglpn3sycl1g"; + name = "ark-18.12.0.tar.xz"; }; }; artikulate = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/artikulate-18.08.1.tar.xz"; - sha256 = "1cvd6sm45j2gg0ga7j3vyz89lrl1ghlwq6516rsxrvsy3vg7vdmy"; - name = "artikulate-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/artikulate-18.12.0.tar.xz"; + sha256 = "187qwl9adrggbkf6dyw12pmmxxxbjcp2swxbyvmqx10dca2pgbgn"; + name = "artikulate-18.12.0.tar.xz"; }; }; audiocd-kio = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/audiocd-kio-18.08.1.tar.xz"; - sha256 = "11wz5glih8jf9l85ncfhg91nyvh7s6q25gfy0vnqk8k0a98h0ghi"; - name = "audiocd-kio-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/audiocd-kio-18.12.0.tar.xz"; + sha256 = "044ksczgc5k6ai1inmxqpibvcigjvxbqpf6n6irgl1jgavmxdpim"; + name = "audiocd-kio-18.12.0.tar.xz"; }; }; baloo-widgets = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/baloo-widgets-18.08.1.tar.xz"; - sha256 = "1ab86j0akmz8vqkg3xhx1qlp27ndsg183irhfap313maw88bzwxp"; - name = "baloo-widgets-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/baloo-widgets-18.12.0.tar.xz"; + sha256 = "1sq70l529dg2ww8pcksnbbmgh1wi1baj69adakqiacxi5v893clg"; + name = "baloo-widgets-18.12.0.tar.xz"; }; }; blinken = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/blinken-18.08.1.tar.xz"; - sha256 = "0xzk8ddgr55sil00dl6b00m0x5az81yhd1cklr6mahjgg7w822br"; - name = "blinken-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/blinken-18.12.0.tar.xz"; + sha256 = "1dnp14g20a7gqy3zcysa7pxrj38zqxhgpyd4nxpdj6lzjgh2p7hx"; + name = "blinken-18.12.0.tar.xz"; }; }; bomber = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/bomber-18.08.1.tar.xz"; - sha256 = "0x4z8fa2klhabr99al3iyyf9aq3pm8rk1gi6cjghjgwrrcav7an7"; - name = "bomber-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/bomber-18.12.0.tar.xz"; + sha256 = "1vjvajbra1m4zjbijn1nxj5x66hyv8q65874b3ajshb3lmv7rklj"; + name = "bomber-18.12.0.tar.xz"; }; }; bovo = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/bovo-18.08.1.tar.xz"; - sha256 = "1jwq9wjkdhy8bvkxg4lvb1m4qqw0zr84ws096nk6pccqk7xlkpr2"; - name = "bovo-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/bovo-18.12.0.tar.xz"; + sha256 = "1fslwk3zbxi16b1m7w7rbf8bgdhflnqrd6k90lpbwvlnxy6839iw"; + name = "bovo-18.12.0.tar.xz"; }; }; calendarsupport = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/calendarsupport-18.08.1.tar.xz"; - sha256 = "0hh8jr81hcqyhm9fp0s27g52077d9li8x8rrg3bd18lw3flib0fq"; - name = "calendarsupport-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/calendarsupport-18.12.0.tar.xz"; + sha256 = "180qzjlx0y4cfasmrf06ah8jdckbym1wrbmqlpyzjfy55mkwyf40"; + name = "calendarsupport-18.12.0.tar.xz"; }; }; cantor = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/cantor-18.08.1.tar.xz"; - sha256 = "05cvyrf17lvh85qrcg1yf8x2c9d3l9wgbvnlhw4idx06crhvwvbb"; - name = "cantor-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/cantor-18.12.0.tar.xz"; + sha256 = "0isddvdd8gvaasigyj3njyl7ckcqc8ciqp82awlland3avll6rby"; + name = "cantor-18.12.0.tar.xz"; }; }; cervisia = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/cervisia-18.08.1.tar.xz"; - sha256 = "1hir8ssr2yjjkly8kh8qdxqlgaa29q94kpsrk1crcdl67vrc8pph"; - name = "cervisia-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/cervisia-18.12.0.tar.xz"; + sha256 = "1r55zjfvlh5by9cv6pzcsbz71igbjr1pvyiyjkdhc36sbaiv0r3x"; + name = "cervisia-18.12.0.tar.xz"; }; }; dolphin = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/dolphin-18.08.1.tar.xz"; - sha256 = "1f8w1315kg5mnz0jfdbynw5kapg529kwr3qc98nh83q4vfrjr7yj"; - name = "dolphin-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/dolphin-18.12.0.tar.xz"; + sha256 = "10mzdk9i5x4kmsrpamm5q9ihy8ymii9w3iaccd7fgw4yy11qlzw3"; + name = "dolphin-18.12.0.tar.xz"; }; }; dolphin-plugins = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/dolphin-plugins-18.08.1.tar.xz"; - sha256 = "0wa09n3x255d3rn5sndvyybawj2aq0sm0fdvqz7sbnm1c67g6akd"; - name = "dolphin-plugins-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/dolphin-plugins-18.12.0.tar.xz"; + sha256 = "07pkslxhawl03030zjy889zjbym13d94nllg9fxvmd3402y2djiw"; + name = "dolphin-plugins-18.12.0.tar.xz"; }; }; dragon = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/dragon-18.08.1.tar.xz"; - sha256 = "1r9zdia4r1g77c456zi1yv3vjrccww6lqrhplwg90bw8091isc7s"; - name = "dragon-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/dragon-18.12.0.tar.xz"; + sha256 = "0j3d8a97ymh9lm6al0vv3abxalfw3wnf689i3mzkg7bdqkaaxz24"; + name = "dragon-18.12.0.tar.xz"; }; }; eventviews = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/eventviews-18.08.1.tar.xz"; - sha256 = "0h5aqjncsmhgjqsj65j12bx4rb5rf4604fs6h04lda8jrk2qla3y"; - name = "eventviews-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/eventviews-18.12.0.tar.xz"; + sha256 = "0r3y3z8zzzs1154wqi16kwb7vjijphscsnna76hpxcllw23cnb7v"; + name = "eventviews-18.12.0.tar.xz"; }; }; ffmpegthumbs = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/ffmpegthumbs-18.08.1.tar.xz"; - sha256 = "11gwrw3fm6di4z5a04jqxfvm176mh20h8pfpv0c0zq9qipr1khkc"; - name = "ffmpegthumbs-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/ffmpegthumbs-18.12.0.tar.xz"; + sha256 = "0wwrhj6xblz96g1rpqds4m0savp9n08w1xlwlhrm9xq81kajpw5x"; + name = "ffmpegthumbs-18.12.0.tar.xz"; }; }; filelight = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/filelight-18.08.1.tar.xz"; - sha256 = "03sz1bnz7w3b4227hvfidi225ci5i83z022fgkb632b0dp2l9m8p"; - name = "filelight-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/filelight-18.12.0.tar.xz"; + sha256 = "1vayrsgs5q1ky34kx5a8fi198b57478w68641xwhxmzwllssd9sx"; + name = "filelight-18.12.0.tar.xz"; }; }; granatier = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/granatier-18.08.1.tar.xz"; - sha256 = "062qh639n1k919n67k2xn5h829gr0ncczif9mffw8ggvqqrzh560"; - name = "granatier-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/granatier-18.12.0.tar.xz"; + sha256 = "145z4h7vwmg2zlvncp5dijm06m1d0z20hlmlz2zd69nfvs8w1lmz"; + name = "granatier-18.12.0.tar.xz"; }; }; grantlee-editor = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/grantlee-editor-18.08.1.tar.xz"; - sha256 = "0wl8ii23wh1xakf6vcsv7n259kw0b3lpz7qnfmhz8nwj3k890g9q"; - name = "grantlee-editor-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/grantlee-editor-18.12.0.tar.xz"; + sha256 = "0h5hcsnkh8gkqcnn620zs4kni5k8cpr65nbkkxybgxjf3kljapin"; + name = "grantlee-editor-18.12.0.tar.xz"; }; }; grantleetheme = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/grantleetheme-18.08.1.tar.xz"; - sha256 = "1ydi89smsim4lvgwclm9xsnldimsy45b69qsipz9vhhck4pccd7n"; - name = "grantleetheme-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/grantleetheme-18.12.0.tar.xz"; + sha256 = "1k5q30viyvwx4c8nl5gxk2sqxd9l703n6fnxw5dz5q7hzsxykzzx"; + name = "grantleetheme-18.12.0.tar.xz"; }; }; gwenview = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/gwenview-18.08.1.tar.xz"; - sha256 = "0p32v9y2gz5q4j1vz0yqw90qg8l7nbyzxqn7pqwrzbhlycsx7mp9"; - name = "gwenview-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/gwenview-18.12.0.tar.xz"; + sha256 = "1p9g6q5bfaxbk60k91wbjhbv0wwzin5ai3hyasl7rg3c6hisp2rf"; + name = "gwenview-18.12.0.tar.xz"; }; }; incidenceeditor = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/incidenceeditor-18.08.1.tar.xz"; - sha256 = "0da1jba66pvjar5wxcx2q9dhfwj2mlwk17h0j9xc9kgxj2y0bzx9"; - name = "incidenceeditor-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/incidenceeditor-18.12.0.tar.xz"; + sha256 = "0f313zw1n4dgaianmxnmd5d5bqad40izli20ab08lqhv9d03sdkh"; + name = "incidenceeditor-18.12.0.tar.xz"; }; }; juk = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/juk-18.08.1.tar.xz"; - sha256 = "17mylgsw11nc64y0if3imrs2hsxwfdflnn1a4f5p64awrzid04mc"; - name = "juk-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/juk-18.12.0.tar.xz"; + sha256 = "1jsxvcqpj87n6yv2v0a7rvmg832ayrk0fknmch04gc8bkb7w52az"; + name = "juk-18.12.0.tar.xz"; }; }; k3b = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/k3b-18.08.1.tar.xz"; - sha256 = "1vv7pr1i3vj778m763mv1bzrq29kaqm02hnllhgq4dcci3hafn6a"; - name = "k3b-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/k3b-18.12.0.tar.xz"; + sha256 = "1fmy94cda1nsqv5g4w3bnypx9c8ngrndbzf6l7l2pv5q889p73x1"; + name = "k3b-18.12.0.tar.xz"; }; }; kaccounts-integration = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kaccounts-integration-18.08.1.tar.xz"; - sha256 = "18nbj4vyakhxvzy35j4b7iap06lp7zwhfpylfpnshjbcrb724qzs"; - name = "kaccounts-integration-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kaccounts-integration-18.12.0.tar.xz"; + sha256 = "1wyjd7iv0z8q9adbgnkvwmz4zrhrz3wgkz0lp52i8j0511xby93r"; + name = "kaccounts-integration-18.12.0.tar.xz"; }; }; kaccounts-providers = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kaccounts-providers-18.08.1.tar.xz"; - sha256 = "0ygiyv5fxf6b62sfibm621cz5cxin6qa1mnjpdxfj72xj8p7dbd7"; - name = "kaccounts-providers-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kaccounts-providers-18.12.0.tar.xz"; + sha256 = "03kjjshbxgj1mj8vv60rbssn3kdf3gx9kqmgsbbwybxg46277w1r"; + name = "kaccounts-providers-18.12.0.tar.xz"; }; }; kaddressbook = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kaddressbook-18.08.1.tar.xz"; - sha256 = "0917d7m2nvgadkns8im7fzzqp2m5i21m4nrw75hv6bil7v0cshnn"; - name = "kaddressbook-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kaddressbook-18.12.0.tar.xz"; + sha256 = "0dfmwn6swa6m11ih52aj2r8zfma6jffy8gsqhaph4xg4ba58nmpj"; + name = "kaddressbook-18.12.0.tar.xz"; }; }; kajongg = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kajongg-18.08.1.tar.xz"; - sha256 = "0apjydg0q9yvvnlirhhvri2bqwzrkrq85fzphi49pr5ki3ah03dz"; - name = "kajongg-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kajongg-18.12.0.tar.xz"; + sha256 = "0k9nxcr2fpkrmckzc5fxani4l304fxj7kp80y2nrv1p5cagn2x7l"; + name = "kajongg-18.12.0.tar.xz"; }; }; kalarm = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kalarm-18.08.1.tar.xz"; - sha256 = "1558nls14a22pwjnk59fpgmb4ddrdvzf3rdhl0nf6kkgr0ma0p1w"; - name = "kalarm-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kalarm-18.12.0.tar.xz"; + sha256 = "1cmk6l8450sz3rfdk25p9dn26zcbhcrdwz9v242cpsndyvnl13i2"; + name = "kalarm-18.12.0.tar.xz"; }; }; kalarmcal = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kalarmcal-18.08.1.tar.xz"; - sha256 = "02shp4m85frjs4kp5n2kv3nz5frjfrckm7zkjlnwn6lrg6jz7q0f"; - name = "kalarmcal-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kalarmcal-18.12.0.tar.xz"; + sha256 = "0l90yxfkjwybff80z7zhgx4sbw7xz8nx0acg56avgrkh3230fv3i"; + name = "kalarmcal-18.12.0.tar.xz"; }; }; kalgebra = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kalgebra-18.08.1.tar.xz"; - sha256 = "1996vbcvbpkvmya291w2kxfjwkm3baqflx04drrglildsrn6q07w"; - name = "kalgebra-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kalgebra-18.12.0.tar.xz"; + sha256 = "0hc3k4zm50n39nvw6fki6997vzz56fwjkn61q48fkbzd4jvcfqni"; + name = "kalgebra-18.12.0.tar.xz"; }; }; kalzium = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kalzium-18.08.1.tar.xz"; - sha256 = "0sp89xi94xpix1gpz1s7qya1ki7lbbx93yr17bmhlp4dhyfqbzw5"; - name = "kalzium-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kalzium-18.12.0.tar.xz"; + sha256 = "0j3a3r1j4vc0ssdw60lvgkdwmh02zz07xakdgxr5jrys4fix23ci"; + name = "kalzium-18.12.0.tar.xz"; }; }; kamera = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kamera-18.08.1.tar.xz"; - sha256 = "03p94azchdgr19mbgpgkvb3rlddik3bjl6iy3j0yd99frlns15ck"; - name = "kamera-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kamera-18.12.0.tar.xz"; + sha256 = "098gg2v8bina5famp2bk0x8dakzz66zd0dxh8vjczjycvzac6hzd"; + name = "kamera-18.12.0.tar.xz"; }; }; kamoso = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kamoso-18.08.1.tar.xz"; - sha256 = "11hm8q2v3x1rhm2smiqm9gmscbpdkyfb6x4sl0xrnm36m7ps54qb"; - name = "kamoso-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kamoso-18.12.0.tar.xz"; + sha256 = "0f4hvbw216xmyavgakvydplcspqcyv1v9bv0pqvwdk1swk1jp0r3"; + name = "kamoso-18.12.0.tar.xz"; }; }; kanagram = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kanagram-18.08.1.tar.xz"; - sha256 = "0mq8qrvvn30axhizzlzhzp5vl9q1ys7s7p5v525flyyz9fs011dz"; - name = "kanagram-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kanagram-18.12.0.tar.xz"; + sha256 = "1xbb04i06qrffb6pxk05ksn8h1n08r9pyaf9nkhrymgv90l62739"; + name = "kanagram-18.12.0.tar.xz"; }; }; kapman = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kapman-18.08.1.tar.xz"; - sha256 = "0grq9yllpaa267lx654n39mj7ll0g2pj6s42fq7b7236naqyna3d"; - name = "kapman-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kapman-18.12.0.tar.xz"; + sha256 = "0shq8bjfixjx9gqid27cgiybx0anwgbm69gsrvlczmragswcqxwi"; + name = "kapman-18.12.0.tar.xz"; }; }; kapptemplate = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kapptemplate-18.08.1.tar.xz"; - sha256 = "1dp9831hzmh9gd3qwvfyb2ihindl5c42jvmmrhnmfbz1j199z98w"; - name = "kapptemplate-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kapptemplate-18.12.0.tar.xz"; + sha256 = "18q7lxkfim41lhzqwvv4ir2c45fhf9pxxajfwibg9a462b1jxk4a"; + name = "kapptemplate-18.12.0.tar.xz"; }; }; kate = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kate-18.08.1.tar.xz"; - sha256 = "1jsdk6jfff36fcb1x0vxl0iqa1xrl0400bm7fhp1gv9m553pkysa"; - name = "kate-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kate-18.12.0.tar.xz"; + sha256 = "15k66vipm1lqcmk73a44niz1279rkab3g23p9jqyvvbw41j1368l"; + name = "kate-18.12.0.tar.xz"; }; }; katomic = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/katomic-18.08.1.tar.xz"; - sha256 = "0cd8l7hn89xr5spq107nqxz7dx12drvv70siqx896d8lfpkmh96d"; - name = "katomic-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/katomic-18.12.0.tar.xz"; + sha256 = "183pgb7pphzmi3lgza4lm5crzf9rs6l2d6fl1xwzvvb3ik77ccqz"; + name = "katomic-18.12.0.tar.xz"; }; }; kbackup = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kbackup-18.08.1.tar.xz"; - sha256 = "15x75biiwixiw0j329pcxhh5sfyqm82x2rdfb0nqp0zz01cwicv6"; - name = "kbackup-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kbackup-18.12.0.tar.xz"; + sha256 = "1qwrgrrd408y7ipqfhajqfwcicn7pb32akvbls3rby17b2nwn16x"; + name = "kbackup-18.12.0.tar.xz"; }; }; kblackbox = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kblackbox-18.08.1.tar.xz"; - sha256 = "00xd6k9ndm1jbr1j2mhi8xfcxqdiwzwnb1cvr35a22r414lbc3cw"; - name = "kblackbox-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kblackbox-18.12.0.tar.xz"; + sha256 = "0hx5bd97k1k4hdyal6g7r7y1xk70sf0779vxfqnin1dpzhgnq2dq"; + name = "kblackbox-18.12.0.tar.xz"; }; }; kblocks = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kblocks-18.08.1.tar.xz"; - sha256 = "0y9hfxb9rpijpkm1r697v1w5q3gny8pa3ax5y0qq6695j2h7c52p"; - name = "kblocks-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kblocks-18.12.0.tar.xz"; + sha256 = "0f0mapx67gxiy5s9k60qhgc9sfr21hwy62wzdiw4ssbxfhhqv7fa"; + name = "kblocks-18.12.0.tar.xz"; }; }; kblog = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kblog-18.08.1.tar.xz"; - sha256 = "0ickxhz7y098zx88308774kkz8wf6v51ydlnbmnayb8lyaw8ms8i"; - name = "kblog-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kblog-18.12.0.tar.xz"; + sha256 = "1slrwablxhsjzl3vj714rzm7rp59vnd9d0ri0k7yvc1ykc4aj8v6"; + name = "kblog-18.12.0.tar.xz"; }; }; kbounce = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kbounce-18.08.1.tar.xz"; - sha256 = "1k2qmdhm3sllxhsz6hhs94fndm1lrifhh7md2lmws2l2977ymkpi"; - name = "kbounce-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kbounce-18.12.0.tar.xz"; + sha256 = "1r5rhlra9p89wn4mmjn81v7lgh78k53xfzhr0sz08dhg7qk2rb48"; + name = "kbounce-18.12.0.tar.xz"; }; }; kbreakout = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kbreakout-18.08.1.tar.xz"; - sha256 = "06mxh67pyg7fv8x152kd79xzrfnlw22x4x3iklhbngsk1cqsg62r"; - name = "kbreakout-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kbreakout-18.12.0.tar.xz"; + sha256 = "0bw84bl2r9am69zv0ik1rhqwcjzazfzwnwjg0zqzzwlyhww0ya5f"; + name = "kbreakout-18.12.0.tar.xz"; }; }; kbruch = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kbruch-18.08.1.tar.xz"; - sha256 = "0m4m1xqp2aqkqs7cgj8z5c6b3s64d330bfgsq7mnm2wakmc69x9g"; - name = "kbruch-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kbruch-18.12.0.tar.xz"; + sha256 = "156varmig28a3swk099k2c2l0hn8kbr1khz5cd9c9wdy46ln6w8n"; + name = "kbruch-18.12.0.tar.xz"; }; }; kcachegrind = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kcachegrind-18.08.1.tar.xz"; - sha256 = "0llqmziq0h6wx3inxc2rmph1qs68fb34q09fvhfasg43l8y8a6cm"; - name = "kcachegrind-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kcachegrind-18.12.0.tar.xz"; + sha256 = "1jvpn2ly2pn9pnv6zx7i8z0zn91lb2kf6q9linqmpag47qbg0p7y"; + name = "kcachegrind-18.12.0.tar.xz"; }; }; kcalc = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kcalc-18.08.1.tar.xz"; - sha256 = "139pjh31k9cy608h7yl9kxq48x6dsm5c0gcbndqc6nsjwd88ck04"; - name = "kcalc-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kcalc-18.12.0.tar.xz"; + sha256 = "15wdyv5sgnd9amar41k14mgyz8p4d1aba0kw7gphzl7c9gms0y70"; + name = "kcalc-18.12.0.tar.xz"; }; }; kcalcore = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kcalcore-18.08.1.tar.xz"; - sha256 = "0kf92imqm9lqisfy3i25qn0g588p35w23xl0vmx75i67pzr3jcjn"; - name = "kcalcore-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kcalcore-18.12.0.tar.xz"; + sha256 = "04y7bdrdcbz98waydi9r5hw25mdzy8a0pzzdsmp2ky2lj4shph4h"; + name = "kcalcore-18.12.0.tar.xz"; }; }; kcalutils = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kcalutils-18.08.1.tar.xz"; - sha256 = "1z346k9aniv3bq9c1dak3x5hzymi71ygns773r4agzm4kdn8ghwh"; - name = "kcalutils-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kcalutils-18.12.0.tar.xz"; + sha256 = "1w10np6g02f3hh3bn3zksbj335mrzy0a5wg4lk2hny06rakk0hh0"; + name = "kcalutils-18.12.0.tar.xz"; }; }; kcharselect = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kcharselect-18.08.1.tar.xz"; - sha256 = "06r9q03rs00zqs0dpb0wxa9663pc2i51hsf83c0z9jnkpq6sjijb"; - name = "kcharselect-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kcharselect-18.12.0.tar.xz"; + sha256 = "0s4yqylc5jhgl7s3cs8gf8bb4r7n8nhxhl502sbnamss11lx7gqw"; + name = "kcharselect-18.12.0.tar.xz"; }; }; kcolorchooser = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kcolorchooser-18.08.1.tar.xz"; - sha256 = "027afkj0mllvnwdrrfjnpp4769dp5ixrdmd17r59q2hja0wz6cpf"; - name = "kcolorchooser-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kcolorchooser-18.12.0.tar.xz"; + sha256 = "0za9isapgmbafmn5v6fwdw1vaafszwnia1iim9k4ga7bs9aakfhb"; + name = "kcolorchooser-18.12.0.tar.xz"; }; }; kcontacts = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kcontacts-18.08.1.tar.xz"; - sha256 = "1y0drw7n9mhyq84brqxz4rr666pqj5ww94f2i8k34chdzkcqsr52"; - name = "kcontacts-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kcontacts-18.12.0.tar.xz"; + sha256 = "1drp0rzhjbb9nqqjl9cmwpyqk8dgvnaw42rmn0cwla8l8qas5xs5"; + name = "kcontacts-18.12.0.tar.xz"; }; }; kcron = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kcron-18.08.1.tar.xz"; - sha256 = "1blalii8b6i8b1cknwcarbj84m6rrffsjamgnzyz6l81l43b0j9m"; - name = "kcron-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kcron-18.12.0.tar.xz"; + sha256 = "02fxsnka3d3456j99nsrgvkxpjd677xl0z7hmqwsr0zx3bx0krk7"; + name = "kcron-18.12.0.tar.xz"; }; }; kdav = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kdav-18.08.1.tar.xz"; - sha256 = "046h72gvcc9wxq0rn5ribf3lr03q6zq6acz2c3kxsbdw6kbypb2x"; - name = "kdav-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kdav-18.12.0.tar.xz"; + sha256 = "0fbw65yiskygbhhagsc48yrhdslg951fd13b6mzwf2ab55fw6vmf"; + name = "kdav-18.12.0.tar.xz"; }; }; kdebugsettings = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kdebugsettings-18.08.1.tar.xz"; - sha256 = "0n6lvccm803g9ilwwdka0srvak14i8lk5g149c6qmd73wywqdk84"; - name = "kdebugsettings-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kdebugsettings-18.12.0.tar.xz"; + sha256 = "1gdrc1x5bavdi6ljqv5wh1hwvys1r2v00xi555dfyijjryr7kd27"; + name = "kdebugsettings-18.12.0.tar.xz"; }; }; kde-dev-scripts = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kde-dev-scripts-18.08.1.tar.xz"; - sha256 = "1y162wn5mpi0c3wa8vjb2al2mizz292jzj22wvdzp19vliy32j95"; - name = "kde-dev-scripts-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kde-dev-scripts-18.12.0.tar.xz"; + sha256 = "03wmki422lw1r5i51gh17ha3w2gpdjv4ix7bndjakwq315iivlxi"; + name = "kde-dev-scripts-18.12.0.tar.xz"; }; }; kde-dev-utils = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kde-dev-utils-18.08.1.tar.xz"; - sha256 = "1w5r7w7s5iaaxaxicd42nh2dhmc7anfqpv9n92rrk1hwpmjbphg5"; - name = "kde-dev-utils-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kde-dev-utils-18.12.0.tar.xz"; + sha256 = "0x2ji7jd12b1blww2jz0709yl79pb3slglx7mp4yyfi66c5ngl1q"; + name = "kde-dev-utils-18.12.0.tar.xz"; }; }; kdeedu-data = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kdeedu-data-18.08.1.tar.xz"; - sha256 = "0gpg1haawwi1d1p1pwzx2127kkdpg4i833312cl637v5qgvg7xhc"; - name = "kdeedu-data-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kdeedu-data-18.12.0.tar.xz"; + sha256 = "1p3rjsdhf4hy9468515vkbihkj69s2gpz6fxk3rqvi03ksmpdi5x"; + name = "kdeedu-data-18.12.0.tar.xz"; }; }; kdegraphics-mobipocket = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kdegraphics-mobipocket-18.08.1.tar.xz"; - sha256 = "13jw2gn3wc946zdgr2hi1nsd6m518idn4q5wq0ym715mfbfs17zn"; - name = "kdegraphics-mobipocket-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kdegraphics-mobipocket-18.12.0.tar.xz"; + sha256 = "05gxnbrl4p1s6mccvp0482as4r41rhqsrfd84v57sqyd93mgzsji"; + name = "kdegraphics-mobipocket-18.12.0.tar.xz"; }; }; kdegraphics-thumbnailers = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kdegraphics-thumbnailers-18.08.1.tar.xz"; - sha256 = "0h9h5d81bjmjcgbxh3sy776rddpxxcwyj0jjix67q37kndbap4k0"; - name = "kdegraphics-thumbnailers-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kdegraphics-thumbnailers-18.12.0.tar.xz"; + sha256 = "096acsz560k238sfa54nyjydx5wlc0b92khi4ahmvaqmllzjc9p4"; + name = "kdegraphics-thumbnailers-18.12.0.tar.xz"; }; }; kdenetwork-filesharing = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kdenetwork-filesharing-18.08.1.tar.xz"; - sha256 = "1bfqk57d1xfqbig1r8cymlp0pgsfmrix5nr4m1a015rmpqnvb92d"; - name = "kdenetwork-filesharing-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kdenetwork-filesharing-18.12.0.tar.xz"; + sha256 = "183f8fir8rx7jr35gyj074k852s51gjsd2q7hp1bgkj7g5avql4i"; + name = "kdenetwork-filesharing-18.12.0.tar.xz"; }; }; kdenlive = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kdenlive-18.08.1.tar.xz"; - sha256 = "1ampvjlxn3q8l3mi4nap4lq3hgxzmp6ic88hzmkdj41vpm01flpf"; - name = "kdenlive-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kdenlive-18.12.0.tar.xz"; + sha256 = "0jknpfs7gql527pbj0nb1bxvhxpbk0gnyjx4g6wdhlmk87w2g0wp"; + name = "kdenlive-18.12.0.tar.xz"; }; }; kdepim-addons = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kdepim-addons-18.08.1.tar.xz"; - sha256 = "0fgggq0dl4qy0wha4jjarxgjly54s9fpqkm2macfq2bgvdbsjrgj"; - name = "kdepim-addons-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kdepim-addons-18.12.0.tar.xz"; + sha256 = "0dbys45cn00xism83x2j1ypidg5dp8zv29wx18a4bga4y8mfnrkp"; + name = "kdepim-addons-18.12.0.tar.xz"; }; }; kdepim-apps-libs = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kdepim-apps-libs-18.08.1.tar.xz"; - sha256 = "0v4vvrjh1amlrvmf61cjfb2yr1j4j0qypf5349spnnlwjjrxn2hw"; - name = "kdepim-apps-libs-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kdepim-apps-libs-18.12.0.tar.xz"; + sha256 = "18y3n602b6v1jyl18lvqalasf2v795ln31nn79ih1z4y49j1s67x"; + name = "kdepim-apps-libs-18.12.0.tar.xz"; }; }; kdepim-runtime = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kdepim-runtime-18.08.1.tar.xz"; - sha256 = "0133d86z1fggzg15jk2p8pg42zcv3khikpgdlyvz4si3canmvkwj"; - name = "kdepim-runtime-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kdepim-runtime-18.12.0.tar.xz"; + sha256 = "0vmwgbbnwipi62aciy52pdd4ygrgx3l87i5g5nspkb03wlb5jl51"; + name = "kdepim-runtime-18.12.0.tar.xz"; }; }; kdesdk-kioslaves = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kdesdk-kioslaves-18.08.1.tar.xz"; - sha256 = "1nn4bzywd42ijbzlcnkdlr84n1p6argrd1gz91yyyrhqark7ma76"; - name = "kdesdk-kioslaves-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kdesdk-kioslaves-18.12.0.tar.xz"; + sha256 = "0ca9cwxv836jl9crqik9s1v3dgk5z9jhvzxvbcvrbalvs1cyxg8b"; + name = "kdesdk-kioslaves-18.12.0.tar.xz"; }; }; kdesdk-thumbnailers = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kdesdk-thumbnailers-18.08.1.tar.xz"; - sha256 = "1c133n4qf9jkgzhccipspwk3r8mbja0k8556ng0wxnhayzmv2sx9"; - name = "kdesdk-thumbnailers-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kdesdk-thumbnailers-18.12.0.tar.xz"; + sha256 = "1q57c5i7pnrpd7g1dwrahac9lji9ljqyb60qkj9qx3v3fnr11v7f"; + name = "kdesdk-thumbnailers-18.12.0.tar.xz"; }; }; kdf = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kdf-18.08.1.tar.xz"; - sha256 = "1m5hwfhzvikh7isakbvzyc3y98zdky4iz8vdsi7nnyb6d8n2hbrr"; - name = "kdf-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kdf-18.12.0.tar.xz"; + sha256 = "1ds4z4adyaazmhbybq2f361qq02a8l73a9g2hwcrh95w0dcisyvp"; + name = "kdf-18.12.0.tar.xz"; }; }; kdialog = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kdialog-18.08.1.tar.xz"; - sha256 = "0s8a3y8sjhyq8lf3i8r6ligg1s9nbhxsd34vncw3lkbq60xkyhrr"; - name = "kdialog-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kdialog-18.12.0.tar.xz"; + sha256 = "04v2s3wlaihcm4c64kzcxmxs9niw6ghid0vdl4pw8h0ks1s8xz0g"; + name = "kdialog-18.12.0.tar.xz"; }; }; kdiamond = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kdiamond-18.08.1.tar.xz"; - sha256 = "0vcqdadb9kbmxnycaba6g9hiiyxqybqiw1i4zldlw5x4gnj7dcv2"; - name = "kdiamond-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kdiamond-18.12.0.tar.xz"; + sha256 = "0c11v3c7hxllg15h8mq18jl5lqprwwpnz04rjjggwzz8c4iz2kjs"; + name = "kdiamond-18.12.0.tar.xz"; }; }; keditbookmarks = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/keditbookmarks-18.08.1.tar.xz"; - sha256 = "10nzhsyia1q0m26icqb20qh8s8n6r5vlb5q498gw8dv3rzsmh6sf"; - name = "keditbookmarks-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/keditbookmarks-18.12.0.tar.xz"; + sha256 = "1ia69amq6dfidfgxq297xa10f3812spibb00wsv9dj4cp36y89mm"; + name = "keditbookmarks-18.12.0.tar.xz"; }; }; kfind = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kfind-18.08.1.tar.xz"; - sha256 = "15w4cdvz35yyfyfaxb4mnxynlbryixydkwmx7lkmhlwnk3zjmskr"; - name = "kfind-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kfind-18.12.0.tar.xz"; + sha256 = "0km2f88pw9ynqbxsl3pwfkk120ni0by2rsaldqp2h3a26kyc5gzk"; + name = "kfind-18.12.0.tar.xz"; }; }; kfloppy = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kfloppy-18.08.1.tar.xz"; - sha256 = "07v3q4jiw728s9akwhy27hczp4hxhp7f8c6g59gdqm0ply0vgxk6"; - name = "kfloppy-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kfloppy-18.12.0.tar.xz"; + sha256 = "0ng0d18dnnrdp9xccald0jn8hl40v2kshgmy8pnr4agl20aagh61"; + name = "kfloppy-18.12.0.tar.xz"; }; }; kfourinline = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kfourinline-18.08.1.tar.xz"; - sha256 = "03g8g0s2214fqkqp4lyh9m8f382s8xwzi0yqz0yigyq1w5igcl9p"; - name = "kfourinline-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kfourinline-18.12.0.tar.xz"; + sha256 = "01wjqyg7aw2wi7nrrqri3znb545hr1qcanzibjiakhb2pbx5db3z"; + name = "kfourinline-18.12.0.tar.xz"; }; }; kgeography = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kgeography-18.08.1.tar.xz"; - sha256 = "1pqs2sk88idzc8xr85qy689palkf5y5l4pfqkd9xfkb87041rl93"; - name = "kgeography-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kgeography-18.12.0.tar.xz"; + sha256 = "1fa2333xmxswlfjzl7d3ssl7s2hgwszhqxkdyi9db9lqxq0m3ckv"; + name = "kgeography-18.12.0.tar.xz"; }; }; kget = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kget-18.08.1.tar.xz"; - sha256 = "1ax6sdkpvzg37sp05fx083h0nn78a2zpfpr2l74j3qwq2yssy298"; - name = "kget-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kget-18.12.0.tar.xz"; + sha256 = "1f3ahslqcicgkhgdpdrvy9ydlsl1hwnnym7fw2v2k07h5mprw8hp"; + name = "kget-18.12.0.tar.xz"; }; }; kgoldrunner = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kgoldrunner-18.08.1.tar.xz"; - sha256 = "1wbdranw0fq8qynn13d0wkb7fckfzqbz2g920gyx2igw0bblcj0y"; - name = "kgoldrunner-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kgoldrunner-18.12.0.tar.xz"; + sha256 = "0cmcjmfhair649nbfx74qdmsf67lx4j53qkj0xsr7bijv52pi4br"; + name = "kgoldrunner-18.12.0.tar.xz"; }; }; kgpg = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kgpg-18.08.1.tar.xz"; - sha256 = "1i3g7x18khnyvwnvgpnv6xdfbv29w65x8d8ml60zb8siipbnlwb5"; - name = "kgpg-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kgpg-18.12.0.tar.xz"; + sha256 = "1hlcpgfcwpiyf1xfy62mris60cnws1mcgpni5nvvwdzdi4scad3g"; + name = "kgpg-18.12.0.tar.xz"; }; }; khangman = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/khangman-18.08.1.tar.xz"; - sha256 = "1nc9lbjxlwr4aqsl6idjyhqxd5wampcz7a6zgq6py03n8mr811qy"; - name = "khangman-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/khangman-18.12.0.tar.xz"; + sha256 = "0y05jjacnw2h70hjn5jbpnmcj53xgcx8304s39aa8zc1ry9jvsqq"; + name = "khangman-18.12.0.tar.xz"; }; }; khelpcenter = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/khelpcenter-18.08.1.tar.xz"; - sha256 = "1k60yqnpkplj0k0b8h27zyhviqs6ddwhygmv7cpmnwa1d7kvhdwi"; - name = "khelpcenter-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/khelpcenter-18.12.0.tar.xz"; + sha256 = "0cwxf6m3f6md4y51zpscxh89p9p9jzzsfslxh04y92p9g0l1qvwm"; + name = "khelpcenter-18.12.0.tar.xz"; }; }; kidentitymanagement = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kidentitymanagement-18.08.1.tar.xz"; - sha256 = "0w1lmfcjq2fb65l3vd9qzq037j7r3dd49aqh8bnrwkjslshy7iwz"; - name = "kidentitymanagement-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kidentitymanagement-18.12.0.tar.xz"; + sha256 = "1i0amb9m2vc00zaawv2wdyw7gzwz8lfw4bvz0mlnad4nrcmkvjyk"; + name = "kidentitymanagement-18.12.0.tar.xz"; }; }; kig = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kig-18.08.1.tar.xz"; - sha256 = "1haf21widyfi0afixyfczk944l048w8dvlmgkwvfqhmgiiz52g72"; - name = "kig-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kig-18.12.0.tar.xz"; + sha256 = "0zq7z4jj8bsmhjggjh7byjv74ry6caps9pviwqqcsrdrl5357kzi"; + name = "kig-18.12.0.tar.xz"; }; }; kigo = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kigo-18.08.1.tar.xz"; - sha256 = "1dmb3cmbi473wpkbnv895nyxxhqmp09ihghvxir77khjpmask04a"; - name = "kigo-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kigo-18.12.0.tar.xz"; + sha256 = "03kl5hn8b2qbbv436rd8slqwr5w4034wz7vvm9z9cmjbpxavls2q"; + name = "kigo-18.12.0.tar.xz"; }; }; killbots = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/killbots-18.08.1.tar.xz"; - sha256 = "184glirpf8jzy91769d13rck3vnh96s171h6sfqab755857wj960"; - name = "killbots-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/killbots-18.12.0.tar.xz"; + sha256 = "0w8xl73ir9a3zxvsj3027gdlh7mskns3f0bk4mspirwg761zn1hf"; + name = "killbots-18.12.0.tar.xz"; }; }; kimagemapeditor = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kimagemapeditor-18.08.1.tar.xz"; - sha256 = "1w0yinp58f7x4ss2m069736faagwil7ay8gd5w79a5frqizsj36d"; - name = "kimagemapeditor-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kimagemapeditor-18.12.0.tar.xz"; + sha256 = "0l17biqkq8jkc2vnnw51a6g13y29rnsfn9dx3afv88bdf2a52x1m"; + name = "kimagemapeditor-18.12.0.tar.xz"; }; }; kimap = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kimap-18.08.1.tar.xz"; - sha256 = "0na135np2li231kzxfjy4wb5bbgkkyll66x8jd4y0lxvc4cwipfd"; - name = "kimap-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kimap-18.12.0.tar.xz"; + sha256 = "04m6sd36k6w4iiqanxy49v06am11p5xcb253gk99pyfrssb596m5"; + name = "kimap-18.12.0.tar.xz"; }; }; kio-extras = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kio-extras-18.08.1.tar.xz"; - sha256 = "03q68bc53q656pw733g2j2wkbag6hbqpwszkap2h4pn011cihgyw"; - name = "kio-extras-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kio-extras-18.12.0.tar.xz"; + sha256 = "1sbl7m8c4fy63389bv19ck89nzxjpf0l2855sc81fzy3zig89b65"; + name = "kio-extras-18.12.0.tar.xz"; + }; + }; + kirigami-gallery = { + version = "18.12.0"; + src = fetchurl { + url = "${mirror}/stable/applications/18.12.0/src/kirigami-gallery-18.12.0.tar.xz"; + sha256 = "008ixa0kvqjjk98aq9mcapxd8d8svkjpz04v4ka64zwks8qyzdrk"; + name = "kirigami-gallery-18.12.0.tar.xz"; }; }; kiriki = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kiriki-18.08.1.tar.xz"; - sha256 = "1kc2flpfqvfijrazvnk7mk03myy7f7lqia1r9lxg1g3xx095jqhz"; - name = "kiriki-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kiriki-18.12.0.tar.xz"; + sha256 = "098gsl6pj8bdm29qa1w6pnyg7m25m0m2f97f7cwgqi1h4asyz9h8"; + name = "kiriki-18.12.0.tar.xz"; }; }; kiten = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kiten-18.08.1.tar.xz"; - sha256 = "1i1pgfxvcqh5jbbk39b6rlc0s67z2naw5glxhkg3nrvxy9yxw9n2"; - name = "kiten-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kiten-18.12.0.tar.xz"; + sha256 = "1lkaicfc5z59g6gvcgmkdwpfl2i622s26w3pf1w0cmlw1hnspblc"; + name = "kiten-18.12.0.tar.xz"; }; }; kitinerary = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kitinerary-18.08.1.tar.xz"; - sha256 = "0bv1nwwi2mc0l3vfvx29d46l7b876qf4bch9g84zmdcas37w786l"; - name = "kitinerary-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kitinerary-18.12.0.tar.xz"; + sha256 = "0q4fhfckvzlcza7r2gddygfn7f3dfj4kl82m644givb4394hjapd"; + name = "kitinerary-18.12.0.tar.xz"; }; }; kjumpingcube = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kjumpingcube-18.08.1.tar.xz"; - sha256 = "1qfzydbpd86zsb0yfy5xdaqlbh1awm70lg1nzbqn99rl47vsm85b"; - name = "kjumpingcube-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kjumpingcube-18.12.0.tar.xz"; + sha256 = "0j022vr1dj06s21cwxhsiv8xb1000l2yz2jz128rnkpr63b8darr"; + name = "kjumpingcube-18.12.0.tar.xz"; }; }; kldap = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kldap-18.08.1.tar.xz"; - sha256 = "1knf61whi1raj66z55a8535rj911na15zkq0vcb8djz6cg3xw29r"; - name = "kldap-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kldap-18.12.0.tar.xz"; + sha256 = "0359vzfhscqlha2vyaygqpai7qi924ircw290prwrmhn9jqzms5x"; + name = "kldap-18.12.0.tar.xz"; }; }; kleopatra = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kleopatra-18.08.1.tar.xz"; - sha256 = "0g65qxz6v1glh86fvgpb89ay1221qbnz97mnzw8fb26aar838s8y"; - name = "kleopatra-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kleopatra-18.12.0.tar.xz"; + sha256 = "1j1s7dmg5wadfd8z76i5l81drii0sjdynahkcm8jdz3gvrsd773k"; + name = "kleopatra-18.12.0.tar.xz"; }; }; klettres = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/klettres-18.08.1.tar.xz"; - sha256 = "0k5c9j9w0d95fzs7103nx13cxz9q5ivn34wq8px0ma9jaig1w1j9"; - name = "klettres-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/klettres-18.12.0.tar.xz"; + sha256 = "0gyd7vnm6mq7wy398h9nrny611pc6v4kksmdbhhsrkagvj4rvywq"; + name = "klettres-18.12.0.tar.xz"; }; }; klickety = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/klickety-18.08.1.tar.xz"; - sha256 = "1zx7f4hpcgfrfbgmmhfj9p9l604bzhg06zznfgq40774m4d5m992"; - name = "klickety-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/klickety-18.12.0.tar.xz"; + sha256 = "083w9lj6h6yxxk6vgmf72651vb423gakppbi7z7ii5i546miilyn"; + name = "klickety-18.12.0.tar.xz"; }; }; klines = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/klines-18.08.1.tar.xz"; - sha256 = "1wwvzvwshxj03s3ywpg65lfj32xcd3yj4y7fhdms8xjn0b341grc"; - name = "klines-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/klines-18.12.0.tar.xz"; + sha256 = "1v05ssjrb6x81c5nj9c8dpfqj9wr2m4mz9c883pnc5pjbc33fh0x"; + name = "klines-18.12.0.tar.xz"; }; }; kmag = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kmag-18.08.1.tar.xz"; - sha256 = "1a1xml73yhfrqzw37apgmf1f88x58ws09vfdrp8zchawskcm3yi2"; - name = "kmag-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kmag-18.12.0.tar.xz"; + sha256 = "0micbc4wqi23jc2bpf1kjzy8xafqkd8gp70hg83id7mlncq12pm7"; + name = "kmag-18.12.0.tar.xz"; }; }; kmahjongg = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kmahjongg-18.08.1.tar.xz"; - sha256 = "1rdimx9kdm9n3g4856672z0spwsj5ihd40yx17vbzc3lhyqnk0w1"; - name = "kmahjongg-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kmahjongg-18.12.0.tar.xz"; + sha256 = "1zv4dljkj1i4hxmy1cnyzpnipvdh6dmp6msmivgbsaz7yra1zqlx"; + name = "kmahjongg-18.12.0.tar.xz"; }; }; kmail = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kmail-18.08.1.tar.xz"; - sha256 = "12097jncdx5zdsr99lmsvhiymarymgbd004vmxm6rni0hq1aqzkl"; - name = "kmail-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kmail-18.12.0.tar.xz"; + sha256 = "0ivzl7cpjcavqybbd5jfd9gk7qfvnfrly8gi20lwg97s07cih42x"; + name = "kmail-18.12.0.tar.xz"; }; }; kmail-account-wizard = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kmail-account-wizard-18.08.1.tar.xz"; - sha256 = "0jzqqn07q0jsggss2r5pjgp0fhfgngvv0rjzyh12lzsn4l8iyd6z"; - name = "kmail-account-wizard-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kmail-account-wizard-18.12.0.tar.xz"; + sha256 = "04q3yrbarqqw5wd8waaacd4kb409y8k6rbwk0lsrr4gvs7b5h4jg"; + name = "kmail-account-wizard-18.12.0.tar.xz"; }; }; kmailtransport = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kmailtransport-18.08.1.tar.xz"; - sha256 = "196cjbnzqcp1ayqpn4vy8ah55nskhv07xrfrm8h0baxj90jd01xn"; - name = "kmailtransport-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kmailtransport-18.12.0.tar.xz"; + sha256 = "0i3rgw4pf143jnkxnds84j8yg7smhgf2c5qkc1vk37i05vg81r76"; + name = "kmailtransport-18.12.0.tar.xz"; }; }; kmbox = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kmbox-18.08.1.tar.xz"; - sha256 = "0sjl64cjr2dxvjklpdl2p25vjbvzi0w42m5s3fzlqam9avmckfia"; - name = "kmbox-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kmbox-18.12.0.tar.xz"; + sha256 = "03krrgzbvvhn0xcmbhx4whk347pxr26gqhnxh7mg82w5pzx7y6gm"; + name = "kmbox-18.12.0.tar.xz"; }; }; kmime = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kmime-18.08.1.tar.xz"; - sha256 = "00jxsnwkx4c9x1cm7w6r5z39d4962d0w6b8irdczix4r660xf56x"; - name = "kmime-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kmime-18.12.0.tar.xz"; + sha256 = "0kh1v62xxca6i6g48xznqrxfw4wfwqcbv338m0ybqr06w0kgcfr2"; + name = "kmime-18.12.0.tar.xz"; }; }; kmines = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kmines-18.08.1.tar.xz"; - sha256 = "0csjr16s6jjj6z0963kc5jqwywjf9mvsa8c7x751h76kci1x53b0"; - name = "kmines-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kmines-18.12.0.tar.xz"; + sha256 = "0lgzh1pa9g807jdq16k0a9n2akqgad0vgpx1zms6ldnaqvr7mm6w"; + name = "kmines-18.12.0.tar.xz"; }; }; kmix = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kmix-18.08.1.tar.xz"; - sha256 = "1i5wgdmr8sml9cqjlgmi2i4v8lgksa7pnp91cgj75bmcy68sv0gj"; - name = "kmix-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kmix-18.12.0.tar.xz"; + sha256 = "09m1d62w912ly6r8874b6ccimwdf6i9p2fyfb3pa5axc8d01lca9"; + name = "kmix-18.12.0.tar.xz"; }; }; kmousetool = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kmousetool-18.08.1.tar.xz"; - sha256 = "0drpzdsry3xj4wm50850wf9rg3banbfaspbrmj1vwinbyz6f7pwz"; - name = "kmousetool-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kmousetool-18.12.0.tar.xz"; + sha256 = "00nwk11w7ljn22bfh06l109gw8yhl9vccgwimqhyplq0p8c3cnb0"; + name = "kmousetool-18.12.0.tar.xz"; }; }; kmouth = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kmouth-18.08.1.tar.xz"; - sha256 = "0ywadz614w308vsss7b25xx4ddqyabr15miz9x7izffh67dhvm97"; - name = "kmouth-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kmouth-18.12.0.tar.xz"; + sha256 = "0ig1wxaxwjj6qv7k2djdzhlnbbx74yk5f1sk42qx6csprl2bgp39"; + name = "kmouth-18.12.0.tar.xz"; }; }; kmplot = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kmplot-18.08.1.tar.xz"; - sha256 = "1287pk524lfqvadq2rc8226v9qiwqh80fj1gjhsw6y3vhj88dpvg"; - name = "kmplot-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kmplot-18.12.0.tar.xz"; + sha256 = "1mn7qrqwhwna9znprhb6fb2h127lcgjkx6m9csi8g11kklj95zi0"; + name = "kmplot-18.12.0.tar.xz"; }; }; knavalbattle = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/knavalbattle-18.08.1.tar.xz"; - sha256 = "0jxzgv06mysjalm0gfig3h6a9b84nkrq1qchi47h9x8cfaspba9r"; - name = "knavalbattle-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/knavalbattle-18.12.0.tar.xz"; + sha256 = "16v4q2hn4d2d8iqj9mim0y8azx4nraja9a6fhym2h5nzqsz253gk"; + name = "knavalbattle-18.12.0.tar.xz"; }; }; knetwalk = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/knetwalk-18.08.1.tar.xz"; - sha256 = "1bg4jaijvhb312cpwrfr4chmxj3fcj3k9caw5xwzrgdgw7prrbax"; - name = "knetwalk-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/knetwalk-18.12.0.tar.xz"; + sha256 = "1pgk7wnll793hmjmc0r416vvrgpicyyf88g459a5ybmj28hi5xqi"; + name = "knetwalk-18.12.0.tar.xz"; + }; + }; + knights = { + version = "18.12.0"; + src = fetchurl { + url = "${mirror}/stable/applications/18.12.0/src/knights-18.12.0.tar.xz"; + sha256 = "10p994q5rycs3p5yn6r0gn8fjj3m8gsrx2gdvzdavizbsp5xv0qb"; + name = "knights-18.12.0.tar.xz"; }; }; knotes = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/knotes-18.08.1.tar.xz"; - sha256 = "1cihancavh5z5781gy6h8cikwbsw2p5hb2wbwakzjs3ld31nsjcv"; - name = "knotes-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/knotes-18.12.0.tar.xz"; + sha256 = "1r0p5k66gadglm329dcmr6x93wr56z32r03v8zd2r4ffbvp2hvqr"; + name = "knotes-18.12.0.tar.xz"; }; }; kolf = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kolf-18.08.1.tar.xz"; - sha256 = "1ngzjmlhx471rfy486fpglpihydskrvwiqnl6xrp6fw1wg9pbd6b"; - name = "kolf-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kolf-18.12.0.tar.xz"; + sha256 = "0j5scf9ynq71z5pcbiqm13a3asz62man5nirjxr9fcj4mb1zirfk"; + name = "kolf-18.12.0.tar.xz"; }; }; kollision = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kollision-18.08.1.tar.xz"; - sha256 = "0is63m9zw8s53pf73c2a7f2wkvrsg70wk49x6rpzb28jmsgm1xi2"; - name = "kollision-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kollision-18.12.0.tar.xz"; + sha256 = "1zifm52q8yc2l5mqrc7wnddz9a0r1yz4dnk85c9dj2cndk8jz05p"; + name = "kollision-18.12.0.tar.xz"; }; }; kolourpaint = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kolourpaint-18.08.1.tar.xz"; - sha256 = "101vz981kl006q8kirs9d9bsp1bpjzcl22bbswgjny6niqlzd5lm"; - name = "kolourpaint-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kolourpaint-18.12.0.tar.xz"; + sha256 = "1m0j0bdcrhhk8k1imnz7xm33yi8dcbsx432866ikh31l68i44wgc"; + name = "kolourpaint-18.12.0.tar.xz"; }; }; kompare = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kompare-18.08.1.tar.xz"; - sha256 = "0ksdf5c6a3rhq0r8g8hiai53pzk37jiicislfik6y8f71rq0crqv"; - name = "kompare-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kompare-18.12.0.tar.xz"; + sha256 = "02f4laclz3vhgbyzfxhi3f79k62z27fwa5qhdwwsvbn1xlgzbpx4"; + name = "kompare-18.12.0.tar.xz"; }; }; konqueror = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/konqueror-18.08.1.tar.xz"; - sha256 = "0bz9vyagcrm7yihrx464hkf30y5rx6p9cvx8hq0sblvb7m4308y7"; - name = "konqueror-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/konqueror-18.12.0.tar.xz"; + sha256 = "0yzldqi0i1hiw33ppiccn8vpvy5ygf2vf4m3awfcj2376bzz7d4r"; + name = "konqueror-18.12.0.tar.xz"; }; }; konquest = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/konquest-18.08.1.tar.xz"; - sha256 = "1y3afkna2xg47qk9iwh3gsxbp1plf5y7k87svk8nzbh6aa8pillx"; - name = "konquest-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/konquest-18.12.0.tar.xz"; + sha256 = "1w7r1a7ilakz9k0f1z4jrfsjscf9z8l18rdfry5b1h8zz70j5j0z"; + name = "konquest-18.12.0.tar.xz"; }; }; konsole = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/konsole-18.08.1.tar.xz"; - sha256 = "05i9mkw4ygpy6ilqkkm5s7m9kva9ds0gr5gszci7z52m7y67s27d"; - name = "konsole-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/konsole-18.12.0.tar.xz"; + sha256 = "04qmldzfb0qjwddz56nv20gffi8z6vhm0vsvqd59q5nhkj9shnr3"; + name = "konsole-18.12.0.tar.xz"; }; }; kontact = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kontact-18.08.1.tar.xz"; - sha256 = "136sfr6gwf2cdlc54hc5p1wzcrjpnan0rzmzs21cwpp9gsvmsjvq"; - name = "kontact-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kontact-18.12.0.tar.xz"; + sha256 = "0i9hj2rrwa5vzzh7p586d7vkzgk69inq3c7bvvjr6lhy0xrcy9cb"; + name = "kontact-18.12.0.tar.xz"; }; }; kontactinterface = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kontactinterface-18.08.1.tar.xz"; - sha256 = "1w96wyr5kinaghnaima1pcq5hz8qyzvvyjpsk3dg8h3is86npvkb"; - name = "kontactinterface-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kontactinterface-18.12.0.tar.xz"; + sha256 = "05kx0jrxh13f42az6p9kj90wyqjl3ansqni9pa06fd1klq0ssncz"; + name = "kontactinterface-18.12.0.tar.xz"; }; }; kopete = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kopete-18.08.1.tar.xz"; - sha256 = "0i38hvnp1qiwva6gd3p7zs962bhi5fviysr8wzm7296f1hv1rz4k"; - name = "kopete-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kopete-18.12.0.tar.xz"; + sha256 = "1xzriv2zqpf7vzny2k7qn39slx0b6cls8414c757ppd9ai4yh32a"; + name = "kopete-18.12.0.tar.xz"; }; }; korganizer = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/korganizer-18.08.1.tar.xz"; - sha256 = "0wdpcjar64f8bii3xbbj08dfnd0290xwdvlr09p1pfmlllp09l0v"; - name = "korganizer-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/korganizer-18.12.0.tar.xz"; + sha256 = "0pk8psl90xmb06y0h87ar35kbqr9pjl31l05h01ig32w1vr0rw8c"; + name = "korganizer-18.12.0.tar.xz"; }; }; kpat = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kpat-18.08.1.tar.xz"; - sha256 = "0cmdfmd8pcwwwq4hjcfjscdl36p9gmw9shmqimjnqm60i5ivlz65"; - name = "kpat-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kpat-18.12.0.tar.xz"; + sha256 = "18q0pa4aijjkgjcg3v1v7ap2nvyavqsgh4s672v74jrxijd353gw"; + name = "kpat-18.12.0.tar.xz"; }; }; kpimtextedit = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kpimtextedit-18.08.1.tar.xz"; - sha256 = "0v47hb9nvx3bq3ybsqng6546qxk5yi66kd0mm2g7bdx9iq060x0j"; - name = "kpimtextedit-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kpimtextedit-18.12.0.tar.xz"; + sha256 = "0fg3cfh6v2hkhca9yb2kcvc9rq7f94a2wxkyi6cx88r3k3plh212"; + name = "kpimtextedit-18.12.0.tar.xz"; }; }; kpkpass = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kpkpass-18.08.1.tar.xz"; - sha256 = "11d125rd35p44phksxrbzaixasgrsa4z9ym98h69ylyk2mm8h9lk"; - name = "kpkpass-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kpkpass-18.12.0.tar.xz"; + sha256 = "07rmjzgkww405f0f16w3fgd5kwz335xbl9gjlc1lkh6lhddmbjc6"; + name = "kpkpass-18.12.0.tar.xz"; }; }; kqtquickcharts = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kqtquickcharts-18.08.1.tar.xz"; - sha256 = "1qki34i42hzr0zg0hydg4axsakfl7fydl23sn2xlvxyixw8yvcwi"; - name = "kqtquickcharts-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kqtquickcharts-18.12.0.tar.xz"; + sha256 = "01vdg2l48521pgkkx7h1vkgbrjl7gpzzinldk3aa7ki0997rff6h"; + name = "kqtquickcharts-18.12.0.tar.xz"; }; }; krdc = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/krdc-18.08.1.tar.xz"; - sha256 = "05fkpwcl1ivprvqy8x1h8akc2fxqnfh80vbis1k1gy8wanizigg9"; - name = "krdc-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/krdc-18.12.0.tar.xz"; + sha256 = "0yvk15grdk82flf7s9zsfgfhrmcy9wvcjhgdqjng2m9hd9sviix4"; + name = "krdc-18.12.0.tar.xz"; }; }; kreversi = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kreversi-18.08.1.tar.xz"; - sha256 = "1srn6czbhmlglnmnkg9pl9qs1b98ckfralydivk14y40m24s4j0b"; - name = "kreversi-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kreversi-18.12.0.tar.xz"; + sha256 = "04mpkpa8lar7l8blrgkz9n5xzq0br15qxxginh3hgp9vcp83njpb"; + name = "kreversi-18.12.0.tar.xz"; }; }; krfb = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/krfb-18.08.1.tar.xz"; - sha256 = "0p4jyl8dya1xvhisv30h86hnjyjc9sqaqj0d2zx447nqm479k9kw"; - name = "krfb-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/krfb-18.12.0.tar.xz"; + sha256 = "107z3bwq5xb2l4p88qpv9zibjzbgdbhf3d13bp220vnpwkwaxhpm"; + name = "krfb-18.12.0.tar.xz"; }; }; kross-interpreters = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kross-interpreters-18.08.1.tar.xz"; - sha256 = "1vkai4v553anbbdb38rccfg65zww93gw2v05kmr0hk62n13lqbh2"; - name = "kross-interpreters-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kross-interpreters-18.12.0.tar.xz"; + sha256 = "1xr7cb3v40lm2wh78vhzxw3v34g52ngrd1baf4g4yi00y85y42bf"; + name = "kross-interpreters-18.12.0.tar.xz"; }; }; kruler = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kruler-18.08.1.tar.xz"; - sha256 = "13gksm8mpnlvsi5v4a4fpbqb4mxq3l6giycwryi0qrh6bw33xak9"; - name = "kruler-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kruler-18.12.0.tar.xz"; + sha256 = "0ms875n8rr19lvvbmq7jjbbgd4l4p4k8fqxhay7wil2mgdpkd087"; + name = "kruler-18.12.0.tar.xz"; }; }; kshisen = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kshisen-18.08.1.tar.xz"; - sha256 = "07w7rps4wh8ibhjnk1s80x9p1mvnl5yw37fnjz3byknk2a10lcm4"; - name = "kshisen-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kshisen-18.12.0.tar.xz"; + sha256 = "0bd9wbn343glgsf6qnyqqdhqrkw61lywgnjslsmc4bb1parka8ww"; + name = "kshisen-18.12.0.tar.xz"; }; }; ksirk = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/ksirk-18.08.1.tar.xz"; - sha256 = "0rqjxfrnbbmcx07l0rlyfv8mlka5hm4a59q8zsk6x2vii18yhi49"; - name = "ksirk-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/ksirk-18.12.0.tar.xz"; + sha256 = "1nm8y05im0h6vdkdqlbh21ci68dalan7qmjiiwamrzc5dsvh9lwi"; + name = "ksirk-18.12.0.tar.xz"; }; }; ksmtp = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/ksmtp-18.08.1.tar.xz"; - sha256 = "0kznmx1qbv3kf0cqxwqgfwy1k79awrf6v46ni97h2fwrw90af9w9"; - name = "ksmtp-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/ksmtp-18.12.0.tar.xz"; + sha256 = "1caqqml7q41rk49mxq0wj439h87ln827jvxsbiv11qphkp6041y4"; + name = "ksmtp-18.12.0.tar.xz"; }; }; ksnakeduel = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/ksnakeduel-18.08.1.tar.xz"; - sha256 = "0l0b94mx948zas3q27qn2dpvwfiqyd08zv2izl947prwg4mvmb0q"; - name = "ksnakeduel-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/ksnakeduel-18.12.0.tar.xz"; + sha256 = "06acl0bc87fcixkj67l4n4csa060lnaqkh8p3s7r3zccsy660ya4"; + name = "ksnakeduel-18.12.0.tar.xz"; }; }; kspaceduel = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kspaceduel-18.08.1.tar.xz"; - sha256 = "1fjk0i2f72kzzg321w96989nqw0zfvv9iyv28ywg2pjb62nj9z2x"; - name = "kspaceduel-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kspaceduel-18.12.0.tar.xz"; + sha256 = "08dbmwbjqy8d0xidxipadndi0lxm1n2h0dxksjk8imsprz5r4j2l"; + name = "kspaceduel-18.12.0.tar.xz"; }; }; ksquares = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/ksquares-18.08.1.tar.xz"; - sha256 = "0m30yw3hwh9jmwfwabnmjg2l19q4c4b8qcxp2ywp2xzxggvs3ssd"; - name = "ksquares-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/ksquares-18.12.0.tar.xz"; + sha256 = "0a6kf3arxvakd7mcr6xxasls8gmgc16gsnm0bjvviaxfc9f3wx8x"; + name = "ksquares-18.12.0.tar.xz"; }; }; ksudoku = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/ksudoku-18.08.1.tar.xz"; - sha256 = "1ma0009prjmi59jym0qbfqan7iyp3h4pa7q5sdqykk77mlqm1z81"; - name = "ksudoku-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/ksudoku-18.12.0.tar.xz"; + sha256 = "1bm4lx5w4d3drgydqz2wxi3gh2778q8nl3k6ac4pm4iq8amgmgi6"; + name = "ksudoku-18.12.0.tar.xz"; }; }; ksystemlog = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/ksystemlog-18.08.1.tar.xz"; - sha256 = "0c05gzqn51mg7ag6nyir1z3jdy5wd4bfka8lx2gigf6kjqyq4yny"; - name = "ksystemlog-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/ksystemlog-18.12.0.tar.xz"; + sha256 = "0gh83ih9y0ydhm4g2drbcjkqh58g5a1flg1zqxr7rak8kf1pchnm"; + name = "ksystemlog-18.12.0.tar.xz"; }; }; kteatime = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kteatime-18.08.1.tar.xz"; - sha256 = "0przpgn2kwvnmfsqxncb1wx4xxr696j6zpgwwx3bhqfd89dc0bgm"; - name = "kteatime-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kteatime-18.12.0.tar.xz"; + sha256 = "1p4a3kahsjgfw9f6mw16bzz1bzk1jnssgvhzqh9ragqyp5qpn3s3"; + name = "kteatime-18.12.0.tar.xz"; }; }; ktimer = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/ktimer-18.08.1.tar.xz"; - sha256 = "0bwkxl619d4gar2piyk63lds85sz43gghg02cifsjvdvjfqfqbhp"; - name = "ktimer-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/ktimer-18.12.0.tar.xz"; + sha256 = "1lv64bk64k7nb2y9qahc45cg3n51qrb4ahk5l9mrbj9q5yvm1acs"; + name = "ktimer-18.12.0.tar.xz"; }; }; ktnef = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/ktnef-18.08.1.tar.xz"; - sha256 = "184isgr9c5amwrlzlkji9q0dhl06936r2axdn5kjy2shbn7j7hz2"; - name = "ktnef-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/ktnef-18.12.0.tar.xz"; + sha256 = "1ca9gga65h9kygfcsr1yvy50ccq3587scml36p740iwrxms8lrcb"; + name = "ktnef-18.12.0.tar.xz"; }; }; ktouch = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/ktouch-18.08.1.tar.xz"; - sha256 = "1z23i7h6s31b3az6fk22whp1zs7np20wji5bcwvck1cv5a0nlpvc"; - name = "ktouch-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/ktouch-18.12.0.tar.xz"; + sha256 = "1221xagypm1j56lx2g4845wrw0w01f2s4x8r3jwr32wzxvi8bxs3"; + name = "ktouch-18.12.0.tar.xz"; }; }; ktp-accounts-kcm = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/ktp-accounts-kcm-18.08.1.tar.xz"; - sha256 = "1pnq61vjvzs3lnxf52ski36arxyy5930gdh3858d7nq66dqcvw19"; - name = "ktp-accounts-kcm-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/ktp-accounts-kcm-18.12.0.tar.xz"; + sha256 = "0bx97zalwk78340klgh87rb5fadma8flg6q0bg436j01dsld0s0p"; + name = "ktp-accounts-kcm-18.12.0.tar.xz"; }; }; ktp-approver = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/ktp-approver-18.08.1.tar.xz"; - sha256 = "0sxp79rscfph5iscbpcqyp08szfipnsb0a3k4idlxfxp8bxv1kr2"; - name = "ktp-approver-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/ktp-approver-18.12.0.tar.xz"; + sha256 = "1cvixdcws126x7wll57dv6w78p3fb06lgd411i9jf7n02sx3l09q"; + name = "ktp-approver-18.12.0.tar.xz"; }; }; ktp-auth-handler = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/ktp-auth-handler-18.08.1.tar.xz"; - sha256 = "18lnffiq0wh02j140ya3474sbq6nbb5yj6yavhm1dl0y0pap4mxl"; - name = "ktp-auth-handler-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/ktp-auth-handler-18.12.0.tar.xz"; + sha256 = "0zfdq7q1v48vcaj4raz5r6l400xhz7ngjylg3kd7jabarljjv2gs"; + name = "ktp-auth-handler-18.12.0.tar.xz"; }; }; ktp-call-ui = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/ktp-call-ui-18.08.1.tar.xz"; - sha256 = "1mqgwblz86qbdfhlzncc5wzvqwhki4kx5afbihgynjr13d4jjldp"; - name = "ktp-call-ui-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/ktp-call-ui-18.12.0.tar.xz"; + sha256 = "1q9z6g0djk7mszy48bwrw4mvja15xkcg6x88391sw1lvanps9hmk"; + name = "ktp-call-ui-18.12.0.tar.xz"; }; }; ktp-common-internals = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/ktp-common-internals-18.08.1.tar.xz"; - sha256 = "1r4ac7q8hpsldwagz4hsslsx962vxq8hmlhjs5r5h5c89r2qhpil"; - name = "ktp-common-internals-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/ktp-common-internals-18.12.0.tar.xz"; + sha256 = "00smq4q4m8hvvfaz0b9iyxxz3dl15qs0is6zbkh4scvxxp54n056"; + name = "ktp-common-internals-18.12.0.tar.xz"; }; }; ktp-contact-list = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/ktp-contact-list-18.08.1.tar.xz"; - sha256 = "09zfmqhpm907x1fcd3v7cvbgxx8sy1krjyidand77adl8ayiq59c"; - name = "ktp-contact-list-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/ktp-contact-list-18.12.0.tar.xz"; + sha256 = "0kyllg9f0kj1w00jhk2khmsfdqqixnz8s74jvg5fjw8bbibjbn3y"; + name = "ktp-contact-list-18.12.0.tar.xz"; }; }; ktp-contact-runner = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/ktp-contact-runner-18.08.1.tar.xz"; - sha256 = "0cv65v2kkfqg6kny3zl3k0kg5af3wbi42jjni0r37rsgaknmg45x"; - name = "ktp-contact-runner-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/ktp-contact-runner-18.12.0.tar.xz"; + sha256 = "1hpapg3fnmwsgai7jb9kbh5f71hp8qfzphgczcmf6h5151g2l6jj"; + name = "ktp-contact-runner-18.12.0.tar.xz"; }; }; ktp-desktop-applets = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/ktp-desktop-applets-18.08.1.tar.xz"; - sha256 = "04pkknx46zkn5v7946s23n4m1gr28w1cwpsyz8mkww8xfxk52x2y"; - name = "ktp-desktop-applets-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/ktp-desktop-applets-18.12.0.tar.xz"; + sha256 = "1dfcjjmbplgx7b45q9vklq8kvc0ajclzy6cmyq3maj577747h5xz"; + name = "ktp-desktop-applets-18.12.0.tar.xz"; }; }; ktp-filetransfer-handler = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/ktp-filetransfer-handler-18.08.1.tar.xz"; - sha256 = "07m25ydhpa92d6pqgrhj6mvhirsf6c1i1xnxjmybrmf8v4cy1z8v"; - name = "ktp-filetransfer-handler-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/ktp-filetransfer-handler-18.12.0.tar.xz"; + sha256 = "1dzrzv6nmv6ighiqq8hi9crasnqdbqimg3qdssyryxrqs64m9h29"; + name = "ktp-filetransfer-handler-18.12.0.tar.xz"; }; }; ktp-kded-module = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/ktp-kded-module-18.08.1.tar.xz"; - sha256 = "0f8m3avph7w8yrlgpwsf6ykgbzzj7mrh973v2w6gw2iwz2ps0bbm"; - name = "ktp-kded-module-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/ktp-kded-module-18.12.0.tar.xz"; + sha256 = "0720yayzz4rwrmplwjpq6bfb86k0jhmxc5k25yqj9fg7n6w2qsx3"; + name = "ktp-kded-module-18.12.0.tar.xz"; }; }; ktp-send-file = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/ktp-send-file-18.08.1.tar.xz"; - sha256 = "1d9k2xmyrxk4s6dr1a0dgi4j4j5y5f73r57aldr5k821w425ssmg"; - name = "ktp-send-file-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/ktp-send-file-18.12.0.tar.xz"; + sha256 = "0jfy8qqm6n5pm2s24pbvxmmcibxxq71gggg4xf0miqkhdvx5b9kw"; + name = "ktp-send-file-18.12.0.tar.xz"; }; }; ktp-text-ui = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/ktp-text-ui-18.08.1.tar.xz"; - sha256 = "07ydrwsg2xv6vxsp6n2li6d5dfc92bdikdjqq266dqb35mb6wbx4"; - name = "ktp-text-ui-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/ktp-text-ui-18.12.0.tar.xz"; + sha256 = "14ln91srqfkk0fgp197wvlqxgagw23x4h94j1v1m51pia0v6226b"; + name = "ktp-text-ui-18.12.0.tar.xz"; }; }; ktuberling = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/ktuberling-18.08.1.tar.xz"; - sha256 = "176fdw99ni02nz3kv62dbiw7887a5kvmxsm8bg3viwyymcs8aay8"; - name = "ktuberling-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/ktuberling-18.12.0.tar.xz"; + sha256 = "0ms20qffd5mwlrxbd8ajb0lx3ny7mhlx25n59w2paq2x313qcsfk"; + name = "ktuberling-18.12.0.tar.xz"; }; }; kturtle = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kturtle-18.08.1.tar.xz"; - sha256 = "1r3w5hbzw2f4794j690wgm7x3dfxfyqnaylhjcrxqmqydkc54w2c"; - name = "kturtle-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kturtle-18.12.0.tar.xz"; + sha256 = "0ik44282gc6rmzsg6xv4fvpx1yzb4y4gv7jmslxgwi6rwc1q0m5v"; + name = "kturtle-18.12.0.tar.xz"; }; }; kubrick = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kubrick-18.08.1.tar.xz"; - sha256 = "0nwd0n8rx7dzbwjvkhnmvb2g4g7lasng7745klcdwk40ww223b60"; - name = "kubrick-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kubrick-18.12.0.tar.xz"; + sha256 = "0h4jx41wawbifdx7mzqbsx9nfrn2r9rkb01y0d63f5s2835hs2yc"; + name = "kubrick-18.12.0.tar.xz"; }; }; kwalletmanager = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kwalletmanager-18.08.1.tar.xz"; - sha256 = "08hr7ii6dybbmipppay2gxiwak8rqbrxrwbjz0206cyav16bbp7q"; - name = "kwalletmanager-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kwalletmanager-18.12.0.tar.xz"; + sha256 = "0znbrp1hk7jky9y3p9bc47sqn8mqd54x5j8kw52sg9v4428aag09"; + name = "kwalletmanager-18.12.0.tar.xz"; }; }; kwave = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kwave-18.08.1.tar.xz"; - sha256 = "1gsxzpf8ij7bw6s4dbdl8kvyz21wy76dxi4wqwdggi29gvxzpi76"; - name = "kwave-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kwave-18.12.0.tar.xz"; + sha256 = "00h5i0iax9hd79pw71wvv4p75rv6z61zpfg2s4n6zqjx8c312rhh"; + name = "kwave-18.12.0.tar.xz"; }; }; kwordquiz = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/kwordquiz-18.08.1.tar.xz"; - sha256 = "0bkxvw2g64r2k87m05mdxwh25lbixcga406x9i64z5dmgpsb7d9m"; - name = "kwordquiz-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/kwordquiz-18.12.0.tar.xz"; + sha256 = "0a0i7khsvn68rxwwm3q5h4ymf6j3bdm3sc3q3z74rj3n0s03dnww"; + name = "kwordquiz-18.12.0.tar.xz"; }; }; libgravatar = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/libgravatar-18.08.1.tar.xz"; - sha256 = "0axmf5ph5ahs4124fi016hjj559472k2apgfsbnf9q80d6y25lgf"; - name = "libgravatar-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/libgravatar-18.12.0.tar.xz"; + sha256 = "077qkpsg2v77mzg2q5jw7fr6sss07x5998f9x65pqgqlc9b6h494"; + name = "libgravatar-18.12.0.tar.xz"; }; }; libkcddb = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/libkcddb-18.08.1.tar.xz"; - sha256 = "1qy3zid9n7irkiz6vizmhwljrg3wcxxgcch58nmacg7fdxwcnnn1"; - name = "libkcddb-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/libkcddb-18.12.0.tar.xz"; + sha256 = "15dmbb5cvr9rcaspizrc2laxkwhfrsnlczdns0biq3lysajblwfa"; + name = "libkcddb-18.12.0.tar.xz"; }; }; libkcompactdisc = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/libkcompactdisc-18.08.1.tar.xz"; - sha256 = "075i81gpb4c1wgzbv6nnvhgkz2sww0y5zqh8sxw67r46rz4rjwak"; - name = "libkcompactdisc-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/libkcompactdisc-18.12.0.tar.xz"; + sha256 = "1jrw16hbp8fn48l70gqxpiy6iwpisk087sixvs3cbn94dmczgpka"; + name = "libkcompactdisc-18.12.0.tar.xz"; }; }; libkdcraw = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/libkdcraw-18.08.1.tar.xz"; - sha256 = "0fp01s9fw3m9li5v8cd2zmvy6xrysdqddzcal1xm5df2qj6xnk1d"; - name = "libkdcraw-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/libkdcraw-18.12.0.tar.xz"; + sha256 = "0n3b5blda31gf38hyplpb29mp6aa187adgqqyijzhnvvm1mfwa5z"; + name = "libkdcraw-18.12.0.tar.xz"; }; }; libkdegames = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/libkdegames-18.08.1.tar.xz"; - sha256 = "05xqmg0g08gd45d1q1wblyj5002fvcs72iazif6j7lj9zy60x3qw"; - name = "libkdegames-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/libkdegames-18.12.0.tar.xz"; + sha256 = "01i00n4cjpq1srag5ca8siw6rjc1gwhdzfib6cg3xf9my5sl0hbv"; + name = "libkdegames-18.12.0.tar.xz"; }; }; libkdepim = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/libkdepim-18.08.1.tar.xz"; - sha256 = "0rq7y5r15d1r8s9v1mip780xyh11011j1w2id0cbll9a3fhjfgy9"; - name = "libkdepim-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/libkdepim-18.12.0.tar.xz"; + sha256 = "188jf33dihrrq0zzmdddg6sx4ck2lp5gj1br4xfsqgrc1qf9z5hd"; + name = "libkdepim-18.12.0.tar.xz"; }; }; libkeduvocdocument = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/libkeduvocdocument-18.08.1.tar.xz"; - sha256 = "1nchaip5rcgvazbn3bsiycsa5wcvqj3c0xz48isaz1rmirw4dkan"; - name = "libkeduvocdocument-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/libkeduvocdocument-18.12.0.tar.xz"; + sha256 = "1fa6pgpcarqabc18bph4lijsx1paf1a1arisrlf5mgkivg2yvy2k"; + name = "libkeduvocdocument-18.12.0.tar.xz"; }; }; libkexiv2 = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/libkexiv2-18.08.1.tar.xz"; - sha256 = "0v0g626hjpksb8kxgp0kzx84a6hf3qq66if2hxh82kis5xdzbj4l"; - name = "libkexiv2-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/libkexiv2-18.12.0.tar.xz"; + sha256 = "1x3pxcii60kn8c1bmgrra9h4ahblwwp5vjd6p2wg2f4jkpmjz1ha"; + name = "libkexiv2-18.12.0.tar.xz"; }; }; libkgapi = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/libkgapi-18.08.1.tar.xz"; - sha256 = "0rsfk8n4z67m371vnglin16l33ankv0i60l07c8znr7jllkyzf7r"; - name = "libkgapi-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/libkgapi-18.12.0.tar.xz"; + sha256 = "0d79p7f6gmb8vjbp2nmc5rz9rabj08np96jbqf4wzgcjcxxi64kp"; + name = "libkgapi-18.12.0.tar.xz"; }; }; libkgeomap = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/libkgeomap-18.08.1.tar.xz"; - sha256 = "1mnf43bpklyxh1schphndc7izknnzn3ymwppq4anysb9k603s7n4"; - name = "libkgeomap-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/libkgeomap-18.12.0.tar.xz"; + sha256 = "1pmicj4p3d17i7nj6alns8a24ay0xrs852d1x1xrcdkv7h7y5hvi"; + name = "libkgeomap-18.12.0.tar.xz"; }; }; libkipi = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/libkipi-18.08.1.tar.xz"; - sha256 = "166njf2w6qy30xiccagnpsb7ggcvqmdkp1djahfwmvjwqqxqq9ic"; - name = "libkipi-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/libkipi-18.12.0.tar.xz"; + sha256 = "0cfn09x7splycpqwz0fy52lnkpc9dsq6i2j2q3r4fjgpblj9m86h"; + name = "libkipi-18.12.0.tar.xz"; }; }; libkleo = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/libkleo-18.08.1.tar.xz"; - sha256 = "1q1s335rmh2k2hmx4k67ik9wy2wa4n271fv21k6sg0l3h58z3fc6"; - name = "libkleo-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/libkleo-18.12.0.tar.xz"; + sha256 = "14iy3wis79rfri7najbyvx94ym2aa7si8h35rx4977flhc80nzin"; + name = "libkleo-18.12.0.tar.xz"; }; }; libkmahjongg = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/libkmahjongg-18.08.1.tar.xz"; - sha256 = "0vvmm0mp2s5bl28vn7nq49b3izfy1myxx7c55qq6h3pmml70alp9"; - name = "libkmahjongg-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/libkmahjongg-18.12.0.tar.xz"; + sha256 = "12pki8hkcv8ihcwwdnhpcz21h4676zra5qwf56aa5cj5qpdgf4gx"; + name = "libkmahjongg-18.12.0.tar.xz"; }; }; libkomparediff2 = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/libkomparediff2-18.08.1.tar.xz"; - sha256 = "114w3xcd31i0y5fk4cr9d075mmvx746hsnm6grc8mkhi6diplxs1"; - name = "libkomparediff2-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/libkomparediff2-18.12.0.tar.xz"; + sha256 = "0xbccawxqk29f2qvr6hcbpan4fhahzksg7bl7jnv8xsv01lbm3rs"; + name = "libkomparediff2-18.12.0.tar.xz"; }; }; libksane = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/libksane-18.08.1.tar.xz"; - sha256 = "0vi0kph8klnm3br9f9ifs5zgnncw83wrvk3kmxc412i28216qgf1"; - name = "libksane-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/libksane-18.12.0.tar.xz"; + sha256 = "1vdxyik47fij9mm1fs6p9bn0n56wsajzqd5am03nrwkwanva25xj"; + name = "libksane-18.12.0.tar.xz"; }; }; libksieve = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/libksieve-18.08.1.tar.xz"; - sha256 = "06agi9wkj455sx0inn6hiahmqlfjaa3ffr8i7zfs2rfzw78qvg20"; - name = "libksieve-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/libksieve-18.12.0.tar.xz"; + sha256 = "1hwasycmfnjzqyxfh0kir1jhx002qci6dclv4cysv1ww33wsyskp"; + name = "libksieve-18.12.0.tar.xz"; }; }; lokalize = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/lokalize-18.08.1.tar.xz"; - sha256 = "1k5vn3jnvqvdc4bn1hdfjjp3snfcpc5i3925kns760vpvdm4a9in"; - name = "lokalize-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/lokalize-18.12.0.tar.xz"; + sha256 = "07rnx40836xncndqbcvpircvgnaywmwzbkfl16665ciphxrilm6q"; + name = "lokalize-18.12.0.tar.xz"; }; }; lskat = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/lskat-18.08.1.tar.xz"; - sha256 = "11snjlsmcsh4nkcfdzjdl0jia8g350xj2hgilqk5b9jir0j8rsyp"; - name = "lskat-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/lskat-18.12.0.tar.xz"; + sha256 = "1cw9z22gvyd9d44sg1qxir923q1ilmmqdgzzrh8wrb5p3m0mn0nz"; + name = "lskat-18.12.0.tar.xz"; }; }; mailcommon = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/mailcommon-18.08.1.tar.xz"; - sha256 = "1791ph0r5b9a0k2qgjrbxsz8drg23v5bdn832d695yy9q9rgxvwx"; - name = "mailcommon-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/mailcommon-18.12.0.tar.xz"; + sha256 = "0aigxd6pkw9xwy8q1kx9vqp17vljrzwv8skq6qmh9fvkjiampw84"; + name = "mailcommon-18.12.0.tar.xz"; }; }; mailimporter = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/mailimporter-18.08.1.tar.xz"; - sha256 = "1rnmhfi54a9vlmvqjv2hsj967q886dkbv6nqn5imz11s8a97anb9"; - name = "mailimporter-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/mailimporter-18.12.0.tar.xz"; + sha256 = "06nsn7vfgrvfgrmx4qyy21rq4a8bj5vxi4hrfd7377pd1sx58qvi"; + name = "mailimporter-18.12.0.tar.xz"; }; }; marble = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/marble-18.08.1.tar.xz"; - sha256 = "1vc6l68fvqdncvpmd8995v4hawi4w4zn3yjfpnghgvmvs30bak4p"; - name = "marble-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/marble-18.12.0.tar.xz"; + sha256 = "0ljzv2ygpqwz4a387ja280p7cd47bkjv7m40c3yn2yijiladyffv"; + name = "marble-18.12.0.tar.xz"; }; }; mbox-importer = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/mbox-importer-18.08.1.tar.xz"; - sha256 = "1sqn11404xc9k76kz9zmm526dkzlk1ywnf15128plvyj6576wwaq"; - name = "mbox-importer-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/mbox-importer-18.12.0.tar.xz"; + sha256 = "08rfgf5zcp6vhd78rj2yikmzrgddhdn7cykw9pqfgmhy0nci14sm"; + name = "mbox-importer-18.12.0.tar.xz"; }; }; messagelib = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/messagelib-18.08.1.tar.xz"; - sha256 = "17z8c60dnhwzgpls3b6hsvyjgjpjybw7cfkc05xn1yihi5gr2rxs"; - name = "messagelib-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/messagelib-18.12.0.tar.xz"; + sha256 = "189bn6lblqq4vr1a2pk99pj3y3xh5q8xxdrg2hrdcc10wmjk9knv"; + name = "messagelib-18.12.0.tar.xz"; }; }; minuet = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/minuet-18.08.1.tar.xz"; - sha256 = "06jwrra25v2al0jw7dvp7h41jmw48d784ky74xi9lx4ma4h4vsvg"; - name = "minuet-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/minuet-18.12.0.tar.xz"; + sha256 = "1hma6r3z7k382gpd0wccxdbss1a17gvkb5fvdaii5xm7c9ca63r7"; + name = "minuet-18.12.0.tar.xz"; }; }; okular = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/okular-18.08.1.tar.xz"; - sha256 = "1in053a3ir4qw2fabrv69g6kxr2hmdwq360kikmwdgsb6a7a8sjk"; - name = "okular-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/okular-18.12.0.tar.xz"; + sha256 = "184r6lqsyx1x63zjirn709w0pd81hyh4f5j6m37m5hr6dg8l6mli"; + name = "okular-18.12.0.tar.xz"; }; }; palapeli = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/palapeli-18.08.1.tar.xz"; - sha256 = "17c6xlmjz8nnnvp4xa27yzrx2vrsjlznjm2awj70z923js5kzfhl"; - name = "palapeli-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/palapeli-18.12.0.tar.xz"; + sha256 = "09fbsw0id1p81zvd7kfimjx81m3zz36kdvd40jwbsffrqi682iww"; + name = "palapeli-18.12.0.tar.xz"; }; }; parley = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/parley-18.08.1.tar.xz"; - sha256 = "1bwj806qm2g3n57f1svaz6x5y238xl0b3pmp4cg29a9c090gcj0r"; - name = "parley-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/parley-18.12.0.tar.xz"; + sha256 = "1mnp835g1b7vwz5gnzl78x3s80sw1ps4gsddg4ywrdkjr5b099gk"; + name = "parley-18.12.0.tar.xz"; }; }; picmi = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/picmi-18.08.1.tar.xz"; - sha256 = "0bc3zs5ql1yfriq3pbxc0cb010n8rygqglpz8c2qinnsgf9wb305"; - name = "picmi-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/picmi-18.12.0.tar.xz"; + sha256 = "0y6fnh8629zj98ih4cwgy31gknpc6ipn4aqxcjg8hfic8jxnppyp"; + name = "picmi-18.12.0.tar.xz"; }; }; pimcommon = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/pimcommon-18.08.1.tar.xz"; - sha256 = "0h8g374bdnf9nm43flz9wg1ddcdppqxng1vq58vqlviiy32qf86p"; - name = "pimcommon-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/pimcommon-18.12.0.tar.xz"; + sha256 = "1rchq4clw6r08vm6cw9kw52bn7z1nfjmp2lmi0sq3pjfqlxif2zc"; + name = "pimcommon-18.12.0.tar.xz"; }; }; pim-data-exporter = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/pim-data-exporter-18.08.1.tar.xz"; - sha256 = "01spb3lfs3rsl1h6d6lrszssj1rnbv1p21np75x4rm7qxzdn7wy7"; - name = "pim-data-exporter-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/pim-data-exporter-18.12.0.tar.xz"; + sha256 = "0ywxcd02crwjrqx8ikkc4rgx1z93zvzqadqg3sjh636iz8svv5jc"; + name = "pim-data-exporter-18.12.0.tar.xz"; }; }; pim-sieve-editor = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/pim-sieve-editor-18.08.1.tar.xz"; - sha256 = "09npw10dgzk7z3022d1np4qvmbwb07lxjj2nd4k1hxnkcjaz242d"; - name = "pim-sieve-editor-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/pim-sieve-editor-18.12.0.tar.xz"; + sha256 = "144frbny1pq1viam527b96fxalc9iv5ppqrrvpndqsvjrlsrll45"; + name = "pim-sieve-editor-18.12.0.tar.xz"; }; }; poxml = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/poxml-18.08.1.tar.xz"; - sha256 = "1zazxxh4j8ihlb5v33b5wgj4ddqqhd809lzhxq28dq0mg7wvqcm8"; - name = "poxml-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/poxml-18.12.0.tar.xz"; + sha256 = "1gnk9rzpa6rgff9xhawizx8cgsw84jqkpkr8aa2ki8zs4s6n9zl6"; + name = "poxml-18.12.0.tar.xz"; }; }; print-manager = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/print-manager-18.08.1.tar.xz"; - sha256 = "0ixamp14m3p13j1c6nc9x6043600k2anfw12mn1yg4f8q5fb6dnf"; - name = "print-manager-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/print-manager-18.12.0.tar.xz"; + sha256 = "03jgjj7xfc57bsq3nx3l836pmpqywlchqis9109k5cpygqvgqkr5"; + name = "print-manager-18.12.0.tar.xz"; }; }; rocs = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/rocs-18.08.1.tar.xz"; - sha256 = "1kchipj3q29zfp60l81q52m6gb4fcmawcl42rvzr4mxf4h7dw72n"; - name = "rocs-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/rocs-18.12.0.tar.xz"; + sha256 = "1gg0xg732wb9vzf1c69r5cqqhayxygv2brvbk3gvq6b201hv1q90"; + name = "rocs-18.12.0.tar.xz"; }; }; signon-kwallet-extension = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/signon-kwallet-extension-18.08.1.tar.xz"; - sha256 = "1wf9xffjxyqn5vwwnp4wbn22lby5vc396snc3imdp1bx4z5ffck4"; - name = "signon-kwallet-extension-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/signon-kwallet-extension-18.12.0.tar.xz"; + sha256 = "0izmwyv1bw4iqgyhjrsq85xg7m5bp1v9khy5fxh1mhvh52w9zq8s"; + name = "signon-kwallet-extension-18.12.0.tar.xz"; }; }; spectacle = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/spectacle-18.08.1.tar.xz"; - sha256 = "0xvw6l0712gmb3dvq9hnyp7r160rvmvmm3mvgapj4z5c00m8a1d7"; - name = "spectacle-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/spectacle-18.12.0.tar.xz"; + sha256 = "0nnsv0y28pxxhvf3r76nqgmn0ncixhr8d783mm3i3a3yz1z8a45c"; + name = "spectacle-18.12.0.tar.xz"; }; }; step = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/step-18.08.1.tar.xz"; - sha256 = "1b7cvrhdbfkqg72phbgbl15v8c4nr6b1b9fw8i1vam028a97bq8z"; - name = "step-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/step-18.12.0.tar.xz"; + sha256 = "0gqcwvv2xb321zx7y4bg28haqpzz5h8r7cxn6z4x5qnj6ijkx0zr"; + name = "step-18.12.0.tar.xz"; }; }; svgpart = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/svgpart-18.08.1.tar.xz"; - sha256 = "07mm5vzd5lslr5x7r71ac3hp3s779i89nz4d84550pk0qdn3qpmb"; - name = "svgpart-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/svgpart-18.12.0.tar.xz"; + sha256 = "1nqbbzndbyj9ikgw7fhy52621swb5blzycd5qn9if9ymsi524217"; + name = "svgpart-18.12.0.tar.xz"; }; }; sweeper = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/sweeper-18.08.1.tar.xz"; - sha256 = "1vmdk38j03qj0l5gc27dc242j0cj7k2c5zfq2xrvjb44rxfirdy4"; - name = "sweeper-18.08.1.tar.xz"; - }; - }; - syndication = { - version = "18.08.1"; - src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/syndication-18.08.1.tar.xz"; - sha256 = "0lirbr8zb1j5kalki6v98wmcg5z25xj1wamszd81h9wlkgk5aqd0"; - name = "syndication-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/sweeper-18.12.0.tar.xz"; + sha256 = "0pq991zxdg1816j8dbhc3vjxj84plif17zpvp3smiscr4n6x209h"; + name = "sweeper-18.12.0.tar.xz"; }; }; umbrello = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/umbrello-18.08.1.tar.xz"; - sha256 = "16p283jz5v5j40i1i7c9fk36bhs2k30rk17l3nikmf0qd7j5n6ir"; - name = "umbrello-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/umbrello-18.12.0.tar.xz"; + sha256 = "15r5wv0k1dwfxp4l2mc4886s17ck390a2mpy1l08jvg93w1cbm3f"; + name = "umbrello-18.12.0.tar.xz"; }; }; zeroconf-ioslave = { - version = "18.08.1"; + version = "18.12.0"; src = fetchurl { - url = "${mirror}/stable/applications/18.08.1/src/zeroconf-ioslave-18.08.1.tar.xz"; - sha256 = "0m1yhm17chz49xs6nh1n8dqdkbnr8kkig9p2f9nmvypnfagygpsi"; - name = "zeroconf-ioslave-18.08.1.tar.xz"; + url = "${mirror}/stable/applications/18.12.0/src/zeroconf-ioslave-18.12.0.tar.xz"; + sha256 = "1qvmsr88kl1gq3wrn5g4wf4ka24pbbhdy54c8n25bhxd8pv0rd07"; + name = "zeroconf-ioslave-18.12.0.tar.xz"; }; }; } diff --git a/pkgs/applications/kde/syndication.nix b/pkgs/applications/kde/syndication.nix deleted file mode 100644 index 42782d449d5..00000000000 --- a/pkgs/applications/kde/syndication.nix +++ /dev/null @@ -1,16 +0,0 @@ -{ - mkDerivation, lib, kdepimTeam, - extra-cmake-modules, kdoctools, - kio -}: - -mkDerivation { - name = "syndication"; - meta = { - license = with lib.licenses; [ gpl2 lgpl21 fdl12 ]; - maintainers = kdepimTeam; - }; - nativeBuildInputs = [ extra-cmake-modules kdoctools ]; - propagatedBuildInputs = [ kio ]; - outputs = [ "out" "dev" ]; -} diff --git a/pkgs/applications/misc/1password/default.nix b/pkgs/applications/misc/1password/default.nix index 331f516c88c..6de7c3daed1 100644 --- a/pkgs/applications/misc/1password/default.nix +++ b/pkgs/applications/misc/1password/default.nix @@ -1,25 +1,25 @@ { stdenv, fetchzip }: stdenv.mkDerivation rec { - name = "1password-${version}"; - version = "0.5.3"; + pname = "1password"; + version = "0.5.5"; 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 = "05s223h1yps4k9kmignl0r5sbh6w7m1hnlmafnf1kiwv7gacvxjc"; + sha256 = "14qx69fq1a3h93h167nhwp6gxka8r34295p82kim9grijrx5zz5f"; 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 = "0p9x1fx0309v8dxxaf88m8x8q15zzqywfmjn6v5wb9v3scp9396v"; + sha256 = "1jh1sk07k3whbr0rvc4kf221wskcdbk0zpxaj49qbwq1d89cjnpg"; 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 = "1z2xp9bn93gr4ha6zx65va1fb58a2xlnnmpv583y96gq3vbnqdcj"; + sha256 = "1s6gw2qwsbhj4z9nrwrxs776y45ingpfp9533qz0gc1pk7ia99js"; stripRoot = false; } else throw "Architecture not supported"; diff --git a/pkgs/applications/misc/acbuild/default.nix b/pkgs/applications/misc/acbuild/default.nix deleted file mode 100644 index c1b8a7eb866..00000000000 --- a/pkgs/applications/misc/acbuild/default.nix +++ /dev/null @@ -1,37 +0,0 @@ -{ stdenv, go, fetchFromGitHub }: - -stdenv.mkDerivation rec { - name = "acbuild-${version}"; - version = "0.4.0"; - - src = fetchFromGitHub { - owner = "appc"; - repo = "acbuild"; - rev = "v${version}"; - sha256 = "0s81xlaw75d05b4cidxml978hnxak8parwpnk9clanwqjbj66c7x"; - }; - - buildInputs = [ go ]; - - patchPhase = '' - sed -i -e 's|\git describe --dirty|echo "${version}"|' build - ''; - - buildPhase = '' - patchShebangs build - ./build - ''; - - installPhase = '' - mkdir -p $out - mv bin $out - ''; - - meta = with stdenv.lib; { - description = "A build tool for ACIs"; - homepage = https://github.com/appc/acbuild; - license = licenses.asl20; - maintainers = with maintainers; [ dgonyeo ]; - platforms = platforms.linux; - }; -} diff --git a/pkgs/applications/misc/airspy/default.nix b/pkgs/applications/misc/airspy/default.nix index 9b6771a3925..2042f1047b2 100644 --- a/pkgs/applications/misc/airspy/default.nix +++ b/pkgs/applications/misc/airspy/default.nix @@ -28,7 +28,7 @@ in meta = with stdenv.lib; { homepage = https://github.com/airspy/airspyone_host; description = "Host tools and driver library for the AirSpy SDR"; - license = licenses.free; + license = licenses.bsd3; platforms = with platforms; linux ++ darwin; maintainers = with maintainers; [ markuskowa ]; }; diff --git a/pkgs/applications/misc/airtame/default.nix b/pkgs/applications/misc/airtame/default.nix index 18f47b7652f..3e5bf8df4a7 100644 --- a/pkgs/applications/misc/airtame/default.nix +++ b/pkgs/applications/misc/airtame/default.nix @@ -6,51 +6,20 @@ }: let libPath = lib.makeLibraryPath [ - alsaLib - atk - cairo - cups - curl - dbus - expat - ffmpeg - fontconfig - freetype - gdk_pixbuf - glib - glibc - gnome2.GConf - gtk2 - libopus - nspr - nss - pango - stdenv.cc.cc - udev - x264 - libX11 - libXScrnSaver - libXcomposite - libXcursor - libXdamage - libXext - libXfixes - libXi - libXrandr - libXrender - libXtst - libpulseaudio - libxcb + alsaLib atk cairo cups curl dbus expat ffmpeg fontconfig freetype gdk_pixbuf + glib glibc gnome2.GConf gtk2 libopus nspr nss pango stdenv.cc.cc udev x264 + libX11 libXScrnSaver libXcomposite libXcursor libXdamage libXext libXfixes + libXi libXrandr libXrender libXtst libpulseaudio libxcb ]; in stdenv.mkDerivation rec { pname = "airtame"; - version = "3.1.1"; + version = "3.3.0"; name = "${pname}-${version}"; longName = "${pname}-application"; src = fetchurl { url = "https://downloads.airtame.com/application/ga/lin_x64/releases/${longName}-${version}.tar.gz"; - sha256 = "1am1qz280r5g9i0vwwx5lr24fpdl5lazhpr2bhb34nlr5d8rsmzr"; + sha256 = "16ca1vcxpka26jcrfbxpq74kcizgrm138j94bby6kzqp2swhrl76"; }; nativeBuildInputs = [ makeWrapper ]; @@ -77,15 +46,26 @@ in stdenv.mkDerivation rec { ln -s "$opt/icon.png" "$out/share/icons/airtame.png" # Flags and rpath are copied from launch-airtame.sh. - interp="$(< $NIX_CC/nix-support/dynamic-linker)" - vendorlib="$opt/resources/app.asar.unpacked/streamer/vendor/airtame-core/lib" - rpath="${libPath}:$opt:$vendorlib:$opt/resources/app.asar.unpacked/encryption/out/lib" - rm $vendorlib/libcurl.so* + vendorlib="\ + $opt/resources/app.asar.unpacked/modules/streamer/dist/deps/airtame-modules:\ + $opt/resources/app.asar.unpacked/encryption/out/lib:\ + $opt/resources/deps/airtame-core/lib:\ + $opt/resources/deps/airtame-encryption/lib" + + echo $vendorlib + + rpath="${libPath}:$opt:$vendorlib" + find "$opt" \( -type f -executable -o -name "*.so" -o -name "*.so.*" \) \ -exec patchelf --set-rpath "$rpath" {} \; + # The main binary also needs libudev which was removed by --shrink-rpath. + interp="$(< $NIX_CC/nix-support/dynamic-linker)" patchelf --set-interpreter "$interp" $opt/${longName} - wrapProgram $opt/${longName} --add-flags "--disable-gpu --enable-transparent-visuals" + + wrapProgram $opt/${longName} \ + --prefix LD_LIBRARY_PATH=$rpath \ + --add-flags "--disable-gpu --enable-transparent-visuals" ''; dontPatchELF = true; diff --git a/pkgs/applications/misc/alacritty/default.nix b/pkgs/applications/misc/alacritty/default.nix index 34e46e9fa0f..06512f6123b 100644 --- a/pkgs/applications/misc/alacritty/default.nix +++ b/pkgs/applications/misc/alacritty/default.nix @@ -1,6 +1,6 @@ { stdenv, lib, - fetchgit, + fetchFromGitHub, rustPlatform, cmake, makeWrapper, @@ -18,6 +18,7 @@ libGL, xclip, # Darwin Frameworks + cf-private, AppKit, CoreFoundation, CoreGraphics, @@ -40,29 +41,18 @@ let libGL libXi ]; - darwinFrameworks = [ - AppKit - CoreFoundation - CoreGraphics - CoreServices - CoreText - Foundation - OpenGL - ]; in buildRustPackage rec { - name = "alacritty-unstable-${version}"; - version = "0.2.0"; + name = "alacritty-${version}"; + version = "0.2.6"; - # At the moment we cannot handle git dependencies in buildRustPackage. - # This fork only replaces rust-fontconfig/libfontconfig with a git submodules. - src = fetchgit { - url = https://github.com/Mic92/alacritty.git; - rev = "rev-${version}"; - sha256 = "1c9izflacm693rwkxwakxgnpkvxwc8mqasr5p7x0ys6xg91h9sxn"; - fetchSubmodules = true; + src = fetchFromGitHub { + owner = "jwilm"; + repo = "alacritty"; + rev = "v${version}"; + sha256 = "1yjmlvxs5vwqhgjlb83a4hq2b12zzhr4pp209djprgdi0cf2bbqw"; }; - cargoSha256 = "1ijgkwv9ij4haig1h6n2b9xbhp5vahy9vp1sx72wxaaj9476msjx"; + cargoSha256 = "11n5xl43l07zycdg0icv4i7mh6zy4ia6aw48i0wm59xqdl7xqn9f"; nativeBuildInputs = [ cmake @@ -73,9 +63,13 @@ in buildRustPackage rec { ]; buildInputs = rpathLibs - ++ lib.optionals stdenv.isDarwin darwinFrameworks; + ++ lib.optionals stdenv.isDarwin [ + AppKit CoreFoundation CoreGraphics CoreServices CoreText Foundation OpenGL + # Needed for CFURLResourceIsReachable symbols. + cf-private + ]; - outputs = [ "out" "terminfo" ]; + outputs = [ "out" "terminfo" ]; postPatch = '' substituteInPlace copypasta/src/x11.rs \ diff --git a/pkgs/applications/misc/albert/default.nix b/pkgs/applications/misc/albert/default.nix index f16144f3bef..39dae0db125 100644 --- a/pkgs/applications/misc/albert/default.nix +++ b/pkgs/applications/misc/albert/default.nix @@ -1,24 +1,22 @@ { mkDerivation, lib, fetchFromGitHub, makeWrapper, qtbase, - qtdeclarative, qtsvg, qtx11extras, muparser, cmake, python3 }: + qtdeclarative, qtsvg, qtx11extras, muparser, cmake, python3, + qtcharts }: -let - pname = "albert"; - version = "0.14.21"; -in mkDerivation rec { - name = "${pname}-${version}"; + pname = "albert"; + version = "0.15.0"; src = fetchFromGitHub { owner = "albertlauncher"; repo = "albert"; rev = "v${version}"; - sha256 = "16nk9krn1mwr0bh57viig9hizqyp3slna0qg7s5a736nsfxy226w"; + sha256 = "063z9yq6bsxcsqsw1n93ks5dzhzv6i252mjz1d5mxhxvgmqlfk0v"; fetchSubmodules = true; }; nativeBuildInputs = [ cmake makeWrapper ]; - buildInputs = [ qtbase qtdeclarative qtsvg qtx11extras muparser python3 ]; + buildInputs = [ qtbase qtdeclarative qtsvg qtx11extras muparser python3 qtcharts ]; enableParallelBuilding = true; @@ -48,7 +46,7 @@ mkDerivation rec { homepage = https://albertlauncher.github.io/; description = "Desktop agnostic launcher"; license = licenses.gpl3Plus; - maintainers = with maintainers; [ ericsagnes ]; + maintainers = with maintainers; [ ericsagnes synthetica ]; platforms = platforms.linux; }; } diff --git a/pkgs/applications/misc/aminal/default.nix b/pkgs/applications/misc/aminal/default.nix new file mode 100644 index 00000000000..1c769e58705 --- /dev/null +++ b/pkgs/applications/misc/aminal/default.nix @@ -0,0 +1,75 @@ +{ buildGoPackage +, Carbon +, Cocoa +, Kernel +, cf-private +, fetchFromGitHub +, lib +, mesa_glu +, stdenv +, xorg +}: + +buildGoPackage rec { + name = "aminal-${version}"; + version = "0.8.6"; + + goPackagePath = "github.com/liamg/aminal"; + + buildInputs = + lib.optionals stdenv.isLinux [ + mesa_glu + xorg.libX11 + xorg.libXcursor + xorg.libXi + xorg.libXinerama + xorg.libXrandr + xorg.libXxf86vm + ] ++ lib.optionals stdenv.isDarwin [ + Carbon + Cocoa + Kernel + cf-private /* Needed for NSDefaultRunLoopMode */ + ]; + + src = fetchFromGitHub { + owner = "liamg"; + repo = "aminal"; + rev = "v${version}"; + sha256 = "0qhjdckj2kr0vza6qssd9z8dfrsif1qxb1mal1d4wgdsy12lrmwl"; + }; + + preBuild = '' + buildFlagsArray=("-ldflags=-X ${goPackagePath}/version.Version=${version}") + ''; + + meta = with lib; { + description = "Golang terminal emulator from scratch"; + longDescription = '' + Aminal is a modern terminal emulator for Mac/Linux implemented in Golang + and utilising OpenGL. + + The project is experimental at the moment, so you probably won't want to + rely on Aminal as your main terminal for a while. + + Features: + - Unicode support + - OpenGL rendering + - Customisation options + - True colour support + - Support for common ANSI escape sequences a la xterm + - Scrollback buffer + - Clipboard access + - Clickable URLs + - Multi platform support (Windows coming soon...) + - Sixel support + - Hints/overlays + - Built-in patched fonts for powerline + - Retina display support + ''; + homepage = https://github.com/liamg/aminal; + license = licenses.gpl3; + maintainers = with maintainers; [ kalbasit ]; + platforms = platforms.linux ++ platforms.darwin; + }; +} diff --git a/pkgs/applications/misc/apvlv/default.nix b/pkgs/applications/misc/apvlv/default.nix index eb35eb9cf73..2d9ea5e3574 100644 --- a/pkgs/applications/misc/apvlv/default.nix +++ b/pkgs/applications/misc/apvlv/default.nix @@ -52,6 +52,9 @@ stdenv.mkDerivation rec { mkdir -p $out/share/doc/apvlv/ cp ../Startup.pdf $out/share/doc/apvlv/Startup.pdf cp ../main_menubar.glade $out/share/doc/apvlv/main_menubar.glade + '' + + stdenv.lib.optionalString (!stdenv.isDarwin) '' + install -D ../apvlv.desktop $out/share/applications/apvlv.desktop ''; meta = with stdenv.lib; { diff --git a/pkgs/applications/misc/archiver/default.nix b/pkgs/applications/misc/archiver/default.nix new file mode 100644 index 00000000000..25fafb604c3 --- /dev/null +++ b/pkgs/applications/misc/archiver/default.nix @@ -0,0 +1,28 @@ +{ buildGoPackage +, fetchFromGitHub +, lib +}: + +buildGoPackage rec { + name = "archiver-${version}"; + version = "3.0.0"; + + goPackagePath = "github.com/mholt/archiver"; + + src = fetchFromGitHub { + owner = "mholt"; + repo = "archiver"; + rev = "v${version}"; + sha256 = "1wngv51333h907mp6nbzd9dq6r0x06mag2cij92912jcbzy0q8bk"; + }; + + goDeps = ./deps.nix; + + meta = with lib; { + description = "Easily create and extract .zip, .tar, .tar.gz, .tar.bz2, .tar.xz, .tar.lz4, .tar.sz, and .rar (extract-only) files with Go"; + homepage = https://github.com/mholt/archiver; + license = licenses.mit; + maintainers = with maintainers; [ kalbasit ]; + platforms = platforms.all; + }; +} diff --git a/pkgs/applications/misc/archiver/deps.nix b/pkgs/applications/misc/archiver/deps.nix new file mode 100644 index 00000000000..4b14fd47711 --- /dev/null +++ b/pkgs/applications/misc/archiver/deps.nix @@ -0,0 +1,56 @@ +[ + { + goPackagePath = "github.com/dsnet/compress"; + fetch = { + type = "git"; + url = "https://github.com/dsnet/compress"; + rev = "cc9eb1d7ad760af14e8f918698f745e80377af4f"; + sha256 = "159liclywmyb6zx88ga5gn42hfl4cpk1660zss87fkx31hdq9fgx"; + }; + } + { + goPackagePath = "github.com/golang/snappy"; + fetch = { + type = "git"; + url = "https://github.com/golang/snappy"; + rev = "2e65f85255dbc3072edf28d6b5b8efc472979f5a"; + sha256 = "05w6mpc4qcy0pv8a2bzng8nf4s5rf5phfang4jwy9rgf808q0nxf"; + }; + } + { + goPackagePath = "github.com/nwaples/rardecode"; + fetch = { + type = "git"; + url = "https://github.com/nwaples/rardecode"; + rev = "197ef08ef68c4454ae5970a9c2692d6056ceb8d7"; + sha256 = "0vvijw7va283dbdvnf4bgkn7bjngxqzk1rzdpy8sl343r62bmh4g"; + }; + } + { + goPackagePath = "github.com/pierrec/lz4"; + fetch = { + type = "git"; + url = "https://github.com/pierrec/lz4"; + rev = "623b5a2f4d2a41e411730dcdfbfdaeb5c0c4564e"; + sha256 = "1hhf7vyz5irrqs7ixdmvsvzmy9izv3ha8jbyy0cs486h61nzqkki"; + }; + } + { + goPackagePath = "github.com/ulikunitz/xz"; + fetch = { + type = "git"; + url = "https://github.com/ulikunitz/xz"; + rev = "590df8077fbcb06ad62d7714da06c00e5dd2316d"; + sha256 = "07mivr4aiw3b8qzwajsxyjlpbkf3my4xx23lv0yryc4pciam5lhy"; + }; + } + { + goPackagePath = "github.com/xi2/xz"; + fetch = { + type = "git"; + url = "https://github.com/xi2/xz"; + rev = "48954b6210f8d154cb5f8484d3a3e1f83489309e"; + sha256 = "178r0fa2dpzxf0sabs7dn0c8fa7vs87zlxk6spkn374ls9pir7nq"; + }; + } +] diff --git a/pkgs/applications/misc/artha/default.nix b/pkgs/applications/misc/artha/default.nix index f69152820e4..202c1669f85 100644 --- a/pkgs/applications/misc/artha/default.nix +++ b/pkgs/applications/misc/artha/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, dbus-glib, gtk2, pkgconfig, wordnet }: +{ stdenv, autoreconfHook, fetchurl, dbus-glib, gtk2, pkgconfig, wordnet }: stdenv.mkDerivation rec { name = "artha-${version}"; @@ -9,9 +9,13 @@ stdenv.mkDerivation rec { sha256 = "0qr4ihl7ma3cq82xi1fpzvf74mm9vsg0j035xvmcp3r6rmw2fycx"; }; - nativeBuildInputs = [ pkgconfig ]; + nativeBuildInputs = [ autoreconfHook pkgconfig ]; buildInputs = [ dbus-glib gtk2 wordnet ]; + patches = [ + ./gio-underlink.patch + ]; + meta = with stdenv.lib; { description = "An offline thesaurus based on WordNet"; homepage = http://artha.sourceforge.net; diff --git a/pkgs/applications/misc/artha/gio-underlink.patch b/pkgs/applications/misc/artha/gio-underlink.patch new file mode 100644 index 00000000000..08d9c478736 --- /dev/null +++ b/pkgs/applications/misc/artha/gio-underlink.patch @@ -0,0 +1,13 @@ +diff --git a/src/Makefile.am b/src/Makefile.am +index 0236d72..bcc1182 100644 +--- a/src/Makefile.am ++++ b/src/Makefile.am +@@ -38,7 +38,7 @@ artha_LDADD = libwni.a $(WORDNET_LIB) + + if POSIX + AM_CFLAGS += @libdbus_CFLAGS@ +-artha_LDADD += -lX11 -ldbus-1 -ldbus-glib-1 -lgtk-x11-2.0 \ ++artha_LDADD += -lX11 -ldbus-1 -ldbus-glib-1 -lgio-2.0 -lgtk-x11-2.0 \ + -lgdk-x11-2.0 -lgmodule-2.0 -lgobject-2.0 -lglib-2.0 + else + artha_LDADD += @GTK_LIBS@ diff --git a/pkgs/applications/misc/autospotting/default.nix b/pkgs/applications/misc/autospotting/default.nix new file mode 100644 index 00000000000..2f38307ca1e --- /dev/null +++ b/pkgs/applications/misc/autospotting/default.nix @@ -0,0 +1,30 @@ +{ stdenv, buildGoPackage, fetchFromGitHub }: + +buildGoPackage rec { + name = "autospotting-${version}"; + version = "unstable-2018-11-17"; + goPackagePath = "github.com/AutoSpotting/AutoSpotting"; + + src = fetchFromGitHub { + owner = "AutoSpotting"; + repo = "AutoSpotting"; + rev = "122ab8f292a2f718dd85e79ec22acd455122907e"; + sha256 = "0p48lgig9kblxvgq1kggczkn4qdbx6ciq9c8x0179i80vl4jf7v6"; + }; + + goDeps = ./deps.nix; + + # patching path where repository used to exist + postPatch = '' + sed -i "s+github.com/cristim/autospotting/core+github.com/AutoSpotting/AutoSpotting/core+" autospotting.go + ''; + + meta = with stdenv.lib; { + 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 ]; + platforms = platforms.linux; + }; + +} diff --git a/pkgs/applications/misc/autospotting/deps.nix b/pkgs/applications/misc/autospotting/deps.nix new file mode 100644 index 00000000000..ea744ed6648 --- /dev/null +++ b/pkgs/applications/misc/autospotting/deps.nix @@ -0,0 +1,75 @@ +# file generated from Gopkg.lock using dep2nix (https://github.com/nixcloud/dep2nix) +[ + { + goPackagePath = "github.com/aws/aws-lambda-go"; + fetch = { + type = "git"; + url = "https://github.com/aws/aws-lambda-go"; + rev = "2d482ef09017ae953b1e8d5a6ddac5b696663a3c"; + sha256 = "06v2yfvn4sn116lds0526a8mfrsng4vafrdjf1dhpalqarrbdvmz"; + }; + } + { + goPackagePath = "github.com/aws/aws-sdk-go"; + fetch = { + type = "git"; + url = "https://github.com/aws/aws-sdk-go"; + rev = "9333060a8d957db41bff1c80603a802aa674fad8"; + sha256 = "0fnypw6zm6k70fzhm5a8g69ag64rxbrrpdk7l3rkfqd99slyg5kz"; + }; + } + { + goPackagePath = "github.com/cristim/ec2-instances-info"; + fetch = { + type = "git"; + url = "https://github.com/cristim/ec2-instances-info"; + rev = "73c042a5558cd6d8b61fb82502d6f7aec334e9ed"; + sha256 = "1xajrkxqqz5wlbi9w2wdhnk115rbmqxyga29f8v9psq8hzwgi0rg"; + }; + } + { + goPackagePath = "github.com/davecgh/go-spew"; + fetch = { + type = "git"; + url = "https://github.com/davecgh/go-spew"; + rev = "d8f796af33cc11cb798c1aaeb27a4ebc5099927d"; + sha256 = "19z27f306fpsrjdvkzd61w1bdazcdbczjyjck177g33iklinhpvx"; + }; + } + { + goPackagePath = "github.com/go-ini/ini"; + fetch = { + type = "git"; + url = "https://github.com/go-ini/ini"; + rev = "5cf292cae48347c2490ac1a58fe36735fb78df7e"; + sha256 = "0xbnw1nd22q6k863n5gs0nxld15w0p8qxbhfky85akcb5rk1vwi9"; + }; + } + { + goPackagePath = "github.com/jmespath/go-jmespath"; + fetch = { + type = "git"; + url = "https://github.com/jmespath/go-jmespath"; + rev = "0b12d6b5"; + sha256 = "1vv6hph8j6xgv7gwl9vvhlsaaqsm22sxxqmgmldi4v11783pc1ld"; + }; + } + { + goPackagePath = "github.com/namsral/flag"; + fetch = { + type = "git"; + url = "https://github.com/namsral/flag"; + rev = "67f268f20922975c067ed799e4be6bacf152208c"; + sha256 = "1lmxq3z276zrsggpfq9b7yklzzxdyib49zr8sznb1lcqlvxqsr47"; + }; + } + { + goPackagePath = "github.com/pkg/errors"; + fetch = { + type = "git"; + url = "https://github.com/pkg/errors"; + rev = "645ef00459ed84a119197bfb8d8205042c6df63d"; + sha256 = "001i6n71ghp2l6kdl3qq1v2vmghcz3kicv9a5wgcihrzigm75pp5"; + }; + } +] \ No newline at end of file diff --git a/pkgs/applications/misc/avrdudess/default.nix b/pkgs/applications/misc/avrdudess/default.nix index c803eb37ad6..1144d515284 100644 --- a/pkgs/applications/misc/avrdudess/default.nix +++ b/pkgs/applications/misc/avrdudess/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, unzip, mono, avrbinutils, avrgcc, avrdude, gtk2, xdg_utils }: +{ stdenv, fetchurl, unzip, mono, avrdude, gtk2, xdg_utils }: stdenv.mkDerivation rec { name = "avrdudess-2.2.20140102"; @@ -23,7 +23,7 @@ stdenv.mkDerivation rec { export LD_LIBRARY_PATH="${stdenv.lib.makeLibraryPath [gtk2 mono]}" # We need PATH from user env for xdg-open to find its tools, which # typically depend on the currently running desktop environment. - export PATH="${stdenv.lib.makeBinPath [ avrgcc avrbinutils avrdude xdg_utils ]}:\$PATH" + export PATH="${stdenv.lib.makeBinPath [ avrdude xdg_utils ]}:\$PATH" # avrdudess must have its resource files in its current working directory cd $out/avrdudess && exec ${mono}/bin/mono "$out/avrdudess/avrdudess.exe" "\$@" diff --git a/pkgs/applications/misc/bb/default.nix b/pkgs/applications/misc/bb/default.nix index 0689843af61..f085e4bd7dd 100644 --- a/pkgs/applications/misc/bb/default.nix +++ b/pkgs/applications/misc/bb/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, aalib, ncurses, xorg, libmikmod }: +{ stdenv, lib, fetchurl, darwin, aalib, ncurses, xorg, libmikmod }: stdenv.mkDerivation rec { name = "bb-${version}"; @@ -12,13 +12,17 @@ stdenv.mkDerivation rec { buildInputs = [ aalib ncurses libmikmod xorg.libXau xorg.libXdmcp xorg.libX11 - ]; + ] ++ lib.optional stdenv.isDarwin darwin.apple_sdk.frameworks.CoreAudio; - meta = with stdenv.lib; { + postPatch = lib.optionalString stdenv.isDarwin '' + sed -i -e '/^#include $/d' *.c + ''; + + meta = with lib; { homepage = http://aa-project.sourceforge.net/bb; description = "AA-lib demo"; license = licenses.gpl2; maintainers = [ maintainers.rnhmjoj ]; - platforms = platforms.linux; + platforms = platforms.unix; }; } diff --git a/pkgs/applications/misc/blender/default.nix b/pkgs/applications/misc/blender/default.nix index b9d4b83e4f1..89bd8ee4b3e 100644 --- a/pkgs/applications/misc/blender/default.nix +++ b/pkgs/applications/misc/blender/default.nix @@ -51,10 +51,10 @@ stdenv.mkDerivation rec { "-DWITH_SYSTEM_OPENJPEG=ON" "-DWITH_PLAYER=ON" "-DWITH_OPENSUBDIV=ON" - "-DPYTHON_LIBRARY=python${python.majorVersion}m" + "-DPYTHON_LIBRARY=${python.libPrefix}m" "-DPYTHON_LIBPATH=${python}/lib" - "-DPYTHON_INCLUDE_DIR=${python}/include/python${python.majorVersion}m" - "-DPYTHON_VERSION=${python.majorVersion}" + "-DPYTHON_INCLUDE_DIR=${python}/include/${python.libPrefix}m" + "-DPYTHON_VERSION=${python.pythonVersion}" "-DWITH_PYTHON_INSTALL=OFF" "-DWITH_PYTHON_INSTALL_NUMPY=OFF" ] @@ -66,7 +66,7 @@ stdenv.mkDerivation rec { ] ++ optional colladaSupport "-DWITH_OPENCOLLADA=ON"; - NIX_CFLAGS_COMPILE = "-I${ilmbase.dev}/include/OpenEXR -I${python}/include/${python.libPrefix}m"; + NIX_CFLAGS_COMPILE = "-I${ilmbase.dev}/include/OpenEXR -I${python}/include/${python.libPrefix}"; # Since some dependencies are built with gcc 6, we need gcc 6's # libstdc++ in our RPATH. Sigh. @@ -77,7 +77,7 @@ stdenv.mkDerivation rec { postInstall = optionalString enableNumpy '' wrapProgram $out/bin/blender \ - --prefix PYTHONPATH : ${pythonPackages.numpy}/lib/python${python.majorVersion}/site-packages + --prefix PYTHONPATH : ${pythonPackages.numpy}/${python.sitePackages} ''; meta = with stdenv.lib; { diff --git a/pkgs/applications/misc/calibre/default.nix b/pkgs/applications/misc/calibre/default.nix index 1ad236f0d13..cd3ee82aceb 100644 --- a/pkgs/applications/misc/calibre/default.nix +++ b/pkgs/applications/misc/calibre/default.nix @@ -1,16 +1,16 @@ { stdenv, fetchurl, poppler_utils, pkgconfig, libpng , imagemagick, libjpeg, fontconfig, podofo, qtbase, qmake, icu, sqlite , makeWrapper, unrarSupport ? false, chmlib, python2Packages, libusb1, libmtp -, xdg_utils, makeDesktopItem, wrapGAppsHook +, xdg_utils, makeDesktopItem, wrapGAppsHook, removeReferencesTo }: stdenv.mkDerivation rec { - version = "3.31.0"; + version = "3.38.1"; name = "calibre-${version}"; src = fetchurl { url = "https://download.calibre-ebook.com/${version}/${name}.tar.xz"; - sha256 = "1xg1bx0klvrywqry5rhci37fr7shpvb2wbx4bva20vhqkal169rw"; + sha256 = "07fvpnabk17sfg81xn0bsnw36k45hawwz0fcz5cmp5qydm85ncv0"; }; patches = [ @@ -23,7 +23,7 @@ stdenv.mkDerivation rec { ] ++ stdenv.lib.optional (!unrarSupport) ./dont_build_unrar_plugin.patch; prePatch = '' - sed -i "/pyqt_sip_dir/ s:=.*:= '${python2Packages.pyqt5}/share/sip/PyQt5':" \ + sed -i "/pyqt_sip_dir/ s:=.*:= '${python2Packages.pyqt5_with_qtwebkit}/share/sip/PyQt5':" \ setup/build_environment.py # Remove unneeded files and libs @@ -35,14 +35,14 @@ stdenv.mkDerivation rec { enableParallelBuilding = true; - nativeBuildInputs = [ makeWrapper pkgconfig qmake ]; + nativeBuildInputs = [ makeWrapper pkgconfig qmake removeReferencesTo ]; buildInputs = [ poppler_utils libpng imagemagick libjpeg fontconfig podofo qtbase chmlib icu sqlite libusb1 libmtp xdg_utils wrapGAppsHook ] ++ (with python2Packages; [ - apsw cssselect cssutils dateutil dnspython html5-parser lxml mechanize netifaces pillow - python pyqt5 sip + apsw cssselect css-parser dateutil dnspython html5-parser lxml mechanize netifaces pillow + python pyqt5_with_qtwebkit sip regex msgpack # the following are distributed with calibre, but we use upstream instead odfpy @@ -58,8 +58,8 @@ stdenv.mkDerivation rec { export MAGICK_LIB=${imagemagick.out}/lib export FC_INC_DIR=${fontconfig.dev}/include/fontconfig export FC_LIB_DIR=${fontconfig.lib}/lib - export PODOFO_INC_DIR=${podofo}/include/podofo - export PODOFO_LIB_DIR=${podofo}/lib + export PODOFO_INC_DIR=${podofo.dev}/include/podofo + export PODOFO_LIB_DIR=${podofo.lib}/lib export SIP_BIN=${python2Packages.sip}/bin/sip ${python2Packages.python.interpreter} setup.py install --prefix=$out @@ -88,6 +88,15 @@ stdenv.mkDerivation rec { runHook postInstall ''; + # Remove some references to shrink the closure size. This reference (as of + # 2018-11-06) was a single string like the following: + # /nix/store/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-podofo-0.9.6-dev/include/podofo/base/PdfVariant.h + preFixup = '' + remove-references-to -t ${podofo.dev} $out/lib/calibre/calibre/plugins/podofo.so + ''; + + disallowedReferences = [ podofo.dev ]; + calibreDesktopItem = makeDesktopItem { name = "calibre"; desktopName = "calibre"; diff --git a/pkgs/applications/misc/calibre/dont_build_unrar_plugin.patch b/pkgs/applications/misc/calibre/dont_build_unrar_plugin.patch index 45e27984ed5..5164b80a0be 100644 --- a/pkgs/applications/misc/calibre/dont_build_unrar_plugin.patch +++ b/pkgs/applications/misc/calibre/dont_build_unrar_plugin.patch @@ -6,7 +6,7 @@ index 938ab24..1e095f8 100644 description = _('Extract common e-book formats from archive files ' '(ZIP/RAR). Also try to autodetect if they are actually ' 'CBZ/CBR files.') -- file_types = set(['zip', 'rar']) -+ file_types = set(['zip']) +- file_types = {'zip', 'rar'} ++ file_types = {'zip'} supported_platforms = ['windows', 'osx', 'linux'] on_import = True diff --git a/pkgs/applications/misc/cheat/default.nix b/pkgs/applications/misc/cheat/default.nix index ad3f6534659..1a162aca0d7 100644 --- a/pkgs/applications/misc/cheat/default.nix +++ b/pkgs/applications/misc/cheat/default.nix @@ -4,7 +4,7 @@ with python3Packages; buildPythonApplication rec { name = "${pname}-${version}"; pname = "cheat"; - version = "2.2.3"; + version = "2.3.1"; propagatedBuildInputs = [ docopt pygments ]; @@ -12,7 +12,7 @@ buildPythonApplication rec { owner = "chrisallenlane"; repo = "cheat"; rev = version; - sha256 = "1p9a54fax3b1ilqcwdlccy08ww3igwsyzcyikqivaxj5p6mqq6wl"; + sha256 = "1dcpjvbv648r8325qjf30m8b4cyrrjbzc2kvh40zy2mbjsa755zr"; }; # no tests available doCheck = false; diff --git a/pkgs/applications/misc/cherrytree/default.nix b/pkgs/applications/misc/cherrytree/default.nix index 6bd1cef7c1b..78059191c2c 100644 --- a/pkgs/applications/misc/cherrytree/default.nix +++ b/pkgs/applications/misc/cherrytree/default.nix @@ -4,11 +4,11 @@ with stdenv.lib; stdenv.mkDerivation rec { name = "cherrytree-${version}"; - version = "0.38.5"; + version = "0.38.7"; src = fetchurl { url = "https://www.giuspen.com/software/${name}.tar.xz"; - sha256 = "1ja3b14vm3yd26pf82p2qlld0flqkqvgdg2g33r5dav6wfq3pz6y"; + sha256 = "1ls7vz993hj5gd99imlrzahxznfg6fa4n77ikkj79va4csw9b892"; }; buildInputs = with pythonPackages; diff --git a/pkgs/applications/misc/chirp/default.nix b/pkgs/applications/misc/chirp/default.nix index 051e2c010a8..db67514cd07 100644 --- a/pkgs/applications/misc/chirp/default.nix +++ b/pkgs/applications/misc/chirp/default.nix @@ -3,11 +3,11 @@ stdenv.mkDerivation rec { name = "chirp-daily-${version}"; - version = "20180906"; + version = "20181018"; src = fetchurl { url = "https://trac.chirp.danplanet.com/chirp_daily/daily-${version}/${name}.tar.gz"; - sha256 = "00cq15892p46z1j1fl2pd17y7k4rc6cfz7gaxb446mshxrvbfgam"; + sha256 = "0jd7xi6q09b3djn1k7pj1sbqvw24kn7dcp9r6abvxily4pc1xhdr"; }; nativeBuildInputs = [ makeWrapper ]; diff --git a/pkgs/applications/misc/clipmenu/default.nix b/pkgs/applications/misc/clipmenu/default.nix index 6dd68123b13..7a47a0e3bc0 100644 --- a/pkgs/applications/misc/clipmenu/default.nix +++ b/pkgs/applications/misc/clipmenu/default.nix @@ -4,13 +4,13 @@ let in stdenv.mkDerivation rec { name = "clipmenu-${version}"; - version = "5.5.0"; + version = "5.6.0"; src = fetchFromGitHub { owner = "cdown"; repo = "clipmenu"; rev = version; - sha256 = "15if7bwqviyynbrcwrn04r418cfnxf2mkmq112696np24bggvljg"; + sha256 = "13hyarzazh6j33d808h3s5yk320wqzivc0ni9xm8kalvn4k3a0bq"; }; buildInputs = [ makeWrapper ]; diff --git a/pkgs/applications/misc/cool-retro-term/default.nix b/pkgs/applications/misc/cool-retro-term/default.nix index c9cc2d6db42..766161e521c 100644 --- a/pkgs/applications/misc/cool-retro-term/default.nix +++ b/pkgs/applications/misc/cool-retro-term/default.nix @@ -1,15 +1,15 @@ -{ stdenv, fetchFromGitHub, qtbase, qtquick1, qmltermwidget, -qtquickcontrols, qtgraphicaleffects, qmake }: +{ stdenv, fetchFromGitHub, qtbase, qtquick1, qmltermwidget +, qtquickcontrols, qtgraphicaleffects, qmake }: stdenv.mkDerivation rec { - version = "1.0.1"; + version = "1.1.0"; name = "cool-retro-term-${version}"; src = fetchFromGitHub { owner = "Swordfish90"; repo = "cool-retro-term"; rev = version; - sha256 = "1ah54crqv13xsg9cvlwmgyhz90xjjy3vy8pbn9i0vc0ljmpgkqd5"; + sha256 = "0gmigjpc19q7l94q4wzbrxh7cdb6zk3zscaijzwsz9364wsgzb47"; }; patchPhase = '' @@ -25,6 +25,8 @@ stdenv.mkDerivation rec { mv $out/usr/share $out/share mv $out/usr/bin $out/bin rmdir $out/usr + '' + stdenv.lib.optionalString stdenv.isDarwin '' + ln -s $out/bin/cool-retro-term.app/Contents/MacOS/cool-retro-term $out/bin/cool-retro-term ''; enableParallelBuilding = true; @@ -37,8 +39,8 @@ stdenv.mkDerivation rec { eye-candy, customizable, and reasonably lightweight. ''; homepage = https://github.com/Swordfish90/cool-retro-term; - license = with stdenv.lib.licenses; [ gpl2 gpl3 ]; - platforms = stdenv.lib.platforms.linux; + 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 39a87314ca7..ebc0a829774 100644 --- a/pkgs/applications/misc/copyq/default.nix +++ b/pkgs/applications/misc/copyq/default.nix @@ -5,13 +5,13 @@ stdenv.mkDerivation rec { name = "CopyQ-${version}"; - version = "3.6.1"; + version = "3.7.2"; src = fetchFromGitHub { owner = "hluk"; repo = "CopyQ"; rev = "v${version}"; - sha256 = "0drhafnr1d595wa8zwvmgmrrqb86navdk4iw6ly6gmh0i800wz0z"; + sha256 = "1f2q9lzs5z31rl689ai2hig4nrj8cg9g25hhsrj6r85q9vkwkqjs"; }; nativeBuildInputs = [ cmake ]; diff --git a/pkgs/applications/misc/coursera-dl/default.nix b/pkgs/applications/misc/coursera-dl/default.nix index a6afee13e47..0601514546f 100644 --- a/pkgs/applications/misc/coursera-dl/default.nix +++ b/pkgs/applications/misc/coursera-dl/default.nix @@ -22,6 +22,11 @@ in pythonPackages.buildPythonApplication rec { checkInputs = with pythonPackages; [ pytest mock ]; + postPatch = '' + substituteInPlace requirements.txt \ + --replace '==' '>=' + ''; + preConfigure = '' export LC_ALL=en_US.utf-8 ''; diff --git a/pkgs/applications/misc/cura/default.nix b/pkgs/applications/misc/cura/default.nix index f97b83a8507..f7907746d10 100644 --- a/pkgs/applications/misc/cura/default.nix +++ b/pkgs/applications/misc/cura/default.nix @@ -2,24 +2,26 @@ mkDerivation rec { name = "cura-${version}"; - version = "3.4.1"; + version = "3.6.0"; src = fetchFromGitHub { owner = "Ultimaker"; repo = "Cura"; rev = version; - sha256 = "03s9nf1aybbnbf1rzqja41m9g6991bbvrcly1lcrfqksianfn06w"; + sha256 = "0wzkbqdd1670smw1vnq634rkpcjwnhwcvimhvjq904gy2fylgr90"; }; materials = fetchFromGitHub { owner = "Ultimaker"; repo = "fdm_materials"; - rev = "3.4.1"; - sha256 = "1pw30clxqd7qgnidsyx6grizvlgfn8rhj6rd5ppkvv3rdjh0gj28"; + rev = version; + sha256 = "0g2dkph0ll7d9109n17vmfwb4fpc8lhyb1z1q68j8vblyvg08d12"; }; buildInputs = [ qtbase qtquickcontrols2 ]; - propagatedBuildInputs = with python3.pkgs; [ uranium zeroconf pyserial numpy-stl ]; + propagatedBuildInputs = with python3.pkgs; [ + libsavitar numpy-stl pyserial requests uranium zeroconf + ]; nativeBuildInputs = [ cmake python3.pkgs.wrapPython ]; cmakeFlags = [ @@ -44,7 +46,7 @@ mkDerivation rec { meta = with lib; { description = "3D printer / slicing GUI built on top of the Uranium framework"; homepage = https://github.com/Ultimaker/Cura; - license = licenses.agpl3; + license = licenses.lgpl3Plus; platforms = platforms.linux; maintainers = with maintainers; [ abbradar ]; }; diff --git a/pkgs/applications/misc/curaengine/default.nix b/pkgs/applications/misc/curaengine/default.nix index 75d1936ba85..22215a7e2c6 100644 --- a/pkgs/applications/misc/curaengine/default.nix +++ b/pkgs/applications/misc/curaengine/default.nix @@ -2,23 +2,15 @@ stdenv.mkDerivation rec { name = "curaengine-${version}"; - version = "3.4.1"; + version = "3.6.0"; src = fetchFromGitHub { owner = "Ultimaker"; repo = "CuraEngine"; rev = version; - sha256 = "083jmhzmb60rmqw0fhbnlxyblzkmpn3k6zc75xq90x5g3h60wib4"; + sha256 = "1iwmblvs3qw57698i8bbazyxha18bj9irnkcscdb0596g8q93fcm"; }; - patches = [ - # Fixed upstream, but not yet released - (fetchpatch { - url = "https://github.com/Ultimaker/CuraEngine/commit/5aad55bf67e52ce5bdb27a3925af8a4cab441b38.patch"; - sha256 = "1hxbslzhkvdg8p33mvlbrpw62gwfqpsdbfca6yhdng9hifl86j3f"; - }) - ]; - nativeBuildInputs = [ cmake ]; buildInputs = [ libarcus stb ]; diff --git a/pkgs/applications/misc/dbeaver/default.nix b/pkgs/applications/misc/dbeaver/default.nix index 681ee5b0bec..de42f2d9657 100644 --- a/pkgs/applications/misc/dbeaver/default.nix +++ b/pkgs/applications/misc/dbeaver/default.nix @@ -7,7 +7,7 @@ stdenv.mkDerivation rec { name = "dbeaver-ce-${version}"; - version = "5.2.1"; + version = "5.3.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 = "0zm320cdpypv2s58gcg89mdkir9xpz1824dscfqkmahx89g1ma81"; + sha256 = "05ra1bicah588q5n114vd9jqk9qdjix7b0zv5z83cagksb3n52rc"; }; installPhase = '' diff --git a/pkgs/applications/misc/devilspie2/default.nix b/pkgs/applications/misc/devilspie2/default.nix index 1ea45c3574a..4fb9ca5fa71 100644 --- a/pkgs/applications/misc/devilspie2/default.nix +++ b/pkgs/applications/misc/devilspie2/default.nix @@ -5,7 +5,7 @@ stdenv.mkDerivation rec { version = "0.43"; src = fetchurl { - url = "http://download.savannah.gnu.org/releases/devilspie2/devilspie2_${version}-src.tar.gz"; + url = "https://download.savannah.gnu.org/releases/devilspie2/devilspie2_${version}-src.tar.gz"; sha256 = "0a7qjl2qd4099kkkbwa1y2fk48s21jlr409lf9mij7mlc9yc3zzc"; }; diff --git a/pkgs/applications/misc/digitalbitbox/default.nix b/pkgs/applications/misc/digitalbitbox/default.nix index 3e6a6ab53f7..939e2e9fc16 100644 --- a/pkgs/applications/misc/digitalbitbox/default.nix +++ b/pkgs/applications/misc/digitalbitbox/default.nix @@ -6,7 +6,7 @@ , libcap , libevent , libtool -, libqrencode +, qrencode , udev , libusb , makeWrapper @@ -74,7 +74,7 @@ in stdenv.mkDerivation rec { libtool udev libusb - libqrencode + qrencode qtbase qtwebsockets diff --git a/pkgs/applications/misc/dmrconfig/default.nix b/pkgs/applications/misc/dmrconfig/default.nix new file mode 100644 index 00000000000..7125e37f7f9 --- /dev/null +++ b/pkgs/applications/misc/dmrconfig/default.nix @@ -0,0 +1,42 @@ +{ stdenv, fetchFromGitHub +, libusb1, systemd }: + +stdenv.mkDerivation rec { + name = "dmrconfig-${version}"; + version = "1.1"; + + src = fetchFromGitHub { + owner = "sergev"; + repo = "dmrconfig"; + rev = version; + sha256 = "1qwix75z749628w583fwp7m7kxbj0k3g159sxb7vgqxbadqqz1ab"; + }; + + buildInputs = [ + libusb1 systemd + ]; + + preConfigure = '' + substituteInPlace Makefile \ + --replace /usr/local/bin/dmrconfig $out/bin/dmrconfig + ''; + + makeFlags = "VERSION=${version} GITCOUNT=0"; + + installPhase = '' + mkdir -p $out/bin $out/lib/udev/rules.d + make install + install 99-dmr.rules $out/lib/udev/rules.d/99-dmr.rules + ''; + + meta = with stdenv.lib; { + description = "Configuration utility for DMR radios"; + longDescription = '' + DMRconfig is a utility for programming digital radios via USB programming cable. + ''; + homepage = https://github.com/sergev/dmrconfig; + license = licenses.asl20; + maintainers = [ maintainers.etu ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/applications/misc/dunst/default.nix b/pkgs/applications/misc/dunst/default.nix index 12f1f78acb9..b28e7673992 100644 --- a/pkgs/applications/misc/dunst/default.nix +++ b/pkgs/applications/misc/dunst/default.nix @@ -1,7 +1,7 @@ { stdenv, fetchFromGitHub, makeWrapper , pkgconfig, which, perl, libXrandr , cairo, dbus, systemd, gdk_pixbuf, glib, libX11, libXScrnSaver -, libXinerama, libnotify, libxdg_basedir, pango, xproto, librsvg, dunstify ? false +, libXinerama, libnotify, libxdg_basedir, pango, xorgproto, librsvg, dunstify ? false }: stdenv.mkDerivation rec { @@ -19,7 +19,7 @@ stdenv.mkDerivation rec { buildInputs = [ cairo dbus gdk_pixbuf glib libX11 libXScrnSaver - libXinerama libnotify libxdg_basedir pango xproto librsvg libXrandr + libXinerama libnotify libxdg_basedir pango xorgproto librsvg libXrandr ]; outputs = [ "out" "man" ]; diff --git a/pkgs/applications/misc/eaglemode/default.nix b/pkgs/applications/misc/eaglemode/default.nix index b08ce5baa5b..255396a7950 100644 --- a/pkgs/applications/misc/eaglemode/default.nix +++ b/pkgs/applications/misc/eaglemode/default.nix @@ -1,35 +1,36 @@ -{ stdenv, fetchurl, perl, libX11, libjpeg, libpng, libtiff, pkgconfig, -librsvg, glib, gtk2, libXext, libXxf86vm, poppler, xineLib }: +{ stdenv, fetchurl, perl, libX11, libXinerama, libjpeg, libpng, libtiff, pkgconfig, +librsvg, glib, gtk2, libXext, libXxf86vm, poppler, xineLib, ghostscript, makeWrapper }: stdenv.mkDerivation rec { - name = "eaglemode-0.86.0"; + name = "eaglemode-${version}"; + version = "0.94.0"; src = fetchurl { url = "mirror://sourceforge/eaglemode/${name}.tar.bz2"; - sha256 = "1a2hzyck95g740qg4p4wd4fjwsmlknh75i9sbx5r5v9pyr4i3m4f"; + sha256 = "1sr3bd9y9j2svqvdwhrak29yy9cxf92w9vq2cim7a8hzwi9qfy9k"; }; nativeBuildInputs = [ pkgconfig ]; - buildInputs = [ perl libX11 libjpeg libpng libtiff - librsvg glib gtk2 libXxf86vm libXext poppler xineLib ]; + buildInputs = [ perl libX11 libXinerama libjpeg libpng libtiff + librsvg glib gtk2 libXxf86vm libXext poppler xineLib ghostscript makeWrapper ]; - # The program tries to dlopen both Xxf86vm and Xext, so we use the + # The program tries to dlopen Xxf86vm, Xext and Xinerama, so we use the # trick on NIX_LDFLAGS and dontPatchELF to make it find them. # I use 'yes y' to skip a build error linking with xineLib, # because xine stopped exporting "_x_vo_new_port" - # http://sourceforge.net/projects/eaglemode/forums/forum/808824/topic/5115261 + # https://sourceforge.net/projects/eaglemode/forums/forum/808824/topic/5115261 buildPhase = '' - export NIX_LDFLAGS="$NIX_LDFLAGS -lXxf86vm -lXext" + export NIX_LDFLAGS="$NIX_LDFLAGS -lXxf86vm -lXext -lXinerama" perl make.pl build ''; dontPatchELF = true; + # eaglemode expects doc to be in the root directory + forceShare = [ "man" "info" ]; installPhase = '' perl make.pl install dir=$out - # I don't like this... but it seems the way they plan to run it by now. - # Run 'eaglemode.sh', not 'eaglemode'. - ln -s $out/eaglemode.sh $out/bin/eaglemode.sh + wrapProgram $out/bin/eaglemode --set EM_DIR "$out" --prefix LD_LIBRARY_PATH : "$out/lib" --prefix PATH : "${ghostscript}/bin" ''; meta = with stdenv.lib; { @@ -38,6 +39,5 @@ stdenv.mkDerivation rec { license = licenses.gpl3; maintainers = with maintainers; [ ]; platforms = platforms.linux; - broken = true; }; } diff --git a/pkgs/applications/misc/electron-cash/default.nix b/pkgs/applications/misc/electron-cash/default.nix index 8105f4d61bd..fff67b0add6 100644 --- a/pkgs/applications/misc/electron-cash/default.nix +++ b/pkgs/applications/misc/electron-cash/default.nix @@ -7,14 +7,14 @@ let in python3Packages.buildPythonApplication rec { - version = "3.3.1"; + version = "3.3.2"; name = "electron-cash-${version}"; src = fetchurl { url = "https://electroncash.org/downloads/${version}/win-linux/ElectronCash-${version}.tar.gz"; # Verified using official SHA-1 and signature from # https://github.com/fyookball/keys-n-hashes - sha256 = "1jdy89rfdwc2jadx3rqj5yvynpcn90cx6482ax9f1cj9gfxp9j2b"; + sha256 = "4538044cfaa4f87a847635849e0733f32b183ac79abbd2797689c86dc3cb0d53"; }; propagatedBuildInputs = with python3Packages; [ @@ -29,7 +29,7 @@ python3Packages.buildPythonApplication rec { pysocks qrcode requests - tlslite + tlslite-ng # plugins keepkey diff --git a/pkgs/applications/misc/electrum/dash.nix b/pkgs/applications/misc/electrum/dash.nix index c98efa547b3..98ed10b0c7c 100644 --- a/pkgs/applications/misc/electrum/dash.nix +++ b/pkgs/applications/misc/electrum/dash.nix @@ -22,7 +22,7 @@ python2Packages.buildPythonApplication rec { qrcode requests pyaes - tlslite + tlslite-ng x11_hash mnemonic jsonrpclib diff --git a/pkgs/applications/misc/electrum/default.nix b/pkgs/applications/misc/electrum/default.nix index 537627a10d2..c6f83104fb1 100644 --- a/pkgs/applications/misc/electrum/default.nix +++ b/pkgs/applications/misc/electrum/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, python3, python3Packages, zbar }: +{ stdenv, fetchFromGitHub, python3, python3Packages, zbar, secp256k1 }: let qdarkstyle = python3Packages.buildPythonPackage rec { @@ -13,15 +13,20 @@ let in python3Packages.buildPythonApplication rec { - name = "electrum-${version}"; - version = "3.2.3"; + pname = "electrum"; + version = "3.3.2"; - src = fetchurl { - url = "https://download.electrum.org/${version}/Electrum-${version}.tar.gz"; - sha256 = "022iw4cq0c009wvqn7wd815jc0nv8198lq3cawn8h6c28hw2mhs1"; + src = fetchFromGitHub { + owner = "spesmilo"; + repo = "electrum"; + rev = version; + sha256 = "1jsn02azdydpq4plr2552s7ijyqgw6zqm2zx8skwsalgbwmhx12i"; }; propagatedBuildInputs = with python3Packages; [ + aiorpcx + aiohttp + aiohttp-socks dnspython ecdsa jsonrpclib-pelix @@ -35,8 +40,7 @@ python3Packages.buildPythonApplication rec { qdarkstyle qrcode requests - tlslite - typing + tlslite-ng # plugins keepkey @@ -53,6 +57,7 @@ python3Packages.buildPythonApplication rec { # Recording the creation timestamps introduces indeterminism to the build sed -i '/Created: .*/d' electrum/gui/qt/icons_rc.py sed -i "s|name = 'libzbar.*'|name='${zbar}/lib/libzbar.so'|" electrum/qrscanner.py + substituteInPlace ./electrum/ecc_fast.py --replace libsecp256k1.so.0 ${secp256k1}/lib/libsecp256k1.so.0 ''; postInstall = '' @@ -65,10 +70,10 @@ python3Packages.buildPythonApplication rec { --replace "Exec=electrum %u" "Exec=$out/bin/electrum %u" ''; - doCheck = false; + checkInputs = with python3Packages; [ pytest ]; - doInstallCheck = true; - installCheckPhase = '' + checkPhase = '' + py.test electrum/tests $out/bin/electrum help >/dev/null ''; diff --git a/pkgs/applications/misc/evilvte/default.nix b/pkgs/applications/misc/evilvte/default.nix index b72fcde4a9e..f088016938a 100644 --- a/pkgs/applications/misc/evilvte/default.nix +++ b/pkgs/applications/misc/evilvte/default.nix @@ -15,7 +15,7 @@ stdenv.mkDerivation rec { buildInputs = [ gnome2.vte glib pango gnome2.gtk cairo gdk_pixbuf atk freetype xorg.libX11 - xorg.xproto xorg.kbproto xorg.libXext xorg.xextproto makeWrapper pkgconfig + xorg.xorgproto xorg.libXext makeWrapper pkgconfig ]; buildPhase = '' diff --git a/pkgs/applications/misc/extract_url/default.nix b/pkgs/applications/misc/extract_url/default.nix index 389ac7dfb1f..2b7888c9cd0 100644 --- a/pkgs/applications/misc/extract_url/default.nix +++ b/pkgs/applications/misc/extract_url/default.nix @@ -1,14 +1,13 @@ -{ stdenv, lib, fetchFromGitHub, makeWrapper, perl -, MIMEtools, HTMLParser -, cursesSupport ? true, CursesUI -, uriFindSupport ? true, URIFind +{ stdenv, lib, fetchFromGitHub, makeWrapper, perlPackages +, cursesSupport ? true +, uriFindSupport ? true }: let perlDeps = - [ MIMEtools HTMLParser ] - ++ lib.optional cursesSupport CursesUI - ++ lib.optional uriFindSupport URIFind; + [ perlPackages.MIMEtools perlPackages.HTMLParser ] + ++ lib.optional cursesSupport perlPackages.CursesUI + ++ lib.optional uriFindSupport perlPackages.URIFind; in stdenv.mkDerivation rec { name = "extract_url-${version}"; @@ -22,14 +21,14 @@ in stdenv.mkDerivation rec { }; nativeBuildInputs = [ makeWrapper ]; - buildInputs = [ perl ] ++ perlDeps; + buildInputs = [ perlPackages.perl ] ++ perlDeps; makeFlags = [ "prefix=$(out)" ]; installFlags = [ "INSTALL=install" ]; postFixup = '' wrapProgram "$out/bin/extract_url" \ - --set PERL5LIB "${lib.makeFullPerlPath perlDeps}" + --set PERL5LIB "${perlPackages.makeFullPerlPath perlDeps}" ''; meta = with lib; { diff --git a/pkgs/applications/misc/far2l/default.nix b/pkgs/applications/misc/far2l/default.nix index 3cdd4fb0bfe..51e9c4371b5 100644 --- a/pkgs/applications/misc/far2l/default.nix +++ b/pkgs/applications/misc/far2l/default.nix @@ -67,6 +67,8 @@ stdenv.mkDerivation rec { mkdir -p $out/share/icons/hicolor/$size/apps convert -size $size ../far2l/DE/icons/hicolor/$size/apps/far2l.svg $out/share/icons/hicolor/$size/apps/far2l.png done + '' + stdenv.lib.optionalString stdenv.isDarwin '' + wrapProgram $out/bin/far2l --argv0 $out/bin/far2l ''; stripDebugList = "bin share"; diff --git a/pkgs/applications/misc/fbreader/default.nix b/pkgs/applications/misc/fbreader/default.nix index 548966764fe..e7d0e6a63a5 100644 --- a/pkgs/applications/misc/fbreader/default.nix +++ b/pkgs/applications/misc/fbreader/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchFromGitHub, pkgconfig +{ stdenv, fetchFromGitHub, fetchpatch, pkgconfig , bzip2, curl, expat, fribidi, libunibreak, sqlite, zlib , uiTarget ? if !stdenv.isDarwin then "desktop" else "macosx" , uiType ? if !stdenv.isDarwin then "qt4" else "cocoa" @@ -25,7 +25,14 @@ stdenv.mkDerivation { sha256 = "0lzafk02mv0cf2l2a61q5y4743zi913byik4bw1ix0gr1drnsa7y"; }; - patches = [ ./typecheck.patch ]; + patches = [ + ./typecheck.patch + (fetchpatch { + name = "curl-7_62.diff"; # see https://github.com/geometer/FBReader/pull/311 + url = "https://github.com/geometer/FBReader/commit/b7c78e965d06f780.diff"; + sha256 = "1dgnx9wps7hcf8fkidc7037vcf92fr3ccnjx7bgxm9x02j0hngjg"; + }) + ]; postPatch = '' cat << EOF > makefiles/target.mk diff --git a/pkgs/applications/misc/fff/default.nix b/pkgs/applications/misc/fff/default.nix new file mode 100644 index 00000000000..7a89f6952f2 --- /dev/null +++ b/pkgs/applications/misc/fff/default.nix @@ -0,0 +1,31 @@ +{ stdenv, fetchFromGitHub, makeWrapper, xdg_utils, file, coreutils }: + +stdenv.mkDerivation rec { + name = "fff"; + version = "1.5"; + + src = fetchFromGitHub { + owner = "dylanaraps"; + repo = name; + rev = version; + sha256 = "0jvv9mwj0qw3rmg1f17wbvx9fl5kxzmkp6j1113l3a6w1na83js0"; + }; + + pathAdd = stdenv.lib.makeSearchPath "bin" [ xdg_utils file coreutils ]; + buildInputs = [ makeWrapper ]; + + installPhase = '' + install -D fff "$out/bin/fff" + install -D README.md "$out/share/doc/fff/README.md" + install -D fff.1 "$out/share/man/man1/fff.1" + wrapProgram $out/bin/fff --prefix PATH : ${pathAdd} + ''; + + meta = with stdenv.lib; { + description = "Fucking Fast File-Manager"; + homepage = https://github.com/dylanaraps/fff; + license = licenses.mit; + maintainers = [ maintainers.tadeokondrak ]; + platforms = platforms.all; + }; +} diff --git a/pkgs/applications/misc/flrig/default.nix b/pkgs/applications/misc/flrig/default.nix index baee3010d69..64d2677d4e1 100644 --- a/pkgs/applications/misc/flrig/default.nix +++ b/pkgs/applications/misc/flrig/default.nix @@ -6,13 +6,13 @@ }: stdenv.mkDerivation rec { - version = "1.3.40"; + version = "1.3.41"; pname = "flrig"; name = "${pname}-${version}"; src = fetchurl { url = "mirror://sourceforge/fldigi/${name}.tar.gz"; - sha256 = "1wr7bb2577gha7y3a8m5w60m4xdv8m0199cj2c6349sgbds373w9"; + sha256 = "0vh14azg3pppyg3fb7kf6q3ighw1ka9m60jf2dzsd77f4hidhqx4"; }; buildInputs = [ diff --git a/pkgs/applications/misc/font-manager/default.nix b/pkgs/applications/misc/font-manager/default.nix index 54392b03bfb..998074e8aa0 100644 --- a/pkgs/applications/misc/font-manager/default.nix +++ b/pkgs/applications/misc/font-manager/default.nix @@ -1,6 +1,6 @@ { stdenv, fetchFromGitHub, automake, autoconf, libtool, pkgconfig, file, intltool, libxml2, json-glib , sqlite, itstool, - librsvg, vala, gnome3, wrapGAppsHook, gobjectIntrospection + librsvg, vala, gnome3, wrapGAppsHook, gobject-introspection }: stdenv.mkDerivation rec { @@ -24,7 +24,7 @@ stdenv.mkDerivation rec { gnome3.yelp-tools wrapGAppsHook # For setup hook - gobjectIntrospection + gobject-introspection ]; buildInputs = [ diff --git a/pkgs/applications/misc/fsv/default.nix b/pkgs/applications/misc/fsv/default.nix new file mode 100644 index 00000000000..782a37040d8 --- /dev/null +++ b/pkgs/applications/misc/fsv/default.nix @@ -0,0 +1,47 @@ +{ stdenv, fetchurl, fetchFromGitHub, autoreconfHook +, libtool, pkgconfig, gtk2, libGLU, file +}: + +let + gtkglarea = stdenv.mkDerivation rec { + name = "gtkglarea-${version}"; + version = "2.1.0"; + src = fetchurl { + url = "mirror://gnome/sources/gtkglarea/2.1/${name}.tar.xz"; + sha256 = "1pl2vdj6l64j864ilhkq1bcggb3hrlxjwk5m029i7xfjfxc587lf"; + }; + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ gtk2 libGLU ]; + hardeningDisable = [ "format" ]; + }; + +in stdenv.mkDerivation rec { + name = "fsv-${version}"; + version = "0.9-1"; + + src = fetchFromGitHub { + owner = "mcuelenaere"; + repo = "fsv"; + rev = name; + sha256 = "0n09jd7yqj18mx6zqbg7kab4idg5llr15g6avafj74fpg1h7iimj"; + }; + + nativeBuildInputs = [ autoreconfHook libtool pkgconfig ]; + buildInputs = [ file gtk2 libGLU gtkglarea ]; + + meta = with stdenv.lib; { + description = "fsv is a file system visualizer in cyberspace"; + longDescription = '' + fsv (pronounced eff-ess-vee) is a file system visualizer in cyberspace. + It lays out files and directories in three dimensions, geometrically + representing the file system hierarchy to allow visual overview + and analysis. fsv can visualize a modest home directory, a workstation's + 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; + license = licenses.lgpl2; + platforms = platforms.mesaPlatforms; + maintainers = with maintainers; [ rnhmjoj ]; + }; +} diff --git a/pkgs/applications/misc/gImageReader/default.nix b/pkgs/applications/misc/gImageReader/default.nix new file mode 100644 index 00000000000..75783805fa3 --- /dev/null +++ b/pkgs/applications/misc/gImageReader/default.nix @@ -0,0 +1,70 @@ +{ stdenv, fetchFromGitHub, cmake, pkgconfig, libuuid +, sane-backends, podofo, libjpeg, djvulibre, libxmlxx3, libzip, tesseract +, intltool, poppler, json-glib +, ninja +, python3 + +# Gtk deps +# upstream gImagereader supports Qt too +, gtk3, gobject-introspection, wrapGAppsHook +, gnome3, gtkspell3, gtkspellmm, cairomm +}: + +let + variant = "gtk"; + pythonEnv = python3.withPackages( ps: with ps;[ pygobject3 ] ); +in +stdenv.mkDerivation rec { + name = "gImageReader-${version}"; + version = "3.3.0"; + + src = fetchFromGitHub { + owner= "manisandro"; + repo = "gImageReader"; + rev = "v${version}"; + sha256 = "0pjk4kr7bc5q4hi1xf7na2zln9fyqdazgzq62r3bg41nzy7fakcz"; + }; + + nativeBuildInputs = [ + cmake ninja + intltool + pkgconfig + pythonEnv + + # Gtk specific + wrapGAppsHook + gobject-introspection + ]; + + buildInputs = [ + libxmlxx3 + libzip + libuuid + sane-backends + podofo + libjpeg + djvulibre + tesseract + poppler + + # Gtk specific + gnome3.gtkmm + gtkspell3 + gtkspellmm + gnome3.gtksourceview + gnome3.gtksourceviewmm + cairomm + json-glib + ]; + + # interface type can be where is either gtk, qt5, qt4 + cmakeFlags = [ "-DINTERFACE_TYPE=${variant}" ]; + + meta = with stdenv.lib; { + description = "A simple Gtk/Qt front-end to tesseract-ocr"; + homepage = https://github.com/manisandro/gImageReader; + license = licenses.gpl3Plus; + maintainers = with maintainers; [teto]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/applications/misc/get_iplayer/default.nix b/pkgs/applications/misc/get_iplayer/default.nix index d024b0fce99..5e8bb629ce2 100644 --- a/pkgs/applications/misc/get_iplayer/default.nix +++ b/pkgs/applications/misc/get_iplayer/default.nix @@ -1,11 +1,11 @@ -{stdenv, fetchFromGitHub, atomicparsley, flvstreamer, ffmpeg, makeWrapper, perl, buildPerlPackage, perlPackages, rtmpdump}: +{stdenv, fetchFromGitHub, atomicparsley, flvstreamer, ffmpeg, makeWrapper, perl, perlPackages, rtmpdump}: with stdenv.lib; -buildPerlPackage rec { +perlPackages.buildPerlPackage rec { name = "get_iplayer-${version}"; version = "2.99"; - + src = fetchFromGitHub { owner = "get-iplayer"; repo = "get_iplayer"; @@ -34,5 +34,5 @@ buildPerlPackage rec { homepage = https://squarepenguin.co.uk/; platforms = platforms.all; }; - + } diff --git a/pkgs/applications/misc/girara/default.nix b/pkgs/applications/misc/girara/default.nix index 0dfeac3cf8b..919f20f1398 100644 --- a/pkgs/applications/misc/girara/default.nix +++ b/pkgs/applications/misc/girara/default.nix @@ -3,11 +3,11 @@ stdenv.mkDerivation rec { name = "girara-${version}"; - version = "0.3.1"; + version = "0.3.2"; src = fetchurl { url = "https://pwmt.org/projects/girara/download/${name}.tar.xz"; - sha256 = "1ddwap5q5cnfdr1q1b110wy7mw1z3khn86k01jl8lqmn02n9nh1w"; + sha256 = "1kc6n1mxjxa7wvwnqy94qfg8l9jvx9qrvrr2kc7m4g0z20x3a00p"; }; nativeBuildInputs = [ meson ninja pkgconfig gettext ]; diff --git a/pkgs/applications/misc/gksu/default.nix b/pkgs/applications/misc/gksu/default.nix index 712c2081f10..4af776674e6 100644 --- a/pkgs/applications/misc/gksu/default.nix +++ b/pkgs/applications/misc/gksu/default.nix @@ -46,7 +46,7 @@ stdenv.mkDerivation rec { programs that need to ask a user's password to run another program as another user. ''; - homepage = http://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 1eb0d0048f6..0cac0e6fd3f 100644 --- a/pkgs/applications/misc/glava/default.nix +++ b/pkgs/applications/misc/glava/default.nix @@ -1,21 +1,10 @@ -{ stdenv, fetchgit, fetchurl, writeScript +{ stdenv, writeScript, fetchFromGitHub , libGL, libX11, libXext, python3, libXrandr, libXrender, libpulseaudio, libXcomposite , enableGlfw ? false, glfw }: let inherit (stdenv.lib) optional makeLibraryPath; - # gl.xml - gl = fetchurl { - url = https://raw.githubusercontent.com/KhronosGroup/OpenGL-Registry/56312cfe680e4be5ae61bbf1c628e420f8731718/xml/gl.xml; - sha256 = "1c45bcgaxiic5gmb3gkrd9qcvascvij97vz5y6fc3a2y7x3gjc5l"; - }; - # EGL 1.5 - egl = fetchurl { - url = https://www.khronos.org/registry/EGL/api/KHR/khrplatform.h; - sha256 = "0p0vs4siiya05cvbqq7cw3ci2zvvlfh8kycgm9k9cwvmrkj08349"; - }; - wrapperScript = writeScript "glava" '' #!${stdenv.shell} case "$1" in @@ -33,12 +22,13 @@ let in stdenv.mkDerivation rec { name = "glava-${version}"; - version = "1.5.1"; + version = "1.5.8"; - src = fetchgit { - url = "https://github.com/wacossusca34/glava.git"; + src = fetchFromGitHub { + owner = "wacossusca34"; + repo = "glava"; rev = "v${version}"; - sha256 = "1k8x0a0g2pm7ficsk4az9s7mjbm85a987apjg5c4y6iyldxgd6sb"; + sha256 = "0mps82qw2mhxx8069jvqz1v8n4x7ybrrjv92ij6cms8xi1y8v0fm"; }; buildInputs = [ @@ -54,12 +44,8 @@ in python3 ]; - patchPhase = '' - mkdir -p glad/include/KHR - - cp ${gl} glad/gl.xml - cp ${egl} glad/include/KHR/khrplatform.h - patchShebangs . + preConfigure = '' + export CFLAGS="-march=native" ''; makeFlags = optional (!enableGlfw) "DISABLE_GLFW=1"; diff --git a/pkgs/applications/misc/glom/default.nix b/pkgs/applications/misc/glom/default.nix new file mode 100644 index 00000000000..9e71837c0f5 --- /dev/null +++ b/pkgs/applications/misc/glom/default.nix @@ -0,0 +1,132 @@ +{ stdenv +, fetchFromGitLab +, pkgconfig +, autoconf +, automake +, libtool +, mm-common +, intltool +, itstool +, doxygen +, graphviz +, makeFontsConf +, freefont_ttf +, boost +, libxmlxx3 +, libxslt +, libgdamm +, libarchive +, libepc +, python3 +, ncurses +, glibmm +, gtk3 +, openssl +, gtkmm3 +, goocanvasmm2 +, evince +, isocodes +, gtksourceviewmm4 +, postgresql +, gnome3 +, gobject-introspection +, wrapGAppsHook +}: + +let + gda = libgdamm.override { + mysqlSupport = true; + postgresSupport = true; + }; + python = python3.withPackages (pkgs: with pkgs; [ pygobject3 ]); + sphinx-build = python3.pkgs.sphinx.overrideAttrs (super: { + postFixup = super.postFixup or "" + '' + # Do not propagate Python + rm $out/nix-support/propagated-build-inputs + ''; + }); + boost_python = boost.override { enablePython = true; inherit python; }; +in stdenv.mkDerivation rec { + pname = "glom"; + version = "unstable-2018-12-16"; + + outputs = [ "out" "lib" "dev" "doc" "devdoc" ]; + + src = fetchFromGitLab { + domain = "gitlab.gnome.org"; + owner = "GNOME"; + repo = pname; + rev = "fa5ff04f209f35bf3e97bc1c3eb1d1138d6172ce"; + sha256 = "145hnk96xa4v35i3a3mbf3fnx4nlk8cksc0qhm7nrh8cnnrbdfgn"; + }; + + nativeBuildInputs = [ + pkgconfig + autoconf + automake + libtool + mm-common + intltool + gnome3.yelp-tools + itstool + doxygen + graphviz + sphinx-build + wrapGAppsHook + gobject-introspection # for setup hook + ]; + + buildInputs = [ + boost_python + glibmm + gtk3 + openssl + libxmlxx3 + libxslt + gda + libarchive + libepc + python + ncurses # for python + gtkmm3 + goocanvasmm2 + evince + isocodes + python3.pkgs.pygobject3 + gtksourceviewmm4 + postgresql # for pg_config + ]; + + enableParallelBuilding = true; + + preConfigure = "NOCONFIGURE=1 ./autogen.sh"; + + configureFlags = [ + "--with-boost-python=boost_python${stdenv.lib.versions.major python3.version}${stdenv.lib.versions.minor python3.version}" + ]; + + makeFlags = [ + "libdocdir=${placeholder "doc"}/share/doc/$(book_name)" + "devhelpdir=${placeholder "devdoc"}/share/devhelp/books/$(book_name)" + ]; + + # Fontconfig error: Cannot load default config file + FONTCONFIG_FILE = makeFontsConf { + fontDirectories = [ freefont_ttf ]; + }; + + preFixup = '' + gappsWrapperArgs+=( + --prefix PYTHONPATH : "${placeholder "out"}/${python3.sitePackages}" + --set PYTHONHOME "${python}" + ) + ''; + + meta = with stdenv.lib; { + description = "An easy-to-use database designer and user interface"; + homepage = http://www.glom.org/; + license = [ licenses.lgpl2 licenses.gpl2 ]; + maintainers = gnome3.maintainers; + platforms = platforms.linux; + }; +} diff --git a/pkgs/applications/misc/gnome-recipes/default.nix b/pkgs/applications/misc/gnome-recipes/default.nix new file mode 100644 index 00000000000..154af4efc9b --- /dev/null +++ b/pkgs/applications/misc/gnome-recipes/default.nix @@ -0,0 +1,79 @@ +{ stdenv +, fetchurl +, meson +, ninja +, pkgconfig +, gnome3 +, desktop-file-utils +, gettext +, itstool +, python3 +, wrapGAppsHook +, gtk3 +, glib +, libsoup +, gnome-online-accounts +, rest +, json-glib +, gnome-autoar +, gspell +, libcanberra }: + +let + pname = "gnome-recipes"; + version = "2.0.2"; +in stdenv.mkDerivation rec { + name = "${pname}-${version}"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; + sha256 = "1yymii3yf823d9x28fbhqdqm1wa30s40j94x0am9fjj0nzyd5s8v"; + }; + + nativeBuildInputs = [ + meson + ninja + pkgconfig + desktop-file-utils + gettext + itstool + python3 + wrapGAppsHook + ]; + + buildInputs = [ + gtk3 + glib + libsoup + gnome-online-accounts + rest + json-glib + gnome-autoar + gspell + libcanberra + ]; + + # https://github.com/NixOS/nixpkgs/issues/36468 + # https://gitlab.gnome.org/GNOME/recipes/issues/76 + NIX_CFLAGS_COMPILE = "-I${gnome3.glib.dev}/include/gio-unix-2.0"; + + postPatch = '' + chmod +x src/list_to_c.py + patchShebangs src/list_to_c.py + patchShebangs meson_post_install.py + ''; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + }; + }; + + meta = with stdenv.lib; { + description = "Recipe management application for GNOME"; + homepage = https://wiki.gnome.org/Apps/Recipes; + maintainers = gnome3.maintainers; + 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 0f7a89b3c52..f5420a0c944 100644 --- a/pkgs/applications/misc/gnome-usage/default.nix +++ b/pkgs/applications/misc/gnome-usage/default.nix @@ -4,13 +4,13 @@ let pname = "gnome-usage"; - version = "3.28.0"; + version = "3.30.0"; in stdenv.mkDerivation rec { name = "${pname}-${version}"; src = fetchurl { url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; - sha256 = "0130bwinpkz307nalw6ndi5mk38k5g6jna4gbw2916d54df6a4nq"; + sha256 = "0f1vccw916az8hzsqmx6f57jvl68s3sbd3qk4rpwn42ks1v7nmsh"; }; nativeBuildInputs = [ meson ninja pkgconfig vala gettext libxml2 desktop-file-utils wrapGAppsHook ]; diff --git a/pkgs/applications/misc/gnss-sdr/default.nix b/pkgs/applications/misc/gnss-sdr/default.nix index 0bb0926f048..6cbdea8c686 100644 --- a/pkgs/applications/misc/gnss-sdr/default.nix +++ b/pkgs/applications/misc/gnss-sdr/default.nix @@ -47,6 +47,7 @@ stdenv.mkDerivation rec { cmakeFlags = [ "-DGFlags_ROOT_DIR=${google-gflags}/lib" "-DGLOG_INCLUDE_DIR=${glog}/include" + "-DENABLE_UNIT_TESTING=OFF" # gnss-sdr doesn't truly depend on BLAS or LAPACK, as long as # armadillo is built using both, so skip checking for them. diff --git a/pkgs/applications/misc/gnuradio/default.nix b/pkgs/applications/misc/gnuradio/default.nix index a7c00cceaa7..f9a50313c47 100644 --- a/pkgs/applications/misc/gnuradio/default.nix +++ b/pkgs/applications/misc/gnuradio/default.nix @@ -50,6 +50,10 @@ stdenv.mkDerivation rec { Mako cheetah numpy scipy matplotlib pyqt4 pygtk wxPython pyopengl ]; + NIX_LDFLAGS = [ + "-lpthread" + ]; + enableParallelBuilding = true; postPatch = '' diff --git a/pkgs/applications/misc/gnuradio/gsm.nix b/pkgs/applications/misc/gnuradio/gsm.nix index 6e0856ce66a..dcb50df7052 100644 --- a/pkgs/applications/misc/gnuradio/gsm.nix +++ b/pkgs/applications/misc/gnuradio/gsm.nix @@ -33,7 +33,7 @@ stdenv.mkDerivation rec { description = "Gnuradio block for gsm"; homepage = https://github.com/ptrkrysik/gr-gsm; license = licenses.gpl3Plus; - platforms = platforms.linux ++ platforms.darwin; + platforms = platforms.linux; maintainers = with maintainers; [ mog ]; }; } diff --git a/pkgs/applications/misc/gnuradio/limesdr.nix b/pkgs/applications/misc/gnuradio/limesdr.nix index 535dbfa3c53..0a5d4f56d27 100644 --- a/pkgs/applications/misc/gnuradio/limesdr.nix +++ b/pkgs/applications/misc/gnuradio/limesdr.nix @@ -32,7 +32,7 @@ in stdenv.mkDerivation rec { description = "Gnuradio source and sink blocks for LimeSDR"; homepage = https://wiki.myriadrf.org/Gr-limesdr_Plugin_for_GNURadio; license = licenses.mit; - platforms = platforms.linux ++ platforms.darwin; + platforms = platforms.linux; maintainers = [ maintainers.markuskowa ]; }; } diff --git a/pkgs/applications/misc/gnuradio/osmosdr.nix b/pkgs/applications/misc/gnuradio/osmosdr.nix index 355ca0e9544..846afe0e95d 100644 --- a/pkgs/applications/misc/gnuradio/osmosdr.nix +++ b/pkgs/applications/misc/gnuradio/osmosdr.nix @@ -1,24 +1,33 @@ -{ stdenv, fetchgit, cmake, pkgconfig, boost, gnuradio, rtl-sdr, uhd -, makeWrapper, hackrf, airspy +{ stdenv, fetchgit, cmake, pkgconfig, makeWrapper +, boost , pythonSupport ? true, python, swig +, airspy +, gnuradio +, hackrf +, libbladeRF +, rtl-sdr +, soapysdr-with-plugins +, uhd }: assert pythonSupport -> python != null && swig != null; stdenv.mkDerivation rec { name = "gnuradio-osmosdr-${version}"; - version = "0.1.4"; + version = "2018-08-15"; src = fetchgit { url = "git://git.osmocom.org/gr-osmosdr"; - rev = "refs/tags/v${version}"; - sha256 = "0vyzr4fhkblf2v3d7m0ch5hws4c493jw3ydl4y6b2dfbfzchhsz8"; + rev = "4d83c6067f059b0c5015c3f59f8117bbd361e877"; + sha256 = "1d5nb47506qry52bg4cn02d3l4lwxwz44g2fz1ph0q93c7892j60"; }; nativeBuildInputs = [ pkgconfig ]; buildInputs = [ - cmake boost gnuradio rtl-sdr uhd makeWrapper hackrf airspy - ] ++ stdenv.lib.optionals pythonSupport [ python swig ]; + cmake makeWrapper boost + airspy gnuradio hackrf libbladeRF rtl-sdr uhd + ] ++ stdenv.lib.optionals stdenv.isLinux [ soapysdr-with-plugins ] + ++ stdenv.lib.optionals pythonSupport [ python swig ]; postInstall = '' for prog in "$out"/bin/*; do diff --git a/pkgs/applications/misc/gnuradio/rds.nix b/pkgs/applications/misc/gnuradio/rds.nix index b617791dc2e..2e5443227fd 100644 --- a/pkgs/applications/misc/gnuradio/rds.nix +++ b/pkgs/applications/misc/gnuradio/rds.nix @@ -6,13 +6,13 @@ assert pythonSupport -> python != null && swig != null; stdenv.mkDerivation rec { name = "gnuradio-rds-${version}"; - version = "1.0.0"; + version = "1.1.0"; src = fetchFromGitHub { owner = "bastibl"; repo = "gr-rds"; - rev = "$v{version}"; - sha256 = "008284ya464q4h4fd0zvcn6g7bym231p8fl3kdxncz9ks4zsbsxs"; + rev = "v${version}"; + sha256 = "0jkzchvw0ivcxsjhi1h0mf7k13araxf5m4wi5v9xdgqxvipjzqfy"; }; nativeBuildInputs = [ pkgconfig ]; diff --git a/pkgs/applications/misc/golden-cheetah/default.nix b/pkgs/applications/misc/golden-cheetah/default.nix index 01447281fe7..edf16f806a6 100644 --- a/pkgs/applications/misc/golden-cheetah/default.nix +++ b/pkgs/applications/misc/golden-cheetah/default.nix @@ -26,6 +26,9 @@ in stdenv.mkDerivation rec { qtconnectivity ]; nativeBuildInputs = [ flex makeWrapper qmake yacc ]; + NIX_LDFLAGS = [ + "-lz" + ]; preConfigure = '' cp src/gcconfig.pri.in src/gcconfig.pri cp qwt/qwtconfig.pri.in qwt/qwtconfig.pri diff --git a/pkgs/applications/misc/gollum/Gemfile.lock b/pkgs/applications/misc/gollum/Gemfile.lock index 977bd5e50dd..e6c66cba1e0 100644 --- a/pkgs/applications/misc/gollum/Gemfile.lock +++ b/pkgs/applications/misc/gollum/Gemfile.lock @@ -39,7 +39,7 @@ GEM nokogiri (1.8.4) mini_portile2 (~> 2.3.0) posix-spawn (0.3.13) - rack (1.6.10) + rack (1.6.11) rack-protection (1.5.5) rack rouge (2.2.1) @@ -65,4 +65,4 @@ DEPENDENCIES gollum BUNDLED WITH - 1.16.3 + 1.16.4 diff --git a/pkgs/applications/misc/gollum/gemset.nix b/pkgs/applications/misc/gollum/gemset.nix index 3413b6ba631..bb105805ca8 100644 --- a/pkgs/applications/misc/gollum/gemset.nix +++ b/pkgs/applications/misc/gollum/gemset.nix @@ -137,10 +137,10 @@ rack = { source = { remotes = ["https://rubygems.org"]; - sha256 = "0in0amn0kwvzmi8h5zg6ijrx5wpsf8h96zrfmnk1kwh2ql4sxs2q"; + sha256 = "1g9926ln2lw12lfxm4ylq1h6nl0rafl10za3xvjzc87qvnqic87f"; type = "gem"; }; - version = "1.6.10"; + version = "1.6.11"; }; rack-protection = { dependencies = ["rack"]; diff --git a/pkgs/applications/misc/googleearth/default.nix b/pkgs/applications/misc/googleearth/default.nix index 96f8cb11614..0fccf83acf7 100644 --- a/pkgs/applications/misc/googleearth/default.nix +++ b/pkgs/applications/misc/googleearth/default.nix @@ -79,6 +79,15 @@ stdenv.mkDerivation rec { for a in $out/opt/google/earth/free/*.so* ; do patchelf --set-rpath "${fullPath}:\$ORIGIN" $a done + + # Add desktop config file and icons + mkdir -p $out/share/{applications,icons/hicolor/{16x16,22x22,24x24,32x32,48x48,64x64,128x128,256x256}/apps,pixmaps} + ln -s $out/opt/google/earth/free/google-earth.desktop $out/share/applications/google-earth.desktop + sed -i -e "s|Exec=.*|Exec=$out/bin/googleearth|g" $out/opt/google/earth/free/google-earth.desktop + for size in 16 22 24 32 48 64 128 256; do + ln -s $out/opt/google/earth/free/product_logo_"$size".png $out/share/icons/hicolor/"$size"x"$size"/apps/google-earth.png + done + ln -s $out/opt/google/earth/free/product_logo_256.png $out/share/pixmaps/google-earth.png ''; checkPhase = '' diff --git a/pkgs/applications/misc/googler/default.nix b/pkgs/applications/misc/googler/default.nix index 45b4ad88cff..4b5c17d8e51 100644 --- a/pkgs/applications/misc/googler/default.nix +++ b/pkgs/applications/misc/googler/default.nix @@ -1,14 +1,14 @@ {stdenv, fetchFromGitHub, python}: stdenv.mkDerivation rec { - version = "3.7"; + version = "3.7.1"; name = "googler-${version}"; src = fetchFromGitHub { owner = "jarun"; repo = "googler"; rev = "v${version}"; - sha256 = "0dxg849ckyy181zlrb57hd959cgvx105c35ksmvi4wl285sh5kpj"; + sha256 = "0dcszpz85h3yjnr55ixf8mzsdv46w3g27frhgcsl5zlsgk6vl8kw"; }; propagatedBuildInputs = [ python ]; diff --git a/pkgs/applications/misc/gpa/default.nix b/pkgs/applications/misc/gpa/default.nix index 149092c70d3..a4889014412 100644 --- a/pkgs/applications/misc/gpa/default.nix +++ b/pkgs/applications/misc/gpa/default.nix @@ -1,11 +1,11 @@ { stdenv, fetchurl, intltool, pkgconfig, gtk2, gpgme, libgpgerror, libassuan }: stdenv.mkDerivation rec { - name = "gpa-0.9.10"; + name = "gpa-0.10.0"; src = fetchurl { url = "mirror://gnupg/gpa/${name}.tar.bz2"; - sha256 = "09xphbi2456qynwqq5n0yh0zdmdi2ggrj3wk4hsyh5lrzlvcrff3"; + sha256 = "1cbpc45f8qbdkd62p12s3q2rdq6fa5xdzwmcwd3xrj55bzkspnwm"; }; nativeBuildInputs = [ intltool pkgconfig ]; diff --git a/pkgs/applications/misc/gpsprune/default.nix b/pkgs/applications/misc/gpsprune/default.nix index 1979d290c82..4f0c1864677 100644 --- a/pkgs/applications/misc/gpsprune/default.nix +++ b/pkgs/applications/misc/gpsprune/default.nix @@ -2,11 +2,11 @@ stdenv.mkDerivation rec { name = "gpsprune-${version}"; - version = "19.1"; + version = "19.2"; src = fetchurl { url = "https://activityworkshop.net/software/gpsprune/gpsprune_${version}.jar"; - sha256 = "1drw30z21sdzjc2mcm13yqb5aipvcxmslb2yn6xs3b6b2mx3h2zy"; + sha256 = "1q2kpkkh75b9l1x7fkmv88s8k84gzcdnrg5sgf8ih0zrp49lawg9"; }; nativeBuildInputs = [ makeWrapper ]; diff --git a/pkgs/applications/misc/gpx-viewer/default.nix b/pkgs/applications/misc/gpx-viewer/default.nix index 1810d6d5c47..f7cfee3e651 100644 --- a/pkgs/applications/misc/gpx-viewer/default.nix +++ b/pkgs/applications/misc/gpx-viewer/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, intltool, pkgconfig, gnome3, shared-mime-info, desktop-file-utils, wrapGAppsHook }: +{ stdenv, fetchurl, intltool, pkgconfig, gnome3, libchamplain, gdl, shared-mime-info, desktop-file-utils, wrapGAppsHook }: stdenv.mkDerivation rec { name = "gpx-viewer-${version}"; @@ -21,7 +21,7 @@ stdenv.mkDerivation rec { desktop-file-utils # For update-desktop-database wrapGAppsHook # Fix error: GLib-GIO-ERROR **: No GSettings schemas are installed on the system ]; - buildInputs = with gnome3; [ gdl libchamplain defaultIconTheme ]; + buildInputs = [ gdl libchamplain gnome3.adwaita-icon-theme ]; meta = with stdenv.lib; { homepage = https://blog.sarine.nl/tag/gpxviewer/; diff --git a/pkgs/applications/misc/gpxsee/default.nix b/pkgs/applications/misc/gpxsee/default.nix index 2f61ba683f3..5ef64b2b801 100644 --- a/pkgs/applications/misc/gpxsee/default.nix +++ b/pkgs/applications/misc/gpxsee/default.nix @@ -2,20 +2,20 @@ stdenv.mkDerivation rec { name = "gpxsee-${version}"; - version = "5.18"; + version = "7.1"; src = fetchFromGitHub { owner = "tumic0"; repo = "GPXSee"; rev = version; - sha256 = "0dl10fr881b8fwf2yj14bd6gagb8hm0s46q18y2y56rw98nk4vrq"; + sha256 = "1dgag8j3566qwiz1pschfq2wqdp7y1pr4cm9na4zwrdjhn3ci6v5"; }; nativeBuildInputs = [ qmake ]; buildInputs = [ qttools ]; preConfigure = '' - substituteInPlace src/config.h --replace /usr/share/gpxsee $out/share/gpxsee + substituteInPlace src/common/programpaths.cpp --replace /usr/share/ $out/share/ lrelease lang/*.ts ''; @@ -31,11 +31,11 @@ stdenv.mkDerivation rec { enableParallelBuilding = true; meta = with stdenv.lib; { - homepage = http://www.gpxsee.org/; + homepage = https://www.gpxsee.org/; description = "GPX viewer and analyzer"; longDescription = '' GPXSee is a Qt-based GPS log file viewer and analyzer that supports GPX, - TCX, KML, FIT, IGC and NMEA files. + TCX, KML, FIT, IGC, NMEA, SLF, LOC and OziExplorer files. ''; license = licenses.gpl3; maintainers = [ maintainers.womfoo ]; diff --git a/pkgs/applications/misc/gramps/default.nix b/pkgs/applications/misc/gramps/default.nix index 413679afd21..db18ff73412 100644 --- a/pkgs/applications/misc/gramps/default.nix +++ b/pkgs/applications/misc/gramps/default.nix @@ -1,5 +1,5 @@ { stdenv, fetchFromGitHub, gtk3, pythonPackages, intltool, gnome3, - pango, gobjectIntrospection, wrapGAppsHook, + pango, gobject-introspection, wrapGAppsHook, # Optional packages: enableOSM ? true, osm-gps-map, enableGraphviz ? true, graphviz, @@ -9,11 +9,11 @@ let inherit (pythonPackages) python buildPythonApplication; in buildPythonApplication rec { - version = "5.0.0"; + version = "5.0.1"; name = "gramps-${version}"; nativeBuildInputs = [ wrapGAppsHook ]; - buildInputs = [ intltool gtk3 gobjectIntrospection pango gnome3.gexiv2 ] + buildInputs = [ intltool gtk3 gobject-introspection pango gnome3.gexiv2 ] # Map support ++ stdenv.lib.optional enableOSM osm-gps-map # Graphviz support @@ -27,7 +27,7 @@ in buildPythonApplication rec { owner = "gramps-project"; repo = "gramps"; rev = "v${version}"; - sha256 = "056l4ihmd3gdsiv6wwv4ckgh8bfzd5nii6z4afsdn2nmjbj4hw9m"; + sha256 = "1jz1fbjj6byndvir7qxzhd2ryirrd5h2kwndxpp53xdc05z1i8g7"; }; pythonPath = with pythonPackages; [ bsddb3 PyICU pygobject3 pycairo ]; diff --git a/pkgs/applications/misc/gremlin-console/default.nix b/pkgs/applications/misc/gremlin-console/default.nix new file mode 100644 index 00000000000..a35079e9151 --- /dev/null +++ b/pkgs/applications/misc/gremlin-console/default.nix @@ -0,0 +1,29 @@ +{ pkgs, fetchzip, stdenv, makeWrapper, openjdk }: + +stdenv.mkDerivation rec { + name = "gremlin-console-${version}"; + version = "3.3.4"; + src = fetchzip { + url = "http://www-eu.apache.org/dist/tinkerpop/${version}/apache-tinkerpop-gremlin-console-${version}-bin.zip"; + sha256 = "14xr0yqklmm4jvj1hnkj89lj83zzs2l1375ni0jbf12gy31jlb2w"; + }; + + buildInputs = [ makeWrapper ]; + + installPhase = '' + mkdir -p $out/opt + cp -r ext lib $out/opt/ + install -D bin/gremlin.sh $out/opt/bin/gremlin-console + makeWrapper $out/opt/bin/gremlin-console $out/bin/gremlin-console \ + --prefix PATH ":" "${openjdk}/bin/" \ + --set CLASSPATH "$out/opt/lib/" + ''; + + meta = with stdenv.lib; { + homepage = https://tinkerpop.apache.org/; + description = "Console of the Apache TinkerPop graph computing framework"; + license = licenses.asl20; + maintainers = [ maintainers.lewo ]; + platforms = platforms.all; + }; +} diff --git a/pkgs/applications/misc/gtk2fontsel/default.nix b/pkgs/applications/misc/gtk2fontsel/default.nix index 347d76860ef..cf409b4c185 100644 --- a/pkgs/applications/misc/gtk2fontsel/default.nix +++ b/pkgs/applications/misc/gtk2fontsel/default.nix @@ -21,7 +21,7 @@ stdenv.mkDerivation rec { Trivial, but useful nonetheless. ''; homepage = http://gtk2fontsel.sourceforge.net/; - downloadPage = http://sourceforge.net/projects/gtk2fontsel/; + downloadPage = https://sourceforge.net/projects/gtk2fontsel/; license = licenses.gpl2; maintainers = [ maintainers.prikhi ]; platforms = platforms.linux; diff --git a/pkgs/applications/misc/guake/default.nix b/pkgs/applications/misc/guake/default.nix index 52105f49c56..0541468345e 100644 --- a/pkgs/applications/misc/guake/default.nix +++ b/pkgs/applications/misc/guake/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchFromGitHub, python3, gettext, gobjectIntrospection, wrapGAppsHook, glibcLocales +{ stdenv, fetchFromGitHub, python3, gettext, gobject-introspection, wrapGAppsHook, glibcLocales , gtk3, keybinder3, libnotify, libutempter, vte }: let @@ -14,7 +14,7 @@ in python3.pkgs.buildPythonApplication rec { sha256 = "1j38z968ha8ij6wrgbwvr8ad930nvhybm9g7pf4s4zv6d3vln0vm"; }; - nativeBuildInputs = [ gettext gobjectIntrospection wrapGAppsHook python3.pkgs.pip glibcLocales ]; + nativeBuildInputs = [ gettext gobject-introspection wrapGAppsHook python3.pkgs.pip glibcLocales ]; buildInputs = [ gtk3 keybinder3 libnotify python3 vte ]; diff --git a/pkgs/applications/misc/gv/default.nix b/pkgs/applications/misc/gv/default.nix index 036cb104b48..f94f8f5dd70 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 = http://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 9def56aa98c..7d19a9cb110 100644 --- a/pkgs/applications/misc/gxneur/default.nix +++ b/pkgs/applications/misc/gxneur/default.nix @@ -8,6 +8,8 @@ stdenv.mkDerivation { sha256 = "0avmhdcj0hpr55fc0iih8fjykmdhn34c8mwdnqvl8jh4nhxxchxr"; }; + NIX_CFLAGS_COMPILE = "-Wno-deprecated-declarations"; + nativeBuildInputs = [ pkgconfig intltool ]; buildInputs = [ xorg.libX11 glib gtk2 xorg.libXpm xorg.libXt xorg.libXext xneur diff --git a/pkgs/applications/misc/hackrf/default.nix b/pkgs/applications/misc/hackrf/default.nix index 6186ed6f8f4..81a66bf503c 100644 --- a/pkgs/applications/misc/hackrf/default.nix +++ b/pkgs/applications/misc/hackrf/default.nix @@ -1,13 +1,14 @@ -{ stdenv, fetchgit, cmake, pkgconfig, libusb, fftwSinglePrec }: +{ stdenv, fetchFromGitHub, cmake, pkgconfig, libusb, fftwSinglePrec }: stdenv.mkDerivation rec { name = "hackrf-${version}"; - version = "2017.02.1"; + version = "2018.01.1"; - src = fetchgit { - url = "git://github.com/mossmann/hackrf"; - rev = "refs/tags/v${version}"; - sha256 = "16hd61icvzaciv7s9jpgm9c8q6m4mwvj97gxrb20sc65p5gjb7hv"; + src = fetchFromGitHub { + owner = "mossmann"; + repo = "hackrf"; + rev = "v${version}"; + sha256 = "0idh983xh6gndk9kdgx5nzz76x3mxb42b02c5xvdqahadsfx3b9w"; }; nativeBuildInputs = [ pkgconfig ]; diff --git a/pkgs/applications/misc/hamster-time-tracker/default.nix b/pkgs/applications/misc/hamster-time-tracker/default.nix index 2abdce45c95..453d95694eb 100644 --- a/pkgs/applications/misc/hamster-time-tracker/default.nix +++ b/pkgs/applications/misc/hamster-time-tracker/default.nix @@ -1,6 +1,7 @@ { stdenv, fetchzip, pythonPackages, docbook2x, libxslt, gnome-doc-utils , intltool, dbus-glib, gnome_python , hicolor-icon-theme +, wafHook }: # TODO: Add optional dependency 'wnck', for "workspace tracking" support. Fixes @@ -17,28 +18,17 @@ pythonPackages.buildPythonApplication rec { sha256 = "1a85rcg561792kdyv744cgzw7mmpmgv6d6li1sijfdpqa1ninf8g"; }; + nativeBuildInputs = [ wafHook ]; buildInputs = [ docbook2x libxslt gnome-doc-utils intltool dbus-glib hicolor-icon-theme ]; propagatedBuildInputs = with pythonPackages; [ pygobject2 pygtk pyxdg gnome_python dbus-python ]; - configurePhase = '' - python waf configure --prefix="$out" - ''; - - buildPhase = '' - python waf build - ''; - postFixup = '' wrapPythonProgramsIn $out/lib/hamster-time-tracker "$out $pythonPath" ''; - installPhase = '' - python waf install - ''; - # error: invalid command 'test' doCheck = false; diff --git a/pkgs/applications/misc/hello/default.nix b/pkgs/applications/misc/hello/default.nix index 7998d30f253..c0a39d2d91d 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 = http://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/pkgs/applications/misc/hivemind/default.nix b/pkgs/applications/misc/hivemind/default.nix new file mode 100644 index 00000000000..0431f35057b --- /dev/null +++ b/pkgs/applications/misc/hivemind/default.nix @@ -0,0 +1,21 @@ +{ stdenv, buildGoPackage, fetchFromGitHub }: + +buildGoPackage rec { + name = "hivemind-${version}"; + version = "1.0.4"; + goPackagePath = "github.com/DarthSim/hivemind"; + + src = fetchFromGitHub { + owner = "DarthSim"; + repo = "hivemind"; + rev = "v${version}"; + sha256 = "1z2izvyf0j3gi0cas5v22kkmkls03sg67182k8v3p6kwhzn0jw67"; + }; + + meta = with stdenv.lib; { + 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 b92012a29dd..500f1df36a0 100644 --- a/pkgs/applications/misc/houdini/runtime.nix +++ b/pkgs/applications/misc/houdini/runtime.nix @@ -29,15 +29,15 @@ let license_dir = "~/.config/houdini"; in stdenv.mkDerivation rec { - version = "16.5.439"; + version = "17.0.352"; name = "houdini-runtime-${version}"; src = requireFile rec { - name = "houdini-${version}-linux_x86_64_gcc4.8.tar.gz"; - sha256 = "7e483072a0e6e751a93f2a2f968cccb2d95559c61106ffeb344c95975704321b"; + name = "houdini-${version}-linux_x86_64_gcc6.3.tar.gz"; + sha256 = "0cl5fkgaplb0cvv7mli06ffc9j4ngpy8hl5zqabj3d645gcgafjg"; message = '' This nix expression requires that ${name} is already part of the store. Download it from https://sidefx.com and add it to the nix store with: - + nix-prefetch-url This can't be done automatically because you need to create an account on diff --git a/pkgs/applications/misc/hovercraft/default.nix b/pkgs/applications/misc/hovercraft/default.nix new file mode 100644 index 00000000000..ba23078bba9 --- /dev/null +++ b/pkgs/applications/misc/hovercraft/default.nix @@ -0,0 +1,35 @@ +{ lib +, buildPythonApplication +, isPy3k +, fetchFromGitHub +, manuel +, setuptools +, docutils +, lxml +, svg-path +, pygments +, watchdog +}: + +buildPythonApplication rec { + pname = "hovercraft"; + version = "2.6"; + disabled = ! isPy3k; + + src = fetchFromGitHub { + owner = "regebro"; + repo = "hovercraft"; + rev = version; + sha256 = "150sn6kvqi2s89di1akl5i0g81fasji2ipr12zq5s4dcnhw4r5wp"; + }; + + checkInputs = [ manuel ]; + propagatedBuildInputs = [ setuptools docutils lxml svg-path pygments watchdog ]; + + meta = with lib; { + description = "Makes impress.js presentations from reStructuredText"; + homepage = https://github.com/regebro/hovercraft; + license = licenses.mit; + maintainers = with maintainers; [ goibhniu makefu ]; + }; +} diff --git a/pkgs/applications/misc/hugo/default.nix b/pkgs/applications/misc/hugo/default.nix index a6a489492e3..22badfc8cdd 100644 --- a/pkgs/applications/misc/hugo/default.nix +++ b/pkgs/applications/misc/hugo/default.nix @@ -2,7 +2,7 @@ buildGoPackage rec { name = "hugo-${version}"; - version = "0.47.1"; + version = "0.50"; goPackagePath = "github.com/gohugoio/hugo"; @@ -10,7 +10,7 @@ buildGoPackage rec { owner = "gohugoio"; repo = "hugo"; rev = "v${version}"; - sha256 = "0n27vyg66jfx4lwswsmdlybly8c9gy5rk7yhy7wzs3rwzlqv1jzj"; + sha256 = "1shrw7pxwrz9g5x9bq6k5qvhn3fqmwznadpw7i07msh97p8b3dyn"; }; goDeps = ./deps.nix; diff --git a/pkgs/applications/misc/hugo/deps.nix b/pkgs/applications/misc/hugo/deps.nix index 47487029ea0..d5c24d69048 100644 --- a/pkgs/applications/misc/hugo/deps.nix +++ b/pkgs/applications/misc/hugo/deps.nix @@ -1,488 +1,721 @@ -# This file was generated by https://github.com/kamilchm/go2nix v1.2.1 [ + { goPackagePath = "github.com/BurntSushi/locker"; fetch = { type = "git"; url = "https://github.com/BurntSushi/locker"; - rev = "a6e239ea1c69bff1cfdb20c4b73dadf52f784b6a"; + rev = "a6e239ea1c69"; sha256 = "1xak4aync4klswq5217qvw191asgla51jr42y94vp109lirm5dzg"; }; } + { goPackagePath = "github.com/BurntSushi/toml"; fetch = { type = "git"; url = "https://github.com/BurntSushi/toml"; - rev = "3012a1dbe2e4bd1391d42b32f0577cb7bbc7f005"; - sha256 = "1fjdwwfzyzllgiwydknf1pwjvy49qxfsczqx5gz3y0izs7as99j6"; + rev = "a368813c5e64"; + sha256 = "1sjxs2lwc8jpln80s4rlzp7nprbcljhy5mz4rf9995gq93wqnym5"; }; } + { goPackagePath = "github.com/PuerkitoBio/purell"; fetch = { type = "git"; url = "https://github.com/PuerkitoBio/purell"; - rev = "975f53781597ed779763b7b65566e74c4004d8de"; - sha256 = "1j5l793zxrjv09z3cdgs05qn45sbhbm9njsw5cfv168x8z88pd3l"; + rev = "v1.1.0"; + sha256 = "0vsxyn1fbm7g873b8kf3hcsgqgncb5nmfq3zfsc35a9yhzarka91"; }; } + { goPackagePath = "github.com/PuerkitoBio/urlesc"; fetch = { type = "git"; url = "https://github.com/PuerkitoBio/urlesc"; - rev = "de5bf2ad457846296e2031421a34e2568e304e35"; + rev = "de5bf2ad4578"; sha256 = "0n0srpqwbaan1wrhh2b7ysz543pjs1xw2rghvqyffg9l0g8kzgcw"; }; } + + { + goPackagePath = "github.com/alecthomas/assert"; + fetch = { + type = "git"; + url = "https://github.com/alecthomas/assert"; + rev = "405dbfeb8e38"; + sha256 = "1l567pi17k593nrd1qlbmiq8z9jy3qs60px2a16fdpzjsizwqx8l"; + }; + } + { goPackagePath = "github.com/alecthomas/chroma"; fetch = { type = "git"; url = "https://github.com/alecthomas/chroma"; - rev = "5d7fef2ae60b501bbf28d476c3f273b8017d8261"; + rev = "v0.5.0"; sha256 = "150jv4vhsdi1gj3liwkgicdrwnzgv5qkq2fwznlnzf64vmfb0b9f"; }; } + + { + goPackagePath = "github.com/alecthomas/colour"; + fetch = { + type = "git"; + url = "https://github.com/alecthomas/colour"; + rev = "60882d9e2721"; + sha256 = "0iq566534gbzkd16ixg7fk298wd766821vvs80838yifx9yml5vs"; + }; + } + + { + goPackagePath = "github.com/alecthomas/repr"; + fetch = { + type = "git"; + url = "https://github.com/alecthomas/repr"; + rev = "117648cd9897"; + sha256 = "05v1rgzdqc8razf702laagrvhvx68xd9yxxmzd3dyz0d6425pdrp"; + }; + } + { goPackagePath = "github.com/bep/debounce"; fetch = { type = "git"; url = "https://github.com/bep/debounce"; - rev = "844797fa1dd9ba969d71b62797ff19d1e49d4eac"; + rev = "v1.1.0"; sha256 = "1sh4zv0hv7f454mhzpl2mbv7ar5rm00wyy5qr78x1h84bgph87wy"; }; } + { goPackagePath = "github.com/bep/gitmap"; fetch = { type = "git"; url = "https://github.com/bep/gitmap"; - rev = "ecb6fe06dbfd6bb4225e7fda7dc15612ecc8d960"; + rev = "v1.0.0"; sha256 = "0zqdl5h4ayi2gi5aqf35f1sjszhbcriksm2bf84fkrg7ngr48jn6"; }; } + { goPackagePath = "github.com/bep/go-tocss"; fetch = { type = "git"; url = "https://github.com/bep/go-tocss"; - rev = "2abb118dc8688b6c7df44e12f4152c2bded9b19c"; + rev = "v0.5.0"; sha256 = "12q7h6nydklq4kg65kcgd85209rx7zf64ba6nf3k7y16knj4233q"; }; } + { goPackagePath = "github.com/chaseadamsio/goorgeous"; fetch = { type = "git"; url = "https://github.com/chaseadamsio/goorgeous"; - rev = "dcf1ef873b8987bf12596fe6951c48347986eb2f"; + rev = "v1.1.0"; sha256 = "07qdqi46klizq3wigxqbiksnlgbrdc8hvmizgzg0aas5iqy88dcb"; }; } + { goPackagePath = "github.com/cpuguy83/go-md2man"; fetch = { type = "git"; url = "https://github.com/cpuguy83/go-md2man"; - rev = "691ee98543af2f262f35fbb54bdd42f00b9b9cc5"; - sha256 = "1864g10y9n6ni0p1yqjhvwyjdh0lgxnf7dlb0c4njazdg5rppww9"; + rev = "v1.0.8"; + sha256 = "1w22dfdamsq63b5rvalh9k2y7rbwfkkjs7vm9vd4a13h2ql70lg2"; }; } + { goPackagePath = "github.com/danwakefield/fnmatch"; fetch = { type = "git"; url = "https://github.com/danwakefield/fnmatch"; - rev = "cbb64ac3d964b81592e64f957ad53df015803288"; + rev = "cbb64ac3d964"; sha256 = "0cbf511ppsa6hf59mdl7nbyn2b2n71y0bpkzbmfkdqjhanqh1lqz"; }; } + + { + 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/disintegration/imaging"; fetch = { type = "git"; url = "https://github.com/disintegration/imaging"; - rev = "0bd5694c78c9c3d9a3cd06a706a8f3c59296a9ac"; + rev = "v1.5.0"; sha256 = "1laxccmzi7q51zxn81ringmdwp8iaipivrl375yc3gq56d70sp0r"; }; } + { goPackagePath = "github.com/dlclark/regexp2"; fetch = { type = "git"; url = "https://github.com/dlclark/regexp2"; - rev = "7632a260cbaf5e7594fc1544a503456ecd0827f1"; - sha256 = "0vhp5r0ywv9p1c74fm8xzclnwx2mg9f0764b3id7a9nwh0plisx2"; + rev = "v1.1.6"; + sha256 = "144s81ndviwhyy20ipxvvfvap8phv5p762glxrz6aqxprkxfarj5"; }; } + { goPackagePath = "github.com/eknkc/amber"; fetch = { type = "git"; url = "https://github.com/eknkc/amber"; - rev = "cdade1c073850f4ffc70a829e31235ea6892853b"; + rev = "cdade1c07385"; sha256 = "152w97yckwncgw7lwjvgd8d00wy6y0nxzlvx72kl7nqqxs9vhxd9"; }; } + + { + goPackagePath = "github.com/fortytw2/leaktest"; + fetch = { + type = "git"; + url = "https://github.com/fortytw2/leaktest"; + rev = "v1.2.0"; + sha256 = "1lf9l6zgzjbcc7hmcjhhg3blx0y8icyxvjmjqqwfbwdk502803ra"; + }; + } + { goPackagePath = "github.com/fsnotify/fsnotify"; fetch = { type = "git"; url = "https://github.com/fsnotify/fsnotify"; - rev = "c2828203cd70a50dcccfb2761f8b1f8ceef9a8e9"; + rev = "v1.4.7"; sha256 = "07va9crci0ijlivbb7q57d2rz9h27zgn2fsm60spjsqpdbvyrx4g"; }; } - { - goPackagePath = "github.com/gobuffalo/envy"; - fetch = { - type = "git"; - url = "https://github.com/gobuffalo/envy"; - rev = "3c96536452167a705ca5a70b831d3810e1e10452"; - sha256 = "0ixqpdmb7kjlarkv0qlbwnbr194sajx9flysnhcldzmciqgk5bqs"; - }; - } + { goPackagePath = "github.com/gobwas/glob"; fetch = { type = "git"; url = "https://github.com/gobwas/glob"; - rev = "f756513aec94125582ee6c0dc94179251ef87370"; - sha256 = "1pyzlvb950864syf2safazv39s7rpi08r7x2vby82kj9ykqgvhc4"; + rev = "v0.2.3"; + sha256 = "0jxk1x806zn5x86342s72dq2qy64ksb3zrvrlgir2avjhwb18n6z"; }; } + { goPackagePath = "github.com/gorilla/websocket"; fetch = { type = "git"; url = "https://github.com/gorilla/websocket"; - rev = "3ff3320c2a1756a3691521efc290b4701575147c"; - sha256 = "1b0kpix2qxv3qiiq739nk9fjh453if0mcpr9gmlizicdpjp5alw2"; + rev = "v1.4.0"; + sha256 = "00i4vb31nsfkzzk7swvx3i75r2d960js3dri1875vypk3v2s0pzk"; }; } + { goPackagePath = "github.com/hashicorp/go-immutable-radix"; fetch = { type = "git"; url = "https://github.com/hashicorp/go-immutable-radix"; - rev = "7f3cd4390caab3250a57f30efdb2a65dd7649ecf"; - sha256 = "13nv1dac6i2mjdy8vsd4vwawwja78vggdjcnj1xfykg2k8jbkphv"; + rev = "v1.0.0"; + sha256 = "1v3nmsnk1s8bzpclrhirz7iq0g5xxbw9q5gvrg9ss6w9crs72qr6"; }; } + + { + goPackagePath = "github.com/hashicorp/go-uuid"; + fetch = { + type = "git"; + url = "https://github.com/hashicorp/go-uuid"; + rev = "v1.0.0"; + sha256 = "1jflywlani7583qm4ysph40hsgx3n66n5zr2k84i057fmwa1ypfy"; + }; + } + { goPackagePath = "github.com/hashicorp/golang-lru"; fetch = { type = "git"; url = "https://github.com/hashicorp/golang-lru"; - rev = "0fb14efe8c47ae851c0034ed7a448854d3d34cf3"; - sha256 = "0vg4yn3088ym4sj1d34kr13lp4v5gya7r2nxshp2bz70n46fsqn2"; + rev = "v0.5.0"; + sha256 = "12k2cp2k615fjvfa5hyb9k2alian77wivds8s65diwshwv41939f"; }; } + { goPackagePath = "github.com/hashicorp/hcl"; fetch = { type = "git"; url = "https://github.com/hashicorp/hcl"; - rev = "ef8a98b0bbce4a65b5aa4c368430a80ddc533168"; - sha256 = "1qalfsc31fra7hcw2lc3s20aj7al62fq3j5fn5kga3mg99b82nyr"; + rev = "v1.0.0"; + sha256 = "0q6ml0qqs0yil76mpn4mdx4lp94id8vbv575qm60jzl1ijcl5i66"; }; } + + { + goPackagePath = "github.com/inconshreveable/mousetrap"; + fetch = { + type = "git"; + url = "https://github.com/inconshreveable/mousetrap"; + rev = "v1.0.0"; + sha256 = "1mn0kg48xkd74brf48qf5hzp0bc6g8cf5a77w895rl3qnlpfw152"; + }; + } + { goPackagePath = "github.com/jdkato/prose"; fetch = { type = "git"; url = "https://github.com/jdkato/prose"; - rev = "99216ea17cba4e2f2a4e8bca778643e5a529b7aa"; - sha256 = "1mdh276lmj21jbi22ky8ngdsl9hfcdv6czshycbaiwjr5y9cv7bn"; + rev = "v1.1.0"; + sha256 = "1gjqgrpc7wbqvnhgwyfhxng24qvx37qjy0x2mbikiw1vaygxqsmy"; }; } + { - goPackagePath = "github.com/joho/godotenv"; + goPackagePath = "github.com/kr/pretty"; fetch = { type = "git"; - url = "https://github.com/joho/godotenv"; - rev = "1709ab122c988931ad53508747b3c061400c2984"; - sha256 = "1pym5lydb28ggxrz80q9s26bj2bd80ax1igm1zfhyhx9i3060kif"; + 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/kyokomi/emoji"; fetch = { type = "git"; url = "https://github.com/kyokomi/emoji"; - rev = "2e9a9507333f3ee28f3fab88c2c3aba34455d734"; + rev = "v1.5.1"; sha256 = "005rxyxlqcd2sfjn686xb52l11wn2w0g5jv042ka6pnsx24r812a"; }; } + + { + goPackagePath = "github.com/magefile/mage"; + fetch = { + type = "git"; + url = "https://github.com/magefile/mage"; + rev = "v1.4.0"; + sha256 = "177hzmmzhk7bcm3jj2cj6d5l9h5ql3cikvndhk4agkslrhwr3xka"; + }; + } + { goPackagePath = "github.com/magiconair/properties"; fetch = { type = "git"; url = "https://github.com/magiconair/properties"; - rev = "c2353362d570a7bfa228149c62842019201cfb71"; + rev = "v1.8.0"; sha256 = "1a10362wv8a8qwb818wygn2z48lgzch940hvpv81hv8gc747ajxn"; }; } + { goPackagePath = "github.com/markbates/inflect"; fetch = { type = "git"; url = "https://github.com/markbates/inflect"; - rev = "84854b5b4c0dbb0c107480d480a71f7db1fc7dae"; - sha256 = "0b7shs0mxhkl7v7mwp799n7jgjsdbgi81f5hbaz2b936gbxksw7d"; + rev = "a12c3aec81a6"; + sha256 = "0mawr6z9nav4f5j0nmjdxg9lbfhr7wz8zi34g7b6wndmzyf8jbsd"; }; } + + { + goPackagePath = "github.com/mattn/go-isatty"; + fetch = { + type = "git"; + url = "https://github.com/mattn/go-isatty"; + rev = "v0.0.4"; + sha256 = "0zs92j2cqaw9j8qx1sdxpv3ap0rgbs0vrvi72m40mg8aa36gd39w"; + }; + } + { goPackagePath = "github.com/mattn/go-runewidth"; fetch = { type = "git"; url = "https://github.com/mattn/go-runewidth"; - rev = "ce7b0b5c7b45a81508558cd1dba6bb1e4ddb51bb"; + rev = "v0.0.3"; sha256 = "0lc39b6xrxv7h3v3y1kgz49cgi5qxwlygs715aam6ba35m48yi7g"; }; } + { goPackagePath = "github.com/miekg/mmark"; fetch = { type = "git"; url = "https://github.com/miekg/mmark"; - rev = "057eb9e3ae87944c038036d046101dec0c56e21f"; - sha256 = "0hlqcwx6qqgy3vs13r10wn0d9x0xmww1v9jm09y2dp1ykgbampnk"; + rev = "v1.3.6"; + sha256 = "0q2zrwa2vwk7a0zhmi000zpqrc01zssrj9c5n3573rg68fksg77m"; }; } + { goPackagePath = "github.com/mitchellh/hashstructure"; fetch = { type = "git"; url = "https://github.com/mitchellh/hashstructure"; - rev = "2bca23e0e452137f789efbc8610126fd8b94f73b"; - sha256 = "0vpacsls26474wya360fjhzi6l4y8s8s251c4szvqxh17n5f5gk1"; + rev = "v1.0.0"; + sha256 = "0zgl5c03ip2yzkb9b7fq9ml08i7j8prgd46ha1fcg8c6r7k9xl3i"; }; } + { goPackagePath = "github.com/mitchellh/mapstructure"; fetch = { type = "git"; url = "https://github.com/mitchellh/mapstructure"; - rev = "f15292f7a699fcc1a38a80977f80a046874ba8ac"; - sha256 = "0zm3nhdvmj3f8q0vg2sjfw1sm3pwsw0ggz501awz95w99664a8al"; + rev = "v1.0.0"; + sha256 = "0f06q4fpzg0c370cvmpsl0iq2apl5nkbz5cd3nba5x5ysmshv1lm"; }; } + { goPackagePath = "github.com/muesli/smartcrop"; fetch = { type = "git"; url = "https://github.com/muesli/smartcrop"; - rev = "f6ebaa786a12a0fdb2d7c6dee72808e68c296464"; + rev = "f6ebaa786a12"; sha256 = "0xbv5wbn0z36nkw9ay3ly6z23lpsrs0khryl1w54fz85lvwh66gp"; }; } + + { + goPackagePath = "github.com/nfnt/resize"; + fetch = { + type = "git"; + url = "https://github.com/nfnt/resize"; + rev = "83c6a9932646"; + sha256 = "005cpiwq28krbjf0zjwpfh63rp4s4is58700idn24fs3g7wdbwya"; + }; + } + { goPackagePath = "github.com/nicksnyder/go-i18n"; fetch = { type = "git"; url = "https://github.com/nicksnyder/go-i18n"; - rev = "04f547cc50da4c144c5fdfd4495aef143637a236"; - sha256 = "1h4ndn822k7i04h9k5dxm6c29mhhhqhl63vzpmz2l1k0zpj7xyd1"; + rev = "v1.10.0"; + sha256 = "1nlvq85c232z5yjs86pxpmkv7hk6gb5pa6j4hhzgdz85adk2ma04"; }; } + { goPackagePath = "github.com/olekukonko/tablewriter"; fetch = { type = "git"; url = "https://github.com/olekukonko/tablewriter"; - rev = "d4647c9c7a84d847478d890b816b7d8b62b0b279"; + rev = "d4647c9c7a84"; sha256 = "1274k5r9ardh1f6gsmadxmdds7zy8rkr55fb9swvnm0vazr3y01l"; }; } + { goPackagePath = "github.com/pelletier/go-toml"; fetch = { type = "git"; url = "https://github.com/pelletier/go-toml"; - rev = "c2dbbc24a97911339e01bda0b8cabdbd8f13b602"; - sha256 = "0v1dsqnk5zmn6ir8jgxijx14s47jvijlqfz3aq435snfrgybd5rz"; + rev = "v1.2.0"; + sha256 = "1fjzpcjng60mc3a4b2ql5a00d5gah84wj740dabv9kq67mpg8fxy"; }; } + + { + goPackagePath = "github.com/pkg/errors"; + fetch = { + type = "git"; + url = "https://github.com/pkg/errors"; + rev = "v0.8.0"; + sha256 = "001i6n71ghp2l6kdl3qq1v2vmghcz3kicv9a5wgcihrzigm75pp5"; + }; + } + + { + 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/russross/blackfriday"; fetch = { type = "git"; url = "https://github.com/russross/blackfriday"; - rev = "46c73eb196baff5bb07288f245b223bd1a30fba6"; + rev = "46c73eb196ba"; sha256 = "01z1jsdkac09cw95lqq4pahkw9xnini2mb956lvb772bby2x3dmj"; }; } + + { + goPackagePath = "github.com/sanity-io/litter"; + fetch = { + type = "git"; + url = "https://github.com/sanity-io/litter"; + rev = "v1.1.0"; + sha256 = "09nywwxxd6rmhxc7rsvs96ynjszmnvmhwr7dvh1n35hb6h9y7s2r"; + }; + } + + { + goPackagePath = "github.com/sergi/go-diff"; + fetch = { + type = "git"; + url = "https://github.com/sergi/go-diff"; + rev = "v1.0.0"; + sha256 = "0swiazj8wphs2zmk1qgq75xza6m19snif94h2m6fi8dqkwqdl7c7"; + }; + } + { goPackagePath = "github.com/shurcooL/sanitized_anchor_name"; fetch = { type = "git"; url = "https://github.com/shurcooL/sanitized_anchor_name"; - rev = "86672fcb3f950f35f2e675df2240550f2a50762f"; + rev = "86672fcb3f95"; sha256 = "142m507s9971cl8qdmbcw7sqxnkgi3xqd8wzvfq15p0w7w8i4a3h"; }; } + { goPackagePath = "github.com/spf13/afero"; fetch = { type = "git"; url = "https://github.com/spf13/afero"; - rev = "787d034dfe70e44075ccc060d346146ef53270ad"; - sha256 = "0138rjiacl71h7kvhzinviwvy6qa2m6rflpv9lgqv15hnjvhwvg1"; + rev = "v1.1.2"; + sha256 = "0miv4faf5ihjfifb1zv6aia6f6ik7h1s4954kcb8n6ixzhx9ck6k"; }; } + { goPackagePath = "github.com/spf13/cast"; fetch = { type = "git"; url = "https://github.com/spf13/cast"; - rev = "8965335b8c7107321228e3e3702cab9832751bac"; - sha256 = "177bk7lq40jbgv9p9r80aydpaccfk8ja3a7jjhfwiwk9r1pa4rr2"; + rev = "v1.3.0"; + sha256 = "0xq1ffqj8y8h7dcnm0m9lfrh0ga7pssnn2c1dnr09chqbpn4bdc5"; }; } + { goPackagePath = "github.com/spf13/cobra"; fetch = { type = "git"; url = "https://github.com/spf13/cobra"; - rev = "ff0d02e8555041edecbd0ce27f32c6ea4b214483"; - sha256 = "1ilw6b2nir1bg7hmx8hrn60za37qqm18xvamv90fx5vxq85fsml9"; + rev = "v0.0.3"; + sha256 = "1q1nsx05svyv9fv3fy6xv6gs9ffimkyzsfm49flvl3wnvf1ncrkd"; }; } + { goPackagePath = "github.com/spf13/fsync"; fetch = { type = "git"; url = "https://github.com/spf13/fsync"; - rev = "12a01e648f05a938100a26858d2d59a120307a18"; + rev = "12a01e648f05"; sha256 = "1vvbgxbbsc4mvi1axgqgn9pzjz1p495dsmwpc7mr8qxh8f6s0nhv"; }; } + { goPackagePath = "github.com/spf13/jwalterweatherman"; fetch = { type = "git"; url = "https://github.com/spf13/jwalterweatherman"; - rev = "14d3d4c518341bea657dd8a226f5121c0ff8c9f2"; - sha256 = "1f9154lijbz0kkgqwmbphykwl4adv4fvkx6n1p7fdq3x5j9g8i17"; + rev = "94f6ae3ed3bc"; + sha256 = "1ywmkwci5zyd88ijym6f30fj5c0k2yayxarkmnazf5ybljv50q7b"; }; } + { goPackagePath = "github.com/spf13/nitro"; fetch = { type = "git"; url = "https://github.com/spf13/nitro"; - rev = "24d7ef30a12da0bdc5e2eb370a79c659ddccf0e8"; + rev = "24d7ef30a12d"; sha256 = "143sbpx0jdgf8f8ayv51x6l4jg6cnv6nps6n60qxhx4vd90s6mib"; }; } + { goPackagePath = "github.com/spf13/pflag"; fetch = { type = "git"; url = "https://github.com/spf13/pflag"; - rev = "947b89bd1b7dabfed991ac30e1a56f5193f0c88b"; - sha256 = "0n4h5cb07n96fcw9k8dwnj6yisf2x357lsiwjmrq6xr1vkzdlk8c"; + rev = "v1.0.2"; + sha256 = "005598piihl3l83a71ahj10cpq9pbhjck4xishx1b4dzc02r9xr2"; }; } + { goPackagePath = "github.com/spf13/viper"; fetch = { type = "git"; url = "https://github.com/spf13/viper"; - rev = "907c19d40d9a6c9bb55f040ff4ae45271a4754b9"; - sha256 = "177ziws6mwxdlvicmgpv7w7zy5ri2wgnw2f2v3789b5skv9d6a6b"; + rev = "v1.2.0"; + sha256 = "0klv7dyllvv9jkyspy4ww5nrz24ngb3adlh884cbdjn7562bhi47"; }; } + + { + goPackagePath = "github.com/stretchr/testify"; + fetch = { + type = "git"; + url = "https://github.com/stretchr/testify"; + rev = "f2347ac6c9c9"; + sha256 = "0ns8zc2n8gpcsd1fdaqbq7a8d939lnaxraqx5nr2fi2zdxqyh7hm"; + }; + } + { goPackagePath = "github.com/tdewolff/minify"; fetch = { type = "git"; url = "https://github.com/tdewolff/minify"; - rev = "948b6490cf3cacab5f4d7474104c3d21bf6eda46"; - sha256 = "1js5l0405kbic53qgim0lj3crw7cc2a2sbga35h9qcnm8l3cx22f"; + rev = "v2.3.6"; + sha256 = "0p4v4ab49lm5y438k5aks06fpiagbjw2j2x7i8jaa273mkgicrbb"; }; } + { goPackagePath = "github.com/tdewolff/parse"; fetch = { type = "git"; url = "https://github.com/tdewolff/parse"; - rev = "dd9676af8dd934a61082c5b3038e79626847fa32"; - sha256 = "1hp9qh8knx3q57aw5qavsf7ia3mxm8ka0bk6kjkqkqq8k9jq97qk"; + rev = "fced451e0bed"; + sha256 = "1n6wcapk8xbck2zjxd4l5cgfn1v12rr7znrdpd5y2xp1nc3739c3"; }; } + + { + goPackagePath = "github.com/tdewolff/test"; + fetch = { + type = "git"; + url = "https://github.com/tdewolff/test"; + rev = "v1.0.0"; + sha256 = "10vyp4bhanzg3yl9k8zqfdrxpsmx8yc53xv4lqxfymd7jjyqgssj"; + }; + } + { goPackagePath = "github.com/wellington/go-libsass"; fetch = { type = "git"; url = "https://github.com/wellington/go-libsass"; - rev = "615eaa47ef794d037c1906a0eb7bf85375a5decf"; + rev = "615eaa47ef79"; sha256 = "0imjiskn4vq7nml5jwb1scgl61jg53cfpkjnb9rsc6m8gsd8s16s"; }; } + { goPackagePath = "github.com/yosssi/ace"; fetch = { type = "git"; url = "https://github.com/yosssi/ace"; - rev = "2b21b56204aee785bf8d500c3f9dcbe3ed7d4515"; - sha256 = "0cgpq1zdnh8l8zsn9w63asc9k7cm6k4qvjgrb4hr1106h8fjwfma"; + rev = "v0.0.5"; + sha256 = "1kbvbc56grrpnl65grygd23gyn3nkkhxdg8awhzkjmd0cvki8w1f"; }; } + { goPackagePath = "golang.org/x/image"; fetch = { type = "git"; url = "https://go.googlesource.com/image"; - rev = "c73c2afc3b812cdd6385de5a50616511c4a3d458"; + rev = "c73c2afc3b81"; sha256 = "1kkafy29vz5xf6r29ghbvvbwrgjxwxvzk6dsa2qhyp1ddk6l2vkz"; }; } + { goPackagePath = "golang.org/x/net"; fetch = { type = "git"; url = "https://go.googlesource.com/net"; - rev = "922f4815f713f213882e8ef45e0d315b164d705c"; - sha256 = "1ci1rxk2d6hmfsjjc19n2sxhyn4jqr5ia3ykyah1h08p0pn7k52w"; + rev = "161cd47e91fd"; + sha256 = "0254ld010iijygbzykib2vags1dc0wlmcmhgh4jl8iny159lhbcv"; }; } + { goPackagePath = "golang.org/x/sync"; fetch = { type = "git"; url = "https://go.googlesource.com/sync"; - rev = "1d60e4601c6fd243af51cc01ddf169918a5407ca"; + rev = "1d60e4601c6f"; sha256 = "046jlanz2lkxq1r57x9bl6s4cvfqaic6p2xybsj8mq1120jv4rs6"; }; } + { goPackagePath = "golang.org/x/sys"; fetch = { type = "git"; url = "https://go.googlesource.com/sys"; - rev = "4ea2f632f6e912459fe60b26b1749377f0d889d5"; - sha256 = "16pdi4mmjlcrjdcz7k559jqnsvkhdmff68bbqq7ii1lp8vrpqqmy"; + rev = "d0be0721c37e"; + sha256 = "081wyvfnlf842dqg03raxfz6lldlxpmyh1prix9lmrrm65arxb12"; }; } + { goPackagePath = "golang.org/x/text"; fetch = { type = "git"; url = "https://go.googlesource.com/text"; - rev = "6e3c4e7365ddcc329f090f96e4348398f6310088"; - sha256 = "1r511ncipn7sdlssn06fpzcpy4mp4spagni4ryxq86p2b0bi8pn4"; + rev = "v0.3.0"; + sha256 = "0r6x6zjzhr8ksqlpiwm5gdd7s209kwk5p4lw54xjvz10cs3qlq19"; }; } + + { + goPackagePath = "gopkg.in/check.v1"; + fetch = { + type = "git"; + url = "https://gopkg.in/check.v1"; + rev = "788fd7840127"; + sha256 = "0v3bim0j375z81zrpr5qv42knqs0y2qv2vkjiqi5axvb78slki1a"; + }; + } + { goPackagePath = "gopkg.in/yaml.v2"; fetch = { type = "git"; url = "https://gopkg.in/yaml.v2"; - rev = "5420a8b6744d3b0345ab293f6fcba19c978f1183"; + rev = "v2.2.1"; sha256 = "0dwjrs2lp2gdlscs7bsrmyc5yf6mm4fvgw71bzr9mv2qrd2q73s1"; }; } diff --git a/pkgs/applications/misc/hyper/default.nix b/pkgs/applications/misc/hyper/default.nix index 5e1626e12c5..04c3e0320f6 100644 --- a/pkgs/applications/misc/hyper/default.nix +++ b/pkgs/applications/misc/hyper/default.nix @@ -11,11 +11,11 @@ let ]; in stdenv.mkDerivation rec { - version = "2.0.0"; + version = "2.1.1"; name = "hyper-${version}"; src = fetchurl { url = "https://github.com/zeit/hyper/releases/download/${version}/hyper_${version}_amd64.deb"; - sha256 = "04241kjy65pnp5q9z901910rmvcx18x0qaqfl31i0l4c2xj83ws0"; + sha256 = "1vr4j2vb2wpn8qzgq30l8kfck2an03jwchwywyx4zsl2vz3qp70x"; }; buildInputs = [ dpkg ]; unpackPhase = '' diff --git a/pkgs/applications/misc/ikiwiki/default.nix b/pkgs/applications/misc/ikiwiki/default.nix index 6e4fc206588..957f0f7f68b 100644 --- a/pkgs/applications/misc/ikiwiki/default.nix +++ b/pkgs/applications/misc/ikiwiki/default.nix @@ -1,13 +1,9 @@ -{ stdenv, fetchurl, perl, gettext, makeWrapper, PerlMagick, YAML -, TextMarkdown, URI, HTMLParser, HTMLScrubber, HTMLTemplate, TimeDate -, CGISession, CGIFormBuilder, DBFile, LocaleGettext, RpcXML, XMLSimple -, YAMLLibYAML, which, HTMLTree, AuthenPassphrase, NetOpenIDConsumer -, LWPxParanoidAgent, CryptSSLeay +{ stdenv, fetchurl, perlPackages, gettext, makeWrapper, PerlMagick, which , gitSupport ? false, git ? null , docutilsSupport ? false, python ? null, docutils ? null , monotoneSupport ? false, monotone ? null , bazaarSupport ? false, bazaar ? null -, cvsSupport ? false, cvs ? null, cvsps ? null, Filechdir ? null +, cvsSupport ? false, cvs ? null, cvsps ? null , subversionSupport ? false, subversion ? null , mercurialSupport ? false, mercurial ? null , extraUtils ? [] @@ -17,7 +13,7 @@ assert docutilsSupport -> (python != null && docutils != null); assert gitSupport -> (git != null); assert monotoneSupport -> (monotone != null); assert bazaarSupport -> (bazaar != null); -assert cvsSupport -> (cvs != null && cvsps != null && Filechdir != null); +assert cvsSupport -> (cvs != null && cvsps != null && perlPackages.Filechdir != null); assert subversionSupport -> (subversion != null); assert mercurialSupport -> (mercurial != null); @@ -35,20 +31,21 @@ stdenv.mkDerivation { sha256 = "00d7yzv426fvqbhvzyafddv7fa6b4j2647b0wi371wd5yjj9j3sz"; }; - buildInputs = [ perl TextMarkdown URI HTMLParser HTMLScrubber HTMLTemplate - TimeDate gettext makeWrapper DBFile CGISession CGIFormBuilder LocaleGettext - RpcXML XMLSimple PerlMagick YAML YAMLLibYAML which HTMLTree AuthenPassphrase - NetOpenIDConsumer LWPxParanoidAgent CryptSSLeay ] + buildInputs = [ which ] + ++ (with perlPackages; [ perl TextMarkdown URI HTMLParser HTMLScrubber HTMLTemplate + TimeDate gettext makeWrapper DBFile CGISession CGIFormBuilder LocaleGettext + RpcXML XMLSimple PerlMagick YAML YAMLLibYAML HTMLTree AuthenPassphrase + NetOpenIDConsumer LWPxParanoidAgent CryptSSLeay ]) ++ lib.optionals docutilsSupport [python docutils] ++ lib.optionals gitSupport [git] ++ lib.optionals monotoneSupport [monotone] ++ lib.optionals bazaarSupport [bazaar] - ++ lib.optionals cvsSupport [cvs cvsps Filechdir] + ++ lib.optionals cvsSupport [cvs cvsps perlPackages.Filechdir] ++ lib.optionals subversionSupport [subversion] ++ lib.optionals mercurialSupport [mercurial]; patchPhase = '' - sed -i s@/usr/bin/perl@${perl}/bin/perl@ pm_filter mdwn2man + 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 # State the gcc dependency, and make the cgi use our wrapper @@ -60,7 +57,7 @@ stdenv.mkDerivation { postInstall = '' for a in "$out/bin/"*; do - wrapProgram $a --suffix PERL5LIB : $PERL5LIB --prefix PATH : ${perl}/bin:$out/bin \ + wrapProgram $a --suffix PERL5LIB : $PERL5LIB --prefix PATH : ${perlPackages.perl}/bin:$out/bin \ ${lib.optionalString gitSupport ''--prefix PATH : ${git}/bin \''} ${lib.optionalString monotoneSupport ''--prefix PATH : ${monotone}/bin \''} ${lib.optionalString bazaarSupport ''--prefix PATH : ${bazaar}/bin \''} diff --git a/pkgs/applications/misc/img2pdf/default.nix b/pkgs/applications/misc/img2pdf/default.nix index 9b6ac086efd..902e9268f72 100644 --- a/pkgs/applications/misc/img2pdf/default.nix +++ b/pkgs/applications/misc/img2pdf/default.nix @@ -4,11 +4,11 @@ with python3Packages; buildPythonApplication rec { pname = "img2pdf"; - version = "0.3.1"; + version = "0.3.3"; src = fetchPypi { inherit pname version; - sha256 = "071s3gf28nb8ifxkix7dzjny6vib7791mnp0v3f4zagcjcic22a4"; + sha256 = "1ksn33j9d9df04n4jx7dli70d700rafbm37gjaz6lwsswrzc2xwx"; }; doCheck = false; # needs pdfrw diff --git a/pkgs/applications/misc/ipmicfg/default.nix b/pkgs/applications/misc/ipmicfg/default.nix index e150ab457e0..d9bccee889a 100644 --- a/pkgs/applications/misc/ipmicfg/default.nix +++ b/pkgs/applications/misc/ipmicfg/default.nix @@ -2,12 +2,12 @@ stdenv.mkDerivation rec { name = "ipmicfg-${version}"; - version = "1.28.0"; - buildVersion = "180302"; + version = "1.29.0"; + buildVersion = "181029"; src = fetchzip { url = "ftp://ftp.supermicro.com/utility/IPMICFG/IPMICFG_${version}_build.${buildVersion}.zip"; - sha256 = "0hw853cwaaxmxy1sa3m7l9gqalwpbbvp4ghk8inr7dzwxjljmr02"; + sha256 = "18nljs4xg6hffahyd0d5zlg1jhbwl7zr9ym925bkzwcnrkgqs2v3"; extraPostFetch = "chmod u+rwX,go-rwx+X $out/"; }; diff --git a/pkgs/applications/misc/jekyll/basic/Gemfile.lock b/pkgs/applications/misc/jekyll/basic/Gemfile.lock index a714cdbb0d0..6841bc14c38 100644 --- a/pkgs/applications/misc/jekyll/basic/Gemfile.lock +++ b/pkgs/applications/misc/jekyll/basic/Gemfile.lock @@ -9,7 +9,7 @@ GEM addressable (2.5.2) public_suffix (>= 2.0.2, < 4.0) colorator (1.1.0) - concurrent-ruby (1.0.5) + concurrent-ruby (1.1.1) em-websocket (0.5.1) eventmachine (>= 0.12.9) http_parser.rb (~> 0.6.0) @@ -23,7 +23,7 @@ GEM http_parser.rb (0.6.0) i18n (0.9.5) concurrent-ruby (~> 1.0) - jekyll (3.8.4) + jekyll (3.8.5) addressable (~> 2.4) colorator (~> 1.0) em-websocket (~> 0.5) @@ -47,14 +47,14 @@ GEM jekyll (~> 3.3) jekyll-sitemap (1.2.0) jekyll (~> 3.3) - jekyll-watch (2.0.0) + jekyll-watch (2.1.2) listen (~> 3.0) jemoji (0.10.1) gemoji (~> 3.0) html-pipeline (~> 2.2) jekyll (~> 3.0) kramdown (1.17.0) - liquid (4.0.0) + liquid (4.0.1) listen (3.1.5) rb-fsevent (~> 0.9, >= 0.9.4) rb-inotify (~> 0.9, >= 0.9.7) @@ -62,18 +62,18 @@ GEM mercenary (0.3.6) mini_portile2 (2.3.0) minitest (5.11.3) - nokogiri (1.8.4) + nokogiri (1.8.5) mini_portile2 (~> 2.3.0) - pathutil (0.16.1) + pathutil (0.16.2) forwardable-extended (~> 2.6) public_suffix (3.0.3) rb-fsevent (0.10.3) rb-inotify (0.9.10) ffi (>= 0.5.0, < 2) - rouge (3.2.1) + rouge (3.3.0) ruby_dep (1.5.0) safe_yaml (1.0.4) - sass (3.5.7) + sass (3.6.0) sass-listen (~> 4.0.0) sass-listen (4.0.0) rb-fsevent (~> 0.9, >= 0.9.4) @@ -96,4 +96,4 @@ DEPENDENCIES rouge BUNDLED WITH - 1.16.3 + 1.16.4 diff --git a/pkgs/applications/misc/jekyll/basic/gemset.nix b/pkgs/applications/misc/jekyll/basic/gemset.nix index 7ab1c70a98b..d680f925590 100644 --- a/pkgs/applications/misc/jekyll/basic/gemset.nix +++ b/pkgs/applications/misc/jekyll/basic/gemset.nix @@ -28,10 +28,10 @@ concurrent-ruby = { source = { remotes = ["https://rubygems.org"]; - sha256 = "183lszf5gx84kcpb779v6a2y0mx9sssy8dgppng1z9a505nj1qcf"; + sha256 = "1bnr2dlj2a11qy3rwh6m1mv5419vy32j2axk3ln7bphyvwn7pli0"; type = "gem"; }; - version = "1.0.5"; + version = "1.1.1"; }; em-websocket = { dependencies = ["eventmachine" "http_parser.rb"]; @@ -104,10 +104,10 @@ dependencies = ["addressable" "colorator" "em-websocket" "i18n" "jekyll-sass-converter" "jekyll-watch" "kramdown" "liquid" "mercenary" "pathutil" "rouge" "safe_yaml"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "01rnf0y7wx4rzh2ag74bg37vkxbg8m4nf450lypgh4khrarr3bhw"; + sha256 = "1nn2sc308l2mz0yiall4r90l6vy67qp4sy9zapi73a948nd4a5k3"; type = "gem"; }; - version = "3.8.4"; + version = "3.8.5"; }; jekyll-avatar = { dependencies = ["jekyll"]; @@ -158,10 +158,10 @@ dependencies = ["listen"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "0m7scvj3ki8bmyx5v8pzibpg6my10nycnc28lip98dskf8iakprp"; + sha256 = "1s9ly83sp8albvgdff12xy2h4xd8lm6z2fah4lzmk2yvp85jzdzv"; type = "gem"; }; - version = "2.0.0"; + version = "2.1.2"; }; jemoji = { dependencies = ["gemoji" "html-pipeline" "jekyll"]; @@ -183,10 +183,10 @@ liquid = { source = { remotes = ["https://rubygems.org"]; - sha256 = "17fa0jgwm9a935fyvzy8bysz7j5n1vf1x2wzqkdfd5k08dbw3x2y"; + sha256 = "0bs9smxgj29s4k76zfj09f7mhd35qwm9zki1yqa4jfwiki8v97nw"; type = "gem"; }; - version = "4.0.0"; + version = "4.0.1"; }; listen = { dependencies = ["rb-fsevent" "rb-inotify" "ruby_dep"]; @@ -225,19 +225,19 @@ dependencies = ["mini_portile2"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "1h9nml9h3m0mpvmh8jfnqvblnz5n5y3mmhgfc38avfmfzdrq9bgc"; + sha256 = "0byyxrazkfm29ypcx5q4syrv126nvjnf7z6bqi01sqkv4llsi4qz"; type = "gem"; }; - version = "1.8.4"; + version = "1.8.5"; }; pathutil = { dependencies = ["forwardable-extended"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "0wc18ms1rzi44lpjychyw2a96jcmgxqdvy2949r4vvb5f4p0lgvz"; + sha256 = "12fm93ljw9fbxmv2krki5k5wkvr7560qy8p4spvb9jiiaqv78fz4"; type = "gem"; }; - version = "0.16.1"; + version = "0.16.2"; }; public_suffix = { source = { @@ -267,10 +267,10 @@ rouge = { source = { remotes = ["https://rubygems.org"]; - sha256 = "0h79gn2wmn1wix2d27lgiaimccyj8gvizrllyym500pir408x62f"; + sha256 = "1digsi2s8wyzx8vsqcxasw205lg6s7izx8jypl8rrpjwshmv83ql"; type = "gem"; }; - version = "3.2.1"; + version = "3.3.0"; }; ruby_dep = { source = { @@ -292,10 +292,10 @@ dependencies = ["sass-listen"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "1sy7xsbgpcy90j5ynbq967yplffp74pvph3r8ivn2sv2b44q6i61"; + sha256 = "18c6prbw9wl8bqhb2435pd9s0lzarl3g7xf8pmyla28zblvwxmyh"; type = "gem"; }; - version = "3.5.7"; + version = "3.6.0"; }; sass-listen = { dependencies = ["rb-fsevent" "rb-inotify"]; diff --git a/pkgs/applications/misc/jekyll/full/Gemfile.lock b/pkgs/applications/misc/jekyll/full/Gemfile.lock index 01e4f368223..5fe2d108500 100644 --- a/pkgs/applications/misc/jekyll/full/Gemfile.lock +++ b/pkgs/applications/misc/jekyll/full/Gemfile.lock @@ -16,7 +16,7 @@ GEM execjs coffee-script-source (1.11.1) colorator (1.1.0) - concurrent-ruby (1.0.5) + concurrent-ruby (1.1.1) em-websocket (0.5.1) eventmachine (>= 0.12.9) http_parser.rb (~> 0.6.0) @@ -34,7 +34,7 @@ GEM http_parser.rb (0.6.0) i18n (0.9.5) concurrent-ruby (~> 1.0) - jekyll (3.8.4) + jekyll (3.8.5) addressable (~> 2.4) colorator (~> 1.0) em-websocket (~> 0.5) @@ -68,14 +68,14 @@ GEM jekyll (~> 3.3) jekyll-sitemap (1.2.0) jekyll (~> 3.3) - jekyll-watch (2.0.0) + jekyll-watch (2.1.2) listen (~> 3.0) jemoji (0.10.1) gemoji (~> 3.0) html-pipeline (~> 2.2) jekyll (~> 3.0) kramdown (1.17.0) - liquid (4.0.0) + liquid (4.0.1) liquid-c (3.0.0) liquid (>= 3.0.0) listen (3.1.5) @@ -90,11 +90,11 @@ GEM minitest (5.11.3) multi_json (1.13.1) multipart-post (2.0.0) - nokogiri (1.8.4) + nokogiri (1.8.5) mini_portile2 (~> 2.3.0) - octokit (4.12.0) + octokit (4.13.0) sawyer (~> 0.8.0, >= 0.5.3) - pathutil (0.16.1) + pathutil (0.16.2) forwardable-extended (~> 2.6) public_suffix (3.0.3) pygments.rb (1.2.1) @@ -105,10 +105,10 @@ GEM rdiscount (2.2.0.1) rdoc (6.0.4) redcarpet (3.4.0) - rouge (3.2.1) + rouge (3.3.0) ruby_dep (1.5.0) safe_yaml (1.0.4) - sass (3.5.7) + sass (3.6.0) sass-listen (~> 4.0.0) sass-listen (4.0.0) rb-fsevent (~> 0.9, >= 0.9.4) @@ -152,4 +152,4 @@ DEPENDENCIES yajl-ruby (~> 1.3.1) BUNDLED WITH - 1.16.3 + 1.16.4 diff --git a/pkgs/applications/misc/jekyll/full/gemset.nix b/pkgs/applications/misc/jekyll/full/gemset.nix index 3e92d3f28a0..4e33cd6ccdc 100644 --- a/pkgs/applications/misc/jekyll/full/gemset.nix +++ b/pkgs/applications/misc/jekyll/full/gemset.nix @@ -62,10 +62,10 @@ concurrent-ruby = { source = { remotes = ["https://rubygems.org"]; - sha256 = "183lszf5gx84kcpb779v6a2y0mx9sssy8dgppng1z9a505nj1qcf"; + sha256 = "1bnr2dlj2a11qy3rwh6m1mv5419vy32j2axk3ln7bphyvwn7pli0"; type = "gem"; }; - version = "1.0.5"; + version = "1.1.1"; }; em-websocket = { dependencies = ["eventmachine" "http_parser.rb"]; @@ -163,10 +163,10 @@ dependencies = ["addressable" "colorator" "em-websocket" "i18n" "jekyll-sass-converter" "jekyll-watch" "kramdown" "liquid" "mercenary" "pathutil" "rouge" "safe_yaml"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "01rnf0y7wx4rzh2ag74bg37vkxbg8m4nf450lypgh4khrarr3bhw"; + sha256 = "1nn2sc308l2mz0yiall4r90l6vy67qp4sy9zapi73a948nd4a5k3"; type = "gem"; }; - version = "3.8.4"; + version = "3.8.5"; }; jekyll-avatar = { dependencies = ["jekyll"]; @@ -261,10 +261,10 @@ dependencies = ["listen"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "0m7scvj3ki8bmyx5v8pzibpg6my10nycnc28lip98dskf8iakprp"; + sha256 = "1s9ly83sp8albvgdff12xy2h4xd8lm6z2fah4lzmk2yvp85jzdzv"; type = "gem"; }; - version = "2.0.0"; + version = "2.1.2"; }; jemoji = { dependencies = ["gemoji" "html-pipeline" "jekyll"]; @@ -286,10 +286,10 @@ liquid = { source = { remotes = ["https://rubygems.org"]; - sha256 = "17fa0jgwm9a935fyvzy8bysz7j5n1vf1x2wzqkdfd5k08dbw3x2y"; + sha256 = "0bs9smxgj29s4k76zfj09f7mhd35qwm9zki1yqa4jfwiki8v97nw"; type = "gem"; }; - version = "4.0.0"; + version = "4.0.1"; }; liquid-c = { dependencies = ["liquid"]; @@ -370,28 +370,28 @@ dependencies = ["mini_portile2"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "1h9nml9h3m0mpvmh8jfnqvblnz5n5y3mmhgfc38avfmfzdrq9bgc"; + sha256 = "0byyxrazkfm29ypcx5q4syrv126nvjnf7z6bqi01sqkv4llsi4qz"; type = "gem"; }; - version = "1.8.4"; + version = "1.8.5"; }; octokit = { dependencies = ["sawyer"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "1lki5vlsiijdmhaqdvr29zmcyvrlmkgi0x92hgan2194l2ikfjlh"; + sha256 = "1yh0yzzqg575ix3y2l2261b9ag82gv2v4f1wczdhcmfbxcz755x6"; type = "gem"; }; - version = "4.12.0"; + version = "4.13.0"; }; pathutil = { dependencies = ["forwardable-extended"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "0wc18ms1rzi44lpjychyw2a96jcmgxqdvy2949r4vvb5f4p0lgvz"; + sha256 = "12fm93ljw9fbxmv2krki5k5wkvr7560qy8p4spvb9jiiaqv78fz4"; type = "gem"; }; - version = "0.16.1"; + version = "0.16.2"; }; public_suffix = { source = { @@ -454,10 +454,10 @@ rouge = { source = { remotes = ["https://rubygems.org"]; - sha256 = "0h79gn2wmn1wix2d27lgiaimccyj8gvizrllyym500pir408x62f"; + sha256 = "1digsi2s8wyzx8vsqcxasw205lg6s7izx8jypl8rrpjwshmv83ql"; type = "gem"; }; - version = "3.2.1"; + version = "3.3.0"; }; ruby_dep = { source = { @@ -479,10 +479,10 @@ dependencies = ["sass-listen"]; source = { remotes = ["https://rubygems.org"]; - sha256 = "1sy7xsbgpcy90j5ynbq967yplffp74pvph3r8ivn2sv2b44q6i61"; + sha256 = "18c6prbw9wl8bqhb2435pd9s0lzarl3g7xf8pmyla28zblvwxmyh"; type = "gem"; }; - version = "3.5.7"; + version = "3.6.0"; }; sass-listen = { dependencies = ["rb-fsevent" "rb-inotify"]; diff --git a/pkgs/applications/misc/josm/default.nix b/pkgs/applications/misc/josm/default.nix index fc10bc852e5..7304ad7141a 100644 --- a/pkgs/applications/misc/josm/default.nix +++ b/pkgs/applications/misc/josm/default.nix @@ -1,15 +1,15 @@ -{ fetchurl, stdenv, makeDesktopItem, makeWrapper, unzip, jre10 }: +{ fetchurl, stdenv, makeDesktopItem, makeWrapper, unzip, jdk11 }: stdenv.mkDerivation rec { name = "josm-${version}"; - version = "14178"; + version = "14620"; src = fetchurl { url = "https://josm.openstreetmap.de/download/josm-snapshot-${version}.jar"; - sha256 = "08an4s8vbcd8vyinnvd7cxmgnrsy47j78a94nk6vq244gp7v5n0r"; + sha256 = "0ypn2awmclxsx4i7mmghs5blz2j5srdayzcxcqn5b4p1r57072bn"; }; - buildInputs = [ jre10 makeWrapper ]; + buildInputs = [ jdk11 makeWrapper ]; desktopItem = makeDesktopItem { name = "josm"; @@ -25,7 +25,7 @@ stdenv.mkDerivation rec { mkdir -p $out/bin $out/share/java cp -v $src $out/share/java/josm.jar - makeWrapper ${jre10}/bin/java $out/bin/josm \ + makeWrapper ${jdk11}/bin/java $out/bin/josm \ --add-flags "-jar $out/share/java/josm.jar" mkdir -p $out/share/applications diff --git a/pkgs/applications/misc/jrnl/default.nix b/pkgs/applications/misc/jrnl/default.nix index 30e36c3dcf0..3260f6a5069 100644 --- a/pkgs/applications/misc/jrnl/default.nix +++ b/pkgs/applications/misc/jrnl/default.nix @@ -14,7 +14,7 @@ buildPythonApplication rec { }; propagatedBuildInputs = [ - pytz six tzlocal keyring argparse dateutil + pytz six tzlocal keyring dateutil parsedatetime pycrypto ]; diff --git a/pkgs/applications/misc/k2pdfopt/default.nix b/pkgs/applications/misc/k2pdfopt/default.nix index ad2381394f4..2a3b2e61fc2 100644 --- a/pkgs/applications/misc/k2pdfopt/default.nix +++ b/pkgs/applications/misc/k2pdfopt/default.nix @@ -28,6 +28,7 @@ stdenv.mkDerivation rec { let mupdf_modded = mupdf.overrideAttrs (attrs: { name = "mupdf-1.10a"; + version = "1.10a"; src = fetchurl { url = "https://mupdf.com/downloads/archive/mupdf-1.10a-source.tar.gz"; sha256 = "0dm8wcs8i29aibzkqkrn8kcnk4q0kd1v66pg48h5c3qqp4v1zk5a"; @@ -74,19 +75,21 @@ stdenv.mkDerivation rec { cp ${src}/leptonica_mod/* src/ ''; }); - tesseract_modded = tesseract.overrideAttrs (attrs: { - prePatch = '' - cp ${src}/tesseract_mod/{ambigs.cpp,ccutil.h,ccutil.cpp} ccutil/ - cp ${src}/tesseract_mod/dawg.cpp api/ - cp ${src}/tesseract_mod/{imagedata.cpp,tessdatamanager.cpp} ccstruct/ - cp ${src}/tesseract_mod/openclwrapper.h opencl/ - cp ${src}/tesseract_mod/{tessedit.cpp,thresholder.cpp} ccmain/ - cp ${src}/tesseract_mod/tess_lang_mod_edge.h cube/ - cp ${src}/tesseract_mod/tesscapi.cpp api/ - cp ${src}/include_mod/{tesseract.h,leptonica.h} api/ - ''; - patches = [ ./tesseract.patch ]; - }); + tesseract_modded = tesseract.override { + tesseractBase = tesseract.tesseractBase.overrideAttrs (_: { + prePatch = '' + cp ${src}/tesseract_mod/{ambigs.cpp,ccutil.h,ccutil.cpp} ccutil/ + cp ${src}/tesseract_mod/dawg.cpp api/ + cp ${src}/tesseract_mod/{imagedata.cpp,tessdatamanager.cpp} ccstruct/ + cp ${src}/tesseract_mod/openclwrapper.h opencl/ + cp ${src}/tesseract_mod/{tessedit.cpp,thresholder.cpp} ccmain/ + cp ${src}/tesseract_mod/tess_lang_mod_edge.h cube/ + cp ${src}/tesseract_mod/tesscapi.cpp api/ + cp ${src}/include_mod/{tesseract.h,leptonica.h} api/ + ''; + patches = [ ./tesseract.patch ]; + }); + }; in [ zlib libpng ] ++ optional enableGSL gsl ++ @@ -101,6 +104,10 @@ stdenv.mkDerivation rec { cmakeFlags = [ "-DCMAKE_C_FLAGS=-I${src}/include_mod" ]; + NIX_LDFLAGS = [ + "-lpthread" + ]; + installPhase = '' install -D -m 755 k2pdfopt $out/bin/k2pdfopt ''; diff --git a/pkgs/applications/misc/kdeconnect/default.nix b/pkgs/applications/misc/kdeconnect/default.nix index 97e371e9e72..d15926ba6fb 100644 --- a/pkgs/applications/misc/kdeconnect/default.nix +++ b/pkgs/applications/misc/kdeconnect/default.nix @@ -20,12 +20,12 @@ stdenv.mkDerivation rec { pname = "kdeconnect"; - version = "1.3.1"; + version = "1.3.3"; name = "${pname}-${version}"; src = fetchurl { url = "mirror://kde/stable/${pname}/${version}/src/${pname}-kde-${version}.tar.xz"; - sha256 = "0rzjbn4d2lh81n19dd3a5ilm8qml3zs3g3ahg75avcw8770rr344"; + sha256 = "1vac0mw1myrswr61adv7lgif0c4wzw5wnsj0sqxj6msp4l4pfgsg"; }; buildInputs = [ diff --git a/pkgs/applications/misc/keepass-plugins/keepassrpc/default.nix b/pkgs/applications/misc/keepass-plugins/keepassrpc/default.nix index b2980bcd8ae..b45cb24b1b5 100644 --- a/pkgs/applications/misc/keepass-plugins/keepassrpc/default.nix +++ b/pkgs/applications/misc/keepass-plugins/keepassrpc/default.nix @@ -1,12 +1,12 @@ { stdenv, buildEnv, fetchurl, mono }: let - version = "1.7.3.1"; + version = "1.8.0"; drv = stdenv.mkDerivation { name = "keepassrpc-${version}"; src = fetchurl { url = "https://github.com/kee-org/keepassrpc/releases/download/v${version}/KeePassRPC.plgx"; - sha256 = "1y9b35qg27caj3pbaqqzrqpk61hbbd8617ziwdc9vl799i786m9k"; + sha256 = "1dclfpia559cqf78qw29zz235h1df5md4kgjv3bbi8y41wwmx7cd"; }; meta = with stdenv.lib; { @@ -14,7 +14,7 @@ let homepage = https://github.com/kee-org/keepassrpc; platforms = [ "x86_64-linux" ]; license = licenses.gpl2; - maintainers = with maintainers; [ mjanczyk svsdep ]; + maintainers = with maintainers; [ mjanczyk svsdep mgregoire ]; }; pluginFilename = "KeePassRPC.plgx"; diff --git a/pkgs/applications/misc/keepassx/default.nix b/pkgs/applications/misc/keepassx/default.nix index ed706b138cc..89ceca8a4f1 100644 --- a/pkgs/applications/misc/keepassx/default.nix +++ b/pkgs/applications/misc/keepassx/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, bzip2, qt4, qmake4Hook, libX11, xextproto, libXtst }: +{ stdenv, fetchurl, bzip2, qt4, qmake4Hook, libX11, xorgproto, libXtst }: stdenv.mkDerivation rec { name = "keepassx-${version}"; @@ -11,7 +11,7 @@ stdenv.mkDerivation rec { patches = [ ./random.patch ]; - buildInputs = [ bzip2 qt4 libX11 xextproto libXtst ]; + buildInputs = [ bzip2 qt4 libX11 xorgproto libXtst ]; nativeBuildInputs = [ qmake4Hook ]; diff --git a/pkgs/applications/misc/khal/default.nix b/pkgs/applications/misc/khal/default.nix index f9c929c21bf..bc2c8978a67 100644 --- a/pkgs/applications/misc/khal/default.nix +++ b/pkgs/applications/misc/khal/default.nix @@ -1,28 +1,12 @@ { stdenv, pkgs, python3 }: -let - python = python3.override { - packageOverrides = self: super: { - - # https://github.com/pimutils/khal/issues/780 - python-dateutil = super.python-dateutil.overridePythonAttrs (oldAttrs: rec { - version = "2.6.1"; - src = oldAttrs.src.override { - inherit version; - sha256 = "891c38b2a02f5bb1be3e4793866c8df49c7d19baabf9c1bad62547e0b4866aca"; - }; - }); - - }; - }; - -in with python.pkgs; buildPythonApplication rec { +with python3.pkgs; buildPythonApplication rec { pname = "khal"; - version = "0.9.9"; + version = "0.9.10"; src = fetchPypi { inherit pname version; - sha256 = "0dq9aqb9pqjfqrnfg43mhpb7m0szmychxy1ydb3lwzf3500c9rsh"; + sha256 = "03h0j0d3xyqh98x5v2gv63wv3g91hip3vsaxvybsn5iz331d23h4"; }; LC_ALL = "en_US.UTF-8"; @@ -50,6 +34,9 @@ in with python.pkgs; buildPythonApplication rec { install -D misc/__khal $out/share/zsh/site-functions/__khal ''; + # One test fails as of 0.9.10 due to the upgrade to icalendar 4.0.3 + doCheck = false; + checkPhase = '' py.test ''; @@ -58,6 +45,6 @@ in with python.pkgs; buildPythonApplication rec { homepage = http://lostpackets.de/khal/; description = "CLI calendar application"; license = licenses.mit; - maintainers = with maintainers; [ jgeerds ]; + maintainers = with maintainers; [ jgeerds gebner ]; }; } diff --git a/pkgs/applications/misc/khard/default.nix b/pkgs/applications/misc/khard/default.nix index 8ec4e7f06d1..d6e05056e1c 100644 --- a/pkgs/applications/misc/khard/default.nix +++ b/pkgs/applications/misc/khard/default.nix @@ -17,13 +17,13 @@ let }; in with python.pkgs; buildPythonApplication rec { - version = "0.12.2"; + version = "0.13.0"; name = "khard-${version}"; namePrefix = ""; src = fetchurl { url = "https://github.com/scheibler/khard/archive/v${version}.tar.gz"; - sha256 = "0lxcvzmafpvqcifgq2xjh1ca07z0vhihn5jnw8zrpmsqdc9p6b4j"; + sha256 = "06b9xcdg1na6mxa2pnlh0wfsk02k2h6hlki089aaikbg8k8ykj8f"; }; # setup.py reads the UTF-8 encoded readme. @@ -34,7 +34,6 @@ in with python.pkgs; buildPythonApplication rec { atomicwrites configobj vobject - argparse ruamel_yaml ruamel_base unidecode diff --git a/pkgs/applications/misc/kitty/default.nix b/pkgs/applications/misc/kitty/default.nix index 4febac10806..dfc2595475a 100644 --- a/pkgs/applications/misc/kitty/default.nix +++ b/pkgs/applications/misc/kitty/default.nix @@ -1,5 +1,5 @@ -{ stdenv, fetchFromGitHub, python3Packages, glfw, libunistring, harfbuzz, - fontconfig, pkgconfig, ncurses, imagemagick, xsel, +{ stdenv, substituteAll, fetchFromGitHub, python3Packages, glfw, libunistring, + harfbuzz, fontconfig, pkgconfig, ncurses, imagemagick, xsel, libstartup_notification, libX11, libXrandr, libXinerama, libXcursor, libxkbcommon, libXi, libXext, wayland-protocols, wayland, which, dbus @@ -7,7 +7,7 @@ with python3Packages; buildPythonApplication rec { - version = "0.12.3"; + version = "0.13.2"; name = "kitty-${version}"; format = "other"; @@ -15,7 +15,7 @@ buildPythonApplication rec { owner = "kovidgoyal"; repo = "kitty"; rev = "v${version}"; - sha256 = "1nhk8pbwr673gw9qjgca4lzjgp8rw7sf99ra4wsh8jplf3kvgq5c"; + sha256 = "1w93fq4rks6va0aapz6f6l1cn6zhchrfq8fv39xb6x0llx78dimx"; }; buildInputs = [ @@ -28,14 +28,12 @@ buildPythonApplication rec { outputs = [ "out" "terminfo" ]; - postPatch = '' - substituteInPlace kitty/utils.py \ - --replace "find_library('startup-notification-1')" "'${libstartup_notification}/lib/libstartup-notification-1.so'" - - substituteInPlace docs/Makefile \ - --replace 'python3 .. +launch :sphinx-build' \ - 'PYTHONPATH=$PYTHONPATH:.. HOME=$TMPDIR/nowhere sphinx-build' - ''; + patches = [ + (substituteAll { + src = ./fix-paths.patch; + libstartup_notification = "${libstartup_notification}/lib/libstartup-notification-1.so"; + }) + ]; buildPhase = '' python3 setup.py linux-package diff --git a/pkgs/applications/misc/kitty/fix-paths.patch b/pkgs/applications/misc/kitty/fix-paths.patch new file mode 100644 index 00000000000..d6e52adc445 --- /dev/null +++ b/pkgs/applications/misc/kitty/fix-paths.patch @@ -0,0 +1,27 @@ +--- a/kitty/desktop.c ++++ b/kitty/desktop.c +@@ -30,7 +30,7 @@ + static PyObject* + init_x11_startup_notification(PyObject UNUSED *self, PyObject *args) { + static bool done = false; +- static const char* libname = "libstartup-notification-1.so"; ++ static const char* libname = "@libstartup_notification@"; + // some installs are missing the .so symlink, so try the full name + static const char* libname2 = "libstartup-notification-1.so.0"; + +--- a/docs/Makefile ++++ b/docs/Makefile +@@ -3,7 +3,7 @@ +# Patching is needed here for the following reasons: +# * `sphinx-build` in nixpkgs is not a Python file but a wrapper shell script +# * importing the `constants` package from Kitty has a side effect that it +# creates the user configuration directory. This package gets imported +# while sphinx scans the code for documentation strings. +# + # You can set these variables from the command line. + SPHINXOPTS = -T $(FAIL_WARN) +-SPHINXBUILD = python3 .. +launch :sphinx-build ++SPHINXBUILD = PYTHONPATH=${PYTHONPATH}:.. HOME=${TMPDIR}/kitty-build-home sphinx-build + SPHINXPROJ = kitty + SOURCEDIR = . + BUILDDIR = _build diff --git a/pkgs/applications/misc/kiwix/default.nix b/pkgs/applications/misc/kiwix/default.nix index 8d095b78cdb..9ea8210e67e 100644 --- a/pkgs/applications/misc/kiwix/default.nix +++ b/pkgs/applications/misc/kiwix/default.nix @@ -103,5 +103,8 @@ stdenv.mkDerivation rec { license = licenses.gpl3; platforms = platforms.linux; maintainers = with maintainers; [ robbinch ]; + knownVulnerabilities = [ + "CVE-2015-1032" + ]; }; } diff --git a/pkgs/applications/misc/kupfer/default.nix b/pkgs/applications/misc/kupfer/default.nix index 3072963c43e..33a2cf93209 100644 --- a/pkgs/applications/misc/kupfer/default.nix +++ b/pkgs/applications/misc/kupfer/default.nix @@ -2,12 +2,13 @@ , fetchurl , intltool , python3Packages -, gobjectIntrospection +, gobject-introspection , gtk3 , libwnck3 , keybinder3 , hicolor-icon-theme , wrapGAppsHook +, wafHook }: with python3Packages; @@ -24,37 +25,20 @@ buildPythonApplication rec { nativeBuildInputs = [ wrapGAppsHook intltool # For setup hook - gobjectIntrospection + gobject-introspection wafHook ]; buildInputs = [ hicolor-icon-theme docutils libwnck3 keybinder3 ]; propagatedBuildInputs = [ pygobject3 gtk3 pyxdg dbus-python pycairo ]; - configurePhase = '' - runHook preConfigure - python ./waf configure --prefix=$prefix - runHook postConfigure - ''; - - buildPhase = '' - runHook preBuild - python ./waf - runHook postBuild - ''; - - installPhase = let + postInstall = let pythonPath = (stdenv.lib.concatMapStringsSep ":" (m: "${m}/lib/${python.libPrefix}/site-packages") propagatedBuildInputs); in '' - runHook preInstall - python ./waf install - gappsWrapperArgs+=( "--prefix" "PYTHONPATH" : "${pythonPath}" "--set" "PYTHONNOUSERSITE" "1" ) - - runHook postInstall ''; doCheck = false; # no tests diff --git a/pkgs/applications/misc/latte-dock/default.nix b/pkgs/applications/misc/latte-dock/default.nix index 6d22be32afa..773030bcd60 100644 --- a/pkgs/applications/misc/latte-dock/default.nix +++ b/pkgs/applications/misc/latte-dock/default.nix @@ -3,12 +3,12 @@ mkDerivation rec { pname = "latte-dock"; - version = "0.8.1"; + version = "0.8.4"; name = "${pname}-${version}"; src = fetchurl { url = "https://download.kde.org/stable/${pname}/${name}.tar.xz"; - sha256 = "1f480ahrsxrksiiyspg7kb1hnz4vcjbs3w039cjkq2vp4wvjd74q"; + sha256 = "0zm2xckyaymd53a38mf1bh9in4bh2bshbr3z8z9gn6mp7c60jay3"; name = "${name}.tar.xz"; }; diff --git a/pkgs/applications/misc/libosmocore/default.nix b/pkgs/applications/misc/libosmocore/default.nix index 4f1745c0d8c..13e7e4f9801 100644 --- a/pkgs/applications/misc/libosmocore/default.nix +++ b/pkgs/applications/misc/libosmocore/default.nix @@ -1,16 +1,16 @@ { stdenv, fetchFromGitHub, autoreconfHook, pkgconfig -, pcsclite, talloc, python2 +, pcsclite, talloc, python2, gnutls }: stdenv.mkDerivation rec { name = "libosmocore-${version}"; - version = "0.9.6"; + version = "0.12.1"; src = fetchFromGitHub { owner = "osmocom"; repo = "libosmocore"; - rev = "3cc757df1822114bf446dc2d5f6a95da92321a25"; - sha256 = "0dk7065qcy2kjra0p8q2124p73jcyvvzz3cmhid1kx5scyxmr017"; + rev = version; + sha256 = "140c9jii0qs00s50kji1znc2339s22x8sz259x4pj35rrjzyyjgp"; }; propagatedBuildInputs = [ @@ -22,7 +22,7 @@ stdenv.mkDerivation rec { ]; buildInputs = [ - pcsclite python2 + pcsclite python2 gnutls ]; enableParallelBuilding = true; @@ -31,7 +31,7 @@ stdenv.mkDerivation rec { description = "libosmocore"; homepage = https://github.com/osmocom/libosmocore; license = licenses.gpl2Plus; - platforms = platforms.linux ++ platforms.darwin; + platforms = platforms.linux; maintainers = with maintainers; [ mog ]; }; } diff --git a/pkgs/applications/misc/llpp/default.nix b/pkgs/applications/misc/llpp/default.nix index 372adef4375..ed3aca996e1 100644 --- a/pkgs/applications/misc/llpp/default.nix +++ b/pkgs/applications/misc/llpp/default.nix @@ -1,33 +1,36 @@ -{ stdenv, lib, makeWrapper, fetchgit, pkgconfig, ninja, ocaml, findlib, mupdf -, gtk3, openjpeg, jbig2dec, mujs, xsel, openssl, freetype, ncurses }: +{ stdenv, lib, substituteAll, makeWrapper, fetchgit, ocaml, mupdf, libX11, +libGLU_combined, freetype, xclip }: -assert lib.versionAtLeast (lib.getVersion ocaml) "4.02"; +assert lib.versionAtLeast (lib.getVersion ocaml) "4.07"; stdenv.mkDerivation rec { name = "llpp-${version}"; - version = "2018-03-02"; + version = "30"; src = fetchgit { url = "git://repo.or.cz/llpp.git"; - rev = "0ab1fbbf142b6df6d6bae782e3af2ec50f32dec9"; - sha256 = "1h0hrmxwm7ripgp051788p8ad0q38dc9nvjx87mdwlkwk9qc0dis"; + rev = "v${version}"; + sha256 = "0iilpzf12hs0zky58j55l4y5dvzv7fc53nsrg324n9vka92mppvd"; fetchSubmodules = false; }; - nativeBuildInputs = [ pkgconfig makeWrapper ninja ]; - buildInputs = [ ocaml findlib mupdf gtk3 jbig2dec openjpeg mujs openssl freetype ncurses ]; + patches = (substituteAll { + inherit version; + src = ./fix-build-bash.patch; + }); + + nativeBuildInputs = [ makeWrapper ]; + buildInputs = [ ocaml mupdf libX11 libGLU_combined freetype ]; dontStrip = true; configurePhase = '' - sed -i -e 's+ocamlc --version+ocamlc -version+' build.sh - sed -i -e 's+-I \$srcdir/mupdf/include -I \$srcdir/mupdf/thirdparty/freetype/include+-I ${freetype.dev}/include+' build.sh - sed -i -e 's+-lmupdf +-lfreetype -lz -lharfbuzz -ljbig2dec -lopenjp2 -ljpeg -lmupdf +' build.sh - sed -i -e 's+-L\$srcdir/mupdf/build/native ++' build.sh + mkdir -p build/mupdf/thirdparty + ln -s ${freetype.dev} build/mupdf/thirdparty/freetype ''; buildPhase = '' - sh ./build.sh build + bash ./build.bash build ''; installPhase = '' @@ -35,14 +38,14 @@ stdenv.mkDerivation rec { install build/llpp $out/bin wrapProgram $out/bin/llpp \ --prefix CAML_LD_LIBRARY_PATH ":" "$out/lib" \ - --prefix PATH ":" "${xsel}/bin" + --prefix PATH ":" "${xclip}/bin" ''; meta = with stdenv.lib; { - homepage = http://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 ]; + maintainers = with maintainers; [ pSub enzime ]; license = licenses.gpl3; }; } diff --git a/pkgs/applications/misc/llpp/fix-build-bash.patch b/pkgs/applications/misc/llpp/fix-build-bash.patch new file mode 100644 index 00000000000..25d503290ce --- /dev/null +++ b/pkgs/applications/misc/llpp/fix-build-bash.patch @@ -0,0 +1,88 @@ +From cccadedfbcb6764a38382154838113a6b2fd4dee Mon Sep 17 00:00:00 2001 +From: Michael Hoang +Date: Mon, 10 Dec 2018 15:08:01 +1100 +Subject: [PATCH] Patch build.bash for nixpkgs + +--- + build.bash | 37 ++----------------------------------- + 1 file changed, 2 insertions(+), 35 deletions(-) + +diff --git a/build.bash b/build.bash +index 1588011..72117d9 100755 +--- a/build.bash ++++ b/build.bash +@@ -29,7 +29,6 @@ srcd="$(dirname $0)" + mudir=$outd/mupdf + muinc="-I $mudir/include -I $mudir/thirdparty/freetype/include" + +-test -d "$mudir" || die muPDF not found, consult $(dirname $0)/BUILDING + + mkdir -p $outd/{$wsid,lablGL} + :>$outd/ordered +@@ -39,12 +38,6 @@ isfresh() { test -r "$1.past" && . "$1.past" && test "$k" = "$2"; } + mbt=native + mulibs="$mudir/build/$mbt/libmupdf.a" # $mudir/build/$mbt/libmupdf-third.a + +-keycmd="(cd $mudir && git describe --tags --dirty); digest $mulibs" +-isfresh "$mulibs" "$(eval $keycmd)" || ( +- make -C "$mudir" build=$mbt -j $mjobs libs +- echo "k='$(eval $keycmd)'" >$mudir/build/$mbt/libmupdf.a.past +-) && vecho "fresh mupdf" +- + oincs() { + local i= + local incs1= +@@ -90,32 +83,6 @@ mflags() { + } + + overs="$(ocamlc -vnum 2>/dev/null)" || overs="" +-test "$overs" = "4.07.0" || { +- url=https://caml.inria.fr/pub/distrib/ocaml-4.07/ocaml-4.07.0.tar.xz +- txz=$outd/$(basename $url) +- isfresh $txz $url || { +- executable_p() { command -v "$1" >/dev/null 2>&1; } +- if executable_p wget; then dl() { wget -q "$1" -O "$2"; } +- elif executable_p curl; then dl() { curl -L "$1" -o "$2"; } +- else die "no program to fetch remote urls found" +- fi +- dl $url $txz +- echo "k=$url" >$txz.past +- } && vecho "fresh $txz" +- absprefix=$(cd $outd &>/dev/null; pwd -P) +- export PATH=$absprefix/bin:$PATH +- isfresh $absprefix/bin/ocamlc "$url" || ( +- tar xf $txz -C $outd +- bn=$(basename $url) +- cd $outd/${bn%.tar.xz} +- ./configure -prefix $absprefix \ +- -no-graph -no-debugger -no-ocamldoc -no-native-compiler +- make -j $mjobs world +- make install +- echo "k='$url'" >$absprefix/bin/ocamlc.past +- ) && vecho "fresh ocamlc" +- overs=$(ocamlc -vnum 2>/dev/null) +-} + + bocaml1() { + grep -q "$3" $outd/ordered || { +@@ -224,7 +191,7 @@ bobjc() { + } && vecho "fresh $o" + } + +-ver=$(cd $srcd && git describe --tags --dirty) || ver=unknown ++ver=@version@ + + cmd="(. $srcd/genconfstr.sh >$outd/confstruct.ml)" + keycmd="digest $srcd/genconfstr.sh $outd/confstruct.ml" +@@ -278,7 +245,7 @@ for m in ml_gl ml_glarray ml_raw; do + done + + libs="str.cma unix.cma" +-clibs="-L$mudir/build/$mbt -lmupdf -lmupdf-third -lpthread" ++clibs="-lmupdf -lfreetype -lpthread" + if $darwin; then + mcomp=$(ocamlc -config | grep bytecomp_c_co | { read _ c; echo $c; }) + clibs="$clibs -framework Cocoa -framework OpenGL" +-- +2.19.2 + diff --git a/pkgs/applications/misc/lxterminal/default.nix b/pkgs/applications/misc/lxterminal/default.nix index 314f8bcece1..4fd86a5a4f5 100644 --- a/pkgs/applications/misc/lxterminal/default.nix +++ b/pkgs/applications/misc/lxterminal/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, automake, autoconf, intltool, pkgconfig, gtk3, vte +{ stdenv, fetchurl, automake, autoconf, intltool, pkgconfig, gtk3, vte, wrapGAppsHook , libxslt, docbook_xml_dtd_412, docbook_xsl, libxml2, findXMLCatalogs }: @@ -18,7 +18,7 @@ stdenv.mkDerivation rec { ]; nativeBuildInputs = [ - automake autoconf intltool pkgconfig + automake autoconf intltool pkgconfig wrapGAppsHook libxslt docbook_xml_dtd_412 docbook_xsl libxml2 findXMLCatalogs ]; diff --git a/pkgs/applications/misc/mako/default.nix b/pkgs/applications/misc/mako/default.nix new file mode 100644 index 00000000000..3d8ed3627f2 --- /dev/null +++ b/pkgs/applications/misc/mako/default.nix @@ -0,0 +1,25 @@ +{ stdenv, fetchFromGitHub, meson, ninja, pkgconfig, scdoc, systemd, pango, cairo +, wayland, wayland-protocols }: + +stdenv.mkDerivation rec { + name = "mako-${version}"; + version = "1.2"; + + src = fetchFromGitHub { + owner = "emersion"; + repo = "mako"; + rev = "v${version}"; + sha256 = "112b7s5bkvwlgsm2kng2vh8mn6wr3a6c7n1arl9adxlghdym449h"; + }; + + nativeBuildInputs = [ meson ninja pkgconfig scdoc ]; + buildInputs = [ systemd pango cairo wayland wayland-protocols ]; + + meta = with stdenv.lib; { + description = "A lightweight Wayland notification daemon"; + homepage = https://wayland.emersion.fr/mako/; + license = licenses.mit; + maintainers = with maintainers; [ dywedir ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/applications/misc/masterpdfeditor/default.nix b/pkgs/applications/misc/masterpdfeditor/default.nix index 3155ab678d8..2928d271efc 100644 --- a/pkgs/applications/misc/masterpdfeditor/default.nix +++ b/pkgs/applications/misc/masterpdfeditor/default.nix @@ -1,22 +1,27 @@ -{ stdenv, fetchurl, sane-backends, qtbase, qtsvg, nss, autoPatchelfHook }: +{ stdenv, fetchurl, sane-backends, qtbase, qtsvg, nss, autoPatchelfHook, lib, makeWrapper }: let - version = "5.1.12"; + version = "5.2.20"; in stdenv.mkDerivation { name = "masterpdfeditor-${version}"; src = fetchurl { url = "https://code-industry.net/public/master-pdf-editor-${version}_qt5.amd64.tar.gz"; - sha256 = "1i3pdrhnlj06phm36gs42s6b94pigcfb8wa5dhmplxn0dqp434hq"; + sha256 = "1399zv3m7a2rxvmy213f5yii3krsqyahpwdzsw8j535xrb9f3z1m"; }; - nativeBuildInputs = [ autoPatchelfHook ]; + nativeBuildInputs = [ autoPatchelfHook makeWrapper ]; buildInputs = [ nss qtbase qtsvg sane-backends stdenv.cc.cc ]; dontStrip = true; + # Please remove this when #44047 is fixed + postInstall = '' + wrapProgram $out/bin/masterpdfeditor5 --prefix QT_PLUGIN_PATH : ${lib.getBin qtbase}/${qtbase.qtPluginPrefix} + ''; + installPhase = '' runHook preInstall diff --git a/pkgs/applications/misc/mdp/default.nix b/pkgs/applications/misc/mdp/default.nix index f5950b87703..cd7bdd1fe7e 100644 --- a/pkgs/applications/misc/mdp/default.nix +++ b/pkgs/applications/misc/mdp/default.nix @@ -1,14 +1,14 @@ { stdenv, fetchFromGitHub, ncurses }: stdenv.mkDerivation rec { - version = "1.0.14"; + version = "1.0.15"; name = "mdp-${version}"; src = fetchFromGitHub { owner = "visit1985"; repo = "mdp"; rev = version; - sha256 = "1nljb2bkk7kswywvvn3b2k6q14bh2jnwm8cypax3mwssjmid78af"; + sha256 = "1m9a0vvyw2m55cn7zcq011vrjkiaj5a3g5g6f2dpq953gyi7gff9"; }; makeFlags = [ "PREFIX=$(out)" ]; diff --git a/pkgs/applications/misc/mediainfo-gui/default.nix b/pkgs/applications/misc/mediainfo-gui/default.nix index 185cd82435b..904fb95ca6c 100644 --- a/pkgs/applications/misc/mediainfo-gui/default.nix +++ b/pkgs/applications/misc/mediainfo-gui/default.nix @@ -2,11 +2,11 @@ , desktop-file-utils, libSM, imagemagick }: stdenv.mkDerivation rec { - version = "18.08.1"; + version = "18.12"; name = "mediainfo-gui-${version}"; src = fetchurl { url = "https://mediaarea.net/download/source/mediainfo/${version}/mediainfo_${version}.tar.xz"; - sha256 = "0rq2dczjq26g5i0ac8px7xmxjvqq4h0rzd97fy5824yb2c5ksxs9"; + sha256 = "01pk57ff297lifm3g2hrbmfmchgyy5rir8103n2j3l0dkn2i0g3d"; }; nativeBuildInputs = [ autoreconfHook pkgconfig ]; diff --git a/pkgs/applications/misc/mediainfo/default.nix b/pkgs/applications/misc/mediainfo/default.nix index 69e33fbfc18..a3320a16ee9 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 = "18.08.1"; + version = "18.12"; name = "mediainfo-${version}"; src = fetchurl { url = "https://mediaarea.net/download/source/mediainfo/${version}/mediainfo_${version}.tar.xz"; - sha256 = "0rq2dczjq26g5i0ac8px7xmxjvqq4h0rzd97fy5824yb2c5ksxs9"; + sha256 = "01pk57ff297lifm3g2hrbmfmchgyy5rir8103n2j3l0dkn2i0g3d"; }; nativeBuildInputs = [ autoreconfHook pkgconfig ]; diff --git a/pkgs/applications/misc/mlterm/default.nix b/pkgs/applications/misc/mlterm/default.nix index 31793031dc1..c872af68cef 100644 --- a/pkgs/applications/misc/mlterm/default.nix +++ b/pkgs/applications/misc/mlterm/default.nix @@ -7,11 +7,11 @@ stdenv.mkDerivation rec { name = "mlterm-${version}"; - version = "3.8.6"; + version = "3.8.7"; src = fetchurl { url = "mirror://sourceforge/project/mlterm/01release/${name}/${name}.tar.gz"; - sha256 = "06zylbinh84s9v79hrlvv44rd57z7kvgz9afbps3rjcbncxcmivd"; + sha256 = "10j7q7rk6ck86xl1898maxhgkp1h7vy7nliv9sk5bqgs7rdwn4kl"; }; nativeBuildInputs = [ pkgconfig autoconf ]; diff --git a/pkgs/applications/misc/moonlight-embedded/default.nix b/pkgs/applications/misc/moonlight-embedded/default.nix index 5aaaa7a0e37..76c2ba69d35 100644 --- a/pkgs/applications/misc/moonlight-embedded/default.nix +++ b/pkgs/applications/misc/moonlight-embedded/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchgit, cmake, perl +{ stdenv, fetchFromGitHub, cmake, perl , alsaLib, libevdev, libopus, udev, SDL2 , ffmpeg, pkgconfig, xorg, libvdpau, libpulseaudio, libcec , curl, expat, avahi, enet, libuuid @@ -6,13 +6,14 @@ stdenv.mkDerivation rec { name = "moonlight-embedded-${version}"; - version = "2.4.6"; + version = "2.4.7"; - # fetchgit used to ensure submodules are available - src = fetchgit { - url = "git://github.com/irtimmer/moonlight-embedded"; - rev = "refs/tags/v${version}"; - sha256 = "0vs6rjmz8058s9lscagiif6pcizwfrvfpk9rxxgacfi0xisfgmf1"; + src = fetchFromGitHub { + owner = "irtimmer"; + repo = "moonlight-embedded"; + rev = "v${version}"; + sha256 = "0ihgb0kh4rhbgn55s25rfbs8063zqvcyqn137jn3nsc0is1595a9"; + fetchSubmodules = true; }; outputs = [ "out" "man" ]; diff --git a/pkgs/applications/misc/mrxvt/default.nix b/pkgs/applications/misc/mrxvt/default.nix index 3f7ce3cc5d5..a6efb19b577 100644 --- a/pkgs/applications/misc/mrxvt/default.nix +++ b/pkgs/applications/misc/mrxvt/default.nix @@ -1,11 +1,11 @@ -{ stdenv, fetchurl, libX11, libXft, libXi, inputproto, libSM, libICE +{ stdenv, fetchurl, libX11, libXft, libXi, xorgproto, libSM, libICE , freetype, pkgconfig, which }: stdenv.mkDerivation { name = "mrxvt-0.5.4"; buildInputs = - [ libX11 libXft libXi inputproto libSM libICE freetype pkgconfig which ]; + [ libX11 libXft libXi xorgproto libSM libICE freetype pkgconfig which ]; configureFlags = [ "--with-x" diff --git a/pkgs/applications/misc/multimon-ng/default.nix b/pkgs/applications/misc/multimon-ng/default.nix index 99d511d413c..3fb26801775 100644 --- a/pkgs/applications/misc/multimon-ng/default.nix +++ b/pkgs/applications/misc/multimon-ng/default.nix @@ -1,6 +1,6 @@ { stdenv, fetchFromGitHub, qt4, qmake4Hook, libpulseaudio }: let - version = "1.1.5"; + version = "1.1.6"; in stdenv.mkDerivation { name = "multimon-ng-${version}"; @@ -9,7 +9,7 @@ stdenv.mkDerivation { owner = "EliasOenal"; repo = "multimon-ng"; rev = "${version}"; - sha256 = "00h884hn5afrx5i52xmngpsv3204hgb7xpw9my3lm8sajmfrjj1g"; + sha256 = "1a166mh73x77yrrnhhhzk44qrkgwav26vpidv1547zj3x3m8p0bm"; }; buildInputs = [ qt4 libpulseaudio ]; diff --git a/pkgs/applications/misc/mupdf/darwin.patch b/pkgs/applications/misc/mupdf/darwin.patch index 7466fc2ca62..be1b84b0012 100644 --- a/pkgs/applications/misc/mupdf/darwin.patch +++ b/pkgs/applications/misc/mupdf/darwin.patch @@ -1,47 +1,30 @@ -diff --git a/Makerules b/Makerules ---- a/Makerules -+++ b/Makerules -@@ -81,22 +81,10 @@ HAVE_GLUT ?= yes - SYS_GLUT_CFLAGS := -Wno-deprecated-declarations - SYS_GLUT_LIBS := -framework GLUT -framework OpenGL - --CC = xcrun cc --AR = xcrun ar --LD = xcrun ld --RANLIB_CMD = xcrun ranlib $@ +diff -ruN mupdf-1.14.0-source.orig/Makerules mupdf-1.14.0-source/Makerules +--- mupdf-1.14.0-source.orig/Makerules 2018-11-02 06:57:12.114012496 +0100 ++++ mupdf-1.14.0-source/Makerules 2018-11-02 10:11:56.717232992 +0100 +@@ -80,13 +80,6 @@ + HAVE_GLUT := yes + SYS_GLUT_CFLAGS := -Wno-deprecated-declarations + SYS_GLUT_LIBS := -framework GLUT -framework OpenGL +- CC = xcrun cc +- AR = xcrun ar +- LD = xcrun ld +- RANLIB = xcrun ranlib - --# Linux uses pkg-config for system libraries. --else ifeq "$(OS)" "Linux" +-else ifeq ($(OS),Linux) +- HAVE_OBJCOPY := yes + + ifeq ($(shell pkg-config --exists freetype2 && echo yes),yes) + SYS_FREETYPE_CFLAGS := $(shell pkg-config --cflags freetype2) +@@ -119,12 +112,6 @@ + SYS_CURL_LIBS := $(shell pkg-config --libs libcurl) + endif + +- HAVE_GLUT := yes +- ifeq ($(HAVE_GLUT),yes) +- SYS_GLUT_CFLAGS := +- SYS_GLUT_LIBS := -lglut -lGL +- endif - - HAVE_PTHREAD := yes - SYS_PTHREAD_CFLAGS := - SYS_PTHREAD_LIBS := -lpthread - --HAVE_GLUT := yes --SYS_GLUT_CFLAGS := --SYS_GLUT_LIBS := -lglut -lGL -- - ifeq "$(shell pkg-config --exists 'libcrypto >= 1.1.0' && echo yes)" "yes" - HAVE_LIBCRYPTO := yes - SYS_LIBCRYPTO_CFLAGS := -DHAVE_LIBCRYPTO $(shell pkg-config --cflags libcrypto) -@@ -113,7 +101,7 @@ SYS_CURL_CFLAGS += $(shell pkg-config --cflags openssl) - SYS_CURL_DEPS += $(shell pkg-config --libs openssl) - endif - endif --SYS_CURL_DEPS += -lpthread -lrt -+SYS_CURL_DEPS += -lpthread - - ifeq "$(shell pkg-config --exists x11 xext && echo yes)" "yes" - HAVE_X11 := yes -diff --git a/platform/gl/gl-main.c b/platform/gl/gl-main.c -index d58f7ba..808af18 100644 ---- a/platform/gl/gl-main.c -+++ b/platform/gl/gl-main.c -@@ -16,6 +16,7 @@ void glutExit(void) {} - void glutMouseWheelFunc(void *fn) {} - void glutInitErrorFunc(void *fn) {} - void glutInitWarningFunc(void *fn) {} -+#define glutSetOption(X,Y) - #endif - - enum + HAVE_X11 := $(shell pkg-config --exists x11 xext && echo yes) + ifeq ($(HAVE_X11),yes) + X11_CFLAGS := $(shell pkg-config --cflags x11 xext) diff --git a/pkgs/applications/misc/mupdf/default.nix b/pkgs/applications/misc/mupdf/default.nix index bce2a79cde3..c91b9f6fb06 100644 --- a/pkgs/applications/misc/mupdf/default.nix +++ b/pkgs/applications/misc/mupdf/default.nix @@ -14,23 +14,24 @@ let in stdenv.mkDerivation rec { - version = "1.13.0"; + version = "1.14.0"; name = "mupdf-${version}"; src = fetchurl { url = "https://mupdf.com/downloads/archive/${name}-source.tar.gz"; - sha256 = "02faww5bnjw76k6igrjzwf0lnw4xd9ckc8d6ilc3c4gfrdi6j707"; + sha256 = "093p7lv6pgyymagn28n58fs0np928r0i5p2az9cc4gwccwx4hhy4"; }; - patches = [ - (fetchpatch { - name = "CVE-2018-10289.patch"; - url = "https://bugs.ghostscript.com/attachment.cgi?id=15230"; - sha256 = "0jmpacxd9930g6k57kda9jrcrbk75whdlv8xwmqg5jwn848qvy4q"; - }) - ] + patches = # Use shared libraries to decrease size - ++ stdenv.lib.optional (!stdenv.isDarwin) ./mupdf-1.13-shared_libs-1.patch + [( fetchpatch + { + name = "CVE-2018-18662"; + url = "http://git.ghostscript.com/?p=mupdf.git;a=patch;h=164ddc22ee0d5b63a81d5148f44c37dd132a9356"; + sha256 = "1jkzh20n3b854871h86cy5y7fvy0d5wyqy51b3fg6gj3a0jqpzzd"; + } + )] + ++ stdenv.lib.optional (!stdenv.isDarwin) ./mupdf-1.14-shared_libs.patch ++ stdenv.lib.optional stdenv.isDarwin ./darwin.patch ; @@ -38,7 +39,7 @@ in stdenv.mkDerivation rec { sed -i "s/__OPENJPEG__VERSION__/${openJpegVersion}/" source/fitz/load-jpx.c ''; - makeFlags = [ "prefix=$(out)" ]; + makeFlags = [ "prefix=$(out) USE_SYSTEM_LIBS=yes" ]; nativeBuildInputs = [ pkgconfig ]; buildInputs = [ freetype harfbuzz openjpeg jbig2dec libjpeg freeglut libGLU ] ++ lib.optionals enableX11 [ libX11 libXext libXi libXrandr ] diff --git a/pkgs/applications/misc/mupdf/mupdf-1.13-shared_libs-1.patch b/pkgs/applications/misc/mupdf/mupdf-1.13-shared_libs-1.patch deleted file mode 100644 index e29f1f52077..00000000000 --- a/pkgs/applications/misc/mupdf/mupdf-1.13-shared_libs-1.patch +++ /dev/null @@ -1,45 +0,0 @@ ---- mupdf-1.12.0-source.orig/Makefile 2017-12-13 15:00:30.000000000 +0100 -+++ mupdf-1.12.0-source/Makefile 2017-12-31 00:05:23.003277481 +0100 -@@ -14,7 +14,7 @@ - # Do not specify CFLAGS or LIBS on the make invocation line - specify - # XCFLAGS or XLIBS instead. Make ignores any lines in the makefile that - # set a variable that was set on the command line. --CFLAGS += $(XCFLAGS) -Iinclude -+CFLAGS += $(XCFLAGS) -Iinclude -fPIC - LIBS += $(XLIBS) -lm - - LIBS += $(FREETYPE_LIBS) -@@ -312,10 +312,10 @@ - - # --- Library --- - --MUPDF_LIB = $(OUT)/libmupdf.a --THIRD_LIB = $(OUT)/libmupdfthird.a --THREAD_LIB = $(OUT)/libmuthreads.a --PKCS7_LIB = $(OUT)/libmupkcs7.a -+MUPDF_LIB = $(OUT)/libmupdf.so -+THIRD_LIB = $(OUT)/libmupdfthird.so -+THREAD_LIB = $(OUT)/libmuthreads.so -+PKCS7_LIB = $(OUT)/libmupkcs7.so - - MUPDF_OBJ := \ - $(FITZ_OBJ) \ -@@ -343,13 +343,17 @@ - $(ZLIB_OBJ) \ - $(LCMS2_OBJ) - --$(MUPDF_LIB) : $(MUPDF_OBJ) -+$(MUPDF_LIB) : $(MUPDF_OBJ) $(THIRD_LIB) $(THREAD_LIB) -+ $(LINK_CMD) -shared -Wl,-soname -Wl,libmupdf.so -Wl,--no-undefined - $(THIRD_LIB) : $(THIRD_OBJ) -+ $(LINK_CMD) -shared -Wl,-soname -Wl,libmupdfthird.so -Wl,--no-undefined - $(THREAD_LIB) : $(THREAD_OBJ) -+ $(LINK_CMD) -shared -Wl,-soname -Wl,libmuthreads.so -Wl,--no-undefined -lpthread - $(PKCS7_LIB) : $(PKCS7_OBJ) -+ $(LINK_CMD) -shared -Wl,-soname -Wl,libmupkcs7.so - --INSTALL_LIBS := $(MUPDF_LIB) $(THIRD_LIB) -+INSTALL_LIBS := $(MUPDF_LIB) $(THIRD_LIB) $(THREAD_LIB) $(PKCS7_LIB) - - # --- Tools and Apps --- - diff --git a/pkgs/applications/misc/mupdf/mupdf-1.14-shared_libs.patch b/pkgs/applications/misc/mupdf/mupdf-1.14-shared_libs.patch new file mode 100644 index 00000000000..131a1bbbf6b --- /dev/null +++ b/pkgs/applications/misc/mupdf/mupdf-1.14-shared_libs.patch @@ -0,0 +1,39 @@ +--- mupdf-1.14.0-source.orig/Makefile 2018-11-02 06:57:12.114012496 +0100 ++++ mupdf-1.14.0-source/Makefile 2018-11-02 09:57:10.067945307 +0100 +@@ -20,7 +20,7 @@ + # Do not specify CFLAGS or LIBS on the make invocation line - specify + # XCFLAGS or XLIBS instead. Make ignores any lines in the makefile that + # set a variable that was set on the command line. +-CFLAGS += $(XCFLAGS) -Iinclude ++CFLAGS += $(XCFLAGS) -Iinclude -fPIC + LIBS += $(XLIBS) -lm + + ifneq ($(threading),no) +@@ -190,17 +190,21 @@ + + # --- Library --- + +-MUPDF_LIB = $(OUT)/libmupdf.a +-THIRD_LIB = $(OUT)/libmupdf-third.a +-THREAD_LIB = $(OUT)/libmupdf-threads.a +-PKCS7_LIB = $(OUT)/libmupdf-pkcs7.a ++MUPDF_LIB = $(OUT)/libmupdf.so ++THIRD_LIB = $(OUT)/libmupdf-third.so ++THREAD_LIB = $(OUT)/libmupdf-threads.so ++PKCS7_LIB = $(OUT)/libmupdf-pkcs7.so + +-$(MUPDF_LIB) : $(MUPDF_OBJ) ++$(MUPDF_LIB) : $(MUPDF_OBJ) $(THIRD_LIB) $(THREAD_LIB) ++ $(LINK_CMD) $(THIRD_LIBS) -shared -Wl,-soname -Wl,libmupdf.so -Wl,--no-undefined + $(THIRD_LIB) : $(THIRD_OBJ) ++ $(LINK_CMD) -shared -Wl,-soname -Wl,libmupdf-third.so -Wl,--no-undefined + $(THREAD_LIB) : $(THREAD_OBJ) ++ $(LINK_CMD) -shared -Wl,-soname -Wl,libmupdf-threads.so -Wl,--no-undefined -lpthread + $(PKCS7_LIB) : $(PKCS7_OBJ) ++ $(LINK_CMD) -shared -Wl,-soname -Wl,libmupdf-pkcs7.so + +-INSTALL_LIBS := $(MUPDF_LIB) $(THIRD_LIB) ++INSTALL_LIBS := $(MUPDF_LIB) $(THIRD_LIB) $(THREAD_LIB) $(PKCS7_LIB) + + # --- Main tools and viewers --- + diff --git a/pkgs/applications/misc/mwic/default.nix b/pkgs/applications/misc/mwic/default.nix index 15904ab7c0a..d1538261939 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.6"; + version = "0.7.7"; name = "mwic-${version}"; src = fetchurl { url = "https://github.com/jwilk/mwic/releases/download/${version}/${name}.tar.gz"; - sha256 = "0dl56979i54hrmz5l27c4q1f7jd1bpkmi7sm86946dagi4l1ns3i"; + sha256 = "0l4anwiiqclymx0awwn4hzaj8n26ycg8nz76wjphsyscn7z2awad"; }; makeFlags=["PREFIX=\${out}"]; diff --git a/pkgs/applications/misc/mysql-workbench/default.nix b/pkgs/applications/misc/mysql-workbench/default.nix index 7068d8aedd3..daeb8b159f7 100644 --- a/pkgs/applications/misc/mysql-workbench/default.nix +++ b/pkgs/applications/misc/mysql-workbench/default.nix @@ -13,12 +13,12 @@ let inherit (python2.pkgs) paramiko pycairo pyodbc; in stdenv.mkDerivation rec { pname = "mysql-workbench"; - version = "8.0.12"; + version = "8.0.13"; name = "${pname}-${version}"; src = fetchurl { url = "http://dev.mysql.com/get/Downloads/MySQLGUITools/mysql-workbench-community-${version}-src.tar.gz"; - sha256 = "0d6k1kw0bi3q5dlilzlgds1gcrlf7pis4asm3d6pssh2jmn5hh82"; + sha256 = "1p4xy2a5cin1l06j4ixpgp1ynhjdj5gax4fjhznspch3c63jp9hj"; }; patches = [ diff --git a/pkgs/applications/misc/nixnote2/default.nix b/pkgs/applications/misc/nixnote2/default.nix index 12f8c12b586..145abfba5d5 100644 --- a/pkgs/applications/misc/nixnote2/default.nix +++ b/pkgs/applications/misc/nixnote2/default.nix @@ -30,8 +30,9 @@ mkDerivation rec { substituteInPlace nixnote.cpp --replace 'tidyProcess.start("tidy' 'tidyProcess.start("${html-tidy}/bin/tidy' ''; - postInstal = '' + postInstall = '' cp images/windowIcon.png $out/share/pixmaps/nixnote2.png + cp theme.ini $out/share/nixnote2/theme.ini ''; meta = with stdenv.lib; { diff --git a/pkgs/applications/misc/nnn/default.nix b/pkgs/applications/misc/nnn/default.nix index d97f2d2c048..9eb5382cde9 100644 --- a/pkgs/applications/misc/nnn/default.nix +++ b/pkgs/applications/misc/nnn/default.nix @@ -1,25 +1,32 @@ -{ stdenv, fetchFromGitHub, pkgconfig, ncurses, readline, conf ? null }: +{ stdenv, fetchFromGitHub, pkgconfig, ncurses, conf ? null }: with stdenv.lib; stdenv.mkDerivation rec { name = "nnn-${version}"; - version = "1.9"; + version = "2.2"; src = fetchFromGitHub { owner = "jarun"; repo = "nnn"; rev = "v${version}"; - sha256 = "0z7mr9lql5hz0518wzkj8fdsdp8yh17fr418arjxjn66md4kwgpg"; + sha256 = "01y2vkw1wakpnpzhzia3d44iir060i8vma3b3ww5wgwg7bfpzs4b"; }; configFile = optionalString (conf!=null) (builtins.toFile "nnn.h" conf); preBuild = optionalString (conf!=null) "cp ${configFile} nnn.h"; nativeBuildInputs = [ pkgconfig ]; - buildInputs = [ ncurses readline ]; + buildInputs = [ ncurses ]; - installFlags = [ "DESTDIR=$(out)" "PREFIX=" ]; + makeFlags = [ "DESTDIR=${placeholder "out"}" "PREFIX=" ]; + + # shell completions + postInstall = '' + install -Dm555 scripts/auto-completion/bash/nnn-completion.bash $out/share/bash-completion/completions/nnn.bash + install -Dm555 scripts/auto-completion/zsh/_nnn -t $out/share/zsh/site-functions + install -Dm555 scripts/auto-completion/fish/nnn.fish -t $out/share/fish/vendor_completions.d + ''; meta = { description = "Small ncurses-based file browser forked from noice"; diff --git a/pkgs/applications/misc/notejot/default.nix b/pkgs/applications/misc/notejot/default.nix index 59ba45e6f37..9e2f4bf7f2e 100644 --- a/pkgs/applications/misc/notejot/default.nix +++ b/pkgs/applications/misc/notejot/default.nix @@ -1,9 +1,9 @@ -{ stdenv, fetchFromGitHub, vala, pkgconfig, meson, ninja, python3, granite -, gtk3, gnome3, gtksourceview, json-glib, gobjectIntrospection, wrapGAppsHook }: +{ stdenv, fetchFromGitHub, vala_0_40, pkgconfig, meson, ninja, python3, granite +, gtk3, gnome3, gtksourceview, json-glib, gobject-introspection, wrapGAppsHook }: stdenv.mkDerivation rec { pname = "notejot"; - version = "1.4.5"; + version = "1.5.3"; name = "${pname}-${version}"; @@ -11,20 +11,21 @@ stdenv.mkDerivation rec { owner = "lainsce"; repo = pname; rev = version; - sha256 = "0mjig4y2rb6v2dyzya44mfz0dxgp5wnjs3kdavf9ha2jzjjr5xyb"; + sha256 = "1n41sg9a38p9qp8pz3lx9rnb8kc069vkbwf963zzpzs2745h6s9v"; }; nativeBuildInputs = [ - gobjectIntrospection + gobject-introspection meson ninja pkgconfig python3 - vala + vala_0_40 # should be `elementary.vala` when elementary attribute set is merged wrapGAppsHook ]; buildInputs = [ + gnome3.defaultIconTheme # should be `elementary.defaultIconTheme`when elementary attribute set is merged gnome3.libgee granite gtk3 @@ -39,9 +40,9 @@ stdenv.mkDerivation rec { meta = with stdenv.lib; { description = "Stupidly-simple sticky notes applet"; - homepage = https://github.com/lainsce/notejot; - license = licenses.gpl2Plus; + homepage = https://github.com/lainsce/notejot; + license = licenses.gpl2Plus; maintainers = with maintainers; [ worldofpeace ]; - platforms = platforms.linux; + platforms = platforms.linux; }; } diff --git a/pkgs/applications/misc/octoprint/default.nix b/pkgs/applications/misc/octoprint/default.nix index 41bc94a5130..9622689199a 100644 --- a/pkgs/applications/misc/octoprint/default.nix +++ b/pkgs/applications/misc/octoprint/default.nix @@ -1,91 +1,62 @@ -{ stdenv, fetchFromGitHub, python2 }: +{ stdenv, lib, fetchFromGitHub, python2 }: let - - pythonPackages = python2.pkgs.override { - overrides = self: super: with self; { - backports_ssl_match_hostname = super.backports_ssl_match_hostname.overridePythonAttrs (oldAttrs: rec { - version = "3.4.0.2"; + mkOverride = attrname: version: sha256: + self: super: { + ${attrname} = super.${attrname}.overridePythonAttrs (oldAttrs: { + inherit version; src = oldAttrs.src.override { - inherit version; - sha256 = "07410e7fb09aab7bdaf5e618de66c3dac84e2e3d628352814dc4c37de321d6ae"; - }; - }); - - flask = super.flask.overridePythonAttrs (oldAttrs: rec { - version = "0.12.4"; - src = oldAttrs.src.override { - inherit version; - sha256 = "2ea22336f6d388b4b242bc3abf8a01244a8aa3e236e7407469ef78c16ba355dd"; - }; - }); - - tornado = buildPythonPackage rec { - pname = "tornado"; - version = "4.0.2"; - - propagatedBuildInputs = [ backports_ssl_match_hostname certifi ]; - - src = fetchPypi { - inherit pname version; - sha256 = "1yhvn8i05lp3b1953majg48i8pqsyj45h34aiv59hrfvxcj5234h"; - }; - }; - - flask_login = buildPythonPackage rec { - pname = "Flask-Login"; - version = "0.2.2"; - - src = fetchPypi { - inherit pname version; - sha256 = "09ygn0r3i3jz065a5psng6bhlsqm78msnly4z6x39bs48r5ww17p"; - }; - - propagatedBuildInputs = [ flask ]; - checkInputs = [ nose ]; - - # No tests included - doCheck = false; - }; - - jinja2 = buildPythonPackage rec { - pname = "Jinja2"; - version = "2.8.1"; - - src = fetchPypi { - inherit pname version; - sha256 = "14aqmhkc9rw5w0v311jhixdm6ym8vsm29dhyxyrjfqxljwx1yd1m"; - }; - - propagatedBuildInputs = [ markupsafe ]; - - # No tests included - doCheck = false; - }; - - pylru = super.pylru.overridePythonAttrs (oldAttrs: rec { - version = "1.0.9"; - src = oldAttrs.src.override { - inherit version; - sha256 = "71376192671f0ad1690b2a7427d39a29b1df994c8469a9b46b03ed7e28c0172c"; + inherit version sha256; }; }); }; + + py = python2.override { + packageOverrides = lib.foldr lib.composeExtensions (self: super: { }) ([ + (mkOverride "flask" "0.10.1" "0wrkavjdjndknhp8ya8j850jq7a1cli4g5a93mg8nh1xz2gq50sc") + (mkOverride "flask_login" "0.2.11" "1rg3rsjs1gwi2pw6vr9jmhaqm9b3vc9c4hfcsvp4y8agbh7g3mc3") + (mkOverride "jinja2" "2.8.1" "14aqmhkc9rw5w0v311jhixdm6ym8vsm29dhyxyrjfqxljwx1yd1m") + (mkOverride "pylru" "1.0.9" "0b0pq0l7xv83dfsajsc49jcxzc99kb9jfx1a1dlx22hzcy962dvi") + (mkOverride "sarge" "0.1.4" "08s8896973bz1gg0pkr592w6g4p6v47bkfvws5i91p9xf8b35yar") + (mkOverride "tornado" "4.5.3" "02jzd23l4r6fswmwxaica9ldlyc2p6q8dk6dyff7j58fmdzf853d") + ]); }; -in pythonPackages.buildPythonApplication rec { + ignoreVersionConstraints = [ + "Click" + "Flask-Assets" + "Flask-Babel" + "Flask-Principal" + "PyYAML" + "emoji" + "flask" + "future" + "futures" + "pkginfo" + "psutil" + "pyserial" + "python-dateutil" + "requests" + "rsa" + "scandir" + "semantic_version" + "websocket-client" + "werkzeug" + "wrapt" + ]; + +in py.pkgs.buildPythonApplication rec { pname = "OctoPrint"; - version = "1.3.8"; + version = "1.3.9"; src = fetchFromGitHub { - owner = "foosel"; - repo = "OctoPrint"; - rev = version; - sha256 = "00zd5yrlihwfd3ly0mxibr77ffa8r8vkm6jhml2ml43dqb99caa3"; + owner = "foosel"; + repo = "OctoPrint"; + rev = version; + sha256 = "1yqbsfmkx4wiykjrh66a05lhn15qhpc9ay67l37kv8bhdqf2xkj4"; }; - # We need old Tornado - propagatedBuildInputs = with pythonPackages; [ + propagatedBuildInputs = with py.pkgs; [ awesome-slugify flask_assets rsa requests pkginfo watchdog semantic-version flask_principal werkzeug flaskbabel tornado psutil pyserial flask_login netaddr markdown sockjs-tornado @@ -94,31 +65,13 @@ in pythonPackages.buildPythonApplication rec { frozendict ]; - checkInputs = with pythonPackages; [ nose mock ddt ]; + checkInputs = with py.pkgs; [ nose mock ddt ]; - # Jailbreak dependencies. postPatch = '' - sed -i \ - -e 's,pkginfo>=[^"]*,pkginfo,g' \ - -e 's,Flask-Principal>=[^"]*,Flask-Principal,g' \ - -e 's,websocket-client>=[^"]*,websocket-client,g' \ - -e 's,Click>=[^"]*,Click,g' \ - -e 's,rsa>=[^"]*,rsa,g' \ - -e 's,flask>=[^"]*,flask,g' \ - -e 's,Flask-Babel>=[^"]*,Flask-Babel,g' \ - -e 's,Flask-Assets>=[^"]*,Flask-Assets,g' \ - -e 's,PyYAML>=[^"]*,PyYAML,g' \ - -e 's,scandir>=[^"]*,scandir,g' \ - -e 's,werkzeug>=[^"]*,werkzeug,g' \ - -e 's,psutil==[^"]*,psutil,g' \ - -e 's,requests>=[^"]*,requests,g' \ - -e 's,future>=[^"]*,future,g' \ - -e 's,pyserial>=[^"]*,pyserial,g' \ - -e 's,semantic_version>=[^"]*,semantic_version,g' \ - -e 's,wrapt>=[^"]*,wrapt,g' \ - -e 's,python-dateutil>=[^"]*,python-dateutil,g' \ - -e 's,emoji>=[^"]*,emoji,g' \ - -e 's,futures>=[^"]*,futures,g' \ + sed -r -i \ + ${lib.concatStringsSep "\n" (map (e: + ''-e 's@${e}[<>=]+.*@${e}",@g' \'' + ) ignoreVersionConstraints)} setup.py ''; diff --git a/pkgs/applications/misc/octoprint/plugins.nix b/pkgs/applications/misc/octoprint/plugins.nix index bd65acf5e5e..327a59618c2 100644 --- a/pkgs/applications/misc/octoprint/plugins.nix +++ b/pkgs/applications/misc/octoprint/plugins.nix @@ -1,8 +1,12 @@ -{ stdenv, fetchFromGitHub, octoprint, pythonPackages }: +{ stdenv, fetchFromGitHub, octoprint, python2Packages }: let - buildPlugin = args: pythonPackages.buildPythonApplication (args // { - buildInputs = (args.buildInputs or []) ++ [ octoprint ]; + buildPlugin = args: python2Packages.buildPythonPackage (args // { + pname = "OctoPrintPlugin-${args.pname}"; + inherit (args) version; + propagatedBuildInputs = (args.propagatedBuildInputs or []) ++ [ octoprint ]; + # none of the following have tests + doCheck = false; }); self = { @@ -11,7 +15,7 @@ let m3d-fio = self.m33-fio; # added 2016-08-13 m33-fio = buildPlugin rec { - name = "M33-Fio-${version}"; + pname = "M33-Fio"; version = "1.21"; src = fetchFromGitHub { @@ -34,16 +38,36 @@ let ''; meta = with stdenv.lib; { - homepage = https://github.com/donovan6000/M33-Fio; description = "OctoPrint plugin for the Micro 3D printer"; - platforms = platforms.all; + homepage = https://github.com/donovan6000/M33-Fio; license = licenses.gpl3; maintainers = with maintainers; [ abbradar ]; }; }; + mqtt = buildPlugin rec { + pname = "MQTT"; + version = "0.8.0"; + + src = fetchFromGitHub { + owner = "OctoPrint"; + repo = "OctoPrint-MQTT"; + rev = version; + sha256 = "1318pgwy39gkdqgll3q5lwm7avslgdwyiwb5v8m23cgyh5w8cjq7"; + }; + + propagatedBuildInputs = with python2Packages; [ paho-mqtt ]; + + meta = with stdenv.lib; { + description = "Publish printer status MQTT"; + homepage = https://github.com/OctoPrint/OctoPrint-MQTT; + license = licenses.agpl3; + maintainers = with maintainers; [ peterhoeg ]; + }; + }; + titlestatus = buildPlugin rec { - name = "OctoPrint-TitleStatus-${version}"; + pname = "TitleStatus"; version = "0.0.4"; src = fetchFromGitHub { @@ -54,16 +78,15 @@ let }; meta = with stdenv.lib; { - homepage = https://github.com/MoonshineSG/OctoPrint-TitleStatus; description = "Show printers status in window title"; - platforms = platforms.all; + homepage = https://github.com/MoonshineSG/OctoPrint-TitleStatus; license = licenses.agpl3; maintainers = with maintainers; [ abbradar ]; }; }; stlviewer = buildPlugin rec { - name = "OctoPrint-STLViewer-${version}"; + pname = "STLViewer"; version = "0.4.1"; src = fetchFromGitHub { @@ -74,9 +97,8 @@ let }; meta = with stdenv.lib; { - homepage = https://github.com/jneilliii/Octoprint-STLViewer; description = "A simple stl viewer tab for OctoPrint"; - platforms = platforms.all; + homepage = https://github.com/jneilliii/Octoprint-STLViewer; license = licenses.agpl3; maintainers = with maintainers; [ abbradar ]; }; diff --git a/pkgs/applications/misc/ola/default.nix b/pkgs/applications/misc/ola/default.nix index 792cff81865..e16d9354bb4 100644 --- a/pkgs/applications/misc/ola/default.nix +++ b/pkgs/applications/misc/ola/default.nix @@ -1,6 +1,6 @@ { stdenv, fetchFromGitHub, autoreconfHook, bison, flex, pkgconfig , libuuid, cppunit, protobuf3_1, zlib, avahi, libmicrohttpd -, perl, python3, python3Packages +, perl, python36 # Replace by python3 after the next update }: stdenv.mkDerivation rec { @@ -15,8 +15,11 @@ stdenv.mkDerivation rec { }; nativeBuildInputs = [ autoreconfHook bison flex pkgconfig perl ]; - buildInputs = [ libuuid cppunit protobuf3_1 zlib avahi libmicrohttpd python3 ]; - propagatedBuildInputs = [ python3Packages.protobuf3_1 python3Packages.numpy ]; + buildInputs = [ libuuid cppunit protobuf3_1 zlib avahi libmicrohttpd python36 ]; + propagatedBuildInputs = [ + (python36.pkgs.protobuf.override { protobuf = protobuf3_1; }) + python36.pkgs.numpy + ]; configureFlags = [ "--enable-python-libs" ]; diff --git a/pkgs/applications/misc/omegat.nix b/pkgs/applications/misc/omegat.nix new file mode 100644 index 00000000000..660b5db6105 --- /dev/null +++ b/pkgs/applications/misc/omegat.nix @@ -0,0 +1,40 @@ +{ stdenv, fetchurl, unzip, jdk, makeWrapper}: + +stdenv.mkDerivation rec { + version = "4.1.5.2"; + pname = "omegat"; + + src = fetchurl { # their zip has repeated files or something, so no fetchzip + url = mirror://sourceforge/project/omegat/OmegaT%20-%20Latest/OmegaT%204.1.5%20update%202/OmegaT_4.1.5_02_Beta_Without_JRE.zip; + sha256 = "1mdnsvjgsccpd5xwpqzgva5jjp8yd1akq9aqpild4v6k70lqql2b"; + }; + + buildInputs = [ unzip makeWrapper ]; + + unpackCmd = "unzip -o $curSrc"; # tries to go interactive without -o + + installPhase = '' + mkdir -p $out/bin + cp -r lib docs images plugins scripts *.txt *.html OmegaT.jar $out/ + + cat > $out/bin/omegat <