Merge branch 'master' into staging-next

This commit is contained in:
Vladimír Čunát 2021-08-25 19:41:28 +02:00
commit 70e05c1003
No known key found for this signature in database
GPG Key ID: E747DF1F9575A3AA
220 changed files with 5638 additions and 3745 deletions

@ -6,6 +6,23 @@ This contains instructions on how to package javascript applications. For instru
The various tools available will be listed in the [tools-overview](#javascript-tools-overview). Some general principles for packaging will follow. Finally some tool specific instructions will be given.
## Getting unstuck / finding code examples
If you find you are lacking inspiration for packing javascript applications, the links below might prove useful.
Searching online for prior art can be helpful if you are running into solved problems.
### Github
- Searching Nix files for `mkYarnPackage`: <https://github.com/search?q=mkYarnPackage+language%3ANix&type=code>
- Searching just `flake.nix` files for `mkYarnPackage`: <https://github.com/search?q=mkYarnPackage+filename%3Aflake.nix&type=code>
### Gitlab
- Searching Nix files for `mkYarnPackage`: <https://gitlab.com/search?scope=blobs&search=mkYarnPackage+extension%3Anix>
- Searching just `flake.nix` files for `mkYarnPackage`: <https://gitlab.com/search?scope=blobs&search=mkYarnPackage+filename%3Aflake.nix>
## Tools overview {#javascript-tools-overview}
## General principles {#javascript-general-principles}
@ -32,7 +49,7 @@ Using a different tool forces to commit a lock file to the repository. Those fil
Exceptions to this rule are:
- when you encounter one of the bugs from a nix tool. In each of the tool specific instructions, known problems will be detailed. If you have a problem with a particular tool, then it's best to try another tool, even if this means you will have to recreate a lock file and commit it to nixpkgs. In general yarn2nix has less known problems and so a simple search in nixpkgs will reveal many yarn.lock files commited
- when you encounter one of the bugs from a nix tool. In each of the tool specific instructions, known problems will be detailed. If you have a problem with a particular tool, then it's best to try another tool, even if this means you will have to recreate a lock file and commit it to nixpkgs. In general yarn2nix has less known problems and so a simple search in nixpkgs will reveal many yarn.lock files committed
- Some lock files contain particular version of a package that has been pulled off npm for some reason. In that case, you can recreate upstream lock (by removing the original and `npm install`, `yarn`, ...) and commit this to nixpkgs.
- The only tool that supports workspaces (a feature of npm that helps manage sub-directories with different package.json from a single top level package.json) is yarn2nix. If upstream has workspaces you should try yarn2nix.
@ -106,15 +123,15 @@ requires `node-gyp-build`, so [we override](https://github.com/NixOS/nixpkgs/blo
To add a package from NPM to nixpkgs:
1. Modify `pkgs/development/node-packages/node-packages.json` to add, update
1. Modify `pkgs/development/node-packages/node-packages.json` to add, update
or remove package entries to have it included in `nodePackages` and
`nodePackages_latest`.
2. Run the script: `cd pkgs/development/node-packages && ./generate.sh`.
3. Build your new package to test your changes:
2. Run the script: `cd pkgs/development/node-packages && ./generate.sh`.
3. Build your new package to test your changes:
`cd /path/to/nixpkgs && nix-build -A nodePackages.<new-or-updated-package>`.
To build against the latest stable Current Node.js version (e.g. 14.x):
`nix-build -A nodePackages_latest.<new-or-updated-package>`
4. Add and commit all modified and generated files.
4. Add and commit all modified and generated files.
For more information about the generation process, consult the
[README.md](https://github.com/svanderburg/node2nix) file of the `node2nix`
@ -132,7 +149,7 @@ you will need to generate a nix expression for the dependencies
- Most probably you will need the `--development` to include the `devDependencies`
so the command will most likely be
`node2nix --developmennt -l package-lock.json`
`node2nix --development -l package-lock.json`
[link to the doc in the repo](https://github.com/svanderburg/node2nix)
@ -153,7 +170,7 @@ you will need at least a yarn.lock and yarn.nix file
#### mkYarnPackage {#javascript-yarn2nix-mkYarnPackage}
this will by default try to generate a binary. For package only generating static assets (Svelte, Vue, React...), you will need to explicitely override the build step with your instructions. It's important to use the `--offline` flag. For example if you script is `"build": "something"` in package.json use
this will by default try to generate a binary. For package only generating static assets (Svelte, Vue, React...), you will need to explicitly override the build step with your instructions. It's important to use the `--offline` flag. For example if you script is `"build": "something"` in package.json use
```nix
buildPhase = ''
@ -178,17 +195,53 @@ configurePhase = "ln -s $node_modules node_modules";
this will generate a derivation including the node_modules. If you have to build a derivation for an integrated web framework (rails, phoenix..), this is probably the easiest way. [Plausible](https://github.com/NixOS/nixpkgs/blob/master/pkgs/servers/web-apps/plausible/default.nix#L39) offers a good example of how to do this.
#### Overriding dependency behavior
In the `mkYarnPackage` record the property `pkgConfig` can be used to override packages when you encounter problems building.
For instance, say your package is throwing errors when trying to invoke node-sass: `ENOENT: no such file or directory, scandir '/build/source/node_modules/node-sass/vendor'`
To fix this we will specify different versions of build inputs to use, as well as some post install steps to get the software built the way we want:
```nix
mkYarnPackage rec {
pkgConfig = {
node-sass = {
buildInputs = with final;[ python libsass pkg-config ];
postInstall = ''
LIBSASS_EXT=auto yarn --offline run build
rm build/config.gypi
'';
};
};
}
```
#### Pitfalls {#javascript-yarn2nix-pitfalls}
- if version is missing from upstream package.json, yarn will silently install nothing. In that case, you will need to override package.json as shown in the [package.json section](#javascript-upstream-package-json)
- having trouble with node-gyp? Try adding these lines to the `yarnPreBuild` steps:
```nix
yarnPreBuild = ''
mkdir -p $HOME/.node-gyp/${nodejs.version}
echo 9 > $HOME/.node-gyp/${nodejs.version}/installVersion
ln -sfv ${nodejs}/include $HOME/.node-gyp/${nodejs.version}
export npm_config_nodedir=${nodejs}
'';
```
- The `echo 9` steps comes from this answer: <https://stackoverflow.com/a/49139496>
- Exporting the headers in `npm_config_nodedir` comes from this issue: <https://github.com/nodejs/node-gyp/issues/1191#issuecomment-301243919>
## Outside of nixpkgs {#javascript-outside-nixpkgs}
There are some other options available that can't be used inside nixpkgs. Those other options are written in nix. Importing them in nixpkgs will require moving the source code into nixpkgs. Using [Import From Derivation](https://nixos.wiki/wiki/Import_From_Derivation) is not allowed in hydra at present. If you are packaging something outside nixpkgs, those can be considered
### npmlock2nix {#javascript-npmlock2nix}
[npmlock2nix](https://github.com/nix-community/npmlock2nix) aims at building node_modules without code generation. It hasn't reached v1 yet, the api might be suject to change.
[npmlock2nix](https://github.com/nix-community/npmlock2nix) aims at building node_modules without code generation. It hasn't reached v1 yet, the api might be subject to change.
#### Pitfalls {#javascript-npmlock2nix-pitfalls}

@ -5,7 +5,7 @@ let
inherit (builtins) head tail length;
inherit (lib.trivial) and;
inherit (lib.strings) concatStringsSep sanitizeDerivationName;
inherit (lib.lists) fold foldr concatMap concatLists;
inherit (lib.lists) foldr foldl' concatMap concatLists elemAt;
in
rec {
@ -55,10 +55,13 @@ rec {
=> { a = { b = 3; }; }
*/
setAttrByPath = attrPath: value:
if attrPath == [] then value
else listToAttrs
[ { name = head attrPath; value = setAttrByPath (tail attrPath) value; } ];
let
len = length attrPath;
atDepth = n:
if n == len
then value
else { ${elemAt attrPath n} = atDepth (n + 1); };
in atDepth 0;
/* Like `attrByPath' without a default value. If it doesn't find the
path it will throw.
@ -195,7 +198,7 @@ rec {
]
*/
cartesianProductOfSets = attrsOfLists:
lib.foldl' (listOfAttrs: attrName:
foldl' (listOfAttrs: attrName:
concatMap (attrs:
map (listValue: attrs // { ${attrName} = listValue; }) attrsOfLists.${attrName}
) listOfAttrs

@ -11355,6 +11355,12 @@
githubId = 335406;
name = "David Asabina";
};
vidister = {
email = "v@vidister.de";
github = "vidister";
githubId = 11413574;
name = "Fiona Weber";
};
vifino = {
email = "vifino@tty.sh";
github = "vifino";

@ -182,7 +182,7 @@
</para>
</listitem>
</itemizedlist>
<itemizedlist spacing="compact">
<itemizedlist>
<listitem>
<para>
<link xlink:href="https://docs.fluidd.xyz/">fluidd</link>, a
@ -191,6 +191,22 @@
<link linkend="opt-services.fluidd.enable">fluidd</link>.
</para>
</listitem>
<listitem>
<para>
<link xlink:href="https://github.com/earnestly/sx">sx</link>,
a simple alternative to both xinit and startx for starting a
Xorg server. Available as
<link linkend="opt-services.xserver.displayManager.sx.enable">services.xserver.displayManager.sx</link>
</para>
</listitem>
<listitem>
<para>
<link xlink:href="https://postfixadmin.sourceforge.io/">postfixadmin</link>,
a web based virtual user administration interface for Postfix
mail servers. Available as
<link linkend="opt-services.postfixadmin.enable">postfixadmin</link>.
</para>
</listitem>
</itemizedlist>
</section>
<section xml:id="sec-release-21.11-incompatibilities">
@ -847,6 +863,15 @@ Superuser created successfully.
release instead of 1.0.x
</para>
</listitem>
<listitem>
<para>
If <literal>exfat</literal> is included in
<literal>boot.supportedFilesystems</literal> and when using
kernel 5.7 or later, the <literal>exfatprogs</literal>
user-space utilities are used instead of
<literal>exfat</literal>.
</para>
</listitem>
</itemizedlist>
</section>
<section xml:id="sec-release-21.11-notable-changes">
@ -1047,6 +1072,13 @@ Superuser created successfully.
sign OCSP responses and server certificates.
</para>
</listitem>
<listitem>
<para>
<literal>lib.formats.yaml</literal>s
<literal>generate</literal> will not generate JSON anymore,
but instead use more of the YAML-specific syntax.
</para>
</listitem>
<listitem>
<para>
MariaDB was upgraded from 10.5.x to 10.6.x. Please read the

@ -58,6 +58,10 @@ subsonic-compatible api. Available as [navidrome](#opt-services.navidrome.enable
- [fluidd](https://docs.fluidd.xyz/), a Klipper web interface for managing 3d printers using moonraker. Available as [fluidd](#opt-services.fluidd.enable).
- [sx](https://github.com/earnestly/sx), a simple alternative to both xinit and startx for starting a Xorg server. Available as [services.xserver.displayManager.sx](#opt-services.xserver.displayManager.sx.enable)
- [postfixadmin](https://postfixadmin.sourceforge.io/), a web based virtual user administration interface for Postfix mail servers. Available as [postfixadmin](#opt-services.postfixadmin.enable).
## Backward Incompatibilities {#sec-release-21.11-incompatibilities}
- The `paperless` module and package have been removed. All users should migrate to the
@ -246,6 +250,9 @@ To be able to access the web UI this port needs to be opened in the firewall.
- The `nomad` package now defaults to a 1.1.x release instead of 1.0.x
- If `exfat` is included in `boot.supportedFilesystems` and when using kernel 5.7
or later, the `exfatprogs` user-space utilities are used instead of `exfat`.
## Other Notable Changes {#sec-release-21.11-notable-changes}
- The linux kernel package infrastructure was moved out of `all-packages.nix`, and restructured. Linux related functions and attributes now live under the `pkgs.linuxKernel` attribute set.
@ -299,6 +306,8 @@ To be able to access the web UI this port needs to be opened in the firewall.
- Nginx will use the value of `sslTrustedCertificate` if provided for a virtual host, even if `enableACME` is set. This is useful for providers not using the same certificate to sign OCSP responses and server certificates.
- `lib.formats.yaml`'s `generate` will not generate JSON anymore, but instead use more of the YAML-specific syntax.
- MariaDB was upgraded from 10.5.x to 10.6.x. Please read the [upstream release notes](https://mariadb.com/kb/en/changes-improvements-in-mariadb-106/) for changes and upgrade instructions.
- The MariaDB C client library, also known as libmysqlclient or mariadb-connector-c, was upgraded from 3.1.x to 3.2.x. While this should hopefully not have any impact, this upgrade comes with some changes to default behavior, so you might want to review the [upstream release notes](https://mariadb.com/kb/en/changes-and-improvements-in-mariadb-connector-c-32/).

@ -0,0 +1,333 @@
# Note: This is a private API, internal to NixOS. Its interface is subject
# to change without notice.
#
# The result of this builder is two disk images:
#
# * `boot` - a small disk formatted with FAT to be used for /boot. FAT is
# chosen to support EFI.
# * `root` - a larger disk with a zpool taking the entire disk.
#
# This two-disk approach is taken to satisfy ZFS's requirements for
# autoexpand.
#
# # Why doesn't autoexpand work with ZFS in a partition?
#
# When ZFS owns the whole disk doesnt really use a partition: it has
# a marker partition at the start and a marker partition at the end of
# the disk.
#
# If ZFS is constrained to a partition, ZFS leaves expanding the partition
# up to the user. Obviously, the user may not choose to do so.
#
# Once the user expands the partition, calling zpool online -e expands the
# vdev to use the whole partition. It doesnt happen automatically
# presumably because zed doesnt get an event saying its partition grew,
# whereas it can and does get an event saying the whole disk it is on is
# now larger.
{ lib
, pkgs
, # The NixOS configuration to be installed onto the disk image.
config
, # size of the FAT boot disk, in megabytes.
bootSize ? 1024
, # The size of the root disk, in megabytes.
rootSize ? 2048
, # The name of the ZFS pool
rootPoolName ? "tank"
, # zpool properties
rootPoolProperties ? {
autoexpand = "on";
}
, # pool-wide filesystem properties
rootPoolFilesystemProperties ? {
acltype = "posixacl";
atime = "off";
compression = "on";
mountpoint = "legacy";
xattr = "sa";
}
, # datasets, with per-attribute options:
# mount: (optional) mount point in the VM
# properties: (optional) ZFS properties on the dataset, like filesystemProperties
# Notes:
# 1. datasets will be created from shorter to longer names as a simple topo-sort
# 2. you should define a root's dataset's mount for `/`
datasets ? { }
, # The files and directories to be placed in the target file system.
# This is a list of attribute sets {source, target} where `source'
# is the file system object (regular file or directory) to be
# grafted in the file system at path `target'.
contents ? []
, # The initial NixOS configuration file to be copied to
# /etc/nixos/configuration.nix. This configuration will be embedded
# inside a configuration which includes the described ZFS fileSystems.
configFile ? null
, # Shell code executed after the VM has finished.
postVM ? ""
, name ? "nixos-disk-image"
, # Disk image format, one of qcow2, qcow2-compressed, vdi, vpc, raw.
format ? "raw"
, # Include a copy of Nixpkgs in the disk image
includeChannel ? true
}:
let
formatOpt = if format == "qcow2-compressed" then "qcow2" else format;
compress = lib.optionalString (format == "qcow2-compressed") "-c";
filenameSuffix = "." + {
qcow2 = "qcow2";
vdi = "vdi";
vpc = "vhd";
raw = "img";
}.${formatOpt} or formatOpt;
bootFilename = "nixos.boot${filenameSuffix}";
rootFilename = "nixos.root${filenameSuffix}";
# FIXME: merge with channel.nix / make-channel.nix.
channelSources =
let
nixpkgs = lib.cleanSource pkgs.path;
in
pkgs.runCommand "nixos-${config.system.nixos.version}" {} ''
mkdir -p $out
cp -prd ${nixpkgs.outPath} $out/nixos
chmod -R u+w $out/nixos
if [ ! -e $out/nixos/nixpkgs ]; then
ln -s . $out/nixos/nixpkgs
fi
rm -rf $out/nixos/.git
echo -n ${config.system.nixos.versionSuffix} > $out/nixos/.version-suffix
'';
closureInfo = pkgs.closureInfo {
rootPaths = [ config.system.build.toplevel ]
++ (lib.optional includeChannel channelSources);
};
modulesTree = pkgs.aggregateModules
(with config.boot.kernelPackages; [ kernel zfs ]);
tools = lib.makeBinPath (
with pkgs; [
config.system.build.nixos-enter
config.system.build.nixos-install
dosfstools
e2fsprogs
gptfdisk
nix
parted
utillinux
zfs
]
);
hasDefinedMount = disk: ((disk.mount or null) != null);
stringifyProperties = prefix: properties: lib.concatStringsSep " \\\n" (
lib.mapAttrsToList
(
property: value: "${prefix} ${lib.escapeShellArg property}=${lib.escapeShellArg value}"
)
properties
);
featuresToProperties = features:
lib.listToAttrs
(builtins.map (feature: {
name = "feature@${feature}";
value = "enabled";
}) features);
createDatasets =
let
datasetlist = lib.mapAttrsToList lib.nameValuePair datasets;
sorted = lib.sort (left: right: (lib.stringLength left.name) < (lib.stringLength right.name)) datasetlist;
cmd = { name, value }:
let
properties = stringifyProperties "-o" (value.properties or {});
in
"zfs create -p ${properties} ${name}";
in
lib.concatMapStringsSep "\n" cmd sorted;
mountDatasets =
let
datasetlist = lib.mapAttrsToList lib.nameValuePair datasets;
mounts = lib.filter ({ value, ... }: hasDefinedMount value) datasetlist;
sorted = lib.sort (left: right: (lib.stringLength left.value.mount) < (lib.stringLength right.value.mount)) mounts;
cmd = { name, value }:
''
mkdir -p /mnt${lib.escapeShellArg value.mount}
mount -t zfs ${name} /mnt${lib.escapeShellArg value.mount}
'';
in
lib.concatMapStringsSep "\n" cmd sorted;
unmountDatasets =
let
datasetlist = lib.mapAttrsToList lib.nameValuePair datasets;
mounts = lib.filter ({ value, ... }: hasDefinedMount value) datasetlist;
sorted = lib.sort (left: right: (lib.stringLength left.value.mount) > (lib.stringLength right.value.mount)) mounts;
cmd = { name, value }:
''
umount /mnt${lib.escapeShellArg value.mount}
'';
in
lib.concatMapStringsSep "\n" cmd sorted;
fileSystemsCfgFile =
let
mountable = lib.filterAttrs (_: value: hasDefinedMount value) datasets;
in
pkgs.runCommand "filesystem-config.nix" {
buildInputs = with pkgs; [ jq nixpkgs-fmt ];
filesystems = builtins.toJSON {
fileSystems = lib.mapAttrs'
(
dataset: attrs:
{
name = attrs.mount;
value = {
fsType = "zfs";
device = "${dataset}";
};
}
)
mountable;
};
passAsFile = [ "filesystems" ];
} ''
(
echo "builtins.fromJSON '''"
jq . < "$filesystemsPath"
echo "'''"
) > $out
nixpkgs-fmt $out
'';
mergedConfig =
if configFile == null
then fileSystemsCfgFile
else
pkgs.runCommand "configuration.nix" {
buildInputs = with pkgs; [ nixpkgs-fmt ];
}
''
(
echo '{ imports = ['
printf "(%s)\n" "$(cat ${fileSystemsCfgFile})";
printf "(%s)\n" "$(cat ${configFile})";
echo ']; }'
) > $out
nixpkgs-fmt $out
'';
image = (
pkgs.vmTools.override {
rootModules =
[ "zfs" "9p" "9pnet_virtio" "virtio_pci" "virtio_blk" ] ++
(pkgs.lib.optional (pkgs.stdenv.isi686 || pkgs.stdenv.isx86_64) "rtc_cmos");
kernel = modulesTree;
}
).runInLinuxVM (
pkgs.runCommand name
{
QEMU_OPTS = "-drive file=$bootDiskImage,if=virtio,cache=unsafe,werror=report"
+ " -drive file=$rootDiskImage,if=virtio,cache=unsafe,werror=report";
preVM = ''
PATH=$PATH:${pkgs.qemu_kvm}/bin
mkdir $out
bootDiskImage=boot.raw
qemu-img create -f raw $bootDiskImage ${toString bootSize}M
rootDiskImage=root.raw
qemu-img create -f raw $rootDiskImage ${toString rootSize}M
'';
postVM = ''
${if formatOpt == "raw" then ''
mv $bootDiskImage $out/${bootFilename}
mv $rootDiskImage $out/${rootFilename}
'' else ''
${pkgs.qemu}/bin/qemu-img convert -f raw -O ${formatOpt} ${compress} $bootDiskImage $out/${bootFilename}
${pkgs.qemu}/bin/qemu-img convert -f raw -O ${formatOpt} ${compress} $rootDiskImage $out/${rootFilename}
''}
bootDiskImage=$out/${bootFilename}
rootDiskImage=$out/${rootFilename}
set -x
${postVM}
'';
} ''
export PATH=${tools}:$PATH
set -x
cp -sv /dev/vda /dev/sda
cp -sv /dev/vda /dev/xvda
parted --script /dev/vda -- \
mklabel gpt \
mkpart no-fs 1MiB 2MiB \
set 1 bios_grub on \
align-check optimal 1 \
mkpart ESP fat32 2MiB -1MiB \
align-check optimal 2 \
print
sfdisk --dump /dev/vda
zpool create \
${stringifyProperties " -o" rootPoolProperties} \
${stringifyProperties " -O" rootPoolFilesystemProperties} \
${rootPoolName} /dev/vdb
parted --script /dev/vdb -- print
${createDatasets}
${mountDatasets}
mkdir -p /mnt/boot
mkfs.vfat -n ESP /dev/vda2
mount /dev/vda2 /mnt/boot
mount
# Install a configuration.nix
mkdir -p /mnt/etc/nixos
# `cat` so it is mutable on the fs
cat ${mergedConfig} > /mnt/etc/nixos/configuration.nix
export NIX_STATE_DIR=$TMPDIR/state
nix-store --load-db < ${closureInfo}/registration
nixos-install \
--root /mnt \
--no-root-passwd \
--system ${config.system.build.toplevel} \
--substituters "" \
${lib.optionalString includeChannel ''--channel ${channelSources}''}
df -h
umount /mnt/boot
${unmountDatasets}
zpool export ${rootPoolName}
''
);
in
image

@ -0,0 +1,12 @@
{
imports = [ ./amazon-image.nix ];
ec2.zfs = {
enable = true;
datasets = {
"tank/system/root".mount = "/";
"tank/system/var".mount = "/var";
"tank/local/nix".mount = "/nix";
"tank/user/home".mount = "/home";
};
};
}

@ -4,6 +4,7 @@ with lib;
let
cfg = config.amazonImage;
in {
imports = [ ../../../modules/virtualisation/amazon-image.nix ];
@ -53,15 +54,7 @@ in {
};
};
config.system.build.amazonImage = import ../../../lib/make-disk-image.nix {
inherit lib config;
inherit (cfg) contents format name;
pkgs = import ../../../.. { inherit (pkgs) system; }; # ensure we use the regular qemu-kvm package
partitionTableType = if config.ec2.efi then "efi"
else if config.ec2.hvm then "legacy+gpt"
else "none";
diskSize = cfg.sizeMB;
fsType = "ext4";
config.system.build.amazonImage = let
configFile = pkgs.writeText "configuration.nix"
''
{ modulesPath, ... }: {
@ -72,24 +65,96 @@ in {
${optionalString config.ec2.efi ''
ec2.efi = true;
''}
${optionalString config.ec2.zfs.enable ''
ec2.zfs.enable = true;
networking.hostId = "${config.networking.hostId}";
''}
}
'';
postVM = ''
extension=''${diskImage##*.}
friendlyName=$out/${cfg.name}.$extension
mv "$diskImage" "$friendlyName"
diskImage=$friendlyName
mkdir -p $out/nix-support
echo "file ${cfg.format} $diskImage" >> $out/nix-support/hydra-build-products
zfsBuilder = import ../../../lib/make-zfs-image.nix {
inherit lib config configFile;
inherit (cfg) contents format name;
pkgs = import ../../../.. { inherit (pkgs) system; }; # ensure we use the regular qemu-kvm package
${pkgs.jq}/bin/jq -n \
--arg label ${lib.escapeShellArg config.system.nixos.label} \
--arg system ${lib.escapeShellArg pkgs.stdenv.hostPlatform.system} \
--arg logical_bytes "$(${pkgs.qemu}/bin/qemu-img info --output json "$diskImage" | ${pkgs.jq}/bin/jq '."virtual-size"')" \
--arg file "$diskImage" \
'$ARGS.named' \
> $out/nix-support/image-info.json
'';
};
includeChannel = true;
bootSize = 1000; # 1G is the minimum EBS volume
rootSize = cfg.sizeMB;
rootPoolProperties = {
ashift = 12;
autoexpand = "on";
};
datasets = config.ec2.zfs.datasets;
postVM = ''
extension=''${rootDiskImage##*.}
friendlyName=$out/${cfg.name}
rootDisk="$friendlyName.root.$extension"
bootDisk="$friendlyName.boot.$extension"
mv "$rootDiskImage" "$rootDisk"
mv "$bootDiskImage" "$bootDisk"
mkdir -p $out/nix-support
echo "file ${cfg.format} $bootDisk" >> $out/nix-support/hydra-build-products
echo "file ${cfg.format} $rootDisk" >> $out/nix-support/hydra-build-products
${pkgs.jq}/bin/jq -n \
--arg system_label ${lib.escapeShellArg config.system.nixos.label} \
--arg system ${lib.escapeShellArg pkgs.stdenv.hostPlatform.system} \
--arg root_logical_bytes "$(${pkgs.qemu}/bin/qemu-img info --output json "$bootDisk" | ${pkgs.jq}/bin/jq '."virtual-size"')" \
--arg boot_logical_bytes "$(${pkgs.qemu}/bin/qemu-img info --output json "$rootDisk" | ${pkgs.jq}/bin/jq '."virtual-size"')" \
--arg root "$rootDisk" \
--arg boot "$bootDisk" \
'{}
| .label = $system_label
| .system = $system
| .disks.boot.logical_bytes = $boot_logical_bytes
| .disks.boot.file = $boot
| .disks.root.logical_bytes = $root_logical_bytes
| .disks.root.file = $root
' > $out/nix-support/image-info.json
'';
};
extBuilder = import ../../../lib/make-disk-image.nix {
inherit lib config configFile;
inherit (cfg) contents format name;
pkgs = import ../../../.. { inherit (pkgs) system; }; # ensure we use the regular qemu-kvm package
fsType = "ext4";
partitionTableType = if config.ec2.efi then "efi"
else if config.ec2.hvm then "legacy+gpt"
else "none";
diskSize = cfg.sizeMB;
postVM = ''
extension=''${diskImage##*.}
friendlyName=$out/${cfg.name}.$extension
mv "$diskImage" "$friendlyName"
diskImage=$friendlyName
mkdir -p $out/nix-support
echo "file ${cfg.format} $diskImage" >> $out/nix-support/hydra-build-products
${pkgs.jq}/bin/jq -n \
--arg system_label ${lib.escapeShellArg config.system.nixos.label} \
--arg system ${lib.escapeShellArg pkgs.stdenv.hostPlatform.system} \
--arg logical_bytes "$(${pkgs.qemu}/bin/qemu-img info --output json "$diskImage" | ${pkgs.jq}/bin/jq '."virtual-size"')" \
--arg file "$diskImage" \
'{}
| .label = $system_label
| .system = $system
| .logical_bytes = $logical_bytes
| .file = $file
| .disks.root.logical_bytes = $logical_bytes
| .disks.root.file = $file
' > $out/nix-support/image-info.json
'';
};
in if config.ec2.zfs.enable then zfsBuilder else extBuilder;
}

@ -460,6 +460,7 @@
./services/mail/opensmtpd.nix
./services/mail/pfix-srsd.nix
./services/mail/postfix.nix
./services/mail/postfixadmin.nix
./services/mail/postsrsd.nix
./services/mail/postgrey.nix
./services/mail/spamassassin.nix
@ -1036,6 +1037,7 @@
./services/x11/display-managers/sddm.nix
./services/x11/display-managers/slim.nix
./services/x11/display-managers/startx.nix
./services/x11/display-managers/sx.nix
./services/x11/display-managers/xpra.nix
./services/x11/fractalart.nix
./services/x11/hardware/libinput.nix

@ -98,6 +98,14 @@ in
'';
default = [ ];
};
package = mkOption {
type = types.package;
description = ''
Which github-runner derivation to use.
'';
default = pkgs.github-runner;
};
};
config = mkIf cfg.enable {
@ -131,7 +139,7 @@ in
] ++ cfg.extraPackages;
serviceConfig = rec {
ExecStart = "${pkgs.github-runner}/bin/runsvc.sh";
ExecStart = "${cfg.package}/bin/runsvc.sh";
# Does the following, sequentially:
# - Copy the current and the previous `tokenFile` to the $RUNTIME_DIRECTORY
@ -208,7 +216,7 @@ in
if [[ -z "$empty" ]]; then
echo "Configuring GitHub Actions Runner"
token=$(< "$RUNTIME_DIRECTORY"/${newConfigTokenFilename})
RUNNER_ROOT="$STATE_DIRECTORY" ${pkgs.github-runner}/bin/config.sh \
RUNNER_ROOT="$STATE_DIRECTORY" ${cfg.package}/bin/config.sh \
--unattended \
--work "$RUNTIME_DIRECTORY" \
--url ${escapeShellArg cfg.url} \

@ -0,0 +1,199 @@
{ lib, config, pkgs, ... }:
with lib;
let
cfg = config.services.postfixadmin;
fpm = config.services.phpfpm.pools.postfixadmin;
localDB = cfg.database.host == "localhost";
user = if localDB then cfg.database.username else "nginx";
in
{
options.services.postfixadmin = {
enable = mkOption {
type = types.bool;
default = false;
description = ''
Whether to enable postfixadmin.
Also enables nginx virtual host management.
Further nginx configuration can be done by adapting <literal>services.nginx.virtualHosts.&lt;name&gt;</literal>.
See <xref linkend="opt-services.nginx.virtualHosts"/> for further information.
'';
};
hostName = mkOption {
type = types.str;
example = "postfixadmin.example.com";
description = "Hostname to use for the nginx vhost";
};
adminEmail = mkOption {
type = types.str;
example = "postmaster@example.com";
description = ''
Defines the Site Admin's email address.
This will be used to send emails from to create mailboxes and
from Send Email / Broadcast message pages.
'';
};
setupPasswordFile = mkOption {
type = types.path;
description = ''
Password file for the admin.
Generate with <literal>php -r "echo password_hash('some password here', PASSWORD_DEFAULT);"</literal>
'';
};
database = {
username = mkOption {
type = types.str;
default = "postfixadmin";
description = ''
Username for the postgresql connection.
If <literal>database.host</literal> is set to <literal>localhost</literal>, a unix user and group of the same name will be created as well.
'';
};
host = mkOption {
type = types.str;
default = "localhost";
description = ''
Host of the postgresql server. If this is not set to
<literal>localhost</literal>, you have to create the
postgresql user and database yourself, with appropriate
permissions.
'';
};
passwordFile = mkOption {
type = types.path;
description = "Password file for the postgresql connection. Must be readable by user <literal>nginx</literal>.";
};
dbname = mkOption {
type = types.str;
default = "postfixadmin";
description = "Name of the postgresql database";
};
};
extraConfig = mkOption {
type = types.lines;
default = "";
description = "Extra configuration for the postfixadmin instance, see postfixadmin's config.inc.php for available options.";
};
};
config = mkIf cfg.enable {
environment.etc."postfixadmin/config.local.php".text = ''
<?php
$CONF['setup_password'] = file_get_contents('${cfg.setupPasswordFile}');
$CONF['database_type'] = 'pgsql';
$CONF['database_host'] = ${if localDB then "null" else "'${cfg.database.host}'"};
${optionalString localDB "$CONF['database_user'] = '${cfg.database.username}';"}
$CONF['database_password'] = ${if localDB then "'dummy'" else "file_get_contents('${cfg.database.passwordFile}')"};
$CONF['database_name'] = '${cfg.database.dbname}';
$CONF['configured'] = true;
${cfg.extraConfig}
'';
systemd.tmpfiles.rules = [ "d /var/cache/postfixadmin/templates_c 700 ${user} ${user}" ];
services.nginx = {
enable = true;
virtualHosts = {
${cfg.hostName} = {
forceSSL = mkDefault true;
enableACME = mkDefault true;
locations."/" = {
root = "${pkgs.postfixadmin}/public";
index = "index.php";
extraConfig = ''
location ~* \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:${fpm.socket};
include ${pkgs.nginx}/conf/fastcgi_params;
include ${pkgs.nginx}/conf/fastcgi.conf;
}
'';
};
};
};
};
services.postgresql = mkIf localDB {
enable = true;
ensureUsers = [ {
name = cfg.database.username;
} ];
};
# The postgresql module doesn't currently support concepts like
# objects owners and extensions; for now we tack on what's needed
# here.
systemd.services.postfixadmin-postgres = let pgsql = config.services.postgresql; in mkIf localDB {
after = [ "postgresql.service" ];
bindsTo = [ "postgresql.service" ];
wantedBy = [ "multi-user.target" ];
path = [
pgsql.package
pkgs.util-linux
];
script = ''
set -eu
PSQL() {
psql --port=${toString pgsql.port} "$@"
}
PSQL -tAc "SELECT 1 FROM pg_database WHERE datname = '${cfg.database.dbname}'" | grep -q 1 || PSQL -tAc 'CREATE DATABASE "${cfg.database.dbname}" OWNER "${cfg.database.username}"'
current_owner=$(PSQL -tAc "SELECT pg_catalog.pg_get_userbyid(datdba) FROM pg_catalog.pg_database WHERE datname = '${cfg.database.dbname}'")
if [[ "$current_owner" != "${cfg.database.username}" ]]; then
PSQL -tAc 'ALTER DATABASE "${cfg.database.dbname}" OWNER TO "${cfg.database.username}"'
if [[ -e "${config.services.postgresql.dataDir}/.reassigning_${cfg.database.dbname}" ]]; then
echo "Reassigning ownership of database ${cfg.database.dbname} to user ${cfg.database.username} failed on last boot. Failing..."
exit 1
fi
touch "${config.services.postgresql.dataDir}/.reassigning_${cfg.database.dbname}"
PSQL "${cfg.database.dbname}" -tAc "REASSIGN OWNED BY \"$current_owner\" TO \"${cfg.database.username}\""
rm "${config.services.postgresql.dataDir}/.reassigning_${cfg.database.dbname}"
fi
'';
serviceConfig = {
User = pgsql.superUser;
Type = "oneshot";
RemainAfterExit = true;
};
};
users.users.${user} = mkIf localDB {
group = user;
isSystemUser = true;
createHome = false;
};
users.groups.${user} = mkIf localDB {};
services.phpfpm.pools.postfixadmin = {
user = user;
phpPackage = pkgs.php74;
phpOptions = ''
error_log = 'stderr'
log_errors = on
'';
settings = mapAttrs (name: mkDefault) {
"listen.owner" = "nginx";
"listen.group" = "nginx";
"listen.mode" = "0660";
"pm" = "dynamic";
"pm.max_children" = 75;
"pm.start_servers" = 2;
"pm.min_spare_servers" = 1;
"pm.max_spare_servers" = 20;
"pm.max_requests" = 500;
"catch_workers_output" = true;
};
};
};
}

@ -285,6 +285,7 @@ in {
"alarmdecoder"
"arduino"
"blackbird"
"deconz"
"dsmr"
"edl21"
"elkm1"

@ -122,6 +122,9 @@ in
ExecStart = "${pluginsEnv}/bin/octoprint serve -b ${cfg.stateDir}";
User = cfg.user;
Group = cfg.group;
SupplementaryGroups = [
"dialout"
];
};
};

@ -29,6 +29,7 @@ let
"-/etc/nsswitch.conf"
"-/etc/hosts"
"-/etc/localtime"
"-/run/postgresql"
];
BindPaths = [
cfg.consumptionDir
@ -60,7 +61,7 @@ let
ProtectKernelModules = true;
ProtectKernelTunables = true;
ProtectProc = "invisible";
RestrictAddressFamilies = [ "AF_INET" "AF_INET6" ];
RestrictAddressFamilies = [ "AF_UNIX" "AF_INET" "AF_INET6" ];
RestrictNamespaces = true;
RestrictRealtime = true;
RestrictSUIDSGID = true;

@ -0,0 +1,37 @@
{ config, lib, pkgs, ... }:
with lib;
let cfg = config.services.xserver.displayManager.sx;
in {
options = {
services.xserver.displayManager.sx = {
enable = mkEnableOption "sx pseudo-display manager" // {
description = ''
Whether to enable the "sx" pseudo-display manager, which allows users
to start manually via the "sx" command from a vt shell. The X server
runs under the user's id, not as root. The user must provide a
~/.config/sx/sxrc file containing session startup commands, see
sx(1). This is not automatically generated from the desktopManager
and windowManager settings. sx doesn't have a way to directly set
X server flags, but it can be done by overriding its xorgserver
dependency.
'';
};
};
};
config = mkIf cfg.enable {
environment.systemPackages = [ pkgs.sx ];
services.xserver = {
exportConfiguration = true;
displayManager = {
job.execCmd = "";
lightdm.enable = mkForce false;
};
logFile = mkDefault null;
};
systemd.services.display-manager.enable = false;
};
}

@ -4,8 +4,10 @@ with lib;
{
config = mkIf (any (fs: fs == "exfat") config.boot.supportedFilesystems) {
system.fsPackages = [ pkgs.exfat ];
system.fsPackages = if config.boot.kernelPackages.kernelOlder "5.7" then [
pkgs.exfat # FUSE
] else [
pkgs.exfatprogs # non-FUSE
];
};
}

@ -8,6 +8,7 @@ with lib;
let
cfgZfs = config.boot.zfs;
cfgExpandOnBoot = config.services.zfs.expandOnBoot;
cfgSnapshots = config.services.zfs.autoSnapshot;
cfgSnapFlags = cfgSnapshots.flags;
cfgScrub = config.services.zfs.autoScrub;
@ -200,7 +201,6 @@ in
an interactive prompt (keylocation=prompt) and from a file (keylocation=file://).
'';
};
};
services.zfs.autoSnapshot = {
@ -327,6 +327,23 @@ in
};
};
services.zfs.expandOnBoot = mkOption {
type = types.either (types.enum [ "disabled" "all" ]) (types.listOf types.str);
default = "disabled";
example = [ "tank" "dozer" ];
description = ''
After importing, expand each device in the specified pools.
Set the value to the plain string "all" to expand all pools on boot:
services.zfs.expandOnBoot = "all";
or set the value to a list of pools to expand the disks of specific pools:
services.zfs.expandOnBoot = [ "tank" "dozer" ];
'';
};
services.zfs.zed = {
enableMail = mkEnableOption "ZED's ability to send emails" // {
default = cfgZfs.package.enableMail;
@ -586,6 +603,7 @@ in
${cfgZfs.package}/sbin/zfs set nixos:shutdown-time="$(date)" "${pool}"
'';
};
createZfsService = serv:
nameValuePair serv {
after = [ "systemd-modules-load.service" ];
@ -609,6 +627,86 @@ in
systemd.targets.zfs.wantedBy = [ "multi-user.target" ];
})
(mkIf (cfgZfs.enabled && cfgExpandOnBoot != "disabled") {
systemd.services."zpool-expand@" = {
description = "Expand ZFS pools";
after = [ "zfs.target" ];
serviceConfig = {
Type = "oneshot";
RemainAfterExit = true;
};
scriptArgs = "%i";
path = [ pkgs.gawk cfgZfs.package ];
# ZFS has no way of enumerating just devices in a pool in a way
# that 'zpool online -e' supports. Thus, we've implemented a
# bit of a strange approach of highlighting just devices.
# See: https://github.com/openzfs/zfs/issues/12505
script = let
# This UUID has been chosen at random and is to provide a
# collision-proof, predictable token to search for
magicIdentifier = "NIXOS-ZFS-ZPOOL-DEVICE-IDENTIFIER-37108bec-aff6-4b58-9e5e-53c7c9766f05";
zpoolScripts = pkgs.writeShellScriptBin "device-highlighter" ''
echo "${magicIdentifier}"
'';
in ''
pool=$1
echo "Expanding all devices for $pool."
# Put our device-highlighter script it to the PATH
export ZPOOL_SCRIPTS_PATH=${zpoolScripts}/bin
# Enable running our precisely specified zpool script as root
export ZPOOL_SCRIPTS_AS_ROOT=1
devices() (
zpool status -c device-highlighter "$pool" \
| awk '($2 == "ONLINE" && $6 == "${magicIdentifier}") { print $1; }'
)
for device in $(devices); do
echo "Attempting to expand $device of $pool..."
if ! zpool online -e "$pool" "$device"; then
echo "Failed to expand '$device' of '$pool'."
fi
done
'';
};
systemd.services."zpool-expand-pools" =
let
# Create a string, to be interpolated in a bash script
# which enumerates all of the pools to expand.
# If the `pools` option is `true`, we want to dynamically
# expand every pool. Otherwise we want to enumerate
# just the specifically provided list of pools.
poolListProvider = if cfgExpandOnBoot == "all"
then "$(zpool list -H | awk '{print $1}')"
else lib.escapeShellArgs cfgExpandOnBoot;
in
{
description = "Expand specified ZFS pools";
wantedBy = [ "default.target" ];
after = [ "zfs.target" ];
serviceConfig = {
Type = "oneshot";
RemainAfterExit = true;
};
path = [ pkgs.gawk cfgZfs.package ];
script = ''
for pool in ${poolListProvider}; do
systemctl start --no-block "zpool-expand@$pool"
done
'';
};
})
(mkIf (cfgZfs.enabled && cfgSnapshots.enable) {
systemd.services = let
descr = name: if name == "frequent" then "15 mins"

@ -41,17 +41,23 @@ in
boot.growPartition = cfg.hvm;
fileSystems."/" = {
fileSystems."/" = mkIf (!cfg.zfs.enable) {
device = "/dev/disk/by-label/nixos";
fsType = "ext4";
autoResize = true;
};
fileSystems."/boot" = mkIf cfg.efi {
fileSystems."/boot" = mkIf (cfg.efi || cfg.zfs.enable) {
# The ZFS image uses a partition labeled ESP whether or not we're
# booting with EFI.
device = "/dev/disk/by-label/ESP";
fsType = "vfat";
};
services.zfs.expandOnBoot = mkIf cfg.zfs.enable "all";
boot.zfs.devNodes = mkIf cfg.zfs.enable "/dev/";
boot.extraModulePackages = [
config.boot.kernelPackages.ena
];

@ -1,7 +1,46 @@
{ config, lib, pkgs, ... }:
{
let
inherit (lib) types;
in {
options = {
ec2 = {
zfs = {
enable = lib.mkOption {
default = false;
internal = true;
description = ''
Whether the EC2 instance uses a ZFS root.
'';
};
datasets = lib.mkOption {
description = ''
Datasets to create under the `tank` and `boot` zpools.
**NOTE:** This option is used only at image creation time, and
does not attempt to declaratively create or manage datasets
on an existing system.
'';
default = {};
type = types.attrsOf (types.submodule {
options = {
mount = lib.mkOption {
description = "Where to mount this dataset.";
type = types.nullOr types.string;
default = null;
};
properties = lib.mkOption {
description = "Properties to set on this dataset.";
type = types.attrsOf types.string;
default = {};
};
};
});
};
};
hvm = lib.mkOption {
default = lib.versionAtLeast config.system.stateVersion "17.03";
internal = true;
@ -18,4 +57,17 @@
};
};
};
config = lib.mkIf config.ec2.zfs.enable {
networking.hostId = lib.mkDefault "00000000";
fileSystems = let
mountable = lib.filterAttrs (_: value: ((value.mount or null) != null)) config.ec2.zfs.datasets;
in lib.mapAttrs'
(dataset: opts: lib.nameValuePair opts.mount {
device = dataset;
fsType = "zfs";
})
mountable;
};
}

@ -217,6 +217,20 @@ in rec {
}).config.system.build.amazonImage)
);
amazonImageZfs = forMatchingSystems [ "x86_64-linux" "aarch64-linux" ] (system:
with import ./.. { inherit system; };
hydraJob ((import lib/eval-config.nix {
inherit system;
modules =
[ configuration
versionModule
./maintainers/scripts/ec2/amazon-image-zfs.nix
];
}).config.system.build.amazonImage)
);
# Test job for https://github.com/NixOS/nixpkgs/issues/121354 to test

@ -356,6 +356,7 @@ in
pomerium = handleTestOn ["x86_64-linux"] ./pomerium.nix {};
postfix = handleTest ./postfix.nix {};
postfix-raise-smtpd-tls-security-level = handleTest ./postfix-raise-smtpd-tls-security-level.nix {};
postfixadmin = handleTest ./postfixadmin.nix {};
postgis = handleTest ./postgis.nix {};
postgresql = handleTest ./postgresql.nix {};
postgresql-wal-receiver = handleTest ./postgresql-wal-receiver.nix {};

@ -6,10 +6,10 @@
with pkgs.lib;
let
makeKernelTest = version: linuxPackages: (import ./make-test-python.nix ({ pkgs, ... }: {
name = "kernel-${version}";
testsForLinuxPackages = linuxPackages: (import ./make-test-python.nix ({ pkgs, ... }: {
name = "kernel-${linuxPackages.kernel.version}";
meta = with pkgs.lib.maintainers; {
maintainers = [ nequissimus ];
maintainers = [ nequissimus atemu ];
};
machine = { ... }:
@ -23,22 +23,26 @@ let
assert "${linuxPackages.kernel.modDirVersion}" in machine.succeed("uname -a")
'';
}) args);
kernels = {
inherit (pkgs)
linuxPackages_4_4
linuxPackages_4_9
linuxPackages_4_14
linuxPackages_4_19
linuxPackages_5_4
linuxPackages_5_10
linuxPackages_5_13
packages = pkgs.linuxKernel.packages;
in
with pkgs; {
linux_4_4 = makeKernelTest "4.4" packages.linux_4_4;
linux_4_9 = makeKernelTest "4.9" packages.linux_4_9;
linux_4_14 = makeKernelTest "4.14" packages.linux_4_14;
linux_4_19 = makeKernelTest "4.19" packages.linux_4_19;
linux_5_4 = makeKernelTest "5.4" packages.linux_5_4;
linux_5_10 = makeKernelTest "5.10" packages.linux_5_10;
linux_5_13 = makeKernelTest "5.13" packages.linux_5_13;
linuxPackages_4_14_hardened
linuxPackages_4_19_hardened
linuxPackages_5_4_hardened
linuxPackages_5_10_hardened
linux_hardened_4_14 = makeKernelTest "4.14" packages.linux_4_14_hardened;
linux_hardened_4_19 = makeKernelTest "4.19" packages.linux_4_19_hardened;
linux_hardened_5_4 = makeKernelTest "5.4" packages.linux_5_4_hardened;
linux_hardened_5_10 = makeKernelTest "5.10" packages.linux_5_10_hardened;
linuxPackages_testing;
};
linux_testing = makeKernelTest "testing" linuxPackages_testing;
in mapAttrs (_: lP: testsForLinuxPackages lP) kernels // {
inherit testsForLinuxPackages;
testsForKernel = kernel: testsForLinuxPackages (pkgs.linuxPackagesFor kernel);
}

@ -26,6 +26,13 @@ import ./make-test-python.nix ({ pkgs, ... } : let
-days 365
'';
mailerCerts = import ./common/acme/server/snakeoil-certs.nix;
mailerDomain = mailerCerts.domain;
registrationSharedSecret = "unsecure123";
testUser = "alice";
testPassword = "alicealice";
testEmail = "alice@example.com";
in {
name = "matrix-synapse";
@ -35,7 +42,10 @@ in {
nodes = {
# Since 0.33.0, matrix-synapse doesn't allow underscores in server names
serverpostgres = { pkgs, ... }: {
serverpostgres = { pkgs, nodes, ... }: let
mailserverIP = nodes.mailserver.config.networking.primaryIPAddress;
in
{
services.matrix-synapse = {
enable = true;
database_type = "psycopg2";
@ -44,6 +54,16 @@ in {
database_args = {
password = "synapse";
};
registration_shared_secret = registrationSharedSecret;
public_baseurl = "https://example.com";
extraConfig = ''
email:
smtp_host: "${mailerDomain}"
smtp_port: 25
require_transport_security: true
notif_from: "matrix <matrix@${mailerDomain}>"
app_name: "Matrix"
'';
};
services.postgresql = {
enable = true;
@ -61,6 +81,85 @@ in {
LC_CTYPE = "C";
'';
};
networking.extraHosts = ''
${mailserverIP} ${mailerDomain}
'';
security.pki.certificateFiles = [
mailerCerts.ca.cert ca_pem
];
environment.systemPackages = let
sendTestMailStarttls = pkgs.writeScriptBin "send-testmail-starttls" ''
#!${pkgs.python3.interpreter}
import smtplib
import ssl
ctx = ssl.create_default_context()
with smtplib.SMTP('${mailerDomain}') as smtp:
smtp.ehlo()
smtp.starttls(context=ctx)
smtp.ehlo()
smtp.sendmail('matrix@${mailerDomain}', '${testEmail}', 'Subject: Test STARTTLS\n\nTest data.')
smtp.quit()
'';
obtainTokenAndRegisterEmail = let
# adding the email through the API is quite complicated as it involves more than one step and some
# client-side calculation
insertEmailForAlice = pkgs.writeText "alice-email.sql" ''
INSERT INTO user_threepids (user_id, medium, address, validated_at, added_at) VALUES ('${testUser}@serverpostgres', 'email', '${testEmail}', '1629149927271', '1629149927270');
'';
in
pkgs.writeScriptBin "obtain-token-and-register-email" ''
#!${pkgs.runtimeShell}
set -o errexit
set -o pipefail
set -o nounset
su postgres -c "psql -d matrix-synapse -f ${insertEmailForAlice}"
curl --fail -XPOST 'https://localhost:8448/_matrix/client/r0/account/password/email/requestToken' -d '{"email":"${testEmail}","client_secret":"foobar","send_attempt":1}' -v
'';
in [ sendTestMailStarttls pkgs.matrix-synapse obtainTokenAndRegisterEmail ];
};
# test mail delivery
mailserver = args: let
in
{
security.pki.certificateFiles = [
mailerCerts.ca.cert
];
networking.firewall.enable = false;
services.postfix = {
enable = true;
hostname = "${mailerDomain}";
# open relay for subnet
networksStyle = "subnet";
enableSubmission = true;
tlsTrustedAuthorities = "${mailerCerts.ca.cert}";
sslCert = "${mailerCerts.${mailerDomain}.cert}";
sslKey = "${mailerCerts.${mailerDomain}.key}";
# blackhole transport
transport = "example.com discard:silently";
config = {
debug_peer_level = "10";
smtpd_relay_restrictions = [
"permit_mynetworks" "reject_unauth_destination"
];
# disable obsolete protocols, something old versions of twisted are still using
smtpd_tls_protocols = "TLSv1.3, TLSv1.2, !TLSv1.1, !TLSv1, !SSLv2, !SSLv3";
smtp_tls_protocols = "TLSv1.3, TLSv1.2, !TLSv1.1, !TLSv1, !SSLv2, !SSLv3";
smtpd_tls_mandatory_protocols = "TLSv1.3, TLSv1.2, !TLSv1.1, !TLSv1, !SSLv2, !SSLv3";
smtp_tls_mandatory_protocols = "TLSv1.3, TLSv1.2, !TLSv1.1, !TLSv1, !SSLv2, !SSLv3";
};
};
};
serversqlite = args: {
@ -75,11 +174,15 @@ in {
testScript = ''
start_all()
mailserver.wait_for_unit("postfix.service")
serverpostgres.succeed("send-testmail-starttls")
serverpostgres.wait_for_unit("matrix-synapse.service")
serverpostgres.wait_until_succeeds(
"curl --fail -L --cacert ${ca_pem} https://localhost:8448/"
)
serverpostgres.require_unit_state("postgresql.service")
serverpostgres.succeed("register_new_matrix_user -u ${testUser} -p ${testPassword} -a -k ${registrationSharedSecret} ")
serverpostgres.succeed("obtain-token-and-register-email")
serversqlite.wait_for_unit("matrix-synapse.service")
serversqlite.wait_until_succeeds(
"curl --fail -L --cacert ${ca_pem} https://localhost:8448/"

@ -0,0 +1,31 @@
import ./make-test-python.nix ({ pkgs, ...} : {
name = "postfixadmin";
meta = with pkgs.stdenv.lib.maintainers; {
maintainers = [ globin ];
};
nodes = {
postfixadmin = { config, pkgs, ... }: {
services.postfixadmin = {
enable = true;
hostName = "postfixadmin";
setupPasswordFile = pkgs.writeText "insecure-test-setup-pw-file" "$2y$10$r0p63YCjd9rb9nHrV9UtVuFgGTmPDLKu.0UIJoQTkWCZZze2iuB1m";
};
services.nginx.virtualHosts.postfixadmin = {
forceSSL = false;
enableACME = false;
};
};
};
testScript = ''
postfixadmin.start
postfixadmin.wait_for_unit("postgresql.service")
postfixadmin.wait_for_unit("phpfpm-postfixadmin.service")
postfixadmin.wait_for_unit("nginx.service")
postfixadmin.succeed(
"curl -sSfL http://postfixadmin/setup.php -X POST -F 'setup_password=not production'"
)
postfixadmin.succeed("curl -sSfL http://postfixadmin/ | grep 'Mail admins login here'")
'';
})

@ -15,13 +15,13 @@ assert withGtk3 -> gtk3 != null;
stdenv.mkDerivation rec {
pname = "carla";
version = "2.3.2";
version = "2.4.0";
src = fetchFromGitHub {
owner = "falkTX";
repo = pname;
rev = "v${version}";
sha256 = "sha256-en3eQtRUd2schpIccnuD42+wTYOAG9zsD6yNRA73bKE=";
sha256 = "sha256-WxhG9X6jVcu10bl5p0f61+SYZmJw4W7DYvezbpAlNjg=";
};
nativeBuildInputs = [

@ -15,14 +15,14 @@
python3Packages.buildPythonApplication rec {
pname = "sublime-music";
version = "0.11.12";
version = "0.11.13";
format = "pyproject";
src = fetchFromGitLab {
owner = "sublime-music";
repo = pname;
rev = "v${version}";
sha256 = "sha256-fcEdpht+xKJRTaD3gKoRdf6O2SAPlZHZ61Jy8bdTKjs=";
sha256 = "sha256-NzbQtRcsRVppyuG1UuS3IidSnniUOavf5YoAf/kcZqw=";
};
nativeBuildInputs = [

@ -24,6 +24,6 @@ stdenv.mkDerivation rec {
description = "TUI display manager";
license = licenses.wtfpl;
homepage = "https://github.com/cylgom/ly";
maintainers = [ maintainers.spacekookie ];
maintainers = [ maintainers.vidister ];
};
}

@ -9,8 +9,8 @@ let
inherit buildFHSUserEnv;
};
stableVersion = {
version = "2020.3.1.22"; # "Android Studio Arctic Fox (2020.3.1)"
sha256Hash = "0xkjnhq1vvrglcbab90mx5xw1q82lkkvyp6y2ap5jypdfsc7pnsa";
version = "2020.3.1.23"; # "Android Studio Arctic Fox (2020.3.1)"
sha256Hash = "06xjdibb5lxiga3jg9akmvbazjwk11akyhy3g4pc562hcifsa5sk";
};
betaVersion = {
version = "2020.3.1.21"; # "Android Studio Arctic Fox (2020.3.1) RC 1"

@ -38,13 +38,13 @@ let
in
stdenv.mkDerivation rec {
pname = "cudatext";
version = "1.139.5";
version = "1.142.0";
src = fetchFromGitHub {
owner = "Alexey-T";
repo = "CudaText";
rev = version;
sha256 = "sha256-oBdEPLnM08gC3FZNDi1uyGar2MP8EmFkWJhH+fr6gBA=";
sha256 = "sha256-4kVi921dromMqiAuFjm2EOCDXCq4oT+ijko4/uT4LLs=";
};
postPatch = ''

@ -11,23 +11,23 @@
},
"ATFlatControls": {
"owner": "Alexey-T",
"rev": "2021.07.09",
"sha256": "sha256-hVoHH29JLPy3qq73e5EV4bxERcizocO4RBgvqD+VhWo="
"rev": "2021.07.22",
"sha256": "sha256-sAF/klzPa8fCKKBtpj0h9B+zoGDvA80uL4u4VTikUaI="
},
"ATSynEdit": {
"owner": "Alexey-T",
"rev": "2021.07.29",
"sha256": "sha256-XgkpadcTPeMu2B3XVX+9gHLZiAaLwNuHTCnZPtjakIk="
"rev": "2021.08.20",
"sha256": "sha256-cVl1HJHLsYTFKQ/Ov+rcP6UAwRJPp7rtmLlZC9S+Jek="
},
"ATSynEdit_Cmp": {
"owner": "Alexey-T",
"rev": "2021.07.20",
"sha256": "sha256-yh9/2kHfg7swNzPe+7i+ON7MKhFrhxtGAT+pxL4GdVQ="
"rev": "2021.08.20",
"sha256": "sha256-PZtP/J4tJN2Egk/Bp/5DtHlV46yRjhcZL9xhDk6xjBk="
},
"EControl": {
"owner": "Alexey-T",
"rev": "2021.07.29",
"sha256": "sha256-2Wc4udsSEM0Ngzt/bokuDHcR0imKyHgkeG3RCWu3nXw="
"rev": "2021.08.12",
"sha256": "sha256-Ht7jfFGlvb7khLD0OekuBvkU9ROyDiyUSe+lLI/Rm64="
},
"ATSynEdit_Ex": {
"owner": "Alexey-T",
@ -36,8 +36,8 @@
},
"Python-for-Lazarus": {
"owner": "Alexey-T",
"rev": "2021.04.16",
"sha256": "sha256-HN3Lr3uDCyNk+8+J09ivyC0LZxQ6x6SaUH4swZJBFkM="
"rev": "2021.07.27",
"sha256": "sha256-izCyBNRLRCizSjR7v9RhcLrQ6+aQA4eejCHFUzJ0IpE="
},
"Emmet-Pascal": {
"owner": "Alexey-T",

@ -66,7 +66,7 @@ self: let
# actually unpack source of ada-mode and wisi
# which are both needed to compile the tools
# we need at runtime
phases = "unpackPhase " + old.phases; # not a list, interestingly…
dontUnpack = false;
srcs = [
super.ada-mode.src
# ada-mode needs a specific version of wisi, check NEWS or ada-mode's

@ -1,36 +1,43 @@
{ lib, stdenv
{ lib
, stdenv
, fetchFromGitHub
, pkg-config
, capstone
, jansson
, wxGTK30
, darwin
, lua5_3
, wxGTK31
, Carbon
, Cocoa
, IOKit
, libicns
, wxmac
}:
stdenv.mkDerivation rec {
pname = "rehex";
version = "0.3.1";
version = "0.3.91";
src = fetchFromGitHub {
owner = "solemnwarning";
repo = pname;
rev = version;
sha256 = "1yj9a63j7534mmz8cl1ifg2wmgkxmk6z75jd8lkmc2sfrjbick32";
sha256 = "sha256-lemak/sGff346IOzOnMB4L4TkDRA/1L3KV3VNdWxIFA=";
};
patchPhase = ''
postPatch = ''
substituteInPlace Makefile.osx --replace 'iconutil -c icns -o $@ $(ICONSET)' \
'png2icns $@ $(ICONSET)/icon_16x16.png $(ICONSET)/icon_32x32.png $(ICONSET)/icon_128x128.png $(ICONSET)/icon_256x256.png $(ICONSET)/icon_512x512.png'
'';
nativeBuildInputs = lib.optionals (stdenv.isDarwin) [ libicns ];
nativeBuildInputs = [ pkg-config ]
++ lib.optionals stdenv.isDarwin [ libicns ];
buildInputs = [ capstone jansson ]
++ (lib.optionals (!stdenv.isDarwin) [ wxGTK30 ])
++ (lib.optionals stdenv.isDarwin (with darwin.apple_sdk.frameworks; [ Carbon Cocoa IOKit wxmac ]));
buildInputs = [ capstone jansson lua5_3 ]
++ lib.optionals (!stdenv.isDarwin) [ wxGTK31 ]
++ lib.optionals stdenv.isDarwin [ Carbon Cocoa IOKit wxmac ];
makeFlags = [ "prefix=$(out)" ] ++ (lib.optionals stdenv.isDarwin [ "-f Makefile.osx" ]);
makeFlags = [ "prefix=$(out)" ]
++ lib.optionals stdenv.isDarwin [ "-f Makefile.osx" ];
meta = with lib; {
description = "Reverse Engineers' Hex Editor";

@ -24,7 +24,7 @@ let
six
];
in mkDerivation rec {
version = "3.16.9";
version = "3.16.10";
pname = "qgis";
name = "${pname}-unwrapped-${version}";
@ -32,7 +32,7 @@ in mkDerivation rec {
owner = "qgis";
repo = "QGIS";
rev = "final-${lib.replaceStrings [ "." ] [ "_" ] version}";
sha256 = "sha256-Y9WVgKEMOSMaXxfC9EQ8yqBYEj4XNL7YdMp8vjV55d0=";
sha256 = "sha256-/lsfyTDlkZNIVHg5qgZW7qfOyTC2+1r3ZbsnQmEdy30=";
};
passthru = {

@ -2,7 +2,8 @@
, stdenv
, lib
, fetchFromGitHub
, python3
, python38
, substituteAll
, nix-update-script
# To include additional plugins, pass them here as an overlay.
, packageOverrides ? self: super: {}
@ -20,18 +21,51 @@ let
);
};
py = python3.override {
py = python38.override {
self = py;
packageOverrides = lib.foldr lib.composeExtensions (self: super: {}) (
[
# the following dependencies are non trivial to update since later versions introduce backwards incompatible
# changes that might affect plugins, or due to other observed problems
(mkOverride "click" "7.1.2" "d2b5255c7c6349bc1bd1e59e08cd12acbbd63ce649f2588755783aa94dfb6b1a")
(mkOverride "flask-babel" "1.0.0" "0gmb165vkwv5v7dxsxa2i3zhafns0fh938m2zdcrv4d8z5l099yn")
(mkOverride "rsa" "4.0" "1a836406405730121ae9823e19c6e806c62bbad73f890574fff50efa4122c487")
(mkOverride "itsdangerous" "1.1.0" "321b033d07f2a4136d3ec762eac9f16a10ccd60f53c0c91af90217ace7ba1f19")
(mkOverride "jinja2" "2.11.3" "a6d58433de0ae800347cab1fa3043cebbabe8baa9d29e668f1c768cb87a333c6")
(mkOverride "markdown" "3.1.1" "2e50876bcdd74517e7b71f3e7a76102050edec255b3983403f1a63e7c8a41e7a")
(mkOverride "markupsafe" "1.1.1" "29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b")
(mkOverride "sarge" "0.1.5.post0" "1c1ll7pys9vra5cfi8jxlgrgaql6c27l6inpy15aprgqhc4ck36s")
(mkOverride "tornado" "5.1.1" "4e5158d97583502a7e2739951553cbd88a72076f152b4b11b64b9a10c4c49409")
(mkOverride "unidecode" "0.04.21" "280a6ab88e1f2eb5af79edff450021a0d3f0448952847cd79677e55e58bad051")
(mkOverride "sarge" "0.1.5.post0" "1c1ll7pys9vra5cfi8jxlgrgaql6c27l6inpy15aprgqhc4ck36s")
# Requires flask<2, cannot mkOverride because tests need to be disabled
(
self: super: {
flask = super.flask.overridePythonAttrs (oldAttrs: rec {
version = "1.1.2";
src = oldAttrs.src.override {
inherit version;
sha256 = "4efa1ae2d7c9865af48986de8aeb8504bf32c7f3d6fdc9353d34b21f4b127060";
};
doCheck = false;
});
}
)
# Requires werkezug<2, cannot mkOverride because tests need to be disabled
(
self: super: {
werkzeug = super.werkzeug.overridePythonAttrs (oldAttrs: rec {
version = "1.0.1";
src = oldAttrs.src.override {
inherit version;
sha256 = "6c80b1e5ad3665290ea39320b91e1be1e0d5f60652b964a3070216de83d2e47c";
};
doCheck= false;
});
}
)
# Requires websocket-client <1.0, >=0.57. Cannot do mkOverride b/c differing underscore/hyphen in pypi source name
(
@ -78,13 +112,13 @@ let
self: super: {
octoprint-filecheck = self.buildPythonPackage rec {
pname = "OctoPrint-FileCheck";
version = "2020.08.07";
version = "2021.2.23";
src = fetchFromGitHub {
owner = "OctoPrint";
repo = "OctoPrint-FileCheck";
rev = version;
sha256 = "05ys05l5x7d2bkg3yqrga6m65v3g5fcnnzbfab7j9w2pzjdapx5b";
sha256 = "sha256-e/QGEBa9+pjOdrZq3Zc6ifbSMClIyeTOi0Tji0YdVmI=";
};
doCheck = false;
};
@ -96,30 +130,50 @@ let
self: super: {
octoprint-firmwarecheck = self.buildPythonPackage rec {
pname = "OctoPrint-FirmwareCheck";
version = "2020.09.23";
version = "2021.8.11";
src = fetchFromGitHub {
owner = "OctoPrint";
repo = "OctoPrint-FirmwareCheck";
rev = version;
sha256 = "1l1ajhnsc39prgk59mp93h90dgl9gh660cci00z5b5gj2h6dv1d1";
sha256 = "sha256-WzVjHgjF12iJ642AFaFd86GSU90XyPzKhi1CSreynW4=";
};
doCheck = false;
};
}
)
(
self: super: {
octoprint-pisupport = self.buildPythonPackage rec {
pname = "OctoPrint-PiSupport";
version = "2021.8.2";
format = "setuptools";
src = fetchFromGitHub {
owner = "OctoPrint";
repo = "OctoPrint-PiSupport";
rev = version;
sha256 = "07akx61wadxhs0545pqa9gzjnaz9742bq710f8f4zs5x6sacjzbc";
};
# requires octoprint itself during tests
doCheck = false;
};
}
)
(
self: super: {
octoprint = self.buildPythonPackage rec {
pname = "OctoPrint";
version = "1.5.3";
version = "1.6.1";
src = fetchFromGitHub {
owner = "OctoPrint";
repo = "OctoPrint";
rev = version;
sha256 = "sha256-ZL/P/YIHynPmP8ssZZUKZDJscBsSsCq3UtOHrTVLpec=";
sha256 = "sha256-3b3k9h8H9Spf/P3/pXpCANnSGOgbUw/EWISJbrSoPBM=";
};
propagatedBuildInputs = with super; [
@ -136,6 +190,7 @@ let
frozendict
future
itsdangerous
immutabledict
jinja2
markdown
markupsafe
@ -143,7 +198,9 @@ let
netifaces
octoprint-filecheck
octoprint-firmwarecheck
octoprint-pisupport
pkginfo
pip
psutil
pylru
pyserial
@ -154,6 +211,7 @@ let
sarge
semantic-version
sentry-sdk
setuptools
tornado
unidecode
watchdog
@ -161,13 +219,29 @@ let
werkzeug
wrapt
zeroconf
zipstream-new
] ++ lib.optionals stdenv.isDarwin [ py.pkgs.appdirs ];
checkInputs = with super; [ pytestCheckHook mock ddt ];
patches = [
# substitute pip and let it find out, that it can't write anywhere
(substituteAll {
src = ./pip-path.patch;
pip = "${super.pip}/bin/pip";
})
# hardcore path to ffmpeg and hide related settings
(substituteAll {
src = ./ffmpeg-path.patch;
ffmpeg = "${pkgs.ffmpeg}/bin/ffmpeg";
})
];
postPatch = let
ignoreVersionConstraints = [
"emoji"
"immutabledict"
"sentry-sdk"
"watchdog"
];

@ -0,0 +1,41 @@
diff --git a/src/octoprint/plugins/corewizard/templates/corewizard_webcam_wizard.jinja2 b/src/octoprint/plugins/corewizard/templates/corewizard_webcam_wizard.jinja2
index 79342dcd7..6165a4119 100644
--- a/src/octoprint/plugins/corewizard/templates/corewizard_webcam_wizard.jinja2
+++ b/src/octoprint/plugins/corewizard/templates/corewizard_webcam_wizard.jinja2
@@ -29,14 +29,3 @@
{% include "snippets/settings/webcam/webcamStreamUrl.jinja2" %}
{% include "snippets/settings/webcam/webcamSnapshotUrl.jinja2" %}
</form>
-
-<h4>{{ _('Timelapse Recordings') }}</h4>
-
-{% trans %}<p>
- To render the snapshots into timelapse recordings, OctoPrint also needs to
- know the correct <strong>path to FFMPEG</strong>.
-</p>{% endtrans %}
-
-<form class="form-horizontal" data-bind="with: settingsViewModel" onsubmit="return false;">
- {% include "snippets/settings/webcam/ffmpegPath.jinja2" %}
-</form>
diff --git a/src/octoprint/server/api/settings.py b/src/octoprint/server/api/settings.py
index c3e6cea10..ced2f8fa0 100644
--- a/src/octoprint/server/api/settings.py
+++ b/src/octoprint/server/api/settings.py
@@ -130,7 +130,7 @@ def getSettings():
"snapshotUrl": s.get(["webcam", "snapshot"]),
"snapshotTimeout": s.getInt(["webcam", "snapshotTimeout"]),
"snapshotSslValidation": s.getBoolean(["webcam", "snapshotSslValidation"]),
- "ffmpegPath": s.get(["webcam", "ffmpeg"]),
+ "ffmpegPath": "@ffmpeg@",
"ffmpegCommandline": s.get(["webcam", "ffmpegCommandline"]),
"bitrate": s.get(["webcam", "bitrate"]),
"ffmpegThreads": s.get(["webcam", "ffmpegThreads"]),
@@ -548,8 +548,6 @@ def _saveSettings(data):
["webcam", "snapshotSslValidation"],
data["webcam"]["snapshotSslValidation"],
)
- if "ffmpegPath" in data["webcam"]:
- s.set(["webcam", "ffmpeg"], data["webcam"]["ffmpegPath"])
if "ffmpegCommandline" in data["webcam"]:
commandline = data["webcam"]["ffmpegCommandline"]
if not all(

@ -0,0 +1,12 @@
diff --git a/src/octoprint/util/pip.py b/src/octoprint/util/pip.py
index 53500e5d5..39f76c1e5 100644
--- a/src/octoprint/util/pip.py
+++ b/src/octoprint/util/pip.py
@@ -284,6 +284,7 @@ class PipCaller(CommandlineCaller):
@classmethod
def autodetect_pip(cls):
commands = [
+ ["@pip@"],
[sys.executable, "-m", "pip"],
[
os.path.join(

@ -52,13 +52,13 @@ in {
bedlevelvisualizer = buildPlugin rec {
pname = "BedLevelVisualizer";
version = "0.1.15";
version = "1.1.0";
src = fetchFromGitHub {
owner = "jneilliii";
repo = "OctoPrint-${pname}";
rev = version;
sha256 = "1bq39fnarnpk8phxfbpx6l4n9anf358z1cgid5r89nadmn2a0cny";
sha256 = "sha256-SKrhtTGyDuvbDmUCXSx83Y+C83ZzVHA78TwMYwE6tcc=";
};
propagatedBuildInputs = with super; [ numpy ];
@ -73,13 +73,13 @@ in {
costestimation = buildPlugin rec {
pname = "CostEstimation";
version = "3.2.0";
version = "3.3.0";
src = fetchFromGitHub {
owner = "OllisGit";
repo = "OctoPrint-${pname}";
rev = version;
sha256 = "1j476jcw7gh8zqqdc5vddwv5wpjns7cd1hhpn7m9fxq3d5bi077w";
sha256 = "sha256-d7miGMCNJD0siaZb6EnoMZCkKot7vnZjxNZX2TunJcs=";
};
meta = with lib; {
@ -92,13 +92,13 @@ in {
curaenginelegacy = buildPlugin rec {
pname = "CuraEngineLegacy";
version = "1.1.1";
version = "1.1.2";
src = fetchFromGitHub {
owner = "OctoPrint";
repo = "OctoPrint-${pname}";
rev = version;
sha256 = "1a7pxlmj1a7blkv97sn1k390pbjcxx2860011pbjcdnli74zpvv5";
sha256 = "sha256-54siSmzgPlnCRpkpZhXU9theNQ3hqL3j+Ip4Ie2w2vA=";
};
meta = with lib; {
@ -130,13 +130,13 @@ in {
displaylayerprogress = buildPlugin rec {
pname = "OctoPrint-DisplayLayerProgress";
version = "1.24.0";
version = "1.26.0";
src = fetchFromGitHub {
owner = "OllisGit";
repo = pname;
rev = version;
sha256 = "1lbivg3rcjzv8zqvp8n8gcaczxdm7gvd5ihjb6jq0fgf958lv59n";
sha256 = "sha256-hhHc2SPixZCPJzCP8enMMWNYaYbNZAU0lNSx1B0d++4=";
};
meta = with lib; {
@ -149,13 +149,13 @@ in {
gcodeeditor = buildPlugin rec {
pname = "GcodeEditor";
version = "0.2.9";
version = "0.2.12";
src = fetchFromGitHub {
owner = "ieatacid";
repo = "OctoPrint-${pname}";
rev = version;
sha256 = "1yjj9lmxbzmzrn7gahw9lj7554fphalbjjp8ns0rr9py3rshwxkm";
sha256 = "sha256-1Sk2ri3DKW8q8VJ/scFjpRsz65Pwt8OEURP1k70aydE=";
};
meta = with lib; {
@ -168,13 +168,13 @@ in {
marlingcodedocumentation = buildPlugin rec {
pname = "MarlinGcodeDocumentation";
version = "0.11.0";
version = "0.13.0";
src = fetchFromGitHub {
owner = "costas-basdekis";
repo = pname;
rev = "v${version}";
sha256 = "0vx06w9hqwy0k4r8g67y8gdckfdx7wl8ghfx6hmxc1s8fgkghfkc";
sha256 = "sha256-3ay6iCxZk8QkFM/2Y14VTpPoxr6NXq14BFSHofn3q7I=";
};
meta = with lib; {
@ -187,13 +187,13 @@ in {
mqtt = buildPlugin rec {
pname = "MQTT";
version = "0.8.7";
version = "0.8.10";
src = fetchFromGitHub {
owner = "OctoPrint";
repo = "OctoPrint-MQTT";
rev = version;
sha256 = "0k82h7wafbcqdvk5wjw4dp9lydwszfj1lf8vvymwbqdn7pf5h0dy";
sha256 = "sha256-nvEUvN/SdUE1tQkLbxMkZ8xxeUIZiNNirIfWLeH1Kfg=";
};
propagatedBuildInputs = with super; [ paho-mqtt ];
@ -208,25 +208,26 @@ in {
printtimegenius = buildPlugin rec {
pname = "PrintTimeGenius";
version = "2.2.6";
version = "2.2.8";
src = fetchFromGitHub {
owner = "eyal0";
repo = "OctoPrint-${pname}";
rev = version;
sha256 = "04zfgd3x3lbriyzwhpqnwdcfdm19fsqgsb7l2ix5d0ssmqxwg2r6";
sha256 = "sha256-Bbpm7y4flzEbUb6Sgkp6hIIHs455A0IsbmzvZwlkbh0=";
};
propagatedBuildInputs = with super; [
psutil
sarge
];
preConfigure = ''
# PrintTimeGenius ships with marlin-calc binaries for multiple architectures
rm */analyzers/marlin-calc*
sed 's@"{}.{}".format(binary_base_name, machine)@"${pkgs.marlin-calc}/bin/marlin-calc"@' -i */analyzers/analyze_progress.py
'';
patches = [
./printtimegenius-logging.patch
];
meta = with lib; {
description = "Better print time estimation for OctoPrint";
homepage = "https://github.com/eyal0/OctoPrint-PrintTimeGenius";
@ -237,15 +238,19 @@ in {
psucontrol = buildPlugin rec {
pname = "PSUControl";
version = "0.1.9";
version = "1.0.6";
src = fetchFromGitHub {
owner = "kantlivelong";
repo = "OctoPrint-${pname}";
rev = version;
sha256 = "1cn009bdgn6c9ba9an5wfj8z02wi0xcsmbhkqggiqlnqy1fq45ca";
sha256 = "sha256-S+lPm85+ZEO/3BXYsrxE4FU29EGWzWrSw3y1DLdByrM=";
};
propagatedBuildInputs = with super; [
python-periphery
];
preConfigure = ''
# optional; RPi.GPIO is broken on vanilla kernels
sed /RPi.GPIO/d -i requirements.txt
@ -261,13 +266,13 @@ in {
simpleemergencystop = buildPlugin rec {
pname = "SimpleEmergencyStop";
version = "1.0.3";
version = "1.0.5";
src = fetchFromGitHub {
owner = "Sebclem";
repo = "OctoPrint-${pname}";
rev = version;
sha256 = "0hhh5grmn32abkix1b9fr1d0pcpdi2r066iypcxdxcza9qzwjiyi";
sha256 = "sha256-MbP3cKa9FPElQ/M8ykYh9kVXl8hNvmGiCHDvjgWvm9k=";
};
meta = with lib; {
@ -299,13 +304,13 @@ in {
telegram = buildPlugin rec {
pname = "Telegram";
version = "1.6.4";
version = "1.6.5";
src = fetchFromGitHub {
owner = "fabianonline";
repo = "OctoPrint-${pname}";
rev = version;
sha256 = "14d9f9a5m1prcikd7y26qks6c2ls6qq4b97amn24q5a8k5hbgl94";
sha256 = "sha256-SckJCbPNCflgGYLHFiXy0juCtpvo8YS1BQsFpc1f5rg=";
};
propagatedBuildInputs = with super; [ pillow ];
@ -358,13 +363,13 @@ in {
touchui = buildPlugin rec {
pname = "TouchUI";
version = "0.3.16";
version = "0.3.18";
src = fetchFromGitHub {
owner = "BillyBlaze";
repo = "OctoPrint-${pname}";
rev = version;
sha256 = "1jlqjirc4ygl4k7jp93l2h6b18jap3mzz8sf2g61j9w0kgv9l365";
sha256 = "sha256-PNDCjY7FhfnwK7Nd86el9ZQ00G4uMANH2Sk080iMYXw=";
};
meta = with lib; {
@ -377,13 +382,13 @@ in {
octoklipper = buildPlugin rec {
pname = "OctoKlipper";
version = "0.3.2";
version = "0.3.8.3";
src = fetchFromGitHub {
owner = "AliceGrey";
repo = "OctoprintKlipperPlugin";
rev = version;
sha256 = "15yg2blbgqp2gdpsqqm8qiiznq5qaq8wss07jimkl0865vrvlz7l";
sha256 = "sha256-6r5jJDSR0DxlDQ/XWmQgYUgeL1otNNBnwurX7bbcThg=";
};
meta = with lib; {
@ -396,13 +401,13 @@ in {
octoprint-dashboard = buildPlugin rec {
pname = "OctoPrint-Dashboard";
version = "1.15.2";
version = "1.18.3";
src = fetchFromGitHub {
owner = "StefanCohen";
repo = pname;
rev = version;
sha256 = "0p94jwd7kagh3sixhcrqmsgbay4aaf9l1pgyi2b45jym8pvld5n4";
sha256 = "sha256-hLHT3Uze/6PlOCEICVZ2ieFTyXgcqCvgHOlIIEquujg=";
};
meta = with lib; {

@ -1,17 +0,0 @@
diff --git a/setup.py b/setup.py
index 6a6610e..cc45902 100644
--- a/setup.py
+++ b/setup.py
@@ -35,9 +35,9 @@ plugin_license = "AGPLv3"
# Any additional requirements besides OctoPrint should be listed here
# For now, require the working release, which is only 1.3.9rc1.
plugin_requires = ["OctoPrint>=1.3.9rc1", "psutil", "sarge"]
-from sys import version_info
-if version_info[0] < 3:
- plugin_requires.append("logging")
+#from sys import version_info
+#if version_info[0] < 3:
+# plugin_requires.append("logging")
### --------------------------------------------------------------------------------------------------------------------
### More advanced options that you usually shouldn't have to touch follow after this point

@ -2,16 +2,16 @@
rustPlatform.buildRustPackage rec {
pname = "zola";
version = "0.14.0";
version = "0.14.1";
src = fetchFromGitHub {
owner = "getzola";
repo = pname;
rev = "v${version}";
sha256 = "1mvin6pfqhsfhaifivbdi6qcn0dsa98w83m1n51q807gh4l1k2yj";
sha256 = "1cvvxiginwf1rldijzwk9gh63qc0ls5d7j3j8ri7yhk21pz9f6bi";
};
cargoSha256 = "02bk399c7x15a5rkaz7ik65yihkfbjn1q46gx7l8hycqq7xb0xmg";
cargoSha256 = "1hg8j9a8c6c3ap24jd96y07rlp4f0s2mkyx5034nlnkm3lj4q42n";
nativeBuildInputs = [ cmake pkg-config installShellFiles];
buildInputs = [ openssl oniguruma ]

@ -18,9 +18,9 @@
}
},
"beta": {
"version": "93.0.4577.51",
"sha256": "0b3mx5ns4pbrwc7s2iz8ffv8lhay6p9gj0dnsd1qzxgqwgrv37h5",
"sha256bin64": "1b8ypv14c5ky789dm17czv4yf7v21lwhnf2ygkdzryvd3i056nsz",
"version": "93.0.4577.58",
"sha256": "1i9ygy99lg9h0qyl46c02id9d1ig3brkvr8va0blpf7h8pg9251s",
"sha256bin64": "16cyn74sxz8lwdyb7x3z115czk9xvs67bb2bbnhrhnaszhhrzs4j",
"deps": {
"gn": {
"version": "2021-07-08",

@ -5,7 +5,7 @@ let
manifests = fetchzip {
url = "https://github.com/fluxcd/flux2/releases/download/v${version}/manifests.tar.gz";
sha256 = "sha256-/uD0hxtTJSr+2tZcwzOIQcEbikHOshWukEBSaK3FiP4=";
sha256 = "05khmpbv42wjpkdb4n51pnq678la6hjfhkyy49d0j2kcnvfd1m5p";
stripRoot = false;
};
in
@ -55,7 +55,6 @@ buildGoModule rec {
'';
homepage = "https://fluxcd.io";
license = licenses.asl20;
maintainers = with maintainers; [ jlesquembre ];
platforms = platforms.unix;
maintainers = with maintainers; [ jlesquembre superherointj ];
};
}

@ -2,13 +2,13 @@
stdenv.mkDerivation rec {
pname = "helm-secrets";
version = "3.8.1";
version = "3.8.3";
src = fetchFromGitHub {
owner = "jkroepke";
repo = pname;
rev = "v${version}";
hash = "sha256-UZu3jChEK59UrtUR2ze68Kkc6MkHRtTsfTOS/B96sLM=";
hash = "sha256-FpF/d+e5T6nb0OENaYLY+3ATZ+qcAeih5/yKI+AtfKA=";
};
nativeBuildInputs = [ makeWrapper ];

@ -1,16 +1,16 @@
{ buildGoModule, lib, fetchFromGitHub }:
buildGoModule rec {
pname = "tfswitch";
version = "0.12.1119";
version = "0.12.1168";
src = fetchFromGitHub {
owner = "warrensbox";
repo = "terraform-switcher";
rev = version;
sha256 = "1xsmr4hnmdg2il3rp39cyhv55ha4qcilcsr00iiija3bzxsm4rya";
sha256 = "sha256-BKqbxja19JxAr9/Cy7LpbZTJrt/pYfwtCbZMY0wwvZc=";
};
vendorSha256 = "0mpm4m07v8w02g95cnj73m5gvd118id4ag2pym8d9r2svkyz5n70";
vendorSha256 = "sha256-y8T1MV2xHr9n7XWmB4LikIzyGx+0XKhsxmatnCZFN9I=";
# Disable tests since it requires network access and relies on the
# presence of release.hashicorp.com

@ -1,655 +1,655 @@
{
version = "91.0.1";
version = "91.0.2";
sources = [
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-x86_64/af/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-x86_64/af/thunderbird-91.0.2.tar.bz2";
locale = "af";
arch = "linux-x86_64";
sha256 = "c2aabfe9a1ff2a196d08f80ca89468523edbcda6e756449cc1f4ae765b7dce62";
sha256 = "e2c209ddd2f6589e3b1ff629b0fde65ce84b79de88ce63b4950c082c69733402";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-x86_64/ar/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-x86_64/ar/thunderbird-91.0.2.tar.bz2";
locale = "ar";
arch = "linux-x86_64";
sha256 = "c9cd4f45a70761e00e877108c53c504305075bba03c9ec0a8cc3324757c66547";
sha256 = "554b79b721b5776d2408c00f0aa37ab0beb244aaa374e2701802417e15beb5c3";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-x86_64/ast/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-x86_64/ast/thunderbird-91.0.2.tar.bz2";
locale = "ast";
arch = "linux-x86_64";
sha256 = "2a531361709c5e0aab20f28b6edc6e58d4b1612c295320dbe903d8d5ada70004";
sha256 = "7a0e2092124c00d1844462c18caa23965e806c0e7fae7dd07940bccd96f3d9d3";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-x86_64/be/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-x86_64/be/thunderbird-91.0.2.tar.bz2";
locale = "be";
arch = "linux-x86_64";
sha256 = "4e2db1f6b4370e7a7a070ab3849141f8bea6b9f6497b17efca97377afe2cccd2";
sha256 = "b31781509ff194af3eee409e0e22e9cb82a69ffb4d4de418c4d854c14afb0cf7";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-x86_64/bg/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-x86_64/bg/thunderbird-91.0.2.tar.bz2";
locale = "bg";
arch = "linux-x86_64";
sha256 = "f6056f71b0b3c7b9e54b232133e11e142c31085c3d0af97c23ea656569078688";
sha256 = "ae275b3ad6771fbc67dc7a47046a9d7bd20259703c7d016a1d9934436ef2f4ed";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-x86_64/br/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-x86_64/br/thunderbird-91.0.2.tar.bz2";
locale = "br";
arch = "linux-x86_64";
sha256 = "1b07f6a0f32a6c823f7a1631085e2b4a98f3486d70423b617fd10602b3670d63";
sha256 = "c5bac788ae44cdcc89442d8bd5a07f50a936750427232b8e6bd9ea90d2e6fd80";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-x86_64/ca/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-x86_64/ca/thunderbird-91.0.2.tar.bz2";
locale = "ca";
arch = "linux-x86_64";
sha256 = "f41afd9a8e9a5bd2dff04f5ec886112dd8385f89c633960163b8c689ba692bcb";
sha256 = "0c578a299994e661c4d0d7e55128fef40449837d5da4fe45ed3992e3502bf305";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-x86_64/cak/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-x86_64/cak/thunderbird-91.0.2.tar.bz2";
locale = "cak";
arch = "linux-x86_64";
sha256 = "9a10f87df261a5a67b240e687879801bfb9ee2e367f599155fd24cf12cc53393";
sha256 = "f5b49ed118b8e1f8b2b78f823455368ec895133f15e677377f0de6305e6e31dc";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-x86_64/cs/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-x86_64/cs/thunderbird-91.0.2.tar.bz2";
locale = "cs";
arch = "linux-x86_64";
sha256 = "8c2e5aba275ecf5c3e769c56567ba1567006945c45be09f35688cf83b95136b5";
sha256 = "202b566a366e8c1a3c0a147acc9cd9009256193ae01a586b413459c8c526fa71";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-x86_64/cy/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-x86_64/cy/thunderbird-91.0.2.tar.bz2";
locale = "cy";
arch = "linux-x86_64";
sha256 = "d56388d698bc38e40d68736cf9b4c2bc81d6112ae356397769f95205dacbbfa5";
sha256 = "c1a4887fe96665d56fd8db662e6c78e8764eb75307a941ea73accac190de397c";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-x86_64/da/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-x86_64/da/thunderbird-91.0.2.tar.bz2";
locale = "da";
arch = "linux-x86_64";
sha256 = "717f1599219ebd72b78fbd94526aa20bbf8d107b164b50de01ec529750db11ab";
sha256 = "7de010e7273573ada2732af1c466391d94d645d53c6dd148034cbb62d8c3b217";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-x86_64/de/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-x86_64/de/thunderbird-91.0.2.tar.bz2";
locale = "de";
arch = "linux-x86_64";
sha256 = "ce210eaa9bd17bd97283c28935e2cc06c2120cc0a725e9777749c1c1d4c24d86";
sha256 = "ad93a79718d5d5477e5c2d5491cc5e3a8c5669efaa657252dd959e8ffa4dc464";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-x86_64/dsb/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-x86_64/dsb/thunderbird-91.0.2.tar.bz2";
locale = "dsb";
arch = "linux-x86_64";
sha256 = "6e955a2cae9078f72640bb06e60d1b6cbdf6e67f2f2881ecc8dd827ea74d188e";
sha256 = "66004909207ef8c51d3d41ada64430c9714162e2d6343cf4434b65f5835d0dc7";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-x86_64/el/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-x86_64/el/thunderbird-91.0.2.tar.bz2";
locale = "el";
arch = "linux-x86_64";
sha256 = "c2e71c09b69122bd5e6d2dd5008fd8e3d4f3dc7f17edf4964d1b0fa3ba47faf9";
sha256 = "fbc2fce4edae1dc07fe689e7bd69be035b3fe62f64cba0900dfeef8d7dd62c2d";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-x86_64/en-CA/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-x86_64/en-CA/thunderbird-91.0.2.tar.bz2";
locale = "en-CA";
arch = "linux-x86_64";
sha256 = "a23bffa53f9a1ec2812e367927463d2698386e3e2a74f47f352d81786c05541d";
sha256 = "8c5e0ed9cfea8158523df50bf8b680d6541ece70192dfa0b3e12e89dee0d6353";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-x86_64/en-GB/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-x86_64/en-GB/thunderbird-91.0.2.tar.bz2";
locale = "en-GB";
arch = "linux-x86_64";
sha256 = "ec5b334d4976ed46d30095c3e906eadd50d19c433c77446edc0cd0583175126f";
sha256 = "a63975d61c4474123dad2d8cc0f4324f16bb5812c61ba4d7a22c08a2fdb937ad";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-x86_64/en-US/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-x86_64/en-US/thunderbird-91.0.2.tar.bz2";
locale = "en-US";
arch = "linux-x86_64";
sha256 = "c9ff70d202311fb5347b87d67e2ecfe9904b579d8e94dd94369d67166408e1f7";
sha256 = "0e972bc7910dc9afe82a89cfd45d60cf0ed6f1b0c6adb86169e474c1699dff18";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-x86_64/es-AR/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-x86_64/es-AR/thunderbird-91.0.2.tar.bz2";
locale = "es-AR";
arch = "linux-x86_64";
sha256 = "fbba20795ae5b650adde2d6e93d7ca734bdb76a4948304b4968cec97fcecdc1e";
sha256 = "264cdb8e096647552ddcc91ae47f2404a1f280c964595e98426924f4ac201293";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-x86_64/es-ES/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-x86_64/es-ES/thunderbird-91.0.2.tar.bz2";
locale = "es-ES";
arch = "linux-x86_64";
sha256 = "09ffb1a1013bc9392341e4d4a3df190820f6a99828d155e24d7817ca8bebda12";
sha256 = "b258c31278b5c75a6fb29aa4be29a60ec1ac3344a7b1eef449a8c52d936aaf75";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-x86_64/et/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-x86_64/et/thunderbird-91.0.2.tar.bz2";
locale = "et";
arch = "linux-x86_64";
sha256 = "3feeabfa2ee1f8bb9e236594b7294fd841cf639a47b6b78070ef64acd35cd508";
sha256 = "dcd630338623c5b24733800e231c5a75514577a20329e9660011c7b2b13600cb";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-x86_64/eu/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-x86_64/eu/thunderbird-91.0.2.tar.bz2";
locale = "eu";
arch = "linux-x86_64";
sha256 = "2532b2609c02289d24f331f4e34898b18b426b5cf4f262c3e1e8d6a6b301ef24";
sha256 = "cd548c58e9c51e91812266a57e2260a8076d4be5130e6507563b17af51c35d85";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-x86_64/fi/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-x86_64/fi/thunderbird-91.0.2.tar.bz2";
locale = "fi";
arch = "linux-x86_64";
sha256 = "459fa042c920d3917ea13ac03c9d5560319c2d0b2851e0ad1e99d401a53e9bc9";
sha256 = "6b7bc8ea396f46be383d7667a97ea62512fc1869a53f023b764990c9c26e186c";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-x86_64/fr/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-x86_64/fr/thunderbird-91.0.2.tar.bz2";
locale = "fr";
arch = "linux-x86_64";
sha256 = "c48b5552c8ce8a51fe0222c7c1357319691f526e30bdff962d852cace77bf5bf";
sha256 = "76fcc5ac921ec8a4eddcf7f37d5f97f38e72e7d0760b1df7c6375dac2fe0faae";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-x86_64/fy-NL/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-x86_64/fy-NL/thunderbird-91.0.2.tar.bz2";
locale = "fy-NL";
arch = "linux-x86_64";
sha256 = "cd5b787a6de8106a3e6cb8a99992ab163e0a7e10fe847eec48e427ba8398c21c";
sha256 = "76afc70747bfae0ab55d76b440161fba946417d9a9f959006746e48c02922cf1";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-x86_64/ga-IE/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-x86_64/ga-IE/thunderbird-91.0.2.tar.bz2";
locale = "ga-IE";
arch = "linux-x86_64";
sha256 = "2ad66f5db3c1c10ea7f18c1c1693860fb355d696817973fe35133df98048fe1f";
sha256 = "793d6941c844dfa6c53e5d9bbde70101efb4f303b7f4b07b5f8cbb7f44c41033";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-x86_64/gd/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-x86_64/gd/thunderbird-91.0.2.tar.bz2";
locale = "gd";
arch = "linux-x86_64";
sha256 = "87c6c0c7151dda09d007ac0fb49ed3bfa9eb463b85f98f057e1733d19048573b";
sha256 = "311bcde1dcf00b3e21593300e7e05afe1b66531864340046c39b34ceabbc0c04";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-x86_64/gl/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-x86_64/gl/thunderbird-91.0.2.tar.bz2";
locale = "gl";
arch = "linux-x86_64";
sha256 = "5fc8b2adfbe204a64043983dad1da17eda77dfd89e18c20946d533884c2669f1";
sha256 = "2c7beb30c95b5afeb51ffd5d952dd96990fb997aa00f98811a7e656ec0d15293";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-x86_64/he/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-x86_64/he/thunderbird-91.0.2.tar.bz2";
locale = "he";
arch = "linux-x86_64";
sha256 = "81d7d3eca6e87ac41b96634484fa38ea1d130165b9b4df5f3170d124ea2e3a17";
sha256 = "864c0160562fc593109ef4afc0f7871eb881e32277131ea39c2e86358de2b287";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-x86_64/hr/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-x86_64/hr/thunderbird-91.0.2.tar.bz2";
locale = "hr";
arch = "linux-x86_64";
sha256 = "86fee237f65ac8a86c7db9aa490c82b6ed5031557ae2c11eff95523405148484";
sha256 = "053af50f6251daadf2cb8a77157d15bde93f12b913dca64537a533e0937c9f69";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-x86_64/hsb/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-x86_64/hsb/thunderbird-91.0.2.tar.bz2";
locale = "hsb";
arch = "linux-x86_64";
sha256 = "cdae048500f27f7a0f7922f9299435a2b329bf1304e8bfe3e12298998172539c";
sha256 = "e4cfe2c9136702a928a761c0d5da9429ab3002076c0248ddc12c13de7bda90d3";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-x86_64/hu/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-x86_64/hu/thunderbird-91.0.2.tar.bz2";
locale = "hu";
arch = "linux-x86_64";
sha256 = "ce0460af38a61924ad66a96473358941614181cb00bad714ce91f0ab9ccab09b";
sha256 = "cd620884dbc0b88454860fbd46a3ab11577396ba758c1e04d2e9f379ed131bd4";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-x86_64/hy-AM/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-x86_64/hy-AM/thunderbird-91.0.2.tar.bz2";
locale = "hy-AM";
arch = "linux-x86_64";
sha256 = "d76bb56d05efbdf9bb8843a9c6991ef2d016a97193cc919a5fc2042a12c76da1";
sha256 = "4ffaa441ea2dcd474d6ae4ec10258ecee85fd986901860d91e96b415bd232120";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-x86_64/id/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-x86_64/id/thunderbird-91.0.2.tar.bz2";
locale = "id";
arch = "linux-x86_64";
sha256 = "71c1ca210af2b1834363afbcd4ffbcdd592ef71296b5c0abffe8004e09f7587d";
sha256 = "2e64539c1591c88bfe482befcca6aa609b0352a9de45df24d5912a15058bbd01";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-x86_64/is/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-x86_64/is/thunderbird-91.0.2.tar.bz2";
locale = "is";
arch = "linux-x86_64";
sha256 = "02c91f3b4cc45e053637c574a4859fdf7b6e663ad09974153b3782d795aea907";
sha256 = "84452b732eb0c2b05346e21444e798a868ad90a9c574876cc6234cea69609ad0";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-x86_64/it/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-x86_64/it/thunderbird-91.0.2.tar.bz2";
locale = "it";
arch = "linux-x86_64";
sha256 = "8f69e3f7cf6d9f8acfd01e54f464e570fcc8bf0180e8b038c5afb75a42db0726";
sha256 = "420cee754b96b8acddbbd29fe880fb364b0456cd64099d829a8e2aa87faafbf6";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-x86_64/ja/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-x86_64/ja/thunderbird-91.0.2.tar.bz2";
locale = "ja";
arch = "linux-x86_64";
sha256 = "328748e49b4ae488902bb652c47c8bf7accc87384989177ded8e794d0c6b5a9e";
sha256 = "60508f7520e2457a71c4017afb7426f5800e8932ab5fc8b7b84cb20a8d057668";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-x86_64/ka/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-x86_64/ka/thunderbird-91.0.2.tar.bz2";
locale = "ka";
arch = "linux-x86_64";
sha256 = "07d565d2d43de3b3dcfd278302bcb9ac84f811cb643e2f48bfe33e155ecf77fe";
sha256 = "1145f89f523f9f7fa4b4030fa0b113150b7188d475a55463bca9600ca0ee2e19";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-x86_64/kab/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-x86_64/kab/thunderbird-91.0.2.tar.bz2";
locale = "kab";
arch = "linux-x86_64";
sha256 = "d82d24903e71a45597072cb19e53e22315d48145474dab7cb280fbb659ea4e2a";
sha256 = "25422658dae8b53a4d72840da7aff4bc70cdf94d08444913c4ac06d49c6e3356";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-x86_64/kk/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-x86_64/kk/thunderbird-91.0.2.tar.bz2";
locale = "kk";
arch = "linux-x86_64";
sha256 = "dfce35caf926d33dff1f9728d1f051ffb215f5be87872102e810fb7cba40ce39";
sha256 = "0cefe7e7d93d8d3603fc13a34ffff40d0535713f4ae362d34ddeb3fa4ce8b2e0";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-x86_64/ko/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-x86_64/ko/thunderbird-91.0.2.tar.bz2";
locale = "ko";
arch = "linux-x86_64";
sha256 = "eb990e826852398185849c07a0656eb5d848bbd827debcffb4db54e7cb78de26";
sha256 = "3644cdc76d557ee2994c4ba4f16d9d2ec66a06a163fdee30a91aa7b8b75f8ab8";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-x86_64/lt/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-x86_64/lt/thunderbird-91.0.2.tar.bz2";
locale = "lt";
arch = "linux-x86_64";
sha256 = "20b01c81284e89fcc3d4172a3c57ca7820ebfcd40b4dbe1c9ec5dc4119eddc50";
sha256 = "33371b11574309d011968b0ec7cab94b5a61f7629b60ecb888897fa9d1ba0445";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-x86_64/lv/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-x86_64/lv/thunderbird-91.0.2.tar.bz2";
locale = "lv";
arch = "linux-x86_64";
sha256 = "1cad6e5d796ff39af0d94008969439dd9bc2308f66fe23b275ecd9a11ce1d00f";
sha256 = "9460f51bc9a27c7fc69d425cfa013a6b45603764055b0f31cac38e8c5092ee5c";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-x86_64/ms/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-x86_64/ms/thunderbird-91.0.2.tar.bz2";
locale = "ms";
arch = "linux-x86_64";
sha256 = "f6e5e90dbac60ad84ad4be6d69d12607711a95521e617933d6615d761e4636c5";
sha256 = "a2b2d1bbba8f5469465ff5b301d95f37453e22b7cc259d33b81382debf056889";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-x86_64/nb-NO/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-x86_64/nb-NO/thunderbird-91.0.2.tar.bz2";
locale = "nb-NO";
arch = "linux-x86_64";
sha256 = "3b2666b1a633e291e9e52dd10c381b89415de8d3994030f3db05f7a656872d5f";
sha256 = "dbce148234a027c3118d94aefbf77a5ed6b5f0dcb636704408c326c08c76e474";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-x86_64/nl/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-x86_64/nl/thunderbird-91.0.2.tar.bz2";
locale = "nl";
arch = "linux-x86_64";
sha256 = "b1064d31f9e9757eb4a988da31128de40a50d2061c2bb96138e00ce20903017f";
sha256 = "bd99d05225bdaacd4ae1cfde09da0b8667427f7723f48b5ad41c13d09b4e8656";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-x86_64/nn-NO/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-x86_64/nn-NO/thunderbird-91.0.2.tar.bz2";
locale = "nn-NO";
arch = "linux-x86_64";
sha256 = "6eca782596910cb9f340aa5640e46552054e4beb014bcdd3dc286683570a908f";
sha256 = "1d48d681562120c52ac5042937406422d0264343f43720bc04870331a3b888ec";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-x86_64/pa-IN/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-x86_64/pa-IN/thunderbird-91.0.2.tar.bz2";
locale = "pa-IN";
arch = "linux-x86_64";
sha256 = "c1e03c9a276267c7f15a4e39cb608f76bd6825363cff934e4b30da09f9c1c978";
sha256 = "271008a2f327abda4c140183e966c9acd6116577ac4bc13db7ab674d40b90206";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-x86_64/pl/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-x86_64/pl/thunderbird-91.0.2.tar.bz2";
locale = "pl";
arch = "linux-x86_64";
sha256 = "4e07473e2c1cba237f1b01721943b1275282b05dcb608c74bc957d64fdba4c78";
sha256 = "da0960c222b4625f717991f2e3f7fb5155c35ef470f87f2d9387469401bac62b";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-x86_64/pt-BR/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-x86_64/pt-BR/thunderbird-91.0.2.tar.bz2";
locale = "pt-BR";
arch = "linux-x86_64";
sha256 = "81be1b2651211fc8701e6ed9733e9e0e4ccc0898cf1da767ef1589ee870dc63d";
sha256 = "160cca291d27bfcc6d2196090814378110a210c8ab6d62f5296eb217be4c9e3d";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-x86_64/pt-PT/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-x86_64/pt-PT/thunderbird-91.0.2.tar.bz2";
locale = "pt-PT";
arch = "linux-x86_64";
sha256 = "39f240a740ddb979d62b0ed75f1120895e16e8bed22c6c4308865ee07545401d";
sha256 = "1b4fc4a92388fa1cfac33f9f77e7f5e2f9c7088ab81b1eb3f8346bd77dd3f08a";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-x86_64/rm/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-x86_64/rm/thunderbird-91.0.2.tar.bz2";
locale = "rm";
arch = "linux-x86_64";
sha256 = "60211c33985a2e5fd57f266e7c51262cb1cf2b32fd885f9b56886f02b1d67b31";
sha256 = "cd78d4e737fc6c1b3121472e453ac3a20e7f1451b648e6b56e811bb8b05a5bb8";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-x86_64/ro/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-x86_64/ro/thunderbird-91.0.2.tar.bz2";
locale = "ro";
arch = "linux-x86_64";
sha256 = "90e354dc8e195dbf4fe7f16ec7837cb53f445794556c5b2f632e77f02be7b824";
sha256 = "e83ed778d455ac6c892caa75ee14d8bee7f232f8fce9a72555f3fa7f2a9cd7dc";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-x86_64/ru/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-x86_64/ru/thunderbird-91.0.2.tar.bz2";
locale = "ru";
arch = "linux-x86_64";
sha256 = "f03a06814d8e0fc9a741d2cb7aa83646c44052516b8be9b6adffe37d21fa37ba";
sha256 = "110a6bf1fd3bfb7b24799b3d12c6660730ccd43b687c82159201849f1a17b2c1";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-x86_64/sk/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-x86_64/sk/thunderbird-91.0.2.tar.bz2";
locale = "sk";
arch = "linux-x86_64";
sha256 = "88dc86d35554b8298bb20d15ce4890992b9f7b04f3ad7ff3fcdc7540629ec3b2";
sha256 = "26fa89742dabf2929f81a0882ce527330aa63bb67af9066e2a041cc4a330857c";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-x86_64/sl/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-x86_64/sl/thunderbird-91.0.2.tar.bz2";
locale = "sl";
arch = "linux-x86_64";
sha256 = "26a0f2a73fa73b99f9fc81deb7e4764fd8b8ce062acfef1fd0b8f777365571d5";
sha256 = "93f4a4c327a3ed6270d9765bc466bfc03bd4c6fc457f933f7131a77768209ea4";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-x86_64/sq/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-x86_64/sq/thunderbird-91.0.2.tar.bz2";
locale = "sq";
arch = "linux-x86_64";
sha256 = "a4557802a3b7d89cc3594cc1c12d04534543e3bf8825bb28ba176658a3de3fa7";
sha256 = "bdfe099edfd92ca449f9db5b4207ab1bfc5660964a99c69301f309bd7f4405e2";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-x86_64/sr/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-x86_64/sr/thunderbird-91.0.2.tar.bz2";
locale = "sr";
arch = "linux-x86_64";
sha256 = "6cbb7f29111f90e4bc42e1e1900b0a17549eb7409846ccf2378d3d8781c2af82";
sha256 = "be61663f615151c423d1551419bc36c43b74ecb406ee70a66781a4c931d5db1b";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-x86_64/sv-SE/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-x86_64/sv-SE/thunderbird-91.0.2.tar.bz2";
locale = "sv-SE";
arch = "linux-x86_64";
sha256 = "d211b1673d1524d27f22334c592a3a9a2b0aaf887467b3dd10359146da4c0cda";
sha256 = "cea5ade716541897197bdabd7a2de2cc78d478b6bcc2be19bbbe3cc327544f1a";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-x86_64/th/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-x86_64/th/thunderbird-91.0.2.tar.bz2";
locale = "th";
arch = "linux-x86_64";
sha256 = "259af6cce3197e45fb201740e8bc5d50988979626445dc41e9a9152922887c1f";
sha256 = "42ae7ae92f60d466f1759170b7516191df49cdbffd8f792c69635839a91c82e8";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-x86_64/tr/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-x86_64/tr/thunderbird-91.0.2.tar.bz2";
locale = "tr";
arch = "linux-x86_64";
sha256 = "7671dab2bbf6d70170314b07d85120bd77df2892c8d4f6419f4063153d01e721";
sha256 = "d087650517976df85e38ee95bafa00f50e878870d5c8b4d3227436c1d238aab1";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-x86_64/uk/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-x86_64/uk/thunderbird-91.0.2.tar.bz2";
locale = "uk";
arch = "linux-x86_64";
sha256 = "6cb56c07f0ba5ccca171fccf8d95629acdf07fb1f24e2f4795a5b30fe15b3d7c";
sha256 = "0963c779f56aa7e102e939cad8c3cb2c91013d8a6a1c81e1b95f9bd59b0707fe";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-x86_64/uz/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-x86_64/uz/thunderbird-91.0.2.tar.bz2";
locale = "uz";
arch = "linux-x86_64";
sha256 = "35a3df724ee40e4b613a248471abd4b0fa8b4d314681cc96ec746843f3bc2930";
sha256 = "18c5ef666ccd0e4ea82d705ce96a654546b5eeae66bbec27b74987174bce5c28";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-x86_64/vi/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-x86_64/vi/thunderbird-91.0.2.tar.bz2";
locale = "vi";
arch = "linux-x86_64";
sha256 = "d99f3fd7afb3d3e210bcc2181d9f43be29be07ad44362c7c9113410bbc84239c";
sha256 = "ae59396c600ac3c13e5c4a7bb45439b7ac8ec31305398c0f943a542686410c35";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-x86_64/zh-CN/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-x86_64/zh-CN/thunderbird-91.0.2.tar.bz2";
locale = "zh-CN";
arch = "linux-x86_64";
sha256 = "25f2983548dd324b0194641c0d43ace088626d0ef2e6048ced3d6874a933861d";
sha256 = "cb6d6648c683677b7513196b883e51666a175b3739dd45fa2c6e2e84869d9257";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-x86_64/zh-TW/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-x86_64/zh-TW/thunderbird-91.0.2.tar.bz2";
locale = "zh-TW";
arch = "linux-x86_64";
sha256 = "7d54efb8587eef38bcfcba9059d5d5429a81a5e808df24a4f33a9ec61483803a";
sha256 = "8bde8041417693842644ae183a7830720be03c02e699d7d5c1d472724a0b8687";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-i686/af/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-i686/af/thunderbird-91.0.2.tar.bz2";
locale = "af";
arch = "linux-i686";
sha256 = "91ceccdf21929d526145f6f71cd21544b83b446d39887d65e6f1419e4ae1e904";
sha256 = "b68bfdc320c42caa0b53e84c8ec6d5894079738f2fed7a9eb961b7d809ab2eaf";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-i686/ar/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-i686/ar/thunderbird-91.0.2.tar.bz2";
locale = "ar";
arch = "linux-i686";
sha256 = "3bc50c5b718fca792475534488891f8fe7e69320fbd24aae410d2b9121ba4f29";
sha256 = "6ba45770a09dbebc1ca5c496374e9cc4c0bdefd19b3c3f384d6829e801ca7224";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-i686/ast/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-i686/ast/thunderbird-91.0.2.tar.bz2";
locale = "ast";
arch = "linux-i686";
sha256 = "e9e4faa03141bce539abf86a611c814bab61401711fbe045ae4977db57c83ffb";
sha256 = "76ed8764f119a56c1398dccaf6385c92936f84f959cbc38372c866cff653f93c";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-i686/be/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-i686/be/thunderbird-91.0.2.tar.bz2";
locale = "be";
arch = "linux-i686";
sha256 = "ef5c29de8ac27fc198f00a5f12e0b3824b692c5fcb7bdfc0a3e0aaa08ef4f2a7";
sha256 = "5509d1e4f98fba58d7b5c7dde1ec531eaf3439a22bc8e9eb0843dcbed4d094bf";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-i686/bg/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-i686/bg/thunderbird-91.0.2.tar.bz2";
locale = "bg";
arch = "linux-i686";
sha256 = "b6409a8ff358042f2c6d9258e5d0bf4d341793c91ccb1f088f6a0c376005778a";
sha256 = "28e6184008449d72dcd0d03c9ffd25eef0746100b67c7cf0684b40d9a7a52870";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-i686/br/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-i686/br/thunderbird-91.0.2.tar.bz2";
locale = "br";
arch = "linux-i686";
sha256 = "47812c836e816f93c73918f31086ed203b7ea409c916a070749c72e715e0a957";
sha256 = "35915f0edd5b0a63b531a8eec680a6403866e0b8f25765cf8ed26344fe82c0a6";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-i686/ca/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-i686/ca/thunderbird-91.0.2.tar.bz2";
locale = "ca";
arch = "linux-i686";
sha256 = "6257dae22b8b7fb44cd5c4845f44108c06b933c895b401fcc1c02463d3c19c11";
sha256 = "7f869a4728c1ecff758486707836b565897f68f6cf4b13218f0555f9a758630b";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-i686/cak/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-i686/cak/thunderbird-91.0.2.tar.bz2";
locale = "cak";
arch = "linux-i686";
sha256 = "21371bf6103269c2da7dd521297a4472c9bea09019a1916f9bdf0bf42d9ea21e";
sha256 = "5d512196774e8ba63439a2545c30ba7ec11f6c6a0967642b0e7e58629a036f31";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-i686/cs/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-i686/cs/thunderbird-91.0.2.tar.bz2";
locale = "cs";
arch = "linux-i686";
sha256 = "4bf27c787004bc06b1d05ec01f3c01040dcd6976e9e1df53aad995c2bbad60c9";
sha256 = "31ee6eff33541ceb69df9ce1b5fe7ef43e2937bfd0c306611e3e35a698cb6308";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-i686/cy/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-i686/cy/thunderbird-91.0.2.tar.bz2";
locale = "cy";
arch = "linux-i686";
sha256 = "2365ba2da2d6a1bac7a605af7d9e74bb4850c74a74470442aa0e3a03f9a992e2";
sha256 = "07dd83614f7920e2f49b9455b9b2734a2f8a8a555f46691b9a4a34a713c6a035";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-i686/da/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-i686/da/thunderbird-91.0.2.tar.bz2";
locale = "da";
arch = "linux-i686";
sha256 = "402f977ad6b04c68cd3f7fbbc60ff9fda188a2e8cb76d3e1c2f206478a4ebb20";
sha256 = "59132d98c63574619e23d49013b7e7e8927c348c2ff1a4f0b990c23e1434bcce";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-i686/de/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-i686/de/thunderbird-91.0.2.tar.bz2";
locale = "de";
arch = "linux-i686";
sha256 = "5ca1e16b06986680783dd3dda515992eed8a4e7e9117d32f010b6a8943d7dedc";
sha256 = "22a6a5a2f3cf61570c52d5e531fa6ffd022f83834db61732b79cb0f801234a15";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-i686/dsb/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-i686/dsb/thunderbird-91.0.2.tar.bz2";
locale = "dsb";
arch = "linux-i686";
sha256 = "435d258c0bee4489ddc4fe07c1d4c98b35132b3f7bcf4b8239a037100808386e";
sha256 = "9a7702a7a2872ec6088cfa0067d4c2bec9c9ebe9ff31a3ae0f50c797eea1d024";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-i686/el/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-i686/el/thunderbird-91.0.2.tar.bz2";
locale = "el";
arch = "linux-i686";
sha256 = "090fd4a515755cec803d642760fc55acd73a2c44fcf93ebd22db7c325ad46cf0";
sha256 = "13369e948d0cd936a9636e065b9455dee760c282b243b5ad4e932dd935ad0eca";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-i686/en-CA/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-i686/en-CA/thunderbird-91.0.2.tar.bz2";
locale = "en-CA";
arch = "linux-i686";
sha256 = "8cbfaa6367ba80c0ec21996bc16cdeeca8fbdba5e6b133b745545026d6545b6b";
sha256 = "e5e2ed3c68f03b443874f835b8303491dff70ed30e29515013786790bf333506";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-i686/en-GB/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-i686/en-GB/thunderbird-91.0.2.tar.bz2";
locale = "en-GB";
arch = "linux-i686";
sha256 = "a9d21dba162b470785c97e084debaad067766210316a3c3a41582c829bd2b961";
sha256 = "35422b96dabf6dc2baf470916459dcfc672ad9fb1a6fb842c28f761963766357";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-i686/en-US/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-i686/en-US/thunderbird-91.0.2.tar.bz2";
locale = "en-US";
arch = "linux-i686";
sha256 = "b0706e6a49d9551b1eb089d915e46d49c35ff787c614937b69e30f6d56f5b503";
sha256 = "27c43ab01a49c936c3864282c54bb952f0e62330afac3eefd8848e58f99c43b5";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-i686/es-AR/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-i686/es-AR/thunderbird-91.0.2.tar.bz2";
locale = "es-AR";
arch = "linux-i686";
sha256 = "4766e49683ee14859b9e81e2782a18d615140ed902dbbc6e07144831f1525b91";
sha256 = "205fc7ba9311aee475c4057b933246bf98bb06164fc1a0128d96cbb42cc4ee4a";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-i686/es-ES/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-i686/es-ES/thunderbird-91.0.2.tar.bz2";
locale = "es-ES";
arch = "linux-i686";
sha256 = "1f46e0e92b79b52dcf36892512b293bfe0aafe80b8c129013aa6415d2d5b8369";
sha256 = "a560e4a2d1ece441f122dab0a27a25ba0d3b46cdebd9ebaa9b63f1e4d293c563";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-i686/et/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-i686/et/thunderbird-91.0.2.tar.bz2";
locale = "et";
arch = "linux-i686";
sha256 = "d0b1f6fa06a500ff8ae8f014b16111bbf28cf23e0c94f1d6cb83a31a0164b432";
sha256 = "60016f69a705c7f953014cbd546d483d3261cc70be2d10a5c3c1012fcc1d88f0";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-i686/eu/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-i686/eu/thunderbird-91.0.2.tar.bz2";
locale = "eu";
arch = "linux-i686";
sha256 = "e7e7335d1a72611bf10f28267e1cd9c36e84ae785b56615ab66a8f113dffb0bd";
sha256 = "2c2da546ac66bad5e4e86fc417407497b9248529528d0c348a9be45ad50ff95e";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-i686/fi/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-i686/fi/thunderbird-91.0.2.tar.bz2";
locale = "fi";
arch = "linux-i686";
sha256 = "a1cf4319ee4115fc1b96fa937947283ea69f59dcb65fc3b280353629b9955ff1";
sha256 = "ff8ecc121ef8c05e38f75b44602ae27363f9c27002507ddc263b0fd133a3a6d1";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-i686/fr/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-i686/fr/thunderbird-91.0.2.tar.bz2";
locale = "fr";
arch = "linux-i686";
sha256 = "cedb9a2597d4fe16706fce0f1dbaf571ff306c29699c4079598d8c20e87e4ee8";
sha256 = "bbe6c436894d25a1becb9e83b1640b63a35316468a55a20acc6991b3856c12f4";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-i686/fy-NL/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-i686/fy-NL/thunderbird-91.0.2.tar.bz2";
locale = "fy-NL";
arch = "linux-i686";
sha256 = "9051c481d79e74253a0f74ae35cb6984daa70892ef6f19643b2ff4d403b62c26";
sha256 = "bf5dbed617af49fd952f21ec795c9970956277a7f380802f8cf28705dff5d045";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-i686/ga-IE/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-i686/ga-IE/thunderbird-91.0.2.tar.bz2";
locale = "ga-IE";
arch = "linux-i686";
sha256 = "13d49e563da0e378f44c49918af7ef84e41e112e2411c56e3c951014ba78b73a";
sha256 = "b04348cbdce3b99cc0de580ef6aded2a946e4f338873c1069c86feab35f8341d";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-i686/gd/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-i686/gd/thunderbird-91.0.2.tar.bz2";
locale = "gd";
arch = "linux-i686";
sha256 = "4b4c76da22ececdbd927e7e3fcbf54a58947c66d982fca03042fc0a91c9a3857";
sha256 = "350b1806e3504a57cd54ef89f424f634f89781670427773bec00bbeb9d4712a5";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-i686/gl/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-i686/gl/thunderbird-91.0.2.tar.bz2";
locale = "gl";
arch = "linux-i686";
sha256 = "cd194c3bc4ef9d896dbf1367a96ac18601a7bb446150ffd6c1e3e1c140642196";
sha256 = "d9196254a829834a222e007177218a295629efc635052336a8c855e08f1bccd4";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-i686/he/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-i686/he/thunderbird-91.0.2.tar.bz2";
locale = "he";
arch = "linux-i686";
sha256 = "3a3ebd2554a125cb10e78b4b0ffa8ce0665aa85573c2f4a67801754200ca85e5";
sha256 = "47fb607ce180dd9dea8ee1e011c8a37c02e23a10e2c4de6c40e0c86ae069e533";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-i686/hr/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-i686/hr/thunderbird-91.0.2.tar.bz2";
locale = "hr";
arch = "linux-i686";
sha256 = "7b80c8839cacf4fa85fdd2630562647356f6608d9652c2651e78301405876054";
sha256 = "a3c3266a345bd6a8443059d11c9dedd3471b5904812d8ff08d94283d439f32a7";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-i686/hsb/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-i686/hsb/thunderbird-91.0.2.tar.bz2";
locale = "hsb";
arch = "linux-i686";
sha256 = "ddaa6c857cd0fe2c05a229c4da47b33e1bf96d0177b6b228566a0463d5e5cf7f";
sha256 = "10e599806fa3064a57482d4c4b69e7fa3c98327fdc47c0a0e4709f9ee385ad01";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-i686/hu/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-i686/hu/thunderbird-91.0.2.tar.bz2";
locale = "hu";
arch = "linux-i686";
sha256 = "48b9e4e51d2340ba0de1167ccd1da4d6de95ffe732a58eb4e30e31a272b1c048";
sha256 = "d57356a47cebcc96c57199363df10a0aca1178683343021e79c9e7e0c03f62f9";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-i686/hy-AM/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-i686/hy-AM/thunderbird-91.0.2.tar.bz2";
locale = "hy-AM";
arch = "linux-i686";
sha256 = "6955670c2beae55679c55e97a03a2bafd2a389aa990d84a41a58029341f42f74";
sha256 = "32773d9daa46251c1eed72eba229d7567b693681fb46d2da966eb67d025bd020";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-i686/id/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-i686/id/thunderbird-91.0.2.tar.bz2";
locale = "id";
arch = "linux-i686";
sha256 = "8d8b8b9675a400ae4969e89a6b365e6ecbe4c80dcb4da41ea11280dd415d3da2";
sha256 = "6d205b1905d193285a2ad1cbcbb1fbf4e1c71cccc9a54f63daa120179e77bba6";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-i686/is/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-i686/is/thunderbird-91.0.2.tar.bz2";
locale = "is";
arch = "linux-i686";
sha256 = "39e361fb9bd8097a59b048ed53f6d923c4e17ea597fe6ae0620eff28bfba1b5a";
sha256 = "0fa18f5b9e9e1e3549fcd109fd4dd8392d7573b9429a61053b54b0538efd5b94";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-i686/it/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-i686/it/thunderbird-91.0.2.tar.bz2";
locale = "it";
arch = "linux-i686";
sha256 = "c0b9f37d53924f91e31660c82992cd9d05878bed08b48c71566cdef4c6cae9eb";
sha256 = "67034f9a604606cf6a90b5699b46d12b76957da77336255dee1adcf6dfb4a2e0";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-i686/ja/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-i686/ja/thunderbird-91.0.2.tar.bz2";
locale = "ja";
arch = "linux-i686";
sha256 = "faba4c83061f4834b4c1fc5c9895837ccbd0a9727599cb71da918be9825c8e6e";
sha256 = "259a236852334eed51f3e922c3e4e74810b8d9d82f2b6e1486cfdfb9dc659ed9";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-i686/ka/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-i686/ka/thunderbird-91.0.2.tar.bz2";
locale = "ka";
arch = "linux-i686";
sha256 = "8e4368e366c697e7d78e5bcf100286dd510d940bd89eb6a84712f2281495a201";
sha256 = "93bac3418c44519c9b9eae6d2cb030b18262f6c586b4480b3e5d828faf18afcd";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-i686/kab/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-i686/kab/thunderbird-91.0.2.tar.bz2";
locale = "kab";
arch = "linux-i686";
sha256 = "cd5155d346461fc0ccbc468a1dbbba286b922bfb25271005dff4de4b7ae3f299";
sha256 = "1487aeef3d2b2eecdaac1463e35f04789e155e2d1f0f43e47be81da3abe96e33";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-i686/kk/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-i686/kk/thunderbird-91.0.2.tar.bz2";
locale = "kk";
arch = "linux-i686";
sha256 = "7d5469688164d896c438541c02e6df9bbc59b804cbdd2ef7bcd68b27959f1336";
sha256 = "1d3b7a92a8206d1fc0af0f86e26af218f073cb6f4f4dc3519366552f48bb932d";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-i686/ko/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-i686/ko/thunderbird-91.0.2.tar.bz2";
locale = "ko";
arch = "linux-i686";
sha256 = "6b51ea1fdb1d0cb73c82665449da9003b98444a234e06ea3b87be8cd689254c2";
sha256 = "913757dee44a98d85b337f07a743d588a1bdf9425c3f5cd2fb4985fa59340e5f";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-i686/lt/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-i686/lt/thunderbird-91.0.2.tar.bz2";
locale = "lt";
arch = "linux-i686";
sha256 = "c678002ac4f0353da610a7a208aafa1af80fdafc50811c79140d5f2e4bdb9d23";
sha256 = "c3ad9eccb96a5762bff235f95640c01c7a55d09e8ee613aace4cc26ad36aa60e";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-i686/lv/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-i686/lv/thunderbird-91.0.2.tar.bz2";
locale = "lv";
arch = "linux-i686";
sha256 = "72bdd8d53008332f579385889c7b55b56814ba369d482d7b86f33059b6a89b82";
sha256 = "125e2c82c1daed6ce109f3585e471d4037e531aec7a4998438cfe5f0614884ed";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-i686/ms/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-i686/ms/thunderbird-91.0.2.tar.bz2";
locale = "ms";
arch = "linux-i686";
sha256 = "5e891ea8cd26ec89f41d0ce2e048d05e4f7540ce0ff06ddd1efd6dc00c90daed";
sha256 = "17deff39fb4dcbbb23d932db247f12528a994ec48d9ce32831148841c38e2b58";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-i686/nb-NO/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-i686/nb-NO/thunderbird-91.0.2.tar.bz2";
locale = "nb-NO";
arch = "linux-i686";
sha256 = "657235b998d47baab559c11f60f4955275eb12875ef4e2d3a225fc5905dc4d48";
sha256 = "e6f19f4fa520c092db1c0eee28393ff13e38e2214d7073f98cc68a56c5d4575d";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-i686/nl/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-i686/nl/thunderbird-91.0.2.tar.bz2";
locale = "nl";
arch = "linux-i686";
sha256 = "eb98cea41e08f1d0ecf79291ba94cf24f2eaaff5c9c47969c2dcec9d22b02c5c";
sha256 = "3935d7bb85663ec84c6cab1c42406663b63e883c2fcb35673c156f38f3388a34";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-i686/nn-NO/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-i686/nn-NO/thunderbird-91.0.2.tar.bz2";
locale = "nn-NO";
arch = "linux-i686";
sha256 = "37f05dc4012f543e46be07a1f27d0eba67df5852008595b77da22d0050225618";
sha256 = "a3dc079d6c64bf913728b70be84b9ee7266e368b287660f09e458a1c08ddf0b2";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-i686/pa-IN/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-i686/pa-IN/thunderbird-91.0.2.tar.bz2";
locale = "pa-IN";
arch = "linux-i686";
sha256 = "80939eb26e7deb62c381ceb9d8a688adc18af5944ca0f31e027ef5d6bfe4f3ea";
sha256 = "e3587c4a2a6c479edadbd58228c5438af81ffe0031332a99bfc0d53b62794def";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-i686/pl/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-i686/pl/thunderbird-91.0.2.tar.bz2";
locale = "pl";
arch = "linux-i686";
sha256 = "93ad29d7c97d501587bcf333df7bfe0e9692d42269914ffad5217ace78a2cb2f";
sha256 = "f5c231f36c59669b7f8f2aa7936a29f0e0c459158fe271142c28561eb9586e09";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-i686/pt-BR/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-i686/pt-BR/thunderbird-91.0.2.tar.bz2";
locale = "pt-BR";
arch = "linux-i686";
sha256 = "a1ee15db8610e2cd3d21e817291a8fa492d6811fd566ad75b202fb420b0ed4d4";
sha256 = "7c6286427fe27eae8f98ebca95ee36befe110012026909ee95e42b3bc9aae637";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-i686/pt-PT/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-i686/pt-PT/thunderbird-91.0.2.tar.bz2";
locale = "pt-PT";
arch = "linux-i686";
sha256 = "5fb985c57660547e5c22e4e2f31dccf1db140af149bbaf24ec7003c7249ddc71";
sha256 = "95ef322cf560ac3f428db9e2872168007691862e0a3f2d145713d52ab9da1a50";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-i686/rm/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-i686/rm/thunderbird-91.0.2.tar.bz2";
locale = "rm";
arch = "linux-i686";
sha256 = "acf3cdcd21d10339f6e6e61880a36c9c63f3d5e06aa5742858bfcced8f562094";
sha256 = "68c40f4800e7cb24b2281eb5f69351b0592bea4a725a8abc2b634d00a1e8c759";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-i686/ro/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-i686/ro/thunderbird-91.0.2.tar.bz2";
locale = "ro";
arch = "linux-i686";
sha256 = "584a892f959800744bdf06e1b181c78b71526f12076b1a299bace0bd96c2a741";
sha256 = "00e216d87a7a0bd4b3f852051449f130f98133c40dd5360bedae8322e6a270ab";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-i686/ru/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-i686/ru/thunderbird-91.0.2.tar.bz2";
locale = "ru";
arch = "linux-i686";
sha256 = "3f24b228ed6caef730dd36c2e22620b7e4b8365de0682017104b57081b1b27ae";
sha256 = "997f644eca0b6341002c15b72f4c76e925c6581ccb90a2d1d8f2982527125688";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-i686/sk/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-i686/sk/thunderbird-91.0.2.tar.bz2";
locale = "sk";
arch = "linux-i686";
sha256 = "e8c317d088bb6b4ae601e439b45abde1641f152edfc64c1da5f479472c4e027d";
sha256 = "147af1d186d27113544f4c23d0158389ce349a40d4996ab0897e28809f914244";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-i686/sl/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-i686/sl/thunderbird-91.0.2.tar.bz2";
locale = "sl";
arch = "linux-i686";
sha256 = "9e0d376b0694e7007d889e8d6898bfef68734f52dcbe62ed5b141870ea6fd564";
sha256 = "bc5bcdd54e391b380035450f89439c2338bc4aae8d79c4a553e580dababddc86";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-i686/sq/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-i686/sq/thunderbird-91.0.2.tar.bz2";
locale = "sq";
arch = "linux-i686";
sha256 = "e2d87bfe4e89d6546e6fc55960426028036574758ddf97e6e039f6a5f7d43c10";
sha256 = "5700bda1ecd8aec35638aa007216079146a627ef330b901f919f177007e6bbd2";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-i686/sr/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-i686/sr/thunderbird-91.0.2.tar.bz2";
locale = "sr";
arch = "linux-i686";
sha256 = "871274312d5af4f1810017bc49ddccffea6d0b08276bf035ced5a39619c522e3";
sha256 = "648ac37b029ad458ff6759bf6cd06a696d3c02899f6e0d44ecab7a196bbb439b";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-i686/sv-SE/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-i686/sv-SE/thunderbird-91.0.2.tar.bz2";
locale = "sv-SE";
arch = "linux-i686";
sha256 = "d3280b7cc1638057be5edc05bc0f7e76cdd2440e4bd713a8b1da4db0d4f4c119";
sha256 = "38c88fe79c505e9b14a778ae6a8f0ab8d291656ef7cdd1a995a7fe199811098f";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-i686/th/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-i686/th/thunderbird-91.0.2.tar.bz2";
locale = "th";
arch = "linux-i686";
sha256 = "4b1dd2d7c478bc0fec0d8379b025170ce569e4043b06dc08fbf7a97fda93dc0e";
sha256 = "bead245a51de35bdc4474c04b813c4ce2175c01b7ad999f4f3b2f4587d811c77";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-i686/tr/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-i686/tr/thunderbird-91.0.2.tar.bz2";
locale = "tr";
arch = "linux-i686";
sha256 = "3268c493d84db8eb4c8373959548a0828ce66a4b08d7b6f8175c9acabc092a7e";
sha256 = "184dd779df35de1906022b32ef0c0b7c4e9555a38eb9ec432772a754efb4c1e1";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-i686/uk/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-i686/uk/thunderbird-91.0.2.tar.bz2";
locale = "uk";
arch = "linux-i686";
sha256 = "3c3cd733adaa0f61cc489141d6eee89b2efd50b7afd816658cae0f93dfd983a6";
sha256 = "8778aba1428169a7a2195040a9c7e1d91d86f15bff554f18d402e1f3447a140d";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-i686/uz/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-i686/uz/thunderbird-91.0.2.tar.bz2";
locale = "uz";
arch = "linux-i686";
sha256 = "75c7e6e1544b8cd715185a1478a67a7129921fcb45e100e8b707317712fa1b90";
sha256 = "2cf61ce3a966c41f5085a097dc0cda9136ae1d624d68e97a01d867ec14ad4d94";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-i686/vi/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-i686/vi/thunderbird-91.0.2.tar.bz2";
locale = "vi";
arch = "linux-i686";
sha256 = "d1977564fe4bcc3e3d105670f0ceca224437656dfc4f6b1ea23e46348fe0892d";
sha256 = "8f9a2b344b25b4cb91f2506515382729c27fd7e1de37c5d16dae51345cee790b";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-i686/zh-CN/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-i686/zh-CN/thunderbird-91.0.2.tar.bz2";
locale = "zh-CN";
arch = "linux-i686";
sha256 = "11b2079558194aad670fcc38e9a8bf2b36351852d2faeca15230a9ac0325da95";
sha256 = "131c829617c6732d29e1a68499f190a80d464b3ede4f10caa153bdf8e59e7f3c";
}
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.1/linux-i686/zh-TW/thunderbird-91.0.1.tar.bz2";
{ url = "http://archive.mozilla.org/pub/thunderbird/releases/91.0.2/linux-i686/zh-TW/thunderbird-91.0.2.tar.bz2";
locale = "zh-TW";
arch = "linux-i686";
sha256 = "2c9472a29dbd96fbbcbe7d9e23a112c9c894eee62dcb0ab08387d04e1f2741c4";
sha256 = "049625db5facdd176ac7fced757db678e9afb0d143d775f4c9f79d2cd334eaa0";
}
];
}

@ -10,12 +10,12 @@ in
rec {
thunderbird = common rec {
pname = "thunderbird";
version = "91.0.1";
version = "91.0.2";
application = "comm/mail";
binaryName = pname;
src = fetchurl {
url = "mirror://mozilla/thunderbird/releases/${version}/source/thunderbird-${version}.source.tar.xz";
sha512 = "54e1f3233c544cf28302496512aaf2a5fb5486aab070680e82cefbdd1d12a33867c638ced61e43958bae47e40ff551592a2cf4d537f98c22ed1df31c5d5bb09c";
sha512 = "468be2f5024fd32eb22a661ed5f30de5d74231ee736e6743a9fb84e747bf45fceaaf286a5cbb20eb41f8ab98e0c56310eab3d2e6077fd81ee0ef52b28c33a3f2";
};
patches = [
./no-buildconfig-90.patch

@ -40,20 +40,18 @@ let
in
py.pkgs.pythonPackages.buildPythonApplication rec {
pname = "paperless-ng";
version = "1.4.5";
version = "1.5.0";
src = fetchurl {
url = "https://github.com/jonaswinkler/paperless-ng/releases/download/ng-${version}/${pname}-${version}.tar.xz";
sha256 = "2PJb8j3oimlfiJ3gqjK6uTemzFdtAP2Mlm5RH09bx/E=";
sha256 = "oVSq0AWksuWC81MF5xiZ6ZbdKKtqqphmL+xIzJLaDMw=";
};
format = "other";
# Make bind address configurable
# Fix tests with Pillow 8.3.1: https://github.com/jonaswinkler/paperless-ng/pull/1183
prePatch = ''
postPatch = ''
substituteInPlace gunicorn.conf.py --replace "bind = '0.0.0.0:8000'" ""
substituteInPlace src/paperless_tesseract/parsers.py --replace "return x" "return round(x)"
'';
propagatedBuildInputs = with py.pkgs.pythonPackages; [

@ -2,11 +2,11 @@
stdenv.mkDerivation rec {
pname = "picard-tools";
version = "2.25.7";
version = "2.26.0";
src = fetchurl {
url = "https://github.com/broadinstitute/picard/releases/download/${version}/picard.jar";
sha256 = "sha256-3A6DDT6Dje4rT0qhyWMfs6TD7Jgt6N/lFF/HSBBMcUY=";
sha256 = "sha256-sz/7MtcCJlUlrNy16W1YB/zXMhYeLLbQOIOdzNsGW7w=";
};
nativeBuildInputs = [ makeWrapper ];

@ -2,10 +2,10 @@
stdenv.mkDerivation rec {
pname = "stacks";
version = "2.55";
version = "2.59";
src = fetchurl {
url = "http://catchenlab.life.illinois.edu/stacks/source/${pname}-${version}.tar.gz";
sha256 = "sha256-p8L0F3A+GdNsPgTQNn9Em5EjFCc9f7gUvyLIRCTd05c=";
sha256 = "sha256-pVFwb4EPba9wL9kDGN2gi7aeH+sPhDG/XLyHxqG4zd4=";
};
buildInputs = [ zlib ];

@ -2,7 +2,7 @@
stdenv.mkDerivation rec {
pname = "lean";
version = "3.31.0";
version = "3.32.1";
src = fetchFromGitHub {
owner = "leanprover-community";
@ -11,8 +11,8 @@ stdenv.mkDerivation rec {
# from. this is then used to check whether an olean file should be
# rebuilt. don't use a tag as rev because this will get replaced into
# src/githash.h.in in preConfigure.
rev = "333783350cd3fe38f25fed1da7d6a433d8f85b77";
sha256 = "sha256-N8Ju7pSGssvt84/0e1o6G/p7fWM1c0Mzw+ftL1/++J4=";
rev = "35b3a9c4e2d35cccb5ed220ea2f2909a4ed2ca90";
sha256 = "0s69smknsvycvydbk2f3vcqj1z3jrbv3k048z2r46391dai5iwhf";
};
nativeBuildInputs = [ cmake ];

@ -21,26 +21,16 @@
stdenv.mkDerivation rec {
pname = "nasc";
version = "0.7.5";
version = "0.8.0";
src = fetchFromGitHub {
owner = "parnold-x";
repo = pname;
rev = version;
sha256 = "kSRc5RLkI6SBJirUYw6swZi8IJhaL3y74b2Zw8kh2XA=";
sha256 = "02b9a59a9fzsb6nn3ycwwbcbv04qfzm6x7csq2addpzx5wak6dd8";
fetchSubmodules = true;
};
patches = [
# fix compilation with gcc10
(fetchpatch {
url = "https://github.com/parnold-x/libqalculate/commit/4fa8f2cceada128ef19f82407226b2c230b780d5.patch";
extraPrefix = "subprojects/libqalculate/";
stripLen = "1";
sha256 = "0kbff623zl0s6yx5avx068f2apwzxzvihjahja4qhlkqkhhzj9dm";
})
];
nativeBuildInputs = [
glib # post_install.py
gtk3 # post_install.py

@ -4,24 +4,18 @@
, fetchFromGitHub
, ncurses
, pkg-config
, fontconfig
, python3
, fontconfig
, openssl
, perl
, dbus
, libGL
, libX11
, xcbutil
, libxcb
, libxkbcommon
, xcbutil
, xcbutilimage
, xcbutilkeysyms
, xcbutilwm # contains xcb-ewmh among others
, libxkbcommon
, libglvnd # libEGL.so.1
, egl-wayland
, xcbutilwm
, wayland
, libGLU
, libGL
, freetype
, zlib
# Apple frameworks
, CoreGraphics
@ -29,48 +23,21 @@
, Foundation
, libiconv
}:
let
runtimeDeps = [
zlib
fontconfig
freetype
] ++ lib.optionals stdenv.isLinux [
libX11
xcbutil
libxcb
xcbutilimage
xcbutilkeysyms
xcbutilwm
libxkbcommon
dbus
libglvnd
egl-wayland
wayland
libGLU
libGL
openssl
] ++ lib.optionals stdenv.isDarwin [
Foundation
CoreGraphics
Cocoa
libiconv
];
in
rustPlatform.buildRustPackage rec {
pname = "wezterm";
version = "20210814-124438-54e29167";
outputs = [ "out" "terminfo" ];
src = fetchFromGitHub {
owner = "wez";
repo = pname;
rev = version;
sha256 = "sha256-6HXTftgAs6JMzOMCY+laN74in8xfjE8yJc5xSl9PQCE=";
fetchSubmodules = true;
sha256 = "sha256-6HXTftgAs6JMzOMCY+laN74in8xfjE8yJc5xSl9PQCE=";
};
outputs = [ "out" "terminfo" ];
postPatch = ''
echo ${version} > .tag
'';
@ -80,11 +47,28 @@ rustPlatform.buildRustPackage rec {
nativeBuildInputs = [
pkg-config
python3
perl
ncurses
ncurses # tic for terminfo
];
buildInputs = runtimeDeps;
buildInputs = [
fontconfig
zlib
] ++ lib.optionals stdenv.isLinux [
libX11
libxcb
libxkbcommon
openssl
wayland
xcbutil
xcbutilimage
xcbutilkeysyms
xcbutilwm # contains xcb-ewmh among others
] ++ lib.optionals stdenv.isDarwin [
Cocoa
CoreGraphics
Foundation
libiconv
];
postInstall = ''
# terminfo
@ -102,9 +86,7 @@ rustPlatform.buildRustPackage rec {
'';
preFixup = lib.optionalString stdenv.isLinux ''
for artifact in wezterm wezterm-gui wezterm-mux-server strip-ansi-escapes; do
patchelf --set-rpath "${lib.makeLibraryPath runtimeDeps}" $out/bin/$artifact
done
patchelf --add-needed "${libGL}/lib/libEGL.so.1" $out/bin/wezterm-gui
'' + lib.optionalString stdenv.isDarwin ''
mkdir -p "$out/Applications"
OUT_APP="$out/Applications/WezTerm.app"
@ -114,14 +96,11 @@ rustPlatform.buildRustPackage rec {
ln -s $out/bin/{wezterm,wezterm-mux-server,wezterm-gui,strip-ansi-escapes} "$OUT_APP"
'';
# prevent further changes to the RPATH
dontPatchELF = true;
meta = with lib; {
description = "A GPU-accelerated cross-platform terminal emulator and multiplexer written by @wez and implemented in Rust";
homepage = "https://wezfurlong.org/wezterm";
license = licenses.mit;
maintainers = with maintainers; [ steveej SuperSandro2000 ];
maintainers = with maintainers; [ SuperSandro2000 ];
platforms = platforms.unix;
};
}

@ -2,16 +2,16 @@
buildGoModule rec {
pname = "gh";
version = "1.14.0";
version = "2.0.0";
src = fetchFromGitHub {
owner = "cli";
repo = "cli";
rev = "v${version}";
sha256 = "sha256-JCuJliBr1IPdwGG9T0Bx5DhtHw8tJ45mteRLxRbkyio=";
sha256 = "sha256-TjBUVP9/hMB8yFnupSxwHDr5bmtiMFwsDi1axsD5ykA=";
};
vendorSha256 = "sha256-6H56jf4QV+DdsiCetyhpXp6NHc86Hzo+CuqF06dL26A=";
vendorSha256 = "sha256-ZsMzLJ+eHAKNxhVFpQxRyTv/rcWvxA/luKPjXT+Zt4Y=";
nativeBuildInputs = [ installShellFiles ];

@ -17,13 +17,13 @@
buildGoModule rec {
pname = "podman";
version = "3.2.3";
version = "3.3.0";
src = fetchFromGitHub {
owner = "containers";
repo = "podman";
rev = "v${version}";
sha256 = "sha256-P8/4jehfcjM+r/pwW6fxrwquMVUqXxvvTur7Tesjmnc=";
sha256 = "sha256-EDNpGDjsXULwtUYFLh4u6gntK//rsLLpYgpxRt4R1kc=";
};
vendorSha256 = null;

@ -14,6 +14,7 @@
, cni-plugins # not added to path
, iptables
, iproute2
, gvproxy
, qemu
, xz
}:
@ -31,6 +32,7 @@ let
iptables
iproute2
] ++ lib.optionals stdenv.isDarwin [
gvproxy
qemu
xz
] ++ extraPackages);

@ -2,13 +2,13 @@
stdenv.mkDerivation rec {
pname = "vpcs";
version = "0.8.1";
version = "0.8.2";
src = fetchFromGitHub {
owner = "GNS3";
repo = pname;
rev = "v${version}";
sha256 = "0kqy4bd3ns8nzn7fa72izn7a08sfrasy1rn7fd8ajah2wv8d2cak";
sha256 = "sha256-joEXRMtNZMQumkYDX1gdpGAV+XdNKiAMj3dh1GZxeqc=";
};
buildPhase = ''(
@ -33,6 +33,6 @@ stdenv.mkDerivation rec {
inherit (src.meta) homepage;
license = licenses.bsd2;
platforms = platforms.linux;
maintainers = with maintainers; [ primeos ];
maintainers = with maintainers; [ ];
};
}

@ -10,7 +10,7 @@ let
pythonPackages = python.pkgs;
unwrapped = pythonPackages.buildPythonPackage rec {
name = "qtile-${version}";
pname = "qtile";
version = "0.18.0";
src = fetchFromGitHub {
@ -61,6 +61,8 @@ let
};
in
(python.withPackages (ps: [ unwrapped ])).overrideAttrs (_: {
# otherwise will be exported as "env", this restores `nix search` behavior
name = "${unwrapped.pname}-${unwrapped.version}";
# export underlying qtile package
passthru = { inherit unwrapped; };
})

@ -759,6 +759,13 @@ rec {
];
};
# This provides a /usr/bin/env, for shell scripts using the
# "#!/usr/bin/env executable" shebang.
usrBinEnv = runCommand "usr-bin-env" { } ''
mkdir -p $out/usr/bin
ln -s ${pkgs.coreutils}/bin/env $out/usr/bin
'';
# This provides /bin/sh, pointing to bashInteractive.
binSh = runCommand "bin-sh" { } ''
mkdir -p $out/bin

@ -21,7 +21,7 @@ in
import ./generic.nix { inherit lib stdenv emacs texinfo writeText gcc; } ({
phases = "installPhase fixupPhase distPhase";
dontUnpack = true;
installPhase = ''
runHook preInstall

@ -43,9 +43,9 @@
"http://ftp.nluug.nl/pub/gnu/"
"http://mirrors.kernel.org/gnu/"
"ftp://mirror.cict.fr/gnu/"
"ftp://ftp.cs.tu-berlin.de/pub/gnu/"
"ftp://ftp.chg.ru/pub/gnu/"
"http://mirror.ibcp.fr/pub/gnu/"
"http://mirror.dogado.de/gnu/"
"http://mirror.tochlab.net/pub/gnu/"
"ftp://ftp.funet.fi/pub/mirrors/ftp.gnu.org/gnu/"
# This one is the master repository, and thus it's always up-to-date.
@ -66,7 +66,6 @@
gnupg = [
"https://gnupg.org/ftp/gcrypt/"
"http://www.ring.gr.jp/pub/net/"
"http://gd.tuwien.ac.at/privacy/"
"http://mirrors.dotsrc.org/gcrypt/"
"http://ftp.heanet.ie/mirrors/ftp.gnupg.org/gcrypt/"
"http://www.mirrorservice.org/sites/ftp.gnupg.org/gcrypt/"
@ -75,14 +74,13 @@
# kernel.org's /pub (/pub/{linux,software}) tree.
kernel = [
"http://cdn.kernel.org/pub/"
"http://www.all.kernel.org/pub/"
"http://ramses.wh2.tu-dresden.de/pub/mirrors/kernel.org/"
"http://linux-kernel.uio.no/pub/"
"http://kernel.osuosl.org/pub/"
"ftp://ftp.funet.fi/pub/mirrors/ftp.kernel.org/pub/"
];
# Mirrors from https://download.kde.org/extra/download-mirrors.html
# Mirrors from https://download.kde.org/ls-lR.mirrorlist
kde = [
"https://download.kde.org/download.php?url="
"https://ftp.gwdg.de/pub/linux/kde/"
@ -90,7 +88,6 @@
"http://mirrors.mit.edu/kde/"
"https://mirrors.ustc.edu.cn/kde/"
"http://ftp.funet.fi/pub/mirrors/ftp.kde.org/pub/kde/"
"ftp://ftp.kde.org/pub/kde/"
];
# Gentoo files.
@ -113,15 +110,12 @@
"http://ftp.cc.uoc.gr/mirrors/nongnu.org/"
"http://nongnu.uib.no/"
"http://mirrors.fe.up.pt/pub/nongnu/"
"http://mirror.lihnidos.org/GNU/savannah/"
"http://savannah.mirror.si/"
"http://ftp.acc.umu.se/mirror/gnu.org/savannah/"
"http://ftp.twaren.net/Unix/NonGNU/"
"http://ftp.yzu.edu.tw/pub/nongnu/"
"http://mirror.rackdc.com/savannah/"
"http://savannah-nongnu-org.ip-connect.vn.ua/"
"http://www.mirrorservice.org/sites/download.savannah.gnu.org/releases/"
"http://savannah.spinellicreations.com/"
"http://gnu.mirrors.pair.com/savannah/savannah/"
"ftp://mirror.easyname.at/nongnu/"
"ftp://mirror2.klaus-uwe.me/nongnu/"
@ -129,11 +123,9 @@
"ftp://mirror.csclub.uwaterloo.ca/nongnu/"
"ftp://mirror.cedia.org.ec/nongnu"
"ftp://ftp.igh.cnrs.fr/pub/nongnu/"
"ftp://mirror6.layerjet.com/nongnu/"
"ftp://mirror.netcologne.de/savannah/"
"ftp://nongnu.uib.no/pub/nongnu/"
"ftp://mirrors.fe.up.pt/pub/nongnu/"
"ftp://savannah.mirror.si/savannah/"
"ftp://ftp.twaren.net/Unix/NonGNU/"
"ftp://ftp.yzu.edu.tw/pub/nongnu/"
"ftp://savannah-nongnu-org.ip-connect.vn.ua/mirror/savannah.nongnu.org/"
@ -149,8 +141,6 @@
# BitlBee mirrors, see https://www.bitlbee.org/main.php/mirrors.html .
bitlbee = [
"http://get.bitlbee.org/"
"http://get.bitlbee.be/"
"http://get.us.bitlbee.org/"
"http://ftp.snt.utwente.nl/pub/software/bitlbee/"
"http://bitlbee.intergenia.de/"
];
@ -165,8 +155,6 @@
"ftp://ftp.imagemagick.org/pub/ImageMagick/"
"http://ftp.fifi.org/ImageMagick/"
"ftp://ftp.fifi.org/ImageMagick/"
"http://imagemagick.mirrorcatalogs.com/"
"ftp://imagemagick.mirrorcatalogs.com/imagemagick"
];
# CPAN mirrors.
@ -185,7 +173,6 @@
"http://ftp.jaist.ac.jp/pub/Linux/CentOS-vault/"
"http://mirrors.aliyun.com/centos-vault/"
"https://mirror.chpc.utah.edu/pub/vault.centos.org/"
"https://mirror.its.sfu.ca/mirror/CentOS-vault/"
"https://mirror.math.princeton.edu/pub/centos-vault/"
"https://mirrors.tripadvisor.com/centos-vault/"
];
@ -193,14 +180,10 @@
# Debian.
debian = [
"http://httpredir.debian.org/debian/"
"ftp://ftp.au.debian.org/debian/"
"ftp://ftp.de.debian.org/debian/"
"ftp://ftp.es.debian.org/debian/"
"ftp://ftp.fr.debian.org/debian/"
"ftp://ftp.it.debian.org/debian/"
"ftp://ftp.nl.debian.org/debian/"
"ftp://ftp.ru.debian.org/debian/"
"ftp://ftp.debian.org/debian/"
"http://ftp.debian.org/debian/"
"http://archive.debian.org/debian-archive/debian/"
"ftp://ftp.funet.fi/pub/mirrors/ftp.debian.org/debian/"
@ -229,13 +212,6 @@
"http://archives.fedoraproject.org/pub/archive/fedora/"
];
# Old SUSE distributions. Unfortunately there is no master site,
# since SUSE actually delete their old distributions (see
# ftp://ftp.suse.com/pub/suse/discontinued/deleted-20070817/README.txt).
oldsuse = [
"ftp://ftp.gmd.de/ftp.suse.com-discontinued/"
];
# openSUSE.
opensuse = [
"http://opensuse.hro.nl/opensuse/distribution/"
@ -257,10 +233,8 @@
"http://ftp.unina.it/pub/linux/GNOME/"
"http://fr2.rpmfind.net/linux/gnome.org/"
"ftp://ftp.dit.upm.es/pub/GNOME/"
"ftp://ftp.no.gnome.org/pub/GNOME/"
"http://ftp.acc.umu.se/pub/GNOME/"
"http://ftp.belnet.be/mirror/ftp.gnome.org/"
"http://ftp.df.lth.se/pub/gnome/"
"http://linorg.usp.br/gnome/"
"http://mirror.aarnet.edu.au/pub/GNOME/"
"ftp://ftp.cse.buffalo.edu/pub/Gnome/"
@ -290,7 +264,7 @@
# Apache mirrors (see http://www.apache.org/mirrors/).
apache = [
"https://www-eu.apache.org/dist/"
"https://www-us.apache.org/dist/"
"https://ftp.wayne.edu/apache/"
"http://www.eu.apache.org/dist/"
"ftp://ftp.fu-berlin.de/unix/www/apache/"
"http://ftp.tudelft.nl/apache/"
@ -305,13 +279,11 @@
postgresql = [
"http://ftp.postgresql.org/pub/"
"ftp://ftp.postgresql.org/pub/"
"ftp://ftp-archives.postgresql.org/pub/"
];
metalab = [
"ftp://mirrors.kernel.org/metalab/"
"ftp://ftp.gwdg.de/pub/linux/metalab/"
"ftp://ftp.xemacs.org/sites/metalab.unc.edu/"
"ftp://ftp.metalab.unc.edu/pub/linux/"
];
# Bioconductor mirrors (from http://bioconductor.org/about/mirrors)
@ -325,7 +297,6 @@
# http://watson.nci.nih.gov/bioc_mirror/
"http://bioconductor.jp/packages/"
"http://bioconductor.statistik.tu-dortmund.de/packages/"
"http://mirrors.ebi.ac.uk/bioconductor/packages/"
"http://mirrors.ustc.edu.cn/bioc/"
];
@ -340,14 +311,12 @@
# Roy marples mirrors
roy = [
"http://roy.marples.name/downloads/"
"http://roy.aydogan.net/"
"http://cflags.cc/roy/"
];
# Sage mirrors (http://www.sagemath.org/mirrors.html)
sageupstream = [
# Africa
"http://sagemath.polytechnic.edu.na/spkg/upstream/"
"ftp://ftp.sun.ac.za/pub/mirrors/www.sagemath.org/spkg/upstream/"
"http://sagemath.mirror.ac.za/spkg/upstream/"
"https://ftp.leg.uct.ac.za/pub/packages/sage/spkg/upstream/"
@ -366,7 +335,6 @@
"http://linorg.usp.br/sage/spkg/upstream"
# Asia
"http://sage.asis.io/spkg/upstream/"
"http://mirror.hust.edu.cn/sagemath/spkg/upstream/"
"https://ftp.iitm.ac.in/sage/spkg/upstream/"
"http://ftp.kaist.ac.kr/sage/spkg/upstream/"
@ -378,11 +346,10 @@
"https://mirror.yandex.ru/mirrors/sage.math.washington.edu/spkg/upstream/"
# Australia
"http://echidna.maths.usyd.edu.au/sage/spkg/upstream/"
"http://mirror.aarnet.edu.au/pub/sage/spkg/upstream/"
# Europe
"http://sage.mirror.garr.it/mirrors/sage/spkg/upstream/"
"http://sunsite.rediris.es/mirror/sagemath/spkg/upstream/"
"http://mirror.switch.ch/mirror/sagemath/spkg/upstream/"
"http://mirrors.fe.up.pt/pub/sage/spkg/upstream/"
"http://www-ftp.lip6.fr/pub/math/sagemath/spkg/upstream/"
@ -399,8 +366,6 @@
"http://ftp.openbsd.org/pub/OpenBSD/"
"ftp://ftp.nluug.nl/pub/OpenBSD/"
"ftp://ftp-stud.fht-esslingen.de/pub/OpenBSD/"
"ftp://ftp.halifax.rwth-aachen.de/pub/OpenBSD/"
"ftp://mirror.switch.ch/pub/OpenBSD/"
];
# Steam Runtime mirrors
@ -439,6 +404,5 @@
"ftp://ftp.alsa-project.org/pub/"
"http://alsa.cybermirror.org/"
"http://www.mirrorservice.org/sites/ftp.alsa-project.org/pub/"
"http://alsa.mirror.fr/"
];
}

@ -12,13 +12,13 @@
mkDerivation rec {
pname = "adwaita-qt";
version = "1.3.1";
version = "1.4.0";
src = fetchFromGitHub {
owner = "FedoraQt";
repo = pname;
rev = version;
sha256 = "sha256-3uHa7veLzaSIm9WSR/Z0X+aSdXziO1TnI/CQgccrKYg=";
sha256 = "sha256-KkqLUhS0JMwJsgu8fv5iGozH3Xv+cXumxx5IewZTTPc=";
};
nativeBuildInputs = [

@ -2,13 +2,13 @@
stdenv.mkDerivation rec {
pname = "matcha-gtk-theme";
version = "2021-08-02";
version = "2021-08-23";
src = fetchFromGitHub {
owner = "vinceliuice";
repo = pname;
rev = version;
sha256 = "sha256-vvWRHtE0Fgz41Aa5kaxNfbupodaWNc8gRJ1qW7vIyuc=";
sha256 = "sha256-gemDiGcr7xLv247w9J1CMOSKg2tWp8ADKpG16qa3hZQ=";
};
buildInputs = [ gdk-pixbuf librsvg ];

@ -2,11 +2,11 @@
stdenv.mkDerivation rec {
pname = "kotlin";
version = "1.5.21";
version = "1.5.30";
src = fetchurl {
url = "https://github.com/JetBrains/kotlin/releases/download/v${version}/kotlin-compiler-${version}.zip";
sha256 = "sha256-8zE6/dar8bjHXGKS9OQfLbr+/I9scnYse6mz2u712lk=";
sha256 = "sha256-Je69ubsuFl5LqO+/j/lDxF1Pw52//CwcqgWejdgTZ18=";
};
propagatedBuildInputs = [ jre ] ;

@ -6,13 +6,13 @@
stdenv.mkDerivation rec {
pname = "imath";
version = "3.0.5";
version = "3.1.2";
src = fetchFromGitHub {
owner = "AcademySoftwareFoundation";
repo = "imath";
rev = "v${version}";
sha256 = "0nwf8622j01p699nkkbal6xxs1snzzhz4cn6d76yppgvdhgyahsc";
sha256 = "sha256-X+LY1xtMeYMO6Ri6fmBF2JEDuY6MF7j5XO5YhWMuffM=";
};
nativeBuildInputs = [ cmake ];

@ -2,13 +2,13 @@
stdenv.mkDerivation rec {
pname = "libcouchbase";
version = "3.2.0";
version = "3.2.1";
src = fetchFromGitHub {
owner = "couchbase";
repo = "libcouchbase";
rev = version;
sha256 = "sha256-8//FEWXXcp/COHj10l4jysaLobzZIl65RCYz/HgL+kc=";
sha256 = "sha256-6TMWWXAgt4e+De1ebmqQhaqcia1ZXT8IXn9fTGsr3qY=";
};
cmakeFlags = [ "-DLCB_NO_MOCK=ON" ];

@ -21,13 +21,13 @@
stdenv.mkDerivation rec {
pname = "tiledb";
version = "2.2.4";
version = "2.2.9";
src = fetchFromGitHub {
owner = "TileDB-Inc";
repo = "TileDB";
rev = version;
sha256 = "sha256-xzzWB20vhnneiqJqZAeSUjZouqhPPg2bGaot1IQDMEo=";
sha256 = "sha256-kiidUvSff0drmIl6sXdqj2pjoFZL+ReCDOTtMEW3P3g=";
};
# (bundled) blosc headers have a warning on some archs that it will be using

@ -5,7 +5,10 @@ stdenv.mkDerivation rec {
version = "2.3.9";
src = fetchurl {
url = "ftp://ftp.unixodbc.org/pub/unixODBC/${pname}-${version}.tar.gz";
urls = [
"ftp://ftp.unixodbc.org/pub/unixODBC/${pname}-${version}.tar.gz"
"http://www.unixodbc.org/${pname}-${version}.tar.gz"
];
sha256 = "sha256-UoM+rD1oHIsMmlpl8uvXRbOpZPII/HSPl35EAVoxsgc=";
};

@ -11,13 +11,13 @@
stdenv.mkDerivation rec {
pname = "yder";
version = "1.4.12";
version = "1.4.14";
src = fetchFromGitHub {
owner = "babelouest";
repo = pname;
rev = "v${version}";
sha256 = "1cmla7rpwvsj1b3jhp9q8y3ni5n8rsqxib87yhh07b7xnlhy0gcj";
sha256 = "sha256-4FSUBFqrxTbqg2EKYuXv4gUeE40ViNZRk5gHv+C2p9o=";
};
patches = [

@ -1,15 +1,25 @@
{ lib, stdenv, fetchFromGitHub, autoreconfHook, pkg-config
, asciidoc, libxslt, docbook_xsl
, pam, yubikey-personalization, libyubikey, libykclient }:
{ lib
, stdenv
, fetchFromGitHub
, autoreconfHook
, pkg-config
, asciidoc
, libxslt
, docbook_xsl
, pam
, yubikey-personalization
, libyubikey
, libykclient
}:
stdenv.mkDerivation rec {
pname = "yubico-pam";
version = "unstable-2019-07-01";
version = "2.27";
src = fetchFromGitHub {
owner = "Yubico";
repo = pname;
rev = "b5bd00db81e0e0e0ecced65c684080bb56ddc35b";
sha256 = "10dq8dqi3jldllj6p8r9hldx9sank9n82c44w8akxrs1vli6nj3m";
rev = version;
sha256 = "0hb773zlf11xz4bwmsqv2mq5d4aq2g0crdr5cp9xwc4ivi5gd4kg";
};
nativeBuildInputs = [ autoreconfHook pkg-config asciidoc libxslt docbook_xsl ];

@ -299,6 +299,7 @@
, "wring"
, "write-good"
, "yaml-language-server"
, "yalc"
, "yarn"
, "yo"
, "zx"

File diff suppressed because it is too large Load Diff

@ -18,7 +18,7 @@ buildDunePackage rec {
owner = "tezos";
repo = "tezos";
rev = "v${version}";
sha256 = "12cv2cssnw60jbpnh6xjysxgsgcj7d72454k4zs2b8fjx7mkgksk";
sha256 = "1ykhz5m5sb2hq04nspbsbq8wspkhimagb5g6yi65hpdbn8f4zr6h";
};
minimalOCamlVersion = "4.0.8";

@ -17,17 +17,17 @@
buildDunePackage rec {
pname = "torch";
version = "0.12";
version = "0.13";
useDune2 = true;
minimumOCamlVersion = "4.08";
minimalOCamlVersion = "4.08";
src = fetchFromGitHub {
owner = "LaurentMazare";
repo = "ocaml-${pname}";
rev = version;
sha256 = "0nl6hd2rivhgkc3sdkdmrk3j0ij3xjx1clhqm8m5iznir4g77g91";
sha256 = "0528h1mkrqbmbf7hy91dsnxcg0k55m3jgharr71c652xyd847yz7";
};
buildInputs = [ dune-configurator ];
@ -56,6 +56,5 @@ buildDunePackage rec {
description = "Ocaml bindings to Pytorch";
maintainers = [ maintainers.bcdarwin ];
license = licenses.asl20;
broken = true;
};
}

@ -7,14 +7,14 @@
buildPythonPackage rec {
pname = "ailment";
version = "9.0.9506";
version = "9.0.9572";
disabled = pythonOlder "3.6";
src = fetchFromGitHub {
owner = "angr";
repo = pname;
rev = "v${version}";
sha256 = "sha256-ikIO6AhoBkmz4+8BLOC55Yh6HbzHJOjlktSDMiC0I38=";
sha256 = "sha256-cjVKIlvGu1SCiVkegJ36GevZ9bihYF7n3P/xNqtAapw=";
};
propagatedBuildInputs = [ pyvex ];

@ -11,7 +11,7 @@
buildPythonPackage rec {
pname = "aioesphomeapi";
version = "6.1.0";
version = "7.0.0";
format = "setuptools";
disabled = pythonOlder "3.7";
@ -20,7 +20,7 @@ buildPythonPackage rec {
owner = "esphome";
repo = pname;
rev = "v${version}";
sha256 = "sha256-C799JoW58mmwHeoXLMJ5pYg8hjaZqVBqrbxBXpmF/mQ=";
sha256 = "sha256-ho/1fpq4yAgmYNERPqs51oqr08ncaN9+GRTUUuGU7ps=";
};
propagatedBuildInputs = [

@ -43,14 +43,14 @@ in
buildPythonPackage rec {
pname = "angr";
version = "9.0.9506";
version = "9.0.9572";
disabled = pythonOlder "3.6";
src = fetchFromGitHub {
owner = pname;
repo = pname;
rev = "v${version}";
sha256 = "sha256-2bKsLmZeFs7N4YUYxIktDoOn/H8waaOaOJOzyVumuf8=";
sha256 = "sha256-ZA2PKyJVXrSs2IvpjMyHGrtAPUpUZFhUzlKURLEWm5o=";
};
propagatedBuildInputs = [

@ -9,14 +9,14 @@
buildPythonPackage rec {
pname = "angrop";
version = "9.0.9506";
version = "9.0.9572";
disabled = pythonOlder "3.6";
src = fetchFromGitHub {
owner = "angr";
repo = pname;
rev = "v${version}";
sha256 = "sha256-dTaTtiMzIm9PfVkjAED9x9zae+vdRcl1kDMtqUWvpkA=";
sha256 = "sha256-R4i7hQGwc74/szehcWBjkC6b9DsblluHKWxEk0iSFRI=";
};
propagatedBuildInputs = [

@ -7,13 +7,13 @@
buildPythonPackage rec {
pname = "archinfo";
version = "9.0.9506";
version = "9.0.9572";
src = fetchFromGitHub {
owner = "angr";
repo = pname;
rev = "v${version}";
sha256 = "sha256-jGXJpwiP2/O2aJhAP15VGqrekiiB0eiIFCjkzNMbqxw=";
sha256 = "sha256-OzgLGjEVOVRnQvWVcci8EGn6gtO8D8QoDnC9dfXGHZU=";
};
checkInputs = [

@ -3,14 +3,14 @@
buildPythonPackage rec {
pname = "awslambdaric";
version = "1.2.0";
version = "1.2.2";
disabled = isPy27;
src = fetchFromGitHub {
owner = "aws";
repo = "aws-lambda-python-runtime-interface-client";
rev = version;
sha256 = "120qar8iaxj6dmnhjw1c40n2w06f1nyxy57dwh06xdiany698fg4";
sha256 = "1r4b4w5xhf6p4vs7yx89kighlqim9f96v2ryknmrnmblgr4kg0h1";
};
postPatch = ''

@ -11,12 +11,12 @@
buildPythonPackage rec {
pname = "azure-mgmt-servicebus";
version = "6.0.0";
version = "7.0.0";
src = fetchPypi {
inherit pname version;
extension = "zip";
sha256 = "f6c64ed97d22d0c03c4ca5fc7594bd0f3d4147659c10110160009b93f541298e";
sha256 = "ee859efec2ec9fc8d059811967b1cb17836f4f5786e7406494a42f51f0667822";
};
propagatedBuildInputs = [

@ -6,11 +6,11 @@
buildPythonPackage rec {
pname = "bitarray";
version = "2.2.1";
version = "2.3.2";
src = fetchPypi {
inherit pname version;
sha256 = "sha256-MbQNcWofBkLqnidBwpt1YpkHXbLh0evnUOPiwUafWJ0=";
sha256 = "sha256-S+47qRZLZs72TxCZ6aO4jpndzQyUOAfplENhPhhLSLQ=";
};
checkPhase = ''

@ -9,7 +9,7 @@
let
withPlugins = plugins: buildPythonPackage {
name = "${package.name}-with-plugins";
phases = [ "installPhase" "fixupPhase" ];
dontUnpack = true;
nativeBuildInputs = [ makeWrapper ];
propagatedBuildInputs = plugins ++ package.propagatedBuildInputs;

@ -1,23 +1,30 @@
{ lib
, buildPythonPackage
, fetchPypi
, pythonOlder
, pytestCheckHook
, pythonOlder
, typing-extensions
}:
buildPythonPackage rec {
pname = "catalogue";
version = "2.0.4";
version = "2.0.6";
disabled = pythonOlder "3.6";
src = fetchPypi {
inherit pname version;
hash = "sha256-ntNF0ShVrzFfFxVYNhKya4YhorCi4775dNxdcS95g6o=";
sha256 = "0idjhx2s8cy6ppd18k1zy246d97gdd6i217m5q26fwa47xh3asik";
};
propagatedBuildInputs = lib.optionals (pythonOlder "3.8") [
typing-extensions
];
checkInputs = [ pytestCheckHook ];
pythonImportsCheck = [ "catalogue" ];
meta = with lib; {
description = "Tiny library for adding function or object registries";
homepage = "https://github.com/explosion/catalogue";

@ -2,33 +2,41 @@
, backoff
, buildPythonPackage
, fetchFromGitHub
, importlib-metadata
, parameterized
, poetry-core
, pytestCheckHook
, pythonOlder
, requests
, requests-mock
, responses
, rich
, types-requests
}:
buildPythonPackage rec {
pname = "censys";
version = "2.0.3";
version = "2.0.6";
format = "pyproject";
disabled = pythonOlder "3.6";
src = fetchFromGitHub {
owner = "censys";
repo = "censys-python";
rev = "v${version}";
sha256 = "0ga5f6xv6rylfvalnl3cflr0w30r771gb05n5cjhxisb8an0qcb6";
sha256 = "sha256-Lbd2Pm79n0cFoGHC2rucxgZijzcVYVJJsq1yzqB9QLk=";
};
nativeBuildInputs = [
poetry-core
];
propagatedBuildInputs = [
backoff
requests
rich
types-requests
] ++ lib.optionals (pythonOlder "3.8") [
importlib-metadata
];
checkInputs = [
@ -39,11 +47,12 @@ buildPythonPackage rec {
];
postPatch = ''
substituteInPlace setup.py \
--replace "rich==10.3.0" "rich" \
--replace "types-requests==0.1.11" "types-requests"
substituteInPlace pytest.ini --replace \
" --cov -rs -p no:warnings" ""
substituteInPlace pyproject.toml \
--replace 'backoff = "^1.11.1"' 'backoff = "*"' \
--replace 'requests = ">=2.26.0"' 'requests = "*"' \
--replace 'rich = "^10.6.0"' 'rich = "*"'
substituteInPlace pytest.ini \
--replace "--cov" ""
'';
# The tests want to write a configuration file

@ -16,7 +16,9 @@ buildPythonPackage rec {
sourceRoot = "source/${pname}";
postPatch = ''
substituteInPlace requirements.txt --replace "protobuf~=3.13.0" "protobuf"
substituteInPlace requirements.txt \
--replace "protobuf~=3.13.0" "protobuf" \
--replace "google-api-core[grpc] >= 1.14.0, < 2.0.0dev" "google-api-core[grpc] >= 1.14.0, < 3.0.0dev"
'';
propagatedBuildInputs = [

@ -13,14 +13,14 @@
buildPythonPackage rec {
pname = "claripy";
version = "9.0.9506";
version = "9.0.9572";
disabled = pythonOlder "3.6";
src = fetchFromGitHub {
owner = "angr";
repo = pname;
rev = "v${version}";
sha256 = "sha256-wczwKTtOJ4VC3UZvd1KT6GfGUk5AS90ggLi2lFjhD+Q=";
sha256 = "sha256-YC605gIM+l9Tnx6lu0ayrnYPE6Xx+aTgDXPziFY/lDA=";
};
# Use upstream z3 implementation

@ -15,7 +15,7 @@
let
# The binaries are following the argr projects release cycle
version = "9.0.9506";
version = "9.0.9572";
# Binary files from https://github.com/angr/binaries (only used for testing and only here)
binaries = fetchFromGitHub {
@ -35,7 +35,7 @@ buildPythonPackage rec {
owner = "angr";
repo = pname;
rev = "v${version}";
sha256 = "sha256-jTVccnCRqsp3EBl/RSKWVekAOsGhRvdIJxRyYV2gI4Q=";
sha256 = "sha256-b1LMHeaQqz0fNleRlME0kgSYZGGXBhFKCp0iRr/2A7c=";
};
propagatedBuildInputs = [

@ -1,28 +1,50 @@
{ lib, buildPythonPackage, fetchPypi, requests, coverage, unittest2 }:
{ lib
, buildPythonPackage
, coverage
, ddt
, fetchFromGitHub
, mock
, pytestCheckHook
, requests
}:
buildPythonPackage rec {
pname = "codecov";
version = "2.1.11";
version = "2.1.12";
src = fetchPypi {
inherit pname version;
sha256 = "6cde272454009d27355f9434f4e49f238c0273b216beda8472a65dc4957f473b";
src = fetchFromGitHub {
owner = "codecov";
repo = "codecov-python";
rev = "v${version}";
sha256 = "0bdk1cp3hxydpx9knqfv88ywwzw7yqhywi0inxjd6x53qh75prqy";
};
checkInputs = [ unittest2 ]; # Tests only
propagatedBuildInputs = [
requests
coverage
];
propagatedBuildInputs = [ requests coverage ];
checkInputs = [
ddt
mock
pytestCheckHook
];
postPatch = ''
sed -i 's/, "argparse"//' setup.py
'';
pytestFlagsArray = [ "tests/test.py" ];
# No tests in archive
doCheck = false;
disabledTests = [
# No git repo available and network
"test_bowerrc_none"
"test_prefix"
"test_send"
];
pythonImportsCheck = [ "codecov" ];
meta = with lib; {
description = "Python report uploader for Codecov";
homepage = "https://codecov.io/";
license = licenses.asl20;
maintainers = with maintainers; [ fab ];
};
}

@ -16,13 +16,13 @@
buildPythonPackage rec {
pname = "dependency-injector";
version = "4.34.0";
version = "4.35.3";
src = fetchFromGitHub {
owner = "ets-labs";
repo = "python-dependency-injector";
rev = version;
sha256 = "sha256-MI0+saRe4Zi77otVPGYxrX9z8Jc5K1A1sCxHBS0uta0=";
sha256 = "sha256-2qe4A2T3EagNCh1zSbPWblVN7p9NH8rNwQQVyESJTdk=";
};
propagatedBuildInputs = [

@ -8,13 +8,13 @@
buildPythonPackage rec {
pname = "emcee";
version = "3.1.0";
version = "3.1.1";
src = fetchFromGitHub {
owner = "dfm";
repo = pname;
rev = "v${version}";
sha256 = "1x9y4zwlv6hl7jms2knpa2qrh89ywsl847yb7d93n94gyx2s16p0";
sha256 = "0q9dj7mihjjkcy6famzwhz1xcxxzzvm00n01w4bbm66ax9zvis52";
};
SETUPTOOLS_SCM_PRETEND_VERSION = version;

@ -6,13 +6,13 @@
buildPythonPackage rec {
pname = "envisage";
version = "5.0.0";
version = "6.0.1";
disabled = isPy27;
src = fetchPypi {
inherit pname version;
sha256 = "0zrxlq4v3091727vf10ngc8418sp26raxa8q83i4h0sydfkh2dic";
sha256 = "8864c29aa344f7ac26eeb94788798f2d0cc791dcf95c632da8d79ebc580e114c";
};
propagatedBuildInputs = [ traits apptools setuptools ];

@ -17,14 +17,14 @@
buildPythonPackage rec {
pname = "fastapi";
version = "0.68.0";
version = "0.68.1";
format = "flit";
src = fetchFromGitHub {
owner = "tiangolo";
repo = "fastapi";
rev = version;
sha256 = "00cjkc90h0qlca30g981zvwlxh2wc3rfipw25v667jdl9x5gxv9p";
sha256 = "sha256-zwfopyig4ImMbkx89l8SsLW8PzoVcDN5KSd7a7fOnms=";
};
postPatch = ''

@ -9,13 +9,13 @@
buildPythonPackage rec {
pname = "forecast-solar";
version = "2.0.0";
version = "2.1.0";
src = fetchFromGitHub {
owner = "home-assistant-libs";
repo = "forecast_solar";
rev = version;
sha256 = "12d9bb3q7gp0yy152x0rcbi727wrg3w9458asp2nhnqlb8nm6j4d";
sha256 = "sha256-UrLy+j8YDWuS9pciEDKb/+UoCcw54XWiIUAEYC72/W0=";
};
propagatedBuildInputs = [

@ -5,7 +5,7 @@
, googleapis-common-protos
, grpcio
, protobuf
, pytz
, proto-plus
, requests
, mock
, pytest
@ -15,11 +15,11 @@
buildPythonPackage rec {
pname = "google-api-core";
version = "1.30.0";
version = "2.0.0";
src = fetchPypi {
inherit pname version;
sha256 = "0724d354d394b3d763bc10dfee05807813c5210f0bd9b8e2ddf6b6925603411c";
sha256 = "sha256-vZ6wcJ9OEN1v3bMv0HiKGQtDRCbCWL5uAO9A2hNtdo0=";
};
propagatedBuildInputs = [
@ -27,7 +27,7 @@ buildPythonPackage rec {
google-auth
grpcio
protobuf
pytz
proto-plus
requests
];
@ -47,8 +47,7 @@ buildPythonPackage rec {
helpers used by all Google API clients.
'';
homepage = "https://github.com/googleapis/python-api-core";
changelog =
"https://github.com/googleapis/python-api-core/blob/v${version}/CHANGELOG.md";
changelog = "https://github.com/googleapis/python-api-core/blob/v${version}/CHANGELOG.md";
license = licenses.asl20;
maintainers = with maintainers; [ SuperSandro2000 ];
};

@ -14,24 +14,22 @@
, pytest-localserver
, responses
, rsa
, six
, pyopenssl
}:
buildPythonPackage rec {
pname = "google-auth";
version = "1.34.0";
version = "2.0.1";
src = fetchPypi {
inherit pname version;
sha256 = "sha256-8QlAiLrgRvsG89Gj198UcX6NlZ6RBbecV3Jb1OF1l6I=";
sha256 = "sha256-6hrwULPgbrc+RHD3BNIwBzB7wOh8E+AV9rkEYPFAe9M=";
};
propagatedBuildInputs = [
cachetools
pyasn1-modules
rsa
six
pyopenssl
pyu2f
];

@ -2,13 +2,18 @@
buildPythonPackage rec {
pname = "google-cloud-access-context-manager";
version = "0.1.6";
version = "0.1.7";
src = fetchPypi {
inherit pname version;
sha256 = "011hbbjqjqk6fskb180hfhhsddz3i2a9gz34sf4wy1j2s4my9xy0";
sha256 = "02adf212c8d280298ffe03a0c91743618693ec394b42cbb85b4a29f8d9544afa";
};
postPatch = ''
substituteInPlace setup.py \
--replace "google-api-core[grpc] >= 1.26.0, < 2.0.0dev" "google-api-core[grpc] >= 1.26.0, < 2.0.1"
'';
propagatedBuildInputs = [ google-api-core ];
# No tests in repo

@ -0,0 +1,25 @@
{ lib, buildPythonPackage, fetchPypi, googleapis-common-protos, protobuf }:
buildPythonPackage rec {
pname = "google-cloud-audit-log";
version = "0.1.0";
src = fetchPypi {
inherit pname version;
sha256 = "5bf5a53c641b13828154ab21fb209669be69d71cd462f5d6456bf87722fc0eeb";
};
propagatedBuildInputs = [ googleapis-common-protos protobuf ];
# tests are a bit wonky to setup and are not very deep either
doCheck = false;
pythonImportsCheck = [ "google.cloud.audit" ];
meta = with lib; {
description = "Google Cloud Audit Protos";
homepage = "https://github.com/googleapis/python-audit-log";
license = licenses.asl20;
maintainers = with maintainers; [ SuperSandro2000 ];
};
}

@ -18,11 +18,11 @@
buildPythonPackage rec {
pname = "google-cloud-bigquery";
version = "2.23.3";
version = "2.24.1";
src = fetchPypi {
inherit pname version;
sha256 = "sha256-FQXtRM7YaU+S+Jqkn9dTQqJR3A1hL/XQjgPTXmANO0I=";
sha256 = "sha256-gRHSPir4epbAZGqCqD9i1pS2yIKeeIHrTkN7dURxZJ8=";
};
propagatedBuildInputs = [
@ -53,6 +53,12 @@ buildPythonPackage rec {
# requires credentials
"test_bigquery_magic"
"TestBigQuery"
"test_query_retry_539"
"test_query_retry_539"
"test_list_rows_empty_table"
"test_list_rows_page_size"
"test_list_rows_scalars"
"test_list_rows_scalars_extreme"
# Mocking of _ensure_bqstorage_client fails
"test_to_arrow_ensure_bqstorage_client_wo_bqstorage"
# requires network

@ -11,11 +11,11 @@
buildPythonPackage rec {
pname = "google-cloud-core";
version = "1.7.2";
version = "2.0.0";
src = fetchPypi {
inherit pname version;
sha256 = "sha256-sQMKrcuyrrTuUUdUJjUa+DwQckVrkY+4/bgGZsS7Y7U=";
sha256 = "sha256-kO6ZZIzPnhGhZ4Gn/FjRPlj2YrQ5xzfUjCTvGGYsJwI=";
};
propagatedBuildInputs = [ google-api-core ];

@ -13,11 +13,11 @@
buildPythonPackage rec {
pname = "google-cloud-firestore";
version = "2.2.0";
version = "2.3.0";
src = fetchPypi {
inherit pname version;
sha256 = "sha256-QMwvMPebC2a09XmKQKYFPwVIbZlnUEaXxTh8hlnS9Js=";
sha256 = "sha256-gc68S+utdcO2OSCRAxyTCjnXBfUxWN/D7PfNg3cUzQ8=";
};
propagatedBuildInputs = [
@ -43,6 +43,8 @@ buildPythonPackage rec {
# Tests are broken
"tests/system/test_system.py"
"tests/system/test_system_async.py"
# requires credentials
"tests/unit/v1/test_bulk_writer.py"
];
disabledTests = [

@ -4,6 +4,8 @@
, django
, flask
, google-api-core
, google-cloud-appengine-logging
, google-cloud-audit-log
, google-cloud-core
, google-cloud-testutils
, mock
@ -22,7 +24,13 @@ buildPythonPackage rec {
sha256 = "sha256-SZ7tXxPKuAXIeAsNFKDZMan/HWXvzN2eaHctQOfa1MU=";
};
propagatedBuildInputs = [ google-api-core google-cloud-core proto-plus ];
propagatedBuildInputs = [
google-api-core
google-cloud-appengine-logging
google-cloud-audit-log
google-cloud-core
proto-plus
];
checkInputs = [
django

Some files were not shown because too many files have changed in this diff Show More