diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 76fb19529b031166e9e60753388f89a5f4bf334a..5c2096cfe4d88b934ccad403e99147eb00b7bd03 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 ab1a50865f093b5e5607e1b6befaeb077417658a..22940f5ea9895802e9a0520d00bf87d9283a18d9 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 dba957f766205f8a5729650e55d794712e4a6049..b3ae9e6ea863d213c35110b264068cf9dc8eadb0 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 198597a1b410bb3fc3c4c5a3f6c7a488af220891..7c52fb76897811e118de63afdba849007abb8b36 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 144a23027db97ba951ef6be193a851c0f2209371..29c023e4dcdff0d254eb2dd526188621769c4f35 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 c6aed62a939693a26b3229a7640dd309be7752cb..91b62fe138bc2c907430101f6a73e9f639dd74a7 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 b3f7f093835cd4e3fbe54565fe2854a763ac8cb7..d2c7a1baae9c689da80f553a6a956664e81b1f92 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 af74f3f9c01fbf07ec6bf8cf672f188290e5ebd6..8a5ff8dcb8e0a409f6b344e684880d924a2ceb07 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 da664394f2624c1307499dd30e03eb3aab843876..40cf11304eae4d782004bc32723d7fcc7b0ba8f5 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 98b4b92be5242770deac1025a99023194b2c5bfb..7ceaec28af38b781a1a66acbd2266cc65a9d4093 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 4193bb49f77a66f82ecf2e967f0e90a7550dc818..e6d59ebde978fbe85a396678ba239fdd46cd82b6 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 901423c52a188eff8520f22b6f3af630c15373da..b01de3c6e41345d133952f003845547e13897b1f 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 6f23e267bab25448762a88439e9fd91d96781169..65d0b40e2e82728e4ec2b88abf9cfe8cdb4af779 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 99e2a63631a77a81916af50e16527cff7cac171c..1bd90d2a0c760276a5bc1975fbefaef31de46e80 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 0000000000000000000000000000000000000000..85f08f4eae146c48185b313b259b5589693203e0 --- /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 0000000000000000000000000000000000000000..237f3441874f02d6fb7b2920b0636d1d2dd9407b --- /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 d5f2574039f22e8b75d607e498c672d8c7dd688b..4314df5c9df29e602d4749c65e4cf2f1340a9d5f 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 7677c366191fb54ecfc9146c3a498010ef424b4f..74b7a9f961eeb143b1dc87267212d7bb0162d550 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 005ed3602851ccee3a0dba23da67976335751471..50979d76d98be98951fcee60f74ae0f2e4a52fe2 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 f22984cb56b0aba028488f843539982ba6bb1d78..4564df98fe99b34187481e98fd441927bb48e4d8 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 0000000000000000000000000000000000000000..6684b809ffe614e1318f235c8c3e0e6de4505152 --- /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 f6701c1ab9c447f4aa438afdd974e6e904512ac3..c6dce04c7b8b00409e191b16b04c6cd679ef16d7 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 0000000000000000000000000000000000000000..ea0770616802a0fa27da7daa8106bfb126ce6f7d --- /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 5eabb866654ef54518eb00a46a1123577fd54b5a..acd2bf769b0dc18b4372a7a1d995a8852a698a33 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 c52a72a3df4a746757d844ce94a3385d4b8cffad..df4e5acb22cb94892a5f0dd06c5e7be8b27d170e 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 4549bbd1686b2eb6cf8f4dd52a5bdce01bd3033d..14b36f55f52f2a0402c4818fe370ea4c27943ae4 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 e42d0a81111165c335136a8ffc5f9ca2254ddcd6..5792a16963a97fe3bd78059acabce2222683c7eb 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 0000000000000000000000000000000000000000..7a97664ec59848ec406d29d88c740136d4a4a214 --- /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 1b235dbb52f634754bbc75a839bb4164f1a6018f..e4c486a0e52e57e16f0c1c794a151deaf73c4d91 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 0000000000000000000000000000000000000000..421f848d25abffc5b1e782a8af117f57dbaaac43 --- /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 496b32916552b4066ce11c290e7e0d047b9bacbe..774ed2db75009a28378c74d48eb1c37f7aaec637 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 e96e84bfe72fd259d8356f6767850c08ace8820c..d18e282c5bd341291fd6cc9d699edad6c231625c 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 2decf9febe809f7b0962036e832056593aa68547..bff2339ca9338cbdf5e14d91b47cfd2b1dbeee5f 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 0543e06a05d498aed717b6e0d56808566950d39e..e23593107d8d72a7779e0c3fcfc64a7f471286ce 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 cde27b8a5edfc0dd99768becd29a550c6b5748aa..6050271dbf6f985836e8d66d34eb2f89578d4506 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 b9e6d789404a8e0927096dba3bd5f4782260249d..8dd673ed2733fe8eea8610659862504e720da712 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 849bb9316c608bb88071cf5539c27f5d96199e8f..f541b7f22daa6e5b3244263c5da3b79e716bafb2 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 cc0c13c54471996b150ff628b1f7958ba6fea155..ac0d84b90f9686a657f51b23e6541b27475d2185 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. - - - 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 + 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 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. @@ -2406,46 +2437,187 @@ addEnvHooks "$hostOffset" myBashFunction - paxctl + autoPatchelfHook - 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. + 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 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. - autoPatchelfHook + breakpointHook - 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. + 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 0db907815b6b77496871cd266fcc828b51ae57d9..474dd32e3fb148c0aa7000dce2967a4e4dff8533 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 2a1b866dbc5e19bd20e3eec8b3a2c2a5b292fda5..d374d229f5975f0eddb5b03d379fc0ce1d359c96 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 cb1fdc121e11b7bfbcf4a25864568fe3077df2e3..0000000000000000000000000000000000000000 --- 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 df9d977e9ec70934f489a5ebf7902143a33fc12e..68062dd0daf0ad92b69dd5e7bb06e4f3477040e2 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 383eb32d75d0d8be32e4c98c3c8c1c548ff365be..2879f72ed2ba431a10692a92e5e09a1298676487 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 supplied value after applying a function to it, and + return the original value. - /* Trace the value and also return it. + 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 d7a05fec8338e84f18b763627d70fce9ed8c2dd7..d400907ebb0cbe0c41632ac162de93e46bdec392 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 34cf336d1f42c4c4c6fc3adf3d6033ee1487a547..15de50456612876a596d0ed3b71201629df53191 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 13e053b5aa7dbffcd1db7fe576fea52efc0fa63b..2f818c88de5dbd35e8508dcb2dd7951695924bf4 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 f5faf70078605698b808210a58db7bae94b1c644..863ba847423ee0c322a3fd3abe5679b28d2414c3 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 c4db280645a4c530dc85b83cfaaaff28c1596ec6..fc9cb42621d480e979b949575d25244415ecfa06 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 9ecd8f220038ee12d0b944daa79b2bc518b9d11c..be541427c2470ae1fc6c22d8f07052d70ac30409 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 199030c103af58031ec8243193d324c0b391a8c6..2e83c4247ddfb9cb11a364087a08fb5015340292 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 5fb83a4a538ccd5cf08acaf02f41fbda3f8a0446..9f8e196ee0f73844b6471b67fc66cb24d55d11a7 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 0e3421175306e91819abd54df5633680f7c0fae2..791930eafbd0ff76cda2caafd594f40267fbe159 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 e64b23414e866c9a818b60a57702c93e459b0910..1a9f3f7d1f343b8a2b023f3394ecab30f1abefd3 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 0c4095bb55cdb16b3f69fc261b98664839f46a68..47c881cfbc7cc1cd32802c851029b940b5dbd69e 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. - Example: + 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, colon-separated search path consisting of + the given `subDir` appended to each of the given paths. - /* Construct a Unix-style search path consisting of each `subDir" - directory of the given list of packages. + 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 a string without the specified suffix, if the suffix matches. - /* Return the prefix of the second argument if the first argument matches - its suffix. + 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 5eacc9eb23e11277e7f59bd76533b005f4b5e527..9b25052ab88d9437d93e1d241d1767a8bfc17ab5 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 a00165db171603477c96e0399402276a3ade9232..58677c0bdd90089ba0b22a0490540647e988ae50 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 8ba03a63fd8df5d65d6ca58bcd262ae487ca2cf1..ac1633a1a15f655cd7d7259a73ea6ff339e7c303 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 65f560328af536b764142e7eb769661d49d78b7a..2fcf1afe4628747f27eb3d250c19e3612303e604 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 bb26c93f3d7aa774e1664217b4fce5a14242d0c6..6947d41419e349663d9927a44a895ed5ff3d7ce6 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 56783d99e3d43fc7a8b2af1200cb0849f5cdb91a..1ed072e94645a6c1f5342aeef1f8eeee3a753bf9 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 d89bcfde48196ee9f52b3610f71f3c2b1e2245aa..d8f412d3fc49ae4a94faca0ab59903e45d5776c0 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 b83e1eb7d82d01bc228d9af375be0e49204ef506..a72777cbf2a685c733ae985c5442ba3b1a878b87 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 4e44e7521c4b63fa4b0fe334812ee2fdf281272c..d1ece2402ad7fa5dc80d866a77fbfcb4cdcd8742 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 a77df8e8cc27e4fc25b1b488f63da8716743e1c6..fed2cacbddf4ed53b0070c24aa8608c196847d53 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 31e6045fb64564274fbf9fce94b005547a3c83a2..59696a4432d8ba8e478971d15c61a4e88d002c2a 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 9ef531319e4daff48a03dc33c653597d31d5cff6..e0dfaf1de74c1c133f4fcc9524c1b10a8475fabc 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 bd6afda900c812935e74f17d87ec683f324f16ae..52cce90991831522134e73ca0fc835e10647a1f2 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 ec406ac1a70334d30dc4c03b21e12bd55d243dee..5c4cf0f6c5581479df0f4dbb0605c65099914f46 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 d95ff4f347e87f761be71fd6f6a1f857c403bb08..4a6024c40380bcbb04f9b2b0fb9148edc8aaa1b0 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 8d1e47c6bc951d3e601cf573cf63937734ba8f93..120cd5552f4804b4741731b941b995e006b88ef9 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,27 +107,24 @@ let % nix-shell maintainers/scripts/update.nix --argstr path gnome3 to run update script for all package under an attribute path. - ''; - 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. " + 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. ''; + 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"; buildCommand = '' @@ -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 0000000000000000000000000000000000000000..eb7d0ef2647bf59687cc7a794ca5334febce49e4 --- /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 8aca329c8f1fdba1da7ab6ef299da73dba74606b..2ee8bfdd50f1b94ba0adb2d12335724f93d2b69d 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 2a98fb1262310275849d0451221f3fc671b04a47..d03dbc4d70556cefe5223f7d8eb496345237bb23 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 028a94275345d470ddc1e5ace68566573bccf9da..cdcfa10b8200ee6980e62b6bb6d888f8622ae5c4 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 8a1a39c98c10d3dec9e919959b24b5c7e6d5d276..c77cfe137baa2cb68340bf6d2a93a2dee778fd83 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 8d05dcd34b4d40813b5d6224af5258337e77c431..cebc4122c6c66a1271ac9c8bf0770c3cf73f7c5e 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 b66adcedce6e888ce613ede9e4db7f9a03fa85cd..47a19ac82c0fea6b9e67f84f7743507cd6da6b22 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 298ffd661f67801f9d2116b05d15b1d3c613902b..5ff5bc22c85eda32c91e60eb73ce0aa29eeb0e14 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 0000000000000000000000000000000000000000..92c0f6202f283a05845912a6f330b582ee68ba11 --- /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 0000000000000000000000000000000000000000..172975199474e11d94e5673647642d35f56027d8 --- /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 0000000000000000000000000000000000000000..f58a35d626ed322e67d09c2686d7309cee8a13e5 --- /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 0000000000000000000000000000000000000000..87c8b9ee31b69127ac17cbe1fb0913fd15426232 --- /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 0000000000000000000000000000000000000000..98829e4696df72ebe396bd10e994ba0cbab5b905 --- /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 0000000000000000000000000000000000000000..bf962442ccefa696c83dc41be4aa334bb0fe3219 --- /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 0000000000000000000000000000000000000000..5ded61d9763b02a119fe010b45dec41a80857559 --- /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 0000000000000000000000000000000000000000..b3b433792f5346cdae105a455fd62b736c5b9969 --- /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 0000000000000000000000000000000000000000..54dc61f236e0b348e8c232b3f52e5003cd4a5fd5 --- /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 0000000000000000000000000000000000000000..44ccfc538ad1b83107320c1019887f06c4dec407 --- /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 0000000000000000000000000000000000000000..a24af21bd7f78d5cfeaecf780c097840f7bb1b12 --- /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 0000000000000000000000000000000000000000..d08068650fbe9d4a643c141dbe86b1277a41b357 --- /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 703a1b8b7f09adf0705291f683e29ef5a063af97..e7d66f391f55c9d63a6ef53de76be9b2921d7577 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 30e58e1e3554c2ffd386fed6a88b740a1895639f..0000000000000000000000000000000000000000 --- 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 d068887200a9e82d9b2d00abad52de9ebc358d33..2695082e386735df28a46021ba45ccc23117530f 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 e6c9eae11a728d47355d5cd59e7f329c8f0ab088..d993e47bc914bcb32e95d22f1f2bd939b68c8b4e 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 b25d3dcb9116d9fc8fb542b29662bb9a41ba7ce7..c15ad448317fdb60d7bdce65fe7daebdc159d49c 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 983f8f9cbe3e652de7298b8a561f5757800ab6c0..4a2615c9407b0174df5938a3891306b11e9acb22 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 0b311189430cb241fba0806c91a8a6005d334c04..3a81b3a20409469b8a4b09dd52432ef2cdfc9cb9 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 da78b480f5aa90f07fbd0c8aab2ae7c92aa58972..766785dfe070e9862e955bbfb47e49ba9c0f5f42 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 1227873f57800b34baad489ca43c58418db24b67..43d6c2696a2817e22b92ecb3582982b433f0ed7f 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 551a65f5e96beebc770d1c9b8fd9b41e941323d1..b6a247286d4b2b7ddb7b9ddcc2019e18c80a24f4 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 4d93aa644c1d6fdf205237a1e41f8afeba8d395b..139f61c2a5509fe0d66e188eba3fc8e5ac253721 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 c5521735428bbfb5858c1b9f13ea8abe47f8d2f6..8715a05f508b6e85c5947db0570c580d034e60a4 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 9cb5b93f27cba65d389ae69a8b5ea711b4b666fe..da3b75cf614421b5cfe5a829db092b26f2ae001d 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 4f65501f89c64874e002b56a61ebe1cf66cba275..a5580f4712ebca824c66709ceec356ddf3e9082d 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 f71e264c3478fa219656d5495544c46f60935d8b..5f05b037bdde39a51af48a5c697bfe0de4daf522 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 fd805f7f943f21a4f0febfdf1e05029ce1a52c49..9b920b989fcf36140e205be719c46d63f1d53f98 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 bf32a36895c5e1f837730624f3b46cdf4e034845..5e86ea479d518292fb6f7d35d99b865463254ec7 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 88be8b73ab37b03a66fba86f8fe23c3cfa4544e4..47c6374c81adab155a061598848cb2d37ac4247d 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 - - # 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 + # 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 / - 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 + # 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 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 45cdef1ef4df5933e4ae10d057bf341d92ad6db2..b7b1ab52a637365f03424b80d88d6725da9abc51 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 7ab84e47f53b592ef70e5c598a126ece66c0a299..ee76c9c5bf240bfa2d9247722a447a79c4c57303 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 846013b02d149ce31b6260c29a03cc6a25d41913..dee91a6ce3f4922fcad2e6f4bef572fcb2cbdd28 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 1a52a284a2573ebffe0c9c3e160eb8fd7bc4ac1b..1a0017a1799a4f87d3efc9246eb62e793f2648b1 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 3fe5ef67c144e35cf80d225a3d5963d274134969..080310ea34e0854dd5c6efada0f44830ab78861f 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 a00fe25c2b8edb8174e955d7fa98a2ab04f86c49..006da889671eea860b18c27266614761aff0c5ca 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 42a0c60c7e19c893ad57d49a9b03ddb0f6e19a6d..e68563ef48d23a7381400d78f91b4f0daf377bd6 100644 --- a/nixos/lib/testing.nix +++ b/nixos/lib/testing.nix @@ -1,6 +1,13 @@ -{ system, minimal ? false, config ? {} }: - -with import ./build-vms.nix { inherit system minimal 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 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 1ef915d406120fcb712ed61838a67de44c3c92a2..b68e55a40b90829d06e620f9924c149b6ecfe464 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 0fd26d34d07f9ff6bf8bc55eb78bb88785196ae9..48748a59d298a41ff022f7c9ae76efc507c124ca 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 0000000000000000000000000000000000000000..483ac9c3cd76221d7abbd4fdccfc870bbc840523 --- /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 fc01c15acb9b895b55ca289d2b71d4c66e9ff905..7e05e77d967a29606e168fac199a28a4ae5160dd 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 0000000000000000000000000000000000000000..9c5d993b9c592c94d85ba22cb9f5586365f7870b --- /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 6bf8c653e113a0247ee5cc1f7fefca5ba53f988b..dc7305b1ba24c7ded0dbbaaa8fc3937e30d1e3d1 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 c22e99a0a2f182ba6f91f35f59287d0310235612..87021a27d34f240778ed65bead0470138d8c4bdf 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 1ef5313d3fdd5dab4fdcf638ac249a0627190404..25253cf02e1d99e4b2e805af728d6ea66dee5620 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 d9ecaa4818ba66f101928109114e1c353b6848cf..37e66c645429410eb7b3ec660f8119c0e08ec2d9 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 a74d551f50df47240f622ffb221c6278f9eef707..b601e908e49f079d5bf3ae710f93b3b2771b51de 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 e16a021ec20b86ce9a78ac88f01f5665b512bc0a..67f7105fe2fe4fde6faa4ca355b85b9768975b85 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 555db459f57a618457a381762166c1c10d0979fa..6379b52870ea27be181069c2ad4f5a63f6467540 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 3c24dab85e4d86d00ce9967f8b6593c0be1d7286..7a65e44e828d44c812188d3fa9c86b1895219fb4 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 426e1666a814f90b6fbc1a9825ac578f4fde0a49..c3f228c9bcc4d78e0b4114397b159c8174a9be9f 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 4323a49ea1dd0e2f834f04854e297fef8edae744..cd1064630fbcce0c671b2e3f1bbfe7a215ed8aae 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 0000000000000000000000000000000000000000..148240d631cf266696522da2a1fae60f38c84b10 --- /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 c1748812821e71a86412c6a6566b708ca33244e0..925d945c081ee59bc3929d0c8fdd1385b4ceda48 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 - + set -euo 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)) + mem=$(${pkgs.gawk}/bin/awk '/MemTotal: / { + print int($2*${toString cfg.memoryPercent}/100.0/${toString devicesCount}*1024) + }' /proc/meminfo) - echo $mem > /sys/class/block/${dev}/disksize + ${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 e978ec6b40ada61d64047bfc9605d8f09d26998b..69cc22aaa34b1be6cb2dca4d6782a80c2284857c 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 0000000000000000000000000000000000000000..925443477143167e48c58f0b736c44f05bfe1447 --- /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 0000000000000000000000000000000000000000..20b2756d8b2663e8cfcfcd100d86d68fdf846f78 --- /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 8429572a8822644bbf628ee223d87bfb18cb66cc..0000000000000000000000000000000000000000 --- 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 46d06d71333a5055f67932a2f99d8d974a745b50..6b7b8069fd44a23f08ea91d113c8b955f7599435 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 1b4b1fa1954fb0cd793557f0938ddb6094365006..3a65cb800a98a9f938ca0bdf5cadea3dbdc53a18 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 50af022b93c86e54c0680afab7f1920ef6f053ef..ab9e0c92020e0c49a0b118753d548fb721085906 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 2fa37af6ca58836d8c82fb0223f8af066dedda67..6102919f0155f78202a438173a2f3cc87647e308 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 6944d1a4f76ba9c7ae239e218d62098a3039eda7..6ba8130af71f6479f49e2e1c361f9efcbae32b0a 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 01cfe8a02e10d248083fd135e32bfd33c8e7e222..e946c4abc57617a244972b0b3d5fff68d23aca02 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 3dc0f606bf6090b7278a53485ec0eb7f98429d7c..bcdbffdc20b7d8c11a07583109f27a1f19882d1b 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 96fdb997b2c07e878015cbb810910779caf17966..9475da23b1ff0877f722a2caac2e0e6554e4262e 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 0000000000000000000000000000000000000000..2882fbcc7305299b1624a2fbc34a7f952c5f77d4 --- /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 86e19f3da5629d9364765a79a4e41e1eccf7bc59..5f7194e92a364ba3c98bd0404a91844d3ee6b221 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 695c79ca17073e8a9b1ea804d1ebd14cad50bc98..71448f74c3611096e961a34e243b601b97a7f2b1 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 e395b265d15e94511c29b03f4c1a2efc31709ab6..96e06670694e8e631a5480678a8da9e7361af15f 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 b6e1d11c2b547f6ae69dc66611f62a8056665aee..69746a8e9799e4067b130b5a9538c356e8607a5c 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 1cfc8ff8612e08b0da82d7a7660112e469c7e398..5d431df4b114c5fd355777de9e285f4a034f6a98 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 4372d196261e969d59da8ab5604383db2bee748e..c1028a0ad7e93d830fd69b0733954fb5f1e2689b 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 b70faa380e545545755ee123cd18aaeebccdbe42..bad9356ab5a6eb641dda65c71634b0da9f32aa11 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 22c1e0fe9a34b64769ebd4dc8dac65fd2a931859..defc46ad2a72359fdc5b2eb8f96a96d7dd9b4b4b 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 327e3e6989f734b484342965223a46380cb88b81..4560e9c7403aa6607b0e02b9ca8bd5ab480d621f 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 2af73519bc5243bae58703d9402fc3dc61a42789..361c2e49e05c1585f79bce9be599e47e5e24884c 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 af0a3a2fcc882f6c81accdcececca47f66b77000..00c4d5018bf56ff1c2ef689954af418518dff1b9 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 8ca3592f380026260417287155b719436225854f..2e1b4b3998b55c916ddfb98d867a621ec018e047 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 6a7105e9cdaa8405637b8a070ff1323d28a9a222..09d53c322fb3721b86233f03fcb486dff30dd664 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 0b4ed6d3b6288d4ce6424d6b7742f6e03979d737..d6e6ccaecd25ae006e82409e5dc2082b27a69140 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 7f9833e184ab9464f39382701bfb0eb38b0c313d..3a717fddaba2be68af2c4958e37827c03da439dc 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 6d78b7c593f82f5f55f44951e506f5d2e8ce27e0..001505320c00505ce18bdbccdbff79be84e3c139 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 261de6955ec2db191f86894af12ed0d4c4a5eb49..1a8bd9cccb18d1e8f6f9ebdb10a42635e4146ee9 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 5aaffa4f1f2a1272ab76868c5ae27f67d02e33a6..2a2fe119d30cb36ebf7b70d23cda106479974a90 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 99d4774584f1eb527d44dad10e3bb7ae791f90ee..3f669ba7d2e1677251500c772196bb71f57426b6 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 7031d7d1d5931ef69b7828eb8ee810f7631c87f9..5d6b11498b522c06d95bdb4582ee38c9e03c0e28 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 2af8bf1f8e30cb38fa2779aa4aea2a36c9b2367a..9ab2ee87a19e503771ad585f1e8349028440110c 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 131ee272859a914899406a6344c47c8843667988..46a9b6a7d8d5ccc78f0c8a8f1a42d48997a9827b 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 d51ed195580d5352d5c4c1164bc4bd695e909593..580ea4a58e5b48c0e61848e8c9f8e68688e8e1fb 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 138eda117c74e6c11a0ba36a7cfdeac018474637..809bedc588f2b42c3f3808d924e461266e4756c2 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 942572cef9d5114569a3df55b8e7bfaf0c99d0f2..250d8c252a3bcf165b3e37139360527c9abbf04c 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 f664e2225550d62d27a2c941365f32174afaa7bd..d22f9dfa3199b0d6376c42e9b153bb2d9c5a5ae5 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 bbe7165c62fbdf3eac5ff63f1b6d0b7a5a7bd86e..656c255fcb18566fcb7033e62c149aacce908e30 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 0000000000000000000000000000000000000000..e48a4f318370825f2beb99b179462d7e4b3ae722 --- /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 c3f742acde2e684beb7b93fc1208daf2930f151a..b38af07b92c378913eca8fb8a066c78093839fd0 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 addc9dcca87ede6292c4360c0f0edbbd5b902a98..b01de9efaa5eb9efa444ccd17d2ef7792c730802 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 0000000000000000000000000000000000000000..ecc924325e6b0613871fa105d5dd0c74f4d5f092 --- /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 27b6d446c75d74fbf26e606c20b47b56077fe454..6a4d46338e19bb3774ad553e0ac43d374b5c6b88 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 0000000000000000000000000000000000000000..e42219e9638c931b179b52ca72697d74eb4f5367 --- /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 842d9e6cfb48f10fe5bbe447876ac3f3a7c2d3ec..0000000000000000000000000000000000000000 --- 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 944a8bdf16fc40bc7e90c72c49db0b1730fa3c50..9842e2bef643dfc58ec6f4b4ef191fea529bfeae 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 cc398174e6ce03418cc45ffedc3b32603fc2155e..4640c1d78d20e05b580e2938a1624d85fa87649b 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 0000000000000000000000000000000000000000..7fc5979a38aac38a103c66f888f9368530a0027d --- /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 0eaaf6b85b99ade2a9c308ed6c603d564d7eda4d..b3847db8cd9ccfdd2e2edbd9232bd47c87a387a3 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 f4ae52934760d75fe15a9710e74424c56d4f5137..21ed6603c1bdd283bef4ebea5f83a9b6766c81b8 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 0000000000000000000000000000000000000000..ac665fe4a02365e7dfcfe6bbbbc4b87f869537a8 --- /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 633e959be9f329123d51b76f5b09d258e09ca603..f27bd42bd764c89496de010bd025aeb397b77df8 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 49d522c604f5fb1cfafa12a7efc212f005909680..c290df01b96044a066a5c892a992948c0bb37408 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 5cf690c1a5606f4253f041c1608c62932a484b74..b26980daf067d760f8b1b47125871ae84832b9ad 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 416f4c9c675115ca4b685a40d7c3f74257468f45..ded17f38a618eae87d69d518895b600151cffe17 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 865d148c1629c4a9ec6b336dbabc6bdd655cac1d..164d8db5859a80db946fd9ca2c999825c7cf2069 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 eb74b9bcac125810c51ae87ca20134d8424aedf3..dc0a175d5bb8eb647550509a201e5e7fcdf4a3b1 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 dfbf5d859ba9efa5df8936688b8303b21ac7ce72..498c2f25d1c0d992586cf7b9375941995acf70af 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 e2b84c3e3b38018b95aa1ea7e8e1911e31f56226..62a499ea624de92d304927c47dcef1455e35836e 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 0000000000000000000000000000000000000000..246419b681af0cadcc00246353edeb4a53fb2005 --- /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 c81521ed9b085c5856e897b413856dd6fadbfb3f..fc9e7939d814860f8bceec52b33916b3449ce66f 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 0000000000000000000000000000000000000000..4506a67487d411713566d54a90ccc53e95b68ed8 --- /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 926c6d77d3bb54858c5bf90c9c92cbefe3dcb229..b1a0eff98c207f3e940e99fd93f2bcc6091ccfb3 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 3a1ffc55e5fe99fc098e227971821d26d9574d19..a54ef2e6fcad1bd8310cf3ee6ce585aae7630517 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 77e4b2a616d8ef404d91693c3277e48424c7f7b5..dcb9c8d4ed5f3acf73c5c7bf559c3073b913f875 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 165580b978374c4c0d5dc35cf5eff8deae365800..c6b1b0cc0bd8e3c33e15e42674704120131cd3b4 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 9ecefb32cfa8fa5713aea0a62ab0951d3b756633..c8fa9461a209472829fc8588495e0d18c653a0e4 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 c6878dd67dbf4ef2a299b0cea3ba2da218056907..7373be2a9b0bba0cfab240e662e99062ec14a368 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. - - See http://www.rabbitmq.com/configure.html + 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. + + 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. + + 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 http://www.rabbitmq.com/configure.html + 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 a0565ca26204b6c1be1c1f69dacd8517be83821f..24cad612826069b23ca0b843144b7409e7f777dc 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 415a70ea5ad41e41dbc6f3c70df361d68f32a8ae..2ad116a7872ade8234b6993e82d6d6255b0ec3f0 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 2ec78ce6f2cfa2e2ab43d81bc87289a5a35c276b..11efa47ec5b2ebe3c60512c8ba27075c627401f7 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 6ece5a9b5ad632273ac1d4470e98842de9babea9..7e8e91e4b9c386def17bab01e36c89399311f25d 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 e63d91eb9aca160aa57c9619e1ac4a6d1c088fa2..6f3c45b29bf245e305d2a5cc1241e80dca498329 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 43bbb50a48d4de8b01a25f775634b0940f479592..5a3e281ea6948c8b35d8d196bf7ffd6c2e073a5a 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"; - }; - }; - - dnsmasq-nanny = mkOption { - description = "Docker image to seed for the kube-dns dnsmasq container."; - type = types.attrs; - default = { - imageName = "k8s.gcr.io/k8s-dns-dnsmasq-nanny-amd64"; - imageDigest = "sha256:bbb2a290a568125b3b996028958eb773f33b5b87a6b37bf38a28f8b62dddb3c8"; - finalImageTag = version; - sha256 = "1fihml7s2mfwgac51cbqpylkwbivc8nyhgi4vb820s83zvl8a6y1"; - }; + replicas = mkOption { + description = "Number of DNS pod replicas to deploy in the cluster."; + default = 2; + type = types.int; }; - sidecar = mkOption { - description = "Docker image to seed for the kube-dns sidecar container."; + coredns = mkOption { + description = "Docker image to seed for the CoreDNS container."; type = types.attrs; default = { - imageName = "k8s.gcr.io/k8s-dns-sidecar-amd64"; - imageDigest = "sha256:4f1ab957f87b94a5ec1edc26fae50da2175461f00afecf68940c4aa079bd08a4"; + imageName = "coredns/coredns"; + imageDigest = "sha256:33c8da20b887ae12433ec5c40bfddefbbfa233d5ce11fb067122e68af30291d6"; 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}"; - resources = { - limits.memory = "170Mi"; - requests = { - cpu = "100m"; - memory = "70Mi"; - }; - }; + args = [ "-conf" "/etc/coredns/Corefile" ]; + image = with cfg.coredns; "${imageName}:${finalImageTag}"; + imagePullPolicy = "Never"; livenessProbe = { failureThreshold = 5; httpGet = { - path = "/healthcheck/kubedns"; - port = 10054; + path = "/health"; + port = ports.health; 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"; - } - ]; + name = "coredns"; ports = [ { - containerPort = 10053; - name = "dns-local"; + containerPort = ports.dns; + name = "dns"; protocol = "UDP"; } { - containerPort = 10053; - name = "dns-tcp-local"; + containerPort = ports.dns; + name = "dns-tcp"; protocol = "TCP"; } { - containerPort = 10055; + containerPort = ports.metrics; 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 = { + limits = { + memory = "170Mi"; + }; requests = { - cpu = "150m"; - memory = "20Mi"; + cpu = "100m"; + memory = "70Mi"; }; }; - volumeMounts = [ - { - mountPath = "/etc/k8s/dns/dnsmasq-nanny"; - name = "kube-dns-config"; - } - ]; - } - { - name = "sidecar"; - image = with cfg.sidecar; "${imageName}:${finalImageTag}"; - livenessProbe = { - httpGet = { - path = "/metrics"; - port = 10054; - scheme = "HTTP"; + securityContext = { + allowPrivilegeEscalation = false; + capabilities = { + drop = [ "all" ]; }; - initialDelaySeconds = 60; - timeoutSeconds = 5; - successThreshold = 1; - failureThreshold = 5; + readOnlyRootFilesystem = true; }; - 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 = [ + volumeMounts = [ { - containerPort = 10054; - name = "metrics"; - protocol = "TCP"; + mountPath = "/etc/coredns"; + name = "config-volume"; + readOnly = true; } ]; - 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 09174ed39f5e867766466a76243c9387033a5678..d1a1383e45b0b840ee81bafc63ccd792364ba886 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 8d767de37f00abeac5fa4df69d81762dc37fd4f2..0f07e6133bb5ced504bae64320e2fdc174c96c0f 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 67c541570b97c4af283ecc346b8b8e892930e0ca..4130ec918a70ab391456f75aa94f5bc7b92f9028 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 861b46a2d642fe4caa421364c3fbba8f4d02ddbb..5d1bfe4ec407e889e34e233a77409d48112c448c 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 5f33164998bebcafd944a21ae8deab4ea646280c..4b905f90529d2229dbc4dbadc003fadc5e3a9e86 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 86e74d5d5ab42555fd6daac062c08854563c2afc..d741ee48c48f0b78d97dc4c90ca185d3e4483c7e 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 1b8771cec3915e037568865b27fa149b3baec6f4..21e0cee3415151b535c11f212639d973ab901622 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 0000000000000000000000000000000000000000..e977751b21efd5ee40f0e46edc33d4ee4aeae39b --- /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 0dde9ee6e2e5ff8033ab17e3167927f2ba83451f..8e7945cfdb538845978a33b9bfde6db7731d4eda 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 9f2bf5ef8a9ccdae9a0757c1eff441026d72fad7..e996211be7da20b5d2f6ef878b1af56534d8052e 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 de2a757196a5d42803da4353f92ce31a16cb198f..aeab445a9983131b732fbf8e0b15274e8cbda6b1 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 f89f0d65316437b6e6193f90128073595638caa3..14f4d4909bc0c038f3114c13116889cb0fcaa415 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 933b9da2c83c14556555841f6eec8c13841d5daf..c48036a99e8fb5a15358845811eea68cc873e955 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 dafb0af2075670bdfc1f6adc27a82942365f362d..840aa5294ed0d66925ba7a1078d01f4b51fd64c9 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 0000000000000000000000000000000000000000..7fb558a98953f3e2acf42a96418612e0997da708 --- /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 aa1165ab3bba63b7987ef7c1f130f7a3a28414b0..5ea4350be5b42e2870b3af9cfe8c285f83b8b91b 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 0000000000000000000000000000000000000000..021f4f9534b42439b99ca492de9114fc7b3da489 --- /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 e9ad738269e434a89c91782585c3415129c8502d..9631157934f973ee4c00a824dd002684940d59b7 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 0000000000000000000000000000000000000000..cf26e05d5c18b1a840d41ab9ae056f6e527ff512 --- /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 4165bb64fe460178446150555fc059e890fd3aea..e4e47cfbd43838845e8c949fc30008e47238e416 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 9fcc0043186547269c5c9f8a8f2c6a40b041815b..f20860af6e12874b6462bc0e2c7a5e71cbcb8e58 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 6cf20cf4aa7e7e84436bf29074a46450050f2896..1ac53c818a7f77086ea5a350d815fb08e38a361b 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 2de42f20f6ccdbd6910ce600b685810c91862415..98e69c6dc0ea6537079a2e91f0dc9f90efdb7335 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 d7ca8a431794656a10c533199dc0d1c72454f824..2a8dfe4a66c92e669455638c8d62f64f049c962a 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 a66a7fbf495fc5b7f9edb30dbbb5aeac3882f5e3..826e512c75d1724f5386bff4bfada5c4335c62cc 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 68425822a8844231f162084b3c7100e1da998982..b894025c0fd5922f981b4d2d03d9242c40927ec3 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 dfefc1171e623b006d74293681a8fd45d823406f..c06a0665d02ff761745e618981751a826d8fa6ad 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 2198842a45116f2c2ded68804c9de951b95eac6a..1da47349c0771b7bf695ed93b27fe2046ef50bd6 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 0000000000000000000000000000000000000000..4822506a899bac2165b8217197dad99993f1bbce --- /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 8f4f39aa72889046f41a853f18b33cca61e78b14..fc1267c5d280983eac358916558a4364d16bbf1b 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 894b88e25c1b2f72534404dbe38e0a266202fadc..f4ac9e47007af9921eb4b37d2d7040ab8d4e6fbb 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 e6091182b2abc0ec239a89bc2e961398058851c7..30ad7d82fb801ff4b6a28c8f1e59184d7286d987 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 33249aa3e554c3f167c9a900ad71d63ddaa26a4c..d43733484ffa93f8d1eb67fe36447e0f6f1201a4 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 0d91b247cd34acae188edb4fc7b87dedb7b2b22d..492c645832190b5f91fda4092d7ed8c3f96a637e 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 0000000000000000000000000000000000000000..6d81c7374f4d98ec3e398c90802f0c114cd7d849 --- /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 0000000000000000000000000000000000000000..5f3b2877008f8a9ce1ea8e907924a092503accd6 --- /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 0000000000000000000000000000000000000000..b0ed2d5c2862d85a100527e8342b6e8f5cba5991 --- /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 a90c7f402e7f3790680c74ad34a39a7403a54fa5..665084a8ae054f2c6b927f3d740473f379293314 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 a222325579fecf5e0cd3f9b9fe387a532460b59c..be4d38719785aa04d3701e667a656a5b30d3ae5b 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 d81aa5643e53e28bf3a7d0ba9fdcc4646f05cdb8..769a9526cf645b96bea82f08a00b25af5ef841ef 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 - 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 + rm -rf ${cfg.statePath}/config + mkdir ${cfg.statePath}/config if [ -e ${cfg.statePath}/lib ]; then rm ${cfg.statePath}/lib fi - ln -sf ${pkgs.gitlab}/share/gitlab/lib ${cfg.statePath}/lib + + 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 + ''} + ${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 - - chown -R ${cfg.user}:${cfg.group} ${cfg.statePath}/ - chmod -R ug+rwX,o-rwx+X ${cfg.statePath}/ + 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 -fs ${pkgs.writeText "config.yml" gitlabShellYml} "$GITLAB_SHELL_CONFIG_PATH" - ln -fs ${cfg.packages.gitlab-shell}/hooks "$GITLAB_SHELL_HOOKS_PATH" + 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 - if [ "${cfg.databaseHost}" = "127.0.0.1" ]; then - if ! test -e "${cfg.statePath}/db-created"; then + 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 + + 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 0756e81612ac01babacbe49edae2af59878c4265..2e9aa33aeeee122fdeb81fd15f1cc9a5a2c29d16 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 24379ec2735486429847ac28456526297d8e0cd9..9a8116a03e88e297407c77cc0cc4ccd41ed192d6 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 92380f3e4ba43d78d9eee7f9fb653a202fa217c7..0000000000000000000000000000000000000000 --- 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 a472b6c7157c16553c037a4f6fbbfa23f59023e2..e24cecf2080796ae1871b53dd0102992adac50d0 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 2d1ff7bb411708556af194e614d78c052d496b60..bce21e8acff312103a473580b872f11687b2dea2 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 8fe5879c27648b61a45ecb1af4383e7bdbc929cf..e4810ce9f876db196002349a1da8fda6fcffac2e 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 a11296e1bd02cb49af6fbc773d81070f2e5018ac..ef90d124a284df57a79ab7b884ec296a0503177d 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 97b67a0b5033c051aa14031b172ae9306ff6de89..a99445a268d7d25b0fdd29d33dcce4f65bba9e0d 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.users = mkIf (cfg.user == "sonarr") { + sonarr = { + group = cfg.group; + home = cfg.dataDir; + uid = config.ids.uids.sonarr; + }; }; - users.groups.sonarr.gid = config.ids.gids.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 e818f4a4804d795a011d30aa12330b390bbb889d..fe472a6c68e52e39cd1dcc534c50f9f846cab632 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 1fcfb440485dcce18d0e5c608c520a21bf0ad383..c6ff540ea12f44634744a2a5a589fbe486abfcdf 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 9c9ee0448c9261637797bfcb2dc98ec872c43e78..b7f755bbc5c79f6fffedf4affe06b9434eec0380 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 0000000000000000000000000000000000000000..a40e9e846137339a7dab6b88cb4f7384d4be489d --- /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 0000000000000000000000000000000000000000..8f4258e26dedc952c2ea0d53c306bfd5903ea066 --- /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 839116de6265bdefd958c972ddfc6557a2ec4232..7ee870183cac4fe255141b7dd890ad0fdd0490a5 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 8fd3455a238f5a089ff01a91f684daf486f2dcc3..a4d29d45bacf7ff5121fa242a293344ae37cda65 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 0000000000000000000000000000000000000000..149026d20188f4305568471a42f7e37178781cae --- /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 c30647f5460bed8d40b7bc3aaa821faabec49886..5fb3e377122137afdcf1158a1e48ac7fa53a4a8d 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 0000000000000000000000000000000000000000..a4bdfa8f80535652faca688647bd5b302796680a --- /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 d48e5c550abbf1b6ca9bfa9e11efb7a2dadd65df..32e14ab21ffc82ed52f3534580b8856cfbceb556 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 ff9604c7dbcd133b008716f6db8793435f074b71..2b265d5b5a90c414091891d39c3941f442a72447 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 edcaa10d969dd7427c3140d8b786626a9d3bbdb3..4873ab1fc608872535fc2b5f38ea46054b4122b9 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 ba0dc4c217684513511dca049973f7f9dfe060e8..c8c625577d39c43de1510441952467e3c25b7be0 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 8a44cf7fd8f6ecb63c2513b22bcec517d45654a6..43b4a41eaf33a0a1295335e15fa99f3b6deac52b 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 = 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} + ''; - 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"; + 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 5dda763bd56b711cd78882c63af60cfe681e3ff8..1b1503ab5fc01295c73fab108ffdef1b44ba673a 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 1d5f400250fd4594df943797ee4131a110fa28e8..0a084561002ff3b76de4537577a0ae783643c5c8 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 0000000000000000000000000000000000000000..a9746c4d65d56e3250010c704ff4962d494b7ce9 --- /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 4ca6d4e5f8b6d0dbd111b32775056f6df0c20201..c47e87a3dc35739eed21af7ee35414ca11452c3a 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 0000000000000000000000000000000000000000..e0ae8380242585500e321d1ef690e18b89007ea4 --- /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 8dbf2d735ab96b8a57d9e32cc89c1b108352e7e7..aaed76175b845217c66c65367c81e503d9c7d1ee 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 20d1dadd3bf2a0f8f3d863f5a0f27a2c836f94f5..32d4314d5f777d16fc13e45457c83c7323817709 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 8ac9f801dcb8b5e991a62006e5b10cb1925f01ad..00875c6c4a18348d26d2fa215814c624dcd27a7a 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 412d57b27b82c8d7747829f26f121d454bb8f757..602cd50d8f553e1e0138da2ee158807df917521d 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 52c0966e05bc5ad49ffc33b27d54bb55a0c270cf..240c1392088f6d25130c95d58a8a8c3f0523b5f7 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 4c80ed0839f7c85dde5daa0c010a155a434de2d5..095024d2c8af0a5bdd6c363efd5fc9d0f1c00831 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 46e3b7457610174c807ec105454eabc94d97217a..274b36171608e863ad26f4a0874e3f8ddc620038 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 a363b545d649a3974d3f23346cd757526cb3918c..77f7025770005342061b6681ce4d8cc0ea971524 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 ab3f81037681170f30fcdc29bea67ede3504c0fd..3a92a883fbf8909e19c04b8bb66f80fcbd4a3f22 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 efdbca5d52e8469793fd6051119d1d61aa02aefc..c217ccaa405aad761e75966acaa0c55521014e22 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 0000000000000000000000000000000000000000..be7337ece7e4f227741d905f93b87e90bf9db396 --- /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 86463f276c65d11453ebd0520acc5dfcc03e593e..aba64e4f60ff09ba10c6c2387535ba554ebd03f8 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 5b83ce131389b33e2979d5f382de254b969a2087..9c51b88ef6776d94fe86863023cb3b24b3419854 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 3af0441a89d8efaf3d6cfe0b2fbc21c4d2350267..9f74e4963296e762c64f32552f59af6b2ae25e2a 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 0000000000000000000000000000000000000000..0aa6d0d9ecd35ce753770d60aeaa652d503dfb9f --- /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 2d76e0676b243ab7ec11ce372a8ab21f317ce1a3..d372dfd8f412952b9933966ce83fc4b67706392e 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 cde47bf23eaef76765e808575d0b2ef5d7c58cc1..8b918dab86dddf76d4078bde2b47234856b421b2 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 342350d49ab32089ea0311850881f781dc7ce79b..588d1c6edb0732979d2a9ce3cf5699121e39035e 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,9 +40,38 @@ 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 { @@ -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 8cf34623ab5ed7ae10d3b1224ac0b24576435ac8..feb84806ba99cef7ee462bec08e7d868aebf33c0 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 56a612b9105261d7674dbc62fa17a693163949b6..d8b9e8f8341a5a84cc47e1868f1fb611fc6d75e2 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 a37ef98caec617e6d0a4485a55547d929dcda803..25b7d6dbeba268babded8f515410109c976eb4e3 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 a47a78f1005e38d7fbe98554b206c3d823cbca43..8481f9debf39cd16c038b4a5286c0788c6846cf4 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 36ecb74ffc95630c86e934974a9385ee83a40b9b..68e005ab81dad8be46a2081f6ec005239e9887d2 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 c16fbe8a52fa2450c0d8b6885515612c67509faf..90d08ca31316b58da9374f6617c5c20d9fb5565d 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 b16d299917fee9191f1741deed224d5c443e3f25..d4f7e95f859fb5716c4d612b759806f4f82fca0c 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 0000000000000000000000000000000000000000..f5ca63e789304f9467fce8d5a338bf13fc67f8b6 --- /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 c610b3b666062b6f27d4451245d569fb92a1c6f3..b2ef1885a9555e584c4912c6e9342c4e61f8e05e 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 35cdddc590b80ed0c00053a202329e1217402564..3379efd1afce418646fc6bd2696587364b9a7cf6 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 564632a85ae5c408dd32cfedf38c775e8c7d4fc0..41aff1480a05a1b289426f4bf141def261441d53 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 46111a76af808bd844befe93cb9eba2cfcd56325..d0a3ed7bb5e0afcc2ed8460e49e661b450e73185 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 61f22a366a0236bc5d272712d11b44f7f460ac02..a1c5d879f3cb2af30d9190c5df25906f8c7bdce0 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 a4cd368397e71fc9b684d203b878dc42feea4745..764af3846fe5dd5ac8e92e46c406929a7be3c73a 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 f817db2ad000b47efe834bee24c5a29c830d7fb0..0000000000000000000000000000000000000000 --- 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 0000000000000000000000000000000000000000..bce5b15a19ec7c4a0393790ae784aee544e4a6d1 --- /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 0000000000000000000000000000000000000000..048dbd7386300e1fbb305130801a23b25ab929cc --- /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 dbf18ec1d1149ba9e1d33144a7e556ad8fbbe902..1031d6f3d7e29a1baabc76980706c44e68660737 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 43785c392feed500eacce7b4ef8ef9d99d85db12..8cb1275284a3d53864ca9584fc074dace5d89e88 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 ca36bba58c02662dd69e992a35390053ec272967..3539b3ddb4f1c924bdb46cf790aa40989d7413ec 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 90140a337ed8c509da9472f05cfc382327413a29..7200c40e89f7f6f2ba93c720c9b3448ef4728744 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. - ''; - }; - - javaPackage = mkOption { - type = types.package; - default = pkgs.jre; - defaultText = "pkgs.jre"; - description = '' - Which Java derivation to use for running solr. - ''; - }; + enable = mkEnableOption "Enables the solr service."; - 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. - ''; + stateDir = mkOption { + type = types.path; + default = "/var/lib/solr"; + description = "The solr home directory containing config, data, and logging files."; }; - user = mkOption { - type = types.str; - description = '' - The user that should run the solr process and. - the working directories. - ''; + extraJavaOptions = mkOption { + type = types.listOf types.str; + default = []; + description = "Extra command line options given to the java process running Solr."; }; - group = mkOption { + user = mkOption { type = types.str; - description = '' - The group that will own the working directory. - ''; + default = "solr"; + description = "User under which Solr is ran."; }; - solrHome = mkOption { + group = 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. - ''; - }; - - extraJavaOptions = mkOption { - type = types.listOf types.str; - default = []; - 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. - ''; + 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 5bca15833544bfa66a8df69e32362c0a2cff2fc9..fda864f2c30a3c939058a0eba92572a9743a958c 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 9b6d4be9bda83e9f38d385a86327c19799953efe..61b751bb518b88c9329ab4d2353824041acd9c92 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 1a700828ce77cad82d1ac472f1e11daac7846b58..3ad555f78ef826a619fe942df7a6f64553f08cf1 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 e2c45ed64ac0fd098528c47ff0ca62905c4eb5ba..0000000000000000000000000000000000000000 --- 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 0000000000000000000000000000000000000000..26ac85de402fbd560e44428f8d7a7f4e5520623f --- /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 0000000000000000000000000000000000000000..d0f470f836edd4648be1f85ef12c98feac4d4966 --- /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 0000000000000000000000000000000000000000..a53d9dd0c6b5c6e164066c47ffd498d70675b6f7 --- /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 6d0dcacf97787c8d2813df0f5e04d52801e2bf77..603a5d01accee522b1bdc58036b19ba5c289213a 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 c8ddca9a0db63451faeccc8ba46dcdbbc5f2c724..8fcf4fb91fc465c68827807a8ae213351135a7e5 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 59c45fcb44ee1b0061f7f856f5b34d6af36f5a74..82b6a51028e34b9222d2d9757f1506c84ad1a8fe 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 f896d92fd6fc3b90bad0dd67242e3984937aed46..b71887fcc6ee86f1da9b6cab41ba14dd36fbfd91 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 b6cb9f3b7c418afdb2f4dff17bb09c0e276fced2..9f48d1e16a449c49c5880de139ba9cd8887924d3 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 f5ec0a5f31b8bcec63a280de0f90c60198e4893d..dba970c612bc4f4654d41bdf54d11b90b286515b 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 fbbd7715c6b3aae1377cd76e9292215fe8c8f604..9fddf8320748904de3c79eaaee768ea6721c7f39 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 44c3df1d057bc071ad62e2ac852c9f91c5c7d699..ecb1c5615d58df501c0b4ede986dd9d29c5e7662 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 0000000000000000000000000000000000000000..9600d1be7c8871be296fb8e5753207a2fe22de3f --- /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 2ba5698d6cb1bad11464d51c04d3637156d09e5b..0000000000000000000000000000000000000000 --- 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 5571f77334cc75e6d03eef03f0ec99882c7c2c49..7b0ce8a8d03f22c2677d31003604cb563f5a9e3a 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 73607c6f9a3bb8fdd20c31e26d284534932977a5..2d6ed8530745e227b528e9b1da5b320e0208c7e0 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 77194f3474928270d813f60579392d0ab179763b..5c387700a5d59ac6a106e454e8611b777a3dd5e0 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 02695c1c43a1e619b71541eac2da5b74358a6e3a..e871ae6ff15ad2021f3aba8fcba3ebdd1c180828 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 6345a9a569355545f9c6f9d177d25212d5783488..0000000000000000000000000000000000000000 --- 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 c810b914e258afc8345ccf16a503f2074dacdbe3..c68bfd25f6a86f74a343df6a56245ab678230180 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 35b5edced68b66d612225a2a42281705a8968d90..e70c980d524370442efc09f3e84958d835ee8c2c 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 508398f03acea55178b42a71c22f8eee3e71bd09..6c733f093ba8c46e775ce941193e5342040a2af3 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 8e2b8819e71bdc1181c52d939f176d70d33b1c93..6a50d8ed5cd463602546becb1040c9bcbf4eb54c 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 e1f4ff5db7f2c209a0a7f6476a9ad2d0c2c85cae..152c89a2caec8d5ed5b90b8ecd88e93ee4b1d982 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; + }; + + mapPool = n: p: { + phpPackage = p.phpPackage; + config = '' + listen = ${p.listen} + ${p.extraConfig} + ''; + }; - fpmCfgFile = pool: poolConfig: pkgs.writeText "phpfpm-${pool}.conf" '' + 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 cc688c2c48a251c8594be15504187213d55f3eee..40c83cddb95743fa1364e7205130cd060021512a 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 d92ba72a833624d7589d50e9ab29fc340a504c5c..68261c50324d0bd20f53c961ab4522097676f6a1 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 8641c05de52e8c96357bd31e71dc319767761f4f..cafd8d88ec4d3436b54a4535c71ad01b6d0ee8c2 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 0d5b860d461734b301139e840e94aa7e85d3ad05..7544ba4638acfb9cb8faf415b87efa831d591c47 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.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 - - if [ -d "${p}/lib/girepository-1.0" ]; then - export GI_TYPELIB_PATH=$GI_TYPELIB_PATH''${GI_TYPELIB_PATH:+:}${p}/lib/girepository-1.0 - export LD_LIBRARY_PATH=$LD_LIBRARY_PATH''${LD_LIBRARY_PATH:+:}${p}/lib - fi - '') cfg.sessionPath} - fi + services.xserver.displayManager.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); + + 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} ''; 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 896f70c86ebb6c5af058c9ac7ee5ddb2af7b8360..686bbd0dcf98b79034cdc40b9933aeed6f24975b 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 db83aaf3c19f3cdc31fb551c4059c8700fbd46ea..4d2fafd1496174ed241be1775cb754a14ff8e821 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 11c1aa4315a8c2449ebbcdd567329b913cac2c85..704cc78c1528f557ab327d50b0f4820e9539c5e7 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 75b9a76e1924c76143574e8a8798edec01b01249..dabf09418da7299ba397e8d8da25dc8287079a23 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 26b79730dd38989a2d6dd54a02b7f312c5eef4a2..0e87e6adbab8e3ab5c707fb1abbd54d6e0253158 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 6cc30b218f4a0cf13b4c1e8ddf4e31cff6ef6681..226fee7491c1a26c1eb21af3ad828cf99ec6dd9d 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 013956c0546647ecfdeb4da05d7955b4c3e9302a..d1ee076e918583ffecbea35ab4cff7e978dae33d 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 a685dbfff2a01d6fb6f33bd01f4a2ec3333773f1..567c3ac3454929f9f972a67b003402ce8f8b207d 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 522a0dc92d6f28076e597987c8857ac9541dce84..05830e325d5143c5fc5bd44d84a38e4c9f42ff17 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 b46ede550c16e49bc85420077192a8f90d48d96c..a4b57cfdab6449bfaebe959bb4e60ae49df0dfa0 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 0000000000000000000000000000000000000000..58faa8e2f9dfccb2b6cd015d31353867ed74404e --- /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 f2ce089ce19aab3b285a610222ef0e3fdd0cce93..d916fa5bb393c16950a9f6bec5ba9730c8a0bc71 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 297e36311656b924a7ddfe5236c0b278fb5c066c..34ae8c11a3f0c024af706c38736caadf55cc9385 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 b1eaf0189562f713365a14f79aafc058092c7177..74c150a848d13f9812a788e330514ed1675fe0f2 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 dd0ea69e9685071185405b35158d5e9cade67bb0..cb8fc957a990b03b03d67b9c6f26ed684f1b425e 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 53e993603e273db23f814351fcce309e04df8bc0..2d3e3b05c9807538dd8d4b2f51136602203985a5 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 2d27611946e2c49c65dd6e0db3186a7945177763..ff90a9b4617993994bdc51762f67d6fbe9471667 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 af39c7bb68418eb33eded367614d19f4fc86cc61..5f5dbe1092d00d821566c3b9601345498ea83ec7 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 576a07c1d272e2f93222338e211756eeef394179..9ac6b6b12242c2a7c86de2623f4a296e07e48b9b 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 3a33b3f65d36ff82683c03d1dd50a2955bf56ee8..a1537ad3cedc39c810332f13758bc314b9d43ff0 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 374d9524ff1eefa9b6a3fea28add34fe2dbf3860..385a26036784d815f2a01f49588de635920cb135 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 36bf1506627458c72ac3ea167e6c3bf527ab1e09..0000000000000000000000000000000000000000 --- 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 0000000000000000000000000000000000000000..7eb52e3d021ff231d9ca342a7a0d18690ea3adff --- /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 8adc8a6a7e114e90a079eeffdcd6fca8bb8959c4..0fb07de10c04416a8106d70b80e855166a79e8c8 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 9bec24c53f5bfecad316be435b900eb9da5fdefa..047651dc6426c979ed453a87fef90fa9761b22ba 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 47f25a9c2b1befc45d56ece4b86db545862ec2f1..94599a0081c628360a69425d7d5177c5c8eba1d8 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 0000000000000000000000000000000000000000..ea591427179f52999a4554d0ddb099bf27f4bb20 --- /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 feed863efd6629b44f6e7816d27ef3ff08335443..9ad2a2779e18305d6b945f502d412c94c9fa5d6f 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 1079089bc5a823f46198b4c704ce5f29c1de38fe..aa4a5f8abccea6178c62c217b5187cf2e7078737 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}" - - 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 + 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 } ''; @@ -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 3bc33a20a09f7d9af836ca224c985d1bf309a21c..6dafc6cddde78e18190df2001827a043a20e82ad 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 f58b68cb3353d8abc6688bd759a7340968437726..c8ea1401528ce58b987af1b735d363af8b651044 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 83fef83543600bbe3d544ae2d908b8f79b2bb219..34a34091a7dc6a84d5e4e525c90df4e2668a73fe 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 a1412bc3290432e75c662a1ada77ca753ae9ad6d..860268ab23a65afea31038b4d3db48f18e949ffa 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 7d43ba07ca57fdc9c137080a87babf23bffd1ef6..57ade28809625663746dc0d3de63425e28f5f681 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 5f8b5df52acf03979ee450cb93342cc2944b6ffb..513382936e477061804eb50900021ad9ca6e1d1a 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 b3690fad1a6a286c23c0f1df591ed973ac452755..9e4057b508970aa9e6a5f9466887f1a592242c5c 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 227707173a3df0fbf7c7a82064067808531dceb6..5fda24adb97823a61371b866667382aba149a234 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 d103ff1a57b5a18e710ad3522e11c9251e015d4c..a305235979a2f158ab4eb44ff3afa32f5d3c3557 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 2b3b09d725c74061a005b716584e914fc9f60af4..37a19fb9fc8c765273fc3b6a6537498189963cf4 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 af61c95da0af63140a14090a4be0f25a4e1aff59..93dfefdce9022b50fd902df3522b1e2b6501aff7 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 25490d671152aab00738b129d8845b8319c21c62..5ead75788e5c1df5acda604d0d1301b3ef6792a5 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 aa0db4afd978887b48cfb95b1af27a4e0091f1b4..ed4cfa7805e2d5d07143ebdc05b7333ce8fcded3 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 e9e935e90202e09113d2f5cbd817ed50ea798e48..9015200beeadba4f0b0d893585d79ad4177eb8dc 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 561db7cabcfbd05b0a8eff22907a8a9985af35c9..604fb8a7593260810dc40d631dd695b56552c22f 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 b91165ce3b8272fb3f2beae01d7b062ba9810576..c2e6e9f6a1362efc5441138cb431ebff4b40cc4a 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 2f304094d55bb95a542f9e27414b3c5e4fe50717..baac3a35a78e40c11e3267d52d9819ff85c14b71 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 0000000000000000000000000000000000000000..faa94f53d98f47f0adab7bf7846d53513f76e453 --- /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 76facac39fc6e8341a7685eee28f6c07a9d26e3e..aaea06bb9a63f354bfb1bd30acdf1d23f92e0821 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 575bbaadbcdb3825126338b279b13c9d2cb3a2de..5354d91deb9359bffe5d816501a6c727c5f8ec82 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 8f20100bc1b18a8711d46f1e3689ba241f58ce51..8c7331fe4d2b1c4c7d6c7333d2ec9ee1301a0795 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 caaf6c0aa59d997855fc6ae2db475f2aba265616..0d2d25d30752a727fc65eaf281891332a792dc5c 100644 --- a/nixos/modules/virtualisation/google-compute-image.nix +++ b/nixos/modules/virtualisation/google-compute-image.nix @@ -2,335 +2,60 @@ 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; - }; - - 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; - - # 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"; - }; - }; - - 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"; - Type = "oneshot"; - }; - }; + imports = [ ./google-compute-config.nix ]; - 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; + options = { + virtualisation.googleComputeImage.diskSize = mkOption { + type = with types; int; + default = 1536; + description = '' + Size of disk image. Unit is MB. + ''; }; - }; - 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"; + 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 + ``. + ''; }; }; - # 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"; + #### 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; }; - # 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 fc0bedb68bd08cb34f18233eebe025a569bfa7f0..132815a0ad6322b5a7b77a4d6d966f27385c8dc0 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 3e38662f5b0fd2e447dcc14443e08c86e0e2780c..f4d7af1664af82007be6e1de89cbd06c97892c88 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 36ca7f356d442f1c8de177242e17090aee4738a3..4e0f2cae299ec8fecbab4b26c06bea44713139d1 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 e0d2b3dc509de3e765bbd30089bacfef970946db..665224e35d8cd363f7bd81814803179653a0085b 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 4e9c87222d0a853fa2491b98e0a040993a265f0e..ed3431554be452d5566e711767cd3d7ead50f2fb 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 60048911658c410cee100d9e71b51e12a8a8e4a9..037c0d2f0d82f12854ae91c7cac8891493371ad0 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 d703353858c03ba5804e56a69f58a4efb340ce30..675cf929737117546123e0530e4e8663f4dc7a2b 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 66b253c230f1d9f2da03e76bf7fa982df6659afc..ea8b92e94f01e9c014bdd18a52bdb950a0560938 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 b0bf94924f3e62bd65fe8d764b6a28872c612985..df2c52ccd0b66f14c0ca41989e6d2c1b07e9455d 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 0000000000000000000000000000000000000000..7bc2f3076f1eec52863ec1fd60a260b0683eb607 --- /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 0000000000000000000000000000000000000000..6f68c2f834f1987380e1473ce57b2bdf165e5de3 --- /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 301d9d0f817f84fb760844c6682aeb50f7cf1b4d..c9bb1e77c6d030f7a99f02977cd663918058671f 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 9b39abdfa8edf25259b2b8f8b838203868ddf097..fdb87dbea4383e3308677063096b745e598da0aa 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 cf408dc7fec923cd535abed0453d3791afd39ecb..210ad8e91df7b09de916c9d83588d5138391ba88 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 - -import ./make-test.nix ({ pkgs, ... } : { - name = "buildbot"; - - nodes = { - bbmaster = { pkgs, ... }: { - services.buildbot-master = { - enable = true; - package = 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)" - ]; +{ system ? builtins.currentSystem, + config ? {}, + pkgs ? import ../.. { inherit system config; } +}: + +with import ../lib/testing.nix { inherit system pkgs; }; + +let + # Test ensures buildbot master comes up correctly and workers can connect + mkBuildbotTest = python: makeTest { + name = "buildbot"; + + 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 ]; }; - environment.systemPackages = with pkgs; [ git buildbot-worker ]; - }; - gitrepo = { pkgs, ... }: { - services.openssh.enable = true; - networking.firewall.allowedTCPPorts = [ 22 9418 ]; - environment.systemPackages = with pkgs; [ git ]; + 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 - # 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 ]; - -}) + 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 ]; + + }; +in { + python2 = mkBuildbotTest pkgs.python2; + python3 = mkBuildbotTest pkgs.python3; +} diff --git a/nixos/tests/ceph.nix b/nixos/tests/ceph.nix index dd45f0157b01a93e766ec41e77ca37fc0ecf7d75..7408029c460e32ac666ef72b69eb50e114c1282b 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 8354c46b85f7ea756e576e71f67e828623b6b4f2..fe67833808ce4acbbbc160692a45340cb3bea4e3 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 c341e83961a8e9fd01519d67ea2a9b78c3650096..af5db2a3dbe1f1d57494fff99355ad3e458b7476 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 ab5f8e0bcf3e542583167ab9a159956cf8911c4c..e03bb9882540c04d10752ac57ea8cd8232fa55cd 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 0000000000000000000000000000000000000000..7d835069ec4d8bd817a90bbf9f91df7382d2d18a --- /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 303e74086460f0a3dc2ea11efb56c29d153f47b8..516d29c9036be53cc1675b5f09daa630d15e4a27 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 0000000000000000000000000000000000000000..56c624d8cf2f4f490b9122c99fbf94baf7935006 --- /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 0000000000000000000000000000000000000000..28e6fa7da1f360a055a3e75e7c5621fa4f45a066 --- /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 bd8bd5dee9c88050067f7816235b4afbf817f397..777cf9a7e7f988465ebae0795bb59c21ba38af03 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 8f874b3585dc4113e1c70a532fa1b617e3f3dc45..b3d3bce87579c23ac3a904f5cea5d304aec07501 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 4affe3d9d56dc34594757fd30a32ddf093ec51a0..5f83a33b1079ca37f6983a74f8fea4bd58296aa7 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 7db389a18e72695444e6524c52db42ac900b568c..5866e51b731df0da82a6879a582b5897a1571aa0 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 be83f82445edc8338731f14ef4363f8be8d4fc54..d2dda926fc0ebba4946a4c43c3137c66ce86379e 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 aeb0a6e68e216063c5d8743f0854e52123cdbd04..0fb3b591e9f913435dc2ba86f65d5738f3242557 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 0000000000000000000000000000000000000000..eeedec9a392ed261f3a61dec9f5c219e05930d64 --- /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 360b32faae7284e2bb2de0efbcad94c494cccb0d..58f106314ab3ff70050cda3524ddfeb17dae1b4b 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 8271747ccc631aa29e65c75897f2e5c4417d25de..ed6bf7da988caca25511b630e1631b0f86d7f0bc 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 15be72b80bbad5d99518eaffd4150a48fdb409a9..d787ac97300570b5444ceffcaa0c1b252945109e 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 0000000000000000000000000000000000000000..28e6479e9cbed6a225f8b47c9f2fc60f6e2ae887 --- /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 3af2cbcd098850b5799c85b2f76432fe45728b67..16e0dd723ecf4a53b565f1f23c5d356c965c3d83 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 959030d598802d42c9e5e91f0b50fef0fcbda347..c2808d87d99db709f53f69700623cf86aca7bac5 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 3f0368592b8d18ca188e10c73f28431f3efdc6e4..95694ea4828d8ae8b8d64745f609128a5c37ce82 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 0000000000000000000000000000000000000000..3b84bba3f985452f8d94da59582ad9499ac1bd7d --- /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 0000000000000000000000000000000000000000..fdb7141da3178048611a7465c5fc8de1df952b6c --- /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 0000000000000000000000000000000000000000..bfc527cb97d3775e596de5b6a4ff99b4d0f17db6 --- /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 0000000000000000000000000000000000000000..ae87e1f69a7d3316c7fa60aef63c43b050f2e0e3 --- /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 2700b8e5935a97da99386c3e45ad2700ed240474..07bd10963bab621be39e24dff1ec098c9c9a044d 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 2d74b59bca462297d6397be995b76c90f155aa51..73c1e71eb516e65471635e2b54246fe0cc0ce82e 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 3cca5665acc56bfc9b95b6af373320143e321ed3..39122c9b473a1a865d3c31ffb48a23e9173a7d7a 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 0000000000000000000000000000000000000000..e39bbb5f096be190f1e9ebee50bdb91e69b64ce4 --- /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 3f9fa0e6016c3199baae96f8860b6511500a0e2f..c8edaaba15857b3321c201a58965cbdb8327f4c3 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 0000000000000000000000000000000000000000..399a0c27232734bd1d83a4810c7ed2220e3a7368 --- /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 c9fd74620efb1329deea892e6aeffc4b6d708239..72f91f6428a5a43fdc6bfc493e2027bda6ca5e73 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 0000000000000000000000000000000000000000..f2f1a438918c0e287989bc3e2072e6a5dec2907b --- /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 0000000000000000000000000000000000000000..a0551b131e9144d37a90d72359908f0b01f2c66e --- /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 0000000000000000000000000000000000000000..6da3a384aa9957185bd1cf2fa1617a72b342acb2 --- /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 be880388314c17e945cea4c7ed3c641b46ab95fd..2b4c1ab7b052920690c866d31cb07f03c67b7982 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 e4bc5b326d345101aa38613cb59634c7aa99ec73..9d77be1317518085e1b187b44f0541af62edf2e6 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 30e1acd255a0873997f8d00512b6f54c5a0d7615..f25ea5b9ed841cd368a7209e4dd6a8b8e1a1b871 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 125c176f1132ca128b13ef5ac35e3ccde7387a13..87c65b883659c10035fcb71956fd10f86446286a 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 0000000000000000000000000000000000000000..58bf82503f8c38d11a82219ce4c0c23156a2b58b --- /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 ee4ba310ad50e9ba78684fe0e45117de48f70308..cee5da93454a18d5135b1f9c3ce2219c16241598 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 0000000000000000000000000000000000000000..3d03a5a53e38e8b63e5869f9a8c5906981f3419e --- /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 9c280fe8b5b6671049010713df628186240c2ab9..04b4f0f045f0d31e4461eb19377bc8d5e10d9226 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 87a8c4c0e1961f020cefaa560bc857af419cc403..e689eadf1dd80d54cd2b2340752c4601c897f5a9 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 66da6794b961d8135acab1275bcbac36c47ae5bc..e4c7a70606cf869338229abbc3d24c105e90c6f2 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 bf49d2247bd869fd0e0b438868dbb04029b6ef2c..783c9f5c019ffaa8d36e281287b2e8d09b3d4664 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 4c0cbca2101061b712c58d3def5921a0a4c27bbd..883ad760494127c73b6d45f7ec716fbeb328d1aa 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 c968569f2008cc0ebb54e04ea7b24478c22cfca0..0000000000000000000000000000000000000000 --- 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 eb705536827e7740afb71afb0f8f1e8916df35af..788c8719c8d2ffbfe4256164ba608dbf33dfc8e2 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 f8b63c5b6a27bf3203e6e981040f20d24e577e10..49be0672a8e53e3b1fd2e079f07cb8375434bd3a 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 f1f09277f342a5a693fa2f1fa96e4292d2617004..975ba7f488e281c806a2a1b43f99bf731da52a56 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 0d73436c1c3f5544816b4e3a8a502c789f2d4acb..8306abb8c42f9d76a62f27ef51e952c5cb423fb0 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 0000000000000000000000000000000000000000..140687a8182f4b19f33be22b36a900acd403c35a --- /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 87a6510f40fd8e6c66709fa433328234ff4fa205..f1b20a33d71e3028c4ded3aeb24baf667554df2b 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 0ff14a21584a443c0534f59dd9fa491c38f0a224..6aee7ea57f038b9801132ba939765dd510cdd634 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 0000000000000000000000000000000000000000..6b9a909e44b5ba760f88b1c6a0045417ea54cbdd --- /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 0000000000000000000000000000000000000000..178134fd9b3099266ee98da188d883bbb68a6eb9 --- /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 a12622b6aa0b84bc7572afb5625a665997a11c21..396cd5b67d81b95a6d2b2e50e92c7791eaf022cb 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 0000000000000000000000000000000000000000..492d47da9f56e7c9ad9ed9f0c7d25c0693ddc6f6 --- /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 0000000000000000000000000000000000000000..f17e61814c5e9798f516f0dcb95a2c9e8effb32e --- /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 bd90dc3080bd9b8e16c2632395d223fc3ab3f1e9..339a4b9a7404b2574023dc4a2f7921dcbf521e88 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 7b9fdc0b3441555515f3e8849d617fd13d08cac2..678bcbeab20aed71de3ff431feb54bc1a596f003 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 60f44c3c8459c3b8f4f309f36d1fd6874a3984db..b4458d8d095438a62609f4f8a7632b36146571ca 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 0000000000000000000000000000000000000000..9ba3863411ea35a8297a3e7f98532eed0c638bfe --- /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 0000000000000000000000000000000000000000..3d5c3b19b6ea8a58a8ca7dcdf2a3b031b6c3429a --- /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 666961249ced1734db645be166e6d7d57f141fb8..0000000000000000000000000000000000000000 --- 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 0000000000000000000000000000000000000000..f1ceb49933374420971e9f1e5c62c8d4ce81b15f --- /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 65aa553b314843fc8df9acbda774e06f7cb0f6af..4d470126abee5cb29371fa961a293195c46910e7 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 0000000000000000000000000000000000000000..6776f8d8c37f093c1a0203c45d400ba4cb1d0872 --- /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 ce84576edca170f17a0ac294bac3bead56f674e0..385e2939fe3bd008344a0cc7634eb6ce1ddae346 100644 --- a/nixos/tests/virtualbox.nix +++ b/nixos/tests/virtualbox.nix @@ -1,6 +1,11 @@ -{ system ? builtins.currentSystem, debug ? false, enableUnfree ? false }: - -with import ../lib/testing.nix { inherit system; }; +{ system ? builtins.currentSystem, + config ? {}, + pkgs ? import ../.. { inherit system config; }, + debug ? false, + enableUnfree ? false +}: + +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 61fa7c1a67d34c6c8d9fe1d6474e13cc6b956b28..6d6db6b0ea97088d7005f863c8c62b25e0110a9d 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 045667bdcdec0fc48eb8e677d7d6f97ad98da0ed..b46bb1a8f6e9d90b4e331cc266a94c9a3f7ca138 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 1434038e90c197083de69d8592fe18f1f21a1ca2..d7a08268e984b6fc589b81fb48c27fddc14864de 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 0489c8b649f54dd0f63c7670596026c1e8d29bf8..42717d3a2667c76c2999f14972f2f620e2dcfa3b 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 6d2cbcdf9f9b1dbf5adf9ce1b2e390b6f1274f94..3b65b06d8db8017a5ee5cdb9cc6095c78d602611 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 c266fa2fef2582c1c759057530fa118e8825603b..b50508342bf99376fff026653aa12699259aba47 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 5ef1c06688de162ae6abb3df30f1ccd7c427272d..38b49fcb1c330163d9849df8ade21a26dad4bd7e 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"; - - src = fetchFromGitHub { - fetchSubmodules = true; - owner = "ElementsProject"; - repo = "lightning"; - rev = "v${version}"; - sha256 = "0qx30i1c97ic4ii8bm0sk9dh76nfg4ihl9381gxjj14i4jr1q8y4"; + version = "0.6.3"; + + 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 e0a0dbef632c1ec07fd5e172a683727c1a6711c2..c7a81b6b11fdaa23b84d35bf7576733613323a9e 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 02e0412449a02201b1dcd75dd125b17980f79beb..ad1ccbf496cfd7bd25d5051d53d4bcc389334795 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 b23f3ad42434ae4f9951a63a82b9d4ae51cc6f80..33ac2be1832287ca2f4a5806503ae88fdf95dc9c 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 194c004f9c7f9e29004a6aa4a519342767fc1814..2990b44c7f4c19f0495d92a2400eaeb4339e2b94 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 49b8db51bcc8995ec5ce87e36e08b3427d258083..331ef6b92a4fb2203d966ca76bf9d65a77188a8b 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 a4a884707a98852fb352b18387d24ed4f067678d..3a962458632e0ac83c9067340d01d84a349fbb01 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 93f9faf833a1d16201a003d2a44b379652ad80ed..4b8dc5525dc46c3f22d6692499553e1c30bb147f 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 3426d8d07a08942a0f0c7ebde5c7afaeac76b264..62e7259287418593db8de8172d7e3794db9dd30c 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 ec2e571e3f0b0549681b081f1feb98d15e020943..c59b2ccb8ac3ee6cb8ae60381e10d0d9e1883003 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 fc772246cfc19c17b2987d1d4d2bc38655be1170..46985fd065e1ac6bafdb05753bd18527f7ad02aa 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 234364e7336489fa210a604c8cbd59e8d74dab61..81923849094f3d2d3d9fefa78564c693aed895f4 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 55665034ccf9f8d83e75f6a4aff177b76b0bcb5b..9eb189f014e2a41d467bfffe6b49f249aa003e9b 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 733f6880ad9d66bcc6cfa1a82ce22795b14e1425..0000000000000000000000000000000000000000 --- 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 9af64559d97177114229b364291392923cd6ef91..0000000000000000000000000000000000000000 --- 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 a06f373683a917248179decfc5baefcefbdd35a1..d3b20ef2ea36ded07f34f2e43a8d11570288cf5a 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 0000000000000000000000000000000000000000..6d4e0417cde79f084198528b56c17fe7adb7a703 --- /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 0000000000000000000000000000000000000000..4b62ba759f3617a88eeb344b3d76a83396c5d32e --- /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 d09a10a15b2c98d87f28cc151cbbd509972cddb8..70709ae4ac4c046c1a9c3091beab4882f96e32c6 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 58e8ecc4fcabc870d8e930f678265e87f04483bc..2407298113521cae400988c9d7498c64ce505858 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 68a9bb63e2e026074845fecfee24af5d3f65cf1b..7b80b32331bc20e08d4ead058ca34efa28b3a363 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 7858631f7973f67577314599f784729c90031813..7383623a5ff162e5fbf0c8d6cf6ddde251e6621d 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 850848abcde67e874aa00aa8a43758405f9a72fe..1bb1e404b5c4680ad055469cf78ac5ab9897a97b 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 a99fb80df7236070649806a55ae5eb05d3dfedbb..02d818410df4132d6aac07cf36e8a761a7b246f1 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 45e0a1738f8b81873f77c14b4c2ab84289f35989..0000000000000000000000000000000000000000 --- 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 9a9095d2fc120f6273a290e3c918f0215c07cf33..91a0a1f140c2904dec9dbfd9a4ed93aa25578feb 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 1989fd1400d43f60f89fcc3f66e4dc0f72856fb6..fc32eb799cf90d51495d200d06dfb3cc4af60d76 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 0000000000000000000000000000000000000000..75b6d8e275801212992c4dc840aeb02fbb665e28 --- /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 986e476779cb2a2d409c16ddfee8eaf0cbcda49d..e3f1b6acf87462266fb133d68538cd3271173503 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 5f3229dc157c767bb758dfb0c9c1755b77c93fca..fbe2c97042f060245bbf4ab653b7b45cbbf9682f 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 42e99fa51863221f7360afb6fe6aaf7010347c4a..e1ed12b9bd2ea9900039183208dee1b15c9c9b84 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 2401a610156683655e9ca904f631ad52b34ac87a..44296d3c8b998fce9922e62afc38514952253c6a 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 87dbb31099588bc0643aa6f1c48e6e693a8b02f8..ef7eeab4b60c6ddd13a6f9d2ef629abbec56bf0d 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 e379072b7e760a704084b73bd32c8b530145daff..64e99768dedbcefc702a8e1aa595f62a4bc5ef2d 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 2d90599346fb46db6b0f24194af063bd8cd0c07e..1f53809e9059574c47c1b3cc9ece4e65309ba594 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 611828753e46646fe2703c398dedf83039a578cc..a28125d24d4f05db18cfc57dd036948c6615bc7a 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 0000000000000000000000000000000000000000..e528e9699a733f5a8a6dc2322fc3134aea684b2b --- /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 0000000000000000000000000000000000000000..b7b8a4410b7fd18570c94f3af6e16ebb5e1b1623 --- /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 0383af06795e80ae02c4a303b7f24ed80ab46376..f7bf919c22129cdee5fc783dcd32a0ee83ebbad6 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 0000000000000000000000000000000000000000..e9415335388e8e93b0ae454b9e730f968aa0f726 --- /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 0000000000000000000000000000000000000000..f9522adb4b32dae8e2d54dbf233876e0d16d376c --- /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 c8ac0a938efa84f27a5d77883ec441bb00068754..b11f525e9d2b0496463336d14183de4224d5799f 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 bf79b68bc7dbc1dbb64cc3e63565af6b59aee6af..1c41451b08f3757c64d0aa407e90244633641b8a 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 b3d9fd580288a988dcc9894b6e5d7664cdbbb650..1710931aa229a69563f1301ec3f560aea8536bb7 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 555a44e89ebc42df5e5c93fe41a24fac88c789c7..fd5cc4a416e2c784a64f072712d2ba2cd123a660 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 f4160ff6f8081e4f65003b7bd9a2c396ea4ce8c7..5d0af8cf17ab4639f4d6935c2b0a5b1432847404 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 bf5bb7815856ebffbc6c2b2dc09eaa39406a36ef..6e47d921d345fb0c0ea242a8759444f328e8039f 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 cfb37e5761a770cb58383550184f5da1f8633ee5..383d2deb10bb4a77e18f8ebe123734510c79715a 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 b8ff73f2cb32d3449b48a05aa242c200c9e555fd..754c480706033825699f81a91ea4829e1a3b205f 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 8f3facec09b1edbadf40efed0b7e9ed34e0ba96f..cec20743abdd73b35a07cf6a56979aa24515ab07 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 27ca539850e2526e59c593ed84c6c0c612652d24..3eb5806aa4c135dcc6d31a470927df4512d25550 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 d7a46143939dd4f9b5f31efa1b7a3b580f71ccdd..680fab4ca64316f230f9d171956c07739eaa335d 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 0000000000000000000000000000000000000000..c8db1ac6d10abd18eaa10de8d9ec120ce388a762 --- /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 ccd20a6b7b2b306aca1f7570a52ba01568b53987..2da60a8bfd8ddd34227702a2a776f25fc1e48988 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 0e636c532b467710ecb719d879eb19628c1fbeff..3aea07235d8acec604c11ec8980afdd5c93e9bc0 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 6546fd7866ea96ee82f21d0e88dbc71ffb1be193..c40f84348de1d5fb98b455d1cbb5a763df075d7c 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 041f847585d21d01d4ecf1894eeb723399e887ff..bc4c18aab085d4f7204a226b622f36e12f289e19 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 0000000000000000000000000000000000000000..62f11cbfb740bec890c26e66c3eff71e06b0da93 --- /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 0000000000000000000000000000000000000000..19aac1bd1e9578e5236cd203e0d52eb67d5c9bb4 --- /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 d9109dd1c0e7155b66bfe4bace0ab791f718fa32..1e249b51fb76bb24550744b5e7b60dd9973f7e5c 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 d68e67d19dd4e2951ad9c21140ace698fc9f0043..26a717dbd6e4c22bd58b74071618951b60566958 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 aa78527d787e00a1eb1f0d2d67726260790beb8c..83644dd5ea511191891dc0a2722b14457dfac599 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 f78110e8bbbf4a35ba1ec388fe234156213baa81..e2f0c7ea7af456e99eb7b11c8cea09a6fc4ba112 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 77946fc41ccc3d4b77883e3924dd00d3bd42dbdc..eea9de5a159734799ef7e164a66a4a9c570394fc 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 22342581434494657cc1866def70acf04b91e5ae..522ffa2a533864a51454138638a330d907280419 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 3a0da876acfce8e06b68256a1ba39de62cd5ba11..5e54609f8bf0d013f0904a52b35a938841bb9aac 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 da61eee3b643c208303c8e0b9504d08fd2be3e43..7fb5a01e2c80b6ef8c2c6fbccbff12929bdab1c5 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 389db3d548d6465e0f1d00bb79d0a6051d3c4257..d2ec92e0654adf618a89bc66444935f041c63a7d 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 0ff864c0048bced200b1b94fdf33a6dc74726cf5..59e94e0bdad5d74b7df29d8e36766c847cd9c7d7 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 2ba35a9a0444c72903a48b41030c0f911766342c..51c5cdad69d13b35636c9514a9c4b20c1dd32472 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 0000000000000000000000000000000000000000..79edfdef5040f4e6f9af6c7f5f58934bb3be9c96 --- /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 0000000000000000000000000000000000000000..4dae65438cb5f94f124e9bbf758d8f716b05ef7e --- /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 0000000000000000000000000000000000000000..fdba836a6ae2ecfaa25a07bc773eda3c08fd81df --- /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 e27aab6e898b5fa2db1739a0c4f8a94bc40c15c0..26290e5bf8885a431d53f17ca44794ff9355adb2 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 4dfc7b13046ef1877cf4c59e7fcbd94c2f70e24b..58c1690a9bb0d3f58452001c72688b4148265dba 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 131f0e3a71d62a3682af78bee6338778e523894a..0b2607989aa2f86716c93f5ae573b4d6263b6f60 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 26ea2c7b0b2cf0488c308084d3b4164fe1532522..3c5660724d39726ca7d00b5d4ed81ce4ea445d2c 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 b9b840682d74337a51d16b6cb3d0edd7129cae68..2d301a8b6a967be21d0906f3c0b88bba5d552d8d 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 28e29850606a16e947d05e49e03fe1f3370f587c..4c84fb3c3f77fecbadf4db71de5d5d8e7a37103c 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 753a273a08cc3a100ce29550178f36787eb45c0d..9015a8c749a89e2ddf800234467495b8ec0e8a47 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 5566c4b07b21d64b2abb2a9d6bff1469b6a47f90..8c173140efd8fd42636be5505934f9b9d1c52f28 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 be44112d82a81490319f7eda5b38c88503a2fe8f..dc129f945fdd7e95da46a7aaa520a8a031271d09 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 3e10904f3e69c3297fb750255bbff5b87e6195e7..2ffc736572bf796765619ff1281a72fa9f781cf6 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 28381fcfee6254efb1a2729f44a53958c29c6adf..340978c8183099d71a9078cf4e5d1396c00e1be8 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 0000000000000000000000000000000000000000..53a0c90ce46edc7c3b62b207ee692af04fdc2133 --- /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 08d300598232de9ae7ea58c449c3e8d116813b9e..7089f4dba9207ffee6d1db659848351637cc1a64 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 c28c711d618e9377c033eed76ea2c2d8fa3a667c..44dd0d2d4ec397313da448aaf2ddb95f065f98a3 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 a727160ff2992d92ba93f5f2874b012614079204..85c902d383963b4b0d9f02c45749b8330d692075 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 e65604e974afd5b9b9c626b7ccb2e497da954e53..bb186687c66ecfee25859e3e2167818b2b68a0b6 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 5d13aa7daf42a0b2092510feecb5bfad162129a3..af8597022922efc3b681e550803125851eca3808 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 658ba1700f2628ba923dfca863a1454f9a37e505..85d0e1fbaf71c0398c703ab7a8e8950f7e058b8c 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 ece0a70a7e973cf153a9405ccc36b0a20ba8e066..084487fd407a83dcff9df2127d0d017575b88819 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 8425b48166e67fcb10811b2d59d423aef8ea4a15..7f3940e0ae9cf5ed41a9f7fb89caa692b6a5ff6a 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 d013a26277e81e542347650ffac0ac2e4b8cf0fe..53afcdd2306aec82795cf5314eeb9acffaae3c14 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 d7e6173da9ad169fb47a1496f37651ac6f22e3eb..e7c2c2e363477cdaa64a78456e660af296468b7d 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 1d3fffb549d79757cd1c3149313377ab74ef68eb..c7bb1a4193f958fb4544f2252740f89bc2de6c68 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 e3d07fcc24572f23297b90cb970de832623fb38c..cb267d8bbb66be15a8207d48f57341dca7d0696f 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 0000000000000000000000000000000000000000..e500d1fb13335e4d875892f747c19206cc1efef5 --- /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 f7463207045d3e86c83d411e4fe059f7c19f724a..f414c64d671fc69374fa861bb42a16f3ec9c4088 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 83608014f14251a9aa6fc238bb328957d2ce0cf4..eafde7957a218faa46f644a07476756ff600f121 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 f58e75c9e2635db998f692f6bd44062a7a8d1a7b..c10358eed1e47d8dd0eda4658856f8b7d3fad9dc 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 8ad251652d0e5edf3a168ec2f901d28a2dca28d6..69bf41e1e4fb19c6ca8fb49b3b747d460d451893 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 baf49ff78e598c190f6bb2736e8aab239477fcd4..a1d85ac91e85f20e65488613bfe0ddfb3375a857 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 82bc42143c67e9d78d12272850ed6e6699617596..900c2bf7a41f7d3bf9ec3ed6073fdf7d06c6f2e2 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 28aaf8a5354f4d57757da8c61b557eba1ae6d477..cabebb6f18e9ece44b5c51fa904ed51f052f8985 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 cd06fa80f5aa471d135803a0422b344a9e870182..081c4ab41acb47d6154e78eb726f40da29708ec5 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 65cb7dab34a1f050b980e6d25df5ee7820fbbf4d..6516532df33f4c1208d58b86a2ed8dae1cdd237f 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 968c5edae63a72f59e4c651e80beedc17e6c0adb..e540016ac81c133b82e9ac8360f91a3b4a3cd7e7 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 0b2bd9507e555449873df46b411c0b720405d222..55e3b55472b84cbf740f0e8201395ed82f60b99a 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 f6ff38b0042b83fefe12105e54a380d4cc11e529..73f24e03e307ffb4693443b43c4f30c748b3bbce 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 11ee00adc887cddfd3890a7456b2b8a25008b587..d47ede27ece2f6ed5af7859fa3f8f69e9acef509 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 0000000000000000000000000000000000000000..a98d1431d65e4473f229300ba581bbaf08d7dfa4 --- /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 3afd73493b05dbbff2fb278f2ebab17b8ee1e40b..5730dec6b9944a2fbeac0a9f6ae341fce4f3ba16 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 0709917a0442357e5a19d98a0f6c4e49ab7b4bda..8534d871c6628f2f9ba3d94189baa530abc101bc 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 0affe5dc89d4e7fef9859d056da75dc56df6dabe..012270905cc841de6c6d1787a14550e195c662ef 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 d1c48ce44ed8338ae812d67414ea4dbf18c4f5a7..ee72b6cdb1a4945756be66a1d2b681079ba35320 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 5679a4d53422cb323b8ea8536ff60fd4c17fec3b..686b27223a6f30827a225e68b889ff8362f082ee 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 0000000000000000000000000000000000000000..9557770418e87b706e71706252ad41bf5e036c0d --- /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 81cda4edaedb8ab40e4bbcd756ba762f25564e99..06f8e8616f0dd198d338d2debf2e84d7aa000d27 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 114245f6d46cd9fc0dcce34b66090ef96c453643..0e19ca1920b4eda06cae3ff0422b89976660bacd 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 0000000000000000000000000000000000000000..f22340b69412f8de90d20e3288c151e2e2b79461 --- /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 8ed71ce6c390163b895711ce4ad81fea8541450a..e44df51404a4205236d6507d2341e780ff5da1ca 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 535d53d99eeb078f0ad8f07b331a16e2e30d67f6..257963de256f1a63f215c547012bef434ad8b0fb 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 8837566b13d09f9d551f2d01a2e95ee4ed42e831..643f5075298519c43298b1e585e10ff6a8c86cb8 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 c6d5ebc1627f514b08fe525e68f261e6026d3146..9a76f2d15c737762324e1a108a0998bfb19cf1e2 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 0000000000000000000000000000000000000000..9729b136d9058c95fbee290c126c46cc35cc6ce3 --- /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 74e041868dbc6f243053b74f727ad521841acf9d..27533084804ae4f17effedf5db3ec5312853479c 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 97f59ee5f94fb7095a794b61a13859a6a14a916e..75f67adf46456a36351d891987b199489dd4a448 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 1097e7b8fd7e9a1e9cbc1b11e819295838d73830..07ab9b55e5bd83acb490857591a3970044a52c6f 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 9fe9f7a57c51dd16c9a28d0e5ac170817a502f9f..14b5384330da8c41f352a08a343e322e46b3d06f 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 0000000000000000000000000000000000000000..562fdc1be8b6442711ebfa6ee0e790eaec7003cc --- /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 7c57b884c8eb668507358f9d3d17f7f74af22d4e..e6041dc9b1c5e409123b7bb269b4fbb833fec2b9 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 d35c7b05a893b977362d0099ee27ae6be7eb4993..9d57095a26aaf297baeb189857b97a2738581cee 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 529b0dbd42b6de74580d39e3feb2d71160cfc862..2016d21c592621eb3c6afc4bf888dc7a1c23b79f 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 c8fb4af3c4bf6e241f3092a00f961eccf7ca335e..7876ebc244b19baffd16850bc761c6863f57f46e 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 0000000000000000000000000000000000000000..3a480f70d4b7b5d0c995105abaaa432ae89f1f90 --- /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 ef80aa00563fa009c074b372053096f6876c83c4..91446f73507e424abc8635bb9b8e6a82798c1914 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 da7189f9196ffbc61a388229f45faf749c546f08..36928a29897b4fe307748621af34436ba03c020a 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 0000000000000000000000000000000000000000..e8edcc3f634c32b8859978f549c39da02452b491 --- /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 c9fd4f9c4ab9a94654c8f0518276db23fc1f26af..3de4067f55d510986744602313d0a2274a6ee0f2 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 6430e60ed417f02b65ba66b83dabe7fa41b92a3b..0000000000000000000000000000000000000000 --- 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 23e0584cb7f072e0cdad8efb687266981156708b..a1465766f8bf59e4b3c6871eab072eda2b0290a8 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 051078e1f5a101553bf999e5575e75ddfa1b13f9..4b53774662f915f756b6445e0d3f99e1bd47d7fc 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 6cfba39ed4b3da49b450174847cbb6eef9baf553..13dc9e1285b1dbbd37d212057524660f518aa3f4 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 4d77c47695a34a229ddaeca19c7803a5953f6eca..55bbc778e3aed1a28b876b77d4971c75b314ca02 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 fa83975b8d9763a2c1247da9865c5435f2f6fd78..30f381644ac15295c489b600a10fbb28fb1f5881 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 536b319cab04fcc47201f321953149ce14acdf2d..90a7eeffb0479d575acc62f99ea73c3dc54a207f 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 28775e48e1a7f1ac50c96395acd0460890a39306..0b6e28434f56458a5812a3c11641d532c1febdf0 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 44116fbac0c1d96028eee080816345827f8f874c..d20ab53bf7e10fb44f35529ca44475afd786f142 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 0000000000000000000000000000000000000000..2d1cbb75981e3ef70f3d540ff66dbdcda8f824a1 --- /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 a3d76a307c741be6140418f319ddcd26d7998af3..407b9e58f0bf0389fc6b4b39dc6e881ca040826c 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 f793366a70ac5ace45e25687a0a048fa2960bfc0..2fd8add173d69a8e31caac947db7988456fde0a1 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 f37d2289342ae4fc4690c665c47c67b480e95257..8d39c185acad3082bd4db06154fd9c1d0f5d6710 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 c873a7c0ca8b03b627939000e73cc6d4899761e6..f966989b5a30279012a0e7c149d7ffe264ad19ec 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 b4ee54f3bd31d212200bca5e6ab90e78b4aa8bc6..fdb28f4471929ee21d65826449269a918a84c721 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 05ddfbf6c16d9a8db90f3102647d9648ce8a3dac..f6fee846f920b13b8cec38ab49d0f87a5f37c648 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 829dff1749d4e20524dcb71ea16414862a63f22b..bfc6c26ea09ac885d52ad83cc5a2eb57a730e5c5 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,31 +82627,57 @@ 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 = []; + 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/#/purp-theme"; + license = lib.licenses.free; + }; + }) {}; purple-haze-theme = callPackage ({ emacs , fetchFromGitHub , fetchurl @@ -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 777d8e62541dba51edc8773e25c39963698c8f31..7c15316849684315611d65fadb31dab39249743c 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 f614db8d190d8c21de4a24434b92fb190cf10382..b359c5dcc1f42ce35cff8b9370c0f7894220e246 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 98927cbd9873501d5d6458a41fdd20e6b92a3e44..49486df9a3f447bddc829e86b25c6dcad6c4b5ff 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 1cca56ce8f8f95e4ee812611021da05fd16bf21c..6881ccd784ea6e1448ee47b52c3cec7476f98433 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 7c0bc517755a10a10a83cf58853a5c0cb4796115..0000000000000000000000000000000000000000 --- 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 ee21bbbd9bd9a94b6d1fc12438f1d21ebbb90ee3..d9f0b211f15915a4665ddf7910f48ae5ddee433e 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 545520cca7c0e5f9e3e726f56f52b3d2a840137f..0000000000000000000000000000000000000000 --- 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 c1bfdf8157daecbbaf36aab9f1cf7a0a4ceb9c90..948d8cb98672732868581cd51a5c3f25a482d188 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 71a41da57474ffb467192e20d2dd6c39b0b2731a..4eb0fecec40772c615cda33bc304a46071af1753 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 cc1ab1d0e3039af1dc72207dd9a64c479dca2fef..34addc33a59c154c47f6698af0788f07afb091f3 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 0000000000000000000000000000000000000000..b1e26910f1fac507ef411290137c5819fdc15f4d --- /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 000797c9b70573809c77589fb6ac6b3d5885b543..f656f874151a07460b2b92258856c2d398cd57b2 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 24954a602cccbdd77bd9c3773e14f3fe57db32d8..9f33bd084890a8c48390dfb5efb6548f3f5eb89b 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 36259593463d697d6ed33f1638c8f044c490cf3c..65645dcc9693db5c7debe0a02c827d4157cd3dc5 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 9e890e172e554687d52159313926ef754576e7b6..99b014adb023460052b3fdb195f7f2b4056aa0bf 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 055ac050b541b34210dbb2c853fc40864193988e..71d0f9450f2d39955c52e64eda266f4ea04f4b4c 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 23ecfb0c19d3f2bc3f83f60f585c9202a3f26a28..b8aa411523b34126a1f8cfec1cdce892a4a120cd 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 e50625fa0e89998176a79673194b55d580f8603b..bcfbe53b56586e5bea508807b77b2f526cc2d10a 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 259c319c70ff4f6cbacaed2c479c26a33dfc3954..494ad686ee3bbc9a94c27b0829404842962b4d57 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 dd3fb542da7c404ca4de4396b4541a2ed96eb45b..c3b46cf61df811e2946f554d230292331cf6b093 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 815af2103d58be17bc239468d5f65559395df198..4f4be05f79e4360996ed4efa4f68edc6d235840a 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 0000000000000000000000000000000000000000..e2745cbce2d0ba44628cf74757b94ffa7135ab8b --- /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 0000000000000000000000000000000000000000..a027242c5eefc7d0b35883a9120da18cab255547 --- /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 764877a11cb34fa03b2600ea1c5087b60e949476..3f7eba73ca49b3e2808999ea9b781d499058d421 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 cccfddfe793720482e71472c6edb5f86dc151c3b..c2917aa394f9264505b3f1063cf8e7778f34c0dd 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 36c400a74faab3b620055bff25f0017894714e34..0e313d33736aee69527a704e8feff06be261d3fe 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 a24fb90ed9c7e75aa7f12400f9d4694110e622f4..9bc6425bc411c77498f8fd85e6445622fb5d4a14 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 6690e4c9c1b97579147679d6f5e3478915279d10..d7932dc4dcfc0aa6cde397aa6ca90ecf7fbe847b 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 b0c834934f9c4fb7e36913cfb1e03b5624a18917..1444d53da077fc2fe70afc1ca8de017711b18b08 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 cfdcd7fe939faf1d0b7a83a7be620b4a3af70791..3004bf544c42c8897aabb02b3a895b8994351779 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"; - - src = fetchFromGitHub { - owner = "equalsraf"; - repo = "neovim-qt"; - rev = "v${version}"; - sha256 = "0hq3w9d6qbzf0j7zm3ls0wpvnab64kypb4i0bhmsnk605mvx63r4"; - }; +let + unwrapped = stdenv.mkDerivation rec { + pname = "neovim-qt-unwrapped"; + version = "0.2.11"; + + 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' + ''; - cmakeFlags = [ - "-DUSE_SYSTEM_MSGPACK=1" - ]; - - buildInputs = with pythonPackages; [ - neovim qtbase msgpack - ] ++ (with pythonPackages; [ - jinja2 msgpack python - ]); - - nativeBuildInputs = [ cmake doxygen makeWrapper ]; - - enableParallelBuilding = true; - - 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' - ''; - - 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; + 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 + + 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" + + # link .desktop file + mkdir -p "$out/share" + ln -s '${unwrapped}/share/applications' "$out/share/applications" + ''; + + preferLocalBuild = true; + + nativeBuildInputs = [ + makeWrapper + ]; + + passthru = { + inherit unwrapped; + }; + + 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 0000000000000000000000000000000000000000..f634d3ec056a20fab83fff374d05113d8c4e638e --- /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 568043f966876601032a1e5903ffde110880d9be..7d76bc1fd1a0c37ed0279243e6b9683950032ac0 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 6d1bba8c4d5dd3d4d46df014e5be7cbad3152918..ab79c3e780b29f6c517bc0d995e40b69033828aa 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 a2337483bf1fdeaf7597e0d14f6b4d8e0e8e19fd..3cc3b9143894c419a7e36cc3cec9f8e51d3f4b7a 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 4d4cb0239bf3e5febc86e2ff7013f81478319fd5..b9fe90be9fb22c08b2521f5c17c247729ebd077a 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 8b37f0b74d5b441b895849807bf6f0fc494a9071..de9a089ec8c6b6fb9520a0da57f464db05b263f8 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 0000000000000000000000000000000000000000..402abdd85636c52fb7c247532c8d3cf78faa32d3 --- /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 1a5c9d65583fda18a528da778ea5c38a60b026e6..86fb972e94c3b00cebde2d7f8112084f81ceff10 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 0000000000000000000000000000000000000000..3effc0eaa32b51645975969392220c3cc99fbaf3 --- /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 0000000000000000000000000000000000000000..55c83ca85a643c84f818e030533c9335475756eb --- /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 0000000000000000000000000000000000000000..d9bca53094898757d198260480d32a96c6f122f5 --- /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 11724d9802a59e5e8e43f7324a83eaeb51ee69c8..24639f3bfd4625653d093e4199dccba1ecbf6cfd 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 eb282b1be3a8ea2b8664280d94da9bbee2d063b7..cf6802eb9a933f67610ed253eea46adc0689d6c3 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 8ab7c81440791c4086a43003c1ec643751cd5bb3..2d214f18e9f60577d9f25905353a9fe83f510890 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 1c5730838ff1f3d805aed104308a8abe4fb9a969..dd986b346a3712cc24091181f2819790118f5a5c 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 d3d95e5886a5996538327abc834fa6fef99a22b4..ac5ac34d2145a7f9c6727e143abb4c33bfd149d8 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 c5f691e95c2470055f062464c3f7fdb9c3487308..036bd8e546c4b45ff076dc9eee409bfb52928f85 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 7ba37bd14ff1e4939d1c91e7d000bf097c4dd45a..ca04cccdf17b64e7a8e4e3c7541c5f8ca6fd021a 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 818183b9852b979bce79070a4deac2ff494f3da9..f17f5a9a26a4137c285e4a779940bbefe6a20b5b 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 a4ea354ebf693ab0967109f6a1bbd3bfeb1e8eb7..ba68a5420a883b4311617c0d186b23710d8f7711 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 fb670d59bd1279240a78d93a5e1381fb90de8659..ed37ad794a0ba5251625ea7da1e8aae8e6d274b6 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 87a525b330212897548b80084f5a59cf224542f5..e0ac32c54ec58f7f16d6f241f30e1f0109a06d22 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 26cd61d182bd158f8b27d69c3d287ba9ff9322c8..2f34a6ddeb6b975d174465da8a5cbc8d9ec2da9c 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 b8a717fc0e702972c9d81d1c23bc99352a563722..b38b357126fa1d80e8fecedf93d146ca11414047 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 5535d9ab11282e835395c0f0c99c1a5bca543801..88bea0c080959e7751a01c41fdb884f4c61cad69 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 0000000000000000000000000000000000000000..229e37d0080a37bf51baf86a72eb4b40d927cc0c --- /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 0000000000000000000000000000000000000000..253b9ce49ba8c37d2a17592c581149b19fabeb7c --- /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 7213b22c949b89561e2c846249d59d14e47472ee..ae3871bb87af895f21d0679d76290b4880227967 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 6ed6326f16e5ab50d364c54f6ac5206675699c77..a5a0492ab87666ce6b83c003138ad1e476b85c28 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 744aef20fda69bfbc44070f9dd5ab6f495632f77..b98d048d0343fb55c11c3dc4f51ccd7075056514 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 0000000000000000000000000000000000000000..e6af8d130514e5d3483a39400336a35b97756b07 --- /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 a0f2e007555e31523aa09d53f1c04f30aa4b077e..4738bfba14a83d76b85454e23f72a7a0746aed11 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 0000000000000000000000000000000000000000..91c9543edfdadb425df51cd910b21890d0e07cfe --- /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 0000000000000000000000000000000000000000..7f60743534bd44b11123750f3a10a1cbe5ff85d1 --- /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 0000000000000000000000000000000000000000..ca0034aa9708cc5da135cc6bd56da0c99b3f4e54 --- /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 e164a789459b8ad8a1f8abe730c5657361af6a71..10cc55d3d2bba86f493fdc388bf773c72de6b04e 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 5326458038087b3101d0afcb9934c10c99f38e6e..6668bc42a8b58cee36da8bc4022f2ff33312fe59 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 aa6305ce831187ac7a946be70a49fc82d22cb9c5..2e7435b48bbb48b79580cf8d4380a1e978e9b8f0 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 f51777bdbf7343ed3d13e775ea7881be4bed9867..0000000000000000000000000000000000000000 --- 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 5fd1810bc284ce1a4051808fde0d25f5acdafa65..c64604975ab0188eb82cf3d03457bfe4abbf5d63 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 e0aea87c90c335383752ad400a8b800dec6be9e1..7777be9189755c0a7a020ab37b258a933c2aa6b2 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 4032e2e3fee358be9424a80dda45f2f8ae18c4fd..51156dea4a17f5972f8a75d77fa5383e1f7eb9a5 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 d46128c62c026f97cf6f453bea3b646542baaa56..57cf6c3f13f49aa656e6e0c5cadc4c1ef2fd7a32 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 51a401d4b8c86d6ad1222b130f0d1826537ef9cd..bf5a2e2c34d108e4c85b065be98e3e4c247e3722 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 0000000000000000000000000000000000000000..71e2d82ea7cac2b88ef088c1bf3f1fc94618ddd3 --- /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 222328d2b917478af9864643e899da6ff7a264a0..0ce160242e56b50f8a6cef58f8a0f31ea9b1b9eb 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 fb99d3e38322af9444b5a0aefe23601d3ee63d31..e7621414b06fa4999c74c5366634f25dabba3fcb 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 bbc533d37e84f17335d023653b813af2d6e0000d..02e6a10295e92eff09d26609ffff2d1e8a6d5edd 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 27ca6e26e9f96cfbdee0efe35e6d73b3b08555a8..025b3ae65ecee0ef9fa3b63847b2ac4fcd51e00f 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 15033b8b2b09d86d2ca8a6203fb4a71ce07d250d..4d835e6590ed119e5c3ad28c333ac8fc52135e2e 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 0000000000000000000000000000000000000000..0d6a87000ccdc511df5787ca5555cff5921519e4 --- /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 fbc84521de08a6a7793d4716d5ed09511894b77d..c5eb126cfbf7637d882c624c374a3269141ad08c 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 df8ebee020c910bbdb2f46fe662ae49b2ff960e9..cf4ecf15523a55c802ea5af456abdefe4a7247d0 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 78772a63dfe3192e4c83c6b4cc31676a1484a4f6..f5fa8ca9221dd86d3c5f2cec3c77fb5003cfc4fc 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 99230eb23e32d6fe876c8ec1c632083d23313fdd..71ee715b535dc8eeb4137b61a8c3b32a1b3b693b 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 75140bd005d56e561231178da55cc1aa42570db0..205376b1257c5ee44797cf7d20e8ca09b75f66f9 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 ee58e9831e9af57086c9a04e5043ecbf731b2922..c93b4fe958d5bdbfe897924006763c7df010a5ae 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 7dc69bceda921380b44e49b5d288fd8ebf48aaa1..e8f831a21c20429d57dae556e017c070d1e23296 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 f4d08195309b024964d8b88d87e2e006f7e1e70b..25095f04d0193eb9eecd7d7a53c7cd4818ea87de 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 dbd209a57a2f840b760706df831466a08f950fbb..ee5c348eb6be584f4cbfa43e65c72843dae76a53 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 b440831d81b46ddd7e7a7307bf87a81dc044b32f..0000000000000000000000000000000000000000 --- 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 0000000000000000000000000000000000000000..f438bf6f7ed88004ac7c6d998816674b9238d83e --- /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 a4b509704a7f1e7003b32cded6d19b26071a2ed2..301dc902dce912adcc9f0e84de497841c3e2f715 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 0abe90e0ba73a75a69fdcd49840247542b56a49d..c9fdbd255d46707bad206b9b80b349f18942cf14 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 2858086e0d643b56dff55875313dad122971d3bc..c4c889cdba526477b334aee726b3ac1a6721db74 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 120fc1174cdf9c99c03b58251ad7627d43cfc986..36c7e7e2fb30dd9a889e9174b22f62150193b65b 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 2ff62cc9eef27d5080e928aefbca6f3fe046df88..80f59268111056830054bc98635720ad41c75443 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 bc669e9e1a0154f52ae622fa2ca3c4a933fb1fa4..f405ca01200d984509d0235d7ee3c347c51a96ee 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 6f3bf69889c53efeb8b72b1b811342431d84e75c..db41ee0566feae5e6843401a8f14d3bf32e7e3de 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 ce300eaf9f6de77f84c03b5e458f23dcd5bc8d5c..7da1d4b612f9263f419e850fd7f8c9171e5dcd42 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 e4f565b3b052b6eb6603fc8277eb53bc25d60904..ec4ce69d5e87e5a8c123a48308f6893944c6dbdb 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 5575c56b7fd09f09a85f10cdc457ef9affb038cd..6f90131db12afe4dbd1d0e35e7117b96d2b49d97 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 d47f08c90b9cb643b19f090b43b2941a29852463..36087aa84bb3b5489ce7c4c55349aaf7505595db 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 52cdc0bc0676454d1e5efb625b8a1739840c78ce..74e8c0e6b434aa57eafc13f0573dd7c6d00d7710 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 99e250e9e4d7d9d560ab3e852ddfaed7ba0345b8..3990d0989062fe9a6e8695f154cda4e3fb259b9f 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 be572ca32f9bf09ea91bd3122d657764aaecb9d9..2f06451438d91c1ef702e82e588991d5d7350904 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 a409060afdc680307c3ed3a43fd8fd4e264e7168..5800fb6df3cfd294cc5c5d607098f5d7fb170da8 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 156c911b9b8637101d8867e18155c0fc92713972..0000000000000000000000000000000000000000 --- 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 7940079d099480b48f7c147b8c578a9aae146398..840c87de216b71e30da5b84b140c6ebf0807174f 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 0000000000000000000000000000000000000000..c431f1d97c260b853a8489f7699b378e72259edc --- /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 0000000000000000000000000000000000000000..08512a5cdd9d4c23e7f066eec195799e4a63d9a6 --- /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 0000000000000000000000000000000000000000..db0e06434aa9c7632b61af024975b898b016dd96 --- /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 0000000000000000000000000000000000000000..df321023c741e084ba8788109a59dbb916deeed9 --- /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 0000000000000000000000000000000000000000..365d68a9ee76bcecacab7c191e21c1c36666421c --- /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 538931c1040ef8f917962a4ea519a417171b0fab..e790ef49acbfb6bc984b4df4a84d277509a5a717 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 9ecf94e21c0128cc4d8cacc67ae2814c7b6964d9..ed3220d2bf96be16e4ab9fbc1eb5d1922b53b3d2 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 9fd464f46204d4ee369166998a9091fc43c62e6c..e11bc3dd5bb9b3c75ac3e2d4f625587a2122d6b3 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 a6f97bb5334ea192f9db580f07a81e155f585f9d..182f68f3112cc60c4daab0987a7bc3a87758b7cd 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 cfad449fb0283b4b3a30f0973ae1d06b3e570d87..cd9d068b8acf33f119d0b33cff251e129aeb0945 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 0000000000000000000000000000000000000000..3cf42343658c8faa2b1be93885b2ee3ceb580287 --- /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 9100efc86394bb9d5175129ce9afcb5949d75b5a..7267e9bc48573a02acf6c526243a0c45546bc66c 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 de9be76b6e45ca8f5926d83fd598fa1110425abe..0000000000000000000000000000000000000000 --- 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 6eb6da8861a532e842565fdc877cfcef63192798..0000000000000000000000000000000000000000 --- 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 4743c36c44d0b20e8f8ee795bfabc51584a588ba..9fa3c8a14141c1f66b13effa8304e40a52d35803 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 072b66e556386deb092b7a10533fe454f07c9ba1..c062db9e254a850f2183c86e07999605eee7b554 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 dcc797743035f4199f52f802ff44e156f99fecbd..241bb71983a06a8a9cdd7ec4b73f920b6fea7a96 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 d4830a9e239095bb39bfc9234a6be3d470654f1b..3b01e4970390b616e63e8566afe692a36daabfb1 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 0000000000000000000000000000000000000000..4af712b1d5a5671080f49c486ed41c400f410c0a --- /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 b3cfed91dd45c73342ec7dbe75294db36cfa5582..fa090d50354727392fc439169c92e9bcbad2286d 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 4b6b72a373442582b56394613f789dcc3ae0e8cc..c1348edf3f6fb7725685a1b30fedfe2f8476f375 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 0000000000000000000000000000000000000000..e6442fea2f9dce055662ddaaa4cbd5c81a813345 --- /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 2847e312d00ad761b93fdfbff24de439b62c75d2..004fc1c37ae267a0d0d0f3e6947ce6df050c158b 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 05d174b055414981d31cbb880b5d207a0acee49a..4ede854d54602eedd786e626401d2968f4eaea0e 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 ea140cad5ee5c2bd2de0d11313d158bcd1a2cd43..b02e29e33513b0c5b21b0ac3450ae21274388aad 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 bc7b7407d6ab801acbd61723976ca5dbb8cb1dd4..b691902e1333597bfa1d6287a017328a34bd5b56 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"; - 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"; + version = "18.12.0"; 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 42782d449d586da62f923fb4cec9c3f5faf461db..0000000000000000000000000000000000000000 --- 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 331f516c88ceb00a3f2b39c607fcd03a95486251..6de7c3daed19688b92ccdc70ec4d7bcf13627934 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 c1b8a7eb866308ac55dedf7017d2494da14a1772..0000000000000000000000000000000000000000 --- 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 9b6771a3925bf09371b900d5918b9efe4b79b310..2042f1047b22f3f0cbe6ad7ef684798e201e99eb 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 18f47b7652f8a503c12b5881480057323e9f9832..3e5bf8df4a7b9f3016f9aa43c777a935b25fa282 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 34e46e9fa0f0a8b0b2350dccca0eb6a7a2b9cfdd..06512f6123b158d35e83c93acdec1877898fbfee 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"; - - # 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; + name = "alacritty-${version}"; + version = "0.2.6"; + + 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 f16144f3befa52b06718e73c2149121418b21279..39dae0db1250c8abfbacda725f816bc33e175dd7 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 0000000000000000000000000000000000000000..1c769e58705aa62cf6f8e2313077f62133b0e790 --- /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 eb35eb9cf73b90d54f2db1c0432de36c9dd5b958..2d9ea5e3574b4288f601e0d4c461ebabe596a8e5 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 0000000000000000000000000000000000000000..25fafb604c3358233b7fb58fca019d7d97ff6154 --- /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 0000000000000000000000000000000000000000..4b14fd47711ba2b5d6a215a39099f01d9e8f7cd2 --- /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 f69152820e43e48e8dd11e88d382d98526146496..202c1669f85851d6d482027ee3ab76c68f889441 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 0000000000000000000000000000000000000000..08d9c4787369d2974f258a56387c8db6d3a41a54 --- /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 0000000000000000000000000000000000000000..2f38307ca1e576f009039cc6dd0c0c6e19a81ef9 --- /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 0000000000000000000000000000000000000000..ea744ed6648f366be9fe839a5d5a203f9344fbe4 --- /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 c803eb37ad6f655c2ec3084c5bc914de8cb44f22..1144d5152847374c3c0dde441211bace6bcaafaa 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 0689843af61207a5716098417daaf7584a82253d..f085e4bd7dd52589d08c67cb303e59d2e494495e 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 b9d4b83e4f1f302bc56ea750483cdb574c376abd..89bd8ee4b3e0eec62ac706285522f61c0f7fe823 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 1ad236f0d13fa3f023b62f1d0eabfd1decbbb6b8..cd3ee82acebfc76707cfcd4b2ea1e7ec13ac8d4e 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 45e27984ed598fa8885dde0999992d9cf42b2f36..5164b80a0beede06f25b534726279982c80741fa 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 ad3f653465938fd87b821c1fa788bf38d11e586b..1a162aca0d76a5cecbace1d18e98d415bb567a76 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 6bd1cef7c1b26a3f6fbca0fb771427d5021aa228..78059191c2c374576aaad2fdfe934e43e41f14c3 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 051e2c010a81fe1732d6c01952c66b81118c15e7..db67514cd07786119b62b176b01c5cfde796267c 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 6dd68123b132a4e7c66604c4a5b005f33d2fa53b..7a47a0e3bc0bb90a37ce882d97627b06dca3ec98 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 c9cc2d6db424719ac63e985c8c429dd42f43e43f..766161e521c2f49e781cd2d96ecc6b5b8875d8fd 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 39a87314ca7bb4e0bfc4b31620720b86e0d19fa1..ebc0a8297746c49a35398c9e12105d656edc06c5 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 a6afee13e47bdfffd3763813195929631e97bd12..0601514546f22a26cdcd4c8f0948b2eedb3e88a5 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 f97b83a85075882be1d34d78c7d774d8cf6d9020..f7907746d107285b74fcc4ac199aa5ac2de93671 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 75d1936ba857b60dd7f25648f26920118fe1f9d5..22215a7e2c6833164ee69afacfd358478faf3214 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 681ee5b0bece69cf2811de114ad70a4d435fb815..de42f2d9657164f52c5825fbc8e580b4cf61a901 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 1ea45c3574a5a29de0d9e3995f5d3cc9a85a80ed..4fb9ca5fa713c1ce04396a4d2f1802dc8b9fef04 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 3e6a6ab53f77dc148e3c5cf1c35f8b5353d1d2c5..939e2e9fc16656d73cb70f54f96bd0fb90ef91f6 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 0000000000000000000000000000000000000000..7125e37f7f950e2a625146e2a308f73a97ae02c2 --- /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 12f1f78acb9e1ad448eaf4f26d10ddf808a7b0a4..b28e76739929bfaaa0c65124e49d22823ea933a6 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 b08ce5baa5b67428ff051556fe2fda583c6582c4..255396a7950230a5f6ce3e165f2a2cabcaf80e0a 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 8105f4d61bd8752f9c1ffe9815ad8c9c31441800..fff67b0add62808426fcffcb149258b96d9f32e4 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 c98efa547b393c1750156e9adf0156d90acd9db2..98ed10b0c7ccf8fe9d3756153f09eaf9189f5ffb 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 537627a10d2dc119142ef7659f4755a01e942f6d..c6f83104fb1314a6b78df7ee581085e53fab1a38 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 b72fcde4a9ee0fac958d819821cb0c475e0f9572..f088016938aa9722e51c12a0a2283d968c9fbb67 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 389ac7dfb1fc8267f42ac1b5c7fb9db2b736ab66..2b7888c9cd049cf31e435fe6ac41b84ccd0ecc81 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 3cdd4fb0bfe9553638c2c841a8d9fddb18576d99..51e9c4371b5b51c01acb39394bd772338b813e37 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 548966764fe64999cb25da5de187ef4f1d86a8dc..e7d0e6a63a5907baede82ab4ba894e8c891a4198 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 0000000000000000000000000000000000000000..7a89f6952f213e41ffba02730569d10801b0a01a --- /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 baee3010d696ab69552d5ce52d19ab241cc0070a..64d2677d4e13ecceaa5cc1fee813d1ab33da9e8b 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 54392b03bfbfa86092fc3e75c5e7cce9590ad12a..998074e8aa0f14b429d1e15eb85e0de5c79dfaa9 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 0000000000000000000000000000000000000000..782a37040d8f5f698a82279196effe396d6919f3 --- /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 0000000000000000000000000000000000000000..75783805fa3bb9ec28119ebdbb27ee8d2a954187 --- /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 d024b0fce99e03ec1071ad78c140bfb14af950cd..5e8bb629ce2a18855058daee88a05196ee0f3dbf 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 0dfeac3cf8b2679871f8ac0af457e542ba4b2f87..919f20f13983fb9c0acd44f8eb78aae4b4a22519 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 712c2081f102c8904948d8a39fd62a0ebfc280ca..4af776674e6379f806ec733ff70c7e5d3a67c440 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 1eb0d0048f647b2606519c223b7d0c4de40c1cd5..0cac0e6fd3f526e01b00735172f0fa8179089d24 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 0000000000000000000000000000000000000000..9e71837c0f5de72c3a5505de744283b93bbd5ab3 --- /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 0000000000000000000000000000000000000000..154af4efc9b798fc82d67e5f97c9a44b08282b21 --- /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 0f7a89b3c5255dda4c323b38e816e4f57197f0b1..f5420a0c94491b562fdb792f8b3384c38fa70e90 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 0bb0926f048abe20eca0171020aca7faf044b702..6cbdea8c68671d993ec3a9f3956bc35625e74657 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 a7c00cceaa72d44ee86dc3315e5003dcedb37cc8..f9a50313c472a0be3397db81df1d8e9f46ef45d3 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 6e0856ce66aa80fa14ab9c62bda688bd0ae0e364..dcb50df705204fd376b6e63825bb3bb904673250 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 535dbfa3c53d7db4eacf7047772561c3877d1cea..0a5d4f56d27888a058c59252b740ee70315182dc 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 355ca0e9544994dcc010b66e84d57130fa7d9fc0..846afe0e95d4bbebc6aa2714c63e65215f450ce3 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 b617791dc2e1983dd77a3f3a51baf7e77ec399b5..2e5443227fdaef6ed61aa66fa5f4995f813758ba 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 01447281fe76c56d0dcece7937007e47efdda78c..edf16f806a6b94a5290ecb2095f55dec71bc15f4 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 977bd5e50ddd51c386b474b36afab7e558d15594..e6c66cba1e061d1d7beece54aa028f1a81151154 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 3413b6ba63107611e5af6572c30e5c90845018d4..bb105805ca8e869ce346bff3ed8519da9005e0db 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 96f8cb1161433bf4a11a37813537ea32f59f82da..0fccf83acf76d1a226f82d972b59dadd268431da 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 45b4ad88cff3ca2a5c7e93e260020ef3db865aff..4b5c17d8e51bcba5d92f8325d8e6b1018a73f02e 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 149092c70d387413d99ee46f69d35081f4dddbcf..a488901441271dde264a6f6df35317b67406c2c9 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 1979d290c8258c72471f1731fdc5054797afaa68..4f0c1864677c9847d5f1d54c2382fc84d9cb97e8 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 1810d6d5c476aa5de0e4f6c7b5a8977e405db076..f7cfee3e6516241f1030b61e8c3fef43be6c6a87 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 2f61ba683f3fa02a3061c5c22c5852bee0cbb708..5ef64b2b801c2bf14b73bd2cd69322c838150921 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 413679afd21950c3b90b9c73769498126d0db2fb..db18ff73412cbbc32f9270cadeb5e332434ffb0d 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 0000000000000000000000000000000000000000..a35079e915177d807b745c3ea90345f38951836c --- /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 347d76860ef111f72bad89bf543182b81be6d440..cf409b4c185fc9b24e0923e39cf4646033f450c1 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 52105f49c5609731483075954bd4f668b20d7419..0541468345e9232790c83b7bb7df0feeb839326c 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 036cb104b4805f761764e57058e9c14d67ed3e86..f94f8f5dd707ba4350dc8aced091130aeed1583f 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 9def56aa98c197201ce8283c7ca3352546ef3594..7d19a9cb1108a82eb34130e415930aad570c0f69 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 6186ed6f8f4125be0970b393d07c174c4bfbcd15..81a66bf503c07d6839d28d728108530a08a1ee75 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 2abdce45c95f246630bfdea4860c1cd95466cc81..453d95694eb056273584763cfb81ae240f38dee6 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 7998d30f253fd49457e30c01969167f68f753f30..c0a39d2d91d387fb6bfe159fa24f24d66142ef95 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 0000000000000000000000000000000000000000..0431f35057bed9c4ad502cf7565116789cb3df82 --- /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 b92012a29ddb3e535f448bfd455bcabdd9a5e6a4..500f1df36a0c51d0762fbde547195121c0e8bce4 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 0000000000000000000000000000000000000000..ba23078bba9340a720e8e002fd0c46a183b5cd0a --- /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 a6a489492e3135bba2b29348f33e1dea948bf56b..22badfc8cdd1d089b0e378381033b74dce1b8820 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 47487029ea0127e5faea76cb38f3d68cc19016a0..d5c24d69048a48918b97c69fe5c52cd8a22787ca 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/fsnotify/fsnotify"; + goPackagePath = "github.com/fortytw2/leaktest"; fetch = { type = "git"; - url = "https://github.com/fsnotify/fsnotify"; - rev = "c2828203cd70a50dcccfb2761f8b1f8ceef9a8e9"; - sha256 = "07va9crci0ijlivbb7q57d2rz9h27zgn2fsm60spjsqpdbvyrx4g"; + url = "https://github.com/fortytw2/leaktest"; + rev = "v1.2.0"; + sha256 = "1lf9l6zgzjbcc7hmcjhhg3blx0y8icyxvjmjqqwfbwdk502803ra"; }; } + { - goPackagePath = "github.com/gobuffalo/envy"; + goPackagePath = "github.com/fsnotify/fsnotify"; fetch = { type = "git"; - url = "https://github.com/gobuffalo/envy"; - rev = "3c96536452167a705ca5a70b831d3810e1e10452"; - sha256 = "0ixqpdmb7kjlarkv0qlbwnbr194sajx9flysnhcldzmciqgk5bqs"; + url = "https://github.com/fsnotify/fsnotify"; + rev = "v1.4.7"; + sha256 = "07va9crci0ijlivbb7q57d2rz9h27zgn2fsm60spjsqpdbvyrx4g"; }; } + { 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 5e1626e12c579dcb151ddc96a1a33af7403cb8f3..04c3e0320f6595737344c70d4b68263730a934de 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 6e4fc2065885987534cb0c3106962c5d0f646530..957f0f7f68bbb8600882c3494329b2e325e48228 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 9b6ac086efdf55ec77390920ba23f5bb1ad759b1..902e9268f7222a786841eb8b2fd33da1413ead30 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 e150ab457e07891abbe3ce8792eac62f8b2abf46..d9bccee889abe7c428da85a7bc258ddb3b3b3ffb 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 a714cdbb0d06d01ad6d4f7c898c9eb46be014713..6841bc14c384afa14045bd648bf1ecdf0567c71b 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 7ab1c70a98b443e8153b82a35ffad0f264f1c79f..d680f9255905b3b6bc922f7b33650af4395454fc 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 01e4f368223c736d3b699cb3f8ea9033111e3f68..5fe2d1085001891271a724c7a63871f31ffc57d1 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 3e92d3f28a01b7081805690be3576e26f3994f36..4e33cd6ccdcf37c2d31da787439821d765ffd5fe 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 fc10bc852e5c7c88539d6a8508460b48bcca7537..7304ad7141a972d02c1ae08f1ad6f968ef791071 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 30e36c3dcf0f129d588e23df07d6a868e7e24676..3260f6a506908b8d492f4aa44807c92b1d093029 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 ad2381394f4691844617aff46adbdb24329a1c53..2a3b2e61fc23733cc422362f2f7c36de7d253f96 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 97e371e9e72c57b07ee995a00dce930a1675a8ef..d15926ba6fb70a8f15629bbb1ae3478f3a09e54d 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 b2980bcd8aeaff7e1468f5a2a269ea2c23a2ae1c..b45cb24b1b51956b5450f47bee2605b1fde1af5a 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 ed706b138cc572556c36927aa47ba386151c060e..89ceca8a4f10558111ca1f7bd6a9b614fcf45285 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 f9c929c21bfba7c04235ce257b7e0ffa43948abb..bc2c8978a67e383ba52b11b6ba65c5240e6c9fba 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 8ec4e7f06d16e6a8b0b35bfd60583c302dc6500c..d6e05056e1c1b82c72629039184689c40cc4101a 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 4febac10806f393e2c483b2ba81609328380ae8c..dfc2595475adcd388cff182b141a6867fff96bda 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 0000000000000000000000000000000000000000..d6e52adc445295d6d8243fcf799a702af120addc --- /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 8d095b78cdbf9f3f28a5930b8bbaae0240481d58..9ea8210e67e715b0156072e87d58acab5207f77d 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 3072963c43e85580df7248387f39c69e7ef4575c..33a2cf932095287afe232abace43a3541cf31aee 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 6d22be32afaf944bc9974884e3f77fa5312255a8..773030bcd60aaebb3f239b6941168c7ac282a495 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 4f1745c0d8ceda3bcaa7f5b1d3358ae4371bd746..13e7e4f98011152318a25b017ed2545915c6f3ec 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 372adef4375c4e284b49f7d3e2370f92712e87dc..ed3aca996e1504b51ec26d2add4bacb18851bd20 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 0000000000000000000000000000000000000000..25d503290ce8c01689bef0b3162ae0e512e95a54 --- /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 314f8bcece105e80dfa9ed72a5fc7bf77a9ec6e4..4fd86a5a4f5207e079f0f30cfbcfc006c1f4a2c0 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 0000000000000000000000000000000000000000..3d8ed3627f2a24e5fae67c3c039af443cad77c2d --- /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 3155ab678d8688839225a9c34e0bbf24514e264d..2928d271efcfdad0f5ca8eb70b2bb396f09e174b 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 f5950b8770359483ec451ceb7f8abac70c1ec700..cd7bdd1fe7e21bb3795e84586b342f1506622577 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 185cd82435b2cd5c4fcd93d3cbdb8b49c37ca9e3..904fb95ca6c64e39dcd61b9542730ddb229a7a83 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 69e33fbfc18414cc4582625d04ffb51e7f1db23c..a3320a16ee91b191854951a304c5f561686c3c40 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 31793031dc1fbf269ff0960b8d8d785591680233..c872af68cef7eb5241da5d5b4a98f6c74aa4b3ee 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 5aaaa7a0e37bd5278affde851d0bd2fcf4e67b85..76c2ba69d35b481b7b0a267a31f5b6a0a462a157 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 3f7ce3cc5d5b9ba9d6dd6bfc74002a1701dc1603..a6efb19b5774a1a2eec2e6f003fe9227e9d0675c 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 99d511d413c0293fba2220232ca504e413004288..3fb2680177503ec3a1f493d2a0e5d7e7e9d864ea 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 7466fc2ca62b96fc1ddf099cff9c6ed1459fca74..be1b84b0012fb63c8ea840dd7d9d20eb579e6a25 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 $@ -- --# Linux uses pkg-config for system libraries. --else ifeq "$(OS)" "Linux" +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 - - HAVE_PTHREAD := yes - SYS_PTHREAD_CFLAGS := - SYS_PTHREAD_LIBS := -lpthread +-else ifeq ($(OS),Linux) +- HAVE_OBJCOPY := yes --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 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 - 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_GLUT := yes +- ifeq ($(HAVE_GLUT),yes) +- SYS_GLUT_CFLAGS := +- SYS_GLUT_LIBS := -lglut -lGL +- endif +- + 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 bce2a79cde33d4ec4dd3f342e8ccbcd12660bb77..c91b9f6fb061e9bc3b0b3c249a8966938cf800e6 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 e29f1f52077c36274e3e3b4ece9eb065e0173436..0000000000000000000000000000000000000000 --- 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 0000000000000000000000000000000000000000..131a1bbbf6bdc0f9f08366626373afaeb925faf1 --- /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 15904ab7c0ab98c66bc8b234de83da77f34cc6b2..d1538261939767b6a97711a84423d4cf79a52560 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 7068d8aedd376d8a5c14e879a8780352d9095969..daeb8b159f7ad12484dca67f2dd522db46be7ffc 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 12f8c12b5864482b07d9192dfcb66c7735e132c4..145abfba5d5c11b4a28653d7f0e7925066e5a821 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 d97f2d2c0489fc46c8e3d634ccb87f2c1e3a2ca0..9eb5382cde9f4e8e4c4a4ea0763ac513d15f6744 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 59ba45e6f376c739314eb8ca457f2f0c33006f91..9e2f4bf7f2e4c0729674a98ce3d56367296e58cb 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 41bc94a51300c12a1b71a03cf519e790d6f6ff83..9622689199a825b045df4ed2130a542ff8fd8af8 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"; - 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"; + mkOverride = attrname: version: sha256: + self: super: { + ${attrname} = super.${attrname}.overridePythonAttrs (oldAttrs: { + inherit version; 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 bd65acf5e5e9ad8c12ec1bb3f8924389fa1c615b..327a59618c2bc4e3b470f2e4414955f5dea3366e 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 792cff818655f8a4fea559c972b7e6d112b44afd..e16d9354bb43c8d4c8739c76db3d9995a7ff8e72 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 0000000000000000000000000000000000000000..660b5db610581efdcf34eca1ea6f20f2f8b1c80f --- /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 <