mirror of
https://github.com/NixOS/nixpkgs.git
synced 2026-07-06 17:13:24 -05:00
Merge master into staging-nixos
This commit is contained in:
commit
f7ef7c3fe4
132 changed files with 907 additions and 427 deletions
2
.github/workflows/build.yml
vendored
2
.github/workflows/build.yml
vendored
|
|
@ -98,7 +98,7 @@ jobs:
|
|||
if: |
|
||||
contains(matrix.builds, 'manual-nixos') && !cancelled() &&
|
||||
contains(fromJSON(inputs.baseBranch).type, 'primary')
|
||||
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
|
||||
with:
|
||||
name: nixos-manual-${{ matrix.name }}
|
||||
path: nixos-manual
|
||||
|
|
|
|||
8
.github/workflows/eval.yml
vendored
8
.github/workflows/eval.yml
vendored
|
|
@ -143,7 +143,7 @@ jobs:
|
|||
|
||||
- name: Upload outpaths diff and stats
|
||||
if: inputs.targetSha
|
||||
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
|
||||
with:
|
||||
name: ${{ matrix.version && format('{0}-', matrix.version) || '' }}diff-${{ matrix.system }}
|
||||
path: diff/*
|
||||
|
|
@ -167,7 +167,7 @@ jobs:
|
|||
target-as-trusted-at: ${{ inputs.targetSha }}
|
||||
|
||||
- name: Download output paths and eval stats for all systems
|
||||
uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0
|
||||
uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0
|
||||
with:
|
||||
pattern: diff-*
|
||||
path: diff
|
||||
|
|
@ -200,7 +200,7 @@ jobs:
|
|||
cat comparison/step-summary.md >> "$GITHUB_STEP_SUMMARY"
|
||||
|
||||
- name: Upload the comparison results
|
||||
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
|
||||
with:
|
||||
name: comparison
|
||||
path: comparison/*
|
||||
|
|
@ -242,7 +242,7 @@ jobs:
|
|||
needs: [versions, eval]
|
||||
steps:
|
||||
- name: Download output paths and eval stats for all versions
|
||||
uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0
|
||||
uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0
|
||||
with:
|
||||
pattern: "*-diff-*"
|
||||
path: versions
|
||||
|
|
|
|||
2
.github/workflows/reviewers.yml
vendored
2
.github/workflows/reviewers.yml
vendored
|
|
@ -124,7 +124,7 @@ jobs:
|
|||
run: gh api /rate_limit | jq
|
||||
|
||||
- name: Download the comparison results
|
||||
uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0
|
||||
uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0
|
||||
with:
|
||||
run-id: ${{ steps.eval.outputs.run-id }}
|
||||
github-token: ${{ github.token }}
|
||||
|
|
|
|||
|
|
@ -27803,6 +27803,12 @@
|
|||
githubId = 43357387;
|
||||
keys = [ { fingerprint = "F844 80B2 0CA9 D6CC C7F5 2479 A776 D2AD 099E 8BC0"; } ];
|
||||
};
|
||||
wetisobe = {
|
||||
name = "Martin Woods";
|
||||
github = "wetisobe";
|
||||
email = "weti.sobe@pen-net.de";
|
||||
githubId = 172606048;
|
||||
};
|
||||
wetrustinprize = {
|
||||
email = "git@wetrustinprize.com";
|
||||
github = "wetrustinprize";
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ let
|
|||
]
|
||||
++ lib.pipe config.i18n.extraLocaleSettings [
|
||||
# See description of extraLocaleSettings for why is this ignored here.
|
||||
(lib.filterAttrs (n: v: n != "LANGUAGE"))
|
||||
(x: lib.removeAttrs x [ "LANGUAGE" ])
|
||||
(lib.mapAttrs (n: v: (sanitizeUTF8Capitalization v)))
|
||||
(lib.mapAttrsToList (LCRole: lang: lang + "/" + (config.i18n.localeCharsets.${LCRole} or "UTF-8")))
|
||||
]
|
||||
|
|
@ -30,12 +30,12 @@ in
|
|||
glibcLocales = lib.mkOption {
|
||||
type = lib.types.path;
|
||||
default = pkgs.glibcLocales.override {
|
||||
allLocales = lib.any (x: x == "all") config.i18n.supportedLocales;
|
||||
allLocales = lib.elem "all" config.i18n.supportedLocales;
|
||||
locales = config.i18n.supportedLocales;
|
||||
};
|
||||
defaultText = lib.literalExpression ''
|
||||
pkgs.glibcLocales.override {
|
||||
allLocales = lib.any (x: x == "all") config.i18n.supportedLocales;
|
||||
allLocales = lib.elem "all" config.i18n.supportedLocales;
|
||||
locales = config.i18n.supportedLocales;
|
||||
}
|
||||
'';
|
||||
|
|
@ -149,7 +149,7 @@ in
|
|||
(
|
||||
!(
|
||||
(lib.subtractLists config.i18n.supportedLocales aggregatedLocales) == [ ]
|
||||
|| lib.any (x: x == "all") config.i18n.supportedLocales
|
||||
|| lib.elem "all" config.i18n.supportedLocales
|
||||
)
|
||||
)
|
||||
''
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@
|
|||
imports = [
|
||||
./disk.nix
|
||||
./keyboard.nix
|
||||
./networking
|
||||
./system.nix
|
||||
];
|
||||
|
||||
|
|
|
|||
69
nixos/modules/hardware/facter/networking/default.nix
Normal file
69
nixos/modules/hardware/facter/networking/default.nix
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
{ config, lib, ... }:
|
||||
let
|
||||
# Filter network interfaces from facter report to only those suitable for DHCP
|
||||
physicalInterfaces = lib.filter (
|
||||
iface:
|
||||
# Only include network interfaces suitable for DHCP:
|
||||
# - Ethernet (most common)
|
||||
# - WLAN (WiFi)
|
||||
# - USB-Link (USB network adapters, tethering)
|
||||
# - Network Interface (generic/unknown type)
|
||||
# This implicitly excludes: Loopback, mainframe-specific interfaces (CTC, IUCV, HSI, ESCON)
|
||||
# See: https://github.com/numtide/hwinfo/blob/ea251a74b88dcd53aebdd381194ab43d10fbbd79/src/ids/src/class#L817-L874
|
||||
let
|
||||
validTypes = [
|
||||
"Ethernet"
|
||||
"WLAN"
|
||||
"USB-Link"
|
||||
"Network Interface"
|
||||
];
|
||||
in
|
||||
lib.elem (iface.sub_class.name or "") validTypes
|
||||
) (config.hardware.facter.report.hardware.network_interface or [ ]);
|
||||
|
||||
# Extract interface names from unix_device_names
|
||||
detectedInterfaceNames = lib.concatMap (iface: iface.unix_device_names or [ ]) physicalInterfaces;
|
||||
|
||||
# Get the interface names from the configuration (which defaults to detectedInterfaceNames)
|
||||
interfaceNames = config.hardware.facter.detected.dhcp.interfaces;
|
||||
|
||||
# Generate per-interface DHCP config
|
||||
perInterfaceConfig = lib.listToAttrs (
|
||||
lib.map (name: {
|
||||
inherit name;
|
||||
value = {
|
||||
useDHCP = lib.mkDefault true;
|
||||
};
|
||||
}) interfaceNames
|
||||
);
|
||||
in
|
||||
{
|
||||
imports = [
|
||||
./initrd.nix
|
||||
./intel.nix
|
||||
];
|
||||
|
||||
options.hardware.facter.detected.dhcp = {
|
||||
enable = lib.mkEnableOption "Facter dhcp module" // {
|
||||
default = builtins.length config.hardware.facter.report.hardware.network_interface or [ ] > 0;
|
||||
defaultText = "hardware dependent";
|
||||
};
|
||||
|
||||
interfaces = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.str;
|
||||
default = detectedInterfaceNames;
|
||||
defaultText = lib.literalExpression "automatically detected from facter report";
|
||||
description = "List of network interface names to configure with DHCP. Defaults to auto-detected physical interfaces.";
|
||||
example = [
|
||||
"eth0"
|
||||
"wlan0"
|
||||
];
|
||||
};
|
||||
};
|
||||
config = lib.mkIf config.hardware.facter.detected.dhcp.enable {
|
||||
networking.useDHCP = lib.mkDefault true;
|
||||
|
||||
# Per-interface DHCP configuration
|
||||
networking.interfaces = perInterfaceConfig;
|
||||
};
|
||||
}
|
||||
20
nixos/modules/hardware/facter/networking/initrd.nix
Normal file
20
nixos/modules/hardware/facter/networking/initrd.nix
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
{ lib, config, ... }:
|
||||
let
|
||||
facterLib = import ../lib.nix lib;
|
||||
|
||||
inherit (config.hardware.facter) report;
|
||||
in
|
||||
{
|
||||
options.hardware.facter.detected.boot.initrd.networking.kernelModules = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.str;
|
||||
default = lib.uniqueStrings (facterLib.collectDrivers (report.hardware.network_controller or [ ]));
|
||||
defaultText = "hardware dependent";
|
||||
description = ''
|
||||
List of kernel modules to include in the initrd to support networking.
|
||||
'';
|
||||
};
|
||||
|
||||
config = lib.mkIf config.boot.initrd.network.enable {
|
||||
boot.initrd.kernelModules = config.hardware.facter.detected.boot.initrd.networking.kernelModules;
|
||||
};
|
||||
}
|
||||
57
nixos/modules/hardware/facter/networking/intel.nix
Normal file
57
nixos/modules/hardware/facter/networking/intel.nix
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
{ lib, config, ... }:
|
||||
let
|
||||
inherit (config.hardware.facter) report;
|
||||
cfg = config.hardware.facter.detected.networking.intel;
|
||||
in
|
||||
{
|
||||
options.hardware.facter.detected.networking.intel = with lib; {
|
||||
_2200BG.enable = mkEnableOption "the Facter Intel 2200BG module" // {
|
||||
|
||||
default = lib.any (
|
||||
{
|
||||
vendor ? { },
|
||||
device ? { },
|
||||
...
|
||||
}:
|
||||
# vendor (0x8086) Intel Corp.
|
||||
(vendor.value or 0) == 32902
|
||||
&& (lib.elem (device.value or 0) [
|
||||
4163 # 0x1043
|
||||
4175 # 0x104f
|
||||
16928 # 0x4220
|
||||
16929 # 0x4221
|
||||
16931 # 0x4223
|
||||
16932 # 0x4224
|
||||
])
|
||||
) (report.hardware.network_controller or [ ]);
|
||||
|
||||
defaultText = "hardware dependent";
|
||||
};
|
||||
_3945ABG.enable = mkEnableOption "the Facter Intel 3945ABG module" // {
|
||||
|
||||
default = lib.any (
|
||||
{
|
||||
vendor ? { },
|
||||
device ? { },
|
||||
...
|
||||
}:
|
||||
# vendor (0x8086) Intel Corp.
|
||||
(vendor.value or 0) == 32902
|
||||
&& (lib.elem (device.value or 0) [
|
||||
16937 # 0x4229
|
||||
16938 # 0x4230
|
||||
16930 # 0x4222
|
||||
16935 # 0x4227
|
||||
])
|
||||
) (report.hardware.network_controller or [ ]);
|
||||
|
||||
defaultText = "hardware dependent";
|
||||
};
|
||||
};
|
||||
|
||||
config = {
|
||||
networking.enableIntel2200BGFirmware = lib.mkIf cfg._2200BG.enable (lib.mkDefault true);
|
||||
hardware.enableRedistributableFirmware = lib.mkIf cfg._3945ABG.enable (lib.mkDefault true);
|
||||
};
|
||||
|
||||
}
|
||||
|
|
@ -223,7 +223,7 @@ in
|
|||
}
|
||||
repartConfig = {
|
||||
Type = "esp";
|
||||
Format = "fat";
|
||||
Format = "vfat";
|
||||
};
|
||||
};
|
||||
"20-root" = {
|
||||
|
|
|
|||
|
|
@ -240,7 +240,6 @@
|
|||
./programs/iay.nix
|
||||
./programs/iftop.nix
|
||||
./programs/iio-hyprland.nix
|
||||
./programs/iio-niri.nix
|
||||
./programs/immersed.nix
|
||||
./programs/iotop.nix
|
||||
./programs/java.nix
|
||||
|
|
@ -857,6 +856,7 @@
|
|||
./services/misc/heisenbridge.nix
|
||||
./services/misc/homepage-dashboard.nix
|
||||
./services/misc/ihaskell.nix
|
||||
./services/misc/iio-niri.nix
|
||||
./services/misc/input-remapper.nix
|
||||
./services/misc/invidious-router.nix
|
||||
./services/misc/irkerd.nix
|
||||
|
|
|
|||
|
|
@ -130,7 +130,7 @@ in
|
|||
passwordFile = lib.mkOption {
|
||||
default =
|
||||
if localMpd then
|
||||
(lib.findFirst (c: lib.any (x: x == "read") c.permissions) {
|
||||
(lib.findFirst (c: lib.elem "read" c.permissions) {
|
||||
passwordFile = null;
|
||||
} mpdCfg.credentials).passwordFile
|
||||
else
|
||||
|
|
|
|||
|
|
@ -101,14 +101,12 @@ let
|
|||
# removes NixOS special and unused attributes
|
||||
sensorToConf =
|
||||
{ type, query, ... }@args:
|
||||
(lib.filterAttrs (
|
||||
k: v:
|
||||
v != null
|
||||
&& !(lib.elem k [
|
||||
(lib.filterAttrs (k: v: v != null) (
|
||||
lib.removeAttrs args [
|
||||
"type"
|
||||
"query"
|
||||
])
|
||||
) args)
|
||||
]
|
||||
))
|
||||
// {
|
||||
"${type}" = query;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -403,7 +403,7 @@ in
|
|||
}
|
||||
];
|
||||
services.public-inbox.settings = filterAttrsRecursive (n: v: v != null) {
|
||||
publicinbox = mapAttrs (n: filterAttrs (n: v: n != "description")) cfg.inboxes;
|
||||
publicinbox = mapAttrs (n: v: removeAttrs v [ "description" ]) cfg.inboxes;
|
||||
};
|
||||
users = {
|
||||
users.public-inbox = {
|
||||
|
|
|
|||
|
|
@ -126,7 +126,7 @@ let
|
|||
'';
|
||||
|
||||
# Get a submodule without any embedded metadata:
|
||||
_filter = x: filterAttrs (k: v: k != "_module") x;
|
||||
_filter = x: removeAttrs x [ "_module" ];
|
||||
|
||||
# https://grafana.com/docs/grafana/latest/administration/provisioning/#datasources
|
||||
grafanaTypes.datasourceConfig = types.submodule {
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@ let
|
|||
nameValuePair
|
||||
toLower
|
||||
filterAttrs
|
||||
removeAttrs
|
||||
escapeShellArg
|
||||
literalExpression
|
||||
mkIf
|
||||
|
|
@ -41,7 +42,7 @@ let
|
|||
)
|
||||
else
|
||||
nameValuePair (toLower name) value
|
||||
) (filterAttrs (n: _: !(n == "_module")) cfg.configuration)
|
||||
) (removeAttrs cfg.configuration [ "_module" ])
|
||||
)
|
||||
);
|
||||
|
||||
|
|
|
|||
|
|
@ -13,11 +13,11 @@ let
|
|||
types
|
||||
concatStringsSep
|
||||
concatMapStringsSep
|
||||
any
|
||||
elem
|
||||
optionals
|
||||
;
|
||||
collectorIsEnabled = final: any (collector: (final == collector)) cfg.enabledCollectors;
|
||||
collectorIsDisabled = final: any (collector: (final == collector)) cfg.disabledCollectors;
|
||||
collectorIsEnabled = final: elem final cfg.enabledCollectors;
|
||||
collectorIsDisabled = final: elem final cfg.disabledCollectors;
|
||||
in
|
||||
{
|
||||
port = 9100;
|
||||
|
|
|
|||
|
|
@ -8,6 +8,34 @@ between a reverse proxy and the service to be protected.
|
|||
This module is designed to use Unix domain sockets as the socket paths can be automatically configured for multiple
|
||||
instances, but TCP sockets are also supported.
|
||||
|
||||
Configuring multiple instances may look like the following.
|
||||
|
||||
Notes:
|
||||
|
||||
- Each instance as its runtime directory set to `anubis/anubis-<instance name>`.
|
||||
- When a single instance is declared with unix sockets, the runtime directory `anubis` is allowed for backward
|
||||
compatibility.
|
||||
|
||||
```nix
|
||||
{
|
||||
services.anubis.instances."instance-1" = {
|
||||
# Runtime directory: "anubis/anubis-instance-1".
|
||||
settings = {
|
||||
BIND = "/run/anubis/anubis-instance-1/anubis.sock";
|
||||
TARGET = "http://localhost:8001";
|
||||
};
|
||||
};
|
||||
|
||||
services.anubis.instances."instance-2" = {
|
||||
# Runtime directory: "anubis/anubis-instance-2".
|
||||
settings = {
|
||||
BIND = "/run/anubis/anubis-instance-2/anubis.sock";
|
||||
TARGET = "http://localhost:8002";
|
||||
};
|
||||
};
|
||||
}
|
||||
```
|
||||
|
||||
A minimal configuration with [nginx](#opt-services.nginx.enable) may look like the following:
|
||||
|
||||
```nix
|
||||
|
|
|
|||
|
|
@ -12,6 +12,28 @@ let
|
|||
enabledInstances = lib.filterAttrs (_: conf: conf.enable) cfg.instances;
|
||||
instanceName = name: if name == "" then "anubis" else "anubis-${name}";
|
||||
|
||||
unixAddr = network: addr: lib.strings.optionalString (network == "unix") addr;
|
||||
unixSocketAddrs =
|
||||
settings:
|
||||
lib.filter (x: x != "") [
|
||||
(unixAddr settings.BIND_NETWORK settings.BIND)
|
||||
(unixAddr settings.METRICS_BIND_NETWORK settings.METRICS_BIND)
|
||||
];
|
||||
|
||||
runtimeDirectoryPrefix = name: "/run/anubis/${instanceName name}/";
|
||||
instanceUsesUnixSockets = instance: lib.length (unixSocketAddrs instance.settings) > 0;
|
||||
instanceUsesDedicatedRuntimeDirectory =
|
||||
name: instance:
|
||||
lib.any (lib.hasPrefix (runtimeDirectoryPrefix name)) (unixSocketAddrs instance.settings);
|
||||
useDedicatedRuntimeDirectory =
|
||||
# Set when:
|
||||
# - Multiple instances are configured to use unix sockets.
|
||||
# - At least one instance uses the new runtime directory prefix: /run/anubis/anubis-<instance name>.
|
||||
lib.count instanceUsesUnixSockets (lib.attrValues enabledInstances) > 1
|
||||
|| lib.any (attrs: instanceUsesDedicatedRuntimeDirectory attrs.name attrs.value) (
|
||||
lib.attrsToList enabledInstances
|
||||
);
|
||||
|
||||
commonSubmodule =
|
||||
isDefault:
|
||||
let
|
||||
|
|
@ -185,6 +207,7 @@ let
|
|||
default = "/run/anubis/${instanceName name}.sock";
|
||||
description = ''
|
||||
The address that Anubis listens to. See Go's [`net.Listen`](https://pkg.go.dev/net#Listen) for syntax.
|
||||
Use the prefix ${runtimeDirectoryPrefix "<instance name>"} when configuring multiple instances.
|
||||
|
||||
Defaults to Unix domain sockets. To use TCP sockets, set this to a TCP address and `BIND_NETWORK` to `"tcp"`.
|
||||
'';
|
||||
|
|
@ -196,6 +219,7 @@ let
|
|||
description = ''
|
||||
The address Anubis' metrics server listens to. See Go's [`net.Listen`](https://pkg.go.dev/net#Listen) for
|
||||
syntax.
|
||||
Use the prefix ${runtimeDirectoryPrefix "<instance name>"} when configuring multiple instances.
|
||||
|
||||
The metrics server is enabled by default and may be disabled. However, due to implementation details, this is
|
||||
only possible by setting a command line flag. See {option}`services.anubis.defaultOptions.extraFlags` for an
|
||||
|
|
@ -245,6 +269,25 @@ in
|
|||
};
|
||||
|
||||
config = lib.mkIf (enabledInstances != { }) {
|
||||
warnings = [
|
||||
"RuntimeDirectory is going to be migrated from `anubis` to `anubis/anubis-<instance name>`, update BIND and METRICS_BIND to ${runtimeDirectoryPrefix "<instance name>"} if using unix sockets"
|
||||
];
|
||||
|
||||
assertions =
|
||||
let
|
||||
validInstanceUnixSocketAddrs =
|
||||
{ name, value }:
|
||||
lib.all (lib.hasPrefix (runtimeDirectoryPrefix name)) (unixSocketAddrs value.settings);
|
||||
in
|
||||
[
|
||||
{
|
||||
assertion =
|
||||
!useDedicatedRuntimeDirectory
|
||||
|| lib.all validInstanceUnixSocketAddrs (lib.attrsToList enabledInstances);
|
||||
message = "use the prefix ${runtimeDirectoryPrefix "<instance name>"} in BIND and METRICS_BIND when configuring multiple instances";
|
||||
}
|
||||
];
|
||||
|
||||
users.users = lib.mkIf (cfg.defaultOptions.user == "anubis") {
|
||||
anubis = {
|
||||
isSystemUser = true;
|
||||
|
|
@ -288,19 +331,14 @@ in
|
|||
(lib.singleton (lib.getExe cfg.package)) ++ instance.extraFlags
|
||||
);
|
||||
RuntimeDirectory =
|
||||
if
|
||||
lib.any (lib.hasPrefix "/run/anubis") (
|
||||
with instance.settings;
|
||||
[
|
||||
BIND
|
||||
METRICS_BIND
|
||||
]
|
||||
)
|
||||
then
|
||||
if useDedicatedRuntimeDirectory then
|
||||
"anubis/${instanceName name}"
|
||||
else if instanceUsesUnixSockets instance then
|
||||
# `dedicatedRuntimeDirectory = false`: /run/anubis may still be used.
|
||||
# Warning: `anubis` will be deprecated eventually.
|
||||
"anubis"
|
||||
else
|
||||
null;
|
||||
|
||||
# hardening
|
||||
NoNewPrivileges = true;
|
||||
CapabilityBoundingSet = null;
|
||||
|
|
|
|||
|
|
@ -198,7 +198,7 @@ in
|
|||
{
|
||||
assertion =
|
||||
initrdCfg.package.passthru.features.withWireguard
|
||||
|| !(builtins.any (kind: kind == "wireguard") initrdInterfaceTypes);
|
||||
|| !(builtins.elem "wireguard" initrdInterfaceTypes);
|
||||
message = "IfState initrd package is configured without the `wireguard` feature, but wireguard interfaces are configured. Please see the `boot.initrd.network.ifstate.package` option.";
|
||||
}
|
||||
{
|
||||
|
|
|
|||
|
|
@ -270,7 +270,7 @@ let
|
|||
lib.updateManyAttrsByPath [
|
||||
{
|
||||
path = lib.init pathList;
|
||||
update = old: lib.filterAttrs (n: v: n != (lib.last pathList)) old;
|
||||
update = old: lib.removeAttrs old [ (lib.last pathList) ];
|
||||
}
|
||||
] set;
|
||||
in
|
||||
|
|
|
|||
|
|
@ -6,9 +6,9 @@
|
|||
}:
|
||||
let
|
||||
inherit (lib)
|
||||
any
|
||||
boolToString
|
||||
concatStringsSep
|
||||
elem
|
||||
isBool
|
||||
isString
|
||||
mapAttrsToList
|
||||
|
|
@ -46,7 +46,7 @@ let
|
|||
|
||||
toStr =
|
||||
k: v:
|
||||
if (any (str: k == str) secretKeys) then
|
||||
if (elem k secretKeys) then
|
||||
v
|
||||
else if isString v then
|
||||
"'${v}'"
|
||||
|
|
|
|||
|
|
@ -338,10 +338,10 @@ in
|
|||
proxy_buffering off;
|
||||
proxy_request_buffering off;
|
||||
''
|
||||
+ lib.optionalString (lib.any (m: m.name == "brotli") config.services.nginx.additionalModules) ''
|
||||
+ lib.optionalString (lib.elem "brotli" config.services.nginx.additionalModules) ''
|
||||
brotli off;
|
||||
''
|
||||
+ lib.optionalString (lib.any (m: m.name == "zstd") config.services.nginx.additionalModules) ''
|
||||
+ lib.optionalString (lib.elem "zstd" config.services.nginx.additionalModules) ''
|
||||
zstd off;
|
||||
'';
|
||||
};
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ let
|
|||
locs: defs:
|
||||
if defs == [ ] then
|
||||
abort "This case should never happen."
|
||||
else if any (x: x == false) (getValues defs) then
|
||||
else if elem false (getValues defs) then
|
||||
false
|
||||
else
|
||||
true;
|
||||
|
|
|
|||
|
|
@ -592,7 +592,7 @@ in
|
|||
'';
|
||||
|
||||
enabledUpstreamSystemUnits = filter (n: !elem n cfg.suppressedSystemUnits) upstreamSystemUnits;
|
||||
enabledUnits = filterAttrs (n: v: !elem n cfg.suppressedSystemUnits) cfg.units;
|
||||
enabledUnits = removeAttrs cfg.units cfg.suppressedSystemUnits;
|
||||
|
||||
in
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1,4 +1,36 @@
|
|||
{ lib, ... }:
|
||||
let
|
||||
legacyBotPolicyJSON = ''
|
||||
{
|
||||
"bots": [
|
||||
{
|
||||
"import": "(data)/bots/_deny-pathological.yaml"
|
||||
},
|
||||
{
|
||||
"import": "(data)/meta/ai-block-aggressive.yaml"
|
||||
},
|
||||
{
|
||||
"import": "(data)/crawlers/_allow-good.yaml"
|
||||
},
|
||||
{
|
||||
"import": "(data)/bots/aggressive-brazilian-scrapers.yaml"
|
||||
},
|
||||
{
|
||||
"import": "(data)/common/keep-internet-working.yaml"
|
||||
},
|
||||
{
|
||||
"name": "generic-browser",
|
||||
"user_agent_regex": "Mozilla|Opera",
|
||||
"action": "CHALLENGE"
|
||||
}
|
||||
],
|
||||
"dnsbl": false,
|
||||
"status_codes": {
|
||||
"CHALLENGE": 200,
|
||||
"DENY": 200
|
||||
}
|
||||
}'';
|
||||
in
|
||||
{
|
||||
name = "anubis";
|
||||
meta.maintainers = with lib.maintainers; [
|
||||
|
|
@ -7,57 +39,75 @@
|
|||
ryand56
|
||||
];
|
||||
|
||||
nodes.machine =
|
||||
nodes.machineLegacy =
|
||||
{ config, pkgs, ... }:
|
||||
{
|
||||
services.anubis = {
|
||||
defaultOptions = {
|
||||
# Get default botPolicy
|
||||
botPolicy = lib.importJSON "${config.services.anubis.package.src}/data/botPolicies.json";
|
||||
botPolicy = builtins.fromJSON legacyBotPolicyJSON;
|
||||
settings = {
|
||||
DIFFICULTY = 3;
|
||||
USER_DEFINED_DEFAULT = true;
|
||||
};
|
||||
};
|
||||
instances = {
|
||||
"".settings = {
|
||||
|
||||
instances."".settings = {
|
||||
TARGET = "http://localhost:8080";
|
||||
DIFFICULTY = 5;
|
||||
USER_DEFINED_INSTANCE = true;
|
||||
};
|
||||
|
||||
instances."tcp" = {
|
||||
user = "anubis-tcp";
|
||||
group = "anubis-tcp";
|
||||
settings = {
|
||||
TARGET = "http://localhost:8080";
|
||||
DIFFICULTY = 5;
|
||||
USER_DEFINED_INSTANCE = true;
|
||||
};
|
||||
|
||||
"tcp" = {
|
||||
user = "anubis-tcp";
|
||||
group = "anubis-tcp";
|
||||
settings = {
|
||||
TARGET = "http://localhost:8080";
|
||||
BIND = ":9000";
|
||||
BIND_NETWORK = "tcp";
|
||||
METRICS_BIND = ":9001";
|
||||
METRICS_BIND_NETWORK = "tcp";
|
||||
};
|
||||
};
|
||||
|
||||
"unix-upstream" = {
|
||||
group = "nginx";
|
||||
settings.TARGET = "unix:///run/nginx/nginx.sock";
|
||||
};
|
||||
|
||||
"botPolicy-default" = {
|
||||
botPolicy = null;
|
||||
settings.TARGET = "http://localhost:8080";
|
||||
};
|
||||
|
||||
"botPolicy-file" = {
|
||||
settings = {
|
||||
TARGET = "http://localhost:8080";
|
||||
POLICY_FNAME = "/etc/anubis-botPolicy.json";
|
||||
};
|
||||
BIND = "127.0.0.1:9000";
|
||||
BIND_NETWORK = "tcp";
|
||||
METRICS_BIND = "127.0.0.1:9001";
|
||||
METRICS_BIND_NETWORK = "tcp";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
# Empty json for testing
|
||||
users.users.nginx.extraGroups = [ config.users.groups.anubis.name ];
|
||||
services.nginx = {
|
||||
enable = true;
|
||||
recommendedProxySettings = true;
|
||||
virtualHosts."basic.localhost".locations = {
|
||||
"/".proxyPass = "http://unix:${config.services.anubis.instances."".settings.BIND}";
|
||||
"/metrics".proxyPass = "http://unix:${config.services.anubis.instances."".settings.METRICS_BIND}";
|
||||
};
|
||||
|
||||
virtualHosts."tcp.localhost".locations = {
|
||||
"/".proxyPass = "http://${config.services.anubis.instances."tcp".settings.BIND}";
|
||||
"/metrics".proxyPass = "http://${config.services.anubis.instances."tcp".settings.METRICS_BIND}";
|
||||
};
|
||||
|
||||
# emulate an upstream with nginx, listening on tcp and unix sockets.
|
||||
virtualHosts."upstream.localhost" = {
|
||||
default = true; # make nginx match this vhost for `localhost`
|
||||
listen = [
|
||||
{ addr = "unix:/run/nginx/nginx.sock"; }
|
||||
{
|
||||
addr = "localhost";
|
||||
port = 8080;
|
||||
}
|
||||
];
|
||||
locations."/" = {
|
||||
tryFiles = "$uri $uri/index.html =404";
|
||||
root = pkgs.runCommand "anubis-test-upstream" { } ''
|
||||
mkdir $out
|
||||
echo "it works" >> $out/index.html
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
nodes.machine =
|
||||
{ config, pkgs, ... }:
|
||||
{
|
||||
environment.etc."anubis-botPolicy.json".text = lib.generators.toJSON { } {
|
||||
bots = [
|
||||
{
|
||||
|
|
@ -68,8 +118,73 @@
|
|||
];
|
||||
};
|
||||
|
||||
services.anubis = {
|
||||
defaultOptions = {
|
||||
botPolicy = builtins.fromJSON legacyBotPolicyJSON;
|
||||
settings = {
|
||||
DIFFICULTY = 3;
|
||||
USER_DEFINED_DEFAULT = true;
|
||||
};
|
||||
};
|
||||
|
||||
instances."".settings = {
|
||||
TARGET = "http://localhost:8080";
|
||||
DIFFICULTY = 5;
|
||||
USER_DEFINED_INSTANCE = true;
|
||||
BIND = "/run/anubis/anubis/anubis.sock";
|
||||
METRICS_BIND = "/run/anubis/anubis/anubis-metrics.sock";
|
||||
};
|
||||
|
||||
instances."tcp" = {
|
||||
user = "anubis-tcp";
|
||||
group = "anubis-tcp";
|
||||
settings = {
|
||||
TARGET = "http://localhost:8080";
|
||||
BIND = "127.0.0.1:9000";
|
||||
BIND_NETWORK = "tcp";
|
||||
METRICS_BIND = "127.0.0.1:9001";
|
||||
METRICS_BIND_NETWORK = "tcp";
|
||||
};
|
||||
};
|
||||
|
||||
instances."another-unix-listen" = {
|
||||
settings = {
|
||||
TARGET = "http://localhost:8080";
|
||||
BIND = "/run/anubis/anubis-another-unix-listen/anubis.sock";
|
||||
METRICS_BIND = "/run/anubis/anubis-another-unix-listen/anubis-metrics.sock";
|
||||
};
|
||||
};
|
||||
|
||||
instances."unix-upstream" = {
|
||||
group = "nginx";
|
||||
settings = {
|
||||
BIND = "/run/anubis/anubis-unix-upstream/anubis.sock";
|
||||
METRICS_BIND = "/run/anubis/anubis-unix-upstream/anubis-metrics.sock";
|
||||
TARGET = "unix:///run/nginx/nginx.sock";
|
||||
};
|
||||
};
|
||||
|
||||
instances."botPolicy-default" = {
|
||||
botPolicy = null;
|
||||
settings = {
|
||||
TARGET = "http://localhost:8080";
|
||||
BIND = "/run/anubis/anubis-botPolicy-default/anubis.sock";
|
||||
METRICS_BIND = "/run/anubis/anubis-botPolicy-default/anubis-metrics.sock";
|
||||
};
|
||||
};
|
||||
|
||||
instances."botPolicy-file" = {
|
||||
settings = {
|
||||
TARGET = "http://localhost:8080";
|
||||
POLICY_FNAME = "/etc/anubis-botPolicy.json";
|
||||
BIND = "/run/anubis/anubis-botPolicy-file/anubis.sock";
|
||||
METRICS_BIND = "/run/anubis/anubis-botPolicy-file/anubis-metrics.sock";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
# support
|
||||
users.users.nginx.extraGroups = [ config.services.anubis.defaultOptions.group ];
|
||||
users.users.nginx.extraGroups = [ config.users.groups.anubis.name ];
|
||||
services.nginx = {
|
||||
enable = true;
|
||||
recommendedProxySettings = true;
|
||||
|
|
@ -79,12 +194,21 @@
|
|||
};
|
||||
|
||||
virtualHosts."tcp.localhost".locations = {
|
||||
"/".proxyPass = "http://localhost:9000";
|
||||
"/metrics".proxyPass = "http://localhost:9001";
|
||||
"/".proxyPass = "http://${config.services.anubis.instances."tcp".settings.BIND}";
|
||||
"/metrics".proxyPass = "http://${config.services.anubis.instances."tcp".settings.METRICS_BIND}";
|
||||
};
|
||||
|
||||
virtualHosts."another-unix-listen".locations = {
|
||||
"/".proxyPass = "http://unix:${
|
||||
config.services.anubis.instances."another-unix-listen".settings.BIND
|
||||
}";
|
||||
"/metrics".proxyPass = "http://unix:${
|
||||
config.services.anubis.instances."another-unix-listen".settings.METRICS_BIND
|
||||
}";
|
||||
};
|
||||
|
||||
virtualHosts."unix.localhost".locations = {
|
||||
"/".proxyPass = "http://unix:${config.services.anubis.instances.unix-upstream.settings.BIND}";
|
||||
"/".proxyPass = "http://unix:${config.services.anubis.instances."unix-upstream".settings.BIND}";
|
||||
};
|
||||
|
||||
# emulate an upstream with nginx, listening on tcp and unix sockets.
|
||||
|
|
@ -109,43 +233,61 @@
|
|||
};
|
||||
|
||||
testScript = ''
|
||||
for unit in ["nginx", "anubis", "anubis-tcp", "anubis-unix-upstream"]:
|
||||
machine.wait_for_unit(unit + ".service")
|
||||
with subtest("Legacy anubis service configuration: supports only a single RuntimeDirectory"):
|
||||
for unit in ["nginx", "anubis", "anubis-tcp"]:
|
||||
machineLegacy.wait_for_unit(unit + ".service")
|
||||
|
||||
for port in [9000, 9001]:
|
||||
machine.wait_for_open_port(port)
|
||||
machineLegacy.wait_for_open_unix_socket("/run/anubis/anubis.sock")
|
||||
machineLegacy.wait_for_open_unix_socket("/run/anubis/anubis-metrics.sock")
|
||||
|
||||
for instance in ["anubis", "anubis-unix-upstream"]:
|
||||
machine.wait_for_open_unix_socket(f"/run/anubis/{instance}.sock")
|
||||
machine.wait_for_open_unix_socket(f"/run/anubis/{instance}-metrics.sock")
|
||||
# Default unix socket mode with 1 instance listening on unix sockets.
|
||||
machineLegacy.succeed('curl -f http://localhost:8080 | grep "it works"')
|
||||
machineLegacy.succeed('curl -f http://basic.localhost | grep "it works"')
|
||||
machineLegacy.succeed('curl -f http://basic.localhost -H "User-Agent: Mozilla" | grep anubis')
|
||||
machineLegacy.succeed('curl -f http://basic.localhost/metrics | grep anubis_challenges_issued')
|
||||
|
||||
# Default unix socket mode
|
||||
machine.succeed('curl -f http://basic.localhost | grep "it works"')
|
||||
machine.succeed('curl -f http://basic.localhost -H "User-Agent: Mozilla" | grep anubis')
|
||||
machine.succeed('curl -f http://basic.localhost/metrics | grep anubis_challenges_issued')
|
||||
# TCP mode.
|
||||
machineLegacy.succeed('curl -f http://tcp.localhost -H "User-Agent: Mozilla" | grep anubis')
|
||||
machineLegacy.succeed('curl -f http://tcp.localhost/metrics | grep anubis_challenges_issued')
|
||||
|
||||
# TCP mode
|
||||
machine.succeed('curl -f http://tcp.localhost -H "User-Agent: Mozilla" | grep anubis')
|
||||
machine.succeed('curl -f http://tcp.localhost/metrics | grep anubis_challenges_issued')
|
||||
with subtest("Dedicated RuntimeDirectory"):
|
||||
for unit in ["nginx", "anubis", "anubis-another-unix-listen", "anubis-tcp", "anubis-unix-upstream"]:
|
||||
machine.wait_for_unit(unit + ".service")
|
||||
|
||||
# Upstream is a unix socket mode
|
||||
machine.succeed('curl -f http://unix.localhost/index.html | grep "it works"')
|
||||
for port in [9000, 9001]:
|
||||
machine.wait_for_open_port(port)
|
||||
|
||||
# Default user-defined environment variables
|
||||
machine.succeed('cat /run/current-system/etc/systemd/system/anubis.service | grep "USER_DEFINED_DEFAULT"')
|
||||
machine.succeed('cat /run/current-system/etc/systemd/system/anubis-tcp.service | grep "USER_DEFINED_DEFAULT"')
|
||||
machine.wait_for_open_unix_socket("/run/anubis/anubis/anubis.sock")
|
||||
machine.wait_for_open_unix_socket("/run/anubis/anubis/anubis-metrics.sock")
|
||||
for instance in ["another-unix-listen", "unix-upstream"]:
|
||||
machine.wait_for_open_unix_socket(f"/run/anubis/anubis-{instance}/anubis.sock")
|
||||
machine.wait_for_open_unix_socket(f"/run/anubis/anubis-{instance}/anubis-metrics.sock")
|
||||
|
||||
# Instance-specific user-specified environment variables
|
||||
machine.succeed('cat /run/current-system/etc/systemd/system/anubis.service | grep "USER_DEFINED_INSTANCE"')
|
||||
machine.fail('cat /run/current-system/etc/systemd/system/anubis-tcp.service | grep "USER_DEFINED_INSTANCE"')
|
||||
machine.succeed('curl -f http://basic.localhost | grep "it works"')
|
||||
machine.succeed('curl -f http://basic.localhost -H "User-Agent: Mozilla" | grep anubis')
|
||||
machine.succeed('curl -f http://basic.localhost/metrics | grep anubis_challenges_issued')
|
||||
|
||||
# Make sure defaults don't overwrite themselves
|
||||
machine.succeed('cat /run/current-system/etc/systemd/system/anubis.service | grep "DIFFICULTY=5"')
|
||||
machine.succeed('cat /run/current-system/etc/systemd/system/anubis-tcp.service | grep "DIFFICULTY=3"')
|
||||
machine.succeed('curl -f http://another-unix-listen.localhost -H "User-Agent: Mozilla" | grep anubis')
|
||||
machine.succeed('curl -f http://another-unix-listen.localhost/metrics | grep anubis_challenges_issued')
|
||||
|
||||
# Check correct BotPolicy settings are applied
|
||||
machine.succeed('cat /run/current-system/etc/systemd/system/anubis.service | grep "POLICY_FNAME=/nix/store"')
|
||||
machine.fail('cat /run/current-system/etc/systemd/system/anubis-botPolicy-default.service | grep "POLICY_FNAME="')
|
||||
machine.succeed('cat /run/current-system/etc/systemd/system/anubis-botPolicy-file.service | grep "POLICY_FNAME=/etc/anubis-botPolicy.json"')
|
||||
# Upstream is a unix socket mode.
|
||||
machine.succeed('curl -f http://unix.localhost/index.html | grep "it works"')
|
||||
|
||||
# Default user-defined environment variables.
|
||||
machine.succeed('cat /run/current-system/etc/systemd/system/anubis.service | grep "USER_DEFINED_DEFAULT"')
|
||||
machine.succeed('cat /run/current-system/etc/systemd/system/anubis-tcp.service | grep "USER_DEFINED_DEFAULT"')
|
||||
|
||||
# Instance-specific user-specified environment variables.
|
||||
machine.succeed('cat /run/current-system/etc/systemd/system/anubis.service | grep "USER_DEFINED_INSTANCE"')
|
||||
machine.fail('cat /run/current-system/etc/systemd/system/anubis-tcp.service | grep "USER_DEFINED_INSTANCE"')
|
||||
|
||||
# Make sure defaults don't overwrite themselves.
|
||||
machine.succeed('cat /run/current-system/etc/systemd/system/anubis.service | grep "DIFFICULTY=5"')
|
||||
machine.succeed('cat /run/current-system/etc/systemd/system/anubis-tcp.service | grep "DIFFICULTY=3"')
|
||||
|
||||
# Check correct BotPolicy settings are applied
|
||||
machine.succeed('cat /run/current-system/etc/systemd/system/anubis.service | grep "POLICY_FNAME=/nix/store"')
|
||||
machine.fail('cat /run/current-system/etc/systemd/system/anubis-botPolicy-default.service | grep "POLICY_FNAME="')
|
||||
machine.succeed('cat /run/current-system/etc/systemd/system/anubis-botPolicy-file.service | grep "POLICY_FNAME=/etc/anubis-botPolicy.json"')
|
||||
'';
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,9 +18,7 @@ let
|
|||
}:
|
||||
let
|
||||
masterName = head (
|
||||
filter (machineName: any (role: role == "master") machines.${machineName}.roles) (
|
||||
attrNames machines
|
||||
)
|
||||
filter (machineName: lib.elem "master" machines.${machineName}.roles) (attrNames machines)
|
||||
);
|
||||
master = machines.${masterName};
|
||||
extraHosts = ''
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ let
|
|||
groupName:
|
||||
# users.users attrset
|
||||
user:
|
||||
lib.any (x: x == user.name) config.users.groups.${groupName}.members;
|
||||
lib.elem user.name config.users.groups.${groupName}.members;
|
||||
|
||||
# Generates a valid SFTPGo user configuration for a given user
|
||||
# Will be converted to JSON and loaded on application startup.
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@
|
|||
ctestCheckHook,
|
||||
}:
|
||||
|
||||
assert builtins.any (g: guiModule == g) [
|
||||
assert builtins.elem guiModule [
|
||||
"fltk"
|
||||
"ntk"
|
||||
"zest"
|
||||
|
|
|
|||
|
|
@ -62,7 +62,7 @@ in
|
|||
"logo64"
|
||||
"extraPaths"
|
||||
];
|
||||
kernel = lib.filterAttrs (n: v: (lib.any (x: x == n) allowedKernelKeys)) unfilteredKernel;
|
||||
kernel = lib.filterAttrs (n: v: (lib.elem n allowedKernelKeys)) unfilteredKernel;
|
||||
config = builtins.toJSON (
|
||||
kernel
|
||||
// {
|
||||
|
|
|
|||
|
|
@ -2849,8 +2849,8 @@ let
|
|||
mktplcRef = {
|
||||
name = "vscode-ltex-plus";
|
||||
publisher = "ltex-plus";
|
||||
version = "15.5.1";
|
||||
hash = "sha256-BzIJ7gsjcMimLYeVxcvdP0fyIEmwCXxTxqil5o+810w=";
|
||||
version = "15.6.1";
|
||||
hash = "sha256-UOiYjA11P7xqPFgdR7eS63wOQl9dqWAqBxz3nklapqo=";
|
||||
};
|
||||
meta = {
|
||||
description = "VS Code extension for grammar/spell checking using LanguageTool with support for LaTeX, Markdown, and others";
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ vscode-utils.buildVscodeMarketplaceExtension {
|
|||
name = "tinymist";
|
||||
publisher = "myriad-dreamin";
|
||||
inherit (tinymist) version;
|
||||
hash = "sha256-LUJ0e/ndyeeRsC2h7JJL6zymmPDWxW0cPGBceuC7+X0=";
|
||||
hash = "sha256-Sm2Ij1yHMQzPM9lKtiejHRrdCot/DRzgnxznwlZyyro=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
|
|
|||
|
|
@ -85,13 +85,13 @@ in
|
|||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "imagemagick";
|
||||
version = "7.1.2-7";
|
||||
version = "7.1.2-8";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ImageMagick";
|
||||
repo = "ImageMagick";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-9ARCYftoXiilpJoj+Y+aLCEqLmhHFYSrHfgA5DQHbGo=";
|
||||
hash = "sha256-2jSQ59Wi6/1dbS/AgM1DfW6WlwoYuJlnTLoM8Mc6Ji8=";
|
||||
};
|
||||
|
||||
outputs = [
|
||||
|
|
|
|||
|
|
@ -67,6 +67,11 @@ stdenv.mkDerivation (finalAttrs: {
|
|||
runHook postInstall
|
||||
'';
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace CMakeLists.txt \
|
||||
--replace-fail "cmake_minimum_required(VERSION 3.4)" "cmake_minimum_required(VERSION 3.10)"
|
||||
'';
|
||||
|
||||
postFixup = ''
|
||||
wrapProgram $out/bin/Hypr --prefix PATH : ${lib.makeBinPath [ xmodmap ]}
|
||||
'';
|
||||
|
|
|
|||
|
|
@ -44,6 +44,7 @@
|
|||
nix-update-script,
|
||||
darwinMinVersionHook,
|
||||
apple-sdk_12,
|
||||
fetchpatch2,
|
||||
}:
|
||||
let
|
||||
inherit (lib)
|
||||
|
|
@ -65,6 +66,12 @@ stdenv.mkDerivation (finalAttrs: {
|
|||
patches = [
|
||||
# https://github.com/azahar-emu/azahar/pull/1305
|
||||
./fix-zstd-seekable-include.patch
|
||||
|
||||
# TODO: Remove in next release
|
||||
(fetchpatch2 {
|
||||
url = "https://github.com/azahar-emu/azahar/commit/1f483e1d335374482845d0325ac8b13af3162c53.patch?full_index=1";
|
||||
hash = "sha256-9rmRbv7VFMhHly5qTGaeBLpvtWMu6HkCGUUM+t78Meg=";
|
||||
})
|
||||
];
|
||||
|
||||
strictDeps = true;
|
||||
|
|
|
|||
|
|
@ -38,6 +38,9 @@ stdenv.mkDerivation rec {
|
|||
cmakeFlagsArray=("-DCMAKE_BUILD_TYPE=" "-DCMAKE_C_FLAGS=-O3 ${
|
||||
lib.optionalString (!debug) "-DNDEBUG"
|
||||
}");
|
||||
sed -e \
|
||||
's/cmake_minimum_required(VERSION 2[.]8)/cmake_minimum_required(VERSION 3.5)/' \
|
||||
-i CMakeLists.txt
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
|
|
|
|||
|
|
@ -8,14 +8,14 @@
|
|||
|
||||
python3Packages.buildPythonApplication rec {
|
||||
pname = "blint";
|
||||
version = "3.0.2";
|
||||
version = "3.0.4";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "owasp-dep-scan";
|
||||
repo = "blint";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-ell0/opQso7/qD6d6i18vU55TfTgdcZwVFXD+yZg9/g=";
|
||||
hash = "sha256-6dBNzBjhcBMX+PQ4NbjM18APqFuURH9/MYxHFZ/x7J8=";
|
||||
};
|
||||
|
||||
build-system = [
|
||||
|
|
|
|||
|
|
@ -142,14 +142,12 @@ stdenv.mkDerivation (finalAttrs: {
|
|||
# the following are distributed with calibre, but we use upstream instead
|
||||
odfpy
|
||||
]
|
||||
++
|
||||
lib.optionals (lib.lists.any (p: p == stdenv.hostPlatform.system) pyqt6-webengine.meta.platforms)
|
||||
[
|
||||
# much of calibre's functionality is usable without a web
|
||||
# browser, so we enable building on platforms which qtwebengine
|
||||
# does not support by simply omitting qtwebengine.
|
||||
pyqt6-webengine
|
||||
]
|
||||
++ lib.optionals (lib.lists.elem stdenv.hostPlatform.system pyqt6-webengine.meta.platforms) [
|
||||
# much of calibre's functionality is usable without a web
|
||||
# browser, so we enable building on platforms which qtwebengine
|
||||
# does not support by simply omitting qtwebengine.
|
||||
pyqt6-webengine
|
||||
]
|
||||
++ lib.optional unrarSupport unrardll
|
||||
))
|
||||
piper-tts
|
||||
|
|
|
|||
|
|
@ -36,14 +36,14 @@ let
|
|||
in
|
||||
organicmaps.overrideAttrs (oldAttrs: rec {
|
||||
pname = "comaps";
|
||||
version = "2025.10.16-1";
|
||||
version = "2025.10.20-1";
|
||||
|
||||
src = fetchFromGitea {
|
||||
domain = "codeberg.org";
|
||||
owner = "comaps";
|
||||
repo = "comaps";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-2pnAYc5Ru1OK7ecCN1kKryAPPdxUIGQp9x2y4MosRl8=";
|
||||
hash = "sha256-9L7wyIXieKkKSrudnmPyiLPu4Jfp10xWi5o5lGslLWc=";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -6,13 +6,13 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "der-ascii";
|
||||
version = "0.6.0";
|
||||
version = "0.7.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "google";
|
||||
repo = "der-ascii";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-xGzxq5AHvzLUOp9VUcI9JMwrCpVIrpDvenWUOEBP6pA=";
|
||||
sha256 = "sha256-i4rNeNDE7bIsO04haMKsbJmyvQRhhEt3I7UxmfTtL78=";
|
||||
};
|
||||
vendorHash = null;
|
||||
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ stdenv.mkDerivation {
|
|||
|
||||
env.NIX_CFLAGS_COMPILE = toString [ "-fpermissive" ];
|
||||
|
||||
postFixup = lib.optionalString (lib.any (x: x == "vitalium") plugins || plugins == [ ]) ''
|
||||
postFixup = lib.optionalString (lib.elem "vitalium" plugins || plugins == [ ]) ''
|
||||
for file in \
|
||||
$out/lib/lv2/vitalium.lv2/vitalium.so \
|
||||
$out/lib/vst/vitalium.so \
|
||||
|
|
|
|||
29
pkgs/by-name/di/distro-info-data/package.nix
Normal file
29
pkgs/by-name/di/distro-info-data/package.nix
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
{
|
||||
fetchFromGitLab,
|
||||
lib,
|
||||
stdenv,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "distro-info-data";
|
||||
version = "0.67";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
domain = "salsa.debian.org";
|
||||
owner = "debian";
|
||||
repo = "distro-info-data";
|
||||
tag = "debian/${finalAttrs.version}";
|
||||
hash = "sha256-xm/ajsPKtnmuyEkVxM1AxV7Tl0njkqjOmhE5rKRQ36Q=";
|
||||
};
|
||||
|
||||
makeFlags = [ "PREFIX=$(out)" ];
|
||||
|
||||
meta = {
|
||||
description = "Information about Debian and Ubuntu releases";
|
||||
homepage = "https://salsa.debian.org/debian/distro-info-data";
|
||||
changelog = "https://salsa.debian.org/debian/distro-info-data/-/blob/${finalAttrs.src.tag}/debian/changelog";
|
||||
license = lib.licenses.isc;
|
||||
maintainers = with lib.maintainers; [ andersk ];
|
||||
platforms = lib.platforms.all;
|
||||
};
|
||||
})
|
||||
|
|
@ -6,12 +6,12 @@
|
|||
|
||||
buildDotnetGlobalTool {
|
||||
pname = "docfx";
|
||||
version = "2.78.3";
|
||||
version = "2.78.4";
|
||||
|
||||
dotnet-sdk = dotnetCorePackages.sdk_8_0;
|
||||
dotnet-runtime = dotnetCorePackages.runtime_8_0;
|
||||
|
||||
nugetHash = "sha256-hLb6OmxqXOOxFaq/N+aZ0sAzEYjU0giX3c1SWQtKDbs=";
|
||||
nugetHash = "sha256-VvrKQjOnQ7RGp1hP+Bldi7CaM6qpfp4InB5rESISqEg=";
|
||||
|
||||
meta = {
|
||||
description = "Build your technical documentation site with docfx, with landing pages, markdown, API reference docs for .NET, REST API and more";
|
||||
|
|
|
|||
|
|
@ -20,6 +20,10 @@ python3.pkgs.buildPythonApplication {
|
|||
hash = "sha256-zrH4h4C4y3oTiOXsidFv/rIJNzCdV2lqzNEg0SOkX4w=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace dput/core.py --replace-fail /usr/share/dput-ng "$out/share/dput-ng"
|
||||
'';
|
||||
|
||||
build-system = with python3.pkgs; [
|
||||
setuptools
|
||||
];
|
||||
|
|
@ -31,10 +35,13 @@ python3.pkgs.buildPythonApplication {
|
|||
coverage
|
||||
xdg
|
||||
python-debian
|
||||
distro-info
|
||||
];
|
||||
|
||||
postInstall = ''
|
||||
cp -r bin $out/
|
||||
mkdir -p "$out/share/dput-ng"
|
||||
cp -r skel/* "$out/share/dput-ng/"
|
||||
'';
|
||||
|
||||
pythonImportsCheck = [ "dput" ];
|
||||
|
|
|
|||
|
|
@ -8,13 +8,13 @@
|
|||
}:
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "fennel-ls";
|
||||
version = "0.2.1";
|
||||
version = "0.2.2";
|
||||
|
||||
src = fetchFromSourcehut {
|
||||
owner = "~xerool";
|
||||
repo = "fennel-ls";
|
||||
rev = finalAttrs.version;
|
||||
hash = "sha256-6ZbGRTBBRktudGVBZ+UMn8l0+wKa8f5dg7UOwLhOT7E=";
|
||||
hash = "sha256-N1530u8Kq7ljdEdTFk0CJJyMLMVX5huQWXjyoMBJN5E=";
|
||||
};
|
||||
buildInputs = [
|
||||
lua
|
||||
|
|
|
|||
|
|
@ -18,13 +18,13 @@ assert stdenv.hostPlatform.isDarwin -> (!enableWlrSupport);
|
|||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "flameshot";
|
||||
version = "13.1.0";
|
||||
version = "13.2.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "flameshot-org";
|
||||
repo = "flameshot";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-Wg0jc1AqgetaESmTyhzAHx3zal/5DMDum7fzhClqeck=";
|
||||
hash = "sha256-oQMM2BUY6gpBjSRboR1YMZLIi6p0EmrHps7Y6YI7ytU=";
|
||||
};
|
||||
|
||||
cmakeFlags = [
|
||||
|
|
|
|||
|
|
@ -10,11 +10,11 @@
|
|||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "github-copilot-cli";
|
||||
version = "0.0.328";
|
||||
version = "0.0.351";
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://registry.npmjs.org/@github/copilot/-/copilot-${finalAttrs.version}.tgz";
|
||||
hash = "sha256-9oTaVjvwyS8KY8N5kUEiAs+l6vEd/BZ0AGJI0p9Jie0=";
|
||||
hash = "sha256-pv2/VTrAOtb2wlOCVbs6qmlb0jbCVl4KpwhlEnVxvP8=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ makeBinaryWrapper ];
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "google-java-format";
|
||||
version = "1.30.0";
|
||||
version = "1.31.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/google/google-java-format/releases/download/v${version}/google-java-format-${version}-all-deps.jar";
|
||||
sha256 = "sha256-8iOaiiNKJApU/f94CdSz5mcCwh9ZDHegts97IMgp6Vo=";
|
||||
sha256 = "sha256-jUv6Lck4iCASp4nMaEl2ivpK+06wEwjGtx+R8I4sVQg=";
|
||||
};
|
||||
|
||||
dontUnpack = true;
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ let
|
|||
# libcs in nixpkgs (musl and glibc).
|
||||
compatible =
|
||||
lib: drv:
|
||||
lib.any (lic: lic == (drv.meta.license or { })) [
|
||||
lib.elem (drv.meta.license or { }) [
|
||||
lib.licenses.mit # musl
|
||||
lib.licenses.lgpl2Plus # glibc
|
||||
];
|
||||
|
|
|
|||
|
|
@ -47,10 +47,12 @@
|
|||
# sequence = "+>"
|
||||
# '';
|
||||
extraParameters ? null,
|
||||
# Custom font set name. Required if any custom settings above.
|
||||
set ? null,
|
||||
# Custom font set name. Required if `extraParameters` is used and/or
|
||||
# if `privateBuildPlan` is a TOML string.
|
||||
set ? privateBuildPlan.family or null,
|
||||
}:
|
||||
|
||||
assert (builtins.isAttrs privateBuildPlan) -> builtins.hasAttr "family" privateBuildPlan;
|
||||
assert (privateBuildPlan != null) -> set != null;
|
||||
assert (extraParameters != null) -> set != null;
|
||||
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ llvmPackages.stdenv.mkDerivation (finalAttrs: {
|
|||
owner = "irods";
|
||||
repo = "irods_client_icommands";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-lo1eCI/CSzl7BJWdPo7KKVHfznkPN6GwsiQThUGuQdw=";
|
||||
hash = "sha256-jR7AhWeXYuJKzZRmYQUjiKSwK6PaB4dLQO8GVZwJQXk=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
|
|
|||
|
|
@ -16,19 +16,19 @@
|
|||
boost183,
|
||||
nlohmann_json,
|
||||
nanodbc,
|
||||
fmt_9,
|
||||
fmt,
|
||||
spdlog,
|
||||
}:
|
||||
|
||||
llvmPackages.stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "irods";
|
||||
version = "5.0.1";
|
||||
version = "5.0.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "irods";
|
||||
repo = "irods";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-/mcuqukgDoMc89FL/TfOhHWglsfdLmQbAnQYT8vTFsY=";
|
||||
hash = "sha256-gYwuXWRf5MZv3CTUq/RDlU9Ekbw4jZJmSgWRBKqdKJo=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
|
@ -54,12 +54,8 @@ llvmPackages.stdenv.mkDerivation (finalAttrs: {
|
|||
boost183
|
||||
nlohmann_json
|
||||
nanodbc
|
||||
# Tracking issue for `fmt_11`:
|
||||
# <https://github.com/irods/irods/issues/8454>
|
||||
fmt_9
|
||||
(spdlog.override {
|
||||
fmt = fmt_9;
|
||||
})
|
||||
fmt
|
||||
spdlog
|
||||
];
|
||||
|
||||
cmakeFlags = finalAttrs.passthru.commonCmakeFlags ++ [
|
||||
|
|
|
|||
|
|
@ -5,31 +5,36 @@
|
|||
makeWrapper,
|
||||
}:
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "kibi";
|
||||
version = "0.2.2";
|
||||
version = "0.3.0";
|
||||
|
||||
cargoHash = "sha256-7SOkREsGiolT5LxLAbjZe3aAYBT/AlhlOXDlDmoei9w=";
|
||||
cargoHash = "sha256-gXkwqmmFGNEJY7an3KWlRuLL5WuCH4P0n7BrLNsZ9/A=";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ilai-deutel";
|
||||
repo = "kibi";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-ox1qKWxJlUIFzEqeyzG2kqZix3AHnOKFrlpf6O5QM+k=";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-6uDpTQ97eNgM1lCiYPWS5QPxMNcPF3Ix14VaGiTY4Kc=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
|
||||
postInstall = ''
|
||||
install -Dm644 syntax.d/* -t $out/share/kibi/syntax.d
|
||||
install -Dm644 kibi.desktop -t $out/share/applications
|
||||
install -Dm0644 assets/logo.svg $out/share/icons/hicolor/scalable/apps/kibi.svg
|
||||
wrapProgram $out/bin/kibi --prefix XDG_DATA_DIRS : "$out/share"
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
meta = {
|
||||
description = "Text editor in ≤1024 lines of code, written in Rust";
|
||||
homepage = "https://github.com/ilai-deutel/kibi";
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ robertodr ];
|
||||
license = with lib.licenses; [
|
||||
asl20
|
||||
mit
|
||||
];
|
||||
maintainers = with lib.maintainers; [ robertodr ];
|
||||
mainProgram = "kibi";
|
||||
};
|
||||
}
|
||||
})
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
{
|
||||
lib,
|
||||
fetchFromGitLab,
|
||||
fetchpatch,
|
||||
wrapGAppsHook4,
|
||||
appstream,
|
||||
blueprint-compiler,
|
||||
|
|
@ -18,25 +17,16 @@
|
|||
}:
|
||||
python3Packages.buildPythonApplication rec {
|
||||
pname = "letterpress";
|
||||
version = "2.1";
|
||||
version = "2.2";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
domain = "gitlab.gnome.org";
|
||||
owner = "World";
|
||||
repo = "letterpress";
|
||||
rev = version;
|
||||
hash = "sha256-9U8iH3V4WMljdtWLmb0RlexLeAN5StJ0c9RlEB2E7Xs=";
|
||||
hash = "sha256-cqLodI6UjdLCKLGGcSIbXu1+LOcq2DE00V+lVS7OBMg=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
# Fix application segmentation fault on file chooser dialog opening
|
||||
# https://gitlab.gnome.org/World/Letterpress/-/merge_requests/16
|
||||
(fetchpatch {
|
||||
url = "https://gitlab.gnome.org/World/Letterpress/-/commit/15059eacca14204d1092a6e32ef30c6ce4df6d36.patch";
|
||||
hash = "sha256-pjg/O9advtkZ0l73GQtL/GYcTWeOs5l3VGOdnsZCWI0=";
|
||||
})
|
||||
];
|
||||
|
||||
runtimeDeps = [
|
||||
jp2a
|
||||
];
|
||||
|
|
@ -81,6 +71,7 @@ python3Packages.buildPythonApplication rec {
|
|||
High-res output can still be viewed comfortably by lowering the zoom factor.
|
||||
'';
|
||||
homepage = "https://apps.gnome.org/Letterpress/";
|
||||
changelog = "https://gitlab.gnome.org/World/Letterpress/-/releases/${version}";
|
||||
license = licenses.gpl3Plus;
|
||||
maintainers = [ maintainers.dawidd6 ];
|
||||
teams = [ teams.gnome-circle ];
|
||||
|
|
|
|||
|
|
@ -41,6 +41,13 @@ stdenv.mkDerivation {
|
|||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace {,depends/{libff,libfqfft}/}CMakeLists.txt \
|
||||
--replace-fail "cmake_minimum_required(VERSION 2.8)" "cmake_minimum_required(VERSION 3.10)"
|
||||
substituteInPlace depends/gtest/{,googlemock/,googletest/}CMakeLists.txt \
|
||||
--replace-fail "cmake_minimum_required(VERSION 2.6.4)" "cmake_minimum_required(VERSION 3.10)"
|
||||
'';
|
||||
|
||||
meta = {
|
||||
broken = withProcps; # Despite procps having a valid pkg-config file, CMake doesn't seem to be able to find it.
|
||||
description = "C++ library for zkSNARKs";
|
||||
|
|
|
|||
|
|
@ -106,9 +106,7 @@ stdenv.mkDerivation (finalAttrs: {
|
|||
description = "More modular rewrite of most components from VGMPlay";
|
||||
homepage = "https://github.com/ValleyBell/libvgm";
|
||||
license =
|
||||
if
|
||||
(enableEmulation && (withAllEmulators || (lib.lists.any (core: core == "WSWAN_ALL") emulators)))
|
||||
then
|
||||
if (enableEmulation && (withAllEmulators || (lib.lists.elem "WSWAN_ALL" emulators))) then
|
||||
lib.licenses.unfree # https://github.com/ValleyBell/libvgm/issues/43
|
||||
else
|
||||
lib.licenses.gpl2Only;
|
||||
|
|
|
|||
|
|
@ -21,6 +21,11 @@ stdenv.mkDerivation {
|
|||
# Turn on the flag to install after building the library.
|
||||
cmakeFlags = [ "-DMARL_INSTALL=ON" ];
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace CMakeLists.txt \
|
||||
--replace-fail "cmake_minimum_required(VERSION 3.0)" "cmake_minimum_required(VERSION 3.10)"
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/google/marl";
|
||||
description = "Hybrid thread / fiber task scheduler written in C++ 11";
|
||||
|
|
|
|||
|
|
@ -144,6 +144,11 @@ stdenv.mkDerivation {
|
|||
"-DBUILD_MEGAGLEST_MODEL_VIEWER=On"
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace {data/glest_game,.}/CMakeLists.txt \
|
||||
--replace-fail "CMAKE_MINIMUM_REQUIRED( VERSION 2.8.2 )" "cmake_minimum_required(VERSION 3.10)"
|
||||
'';
|
||||
|
||||
postInstall = ''
|
||||
for i in $out/bin/*; do
|
||||
wrapProgram $i \
|
||||
|
|
|
|||
|
|
@ -8,12 +8,12 @@
|
|||
}:
|
||||
stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
pname = "models-dev";
|
||||
version = "0-unstable-2025-10-24";
|
||||
version = "0-unstable-2025-10-25";
|
||||
src = fetchFromGitHub {
|
||||
owner = "sst";
|
||||
repo = "models.dev";
|
||||
rev = "1548a725f07c2c6113379a8c5566c2e4c4dfc91f";
|
||||
hash = "sha256-SgZFdjoSlmRS+eMbAIVPsDnwDEmzA/YFhgdHij3Qq38=";
|
||||
rev = "6aaec4681f415cd7c87519b4acd61720525cdda1";
|
||||
hash = "sha256-77PoCq072udYDsplW1ENQbw/8lQqXrEiPFh2e/oAqVw=";
|
||||
};
|
||||
|
||||
node_modules = stdenvNoCC.mkDerivation {
|
||||
|
|
|
|||
|
|
@ -20,6 +20,9 @@ stdenv.mkDerivation rec {
|
|||
|
||||
postPatch = ''
|
||||
cp ${catch2}/include/catch2/catch.hpp test/catch/catch.hpp
|
||||
|
||||
substituteInPlace CMakeLists.txt \
|
||||
--replace-fail "cmake_minimum_required(VERSION 3.0.0)" "cmake_minimum_required(VERSION 3.10)"
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [ cmake ];
|
||||
|
|
@ -38,5 +41,6 @@ stdenv.mkDerivation rec {
|
|||
description = "Small C++ wrapper for the native C ODBC API";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = [ lib.maintainers.bzizou ];
|
||||
broken = stdenv.hostPlatform.isDarwin;
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,6 +21,11 @@ stdenv.mkDerivation rec {
|
|||
# Tests fail on darwin. See https://github.com/NixOS/nixpkgs/pull/105419#issuecomment-735826894
|
||||
doCheck = !stdenv.hostPlatform.isDarwin;
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace CMakeLists.txt \
|
||||
--replace-fail "cmake_minimum_required(VERSION 3.1 FATAL_ERROR)" "cmake_minimum_required(VERSION 3.10)"
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://oatpp.io/";
|
||||
description = "Light and powerful C++ web framework for highly scalable and resource-efficient web applications";
|
||||
|
|
|
|||
|
|
@ -24,13 +24,13 @@
|
|||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "onedrive";
|
||||
version = "2.5.6";
|
||||
version = "2.5.7";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "abraunegg";
|
||||
repo = "onedrive";
|
||||
rev = "v${finalAttrs.version}";
|
||||
hash = "sha256-AFaz1RkrtsdTZfaWobdcADbzsAhbdCzJPkQX6Pa7hN8=";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-IllPh4YJvoAAyXDmSNwWDHN/EUtUuUqS7TOnBpr3Yts=";
|
||||
};
|
||||
|
||||
outputs = [
|
||||
|
|
@ -68,10 +68,8 @@ stdenv.mkDerivation (finalAttrs: {
|
|||
--fish contrib/completions/complete.fish \
|
||||
--zsh contrib/completions/complete.zsh
|
||||
|
||||
for s in $out/lib/systemd/user/onedrive.service $out/lib/systemd/system/onedrive@.service; do
|
||||
substituteInPlace $s \
|
||||
--replace-fail "/usr/bin/sleep" "${coreutils}/bin/sleep"
|
||||
done
|
||||
substituteInPlace $out/lib/systemd/user/onedrive.service $out/lib/systemd/system/onedrive@.service \
|
||||
--replace-fail "/bin/sh -c 'sleep 15'" "${coreutils}/bin/sleep 15"
|
||||
'';
|
||||
|
||||
passthru = {
|
||||
|
|
|
|||
|
|
@ -59,7 +59,7 @@ let
|
|||
# https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/issues/2454#note_112821
|
||||
"fftw"
|
||||
];
|
||||
itkIsInDepsToRemove = dep: builtins.any (d: d == dep.name) itkDepsToRemove;
|
||||
itkIsInDepsToRemove = dep: builtins.elem dep.name itkDepsToRemove;
|
||||
|
||||
# remove after https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/issues/2451
|
||||
otbSwig = swig.overrideAttrs (oldArgs: {
|
||||
|
|
|
|||
|
|
@ -20,11 +20,11 @@
|
|||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "pdns-recursor";
|
||||
version = "5.2.5";
|
||||
version = "5.2.6";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://downloads.powerdns.com/releases/pdns-recursor-${finalAttrs.version}.tar.bz2";
|
||||
hash = "sha256-qKZXp6vW6dI3zdJnU/fc9czVuMSKyBILCNK41XodhWo=";
|
||||
hash = "sha256-INt/KcULGvsensXF6LIZ0RKtrPK4rPPaQW/yR+JaxAc=";
|
||||
};
|
||||
|
||||
cargoDeps = rustPlatform.fetchCargoVendor {
|
||||
|
|
|
|||
|
|
@ -7,16 +7,16 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "pocketbase";
|
||||
version = "0.30.4";
|
||||
version = "0.31.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "pocketbase";
|
||||
repo = "pocketbase";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-n2xBwonQOEk2LVQePxdO/PraM75FFDmOqZ9fIL2xd+I=";
|
||||
hash = "sha256-YCYihhPq24JdJKAU8zr4h4z131zj4BN3Qh/y5tHmyRs=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-Zo0b0MTIRpLGPIg288ROFPIdHfMzZdFLbFZPAffWPxU=";
|
||||
vendorHash = "sha256-wsPJIlsq4Q26cce69a0oqEalfDrNIMVFt8ufdj+WId4=";
|
||||
|
||||
# This is the released subpackage from upstream repo
|
||||
subPackages = [ "examples/base" ];
|
||||
|
|
|
|||
|
|
@ -74,11 +74,11 @@ let
|
|||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "postfix";
|
||||
version = "3.10.4";
|
||||
version = "3.10.5";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://de.postfix.org/ftpmirror/official/postfix-${version}.tar.gz";
|
||||
hash = "sha256-z7ZoYf6PlkeH3a6rFfPKPn7z3nMPlxca/EpeyjOMpEQ=";
|
||||
hash = "sha256-apJr9wIXOGGwjkm8tR/KOi8mn5ozf3LvFZv0YFIIfjU=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
|
|
|||
|
|
@ -7,14 +7,14 @@
|
|||
|
||||
python3Packages.buildPythonApplication rec {
|
||||
pname = "pyradio";
|
||||
version = "0.9.3.11.19";
|
||||
version = "0.9.3.11.20";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "coderholic";
|
||||
repo = "pyradio";
|
||||
tag = version;
|
||||
hash = "sha256-fjTaURYY2pSb3mod4Vffbczmyxsn0/4SAXkb68mRhQA=";
|
||||
hash = "sha256-dcs9kwuS1/pNtBPhj6Z1VAHFJw/ajwzc2aTWGU/h4W0=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
|
|
|||
|
|
@ -43,6 +43,11 @@ stdenv.mkDerivation rec {
|
|||
sed -i '/managementgen/d' CMakeLists.txt
|
||||
sed -i '/ENV/d' src/CMakeLists.txt
|
||||
sed -i '/management/d' CMakeLists.txt
|
||||
|
||||
substituteInPlace {./,examples/}CMakeLists.txt \
|
||||
--replace-fail "cmake_minimum_required(VERSION 2.8.7 FATAL_ERROR)" "cmake_minimum_required(VERSION 3.10)"
|
||||
substituteInPlace CMakeLists.txt \
|
||||
--replace-fail "cmake_policy(SET CMP0022 OLD)" ""
|
||||
'';
|
||||
|
||||
env.NIX_CFLAGS_COMPILE = toString (
|
||||
|
|
|
|||
|
|
@ -35,9 +35,7 @@ let
|
|||
}) supportedDevices
|
||||
);
|
||||
|
||||
unsupportedDeviceIds = lib.filterAttrs (
|
||||
name: value: !(lib.hasAttr name supportedDeviceIds)
|
||||
) deviceIds;
|
||||
unsupportedDeviceIds = lib.removeAttrs deviceIds (lib.attrNames supportedDeviceIds);
|
||||
|
||||
componentHashes = {
|
||||
"arria_lite" = "sha256-ASvi9YX15b4XXabGjkuR5wl9wDwCijl8s750XTR/4XU=";
|
||||
|
|
|
|||
|
|
@ -24,6 +24,11 @@ gccStdenv.mkDerivation rec {
|
|||
];
|
||||
buildInputs = [ fuse ];
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace CMakeLists.txt \
|
||||
--replace-fail "CMAKE_MINIMUM_REQUIRED(VERSION 2.6)" "cmake_minimum_required(VERSION 3.10)"
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "FUSE for access Playstation 2 IOP IOPRP images and BIOS dumps";
|
||||
homepage = "https://github.com/mlafeldt/romdirfs";
|
||||
|
|
|
|||
|
|
@ -28,6 +28,11 @@ stdenv.mkDerivation rec {
|
|||
"-DBUILD_PACKAGE=OFF"
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace CMakeLists.txt \
|
||||
--replace-fail "cmake_minimum_required (VERSION 3.0)" "cmake_minimum_required(VERSION 3.10)"
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
broken = stdenv.hostPlatform.isDarwin;
|
||||
description = "C++ Reflection Library";
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
withStyle ? "light", # use override to specify one of "dark" / "orange" / "bigSur"
|
||||
}:
|
||||
|
||||
assert builtins.any (s: withStyle == s) [
|
||||
assert builtins.elem withStyle [
|
||||
"light"
|
||||
"dark"
|
||||
"orange"
|
||||
|
|
|
|||
|
|
@ -15,14 +15,14 @@
|
|||
}:
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "slint-lsp";
|
||||
version = "1.13.1";
|
||||
version = "1.14.1";
|
||||
|
||||
src = fetchCrate {
|
||||
inherit (finalAttrs) pname version;
|
||||
hash = "sha256-XEs7zJWocRZgVPPDM/IxOOwE7ofh+b7A/TJrQw/mMOo=";
|
||||
hash = "sha256-gVRoca4u1TVArDF226JWzLQJhUAIWA2JDyQ3Wo87AkA=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-DAoqfnis95oEPBgYeOdR3zUVdoKbay780iJ6zVkxdDU=";
|
||||
cargoHash = "sha256-f3RLJnxoEUm7gsfqj86wXgfOj9woGmisONv0RZAQCGc=";
|
||||
|
||||
rpathLibs = [
|
||||
fontconfig
|
||||
|
|
|
|||
|
|
@ -18,13 +18,13 @@
|
|||
|
||||
stdenv.mkDerivation {
|
||||
pname = "solanum";
|
||||
version = "0-unstable-2025-10-13";
|
||||
version = "0-unstable-2025-10-23";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "solanum-ircd";
|
||||
repo = "solanum";
|
||||
rev = "2d483c6e3f0d33aef9447c17b3b55d3e86098831";
|
||||
hash = "sha256-/84WXUqJTOMldIUJokPBNR4quU9YZM0PhWWWLAKoJsw=";
|
||||
rev = "4544f823127c59951c7695f0f260128ee0691a67";
|
||||
hash = "sha256-x+i4LUImepwIz5H13W5eNYl9GzgFvNGS1OSLVtl9qmE=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
|
|
|
|||
|
|
@ -8,14 +8,14 @@
|
|||
|
||||
python3Packages.buildPythonApplication rec {
|
||||
pname = "spotdl";
|
||||
version = "4.4.2";
|
||||
version = "4.4.3";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "spotDL";
|
||||
repo = "spotify-downloader";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-guQ8fIA20wtCkB5CkU7zg/INE+g8/fvQfIs5TNteQGo=";
|
||||
hash = "sha256-opbbcYjsR+xuo2uQ7Ic/2+BfkiwdEe1xD/whRonDBWo=";
|
||||
};
|
||||
|
||||
build-system = with python3Packages; [ hatchling ];
|
||||
|
|
@ -50,8 +50,8 @@ python3Packages.buildPythonApplication rec {
|
|||
pyfakefs
|
||||
pytest-mock
|
||||
pytest-subprocess
|
||||
pytest-vcr
|
||||
pytestCheckHook
|
||||
vcrpy
|
||||
writableTmpDirAsHomeHook
|
||||
];
|
||||
|
||||
|
|
@ -65,6 +65,8 @@ python3Packages.buildPythonApplication rec {
|
|||
"tests/utils/test_m3u.py"
|
||||
"tests/utils/test_metadata.py"
|
||||
"tests/utils/test_search.py"
|
||||
# TypeError: 'LocalPath' object is not subscriptable
|
||||
"tests/utils/test_config.py"
|
||||
];
|
||||
|
||||
disabledTests = [
|
||||
|
|
|
|||
|
|
@ -16,13 +16,13 @@
|
|||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "sscg";
|
||||
version = "3.0.8";
|
||||
version = "4.0.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "sgallagher";
|
||||
repo = "sscg";
|
||||
tag = "sscg-${finalAttrs.version}";
|
||||
hash = "sha256-vHZuBjFs7sGIMGFWyqaW0SzzDDsrszlLmLREJtjLH2g=";
|
||||
hash = "sha256-Z/Cea9m2v+M+t69gx/Y6IGAUZ/p5ZsTA80+fvUvqvYc=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
|
|
|||
|
|
@ -10,16 +10,16 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "supabase-cli";
|
||||
version = "2.53.5";
|
||||
version = "2.54.8";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "supabase";
|
||||
repo = "cli";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-U91G/5eWj+ZHCq9GU9R+gSYhwez99xi6t4VWsnYpjtI=";
|
||||
hash = "sha256-iU2NFb97458ouDYuTwgCIYtBpM11MXPWS4hV/Q4IDMs=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-ST1j+UXGs3mBf5NYe+sp+QXjHsey9ATOFdriIEBJpKM=";
|
||||
vendorHash = "sha256-JhPKfSFQxFwH5nIYIO3mACdDfURIhuISs1tANiCfWSk=";
|
||||
|
||||
ldflags = [
|
||||
"-s"
|
||||
|
|
|
|||
17
pkgs/by-name/t4/t4kcommon/linebreak-fix.patch
Normal file
17
pkgs/by-name/t4/t4kcommon/linebreak-fix.patch
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
--- a/src/linebreak/CMakeLists.txt
|
||||
+++ b/src/linebreak/CMakeLists.txt
|
||||
@@ -72,12 +72,12 @@
|
||||
${LINEBREAK_BINARY_DIR}
|
||||
${LINEBREAK_SOURCE_DIR}
|
||||
${CMAKE_CURRENT_BINARY_DIR})
|
||||
-
|
||||
+add_library(linebreak STATIC ${LINEBREAK_SOURCES} ${LINEBREAK_HEADERS})
|
||||
if (ICONV_FOUND)
|
||||
include_directories(${ICONV_INCLUDE_DIR})
|
||||
target_link_libraries(linebreak ${ICONV_LIBRARY})
|
||||
endif (ICONV_FOUND)
|
||||
-add_library(linebreak STATIC ${LINEBREAK_SOURCES} ${LINEBREAK_HEADERS})
|
||||
+
|
||||
|
||||
#project_source_group("${GROUP_CODE}" LINEBREAK_SOURCES LINEBREAK_HEADERS)
|
||||
|
||||
|
|
@ -32,6 +32,8 @@ stdenv.mkDerivation rec {
|
|||
url = "https://salsa.debian.org/tux4kids-pkg-team/t4kcommon/raw/f7073fa384f5a725139f54844e59b57338b69dc7/debian/patches/libpng16.patch";
|
||||
hash = "sha256-auQ8VvOyvLE1PD2dfeHZJV+MzIt1OtUa7OcOqsXTAYI=";
|
||||
})
|
||||
# Fix "Cannot specify link libraries for target "linebreak" which is not built by this project."
|
||||
./linebreak-fix.patch
|
||||
];
|
||||
|
||||
# Workaround build failure on -fno-common toolchains like upstream
|
||||
|
|
@ -55,6 +57,11 @@ stdenv.mkDerivation rec {
|
|||
libxml2
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace {src/,./}CMakeLists.txt \
|
||||
--replace-fail "cmake_minimum_required(VERSION 2.6)" "cmake_minimum_required(VERSION 3.10)"
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Library of code shared between tuxmath and tuxtype";
|
||||
homepage = "https://github.com/tux4kids/t4kcommon";
|
||||
|
|
|
|||
|
|
@ -1,53 +1,33 @@
|
|||
{
|
||||
lib,
|
||||
python3,
|
||||
python3Packages,
|
||||
fetchFromGitHub,
|
||||
installShellFiles,
|
||||
texinfo,
|
||||
versionCheckHook,
|
||||
}:
|
||||
|
||||
let
|
||||
python = python3.override {
|
||||
self = python;
|
||||
packageOverrides = self: super: {
|
||||
# tahoe-lafs is incompatible with magic-wormhole >= 0.19.0
|
||||
# TODO: unpin, when https://tahoe-lafs.org/trac/tahoe-lafs/ticket/4180 is fixed
|
||||
magic-wormhole = super.magic-wormhole.overridePythonAttrs (oldAttrs: rec {
|
||||
version = "0.18.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "magic-wormhole";
|
||||
repo = "magic-wormhole";
|
||||
tag = version;
|
||||
hash = "sha256-FQ7m6hkJcFZaE+ptDALq/gijn/RcAM1Zvzi2+xpoXBU=";
|
||||
};
|
||||
|
||||
nativeCheckInputs = lib.filter (
|
||||
input: (input.pname or null) != "pytest-twisted"
|
||||
) oldAttrs.nativeCheckInputs;
|
||||
|
||||
doCheck = false;
|
||||
});
|
||||
};
|
||||
};
|
||||
python3Packages = python.pkgs;
|
||||
in
|
||||
python3Packages.buildPythonApplication rec {
|
||||
pname = "tahoe-lafs";
|
||||
version = "1.20.0";
|
||||
version = "1.20.0-unstable-2025-10-12";
|
||||
pyproject = true;
|
||||
|
||||
# workaround required to build an unstable version
|
||||
# TODO: when moving to a tagged version, remove this and the workaround for versionCheckHook
|
||||
env.SETUPTOOLS_SCM_PRETEND_VERSION = builtins.elemAt (builtins.split "-" version) 0;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "tahoe-lafs";
|
||||
repo = "tahoe-lafs";
|
||||
tag = "tahoe-lafs-${version}";
|
||||
hash = "sha256-9qaL4GmdjClviKTnwAxaTywvJChQ5cVVgWs1IkFxhIY=";
|
||||
rev = "7b96d16aba511fd34dcc0c14c9db754229e19531";
|
||||
hash = "sha256-7qMeyL0j0D6Yos7qDhhplinKPV87Vu72dbE4eWql/g4=";
|
||||
};
|
||||
|
||||
outputs = [
|
||||
"out"
|
||||
"doc"
|
||||
"info"
|
||||
"man"
|
||||
];
|
||||
|
||||
# Remove broken and expensive tests.
|
||||
|
|
@ -68,13 +48,16 @@ python3Packages.buildPythonApplication rec {
|
|||
hatchling
|
||||
];
|
||||
|
||||
nativeBuildInputs = with python3Packages; [
|
||||
# docs
|
||||
nativeBuildInputs = # docs
|
||||
[
|
||||
installShellFiles
|
||||
texinfo
|
||||
]
|
||||
++ (with python3Packages; [
|
||||
recommonmark
|
||||
sphinx
|
||||
sphinx-rtd-theme
|
||||
texinfo
|
||||
];
|
||||
]);
|
||||
|
||||
dependencies =
|
||||
with python3Packages;
|
||||
|
|
@ -89,8 +72,8 @@ python3Packages.buildPythonApplication rec {
|
|||
eliot
|
||||
filelock
|
||||
foolscap
|
||||
future
|
||||
klein
|
||||
legacy-cgi
|
||||
magic-wormhole
|
||||
netifaces
|
||||
psutil
|
||||
|
|
@ -121,6 +104,8 @@ python3Packages.buildPythonApplication rec {
|
|||
make info
|
||||
mkdir -p "$info/share/info"
|
||||
cp -rv _build/texinfo/*.info "$info/share/info"
|
||||
|
||||
installManPage man/man*/*
|
||||
)
|
||||
'';
|
||||
|
||||
|
|
@ -139,13 +124,13 @@ python3Packages.buildPythonApplication rec {
|
|||
++ [
|
||||
versionCheckHook
|
||||
];
|
||||
versionCheckProgram = "${placeholder "out"}/bin/tahoe";
|
||||
|
||||
versionCheckProgramArg = "--version";
|
||||
|
||||
checkPhase = ''
|
||||
runHook preCheck
|
||||
|
||||
runHook versionCheckHook
|
||||
version=$SETUPTOOLS_SCM_PRETEND_VERSION runHook versionCheckHook
|
||||
trial --rterrors allmydata
|
||||
|
||||
runHook postCheck
|
||||
|
|
|
|||
|
|
@ -7,16 +7,16 @@
|
|||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "taskwarrior-tui";
|
||||
version = "0.26.3";
|
||||
version = "0.26.4";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "kdheepak";
|
||||
repo = "taskwarrior-tui";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-8PFGlsm9B6qHRrY7YIPwknmGS+Peg5MWd0kMT173wIQ=";
|
||||
sha256 = "sha256-Ubl2xSFb5ZJ/5JqNI0In3hX6SxZd4g/AEq+CLdN2FsE=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-y5tHZIsbHLU9acIUM/QUx1T0eLK/E/jR+XXys5JnGjU=";
|
||||
cargoHash = "sha256-lq2mqMrhcRX2gX7youx8NrZEKmEOJYuhIsHHixuQmmk=";
|
||||
|
||||
nativeBuildInputs = [ installShellFiles ];
|
||||
|
||||
|
|
|
|||
|
|
@ -30,11 +30,11 @@
|
|||
|
||||
stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
pname = "teamspeak6-client";
|
||||
version = "6.0.0-beta3.1";
|
||||
version = "6.0.0-beta3.2";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://files.teamspeak-services.com/pre_releases/client/${finalAttrs.version}/teamspeak-client.tar.gz";
|
||||
hash = "sha256-CWKyn49DSWgrkJyYcPwKUz2PBykvFQc1f7G/yvrHbWU=";
|
||||
hash = "sha256-sZrYGonBw3BgUSExovs8GW5E54vhr3i/VR9eH9/qjWM=";
|
||||
};
|
||||
|
||||
sourceRoot = ".";
|
||||
|
|
@ -119,6 +119,7 @@ stdenvNoCC.mkDerivation (finalAttrs: {
|
|||
license = lib.licenses.teamspeak;
|
||||
mainProgram = "TeamSpeak";
|
||||
maintainers = with lib.maintainers; [
|
||||
drafolin
|
||||
gepbird
|
||||
jojosch
|
||||
];
|
||||
|
|
|
|||
|
|
@ -10,14 +10,14 @@ let
|
|||
platform =
|
||||
if stdenvNoCC.hostPlatform.isDarwin then "universal-macos" else stdenvNoCC.hostPlatform.system;
|
||||
hash = builtins.getAttr platform {
|
||||
"universal-macos" = "sha256-m/T1Ns8mmifODTLoQ426Co/07rg/kpq/XewNKozDStE=";
|
||||
"x86_64-linux" = "sha256-ClQLzae+8xd9Jb9fGRJ3u/SAYSlk/bxgSITDxSIbS7U=";
|
||||
"aarch64-linux" = "sha256-G2l2636rhXbhegdehSJj6VQpOYHe1Lp8jsBaG53kzUk=";
|
||||
"universal-macos" = "sha256-4lpJxXRwngBUdImBrIeuLVU6GJr6n6g/71bueuZTFj8=";
|
||||
"x86_64-linux" = "sha256-5rJHyFRrU5N5wYIohISBRuwH7WfrSDUyHHmCppSvcfM=";
|
||||
"aarch64-linux" = "sha256-CSB6PGr/EGV/ZdxfWMwY/R9/pObQRSASYE3Cp4cm1/E=";
|
||||
};
|
||||
in
|
||||
stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
pname = "tigerbeetle";
|
||||
version = "0.16.61";
|
||||
version = "0.16.62";
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://github.com/tigerbeetle/tigerbeetle/releases/download/${finalAttrs.version}/tigerbeetle-${platform}.zip";
|
||||
|
|
|
|||
|
|
@ -15,16 +15,16 @@ rustPlatform.buildRustPackage (finalAttrs: {
|
|||
pname = "tinymist";
|
||||
# Please update the corresponding vscode extension when updating
|
||||
# this derivation.
|
||||
version = "0.13.28";
|
||||
version = "0.13.30";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Myriad-Dreamin";
|
||||
repo = "tinymist";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-Z2FAlFjFHCzFhlLILcXseynoSdMhRQ30fWC7rW946N4=";
|
||||
hash = "sha256-7SUr23m+zUHsSmSZGlmKnwI5VUPh53Rxiw2Wx8yy+5k=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-7p+TNZO+uFqXhhMzmHj0r1X2WgDdg8aonMc0jgsrEnk=";
|
||||
cargoHash = "sha256-Qvj4xdbKI8PEbJ+N8Ba+sE5hDDHMegzU18gFtx/q/W8=";
|
||||
|
||||
nativeBuildInputs = [
|
||||
installShellFiles
|
||||
|
|
|
|||
|
|
@ -8,16 +8,16 @@
|
|||
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "trzsz-ssh";
|
||||
version = "0.1.22";
|
||||
version = "0.1.23";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "trzsz";
|
||||
repo = "trzsz-ssh";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-VvPdWRP+lrhho+Bk5rT9pktEvKe01512WoDfAu5d868=";
|
||||
hash = "sha256-Cp5XI7ggpt48llojcmarYPi9mTM+YBqwjG/eNAnKTxc=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-EllXxDyWI4Dy5E6KnzYFxuYDQcdk9+01v5svpARZU44=";
|
||||
vendorHash = "sha256-pI9BlttS9a1XrgBBmUd+h529fLbsbwSMwjKn4P50liE=";
|
||||
|
||||
ldflags = [
|
||||
"-s"
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@
|
|||
nix-update-script,
|
||||
}:
|
||||
let
|
||||
version = "4.18.7";
|
||||
version = "4.18.10";
|
||||
|
||||
desktopItem = makeDesktopItem {
|
||||
name = "unciv";
|
||||
|
|
@ -42,7 +42,7 @@ stdenv.mkDerivation rec {
|
|||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/yairm210/Unciv/releases/download/${version}/Unciv.jar";
|
||||
hash = "sha256-bZzF8WUDw2rrF8Qi6PKBA9F5EUDZGwgXegcHDFgQxJY=";
|
||||
hash = "sha256-8gp4h+fKK+gmwL8OnmfKb5pmO4mehClu8FeQe2KJiDk=";
|
||||
};
|
||||
|
||||
dontUnpack = true;
|
||||
|
|
|
|||
|
|
@ -145,7 +145,7 @@ stdenv.mkDerivation (finalAttrs: {
|
|||
|
||||
# this is a hack to make the php plugin link with session.so (which on nixos is a separate package)
|
||||
# the hack works in coordination with ./additional-php-ldflags.patch
|
||||
UWSGICONFIG_PHP_LDFLAGS = lib.optionalString (builtins.any (x: x.name == "php") needed) (
|
||||
UWSGICONFIG_PHP_LDFLAGS = lib.optionalString (lib.elem "php" needed) (
|
||||
lib.concatStringsSep "," [
|
||||
"-Wl"
|
||||
"-rpath=${php-embed.extensions.session}/lib/php/extensions/"
|
||||
|
|
@ -176,7 +176,7 @@ stdenv.mkDerivation (finalAttrs: {
|
|||
runHook postInstall
|
||||
'';
|
||||
|
||||
postFixup = lib.optionalString (builtins.any (x: x.name == "php") needed) ''
|
||||
postFixup = lib.optionalString (lib.elem "php" needed) ''
|
||||
wrapProgram $out/bin/uwsgi --set PHP_INI_SCAN_DIR ${php-embed}/lib
|
||||
'';
|
||||
|
||||
|
|
|
|||
|
|
@ -7,17 +7,17 @@
|
|||
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "vacuum-go";
|
||||
version = "0.18.9";
|
||||
version = "0.19.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "daveshanley";
|
||||
repo = "vacuum";
|
||||
# using refs/tags because simple version gives: 'the given path has multiple possibilities' error
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-uXNSwp+Qqw8drSt+SN20AjoJG9Pmaz0WCozFq8jEv2o=";
|
||||
hash = "sha256-MJM8gwSMwdr83NN2Rt6hGf2tJUrmMdhUp5QtylsldtM=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-+GkxN20mZD/ZBTCjmjiDcEAJix2Ssn9HsNrUtQkrI18=";
|
||||
vendorHash = "sha256-w3TSTM0WezYuajMPSy5OIWb5coE+SgIRuJISe1kYokg=";
|
||||
|
||||
env.CGO_ENABLED = 0;
|
||||
ldflags = [
|
||||
|
|
|
|||
|
|
@ -130,7 +130,7 @@ stdenv.mkDerivation {
|
|||
|
||||
... then set something similar to following in `programs.vim.extraConfig`;
|
||||
|
||||
let g:ycm_server_python_interpreter = "${python3.interpreter}"
|
||||
let g:ycm_server_python_interpreter = "''${python3.interpreter}"
|
||||
'';
|
||||
mainProgram = "ycmd";
|
||||
homepage = "https://github.com/ycm-core/ycmd";
|
||||
|
|
|
|||
|
|
@ -54,25 +54,25 @@ let
|
|||
# Zoom versions are released at different times per platform and often with different versions.
|
||||
# We write them on three lines like this (rather than using {}) so that the updater script can
|
||||
# find where to edit them.
|
||||
versions.aarch64-darwin = "6.6.0.64511";
|
||||
versions.x86_64-darwin = "6.6.0.64511";
|
||||
versions.aarch64-darwin = "6.6.5.67181";
|
||||
versions.x86_64-darwin = "6.6.5.67181";
|
||||
|
||||
# This is the fallback version so that evaluation can produce a meaningful result.
|
||||
versions.x86_64-linux = "6.6.0.4410";
|
||||
versions.x86_64-linux = "6.6.5.5215";
|
||||
|
||||
srcs = {
|
||||
aarch64-darwin = fetchurl {
|
||||
url = "https://zoom.us/client/${versions.aarch64-darwin}/zoomusInstallerFull.pkg?archType=arm64";
|
||||
name = "zoomusInstallerFull.pkg";
|
||||
hash = "sha256-2GdiJ/2K3TDF6nvVaIBVLJHgasx1e22aS4rhP30L2/o=";
|
||||
hash = "sha256-u8jRZNtVM6QdFcrBK5BcO4yPCAMNmKUv1aGRGqdORGw=";
|
||||
};
|
||||
x86_64-darwin = fetchurl {
|
||||
url = "https://zoom.us/client/${versions.x86_64-darwin}/zoomusInstallerFull.pkg";
|
||||
hash = "sha256-td0EltgpfSGlyo9Pg/4qS8qUdELP+A97iY9z3g19MW8=";
|
||||
hash = "sha256-pKCzrW4Y9YFTS2FyLQR9WA+6oC2hdzzExpEN/VH3PnA=";
|
||||
};
|
||||
x86_64-linux = fetchurl {
|
||||
url = "https://zoom.us/client/${versions.x86_64-linux}/zoom_x86_64.pkg.tar.xz";
|
||||
hash = "sha256-KTg6VO1GT/8ppXFevGDx0br9JGl9rdUtuBzHmnjiOuk=";
|
||||
hash = "sha256-sh1PbAxLGd5zsBO6lsIJV7Z22o9A15xAdopdJZ17ZUw=";
|
||||
};
|
||||
};
|
||||
|
||||
|
|
@ -175,6 +175,7 @@ let
|
|||
pkgs.glib.dev
|
||||
pkgs.gtk3
|
||||
pkgs.libGL
|
||||
pkgs.libGLU
|
||||
pkgs.libdrm
|
||||
pkgs.libgbm
|
||||
pkgs.libkrb5
|
||||
|
|
|
|||
|
|
@ -39,6 +39,13 @@ stdenv.mkDerivation {
|
|||
|
||||
dontWrapQtApps = true;
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace CMakeLists.txt \
|
||||
--replace-fail "cmake_minimum_required(VERSION 3.0.0 FATAL_ERROR)" "cmake_minimum_required(VERSION 3.10)"
|
||||
substituteInPlace {icons,icons-dark}/CMakeLists.txt \
|
||||
--replace-fail "cmake_minimum_required(VERSION 2.8)" "cmake_minimum_required(VERSION 3.10)"
|
||||
'';
|
||||
|
||||
postInstall = ''
|
||||
for theme in $out/share/icons/*; do
|
||||
gtk-update-icon-cache $theme
|
||||
|
|
|
|||
|
|
@ -43,6 +43,11 @@ stdenv.mkDerivation rec {
|
|||
--replace-fail "DESTINATION \"\''${LXQT_ETC_XDG_DIR}" "DESTINATION \"etc/xdg" \
|
||||
'';
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace CMakeLists.txt \
|
||||
--replace-fail "cmake_minimum_required(VERSION 3.1.0 FATAL_ERROR)" "cmake_minimum_required(VERSION 3.10)"
|
||||
'';
|
||||
|
||||
passthru.updateScript = gitUpdater { };
|
||||
|
||||
meta = with lib; {
|
||||
|
|
|
|||
|
|
@ -67,6 +67,11 @@ stdenv.mkDerivation (finalAttrs: {
|
|||
|
||||
passthru.updateScript = gitUpdater { };
|
||||
|
||||
postPatch = lib.optionals (version == "1.4.0") ''
|
||||
substituteInPlace CMakeLists.txt \
|
||||
--replace-fail "cmake_minimum_required(VERSION 3.1.0 FATAL_ERROR)" "cmake_minimum_required(VERSION 3.10)"
|
||||
'';
|
||||
|
||||
meta = {
|
||||
homepage = "https://github.com/lxqt/libfm-qt";
|
||||
description = "Core library of PCManFM-Qt (Qt binding for libfm)";
|
||||
|
|
|
|||
|
|
@ -57,6 +57,11 @@ stdenv.mkDerivation (finalAttrs: {
|
|||
)
|
||||
'';
|
||||
|
||||
postPatch = lib.optionals (version == "3.12.0") ''
|
||||
substituteInPlace CMakeLists.txt \
|
||||
--replace-fail "cmake_minimum_required(VERSION 3.1.0 FATAL_ERROR)" "cmake_minimum_required(VERSION 3.10)"
|
||||
'';
|
||||
|
||||
passthru.updateScript = gitUpdater { };
|
||||
|
||||
meta = {
|
||||
|
|
|
|||
|
|
@ -40,6 +40,11 @@ stdenv.mkDerivation rec {
|
|||
|
||||
passthru.updateScript = gitUpdater { };
|
||||
|
||||
postPatch = lib.optionals (version == "1.4.0") ''
|
||||
substituteInPlace CMakeLists.txt \
|
||||
--replace-fail "cmake_minimum_required(VERSION 3.1.0 FATAL_ERROR)" "cmake_minimum_required(VERSION 3.10)"
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
broken = stdenv.hostPlatform.isDarwin;
|
||||
homepage = "https://github.com/lxqt/qtermwidget";
|
||||
|
|
|
|||
|
|
@ -1,7 +1,9 @@
|
|||
{
|
||||
lib,
|
||||
stdenv,
|
||||
fetchurl,
|
||||
fetchFromGitHub,
|
||||
autoconf-archive,
|
||||
autoreconfHook,
|
||||
pkg-config,
|
||||
gettext,
|
||||
glib,
|
||||
|
|
@ -11,6 +13,7 @@
|
|||
gtk-layer-shell,
|
||||
gtk3,
|
||||
libxml2,
|
||||
mate-common,
|
||||
mate-desktop,
|
||||
mate-panel,
|
||||
wrapGAppsHook3,
|
||||
|
|
@ -19,17 +22,22 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "mate-notification-daemon";
|
||||
version = "1.28.3";
|
||||
version = "1.28.5";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://pub.mate-desktop.org/releases/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
|
||||
hash = "sha256-4Azssf+fdbnMwmRFWORDQ7gJQe20A3fdgQDtOSKt9BM=";
|
||||
src = fetchFromGitHub {
|
||||
owner = "mate-desktop";
|
||||
repo = "mate-notification-daemon";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-6N6lD63JL9xAtALn9URjYiCEhMZBC9TfIsrdalyY3YY=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
autoconf-archive
|
||||
autoreconfHook
|
||||
pkg-config
|
||||
gettext
|
||||
libxml2 # for xmllint
|
||||
mate-common # mate-common.m4 macros
|
||||
wrapGAppsHook3
|
||||
];
|
||||
|
||||
|
|
|
|||
|
|
@ -116,7 +116,7 @@ stdenv.mkDerivation rec {
|
|||
]
|
||||
++
|
||||
lib.optionals
|
||||
(lib.any (l: l == optimizationLevel) [
|
||||
(lib.elem optimizationLevel [
|
||||
"0"
|
||||
"1"
|
||||
"2"
|
||||
|
|
|
|||
|
|
@ -18,13 +18,13 @@
|
|||
|
||||
buildDunePackage (finalAttrs: {
|
||||
pname = "dns";
|
||||
version = "10.2.1";
|
||||
version = "10.2.2";
|
||||
|
||||
minimalOCamlVersion = "4.13";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/mirage/ocaml-dns/releases/download/v${finalAttrs.version}/dns-${finalAttrs.version}.tbz";
|
||||
hash = "sha256-tIjPTFFP1X1KLLKbmdQjSuaEXv8NXnmxBZ93n3NCR4o=";
|
||||
hash = "sha256-USPXFn9fs6WrcM8LPMyWUInsRA3Aft6r+MBWjuc3p/A=";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
|
|
|
|||
|
|
@ -12,14 +12,16 @@
|
|||
mirage-crypto-rng,
|
||||
}:
|
||||
|
||||
buildDunePackage rec {
|
||||
buildDunePackage (finalAttrs: {
|
||||
pname = "http-mirage-client";
|
||||
version = "0.0.10";
|
||||
|
||||
minimalOCamlVersion = "4.08";
|
||||
|
||||
__darwinAllowLocalNetworking = true;
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/roburio/http-mirage-client/releases/download/v${version}/http-mirage-client-${version}.tbz";
|
||||
url = "https://github.com/robur-coop/http-mirage-client/releases/download/v${finalAttrs.version}/http-mirage-client-${finalAttrs.version}.tbz";
|
||||
hash = "sha256-AXEIH1TIAayD4LkFv0yGD8OYvcdC/AJnGudGlkjcWLY=";
|
||||
};
|
||||
|
||||
|
|
@ -40,9 +42,9 @@ buildDunePackage rec {
|
|||
|
||||
meta = {
|
||||
description = "HTTP client for MirageOS";
|
||||
homepage = "https://github.com/roburio/http-mirage-client";
|
||||
homepage = "https://github.com/robur-coop/http-mirage-client";
|
||||
changelog = "https://github.com/robur-coop/http-mirage-client/blob/v${finalAttrs.version}/CHANGES.md";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = [ lib.maintainers.vbgl ];
|
||||
};
|
||||
|
||||
}
|
||||
})
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue