diff --git a/doc/builders/images/dockertools.section.md b/doc/builders/images/dockertools.section.md index 40d4dba1b85..23662f9bbfe 100644 --- a/doc/builders/images/dockertools.section.md +++ b/doc/builders/images/dockertools.section.md @@ -111,6 +111,12 @@ Create a Docker image with many of the store paths being on their own layer to i *Default:* the output path's hash +`fromImage` _optional_ + +: The repository tarball containing the base image. It must be a valid Docker image, such as one exported by `docker save`. + + *Default:* `null`, which can be seen as equivalent to `FROM scratch` of a `Dockerfile`. + `contents` _optional_ : Top level paths in the container. Either a single derivation, or a list of derivations. diff --git a/nixos/modules/security/acme.nix b/nixos/modules/security/acme.nix index 6ea0cfe615b..eb3599b924d 100644 --- a/nixos/modules/security/acme.nix +++ b/nixos/modules/security/acme.nix @@ -24,7 +24,7 @@ let Type = "oneshot"; User = "acme"; Group = mkDefault "acme"; - UMask = 0023; + UMask = 0022; StateDirectoryMode = 750; ProtectSystem = "full"; PrivateTmp = true; @@ -303,9 +303,15 @@ let } ${optionalString (data.webroot != null) '' - # Ensure the webroot exists - mkdir -p '${data.webroot}/.well-known/acme-challenge' - chown 'acme:${data.group}' ${data.webroot}/{.well-known,.well-known/acme-challenge} + # Ensure the webroot exists. Fixing group is required in case configuration was changed between runs. + # Lego will fail if the webroot does not exist at all. + ( + mkdir -p '${data.webroot}/.well-known/acme-challenge' \ + && chgrp '${data.group}' ${data.webroot}/.well-known/acme-challenge + ) || ( + echo 'Please ensure ${data.webroot}/.well-known/acme-challenge exists and is writable by acme:${data.group}' \ + && exit 1 + ) ''} echo '${domainHash}' > domainhash.txt diff --git a/nixos/tests/acme.nix b/nixos/tests/acme.nix index c6d393d9196..99dd8ec6fd3 100644 --- a/nixos/tests/acme.nix +++ b/nixos/tests/acme.nix @@ -253,7 +253,7 @@ in import ./make-test-python.nix ({ lib, ... }: { def check_connection(node, domain, retries=3): - assert retries >= 0 + assert retries >= 0, f"Failed to connect to https://{domain}" result = node.succeed( "openssl s_client -brief -verify 2 -CAfile /tmp/ca.crt" @@ -262,12 +262,12 @@ in import ./make-test-python.nix ({ lib, ... }: { for line in result.lower().split("\n"): if "verification" in line and "error" in line: - time.sleep(1) + time.sleep(3) return check_connection(node, domain, retries - 1) def check_connection_key_bits(node, domain, bits, retries=3): - assert retries >= 0 + assert retries >= 0, f"Did not find expected number of bits ({bits}) in key" result = node.succeed( "openssl s_client -CAfile /tmp/ca.crt" @@ -277,12 +277,12 @@ in import ./make-test-python.nix ({ lib, ... }: { print("Key type:", result) if bits not in result: - time.sleep(1) + time.sleep(3) return check_connection_key_bits(node, domain, bits, retries - 1) def check_stapling(node, domain, retries=3): - assert retries >= 0 + assert retries >= 0, "OCSP Stapling check failed" # Pebble doesn't provide a full OCSP responder, so just check the URL result = node.succeed( @@ -293,10 +293,23 @@ in import ./make-test-python.nix ({ lib, ... }: { print("OCSP Responder URL:", result) if "${caDomain}:4002" not in result.lower(): - time.sleep(1) + time.sleep(3) return check_stapling(node, domain, retries - 1) + def download_ca_certs(node, retries=5): + assert retries >= 0, "Failed to connect to pebble to download root CA certs" + + exit_code, _ = node.execute("curl https://${caDomain}:15000/roots/0 > /tmp/ca.crt") + exit_code_2, _ = node.execute( + "curl https://${caDomain}:15000/intermediate-keys/0 >> /tmp/ca.crt" + ) + + if exit_code + exit_code_2 > 0: + time.sleep(3) + return download_ca_certs(node, retries - 1) + + client.start() dnsserver.start() @@ -313,8 +326,7 @@ in import ./make-test-python.nix ({ lib, ... }: { acme.wait_for_unit("network-online.target") acme.wait_for_unit("pebble.service") - client.succeed("curl https://${caDomain}:15000/roots/0 > /tmp/ca.crt") - client.succeed("curl https://${caDomain}:15000/intermediate-keys/0 >> /tmp/ca.crt") + download_ca_certs(client) with subtest("Can request certificate with HTTPS-01 challenge"): webserver.wait_for_unit("acme-finished-a.example.test.target") @@ -322,6 +334,21 @@ in import ./make-test-python.nix ({ lib, ... }: { check_issuer(webserver, "a.example.test", "pebble") check_connection(client, "a.example.test") + with subtest("Certificates and accounts have safe + valid permissions"): + group = "${nodes.webserver.config.security.acme.certs."a.example.test".group}" + webserver.succeed( + f"test $(stat -L -c \"%a %U %G\" /var/lib/acme/a.example.test/* | tee /dev/stderr | grep '640 acme {group}' | wc -l) -eq 5" + ) + webserver.succeed( + f"test $(stat -L -c \"%a %U %G\" /var/lib/acme/.lego/a.example.test/**/* | tee /dev/stderr | grep '640 acme {group}' | wc -l) -eq 5" + ) + webserver.succeed( + f"test $(stat -L -c \"%a %U %G\" /var/lib/acme/a.example.test | tee /dev/stderr | grep '750 acme {group}' | wc -l) -eq 1" + ) + webserver.succeed( + f"test $(find /var/lib/acme/accounts -type f -exec stat -L -c \"%a %U %G\" {{}} \\; | tee /dev/stderr | grep -v '600 acme {group}' | wc -l) -eq 0" + ) + with subtest("Can generate valid selfsigned certs"): webserver.succeed("systemctl clean acme-a.example.test.service --what=state") webserver.succeed("systemctl start acme-selfsigned-a.example.test.service") @@ -375,8 +402,15 @@ in import ./make-test-python.nix ({ lib, ... }: { assert keyhash_old == keyhash_new with subtest("Can request certificates for vhost + aliases (apache-httpd)"): - switch_to(webserver, "httpd-aliases") - webserver.wait_for_unit("acme-finished-c.example.test.target") + try: + switch_to(webserver, "httpd-aliases") + webserver.wait_for_unit("acme-finished-c.example.test.target") + except Exception as err: + _, output = webserver.execute( + "cat /var/log/httpd/*.log && ls -al /var/lib/acme/acme-challenge" + ) + print(output) + raise err check_issuer(webserver, "c.example.test", "pebble") check_connection(client, "c.example.test") check_connection(client, "d.example.test") diff --git a/nixos/tests/docker-tools.nix b/nixos/tests/docker-tools.nix index 1cc554d002b..dd287883c98 100644 --- a/nixos/tests/docker-tools.nix +++ b/nixos/tests/docker-tools.nix @@ -161,12 +161,18 @@ import ./make-test-python.nix ({ pkgs, ... }: { "docker run --rm ${examples.layered-image.imageName} cat extraCommands", ) - with subtest("Ensure building an image on top of a layered Docker images work"): + with subtest("Ensure images built on top of layered Docker images work"): docker.succeed( "docker load --input='${examples.layered-on-top}'", "docker run --rm ${examples.layered-on-top.imageName}", ) + with subtest("Ensure layered images built on top of layered Docker images work"): + docker.succeed( + "docker load --input='${examples.layered-on-top-layered}'", + "docker run --rm ${examples.layered-on-top-layered.imageName}", + ) + def set_of_layers(image_name): return set( @@ -205,6 +211,16 @@ import ./make-test-python.nix ({ pkgs, ... }: { assert "FROM_CHILD=true" in env, "envvars from the child should be preserved" assert "LAST_LAYER=child" in env, "envvars from the child should take priority" + with subtest("Ensure environment variables of layered images are correctly inherited"): + docker.succeed( + "docker load --input='${examples.environmentVariablesLayered}'" + ) + out = docker.succeed("docker run --rm ${examples.environmentVariablesLayered.imageName} env") + env = out.splitlines() + assert "FROM_PARENT=true" in env, "envvars from the parent should be preserved" + assert "FROM_CHILD=true" in env, "envvars from the child should be preserved" + assert "LAST_LAYER=child" in env, "envvars from the child should take priority" + with subtest("Ensure image with only 2 layers can be loaded"): docker.succeed( "docker load --input='${examples.two-layered-image}'" @@ -219,6 +235,18 @@ import ./make-test-python.nix ({ pkgs, ... }: { "docker run bulk-layer ls /bin/hello", ) + with subtest( + "Ensure the bulk layer with a base image respects the number of maxLayers" + ): + docker.succeed( + "docker load --input='${pkgs.dockerTools.examples.layered-bulk-layer}'", + # Ensure the image runs correctly + "docker run layered-bulk-layer ls /bin/hello", + ) + + # Ensure the image has the correct number of layers + assert len(set_of_layers("layered-bulk-layer")) == 4 + with subtest("Ensure correct behavior when no store is needed"): # This check tests that buildLayeredImage can build images that don't need a store. docker.succeed( diff --git a/pkgs/applications/misc/hugo/default.nix b/pkgs/applications/misc/hugo/default.nix index a4c32b9b931..8f3444d85d8 100644 --- a/pkgs/applications/misc/hugo/default.nix +++ b/pkgs/applications/misc/hugo/default.nix @@ -2,16 +2,16 @@ buildGoModule rec { pname = "hugo"; - version = "0.81.0"; + version = "0.82.0"; src = fetchFromGitHub { owner = "gohugoio"; repo = pname; rev = "v${version}"; - sha256 = "sha256-9YroUxcLixu+MNL37JByCulCHv0WxWGwqBQ/+FGtZLw="; + sha256 = "sha256-D0bwy8LJihlfM+E3oys85yjadjZNfPv5xnq4ekaZPCU="; }; - vendorSha256 = "sha256-5gQyoLirXajkzxKxzcuPnjECL2mJPiHS65lYkyIpKs8="; + vendorSha256 = "sha256-pJBm+yyy1DbH28oVBQA+PHSDtSg3RcgbRlurrwnnEls="; doCheck = false; diff --git a/pkgs/applications/video/catt/default.nix b/pkgs/applications/video/catt/default.nix index e60acf87da6..e4225963cb2 100644 --- a/pkgs/applications/video/catt/default.nix +++ b/pkgs/applications/video/catt/default.nix @@ -4,11 +4,11 @@ with python3.pkgs; buildPythonApplication rec { pname = "catt"; - version = "0.12.0"; + version = "0.12.1"; src = fetchPypi { inherit pname version; - sha256 = "sha256-6RUeinHhAvvSz38hHQP5/MXNiY00rCM8k2ONaFYbwPc="; + sha256 = "fef58bf7a8ebaba98399d1077cc4615f53d0196aab2a989df369a66f7111963b"; }; propagatedBuildInputs = [ diff --git a/pkgs/applications/video/kodi-packages/a4ksubtitles/default.nix b/pkgs/applications/video/kodi-packages/a4ksubtitles/default.nix new file mode 100644 index 00000000000..5d714cf1799 --- /dev/null +++ b/pkgs/applications/video/kodi-packages/a4ksubtitles/default.nix @@ -0,0 +1,26 @@ +{ lib, buildKodiAddon, fetchFromGitHub, requests, vfs-libarchive }: + +buildKodiAddon rec { + pname = "a4ksubtitles"; + namespace = "service.subtitles.a4ksubtitles"; + version = "2.3.0"; + + src = fetchFromGitHub { + owner = "a4k-openproject"; + repo = "a4kSubtitles"; + rev = "${namespace}/${namespace}-${version}"; + sha256 = "0hxvxkbihfyvixmlxf5n4ccn70w0244hhw3hr44rqvx00a0bg1lh"; + }; + + propagatedBuildInputs = [ + requests + vfs-libarchive + ]; + + meta = with lib; { + homepage = "https://a4k-openproject.github.io/a4kSubtitles/"; + description = "Multi-Source Subtitles Addon"; + license = licenses.mit; + maintainers = teams.kodi.members; + }; +} diff --git a/pkgs/build-support/docker/default.nix b/pkgs/build-support/docker/default.nix index fec289f0ff1..a73737cb123 100644 --- a/pkgs/build-support/docker/default.nix +++ b/pkgs/build-support/docker/default.nix @@ -729,6 +729,8 @@ rec { name, # Image tag, the Nix's output hash will be used if null tag ? null, + # Parent image, to append to. + fromImage ? null, # Files to put on the image (a nix store path or list of paths). contents ? [], # Docker config; e.g. what command to run on the container. @@ -791,7 +793,7 @@ rec { unnecessaryDrvs = [ baseJson overallClosure ]; conf = runCommand "${baseName}-conf.json" { - inherit maxLayers created; + inherit fromImage maxLayers created; imageName = lib.toLower name; passthru.imageTag = if tag != null @@ -821,6 +823,27 @@ rec { unnecessaryDrvs} } + # Compute the number of layers that are already used by a potential + # 'fromImage' as well as the customization layer. Ensure that there is + # still at least one layer available to store the image contents. + usedLayers=0 + + # subtract number of base image layers + if [[ -n "$fromImage" ]]; then + (( usedLayers += $(tar -xOf "$fromImage" manifest.json | jq '.[0].Layers | length') )) + fi + + # one layer will be taken up by the customisation layer + (( usedLayers += 1 )) + + if ! (( $usedLayers < $maxLayers )); then + echo >&2 "Error: usedLayers $usedLayers layers to store 'fromImage' and" \ + "'extraCommands', but only maxLayers=$maxLayers were" \ + "allowed. At least 1 layer is required to store contents." + exit 1 + fi + availableLayers=$(( maxLayers - usedLayers )) + # Create $maxLayers worth of Docker Layers, one layer per store path # unless there are more paths than $maxLayers. In that case, create # $maxLayers-1 for the most popular layers, and smush the remainaing @@ -838,18 +861,20 @@ rec { | (.[:$maxLayers-1] | map([.])) + [ .[$maxLayers-1:] ] | map(select(length > 0)) ' \ - --argjson maxLayers "$(( maxLayers - 1 ))" # one layer will be taken up by the customisation layer + --argjson maxLayers "$availableLayers" )" cat ${baseJson} | jq ' . + { "store_dir": $store_dir, + "from_image": $from_image, "store_layers": $store_layers, "customisation_layer", $customisation_layer, "repo_tag": $repo_tag, "created": $created } ' --arg store_dir "${storeDir}" \ + --argjson from_image ${if fromImage == null then "null" else "'\"${fromImage}\"'"} \ --argjson store_layers "$store_layers" \ --arg customisation_layer ${customisationLayer} \ --arg repo_tag "$imageName:$imageTag" \ diff --git a/pkgs/build-support/docker/examples.nix b/pkgs/build-support/docker/examples.nix index 9e33a42af23..9c7d4681214 100644 --- a/pkgs/build-support/docker/examples.nix +++ b/pkgs/build-support/docker/examples.nix @@ -188,7 +188,25 @@ rec { }; }; - # 12. example of running something as root on top of a parent image + # 12 Create a layered image on top of a layered image + layered-on-top-layered = pkgs.dockerTools.buildLayeredImage { + name = "layered-on-top-layered"; + tag = "latest"; + fromImage = layered-image; + extraCommands = '' + mkdir ./example-output + chmod 777 ./example-output + ''; + config = { + Env = [ "PATH=${pkgs.coreutils}/bin/" ]; + WorkingDir = "/example-output"; + Cmd = [ + "${pkgs.bash}/bin/bash" "-c" "echo hello > foo; cat foo" + ]; + }; + }; + + # 13. example of running something as root on top of a parent image # Regression test related to PR #52109 runAsRootParentImage = buildImage { name = "runAsRootParentImage"; @@ -197,7 +215,7 @@ rec { fromImage = bash; }; - # 13. example of 3 layers images This image is used to verify the + # 14. example of 3 layers images This image is used to verify the # order of layers is correct. # It allows to validate # - the layer of parent are below @@ -235,23 +253,23 @@ rec { ''; }; - # 14. Environment variable inheritance. + # 15. Environment variable inheritance. # Child image should inherit parents environment variables, # optionally overriding them. - environmentVariables = let - parent = pkgs.dockerTools.buildImage { - name = "parent"; - tag = "latest"; - config = { - Env = [ - "FROM_PARENT=true" - "LAST_LAYER=parent" - ]; - }; + environmentVariablesParent = pkgs.dockerTools.buildImage { + name = "parent"; + tag = "latest"; + config = { + Env = [ + "FROM_PARENT=true" + "LAST_LAYER=parent" + ]; }; - in pkgs.dockerTools.buildImage { + }; + + environmentVariables = pkgs.dockerTools.buildImage { name = "child"; - fromImage = parent; + fromImage = environmentVariablesParent; tag = "latest"; contents = [ pkgs.coreutils ]; config = { @@ -262,14 +280,27 @@ rec { }; }; - # 15. Create another layered image, for comparing layers with image 10. + environmentVariablesLayered = pkgs.dockerTools.buildLayeredImage { + name = "child"; + fromImage = environmentVariablesParent; + tag = "latest"; + contents = [ pkgs.coreutils ]; + config = { + Env = [ + "FROM_CHILD=true" + "LAST_LAYER=child" + ]; + }; + }; + + # 16. Create another layered image, for comparing layers with image 10. another-layered-image = pkgs.dockerTools.buildLayeredImage { name = "another-layered-image"; tag = "latest"; config.Cmd = [ "${pkgs.hello}/bin/hello" ]; }; - # 16. Create a layered image with only 2 layers + # 17. Create a layered image with only 2 layers two-layered-image = pkgs.dockerTools.buildLayeredImage { name = "two-layered-image"; tag = "latest"; @@ -278,7 +309,7 @@ rec { maxLayers = 2; }; - # 17. Create a layered image with more packages than max layers. + # 18. Create a layered image with more packages than max layers. # coreutils and hello are part of the same layer bulk-layer = pkgs.dockerTools.buildLayeredImage { name = "bulk-layer"; @@ -289,7 +320,19 @@ rec { maxLayers = 2; }; - # 18. Create a "layered" image without nix store layers. This is not + # 19. Create a layered image with a base image and more packages than max + # layers. coreutils and hello are part of the same layer + layered-bulk-layer = pkgs.dockerTools.buildLayeredImage { + name = "layered-bulk-layer"; + tag = "latest"; + fromImage = two-layered-image; + contents = with pkgs; [ + coreutils hello + ]; + maxLayers = 4; + }; + + # 20. Create a "layered" image without nix store layers. This is not # recommended, but can be useful for base images in rare cases. no-store-paths = pkgs.dockerTools.buildLayeredImage { name = "no-store-paths"; @@ -321,7 +364,7 @@ rec { }; }; - # 19. Support files in the store on buildLayeredImage + # 21. Support files in the store on buildLayeredImage # See: https://github.com/NixOS/nixpkgs/pull/91084#issuecomment-653496223 filesInStore = pkgs.dockerTools.buildLayeredImageWithNixDb { name = "file-in-store"; @@ -341,7 +384,7 @@ rec { }; }; - # 20. Ensure that setting created to now results in a date which + # 22. Ensure that setting created to now results in a date which # isn't the epoch + 1 for layered images. unstableDateLayered = pkgs.dockerTools.buildLayeredImage { name = "unstable-date-layered"; diff --git a/pkgs/build-support/docker/stream_layered_image.py b/pkgs/build-support/docker/stream_layered_image.py index 60d67442c16..3e5781ba1c8 100644 --- a/pkgs/build-support/docker/stream_layered_image.py +++ b/pkgs/build-support/docker/stream_layered_image.py @@ -33,6 +33,7 @@ function does all this. import io import os +import re import sys import json import hashlib @@ -126,10 +127,85 @@ class ExtractChecksum: return (self._digest.hexdigest(), self._size) +FromImage = namedtuple("FromImage", ["tar", "manifest_json", "image_json"]) # Some metadata for a layer LayerInfo = namedtuple("LayerInfo", ["size", "checksum", "path", "paths"]) +def load_from_image(from_image_str): + """ + Loads the given base image, if any. + + from_image_str: Path to the base image archive. + + Returns: A 'FromImage' object with references to the loaded base image, + or 'None' if no base image was provided. + """ + if from_image_str is None: + return None + + base_tar = tarfile.open(from_image_str) + + manifest_json_tarinfo = base_tar.getmember("manifest.json") + with base_tar.extractfile(manifest_json_tarinfo) as f: + manifest_json = json.load(f) + + image_json_tarinfo = base_tar.getmember(manifest_json[0]["Config"]) + with base_tar.extractfile(image_json_tarinfo) as f: + image_json = json.load(f) + + return FromImage(base_tar, manifest_json, image_json) + + +def add_base_layers(tar, from_image): + """ + Adds the layers from the given base image to the final image. + + tar: 'tarfile.TarFile' object for new layers to be added to. + from_image: 'FromImage' object with references to the loaded base image. + """ + if from_image is None: + print("No 'fromImage' provided", file=sys.stderr) + return [] + + layers = from_image.manifest_json[0]["Layers"] + checksums = from_image.image_json["rootfs"]["diff_ids"] + layers_checksums = zip(layers, checksums) + + for num, (layer, checksum) in enumerate(layers_checksums, start=1): + layer_tarinfo = from_image.tar.getmember(layer) + checksum = re.sub(r"^sha256:", "", checksum) + + tar.addfile(layer_tarinfo, from_image.tar.extractfile(layer_tarinfo)) + path = layer_tarinfo.path + size = layer_tarinfo.size + + print("Adding base layer", num, "from", path, file=sys.stderr) + yield LayerInfo(size=size, checksum=checksum, path=path, paths=[path]) + + from_image.tar.close() + + +def overlay_base_config(from_image, final_config): + """ + Overlays the final image 'config' JSON on top of selected defaults from the + base image 'config' JSON. + + from_image: 'FromImage' object with references to the loaded base image. + final_config: 'dict' object of the final image 'config' JSON. + """ + if from_image is None: + return final_config + + base_config = from_image.image_json["config"] + + # Preserve environment from base image + final_env = base_config.get("Env", []) + final_config.get("Env", []) + if final_env: + final_config["Env"] = final_env + return final_config + + def add_layer_dir(tar, paths, store_dir, mtime): """ Appends given store paths to a TarFile object as a new layer. @@ -248,17 +324,21 @@ def main(): mtime = int(created.timestamp()) store_dir = conf["store_dir"] + from_image = load_from_image(conf["from_image"]) + with tarfile.open(mode="w|", fileobj=sys.stdout.buffer) as tar: layers = [] - for num, store_layer in enumerate(conf["store_layers"]): - print( - "Creating layer", num, - "from paths:", store_layer, - file=sys.stderr) + layers.extend(add_base_layers(tar, from_image)) + + start = len(layers) + 1 + for num, store_layer in enumerate(conf["store_layers"], start=start): + print("Creating layer", num, "from paths:", store_layer, + file=sys.stderr) info = add_layer_dir(tar, store_layer, store_dir, mtime=mtime) layers.append(info) - print("Creating the customisation layer...", file=sys.stderr) + print("Creating layer", len(layers) + 1, "with customisation...", + file=sys.stderr) layers.append( add_customisation_layer( tar, @@ -273,7 +353,7 @@ def main(): "created": datetime.isoformat(created), "architecture": conf["architecture"], "os": "linux", - "config": conf["config"], + "config": overlay_base_config(from_image, conf["config"]), "rootfs": { "diff_ids": [f"sha256:{layer.checksum}" for layer in layers], "type": "layers", diff --git a/pkgs/desktops/plasma-5/plasma-workspace/default.nix b/pkgs/desktops/plasma-5/plasma-workspace/default.nix index 69d7d508d50..b65bc7df8ed 100644 --- a/pkgs/desktops/plasma-5/plasma-workspace/default.nix +++ b/pkgs/desktops/plasma-5/plasma-workspace/default.nix @@ -53,9 +53,10 @@ mkDerivation { ./0002-absolute-wallpaper-install-dir.patch ]; + # QT_INSTALL_BINS refers to qtbase, and qdbus is in qttools postPatch = '' - substituteInPlace wallpapers/image/wallpaper.knsrc.cmake \ - --replace '@QtBinariesDir@/qdbus' ${getBin qttools}/bin/qdbus + substituteInPlace CMakeLists.txt \ + --replace 'query_qmake(QtBinariesDir QT_INSTALL_BINS)' 'set(QtBinariesDir "${lib.getBin qttools}/bin")' ''; NIX_CFLAGS_COMPILE = [ diff --git a/pkgs/development/libraries/zchunk/default.nix b/pkgs/development/libraries/zchunk/default.nix index a0d1378aa70..2037d815a81 100644 --- a/pkgs/development/libraries/zchunk/default.nix +++ b/pkgs/development/libraries/zchunk/default.nix @@ -1,17 +1,17 @@ -{ lib, stdenv +{ lib +, stdenv , fetchFromGitHub -, fetchpatch -, pkg-config +, argp-standalone +, curl , meson , ninja +, pkg-config , zstd -, curl -, argp-standalone }: stdenv.mkDerivation rec { pname = "zchunk"; - version = "1.1.8"; + version = "1.1.9"; outputs = [ "out" "lib" "dev" ]; @@ -19,7 +19,7 @@ stdenv.mkDerivation rec { owner = "zchunk"; repo = pname; rev = version; - sha256 = "0q1jafxh5nqgn2w5ciljkh8h46xma0qia8a5rj9m0pxixcacqj6q"; + hash = "sha256-MqnHtqOjLl6R5GZ4f2UX1iLoO9FUT2IfZlSN58wW8JA="; }; nativeBuildInputs = [ @@ -29,25 +29,23 @@ stdenv.mkDerivation rec { ]; buildInputs = [ - zstd curl + zstd ] ++ lib.optional stdenv.isDarwin argp-standalone; - # Darwin needs a patch for argp-standalone usage and differing endian.h location on macOS - # https://github.com/zchunk/zchunk/pull/35 - patches = [ - (fetchpatch { - name = "darwin-support.patch"; - url = "https://github.com/zchunk/zchunk/commit/f7db2ac0a95028a7f82ecb89862426bf53a69232.patch"; - sha256 = "0cm84gyii4ly6nsmagk15g9kbfa13rw395nqk3fdcwm0dpixlkh4"; - }) -]; - meta = with lib; { - description = "File format designed for highly efficient deltas while maintaining good compression"; homepage = "https://github.com/zchunk/zchunk"; + description = "File format designed for highly efficient deltas while maintaining good compression"; + longDescription = '' + zchunk is a compressed file format that splits the file into independent + chunks. This allows you to only download changed chunks when downloading a + new version of the file, and also makes zchunk files efficient over rsync. + + zchunk files are protected with strong checksums to verify that the file + you downloaded is, in fact, the file you wanted. + ''; license = licenses.bsd2; - maintainers = with maintainers; []; + maintainers = with maintainers; [ AndersonTorres ]; platforms = platforms.unix; }; } diff --git a/pkgs/development/libraries/zziplib/default.nix b/pkgs/development/libraries/zziplib/default.nix index 8cfec83af54..051af0bd43f 100644 --- a/pkgs/development/libraries/zziplib/default.nix +++ b/pkgs/development/libraries/zziplib/default.nix @@ -1,80 +1,64 @@ -{ lib, stdenv +{ lib +, stdenv +, fetchFromGitHub +, cmake , perl , pkg-config -, fetchFromGitHub -, fetchpatch -, zip -, unzip , python3 , xmlto +, zip , zlib }: stdenv.mkDerivation rec { pname = "zziplib"; - version = "0.13.71"; + version = "0.13.72"; src = fetchFromGitHub { owner = "gdraheim"; - repo = "zziplib"; + repo = pname; rev = "v${version}"; - sha256 = "P+7D57sc2oIABhk3k96aRILpGnsND5SLXHh2lqr9O4E="; + hash = "sha256-Ht3fBgdrTm4mCi5uhgQPNtpGzADoRVOpSuGPsIS6y0Q="; }; - patches = [ - # Install man pages - (fetchpatch { - url = "https://github.com/gdraheim/zziplib/commit/5583ccc7a247ee27556ede344e93d3ac1dc72e9b.patch"; - sha256 = "wVExEZN8Ml1/3GicB0ZYsLVS3KJ8BSz8i4Gu46naz1Y="; - excludes = [ "GNUmakefile" ]; - }) - - # Fix man page formatting - (fetchpatch { - url = "https://github.com/gdraheim/zziplib/commit/22ed64f13dc239f86664c60496261f544bce1088.patch"; - sha256 = "ScFVWLc4LQPqkcHn9HK/VkLula4b5HzuYl0b5vi4Ikc="; - }) - ]; - nativeBuildInputs = [ + cmake perl pkg-config - zip python3 xmlto + zip ]; - buildInputs = [ zlib ]; - checkInputs = [ - unzip + # test/zziptests.py requires network access + # (https://github.com/gdraheim/zziplib/issues/24) + cmakeFlags = [ + "-DZZIP_TESTCVE=OFF" + "-DBUILD_SHARED_LIBS=True" + "-DBUILD_STATIC_LIBS=False" + "-DBUILD_TESTS=OFF" + "-DMSVC_STATIC_RUNTIME=OFF" + "-DZZIPSDL=OFF" + "-DZZIPTEST=OFF" + "-DZZIPWRAP=OFF" + "-DBUILDTESTS=OFF" ]; - # tests are broken (https://github.com/gdraheim/zziplib/issues/20), - # and test/zziptests.py requires network access - # (https://github.com/gdraheim/zziplib/issues/24) - doCheck = false; - checkTarget = "check"; - meta = with lib; { + homepage = "https://github.com/gdraheim/zziplib"; description = "Library to extract data from files archived in a zip file"; - longDescription = '' - The zziplib library is intentionally lightweight, it offers the ability - to easily extract data from files archived in a single zip - file. Applications can bundle files into a single zip archive and - access them. The implementation is based only on the (free) subset of - compression with the zlib algorithm which is actually used by the - zip/unzip tools. + The zziplib library is intentionally lightweight, it offers the ability to + easily extract data from files archived in a single zip file. + Applications can bundle files into a single zip archive and access them. + The implementation is based only on the (free) subset of compression with + the zlib algorithm which is actually used by the zip/unzip tools. ''; - license = with licenses; [ lgpl2Plus mpl11 ]; - - homepage = "http://zziplib.sourceforge.net/"; - - maintainers = [ ]; + maintainers = with maintainers; [ AndersonTorres ]; platforms = python3.meta.platforms; }; } diff --git a/pkgs/development/python-modules/bitarray/default.nix b/pkgs/development/python-modules/bitarray/default.nix index b287e7be98e..64bfdb89efb 100644 --- a/pkgs/development/python-modules/bitarray/default.nix +++ b/pkgs/development/python-modules/bitarray/default.nix @@ -2,11 +2,11 @@ buildPythonPackage rec { pname = "bitarray"; - version = "1.7.1"; + version = "1.8.0"; src = fetchPypi { inherit pname version; - sha256 = "e4de977d708b7024760266d827b8285e4405dce4293f25508c4556970139018a"; + sha256 = "fe4444d92b17073bf1f9f24e3015a0e5bb70a645c47df93ef8a9ce8be33fcbad"; }; pythonImportsCheck = [ "bitarray" ]; diff --git a/pkgs/development/python-modules/loguru/default.nix b/pkgs/development/python-modules/loguru/default.nix index 458d2ca5032..8146f8b183e 100644 --- a/pkgs/development/python-modules/loguru/default.nix +++ b/pkgs/development/python-modules/loguru/default.nix @@ -1,19 +1,36 @@ -{ lib, stdenv, buildPythonPackage, fetchPypi, isPy27, colorama, pytestCheckHook }: +{ lib +, stdenv +, buildPythonPackage +, fetchPypi +, fetchpatch +, isPy27 +, colorama +, pytestCheckHook +, pythonAtLeast +}: buildPythonPackage rec { pname = "loguru"; version = "0.5.3"; - disabled = isPy27; + # python3.9 compatibility should be in the next release after 0.5.3 + disabled = isPy27 || pythonAtLeast "3.9"; src = fetchPypi { inherit pname version; sha256 = "b28e72ac7a98be3d28ad28570299a393dfcd32e5e3f6a353dec94675767b6319"; }; + patches = [ + # Fixes tests with pytest>=6.2.2. Will be part of the next release after 0.5.3 + (fetchpatch { + url = "https://github.com/Delgan/loguru/commit/31cf758ee9d22dbfa125f38153782fe20ac9dce5.patch"; + sha256 = "1lzbs8akg1s7s6xjl3samf4c4bpssqvwg5fn3mwlm4ysr7jd5y67"; + }) + ]; + checkInputs = [ pytestCheckHook colorama ]; - pytestFlagsArray = lib.optionals stdenv.isDarwin [ "--ignore=tests/test_multiprocessing.py" ]; - + disabledTestPaths = lib.optionals stdenv.isDarwin [ "tests/test_multiprocessing.py" ]; disabledTests = [ "test_time_rotation_reopening" "test_file_buffering" ] ++ lib.optionals stdenv.isDarwin [ "test_rotation_and_retention" "test_rotation_and_retention_timed_file" "test_renaming" "test_await_complete_inheritance" ]; @@ -21,6 +38,6 @@ buildPythonPackage rec { homepage = "https://github.com/Delgan/loguru"; description = "Python logging made (stupidly) simple"; license = licenses.mit; - maintainers = with maintainers; [ jakewaksbaum ]; + maintainers = with maintainers; [ jakewaksbaum rmcgibbo ]; }; } diff --git a/pkgs/development/python-modules/restview/default.nix b/pkgs/development/python-modules/restview/default.nix index acce48c45d0..b2fc2d9beae 100644 --- a/pkgs/development/python-modules/restview/default.nix +++ b/pkgs/development/python-modules/restview/default.nix @@ -7,38 +7,32 @@ , packaging , pygments , mock +, pytestCheckHook }: buildPythonPackage rec { pname = "restview"; - version = "2.9.1"; + version = "2.9.2"; src = fetchPypi { inherit pname version; - sha256 = "de87c84f19526bd4a76505f6d40b51b7bb03ca43b6067c93f82f1c7237ac9e84"; + sha256 = "1p1jgdvc04ws8kga3r0vrq3m0b52qw3clwyydl96a13wb3mrf03r"; }; - propagatedBuildInputs = [ docutils readme_renderer packaging pygments ]; - checkInputs = [ mock ]; - patches = [ - # fix tests after readme_renderer update - # TODO remove on next update (fetchpatch { - url = "https://github.com/mgedmin/restview/commit/541743ded13ae55dea4c437046984a5f13d06e8b.patch"; - sha256 = "031b1dlqx346bz7afpc011lslnq771lnxb6iy1l2285pph534bci"; + url = "https://github.com/mgedmin/restview/commit/a1ded30a87c65f3ce59a18497a7fc5099317c2be.patch"; + sha256 = "1ax7pih456a3nbj8qrrq7hqigbyag4ihzpn6bm0z4y74d0r3v8a5"; }) ]; - postPatch = '' - # dict order breaking tests - sed -i 's@@...@' src/restview/tests.py - ''; + propagatedBuildInputs = [ docutils readme_renderer packaging pygments ]; + checkInputs = [ mock pytestCheckHook ]; meta = { description = "ReStructuredText viewer"; homepage = "https://mg.pov.lt/restview/"; - license = lib.licenses.gpl2; + license = lib.licenses.gpl3Only; maintainers = with lib.maintainers; [ koral ]; }; } diff --git a/pkgs/development/tools/analysis/codeql/default.nix b/pkgs/development/tools/analysis/codeql/default.nix index 77992b9909c..49b711c2c19 100644 --- a/pkgs/development/tools/analysis/codeql/default.nix +++ b/pkgs/development/tools/analysis/codeql/default.nix @@ -12,7 +12,7 @@ stdenv.mkDerivation rec { pname = "codeql"; - version = "2.4.5"; + version = "2.4.6"; dontConfigure = true; dontBuild = true; @@ -20,7 +20,7 @@ stdenv.mkDerivation rec { src = fetchzip { url = "https://github.com/github/codeql-cli-binaries/releases/download/v${version}/codeql.zip"; - sha256 = "sha256-FM7fcjbZilp1spy0HxDhEAzs7Qe2r/HObKB80o4mSiw="; + sha256 = "sha256-lJ/N9oduWGZAc70wl7ATBd1mnaUkeTXAW/RfqbAthsI="; }; nativeBuildInputs = [ diff --git a/pkgs/development/tools/kubie/default.nix b/pkgs/development/tools/kubie/default.nix index 7f8a193551f..c00304c1ec5 100644 --- a/pkgs/development/tools/kubie/default.nix +++ b/pkgs/development/tools/kubie/default.nix @@ -2,16 +2,16 @@ rustPlatform.buildRustPackage rec { pname = "kubie"; - version = "0.12.1"; + version = "0.13.4"; src = fetchFromGitHub { rev = "v${version}"; owner = "sbstp"; repo = "kubie"; - sha256 = "sha256-y4/azFr2fngmUxQw3c2xAhAppYHeD6Bz7IvZ6GTdsEQ="; + sha256 = "sha256-ZD63Xtnw7qzTrzFxzzZ37N177/PnRaMEzBbhz7h/zCY="; }; - cargoSha256 = "sha256-/Vg3qojBWN2tp8QaKmHrzy3cDWlkT6067Wprcjlu31U="; + cargoSha256 = "sha256-c6veaasuwRtaO8TwHS0tNxjbBfekQOa52I9INcE1Jn0="; nativeBuildInputs = [ installShellFiles ]; diff --git a/pkgs/development/tools/minizinc/default.nix b/pkgs/development/tools/minizinc/default.nix index ad267e6bcdd..c1e0a356df3 100644 --- a/pkgs/development/tools/minizinc/default.nix +++ b/pkgs/development/tools/minizinc/default.nix @@ -1,6 +1,6 @@ { lib, stdenv, fetchFromGitHub, cmake, flex, bison }: let - version = "2.5.4"; + version = "2.5.5"; in stdenv.mkDerivation { pname = "minizinc"; @@ -12,7 +12,7 @@ stdenv.mkDerivation { owner = "MiniZinc"; repo = "libminizinc"; rev = version; - sha256 = "sha256-/vJyh2WdESimJTCASsg6xjVzG2EkL4V87B+xvIUBcMM="; + sha256 = "sha256-9z2E6KqOys9UUXlXWB4eDhg34kS3PhUB1Dd1F6iGYoE="; }; meta = with lib; { diff --git a/pkgs/misc/vim-plugins/generated.nix b/pkgs/misc/vim-plugins/generated.nix index 98fafe4bb7f..98c9363bd6f 100644 --- a/pkgs/misc/vim-plugins/generated.nix +++ b/pkgs/misc/vim-plugins/generated.nix @@ -65,12 +65,12 @@ let ale = buildVimPluginFrom2Nix { pname = "ale"; - version = "2021-03-21"; + version = "2021-03-23"; src = fetchFromGitHub { owner = "dense-analysis"; repo = "ale"; - rev = "f7852dbd0a063d6d82ee17a5057fea53cb79b21d"; - sha256 = "16cslwkc8kcr2z0crchl9w5p5vsbzfwpfa103wysyvq9d0q309xk"; + rev = "eb0ebe622102cc6da3d7e943a3b739db7b6ed216"; + sha256 = "10dp9xq8k0svr7z117a3bha4rvlgsx1j8qqdfnza94rbh8zy096k"; }; meta.homepage = "https://github.com/dense-analysis/ale/"; }; @@ -389,12 +389,12 @@ let chadtree = buildVimPluginFrom2Nix { pname = "chadtree"; - version = "2021-03-22"; + version = "2021-03-23"; src = fetchFromGitHub { owner = "ms-jpq"; repo = "chadtree"; - rev = "8f7238502c742fe098e0d681c3597452aa053b89"; - sha256 = "1cppnzf1slzxf3kb24pg18r2izdpd6mylrhc49rla083mr7hqx15"; + rev = "18e39f1550980bc21761018e191742e66d86854d"; + sha256 = "12grx41z5qf7p4ls56ww8rai0nfcl01v8iy1vayx463lb7dsvlxm"; }; meta.homepage = "https://github.com/ms-jpq/chadtree/"; }; @@ -545,12 +545,12 @@ let coc-nvim = buildVimPluginFrom2Nix { pname = "coc-nvim"; - version = "2021-03-22"; + version = "2021-03-23"; src = fetchFromGitHub { owner = "neoclide"; repo = "coc.nvim"; - rev = "3b3c5f88bcb25c3d68351f417fa5e8425a3a3142"; - sha256 = "1fkgyb0a5wirndk99d9ajdvxaiipgnv3r0cmvzldvy6ps5ljxabm"; + rev = "e916ef84b95897a713773642bc768a88e4b8e449"; + sha256 = "0svmsacpa6wvkdcdb4jb7lc7zdc31r9mqdvznskhgwzmjlhnbq8d"; }; meta.homepage = "https://github.com/neoclide/coc.nvim/"; }; @@ -942,12 +942,12 @@ let denite-nvim = buildVimPluginFrom2Nix { pname = "denite-nvim"; - version = "2021-03-18"; + version = "2021-03-23"; src = fetchFromGitHub { owner = "Shougo"; repo = "denite.nvim"; - rev = "8c44de41ec46c44f84dd70907a5763112df2eacb"; - sha256 = "1y235ap3hchkf3hc85frcjl5kwr56lz3vw12qzhhzhrl2k7k5ziw"; + rev = "b0cc470c63b0ed3b6497f659588b004ed05872ee"; + sha256 = "15ngimlnprp73fy3sa9vz39avq75mcqhr90ygj3drjj1d33vk3f3"; }; meta.homepage = "https://github.com/Shougo/denite.nvim/"; }; @@ -1370,8 +1370,8 @@ let src = fetchFromGitHub { owner = "fenetikm"; repo = "falcon"; - rev = "2ba0036e19adbefaf0beffe545e349964a68cc0a"; - sha256 = "0pg3i1dvbjv746szki36yszz6bd82pgzvfyr3ayxf7lih4pjbxmj"; + rev = "f6be01e8642dc8ccc7ed1f37b23f4b0dfa2c6f8c"; + sha256 = "1w4ld5dvy0jxgjvp6yf8qibc4x82hn490vfg0hpln67nr6mhq1iw"; }; meta.homepage = "https://github.com/fenetikm/falcon/"; }; @@ -1643,12 +1643,12 @@ let gitsigns-nvim = buildVimPluginFrom2Nix { pname = "gitsigns-nvim"; - version = "2021-03-17"; + version = "2021-03-23"; src = fetchFromGitHub { owner = "lewis6991"; repo = "gitsigns.nvim"; - rev = "18d0a4bab12193460e6443d02d22218b5ce05a35"; - sha256 = "0qizdphmady0baz5wgi92vdy9wbz1npgahsx0kmpx8c4vfvcdv10"; + rev = "6bc3dba1a73466282215491d9ede85261199b7f2"; + sha256 = "0qfpadjv4qd92kgjvwga285404wzzy0q4vylbdfwngf9s29bpj40"; }; meta.homepage = "https://github.com/lewis6991/gitsigns.nvim/"; }; @@ -1811,12 +1811,12 @@ let hop-nvim = buildVimPluginFrom2Nix { pname = "hop-nvim"; - version = "2021-03-18"; + version = "2021-03-23"; src = fetchFromGitHub { owner = "phaazon"; repo = "hop.nvim"; - rev = "8d1a199236590a6e6667a45e0084d26aaeb32fb6"; - sha256 = "1skya8iqkf9bblpdf1vvkl73i9rqm0lqd40114a8ppk8vbqjp53x"; + rev = "4c6d776005eed4ebc66bf3af8a336d004ae238a3"; + sha256 = "17dcvi3jlwzm11lykjz3dh2ckbbmdp221y0d7wl0xq12s2g1v4pg"; }; meta.homepage = "https://github.com/phaazon/hop.nvim/"; }; @@ -2340,12 +2340,12 @@ let lualine-nvim = buildVimPluginFrom2Nix { pname = "lualine-nvim"; - version = "2021-03-19"; + version = "2021-03-23"; src = fetchFromGitHub { owner = "hoob3rt"; repo = "lualine.nvim"; - rev = "f80d5adb415812484c1b86692846feb3a8ce7e46"; - sha256 = "0gp0nw173ryn6mn9z98jvrk9y7fyhm08r90qc1zv7z85lngd9226"; + rev = "7bf5076ece80cde0a48dac403799a89c8caefd1d"; + sha256 = "0zc1s75dqxb1dxma59mlc88lf74i0mpbz15khcfv1pfp5cr3hhih"; }; meta.homepage = "https://github.com/hoob3rt/lualine.nvim/"; }; @@ -2412,12 +2412,12 @@ let minimap-vim = buildVimPluginFrom2Nix { pname = "minimap-vim"; - version = "2021-03-20"; + version = "2021-03-23"; src = fetchFromGitHub { owner = "wfxr"; repo = "minimap.vim"; - rev = "adc19481ceececc53b4a6e3157bae7ebf7b9bb66"; - sha256 = "14hjfnqh9wvbhgf55arjhwbcsm1d91x9mhglz2qdmln6nr66ayz4"; + rev = "31e22971ba5f5f3e5955fa8e2247b6cd22c3f7b1"; + sha256 = "19hg4nnwdr6mj9wyrcapg91vm2bzvcsfbvjkirdsxp2v3ca83w2i"; }; meta.homepage = "https://github.com/wfxr/minimap.vim/"; }; @@ -2724,12 +2724,12 @@ let neogit = buildVimPluginFrom2Nix { pname = "neogit"; - version = "2021-03-21"; + version = "2021-03-23"; src = fetchFromGitHub { owner = "TimUntersberger"; repo = "neogit"; - rev = "0b969a8f6a7d38aed32ca7bddfeb19f80a2b1a29"; - sha256 = "1x9q4kl5595dq7ydpv21apbff5pr15diyww8cd600ibjwybmlm8v"; + rev = "537cc6e1757c41bd75717ebd4421c27b7ebe9205"; + sha256 = "0s0z2qmsnqj5mgsqb6x4cwh507sc3y4ahqvzc3bijd224xff97b1"; }; meta.homepage = "https://github.com/TimUntersberger/neogit/"; }; @@ -3022,6 +3022,18 @@ let meta.homepage = "https://github.com/kevinhwang91/nvim-bqf/"; }; + nvim-bufferline-lua = buildVimPluginFrom2Nix { + pname = "nvim-bufferline-lua"; + version = "2021-03-22"; + src = fetchFromGitHub { + owner = "akinsho"; + repo = "nvim-bufferline.lua"; + rev = "437aa7cacc8eb6b7840e298f55666f4a6dea20e7"; + sha256 = "15df8l8mx9cbm5mirn511d965nlxh5gj17d0b6rffxjlzc5ciai3"; + }; + meta.homepage = "https://github.com/akinsho/nvim-bufferline.lua/"; + }; + nvim-cm-racer = buildVimPluginFrom2Nix { pname = "nvim-cm-racer"; version = "2017-07-27"; @@ -3036,12 +3048,12 @@ let nvim-compe = buildVimPluginFrom2Nix { pname = "nvim-compe"; - version = "2021-03-21"; + version = "2021-03-23"; src = fetchFromGitHub { owner = "hrsh7th"; repo = "nvim-compe"; - rev = "08dbc5f47d2be27cbc92c9684ec876b1eb778a4f"; - sha256 = "09fnzidcmknkrmls3wmjfa6drp5i8hmcbfs3hrvvp8jywgfyrpr3"; + rev = "777b98390da6638583b0e7ba2316aa1257462cad"; + sha256 = "1ggh7038kzc61ihjbf8zvq1vxgjg9hpwqvjj979mf3qzrznrd89i"; }; meta.homepage = "https://github.com/hrsh7th/nvim-compe/"; }; @@ -3060,12 +3072,12 @@ let nvim-dap = buildVimPluginFrom2Nix { pname = "nvim-dap"; - version = "2021-03-15"; + version = "2021-03-22"; src = fetchFromGitHub { owner = "mfussenegger"; repo = "nvim-dap"; - rev = "492849bf57425d005c4a13ee2a5d6f3c8207cc02"; - sha256 = "1jspnzkb9371jfkppj77f95zccbnyw6gn0i4jlqpbci2p0ppp0gz"; + rev = "f5180887cbf0505f64e43516072e74b74652a5f9"; + sha256 = "1cy36pxj6kfggjds8bb13ggj91c4vq3b37i78pjyh8jynyfd0va7"; }; meta.homepage = "https://github.com/mfussenegger/nvim-dap/"; }; @@ -3132,12 +3144,12 @@ let nvim-jdtls = buildVimPluginFrom2Nix { pname = "nvim-jdtls"; - version = "2021-03-20"; + version = "2021-03-22"; src = fetchFromGitHub { owner = "mfussenegger"; repo = "nvim-jdtls"; - rev = "c4199f88d5f6bf269b91ae5d775a082aef05f9bd"; - sha256 = "18cnhhybhzw20l6v4rxzk5a5jcgv8l7jhbmzl529rd9jdhxqikfa"; + rev = "fede58fdb67c451697bd1028bf084d4f0fbfc38b"; + sha256 = "052rvsl0prhvbic350x1q5ma5c8km8sf3y92gng4sc2wj37fs2k8"; }; meta.homepage = "https://github.com/mfussenegger/nvim-jdtls/"; }; @@ -3156,12 +3168,12 @@ let nvim-lspconfig = buildVimPluginFrom2Nix { pname = "nvim-lspconfig"; - version = "2021-03-20"; + version = "2021-03-22"; src = fetchFromGitHub { owner = "neovim"; repo = "nvim-lspconfig"; - rev = "00e9a7450eac88121768df21fde7d21f43de7529"; - sha256 = "0qqr6zz4a1i13hmj4hvcx08m5ipy28iz3hlaa239jf5yx9rw0y1h"; + rev = "487ea4a2393fd6d3fc1bf5d198e4f4583c5082ac"; + sha256 = "1dr0my4y7qvy7d7ypkz4d0d1p223092vsn5wfpj4qv84k84ilpp8"; }; meta.homepage = "https://github.com/neovim/nvim-lspconfig/"; }; @@ -3204,12 +3216,12 @@ let nvim-scrollview = buildVimPluginFrom2Nix { pname = "nvim-scrollview"; - version = "2021-03-21"; + version = "2021-03-23"; src = fetchFromGitHub { owner = "dstein64"; repo = "nvim-scrollview"; - rev = "693b93d273c4c0c0670d364cab9f3ab880d2f306"; - sha256 = "04dsjc6f8ag0vfr4sa6nmpfqimx48cvadwv7dd3m9g2mwivkfgyi"; + rev = "902f24503ab7a754be2a1c483de1cd3428bd85ec"; + sha256 = "0b31lpzdx1z88fm60p7d5gs442h4apm2n9h098n4j0ghcs5ppvnf"; }; meta.homepage = "https://github.com/dstein64/nvim-scrollview/"; }; @@ -3228,24 +3240,24 @@ let nvim-tree-lua = buildVimPluginFrom2Nix { pname = "nvim-tree-lua"; - version = "2021-03-16"; + version = "2021-03-23"; src = fetchFromGitHub { owner = "kyazdani42"; repo = "nvim-tree.lua"; - rev = "f7ad4ce5f4c93c91aca00f0d9f10316c98471798"; - sha256 = "0l7ixschycw3lvg488bxgbbzsba59k0zkm8yrjdh63dp2nk2p2kj"; + rev = "e0b9882a8a8ecce8b58076091217d3643f215da3"; + sha256 = "1i8mqa45gg0lagcd4q5qwp97zlynkdw42ajw0wh8r92i5bs9crd8"; }; meta.homepage = "https://github.com/kyazdani42/nvim-tree.lua/"; }; nvim-treesitter = buildVimPluginFrom2Nix { pname = "nvim-treesitter"; - version = "2021-03-22"; + version = "2021-03-23"; src = fetchFromGitHub { owner = "nvim-treesitter"; repo = "nvim-treesitter"; - rev = "600509aad6c3e38c45a0f67802ede5d2204e0250"; - sha256 = "0j92ayfrlapgh09mz9rxfjzxag2kjmljd2qkbv54jl5dzr6p0f3q"; + rev = "09045354c0245ca866104c526bc57c2a06d7f381"; + sha256 = "182jvkwixmv1i39npvxkj0nr19cazqkab1kbprx7282dad68x30b"; }; meta.homepage = "https://github.com/nvim-treesitter/nvim-treesitter/"; }; @@ -3288,24 +3300,24 @@ let nvim-ts-rainbow = buildVimPluginFrom2Nix { pname = "nvim-ts-rainbow"; - version = "2021-03-22"; + version = "2021-03-23"; src = fetchFromGitHub { owner = "p00f"; repo = "nvim-ts-rainbow"; - rev = "4c9043e117bfa5ea8e4d5b04b60b2e29c0548e14"; - sha256 = "1ada87qkka1bsjdy52xqcnj5rmd9fl8q2v0km1pml3lcjyi0zdf5"; + rev = "f61093c56a53c6790b142f76bdfaa476f497b93f"; + sha256 = "1wzg1y0gksprdxhww0vcswfa0imkkrnhczljhlb94lrrmknv3nxv"; }; meta.homepage = "https://github.com/p00f/nvim-ts-rainbow/"; }; nvim-web-devicons = buildVimPluginFrom2Nix { pname = "nvim-web-devicons"; - version = "2021-03-10"; + version = "2021-03-23"; src = fetchFromGitHub { owner = "kyazdani42"; repo = "nvim-web-devicons"; - rev = "1fb0962b8c4a217eec8166b03d683aa070115ed7"; - sha256 = "1rqswcjqrg6ckp7vyzqlncfabkggnhjvp3b0sq7y2g333z925sjm"; + rev = "6e32d113d848c76ddbcc824038244657f170a97a"; + sha256 = "02m8bsq7172sm9vkq3shh87xv4c3jxkgvhwhd3vv0na86kl9sqd6"; }; meta.homepage = "https://github.com/kyazdani42/nvim-web-devicons/"; }; @@ -3420,12 +3432,12 @@ let packer-nvim = buildVimPluginFrom2Nix { pname = "packer-nvim"; - version = "2021-03-15"; + version = "2021-03-22"; src = fetchFromGitHub { owner = "wbthomason"; repo = "packer.nvim"; - rev = "6d7be3232ed0dcbbd040bf92ba70b997fe4fd840"; - sha256 = "0k1ydkplqpizyqn56bdwhpsdib384ikv2lqfmk8j11r7p6m0xvir"; + rev = "77cd1d1e0cfcb582b210d75745594f4fb60d3418"; + sha256 = "0yhdxh6768z4dalpmzhhypnjfx3mjx7d6r722lv9g15xg7i1lg3q"; }; meta.homepage = "https://github.com/wbthomason/packer.nvim/"; }; @@ -3504,12 +3516,12 @@ let playground = buildVimPluginFrom2Nix { pname = "playground"; - version = "2021-02-17"; + version = "2021-03-22"; src = fetchFromGitHub { owner = "nvim-treesitter"; repo = "playground"; - rev = "444eab728ecaf337629a45a733535e94a3efc04a"; - sha256 = "0r10fmk90wdc9hj3kdfkb93vvw1kdxwkl20f9zs3rfs5vs7p9i97"; + rev = "d96cef521d22afd1a409449a890f20f50b436ee1"; + sha256 = "1j1iqzi9q8fnl02hvazl8szg84iz8dqy0n52ngh1lvl78s9qa393"; }; meta.homepage = "https://github.com/nvim-treesitter/playground/"; }; @@ -3985,12 +3997,12 @@ let sonokai = buildVimPluginFrom2Nix { pname = "sonokai"; - version = "2021-02-28"; + version = "2021-03-22"; src = fetchFromGitHub { owner = "sainnhe"; repo = "sonokai"; - rev = "86298232f4f5ab418d5d9d18a336d7ab8b167b68"; - sha256 = "060k664gm4857nfmxaj0v6sz50mb3y9v8489jnv1bhqplzqf8gmy"; + rev = "78f1b14ad18b043eb888a173f4c431dbf79462d8"; + sha256 = "0spnpzr874ad9jpawcgydfm242wq55ychcky14f1qa09svsrdiv0"; }; meta.homepage = "https://github.com/sainnhe/sonokai/"; }; @@ -4238,12 +4250,12 @@ let tagbar = buildVimPluginFrom2Nix { pname = "tagbar"; - version = "2021-02-18"; + version = "2021-03-23"; src = fetchFromGitHub { owner = "preservim"; repo = "tagbar"; - rev = "51ff7a05404e2f5c83799dd6c38134ed4aaca85c"; - sha256 = "0i7qzn3vlvjjd5qvf230r7aaqz84rn30zkn643fdvpni7pxfywdv"; + rev = "f6012cb65da4bda46b0779a36840df36ad01483e"; + sha256 = "08vb3ffm1f47q5gxyqmmfv75x12001qpkqml7v612wnnfpclcqf5"; }; meta.homepage = "https://github.com/preservim/tagbar/"; }; @@ -5248,12 +5260,12 @@ let vim-commentary = buildVimPluginFrom2Nix { pname = "vim-commentary"; - version = "2019-11-18"; + version = "2021-03-23"; src = fetchFromGitHub { owner = "tpope"; repo = "vim-commentary"; - rev = "f8238d70f873969fb41bf6a6b07ca63a4c0b82b1"; - sha256 = "09d81q9na7pvvrmxxqy09ffdzsx5v5dikinb704c9wm4ys2bidr9"; + rev = "349340debb34f6302931f0eb7139b2c11dfdf427"; + sha256 = "01lpfcn2hmvxddcf97f4qx5vksxj1hwrxb0c8ri59z9lb9z2hgjd"; }; meta.homepage = "https://github.com/tpope/vim-commentary/"; }; @@ -5764,12 +5776,12 @@ let vim-floaterm = buildVimPluginFrom2Nix { pname = "vim-floaterm"; - version = "2021-03-17"; + version = "2021-03-23"; src = fetchFromGitHub { owner = "voldikss"; repo = "vim-floaterm"; - rev = "2d9107b1e1ceb3d4f118647f2cd5f9165172ccf9"; - sha256 = "1ja58d2x8a5af7vhvbjp8x7l4bzbvndr2nd97p115q89l2zy6ayp"; + rev = "a1403fd295edeffdc2e387f9308dc4392f057e68"; + sha256 = "1dc1169lwz1wjgqp27g8wa37yqsvc4fgmrcprc3ys4r3s9m6y5m6"; }; meta.homepage = "https://github.com/voldikss/vim-floaterm/"; }; @@ -5824,12 +5836,12 @@ let vim-fugitive = buildVimPluginFrom2Nix { pname = "vim-fugitive"; - version = "2021-03-21"; + version = "2021-03-23"; src = fetchFromGitHub { owner = "tpope"; repo = "vim-fugitive"; - rev = "58d2b25836f420cf2fe20cc0b6f988165ae33782"; - sha256 = "0550dq20axl1qj6rasws2hsar7x4kjx9fspqzmkisv4wzrxr1kp5"; + rev = "857496c32f02ebe74e821bdd2240aafc1455f8ea"; + sha256 = "11kyccfmcm7jpvaidd84wdn5vypg9lcdpkpmy2hy7k23gg7hzpza"; }; meta.homepage = "https://github.com/tpope/vim-fugitive/"; }; @@ -5944,12 +5956,12 @@ let vim-go = buildVimPluginFrom2Nix { pname = "vim-go"; - version = "2021-03-21"; + version = "2021-03-22"; src = fetchFromGitHub { owner = "fatih"; repo = "vim-go"; - rev = "a60ff48be1d57991866320886569d012cdfb9e6f"; - sha256 = "1w3cbvdl08vf7d9w4d3vaw3l4ccvzvgfkamk7qxanmcg2vd0k1rg"; + rev = "00c5f2dad170131c0c850dbf331d63ddf515116d"; + sha256 = "07ckmqxl25hzv10iarj6xdhg65q8450zriqc9wd6c2hlldj45ys3"; }; meta.homepage = "https://github.com/fatih/vim-go/"; }; @@ -6594,12 +6606,12 @@ let vim-lsc = buildVimPluginFrom2Nix { pname = "vim-lsc"; - version = "2021-03-21"; + version = "2021-03-23"; src = fetchFromGitHub { owner = "natebosch"; repo = "vim-lsc"; - rev = "d2b394c0033014288daac317c32918bed469ff66"; - sha256 = "0a8hd20v5q3bjq5pcs8p708f5jmh1y87aqa0f7ip4snldnf6gq2d"; + rev = "2f0cbbfb8ea8997b408e447a2bc9554a3de33617"; + sha256 = "1y3r5a5mcjf8dp0pkmhgnbay10hh48w1b3wd795wwbm6nx4izjjq"; }; meta.homepage = "https://github.com/natebosch/vim-lsc/"; }; @@ -6919,12 +6931,12 @@ let vim-obsession = buildVimPluginFrom2Nix { pname = "vim-obsession"; - version = "2020-01-19"; + version = "2021-03-22"; src = fetchFromGitHub { owner = "tpope"; repo = "vim-obsession"; - rev = "96a3f837c112cb64e0a9857b69f6d6a71041155e"; - sha256 = "11h7jyg7fhjmq3pmpc93nrsxm175ra14407rs3558h8p04snc159"; + rev = "82c9ac5e130c92a46e043dd9cd9e5b48d15e286d"; + sha256 = "0lfcba8sk25l5yp3agh6pwniddf8jx627ikpr8i2z9ary2fqsj98"; }; meta.homepage = "https://github.com/tpope/vim-obsession/"; }; @@ -7723,12 +7735,12 @@ let vim-snippets = buildVimPluginFrom2Nix { pname = "vim-snippets"; - version = "2021-03-15"; + version = "2021-03-22"; src = fetchFromGitHub { owner = "honza"; repo = "vim-snippets"; - rev = "a8ac81b8922ac621e7043813d98e69ad0ac265a4"; - sha256 = "0gl77mnajzvmnxwnbzb5fqzzljb59lbfv23gzbz1h493gfm0f04n"; + rev = "164bc3aa42feaa3c1deec84f7a10840418aec300"; + sha256 = "0snzmjl4qiw6598a3ajc7v6l4q35wxf8b9lklk47pmfmalvril6w"; }; meta.homepage = "https://github.com/honza/vim-snippets/"; }; @@ -7807,12 +7819,12 @@ let vim-startuptime = buildVimPluginFrom2Nix { pname = "vim-startuptime"; - version = "2021-02-23"; + version = "2021-03-22"; src = fetchFromGitHub { owner = "dstein64"; repo = "vim-startuptime"; - rev = "af70d17a863c9a33def9cafbb3911195a571c686"; - sha256 = "078xq6bwkbwsjajyq3c9bn8b3r0da6j70vp1ba934a6jjdv6vrj4"; + rev = "cee157ee4f73ddacfe1a70bb833b96f7a47a10c2"; + sha256 = "1y049vbjhsg80am0hxyrcq0d0p7qfyvb1z38nc7yd7bcgwsqc5ac"; }; meta.homepage = "https://github.com/dstein64/vim-startuptime/"; }; @@ -8528,12 +8540,12 @@ let vimspector = buildVimPluginFrom2Nix { pname = "vimspector"; - version = "2021-03-20"; + version = "2021-03-22"; src = fetchFromGitHub { owner = "puremourning"; repo = "vimspector"; - rev = "35e5b3d56e193ee6129eabedcd48fd17b8293b2d"; - sha256 = "0njs7bn3hzr44sn04lg44baia5khpxra0l1llshx42bkdidcj1s1"; + rev = "054ea35428e5e8d6abe12b6a535a3b0426d4874e"; + sha256 = "0cx35hbyhrzmbfzsikbpa4jh0gr3sbdhk27v2nsbwj4i3rg9767p"; fetchSubmodules = true; }; meta.homepage = "https://github.com/puremourning/vimspector/"; @@ -8541,12 +8553,12 @@ let vimtex = buildVimPluginFrom2Nix { pname = "vimtex"; - version = "2021-03-21"; + version = "2021-03-23"; src = fetchFromGitHub { owner = "lervag"; repo = "vimtex"; - rev = "4b9e69dc5e817c3436843ee0cb431e59fa5705b0"; - sha256 = "1s2h2bgd751jf7vj9dr1756g7gxdx3b7pwx49686273ibv1spnwf"; + rev = "3109f140196716b3b3a430f06df35723d85f991d"; + sha256 = "1n44sg35xm1jc70wpjgc5xjf8h6hrpa2f9jwq6x3dcrppj781naq"; }; meta.homepage = "https://github.com/lervag/vimtex/"; }; @@ -8722,12 +8734,12 @@ let YouCompleteMe = buildVimPluginFrom2Nix { pname = "YouCompleteMe"; - version = "2021-03-20"; + version = "2021-03-22"; src = fetchFromGitHub { owner = "ycm-core"; repo = "YouCompleteMe"; - rev = "3352684bfb6a08be8e864a46b0773e459d4d201f"; - sha256 = "03mqrprmiain4n9aw5388msq4smczw1avcls71rj0c7igzpdc4vw"; + rev = "ed423e8a1d2a5842a126d33b824ad3b65f85f3ba"; + sha256 = "19c238sdc6i3ky374v52g13csnbmdcm9d97iji6fmklmzsyrq4cr"; fetchSubmodules = true; }; meta.homepage = "https://github.com/ycm-core/YouCompleteMe/"; @@ -8771,12 +8783,12 @@ let zephyr-nvim = buildVimPluginFrom2Nix { pname = "zephyr-nvim"; - version = "2021-03-18"; + version = "2021-03-23"; src = fetchFromGitHub { owner = "glepnir"; repo = "zephyr-nvim"; - rev = "05315a214fc0b4681e596cbcb40045d54564ff8c"; - sha256 = "0bapbwyvvbvqd8ggcyns2y5iya44jvb0jxq14xh5qfnxiycrwrgi"; + rev = "79e273ed8ff386a81e6a88ae888ec6d878a9dcbc"; + sha256 = "00x0b2lwrfkmny6rhwjrb1kyp2lai597f6f62whhwgw7iq9j5b5k"; }; meta.homepage = "https://github.com/glepnir/zephyr-nvim/"; }; diff --git a/pkgs/misc/vim-plugins/vim-plugin-names b/pkgs/misc/vim-plugins/vim-plugin-names index b72aeb0d10f..d794f02fbe8 100644 --- a/pkgs/misc/vim-plugins/vim-plugin-names +++ b/pkgs/misc/vim-plugins/vim-plugin-names @@ -3,6 +3,7 @@ aca/completion-tabnine ackyshake/Spacegray.vim@main airblade/vim-gitgutter airblade/vim-rooter +akinsho/nvim-bufferline.lua aklt/plantuml-syntax altercation/vim-colors-solarized alvan/vim-closetag diff --git a/pkgs/shells/mksh/default.nix b/pkgs/shells/mksh/default.nix index c10537959d7..360380e19b3 100644 --- a/pkgs/shells/mksh/default.nix +++ b/pkgs/shells/mksh/default.nix @@ -1,4 +1,8 @@ -{ lib, stdenv, fetchurl }: +{ lib +, stdenv +, fetchurl +, installShellFiles +}: stdenv.mkDerivation rec { pname = "mksh"; @@ -6,20 +10,30 @@ stdenv.mkDerivation rec { src = fetchurl { urls = [ - "https://www.mirbsd.org/MirOS/dist/mir/mksh/mksh-R${version}.tgz" - "http://pub.allbsd.org/MirOS/dist/mir/mksh/mksh-R${version}.tgz" + "https://www.mirbsd.org/MirOS/dist/mir/mksh/${pname}-R${version}.tgz" + "http://pub.allbsd.org/MirOS/dist/mir/mksh/${pname}-R${version}.tgz" ]; - sha256 = "01n5ggw33bw4jv4d3148wlw9n4aj7vdn3ffnc66c9w9pldjidbkp"; + hash = "sha256-d64WZaM38cSMYda5Yds+UhGbOOWIhNHIloSvMfh7xQY="; }; + nativeBuildInputs = [ + installShellFiles + ]; + dontConfigure = true; - buildPhase = "sh ./Build.sh -r"; + buildPhase = '' + runHook preBuild + sh ./Build.sh -r + runHook postBuild + ''; installPhase = '' - install -D -m 755 mksh $out/bin/mksh - install -D -m 644 mksh.1 $out/share/man/man1/mksh.1 - install -D -m 644 dot.mkshrc $out/share/mksh/mkshrc + runHook preInstall + install -D mksh $out/bin/mksh + install -D dot.mkshrc $out/share/mksh/mkshrc + installManPage mksh.1 + runHook postInstall ''; meta = with lib; { @@ -32,7 +46,7 @@ stdenv.mkDerivation rec { systems. ''; homepage = "https://www.mirbsd.org/mksh.htm"; - license = licenses.bsd3; + license = with licenses; [ miros isc unicode-dfs-2016 ]; maintainers = with maintainers; [ AndersonTorres joachifm ]; platforms = platforms.unix; }; @@ -41,3 +55,5 @@ stdenv.mkDerivation rec { shellPath = "/bin/mksh"; }; } +# TODO [ AndersonTorres ]: lksh +# TODO [ AndersonTorres ]: a more accurate licensing info diff --git a/pkgs/stdenv/generic/make-derivation.nix b/pkgs/stdenv/generic/make-derivation.nix index 19c3d8965a7..2b89b37f786 100644 --- a/pkgs/stdenv/generic/make-derivation.nix +++ b/pkgs/stdenv/generic/make-derivation.nix @@ -106,7 +106,12 @@ in rec { ++ depsTargetTarget ++ depsTargetTargetPropagated) == 0; dontAddHostSuffix = attrs ? outputHash && !noNonNativeDeps || (stdenv.noCC or false); supportedHardeningFlags = [ "fortify" "stackprotector" "pie" "pic" "strictoverflow" "format" "relro" "bindnow" ]; - defaultHardeningFlags = if stdenv.hostPlatform.isMusl + # Musl-based platforms will keep "pie", other platforms will not. + defaultHardeningFlags = if stdenv.hostPlatform.isMusl && + # Except when: + # - static aarch64, where compilation works, but produces segfaulting dynamically linked binaries. + # - static armv7l, where compilation fails. + !((stdenv.hostPlatform.isAarch64 || stdenv.hostPlatform.isAarch32) && stdenv.hostPlatform.isStatic) then supportedHardeningFlags else lib.remove "pie" supportedHardeningFlags; enabledHardeningOptions = diff --git a/pkgs/tools/admin/salt/default.nix b/pkgs/tools/admin/salt/default.nix index 9a2d8e52fd9..7df6e94e46b 100644 --- a/pkgs/tools/admin/salt/default.nix +++ b/pkgs/tools/admin/salt/default.nix @@ -7,11 +7,11 @@ }: python3.pkgs.buildPythonApplication rec { pname = "salt"; - version = "3002.5"; + version = "3002.6"; src = python3.pkgs.fetchPypi { inherit pname version; - sha256 = "1bqranhanxcxjc1qcc6cm95f4xxag0ic9g61dq352hqh6m1l1ay8"; + sha256 = "/8R4VpNj4dF7ajoMQh6q6cB5u+q8THcloiLQ+/kDoKU="; }; propagatedBuildInputs = with python3.pkgs; [ diff --git a/pkgs/top-level/kodi-packages.nix b/pkgs/top-level/kodi-packages.nix index 03d70a32f6a..38d1ed6b86c 100644 --- a/pkgs/top-level/kodi-packages.nix +++ b/pkgs/top-level/kodi-packages.nix @@ -46,6 +46,8 @@ let self = rec { # addon packages + a4ksubtitles = callPackage ../applications/video/kodi-packages/a4ksubtitles { }; + controllers = { default = callPackage ../applications/video/kodi-packages/controllers { controller = "default"; };