Merge master into staging-next

This commit is contained in:
github-actions[bot] 2021-03-24 00:41:10 +00:00 committed by GitHub
commit 2417360191
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
25 changed files with 539 additions and 261 deletions

View file

@ -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 *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_ `contents` _optional_
: Top level paths in the container. Either a single derivation, or a list of derivations. : Top level paths in the container. Either a single derivation, or a list of derivations.

View file

@ -24,7 +24,7 @@ let
Type = "oneshot"; Type = "oneshot";
User = "acme"; User = "acme";
Group = mkDefault "acme"; Group = mkDefault "acme";
UMask = 0023; UMask = 0022;
StateDirectoryMode = 750; StateDirectoryMode = 750;
ProtectSystem = "full"; ProtectSystem = "full";
PrivateTmp = true; PrivateTmp = true;
@ -303,9 +303,15 @@ let
} }
${optionalString (data.webroot != null) '' ${optionalString (data.webroot != null) ''
# Ensure the webroot exists # Ensure the webroot exists. Fixing group is required in case configuration was changed between runs.
mkdir -p '${data.webroot}/.well-known/acme-challenge' # Lego will fail if the webroot does not exist at all.
chown 'acme:${data.group}' ${data.webroot}/{.well-known,.well-known/acme-challenge} (
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 echo '${domainHash}' > domainhash.txt

View file

@ -253,7 +253,7 @@ in import ./make-test-python.nix ({ lib, ... }: {
def check_connection(node, domain, retries=3): def check_connection(node, domain, retries=3):
assert retries >= 0 assert retries >= 0, f"Failed to connect to https://{domain}"
result = node.succeed( result = node.succeed(
"openssl s_client -brief -verify 2 -CAfile /tmp/ca.crt" "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"): for line in result.lower().split("\n"):
if "verification" in line and "error" in line: if "verification" in line and "error" in line:
time.sleep(1) time.sleep(3)
return check_connection(node, domain, retries - 1) return check_connection(node, domain, retries - 1)
def check_connection_key_bits(node, domain, bits, retries=3): 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( result = node.succeed(
"openssl s_client -CAfile /tmp/ca.crt" "openssl s_client -CAfile /tmp/ca.crt"
@ -277,12 +277,12 @@ in import ./make-test-python.nix ({ lib, ... }: {
print("Key type:", result) print("Key type:", result)
if bits not in result: if bits not in result:
time.sleep(1) time.sleep(3)
return check_connection_key_bits(node, domain, bits, retries - 1) return check_connection_key_bits(node, domain, bits, retries - 1)
def check_stapling(node, domain, retries=3): 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 # Pebble doesn't provide a full OCSP responder, so just check the URL
result = node.succeed( result = node.succeed(
@ -293,10 +293,23 @@ in import ./make-test-python.nix ({ lib, ... }: {
print("OCSP Responder URL:", result) print("OCSP Responder URL:", result)
if "${caDomain}:4002" not in result.lower(): if "${caDomain}:4002" not in result.lower():
time.sleep(1) time.sleep(3)
return check_stapling(node, domain, retries - 1) 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() client.start()
dnsserver.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("network-online.target")
acme.wait_for_unit("pebble.service") acme.wait_for_unit("pebble.service")
client.succeed("curl https://${caDomain}:15000/roots/0 > /tmp/ca.crt") download_ca_certs(client)
client.succeed("curl https://${caDomain}:15000/intermediate-keys/0 >> /tmp/ca.crt")
with subtest("Can request certificate with HTTPS-01 challenge"): with subtest("Can request certificate with HTTPS-01 challenge"):
webserver.wait_for_unit("acme-finished-a.example.test.target") 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_issuer(webserver, "a.example.test", "pebble")
check_connection(client, "a.example.test") 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"): with subtest("Can generate valid selfsigned certs"):
webserver.succeed("systemctl clean acme-a.example.test.service --what=state") webserver.succeed("systemctl clean acme-a.example.test.service --what=state")
webserver.succeed("systemctl start acme-selfsigned-a.example.test.service") 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 assert keyhash_old == keyhash_new
with subtest("Can request certificates for vhost + aliases (apache-httpd)"): with subtest("Can request certificates for vhost + aliases (apache-httpd)"):
switch_to(webserver, "httpd-aliases") try:
webserver.wait_for_unit("acme-finished-c.example.test.target") 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_issuer(webserver, "c.example.test", "pebble")
check_connection(client, "c.example.test") check_connection(client, "c.example.test")
check_connection(client, "d.example.test") check_connection(client, "d.example.test")

View file

@ -161,12 +161,18 @@ import ./make-test-python.nix ({ pkgs, ... }: {
"docker run --rm ${examples.layered-image.imageName} cat extraCommands", "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.succeed(
"docker load --input='${examples.layered-on-top}'", "docker load --input='${examples.layered-on-top}'",
"docker run --rm ${examples.layered-on-top.imageName}", "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): def set_of_layers(image_name):
return set( 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 "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" 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"): with subtest("Ensure image with only 2 layers can be loaded"):
docker.succeed( docker.succeed(
"docker load --input='${examples.two-layered-image}'" "docker load --input='${examples.two-layered-image}'"
@ -219,6 +235,18 @@ import ./make-test-python.nix ({ pkgs, ... }: {
"docker run bulk-layer ls /bin/hello", "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"): with subtest("Ensure correct behavior when no store is needed"):
# This check tests that buildLayeredImage can build images that don't need a store. # This check tests that buildLayeredImage can build images that don't need a store.
docker.succeed( docker.succeed(

View file

@ -2,16 +2,16 @@
buildGoModule rec { buildGoModule rec {
pname = "hugo"; pname = "hugo";
version = "0.81.0"; version = "0.82.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "gohugoio"; owner = "gohugoio";
repo = pname; repo = pname;
rev = "v${version}"; rev = "v${version}";
sha256 = "sha256-9YroUxcLixu+MNL37JByCulCHv0WxWGwqBQ/+FGtZLw="; sha256 = "sha256-D0bwy8LJihlfM+E3oys85yjadjZNfPv5xnq4ekaZPCU=";
}; };
vendorSha256 = "sha256-5gQyoLirXajkzxKxzcuPnjECL2mJPiHS65lYkyIpKs8="; vendorSha256 = "sha256-pJBm+yyy1DbH28oVBQA+PHSDtSg3RcgbRlurrwnnEls=";
doCheck = false; doCheck = false;

View file

@ -4,11 +4,11 @@ with python3.pkgs;
buildPythonApplication rec { buildPythonApplication rec {
pname = "catt"; pname = "catt";
version = "0.12.0"; version = "0.12.1";
src = fetchPypi { src = fetchPypi {
inherit pname version; inherit pname version;
sha256 = "sha256-6RUeinHhAvvSz38hHQP5/MXNiY00rCM8k2ONaFYbwPc="; sha256 = "fef58bf7a8ebaba98399d1077cc4615f53d0196aab2a989df369a66f7111963b";
}; };
propagatedBuildInputs = [ propagatedBuildInputs = [

View file

@ -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;
};
}

View file

@ -729,6 +729,8 @@ rec {
name, name,
# Image tag, the Nix's output hash will be used if null # Image tag, the Nix's output hash will be used if null
tag ? null, tag ? null,
# Parent image, to append to.
fromImage ? null,
# Files to put on the image (a nix store path or list of paths). # Files to put on the image (a nix store path or list of paths).
contents ? [], contents ? [],
# Docker config; e.g. what command to run on the container. # Docker config; e.g. what command to run on the container.
@ -791,7 +793,7 @@ rec {
unnecessaryDrvs = [ baseJson overallClosure ]; unnecessaryDrvs = [ baseJson overallClosure ];
conf = runCommand "${baseName}-conf.json" { conf = runCommand "${baseName}-conf.json" {
inherit maxLayers created; inherit fromImage maxLayers created;
imageName = lib.toLower name; imageName = lib.toLower name;
passthru.imageTag = passthru.imageTag =
if tag != null if tag != null
@ -821,6 +823,27 @@ rec {
unnecessaryDrvs} 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 # Create $maxLayers worth of Docker Layers, one layer per store path
# unless there are more paths than $maxLayers. In that case, create # unless there are more paths than $maxLayers. In that case, create
# $maxLayers-1 for the most popular layers, and smush the remainaing # $maxLayers-1 for the most popular layers, and smush the remainaing
@ -838,18 +861,20 @@ rec {
| (.[:$maxLayers-1] | map([.])) + [ .[$maxLayers-1:] ] | (.[:$maxLayers-1] | map([.])) + [ .[$maxLayers-1:] ]
| map(select(length > 0)) | map(select(length > 0))
' \ ' \
--argjson maxLayers "$(( maxLayers - 1 ))" # one layer will be taken up by the customisation layer --argjson maxLayers "$availableLayers"
)" )"
cat ${baseJson} | jq ' cat ${baseJson} | jq '
. + { . + {
"store_dir": $store_dir, "store_dir": $store_dir,
"from_image": $from_image,
"store_layers": $store_layers, "store_layers": $store_layers,
"customisation_layer", $customisation_layer, "customisation_layer", $customisation_layer,
"repo_tag": $repo_tag, "repo_tag": $repo_tag,
"created": $created "created": $created
} }
' --arg store_dir "${storeDir}" \ ' --arg store_dir "${storeDir}" \
--argjson from_image ${if fromImage == null then "null" else "'\"${fromImage}\"'"} \
--argjson store_layers "$store_layers" \ --argjson store_layers "$store_layers" \
--arg customisation_layer ${customisationLayer} \ --arg customisation_layer ${customisationLayer} \
--arg repo_tag "$imageName:$imageTag" \ --arg repo_tag "$imageName:$imageTag" \

View file

@ -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 # Regression test related to PR #52109
runAsRootParentImage = buildImage { runAsRootParentImage = buildImage {
name = "runAsRootParentImage"; name = "runAsRootParentImage";
@ -197,7 +215,7 @@ rec {
fromImage = bash; 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. # order of layers is correct.
# It allows to validate # It allows to validate
# - the layer of parent are below # - 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, # Child image should inherit parents environment variables,
# optionally overriding them. # optionally overriding them.
environmentVariables = let environmentVariablesParent = pkgs.dockerTools.buildImage {
parent = pkgs.dockerTools.buildImage { name = "parent";
name = "parent"; tag = "latest";
tag = "latest"; config = {
config = { Env = [
Env = [ "FROM_PARENT=true"
"FROM_PARENT=true" "LAST_LAYER=parent"
"LAST_LAYER=parent" ];
];
};
}; };
in pkgs.dockerTools.buildImage { };
environmentVariables = pkgs.dockerTools.buildImage {
name = "child"; name = "child";
fromImage = parent; fromImage = environmentVariablesParent;
tag = "latest"; tag = "latest";
contents = [ pkgs.coreutils ]; contents = [ pkgs.coreutils ];
config = { 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 { another-layered-image = pkgs.dockerTools.buildLayeredImage {
name = "another-layered-image"; name = "another-layered-image";
tag = "latest"; tag = "latest";
config.Cmd = [ "${pkgs.hello}/bin/hello" ]; 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 { two-layered-image = pkgs.dockerTools.buildLayeredImage {
name = "two-layered-image"; name = "two-layered-image";
tag = "latest"; tag = "latest";
@ -278,7 +309,7 @@ rec {
maxLayers = 2; 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 # coreutils and hello are part of the same layer
bulk-layer = pkgs.dockerTools.buildLayeredImage { bulk-layer = pkgs.dockerTools.buildLayeredImage {
name = "bulk-layer"; name = "bulk-layer";
@ -289,7 +320,19 @@ rec {
maxLayers = 2; 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. # recommended, but can be useful for base images in rare cases.
no-store-paths = pkgs.dockerTools.buildLayeredImage { no-store-paths = pkgs.dockerTools.buildLayeredImage {
name = "no-store-paths"; 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 # See: https://github.com/NixOS/nixpkgs/pull/91084#issuecomment-653496223
filesInStore = pkgs.dockerTools.buildLayeredImageWithNixDb { filesInStore = pkgs.dockerTools.buildLayeredImageWithNixDb {
name = "file-in-store"; 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. # isn't the epoch + 1 for layered images.
unstableDateLayered = pkgs.dockerTools.buildLayeredImage { unstableDateLayered = pkgs.dockerTools.buildLayeredImage {
name = "unstable-date-layered"; name = "unstable-date-layered";

View file

@ -33,6 +33,7 @@ function does all this.
import io import io
import os import os
import re
import sys import sys
import json import json
import hashlib import hashlib
@ -126,10 +127,85 @@ class ExtractChecksum:
return (self._digest.hexdigest(), self._size) return (self._digest.hexdigest(), self._size)
FromImage = namedtuple("FromImage", ["tar", "manifest_json", "image_json"])
# Some metadata for a layer # Some metadata for a layer
LayerInfo = namedtuple("LayerInfo", ["size", "checksum", "path", "paths"]) 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): def add_layer_dir(tar, paths, store_dir, mtime):
""" """
Appends given store paths to a TarFile object as a new layer. Appends given store paths to a TarFile object as a new layer.
@ -248,17 +324,21 @@ def main():
mtime = int(created.timestamp()) mtime = int(created.timestamp())
store_dir = conf["store_dir"] store_dir = conf["store_dir"]
from_image = load_from_image(conf["from_image"])
with tarfile.open(mode="w|", fileobj=sys.stdout.buffer) as tar: with tarfile.open(mode="w|", fileobj=sys.stdout.buffer) as tar:
layers = [] layers = []
for num, store_layer in enumerate(conf["store_layers"]): layers.extend(add_base_layers(tar, from_image))
print(
"Creating layer", num, start = len(layers) + 1
"from paths:", store_layer, for num, store_layer in enumerate(conf["store_layers"], start=start):
file=sys.stderr) print("Creating layer", num, "from paths:", store_layer,
file=sys.stderr)
info = add_layer_dir(tar, store_layer, store_dir, mtime=mtime) info = add_layer_dir(tar, store_layer, store_dir, mtime=mtime)
layers.append(info) layers.append(info)
print("Creating the customisation layer...", file=sys.stderr) print("Creating layer", len(layers) + 1, "with customisation...",
file=sys.stderr)
layers.append( layers.append(
add_customisation_layer( add_customisation_layer(
tar, tar,
@ -273,7 +353,7 @@ def main():
"created": datetime.isoformat(created), "created": datetime.isoformat(created),
"architecture": conf["architecture"], "architecture": conf["architecture"],
"os": "linux", "os": "linux",
"config": conf["config"], "config": overlay_base_config(from_image, conf["config"]),
"rootfs": { "rootfs": {
"diff_ids": [f"sha256:{layer.checksum}" for layer in layers], "diff_ids": [f"sha256:{layer.checksum}" for layer in layers],
"type": "layers", "type": "layers",

View file

@ -53,9 +53,10 @@ mkDerivation {
./0002-absolute-wallpaper-install-dir.patch ./0002-absolute-wallpaper-install-dir.patch
]; ];
# QT_INSTALL_BINS refers to qtbase, and qdbus is in qttools
postPatch = '' postPatch = ''
substituteInPlace wallpapers/image/wallpaper.knsrc.cmake \ substituteInPlace CMakeLists.txt \
--replace '@QtBinariesDir@/qdbus' ${getBin qttools}/bin/qdbus --replace 'query_qmake(QtBinariesDir QT_INSTALL_BINS)' 'set(QtBinariesDir "${lib.getBin qttools}/bin")'
''; '';
NIX_CFLAGS_COMPILE = [ NIX_CFLAGS_COMPILE = [

View file

@ -1,17 +1,17 @@
{ lib, stdenv { lib
, stdenv
, fetchFromGitHub , fetchFromGitHub
, fetchpatch , argp-standalone
, pkg-config , curl
, meson , meson
, ninja , ninja
, pkg-config
, zstd , zstd
, curl
, argp-standalone
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "zchunk"; pname = "zchunk";
version = "1.1.8"; version = "1.1.9";
outputs = [ "out" "lib" "dev" ]; outputs = [ "out" "lib" "dev" ];
@ -19,7 +19,7 @@ stdenv.mkDerivation rec {
owner = "zchunk"; owner = "zchunk";
repo = pname; repo = pname;
rev = version; rev = version;
sha256 = "0q1jafxh5nqgn2w5ciljkh8h46xma0qia8a5rj9m0pxixcacqj6q"; hash = "sha256-MqnHtqOjLl6R5GZ4f2UX1iLoO9FUT2IfZlSN58wW8JA=";
}; };
nativeBuildInputs = [ nativeBuildInputs = [
@ -29,25 +29,23 @@ stdenv.mkDerivation rec {
]; ];
buildInputs = [ buildInputs = [
zstd
curl curl
zstd
] ++ lib.optional stdenv.isDarwin argp-standalone; ] ++ 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; { meta = with lib; {
description = "File format designed for highly efficient deltas while maintaining good compression";
homepage = "https://github.com/zchunk/zchunk"; 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; license = licenses.bsd2;
maintainers = with maintainers; []; maintainers = with maintainers; [ AndersonTorres ];
platforms = platforms.unix; platforms = platforms.unix;
}; };
} }

View file

@ -1,80 +1,64 @@
{ lib, stdenv { lib
, stdenv
, fetchFromGitHub
, cmake
, perl , perl
, pkg-config , pkg-config
, fetchFromGitHub
, fetchpatch
, zip
, unzip
, python3 , python3
, xmlto , xmlto
, zip
, zlib , zlib
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "zziplib"; pname = "zziplib";
version = "0.13.71"; version = "0.13.72";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "gdraheim"; owner = "gdraheim";
repo = "zziplib"; repo = pname;
rev = "v${version}"; 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 = [ nativeBuildInputs = [
cmake
perl perl
pkg-config pkg-config
zip
python3 python3
xmlto xmlto
zip
]; ];
buildInputs = [ buildInputs = [
zlib zlib
]; ];
checkInputs = [ # test/zziptests.py requires network access
unzip # (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; { meta = with lib; {
homepage = "https://github.com/gdraheim/zziplib";
description = "Library to extract data from files archived in a zip file"; description = "Library to extract data from files archived in a zip file";
longDescription = '' longDescription = ''
The zziplib library is intentionally lightweight, it offers the ability The zziplib library is intentionally lightweight, it offers the ability to
to easily extract data from files archived in a single zip easily extract data from files archived in a single zip file.
file. Applications can bundle files into a single zip archive and Applications can bundle files into a single zip archive and access them.
access them. The implementation is based only on the (free) subset of The implementation is based only on the (free) subset of compression with
compression with the zlib algorithm which is actually used by the the zlib algorithm which is actually used by the zip/unzip tools.
zip/unzip tools.
''; '';
license = with licenses; [ lgpl2Plus mpl11 ]; license = with licenses; [ lgpl2Plus mpl11 ];
maintainers = with maintainers; [ AndersonTorres ];
homepage = "http://zziplib.sourceforge.net/";
maintainers = [ ];
platforms = python3.meta.platforms; platforms = python3.meta.platforms;
}; };
} }

View file

@ -2,11 +2,11 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "bitarray"; pname = "bitarray";
version = "1.7.1"; version = "1.8.0";
src = fetchPypi { src = fetchPypi {
inherit pname version; inherit pname version;
sha256 = "e4de977d708b7024760266d827b8285e4405dce4293f25508c4556970139018a"; sha256 = "fe4444d92b17073bf1f9f24e3015a0e5bb70a645c47df93ef8a9ce8be33fcbad";
}; };
pythonImportsCheck = [ "bitarray" ]; pythonImportsCheck = [ "bitarray" ];

View file

@ -1,19 +1,36 @@
{ lib, stdenv, buildPythonPackage, fetchPypi, isPy27, colorama, pytestCheckHook }: { lib
, stdenv
, buildPythonPackage
, fetchPypi
, fetchpatch
, isPy27
, colorama
, pytestCheckHook
, pythonAtLeast
}:
buildPythonPackage rec { buildPythonPackage rec {
pname = "loguru"; pname = "loguru";
version = "0.5.3"; 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 { src = fetchPypi {
inherit pname version; inherit pname version;
sha256 = "b28e72ac7a98be3d28ad28570299a393dfcd32e5e3f6a353dec94675767b6319"; 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 ]; 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" ] 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" ]; ++ 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"; homepage = "https://github.com/Delgan/loguru";
description = "Python logging made (stupidly) simple"; description = "Python logging made (stupidly) simple";
license = licenses.mit; license = licenses.mit;
maintainers = with maintainers; [ jakewaksbaum ]; maintainers = with maintainers; [ jakewaksbaum rmcgibbo ];
}; };
} }

View file

@ -7,38 +7,32 @@
, packaging , packaging
, pygments , pygments
, mock , mock
, pytestCheckHook
}: }:
buildPythonPackage rec { buildPythonPackage rec {
pname = "restview"; pname = "restview";
version = "2.9.1"; version = "2.9.2";
src = fetchPypi { src = fetchPypi {
inherit pname version; inherit pname version;
sha256 = "de87c84f19526bd4a76505f6d40b51b7bb03ca43b6067c93f82f1c7237ac9e84"; sha256 = "1p1jgdvc04ws8kga3r0vrq3m0b52qw3clwyydl96a13wb3mrf03r";
}; };
propagatedBuildInputs = [ docutils readme_renderer packaging pygments ];
checkInputs = [ mock ];
patches = [ patches = [
# fix tests after readme_renderer update
# TODO remove on next update
(fetchpatch { (fetchpatch {
url = "https://github.com/mgedmin/restview/commit/541743ded13ae55dea4c437046984a5f13d06e8b.patch"; url = "https://github.com/mgedmin/restview/commit/a1ded30a87c65f3ce59a18497a7fc5099317c2be.patch";
sha256 = "031b1dlqx346bz7afpc011lslnq771lnxb6iy1l2285pph534bci"; sha256 = "1ax7pih456a3nbj8qrrq7hqigbyag4ihzpn6bm0z4y74d0r3v8a5";
}) })
]; ];
postPatch = '' propagatedBuildInputs = [ docutils readme_renderer packaging pygments ];
# dict order breaking tests checkInputs = [ mock pytestCheckHook ];
sed -i 's@<a href="http://www.example.com" rel="nofollow">@...@' src/restview/tests.py
'';
meta = { meta = {
description = "ReStructuredText viewer"; description = "ReStructuredText viewer";
homepage = "https://mg.pov.lt/restview/"; homepage = "https://mg.pov.lt/restview/";
license = lib.licenses.gpl2; license = lib.licenses.gpl3Only;
maintainers = with lib.maintainers; [ koral ]; maintainers = with lib.maintainers; [ koral ];
}; };
} }

View file

@ -12,7 +12,7 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "codeql"; pname = "codeql";
version = "2.4.5"; version = "2.4.6";
dontConfigure = true; dontConfigure = true;
dontBuild = true; dontBuild = true;
@ -20,7 +20,7 @@ stdenv.mkDerivation rec {
src = fetchzip { src = fetchzip {
url = "https://github.com/github/codeql-cli-binaries/releases/download/v${version}/codeql.zip"; url = "https://github.com/github/codeql-cli-binaries/releases/download/v${version}/codeql.zip";
sha256 = "sha256-FM7fcjbZilp1spy0HxDhEAzs7Qe2r/HObKB80o4mSiw="; sha256 = "sha256-lJ/N9oduWGZAc70wl7ATBd1mnaUkeTXAW/RfqbAthsI=";
}; };
nativeBuildInputs = [ nativeBuildInputs = [

View file

@ -2,16 +2,16 @@
rustPlatform.buildRustPackage rec { rustPlatform.buildRustPackage rec {
pname = "kubie"; pname = "kubie";
version = "0.12.1"; version = "0.13.4";
src = fetchFromGitHub { src = fetchFromGitHub {
rev = "v${version}"; rev = "v${version}";
owner = "sbstp"; owner = "sbstp";
repo = "kubie"; repo = "kubie";
sha256 = "sha256-y4/azFr2fngmUxQw3c2xAhAppYHeD6Bz7IvZ6GTdsEQ="; sha256 = "sha256-ZD63Xtnw7qzTrzFxzzZ37N177/PnRaMEzBbhz7h/zCY=";
}; };
cargoSha256 = "sha256-/Vg3qojBWN2tp8QaKmHrzy3cDWlkT6067Wprcjlu31U="; cargoSha256 = "sha256-c6veaasuwRtaO8TwHS0tNxjbBfekQOa52I9INcE1Jn0=";
nativeBuildInputs = [ installShellFiles ]; nativeBuildInputs = [ installShellFiles ];

View file

@ -1,6 +1,6 @@
{ lib, stdenv, fetchFromGitHub, cmake, flex, bison }: { lib, stdenv, fetchFromGitHub, cmake, flex, bison }:
let let
version = "2.5.4"; version = "2.5.5";
in in
stdenv.mkDerivation { stdenv.mkDerivation {
pname = "minizinc"; pname = "minizinc";
@ -12,7 +12,7 @@ stdenv.mkDerivation {
owner = "MiniZinc"; owner = "MiniZinc";
repo = "libminizinc"; repo = "libminizinc";
rev = version; rev = version;
sha256 = "sha256-/vJyh2WdESimJTCASsg6xjVzG2EkL4V87B+xvIUBcMM="; sha256 = "sha256-9z2E6KqOys9UUXlXWB4eDhg34kS3PhUB1Dd1F6iGYoE=";
}; };
meta = with lib; { meta = with lib; {

View file

@ -65,12 +65,12 @@ let
ale = buildVimPluginFrom2Nix { ale = buildVimPluginFrom2Nix {
pname = "ale"; pname = "ale";
version = "2021-03-21"; version = "2021-03-23";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "dense-analysis"; owner = "dense-analysis";
repo = "ale"; repo = "ale";
rev = "f7852dbd0a063d6d82ee17a5057fea53cb79b21d"; rev = "eb0ebe622102cc6da3d7e943a3b739db7b6ed216";
sha256 = "16cslwkc8kcr2z0crchl9w5p5vsbzfwpfa103wysyvq9d0q309xk"; sha256 = "10dp9xq8k0svr7z117a3bha4rvlgsx1j8qqdfnza94rbh8zy096k";
}; };
meta.homepage = "https://github.com/dense-analysis/ale/"; meta.homepage = "https://github.com/dense-analysis/ale/";
}; };
@ -389,12 +389,12 @@ let
chadtree = buildVimPluginFrom2Nix { chadtree = buildVimPluginFrom2Nix {
pname = "chadtree"; pname = "chadtree";
version = "2021-03-22"; version = "2021-03-23";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "ms-jpq"; owner = "ms-jpq";
repo = "chadtree"; repo = "chadtree";
rev = "8f7238502c742fe098e0d681c3597452aa053b89"; rev = "18e39f1550980bc21761018e191742e66d86854d";
sha256 = "1cppnzf1slzxf3kb24pg18r2izdpd6mylrhc49rla083mr7hqx15"; sha256 = "12grx41z5qf7p4ls56ww8rai0nfcl01v8iy1vayx463lb7dsvlxm";
}; };
meta.homepage = "https://github.com/ms-jpq/chadtree/"; meta.homepage = "https://github.com/ms-jpq/chadtree/";
}; };
@ -545,12 +545,12 @@ let
coc-nvim = buildVimPluginFrom2Nix { coc-nvim = buildVimPluginFrom2Nix {
pname = "coc-nvim"; pname = "coc-nvim";
version = "2021-03-22"; version = "2021-03-23";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "neoclide"; owner = "neoclide";
repo = "coc.nvim"; repo = "coc.nvim";
rev = "3b3c5f88bcb25c3d68351f417fa5e8425a3a3142"; rev = "e916ef84b95897a713773642bc768a88e4b8e449";
sha256 = "1fkgyb0a5wirndk99d9ajdvxaiipgnv3r0cmvzldvy6ps5ljxabm"; sha256 = "0svmsacpa6wvkdcdb4jb7lc7zdc31r9mqdvznskhgwzmjlhnbq8d";
}; };
meta.homepage = "https://github.com/neoclide/coc.nvim/"; meta.homepage = "https://github.com/neoclide/coc.nvim/";
}; };
@ -942,12 +942,12 @@ let
denite-nvim = buildVimPluginFrom2Nix { denite-nvim = buildVimPluginFrom2Nix {
pname = "denite-nvim"; pname = "denite-nvim";
version = "2021-03-18"; version = "2021-03-23";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "Shougo"; owner = "Shougo";
repo = "denite.nvim"; repo = "denite.nvim";
rev = "8c44de41ec46c44f84dd70907a5763112df2eacb"; rev = "b0cc470c63b0ed3b6497f659588b004ed05872ee";
sha256 = "1y235ap3hchkf3hc85frcjl5kwr56lz3vw12qzhhzhrl2k7k5ziw"; sha256 = "15ngimlnprp73fy3sa9vz39avq75mcqhr90ygj3drjj1d33vk3f3";
}; };
meta.homepage = "https://github.com/Shougo/denite.nvim/"; meta.homepage = "https://github.com/Shougo/denite.nvim/";
}; };
@ -1370,8 +1370,8 @@ let
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "fenetikm"; owner = "fenetikm";
repo = "falcon"; repo = "falcon";
rev = "2ba0036e19adbefaf0beffe545e349964a68cc0a"; rev = "f6be01e8642dc8ccc7ed1f37b23f4b0dfa2c6f8c";
sha256 = "0pg3i1dvbjv746szki36yszz6bd82pgzvfyr3ayxf7lih4pjbxmj"; sha256 = "1w4ld5dvy0jxgjvp6yf8qibc4x82hn490vfg0hpln67nr6mhq1iw";
}; };
meta.homepage = "https://github.com/fenetikm/falcon/"; meta.homepage = "https://github.com/fenetikm/falcon/";
}; };
@ -1643,12 +1643,12 @@ let
gitsigns-nvim = buildVimPluginFrom2Nix { gitsigns-nvim = buildVimPluginFrom2Nix {
pname = "gitsigns-nvim"; pname = "gitsigns-nvim";
version = "2021-03-17"; version = "2021-03-23";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "lewis6991"; owner = "lewis6991";
repo = "gitsigns.nvim"; repo = "gitsigns.nvim";
rev = "18d0a4bab12193460e6443d02d22218b5ce05a35"; rev = "6bc3dba1a73466282215491d9ede85261199b7f2";
sha256 = "0qizdphmady0baz5wgi92vdy9wbz1npgahsx0kmpx8c4vfvcdv10"; sha256 = "0qfpadjv4qd92kgjvwga285404wzzy0q4vylbdfwngf9s29bpj40";
}; };
meta.homepage = "https://github.com/lewis6991/gitsigns.nvim/"; meta.homepage = "https://github.com/lewis6991/gitsigns.nvim/";
}; };
@ -1811,12 +1811,12 @@ let
hop-nvim = buildVimPluginFrom2Nix { hop-nvim = buildVimPluginFrom2Nix {
pname = "hop-nvim"; pname = "hop-nvim";
version = "2021-03-18"; version = "2021-03-23";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "phaazon"; owner = "phaazon";
repo = "hop.nvim"; repo = "hop.nvim";
rev = "8d1a199236590a6e6667a45e0084d26aaeb32fb6"; rev = "4c6d776005eed4ebc66bf3af8a336d004ae238a3";
sha256 = "1skya8iqkf9bblpdf1vvkl73i9rqm0lqd40114a8ppk8vbqjp53x"; sha256 = "17dcvi3jlwzm11lykjz3dh2ckbbmdp221y0d7wl0xq12s2g1v4pg";
}; };
meta.homepage = "https://github.com/phaazon/hop.nvim/"; meta.homepage = "https://github.com/phaazon/hop.nvim/";
}; };
@ -2340,12 +2340,12 @@ let
lualine-nvim = buildVimPluginFrom2Nix { lualine-nvim = buildVimPluginFrom2Nix {
pname = "lualine-nvim"; pname = "lualine-nvim";
version = "2021-03-19"; version = "2021-03-23";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "hoob3rt"; owner = "hoob3rt";
repo = "lualine.nvim"; repo = "lualine.nvim";
rev = "f80d5adb415812484c1b86692846feb3a8ce7e46"; rev = "7bf5076ece80cde0a48dac403799a89c8caefd1d";
sha256 = "0gp0nw173ryn6mn9z98jvrk9y7fyhm08r90qc1zv7z85lngd9226"; sha256 = "0zc1s75dqxb1dxma59mlc88lf74i0mpbz15khcfv1pfp5cr3hhih";
}; };
meta.homepage = "https://github.com/hoob3rt/lualine.nvim/"; meta.homepage = "https://github.com/hoob3rt/lualine.nvim/";
}; };
@ -2412,12 +2412,12 @@ let
minimap-vim = buildVimPluginFrom2Nix { minimap-vim = buildVimPluginFrom2Nix {
pname = "minimap-vim"; pname = "minimap-vim";
version = "2021-03-20"; version = "2021-03-23";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "wfxr"; owner = "wfxr";
repo = "minimap.vim"; repo = "minimap.vim";
rev = "adc19481ceececc53b4a6e3157bae7ebf7b9bb66"; rev = "31e22971ba5f5f3e5955fa8e2247b6cd22c3f7b1";
sha256 = "14hjfnqh9wvbhgf55arjhwbcsm1d91x9mhglz2qdmln6nr66ayz4"; sha256 = "19hg4nnwdr6mj9wyrcapg91vm2bzvcsfbvjkirdsxp2v3ca83w2i";
}; };
meta.homepage = "https://github.com/wfxr/minimap.vim/"; meta.homepage = "https://github.com/wfxr/minimap.vim/";
}; };
@ -2724,12 +2724,12 @@ let
neogit = buildVimPluginFrom2Nix { neogit = buildVimPluginFrom2Nix {
pname = "neogit"; pname = "neogit";
version = "2021-03-21"; version = "2021-03-23";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "TimUntersberger"; owner = "TimUntersberger";
repo = "neogit"; repo = "neogit";
rev = "0b969a8f6a7d38aed32ca7bddfeb19f80a2b1a29"; rev = "537cc6e1757c41bd75717ebd4421c27b7ebe9205";
sha256 = "1x9q4kl5595dq7ydpv21apbff5pr15diyww8cd600ibjwybmlm8v"; sha256 = "0s0z2qmsnqj5mgsqb6x4cwh507sc3y4ahqvzc3bijd224xff97b1";
}; };
meta.homepage = "https://github.com/TimUntersberger/neogit/"; meta.homepage = "https://github.com/TimUntersberger/neogit/";
}; };
@ -3022,6 +3022,18 @@ let
meta.homepage = "https://github.com/kevinhwang91/nvim-bqf/"; 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 { nvim-cm-racer = buildVimPluginFrom2Nix {
pname = "nvim-cm-racer"; pname = "nvim-cm-racer";
version = "2017-07-27"; version = "2017-07-27";
@ -3036,12 +3048,12 @@ let
nvim-compe = buildVimPluginFrom2Nix { nvim-compe = buildVimPluginFrom2Nix {
pname = "nvim-compe"; pname = "nvim-compe";
version = "2021-03-21"; version = "2021-03-23";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "hrsh7th"; owner = "hrsh7th";
repo = "nvim-compe"; repo = "nvim-compe";
rev = "08dbc5f47d2be27cbc92c9684ec876b1eb778a4f"; rev = "777b98390da6638583b0e7ba2316aa1257462cad";
sha256 = "09fnzidcmknkrmls3wmjfa6drp5i8hmcbfs3hrvvp8jywgfyrpr3"; sha256 = "1ggh7038kzc61ihjbf8zvq1vxgjg9hpwqvjj979mf3qzrznrd89i";
}; };
meta.homepage = "https://github.com/hrsh7th/nvim-compe/"; meta.homepage = "https://github.com/hrsh7th/nvim-compe/";
}; };
@ -3060,12 +3072,12 @@ let
nvim-dap = buildVimPluginFrom2Nix { nvim-dap = buildVimPluginFrom2Nix {
pname = "nvim-dap"; pname = "nvim-dap";
version = "2021-03-15"; version = "2021-03-22";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "mfussenegger"; owner = "mfussenegger";
repo = "nvim-dap"; repo = "nvim-dap";
rev = "492849bf57425d005c4a13ee2a5d6f3c8207cc02"; rev = "f5180887cbf0505f64e43516072e74b74652a5f9";
sha256 = "1jspnzkb9371jfkppj77f95zccbnyw6gn0i4jlqpbci2p0ppp0gz"; sha256 = "1cy36pxj6kfggjds8bb13ggj91c4vq3b37i78pjyh8jynyfd0va7";
}; };
meta.homepage = "https://github.com/mfussenegger/nvim-dap/"; meta.homepage = "https://github.com/mfussenegger/nvim-dap/";
}; };
@ -3132,12 +3144,12 @@ let
nvim-jdtls = buildVimPluginFrom2Nix { nvim-jdtls = buildVimPluginFrom2Nix {
pname = "nvim-jdtls"; pname = "nvim-jdtls";
version = "2021-03-20"; version = "2021-03-22";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "mfussenegger"; owner = "mfussenegger";
repo = "nvim-jdtls"; repo = "nvim-jdtls";
rev = "c4199f88d5f6bf269b91ae5d775a082aef05f9bd"; rev = "fede58fdb67c451697bd1028bf084d4f0fbfc38b";
sha256 = "18cnhhybhzw20l6v4rxzk5a5jcgv8l7jhbmzl529rd9jdhxqikfa"; sha256 = "052rvsl0prhvbic350x1q5ma5c8km8sf3y92gng4sc2wj37fs2k8";
}; };
meta.homepage = "https://github.com/mfussenegger/nvim-jdtls/"; meta.homepage = "https://github.com/mfussenegger/nvim-jdtls/";
}; };
@ -3156,12 +3168,12 @@ let
nvim-lspconfig = buildVimPluginFrom2Nix { nvim-lspconfig = buildVimPluginFrom2Nix {
pname = "nvim-lspconfig"; pname = "nvim-lspconfig";
version = "2021-03-20"; version = "2021-03-22";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "neovim"; owner = "neovim";
repo = "nvim-lspconfig"; repo = "nvim-lspconfig";
rev = "00e9a7450eac88121768df21fde7d21f43de7529"; rev = "487ea4a2393fd6d3fc1bf5d198e4f4583c5082ac";
sha256 = "0qqr6zz4a1i13hmj4hvcx08m5ipy28iz3hlaa239jf5yx9rw0y1h"; sha256 = "1dr0my4y7qvy7d7ypkz4d0d1p223092vsn5wfpj4qv84k84ilpp8";
}; };
meta.homepage = "https://github.com/neovim/nvim-lspconfig/"; meta.homepage = "https://github.com/neovim/nvim-lspconfig/";
}; };
@ -3204,12 +3216,12 @@ let
nvim-scrollview = buildVimPluginFrom2Nix { nvim-scrollview = buildVimPluginFrom2Nix {
pname = "nvim-scrollview"; pname = "nvim-scrollview";
version = "2021-03-21"; version = "2021-03-23";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "dstein64"; owner = "dstein64";
repo = "nvim-scrollview"; repo = "nvim-scrollview";
rev = "693b93d273c4c0c0670d364cab9f3ab880d2f306"; rev = "902f24503ab7a754be2a1c483de1cd3428bd85ec";
sha256 = "04dsjc6f8ag0vfr4sa6nmpfqimx48cvadwv7dd3m9g2mwivkfgyi"; sha256 = "0b31lpzdx1z88fm60p7d5gs442h4apm2n9h098n4j0ghcs5ppvnf";
}; };
meta.homepage = "https://github.com/dstein64/nvim-scrollview/"; meta.homepage = "https://github.com/dstein64/nvim-scrollview/";
}; };
@ -3228,24 +3240,24 @@ let
nvim-tree-lua = buildVimPluginFrom2Nix { nvim-tree-lua = buildVimPluginFrom2Nix {
pname = "nvim-tree-lua"; pname = "nvim-tree-lua";
version = "2021-03-16"; version = "2021-03-23";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "kyazdani42"; owner = "kyazdani42";
repo = "nvim-tree.lua"; repo = "nvim-tree.lua";
rev = "f7ad4ce5f4c93c91aca00f0d9f10316c98471798"; rev = "e0b9882a8a8ecce8b58076091217d3643f215da3";
sha256 = "0l7ixschycw3lvg488bxgbbzsba59k0zkm8yrjdh63dp2nk2p2kj"; sha256 = "1i8mqa45gg0lagcd4q5qwp97zlynkdw42ajw0wh8r92i5bs9crd8";
}; };
meta.homepage = "https://github.com/kyazdani42/nvim-tree.lua/"; meta.homepage = "https://github.com/kyazdani42/nvim-tree.lua/";
}; };
nvim-treesitter = buildVimPluginFrom2Nix { nvim-treesitter = buildVimPluginFrom2Nix {
pname = "nvim-treesitter"; pname = "nvim-treesitter";
version = "2021-03-22"; version = "2021-03-23";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "nvim-treesitter"; owner = "nvim-treesitter";
repo = "nvim-treesitter"; repo = "nvim-treesitter";
rev = "600509aad6c3e38c45a0f67802ede5d2204e0250"; rev = "09045354c0245ca866104c526bc57c2a06d7f381";
sha256 = "0j92ayfrlapgh09mz9rxfjzxag2kjmljd2qkbv54jl5dzr6p0f3q"; sha256 = "182jvkwixmv1i39npvxkj0nr19cazqkab1kbprx7282dad68x30b";
}; };
meta.homepage = "https://github.com/nvim-treesitter/nvim-treesitter/"; meta.homepage = "https://github.com/nvim-treesitter/nvim-treesitter/";
}; };
@ -3288,24 +3300,24 @@ let
nvim-ts-rainbow = buildVimPluginFrom2Nix { nvim-ts-rainbow = buildVimPluginFrom2Nix {
pname = "nvim-ts-rainbow"; pname = "nvim-ts-rainbow";
version = "2021-03-22"; version = "2021-03-23";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "p00f"; owner = "p00f";
repo = "nvim-ts-rainbow"; repo = "nvim-ts-rainbow";
rev = "4c9043e117bfa5ea8e4d5b04b60b2e29c0548e14"; rev = "f61093c56a53c6790b142f76bdfaa476f497b93f";
sha256 = "1ada87qkka1bsjdy52xqcnj5rmd9fl8q2v0km1pml3lcjyi0zdf5"; sha256 = "1wzg1y0gksprdxhww0vcswfa0imkkrnhczljhlb94lrrmknv3nxv";
}; };
meta.homepage = "https://github.com/p00f/nvim-ts-rainbow/"; meta.homepage = "https://github.com/p00f/nvim-ts-rainbow/";
}; };
nvim-web-devicons = buildVimPluginFrom2Nix { nvim-web-devicons = buildVimPluginFrom2Nix {
pname = "nvim-web-devicons"; pname = "nvim-web-devicons";
version = "2021-03-10"; version = "2021-03-23";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "kyazdani42"; owner = "kyazdani42";
repo = "nvim-web-devicons"; repo = "nvim-web-devicons";
rev = "1fb0962b8c4a217eec8166b03d683aa070115ed7"; rev = "6e32d113d848c76ddbcc824038244657f170a97a";
sha256 = "1rqswcjqrg6ckp7vyzqlncfabkggnhjvp3b0sq7y2g333z925sjm"; sha256 = "02m8bsq7172sm9vkq3shh87xv4c3jxkgvhwhd3vv0na86kl9sqd6";
}; };
meta.homepage = "https://github.com/kyazdani42/nvim-web-devicons/"; meta.homepage = "https://github.com/kyazdani42/nvim-web-devicons/";
}; };
@ -3420,12 +3432,12 @@ let
packer-nvim = buildVimPluginFrom2Nix { packer-nvim = buildVimPluginFrom2Nix {
pname = "packer-nvim"; pname = "packer-nvim";
version = "2021-03-15"; version = "2021-03-22";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "wbthomason"; owner = "wbthomason";
repo = "packer.nvim"; repo = "packer.nvim";
rev = "6d7be3232ed0dcbbd040bf92ba70b997fe4fd840"; rev = "77cd1d1e0cfcb582b210d75745594f4fb60d3418";
sha256 = "0k1ydkplqpizyqn56bdwhpsdib384ikv2lqfmk8j11r7p6m0xvir"; sha256 = "0yhdxh6768z4dalpmzhhypnjfx3mjx7d6r722lv9g15xg7i1lg3q";
}; };
meta.homepage = "https://github.com/wbthomason/packer.nvim/"; meta.homepage = "https://github.com/wbthomason/packer.nvim/";
}; };
@ -3504,12 +3516,12 @@ let
playground = buildVimPluginFrom2Nix { playground = buildVimPluginFrom2Nix {
pname = "playground"; pname = "playground";
version = "2021-02-17"; version = "2021-03-22";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "nvim-treesitter"; owner = "nvim-treesitter";
repo = "playground"; repo = "playground";
rev = "444eab728ecaf337629a45a733535e94a3efc04a"; rev = "d96cef521d22afd1a409449a890f20f50b436ee1";
sha256 = "0r10fmk90wdc9hj3kdfkb93vvw1kdxwkl20f9zs3rfs5vs7p9i97"; sha256 = "1j1iqzi9q8fnl02hvazl8szg84iz8dqy0n52ngh1lvl78s9qa393";
}; };
meta.homepage = "https://github.com/nvim-treesitter/playground/"; meta.homepage = "https://github.com/nvim-treesitter/playground/";
}; };
@ -3985,12 +3997,12 @@ let
sonokai = buildVimPluginFrom2Nix { sonokai = buildVimPluginFrom2Nix {
pname = "sonokai"; pname = "sonokai";
version = "2021-02-28"; version = "2021-03-22";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "sainnhe"; owner = "sainnhe";
repo = "sonokai"; repo = "sonokai";
rev = "86298232f4f5ab418d5d9d18a336d7ab8b167b68"; rev = "78f1b14ad18b043eb888a173f4c431dbf79462d8";
sha256 = "060k664gm4857nfmxaj0v6sz50mb3y9v8489jnv1bhqplzqf8gmy"; sha256 = "0spnpzr874ad9jpawcgydfm242wq55ychcky14f1qa09svsrdiv0";
}; };
meta.homepage = "https://github.com/sainnhe/sonokai/"; meta.homepage = "https://github.com/sainnhe/sonokai/";
}; };
@ -4238,12 +4250,12 @@ let
tagbar = buildVimPluginFrom2Nix { tagbar = buildVimPluginFrom2Nix {
pname = "tagbar"; pname = "tagbar";
version = "2021-02-18"; version = "2021-03-23";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "preservim"; owner = "preservim";
repo = "tagbar"; repo = "tagbar";
rev = "51ff7a05404e2f5c83799dd6c38134ed4aaca85c"; rev = "f6012cb65da4bda46b0779a36840df36ad01483e";
sha256 = "0i7qzn3vlvjjd5qvf230r7aaqz84rn30zkn643fdvpni7pxfywdv"; sha256 = "08vb3ffm1f47q5gxyqmmfv75x12001qpkqml7v612wnnfpclcqf5";
}; };
meta.homepage = "https://github.com/preservim/tagbar/"; meta.homepage = "https://github.com/preservim/tagbar/";
}; };
@ -5248,12 +5260,12 @@ let
vim-commentary = buildVimPluginFrom2Nix { vim-commentary = buildVimPluginFrom2Nix {
pname = "vim-commentary"; pname = "vim-commentary";
version = "2019-11-18"; version = "2021-03-23";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "tpope"; owner = "tpope";
repo = "vim-commentary"; repo = "vim-commentary";
rev = "f8238d70f873969fb41bf6a6b07ca63a4c0b82b1"; rev = "349340debb34f6302931f0eb7139b2c11dfdf427";
sha256 = "09d81q9na7pvvrmxxqy09ffdzsx5v5dikinb704c9wm4ys2bidr9"; sha256 = "01lpfcn2hmvxddcf97f4qx5vksxj1hwrxb0c8ri59z9lb9z2hgjd";
}; };
meta.homepage = "https://github.com/tpope/vim-commentary/"; meta.homepage = "https://github.com/tpope/vim-commentary/";
}; };
@ -5764,12 +5776,12 @@ let
vim-floaterm = buildVimPluginFrom2Nix { vim-floaterm = buildVimPluginFrom2Nix {
pname = "vim-floaterm"; pname = "vim-floaterm";
version = "2021-03-17"; version = "2021-03-23";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "voldikss"; owner = "voldikss";
repo = "vim-floaterm"; repo = "vim-floaterm";
rev = "2d9107b1e1ceb3d4f118647f2cd5f9165172ccf9"; rev = "a1403fd295edeffdc2e387f9308dc4392f057e68";
sha256 = "1ja58d2x8a5af7vhvbjp8x7l4bzbvndr2nd97p115q89l2zy6ayp"; sha256 = "1dc1169lwz1wjgqp27g8wa37yqsvc4fgmrcprc3ys4r3s9m6y5m6";
}; };
meta.homepage = "https://github.com/voldikss/vim-floaterm/"; meta.homepage = "https://github.com/voldikss/vim-floaterm/";
}; };
@ -5824,12 +5836,12 @@ let
vim-fugitive = buildVimPluginFrom2Nix { vim-fugitive = buildVimPluginFrom2Nix {
pname = "vim-fugitive"; pname = "vim-fugitive";
version = "2021-03-21"; version = "2021-03-23";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "tpope"; owner = "tpope";
repo = "vim-fugitive"; repo = "vim-fugitive";
rev = "58d2b25836f420cf2fe20cc0b6f988165ae33782"; rev = "857496c32f02ebe74e821bdd2240aafc1455f8ea";
sha256 = "0550dq20axl1qj6rasws2hsar7x4kjx9fspqzmkisv4wzrxr1kp5"; sha256 = "11kyccfmcm7jpvaidd84wdn5vypg9lcdpkpmy2hy7k23gg7hzpza";
}; };
meta.homepage = "https://github.com/tpope/vim-fugitive/"; meta.homepage = "https://github.com/tpope/vim-fugitive/";
}; };
@ -5944,12 +5956,12 @@ let
vim-go = buildVimPluginFrom2Nix { vim-go = buildVimPluginFrom2Nix {
pname = "vim-go"; pname = "vim-go";
version = "2021-03-21"; version = "2021-03-22";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "fatih"; owner = "fatih";
repo = "vim-go"; repo = "vim-go";
rev = "a60ff48be1d57991866320886569d012cdfb9e6f"; rev = "00c5f2dad170131c0c850dbf331d63ddf515116d";
sha256 = "1w3cbvdl08vf7d9w4d3vaw3l4ccvzvgfkamk7qxanmcg2vd0k1rg"; sha256 = "07ckmqxl25hzv10iarj6xdhg65q8450zriqc9wd6c2hlldj45ys3";
}; };
meta.homepage = "https://github.com/fatih/vim-go/"; meta.homepage = "https://github.com/fatih/vim-go/";
}; };
@ -6594,12 +6606,12 @@ let
vim-lsc = buildVimPluginFrom2Nix { vim-lsc = buildVimPluginFrom2Nix {
pname = "vim-lsc"; pname = "vim-lsc";
version = "2021-03-21"; version = "2021-03-23";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "natebosch"; owner = "natebosch";
repo = "vim-lsc"; repo = "vim-lsc";
rev = "d2b394c0033014288daac317c32918bed469ff66"; rev = "2f0cbbfb8ea8997b408e447a2bc9554a3de33617";
sha256 = "0a8hd20v5q3bjq5pcs8p708f5jmh1y87aqa0f7ip4snldnf6gq2d"; sha256 = "1y3r5a5mcjf8dp0pkmhgnbay10hh48w1b3wd795wwbm6nx4izjjq";
}; };
meta.homepage = "https://github.com/natebosch/vim-lsc/"; meta.homepage = "https://github.com/natebosch/vim-lsc/";
}; };
@ -6919,12 +6931,12 @@ let
vim-obsession = buildVimPluginFrom2Nix { vim-obsession = buildVimPluginFrom2Nix {
pname = "vim-obsession"; pname = "vim-obsession";
version = "2020-01-19"; version = "2021-03-22";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "tpope"; owner = "tpope";
repo = "vim-obsession"; repo = "vim-obsession";
rev = "96a3f837c112cb64e0a9857b69f6d6a71041155e"; rev = "82c9ac5e130c92a46e043dd9cd9e5b48d15e286d";
sha256 = "11h7jyg7fhjmq3pmpc93nrsxm175ra14407rs3558h8p04snc159"; sha256 = "0lfcba8sk25l5yp3agh6pwniddf8jx627ikpr8i2z9ary2fqsj98";
}; };
meta.homepage = "https://github.com/tpope/vim-obsession/"; meta.homepage = "https://github.com/tpope/vim-obsession/";
}; };
@ -7723,12 +7735,12 @@ let
vim-snippets = buildVimPluginFrom2Nix { vim-snippets = buildVimPluginFrom2Nix {
pname = "vim-snippets"; pname = "vim-snippets";
version = "2021-03-15"; version = "2021-03-22";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "honza"; owner = "honza";
repo = "vim-snippets"; repo = "vim-snippets";
rev = "a8ac81b8922ac621e7043813d98e69ad0ac265a4"; rev = "164bc3aa42feaa3c1deec84f7a10840418aec300";
sha256 = "0gl77mnajzvmnxwnbzb5fqzzljb59lbfv23gzbz1h493gfm0f04n"; sha256 = "0snzmjl4qiw6598a3ajc7v6l4q35wxf8b9lklk47pmfmalvril6w";
}; };
meta.homepage = "https://github.com/honza/vim-snippets/"; meta.homepage = "https://github.com/honza/vim-snippets/";
}; };
@ -7807,12 +7819,12 @@ let
vim-startuptime = buildVimPluginFrom2Nix { vim-startuptime = buildVimPluginFrom2Nix {
pname = "vim-startuptime"; pname = "vim-startuptime";
version = "2021-02-23"; version = "2021-03-22";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "dstein64"; owner = "dstein64";
repo = "vim-startuptime"; repo = "vim-startuptime";
rev = "af70d17a863c9a33def9cafbb3911195a571c686"; rev = "cee157ee4f73ddacfe1a70bb833b96f7a47a10c2";
sha256 = "078xq6bwkbwsjajyq3c9bn8b3r0da6j70vp1ba934a6jjdv6vrj4"; sha256 = "1y049vbjhsg80am0hxyrcq0d0p7qfyvb1z38nc7yd7bcgwsqc5ac";
}; };
meta.homepage = "https://github.com/dstein64/vim-startuptime/"; meta.homepage = "https://github.com/dstein64/vim-startuptime/";
}; };
@ -8528,12 +8540,12 @@ let
vimspector = buildVimPluginFrom2Nix { vimspector = buildVimPluginFrom2Nix {
pname = "vimspector"; pname = "vimspector";
version = "2021-03-20"; version = "2021-03-22";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "puremourning"; owner = "puremourning";
repo = "vimspector"; repo = "vimspector";
rev = "35e5b3d56e193ee6129eabedcd48fd17b8293b2d"; rev = "054ea35428e5e8d6abe12b6a535a3b0426d4874e";
sha256 = "0njs7bn3hzr44sn04lg44baia5khpxra0l1llshx42bkdidcj1s1"; sha256 = "0cx35hbyhrzmbfzsikbpa4jh0gr3sbdhk27v2nsbwj4i3rg9767p";
fetchSubmodules = true; fetchSubmodules = true;
}; };
meta.homepage = "https://github.com/puremourning/vimspector/"; meta.homepage = "https://github.com/puremourning/vimspector/";
@ -8541,12 +8553,12 @@ let
vimtex = buildVimPluginFrom2Nix { vimtex = buildVimPluginFrom2Nix {
pname = "vimtex"; pname = "vimtex";
version = "2021-03-21"; version = "2021-03-23";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "lervag"; owner = "lervag";
repo = "vimtex"; repo = "vimtex";
rev = "4b9e69dc5e817c3436843ee0cb431e59fa5705b0"; rev = "3109f140196716b3b3a430f06df35723d85f991d";
sha256 = "1s2h2bgd751jf7vj9dr1756g7gxdx3b7pwx49686273ibv1spnwf"; sha256 = "1n44sg35xm1jc70wpjgc5xjf8h6hrpa2f9jwq6x3dcrppj781naq";
}; };
meta.homepage = "https://github.com/lervag/vimtex/"; meta.homepage = "https://github.com/lervag/vimtex/";
}; };
@ -8722,12 +8734,12 @@ let
YouCompleteMe = buildVimPluginFrom2Nix { YouCompleteMe = buildVimPluginFrom2Nix {
pname = "YouCompleteMe"; pname = "YouCompleteMe";
version = "2021-03-20"; version = "2021-03-22";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "ycm-core"; owner = "ycm-core";
repo = "YouCompleteMe"; repo = "YouCompleteMe";
rev = "3352684bfb6a08be8e864a46b0773e459d4d201f"; rev = "ed423e8a1d2a5842a126d33b824ad3b65f85f3ba";
sha256 = "03mqrprmiain4n9aw5388msq4smczw1avcls71rj0c7igzpdc4vw"; sha256 = "19c238sdc6i3ky374v52g13csnbmdcm9d97iji6fmklmzsyrq4cr";
fetchSubmodules = true; fetchSubmodules = true;
}; };
meta.homepage = "https://github.com/ycm-core/YouCompleteMe/"; meta.homepage = "https://github.com/ycm-core/YouCompleteMe/";
@ -8771,12 +8783,12 @@ let
zephyr-nvim = buildVimPluginFrom2Nix { zephyr-nvim = buildVimPluginFrom2Nix {
pname = "zephyr-nvim"; pname = "zephyr-nvim";
version = "2021-03-18"; version = "2021-03-23";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "glepnir"; owner = "glepnir";
repo = "zephyr-nvim"; repo = "zephyr-nvim";
rev = "05315a214fc0b4681e596cbcb40045d54564ff8c"; rev = "79e273ed8ff386a81e6a88ae888ec6d878a9dcbc";
sha256 = "0bapbwyvvbvqd8ggcyns2y5iya44jvb0jxq14xh5qfnxiycrwrgi"; sha256 = "00x0b2lwrfkmny6rhwjrb1kyp2lai597f6f62whhwgw7iq9j5b5k";
}; };
meta.homepage = "https://github.com/glepnir/zephyr-nvim/"; meta.homepage = "https://github.com/glepnir/zephyr-nvim/";
}; };

