Merge staging-next into staging

This commit is contained in:
nixpkgs-ci[bot]
2025-07-23 00:19:01 +00:00
committed by GitHub
387 changed files with 5474 additions and 1598 deletions
+180 -44
View File
@@ -1,71 +1,207 @@
# CUDA {#cuda}
CUDA-only packages are stored in the `cudaPackages` packages set. This set
includes the `cudatoolkit`, portions of the toolkit in separate derivations,
`cudnn`, `cutensor` and `nccl`.
Compute Unified Device Architecture (CUDA) is a parallel computing platform and application programming interface (API) model created by NVIDIA. It's commonly used to accelerate computationally intensive problems and has been widely adopted for high-performance computing (HPC) and machine learning (ML) applications.
A package set is available for each CUDA version, so for example
`cudaPackages_11_6`. Within each set is a matching version of the above listed
packages. Additionally, other versions of the packages that are packaged and
compatible are available as well. For example, there can be a
`cudaPackages.cudnn_8_3` package.
## User Guide {#cuda-user-guide}
Packages provided by NVIDIA which require CUDA are typically stored in CUDA package sets.
Nixpkgs provides a number of CUDA package sets, each based on a different CUDA release. Top-level attributes that provide access to CUDA package sets follow these naming conventions:
- `cudaPackages_x_y`: A major-minor-versioned package set for a specific CUDA release, where `x` and `y` are the major and minor versions of the CUDA release.
- `cudaPackages_x`: A major-versioned alias to the major-minor-versioned CUDA package set with the latest widely supported major CUDA release.
- `cudaPackages`: An unversioned alias to the major-versioned alias for the latest widely supported CUDA release. The package set referenced by this alias is also referred to as the "default" CUDA package set.
It is recommended to use the unversioned `cudaPackages` attribute. While versioned package sets are available (e.g., `cudaPackages_12_2`), they are periodically removed.
Here are two examples to illustrate the naming conventions:
- If `cudaPackages_12_8` is the latest release in the 12.x series, but core libraries like OpenCV or ONNX Runtime fail to build with it, `cudaPackages_12` may alias `cudaPackages_12_6` instead of `cudaPackages_12_8`.
- If `cudaPackages_13_1` is the latest release, but core libraries like PyTorch or Torch Vision fail to build with it, `cudaPackages` may alias `cudaPackages_12` instead of `cudaPackages_13`.
All CUDA package sets include common CUDA packages like `libcublas`, `cudnn`, `tensorrt`, and `nccl`.
### Configuring Nixpkgs for CUDA {#cuda-configuring-nixpkgs-for-cuda}
CUDA support is not enabled by default in Nixpkgs. To enable CUDA support, make sure Nixpkgs is imported with a configuration similar to the following:
```nix
{
allowUnfreePredicate =
let
ensureList = x: if builtins.isList x then x else [ x ];
in
package:
builtins.all (
license:
license.free
|| builtins.elem license.shortName [
"CUDA EULA"
"cuDNN EULA"
"cuSPARSELt EULA"
"cuTENSOR EULA"
"NVidia OptiX EULA"
]
) (ensureList package.meta.license);
cudaCapabilities = [ <target-architectures> ];
cudaForwardCompat = true;
cudaSupport = true;
}
```
The majority of CUDA packages are unfree, so either `allowUnfreePredicate` or `allowUnfree` should be set.
The `cudaSupport` configuration option is used by packages to conditionally enable CUDA-specific functionality. This configuration option is commonly used by packages which can be built with or without CUDA support.
The `cudaCapabilities` configuration option specifies a list of CUDA capabilities. Packages may use this option to control device code generation to take advantage of architecture-specific functionality, speed up compile times by producing less device code, or slim package closures. For example, you can build for Ada Lovelace GPUs with `cudaCapabilities = [ "8.9" ];`. If `cudaCapabilities` is not provided, the default value is calculated per-package set, derived from a list of GPUs supported by that CUDA version. Please consult [supported GPUs](https://en.wikipedia.org/wiki/CUDA#GPUs_supported) for specific cards. Library maintainers should consult [NVCC Docs](https://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/) and its release notes.
::: {.caution}
Certain CUDA capabilities are not targeted by default, including capabilities belonging to the Jetson family of devices (e.g. `8.7`, which corresponds to the Jetson Orin) or non-baseline feature-sets (e.g. `9.0a`, which corresponds to the Hopper exclusive feature set). If you need to target these capabilities, you must explicitly set `cudaCapabilities` to include them.
:::
The `cudaForwardCompat` boolean configuration option determines whether PTX support for future hardware is enabled.
### Modifying CUDA package sets {#cuda-modifying-cuda-package-sets}
CUDA package sets are created by using `callPackage` on `pkgs/top-level/cuda-packages.nix` with an explicit argument for `cudaMajorMinorVersion`, a string of the form `"<major>.<minor>"` (e.g., `"12.2"`), which informs the CUDA package set tooling which version of CUDA to use. The majority of the CUDA package set tooling is available through the top-level attribute set `_cuda`, a fixed-point defined outside the CUDA package sets.
::: {.caution}
The `cudaMajorMinorVersion` and `_cuda` attributes are not part of the CUDA package set fixed-point, but are instead provided by `callPackage` from the top-level in the construction of the package set. As such, they must be modified via the package set's `override` attribute.
:::
::: {.caution}
As indicated by the underscore prefix, `_cuda` is an implementation detail and no guarantees are provided with respect to its stability or API. The `_cuda` attribute set is exposed only to ease creation or modification of CUDA package sets by expert, out-of-tree users.
:::
::: {.note}
The `_cuda` attribute set fixed-point should be modified through its `extend` attribute.
:::
The `_cuda.fixups` attribute set is a mapping from package name (`pname`) to a `callPackage`-compatible expression which will be provided to `overrideAttrs` on the result of our generic builder.
::: {.caution}
Fixups are chosen from `_cuda.fixups` by `pname`. As a result, packages with multiple versions (e.g., `cudnn`, `cudnn_8_9`, etc.) all share a single fixup function (i.e., `_cuda.fixups.cudnn`, which is `pkgs/development/cuda-modules/fixups/cudnn.nix`).
:::
As an example, you can change the fixup function used for cuDNN for only the default CUDA package set with this overlay:
```nix
final: prev: {
cudaPackages = prev.cudaPackages.override (prevArgs: {
_cuda = prevArgs._cuda.extend (
_: prevAttrs: {
fixups = prevAttrs.fixups // {
cudnn = <your-fixup-function>;
};
}
);
});
}
```
### Extending CUDA package sets {#cuda-extending-cuda-package-sets}
CUDA package sets are scopes and provide the usual `overrideScope` attribute for overriding package attributes (see the note about `cudaMajorMinorVersion` and `_cuda` in [Configuring CUDA package sets](#cuda-modifying-cuda-package-sets)).
Inspired by `pythonPackagesExtensions`, the `_cuda.extensions` attribute is a list of extensions applied to every version of the CUDA package set, allowing modification of all versions of the CUDA package set without needing to know their names or explicitly enumerate and modify them. As an example, disabling `cuda_compat` across all CUDA package sets can be accomplished with this overlay:
```nix
final: prev: {
_cuda = prev._cuda.extend (
_: prevAttrs: {
extensions = prevAttrs.extensions ++ [ (_: _: { cuda_compat = null; }) ];
}
);
}
```
### Using `cudaPackages` {#cuda-using-cudapackages}
::: {.caution}
A non-trivial amount of CUDA package discoverability and usability relies on the various setup hooks used by a CUDA package set. As a result, users will likely encounter issues trying to perform builds within a `devShell` without manually invoking phases.
:::
To use one or more CUDA packages in an expression, give the expression a `cudaPackages` parameter, and in case CUDA support is optional, add a `config` and `cudaSupport` parameter:
To use one or more CUDA packages in an expression, give the expression a `cudaPackages` parameter, and in case CUDA is optional
```nix
{
config,
cudaSupport ? config.cudaSupport,
cudaPackages ? { },
...
cudaPackages,
}:
{ }
<package-expression>
```
When using `callPackage`, you can choose to pass in a different variant, e.g.
when a different version of the toolkit suffices
In your package's derivation arguments, it is _strongly_ recommended that the following are set:
```nix
{
mypkg = callPackage { cudaPackages = cudaPackages_11_5; };
__structuredAttrs = true;
strictDeps = true;
}
```
If another version of say `cudnn` or `cutensor` is needed, you can override the
package set to make it the default. This guarantees you get a consistent package
set.
These settings ensure that the CUDA setup hooks function as intended.
When using `callPackage`, you can choose to pass in a different variant, e.g. when a package requires a specific version of CUDA:
```nix
{
mypkg =
let
cudaPackages = cudaPackages_11_5.overrideScope (
final: prev: {
cudnn = prev.cudnn_8_3;
}
);
in
callPackage { inherit cudaPackages; };
mypkg = callPackage { cudaPackages = cudaPackages_12_2; };
}
```
The CUDA NVCC compiler requires flags to determine which hardware you
want to target for in terms of SASS (real hardware) or PTX (JIT kernels).
::: {.caution}
Overriding the CUDA package set for a package may cause inconsistencies, because the override does not affect its direct or transitive dependencies. As a result, it is easy to end up with a package that use a different CUDA package set than its dependencies. If possible, it is recommended that you change the default CUDA package set globally, to ensure a consistent environment.
:::
Nixpkgs tries to target support real architecture defaults based on the
CUDA toolkit version with PTX support for future hardware. Experienced
users may optimize this configuration for a variety of reasons such as
reducing binary size and compile time, supporting legacy hardware, or
optimizing for specific hardware.
### Nixpkgs CUDA variants {#cuda-nixpkgs-cuda-variants}
You may provide capabilities to add support or reduce binary size through
`config` using `cudaCapabilities = [ "6.0" "7.0" ];` and
`cudaForwardCompat = true;` if you want PTX support for future hardware.
Nixpkgs CUDA variants are provided primarily for the convenience of selecting CUDA-enabled packages by attribute path. As an example, the `pkgsForCudaArch` collection of CUDA Nixpkgs variants allows you to access an instantiation of OpenCV with CUDA support for an Ada Lovelace GPU with the attribute path `pkgsForCudaArch.sm_89.opencv`, without needing to modify the `config` provided when importing Nixpkgs.
Please consult [GPUs supported](https://en.wikipedia.org/wiki/CUDA#GPUs_supported)
for your specific card(s).
::: {.caution}
Nixpkgs variants are not free: they require re-evaluating Nixpkgs. Where possible, import Nixpkgs once, with the desired configuration.
:::
Library maintainers should consult [NVCC Docs](https://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/)
and release notes for their software package.
#### Using `cudaPackages.pkgs` {#cuda-using-cudapackages-pkgs}
## Running Docker or Podman containers with CUDA support {#cuda-docker-podman}
Each CUDA package set has a `pkgs` attribute, which is a variant of Nixpkgs in which the enclosing CUDA package set becomes the default. This was done primarily to avoid package set leakage, wherein a member of a non-default CUDA package set has a (potentially transitive) dependency on a member of the default CUDA package set.
::: {.note}
Package set leakage is a common problem in Nixpkgs and is not limited to CUDA package sets.
:::
As an added benefit of `pkgs` being configured this way, building a package with a non-default version of CUDA is as simple as accessing an attribute. As an example, `cudaPackages_12_8.pkgs.opencv` provides OpenCV built against CUDA 12.8.
#### Using `pkgsCuda` {#cuda-using-pkgscuda}
The `pkgsCuda` attribute set is a variant of Nixpkgs configured with `cudaSupport = true;` and `rocmSupport = false`. It is a convenient way to access a variant of Nixpkgs configured with the default set of CUDA capabilities.
#### Using `pkgsForCudaArch` {#cuda-using-pkgsforcudaarch}
The `pkgsForCudaArch` attribute set maps CUDA architectures (e.g., `sm_89` for Ada Lovelace or `sm_90a` for architecture-specific Hopper) to Nixpkgs variants configured to support exactly that architecture. As an example, `pkgsForCudaArch.sm_89` is a Nixpkgs variant extending `pkgs` and setting the following values in `config`:
```nix
{
cudaSupport = true;
cudaCapabilities = [ "8.9" ];
cudaForwardCompat = false;
}
```
::: {.note}
In `pkgsForCudaArch`, the `cudaForwardCompat` option is set to `false` because exactly one CUDA architecture is supported by the corresponding Nixpkgs variant. Furthermore, some architectures, including architecture-specific feature sets like `sm_90a`, cannot be built with forward compatibility.
:::
::: {.caution}
Not every version of CUDA supports every architecture!
To illustrate: support for Blackwell (e.g., `sm_100`) was added in CUDA 12.8. Assume our Nixpkgs' default CUDA package set is to CUDA 12.6. Then the Nixpkgs variant available through `pkgsForCudaArch.sm_100` is useless, since packages like `pkgsForCudaArch.sm_100.opencv` and `pkgsForCudaArch.sm_100.python3Packages.torch` will try to generate code for `sm_100`, an architecture unknown to CUDA 12.6. In that case, you should use `pkgsForCudaArch.sm_100.cudaPackages_12_8.pkgs` instead (see [Using cudaPackages.pkgs](#cuda-using-cudapackages-pkgs) for more details).
:::
The `pkgsForCudaArch` attribute set makes it possible to access packages built for a specific architecture without needing to manually call `pkgs.extend` and supply a new `config`. As an example, `pkgsForCudaArch.sm_89.python3Packages.torch` provides PyTorch built for Ada Lovelace GPUs.
### Running Docker or Podman containers with CUDA support {#cuda-docker-podman}
It is possible to run Docker or Podman containers with CUDA support. The recommended mechanism to perform this task is to use the [NVIDIA Container Toolkit](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/index.html).
@@ -110,7 +246,7 @@ $ nix run nixpkgs#jq -- -r '.devices[].name' < /var/run/cdi/nvidia-container-too
all
```
### Specifying what devices to expose to the container {#cuda-specifying-what-devices-to-expose-to-the-container}
#### Specifying what devices to expose to the container {#cuda-specifying-what-devices-to-expose-to-the-container}
You can choose what devices are exposed to your containers by using the identifier on the generated CDI specification. Like follows:
@@ -131,7 +267,7 @@ GPU 1: NVIDIA GeForce RTX 2080 SUPER (UUID: <REDACTED>)
By default, the NVIDIA Container Toolkit will use the GPU index to identify specific devices. You can change the way to identify what devices to expose by using the `hardware.nvidia-container-toolkit.device-name-strategy` NixOS attribute.
:::
### Using docker-compose {#cuda-using-docker-compose}
#### Using docker-compose {#cuda-using-docker-compose}
It's possible to expose GPU's to a `docker-compose` environment as well. With a `docker-compose.yaml` file like follows:
+78 -50
View File
@@ -20,6 +20,84 @@
"cmake-ctest-variables": [
"index.html#cmake-ctest-variables"
],
"cuda": [
"index.html#cuda"
],
"cuda-configuring-nixpkgs-for-cuda": [
"index.html#cuda-configuring-nixpkgs-for-cuda"
],
"cuda-contributing": [
"index.html#cuda-contributing"
],
"cuda-docker-podman": [
"index.html#cuda-docker-podman"
],
"cuda-extending-cuda-package-sets": [
"index.html#cuda-extending-cuda-package-sets"
],
"cuda-modifying-cuda-package-sets": [
"index.html#cuda-modifying-cuda-package-sets",
"index.html#cuda-configuring-cuda-package-sets"
],
"cuda-nixpkgs-cuda-variants": [
"index.html#cuda-nixpkgs-cuda-variants"
],
"cuda-package-set-maintenance": [
"index.html#cuda-package-set-maintenance",
"index.html#adding-a-new-cuda-release"
],
"cuda-passthru-testers": [
"index.html#cuda-passthru-testers"
],
"cuda-passthru-tests": [
"index.html#cuda-passthru-tests"
],
"cuda-specifying-what-devices-to-expose-to-the-container": [
"index.html#cuda-specifying-what-devices-to-expose-to-the-container",
"index.html#specifying-what-devices-to-expose-to-the-container"
],
"cuda-updating-redistributables": [
"index.html#cuda-updating-redistributables",
"index.html#updating-cuda-redistributables"
],
"cuda-updating-cutensor": [
"index.html#cuda-updating-cutensor",
"index.html#updating-cutensor"
],
"cuda-updating-supported-compilers-and-gpus": [
"index.html#cuda-updating-supported-compilers-and-gpus",
"index.html#updating-supported-compilers-and-gpus"
],
"cuda-updating-the-cuda-package-set": [
"index.html#cuda-updating-the-cuda-package-set",
"index.html#updating-the-cuda-package-set"
],
"cuda-updating-the-cuda-toolkit": [
"index.html#cuda-updating-the-cuda-toolkit",
"index.html#updating-the-cuda-toolkit"
],
"cuda-user-guide": [
"index.html#cuda-user-guide"
],
"cuda-using-cudapackages": [
"index.html#cuda-using-cudapackages"
],
"cuda-using-cudapackages-pkgs": [
"index.html#cuda-using-cudapackages-pkgs"
],
"cuda-using-docker-compose": [
"index.html#cuda-using-docker-compose",
"index.html#using-docker-compose"
],
"cuda-using-pkgscuda": [
"index.html#cuda-using-pkgscuda"
],
"cuda-using-pkgsforcudaarch": [
"index.html#cuda-using-pkgsforcudaarch"
],
"cuda-writing-tests": [
"index.html#cuda-writing-tests"
],
"ex-build-helpers-extendMkDerivation": [
"index.html#ex-build-helpers-extendMkDerivation"
],
@@ -2753,56 +2831,6 @@
"building-a-crystal-package": [
"index.html#building-a-crystal-package"
],
"cuda": [
"index.html#cuda"
],
"cuda-contributing": [
"index.html#cuda-contributing"
],
"cuda-docker-podman": [
"index.html#cuda-docker-podman"
],
"cuda-package-set-maintenance": [
"index.html#cuda-package-set-maintenance",
"index.html#adding-a-new-cuda-release"
],
"cuda-passthru-testers": [
"index.html#cuda-passthru-testers"
],
"cuda-passthru-tests": [
"index.html#cuda-passthru-tests"
],
"cuda-specifying-what-devices-to-expose-to-the-container": [
"index.html#cuda-specifying-what-devices-to-expose-to-the-container",
"index.html#specifying-what-devices-to-expose-to-the-container"
],
"cuda-updating-redistributables": [
"index.html#cuda-updating-redistributables",
"index.html#updating-cuda-redistributables"
],
"cuda-updating-cutensor": [
"index.html#cuda-updating-cutensor",
"index.html#updating-cutensor"
],
"cuda-updating-supported-compilers-and-gpus": [
"index.html#cuda-updating-supported-compilers-and-gpus",
"index.html#updating-supported-compilers-and-gpus"
],
"cuda-updating-the-cuda-package-set": [
"index.html#cuda-updating-the-cuda-package-set",
"index.html#updating-the-cuda-package-set"
],
"cuda-updating-the-cuda-toolkit": [
"index.html#cuda-updating-the-cuda-toolkit",
"index.html#updating-the-cuda-toolkit"
],
"cuda-using-docker-compose": [
"index.html#cuda-using-docker-compose",
"index.html#using-docker-compose"
],
"cuda-writing-tests": [
"index.html#cuda-writing-tests"
],
"cuelang": [
"index.html#cuelang"
],
+2
View File
@@ -35,6 +35,8 @@
- `lima` package now only includes the guest agent for the host's architecture by default. If your guest VM's architecture differs from your Lima host's, you'll need to enable the `lima-additional-guestagents` package by setting `withAdditionalGuestAgents = true` when overriding lima with this input.
- `vmware-horizon-client` was renamed to `omnissa-horizon-client`, following [VMware's sale of their end-user business to Omnissa](https://www.omnissa.com/insights/introducing-omnissa-the-former-vmware-end-user-computing-business/). The binary has been renamed from `vmware-view` to `horizon-client`.
- `neovimUtils.makeNeovimConfig` now uses `customLuaRC` parameter instead of accepting `luaRcContent`. The old usage is deprecated but still works with a warning.
- `telegram-desktop` packages now uses `Telegram` for its binary. The previous name was `telegram-desktop`. This is due to [an upstream decision](https://github.com/telegramdesktop/tdesktop/commit/56ff5808a3d766f892bc3c3305afb106b629ef6f) to make the name consistent with other platforms.
+13 -6
View File
@@ -2846,12 +2846,6 @@
githubId = 75235;
name = "Michael Walker";
};
bartsch = {
email = "consume.noise@gmail.com";
github = "bartsch";
githubId = 3390885;
name = "Daniel Martin";
};
bartuka = {
email = "wand@hey.com";
github = "wandersoncferreira";
@@ -16303,6 +16297,13 @@
name = "Martijn Hemeryck";
keys = [ { fingerprint = "1B47 7ADA 04B4 7A5C E61A EDE0 1AA3 6833 BC86 F0F1"; } ];
};
mhutter = {
email = "manuel@hutter.io";
github = "mhutter";
githubId = 346819;
name = "Manuel Hutter";
keys = [ { fingerprint = "BE27 20A9 0C16 C351 31E0 B2FB FC31 B4E5 4C4C F892"; } ];
};
mi-ael = {
email = "miael.oss.1970@gmail.com";
name = "mi-ael";
@@ -26174,6 +26175,12 @@
githubId = 799353;
keys = [ { fingerprint = "EE59 5E29 BB5B F2B3 5ED2 3F1C D276 FF74 6700 7335"; } ];
};
undefined-landmark = {
name = "bas";
email = "github.plated100@passmail.net";
github = "undefined-landmark";
githubId = 74454337;
};
undefined-moe = {
name = "undefined";
email = "i@undefined.moe";
+12 -3
View File
@@ -6,7 +6,6 @@
}:
let
cfg = config.services.vector;
in
{
options.services.vector = {
@@ -31,6 +30,14 @@ in
'';
};
validateConfig = lib.mkOption {
type = lib.types.bool;
default = true;
description = ''
Enable the checking of the vector config during build time. This should be disabled when interpolating environment variables.
'';
};
settings = lib.mkOption {
type = (pkgs.formats.json { }).type;
default = { };
@@ -53,7 +60,7 @@ in
let
format = pkgs.formats.toml { };
conf = format.generate "vector.toml" cfg.settings;
validateConfig =
validatedConfig =
file:
pkgs.runCommand "validate-vector-conf"
{
@@ -65,7 +72,9 @@ in
'';
in
{
ExecStart = "${lib.getExe cfg.package} --config ${validateConfig conf} --graceful-shutdown-limit-secs ${builtins.toString cfg.gracefulShutdownLimitSecs}";
ExecStart = "${lib.getExe cfg.package} --config ${
if cfg.validateConfig then (validatedConfig conf) else conf
} --graceful-shutdown-limit-secs ${builtins.toString cfg.gracefulShutdownLimitSecs}";
DynamicUser = true;
Restart = "always";
StateDirectory = "vector";
@@ -57,37 +57,51 @@ in
appservice = lib.mkOption {
type = lib.types.attrs;
default = {
address = "http://localhost:8009";
port = 8009;
address = "http://localhost:29334";
hostname = "0.0.0.0";
port = 29334;
database = {
type = "sqlite3";
uri = "file:/var/lib/mautrix-discord/mautrix-discord.db?_txlock=immediate";
max_open_conns = 20;
max_idle_conns = 2;
max_conn_idle_time = null;
max_conn_lifetime = null;
};
id = "discord";
bot = {
username = "discordbot";
displayname = "Discord bridge bot";
avatar = "mxc://maunium.net/nIdEykemnwdisvHbpxflpDlC";
};
as_token = "generate";
hs_token = "generate";
database = {
type = "sqlite3";
uri = "file:/var/lib/mautrix-discord/mautrix-discord.db?_txlock=immediate";
};
ephemeral_events = true;
async_transactions = false;
as_token = "This value is generated when generating the registration";
hs_token = "This value is generated when generating the registration";
};
defaultText = lib.literalExpression ''
{
address = "http://localhost:8009";
port = 8009;
address = "http://localhost:29334";
hostname = "0.0.0.0";
port = 29334;
database = {
type = "sqlite3";
uri = "file:''${config.services.mautrix-discord.dataDir}/mautrix-discord.db?_txlock=immediate";
max_open_conns = 20;
max_idle_conns = 2;
max_conn_idle_time = null;
max_conn_lifetime = null;
};
id = "discord";
bot = {
username = "discordbot";
displayname = "Discord bridge bot";
avatar = "mxc://maunium.net/nIdEykemnwdisvHbpxflpDlC";
};
as_token = "generate";
hs_token = "generate";
database = {
type = "sqlite3";
uri = "file:''${config.services.mautrix-discord.dataDir}/mautrix-discord.db?_txlock=immediate";
};
ephemeral_events = true;
async_transactions = false;
as_token = "This value is generated when generating the registration";
hs_token = "This value is generated when generating the registration";
}
'';
description = ''
@@ -101,7 +115,7 @@ in
type = lib.types.attrs;
default = {
username_template = "discord_{{.}}";
displayname_template = "{{or .GlobalName .Username}}{{if .Bot}} (bot){{end}}";
displayname_template = "{{if .Webhook}}Webhook{{else}}{{or .GlobalName .Username}}{{if .Bot}} (bot){{end}}{{end}}";
channel_name_template = "{{if or (eq .Type 3) (eq .Type 4)}}{{.Name}}{{else}}#{{.Name}}{{end}}";
guild_name_template = "{{.Name}}";
private_chat_portal_meta = "default";
@@ -122,13 +136,15 @@ in
delete_portal_on_channel_delete = false;
delete_guild_on_leave = true;
federate_rooms = true;
prefix_webhook_messages = false;
enable_webhook_avatars = true;
prefix_webhook_messages = true;
enable_webhook_avatars = false;
use_discord_cdn_upload = true;
#proxy =
cache_media = "unencrypted";
direct_media = {
enabled = false;
server_name = "discord-media.example.com";
#server_name = "discord-media.example.com";
#well_known_response =
allow_proxy = true;
server_key = "generate";
};
@@ -140,6 +156,13 @@ in
fps = 25;
};
};
double_puppet_server_map = {
#"example.com" = "https://example.com";
};
double_puppet_allow_discovery = false;
login_shared_secret_map = {
#"example.com" = "foobar";
};
command_prefix = "!discord";
management_room_text = {
welcome = "Hello, I'm a Discord bridge bot.";
@@ -199,8 +222,8 @@ in
};
permissions = {
"*" = "relay";
# "example.com" = "user";
# "@admin:example.com": "admin";
#"example.com" = "user";
#"@admin:example.com": "admin";
};
};
description = ''
@@ -209,6 +232,22 @@ in
for more information.
'';
};
logging = lib.mkOption {
type = lib.types.attrs;
default = {
min_level = "info";
writers = lib.singleton {
type = "stdout";
format = "pretty-colored";
time_format = " ";
};
};
description = ''
Logging configuration.
See [example-config.yaml](https://github.com/mautrix/discord/blob/main/example-config.yaml)
for more information.
'';
};
};
};
default = { };
@@ -225,7 +264,7 @@ in
};
bridge.permissions = {
"example.com" = "full";
"example.com" = "user";
"@admin:example.com" = "admin";
};
}
@@ -333,18 +372,6 @@ in
The option `services.mautrix-discord.settings.bridge.permissions` has to be set.
'';
}
{
assertion = cfg.settings.appservice.id != "";
message = ''
The option `services.mautrix-discord.settings.appservice.id` has to be set.
'';
}
{
assertion = cfg.settings.appservice.bot.username != "";
message = ''
The option `services.mautrix-discord.settings.appservice.bot.username` has to be set.
'';
}
];
users.users.mautrix-discord = {
@@ -20,6 +20,15 @@ in
description = "Domain name under which the derper server is reachable.";
};
configureNginx = lib.mkOption {
type = lib.types.bool;
default = true;
description = ''
Whether to enable nginx reverse proxy for derper.
When enabled, nginx will proxy requests to the derper service.
'';
};
openFirewall = lib.mkOption {
type = lib.types.bool;
default = true;
@@ -61,12 +70,12 @@ in
config = lib.mkIf cfg.enable {
networking.firewall = lib.mkIf cfg.openFirewall {
# port 80 and 443 are opened by nginx already
# port 80 and 443 are opened by nginx already when configureNginx is true
allowedUDPPorts = [ cfg.stunPort ];
};
services = {
nginx = {
nginx = lib.mkIf cfg.configureNginx {
enable = true;
virtualHosts."${cfg.domain}" = {
addSSL = true; # this cannot be forceSSL as derper sends some information over port 80, too.
@@ -234,5 +234,8 @@ in
++ optionals (cfg.torrentingPort != null) [ cfg.torrentingPort ]
);
};
meta.maintainers = with maintainers; [ fsnkty ];
meta.maintainers = with maintainers; [
fsnkty
undefined-landmark
];
}
+1
View File
@@ -890,6 +890,7 @@ in
miriway = runTest ./miriway.nix;
misc = runTest ./misc.nix;
misskey = runTest ./misskey.nix;
mitmproxy = runTest ./mitmproxy.nix;
mjolnir = runTest ./matrix/mjolnir.nix;
mobilizon = runTest ./mobilizon.nix;
mod_perl = runTest ./mod_perl.nix;
+134
View File
@@ -0,0 +1,134 @@
{ lib, pkgs, ... }:
let
# https://docs.mitmproxy.org/stable/concepts/certificates/#using-a-custom-certificate-authority
caCert = pkgs.runCommand "ca-cert" { } ''
touch $out
cat ${./common/acme/server/ca.key.pem} >> $out
cat ${./common/acme/server/ca.cert.pem} >> $out
'';
in
{
name = "mitmproxy";
meta.maintainers = [ lib.teams.ngi.members ];
nodes.machine =
{ pkgs, ... }:
{
security.pki.certificateFiles = [ caCert ];
services.getty.autologinUser = "root";
environment.systemPackages =
let
# A counter. It has 2 functions:
# 1. GET /old and GET /new, to demostrate rewriting requests.
# 2. GET /counter and POST /counter, to demonstrate replaying requests.
counter = pkgs.writers.writePython3Bin "counter" { } ''
from http.server import BaseHTTPRequestHandler, HTTPServer
counter = 0
class HTTPRequestHandler(BaseHTTPRequestHandler):
def do_POST(self):
match self.path:
case "/counter":
global counter
counter += 1
self.send_response(204)
self.end_headers()
case _:
self.send_response(404)
self.end_headers()
def do_GET(self):
match self.path:
case "/counter":
self.send_response(200)
self.send_header("Content-type", "text/plain")
self.end_headers()
_ = self.wfile.write(str(counter).encode())
case "/old":
self.send_response(200)
self.send_header("Content-type", "text/plain")
self.end_headers()
_ = self.wfile.write("fail".encode())
case "/new":
self.send_response(200)
self.send_header("Content-type", "text/plain")
self.end_headers()
_ = self.wfile.write("success".encode())
case _:
self.send_response(404)
self.end_headers()
server_address = ("", 8000)
server = HTTPServer(server_address, HTTPRequestHandler)
server.serve_forever()
'';
in
[
counter
pkgs.mitmproxy
];
};
testScript =
let
addonScript = pkgs.writeText "addon-script" ''
def request(flow):
# https://docs.mitmproxy.org/stable/api/mitmproxy/http.html#Request
flow.request.path = "/new"
'';
in
''
def curl(command: str, proxy: bool = False):
if proxy:
command = "curl --proxy 127.0.0.1:8080 --cacert ~/.mitmproxy/mitmproxy-ca-cert.pem " + command
else:
command = "curl " + command
return machine.succeed(command)
start_all()
machine.wait_for_unit("default.target")
# https://docs.mitmproxy.org/stable/concepts/certificates/#using-a-custom-certificate-authority
machine.succeed("mkdir -p ~/.mitmproxy")
machine.succeed("ln -s ${caCert} ~/.mitmproxy/mitmproxy-ca.pem")
machine.succeed("counter >/dev/null &")
machine.wait_for_open_port(8000)
# rewrite
# https://docs.mitmproxy.org/stable/mitmproxytutorial-modifyrequests/
t.assertEqual("fail", curl("http://localhost:8000/old"))
machine.send_chars("mitmdump -s ${addonScript}\n")
machine.wait_for_open_port(8080)
t.assertEqual("success", curl("http://localhost:8000/old", proxy=True))
machine.send_key("ctrl-c")
# replay
# https://docs.mitmproxy.org/stable/mitmproxytutorial-replayrequests/
# https://docs.mitmproxy.org/stable/tutorials/client-replay/
t.assertEqual("0", curl("http://localhost:8000/counter"))
machine.send_chars("mitmdump -w replay\n")
machine.wait_for_open_port(8080)
curl("-X POST http://localhost:8000/counter", proxy=True)
machine.send_key("ctrl-c")
t.assertEqual("1", curl("http://localhost:8000/counter"))
machine.succeed("mitmdump -C /root/replay")
t.assertEqual("2", curl("http://localhost:8000/counter"))
'';
}
+4 -1
View File
@@ -3,7 +3,10 @@
name = "qbittorrent";
meta = with pkgs.lib.maintainers; {
maintainers = [ fsnkty ];
maintainers = [
fsnkty
undefined-landmark
];
};
nodes = {
@@ -11,7 +11,7 @@ vscode-utils.buildVscodeMarketplaceExtension {
};
meta = {
description = "Gtk Blueprint language support.";
description = "Gtk Blueprint language support";
license = lib.licenses.lgpl3;
downloadPage = "https://marketplace.visualstudio.com/items?itemName=bodil.blueprint-gtk";
maintainers = [ lib.maintainers.lyndeno ];
@@ -123,7 +123,7 @@ let
};
meta = {
changelog = "https://marketplace.visualstudio.com/items/aaron-bond.better-comments/changelog";
description = "Improve your code commenting by annotating with alert, informational, TODOs, and more!";
description = "Improve your code commenting by annotating with alert, informational, TODOs, and more";
downloadPage = "https://marketplace.visualstudio.com/items?itemName=aaron-bond.better-comments";
homepage = "https://github.com/aaron-bond/better-comments";
license = lib.licenses.mit;
@@ -2251,7 +2251,7 @@ let
hash = "sha256-0CFYL6rBecB8rNnk4IAtg03ZPdSJ9qxwnVdhdQedxsQ=";
};
meta = {
description = "Ungit in Visual Studio Code.";
description = "Ungit in Visual Studio Code";
downloadPage = "https://marketplace.visualstudio.com/items?itemName=Hirse.vscode-ungit";
homepage = "https://github.com/hirse/vscode-ungit";
license = lib.licenses.mit;
@@ -8,7 +8,7 @@ vscode-utils.buildVscodeMarketplaceExtension {
hash = "sha256-nnaHXQAOEblQRKqbDIsuTVrdh3BlDnWJGy9ai2bv02c=";
};
meta = {
description = "Paste images directly from your clipboard to markdown/asciidoc(or other file)!";
description = "Paste images directly from your clipboard to markdown/asciidoc(or other file)";
downloadPage = "https://marketplace.visualstudio.com/items?itemName=dendron.dendron-paste-image";
homepage = "https://github.com/dendronhq/dendron-paste-image";
license = lib.licenses.mit;
@@ -8,7 +8,7 @@ vscode-utils.buildVscodeMarketplaceExtension {
hash = "sha256-KOIbAt6EjqRGaqOlCV+HO9phR4tk2KV/+FMCefCKN+8=";
};
meta = {
description = "Easily create markdown snippets. Used in Dendron but can also be used standalone.";
description = "Easily create markdown snippets. Used in Dendron but can also be used standalone";
downloadPage = "https://marketplace.visualstudio.com/items?itemName=dendron.dendron-snippet-maker";
homepage = "https://github.com/dendronhq/easy-snippet-maker";
license = lib.licenses.mit;
@@ -9,7 +9,7 @@ vscode-utils.buildVscodeMarketplaceExtension {
};
meta = {
changelog = "https://github.com/dendronhq/dendron/blob/master/CHANGELOG.md";
description = "The personal knowledge management (PKM) tool that grows as you do!";
description = "The personal knowledge management (PKM) tool that grows as you do";
downloadPage = "https://marketplace.visualstudio.com/items?itemName=dendron.dendron";
homepage = "https://www.dendron.so/";
license = lib.licenses.asl20;
@@ -11,7 +11,7 @@ vscode-utils.buildVscodeMarketplaceExtension {
};
meta = {
description = "AutoCorrect is a linter and formatter to help you to improve copywriting, correct spaces, words, and punctuations between CJK (Chinese, Japanese, Korean).";
description = "AutoCorrect is a linter and formatter to help you to improve copywriting, correct spaces, words, and punctuations between CJK (Chinese, Japanese, Korean)";
downloadPage = "https://marketplace.visualstudio.com/items?itemName=huacnlee.autocorrect";
homepage = "https://github.com/huacnlee/autocorrect";
license = lib.licenses.mit;
@@ -10,7 +10,7 @@ vscode-utils.buildVscodeMarketplaceExtension {
hash = "sha256-j0Dj7YiawhPAMHe8wk8Ph4vo26IneidoGJ4C9O7Z/64=";
};
meta = {
description = "This extension will add reload button to status bar in the right-bottom of your VSCode editor.";
description = "This extension will add reload button to status bar in the right-bottom of your VSCode editor";
downloadPage = "https://marketplace.visualstudio.com/items?itemName=natqe.reload";
homepage = "https://github.com/natqe/reload";
license = lib.licenses.unfree;
@@ -8,7 +8,7 @@ vscode-utils.buildVscodeMarketplaceExtension {
hash = "sha256-LGw7Pd72oVgMqhKPX1dV2EgluX0/4rvKVb7Fx2H6hOI=";
};
meta = {
description = "A Visual Studio Code extension for seamless switching between Nix shells and flakes.";
description = "A Visual Studio Code extension for seamless switching between Nix shells and flakes";
downloadPage = "https://marketplace.visualstudio.com/items?itemName=io-github-oops418.nix-env-picker";
homepage = "https://github.com/Oops418/nix-env-picker";
license = lib.licenses.mit;
@@ -9,7 +9,7 @@ vscode-utils.buildVscodeMarketplaceExtension {
};
meta = {
changelog = "https://marketplace.visualstudio.com/items/streetsidesoftware.code-spell-checker-german/changelog";
description = "German dictionary extension for VS Code.";
description = "German dictionary extension for VS Code";
downloadPage = "https://marketplace.visualstudio.com/items?itemName=streetsidesoftware.code-spell-checker-german";
homepage = "https://streetsidesoftware.github.io/vscode-spell-checker-german";
license = lib.licenses.gpl3Only;
@@ -1,18 +1,18 @@
{
"airgap-images-amd64": {
"url": "https://github.com/k3s-io/k3s/releases/download/v1.30.13%2Bk3s1/k3s-airgap-images-amd64.tar.zst",
"sha256": "35c11584d2fdc528a02c8ac9de083e94b7f8992002a8d6142d4725a533049ea1"
"url": "https://github.com/k3s-io/k3s/releases/download/v1.30.14%2Bk3s1/k3s-airgap-images-amd64.tar.zst",
"sha256": "0517c1a3bec942b78ab456643b614700296aba1bd0ca2399883aadeb22b6de5d"
},
"airgap-images-arm": {
"url": "https://github.com/k3s-io/k3s/releases/download/v1.30.13%2Bk3s1/k3s-airgap-images-arm.tar.zst",
"sha256": "a9ca95599c2c8240e0fffdcab81178912ffa02924ed3d42997604186fbf2f9ff"
"url": "https://github.com/k3s-io/k3s/releases/download/v1.30.14%2Bk3s1/k3s-airgap-images-arm.tar.zst",
"sha256": "d8f77b6121d40ea19c6f0658d82158a782507730ba183ebe76643d90d67f736f"
},
"airgap-images-arm64": {
"url": "https://github.com/k3s-io/k3s/releases/download/v1.30.13%2Bk3s1/k3s-airgap-images-arm64.tar.zst",
"sha256": "09ca4a9a1c1da1923538d7a2659b1166e2257d33a1478939ca28f6a08a048cf1"
"url": "https://github.com/k3s-io/k3s/releases/download/v1.30.14%2Bk3s1/k3s-airgap-images-arm64.tar.zst",
"sha256": "7edb77c4c586f661b9bf156aea4f5d35b5b390a315bae11140f425cd3ed729eb"
},
"images-list": {
"url": "https://github.com/k3s-io/k3s/releases/download/v1.30.13%2Bk3s1/k3s-images.txt",
"sha256": "7a53b3def0199b17de6ec690d13ae2001fb83809258d28d985eafa69869c3aa9"
"url": "https://github.com/k3s-io/k3s/releases/download/v1.30.14%2Bk3s1/k3s-images.txt",
"sha256": "ebe55bbef8ec772071bf736c9671e444aa31ac259e86bfb65180d2405b314c5e"
}
}
@@ -1,14 +1,14 @@
{
k3sVersion = "1.30.13+k3s1";
k3sCommit = "e77f78ee94664d4d5ac34e2c4b8d438dac52c088";
k3sRepoSha256 = "0hy9pn9cdxixllj8zm4jq65jlrvihiysvhdmkxjgn82n3snhwrgq";
k3sVendorHash = "sha256-2q9gWVCe3GhAF9YDMX4B9djz5/DliRHingJbXmTwmGE=";
k3sVersion = "1.30.14+k3s1";
k3sCommit = "a7f3d379effef5e0979996339172adb4f87d78df";
k3sRepoSha256 = "0kgsfv9bva440a79xgwwdjvhqswzx91mzgf8qishvlwrrw1w0vcm";
k3sVendorHash = "sha256-y1UCvafEdFozMlWWd0Yunu4oIkLsHnV4IMTq1RLJ87M=";
chartVersions = import ./chart-versions.nix;
imagesVersions = builtins.fromJSON (builtins.readFile ./images-versions.json);
k3sRootVersion = "0.14.1";
k3sRootSha256 = "0svbi42agqxqh5q2ri7xmaw2a2c70s7q5y587ls0qkflw5vx4sl7";
k3sCNIVersion = "1.6.0-k3s1";
k3sCNISha256 = "0g7zczvwba5xqawk37b0v96xysdwanyf1grxn3l3lhxsgjjsmkd7";
k3sCNIVersion = "1.7.1-k3s1";
k3sCNISha256 = "0k1qfmsi5bqgwd5ap8ndimw09hsxn0cqf4m5ad5a4mgl6akw6dqz";
containerdVersion = "1.7.27-k3s1";
containerdSha256 = "1w6ia9a7qs06l9wh44fpf1v2ckf2lfp9sjzk0bg4fjw5ds9sxws0";
criCtlVersion = "1.29.0-k3s1";
@@ -6,15 +6,6 @@
makeDesktopItem,
}:
let
platforms = [
"i686-linux"
"x86_64-linux"
];
in
assert lib.elem stdenv.hostPlatform.system platforms;
# Dropbox client to bootstrap installation.
# The client is self-updating, so the actual version may be newer.
let
@@ -23,7 +14,7 @@ let
x86_64-linux = "217.4.4417";
i686-linux = "206.3.6386";
}
.${stdenv.hostPlatform.system};
.${stdenv.hostPlatform.system} or "";
arch =
{
@@ -154,12 +154,12 @@ stdenv.mkDerivation {
desktopItems = builtins.attrValues desktopItems;
meta = with lib; {
meta = {
description = "Office suite with a word processor, spreadsheet and presentation program";
homepage = "https://www.softmaker.com/";
sourceProvenance = with sourceTypes; [ binaryNativeCode ];
license = licenses.unfree;
maintainers = [ ];
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
license = lib.licenses.unfree;
maintainers = with lib.maintainers; [ liberodark ];
platforms = [ "x86_64-linux" ];
};
}
@@ -27,7 +27,7 @@ buildLua {
};
meta = {
description = "Show Twitch chat messages as subtitles when watching Twitch VOD with mpv.";
description = "Show Twitch chat messages as subtitles when watching Twitch VOD with mpv";
homepage = "https://github.com/CrendKing/mpv-twitch-chat";
license = lib.licenses.mit;
maintainers = [ lib.maintainers.naho ];
@@ -31,7 +31,7 @@ stdenv.mkDerivation (finalAttrs: {
'';
meta = {
description = "Plugin for OBS Studio to add a Media Controls dock.";
description = "Plugin for OBS Studio to add a Media Controls dock";
homepage = "https://github.com/exeldro/obs-media-controls";
maintainers = with lib.maintainers; [ flexiondotorg ];
license = lib.licenses.gpl2Only;
@@ -26,7 +26,7 @@ stdenv.mkDerivation rec {
'';
meta = with lib; {
description = "A plug-in for noise generation and noise effects for OBS.";
description = "A plug-in for noise generation and noise effects for OBS";
homepage = "https://github.com/FiniteSingularity/obs-noise";
maintainers = with maintainers; [ flexiondotorg ];
license = licenses.gpl2Only;
@@ -27,7 +27,7 @@ stdenv.mkDerivation rec {
'';
meta = with lib; {
description = "A collection of OBS filters to give your stream that retro feel.";
description = "A collection of OBS filters to give your stream that retro feel";
homepage = "https://github.com/FiniteSingularity/obs-retro-effects";
maintainers = with maintainers; [ flexiondotorg ];
license = licenses.gpl2Plus;
@@ -21,7 +21,7 @@ stdenv.mkDerivation rec {
buildInputs = [ obs-studio ];
meta = with lib; {
description = "A simple OBS Studio filter to adjust RGB levels.";
description = "A simple OBS Studio filter to adjust RGB levels";
homepage = "https://github.com/wimpysworld/obs-rgb-levels";
maintainers = with maintainers; [ flexiondotorg ];
license = licenses.gpl2Only;
@@ -26,7 +26,7 @@ stdenv.mkDerivation rec {
'';
meta = with lib; {
description = "An OBS plugin to provide efficient Stroke, Glow, and Shadow effects on masked sources.";
description = "An OBS plugin to provide efficient Stroke, Glow, and Shadow effects on masked sources";
homepage = "https://github.com/FiniteSingularity/obs-stroke-glow-shadow";
maintainers = with maintainers; [ flexiondotorg ];
license = licenses.gpl2Only;
@@ -21,7 +21,7 @@ stdenv.mkDerivation rec {
buildInputs = [ obs-studio ];
meta = with lib; {
description = "An OBS Plugin that can be used to create retro-inspired pixel art visuals.";
description = "An OBS Plugin that can be used to create retro-inspired pixel art visuals";
homepage = "https://github.com/dspstanky/pixel-art";
maintainers = with maintainers; [ flexiondotorg ];
license = licenses.gpl2Only;
@@ -231,7 +231,7 @@ rec {
meta = docker-meta // {
homepage = "https://mobyproject.org/";
description = "A collaborative project for the container ecosystem to assemble container-based systems.";
description = "A collaborative project for the container ecosystem to assemble container-based systems";
};
}
);
@@ -1,6 +1,6 @@
{
lib,
gcc14Stdenv,
stdenv,
fetchFromGitHub,
cmake,
makeWrapper,
@@ -26,7 +26,7 @@
wayland-scanner,
debug ? false,
}:
gcc14Stdenv.mkDerivation (finalAttrs: {
stdenv.mkDerivation (finalAttrs: {
pname = "xdg-desktop-portal-hyprland";
version = "1.3.9";
+3 -3
View File
@@ -8,17 +8,17 @@
rustPlatform.buildRustPackage rec {
pname = "i3wsr";
version = "3.1.1";
version = "3.1.2";
src = fetchFromGitHub {
owner = "roosta";
repo = "i3wsr";
rev = "v${version}";
hash = "sha256-RTJ+up3mt6KuMkTBCXDUmztxwEQCeyAjuhhOUrdIfTo=";
hash = "sha256-8cQM2M9XjS4FSSX1/WHqmTP842Ahd1XoaqOWSGSEE0s=";
};
useFetchCargoVendor = true;
cargoHash = "sha256-7WS+8EGGl8sJ3TeT7IM+u1AiD0teJ2AITb++zK/keXs=";
cargoHash = "sha256-d+pFDvmfsuJbanUlheHxln9BY1HxU3UQE+pWRthGcc4=";
nativeBuildInputs = [ python3 ];
buildInputs = [ libxcb ];
@@ -38,7 +38,7 @@ linkFarm "writeShellApplication-tests" {
script = writeShellApplication {
name = "test-meta";
text = "";
meta.description = "A test for the `writeShellApplication` `meta` argument.";
meta.description = "A test for the `writeShellApplication` `meta` argument";
};
in
assert script.meta.mainProgram == "test-meta";
@@ -101,7 +101,7 @@ linkFarm "writeShellApplication-tests" {
exit 1
fi
'';
meta.description = "A test checking that `writeShellApplication` forwards extra arguments to `stdenv.mkDerivation`.";
meta.description = "A test checking that `writeShellApplication` forwards extra arguments to `stdenv.mkDerivation`";
expected = "";
};
+2 -2
View File
@@ -7,13 +7,13 @@
stdenv.mkDerivation rec {
pname = "ada";
version = "3.2.5";
version = "3.2.6";
src = fetchFromGitHub {
owner = "ada-url";
repo = "ada";
tag = "v${version}";
hash = "sha256-gXeQYNuhrlCEvvDQtQ07+nE/9gGzzEYPnEKMxWryLRI=";
hash = "sha256-h5/D/Msp5Zg58YFQ/viQVYlMQSXQTWU2YHkSPvtQwyA=";
};
nativeBuildInputs = [ cmake ];
+3 -3
View File
@@ -8,13 +8,13 @@
}:
stdenv.mkDerivation {
pname = "airwindows";
version = "0-unstable-2025-07-06";
version = "0-unstable-2025-07-19";
src = fetchFromGitHub {
owner = "airwindows";
repo = "airwindows";
rev = "4a19d80d3d2a64a8773ca319a5002ac5eefbf69c";
hash = "sha256-aMPe1D1/hIVY4DGKzmX/HUO04pZVBtivhVzoeG02emY=";
rev = "6761d77156cc93073ac578613f5c245676189948";
hash = "sha256-67+docPO0alsPEp3BApW9rOlXAQOa0wHdvZ5gykpNYo=";
};
# we patch helpers because honestly im spooked out by where those variables
@@ -86,6 +86,7 @@ buildNpmPackage {
maintainers = with lib.maintainers; [
jvanbruegge
adamcstephens
tebriel
];
platforms = lib.platforms.linux;
mainProgram = "audiobookshelf";
+5 -5
View File
@@ -1,9 +1,9 @@
{
"owner": "advplyr",
"repo": "audiobookshelf",
"rev": "b911a25c573c537551bae234743eaab449c836b1",
"hash": "sha256-SZDESaog136kUCGHlxR8EI1JU0lCDIFQ2qyEO5mXx8Q=",
"version": "2.26.1",
"depsHash": "sha256-1NomDTDACypnLkwzhNkK2k8oDKRO7xJmqp8IIIcFG0M=",
"clientDepsHash": "sha256-BB7fbN1SlqsfJDCBFpOgmqzMXh2w6WRoamEzm8Y6iVU="
"rev": "878f0787ba39ff82f9d5b6b5b5bb397ec667f010",
"hash": "sha256-XZVPLNnG+CRafRKeqFILKfmELEyt1RrIB1ssBO5nb/I=",
"version": "2.26.2",
"depsHash": "sha256-S++Q/sVFZX0qqWSjzMxzYR8ImjUVoNP5pGTqIkCGqVE=",
"clientDepsHash": "sha256-+DcweA3g8kdzDqHFencOnaMMx4BRZ+MTZg5BwQNzK2k="
}
+2 -2
View File
@@ -1,13 +1,13 @@
{
buildGoModule,
authentik,
vendorHash,
}:
buildGoModule {
pname = "authentik-ldap-outpost";
inherit (authentik) version src;
vendorHash = "sha256-cEB22KFDONcJBq/FvLpYKN7Zd06mh8SACvCSuj5i4fI=";
inherit vendorHash;
env.CGO_ENABLED = 0;
+8 -4
View File
@@ -1,6 +1,10 @@
{ callPackage }:
{
ldap = callPackage ./ldap.nix { };
proxy = callPackage ./proxy.nix { };
radius = callPackage ./radius.nix { };
callPackage,
authentik,
vendorHash ? authentik.proxy.vendorHash,
}:
{
ldap = callPackage ./ldap.nix { inherit vendorHash; };
proxy = callPackage ./proxy.nix { inherit vendorHash; };
radius = callPackage ./radius.nix { inherit vendorHash; };
}
+113 -18
View File
@@ -4,7 +4,6 @@
callPackages,
cacert,
fetchFromGitHub,
buildNpmPackage,
buildGoModule,
runCommand,
bash,
@@ -16,13 +15,13 @@
}:
let
version = "2025.4.1";
version = "2025.6.4";
src = fetchFromGitHub {
owner = "goauthentik";
repo = "authentik";
rev = "version/${version}";
hash = "sha256-idShMSYIrf3ViG9VFNGNu6TSjBz3Q+GJMMeCzcJwfG4=";
hash = "sha256-bs/ThY3YixwBObahcS7BrOWj0gsaUXI664ldUQlJul8=";
};
meta = {
@@ -30,8 +29,10 @@ let
changelog = "https://github.com/goauthentik/authentik/releases/tag/version%2F${version}";
homepage = "https://goauthentik.io/";
license = lib.licenses.mit;
platforms = lib.platforms.linux;
broken = stdenvNoCC.buildPlatform != stdenvNoCC.hostPlatform;
platforms = [
"aarch64-linux"
"x86_64-linux"
];
maintainers = with lib.maintainers; [
jvanbruegge
risson
@@ -45,7 +46,13 @@ let
sourceRoot = "${src.name}/website";
outputHash = "sha256-AnQpjCoCTzm28Wl/t3YHx0Kl0CuMHL2OgRjRB1Trrsw=";
outputHash =
{
"aarch64-linux" = "sha256-+UObt/FhHkEzZUR24ND6phSDqvuzaOuUiyoW0dolsiY=";
"x86_64-linux" = "sha256-1qlJf4mVYM5znF3Ifi7CpGMfinUsb/YoXGeM6QLYMis=";
}
.${stdenvNoCC.hostPlatform.system} or (throw "authentik-website-deps: unsupported hust platform");
outputHashMode = "recursive";
nativeBuildInputs = [
@@ -55,6 +62,7 @@ let
buildPhase = ''
npm ci --cache ./cache
rm -r ./cache node_modules/.package-lock.json
'';
@@ -73,6 +81,8 @@ let
postPatch = ''
substituteInPlace package.json --replace-fail 'cross-env ' ""
substituteInPlace ../packages/docusaurus-config/lib/common.js \
--replace-fail 'title: "authentik",' 'title: "authentik", future: { experimental_faster : { rspackBundler: false }},'
'';
sourceRoot = "${src.name}/website";
@@ -82,11 +92,13 @@ let
cp -r ${website-deps} node_modules
chmod -R +w node_modules
pushd node_modules/.bin
patchShebangs $(readlink docusaurus)
popd
cat node_modules/.bin/docusaurus
npm run build-bundled
npm run build:schema
npm run build:api
npm run build:docusaurus
runHook postBuild
'';
@@ -120,21 +132,89 @@ let
'';
};
webui = buildNpmPackage {
# prefetch-npm-deps does not save all dependencies even though the lockfile is fine
webui-deps = stdenvNoCC.mkDerivation {
pname = "authentik-webui-deps";
inherit src version meta;
sourceRoot = "${src.name}/web";
outputHash =
{
"aarch64-linux" = "sha256-e4v7f3+/e++CI9xa9G2/47y8Dga+vluyUtBXGyaWFcI=";
"x86_64-linux" = "sha256-m0vYUevOz6pof8XqiZHXzgPhkQLUUFOdblmfOjHJUJc=";
}
.${stdenvNoCC.hostPlatform.system} or (throw "authentik-webui-deps: unsupported hust platform");
outputHashMode = "recursive";
nativeBuildInputs = [
nodejs
cacert
];
postPatch = ''
substituteInPlace packages/core/version/node.js \
--replace-fail 'import PackageJSON from "../../../../package.json" with { type: "json" };' "" \
--replace-fail '(PackageJSON.version);' '"${version}";'
'';
buildPhase = ''
npm ci --cache ./cache
rm -r node_modules/chromedriver node_modules/.bin/chromedriver
rm -r ./cache node_modules/.package-lock.json
rm node_modules/@goauthentik/{core,web-sfe,esbuild-plugin-live-reload}
cp -r packages/core node_modules/@goauthentik/
cp -r packages/sfe node_modules/@goauthentik/web-sfe
'';
installPhase = ''
mv node_modules $out
'';
dontPatchShebangs = true;
};
webui = stdenvNoCC.mkDerivation {
pname = "authentik-webui";
inherit version meta;
src = runCommand "authentik-webui-source" { } ''
mkdir -p $out/web/node_modules/@goauthentik/
mkdir $out
cp -r ${src}/web $out/
ln -s ${src}/package.json $out/
ln -s ${src}/website $out/
chmod -R +w $out/web
ln -s ${src}/website $out/web/
cp -r ${webui-deps} $out/web/node_modules
chmod -R +w $out/web/node_modules
ln -s ${clientapi} $out/web/node_modules/@goauthentik/api
'';
npmDepsHash = "sha256-i95sH+KUgAQ76cv1+7AE/UA6jsReQMttDGWClNE2Ol4=";
nativeBuildInputs = [
nodejs
];
postPatch = ''
cd web
substituteInPlace packages/core/version/node.js \
--replace-fail 'import PackageJSON from "../../../../package.json" with { type: "json" };' "" \
--replace-fail '(PackageJSON.version);' '"${version}";'
'';
buildPhase = ''
runHook preBuild
pushd node_modules/.bin
patchShebangs $(readlink rollup)
patchShebangs $(readlink wireit)
patchShebangs $(readlink lit-localize)
popd
npm run build
runHook postBuild
'';
CHROMEDRIVER_FILEPATH = lib.getExe chromedriver;
@@ -205,6 +285,17 @@ let
pythonImportsCheck = [ "rest_framework" ];
};
tenant-schemas-celery = prev.tenant-schemas-celery.overrideAttrs (_: rec {
version = "3.0.0";
src = fetchFromGitHub {
owner = "maciej-gol";
repo = "tenant-schemas-celery";
tag = version;
hash = "sha256-rGLrP8rE9SACMDVpNeBU85U/Sb2lNhsgEgHJhAsdKNM=";
};
});
authentik-django = prev.buildPythonPackage {
pname = "authentik-django";
inherit version src meta;
@@ -218,7 +309,6 @@ let
--replace-fail '/blueprints' "$out/blueprints" \
--replace-fail './media' '/var/lib/authentik/media'
substituteInPlace pyproject.toml \
--replace-fail '"dumb-init",' "" \
--replace-fail 'djangorestframework-guardian' 'djangorestframework-guardian2'
substituteInPlace authentik/stages/email/utils.py \
--replace-fail 'web/' '${webui}/'
@@ -229,9 +319,9 @@ let
prev.pythonRelaxDepsHook
];
pythonRelaxDeps = [
"xmlsec"
];
pythonRemoveDeps = [ "dumb-init" ];
pythonRelaxDeps = true;
propagatedBuildInputs =
with final;
@@ -339,7 +429,7 @@ let
env.CGO_ENABLED = 0;
vendorHash = "sha256-cEB22KFDONcJBq/FvLpYKN7Zd06mh8SACvCSuj5i4fI=";
vendorHash = "sha256-7oX7e7Ni5I6zblEQIeXjYOt4+QNSjH4Rpn7B5Cr5LMc=";
postInstall = ''
mv $out/bin/server $out/bin/authentik
@@ -383,7 +473,12 @@ stdenvNoCC.mkDerivation {
runHook postInstall
'';
passthru.outposts = callPackages ./outposts.nix { };
passthru = {
inherit proxy;
outposts = callPackages ./outposts.nix {
inherit (proxy) vendorHash;
};
};
nativeBuildInputs = [ makeWrapper ];
+2 -2
View File
@@ -1,13 +1,13 @@
{
buildGoModule,
authentik,
vendorHash,
}:
buildGoModule {
pname = "authentik-proxy-outpost";
inherit (authentik) version src;
vendorHash = "sha256-cEB22KFDONcJBq/FvLpYKN7Zd06mh8SACvCSuj5i4fI=";
inherit vendorHash;
env.CGO_ENABLED = 0;
+2 -2
View File
@@ -1,13 +1,13 @@
{
buildGoModule,
authentik,
vendorHash,
}:
buildGoModule {
pname = "authentik-radius-outpost";
inherit (authentik) version src;
vendorHash = "sha256-cEB22KFDONcJBq/FvLpYKN7Zd06mh8SACvCSuj5i4fI=";
inherit vendorHash;
env.CGO_ENABLED = 0;
@@ -83,9 +83,9 @@
containerapp = mkAzExtension rec {
pname = "containerapp";
version = "1.2.0b1";
version = "1.2.0b2";
url = "https://azcliprod.blob.core.windows.net/cli-extensions/containerapp-${version}-py2.py3-none-any.whl";
hash = "sha256-tayDzAbvPjCRjJMdV6BOSd9Sgcj8bnEuZI9khKGCyrM=";
hash = "sha256-86+DfGC1Fm55u6JPl0II/qXWqLZTv4ANRkjgQgNkInk=";
description = "Microsoft Azure Command-Line Tools Containerapp Extension";
propagatedBuildInputs = with python3Packages; [
docker
+3 -3
View File
@@ -29,13 +29,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "bcachefs-tools";
version = "1.25.2";
version = "1.25.3";
src = fetchFromGitHub {
owner = "koverstreet";
repo = "bcachefs-tools";
tag = "v${finalAttrs.version}";
hash = "sha256-4MscYFlUwGrFhjpQs1ifDMh5j+t9x7rokOtR2SmhCro=";
hash = "sha256-Nij4mOJPVA03u6mpyKsFR7vgQ9wihiNfnlSlh6MNXP0=";
};
nativeBuildInputs = [
@@ -65,7 +65,7 @@ stdenv.mkDerivation (finalAttrs: {
cargoDeps = rustPlatform.fetchCargoVendor {
src = finalAttrs.src;
hash = "sha256-juXRmI3tz2BXQsRaRRGyBaGqeLk2QHfJb2sKPmWur8s=";
hash = "sha256-QkpsAQSoCmAihrE5YGzp9DalEQr+2djiPhLTXRn0u6U=";
};
makeFlags = [
@@ -6,17 +6,17 @@
rustPlatform.buildRustPackage rec {
pname = "beancount-language-server";
version = "1.3.7";
version = "1.4.1";
src = fetchFromGitHub {
owner = "polarmutex";
repo = "beancount-language-server";
rev = "v${version}";
hash = "sha256-aqWenvNAdDL7B7J1hvt+JXT73SJJKu9KFlpUReOp3s4=";
hash = "sha256-cx/Y0jBpnNN+QVEovpbhCG70VwOqwDE+8lBcRAJtlF4=";
};
useFetchCargoVendor = true;
cargoHash = "sha256-h2y8h3rZABspyWXEWy4/me4NhlXzghC7KH1SyfDzGfI=";
cargoHash = "sha256-P3Oug9YNsTmsOz68rGUcYJwq9NsKErHt/fOCvqXixNU=";
doInstallCheck = true;
postInstallCheck = ''
+2 -2
View File
@@ -27,11 +27,11 @@
stdenv.mkDerivation (finalAttrs: {
pname = "bind";
version = "9.20.10";
version = "9.20.11";
src = fetchurl {
url = "https://downloads.isc.org/isc/bind9/${finalAttrs.version}/bind-${finalAttrs.version}.tar.xz";
hash = "sha256-D7O6LDN7tIjKaPXfKWxDXNJVBY+2PQgi6R2wI1yQVxY=";
hash = "sha256-TaLVMuZovCHog/bm2dPYF5TZ7GCxgVMDhWSaVvRu4Xo=";
};
outputs = [
+13
View File
@@ -0,0 +1,13 @@
diff --git a/configure.ac b/configure.ac
index 620bb26..ce48364 100644
--- a/configure.ac
+++ b/configure.ac
@@ -29,6 +29,8 @@ AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE], "$GETTEXT_PACKAGE",
AM_GLIB_GNU_GETTEXT
AM_GLIB_DEFINE_LOCALEDIR(GNOMELOCALEDIR)
+AM_GNU_GETTEXT_VERSION([0.25])
+AM_GNU_GETTEXT([external])
AC_PROG_CC
AM_PROG_CC_C_O
+10 -1
View File
@@ -4,6 +4,7 @@
fetchgit,
wrapGAppsHook3,
cairo,
gettext,
glib,
gnome-common,
gst_all_1,
@@ -25,7 +26,10 @@ stdenv.mkDerivation {
hash = "sha256-3DUwXCPBAmeCRlDkiPUgwNyBa6bCvC/TLguMCK3bo4E=";
};
patches = [ ./add-amflags.patch ];
patches = [
./add-amflags.patch
./gettext-0.25.patch
];
preBuild = ''
./autogen.sh --prefix=$out
@@ -37,6 +41,11 @@ stdenv.mkDerivation {
"-Wno-error=discarded-qualifiers"
];
preAutoreconf = ''
# error: possibly undefined macro: AM_NLS
cp ${gettext}/share/gettext/m4/nls.m4 macros/
'';
nativeBuildInputs = [
pkg-config
intltool
+3 -3
View File
@@ -10,17 +10,17 @@
rustPlatform.buildRustPackage (finalAttrs: {
pname = "c2patool";
version = "0.19.0";
version = "0.19.1";
src = fetchFromGitHub {
owner = "contentauth";
repo = "c2pa-rs";
tag = "c2patool-v${finalAttrs.version}";
hash = "sha256-f+YAaqpNGgW1rbOtfTDdNViu7nobSK7yZTKht/JakAQ=";
hash = "sha256-48qQwk0TwOmnzcG/cJCYkyPch+obj9pP/z8I1UFVCBE=";
};
useFetchCargoVendor = true;
cargoHash = "sha256-TxgxMI3Ad5bcwOeLWwugpzfS+K1R6qaZY8gPQCgceoQ=";
cargoHash = "sha256-EA34It7DGGO8fTJuCCUkr4q/C6IgQ6d2dt4ZUfIv0OA=";
# use the non-vendored openssl
env.OPENSSL_NO_VENDOR = 1;
+1 -1
View File
@@ -32,7 +32,7 @@ appimageTools.wrapType2 {
'';
meta = with lib; {
description = "Standalone version of cables, a tool for creating beautiful interactive content.";
description = "Standalone version of cables, a tool for creating beautiful interactive content";
homepage = "https://cables.gl";
changelog = "https://cables.gl/changelog";
license = licenses.mit;
@@ -27,7 +27,7 @@ rustPlatform.buildRustPackage (finalAttrs: {
'';
meta = {
description = "Cleans all projects under specified directory.";
description = "Cleans all projects under specified directory";
mainProgram = "cargo-clean-recursive";
homepage = "https://github.com/IgaguriMK/cargo-clean-recursive";
license = with lib.licenses; [
+1 -1
View File
@@ -49,7 +49,7 @@ rustPlatform.buildRustPackage {
'';
meta = with lib; {
description = "Rust on mobile made easy!";
description = "Rust on mobile made easy";
homepage = "https://tauri.app/";
license = with licenses; [
asl20 # or
@@ -48,7 +48,7 @@ stdenv.mkDerivation {
meta = with lib; {
homepage = "https://github.com/0xacx/chatGPT-shell-cli";
description = "Simple shell script to use OpenAI's ChatGPT and DALL-E from the terminal. No Python or JS required.";
description = "Simple shell script to use OpenAI's ChatGPT and DALL-E from the terminal. No Python or JS required";
license = licenses.mit;
maintainers = with maintainers; [ jfvillablanca ];
};
+3 -3
View File
@@ -8,13 +8,13 @@
rustPlatform.buildRustPackage (finalAttrs: {
pname = "chhoto-url";
version = "6.2.8";
version = "6.2.10";
src = fetchFromGitHub {
owner = "SinTan1729";
repo = "chhoto-url";
tag = finalAttrs.version;
hash = "sha256-aWiLfhNbtjsM7fEqoNIKsU12/3b8ORTpZ/4jyqSLmdM=";
hash = "sha256-56tbSOoYRtmRzKqRDe951JXOlPymRGtEyGSZ0dWXOcw=";
};
sourceRoot = "${finalAttrs.src.name}/actix";
@@ -24,7 +24,7 @@ rustPlatform.buildRustPackage (finalAttrs: {
--replace-fail "./resources/" "${placeholder "out"}/share/chhoto-url/resources/"
'';
cargoHash = "sha256-rKNGUl1TI21SOBwTuv/TGl46S8FVjCWunJwP5PLdx6g=";
cargoHash = "sha256-z5BFo6X3Lpb/PJPMQ+3m1RozvXeHLaY81PABAE7gTTA=";
postInstall = ''
mkdir -p $out/share/chhoto-url
+3 -3
View File
@@ -11,14 +11,14 @@
python3Packages.buildPythonApplication {
pname = "chirp";
version = "0.4.0-unstable-2025-07-03";
version = "0.4.0-unstable-2025-07-17";
pyproject = true;
src = fetchFromGitHub {
owner = "kk7ds";
repo = "chirp";
rev = "1f2beb0c7cfa53340a7f38c03d4c8f99bf052643";
hash = "sha256-WGhS4VUeRwi/iBG2ZVXNyKEng9V6qOoI51Ak8PYljJk=";
rev = "c28ea5e8a7d8036ccc76ec38a050fd30b84c65e4";
hash = "sha256-hr8Q8BUanM64CktbrCazs8uvt/ssf+JBdevAMuDj6G4=";
};
nativeBuildInputs = [
+1 -1
View File
@@ -15,7 +15,7 @@ rustPlatform.buildRustPackage {
cargoLock.lockFile = ./src/Cargo.lock;
meta = {
description = "Output a path's realpath within a chroot.";
description = "Output a path's realpath within a chroot";
maintainers = [ lib.maintainers.elvishjerricco ];
};
}
+2 -2
View File
@@ -7,13 +7,13 @@
buildGoModule rec {
pname = "civo";
version = "1.4.0";
version = "1.4.1";
src = fetchFromGitHub {
owner = "civo";
repo = "cli";
rev = "v${version}";
hash = "sha256-3kvSXewDpBHfiQfnPRRnc9OZE+WShb9ImRDuIYPQbak=";
hash = "sha256-KwzQnjLmss8udSCKncoASZlO+G9ch7pZp6Iql+YV1nQ=";
};
vendorHash = "sha256-jW1pJ/UmeFsIEVvrwxcQuWwPQFHYkJBFnxGei41pz2U=";
+1 -1
View File
@@ -59,7 +59,7 @@ pkgs.stdenv.mkDerivation {
'';
meta = {
description = "ckdl is a C (C11) library that implements reading and writing the KDL Document Language.";
description = "ckdl is a C (C11) library that implements reading and writing the KDL Document Language";
license = lib.licenses.mit;
platforms = lib.platforms.all;
};
+4 -4
View File
@@ -6,13 +6,13 @@
"packages": {
"": {
"dependencies": {
"@anthropic-ai/claude-code": "^1.0.56"
"@anthropic-ai/claude-code": "^1.0.57"
}
},
"node_modules/@anthropic-ai/claude-code": {
"version": "1.0.56",
"resolved": "https://registry.npmjs.org/@anthropic-ai/claude-code/-/claude-code-1.0.56.tgz",
"integrity": "sha512-LYOlv9uXtLrJcJqSLvQlhy7shhC6MHEXuSGZ/+BazM4LY36ng3cmKjTCDny0kZQxa+u/+MYOXUrkmkJm2qR75Q==",
"version": "1.0.57",
"resolved": "https://registry.npmjs.org/@anthropic-ai/claude-code/-/claude-code-1.0.57.tgz",
"integrity": "sha512-zMymGZzjG+JO9iKC5N5pAy8AxyHIMPCL6U3HYCR3vCj5M+Y0s3GAMma6GkvCXWFixRN6KSZItKw3HbQiaIBYlw==",
"license": "SEE LICENSE IN README.md",
"bin": {
"claude": "cli.js"
+3 -3
View File
@@ -7,16 +7,16 @@
buildNpmPackage rec {
pname = "claude-code";
version = "1.0.56";
version = "1.0.57";
nodejs = nodejs_20; # required for sandboxed Nix builds on Darwin
src = fetchzip {
url = "https://registry.npmjs.org/@anthropic-ai/claude-code/-/claude-code-${version}.tgz";
hash = "sha256-q/17LfP5MWeKpt8akPXwMvkZ6Qhc+9IGpM6N34JuExY=";
hash = "sha256-BNaBl4NGS1x1emJux610HXwUg1QC1wauRZ6UXn3gcR0=";
};
npmDepsHash = "sha256-0hr5Tu2/0ETEgNb2s4BQGZXjsHrFzK+iD2ZtZNTlyoI=";
npmDepsHash = "sha256-TxKqpiPpxEfYowQswMrcWIotAdmLvHJyQ56vK39asNs=";
postPatch = ''
cp ${./package-lock.json} package-lock.json
@@ -8,13 +8,13 @@
buildGoModule rec {
pname = "clickhouse-backup";
version = "2.6.26";
version = "2.6.29";
src = fetchFromGitHub {
owner = "Altinity";
repo = "clickhouse-backup";
rev = "v${version}";
hash = "sha256-CdDzIKCtOE8Q7I6YhMIi4oyjo5rnYrySvzbpcdgQH6s=";
hash = "sha256-B0G4Umnolpc3bACkL3EXN+b8Szb8MnBekQ6GLZAhr/w=";
};
vendorHash = "sha256-Vqudi7sl9VTWo4g+74qh9sMUOGd9OpNDlzimEPm/EtU=";
+1 -1
View File
@@ -55,7 +55,7 @@ stdenv.mkDerivation (finalAttrs: {
passthru.updateScript = unstableGitUpdater { hardcodeZeroVersion = true; };
meta = {
description = "Drag multiple files and folders on to Collection window, drop them anywhere!";
description = "Drag multiple files and folders on to Collection window, drop them anywhere";
mainProgram = "collector";
homepage = "https://github.com/mijorus/collector";
license = lib.licenses.gpl3;
+3 -3
View File
@@ -7,18 +7,18 @@
rustPlatform.buildRustPackage rec {
pname = "comet-gog";
version = "0.3.0";
version = "0.3.1";
src = fetchFromGitHub {
owner = "imLinguin";
repo = "comet";
tag = "v${version}";
hash = "sha256-oJSP/zqr4Jp09Rh15a3o1GWsTA0y22+Zu2mU0HXHLHY=";
hash = "sha256-asg2xp9A5abmsF+CgOa+ScK2sQwSNFQXD5Qnm76Iyhg=";
fetchSubmodules = true;
};
useFetchCargoVendor = true;
cargoHash = "sha256-VY9+5QUJYYifLokf69laapCCBRYFo1BOd6kQpxO2wkc=";
cargoHash = "sha256-K0lQuk2PBwnVlkRpYNo4Z7to/Lx2fY6RIlkgmMjvEtc=";
# error: linker `aarch64-linux-gnu-gcc` not found
postPatch = ''
@@ -45,11 +45,11 @@ let
in
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "copilot-language-server";
version = "1.339.0";
version = "1.346.0";
src = fetchzip {
url = "https://github.com/github/copilot-language-server-release/releases/download/${finalAttrs.version}/copilot-language-server-native-${finalAttrs.version}.zip";
hash = "sha256-UgBe78MZla2FLfP10VfM4meMaiZWAyj2PUBiZ7M+OXU=";
hash = "sha256-61vWcQ6WGXS6vgXLYzSuJ7Ckx9m3ij9hu2JoYHVMRMY=";
stripRoot = false;
};
+1 -1
View File
@@ -151,7 +151,7 @@ buildNpmPackage {
passthru.tests.cryptpad = nixosTests.cryptpad;
meta = {
description = "Collaborative office suite, end-to-end encrypted and open-source.";
description = "Collaborative office suite, end-to-end encrypted and open-source";
homepage = "https://cryptpad.org/";
license = lib.licenses.agpl3Plus;
mainProgram = "cryptpad";
+5 -5
View File
@@ -18,7 +18,7 @@
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "dbeaver-bin";
version = "25.1.2";
version = "25.1.3";
src =
let
@@ -31,10 +31,10 @@ stdenvNoCC.mkDerivation (finalAttrs: {
aarch64-darwin = "macos-aarch64.dmg";
};
hash = selectSystem {
x86_64-linux = "sha256-jyqUIar/RnUvcnXOB3/c7F5BAcpUVL3ufnGuKNGHq0M=";
aarch64-linux = "sha256-1aEbrgPVIaWG3rUwHQCcnVTQtRgS2ksjqH5l13eR7NY=";
x86_64-darwin = "sha256-n6cu7wzC4GowWGUMF2vg+kA+tiOWzgaWLcUw0I/fCXU=";
aarch64-darwin = "sha256-XRFg11t6kiBTPhX8wZbVkHotacjRu3BK1MMGaHDJs6s=";
x86_64-linux = "sha256-SJCm5HnyhhpFvAK5ei9rkjCKnv8k904Vy0mOqTNcZXM=";
aarch64-linux = "sha256-hE4Eu8eL4fJlCj7s+VM4moPBGleibg3nT363avB9gq4=";
x86_64-darwin = "sha256-RWewJ5A0j+W17bv0DtxHG1iEz6q87/FwOvn34tHoN7Q=";
aarch64-darwin = "sha256-vpVQF3o054s6ztpxJVGj8z3R4E2bc3LD+t8/4PO4hXw=";
};
in
fetchurl {
+1 -1
View File
@@ -56,7 +56,7 @@ stdenv.mkDerivation (finalAttrs: {
'';
meta = {
description = "Program for determining types of files for Windows, Linux and MacOS.";
description = "Program for determining types of files for Windows, Linux and MacOS";
mainProgram = "die";
homepage = "https://github.com/horsicq/Detect-It-Easy";
changelog = "https://github.com/horsicq/Detect-It-Easy/blob/master/changelog.txt";
@@ -8,13 +8,13 @@
wl-clipboard,
}:
buildGoModule rec {
buildGoModule (finalAttrs: {
pname = "discordo";
version = "0-unstable-2025-06-26";
src = fetchFromGitHub {
owner = "ayn2op";
repo = pname;
repo = "discordo";
rev = "d701e7d15ba07457aa41ab1d1d02ce2c565c7736";
hash = "sha256-E8Et8w8ebDjNKPnPIFHC+Ut2IfOCnNJKRwVFUVNf7+8=";
};
@@ -25,7 +25,6 @@ buildGoModule rec {
ldflags = [
"-s"
"-w"
];
# Clipboard support on X11 and Wayland
@@ -45,11 +44,11 @@ buildGoModule rec {
extraArgs = [ "--version=branch" ];
};
meta = with lib; {
meta = {
description = "Lightweight, secure, and feature-rich Discord terminal client";
homepage = "https://github.com/ayn2op/discordo";
license = licenses.mit;
maintainers = [ maintainers.arian-d ];
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ arian-d ];
mainProgram = "discordo";
};
}
})
+2 -2
View File
@@ -9,7 +9,7 @@
buildGoModule rec {
pname = "doctl";
version = "1.133.0";
version = "1.134.0";
vendorHash = null;
@@ -42,7 +42,7 @@ buildGoModule rec {
owner = "digitalocean";
repo = "doctl";
tag = "v${version}";
hash = "sha256-U3n407HnivvogybgTuB/Rb932bt0WTbk6M1Wf7jRoTo=";
hash = "sha256-fhl9u/6XbQKef21hD4MGEliWPdYSbSsK8rO4nTQgrmE=";
};
meta = {
+2 -2
View File
@@ -8,13 +8,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "dolibarr";
version = "21.0.1";
version = "21.0.2";
src = fetchFromGitHub {
owner = "Dolibarr";
repo = "dolibarr";
tag = finalAttrs.version;
hash = "sha256-aOFqfXsT1kmQwIB8clLMQaMeZtsyIYCxCGqaGCjlBRY=";
hash = "sha256-H1p20dDe7YDFFk0hwyNvJ7LG9/3FF7JPo322Cgb0gYo=";
};
dontBuild = true;
@@ -1,6 +1,6 @@
{ mkDprintPlugin }:
mkDprintPlugin {
description = "Biome (JS/TS) wrapper plugin.";
description = "Biome (JS/TS) wrapper plugin";
hash = "sha256-CqsBSzhUD5OUqyXNIl2T8yb/QngR3ept1kTMUKu7vuc=";
initConfig = {
configExcludes = [ "**/node_modules" ];
@@ -1,6 +1,6 @@
{ mkDprintPlugin }:
mkDprintPlugin {
description = "Dockerfile code formatter.";
description = "Dockerfile code formatter";
hash = "sha256-gsfMLa4zw8AblOS459ZS9OZrkGCQi5gBN+a3hvOsspk=";
initConfig = {
configExcludes = [ ];
@@ -1,6 +1,6 @@
{ mkDprintPlugin }:
mkDprintPlugin {
description = "JSON/JSONC code formatter.";
description = "JSON/JSONC code formatter";
hash = "sha256-uFcFLi9aYsBrAqkhFmg9GI+LKiV19LxdNjxQ85EH9To=";
initConfig = {
configExcludes = [ "**/*-lock.json" ];
@@ -1,6 +1,6 @@
{ mkDprintPlugin }:
mkDprintPlugin {
description = "Jupyter notebook code block formatter.";
description = "Jupyter notebook code block formatter";
hash = "sha256-IlGwt2TnKeH9NwmUmU1keaTInXgYQVLIPNnr30A9lsM=";
initConfig = {
configExcludes = [ ];
@@ -1,6 +1,6 @@
{ mkDprintPlugin }:
mkDprintPlugin {
description = "Markdown code formatter.";
description = "Markdown code formatter";
hash = "sha256-2lpgVMExOjMVRTvX6hGRWuufwh2AIkiXaOzkN8LhZgw=";
initConfig = {
configExcludes = [ ];
@@ -1,6 +1,6 @@
{ mkDprintPlugin }:
mkDprintPlugin {
description = "Ruff (Python) wrapper plugin.";
description = "Ruff (Python) wrapper plugin";
hash = "sha256-15InHQgF9c0Js4yUJxmZ1oNj1O16FBU12u/GOoaSAJ8=";
initConfig = {
configExcludes = [ ];
@@ -1,6 +1,6 @@
{ mkDprintPlugin }:
mkDprintPlugin {
description = "TOML code formatter.";
description = "TOML code formatter";
hash = "sha256-ASbIESaRVC0wtSpjkHbsyD4Hus6HdjjO58aRX9Nrhik=";
initConfig = {
configExcludes = [ ];
@@ -1,6 +1,6 @@
{ mkDprintPlugin }:
mkDprintPlugin {
description = "TypeScript/JavaScript code formatter.";
description = "TypeScript/JavaScript code formatter";
hash = "sha256-u6DpQWhPyERphKmlXOTE6NW/08YzBDWgzWTJ4JLLAjE=";
initConfig = {
configExcludes = [ "**/node_modules" ];
@@ -1,6 +1,6 @@
{ mkDprintPlugin }:
mkDprintPlugin {
description = "CSS, SCSS, Sass and Less formatter.";
description = "CSS, SCSS, Sass and Less formatter";
hash = "sha256-mFlhfqtglKtKNls96PO/2AWLL1fNC5msQCd9EgdKauE=";
initConfig = {
configExcludes = [ "**/node_modules" ];
@@ -1,6 +1,6 @@
{ mkDprintPlugin }:
mkDprintPlugin {
description = "HTML, Vue, Svelte, Astro, Angular, Jinja, Twig, Nunjucks, and Vento formatter.";
description = "HTML, Vue, Svelte, Astro, Angular, Jinja, Twig, Nunjucks, and Vento formatter";
hash = "sha256-fCvurr8f79io/jIjwCfwr/WGjvcKZtptRrx9GFfytSI=";
initConfig = {
configExcludes = [ ];
@@ -1,6 +1,6 @@
{ mkDprintPlugin }:
mkDprintPlugin {
description = "GraphQL formatter.";
description = "GraphQL formatter";
hash = "sha256-PlQwpR0tMsghMrOX7is+anN57t9xa9weNtoWpc0E9ec=";
initConfig = {
configExcludes = [ ];
@@ -1,6 +1,6 @@
{ mkDprintPlugin }:
mkDprintPlugin {
description = "YAML formatter.";
description = "YAML formatter";
hash = "sha256-6ua021G7ZW7Ciwy/OHXTA1Joj9PGEx3SZGtvaA//gzo=";
initConfig = {
configExcludes = [ ];
@@ -23,6 +23,12 @@ stdenv.mkDerivation {
hash = "sha256-UJeFPVi3423Jh72fVk8QbLX1tTNAQ504xYs9HwVCkZc=";
};
# gtest requires C++17, while dublin-traceroute requires C++11
postPatch = ''
substituteInPlace CMakeLists.txt \
--replace-fail "ENABLE_TESTING()" ""
'';
nativeBuildInputs = [
cmake
pkg-config
+9 -7
View File
@@ -8,19 +8,21 @@
let
rocksdb = rocksdb_7_10;
in
rustPlatform.buildRustPackage rec {
rustPlatform.buildRustPackage (finalAttrs: {
pname = "electrs";
version = "0.10.9";
version = "0.10.10";
src = fetchFromGitHub {
owner = "romanz";
repo = "electrs";
rev = "v${version}";
hash = "sha256-Xo7aqP4tIh/kYthPucscxnl+ZtVioEja4TTFdH0Q350=";
rev = "v${finalAttrs.version}";
hash = "sha256-FSsTo2m88U7t6wMXaSuYhF5bCMRq11EBQsq6uiMdF7c=";
};
useFetchCargoVendor = true;
cargoHash = "sha256-wDEtVsgkddGv89tTy96wYzNWVicn34Gxi+YAo7yAfQA=";
cargoDeps = rustPlatform.fetchCargoVendor {
inherit (finalAttrs) pname version src;
hash = "sha256-hVPtnMqaFH+1QJ52ZG9vZ3clsMTsEpvF5JjTKWoKSPE=";
};
# needed for librocksdb-sys
nativeBuildInputs = [ rustPlatform.bindgenHook ];
@@ -38,4 +40,4 @@ rustPlatform.buildRustPackage rec {
maintainers = with maintainers; [ prusnak ];
mainProgram = "electrs";
};
}
})
+3 -1
View File
@@ -2,6 +2,8 @@
#!nix-shell -i bash -p coreutils curl jq git gnupg common-updater-scripts
set -euo pipefail
trap 'echo "Error at ${BASH_SOURCE[0]}:$LINENO"' ERR
# Fetch latest release, GPG-verify the tag, update derivation
scriptDir=$(cd "${BASH_SOURCE[0]%/*}" && pwd)
@@ -34,6 +36,6 @@ git -C $repo verify-tag v${version}
rm -rf $repo/.git
hash=$(nix --extra-experimental-features nix-command hash path $repo)
(cd "$nixpkgs" && update-source-version electrs "$version" "$hash" && update-source-version electrs --ignore-same-version --source-key=cargoDeps)
(cd "$nixpkgs" && update-source-version electrs "$version" "$hash" && update-source-version electrs --ignore-same-version --source-key=cargoDeps.vendorStaging)
echo
echo "electrs: $oldVersion -> $version"
+1 -1
View File
@@ -32,7 +32,7 @@ buildNpmPackage (finalAttrs: {
passthru.updateScript = nix-update-script { };
meta = {
description = "Ergonomic keyboard layout generator.";
description = "Ergonomic keyboard layout generator";
homepage = "https://ergogen.xyz";
mainProgram = "ergogen";
license = lib.licenses.mit;
+2 -2
View File
@@ -34,14 +34,14 @@ let
in
python.pkgs.buildPythonApplication rec {
pname = "esphome";
version = "2025.7.2";
version = "2025.7.3";
pyproject = true;
src = fetchFromGitHub {
owner = "esphome";
repo = "esphome";
tag = version;
hash = "sha256-3hhFY6qi8xOuTb8WXuVaTNpCqXXdSg3DXubnj+FG73A=";
hash = "sha256-njhcH/C55i1Xkclt2bp+z9OXhR7gsewWUgW3bn/1yig=";
};
build-system = with python.pkgs; [
+98
View File
@@ -0,0 +1,98 @@
{
lib,
stdenv,
cmake,
fetchFromGitHub,
pkg-config,
python3,
freetype,
glfw,
gtk3,
libGL,
libpng,
lunasvg,
nlohmann_json,
plutovg,
xorg,
zlib,
nativeFileDialog ? null,
python3Packages ? null,
enableNFD ? false,
enablePython ? false,
enableTests ? false,
enableExamples ? false,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "feather-tk";
version = "0.3.0";
src = fetchFromGitHub {
owner = "darbyjohnston";
repo = "feather-tk";
tag = finalAttrs.version;
fetchSubmodules = true;
hash = "sha256-776V1nMsAatGkYNBq7QFRX28cI3/NU/2YRSbhfezr0g=";
};
nativeBuildInputs = [
cmake
pkg-config
python3
];
buildInputs =
[
freetype
glfw
lunasvg
plutovg
nlohmann_json
libpng
zlib
libGL
]
++ lib.optionals (enableNFD && nativeFileDialog != null) [
nativeFileDialog
]
++ lib.optionals (enableNFD && stdenv.isLinux) [
gtk3
]
++ lib.optionals enablePython [
python3Packages.pybind11
];
cmakeFlags = [
(lib.cmakeFeature "CMAKE_BUILD_TYPE" "Release")
(lib.cmakeBool "feather_tk_UI_LIB" true)
(lib.cmakeFeature "feather_tk_API" "GL_4_1")
(lib.cmakeBool "feather_tk_nfd" enableNFD)
(lib.cmakeBool "feather_tk_PYTHON" enablePython)
(lib.cmakeBool "feather_tk_TESTS" enableTests)
(lib.cmakeBool "feather_tk_EXAMPLES" enableExamples)
(lib.cmakeFeature "feather_tk_BUILD" "default")
];
doCheck = enableTests;
nativeCheckInputs = lib.optionals (enableTests && stdenv.isLinux) [
xorg.xvfb-run
];
checkPhase = lib.optionalString enableTests ''
runHook preCheck
cd feather-tk/src/feather-tk-build
${if stdenv.isLinux then "xvfb-run" else ""} ctest --verbose -C Release
runHook postCheck
'';
meta = {
description = "Lightweight toolkit for building cross-platform applications";
homepage = "https://github.com/darbyjohnston/feather-tk";
license = lib.licenses.bsd3;
maintainers = with lib.maintainers; [ liberodark ];
platforms = lib.platforms.linux ++ lib.platforms.darwin;
};
})
@@ -84,7 +84,7 @@ stdenvNoCC.mkDerivation (finalAttrs: {
meta = {
changelog = "https://github.com/firefly-iii/data-importer/releases/tag/v${finalAttrs.version}";
description = "Firefly III Data Importer can import data into Firefly III.";
description = "Firefly III Data Importer can import data into Firefly III";
homepage = "https://github.com/firefly-iii/data-importer";
license = lib.licenses.agpl3Only;
maintainers = [ lib.maintainers.savyajha ];
@@ -18,7 +18,7 @@ buildGoModule rec {
vendorHash = "sha256-kDh/5SOwKPYl9sC9W17bnzG73fGI5iX6lSjcB3IjOss=";
meta = {
description = "Commandline-utility to list/view/edit/delete entries in a firefox-sync account.";
description = "Commandline-utility to list/view/edit/delete entries in a firefox-sync account";
homepage = "https://github.com/Mikescher/firefox-sync-client";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ ambroisie ];
+2 -2
View File
@@ -7,14 +7,14 @@
python3Packages.buildPythonApplication rec {
pname = "flexget";
version = "3.16.13";
version = "3.16.15";
pyproject = true;
src = fetchFromGitHub {
owner = "Flexget";
repo = "Flexget";
tag = "v${version}";
hash = "sha256-RtDb/irvZe/v4aXcn0Vfo3pa7alvLWtP3x3vwR4og5s=";
hash = "sha256-OMG1xy+AZydfUywt9R4XurX2euP14d1QhuBhMcRjh5Y=";
};
pythonRelaxDeps = true;
+1 -1
View File
@@ -56,7 +56,7 @@ rustPlatform.buildRustPackage rec {
meta = {
homepage = "https://github.com/foundry-rs/foundry";
description = "Portable, modular toolkit for Ethereum application development written in Rust.";
description = "Portable, modular toolkit for Ethereum application development written in Rust";
changelog = "https://github.com/foundry-rs/foundry/blob/v${version}/CHANGELOG.md";
license = with lib.licenses; [
asl20
+1 -1
View File
@@ -32,7 +32,7 @@ stdenv.mkDerivation rec {
meta = with lib; {
homepage = "https://gatk.broadinstitute.org/hc/en-us";
description = "Wide variety of tools with a primary focus on variant discovery and genotyping.";
description = "Wide variety of tools with a primary focus on variant discovery and genotyping";
license = licenses.asl20;
sourceProvenance = with lib.sourceTypes; [ binaryBytecode ];
maintainers = with maintainers; [ apraga ];
@@ -54,7 +54,7 @@ stdenv.mkDerivation (finalAttrs: {
meta = {
homepage = "https://github.com/gepetto/gepetto-viewer-corba";
description = "CORBA client/server for gepetto-viewer.";
description = "CORBA client/server for gepetto-viewer";
license = lib.licenses.bsd3;
maintainers = [ lib.maintainers.nim65s ];
platforms = lib.platforms.unix;
+1 -1
View File
@@ -116,7 +116,7 @@ let
'';
meta = {
description = "Graphical Interface for Pinocchio and HPP.";
description = "Graphical Interface for Pinocchio and HPP";
homepage = "https://github.com/gepetto/gepetto-viewer";
license = lib.licenses.lgpl3Only;
maintainers = [ lib.maintainers.nim65s ];
@@ -32,7 +32,7 @@ stdenv.mkDerivation (finalAttrs: {
];
meta = {
description = "Fetch and print the GraphQL schema from a GraphQL HTTP endpoint.";
description = "Fetch and print the GraphQL schema from a GraphQL HTTP endpoint";
homepage = "https://github.com/prisma-labs/get-graphql-schema";
license = lib.licenses.mit;
mainProgram = "get-graphql-schema";
+1 -1
View File
@@ -35,7 +35,7 @@ buildGoModule rec {
doCheck = false; # tests want to actually download from github
meta = with lib; {
description = "Backup your GitHub repositories with a simple command-line application written in Go.";
description = "Backup your GitHub repositories with a simple command-line application written in Go";
homepage = "https://github.com/qvl/ghbackup";
license = licenses.mit;
mainProgram = "ghbackup";
@@ -51,7 +51,7 @@ stdenv.mkDerivation (finalAttrs: {
meta = {
homepage = "https://github.com/mateusauler/git-worktree-switcher";
description = "Switch between git worktrees with speed.";
description = "Switch between git worktrees with speed";
license = lib.licenses.mit;
platforms = lib.platforms.all;
mainProgram = "wt";

Some files were not shown because too many files have changed in this diff Show More