Merge master into staging-next

Changed files
+421 -149
doc
nixos
pkgs
applications
misc
openlp
pytrainer
networking
feedreaders
newsboat
science
math
pcalc
version-management
gitea
build-support
trivial-builders
development
compilers
gcc
ocaml-modules
dune-site
python-modules
aionotion
aioridwell
aiowatttime
bugwarrior
buildbot
deltachat
dogpile-cache
dogpile-core
imapclient
mailsuite
openstacksdk
oslo-db
parsedmarc
phonopy
python-ironicclient
subliminal
tools
electron
misc
terraform-ls
misc
screensavers
xscreensaver
tools
misc
lnav
tz
yubikey-manager-qt
package-management
top-level
+1 -1
doc/contributing/coding-conventions.chapter.md
···
rev = "${version}";
```
-
- Filling lists condionally _should_ be done with `lib.optional(s)` instead of using `if cond then [ ... ] else null` or `if cond then [ ... ] else [ ]`.
+
- Building lists conditionally _should_ be done with `lib.optional(s)` instead of using `if cond then [ ... ] else null` or `if cond then [ ... ] else [ ]`.
```nix
buildInputs = lib.optional stdenv.isDarwin iconv;
+20 -7
nixos/doc/manual/from_md/release-notes/rl-2111.section.xml
···
dropped because it was EOLed by upstream in 2021-10.
</para>
</listitem>
+
<listitem>
+
<para>
+
The <literal>virtualisation.pathsInNixDB</literal> option was
+
renamed
+
<link xlink:href="options.html#opt-virtualisation.additionalPaths"><literal>virtualisation.additionalPaths</literal></link>.
+
</para>
+
</listitem>
</itemizedlist>
</section>
<section xml:id="sec-release-21.11-notable-changes">
···
<para>
In NixOS virtual machines (QEMU), the
<literal>virtualisation</literal> module has been updated with
-
new options to configure:
+
new options:
</para>
<itemizedlist spacing="compact">
<listitem>
<para>
-
IPv4 port forwarding
-
(<link xlink:href="options.html#opt-virtualisation.forwardPorts"><literal>virtualisation.forwardPorts</literal></link>),
+
<link xlink:href="options.html#opt-virtualisation.forwardPorts"><literal>forwardPorts</literal></link>
+
to configure IPv4 port forwarding,
+
</para>
+
</listitem>
+
<listitem>
+
<para>
+
<link xlink:href="options.html#opt-virtualisation.sharedDirectories"><literal>sharedDirectories</literal></link>
+
to set up shared host directories,
</para>
</listitem>
<listitem>
<para>
-
shared host directories
-
(<link xlink:href="options.html#opt-virtualisation.sharedDirectories"><literal>virtualisation.sharedDirectories</literal></link>),
+
<link xlink:href="options.html#opt-virtualisation.resolution"><literal>resolution</literal></link>
+
to set the screen resolution,
</para>
</listitem>
<listitem>
<para>
-
screen resolution
-
(<link xlink:href="options.html#opt-virtualisation.resolution"><literal>virtualisation.resolution</literal></link>).
+
<link xlink:href="options.html#opt-virtualisation.useNixStoreImage"><literal>useNixStoreImage</literal></link>
+
to use a disk image for the Nix store instead of 9P.
</para>
</listitem>
</itemizedlist>
+8 -4
nixos/doc/manual/release-notes/rl-2111.section.md
···
- Nextcloud 20 (`pkgs.nextcloud20`) has been dropped because it was EOLed by upstream in 2021-10.
+
- The `virtualisation.pathsInNixDB` option was renamed
+
[`virtualisation.additionalPaths`](options.html#opt-virtualisation.additionalPaths).
+
## 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.
In particular the versioned `linuxPackages_*` package sets (such as `linuxPackages_5_4`) and kernels from `pkgs` were moved there and now live under `pkgs.linuxKernel.packages.*`. The unversioned ones (such as `linuxPackages_latest`) remain untouched.
-
- In NixOS virtual machines (QEMU), the `virtualisation` module has been updated with new options to configure:
-
- IPv4 port forwarding ([`virtualisation.forwardPorts`](options.html#opt-virtualisation.forwardPorts)),
-
- shared host directories ([`virtualisation.sharedDirectories`](options.html#opt-virtualisation.sharedDirectories)),
-
- screen resolution ([`virtualisation.resolution`](options.html#opt-virtualisation.resolution)).
+
- In NixOS virtual machines (QEMU), the `virtualisation` module has been updated with new options:
+
- [`forwardPorts`](options.html#opt-virtualisation.forwardPorts) to configure IPv4 port forwarding,
+
- [`sharedDirectories`](options.html#opt-virtualisation.sharedDirectories) to set up shared host directories,
+
- [`resolution`](options.html#opt-virtualisation.resolution) to set the screen resolution,
+
- [`useNixStoreImage`](options.html#opt-virtualisation.useNixStoreImage) to use a disk image for the Nix store instead of 9P.
In addition, the default [`msize`](options.html#opt-virtualisation.msize) parameter in 9P filesystems (including /nix/store and all shared directories) has been increased to 16K for improved performance.
+65 -23
nixos/lib/make-disk-image.nix
···
# most likely fails as GRUB will probably refuse to install.
partitionTableType ? "legacy"
+
, # Whether to invoke `switch-to-configuration boot` during image creation
+
installBootLoader ? true
+
, # The root file system type.
fsType ? "ext4"
, # Filesystem label
-
label ? "nixos"
+
label ? if onlyNixStore then "nix-store" else "nixos"
, # The initial NixOS configuration file to be copied to
# /etc/nixos/configuration.nix.
···
, # Shell code executed after the VM has finished.
postVM ? ""
+
+
, # Copy the contents of the Nix store to the root of the image and
+
# skip further setup. Incompatible with `contents`,
+
# `installBootLoader` and `configFile`.
+
onlyNixStore ? false
, name ? "nixos-disk-image"
, # Disk image format, one of qcow2, qcow2-compressed, vdi, vpc, raw.
format ? "raw"
+
+
, # Whether a nix channel based on the current source tree should be
+
# made available inside the image. Useful for interactive use of nix
+
# utils, but changes the hash of the image when the sources are
+
# updated.
+
copyChannel ? true
+
+
, # Additional store paths to copy to the image's store.
+
additionalPaths ? []
}:
assert partitionTableType == "legacy" || partitionTableType == "legacy+gpt" || partitionTableType == "efi" || partitionTableType == "hybrid" || partitionTableType == "none";
···
(attrs: ((attrs.user or null) == null)
== ((attrs.group or null) == null))
contents;
+
assert onlyNixStore -> contents == [] && configFile == null && !installBootLoader;
with lib;
···
users = map (x: x.user or "''") contents;
groups = map (x: x.group or "''") contents;
-
closureInfo = pkgs.closureInfo { rootPaths = [ config.system.build.toplevel channelSources ]; };
+
basePaths = [ config.system.build.toplevel ]
+
++ lib.optional copyChannel channelSources;
+
+
additionalPaths' = subtractLists basePaths additionalPaths;
+
+
closureInfo = pkgs.closureInfo {
+
rootPaths = basePaths ++ additionalPaths';
+
};
blockSize = toString (4 * 1024); # ext4fs block size (not block device sector size)
···
chmod 755 "$TMPDIR"
echo "running nixos-install..."
nixos-install --root $root --no-bootloader --no-root-passwd \
-
--system ${config.system.build.toplevel} --channel ${channelSources} --substituters ""
+
--system ${config.system.build.toplevel} \
+
${if copyChannel then "--channel ${channelSources}" else "--no-channel-copy"} \
+
--substituters ""
+
+
${optionalString (additionalPaths' != []) ''
+
nix copy --to $root --no-check-sigs ${concatStringsSep " " additionalPaths'}
+
''}
diskImage=nixos.raw
···
''}
echo "copying staging root to image..."
-
cptofs -p ${optionalString (partitionTableType != "none") "-P ${rootPartition}"} -t ${fsType} -i $diskImage $root/* / ||
+
cptofs -p ${optionalString (partitionTableType != "none") "-P ${rootPartition}"} \
+
-t ${fsType} \
+
-i $diskImage \
+
$root${optionalString onlyNixStore builtins.storeDir}/* / ||
(echo >&2 "ERROR: cptofs failed. diskSize might be too small for closure."; exit 1)
'';
-
in pkgs.vmTools.runInLinuxVM (
-
pkgs.runCommand name
-
{ preVM = prepareImage;
+
+
moveOrConvertImage = ''
+
${if format == "raw" then ''
+
mv $diskImage $out/${filename}
+
'' else ''
+
${pkgs.qemu}/bin/qemu-img convert -f raw -O ${format} ${compress} $diskImage $out/${filename}
+
''}
+
diskImage=$out/${filename}
+
'';
+
+
buildImage = pkgs.vmTools.runInLinuxVM (
+
pkgs.runCommand name {
+
preVM = prepareImage;
buildInputs = with pkgs; [ util-linux e2fsprogs dosfstools ];
-
postVM = ''
-
${if format == "raw" then ''
-
mv $diskImage $out/${filename}
-
'' else ''
-
${pkgs.qemu}/bin/qemu-img convert -f raw -O ${format} ${compress} $diskImage $out/${filename}
-
''}
-
diskImage=$out/${filename}
-
${postVM}
-
'';
+
postVM = moveOrConvertImage + postVM;
memSize = 1024;
-
}
-
''
+
} ''
export PATH=${binPath}:$PATH
rootDisk=${if partitionTableType != "none" then "/dev/vda${rootPartition}" else "/dev/vda"}
···
cp ${configFile} /mnt/etc/nixos/configuration.nix
''}
-
# Set up core system link, GRUB, etc.
-
NIXOS_INSTALL_BOOTLOADER=1 nixos-enter --root $mountPoint -- /nix/var/nix/profiles/system/bin/switch-to-configuration boot
+
${lib.optionalString installBootLoader ''
+
# Set up core system link, GRUB, etc.
+
NIXOS_INSTALL_BOOTLOADER=1 nixos-enter --root $mountPoint -- /nix/var/nix/profiles/system/bin/switch-to-configuration boot
-
# The above scripts will generate a random machine-id and we don't want to bake a single ID into all our images
-
rm -f $mountPoint/etc/machine-id
+
# The above scripts will generate a random machine-id and we don't want to bake a single ID into all our images
+
rm -f $mountPoint/etc/machine-id
+
''}
# Set the ownerships of the contents. The modes are set in preVM.
# No globbing on targets, so no need to set -f
···
tune2fs -T now -c 0 -i 0 $rootDisk
''}
''
-
)
+
);
+
in
+
if onlyNixStore then
+
pkgs.runCommand name {}
+
(prepareImage + moveOrConvertImage + postVM)
+
else buildImage
+19
nixos/lib/testing-python.nix
···
let
nodes = qemu_pkg:
let
+
testScript' =
+
# Call the test script with the computed nodes.
+
if lib.isFunction testScript
+
then testScript { nodes = nodes qemu_pkg; }
+
else testScript;
+
build-vms = import ./build-vms.nix {
inherit system lib pkgs minimal specialArgs;
extraConfigurations = extraConfigurations ++ [(
{
virtualisation.qemu.package = qemu_pkg;
+
+
# Make sure all derivations referenced by the test
+
# script are available on the nodes. When the store is
+
# accessed through 9p, this isn't important, since
+
# everything in the store is available to the guest,
+
# but when building a root image it is, as all paths
+
# that should be available to the guest has to be
+
# copied to the image.
+
virtualisation.additionalPaths =
+
lib.optional
+
(builtins.hasContext testScript')
+
(pkgs.writeStringReferencesToFile testScript');
+
# Ensure we do not use aliases. Ideally this is only set
# when the test framework is used by Nixpkgs NixOS tests.
nixpkgs.config.allowAliases = false;
+70 -10
nixos/modules/virtualisation/qemu-vm.nix
···
TMPDIR=$(mktemp -d nix-vm.XXXXXXXXXX --tmpdir)
fi
+
${lib.optionalString cfg.useNixStoreImage
+
''
+
# Create a writable copy/snapshot of the store image.
+
${qemu}/bin/qemu-img create -f qcow2 -F qcow2 -b ${storeImage}/nixos.qcow2 "$TMPDIR"/store.img
+
''}
+
# Create a directory for exchanging data with the VM.
mkdir -p "$TMPDIR/xchg"
···
'';
-
regInfo = pkgs.closureInfo { rootPaths = config.virtualisation.pathsInNixDB; };
+
regInfo = pkgs.closureInfo { rootPaths = config.virtualisation.additionalPaths; };
# Generate a hard disk image containing a /boot partition and GRUB
···
umount /boot
'' # */
);
+
+
storeImage = import ../../lib/make-disk-image.nix {
+
inherit pkgs config lib;
+
additionalPaths = [ regInfo ];
+
format = "qcow2";
+
onlyNixStore = true;
+
partitionTableType = "none";
+
installBootLoader = false;
+
diskSize = "auto";
+
additionalSpace = "0M";
+
copyChannel = false;
+
};
in
{
imports = [
../profiles/qemu-guest.nix
+
(mkRenamedOptionModule [ "virtualisation" "pathsInNixDB" ] [ "virtualisation" "additionalPaths" ])
];
options = {
···
'';
};
-
virtualisation.pathsInNixDB =
+
virtualisation.additionalPaths =
mkOption {
type = types.listOf types.path;
default = [];
description =
''
-
The list of paths whose closure is registered in the Nix
-
database in the VM. All other paths in the host Nix store
+
A list of paths whose closure should be made available to
+
the VM.
+
+
When 9p is used, the closure is registered in the Nix
+
database in the VM. All other paths in the host Nix store
appear in the guest Nix store as well, but are considered
garbage (because they are not registered in the Nix
-
database in the guest).
+
database of the guest).
+
+
When <option>virtualisation.useNixStoreImage</option> is
+
set, the closure is copied to the Nix store image.
'';
};
···
};
};
+
virtualisation.useNixStoreImage =
+
mkOption {
+
type = types.bool;
+
default = false;
+
description = ''
+
Build and use a disk image for the Nix store, instead of
+
accessing the host's one through 9p.
+
+
For applications which do a lot of reads from the store,
+
this can drastically improve performance, but at the cost of
+
disk space and image build time.
+
'';
+
};
+
virtualisation.useBootLoader =
mkOption {
type = types.bool;
···
'';
# After booting, register the closure of the paths in
-
# `virtualisation.pathsInNixDB' in the Nix database in the VM. This
+
# `virtualisation.additionalPaths' in the Nix database in the VM. This
# allows Nix operations to work in the VM. The path to the
# registration file is passed through the kernel command line to
# allow `system.build.toplevel' to be included. (If we had a direct
···
virtualisation.bootDevice = mkDefault (driveDeviceName 1);
-
virtualisation.pathsInNixDB = [ config.system.build.toplevel ];
+
virtualisation.additionalPaths = [ config.system.build.toplevel ];
virtualisation.sharedDirectories = {
-
nix-store = { source = "/nix/store"; target = "/nix/store"; };
-
xchg = { source = ''"$TMPDIR"/xchg''; target = "/tmp/xchg"; };
-
shared = { source = ''"''${SHARED_DIR:-$TMPDIR/xchg}"''; target = "/tmp/shared"; };
+
nix-store = mkIf (!cfg.useNixStoreImage) {
+
source = builtins.storeDir;
+
target = "/nix/store";
+
};
+
xchg = {
+
source = ''"$TMPDIR"/xchg'';
+
target = "/tmp/xchg";
+
};
+
shared = {
+
source = ''"''${SHARED_DIR:-$TMPDIR/xchg}"'';
+
target = "/tmp/shared";
+
};
};
virtualisation.qemu.networkingOptions =
···
driveExtraOpts.cache = "writeback";
driveExtraOpts.werror = "report";
}]
+
(mkIf cfg.useNixStoreImage [{
+
name = "nix-store";
+
file = ''"$TMPDIR"/store.img'';
+
deviceExtraOpts.bootindex = if cfg.useBootLoader then "3" else "2";
+
}])
(mkIf cfg.useBootLoader [
# The order of this list determines the device names, see
# note [Disk layout with `useBootLoader`].
···
# Sync with systemd's tmp.mount;
options = [ "mode=1777" "strictatime" "nosuid" "nodev" "size=${toString config.boot.tmpOnTmpfsSize}" ];
};
+
+
"/nix/${if cfg.writableStore then ".ro-store" else "store"}" =
+
mkIf cfg.useNixStoreImage
+
{ device = "${lookupDriveDeviceName "nix-store" cfg.qemu.drives}";
+
neededForBoot = true;
+
options = [ "ro" ];
+
};
"/nix/.rw-store" = mkIf (cfg.writableStore && cfg.writableStoreUseTmpfs)
{ fsType = "tmpfs";
+1 -1
nixos/tests/containers-bridge.nix
···
};
-
virtualisation.pathsInNixDB = [ pkgs.stdenv ];
+
virtualisation.additionalPaths = [ pkgs.stdenv ];
};
testScript = ''
+1 -1
nixos/tests/containers-extra_veth.nix
···
};
};
-
virtualisation.pathsInNixDB = [ pkgs.stdenv ];
+
virtualisation.additionalPaths = [ pkgs.stdenv ];
};
testScript =
+1 -1
nixos/tests/containers-imperative.nix
···
virtualisation.memorySize = 1024;
# Make sure we always have all the required dependencies for creating a
# container available within the VM, because we don't have network access.
-
virtualisation.pathsInNixDB = let
+
virtualisation.additionalPaths = let
emptyContainer = import ../lib/eval-config.nix {
inherit (config.nixpkgs.localSystem) system;
modules = lib.singleton {
+1 -1
nixos/tests/containers-ip.nix
···
containers.webserver4 = webserverFor "10.231.136.1" "10.231.136.2";
containers.webserver6 = webserverFor "fc00::2" "fc00::1";
-
virtualisation.pathsInNixDB = [ pkgs.stdenv ];
+
virtualisation.additionalPaths = [ pkgs.stdenv ];
};
testScript = { nodes, ... }: ''
+1 -1
nixos/tests/containers-portforward.nix
···
};
};
-
virtualisation.pathsInNixDB = [ pkgs.stdenv ];
+
virtualisation.additionalPaths = [ pkgs.stdenv ];
};
testScript =
+1 -1
nixos/tests/containers-tmpfs.nix
···
config = { };
};
-
virtualisation.pathsInNixDB = [ pkgs.stdenv ];
+
virtualisation.additionalPaths = [ pkgs.stdenv ];
};
testScript = ''
+2
nixos/tests/discourse.nix
···
{ nodes, ... }:
{
virtualisation.memorySize = 2048;
+
virtualisation.cores = 4;
+
virtualisation.useNixStoreImage = true;
imports = [ common/user-account.nix ];
+2
nixos/tests/gitlab.nix
···
imports = [ common/user-account.nix ];
virtualisation.memorySize = if pkgs.stdenv.is64bit then 4096 else 2047;
+
virtualisation.cores = 4;
+
virtualisation.useNixStoreImage = true;
systemd.services.gitlab.serviceConfig.Restart = mkForce "no";
systemd.services.gitlab-workhorse.serviceConfig.Restart = mkForce "no";
systemd.services.gitaly.serviceConfig.Restart = mkForce "no";
+2 -2
pkgs/applications/misc/openlp/lib.nix
···
# python deps
, python, buildPythonPackage
, alembic, beautifulsoup4, chardet, lxml, Mako, pyenchant
-
, pyqt5_with_qtwebkit, pyxdg, sip_4, sqlalchemy, sqlalchemy_migrate
+
, pyqt5_with_qtwebkit, pyxdg, sip_4, sqlalchemy, sqlalchemy-migrate
}:
buildPythonPackage rec {
···
pyxdg
sip_4
sqlalchemy
-
sqlalchemy_migrate
+
sqlalchemy-migrate
];
prePatch = ''
+1 -1
pkgs/applications/misc/pytrainer/default.nix
···
};
propagatedBuildInputs = with python.pkgs; [
-
sqlalchemy_migrate
+
sqlalchemy-migrate
python-dateutil
matplotlib
lxml
+3 -3
pkgs/applications/networking/feedreaders/newsboat/default.nix
···
rustPlatform.buildRustPackage rec {
pname = "newsboat";
-
version = "2.24";
+
version = "2.25";
src = fetchFromGitHub {
owner = "newsboat";
repo = "newsboat";
rev = "r${version}";
-
sha256 = "0qb10w7pn9hiczjjpc0xanmc83p22ngcqcrkjwji5rl0sh8v9ii4";
+
sha256 = "sha256-TAnGDxTKYl4niouS6nYdJDaIngAPsPHr9Bw9L3cR2Xk=";
};
-
cargoSha256 = "0vhr8qyw4f3lc208mgl1m3z42igkbwly6wcv7g7jrq3c6dcwyhjn";
+
cargoSha256 = "sha256-MxoyYBLbrCuLVa0p8JrYKSKu2oFPnXMwab42lhhAu48=";
# TODO: Check if that's still needed
postPatch = lib.optionalString stdenv.isDarwin ''
+3 -3
pkgs/applications/science/math/pcalc/default.nix
···
meta = with lib; {
homepage = "https://vapier.github.io/pcalc/";
description = "Programmer's calculator";
-
license = licenses.gpl2;
-
maintainers = with lib.maintainers; [ ftrvxmtrx ];
-
platforms = lib.platforms.linux;
+
license = licenses.gpl2Plus;
+
maintainers = with maintainers; [ ftrvxmtrx ];
+
platforms = platforms.unix;
};
}
+2 -2
pkgs/applications/version-management/gitea/default.nix
···
buildGoPackage rec {
pname = "gitea";
-
version = "1.15.5";
+
version = "1.15.6";
# not fetching directly from the git repo, because that lacks several vendor files for the web UI
src = fetchurl {
url = "https://github.com/go-gitea/gitea/releases/download/v${version}/gitea-src-${version}.tar.gz";
-
sha256 = "sha256-W+czWzo4keTLRPDLcTeYl3JSccwfq+P6k4ELADO9FVM=";
+
sha256 = "sha256-FMM/iQAxJcymv4jYBzaBXG0Uy8UxHh9gFWB5gzV9cn0=";
};
unpackPhase = ''
+82
pkgs/build-support/trivial-builders.nix
···
'';
+
/*
+
* Extract a string's references to derivations and paths (its
+
* context) and write them to a text file, removing the input string
+
* itself from the dependency graph. This is useful when you want to
+
* make a derivation depend on the string's references, but not its
+
* contents (to avoid unnecessary rebuilds, for example).
+
*
+
* Note that this only works as intended on Nix >= 2.3.
+
*/
+
writeStringReferencesToFile = string:
+
/*
+
* The basic operation this performs is to copy the string context
+
* from `string' to a second string and wrap that string in a
+
* derivation. However, that alone is not enough, since nothing in the
+
* string refers to the output paths of the derivations/paths in its
+
* context, meaning they'll be considered build-time dependencies and
+
* removed from the wrapper derivation's closure. Putting the
+
* necessary output paths in the new string is however not very
+
* straightforward - the attrset returned by `getContext' contains
+
* only references to derivations' .drv-paths, not their output
+
* paths. In order to "convert" them, we try to extract the
+
* corresponding paths from the original string using regex.
+
*/
+
let
+
# Taken from https://github.com/NixOS/nix/blob/130284b8508dad3c70e8160b15f3d62042fc730a/src/libutil/hash.cc#L84
+
nixHashChars = "0123456789abcdfghijklmnpqrsvwxyz";
+
context = builtins.getContext string;
+
derivations = lib.filterAttrs (n: v: v ? outputs) context;
+
# Objects copied from outside of the store, such as paths and
+
# `builtins.fetch*`ed ones
+
sources = lib.attrNames (lib.filterAttrs (n: v: v ? path) context);
+
packages =
+
lib.mapAttrs'
+
(name: value:
+
{
+
inherit value;
+
name = lib.head (builtins.match "${builtins.storeDir}/[${nixHashChars}]+-(.*)\.drv" name);
+
})
+
derivations;
+
# The syntax of output paths differs between outputs named `out`
+
# and other, explicitly named ones. For explicitly named ones,
+
# the output name is suffixed as `-name`, but `out` outputs
+
# aren't suffixed at all, and thus aren't easily distinguished
+
# from named output paths. Therefore, we find all the named ones
+
# first so we can use them to remove false matches when looking
+
# for `out` outputs (see the definition of `outputPaths`).
+
namedOutputPaths =
+
lib.flatten
+
(lib.mapAttrsToList
+
(name: value:
+
(map
+
(output:
+
lib.filter
+
lib.isList
+
(builtins.split "(${builtins.storeDir}/[${nixHashChars}]+-${name}-${output})" string))
+
(lib.remove "out" value.outputs)))
+
packages);
+
# Only `out` outputs
+
outputPaths =
+
lib.flatten
+
(lib.mapAttrsToList
+
(name: value:
+
if lib.elem "out" value.outputs then
+
lib.filter
+
(x: lib.isList x &&
+
# If the matched path is in `namedOutputPaths`,
+
# it's a partial match of an output path where
+
# the output name isn't `out`
+
lib.all (o: !lib.hasPrefix (lib.head x) o) namedOutputPaths)
+
(builtins.split "(${builtins.storeDir}/[${nixHashChars}]+-${name})" string)
+
else
+
[])
+
packages);
+
allPaths = lib.concatStringsSep "\n" (lib.unique (sources ++ namedOutputPaths ++ outputPaths));
+
allPathsWithContext = builtins.appendContext allPaths context;
+
in
+
if builtins ? getContext then
+
writeText "string-references" allPathsWithContext
+
else
+
writeDirectReferencesToFile (writeText "string-file" string);
+
+
/* Print an error message if the file with the specified name and
* hash doesn't exist in the Nix store. This function should only
* be used by non-redistributable software with an unfree license
+21 -5
pkgs/build-support/trivial-builders/test.nix
···
DIRECT_REFS = invokeSamples ./test/invoke-writeDirectReferencesToFile.nix;
};
};
-
testScript = ''
-
machine.succeed("""
-
${./test.sh} 2>/dev/console
-
""")
-
'';
+
testScript =
+
let
+
sample = import ./test/sample.nix { inherit pkgs; };
+
samplePaths = lib.unique (lib.attrValues sample);
+
sampleText = pkgs.writeText "sample-text" (lib.concatStringsSep "\n" samplePaths);
+
stringReferencesText =
+
pkgs.writeStringReferencesToFile
+
((lib.concatMapStringsSep "fillertext"
+
(d: "${d}")
+
(lib.attrValues sample)) + ''
+
STORE=${builtins.storeDir};\nsystemctl start bar-foo.service
+
'');
+
in ''
+
machine.succeed("""
+
${./test.sh} 2>/dev/console
+
""")
+
machine.succeed("""
+
echo >&2 Testing string references...
+
diff -U3 <(sort ${stringReferencesText}) <(sort ${sampleText})
+
""")
+
'';
meta = {
license = lib.licenses.mit; # nixpkgs license
maintainers = with lib.maintainers; [
+6
pkgs/build-support/trivial-builders/test/sample.nix
···
let
inherit (pkgs)
figlet
+
zlib
hello
writeText
;
···
{
hello = hello;
figlet = figlet;
+
zlib = zlib;
+
zlib-dev = zlib.dev;
norefs = writeText "hi" "hello";
+
norefsDup = writeText "hi" "hello";
helloRef = writeText "hi" "hello ${hello}";
+
helloRefDup = writeText "hi" "hello ${hello}";
+
path = ./invoke-writeReferencesToFile.nix;
helloFigletRef = writeText "hi" "hello ${hello} ${figlet}";
inherit (pkgs)
emptyFile
+2 -2
pkgs/development/compilers/gcc/8/default.nix
···
with builtins;
let majorVersion = "8";
-
version = "${majorVersion}.4.0";
+
version = "${majorVersion}.5.0";
inherit (stdenv) buildPlatform hostPlatform targetPlatform;
···
src = fetchurl {
url = "mirror://gcc/releases/gcc-${version}/gcc-${version}.tar.xz";
-
sha256 = "1m1d3gfix56w4aq8myazzfffkl8bqcrx4jhhapnjf7qfs596w2p3";
+
sha256 = "0l7d4m9jx124xsk6xardchgy2k5j5l2b15q322k31f0va4d8826k";
};
inherit patches;
+19
pkgs/development/ocaml-modules/dune-site/default.nix
···
+
{ lib, buildDunePackage, dune_2, dune-private-libs }:
+
+
buildDunePackage rec {
+
pname = "dune-site";
+
inherit (dune_2) src version patches;
+
+
useDune2 = true;
+
+
dontAddPrefix = true;
+
+
propagatedBuildInputs = [ dune-private-libs ];
+
+
meta = with lib; {
+
description = "A library for embedding location information inside executable and libraries";
+
inherit (dune_2.meta) homepage;
+
maintainers = with lib.maintainers; [ superherointj ];
+
license = licenses.mit;
+
};
+
}
+2 -2
pkgs/development/python-modules/aionotion/default.nix
···
buildPythonPackage rec {
pname = "aionotion";
-
version = "3.0.2";
+
version = "2021.10.0";
format = "pyproject";
disabled = pythonOlder "3.6";
···
owner = "bachya";
repo = pname;
rev = version;
-
sha256 = "1328g2245h9gcrnzrbcxaxw78723d0skznrrj8k77fbijxdc4kwv";
+
sha256 = "sha256-5bu2XveDi2e6lGdI/T+0apqXzcnqdztVtaHEpp+Vkzs=";
};
nativeBuildInputs = [ poetry-core ];
+2 -2
pkgs/development/python-modules/aioridwell/default.nix
···
buildPythonPackage rec {
pname = "aioridwell";
-
version = "0.2.0";
+
version = "2021.10.0";
format = "pyproject";
disabled = pythonOlder "3.8";
···
owner = "bachya";
repo = pname;
rev = version;
-
sha256 = "0kzxh1igncql1rwh12n42qahlc94z0fsd344d1vgni50jg7i34v7";
+
sha256 = "sha256-h89gfdZvk7H22xAczaPMscTYZu0YeFxvFfL6/Oz2cJw=";
};
nativeBuildInputs = [
+2 -2
pkgs/development/python-modules/aiowatttime/default.nix
···
buildPythonPackage rec {
pname = "aiowatttime";
-
version = "0.1.1";
+
version = "2021.10.0";
format = "pyproject";
disabled = pythonOlder "3.8";
···
owner = "bachya";
repo = pname;
rev = version;
-
sha256 = "1614p5ca7x9ipz7dgwhiz83dfwn6hyliawa8pr2j9y2kn8cg2sdm";
+
sha256 = "sha256-cWXhQMgRYBzOVgUQWONIwWFB5n/f0lqkSjUb9IoPwtI=";
};
nativeBuildInputs = [
+2 -2
pkgs/development/python-modules/bugwarrior/default.nix
···
{ lib, buildPythonPackage, fetchPypi, pythonOlder, setuptools
, twiggy, requests, offtrac, bugzilla, taskw, python-dateutil, pytz, keyring, six
-
, jinja2, pycurl, dogpile_cache, lockfile, click, pyxdg, future, jira }:
+
, jinja2, pycurl, dogpile-cache, lockfile, click, pyxdg, future, jira }:
buildPythonPackage rec {
pname = "bugwarrior";
···
propagatedBuildInputs = [
setuptools
twiggy requests offtrac bugzilla taskw python-dateutil pytz keyring six
-
jinja2 pycurl dogpile_cache lockfile click pyxdg future jira
+
jinja2 pycurl dogpile-cache lockfile click pyxdg future jira
];
# for the moment oauth2client <4.0.0 and megaplan>=1.4 are missing for running the test suite.
+2 -2
pkgs/development/python-modules/buildbot/default.nix
···
{ stdenv, lib, buildPythonPackage, fetchPypi, makeWrapper, isPy3k
, python, twisted, jinja2, zope_interface, sqlalchemy
-
, sqlalchemy_migrate, python-dateutil, txaio, autobahn, pyjwt, pyyaml, unidiff, treq
+
, sqlalchemy-migrate, python-dateutil, txaio, autobahn, pyjwt, pyyaml, unidiff, treq
, txrequests, pypugjs, boto3, moto, mock, lz4, setuptoolsTrial
, isort, pylint, flake8, buildbot-worker, buildbot-pkg, buildbot-plugins
, parameterized, git, openssh, glibcLocales, ldap3, nixosTests
···
jinja2
zope_interface
sqlalchemy
-
sqlalchemy_migrate
+
sqlalchemy-migrate
python-dateutil
txaio
autobahn
+2 -2
pkgs/development/python-modules/deltachat/default.nix
···
, setuptools-scm
, libdeltachat
, cffi
-
, IMAPClient
+
, imapclient
, pluggy
, requests
, setuptools
···
propagatedBuildInputs = [
cffi
-
IMAPClient
+
imapclient
pluggy
requests
setuptools
+9 -11
pkgs/development/python-modules/dogpile.cache/default.nix pkgs/development/python-modules/dogpile-cache/default.nix
···
, buildPythonPackage
, fetchPypi
, pythonOlder
-
, pytest
-
, pytest-cov
+
, pytestCheckHook
, mock
, Mako
, decorator
···
}:
buildPythonPackage rec {
-
pname = "dogpile.cache";
+
pname = "dogpile-cache";
version = "1.1.4";
disabled = pythonOlder "3.6";
src = fetchPypi {
-
inherit pname version;
+
pname = "dogpile.cache";
+
inherit version;
sha256 = "ea09bebf24bb7c028caf98963785fe9ad0bd397305849a3303bc5380d468d813";
};
-
# Disable concurrency tests that often fail,
-
# probably some kind of timing issue.
-
postPatch = ''
+
preCheck = ''
+
# Disable concurrency tests that often fail,
+
# probably some kind of timing issue.
rm tests/test_lock.py
# Failing tests. https://bitbucket.org/zzzeek/dogpile.cache/issues/116
rm tests/cache/test_memcached_backend.py
'';
dontUseSetuptoolsCheck = true;
-
checkPhase = ''
-
pytest
-
'';
-
checkInputs = [ pytest pytest-cov mock Mako ];
+
checkInputs = [ pytestCheckHook mock Mako ];
propagatedBuildInputs = [ decorator stevedore ];
···
description = "A caching front-end based on the Dogpile lock";
homepage = "https://bitbucket.org/zzzeek/dogpile.cache";
license = licenses.bsd3;
+
maintainers = with maintainers; [ ];
};
}
+6 -2
pkgs/development/python-modules/dogpile.core/default.nix pkgs/development/python-modules/dogpile-core/default.nix
···
{ lib, buildPythonPackage, fetchPypi }:
buildPythonPackage rec {
-
pname = "dogpile.core";
+
pname = "dogpile-core";
version = "0.4.1";
src = fetchPypi {
-
inherit pname version;
+
pname = "dogpile.core";
+
inherit version;
sha256 = "0xpdvg4kr1isfkrh1rfsh7za4q5a5s6l2kf9wpvndbwf3aqjyrdy";
};
doCheck = false;
+
pythonImportsCheck = [ "dogpile.core" ];
+
meta = with lib; {
description = "A 'dogpile' lock, typically used as a component of a larger caching solution";
homepage = "https://bitbucket.org/zzzeek/dogpile.core";
license = licenses.bsd3;
+
maintainers = with maintainers; [ ];
};
}
+1 -1
pkgs/development/python-modules/imapclient/default.nix
···
}:
buildPythonPackage rec {
-
pname = "IMAPClient";
+
pname = "imapclient";
version = "2.2.0";
src = fetchFromGitHub {
+2 -2
pkgs/development/python-modules/mailsuite/default.nix
···
, dnspython
, html2text
, mail-parser
-
, IMAPClient
+
, imapclient
}:
buildPythonPackage rec {
···
dnspython
html2text
mail-parser
-
IMAPClient
+
imapclient
];
pythonImportsCheck = [ "mailsuite" ];
+2 -2
pkgs/development/python-modules/openstacksdk/default.nix
···
, fetchPypi
, appdirs
, cryptography
-
, dogpile_cache
+
, dogpile-cache
, jmespath
, jsonpatch
, keystoneauth1
···
propagatedBuildInputs = [
appdirs
cryptography
-
dogpile_cache
+
dogpile-cache
jmespath
jsonpatch
keystoneauth1
+2 -2
pkgs/development/python-modules/oslo-db/default.nix
···
, oslotest
, pbr
, sqlalchemy
-
, sqlalchemy_migrate
+
, sqlalchemy-migrate
, stestr
, testresources
, testscenarios
···
oslo-context
oslo-utils
sqlalchemy
-
sqlalchemy_migrate
+
sqlalchemy-migrate
testresources
testscenarios
];
+2 -2
pkgs/development/python-modules/parsedmarc/default.nix
···
, publicsuffix2
, xmltodict
, geoip2
-
, IMAPClient
+
, imapclient
, dateparser
, elasticsearch-dsl
, kafka-python
···
publicsuffix2
xmltodict
geoip2
-
IMAPClient
+
imapclient
dateparser
elasticsearch-dsl
kafka-python
+2 -2
pkgs/development/python-modules/phonopy/default.nix
···
buildPythonPackage rec {
pname = "phonopy";
-
version = "2.11.0";
+
version = "2.12.0";
src = fetchPypi {
inherit pname version;
-
sha256 = "2ab47d3eb53a5265f3567974d29760b510b3312217358b76efc27ade9bd1a9f0";
+
sha256 = "ff65065f418ccbff9fbc1186b9a65581e83b42789aa4a656f45badfff9bd3f61";
};
propagatedBuildInputs = [
+2 -2
pkgs/development/python-modules/python-ironicclient/default.nix
···
, pbr
, appdirs
, cliff
-
, dogpile_cache
+
, dogpile-cache
, jsonschema
, keystoneauth1
, openstacksdk
···
pbr
appdirs
cliff
-
dogpile_cache
+
dogpile-cache
jsonschema
keystoneauth1
openstacksdk
+2 -2
pkgs/development/python-modules/subliminal/default.nix
···
, beautifulsoup4
, requests
, click
-
, dogpile_cache
+
, dogpile-cache
, stevedore
, chardet
, pysrt
···
propagatedBuildInputs = [
guessit babelfish enzyme beautifulsoup4 requests
-
click dogpile_cache stevedore chardet pysrt six
+
click dogpile-cache stevedore chardet pysrt six
appdirs rarfile pytz
];
+8 -8
pkgs/development/tools/electron/default.nix
···
headers = "1fvqkw08pync38ixi5cq4f8a108k2ajxpm1w2f8sn2hjph9kpbsd";
};
-
electron_13 = mkElectron "13.6.0" {
-
armv7l-linux = "03141d99268b1e71b64fd663c678591a02544c99475967d511041ab2c5de262c";
-
aarch64-linux = "309014cce9216e3b0a0015a7a31c33e39c63af0b7781e50d3e630fb1d7d3a4ee";
-
x86_64-linux = "b7f88baa69ea6c06ca16e215b01ad673cd922d3a0c9239868ddd0072af4e035e";
-
i686-linux = "b588e4fe82e6c37fe838a3cf592a2a4cf6166f26dad97dd7597818d7714ddc94";
-
x86_64-darwin = "250228bc5a186601d831f86faf394fba732436ddec86c1ef70e4d3d7ff9342c7";
-
aarch64-darwin = "fd3886830fa291db38cc770176ddb3167f8fb90065fcb124394b3ca32965108d";
-
headers = "1rmx0gvcsvba24fsjv14vmmd52h1nzscgmf1g9i46kzc13y0hn4z";
+
electron_13 = mkElectron "13.6.1" {
+
armv7l-linux = "c8bba8da0baf5cde3eb4823c801c228abfa7943c69131b3701c74e2b342e1813";
+
aarch64-linux = "09a1ff29c33a23f19cc702e0147dee03cfe2acedcff6bfb63c7911184b871a1a";
+
x86_64-linux = "bfc09dd2d591ad614c8d598dad6e13b76c3baf4f48773e7819c493b524a0bb1a";
+
i686-linux = "1ea7c7d19759fa0ee0ddef68c09bcc1c57265436d3f5dab37dad3567f117f317";
+
x86_64-darwin = "ce45f17f875d72e791999eaf30a1af39b6e9143e57a653e7f06cfa0bee9b985d";
+
aarch64-darwin = "e2f82720acae3a03d7d4b3e7dcc7697b84d5bb69a63d087a7420ace2412e7a28";
+
headers = "1bd87c74863w0sjs8gfxl62kjjscc56dmmw85vhwz01s4niksr02";
};
electron_14 = mkElectron "14.2.0" {
+3 -3
pkgs/development/tools/misc/terraform-ls/default.nix
···
buildGoModule rec {
pname = "terraform-ls";
-
version = "0.22.0";
+
version = "0.23.0";
src = fetchFromGitHub {
owner = "hashicorp";
repo = pname;
rev = "v${version}";
-
sha256 = "sha256-sfAn9FkOs9/yA7ciRD9gWbx5VwZveqPMYBQhSBkzYlo=";
+
sha256 = "sha256-hntHEBc1/KSg12x+gv32aNiA2cJ7PWBeftNhI8u+rlw=";
};
-
vendorSha256 = "sha256-egv2+4esvfYccwmyHm23bec/QN6dGWvJVLG19959LPY=";
+
vendorSha256 = "sha256-usPIhXWdp/pSAFH0LepG1/Uolfr/1SExinrAjMuB6zg=";
ldflags = [ "-s" "-w" "-X main.version=v${version}" "-X main.prerelease=" ];
+2 -2
pkgs/misc/screensavers/xscreensaver/default.nix
···
}:
stdenv.mkDerivation rec {
-
version = "6.01";
+
version = "6.02";
pname = "xscreensaver";
src = fetchurl {
url = "https://www.jwz.org/${pname}/${pname}-${version}.tar.gz";
-
sha256 = "sha256-CFSEZl2R9gtKHe2s2UvPm3Sw+wlrztyJ/xwkUWjlRzs=";
+
sha256 = "sha256-Xm1ssJAzrVYs/m1Gv5MS5EUfeUa+2KRnGqk0TfkZMYQ=";
};
nativeBuildInputs = [
+2 -2
pkgs/tools/misc/lnav/default.nix
···
stdenv.mkDerivation rec {
pname = "lnav";
-
version = "0.10.0";
+
version = "0.10.1";
src = fetchFromGitHub {
owner = "tstack";
repo = "lnav";
rev = "v${version}";
-
sha256 = "sha256-hAFyMypGC065aRgX2L4LdyFGpZ/LnX5SjA2iQv5Iuas=";
+
sha256 = "sha256-1b4mVKIUotMSK/ADHnpiM42G98JF0abL8sXXGFyS3sw=";
};
patches = [ ./0001-Forcefully-disable-docs-build.patch ];
+3 -3
pkgs/tools/misc/tz/default.nix
···
buildGoModule rec {
pname = "tz";
-
version = "0.5";
+
version = "0.6.1";
src = fetchFromGitHub {
owner = "oz";
repo = "tz";
rev = "v${version}";
-
sha256 = "sha256-OwjhV3n1B1yQTNYm4VOW500t0524g85YYiOAAu9yPeo=";
+
sha256 = "sha256-D0rakLZ+swrDwBMcr+EJPgaYsQTWob50QteW1PoIdNk=";
};
-
vendorSha256 = "sha256-Soa87I7oMa34LjYKxNAz9Limi0kQ6JUtb/zI4G7yZnw=";
+
vendorSha256 = "sha256-gMHPWf/kFb55GyyMciLWRzvrQXUGDQ72RNkIhkMVe54=";
meta = with lib; {
description = "A time zone helper";
+2 -2
pkgs/tools/misc/yubikey-manager-qt/default.nix
···
mkDerivation rec {
pname = "yubikey-manager-qt";
-
version = "1.2.3";
+
version = "1.2.4";
src = fetchurl {
url = "https://developers.yubico.com/${pname}/Releases/${pname}-${version}.tar.gz";
-
sha256 = "sha256-54HvuJXjm846sBxwNHLmaBXvO24bbBDyK8YvY4I6LjY=";
+
sha256 = "sha256-PxHc7IeRsO+CPrNTofGypLLW8fSHDkcBqr75NwdlUyc=";
};
nativeBuildInputs = [
+1 -1
pkgs/tools/package-management/nox/default.nix
···
buildInputs = [ python3Packages.pbr git ];
propagatedBuildInputs = with python3Packages; [
-
dogpile_cache
+
dogpile-cache
click
requests
characteristic
+2
pkgs/top-level/ocaml-packages.nix
···
inherit (pkgs) opam git mercurial coreutils gnutar bzip2;
};
+
dune-site = callPackage ../development/ocaml-modules/dune-site { };
+
duration = callPackage ../development/ocaml-modules/duration { };
earley = callPackage ../development/ocaml-modules/earley { };
+18 -15
pkgs/top-level/python-aliases.nix
···
### Deprecated aliases - for backward compatibility
mapAliases ({
-
blockdiagcontrib-cisco = throw "blockdiagcontrib-cisco is not compatible with blockdiag 2.0.0 and has been removed."; # Added 2020-11-29
+
blockdiagcontrib-cisco = throw "blockdiagcontrib-cisco is not compatible with blockdiag 2.0.0 and has been removed."; # added 2020-11-29
bt_proximity = bt-proximity; # added 2021-07-02
-
bugseverywhere = throw "bugseverywhere has been removed: Abandoned by upstream."; # Added 2019-11-27
+
bugseverywhere = throw "bugseverywhere has been removed: Abandoned by upstream."; # added 2019-11-27
class-registry = phx-class-registry; # added 2021-10-05
ConfigArgParse = configargparse; # added 2021-03-18
dateutil = python-dateutil; # added 2021-07-03
detox = throw "detox is no longer maintained, and was broken since may 2019"; # added 2020-07-04
-
dftfit = throw "it's dependency lammps-cython no longer builds";
+
dftfit = throw "it's dependency lammps-cython no longer builds"; # added 2021-07-04
diff_cover = diff-cover; # added 2021-07-02
discogs_client = discogs-client; # added 2021-07-02
-
djangorestframework-jwt = drf-jwt;
-
dns = dnspython; # Alias for compatibility, 2017-12-10
-
faulthandler = throw "faulthandler is built into ${python.executable}";
+
djangorestframework-jwt = drf-jwt; # added 2021-07-20
+
dns = dnspython; # added 2017-12-10
+
dogpile_cache = dogpile-cache; # added 2021-10-28
+
faulthandler = throw "faulthandler is built into ${python.executable}"; # added 2021-07-12
gitdb2 = throw "gitdb2 has been deprecated, use gitdb instead."; # added 2020-03-14
glances = throw "glances has moved to pkgs.glances"; # added 2020-20-28
google_api_python_client = google-api-python-client; # added 2021-03-19
googleapis_common_protos = googleapis-common-protos; # added 2021-03-19
grpc_google_iam_v1 = grpc-google-iam-v1; # added 2021-08-21
HAP-python = hap-python; # added 2021-06-01
+
IMAPClient = imapclient; # added 2021-10-28
jupyter_client = jupyter-client; # added 2021-10-15
lammps-cython = throw "no longer builds and is unmaintained";
MechanicalSoup = mechanicalsoup; # added 2021-06-01
pam = python-pam; # added 2020-09-07.
-
PasteDeploy = pastedeploy;
-
powerlineMemSegment = powerline-mem-segment;
+
PasteDeploy = pastedeploy; # added 2021-10-07
+
powerlineMemSegment = powerline-mem-segment; # added 2021-10-08
privacyidea = throw "renamed to pkgs.privacyidea"; # added 2021-06-20
prometheus_client = prometheus-client; # added 2021-06-10
-
prompt_toolkit = prompt-toolkit;
+
prompt_toolkit = prompt-toolkit; # added 2021-07-22
pylibgen = throw "pylibgen is unmaintained upstreamed, and removed from nixpkgs"; # added 2020-06-20
pymssql = throw "pymssql has been abandoned upstream."; # added 2020-05-04
pysmart-smartx = pysmart; # added 2021-10-22
···
requests_toolbelt = requests-toolbelt; # added 2017-09-26
rotate-backups = throw "pythonPackages.rotate-backups was removed in favor of the top-level rotate-backups"; # added 2021-07-01
scikitlearn = scikit-learn; # added 2021-07-21
-
selectors34 = throw "selectors34 has been removed: functionality provided by Python itself; archived by upstream."; # Added 2021-06-10
+
selectors34 = throw "selectors34 has been removed: functionality provided by Python itself; archived by upstream."; # added 2021-06-10
setuptools_scm = setuptools-scm; # added 2021-06-03
smart_open = smart-open; # added 2021-03-14
smmap2 = throw "smmap2 has been deprecated, use smmap instead."; # added 2020-03-14
-
sphinxcontrib_plantuml = sphinxcontrib-plantuml;
-
topydo = throw "python3Packages.topydo was moved to topydo"; # 2017-09-22
-
tvnamer = throw "python3Packages.tvnamer was moved to tvnamer"; # 2021-07-05
-
WazeRouteCalculator = wazeroutecalculator; # 2021-09-29
-
websocket_client = websocket-client;
+
sphinxcontrib_plantuml = sphinxcontrib-plantuml; # added 2021-08-02
+
sqlalchemy_migrate = sqlalchemy-migrate; # added 2021-10-28
+
topydo = throw "python3Packages.topydo was moved to topydo"; # added 2017-09-22
+
tvnamer = throw "python3Packages.tvnamer was moved to tvnamer"; # added 2021-07-05
+
WazeRouteCalculator = wazeroutecalculator; # added 2021-09-29
+
websocket_client = websocket-client; # added 2021-06-15
zc-buildout221 = zc-buildout; # added 2021-07-21
})
+4 -4
pkgs/top-level/python-packages.nix
···
dodgy = callPackage ../development/python-modules/dodgy { };
-
dogpile_cache = callPackage ../development/python-modules/dogpile.cache { };
+
dogpile-cache = callPackage ../development/python-modules/dogpile-cache { };
-
dogpile_core = callPackage ../development/python-modules/dogpile.core { };
+
dogpile-core = callPackage ../development/python-modules/dogpile-core { };
dogtail = callPackage ../development/python-modules/dogtail { };
···
imantics = callPackage ../development/python-modules/imantics { };
-
IMAPClient = callPackage ../development/python-modules/imapclient { };
+
imapclient = callPackage ../development/python-modules/imapclient { };
imaplib2 = callPackage ../development/python-modules/imaplib2 { };
···
sqlalchemy-jsonfield = callPackage ../development/python-modules/sqlalchemy-jsonfield { };
-
sqlalchemy_migrate = callPackage ../development/python-modules/sqlalchemy-migrate { };
+
sqlalchemy-migrate = callPackage ../development/python-modules/sqlalchemy-migrate { };
sqlalchemy-utils = callPackage ../development/python-modules/sqlalchemy-utils { };