mirror of
https://github.com/NixOS/nixpkgs.git
synced 2026-09-15 11:50:09 +00:00
Merge master into staging-next
This commit is contained in:
@@ -199,7 +199,7 @@ nixos/modules/installer/tools/nix-fallback-paths.nix @Artturin @Ericson2314 @lo
|
||||
/doc/languages-frameworks/haskell.section.md @sternenseemann @maralorn @wolfgangwalther
|
||||
/maintainers/scripts/haskell @sternenseemann @maralorn @wolfgangwalther
|
||||
/pkgs/development/compilers/ghc @sternenseemann @maralorn @wolfgangwalther
|
||||
/pkgs/development/compilers/ghc/9.6.6-debian-binary.nix @sternenseemann @maralorn @wolfgangwalther @OPNA2608
|
||||
/pkgs/development/compilers/ghc/9.6.6-debian-binary.nix @sternenseemann @maralorn @wolfgangwalther @OPNA2608 @liberodark
|
||||
/pkgs/development/haskell-modules @sternenseemann @maralorn @wolfgangwalther
|
||||
/pkgs/test/haskell @sternenseemann @maralorn @wolfgangwalther
|
||||
/pkgs/top-level/release-haskell.nix @sternenseemann @maralorn @wolfgangwalther
|
||||
|
||||
@@ -36,7 +36,7 @@ let
|
||||
};
|
||||
tun = {
|
||||
disabled = netCfg.tun.disable;
|
||||
dev = if (netCfg.tun.device != null) then netCfg.tun.device else "nebula.${netName}";
|
||||
dev = netCfg.tun.device;
|
||||
};
|
||||
firewall = {
|
||||
inbound = netCfg.firewall.inbound;
|
||||
@@ -75,187 +75,213 @@ in
|
||||
description = "Nebula network definitions.";
|
||||
default = { };
|
||||
type = lib.types.attrsOf (
|
||||
lib.types.submodule {
|
||||
options = {
|
||||
enable = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = true;
|
||||
description = "Enable or disable this network.";
|
||||
};
|
||||
lib.types.submodule (
|
||||
{ name, ... }: {
|
||||
options = {
|
||||
enable = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = true;
|
||||
description = "Enable or disable this network.";
|
||||
};
|
||||
|
||||
package = lib.mkPackageOption pkgs "nebula" { };
|
||||
package = lib.mkPackageOption pkgs "nebula" { };
|
||||
|
||||
ca = lib.mkOption {
|
||||
type = lib.types.path;
|
||||
description = "Path to the certificate authority certificate.";
|
||||
example = "/etc/nebula/ca.crt";
|
||||
};
|
||||
ca = lib.mkOption {
|
||||
type = lib.types.path;
|
||||
description = "Path to the certificate authority certificate.";
|
||||
example = "/etc/nebula/ca.crt";
|
||||
};
|
||||
|
||||
cert = lib.mkOption {
|
||||
type = lib.types.path;
|
||||
description = "Path to the host certificate.";
|
||||
example = "/etc/nebula/host.crt";
|
||||
};
|
||||
cert = lib.mkOption {
|
||||
type = lib.types.path;
|
||||
description = "Path to the host certificate.";
|
||||
example = "/etc/nebula/host.crt";
|
||||
};
|
||||
|
||||
key = lib.mkOption {
|
||||
type = lib.types.oneOf [
|
||||
lib.types.nonEmptyStr
|
||||
lib.types.path
|
||||
];
|
||||
description = "Path or reference to the host key.";
|
||||
example = "/etc/nebula/host.key";
|
||||
};
|
||||
key = lib.mkOption {
|
||||
type = lib.types.oneOf [
|
||||
lib.types.nonEmptyStr
|
||||
lib.types.path
|
||||
];
|
||||
description = "Path or reference to the host key.";
|
||||
example = "/etc/nebula/host.key";
|
||||
};
|
||||
|
||||
enableReload = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Enable automatic config reload on config change.
|
||||
This setting is not enabled by default as nix cannot determine if the config change is reloadable.
|
||||
Please refer to the [config reference](https://nebula.defined.net/docs/config/) for documentation on reloadable changes.
|
||||
'';
|
||||
};
|
||||
enableReload = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Enable automatic config reload on config change.
|
||||
This setting is not enabled by default as nix cannot determine if the config change is reloadable.
|
||||
Please refer to the [config reference](https://nebula.defined.net/docs/config/) for documentation on reloadable changes.
|
||||
'';
|
||||
};
|
||||
|
||||
staticHostMap = lib.mkOption {
|
||||
type = lib.types.attrsOf (lib.types.listOf (lib.types.str));
|
||||
default = { };
|
||||
description = ''
|
||||
The static host map defines a set of hosts with fixed IP addresses on the internet (or any network).
|
||||
A host can have multiple fixed IP addresses defined here, and nebula will try each when establishing a tunnel.
|
||||
'';
|
||||
example = {
|
||||
"192.168.100.1" = [ "100.64.22.11:4242" ];
|
||||
staticHostMap = lib.mkOption {
|
||||
type = lib.types.attrsOf (lib.types.listOf (lib.types.str));
|
||||
default = { };
|
||||
description = ''
|
||||
The static host map defines a set of hosts with fixed IP addresses on the internet (or any network).
|
||||
A host can have multiple fixed IP addresses defined here, and nebula will try each when establishing a tunnel.
|
||||
'';
|
||||
example = {
|
||||
"192.168.100.1" = [ "100.64.22.11:4242" ];
|
||||
};
|
||||
};
|
||||
|
||||
isLighthouse = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
description = "Whether this node is a lighthouse.";
|
||||
};
|
||||
|
||||
isRelay = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
description = "Whether this node is a relay.";
|
||||
};
|
||||
|
||||
lighthouse.dns.enable = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
description = "Whether this lighthouse node should serve DNS.";
|
||||
};
|
||||
|
||||
lighthouse.dns.host = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "localhost";
|
||||
description = ''
|
||||
IP address on which nebula lighthouse should serve DNS.
|
||||
'localhost' is a good default to ensure the service does not listen on public interfaces;
|
||||
use a Nebula address like 10.0.0.5 to make DNS resolution available to nebula hosts only.
|
||||
'';
|
||||
};
|
||||
|
||||
lighthouse.dns.port = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.port;
|
||||
default = 5353;
|
||||
description = "UDP port number for lighthouse DNS server.";
|
||||
};
|
||||
|
||||
lighthouses = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.str;
|
||||
default = [ ];
|
||||
description = ''
|
||||
List of IPs of lighthouse hosts this node should report to and query from. This should be empty on lighthouse
|
||||
nodes. The IPs should be the lighthouse's Nebula IPs, not their external IPs.
|
||||
'';
|
||||
example = [ "192.168.100.1" ];
|
||||
};
|
||||
|
||||
relays = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.str;
|
||||
default = [ ];
|
||||
description = ''
|
||||
List of IPs of relays that this node should allow traffic from.
|
||||
'';
|
||||
example = [ "192.168.100.1" ];
|
||||
};
|
||||
|
||||
listen.host = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "0.0.0.0";
|
||||
description = "IP address to listen on.";
|
||||
};
|
||||
|
||||
listen.port = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.port;
|
||||
default = null;
|
||||
defaultText = lib.literalExpression ''
|
||||
if (config.services.nebula.networks.''${name}.isLighthouse ||
|
||||
config.services.nebula.networks.''${name}.isRelay) then
|
||||
4242
|
||||
else
|
||||
0;
|
||||
'';
|
||||
description = "Port number to listen on.";
|
||||
};
|
||||
|
||||
tun.disable = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
When tun is disabled, a lighthouse can be started without a local tun interface (and therefore without root).
|
||||
'';
|
||||
};
|
||||
|
||||
tun.device = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.str;
|
||||
default = "nebula.${name}";
|
||||
description = "Name of the tun device. Defaults to nebula.\${networkName}.";
|
||||
};
|
||||
|
||||
firewall.outbound = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.attrs;
|
||||
default = [ ];
|
||||
description = "Firewall rules for outbound traffic.";
|
||||
example = [
|
||||
{
|
||||
port = "any";
|
||||
proto = "any";
|
||||
host = "any";
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
firewall.inbound = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.attrs;
|
||||
default = [ ];
|
||||
description = "Firewall rules for inbound traffic.";
|
||||
example = [
|
||||
{
|
||||
port = "any";
|
||||
proto = "any";
|
||||
host = "any";
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
settings = lib.mkOption {
|
||||
type = format.type;
|
||||
default = { };
|
||||
description = ''
|
||||
Nebula configuration. Refer to
|
||||
<https://github.com/slackhq/nebula/blob/master/examples/config.yml>
|
||||
for details on supported values.
|
||||
'';
|
||||
example = lib.literalExpression ''
|
||||
{
|
||||
lighthouse.interval = 15;
|
||||
}
|
||||
'';
|
||||
};
|
||||
|
||||
user = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = nameToId name;
|
||||
description = ''
|
||||
User under which the nebula daemon is run for this network.
|
||||
|
||||
::: {.note}
|
||||
A user will be created if this config is left to the default value.
|
||||
:::
|
||||
'';
|
||||
};
|
||||
|
||||
group = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = nameToId name;
|
||||
description = ''
|
||||
Group under which the nebula daemon is run for this network.
|
||||
|
||||
::: {.note}
|
||||
The group will be created if this config is left to the default value.
|
||||
:::
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
isLighthouse = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
description = "Whether this node is a lighthouse.";
|
||||
};
|
||||
|
||||
isRelay = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
description = "Whether this node is a relay.";
|
||||
};
|
||||
|
||||
lighthouse.dns.enable = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
description = "Whether this lighthouse node should serve DNS.";
|
||||
};
|
||||
|
||||
lighthouse.dns.host = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "localhost";
|
||||
description = ''
|
||||
IP address on which nebula lighthouse should serve DNS.
|
||||
'localhost' is a good default to ensure the service does not listen on public interfaces;
|
||||
use a Nebula address like 10.0.0.5 to make DNS resolution available to nebula hosts only.
|
||||
'';
|
||||
};
|
||||
|
||||
lighthouse.dns.port = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.port;
|
||||
default = 5353;
|
||||
description = "UDP port number for lighthouse DNS server.";
|
||||
};
|
||||
|
||||
lighthouses = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.str;
|
||||
default = [ ];
|
||||
description = ''
|
||||
List of IPs of lighthouse hosts this node should report to and query from. This should be empty on lighthouse
|
||||
nodes. The IPs should be the lighthouse's Nebula IPs, not their external IPs.
|
||||
'';
|
||||
example = [ "192.168.100.1" ];
|
||||
};
|
||||
|
||||
relays = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.str;
|
||||
default = [ ];
|
||||
description = ''
|
||||
List of IPs of relays that this node should allow traffic from.
|
||||
'';
|
||||
example = [ "192.168.100.1" ];
|
||||
};
|
||||
|
||||
listen.host = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "0.0.0.0";
|
||||
description = "IP address to listen on.";
|
||||
};
|
||||
|
||||
listen.port = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.port;
|
||||
default = null;
|
||||
defaultText = lib.literalExpression ''
|
||||
if (config.services.nebula.networks.''${name}.isLighthouse ||
|
||||
config.services.nebula.networks.''${name}.isRelay) then
|
||||
4242
|
||||
else
|
||||
0;
|
||||
'';
|
||||
description = "Port number to listen on.";
|
||||
};
|
||||
|
||||
tun.disable = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
When tun is disabled, a lighthouse can be started without a local tun interface (and therefore without root).
|
||||
'';
|
||||
};
|
||||
|
||||
tun.device = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.str;
|
||||
default = null;
|
||||
description = "Name of the tun device. Defaults to nebula.\${networkName}.";
|
||||
};
|
||||
|
||||
firewall.outbound = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.attrs;
|
||||
default = [ ];
|
||||
description = "Firewall rules for outbound traffic.";
|
||||
example = [
|
||||
{
|
||||
port = "any";
|
||||
proto = "any";
|
||||
host = "any";
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
firewall.inbound = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.attrs;
|
||||
default = [ ];
|
||||
description = "Firewall rules for inbound traffic.";
|
||||
example = [
|
||||
{
|
||||
port = "any";
|
||||
proto = "any";
|
||||
host = "any";
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
settings = lib.mkOption {
|
||||
type = format.type;
|
||||
default = { };
|
||||
description = ''
|
||||
Nebula configuration. Refer to
|
||||
<https://github.com/slackhq/nebula/blob/master/examples/config.yml>
|
||||
for details on supported values.
|
||||
'';
|
||||
example = lib.literalExpression ''
|
||||
{
|
||||
lighthouse.interval = 15;
|
||||
}
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
}
|
||||
)
|
||||
);
|
||||
};
|
||||
};
|
||||
@@ -263,11 +289,21 @@ in
|
||||
|
||||
# Implementation
|
||||
config = lib.mkIf (enabledNetworks != { }) {
|
||||
assertions = lib.mapAttrsToList (netName: netCfg: {
|
||||
# IFNAMSIZ caps network device names to 16 chars (including NULL terminator).
|
||||
# Without this check, users might end up with a truncated interface name.
|
||||
assertion = !netCfg.tun.disable && builtins.stringLength netCfg.tun.device <= 15;
|
||||
message = ''
|
||||
Network device names can't be longer than 15 chars.
|
||||
`config.services.nebula.networks.${netName}.tun.device` is set to "${netCfg.tun.device}" which is above the limit.
|
||||
Please assign `tun.device` to something shorter.
|
||||
'';
|
||||
}) enabledNetworks;
|
||||
|
||||
systemd.services = lib.mkMerge (
|
||||
lib.mapAttrsToList (
|
||||
netName: netCfg:
|
||||
let
|
||||
networkId = nameToId netName;
|
||||
settings = genSettings netName netCfg;
|
||||
generatedConfigFile = genConfigFile netName settings;
|
||||
configFile =
|
||||
@@ -328,8 +364,8 @@ in
|
||||
ProtectSystem = true;
|
||||
RestrictNamespaces = true;
|
||||
RestrictSUIDSGID = true;
|
||||
User = networkId;
|
||||
Group = networkId;
|
||||
User = netCfg.user;
|
||||
Group = netCfg.group;
|
||||
};
|
||||
unitConfig.StartLimitIntervalSec = 0; # ensure Restart=always is always honoured (networks can go down for arbitrarily long)
|
||||
};
|
||||
@@ -343,7 +379,7 @@ in
|
||||
"nebula/${netName}.yml" = {
|
||||
source = genConfigFile netName (genSettings netName netCfg);
|
||||
mode = "0440";
|
||||
user = nameToId netName;
|
||||
user = netCfg.user;
|
||||
};
|
||||
})
|
||||
(
|
||||
@@ -362,19 +398,25 @@ in
|
||||
|
||||
# Create the service users and groups.
|
||||
users.users = lib.mkMerge (
|
||||
lib.mapAttrsToList (netName: netCfg: {
|
||||
${nameToId netName} = {
|
||||
group = nameToId netName;
|
||||
description = "Nebula service user for network ${netName}";
|
||||
isSystemUser = true;
|
||||
};
|
||||
}) enabledNetworks
|
||||
lib.mapAttrsToList (
|
||||
netName: netCfg:
|
||||
lib.optionalAttrs (netCfg.user == nameToId netName) {
|
||||
${nameToId netName} = {
|
||||
group = netCfg.group;
|
||||
description = "Nebula service user for network ${netName}";
|
||||
isSystemUser = true;
|
||||
};
|
||||
}
|
||||
) enabledNetworks
|
||||
);
|
||||
|
||||
users.groups = lib.mkMerge (
|
||||
lib.mapAttrsToList (netName: netCfg: {
|
||||
${nameToId netName} = { };
|
||||
}) enabledNetworks
|
||||
lib.mapAttrsToList (
|
||||
netName: netCfg:
|
||||
lib.optionalAttrs (netCfg.group == nameToId netName) {
|
||||
${nameToId netName} = { };
|
||||
}
|
||||
) enabledNetworks
|
||||
);
|
||||
};
|
||||
|
||||
|
||||
@@ -288,7 +288,7 @@ in
|
||||
wants = [ "network-online.target" ];
|
||||
|
||||
path = with pkgs; [
|
||||
ffmpeg_4-full
|
||||
ffmpeg-full
|
||||
];
|
||||
|
||||
script = ''
|
||||
|
||||
@@ -88,15 +88,15 @@ let
|
||||
};
|
||||
};
|
||||
betaVersion = {
|
||||
version = "2026.1.3.6"; # "Android Studio Quail 3 | 2026.1.3 RC 2"
|
||||
version = "2026.1.4.5"; # "Android Studio Quail 4 | 2026.1.4 RC 1"
|
||||
sources = {
|
||||
x86_64-linux = {
|
||||
sha256Hash = "sha256-Mgwy+Cbx5yBCHWUEcvMfAsC1zMk3j7A5fWtMrVJgmAk=";
|
||||
url = "https://edgedl.me.gvt1.com/android/studio/ide-zips/2026.1.3.6/android-studio-quail3-rc2-linux.tar.gz";
|
||||
sha256Hash = "sha256-of6o6bn3hpc5OyHJbm005GFeW2K1q3STQU4vzPRhB0w=";
|
||||
url = "https://edgedl.me.gvt1.com/android/studio/ide-zips/2026.1.4.5/android-studio-quail4-rc1-linux.tar.gz";
|
||||
};
|
||||
aarch64-darwin = {
|
||||
sha256Hash = "sha256-5SJmTQRweFeAJsZWv0vHgK+ZtSHu0gp+al8iDGEAg+E=";
|
||||
url = "https://edgedl.me.gvt1.com/android/studio/install/2026.1.3.6/android-studio-quail3-rc2-mac_arm.dmg";
|
||||
sha256Hash = "sha256-FvtsU6FHFz/khKSWzBudNzgt4qVkdlS2kXIqGCcAncg=";
|
||||
url = "https://edgedl.me.gvt1.com/android/studio/install/2026.1.4.5/android-studio-quail4-rc1-mac_arm.dmg";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
@@ -35,25 +35,25 @@ let
|
||||
in
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "dorion";
|
||||
version = "6.12.2";
|
||||
version = "6.13.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "SpikeHD";
|
||||
repo = "Dorion";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-aPYQOec4D0I4N/6nmSwodXsh3pvcHnlD37fUIw5kMjo=";
|
||||
hash = "sha256-3AQX1q3qpu/QKqigmCvLKQJzQpsTnYgwT+1VWA+gIz0=";
|
||||
};
|
||||
|
||||
cargoRoot = "src-tauri";
|
||||
buildAndTestSubdir = finalAttrs.cargoRoot;
|
||||
|
||||
cargoHash = "sha256-3FS8w9K3Wx7KbT7iy+0pAMdmreZnL+ZFMSAnwesnS7Y=";
|
||||
cargoHash = "sha256-p/mj3BL61HlLpN3nqNkVExu0mWaMawg9I2+dKeFUOJ8=";
|
||||
|
||||
pnpmDeps = fetchPnpmDeps {
|
||||
inherit (finalAttrs) pname version src;
|
||||
pnpm = pnpm_10;
|
||||
fetcherVersion = 3;
|
||||
hash = "sha256-WzJD2Brg7+cx7TXRpEg2c1QSY0uo0Ppulj3ytdl0A4I=";
|
||||
hash = "sha256-i20NSlWot8DmjSpdIGd2ne/82HyPB1cdxkBSxbOLA/8=";
|
||||
};
|
||||
|
||||
# CMake (webkit extension, Linux only)
|
||||
|
||||
@@ -8,16 +8,16 @@
|
||||
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "fq";
|
||||
version = "0.17.0";
|
||||
version = "0.18.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "wader";
|
||||
repo = "fq";
|
||||
rev = "v${finalAttrs.version}";
|
||||
hash = "sha256-rGuUvuq9hZrqt3Uy1s1he8O+c+iF83RU6PsUlatrPcQ=";
|
||||
hash = "sha256-Prd0GkLQOdVtpjeu6Ga6dq3imOm7m4m1/kLp9g/1O0I=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-Iga9g9VMTxtdselFn+8udjtInXWW9sNUfSzIc7OgvbY=";
|
||||
vendorHash = "sha256-oqS6j8YTllObGKR8rFvlcFaUGnT3uouOP7pfzuTcgGk=";
|
||||
|
||||
ldflags = [
|
||||
"-s"
|
||||
|
||||
@@ -8,13 +8,13 @@
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "fut";
|
||||
version = "3.3.6";
|
||||
version = "3.3.7";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "fusionlanguage";
|
||||
repo = "fut";
|
||||
tag = "fut-${finalAttrs.version}";
|
||||
hash = "sha256-DWx97eYGR/jrLiN8RkHdjsU+hjSNKRD8q1BSEkNtcDU=";
|
||||
hash = "sha256-SeCp6DhkYv31yrJHm2PbujKpbGRiRP0E9jweCk3GHoE=";
|
||||
};
|
||||
|
||||
buildPhase = ''
|
||||
|
||||
@@ -32,13 +32,13 @@
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "goverlay";
|
||||
version = "1.8.11";
|
||||
version = "1.9.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "benjamimgois";
|
||||
repo = "goverlay";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-N/lLvRU6uvYTLRlSrDkMund7U3q5qDxYxTj9T0C9he0=";
|
||||
hash = "sha256-Il2EtcTLswmhQhIZ8lcOWqryoqvSNXZ3b1FiJPv85M8=";
|
||||
};
|
||||
|
||||
outputs = [
|
||||
|
||||
895
pkgs/by-name/i1/i18next-cli/package-lock.json
generated
895
pkgs/by-name/i1/i18next-cli/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -6,13 +6,13 @@
|
||||
}:
|
||||
buildNpmPackage rec {
|
||||
pname = "i18next-cli";
|
||||
version = "1.69.2";
|
||||
version = "1.71.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "i18next";
|
||||
repo = "i18next-cli";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-6POO9yZFdc8BBNfm2emwKviUS7gmIwhtnKQt4dVlQ4U=";
|
||||
hash = "sha256-jVfHtvlRwYncPdnNcD+DfHex6UaZQGatjKUqiV6/H9c=";
|
||||
};
|
||||
|
||||
# NOTE: Generating lock-file
|
||||
@@ -21,7 +21,7 @@ buildNpmPackage rec {
|
||||
cp ${./package-lock.json} package-lock.json
|
||||
'';
|
||||
|
||||
npmDepsHash = "sha256-yvI4UnMlczxXWh4CjJi8eUQ/n4Tn9VqC4GofYc2rxQE=";
|
||||
npmDepsHash = "sha256-7JQbydV3UaTdw/hJ8LFqGd37tHAQtyFS7RP5u2By+oU=";
|
||||
|
||||
passthru.updateScript = nix-update-script {
|
||||
extraArgs = [ "--generate-lockfile" ];
|
||||
|
||||
@@ -11,13 +11,13 @@ let
|
||||
jdk = jdk17;
|
||||
in
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
version = "5.6.1";
|
||||
version = "5.7.0";
|
||||
pname = "keystore-explorer";
|
||||
src = fetchzip {
|
||||
url = "https://github.com/kaikramer/keystore-explorer/releases/download/v${finalAttrs.version}/kse-${
|
||||
lib.replaceStrings [ "." ] [ "" ] finalAttrs.version
|
||||
}.zip";
|
||||
sha256 = "sha256-yhYQpeBoicILYEXpW+oqDdF+KieDbNmTFpxL+aA8vTw=";
|
||||
sha256 = "sha256-yYekrnutgy2KFmQDRAU2BUrj6XqmsE9i9AhnAB/U2ko=";
|
||||
};
|
||||
|
||||
# glib is necessary so file dialogs don't hang.
|
||||
|
||||
@@ -92,7 +92,12 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
"PYTHON=${python3.pythonOnBuildForHost.interpreter}"
|
||||
"PYTHONLIBDIR=$(py)/${python3.sitePackages}"
|
||||
"PYTHON_SETUP_ARGS=--no-build-isolation"
|
||||
];
|
||||
]
|
||||
++
|
||||
lib.optionals (stdenv.buildPlatform.parsed.kernel.name != stdenv.hostPlatform.parsed.kernel.name)
|
||||
[
|
||||
"OS=${if stdenv.hostPlatform.isDarwin then "Darwin" else "Linux"}"
|
||||
];
|
||||
|
||||
preInstall = lib.optionalString enablePython ''
|
||||
mkdir -p $py/${python3.sitePackages}/selinux
|
||||
|
||||
@@ -35,7 +35,12 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
]
|
||||
++ lib.optionals stdenv.hostPlatform.isStatic [
|
||||
"DISABLE_SHARED=y"
|
||||
];
|
||||
]
|
||||
++
|
||||
lib.optionals (stdenv.buildPlatform.parsed.kernel.name != stdenv.hostPlatform.parsed.kernel.name)
|
||||
[
|
||||
"OS=${if stdenv.hostPlatform.isDarwin then "Darwin" else "Linux"}"
|
||||
];
|
||||
|
||||
env.NIX_CFLAGS_COMPILE = "-Wno-error";
|
||||
|
||||
|
||||
@@ -5,24 +5,27 @@
|
||||
fetchFromGitHub,
|
||||
iana-etc,
|
||||
libredirect,
|
||||
versionCheckHook,
|
||||
writableTmpDirAsHomeHook,
|
||||
}:
|
||||
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "mark";
|
||||
version = "16.12.0";
|
||||
|
||||
__structuredAttrs = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "kovetskiy";
|
||||
repo = "mark";
|
||||
rev = "v${finalAttrs.version}";
|
||||
sha256 = "sha256-KSxMcHizvTQh3AuJ0NV7GQhBgpBIZwrbeI945PFzQJE=";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-KSxMcHizvTQh3AuJ0NV7GQhBgpBIZwrbeI945PFzQJE=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-EELqh6C8SZdyCJfHDqOEY5bhP5G6jlOUhpDaK93fmTA=";
|
||||
|
||||
ldflags = [
|
||||
"-s"
|
||||
"-w"
|
||||
"-X main.version=${finalAttrs.version}"
|
||||
];
|
||||
|
||||
@@ -55,6 +58,13 @@ buildGoModule (finalAttrs: {
|
||||
# binds a localhost listener.
|
||||
__darwinAllowLocalNetworking = true;
|
||||
|
||||
nativeInstallCheckInputs = [
|
||||
versionCheckHook
|
||||
writableTmpDirAsHomeHook
|
||||
];
|
||||
versionCheckKeepEnvironment = [ "HOME" ];
|
||||
doInstallCheck = true;
|
||||
|
||||
meta = {
|
||||
description = "Tool for syncing your markdown documentation with Atlassian Confluence pages";
|
||||
mainProgram = "mark";
|
||||
|
||||
@@ -6,13 +6,13 @@
|
||||
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "pb";
|
||||
version = "1.0.0";
|
||||
version = "1.0.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "parseablehq";
|
||||
repo = "pb";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-GpG++ZoIKZTozS6QdxKIMfNgmTp3U/bChdbVPzPM468=";
|
||||
hash = "sha256-JFoMArwAjOr2zyshrC/BDGe3Uit4TBNgA5vHm9CsdEU=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-hEVoz8EgC2hAkiC0LNZ+h/Hy7toVxWvv2gchymfpMK8=";
|
||||
|
||||
47
pkgs/by-name/po/pokego/package.nix
Normal file
47
pkgs/by-name/po/pokego/package.nix
Normal file
@@ -0,0 +1,47 @@
|
||||
{
|
||||
lib,
|
||||
buildGoModule,
|
||||
fetchFromGitHub,
|
||||
installShellFiles,
|
||||
nix-update-script,
|
||||
}:
|
||||
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "pokego";
|
||||
version = "0.5.2";
|
||||
|
||||
__structuredAttrs = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "rubiin";
|
||||
repo = "pokego";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-GBKQ9YV98znhTP9QsvAAyva8dNohFS8dbQ4FAG5IDig=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-a/YYEMVCqyg76P2Pyfpej46vYQhnnJjicpxNMAZGOVg=";
|
||||
|
||||
ldflags = [
|
||||
"-s"
|
||||
"-w"
|
||||
];
|
||||
|
||||
nativeBuildInputs = [ installShellFiles ];
|
||||
|
||||
postInstall = ''
|
||||
installShellCompletion completions/pokego.bash
|
||||
installShellCompletion completions/pokego.fish
|
||||
installShellCompletion completions/pokego.zsh
|
||||
'';
|
||||
|
||||
passthru.updateScript = nix-update-script { };
|
||||
|
||||
meta = {
|
||||
description = "Display Pokémon sprites in color directly in your terminal";
|
||||
homepage = "https://github.com/rubiin/pokego";
|
||||
license = lib.licenses.gpl3Only;
|
||||
mainProgram = "pokego";
|
||||
platforms = lib.platforms.linux;
|
||||
maintainers = with lib.maintainers; [ yvnth ];
|
||||
};
|
||||
})
|
||||
@@ -7,14 +7,14 @@
|
||||
|
||||
python3.pkgs.buildPythonApplication {
|
||||
pname = "renode-dts2repl";
|
||||
version = "0-unstable-2026-08-13";
|
||||
version = "0-unstable-2026-08-24";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "antmicro";
|
||||
repo = "dts2repl";
|
||||
rev = "93231a98a38187b7d16a528143077eb73764007f";
|
||||
hash = "sha256-CSnf1op/X25MmaUFywn9kydl+A4Gj3R04mRMMJVpw5M=";
|
||||
rev = "cf9df05f6f0435e4ee94bd898de1e6797bf57328";
|
||||
hash = "sha256-slLNTLy++B7ChKUBAl3AUyQ+ZrTi4QcdBI2DEPqNJC4=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
||||
@@ -60,6 +60,11 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
sourceProvenance = [ lib.sourceTypes.binaryNativeCode ];
|
||||
maintainers = [ lib.maintainers.adamcstephens ];
|
||||
mainProgram = "tailwindcss";
|
||||
platforms = lib.platforms.darwin ++ lib.platforms.linux;
|
||||
platforms = [
|
||||
"aarch64-darwin"
|
||||
"aarch64-linux"
|
||||
"armv7l-linux"
|
||||
"x86_64-linux"
|
||||
];
|
||||
};
|
||||
})
|
||||
|
||||
@@ -72,6 +72,10 @@ stdenv.mkDerivation {
|
||||
adamcstephens
|
||||
];
|
||||
mainProgram = "tailwindcss";
|
||||
platforms = lib.platforms.darwin ++ lib.platforms.linux;
|
||||
platforms = [
|
||||
"aarch64-darwin"
|
||||
"aarch64-linux"
|
||||
"x86_64-linux"
|
||||
];
|
||||
};
|
||||
}
|
||||
|
||||
@@ -6,11 +6,11 @@
|
||||
|
||||
appimageTools.wrapType2 rec {
|
||||
pname = "xlights";
|
||||
version = "2026.12";
|
||||
version = "2026.15";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/smeighan/xLights/releases/download/${version}/xLights-${version}-x86_64.AppImage";
|
||||
hash = "sha256-aMOnG80gEZcCo1vIYcyRCTRhJIbcNPEEsmacfRLIoxY=";
|
||||
hash = "sha256-CbX6/6gIPGCHUVcJjtTXZkOd4seFxlHRMJ+g+9l2zUA=";
|
||||
};
|
||||
|
||||
appimageContents = appimageTools.extract { inherit pname version src; };
|
||||
|
||||
@@ -12,6 +12,8 @@
|
||||
libffi,
|
||||
coreutils,
|
||||
targetPackages,
|
||||
llvmPackages,
|
||||
replaceVarsWith,
|
||||
}:
|
||||
|
||||
# Prebuilt only does native
|
||||
@@ -20,10 +22,13 @@ assert stdenv.targetPlatform == stdenv.hostPlatform;
|
||||
let
|
||||
version = "9.6.6";
|
||||
|
||||
useLLVM = !(import ./common-have-ncg.nix { inherit lib stdenv version; });
|
||||
|
||||
# GHC upstream doesn't release bindist tarballs for some platforms.
|
||||
# We're using Debian's binary package, and patching it into a usable-in-Nixpkgs state.
|
||||
ghcDebs = {
|
||||
powerpc64-linux = {
|
||||
toolPrefix = "powerpc64-linux-gnu-";
|
||||
src = {
|
||||
urls = [
|
||||
"http://ftp.ports.debian.org/debian-ports/pool-ppc64/main/g/ghc/ghc_9.6.6-4_ppc64.deb"
|
||||
@@ -51,6 +56,35 @@ let
|
||||
}
|
||||
];
|
||||
};
|
||||
riscv64-linux = {
|
||||
toolPrefix = "riscv64-linux-gnu-";
|
||||
src = {
|
||||
urls = [
|
||||
"https://deb.debian.org/debian/pool/main/g/ghc/ghc_9.6.6-4_riscv64.deb"
|
||||
"https://snapshot.debian.org/archive/debian/20250218T211057Z/pool/main/g/ghc/ghc_9.6.6-4_riscv64.deb"
|
||||
];
|
||||
sha256 = "01ff1fdec9e7581b05998b216399b316c41bdbbc813e3379c7f7a38223550ad0";
|
||||
};
|
||||
exePathForLibraryCheck = "ghc-debian-binary-9.6.6/usr/lib/ghc/bin/ghc-9.6.6";
|
||||
archSpecificLibraries = [
|
||||
{
|
||||
nixPackage = gmp;
|
||||
fileToCheckFor = null;
|
||||
}
|
||||
{
|
||||
nixPackage = ncurses6;
|
||||
fileToCheckFor = "libtinfo.so.6";
|
||||
}
|
||||
{
|
||||
nixPackage = numactl;
|
||||
fileToCheckFor = null;
|
||||
}
|
||||
{
|
||||
nixPackage = libffi;
|
||||
fileToCheckFor = null;
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
debUsed =
|
||||
@@ -66,6 +100,23 @@ let
|
||||
targetPackages.stdenv.cc
|
||||
targetPackages.stdenv.cc.bintools
|
||||
coreutils # for cat
|
||||
]
|
||||
# GHC 9.6 has no NCG for riscv64, it uses LLVM.
|
||||
++ lib.optionals useLLVM [
|
||||
(replaceVarsWith {
|
||||
name = "subopt";
|
||||
src = ./subopt.bash;
|
||||
dir = "bin";
|
||||
isExecutable = true;
|
||||
preBuild = ''
|
||||
name=opt
|
||||
'';
|
||||
replacements = {
|
||||
inherit (stdenv) shell;
|
||||
opt = lib.getExe' llvmPackages.llvm "opt";
|
||||
};
|
||||
})
|
||||
(lib.getBin llvmPackages.llvm)
|
||||
];
|
||||
|
||||
extraLibraryMapping = {
|
||||
@@ -191,11 +242,11 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
# Patch ghc settings
|
||||
+ ''
|
||||
substituteInPlace $out/lib/ghc/lib/settings \
|
||||
--replace-fail powerpc64-linux-gnu-gcc gcc \
|
||||
--replace-fail powerpc64-linux-gnu-g++ g++ \
|
||||
--replace-fail powerpc64-linux-gnu-ld ld \
|
||||
--replace-fail powerpc64-linux-gnu-ar ar \
|
||||
--replace-fail powerpc64-linux-gnu-ranlib ranlib \
|
||||
--replace-fail ${debUsed.toolPrefix}gcc gcc \
|
||||
--replace-fail ${debUsed.toolPrefix}g++ g++ \
|
||||
--replace-fail ${debUsed.toolPrefix}ld ld \
|
||||
--replace-fail ${debUsed.toolPrefix}ar ar \
|
||||
--replace-fail ${debUsed.toolPrefix}ranlib ranlib \
|
||||
--replace-fail llc-18 llc \
|
||||
--replace-fail opt-18 opt
|
||||
'';
|
||||
@@ -247,7 +298,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
targetPrefix = "";
|
||||
enableShared = true;
|
||||
|
||||
llvmPackages = null;
|
||||
inherit llvmPackages;
|
||||
|
||||
# Our Cabal compiler name
|
||||
haskellCompilerName = "ghc-${version}";
|
||||
@@ -263,7 +314,12 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
description = "Glasgow Haskell Compiler";
|
||||
license = lib.licenses.bsd3;
|
||||
platforms = builtins.attrNames ghcDebs;
|
||||
maintainers = [ lib.maintainers.OPNA2608 ];
|
||||
maintainers = [
|
||||
# powerpc64-linux
|
||||
lib.maintainers.OPNA2608
|
||||
# riscv64-linux
|
||||
lib.maintainers.liberodark
|
||||
];
|
||||
teams = [ lib.teams.haskell ];
|
||||
};
|
||||
})
|
||||
|
||||
@@ -254,6 +254,21 @@
|
||||
"sha256-vtjT+TL/7sYPu4rcVV3xCqJQ+uqkyBbf9l0KIi97j/0=";
|
||||
})
|
||||
]
|
||||
++
|
||||
lib.optionals
|
||||
(
|
||||
stdenv.hostPlatform.isRiscV64
|
||||
&& lib.versionAtLeast version "9.10"
|
||||
&& lib.versionOlder version "9.12"
|
||||
)
|
||||
[
|
||||
# Fix LLVM backend split sections causing bin/out reference cycles: https://gitlab.haskell.org/ghc/ghc/-/issues/26770
|
||||
(fetchpatch {
|
||||
name = "ghc-llvm-fix-split-sections.patch";
|
||||
url = "https://gitlab.haskell.org/ghc/ghc/-/commit/b18b2c42c32488ad6d3480a56a1fcd753cad2023.patch";
|
||||
hash = "sha256-kEgZARwcdnWcvjuTfyqnn8V1zAUczZN0qiy/1WbCy1s=";
|
||||
})
|
||||
]
|
||||
++ lib.optionals (lib.versionOlder version "9.12") [
|
||||
(fetchpatch {
|
||||
name = "ghc-rts-Fix-compile-on-powerpc64-elf-v1.patch";
|
||||
@@ -927,6 +942,7 @@ stdenv.mkDerivation (
|
||||
|
||||
inherit llvmPackages;
|
||||
inherit enableShared;
|
||||
inherit enableProfiledLibs;
|
||||
inherit hasHaddock;
|
||||
|
||||
# Expose hadrian used for bootstrapping, for debugging purposes
|
||||
|
||||
@@ -123,7 +123,8 @@ in
|
||||
doInstallIntermediates ? false,
|
||||
editedCabalFile ? null,
|
||||
# Cabal does not build the profiled dynamic objects required by wasm TH.
|
||||
enableLibraryProfiling ? !stdenv.hostPlatform.isGhcjs && !stdenv.hostPlatform.isWasm,
|
||||
enableLibraryProfiling ?
|
||||
!stdenv.hostPlatform.isGhcjs && !stdenv.hostPlatform.isWasm && (ghc.enableProfiledLibs or true),
|
||||
enableExecutableProfiling ? false,
|
||||
profilingDetail ? "exported-functions",
|
||||
# TODO enable shared libs for cross-compiling
|
||||
|
||||
@@ -2632,17 +2632,17 @@ final: prev: {
|
||||
}:
|
||||
buildLuarocksPackage {
|
||||
pname = "lua-resty-session";
|
||||
version = "4.1.5-1";
|
||||
version = "4.2.0-1";
|
||||
knownRockspec =
|
||||
(fetchurl {
|
||||
url = "mirror://luarocks/lua-resty-session-4.1.5-1.rockspec";
|
||||
sha256 = "1mapndwa260pk18v4nwnmz4bncqizfn1zc8k8aj1557pc1fj5ii6";
|
||||
url = "mirror://luarocks/lua-resty-session-4.2.0-1.rockspec";
|
||||
sha256 = "1xps6j9ddz4xqminhl56s3gvx2nbbnc9k3bzhjpkz4x6f39ciabf";
|
||||
}).outPath;
|
||||
src = fetchFromGitHub {
|
||||
owner = "bungle";
|
||||
repo = "lua-resty-session";
|
||||
tag = "v4.1.5";
|
||||
hash = "sha256-qwXNEWU0i3PUJK5cUChkcH43HnBCz4EEVPDQQ10Je+Q=";
|
||||
tag = "v4.2.0";
|
||||
hash = "sha256-wRAd6AGcSkhZcA4Cm9cGetEUt1TfABtYpU2avrK1Hdw=";
|
||||
};
|
||||
|
||||
disabled = luaOlder "5.1";
|
||||
|
||||
@@ -3,19 +3,22 @@
|
||||
buildPythonPackage,
|
||||
fetchPypi,
|
||||
requests,
|
||||
setuptools,
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
buildPythonPackage (finalAttrs: {
|
||||
pname = "casttube";
|
||||
version = "0.2.1";
|
||||
format = "setuptools";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
inherit (finalAttrs) pname version;
|
||||
sha256 = "10pw2sjy648pvp42lbbdmkkx79bqlkq1xcbzp1frraj9g66azljl";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [ requests ];
|
||||
build-system = [ setuptools ];
|
||||
|
||||
dependencies = [ requests ];
|
||||
|
||||
# no tests
|
||||
doCheck = false;
|
||||
@@ -26,4 +29,4 @@ buildPythonPackage rec {
|
||||
license = lib.licenses.mit;
|
||||
maintainers = with lib.maintainers; [ fpletz ];
|
||||
};
|
||||
}
|
||||
})
|
||||
|
||||
@@ -6,22 +6,25 @@
|
||||
pytest-cov-stub,
|
||||
pytestCheckHook,
|
||||
pyyaml,
|
||||
setuptools,
|
||||
six,
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
buildPythonPackage (finalAttrs: {
|
||||
pname = "cfn-flip";
|
||||
version = "1.3.0";
|
||||
format = "setuptools";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "awslabs";
|
||||
repo = "aws-cfn-template-flip";
|
||||
rev = version;
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-lfhTR3+D1FvblhQGF83AB8+I8WDPBTmo+q22ksgDgt4=";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
build-system = [ setuptools ];
|
||||
|
||||
dependencies = [
|
||||
click
|
||||
pyyaml
|
||||
six
|
||||
@@ -50,4 +53,4 @@ buildPythonPackage rec {
|
||||
psyanticy
|
||||
];
|
||||
};
|
||||
}
|
||||
})
|
||||
|
||||
@@ -2,18 +2,21 @@
|
||||
lib,
|
||||
buildPythonPackage,
|
||||
fetchPypi,
|
||||
setuptools,
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
buildPythonPackage (finalAttrs: {
|
||||
pname = "chacha20poly1305";
|
||||
version = "0.0.3";
|
||||
format = "setuptools";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
inherit (finalAttrs) pname version;
|
||||
hash = "sha256-8vAFx89GOP+k/wbALHh0gGi2QpFnlcbRbHzF41XnDt8=";
|
||||
};
|
||||
|
||||
build-system = [ setuptools ];
|
||||
|
||||
# Module has no tests
|
||||
doCheck = false;
|
||||
|
||||
@@ -22,7 +25,7 @@ buildPythonPackage rec {
|
||||
meta = {
|
||||
description = "Module that implements ChaCha20Poly1305";
|
||||
homepage = "https://github.com/ph4r05/py-chacha20poly1305";
|
||||
license = lib.licenses.mit;
|
||||
license = lib.licenses.lgpl21;
|
||||
maintainers = [ ];
|
||||
};
|
||||
}
|
||||
})
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
|
||||
buildPythonPackage (finalAttrs: {
|
||||
pname = "denon-rs232";
|
||||
version = "4.2.1";
|
||||
version = "4.2.2";
|
||||
pyproject = true;
|
||||
|
||||
disabled = pythonOlder "3.12";
|
||||
@@ -21,7 +21,7 @@ buildPythonPackage (finalAttrs: {
|
||||
owner = "home-assistant-libs";
|
||||
repo = "denon-rs232";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-3EFV/lDUWylQBpiOf5gHX+8J9qW8mMTvr1xET27salo=";
|
||||
hash = "sha256-DqlJWgREneOFS4OFEgeJTyF4osgPYw1GO6I6sZVA6J4=";
|
||||
};
|
||||
|
||||
build-system = [ uv-build ];
|
||||
|
||||
@@ -13,14 +13,14 @@
|
||||
|
||||
buildPythonPackage (finalAttrs: {
|
||||
pname = "pycaption";
|
||||
version = "2.3.7";
|
||||
version = "2.3.9";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "pbs";
|
||||
repo = "pycaption";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-yokCL6CTUlsANJp7H31ilaT1GN2jp5JfLTNWJ4FMW1s=";
|
||||
hash = "sha256-qqWL9l4UITw6uPXuo9fhr0GdTVv2AIMr+Lxfm8OctNc=";
|
||||
};
|
||||
|
||||
build-system = [ setuptools ];
|
||||
|
||||
@@ -1,28 +1,28 @@
|
||||
{
|
||||
"game": {
|
||||
"latest": {
|
||||
"linux": "53.15",
|
||||
"linux": "53.16",
|
||||
"darwin": "0.47.05"
|
||||
},
|
||||
"versions": {
|
||||
"53.15": {
|
||||
"53.16": {
|
||||
"df": {
|
||||
"version": "53.15",
|
||||
"version": "53.16",
|
||||
"urls": {
|
||||
"linux": {
|
||||
"url": "https://www.bay12games.com/dwarves/df_53_15_linux.tar.bz2",
|
||||
"outputHash": "sha256-LreGXGk8Pgmr8Mk37VT3U0tCFOhRKZFdEsXBzmJtN4o="
|
||||
"url": "https://www.bay12games.com/dwarves/df_53_16_linux.tar.bz2",
|
||||
"outputHash": "sha256-L5wBNLJGXMy3BbjT4yLN/wffc3T/v6//6PmC8u9+fn0="
|
||||
}
|
||||
}
|
||||
},
|
||||
"hack": {
|
||||
"version": "53.15-r1",
|
||||
"version": "53.16-r1.1",
|
||||
"git": {
|
||||
"url": "https://github.com/DFHack/dfhack.git",
|
||||
"revision": "53.15-r1",
|
||||
"outputHash": "sha256-7vNk/JmNu0tQEevZ7XeGX/435EydR15dJJIHEyS1a7c="
|
||||
"revision": "53.16-r1.1",
|
||||
"outputHash": "sha256-ex6//9ylounbyHVpgyDWLLCCibvu59NOXmpComn4cGg="
|
||||
},
|
||||
"xmlRev": "80a6267faddb7aa99759c9df94186de3f873dd97"
|
||||
"xmlRev": "1dd01aad64219afa0578f1328cf15bd0c6006d5a"
|
||||
}
|
||||
},
|
||||
"52.05": {
|
||||
|
||||
@@ -1,66 +0,0 @@
|
||||
commit f89ce378d3b405d69635da28dfd57adced23aa17
|
||||
Author: kuflierl <41301536+kuflierl@users.noreply.github.com>
|
||||
Date: Mon Sep 15 20:14:08 2025 +0200
|
||||
|
||||
server: replace pillow-avif-plugin, pyheif, heif-image-plugin with pillow-heif
|
||||
|
||||
diff --git a/requirements.txt b/requirements.txt
|
||||
index ffe18f0c..16a72750 100644
|
||||
--- a/requirements.txt
|
||||
+++ b/requirements.txt
|
||||
@@ -1,12 +1,10 @@
|
||||
alembic>=0.8.5
|
||||
certifi>=2017.11.5
|
||||
coloredlogs==5.0
|
||||
-heif-image-plugin==0.3.2
|
||||
numpy>=1.8.2
|
||||
-pillow-avif-plugin~=1.1.0
|
||||
-pillow>=4.3.0
|
||||
+pillow>=11.2.1
|
||||
+pillow-heif>=1.0.0
|
||||
psycopg2-binary>=2.6.1
|
||||
-pyheif==0.6.1
|
||||
pynacl>=1.2.1
|
||||
pyRFC3339>=1.0
|
||||
pytz>=2018.3
|
||||
diff --git a/szurubooru/func/image_hash.py b/szurubooru/func/image_hash.py
|
||||
index 76d5a846..b89541eb 100644
|
||||
--- a/szurubooru/func/image_hash.py
|
||||
+++ b/szurubooru/func/image_hash.py
|
||||
@@ -4,13 +4,13 @@ from datetime import datetime
|
||||
from io import BytesIO
|
||||
from typing import Any, Callable, List, Optional, Set, Tuple
|
||||
|
||||
-import HeifImagePlugin
|
||||
+from pillow_heif import register_heif_opener
|
||||
import numpy as np
|
||||
-import pillow_avif
|
||||
from PIL import Image
|
||||
|
||||
from szurubooru import config, errors
|
||||
|
||||
+register_heif_opener()
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
# Math based on paper from H. Chi Wong, Marshall Bern and David Goldberg
|
||||
diff --git a/szurubooru/func/images.py b/szurubooru/func/images.py
|
||||
index e135d182..f4b5aa5b 100644
|
||||
--- a/szurubooru/func/images.py
|
||||
+++ b/szurubooru/func/images.py
|
||||
@@ -7,14 +7,14 @@ import subprocess
|
||||
from io import BytesIO
|
||||
from typing import List
|
||||
|
||||
-import HeifImagePlugin
|
||||
-import pillow_avif
|
||||
+from pillow_heif import register_heif_opener
|
||||
from PIL import Image as PILImage
|
||||
|
||||
from szurubooru import errors
|
||||
from szurubooru.func import mime, util
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
+register_heif_opener()
|
||||
|
||||
|
||||
def convert_heif_to_png(content: bytes) -> bytes:
|
||||
@@ -5,12 +5,12 @@
|
||||
}:
|
||||
|
||||
let
|
||||
version = "2.5-unstable-2025-07-19";
|
||||
version = "2.5-unstable-2026-07-25";
|
||||
src = fetchFromGitHub {
|
||||
owner = "rr-";
|
||||
repo = "szurubooru";
|
||||
rev = "5a0f8867f3af1556d82c1ad7e29977903300c2dd";
|
||||
hash = "sha256-ihocmBS4h23bb4ZRhHEXvnHiNfRMPdUe94B5K9bi2E4=";
|
||||
rev = "10ac8509ff73d539360215f65b95ad704e6a2740";
|
||||
hash = "sha256-7uvhB1kaRUpPr2qWcoVNXtOzK218w8SY3AsCPF0HeF4=";
|
||||
};
|
||||
in
|
||||
|
||||
|
||||
@@ -3,48 +3,20 @@
|
||||
version,
|
||||
lib,
|
||||
nixosTests,
|
||||
fetchPypi,
|
||||
python3,
|
||||
ffmpeg_4-full,
|
||||
ffmpeg-full,
|
||||
szurubooru,
|
||||
}:
|
||||
|
||||
let
|
||||
overrides = [
|
||||
(self: super: {
|
||||
alembic = super.alembic.overridePythonAttrs (oldAttrs: rec {
|
||||
version = "1.14.1";
|
||||
src = fetchPypi {
|
||||
pname = "alembic";
|
||||
inherit version;
|
||||
sha256 = "sha256-SW6IgkWlOt8UmPyrMXE6Rpxlg2+N524BOZqhw+kN0hM=";
|
||||
};
|
||||
doCheck = false;
|
||||
});
|
||||
|
||||
sqlalchemy = self.sqlalchemy_1_4;
|
||||
})
|
||||
];
|
||||
|
||||
python = python3.override {
|
||||
self = python;
|
||||
packageOverrides = lib.composeManyExtensions overrides;
|
||||
};
|
||||
in
|
||||
|
||||
python.pkgs.buildPythonApplication {
|
||||
python3.pkgs.buildPythonApplication {
|
||||
pname = "szurubooru-server";
|
||||
inherit version;
|
||||
pyproject = true;
|
||||
|
||||
src = "${src}/server";
|
||||
|
||||
patches = [
|
||||
./001-server-pillow-heif.patch
|
||||
];
|
||||
|
||||
nativeBuildInputs = with python.pkgs; [ setuptools ];
|
||||
propagatedBuildInputs = with python.pkgs; [
|
||||
nativeBuildInputs = with python3.pkgs; [ setuptools ];
|
||||
propagatedBuildInputs = with python3.pkgs; [
|
||||
certifi
|
||||
coloredlogs
|
||||
legacy-cgi
|
||||
@@ -61,7 +33,7 @@ python.pkgs.buildPythonApplication {
|
||||
];
|
||||
|
||||
makeWrapperArgs = [
|
||||
"--prefix PATH : ${lib.makeBinPath [ ffmpeg_4-full ]}"
|
||||
"--prefix PATH : ${lib.makeBinPath [ ffmpeg-full ]}"
|
||||
];
|
||||
|
||||
postInstall = ''
|
||||
@@ -73,13 +45,13 @@ python.pkgs.buildPythonApplication {
|
||||
|
||||
# Database migration. Needs the szurubooru server in its environment for the
|
||||
# migration to complete successfully.
|
||||
passthru.alembic = python.pkgs.alembic.overrideAttrs (old: {
|
||||
passthru.alembic = python3.pkgs.alembic.overrideAttrs (old: {
|
||||
propagatedBuildInputs = old.propagatedBuildInputs ++ [
|
||||
szurubooru.server
|
||||
];
|
||||
});
|
||||
# Waitress is used to run the serer.
|
||||
passthru.waitress = python.pkgs.waitress.overrideAttrs (old: {
|
||||
passthru.waitress = python3.pkgs.waitress.overrideAttrs (old: {
|
||||
propagatedBuildInputs = old.propagatedBuildInputs ++ [
|
||||
szurubooru.server
|
||||
];
|
||||
|
||||
@@ -121,6 +121,8 @@ in
|
||||
then
|
||||
# No bindist, "borrowing" the GHC from Debian
|
||||
bb.packages.ghc966DebianBinary
|
||||
else if stdenv.buildPlatform.isRiscV64 then
|
||||
bb.packages.ghc966DebianBinary
|
||||
else
|
||||
bb.packages.ghc948;
|
||||
inherit (buildPackages.python3Packages) sphinx;
|
||||
@@ -136,6 +138,8 @@ in
|
||||
then
|
||||
# No bindist, "borrowing" the GHC from Debian
|
||||
bb.packages.ghc966DebianBinary
|
||||
else if stdenv.buildPlatform.isRiscV64 then
|
||||
bb.packages.ghc966DebianBinary
|
||||
else if stdenv.buildPlatform.isi686 then
|
||||
bb.packages.ghc948
|
||||
else
|
||||
@@ -153,6 +157,8 @@ in
|
||||
then
|
||||
# No bindist, "borrowing" the GHC from Debian
|
||||
bb.packages.ghc966DebianBinary
|
||||
else if stdenv.buildPlatform.isRiscV64 then
|
||||
bb.packages.ghc966DebianBinary
|
||||
else if stdenv.buildPlatform.isi686 then
|
||||
bb.packages.ghc967
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user