···3030- [NixOS 25.11 Release Notes](https://github.com/NixOS/nixpkgs/blob/master/nixos/doc/manual/release-notes/rl-2511.section.md) (or backporting [24.11](https://github.com/NixOS/nixpkgs/blob/master/nixos/doc/manual/release-notes/rl-2411.section.md) and [25.05](https://github.com/NixOS/nixpkgs/blob/master/nixos/doc/manual/release-notes/rl-2505.section.md) NixOS Release notes)
3131 - [ ] (Module updates) Added a release notes entry if the change is significant
3232 - [ ] (Module addition) Added a release notes entry if adding a new NixOS module
3333-- [ ] Fits [CONTRIBUTING.md](https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md).
3333+- [ ] Fits [CONTRIBUTING.md](https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md), [pkgs/README.md](https://github.com/NixOS/nixpkgs/blob/master/pkgs/README.md), [maintainers/README.md](https://github.com/NixOS/nixpkgs/blob/master/maintainers/README.md) and other contributing documentation in corresponding paths.
34343535<!--
3636To help with the large amounts of pull requests, we would appreciate your
+10-1
nixos/modules/misc/man-db.nix
···6969 environment.systemPackages = [ cfg.package ];
7070 environment.etc."man_db.conf".text =
7171 let
7272+ # We unfortunately can’t use the customized `cfg.package` when
7373+ # cross‐compiling. Instead we detect that situation and work
7474+ # around it by using the vanilla one, like the OpenSSH module.
7575+ buildPackage =
7676+ if pkgs.stdenv.buildPlatform.canExecute pkgs.stdenv.hostPlatform then
7777+ cfg.package
7878+ else
7979+ pkgs.buildPackages.man-db;
8080+7281 manualCache =
7382 pkgs.runCommand "man-cache"
7483 {
7575- nativeBuildInputs = [ cfg.package ];
8484+ nativeBuildInputs = [ buildPackage ];
7685 }
7786 ''
7887 echo "MANDB_MAP ${cfg.manualPages}/share/man $out" > man.conf
···359359 systemd.services.pipewire.bindsTo = [ "dbus.service" ];
360360 systemd.user.services.pipewire.bindsTo = [ "dbus.service" ];
361361362362- # Enable either system or user units. Note that for pipewire-pulse there
363363- # are only user units, which work in both cases.
362362+ # Enable either system or user units.
364363 systemd.sockets.pipewire.enable = cfg.systemWide;
365364 systemd.services.pipewire.enable = cfg.systemWide;
366365 systemd.user.sockets.pipewire.enable = !cfg.systemWide;
+60
pkgs/by-name/am/ameba-ls/package.nix
···11+{
22+ lib,
33+ fetchFromGitHub,
44+ crystal_1_15,
55+ versionCheckHook,
66+}:
77+88+let
99+ # Use the same Crystal minor version as specified in upstream
1010+ crystal = crystal_1_15;
1111+in
1212+crystal.buildCrystalPackage rec {
1313+ pname = "ameba-ls";
1414+ version = "0.1.0";
1515+1616+ src = fetchFromGitHub {
1717+ owner = "crystal-lang-tools";
1818+ repo = "ameba-ls";
1919+ tag = "v${version}";
2020+ hash = "sha256-TEHjR+34wrq24XJNLhWZCEzcDEMDlmUHv0iiF4Z6JlI=";
2121+ };
2222+2323+ shardsFile = ./shards.nix;
2424+2525+ crystalBinaries.ameba-ls.src = "src/ameba-ls.cr";
2626+2727+ buildTargets = [
2828+ "ameba-ls"
2929+ ];
3030+3131+ # There are no actual tests
3232+ doCheck = false;
3333+3434+ installPhase = ''
3535+ runHook preInstall
3636+3737+ install -Dm555 bin/ameba-ls -t "$out/bin/"
3838+3939+ runHook postInstall
4040+ '';
4141+4242+ nativeInstallCheckInputs = [
4343+ versionCheckHook
4444+ ];
4545+ doInstallCheck = true;
4646+ versionCheckProgram = "${placeholder "out"}/bin/ameba-ls";
4747+ versionCheckProgramArg = "--version";
4848+4949+ meta = {
5050+ description = "Crystal language server powered by Ameba linter";
5151+ homepage = "https://github.com/crystal-lang-tools/ameba-ls";
5252+ changelog = "https://github.com/crystal-lang-tools/ameba-ls/blob/v${version}/CHANGELOG.md";
5353+ license = lib.licenses.mit;
5454+ platforms = lib.platforms.unix;
5555+ maintainers = with lib.maintainers; [
5656+ kachick
5757+ ];
5858+ mainProgram = "ameba-ls";
5959+ };
6060+}
···11+#!/usr/bin/env nix-shell
22+#!nix-shell -I nixpkgs=./. -i python3 -p python3 curl common-updater-scripts nix coreutils
33+44+"""
55+Updater script for the roon-server package.
66+"""
77+88+import subprocess
99+import urllib.request
1010+import re
1111+import sys
1212+import os
1313+1414+1515+def get_current_version():
1616+ """Get the current version of roon-server from the package.nix file."""
1717+ result = subprocess.run(
1818+ [
1919+ "nix-instantiate",
2020+ "--eval",
2121+ "-E",
2222+ "with import ./. {}; roon-server.version or (lib.getVersion roon-server)",
2323+ ],
2424+ capture_output=True,
2525+ text=True,
2626+ )
2727+ result.check_returncode()
2828+ return result.stdout.strip().strip('"')
2929+3030+3131+def get_latest_version_info():
3232+ """Get the latest version information from the Roon Labs API."""
3333+ url = "https://updates.roonlabs.net/update/?v=2&platform=linux&version=&product=RoonServer&branding=roon&branch=production&curbranch=production"
3434+ with urllib.request.urlopen(url) as response:
3535+ content = response.read().decode("utf-8")
3636+3737+ # Parse the response
3838+ info = {}
3939+ for line in content.splitlines():
4040+ if "=" in line:
4141+ key, value = line.split("=", 1)
4242+ info[key] = value
4343+4444+ return info
4545+4646+4747+def parse_version(display_version):
4848+ """Parse the display version string to get the version in the format used in the package.nix file."""
4949+ # Example: "2.47 (build 1510) production" -> "2.47.1510"
5050+ match = re.search(r"(\d+\.\d+)\s+\(build\s+(\d+)\)", display_version)
5151+ if match:
5252+ return f"{match.group(1)}.{match.group(2)}"
5353+ return None
5454+5555+5656+def get_hash(url):
5757+ """Calculate the hash of the package."""
5858+ result = subprocess.run(
5959+ ["nix-prefetch-url", "--type", "sha256", url], capture_output=True, text=True
6060+ )
6161+ result.check_returncode()
6262+ pkg_hash = result.stdout.strip()
6363+6464+ result = subprocess.run(
6565+ ["nix", "hash", "to-sri", f"sha256:{pkg_hash}"], capture_output=True, text=True
6666+ )
6767+ result.check_returncode()
6868+ return result.stdout.strip()
6969+7070+7171+def update_package(new_version, hash_value):
7272+ """Update the package.nix file with the new version and hash."""
7373+ subprocess.run(
7474+ [
7575+ "update-source-version",
7676+ "roon-server",
7777+ new_version,
7878+ hash_value,
7979+ "--ignore-same-version",
8080+ ],
8181+ check=True,
8282+ )
8383+8484+8585+def main():
8686+ current_version = get_current_version()
8787+ print(f"Current roon-server version: {current_version}")
8888+8989+ try:
9090+ latest_info = get_latest_version_info()
9191+9292+ display_version = latest_info.get("displayversion", "")
9393+ download_url = latest_info.get("updateurl", "")
9494+9595+ if not display_version or not download_url:
9696+ print("Error: Failed to get version information from Roon Labs API")
9797+ sys.exit(1)
9898+9999+ print(f"Latest version from API: {display_version}")
100100+ print(f"Download URL: {download_url}")
101101+102102+ new_version = parse_version(display_version)
103103+ if not new_version:
104104+ print(
105105+ f"Error: Failed to parse version from display version: {display_version}"
106106+ )
107107+ sys.exit(1)
108108+109109+ print(f"Parsed version: {new_version}")
110110+111111+ if new_version == current_version:
112112+ print("roon-server is already up to date!")
113113+ return
114114+115115+ print(f"Calculating hash for new version {new_version}...")
116116+ hash_value = get_hash(download_url)
117117+118118+ print(
119119+ f"Updating package.nix with new version {new_version} and hash {hash_value}"
120120+ )
121121+ update_package(new_version, hash_value)
122122+123123+ print(f"Successfully updated roon-server to version {new_version}")
124124+125125+ except Exception as e:
126126+ print(f"Error: {e}")
127127+ sys.exit(1)
128128+129129+130130+if __name__ == "__main__":
131131+ main()
···992992 ledger_agent = ledger-agent; # Added 2024-01-07
993993 lfs = dysk; # Added 2023-07-03
994994 libAfterImage = throw "'libAfterImage' has been removed from nixpkgs, as it's no longer in development for a long time"; # Added 2024-06-01
995995+ libast = throw "'libast' has been removed due to lack of maintenance upstream."; # Added 2025-06-09
995996 libav = throw "libav has been removed as it was insecure and abandoned upstream for over half a decade; please use FFmpeg"; # Added 2024-08-25
996997 libav_0_8 = libav; # Added 2024-08-25
997998 libav_11 = libav; # Added 2024-08-25
···11661167 lv_img_conv = throw "'lv_img_conv' has been removed from nixpkgs as it is broken"; # Added 2024-06-18
11671168 lxd = lib.warnOnInstantiate "lxd has been renamed to lxd-lts" lxd-lts; # Added 2024-04-01
11681169 lxd-unwrapped = lib.warnOnInstantiate "lxd-unwrapped has been renamed to lxd-unwrapped-lts" lxd-unwrapped-lts; # Added 2024-04-01
11701170+ lxdvdrip = throw "'lxdvdrip' has been removed due to lack of upstream maintenance."; # Added 2025-06-09
11691171 lzma = throw "'lzma' has been renamed to/replaced by 'xz'"; # Converted to throw 2024-10-17
11701172 lzwolf = throw "'lzwolf' has been removed because it's no longer maintained upstream. Consider using 'ecwolf'"; # Added 2025-03-02
11711173
+1-1
pkgs/top-level/python-aliases.nix
···166166 cryptacular = throw "cryptacular was removed, because it was disabled on all python version since 3.6 and last updated in 2021"; # Added 2024-05-13
167167 cryptography_vectors = "cryptography_vectors is no longer exposed in python*Packages because it is used for testing cryptography only."; # Added 2022-03-23
168168 cufflinks = throw "cufflinks has removed, since it is abandoned and broken"; # added 2025-02-16
169169- curve25519-donna = throw "unused leaf package with dead upstream repository and no release in 10 years"; # added 2025-05-21
169169+ curve25519-donna = throw "curve25519-donna was removed, since it is abandoned and unmaintained since 2015"; # added 2025-05-21
170170 cx_Freeze = cx-freeze; # added 2023-08-02
171171 cx_oracle = cx-oracle; # added 2024-01-03
172172 d2to1 = throw "d2to1 is archived and no longer works with setuptools v68"; # added 2023-07-30