time. If you're running Teleport server components, it is recommended to
first upgrade to an intermediate v13.x version by setting
`services.teleport.package = pkgs.teleport_13`. Afterwards, this option can
be removed to upgrade to the default version (14).
- `zfs` was updated from v2.1.x to v2.2.0, [enabling newer kernel support and
adding new features](https://github.com/openzfs/zfs/releases/tag/zfs-2.2.0).
- The use of `sourceRoot = "source";`, `sourceRoot = "source/subdir";`, and
similar lines in package derivations using the default `unpackPhase` is
deprecated as it requires `unpackPhase` to always produce a directory named
"source". Use `sourceRoot = src.name`, `sourceRoot = "${src.name}/subdir";`,
or `setSourceRoot = "sourceRoot=$(echo */subdir)";` or similar instead.
- The `django` alias in the python package set was upgraded to Django v4.x.
Applications that consume Django should always pin their python environment
to a compatible major version, so they can move at their own pace.
```nix
{
python = python3.override {
packageOverrides = self: super: {
django = super.django_3;
};
};
}
```
- The `qemu-vm.nix` module by default now identifies block devices via
persistent names available in `/dev/disk/by-*`. Because the rootDevice is
identified by its filesystem label, it needs to be formatted before the VM is
started. The functionality of automatically formatting the rootDevice in the
initrd is removed from the QEMU module. However, for tests that depend on
this functionality, a test utility for the scripted initrd is added
(`nixos/tests/common/auto-format-root-device.nix`). To use this in a NixOS
test, import the module, e.g. `imports = [
./common/auto-format-root-device.nix ];` When you use the systemd initrd, you
can automatically format the root device by setting
`virtualisation.fileSystems."/".autoFormat = true;`.
- The `electron` packages places its application files in
`$out/libexec/electron` instead of `$out/lib/electron` now. Packages using
electron-builder will fail to build and need to be adjusted by changing `lib`
to `libexec`.
### New Services {#sec-release-23.11-nixos-new-services}
- [MCHPRS](https://github.com/MCHPR/MCHPRS), a multithreaded Minecraft server
built for redstone. Available as
[services.mchprs](#opt-services.mchprs.enable).
- [acme-dns](https://github.com/joohoi/acme-dns), a limited DNS server to
handle ACME DNS challenges easily and securely. Available as
[services.acme-dns](#opt-services.acme-dns.enable).
- [frp](https://github.com/fatedier/frp), a fast reverse proxy to help you
expose a local server behind a NAT or firewall to the Internet. Available as
[services.frp](#opt-services.frp.enable).
- [river](https://github.com/riverwm/river), A dynamic tiling wayland
compositor. Available as [programs.river](#opt-programs.river.enable).
- [wayfire](https://wayfire.org), a modular and extensible wayland compositor.
Available as [programs.wayfire](#opt-programs.wayfire.enable).
- [mautrix-whatsapp](https://docs.mau.fi/bridges/go/whatsapp/index.html), a
Matrix-WhatsApp puppeting bridge. Available as
[services.mautrix-whatsapp](#opt-services.mautrix-whatsapp.enable).
- [hddfancontrol](https://github.com/desbma/hddfancontrol), a service to
regulate fan speeds based on hard drive temperature. Available as
[services.hddfancontrol](#opt-services.hddfancontrol.enable).
- [seatd](https://sr.ht/~kennylevinsen/seatd/), A minimal seat management
daemon. Available as [services.seatd](#opt-services.seatd.enable).
- [GoToSocial](https://gotosocial.org/), an ActivityPub social network server
written in Golang. Available as
[services.gotosocial](#opt-services.gotosocial.enable).
- [Castopod](https://castopod.org/), an open-source hosting platform made for
podcasters who want to engage and interact with their audience. Available as
[services.castopod](#opt-services.castopod.enable).