···89}:
10# The return value of this function will be an attrset with arbitrary depth and
11-# the `anything` returned by callTest at its test leafs.
12# The tests not supported by `system` will be replaced with `{}`, so that
13# `passthru.tests` can contain links to those without breaking on architectures
14# where said tests are unsupported.
···655 jool = import ./jool.nix { inherit pkgs runTest; };
656 jotta-cli = handleTest ./jotta-cli.nix { };
657 k3s = handleTest ./k3s { };
658- kafka = handleTest ./kafka.nix { };
659 kanboard = runTest ./web-apps/kanboard.nix;
660 kanidm = handleTest ./kanidm.nix { };
661 kanidm-provisioning = handleTest ./kanidm-provisioning.nix { };
···89}:
10# The return value of this function will be an attrset with arbitrary depth and
11+# the `anything` returned by callTest at its test leaves.
12# The tests not supported by `system` will be replaced with `{}`, so that
13# `passthru.tests` can contain links to those without breaking on architectures
14# where said tests are unsupported.
···655 jool = import ./jool.nix { inherit pkgs runTest; };
656 jotta-cli = handleTest ./jotta-cli.nix { };
657 k3s = handleTest ./k3s { };
658+ kafka = handleTest ./kafka { };
659 kanboard = runTest ./web-apps/kanboard.nix;
660 kanidm = handleTest ./kanidm.nix { };
661 kanidm-provisioning = handleTest ./kanidm-provisioning.nix { };
···1{
2 lib,
03 python3,
4 emptyFile,
5}:
···28 };
2930 plugins =
31- ps: _super: with ps; rec {
32- nixops-digitalocean = callPackage ./plugins/nixops-digitalocean.nix { };
33- nixops-encrypted-links = callPackage ./plugins/nixops-encrypted-links.nix { };
34- nixops-hercules-ci = callPackage ./plugins/nixops-hercules-ci.nix { };
35- nixops-vbox = callPackage ./plugins/nixops-vbox.nix { };
36- nixos-modules-contrib = callPackage ./plugins/nixos-modules-contrib.nix { };
0003738- nixops-aws = throw "nixops-aws was broken and was removed from nixpkgs";
39- nixops-gce = throw "nixops-gce was broken and was removed from nixpkgs";
40- nixops-libvirtd = throw "nixops-libvirtd was broken and was removed from nixpkgs";
41- nixops-hetzner = throw "nixops-hetzner was broken and was removed from nixpkgs";
42- nixops-hetznercloud = throw "nixops-hetznercloud was broken and was removed from nixpkgs";
43-44- # aliases for backwards compatibility
45- nixops-virtd = nixops-libvirtd;
46- nixopsvbox = nixops-vbox;
47- };
004849 # We should not reapply the overlay, but it tends to work out. (It's been this way since poetry2nix was dropped.)
50 availablePlugins = this.plugins this.python.pkgs this.python.pkgs;
···1{
2 lib,
3+ config,
4 python3,
5 emptyFile,
6}:
···29 };
3031 plugins =
32+ ps: _super:
33+ with ps;
34+ (
35+ rec {
36+ nixops-digitalocean = callPackage ./plugins/nixops-digitalocean.nix { };
37+ nixops-encrypted-links = callPackage ./plugins/nixops-encrypted-links.nix { };
38+ nixops-hercules-ci = callPackage ./plugins/nixops-hercules-ci.nix { };
39+ nixops-vbox = callPackage ./plugins/nixops-vbox.nix { };
40+ nixos-modules-contrib = callPackage ./plugins/nixos-modules-contrib.nix { };
4142+ # aliases for backwards compatibility
43+ nixopsvbox = nixops-vbox;
44+ }
45+ // lib.optionalAttrs config.allowAliases rec {
46+ nixops-aws = throw "nixops-aws was broken and was removed from nixpkgs";
47+ nixops-gce = throw "nixops-gce was broken and was removed from nixpkgs";
48+ nixops-libvirtd = throw "nixops-libvirtd was broken and was removed from nixpkgs";
49+ nixops-hetzner = throw "nixops-hetzner was broken and was removed from nixpkgs";
50+ nixops-hetznercloud = throw "nixops-hetznercloud was broken and was removed from nixpkgs";
51+ nixops-virtd = nixops-libvirtd;
52+ }
53+ );
5455 # We should not reapply the overlay, but it tends to work out. (It's been this way since poetry2nix was dropped.)
56 availablePlugins = this.plugins this.python.pkgs this.python.pkgs;
···43 doCheck = false;
4445 meta = with lib; {
46- description = "Cargo plugin to generate list of all licenses for a crate";
47 mainProgram = "cargo-deny";
48 homepage = "https://github.com/EmbarkStudios/cargo-deny";
49 changelog = "https://github.com/EmbarkStudios/cargo-deny/blob/${version}/CHANGELOG.md";
···43 doCheck = false;
4445 meta = with lib; {
46+ description = "Cargo plugin for linting your dependencies";
47 mainProgram = "cargo-deny";
48 homepage = "https://github.com/EmbarkStudios/cargo-deny";
49 changelog = "https://github.com/EmbarkStudios/cargo-deny/blob/${version}/CHANGELOG.md";
···1-{
2- lib,
3- stdenv,
4- fetchFromGitHub,
5- ncurses,
6- hdate,
7- lua5_2,
8-}:
9-10-stdenv.mkDerivation rec {
11- version = "12010904";
12- pname = "dozenal";
13- src = fetchFromGitHub {
14- owner = "dgoodmaniii";
15- repo = "dozenal";
16- rev = "v${version}";
17- sha256 = "1ic63gpdda762x6ks3al71dwgmsy2isicqyr2935bd245jx8s209";
18- };
19- makeFlags = [
20- # author do not use configure and prefix directly using $prefix
21- "prefix=$(out)"
22- # graphical version of dozdc requires xforms, which is not i nixpkgs so I turned it down
23- "XFORMS_FLAGS=-UXFORMS"
24- "LUALIB=-llua"
25- "bindir=$(prefix)/bin/"
26- ];
27- # some include hardcodes the lua libraries path. This is a patch for that
28- patches = [ ./lua-header.patch ];
29- preBuild = "cd dozenal";
30- buildInputs = [
31- ncurses
32- hdate
33- lua5_2
34- ];
35-36- # Parallel builds fail due to no dependencies between subdirs.
37- # As a result some subdirs are atempted to build twice:
38- # ../dec/dec.c:39:10: fatal error: conv.h: No such file or directory
39- # Let's disable parallelism until it's fixed upstream:
40- # https://gitlab.com/dgoodmaniii/dozenal/-/issues/8
41- enableParallelBuilding = false;
42-43- # I remove gdozdc, as I didn't figure all it's dependency yet.
44- postInstall = "rm $out/bin/gdozdc";
45-46- meta = {
47- description = "Complete suite of dozenal (base twelve) programs";
48- longDescription = ''
49- Programs
50-51- doz --- a converter; converts decimal numbers into dozenal. Accepts
52- input in standard or exponential notation (i.e., "1492.2" or "1.4922e3").
53- dec --- a converter; converts dozenal numbers into decimal. Accepts input
54- in standard or exponential notation (i.e., "X44;4" or "X;444e2").
55- dozword --- converts a dozenal number (integers only) into words,
56- according to the Pendlebury system.
57- dozdc --- a full-featured scientific calculator which works in the
58- dozenal base. RPN command line.
59- tgmconv --- a converter for all standard measurements; converts to and
60- from TGM, Imperial, customary, and SI metric.
61- dozpret --- a pretty-printer for dozenal numbers; inserts spacing (or
62- other characters) as desired, and can also transform transdecimal digits
63- from 'X' to 'E' into any character or sequence of characters desired.
64- dozdate --- a more-or-less drop-in replacement for GNU and BSD date, it
65- outputs the date and time in dozenal, as well as containing some TGM
66- extensions.
67- dozstring --- a simple byte converter; absorbs a string either from
68- standard input or a command line argument, leaving it identical but
69- for the numbers, which it converts into dozenal. Options for padding
70- and for not converting specific numbers.
71- doman --- a converter which takes a dozenal integer and
72- emits its equivalent in a non-place-value system, such as
73- Roman numerals. Arbitrary ranks and symbols may be used.
74- Defaults to dozenal Roman numerals.
75- '';
76- homepage = "https://github.com/dgoodmaniii/dozenal/";
77- maintainers = with lib.maintainers; [ CharlesHD ];
78- license = lib.licenses.gpl3;
79- };
80-}
···11 # and make sure the version regex is up to date here.
12 # Ensure you also check ../mattermost/package.nix for ESR releases.
13 regex = "^v(10\\.[0-9]+\\.[0-9]+)$";
14- version = "10.6.0";
15- srcHash = "sha256-GnXxhhbOKJezUAyKRBbn5IE22gzsn80mwnPANOT9Qu4=";
16 vendorHash = "sha256-wj+bAQNJSs9m2SSfl+Ipm965iAhKQ2v1iMjH7I79qf4=";
17 npmDepsHash = "sha256-MdLfjLmizFbLfSqOdAZ+euXomB2ZPjZOqspQYnyHcuk=";
18 lockfileOverlay = ''
···11 # and make sure the version regex is up to date here.
12 # Ensure you also check ../mattermost/package.nix for ESR releases.
13 regex = "^v(10\\.[0-9]+\\.[0-9]+)$";
14+ version = "10.6.1";
15+ srcHash = "sha256-xCrjJc6JCZXnCZ5lJ3o1bRbt7sxlEmcWeiw2cKmyWG0=";
16 vendorHash = "sha256-wj+bAQNJSs9m2SSfl+Ipm965iAhKQ2v1iMjH7I79qf4=";
17 npmDepsHash = "sha256-MdLfjLmizFbLfSqOdAZ+euXomB2ZPjZOqspQYnyHcuk=";
18 lockfileOverlay = ''
···51 find . -type f -name "CMakeLists.txt" -exec sed -i "/BridgeSetup\\.cmake/d" {} \;
5253 # Use the available ICU version
54- sed -i "s/libicu\(i18n\|uc\|data\)\.so\.56/libicu\1.so/g" bridge-gui/DeployLinux.cmake
5556 # Create a Desktop Entry that uses a `protonmail-bridge-gui` binary without upstream's launcher
57 sed "s/^\(Icon\|Exec\)=.*$/\1=protonmail-bridge-gui/" ../../../dist/proton-bridge.desktop > proton-bridge-gui.desktop
···51 find . -type f -name "CMakeLists.txt" -exec sed -i "/BridgeSetup\\.cmake/d" {} \;
5253 # Use the available ICU version
54+ sed -i "s/libicu\(i18n\|uc\|data\)\.so\.[0-9][0-9]/libicu\1.so/g" bridge-gui/DeployLinux.cmake
5556 # Create a Desktop Entry that uses a `protonmail-bridge-gui` binary without upstream's launcher
57 sed "s/^\(Icon\|Exec\)=.*$/\1=protonmail-bridge-gui/" ../../../dist/proton-bridge.desktop > proton-bridge-gui.desktop
···1112stdenv.mkDerivation rec {
13 pname = "signal-cli";
14- version = "0.13.13";
1516 # Building from source would be preferred, but is much more involved.
17 src = fetchurl {
18 url = "https://github.com/AsamK/signal-cli/releases/download/v${version}/signal-cli-${version}.tar.gz";
19- hash = "sha256-nSaf8VkHxuAvedUhFAIeagOxKYNxp3hi0zH6BbomtMQ=";
20 };
2122 buildInputs = lib.optionals stdenv.hostPlatform.isLinux [
···1112stdenv.mkDerivation rec {
13 pname = "signal-cli";
14+ version = "0.13.14";
1516 # Building from source would be preferred, but is much more involved.
17 src = fetchurl {
18 url = "https://github.com/AsamK/signal-cli/releases/download/v${version}/signal-cli-${version}.tar.gz";
19+ hash = "sha256-TKAUSVIBF9FVbwZYc5R3ZsVecF/RsII1nl7GuITxAoc=";
20 };
2122 buildInputs = lib.optionals stdenv.hostPlatform.isLinux [
···1+import json
2+import re
3+import sys
4+import subprocess
5+import urllib.request
6+7+from typing import Iterable, Optional, Tuple
8+from urllib.request import urlopen
9+from datetime import datetime
10+11+# Number of spaces used for each indentation level
12+JSON_INDENT = 4
13+14+releases_json = None
15+16+# Releases that have reached end-of-life no longer receive any updates
17+# and it is rather pointless trying to update those.
18+#
19+# https://endoflife.date/electron
20+def supported_version_range() -> range:
21+ """Returns a range of electron releases that have not reached end-of-life yet"""
22+ global releases_json
23+ if releases_json is None:
24+ releases_json = json.loads(
25+ urlopen("https://endoflife.date/api/electron.json").read()
26+ )
27+ supported_releases = [
28+ int(x["cycle"])
29+ for x in releases_json
30+ if x["eol"] == False
31+ or datetime.strptime(x["eol"], "%Y-%m-%d") > datetime.today()
32+ ]
33+34+ return range(
35+ min(supported_releases), # incl.
36+ # We have also packaged the beta release in nixpkgs,
37+ # but it is not tracked by endoflife.date
38+ max(supported_releases) + 2, # excl.
39+ 1,
40+ )
41+42+def get_latest_version(major_version: str) -> Tuple[str, str]:
43+ """Returns the latest version for a given major version"""
44+ electron_releases: dict = json.loads(
45+ urlopen("https://releases.electronjs.org/releases.json").read()
46+ )
47+ major_version_releases = filter(
48+ lambda item: item["version"].startswith(f"{major_version}."), electron_releases
49+ )
50+ m = max(major_version_releases, key=lambda item: item["date"])
51+52+ rev = f"v{m['version']}"
53+ return (m, rev)
54+55+56+def load_info_json(path: str) -> dict:
57+ """Load the contents of a JSON file
58+59+ Args:
60+ path: The path to the JSON file
61+62+ Returns: An empty dict if the path does not exist, otherwise the contents of the JSON file.
63+ """
64+ try:
65+ with open(path, "r") as f:
66+ return json.loads(f.read())
67+ except:
68+ return {}
69+70+71+def save_info_json(path: str, content: dict) -> None:
72+ """Saves the given info to a JSON file
73+74+ Args:
75+ path: The path where the info should be saved
76+ content: The content to be saved as JSON.
77+ """
78+ with open(path, "w") as f:
79+ f.write(json.dumps(content, indent=JSON_INDENT, default=vars, sort_keys=True))
80+ f.write("\n")
81+82+83+def parse_cve_numbers(tag_name: str) -> Iterable[str]:
84+ """Returns mentioned CVE numbers from a given release tag"""
85+ cve_pattern = r"CVE-\d{4}-\d+"
86+ url = f"https://api.github.com/repos/electron/electron/releases/tags/{tag_name}"
87+ headers = {
88+ "Accept": "application/vnd.github+json",
89+ "X-GitHub-Api-Version": "2022-11-28",
90+ }
91+ request = urllib.request.Request(url=url, headers=headers)
92+ release_note = ""
93+ try:
94+ with urlopen(request) as response:
95+ release_note = json.loads(response.read().decode("utf-8"))["body"]
96+ except:
97+ print(
98+ f"WARN: Fetching release note for {tag_name} from GitHub failed!",
99+ file=sys.stderr,
100+ )
101+102+ return sorted(re.findall(cve_pattern, release_note))
103+104+105+def commit_result(
106+ package_name: str, old_version: Optional[str], new_version: str, path: str
107+) -> None:
108+ """Creates a git commit with a short description of the change
109+110+ Args:
111+ package_name: The package name, e.g. `electron-source.electron-{major_version}`
112+ or `electron_{major_version}-bin`
113+114+ old_version: Version number before the update.
115+ Can be left empty when initializing a new release.
116+117+ new_version: Version number after the update.
118+119+ path: Path to the lockfile to be committed
120+ """
121+ assert (
122+ isinstance(package_name, str) and len(package_name) > 0
123+ ), "Argument `package_name` cannot be empty"
124+ assert (
125+ isinstance(new_version, str) and len(new_version) > 0
126+ ), "Argument `new_version` cannot be empty"
127+128+ if old_version != new_version:
129+ major_version = new_version.split(".")[0]
130+ cve_fixes_text = "\n".join(
131+ list(
132+ map(lambda cve: f"- Fixes {cve}", parse_cve_numbers(f"v{new_version}"))
133+ )
134+ )
135+ init_msg = f"init at {new_version}"
136+ update_msg = f"{old_version} -> {new_version}"
137+ diff = (
138+ f"- Diff: https://github.com/electron/electron/compare/refs/tags/v{old_version}...v{new_version}\n"
139+ if old_version != None
140+ else ""
141+ )
142+ commit_message = f"""{package_name}: {update_msg if old_version != None else init_msg}
143+144+- Changelog: https://github.com/electron/electron/releases/tag/v{new_version}
145+{diff}{cve_fixes_text}
146+"""
147+ subprocess.run(
148+ [
149+ "git",
150+ "add",
151+ path,
152+ ]
153+ )
154+ subprocess.run(
155+ [
156+ "git",
157+ "commit",
158+ "-m",
159+ commit_message,
160+ ]
161+ )
···7 owner = "freebsd";
8 repo = "freebsd-src";
9 inherit (sourceData) rev hash;
10+11+ # The GitHub export excludes some files in the git source
12+ # that were marked `export-ignore`.
13+ # A normal git checkout will keep those files,
14+ # matching the update script
15+ forceFetchGit = true;
16}
···10 "nvidia"
11 "panfrost"
12 "panthor"
013 ];
14 # these GPU families are partially supported upstream, they are also tricky to build in nixpkgs
15 # volunteers with specific hardware needed to build and test these package variants
16- additionalGPUFamilies = [ "ascend" ];
00017 defaultSupport = builtins.listToAttrs (
18 # apple can only build on darwin, and it can't build everything else, and vice versa
19 builtins.map (gpu: {
···10 "nvidia"
11 "panfrost"
12 "panthor"
13+ "v3d"
14 ];
15 # these GPU families are partially supported upstream, they are also tricky to build in nixpkgs
16 # volunteers with specific hardware needed to build and test these package variants
17+ additionalGPUFamilies = [
18+ "ascend"
19+ "tpu"
20+ ];
21 defaultSupport = builtins.listToAttrs (
22 # apple can only build on darwin, and it can't build everything else, and vice versa
23 builtins.map (gpu: {
+1-5
pkgs/top-level/aliases.nix
···515 dotnet-sdk_3 = throw "'dotnet-sdk_3' has been renamed to/replaced by 'dotnetCorePackages.sdk_3_1'"; # Converted to throw 2024-10-17
516 dotnet-sdk_5 = throw "'dotnet-sdk_5' has been renamed to/replaced by 'dotnetCorePackages.sdk_5_0'"; # Converted to throw 2024-10-17
517 downonspot = throw "'downonspot' was removed because upstream has been taken down by a cease and desist"; # Added 2025-01-25
0518 dstat = throw "'dstat' has been removed because it has been unmaintained since 2020. Use 'dool' instead."; # Added 2025-01-21
519 drush = throw "drush as a standalone package has been removed because it's no longer supported as a standalone tool";
520 dtv-scan-tables_linuxtv = dtv-scan-tables; # Added 2023-03-03
···1248 nux = throw "nux has been removed because it has been abandoned for 4 years"; # Added 2025-03-22
1249 nvidia-podman = throw "podman should use the Container Device Interface (CDI) instead. See https://web.archive.org/web/20240729183805/https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html#configuring-podman"; # Added 2024-08-02
1250 nvidia-thrust = throw "nvidia-thrust has been removed because the project was deprecated; use cudaPackages.cuda_cccl";
1251- nvtop = lib.warnOnInstantiate "nvtop has been renamed to nvtopPackages.full" nvtopPackages.full; # Added 2024-02-25
1252- nvtop-amd = lib.warnOnInstantiate "nvtop-amd has been renamed to nvtopPackages.amd" nvtopPackages.amd; # Added 2024-02-25
1253- nvtop-nvidia = lib.warnOnInstantiate "nvtop-nvidia has been renamed to nvtopPackages.nvidia" nvtopPackages.nvidia; # Added 2024-02-25
1254- nvtop-intel = lib.warnOnInstantiate "nvtop-intel has been renamed to nvtopPackages.intel" nvtopPackages.intel; # Added 2024-02-25
1255- nvtop-msm = lib.warnOnInstantiate "nvtop-msm has been renamed to nvtopPackages.msm" nvtopPackages.msm; # Added 2024-02-25
12561257 ### O ###
1258
···515 dotnet-sdk_3 = throw "'dotnet-sdk_3' has been renamed to/replaced by 'dotnetCorePackages.sdk_3_1'"; # Converted to throw 2024-10-17
516 dotnet-sdk_5 = throw "'dotnet-sdk_5' has been renamed to/replaced by 'dotnetCorePackages.sdk_5_0'"; # Converted to throw 2024-10-17
517 downonspot = throw "'downonspot' was removed because upstream has been taken down by a cease and desist"; # Added 2025-01-25
518+ dozenal = throw "dozenal has been removed because it does not compile and only minimal functionality"; # Added 2025-03-30
519 dstat = throw "'dstat' has been removed because it has been unmaintained since 2020. Use 'dool' instead."; # Added 2025-01-21
520 drush = throw "drush as a standalone package has been removed because it's no longer supported as a standalone tool";
521 dtv-scan-tables_linuxtv = dtv-scan-tables; # Added 2023-03-03
···1249 nux = throw "nux has been removed because it has been abandoned for 4 years"; # Added 2025-03-22
1250 nvidia-podman = throw "podman should use the Container Device Interface (CDI) instead. See https://web.archive.org/web/20240729183805/https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html#configuring-podman"; # Added 2024-08-02
1251 nvidia-thrust = throw "nvidia-thrust has been removed because the project was deprecated; use cudaPackages.cuda_cccl";
0000012521253 ### O ###
1254