Merge staging-next into staging
This commit is contained in:
commit
0a29e611e1
|
@ -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.
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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")
|
||||||
|
|
|
@ -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(
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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 = [
|
||||||
|
|
|
@ -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;
|
||||||
|
};
|
||||||
|
}
|
|
@ -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" \
|
||||||
|
|
|
@ -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";
|
||||||
|
|
|
@ -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",
|
||||||
|
|
|
@ -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 = [
|
||||||
|
|
|
@ -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;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -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" ];
|
||||||
|
|
|
@ -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 ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -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 ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -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 = [
|
||||||
|
|
|
@ -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 ];
|
||||||
|
|
||||||
|
|
|
@ -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; {
|
||||||
|
|
|
@ -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/";
|
||||||
};
|
};
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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 =
|
||||||
|
|
|
@ -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; [
|
||||||
|
|
|
@ -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"; };
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue