diff --git a/doc/redirects.json b/doc/redirects.json index 732efd15fd07..d38068cbbd9a 100644 --- a/doc/redirects.json +++ b/doc/redirects.json @@ -1581,6 +1581,9 @@ "lib.sourceTypes.binaryBytecode": [ "index.html#lib.sourceTypes.binaryBytecode" ], + "lib.sourceTypes.obfuscatedCode": [ + "index.html#lib.sourceTypes.obfuscatedCode" + ], "chap-passthru": [ "index.html#chap-passthru" ], diff --git a/doc/stdenv/meta.chapter.md b/doc/stdenv/meta.chapter.md index fc53dbe37baf..1e1e190b3eda 100644 --- a/doc/stdenv/meta.chapter.md +++ b/doc/stdenv/meta.chapter.md @@ -258,6 +258,10 @@ Code to be executed on a peripheral device or embedded controller, built by a th Code to run on a VM interpreter or JIT compiled into bytecode by a third party. This includes packages which download Java `.jar` files from another source. +### `lib.sourceTypes.obfuscatedCode` {#lib.sourceTypes.obfuscatedCode} + +Code which is intentionally obfuscated by a third party, for example by using a code obfuscator or by being distributed in an obfuscated form. + ## Software identifiers {#sec-meta-identifiers} Package's `meta.identifiers` attribute specifies information about software identifiers associated with this package. Software identifiers are used, for example: diff --git a/lib/source-types.nix b/lib/source-types.nix index b055e5d1b656..c9b89a813678 100644 --- a/lib/source-types.nix +++ b/lib/source-types.nix @@ -17,4 +17,6 @@ lib.mapAttrs (tname: tset: defaultSourceType tname // tset) { binaryBytecode = { }; binaryFirmware = { }; + + obfuscatedCode = { }; } diff --git a/maintainers/github-teams.json b/maintainers/github-teams.json index 7cbe9c27dd07..29f5be17af91 100644 --- a/maintainers/github-teams.json +++ b/maintainers/github-teams.json @@ -64,7 +64,6 @@ "ankhers": 750786, "gleber": 33185, "minijackson": 1200507, - "savtrip": 42227195, "yurrriq": 1866448 }, "name": "Beam" diff --git a/nixos/doc/manual/release-notes/rl-2605.section.md b/nixos/doc/manual/release-notes/rl-2605.section.md index f7bf5bee7c40..44ddf089eacf 100644 --- a/nixos/doc/manual/release-notes/rl-2605.section.md +++ b/nixos/doc/manual/release-notes/rl-2605.section.md @@ -110,6 +110,8 @@ - [Tdarr](https://tdarr.io), Audio/Video Library Analytics & Transcode/Remux Automation. Available as [services.tdarr](#opt-services.tdarr.enable) +- [whois](https://packages.qa.debian.org/w/whois.html), an intelligent WHOIS client. Available as `programs.whois`. + ## Backward Incompatibilities {#sec-release-26.05-incompatibilities} @@ -305,6 +307,8 @@ See . - Support for Bluetooth audio based on `bluez-alsa` has been added to the `hardware.alsa` module. It can be enabled with the new [enableBluetooth](#opt-hardware.alsa.enableBluetooth) option. +- `systemd.network.*` has been updated to support all configuration options from upstream `networkd` version 259. + - `services.openssh` now supports generating host SSH keys by setting `services.openssh.generateHostKeys = true` while leaving `services.openssh.enable` disabled. This is particularly useful for systems that have no need of an SSH daemon but want SSH host keys for other purposes such as using agenix or sops-nix. - IPVLAN interfaces can now be configured through the `networking.ipvlans` option in the networking module. diff --git a/nixos/lib/systemd-network-units.nix b/nixos/lib/systemd-network-units.nix index 72752bd093f1..5d3e9b3c9351 100644 --- a/nixos/lib/systemd-network-units.nix +++ b/nixos/lib/systemd-network-units.nix @@ -41,6 +41,14 @@ in [VLAN] ${attrsToSection def.vlanConfig} '' + + optionalString (def.macvlanConfig != { }) '' + [MACVLAN] + ${attrsToSection def.macvlanConfig} + '' + + optionalString (def.macvtapConfig != { }) '' + [MACVTAP] + ${attrsToSection def.macvtapConfig} + '' + optionalString (def.ipvlanConfig != { }) '' [IPVLAN] ${attrsToSection def.ipvlanConfig} @@ -49,14 +57,50 @@ in [IPVTAP] ${attrsToSection def.ipvtapConfig} '' - + optionalString (def.macvlanConfig != { }) '' - [MACVLAN] - ${attrsToSection def.macvlanConfig} - '' + optionalString (def.vxlanConfig != { }) '' [VXLAN] ${attrsToSection def.vxlanConfig} '' + + optionalString (def.geneveConfig != { }) '' + [GENEVE] + ${attrsToSection def.geneveConfig} + '' + + optionalString (def.hsrConfig != { }) '' + [HSR] + ${attrsToSection def.hsrConfig} + '' + + optionalString (def.bareUDPConfig != { }) '' + [BareUDP] + ${attrsToSection def.bareUDPConfig} + '' + + optionalString (def.l2tpConfig != { }) '' + [L2TP] + ${attrsToSection def.l2tpConfig} + '' + + flip concatMapStrings def.l2tpSessions (x: '' + [L2TPSession] + ${attrsToSection x} + '') + + optionalString (def.macsecConfig != { }) '' + [MACsec] + ${attrsToSection def.macsecConfig} + '' + + optionalString (def.macsecConfig != { }) '' + [MACsec] + ${attrsToSection def.macsecConfig} + '' + + flip concatMapStrings def.macsecReceiveChannels (x: '' + [MACsecReceiveChannel] + ${attrsToSection x} + '') + + flip concatMapStrings def.macsecTransmitAssociations (x: '' + [MACsecTransmitAssociation] + ${attrsToSection x} + '') + + flip concatMapStrings def.macsecReceiveAssociations (x: '' + [MACsecReceiveAssociation] + ${attrsToSection x} + '') + optionalString (def.tunnelConfig != { }) '' [Tunnel] ${attrsToSection def.tunnelConfig} @@ -69,6 +113,10 @@ in [Peer] ${attrsToSection def.peerConfig} '' + + optionalString (def.vxcanConfig != { }) '' + [VXCAN] + ${attrsToSection def.vxcanConfig} + '' + optionalString (def.tunConfig != { }) '' [Tun] ${attrsToSection def.tunConfig} @@ -77,14 +125,6 @@ in [Tap] ${attrsToSection def.tapConfig} '' - + optionalString (def.l2tpConfig != { }) '' - [L2TP] - ${attrsToSection def.l2tpConfig} - '' - + flip concatMapStrings def.l2tpSessions (x: '' - [L2TPSession] - ${attrsToSection x} - '') + optionalString (def.wireguardConfig != { }) '' [WireGuard] ${attrsToSection def.wireguardConfig} @@ -105,14 +145,18 @@ in [VRF] ${attrsToSection def.vrfConfig} '' - + optionalString (def.wlanConfig != { }) '' - [WLAN] - ${attrsToSection def.wlanConfig} - '' + optionalString (def.batmanAdvancedConfig != { }) '' [BatmanAdvanced] ${attrsToSection def.batmanAdvancedConfig} '' + + optionalString (def.ipoibConfig != { }) '' + [IPoIB] + ${attrsToSection def.ipoibConfig} + '' + + optionalString (def.wlanConfig != { }) '' + [WLAN] + ${attrsToSection def.wlanConfig} + '' + def.extraConfig; networkToUnit = @@ -122,6 +166,10 @@ in [Link] ${attrsToSection def.linkConfig} '' + + optionalString (def.sriovConfig != { }) '' + [SR-IOV] + ${attrsToSection def.sriovConfig} + '' + '' [Network] '' @@ -147,9 +195,6 @@ in + optionalString (def.vrf != [ ]) '' ${concatStringsSep "\n" (map (s: "VRF=${s}") def.vrf)} '' - + optionalString (def.vlan != [ ]) '' - ${concatStringsSep "\n" (map (s: "VLAN=${s}") def.vlan)} - '' + optionalString (def.macvlan != [ ]) '' ${concatStringsSep "\n" (map (s: "MACVLAN=${s}") def.macvlan)} '' @@ -159,12 +204,15 @@ in + optionalString (def.macvtap != [ ]) '' ${concatStringsSep "\n" (map (s: "MACVTAP=${s}") def.macvtap)} '' - + optionalString (def.vxlan != [ ]) '' - ${concatStringsSep "\n" (map (s: "VXLAN=${s}") def.vxlan)} - '' + optionalString (def.tunnel != [ ]) '' ${concatStringsSep "\n" (map (s: "Tunnel=${s}") def.tunnel)} '' + + optionalString (def.vlan != [ ]) '' + ${concatStringsSep "\n" (map (s: "VLAN=${s}") def.vlan)} + '' + + optionalString (def.vxlan != [ ]) '' + ${concatStringsSep "\n" (map (s: "VXLAN=${s}") def.vxlan)} + '' + optionalString (def.xfrm != [ ]) '' ${concatStringsSep "\n" (map (s: "Xfrm=${s}") def.xfrm)} '' @@ -173,10 +221,22 @@ in [Address] ${attrsToSection x} '') + + flip concatMapStrings def.neighbors (x: '' + [Neighbor] + ${attrsToSection x} + '') + + flip concatMapStrings def.ipv6AddressLabels (x: '' + [IPv6AddressLabel] + ${attrsToSection x} + '') + flip concatMapStrings def.routingPolicyRules (x: '' [RoutingPolicyRule] ${attrsToSection x} '') + + flip concatMapStrings def.nextHops (x: '' + [NextHop] + ${attrsToSection x} + '') + flip concatMapStrings def.routes (x: '' [Route] ${attrsToSection x} @@ -201,14 +261,14 @@ in [DHCPServer] ${attrsToSection def.dhcpServerConfig} '' + + flip concatMapStrings def.dhcpServerStaticLeases (x: '' + [DHCPServerStaticLease] + ${attrsToSection x} + '') + optionalString (def.ipv6SendRAConfig != { }) '' [IPv6SendRA] ${attrsToSection def.ipv6SendRAConfig} '' - + flip concatMapStrings def.ipv6PREF64Prefixes (x: '' - [IPv6PREF64Prefix] - ${attrsToSection x} - '') + flip concatMapStrings def.ipv6Prefixes (x: '' [IPv6Prefix] ${attrsToSection x} @@ -217,8 +277,8 @@ in [IPv6RoutePrefix] ${attrsToSection x} '') - + flip concatMapStrings def.dhcpServerStaticLeases (x: '' - [DHCPServerStaticLease] + + flip concatMapStrings def.ipv6PREF64Prefixes (x: '' + [IPv6PREF64Prefix] ${attrsToSection x} '') + optionalString (def.bridgeConfig != { }) '' @@ -333,6 +393,14 @@ in [HierarchyTokenBucketClass] ${attrsToSection def.hierarchyTokenBucketClassConfig} '' + + optionalString (def.classfulMultiQueueingConfig != { }) '' + [ClassfulMultiQueueing] + ${attrsToSection def.classfulMultiQueueingConfig} + '' + + optionalString (def.bandMultiQueueingConfig != { }) '' + [BandMultiQueueing] + ${attrsToSection def.bandMultiQueueingConfig} + '' + optionalString (def.heavyHitterFilterConfig != { }) '' [HeavyHitterFilter] ${attrsToSection def.heavyHitterFilterConfig} diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index 5f6ca7c525d9..ab0b67fe0fc3 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -357,6 +357,7 @@ ./programs/wayland/wayfire.nix ./programs/wayland/wayvnc.nix ./programs/weylus.nix + ./programs/whois.nix ./programs/winbox.nix ./programs/wireshark.nix ./programs/wshowkeys.nix diff --git a/nixos/modules/programs/whois.nix b/nixos/modules/programs/whois.nix new file mode 100644 index 000000000000..e072dcf225fd --- /dev/null +++ b/nixos/modules/programs/whois.nix @@ -0,0 +1,89 @@ +{ + config, + lib, + pkgs, + ... +}: + +let + cfg = config.programs.whois; + + configText = + lib.concatStringsSep "\n" ( + [ + "# Generated by NixOS." + "# See whois.conf(5) for the file format." + ] + ++ map (entry: "${entry.pattern} ${entry.server}") cfg.settings + ) + + "\n"; +in + +{ + options.programs.whois = { + enable = lib.mkEnableOption "whois, an intelligent WHOIS client"; + + package = lib.mkPackageOption pkgs "whois" { }; + + settings = lib.mkOption { + type = lib.types.listOf ( + lib.types.submodule { + options = { + pattern = lib.mkOption { + type = lib.types.str; + example = "\\.dn42$"; + description = '' + Case-insensitive extended regular expression used to match the + WHOIS object identifier. + ''; + }; + + server = lib.mkOption { + type = lib.types.str; + example = "whois.dn42"; + description = '' + WHOIS server to use when {option}`pattern` matches. + ''; + }; + }; + } + ); + default = [ ]; + example = lib.literalExpression '' + [ + { + pattern = "\\.dn42$"; + server = "whois.dn42"; + } + { + pattern = "\\-DN42$"; + server = "whois.dn42"; + } + { + pattern = "^as424242[0-9]{4}$"; + server = "whois.dn42"; + } + { + pattern = "^172\\.2[0-3]\\.[0-9]{1,3}\\.[0-9]{1,3}(/(1[56789]|2[0-9]|3[012]))?$"; + server = "whois.dn42"; + } + ] + ''; + description = '' + WHOIS configuration entries written to {file}`/etc/whois.conf`. + + Entries are written in the declared order, which matters when multiple + patterns may match the same query. + ''; + }; + + }; + + config = lib.mkIf cfg.enable { + environment.systemPackages = [ cfg.package ]; + + environment.etc."whois.conf".text = configText; + }; + + meta.maintainers = with lib.maintainers; [ Cryolitia ]; +} diff --git a/nixos/modules/services/security/kanidm.nix b/nixos/modules/services/security/kanidm.nix index 47e9fd80e59a..d21352e22d9e 100644 --- a/nixos/modules/services/security/kanidm.nix +++ b/nixos/modules/services/security/kanidm.nix @@ -67,12 +67,20 @@ let # Merge bind mount paths and remove paths where a prefix is already mounted. # This makes sure that if e.g. the tls_chain is in the nix store and /nix/store is already in the mount # paths, no new bind mount is added. Adding subpaths caused problems on ofborg. - hasPrefixInList = list: newPath: any (path: hasPrefix (toString path) (toString newPath)) list; + hasDirPrefix = + prefix: path: + let + normalizedDir = builtins.match "(.*[^/])/*" (toString prefix); + normalizedPrefix = + (if normalizedDir != null then builtins.head normalizedDir else toString prefix) + "/"; + in + hasPrefix normalizedPrefix (toString path); + hasPrefixInList = list: newPath: any (path: hasDirPrefix path newPath) list; mergePaths = foldl' ( merged: newPath: let - # If the new path is a prefix to some existing path, we need to filter it out - filteredPaths = filter (p: !hasPrefix (toString newPath) (toString p)) merged; + # If the new path is a prefix to some existing path, we need to filter it out. We make sure the prefix is a directory. + filteredPaths = filter (p: !hasDirPrefix newPath p) merged; # If a prefix of the new path is already in the list, do not add it filteredNew = optional (!hasPrefixInList filteredPaths newPath) newPath; in diff --git a/nixos/modules/system/boot/networkd.nix b/nixos/modules/system/boot/networkd.nix index 9f186c5c5134..eb2dd7fb2807 100644 --- a/nixos/modules/system/boot/networkd.nix +++ b/nixos/modules/system/boot/networkd.nix @@ -1,7 +1,6 @@ { config, lib, - pkgs, utils, ... }: @@ -11,6 +10,9 @@ with utils.systemdUtils.lib; with utils.systemdUtils.network.units; with lib; +# When updating this file please use the same ording of options/sections as +# in the man pages / documentation. This makes future updates easier. + let check = { @@ -24,9 +26,9 @@ let "ManageForeignRoutes" "ManageForeignNextHops" "RouteTable" - "IPv6PrivacyExtensions" "IPv4Forwarding" "IPv6Forwarding" + "IPv6PrivacyExtensions" "UseDomains" ]) (assertValueOneOf "SpeedMeter" boolValues) @@ -46,24 +48,52 @@ let (assertValueOneOf "UseDomains" (boolValues ++ [ "route" ])) ]; + sectionIPv6AcceptRA = checkUnitConfig "IPv6AcceptRA" [ + (assertOnlyFields [ + "UseDomains" + ]) + (assertValueOneOf "UseDomains" (boolValues ++ [ "route" ])) + ]; + + sectionIPv6AddressLabel = checkUnitConfig "IPv6AddressLabel" [ + (assertOnlyFields [ + "Name" + "Prefix" + ]) + (assertHasField "Label") + (assertHasField "Prefix") + (assertRange "Label" 1 4294967295) + ]; + sectionDHCPv4 = checkUnitConfig "DHCPv4" [ (assertOnlyFields [ "ClientIdentifier" "DUIDType" "DUIDRawData" + "UseDomains" ]) (assertValueOneOf "ClientIdentifier" [ "mac" "duid" "duid-only" ]) + (assertValueOneOf "UseDomains" (boolValues ++ [ "route" ])) ]; sectionDHCPv6 = checkUnitConfig "DHCPv6" [ (assertOnlyFields [ "DUIDType" "DUIDRawData" + "UseDomains" ]) + (assertValueOneOf "UseDomains" (boolValues ++ [ "route" ])) + ]; + + sectionDHCPServer = checkUnitConfig "DHCPServer" [ + (assertOnlyFields [ + "PersistLeases" + ]) + (assertValueOneOf "PersistLeases" (boolValues ++ [ "runtime" ])) ]; }; @@ -72,6 +102,9 @@ let sectionLink = checkUnitConfig "Link" [ (assertOnlyFields [ "Description" + "Property" + "ImportProperty" + "UnsetProperty" "Alias" "MACAddressPolicy" "MACAddress" @@ -79,6 +112,9 @@ let "Name" "AlternativeNamesPolicy" "AlternativeName" + "TransmitQueues" + "ReceiveQueues" + "TransmitQueueLength" "MTUBytes" "BitsPerSecond" "Duplex" @@ -100,6 +136,7 @@ let "ReceiveVLANCTAGHardwareAcceleration" "TransmitVLANCTAGHardwareAcceleration" "ReceiveVLANCTAGFilter" + "TransmitVLANSTAGHardwareAcceleration" "NTupleFilter" "ReceiveFCS" "ReceiveAll" @@ -143,12 +180,6 @@ let "StatisticsBlockCoalesceSec" "MDI" "SR-IOVVirtualFunctions" - "ReceiveQueues" - "TransmitQueues" - "TransmitQueueLength" - "RxFlowControl" - "TxFlowControl" - "AutoNegotiationFlowControl" ]) (assertValueOneOf "MACAddressPolicy" [ "persistent" @@ -156,6 +187,9 @@ let "none" ]) (assertMacAddress "MACAddress") + (assertRange "ReceiveQueues" 1 16384) + (assertRange "TransmitQueues" 1 16384) + (assertRange "TransmitQueueLength" 1 4294967294) (assertByteFormat "MTUBytes") (assertByteFormat "BitsPerSecond") (assertValueOneOf "Duplex" [ @@ -184,11 +218,17 @@ let (assertValueOneOf "TCPSegmentationOffload" boolValues) (assertValueOneOf "TCP6SegmentationOffload" boolValues) (assertValueOneOf "GenericSegmentationOffload" boolValues) + (assertValueOneOf "PartialGenericSegmentationOffload" boolValues) (assertValueOneOf "GenericReceiveOffload" boolValues) + (assertValueOneOf "GenericReceiveOffloadHardware" boolValues) (assertValueOneOf "LargeReceiveOffload" boolValues) - (assertValueOneOf "RxFlowControl" boolValues) - (assertValueOneOf "TxFlowControl" boolValues) - (assertValueOneOf "AutoNegotiationFlowControl" boolValues) + (assertValueOneOf "ReceiveVLANCTAGHardwareAcceleration" boolValues) + (assertValueOneOf "TransmitVLANCTAGHardwareAcceleration" boolValues) + (assertValueOneOf "ReceiveVLANCTAGFilter" boolValues) + (assertValueOneOf "TransmitVLANSTAGHardwareAcceleration" boolValues) + (assertValueOneOf "NTupleFilter" boolValues) + (assertValueOneOf "ReceiveFCS" boolValues) + (assertValueOneOf "ReceiveAll" boolValues) (assertInt "RxChannels") (assertRange "RxChannels" 1 4294967295) (assertInt "TxChannels") @@ -199,10 +239,79 @@ let (assertRange "CombinedChannels" 1 4294967295) (assertInt "RxBufferSize") (assertInt "TxBufferSize") - (assertRange "ReceiveQueues" 1 16384) - (assertRange "TransmitQueues" 1 16384) - (assertRange "TransmitQueueLength" 1 4294967294) + (assertRangeOrOneOf "RxBufferSize" 0 4294967295 [ "max" ]) + (assertRangeOrOneOf "RxMiniBufferSize" 0 4294967295 [ "max" ]) + (assertRangeOrOneOf "RxJumboBufferSize" 0 4294967295 [ "max" ]) + (assertRangeOrOneOf "TxBufferSize" 0 4294967295 [ "max" ]) + (assertValueOneOf "RxFlowControl" boolValues) + (assertValueOneOf "TxFlowControl" boolValues) + (assertValueOneOf "AutoNegotiationFlowControl" boolValues) + (assertRange "GenericSegmentOffloadMaxBytes" 1 65536) + (assertRange "GenericSegmentOffloadMaxSegments" 1 65536) + (assertValueOneOf "UseAdaptiveRxCoalesce" boolValues) + (assertValueOneOf "UseAdaptiveTxCoalesce" boolValues) + (assertInt "RxMaxCoalescedFrames") + (assertInt "RxMaxCoalescedIrqFrames") + (assertInt "RxMaxCoalescedLowFrames") + (assertInt "RxMaxCoalescedHighFrames") + (assertInt "TxMaxCoalescedFrames") + (assertInt "TxMaxCoalescedIrqFrames") + (assertInt "TxMaxCoalescedLowFrames") + (assertInt "TxMaxCoalescedHighFrames") + (assertInt "CoalescePacketRateLow") + (assertInt "CoalescePacketRateHigh") + (assertInt "CoalescePacketRateSampleIntervalSec") + (assertRange "StatisticsBlockCoalesceSec" 1 4294967295) + (assertValueOneOf "MDI" [ + "straight" + "mdi" + "crossover" + "mdi-x" + "mdix" + "auto" + ]) + (assertRange "SR-IOVVirtualFunctions" 0 2147483647) ]; + + sectionSR-IOV = checkUnitConfig "SR-IOV" [ + (assertOnlyFields [ + "VirtualFunction" + "VLANId" + "QualityOfService" + "VLANProtocol" + "MACSpoofCheck" + "QueryReceiveSideScaling" + "Trust" + "LinkState" + "MACAddress" + ]) + (assertHasField "VirtualFunction") + (assertRange "VirtualFunction" 0 2147483646) + (assertRange "VLANId" 1 4095) + (assertRange "QualityOfService" 1 4294967294) + (assertValueOneOf "VLANProtocol" [ + "802.1Q" + "802.1ad" + ]) + (assertValueOneOf "MACSpoofCheck" boolValues) + (assertValueOneOf "QueryReceiveSideScaling" boolValues) + (assertValueOneOf "Trust" boolValues) + (assertValueOneOf "LinkState" (boolValues ++ [ "auto" ])) + (assertMacAddress "MACAddress") + ]; + + sectionEnergyEfficientEthernet = checkUnitConfig "EnergyEfficientEthernet" [ + (assertOnlyFields [ + "Enable" + "TxLowPowerIdle" + "TxLowPowerIdleSec" + "LinkMode" + ]) + (assertValueOneOf "Enable" boolValues) + (assertValueOneOf "TxLowPowerIdle" boolValues) + (assertInt "TxLowPowerIdleSec") + ]; + }; netdev = @@ -223,6 +332,25 @@ let (assertValueOneOf "KeepCarrier" boolValues) ]; + # See https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html#%5BMACVLAN%5D%20Section%20Options + macVlanVtapChecks = [ + (assertOnlyFields [ + "Mode" + "SourceMACAddress" + "BroadcastMulticastQueueLength" + "BroadcastQueueThreshold" + ]) + (assertValueOneOf "Mode" [ + "private" + "vepa" + "bridge" + "passthru" + "source" + ]) + (assertRange "BroadcastMulticastQueueLength" 0 4294967294) + (assertRangeOrOneOf "BroadcastQueueThreshold" 0 2147483647 [ "no" ]) + ]; + # See https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html#%5BIPVTAP%5D%20Section%20Options ipVlanVtapChecks = [ (assertOnlyFields [ @@ -277,19 +405,21 @@ let "vti6" "vxlan" "geneve" + "hsr" "l2tp" "macsec" - "wlan" "vrf" "vcan" "vxcan" "wireguard" - "netdevsim" "nlmon" "fou" "xfrm" "ifb" + "bareudp" "batadv" + "ipoib" + "wlan" ]) (assertByteFormat "MTUBytes") (assertNetdevMacAddress "MACAddress") @@ -310,6 +440,8 @@ let "VLANProtocol" "STP" "MulticastIGMPVersion" + "FDBMaxLearned" + "LinkLocalLearning" ]) (assertInt "HelloTimeSec") (assertInt "MaxAgeSec") @@ -330,6 +462,8 @@ let 2 3 ]) + (assertInt "FDBMaxLearned") + (assertValueOneOf "LinkLocalLearning" boolValues) ]; sectionVLAN = checkUnitConfig "VLAN" [ @@ -355,22 +489,14 @@ let (assertValueOneOf "ReorderHeader" boolValues) ]; + sectionMACVLAN = checkUnitConfig "MACVLAN" macVlanVtapChecks; + + sectionMACVTAP = checkUnitConfig "MACVTAP" macVlanVtapChecks; + sectionIPVLAN = checkUnitConfig "IPVLAN" ipVlanVtapChecks; sectionIPVTAP = checkUnitConfig "IPVTAP" ipVlanVtapChecks; - sectionMACVLAN = checkUnitConfig "MACVLAN" [ - (assertOnlyFields [ - "Mode" - ]) - (assertValueOneOf "Mode" [ - "private" - "vepa" - "bridge" - "passthru" - ]) - ]; - sectionVXLAN = checkUnitConfig "VXLAN" [ (assertOnlyFields [ "VNI" @@ -398,9 +524,12 @@ let "FlowLabel" "IPDoNotFragment" "Independent" + "External" + "VNIFilter" ]) (assertInt "VNI") (assertRange "VNI" 1 16777215) + (assertRange "TTL" 0 255) (assertValueOneOf "MacLearning" boolValues) (assertInt "MaximumFDBEntries") (assertValueOneOf "ReduceARPProxy" boolValues) @@ -418,86 +547,65 @@ let (assertRange "FlowLabel" 0 1048575) (assertValueOneOf "IPDoNotFragment" (boolValues + [ "inherit" ])) (assertValueOneOf "Independent" boolValues) + (assertValueOneOf "External" boolValues) + (assertValueOneOf "VNIFilter" boolValues) ]; - sectionTunnel = checkUnitConfig "Tunnel" [ + sectionGENEVE = checkUnitConfig "GENEVE" [ (assertOnlyFields [ - "Local" + "Id" "Remote" "TOS" "TTL" - "DiscoverPathMTU" - "IgnoreDontFragment" - "IPv6FlowLabel" - "CopyDSCP" - "EncapsulationLimit" - "Key" - "InputKey" - "OutputKey" - "Mode" - "Independent" - "AssignToLoopback" - "AllowLocalRemote" - "FooOverUDP" - "FOUDestinationPort" - "FOUSourcePort" - "Encapsulation" - "IPv6RapidDeploymentPrefix" - "ISATAP" - "SerializeTunneledPackets" - "ERSPANIndex" + "UDPChecksum" + "UDP6ZeroChecksumTx" + "UDP6ZeroChecksumRx" + "DestinationPort" + "FlowLabel" + "IPDoNotFragment" + "InheritInnerProtocol" ]) - (assertInt "TTL") + (assertInt "Id") + (assertRange "Id" 0 16777215) + (assertRange "TOS" 0 255) (assertRange "TTL" 0 255) - (assertValueOneOf "DiscoverPathMTU" boolValues) - (assertValueOneOf "IgnoreDontFragment" boolValues) - (assertValueOneOf "CopyDSCP" boolValues) - (assertValueOneOf "Mode" [ - "ip6ip6" - "ipip6" - "any" - ]) - (assertValueOneOf "Independent" boolValues) - (assertValueOneOf "AssignToLoopback" boolValues) - (assertValueOneOf "AllowLocalRemote" boolValues) - (assertValueOneOf "FooOverUDP" boolValues) - (assertPort "FOUDestinationPort") - (assertPort "FOUSourcePort") - (assertValueOneOf "Encapsulation" [ - "FooOverUDP" - "GenericUDPEncapsulation" - ]) - (assertValueOneOf "ISATAP" boolValues) - (assertValueOneOf "SerializeTunneledPackets" boolValues) - (assertInt "ERSPANIndex") - (assertRange "ERSPANIndex" 1 1048575) + (assertValueOneOf "UDPChecksum" boolValues) + (assertValueOneOf "UDP6ZeroChecksumTx" boolValues) + (assertValueOneOf "UDP6ZeroChecksumRx" boolValues) + (assertPort "DestinationPort") + (assertValueOneOf "IPDoNotFragment" (boolValues + [ "inherit" ])) + (assertValueOneOf "InheritInnerProtocol" boolValues) ]; - sectionFooOverUDP = checkUnitConfig "FooOverUDP" [ + sectionHSR = checkUnitConfig "GENEVE" [ (assertOnlyFields [ - "Port" - "Encapsulation" + "Ports" "Protocol" + "Supervision" ]) - (assertPort "Port") - (assertValueOneOf "Encapsulation" [ - "FooOverUDP" - "GenericUDPEncapsulation" + (assertValueOneOf "Protocol" [ + "hsr" + "prp" ]) + (assertRange "Supervision" 0 255) ]; - sectionPeer = checkUnitConfig "Peer" [ + sectionBareUDP = checkUnitConfig "BareUDP" [ (assertOnlyFields [ - "Name" - "MACAddress" + "DestinationPort" + "EtherType" + "MinSourcePort" ]) - (assertMacAddress "MACAddress") + (assertPort "DestinationPort") + (assertValueOneOf "EtherType" [ + "ipv4" + "ipv6" + "mpls-uc" + "mpls-mc" + ]) + (assertRange "MinSourcePort" 1 65535) ]; - sectionTun = checkUnitConfig "Tun" tunChecks; - - sectionTap = checkUnitConfig "Tap" tunChecks; - sectionL2TP = checkUnitConfig "L2TP" [ (assertOnlyFields [ "TunnelId" @@ -546,6 +654,157 @@ let ]) ]; + sectionMACsec = checkUnitConfig "MACsec" [ + (assertOnlyFields [ + "Port" + "Encrypt" + ]) + (assertRange "Port" 1 65535) + (assertValueOneOf "Encrypt" boolValues) + ]; + + sectionMACsecReceiveChannel = checkUnitConfig "MACsecReceiveChannel" [ + (assertOnlyFields [ + "Port" + "MACAddress" + ]) + (assertRange "Port" 1 65535) + (assertMacAddress "MACAddress") + (assertHasField "Port") + (assertHasField "MACAddress") + ]; + + sectionMACsecTransmitAssociation = checkUnitConfig "MACsecTransmitAssociation" [ + (assertOnlyFields [ + "PacketNumber" + "KeyId" + "Key" + "KeyFile" + "Activate" + "UseForEncoding" + ]) + (assertRange "PacketNumber" 1 4294967295) + (assertRange "KeyId" 0 255) + (assertValueOneOf "Activate" boolValues) + (assertValueOneOf "UseForEncoding" boolValues) + ]; + + sectionMACsecReceiveAssociation = checkUnitConfig "MACsecReceiveAssociation" [ + (assertOnlyFields [ + "Port" + "MACAddress" + "PacketNumber" + "KeyId" + "Key" + "KeyFile" + "Activate" + ]) + (assertRange "Port" 1 65535) + (assertMacAddress "MACAddress") + (assertRange "PacketNumber" 1 4294967295) + (assertRange "KeyId" 0 255) + (assertValueOneOf "Activate" boolValues) + ]; + + sectionTunnel = checkUnitConfig "Tunnel" [ + (assertOnlyFields [ + "External" + "Local" + "Remote" + "TOS" + "TTL" + "DiscoverPathMTU" + "IgnoreDontFragment" + "IPv6FlowLabel" + "CopyDSCP" + "EncapsulationLimit" + "Key" + "InputKey" + "OutputKey" + "Mode" + "Independent" + "AssignToLoopback" + "AllowLocalRemote" + "FooOverUDP" + "FOUDestinationPort" + "FOUSourcePort" + "Encapsulation" + "IPv6RapidDeploymentPrefix" + "ISATAP" + "SerializeTunneledPackets" + "ERSPANVersion" + "ERSPANIndex" + "ERSPANDirection" + "ERSPANHardwareId" + ]) + (assertValueOneOf "External" boolValues) + (assertInt "TTL") + (assertRange "TTL" 0 255) + (assertValueOneOf "DiscoverPathMTU" boolValues) + (assertValueOneOf "IgnoreDontFragment" boolValues) + (assertValueOneOf "CopyDSCP" boolValues) + (assertValueOneOf "Mode" [ + "ip6ip6" + "ipip6" + "any" + ]) + (assertValueOneOf "Independent" boolValues) + (assertValueOneOf "AssignToLoopback" boolValues) + (assertValueOneOf "AllowLocalRemote" boolValues) + (assertValueOneOf "FooOverUDP" boolValues) + (assertPort "FOUDestinationPort") + (assertPort "FOUSourcePort") + (assertValueOneOf "Encapsulation" [ + "FooOverUDP" + "GenericUDPEncapsulation" + ]) + (assertValueOneOf "ISATAP" boolValues) + (assertValueOneOf "SerializeTunneledPackets" boolValues) + (assertRange "ERSPANVersion" 0 2) + (assertInt "ERSPANIndex") + (assertRange "ERSPANIndex" 1 1048575) + (assertValueOneOf "ERSPANDirection" [ + "ingress" + "egress" + ]) + (assertRange "ERSPANHardwareId" 0 63) + ]; + + sectionFooOverUDP = checkUnitConfig "FooOverUDP" [ + (assertOnlyFields [ + "Encapsulation" + "Port" + "PeerPort" + "Protocol" + "Peer" + "Local" + ]) + (assertPort "Port") + (assertValueOneOf "Encapsulation" [ + "FooOverUDP" + "GenericUDPEncapsulation" + ]) + (assertPort "PeerPort") + ]; + + sectionPeer = checkUnitConfig "Peer" [ + (assertOnlyFields [ + "Name" + "MACAddress" + ]) + (assertMacAddress "MACAddress") + ]; + + sectionVXCAN = checkUnitConfig "VXCAN" [ + (assertOnlyFields [ + "Peer" + ]) + ]; + + sectionTun = checkUnitConfig "Tun" tunChecks; + + sectionTap = checkUnitConfig "Tap" tunChecks; + # NOTE Check whether the key starts with an @, in which case it is # interpreted as the name of the credential from which the actual key # shall be read by systemd-creds. @@ -591,6 +850,7 @@ let "TransmitHashPolicy" "LACPTransmitRate" "MIIMonitorSec" + "PeerNotifyDelaySec" "UpDelaySec" "DownDelaySec" "LearnPacketIntervalSec" @@ -610,6 +870,7 @@ let "AllSlavesActive" "DynamicTransmitLoadBalancing" "MinLinks" + "ARPMissedMax" ]) (assertValueOneOf "Mode" [ "balance-rr" @@ -631,6 +892,7 @@ let "slow" "fast" ]) + (assertRange "PeerNotifyDelaySec" 0 300) (assertValueOneOf "AdSelect" [ "stable" "bandwidth" @@ -670,6 +932,8 @@ let (assertValueOneOf "DynamicTransmitLoadBalancing" boolValues) (assertInt "MinLinks") (assertMinimum "MinLinks" 0) + (assertInt "ARPMissedMax") + (assertMinimum "ARPMissedMax" 0) ]; sectionXfrm = checkUnitConfig "Xfrm" [ @@ -690,30 +954,6 @@ let (assertMinimum "Table" 0) ]; - sectionWLAN = checkUnitConfig "WLAN" [ - (assertOnlyFields [ - "PhysicalDevice" # systemd supports both strings ("phy0") and indexes (0) here. - "Type" - "WDS" - ]) - # See https://github.com/systemd/systemd/blob/main/src/basic/linux/nl80211.h#L3382 - (assertValueOneOf "Type" [ - "ad-hoc" - "station" - "ap" - "ap-vlan" - "wds" - "monitor" - "mesh-point" - "p2p-client" - "p2p-go" - "p2p-device" - "ocb" - "nan" - ]) - (assertValueOneOf "WDS" boolValues) - ]; - sectionBatmanAdvanced = checkUnitConfig "BatmanAdvanced" [ (assertOnlyFields [ "GatewayMode" @@ -743,6 +983,43 @@ let "batman-iv" ]) ]; + + sectionIPoIB = checkUnitConfig "IPoIB" [ + (assertOnlyFields [ + "PartitionKey" + "Mode" + "IgnoreUserspaceMulticastGroups" + ]) + (assertValueOneOf "Mode" [ + "datagram" + "connected" + ]) + (assertValueOneOf "IgnoreUserspaceMulticastGroups" boolValues) + ]; + + sectionWLAN = checkUnitConfig "WLAN" [ + (assertOnlyFields [ + "PhysicalDevice" # systemd supports both strings ("phy0") and indexes (0) here. + "Type" + "WDS" + ]) + # See https://github.com/systemd/systemd/blob/main/src/basic/linux/nl80211.h#L3382 + (assertValueOneOf "Type" [ + "ad-hoc" + "station" + "ap" + "ap-vlan" + "wds" + "monitor" + "mesh-point" + "p2p-client" + "p2p-go" + "p2p-device" + "ocb" + "nan" + ]) + (assertValueOneOf "WDS" boolValues) + ]; }; network = { @@ -754,12 +1031,12 @@ let "ARP" "Multicast" "AllMulticast" + "Promiscuous" "Unmanaged" "Group" "RequiredForOnline" "RequiredFamilyForOnline" "ActivationPolicy" - "Promiscuous" ]) (assertMacAddress "MACAddress") (assertByteFormat "MTUBytes") @@ -809,6 +1086,32 @@ let ]) ]; + sectionSR-IOV = checkUnitConfig "SR-IOV" [ + (assertOnlyFields [ + "VirtualFunction" + "VLANId" + "QualityOfService" + "VLANProtocol" + "MACSpoofCheck" + "QueryReceiveSideScaling" + "Trust" + "LinkState" + "MACAddress" + ]) + (assertRange "VirtualFunction" 0 2147483646) + (assertRange "VLANId" 1 4095) + (assertRange "QualityOfService" 1 4294967294) + (assertValueOneOf "VLANProtocol" [ + "802.1Q" + "802.1ad" + ]) + (assertValueOneOf "MACSpoofCheck" boolValues) + (assertValueOneOf "QueryReceiveSideScaling" boolValues) + (assertValueOneOf "Trust" boolValues) + (assertValueOneOf "LinkState" (boolValues ++ [ "auto" ])) + (assertMacAddress "MACAddress") + ]; + sectionNetwork = checkUnitConfig "Network" [ (assertOnlyFields [ "Description" @@ -844,7 +1147,9 @@ let "IPv6DuplicateAddressDetection" "IPv6HopLimit" "IPv6RetransmissionTimeSec" + "IPv4DuplicateAddressDetectionTimeoutSec" "IPv4ReversePathFilter" + "MulticastIGMPVersion" "IPv4AcceptLocal" "IPv4RouteLocalnet" "IPv4ProxyARP" @@ -854,25 +1159,27 @@ let "IPv6SendRA" "DHCPPrefixDelegation" "IPv6MTUBytes" + "MPLSRouting" "KeepMaster" + "BatmanAdvanced" "Bridge" "Bond" "VRF" - "VLAN" + "IPoIB" "IPVLAN" "IPVTAP" + "MACsec" "MACVLAN" "MACVTAP" - "VXLAN" "Tunnel" - "MACsec" + "VLAN" + "VXLAN" + "Xfrm" "ActiveSlave" "PrimarySlave" "ConfigureWithoutCarrier" "IgnoreCarrierLoss" - "Xfrm" "KeepConfiguration" - "BatmanAdvanced" ]) # Note: For DHCP the values both, none, v4, v6 are deprecated (assertValueOneOf "DHCP" ( @@ -888,8 +1195,6 @@ let ++ [ "ipv4" "ipv6" - "fallback" - "ipv4-fallback" ] )) (assertValueOneOf "IPv6LinkLocalAddressGenerationMode" [ @@ -944,6 +1249,12 @@ let "strict" "loose" ]) + (assertValueOneOf "MulticastIGMPVersion" [ + "no" + "v1" + "v2" + "v3" + ]) (assertValueOneOf "IPv4AcceptLocal" boolValues) (assertValueOneOf "IPv4RouteLocalnet" boolValues) (assertValueOneOf "IPv4ProxyARP" boolValues) @@ -952,6 +1263,7 @@ let (assertValueOneOf "IPv6SendRA" boolValues) (assertValueOneOf "DHCPPrefixDelegation" boolValues) (assertByteFormat "IPv6MTUBytes") + (assertValueOneOf "MPLSRouting" boolValues) (assertValueOneOf "KeepMaster" boolValues) (assertValueOneOf "ActiveSlave" boolValues) (assertValueOneOf "PrimarySlave" boolValues) @@ -1003,6 +1315,20 @@ let (assertValueOneOf "AutoJoin" boolValues) ]; + sectionNeighbor = checkUnitConfig "Neighbor" [ + (assertOnlyFields [ + "Address" + "LinkLayerAddress" + ]) + ]; + + sectionIPv6AddressLabel = checkUnitConfig "IPv6AddressLabel" [ + (assertOnlyFields [ + "Label" + "Prefix" + ]) + ]; + sectionRoutingPolicyRule = checkUnitConfigWithLegacyKey "routingPolicyRuleConfig" "RoutingPolicyRule" [ @@ -1013,6 +1339,7 @@ let "FirewallMark" "Table" "Priority" + "GoTo" "IncomingInterface" "OutgoingInterface" "L3MasterDevice" @@ -1023,13 +1350,14 @@ let "Family" "User" "SuppressPrefixLength" - "Type" "SuppressInterfaceGroup" + "Type" ]) (assertInt "TypeOfService") (assertRange "TypeOfService" 0 255) (assertRangeWithOptionalMask "FirewallMark" 1 4294967295) (assertInt "Priority") + (assertRange "GoTo" 1 4294967295) (assertValueOneOf "L3MasterDevice" boolValues) (assertPortOrPortRange "SourcePort") (assertPortOrPortRange "DestinationPort") @@ -1041,14 +1369,32 @@ let ]) (assertInt "SuppressPrefixLength") (assertRange "SuppressPrefixLength" 0 128) + (assertRange "SuppressInterfaceGroup" 0 2147483647) (assertValueOneOf "Type" [ "blackhole" "unreachable" "prohibit" ]) - (assertRange "SuppressInterfaceGroup" 0 2147483647) ]; + sectionNextHop = checkUnitConfig "NextHop" [ + (assertOnlyFields [ + "Id" + "Gateway" + "Family" + "OnLink" + "Blackhole" + "Group" + ]) + (assertRange "Id" 1 4294967295) + (assertValueOneOf "Family" [ + "ipv4" + "ipv6" + ]) + (assertValueOneOf "OnLink" boolValues) + (assertValueOneOf "Blackhole" boolValues) + ]; + sectionRoute = checkUnitConfigWithLegacyKey "routeConfig" "Route" [ (assertOnlyFields [ "Gateway" @@ -1060,16 +1406,19 @@ let "Scope" "PreferredSource" "Table" + "HopLimit" "Protocol" "Type" "InitialCongestionWindow" "InitialAdvertisedReceiveWindow" "QuickAck" "FastOpenNoCookie" - "TTLPropagate" "MTUBytes" - "IPServiceType" + "TCPAdvertisedMaximumSegmentSize" + "TCPCongestionControlAlgorithm" + "TCPRetransmissionTimeoutSec" "MultiPathRoute" + "NextHop" ]) (assertValueOneOf "GatewayOnLink" boolValues) (assertInt "Metric") @@ -1085,6 +1434,7 @@ let "host" "nowhere" ]) + (assertRange "HopLimit" 1 255) (assertValueOneOf "Type" [ "unicast" "local" @@ -1098,146 +1448,182 @@ let "nat" "xresolve" ]) + (assertRange "InitialCongestionWindow" 1 1023) + (assertRange "InitialAdvertisedReceiveWindow" 1 1023) (assertValueOneOf "QuickAck" boolValues) (assertValueOneOf "FastOpenNoCookie" boolValues) - (assertValueOneOf "TTLPropagate" boolValues) (assertByteFormat "MTUBytes") - (assertValueOneOf "IPServiceType" [ - "CS6" - "CS4" - ]) + (assertByteFormat "TCPAdvertisedMaximumSegmentSize") + (assertRange "NextHop" 1 4294967295) ]; sectionDHCPv4 = checkUnitConfig "DHCPv4" [ (assertOnlyFields [ - "UseDNS" - "UseDNR" - "RoutesToDNS" - "UseNTP" - "UseSIP" - "UseMTU" - "Anonymize" + "RequestAddress" "SendHostname" - "UseHostname" "Hostname" - "UseDomains" - "UseGateway" - "UseRoutes" - "UseTimezone" - "IPv6OnlyMode" + "MUDURL" "ClientIdentifier" "VendorClassIdentifier" "UserClass" - "MaxAttempts" "DUIDType" "DUIDRawData" "IAID" - "RequestAddress" - "RequestBroadcast" - "RouteMetric" "RapidCommit" - "RouteTable" - "RouteMTUBytes" - "ListenPort" - "SendRelease" - "SendDecline" - "BlackList" + "Anonymize" "RequestOptions" "SendOption" - "FallbackLeaseLifetimeSec" + "SendVendorOption" + "IPServiceType" + "SocketPriority" + "BOOTP" "Label" + "UseDNS" + "RoutesToDNS" + "UseNTP" + "RoutesToNTP" + "UseSIP" + "UseCaptivePortal" + "UseDNR" + "UseMTU" + "UseHostname" + "UseDomains" + "UseRoutes" + "RouteMetric" + "RouteTable" + "RouteMTUBytes" + "QuickAck" + "InitialCongestionWindow" + "InitialAdvertisedReceiveWindow" + "UseGateway" + "UseTimezone" "Use6RD" + "UnassignedSubnetPolicy" + "IPv6OnlyMode" + "FallbackLeaseLifetimeSec" + "RequestBroadcast" + "MaxAttempts" + "ListenPort" + "ServerPort" + "DenyList" + "AllowList" + "SendRelease" + "SendDecline" "NetLabel" "NFTSet" - "UseCaptivePortal" + "BlackList" # removed ]) - (assertValueOneOf "UseDNS" boolValues) - (assertValueOneOf "UseDNR" boolValues) - (assertValueOneOf "RoutesToDNS" boolValues) - (assertValueOneOf "UseNTP" boolValues) - (assertValueOneOf "UseSIP" boolValues) - (assertValueOneOf "UseMTU" boolValues) - (assertValueOneOf "Anonymize" boolValues) + (assertRemoved "BlackList" "Use DenyList instead") (assertValueOneOf "SendHostname" boolValues) - (assertValueOneOf "UseHostname" boolValues) - (assertValueOneOf "UseDomains" (boolValues ++ [ "route" ])) - (assertValueOneOf "UseGateway" boolValues) - (assertValueOneOf "UseRoutes" boolValues) - (assertValueOneOf "UseTimezone" boolValues) - (assertValueOneOf "IPv6OnlyMode" boolValues) (assertValueOneOf "ClientIdentifier" [ "mac" "duid" - "duid-only" ]) (assertInt "IAID") - (assertValueOneOf "RequestBroadcast" boolValues) - (assertInt "RouteMetric") (assertValueOneOf "RapidCommit" boolValues) - (assertInt "RouteTable") - (assertRange "RouteTable" 0 4294967295) + (assertValueOneOf "Anonymize" boolValues) + (assertValueOneOf "IPServiceType" [ + "none" + "CS6" + "CS4" + ]) + (assertRange "SocketPriority" 0 255) + (assertValueOneOf "BOOTP" boolValues) + (assertValueOneOf "UseDNS" boolValues) + (assertValueOneOf "RoutesToDNS" boolValues) + (assertValueOneOf "UseNTP" boolValues) + (assertValueOneOf "RoutesToNTP" boolValues) + (assertValueOneOf "UseSIP" boolValues) + (assertValueOneOf "UseCaptivePortal" boolValues) + (assertValueOneOf "UseDNR" boolValues) + (assertValueOneOf "UseMTU" boolValues) + (assertValueOneOf "UseHostname" boolValues) + (assertValueOneOf "UseDomains" (boolValues ++ [ "route" ])) + (assertValueOneOf "UseRoutes" boolValues) + (assertInt "RouteMetric") + (assertRange "RouteMetric" 0 4294967295) (assertByteFormat "RouteMTUBytes") - (assertPort "ListenPort") - (assertValueOneOf "SendRelease" boolValues) - (assertValueOneOf "SendDecline" boolValues) + (assertValueOneOf "QuickAck" boolValues) + (assertRange "InitialCongestionWindow" 1 1023) + (assertRange "InitialAdvertisedReceiveWindow" 1 1023) + (assertValueOneOf "UseGateway" boolValues) + (assertValueOneOf "UseTimezone" boolValues) + (assertValueOneOf "Use6RD" boolValues) + (assertValueOneOf "UnassignedSubnetPolicy" [ + "none" + "unreachable" + "prohibit" + "blackhole" + "throw" + ]) + (assertValueOneOf "IPv6OnlyMode" boolValues) (assertValueOneOf "FallbackLeaseLifetimeSec" [ "forever" "infinity" ]) - (assertValueOneOf "Use6RD" boolValues) - (assertValueOneOf "UseCaptivePortal" boolValues) + (assertValueOneOf "RequestBroadcast" boolValues) + (assertPort "ListenPort") + (assertPort "ServerPort") + (assertValueOneOf "SendRelease" boolValues) + (assertValueOneOf "SendDecline" boolValues) ]; sectionDHCPv6 = checkUnitConfig "DHCPv6" [ (assertOnlyFields [ + "MUDURL" + "IAID" + "DUIDType" + "DUIDRawData" + "RequestOptions" + "SendOption" + "SendVendorOption" + "UserClass" + "VendorClass" + "PrefixDelegationHint" + "UnassignedSubnetPolicy" + "RapidCommit" + "SendHostname" + "Hostname" "UseAddress" + "UseCaptivePortal" + "UseDelegatedPrefix" "UseDNS" "UseDNR" "UseNTP" "UseSIP" - "SendHostname" "UseHostname" - "Hostname" "UseDomains" - "RouteMetric" - "RapidCommit" - "MUDURL" - "RequestOptions" - "SendVendorOption" - "PrefixDelegationHint" - "WithoutRA" - "SendOption" - "UserClass" - "VendorClass" - "DUIDType" - "DUIDRawData" - "IAID" - "UseDelegatedPrefix" - "SendRelease" "NetLabel" + "SendRelease" "NFTSet" - "UseCaptivePortal" + "WithoutRA" ]) + (assertInt "IAID") + (assertRange "SendOption" 1 65536) + (assertValueOneOf "UnassignedSubnetPolicy" [ + "none" + "unreachable" + "prohibit" + "blackhole" + "throw" + ]) + (assertValueOneOf "RapidCommit" boolValues) + (assertValueOneOf "SendHostname" boolValues) (assertValueOneOf "UseAddress" boolValues) + (assertValueOneOf "UseCaptivePortal" boolValues) + (assertValueOneOf "UseDelegatedPrefix" boolValues) (assertValueOneOf "UseDNS" boolValues) (assertValueOneOf "UseDNR" boolValues) (assertValueOneOf "UseNTP" boolValues) (assertValueOneOf "UseSIP" boolValues) - (assertValueOneOf "SendHostname" boolValues) (assertValueOneOf "UseHostname" boolValues) (assertValueOneOf "UseDomains" (boolValues ++ [ "route" ])) - (assertInt "RouteMetric") - (assertValueOneOf "RapidCommit" boolValues) + (assertValueOneOf "SendRelease" boolValues) (assertValueOneOf "WithoutRA" [ "no" "solicit" "information-request" ]) - (assertRange "SendOption" 1 65536) - (assertInt "IAID") - (assertValueOneOf "UseDelegatedPrefix" boolValues) - (assertValueOneOf "SendRelease" boolValues) - (assertValueOneOf "UseCaptivePortal" boolValues) ]; sectionDHCPPrefixDelegation = checkUnitConfig "DHCPPrefixDelegation" [ @@ -1256,14 +1642,31 @@ let (assertValueOneOf "Assign" boolValues) (assertValueOneOf "ManageTemporaryAddress" boolValues) (assertRange "RouteMetric" 0 4294967295) + (assertValueOneOf "WithoutRA" [ + "no" + "solicit" + "information-request" + ]) ]; sectionIPv6AcceptRA = checkUnitConfig "IPv6AcceptRA" [ (assertOnlyFields [ + "UseRedirect" + "Token" "UseDNS" "UseDNR" "UseDomains" "RouteTable" + "RouteMetric" + "QuickAck" + "UseMTU" + "UseHopLimit" + "UseReachableTime" + "UseRetransmissionTime" + "UseGateway" + "UseRoutePrefix" + "UseCaptivePortal" + "UsePREF64" "UseAutonomousPrefix" "UseOnLinkPrefix" "RouterDenyList" @@ -1273,36 +1676,27 @@ let "RouteDenyList" "RouteAllowList" "DHCPv6Client" - "RouteMetric" - "UseMTU" - "UseGateway" - "UseRoutePrefix" - "Token" - "UsePREF64" "NetLabel" "NFTSet" - "UseCaptivePortal" - "UseRedirect" - "UseHopLimit" - "UseReachableTime" - "UseRetransmissionTime" ]) + (assertValueOneOf "UseRedirect" boolValues) (assertValueOneOf "UseDNS" boolValues) (assertValueOneOf "UseDNR" boolValues) (assertValueOneOf "UseDomains" (boolValues ++ [ "route" ])) (assertRange "RouteTable" 0 4294967295) - (assertValueOneOf "UseAutonomousPrefix" boolValues) - (assertValueOneOf "UseOnLinkPrefix" boolValues) - (assertValueOneOf "DHCPv6Client" (boolValues ++ [ "always" ])) + (assertRange "RouteMetric" 0 4294967295) + (assertValueOneOf "QuickAck" boolValues) (assertValueOneOf "UseMTU" boolValues) - (assertValueOneOf "UseGateway" boolValues) - (assertValueOneOf "UseRoutePrefix" boolValues) - (assertValueOneOf "UsePREF64" boolValues) - (assertValueOneOf "UseCaptivePortal" boolValues) - (assertValueOneOf "UseRedirect" boolValues) (assertValueOneOf "UseHopLimit" boolValues) (assertValueOneOf "UseReachableTime" boolValues) (assertValueOneOf "UseRetransmissionTime" boolValues) + (assertValueOneOf "UseGateway" boolValues) + (assertValueOneOf "UseRoutePrefix" boolValues) + (assertValueOneOf "UseCaptivePortal" boolValues) + (assertValueOneOf "UsePREF64" boolValues) + (assertValueOneOf "UseAutonomousPrefix" boolValues) + (assertValueOneOf "UseOnLinkPrefix" boolValues) + (assertValueOneOf "DHCPv6Client" (boolValues ++ [ "always" ])) ]; sectionDHCPServer = checkUnitConfig "DHCPServer" [ @@ -1329,17 +1723,21 @@ let "Router" "EmitTimezone" "Timezone" + "EmitDomain" + "Domain" + "BootServerAddress" + "BootServerName" + "BootFilename" + "IPv6OnlyPreferredSec" "SendOption" "SendVendorOption" "BindToInterface" "RelayTarget" "RelayAgentCircuitId" "RelayAgentRemoteId" - "BootServerAddress" - "BootServerName" - "BootFilename" - "IPv6OnlyPreferredSec" + "RapidCommit" "PersistLeases" + "LocalLeaseDomain" ]) (assertInt "PoolOffset") (assertMinimum "PoolOffset" 0) @@ -1353,10 +1751,24 @@ let (assertValueOneOf "EmitLPR" boolValues) (assertValueOneOf "EmitRouter" boolValues) (assertValueOneOf "EmitTimezone" boolValues) + (assertValueOneOf "EmitDomain" boolValues) (assertValueOneOf "BindToInterface" boolValues) + (assertValueOneOf "RapidCommit" boolValues) (assertValueOneOf "PersistLeases" (boolValues ++ [ "runtime" ])) ]; + sectionDHCPServerStaticLease = + checkUnitConfigWithLegacyKey "dhcpServerStaticLeaseConfig" "DHCPServerStaticLease" + [ + (assertOnlyFields [ + "MACAddress" + "Address" + ]) + (assertHasField "MACAddress") + (assertHasField "Address") + (assertMacAddress "MACAddress") + ]; + sectionIPv6SendRA = checkUnitConfig "IPv6SendRA" [ (assertOnlyFields [ "Managed" @@ -1391,14 +1803,6 @@ let (assertInt "HomeAgentPreference") ]; - sectionIPv6PREF64Prefix = checkUnitConfigWithLegacyKey "ipv6PREF64PrefixConfig" "IPv6PREF64Prefix" [ - (assertOnlyFields [ - "Prefix" - "LifetimeSec" - ]) - (assertInt "LifetimeSec") - ]; - sectionIPv6Prefix = checkUnitConfigWithLegacyKey "ipv6PrefixConfig" "IPv6Prefix" [ (assertOnlyFields [ "AddressAutoconfiguration" @@ -1408,32 +1812,37 @@ let "ValidLifetimeSec" "Assign" "Token" + "RouteMetric" ]) (assertValueOneOf "AddressAutoconfiguration" boolValues) (assertValueOneOf "OnLink" boolValues) (assertValueOneOf "Assign" boolValues) + (assertInt "RouteMetric") + (assertRange "RouteMetric" 0 4294967295) ]; sectionIPv6RoutePrefix = checkUnitConfigWithLegacyKey "ipv6RoutePrefixConfig" "IPv6RoutePrefix" [ (assertOnlyFields [ "Route" "LifetimeSec" + "Preference" ]) (assertHasField "Route") (assertInt "LifetimeSec") + (assertValueOneOf "Preference" [ + "high" + "medium" + "low" + ]) ]; - sectionDHCPServerStaticLease = - checkUnitConfigWithLegacyKey "dhcpServerStaticLeaseConfig" "DHCPServerStaticLease" - [ - (assertOnlyFields [ - "MACAddress" - "Address" - ]) - (assertHasField "MACAddress") - (assertHasField "Address") - (assertMacAddress "MACAddress") - ]; + sectionIPv6PREF64Prefix = checkUnitConfigWithLegacyKey "ipv6PREF64PrefixConfig" "IPv6PREF64Prefix" [ + (assertOnlyFields [ + "Prefix" + "LifetimeSec" + ]) + (assertInt "LifetimeSec") + ]; sectionBridge = checkUnitConfig "Bridge" [ (assertOnlyFields [ @@ -1452,6 +1861,9 @@ let "MulticastRouter" "Cost" "Priority" + "Locked" + "MACAuthenticationBypass" + "VLANTunnel" ]) (assertValueOneOf "UnicastFlood" boolValues) (assertValueOneOf "MulticastFlood" boolValues) @@ -1475,6 +1887,9 @@ let (assertRange "Cost" 1 65535) (assertInt "Priority") (assertRange "Priority" 0 63) + (assertValueOneOf "Locked" boolValues) + (assertValueOneOf "MACAuthenticationBypass" boolValues) + (assertValueOneOf "VLANTunnel" boolValues) ]; sectionBridgeFDB = checkUnitConfigWithLegacyKey "bridgeFDBConfig" "BridgeFDB" [ @@ -1715,8 +2130,8 @@ let "FirewallMark" "Wash" "SplitGSO" - "AckFilter" "RTTSec" + "AckFilter" ]) (assertValueOneOf "AutoRateIngress" boolValues) (assertInt "OverheadBytes") @@ -1883,6 +2298,20 @@ let ]) ]; + sectionClassfulMultiQueueing = checkUnitConfig "ClassfulMultiQueueing" [ + (assertOnlyFields [ + "Parent" + "Handle" + ]) + ]; + + sectionBandMultiQueueing = checkUnitConfig "BandMultiQueueing" [ + (assertOnlyFields [ + "Parent" + "Handle" + ]) + ]; + sectionHeavyHitterFilter = checkUnitConfig "HeavyHitterFilter" [ (assertOnlyFields [ "Parent" @@ -2090,6 +2519,31 @@ let ''; }; + macvlanConfig = mkOption { + default = { }; + example = { + Mode = "private"; + }; + type = types.addCheck (types.attrsOf unitOption) check.netdev.sectionMACVLAN; + description = '' + Each attribute in this set specifies an option in the + `[MACVLAN]` section of the unit. See + {manpage}`systemd.netdev(5)` for details. + ''; + }; + + macvtapConfig = mkOption { + default = { }; + example = { + Mode = "private"; + }; + type = types.addCheck (types.attrsOf unitOption) check.netdev.sectionMACVTAP; + description = '' + Each attribute in this set specifies an option in the `[MACVTAP]` section of the unit. + See {manpage}`systemd.netdev(5)` for details. + ''; + }; + ipvlanConfig = mkOption { default = { }; example = { @@ -2116,19 +2570,6 @@ let ''; }; - macvlanConfig = mkOption { - default = { }; - example = { - Mode = "private"; - }; - type = types.addCheck (types.attrsOf unitOption) check.netdev.sectionMACVLAN; - description = '' - Each attribute in this set specifies an option in the - `[MACVLAN]` section of the unit. See - {manpage}`systemd.netdev(5)` for details. - ''; - }; - vxlanConfig = mkOption { default = { }; type = types.addCheck (types.attrsOf unitOption) check.netdev.sectionVXLAN; @@ -2139,6 +2580,149 @@ let ''; }; + geneveConfig = mkOption { + default = { }; + example = { + Id = 1; + }; + type = types.addCheck (types.attrsOf unitOption) check.netdev.sectionGENEVE; + description = '' + Each attribute in this set specifies an option in the + `[GENEVE]` section of the unit. See + {manpage}`systemd.netdev(5)` for details. + ''; + }; + + hsrConfig = mkOption { + default = { }; + example = { + Ports = [ + "eth1" + "eth2" + ]; + }; + type = types.addCheck (types.attrsOf unitOption) check.netdev.sectionHSR; + description = '' + Each attribute in this set specifies an option in the + `[HSR]` section of the unit. See + {manpage}`systemd.netdev(5)` for details. + ''; + }; + + bareUDPConfig = mkOption { + default = { }; + example = { + DestinationPort = 1234; + EtherType = "ipv4"; + }; + type = types.addCheck (types.attrsOf unitOption) check.netdev.sectionBareUDP; + description = '' + Each attribute in this set specifies an option in the + `[BareUDP]` section of the unit. See + {manpage}`systemd.netdev(5)` for details. + ''; + }; + + l2tpConfig = mkOption { + default = { }; + example = { + TunnelId = 10; + PeerTunnelId = 12; + Local = "static"; + Remote = "192.168.30.101"; + EncapsulationType = "ip"; + }; + type = types.addCheck (types.attrsOf unitOption) check.netdev.sectionL2TP; + description = '' + Each attribute in this set specifies an option in the + `[L2TP]` section of the unit. See + {manpage}`systemd.netdev(5)` for details. + ''; + }; + + l2tpSessions = mkOption { + default = [ ]; + example = [ + { + SessionId = 25; + PeerSessionId = 26; + Name = "l2tp-sess"; + } + ]; + type = types.listOf (mkSubsectionType "l2tpSessionConfig" check.netdev.sectionL2TPSession); + description = '' + Each item in this array specifies an option in the + `[L2TPSession]` section of the unit. See + {manpage}`systemd.netdev(5)` for details. + ''; + }; + + macsecConfig = mkOption { + default = { }; + example = { + Port = 1234; + }; + type = types.addCheck (types.attrsOf unitOption) check.netdev.sectionMACsec; + description = '' + Each attribute in this set specifies an option in the + `[MACsec]` section of the unit. See + {manpage}`systemd.netdev(5)` for details. + ''; + }; + + macsecReceiveChannels = mkOption { + default = [ ]; + example = [ + { + Port = 1234; + MACAddress = "ab:cd:de:ef:ab:cd"; + } + ]; + type = types.listOf ( + mkSubsectionType "macsecReceiveConfig" check.netdev.sectionMACsecReceiveChannel + ); + description = '' + Each item in this array specifies an option in the + `[MACsecReceiveChannel]` section of the unit. See + {manpage}`systemd.netdev(5)` for details. + ''; + }; + + macsecTransmitAssociations = mkOption { + default = [ ]; + example = [ + { + Activate = true; + } + ]; + type = types.listOf ( + mkSubsectionType "TransmitAssociationConfig" check.netdev.sectionMACsecTransmitAssociation + ); + description = '' + Each item in this array specifies an option in the + `[MACsecTransmitAssociation]` section of the unit. See + {manpage}`systemd.netdev(5)` for details. + ''; + }; + + macsecReceiveAssociations = mkOption { + default = [ ]; + example = [ + { + Port = 1234; + MACAddress = "ab:cd:de:ef:ab:cd"; + } + ]; + type = types.listOf ( + mkSubsectionType "ReceiveAssociationConfig" check.netdev.sectionMACsecReceiveAssociation + ); + description = '' + Each item in this array specifies an option in the + `[MACsecReceiveAssociation]` section of the unit. See + {manpage}`systemd.netdev(5)` for details. + ''; + }; + tunnelConfig = mkOption { default = { }; example = { @@ -2178,6 +2762,19 @@ let ''; }; + vxcanConfig = mkOption { + default = { }; + example = { + Peer = "vxcanpeer"; + }; + type = types.addCheck (types.attrsOf unitOption) check.netdev.sectionVXCAN; + description = '' + Each attribute in this set specifies an option in the + `[VXCAN]` section of the unit. See + {manpage}`systemd.netdev(5)` for details. + ''; + }; + tunConfig = mkOption { default = { }; example = { @@ -2204,40 +2801,6 @@ let ''; }; - l2tpConfig = mkOption { - default = { }; - example = { - TunnelId = 10; - PeerTunnelId = 12; - Local = "static"; - Remote = "192.168.30.101"; - EncapsulationType = "ip"; - }; - type = types.addCheck (types.attrsOf unitOption) check.netdev.sectionL2TP; - description = '' - Each attribute in this set specifies an option in the - `[L2TP]` section of the unit. See - {manpage}`systemd.netdev(5)` for details. - ''; - }; - - l2tpSessions = mkOption { - default = [ ]; - example = [ - { - SessionId = 25; - PeerSessionId = 26; - Name = "l2tp-sess"; - } - ]; - type = types.listOf (mkSubsectionType "l2tpSessionConfig" check.netdev.sectionL2TPSession); - description = '' - Each item in this array specifies an option in the - `[L2TPSession]` section of the unit. See - {manpage}`systemd.netdev(5)` for details. - ''; - }; - wireguardConfig = mkOption { default = { }; example = { @@ -2319,19 +2882,6 @@ let ''; }; - wlanConfig = mkOption { - default = { }; - example = { - PhysicalDevice = 0; - Type = "station"; - }; - type = types.addCheck (types.attrsOf unitOption) check.netdev.sectionWLAN; - description = '' - Each attribute in this set specifies an option in the `[WLAN]` section of the unit. - See {manpage}`systemd.netdev(5)` for details. - ''; - }; - batmanAdvancedConfig = mkOption { default = { }; example = { @@ -2346,6 +2896,31 @@ let ''; }; + ipoibConfig = mkOption { + default = { }; + example = { + PartitionKey = 1; + }; + type = types.addCheck (types.attrsOf unitOption) check.netdev.sectionIPoIB; + description = '' + Each attribute in this set specifies an option in the `[IPoIB]` section of the unit. + See {manpage}`systemd.netdev(5)` for details. + ''; + }; + + wlanConfig = mkOption { + default = { }; + example = { + PhysicalDevice = 0; + Type = "station"; + }; + type = types.addCheck (types.attrsOf unitOption) check.netdev.sectionWLAN; + description = '' + Each attribute in this set specifies an option in the `[WLAN]` section of the unit. + See {manpage}`systemd.netdev(5)` for details. + ''; + }; + }; networkOptions = commonNetworkOptions // { @@ -2363,6 +2938,20 @@ let ''; }; + sriovConfig = mkOption { + default = { }; + example = { + VirtualFunction = 1; + VLANId = 1; + }; + type = types.addCheck (types.attrsOf unitOption) check.network.sectionSR-IOV; + description = '' + Each attribute in this set specifies an option in the + `[SR-IOV]` section of the unit. See + {manpage}`systemd.network(5)` for details. + ''; + }; + networkConfig = mkOption { default = { }; example = { @@ -2376,6 +2965,91 @@ let ''; }; + addresses = mkOption { + default = [ ]; + example = [ { Address = "192.168.0.100/24"; } ]; + type = types.listOf (mkSubsectionType "addressConfig" check.network.sectionAddress); + description = '' + A list of `[Address]` sections to be added to the unit. See + {manpage}`systemd.network(5)` for details. + ''; + }; + + neighbors = mkOption { + default = [ ]; + example = [ + { + Address = "192.168.0.100/24"; + LinkLayerAddress = "aa:bb:cc:dd:ee:ff"; + } + ]; + type = types.listOf (mkSubsectionType "neighborConfig" check.network.sectionNeighbor); + description = '' + A list of `[Neighbor]` sections to be added to the unit. See + {manpage}`systemd.network(5)` for details. + ''; + }; + + ipv6AddressLabels = mkOption { + default = [ ]; + example = [ + { + Label = 0; + Prefix = "3fff::/20"; + } + ]; + type = types.listOf ( + mkSubsectionType "ipv6AddressLabelConfig" check.network.sectionIPv6AddressLabel + ); + description = '' + A list of `[IPv6AddressLabel]` sections to be added to the unit. See + {manpage}`systemd.network(5)` for details. + ''; + }; + + routingPolicyRules = mkOption { + default = [ ]; + example = [ + { + Table = 10; + IncomingInterface = "eth1"; + Family = "both"; + } + ]; + type = types.listOf ( + mkSubsectionType "routingPolicyRuleConfig" check.network.sectionRoutingPolicyRule + ); + description = '' + A list of routing policy rules sections to be added to the unit. See + {manpage}`systemd.network(5)` for details. + ''; + }; + + nextHops = mkOption { + default = [ ]; + example = [ + { + Id = 10; + Gateway = "192.168.1.1"; + } + ]; + type = types.listOf (mkSubsectionType "nextHopConfig" check.network.sectionNextHop); + description = '' + A list of NextHop sections to be added to the unit. See + {manpage}`systemd.network(5)` for details. + ''; + }; + + routes = mkOption { + default = [ ]; + example = [ { Gateway = "192.168.0.1"; } ]; + type = types.listOf (mkSubsectionType "routeConfig" check.network.sectionRoute); + description = '' + A list of route sections to be added to the unit. See + {manpage}`systemd.network(5)` for details. + ''; + }; + # systemd.network.networks.*.dhcpConfig has been deprecated in favor of ….dhcpV4Config # Produce a nice warning message so users know it is gone. dhcpConfig = mkOption { @@ -2412,13 +3086,6 @@ let ''; }; - dhcpV6PrefixDelegationConfig = mkOption { - visible = false; - apply = - _: - throw "The option `systemd.network.networks..dhcpV6PrefixDelegationConfig` has been renamed to `systemd.network.networks..dhcpPrefixDelegationConfig`."; - }; - dhcpPrefixDelegationConfig = mkOption { default = { }; example = { @@ -2461,6 +3128,30 @@ let ''; }; + dhcpServerStaticLeases = mkOption { + default = [ ]; + example = [ + { + MACAddress = "65:43:4a:5b:d8:5f"; + Address = "192.168.1.42"; + } + ]; + type = types.listOf ( + mkSubsectionType "dhcpServerStaticLeaseConfig" check.network.sectionDHCPServerStaticLease + ); + description = '' + A list of DHCPServerStaticLease sections to be added to the unit. See + {manpage}`systemd.network(5)` for details. + ''; + }; + + dhcpV6PrefixDelegationConfig = mkOption { + visible = false; + apply = + _: + throw "The option `systemd.network.networks..dhcpV6PrefixDelegationConfig` has been renamed to `systemd.network.networks..dhcpPrefixDelegationConfig`."; + }; + # systemd.network.networks.*.ipv6PrefixDelegationConfig has been deprecated # in 247 in favor of systemd.network.networks.*.ipv6SendRAConfig. ipv6PrefixDelegationConfig = mkOption { @@ -2485,35 +3176,6 @@ let ''; }; - ipv6PREF64Prefixes = mkOption { - default = [ ]; - example = [ { Prefix = "64:ff9b::/96"; } ]; - type = types.listOf ( - mkSubsectionType "ipv6PREF64PrefixConfig" check.network.sectionIPv6PREF64Prefix - ); - description = '' - A list of IPv6PREF64Prefix sections to be added to the unit. See - {manpage}`systemd.network(5)` for details. - ''; - }; - - dhcpServerStaticLeases = mkOption { - default = [ ]; - example = [ - { - MACAddress = "65:43:4a:5b:d8:5f"; - Address = "192.168.1.42"; - } - ]; - type = types.listOf ( - mkSubsectionType "dhcpServerStaticLeaseConfig" check.network.sectionDHCPServerStaticLease - ); - description = '' - A list of DHCPServerStaticLease sections to be added to the unit. See - {manpage}`systemd.network(5)` for details. - ''; - }; - ipv6Prefixes = mkOption { default = [ ]; example = [ @@ -2544,6 +3206,18 @@ let ''; }; + ipv6PREF64Prefixes = mkOption { + default = [ ]; + example = [ { Prefix = "64:ff9b::/96"; } ]; + type = types.listOf ( + mkSubsectionType "ipv6PREF64PrefixConfig" check.network.sectionIPv6PREF64Prefix + ); + description = '' + A list of IPv6PREF64Prefix sections to be added to the unit. See + {manpage}`systemd.network(5)` for details. + ''; + }; + bridgeConfig = mkOption { default = { }; example = { @@ -2932,6 +3606,32 @@ let ''; }; + classfulMultiQueueingConfig = mkOption { + default = { }; + example = { + Parent = "root"; + }; + type = types.addCheck (types.attrsOf unitOption) check.network.sectionClassfulMultiQueueing; + description = '' + Each attribute in this set specifies an option in the + `[ClassfulMultiQueueing]` section of the unit. See + {manpage}`systemd.network(5)` for details. + ''; + }; + + bandMultiQueueingConfig = mkOption { + default = { }; + example = { + Parent = "root"; + }; + type = types.addCheck (types.attrsOf unitOption) check.network.sectionBandMultiQueueing; + description = '' + Each attribute in this set specifies an option in the + `[BandMultiQueueing]` section of the unit. See + {manpage}`systemd.network(5)` for details. + ''; + }; + heavyHitterFilterConfig = mkOption { default = { }; example = { @@ -3133,44 +3833,6 @@ let ''; }; - addresses = mkOption { - default = [ ]; - example = [ { Address = "192.168.0.100/24"; } ]; - type = types.listOf (mkSubsectionType "addressConfig" check.network.sectionAddress); - description = '' - A list of address sections to be added to the unit. See - {manpage}`systemd.network(5)` for details. - ''; - }; - - routingPolicyRules = mkOption { - default = [ ]; - example = [ - { - Table = 10; - IncomingInterface = "eth1"; - Family = "both"; - } - ]; - type = types.listOf ( - mkSubsectionType "routingPolicyRuleConfig" check.network.sectionRoutingPolicyRule - ); - description = '' - A list of routing policy rules sections to be added to the unit. See - {manpage}`systemd.network(5)` for details. - ''; - }; - - routes = mkOption { - default = [ ]; - example = [ { Gateway = "192.168.0.1"; } ]; - type = types.listOf (mkSubsectionType "routeConfig" check.network.sectionRoute); - description = '' - A list of route sections to be added to the unit. See - {manpage}`systemd.network(5)` for details. - ''; - }; - }; networkConfig = diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix index 4e11dbced014..cebf186a3bd2 100644 --- a/nixos/tests/all-tests.nix +++ b/nixos/tests/all-tests.nix @@ -1746,6 +1746,7 @@ in wg-access-server = runTest ./wg-access-server.nix; whisparr = runTest ./whisparr.nix; whoami = runTest ./whoami.nix; + whois = runTest ./whois.nix; whoogle-search = runTest ./whoogle-search.nix; wiki-js = runTest ./wiki-js.nix; windmill = import ./windmill { diff --git a/nixos/tests/whois.nix b/nixos/tests/whois.nix new file mode 100644 index 000000000000..49ec707e2631 --- /dev/null +++ b/nixos/tests/whois.nix @@ -0,0 +1,43 @@ +{ lib, ... }: +{ + name = "whois"; + meta.maintainers = with lib.maintainers; [ Cryolitia ]; + + nodes.machine = { + imports = [ ../modules/profiles/minimal.nix ]; + + programs.whois = { + enable = true; + settings = [ + { + pattern = "\\.dn42$"; + server = "whois.dn42"; + } + { + pattern = "\\-DN42$"; + server = "whois.dn42"; + } + { + pattern = "^as424242[0-9]{4}$"; + server = "whois.dn42"; + } + ]; + }; + }; + + testScript = '' + start_all() + + machine.succeed("command -v whois") + + whois_conf = machine.succeed("cat /etc/whois.conf").strip() + expected = """ + # Generated by NixOS. + # See whois.conf(5) for the file format. + \\.dn42$ whois.dn42 + \\-DN42$ whois.dn42 + ^as424242[0-9]{4}$ whois.dn42 + """.strip() + assert whois_conf == expected + ''; +} diff --git a/pkgs/applications/editors/vim/plugins/generated.nix b/pkgs/applications/editors/vim/plugins/generated.nix index fa398e66c868..af4ca97880a1 100644 --- a/pkgs/applications/editors/vim/plugins/generated.nix +++ b/pkgs/applications/editors/vim/plugins/generated.nix @@ -7102,6 +7102,19 @@ final: prev: { meta.hydraPlatforms = [ ]; }; + ipynb-nvim = buildVimPlugin { + pname = "ipynb.nvim"; + version = "0-unstable-2026-01-31"; + src = fetchFromGitHub { + owner = "ajbucci"; + repo = "ipynb.nvim"; + rev = "b9ec93f7c37a3a081810a733d6baf4973fc31f3d"; + hash = "sha256-uB89olqvc5m6DHwtOOPpTRtyBnhNp6z6Pr9DS6mX7JA="; + }; + meta.homepage = "https://github.com/ajbucci/ipynb.nvim/"; + meta.hydraPlatforms = [ ]; + }; + ir_black = buildVimPlugin { pname = "ir_black"; version = "0-unstable-2012-03-05"; diff --git a/pkgs/applications/editors/vim/plugins/vim-plugin-names b/pkgs/applications/editors/vim/plugins/vim-plugin-names index fbda9639da1c..74841e663c39 100644 --- a/pkgs/applications/editors/vim/plugins/vim-plugin-names +++ b/pkgs/applications/editors/vim/plugins/vim-plugin-names @@ -544,6 +544,7 @@ https://github.com/pta2002/intellitab.nvim/,HEAD, https://github.com/parsonsmatt/intero-neovim/,, https://github.com/keith/investigate.vim/,, https://github.com/neutaaaaan/iosvkem/,, +https://github.com/ajbucci/ipynb.nvim/,HEAD, https://github.com/twerth/ir_black/,, https://github.com/Vigemus/iron.nvim/,HEAD, https://github.com/haya14busa/is.vim/,, diff --git a/pkgs/applications/editors/vscode/extensions/default.nix b/pkgs/applications/editors/vscode/extensions/default.nix index e8107f9ab4bd..f09e11478cce 100644 --- a/pkgs/applications/editors/vscode/extensions/default.nix +++ b/pkgs/applications/editors/vscode/extensions/default.nix @@ -1967,8 +1967,8 @@ let mktplcRef = { name = "gitlab-workflow"; publisher = "gitlab"; - version = "6.71.9"; - hash = "sha256-8+5Njd4s3iSrZwwdEVvr/R+uv8i16wDdsbiv3xPISWc="; + version = "6.72.0"; + hash = "sha256-QqoGCxGJ0l69Q6P+L/AsEIN99xP9ReYzRC2AJVpk/gU="; }; meta = { description = "GitLab extension for Visual Studio Code"; @@ -4207,8 +4207,8 @@ let mktplcRef = { publisher = "shopify"; name = "ruby-lsp"; - version = "0.10.1"; - hash = "sha256-IBOYuldJO1FjpFtpDMxo5n7XjXmN21qqrZcYy9+Ddso="; + version = "0.10.2"; + hash = "sha256-FWvRGMB19uHVe97TvwI0EDjjnUqHpJNVTI0ZwfpBDKY="; }; meta = { description = "VS Code plugin for connecting with the Ruby LSP"; diff --git a/pkgs/applications/editors/vscode/extensions/google.colab/default.nix b/pkgs/applications/editors/vscode/extensions/google.colab/default.nix index c2dbf22dee06..d768a294c702 100644 --- a/pkgs/applications/editors/vscode/extensions/google.colab/default.nix +++ b/pkgs/applications/editors/vscode/extensions/google.colab/default.nix @@ -7,8 +7,8 @@ vscode-utils.buildVscodeMarketplaceExtension { mktplcRef = { publisher = "google"; name = "colab"; - version = "0.4.1"; - hash = "sha256-ebSMfnDumkXKsMqg3/ifi0GVXfXtrs2mLCCG8hZlkR0="; + version = "0.5.0"; + hash = "sha256-os1wdxun6HHZKZ7IjObn88mGX0Kr/A1zqeMXW/7lIr4="; }; meta = { diff --git a/pkgs/applications/editors/vscode/extensions/language-packs.nix b/pkgs/applications/editors/vscode/extensions/language-packs.nix index 7ab65924b1e3..d05d7aa4251e 100644 --- a/pkgs/applications/editors/vscode/extensions/language-packs.nix +++ b/pkgs/applications/editors/vscode/extensions/language-packs.nix @@ -13,7 +13,7 @@ let buildVscodeLanguagePack = { language, - version ? "1.110.2026031919", + version ? "1.110.2026033112", hash, }: buildVscodeMarketplaceExtension { @@ -41,71 +41,71 @@ in # French vscode-language-pack-fr = buildVscodeLanguagePack { language = "fr"; - hash = "sha256-a8N3SX7lgfTMlBk70hOdKtgO4e9uyMziRaSp/QmkUQM="; + hash = "sha256-ctn6bY2zJVz6XfhI37NOdf12RiKsS/Pa2IYFBMD06fs="; }; # Italian vscode-language-pack-it = buildVscodeLanguagePack { language = "it"; - hash = "sha256-OyZ0rUTFg2Epb/adz2kFbStIeDoDyWj/fA3MC3QPLT4="; + hash = "sha256-ZZgTzQa0oTS7HFzYuJXncG97tPUovKr8BEh4ZgGwmWY="; }; # German vscode-language-pack-de = buildVscodeLanguagePack { language = "de"; - hash = "sha256-Z7zIviuD9UcSK8Z0qlq7PnqYWmacUlrYu0lDTjbmS+g="; + hash = "sha256-8qCjGIArVSfy/kwv00aLPniBREVW+cNAUbged10VQQs="; }; # Spanish vscode-language-pack-es = buildVscodeLanguagePack { language = "es"; - hash = "sha256-fSJ5D7kQ5zMppUqVIAjBfQ2mNzBpiF1myFfqtk2QPSs="; + hash = "sha256-9F4JEp0qVu1rsrJ01QMuhZPgMxybH/J5ENh2riDAe2c="; }; # Russian vscode-language-pack-ru = buildVscodeLanguagePack { language = "ru"; - hash = "sha256-qEXRsqI8jfuTCX2zMnDwfHAiszk2abiwzJ+a1dio3ss="; + hash = "sha256-1xRKJLuKjxYQ2D20K9QaQQQjmd8oHFmWVIe0OdeEfG8="; }; # Chinese (Simplified) vscode-language-pack-zh-hans = buildVscodeLanguagePack { language = "zh-hans"; - hash = "sha256-zwBfoB17agsVK/NLxZ8WaoM49emmLX2otPsba0pjg7w="; + hash = "sha256-VxM+Jjch/hVO80boUCU1iYkYoToTtUewHcIuJhQGkZA="; }; # Chinese (Traditional) vscode-language-pack-zh-hant = buildVscodeLanguagePack { language = "zh-hant"; - hash = "sha256-P9cKdfuGAOq/Ow3ojKaUiEfChEED4eXbSaFtqp5yWWs="; + hash = "sha256-ADR/ouefp5HnBwmGV0UBNAklgHg5mXNcBfX+VbJed74="; }; # Japanese vscode-language-pack-ja = buildVscodeLanguagePack { language = "ja"; - hash = "sha256-+SXH6Uy9CIrG4Ff+Wzq9+N+SKEGcTtXbcpyW5OA2sGA="; + hash = "sha256-hSilIspgNnJ05qgZk7uWvr8y4BAAPK/82j+dwshsGVc="; }; # Korean vscode-language-pack-ko = buildVscodeLanguagePack { language = "ko"; - hash = "sha256-7gV6rK8RC1LDMu6Rvo84ScmJJcc/BfgQl5dVE/dyWis="; + hash = "sha256-A2gGsrno76caJvZguMsjE2xa6AzOfCz1Ge3fbh7yZWw="; }; # Czech vscode-language-pack-cs = buildVscodeLanguagePack { language = "cs"; - hash = "sha256-NvXwyaDDkAO22Hb7octXswkUP55zo3UgNtoLEQL1AQE="; + hash = "sha256-t70KwNkxiXFSw0NdiOGH6tjmeRP/RYinK/YxwLGfSw8="; }; # Portuguese (Brazil) vscode-language-pack-pt-br = buildVscodeLanguagePack { language = "pt-BR"; - hash = "sha256-E9m4ATCtFm+Q+hHe9Yd++a1cuqjj3eF8H632HRsdjAc="; + hash = "sha256-wOjewAGd1BCkrOQuhcWRbMm7YsRJGjac2+w5+fjWhBM="; }; # Turkish vscode-language-pack-tr = buildVscodeLanguagePack { language = "tr"; - hash = "sha256-YXXpXftw86/0vRPr9s4kOuf4EMykhgy0SDInNVgcr+c="; + hash = "sha256-X7A8MWlBzijd+1Z6POBSRef5BgeI9qfSy576dx3yfII="; }; # Polish vscode-language-pack-pl = buildVscodeLanguagePack { language = "pl"; - hash = "sha256-mQ/Aya728qX/d5RNrv4IQrBu3IPh50HeC1Bn292/QYg="; + hash = "sha256-bJc428MT8HyEUltmCFZEliSSPOE5TpHsaVKL1qukbVk="; }; # Pseudo Language vscode-language-pack-qps-ploc = buildVscodeLanguagePack { language = "qps-ploc"; - hash = "sha256-//+9p7P8CBVmAL6vcn1LzlAZBcrOlahjJvQhLeOQ1UU="; + hash = "sha256-XVT+ssMh4SD+O93oDYbkLh4b8VPYA/9HOAKQURrLUuQ="; }; } diff --git a/pkgs/applications/editors/vscode/generic.nix b/pkgs/applications/editors/vscode/generic.nix index 8215bf9e7c05..91479c2c95f3 100644 --- a/pkgs/applications/editors/vscode/generic.nix +++ b/pkgs/applications/editors/vscode/generic.nix @@ -274,6 +274,17 @@ stdenv.mkDerivation ( (buildPackages.wrapGAppsHook3.override { makeWrapper = buildPackages.makeShellWrapper; }) ]; + # autoPatchelfHook cannot index libwebkit2gtk-4.1.so because pyelftools + # fails to parse it (ELFError: String Table not found). Ignore the + # missing dep and add the library path via appendRunpaths so it is still + # available at runtime for libmsalruntime.so (Microsoft Authentication). + autoPatchelfIgnoreMissingDeps = lib.optionals stdenv.hostPlatform.isLinux [ + "libwebkit2gtk-4.1.so.0" + ]; + appendRunpaths = lib.optionals stdenv.hostPlatform.isLinux [ + "${webkitgtk_4_1}/lib" + ]; + dontBuild = true; dontConfigure = true; noDumpEnvVars = true; diff --git a/pkgs/applications/editors/vscode/vscode.nix b/pkgs/applications/editors/vscode/vscode.nix index 65fc5af3083d..7c04b08d5726 100644 --- a/pkgs/applications/editors/vscode/vscode.nix +++ b/pkgs/applications/editors/vscode/vscode.nix @@ -35,17 +35,17 @@ let hash = { - x86_64-linux = "sha256-p+8hlq6eB/d3oyPMirJ4ZRqY65xQyEk0jc8k2FiduuY="; - x86_64-darwin = "sha256-GyD9Z+o8mW6GgTDtGWs66Zja32fDKUEb5EblxMuqwHY="; - aarch64-linux = "sha256-C1HpQ/yJwkOkGcQssSwjAqhKCCdspc6Xq0pMdmpmSBc="; - aarch64-darwin = "sha256-m9wZ+7eyuTbGkr+TjCUrSGScr1L0eatKC7N0jJacjzY="; - armv7l-linux = "sha256-W8MjdmQLzwVqGjnrfLjM4Jj8B98fklm5I8SFsmI4URA="; + x86_64-linux = "sha256-D+2JWjC0kutfkEF5QKOKwh9Z8+jWgMgMN2b8pKwYays="; + x86_64-darwin = "sha256-dgOKMYRKfGRipLMsQcVmlOEHbG9l4ryJZv5J8znSxwA="; + aarch64-linux = "sha256-NRaxhWEdYDNIK1AbimKwzw4zGd3ljwBIYJ+BaTz2/gk="; + aarch64-darwin = "sha256-nWkNoryvsD2SPkc5veQ12+DWPXgWPJjfWwUcC7PjbC4="; + armv7l-linux = "sha256-Ae5sKYiyvIF9KZzKi7BK3/SLgKjuQCLjNKi9dXIqGbo="; } .${system} or throwSystem; # Please backport all compatible updates to the stable release. # This is important for the extension ecosystem. - version = "1.113.0"; + version = "1.114.0"; # The update server (update.code.visualstudio.com) expects the version path # segment in X.Y.Z form, so we normalize X.Y to X.Y.0 (e.g. "1.110" → "1.110.0"). @@ -53,7 +53,7 @@ let downloadVersion = lib.versions.pad 3 version; # This is used for VS Code - Remote SSH test - rev = "cfbea10c5ffb233ea9177d34726e6056e89913dc"; + rev = "e7fb5e96c0730b9deb70b33781f98e2f35975036"; in buildVscode { pname = "vscode" + lib.optionalString isInsiders "-insiders"; @@ -86,7 +86,7 @@ buildVscode { src = fetchurl { name = "vscode-server-${rev}.tar.gz"; url = "https://update.code.visualstudio.com/commit:${rev}/server-linux-x64/stable"; - hash = "sha256-UFZJRZ2mAK0aZ58Pa2PgFOEQT7Ec7F/m1MoO5BrXaJI="; + hash = "sha256-Sx9XXo3qB+7hwi9vzAncX49usOSMVgKilgBa2UrG6pQ="; }; stdenv = stdenvNoCC; }; diff --git a/pkgs/applications/window-managers/hyprwm/hyprland-plugins/hyprsplit.nix b/pkgs/applications/window-managers/hyprwm/hyprland-plugins/hyprsplit.nix index 180a4c132050..4f8d170a5d7a 100644 --- a/pkgs/applications/window-managers/hyprwm/hyprland-plugins/hyprsplit.nix +++ b/pkgs/applications/window-managers/hyprwm/hyprland-plugins/hyprsplit.nix @@ -8,13 +8,13 @@ }: mkHyprlandPlugin (finalAttrs: { pluginName = "hyprsplit"; - version = "0.53.1"; + version = "0.54.2"; src = fetchFromGitHub { owner = "shezdy"; repo = "hyprsplit"; tag = "v${finalAttrs.version}"; - hash = "sha256-seA9mz0Yej4yYZVgzd7yKoHwuueKhfQPu0CyB7EL8No="; + hash = "sha256-NFMLZmM6lM7v6WFcewOp7pKPlr6ampX/MB/kGxt/gPE="; }; nativeBuildInputs = [ @@ -30,6 +30,7 @@ mkHyprlandPlugin (finalAttrs: { license = lib.licenses.bsd3; maintainers = with lib.maintainers; [ aacebedo + mrdev023 ]; }; }) diff --git a/pkgs/by-name/ca/capnproto-rust/package.nix b/pkgs/by-name/ca/capnproto-rust/package.nix index f1d1dea3b98a..2ea8cc258a94 100644 --- a/pkgs/by-name/ca/capnproto-rust/package.nix +++ b/pkgs/by-name/ca/capnproto-rust/package.nix @@ -8,15 +8,15 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "capnproto-rust"; - version = "0.25.0"; + version = "0.25.3"; src = fetchCrate { crateName = "capnpc"; inherit (finalAttrs) version; - hash = "sha256-2+GSM9oIT/he/Ra3SJH5YSrNUU/Jc+PE1N5TjK7OX28="; + hash = "sha256-jDdsGy/T41R4duclyMpPmPZeflXg+Zp7wdBxbR527ZM="; }; - cargoHash = "sha256-fVHLWBxB9PQhOx01G01qIyudnMQiHXj0BI8A6e7t1yQ="; + cargoHash = "sha256-egb4Jpwzkj3PSVStqCX5ZLKgrH7nGHgZUCIleZcWIeI="; postInstall = '' mkdir -p $out/include/capnp diff --git a/pkgs/by-name/co/constrict/package.nix b/pkgs/by-name/co/constrict/package.nix index caf6b88dbe7b..fe5c9a0ef8e9 100644 --- a/pkgs/by-name/co/constrict/package.nix +++ b/pkgs/by-name/co/constrict/package.nix @@ -1,7 +1,7 @@ { lib, python3Packages, - fetchFromGitHub, + fetchFromGitLab, meson, ninja, pkg-config, @@ -16,18 +16,20 @@ ffmpeg, gst-thumbnailers, glycin-loaders, + nix-update-script, }: python3Packages.buildPythonApplication (finalAttrs: { pname = "constrict"; - version = "25.12.1"; + version = "26.2"; pyproject = false; # Built with meson - src = fetchFromGitHub { - owner = "Wartybix"; + src = fetchFromGitLab { + domain = "gitlab.gnome.org"; + owner = "World"; repo = "Constrict"; tag = finalAttrs.version; - hash = "sha256-ZSiBlejNFakz+/3qj3n+ekB5l9JOk3MiQ8PRZOdxtLQ="; + hash = "sha256-SkfutiBi0Y7gNx5PyTaSzVw/5rU/0ULxbtf2606i2wA="; }; nativeBuildInputs = [ @@ -67,10 +69,14 @@ python3Packages.buildPythonApplication (finalAttrs: { ) ''; + passthru = { + updateScript = nix-update-script { }; + }; + meta = { description = "Compresses your videos to your chosen file size"; - homepage = "https://github.com/Wartybix/Constrict"; - changelog = "https://github.com/Wartybix/Constrict/releases/tag/${finalAttrs.src.tag}"; + homepage = "https://gitlab.gnome.org/World/Constrict"; + changelog = "https://gitlab.gnome.org/World/Constrict/-/releases/${finalAttrs.src.tag}"; license = lib.licenses.gpl3Plus; mainProgram = "constrict"; teams = [ lib.teams.gnome-circle ]; diff --git a/pkgs/by-name/de/debase/package.nix b/pkgs/by-name/de/debase/package.nix index c4e42b702aa5..a4c62745cb7d 100644 --- a/pkgs/by-name/de/debase/package.nix +++ b/pkgs/by-name/de/debase/package.nix @@ -1,6 +1,5 @@ { fetchFromGitHub, - fetchpatch, # Delete at next version bump. lib, libgit2, stdenv, @@ -28,6 +27,10 @@ stdenv.mkDerivation rec { substituteInPlace Makefile \ --replace-fail 'git rev-parse HEAD' 'echo aa083074d67938d50336bd3737c960b038d91134' \ --replace-fail '$(GITHASHHEADER): .git/HEAD .git/index' '$(GITHASHHEADER):' + + # fix build with gcc15 + substituteInPlace lib/Makefile \ + --replace-fail './configure' './configure cf_cv_type_of_bool=bool' ''; patches = [ diff --git a/pkgs/by-name/el/elastic/package.nix b/pkgs/by-name/el/elastic/package.nix index 17f81a1f5530..33963653f69a 100644 --- a/pkgs/by-name/el/elastic/package.nix +++ b/pkgs/by-name/el/elastic/package.nix @@ -19,14 +19,14 @@ stdenv.mkDerivation (finalAttrs: { pname = "elastic"; - version = "1.0.1"; + version = "1.0.2"; src = fetchFromGitLab { domain = "gitlab.gnome.org"; owner = "World"; repo = "elastic"; rev = finalAttrs.version; - hash = "sha256-ydRKkVYQ1f6Jlymej1Wzoppo6E0FEUvIfrfnDqLRcPY="; + hash = "sha256-zOqOAUbPjyVl/96oVBhsjBrSMGt+NEbraznNGu374dM="; }; nativeBuildInputs = [ @@ -54,6 +54,7 @@ stdenv.mkDerivation (finalAttrs: { meta = { description = "Design spring animations"; homepage = "https://gitlab.gnome.org/World/elastic/"; + changelog = "https://gitlab.gnome.org/World/elastic/-/releases/${finalAttrs.version}"; mainProgram = "app.drey.Elastic"; license = lib.licenses.gpl3Plus; platforms = lib.platforms.unix; diff --git a/pkgs/by-name/ex/exercise-timer/package.nix b/pkgs/by-name/ex/exercise-timer/package.nix index d7068ec8d015..a5f0e5745d60 100644 --- a/pkgs/by-name/ex/exercise-timer/package.nix +++ b/pkgs/by-name/ex/exercise-timer/package.nix @@ -1,24 +1,21 @@ { lib, stdenv, - alsa-lib, appstream-glib, blueprint-compiler, - cargo, desktop-file-utils, fetchFromGitHub, - json-glib, glib, + gst_all_1, gtk4, + json-glib, libadwaita, meson, ninja, nix-update-script, pkg-config, - rustPlatform, - rustc, - wrapGAppsHook4, vala, + wrapGAppsHook4, }: stdenv.mkDerivation (finalAttrs: { @@ -36,20 +33,20 @@ stdenv.mkDerivation (finalAttrs: { nativeBuildInputs = [ appstream-glib blueprint-compiler - cargo desktop-file-utils glib gtk4 meson ninja pkg-config - rustc wrapGAppsHook4 vala ]; buildInputs = [ - alsa-lib + gst_all_1.gst-plugins-base + gst_all_1.gst-plugins-good + gst_all_1.gstreamer json-glib libadwaita ]; diff --git a/pkgs/by-name/gd/gdu/package.nix b/pkgs/by-name/gd/gdu/package.nix index 60245a38be48..b134d419084f 100644 --- a/pkgs/by-name/gd/gdu/package.nix +++ b/pkgs/by-name/gd/gdu/package.nix @@ -9,16 +9,16 @@ buildGoModule (finalAttrs: { pname = "gdu"; - version = "5.34.4"; + version = "5.35.0"; src = fetchFromGitHub { owner = "dundee"; repo = "gdu"; tag = "v${finalAttrs.version}"; - hash = "sha256-dt16bq0I//ptofT3s2OnU6C4Rd4itov9+Rzz7jai6hw="; + hash = "sha256-zWwnM6CJBVGt4DM3Y5/ETbRdoq2yJeq53Co2ZvlwPRQ="; }; - vendorHash = "sha256-Dtjirx2sHbN4AWxED5weRGtCRNc2VIdaz7RHssGuJeQ="; + vendorHash = "sha256-+fv+agIgIq3guIfBhY8VQz85T0cm3xxTRGFHLSIMpwc="; nativeBuildInputs = [ installShellFiles diff --git a/pkgs/by-name/hi/highscore-unwrapped/package.nix b/pkgs/by-name/hi/highscore-unwrapped/package.nix index e4d44e8ed8da..fb5e1fea6e8a 100644 --- a/pkgs/by-name/hi/highscore-unwrapped/package.nix +++ b/pkgs/by-name/hi/highscore-unwrapped/package.nix @@ -47,14 +47,14 @@ let in stdenv.mkDerivation (finalAttrs: { pname = "highscore-unwrapped"; - version = "0-unstable-2026-01-01"; + version = "0-unstable-2026-02-01"; src = fetchFromGitLab { domain = "gitlab.gnome.org"; owner = "World"; repo = "highscore"; - rev = "c9f537e06414a32632e9f9d7a73d9028b788f275"; - hash = "sha256-6sBfjVFIFg0w3apzJBYMYEIjTavnOAE0YK3ayzoyDks="; + rev = "281d8e1d7d9abaa8452b869d1d52d4a933a00d26"; + hash = "sha256-HQD8Dge/nSvIDgiekCxHzCmRl4cO98Er8X24ZoP8OiQ="; }; patches = [ @@ -65,7 +65,7 @@ stdenv.mkDerivation (finalAttrs: { postPatch = '' substituteInPlace meson.build --replace-fail \ - "run_command('git', 'rev-parse', '--short', 'HEAD').stdout().strip()" \ + "run_command('git', 'rev-parse', '--short', 'HEAD', check: false).stdout().strip()" \ "'${finalAttrs.src.rev}'" ''; diff --git a/pkgs/by-name/ir/iroh-ssh/package.nix b/pkgs/by-name/ir/iroh-ssh/package.nix index cfd410ff0aed..0e34673c8a5d 100644 --- a/pkgs/by-name/ir/iroh-ssh/package.nix +++ b/pkgs/by-name/ir/iroh-ssh/package.nix @@ -10,16 +10,16 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "iroh-ssh"; - version = "0.2.9"; + version = "0.2.10"; src = fetchFromGitHub { owner = "rustonbsd"; repo = "iroh-ssh"; tag = finalAttrs.version; - hash = "sha256-0G2RZbxyxi96FpVPEamfcTrOgPxpFYHmyYg1kQfo7TQ="; + hash = "sha256-A/QdpPHI9TCqQ2oghxPUJl4KKX8gqkA3kBvN8f1Kegg="; }; - cargoHash = "sha256-2/hc1K6zUyQlWorZh34HP9PCdV4YD1ob9l1DFiW7c1Y="; + cargoHash = "sha256-/cq/rOzrQ4t0qvdaqM3JhRn8IMncx7jWYDjdYmLCYvc="; nativeBuildInputs = [ installShellFiles diff --git a/pkgs/by-name/jn/jnv/package.nix b/pkgs/by-name/jn/jnv/package.nix index 2b7f08212d04..8d3603432001 100644 --- a/pkgs/by-name/jn/jnv/package.nix +++ b/pkgs/by-name/jn/jnv/package.nix @@ -8,16 +8,16 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "jnv"; - version = "0.6.2"; + version = "0.7.1"; src = fetchFromGitHub { owner = "ynqa"; repo = "jnv"; tag = "v${finalAttrs.version}"; - hash = "sha256-sW3wy5m3fnTDIxRC/E/EWEvuJ92o+l4QCmwdqL2tZ98="; + hash = "sha256-m+yntdBXnZEFtDvjXRb/NYKyMFBRL5JJYUz9UTGqCSA="; }; - cargoHash = "sha256-jKeAgeW54lAgcv6Xpz9Rwt10tdac4S4B5EAmwanaW9c="; + cargoHash = "sha256-Ae+YUtZ/sDBjngxIxYZq5M7edCc8tq1X+7rc3IsJhvc="; nativeInstallCheckInputs = [ versionCheckHook ]; doInstallCheck = true; diff --git a/pkgs/by-name/js/jsongrep/package.nix b/pkgs/by-name/js/jsongrep/package.nix new file mode 100644 index 000000000000..3f2b6bd2d40f --- /dev/null +++ b/pkgs/by-name/js/jsongrep/package.nix @@ -0,0 +1,50 @@ +{ + fetchFromGitHub, + installShellFiles, + lib, + nix-update-script, + rustPlatform, + stdenvNoCC, + versionCheckHook, +}: + +rustPlatform.buildRustPackage (finalAttrs: { + pname = "jsongrep"; + version = "0.8.1"; + + src = fetchFromGitHub { + owner = "micahkepe"; + repo = "jsongrep"; + tag = "v${finalAttrs.version}"; + hash = "sha256-A4cBHIRXmjpRSJtUNNPGOfSOFQG4om5QFa9xw4MeYj8="; + }; + + cargoHash = "sha256-RQLMQ2jEtqh7km4FWhBaWuw9QY4B4O50DbPdBO+hcW4="; + + nativeBuildInputs = [ installShellFiles ]; + + postInstall = lib.optionalString (stdenvNoCC.buildPlatform.canExecute stdenvNoCC.hostPlatform) '' + for shell in bash fish zsh; do + installShellCompletion --cmd jg \ + --"$shell" <("$out"/bin/jg generate shell "$shell") + done + ''; + + doInstallCheck = true; + nativeInstallCheckInputs = [ versionCheckHook ]; + + passthru.updateScript = nix-update-script { }; + + meta = { + changelog = "https://github.com/micahkepe/jsongrep/blob/${finalAttrs.src.tag}/CHANGELOG.md"; + description = "JSONPath-inspired query language"; + longDescription = '' + `jsongrep` is a command-line tool and Rust library for querying + JSON documents using regular path expressions. + ''; + homepage = "https://github.com/micahkepe/jsongrep"; + license = lib.licenses.mit; + mainProgram = "jg"; + maintainers = with lib.maintainers; [ yiyu ]; + }; +}) diff --git a/pkgs/by-name/li/libhighscore/package.nix b/pkgs/by-name/li/libhighscore/package.nix index 47a8c87eeb4a..202c0dd199c4 100644 --- a/pkgs/by-name/li/libhighscore/package.nix +++ b/pkgs/by-name/li/libhighscore/package.nix @@ -13,14 +13,14 @@ stdenv.mkDerivation { pname = "libhighscore"; - version = "0-unstable-2025-12-06"; + version = "0-unstable-2026-01-30"; src = fetchFromGitLab { domain = "gitlab.gnome.org"; owner = "alicem"; repo = "libhighscore"; - rev = "6920d96b440ccfc070fc87c39c51beab8ac053bd"; - hash = "sha256-JXfPLPHA3HwXRG6sT/5TSMbtU+BqBh/+ZVrzJxW0xLg="; + rev = "81366c670b777a6943dbdd955b9e867c8da247e7"; + hash = "sha256-z+gMU9IA0F9alrhXNf5e+0/J87ChwVyCn26iA+ythBE="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/lo/lorem/package.nix b/pkgs/by-name/lo/lorem/package.nix index 7cf2df260b31..1cafda2338df 100644 --- a/pkgs/by-name/lo/lorem/package.nix +++ b/pkgs/by-name/lo/lorem/package.nix @@ -26,12 +26,12 @@ stdenv.mkDerivation (finalAttrs: { owner = "design"; repo = "lorem"; rev = finalAttrs.version; - hash = "sha256-q6gpxxNebf2G/lT5wWXT/lVp3zR8QLWB8/sdK+wLTJ8="; + hash = "sha256-DY2UVB6N3vQehDm1s3KIjodUfyWu3QBo6NxWlPswDN4="; }; cargoDeps = rustPlatform.fetchCargoVendor { inherit (finalAttrs) pname version src; - hash = "sha256-4JYYcfsEoCGJWZCp0273gXrf8hfuHL/QSsLEHvNa4uA="; + hash = "sha256-DE0jzI9Tmusm6VT19PsmJoTYHQ4fjrg3ik6tAWhMVSA="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/ne/netbird-dashboard/package.nix b/pkgs/by-name/ne/netbird-dashboard/package.nix index a9c25f752604..5b7d20f6e909 100644 --- a/pkgs/by-name/ne/netbird-dashboard/package.nix +++ b/pkgs/by-name/ne/netbird-dashboard/package.nix @@ -6,16 +6,16 @@ buildNpmPackage rec { pname = "netbird-dashboard"; - version = "2.34.2"; + version = "2.36.0"; src = fetchFromGitHub { owner = "netbirdio"; repo = "dashboard"; rev = "v${version}"; - hash = "sha256-eqDH0mtxb756M6G0pC+FmbZtgj0vk9uKXnzCHlPEquE="; + hash = "sha256-VsecD83dz6U6jEaGIxv7M9ePzbTPCXeffSoyyBr2Vh4="; }; - npmDepsHash = "sha256-AYbTtUgo/e9BD5Kg877qUHkj+4l2OJ88rxnquA2789k="; + npmDepsHash = "sha256-ljko66NYBgwyvgIbqnexfbSaILNf/74qrNXZUsHT8/o="; npmFlags = [ "--legacy-peer-deps" ]; installPhase = '' diff --git a/pkgs/by-name/ne/netbird/package.nix b/pkgs/by-name/ne/netbird/package.nix index d3824f6c659e..98c118fd339b 100644 --- a/pkgs/by-name/ne/netbird/package.nix +++ b/pkgs/by-name/ne/netbird/package.nix @@ -67,16 +67,16 @@ let in buildGoModule (finalAttrs: { pname = "netbird-${componentName}"; - version = "0.67.0"; + version = "0.67.3"; src = fetchFromGitHub { owner = "netbirdio"; repo = "netbird"; tag = "v${finalAttrs.version}"; - hash = "sha256-5Q90bEAXTnvkEHcsheohu9wdwZRFIoLnqBNzjotFz54="; + hash = "sha256-bt6NMyRxzzzAnMh0V62cu9+eg/jvV0RRwGqHJm32eZw="; }; - vendorHash = "sha256-6qYS2jXjfPczAfv+g79JsTcEJR9FniAVjW52Yi/g42M="; + vendorHash = "sha256-tsAbNuSqH8NjI6VWDXJ/9u3JKkBAnhjcEdeDXT2Bbv8="; nativeBuildInputs = [ installShellFiles ] ++ lib.optional (componentName == "ui") pkg-config; diff --git a/pkgs/by-name/ne/netron/package.nix b/pkgs/by-name/ne/netron/package.nix index aee1242678be..2b4ae77e6b9f 100644 --- a/pkgs/by-name/ne/netron/package.nix +++ b/pkgs/by-name/ne/netron/package.nix @@ -97,9 +97,5 @@ buildNpmPackage (finalAttrs: { maintainers = with lib.maintainers; [ flokli ]; mainProgram = "netron"; platforms = electron.meta.platforms; - badPlatforms = [ - # Fails on darwin - lib.systems.inspect.patterns.isDarwin - ]; }; }) diff --git a/pkgs/by-name/ni/nice-dcv-client/fix-paths.patch b/pkgs/by-name/ni/nice-dcv-client/fix-paths.patch new file mode 100644 index 000000000000..430274c370fc --- /dev/null +++ b/pkgs/by-name/ni/nice-dcv-client/fix-paths.patch @@ -0,0 +1,31 @@ +--- a/usr/bin/dcvviewer ++++ b/usr/bin/dcvviewer +@@ -13,7 +13,7 @@ + + basedir="${_dir}/usr" + else +- basedir=/usr ++ basedir=@basedir@ + fi + + bindir=${basedir}/bin +@@ -33,15 +33,15 @@ + + export LD_LIBRARY_PATH="${libdir}/${variant}:${libdir}:/usr/share/${variant}/cef:${LD_LIBRARY_PATH}" + export XDG_DATA_DIRS="${datadir}:${XDG_DATA_DIRS}:/usr/share:/usr/local/share" +-export GIO_EXTRA_MODULES="${libdir}/${variant}/gio/modules" +-export GST_PLUGIN_SCANNER="${libexecdir}/${variant}/gst-plugin-scanner" +-export GST_PLUGIN_SYSTEM_PATH="${libdir}/${variant}/gstreamer-1.0" ++export GIO_EXTRA_MODULES=@gio_extra_modules@ ++export GST_PLUGIN_SCANNER=@gst_plugin_scanner@ ++export GST_PLUGIN_SYSTEM_PATH=@gst_plugin_system_path@ + export GTK_PATH="${libdir}/${variant}" + export PANGO_LIBDIR="${libdir}/${variant}" + export GDK_PIXBUF_MODULE_FILE="${libdir}/${variant}/gdk-pixbuf-2.0/2.10.0/loaders.cache" + export GSETTINGS_SCHEMA_DIR="${datadir}/${variant}/schemas" + export FONTCONFIG_PATH="${sysconfdir}/fonts" +-export DCV_SASL_PLUGIN_DIR="${libdir}/dcvviewer/sasl2" ++export DCV_SASL_PLUGIN_DIR=@dcv_sasl_plugin_dir@ + + case "$1" in + --gdb) diff --git a/pkgs/by-name/ni/nice-dcv-client/package.nix b/pkgs/by-name/ni/nice-dcv-client/package.nix index f27c4c5b6fb9..49ad07072120 100644 --- a/pkgs/by-name/ni/nice-dcv-client/package.nix +++ b/pkgs/by-name/ni/nice-dcv-client/package.nix @@ -2,89 +2,119 @@ lib, stdenv, fetchurl, - glib, - libx11, - gst_all_1, - libepoxy, - pango, - cairo, - gdk-pixbuf, - e2fsprogs, - libkrb5, - libva, - openssl, - pcsclite, - gtk3, - libselinux, - libxml2, - libffi, + autoPatchelfHook, + replaceVars, + wrapGAppsHook4, python3Packages, cpio, - autoPatchelfHook, - wrapGAppsHook3, + cups, + cyrus_sasl, + gdk-pixbuf, + glib, + glib-networking, + gst_all_1, + gtk4, + libfido2, + libva, + lz4, + pcsclite, + protobufc, }: - -stdenv.mkDerivation rec { +let pname = "nice-dcv-client"; - version = "2021.2.3797-1"; + version = "2025.0.8846-1"; +in +stdenv.mkDerivation { + inherit version pname; + src = fetchurl { - url = "https://d1uj6qtbmh3dt5.cloudfront.net/2021.2/Clients/nice-dcv-viewer-${version}.el8.x86_64.rpm"; - sha256 = "sha256-iLz25SB5v7ghkAZOMGPmpNaPihd8ikzCQS//r1xBNRU="; + url = "https://d1uj6qtbmh3dt5.cloudfront.net/${lib.versions.majorMinor version}/Clients/nice-dcv-viewer-${version}.el9.x86_64.rpm"; + sha256 = "sha256-JYvOxwSQQKjTLvpfpAQe1tqHS4QsshYJyzC5kIFEZLc="; }; nativeBuildInputs = [ autoPatchelfHook - wrapGAppsHook3 + wrapGAppsHook4 python3Packages.rpm ]; + unpackPhase = '' rpm2cpio $src | ${cpio}/bin/cpio -idm ''; buildInputs = [ - libselinux - libkrb5 - libxml2 - libva - e2fsprogs - libx11 - openssl - pcsclite - gtk3 - cairo - libepoxy - pango + cups + cyrus_sasl gdk-pixbuf + gtk4 + libfido2 + libva + lz4 + pcsclite + protobufc gst_all_1.gstreamer gst_all_1.gst-plugins-base ]; - installPhase = '' - mkdir -p $out/bin/ - mkdir -p $out/lib64/ - mv usr/bin/dcvviewer $out/bin/dcvviewer - mv usr/lib64/* $out/lib64/ - mkdir -p $out/libexec/dcvviewer - mv usr/libexec/dcvviewer/dcvviewer $out/libexec/dcvviewer/dcvviewer - patchelf \ - --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \ - $out/libexec/dcvviewer/dcvviewer - # Fix the wrapper script to have the right basedir. - sed -i "s#basedir=/usr#basedir=$out#" $out/bin/dcvviewer - mv usr/share $out/ + installPhase = + let + gst_plugin_system_path = lib.makeSearchPath "lib/gstreamer-1.0/" ( + with gst_all_1; + [ + gstreamer + gst-plugins-base + gst-plugins-good + ] + ); + fixPathsPatch = replaceVars ./fix-paths.patch { + basedir = null; + gio_extra_modules = "${glib-networking}/lib/gio/modules"; + gst_plugin_scanner = "${gst_all_1.gstreamer.out}/libexec/gstreamer-1.0/gst-plugin-scanner"; + gst_plugin_system_path = gst_plugin_system_path; + dcv_sasl_plugin_dir = "${cyrus_sasl.out}/lib/sasl2"; + }; + in + '' + # Fix the wrapper script paths. + patch -p1 < ${fixPathsPatch} + substituteInPlace usr/bin/dcvviewer \ + --replace-fail '@basedir@' "$out" - ${glib.dev}/bin/glib-compile-schemas $out/share/glib-2.0/schemas + mkdir -p $out/bin/ + mv usr/bin/dcvviewer $out/bin/dcvviewer - # we already ship libffi.so.7 - ln -s ${lib.getLib libffi}/lib/libffi.so $out/lib64/libffi.so.6 - ''; + mkdir -p $out/libexec/dcvviewer + mv \ + usr/libexec/dcvviewer/dcvextensionswatchdog \ + usr/libexec/dcvviewer/dcvviewer \ + $out/libexec/dcvviewer + patchelf \ + --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \ + $out/libexec/dcvviewer/dcvviewer - meta = { + mkdir -p $out/lib64/dcvviewer + mv \ + ./usr/lib64/dcvviewer/libavcodec.so.61 \ + ./usr/lib64/dcvviewer/libavutil.so.59 \ + ./usr/lib64/dcvviewer/libdcv.so \ + ./usr/lib64/dcvviewer/libsoup-3.0.so.0 \ + $out/lib64/dcvviewer + + mv usr/share $out/ + rm -rf $out/usr/share/doc + + ${glib.dev}/bin/glib-compile-schemas $out/share/glib-2.0/schemas + ''; + + meta = with lib; { description = "High-performance remote display protocol"; homepage = "https://aws.amazon.com/hpc/dcv/"; - sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ]; - license = lib.licenses.unfree; + sourceProvenance = with sourceTypes; [ binaryNativeCode ]; + license = licenses.unfree; platforms = [ "x86_64-linux" ]; - maintainers = with lib.maintainers; [ rmcgibbo ]; + maintainers = with maintainers; [ + rmcgibbo + jhol + ]; }; } diff --git a/pkgs/by-name/ow/owntracks-frontend/package.nix b/pkgs/by-name/ow/owntracks-frontend/package.nix new file mode 100644 index 000000000000..7f8b5b5ae170 --- /dev/null +++ b/pkgs/by-name/ow/owntracks-frontend/package.nix @@ -0,0 +1,37 @@ +{ + lib, + buildNpmPackage, + fetchFromGitHub, +}: + +buildNpmPackage (finalAttrs: { + pname = "owntracks-frontend"; + version = "2.15.3"; + + src = fetchFromGitHub { + owner = "owntracks"; + repo = "frontend"; + tag = "v${finalAttrs.version}"; + hash = "sha256-omNsCD6sPwPrC+PdyftGDUeZA8nOHkHkRHC+oHFC0eM="; + }; + npmDepsHash = "sha256-sZkOvffpRoUTbIXpskuVSbX4+k1jiwIbqW4ckBwnEHM="; + + installPhase = '' + runHook preInstall + + mkdir -p $out/share/owntracks-frontend + cp -r dist/* $out/share/owntracks-frontend + cp dist/config/config.example.js $out/share/owntracks-frontend/config/config.js + + runHook postInstall + ''; + + meta = { + description = "Web interface for OwnTracks"; + homepage = "https://github.com/owntracks/frontend"; + changelog = "https://github.com/owntracks/frontend/releases/tag/v${finalAttrs.version}"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.aionescu ]; + platforms = lib.platforms.linux; + }; +}) diff --git a/pkgs/by-name/ow/owntracks-recorder/package.nix b/pkgs/by-name/ow/owntracks-recorder/package.nix index 4ef530953448..f51552a24125 100644 --- a/pkgs/by-name/ow/owntracks-recorder/package.nix +++ b/pkgs/by-name/ow/owntracks-recorder/package.nix @@ -77,10 +77,10 @@ stdenv.mkDerivation (finalAttrs: { meta = { description = "Store and access data published by OwnTracks apps"; homepage = "https://github.com/owntracks/recorder"; - changelog = "https://github.com/owntracks/recorder/blob/master/Changelog"; + changelog = "https://github.com/owntracks/recorder/releases/tag/${finalAttrs.version}"; license = lib.licenses.gpl2Plus; platforms = lib.platforms.linux; - maintainers = [ ]; + maintainers = [ lib.maintainers.aionescu ]; mainProgram = "ot-recorder"; }; }) diff --git a/pkgs/by-name/po/pocketbase/package.nix b/pkgs/by-name/po/pocketbase/package.nix index 48d700784e7d..06f0ac73cc70 100644 --- a/pkgs/by-name/po/pocketbase/package.nix +++ b/pkgs/by-name/po/pocketbase/package.nix @@ -7,16 +7,16 @@ buildGoModule (finalAttrs: { pname = "pocketbase"; - version = "0.36.7"; + version = "0.36.8"; src = fetchFromGitHub { owner = "pocketbase"; repo = "pocketbase"; rev = "v${finalAttrs.version}"; - hash = "sha256-CI4OiFqYHr662EYa1mSGqAYyVDhoqXIOSPZQv5IVxk0="; + hash = "sha256-47Z0piORkQphm/XSoTLEXrYsKJXcdOKIes9OLRxjFfY="; }; - vendorHash = "sha256-2zqDgHgZ8W1/iFkgmP5Frcd5YmPqr2PEC3aYTMrmdtE="; + vendorHash = "sha256-p085Ru3csNpGDMeF5q+W23Mc30WwhF9zHv0U29aEp/w="; # This is the released subpackage from upstream repo subPackages = [ "examples/base" ]; diff --git a/pkgs/by-name/rs/rsshub/package.nix b/pkgs/by-name/rs/rsshub/package.nix index ef1484add6d3..7d4899da7664 100644 --- a/pkgs/by-name/rs/rsshub/package.nix +++ b/pkgs/by-name/rs/rsshub/package.nix @@ -12,13 +12,13 @@ }: stdenv.mkDerivation (finalAttrs: { pname = "rsshub"; - version = "0-unstable-2026-03-24"; + version = "0-unstable-2026-04-03"; src = fetchFromGitHub { owner = "DIYgod"; repo = "RSSHub"; - rev = "df6b73d8663c0ba4c11bae89a61cf0b87c8c52a5"; - hash = "sha256-6YasIbThh5S7UH7WFVEdl++96hL3BEmxdp/QAAzIm18="; + rev = "de181a6cdcac0c534ecf7db5c51a5b5c2b0157e9"; + hash = "sha256-xw80Fh2MdMrSfIKq/k44Bn67JxjubSXeM2idnX7B288="; }; patches = [ @@ -31,7 +31,7 @@ stdenv.mkDerivation (finalAttrs: { pnpmDeps = fetchPnpmDeps { inherit (finalAttrs) pname version src; fetcherVersion = 3; - hash = "sha256-uzPDx48dWAguQ3PolTWz0HDtnO6qBVlKpJRn+ub7mM0="; + hash = "sha256-0800u6UHIG2qc9Of74HXKo1g9GzdR1Gu/N/TRq+z/W8="; pnpm = pnpm_10; }; diff --git a/pkgs/by-name/sc/scite/package.nix b/pkgs/by-name/sc/scite/package.nix index c73a7f6b132e..1a931a24d65d 100644 --- a/pkgs/by-name/sc/scite/package.nix +++ b/pkgs/by-name/sc/scite/package.nix @@ -8,11 +8,11 @@ stdenv.mkDerivation (finalAttrs: { pname = "scite"; - version = "5.5.8"; + version = "5.6.1"; src = fetchurl { url = "https://www.scintilla.org/scite${lib.replaceStrings [ "." ] [ "" ] finalAttrs.version}.tgz"; - hash = "sha256-q9XuxPl96ddGvKD3Gbicy4Shx+5b03/sxLjJE7aWjSE="; + hash = "sha256-Bune5B0v/WfWxFgM0cqOtUOhKDPLWJXKUK7JKckZS/A="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/ti/tinyauth/package.nix b/pkgs/by-name/ti/tinyauth/package.nix index 434490b60a87..25da0d6f6354 100644 --- a/pkgs/by-name/ti/tinyauth/package.nix +++ b/pkgs/by-name/ti/tinyauth/package.nix @@ -11,17 +11,17 @@ buildGoModule (finalAttrs: { pname = "tinyauth"; - version = "5.0.4"; + version = "5.0.6"; src = fetchFromGitHub { owner = "steveiliop56"; repo = "tinyauth"; tag = "v${finalAttrs.version}"; fetchSubmodules = true; - hash = "sha256-pToHUXUItcI6M0GkApqWjKtllidCi5aFwnIyLykOmPk="; + hash = "sha256-V75kjO34b1DBBI5aJMfn9finHSbVbWqQ34CH68gzrig="; }; - vendorHash = "sha256-mECaACnQuJe5uBty6hs54vvaQ5uOafm6rhRfBhktvkc="; + vendorHash = "sha256-iyduJgKt9OAkOY6J8J1GztCkYEssr/TcB43L6/Qdzmc="; subPackages = [ "cmd/tinyauth" ]; @@ -83,7 +83,7 @@ buildGoModule (finalAttrs: { ''; outputHashMode = "recursive"; - outputHash = "sha256-0XmblrGZfi8EH4J+KONf5ZrnEmeeaVptVrIJDNz6PKo="; + outputHash = "sha256-pd5v5lD8Lyhf21OQvzjDTh63EcAe7E1OAoQuFGhAOX8="; }; passthru = { diff --git a/pkgs/by-name/un/units/package.nix b/pkgs/by-name/un/units/package.nix index 5ba2a282eaf6..eb73ccab10e7 100644 --- a/pkgs/by-name/un/units/package.nix +++ b/pkgs/by-name/un/units/package.nix @@ -14,11 +14,11 @@ let in stdenv.mkDerivation (finalAttrs: { pname = "units"; - version = "2.26"; + version = "2.27"; src = fetchurl { url = "mirror://gnu/units/units-${finalAttrs.version}.tar.gz"; - hash = "sha256-TEP3pJ/iIS7kM9PAdVoKGTXbNUl8Sla/n2jF9xiHPFQ="; + hash = "sha256-4bvbCWcufAju6YZ0nnoWKeuEpr30H1oqedaARESrvhA="; }; # Until upstream updates their code to work with GCC 15. diff --git a/pkgs/by-name/wh/wheelwizard/package.nix b/pkgs/by-name/wh/wheelwizard/package.nix index c1663a9e5fc5..246c121accc6 100644 --- a/pkgs/by-name/wh/wheelwizard/package.nix +++ b/pkgs/by-name/wh/wheelwizard/package.nix @@ -14,13 +14,13 @@ }: buildDotnetModule rec { pname = "wheelwizard"; - version = "2.4.1"; + version = "2.4.2"; src = fetchFromGitHub { owner = "TeamWheelWizard"; repo = "WheelWizard"; tag = version; - hash = "sha256-pxz4aZozpQQB8GgL/D2AgbtCy+cTbd5DNsODoDd2Xa0="; + hash = "sha256-ayik04mn11NbD4R09O99Yqij6aIjz6DUhpgqKQoGRP4="; }; postPatch = '' rm .config/dotnet-tools.json diff --git a/pkgs/desktops/pantheon/desktop/gala/default.nix b/pkgs/desktops/pantheon/desktop/gala/default.nix index 6d1ed151e028..4151efad21d6 100644 --- a/pkgs/desktops/pantheon/desktop/gala/default.nix +++ b/pkgs/desktops/pantheon/desktop/gala/default.nix @@ -28,13 +28,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "gala"; - version = "8.4.1"; + version = "8.4.2"; src = fetchFromGitHub { owner = "elementary"; repo = "gala"; tag = finalAttrs.version; - hash = "sha256-CBgrHd9euRuOxBR+hut5J1d0S2qZ5hVU3b8pjJuNG7s="; + hash = "sha256-T4Kpgc9i0dqzG/dX46fCpkAbXtppkqUPu2bYtCl708k="; }; depsBuildBuild = [ pkg-config ]; diff --git a/pkgs/development/python-modules/google-cloud-bigquery-logging/default.nix b/pkgs/development/python-modules/google-cloud-bigquery-logging/default.nix index 3ffb2d1c6eec..daff03c0901a 100644 --- a/pkgs/development/python-modules/google-cloud-bigquery-logging/default.nix +++ b/pkgs/development/python-modules/google-cloud-bigquery-logging/default.nix @@ -12,15 +12,15 @@ setuptools, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "google-cloud-bigquery-logging"; - version = "1.8.0"; + version = "1.9.0"; pyproject = true; src = fetchPypi { pname = "google_cloud_bigquery_logging"; - inherit version; - hash = "sha256-2ENcmRKghxKocDtYOjZgsvOfQ2GooC/RpoSdKSVhBV0="; + inherit (finalAttrs) version; + hash = "sha256-jgXYORisIBuJxLVgyd0Dig1aFR8CYWfjuBWsi+VgDew="; }; build-system = [ setuptools ]; @@ -51,8 +51,8 @@ buildPythonPackage rec { meta = { description = "Bigquery logging client library"; homepage = "https://github.com/googleapis/google-cloud-python/tree/main/packages/google-cloud-bigquery-logging"; - changelog = "https://github.com/googleapis/google-cloud-python/blob/google-cloud-bigquery-logging-v${version}/packages/google-cloud-bigquery-logging/CHANGELOG.md"; + changelog = "https://github.com/googleapis/google-cloud-python/blob/google-cloud-bigquery-logging-v${finalAttrs.version}/packages/google-cloud-bigquery-logging/CHANGELOG.md"; license = lib.licenses.asl20; maintainers = with lib.maintainers; [ fab ]; }; -} +}) diff --git a/pkgs/development/python-modules/llm-echo/default.nix b/pkgs/development/python-modules/llm-echo/default.nix index d0ed2f5ab533..3205ca8bb8a3 100644 --- a/pkgs/development/python-modules/llm-echo/default.nix +++ b/pkgs/development/python-modules/llm-echo/default.nix @@ -12,14 +12,14 @@ buildPythonPackage rec { pname = "llm-echo"; - version = "0.3a3"; + version = "0.4"; pyproject = true; src = fetchFromGitHub { owner = "simonw"; repo = "llm-echo"; tag = version; - hash = "sha256-4345UIyaQx+mYYBAFD5AaX5YbjbnJQt8bKMD5Vl8VJc="; + hash = "sha256-E0C/SZ+0t1iPWulr/xaQQPzRR7Qg7nF/X5/HX8QxkMw="; }; build-system = [ setuptools ]; diff --git a/pkgs/development/python-modules/niquests/default.nix b/pkgs/development/python-modules/niquests/default.nix index 597047a0fd47..31ebdac40a6d 100644 --- a/pkgs/development/python-modules/niquests/default.nix +++ b/pkgs/development/python-modules/niquests/default.nix @@ -18,14 +18,14 @@ buildPythonPackage rec { pname = "niquests"; - version = "3.18.3"; + version = "3.18.4"; pyproject = true; src = fetchFromGitHub { owner = "jawah"; repo = "niquests"; tag = "v${version}"; - hash = "sha256-8XR1TZ2VbUVbXb6dEBS3yr+FB4L6Gbhhx3hoYlHfcoA="; + hash = "sha256-AcF0HpC7vPusEGp7i4ofY2FTJrFxLwXv33MnR6sdvJg="; }; build-system = [ hatchling ]; diff --git a/pkgs/development/rocq-modules/relation-algebra/default.nix b/pkgs/development/rocq-modules/relation-algebra/default.nix index 0bb2e1d289ad..73a712681bcf 100644 --- a/pkgs/development/rocq-modules/relation-algebra/default.nix +++ b/pkgs/development/rocq-modules/relation-algebra/default.nix @@ -16,7 +16,7 @@ mkRocqDerivation { [ rocq-core.rocq-version ] [ { - cases = [ (lib.versions.isEq "9.0") ]; + cases = [ (lib.versions.range "9.0" "9.1") ]; out = "1.8.0"; } ] diff --git a/pkgs/top-level/coq-packages.nix b/pkgs/top-level/coq-packages.nix index 95339ffaf60e..ed7bfa5626d9 100644 --- a/pkgs/top-level/coq-packages.nix +++ b/pkgs/top-level/coq-packages.nix @@ -359,6 +359,6 @@ rec { coq_9_1 = coqPackages_9_1.coq; coq_9_2 = coqPackages_9_2.coq; - coqPackages = lib.recurseIntoAttrs coqPackages_9_0; + coqPackages = lib.recurseIntoAttrs coqPackages_9_1; coq = coqPackages.coq; } diff --git a/pkgs/top-level/rocq-packages.nix b/pkgs/top-level/rocq-packages.nix index 2e5b7b0c4add..b5efdf4b6c56 100644 --- a/pkgs/top-level/rocq-packages.nix +++ b/pkgs/top-level/rocq-packages.nix @@ -116,6 +116,6 @@ rec { rocqPackages_9_1 = mkRocqPackages rocq-core_9_1; rocqPackages_9_2 = mkRocqPackages rocq-core_9_2; - rocqPackages = lib.recurseIntoAttrs rocqPackages_9_0; + rocqPackages = lib.recurseIntoAttrs rocqPackages_9_1; rocq-core = rocqPackages.rocq-core; }