Merge 869d1be399 into haskell-updates

This commit is contained in:
nixpkgs-ci[bot]
2026-04-30 00:43:20 +00:00
committed by GitHub
289 changed files with 2658 additions and 1427 deletions
-6
View File
@@ -214,12 +214,6 @@ code, while others choose not to.
In Nix, there are multiple approaches to building a Composer-based project.
::: {.warning}
`buildComposerProject2` has a [known bug](https://github.com/NixOS/nixpkgs/issues/451395)
where the `vendorHash` changes every time a Composer release happens that changes the
`autoload.php` or vendored composer code.
:::
One such method is the `php.buildComposerProject2` helper function, which serves
as a wrapper around `mkDerivation`.
+73 -23
View File
@@ -207,6 +207,62 @@ following are specific to `buildPythonPackage`:
* `setupPyGlobalFlags ? []`: List of flags passed to `setup.py` command.
* `setupPyBuildFlags ? []`: List of flags passed to `setup.py build_ext` command.
##### Using fixed-point arguments {#buildpythonpackage-fixed-point-arguments}
Both `buildPythonPackage` and `buildPythonApplication` support [fixed-point arguments](#chap-build-helpers-finalAttrs), similar to `stdenv.mkDerivation`.
This allows you to reference the final attributes of the derivation.
Instead of using `rec`:
```nix
buildPythonPackage rec {
pname = "pyspread";
version = "2.4";
src = fetchPypi {
inherit pname version;
hash = "sha256-...";
};
}
```
You can use the `finalAttrs` pattern:
```nix
buildPythonPackage (finalAttrs: {
pname = "pyspread";
version = "2.4";
src = fetchPypi {
pname = "pyspread";
inherit (finalAttrs) version;
hash = "sha256-...";
};
})
```
See the [general documentation on fixed-point arguments](#chap-build-helpers-finalAttrs) for more details on the benefits of this pattern.
::: {.note}
Some `buildPythonPackage`/`buildPythonApplication` arguments are passed down indirectly to `stdenv.mkDerivation` via `passthru`.
Therefore the final state of these attributes can be accessed via `finalAttrs.passthru.${name}`.
[`<pkg>.overrideAttrs`](#sec-pkg-overrideAttrs) can override them using the `passthru = prevAttrs.passthru // { foo = "bar"; }` pattern.
Such arguments include:
- `disabled`
- `pyproject`
- `format`
- `build-system`
- `dependencies`
- `optional-dependencies`
<!--
TODO(@doronbehar): When `.overridePythonAttrs` will be removed, the above text might need to be revised. See:
- https://github.com/NixOS/nixpkgs/pull/379637
- https://github.com/NixOS/nixpkgs/pull/469804
-->
:::
The [`stdenv.mkDerivation`](#sec-using-stdenv) function accepts various parameters for describing
build inputs (see "Specifying dependencies"). The following are of special
interest for Python packages, either because these are primarily used, or
@@ -237,29 +293,23 @@ the overrides for packages in the package set.
```nix
with import <nixpkgs> { };
(
let
python =
let
packageOverrides = self: super: {
pandas = super.pandas.overridePythonAttrs (old: rec {
version = "0.19.1";
src = fetchPypi {
pname = "pandas";
inherit version;
hash = "sha256-JQn+rtpy/OA2deLszSKEuxyttqBzcAil50H+JDHUdCE=";
};
});
};
in
pkgs.python3.override {
inherit packageOverrides;
self = python;
};
in
python.withPackages (ps: [ ps.blaze ])
).env
let
python = pkgs.python3.override {
packageOverrides = self: super: {
pandas = super.pandas.overridePythonAttrs (
finalAttrs: prevAttrs: {
version = "0.19.1";
src = fetchPypi {
pname = "pandas";
inherit (finalAttrs) version;
hash = "sha256-JQn+rtpy/OA2deLszSKEuxyttqBzcAil50H+JDHUdCE=";
};
}
);
};
};
in
(python.withPackages (ps: [ ps.blaze ])).env
```
The next example shows a non trivial overriding of the `blas` implementation to
+3
View File
@@ -4059,6 +4059,9 @@
"buildpythonpackage-parameters": [
"index.html#buildpythonpackage-parameters"
],
"buildpythonpackage-fixed-point-arguments": [
"index.html#buildpythonpackage-fixed-point-arguments"
],
"overriding-python-build-helpers": [
"index.html#overriding-python-build-helpers"
],
+5
View File
@@ -264,11 +264,16 @@
- `python3packages.pillow-avif-plugin` has been removed as the functionality is included in `python3packages.pillow` directly since version 11.3.
- `wasistlos` (previously known as `whatsapp-for-linux`) has been removed because it was unmaintained and archived upstream.
Multiple alternatives exist: `karere`, `whatsie` and `zapzap` among others.
- `light` has been removed because it was unmaintained.
`brightnessctl` and `acpilight` provide similar functionality.
- `opensmtpd-filter-dkimsign` is now installed into `libexec/smtpd` instead of `libexec/opensmtpd` so that now it is properly linked into the environment built by `services.opensmtpd.procPackages`. If you hardcoded path to `filter-dkimsign` please consider using this option.
- `shisho` has been removed because it's archived. `semgrep`, `opengrep`, and `ast-grep` provide similar functionality.
- `services.openssh.settings.AcceptEnv` now explicitly defined as an option that takes a list of strings, to facilitate option merging. Setting it to a string value is no longer supported.
- All Xfce packages have been moved to top level (e.g. if you previously added `pkgs.xfce.xfce4-whiskermenu-plugin` to `environment.systemPackages`, you will need to change it to `pkgs.xfce4-whiskermenu-plugin`). The `xfce` scope will be removed in NixOS 26.11.
+27
View File
@@ -3971,6 +3971,12 @@
name = "Joseph Madden";
keys = [ { fingerprint = "3CF8 E983 2219 AB4B 0E19 158E 6112 1921 C9F8 117C"; } ];
};
brett = {
email = "brett@librum.org";
github = "brett";
githubId = 523;
name = "Brett Eisenberg";
};
brettlyons = {
email = "blyons@fastmail.com";
github = "brettlyons";
@@ -13886,6 +13892,13 @@
matrix = "@katexochen:matrix.org";
name = "Paul Meyer";
};
katok = {
name = "katok";
email = "kat.ok.timofey@gmail.com";
matrix = "@kat.ok:matrix.org";
github = "Hi-Timofey";
githubId = 43324422;
};
katrinafyi = {
name = "katrinafyi";
github = "katrinafyi";
@@ -14278,6 +14291,13 @@
githubId = 10689811;
name = "Torben Schweren";
};
kittyandrew = {
email = "alias.nixpkgs.maintainer@kittymail.me";
github = "kittyandrew";
githubId = 45767571;
matrix = "@kittyandrew:ndrew.me";
name = "kittyandrew";
};
kittywitch = {
email = "kat@inskip.me";
github = "kittywitch";
@@ -26057,6 +26077,13 @@
githubId = 26052996;
name = "Erik Parawell";
};
stealthybox = {
email = "leigh@null.net";
github = "stealthybox";
githubId = 2754700;
name = "Leigh Capili";
keys = [ { fingerprint = "05E7 89C9 142C DD05 8261 4EF8 5943 2144 444F B382"; } ];
};
steamwalker = {
email = "steamwalker@xs4all.nl";
github = "steamwalker";
+1
View File
@@ -1322,6 +1322,7 @@
./services/networking/nix-store-gcs-proxy.nix
./services/networking/nixops-dns.nix
./services/networking/nm-file-secret-agent.nix
./services/networking/nmtrust.nix
./services/networking/nncp.nix
./services/networking/nntp-proxy.nix
./services/networking/nomad.nix
+3 -1
View File
@@ -302,7 +302,9 @@ in
fi
'';
packages =
if config.documentation.nixos.enable && config.documentation.man.enable then
if
config.documentation.enable && config.documentation.nixos.enable && config.documentation.man.enable
then
builtins.filter (pkg: pkg != config.system.build.manual.nixos-configuration-reference-manpage) (
cfge.systemPackages ++ cfg.extraCompletionPackages
)
@@ -9,9 +9,11 @@ let
cfg = config.services.grafana-to-ntfy;
in
{
meta.maintainers = with lib.maintainers; [ kittyandrew ];
options = {
services.grafana-to-ntfy = {
enable = lib.mkEnableOption "Grafana-to-ntfy (ntfy.sh) alerts channel";
enable = lib.mkEnableOption "grafana-to-ntfy, a Grafana/Alertmanager to ntfy.sh bridge";
package = lib.mkPackageOption pkgs "grafana-to-ntfy" { };
@@ -33,64 +35,127 @@ in
};
ntfyBAuthPass = lib.mkOption {
type = lib.types.path;
type = lib.types.nullOr lib.types.path;
description = ''
The path to the password for the specified ntfy-sh user.
Setting this option is required when using a ntfy-sh instance with access control enabled.
'';
default = null;
example = "/run/secrets/grafana-to-ntfy-ntfy-pass";
};
bauthUser = lib.mkOption {
type = lib.types.str;
type = lib.types.nullOr lib.types.str;
description = ''
The user that you will authenticate with in the Grafana webhook settings.
You can set this to whatever you like, as this is not the same as the ntfy-sh user.
The user for Basic Auth on incoming webhook requests from Grafana or Alertmanager.
When set together with {option}`bauthPass`, incoming requests require Basic Auth.
When both are null, the endpoint is open (unauthenticated).
'';
default = "admin";
default = null;
example = "admin";
};
bauthPass = lib.mkOption {
type = lib.types.path;
description = "The path to the password you will use in the Grafana webhook settings.";
type = lib.types.nullOr lib.types.path;
description = ''
Path to the password file for Basic Auth on incoming webhook requests.
When set together with {option}`bauthUser`, incoming requests require Basic Auth.
When both are null, the endpoint is open (unauthenticated).
'';
default = null;
example = "/run/secrets/grafana-to-ntfy-bauth-pass";
};
markdown = lib.mkOption {
type = lib.types.bool;
description = "Enable Markdown formatting in ntfy notifications. Sets the X-Markdown header.";
default = false;
};
port = lib.mkOption {
type = lib.types.port;
description = "Port to listen on.";
default = 8080;
};
address = lib.mkOption {
type = lib.types.str;
description = "Address to listen on.";
default = "127.0.0.1";
example = "0.0.0.0";
};
};
};
};
config = lib.mkIf cfg.enable {
systemd.services.grafana-to-ntfy = {
wantedBy = [ "multi-user.target" ];
assertions = [
{
assertion = (cfg.settings.bauthUser == null) == (cfg.settings.bauthPass == null);
message = "services.grafana-to-ntfy: bauthUser and bauthPass must both be set or both be null";
}
{
assertion = (cfg.settings.ntfyBAuthUser == null) == (cfg.settings.ntfyBAuthPass == null);
message = "services.grafana-to-ntfy: ntfyBAuthUser and ntfyBAuthPass must both be set or both be null";
}
];
script = ''
export BAUTH_PASS=$(${lib.getExe' config.systemd.package "systemd-creds"} cat BAUTH_PASS_FILE)
${lib.optionalString (cfg.settings.ntfyBAuthPass != null) ''
export NTFY_BAUTH_PASS=$(${lib.getExe' config.systemd.package "systemd-creds"} cat NTFY_BAUTH_PASS_FILE)
''}
exec ${lib.getExe cfg.package}
'';
systemd.services.grafana-to-ntfy = {
description = "Grafana/Alertmanager to ntfy.sh bridge";
wantedBy = [ "multi-user.target" ];
wants = [ "network-online.target" ];
after = [ "network-online.target" ];
script =
let
optionalCred = name: envVar: ''
export ${envVar}="$(${lib.getExe' config.systemd.package "systemd-creds"} cat ${name})"
'';
in
''
${lib.optionalString (cfg.settings.bauthPass != null) (optionalCred "BAUTH_PASS_FILE" "BAUTH_PASS")}
${lib.optionalString (cfg.settings.ntfyBAuthPass != null) (
optionalCred "NTFY_BAUTH_PASS_FILE" "NTFY_BAUTH_PASS"
)}
exec ${lib.getExe cfg.package}
'';
environment = {
NTFY_URL = cfg.settings.ntfyUrl;
ROCKET_PORT = toString cfg.settings.port;
ROCKET_ADDRESS = cfg.settings.address;
}
// lib.optionalAttrs (cfg.settings.bauthUser != null) {
BAUTH_USER = cfg.settings.bauthUser;
}
// lib.optionalAttrs (cfg.settings.ntfyBAuthUser != null) {
NTFY_BAUTH_USER = cfg.settings.ntfyBAuthUser;
}
// lib.optionalAttrs cfg.settings.markdown {
MARKDOWN = "true";
};
serviceConfig = {
LoadCredential = [
"BAUTH_PASS_FILE:${cfg.settings.bauthPass}"
]
++ lib.optional (
cfg.settings.ntfyBAuthPass != null
) "NTFY_BAUTH_PASS_FILE:${cfg.settings.ntfyBAuthPass}";
LoadCredential =
lib.optional (cfg.settings.bauthPass != null) "BAUTH_PASS_FILE:${cfg.settings.bauthPass}"
++ lib.optional (
cfg.settings.ntfyBAuthPass != null
) "NTFY_BAUTH_PASS_FILE:${cfg.settings.ntfyBAuthPass}";
DynamicUser = true;
Restart = "always";
RestartSec = 5;
# Hardening
AmbientCapabilities = [ "" ];
CapabilityBoundingSet = [ "" ];
DeviceAllow = "";
DevicePolicy = "closed";
LockPersonality = true;
MemoryDenyWriteExecute = true;
NoNewPrivileges = true;
PrivateDevices = true;
PrivateTmp = true;
PrivateUsers = true;
ProcSubset = "pid";
ProtectClock = true;
@@ -101,6 +166,8 @@ in
ProtectKernelModules = true;
ProtectKernelTunables = true;
ProtectProc = "invisible";
ProtectSystem = "strict";
RemoveIPC = true;
RestrictAddressFamilies = [
"AF_INET"
"AF_INET6"
@@ -108,11 +175,12 @@ in
];
RestrictNamespaces = true;
RestrictRealtime = true;
MemoryDenyWriteExecute = true;
RestrictSUIDSGID = true;
SystemCallArchitectures = "native";
SystemCallFilter = [
"@system-service"
"~@privileged"
"~@resources"
];
UMask = "0077";
};
@@ -0,0 +1,389 @@
{
config,
lib,
pkgs,
...
}:
let
cfg = config.services.nmtrust;
# Resolve trusted UUIDs from ensureProfiles + extra
profileUUIDs = map (
name: config.networking.networkmanager.ensureProfiles.profiles.${name}.connection.uuid
) cfg.trustedConnections;
trustedUUIDs = profileUUIDs ++ cfg.trustedUUIDsExtra;
userNames = builtins.attrNames cfg.userUnits;
# The package reads config from /etc/nmtrust/config at runtime
trustHelper = pkgs.nmtrust;
# Trust target names
trustTargets = [
"nmtrust-trusted"
"nmtrust-untrusted"
"nmtrust-offline"
];
# Generate Conflicts= for a target (all other trust targets)
conflictsFor = target: map (t: "${t}.target") (builtins.filter (t: t != target) trustTargets);
# Generate systemd unit overrides for a system unit.
# Uses StopWhenUnneeded instead of PartOf to avoid same-transaction
# issues: when transitioning between targets that both want a unit
# (e.g. offline -> trusted for allowOffline units), PartOf on the
# old target would stop the unit before WantedBy on the new target
# can restart it. StopWhenUnneeded only stops the unit when NO
# active target wants it.
mkSystemUnitOverrides =
unitName: unitCfg:
let
targets = [
"nmtrust-trusted.target"
]
++ lib.optional unitCfg.allowOffline "nmtrust-offline.target";
in
{
unitConfig.StopWhenUnneeded = true;
wantedBy = targets;
};
# Generate user unit overrides
mkUserUnitOverrides =
unitName: unitCfg:
let
targets = [
"nmtrust-trusted.target"
]
++ lib.optional unitCfg.allowOffline "nmtrust-offline.target";
in
{
unitConfig.StopWhenUnneeded = true;
wantedBy = targets;
};
# NM dispatcher script
dispatcherScript = pkgs.writeShellScript "nmtrust-dispatcher" ''
case "$2" in
up|down|vpn-up|vpn-down|connectivity-change)
${config.systemd.package}/bin/systemd-run \
--no-block \
--on-active=1s \
--unit=nmtrust-apply-debounce \
${config.systemd.package}/bin/systemctl start nmtrust-apply.service \
2>/dev/null || true
;;
esac
'';
in
{
#
# Options
#
options.services.nmtrust = {
enable = lib.mkEnableOption "network trust management";
trustedConnections = lib.mkOption {
type = lib.types.listOf lib.types.str;
default = [ ];
description = ''
List of NetworkManager profile names from
{option}`networking.networkmanager.ensureProfiles`.
UUIDs are resolved at evaluation time.
'';
};
trustedUUIDsExtra = lib.mkOption {
type = lib.types.listOf (
lib.types.strMatching "[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}"
);
default = [ ];
description = ''
Additional trusted connection UUIDs not managed via
{option}`networking.networkmanager.ensureProfiles`.
Must be valid UUID format.
'';
};
excludedConnectionPatterns = lib.mkOption {
type = lib.types.listOf lib.types.str;
default = [ ];
description = ''
Glob patterns matched against connection names at runtime using
fnmatch(3) with FNM_NOESCAPE. Connection names are treated as
literal strings (no backslash interpretation).
Matching connections are ignored when computing trust state.
'';
};
mixedPolicy = lib.mkOption {
type = lib.types.enum [
"trusted"
"untrusted"
];
default = "untrusted";
description = ''
How to treat mixed trust state (some connections trusted,
some untrusted).
'';
};
evalFailurePolicy = lib.mkOption {
type = lib.types.enum [
"untrusted"
"offline"
];
default = "untrusted";
description = ''
How to handle trust evaluation failures (D-Bus errors, NM
unavailable). `"untrusted"` (default) is fail-closed: trusted-only
units stop. `"offline"` allows units with
{option}`allowOffline` to run.
'';
};
systemUnits = lib.mkOption {
type = lib.types.attrsOf (
lib.types.submodule {
options.allowOffline = lib.mkOption {
type = lib.types.bool;
default = false;
description = "Whether this unit should also run when offline.";
};
}
);
default = { };
description = ''
System units to bind to the trusted network target.
Keys are systemd unit names.
'';
};
userUnits = lib.mkOption {
type = lib.types.attrsOf (
lib.types.attrsOf (
lib.types.submodule {
options.allowOffline = lib.mkOption {
type = lib.types.bool;
default = false;
description = "Whether this unit should also run when offline.";
};
}
)
);
default = { };
example = lib.literalExpression ''
{
alice = {
"etesync-dav.service" = { };
"syncthing.service" = { allowOffline = true; };
};
}
'';
description = ''
Per-user units to bind to the trusted network target.
Outer keys are usernames, inner keys are systemd unit names.
Users must have linger enabled
({option}`users.users.<name>.linger`).
'';
};
};
#
# Config
#
config = lib.mkIf cfg.enable {
# --- Assertions ---
assertions =
# NetworkManager is required
[
{
assertion = config.networking.networkmanager.enable;
message = "services.nmtrust requires networking.networkmanager.enable = true.";
}
]
++
# trustedConnections -> ensureProfiles UUID resolution
(map (name: {
assertion =
config.networking.networkmanager.ensureProfiles.profiles ? ${name}
&& config.networking.networkmanager.ensureProfiles.profiles.${name}.connection ? uuid;
message =
"services.nmtrust.trustedConnections references '${name}' "
+ "but no matching networking.networkmanager.ensureProfiles entry with a UUID exists.";
}) cfg.trustedConnections)
++
# userUnits -> user existence
(map (username: {
assertion = config.users.users ? ${username};
message =
"services.nmtrust.userUnits references user '${username}' "
+ "but no matching users.users entry exists.";
}) userNames)
++
# userUnits -> linger enabled
(map (username: {
assertion =
let
l = config.users.users.${username}.linger;
in
l != null && l;
message =
"services.nmtrust.userUnits references user '${username}' but "
+ "linger is not enabled. Set users.users.${username}.linger = true to "
+ "ensure the user's systemd instance is running for trust-based unit management. "
+ "Note: enabling linger causes ALL of this user's enabled user services to run "
+ "persistently, not just trust-managed units.";
}) (builtins.filter (u: config.users.users ? ${u}) userNames));
# --- Helper package on PATH ---
environment.systemPackages = [ trustHelper ];
# --- Runtime config file ---
environment.etc."nmtrust/config" = {
text =
let
toBashArray = xs: "(" + lib.concatMapStringsSep " " (x: lib.escapeShellArg x) xs + ")";
in
''
# Generated by NixOS module do not edit
TRUSTED_UUIDS=${toBashArray trustedUUIDs}
EXCLUDED_PATTERNS=${toBashArray (cfg.excludedConnectionPatterns)}
MIXED_POLICY=${lib.escapeShellArg cfg.mixedPolicy}
EVAL_FAILURE_POLICY=${lib.escapeShellArg cfg.evalFailurePolicy}
MANAGED_USERS=${toBashArray userNames}
'';
};
# --- tmpfiles.d ---
systemd.tmpfiles.rules = [
"d /run/nmtrust 0700 root root -"
];
# --- System trust targets ---
systemd.targets = lib.listToAttrs (
map (target: {
name = target;
value = {
description = "Network Trust State: ${
if target == "nmtrust-trusted" then
"Trusted"
else if target == "nmtrust-untrusted" then
"Untrusted"
else
"Offline"
}";
unitConfig.Conflicts = conflictsFor target;
};
}) trustTargets
);
# --- User trust targets ---
systemd.user.targets = lib.listToAttrs (
map (target: {
name = target;
value = {
description = "Network Trust State: ${
if target == "nmtrust-trusted" then
"Trusted (User)"
else if target == "nmtrust-untrusted" then
"Untrusted (User)"
else
"Offline (User)"
}";
unitConfig.Conflicts = conflictsFor target;
};
}) trustTargets
);
# --- System unit overrides + services ---
# Strip .service/.timer/.socket suffixes — NixOS appends them automatically
systemd.services =
lib.mapAttrs' (name: value: {
name = lib.removeSuffix ".service" (lib.removeSuffix ".timer" (lib.removeSuffix ".socket" name));
value = mkSystemUnitOverrides name value;
}) cfg.systemUnits
// {
nmtrust-apply = {
description = "Evaluate and apply network trust state";
after = [ "NetworkManager.service" ];
serviceConfig = {
Type = "oneshot";
ExecStart = "${trustHelper}/bin/nmtrust apply";
ProtectSystem = "strict";
ReadWritePaths = [ "/run/nmtrust" ];
ProtectHome = true;
NoNewPrivileges = true;
PrivateTmp = true;
};
};
nmtrust-eval = {
description = "Evaluate network trust state on boot";
wantedBy = [ "network-online.target" ];
wants = [ "network-online.target" ];
after = [
"NetworkManager.service"
"network-online.target"
];
restartTriggers = [
config.environment.etc."nmtrust/config".source
];
serviceConfig = {
Type = "oneshot";
RemainAfterExit = true;
ExecStart = "${trustHelper}/bin/nmtrust apply";
ProtectSystem = "strict";
ReadWritePaths = [ "/run/nmtrust" ];
ProtectHome = true;
NoNewPrivileges = true;
PrivateTmp = true;
};
};
};
# --- User unit overrides ---
systemd.user.services = lib.foldl' (
acc: username:
lib.foldl' (
acc': unitName:
let
strippedName = lib.removeSuffix ".service" (
lib.removeSuffix ".timer" (lib.removeSuffix ".socket" unitName)
);
in
acc'
// {
${strippedName} = mkUserUnitOverrides unitName cfg.userUnits.${username}.${unitName};
}
) acc (builtins.attrNames cfg.userUnits.${username})
) { } userNames;
# --- NM dispatcher ---
networking.networkmanager.dispatcherScripts = [
{
source = dispatcherScript;
type = "basic";
}
];
};
meta.maintainers = [ lib.maintainers.brett ];
}
+37 -21
View File
@@ -277,6 +277,10 @@ in
"zfs"
"enableUnstable"
] "Instead set `boot.zfs.package = pkgs.zfs_unstable;`")
(lib.mkRenamedOptionModule
[ "boot" "zfs" "allowHibernation" ]
[ "boot" "zfs" "unsafeAllowHibernation" ]
)
];
###### interface
@@ -305,12 +309,12 @@ in
description = "True if ZFS filesystem support is enabled";
};
allowHibernation = lib.mkOption {
unsafeAllowHibernation = lib.mkOption {
type = lib.types.bool;
default = false;
description = ''
Allow hibernation support, this may be a unsafe option depending on your
setup. Make sure to NOT use Swap on ZFS.
Allow hibernation (suspend to disk) support. This is generally considered **UNSAFE**,
is not well supported by openzfs, and could lead to corruption and data loss.
'';
};
@@ -350,19 +354,18 @@ in
forceImportRoot = lib.mkOption {
type = lib.types.bool;
default = true;
default = lib.versionOlder config.system.stateVersion "26.11";
defaultText = lib.literalExpression ''lib.versionOlder config.system.stateVersion "26.11"'';
description = ''
Forcibly import the ZFS root pool(s) during early boot.
This is enabled by default for backwards compatibility purposes, but it is highly
recommended to disable this option, as it bypasses some of the safeguards ZFS uses
to protect your ZFS pools.
It is highly recommended to keep this option disabled as it bypasses ZFS
safeguard that protect your pools.
If you set this option to `false` and NixOS subsequently fails to
boot because it cannot import the root pool, you should boot with the
`zfs_force=1` option as a kernel parameter (e.g. by manually
editing the kernel params in grub during boot). You should only need to do this
once.
If NixOS fails to boot because it cannot import the root pool, you should boot
with the `zfs_force=1` option as a kernel parameter (e.g. by manually
editing the kernel params via your bootloader).
You should only need to do this after unclean shutdowns.
'';
};
@@ -372,10 +375,10 @@ in
description = ''
Forcibly import all ZFS pool(s).
If you set this option to `false` and NixOS subsequently fails to
import your non-root ZFS pool(s), you should manually import each pool with
"zpool import -f \<pool-name\>", and then reboot. You should only need to do
this once.
It is highly recommended to keep this option disabled as it bypasses ZFS
safeguard that protect your pools.
See {option}`boot.zfs.forceImportRoot` for details.
'';
};
@@ -672,12 +675,12 @@ in
message = "ZFS requires networking.hostId to be set";
}
{
assertion = !cfgZfs.forceImportAll || cfgZfs.forceImportRoot;
assertion = cfgZfs.forceImportAll -> cfgZfs.forceImportRoot;
message = "If you enable boot.zfs.forceImportAll, you must also enable boot.zfs.forceImportRoot";
}
{
assertion = cfgZfs.allowHibernation -> !cfgZfs.forceImportRoot && !cfgZfs.forceImportAll;
message = "boot.zfs.allowHibernation while force importing is enabled will cause data corruption";
assertion = cfgZfs.unsafeAllowHibernation -> !cfgZfs.forceImportRoot && !cfgZfs.forceImportAll;
message = "boot.zfs.unsafeAllowHibernation while force importing is enabled will cause data corruption";
}
{
assertion = !(lib.elem "" allPools);
@@ -694,12 +697,25 @@ in
}
];
warnings =
lib.optional
(
options.boot.zfs.forceImportRoot.definitionsWithLocations == [
{
inherit (__curPos) file;
value = true;
}
]
)
"`boot.zfs.forceImportRoot` is using the default value of `true`. It is highly recommended to set it to `false`, the new default from 26.11 on, to reduce the risk of data loss. Alternatively, you can silence this warning by explicitly setting it to `true`.";
boot = {
kernelModules = [ "zfs" ];
# https://github.com/openzfs/zfs/issues/260
# https://github.com/openzfs/zfs/issues/260#issuecomment-982142240
# https://github.com/openzfs/zfs/issues/12842
# https://github.com/openzfs/zfs/issues/14118#issuecomment-1301576647
# https://github.com/NixOS/nixpkgs/issues/106093
kernelParams = lib.optionals (!config.boot.zfs.allowHibernation) [ "nohibernate" ];
kernelParams = lib.optionals (!config.boot.zfs.unsafeAllowHibernation) [ "nohibernate" ];
extraModulePackages = [
cfgZfs.modulePackage
+11 -2
View File
@@ -54,8 +54,6 @@ let
lvm2
lz4
lxcfs
minio
minio-client
nftables
qemu-utils
qemu_kvm
@@ -99,6 +97,10 @@ let
]
++ lib.optionals nvidiaEnabled [
libnvidia-container
]
++ lib.optionals cfg.bucketSupport [
minio
minio-client
];
# https://github.com/lxc/incus/blob/cff35a29ee3d7a2af1f937cbb6cf23776941854b/internal/server/instance/drivers/driver_qemu.go#L123
@@ -211,6 +213,13 @@ in
description = "The incus client package to use. This package is added to PATH.";
};
bucketSupport = lib.mkOption {
type = lib.types.bool;
description = "Enable bucket support using minio, which is an insecure and unmaintained S3 provider.";
default = if lib.versionAtLeast config.system.stateVersion "26.11" then false else null;
defaultText = lib.literalExpression ''if lib.versionAtLeast config.system.stateVersion "26.11" then false else null;'';
};
softDaemonRestart = lib.mkOption {
type = lib.types.bool;
default = true;
+2
View File
@@ -678,6 +678,7 @@ in
gotosocial = runTest ./web-apps/gotosocial.nix;
goupile = runTest ./web-apps/goupile;
grafana = handleTest ./grafana { };
grafana-to-ntfy = runTest ./grafana-to-ntfy.nix;
graphite = runTest ./graphite.nix;
grav = runTest ./web-apps/grav.nix;
graylog = runTest ./graylog.nix;
@@ -1140,6 +1141,7 @@ in
pkgs.callPackage ../../pkgs/stdenv/generic/check-meta-test.nix
{ };
nixseparatedebuginfod2 = runTest ./nixseparatedebuginfod2.nix;
nmtrust = runTest ./nmtrust.nix;
node-red = runTest ./node-red.nix;
nohang = runTest ./nohang.nix;
nomad = runTest ./nomad.nix;
+166
View File
@@ -0,0 +1,166 @@
{ lib, ... }:
let
ports = {
grafana-to-ntfy = 8080;
ntfy-sh = 8081;
grafana = 3000;
alertmanager = 9093;
};
ntfyTopic = "grafana-alerts";
in
{
name = "grafana-to-ntfy";
meta.maintainers = with lib.maintainers; [ kittyandrew ];
nodes.machine = {
services.grafana-to-ntfy = {
enable = true;
settings = {
ntfyUrl = "http://127.0.0.1:${toString ports.ntfy-sh}/${ntfyTopic}";
port = ports.grafana-to-ntfy;
address = "127.0.0.1";
};
};
services.ntfy-sh = {
enable = true;
settings = {
listen-http = "127.0.0.1:${toString ports.ntfy-sh}";
base-url = "http://127.0.0.1:${toString ports.ntfy-sh}";
};
};
services.grafana = {
enable = true;
settings = {
server.http_port = ports.grafana;
server.http_addr = "127.0.0.1";
security.admin_user = "admin";
security.admin_password = "admin";
security.secret_key = "test-only-dummy-key";
};
provision.alerting = {
contactPoints.settings = {
apiVersion = 1;
contactPoints = [
{
orgId = 1;
name = "grafana-to-ntfy";
receivers = [
{
uid = "cp_webhook";
type = "webhook";
disableResolveMessage = false;
settings = {
url = "http://127.0.0.1:${toString ports.grafana-to-ntfy}";
httpMethod = "POST";
};
}
];
}
];
};
policies.settings = {
apiVersion = 1;
policies = [
{
orgId = 1;
receiver = "grafana-to-ntfy";
group_by = [ "..." ];
group_wait = "0s";
group_interval = "1s";
repeat_interval = "1h";
}
];
};
};
};
services.prometheus.alertmanager = {
enable = true;
listenAddress = "127.0.0.1";
port = ports.alertmanager;
configuration = {
route = {
receiver = "grafana-to-ntfy";
group_by = [ "..." ];
group_wait = "0s";
group_interval = "1s";
repeat_interval = "2h";
};
receivers = [
{
name = "grafana-to-ntfy";
webhook_configs = [
{ url = "http://127.0.0.1:${toString ports.grafana-to-ntfy}"; }
];
}
];
};
};
};
interactive.nodes.machine = {
services.grafana-to-ntfy.settings.address = lib.mkForce "0.0.0.0";
services.grafana.settings.server.http_addr = lib.mkForce "0.0.0.0";
services.prometheus.alertmanager.listenAddress = lib.mkForce "0.0.0.0";
services.ntfy-sh.settings.listen-http = lib.mkForce "0.0.0.0:${toString ports.ntfy-sh}";
networking.firewall.enable = false;
virtualisation.forwardPorts = lib.mapAttrsToList (_: port: {
from = "host";
host = { inherit port; };
guest = { inherit port; };
}) ports;
};
testScript = ''
import json
machine.wait_for_unit("grafana-to-ntfy.service")
machine.wait_for_unit("ntfy-sh.service")
machine.wait_for_unit("grafana.service")
machine.wait_for_unit("alertmanager.service")
machine.wait_for_open_port(${toString ports.grafana-to-ntfy})
machine.wait_for_open_port(${toString ports.ntfy-sh})
machine.wait_for_open_port(${toString ports.grafana})
machine.wait_for_open_port(${toString ports.alertmanager})
with subtest("Health endpoint returns 200"):
machine.succeed("curl -sf http://127.0.0.1:${toString ports.grafana-to-ntfy}/health")
with subtest("Alertmanager alert arrives at ntfy"):
machine.succeed(
"curl -sf http://127.0.0.1:${toString ports.alertmanager}/api/v2/alerts"
" -X POST -H 'Content-Type: application/json'"
" -d '[{\"labels\": {\"alertname\": \"TestAlertFromAM\"}}]'"
)
# grep makes wait_until_succeeds retry: ntfy returns 200 with empty body when no messages exist
resp = machine.wait_until_succeeds(
"curl -sf 'http://127.0.0.1:${toString ports.ntfy-sh}/${ntfyTopic}/json?poll=1'"
" | grep '\"title\":\"Alertmanager\"'"
)
msg = json.loads(resp.strip())
assert msg["title"] == "Alertmanager", f"Expected title 'Alertmanager', got '{msg['title']}'"
assert "warning" in msg["tags"], f"Expected 'warning' in tags, got {msg['tags']}"
assert "firing" in msg["tags"], f"Expected 'firing' in tags, got {msg['tags']}"
with subtest("Grafana alert arrives at ntfy"):
machine.succeed(
"curl -sf http://127.0.0.1:${toString ports.grafana}/api/alertmanager/grafana/config/api/v1/receivers/test"
" -u admin:admin"
" -X POST -H 'Content-Type: application/json'"
""" -d '{"receivers": [{"name": "grafana-to-ntfy", "grafana_managed_receiver_configs": [{"uid": "cp_webhook", "name": "webhook", "type": "webhook", "disableResolveMessage": false, "settings": {"url": "http://127.0.0.1:${toString ports.grafana-to-ntfy}", "httpMethod": "POST"}}]}]}'"""
)
# grep ensures we wait for the Grafana message specifically (see above)
resp = machine.wait_until_succeeds(
"curl -sf 'http://127.0.0.1:${toString ports.ntfy-sh}/${ntfyTopic}/json?poll=1'"
" | grep 'FIRING'"
)
msg = json.loads(resp.strip())
assert "[FIRING:1]" in msg["title"], f"Expected Grafana title with '[FIRING:1]', got '{msg['title']}'"
assert "warning" in msg["tags"], f"Expected 'warning' in tags, got {msg['tags']}"
assert "firing" in msg["tags"], f"Expected 'firing' in tags, got {msg['tags']}"
'';
}
+1
View File
@@ -51,6 +51,7 @@ in
incus = {
enable = true;
package = cfg.package;
bucketSupport = false;
preseed = {
networks = [
+92
View File
@@ -0,0 +1,92 @@
{ lib, pkgs, ... }:
{
name = "nmtrust";
nodes.machine =
{ pkgs, ... }:
{
networking.networkmanager.enable = true;
# Prevent the VM's built-in interfaces from polluting trust state.
networking.networkmanager.unmanaged = [
"eth0"
"eth1"
"lo"
];
networking.networkmanager.ensureProfiles.profiles = {
trusted-net = {
connection = {
id = "trusted-net";
uuid = "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee";
type = "dummy";
interface-name = "dummy-trusted";
autoconnect = "false";
};
ipv4.method = "manual";
ipv4.addresses = "10.99.1.1/24";
};
untrusted-net = {
connection = {
id = "untrusted-net";
uuid = "11111111-2222-3333-4444-555555555555";
type = "dummy";
interface-name = "dummy-untrusted";
autoconnect = "false";
};
ipv4.method = "manual";
ipv4.addresses = "10.99.2.1/24";
};
};
services.nmtrust = {
enable = true;
trustedConnections = [ "trusted-net" ];
systemUnits."trust-canary.service" = { };
};
# Canary service: runs only while the trusted target is active.
systemd.services.trust-canary = {
description = "nmtrust test canary";
serviceConfig = {
Type = "simple";
ExecStart = "${pkgs.coreutils}/bin/sleep infinity";
};
};
};
testScript = ''
import time
def apply(machine):
"""Trigger nmtrust-apply and wait for it to finish."""
time.sleep(1)
machine.succeed("systemctl start nmtrust-apply.service")
machine.wait_until_succeeds(
"systemctl show nmtrust-apply.service -p ActiveState --value | grep -q inactive",
timeout=10,
)
machine.wait_for_unit("multi-user.target")
with subtest("offline on boot with no connections active"):
apply(machine)
machine.succeed("systemctl is-active nmtrust-offline.target")
machine.fail("systemctl is-active trust-canary.service")
with subtest("trusted when trusted connection is up"):
machine.succeed("nmcli connection up trusted-net")
apply(machine)
machine.succeed("systemctl is-active nmtrust-trusted.target")
machine.succeed("systemctl is-active trust-canary.service")
with subtest("untrusted when untrusted connection replaces trusted"):
machine.succeed("nmcli connection down trusted-net")
machine.succeed("nmcli connection up untrusted-net")
apply(machine)
machine.succeed("systemctl is-active nmtrust-untrusted.target")
machine.fail("systemctl is-active trust-canary.service")
'';
meta.maintainers = with lib.maintainers; [ brett ];
}
+3 -2
View File
@@ -23,7 +23,6 @@ let
nodes.machine =
{
config,
pkgs,
lib,
...
@@ -54,6 +53,8 @@ let
# /dev/disk/by-id doesn't get populated in the NixOS test framework
boot.zfs.devNodes = "/dev/disk/by-uuid";
boot.zfs.forceImportRoot = lib.mkDefault false;
specialisation.samba.configuration = {
services.samba = {
enable = true;
@@ -101,6 +102,7 @@ let
systemd.services.zfs-import-forcepool.wantedBy = lib.mkVMOverride [ "forcepool.mount" ];
systemd.targets.zfs.wantedBy = lib.mkVMOverride [ ];
boot.zfs.forceImportAll = true;
boot.zfs.forceImportRoot = true;
virtualisation.fileSystems."/forcepool" = {
device = "forcepool";
fsType = "zfs";
@@ -203,7 +205,6 @@ let
in
{
series_2_3 = makeZfsTest {
zfsPackage = pkgs.zfs_2_3;
kernelPackages = pkgs.linuxPackages;
@@ -45,7 +45,7 @@ let
};
});
jbr = jetbrains.jdk-no-jcef;
jbr = jetbrains.jdk-no-jcef-21;
ideaSrc = fetchFromGitHub {
owner = "jetbrains";
@@ -23716,13 +23716,12 @@ final: prev: {
vim-solarized8 = buildVimPlugin {
pname = "vim-solarized8";
version = "1.6.4-unstable-2026-03-11";
src = fetchFromGitHub {
owner = "lifepillar";
repo = "vim-solarized8";
rev = "4433b4411de92b2446a4d32f0d8bf1b25c476bf9";
hash = "sha256-Og6qmrSIfhtGgait/nwJg+uNrUtY/j83cUWZj2TwUFY=";
src = fetchgit {
url = "https://codeberg.org/lifepillar/vim-solarized8/";
rev = "5dfbfb00be8237619c680302fc9250e391b1686a";
hash = "sha256-qJLlHsXKcLC+bpirfcuBj3igK9dDk8L9oVGPzWhtkEI=";
};
meta.homepage = "https://github.com/lifepillar/vim-solarized8/";
meta.homepage = "https://codeberg.org/lifepillar/vim-solarized8/";
meta.license = lib.licenses.unfree;
meta.hydraPlatforms = [ ];
};
@@ -209,6 +209,12 @@ assertNoAdditions {
dependencies = [ self.middleclass ];
};
argtextobj-vim = super.argtextobj-vim.overrideAttrs (old: {
meta = old.meta // {
license = lib.licenses.mit;
};
});
arrow-nvim = super.arrow-nvim.overrideAttrs (old: {
meta = old.meta // {
license = lib.licenses.gpl3Plus;
@@ -447,6 +453,12 @@ assertNoAdditions {
};
});
camelcasemotion = super.camelcasemotion.overrideAttrs (old: {
meta = old.meta // {
license = lib.licenses.vim;
};
});
catppuccin-nvim = super.catppuccin-nvim.overrideAttrs {
nvimSkipModules = [
"catppuccin.groups.integrations.noice"
@@ -2219,6 +2231,12 @@ assertNoAdditions {
dependencies = [ self.plenary-nvim ];
};
lsp-format-nvim = super.lsp-format-nvim.overrideAttrs (old: {
meta = old.meta // {
license = lib.licenses.mit;
};
});
lsp_extensions-nvim = super.lsp_extensions-nvim.overrideAttrs {
dependencies = [ self.plenary-nvim ];
};
@@ -4477,6 +4495,12 @@ assertNoAdditions {
nvimSkipModules = "tsc.better-messages-test";
};
tslime-vim = super.tslime-vim.overrideAttrs (old: {
meta = old.meta // {
license = lib.licenses.wtfpl;
};
});
tsuquyomi = super.tsuquyomi.overrideAttrs (old: {
meta = old.meta // {
license = lib.licenses.mit;
@@ -4709,9 +4733,12 @@ assertNoAdditions {
};
});
vim-beancount = super.vim-beancount.overrideAttrs {
vim-beancount = super.vim-beancount.overrideAttrs (old: {
passthru.python3Dependencies = ps: with ps; [ beancount ];
};
meta = old.meta // {
license = lib.licenses.vim;
};
});
vim-bepoptimist = super.vim-bepoptimist.overrideAttrs (old: {
meta = old.meta // {
@@ -4852,6 +4879,12 @@ assertNoAdditions {
};
});
vim-easymotion = super.vim-easymotion.overrideAttrs (old: {
meta = old.meta // {
license = lib.licenses.mit;
};
});
vim-easytags = super.vim-easytags.overrideAttrs (old: {
dependencies = [ self.vim-misc ];
patches = [
@@ -5039,6 +5072,12 @@ assertNoAdditions {
runtimeDeps = [ jq ];
};
vim-indentwise = super.vim-indentwise.overrideAttrs (old: {
meta = old.meta // {
license = lib.licenses.gpl3Plus;
};
});
vim-isort = super.vim-isort.overrideAttrs {
postPatch = ''
substituteInPlace autoload/vimisort.vim \
@@ -5328,6 +5367,12 @@ assertNoAdditions {
};
});
vim-textobj-user = super.vim-textobj-user.overrideAttrs (old: {
meta = old.meta // {
license = lib.licenses.mit;
};
});
vim-tpipeline = super.vim-tpipeline.overrideAttrs {
# Requires global variable
nvimSkipModules = "tpipeline.main";
@@ -5506,6 +5551,12 @@ assertNoAdditions {
nvimSkipModules = "virt-column.config.types";
};
vis = super.vis.overrideAttrs (old: {
meta = old.meta // {
license = lib.licenses.vim;
};
});
vs-tasks-nvim = super.vs-tasks-nvim.overrideAttrs {
checkInputs = [
# Optional telescope integration
@@ -1691,7 +1691,7 @@ https://github.com/bohlender/vim-smt2/,,
https://github.com/justinmk/vim-sneak/,,
https://github.com/garbas/vim-snipmate/,,
https://github.com/honza/vim-snippets/,,
https://github.com/lifepillar/vim-solarized8/,,
https://codeberg.org/lifepillar/vim-solarized8/,,
https://github.com/tomlion/vim-solidity/,,
https://github.com/christoomey/vim-sort-motion/,,
https://github.com/tpope/vim-speeddating/,,
@@ -1,39 +1,55 @@
{
lib,
stdenv,
stdenvNoCC,
autoPatchelfHook,
alsa-lib,
testers,
vscode-utils,
}:
vscode-utils.buildVscodeMarketplaceExtension {
vscode-utils.buildVscodeMarketplaceExtension (finalAttrs: {
nativeBuildInputs = lib.optionals stdenv.hostPlatform.isLinux [ autoPatchelfHook ];
buildInputs = lib.optionals stdenv.hostPlatform.isLinux [
(lib.getLib stdenv.cc.cc)
alsa-lib
];
mktplcRef =
let
sources = {
"x86_64-linux" = {
arch = "linux-x64";
hash = "sha256-w4kUYNnQW4KkIlzxnTASTBFxL3m3/NBwBET7/8ealIY=";
hash = "sha256-J9QdRxN0NdCRfSUBUE7Ox2BG0vdnaWGq27jcR779qRw=";
};
"aarch64-linux" = {
arch = "linux-arm64";
hash = "sha256-ZsVR7Qajv78A0+UfR+DqaUZyV1FFRjNs2+vJInboh6U=";
hash = "sha256-53SJDBILWKVqz8EyXO/DF8+j+EK7iVJ47cjhlZhrIWw=";
};
"x86_64-darwin" = {
arch = "darwin-x64";
hash = "sha256-8zvhF5cs1XOGa/l2M27K2Mv2cgusNy51glFZf1OVdWI=";
hash = "sha256-/82zwt92T5JYGxhnvSmqTA/7ahut6P3SAU5POxUFowM=";
};
"aarch64-darwin" = {
arch = "darwin-arm64";
hash = "sha256-Csb9F6HGWAgvPDjtsu35gjtGCuDLu0WQD1NNX/+S7F8=";
hash = "sha256-2ppC1sDDtDKAWpAW3RHGHeszhoKAVYnRoKw94ZOCaAs=";
};
};
in
{
name = "claude-code";
publisher = "anthropic";
version = "2.1.119";
version = "2.1.121";
}
// sources.${stdenvNoCC.hostPlatform.system}
or (throw "Unsupported system ${stdenvNoCC.hostPlatform.system}");
passthru.tests.bundled-claude-runs = testers.testVersion {
package = finalAttrs.finalPackage;
command = "${finalAttrs.finalPackage}/share/vscode/extensions/anthropic.claude-code/resources/native-binary/claude --version";
};
meta = {
description = "Harness the power of Claude Code without leaving your IDE";
homepage = "https://docs.anthropic.com/s/claude-code";
@@ -48,4 +64,4 @@ vscode-utils.buildVscodeMarketplaceExtension {
"aarch64-darwin"
];
};
}
})
@@ -85,7 +85,7 @@ let
};
};
"42crunch".vscode-openapi = buildVscodeMarketplaceExtension {
"42crunch".vscode-openapi = buildVscodeMarketplaceExtension rec {
mktplcRef = {
publisher = "42Crunch";
name = "vscode-openapi";
@@ -93,7 +93,7 @@ let
hash = "sha256-nV7RZpDd+15YmINKrFSIlFurC955bnE4A8esrKWYVnE=";
};
meta = {
changelog = "https://marketplace.visualstudio.com/items/42Crunch.vscode-openapi/changelog";
changelog = "https://github.com/42Crunch/vscode-openapi/blob/v${mktplcRef.version}/CHANGELOG.md";
description = "Visual Studio Code extension with rich support for the OpenAPI Specification (OAS)";
downloadPage = "https://marketplace.visualstudio.com/items?itemName=42Crunch.vscode-openapi";
homepage = "https://github.com/42Crunch/vscode-openapi";
@@ -1174,8 +1174,8 @@ let
mktplcRef = {
publisher = "DanielSanMedium";
name = "dscodegpt";
version = "3.17.20";
hash = "sha256-7nJlPP1Xap0lSJz+HQmKKC9OZ5UfMCq8nf1B/bkyNXU=";
version = "3.17.36";
hash = "sha256-7+Ja5/zeGq+W1aCIzZu0x+CU1ERwZhwvOaZKaGSWK4c=";
};
meta = {
changelog = "https://marketplace.visualstudio.com/items/DanielSanMedium.dscodegpt/changelog";
@@ -7,8 +7,8 @@ vscode-utils.buildVscodeMarketplaceExtension {
mktplcRef = {
name = "claude-dev";
publisher = "saoudrizwan";
version = "3.79.0";
hash = "sha256-BqIJNUkq7q2/WlsWqN/dHZtYqHvDm3v7CesEM4XJ1Es=";
version = "3.81.0";
hash = "sha256-gVQmKuyUH+bXpr7X2Z23U2oKFnAV2mxhckjef2uL8KQ=";
};
meta = {
@@ -5,13 +5,13 @@
}:
mkLibretroCore {
core = "mednafen-pce-fast";
version = "0-unstable-2026-04-17";
version = "0-unstable-2026-04-20";
src = fetchFromGitHub {
owner = "libretro";
repo = "beetle-pce-fast-libretro";
rev = "906b6465f1d4da2d04d8735b0d24ca0af0533590";
hash = "sha256-xg+irszrpUu689MyP2iJDl9a/YHR4RRqLJmRdu6/4Nw=";
rev = "95b5274dfeda36f7e77c70daa666a63302ad83cf";
hash = "sha256-BEt2g63jBOrgWk0tYp8DJVC65AbeSVRQz9rIMwjj2Sg=";
};
makefile = "Makefile";
@@ -26,13 +26,14 @@
}:
mkLibretroCore {
core = "dolphin";
version = "0-unstable-2025-08-05";
version = "0-unstable-2026-04-08";
src = fetchFromGitHub {
owner = "libretro";
repo = "dolphin";
rev = "83438f9b1a2c832319876a1fda130a5e33d4ef87";
hash = "sha256-q4y+3uJ1tQ2OvlEvi/JNyIO/RfuWNIEKfVZ6xEWKFCg=";
rev = "0cd3bb89c29535db9b7552fc86871867ccf5b471";
hash = "sha256-cSiJO/EvspNvHopo/RLfuz8ONpbXk2NrrSDhkiAm7/s=";
fetchSubmodules = true;
};
extraNativeBuildInputs = [
@@ -82,8 +83,6 @@ mkLibretroCore {
(cmakeFeature "CMAKE_POLICY_VERSION_MINIMUM" "3.5")
];
dontUseCmakeBuildDir = true;
meta = {
description = "Port of Dolphin to libretro";
homepage = "https://github.com/libretro/dolphin";
@@ -5,13 +5,13 @@
}:
mkLibretroCore {
core = "mesen-s";
version = "0-unstable-2024-10-21";
version = "0-unstable-2026-04-20";
src = fetchFromGitHub {
owner = "libretro";
repo = "mesen-s";
rev = "d4fca31a6004041d99b02199688f84c009c55967";
hash = "sha256-mGGTLBRJCsNJg57LWSFndIv/LLzEmVRnv6gNbllkV/Y=";
rev = "1d475abd174d16ecb1fb030961ff26076ab51ee6";
hash = "sha256-JSXkh6OyclYl3X/sJLRZsb5sdbSfanbJAKlhaFFjSrI=";
};
makefile = "Makefile";
@@ -5,13 +5,13 @@
}:
mkLibretroCore {
core = "pcsx-rearmed";
version = "0-unstable-2026-04-15";
version = "0-unstable-2026-04-25";
src = fetchFromGitHub {
owner = "libretro";
repo = "pcsx_rearmed";
rev = "00512d47f9d4d220efa4f2418b4a5896f9cd2e75";
hash = "sha256-ERllT1RkoLMafnHx2HSHdURoWdnF8fJlZ80pfiw18gQ=";
rev = "a97efbb0646dd7766bd66fe9e93118206edec36a";
hash = "sha256-2MAj/UdEg/kRZuGZcVQ+hBMe2pRlZWvEQnXeqb+444Y=";
};
dontConfigure = true;
@@ -5,13 +5,13 @@
}:
mkLibretroCore {
core = "prosystem";
version = "0-unstable-2026-03-31";
version = "0-unstable-2026-04-20";
src = fetchFromGitHub {
owner = "libretro";
repo = "prosystem-libretro";
rev = "980edb381b0bf9ea7992caab24039a537aeb510e";
hash = "sha256-uuh5YLKHW5aVe01GH12TqAlSp83s/PF/8Mlw105HIJg=";
rev = "3f465db9c82fc6764cd90c53fc66eb630e0b3710";
hash = "sha256-uamxOzJt5NbMGxDqyGk/8XJbN/fiFoB81DNeULIfL1U=";
};
makefile = "Makefile";
@@ -5,13 +5,13 @@
}:
mkLibretroCore {
core = "stella";
version = "0-unstable-2026-04-19";
version = "0-unstable-2026-04-28";
src = fetchFromGitHub {
owner = "stella-emu";
repo = "stella";
rev = "8b7bc991d2500cbf2e861c25f96ff81e0d13f273";
hash = "sha256-jeu/7hHuPfSoJg2/6UxUqHWOGMSe0vX6cgWLmVYHABQ=";
rev = "0c1b944387b5ac2b1bf753c2c4221db4fdc10f79";
hash = "sha256-mohkp6oOP8MtRs/WHw4Rxs3FrB6h4X6/ENrRdjiiXlQ=";
};
makefile = "Makefile";
@@ -6,13 +6,13 @@
}:
mkLibretroCore {
core = "thepowdertoy";
version = "0-unstable-2025-09-16";
version = "0-unstable-2026-04-20";
src = fetchFromGitHub {
owner = "libretro";
repo = "ThePowderToy";
rev = "cb3cd4c2e5beddb98b34e6b800fa24e8f96322d9";
hash = "sha256-k3XWkkSuQC3IBhhI96qkTrlGH/oJu941HaAvR28V5i0=";
rev = "dcb5e41f1f9800192ea07ea43459413c5a065d9f";
hash = "sha256-FDotG/ngmrxgyN7YQ8SK/ZQHKWkwZ5hhg0qsNNXmaNc=";
};
extraNativeBuildInputs = [ cmake ];
@@ -400,13 +400,13 @@
"vendorHash": null
},
"fastly_fastly": {
"hash": "sha256-2QfgzzWYXPOCMAX2EBodDPVEtcIHHPT4Lbh0W1+q2to=",
"hash": "sha256-deph1BQ/aUgTOf4Bgaxpac4V2fmy4dSdbBRa/qvvKdk=",
"homepage": "https://registry.terraform.io/providers/fastly/fastly",
"owner": "fastly",
"repo": "terraform-provider-fastly",
"rev": "v9.1.0",
"rev": "v9.1.1",
"spdx": "MPL-2.0",
"vendorHash": "sha256-E64AMHGFpAhg6UNYHJXAdRWPdWWdZineW/b+Gs2O2jk="
"vendorHash": "sha256-lxBvfkuvf1eoprkCuPtYqOw6P7sTzS70VXTYGToazf8="
},
"flexibleenginecloud_flexibleengine": {
"hash": "sha256-yEZ9JiUSqFFbfqzOOD59ZBv4yFCeUBBKlp6aiUqDqiM=",
@@ -200,9 +200,9 @@ rec {
mkTerraform = attrs: pluggable (generic attrs);
terraform_1 = mkTerraform {
version = "1.14.9";
hash = "sha256-OvKc+71DxbYgdOs06RkM4doF4OTkY0NI/LR0Wgpr7tA=";
vendorHash = "sha256-Ajjh8k2lOKf+BGIk3Vyp8H2unljeOMUN0vXwGjs7ZHc=";
version = "1.15.0";
hash = "sha256-cKgZFCPLusXXSjcff/PmKGIdSm3wRY1DpduXBRrgcDc=";
vendorHash = "sha256-Gv6V5aXqTuQoG1StbD/7Ln2QrLpMsW6fbUJUkyZMkvk=";
patches = [ ./provider-path-0_15.patch ];
passthru = {
inherit plugins;
+16 -15
View File
@@ -22,6 +22,21 @@ let
];
} (builtins.readFile ./replace-workspace-values.py);
nix-prefetch-git' = nix-prefetch-git.override {
git = gitMinimal;
# break loop of nix-prefetch-git -> git-lfs -> asciidoctor -> ruby (yjit) -> fetchCargoVendor -> nix-prefetch-git
# Cargo does not currently handle git-lfs: https://github.com/rust-lang/cargo/issues/9692
git-lfs = null;
};
removedArgs = [
"name"
"pname"
"version"
"nativeBuildInputs"
"hash"
];
mkFetchCargoVendorUtil =
name: src:
writers.writePython3Bin name {
@@ -57,14 +72,6 @@ in
# TODO: add asserts about pname version and name
let
removedArgs = [
"name"
"pname"
"version"
"nativeBuildInputs"
"hash"
];
vendorStaging = stdenvNoCC.mkDerivation (
{
name = "${name}-vendor-staging";
@@ -74,12 +81,7 @@ let
nativeBuildInputs = [
fetchCargoVendorUtilV2
cacert
(nix-prefetch-git.override {
git = gitMinimal;
# break loop of nix-prefetch-git -> git-lfs -> asciidoctor -> ruby (yjit) -> fetchCargoVendor -> nix-prefetch-git
# Cargo does not currently handle git-lfs: https://github.com/rust-lang/cargo/issues/9692
git-lfs = null;
})
nix-prefetch-git'
]
++ nativeBuildInputs;
@@ -108,7 +110,6 @@ let
// removeAttrs args removedArgs
);
in
runCommand "${name}-vendor"
{
inherit vendorStaging;
+2 -2
View File
@@ -8,13 +8,13 @@
buildGoModule (finalAttrs: {
pname = "aliyun-cli";
version = "3.3.8";
version = "3.3.11";
src = fetchFromGitHub {
owner = "aliyun";
repo = "aliyun-cli";
tag = "v${finalAttrs.version}";
hash = "sha256-5RFGpfeW3nLubN920hrBVyEdJEPa/V3Dz2YdxCh9YLU=";
hash = "sha256-jksC63DFSbZcBjQvV7BBMSMbPMeSqUQMWN9HcIcFZSU=";
fetchSubmodules = true;
};
+3 -3
View File
@@ -16,16 +16,16 @@
rustPlatform.buildRustPackage (finalAttrs: {
pname = "amdgpu_top";
version = "0.11.3";
version = "0.11.4";
src = fetchFromGitHub {
owner = "Umio-Yasuno";
repo = "amdgpu_top";
tag = "v${finalAttrs.version}";
hash = "sha256-k+/y8YaEP8DJuW8n/Xq/Ea9DWG79Cux+PgZbSP4m3pQ=";
hash = "sha256-ap1X53Ou/eWhHvXOnHY7zGb6i+ZLs8LeSNpOJWm+IKc=";
};
cargoHash = "sha256-+eMItSemE69UGfGF9CeKyEvUxvhiZjkJJPeZoVfa+dk=";
cargoHash = "sha256-b9OO//9M/LyS4ZMQzppvLHJHL3JyPVoSOIPVlrX1Wes=";
buildInputs = [
libdrm
+5 -2
View File
@@ -142,12 +142,12 @@ stdenv.mkDerivation (finalAttrs: {
};
env = {
JAVA_HOME = jetbrains.jdk;
JAVA_HOME = jetbrains.jdk-21;
ANDROID_SDK_HOME = "$(pwd)";
};
gradleFlags = [
"-Dorg.gradle.java.home=${jetbrains.jdk}"
"-Dorg.gradle.java.home=${jetbrains.jdk-21}"
];
nativeBuildInputs = [
@@ -282,5 +282,8 @@ stdenv.mkDerivation (finalAttrs: {
platforms = [
"x86_64-linux"
];
# Mark broken due to a breaking change in JetBrains JCEF
# https://github.com/NixOS/nixpkgs/pull/485812#issuecomment-4211365591
broken = true;
};
})
+2 -2
View File
@@ -8,14 +8,14 @@
# https://github.com/nianeyna/ao3downloader/blob/f8399bb8aca276ae7359157b90afd13925c90056/pyproject.toml#L8
python312Packages.buildPythonApplication (finalAttrs: {
pname = "ao3downloader";
version = "2026.4.7";
version = "2026.4.9";
pyproject = true;
src = fetchFromGitHub {
owner = "nianeyna";
repo = "ao3downloader";
tag = "v${finalAttrs.version}";
hash = "sha256-PlMVhvUX/XeNrKfwe+/sFv8Y4k7GEzCR+xIO/zuspxM=";
hash = "sha256-StaF62Ho/xz8kKE5NrLo8G5PdBv493VBshR6gdK9J20=";
};
build-system = with python312Packages; [
+2 -2
View File
@@ -7,11 +7,11 @@
let
pname = "apidog";
version = "2.8.24";
version = "2.8.26";
src = fetchurl {
url = "https://file-assets.apidog.com/download/${version}/Apidog-${version}.AppImage";
hash = "sha256-gGhA++wfgURhibGF2tXAmH0orX2VSUiJsAo3wAu6t1g=";
hash = "sha256-u+J5OKgqOKEE35IhMpL7LUB4UgaX2XZKfnUczfLhjoU=";
};
appimageContents = appimageTools.extract {
+3 -3
View File
@@ -6,16 +6,16 @@
rustPlatform.buildRustPackage (finalAttrs: {
pname = "apt-swarm";
version = "0.5.1";
version = "0.6.0";
src = fetchFromGitHub {
owner = "kpcyrd";
repo = "apt-swarm";
tag = "v${finalAttrs.version}";
hash = "sha256-zb0X6vIRKeI5Ysc88sTCJBlr9r8hrsTq5YR7YCg1L30=";
hash = "sha256-tDIwx+Eb/5EH9p407+FfKAwU6ZjNxyKtfFe5h7eTnHg=";
};
cargoHash = "sha256-PELTEzhsFa1nl7iqrjnuXEI0U7L8rL9XW9XqQ04rz/s=";
cargoHash = "sha256-43TFrddQvmzUzk2JnggKKWljBNzO+7IYF8HsTwez7a4=";
meta = {
description = "Experimental p2p gossip network for OpenPGP signature transparency";
+5 -3
View File
@@ -13,7 +13,7 @@ buildGoModule (finalAttrs: {
src = fetchFromGitHub {
owner = "controlplaneio";
repo = "badrobot";
rev = "v${finalAttrs.version}";
tag = "v${finalAttrs.version}";
sha256 = "sha256-U3b5Xw+GjnAEXteivztHdcAcXx7DYtgaUbW5oax0mIk=";
};
vendorHash = "sha256-oYdkCEdrw1eE5tnKveeJM3upRy8hOVc24JNN1bLX+ec=";
@@ -35,7 +35,7 @@ buildGoModule (finalAttrs: {
meta = {
homepage = "https://github.com/controlplaneio/badrobot";
changelog = "https://github.com/controlplaneio/badrobot/blob/v${finalAttrs.version}/CHANGELOG.md";
changelog = "https://github.com/controlplaneio/badrobot/releases/tag/v${finalAttrs.src.tag}";
description = "Operator Security Audit Tool";
mainProgram = "badrobot";
longDescription = ''
@@ -47,6 +47,8 @@ buildGoModule (finalAttrs: {
cluster permissions.
'';
license = with lib.licenses; [ asl20 ];
maintainers = with lib.maintainers; [ jk ];
maintainers = with lib.maintainers; [
jk
];
};
})
+3 -3
View File
@@ -11,16 +11,16 @@
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "biome";
version = "2.4.12";
version = "2.4.13";
src = fetchFromGitHub {
owner = "biomejs";
repo = "biome";
rev = "@biomejs/biome@${finalAttrs.version}";
hash = "sha256-PVax57P496gDksvyGskW3MeR9YDZFE0E8yiv2zW6L/o=";
hash = "sha256-Pie1oc1mc6lsdmSiOu04ci67DToDYRt36hdHsU0ZGXw=";
};
cargoHash = "sha256-638M2/qRXTZSD4/2/PWkfo5DbsLzWlhwwSBGlkUaLBc=";
cargoHash = "sha256-ayFCjh1gBLOJoUnDKm+kwUzshGS0utqTewfe5wEdvQ0=";
nativeBuildInputs = [ pkg-config ];
+2 -2
View File
@@ -28,14 +28,14 @@
stdenv.mkDerivation rec {
pname = "boinc";
version = "8.2.10";
version = "8.2.11";
src = fetchFromGitHub {
name = "${pname}-${version}-src";
owner = "BOINC";
repo = "boinc";
rev = "client_release/${lib.versions.majorMinor version}/${version}";
hash = "sha256-+/EuGJluTXhEWZT97P60vE6e8uX3+GdCyJwf9nzsh4E=";
hash = "sha256-xWEAjTWEUCTTtxfCFFMcrJD0DRVmUAgi2vE0GifTX2Q=";
};
nativeBuildInputs = [
+2 -2
View File
@@ -9,7 +9,7 @@
buildGoModule (finalAttrs: {
pname = "boulder";
version = "0.20260413.0";
version = "0.20260428.0";
src = fetchFromGitHub {
owner = "letsencrypt";
@@ -22,7 +22,7 @@ buildGoModule (finalAttrs: {
find $out -name .git -print0 | xargs -0 rm -rf
popd
'';
hash = "sha256-8saRz7g0KsXNr5oR4a2qd4kKDR686J0TIFMzsX/zlV0=";
hash = "sha256-ky6geY8pIBhnpwQ4bbzQN0+EQgOfwlo8EQ0rTZdtNIA=";
};
vendorHash = null;
+1 -1
View File
@@ -44,7 +44,7 @@ rustPlatform.buildRustPackage (finalAttrs: {
meta = {
description = "Bandwidth Test server and client";
homepage = "https://github.com/manawenuz/btest-rs";
changelog = "https://github.com/manawenuz/btest-rs/releases/tag/v${finalAttrs.src.tag}";
changelog = "https://github.com/manawenuz/btest-rs/releases/tag/${finalAttrs.src.tag}";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ fab ];
mainProgram = "btest";
-1
View File
@@ -44,7 +44,6 @@ stdenv.mkDerivation (finalAttrs: {
be used to filter and format appointments, making it suitable for use in scripts.
'';
homepage = "https://calcurse.org/";
changelog = "https://git.calcurse.org/calcurse.git/plain/CHANGES.md?h=v${finalAttrs.version}";
license = lib.licenses.bsd2;
platforms = lib.platforms.unix;
maintainers = [ lib.maintainers.matthiasbeyer ];
+3 -3
View File
@@ -12,16 +12,16 @@
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "cantus";
version = "0.6.5";
version = "0.6.6";
src = fetchFromGitHub {
owner = "CodedNil";
repo = "cantus";
tag = finalAttrs.version;
hash = "sha256-pnc/fjmi932tZQsAfvvAoZ1PXEP8gckGuauR+5btei8=";
hash = "sha256-4bnIYOHVOPawDg4s5mPKYXURpDSVgyTmoh1WiGj/Zl8=";
};
cargoHash = "sha256-sDZF5cWlhsBblAe0sreGbfgXKIip5raM0r9ZeJrLrLQ=";
cargoHash = "sha256-TbbXZGToQTH0k6KxpCsjcG/kOFY0c4L/P8QUpDyQ+2E=";
nativeBuildInputs = [
pkg-config
+1 -1
View File
@@ -31,7 +31,7 @@ rustPlatform.buildRustPackage (finalAttrs: {
description = "Cargo subcommand to show crates info from crates.io";
mainProgram = "cargo-info";
homepage = "https://gitlab.com/imp/cargo-info";
changelog = "https://gitlab.com/imp/cargo-info/-/blob/${finalAttrs.src.rev}/CHANGELOG.md";
changelog = "https://gitlab.com/imp/cargo-info/-/blob/${finalAttrs.src.tag}/CHANGELOG.md";
license = with lib.licenses; [
mit
asl20
+3 -3
View File
@@ -10,20 +10,20 @@
rustPlatform.buildRustPackage (finalAttrs: {
pname = "cargo-mobile2";
version = "0.22.3";
version = "0.22.4";
src = fetchFromGitHub {
owner = "tauri-apps";
repo = "cargo-mobile2";
rev = "cargo-mobile2-v${finalAttrs.version}";
hash = "sha256-rPLGh7/lGsmoidtr+UNrxzUgqtiHvkqZs2/la4L6zQM=";
hash = "sha256-DjoWjdgfNHLZkaWUjPq4tNrmHsifKKhBaRjK25WRdiE=";
};
# Manually specify the sourceRoot since this crate depends on other crates in the workspace. Relevant info at
# https://discourse.nixos.org/t/difficulty-using-buildrustpackage-with-a-src-containing-multiple-cargo-workspaces/10202
# sourceRoot = "${src.name}/tooling/cli";
cargoHash = "sha256-ht9ofFa4H/Ux6a31vMNdKNhrX48yoYM1qAPoxCjude0=";
cargoHash = "sha256-m+9wPfheH9t7zxTsW7vHe4td/gyeC/nXFDHRGjK5XBg=";
buildInputs = [ openssl ];
nativeBuildInputs = [
+2 -2
View File
@@ -31,8 +31,8 @@ rustPlatform.buildRustPackage (finalAttrs: {
meta = {
description = "List and diff the public API of Rust library crates between releases and commits. Detect breaking API changes and semver violations";
mainProgram = "cargo-public-api";
homepage = "https://github.com/Enselic/cargo-public-api";
changelog = "https://github.com/Enselic/cargo-public-api/releases/tag/v${finalAttrs.version}";
homepage = "https://github.com/cargo-public-api/cargo-public-api";
changelog = "https://github.com/cargo-public-api/cargo-public-api/blob/v${finalAttrs.version}/CHANGELOG.md";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ matthiasbeyer ];
};
+3 -3
View File
@@ -10,16 +10,16 @@
rustPlatform.buildRustPackage (finalAttrs: {
pname = "cargo-udeps";
version = "0.1.60";
version = "0.1.61";
src = fetchFromGitHub {
owner = "est31";
repo = "cargo-udeps";
rev = "v${finalAttrs.version}";
sha256 = "sha256-NW9yjFUV+o7vv5bYD8nxSWHOXOBnDEk36xze90wYuNg=";
sha256 = "sha256-yT/EJWGGhQapbU1o1Gus1Vk5cAhso5ALTBecB3BH46g=";
};
cargoHash = "sha256-vQvtc/CwV1aHeREzmzO8k1FcebbEp3FKMAJb0v2aQig=";
cargoHash = "sha256-DGfAsBucFRFJkjmJkpTpNfQO79jaNa5NezXKf7hYYeM=";
nativeBuildInputs = [ pkg-config ];
+3 -3
View File
@@ -6,16 +6,16 @@
buildGoModule (finalAttrs: {
pname = "chroma";
version = "2.23.1";
version = "2.24.0";
src = fetchFromGitHub {
owner = "alecthomas";
repo = "chroma";
tag = "v${finalAttrs.version}";
hash = "sha256-Znmcds0ru9VyH/0qE7KnW7l0QeRDoh9PnUPHTYPAA6w=";
hash = "sha256-KfojHrRJjGT03WeBobvBO9pHsJP6I7fSxzcSlmCsaxE=";
};
vendorHash = "sha256-3mmO5hjjIqVqKiSOrFFQH8OaQTviJVHrznMYsgHP82A=";
vendorHash = "sha256-Vq5k4Jz4r5iZs7Yy175Ubj92eSr4v1xCtbLYhfo3OAg=";
modRoot = "./cmd/chroma";
+19 -19
View File
@@ -1,47 +1,47 @@
{
"version": "2.1.119",
"commit": "6f68554839756189e277b8285a18fe47acd9a5a1",
"buildDate": "2026-04-23T20:45:14Z",
"version": "2.1.121",
"commit": "16ffea721a0a39bc787a236dc19fb62307180b75",
"buildDate": "2026-04-27T01:51:03Z",
"platforms": {
"darwin-arm64": {
"binary": "claude",
"checksum": "31db3444309d5d0f8b85e8782e2dcd86f31f7e48c1a1e83d69b09268c7b4f9a2",
"size": 213404000
"checksum": "3810e55d47ed4d413de6dc037e34d58948f779a4c6bdeeacf1748d850c5daad6",
"size": 215417984
},
"darwin-x64": {
"binary": "claude",
"checksum": "52b3b75cfe80c626982b2ffb3a6ce1c797824f257dc275cf0a3c32c202b6a3df",
"size": 214951760
"checksum": "59d817dde54eeef0d752e7bd3869586e6eb5fa2b1d785c06fb9cda8804166037",
"size": 216982224
},
"linux-arm64": {
"binary": "claude",
"checksum": "382aa73ea4b07fd8d698e3159b5ef9e1b8739fae7505ba8ddd28b8a6a62819ce",
"size": 245500480
"checksum": "71b78e6364f97a227b17be40dfcc237461f8d2b1d109444d24b42af0fdefac31",
"size": 247466560
},
"linux-x64": {
"binary": "claude",
"checksum": "cca43053f062949495596b11b6fd1b59cf79102adb13bacbe66997e6fae41e4a",
"size": 245230208
"checksum": "b4b684bbcb3a88029ec419dbc08824b2f3c69656a0aa2374860f9525fc67c98f",
"size": 247265920
},
"linux-arm64-musl": {
"binary": "claude",
"checksum": "e09bfaedd8bfdeaebe5f1cf9bb81ebeb718312c68fffce379fb51786263143d0",
"size": 238225856
"checksum": "2f8e2a81f7d41a9cf3e9269fb3237df968194cc7bf8ba478392cd5217d55e8d1",
"size": 240191872
},
"linux-x64-musl": {
"binary": "claude",
"checksum": "ef41a11653b39c14db2d343f1f5e2a3af7eb9871c63e64deb6e65919670a4e0b",
"size": 239495616
"checksum": "d5ad436e256291df5e2248d1026a971229dde43544db3267892afd5c89934eb1",
"size": 241531264
},
"win32-x64": {
"binary": "claude.exe",
"checksum": "e18c7dcfad4a3f5d33d202ec2dde630b648cf5b41622154d6210e793c7cceadc",
"size": 254478496
"checksum": "0a85980a38e9d8fbb2ba51f1d27c3425c7870f75e053ae4be266d23e10edde4a",
"size": 253241504
},
"win32-arm64": {
"binary": "claude.exe",
"checksum": "9e0deb10c45108612484ce558fad378206d5ac23feb203067450e6c38d001241",
"size": 251203232
"checksum": "9c9e1c68d50bb80f5e8d4a91645f042d4802a4fb0f87c34a504ecbb69a54860a",
"size": 249304224
}
}
}
+2 -2
View File
@@ -29,11 +29,11 @@ let
in
stdenv.mkDerivation (finalAttrs: {
pname = "clightning";
version = "26.04";
version = "26.04.1";
src = fetchurl {
url = "https://github.com/ElementsProject/lightning/releases/download/v${finalAttrs.version}/clightning-v${finalAttrs.version}.zip";
hash = "sha256-6dxnhLkXIrfxqXi+UoBKsJw1YFIanOVGBYizJB0X3oU=";
hash = "sha256-MEsZ5GPCY6q/SNO+xcktfGiCZUVgl4p7pdMOiqIqFJM=";
};
# when building on darwin we need cctools to provide the correct libtool
+3 -3
View File
@@ -6,16 +6,16 @@
buildGoModule (finalAttrs: {
pname = "cloudprober";
version = "0.14.1";
version = "0.14.3";
src = fetchFromGitHub {
owner = "cloudprober";
repo = "cloudprober";
tag = "v${finalAttrs.version}";
hash = "sha256-XFMjUwsRfWAnrNsegUPqWz8Bcc/naEBhytqq/o21ras=";
hash = "sha256-dMogW0NQAMiSBC7//7gGmadvK5vS2H+170aW0RK58fU=";
};
vendorHash = "sha256-+EVcYFnWPSNfxUzxuL3tAHjCCDad/7K11y3dk2CUtrU=";
vendorHash = "sha256-YEueI/Ms350bNkKPmLNzLljr9FDL0R7zACF4HQwHLdk=";
checkFlags =
let
+2 -2
View File
@@ -7,13 +7,13 @@
buildGoModule (finalAttrs: {
pname = "clusterlint";
version = "0.14.0";
version = "0.15.0";
src = fetchFromGitHub {
owner = "digitalocean";
repo = "clusterlint";
tag = "v${finalAttrs.version}";
hash = "sha256-iOd0mjVJDtALxdsmG6+ruJ8CxoNe17D9grkjRW+N34A=";
hash = "sha256-6QgWWSiwVZv8rYJNvfzxNsrxCqJbR/MBcCr3ESrO6Fc=";
};
vendorHash = null;
+3 -3
View File
@@ -8,16 +8,16 @@
rustPlatform.buildRustPackage (finalAttrs: {
pname = "coldsnap";
version = "0.9.0";
version = "0.10.0";
src = fetchFromGitHub {
owner = "awslabs";
repo = "coldsnap";
rev = "v${finalAttrs.version}";
hash = "sha256-8+YPKjHi3VURzSOflIa0x4uBkoDMYGFJiFcNJ+8NJ7Q=";
hash = "sha256-QQWH8cWBskXOmiZygvkNDyBX4WdsgnA0/ec6/UnmwIA=";
};
cargoHash = "sha256-4w79zZcgIulLIArY2ErOHwaWA8g/mA2cSKCzJx4X9vM=";
cargoHash = "sha256-U5MinzKQYTHRXM3WndkMEbvoT9tPwIIB3QxEOwWA3zE=";
buildInputs = [ openssl ];
nativeBuildInputs = [ pkg-config ];
@@ -9,13 +9,13 @@
}:
rustPlatform.buildRustPackage {
pname = "cosmic-ext-applet-weather";
version = "0-unstable-2026-03-23";
version = "0-unstable-2026-04-27";
src = fetchFromGitHub {
owner = "cosmic-utils";
repo = "cosmic-ext-applet-weather";
rev = "e98c57c586180df0abf6efbe3ee479fc4849f4f7";
hash = "sha256-8m1L98wt0uf1vnZ7z4meb/9hU+k5bqe7x7Pidf1lBGM=";
rev = "943041c6e1e49d4a6ae267350d7818213e197bc5";
hash = "sha256-ZTZ3IjEte3Knkm77i/C0Qq5lx8g3je6GsRlSSrWpFRQ=";
};
cargoHash = "sha256-DmPUA9qRgCMqVqBNVfyQg4UZkqnZXZvokoSAqPxg0Zc=";
+3 -5
View File
@@ -8,16 +8,16 @@
buildGoModule (finalAttrs: {
pname = "dgop";
version = "0.2.0";
version = "0.2.2";
src = fetchFromGitHub {
owner = "AvengeMedia";
repo = "dgop";
tag = "v${finalAttrs.version}";
hash = "sha256-CxTvTx7WYKj9usa1uZDUmCqS9+W0QoIeTGDlkhHLVho=";
hash = "sha256-kYEFJvJApcgVgFu6QpSoNk2t0hv7AlmBARc5HPe/n+s=";
};
vendorHash = "sha256-4GslUKwUCO8oOqylsclJmAZL/ds0plenzcTAwAXKtrc=";
vendorHash = "sha256-OxcSnBIDwbPbsXRHDML/Yaxcc5caoKMIDVHLFXaoSsc=";
ldflags = [
"-w"
@@ -28,8 +28,6 @@ buildGoModule (finalAttrs: {
nativeBuildInputs = [ installShellFiles ];
postInstall = ''
mv $out/bin/{cli,dgop}
installShellCompletion --cmd dgop \
--bash <($out/bin/dgop completion bash) \
--fish <($out/bin/dgop completion fish) \
+2 -2
View File
@@ -6,13 +6,13 @@
}:
buildGoModule (finalAttrs: {
pname = "di-tui";
version = "1.13.3";
version = "1.13.4";
src = fetchFromGitHub {
owner = "acaloiaro";
repo = "di-tui";
rev = "v${finalAttrs.version}";
hash = "sha256-rT9iH9kkkWtg4H7YJUD2ElvWLUIzFHGSlH31A68pDDo=";
hash = "sha256-0PIKPprAqGbVFiGFxwzgmS4fYKTHfpdpWWUMuxK67tQ=";
};
vendorHash = "sha256-b7dG0nSjPQpjWUbOlIxWudPZWKqtq96sQaJxKvsQT9I=";
@@ -10,7 +10,7 @@
stdenv.mkDerivation (finalAttrs: {
pname = "directx-shader-compiler";
version = "1.9.2602";
version = "1.10.2605.2";
# Put headers in dev, there are lot of them which aren't necessary for
# using the compiler binary.
@@ -23,7 +23,7 @@ stdenv.mkDerivation (finalAttrs: {
owner = "microsoft";
repo = "DirectXShaderCompiler";
rev = "v${finalAttrs.version}";
hash = "sha256-S3ar1LTV/9fYU2B5y8x0ESB20lMnAx8XQw9n3G4z0nk=";
hash = "sha256-FzfXxfhAyJw7rouWJEyeVdikG5TBM81yC+9iRg5tK3c=";
fetchSubmodules = true;
};
+2 -2
View File
@@ -28,13 +28,13 @@ buildGoModule (
in
{
pname = "dms-shell";
version = "1.4.5";
version = "1.4.6";
src = fetchFromGitHub {
owner = "AvengeMedia";
repo = "DankMaterialShell";
tag = "v${finalAttrs.version}";
hash = "sha256-K/DtFratLxaZ4+YS9G+HZA37banWacXYznmul3XPKKM=";
hash = "sha256-g6r/Gx8PTDzO3jCNzzySA+Ff1lmLF9nDlMCNyyoQjoE=";
};
sourceRoot = "${finalAttrs.src.name}/core";
+3 -3
View File
@@ -7,16 +7,16 @@
buildNpmPackage (finalAttrs: {
pname = "dotenvx";
version = "1.61.5";
version = "1.64.0";
src = fetchFromGitHub {
owner = "dotenvx";
repo = "dotenvx";
tag = "v${finalAttrs.version}";
hash = "sha256-yyAlEgIbPQocPnZvDbmK2MIYpglESkQGMYE7PmJDdEM=";
hash = "sha256-Xa3xtDzvSbgba083R2g3vV8Jtv86NMEbZ/EhYxmGsKA=";
};
npmDepsHash = "sha256-YQ3b7Fm33Mfp2l2LQ/+iYal+iBTZn5v7lUyZ2geY46A=";
npmDepsHash = "sha256-WeqODrueKqDFvIsXHlzWhHSdqPY/uS+VM+wCp69LN9M=";
dontNpmBuild = true;
+2 -2
View File
@@ -7,13 +7,13 @@
buildGoModule (finalAttrs: {
pname = "feishu-cli";
version = "1.21.0";
version = "1.22.0";
src = fetchFromGitHub {
owner = "riba2534";
repo = "feishu-cli";
tag = "v${finalAttrs.version}";
hash = "sha256-4+YEU0gRL3WF19a949QweVIdtXt8BWMummjK9ypBHXQ=";
hash = "sha256-n7CqaVpuzJg5oPI7RixvDp8xSA93292yY9K8jmzd+68=";
};
vendorHash = "sha256-MZv772U+3+Fcanaiuhz+OCqfIsYyCG7B4iZOnEftbi8=";
+5 -4
View File
@@ -9,10 +9,10 @@
}:
let
version = "2.8.5";
srcHash = "sha256-2Q6l+egcRntGjieXpXz/frGGw4GMhGXxQAUOAZfxBE4=";
vendorHash = "sha256-D92vOyTvlpOou/1WHS6xpb4e8igZMQhm4DP7SVSLKPI=";
manifestsHash = "sha256-X0Cf8UZufqUWKLxYVjblYNCz5IU/s+mI+h6TpTeks5k=";
version = "2.8.6";
srcHash = "sha256-pKP4g2pTMYtx/B/Y3ow7tvDdhCSuwbszzeLVXB0W7Bo=";
vendorHash = "sha256-VBafft9/AuXaHWvZymy7P9gaSuO8D6IZHfK68Ixp3mI=";
manifestsHash = "sha256-h/HR/rJwPWXiuoj9T+LajdsdT4Jo8/EuN+O1I7e9sjI=";
manifests = fetchzip {
url = "https://github.com/fluxcd/flux2/releases/download/v${version}/manifests.tar.gz";
@@ -82,6 +82,7 @@ buildGoModule rec {
jlesquembre
ryan4yin
SchahinRohani
stealthybox
superherointj
];
mainProgram = "flux";
+3 -3
View File
@@ -12,7 +12,7 @@
buildGoModule rec {
pname = "flyctl";
version = "0.4.36";
version = "0.4.42";
src = fetchFromGitHub {
owner = "superfly";
@@ -22,11 +22,11 @@ buildGoModule rec {
cd "$out"
git rev-parse HEAD > COMMIT
'';
hash = "sha256-WMENTGVwMICIrgMbl31cEaBpznyv3+XFtAhP8AajWyo=";
hash = "sha256-yAzd7bytBKxOBGs8ja48QPVdmJSvRfIzi8K2DoC0O+Y=";
};
proxyVendor = true;
vendorHash = "sha256-qGG+xOBe8JLt+F4iTNMEC1XTs5H/rfLtUZO7QXYAaZg=";
vendorHash = "sha256-TUlOdRfexuxC2Of6ZHPYChCr3i1IGapLZz1/lAhnUxk=";
subPackages = [ "." ];
+1
View File
@@ -126,6 +126,7 @@ buildGoModule rec {
"TestDNSUpdate" # requires network: release.forgejo.org
"TestMigrateWhiteBlocklist" # requires network: gitlab.com (DNS)
"TestURLAllowedSSH/Pushmirror_URL" # requires network git.gay (DNS)
"TestBleveDeleteIssue" # Known Flake-y https://github.com/NixOS/nixpkgs/issues/509878
];
in
[ "-skip=^${builtins.concatStringsSep "$|^" skippedTests}$" ];
+4 -4
View File
@@ -1,8 +1,8 @@
import ./generic.nix {
version = "15.0.0";
hash = "sha256-KAGHascGFj4X6b4BpRqQ8yCedNh0nvHfQgbzJh9fxAc=";
npmDepsHash = "sha256-AWvLcAS7EEy796kAQfiQ8sFSh/s+6zNCJEqe4qzQL3s=";
vendorHash = "sha256-bP7cykWKwNQrWm9jJT4YYAHRV66HaTwGkvhBqSHgWAA=";
version = "15.0.1";
hash = "sha256-40hyQ6MPskyty/LsMVczuDpbu2q3Syoj3c00HUS+pVE=";
npmDepsHash = "sha256-xWbnSX11RkLjtJ62qG6rD+xQAOnUuI99r9uEHakkZPY=";
vendorHash = "sha256-JUBAcRYgflrvoAK0OvaU/Xr6/BakgaUtYwtvBF9vyk0=";
lts = true;
nixUpdateExtraArgs = [
"--override-filename"
+2 -2
View File
@@ -9,13 +9,13 @@
buildGoModule (finalAttrs: {
pname = "newt";
version = "1.12.0";
version = "1.12.2";
src = fetchFromGitHub {
owner = "fosrl";
repo = "newt";
tag = finalAttrs.version;
hash = "sha256-csD7QcSQE4/eRw3EHX0m2nI3JjglFxXlnyuS4xpCmRY=";
hash = "sha256-5+B1sderUwy6hJPKFRK8fV0bX2+rgHh3WmAjgQqVsR4=";
};
vendorHash = "sha256-+zMSzNbqmWm/DXL2xMUd5uPP5tSIybsRokwJ2zd0pf0=";
+2 -2
View File
@@ -13,14 +13,14 @@
}:
python3Packages.buildPythonApplication (finalAttrs: {
pname = "gaphor";
version = "3.3.0";
version = "3.3.1";
pyproject = true;
src = fetchFromGitHub {
owner = "gaphor";
repo = "gaphor";
tag = finalAttrs.version;
hash = "sha256-bgcri0mgFKz4jtGJSWtlStS3f4FzYH+ZPE1BsK+S1DI=";
hash = "sha256-oGOi1vyLOrElj/kbqHgPEyAwtVvVA3a1j9VSWMts/bM=";
};
pythonRelaxDeps = [
+2 -2
View File
@@ -5,7 +5,7 @@
}:
python3Packages.buildPythonPackage rec {
pname = "garmin-grafana";
version = "0.3.0";
version = "0.5.0";
pyproject = true;
@@ -13,7 +13,7 @@ python3Packages.buildPythonPackage rec {
owner = "arpanghosh8453";
repo = "garmin-grafana";
tag = "v${version}";
hash = "sha256-nuVT6LK9KIs/FwUbdfI4xpKru4jfAyj1/vmk7ji43zk=";
hash = "sha256-NrT4erpdWwqFBUumQdd5GqpmhIayszzkPd8fUgDRwXY=";
};
build-system = with python3Packages; [
+2 -2
View File
@@ -16,13 +16,13 @@ let
in
stdenv.mkDerivation (finalAttrs: {
pname = "gearboy";
version = "3.8.2";
version = "3.8.3";
src = fetchFromGitHub {
owner = "drhelius";
repo = "Gearboy";
tag = finalAttrs.version;
hash = "sha256-JgvTt/nUV2CiSJNC3NnKpoa28xAMhRxEh9txqE9FPzU=";
hash = "sha256-3wyAwK61lusmVYbt9m10H4I4KUHAUAlC0bP9LqGB/OE=";
};
__structuredAttrs = true;
+2 -2
View File
@@ -10,11 +10,11 @@
stdenv.mkDerivation (finalAttrs: {
pname = "gefyra";
version = "2.4.1";
version = "2.4.3";
src = fetchzip {
url = "https://github.com/gefyrahq/gefyra/releases/download/${finalAttrs.version}/gefyra-${finalAttrs.version}-linux-amd64.zip";
hash = "sha256-XS+vtwb6UIJK7f3R3QLoyX9+P4n79Fh+v7odiot7Yic=";
hash = "sha256-HWcW4JX8XglcB3OkJKdaKtZ6D9Mdg3jff0nqHOS4ESg=";
stripRoot = false;
};
+11 -3
View File
@@ -5,14 +5,14 @@
}:
python3Packages.buildPythonApplication (finalAttrs: {
pname = "gh-cherry-pick";
version = "1.4.0";
version = "1.5.0";
pyproject = true;
src = fetchFromGitHub {
owner = "PerchunPak";
repo = "gh-cherry-pick";
tag = "v${finalAttrs.version}";
hash = "sha256-ec9q+3nd1zJ2K3dyWqLsdTH5GBJ4B1b8D/4Wd6d8PcA=";
hash = "sha256-a2vhQ9upJYc+t4Juq+eukNc7dzq6MafNxDUULPZs9sQ=";
};
build-system = with python3Packages; [
@@ -25,10 +25,18 @@ python3Packages.buildPythonApplication (finalAttrs: {
httpx
];
# upstream has strict dependency pins, but it doesn't break with slightly
# newer/older versions
# (c) upstream maintainer
pythonRelaxDeps = true;
nativeCheckInputs = with python3Packages; [
pytestCheckHook
faker
pytest-asyncio
pytest-cov-stub
pytest-httpx
pytest-mock
pytestCheckHook
];
pythonImportsCheck = [ "gh_cherry_pick" ];
+3 -4
View File
@@ -1,6 +1,6 @@
{
lib,
fetchFromGitHub,
fetchFromCodeberg,
rustPlatform,
}:
@@ -8,7 +8,7 @@ rustPlatform.buildRustPackage (finalAttrs: {
pname = "git-gone";
version = "1.3.1";
src = fetchFromGitHub {
src = fetchFromCodeberg {
owner = "swsnr";
repo = "git-gone";
tag = "v${finalAttrs.version}";
@@ -19,8 +19,7 @@ rustPlatform.buildRustPackage (finalAttrs: {
meta = {
description = "Cleanup stale Git branches of merge requests";
homepage = "https://github.com/swsnr/git-gone";
changelog = "https://github.com/swsnr/git-gone/raw/v${finalAttrs.version}/CHANGELOG.md";
homepage = "https://codeberg.org/swsnr/git-gone";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [
cafkafk
-1
View File
@@ -40,7 +40,6 @@ rustPlatform.buildRustPackage (finalAttrs: {
meta = {
description = "Create `.gitignore` files using one or more templates from TopTal, GitHub or your own collection";
homepage = "https://github.com/reemus-dev/gitnr";
changelog = "https://github.com/reemus-dev/gitnr/blob/${finalAttrs.src.rev}/CHANGELOG.md";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [
matthiasbeyer
+3 -3
View File
@@ -13,13 +13,13 @@
buildGoModule (finalAttrs: {
pname = "glab";
version = "1.92.1";
version = "1.93.0";
src = fetchFromGitLab {
owner = "gitlab-org";
repo = "cli";
tag = "v${finalAttrs.version}";
hash = "sha256-4DUEsh2T5rx/0u79+edMLAjTRUmXxlbA0SVH/EwoeVo=";
hash = "sha256-ra+cXfB5DtFXmpgxSTZuXUgRY8Uzsxc84cmmAGq06AE=";
leaveDotGit = true;
postFetch = ''
cd "$out"
@@ -28,7 +28,7 @@ buildGoModule (finalAttrs: {
'';
};
vendorHash = "sha256-fnVY1WEwzuRjHXQSGLl1c7bQXxzOHFEPlb/DhntYm2U=";
vendorHash = "sha256-FBYTwTGQ2ma4dEeCGpvduGAPux5g7MsxBHQy8QXXVgQ=";
ldflags = [
"-s"
+1 -1
View File
@@ -38,7 +38,7 @@ buildGoModule (finalAttrs: {
description = "TUI log analysis tool";
homepage = "https://gonzo.controltheory.com/";
downloadPage = "https://github.com/control-theory/gonzo";
changelog = "https://github.com/control-theory/gonzo/releases/tag/v${finalAttrs.src.tag}";
changelog = "https://github.com/control-theory/gonzo/releases/tag/${finalAttrs.src.tag}";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ kpbaks ];
mainProgram = "gonzo";
+5 -5
View File
@@ -184,11 +184,11 @@ let
linux = stdenvNoCC.mkDerivation (finalAttrs: {
inherit pname meta passthru;
version = "147.0.7727.116";
version = "147.0.7727.137";
src = fetchurl {
url = "https://dl.google.com/linux/chrome/deb/pool/main/g/google-chrome-stable/google-chrome-stable_${finalAttrs.version}-1_amd64.deb";
hash = "sha256-f4lIdknIXTTv3yxvs754n6/a01h5xxWWOvnjwQcIPnw=";
hash = "sha256-2QKA8nk+O10cGr0gGOMSlLkxpO+WHFG1yul9a3VGq64=";
};
# With strictDeps on, some shebangs were not being patched correctly
@@ -302,11 +302,11 @@ let
darwin = stdenvNoCC.mkDerivation (finalAttrs: {
inherit pname meta passthru;
version = "147.0.7727.117";
version = "147.0.7727.138";
src = fetchurl {
url = "http://dl.google.com/release2/chrome/hlfggraqploqe3bea7acbi5wei_147.0.7727.117/GoogleChrome-147.0.7727.117.dmg";
hash = "sha256-GCdZAiqNSDcC6qgsJGS5renRrl3kLoH4X9VHX7aLXTw=";
url = "http://dl.google.com/release2/chrome/ackheqvxll25dzx6s76qfgpa4oxa_147.0.7727.138/GoogleChrome-147.0.7727.138.dmg";
hash = "sha256-1WOkBxAs79ByJ3quXgh+ZR64ysIE2/2wMeIhl3sYh5o=";
};
dontPatch = true;
+20 -9
View File
@@ -1,28 +1,39 @@
{
lib,
rustPlatform,
fetchFromGitHub,
rustPlatform,
nixosTests,
nix-update-script,
}:
rustPlatform.buildRustPackage {
rustPlatform.buildRustPackage (finalAttrs: {
pname = "grafana-to-ntfy";
version = "0-unstable-2025-01-25";
version = "2026.4.29";
src = fetchFromGitHub {
owner = "kittyandrew";
repo = "grafana-to-ntfy";
rev = "64d11f553776bbf7695d9febd74da1bad659352d";
hash = "sha256-GO9VE9wymRk+QKGFyDpd0wS9GCY3pjpFUe37KIcnKxc=";
tag = "v${finalAttrs.version}";
hash = "sha256-ac0T8SNCDH9kQTKIfYn9KinnrSCYIBpNByO6NQ8UntA=";
};
cargoHash = "sha256-w4HSxdihElPz0q05vWjajQ9arZjAzd82L0kEKk1Uk8s=";
cargoHash = "sha256-RuWXlofcruR69sg+RO2v1DBgxaPEyu8TeZEiZP7rBV8=";
# No unit tests; all testing is NixOS VM-based integration tests
doCheck = false;
passthru = {
tests.grafana-to-ntfy = nixosTests.grafana-to-ntfy;
updateScript = nix-update-script { };
};
meta = {
description = "Bridge to forward Grafana alerts to ntfy.sh notification service";
description = "Bridge to forward Grafana and Prometheus Alertmanager alerts to ntfy.sh";
homepage = "https://github.com/kittyandrew/grafana-to-ntfy";
changelog = "https://github.com/kittyandrew/grafana-to-ntfy/releases/tag/v${finalAttrs.version}";
license = lib.licenses.agpl3Only;
platforms = lib.platforms.linux;
maintainers = [ ];
maintainers = with lib.maintainers; [ kittyandrew ];
mainProgram = "grafana-to-ntfy";
};
}
})
+11 -2
View File
@@ -34,6 +34,10 @@ let
tag = "20200910";
hash = "sha256-YQl5IDtodcbTV3D6vtJi7CwxVtHHl58fG6qCAoSaP4U=";
};
nativeGroffBinPath = lib.makeBinPath [
buildPackages.groff
(lib.getOutput "perl" buildPackages.groff)
];
in
stdenv.mkDerivation (finalAttrs: {
pname = "groff";
@@ -125,13 +129,18 @@ stdenv.mkDerivation (finalAttrs: {
# Move mom docs instead of linking them to avoid dangling symlinks
substituteInPlace Makefile \
--replace-fail '$(LN_S) $(exampledir)' 'mv $(exampledir)'
''
+ lib.optionalString (stdenv.buildPlatform != stdenv.hostPlatform) ''
# pdfmom uses GROFF_COMMAND to find the groff executable internally.
substituteInPlace Makefile \
--replace-fail 'GROFF_COMMAND=test-groff \' 'GROFF_COMMAND=$(GROFFBIN) \'
'';
makeFlags = lib.optionals (stdenv.buildPlatform != stdenv.hostPlatform) [
# Trick to get the build system find the proper 'native' groff
# http://www.mail-archive.com/bug-groff@gnu.org/msg01335.html
"GROFF_BIN_PATH=${lib.getBin buildPackages.groff}/bin"
"GROFFBIN=${lib.getExe buildPackages.groff}"
"GROFF_BIN_PATH=${nativeGroffBinPath}"
"GROFFBIN=${lib.getExe' buildPackages.groff "groff"}"
];
doCheck = true;
+11
View File
@@ -0,0 +1,11 @@
{
grub2,
...
}@args:
grub2.override (
{
efiSupport = true;
}
// removeAttrs args [ "grub2" ]
)
@@ -0,0 +1,11 @@
{
grub2,
...
}@args:
grub2.override (
{
ieee1275Support = true;
}
// removeAttrs args [ "grub2" ]
)
+11
View File
@@ -0,0 +1,11 @@
{
grub2,
...
}@args:
grub2.override (
{
zfsSupport = false;
}
// removeAttrs args [ "grub2" ]
)
@@ -0,0 +1,11 @@
{
grub2_pvhgrub_image,
...
}@args:
grub2_pvhgrub_image.override (
{
grubPlatform = "xen";
}
// removeAttrs args [ "grub2_pvhgrub_image" ]
)
+11
View File
@@ -0,0 +1,11 @@
{
grub2,
...
}@args:
grub2.override (
{
xenSupport = true;
}
// removeAttrs args [ "grub2" ]
)
+11
View File
@@ -0,0 +1,11 @@
{
grub2,
...
}@args:
grub2.override (
{
xenPvhSupport = true;
}
// removeAttrs args [ "grub2" ]
)
+8 -4
View File
@@ -7,27 +7,28 @@
python3Packages.buildPythonApplication (finalAttrs: {
pname = "ha-mcp";
version = "6.7.1";
version = "7.3.0";
pyproject = true;
src = fetchFromGitHub {
owner = "homeassistant-ai";
repo = "ha-mcp";
tag = "v${finalAttrs.version}";
hash = "sha256-CQbjPEtCos0Fi6aAaIWSRMCUQKmjYviYkvJZzbCZg6Y=";
hash = "sha256-boWqv8lSN/UiqSRhVBgbucX+RC6q14Oa4WzkJPeZzVw=";
};
build-system = with python3Packages; [
setuptools
];
pythonRelaxDeps = true;
dependencies =
with python3Packages;
[
cryptography
fastmcp
httpx
jq
pydantic
python-dotenv
truststore
@@ -39,7 +40,10 @@ python3Packages.buildPythonApplication (finalAttrs: {
doCheck = false;
passthru.updateScript = nix-update-script {
extraArgs = [ "--version-regex=^v([0-9]+\\.[0-9]+\\.[0-9]+)$" ];
extraArgs = [
"--use-github-releases"
"--version-regex=^v([0-9]+\\.[0-9]+\\.[0-9]+)$"
];
};
pythonImportsCheck = [ "ha_mcp" ];
+2 -2
View File
@@ -8,10 +8,10 @@
}:
stdenv.mkDerivation (finalAttrs: {
pname = "halo";
version = "2.23.1";
version = "2.24.0";
src = fetchurl {
url = "https://github.com/halo-dev/halo/releases/download/v${finalAttrs.version}/halo-${finalAttrs.version}.jar";
hash = "sha256-oU3MdmHnpf0TOwdEJb8UD2LIqEJ2BQ0puMIs1BBmA2M=";
hash = "sha256-71br2gG8vl3EyvC+AYzqJOtgHnhdEmcRAjXSXXXqI5s=";
};
nativeBuildInputs = [
+1 -1
View File
@@ -51,7 +51,7 @@ rustPlatform.buildRustPackage (finalAttrs: {
meta = {
description = "Matrix bot which can generate \"This Week in X\" like blog posts ";
homepage = "https://github.com/haecker-felix/hebbot";
changelog = "https://github.com/haecker-felix/hebbot/releases/tag/v${finalAttrs.version}";
changelog = "https://github.com/haecker-felix/hebbot/releases/tag/v2.1";
license = with lib.licenses; [ agpl3Only ];
mainProgram = "hebbot";
maintainers = with lib.maintainers; [ a-kenji ];
+3 -3
View File
@@ -6,16 +6,16 @@
}:
buildGoModule (finalAttrs: {
pname = "hysteria";
version = "2.8.1";
version = "2.8.2";
src = fetchFromGitHub {
owner = "apernet";
repo = "hysteria";
rev = "app/v${finalAttrs.version}";
hash = "sha256-KxCf9btvEbwP+oWL6A6rWpQsRJPifohFLDIdr+0XwzM=";
hash = "sha256-HgZVwaHL5q8aOxHhVt6RaHaBxoj83ujHaqLemQkLRUM=";
};
vendorHash = "sha256-NXBxrKptXTZzEXZ5hYHtC3wbFIYgL9avJay6DJHRMLU=";
vendorHash = "sha256-oHxnawchsHU/M1PZ0zXR5luopso1FptXi+PL5pNgdj0=";
proxyVendor = true;
ldflags =
+1 -1
View File
@@ -51,7 +51,7 @@ python3Packages.buildPythonApplication (finalAttrs: {
meta = {
description = "Run pre-commit.com before `jj git push`";
homepage = "https://github.com/acarapetis/jj-pre-push";
changelog = "https://github.com/acarapetis/jj-pre-push/releases/tag/v${finalAttrs.src.tag}";
changelog = "https://github.com/acarapetis/jj-pre-push/releases/tag/${finalAttrs.src.tag}";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ xanderio ];
mainProgram = "jj-pre-push";
+50
View File
@@ -0,0 +1,50 @@
{
lib,
buildGoModule,
fetchFromGitHub,
makeWrapper,
prettier,
bun,
nodejs,
}:
buildGoModule (finalAttrs: {
pname = "jxscout";
version = "0.9.4";
src = fetchFromGitHub {
owner = "francisconeves97";
repo = "jxscout";
tag = "v${finalAttrs.version}";
hash = "sha256-DvvhcnjBHRHUEW5mWHLa7ufC+7yzYwKKOV79Syk5zME=";
};
subPackages = [ "cmd/jxscout" ];
vendorHash = null;
nativeBuildInputs = [ makeWrapper ];
doCheck = true;
postInstall = ''
wrapProgram $out/bin/jxscout --prefix PATH : ${
lib.makeBinPath [
prettier
bun
nodejs
]
}
'';
meta = {
description = "jxscout superpowers JavaScript analysis for security researchers (free version)";
homepage = "https://jxscout.app/";
downloadPage = "https://github.com/francisconeves97/jxscout";
changelog = "https://github.com/francisconeves97/jxscout/releases/tag/v${finalAttrs.version}";
license = lib.licenses.gpl3Plus;
mainProgram = "jxscout";
maintainers = with lib.maintainers; [ katok ];
platforms = lib.platforms.linux ++ lib.platforms.darwin ++ lib.platforms.windows;
};
})
+2 -2
View File
@@ -36,11 +36,11 @@ let
# TODO: we could cut the `let` short here, but it would de-indent everything.
unwrapped = stdenv.mkDerivation (finalAttrs: {
pname = "knot-resolver_6";
version = "6.2.0";
version = "6.3.0";
src = fetchurl {
url = "https://secure.nic.cz/files/knot-resolver/knot-resolver-${finalAttrs.version}.tar.xz";
hash = "sha256-tEYzvIQxgMC8fHfPexX+VxJDrpkrTdt0r97kz6gDcBs=";
hash = "sha256-uHMGGX90NrSQecYzNkvF33GjkyNvsl6fzn0ESAvHUY4=";
};
outputs = [
+5 -3
View File
@@ -9,6 +9,7 @@
clinfo,
gdk-pixbuf,
gtk4,
libadwaita,
libdrm,
ocl-icd,
vulkan-loader,
@@ -24,16 +25,16 @@
rustPlatform.buildRustPackage (finalAttrs: {
pname = "lact";
version = "0.8.4";
version = "0.9.0";
src = fetchFromGitHub {
owner = "ilya-zlobintsev";
repo = "LACT";
tag = "v${finalAttrs.version}";
hash = "sha256-5z4IAiApUjlsSL0EX1PQH6rceeQxAD8f3CKmYO2x8gQ=";
hash = "sha256-c5GJf8AYgaAN3O6AVSEbJybEYb6lSHf7R24/1PKYhyM=";
};
cargoHash = "sha256-mCmAj9yLei0ZNtsBh+YeVlCmbHyT69LIHFnwbAk+Ido=";
cargoHash = "sha256-Y+XdCmaDXdP7x22bYm//Ov7+IzlCr8GpFOgCXGFCfbA=";
nativeBuildInputs = [
pkg-config
@@ -45,6 +46,7 @@ rustPlatform.buildRustPackage (finalAttrs: {
buildInputs = [
gdk-pixbuf
gtk4
libadwaita
libdrm
ocl-icd
vulkan-loader
+1 -1
View File
@@ -30,7 +30,7 @@ buildGoModule rec {
meta = {
description = "Tool to detect and remediate misconfigurations and security risks of GitHub assets";
homepage = "https://github.com/Legit-Labs/legitify";
changelog = "https://github.com/Legit-Labs/legitify/releases/tag/v${src.tag}";
changelog = "https://github.com/Legit-Labs/legitify/releases/tag/${src.tag}";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ fab ];
mainProgram = "legitify";
@@ -7,13 +7,13 @@
stdenvNoCC.mkDerivation {
pname = "libretro-shaders-slang";
version = "0-unstable-2026-04-17";
version = "0-unstable-2026-04-26";
src = fetchFromGitHub {
owner = "libretro";
repo = "slang-shaders";
rev = "12b0869495c1ea8238b53179ec33888205f6800f";
hash = "sha256-9b/c+DCmy61Wsy70MU5efNhPKQa5C03P1eZZPwJDNvA=";
rev = "cc71b5eff24a962bd055a92d2032f806635fdf97";
hash = "sha256-PeG6H5XArKdptbSicMgXPFtnrkglmkwZieGKSr0aPaQ=";
};
dontConfigure = true;
+3 -3
View File
@@ -10,16 +10,16 @@
buildNpmPackage (finalAttrs: {
pname = "liteparse";
version = "1.4.6";
version = "1.5.2";
src = fetchFromGitHub {
owner = "run-llama";
repo = "liteparse";
tag = "v${finalAttrs.version}";
hash = "sha256-GUtqJsmAOrbxLc/aAIre95QD6aaFsj5ClqZfo7jdwB4=";
hash = "sha256-e3c8ak4kww8vQDfYT8S9m7Tv7vnBiox2qaI73yUb23U=";
};
npmDepsHash = "sha256-Wz46n7BbubC3Cq1CHOHM2q/dVOvOVNQTloHZfkAwzpg=";
npmDepsHash = "sha256-KhtwPl1J9ZZMT9xT5bQJjPa3fYTvi9oRnxijCm0o+2c=";
npmBuildScript = "build";
nativeBuildInputs = [ makeBinaryWrapper ];

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