diff --git a/nixos/doc/manual/release-notes/rl-2009.xml b/nixos/doc/manual/release-notes/rl-2009.xml
index 7d11d422e30..ce78bda8505 100644
--- a/nixos/doc/manual/release-notes/rl-2009.xml
+++ b/nixos/doc/manual/release-notes/rl-2009.xml
@@ -394,6 +394,20 @@ php.override {
+
+
+ The ACME module has been overhauled for simplicity and maintainability.
+ Cert generation now implicitly uses the acme
+ user, and the security.acme.certs._name_.user option
+ has been removed. Instead, certificate access from other services is now
+ managed through group permissions. The module no longer runs lego
+ twice under certain conditions, and will correctly renew certificates if
+ their configuration is changed. Services which reload nginx and httpd after
+ certificate renewal are now properly configured too so you no longer have
+ to do this manually if you are using HTTPS enabled virtual hosts. A mechanism
+ for regenerating certs on demand has also been added and documented.
+
+
Gollum received a major update to version 5.x and you may have to change
diff --git a/nixos/modules/security/acme.nix b/nixos/modules/security/acme.nix
index 29635dbe864..8e67d4ff871 100644
--- a/nixos/modules/security/acme.nix
+++ b/nixos/modules/security/acme.nix
@@ -1,11 +1,314 @@
-{ config, lib, pkgs, ... }:
+{ config, lib, pkgs, options, ... }:
with lib;
let
-
cfg = config.security.acme;
+ # Used to calculate timer accuracy for coalescing
+ numCerts = length (builtins.attrNames cfg.certs);
+ _24hSecs = 60 * 60 * 24;
+
+ # There are many services required to make cert renewals work.
+ # They all follow a common structure:
+ # - They inherit this commonServiceConfig
+ # - They all run as the acme user
+ # - They all use BindPath and StateDirectory where possible
+ # to set up a sort of build environment in /tmp
+ # The Group can vary depending on what the user has specified in
+ # security.acme.certs..group on some of the services.
+ commonServiceConfig = {
+ Type = "oneshot";
+ User = "acme";
+ Group = mkDefault "acme";
+ UMask = 0027;
+ StateDirectoryMode = 750;
+ ProtectSystem = "full";
+ PrivateTmp = true;
+
+ WorkingDirectory = "/tmp";
+ };
+
+ # In order to avoid race conditions creating the CA for selfsigned certs,
+ # we have a separate service which will create the necessary files.
+ selfsignCAService = {
+ description = "Generate self-signed certificate authority";
+
+ path = with pkgs; [ minica ];
+
+ unitConfig = {
+ ConditionPathExists = "!/var/lib/acme/.minica/key.pem";
+ };
+
+ serviceConfig = commonServiceConfig // {
+ StateDirectory = "acme/.minica";
+ BindPaths = "/var/lib/acme/.minica:/tmp/ca";
+ };
+
+ # Working directory will be /tmp
+ script = ''
+ minica \
+ --ca-key ca/key.pem \
+ --ca-cert ca/cert.pem \
+ --domains selfsigned.local
+
+ chmod 600 ca/*
+ '';
+ };
+
+ # Previously, all certs were owned by whatever user was configured in
+ # config.security.acme.certs..user. Now everything is owned by and
+ # run by the acme user.
+ userMigrationService = {
+ description = "Fix owner and group of all ACME certificates";
+
+ script = with builtins; concatStringsSep "\n" (mapAttrsToList (cert: data: ''
+ for fixpath in /var/lib/acme/${escapeShellArg cert} /var/lib/acme/.lego/${escapeShellArg cert}; do
+ if [ -d "$fixpath" ]; then
+ chmod -R 750 "$fixpath"
+ chown -R acme:${data.group} "$fixpath"
+ fi
+ done
+ '') certConfigs);
+
+ # We don't want this to run every time a renewal happens
+ serviceConfig.RemainAfterExit = true;
+ };
+
+ certToConfig = cert: data: let
+ acmeServer = if data.server != null then data.server else cfg.server;
+ useDns = data.dnsProvider != null;
+ destPath = "/var/lib/acme/${cert}";
+ selfsignedDeps = optionals (cfg.preliminarySelfsigned) [ "acme-selfsigned-${cert}.service" ];
+
+ # Minica and lego have a "feature" which replaces * with _. We need
+ # to make this substitution to reference the output files from both programs.
+ # End users never see this since we rename the certs.
+ keyName = builtins.replaceStrings ["*"] ["_"] data.domain;
+
+ # FIXME when mkChangedOptionModule supports submodules, change to that.
+ # This is a workaround
+ extraDomains = data.extraDomainNames ++ (
+ optionals
+ (data.extraDomains != "_mkMergedOptionModule")
+ (builtins.attrNames data.extraDomains)
+ );
+
+ # Create hashes for cert data directories based on configuration
+ # Flags are separated to avoid collisions
+ hashData = with builtins; ''
+ ${concatStringsSep " " data.extraLegoFlags} -
+ ${concatStringsSep " " data.extraLegoRunFlags} -
+ ${concatStringsSep " " data.extraLegoRenewFlags} -
+ ${toString acmeServer} ${toString data.dnsProvider}
+ ${toString data.ocspMustStaple} ${data.keyType}
+ '';
+ mkHash = with builtins; val: substring 0 20 (hashString "sha256" val);
+ certDir = mkHash hashData;
+ domainHash = mkHash "${concatStringsSep " " extraDomains} ${data.domain}";
+ othersHash = mkHash "${toString acmeServer} ${data.keyType}";
+ accountDir = "/var/lib/acme/.lego/accounts/" + othersHash;
+
+ protocolOpts = if useDns then (
+ [ "--dns" data.dnsProvider ]
+ ++ optionals (!data.dnsPropagationCheck) [ "--dns.disable-cp" ]
+ ) else (
+ [ "--http" "--http.webroot" data.webroot ]
+ );
+
+ commonOpts = [
+ "--accept-tos" # Checking the option is covered by the assertions
+ "--path" "."
+ "-d" data.domain
+ "--email" data.email
+ "--key-type" data.keyType
+ ] ++ protocolOpts
+ ++ optionals data.ocspMustStaple [ "--must-staple" ]
+ ++ optionals (acmeServer != null) [ "--server" acmeServer ]
+ ++ concatMap (name: [ "-d" name ]) extraDomains
+ ++ data.extraLegoFlags;
+
+ runOpts = escapeShellArgs (
+ commonOpts
+ ++ [ "run" ]
+ ++ data.extraLegoRunFlags
+ );
+ renewOpts = escapeShellArgs (
+ commonOpts
+ ++ [ "renew" "--reuse-key" ]
+ ++ data.extraLegoRenewFlags
+ );
+
+ in {
+ inherit accountDir selfsignedDeps;
+
+ webroot = data.webroot;
+ group = data.group;
+
+ renewTimer = {
+ description = "Renew ACME Certificate for ${cert}";
+ wantedBy = [ "timers.target" ];
+ timerConfig = {
+ OnCalendar = cfg.renewInterval;
+ Unit = "acme-${cert}.service";
+ Persistent = "yes";
+
+ # Allow systemd to pick a convenient time within the day
+ # to run the check.
+ # This allows the coalescing of multiple timer jobs.
+ # We divide by the number of certificates so that if you
+ # have many certificates, the renewals are distributed over
+ # the course of the day to avoid rate limits.
+ AccuracySec = "${toString (_24hSecs / numCerts)}s";
+
+ # Skew randomly within the day, per https://letsencrypt.org/docs/integration-guide/.
+ RandomizedDelaySec = "24h";
+ };
+ };
+
+ selfsignService = {
+ description = "Generate self-signed certificate for ${cert}";
+ after = [ "acme-selfsigned-ca.service" "acme-fixperms.service" ];
+ requires = [ "acme-selfsigned-ca.service" "acme-fixperms.service" ];
+
+ path = with pkgs; [ minica ];
+
+ unitConfig = {
+ ConditionPathExists = "!/var/lib/acme/${cert}/key.pem";
+ };
+
+ serviceConfig = commonServiceConfig // {
+ Group = data.group;
+
+ StateDirectory = "acme/${cert}";
+
+ BindPaths = "/var/lib/acme/.minica:/tmp/ca /var/lib/acme/${cert}:/tmp/${keyName}";
+ };
+
+ # Working directory will be /tmp
+ # minica will output to a folder sharing the name of the first domain
+ # in the list, which will be ${data.domain}
+ script = ''
+ minica \
+ --ca-key ca/key.pem \
+ --ca-cert ca/cert.pem \
+ --domains ${escapeShellArg (builtins.concatStringsSep "," ([ data.domain ] ++ extraDomains))}
+
+ # Create files to match directory layout for real certificates
+ cd '${keyName}'
+ cp ../ca/cert.pem chain.pem
+ cat cert.pem chain.pem > fullchain.pem
+ cat key.pem fullchain.pem > full.pem
+
+ chmod 640 *
+
+ # Group might change between runs, re-apply it
+ chown 'acme:${data.group}' *
+ '';
+ };
+
+ renewService = {
+ description = "Renew ACME certificate for ${cert}";
+ after = [ "network.target" "network-online.target" "acme-fixperms.service" ] ++ selfsignedDeps;
+ wants = [ "network-online.target" "acme-fixperms.service" ] ++ selfsignedDeps;
+
+ # https://github.com/NixOS/nixpkgs/pull/81371#issuecomment-605526099
+ wantedBy = optionals (!config.boot.isContainer) [ "multi-user.target" ];
+
+ path = with pkgs; [ lego coreutils diffutils ];
+
+ serviceConfig = commonServiceConfig // {
+ Group = data.group;
+
+ # AccountDir dir will be created by tmpfiles to ensure correct permissions
+ # And to avoid deletion during systemctl clean
+ # acme/.lego/${cert} is listed so that it is deleted during systemctl clean
+ StateDirectory = "acme/${cert} acme/.lego/${cert} acme/.lego/${cert}/${certDir}";
+
+ # Needs to be space separated, but can't use a multiline string because that'll include newlines
+ BindPaths =
+ "${accountDir}:/tmp/accounts " +
+ "/var/lib/acme/${cert}:/tmp/out " +
+ "/var/lib/acme/.lego/${cert}/${certDir}:/tmp/certificates ";
+
+ # Only try loading the credentialsFile if the dns challenge is enabled
+ EnvironmentFile = mkIf useDns data.credentialsFile;
+
+ # Run as root (Prefixed with +)
+ ExecStartPost = "+" + (pkgs.writeShellScript "acme-postrun" ''
+ cd /var/lib/acme/${escapeShellArg cert}
+ if [ -e renewed ]; then
+ rm renewed
+ ${data.postRun}
+ fi
+ '');
+ };
+
+ # Working directory will be /tmp
+ script = ''
+ set -euo pipefail
+
+ echo '${domainHash}' > domainhash.txt
+
+ # Check if we can renew
+ if [ -e 'certificates/${keyName}.key' -a -e 'certificates/${keyName}.crt' ]; then
+
+ # When domains are updated, there's no need to do a full
+ # Lego run, but it's likely renew won't work if days is too low.
+ if [ -e certificates/domainhash.txt ] && cmp -s domainhash.txt certificates/domainhash.txt; then
+ lego ${renewOpts} --days ${toString cfg.validMinDays}
+ else
+ # Any number > 90 works, but this one is over 9000 ;-)
+ lego ${renewOpts} --days 9001
+ fi
+
+ # Otherwise do a full run
+ else
+ lego ${runOpts}
+ fi
+
+ mv domainhash.txt certificates/
+ chmod 640 certificates/*
+ chmod -R 700 accounts/*
+
+ # Group might change between runs, re-apply it
+ chown 'acme:${data.group}' certificates/*
+
+ # Copy all certs to the "real" certs directory
+ CERT='certificates/${keyName}.crt'
+ if [ -e "$CERT" ] && ! cmp -s "$CERT" out/fullchain.pem; then
+ touch out/renewed
+ echo Installing new certificate
+ cp -vp 'certificates/${keyName}.crt' out/fullchain.pem
+ cp -vp 'certificates/${keyName}.key' out/key.pem
+ cp -vp 'certificates/${keyName}.issuer.crt' out/chain.pem
+ ln -sf fullchain.pem out/cert.pem
+ cat out/key.pem out/fullchain.pem > out/full.pem
+ fi
+ '';
+ };
+ };
+
+ certConfigs = mapAttrs certToConfig cfg.certs;
+
certOpts = { name, ... }: {
options = {
+ # user option has been removed
+ user = mkOption {
+ visible = false;
+ default = "_mkRemovedOptionModule";
+ };
+
+ # allowKeysForGroup option has been removed
+ allowKeysForGroup = mkOption {
+ visible = false;
+ default = "_mkRemovedOptionModule";
+ };
+
+ # extraDomains was replaced with extraDomainNames
+ extraDomains = mkOption {
+ visible = false;
+ default = "_mkMergedOptionModule";
+ };
+
webroot = mkOption {
type = types.nullOr types.str;
default = null;
@@ -41,35 +344,19 @@ let
description = "Contact email address for the CA to be able to reach you.";
};
- user = mkOption {
- type = types.str;
- default = "root";
- description = "User running the ACME client.";
- };
-
group = mkOption {
type = types.str;
- default = "root";
+ default = "acme";
description = "Group running the ACME client.";
};
- allowKeysForGroup = mkOption {
- type = types.bool;
- default = false;
- description = ''
- Give read permissions to the specified group
- () to read SSL private certificates.
- '';
- };
-
postRun = mkOption {
type = types.lines;
default = "";
- example = "systemctl reload nginx.service";
+ example = "cp full.pem backup.pem";
description = ''
- Commands to run after new certificates go live. Typically
- the web server and other servers using certificates need to
- be reloaded.
+ Commands to run after new certificates go live. Note that
+ these commands run as the root user.
Executed in the same directory with the new certificate.
'';
@@ -82,18 +369,17 @@ let
description = "Directory where certificate and other state is stored.";
};
- extraDomains = mkOption {
- type = types.attrsOf (types.nullOr types.str);
- default = {};
+ extraDomainNames = mkOption {
+ type = types.listOf types.str;
+ default = [];
example = literalExample ''
- {
- "example.org" = null;
- "mydomain.org" = null;
- }
+ [
+ "example.org"
+ "mydomain.org"
+ ]
'';
description = ''
A list of extra domain names, which are included in the one certificate to be issued.
- Setting a distinct server root is deprecated and not functional in 20.03+
'';
};
@@ -176,24 +462,8 @@ let
};
};
-in
+in {
-{
-
- ###### interface
- imports = [
- (mkRemovedOptionModule [ "security" "acme" "production" ] ''
- Use security.acme.server to define your staging ACME server URL instead.
-
- To use Let's Encrypt's staging server, use security.acme.server =
- "https://acme-staging-v02.api.letsencrypt.org/directory".
- ''
- )
- (mkRemovedOptionModule [ "security" "acme" "directory"] "ACME Directory is now hardcoded to /var/lib/acme and its permisisons are managed by systemd. See https://github.com/NixOS/nixpkgs/issues/53852 for more info.")
- (mkRemovedOptionModule [ "security" "acme" "preDelay"] "This option has been removed. If you want to make sure that something executes before certificates are provisioned, add a RequiredBy=acme-\${cert}.service to the service you want to execute before the cert renewal")
- (mkRemovedOptionModule [ "security" "acme" "activationDelay"] "This option has been removed. If you want to make sure that something executes before certificates are provisioned, add a RequiredBy=acme-\${cert}.service to the service you want to execute before the cert renewal")
- (mkChangedOptionModule [ "security" "acme" "validMin"] [ "security" "acme" "validMinDays"] (config: config.security.acme.validMin / (24 * 3600)))
- ];
options = {
security.acme = {
@@ -266,7 +536,7 @@ in
"example.com" = {
webroot = "/var/www/challenges/";
email = "foo@example.com";
- extraDomains = { "www.example.com" = null; "foo.example.com" = null; };
+ extraDomainNames = [ "www.example.com" "foo.example.com" ];
};
"bar.example.com" = {
webroot = "/var/www/challenges/";
@@ -278,25 +548,40 @@ in
};
};
- ###### implementation
+ imports = [
+ (mkRemovedOptionModule [ "security" "acme" "production" ] ''
+ Use security.acme.server to define your staging ACME server URL instead.
+
+ To use the let's encrypt staging server, use security.acme.server =
+ "https://acme-staging-v02.api.letsencrypt.org/directory".
+ ''
+ )
+ (mkRemovedOptionModule [ "security" "acme" "directory" ] "ACME Directory is now hardcoded to /var/lib/acme and its permisisons are managed by systemd. See https://github.com/NixOS/nixpkgs/issues/53852 for more info.")
+ (mkRemovedOptionModule [ "security" "acme" "preDelay" ] "This option has been removed. If you want to make sure that something executes before certificates are provisioned, add a RequiredBy=acme-\${cert}.service to the service you want to execute before the cert renewal")
+ (mkRemovedOptionModule [ "security" "acme" "activationDelay" ] "This option has been removed. If you want to make sure that something executes before certificates are provisioned, add a RequiredBy=acme-\${cert}.service to the service you want to execute before the cert renewal")
+ (mkChangedOptionModule [ "security" "acme" "validMin" ] [ "security" "acme" "validMinDays" ] (config: config.security.acme.validMin / (24 * 3600)))
+ ];
+
config = mkMerge [
(mkIf (cfg.certs != { }) {
+ # FIXME Most of these custom warnings and filters for security.acme.certs.* are required
+ # because using mkRemovedOptionModule/mkChangedOptionModule with attrsets isn't possible.
+ warnings = filter (w: w != "") (mapAttrsToList (cert: data: if data.extraDomains != "_mkMergedOptionModule" then ''
+ The option definition `security.acme.certs.${cert}.extraDomains` has changed
+ to `security.acme.certs.${cert}.extraDomainNames` and is now a list of strings.
+ Setting a custom webroot for extra domains is not possible, instead use separate certs.
+ '' else "") cfg.certs);
+
assertions = let
- certs = (mapAttrsToList (k: v: v) cfg.certs);
+ certs = attrValues cfg.certs;
in [
- {
- assertion = all (certOpts: certOpts.dnsProvider == null || certOpts.webroot == null) certs;
- message = ''
- Options `security.acme.certs..dnsProvider` and
- `security.acme.certs..webroot` are mutually exclusive.
- '';
- }
{
assertion = cfg.email != null || all (certOpts: certOpts.email != null) certs;
message = ''
You must define `security.acme.certs..email` or
- `security.acme.email` to register with the CA.
+ `security.acme.email` to register with the CA. Note that using
+ many different addresses for certs may trigger account rate limits.
'';
}
{
@@ -307,184 +592,78 @@ in
to `true`. For Let's Encrypt's ToS see https://letsencrypt.org/repository/
'';
}
- ];
+ ] ++ (builtins.concatLists (mapAttrsToList (cert: data: [
+ {
+ assertion = data.user == "_mkRemovedOptionModule";
+ message = ''
+ The option definition `security.acme.certs.${cert}.user' no longer has any effect; Please remove it.
+ Certificate user is now hard coded to the "acme" user. If you would
+ like another user to have access, consider adding them to the
+ "acme" group or changing security.acme.certs.${cert}.group.
+ '';
+ }
+ {
+ assertion = data.allowKeysForGroup == "_mkRemovedOptionModule";
+ message = ''
+ The option definition `security.acme.certs.${cert}.allowKeysForGroup' no longer has any effect; Please remove it.
+ All certs are readable by the configured group. If this is undesired,
+ consider changing security.acme.certs.${cert}.group to an unused group.
+ '';
+ }
+ # * in the cert value breaks building of systemd services, and makes
+ # referencing them as a user quite weird too. Best practice is to use
+ # the domain option.
+ {
+ assertion = ! hasInfix "*" cert;
+ message = ''
+ The cert option path `security.acme.certs.${cert}.dnsProvider`
+ cannot contain a * character.
+ Instead, set `security.acme.certs.${cert}.domain = "${cert}";`
+ and remove the wildcard from the path.
+ '';
+ }
+ {
+ assertion = data.dnsProvider == null || data.webroot == null;
+ message = ''
+ Options `security.acme.certs.${cert}.dnsProvider` and
+ `security.acme.certs.${cert}.webroot` are mutually exclusive.
+ '';
+ }
+ ]) cfg.certs));
- systemd.services = let
- services = concatLists servicesLists;
- servicesLists = mapAttrsToList certToServices cfg.certs;
- certToServices = cert: data:
- let
- # StateDirectory must be relative, and will be created under /var/lib by systemd
- lpath = "acme/${cert}";
- apath = "/var/lib/${lpath}";
- spath = "/var/lib/acme/.lego/${cert}";
- keyName = builtins.replaceStrings ["*"] ["_"] data.domain;
- requestedDomains = pipe ([ data.domain ] ++ (attrNames data.extraDomains)) [
- (domains: sort builtins.lessThan domains)
- (domains: concatStringsSep "," domains)
- ];
- fileMode = if data.allowKeysForGroup then "640" else "600";
- globalOpts = [ "-d" data.domain "--email" data.email "--path" "." "--key-type" data.keyType ]
- ++ optionals (cfg.acceptTerms) [ "--accept-tos" ]
- ++ optionals (data.dnsProvider != null && !data.dnsPropagationCheck) [ "--dns.disable-cp" ]
- ++ concatLists (mapAttrsToList (name: root: [ "-d" name ]) data.extraDomains)
- ++ (if data.dnsProvider != null then [ "--dns" data.dnsProvider ] else [ "--http" "--http.webroot" data.webroot ])
- ++ optionals (cfg.server != null || data.server != null) ["--server" (if data.server == null then cfg.server else data.server)]
- ++ data.extraLegoFlags;
- certOpts = optionals data.ocspMustStaple [ "--must-staple" ];
- runOpts = escapeShellArgs (globalOpts ++ [ "run" ] ++ certOpts ++ data.extraLegoRunFlags);
- renewOpts = escapeShellArgs (globalOpts ++
- [ "renew" "--days" (toString cfg.validMinDays) ] ++
- certOpts ++ data.extraLegoRenewFlags);
- acmeService = {
- description = "Renew ACME Certificate for ${cert}";
- path = with pkgs; [ openssl ];
- after = [ "network.target" "network-online.target" ];
- wants = [ "network-online.target" ];
- wantedBy = mkIf (!config.boot.isContainer) [ "multi-user.target" ];
- serviceConfig = {
- Type = "oneshot";
- User = data.user;
- Group = data.group;
- PrivateTmp = true;
- StateDirectory = "acme/.lego/${cert} acme/.lego/accounts ${lpath}";
- StateDirectoryMode = if data.allowKeysForGroup then "750" else "700";
- WorkingDirectory = spath;
- # Only try loading the credentialsFile if the dns challenge is enabled
- EnvironmentFile = if data.dnsProvider != null then data.credentialsFile else null;
- ExecStart = pkgs.writeScript "acme-start" ''
- #!${pkgs.runtimeShell} -e
- test -L ${spath}/accounts -o -d ${spath}/accounts || ln -s ../accounts ${spath}/accounts
- LEGO_ARGS=(${runOpts})
- if [ -e ${spath}/certificates/${keyName}.crt ]; then
- REQUESTED_DOMAINS="${requestedDomains}"
- EXISTING_DOMAINS="$(openssl x509 -in ${spath}/certificates/${keyName}.crt -noout -ext subjectAltName | tail -n1 | sed -e 's/ *DNS://g')"
- if [ "''${REQUESTED_DOMAINS}" == "''${EXISTING_DOMAINS}" ]; then
- LEGO_ARGS=(${renewOpts})
- fi
- fi
- ${pkgs.lego}/bin/lego ''${LEGO_ARGS[@]}
- '';
- ExecStartPost =
- let
- script = pkgs.writeScript "acme-post-start" ''
- #!${pkgs.runtimeShell} -e
- cd ${apath}
+ users.users.acme = {
+ home = "/var/lib/acme";
+ group = "acme";
+ isSystemUser = true;
+ };
- # Test that existing cert is older than new cert
- KEY=${spath}/certificates/${keyName}.key
- KEY_CHANGED=no
- if [ -e $KEY -a $KEY -nt key.pem ]; then
- KEY_CHANGED=yes
- cp -p ${spath}/certificates/${keyName}.key key.pem
- cp -p ${spath}/certificates/${keyName}.crt fullchain.pem
- cp -p ${spath}/certificates/${keyName}.issuer.crt chain.pem
- ln -sf fullchain.pem cert.pem
- cat key.pem fullchain.pem > full.pem
- fi
+ users.groups.acme = {};
- chmod ${fileMode} *.pem
- chown '${data.user}:${data.group}' *.pem
+ systemd.services = {
+ "acme-fixperms" = userMigrationService;
+ } // (mapAttrs' (cert: conf: nameValuePair "acme-${cert}" conf.renewService) certConfigs)
+ // (optionalAttrs (cfg.preliminarySelfsigned) ({
+ "acme-selfsigned-ca" = selfsignCAService;
+ } // (mapAttrs' (cert: conf: nameValuePair "acme-selfsigned-${cert}" conf.selfsignService) certConfigs)));
- if [ "$KEY_CHANGED" = "yes" ]; then
- : # noop in case postRun is empty
- ${data.postRun}
- fi
- '';
- in
- "+${script}";
- };
+ systemd.timers = mapAttrs' (cert: conf: nameValuePair "acme-${cert}" conf.renewTimer) certConfigs;
- };
- selfsignedService = {
- description = "Create preliminary self-signed certificate for ${cert}";
- path = [ pkgs.openssl ];
- script =
- ''
- workdir="$(mktemp -d)"
+ # .lego and .lego/accounts specified to fix any incorrect permissions
+ systemd.tmpfiles.rules = [
+ "d /var/lib/acme/.lego - acme acme"
+ "d /var/lib/acme/.lego/accounts - acme acme"
+ ] ++ (unique (concatMap (conf: [
+ "d ${conf.accountDir} - acme acme"
+ ] ++ (optional (conf.webroot != null) "d ${conf.webroot}/.well-known/acme-challenge - acme ${conf.group}")
+ ) (attrValues certConfigs)));
- # Create CA
- openssl genrsa -des3 -passout pass:xxxx -out $workdir/ca.pass.key 2048
- openssl rsa -passin pass:xxxx -in $workdir/ca.pass.key -out $workdir/ca.key
- openssl req -new -key $workdir/ca.key -out $workdir/ca.csr \
- -subj "/C=UK/ST=Warwickshire/L=Leamington/O=OrgName/OU=Security Department/CN=example.com"
- openssl x509 -req -days 1 -in $workdir/ca.csr -signkey $workdir/ca.key -out $workdir/ca.crt
-
- # Create key
- openssl genrsa -des3 -passout pass:xxxx -out $workdir/server.pass.key 2048
- openssl rsa -passin pass:xxxx -in $workdir/server.pass.key -out $workdir/server.key
- openssl req -new -key $workdir/server.key -out $workdir/server.csr \
- -subj "/C=UK/ST=Warwickshire/L=Leamington/O=OrgName/OU=IT Department/CN=example.com"
- openssl x509 -req -days 1 -in $workdir/server.csr -CA $workdir/ca.crt \
- -CAkey $workdir/ca.key -CAserial $workdir/ca.srl -CAcreateserial \
- -out $workdir/server.crt
-
- # Copy key to destination
- cp $workdir/server.key ${apath}/key.pem
-
- # Create fullchain.pem (same format as "simp_le ... -f fullchain.pem" creates)
- cat $workdir/{server.crt,ca.crt} > "${apath}/fullchain.pem"
-
- # Create full.pem for e.g. lighttpd
- cat $workdir/{server.key,server.crt,ca.crt} > "${apath}/full.pem"
-
- # Give key acme permissions
- chown '${data.user}:${data.group}' "${apath}/"{key,fullchain,full}.pem
- chmod ${fileMode} "${apath}/"{key,fullchain,full}.pem
- '';
- serviceConfig = {
- Type = "oneshot";
- PrivateTmp = true;
- StateDirectory = lpath;
- User = data.user;
- Group = data.group;
- };
- unitConfig = {
- # Do not create self-signed key when key already exists
- ConditionPathExists = "!${apath}/key.pem";
- };
- };
- in (
- [ { name = "acme-${cert}"; value = acmeService; } ]
- ++ optional cfg.preliminarySelfsigned { name = "acme-selfsigned-${cert}"; value = selfsignedService; }
- );
- servicesAttr = listToAttrs services;
- in
- servicesAttr;
-
- systemd.tmpfiles.rules =
- map (data: "d ${data.webroot}/.well-known/acme-challenge - ${data.user} ${data.group}") (filter (data: data.webroot != null) (attrValues cfg.certs));
-
- systemd.timers = let
- # Allow systemd to pick a convenient time within the day
- # to run the check.
- # This allows the coalescing of multiple timer jobs.
- # We divide by the number of certificates so that if you
- # have many certificates, the renewals are distributed over
- # the course of the day to avoid rate limits.
- numCerts = length (attrNames cfg.certs);
- _24hSecs = 60 * 60 * 24;
- AccuracySec = "${toString (_24hSecs / numCerts)}s";
- in flip mapAttrs' cfg.certs (cert: data: nameValuePair
- ("acme-${cert}")
- ({
- description = "Renew ACME Certificate for ${cert}";
- wantedBy = [ "timers.target" ];
- timerConfig = {
- OnCalendar = cfg.renewInterval;
- Unit = "acme-${cert}.service";
- Persistent = "yes";
- inherit AccuracySec;
- # Skew randomly within the day, per https://letsencrypt.org/docs/integration-guide/.
- RandomizedDelaySec = "24h";
- };
- })
- );
-
- systemd.targets.acme-selfsigned-certificates = mkIf cfg.preliminarySelfsigned {};
- systemd.targets.acme-certificates = {};
+ # Create some targets which can be depended on to be "active" after cert renewals
+ systemd.targets = mapAttrs' (cert: conf: nameValuePair "acme-finished-${cert}" {
+ wantedBy = [ "default.target" ];
+ requires = [ "acme-${cert}.service" ] ++ conf.selfsignedDeps;
+ after = [ "acme-${cert}.service" ] ++ conf.selfsignedDeps;
+ }) certConfigs;
})
-
];
meta = {
diff --git a/nixos/modules/security/acme.xml b/nixos/modules/security/acme.xml
index f802faee974..17e94bc12fb 100644
--- a/nixos/modules/security/acme.xml
+++ b/nixos/modules/security/acme.xml
@@ -72,7 +72,7 @@ services.nginx = {
"foo.example.com" = {
forceSSL = true;
enableACME = true;
- # All serverAliases will be added as extra domains on the certificate.
+ # All serverAliases will be added as extra domain names on the certificate.
serverAliases = [ "bar.example.com" ];
locations."/" = {
root = "/var/www";
@@ -80,8 +80,8 @@ services.nginx = {
};
# We can also add a different vhost and reuse the same certificate
- # but we have to append extraDomains manually.
- security.acme.certs."foo.example.com".extraDomains."baz.example.com" = null;
+ # but we have to append extraDomainNames manually.
+ security.acme.certs."foo.example.com".extraDomainNames = [ "baz.example.com" ];
"baz.example.com" = {
forceSSL = true;
useACMEHost = "foo.example.com";
@@ -165,7 +165,7 @@ services.httpd = {
# Since we have a wildcard vhost to handle port 80,
# we can generate certs for anything!
# Just make sure your DNS resolves them.
- extraDomains = [ "mail.example.com" ];
+ extraDomainNames = [ "mail.example.com" ];
};
@@ -251,4 +251,16 @@ chmod 400 /var/lib/secrets/certs.secret
journalctl -fu acme-example.com.service and watching its log output.
+
+ Regenerating certificates
+
+
+ Should you need to regenerate a particular certificate in a hurry, such
+ as when a vulnerability is found in Let's Encrypt, there is now a convenient
+ mechanism for doing so. Running systemctl clean acme-example.com.service
+ will remove all certificate files for the given domain, allowing you to then
+ systemctl start acme-example.com.service to generate fresh
+ ones.
+
+
diff --git a/nixos/modules/services/backup/borgbackup.xml b/nixos/modules/services/backup/borgbackup.xml
index bef7db608f8..a197f38ffb9 100644
--- a/nixos/modules/services/backup/borgbackup.xml
+++ b/nixos/modules/services/backup/borgbackup.xml
@@ -197,26 +197,8 @@ sudo borg init --encryption=repokey-blake2 \
disk failure, ransomware and theft.
- It is available as a flatpak package. To enable it you must set the
- following two configuration items.
-
-
-
-services.flatpak.enable = true ;
-# next line is needed to avoid the Error
-# Error deploying: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown:
-services.accounts-daemon.enable = true;
-
-
- As a normal user you must first install, then run vorta using the
- following commands:
-
-flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
-flatpak install flathub com.borgbase.Vorta
-flatpak run --branch=stable --arch=x86_64 --command=vorta com.borgbase.Vorta
-
- After running flatpak install
you can start Vorta also via
- the KDE application menu.
+ It can be installed in NixOS e.g. by adding pkgs.vorta
+ to .
Details about using Vorta can be found under extraDomains module option.
+ extraDomainNames module option.
Provided the setup detailed in the previous section, you'll need the following acme configuration to generate
@@ -78,8 +78,7 @@ security.acme = {
"example.org" = {
webroot = "/var/www/example.org";
email = "root@example.org";
- extraDomains."conference.example.org" = null;
- extraDomains."upload.example.org" = null;
+ extraDomainNames = [ "conference.example.org" "upload.example.org" ];
};
};
};
diff --git a/nixos/modules/services/networking/ssh/sshd.nix b/nixos/modules/services/networking/ssh/sshd.nix
index 6b27cbc56bd..5365b8b9b10 100644
--- a/nixos/modules/services/networking/ssh/sshd.nix
+++ b/nixos/modules/services/networking/ssh/sshd.nix
@@ -232,6 +232,14 @@ in
'';
};
+ banner = mkOption {
+ type = types.nullOr types.lines;
+ default = null;
+ description = ''
+ Message to display to the remote user before authentication is allowed.
+ '';
+ };
+
authorizedKeysFiles = mkOption {
type = types.listOf types.str;
default = [];
@@ -474,6 +482,8 @@ in
''
UsePAM yes
+ Banner ${if cfg.banner == null then "none" else pkgs.writeText "ssh_banner" cfg.banner}
+
AddressFamily ${if config.networking.enableIPv6 then "any" else "inet"}
${concatMapStrings (port: ''
Port ${toString port}
diff --git a/nixos/modules/services/web-servers/apache-httpd/default.nix b/nixos/modules/services/web-servers/apache-httpd/default.nix
index fc4c2945394..6dd1c85132c 100644
--- a/nixos/modules/services/web-servers/apache-httpd/default.nix
+++ b/nixos/modules/services/web-servers/apache-httpd/default.nix
@@ -6,6 +6,8 @@ let
cfg = config.services.httpd;
+ certs = config.security.acme.certs;
+
runtimeDir = "/run/httpd";
pkg = cfg.package.out;
@@ -26,6 +28,13 @@ let
vhosts = attrValues cfg.virtualHosts;
+ # certName is used later on to determine systemd service names.
+ acmeEnabledVhosts = map (hostOpts: hostOpts // {
+ certName = if hostOpts.useACMEHost != null then hostOpts.useACMEHost else hostOpts.hostName;
+ }) (filter (hostOpts: hostOpts.enableACME || hostOpts.useACMEHost != null) vhosts);
+
+ dependentCertNames = unique (map (hostOpts: hostOpts.certName) acmeEnabledVhosts);
+
mkListenInfo = hostOpts:
if hostOpts.listen != [] then hostOpts.listen
else (
@@ -125,13 +134,13 @@ let
useACME = hostOpts.enableACME || hostOpts.useACMEHost != null;
sslCertDir =
- if hostOpts.enableACME then config.security.acme.certs.${hostOpts.hostName}.directory
- else if hostOpts.useACMEHost != null then config.security.acme.certs.${hostOpts.useACMEHost}.directory
+ if hostOpts.enableACME then certs.${hostOpts.hostName}.directory
+ else if hostOpts.useACMEHost != null then certs.${hostOpts.useACMEHost}.directory
else abort "This case should never happen.";
- sslServerCert = if useACME then "${sslCertDir}/full.pem" else hostOpts.sslServerCert;
+ sslServerCert = if useACME then "${sslCertDir}/fullchain.pem" else hostOpts.sslServerCert;
sslServerKey = if useACME then "${sslCertDir}/key.pem" else hostOpts.sslServerKey;
- sslServerChain = if useACME then "${sslCertDir}/fullchain.pem" else hostOpts.sslServerChain;
+ sslServerChain = if useACME then "${sslCertDir}/chain.pem" else hostOpts.sslServerChain;
acmeChallenge = optionalString useACME ''
Alias /.well-known/acme-challenge/ "${hostOpts.acmeRoot}/.well-known/acme-challenge/"
@@ -347,7 +356,6 @@ let
cat ${php.phpIni} > $out
echo "$options" >> $out
'';
-
in
@@ -647,14 +655,17 @@ in
wwwrun.gid = config.ids.gids.wwwrun;
};
- security.acme.certs = mapAttrs (name: hostOpts: {
- user = cfg.user;
- group = mkDefault cfg.group;
- email = if hostOpts.adminAddr != null then hostOpts.adminAddr else cfg.adminAddr;
- webroot = hostOpts.acmeRoot;
- extraDomains = genAttrs hostOpts.serverAliases (alias: null);
- postRun = "systemctl reload httpd.service";
- }) (filterAttrs (name: hostOpts: hostOpts.enableACME) cfg.virtualHosts);
+ security.acme.certs = let
+ acmePairs = map (hostOpts: nameValuePair hostOpts.hostName {
+ group = mkDefault cfg.group;
+ webroot = hostOpts.acmeRoot;
+ extraDomainNames = hostOpts.serverAliases;
+ # Use the vhost-specific email address if provided, otherwise let
+ # security.acme.email or security.acme.certs..email be used.
+ email = mkOverride 2000 (if hostOpts.adminAddr != null then hostOpts.adminAddr else cfg.adminAddr);
+ # Filter for enableACME-only vhosts. Don't want to create dud certs
+ }) (filter (hostOpts: hostOpts.useACMEHost == null) acmeEnabledVhosts);
+ in listToAttrs acmePairs;
environment.systemPackages = [
apachectl
@@ -724,16 +735,12 @@ in
"Z '${cfg.logDir}' - ${svc.User} ${svc.Group}"
];
- systemd.services.httpd =
- let
- vhostsACME = filter (hostOpts: hostOpts.enableACME) vhosts;
- in
- { description = "Apache HTTPD";
-
+ systemd.services.httpd = {
+ description = "Apache HTTPD";
wantedBy = [ "multi-user.target" ];
- wants = concatLists (map (hostOpts: [ "acme-${hostOpts.hostName}.service" "acme-selfsigned-${hostOpts.hostName}.service" ]) vhostsACME);
- after = [ "network.target" "fs.target" ] ++ map (hostOpts: "acme-selfsigned-${hostOpts.hostName}.service") vhostsACME;
- before = map (hostOpts: "acme-${hostOpts.hostName}.service") vhostsACME;
+ wants = concatLists (map (certName: [ "acme-finished-${certName}.target" ]) dependentCertNames);
+ after = [ "network.target" ] ++ map (certName: "acme-selfsigned-${certName}.service") dependentCertNames;
+ before = map (certName: "acme-${certName}.service") dependentCertNames;
path = [ pkg pkgs.coreutils pkgs.gnugrep ];
@@ -767,5 +774,31 @@ in
};
};
+ # postRun hooks on cert renew can't be used to restart Apache since renewal
+ # runs as the unprivileged acme user. sslTargets are added to wantedBy + before
+ # which allows the acme-finished-$cert.target to signify the successful updating
+ # of certs end-to-end.
+ systemd.services.httpd-config-reload = let
+ sslServices = map (certName: "acme-${certName}.service") dependentCertNames;
+ sslTargets = map (certName: "acme-finished-${certName}.target") dependentCertNames;
+ in mkIf (sslServices != []) {
+ wantedBy = sslServices ++ [ "multi-user.target" ];
+ # Before the finished targets, after the renew services.
+ # This service might be needed for HTTP-01 challenges, but we only want to confirm
+ # certs are updated _after_ config has been reloaded.
+ before = sslTargets;
+ after = sslServices;
+ # Block reloading if not all certs exist yet.
+ # Happens when config changes add new vhosts/certs.
+ unitConfig.ConditionPathExists = map (certName: certs.${certName}.directory + "/fullchain.pem") dependentCertNames;
+ serviceConfig = {
+ Type = "oneshot";
+ TimeoutSec = 60;
+ ExecCondition = "/run/current-system/systemd/bin/systemctl -q is-active httpd.service";
+ ExecStartPre = "${pkg}/bin/httpd -f ${httpdConf} -t";
+ ExecStart = "/run/current-system/systemd/bin/systemctl reload httpd.service";
+ };
+ };
+
};
}
diff --git a/nixos/modules/services/web-servers/nginx/default.nix b/nixos/modules/services/web-servers/nginx/default.nix
index 461888c4cc4..975b56d4782 100644
--- a/nixos/modules/services/web-servers/nginx/default.nix
+++ b/nixos/modules/services/web-servers/nginx/default.nix
@@ -6,23 +6,23 @@ let
cfg = config.services.nginx;
certs = config.security.acme.certs;
vhostsConfigs = mapAttrsToList (vhostName: vhostConfig: vhostConfig) virtualHosts;
- acmeEnabledVhosts = filter (vhostConfig: vhostConfig.enableACME && vhostConfig.useACMEHost == null) vhostsConfigs;
+ acmeEnabledVhosts = filter (vhostConfig: vhostConfig.enableACME || vhostConfig.useACMEHost != null) vhostsConfigs;
+ dependentCertNames = unique (map (hostOpts: hostOpts.certName) acmeEnabledVhosts);
virtualHosts = mapAttrs (vhostName: vhostConfig:
let
serverName = if vhostConfig.serverName != null
then vhostConfig.serverName
else vhostName;
+ certName = if vhostConfig.useACMEHost != null
+ then vhostConfig.useACMEHost
+ else serverName;
in
vhostConfig // {
- inherit serverName;
- } // (optionalAttrs vhostConfig.enableACME {
- sslCertificate = "${certs.${serverName}.directory}/fullchain.pem";
- sslCertificateKey = "${certs.${serverName}.directory}/key.pem";
- sslTrustedCertificate = "${certs.${serverName}.directory}/full.pem";
- }) // (optionalAttrs (vhostConfig.useACMEHost != null) {
- sslCertificate = "${certs.${vhostConfig.useACMEHost}.directory}/fullchain.pem";
- sslCertificateKey = "${certs.${vhostConfig.useACMEHost}.directory}/key.pem";
- sslTrustedCertificate = "${certs.${vhostConfig.useACMEHost}.directory}/fullchain.pem";
+ inherit serverName certName;
+ } // (optionalAttrs (vhostConfig.enableACME || vhostConfig.useACMEHost != null) {
+ sslCertificate = "${certs.${certName}.directory}/fullchain.pem";
+ sslCertificateKey = "${certs.${certName}.directory}/key.pem";
+ sslTrustedCertificate = "${certs.${certName}.directory}/chain.pem";
})
) cfg.virtualHosts;
enableIPv6 = config.networking.enableIPv6;
@@ -691,12 +691,12 @@ in
systemd.services.nginx = {
description = "Nginx Web Server";
wantedBy = [ "multi-user.target" ];
- wants = concatLists (map (vhostConfig: ["acme-${vhostConfig.serverName}.service" "acme-selfsigned-${vhostConfig.serverName}.service"]) acmeEnabledVhosts);
- after = [ "network.target" ] ++ map (vhostConfig: "acme-selfsigned-${vhostConfig.serverName}.service") acmeEnabledVhosts;
+ wants = concatLists (map (certName: [ "acme-finished-${certName}.target" ]) dependentCertNames);
+ after = [ "network.target" ] ++ map (certName: "acme-selfsigned-${certName}.service") dependentCertNames;
# Nginx needs to be started in order to be able to request certificates
# (it's hosting the acme challenge after all)
# This fixes https://github.com/NixOS/nixpkgs/issues/81842
- before = map (vhostConfig: "acme-${vhostConfig.serverName}.service") acmeEnabledVhosts;
+ before = map (certName: "acme-${certName}.service") dependentCertNames;
stopIfChanged = false;
preStart = ''
${cfg.preStart}
@@ -753,37 +753,41 @@ in
source = configFile;
};
- systemd.services.nginx-config-reload = mkIf cfg.enableReload {
- wants = [ "nginx.service" ];
- wantedBy = [ "multi-user.target" ];
- restartTriggers = [ configFile ];
- # commented, because can cause extra delays during activate for this config:
- # services.nginx.virtualHosts."_".locations."/".proxyPass = "http://blabla:3000";
- # stopIfChanged = false;
- serviceConfig.Type = "oneshot";
- serviceConfig.TimeoutSec = 60;
- script = ''
- if /run/current-system/systemd/bin/systemctl -q is-active nginx.service ; then
- /run/current-system/systemd/bin/systemctl reload nginx.service
- fi
- '';
- serviceConfig.RemainAfterExit = true;
+ # postRun hooks on cert renew can't be used to restart Nginx since renewal
+ # runs as the unprivileged acme user. sslTargets are added to wantedBy + before
+ # which allows the acme-finished-$cert.target to signify the successful updating
+ # of certs end-to-end.
+ systemd.services.nginx-config-reload = let
+ sslServices = map (certName: "acme-${certName}.service") dependentCertNames;
+ sslTargets = map (certName: "acme-finished-${certName}.target") dependentCertNames;
+ in mkIf (cfg.enableReload || sslServices != []) {
+ wants = optionals (cfg.enableReload) [ "nginx.service" ];
+ wantedBy = sslServices ++ [ "multi-user.target" ];
+ # Before the finished targets, after the renew services.
+ # This service might be needed for HTTP-01 challenges, but we only want to confirm
+ # certs are updated _after_ config has been reloaded.
+ before = sslTargets;
+ after = sslServices;
+ restartTriggers = optionals (cfg.enableReload) [ configFile ];
+ # Block reloading if not all certs exist yet.
+ # Happens when config changes add new vhosts/certs.
+ unitConfig.ConditionPathExists = optionals (sslServices != []) (map (certName: certs.${certName}.directory + "/fullchain.pem") dependentCertNames);
+ serviceConfig = {
+ Type = "oneshot";
+ TimeoutSec = 60;
+ ExecCondition = "/run/current-system/systemd/bin/systemctl -q is-active nginx.service";
+ ExecStart = "/run/current-system/systemd/bin/systemctl reload nginx.service";
+ };
};
- security.acme.certs = filterAttrs (n: v: v != {}) (
- let
- acmePairs = map (vhostConfig: { name = vhostConfig.serverName; value = {
- user = cfg.user;
- group = lib.mkDefault cfg.group;
- webroot = vhostConfig.acmeRoot;
- extraDomains = genAttrs vhostConfig.serverAliases (alias: null);
- postRun = ''
- /run/current-system/systemd/bin/systemctl reload nginx
- '';
- }; }) acmeEnabledVhosts;
- in
- listToAttrs acmePairs
- );
+ security.acme.certs = let
+ acmePairs = map (vhostConfig: nameValuePair vhostConfig.serverName {
+ group = mkDefault cfg.group;
+ webroot = vhostConfig.acmeRoot;
+ extraDomainNames = vhostConfig.serverAliases;
+ # Filter for enableACME-only vhosts. Don't want to create dud certs
+ }) (filter (vhostConfig: vhostConfig.useACMEHost == null) acmeEnabledVhosts);
+ in listToAttrs acmePairs;
users.users = optionalAttrs (cfg.user == "nginx") {
nginx = {
diff --git a/nixos/tests/acme.nix b/nixos/tests/acme.nix
index a8188473721..64193ed8498 100644
--- a/nixos/tests/acme.nix
+++ b/nixos/tests/acme.nix
@@ -1,29 +1,43 @@
let
commonConfig = ./common/acme/client;
- dnsScript = {writeScript, dnsAddress, bash, curl}: writeScript "dns-hook.sh" ''
- #!${bash}/bin/bash
+ dnsServerIP = nodes: nodes.dnsserver.config.networking.primaryIPAddress;
+
+ dnsScript = {pkgs, nodes}: let
+ dnsAddress = dnsServerIP nodes;
+ in pkgs.writeShellScript "dns-hook.sh" ''
set -euo pipefail
echo '[INFO]' "[$2]" 'dns-hook.sh' $*
if [ "$1" = "present" ]; then
- ${curl}/bin/curl --data '{"host": "'"$2"'", "value": "'"$3"'"}' http://${dnsAddress}:8055/set-txt
+ ${pkgs.curl}/bin/curl --data '{"host": "'"$2"'", "value": "'"$3"'"}' http://${dnsAddress}:8055/set-txt
else
- ${curl}/bin/curl --data '{"host": "'"$2"'"}' http://${dnsAddress}:8055/clear-txt
+ ${pkgs.curl}/bin/curl --data '{"host": "'"$2"'"}' http://${dnsAddress}:8055/clear-txt
fi
'';
+ documentRoot = pkgs: pkgs.runCommand "docroot" {} ''
+ mkdir -p "$out"
+ echo hello world > "$out/index.html"
+ '';
+
+ vhostBase = pkgs: {
+ forceSSL = true;
+ locations."/".root = documentRoot pkgs;
+ };
+
in import ./make-test-python.nix ({ lib, ... }: {
name = "acme";
meta.maintainers = lib.teams.acme.members;
- nodes = rec {
+ nodes = {
+ # The fake ACME server which will respond to client requests
acme = { nodes, lib, ... }: {
imports = [ ./common/acme/server ];
- networking.nameservers = lib.mkForce [
- nodes.dnsserver.config.networking.primaryIPAddress
- ];
+ networking.nameservers = lib.mkForce [ (dnsServerIP nodes) ];
};
+ # A fake DNS server which can be configured with records as desired
+ # Used to test DNS-01 challenge
dnsserver = { nodes, pkgs, ... }: {
networking.firewall.allowedTCPPorts = [ 8055 53 ];
networking.firewall.allowedUDPPorts = [ 53 ];
@@ -39,112 +53,97 @@ in import ./make-test-python.nix ({ lib, ... }: {
};
};
- acmeStandalone = { nodes, lib, config, pkgs, ... }: {
- imports = [ commonConfig ];
- networking.nameservers = lib.mkForce [
- nodes.dnsserver.config.networking.primaryIPAddress
- ];
- networking.firewall.allowedTCPPorts = [ 80 ];
- security.acme.certs."standalone.test" = {
- webroot = "/var/lib/acme/acme-challenges";
- };
- systemd.targets."acme-finished-standalone.test" = {
- after = [ "acme-standalone.test.service" ];
- wantedBy = [ "acme-standalone.test.service" ];
- };
- services.nginx.enable = true;
- services.nginx.virtualHosts."standalone.test" = {
- locations."/.well-known/acme-challenge".root = "/var/lib/acme/acme-challenges";
- };
- };
-
- webserver = { nodes, config, pkgs, lib, ... }: {
+ # A web server which will be the node requesting certs
+ webserver = { pkgs, nodes, lib, config, ... }: {
imports = [ commonConfig ];
+ networking.nameservers = lib.mkForce [ (dnsServerIP nodes) ];
networking.firewall.allowedTCPPorts = [ 80 443 ];
- networking.nameservers = lib.mkForce [
- nodes.dnsserver.config.networking.primaryIPAddress
- ];
- # A target remains active. Use this to probe the fact that
- # a service fired eventhough it is not RemainAfterExit
- systemd.targets."acme-finished-a.example.test" = {
- after = [ "acme-a.example.test.service" ];
- wantedBy = [ "acme-a.example.test.service" ];
+ # OpenSSL will be used for more thorough certificate validation
+ environment.systemPackages = [ pkgs.openssl ];
+
+ # Set log level to info so that we can see when the service is reloaded
+ services.nginx.enable = true;
+ services.nginx.logError = "stderr info";
+
+ # First tests configure a basic cert and run a bunch of openssl checks
+ services.nginx.virtualHosts."a.example.test" = (vhostBase pkgs) // {
+ enableACME = true;
};
- services.nginx.enable = true;
+ # Used to determine if service reload was triggered
+ systemd.targets.test-renew-nginx = {
+ wants = [ "acme-a.example.test.service" ];
+ after = [ "acme-a.example.test.service" "nginx-config-reload.service" ];
+ };
- services.nginx.virtualHosts."a.example.test" = {
- enableACME = true;
- forceSSL = true;
- locations."/".root = pkgs.runCommand "docroot" {} ''
- mkdir -p "$out"
- echo hello world > "$out/index.html"
+ # Cert config changes will not cause the nginx configuration to change.
+ # This tests that the reload service is correctly triggered.
+ # It also tests that postRun is exec'd as root
+ specialisation.cert-change.configuration = { pkgs, ... }: {
+ security.acme.certs."a.example.test".keyType = "ec384";
+ security.acme.certs."a.example.test".postRun = ''
+ set -euo pipefail
+ touch test
+ chown root:root test
+ echo testing > test
'';
};
- security.acme.server = "https://acme.test/dir";
-
- specialisation.second-cert.configuration = {pkgs, ...}: {
- systemd.targets."acme-finished-b.example.test" = {
- after = [ "acme-b.example.test.service" ];
- wantedBy = [ "acme-b.example.test.service" ];
- };
- services.nginx.virtualHosts."b.example.test" = {
- enableACME = true;
- forceSSL = true;
- locations."/".root = pkgs.runCommand "docroot" {} ''
- mkdir -p "$out"
- echo hello world > "$out/index.html"
- '';
+ # Now adding an alias to ensure that the certs are updated
+ specialisation.nginx-aliases.configuration = { pkgs, ... }: {
+ services.nginx.virtualHosts."a.example.test" = {
+ serverAliases = [ "b.example.test" ];
};
};
- specialisation.dns-01.configuration = {pkgs, config, nodes, lib, ...}: {
+ # Test using Apache HTTPD
+ specialisation.httpd-aliases.configuration = { pkgs, config, lib, ... }: {
+ services.nginx.enable = lib.mkForce false;
+ services.httpd.enable = true;
+ services.httpd.adminAddr = config.security.acme.email;
+ services.httpd.virtualHosts."c.example.test" = {
+ serverAliases = [ "d.example.test" ];
+ forceSSL = true;
+ enableACME = true;
+ documentRoot = documentRoot pkgs;
+ };
+
+ # Used to determine if service reload was triggered
+ systemd.targets.test-renew-httpd = {
+ wants = [ "acme-c.example.test.service" ];
+ after = [ "acme-c.example.test.service" "httpd-config-reload.service" ];
+ };
+ };
+
+ # Validation via DNS-01 challenge
+ specialisation.dns-01.configuration = { pkgs, config, nodes, ... }: {
security.acme.certs."example.test" = {
domain = "*.example.test";
+ group = config.services.nginx.group;
dnsProvider = "exec";
dnsPropagationCheck = false;
- credentialsFile = with pkgs; writeText "wildcard.env" ''
- EXEC_PATH=${dnsScript { inherit writeScript bash curl; dnsAddress = nodes.dnsserver.config.networking.primaryIPAddress; }}
+ credentialsFile = pkgs.writeText "wildcard.env" ''
+ EXEC_PATH=${dnsScript { inherit pkgs nodes; }}
'';
- user = config.services.nginx.user;
- group = config.services.nginx.group;
};
- systemd.targets."acme-finished-example.test" = {
- after = [ "acme-example.test.service" ];
- wantedBy = [ "acme-example.test.service" ];
- };
- systemd.services."acme-example.test" = {
- before = [ "nginx.service" ];
- wantedBy = [ "nginx.service" ];
- };
- services.nginx.virtualHosts."c.example.test" = {
- forceSSL = true;
- sslCertificate = config.security.acme.certs."example.test".directory + "/cert.pem";
- sslTrustedCertificate = config.security.acme.certs."example.test".directory + "/full.pem";
- sslCertificateKey = config.security.acme.certs."example.test".directory + "/key.pem";
- locations."/".root = pkgs.runCommand "docroot" {} ''
- mkdir -p "$out"
- echo hello world > "$out/index.html"
- '';
+
+ services.nginx.virtualHosts."dns.example.test" = (vhostBase pkgs) // {
+ useACMEHost = "example.test";
};
};
- # When nginx depends on a service that is slow to start up, requesting used to fail
- # certificates fail. Reproducer for https://github.com/NixOS/nixpkgs/issues/81842
- specialisation.slow-startup.configuration = { pkgs, config, nodes, lib, ...}: {
+ # Validate service relationships by adding a slow start service to nginx' wants.
+ # Reproducer for https://github.com/NixOS/nixpkgs/issues/81842
+ specialisation.slow-startup.configuration = { pkgs, config, nodes, lib, ... }: {
systemd.services.my-slow-service = {
wantedBy = [ "multi-user.target" "nginx.service" ];
before = [ "nginx.service" ];
preStart = "sleep 5";
script = "${pkgs.python3}/bin/python -m http.server";
};
- systemd.targets."acme-finished-d.example.com" = {
- after = [ "acme-d.example.com.service" ];
- wantedBy = [ "acme-d.example.com.service" ];
- };
- services.nginx.virtualHosts."d.example.com" = {
+
+ services.nginx.virtualHosts."slow.example.com" = {
forceSSL = true;
enableACME = true;
locations."/".proxyPass = "http://localhost:8000";
@@ -152,11 +151,13 @@ in import ./make-test-python.nix ({ lib, ... }: {
};
};
- client = {nodes, lib, ...}: {
+ # The client will be used to curl the webserver to validate configuration
+ client = {nodes, lib, pkgs, ...}: {
imports = [ commonConfig ];
- networking.nameservers = lib.mkForce [
- nodes.dnsserver.config.networking.primaryIPAddress
- ];
+ networking.nameservers = lib.mkForce [ (dnsServerIP nodes) ];
+
+ # OpenSSL will be used for more thorough certificate validation
+ environment.systemPackages = [ pkgs.openssl ];
};
};
@@ -167,73 +168,168 @@ in import ./make-test-python.nix ({ lib, ... }: {
in
# Note, wait_for_unit does not work for oneshot services that do not have RemainAfterExit=true,
# this is because a oneshot goes from inactive => activating => inactive, and never
- # reaches the active state. To work around this, we create some mock target units which
- # get pulled in by the oneshot units. The target units linger after activation, and hence we
- # can use them to probe that a oneshot fired. It is a bit ugly, but it is the best we can do
+ # reaches the active state. Targets do not have this issue.
+
''
+ import time
+
+
+ has_switched = False
+
+
+ def switch_to(node, name):
+ global has_switched
+ if has_switched:
+ node.succeed(
+ "${switchToNewServer}"
+ )
+ has_switched = True
+ node.succeed(
+ f"/run/current-system/specialisation/{name}/bin/switch-to-configuration test"
+ )
+
+
+ # Ensures the issuer of our cert matches the chain
+ # and matches the issuer we expect it to be.
+ # It's a good validation to ensure the cert.pem and fullchain.pem
+ # are not still selfsigned afer verification
+ def check_issuer(node, cert_name, issuer):
+ for fname in ("cert.pem", "fullchain.pem"):
+ actual_issuer = node.succeed(
+ f"openssl x509 -noout -issuer -in /var/lib/acme/{cert_name}/{fname}"
+ ).partition("=")[2]
+ print(f"{fname} issuer: {actual_issuer}")
+ assert issuer.lower() in actual_issuer.lower()
+
+
+ # Ensure cert comes before chain in fullchain.pem
+ def check_fullchain(node, cert_name):
+ subject_data = node.succeed(
+ f"openssl crl2pkcs7 -nocrl -certfile /var/lib/acme/{cert_name}/fullchain.pem"
+ " | openssl pkcs7 -print_certs -noout"
+ )
+ for line in subject_data.lower().split("\n"):
+ if "subject" in line:
+ print(f"First subject in fullchain.pem: ", line)
+ assert cert_name.lower() in line
+ return
+
+ assert False
+
+
+ def check_connection(node, domain, retries=3):
+ assert retries >= 0
+
+ result = node.succeed(
+ "openssl s_client -brief -verify 2 -CAfile /tmp/ca.crt"
+ f" -servername {domain} -connect {domain}:443 < /dev/null 2>&1"
+ )
+
+ for line in result.lower().split("\n"):
+ if "verification" in line and "error" in line:
+ time.sleep(1)
+ return check_connection(node, domain, retries - 1)
+
+
+ def check_connection_key_bits(node, domain, bits, retries=3):
+ assert retries >= 0
+
+ result = node.succeed(
+ "openssl s_client -CAfile /tmp/ca.crt"
+ f" -servername {domain} -connect {domain}:443 < /dev/null"
+ " | openssl x509 -noout -text | grep -i Public-Key"
+ )
+ print("Key type:", result)
+
+ if bits not in result:
+ time.sleep(1)
+ return check_connection_key_bits(node, domain, bits, retries - 1)
+
+
client.start()
dnsserver.start()
- acme.wait_for_unit("default.target")
dnsserver.wait_for_unit("pebble-challtestsrv.service")
+ client.wait_for_unit("default.target")
+
client.succeed(
- 'curl --data \'{"host": "acme.test", "addresses": ["${nodes.acme.config.networking.primaryIPAddress}"]}\' http://${nodes.dnsserver.config.networking.primaryIPAddress}:8055/add-a'
- )
- client.succeed(
- 'curl --data \'{"host": "standalone.test", "addresses": ["${nodes.acmeStandalone.config.networking.primaryIPAddress}"]}\' http://${nodes.dnsserver.config.networking.primaryIPAddress}:8055/add-a'
+ 'curl --data \'{"host": "acme.test", "addresses": ["${nodes.acme.config.networking.primaryIPAddress}"]}\' http://${dnsServerIP nodes}:8055/add-a'
)
acme.start()
- acmeStandalone.start()
+ webserver.start()
acme.wait_for_unit("default.target")
acme.wait_for_unit("pebble.service")
- with subtest("can request certificate with HTTPS-01 challenge"):
- acmeStandalone.wait_for_unit("default.target")
- acmeStandalone.succeed("systemctl start acme-standalone.test.service")
- acmeStandalone.wait_for_unit("acme-finished-standalone.test.target")
-
- client.wait_for_unit("default.target")
-
client.succeed("curl https://acme.test:15000/roots/0 > /tmp/ca.crt")
client.succeed("curl https://acme.test:15000/intermediate-keys/0 >> /tmp/ca.crt")
- with subtest("Can request certificate for nginx service"):
+ with subtest("Can request certificate with HTTPS-01 challenge"):
webserver.wait_for_unit("acme-finished-a.example.test.target")
- client.succeed(
- "curl --cacert /tmp/ca.crt https://a.example.test/ | grep -qF 'hello world'"
- )
+ check_fullchain(webserver, "a.example.test")
+ check_issuer(webserver, "a.example.test", "pebble")
+ check_connection(client, "a.example.test")
- with subtest("Can add another certificate for nginx service"):
- webserver.succeed(
- "/run/current-system/specialisation/second-cert/bin/switch-to-configuration test"
- )
- webserver.wait_for_unit("acme-finished-b.example.test.target")
- client.succeed(
- "curl --cacert /tmp/ca.crt https://b.example.test/ | grep -qF 'hello world'"
- )
+ with subtest("Can generate valid selfsigned certs"):
+ webserver.succeed("systemctl clean acme-a.example.test.service --what=state")
+ webserver.succeed("systemctl start acme-selfsigned-a.example.test.service")
+ check_fullchain(webserver, "a.example.test")
+ check_issuer(webserver, "a.example.test", "minica")
+ # Will succeed if nginx can load the certs
+ webserver.succeed("systemctl start nginx-config-reload.service")
+
+ with subtest("Can reload nginx when timer triggers renewal"):
+ webserver.succeed("systemctl start test-renew-nginx.target")
+ check_issuer(webserver, "a.example.test", "pebble")
+ check_connection(client, "a.example.test")
+
+ with subtest("Can reload web server when cert configuration changes"):
+ switch_to(webserver, "cert-change")
+ webserver.wait_for_unit("acme-finished-a.example.test.target")
+ check_connection_key_bits(client, "a.example.test", "384")
+ webserver.succeed("grep testing /var/lib/acme/a.example.test/test")
+
+ with subtest("Can request certificate with HTTPS-01 when nginx startup is delayed"):
+ switch_to(webserver, "slow-startup")
+ webserver.wait_for_unit("acme-finished-slow.example.com.target")
+ check_issuer(webserver, "slow.example.com", "pebble")
+ check_connection(client, "slow.example.com")
+
+ with subtest("Can request certificate for vhost + aliases (nginx)"):
+ # Check the key hash before and after adding an alias. It should not change.
+ # The previous test reverts the ed384 change
+ webserver.wait_for_unit("acme-finished-a.example.test.target")
+ keyhash_old = webserver.succeed("md5sum /var/lib/acme/a.example.test/key.pem")
+ switch_to(webserver, "nginx-aliases")
+ webserver.wait_for_unit("acme-finished-a.example.test.target")
+ check_issuer(webserver, "a.example.test", "pebble")
+ check_connection(client, "a.example.test")
+ check_connection(client, "b.example.test")
+ keyhash_new = webserver.succeed("md5sum /var/lib/acme/a.example.test/key.pem")
+ assert keyhash_old == keyhash_new
+
+ with subtest("Can request certificates for vhost + aliases (apache-httpd)"):
+ switch_to(webserver, "httpd-aliases")
+ webserver.wait_for_unit("acme-finished-c.example.test.target")
+ check_issuer(webserver, "c.example.test", "pebble")
+ check_connection(client, "c.example.test")
+ check_connection(client, "d.example.test")
+
+ with subtest("Can reload httpd when timer triggers renewal"):
+ # Switch to selfsigned first
+ webserver.succeed("systemctl clean acme-c.example.test.service --what=state")
+ webserver.succeed("systemctl start acme-selfsigned-c.example.test.service")
+ check_issuer(webserver, "c.example.test", "minica")
+ webserver.succeed("systemctl start httpd-config-reload.service")
+ webserver.succeed("systemctl start test-renew-httpd.target")
+ check_issuer(webserver, "c.example.test", "pebble")
+ check_connection(client, "c.example.test")
with subtest("Can request wildcard certificates using DNS-01 challenge"):
- webserver.succeed(
- "${switchToNewServer}"
- )
- webserver.succeed(
- "/run/current-system/specialisation/dns-01/bin/switch-to-configuration test"
- )
+ switch_to(webserver, "dns-01")
webserver.wait_for_unit("acme-finished-example.test.target")
- client.succeed(
- "curl --cacert /tmp/ca.crt https://c.example.test/ | grep -qF 'hello world'"
- )
-
- with subtest("Can request certificate of nginx when startup is delayed"):
- webserver.succeed(
- "${switchToNewServer}"
- )
- webserver.succeed(
- "/run/current-system/specialisation/slow-startup/bin/switch-to-configuration test"
- )
- webserver.wait_for_unit("acme-finished-d.example.com.target")
- client.succeed("curl --cacert /tmp/ca.crt https://d.example.com/")
+ check_issuer(webserver, "example.test", "pebble")
+ check_connection(client, "dns.example.test")
'';
})
diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix
index 60ef5a02763..7a0d45f64d8 100644
--- a/nixos/tests/all-tests.nix
+++ b/nixos/tests/all-tests.nix
@@ -325,6 +325,7 @@ in
sonarr = handleTest ./sonarr.nix {};
sslh = handleTest ./sslh.nix {};
sssd = handleTestOn ["x86_64-linux"] ./sssd.nix {};
+ sssd-ldap = handleTestOn ["x86_64-linux"] ./sssd-ldap.nix {};
strongswan-swanctl = handleTest ./strongswan-swanctl.nix {};
sudo = handleTest ./sudo.nix {};
switchTest = handleTest ./switch-test.nix {};
diff --git a/nixos/tests/common/acme/client/default.nix b/nixos/tests/common/acme/client/default.nix
index 80893da0252..1e9885e375c 100644
--- a/nixos/tests/common/acme/client/default.nix
+++ b/nixos/tests/common/acme/client/default.nix
@@ -1,15 +1,14 @@
{ lib, nodes, pkgs, ... }:
-
let
- acme-ca = nodes.acme.config.test-support.acme.caCert;
-in
+ caCert = nodes.acme.config.test-support.acme.caCert;
+ caDomain = nodes.acme.config.test-support.acme.caDomain;
-{
+in {
security.acme = {
- server = "https://acme.test/dir";
+ server = "https://${caDomain}/dir";
email = "hostmaster@example.test";
acceptTerms = true;
};
- security.pki.certificateFiles = [ acme-ca ];
+ security.pki.certificateFiles = [ caCert ];
}
diff --git a/nixos/tests/common/acme/server/default.nix b/nixos/tests/common/acme/server/default.nix
index 1a0ee882572..4d8e664c4e1 100644
--- a/nixos/tests/common/acme/server/default.nix
+++ b/nixos/tests/common/acme/server/default.nix
@@ -3,7 +3,7 @@
# config.test-support.acme.caCert
#
# This value can be used inside the configuration of other test nodes to inject
-# the snakeoil certificate into security.pki.certificateFiles or into package
+# the test certificate into security.pki.certificateFiles or into package
# overlays.
#
# Another value that's needed if you don't use a custom resolver (see below for
@@ -50,19 +50,13 @@
# Also make sure that whenever you use a resolver from a different test node
# that it has to be started _before_ the ACME service.
{ config, pkgs, lib, ... }:
-
-
let
- snakeOilCerts = import ./snakeoil-certs.nix;
+ testCerts = import ./snakeoil-certs.nix {
+ minica = pkgs.minica;
+ mkDerivation = pkgs.stdenv.mkDerivation;
+ };
+ domain = testCerts.domain;
- wfeDomain = "acme.test";
- wfeCertFile = snakeOilCerts.${wfeDomain}.cert;
- wfeKeyFile = snakeOilCerts.${wfeDomain}.key;
-
- siteDomain = "acme.test";
- siteCertFile = snakeOilCerts.${siteDomain}.cert;
- siteKeyFile = snakeOilCerts.${siteDomain}.key;
- pebble = pkgs.pebble;
resolver = let
message = "You need to define a resolver for the acme test module.";
firstNS = lib.head config.networking.nameservers;
@@ -71,8 +65,9 @@ let
pebbleConf.pebble = {
listenAddress = "0.0.0.0:443";
managementListenAddress = "0.0.0.0:15000";
- certificate = snakeOilCerts.${wfeDomain}.cert;
- privateKey = snakeOilCerts.${wfeDomain}.key;
+ # These certs and keys are used for the Web Front End (WFE)
+ certificate = testCerts.${domain}.cert;
+ privateKey = testCerts.${domain}.key;
httpPort = 80;
tlsPort = 443;
ocspResponderURL = "http://0.0.0.0:4002";
@@ -80,18 +75,30 @@ let
};
pebbleConfFile = pkgs.writeText "pebble.conf" (builtins.toJSON pebbleConf);
- pebbleDataDir = "/root/pebble";
in {
imports = [ ../../resolver.nix ];
- options.test-support.acme.caCert = lib.mkOption {
- type = lib.types.path;
- description = ''
- A certificate file to use with the nodes attribute to
- inject the snakeoil CA certificate used in the ACME server into
- .
- '';
+ options.test-support.acme = with lib; {
+ caDomain = mkOption {
+ type = types.str;
+ readOnly = true;
+ default = domain;
+ description = ''
+ A domain name to use with the nodes attribute to
+ identify the CA server.
+ '';
+ };
+ caCert = mkOption {
+ type = types.path;
+ readOnly = true;
+ default = testCerts.ca.cert;
+ description = ''
+ A certificate file to use with the nodes attribute to
+ inject the test CA certificate used in the ACME server into
+ .
+ '';
+ };
};
config = {
@@ -99,35 +106,32 @@ in {
resolver.enable = let
isLocalResolver = config.networking.nameservers == [ "127.0.0.1" ];
in lib.mkOverride 900 isLocalResolver;
- acme.caCert = snakeOilCerts.ca.cert;
};
# This has priority 140, because modules/testing/test-instrumentation.nix
# already overrides this with priority 150.
networking.nameservers = lib.mkOverride 140 [ "127.0.0.1" ];
- networking.firewall.enable = false;
+ networking.firewall.allowedTCPPorts = [ 80 443 15000 4002 ];
networking.extraHosts = ''
- 127.0.0.1 ${wfeDomain}
- ${config.networking.primaryIPAddress} ${wfeDomain} ${siteDomain}
+ 127.0.0.1 ${domain}
+ ${config.networking.primaryIPAddress} ${domain}
'';
systemd.services = {
pebble = {
enable = true;
description = "Pebble ACME server";
- requires = [ ];
wantedBy = [ "network.target" ];
- preStart = ''
- mkdir ${pebbleDataDir}
- '';
- script = ''
- cd ${pebbleDataDir}
- ${pebble}/bin/pebble -config ${pebbleConfFile}
- '';
+
serviceConfig = {
+ RuntimeDirectory = "pebble";
+ WorkingDirectory = "/run/pebble";
+
# Required to bind on privileged ports.
AmbientCapabilities = [ "CAP_NET_BIND_SERVICE" ];
+
+ ExecStart = "${pkgs.pebble}/bin/pebble -config ${pebbleConfFile}";
};
};
};
diff --git a/nixos/tests/common/acme/server/mkcerts.nix b/nixos/tests/common/acme/server/mkcerts.nix
deleted file mode 100644
index c9616bf9672..00000000000
--- a/nixos/tests/common/acme/server/mkcerts.nix
+++ /dev/null
@@ -1,69 +0,0 @@
-{ pkgs ? import {}
-, lib ? pkgs.lib
-, domains ? [ "acme.test" ]
-}:
-
-pkgs.runCommand "acme-snakeoil-ca" {
- nativeBuildInputs = [ pkgs.openssl ];
-} ''
- addpem() {
- local file="$1"; shift
- local storeFileName="$(IFS=.; echo "$*")"
-
- echo -n " " >> "$out"
-
- # Every following argument is an attribute, so let's recurse and check
- # every attribute whether it must be quoted and write it into $out.
- while [ -n "$1" ]; do
- if expr match "$1" '^[a-zA-Z][a-zA-Z0-9]*$' > /dev/null; then
- echo -n "$1" >> "$out"
- else
- echo -n '"' >> "$out"
- echo -n "$1" | sed -e 's/["$]/\\&/g' >> "$out"
- echo -n '"' >> "$out"
- fi
- shift
- [ -z "$1" ] || echo -n . >> "$out"
- done
-
- echo " = builtins.toFile \"$storeFileName\" '''" >> "$out"
- sed -e 's/^/ /' "$file" >> "$out"
-
- echo " ''';" >> "$out"
- }
-
- echo '# Generated via mkcert.sh in the same directory.' > "$out"
- echo '{' >> "$out"
-
- openssl req -newkey rsa:4096 -x509 -sha256 -days 36500 \
- -subj '/CN=Snakeoil CA' -nodes -out ca.pem -keyout ca.key
-
- addpem ca.key ca key
- addpem ca.pem ca cert
-
- ${lib.concatMapStrings (fqdn: let
- opensslConfig = pkgs.writeText "snakeoil.cnf" ''
- [req]
- default_bits = 4096
- prompt = no
- default_md = sha256
- req_extensions = req_ext
- distinguished_name = dn
- [dn]
- CN = ${fqdn}
- [req_ext]
- subjectAltName = DNS:${fqdn}
- '';
- in ''
- export OPENSSL_CONF=${lib.escapeShellArg opensslConfig}
- openssl genrsa -out snakeoil.key 4096
- openssl req -new -key snakeoil.key -out snakeoil.csr
- openssl x509 -req -in snakeoil.csr -sha256 -set_serial 666 \
- -CA ca.pem -CAkey ca.key -out snakeoil.pem -days 36500 \
- -extfile "$OPENSSL_CONF" -extensions req_ext
- addpem snakeoil.key ${lib.escapeShellArg fqdn} key
- addpem snakeoil.pem ${lib.escapeShellArg fqdn} cert
- '') domains}
-
- echo '}' >> "$out"
-''
diff --git a/nixos/tests/common/acme/server/mkcerts.sh b/nixos/tests/common/acme/server/mkcerts.sh
deleted file mode 100755
index cc7f8ca650d..00000000000
--- a/nixos/tests/common/acme/server/mkcerts.sh
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/usr/bin/env nix-shell
-#!nix-shell -p nix bash -i bash
-set -e
-cd "$(dirname "$0")"
-storepath="$(nix-build --no-out-link mkcerts.nix)"
-cat "$storepath" > snakeoil-certs.nix
diff --git a/nixos/tests/common/acme/server/snakeoil-certs.nix b/nixos/tests/common/acme/server/snakeoil-certs.nix
index 7325b027c7e..4b6a38b8fa3 100644
--- a/nixos/tests/common/acme/server/snakeoil-certs.nix
+++ b/nixos/tests/common/acme/server/snakeoil-certs.nix
@@ -1,172 +1,37 @@
-# Generated via mkcert.sh in the same directory.
-{
- ca.key = builtins.toFile "ca.key" ''
- -----BEGIN PRIVATE KEY-----
- MIIJQgIBADANBgkqhkiG9w0BAQEFAASCCSwwggkoAgEAAoICAQDd1G7OFpXIoHnr
- rxdw+hiJVDY6nQDDKFt9FBKwlv7x2hCvX7bnyvHaL7H61c+80McGPISrQn3+MjuR
- Zuqwax49DddNXbGt4WqGlx4LAeI37OgNUUz9foNr2rDDV744vwp14/PD1f3nqpWf
- Ogzzsh8rxac0mZ5Se9HxOIpI7NRNuHJjj7HWZ4YxeOvi289rmpu0JPcp25njw7h6
- FNfHu8GGp34Uj6wAxubdRyfViV8z9FMfbglLuA9i1OiSy3NQpq8VwBG+u/0iC7PQ
- sQjxSragQu25sfATYIrFJQ4ZCvh0nxqKMeyPPBi6dAcMpa2AZAqtqv+CwWdo36Bt
- S5XiC7rApgYn+yteKQHSbnCiG2W/boSbfg9lRk3w41dESENCADVajLb3Eovvp0tB
- O/BALudvWjzAPbpXleVNr6ngWtGlsZTC7LXDgBqdW2KlzpZGcz+PW3ATlwip/ZFR
- t7A15u5dVkWPVoPuQ0w1Tw+g9dxWFTNk3h+2d7K87IxQbcvqxeIDSEVFMrxo0e4C
- G2udMcelZwARl6iNTAETa2zJW0XtAdGVM+HY1S/kU6U9J3nubDttAkAMABjPwyjL
- G7hfyWqUHf9yPs49GsftAVvIy8XIeu0shD1BG11/VzvwpUCiRc+btuWi2erZ4ZfP
- oQ5YoS9gt4S+Ipz7TPGBl+AUk9HO2QIDAQABAoICAGW+aLAXxc2GZUVHQp4r55Md
- T94kYtQgL4435bafGwH8vchiQzcfazxiweRFqwl0TMS8fzE5xyYPDilLpfsStoTU
- U1sFzVfuWviuWTY9P+/ctjZdgs2F+GtAm/CMzw+h9/9IdWbuQI3APO4SJxyjJw7h
- kiZbCzXT2uAjybFXBq07GyQ1JSEszGzmhHLB1OoKuL2wcrj9IyFHhNZhtvLCWCoV
- qotttjuI/xyg5VFYt5TRzEpPIu5a1pvDAYVK0XI9cXKtbLYp7RlveqMOgAaD+S2a
- ZQTV60JH9n4j18p+sKR00SxvZ4vuyXzDePRBDUolGIy9MIJdiLueTiuzDmTmclnM
- 8Yy7oliawW2Bn+1gaWpqmgzEUw9bXRSqIp2zGZ7HaQ+5c/MhS002+/i8WQyssfeg
- 9EfI+Vl0D2avTxCECmsfjUxtkhzMYPVNbRPjt0QBEM+s8lDoNsP2zhMO441+TKpe
- /5KZHIW+Y0US6GMIUs1o1byKfNz8Nj5HjEKO9CMyK6SBMJnCMroPD4H6opqk3lw9
- 4mk04BdN556EzyJDT0a5/VpXG2DUYwFaNwE1ZPMu3Yx6IBoM1xx8mR80vHQCddmF
- NP+BzkpUiHf0Txyy0YQWECZ/anTt0Bo0XqY5tirIM2dkG0ngNl9tGlw6gVAY1ky8
- +cr7qKmhhwMWojaX/L+9AoIBAQD/BZAeF3l9I5RBh6ktWA+opzVyd6ejdLpc2Q1z
- fmSmtUKRsEe51sWaIf6Sez408UaCMT2IQuppPgMnV8xfMM1/og75Cs8aPyAohwKo
- IbOenXhLfFZiYB4y/Pac3F+FzNKsTT6n+fsE+82UHafY5ZI2FlPb2L0lfyx09zXv
- fBYhcXgwSx5ymJLJSl8zFaEGn9qi3UB5ss44SaNM0n8SFGUQUk3PR7SFWSWgNxtl
- CP7LWTsjXYoC/qBMe7b8JieK5aFk1EkkG1EkJvdiMnulMcMJzl+kj6LqVPmVDoZS
- mMGvgKGJPpFgrbJ5wlA7uOhucGmMpFWP9RCav66DY4GHrLJPAoIBAQDerkZQ03AN
- i2iJVjtL97TvDjrE8vtNFS/Auh8JyDIW4GGK3Y/ZoMedQpuu3e6NYM9aMjh+QJoA
- kqhaiZ/tMXjEXJByglpc3a43g2ceWtJg5yLgexGgRtegbA57PRCo35Vhc6WycD1l
- 6FZNxpTkd2BXX/69KWZ6PpSiLYPvdzxP5ZkYqoWRQIa4ee4orHfz/lUXJm1XwmyG
- mx3hN9Z9m8Q/PGMGfwrorcp4DK53lmmhTZyPh+X5T5/KkVmrw/v5HEEB3JsknStR
- 3DAqp2XZcRHsGQef9R7H+PINJm9nebjCraataaE4gr76znXKT23P80Ce5Lw6OQUW
- XHhoL16gS+pXAoIBADTuz6ofTz01PFmZsfjSdXWZN1PKGEaqPOB2wP7+9h9QMkAR
- KeId/Sfv9GotII1Woz70v4Pf983ebEMnSyla9NyQI7F3l+MnxSIEW/3P+PtsTgLF
- DR0gPERzEzEd4Mnh6LyQz/eHwJ2ZMmOTADrZ8848Ni3EwAXfbrfcdBqAVAufBMZp
- YSmCF72mLTpqO+EnHvd9GxvnjDxMtJOGgY+cIhoQK0xh4stm5JNrvMjs5A4LOGYv
- zSyv80/Mwf92X/DJlwVZttDCxsXNPL3qIpX4TTZk2p9KnRMsjh1tRV4xjMpD1cOp
- 8/zwMMJrHcI3sC70MERb+9KEmGy2ap+k8MbbhqsCggEAUAqqocDupR+4Kq2BUPQv
- 6EHgJA0HAZUc/hSotXZtcsWiqiyr2Vkuhzt7BGcnqU/kGJK2tcL42D3fH/QaNUM0
- Grj+/voWCw1v4uprtYCF4GkUo0X5dvgf570Pk4LGqzz6z/Wm2LX5i9jwtLItsNWs
- HpwVz97CxCwcdxMPOpNMbZek6TXaHvTnuAWz8pDT6TNBWLnqUcJECjpVii/s/Gdy
- KhzFp38g57QYdABy8e9x9pYUMY9yvaO+VyzZ46DlwIxEXavzZDzOZnVUJvDW7krz
- Wz8/+2I7dzvnnYx0POiG3gtXPzwZxFtS1IpD0r2sRjQ0xSiI9BCs4HXKngBw7gN7
- rwKCAQEAloJOFw4bafVXZVXuQVnLDm0/MNTfqxUzFE6V2WkMVkJqcpKt+ndApM8P
- MJvojHWw1fmxDzIAwqZ9rXgnwWKydjSZBDYNjhGFUACVywHe5AjC4PPMUdltGptU
- lY0BjC7qtwkVugr65goQkEzU61y9JgTqKpYsr3D+qXcoiDvWRuqk5Q0WfYJrUlE0
- APWaqbxmkqUVDRrXXrifiluupk+BCV7cFSnnknSYbd9FZd9DuKaoNBlkp2J9LZE+
- Ux74Cfro8SHINHmvqL+YLFUPVDWNeuXh5Kl6AaJ7yclCLXLxAIix3/rIf6mJeIGc
- s9o9Sr49cibZ3CbMjCSNE3AOeVE1/Q==
- -----END PRIVATE KEY-----
- '';
- ca.cert = builtins.toFile "ca.cert" ''
- -----BEGIN CERTIFICATE-----
- MIIFDzCCAvegAwIBAgIUX0P6NfX4gRUpFz+TNV/f26GHokgwDQYJKoZIhvcNAQEL
- BQAwFjEUMBIGA1UEAwwLU25ha2VvaWwgQ0EwIBcNMjAwODI0MDc0MjEyWhgPMjEy
- MDA3MzEwNzQyMTJaMBYxFDASBgNVBAMMC1NuYWtlb2lsIENBMIICIjANBgkqhkiG
- 9w0BAQEFAAOCAg8AMIICCgKCAgEA3dRuzhaVyKB5668XcPoYiVQ2Op0AwyhbfRQS
- sJb+8doQr1+258rx2i+x+tXPvNDHBjyEq0J9/jI7kWbqsGsePQ3XTV2xreFqhpce
- CwHiN+zoDVFM/X6Da9qww1e+OL8KdePzw9X956qVnzoM87IfK8WnNJmeUnvR8TiK
- SOzUTbhyY4+x1meGMXjr4tvPa5qbtCT3KduZ48O4ehTXx7vBhqd+FI+sAMbm3Ucn
- 1YlfM/RTH24JS7gPYtTokstzUKavFcARvrv9Iguz0LEI8Uq2oELtubHwE2CKxSUO
- GQr4dJ8aijHsjzwYunQHDKWtgGQKrar/gsFnaN+gbUuV4gu6wKYGJ/srXikB0m5w
- ohtlv26Em34PZUZN8ONXREhDQgA1Woy29xKL76dLQTvwQC7nb1o8wD26V5XlTa+p
- 4FrRpbGUwuy1w4AanVtipc6WRnM/j1twE5cIqf2RUbewNebuXVZFj1aD7kNMNU8P
- oPXcVhUzZN4ftneyvOyMUG3L6sXiA0hFRTK8aNHuAhtrnTHHpWcAEZeojUwBE2ts
- yVtF7QHRlTPh2NUv5FOlPSd57mw7bQJADAAYz8Moyxu4X8lqlB3/cj7OPRrH7QFb
- yMvFyHrtLIQ9QRtdf1c78KVAokXPm7blotnq2eGXz6EOWKEvYLeEviKc+0zxgZfg
- FJPRztkCAwEAAaNTMFEwHQYDVR0OBBYEFNhBZxryvykCjfPO85xB3wof2enAMB8G
- A1UdIwQYMBaAFNhBZxryvykCjfPO85xB3wof2enAMA8GA1UdEwEB/wQFMAMBAf8w
- DQYJKoZIhvcNAQELBQADggIBAEZwlsQ+3yd1MVxLRy9RjoA8hI7iWBNmvPUyNjlb
- l/L9N+dZgdx9G5h/KPRUyzvUc/uk/ZxTWVPIOp13WI65qwsBKrwvYKiXiwzjt+9V
- CKDRc1sOghTSXk4FD3L5UcKvTQ2lRcFsqxbkopEwQWhoCuhe4vFyt3Nx8ZGLCBUD
- 3I5zMHtO8FtpZWKJPw46Yc1kasv0nlfly/vUbnErYfgjWX1hgWUcRgYdKwO4sOZ7
- KbNma0WUsX5mWhXo4Kk7D15wATHO+j9s+j8m86duBL3A4HzpTo1DhHvBi0dkg0CO
- XuSdByIzVLIPh3yhCHN1loRCP2rbzKM8IQeU/X5Q4UJeC/x9ew8Kk+RKXoHc8Y2C
- JQO1DxuidyDJRhbb98wZo2YfIsdWQGjYZBe1XQRwBD28JnB+Rb9shml6lORWQn9y
- P/STo9uWm5zvOCfqwbnCoetljDweItINx622G9SafBwPZc3o79oL7QSl8DgCtN6g
- p0wGIlIBx+25w/96PqZcrYb8B7/uBHJviiKjBXDoIJWNiNRhW5HaFjeJdSKq7KIL
- I/PO9KuHafif36ksG69X02Rio2/cTjgjEW1hGHcDRyyJWWaj7bd2eWuouh6FF22b
- PA6FGY4vewDPnbLKLaix2ZIKxtedUDOH/qru3Mv58IFXmQ4iyM8oC8aOxYSQLZDn
- 1yJD
- -----END CERTIFICATE-----
- '';
- "acme.test".key = builtins.toFile "acme.test.key" ''
- -----BEGIN RSA PRIVATE KEY-----
- MIIJKgIBAAKCAgEA3dJl4ByHHRcqbZzblszHIS5eEW3TcXTvllqC1nedGLGU9dnA
- YbdpDUYhvWz/y9AfRZ1d8jYz01jZtt5xWYG0QoQUdkCc9QPPh0Axrl38cGliB6IZ
- IY0qftW9zrLSgCOUnXL/45JqSpD57DHMSSiJl3hoOo4keBaMRN/UK6F3DxD/nZEs
- h+yBBh2js3qxleExqkX8InmjK9pG8j7qa4Be5Lh4iILBHbGAMaxM7ViNAg4KgWyg
- d5+4qB86JFtE/cJ+r3D62ARjVaxU6ePOL0AwS/vx5ls6DFQC7+1CpGCNemgLPzcc
- 70s0V0SAnF73xHYqRWjJFtumyvyTkiQWLg0zDQOugWd3B9ADuaIEx2nviPyphAtj
- M3ZKrL2zN1aIfqzbxJ/L8TQFa2WPsPU2+iza/m9kMfLXZ4XPF/SJxQ+5yVH+rxx5
- OWrXZ13nCMyeVoaXQofmG7oZvOQbtuT9r5DQZd9WN0P3G3sy0/dNnlNVn8uCBvXJ
- TQhRKsy1FESZdgcFNtpJEG7BRG9Gc6i0V39aSRzShZyKJSBQhlc0FMTlX445EYsh
- PKjEC/+Suq9wy/LuLjIkkqBbVg4617IlibLz0fDY/yrZqkfSqhCVsWnra21Ty3Mp
- vD+wnskTzuGrvCVTe3KcWp+wkeH0xvhr8FXX6nn492YCfvZSITO3FF+qWt8CAwEA
- AQKCAgEAk2xV0NCk66yNwjPRrTOD1IWgdyzqrijtYpvdAPSWL+c1/P8vYMIoy22k
- 1uQuTSKQ5g9kdKmZYAlZCLRl2Pre9qYZg04GAsD5mAYN/rjwITWotTICSc4sRAeC
- EnG+fPMovkvDzVdt1QjtURD3mFeculKH0wLNMhKqPswTkrvJCPZfLDVjxyJjzdC9
- D3enttjnzSaeH7t/upFjPXSbD79NUe1YDkH4XuetL1Y3+jYz4P279bBgJaC9dN7s
- IWWXQJ+W2rrXu+GOs03JUXjZe4XJk3ZqmpJezfq3yQWCmQSigovLjcPvMwpkSut4
- HnTvbl6qUV8G5m4tOBMNcL8TDqAvIGY8Q2NAT0iKJN187FbHpjSwQL/Ckgqz/taJ
- Q82LfIA1+IjwW372gY2Wge8tM/s3+2vOEn2k91sYfiKtrRFfrHBurehVQSpJb2gL
- YPoUhUGu4C1nx44sQw+DgugOBp1BTKA1ZOBIk6NyS/J9sU3jSgMr88n10TyepP6w
- OVk9kcNomnm/QIOyTDW4m76uoaxslg7kwOJ4j6wycddS8JtvEO4ZPk/fHZCbvlMv
- /dAKsC3gigO2zW6IYYb7mSXI07Ew/rFH1NfSILiGw8GofJHDq3plGHZo9ycB6JC+
- 9C8n9IWjn8ahwbulCoQQhdHwXvf61t+RzNFuFiyAT0PF2FtD/eECggEBAPYBNSEY
- DSQc/Wh+UlnwQsevxfzatohgQgQJRU1ZpbHQrl2uxk1ISEwrfqZwFmFotdjjzSYe
- e1WQ0uFYtdm1V/QeQK+8W0u7E7/fof4dR6XxrzJ2QmtWEmCnLOBUKCfPc7/4p4IU
- 7Q8PDwuwvXgaASZDaEsyTxL9bBrNMLFx9hIScQ9CaygpKvufilCHG79maoKArLwX
- s7G16qlT4YeEdiNuLGv0Ce0txJuFYp7cGClWQhruw+jIbr+Sn9pL9cn8GboCiUAq
- VgZKsofhEkKIEbP1uFypX2JnyRSE/h0qDDcH1sEXjR9zYYpQjVpk3Jiipgw4PXis
- 79uat5/QzUqVc1sCggEBAObVp686K9NpxYNoEliMijIdzFnK5J/TvoX9BBMz0dXc
- CgQW40tBcroU5nRl3oCjT1Agn8mxWLXH3czx6cPlSA8fnMTJmev8FaLnEcM15pGI
- 8/VCBbTegdezJ8vPRS/T9c4CViXo7d0qDMkjNyn22ojPPFYh8M1KVNhibDTEpXMQ
- vJxBJgvHePj+5pMOIKwAvQicqD07fNp6jVPmB/GnprBkjcCQZtshNJzWrW3jk7Fr
- xWpQJ8nam8wHdMvfKhpzvD6azahwmfKKaQmh/RwmH4xdtIKdh4j+u+Ax+Bxi0g7V
- GQfusIFB1MO48yS6E56WZMmsPy+jhTcIB4prIbfu4c0CggEBALgqqUKwRc4+Ybvj
- rfUk+GmT/s3QUwx/u4xYAGjq7y/SgWcjG9PphC559WPWz/p2sITB7ehWs5CYTjdj
- +SgWKdVY/KZThamJUTy4yAZ8lxH1gGpvvEOs+S8gmGkMt88t8ILMPWMWFW7LoEDp
- PL74ANpLZn29GROnY1IhQQ3mughHhBqfZ6d2QnaDtsGYlD5TBvPSLv7VY7Jr9VR0
- toeEtAjMRzc+SFwmgmTHk9BIB1KTAAQ3sbTIsJh8xW1gpo5jTEND+Mpvp10oeMVe
- yxPB2Db4gt/j8MOz3QaelbrxqplcJfsCjaT49RHeQiRlE/y070iApgx8s0idaFCd
- ucLXZbcCggEBANkcsdg9RYVWoeCj3UWOAll6736xN/IgDb4mqVOKVN3qVT1dbbGV
- wFvHVq66NdoWQH4kAUaKWN65OyQNkQqgt/MJj8EDwZNVCeCrp2hNZS0TfCn9TDK/
- aa7AojivHesLWNHIHtEPUdLIPzhbuAHvXcJ58M0upTfhpwXTJOVI5Dji0BPDrw47
- Msw3rBU6n35IP4Q/HHpjXl58EDuOS4B+aGjWWwF4kFWg2MR/oqWN/JdOv2LsO1A/
- HnR7ut4aa5ZvrunPXooERrf6eSsHQnLcZKX4aNTFZ/pxZbJMLYo9ZEdxJVbxqPAa
- RA1HAuJTZiquV+Pb755WFfEZy0Xk19URiS0CggEAPT1e+9sdNC15z79SxvJQ4pmT
- xiXat+1pq9pxp5HEOre2sSAd7CF5lu/1VQd6p0gtLZY+Aw4BXOyMtzYWgIap+u9j
- ThFl9qrTFppG5KlFKKpQ8dQQ8ofO1akS8cK8nQeSdvrqEC/kGT2rmVdeevhBlfGy
- BZi2ikhEQrz5jsLgIdT7sN2aLFYtmzLU9THTvlfm4ckQ7jOTxvVahb+WRe/iMCwP
- Exrb83JDo31jHvAoYqUFrZkmPA+DUWFlrqb21pCzmC/0iQSuDcayRRjZkY/s5iAh
- gtI6YyAsSL8hKvFVCC+VJf1QvFOpgUfsZjrIZuSc3puBWtN2dirHf7EfyxgEOg==
- -----END RSA PRIVATE KEY-----
- '';
- "acme.test".cert = builtins.toFile "acme.test.cert" ''
- -----BEGIN CERTIFICATE-----
- MIIEwDCCAqigAwIBAgICApowDQYJKoZIhvcNAQELBQAwFjEUMBIGA1UEAwwLU25h
- a2VvaWwgQ0EwIBcNMjAwODI0MDc0MjEzWhgPMjEyMDA3MzEwNzQyMTNaMBQxEjAQ
- BgNVBAMMCWFjbWUudGVzdDCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB
- AN3SZeAchx0XKm2c25bMxyEuXhFt03F075ZagtZ3nRixlPXZwGG3aQ1GIb1s/8vQ
- H0WdXfI2M9NY2bbecVmBtEKEFHZAnPUDz4dAMa5d/HBpYgeiGSGNKn7Vvc6y0oAj
- lJ1y/+OSakqQ+ewxzEkoiZd4aDqOJHgWjETf1Cuhdw8Q/52RLIfsgQYdo7N6sZXh
- MapF/CJ5oyvaRvI+6muAXuS4eIiCwR2xgDGsTO1YjQIOCoFsoHefuKgfOiRbRP3C
- fq9w+tgEY1WsVOnjzi9AMEv78eZbOgxUAu/tQqRgjXpoCz83HO9LNFdEgJxe98R2
- KkVoyRbbpsr8k5IkFi4NMw0DroFndwfQA7miBMdp74j8qYQLYzN2Sqy9szdWiH6s
- 28Sfy/E0BWtlj7D1Nvos2v5vZDHy12eFzxf0icUPuclR/q8ceTlq12dd5wjMnlaG
- l0KH5hu6GbzkG7bk/a+Q0GXfVjdD9xt7MtP3TZ5TVZ/Lggb1yU0IUSrMtRREmXYH
- BTbaSRBuwURvRnOotFd/Wkkc0oWciiUgUIZXNBTE5V+OORGLITyoxAv/krqvcMvy
- 7i4yJJKgW1YOOteyJYmy89Hw2P8q2apH0qoQlbFp62ttU8tzKbw/sJ7JE87hq7wl
- U3tynFqfsJHh9Mb4a/BV1+p5+PdmAn72UiEztxRfqlrfAgMBAAGjGDAWMBQGA1Ud
- EQQNMAuCCWFjbWUudGVzdDANBgkqhkiG9w0BAQsFAAOCAgEAM5WrCpBOmLrZ1QX8
- l6vxVXwoI8pnqyy3cbAm3aLRPbw4gb0Ot90Pv/LoMhP0fkrNOKwH/FGRjSXyti0X
- TheKrP7aEf6XL2/Xnb8rK2jYMQo6YJU9T+wBJA6Q+GBrc8SE75KfOi5NWJr8T4Ju
- Etb+G05hXClrN19VFzIoz3L4kRV+xNMialcOT3xQfHtXCQUgwAWpPlwcJA/Jf60m
- XsfwQwk2Ir16wq+Lc3y+mQ7d/dbG+FVrngFk4qN2B9M/Zyv4N9ZBbqeDUn3mYtJE
- FeJrwHgmwH6slf1gBN3gxUKRW7Bvzxk548NdmLOyN+Y4StsqbOaYGtShUJA7f1Ng
- qQqdgvxZ9MNwwMv9QVDZEnaaew3/oWOSmQGAai4hrc7gLMLJmIxzgfd5P6Dr06e4
- 2zwsMuI8Qh/IDqu/CfmFYvaua0FEeyAtpoID9Y/KPM7fu9bJuxjZ6kqLVFkEi9nF
- /rCMchcSA8N2z/vLPabpNotO7OYH3VD7aQGTfCL82dMlp1vwZ39S3Z1TFLLh3MZ+
- BYcAv8kUvCV6kIdPAXvJRSQOJUlJRV7XiI2mwugdDzMx69wQ0Zc1e4WyGfiSiVYm
- ckSJ/EkxuwT/ZYLqCAKSFGMlFhad9g1Zyvd67XgfZq5p0pJTtGxtn5j8QHy6PM6m
- NbjvWnP8lDU8j2l3eSG58S14iGs=
- -----END CERTIFICATE-----
- '';
+# Minica can provide a CA key and cert, plus a key
+# and cert for our fake CA server's Web Front End (WFE).
+{ minica, mkDerivation }:
+let
+ domain = "acme.test";
+
+ selfSignedCertData = mkDerivation {
+ name = "test-certs";
+ buildInputs = [ minica ];
+ phases = [ "buildPhase" "installPhase" ];
+
+ buildPhase = ''
+ mkdir ca
+ minica \
+ --ca-key ca/key.pem \
+ --ca-cert ca/cert.pem \
+ --domains ${domain}
+ chmod 600 ca/*
+ chmod 640 ${domain}/*.pem
+ '';
+
+ installPhase = ''
+ mkdir -p $out
+ mv ${domain} ca $out/
+ '';
+ };
+in {
+ inherit domain;
+ ca = {
+ cert = "${selfSignedCertData}/ca/cert.pem";
+ key = "${selfSignedCertData}/ca/key.pem";
+ };
+ "${domain}" = {
+ cert = "${selfSignedCertData}/${domain}/cert.pem";
+ key = "${selfSignedCertData}/${domain}/key.pem";
+ };
}
diff --git a/nixos/tests/installer.nix b/nixos/tests/installer.nix
index df89949074f..d80cfb4bd83 100644
--- a/nixos/tests/installer.nix
+++ b/nixos/tests/installer.nix
@@ -285,7 +285,7 @@ let
];
virtualisation.diskSize = 8 * 1024;
- virtualisation.memorySize = 1024;
+ virtualisation.memorySize = 1536;
# Use a small /dev/vdb as the root disk for the
# installer. This ensures the target disk (/dev/vda) is
diff --git a/nixos/tests/postfix-raise-smtpd-tls-security-level.nix b/nixos/tests/postfix-raise-smtpd-tls-security-level.nix
index b3c2156122d..5fad1fed75b 100644
--- a/nixos/tests/postfix-raise-smtpd-tls-security-level.nix
+++ b/nixos/tests/postfix-raise-smtpd-tls-security-level.nix
@@ -1,6 +1,3 @@
-let
- certs = import ./common/acme/server/snakeoil-certs.nix;
-in
import ./make-test-python.nix {
name = "postfix";
diff --git a/nixos/tests/postfix.nix b/nixos/tests/postfix.nix
index b0674ca3a0d..37ae76afec1 100644
--- a/nixos/tests/postfix.nix
+++ b/nixos/tests/postfix.nix
@@ -1,5 +1,6 @@
let
certs = import ./common/acme/server/snakeoil-certs.nix;
+ domain = certs.domain;
in
import ./make-test-python.nix {
name = "postfix";
@@ -11,8 +12,8 @@ import ./make-test-python.nix {
enableSubmission = true;
enableSubmissions = true;
sslCACert = certs.ca.cert;
- sslCert = certs."acme.test".cert;
- sslKey = certs."acme.test".key;
+ sslCert = certs.${domain}.cert;
+ sslKey = certs.${domain}.key;
submissionsOptions = {
smtpd_sasl_auth_enable = "yes";
smtpd_client_restrictions = "permit";
@@ -25,7 +26,7 @@ import ./make-test-python.nix {
];
networking.extraHosts = ''
- 127.0.0.1 acme.test
+ 127.0.0.1 ${domain}
'';
environment.systemPackages = let
@@ -33,7 +34,7 @@ import ./make-test-python.nix {
#!${pkgs.python3.interpreter}
import smtplib
- with smtplib.SMTP('acme.test') as smtp:
+ with smtplib.SMTP('${domain}') as smtp:
smtp.sendmail('root@localhost', 'alice@localhost', 'Subject: Test\n\nTest data.')
smtp.quit()
'';
@@ -45,7 +46,7 @@ import ./make-test-python.nix {
ctx = ssl.create_default_context()
- with smtplib.SMTP('acme.test') as smtp:
+ with smtplib.SMTP('${domain}') as smtp:
smtp.ehlo()
smtp.starttls(context=ctx)
smtp.ehlo()
@@ -60,7 +61,7 @@ import ./make-test-python.nix {
ctx = ssl.create_default_context()
- with smtplib.SMTP_SSL(host='acme.test', context=ctx) as smtp:
+ with smtplib.SMTP_SSL(host='${domain}', context=ctx) as smtp:
smtp.sendmail('root@localhost', 'alice@localhost', 'Subject: Test SMTPS\n\nTest data.')
smtp.quit()
'';
diff --git a/nixos/tests/sssd-ldap.nix b/nixos/tests/sssd-ldap.nix
new file mode 100644
index 00000000000..b68403a0102
--- /dev/null
+++ b/nixos/tests/sssd-ldap.nix
@@ -0,0 +1,78 @@
+import ./make-test-python.nix ({ pkgs, ... }:
+ let
+ dbDomain = "example.org";
+ dbSuffix = "dc=example,dc=org";
+
+ ldapRootUser = "admin";
+ ldapRootPassword = "foobar";
+
+ testUser = "alice";
+ in
+ {
+ name = "sssd-ldap";
+
+ meta = with pkgs.stdenv.lib.maintainers; {
+ maintainers = [ bbigras ];
+ };
+
+ machine = { pkgs, ... }: {
+ services.openldap = {
+ enable = true;
+ rootdn = "cn=${ldapRootUser},${dbSuffix}";
+ rootpw = ldapRootPassword;
+ suffix = dbSuffix;
+ declarativeContents = ''
+ dn: ${dbSuffix}
+ objectClass: top
+ objectClass: dcObject
+ objectClass: organization
+ o: ${dbDomain}
+
+ dn: ou=posix,${dbSuffix}
+ objectClass: top
+ objectClass: organizationalUnit
+
+ dn: ou=accounts,ou=posix,${dbSuffix}
+ objectClass: top
+ objectClass: organizationalUnit
+
+ dn: uid=${testUser},ou=accounts,ou=posix,${dbSuffix}
+ objectClass: person
+ objectClass: posixAccount
+ # userPassword: somePasswordHash
+ homeDirectory: /home/${testUser}
+ uidNumber: 1234
+ gidNumber: 1234
+ cn: ""
+ sn: ""
+ '';
+ };
+
+ services.sssd = {
+ enable = true;
+ config = ''
+ [sssd]
+ config_file_version = 2
+ services = nss, pam, sudo
+ domains = ${dbDomain}
+
+ [domain/${dbDomain}]
+ auth_provider = ldap
+ id_provider = ldap
+ ldap_uri = ldap://127.0.0.1:389
+ ldap_search_base = ${dbSuffix}
+ ldap_default_bind_dn = cn=${ldapRootUser},${dbSuffix}
+ ldap_default_authtok_type = password
+ ldap_default_authtok = ${ldapRootPassword}
+ '';
+ };
+ };
+
+ testScript = ''
+ machine.start()
+ machine.wait_for_unit("openldap.service")
+ machine.wait_for_unit("sssd.service")
+ machine.succeed("getent passwd ${testUser}")
+ '';
+ }
+)
diff --git a/pkgs/applications/blockchains/exodus/default.nix b/pkgs/applications/blockchains/exodus/default.nix
index 758673229af..af49bb9121f 100644
--- a/pkgs/applications/blockchains/exodus/default.nix
+++ b/pkgs/applications/blockchains/exodus/default.nix
@@ -4,11 +4,11 @@ cups, vivaldi-ffmpeg-codecs, libpulseaudio, at-spi2-core }:
stdenv.mkDerivation rec {
pname = "exodus";
- version = "20.1.30";
+ version = "20.8.28";
src = fetchurl {
url = "https://downloads.exodus.io/releases/${pname}-linux-x64-${version}.zip";
- sha256 = "0jns5zqjm0gqn18ypghbgk6gb713mh7p44ax1r8y4vcwijlp5nql";
+ sha256 = "fde9165f71f0d641f6892ddce3ec26d200e8095a383f2b4c8f924de4041d65ef";
};
sourceRoot = ".";
@@ -75,6 +75,6 @@ stdenv.mkDerivation rec {
description = "Top-rated cryptocurrency wallet with Trezor integration and built-in Exchange";
license = licenses.unfree;
platforms = platforms.linux;
- maintainers = [ maintainers.mmahut ];
+ maintainers = with maintainers; [ mmahut rople380 ];
};
}
diff --git a/pkgs/applications/graphics/pdfcpu/default.nix b/pkgs/applications/graphics/pdfcpu/default.nix
index a1c354b2ac5..08dc87f6684 100644
--- a/pkgs/applications/graphics/pdfcpu/default.nix
+++ b/pkgs/applications/graphics/pdfcpu/default.nix
@@ -2,17 +2,18 @@
buildGoModule rec {
pname = "pdfcpu";
- version = "0.3.4";
+ version = "0.3.5";
src = fetchFromGitHub {
owner = "pdfcpu";
repo = pname;
rev = "v${version}";
- sha256 = "00c4psgfh4hia144zsdhrq83bw3fqda1ancv2gkn5ymxkbpnpyrn";
+ sha256 = "0fb7l1h4dhn100y2ydq50cgj63fbr4p11x8h803rv6x3xwmviwcg";
};
- vendorSha256 = "09alkpfyxapycv6zsaz7prgbr0a1jzd78n7w2mh01mg4hhb2j3k7";
+ vendorSha256 = "06xlwygqw3kzbjqlx09rs9hl4pfsmay5pj4c5hvkrj5z123ldvyw";
+ # No tests
doCheck = false;
subPackages = [ "cmd/pdfcpu" ];
diff --git a/pkgs/applications/misc/calibre/default.nix b/pkgs/applications/misc/calibre/default.nix
index a548177567c..92a491a0056 100644
--- a/pkgs/applications/misc/calibre/default.nix
+++ b/pkgs/applications/misc/calibre/default.nix
@@ -16,7 +16,7 @@
, hyphen
, unrarSupport ? false
, chmlib
-, python2Packages
+, pythonPackages
, libusb1
, libmtp
, xdg_utils
@@ -24,17 +24,13 @@
, removeReferencesTo
}:
-let
- pypkgs = python2Packages;
-
-in
mkDerivation rec {
pname = "calibre";
- version = "4.22.0";
+ version = "4.23.0";
src = fetchurl {
url = "https://download.calibre-ebook.com/${version}/${pname}-${version}.tar.xz";
- sha256 = "0d0wmd3ijk8px1d662igal4lfmpyzynfzs6ms1bb9nf42mq2pxai";
+ sha256 = "sha256-Ft5RRzzw4zb5RqVyUaHk9Pu6H4V/F9j8FKoTLn61lRg=";
};
patches = [
@@ -47,7 +43,7 @@ mkDerivation rec {
] ++ lib.optional (!unrarSupport) ./dont_build_unrar_plugin.patch;
prePatch = ''
- sed -i "/pyqt_sip_dir/ s:=.*:= '${pypkgs.pyqt5}/share/sip/PyQt5':" \
+ sed -i "/pyqt_sip_dir/ s:=.*:= '${pythonPackages.pyqt5}/share/sip/PyQt5':" \
setup/build_environment.py
# Remove unneeded files and libs
@@ -61,52 +57,49 @@ mkDerivation rec {
nativeBuildInputs = [ pkgconfig qmake removeReferencesTo ];
- CALIBRE_PY3_PORT = builtins.toString pypkgs.isPy3k;
+ CALIBRE_PY3_PORT = builtins.toString pythonPackages.isPy3k;
buildInputs = [
- poppler_utils
- libpng
- imagemagick
- libjpeg
- fontconfig
- podofo
- qtbase
chmlib
- icu
+ fontconfig
hunspell
hyphen
- sqlite
- libusb1
+ icu
+ imagemagick
+ libjpeg
libmtp
+ libpng
+ libusb1
+ podofo
+ poppler_utils
+ qtbase
+ sqlite
xdg_utils
] ++ (
- with pypkgs; [
+ with pythonPackages; [
apsw
- cssselect
+ beautifulsoup4
css-parser
+ cssselect
dateutil
dnspython
feedparser
+ html2text
html5-parser
lxml
markdown
+ mechanize
+ msgpack
netifaces
pillow
- python
pyqt5
- sip
- regex
- msgpack
- beautifulsoup4
- html2text
pyqtwebengine
+ python
+ regex
+ sip
# the following are distributed with calibre, but we use upstream instead
odfpy
]
- ) ++ lib.optionals (!pypkgs.isPy3k) (
- with pypkgs; [
- mechanize
- ]
);
installPhase = ''
@@ -121,18 +114,17 @@ mkDerivation rec {
export FC_LIB_DIR=${fontconfig.lib}/lib
export PODOFO_INC_DIR=${podofo.dev}/include/podofo
export PODOFO_LIB_DIR=${podofo.lib}/lib
- export SIP_BIN=${pypkgs.sip}/bin/sip
+ export SIP_BIN=${pythonPackages.sip}/bin/sip
export XDG_DATA_HOME=$out/share
export XDG_UTILS_INSTALL_MODE="user"
- ${pypkgs.python.interpreter} setup.py install --root=$out \
+ ${pythonPackages.python.interpreter} setup.py install --root=$out \
--prefix=$out \
--libdir=$out/lib \
--staging-root=$out \
--staging-libdir=$out/lib \
--staging-sharedir=$out/share
-
PYFILES="$out/bin/* $out/lib/calibre/calibre/web/feeds/*.py
$out/lib/calibre/calibre/ebooks/metadata/*.py
$out/lib/calibre/calibre/ebooks/rtf2xml/*.py"
@@ -154,7 +146,8 @@ mkDerivation rec {
# 2018-11-06) was a single string like the following:
# /nix/store/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-podofo-0.9.6-dev/include/podofo/base/PdfVariant.h
preFixup = ''
- remove-references-to -t ${podofo.dev} $out/lib/calibre/calibre/plugins/podofo.so
+ remove-references-to -t ${podofo.dev} \
+ $out/lib/calibre/calibre/plugins${lib.optionalString pythonPackages.isPy3k "/3"}/podofo.so
for program in $out/bin/*; do
wrapProgram $program \
diff --git a/pkgs/applications/misc/cura/default.nix b/pkgs/applications/misc/cura/default.nix
index 1b5c7c23956..c0aa0a481bd 100644
--- a/pkgs/applications/misc/cura/default.nix
+++ b/pkgs/applications/misc/cura/default.nix
@@ -2,20 +2,20 @@
mkDerivation rec {
pname = "cura";
- version = "4.6.1";
+ version = "4.7.1";
src = fetchFromGitHub {
owner = "Ultimaker";
repo = "Cura";
rev = version;
- sha256 = "0h1r9caa579d3gfpcmch54rdbkg5df64ds2v84iqsbxwjp0rmn4n";
+ sha256 = "19an168iad3cb5w8i71c0wbr79qnz5qnpxqx1j6dgh64qz6ffn2r";
};
materials = fetchFromGitHub {
owner = "Ultimaker";
repo = "fdm_materials";
rev = version;
- sha256 = "1k5c3qmixhpz3z2yi0fysxcyyf1yhcwmdlrcypkw827lhsialqp4";
+ sha256 = "1w6i0dlff8b30q987x3y0zv8847fc8ppfcr9vi982msmv284c89z";
};
buildInputs = [ qtbase qtquickcontrols2 qtgraphicaleffects ];
diff --git a/pkgs/applications/misc/cura/plugins.nix b/pkgs/applications/misc/cura/plugins.nix
index 9fbe647046c..9082feb38a7 100644
--- a/pkgs/applications/misc/cura/plugins.nix
+++ b/pkgs/applications/misc/cura/plugins.nix
@@ -6,13 +6,13 @@ let
octoprint = stdenv.mkDerivation rec {
pname = "Cura-OctoPrintPlugin";
- version = "3.5.12";
+ version = "3.5.16";
src = fetchFromGitHub {
owner = "fieldOfView";
repo = pname;
- rev = "ad522c0b7ead5fbe28da686a3cc75e351274c2bc";
- sha256 = "0ln11ng32bh0smfsk54mv2j3sadh0gwf031nmm95zrvbj9cr6yc0";
+ rev = "8affa8aa9796cb37129d3b7222fff03f86c936cd";
+ sha256 = "0l4qfcashkdmpdm8nm3klz6hmi1f0bmbpb9b1yn4mvg0fam6c5xi";
};
propagatedBuildInputs = with python3Packages; [
diff --git a/pkgs/applications/misc/curaengine/default.nix b/pkgs/applications/misc/curaengine/default.nix
index 0a4ec62ca78..5cc5db3115f 100644
--- a/pkgs/applications/misc/curaengine/default.nix
+++ b/pkgs/applications/misc/curaengine/default.nix
@@ -2,13 +2,13 @@
stdenv.mkDerivation rec {
pname = "curaengine";
- version = "4.6.1";
+ version = "4.7.1";
src = fetchFromGitHub {
owner = "Ultimaker";
repo = "CuraEngine";
rev = version;
- sha256 = "1fr151hmdg2lhk9pbpan1hb1pafj784nijr4pz646ljmjh12vfk2";
+ sha256 = "177fk6j4gn3ssi8j1qxj8p4486f7jkz328vc75agxnh7vhd4mwsm";
};
nativeBuildInputs = [ cmake ];
diff --git a/pkgs/applications/misc/hovercraft/default.nix b/pkgs/applications/misc/hovercraft/default.nix
index edb8114e4a4..5a03cfe23ba 100644
--- a/pkgs/applications/misc/hovercraft/default.nix
+++ b/pkgs/applications/misc/hovercraft/default.nix
@@ -13,14 +13,14 @@
buildPythonApplication rec {
pname = "hovercraft";
- version = "2.6";
+ version = "2.7";
disabled = ! isPy3k;
src = fetchFromGitHub {
owner = "regebro";
repo = "hovercraft";
rev = version;
- sha256 = "150sn6kvqi2s89di1akl5i0g81fasji2ipr12zq5s4dcnhw4r5wp";
+ sha256 = "0k0gjlqjz424rymcfdjpj6a71ppblfls5f8y2hd800d1as4im8az";
};
checkInputs = [ manuel ];
diff --git a/pkgs/applications/misc/navi/default.nix b/pkgs/applications/misc/navi/default.nix
index 008d19576da..62951f3fcab 100644
--- a/pkgs/applications/misc/navi/default.nix
+++ b/pkgs/applications/misc/navi/default.nix
@@ -1,22 +1,22 @@
-{ rustPlatform, fetchFromGitHub, lib, fzf, makeWrapper }:
+{ fetchFromGitHub, fzf, lib, makeWrapper, rustPlatform, wget }:
rustPlatform.buildRustPackage rec {
pname = "navi";
- version = "2.9.0";
+ version = "2.10.0";
src = fetchFromGitHub {
owner = "denisidoro";
repo = "navi";
rev = "v${version}";
- sha256 = "16rwhpyk0zqks9z9bv2a1a8vww2m6867kg33bjbr29hawjg68jql";
+ sha256 = "1fpfc3ikb6rhb8m0dp9ybh46mnqaw361rrsbv6yrivwfm3zc4w2w";
};
- cargoSha256 = "19w9gm389lj1zwhyjifhc2fzkvrvqvyc80lwxz070cnj11ir2l9m";
+ cargoSha256 = "0klizxrb92h7qfxs89m08ksdq698wx4kxsdhqhr5ld9dy3b6ks32";
nativeBuildInputs = [ makeWrapper ];
postInstall = ''
- wrapProgram $out/bin/navi --prefix PATH : ${lib.makeBinPath [ fzf ]}
+ wrapProgram $out/bin/navi --prefix PATH : ${lib.makeBinPath [ fzf wget ]}
'';
meta = with lib; {
diff --git a/pkgs/applications/misc/nimmm/default.nix b/pkgs/applications/misc/nimmm/default.nix
index 16400d76f64..383057ca655 100644
--- a/pkgs/applications/misc/nimmm/default.nix
+++ b/pkgs/applications/misc/nimmm/default.nix
@@ -36,8 +36,6 @@ in stdenv.mkDerivation rec {
nativeBuildInputs = [ nim ];
buildInputs = [ termbox pcre ];
- NIX_LDFLAGS = "-lpcre";
-
buildPhase = ''
export HOME=$TMPDIR;
nim -p:${noise} -p:${nimbox} -p:${lscolors}/src c -d:release src/nimmm.nim
diff --git a/pkgs/applications/misc/redshift/default.nix b/pkgs/applications/misc/redshift/default.nix
index a95e5226f9b..86c787df62a 100644
--- a/pkgs/applications/misc/redshift/default.nix
+++ b/pkgs/applications/misc/redshift/default.nix
@@ -24,11 +24,6 @@ let
./575.patch
];
- postPatch = stdenv.lib.optionalString (pname == "gammastep") ''
- substituteInPlace configure.ac \
- --replace "[gammastep], [2.0]" "[gammastep], [${version}]"
- '';
-
nativeBuildInputs = [
autoconf
automake
@@ -132,13 +127,13 @@ rec {
gammastep = mkRedshift rec {
pname = "gammastep";
- version = "2.0.1";
+ version = "2.0.2";
src = fetchFromGitLab {
owner = "chinstrap";
repo = pname;
rev = "v${version}";
- sha256 = "1ky4h892sg2mfbwwq5xv0vnjflsl2x3nsy5q456r1kyk1gwkj0rg";
+ sha256 = "09wqlz3yya955galhs20014qfwm2yk0lxhyqdsw8gwddvcpyprzg";
};
meta = redshift.meta // {
diff --git a/pkgs/applications/misc/tippecanoe/default.nix b/pkgs/applications/misc/tippecanoe/default.nix
index c85192603cb..455876a772b 100644
--- a/pkgs/applications/misc/tippecanoe/default.nix
+++ b/pkgs/applications/misc/tippecanoe/default.nix
@@ -2,13 +2,13 @@
stdenv.mkDerivation rec {
pname = "tippecanoe";
- version = "1.35.0";
+ version = "1.36.0";
src = fetchFromGitHub {
owner = "mapbox";
repo = pname;
rev = version;
- sha256 = "0v5ycc3gsqnl9pps3m45yrnb1gvw5pk6jdyr0q6516b4ac6x67m5";
+ sha256 = "0lbmhly4ivnqc6qk1k3sdqvsg6x3nfd8gnjx846bhqj4wag3f88m";
};
buildInputs = [ sqlite zlib ];
@@ -25,5 +25,6 @@ stdenv.mkDerivation rec {
license = licenses.bsd2;
maintainers = with maintainers; [ sikmir ];
platforms = with platforms; linux ++ darwin;
+ broken = stdenv.hostPlatform.isAarch64;
};
}
diff --git a/pkgs/applications/networking/browsers/chromium/default.nix b/pkgs/applications/networking/browsers/chromium/default.nix
index b04c3cce776..1c811acd254 100644
--- a/pkgs/applications/networking/browsers/chromium/default.nix
+++ b/pkgs/applications/networking/browsers/chromium/default.nix
@@ -1,5 +1,5 @@
{ newScope, config, stdenv, fetchurl, makeWrapper
-, llvmPackages_10, llvmPackages_11, ed, gnugrep, coreutils
+, llvmPackages_10, llvmPackages_11, ed, gnugrep, coreutils, xdg_utils
, glib, gtk3, gnome3, gsettings-desktop-schemas, gn, fetchgit
, libva ? null
, pipewire_0_2
@@ -204,6 +204,9 @@ in stdenv.mkDerivation {
export XDG_DATA_DIRS=$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH\''${XDG_DATA_DIRS:+:}\$XDG_DATA_DIRS
+ # Mainly for xdg-open but also other xdg-* tools:
+ export PATH="${xdg_utils}/bin\''${PATH:+:}\$PATH"
+
.
w
EOF
diff --git a/pkgs/applications/networking/cluster/helm/default.nix b/pkgs/applications/networking/cluster/helm/default.nix
index bb76ad69882..3e24a3d0608 100644
--- a/pkgs/applications/networking/cluster/helm/default.nix
+++ b/pkgs/applications/networking/cluster/helm/default.nix
@@ -2,15 +2,15 @@
buildGoModule rec {
pname = "helm";
- version = "3.3.0";
+ version = "3.3.1";
src = fetchFromGitHub {
owner = "helm";
repo = "helm";
rev = "v${version}";
- sha256 = "0bp2yscrvdm46w2nxas5zs9mcvdn2yp05k0wmcjl7gh42fs6hmcs";
+ sha256 = "0y3ilvafzwizd9zqvp8jijkkd1c2yy7zyl5xfma1zv2x96p7xgqh";
};
- vendorSha256 = "0lccglh5qpm5kp8xp1pn7y4cfxjpax83gyzjmnhh9h5y9zwgqp03";
+ vendorSha256 = "0f8a0psvic923rh13f5041p7hr6w8dy9qxdw3l195yky5cf3fj6w";
doCheck = false;
@@ -28,6 +28,6 @@ buildGoModule rec {
homepage = "https://github.com/kubernetes/helm";
description = "A package manager for kubernetes";
license = licenses.asl20;
- maintainers = with maintainers; [ rlupton20 edude03 saschagrunert Frostman ];
+ maintainers = with maintainers; [ rlupton20 edude03 saschagrunert Frostman Chili-Man ];
};
}
diff --git a/pkgs/applications/networking/cluster/terragrunt/default.nix b/pkgs/applications/networking/cluster/terragrunt/default.nix
index 14744f188b0..e8b602b8a80 100644
--- a/pkgs/applications/networking/cluster/terragrunt/default.nix
+++ b/pkgs/applications/networking/cluster/terragrunt/default.nix
@@ -2,16 +2,16 @@
buildGoModule rec {
pname = "terragrunt";
- version = "0.23.33";
+ version = "0.23.40";
src = fetchFromGitHub {
owner = "gruntwork-io";
repo = pname;
rev = "v${version}";
- sha256 = "0fsyvmdg2llnzy0yzmiihnb865ccq2sn6d3i935dflppnjyp01p4";
+ sha256 = "0gd2g1nl8dgj24mzk4qymcwnp6prbi3qxj863rkpi3k32zy2iw4k";
};
- vendorSha256 = "05p72l724qqf61dn0frahf4awvkkcw8cpl6nhwlacd1jw8c14fjl";
+ vendorSha256 = "0f466qn5vp74mwx9s4rcbw1x793w8hr5dcf2c12sgshya1bxs4nl";
doCheck = false;
diff --git a/pkgs/applications/networking/newsreaders/liferea/default.nix b/pkgs/applications/networking/newsreaders/liferea/default.nix
index 2632acd73d3..8ec46080237 100644
--- a/pkgs/applications/networking/newsreaders/liferea/default.nix
+++ b/pkgs/applications/networking/newsreaders/liferea/default.nix
@@ -23,11 +23,11 @@
stdenv.mkDerivation rec {
pname = "liferea";
- version = "1.12.6";
+ version = "1.12.9";
src = fetchurl {
- url = "https://github.com/lwindolf/${pname}/releases/download/v${version}/${pname}-${version}b.tar.bz2";
- sha256 = "03pr1gmiv5y0i92bkhcxr8s311ll91chz19wb96jkixx32xav91d";
+ url = "https://github.com/lwindolf/${pname}/releases/download/v${version}/${pname}-${version}.tar.bz2";
+ sha256 = "06ybr1wjlfir8iqjx6x0v1knd4b2hsy30qmkk4kssy6ky2ahc66q";
};
nativeBuildInputs = [
@@ -73,7 +73,7 @@ stdenv.mkDerivation rec {
description = "A GTK-based news feed aggregator";
homepage = "http://lzone.de/liferea/";
license = licenses.gpl2Plus;
- maintainers = with maintainers; [ vcunat romildo ];
+ maintainers = with maintainers; [ romildo ];
platforms = platforms.linux;
longDescription = ''
diff --git a/pkgs/applications/science/biology/mosdepth/default.nix b/pkgs/applications/science/biology/mosdepth/default.nix
index 21af5b82207..1ce6357d2e8 100644
--- a/pkgs/applications/science/biology/mosdepth/default.nix
+++ b/pkgs/applications/science/biology/mosdepth/default.nix
@@ -26,14 +26,15 @@ in stdenv.mkDerivation rec {
sha256 = "01gm9gj2x2zs4yx6wk761fi1papi7qr3gp4ln1kkn8n2f9y9h849";
};
- buildInputs = [ nim ];
+ nativeBuildInputs = [ nim ];
+ buildInputs = [ htslib pcre ];
buildPhase = ''
HOME=$TMPDIR
nim -p:${hts-nim}/src -p:${docopt}/src c --nilseqs:on -d:release mosdepth.nim
'';
+
installPhase = "install -Dt $out/bin mosdepth";
- fixupPhase = "patchelf --set-rpath ${stdenv.lib.makeLibraryPath [ stdenv.cc.cc htslib pcre ]} $out/bin/mosdepth";
meta = with stdenv.lib; {
description = "fast BAM/CRAM depth calculation for WGS, exome, or targeted sequencing.";
diff --git a/pkgs/applications/science/biology/picard-tools/default.nix b/pkgs/applications/science/biology/picard-tools/default.nix
index 99bac0c4b7a..d496e78748d 100644
--- a/pkgs/applications/science/biology/picard-tools/default.nix
+++ b/pkgs/applications/science/biology/picard-tools/default.nix
@@ -2,11 +2,11 @@
stdenv.mkDerivation rec {
pname = "picard-tools";
- version = "2.23.3";
+ version = "2.23.4";
src = fetchurl {
url = "https://github.com/broadinstitute/picard/releases/download/${version}/picard.jar";
- sha256 = "08wgi0hijfbchr2srmndxq3h2fijvyvr8b6zv680fpcjixm5bbhf";
+ sha256 = "0xg4nbx02a2kckr6p8pqjpv5rmp95bkmglgm1bma6f77s7hkab7q";
};
nativeBuildInputs = [ makeWrapper ];
diff --git a/pkgs/applications/science/logic/ott/default.nix b/pkgs/applications/science/logic/ott/default.nix
index fa2ad9c4abc..4f1b984b995 100644
--- a/pkgs/applications/science/logic/ott/default.nix
+++ b/pkgs/applications/science/logic/ott/default.nix
@@ -2,13 +2,13 @@
stdenv.mkDerivation rec {
pname = "ott";
- version = "0.30";
+ version = "0.31";
src = fetchFromGitHub {
owner = "ott-lang";
repo = "ott";
rev = version;
- sha256 = "16bxfnm30z94x36vr8vs6zd6fj55vnb7aypjl6hf7clk42040brc";
+ sha256 = "0l81126i2qkz11fs5yrjdgymnqgjcs5avb7f951h61yh1s68jpnn";
};
nativeBuildInputs = [ pkgconfig ];
diff --git a/pkgs/applications/science/logic/proverif/default.nix b/pkgs/applications/science/logic/proverif/default.nix
index 6a9367b30aa..6acae2bcb76 100644
--- a/pkgs/applications/science/logic/proverif/default.nix
+++ b/pkgs/applications/science/logic/proverif/default.nix
@@ -2,11 +2,11 @@
stdenv.mkDerivation rec {
pname = "proverif";
- version = "2.01";
+ version = "2.02pl1";
src = fetchurl {
url = "http://prosecco.gforge.inria.fr/personal/bblanche/proverif/proverif${version}.tar.gz";
- sha256 = "01wp5431c77z0aaa99h8bnm5yhr6jslpqc8iyg0a7gxfqnb19gxi";
+ sha256 = "1jmzfpx0hdgfmkq0jp6i3k5av9xxgndjaj743wfy37svn0ga4jjx";
};
buildInputs = with ocamlPackages; [ ocaml findlib lablgtk ];
diff --git a/pkgs/build-support/cc-wrapper/default.nix b/pkgs/build-support/cc-wrapper/default.nix
index bfb15f2f783..fff57dd7c48 100644
--- a/pkgs/build-support/cc-wrapper/default.nix
+++ b/pkgs/build-support/cc-wrapper/default.nix
@@ -453,7 +453,7 @@ stdenv.mkDerivation {
substituteAll ${./add-flags.sh} $out/nix-support/add-flags.sh
substituteAll ${./add-hardening.sh} $out/nix-support/add-hardening.sh
- substituteAll ${../wrapper-common/utils.bash} $out/nix-support/utils.bash
+ substituteAll ${if stdenv.isDarwin then ../wrapper-common/utils.bash.darwin else ../wrapper-common/utils.bash} $out/nix-support/utils.bash
''
##
diff --git a/pkgs/build-support/pkg-config-wrapper/default.nix b/pkgs/build-support/pkg-config-wrapper/default.nix
index e01df107dd1..b1b9325ea6e 100644
--- a/pkgs/build-support/pkg-config-wrapper/default.nix
+++ b/pkgs/build-support/pkg-config-wrapper/default.nix
@@ -107,7 +107,7 @@ stdenv.mkDerivation {
+ ''
substituteAll ${./add-flags.sh} $out/nix-support/add-flags.sh
- substituteAll ${../wrapper-common/utils.bash} $out/nix-support/utils.bash
+ substituteAll ${if stdenv.isDarwin then ../wrapper-common/utils.bash.darwin else ../wrapper-common/utils.bash} $out/nix-support/utils.bash
''
##
diff --git a/pkgs/data/themes/marwaita/default.nix b/pkgs/data/themes/marwaita/default.nix
index 5f09927e15c..291f437c3ea 100644
--- a/pkgs/data/themes/marwaita/default.nix
+++ b/pkgs/data/themes/marwaita/default.nix
@@ -8,13 +8,13 @@
stdenv.mkDerivation rec {
pname = "marwaita";
- version = "7.5.1";
+ version = "7.6.1";
src = fetchFromGitHub {
owner = "darkomarko42";
repo = pname;
rev = version;
- sha256 = "0ig5wc6dkbly6yrvd13h4lyr8x0y7k3d9iv4rhg0pnjgcpna83mw";
+ sha256 = "1n7flwrngwh6gmh72j40apf8qk52162m93hsfhgxzrivkhg37zi0";
};
buildInputs = [
@@ -37,7 +37,7 @@ stdenv.mkDerivation rec {
'';
meta = with stdenv.lib; {
- description = "GTK theme supporting Budgie, Pantheon, Mate and Xfce4 desktops";
+ description = "GTK theme supporting Budgie, Pantheon, Mate, Xfce4 and GNOME desktops";
homepage = "https://www.pling.com/p/1239855/";
license = licenses.cc0;
platforms = platforms.unix;
diff --git a/pkgs/development/compilers/nim/NIM_CONFIG_DIR.patch b/pkgs/development/compilers/nim/NIM_CONFIG_DIR.patch
new file mode 100644
index 00000000000..61e05b791cf
--- /dev/null
+++ b/pkgs/development/compilers/nim/NIM_CONFIG_DIR.patch
@@ -0,0 +1,23 @@
+diff --git a/compiler/nimconf.nim b/compiler/nimconf.nim
+index a470179bd..73cfa1a23 100644
+--- a/compiler/nimconf.nim
++++ b/compiler/nimconf.nim
+@@ -225,10 +225,15 @@ proc getUserConfigPath*(filename: RelativeFile): AbsoluteFile =
+ proc getSystemConfigPath*(conf: ConfigRef; filename: RelativeFile): AbsoluteFile =
+ # try standard configuration file (installation did not distribute files
+ # the UNIX way)
+- let p = getPrefixDir(conf)
+- result = p / RelativeDir"config" / filename
++ let
++ prefix = getPrefixDir(conf)
++ env = getEnv("NIM_CONFIG_PATH")
++ if env != "":
++ result = env.toAbsoluteDir / filename
++ else:
++ result = prefix / RelativeDir"config" / filename
+ when defined(unix):
+- if not fileExists(result): result = p / RelativeDir"etc/nim" / filename
++ if not fileExists(result): result = prefix / RelativeDir"etc/nim" / filename
+ if not fileExists(result): result = AbsoluteDir"/etc/nim" / filename
+
+ proc loadConfigs*(cfg: RelativeFile; cache: IdentCache; conf: ConfigRef) =
diff --git a/pkgs/development/compilers/nim/default.nix b/pkgs/development/compilers/nim/default.nix
index 543a6120577..8ac9f8e048c 100644
--- a/pkgs/development/compilers/nim/default.nix
+++ b/pkgs/development/compilers/nim/default.nix
@@ -1,69 +1,255 @@
-# based on https://github.com/nim-lang/Nim/blob/v0.18.0/.travis.yml
+# https://nim-lang.github.io/Nim/packaging.html
-{ stdenv, lib, fetchurl, makeWrapper, openssl, pcre, readline,
- boehmgc, sfml, sqlite }:
+{ stdenv, lib, fetchgit, fetchurl, makeWrapper, gdb, openssl, pcre, readline
+, boehmgc, sqlite, nim-unwrapped, nim-stdlib, nim }:
-stdenv.mkDerivation rec {
- pname = "nim";
+let
version = "1.2.6";
-
src = fetchurl {
- url = "https://nim-lang.org/download/${pname}-${version}.tar.xz";
+ url = "https://nim-lang.org/download/nim-${version}.tar.xz";
sha256 = "0zk5qzxayqjw7kq6p92j4008g9bbyilyymhdc5xq9sln5rqym26z";
};
- enableParallelBuilding = true;
-
- NIX_LDFLAGS = "-lcrypto -lpcre -lreadline -lgc -lsqlite3";
-
- # we could create a separate derivation for the "written in c" version of nim
- # used for bootstrapping, but koch insists on moving the nim compiler around
- # as part of building it, so it cannot be read-only
-
- nativeBuildInputs = [
- makeWrapper
- ];
-
- buildInputs = [
- openssl pcre readline boehmgc sfml sqlite
- ];
-
- buildPhase = ''
- runHook preBuild
-
- # build.sh wants to write to $HOME/.cache
- HOME=$TMPDIR
- sh build.sh
- ./bin/nim c koch
- ./koch boot -d:release \
- -d:useGnuReadline \
- ${lib.optionals (stdenv.isDarwin || stdenv.isLinux) "-d:nativeStacktrace"}
- ./koch tools -d:release
-
- runHook postBuild
- '';
-
- installPhase = ''
- runHook preInstall
-
- install -Dt $out/bin bin/* koch
- ./koch install $out
- mv $out/nim/bin/* $out/bin/ && rmdir $out/nim/bin
- mv $out/nim/* $out/ && rmdir $out/nim
-
- # Fortify hardening appends -O2 to gcc flags which is unwanted for unoptimized nim builds.
- wrapProgram $out/bin/nim \
- --run 'NIX_HARDENING_ENABLE=''${NIX_HARDENING_ENABLE/fortify/}' \
- --suffix PATH : ${lib.makeBinPath [ stdenv.cc ]}
-
- runHook postInstall
- '';
-
- meta = with stdenv.lib; {
+ meta = with lib; {
description = "Statically typed, imperative programming language";
homepage = "https://nim-lang.org/";
license = licenses.mit;
maintainers = with maintainers; [ ehmry ];
- platforms = with platforms; linux ++ darwin; # arbitrary
};
-}
+
+ parseCpu = platform:
+ with platform;
+ # Derive a Nim CPU identifier
+ if isAarch32 then
+ "arm"
+ else if isAarch64 then
+ "arm64"
+ else if isAlpha then
+ "alpha"
+ else if isAvr then
+ "avr"
+ else if isMips && is32bit then
+ "mips"
+ else if isMips && is64bit then
+ "mips64"
+ else if isMsp430 then
+ "msp430"
+ else if isPowerPC && is32bit then
+ "powerpc"
+ else if isPowerPC && is64bit then
+ "powerpc64"
+ else if isRiscV && is64bit then
+ "riscv64"
+ else if isSparc then
+ "sparc"
+ else if isx86_32 then
+ "i386"
+ else if isx86_64 then
+ "amd64"
+ else
+ abort "no Nim CPU support known for ${config}";
+
+ parseOs = platform:
+ with platform;
+ # Derive a Nim OS identifier
+ if isAndroid then
+ "Android"
+ else if isDarwin then
+ "MacOSX"
+ else if isFreeBSD then
+ "FreeBSD"
+ else if isGenode then
+ "Genode"
+ else if isLinux then
+ "Linux"
+ else if isNetBSD then
+ "NetBSD"
+ else if isNone then
+ "Standalone"
+ else if isOpenBSD then
+ "OpenBSD"
+ else if isWindows then
+ "Windows"
+ else if isiOS then
+ "iOS"
+ else
+ abort "no Nim OS support known for ${config}";
+
+ parsePlatform = p: {
+ cpu = parseCpu p;
+ os = parseOs p;
+ };
+
+ nimHost = parsePlatform stdenv.hostPlatform;
+ nimTarget = parsePlatform stdenv.targetPlatform;
+
+ wrapperInputs = rec {
+
+ bootstrap = stdenv.mkDerivation rec {
+ pname = "nim-bootstrap";
+ version = "0.20.0";
+
+ src = fetchgit {
+ # A Git checkout is much smaller than a GitHub tarball.
+ url = "https://github.com/nim-lang/csources.git";
+ rev = "v" + version;
+ sha256 = "0i6vsfy1sgapx43n226q8m0pvn159sw2mhp50zm3hhb9zfijanis";
+ };
+
+ enableParallelBuilding = true;
+
+ installPhase = ''
+ runHook preInstall
+ install -Dt $out/bin bin/nim
+ runHook postInstall
+ '';
+ };
+
+ unwrapped = stdenv.mkDerivation {
+ # https://nim-lang.github.io/Nim/packaging.html
+ pname = "nim-unwrapped";
+ inherit version src;
+
+ buildInputs = [ boehmgc openssl pcre readline sqlite ];
+
+ patches = [
+ ./NIM_CONFIG_DIR.patch
+ # Override compiler configuration via an environmental variable
+
+ ./nixbuild.patch
+ # Load libraries at runtime by absolute path
+ ];
+
+ configurePhase = ''
+ runHook preConfigure
+ cp ${bootstrap}/bin/nim bin/
+ echo 'define:nixbuild' >> config/nim.cfg
+ runHook postConfigure
+ '';
+
+ kochArgs = [
+ "--cpu:${nimHost.cpu}"
+ "--os:${nimHost.os}"
+ "-d:release"
+ "-d:useGnuReadline"
+ ] ++ lib.optional (stdenv.isDarwin || stdenv.isLinux)
+ "-d:nativeStacktrace";
+
+ buildPhase = ''
+ runHook preBuild
+ local HOME=$TMPDIR
+ ./bin/nim c koch
+ ./koch boot $kochArgs --parallelBuild:$NIX_BUILD_CORES
+ ./koch tools $kochArgs --parallelBuild:$NIX_BUILD_CORES
+ runHook postBuild
+ '';
+
+ installPhase = ''
+ runHook preInstall
+ install -Dt $out/bin bin/*
+ runHook postInstall
+ '';
+
+ inherit meta;
+ };
+
+ stdlib = stdenv.mkDerivation {
+ pname = "nim-stdlib";
+ inherit (nim-unwrapped) version src patches;
+
+ dontConfigure = true;
+ dontBuild = true;
+
+ installPhase = ''
+ runHook preInstall
+ touch bin/nim
+ ./install.sh $TMPDIR
+ cp -r $TMPDIR/nim/lib $out
+ runHook postInstall
+ '';
+
+ meta = meta // {
+ description = meta.description + " (standard library)";
+ };
+ };
+ };
+
+ wrapped = let
+ nim = nim-unwrapped;
+ inherit (stdenv) targetPlatform;
+ in stdenv.mkDerivation {
+ name = "${targetPlatform.config}-nim-wrapper-${nim.version}";
+ inherit (nim) version;
+ preferLocalBuild = true;
+
+ nativeBuildInputs = [ makeWrapper ];
+
+ unpackPhase = ''
+ runHook preUnpack
+ tar xf ${nim.src} nim-$version/config/nim.cfg
+ cd nim-$version
+ runHook postUnpack
+ '';
+
+ dontConfigure = true;
+
+ wrapperArgs = [
+ "--prefix PATH : ${lib.makeBinPath [ stdenv.cc gdb ]}:${
+ placeholder "out"
+ }/bin"
+ "--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ stdenv.cc.libc openssl ]}"
+ "--set NIM_CONFIG_PATH ${placeholder "out"}/etc/nim"
+ ];
+
+ buildPhase = with stdenv;
+ let
+ ccType = if cc.isGNU then
+ "gcc"
+ else if cc.isClang then
+ "clang"
+ else
+ abort "no Nim configuration available for ${cc.name}";
+ in ''
+ runHook preBuild
+ cat >> config/nim.cfg << EOF
+
+ define:nixbuild
+ os = ${nimTarget.os}
+ cpu = ${nimTarget.cpu}
+ cc = ${ccType}
+ EOF
+
+ mkdir -p $out/bin $out/etc/nim
+ export cc=$CC
+ export cxx=$CXX
+ substituteAll config/nim.cfg $out/etc/nim/nim.cfg \
+ --replace "cc = gcc" ""
+
+ for binpath in ${nim}/bin/nim?*; do
+ local binname=`basename $binpath`
+ makeWrapper $binpath $out/bin/${targetPlatform.config}-$binname \
+ $wrapperArgs
+ ln -s $out/bin/${targetPlatform.config}-$binname $out/bin/$binname
+ done
+
+ makeWrapper ${nim}/bin/nim $out/bin/${targetPlatform.config}-nim \
+ $wrapperArgs \
+ --set NIX_HARDENING_ENABLE "''${NIX_HARDENING_ENABLE/fortify}" \
+ --add-flags --lib:${nim-stdlib}
+ ln -s $out/bin/${targetPlatform.config}-nim $out/bin/nim
+
+ runHook postBuild
+ '';
+ # Fortify hardening appends -O2 to gcc flags which is unwanted for unoptimized nim builds.
+
+ dontInstall = true;
+
+ meta = meta // {
+ description = nim.meta.description
+ + " (${targetPlatform.config} wrapper)";
+ platforms = lib.platforms.unix;
+ };
+
+ };
+
+in wrapped // wrapperInputs
diff --git a/pkgs/development/compilers/nim/nixbuild.patch b/pkgs/development/compilers/nim/nixbuild.patch
new file mode 100644
index 00000000000..bdfd04744e1
--- /dev/null
+++ b/pkgs/development/compilers/nim/nixbuild.patch
@@ -0,0 +1,51 @@
+commit 164ba50fc74b980f77047080b2ae1ea099ae9b27
+Author: Emery Hemingway
+Date: Mon Sep 7 14:09:22 2020 +0200
+
+ Load libaries by absolute path on NixOS
+
+ If "nixbuild" is defined then choose dynamic runtime libraries by
+ searching $NIX_LDFLAGS at compile-time.
+
+ Fix #15194
+
+diff --git a/lib/pure/dynlib.nim b/lib/pure/dynlib.nim
+index f31ae94dd..debed9c07 100644
+--- a/lib/pure/dynlib.nim
++++ b/lib/pure/dynlib.nim
+@@ -56,6 +56,9 @@
+
+ import strutils
+
++when defined(nixbuild):
++ import os
++
+ type
+ LibHandle* = pointer ## a handle to a dynamically loaded library
+
+@@ -95,6 +98,25 @@ proc libCandidates*(s: string, dest: var seq[string]) =
+ libCandidates(prefix & middle & suffix, dest)
+ else:
+ add(dest, s)
++ when defined(nixbuild):
++ # Nix doesn't have a global library directory so
++ # load libraries using an absolute path if one
++ # can be derived from NIX_LDFLAGS.
++ #
++ # During Nix/NixOS packaging the line "define:nixbuild"
++ # should be appended to the ../../config/nim.cfg file
++ # to enable this behavior by default.
++ #
++ var libDirs = split(getEnv("LD_LIBRARY_PATH"), ':')
++ for flag in split(getEnv("NIX_LDFLAGS")):
++ if flag.startsWith("-L"):
++ libDirs.add(flag[2..flag.high])
++ for lib in dest:
++ for dir in libDirs:
++ let abs = dir / lib
++ if existsFile(abs):
++ dest = @[abs]
++ return
+
+ proc loadLibPattern*(pattern: string, globalSymbols = false): LibHandle =
+ ## loads a library with name matching `pattern`, similar to what `dlimport`
diff --git a/pkgs/development/guile-modules/guile-sdl2/default.nix b/pkgs/development/guile-modules/guile-sdl2/default.nix
index be885d990ec..061d3c4a1db 100644
--- a/pkgs/development/guile-modules/guile-sdl2/default.nix
+++ b/pkgs/development/guile-modules/guile-sdl2/default.nix
@@ -5,13 +5,13 @@
let
name = "${pname}-${version}";
pname = "guile-sdl2";
- version = "0.4.0";
+ version = "0.5.0";
in stdenv.mkDerivation {
inherit name;
src = fetchurl {
url = "https://files.dthompson.us/${pname}/${name}.tar.gz";
- sha256 = "0zcxwgyadwpbhq6h5mv2569c3kalgra26zc186y9fqiyyzmh1v9s";
+ sha256 = "118x0cg7fzbsyrfhy5f9ab7dqp9czgia0ycgzp6sn3nlsdrcnr4m";
};
nativeBuildInputs = [ libtool pkgconfig ];
diff --git a/pkgs/development/libraries/catch2/default.nix b/pkgs/development/libraries/catch2/default.nix
index ec3c04856fe..49b2e9be02c 100644
--- a/pkgs/development/libraries/catch2/default.nix
+++ b/pkgs/development/libraries/catch2/default.nix
@@ -2,13 +2,13 @@
stdenv.mkDerivation rec {
pname = "catch2";
- version = "2.12.2";
+ version = "2.12.3";
src = fetchFromGitHub {
owner = "catchorg";
repo = "Catch2";
rev = "v${version}";
- sha256="17fr2k0jhdcrmmvvb9d8igmjbyads3hkdrakvmrpgc82srm78jcc";
+ sha256="0rp30754frp88wbl17ksr40mmffw5xibq73blgx9jj42d7nl891x";
};
nativeBuildInputs = [ cmake ];
diff --git a/pkgs/development/libraries/opencl-clhpp/default.nix b/pkgs/development/libraries/opencl-clhpp/default.nix
index bf45bc90f19..1486ea93175 100644
--- a/pkgs/development/libraries/opencl-clhpp/default.nix
+++ b/pkgs/development/libraries/opencl-clhpp/default.nix
@@ -2,13 +2,13 @@
stdenv.mkDerivation rec {
pname = "opencl-clhpp";
- version = "2.0.11";
+ version = "2.0.12";
src = fetchFromGitHub {
owner = "KhronosGroup";
repo = "OpenCL-CLHPP";
rev = "v${version}";
- sha256 = "0a0n0f1lb86cwfm0ndzykcn965vz1v0n9n3rfmkiwrzkdhc9iy2y";
+ sha256 = "04g3mg2cpbi048fxxkghra81bpxzqr4r3gspx5mvqipx1lzypsci";
};
nativeBuildInputs = [ cmake python ];
diff --git a/pkgs/development/libraries/qwt/6_qt4.nix b/pkgs/development/libraries/qwt/6_qt4.nix
index 04bc0d7ed22..4b7aa9cf7f9 100644
--- a/pkgs/development/libraries/qwt/6_qt4.nix
+++ b/pkgs/development/libraries/qwt/6_qt4.nix
@@ -1,11 +1,11 @@
{ stdenv, fetchurl, qt4, qmake4Hook, AGL }:
stdenv.mkDerivation rec {
- name = "qwt-6.1.4";
+ name = "qwt-6.1.5";
src = fetchurl {
url = "mirror://sourceforge/qwt/${name}.tar.bz2";
- sha256 = "1navkcnmn0qz8kzsyqmk32d929zl72l0b580w1ica7z5559j2a8m";
+ sha256 = "0hf0mpca248xlqn7xnzkfj8drf19gdyg5syzklvq8pibxiixwxj0";
};
buildInputs = [
diff --git a/pkgs/development/ocaml-modules/labltk/default.nix b/pkgs/development/ocaml-modules/labltk/default.nix
index e7b68b90713..1c8edea66fb 100644
--- a/pkgs/development/ocaml-modules/labltk/default.nix
+++ b/pkgs/development/ocaml-modules/labltk/default.nix
@@ -52,6 +52,10 @@ let param =
version = "8.06.8";
sha256 = "0lfjc7lscq81ibqb3fcybdzs2r1i2xl7rsgi7linq46a0pcpkinw";
};
+ "4.11" = mkNewParam {
+ version = "8.06.9";
+ sha256 = "1k42k3bjkf22gk39lwwzqzfhgjyhxnclslldrzpg5qy1829pbnc0";
+ };
}.${builtins.substring 0 4 ocaml.version};
in
diff --git a/pkgs/development/python-modules/libarcus/default.nix b/pkgs/development/python-modules/libarcus/default.nix
index cd5f0aef648..5b68695f832 100644
--- a/pkgs/development/python-modules/libarcus/default.nix
+++ b/pkgs/development/python-modules/libarcus/default.nix
@@ -3,14 +3,14 @@
buildPythonPackage rec {
pname = "libarcus";
- version = "4.6.1";
+ version = "4.7.1";
format = "other";
src = fetchFromGitHub {
owner = "Ultimaker";
repo = "libArcus";
rev = version;
- sha256 = "1sfy8skvgw6hiihs9jmfn7a13yappqwffir98pahyg7cim7p55kr";
+ sha256 = "0wmrcvw7k34ib93shhmjzh6kpndgqr37kyr377sril5clmac0z1f";
};
disabled = pythonOlder "3.4.0";
diff --git a/pkgs/development/python-modules/libsavitar/default.nix b/pkgs/development/python-modules/libsavitar/default.nix
index 32717e127fb..27144ccf1ad 100644
--- a/pkgs/development/python-modules/libsavitar/default.nix
+++ b/pkgs/development/python-modules/libsavitar/default.nix
@@ -2,14 +2,14 @@
buildPythonPackage rec {
pname = "libsavitar";
- version = "4.6.1";
+ version = "4.7.1";
format = "other";
src = fetchFromGitHub {
owner = "Ultimaker";
repo = "libSavitar";
rev = version;
- sha256 = "0nk8zl5b0b36wrrkj271ck4phzxsigkjsazndscjslc9nkldmnpq";
+ sha256 = "0mzr3ynfap51bcn6kshyi2h6iny2gpavn6g3b1xcsgzzlxqgfixf";
};
postPatch = ''
diff --git a/pkgs/development/python-modules/pydub/default.nix b/pkgs/development/python-modules/pydub/default.nix
index 8499db31e02..42d33c00cbe 100644
--- a/pkgs/development/python-modules/pydub/default.nix
+++ b/pkgs/development/python-modules/pydub/default.nix
@@ -2,13 +2,13 @@
buildPythonPackage rec {
pname = "pydub";
- version = "0.24.0";
+ version = "0.24.1";
# pypi version doesn't include required data files for tests
src = fetchFromGitHub {
owner = "jiaaro";
repo = pname;
rev = "v${version}";
- sha256 = "0cnhkk44cn3wa4fmd1rwzdx2zgrn87qg25pbcp9wsisdlpn4bj6d";
+ sha256 = "1pv4n54kkjpbjlvwh9b6a7zyq1ylg0fjmd2q4ws9nc2a6mrcivhc";
};
diff --git a/pkgs/development/python-modules/scapy/default.nix b/pkgs/development/python-modules/scapy/default.nix
index ec0ccc102f3..2b9eb5517a4 100644
--- a/pkgs/development/python-modules/scapy/default.nix
+++ b/pkgs/development/python-modules/scapy/default.nix
@@ -1,6 +1,6 @@
-{ buildPythonPackage, fetchFromGitHub, lib, isPyPy, isPy3k, pythonOlder
+{ buildPythonPackage, fetchFromGitHub, lib, isPyPy
, pycrypto, ecdsa # TODO
-, enum34, mock
+, tox, mock, coverage, can, brotli
, withOptionalDeps ? true, tcpdump, ipython
, withCryptography ? true, cryptography
, withVoipSupport ? true, sox
@@ -13,7 +13,7 @@
buildPythonPackage rec {
pname = "scapy";
- version = "2.4.3";
+ version = "2.4.4";
disabled = isPyPy;
@@ -21,14 +21,11 @@ buildPythonPackage rec {
owner = "secdev";
repo = "scapy";
rev = "v${version}";
- sha256 = "08ypdzp0p3gvmz3pwi0i9q5f7hz9cq8yn6gawia49ynallwnv4zy";
+ sha256 = "1wpx7gps3g8q5ykbfcd67mxwcs416zg37b53fwfzzlc1m58vhk3p";
};
- # TODO: Temporary workaround
- patches = [ ./fix-version.patch ];
-
postPatch = ''
- sed -i "s/NIXPKGS_SCAPY_VERSION/${version}/" scapy/__init__.py
+ printf "${version}" > scapy/VERSION
'' + lib.optionalString withManufDb ''
substituteInPlace scapy/data.py --replace "/opt/wireshark" "${wireshark}"
'';
@@ -38,16 +35,41 @@ buildPythonPackage rec {
++ lib.optional withCryptography cryptography
++ lib.optional withVoipSupport sox
++ lib.optional withPlottingSupport matplotlib
- ++ lib.optionals withGraphicsSupport [ pyx texlive.combined.scheme-minimal graphviz imagemagick ]
- ++ lib.optional (isPy3k && pythonOlder "3.4") enum34
- ++ lib.optional doCheck mock;
+ ++ lib.optionals withGraphicsSupport [ pyx texlive.combined.scheme-minimal graphviz imagemagick ];
- # Tests fail with Python 3.6 (seems to be an upstream bug, I'll investigate)
- doCheck = if isPy3k then false else true;
+ # Running the tests seems too complicated:
+ doCheck = false;
+ checkInputs = [ tox mock coverage can brotli ];
+ checkPhase = ''
+ patchShebangs .
+ .config/ci/test.sh
+ '';
meta = with lib; {
- description = "Powerful interactive network packet manipulation program";
+ description = "A Python-based network packet manipulation program and library";
+ longDescription = ''
+ Scapy is a powerful Python-based interactive packet manipulation program
+ and library.
+
+ It is able to forge or decode packets of a wide number of protocols, send
+ them on the wire, capture them, store or read them using pcap files,
+ match requests and replies, and much more. It is designed to allow fast
+ packet prototyping by using default values that work.
+
+ It can easily handle most classical tasks like scanning, tracerouting,
+ probing, unit tests, attacks or network discovery (it can replace hping,
+ 85% of nmap, arpspoof, arp-sk, arping, tcpdump, wireshark, p0f, etc.). It
+ also performs very well at a lot of other specific tasks that most other
+ tools can't handle, like sending invalid frames, injecting your own
+ 802.11 frames, combining techniques (VLAN hopping+ARP cache poisoning,
+ VoIP decoding on WEP protected channel, ...), etc.
+
+ Scapy supports Python 2.7 and Python 3 (3.4 to 3.8). It's intended to be
+ cross platform, and runs on many different platforms (Linux, OSX, *BSD,
+ and Windows).
+ '';
homepage = "https://scapy.net/";
+ changelog = "https://github.com/secdev/scapy/releases/tag/v${version}";
license = licenses.gpl2;
platforms = platforms.unix;
maintainers = with maintainers; [ primeos bjornfor ];
diff --git a/pkgs/development/python-modules/scapy/fix-version.patch b/pkgs/development/python-modules/scapy/fix-version.patch
deleted file mode 100644
index c39458e9fea..00000000000
--- a/pkgs/development/python-modules/scapy/fix-version.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/scapy/__init__.py b/scapy/__init__.py
-index d5ad6164..245ce2fb 100644
---- a/scapy/__init__.py
-+++ b/scapy/__init__.py
-@@ -90,7 +90,7 @@ def _version():
- return 'unknown.version'
-
-
--VERSION = __version__ = _version()
-+VERSION = __version__ = "NIXPKGS_SCAPY_VERSION"
- VERSION_MAIN = re.search(r"[0-9.]+", VERSION).group()
-
- if __name__ == "__main__":
diff --git a/pkgs/development/python-modules/uranium/default.nix b/pkgs/development/python-modules/uranium/default.nix
index af13fa8d17a..0bcfa0305e8 100644
--- a/pkgs/development/python-modules/uranium/default.nix
+++ b/pkgs/development/python-modules/uranium/default.nix
@@ -2,7 +2,7 @@
, pyqt5, numpy, scipy, shapely, libarcus, doxygen, gettext, pythonOlder }:
buildPythonPackage rec {
- version = "4.6.1";
+ version = "4.7.1";
pname = "uranium";
format = "other";
@@ -10,7 +10,7 @@ buildPythonPackage rec {
owner = "Ultimaker";
repo = "Uranium";
rev = version;
- sha256 = "07pksjbgxs1ks2i6pgxkwfg9c56pcql7f9p89dnwaf2rcn7yhx6r";
+ sha256 = "1h5d3scy3cnbyhh0pbavflpqklhn2lbp7hl193rc5gx8yzr3mqbh";
};
disabled = pythonOlder "3.5.0";
diff --git a/pkgs/development/tools/bazel-kazel/default.nix b/pkgs/development/tools/bazel-kazel/default.nix
index 4ae2a3e68f9..55f79a993ac 100644
--- a/pkgs/development/tools/bazel-kazel/default.nix
+++ b/pkgs/development/tools/bazel-kazel/default.nix
@@ -2,13 +2,13 @@
buildGoModule rec {
pname = "bazel-kazel";
- version = "0.0.12";
+ version = "0.1.0";
src = fetchFromGitHub {
owner = "kubernetes";
repo = "repo-infra";
rev = "v${version}";
- sha256 = "1mnyp116q54xy7flml4cdcsbczhyyqnpyn2pnqrzy49aahbhpn5z";
+ sha256 = "121asn0h2vfgqnjk72wqjcfq0w15k15abjdm39i8hv455kzrc2hs";
};
vendorSha256 = "1pzkjh4n9ai8yqi98bkdhicjdr2l8j3fckl5n90c2gdcwqyxvgkf";
diff --git a/pkgs/development/tools/buildah/default.nix b/pkgs/development/tools/buildah/default.nix
index ec47fdadd1b..7f1d90291f4 100644
--- a/pkgs/development/tools/buildah/default.nix
+++ b/pkgs/development/tools/buildah/default.nix
@@ -1,6 +1,7 @@
{ stdenv
, buildGoModule
, fetchFromGitHub
+, go-md2man
, installShellFiles
, pkg-config
, gpgme
@@ -13,13 +14,13 @@
buildGoModule rec {
pname = "buildah";
- version = "1.15.2";
+ version = "1.16.0";
src = fetchFromGitHub {
owner = "containers";
repo = "buildah";
- rev = "v${version}";
- sha256 = "13kqcdrdzkbg6h5za6hhkzdx4nbrg5yl97ydj2hfcakl00q4y0dp";
+ rev = "V${version}";
+ sha256 = "0z9fblxm3pk2jqw7h36clmj8k4k39n6ab536lyh0rp6p7hz5a988";
};
outputs = [ "out" "man" ];
@@ -28,7 +29,7 @@ buildGoModule rec {
doCheck = false;
- nativeBuildInputs = [ installShellFiles pkg-config ];
+ nativeBuildInputs = [ go-md2man installShellFiles pkg-config ];
buildInputs = [
btrfs-progs
@@ -41,12 +42,12 @@ buildGoModule rec {
buildPhase = ''
patchShebangs .
- make GIT_COMMIT="unknown"
- make -C docs
+ make bin/buildah GIT_COMMIT="unknown"
+ make -C docs GOMD2MAN="${go-md2man}/bin/go-md2man"
'';
installPhase = ''
- install -Dm755 buildah $out/bin/buildah
+ install -Dm755 bin/buildah $out/bin/buildah
installShellCompletion --bash contrib/completions/bash/buildah
make -C docs install PREFIX="$man"
'';
diff --git a/pkgs/development/tools/misc/scc/default.nix b/pkgs/development/tools/misc/scc/default.nix
index 47596789de7..8a6a1471d0a 100644
--- a/pkgs/development/tools/misc/scc/default.nix
+++ b/pkgs/development/tools/misc/scc/default.nix
@@ -1,20 +1,20 @@
-{ stdenv, buildGoPackage, fetchFromGitHub }:
+{ stdenv, buildGoModule, fetchFromGitHub }:
-buildGoPackage rec {
+buildGoModule rec {
pname = "scc";
- version = "2.12.0";
+ version = "2.13.0";
src = fetchFromGitHub {
owner = "boyter";
repo = "scc";
rev = "v${version}";
- sha256 = "0hbcq5qn97kr9d4q9m2p1mj3ijn8zmwycrs5bgf1kfiwr09wg2yh";
+ sha256 = "16p5g20n5jsbisbgikk9xny94xx6c0dxf19saa686ghh31jr2hh3";
};
- goPackagePath = "github.com/boyter/scc";
+ vendorSha256 = null;
# scc has a scripts/ sub-package that's for testing.
- subPackages = [ "./" ];
+ excludedPackages = [ "scripts" ];
meta = with stdenv.lib; {
homepage = "https://github.com/boyter/scc";
diff --git a/pkgs/development/tools/misc/terraform-ls/default.nix b/pkgs/development/tools/misc/terraform-ls/default.nix
index 714416f9685..4d999f32446 100644
--- a/pkgs/development/tools/misc/terraform-ls/default.nix
+++ b/pkgs/development/tools/misc/terraform-ls/default.nix
@@ -2,13 +2,13 @@
buildGoPackage rec {
pname = "terraform-ls";
- version = "0.6.1";
+ version = "0.7.0";
src = fetchFromGitHub {
owner = "hashicorp";
repo = pname;
rev = "v${version}";
- sha256 = "0yhpxb9dkwi6rlabr0sd5rk15q0bin6yhww171jrzlnfl036l0sl";
+ sha256 = "1afdd1zs242nh1cync5ip1fbah34wc3gbsx3hwwiisc8yziwiq18";
};
goPackagePath = "github.com/hashicorp/terraform-ls";
diff --git a/pkgs/development/tools/ocaml/dune/2.nix b/pkgs/development/tools/ocaml/dune/2.nix
index 30823b43acb..177fa96f5b9 100644
--- a/pkgs/development/tools/ocaml/dune/2.nix
+++ b/pkgs/development/tools/ocaml/dune/2.nix
@@ -10,7 +10,7 @@ stdenv.mkDerivation rec {
src = fetchurl {
url = "https://github.com/ocaml/dune/releases/download/${version}/dune-${version}.tbz";
- sha256 = "0lnfmc06yhbdiv6mmp0aksnnvzz4aw4zabrdg89p5msyzir3qrvn";
+ sha256 = "0pcjf209gynjwipnpplaqyvyivnawqiwhvqnivhkybisicpqyln3";
};
buildInputs = [ ocaml findlib ];
diff --git a/pkgs/development/tools/pgformatter/default.nix b/pkgs/development/tools/pgformatter/default.nix
index c1cb8cea8a6..1cd9f9ea17b 100644
--- a/pkgs/development/tools/pgformatter/default.nix
+++ b/pkgs/development/tools/pgformatter/default.nix
@@ -2,13 +2,13 @@
perlPackages.buildPerlPackage rec {
pname = "pgformatter";
- version = "4.3";
+ version = "4.4";
src = fetchFromGitHub {
owner = "darold";
repo = "pgFormatter";
rev = "v${version}";
- sha256 = "0n8ydj01nmnkd8glzjb0yrsyax1pmdfvaxb5xj4pkb2mf6zm94qy";
+ sha256 = "1sqjw6q005lws7qhkd26jqyb1xqmpcklzw5hk8paxxi8mzyjn0jp";
};
outputs = [ "out" ];
diff --git a/pkgs/development/tools/vultr-cli/default.nix b/pkgs/development/tools/vultr-cli/default.nix
index a6da5f6cdc9..c0b34fe3ca6 100644
--- a/pkgs/development/tools/vultr-cli/default.nix
+++ b/pkgs/development/tools/vultr-cli/default.nix
@@ -2,13 +2,13 @@
buildGoModule rec {
pname = "vultr-cli";
- version = "0.3.2";
+ version = "0.4.0";
src = fetchFromGitHub {
owner = "vultr";
repo = pname;
rev = "v${version}";
- sha256 = "1gqc4w5j9x7vxvxah6hmqd5i1lxyybpml7yfzzcbngwgwm3y5ym0";
+ sha256 = "0gp1v62iqh3hk46cc5sh8a1nw5nf98m969fdhgxdppwr5dhj9isp";
};
vendorSha256 = null;
diff --git a/pkgs/os-specific/linux/eventstat/default.nix b/pkgs/os-specific/linux/eventstat/default.nix
index 6dfaa6ab38b..ca498425721 100644
--- a/pkgs/os-specific/linux/eventstat/default.nix
+++ b/pkgs/os-specific/linux/eventstat/default.nix
@@ -2,10 +2,10 @@
stdenv.mkDerivation rec {
pname = "eventstat";
- version = "0.04.09";
+ version = "0.04.10";
src = fetchzip {
url = "https://kernel.ubuntu.com/~cking/tarballs/eventstat/eventstat-${version}.tar.gz";
- sha256 = "1b3m58mak62ym2amnmk62c2d6fypk30fw6jsmirh1qz7dwix4bl5";
+ sha256 = "0rmg49m56qxji7gwci03pkk4f4hnaq1n2x1348dqkaf5zs5nhi6b";
};
buildInputs = [ ncurses ];
installFlags = [ "DESTDIR=$(out)" ];
diff --git a/pkgs/os-specific/linux/kernel/common-config.nix b/pkgs/os-specific/linux/kernel/common-config.nix
index e80e29aad3d..8bd5d021204 100644
--- a/pkgs/os-specific/linux/kernel/common-config.nix
+++ b/pkgs/os-specific/linux/kernel/common-config.nix
@@ -244,6 +244,8 @@ let
DRM_AMDGPU_SI = whenAtLeast "4.9" yes;
# (stable) amdgpu support for bonaire and newer chipsets
DRM_AMDGPU_CIK = whenAtLeast "4.9" yes;
+ # Allow device firmware updates
+ DRM_DP_AUX_CHARDEV = whenAtLeast "4.6" yes;
} // optionalAttrs (stdenv.hostPlatform.system == "x86_64-linux") {
# Intel GVT-g graphics virtualization supports 64-bit only
DRM_I915_GVT = whenAtLeast "4.16" yes;
diff --git a/pkgs/os-specific/linux/sysvinit/default.nix b/pkgs/os-specific/linux/sysvinit/default.nix
index 0fc5acba4da..5d081f2db82 100644
--- a/pkgs/os-specific/linux/sysvinit/default.nix
+++ b/pkgs/os-specific/linux/sysvinit/default.nix
@@ -1,13 +1,13 @@
{ stdenv, fetchurl, withoutInitTools ? false }:
-let version = "2.96"; in
+let version = "2.97"; in
stdenv.mkDerivation {
name = (if withoutInitTools then "sysvtools" else "sysvinit") + "-" + version;
src = fetchurl {
url = "mirror://savannah/sysvinit/sysvinit-${version}.tar.xz";
- sha256 = "11xmcamvjmrw874zp0vc37hrqc4hz02i0iy8n4xa4dd25avjcbia";
+ sha256 = "042iyayyh3j28vfbypzn822b73r3nfmyn79f9mixigqrfn2rcn9d";
};
prePatch = ''
diff --git a/pkgs/servers/atlassian/jira.nix b/pkgs/servers/atlassian/jira.nix
index 81bb6a0e5d2..ab3746e6e0a 100644
--- a/pkgs/servers/atlassian/jira.nix
+++ b/pkgs/servers/atlassian/jira.nix
@@ -8,11 +8,11 @@
stdenv.mkDerivation rec {
pname = "atlassian-jira";
- version = "8.10.0";
+ version = "8.12.0";
src = fetchurl {
url = "https://product-downloads.atlassian.com/software/jira/downloads/atlassian-jira-software-${version}.tar.gz";
- sha256 = "1l0kxh4cwqyciylbccd4vfmsvq9cr5sfd0v2gbs3lz41av79mlwa";
+ sha256 = "149yqj60b35mbvjz7jyh5a3ayh61kvwrz452s0zyb1q3pirj10xq";
};
buildPhase = ''
diff --git a/pkgs/servers/icingaweb2/default.nix b/pkgs/servers/icingaweb2/default.nix
index a35b5459272..6414d445a00 100644
--- a/pkgs/servers/icingaweb2/default.nix
+++ b/pkgs/servers/icingaweb2/default.nix
@@ -1,12 +1,12 @@
{ stdenv, lib, fetchFromGitHub, makeWrapper, php }: with lib; stdenv.mkDerivation rec {
pname = "icingaweb2";
- version = "2.8.0";
+ version = "2.8.1";
src = fetchFromGitHub {
owner = "Icinga";
repo = "icingaweb2";
rev = "v${version}";
- sha256 = "18q3d15w7d46g4vyq4iph5c1bbxcl8ikcdc8djrfi30wx36ziybs";
+ sha256 = "1hmw681a2qv578npr389szkxpbhcfqzq9c1wzkbjjm3avnvi37mf";
};
nativeBuildInputs = [ makeWrapper ];
diff --git a/pkgs/servers/monitoring/timescale-prometheus/default.nix b/pkgs/servers/monitoring/timescale-prometheus/default.nix
index f5f4a4fd417..6a0383610eb 100644
--- a/pkgs/servers/monitoring/timescale-prometheus/default.nix
+++ b/pkgs/servers/monitoring/timescale-prometheus/default.nix
@@ -5,13 +5,13 @@
buildGoModule rec {
pname = "timescale-prometheus";
- version = "0.1.0-beta.2";
+ version = "0.1.0-beta.4";
src = fetchFromGitHub {
owner = "timescale";
repo = pname;
rev = "${version}";
- sha256 = "1rrr0qb27hh3kcmmxapr1j39dhfxf02vihpjf4b7zpwdf1mpvrbc";
+ sha256 = "1q9zjxxjxa5kkhlsh69bvgns3kzf23z84jjzg294qb7y7xypym5q";
};
vendorSha256 = "sha256:0y5rq2y48kf2z1z3a8ags6rqzfvjs54klk2679fk8x0yjamj5x04";
diff --git a/pkgs/servers/zigbee2mqtt/default.nix b/pkgs/servers/zigbee2mqtt/default.nix
index 7680bfe2e41..235f0209674 100644
--- a/pkgs/servers/zigbee2mqtt/default.nix
+++ b/pkgs/servers/zigbee2mqtt/default.nix
@@ -3,7 +3,7 @@ let
package = (import ./node.nix { inherit pkgs system; }).package;
in
package.override rec {
- version = "1.14.3";
+ version = "1.14.4";
reconstructLock = true;
postInstall = ''
@@ -20,7 +20,7 @@ package.override rec {
owner = "Koenkk";
repo = "zigbee2mqtt";
rev = version;
- sha256 = "164ddb8i4r6rjahjic09sd24xbms4d6b6bnwx0d9fh8sn3ib4v06";
+ sha256 = "1gyl4f7wh7796w4789pi0ix5y30677784miwylr8wrfqgb1hmddq";
};
passthru.tests.zigbee2mqtt = nixosTests.zigbee2mqtt;
diff --git a/pkgs/servers/zigbee2mqtt/node-packages.nix b/pkgs/servers/zigbee2mqtt/node-packages.nix
index 62cc54c8636..1605e25da65 100644
--- a/pkgs/servers/zigbee2mqtt/node-packages.nix
+++ b/pkgs/servers/zigbee2mqtt/node-packages.nix
@@ -31,22 +31,22 @@ let
sha512 = "TPSvJfv73ng0pfnEOh17bYMPQbI95+nGWc71Ss4vZdRBHTDqmM9Z8ZV4rYz8Ks7sfzc95n30k6ODIq5UGnXcYQ==";
};
};
- "@babel/core-7.11.1" = {
+ "@babel/core-7.11.4" = {
name = "_at_babel_slash_core";
packageName = "@babel/core";
- version = "7.11.1";
+ version = "7.11.4";
src = fetchurl {
- url = "https://registry.npmjs.org/@babel/core/-/core-7.11.1.tgz";
- sha512 = "XqF7F6FWQdKGGWAzGELL+aCO1p+lRY5Tj5/tbT3St1G8NaH70jhhDIKknIZaDans0OQBG5wRAldROLHSt44BgQ==";
+ url = "https://registry.npmjs.org/@babel/core/-/core-7.11.4.tgz";
+ sha512 = "5deljj5HlqRXN+5oJTY7Zs37iH3z3b++KjiKtIsJy1NrjOOVSEaJHEetLBhyu0aQOSNNZ/0IuEAan9GzRuDXHg==";
};
};
- "@babel/generator-7.11.0" = {
+ "@babel/generator-7.11.4" = {
name = "_at_babel_slash_generator";
packageName = "@babel/generator";
- version = "7.11.0";
+ version = "7.11.4";
src = fetchurl {
- url = "https://registry.npmjs.org/@babel/generator/-/generator-7.11.0.tgz";
- sha512 = "fEm3Uzw7Mc9Xi//qU20cBKatTfs2aOtKqmvy/Vm7RkJEGFQ4xc9myCfbXxqK//ZS8MR/ciOHw6meGASJuKmDfQ==";
+ url = "https://registry.npmjs.org/@babel/generator/-/generator-7.11.4.tgz";
+ sha512 = "Rn26vueFx0eOoz7iifCN2UHT6rGtnkSGWSoDRIy8jZN3B91PzeSULbswfLoOWuTuAcNwpG/mxy+uCTDnZ9Mp1g==";
};
};
"@babel/helper-annotate-as-pure-7.10.4" = {
@@ -103,13 +103,13 @@ let
sha512 = "fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==";
};
};
- "@babel/helper-explode-assignable-expression-7.10.4" = {
+ "@babel/helper-explode-assignable-expression-7.11.4" = {
name = "_at_babel_slash_helper-explode-assignable-expression";
packageName = "@babel/helper-explode-assignable-expression";
- version = "7.10.4";
+ version = "7.11.4";
src = fetchurl {
- url = "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.10.4.tgz";
- sha512 = "4K71RyRQNPRrR85sr5QY4X3VwG4wtVoXZB9+L3r1Gp38DhELyHCtovqydRi7c1Ovb17eRGiQ/FD5s8JdU0Uy5A==";
+ url = "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.11.4.tgz";
+ sha512 = "ux9hm3zR4WV1Y3xXxXkdG/0gxF9nvI0YVmKVhvK9AfMoaQkemL3sJpXw+Xbz65azo8qJiEz2XVDUpK3KYhH3ZQ==";
};
};
"@babel/helper-function-name-7.10.4" = {
@@ -193,13 +193,13 @@ let
sha512 = "68kdUAzDrljqBrio7DYAEgCoJHxppJOERHOgOrDN7WjOzP0ZQ1LsSDRXcemzVZaLvjaJsJEESb6qt+znNuENDg==";
};
};
- "@babel/helper-remap-async-to-generator-7.10.4" = {
+ "@babel/helper-remap-async-to-generator-7.11.4" = {
name = "_at_babel_slash_helper-remap-async-to-generator";
packageName = "@babel/helper-remap-async-to-generator";
- version = "7.10.4";
+ version = "7.11.4";
src = fetchurl {
- url = "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.10.4.tgz";
- sha512 = "86Lsr6NNw3qTNl+TBcF1oRZMaVzJtbWTyTko+CQL/tvNvcGYEFKbLXDPxtW0HKk3McNOk4KzY55itGWCAGK5tg==";
+ url = "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.11.4.tgz";
+ sha512 = "tR5vJ/vBa9wFy3m5LLv2faapJLnDFxNWff2SAYkSE4rLUdbp7CdObYFgI7wK4T/Mj4UzpjPwzR8Pzmr5m7MHGA==";
};
};
"@babel/helper-replace-supers-7.10.4" = {
@@ -274,13 +274,13 @@ let
sha512 = "i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==";
};
};
- "@babel/parser-7.11.3" = {
+ "@babel/parser-7.11.4" = {
name = "_at_babel_slash_parser";
packageName = "@babel/parser";
- version = "7.11.3";
+ version = "7.11.4";
src = fetchurl {
- url = "https://registry.npmjs.org/@babel/parser/-/parser-7.11.3.tgz";
- sha512 = "REo8xv7+sDxkKvoxEywIdsNFiZLybwdI7hcT5uEPyQrSMB4YQ973BfC9OOrD/81MaIjh6UxdulIQXkjmiH3PcA==";
+ url = "https://registry.npmjs.org/@babel/parser/-/parser-7.11.4.tgz";
+ sha512 = "MggwidiH+E9j5Sh8pbrX5sJvMcsqS5o+7iB42M9/k0CD63MjYbdP4nhSh7uB5wnv2/RVzTZFTxzF/kIa5mrCqA==";
};
};
"@babel/plugin-proposal-async-generator-functions-7.10.5" = {
@@ -841,13 +841,13 @@ let
sha512 = "2u1/k7rG/gTh02dylX2kL3S0IJNF+J6bfDSp4DI2Ma8QN6Y9x9pmAax59fsCk6QUQG0yqH47yJWA+u1I1LccAg==";
};
};
- "@babel/preset-modules-0.1.3" = {
+ "@babel/preset-modules-0.1.4" = {
name = "_at_babel_slash_preset-modules";
packageName = "@babel/preset-modules";
- version = "0.1.3";
+ version = "0.1.4";
src = fetchurl {
- url = "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.3.tgz";
- sha512 = "Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg==";
+ url = "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz";
+ sha512 = "J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==";
};
};
"@babel/preset-typescript-7.10.4" = {
@@ -940,94 +940,94 @@ let
sha512 = "tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw==";
};
};
- "@jest/console-26.2.0" = {
+ "@jest/console-26.3.0" = {
name = "_at_jest_slash_console";
packageName = "@jest/console";
- version = "26.2.0";
+ version = "26.3.0";
src = fetchurl {
- url = "https://registry.npmjs.org/@jest/console/-/console-26.2.0.tgz";
- sha512 = "mXQfx3nSLwiHm1i7jbu+uvi+vvpVjNGzIQYLCfsat9rapC+MJkS4zBseNrgJE0vU921b3P67bQzhduphjY3Tig==";
+ url = "https://registry.npmjs.org/@jest/console/-/console-26.3.0.tgz";
+ sha512 = "/5Pn6sJev0nPUcAdpJHMVIsA8sKizL2ZkcKPE5+dJrCccks7tcM7c9wbgHudBJbxXLoTbqsHkG1Dofoem4F09w==";
};
};
- "@jest/core-26.2.2" = {
+ "@jest/core-26.4.2" = {
name = "_at_jest_slash_core";
packageName = "@jest/core";
- version = "26.2.2";
+ version = "26.4.2";
src = fetchurl {
- url = "https://registry.npmjs.org/@jest/core/-/core-26.2.2.tgz";
- sha512 = "UwA8gNI8aeV4FHGfGAUfO/DHjrFVvlBravF1Tm9Kt6qFE+6YHR47kFhgdepOFpADEKstyO+MVdPvkV6/dyt9sA==";
+ url = "https://registry.npmjs.org/@jest/core/-/core-26.4.2.tgz";
+ sha512 = "sDva7YkeNprxJfepOctzS8cAk9TOekldh+5FhVuXS40+94SHbiicRO1VV2tSoRtgIo+POs/Cdyf8p76vPTd6dg==";
};
};
- "@jest/environment-26.2.0" = {
+ "@jest/environment-26.3.0" = {
name = "_at_jest_slash_environment";
packageName = "@jest/environment";
- version = "26.2.0";
+ version = "26.3.0";
src = fetchurl {
- url = "https://registry.npmjs.org/@jest/environment/-/environment-26.2.0.tgz";
- sha512 = "oCgp9NmEiJ5rbq9VI/v/yYLDpladAAVvFxZgNsnJxOETuzPZ0ZcKKHYjKYwCtPOP1WCrM5nmyuOhMStXFGHn+g==";
+ url = "https://registry.npmjs.org/@jest/environment/-/environment-26.3.0.tgz";
+ sha512 = "EW+MFEo0DGHahf83RAaiqQx688qpXgl99wdb8Fy67ybyzHwR1a58LHcO376xQJHfmoXTu89M09dH3J509cx2AA==";
};
};
- "@jest/fake-timers-26.2.0" = {
+ "@jest/fake-timers-26.3.0" = {
name = "_at_jest_slash_fake-timers";
packageName = "@jest/fake-timers";
- version = "26.2.0";
+ version = "26.3.0";
src = fetchurl {
- url = "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-26.2.0.tgz";
- sha512 = "45Gfe7YzYTKqTayBrEdAF0qYyAsNRBzfkV0IyVUm3cx7AsCWlnjilBM4T40w7IXT5VspOgMPikQlV0M6gHwy/g==";
+ url = "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-26.3.0.tgz";
+ sha512 = "ZL9ytUiRwVP8ujfRepffokBvD2KbxbqMhrXSBhSdAhISCw3gOkuntisiSFv+A6HN0n0fF4cxzICEKZENLmW+1A==";
};
};
- "@jest/globals-26.2.0" = {
+ "@jest/globals-26.4.2" = {
name = "_at_jest_slash_globals";
packageName = "@jest/globals";
- version = "26.2.0";
+ version = "26.4.2";
src = fetchurl {
- url = "https://registry.npmjs.org/@jest/globals/-/globals-26.2.0.tgz";
- sha512 = "Hoc6ScEIPaym7RNytIL2ILSUWIGKlwEv+JNFof9dGYOdvPjb2evEURSslvCMkNuNg1ECEClTE8PH7ULlMJntYA==";
+ url = "https://registry.npmjs.org/@jest/globals/-/globals-26.4.2.tgz";
+ sha512 = "Ot5ouAlehhHLRhc+sDz2/9bmNv9p5ZWZ9LE1pXGGTCXBasmi5jnYjlgYcYt03FBwLmZXCZ7GrL29c33/XRQiow==";
};
};
- "@jest/reporters-26.2.2" = {
+ "@jest/reporters-26.4.1" = {
name = "_at_jest_slash_reporters";
packageName = "@jest/reporters";
- version = "26.2.2";
+ version = "26.4.1";
src = fetchurl {
- url = "https://registry.npmjs.org/@jest/reporters/-/reporters-26.2.2.tgz";
- sha512 = "7854GPbdFTAorWVh+RNHyPO9waRIN6TcvCezKVxI1khvFq9YjINTW7J3WU+tbR038Ynn6WjYred6vtT0YmIWVQ==";
+ url = "https://registry.npmjs.org/@jest/reporters/-/reporters-26.4.1.tgz";
+ sha512 = "aROTkCLU8++yiRGVxLsuDmZsQEKO6LprlrxtAuzvtpbIFl3eIjgIf3EUxDKgomkS25R9ZzwGEdB5weCcBZlrpQ==";
};
};
- "@jest/source-map-26.1.0" = {
+ "@jest/source-map-26.3.0" = {
name = "_at_jest_slash_source-map";
packageName = "@jest/source-map";
- version = "26.1.0";
+ version = "26.3.0";
src = fetchurl {
- url = "https://registry.npmjs.org/@jest/source-map/-/source-map-26.1.0.tgz";
- sha512 = "XYRPYx4eEVX15cMT9mstnO7hkHP3krNtKfxUYd8L7gbtia8JvZZ6bMzSwa6IQJENbudTwKMw5R1BePRD+bkEmA==";
+ url = "https://registry.npmjs.org/@jest/source-map/-/source-map-26.3.0.tgz";
+ sha512 = "hWX5IHmMDWe1kyrKl7IhFwqOuAreIwHhbe44+XH2ZRHjrKIh0LO5eLQ/vxHFeAfRwJapmxuqlGAEYLadDq6ZGQ==";
};
};
- "@jest/test-result-26.2.0" = {
+ "@jest/test-result-26.3.0" = {
name = "_at_jest_slash_test-result";
packageName = "@jest/test-result";
- version = "26.2.0";
+ version = "26.3.0";
src = fetchurl {
- url = "https://registry.npmjs.org/@jest/test-result/-/test-result-26.2.0.tgz";
- sha512 = "kgPlmcVafpmfyQEu36HClK+CWI6wIaAWDHNxfQtGuKsgoa2uQAYdlxjMDBEa3CvI40+2U3v36gQF6oZBkoKatw==";
+ url = "https://registry.npmjs.org/@jest/test-result/-/test-result-26.3.0.tgz";
+ sha512 = "a8rbLqzW/q7HWheFVMtghXV79Xk+GWwOK1FrtimpI5n1la2SY0qHri3/b0/1F0Ve0/yJmV8pEhxDfVwiUBGtgg==";
};
};
- "@jest/test-sequencer-26.2.2" = {
+ "@jest/test-sequencer-26.4.2" = {
name = "_at_jest_slash_test-sequencer";
packageName = "@jest/test-sequencer";
- version = "26.2.2";
+ version = "26.4.2";
src = fetchurl {
- url = "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-26.2.2.tgz";
- sha512 = "SliZWon5LNqV/lVXkeowSU6L8++FGOu3f43T01L1Gv6wnFDP00ER0utV9jyK9dVNdXqfMNCN66sfcyar/o7BNw==";
+ url = "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-26.4.2.tgz";
+ sha512 = "83DRD8N3M0tOhz9h0bn6Kl6dSp+US6DazuVF8J9m21WAp5x7CqSMaNycMP0aemC/SH/pDQQddbsfHRTBXVUgog==";
};
};
- "@jest/transform-26.2.2" = {
+ "@jest/transform-26.3.0" = {
name = "_at_jest_slash_transform";
packageName = "@jest/transform";
- version = "26.2.2";
+ version = "26.3.0";
src = fetchurl {
- url = "https://registry.npmjs.org/@jest/transform/-/transform-26.2.2.tgz";
- sha512 = "c1snhvi5wRVre1XyoO3Eef5SEWpuBCH/cEbntBUd9tI5sNYiBDmO0My/lc5IuuGYKp/HFIHV1eZpSx5yjdkhKw==";
+ url = "https://registry.npmjs.org/@jest/transform/-/transform-26.3.0.tgz";
+ sha512 = "Isj6NB68QorGoFWvcOjlUhpkT56PqNIsXKR7XfvoDlCANn/IANlh8DrKAA2l2JKC3yWSMH5wS0GwuQM20w3b2A==";
};
};
"@jest/types-25.5.0" = {
@@ -1039,13 +1039,13 @@ let
sha512 = "OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw==";
};
};
- "@jest/types-26.2.0" = {
+ "@jest/types-26.3.0" = {
name = "_at_jest_slash_types";
packageName = "@jest/types";
- version = "26.2.0";
+ version = "26.3.0";
src = fetchurl {
- url = "https://registry.npmjs.org/@jest/types/-/types-26.2.0.tgz";
- sha512 = "lvm3rJvctxd7+wxKSxxbzpDbr4FXDLaC57WEKdUIZ2cjTYuxYSc0zlyD7Z4Uqr5VdKxRUrtwIkiqBuvgf8uKJA==";
+ url = "https://registry.npmjs.org/@jest/types/-/types-26.3.0.tgz";
+ sha512 = "BDPG23U0qDeAvU4f99haztXwdAg3hz4El95LkAM+tHAqqhiVzRpEGHHU8EDxT/AnxOrA65YjLBwDahdJ9pTLJQ==";
};
};
"@serialport/binding-abstract-9.0.1" = {
@@ -1255,13 +1255,22 @@ let
sha512 = "P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==";
};
};
- "@types/jest-26.0.9" = {
+ "@types/istanbul-reports-3.0.0" = {
+ name = "_at_types_slash_istanbul-reports";
+ packageName = "@types/istanbul-reports";
+ version = "3.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz";
+ sha512 = "nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==";
+ };
+ };
+ "@types/jest-26.0.10" = {
name = "_at_types_slash_jest";
packageName = "@types/jest";
- version = "26.0.9";
+ version = "26.0.10";
src = fetchurl {
- url = "https://registry.npmjs.org/@types/jest/-/jest-26.0.9.tgz";
- sha512 = "k4qFfJ5AUKrWok5KYXp2EPm89b0P/KZpl7Vg4XuOTVVQEhLDBDBU3iBFrjjdgd8fLw96aAtmnwhXHl63bWeBQQ==";
+ url = "https://registry.npmjs.org/@types/jest/-/jest-26.0.10.tgz";
+ sha512 = "i2m0oyh8w/Lum7wWK/YOZJakYF8Mx08UaKA1CtbmFeDquVhAEdA7znacsVSf2hJ1OQ/OfVMGN90pw/AtzF8s/Q==";
};
};
"@types/json-schema-7.0.5" = {
@@ -1282,13 +1291,13 @@ let
sha512 = "M0ISm1qsNvkdXNZml1r/1bEVqt5SJHF/LFcCtH5dHfsSIG0LEj5FhwK0f4fZy9WPCsXjmrKfpzgEW/bdQuKqmQ==";
};
};
- "@types/node-14.0.27" = {
+ "@types/node-14.6.2" = {
name = "_at_types_slash_node";
packageName = "@types/node";
- version = "14.0.27";
+ version = "14.6.2";
src = fetchurl {
- url = "https://registry.npmjs.org/@types/node/-/node-14.0.27.tgz";
- sha512 = "kVrqXhbclHNHGu9ztnAwSncIgJv/FaxmzXJvGXNdcCpV1b8u1/Mi6z6m0vwy0LzKeXFTPLH0NzwmoJ3fNCIq0g==";
+ url = "https://registry.npmjs.org/@types/node/-/node-14.6.2.tgz";
+ sha512 = "onlIwbaeqvZyniGPfdw/TEhKIh79pz66L1q06WUQqJLnAb6wbjvOtepLYTGHTqzdXgBYIE3ZdmqHDGsRsbBz7A==";
};
};
"@types/normalize-package-data-2.4.0" = {
@@ -1300,13 +1309,13 @@ let
sha512 = "f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==";
};
};
- "@types/prettier-2.0.2" = {
+ "@types/prettier-2.1.0" = {
name = "_at_types_slash_prettier";
packageName = "@types/prettier";
- version = "2.0.2";
+ version = "2.1.0";
src = fetchurl {
- url = "https://registry.npmjs.org/@types/prettier/-/prettier-2.0.2.tgz";
- sha512 = "IkVfat549ggtkZUthUzEX49562eGikhSYeVGX97SkMFn+sTZrgRewXjQ4tPKFPCykZHkX1Zfd9OoELGqKU2jJA==";
+ url = "https://registry.npmjs.org/@types/prettier/-/prettier-2.1.0.tgz";
+ sha512 = "hiYA88aHiEIgDmeKlsyVsuQdcFn3Z2VuFd/Xm/HCnGnPD8UFU5BM128uzzRVVGEzKDKYUrRsRH9S2o+NUy/3IA==";
};
};
"@types/serialport-8.0.1" = {
@@ -1345,13 +1354,13 @@ let
sha512 = "FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw==";
};
};
- "@typescript-eslint/eslint-plugin-3.8.0" = {
+ "@typescript-eslint/eslint-plugin-3.10.1" = {
name = "_at_typescript-eslint_slash_eslint-plugin";
packageName = "@typescript-eslint/eslint-plugin";
- version = "3.8.0";
+ version = "3.10.1";
src = fetchurl {
- url = "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-3.8.0.tgz";
- sha512 = "lFb4VCDleFSR+eo4Ew+HvrJ37ZH1Y9ZyE+qyP7EiwBpcCVxwmUc5PAqhShCQ8N8U5vqYydm74nss+a0wrrCErw==";
+ url = "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-3.10.1.tgz";
+ sha512 = "PQg0emRtzZFWq6PxBcdxRH3QIQiyFO3WCVpRL3fgj5oQS3CDs3AeAKfv4DxNhzn8ITdNJGJ4D3Qw8eAJf3lXeQ==";
};
};
"@typescript-eslint/experimental-utils-2.34.0" = {
@@ -1363,31 +1372,31 @@ let
sha512 = "eS6FTkq+wuMJ+sgtuNTtcqavWXqsflWcfBnlYhg/nS4aZ1leewkXGbvBhaapn1q6qf4M71bsR1tez5JTRMuqwA==";
};
};
- "@typescript-eslint/experimental-utils-3.8.0" = {
+ "@typescript-eslint/experimental-utils-3.10.1" = {
name = "_at_typescript-eslint_slash_experimental-utils";
packageName = "@typescript-eslint/experimental-utils";
- version = "3.8.0";
+ version = "3.10.1";
src = fetchurl {
- url = "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-3.8.0.tgz";
- sha512 = "o8T1blo1lAJE0QDsW7nSyvZHbiDzQDjINJKyB44Z3sSL39qBy5L10ScI/XwDtaiunoyKGLiY9bzRk4YjsUZl8w==";
+ url = "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-3.10.1.tgz";
+ sha512 = "DewqIgscDzmAfd5nOGe4zm6Bl7PKtMG2Ad0KG8CUZAHlXfAKTF9Ol5PXhiMh39yRL2ChRH1cuuUGOcVyyrhQIw==";
};
};
- "@typescript-eslint/parser-3.8.0" = {
+ "@typescript-eslint/parser-3.10.1" = {
name = "_at_typescript-eslint_slash_parser";
packageName = "@typescript-eslint/parser";
- version = "3.8.0";
+ version = "3.10.1";
src = fetchurl {
- url = "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-3.8.0.tgz";
- sha512 = "u5vjOBaCsnMVQOvkKCXAmmOhyyMmFFf5dbkM3TIbg3MZ2pyv5peE4gj81UAbTHwTOXEwf7eCQTUMKrDl/+qGnA==";
+ url = "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-3.10.1.tgz";
+ sha512 = "Ug1RcWcrJP02hmtaXVS3axPPTTPnZjupqhgj+NnZ6BCkwSImWk/283347+x9wN+lqOdK9Eo3vsyiyDHgsmiEJw==";
};
};
- "@typescript-eslint/types-3.8.0" = {
+ "@typescript-eslint/types-3.10.1" = {
name = "_at_typescript-eslint_slash_types";
packageName = "@typescript-eslint/types";
- version = "3.8.0";
+ version = "3.10.1";
src = fetchurl {
- url = "https://registry.npmjs.org/@typescript-eslint/types/-/types-3.8.0.tgz";
- sha512 = "8kROmEQkv6ss9kdQ44vCN1dTrgu4Qxrd2kXr10kz2NP5T8/7JnEfYNxCpPkArbLIhhkGLZV3aVMplH1RXQRF7Q==";
+ url = "https://registry.npmjs.org/@typescript-eslint/types/-/types-3.10.1.tgz";
+ sha512 = "+3+FCUJIahE9q0lDi1WleYzjCwJs5hIsbugIgnbB+dSCYUxl8L6PwmsyOPFZde2hc1DlTo/xnkOgiTLSyAbHiQ==";
};
};
"@typescript-eslint/typescript-estree-2.34.0" = {
@@ -1399,22 +1408,22 @@ let
sha512 = "OMAr+nJWKdlVM9LOqCqh3pQQPwxHAN7Du8DR6dmwCrAmxtiXQnhHJ6tBNtf+cggqfo51SG/FCwnKhXCIM7hnVg==";
};
};
- "@typescript-eslint/typescript-estree-3.8.0" = {
+ "@typescript-eslint/typescript-estree-3.10.1" = {
name = "_at_typescript-eslint_slash_typescript-estree";
packageName = "@typescript-eslint/typescript-estree";
- version = "3.8.0";
+ version = "3.10.1";
src = fetchurl {
- url = "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-3.8.0.tgz";
- sha512 = "MTv9nPDhlKfclwnplRNDL44mP2SY96YmPGxmMbMy6x12I+pERcxpIUht7DXZaj4mOKKtet53wYYXU0ABaiXrLw==";
+ url = "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-3.10.1.tgz";
+ sha512 = "QbcXOuq6WYvnB3XPsZpIwztBoquEYLXh2MtwVU+kO8jgYCiv4G5xrSP/1wg4tkvrEE+esZVquIPX/dxPlePk1w==";
};
};
- "@typescript-eslint/visitor-keys-3.8.0" = {
+ "@typescript-eslint/visitor-keys-3.10.1" = {
name = "_at_typescript-eslint_slash_visitor-keys";
packageName = "@typescript-eslint/visitor-keys";
- version = "3.8.0";
+ version = "3.10.1";
src = fetchurl {
- url = "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-3.8.0.tgz";
- sha512 = "gfqQWyVPpT9NpLREXNR820AYwgz+Kr1GuF3nf1wxpHD6hdxI62tq03ToomFnDxY0m3pUB39IF7sil7D5TQexLA==";
+ url = "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-3.10.1.tgz";
+ sha512 = "9JgC82AaQeglebjZMgYR5wgmfUdUc+EitGUUMW8u2nDckaeimzW+VsoLV6FoimPv2id3VQzfjwBxEMVz08ameQ==";
};
};
"abab-2.0.4" = {
@@ -1471,13 +1480,13 @@ let
sha512 = "01q25QQDwLSsyfhrKbn8yuur+JNw0H+0Y4JiGIKd3z9aYk/w/2kxD/Upc+t2ZBBSUNff50VjPsSW2YxM8QYKVg==";
};
};
- "ajv-6.12.3" = {
+ "ajv-6.12.4" = {
name = "ajv";
packageName = "ajv";
- version = "6.12.3";
+ version = "6.12.4";
src = fetchurl {
- url = "https://registry.npmjs.org/ajv/-/ajv-6.12.3.tgz";
- sha512 = "4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==";
+ url = "https://registry.npmjs.org/ajv/-/ajv-6.12.4.tgz";
+ sha512 = "eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ==";
};
};
"ansi-colors-4.1.1" = {
@@ -1678,15 +1687,6 @@ let
sha512 = "z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==";
};
};
- "async-limiter-1.0.1" = {
- name = "async-limiter";
- packageName = "async-limiter";
- version = "1.0.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz";
- sha512 = "csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==";
- };
- };
"asynckit-0.4.0" = {
name = "asynckit";
packageName = "asynckit";
@@ -1723,31 +1723,31 @@ let
sha1 = "b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8";
};
};
- "aws4-1.10.0" = {
+ "aws4-1.10.1" = {
name = "aws4";
packageName = "aws4";
- version = "1.10.0";
+ version = "1.10.1";
src = fetchurl {
- url = "https://registry.npmjs.org/aws4/-/aws4-1.10.0.tgz";
- sha512 = "3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA==";
+ url = "https://registry.npmjs.org/aws4/-/aws4-1.10.1.tgz";
+ sha512 = "zg7Hz2k5lI8kb7U32998pRRFin7zJlkfezGJjUc2heaD4Pw2wObakCDVzkKztTm/Ln7eiVvYsjqak0Ed4LkMDA==";
};
};
- "axios-0.19.2" = {
+ "axios-0.20.0" = {
name = "axios";
packageName = "axios";
- version = "0.19.2";
+ version = "0.20.0";
src = fetchurl {
- url = "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz";
- sha512 = "fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==";
+ url = "https://registry.npmjs.org/axios/-/axios-0.20.0.tgz";
+ sha512 = "ANA4rr2BDcmmAQLOKft2fufrtuvlqR+cXNNinUmvfeSNCOF98PZL+7M/v1zIdGo7OLjEA9J2gXJL+j4zGsl0bA==";
};
};
- "babel-jest-26.2.2" = {
+ "babel-jest-26.3.0" = {
name = "babel-jest";
packageName = "babel-jest";
- version = "26.2.2";
+ version = "26.3.0";
src = fetchurl {
- url = "https://registry.npmjs.org/babel-jest/-/babel-jest-26.2.2.tgz";
- sha512 = "JmLuePHgA+DSOdOL8lPxCgD2LhPPm+rdw1vnxR73PpIrnmKCS2/aBhtkAcxQWuUcW2hBrH8MJ3LKXE7aWpNZyA==";
+ url = "https://registry.npmjs.org/babel-jest/-/babel-jest-26.3.0.tgz";
+ sha512 = "sxPnQGEyHAOPF8NcUsD0g7hDCnvLL2XyblRBcgrzTWBB/mAIpWow3n1bEL+VghnnZfreLhFSBsFluRoK2tRK4g==";
};
};
"babel-plugin-dynamic-import-node-2.3.3" = {
@@ -1786,13 +1786,13 @@ let
sha512 = "uyexu1sVwcdFnyq9o8UQYsXwXflIh8LvrF5+cKrYam93ned1CStffB3+BEcsxGSgagoA3GEyjDqO4a/58hyPYQ==";
};
};
- "babel-preset-jest-26.2.0" = {
+ "babel-preset-jest-26.3.0" = {
name = "babel-preset-jest";
packageName = "babel-preset-jest";
- version = "26.2.0";
+ version = "26.3.0";
src = fetchurl {
- url = "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-26.2.0.tgz";
- sha512 = "R1k8kdP3R9phYQugXeNnK/nvCGlBzG4m3EoIIukC80GXb6wCv2XiwPhK6K9MAkQcMszWBYvl2Wm+yigyXFQqXg==";
+ url = "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-26.3.0.tgz";
+ sha512 = "5WPdf7nyYi2/eRxCbVrE1kKCWxgWY4RsPEbdJWFm7QsesFGqjdkyLeu1zRkwM1cxK6EPIlNd6d2AxLk7J+t4pw==";
};
};
"balanced-match-1.0.0" = {
@@ -1849,22 +1849,13 @@ let
sha512 = "p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==";
};
};
- "bl-1.2.2" = {
+ "bl-4.0.3" = {
name = "bl";
packageName = "bl";
- version = "1.2.2";
+ version = "4.0.3";
src = fetchurl {
- url = "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz";
- sha512 = "e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==";
- };
- };
- "bl-4.0.2" = {
- name = "bl";
- packageName = "bl";
- version = "4.0.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/bl/-/bl-4.0.2.tgz";
- sha512 = "j4OH8f6Qg2bGuWfRiltT2HYGx0e1QcBTrK9KAHNMwMZdQnDZFk0ZSYIpADjYCB3U12nicC5tVJwSIhwOWjb4RQ==";
+ url = "https://registry.npmjs.org/bl/-/bl-4.0.3.tgz";
+ sha512 = "fs4G6/Hu4/EE+F75J8DuN/0IpQqNjAdC7aEQv7Qt8MHGUH7Ckv2MwTEEeN9QehD0pfIDkMI1bkHYkKy7xHyKIg==";
};
};
"brace-expansion-1.1.11" = {
@@ -1984,13 +1975,13 @@ let
sha512 = "8KMDF1Vz2gzOq54ONPJS65IvTUaB1cHJ2DMM7MbPmLZljDH1qpzzLsWdiN9pHh6qvkRVDTi/07+eNGch/oLU4w==";
};
};
- "caniuse-lite-1.0.30001112" = {
+ "caniuse-lite-1.0.30001119" = {
name = "caniuse-lite";
packageName = "caniuse-lite";
- version = "1.0.30001112";
+ version = "1.0.30001119";
src = fetchurl {
- url = "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001112.tgz";
- sha512 = "J05RTQlqsatidif/38aN3PGULCLrg8OYQOlJUKbeYVzC2mGZkZLIztwRlB3MtrfLmawUmjFlNJvy/uhwniIe1Q==";
+ url = "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001119.tgz";
+ sha512 = "Hpwa4obv7EGP+TjkCh/wVvbtNJewxmtg4yVJBLFnxo35vbPapBr138bUWENkb5j5L9JZJ9RXLn4OrXRG/cecPQ==";
};
};
"capture-exit-2.0.0" = {
@@ -2389,15 +2380,6 @@ let
sha512 = "bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==";
};
};
- "debug-3.1.0" = {
- name = "debug";
- packageName = "debug";
- version = "3.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz";
- sha512 = "OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==";
- };
- };
"debug-4.1.1" = {
name = "debug";
packageName = "debug";
@@ -2551,13 +2533,13 @@ let
sha512 = "Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg==";
};
};
- "diff-sequences-26.0.0" = {
+ "diff-sequences-26.3.0" = {
name = "diff-sequences";
packageName = "diff-sequences";
- version = "26.0.0";
+ version = "26.3.0";
src = fetchurl {
- url = "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.0.0.tgz";
- sha512 = "JC/eHYEC3aSS0vZGjuoc4vHA0yAQTzhQQldXMeMF+JlxLGJlCO38Gma82NV9gk1jGFz8mDzUMeaKXvjRRdJ2dg==";
+ url = "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.3.0.tgz";
+ sha512 = "5j5vdRcw3CNctePNYN0Wy2e/JbWT6cAYnXv5OuqPhDpyCGc0uLu2TK0zOCJWNB9kOIfYMSpIulRaDgIi4HJ6Ig==";
};
};
"doctrine-3.0.0" = {
@@ -2596,13 +2578,13 @@ let
sha1 = "3a83a904e54353287874c564b7549386849a98c9";
};
};
- "electron-to-chromium-1.3.526" = {
+ "electron-to-chromium-1.3.555" = {
name = "electron-to-chromium";
packageName = "electron-to-chromium";
- version = "1.3.526";
+ version = "1.3.555";
src = fetchurl {
- url = "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.526.tgz";
- sha512 = "HiroW5ZbGwgT8kCnoEO8qnGjoTPzJxduvV/Vv/wH63eo2N6Zj3xT5fmmaSPAPUM05iN9/5fIEkIg3owTtV6QZg==";
+ url = "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.555.tgz";
+ sha512 = "/55x3nF2feXFZ5tdGUOr00TxnUjUgdxhrn+eCJ1FAcoAt+cKQTjQkUC5XF4frMWE1R5sjHk+JueuBalimfe5Pg==";
};
};
"emittery-0.7.1" = {
@@ -2758,13 +2740,13 @@ let
sha512 = "qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==";
};
};
- "eslint-7.6.0" = {
+ "eslint-7.7.0" = {
name = "eslint";
packageName = "eslint";
- version = "7.6.0";
+ version = "7.7.0";
src = fetchurl {
- url = "https://registry.npmjs.org/eslint/-/eslint-7.6.0.tgz";
- sha512 = "QlAManNtqr7sozWm5TF4wIH9gmUm2hE3vNRUvyoYAa4y1l5/jxD/PQStEjBMQtCqZmSep8UxrcecI60hOpe61w==";
+ url = "https://registry.npmjs.org/eslint/-/eslint-7.7.0.tgz";
+ sha512 = "1KUxLzos0ZVsyL81PnRN335nDtQ8/vZUD6uMtWbF+5zDtjKcsklIi78XoE0MVL93QvWTu+E5y44VyyCsOMBrIg==";
};
};
"eslint-config-google-0.14.0" = {
@@ -2812,13 +2794,13 @@ let
sha512 = "6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==";
};
};
- "espree-7.2.0" = {
+ "espree-7.3.0" = {
name = "espree";
packageName = "espree";
- version = "7.2.0";
+ version = "7.3.0";
src = fetchurl {
- url = "https://registry.npmjs.org/espree/-/espree-7.2.0.tgz";
- sha512 = "H+cQ3+3JYRMEIOl87e7QdHX70ocly5iW4+dttuR8iYSPr/hXKFb+7dBsZ7+u1adC4VrnPlTkv0+OwuPnDop19g==";
+ url = "https://registry.npmjs.org/espree/-/espree-7.3.0.tgz";
+ sha512 = "dksIWsvKCixn1yrEXO8UosNSxaDoSYpq9reEjZSbHLpT5hpaCAKTLBwq0RHtLrIr+c0ByiYzWT8KTMRzoRCNlw==";
};
};
"esprima-4.0.1" = {
@@ -2938,13 +2920,13 @@ let
sha512 = "XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==";
};
};
- "expect-26.2.0" = {
+ "expect-26.4.2" = {
name = "expect";
packageName = "expect";
- version = "26.2.0";
+ version = "26.4.2";
src = fetchurl {
- url = "https://registry.npmjs.org/expect/-/expect-26.2.0.tgz";
- sha512 = "8AMBQ9UVcoUXt0B7v+5/U5H6yiUR87L6eKCfjE3spx7Ya5lF+ebUo37MCFBML2OiLfkX1sxmQOZhIDonyVTkcw==";
+ url = "https://registry.npmjs.org/expect/-/expect-26.4.2.tgz";
+ sha512 = "IlJ3X52Z0lDHm7gjEp+m76uX46ldH5VpqmU0006vqDju/285twh7zaWMRhs67VpQhBwjjMchk+p5aA0VkERCAA==";
};
};
"ext-1.4.0" = {
@@ -3127,13 +3109,13 @@ let
sha512 = "GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==";
};
};
- "follow-redirects-1.5.10" = {
+ "follow-redirects-1.13.0" = {
name = "follow-redirects";
packageName = "follow-redirects";
- version = "1.5.10";
+ version = "1.13.0";
src = fetchurl {
- url = "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz";
- sha512 = "0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==";
+ url = "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.0.tgz";
+ sha512 = "aq6gF1BEKje4a9i9+5jimNFIpq4Q1WiwBToeRK5NvZBd/TRsmW8BsJfOEGkr76TbOyPVD3OVDN910EcUNtRYEA==";
};
};
"for-in-1.0.2" = {
@@ -3181,15 +3163,6 @@ let
sha512 = "y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==";
};
};
- "fs-extra-8.1.0" = {
- name = "fs-extra";
- packageName = "fs-extra";
- version = "8.1.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz";
- sha512 = "yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==";
- };
- };
"fs-extra-9.0.1" = {
name = "fs-extra";
packageName = "fs-extra";
@@ -3298,13 +3271,13 @@ let
sha512 = "GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==";
};
};
- "get-stream-5.1.0" = {
+ "get-stream-5.2.0" = {
name = "get-stream";
packageName = "get-stream";
- version = "5.1.0";
+ version = "5.2.0";
src = fetchurl {
- url = "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz";
- sha512 = "EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==";
+ url = "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz";
+ sha512 = "nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==";
};
};
"get-value-2.0.6" = {
@@ -4108,40 +4081,40 @@ let
sha512 = "9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==";
};
};
- "jest-26.2.2" = {
+ "jest-26.4.2" = {
name = "jest";
packageName = "jest";
- version = "26.2.2";
+ version = "26.4.2";
src = fetchurl {
- url = "https://registry.npmjs.org/jest/-/jest-26.2.2.tgz";
- sha512 = "EkJNyHiAG1+A8pqSz7cXttoVa34hOEzN/MrnJhYnfp5VHxflVcf2pu3oJSrhiy6LfIutLdWo+n6q63tjcoIeig==";
+ url = "https://registry.npmjs.org/jest/-/jest-26.4.2.tgz";
+ sha512 = "LLCjPrUh98Ik8CzW8LLVnSCfLaiY+wbK53U7VxnFSX7Q+kWC4noVeDvGWIFw0Amfq1lq2VfGm7YHWSLBV62MJw==";
};
};
- "jest-changed-files-26.2.0" = {
+ "jest-changed-files-26.3.0" = {
name = "jest-changed-files";
packageName = "jest-changed-files";
- version = "26.2.0";
+ version = "26.3.0";
src = fetchurl {
- url = "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-26.2.0.tgz";
- sha512 = "+RyJb+F1K/XBLIYiL449vo5D+CvlHv29QveJUWNPXuUicyZcq+tf1wNxmmFeRvAU1+TzhwqczSjxnCCFt7+8iA==";
+ url = "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-26.3.0.tgz";
+ sha512 = "1C4R4nijgPltX6fugKxM4oQ18zimS7LqQ+zTTY8lMCMFPrxqBFb7KJH0Z2fRQJvw2Slbaipsqq7s1mgX5Iot+g==";
};
};
- "jest-cli-26.2.2" = {
+ "jest-cli-26.4.2" = {
name = "jest-cli";
packageName = "jest-cli";
- version = "26.2.2";
+ version = "26.4.2";
src = fetchurl {
- url = "https://registry.npmjs.org/jest-cli/-/jest-cli-26.2.2.tgz";
- sha512 = "vVcly0n/ijZvdy6gPQiQt0YANwX2hLTPQZHtW7Vi3gcFdKTtif7YpI85F8R8JYy5DFSWz4x1OW0arnxlziu5Lw==";
+ url = "https://registry.npmjs.org/jest-cli/-/jest-cli-26.4.2.tgz";
+ sha512 = "zb+lGd/SfrPvoRSC/0LWdaWCnscXc1mGYW//NP4/tmBvRPT3VntZ2jtKUONsRi59zc5JqmsSajA9ewJKFYp8Cw==";
};
};
- "jest-config-26.2.2" = {
+ "jest-config-26.4.2" = {
name = "jest-config";
packageName = "jest-config";
- version = "26.2.2";
+ version = "26.4.2";
src = fetchurl {
- url = "https://registry.npmjs.org/jest-config/-/jest-config-26.2.2.tgz";
- sha512 = "2lhxH0y4YFOijMJ65usuf78m7+9/8+hAb1PZQtdRdgnQpAb4zP6KcVDDktpHEkspBKnc2lmFu+RQdHukUUbiTg==";
+ url = "https://registry.npmjs.org/jest-config/-/jest-config-26.4.2.tgz";
+ sha512 = "QBf7YGLuToiM8PmTnJEdRxyYy3mHWLh24LJZKVdXZ2PNdizSe1B/E8bVm+HYcjbEzGuVXDv/di+EzdO/6Gq80A==";
};
};
"jest-diff-25.5.0" = {
@@ -4153,13 +4126,13 @@ let
sha512 = "z1kygetuPiREYdNIumRpAHY6RXiGmp70YHptjdaxTWGmA085W3iCnXNx0DhflK3vwrKmrRWyY1wUpkPMVxMK7A==";
};
};
- "jest-diff-26.2.0" = {
+ "jest-diff-26.4.2" = {
name = "jest-diff";
packageName = "jest-diff";
- version = "26.2.0";
+ version = "26.4.2";
src = fetchurl {
- url = "https://registry.npmjs.org/jest-diff/-/jest-diff-26.2.0.tgz";
- sha512 = "Wu4Aopi2nzCsHWLBlD48TgRy3Z7OsxlwvHNd1YSnHc7q1NJfrmyCPoUXrTIrydQOG5ApaYpsAsdfnMbJqV1/wQ==";
+ url = "https://registry.npmjs.org/jest-diff/-/jest-diff-26.4.2.tgz";
+ sha512 = "6T1XQY8U28WH0Z5rGpQ+VqZSZz8EN8rZcBtfvXaOkbwxIEeRre6qnuZQlbY1AJ4MKDxQF8EkrCvK+hL/VkyYLQ==";
};
};
"jest-docblock-26.0.0" = {
@@ -4171,31 +4144,31 @@ let
sha512 = "RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w==";
};
};
- "jest-each-26.2.0" = {
+ "jest-each-26.4.2" = {
name = "jest-each";
packageName = "jest-each";
- version = "26.2.0";
+ version = "26.4.2";
src = fetchurl {
- url = "https://registry.npmjs.org/jest-each/-/jest-each-26.2.0.tgz";
- sha512 = "gHPCaho1twWHB5bpcfnozlc6mrMi+VAewVPNgmwf81x2Gzr6XO4dl+eOrwPWxbkYlgjgrYjWK2xgKnixbzH3Ew==";
+ url = "https://registry.npmjs.org/jest-each/-/jest-each-26.4.2.tgz";
+ sha512 = "p15rt8r8cUcRY0Mvo1fpkOGYm7iI8S6ySxgIdfh3oOIv+gHwrHTy5VWCGOecWUhDsit4Nz8avJWdT07WLpbwDA==";
};
};
- "jest-environment-jsdom-26.2.0" = {
+ "jest-environment-jsdom-26.3.0" = {
name = "jest-environment-jsdom";
packageName = "jest-environment-jsdom";
- version = "26.2.0";
+ version = "26.3.0";
src = fetchurl {
- url = "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-26.2.0.tgz";
- sha512 = "sDG24+5M4NuIGzkI3rJW8XUlrpkvIdE9Zz4jhD8OBnVxAw+Y1jUk9X+lAOD48nlfUTlnt3lbAI3k2Ox+WF3S0g==";
+ url = "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-26.3.0.tgz";
+ sha512 = "zra8He2btIMJkAzvLaiZ9QwEPGEetbxqmjEBQwhH3CA+Hhhu0jSiEJxnJMbX28TGUvPLxBt/zyaTLrOPF4yMJA==";
};
};
- "jest-environment-node-26.2.0" = {
+ "jest-environment-node-26.3.0" = {
name = "jest-environment-node";
packageName = "jest-environment-node";
- version = "26.2.0";
+ version = "26.3.0";
src = fetchurl {
- url = "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-26.2.0.tgz";
- sha512 = "4M5ExTYkJ19efBzkiXtBi74JqKLDciEk4CEsp5tTjWGYMrlKFQFtwIVG3tW1OGE0AlXhZjuHPwubuRYY4j4uOw==";
+ url = "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-26.3.0.tgz";
+ sha512 = "c9BvYoo+FGcMj5FunbBgtBnbR5qk3uky8PKyRVpSfe2/8+LrNQMiXX53z6q2kY+j15SkjQCOSL/6LHnCPLVHNw==";
};
};
"jest-get-type-25.2.6" = {
@@ -4207,67 +4180,67 @@ let
sha512 = "DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig==";
};
};
- "jest-get-type-26.0.0" = {
+ "jest-get-type-26.3.0" = {
name = "jest-get-type";
packageName = "jest-get-type";
- version = "26.0.0";
+ version = "26.3.0";
src = fetchurl {
- url = "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.0.0.tgz";
- sha512 = "zRc1OAPnnws1EVfykXOj19zo2EMw5Hi6HLbFCSjpuJiXtOWAYIjNsHVSbpQ8bDX7L5BGYGI8m+HmKdjHYFF0kg==";
+ url = "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz";
+ sha512 = "TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==";
};
};
- "jest-haste-map-26.2.2" = {
+ "jest-haste-map-26.3.0" = {
name = "jest-haste-map";
packageName = "jest-haste-map";
- version = "26.2.2";
+ version = "26.3.0";
src = fetchurl {
- url = "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.2.2.tgz";
- sha512 = "3sJlMSt+NHnzCB+0KhJ1Ut4zKJBiJOlbrqEYNdRQGlXTv8kqzZWjUKQRY3pkjmlf+7rYjAV++MQ4D6g4DhAyOg==";
+ url = "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.3.0.tgz";
+ sha512 = "DHWBpTJgJhLLGwE5Z1ZaqLTYqeODQIZpby0zMBsCU9iRFHYyhklYqP4EiG73j5dkbaAdSZhgB938mL51Q5LeZA==";
};
};
- "jest-jasmine2-26.2.2" = {
+ "jest-jasmine2-26.4.2" = {
name = "jest-jasmine2";
packageName = "jest-jasmine2";
- version = "26.2.2";
+ version = "26.4.2";
src = fetchurl {
- url = "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-26.2.2.tgz";
- sha512 = "Q8AAHpbiZMVMy4Hz9j1j1bg2yUmPa1W9StBvcHqRaKa9PHaDUMwds8LwaDyzP/2fkybcTQE4+pTMDOG9826tEw==";
+ url = "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-26.4.2.tgz";
+ sha512 = "z7H4EpCldHN1J8fNgsja58QftxBSL+JcwZmaXIvV9WKIM+x49F4GLHu/+BQh2kzRKHAgaN/E82od+8rTOBPyPA==";
};
};
- "jest-leak-detector-26.2.0" = {
+ "jest-leak-detector-26.4.2" = {
name = "jest-leak-detector";
packageName = "jest-leak-detector";
- version = "26.2.0";
+ version = "26.4.2";
src = fetchurl {
- url = "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-26.2.0.tgz";
- sha512 = "aQdzTX1YiufkXA1teXZu5xXOJgy7wZQw6OJ0iH5CtQlOETe6gTSocaYKUNui1SzQ91xmqEUZ/WRavg9FD82rtQ==";
+ url = "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-26.4.2.tgz";
+ sha512 = "akzGcxwxtE+9ZJZRW+M2o+nTNnmQZxrHJxX/HjgDaU5+PLmY1qnQPnMjgADPGCRPhB+Yawe1iij0REe+k/aHoA==";
};
};
- "jest-matcher-utils-26.2.0" = {
+ "jest-matcher-utils-26.4.2" = {
name = "jest-matcher-utils";
packageName = "jest-matcher-utils";
- version = "26.2.0";
+ version = "26.4.2";
src = fetchurl {
- url = "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-26.2.0.tgz";
- sha512 = "2cf/LW2VFb3ayPHrH36ZDjp9+CAeAe/pWBAwsV8t3dKcrINzXPVxq8qMWOxwt5BaeBCx4ZupVGH7VIgB8v66vQ==";
+ url = "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-26.4.2.tgz";
+ sha512 = "KcbNqWfWUG24R7tu9WcAOKKdiXiXCbMvQYT6iodZ9k1f7065k0keUOW6XpJMMvah+hTfqkhJhRXmA3r3zMAg0Q==";
};
};
- "jest-message-util-26.2.0" = {
+ "jest-message-util-26.3.0" = {
name = "jest-message-util";
packageName = "jest-message-util";
- version = "26.2.0";
+ version = "26.3.0";
src = fetchurl {
- url = "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.2.0.tgz";
- sha512 = "g362RhZaJuqeqG108n1sthz5vNpzTNy926eNDszo4ncRbmmcMRIUAZibnd6s5v2XSBCChAxQtCoN25gnzp7JbQ==";
+ url = "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.3.0.tgz";
+ sha512 = "xIavRYqr4/otGOiLxLZGj3ieMmjcNE73Ui+LdSW/Y790j5acqCsAdDiLIbzHCZMpN07JOENRWX5DcU+OQ+TjTA==";
};
};
- "jest-mock-26.2.0" = {
+ "jest-mock-26.3.0" = {
name = "jest-mock";
packageName = "jest-mock";
- version = "26.2.0";
+ version = "26.3.0";
src = fetchurl {
- url = "https://registry.npmjs.org/jest-mock/-/jest-mock-26.2.0.tgz";
- sha512 = "XeC7yWtWmWByoyVOHSsE7NYsbXJLtJNgmhD7z4MKumKm6ET0si81bsSLbQ64L5saK3TgsHo2B/UqG5KNZ1Sp/Q==";
+ url = "https://registry.npmjs.org/jest-mock/-/jest-mock-26.3.0.tgz";
+ sha512 = "PeaRrg8Dc6mnS35gOo/CbZovoDPKAeB1FICZiuagAgGvbWdNNyjQjkOaGUa/3N3JtpQ/Mh9P4A2D4Fv51NnP8Q==";
};
};
"jest-pnp-resolver-1.2.2" = {
@@ -4288,94 +4261,94 @@ let
sha512 = "Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==";
};
};
- "jest-resolve-26.2.2" = {
+ "jest-resolve-26.4.0" = {
name = "jest-resolve";
packageName = "jest-resolve";
- version = "26.2.2";
+ version = "26.4.0";
src = fetchurl {
- url = "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.2.2.tgz";
- sha512 = "ye9Tj/ILn/0OgFPE/3dGpQPUqt4dHwIocxt5qSBkyzxQD8PbL0bVxBogX2FHxsd3zJA7V2H/cHXnBnNyyT9YoQ==";
+ url = "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.4.0.tgz";
+ sha512 = "bn/JoZTEXRSlEx3+SfgZcJAVuTMOksYq9xe9O6s4Ekg84aKBObEaVXKOEilULRqviSLAYJldnoWV9c07kwtiCg==";
};
};
- "jest-resolve-dependencies-26.2.2" = {
+ "jest-resolve-dependencies-26.4.2" = {
name = "jest-resolve-dependencies";
packageName = "jest-resolve-dependencies";
- version = "26.2.2";
+ version = "26.4.2";
src = fetchurl {
- url = "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-26.2.2.tgz";
- sha512 = "S5vufDmVbQXnpP7435gr710xeBGUFcKNpNswke7RmFvDQtmqPjPVU/rCeMlEU0p6vfpnjhwMYeaVjKZAy5QYJA==";
+ url = "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-26.4.2.tgz";
+ sha512 = "ADHaOwqEcVc71uTfySzSowA/RdxUpCxhxa2FNLiin9vWLB1uLPad3we+JSSROq5+SrL9iYPdZZF8bdKM7XABTQ==";
};
};
- "jest-runner-26.2.2" = {
+ "jest-runner-26.4.2" = {
name = "jest-runner";
packageName = "jest-runner";
- version = "26.2.2";
+ version = "26.4.2";
src = fetchurl {
- url = "https://registry.npmjs.org/jest-runner/-/jest-runner-26.2.2.tgz";
- sha512 = "/qb6ptgX+KQ+aNMohJf1We695kaAfuu3u3ouh66TWfhTpLd9WbqcF6163d/tMoEY8GqPztXPLuyG0rHRVDLxCA==";
+ url = "https://registry.npmjs.org/jest-runner/-/jest-runner-26.4.2.tgz";
+ sha512 = "FgjDHeVknDjw1gRAYaoUoShe1K3XUuFMkIaXbdhEys+1O4bEJS8Avmn4lBwoMfL8O5oFTdWYKcf3tEJyyYyk8g==";
};
};
- "jest-runtime-26.2.2" = {
+ "jest-runtime-26.4.2" = {
name = "jest-runtime";
packageName = "jest-runtime";
- version = "26.2.2";
+ version = "26.4.2";
src = fetchurl {
- url = "https://registry.npmjs.org/jest-runtime/-/jest-runtime-26.2.2.tgz";
- sha512 = "a8VXM3DxCDnCIdl9+QucWFfQ28KdqmyVFqeKLigHdErtsx56O2ZIdQkhFSuP1XtVrG9nTNHbKxjh5XL1UaFDVQ==";
+ url = "https://registry.npmjs.org/jest-runtime/-/jest-runtime-26.4.2.tgz";
+ sha512 = "4Pe7Uk5a80FnbHwSOk7ojNCJvz3Ks2CNQWT5Z7MJo4tX0jb3V/LThKvD9tKPNVNyeMH98J/nzGlcwc00R2dSHQ==";
};
};
- "jest-serializer-26.2.0" = {
+ "jest-serializer-26.3.0" = {
name = "jest-serializer";
packageName = "jest-serializer";
- version = "26.2.0";
+ version = "26.3.0";
src = fetchurl {
- url = "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.2.0.tgz";
- sha512 = "V7snZI9IVmyJEu0Qy0inmuXgnMWDtrsbV2p9CRAcmlmPVwpC2ZM8wXyYpiugDQnwLHx0V4+Pnog9Exb3UO8M6Q==";
+ url = "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.3.0.tgz";
+ sha512 = "IDRBQBLPlKa4flg77fqg0n/pH87tcRKwe8zxOVTWISxGpPHYkRZ1dXKyh04JOja7gppc60+soKVZ791mruVdow==";
};
};
- "jest-snapshot-26.2.2" = {
+ "jest-snapshot-26.4.2" = {
name = "jest-snapshot";
packageName = "jest-snapshot";
- version = "26.2.2";
+ version = "26.4.2";
src = fetchurl {
- url = "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-26.2.2.tgz";
- sha512 = "NdjD8aJS7ePu268Wy/n/aR1TUisG0BOY+QOW4f6h46UHEKOgYmmkvJhh2BqdVZQ0BHSxTMt04WpCf9njzx8KtA==";
+ url = "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-26.4.2.tgz";
+ sha512 = "N6Uub8FccKlf5SBFnL2Ri/xofbaA68Cc3MGjP/NuwgnsvWh+9hLIR/DhrxbSiKXMY9vUW5dI6EW1eHaDHqe9sg==";
};
};
- "jest-util-26.2.0" = {
+ "jest-util-26.3.0" = {
name = "jest-util";
packageName = "jest-util";
- version = "26.2.0";
+ version = "26.3.0";
src = fetchurl {
- url = "https://registry.npmjs.org/jest-util/-/jest-util-26.2.0.tgz";
- sha512 = "YmDwJxLZ1kFxpxPfhSJ0rIkiZOM0PQbRcfH0TzJOhqCisCAsI1WcmoQqO83My9xeVA2k4n+rzg2UuexVKzPpig==";
+ url = "https://registry.npmjs.org/jest-util/-/jest-util-26.3.0.tgz";
+ sha512 = "4zpn6bwV0+AMFN0IYhH/wnzIQzRaYVrz1A8sYnRnj4UXDXbOVtWmlaZkO9mipFqZ13okIfN87aDoJWB7VH6hcw==";
};
};
- "jest-validate-26.2.0" = {
+ "jest-validate-26.4.2" = {
name = "jest-validate";
packageName = "jest-validate";
- version = "26.2.0";
+ version = "26.4.2";
src = fetchurl {
- url = "https://registry.npmjs.org/jest-validate/-/jest-validate-26.2.0.tgz";
- sha512 = "8XKn3hM6VIVmLNuyzYLCPsRCT83o8jMZYhbieh4dAyKLc4Ypr36rVKC+c8WMpWkfHHpGnEkvWUjjIAyobEIY/Q==";
+ url = "https://registry.npmjs.org/jest-validate/-/jest-validate-26.4.2.tgz";
+ sha512 = "blft+xDX7XXghfhY0mrsBCYhX365n8K5wNDC4XAcNKqqjEzsRUSXP44m6PL0QJEW2crxQFLLztVnJ4j7oPlQrQ==";
};
};
- "jest-watcher-26.2.0" = {
+ "jest-watcher-26.3.0" = {
name = "jest-watcher";
packageName = "jest-watcher";
- version = "26.2.0";
+ version = "26.3.0";
src = fetchurl {
- url = "https://registry.npmjs.org/jest-watcher/-/jest-watcher-26.2.0.tgz";
- sha512 = "674Boco4Joe0CzgKPL6K4Z9LgyLx+ZvW2GilbpYb8rFEUkmDGgsZdv1Hv5rxsRpb1HLgKUOL/JfbttRCuFdZXQ==";
+ url = "https://registry.npmjs.org/jest-watcher/-/jest-watcher-26.3.0.tgz";
+ sha512 = "XnLdKmyCGJ3VoF6G/p5ohbJ04q/vv5aH9ENI+i6BL0uu9WWB6Z7Z2lhQQk0d2AVZcRGp1yW+/TsoToMhBFPRdQ==";
};
};
- "jest-worker-26.2.1" = {
+ "jest-worker-26.3.0" = {
name = "jest-worker";
packageName = "jest-worker";
- version = "26.2.1";
+ version = "26.3.0";
src = fetchurl {
- url = "https://registry.npmjs.org/jest-worker/-/jest-worker-26.2.1.tgz";
- sha512 = "+XcGMMJDTeEGncRb5M5Zq9P7K4sQ1sirhjdOxsN1462h6lFo9w59bl2LVQmdGEEeU3m+maZCkS2Tcc9SfCHO4A==";
+ url = "https://registry.npmjs.org/jest-worker/-/jest-worker-26.3.0.tgz";
+ sha512 = "Vmpn2F6IASefL+DVBhPzI2J9/GJUsqzomdeN+P+dK8/jKxbh8R3BtFnx3FIta7wYlPU62cpJMJQo4kuOowcMnw==";
};
};
"js-tokens-4.0.0" = {
@@ -4432,13 +4405,13 @@ let
sha512 = "OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==";
};
};
- "json-parse-better-errors-1.0.2" = {
- name = "json-parse-better-errors";
- packageName = "json-parse-better-errors";
- version = "1.0.2";
+ "json-parse-even-better-errors-2.3.0" = {
+ name = "json-parse-even-better-errors";
+ packageName = "json-parse-even-better-errors";
+ version = "2.3.0";
src = fetchurl {
- url = "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz";
- sha512 = "mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==";
+ url = "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.0.tgz";
+ sha512 = "o3aP+RsWDJZayj1SbHNQAI8x0v3T3SKiGoZlNYfbUP1S3omJQ6i9CnqADqkSPaOAxwua4/1YWx5CM7oiChJt2Q==";
};
};
"json-schema-0.2.3" = {
@@ -4459,6 +4432,15 @@ let
sha512 = "xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==";
};
};
+ "json-stable-stringify-1.0.1" = {
+ name = "json-stable-stringify";
+ packageName = "json-stable-stringify";
+ version = "1.0.1";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz";
+ sha1 = "9a759d39c5f2ff503fd5300646ed445f88c4f9af";
+ };
+ };
"json-stable-stringify-without-jsonify-1.0.1" = {
name = "json-stable-stringify-without-jsonify";
packageName = "json-stable-stringify-without-jsonify";
@@ -4486,15 +4468,6 @@ let
sha512 = "KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==";
};
};
- "jsonfile-4.0.0" = {
- name = "jsonfile";
- packageName = "jsonfile";
- version = "4.0.0";
- src = fetchurl {
- url = "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz";
- sha1 = "8771aae0799b64076b76640fca058f9c10e33ecb";
- };
- };
"jsonfile-6.0.1" = {
name = "jsonfile";
packageName = "jsonfile";
@@ -4504,6 +4477,15 @@ let
sha512 = "jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg==";
};
};
+ "jsonify-0.0.0" = {
+ name = "jsonify";
+ packageName = "jsonify";
+ version = "0.0.0";
+ src = fetchurl {
+ url = "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz";
+ sha1 = "2c74b6ee41d93ca51b7b5aaee8f503631d252a73";
+ };
+ };
"jsprim-1.4.1" = {
name = "jsprim";
packageName = "jsprim";
@@ -4630,13 +4612,13 @@ let
sha512 = "t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==";
};
};
- "lodash-4.17.19" = {
+ "lodash-4.17.20" = {
name = "lodash";
packageName = "lodash";
- version = "4.17.19";
+ version = "4.17.20";
src = fetchurl {
- url = "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz";
- sha512 = "JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==";
+ url = "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz";
+ sha512 = "PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==";
};
};
"lodash.sortby-4.7.0" = {
@@ -4666,13 +4648,13 @@ let
sha512 = "lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==";
};
};
- "lunr-2.3.8" = {
+ "lunr-2.3.9" = {
name = "lunr";
packageName = "lunr";
- version = "2.3.8";
+ version = "2.3.9";
src = fetchurl {
- url = "https://registry.npmjs.org/lunr/-/lunr-2.3.8.tgz";
- sha512 = "oxMeX/Y35PNFuZoHp+jUj5OSEmLCaIH4KTFJh7a93cHBoFmpw2IoPs22VIz7vyO2YUnx2Tn9dzIwO2P/4quIRg==";
+ url = "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz";
+ sha512 = "zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==";
};
};
"make-dir-2.1.0" = {
@@ -4720,13 +4702,13 @@ let
sha1 = "ecdca8f13144e660f1b5bd41f12f3479d98dfb8f";
};
};
- "marked-1.0.0" = {
+ "marked-1.1.1" = {
name = "marked";
packageName = "marked";
- version = "1.0.0";
+ version = "1.1.1";
src = fetchurl {
- url = "https://registry.npmjs.org/marked/-/marked-1.0.0.tgz";
- sha512 = "Wo+L1pWTVibfrSr+TTtMuiMfNzmZWiOPeO7rZsQUY5bgsxpHesBEcIWJloWVTFnrMXnf/TL30eTFSGJddmQAng==";
+ url = "https://registry.npmjs.org/marked/-/marked-1.1.1.tgz";
+ sha512 = "mJzT8D2yPxoPh7h0UXkB+dBj4FykPJ2OIfxAWeIHrvoHDkFxukV/29QxoFQoPM6RLEwhIFdJpmKBlqVM3s2ZIw==";
};
};
"merge-stream-2.0.0" = {
@@ -4864,22 +4846,22 @@ let
sha512 = "al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ==";
};
};
- "mqtt-4.1.0" = {
+ "mqtt-4.2.1" = {
name = "mqtt";
packageName = "mqtt";
- version = "4.1.0";
+ version = "4.2.1";
src = fetchurl {
- url = "https://registry.npmjs.org/mqtt/-/mqtt-4.1.0.tgz";
- sha512 = "dBihVZzaB8p9G/2ktSfamiaHmMnpCpP2du08317ZuEX1kBAbZOG9aMJQ11EChXnOX3GKUeiZYaSITueceQKT2A==";
+ url = "https://registry.npmjs.org/mqtt/-/mqtt-4.2.1.tgz";
+ sha512 = "Iv893r+jWlo5GkNcPOfCGwW8M49IixwHiKLFFYTociEymSibUVCORVEjPXWPGzSxhn7BdlUeHicbRmWiv0Crkg==";
};
};
- "mqtt-packet-6.3.2" = {
+ "mqtt-packet-6.4.0" = {
name = "mqtt-packet";
packageName = "mqtt-packet";
- version = "6.3.2";
+ version = "6.4.0";
src = fetchurl {
- url = "https://registry.npmjs.org/mqtt-packet/-/mqtt-packet-6.3.2.tgz";
- sha512 = "i56+2kN6F57KInGtjjfUXSl4xG8u/zOvfaXFLKFAbBXzWkXOmwcmjaSCBPayf2IQCkQU0+h+S2DizCo3CF6gQA==";
+ url = "https://registry.npmjs.org/mqtt-packet/-/mqtt-packet-6.4.0.tgz";
+ sha512 = "dNd1RPyBolklOR27hgHhy3TxkDk31ZaDu4ljAgJoHlnVsdACH8guwEZhpk3ZMn6GAdH6ENDLgtE285FHIiXzxA==";
};
};
"ms-2.0.0" = {
@@ -4963,13 +4945,13 @@ let
sha512 = "1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==";
};
};
- "node-abi-2.18.0" = {
+ "node-abi-2.19.1" = {
name = "node-abi";
packageName = "node-abi";
- version = "2.18.0";
+ version = "2.19.1";
src = fetchurl {
- url = "https://registry.npmjs.org/node-abi/-/node-abi-2.18.0.tgz";
- sha512 = "yi05ZoiuNNEbyT/xXfSySZE+yVnQW6fxPZuFbLyS1s6b5Kw3HzV2PHOM4XR+nsjzkHxByK+2Wg+yCQbe35l8dw==";
+ url = "https://registry.npmjs.org/node-abi/-/node-abi-2.19.1.tgz";
+ sha512 = "HbtmIuByq44yhAzK7b9j/FelKlHYISKQn0mtvcBrU5QBkhoCMp5bu8Hv5AI34DcKfOAcJBcOEMwLlwO62FFu9A==";
};
};
"node-int64-0.4.0" = {
@@ -4990,13 +4972,13 @@ let
sha1 = "8d9dbe28964a4ac5712e9131642107c71e90ec40";
};
};
- "node-notifier-7.0.2" = {
+ "node-notifier-8.0.0" = {
name = "node-notifier";
packageName = "node-notifier";
- version = "7.0.2";
+ version = "8.0.0";
src = fetchurl {
- url = "https://registry.npmjs.org/node-notifier/-/node-notifier-7.0.2.tgz";
- sha512 = "ux+n4hPVETuTL8+daJXTOC6uKLgMsl1RYfFv7DKRzyvzBapqco0rZZ9g72ZN8VS6V+gvNYHYa/ofcCY8fkJWsA==";
+ url = "https://registry.npmjs.org/node-notifier/-/node-notifier-8.0.0.tgz";
+ sha512 = "46z7DUmcjoYdaWyXouuFNNfUo6eFa94t23c53c+lG/9Cvauk4a98rAUp9672X5dxGdQmLpPzTxzu8f/OeEPaFA==";
};
};
"node-releases-1.1.60" = {
@@ -5179,13 +5161,13 @@ let
sha512 = "5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==";
};
};
- "onetime-5.1.1" = {
+ "onetime-5.1.2" = {
name = "onetime";
packageName = "onetime";
- version = "5.1.1";
+ version = "5.1.2";
src = fetchurl {
- url = "https://registry.npmjs.org/onetime/-/onetime-5.1.1.tgz";
- sha512 = "ZpZpjcJeugQfWsfyQlshVoowIIQ1qBGSVll4rfDq6JJVO//fesjoX808hXWfBjY+ROZgpKDI5TRSRBSoJiZ8eg==";
+ url = "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz";
+ sha512 = "kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==";
};
};
"optionator-0.8.3" = {
@@ -5269,13 +5251,13 @@ let
sha512 = "GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==";
};
};
- "parse-json-5.0.1" = {
+ "parse-json-5.1.0" = {
name = "parse-json";
packageName = "parse-json";
- version = "5.0.1";
+ version = "5.1.0";
src = fetchurl {
- url = "https://registry.npmjs.org/parse-json/-/parse-json-5.0.1.tgz";
- sha512 = "ztoZ4/DYeXQq4E21v169sC8qWINGpcosGv9XhTDvg9/hWvx/zrFkc9BiWxR58OJLHGk28j5BL0SDLeV2WmFZlQ==";
+ url = "https://registry.npmjs.org/parse-json/-/parse-json-5.1.0.tgz";
+ sha512 = "+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ==";
};
};
"parse5-5.1.1" = {
@@ -5440,13 +5422,13 @@ let
sha512 = "kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==";
};
};
- "pretty-format-26.2.0" = {
+ "pretty-format-26.4.2" = {
name = "pretty-format";
packageName = "pretty-format";
- version = "26.2.0";
+ version = "26.4.2";
src = fetchurl {
- url = "https://registry.npmjs.org/pretty-format/-/pretty-format-26.2.0.tgz";
- sha512 = "qi/8IuBu2clY9G7qCXgCdD1Bf9w+sXakdHTRToknzMtVy0g7c4MBWaZy7MfB7ndKZovRO6XRwJiAYqq+MC7SDA==";
+ url = "https://registry.npmjs.org/pretty-format/-/pretty-format-26.4.2.tgz";
+ sha512 = "zK6Gd8zDsEiVydOCGLkoBoZuqv8VTiHyAbKznXe/gaph/DAeZOmit9yMfgIz5adIgAMMs5XfoYSwAX3jcCO1tA==";
};
};
"process-nextick-args-2.0.1" = {
@@ -6223,13 +6205,13 @@ let
sha512 = "NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==";
};
};
- "split2-3.1.1" = {
+ "split2-3.2.2" = {
name = "split2";
packageName = "split2";
- version = "3.1.1";
+ version = "3.2.2";
src = fetchurl {
- url = "https://registry.npmjs.org/split2/-/split2-3.1.1.tgz";
- sha512 = "emNzr1s7ruq4N+1993yht631/JH+jaj0NYBosuKmLcq+JkGQ9MmTw1RB1fGaTCzUuseRIClrlSLHRNYGwWQ58Q==";
+ url = "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz";
+ sha512 = "9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==";
};
};
"sprintf-js-1.0.3" = {
@@ -6430,13 +6412,13 @@ let
sha512 = "QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==";
};
};
- "supports-color-7.1.0" = {
+ "supports-color-7.2.0" = {
name = "supports-color";
packageName = "supports-color";
- version = "7.1.0";
+ version = "7.2.0";
src = fetchurl {
- url = "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz";
- sha512 = "oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==";
+ url = "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz";
+ sha512 = "qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==";
};
};
"supports-hyperlinks-2.1.0" = {
@@ -6691,13 +6673,13 @@ let
sha512 = "+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==";
};
};
- "type-2.0.0" = {
+ "type-2.1.0" = {
name = "type";
packageName = "type";
- version = "2.0.0";
+ version = "2.1.0";
src = fetchurl {
- url = "https://registry.npmjs.org/type/-/type-2.0.0.tgz";
- sha512 = "KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow==";
+ url = "https://registry.npmjs.org/type/-/type-2.1.0.tgz";
+ sha512 = "G9absDWvhAWCV2gmF1zKud3OyC61nZDwWvBL2DApaVFogI07CprggiQAOOjvp2NRjYWFzPyu7vwtDrQFq8jeSA==";
};
};
"type-check-0.3.2" = {
@@ -6772,31 +6754,31 @@ let
sha512 = "zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==";
};
};
- "typedoc-0.17.8" = {
+ "typedoc-0.19.0" = {
name = "typedoc";
packageName = "typedoc";
- version = "0.17.8";
+ version = "0.19.0";
src = fetchurl {
- url = "https://registry.npmjs.org/typedoc/-/typedoc-0.17.8.tgz";
- sha512 = "/OyrHCJ8jtzu+QZ+771YaxQ9s4g5Z3XsQE3Ma7q+BL392xxBn4UMvvCdVnqKC2T/dz03/VXSLVKOP3lHmDdc/w==";
+ url = "https://registry.npmjs.org/typedoc/-/typedoc-0.19.0.tgz";
+ sha512 = "Rn68JwgDDYyIWl3HXeSsLZcsvxd2anISjhKu64PvID7RETeS2Iwnc4cH60yqc8/N50Xo1d3MHPGYinCPhMMliQ==";
};
};
- "typedoc-default-themes-0.10.2" = {
+ "typedoc-default-themes-0.11.1" = {
name = "typedoc-default-themes";
packageName = "typedoc-default-themes";
- version = "0.10.2";
+ version = "0.11.1";
src = fetchurl {
- url = "https://registry.npmjs.org/typedoc-default-themes/-/typedoc-default-themes-0.10.2.tgz";
- sha512 = "zo09yRj+xwLFE3hyhJeVHWRSPuKEIAsFK5r2u47KL/HBKqpwdUSanoaz5L34IKiSATFrjG5ywmIu98hPVMfxZg==";
+ url = "https://registry.npmjs.org/typedoc-default-themes/-/typedoc-default-themes-0.11.1.tgz";
+ sha512 = "1yl8pbhjrLywqGJx9TfT+wzP+ntudPYjgJdpCj+s5ed2etBkqZPOCBMKwpaN9o6pdoFQF195PggqWTLVEkaRQQ==";
};
};
- "typedoc-plugin-markdown-2.4.0" = {
+ "typedoc-plugin-markdown-2.4.2" = {
name = "typedoc-plugin-markdown";
packageName = "typedoc-plugin-markdown";
- version = "2.4.0";
+ version = "2.4.2";
src = fetchurl {
- url = "https://registry.npmjs.org/typedoc-plugin-markdown/-/typedoc-plugin-markdown-2.4.0.tgz";
- sha512 = "m4eOwxSzeCbGNFzPDadNQcuMbkbc/45fgXsIP/m4K20i/8zVhCBmvoTxmKUqWYVTYc1BTtvQD5hY/qCueHoLFw==";
+ url = "https://registry.npmjs.org/typedoc-plugin-markdown/-/typedoc-plugin-markdown-2.4.2.tgz";
+ sha512 = "BBH+9/Uq5XbsqfzCDl8Jq4iaLXRMXRuAHZRFarAZX7df8+F3vUjDx/WHWoWqbZ/XUFzduLC2Iuy2qwsJX8SQ7A==";
};
};
"typedoc-plugin-no-inherit-1.1.10" = {
@@ -6817,31 +6799,22 @@ let
sha512 = "xHq9DzkoQywS7FyPneMm2/Hr9GRoCpjSQXkVN0W6SCJKP7fguqg2tasgh+8l5/mW6YSYvqCqEbkSYLbuD4Y6gA==";
};
};
- "typescript-3.9.7" = {
+ "typescript-4.0.2" = {
name = "typescript";
packageName = "typescript";
- version = "3.9.7";
+ version = "4.0.2";
src = fetchurl {
- url = "https://registry.npmjs.org/typescript/-/typescript-3.9.7.tgz";
- sha512 = "BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw==";
+ url = "https://registry.npmjs.org/typescript/-/typescript-4.0.2.tgz";
+ sha512 = "e4ERvRV2wb+rRZ/IQeb3jm2VxBsirQLpQhdxplZ2MEzGvDkkMmPglecnNDfSUBivMjP93vRbngYYDQqQ/78bcQ==";
};
};
- "uglify-js-3.10.1" = {
+ "uglify-js-3.10.2" = {
name = "uglify-js";
packageName = "uglify-js";
- version = "3.10.1";
+ version = "3.10.2";
src = fetchurl {
- url = "https://registry.npmjs.org/uglify-js/-/uglify-js-3.10.1.tgz";
- sha512 = "RjxApKkrPJB6kjJxQS3iZlf///REXWYxYJxO/MpmlQzVkDWVI3PSnCBWezMecmTU/TRkNxrl8bmsfFQCp+LO+Q==";
- };
- };
- "ultron-1.1.1" = {
- name = "ultron";
- packageName = "ultron";
- version = "1.1.1";
- src = fetchurl {
- url = "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz";
- sha512 = "UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==";
+ url = "https://registry.npmjs.org/uglify-js/-/uglify-js-3.10.2.tgz";
+ sha512 = "GXCYNwqoo0MbLARghYjxVBxDCnU0tLqN7IPLdHHbibCb1NI5zBkU2EPcy/GaVxc0BtTjqyGXJCINe6JMR2Dpow==";
};
};
"unc-path-regex-0.1.2" = {
@@ -6907,15 +6880,6 @@ let
sha512 = "2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==";
};
};
- "universalify-0.1.2" = {
- name = "universalify";
- packageName = "universalify";
- version = "0.1.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz";
- sha512 = "rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==";
- };
- };
"universalify-1.0.0" = {
name = "universalify";
packageName = "universalify";
@@ -7015,13 +6979,13 @@ let
sha512 = "8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==";
};
};
- "v8-to-istanbul-4.1.4" = {
+ "v8-to-istanbul-5.0.1" = {
name = "v8-to-istanbul";
packageName = "v8-to-istanbul";
- version = "4.1.4";
+ version = "5.0.1";
src = fetchurl {
- url = "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-4.1.4.tgz";
- sha512 = "Rw6vJHj1mbdK8edjR7+zuJrpDtKIgNdAvTSAcpYfgMIw+u2dPDntD3dgN4XQFLU2/fvFQdzj+EeSGfd/jnY5fQ==";
+ url = "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-5.0.1.tgz";
+ sha512 = "mbDNjuDajqYe3TXFk5qxcQy8L1msXNE37WTlLoqqpBfRsimbNcrlhQlDPntmECEcUvdC+AQ8CyMMf6EUx1r74Q==";
};
};
"validate-npm-package-license-3.0.4" = {
@@ -7087,15 +7051,6 @@ let
sha512 = "qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==";
};
};
- "websocket-stream-5.5.2" = {
- name = "websocket-stream";
- packageName = "websocket-stream";
- version = "5.5.2";
- src = fetchurl {
- url = "https://registry.npmjs.org/websocket-stream/-/websocket-stream-5.5.2.tgz";
- sha512 = "8z49MKIHbGk3C4HtuHWDtYX8mYej1wWabjthC/RupM9ngeukU4IWoM46dgth1UOS/T4/IqgEdCDJuMe2039OQQ==";
- };
- };
"whatwg-encoding-1.0.5" = {
name = "whatwg-encoding";
packageName = "whatwg-encoding";
@@ -7114,13 +7069,13 @@ let
sha512 = "M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==";
};
};
- "whatwg-url-8.1.0" = {
+ "whatwg-url-8.2.1" = {
name = "whatwg-url";
packageName = "whatwg-url";
- version = "8.1.0";
+ version = "8.2.1";
src = fetchurl {
- url = "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.1.0.tgz";
- sha512 = "vEIkwNi9Hqt4TV9RdnaBPNt+E2Sgmo3gePebCRgZ1R7g6d23+53zCTnuB0amKI4AXq6VM8jj2DUAa0S1vjJxkw==";
+ url = "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.2.1.tgz";
+ sha512 = "ZmVCr6nfBeaMxEHALLEGy0LszYjpJqf6PVNQUQ1qd9Et+q7Jpygd4rGGDXgHjD8e99yLFseD69msHDM4YwPZ4A==";
};
};
"which-1.3.1" = {
@@ -7249,15 +7204,6 @@ let
sha512 = "AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==";
};
};
- "ws-3.3.3" = {
- name = "ws";
- packageName = "ws";
- version = "3.3.3";
- src = fetchurl {
- url = "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz";
- sha512 = "nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==";
- };
- };
"ws-7.3.1" = {
name = "ws";
packageName = "ws";
@@ -7321,41 +7267,45 @@ let
sha512 = "o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==";
};
};
- "zigbee-herdsman-0.12.116" = {
+ "zigbee-herdsman-0.12.127" = {
name = "zigbee-herdsman";
packageName = "zigbee-herdsman";
- version = "0.12.116";
+ version = "0.12.127";
src = fetchurl {
- url = "https://registry.npmjs.org/zigbee-herdsman/-/zigbee-herdsman-0.12.116.tgz";
- sha512 = "eMpqW5KWiVR5jMW7gelDrZB7sgohD8CoJeAH91bd89zR/vM3sTnSTC/HRpqRlEsPeYqwCRBKExf57q2iDQbWaA==";
+ url = "https://registry.npmjs.org/zigbee-herdsman/-/zigbee-herdsman-0.12.127.tgz";
+ sha512 = "NbNwX+83byss1tQpZXydpo9iYuHa3RV88X2vHpmoNnv4WuHBjnSbmL/1sdiUB1URBIGeFgC9MxLiTtqxMyCehQ==";
};
};
- "zigbee-herdsman-converters-12.0.161" = {
+ "zigbee-herdsman-converters-12.0.178" = {
name = "zigbee-herdsman-converters";
packageName = "zigbee-herdsman-converters";
- version = "12.0.161";
+ version = "12.0.178";
src = fetchurl {
- url = "https://registry.npmjs.org/zigbee-herdsman-converters/-/zigbee-herdsman-converters-12.0.161.tgz";
- sha512 = "iufUoZL86uTplW8vEjevFtAb7KITox2vXHB+0l9dE7lJqYyiGKyEoRqbjkmqBNqFjkJXD4eAM0VpsVAbHGbDMg==";
+ url = "https://registry.npmjs.org/zigbee-herdsman-converters/-/zigbee-herdsman-converters-12.0.178.tgz";
+ sha512 = "SOATRwJU8NCWay194BCzDr0+HkgF4ANv8Qw8Xmqbz60YZWsNh9y8tYrVbIbcTdiZKLGzambrmY66DgOntiTxNA==";
};
};
};
args = {
name = "zigbee2mqtt";
packageName = "zigbee2mqtt";
- version = "1.14.3";
+ version = "1.14.4";
src = ./.;
dependencies = [
sources."@dabh/diagnostics-2.0.2"
- sources."ajv-6.12.3"
+ sources."ajv-6.12.4"
sources."argparse-1.0.10"
sources."async-3.2.0"
- sources."async-limiter-1.0.1"
sources."balanced-match-1.0.0"
sources."base64-js-1.3.1"
sources."bindings-1.5.0"
- sources."bl-1.2.2"
+ (sources."bl-4.0.3" // {
+ dependencies = [
+ sources."readable-stream-3.6.0"
+ ];
+ })
sources."brace-expansion-1.1.11"
+ sources."buffer-5.6.0"
sources."buffer-from-1.1.1"
sources."callback-stream-1.1.0"
sources."color-3.0.0"
@@ -7387,7 +7337,7 @@ let
sources."event-emitter-0.3.5"
(sources."ext-1.4.0" // {
dependencies = [
- sources."type-2.0.0"
+ sources."type-2.1.0"
];
})
sources."extend-3.0.2"
@@ -7405,6 +7355,7 @@ let
sources."glossy-0.1.7"
sources."help-me-1.1.0"
sources."humanize-duration-3.23.1"
+ sources."ieee754-1.1.13"
sources."inflight-1.0.6"
sources."inherits-2.0.4"
sources."is-absolute-1.0.0"
@@ -7419,7 +7370,9 @@ let
sources."isarray-1.0.0"
sources."js-yaml-3.14.0"
sources."json-schema-traverse-0.4.1"
+ sources."json-stable-stringify-1.0.1"
sources."json-stable-stringify-without-jsonify-1.0.1"
+ sources."jsonify-0.0.0"
sources."kuler-2.0.0"
sources."leven-2.1.0"
sources."logform-2.2.0"
@@ -7427,8 +7380,12 @@ let
sources."minimist-1.2.5"
sources."mkdir-recursive-0.4.0"
sources."moment-2.27.0"
- sources."mqtt-4.1.0"
- sources."mqtt-packet-6.3.2"
+ sources."mqtt-4.2.1"
+ (sources."mqtt-packet-6.4.0" // {
+ dependencies = [
+ sources."safe-buffer-5.2.1"
+ ];
+ })
sources."ms-2.1.2"
sources."nan-2.14.1"
sources."next-tick-1.0.0"
@@ -7453,7 +7410,7 @@ let
sources."safe-buffer-5.1.2"
sources."semver-7.3.2"
sources."simple-swizzle-0.2.2"
- (sources."split2-3.1.1" // {
+ (sources."split2-3.2.2" // {
dependencies = [
sources."readable-stream-3.6.0"
];
@@ -7469,13 +7426,11 @@ let
sources."triple-beam-1.3.0"
sources."type-1.2.0"
sources."typedarray-0.0.6"
- sources."ultron-1.1.1"
sources."unc-path-regex-0.1.2"
sources."unique-stream-2.3.1"
sources."unix-dgram-2.0.3"
sources."uri-js-4.2.2"
sources."util-deprecate-1.0.2"
- sources."websocket-stream-5.5.2"
(sources."winston-3.3.3" // {
dependencies = [
sources."readable-stream-3.6.0"
@@ -7484,22 +7439,22 @@ let
sources."winston-syslog-2.4.4"
sources."winston-transport-4.4.0"
sources."wrappy-1.0.2"
- sources."ws-3.3.3"
+ sources."ws-7.3.1"
sources."xtend-4.0.2"
- (sources."zigbee-herdsman-0.12.116" // {
+ (sources."zigbee-herdsman-0.12.127" // {
dependencies = [
sources."@babel/cli-7.10.5"
sources."@babel/code-frame-7.10.4"
sources."@babel/compat-data-7.11.0"
- sources."@babel/core-7.11.1"
- sources."@babel/generator-7.11.0"
+ sources."@babel/core-7.11.4"
+ sources."@babel/generator-7.11.4"
sources."@babel/helper-annotate-as-pure-7.10.4"
sources."@babel/helper-builder-binary-assignment-operator-visitor-7.10.4"
sources."@babel/helper-compilation-targets-7.10.4"
sources."@babel/helper-create-class-features-plugin-7.10.5"
sources."@babel/helper-create-regexp-features-plugin-7.10.4"
sources."@babel/helper-define-map-7.10.5"
- sources."@babel/helper-explode-assignable-expression-7.10.4"
+ sources."@babel/helper-explode-assignable-expression-7.11.4"
sources."@babel/helper-function-name-7.10.4"
sources."@babel/helper-get-function-arity-7.10.4"
sources."@babel/helper-hoist-variables-7.10.4"
@@ -7509,7 +7464,7 @@ let
sources."@babel/helper-optimise-call-expression-7.10.4"
sources."@babel/helper-plugin-utils-7.10.4"
sources."@babel/helper-regex-7.10.5"
- sources."@babel/helper-remap-async-to-generator-7.10.4"
+ sources."@babel/helper-remap-async-to-generator-7.11.4"
sources."@babel/helper-replace-supers-7.10.4"
sources."@babel/helper-simple-access-7.10.4"
sources."@babel/helper-skip-transparent-expression-wrappers-7.11.0"
@@ -7518,7 +7473,7 @@ let
sources."@babel/helper-wrap-function-7.10.4"
sources."@babel/helpers-7.10.4"
sources."@babel/highlight-7.10.4"
- sources."@babel/parser-7.11.3"
+ sources."@babel/parser-7.11.4"
sources."@babel/plugin-proposal-async-generator-functions-7.10.5"
sources."@babel/plugin-proposal-class-properties-7.10.4"
sources."@babel/plugin-proposal-dynamic-import-7.10.4"
@@ -7581,7 +7536,7 @@ let
sources."@babel/plugin-transform-unicode-escapes-7.10.4"
sources."@babel/plugin-transform-unicode-regex-7.10.4"
sources."@babel/preset-env-7.11.0"
- sources."@babel/preset-modules-0.1.3"
+ sources."@babel/preset-modules-0.1.4"
sources."@babel/preset-typescript-7.10.4"
sources."@babel/runtime-7.11.2"
sources."@babel/template-7.10.4"
@@ -7591,21 +7546,23 @@ let
sources."@cnakazawa/watch-1.0.4"
sources."@istanbuljs/load-nyc-config-1.1.0"
sources."@istanbuljs/schema-0.1.2"
- (sources."@jest/console-26.2.0" // {
+ (sources."@jest/console-26.3.0" // {
dependencies = [
- sources."@jest/types-26.2.0"
+ sources."@jest/types-26.3.0"
+ sources."@types/istanbul-reports-3.0.0"
sources."ansi-styles-4.2.1"
sources."chalk-4.1.0"
sources."color-convert-2.0.1"
sources."color-name-1.1.4"
sources."has-flag-4.0.0"
sources."slash-3.0.0"
- sources."supports-color-7.1.0"
+ sources."supports-color-7.2.0"
];
})
- (sources."@jest/core-26.2.2" // {
+ (sources."@jest/core-26.4.2" // {
dependencies = [
- sources."@jest/types-26.2.0"
+ sources."@jest/types-26.3.0"
+ sources."@types/istanbul-reports-3.0.0"
sources."ansi-regex-5.0.0"
sources."ansi-styles-4.2.1"
sources."braces-3.0.2"
@@ -7619,46 +7576,50 @@ let
sources."rimraf-3.0.2"
sources."slash-3.0.0"
sources."strip-ansi-6.0.0"
- sources."supports-color-7.1.0"
+ sources."supports-color-7.2.0"
sources."to-regex-range-5.0.1"
];
})
- (sources."@jest/environment-26.2.0" // {
+ (sources."@jest/environment-26.3.0" // {
dependencies = [
- sources."@jest/types-26.2.0"
+ sources."@jest/types-26.3.0"
+ sources."@types/istanbul-reports-3.0.0"
sources."ansi-styles-4.2.1"
sources."chalk-4.1.0"
sources."color-convert-2.0.1"
sources."color-name-1.1.4"
sources."has-flag-4.0.0"
- sources."supports-color-7.1.0"
+ sources."supports-color-7.2.0"
];
})
- (sources."@jest/fake-timers-26.2.0" // {
+ (sources."@jest/fake-timers-26.3.0" // {
dependencies = [
- sources."@jest/types-26.2.0"
+ sources."@jest/types-26.3.0"
+ sources."@types/istanbul-reports-3.0.0"
sources."ansi-styles-4.2.1"
sources."chalk-4.1.0"
sources."color-convert-2.0.1"
sources."color-name-1.1.4"
sources."has-flag-4.0.0"
- sources."supports-color-7.1.0"
+ sources."supports-color-7.2.0"
];
})
- (sources."@jest/globals-26.2.0" // {
+ (sources."@jest/globals-26.4.2" // {
dependencies = [
- sources."@jest/types-26.2.0"
+ sources."@jest/types-26.3.0"
+ sources."@types/istanbul-reports-3.0.0"
sources."ansi-styles-4.2.1"
sources."chalk-4.1.0"
sources."color-convert-2.0.1"
sources."color-name-1.1.4"
sources."has-flag-4.0.0"
- sources."supports-color-7.1.0"
+ sources."supports-color-7.2.0"
];
})
- (sources."@jest/reporters-26.2.2" // {
+ (sources."@jest/reporters-26.4.1" // {
dependencies = [
- sources."@jest/types-26.2.0"
+ sources."@jest/types-26.3.0"
+ sources."@types/istanbul-reports-3.0.0"
sources."ansi-styles-4.2.1"
sources."chalk-4.1.0"
sources."color-convert-2.0.1"
@@ -7666,29 +7627,31 @@ let
sources."has-flag-4.0.0"
sources."slash-3.0.0"
sources."source-map-0.6.1"
- sources."supports-color-7.1.0"
+ sources."supports-color-7.2.0"
];
})
- (sources."@jest/source-map-26.1.0" // {
+ (sources."@jest/source-map-26.3.0" // {
dependencies = [
sources."source-map-0.6.1"
];
})
- (sources."@jest/test-result-26.2.0" // {
+ (sources."@jest/test-result-26.3.0" // {
dependencies = [
- sources."@jest/types-26.2.0"
+ sources."@jest/types-26.3.0"
+ sources."@types/istanbul-reports-3.0.0"
sources."ansi-styles-4.2.1"
sources."chalk-4.1.0"
sources."color-convert-2.0.1"
sources."color-name-1.1.4"
sources."has-flag-4.0.0"
- sources."supports-color-7.1.0"
+ sources."supports-color-7.2.0"
];
})
- sources."@jest/test-sequencer-26.2.2"
- (sources."@jest/transform-26.2.2" // {
+ sources."@jest/test-sequencer-26.4.2"
+ (sources."@jest/transform-26.3.0" // {
dependencies = [
- sources."@jest/types-26.2.0"
+ sources."@jest/types-26.3.0"
+ sources."@types/istanbul-reports-3.0.0"
sources."ansi-styles-4.2.1"
sources."braces-3.0.2"
sources."chalk-4.1.0"
@@ -7700,7 +7663,7 @@ let
sources."micromatch-4.0.2"
sources."slash-3.0.0"
sources."source-map-0.6.1"
- sources."supports-color-7.1.0"
+ sources."supports-color-7.2.0"
sources."to-regex-range-5.0.1"
];
})
@@ -7711,7 +7674,7 @@ let
sources."color-convert-2.0.1"
sources."color-name-1.1.4"
sources."has-flag-4.0.0"
- sources."supports-color-7.1.0"
+ sources."supports-color-7.2.0"
];
})
sources."@serialport/binding-abstract-9.0.1"
@@ -7737,36 +7700,36 @@ let
sources."@types/istanbul-lib-coverage-2.0.3"
sources."@types/istanbul-lib-report-3.0.0"
sources."@types/istanbul-reports-1.1.2"
- sources."@types/jest-26.0.9"
+ sources."@types/jest-26.0.10"
sources."@types/json-schema-7.0.5"
sources."@types/nedb-1.8.10"
- sources."@types/node-14.0.27"
+ sources."@types/node-14.6.2"
sources."@types/normalize-package-data-2.4.0"
- sources."@types/prettier-2.0.2"
+ sources."@types/prettier-2.1.0"
sources."@types/serialport-8.0.1"
sources."@types/stack-utils-1.0.1"
sources."@types/yargs-15.0.5"
sources."@types/yargs-parser-15.0.0"
- (sources."@typescript-eslint/eslint-plugin-3.8.0" // {
+ (sources."@typescript-eslint/eslint-plugin-3.10.1" // {
dependencies = [
sources."semver-7.3.2"
];
})
- sources."@typescript-eslint/experimental-utils-3.8.0"
- sources."@typescript-eslint/parser-3.8.0"
- sources."@typescript-eslint/types-3.8.0"
- (sources."@typescript-eslint/typescript-estree-3.8.0" // {
+ sources."@typescript-eslint/experimental-utils-3.10.1"
+ sources."@typescript-eslint/parser-3.10.1"
+ sources."@typescript-eslint/types-3.10.1"
+ (sources."@typescript-eslint/typescript-estree-3.10.1" // {
dependencies = [
sources."semver-7.3.2"
];
})
- sources."@typescript-eslint/visitor-keys-3.8.0"
+ sources."@typescript-eslint/visitor-keys-3.10.1"
sources."abab-2.0.4"
sources."acorn-7.4.0"
sources."acorn-globals-6.0.0"
sources."acorn-jsx-5.2.0"
sources."acorn-walk-7.2.0"
- sources."ajv-6.12.3"
+ sources."ajv-6.12.4"
sources."ansi-colors-4.1.1"
(sources."ansi-escapes-4.3.1" // {
dependencies = [
@@ -7796,24 +7759,25 @@ let
sources."at-least-node-1.0.0"
sources."atob-2.1.2"
sources."aws-sign2-0.7.0"
- sources."aws4-1.10.0"
- (sources."babel-jest-26.2.2" // {
+ sources."aws4-1.10.1"
+ (sources."babel-jest-26.3.0" // {
dependencies = [
- sources."@jest/types-26.2.0"
+ sources."@jest/types-26.3.0"
+ sources."@types/istanbul-reports-3.0.0"
sources."ansi-styles-4.2.1"
sources."chalk-4.1.0"
sources."color-convert-2.0.1"
sources."color-name-1.1.4"
sources."has-flag-4.0.0"
sources."slash-3.0.0"
- sources."supports-color-7.1.0"
+ sources."supports-color-7.2.0"
];
})
sources."babel-plugin-dynamic-import-node-2.3.3"
sources."babel-plugin-istanbul-6.0.0"
sources."babel-plugin-jest-hoist-26.2.0"
sources."babel-preset-current-node-syntax-0.1.3"
- sources."babel-preset-jest-26.2.0"
+ sources."babel-preset-jest-26.3.0"
sources."balanced-match-1.0.0"
(sources."base-0.11.2" // {
dependencies = [
@@ -7829,7 +7793,7 @@ let
sources."bcrypt-pbkdf-1.0.2"
sources."binary-extensions-1.13.1"
sources."bindings-1.5.0"
- (sources."bl-4.0.2" // {
+ (sources."bl-4.0.3" // {
dependencies = [
sources."readable-stream-3.6.0"
];
@@ -7848,7 +7812,7 @@ let
sources."cache-base-1.0.1"
sources."callsites-3.1.0"
sources."camelcase-5.3.1"
- sources."caniuse-lite-1.0.30001112"
+ sources."caniuse-lite-1.0.30001119"
sources."capture-exit-2.0.0"
sources."caseless-0.12.0"
sources."chalk-2.4.2"
@@ -7926,7 +7890,7 @@ let
];
})
sources."ecc-jsbn-0.1.2"
- sources."electron-to-chromium-1.3.526"
+ sources."electron-to-chromium-1.3.555"
sources."emittery-0.7.1"
sources."emoji-regex-7.0.3"
sources."end-of-stream-1.4.4"
@@ -7943,7 +7907,7 @@ let
sources."type-check-0.3.2"
];
})
- (sources."eslint-7.6.0" // {
+ (sources."eslint-7.7.0" // {
dependencies = [
sources."ansi-regex-5.0.0"
sources."ansi-styles-4.2.1"
@@ -7960,14 +7924,14 @@ let
sources."shebang-regex-3.0.0"
sources."strip-ansi-6.0.0"
sources."strip-json-comments-3.1.1"
- sources."supports-color-7.1.0"
+ sources."supports-color-7.2.0"
sources."which-2.0.2"
];
})
sources."eslint-scope-5.1.0"
sources."eslint-utils-2.1.0"
sources."eslint-visitor-keys-1.3.0"
- sources."espree-7.2.0"
+ sources."espree-7.3.0"
sources."esprima-4.0.1"
(sources."esquery-1.3.1" // {
dependencies = [
@@ -7989,16 +7953,17 @@ let
];
})
sources."expand-template-2.0.3"
- (sources."expect-26.2.0" // {
+ (sources."expect-26.4.2" // {
dependencies = [
- sources."@jest/types-26.2.0"
+ sources."@jest/types-26.3.0"
+ sources."@types/istanbul-reports-3.0.0"
sources."ansi-styles-4.2.1"
sources."chalk-4.1.0"
sources."color-convert-2.0.1"
sources."color-name-1.1.4"
sources."has-flag-4.0.0"
- sources."jest-get-type-26.0.0"
- sources."supports-color-7.1.0"
+ sources."jest-get-type-26.3.0"
+ sources."supports-color-7.2.0"
];
})
sources."extend-3.0.2"
@@ -8036,7 +8001,7 @@ let
sources."form-data-2.3.3"
sources."fragment-cache-0.2.1"
sources."fs-constants-1.0.0"
- sources."fs-extra-8.1.0"
+ sources."fs-extra-9.0.1"
sources."fs-readdir-recursive-1.1.0"
sources."fs.realpath-1.0.0"
sources."fsevents-1.2.13"
@@ -8148,7 +8113,7 @@ let
sources."has-flag-4.0.0"
sources."make-dir-3.1.0"
sources."semver-6.3.0"
- sources."supports-color-7.1.0"
+ sources."supports-color-7.2.0"
];
})
(sources."istanbul-lib-source-maps-4.0.0" // {
@@ -8157,41 +8122,44 @@ let
];
})
sources."istanbul-reports-3.0.2"
- (sources."jest-26.2.2" // {
+ (sources."jest-26.4.2" // {
dependencies = [
- sources."@jest/types-26.2.0"
+ sources."@jest/types-26.3.0"
+ sources."@types/istanbul-reports-3.0.0"
sources."ansi-styles-4.2.1"
sources."chalk-4.1.0"
sources."color-convert-2.0.1"
sources."color-name-1.1.4"
sources."has-flag-4.0.0"
- sources."jest-cli-26.2.2"
- sources."supports-color-7.1.0"
+ sources."jest-cli-26.4.2"
+ sources."supports-color-7.2.0"
];
})
- (sources."jest-changed-files-26.2.0" // {
+ (sources."jest-changed-files-26.3.0" // {
dependencies = [
- sources."@jest/types-26.2.0"
+ sources."@jest/types-26.3.0"
+ sources."@types/istanbul-reports-3.0.0"
sources."ansi-styles-4.2.1"
sources."chalk-4.1.0"
sources."color-convert-2.0.1"
sources."color-name-1.1.4"
sources."cross-spawn-7.0.3"
sources."execa-4.0.3"
- sources."get-stream-5.1.0"
+ sources."get-stream-5.2.0"
sources."has-flag-4.0.0"
sources."is-stream-2.0.0"
sources."npm-run-path-4.0.1"
sources."path-key-3.1.1"
sources."shebang-command-2.0.0"
sources."shebang-regex-3.0.0"
- sources."supports-color-7.1.0"
+ sources."supports-color-7.2.0"
sources."which-2.0.2"
];
})
- (sources."jest-config-26.2.2" // {
+ (sources."jest-config-26.4.2" // {
dependencies = [
- sources."@jest/types-26.2.0"
+ sources."@jest/types-26.3.0"
+ sources."@types/istanbul-reports-3.0.0"
sources."ansi-regex-5.0.0"
sources."ansi-styles-4.2.1"
sources."braces-3.0.2"
@@ -8201,10 +8169,10 @@ let
sources."fill-range-7.0.1"
sources."has-flag-4.0.0"
sources."is-number-7.0.0"
- sources."jest-get-type-26.0.0"
+ sources."jest-get-type-26.3.0"
sources."micromatch-4.0.2"
- sources."pretty-format-26.2.0"
- sources."supports-color-7.1.0"
+ sources."pretty-format-26.4.2"
+ sources."supports-color-7.2.0"
sources."to-regex-range-5.0.1"
];
})
@@ -8215,50 +8183,54 @@ let
sources."color-convert-2.0.1"
sources."color-name-1.1.4"
sources."has-flag-4.0.0"
- sources."supports-color-7.1.0"
+ sources."supports-color-7.2.0"
];
})
sources."jest-docblock-26.0.0"
- (sources."jest-each-26.2.0" // {
+ (sources."jest-each-26.4.2" // {
dependencies = [
- sources."@jest/types-26.2.0"
+ sources."@jest/types-26.3.0"
+ sources."@types/istanbul-reports-3.0.0"
sources."ansi-regex-5.0.0"
sources."ansi-styles-4.2.1"
sources."chalk-4.1.0"
sources."color-convert-2.0.1"
sources."color-name-1.1.4"
sources."has-flag-4.0.0"
- sources."jest-get-type-26.0.0"
- sources."pretty-format-26.2.0"
- sources."supports-color-7.1.0"
+ sources."jest-get-type-26.3.0"
+ sources."pretty-format-26.4.2"
+ sources."supports-color-7.2.0"
];
})
- (sources."jest-environment-jsdom-26.2.0" // {
+ (sources."jest-environment-jsdom-26.3.0" // {
dependencies = [
- sources."@jest/types-26.2.0"
+ sources."@jest/types-26.3.0"
+ sources."@types/istanbul-reports-3.0.0"
sources."ansi-styles-4.2.1"
sources."chalk-4.1.0"
sources."color-convert-2.0.1"
sources."color-name-1.1.4"
sources."has-flag-4.0.0"
- sources."supports-color-7.1.0"
+ sources."supports-color-7.2.0"
];
})
- (sources."jest-environment-node-26.2.0" // {
+ (sources."jest-environment-node-26.3.0" // {
dependencies = [
- sources."@jest/types-26.2.0"
+ sources."@jest/types-26.3.0"
+ sources."@types/istanbul-reports-3.0.0"
sources."ansi-styles-4.2.1"
sources."chalk-4.1.0"
sources."color-convert-2.0.1"
sources."color-name-1.1.4"
sources."has-flag-4.0.0"
- sources."supports-color-7.1.0"
+ sources."supports-color-7.2.0"
];
})
sources."jest-get-type-25.2.6"
- (sources."jest-haste-map-26.2.2" // {
+ (sources."jest-haste-map-26.3.0" // {
dependencies = [
- sources."@jest/types-26.2.0"
+ sources."@jest/types-26.3.0"
+ sources."@types/istanbul-reports-3.0.0"
sources."ansi-styles-4.2.1"
sources."anymatch-3.1.1"
sources."braces-3.0.2"
@@ -8270,56 +8242,60 @@ let
sources."has-flag-4.0.0"
sources."is-number-7.0.0"
sources."micromatch-4.0.2"
- sources."supports-color-7.1.0"
+ sources."supports-color-7.2.0"
sources."to-regex-range-5.0.1"
];
})
- (sources."jest-jasmine2-26.2.2" // {
+ (sources."jest-jasmine2-26.4.2" // {
dependencies = [
- sources."@jest/types-26.2.0"
+ sources."@jest/types-26.3.0"
+ sources."@types/istanbul-reports-3.0.0"
sources."ansi-regex-5.0.0"
sources."ansi-styles-4.2.1"
sources."chalk-4.1.0"
sources."color-convert-2.0.1"
sources."color-name-1.1.4"
sources."has-flag-4.0.0"
- sources."pretty-format-26.2.0"
- sources."supports-color-7.1.0"
+ sources."pretty-format-26.4.2"
+ sources."supports-color-7.2.0"
];
})
- (sources."jest-leak-detector-26.2.0" // {
+ (sources."jest-leak-detector-26.4.2" // {
dependencies = [
- sources."@jest/types-26.2.0"
+ sources."@jest/types-26.3.0"
+ sources."@types/istanbul-reports-3.0.0"
sources."ansi-regex-5.0.0"
sources."ansi-styles-4.2.1"
sources."chalk-4.1.0"
sources."color-convert-2.0.1"
sources."color-name-1.1.4"
sources."has-flag-4.0.0"
- sources."jest-get-type-26.0.0"
- sources."pretty-format-26.2.0"
- sources."supports-color-7.1.0"
+ sources."jest-get-type-26.3.0"
+ sources."pretty-format-26.4.2"
+ sources."supports-color-7.2.0"
];
})
- (sources."jest-matcher-utils-26.2.0" // {
+ (sources."jest-matcher-utils-26.4.2" // {
dependencies = [
- sources."@jest/types-26.2.0"
+ sources."@jest/types-26.3.0"
+ sources."@types/istanbul-reports-3.0.0"
sources."ansi-regex-5.0.0"
sources."ansi-styles-4.2.1"
sources."chalk-4.1.0"
sources."color-convert-2.0.1"
sources."color-name-1.1.4"
- sources."diff-sequences-26.0.0"
+ sources."diff-sequences-26.3.0"
sources."has-flag-4.0.0"
- sources."jest-diff-26.2.0"
- sources."jest-get-type-26.0.0"
- sources."pretty-format-26.2.0"
- sources."supports-color-7.1.0"
+ sources."jest-diff-26.4.2"
+ sources."jest-get-type-26.3.0"
+ sources."pretty-format-26.4.2"
+ sources."supports-color-7.2.0"
];
})
- (sources."jest-message-util-26.2.0" // {
+ (sources."jest-message-util-26.3.0" // {
dependencies = [
- sources."@jest/types-26.2.0"
+ sources."@jest/types-26.3.0"
+ sources."@types/istanbul-reports-3.0.0"
sources."ansi-styles-4.2.1"
sources."braces-3.0.2"
sources."chalk-4.1.0"
@@ -8330,90 +8306,97 @@ let
sources."is-number-7.0.0"
sources."micromatch-4.0.2"
sources."slash-3.0.0"
- sources."supports-color-7.1.0"
+ sources."supports-color-7.2.0"
sources."to-regex-range-5.0.1"
];
})
- (sources."jest-mock-26.2.0" // {
+ (sources."jest-mock-26.3.0" // {
dependencies = [
- sources."@jest/types-26.2.0"
+ sources."@jest/types-26.3.0"
+ sources."@types/istanbul-reports-3.0.0"
sources."ansi-styles-4.2.1"
sources."chalk-4.1.0"
sources."color-convert-2.0.1"
sources."color-name-1.1.4"
sources."has-flag-4.0.0"
- sources."supports-color-7.1.0"
+ sources."supports-color-7.2.0"
];
})
sources."jest-pnp-resolver-1.2.2"
sources."jest-regex-util-26.0.0"
- (sources."jest-resolve-26.2.2" // {
+ (sources."jest-resolve-26.4.0" // {
dependencies = [
- sources."@jest/types-26.2.0"
+ sources."@jest/types-26.3.0"
+ sources."@types/istanbul-reports-3.0.0"
sources."ansi-styles-4.2.1"
sources."chalk-4.1.0"
sources."color-convert-2.0.1"
sources."color-name-1.1.4"
sources."has-flag-4.0.0"
sources."slash-3.0.0"
- sources."supports-color-7.1.0"
+ sources."supports-color-7.2.0"
];
})
- (sources."jest-resolve-dependencies-26.2.2" // {
+ (sources."jest-resolve-dependencies-26.4.2" // {
dependencies = [
- sources."@jest/types-26.2.0"
+ sources."@jest/types-26.3.0"
+ sources."@types/istanbul-reports-3.0.0"
sources."ansi-styles-4.2.1"
sources."chalk-4.1.0"
sources."color-convert-2.0.1"
sources."color-name-1.1.4"
sources."has-flag-4.0.0"
- sources."supports-color-7.1.0"
+ sources."supports-color-7.2.0"
];
})
- (sources."jest-runner-26.2.2" // {
+ (sources."jest-runner-26.4.2" // {
dependencies = [
- sources."@jest/types-26.2.0"
+ sources."@jest/types-26.3.0"
+ sources."@types/istanbul-reports-3.0.0"
sources."ansi-styles-4.2.1"
sources."chalk-4.1.0"
sources."color-convert-2.0.1"
sources."color-name-1.1.4"
sources."has-flag-4.0.0"
- sources."supports-color-7.1.0"
+ sources."supports-color-7.2.0"
];
})
- (sources."jest-runtime-26.2.2" // {
+ (sources."jest-runtime-26.4.2" // {
dependencies = [
- sources."@jest/types-26.2.0"
+ sources."@jest/types-26.3.0"
+ sources."@types/istanbul-reports-3.0.0"
sources."ansi-styles-4.2.1"
sources."chalk-4.1.0"
sources."color-convert-2.0.1"
sources."color-name-1.1.4"
sources."has-flag-4.0.0"
sources."slash-3.0.0"
- sources."supports-color-7.1.0"
+ sources."supports-color-7.2.0"
];
})
- sources."jest-serializer-26.2.0"
- (sources."jest-snapshot-26.2.2" // {
+ sources."jest-serializer-26.3.0"
+ (sources."jest-snapshot-26.4.2" // {
dependencies = [
- sources."@jest/types-26.2.0"
+ sources."@jest/types-26.3.0"
+ sources."@types/istanbul-reports-3.0.0"
sources."ansi-regex-5.0.0"
sources."ansi-styles-4.2.1"
sources."chalk-4.1.0"
sources."color-convert-2.0.1"
sources."color-name-1.1.4"
- sources."diff-sequences-26.0.0"
+ sources."diff-sequences-26.3.0"
sources."has-flag-4.0.0"
- sources."jest-diff-26.2.0"
- sources."jest-get-type-26.0.0"
- sources."pretty-format-26.2.0"
+ sources."jest-diff-26.4.2"
+ sources."jest-get-type-26.3.0"
+ sources."pretty-format-26.4.2"
sources."semver-7.3.2"
- sources."supports-color-7.1.0"
+ sources."supports-color-7.2.0"
];
})
- (sources."jest-util-26.2.0" // {
+ (sources."jest-util-26.3.0" // {
dependencies = [
- sources."@jest/types-26.2.0"
+ sources."@jest/types-26.3.0"
+ sources."@types/istanbul-reports-3.0.0"
sources."ansi-styles-4.2.1"
sources."braces-3.0.2"
sources."chalk-4.1.0"
@@ -8423,13 +8406,14 @@ let
sources."has-flag-4.0.0"
sources."is-number-7.0.0"
sources."micromatch-4.0.2"
- sources."supports-color-7.1.0"
+ sources."supports-color-7.2.0"
sources."to-regex-range-5.0.1"
];
})
- (sources."jest-validate-26.2.0" // {
+ (sources."jest-validate-26.4.2" // {
dependencies = [
- sources."@jest/types-26.2.0"
+ sources."@jest/types-26.3.0"
+ sources."@types/istanbul-reports-3.0.0"
sources."ansi-regex-5.0.0"
sources."ansi-styles-4.2.1"
sources."camelcase-6.0.0"
@@ -8437,26 +8421,27 @@ let
sources."color-convert-2.0.1"
sources."color-name-1.1.4"
sources."has-flag-4.0.0"
- sources."jest-get-type-26.0.0"
- sources."pretty-format-26.2.0"
- sources."supports-color-7.1.0"
+ sources."jest-get-type-26.3.0"
+ sources."pretty-format-26.4.2"
+ sources."supports-color-7.2.0"
];
})
- (sources."jest-watcher-26.2.0" // {
+ (sources."jest-watcher-26.3.0" // {
dependencies = [
- sources."@jest/types-26.2.0"
+ sources."@jest/types-26.3.0"
+ sources."@types/istanbul-reports-3.0.0"
sources."ansi-styles-4.2.1"
sources."chalk-4.1.0"
sources."color-convert-2.0.1"
sources."color-name-1.1.4"
sources."has-flag-4.0.0"
- sources."supports-color-7.1.0"
+ sources."supports-color-7.2.0"
];
})
- (sources."jest-worker-26.2.1" // {
+ (sources."jest-worker-26.3.0" // {
dependencies = [
sources."has-flag-4.0.0"
- sources."supports-color-7.1.0"
+ sources."supports-color-7.2.0"
];
})
sources."js-tokens-4.0.0"
@@ -8464,13 +8449,13 @@ let
sources."jsbn-0.1.1"
sources."jsdom-16.4.0"
sources."jsesc-2.5.2"
- sources."json-parse-better-errors-1.0.2"
+ sources."json-parse-even-better-errors-2.3.0"
sources."json-schema-0.2.3"
sources."json-schema-traverse-0.4.1"
sources."json-stable-stringify-without-jsonify-1.0.1"
sources."json-stringify-safe-5.0.1"
sources."json5-2.1.3"
- sources."jsonfile-4.0.0"
+ sources."jsonfile-6.0.1"
sources."jsprim-1.4.1"
sources."kind-of-6.0.3"
sources."kleur-3.0.3"
@@ -8479,15 +8464,15 @@ let
sources."levn-0.4.1"
sources."lines-and-columns-1.1.6"
sources."locate-path-5.0.0"
- sources."lodash-4.17.19"
+ sources."lodash-4.17.20"
sources."lodash.sortby-4.7.0"
sources."loose-envify-1.4.0"
- sources."lunr-2.3.8"
+ sources."lunr-2.3.9"
sources."make-dir-2.1.0"
sources."makeerror-1.0.11"
sources."map-cache-0.2.2"
sources."map-visit-1.0.0"
- sources."marked-1.0.0"
+ sources."marked-1.1.1"
sources."merge-stream-2.0.0"
sources."micromatch-3.1.10"
sources."mime-db-1.44.0"
@@ -8506,10 +8491,10 @@ let
sources."natural-compare-1.4.0"
sources."neo-async-2.6.2"
sources."nice-try-1.0.5"
- sources."node-abi-2.18.0"
+ sources."node-abi-2.19.1"
sources."node-int64-0.4.0"
sources."node-modules-regexp-1.0.0"
- (sources."node-notifier-7.0.2" // {
+ (sources."node-notifier-8.0.0" // {
dependencies = [
sources."semver-7.3.2"
sources."which-2.0.2"
@@ -8536,7 +8521,7 @@ let
sources."object.assign-4.1.0"
sources."object.pick-1.3.0"
sources."once-1.4.0"
- sources."onetime-5.1.1"
+ sources."onetime-5.1.2"
sources."optionator-0.9.1"
sources."p-each-series-2.1.0"
sources."p-finally-1.0.0"
@@ -8544,7 +8529,7 @@ let
sources."p-locate-4.1.0"
sources."p-try-2.2.0"
sources."parent-module-1.0.1"
- sources."parse-json-5.0.1"
+ sources."parse-json-5.1.0"
sources."parse5-5.1.1"
sources."pascalcase-0.1.1"
sources."path-dirname-1.0.2"
@@ -8715,7 +8700,7 @@ let
(sources."supports-hyperlinks-2.1.0" // {
dependencies = [
sources."has-flag-4.0.0"
- sources."supports-color-7.1.0"
+ sources."supports-color-7.2.0"
];
})
sources."symbol-tree-3.2.4"
@@ -8756,25 +8741,19 @@ let
sources."type-detect-4.0.8"
sources."type-fest-0.8.1"
sources."typedarray-to-buffer-3.1.5"
- sources."typedoc-0.17.8"
- sources."typedoc-default-themes-0.10.2"
- (sources."typedoc-plugin-markdown-2.4.0" // {
- dependencies = [
- sources."fs-extra-9.0.1"
- sources."jsonfile-6.0.1"
- sources."universalify-1.0.0"
- ];
- })
+ sources."typedoc-0.19.0"
+ sources."typedoc-default-themes-0.11.1"
+ sources."typedoc-plugin-markdown-2.4.2"
sources."typedoc-plugin-no-inherit-1.1.10"
sources."typedoc-plugin-sourcefile-url-1.0.6"
- sources."typescript-3.9.7"
- sources."uglify-js-3.10.1"
+ sources."typescript-4.0.2"
+ sources."uglify-js-3.10.2"
sources."unicode-canonical-property-names-ecmascript-1.0.4"
sources."unicode-match-property-ecmascript-1.0.4"
sources."unicode-match-property-value-ecmascript-1.2.0"
sources."unicode-property-aliases-ecmascript-1.1.0"
sources."union-value-1.0.1"
- sources."universalify-0.1.2"
+ sources."universalify-1.0.0"
(sources."unset-value-1.0.0" // {
dependencies = [
(sources."has-value-0.3.1" // {
@@ -8792,7 +8771,7 @@ let
sources."util-deprecate-1.0.2"
sources."uuid-8.3.0"
sources."v8-compile-cache-2.1.1"
- (sources."v8-to-istanbul-4.1.4" // {
+ (sources."v8-to-istanbul-5.0.1" // {
dependencies = [
sources."source-map-0.7.3"
];
@@ -8805,11 +8784,7 @@ let
sources."webidl-conversions-6.1.0"
sources."whatwg-encoding-1.0.5"
sources."whatwg-mimetype-2.3.0"
- (sources."whatwg-url-8.1.0" // {
- dependencies = [
- sources."webidl-conversions-5.0.0"
- ];
- })
+ sources."whatwg-url-8.2.1"
sources."which-1.3.1"
sources."which-module-2.0.0"
sources."which-pm-runs-1.0.0"
@@ -8847,18 +8822,16 @@ let
sources."yargs-parser-18.1.3"
];
})
- (sources."zigbee-herdsman-converters-12.0.161" // {
+ (sources."zigbee-herdsman-converters-12.0.178" // {
dependencies = [
sources."@babel/code-frame-7.10.4"
- (sources."@babel/core-7.11.1" // {
+ (sources."@babel/core-7.11.4" // {
dependencies = [
- sources."debug-4.1.1"
- sources."ms-2.1.2"
sources."semver-5.7.1"
sources."source-map-0.5.7"
];
})
- (sources."@babel/generator-7.11.0" // {
+ (sources."@babel/generator-7.11.4" // {
dependencies = [
sources."source-map-0.5.7"
];
@@ -8880,7 +8853,7 @@ let
sources."chalk-2.4.2"
];
})
- sources."@babel/parser-7.11.3"
+ sources."@babel/parser-7.11.4"
sources."@babel/plugin-syntax-async-generators-7.8.4"
sources."@babel/plugin-syntax-bigint-7.8.3"
sources."@babel/plugin-syntax-class-properties-7.10.4"
@@ -8895,9 +8868,7 @@ let
sources."@babel/template-7.10.4"
(sources."@babel/traverse-7.11.0" // {
dependencies = [
- sources."debug-4.1.1"
sources."globals-11.12.0"
- sources."ms-2.1.2"
];
})
sources."@babel/types-7.11.0"
@@ -8909,21 +8880,21 @@ let
];
})
sources."@istanbuljs/schema-0.1.2"
- sources."@jest/console-26.2.0"
- (sources."@jest/core-26.2.2" // {
+ sources."@jest/console-26.3.0"
+ (sources."@jest/core-26.4.2" // {
dependencies = [
sources."rimraf-3.0.2"
];
})
- sources."@jest/environment-26.2.0"
- sources."@jest/fake-timers-26.2.0"
- sources."@jest/globals-26.2.0"
- sources."@jest/reporters-26.2.2"
- sources."@jest/source-map-26.1.0"
- sources."@jest/test-result-26.2.0"
- sources."@jest/test-sequencer-26.2.2"
- sources."@jest/transform-26.2.2"
- sources."@jest/types-26.2.0"
+ sources."@jest/environment-26.3.0"
+ sources."@jest/fake-timers-26.3.0"
+ sources."@jest/globals-26.4.2"
+ sources."@jest/reporters-26.4.1"
+ sources."@jest/source-map-26.3.0"
+ sources."@jest/test-result-26.3.0"
+ sources."@jest/test-sequencer-26.4.2"
+ sources."@jest/transform-26.3.0"
+ sources."@jest/types-26.3.0"
sources."@sinonjs/commons-1.8.1"
sources."@sinonjs/fake-timers-6.0.1"
sources."@types/babel__core-7.1.9"
@@ -8934,33 +8905,23 @@ let
sources."@types/graceful-fs-4.1.3"
sources."@types/istanbul-lib-coverage-2.0.3"
sources."@types/istanbul-lib-report-3.0.0"
- sources."@types/istanbul-reports-1.1.2"
+ sources."@types/istanbul-reports-3.0.0"
sources."@types/json-schema-7.0.5"
- sources."@types/node-14.0.27"
+ sources."@types/node-14.6.2"
sources."@types/normalize-package-data-2.4.0"
- sources."@types/prettier-2.0.2"
+ sources."@types/prettier-2.1.0"
sources."@types/stack-utils-1.0.1"
sources."@types/yargs-15.0.5"
sources."@types/yargs-parser-15.0.0"
sources."@typescript-eslint/experimental-utils-2.34.0"
- (sources."@typescript-eslint/typescript-estree-2.34.0" // {
- dependencies = [
- sources."debug-4.1.1"
- sources."ms-2.1.2"
- ];
- })
+ sources."@typescript-eslint/typescript-estree-2.34.0"
sources."abab-2.0.4"
sources."acorn-7.4.0"
sources."acorn-globals-6.0.0"
sources."acorn-jsx-5.2.0"
sources."acorn-walk-7.2.0"
- (sources."agent-base-6.0.1" // {
- dependencies = [
- sources."debug-4.1.1"
- sources."ms-2.1.2"
- ];
- })
- sources."ajv-6.12.3"
+ sources."agent-base-6.0.1"
+ sources."ajv-6.12.4"
sources."ansi-colors-4.1.1"
(sources."ansi-escapes-4.3.1" // {
dependencies = [
@@ -8982,13 +8943,13 @@ let
sources."asynckit-0.4.0"
sources."atob-2.1.2"
sources."aws-sign2-0.7.0"
- sources."aws4-1.10.0"
- sources."axios-0.19.2"
- sources."babel-jest-26.2.2"
+ sources."aws4-1.10.1"
+ sources."axios-0.20.0"
+ sources."babel-jest-26.3.0"
sources."babel-plugin-istanbul-6.0.0"
sources."babel-plugin-jest-hoist-26.2.0"
sources."babel-preset-current-node-syntax-0.1.3"
- sources."babel-preset-jest-26.2.0"
+ sources."babel-preset-jest-26.3.0"
sources."balanced-match-1.0.0"
(sources."base-0.11.2" // {
dependencies = [
@@ -9000,7 +8961,7 @@ let
})
sources."base64-js-1.3.1"
sources."bcrypt-pbkdf-1.0.2"
- sources."bl-4.0.2"
+ sources."bl-4.0.3"
sources."brace-expansion-1.1.11"
sources."braces-3.0.2"
sources."browser-process-hrtime-1.0.0"
@@ -9018,7 +8979,7 @@ let
sources."color-convert-2.0.1"
sources."color-name-1.1.4"
sources."has-flag-4.0.0"
- sources."supports-color-7.1.0"
+ sources."supports-color-7.2.0"
];
})
sources."char-regex-1.0.2"
@@ -9059,7 +9020,7 @@ let
})
sources."dashdash-1.14.1"
sources."data-urls-2.0.0"
- sources."debug-3.1.0"
+ sources."debug-4.1.1"
sources."decamelize-1.2.0"
sources."decimal.js-10.2.0"
sources."decode-uri-component-0.2.0"
@@ -9074,7 +9035,7 @@ let
})
sources."delayed-stream-1.0.0"
sources."detect-newline-3.1.0"
- sources."diff-sequences-26.0.0"
+ sources."diff-sequences-26.3.0"
sources."doctrine-3.0.0"
(sources."domexception-2.0.1" // {
dependencies = [
@@ -9096,18 +9057,13 @@ let
sources."type-check-0.3.2"
];
})
- (sources."eslint-7.6.0" // {
- dependencies = [
- sources."debug-4.1.1"
- sources."ms-2.1.2"
- ];
- })
+ sources."eslint-7.7.0"
sources."eslint-config-google-0.14.0"
sources."eslint-plugin-jest-23.20.0"
sources."eslint-scope-5.1.0"
sources."eslint-utils-2.1.0"
sources."eslint-visitor-keys-1.3.0"
- sources."espree-7.2.0"
+ sources."espree-7.3.0"
sources."esprima-4.0.1"
(sources."esquery-1.3.1" // {
dependencies = [
@@ -9134,9 +9090,10 @@ let
sources."debug-2.6.9"
sources."define-property-0.2.5"
sources."extend-shallow-2.0.1"
+ sources."ms-2.0.0"
];
})
- (sources."expect-26.2.0" // {
+ (sources."expect-26.4.2" // {
dependencies = [
sources."ansi-styles-4.2.1"
sources."color-convert-2.0.1"
@@ -9168,7 +9125,7 @@ let
sources."find-up-4.1.0"
sources."flat-cache-2.0.1"
sources."flatted-2.0.2"
- sources."follow-redirects-1.5.10"
+ sources."follow-redirects-1.13.0"
sources."for-in-1.0.2"
sources."forever-agent-0.6.1"
sources."form-data-2.3.3"
@@ -9206,12 +9163,7 @@ let
sources."html-encoding-sniffer-2.0.1"
sources."html-escaper-2.0.2"
sources."http-signature-1.2.0"
- (sources."https-proxy-agent-5.0.0" // {
- dependencies = [
- sources."debug-4.1.1"
- sources."ms-2.1.2"
- ];
- })
+ sources."https-proxy-agent-5.0.0"
sources."human-signals-1.1.1"
sources."iconv-lite-0.4.24"
sources."ieee754-1.1.13"
@@ -9266,61 +9218,56 @@ let
(sources."istanbul-lib-report-3.0.0" // {
dependencies = [
sources."has-flag-4.0.0"
- sources."supports-color-7.1.0"
- ];
- })
- (sources."istanbul-lib-source-maps-4.0.0" // {
- dependencies = [
- sources."debug-4.1.1"
- sources."ms-2.1.2"
+ sources."supports-color-7.2.0"
];
})
+ sources."istanbul-lib-source-maps-4.0.0"
sources."istanbul-reports-3.0.2"
- (sources."jest-26.2.2" // {
+ (sources."jest-26.4.2" // {
dependencies = [
- sources."jest-cli-26.2.2"
+ sources."jest-cli-26.4.2"
];
})
- (sources."jest-changed-files-26.2.0" // {
+ (sources."jest-changed-files-26.3.0" // {
dependencies = [
sources."execa-4.0.3"
- sources."get-stream-5.1.0"
+ sources."get-stream-5.2.0"
sources."is-stream-2.0.0"
sources."npm-run-path-4.0.1"
];
})
- sources."jest-config-26.2.2"
- sources."jest-diff-26.2.0"
+ sources."jest-config-26.4.2"
+ sources."jest-diff-26.4.2"
sources."jest-docblock-26.0.0"
- sources."jest-each-26.2.0"
- sources."jest-environment-jsdom-26.2.0"
- sources."jest-environment-node-26.2.0"
- sources."jest-get-type-26.0.0"
- sources."jest-haste-map-26.2.2"
- sources."jest-jasmine2-26.2.2"
- sources."jest-leak-detector-26.2.0"
- sources."jest-matcher-utils-26.2.0"
- sources."jest-message-util-26.2.0"
- sources."jest-mock-26.2.0"
+ sources."jest-each-26.4.2"
+ sources."jest-environment-jsdom-26.3.0"
+ sources."jest-environment-node-26.3.0"
+ sources."jest-get-type-26.3.0"
+ sources."jest-haste-map-26.3.0"
+ sources."jest-jasmine2-26.4.2"
+ sources."jest-leak-detector-26.4.2"
+ sources."jest-matcher-utils-26.4.2"
+ sources."jest-message-util-26.3.0"
+ sources."jest-mock-26.3.0"
sources."jest-pnp-resolver-1.2.2"
sources."jest-regex-util-26.0.0"
- sources."jest-resolve-26.2.2"
- sources."jest-resolve-dependencies-26.2.2"
- sources."jest-runner-26.2.2"
- sources."jest-runtime-26.2.2"
- sources."jest-serializer-26.2.0"
- sources."jest-snapshot-26.2.2"
- sources."jest-util-26.2.0"
- (sources."jest-validate-26.2.0" // {
+ sources."jest-resolve-26.4.0"
+ sources."jest-resolve-dependencies-26.4.2"
+ sources."jest-runner-26.4.2"
+ sources."jest-runtime-26.4.2"
+ sources."jest-serializer-26.3.0"
+ sources."jest-snapshot-26.4.2"
+ sources."jest-util-26.3.0"
+ (sources."jest-validate-26.4.2" // {
dependencies = [
sources."camelcase-6.0.0"
];
})
- sources."jest-watcher-26.2.0"
- (sources."jest-worker-26.2.1" // {
+ sources."jest-watcher-26.3.0"
+ (sources."jest-worker-26.3.0" // {
dependencies = [
sources."has-flag-4.0.0"
- sources."supports-color-7.1.0"
+ sources."supports-color-7.2.0"
];
})
sources."js-tokens-4.0.0"
@@ -9328,7 +9275,7 @@ let
sources."jsbn-0.1.1"
sources."jsdom-16.4.0"
sources."jsesc-2.5.2"
- sources."json-parse-better-errors-1.0.2"
+ sources."json-parse-even-better-errors-2.3.0"
sources."json-schema-0.2.3"
sources."json-schema-traverse-0.4.1"
sources."json-stable-stringify-without-jsonify-1.0.1"
@@ -9341,7 +9288,7 @@ let
sources."levn-0.4.1"
sources."lines-and-columns-1.1.6"
sources."locate-path-5.0.0"
- sources."lodash-4.17.19"
+ sources."lodash-4.17.20"
sources."lodash.sortby-4.7.0"
(sources."make-dir-3.1.0" // {
dependencies = [
@@ -9364,13 +9311,13 @@ let
];
})
sources."mkdirp-0.5.5"
- sources."ms-2.0.0"
+ sources."ms-2.1.2"
sources."nanomatch-1.2.13"
sources."natural-compare-1.4.0"
sources."nice-try-1.0.5"
sources."node-int64-0.4.0"
sources."node-modules-regexp-1.0.0"
- sources."node-notifier-7.0.2"
+ sources."node-notifier-8.0.0"
(sources."normalize-package-data-2.5.0" // {
dependencies = [
sources."semver-5.7.1"
@@ -9393,7 +9340,7 @@ let
sources."object-visit-1.0.1"
sources."object.pick-1.3.0"
sources."once-1.4.0"
- sources."onetime-5.1.1"
+ sources."onetime-5.1.2"
sources."optionator-0.9.1"
sources."p-each-series-2.1.0"
sources."p-finally-1.0.0"
@@ -9401,7 +9348,7 @@ let
sources."p-locate-4.1.0"
sources."p-try-2.2.0"
sources."parent-module-1.0.1"
- sources."parse-json-5.0.1"
+ sources."parse-json-5.1.0"
sources."parse5-5.1.1"
sources."pascalcase-0.1.1"
sources."path-exists-4.0.0"
@@ -9414,7 +9361,7 @@ let
sources."pkg-dir-4.2.0"
sources."posix-character-classes-0.1.1"
sources."prelude-ls-1.2.1"
- (sources."pretty-format-26.2.0" // {
+ (sources."pretty-format-26.4.2" // {
dependencies = [
sources."ansi-styles-4.2.1"
sources."color-convert-2.0.1"
@@ -9511,6 +9458,7 @@ let
sources."debug-2.6.9"
sources."define-property-0.2.5"
sources."extend-shallow-2.0.1"
+ sources."ms-2.0.0"
sources."source-map-0.5.7"
];
})
@@ -9566,7 +9514,7 @@ let
(sources."supports-hyperlinks-2.1.0" // {
dependencies = [
sources."has-flag-4.0.0"
- sources."supports-color-7.1.0"
+ sources."supports-color-7.2.0"
];
})
sources."symbol-tree-3.2.4"
@@ -9612,7 +9560,7 @@ let
sources."util-deprecate-1.0.2"
sources."uuid-8.3.0"
sources."v8-compile-cache-2.1.1"
- (sources."v8-to-istanbul-4.1.4" // {
+ (sources."v8-to-istanbul-5.0.1" // {
dependencies = [
sources."source-map-0.7.3"
];
@@ -9625,11 +9573,7 @@ let
sources."webidl-conversions-6.1.0"
sources."whatwg-encoding-1.0.5"
sources."whatwg-mimetype-2.3.0"
- (sources."whatwg-url-8.1.0" // {
- dependencies = [
- sources."webidl-conversions-5.0.0"
- ];
- })
+ sources."whatwg-url-8.2.1"
sources."which-2.0.2"
sources."which-module-2.0.0"
sources."word-wrap-1.2.3"
diff --git a/pkgs/tools/admin/awscli2/default.nix b/pkgs/tools/admin/awscli2/default.nix
index c264c86260e..bcf0a6c4b0c 100644
--- a/pkgs/tools/admin/awscli2/default.nix
+++ b/pkgs/tools/admin/awscli2/default.nix
@@ -8,12 +8,12 @@ let
py = python3.override {
packageOverrides = self: super: {
botocore = super.botocore.overridePythonAttrs (oldAttrs: rec {
- version = "2.0.0dev40";
+ version = "2.0.0dev50";
src = fetchFromGitHub {
owner = "boto";
repo = "botocore";
- rev = "6b3f96c5e985597053850f0c2761d503d4c18bfe";
- sha256 = "1ffx86m3b592kj331800qbcz5f532z8kzf1wmd04i4bfiqvqn4h8";
+ rev = "e3dceaf9052cc8e221ea757207d5ba37054af2b8";
+ sha256 = "0fcf78il4z6gr4gg0jy2h5045ifkslsgldnk6zyvzcl5gykp8i2f";
};
});
prompt_toolkit = super.prompt_toolkit.overridePythonAttrs (oldAttrs: rec {
@@ -29,13 +29,13 @@ let
in
with py.pkgs; buildPythonApplication rec {
pname = "awscli2";
- version = "2.0.36"; # N.B: if you change this, change botocore to a matching version too
+ version = "2.0.46"; # N.B: if you change this, change botocore to a matching version too
src = fetchFromGitHub {
owner = "aws";
repo = "aws-cli";
rev = version;
- hash = "sha256:05c9lss7jg7bwaij1nxwg50grah68zamcixy8jiw3hpc1vdighql";
+ hash = "sha256:10bq4m7hsmj1m7nwr3jgpfvm8bx091vl2hig574r1bjmsi32vy58";
};
postPatch = ''
diff --git a/pkgs/tools/archivers/wimlib/default.nix b/pkgs/tools/archivers/wimlib/default.nix
index da01602cca4..51f75ee923d 100644
--- a/pkgs/tools/archivers/wimlib/default.nix
+++ b/pkgs/tools/archivers/wimlib/default.nix
@@ -8,7 +8,7 @@
}:
stdenv.mkDerivation rec {
- version = "1.13.1";
+ version = "1.13.2";
pname = "wimlib";
nativeBuildInputs = [ pkgconfig makeWrapper ];
@@ -16,7 +16,7 @@ stdenv.mkDerivation rec {
src = fetchurl {
url = "https://wimlib.net/downloads/${pname}-${version}.tar.gz";
- sha256 = "0pxgrpr3dr81rcf2jh71aiiq3v4anc5sj1nld18f2vhvbijbrx27";
+ sha256 = "0id9ym3hzij4kpdrk0sz3ijxp5r0z1md5jch83pml9hdy1zbx5bj";
};
preBuild = ''
diff --git a/pkgs/tools/audio/liquidsoap/full.nix b/pkgs/tools/audio/liquidsoap/full.nix
index 2aa01dfe073..a228c23651d 100644
--- a/pkgs/tools/audio/liquidsoap/full.nix
+++ b/pkgs/tools/audio/liquidsoap/full.nix
@@ -2,13 +2,18 @@
, ocamlPackages
, libao, portaudio, alsaLib, libpulseaudio, libjack2
, libsamplerate, libmad, taglib, lame, libogg
-, libvorbis, speex, libtheora, libopus, fdk_aac
+, libvorbis, speex, libtheora, libopus
, faad2, flac, ladspaH, ffmpeg, frei0r, dssi
}:
let
pname = "liquidsoap";
- version = "1.3.4";
+ version = "1.4.2";
+
+ ocaml-ffmpeg = fetchurl {
+ url = "https://github.com/savonet/ocaml-ffmpeg/releases/download/v0.4.2/ocaml-ffmpeg-0.4.2.tar.gz";
+ sha256 = "1lx5s1avds9fsh77828ifn71r2g89rxakhs8pp995a675phm9viw";
+ };
packageFilters = map (p: "-e '/ocaml-${p}/d'" )
[ "gstreamer" "shine" "aacplus" "schroedinger"
@@ -19,10 +24,17 @@ stdenv.mkDerivation {
name = "${pname}-full-${version}";
src = fetchurl {
- url = "https://github.com/savonet/${pname}/releases/download/${version}/${pname}-${version}-full.tar.bz2";
- sha256 = "11l1h42sljfxcdhddc8klya4bk99j7a1pndwnzvscb04pvmfmlk0";
+ url = "https://github.com/savonet/${pname}/releases/download/v${version}/${pname}-${version}-full.tar.gz";
+ sha256 = "0wkwnzj1a0vizv7sr1blwk5gzm2qi0n02ndijnq1i50cwrgxs1a4";
};
+ # Use ocaml-srt and ocaml-fdkaac from nixpkgs
+ # Use ocaml-ffmpeg at 0.4.2 for compatibility with ffmpeg 4.3
+ prePatch = ''
+ rm -rf ocaml-srt*/ ocaml-fdkaac*/ ocaml-ffmpeg*/
+ tar xzf ${ocaml-ffmpeg}
+ '';
+
preConfigure = /* we prefer system-wide libs */ ''
sed -i "s|gsed|sed|" Makefile
make bootstrap
@@ -42,10 +54,12 @@ stdenv.mkDerivation {
[ which ocamlPackages.ocaml ocamlPackages.findlib
libao portaudio alsaLib libpulseaudio libjack2
libsamplerate libmad taglib lame libogg
- libvorbis speex libtheora libopus fdk_aac
+ libvorbis speex libtheora libopus
faad2 flac ladspaH ffmpeg frei0r dssi
ocamlPackages.xmlm ocamlPackages.ocaml_pcre
ocamlPackages.camomile
+ ocamlPackages.fdkaac
+ ocamlPackages.srt ocamlPackages.sedlex_2 ocamlPackages.menhir
];
hardeningDisable = [ "format" "fortify" ];
diff --git a/pkgs/tools/misc/exa/default.nix b/pkgs/tools/misc/exa/default.nix
index 13c8b3f1d4f..fd6baadb685 100644
--- a/pkgs/tools/misc/exa/default.nix
+++ b/pkgs/tools/misc/exa/default.nix
@@ -57,6 +57,6 @@ buildRustPackage rec {
'';
homepage = "https://the.exa.website";
license = licenses.mit;
- maintainers = with maintainers; [ ehegnes lilyball globin zowoq ];
+ maintainers = with maintainers; [ ehegnes lilyball globin ];
};
}
diff --git a/pkgs/tools/misc/fx_cast/default.nix b/pkgs/tools/misc/fx_cast/default.nix
index ec977d48572..d24ff0e0516 100644
--- a/pkgs/tools/misc/fx_cast/default.nix
+++ b/pkgs/tools/misc/fx_cast/default.nix
@@ -2,11 +2,11 @@
stdenv.mkDerivation rec {
pname = "fx_cast_bridge";
- version = "0.0.6";
+ version = "0.0.7";
src = fetchurl {
url = "https://github.com/hensm/fx_cast/releases/download/v${version}/${pname}-${version}-x64.deb";
- sha256 = "1mjpwd27b0cpigz4cc2mdl97d78rj5ikn2bqfdic50lqjciaqi1b";
+ sha256 = "0kd58vzsq1qzl7qsh1qv25ylxvr5y37li03gjb48x4vhd85slzz5";
};
nativeBuildInputs = [ dpkg ];
diff --git a/pkgs/tools/misc/lesspipe/default.nix b/pkgs/tools/misc/lesspipe/default.nix
index 231e660f582..8a13ef5dfd8 100644
--- a/pkgs/tools/misc/lesspipe/default.nix
+++ b/pkgs/tools/misc/lesspipe/default.nix
@@ -2,7 +2,7 @@
stdenv.mkDerivation rec {
pname = "lesspipe";
- version = "1.84";
+ version = "1.85";
buildInputs = [ perl ];
preConfigure = "patchShebangs .";
@@ -11,7 +11,7 @@ stdenv.mkDerivation rec {
owner = "wofr06";
repo = "lesspipe";
rev = version;
- sha256 = "124ffhzrikr88ab14rk6753n8adxijpmg7q3zx7nmqc52wpkfd8q";
+ sha256 = "1v1jdkdq1phc93gdr6mjlk98gipxrkkq4bj8kks0kfdvjgdwkdaa";
};
patches = [
diff --git a/pkgs/tools/misc/topgrade/default.nix b/pkgs/tools/misc/topgrade/default.nix
index f009de0a6fc..b7b38766db3 100644
--- a/pkgs/tools/misc/topgrade/default.nix
+++ b/pkgs/tools/misc/topgrade/default.nix
@@ -2,16 +2,16 @@
rustPlatform.buildRustPackage rec {
pname = "topgrade";
- version = "5.5.0";
+ version = "5.7.0";
src = fetchFromGitHub {
owner = "r-darwish";
repo = pname;
rev = "v${version}";
- sha256 = "1adx029cq30g0qnrvdq2di8bpadzdxrpbsqchxfsda8zg6cprh1j";
+ sha256 = "0nxqi2rykfxhvn8jzprklsc47iilxp1pmm2f17ikfyf5dgi69whb";
};
- cargoSha256 = "0jpjn6sb8bkwnq7np487hb8bkm6rv84mihmqwy3ymgdzlqcng6sk";
+ cargoSha256 = "05afmz2n006331hc8yi2mq9kj574xi1iq6gr983jj75ix7n40rgg";
buildInputs = lib.optional stdenv.isDarwin Foundation;
diff --git a/pkgs/tools/networking/hping/default.nix b/pkgs/tools/networking/hping/default.nix
index 1ef02b599e8..daa0ba38e9e 100644
--- a/pkgs/tools/networking/hping/default.nix
+++ b/pkgs/tools/networking/hping/default.nix
@@ -1,50 +1,41 @@
-{ stdenv, fetchurl, libpcap, tcl }:
+{ stdenv, fetchFromGitHub, libpcap, withTcl ? true, tcl }:
stdenv.mkDerivation rec {
pname = "hping";
- version = "20051105";
+ version = "2014-12-26";
- src = fetchurl {
- url = "http://www.hping.org/hping3-${version}.tar.gz";
- sha256 = "1s5f9xd1msx05ibhwaw37jmc7l9fahcxxslqz8a83p0i5ak739pm";
+ src = fetchFromGitHub {
+ owner = "antirez";
+ repo = pname;
+ rev = "3547c7691742c6eaa31f8402e0ccbb81387c1b99"; # there are no tags/releases
+ sha256 = "0y0n1ybij3yg9lfgzcwfmjz1sjg913zcqrv391xx83dm0j80sdpb";
};
- buildInputs = [ libpcap tcl ];
+ buildInputs = [ libpcap ] ++ stdenv.lib.optional withTcl tcl;
- configurePhase = ''
- MANPATH="$out/share/man" ./configure
- sed -i -r -e 's|/usr(/s?bin)|'"$out"'\1|g' Makefile
- '';
-
- TCLSH = "${tcl}/bin/tclsh";
-
- prePatch = ''
- sed -i -e '/#if.*defined(__i386__)/a \
- || defined(__x86_64__) \\
- ' bytesex.h
-
- sed -i -e 's|#include.*net/bpf.h|#include |' \
+ postPatch = ''
+ substituteInPlace Makefile.in --replace "gcc" "$CC"
+ substituteInPlace version.c --replace "RELEASE_DATE" "\"$version\""
+ '' + stdenv.lib.optionalString stdenv.isLinux ''
+ sed -i -e 's|#include |#include |' \
libpcap_stuff.c script.c
-
- sed -i -r -e 's|"(/usr/(local/)?)?bin/"|"${tcl}/bin"|g' \
- -e 's!/usr/(local/)?(lib|include)!${tcl}/\2!g' \
- configure
'';
- preInstall = ''
- mkdir -vp "$out/sbin" "$out/share/man/man8"
- '';
+ configureFlags = [ (if withTcl then "TCLSH=${tcl}/bin/tclsh" else "--no-tcl") ];
- postInstall = ''
- ln -vs hping3.8.gz "$out/share/man/man8/hping.8.gz"
- ln -vs hping3.8.gz "$out/share/man/man8/hping2.8.gz"
+ installPhase = ''
+ install -Dm755 hping3 -t $out/sbin
+ ln -s $out/sbin/hping3 $out/sbin/hping
+ ln -s $out/sbin/hping3 $out/sbin/hping2
+ install -Dm644 docs/hping3.8 -t $out/share/man/man8
+ ln -s hping3.8.gz $out/share/man/man8/hping.8.gz
+ ln -s hping3.8.gz $out/share/man/man8/hping2.8.gz
'';
meta = with stdenv.lib; {
description = "A command-line oriented TCP/IP packet assembler/analyzer";
homepage = "http://www.hping.org/";
- license = licenses.gpl2;
- platforms = platforms.all;
- broken = stdenv.isDarwin;
+ license = licenses.gpl2Only;
+ platforms = platforms.unix;
};
}
diff --git a/pkgs/tools/networking/keepalived/default.nix b/pkgs/tools/networking/keepalived/default.nix
index 076953161a3..11ebe228be8 100644
--- a/pkgs/tools/networking/keepalived/default.nix
+++ b/pkgs/tools/networking/keepalived/default.nix
@@ -4,13 +4,13 @@
stdenv.mkDerivation rec {
pname = "keepalived";
- version = "2.0.20";
+ version = "2.1.3";
src = fetchFromGitHub {
owner = "acassen";
repo = "keepalived";
rev = "v${version}";
- sha256 = "0ijzw56hbac24dhrgjd0hjgf45072imyzq3mcgsirdl3xqjc6x12";
+ sha256 = "1zdfvicpll7a5iw6p12pmdcg8y30mr0j5miycn0nhjp8yzi9hdc5";
};
buildInputs = [
diff --git a/pkgs/tools/security/minica/default.nix b/pkgs/tools/security/minica/default.nix
new file mode 100644
index 00000000000..20ae3878a71
--- /dev/null
+++ b/pkgs/tools/security/minica/default.nix
@@ -0,0 +1,34 @@
+{ lib, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+ pname = "minica";
+ version = "1.0.2";
+
+ goPackagePath = "github.com/jsha/minica";
+
+ src = fetchFromGitHub {
+ owner = "jsha";
+ repo = "minica";
+ rev = "v${version}";
+ sha256 = "18518wp3dcjhf3mdkg5iwxqr3326n6jwcnqhyibphnb2a58ap7ny";
+ };
+
+ buildFlagsArray = ''
+ -ldflags=
+ -X main.BuildVersion=${version}
+ '';
+
+ meta = with lib; {
+ description = "A simple tool for generating self signed certificates.";
+ longDescription = ''
+ Minica is a simple CA intended for use in situations where the CA
+ operator also operates each host where a certificate will be used. It
+ automatically generates both a key and a certificate when asked to
+ produce a certificate.
+ '';
+ homepage = "https://github.com/jsha/minica/";
+ license = licenses.mit;
+ maintainers = with maintainers; [ m1cr0man ];
+ platforms = platforms.linux ++ platforms.darwin;
+ };
+}
diff --git a/pkgs/tools/text/miller/default.nix b/pkgs/tools/text/miller/default.nix
index 4137fd4d278..28f2c54729b 100644
--- a/pkgs/tools/text/miller/default.nix
+++ b/pkgs/tools/text/miller/default.nix
@@ -3,13 +3,13 @@
stdenv.mkDerivation rec {
pname = "miller";
- version = "5.9.0";
+ version = "5.9.1";
src = fetchFromGitHub {
owner = "johnkerl";
repo = "miller";
rev = "v${version}";
- sha256 = "14fi6jlqb980qjcpb90fk85cglskq9b9i2k0216bhpvjmagywgp7";
+ sha256 = "1i9bcpfjnl2yjnfmf0ar1l62zwq01ph0yylz0dby8k2l7cvq5ci6";
};
nativeBuildInputs = [ autoreconfHook flex libtool ];
diff --git a/pkgs/tools/text/ugrep/default.nix b/pkgs/tools/text/ugrep/default.nix
index 3e225ec3567..6f44c360267 100644
--- a/pkgs/tools/text/ugrep/default.nix
+++ b/pkgs/tools/text/ugrep/default.nix
@@ -2,13 +2,13 @@
stdenv.mkDerivation rec {
pname = "ugrep";
- version = "2.5.3";
+ version = "2.5.5";
src = fetchFromGitHub {
owner = "Genivia";
repo = pname;
rev = "v${version}";
- sha256 = "16ly1dz8wxnjk6kc88dl2x0ijmzw5v87fhai9fnardwfmycn7ivc";
+ sha256 = "0ba9h0m9c28rllym1djij3b97k4rj06nsgajmbxg5mpxfzplgxy2";
};
buildInputs = [ boost bzip2 lz4 pcre2 xz zlib ];
diff --git a/pkgs/tools/text/vale/default.nix b/pkgs/tools/text/vale/default.nix
index 69390b4d3d3..8a63d82eacb 100644
--- a/pkgs/tools/text/vale/default.nix
+++ b/pkgs/tools/text/vale/default.nix
@@ -2,7 +2,7 @@
buildGoModule rec {
pname = "vale";
- version = "2.3.3";
+ version = "2.3.4";
subPackages = [ "." ];
outputs = [ "out" "data" ];
@@ -11,7 +11,7 @@ buildGoModule rec {
owner = "errata-ai";
repo = "vale";
rev = "v${version}";
- sha256 = "13b565l87nm3gpxxhw1bpjx7yqcgf5124k3wh7r149z38xyqc3wk";
+ sha256 = "0vk7kk2a2891vm46lss8q2893n2zdirlicac2f3xfkrbb5lhkicd";
};
vendorSha256 = null;
diff --git a/pkgs/tools/text/vgrep/default.nix b/pkgs/tools/text/vgrep/default.nix
new file mode 100644
index 00000000000..12880b2e4ec
--- /dev/null
+++ b/pkgs/tools/text/vgrep/default.nix
@@ -0,0 +1,24 @@
+{ lib, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+ pname = "vgrep";
+ version = "2.4.0";
+
+ src = fetchFromGitHub {
+ owner = "vrothberg";
+ repo = pname;
+ rev = "v${version}";
+ sha256 = "109j04my2xib8m52a0337996a27nvfgzackpg20zs3nzn66dmvb7";
+ };
+
+ vendorSha256 = null;
+
+ buildFlagsArray = [ "-ldflags=-s -w -X main.version=${version}" ];
+
+ meta = with lib; {
+ description = "User-friendly pager for grep/git-grep/ripgrep";
+ homepage = "https://github.com/vrothberg/vgrep";
+ license = licenses.gpl3Only;
+ maintainers = with maintainers; [ zowoq ];
+ };
+}
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index a43ecde5ce2..e8de40a13e7 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -121,7 +121,9 @@ in
autoPatchelfHook = makeSetupHook { name = "auto-patchelf-hook"; }
../build-support/setup-hooks/auto-patchelf.sh;
- appimageTools = callPackage ../build-support/appimage { };
+ appimageTools = callPackage ../build-support/appimage {
+ buildFHSUserEnv = buildFHSUserEnvBubblewrap;
+ };
appindicator-sharp = callPackage ../development/libraries/appindicator-sharp { };
@@ -4855,7 +4857,6 @@ in
liquidsoap = callPackage ../tools/audio/liquidsoap/full.nix {
ffmpeg = ffmpeg-full;
- ocamlPackages = ocaml-ng.ocamlPackages_4_07;
};
lksctp-tools = callPackage ../os-specific/linux/lksctp-tools { };
@@ -4959,6 +4960,8 @@ in
minergate-cli = callPackage ../applications/misc/minergate-cli { };
+ minica = callPackage ../tools/security/minica { };
+
minidlna = callPackage ../tools/networking/minidlna { };
minisign = callPackage ../tools/security/minisign { };
@@ -7634,6 +7637,8 @@ in
verilog = callPackage ../applications/science/electronics/verilog {};
+ vgrep = callPackage ../tools/text/vgrep { };
+
vhd2vl = callPackage ../applications/science/electronics/vhd2vl { };
video2midi = callPackage ../tools/audio/video2midi {
@@ -9440,6 +9445,8 @@ in
mozart2-binary = callPackage ../development/compilers/mozart/binary.nix { };
nim = callPackage ../development/compilers/nim { };
+ nim-unwrapped = nim.unwrapped;
+ nim-stdlib = nim.stdlib;
nrpl = callPackage ../development/tools/nrpl { };
neko = callPackage ../development/compilers/neko { };
@@ -19698,7 +19705,11 @@ in
calculix = callPackage ../applications/science/math/calculix {};
- calibre = libsForQt5.callPackage ../applications/misc/calibre { };
+ calibre-py2 = libsForQt5.callPackage ../applications/misc/calibre { pythonPackages = python2Packages; };
+
+ calibre-py3 = libsForQt5.callPackage ../applications/misc/calibre { pythonPackages = python3Packages; };
+
+ calibre = calibre-py3;
calligra = libsForQt5.callPackage ../applications/office/calligra {
inherit (kdeApplications) akonadi-calendar akonadi-contacts;