Merge master into staging-next
This commit is contained in:
commit
013cc265db
@ -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";
|
||||
|
@ -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).
|
||||
|
||||
|
120
nixos/modules/config/getaddrinfo.nix
Normal file
120
nixos/modules/config/getaddrinfo.nix
Normal 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 glibc’s 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 ];
|
||||
}
|
@ -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
|
||||
|
@ -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;
|
||||
|
68
nixos/tests/getaddrinfo.nix
Normal file
68
nixos/tests/getaddrinfo.nix
Normal 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")
|
||||
'';
|
||||
}
|
@ -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 = [
|
||||
|
@ -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=";
|
||||
|
@ -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";
|
||||
};
|
||||
}
|
||||
})
|
||||
|
@ -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
|
||||
|
102
pkgs/by-name/xe/xenia-canary/package.nix
Normal file
102
pkgs/by-name/xe/xenia-canary/package.nix
Normal 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" ];
|
||||
};
|
||||
}
|
@ -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.
|
||||
'';
|
||||
};
|
||||
}
|
||||
|
@ -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;
|
||||
};
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user