View file

@ -3,6 +3,7 @@ aca/completion-tabnine
ackyshake/Spacegray.vim@main ackyshake/Spacegray.vim@main
airblade/vim-gitgutter airblade/vim-gitgutter
airblade/vim-rooter airblade/vim-rooter
akinsho/nvim-bufferline.lua
aklt/plantuml-syntax aklt/plantuml-syntax
altercation/vim-colors-solarized altercation/vim-colors-solarized
alvan/vim-closetag alvan/vim-closetag

View file

@ -1,4 +1,8 @@
{ lib, stdenv, fetchurl }: { lib
, stdenv
, fetchurl
, installShellFiles
}:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "mksh"; pname = "mksh";
@ -6,20 +10,30 @@ stdenv.mkDerivation rec {
src = fetchurl { src = fetchurl {
urls = [ urls = [
"https://www.mirbsd.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/mksh-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; dontConfigure = true;
buildPhase = "sh ./Build.sh -r"; buildPhase = ''
runHook preBuild
sh ./Build.sh -r
runHook postBuild
'';
installPhase = '' installPhase = ''
install -D -m 755 mksh $out/bin/mksh runHook preInstall
install -D -m 644 mksh.1 $out/share/man/man1/mksh.1 install -D mksh $out/bin/mksh
install -D -m 644 dot.mkshrc $out/share/mksh/mkshrc install -D dot.mkshrc $out/share/mksh/mkshrc
installManPage mksh.1
runHook postInstall
''; '';
meta = with lib; { meta = with lib; {
@ -32,7 +46,7 @@ stdenv.mkDerivation rec {
systems. systems.
''; '';
homepage = "https://www.mirbsd.org/mksh.htm"; homepage = "https://www.mirbsd.org/mksh.htm";
license = licenses.bsd3; license = with licenses; [ miros isc unicode-dfs-2016 ];
maintainers = with maintainers; [ AndersonTorres joachifm ]; maintainers = with maintainers; [ AndersonTorres joachifm ];
platforms = platforms.unix; platforms = platforms.unix;
}; };
@ -41,3 +55,5 @@ stdenv.mkDerivation rec {
shellPath = "/bin/mksh"; shellPath = "/bin/mksh";
}; };
} }
# TODO [ AndersonTorres ]: lksh
# TODO [ AndersonTorres ]: a more accurate licensing info

View file

@ -106,7 +106,12 @@ in rec {
++ depsTargetTarget ++ depsTargetTargetPropagated) == 0; ++ depsTargetTarget ++ depsTargetTargetPropagated) == 0;
dontAddHostSuffix = attrs ? outputHash && !noNonNativeDeps || (stdenv.noCC or false); dontAddHostSuffix = attrs ? outputHash && !noNonNativeDeps || (stdenv.noCC or false);
supportedHardeningFlags = [ "fortify" "stackprotector" "pie" "pic" "strictoverflow" "format" "relro" "bindnow" ]; 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 then supportedHardeningFlags
else lib.remove "pie" supportedHardeningFlags; else lib.remove "pie" supportedHardeningFlags;
enabledHardeningOptions = enabledHardeningOptions =

View file

@ -7,11 +7,11 @@
}: }:
python3.pkgs.buildPythonApplication rec { python3.pkgs.buildPythonApplication rec {
pname = "salt"; pname = "salt";
version = "3002.5"; version = "3002.6";
src = python3.pkgs.fetchPypi { src = python3.pkgs.fetchPypi {
inherit pname version; inherit pname version;
sha256 = "1bqranhanxcxjc1qcc6cm95f4xxag0ic9g61dq352hqh6m1l1ay8"; sha256 = "/8R4VpNj4dF7ajoMQh6q6cB5u+q8THcloiLQ+/kDoKU=";
}; };
propagatedBuildInputs = with python3.pkgs; [ propagatedBuildInputs = with python3.pkgs; [

View file

@ -46,6 +46,8 @@ let self = rec {
# addon packages # addon packages
a4ksubtitles = callPackage ../applications/video/kodi-packages/a4ksubtitles { };
controllers = { controllers = {
default = callPackage ../applications/video/kodi-packages/controllers { controller = "default"; }; default = callPackage ../applications/video/kodi-packages/controllers { controller = "default"; };