Merge master into staging-next

This commit is contained in:
nixpkgs-ci[bot] 2025-06-11 06:06:12 +00:00 committed by GitHub
commit 013cc265db
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
13 changed files with 327 additions and 21 deletions

View File

@ -25635,6 +25635,12 @@
name = "Denny Schäfer";
keys = [ { fingerprint = "C752 0E49 4D92 1740 D263 C467 B057 455D 1E56 7270"; } ];
};
tuxy = {
email = "lastpass7565@gmail.com";
github = "tuxy";
githubId = 57819359;
name = "Binh Nguyen";
};
tv = {
email = "tv@krebsco.de";
github = "4z3";

View File

@ -17,6 +17,8 @@
- [FileBrowser](https://filebrowser.org/), a web application for managing and sharing files. Available as [services.filebrowser](#opt-services.filebrowser.enable).
- Options under [networking.getaddrinfo](#opt-networking.getaddrinfo.enable) are now allowed to declaratively configure address selection and sorting behavior of `getaddrinfo` in dual-stack networks.
- [LACT](https://github.com/ilya-zlobintsev/LACT), a GPU monitoring and configuration tool, can now be enabled through [services.lact.enable](#opt-services.lact.enable).
Note that for LACT to work properly on AMD GPU systems, you need to enable [hardware.amdgpu.overdrive.enable](#opt-hardware.amdgpu.overdrive.enable).

View File

@ -0,0 +1,120 @@
{
pkgs,
lib,
config,
...
}:
let
cfg = config.networking.getaddrinfo;
formatTableEntries =
tableName: table:
if table == null then
[ ]
else
lib.mapAttrsToList (cidr: val: "${tableName} ${cidr} ${toString val}") table;
gaiConfText = lib.concatStringsSep "\n" (
[
"# Generated by NixOS module networking.getaddrinfo"
"# Do not edit manually!"
"reload ${if cfg.reload then "yes" else "no"}"
]
++ formatTableEntries "label" cfg.label
++ formatTableEntries "precedence" cfg.precedence
++ formatTableEntries "scopev4" cfg.scopev4
);
in
{
options.networking.getaddrinfo = {
enable = lib.mkOption {
type = lib.types.bool;
default = pkgs.stdenv.hostPlatform.libc == "glibc";
defaultText = lib.literalExpression ''
pkgs.stdenv.hostPlatform.libc == "glibc"
'';
description = ''
Enables custom address sorting configuration for {manpage}`getaddrinfo(3)` according to RFC 3484.
This option generates a {file}`/etc/gai.conf` file to override the default address sorting tables,
as described in {manpage}`gai.conf(5)`.
This setting is only applicable when using the GNU C Library (glibc).
It has no effect with other libc implementations.
'';
};
reload = lib.mkOption {
type = lib.types.bool;
default = false;
description = ''
Determines whether a process should detect changes to the configuration file since it was last read.
If enabled, the file is re-read automatically. This may cause issues in multithreaded applications
and is generally discouraged.
'';
};
label = lib.mkOption {
type = lib.types.nullOr (lib.types.attrsOf lib.types.int);
default = null;
description = ''
Adds entries to the label table, as described in section 2.1 of RFC 3484.
If any label entries are provided, the glibcs default label table is ignored.
'';
example = {
"::/0" = 1;
"2002::/16" = 2;
"::/96" = 3;
"::ffff:0:0/96" = 4;
"fec0::/10" = 5;
"fc00::/7" = 6;
"2001:0::/32" = 7;
};
};
precedence = lib.mkOption {
type = lib.types.nullOr (lib.types.attrsOf lib.types.int);
default = null;
description = ''
Similar to {option}`networking.getaddrinfo.label`, but this option
defines entries for the precedence table instead.
See sections 2.1 and 10.3 of RFC 3484 for details.
Providing any value will disable the glibc's default precedence table.
'';
example = {
"::1/128" = 50;
"::/0" = 40;
"2002::/16" = 30;
"::/96" = 20;
"::ffff:0:0/96" = 10;
};
};
scopev4 = lib.mkOption {
type = lib.types.nullOr (lib.types.attrsOf lib.types.int);
default = null;
description = ''
Adds custom rules to the IPv4 scope table.
By default, the scope IDs described in section 3.2 of RFC 6724 are used.
Modifying these values is rarely necessary.
'';
example = {
"::ffff:169.254.0.0/112" = 2;
"::ffff:127.0.0.0/104" = 2;
"::ffff:0.0.0.0/96" = 14;
};
};
};
config = lib.mkIf cfg.enable {
environment.etc."gai.conf".text = gaiConfText;
};
meta.maintainers = with lib.maintainers; [ moraxyc ];
}

View File

@ -8,6 +8,7 @@
./config/fonts/fontdir.nix
./config/fonts/ghostscript.nix
./config/fonts/packages.nix
./config/getaddrinfo.nix
./config/gtk/gtk-icon-cache.nix
./config/i18n.nix
./config/iproute2.nix

View File

@ -537,6 +537,7 @@ in
gancio = runTest ./gancio.nix;
garage = handleTest ./garage { };
gatus = runTest ./gatus.nix;
getaddrinfo = runTest ./getaddrinfo.nix;
gemstash = handleTest ./gemstash.nix { };
geoclue2 = runTest ./geoclue2.nix;
geoserver = runTest ./geoserver.nix;

View File

@ -0,0 +1,68 @@
{ lib, ... }:
let
ip4 = "192.0.2.1";
ip6 = "2001:db8::1";
precedence = {
"::1/128" = 50;
"::/0" = 40;
"2002::/16" = 30;
"::/96" = 20;
"::ffff:0:0/96" = 100;
};
in
{
name = "getaddrinfo";
meta.maintainers = with lib.maintainers; [ moraxyc ];
nodes.server = _: {
networking.firewall.enable = false;
networking.useDHCP = false;
services.dnsmasq = {
enable = true;
settings = {
address = [
"/nixos.test/${ip4}"
"/nixos.test/${ip6}"
];
};
};
};
nodes.client =
{ pkgs, nodes, ... }:
{
networking.nameservers = [
(lib.head nodes.server.networking.interfaces.eth1.ipv4.addresses).address
];
networking.getaddrinfo = {
reload = true;
inherit precedence;
};
networking.useDHCP = false;
environment.systemPackages = [
(pkgs.writers.writePython3Bin "request-addr" { } ''
import socket
results = socket.getaddrinfo("nixos.test", None)
print(results[0][4][0])
'')
];
};
testScript =
{ ... }:
''
server.wait_for_unit("dnsmasq.service")
client.wait_for_unit("network.target")
assert "${ip4}" in client.succeed("request-addr")
client.succeed("""
sed 's/100/10/' /etc/gai.conf > /etc/gai.conf.new && \
mv /etc/gai.conf.new /etc/gai.conf
""")
assert "${ip6}" in client.succeed("request-addr")
'';
}

View File

@ -44,13 +44,13 @@ let
in
stdenv.mkDerivation rec {
pname = "firewalld";
version = "2.3.0";
version = "2.3.1";
src = fetchFromGitHub {
owner = "firewalld";
repo = "firewalld";
rev = "v${version}";
sha256 = "sha256-ubE1zMIOcdg2+mgXsk6brCZxS1XkvJYwVY3E+UXIIiU=";
sha256 = "sha256-ONpyJJjIn5kEnkudZe4Nf67wdQgWa+2qEkT1nxRBDpI=";
};
patches = [

View File

@ -9,13 +9,13 @@
buildGoModule rec {
pname = "karmor";
version = "1.4.1";
version = "1.4.2";
src = fetchFromGitHub {
owner = "kubearmor";
repo = "kubearmor-client";
rev = "v${version}";
hash = "sha256-gFcv2VxKTozEAJvcncOc6X1Pn7HWomHgemCfyddZSJs=";
hash = "sha256-+Zk1tPZAk3rQ1ZfdNAPEvtjm0mdsWRELbRctlulvFnE=";
};
vendorHash = "sha256-4F/q6vYOGtLef+rrJXKhLwjM71NMNI4es4dKe1pohZU=";

View File

@ -17,14 +17,14 @@
nix-update-script,
wayland,
}:
rustPlatform.buildRustPackage rec {
rustPlatform.buildRustPackage (finalAttrs: {
pname = "pineflash";
version = "0.5.5";
src = fetchFromGitHub {
owner = "Spagett1";
repo = "pineflash";
tag = version;
tag = finalAttrs.version;
hash = "sha256-4tcwEok36vuXbtlZNUkLNw1kHFQPBEJM/gWRhRWNLPg=";
};
@ -81,11 +81,11 @@ rustPlatform.buildRustPackage rec {
meta = {
description = "GUI tool to flash IronOS to the Pinecil V1 and V2";
homepage = "https://github.com/Spagett1/pineflash";
changelog = "https://github.com/Spagett1/pineflash/releases/tag/${version}";
changelog = "https://github.com/Spagett1/pineflash/releases/tag/${finalAttrs.version}";
license = lib.licenses.gpl2Only;
maintainers = with lib.maintainers; [
acuteaangle
];
mainProgram = "pineflash";
};
}
})

View File

@ -12,7 +12,6 @@
gtk-layer-shell,
gtkmm3,
howard-hinnant-date,
hyprland,
iniparser,
jsoncpp,
libcava,
@ -38,7 +37,6 @@
sndio,
spdlog,
systemdMinimal,
sway,
udev,
upower,
versionCheckHook,
@ -51,7 +49,6 @@
enableManpages ? stdenv.buildPlatform.canExecute stdenv.hostPlatform,
evdevSupport ? true,
experimentalPatches ? true,
hyprlandSupport ? true,
inputSupport ? true,
jackSupport ? true,
mpdSupport ? true,
@ -64,7 +61,6 @@
runTests ? stdenv.buildPlatform.canExecute stdenv.hostPlatform,
sndioSupport ? true,
systemdSupport ? lib.meta.availableOn stdenv.hostPlatform systemdMinimal,
swaySupport ? true,
traySupport ? true,
udevSupport ? true,
upowerSupport ? true,
@ -128,7 +124,6 @@ stdenv.mkDerivation (finalAttrs: {
portaudio
]
++ lib.optional evdevSupport libevdev
++ lib.optional hyprlandSupport hyprland
++ lib.optional inputSupport libinput
++ lib.optional jackSupport libjack2
++ lib.optional mpdSupport libmpdclient
@ -136,7 +131,6 @@ stdenv.mkDerivation (finalAttrs: {
++ lib.optional nlSupport libnl
++ lib.optional pulseSupport libpulseaudio
++ lib.optional sndioSupport sndio
++ lib.optional swaySupport sway
++ lib.optional systemdSupport systemdMinimal
++ lib.optional traySupport libdbusmenu-gtk3
++ lib.optional udevSupport udev

View File

@ -0,0 +1,102 @@
{
lib,
python3,
gtk3,
lz4,
SDL2,
pkg-config,
vulkan-loader,
ninja,
cmake,
libuuid,
wrapGAppsHook3,
makeDesktopItem,
copyDesktopItems,
llvmPackages_18,
autoPatchelfHook,
unstableGitUpdater,
fetchFromGitHub,
}:
llvmPackages_18.stdenv.mkDerivation {
pname = "xenia-canary";
version = "0-unstable-2025-06-07";
src = fetchFromGitHub {
owner = "xenia-canary";
repo = "xenia-canary";
fetchSubmodules = true;
rev = "422517c673bba086c2b857946ae5a37ee35b8e50";
hash = "sha256-88GHKXURfN8vaVNN7wKn562b6FvsIm/sTcUgtuhvVxM=";
};
dontConfigure = true;
nativeBuildInputs = [
python3
pkg-config
ninja
cmake
wrapGAppsHook3
copyDesktopItems
autoPatchelfHook
libuuid
];
NIX_CFLAGS_COMPILE = [
"-Wno-error=unused-result"
];
buildInputs = [
gtk3
lz4
SDL2
];
buildPhase = ''
runHook preBuild
python3 xenia-build setup
python3 xenia-build build --config=release -j $NIX_BUILD_CORES
runHook postBuild
'';
runtimeDependencies = [
vulkan-loader
];
desktopItems = [
(makeDesktopItem {
name = "xenia_canary";
desktopName = "Xenia Canary";
genericName = "Xbox 360 Emulator";
exec = "xenia_canary";
comment = "Xbox 360 Emulator Research Project";
icon = "xenia-canary";
startupWMClass = "Xenia_canary";
categories = [
"Game"
"Emulator"
];
keywords = [ "xbox" ];
})
];
installPhase = ''
runHook preInstall
find ./build/bin -mindepth 3 -maxdepth 3 -type f -executable -exec install -Dm755 {} -t $out/bin \;
for width in 16 32 48 64 128 256; do
install -Dm644 assets/icon/$width.png $out/share/icons/hicolor/''${width}x''${width}/apps/xenia-canary.png
done
runHook postInstall
'';
passthru.updateScript = unstableGitUpdater { };
meta = {
description = "Xbox 360 Emulator Research Project";
homepage = "https://github.com/xenia-canary/xenia-canary";
license = lib.licenses.bsd3;
maintainers = with lib.maintainers; [ tuxy ];
mainProgram = "xenia_canary";
platforms = [ "x86_64-linux" ];
};
}

View File

@ -19,5 +19,9 @@ buildDunePackage {
meta = landmarks.meta // {
description = "Preprocessor instrumenting code using the landmarks library";
longDescription = ''
Automatically or semi-automatically instrument your code using
landmarks library.
'';
};
}

View File

@ -5,23 +5,31 @@
ocaml,
}:
buildDunePackage {
buildDunePackage rec {
pname = "landmarks";
version = "1.4";
version = "1.5";
minimalOCamlVersion = "4.08";
src = fetchFromGitHub {
owner = "LexiFi";
repo = "landmarks";
rev = "b0c753cd2a4c4aa00dffdd3be187d8ed592fabf7";
hash = "sha256-Wpr76JURUFrj7v39rdM/2Lr7boa7nL/bnPEz1vMrmQo";
tag = "v${version}";
hash = "sha256-eIq02D19OzDOrMDHE1Ecrgk+T6s9vj2X6B2HY+z+K8Q=";
};
doCheck = lib.versionAtLeast ocaml.version "4.08" && lib.versionOlder ocaml.version "5.0";
meta = with lib; {
meta = {
inherit (src.meta) homepage;
description = "Simple Profiling Library for OCaml";
maintainers = [ maintainers.kenran ];
license = licenses.mit;
longDescription = ''
Landmarks is a simple profiling library for OCaml. It provides
primitives to measure time spent in portion of instrumented code. The
instrumentation of the code may either done by hand, automatically or
semi-automatically using the ppx pepreprocessor (see landmarks-ppx package).
'';
changelog = "https://raw.githubusercontent.com/LexiFi/landmarks/refs/tags/v${version}/CHANGES.md";
maintainers = with lib.maintainers; [ kenran ];
license = lib.licenses.mit;
};
}