Merge master into haskell-updates

This commit is contained in:
github-actions[bot] 2024-03-01 00:14:10 +00:00 committed by GitHub
commit a1ed79952d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
268 changed files with 6431 additions and 3264 deletions

View File

@ -1,37 +1,104 @@
# pkgs.ociTools {#sec-pkgs-ociTools} # pkgs.ociTools {#sec-pkgs-ociTools}
`pkgs.ociTools` is a set of functions for creating containers according to the [OCI container specification v1.0.0](https://github.com/opencontainers/runtime-spec). Beyond that, it makes no assumptions about the container runner you choose to use to run the created container. `pkgs.ociTools` is a set of functions for creating runtime container bundles according to the [OCI runtime specification v1.0.0](https://github.com/opencontainers/runtime-spec/blob/v1.0.0/spec.md).
It makes no assumptions about the container runner you choose to use to run the created container.
The set of functions in `pkgs.ociTools` currently does not handle the [OCI image specification](https://github.com/opencontainers/image-spec).
At a high-level an OCI implementation would download an OCI Image then unpack that image into an OCI Runtime filesystem bundle.
At this point the OCI Runtime Bundle would be run by an OCI Runtime.
`pkgs.ociTools` provides utilities to create OCI Runtime bundles.
## buildContainer {#ssec-pkgs-ociTools-buildContainer} ## buildContainer {#ssec-pkgs-ociTools-buildContainer}
This function creates a simple OCI container that runs a single command inside of it. An OCI container consists of a `config.json` and a rootfs directory. The nix store of the container will contain all referenced dependencies of the given command. This function creates an OCI runtime container (consisting of a `config.json` and a root filesystem directory) that runs a single command inside of it.
The nix store of the container will contain all referenced dependencies of the given command.
The parameters of `buildContainer` with an example value are described below: This function has an assumption that the container will run on POSIX platforms, and sets configurations (such as the user running the process or certain mounts) according to this assumption.
Because of this, a container built with `buildContainer` will not work on Windows or other non-POSIX platforms without modifications to the container configuration.
These modifications aren't supported by `buildContainer`.
For `linux` platforms, `buildContainer` also configures the following namespaces (see {manpage}`unshare(1)`) to isolate the OCI container from the global namespace:
PID, network, mount, IPC, and UTS.
Note that no user namespace is created, which means that you won't be able to run the container unless you are the `root` user.
### Inputs {#ssec-pkgs-ociTools-buildContainer-inputs}
`buildContainer` expects an argument with the following attributes:
`args` (List of String)
: Specifies a set of arguments to run inside the container.
Any packages referenced by `args` will be made available inside the container.
`mounts` (Attribute Set; _optional_)
: Would specify additional mounts that the runtime must make available to the container.
:::{.warning}
As explained in [issue #290879](https://github.com/NixOS/nixpkgs/issues/290879), this attribute is currently ignored.
:::
:::{.note}
`buildContainer` includes a minimal set of necessary filesystems to be mounted into the container, and this set can't be changed with the `mounts` attribute.
:::
_Default value:_ `{}`.
`readonly` (Boolean; _optional_)
: If `true`, sets the container's root filesystem as read-only.
_Default value:_ `false`.
`os` **DEPRECATED**
: Specifies the operating system on which the container filesystem is based on.
If specified, its value should follow the [OCI Image Configuration Specification](https://github.com/opencontainers/image-spec/blob/main/config.md#properties).
According to the linked specification, all possible values for `$GOOS` in [the Go docs](https://go.dev/doc/install/source#environment) should be valid, but will commonly be one of `darwin` or `linux`.
_Default value:_ `"linux"`.
`arch` **DEPRECATED**
: Used to specify the architecture for which the binaries in the container filesystem have been compiled.
If specified, its value should follow the [OCI Image Configuration Specification](https://github.com/opencontainers/image-spec/blob/main/config.md#properties).
According to the linked specification, all possible values for `$GOARCH` in [the Go docs](https://go.dev/doc/install/source#environment) should be valid, but will commonly be one of `386`, `amd64`, `arm`, or `arm64`.
_Default value:_ `x86_64`.
### Examples {#ssec-pkgs-ociTools-buildContainer-examples}
::: {.example #ex-ociTools-buildContainer-bash}
# Creating an OCI runtime container that runs `bash`
This example uses `ociTools.buildContainer` to create a simple container that runs `bash`.
```nix ```nix
buildContainer { { ociTools, lib, bash }:
ociTools.buildContainer {
args = [ args = [
(with pkgs; (lib.getExe bash)
writeScript "run.sh" ''
#!${bash}/bin/bash
exec ${bash}/bin/bash
'').outPath
]; ];
mounts = {
"/data" = {
type = "none";
source = "/var/lib/mydata";
options = [ "bind" ];
};
};
readonly = false; readonly = false;
} }
``` ```
- `args` specifies a set of arguments to run inside the container. This is the only required argument for `buildContainer`. All referenced packages inside the derivation will be made available inside the container. As an example of how to run the container generated by this package, we'll use `runc` to start the container.
Any other tool that supports OCI containers could be used instead.
- `mounts` specifies additional mount points chosen by the user. By default only a minimal set of necessary filesystems are mounted into the container (e.g procfs, cgroupfs) ```shell
$ nix-build
(some output removed for clarity)
/nix/store/7f9hgx0arvhzp2a3qphp28rxbn748l25-join
- `readonly` makes the container's rootfs read-only if it is set to true. The default value is false `false`. $ cd /nix/store/7f9hgx0arvhzp2a3qphp28rxbn748l25-join
$ nix-shell -p runc
[nix-shell:/nix/store/7f9hgx0arvhzp2a3qphp28rxbn748l25-join]$ sudo runc run ocitools-example
help
GNU bash, version 5.2.26(1)-release (x86_64-pc-linux-gnu)
(some output removed for clarity)
```
:::

View File

@ -1,81 +1,174 @@
# pkgs.portableService {#sec-pkgs-portableService} # pkgs.portableService {#sec-pkgs-portableService}
`pkgs.portableService` is a function to create _portable service images_, `pkgs.portableService` is a function to create [Portable Services](https://systemd.io/PORTABLE_SERVICES/) in a read-only, immutable, `squashfs` raw disk image.
as read-only, immutable, `squashfs` archives. This lets you use Nix to build images which can be run on many recent Linux distributions.
systemd supports a concept of [Portable Services](https://systemd.io/PORTABLE_SERVICES/).
Portable Services are a delivery method for system services that uses two specific features of container management:
* Applications are bundled. I.e. multiple services, their binaries and
all their dependencies are packaged in an image, and are run directly from it.
* Stricter default security policies, i.e. sandboxing of applications.
This allows using Nix to build images which can be run on many recent Linux distributions.
The primary tool for interacting with Portable Services is `portablectl`,
and they are managed by the `systemd-portabled` system service.
::: {.note} ::: {.note}
Portable services are supported starting with systemd 239 (released on 2018-06-22). Portable services are supported starting with systemd 239 (released on 2018-06-22).
::: :::
A very simple example of using `portableService` is described below: The generated image will contain the file system structure as required by the Portable Services specification, along with the packages given to `portableService` and all of their dependencies.
When generated, the image will exist in the Nix store with the `.raw` file extension, as required by the specification.
See [](#ex-portableService-hello) to understand how to use the output of `portableService`.
## Inputs {#ssec-pkgs-portableService-inputs}
`portableService` expects one argument with the following attributes:
`pname` (String)
: The name of the portable service.
The generated image will be named according to the template `$pname_$version.raw`, which is supported by the Portable Services specification.
`version` (String)
: The version of the portable service.
The generated image will be named according to the template `$pname_$version.raw`, which is supported by the Portable Services specification.
`units` (List of Attribute Set)
: A list of derivations for systemd unit files.
Each derivation must produce a single file, and must have a name that starts with the value of `pname` and ends with the suffix of the unit type (e.g. ".service", ".socket", ".timer", and so on).
See [](#ex-portableService-hello) to better understand this naming constraint.
`description` (String or Null; _optional_)
: If specified, the value is added as `PORTABLE_PRETTY_NAME` to the `/etc/os-release` file in the generated image.
This could be used to provide more information to anyone inspecting the image.
_Default value:_ `null`.
`homepage` (String or Null; _optional_)
: If specified, the value is added as `HOME_URL` to the `/etc/os-release` file in the generated image.
This could be used to provide more information to anyone inspecting the image.
_Default value:_ `null`.
`symlinks` (List of Attribute Set; _optional_)
: A list of attribute sets in the format `{object, symlink}`.
For each item in the list, `portableService` will create a symlink in the path specified by `symlink` (relative to the root of the image) that points to `object`.
All packages that `object` depends on and their dependencies are automatically copied into the image.
This can be used to create symlinks for applications that assume some files to exist globally (`/etc/ssl` or `/bin/bash`, for example).
See [](#ex-portableService-symlinks) to understand how to do that.
_Default value:_ `[]`.
`contents` (List of Attribute Set; _optional_)
: A list of additional derivations to be included as-is in the image.
These derivations will be included directly in a `/nix/store` directory inside the image.
_Default value:_ `[]`.
`squashfsTools` (Attribute Set; _optional_)
: Allows you to override the package that provides {manpage}`mksquashfs(1)`, which is used internally by `portableService`.
_Default value:_ `pkgs.squashfsTools`.
`squash-compression` (String; _optional_)
: Passed as the compression option to {manpage}`mksquashfs(1)`, which is used internally by `portableService`.
_Default value:_ `"xz -Xdict-size 100%"`.
`squash-block-size` (String; _optional_)
: Passed as the block size option to {manpage}`mksquashfs(1)`, which is used internally by `portableService`.
_Default value:_ `"1M"`.
## Examples {#ssec-pkgs-portableService-examples}
[]{#ex-pkgs-portableService} []{#ex-pkgs-portableService}
:::{.example #ex-portableService-hello}
# Building a Portable Service image
The following example builds a Portable Service image with the `hello` package, along with a service unit that runs it.
```nix ```nix
pkgs.portableService { { lib, writeText, portableService, hello }:
pname = "demo"; let
version = "1.0"; hello-service = writeText "hello.service" ''
units = [ demo-service demo-socket ]; [Unit]
Description=Hello world service
[Service]
Type=oneshot
ExecStart=${lib.getExe hello}
'';
in
portableService {
pname = "hello";
inherit (hello) version;
units = [ hello-service ];
} }
``` ```
The above example will build an squashfs archive image in `result/$pname_$version.raw`. The image will contain the After building the package, the generated image can be loaded into a system through {manpage}`portablectl(1)`:
file system structure as required by the portable service specification, and a subset of the Nix store with all the
dependencies of the two derivations in the `units` list.
`units` must be a list of derivations, and their names must be prefixed with the service name (`"demo"` in this case).
Otherwise `systemd-portabled` will ignore them.
::: {.note} ```shell
The `.raw` file extension of the image is required by the portable services specification. $ nix-build
(some output removed for clarity)
/nix/store/8c20z1vh7z8w8dwagl8w87b45dn5k6iq-hello-img-2.12.1
$ portablectl attach /nix/store/8c20z1vh7z8w8dwagl8w87b45dn5k6iq-hello-img-2.12.1/hello_2.12.1.raw
Created directory /etc/systemd/system.attached.
Created directory /etc/systemd/system.attached/hello.service.d.
Written /etc/systemd/system.attached/hello.service.d/20-portable.conf.
Created symlink /etc/systemd/system.attached/hello.service.d/10-profile.conf → /usr/lib/systemd/portable/profile/default/service.conf.
Copied /etc/systemd/system.attached/hello.service.
Created symlink /etc/portables/hello_2.12.1.raw → /nix/store/8c20z1vh7z8w8dwagl8w87b45dn5k6iq-hello-img-2.12.1/hello_2.12.1.raw.
$ systemctl start hello
$ journalctl -u hello
Feb 28 22:39:16 hostname systemd[1]: Starting Hello world service...
Feb 28 22:39:16 hostname hello[102887]: Hello, world!
Feb 28 22:39:16 hostname systemd[1]: hello.service: Deactivated successfully.
Feb 28 22:39:16 hostname systemd[1]: Finished Hello world service.
$ portablectl detach hello_2.12.1
Removed /etc/systemd/system.attached/hello.service.
Removed /etc/systemd/system.attached/hello.service.d/10-profile.conf.
Removed /etc/systemd/system.attached/hello.service.d/20-portable.conf.
Removed /etc/systemd/system.attached/hello.service.d.
Removed /etc/portables/hello_2.12.1.raw.
Removed /etc/systemd/system.attached.
```
::: :::
Some other options available are: :::{.example #ex-portableService-symlinks}
- `description`, `homepage` # Specifying symlinks when building a Portable Service image
Are added to the `/etc/os-release` in the image and are shown by the portable services tooling. Some services may expect files or directories to be available globally.
Default to empty values, not added to os-release. An example is a service which expects all trusted SSL certificates to exist in a specific location by default.
- `symlinks`
A list of attribute sets {object, symlink}. Symlinks will be created in the root filesystem of the image to To make things available globally, you must specify the `symlinks` attribute when using `portableService`.
objects in the Nix store. Defaults to an empty list. The following package builds on the package from [](#ex-portableService-hello) to make `/etc/ssl` available globally (this is only for illustrative purposes, because `hello` doesn't use `/etc/ssl`).
- `contents`
A list of additional derivations to be included in the image Nix store, as-is. Defaults to an empty list.
- `squashfsTools`
Defaults to `pkgs.squashfsTools`, allows you to override the package that provides `mksquashfs`.
- `squash-compression`, `squash-block-size`
Options to `mksquashfs`. Default to `"xz -Xdict-size 100%"` and `"1M"` respectively.
A typical usage of `symlinks` would be:
```nix ```nix
symlinks = [ { lib, writeText, portableService, hello, cacert }:
{ object = "${pkgs.cacert}/etc/ssl"; symlink = "/etc/ssl"; } let
{ object = "${pkgs.bash}/bin/bash"; symlink = "/bin/sh"; } hello-service = writeText "hello.service" ''
{ object = "${pkgs.php}/bin/php"; symlink = "/usr/bin/php"; } [Unit]
]; Description=Hello world service
```
to create these symlinks for legacy applications that assume them existing globally.
Once the image is created, and deployed on a host in `/var/lib/portables/`, you can attach the image and run the service. As root run: [Service]
```console Type=oneshot
portablectl attach demo_1.0.raw ExecStart=${lib.getExe hello}
systemctl enable --now demo.socket '';
systemctl enable --now demo.service in
portableService {
pname = "hello";
inherit (hello) version;
units = [ hello-service ];
symlinks = [
{ object = "${cacert}/etc/ssl"; symlink = "/etc/ssl"; }
];
}
``` ```
::: {.note}
See the [man page](https://www.freedesktop.org/software/systemd/man/portablectl.html) of `portablectl` for more info on its usage.
::: :::

View File

@ -318,5 +318,7 @@
"passwd(5)": "https://man.archlinux.org/man/passwd.5", "passwd(5)": "https://man.archlinux.org/man/passwd.5",
"group(5)": "https://man.archlinux.org/man/group.5", "group(5)": "https://man.archlinux.org/man/group.5",
"login.defs(5)": "https://man.archlinux.org/man/login.defs.5", "login.defs(5)": "https://man.archlinux.org/man/login.defs.5",
"nix-shell(1)": "https://nixos.org/manual/nix/stable/command-ref/nix-shell.html" "unshare(1)": "https://man.archlinux.org/man/unshare.1.en",
"nix-shell(1)": "https://nixos.org/manual/nix/stable/command-ref/nix-shell.html",
"mksquashfs(1)": "https://man.archlinux.org/man/extra/squashfs-tools/mksquashfs.1.en"
} }

View File

@ -145,6 +145,12 @@ rec {
in fix g in fix g
``` ```
:::{.note}
The argument to the given fixed-point function after applying an overlay will *not* refer to its own return value, but rather to the value after evaluating the overlay function.
The given fixed-point function is called with a separate argument than if it was evaluated with `lib.fix`.
:::
:::{.example} :::{.example}
# Extend a fixed-point function with an overlay # Extend a fixed-point function with an overlay
@ -230,13 +236,6 @@ rec {
fix (extends (final: prev: { c = final.a + final.b; }) f) fix (extends (final: prev: { c = final.a + final.b; }) f)
=> { a = 1; b = 3; c = 4; } => { a = 1; b = 3; c = 4; }
:::{.note}
The argument to the given fixed-point function after applying an overlay will *not* refer to its own return value, but rather to the value after evaluating the overlay function.
The given fixed-point function is called with a separate argument than if it was evaluated with `lib.fix`.
The new argument
:::
*/ */
extends = extends =
# The overlay to apply to the fixed-point function # The overlay to apply to the fixed-point function

View File

@ -203,6 +203,15 @@
fingerprint = "D292 365E 3C46 A5AA 75EE B30B 78DB 7EDE 3540 794B"; fingerprint = "D292 365E 3C46 A5AA 75EE B30B 78DB 7EDE 3540 794B";
}]; }];
}; };
_6543 = {
email = "6543@obermui.de";
github = "6543";
githubId = 24977596;
name = "6543";
keys = [{
fingerprint = "8722 B61D 7234 1082 553B 201C B8BE 6D61 0E61 C862";
}];
};
_6AA4FD = { _6AA4FD = {
email = "f6442954@gmail.com"; email = "f6442954@gmail.com";
github = "6AA4FD"; github = "6AA4FD";
@ -7038,6 +7047,15 @@
github = "ghostbuster91"; github = "ghostbuster91";
githubId = 5662622; githubId = 5662622;
}; };
ghthor = {
email = "ghthor@gmail.com";
github = "ghthor";
githubId = 160298;
name = "Will Owens";
keys = [{
fingerprint = "8E98 BB01 BFF8 AEA4 E303 FC4C 8074 09C9 2CE2 3033";
}];
};
ghuntley = { ghuntley = {
email = "ghuntley@ghuntley.com"; email = "ghuntley@ghuntley.com";
github = "ghuntley"; github = "ghuntley";
@ -20280,6 +20298,12 @@
githubId = 326263; githubId = 326263;
name = "Danny Wilson"; name = "Danny Wilson";
}; };
vizid = {
email = "vizid1337@gmail.com";
github = "ViZiD";
githubId = 7444430;
name = "Radik Islamov";
};
vklquevs = { vklquevs = {
email = "vklquevs@gmail.com"; email = "vklquevs@gmail.com";
github = "vklquevs"; github = "vklquevs";

View File

@ -73,6 +73,34 @@ have a predefined type and string generator already declared under
It returns a set with INI-specific attributes `type` and `generate` It returns a set with INI-specific attributes `type` and `generate`
as specified [below](#pkgs-formats-result). as specified [below](#pkgs-formats-result).
The type of the input is an *attrset* of sections; key-value pairs where
the key is the section name and the value is the corresponding content
which is also an *attrset* of key-value pairs for the actual key-value
mappings of the INI format.
The values of the INI atoms are subject to the above parameters (e.g. lists
may be transformed into multiple key-value pairs depending on
`listToValue`).
`pkgs.formats.iniWithGlobalSection` { *`listsAsDuplicateKeys`* ? false, *`listToValue`* ? null, \.\.\. }
: A function taking an attribute set with values
`listsAsDuplicateKeys`
: A boolean for controlling whether list values can be used to
represent duplicate INI keys
`listToValue`
: A function for turning a list of values into a single value.
It returns a set with INI-specific attributes `type` and `generate`
as specified [below](#pkgs-formats-result).
The type of the input is an *attrset* of the structure
`{ sections = {}; globalSection = {}; }` where *sections* are several
sections as with *pkgs.formats.ini* and *globalSection* being just a single
attrset of key-value pairs for a single section, the global section which
preceedes the section definitions.
`pkgs.formats.toml` { } `pkgs.formats.toml` { }

View File

@ -93,6 +93,8 @@ The pre-existing [services.ankisyncd](#opt-services.ankisyncd.enable) has been m
- [Clevis](https://github.com/latchset/clevis), a pluggable framework for automated decryption, used to unlock encrypted devices in initrd. Available as [boot.initrd.clevis.enable](#opt-boot.initrd.clevis.enable). - [Clevis](https://github.com/latchset/clevis), a pluggable framework for automated decryption, used to unlock encrypted devices in initrd. Available as [boot.initrd.clevis.enable](#opt-boot.initrd.clevis.enable).
- [armagetronad](https://wiki.armagetronad.org), a mid-2000s 3D lightcycle game widely played at iD Tech Camps. You can define multiple servers using `services.armagetronad.<server>.enable`.
- [TuxClocker](https://github.com/Lurkki14/tuxclocker), a hardware control and monitoring program. Available as [programs.tuxclocker](#opt-programs.tuxclocker.enable). - [TuxClocker](https://github.com/Lurkki14/tuxclocker), a hardware control and monitoring program. Available as [programs.tuxclocker](#opt-programs.tuxclocker.enable).
- [ALVR](https://github.com/alvr-org/alvr), a VR desktop streamer. Available as [programs.alvr](#opt-programs.alvr.enable) - [ALVR](https://github.com/alvr-org/alvr), a VR desktop streamer. Available as [programs.alvr](#opt-programs.alvr.enable)

View File

@ -378,7 +378,7 @@ in rec {
''; '';
targetToUnit = name: def: targetToUnit = name: def:
{ inherit (def) aliases wantedBy requiredBy enable overrideStrategy; { inherit (def) aliases wantedBy requiredBy upheldBy enable overrideStrategy;
text = text =
'' ''
[Unit] [Unit]
@ -387,7 +387,7 @@ in rec {
}; };
serviceToUnit = name: def: serviceToUnit = name: def:
{ inherit (def) aliases wantedBy requiredBy enable overrideStrategy; { inherit (def) aliases wantedBy requiredBy upheldBy enable overrideStrategy;
text = commonUnitText def ('' text = commonUnitText def (''
[Service] [Service]
'' + (let env = cfg.globalEnvironment // def.environment; '' + (let env = cfg.globalEnvironment // def.environment;
@ -408,7 +408,7 @@ in rec {
}; };
socketToUnit = name: def: socketToUnit = name: def:
{ inherit (def) aliases wantedBy requiredBy enable overrideStrategy; { inherit (def) aliases wantedBy requiredBy upheldBy enable overrideStrategy;
text = commonUnitText def '' text = commonUnitText def ''
[Socket] [Socket]
${attrsToSection def.socketConfig} ${attrsToSection def.socketConfig}
@ -418,7 +418,7 @@ in rec {
}; };
timerToUnit = name: def: timerToUnit = name: def:
{ inherit (def) aliases wantedBy requiredBy enable overrideStrategy; { inherit (def) aliases wantedBy requiredBy upheldBy enable overrideStrategy;
text = commonUnitText def '' text = commonUnitText def ''
[Timer] [Timer]
${attrsToSection def.timerConfig} ${attrsToSection def.timerConfig}
@ -426,7 +426,7 @@ in rec {
}; };
pathToUnit = name: def: pathToUnit = name: def:
{ inherit (def) aliases wantedBy requiredBy enable overrideStrategy; { inherit (def) aliases wantedBy requiredBy upheldBy enable overrideStrategy;
text = commonUnitText def '' text = commonUnitText def ''
[Path] [Path]
${attrsToSection def.pathConfig} ${attrsToSection def.pathConfig}
@ -434,7 +434,7 @@ in rec {
}; };
mountToUnit = name: def: mountToUnit = name: def:
{ inherit (def) aliases wantedBy requiredBy enable overrideStrategy; { inherit (def) aliases wantedBy requiredBy upheldBy enable overrideStrategy;
text = commonUnitText def '' text = commonUnitText def ''
[Mount] [Mount]
${attrsToSection def.mountConfig} ${attrsToSection def.mountConfig}
@ -442,7 +442,7 @@ in rec {
}; };
automountToUnit = name: def: automountToUnit = name: def:
{ inherit (def) aliases wantedBy requiredBy enable overrideStrategy; { inherit (def) aliases wantedBy requiredBy upheldBy enable overrideStrategy;
text = commonUnitText def '' text = commonUnitText def ''
[Automount] [Automount]
${attrsToSection def.automountConfig} ${attrsToSection def.automountConfig}
@ -450,7 +450,7 @@ in rec {
}; };
sliceToUnit = name: def: sliceToUnit = name: def:
{ inherit (def) aliases wantedBy requiredBy enable overrideStrategy; { inherit (def) aliases wantedBy requiredBy upheldBy enable overrideStrategy;
text = commonUnitText def '' text = commonUnitText def ''
[Slice] [Slice]
${attrsToSection def.sliceConfig} ${attrsToSection def.sliceConfig}

View File

@ -512,6 +512,7 @@
./services/editors/infinoted.nix ./services/editors/infinoted.nix
./services/finance/odoo.nix ./services/finance/odoo.nix
./services/games/archisteamfarm.nix ./services/games/archisteamfarm.nix
./services/games/armagetronad.nix
./services/games/crossfire-server.nix ./services/games/crossfire-server.nix
./services/games/deliantra-server.nix ./services/games/deliantra-server.nix
./services/games/factorio.nix ./services/games/factorio.nix

View File

@ -119,10 +119,10 @@ in {
extraPackages = mkOption { extraPackages = mkOption {
type = with types; listOf package; type = with types; listOf package;
default = with pkgs; [ default = with pkgs; [
swaylock swayidle foot dmenu swaylock swayidle foot dmenu wmenu
]; ];
defaultText = literalExpression '' defaultText = literalExpression ''
with pkgs; [ swaylock swayidle foot dmenu ]; with pkgs; [ swaylock swayidle foot dmenu wmenu ];
''; '';
example = literalExpression '' example = literalExpression ''
with pkgs; [ with pkgs; [

View File

@ -0,0 +1,268 @@
{ config, lib, pkgs, ... }:
let
inherit (lib) mkEnableOption mkIf mkOption mkMerge literalExpression;
inherit (lib) mapAttrsToList filterAttrs unique recursiveUpdate types;
mkValueStringArmagetron = with lib; v:
if isInt v then toString v
else if isFloat v then toString v
else if isString v then v
else if true == v then "1"
else if false == v then "0"
else if null == v then ""
else throw "unsupported type: ${builtins.typeOf v}: ${(lib.generators.toPretty {} v)}";
settingsFormat = pkgs.formats.keyValue {
mkKeyValue = lib.generators.mkKeyValueDefault
{
mkValueString = mkValueStringArmagetron;
} " ";
listsAsDuplicateKeys = true;
};
cfg = config.services.armagetronad;
enabledServers = lib.filterAttrs (n: v: v.enable) cfg.servers;
nameToId = serverName: "armagetronad-${serverName}";
getStateDirectory = serverName: "armagetronad/${serverName}";
getServerRoot = serverName: "/var/lib/${getStateDirectory serverName}";
in
{
options = {
services.armagetronad = {
servers = mkOption {
description = lib.mdDoc "Armagetron server definitions.";
default = { };
type = types.attrsOf (types.submodule {
options = {
enable = mkEnableOption (lib.mdDoc "armagetronad");
package = lib.mkPackageOptionMD pkgs "armagetronad-dedicated" {
example = ''
pkgs.armagetronad."0.2.9-sty+ct+ap".dedicated
'';
extraDescription = ''
Ensure that you use a derivation which contains the path `bin/armagetronad-dedicated`.
'';
};
host = mkOption {
type = types.str;
default = "0.0.0.0";
description = lib.mdDoc "Host to listen on. Used for SERVER_IP.";
};
port = mkOption {
type = types.port;
default = 4534;
description = lib.mdDoc "Port to listen on. Used for SERVER_PORT.";
};
dns = mkOption {
type = types.nullOr types.str;
default = null;
description = lib.mdDoc "DNS address to use for this server. Optional.";
};
openFirewall = mkOption {
type = types.bool;
default = true;
description = lib.mdDoc "Set to true to open the configured UDP port for Armagetron Advanced.";
};
name = mkOption {
type = types.str;
description = "The name of this server.";
};
settings = mkOption {
type = settingsFormat.type;
default = { };
description = lib.mdDoc ''
Armagetron Advanced server rules configuration. Refer to:
<https://wiki.armagetronad.org/index.php?title=Console_Commands>
or `armagetronad-dedicated --doc` for a list.
This attrset is used to populate `settings_custom.cfg`; see:
<https://wiki.armagetronad.org/index.php/Configuration_Files>
'';
example = literalExpression ''
{
CYCLE_RUBBER = 40;
}
'';
};
roundSettings = mkOption {
type = settingsFormat.type;
default = { };
description = lib.mdDoc ''
Armagetron Advanced server per-round configuration. Refer to:
<https://wiki.armagetronad.org/index.php?title=Console_Commands>
or `armagetronad-dedicated --doc` for a list.
This attrset is used to populate `everytime.cfg`; see:
<https://wiki.armagetronad.org/index.php/Configuration_Files>
'';
example = literalExpression ''
{
SAY = [
"Hosted on NixOS"
"https://nixos.org"
"iD Tech High Rubber rul3z!! Happy New Year 2008!!1"
];
}
'';
};
};
});
};
};
};
config = mkIf (enabledServers != { }) {
systemd.tmpfiles.settings = mkMerge (mapAttrsToList
(serverName: serverCfg:
let
serverId = nameToId serverName;
serverRoot = getServerRoot serverName;
serverInfo = (
{
SERVER_IP = serverCfg.host;
SERVER_PORT = serverCfg.port;
SERVER_NAME = serverCfg.name;
} // (lib.optionalAttrs (serverCfg.dns != null) { SERVER_DNS = serverCfg.dns; })
);
customSettings = serverCfg.settings;
everytimeSettings = serverCfg.roundSettings;
serverInfoCfg = settingsFormat.generate "server_info.${serverName}.cfg" serverInfo;
customSettingsCfg = settingsFormat.generate "settings_custom.${serverName}.cfg" customSettings;
everytimeSettingsCfg = settingsFormat.generate "everytime.${serverName}.cfg" everytimeSettings;
in
{
"10-armagetronad-${serverId}" = {
"${serverRoot}/data" = {
d = {
group = serverId;
user = serverId;
mode = "0750";
};
};
"${serverRoot}/settings" = {
d = {
group = serverId;
user = serverId;
mode = "0750";
};
};
"${serverRoot}/var" = {
d = {
group = serverId;
user = serverId;
mode = "0750";
};
};
"${serverRoot}/resource" = {
d = {
group = serverId;
user = serverId;
mode = "0750";
};
};
"${serverRoot}/input" = {
"f+" = {
group = serverId;
user = serverId;
mode = "0640";
};
};
"${serverRoot}/settings/server_info.cfg" = {
"L+" = {
argument = "${serverInfoCfg}";
};
};
"${serverRoot}/settings/settings_custom.cfg" = {
"L+" = {
argument = "${customSettingsCfg}";
};
};
"${serverRoot}/settings/everytime.cfg" = {
"L+" = {
argument = "${everytimeSettingsCfg}";
};
};
};
}
)
enabledServers
);
systemd.services = mkMerge (mapAttrsToList
(serverName: serverCfg:
let
serverId = nameToId serverName;
in
{
"armagetronad-${serverName}" = {
description = "Armagetron Advanced Dedicated Server for ${serverName}";
wants = [ "basic.target" ];
after = [ "basic.target" "network.target" "multi-user.target" ];
wantedBy = [ "multi-user.target" ];
serviceConfig =
let
serverRoot = getServerRoot serverName;
in
{
Type = "simple";
StateDirectory = getStateDirectory serverName;
ExecStart = "${lib.getExe serverCfg.package} --daemon --input ${serverRoot}/input --userdatadir ${serverRoot}/data --userconfigdir ${serverRoot}/settings --vardir ${serverRoot}/var --autoresourcedir ${serverRoot}/resource";
Restart = "on-failure";
CapabilityBoundingSet = "";
LockPersonality = true;
NoNewPrivileges = true;
PrivateDevices = true;
PrivateTmp = true;
PrivateUsers = true;
ProtectClock = true;
ProtectControlGroups = true;
ProtectHome = true;
ProtectHostname = true;
ProtectKernelLogs = true;
ProtectKernelModules = true;
ProtectKernelTunables = true;
ProtectProc = "invisible";
ProtectSystem = "strict";
RestrictNamespaces = true;
RestrictSUIDSGID = true;
User = serverId;
Group = serverId;
};
};
})
enabledServers
);
networking.firewall.allowedUDPPorts =
unique (mapAttrsToList (serverName: serverCfg: serverCfg.port) (filterAttrs (serverName: serverCfg: serverCfg.openFirewall) enabledServers));
users.users = mkMerge (mapAttrsToList
(serverName: serverCfg:
{
${nameToId serverName} = {
group = nameToId serverName;
description = "Armagetron Advanced dedicated user for server ${serverName}";
isSystemUser = true;
};
})
enabledServers
);
users.groups = mkMerge (mapAttrsToList
(serverName: serverCfg:
{
${nameToId serverName} = { };
})
enabledServers
);
};
}

View File

@ -307,6 +307,9 @@ in
Restart = "on-failure"; Restart = "on-failure";
}; };
environment = env; environment = env;
# Allow the consumer to access the private /tmp directory of the server.
# This is required to support consuming files via a local folder.
unitConfig.JoinsNamespaceOf = "paperless-task-queue.service";
}; };
systemd.services.paperless-web = { systemd.services.paperless-web = {

View File

@ -213,7 +213,7 @@ in
serviceConfig = { serviceConfig = {
User = "searx"; User = "searx";
Group = "searx"; Group = "searx";
ExecStart = "${cfg.package}/bin/searx-run"; ExecStart = lib.getExe cfg.package;
} // optionalAttrs (cfg.environmentFile != null) } // optionalAttrs (cfg.environmentFile != null)
{ EnvironmentFile = builtins.toPath cfg.environmentFile; }; { EnvironmentFile = builtins.toPath cfg.environmentFile; };
environment = { environment = {

View File

@ -24,12 +24,24 @@ let
confNoServer = concatStringsSep "\n" ((mapAttrsToList (toConf "") (builtins.removeAttrs cfg.settings [ "server" ])) ++ [""]); confNoServer = concatStringsSep "\n" ((mapAttrsToList (toConf "") (builtins.removeAttrs cfg.settings [ "server" ])) ++ [""]);
confServer = concatStringsSep "\n" (mapAttrsToList (toConf " ") (builtins.removeAttrs cfg.settings.server [ "define-tag" ])); confServer = concatStringsSep "\n" (mapAttrsToList (toConf " ") (builtins.removeAttrs cfg.settings.server [ "define-tag" ]));
confFile = pkgs.writeText "unbound.conf" '' confFileUnchecked = pkgs.writeText "unbound.conf" ''
server: server:
${optionalString (cfg.settings.server.define-tag != "") (toOption " " "define-tag" cfg.settings.server.define-tag)} ${optionalString (cfg.settings.server.define-tag != "") (toOption " " "define-tag" cfg.settings.server.define-tag)}
${confServer} ${confServer}
${confNoServer} ${confNoServer}
''; '';
confFile = if cfg.checkconf then pkgs.runCommandLocal "unbound-checkconf" { } ''
cp ${confFileUnchecked} unbound.conf
# fake stateDir which is not accesible in the sandbox
mkdir -p $PWD/state
sed -i unbound.conf \
-e '/auto-trust-anchor-file/d' \
-e "s|${cfg.stateDir}|$PWD/state|"
${cfg.package}/bin/unbound-checkconf unbound.conf
cp ${confFileUnchecked} $out
'' else confFileUnchecked;
rootTrustAnchorFile = "${cfg.stateDir}/root.key"; rootTrustAnchorFile = "${cfg.stateDir}/root.key";
@ -62,6 +74,17 @@ in {
description = lib.mdDoc "Directory holding all state for unbound to run."; description = lib.mdDoc "Directory holding all state for unbound to run.";
}; };
checkconf = mkOption {
type = types.bool;
default = !cfg.settings ? include;
defaultText = "!config.services.unbound.settings ? include";
description = lib.mdDoc ''
Wether to check the resulting config file with unbound checkconf for syntax errors.
If settings.include is used, then this options is disabled, as the import can likely not be resolved at build time.
'';
};
resolveLocalQueries = mkOption { resolveLocalQueries = mkOption {
type = types.bool; type = types.bool;
default = true; default = true;

View File

@ -132,6 +132,28 @@ in
default = "WriteReplica"; default = "WriteReplica";
type = lib.types.enum [ "WriteReplica" "WriteReplicaNoUI" "ReadOnlyReplica" ]; type = lib.types.enum [ "WriteReplica" "WriteReplicaNoUI" "ReadOnlyReplica" ];
}; };
online_backup = {
path = lib.mkOption {
description = lib.mdDoc "Path to the output directory for backups.";
type = lib.types.path;
default = "/var/lib/kanidm/backups";
};
schedule = lib.mkOption {
description = lib.mdDoc "The schedule for backups in cron format.";
type = lib.types.str;
default = "00 22 * * *";
};
versions = lib.mkOption {
description = lib.mdDoc ''
Number of backups to keep.
The default is set to `0`, in order to disable backups by default.
'';
type = lib.types.ints.unsigned;
default = 0;
example = 7;
};
};
}; };
}; };
default = { }; default = { };
@ -233,6 +255,14 @@ in
environment.systemPackages = lib.mkIf cfg.enableClient [ cfg.package ]; environment.systemPackages = lib.mkIf cfg.enableClient [ cfg.package ];
systemd.tmpfiles.settings."10-kanidm" = {
${cfg.serverSettings.online_backup.path}.d = {
mode = "0700";
user = "kanidm";
group = "kanidm";
};
};
systemd.services.kanidm = lib.mkIf cfg.enableServer { systemd.services.kanidm = lib.mkIf cfg.enableServer {
description = "kanidm identity management daemon"; description = "kanidm identity management daemon";
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
@ -253,6 +283,8 @@ in
BindPaths = [ BindPaths = [
# To create the socket # To create the socket
"/run/kanidmd:/run/kanidmd" "/run/kanidmd:/run/kanidmd"
# To store backups
cfg.serverSettings.online_backup.path
]; ];
AmbientCapabilities = [ "CAP_NET_BIND_SERVICE" ]; AmbientCapabilities = [ "CAP_NET_BIND_SERVICE" ];

View File

@ -216,9 +216,11 @@ in
requires = [ "podman.service" ]; requires = [ "podman.service" ];
}; };
systemd.services.podman.environment = config.networking.proxy.envVars;
systemd.sockets.podman.wantedBy = [ "sockets.target" ]; systemd.sockets.podman.wantedBy = [ "sockets.target" ];
systemd.sockets.podman.socketConfig.SocketGroup = "podman"; systemd.sockets.podman.socketConfig.SocketGroup = "podman";
systemd.user.services.podman.environment = config.networking.proxy.envVars;
systemd.user.sockets.podman.wantedBy = [ "sockets.target" ]; systemd.user.sockets.podman.wantedBy = [ "sockets.target" ];
systemd.timers.podman-prune.timerConfig = lib.mkIf cfg.autoPrune.enable { systemd.timers.podman-prune.timerConfig = lib.mkIf cfg.autoPrune.enable {

View File

@ -128,6 +128,7 @@ in {
appliance-repart-image = runTest ./appliance-repart-image.nix; appliance-repart-image = runTest ./appliance-repart-image.nix;
apparmor = handleTest ./apparmor.nix {}; apparmor = handleTest ./apparmor.nix {};
archi = handleTest ./archi.nix {}; archi = handleTest ./archi.nix {};
armagetronad = handleTest ./armagetronad.nix {};
atd = handleTest ./atd.nix {}; atd = handleTest ./atd.nix {};
atop = handleTest ./atop.nix {}; atop = handleTest ./atop.nix {};
atuin = handleTest ./atuin.nix {}; atuin = handleTest ./atuin.nix {};

View File

@ -0,0 +1,272 @@
import ./make-test-python.nix ({ pkgs, ...} :
let
user = "alice";
client =
{ pkgs, ... }:
{ imports = [ ./common/user-account.nix ./common/x11.nix ];
hardware.opengl.driSupport = true;
virtualisation.memorySize = 256;
environment = {
systemPackages = [ pkgs.armagetronad ];
variables.XAUTHORITY = "/home/${user}/.Xauthority";
};
test-support.displayManager.auto.user = user;
};
in {
name = "armagetronad";
meta = with pkgs.lib.maintainers; {
maintainers = [ numinit ];
};
enableOCR = true;
nodes =
{
server = {
services.armagetronad.servers = {
high-rubber = {
enable = true;
name = "Smoke Test High Rubber Server";
port = 4534;
settings = {
SERVER_OPTIONS = "High Rubber server made to run smoke tests.";
CYCLE_RUBBER = 40;
SIZE_FACTOR = 0.5;
};
roundSettings = {
SAY = [
"NixOS Smoke Test Server"
"https://nixos.org"
];
};
};
sty = {
enable = true;
name = "Smoke Test sty+ct+ap Server";
package = pkgs.armagetronad."0.2.9-sty+ct+ap".dedicated;
port = 4535;
settings = {
SERVER_OPTIONS = "sty+ct+ap server made to run smoke tests.";
CYCLE_RUBBER = 20;
SIZE_FACTOR = 0.5;
};
roundSettings = {
SAY = [
"NixOS Smoke Test sty+ct+ap Server"
"https://nixos.org"
];
};
};
trunk = {
enable = true;
name = "Smoke Test trunk Server";
package = pkgs.armagetronad."0.4".dedicated;
port = 4536;
settings = {
SERVER_OPTIONS = "0.4 server made to run smoke tests.";
CYCLE_RUBBER = 20;
SIZE_FACTOR = 0.5;
};
roundSettings = {
SAY = [
"NixOS Smoke Test 0.4 Server"
"https://nixos.org"
];
};
};
};
};
client1 = client;
client2 = client;
};
testScript = let
xdo = name: text: let
xdoScript = pkgs.writeText "${name}.xdo" text;
in "${pkgs.xdotool}/bin/xdotool ${xdoScript}";
in
''
import shlex
import threading
from collections import namedtuple
class Client(namedtuple('Client', ('node', 'name'))):
def send(self, *keys):
for key in keys:
self.node.send_key(key)
def send_on(self, text, *keys):
self.node.wait_for_text(text)
self.send(*keys)
Server = namedtuple('Server', ('node', 'name', 'address', 'port', 'welcome', 'attacker', 'victim', 'coredump_delay'))
# Clients and their in-game names
clients = (
Client(client1, 'Arduino'),
Client(client2, 'SmOoThIcE')
)
# Server configs.
servers = (
Server(server, 'high-rubber', 'server', 4534, 'NixOS Smoke Test Server', 'SmOoThIcE', 'Arduino', 8),
Server(server, 'sty', 'server', 4535, 'NixOS Smoke Test sty+ct+ap Server', 'Arduino', 'SmOoThIcE', 8),
Server(server, 'trunk', 'server', 4536, 'NixOS Smoke Test 0.4 Server', 'Arduino', 'SmOoThIcE', 8)
)
"""
Runs a command as the client user.
"""
def run(cmd):
return "su - ${user} -c " + shlex.quote(cmd)
screenshot_idx = 1
"""
Takes screenshots on all clients.
"""
def take_screenshots(screenshot_idx):
for client in clients:
client.node.screenshot(f"screen_{client.name}_{screenshot_idx}")
return screenshot_idx + 1
# Wait for the servers to come up.
start_all()
for srv in servers:
srv.node.wait_for_unit(f"armagetronad-{srv.name}")
srv.node.wait_until_succeeds(f"ss --numeric --udp --listening | grep -q {srv.port}")
# Make sure console commands work through the named pipe we created.
for srv in servers:
srv.node.succeed(
f"echo 'say Testing!' >> /var/lib/armagetronad/{srv.name}/input"
)
srv.node.succeed(
f"echo 'say Testing again!' >> /var/lib/armagetronad/{srv.name}/input"
)
srv.node.wait_until_succeeds(
f"journalctl -u armagetronad-{srv.name} -e | grep -q 'Admin: Testing!'"
)
srv.node.wait_until_succeeds(
f"journalctl -u armagetronad-{srv.name} -e | grep -q 'Admin: Testing again!'"
)
"""
Sets up a client, waiting for the given barrier on completion.
"""
def client_setup(client, servers, barrier):
client.node.wait_for_x()
# Configure Armagetron.
client.node.succeed(
run("mkdir -p ~/.armagetronad/var"),
run(f"echo 'PLAYER_1 {client.name}' >> ~/.armagetronad/var/autoexec.cfg")
)
for idx, srv in enumerate(servers):
client.node.succeed(
run(f"echo 'BOOKMARK_{idx+1}_ADDRESS {srv.address}' >> ~/.armagetronad/var/autoexec.cfg"),
run(f"echo 'BOOKMARK_{idx+1}_NAME {srv.name}' >> ~/.armagetronad/var/autoexec.cfg"),
run(f"echo 'BOOKMARK_{idx+1}_PORT {srv.port}' >> ~/.armagetronad/var/autoexec.cfg")
)
# Start Armagetron.
client.node.succeed(run("ulimit -c unlimited; armagetronad >&2 & disown"))
client.node.wait_until_succeeds(
run(
"${xdo "create_new_win-select_main_window" ''
search --onlyvisible --name "Armagetron Advanced"
windowfocus --sync
windowactivate --sync
''}"
)
)
# Get through the tutorial.
client.send_on('Language Settings', 'ret')
client.send_on('First Setup', 'ret')
client.send_on('Welcome to Armagetron Advanced', 'ret')
client.send_on('round 1', 'esc')
client.send_on('Menu', 'up', 'up', 'ret')
client.send_on('We hope you', 'ret')
client.send_on('Armagetron Advanced', 'ret')
client.send_on('Play Game', 'ret')
# Online > LAN > Network Setup > Mates > Server Bookmarks
client.send_on('Multiplayer', 'down', 'down', 'down', 'down', 'ret')
barrier.wait()
# Get to the Server Bookmarks screen on both clients. This takes a while so do it asynchronously.
barrier = threading.Barrier(3, timeout=120)
for client in clients:
threading.Thread(target=client_setup, args=(client, servers, barrier)).start()
barrier.wait()
# Main testing loop. Iterates through each server bookmark and connects to them in sequence.
# Assumes that the game is currently on the Server Bookmarks screen.
for srv in servers:
screenshot_idx = take_screenshots(screenshot_idx)
# Connect both clients at once, one second apart.
for client in clients:
client.send('ret')
client.node.sleep(1)
# Wait for clients to connect
for client in clients:
srv.node.wait_until_succeeds(
f"journalctl -u armagetronad-{srv.name} -e | grep -q '{client.name}.*entered the game'"
)
# Wait for the match to start
srv.node.wait_until_succeeds(
f"journalctl -u armagetronad-{srv.name} -e | grep -q 'Admin: {srv.welcome}'"
)
srv.node.wait_until_succeeds(
f"journalctl -u armagetronad-{srv.name} -e | grep -q 'Admin: https://nixos.org'"
)
srv.node.wait_until_succeeds(
f"journalctl -u armagetronad-{srv.name} -e | grep -q 'Go (round 1 of 10)'"
)
# Wait a bit
srv.node.sleep(srv.coredump_delay)
# Turn the attacker player's lightcycle left
attacker = next(client for client in clients if client.name == srv.attacker)
victim = next(client for client in clients if client.name == srv.victim)
attacker.send('left')
screenshot_idx = take_screenshots(screenshot_idx)
# Wait for coredump.
srv.node.wait_until_succeeds(
f"journalctl -u armagetronad-{srv.name} -e | grep -q '{attacker.name} core dumped {victim.name}'"
)
screenshot_idx = take_screenshots(screenshot_idx)
# Disconnect both clients from the server
for client in clients:
client.send('esc')
client.send_on('Menu', 'up', 'up', 'ret')
srv.node.wait_until_succeeds(
f"journalctl -u armagetronad-{srv.name} -e | grep -q '{client.name}.*left the game'"
)
# Next server.
for client in clients:
client.send_on('Server Bookmarks', 'down')
# Stop the servers
for srv in servers:
srv.node.succeed(
f"systemctl stop armagetronad-{srv.name}"
)
srv.node.wait_until_fails(f"ss --numeric --udp --listening | grep -q {srv.port}")
'';
})

View File

@ -36,7 +36,7 @@ import ./make-test-python.nix ({ pkgs, ...} :
}; };
# fancy setup: run in uWSGI and use nginx as proxy # fancy setup: run in uWSGI and use nginx as proxy
nodes.fancy = { ... }: { nodes.fancy = { config, ... }: {
imports = [ ../modules/profiles/minimal.nix ]; imports = [ ../modules/profiles/minimal.nix ];
services.searx = { services.searx = {
@ -65,7 +65,7 @@ import ./make-test-python.nix ({ pkgs, ...} :
include ${pkgs.nginx}/conf/uwsgi_params; include ${pkgs.nginx}/conf/uwsgi_params;
uwsgi_pass unix:/run/searx/uwsgi.sock; uwsgi_pass unix:/run/searx/uwsgi.sock;
''; '';
locations."/searx/static/".alias = "${pkgs.searx}/share/static/"; locations."/searx/static/".alias = "${config.services.searx.package}/share/static/";
}; };
# allow nginx access to the searx socket # allow nginx access to the searx socket
@ -108,7 +108,7 @@ import ./make-test-python.nix ({ pkgs, ...} :
"${pkgs.curl}/bin/curl --fail http://localhost/searx >&2" "${pkgs.curl}/bin/curl --fail http://localhost/searx >&2"
) )
fancy.succeed( fancy.succeed(
"${pkgs.curl}/bin/curl --fail http://localhost/searx/static/themes/oscar/js/bootstrap.min.js >&2" "${pkgs.curl}/bin/curl --fail http://localhost/searx/static/themes/simple/js/leaflet.js >&2"
) )
''; '';
}) })

View File

@ -2,13 +2,13 @@
pythonPackages.buildPythonApplication rec { pythonPackages.buildPythonApplication rec {
pname = "mopidy-spotify"; pname = "mopidy-spotify";
version = "unstable-2024-02-11"; version = "unstable-2024-02-27";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "mopidy"; owner = "mopidy";
repo = "mopidy-spotify"; repo = "mopidy-spotify";
rev = "fc6ffb3bbbae9224316e2a888db08ef56608966a"; rev = "112d4abbb3f5b6477dab796f2824fa42196bfa0a";
hash = "sha256-V1SW8OyuBKLbUoQ4O5iiS4mq3MOXidcVKpiw125vxjQ="; hash = "sha256-RkXDzAbOOll3uCNZ2mFRnjqMkT/NkXOGjywLRTC9i60=";
}; };
propagatedBuildInputs = [ propagatedBuildInputs = [

View File

@ -6,13 +6,13 @@
python3Packages.buildPythonApplication rec { python3Packages.buildPythonApplication rec {
pname = "pyradio"; pname = "pyradio";
version = "0.9.1"; version = "0.9.2.25";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "coderholic"; owner = "coderholic";
repo = pname; repo = "pyradio";
rev = "refs/tags/${version}"; rev = "refs/tags/${version}";
hash = "sha256-tu/qlrbTcUCIRF15x9ATKHH+LDy1OsGJpo5x+CerTKg="; hash = "sha256-GkOp0iK84HDvVH8RmtmIKJ5EtQIECgZS5g8pmaIhUcc=";
}; };
nativeBuildInputs = [ nativeBuildInputs = [
@ -20,9 +20,12 @@ python3Packages.buildPythonApplication rec {
]; ];
propagatedBuildInputs = with python3Packages; [ propagatedBuildInputs = with python3Packages; [
requests
psutil
dnspython dnspython
netifaces
psutil
python-dateutil
requests
rich
]; ];
checkPhase = '' checkPhase = ''

View File

@ -5,6 +5,8 @@ let
inherit (self) callPackage; inherit (self) callPackage;
in in
{ {
inherit (pkgs) emacspeak;
acm = callPackage ./manual-packages/acm { }; acm = callPackage ./manual-packages/acm { };
acm-terminal = callPackage ./manual-packages/acm-terminal { }; acm-terminal = callPackage ./manual-packages/acm-terminal { };
@ -31,8 +33,6 @@ in
elisp-ffi = callPackage ./manual-packages/elisp-ffi { }; elisp-ffi = callPackage ./manual-packages/elisp-ffi { };
emacspeak = callPackage ./manual-packages/emacspeak { };
ess-R-object-popup = callPackage ./manual-packages/ess-R-object-popup { }; ess-R-object-popup = callPackage ./manual-packages/ess-R-object-popup { };
evil-markdown = callPackage ./manual-packages/evil-markdown { }; evil-markdown = callPackage ./manual-packages/evil-markdown { };

View File

@ -4,13 +4,13 @@
buildGoModule rec { buildGoModule rec {
pname = "orbiton"; pname = "orbiton";
version = "2.65.10"; version = "2.65.11";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "xyproto"; owner = "xyproto";
repo = "orbiton"; repo = "orbiton";
rev = "v${version}"; rev = "v${version}";
hash = "sha256-z81Xled6OFs9tKVJgUnws81C86Vle5XR85f3z96N2Gw="; hash = "sha256-eb7Ku1hgvYdmRgemXcEZMl53oNXYcomh4wYHpRzLTUc=";
}; };
vendorHash = null; vendorHash = null;

File diff suppressed because it is too large Load Diff

View File

@ -50,12 +50,12 @@
}; };
arduino = buildGrammar { arduino = buildGrammar {
language = "arduino"; language = "arduino";
version = "0.0.0+rev=2372f16"; version = "0.0.0+rev=a282270";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "ObserverOfTime"; owner = "ObserverOfTime";
repo = "tree-sitter-arduino"; repo = "tree-sitter-arduino";
rev = "2372f163b8416eeea674686fe0222e39fa06bad5"; rev = "a282270857b7be447b8be91411468349a31d73b7";
hash = "sha256-nX0JXEP+fAADlKqMA1rrhKlUS4JMrOtFTQ/wxoOxcIY="; hash = "sha256-NAE/E3glGz509nOKO5xsJIwe1Q2OSh6Aj5krUOVhqvw=";
}; };
meta.homepage = "https://github.com/ObserverOfTime/tree-sitter-arduino"; meta.homepage = "https://github.com/ObserverOfTime/tree-sitter-arduino";
}; };
@ -116,14 +116,14 @@
}; };
bass = buildGrammar { bass = buildGrammar {
language = "bass"; language = "bass";
version = "0.0.0+rev=27f110d"; version = "0.0.0+rev=c9ba456";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "amaanq"; owner = "vito";
repo = "tree-sitter-bass"; repo = "tree-sitter-bass";
rev = "27f110dfe79620993f5493ffa0d0f2fe12d250ed"; rev = "c9ba4568af24cd3403029730687c0a43d1350a43";
hash = "sha256-OmYtp2TAsAjw2fgdSezHUrP46b/QXgCbDeJa4ANrtvY="; hash = "sha256-F131TkIt2mW2n8Da3zI1/B0yoT9Ezo2hWoptpsdMrb4=";
}; };
meta.homepage = "https://github.com/amaanq/tree-sitter-bass"; meta.homepage = "https://github.com/vito/tree-sitter-bass";
}; };
beancount = buildGrammar { beancount = buildGrammar {
language = "beancount"; language = "beancount";
@ -182,12 +182,12 @@
}; };
c = buildGrammar { c = buildGrammar {
language = "c"; language = "c";
version = "0.0.0+rev=72a60ea"; version = "0.0.0+rev=652433f";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "tree-sitter"; owner = "tree-sitter";
repo = "tree-sitter-c"; repo = "tree-sitter-c";
rev = "72a60ea888fb59a8e143883661f021139c905b74"; rev = "652433fce487d8c3943207da38e3e65e4550e288";
hash = "sha256-huEi/PEzjG9mtwL30mJ2oVy+D64d8I9Z/LZc856qlbw="; hash = "sha256-Ld8ufwdOVqRYb9YpOa6z6fWoA+gj0w0nlq3dqhFCap8=";
}; };
meta.homepage = "https://github.com/tree-sitter/tree-sitter-c"; meta.homepage = "https://github.com/tree-sitter/tree-sitter-c";
}; };
@ -226,12 +226,12 @@
}; };
chatito = buildGrammar { chatito = buildGrammar {
language = "chatito"; language = "chatito";
version = "0.0.0+rev=308b591"; version = "0.0.0+rev=7162ec1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "ObserverOfTime"; owner = "ObserverOfTime";
repo = "tree-sitter-chatito"; repo = "tree-sitter-chatito";
rev = "308b5913fd2ae6b527183ba1b3a490f90da32012"; rev = "7162ec1e8e9154fb334e84aa7637a4af051dfe42";
hash = "sha256-oD49Rc1J/CkIAqEFI87efdzGLYl73se0ekpQll/Mpxs="; hash = "sha256-phvENW6wEqhKQakeXxsTclhSmFWFgfK9ztCszOGuaYY=";
}; };
meta.homepage = "https://github.com/ObserverOfTime/tree-sitter-chatito"; meta.homepage = "https://github.com/ObserverOfTime/tree-sitter-chatito";
}; };
@ -248,12 +248,12 @@
}; };
cmake = buildGrammar { cmake = buildGrammar {
language = "cmake"; language = "cmake";
version = "0.0.0+rev=73ab4b8"; version = "0.0.0+rev=f8de25f";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "uyha"; owner = "uyha";
repo = "tree-sitter-cmake"; repo = "tree-sitter-cmake";
rev = "73ab4b8e9522f014a67f87f585e820d36fa47408"; rev = "f8de25f30757a2def006a7c144354710fe63dcf3";
hash = "sha256-5X4ho6tqPZFQWqoQ6WBsfuA+RbxTX5XzX7xzyFSTifw="; hash = "sha256-J8Ro3J9kkH7k/v+nwekCotoS/l28yInhk9p/xaSbegc=";
}; };
meta.homepage = "https://github.com/uyha/tree-sitter-cmake"; meta.homepage = "https://github.com/uyha/tree-sitter-cmake";
}; };
@ -314,12 +314,12 @@
}; };
cpp = buildGrammar { cpp = buildGrammar {
language = "cpp"; language = "cpp";
version = "0.0.0+rev=3d98832"; version = "0.0.0+rev=e0c1678";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "tree-sitter"; owner = "tree-sitter";
repo = "tree-sitter-cpp"; repo = "tree-sitter-cpp";
rev = "3d988327a1cfd724c0d195b37a1056174fae99bc"; rev = "e0c1678a78731e78655b7d953efb4daecf58be46";
hash = "sha256-s7+dRY3OWE7iz9nlqHEOyLlrWaDPF0buDSIjsRYPc7s="; hash = "sha256-CdNCVDMAmeJrHgPb2JLxFHj/tHnUYC8flmxj+UaVXTo=";
}; };
meta.homepage = "https://github.com/tree-sitter/tree-sitter-cpp"; meta.homepage = "https://github.com/tree-sitter/tree-sitter-cpp";
}; };
@ -348,12 +348,12 @@
}; };
cuda = buildGrammar { cuda = buildGrammar {
language = "cuda"; language = "cuda";
version = "0.0.0+rev=2c6e806"; version = "0.0.0+rev=221179d";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "theHamsta"; owner = "theHamsta";
repo = "tree-sitter-cuda"; repo = "tree-sitter-cuda";
rev = "2c6e806949197e7898910c78f514a3b7ff679068"; rev = "221179d4287a2c24c08e4c67ff383ef67dc32156";
hash = "sha256-JAShJo+jDv4kzFCPID0C3EokmeiWxMVcJoEsVOzKBEw="; hash = "sha256-e01PTB+SduikiiDvOW411v0pBXCqOFBWlu3HgmM6jFg=";
}; };
meta.homepage = "https://github.com/theHamsta/tree-sitter-cuda"; meta.homepage = "https://github.com/theHamsta/tree-sitter-cuda";
}; };
@ -370,12 +370,12 @@
}; };
d = buildGrammar { d = buildGrammar {
language = "d"; language = "d";
version = "0.0.0+rev=d9a1a2e"; version = "0.0.0+rev=a33d400";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "gdamore"; owner = "gdamore";
repo = "tree-sitter-d"; repo = "tree-sitter-d";
rev = "d9a1a2ed77017c23f715643f4739433a5ea7ab6f"; rev = "a33d400f025d6bbd37b4c681c93054976f579890";
hash = "sha256-GgecDpsZMBTEqHjSbNyUUA6HzGuYEgtqZ9AB+6+fsDo="; hash = "sha256-LUb+1dTj1IP5ZtWaWBT8UWnGEqb0DJodgbkwnT7xywk=";
}; };
meta.homepage = "https://github.com/gdamore/tree-sitter-d"; meta.homepage = "https://github.com/gdamore/tree-sitter-d";
}; };
@ -469,12 +469,12 @@
}; };
dtd = buildGrammar { dtd = buildGrammar {
language = "dtd"; language = "dtd";
version = "0.0.0+rev=2743ff8"; version = "0.0.0+rev=52b3783";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "tree-sitter-grammars"; owner = "tree-sitter-grammars";
repo = "tree-sitter-xml"; repo = "tree-sitter-xml";
rev = "2743ff864eac85cec830ff400f2e0024b9ca588b"; rev = "52b3783d0c89a69ec64b2d49eee95f44a7fdcd2a";
hash = "sha256-wuj3Q+LAtAS99pwJUD+3BzndVeNhzvQlaugzTHRvUjI="; hash = "sha256-DVx/JwQXFEgY3XXo2rOVIWBRHdqprNgja9lAashkh5g=";
}; };
location = "dtd"; location = "dtd";
meta.homepage = "https://github.com/tree-sitter-grammars/tree-sitter-xml"; meta.homepage = "https://github.com/tree-sitter-grammars/tree-sitter-xml";
@ -526,12 +526,12 @@
}; };
elm = buildGrammar { elm = buildGrammar {
language = "elm"; language = "elm";
version = "0.0.0+rev=c26afd7"; version = "0.0.0+rev=09dbf22";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "elm-tooling"; owner = "elm-tooling";
repo = "tree-sitter-elm"; repo = "tree-sitter-elm";
rev = "c26afd7f2316f689410a1622f1780eff054994b1"; rev = "09dbf221d7491dc8d8839616b27c21b9c025c457";
hash = "sha256-vYN1E49IpsvTUmxuzRyydCmhYZYGndcZPMBYgSMudrE="; hash = "sha256-Bq2oWtqEAsKyV0iHNKC+hXW4fh4yUwbfUhPtZWg5pug=";
}; };
meta.homepage = "https://github.com/elm-tooling/tree-sitter-elm"; meta.homepage = "https://github.com/elm-tooling/tree-sitter-elm";
}; };
@ -592,25 +592,36 @@
}; };
faust = buildGrammar { faust = buildGrammar {
language = "faust"; language = "faust";
version = "0.0.0+rev=9e514af"; version = "0.0.0+rev=f3b9274";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "khiner"; owner = "khiner";
repo = "tree-sitter-faust"; repo = "tree-sitter-faust";
rev = "9e514af33bfe061d0ccf1999dbcc93fca91f133c"; rev = "f3b9274514b5f9bf6b0dd4a01c30f9cc15c58bc4";
hash = "sha256-FZ5wl6Pl2Y86dNpaRMTh8Q7TEx/s0YoV9/H1J+qwlwo="; hash = "sha256-JwR8LCEptgQmEG/ruK5ukIGCNtvKJw5bobZ0WXF1ulY=";
}; };
meta.homepage = "https://github.com/khiner/tree-sitter-faust"; meta.homepage = "https://github.com/khiner/tree-sitter-faust";
}; };
fennel = buildGrammar { fennel = buildGrammar {
language = "fennel"; language = "fennel";
version = "0.0.0+rev=15e4f8c"; version = "0.0.0+rev=215e391";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "travonted"; owner = "alexmozaidze";
repo = "tree-sitter-fennel"; repo = "tree-sitter-fennel";
rev = "15e4f8c417281768db17080c4447297f8ff5343a"; rev = "215e3913524abc119daa9db7cf6ad2f2f5620189";
hash = "sha256-BdhgDS+yJ/DUYJknVksLSNHvei+MOkqVW7gp6AffKhU="; hash = "sha256-myh0+ZNDzdUZFAdsw8uVGyo0VYh0wKNZ11vlJKTSZnA=";
}; };
meta.homepage = "https://github.com/travonted/tree-sitter-fennel"; meta.homepage = "https://github.com/alexmozaidze/tree-sitter-fennel";
};
fidl = buildGrammar {
language = "fidl";
version = "0.0.0+rev=bdbb635";
src = fetchFromGitHub {
owner = "google";
repo = "tree-sitter-fidl";
rev = "bdbb635a7f5035e424f6173f2f11b9cd79703f8d";
hash = "sha256-+s9AC7kAfPumREnc7xCSsYiaDwLp3uirLntwd2wK6Wo=";
};
meta.homepage = "https://github.com/google/tree-sitter-fidl";
}; };
firrtl = buildGrammar { firrtl = buildGrammar {
language = "firrtl"; language = "firrtl";
@ -702,12 +713,12 @@
}; };
gdscript = buildGrammar { gdscript = buildGrammar {
language = "gdscript"; language = "gdscript";
version = "0.0.0+rev=03f20b9"; version = "0.0.0+rev=b5dea4d";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "PrestonKnopp"; owner = "PrestonKnopp";
repo = "tree-sitter-gdscript"; repo = "tree-sitter-gdscript";
rev = "03f20b94707a21bed90bb95101684bc4036139ce"; rev = "b5dea4d852db65f0872d849c24533eb121e03c76";
hash = "sha256-im87Rws9PPcBWNN0M8PNqnthJZlWKzn3iPLMGR+jtGo="; hash = "sha256-/fmg7DfVX62F3sEovFaMs4dTA4rvPexOdQop3257op4=";
}; };
meta.homepage = "https://github.com/PrestonKnopp/tree-sitter-gdscript"; meta.homepage = "https://github.com/PrestonKnopp/tree-sitter-gdscript";
}; };
@ -735,12 +746,12 @@
}; };
gitattributes = buildGrammar { gitattributes = buildGrammar {
language = "gitattributes"; language = "gitattributes";
version = "0.0.0+rev=3d03b37"; version = "0.0.0+rev=0750b59";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "ObserverOfTime"; owner = "ObserverOfTime";
repo = "tree-sitter-gitattributes"; repo = "tree-sitter-gitattributes";
rev = "3d03b37395f5707b6a2bfb43f62957fe0e669c0c"; rev = "0750b5904f37d6b2f47f6e4655001c2c35a172ec";
hash = "sha256-+DvxhL+m3Nagv0GXWWWYsIIDuWNzlK1vNVLOO0qBl2E="; hash = "sha256-BXsF++uut1WWxe67E+CUh3e6VWrezNJaPfYJhXB0VlY=";
}; };
meta.homepage = "https://github.com/ObserverOfTime/tree-sitter-gitattributes"; meta.homepage = "https://github.com/ObserverOfTime/tree-sitter-gitattributes";
}; };
@ -999,23 +1010,23 @@
}; };
hlsl = buildGrammar { hlsl = buildGrammar {
language = "hlsl"; language = "hlsl";
version = "0.0.0+rev=840fd07"; version = "0.0.0+rev=f820ee8";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "theHamsta"; owner = "theHamsta";
repo = "tree-sitter-hlsl"; repo = "tree-sitter-hlsl";
rev = "840fd07f09304bca415b93a15483e9ab1e44bc3f"; rev = "f820ee8417451f69020791cf691904ec1b63f20d";
hash = "sha256-GPY6udz0YZawmQ6WcItXchUeag9EO+eMMGoYSaRsdrY="; hash = "sha256-d80vNrZGaPWlST5tgvf25CliuzS+zSZ60f49cRuucZ4=";
}; };
meta.homepage = "https://github.com/theHamsta/tree-sitter-hlsl"; meta.homepage = "https://github.com/theHamsta/tree-sitter-hlsl";
}; };
hlsplaylist = buildGrammar { hlsplaylist = buildGrammar {
language = "hlsplaylist"; language = "hlsplaylist";
version = "0.0.0+rev=ff121d3"; version = "0.0.0+rev=5be34b0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "Freed-Wu"; owner = "Freed-Wu";
repo = "tree-sitter-hlsplaylist"; repo = "tree-sitter-hlsplaylist";
rev = "ff121d397cf7cc709e3bbc928107fc25529e11e0"; rev = "5be34b0f6ea01b24f017c2c715729a3a919f57fd";
hash = "sha256-FItkJbxWfpRne27OPRq5fCHUCX35fxmiT6k1eX8UkhI="; hash = "sha256-3ZFaIc4BrfR7dLxftbSLuFdErjYrJgi0Cd8jp9PB19U=";
}; };
meta.homepage = "https://github.com/Freed-Wu/tree-sitter-hlsplaylist"; meta.homepage = "https://github.com/Freed-Wu/tree-sitter-hlsplaylist";
}; };
@ -1043,12 +1054,12 @@
}; };
html = buildGrammar { html = buildGrammar {
language = "html"; language = "html";
version = "0.0.0+rev=438d694"; version = "0.0.0+rev=b5d9758";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "tree-sitter"; owner = "tree-sitter";
repo = "tree-sitter-html"; repo = "tree-sitter-html";
rev = "438d694a1f51e1704cb779ad4fec2517523b1d7f"; rev = "b5d9758e22b4d3d25704b72526670759a9e4d195";
hash = "sha256-NL1tOr7V3QVsVu2OfzLzFpe/FpYVD6MCgdSV0I6AkRY="; hash = "sha256-v3BD36OKkzJ1xqQV87HAyQpnQzi/4+PuyEAM1HfkW3U=";
}; };
meta.homepage = "https://github.com/tree-sitter/tree-sitter-html"; meta.homepage = "https://github.com/tree-sitter/tree-sitter-html";
}; };
@ -1175,12 +1186,12 @@
}; };
json = buildGrammar { json = buildGrammar {
language = "json"; language = "json";
version = "0.0.0+rev=ac6ddfa"; version = "0.0.0+rev=3b12920";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "tree-sitter"; owner = "tree-sitter";
repo = "tree-sitter-json"; repo = "tree-sitter-json";
rev = "ac6ddfa7775795a3d8f5edab4a71e3a49f932b6a"; rev = "3b129203f4b72d532f58e72c5310c0a7db3b8e6d";
hash = "sha256-T/y1xfHv3G3cTD2xw43tMiW8agKwE5CV/uwThSHkd84="; hash = "sha256-dVErHgsUDEN42wc/Gd68vQfVc8+/r/8No9KZk2GFzmY=";
}; };
meta.homepage = "https://github.com/tree-sitter/tree-sitter-json"; meta.homepage = "https://github.com/tree-sitter/tree-sitter-json";
}; };
@ -1351,12 +1362,12 @@
}; };
lua = buildGrammar { lua = buildGrammar {
language = "lua"; language = "lua";
version = "0.0.0+rev=9668709"; version = "0.0.0+rev=04c9579";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "MunifTanjim"; owner = "MunifTanjim";
repo = "tree-sitter-lua"; repo = "tree-sitter-lua";
rev = "9668709211b2e683f27f414454a8b51bf0a6bda1"; rev = "04c9579dcb917255b2e5f8199df4ae7f587d472f";
hash = "sha256-5t5w8KqbefInNbA12/jpNzmky/uOUhsLjKdEqpl1GEc="; hash = "sha256-kzyn6XF4/PN8civ/0UV+ancCMkh7DF2B7WUYxix6aaM=";
}; };
meta.homepage = "https://github.com/MunifTanjim/tree-sitter-lua"; meta.homepage = "https://github.com/MunifTanjim/tree-sitter-lua";
}; };
@ -1417,24 +1428,24 @@
}; };
markdown = buildGrammar { markdown = buildGrammar {
language = "markdown"; language = "markdown";
version = "0.0.0+rev=23d9cb2"; version = "0.0.0+rev=2821521";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "MDeiml"; owner = "MDeiml";
repo = "tree-sitter-markdown"; repo = "tree-sitter-markdown";
rev = "23d9cb2ce2f4d0914e7609b500c5fc8dfae0176f"; rev = "2821521a4e6eab37b63dff6a8e169cd88554047d";
hash = "sha256-Z42w7gSUV9/9Q1jtCrd03cjlMUjHC5Vjie1x8m8K5uw="; hash = "sha256-JoZ/CKIMHVowwqTMFdys+Qu1CHMsP+8Wr2LJo5h30B4=";
}; };
location = "tree-sitter-markdown"; location = "tree-sitter-markdown";
meta.homepage = "https://github.com/MDeiml/tree-sitter-markdown"; meta.homepage = "https://github.com/MDeiml/tree-sitter-markdown";
}; };
markdown_inline = buildGrammar { markdown_inline = buildGrammar {
language = "markdown_inline"; language = "markdown_inline";
version = "0.0.0+rev=23d9cb2"; version = "0.0.0+rev=2821521";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "MDeiml"; owner = "MDeiml";
repo = "tree-sitter-markdown"; repo = "tree-sitter-markdown";
rev = "23d9cb2ce2f4d0914e7609b500c5fc8dfae0176f"; rev = "2821521a4e6eab37b63dff6a8e169cd88554047d";
hash = "sha256-Z42w7gSUV9/9Q1jtCrd03cjlMUjHC5Vjie1x8m8K5uw="; hash = "sha256-JoZ/CKIMHVowwqTMFdys+Qu1CHMsP+8Wr2LJo5h30B4=";
}; };
location = "tree-sitter-markdown-inline"; location = "tree-sitter-markdown-inline";
meta.homepage = "https://github.com/MDeiml/tree-sitter-markdown"; meta.homepage = "https://github.com/MDeiml/tree-sitter-markdown";
@ -1474,35 +1485,35 @@
}; };
meson = buildGrammar { meson = buildGrammar {
language = "meson"; language = "meson";
version = "0.0.0+rev=3d6dfbd"; version = "0.0.0+rev=d6ec8ce";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "Decodetalkers"; owner = "Decodetalkers";
repo = "tree-sitter-meson"; repo = "tree-sitter-meson";
rev = "3d6dfbdb2432603bc84ca7dc009bb39ed9a8a7b1"; rev = "d6ec8ce0963c3c8180161391f15d8f7d415f650d";
hash = "sha256-NRiecSr5UjISlFtmtvy3SYaWSmXMf0bKCKQVA83Jx+Y="; hash = "sha256-SwcBhg6luPAOtaL5dhvLxCpJcwlGhZxhvVmn5pa6ecA=";
}; };
meta.homepage = "https://github.com/Decodetalkers/tree-sitter-meson"; meta.homepage = "https://github.com/Decodetalkers/tree-sitter-meson";
}; };
mlir = buildGrammar { mlir = buildGrammar {
language = "mlir"; language = "mlir";
version = "0.0.0+rev=650a8fb"; version = "0.0.0+rev=117cbbc";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "artagnon"; owner = "artagnon";
repo = "tree-sitter-mlir"; repo = "tree-sitter-mlir";
rev = "650a8fb72013ba8d169bdb458e480d640fc545c9"; rev = "117cbbc46bbf82ae30b24f8939573655017226da";
hash = "sha256-Xmn5WaOgvAVyr1Bgzr+QG9G/kymtl4CUvLL5SPZdikU="; hash = "sha256-c0+Pvhe++fHmRL9Ptri+vsdRN3MCb2Z/7EqWmFaK/CE=";
}; };
generate = true; generate = true;
meta.homepage = "https://github.com/artagnon/tree-sitter-mlir"; meta.homepage = "https://github.com/artagnon/tree-sitter-mlir";
}; };
muttrc = buildGrammar { muttrc = buildGrammar {
language = "muttrc"; language = "muttrc";
version = "0.0.0+rev=0af0e0d"; version = "0.0.0+rev=67d9e23";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "neomutt"; owner = "neomutt";
repo = "tree-sitter-muttrc"; repo = "tree-sitter-muttrc";
rev = "0af0e0d8c8cf59dc21cfe565489da0c247374b9f"; rev = "67d9e23ca7aa22d9bce9d16c53d2c927dff5159a";
hash = "sha256-AB8c2mV2sTNwN8sZkv3RbRKdxZW467P6epX+Z4LWqbU="; hash = "sha256-B3/VoPq8h7TiwOP0nhsuPmFtkLsucpDm9RnUNXkfKpo=";
}; };
meta.homepage = "https://github.com/neomutt/tree-sitter-muttrc"; meta.homepage = "https://github.com/neomutt/tree-sitter-muttrc";
}; };
@ -1519,23 +1530,23 @@
}; };
nickel = buildGrammar { nickel = buildGrammar {
language = "nickel"; language = "nickel";
version = "0.0.0+rev=091b5dc"; version = "0.0.0+rev=19fb551";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "nickel-lang"; owner = "nickel-lang";
repo = "tree-sitter-nickel"; repo = "tree-sitter-nickel";
rev = "091b5dcc7d138901bcc162da9409c0bb626c0d27"; rev = "19fb551196d18b75160631f5e3a8a006b3875276";
hash = "sha256-HyHdameEgET5UXKMgw7EJvZsJxToc9Qz26XHvc5qmU0="; hash = "sha256-NXyagRPUT3h8G6R+eE4YrTnWtfB3AT/piXeun5ETU6s=";
}; };
meta.homepage = "https://github.com/nickel-lang/tree-sitter-nickel"; meta.homepage = "https://github.com/nickel-lang/tree-sitter-nickel";
}; };
nim = buildGrammar { nim = buildGrammar {
language = "nim"; language = "nim";
version = "0.0.0+rev=70ceee8"; version = "0.0.0+rev=c5f0ce3";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "alaviss"; owner = "alaviss";
repo = "tree-sitter-nim"; repo = "tree-sitter-nim";
rev = "70ceee835e033acbc7092cd7f4f6a251789af121"; rev = "c5f0ce3b65222f5dbb1a12f9fe894524881ad590";
hash = "sha256-9+ADYNrtdva/DkkjPwavyU0cL6eunqq4TX9IUQi9eKw="; hash = "sha256-KzAZf5vgrdp33esrgle71i0m52MvRJ3z/sMwzb+CueU=";
}; };
meta.homepage = "https://github.com/alaviss/tree-sitter-nim"; meta.homepage = "https://github.com/alaviss/tree-sitter-nim";
}; };
@ -1698,46 +1709,46 @@
}; };
pem = buildGrammar { pem = buildGrammar {
language = "pem"; language = "pem";
version = "0.0.0+rev=7905a16"; version = "0.0.0+rev=db307bb";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "ObserverOfTime"; owner = "ObserverOfTime";
repo = "tree-sitter-pem"; repo = "tree-sitter-pem";
rev = "7905a168036e23605160a0d32a142f58ab5eaa06"; rev = "db307bbb7dc4f721bf2f5ba7fcedaf58feeb59e0";
hash = "sha256-6gEOrpJ/5UDMMVqKh0XQX+K3JOPiOk5H6CWZgB59h00="; hash = "sha256-uBZo16QtZtbYc4jHdFt1w/zMx9F+WKBB+ANre8IURHA=";
}; };
meta.homepage = "https://github.com/ObserverOfTime/tree-sitter-pem"; meta.homepage = "https://github.com/ObserverOfTime/tree-sitter-pem";
}; };
perl = buildGrammar { perl = buildGrammar {
language = "perl"; language = "perl";
version = "0.0.0+rev=a30394f"; version = "0.0.0+rev=fd8b951";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "tree-sitter-perl"; owner = "tree-sitter-perl";
repo = "tree-sitter-perl"; repo = "tree-sitter-perl";
rev = "a30394f61b607f48c841c6e085d5219f23872816"; rev = "fd8b951cf6f72d48dfd07679de8cf0260836b231";
hash = "sha256-3aWBh5jKXUYXxOv+RKyEpwJVOoP7QuaRQZHw0yOy6tQ="; hash = "sha256-ejbpska3Ar0cjqDGZXXjRkpDLNsnDUJD0TBsb2cZfY4=";
}; };
meta.homepage = "https://github.com/tree-sitter-perl/tree-sitter-perl"; meta.homepage = "https://github.com/tree-sitter-perl/tree-sitter-perl";
}; };
php = buildGrammar { php = buildGrammar {
language = "php"; language = "php";
version = "0.0.0+rev=caf4d67"; version = "0.0.0+rev=710754c";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "tree-sitter"; owner = "tree-sitter";
repo = "tree-sitter-php"; repo = "tree-sitter-php";
rev = "caf4d67d55386d3e4f85d29450b8d9cacbb02d19"; rev = "710754c879435178b7643e525c84cd53f32c510c";
hash = "sha256-L0M9v/T3W3v+pES2AytZ6V4jHfnSklFBRGPW3/oB2Aw="; hash = "sha256-vOvuctPCcKs5iQ88Tv3Euxk7fDg06o1leRWUic4qzLQ=";
}; };
location = "php"; location = "php";
meta.homepage = "https://github.com/tree-sitter/tree-sitter-php"; meta.homepage = "https://github.com/tree-sitter/tree-sitter-php";
}; };
php_only = buildGrammar { php_only = buildGrammar {
language = "php_only"; language = "php_only";
version = "0.0.0+rev=caf4d67"; version = "0.0.0+rev=710754c";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "tree-sitter"; owner = "tree-sitter";
repo = "tree-sitter-php"; repo = "tree-sitter-php";
rev = "caf4d67d55386d3e4f85d29450b8d9cacbb02d19"; rev = "710754c879435178b7643e525c84cd53f32c510c";
hash = "sha256-L0M9v/T3W3v+pES2AytZ6V4jHfnSklFBRGPW3/oB2Aw="; hash = "sha256-vOvuctPCcKs5iQ88Tv3Euxk7fDg06o1leRWUic4qzLQ=";
}; };
location = "php_only"; location = "php_only";
meta.homepage = "https://github.com/tree-sitter/tree-sitter-php"; meta.homepage = "https://github.com/tree-sitter/tree-sitter-php";
@ -1788,12 +1799,12 @@
}; };
poe_filter = buildGrammar { poe_filter = buildGrammar {
language = "poe_filter"; language = "poe_filter";
version = "0.0.0+rev=99ce487"; version = "0.0.0+rev=bf912df";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "ObserverOfTime"; owner = "ObserverOfTime";
repo = "tree-sitter-poe-filter"; repo = "tree-sitter-poe-filter";
rev = "99ce487804eab781e1e1cb39de82aea236346c96"; rev = "bf912df70f60b356c70631d9cbb317b41c1ea319";
hash = "sha256-kMk0gCb2/FExKyGPeRDCd6rW/R3eH1iuE7udnFoI5UY="; hash = "sha256-EHftq35YJzElvYiJxiu7iIcugoXME7CXuQSo1ktG584=";
}; };
meta.homepage = "https://github.com/ObserverOfTime/tree-sitter-poe-filter"; meta.homepage = "https://github.com/ObserverOfTime/tree-sitter-poe-filter";
}; };
@ -1810,12 +1821,12 @@
}; };
printf = buildGrammar { printf = buildGrammar {
language = "printf"; language = "printf";
version = "0.0.0+rev=ddff4ce"; version = "0.0.0+rev=0e0acea";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "ObserverOfTime"; owner = "ObserverOfTime";
repo = "tree-sitter-printf"; repo = "tree-sitter-printf";
rev = "ddff4ce4d630d1f1a3b591d77b2618a4169b36b9"; rev = "0e0aceabbf607ea09e03562f5d8a56f048ddea3d";
hash = "sha256-MIj4tP2+zb43pcnSBSVjPpKxjbxKFJTcz8AJphEvh6k="; hash = "sha256-y/7CDnHpT3D6hL0f+52mReCphn+lvElfQQKJwY4fr9c=";
}; };
meta.homepage = "https://github.com/ObserverOfTime/tree-sitter-printf"; meta.homepage = "https://github.com/ObserverOfTime/tree-sitter-printf";
}; };
@ -1843,14 +1854,14 @@
}; };
properties = buildGrammar { properties = buildGrammar {
language = "properties"; language = "properties";
version = "0.0.0+rev=74e5d3c"; version = "0.0.0+rev=189b3cc";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "ObserverOfTime"; owner = "tree-sitter-grammars";
repo = "tree-sitter-properties"; repo = "tree-sitter-properties";
rev = "74e5d3c63d0da17c0800b3cf9090b24637ef6b59"; rev = "189b3cc18d36871c27ebb0adcf0cddd123b0cbba";
hash = "sha256-oB5TA8dZtuFop7Urggv2ZWWi8s6wDsIL+ZG5+sCQgq8="; hash = "sha256-5cA2DDMiP8axu8Jl1M+CoxHoB+Jc/VMy3vXME+yxH9o=";
}; };
meta.homepage = "https://github.com/ObserverOfTime/tree-sitter-properties"; meta.homepage = "https://github.com/tree-sitter-grammars/tree-sitter-properties";
}; };
proto = buildGrammar { proto = buildGrammar {
language = "proto"; language = "proto";
@ -1899,12 +1910,12 @@
}; };
puppet = buildGrammar { puppet = buildGrammar {
language = "puppet"; language = "puppet";
version = "0.0.0+rev=9ce9a5f"; version = "0.0.0+rev=3641b9e";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "amaanq"; owner = "amaanq";
repo = "tree-sitter-puppet"; repo = "tree-sitter-puppet";
rev = "9ce9a5f7d64528572aaa8d59459ba869e634086b"; rev = "3641b9e854ac9c84c7576e71c4c9a357bcfd9550";
hash = "sha256-YEjjy9WLwITERYqoeSVrRYnwVBIAwdc4o0lvAK9wizw="; hash = "sha256-J1DBjQRdV4R85NTyg/qmwbjm1bryKe3UOdp4XyH6BQc=";
}; };
meta.homepage = "https://github.com/amaanq/tree-sitter-puppet"; meta.homepage = "https://github.com/amaanq/tree-sitter-puppet";
}; };
@ -2042,12 +2053,12 @@
}; };
readline = buildGrammar { readline = buildGrammar {
language = "readline"; language = "readline";
version = "0.0.0+rev=f2f98d4"; version = "0.0.0+rev=e436eae";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "ribru17"; owner = "ribru17";
repo = "tree-sitter-readline"; repo = "tree-sitter-readline";
rev = "f2f98d4263949d696e69a425f65326c59d1ceedc"; rev = "e436eaef452266a3d00c195f0eb757d6502c767a";
hash = "sha256-+T4HS2QqoXFRgBfY61NHK4EyQ/HF26eeMt9KV2Ud0Ug="; hash = "sha256-y38TDQ+7wBzEKol/UQ5Xk6f15wUW7hJxByDuhx9d0hQ=";
}; };
meta.homepage = "https://github.com/ribru17/tree-sitter-readline"; meta.homepage = "https://github.com/ribru17/tree-sitter-readline";
}; };
@ -2141,12 +2152,12 @@
}; };
rust = buildGrammar { rust = buildGrammar {
language = "rust"; language = "rust";
version = "0.0.0+rev=a70daac"; version = "0.0.0+rev=85a21c9";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "tree-sitter"; owner = "tree-sitter";
repo = "tree-sitter-rust"; repo = "tree-sitter-rust";
rev = "a70daac064145c84e9d51767c2575bb68d51df58"; rev = "85a21c96d31b2a5c4369e5836a7f4ab059268fea";
hash = "sha256-2Y7sQ5bhKEpbDAHd5zJMGAlDWH32tJXxAgFOYY8S7o8="; hash = "sha256-uxOjdB65+HjNuOybbYb2N9R0I+bt909bIBOzmh9vfVc=";
}; };
meta.homepage = "https://github.com/tree-sitter/tree-sitter-rust"; meta.homepage = "https://github.com/tree-sitter/tree-sitter-rust";
}; };
@ -2197,23 +2208,23 @@
}; };
slang = buildGrammar { slang = buildGrammar {
language = "slang"; language = "slang";
version = "0.0.0+rev=130b2f5"; version = "0.0.0+rev=0cdfb17";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "theHamsta"; owner = "theHamsta";
repo = "tree-sitter-slang"; repo = "tree-sitter-slang";
rev = "130b2f5c7a1d5c24645c3518db4bc2b22dd90718"; rev = "0cdfb1741323f38e9a33798674145c22cfc0092b";
hash = "sha256-gDN8nyQjxE7Hko3MJJj2Le0Ey0pd3GlG5QWkDf8c7Q0="; hash = "sha256-1xSnb3n9u45B2gEBApZpZlb1VvbJOrmgQwrPL2OuGro=";
}; };
meta.homepage = "https://github.com/theHamsta/tree-sitter-slang"; meta.homepage = "https://github.com/theHamsta/tree-sitter-slang";
}; };
slint = buildGrammar { slint = buildGrammar {
language = "slint"; language = "slint";
version = "0.0.0+rev=68405a4"; version = "0.0.0+rev=3c82235";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "slint-ui"; owner = "slint-ui";
repo = "tree-sitter-slint"; repo = "tree-sitter-slint";
rev = "68405a45f7a5311cd1f77e40ba84199573303f52"; rev = "3c82235f41b63f35a01ae3888206e93585cbb84a";
hash = "sha256-zmmxXU7w5N8XjKn2Uu/nAc/FjCAprdKyJ0c75CGUgpk="; hash = "sha256-D3X2YwvxvseIGnKzaSocr3Ak7qoASZhxyRS+rtpir0g=";
}; };
meta.homepage = "https://github.com/slint-ui/tree-sitter-slint"; meta.homepage = "https://github.com/slint-ui/tree-sitter-slint";
}; };
@ -2287,12 +2298,12 @@
}; };
sourcepawn = buildGrammar { sourcepawn = buildGrammar {
language = "sourcepawn"; language = "sourcepawn";
version = "0.0.0+rev=846ec64"; version = "0.0.0+rev=39ce73a";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "nilshelmig"; owner = "nilshelmig";
repo = "tree-sitter-sourcepawn"; repo = "tree-sitter-sourcepawn";
rev = "846ec647109a1f3dfab17c025c80ecdf6fd56581"; rev = "39ce73ad42b2c4f52848d16093c24feddaa7d226";
hash = "sha256-3yRBrzuzjWKKpLO+58P/JdNvjPj2o1HuBZOKkFh2RCs="; hash = "sha256-CyCUGGycWpgQl/BGDjRHwYoa9Mess49jUf9WUkRaliE=";
}; };
meta.homepage = "https://github.com/nilshelmig/tree-sitter-sourcepawn"; meta.homepage = "https://github.com/nilshelmig/tree-sitter-sourcepawn";
}; };
@ -2397,23 +2408,23 @@
}; };
svelte = buildGrammar { svelte = buildGrammar {
language = "svelte"; language = "svelte";
version = "0.0.0+rev=bd60db7"; version = "0.0.0+rev=04a126d";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "Himujjal"; owner = "tree-sitter-grammars";
repo = "tree-sitter-svelte"; repo = "tree-sitter-svelte";
rev = "bd60db7d3d06f89b6ec3b287c9a6e9190b5564bd"; rev = "04a126d9210def99f06d9ab84a255110b862d47c";
hash = "sha256-FZuzbTOP9LokPb77DSUwIXCFvMmDQPyyLKt7vNtEuAY="; hash = "sha256-F6AC72IHMKs1jTwshwNkAXFfiBGEbBn7m83xedCoDsA=";
}; };
meta.homepage = "https://github.com/Himujjal/tree-sitter-svelte"; meta.homepage = "https://github.com/tree-sitter-grammars/tree-sitter-svelte";
}; };
swift = buildGrammar { swift = buildGrammar {
language = "swift"; language = "swift";
version = "0.0.0+rev=dabbcf9"; version = "0.0.0+rev=e1ac0c3";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "alex-pinkus"; owner = "alex-pinkus";
repo = "tree-sitter-swift"; repo = "tree-sitter-swift";
rev = "dabbcf9a2311e08c1b020e1258849b8359e9de1a"; rev = "e1ac0c3b48f4c42c40f92f400f14c6561369d4dd";
hash = "sha256-U4r2uEDqBXeDC0NkOvSwkKreJnFSStxJisNPLJ4CTZs="; hash = "sha256-7MXH3ZDMH3Im/t5FPMGw6MGKMS+hKaHKUvTXXCrvgtI=";
}; };
generate = true; generate = true;
meta.homepage = "https://github.com/alex-pinkus/tree-sitter-swift"; meta.homepage = "https://github.com/alex-pinkus/tree-sitter-swift";
@ -2552,6 +2563,17 @@
}; };
meta.homepage = "https://github.com/tlaplus-community/tree-sitter-tlaplus"; meta.homepage = "https://github.com/tlaplus-community/tree-sitter-tlaplus";
}; };
tmux = buildGrammar {
language = "tmux";
version = "0.0.0+rev=10737f5";
src = fetchFromGitHub {
owner = "Freed-Wu";
repo = "tree-sitter-tmux";
rev = "10737f5dc4d8e68c9667f11a6996688a1185755f";
hash = "sha256-7MQYyWu1Rw3Vwmp3nbuorn9rD0xcEU5nRXPuTVpOqkM=";
};
meta.homepage = "https://github.com/Freed-Wu/tree-sitter-tmux";
};
todotxt = buildGrammar { todotxt = buildGrammar {
language = "todotxt"; language = "todotxt";
version = "0.0.0+rev=3937c5c"; version = "0.0.0+rev=3937c5c";
@ -2643,6 +2665,17 @@
}; };
meta.homepage = "https://github.com/Teddytrombone/tree-sitter-typoscript"; meta.homepage = "https://github.com/Teddytrombone/tree-sitter-typoscript";
}; };
typst = buildGrammar {
language = "typst";
version = "0.0.0+rev=c757be0";
src = fetchFromGitHub {
owner = "uben0";
repo = "tree-sitter-typst";
rev = "c757be0898e2a58f4e9761aa164dc413bf5beaf8";
hash = "sha256-z0x47Qrr8mYroDtXapRmzOMHOxlYmQmonN0P7VSCBu0=";
};
meta.homepage = "https://github.com/uben0/tree-sitter-typst";
};
udev = buildGrammar { udev = buildGrammar {
language = "udev"; language = "udev";
version = "0.0.0+rev=15d89be"; version = "0.0.0+rev=15d89be";
@ -2746,23 +2779,23 @@
}; };
vim = buildGrammar { vim = buildGrammar {
language = "vim"; language = "vim";
version = "0.0.0+rev=32c76f1"; version = "0.0.0+rev=bc1364d";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "neovim"; owner = "neovim";
repo = "tree-sitter-vim"; repo = "tree-sitter-vim";
rev = "32c76f150347c1cd044e90b8e2bc73c00677fa55"; rev = "bc1364d922952138957a62105171ed68e73fbb6c";
hash = "sha256-14lkrGZ5JpbPvb5Pm2UzLodhO1IEz5rBETTU0RZDFc4="; hash = "sha256-5h1GYjyYMJd5GS0zXh0LP1wBs60fYohpFv89gcdZ4vU=";
}; };
meta.homepage = "https://github.com/neovim/tree-sitter-vim"; meta.homepage = "https://github.com/neovim/tree-sitter-vim";
}; };
vimdoc = buildGrammar { vimdoc = buildGrammar {
language = "vimdoc"; language = "vimdoc";
version = "0.0.0+rev=ed8695a"; version = "0.0.0+rev=40fcd50";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "neovim"; owner = "neovim";
repo = "tree-sitter-vimdoc"; repo = "tree-sitter-vimdoc";
rev = "ed8695ad8de39c3f073da130156f00b1148e2891"; rev = "40fcd50a2c7b5a3ef98294795116773b24fb61ab";
hash = "sha256-q5Ln8WPFrtKBfZnaAAlMh3Q/eczEt6wCMZAtx+ISCKg="; hash = "sha256-i/O8vIjiyOoFECS1nmKfL/8hofzSvwg5cJo7JooJGOY=";
}; };
meta.homepage = "https://github.com/neovim/tree-sitter-vimdoc"; meta.homepage = "https://github.com/neovim/tree-sitter-vimdoc";
}; };
@ -2790,23 +2823,23 @@
}; };
wgsl_bevy = buildGrammar { wgsl_bevy = buildGrammar {
language = "wgsl_bevy"; language = "wgsl_bevy";
version = "0.0.0+rev=a041228"; version = "0.0.0+rev=cbd58ee";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "theHamsta"; owner = "theHamsta";
repo = "tree-sitter-wgsl-bevy"; repo = "tree-sitter-wgsl-bevy";
rev = "a041228ae64632f59b9bd37346a0dbcb7817f36b"; rev = "cbd58ee33e24f46d16b9882b001eefb25a958ee2";
hash = "sha256-bBGunOcFPrHWLsP1ISgdFBNDIBbB0uhwxKAwmQZg7/k="; hash = "sha256-EPpI4UJ/5GB2iDQGoSziUOcP1TVf7VU4FMTKvrujcAY=";
}; };
meta.homepage = "https://github.com/theHamsta/tree-sitter-wgsl-bevy"; meta.homepage = "https://github.com/theHamsta/tree-sitter-wgsl-bevy";
}; };
wing = buildGrammar { wing = buildGrammar {
language = "wing"; language = "wing";
version = "0.0.0+rev=f7965a9"; version = "0.0.0+rev=52ef462";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "winglang"; owner = "winglang";
repo = "wing"; repo = "wing";
rev = "f7965a947d2eaa8b5b9bba1c42a0e1891f1a0b2a"; rev = "52ef462f76e199845a5df4834b838339e0a6efdb";
hash = "sha256-qQ74aj7pccc3gvmeNoa0BBTMdNTmcc0h8aWNcLvpMRY="; hash = "sha256-eZEyk285EyfduzrVH3Ojbwu8mbRFfZY6lrQQQT1kWM8=";
}; };
location = "libs/tree-sitter-wing"; location = "libs/tree-sitter-wing";
generate = true; generate = true;
@ -2814,23 +2847,23 @@
}; };
xcompose = buildGrammar { xcompose = buildGrammar {
language = "xcompose"; language = "xcompose";
version = "0.0.0+rev=8898238"; version = "0.0.0+rev=7fd1494";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "ObserverOfTime"; owner = "ObserverOfTime";
repo = "tree-sitter-xcompose"; repo = "tree-sitter-xcompose";
rev = "8898238fca7e143760386448093392b87e58002e"; rev = "7fd14940e0478fce79ea195067ed14a2c42c654a";
hash = "sha256-1U3FFO6j4jdynDTRQlD8kfTYTiKvC7ZjxSECMW9NYGY="; hash = "sha256-elnm1HjE4hLFMR/XhCPhOcGjqS9FbCULPRb/IntpQ3U=";
}; };
meta.homepage = "https://github.com/ObserverOfTime/tree-sitter-xcompose"; meta.homepage = "https://github.com/ObserverOfTime/tree-sitter-xcompose";
}; };
xml = buildGrammar { xml = buildGrammar {
language = "xml"; language = "xml";
version = "0.0.0+rev=2743ff8"; version = "0.0.0+rev=52b3783";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "tree-sitter-grammars"; owner = "tree-sitter-grammars";
repo = "tree-sitter-xml"; repo = "tree-sitter-xml";
rev = "2743ff864eac85cec830ff400f2e0024b9ca588b"; rev = "52b3783d0c89a69ec64b2d49eee95f44a7fdcd2a";
hash = "sha256-wuj3Q+LAtAS99pwJUD+3BzndVeNhzvQlaugzTHRvUjI="; hash = "sha256-DVx/JwQXFEgY3XXo2rOVIWBRHdqprNgja9lAashkh5g=";
}; };
location = "xml"; location = "xml";
meta.homepage = "https://github.com/tree-sitter-grammars/tree-sitter-xml"; meta.homepage = "https://github.com/tree-sitter-grammars/tree-sitter-xml";
@ -2870,12 +2903,12 @@
}; };
zathurarc = buildGrammar { zathurarc = buildGrammar {
language = "zathurarc"; language = "zathurarc";
version = "0.0.0+rev=fe37e85"; version = "0.0.0+rev=353bdf2";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "Freed-Wu"; owner = "Freed-Wu";
repo = "tree-sitter-zathurarc"; repo = "tree-sitter-zathurarc";
rev = "fe37e85db355c737573315f278672534c40fe140"; rev = "353bdf25e7af9c2830e254977fd3fb57ccaa8203";
hash = "sha256-lQFCJhyJTCa+zdsobMutgbQqJ9mhehaIbRLbds0riEo="; hash = "sha256-vFDz4X0ujqM9GbrpGt3dRjvo0SR07E2qXrT/ppTegBQ=";
}; };
meta.homepage = "https://github.com/Freed-Wu/tree-sitter-zathurarc"; meta.homepage = "https://github.com/Freed-Wu/tree-sitter-zathurarc";
}; };

View File

@ -998,7 +998,7 @@
inherit (old) version src; inherit (old) version src;
sourceRoot = "source/spectre_oxi"; sourceRoot = "source/spectre_oxi";
cargoHash = "sha256-822+3s6FJVqBRYJAL/89bJfGv8fNhSN3nQelB29mXvQ="; cargoHash = "sha256-gCGuD5kipgfR0Le8npNmyBxNsUq0PavXvKkxkiPx13E=";
preCheck = '' preCheck = ''
@ -1671,6 +1671,14 @@
dependencies = with self; [ vim-repeat ]; dependencies = with self; [ vim-repeat ];
}; };
vim-tabby = super.vim-tabby.overrideAttrs {
postPatch = ''
substituteInPlace autoload/tabby/globals.vim --replace-fail \
"let g:tabby_node_binary = get(g:, 'tabby_node_binary', 'node')" \
"let g:tabby_node_binary = get(g:, 'tabby_node_binary', '${nodejs}/bin/node')"
'';
};
vim-textobj-entire = super.vim-textobj-entire.overrideAttrs { vim-textobj-entire = super.vim-textobj-entire.overrideAttrs {
dependencies = with self; [ vim-textobj-user ]; dependencies = with self; [ vim-textobj-user ];
meta.maintainers = with lib.maintainers; [ farlion ]; meta.maintainers = with lib.maintainers; [ farlion ];

View File

@ -75,6 +75,7 @@ https://github.com/jiangmiao/auto-pairs/,,
https://github.com/pocco81/auto-save.nvim/,HEAD, https://github.com/pocco81/auto-save.nvim/,HEAD,
https://github.com/rmagatti/auto-session/,, https://github.com/rmagatti/auto-session/,,
https://github.com/m4xshen/autoclose.nvim/,HEAD, https://github.com/m4xshen/autoclose.nvim/,HEAD,
https://github.com/gaoDean/autolist.nvim/,,
https://github.com/vim-scripts/autoload_cscope.vim/,, https://github.com/vim-scripts/autoload_cscope.vim/,,
https://github.com/nullishamy/autosave.nvim/,HEAD, https://github.com/nullishamy/autosave.nvim/,HEAD,
https://github.com/rafi/awesome-vim-colorschemes/,, https://github.com/rafi/awesome-vim-colorschemes/,,
@ -1400,3 +1401,4 @@ https://github.com/ziglang/zig.vim/,,
https://github.com/mickael-menu/zk-nvim/,HEAD, https://github.com/mickael-menu/zk-nvim/,HEAD,
https://github.com/troydm/zoomwintab.vim/,, https://github.com/troydm/zoomwintab.vim/,,
https://github.com/nanotee/zoxide.vim/,, https://github.com/nanotee/zoxide.vim/,,
https://github.com/TabbyML/vim-tabby/,HEAD,

View File

@ -3928,8 +3928,8 @@ let
mktplcRef = { mktplcRef = {
name = "uiua-vscode"; name = "uiua-vscode";
publisher = "uiua-lang"; publisher = "uiua-lang";
version = "0.0.27"; version = "0.0.39";
sha256 = "sha256-wEY1FZjgiQJ7VrJGZX0SgZqz/14v//jxgrqdafLjIfM="; sha256 = "sha256-B+p5bIwVhzWAdKQPCGPlImQihYCeTtYFTlkZIkgWayk=";
}; };
meta = { meta = {
description = "VSCode language extension for Uiua"; description = "VSCode language extension for Uiua";

View File

@ -2,7 +2,7 @@
, rustPlatform , rustPlatform
, fetchFromGitHub , fetchFromGitHub
, pkg-config , pkg-config
, libgit2_1_5 , libgit2
, openssl , openssl
, zlib , zlib
, stdenv , stdenv
@ -27,7 +27,7 @@ rustPlatform.buildRustPackage rec {
]; ];
buildInputs = [ buildInputs = [
libgit2_1_5 libgit2
openssl openssl
zlib zlib
] ++ lib.optionals stdenv.isDarwin [ ] ++ lib.optionals stdenv.isDarwin [
@ -35,6 +35,7 @@ rustPlatform.buildRustPackage rec {
]; ];
env = { env = {
LIBGIT2_NO_VENDOR = 1;
OPENSSL_NO_VENDOR = true; OPENSSL_NO_VENDOR = true;
}; };

View File

@ -16,13 +16,13 @@
python3Packages.buildPythonApplication rec { python3Packages.buildPythonApplication rec {
pname = "nwg-panel"; pname = "nwg-panel";
version = "0.9.24"; version = "0.9.25";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "nwg-piotr"; owner = "nwg-piotr";
repo = "nwg-panel"; repo = "nwg-panel";
rev = "refs/tags/v${version}"; rev = "refs/tags/v${version}";
hash = "sha256-qd2fnGdpHXX35ZtNGe59GnmhYGn6VJibc0KEr60VIJM="; hash = "sha256-dTBV2OckPJNA707PNz/jmfUPpufhItt4EEDHAI79kxQ=";
}; };
# No tests # No tests

View File

@ -39,6 +39,9 @@ stdenv.mkDerivation (finalAttrs: rec {
hash = "sha256-7O+DX4uuncUqx5zEKQprZE6tctteT6NU01V2EBHiFqA="; hash = "sha256-7O+DX4uuncUqx5zEKQprZE6tctteT6NU01V2EBHiFqA=";
}; };
# build pkg-config is required to locate the native `scdoc` input
depsBuildBuild = [ pkg-config ];
nativeBuildInputs = [ nativeBuildInputs = [
bash-completion bash-completion
# cmake # currently conflicts with meson # cmake # currently conflicts with meson
@ -50,7 +53,6 @@ stdenv.mkDerivation (finalAttrs: rec {
pkg-config pkg-config
python3 python3
sassc sassc
pantheon.granite
scdoc scdoc
vala vala
wrapGAppsHook wrapGAppsHook
@ -68,6 +70,7 @@ stdenv.mkDerivation (finalAttrs: rec {
libhandy libhandy
libpulseaudio libpulseaudio
librsvg librsvg
pantheon.granite
# systemd # ends with broken permission # systemd # ends with broken permission
]; ];

View File

@ -28,12 +28,12 @@
version = "2024-01-22"; version = "2024-01-22";
}; };
ungoogled-patches = { ungoogled-patches = {
hash = "sha256-G+agHdsssYhsyi4TgJUJBqMEnEgQ7bYeqpTqmonXI6I="; hash = "sha256-vqiizzSVWV2/iADPac8qgfdZcbunc0QgMqN15NwJ9js=";
rev = "122.0.6261.69-1"; rev = "122.0.6261.94-1";
}; };
}; };
hash = "sha256-uEN1hN6DOLgw4QDrMBZdiLLPx+yKQc5MimIf/vbCC84="; hash = "sha256-7fIs8qQon9L0iNmM/cHuyqtVm09qf7L4j9qb6KSbw2w=";
hash_deb_amd64 = "sha256-k3/Phs72eIMB6LAU4aU0+ze/cRu6KlRhpBshKhmq9N4="; hash_deb_amd64 = "sha256-hOm7YZ9ya/SmwKhj6uIPkdgIDv5bIbss398szBYHuXk=";
version = "122.0.6261.69"; version = "122.0.6261.94";
}; };
} }

View File

@ -33,11 +33,11 @@
firefox-beta = buildMozillaMach rec { firefox-beta = buildMozillaMach rec {
pname = "firefox-beta"; pname = "firefox-beta";
version = "124.0b2"; version = "124.0b5";
applicationName = "Mozilla Firefox Beta"; applicationName = "Mozilla Firefox Beta";
src = fetchurl { src = fetchurl {
url = "mirror://mozilla/firefox/releases/${version}/source/firefox-${version}.source.tar.xz"; url = "mirror://mozilla/firefox/releases/${version}/source/firefox-${version}.source.tar.xz";
sha512 = "a98bedcf2bb6e58a20b4ab49d53db0899ed7c6589b20266522521c3db5c583807be1d536a580a1b42dd5783c0d81d95c4f42be6a157fb08a588447ca4fa21dde"; sha512 = "a232d5f8d3118ef37166ef8706ab17d4cceaf67f0b12da4780c52253eec297c79e95ab42fe15165fdda62cda045ac923a53550c3525e9fd94ea3dca586510637";
}; };
meta = { meta = {
@ -62,13 +62,13 @@
firefox-devedition = buildMozillaMach rec { firefox-devedition = buildMozillaMach rec {
pname = "firefox-devedition"; pname = "firefox-devedition";
version = "124.0b2"; version = "124.0b5";
applicationName = "Mozilla Firefox Developer Edition"; applicationName = "Mozilla Firefox Developer Edition";
requireSigning = false; requireSigning = false;
branding = "browser/branding/aurora"; branding = "browser/branding/aurora";
src = fetchurl { src = fetchurl {
url = "mirror://mozilla/devedition/releases/${version}/source/firefox-${version}.source.tar.xz"; url = "mirror://mozilla/devedition/releases/${version}/source/firefox-${version}.source.tar.xz";
sha512 = "a65a522130d95ef5ffd4ee351c79a64517abdd60a80a74e66b147f6b179613240ab2abd6eb9cd939dfe31dd5b971773e882eb234a358e9546ab0272d8ed94145"; sha512 = "bea92dcf8703dab99cc8248a0d205b8613f74efa81cbe789aa3ef863093fa78ac4e362956dfd57186954389cd87cd97bc0b077d3f80bfe5b7dd3b6435874fa98";
}; };
meta = { meta = {

View File

@ -1,20 +1,20 @@
{ {
beta = import ./browser.nix { beta = import ./browser.nix {
channel = "beta"; channel = "beta";
version = "122.0.2365.52"; version = "122.0.2365.59";
revision = "1"; revision = "1";
hash = "sha256-H8VTDyDY2Rm5z4cJruzMa1YorBAUL0pJuwhQ6cy4WfY="; hash = "sha256-hs6NHAdqji5Cg1ReGWqalFHv6wyRlyclssyc0cxM+ZU=";
}; };
dev = import ./browser.nix { dev = import ./browser.nix {
channel = "dev"; channel = "dev";
version = "123.0.2400.1"; version = "123.0.2420.6";
revision = "1"; revision = "1";
hash = "sha256-I9PT320DJgqJYNwB0pvngyLlV+N2jaS5tOwVwwNHex0="; hash = "sha256-fX6lxhJstz2cZZODu7xRe1fez8WTXqlYNgsMhIVTLaU=";
}; };
stable = import ./browser.nix { stable = import ./browser.nix {
channel = "stable"; channel = "stable";
version = "122.0.2365.52"; version = "122.0.2365.59";
revision = "1"; revision = "1";
hash = "sha256-hULyUUFhMjiareXr1zTynyknVyert45N0H4iR8woGRw="; hash = "sha256-LbyipfA5TZWSZu1jeUykGZ2FXwt9rZ7ak7mmryXRnMQ=";
}; };
} }

View File

@ -24,7 +24,7 @@ let
vivaldiName = if isSnapshot then "vivaldi-snapshot" else "vivaldi"; vivaldiName = if isSnapshot then "vivaldi-snapshot" else "vivaldi";
in stdenv.mkDerivation rec { in stdenv.mkDerivation rec {
pname = "vivaldi"; pname = "vivaldi";
version = "6.5.3206.55"; version = "6.5.3206.63";
suffix = { suffix = {
aarch64-linux = "arm64"; aarch64-linux = "arm64";
@ -34,8 +34,8 @@ in stdenv.mkDerivation rec {
src = fetchurl { src = fetchurl {
url = "https://downloads.vivaldi.com/${branch}/vivaldi-${branch}_${version}-1_${suffix}.deb"; url = "https://downloads.vivaldi.com/${branch}/vivaldi-${branch}_${version}-1_${suffix}.deb";
hash = { hash = {
aarch64-linux = "sha256-lr+9+w1vRZSG/2dP5K3mcKLCQijckPdkM/I2DgjO4wg="; aarch64-linux = "sha256-MyKTihImCd1/4UwnC/GqyeQcYnJNvKW5UfIIRN45r8E=";
x86_64-linux = "sha256-ElkuuaZfK8F6CVA5xbKszkbqdcPACFR+xd0pRxnd6+U="; x86_64-linux = "sha256-RbGoOKQyAaNY+y+jCT+r7GI9vymTT9kPDrwl9/bhaNw=";
}.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}"); }.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
}; };

View File

@ -8,13 +8,13 @@
buildGoModule rec { buildGoModule rec {
pname = "bosh-cli"; pname = "bosh-cli";
version = "7.5.2"; version = "7.5.4";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "cloudfoundry"; owner = "cloudfoundry";
repo = pname; repo = pname;
rev = "v${version}"; rev = "v${version}";
sha256 = "sha256-gT0Oivo5QE+pr5PpD/7JAj8oYF9UmSi5F6Ps8RtACzc="; sha256 = "sha256-aNzKp7QwyhC/ado0NrCyxrRZu+ePGBNSq31/Iw6k6n0=";
}; };
vendorHash = null; vendorHash = null;

View File

@ -2,13 +2,13 @@
buildGoModule rec { buildGoModule rec {
pname = "popeye"; pname = "popeye";
version = "0.20.3"; version = "0.20.4";
src = fetchFromGitHub { src = fetchFromGitHub {
rev = "v${version}"; rev = "v${version}";
owner = "derailed"; owner = "derailed";
repo = "popeye"; repo = "popeye";
sha256 = "sha256-Iq33TEl6yCw4e6LeOsXcaMGRmOJqq9XV4KChEArDL6Q="; sha256 = "sha256-rUG2tZokWXWVvGiyDAxVYfVwSDInaLptBCBuawtP1bc=";
}; };
ldflags = [ ldflags = [

View File

@ -2,7 +2,7 @@
callPackage ./generic.nix {} rec { callPackage ./generic.nix {} rec {
pname = "signal-desktop"; pname = "signal-desktop";
dir = "Signal"; dir = "Signal";
version = "6.48.1"; version = "7.0.0";
url = "https://updates.signal.org/desktop/apt/pool/s/signal-desktop/signal-desktop_${version}_amd64.deb"; url = "https://updates.signal.org/desktop/apt/pool/s/signal-desktop/signal-desktop_${version}_amd64.deb";
hash = "sha256-3FJdgWmpfHAy5Hd97bH1DAbXYLsabom22tUKNK2bF2c="; hash = "sha256-xwKisiOE2g+pg1P9mX6AlwYU1JWXIWSSygwauoU05E8=";
} }

View File

@ -1,39 +1,40 @@
{ lib { lib
, stdenv , stdenv
, buildPythonApplication , buildPythonApplication
, substituteAll , cepa
, fetchFromGitHub
, isPy3k
, colorama , colorama
, fetchFromGitHub
, flask , flask
, flask-compress
, flask-httpauth , flask-httpauth
, flask-socketio , flask-socketio
, gevent-socketio , gevent-socketio
, gevent-websocket , gevent-websocket
, cepa , obfs4
, psutil , psutil
, pyqt5
, pycrypto , pycrypto
, pynacl , pynacl
, pyside2 , pyqt5
, pyside6
, pysocks , pysocks
, pytestCheckHook , pytestCheckHook
, qrcode , qrcode
, qt5 , qt5
, requests , requests
, unidecode
, tor
, obfs4
, snowflake , snowflake
, substituteAll
, tor
, unidecode
, waitress
}: }:
let let
version = "2.6"; version = "2.6.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "onionshare"; owner = "onionshare";
repo = "onionshare"; repo = "onionshare";
rev = "v${version}"; rev = "v${version}";
sha256 = "sha256-LA7XlzoCXUiG/9subTddAd22336wO9sOHCIBlQK4Ga4="; sha256 = "sha256-LR3Ao4Q8kEDwrFV+gYdMSEeYF4hDtEa1rJgvRRrJMwc=";
}; };
meta = with lib; { meta = with lib; {
description = "Securely and anonymously send and receive files"; description = "Securely and anonymously send and receive files";
@ -79,23 +80,27 @@ rec {
}) })
]; ];
propagatedBuildInputs = [ propagatedBuildInputs = [
cepa
colorama colorama
flask flask
flask-compress
flask-httpauth flask-httpauth
flask-socketio flask-socketio
gevent-socketio gevent-socketio
gevent-websocket gevent-websocket
cepa
psutil psutil
pycrypto pycrypto
pynacl pynacl
pyside6
qrcode
requests requests
unidecode unidecode
waitress
]; ];
buildInputs = [ buildInputs = [
tor
obfs4 obfs4
tor
]; ];
nativeCheckInputs = [ nativeCheckInputs = [
@ -107,9 +112,11 @@ rec {
export HOME="$(mktemp -d)" export HOME="$(mktemp -d)"
''; '';
disabledTests = [ disabledTests = lib.optionals stdenv.isLinux [
"test_get_tor_paths_linux" # expects /usr instead of /nix/store "test_get_tor_paths_linux" # expects /usr instead of /nix/store
] ++ lib.optionals stdenv.isDarwin [ ] ++ lib.optionals stdenv.isDarwin [
# requires meek-client which is not packaged
"test_get_tor_paths_darwin"
# on darwin (and only on darwin) onionshare attempts to discover # on darwin (and only on darwin) onionshare attempts to discover
# user's *real* homedir via /etc/passwd, making it more painful # user's *real* homedir via /etc/passwd, making it more painful
# to fake # to fake
@ -128,16 +135,15 @@ rec {
inherit tor meek obfs4 snowflake; inherit tor meek obfs4 snowflake;
inherit (tor) geoip; inherit (tor) geoip;
}) })
./fix-qrcode-gui.patch
]; ];
propagatedBuildInputs = [ propagatedBuildInputs = [
onionshare onionshare
pyqt5
pyside2
psutil psutil
qrcode pyqt5
pyside6
pysocks pysocks
qrcode
]; ];
nativeBuildInputs = [ qt5.wrapQtAppsHook ]; nativeBuildInputs = [ qt5.wrapQtAppsHook ];

View File

@ -1,14 +0,0 @@
diff --git desktop/onionshare/widgets.py desktop/onionshare/widgets.py
index 64a07703..bca974fb 100644
--- desktop/onionshare/widgets.py
+++ desktop/onionshare/widgets.py
@@ -101,7 +101,7 @@ class Image(qrcode.image.base.BaseImage):
A custom Image class, for use with the QR Code pixmap.
"""
- def __init__(self, border, width, box_size):
+ def __init__(self, border, width, box_size, *args, **kargs):
self.border = border
self.width = width
self.box_size = box_size

View File

@ -1,12 +1,12 @@
{ lib, stdenv, fetchFromGitHub, fetchYarnDeps, mkYarnPackage, nixosTests, writeText, python3 }: { lib, stdenv, fetchFromGitHub, fetchYarnDeps, mkYarnPackage, nixosTests, writeText, python3 }:
let let
version = "0.4.1"; version = "0.4.2";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "PowerDNS-Admin"; owner = "PowerDNS-Admin";
repo = "PowerDNS-Admin"; repo = "PowerDNS-Admin";
rev = "v${version}"; rev = "v${version}";
hash = "sha256-AwqEcAPD1SF1Ma3wtH03mXlTywM0Q19hciCmTtlr3gk="; hash = "sha256-q9mt8wjSNFb452Xsg+qhNOWa03KJkYVGAeCWVSzZCyk=";
}; };
python = python3; python = python3;
@ -29,7 +29,7 @@ let
offlineCache = fetchYarnDeps { offlineCache = fetchYarnDeps {
yarnLock = "${src}/yarn.lock"; yarnLock = "${src}/yarn.lock";
hash = "sha256-3ebT19LrbYuypdJaoB3tClVVP0Fi8tHx3Xi6ge/DpA4="; hash = "sha256-rXIts+dgOuZQGyiSke1NIG7b4lFlR/Gfu3J6T3wP3aY=";
}; };
# Copied from package.json, see also # Copied from package.json, see also

View File

@ -1,6 +1,6 @@
{ lib, stdenv, buildGoModule, fetchFromGitHub, buildPackages, installShellFiles { lib, stdenv, buildGoModule, fetchFromGitHub, buildPackages, installShellFiles
, makeWrapper , makeWrapper
, enableCmount ? true, fuse, macfuse-stubs , enableCmount ? true, fuse, fuse3, macfuse-stubs
, librclone , librclone
}: }:
@ -46,12 +46,12 @@ buildGoModule rec {
ln -s $out/bin/rclone $out/bin/rclonefs ln -s $out/bin/rclone $out/bin/rclonefs
ln -s $out/bin/rclone $out/bin/mount.rclone ln -s $out/bin/rclone $out/bin/mount.rclone
'' + lib.optionalString (enableCmount && !stdenv.isDarwin) '' + lib.optionalString (enableCmount && !stdenv.isDarwin)
# use --suffix here to ensure we don't shadow /run/wrappers/bin/fusermount, # use --suffix here to ensure we don't shadow /run/wrappers/bin/fusermount3,
# as the setuid wrapper is required as non-root on NixOS. # as the setuid wrapper is required as non-root on NixOS.
'' ''
wrapProgram $out/bin/rclone \ wrapProgram $out/bin/rclone \
--suffix PATH : "${lib.makeBinPath [ fuse ] }" \ --suffix PATH : "${lib.makeBinPath [ fuse3 ] }" \
--prefix LD_LIBRARY_PATH : "${fuse}/lib" --prefix LD_LIBRARY_PATH : "${fuse3}/lib"
''; '';
passthru.tests = { passthru.tests = {

View File

@ -1,123 +0,0 @@
{ lib, stdenv, fetchurl, patchelf, coreutils, pcsclite
, zlib, glib, gdk-pixbuf, gtk2, cairo, pango, libX11, atk, openssl
, runtimeShell }:
let
libPath = lib.makeLibraryPath [
stdenv.cc.cc zlib glib gdk-pixbuf gtk2 cairo pango libX11 atk openssl
];
src_i686 = {
url = "http://www.matrica.com/download/distribution/moneyplex_16_install32_22424.tar.gz";
sha256 = "0yfpc6s85r08g796dycl378kagkma865vp7j72npia3hjc4vwamr";
};
src_x86_64 = {
url = "http://www.matrica.com/download/distribution/moneyplex_16_install64_22424.tar.gz";
sha256 = "03vxbg1yp8qyvcn6bw2a5s134nxzq9cn0vqbmlld7hh4knbsfqzw";
};
in
stdenv.mkDerivation {
pname = "moneyplex";
version = "16.0.22424";
src = fetchurl (if stdenv.hostPlatform.system == "i686-linux" then src_i686
else if stdenv.hostPlatform.system == "x86_64-linux" then src_x86_64
else throw "moneyplex requires i686-linux or x86_64-linux");
phases = [ "unpackPhase" "installPhase" "postInstall" ];
buildInputs = [ ];
installPhase =
''
mkdir -p "$out/opt/moneyplex"
cp -r . $out/opt/moneyplex
mkdir "$out/bin"
cat > $out/bin/moneyplex <<EOF
#!${runtimeShell}
if [ -z "\$XDG_DATA_HOME" ]; then
MDIR=\$HOME/.local/share/moneyplex
else
MDIR=\$XDG_DATA_HOME/moneyplex
fi
if [ ! -d "\$MDIR" ]; then
${coreutils}/bin/mkdir -p \$MDIR
${coreutils}/bin/cp -r $out/opt/moneyplex/* \$MDIR
${coreutils}/bin/chmod 0644 \$MDIR/*
${coreutils}/bin/chmod 0755 \$MDIR/system
${coreutils}/bin/chmod 0644 \$MDIR/system/*
${coreutils}/bin/chmod 0755 \$MDIR/reports
${coreutils}/bin/chmod 0644 \$MDIR/reports/*
${coreutils}/bin/chmod 0755 \$MDIR/moneyplex
${coreutils}/bin/chmod 0755 \$MDIR/prestart
${coreutils}/bin/chmod 0755 \$MDIR/mpxalarm
fi
if [ ! -d "\$MDIR/pcsc" ]; then
${coreutils}/bin/mkdir -p \$MDIR/pcsc
fi
if [ ! -e "\$MDIR/pcsc/libpcsclite.so.1" ] || [ ! \`${coreutils}/bin/readlink -f "\$MDIR/pcsc/libpcsclite.so.1"\` -ef "${lib.getLib pcsclite}/lib/libpcsclite.so.1" ]; then
${coreutils}/bin/ln -sf "${lib.getLib pcsclite}/lib/libpcsclite.so.1" "\$MDIR/pcsc/libpcsclite.so.1"
fi
if [ -e "\$MDIR/rup/rupremote.lst" ]; then
for i in \`${coreutils}/bin/cat "\$MDIR/rup/rupremote.lst"\`; do
${coreutils}/bin/mv "\$MDIR/rup/"\`${coreutils}/bin/basename \$i\` "\$MDIR/\$i"
done
rm -r "\$MDIR/rup/rupremote.lst"
fi
if [ ! -e "\$MDIR/moneyplex.patched" ] || [ "\$MDIR/moneyplex" -nt "\$MDIR/moneyplex.patched" ]; then
${coreutils}/bin/cp "\$MDIR/moneyplex" "\$MDIR/moneyplex.patched"
${coreutils}/bin/chmod 0755 "\$MDIR/moneyplex.patched"
fi
if [ ! \`${patchelf}/bin/patchelf --print-interpreter \$MDIR/moneyplex.patched\` = $(cat $NIX_CC/nix-support/dynamic-linker) ] ||
[ ! \`${patchelf}/bin/patchelf --print-rpath \$MDIR/moneyplex.patched\` = "${libPath}" ]; then
${patchelf}/bin/patchelf --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) --set-rpath "${libPath}" "\$MDIR/moneyplex.patched"
fi
exec \$MDIR/moneyplex.patched
EOF
chmod +x $out/bin/moneyplex
'';
postInstall = ''
mkdir -p $out/share/icons
cp -r $out/opt/moneyplex/system/mpx256.png $out/share/icons/moneyplex.png
mkdir -p $out/share/applications
cat > $out/share/applications/moneyplex.desktop <<EOF
[Desktop Entry]
Type=Application
Encoding=UTF-8
Name=Moneyplex
GenericName=Moneyplex online banking software
Comment=Online banking software
Icon=$out/share/icons/moneyplex.png
Exec=$out/bin/moneyplex
Terminal=false
Categories=Application;
StartupNotify=true
EOF
'';
meta = with lib; {
description = "Moneyplex online banking software";
maintainers = with maintainers; [ ];
sourceProvenance = with sourceTypes; [ binaryNativeCode ];
platforms = platforms.linux;
license = licenses.unfree;
downloadPage = "http://matrica.de/download/download.html";
};
}

View File

@ -9,13 +9,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "last"; pname = "last";
version = "1541"; version = "1542";
src = fetchFromGitLab { src = fetchFromGitLab {
owner = "mcfrith"; owner = "mcfrith";
repo = "last"; repo = "last";
rev = "refs/tags/${version}"; rev = "refs/tags/${version}";
hash = "sha256-gEesPeGY2RozoViZpBWNTXFJriKVb/r0Efw9XEXwXmM="; hash = "sha256-ZzvyyecYiBscogfN9/FnDbHg/lqb8y14n9C2KLIqhFA=";
}; };
nativeBuildInputs = [ nativeBuildInputs = [

View File

@ -11,7 +11,7 @@
python3.pkgs.buildPythonApplication rec { python3.pkgs.buildPythonApplication rec {
pname = "commitizen"; pname = "commitizen";
version = "3.15.0"; version = "3.16.0";
format = "pyproject"; format = "pyproject";
disabled = python3.pythonOlder "3.8"; disabled = python3.pythonOlder "3.8";
@ -20,7 +20,7 @@ python3.pkgs.buildPythonApplication rec {
owner = "commitizen-tools"; owner = "commitizen-tools";
repo = pname; repo = pname;
rev = "refs/tags/v${version}"; rev = "refs/tags/v${version}";
hash = "sha256-WXsEkJRis9L9heHj6SkTFFTuGmnDXPMKfr7rYy8vzcI="; hash = "sha256-vd8MtkzI7PPow0Ld0NhwbWOUWgSgecAT/DZK0ocUWCw=";
}; };
pythonRelaxDeps = [ pythonRelaxDeps = [

View File

@ -2,8 +2,7 @@
, rustPlatform , rustPlatform
, fetchFromGitHub , fetchFromGitHub
, pkg-config , pkg-config
# libgit2-sys doesn't support libgit2 1.6 yet , libgit2
, libgit2_1_5
, oniguruma , oniguruma
, zlib , zlib
, stdenv , stdenv
@ -29,7 +28,7 @@ rustPlatform.buildRustPackage rec {
]; ];
buildInputs = [ buildInputs = [
libgit2_1_5 libgit2
oniguruma oniguruma
zlib zlib
] ++ lib.optionals stdenv.isDarwin [ ] ++ lib.optionals stdenv.isDarwin [
@ -54,7 +53,10 @@ rustPlatform.buildRustPackage rec {
git config --global user.email nixbld@example.com git config --global user.email nixbld@example.com
''; '';
RUSTONIG_SYSTEM_LIBONIG = true; env = {
LIBGIT2_NO_VENDOR = 1;
RUSTONIG_SYSTEM_LIBONIG = true;
};
meta = with lib; { meta = with lib; {
description = "Dive into a file's history to find root cause"; description = "Dive into a file's history to find root cause";

View File

@ -2,7 +2,7 @@
, rustPlatform , rustPlatform
, fetchFromGitHub , fetchFromGitHub
, pkg-config , pkg-config
, libgit2_1_5 , libgit2
, openssl , openssl
, zlib , zlib
, stdenv , stdenv
@ -28,13 +28,17 @@ rustPlatform.buildRustPackage {
nativeBuildInputs = [ pkg-config ]; nativeBuildInputs = [ pkg-config ];
buildInputs = [ buildInputs = [
libgit2_1_5 libgit2
openssl openssl
zlib zlib
] ++ lib.optionals stdenv.isDarwin [ ] ++ lib.optionals stdenv.isDarwin [
darwin.apple_sdk.frameworks.AppKit darwin.apple_sdk.frameworks.AppKit
]; ];
env = {
LIBGIT2_NO_VENDOR = 1;
};
meta = with lib; { meta = with lib; {
description = "Minimalist set of hooks to aid pairing and link commits to issues"; description = "Minimalist set of hooks to aid pairing and link commits to issues";
homepage = "https://github.com/PurpleBooth/git-mit"; homepage = "https://github.com/PurpleBooth/git-mit";

View File

@ -9,9 +9,14 @@
, SystemConfiguration , SystemConfiguration
, curl , curl
, openssl , openssl
, buildPackages
, installShellFiles
}: }:
rustPlatform.buildRustPackage rec { let
canRunCmd = stdenv.hostPlatform.emulatorAvailable buildPackages;
gix = "${stdenv.hostPlatform.emulator buildPackages} $out/bin/gix";
in rustPlatform.buildRustPackage rec {
pname = "gitoxide"; pname = "gitoxide";
version = "0.33.0"; version = "0.33.0";
@ -24,12 +29,19 @@ rustPlatform.buildRustPackage rec {
cargoHash = "sha256-JOl/hhyuc6vqeK6/oXXMB3fGRapBsuOTaUG+BQ9QSnk="; cargoHash = "sha256-JOl/hhyuc6vqeK6/oXXMB3fGRapBsuOTaUG+BQ9QSnk=";
nativeBuildInputs = [ cmake pkg-config ]; nativeBuildInputs = [ cmake pkg-config installShellFiles ];
buildInputs = [ curl ] ++ (if stdenv.isDarwin buildInputs = [ curl ] ++ (if stdenv.isDarwin
then [ libiconv Security SystemConfiguration ] then [ libiconv Security SystemConfiguration ]
else [ openssl ]); else [ openssl ]);
preFixup = lib.optionalString canRunCmd ''
installShellCompletion --cmd gix \
--bash <(${gix} completions --shell bash) \
--fish <(${gix} completions --shell fish) \
--zsh <(${gix} completions --shell zsh)
'';
# Needed to get openssl-sys to use pkg-config. # Needed to get openssl-sys to use pkg-config.
env.OPENSSL_NO_VENDOR = 1; env.OPENSSL_NO_VENDOR = 1;

View File

@ -2,13 +2,13 @@
buildLua rec { buildLua rec {
pname = "mpv-playlistmanager"; pname = "mpv-playlistmanager";
version = "unstable-2023-11-28"; version = "unstable-2024-02-26";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "jonniek"; owner = "jonniek";
repo = "mpv-playlistmanager"; repo = "mpv-playlistmanager";
rev = "579490c7ae1becc129736b7632deec4f3fb90b99"; rev = "1911dc053951169c98cfcfd9f44ef87d9122ca80";
hash = "sha256-swOtoB8UV/HPTpQRGXswAfUYsyC2Nj/QRIkGP8X1jk0="; hash = "sha256-pcdOMhkivLF5B86aNuHrqj77DuYLAFGlwFwY7jxkDkE=";
}; };
passthru.updateScript = unstableGitUpdater {}; passthru.updateScript = unstableGitUpdater {};

View File

@ -64,6 +64,8 @@ let
# https://github.com/NixOS/nix/blob/9348f9291e5d9e4ba3c4347ea1b235640f54fd79/src/libutil/util.cc#L478 # https://github.com/NixOS/nix/blob/9348f9291e5d9e4ba3c4347ea1b235640f54fd79/src/libutil/util.cc#L478
export USER=nobody export USER=nobody
${buildPackages.nix}/bin/nix-store --load-db < ${closureInfo {rootPaths = contentsList;}}/registration ${buildPackages.nix}/bin/nix-store --load-db < ${closureInfo {rootPaths = contentsList;}}/registration
# Reset registration times to make the image reproducible
${buildPackages.sqlite}/bin/sqlite3 nix/var/nix/db/db.sqlite "UPDATE ValidPaths SET registrationTime = ''${SOURCE_DATE_EPOCH}"
mkdir -p nix/var/nix/gcroots/docker/ mkdir -p nix/var/nix/gcroots/docker/
for i in ${lib.concatStringsSep " " contentsList}; do for i in ${lib.concatStringsSep " " contentsList}; do

View File

@ -904,22 +904,23 @@ rec {
else throw "applyPatches: please supply a `name` argument because a default name can only be computed when the `src` is a path or is an attribute set with a `name` attribute." else throw "applyPatches: please supply a `name` argument because a default name can only be computed when the `src` is a path or is an attribute set with a `name` attribute."
) + "-patched" ) + "-patched"
, patches ? [ ] , patches ? [ ]
, prePatch ? ""
, postPatch ? "" , postPatch ? ""
, ... , ...
}@args: }@args:
if patches == [ ] && postPatch == "" if patches == [ ] && prePatch == "" && postPatch == ""
then src # nothing to do, so use original src to avoid additional drv then src # nothing to do, so use original src to avoid additional drv
else stdenvNoCC.mkDerivation else stdenvNoCC.mkDerivation
{ ({
inherit name src patches postPatch; inherit name src patches prePatch postPatch;
preferLocalBuild = true; preferLocalBuild = true;
allowSubstitutes = false; allowSubstitutes = false;
phases = "unpackPhase patchPhase installPhase"; phases = "unpackPhase patchPhase installPhase";
installPhase = "cp -R ./ $out"; installPhase = "cp -R ./ $out";
} }
# Carry `meta` information from the underlying `src` if present. # Carry `meta` information from the underlying `src` if present.
// (optionalAttrs (src?meta) { inherit (src) meta; }) // (optionalAttrs (src?meta) { inherit (src) meta; })
// (removeAttrs args [ "src" "name" "patches" "postPatch" ]); // (removeAttrs args [ "src" "name" "patches" "prePatch" "postPatch" ]));
/* An immutable file in the store with a length of 0 bytes. */ /* An immutable file in the store with a length of 0 bytes. */
emptyFile = runCommand "empty-file" emptyFile = runCommand "empty-file"

View File

@ -5,13 +5,13 @@
stdenvNoCC.mkDerivation rec { stdenvNoCC.mkDerivation rec {
pname = "bemoji"; pname = "bemoji";
version = "0.3.0"; version = "0.4.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "marty-oehme"; owner = "marty-oehme";
repo = "bemoji"; repo = "bemoji";
rev = "refs/tags/v${version}"; rev = "refs/tags/v${version}";
hash = "sha256-DhsJX5HlyTh0QLlHy1OwyaYg4vxWpBSsF71D9fxqPWE="; hash = "sha256-HXwho0vRI9ZrUuDMicMH4ZNExY+zJfbrne2LMQmmHww=";
}; };
strictDeps = true; strictDeps = true;

View File

@ -2,13 +2,13 @@
let let
pname = "chrysalis"; pname = "chrysalis";
version = "0.13.2"; version = "0.13.3";
name = "${pname}-${version}-binary"; name = "${pname}-${version}-binary";
src = fetchurl { src = fetchurl {
url = url =
"https://github.com/keyboardio/${pname}/releases/download/v${version}/${pname}-${version}-x64.AppImage"; "https://github.com/keyboardio/${pname}/releases/download/v${version}/${pname}-${version}-x64.AppImage";
hash = hash =
"sha512-WuItdQ/hDxbZZ3zulHI74NUkuYfesV/31rA1gPakCFgX2hpPrmKzwUez2vqt4N5qrGyphrR0bcelUatGZhOn5A=="; "sha512-F6Y87rgIclj1OA3gVX/gqqp9AvXKQlBXrbqk/26F1KHPF9NzHJgVmeszSo3Nhb6xg4CzWmzkqc8IW2H/Bg57kw==";
}; };
appimageContents = appimageTools.extract { inherit name src; }; appimageContents = appimageTools.extract { inherit name src; };
in appimageTools.wrapType2 rec { in appimageTools.wrapType2 rec {
@ -38,11 +38,13 @@ in appimageTools.wrapType2 rec {
install -Dm444 ${appimageContents}/usr/share/icons/hicolor/256x256/chrysalis.png -t $out/share/pixmaps install -Dm444 ${appimageContents}/usr/share/icons/hicolor/256x256/chrysalis.png -t $out/share/pixmaps
''; '';
passthru.updateScript = ./update.sh;
meta = with lib; { meta = with lib; {
description = "A graphical configurator for Kaleidoscope-powered keyboards"; description = "A graphical configurator for Kaleidoscope-powered keyboards";
homepage = "https://github.com/keyboardio/Chrysalis"; homepage = "https://github.com/keyboardio/Chrysalis";
license = licenses.gpl3Only; license = licenses.gpl3Only;
maintainers = with maintainers; [ aw ]; maintainers = with maintainers; [ aw eclairevoyant nshalman ];
platforms = [ "x86_64-linux" ]; platforms = [ "x86_64-linux" ];
mainProgram = "chrysalis"; mainProgram = "chrysalis";
}; };

View File

@ -0,0 +1,16 @@
#! /usr/bin/env nix-shell
#! nix-shell -i bash --pure -p curl cacert jq
set -euo pipefail
cd "$(dirname "${BASH_SOURCE[0]}")"
DRV_DIR="$PWD"
relinfo=$(curl -sL 'https://api.github.com/repos/keyboardio/chrysalis/releases' | jq 'map(select(.prerelease == false)) | max_by(.tag_name)')
newver=$(echo "$relinfo" | jq --raw-output '.tag_name' | sed 's|^v||')
hashurl=$(echo "$relinfo" | jq --raw-output '.assets[] | select(.name == "latest-linux.yml").browser_download_url')
newhash=$(curl -sL "$hashurl" | grep -Po '^sha512: \K.*')
sed -i package.nix \
-e "/^ version =/ s|\".*\"|\"$newver\"|" \
-e "/sha512-/ s|\".*\"|\"sha512-$newhash\"|" \

View File

@ -1,8 +1,7 @@
{ lib { lib
, stdenv
, fetchFromGitHub
, curl , curl
, duktape , duktape
, fetchFromGitHub
, html-tidy , html-tidy
, openssl , openssl
, pcre , pcre
@ -10,24 +9,45 @@
, pkg-config , pkg-config
, quickjs , quickjs
, readline , readline
, stdenv
, unixODBC
, which , which
, withODBC ? true
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation (finalAttrs: {
pname = "edbrowse"; pname = "edbrowse";
version = "3.8.0"; version = "3.8.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "CMB"; owner = "CMB";
repo = pname; repo = "edbrowse";
rev = "v${version}"; rev = "v${finalAttrs.version}";
hash = "sha256-ZXxzQBAmu7kM3sjqg/rDLBXNucO8sFRFKXV8UxQVQZU="; hash = "sha256-ZXxzQBAmu7kM3sjqg/rDLBXNucO8sFRFKXV8UxQVQZU=";
}; };
sourceRoot = "${finalAttrs.src.name}/src";
patches = [
# Fixes some small annoyances on src/makefile
./0001-small-fixes.patch
];
patchFlags = [
"-p2"
];
postPatch = ''
for file in $(find ./tools/ -type f ! -name '*.c'); do
patchShebangs $file
done
'';
nativeBuildInputs = [ nativeBuildInputs = [
pkg-config pkg-config
which which
]; ];
buildInputs = [ buildInputs = [
curl curl
duktape duktape
@ -37,27 +57,23 @@ stdenv.mkDerivation rec {
perl perl
quickjs quickjs
readline readline
] ++ lib.optionals withODBC [
unixODBC
]; ];
patches = [
# Fixes some small annoyances on src/makefile
./0001-small-fixes.patch
];
postPatch = ''
substituteInPlace src/makefile --replace\
'-L/usr/local/lib/quickjs' '-L${quickjs}/lib/quickjs'
for i in $(find ./tools/ -type f ! -name '*.c'); do
patchShebangs $i
done
'';
makeFlags = [ makeFlags = [
"-C" "src"
"PREFIX=${placeholder "out"}" "PREFIX=${placeholder "out"}"
]; ];
meta = with lib; { preBuild = ''
buildFlagsArray+=(
BUILD_EDBR_ODBC=${if withODBC then "on" else "off"}
EBDEMIN=on
QUICKJS_LDFLAGS="-L${quickjs}/lib/quickjs -lquickjs -ldl -latomic"
)
'';
meta = {
homepage = "https://edbrowse.org/"; homepage = "https://edbrowse.org/";
description = "Command Line Editor Browser"; description = "Command Line Editor Browser";
longDescription = '' longDescription = ''
@ -71,10 +87,14 @@ stdenv.mkDerivation rec {
send email, with no human intervention whatsoever. edbrowse can also tap send email, with no human intervention whatsoever. edbrowse can also tap
into databases through odbc. It was primarily written by Karl Dahlke. into databases through odbc. It was primarily written by Karl Dahlke.
''; '';
license = licenses.gpl1Plus; license = with lib.licenses; [ gpl1Plus ];
maintainers = with maintainers; [ schmitthenner vrthra equirosa ];
platforms = platforms.linux;
mainProgram = "edbrowse"; mainProgram = "edbrowse";
maintainers = with lib.maintainers; [
schmitthenner
equirosa
AndersonTorres
];
platforms = lib.platforms.linux;
}; };
} })
# TODO: send the patch to upstream developers # TODO: send the patch to upstream developers

View File

@ -1,34 +1,37 @@
{ lib { lib
, stdenv , emacs
, espeak-ng
, fetchFromGitHub , fetchFromGitHub
, makeWrapper , makeWrapper
, emacs , stdenv
, tcl , tcl
, tclx , tclx
, espeak-ng
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation (finalAttrs: {
pname = "emacspeak"; pname = "emacspeak";
version = "58.0"; version = "59.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "tvraman"; owner = "tvraman";
repo = pname; repo = "emacspeak";
rev = version; rev = finalAttrs.version;
hash= "sha256-5pWC17nvy3ZuG0bR//LqDVpKsH5hFSFf63Q33a1BfBk="; hash = "sha256-npS/wlqI7nBde/2S/rzp79jdfYXIIhgsVs5VizxEDAQ=";
}; };
nativeBuildInputs = [ nativeBuildInputs = [
emacs emacs
makeWrapper makeWrapper
]; ];
buildInputs = [ buildInputs = [
espeak-ng espeak-ng
tcl tcl
tclx tclx
]; ];
strictDeps = true;
preConfigure = '' preConfigure = ''
make config make config
''; '';
@ -44,17 +47,21 @@ stdenv.mkDerivation rec {
cp -a . "$d" cp -a . "$d"
find "$d" \( -type d -or \( -type f -executable \) \) -execdir chmod 755 {} + find "$d" \( -type d -or \( -type f -executable \) \) -execdir chmod 755 {} +
find "$d" -type f -not -executable -execdir chmod 644 {} + find "$d" -type f -not -executable -execdir chmod 644 {} +
makeWrapper ${emacs}/bin/emacs $out/bin/emacspeak \ makeWrapper ${lib.getExe emacs} $out/bin/emacspeak \
--set DTK_PROGRAM "${placeholder "out"}/share/emacs/site-lisp/emacspeak/servers/espeak" \ --set DTK_PROGRAM "${placeholder "out"}/share/emacs/site-lisp/emacspeak/servers/espeak" \
--set TCLLIBPATH "${tclx}/lib" \ --set TCLLIBPATH "${tclx}/lib" \
--add-flags '-l "${placeholder "out"}/share/emacs/site-lisp/emacspeak/lisp/emacspeak-setup.elc"' --add-flags '-l "${placeholder "out"}/share/emacs/site-lisp/emacspeak/lisp/emacspeak-setup.elc"'
''; '';
meta = with lib; { meta = {
homepage = "https://github.com/tvraman/emacspeak/"; homepage = "https://github.com/tvraman/emacspeak/";
description = "Emacs extension that provides spoken output"; description = "Emacs extension that provides spoken output";
license = licenses.gpl2Plus; changelog = "https://github.com/tvraman/emacspeak/blob/${finalAttrs.src.rev}/etc/NEWS";
maintainers = [ maintainers.AndersonTorres ]; license = with lib.licenses; [ gpl2Plus ];
platforms = platforms.linux; mainProgram = "emacspeak";
maintainers = with lib.maintainers; [ AndersonTorres ];
platforms = lib.platforms.linux;
# Emacspeak requires a minimal Emacs version; let's use the broken flag
broken = lib.versionOlder (lib.getVersion emacs) "29.1";
}; };
} })

View File

@ -17,16 +17,16 @@
rustPlatform.buildRustPackage rec { rustPlatform.buildRustPackage rec {
pname = "eza"; pname = "eza";
version = "0.18.4"; version = "0.18.5";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "eza-community"; owner = "eza-community";
repo = "eza"; repo = "eza";
rev = "v${version}"; rev = "v${version}";
hash = "sha256-G8Ow38vNSMMYINYhGp33rls5AV4EFZDEJhkNn5H64LA="; hash = "sha256-L0FF9pN4WGCFpg2MPAvrKC/DwyWK6BWGxwYEpQBl9Rw=";
}; };
cargoHash = "sha256-A/EIkWSdMqSdrnjMTfIdg0scSBK/xsI5PPsOn+cRogA="; cargoHash = "sha256-bZ2NzFpB9vpT0mB2LsETdmtzYAwNrpzBRoqmm4+13+0=";
nativeBuildInputs = [ cmake pkg-config installShellFiles pandoc ]; nativeBuildInputs = [ cmake pkg-config installShellFiles pandoc ];
buildInputs = [ zlib ] buildInputs = [ zlib ]

View File

@ -1,21 +1,25 @@
{ lib { lib
, python3Packages
, fetchFromGitHub , fetchFromGitHub
, python3
}: }:
python3Packages.buildPythonApplication rec { python3.pkgs.buildPythonApplication rec {
pname = "ffsubsync"; pname = "ffsubsync";
version = "0.4.25"; version = "0.4.25";
format = "pyproject"; pyproject = true;
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "smacke"; owner = "smacke";
repo = "ffsubsync"; repo = "ffsubsync";
rev = version; rev = "refs/tags/${version}";
hash = "sha256-ZdKZeKfAUe/FXLOur9Btb5RgXewmy3EHunQphqlxpIc="; hash = "sha256-ZdKZeKfAUe/FXLOur9Btb5RgXewmy3EHunQphqlxpIc=";
}; };
propagatedBuildInputs = with python3Packages; [ nativeBuildInputs = with python3.pkgs; [
setuptools
];
propagatedBuildInputs = with python3.pkgs; [
auditok auditok
charset-normalizer charset-normalizer
faust-cchardet faust-cchardet
@ -32,9 +36,13 @@ python3Packages.buildPythonApplication rec {
webrtcvad webrtcvad
]; ];
nativeCheckInputs = with python3Packages; [ pytestCheckHook ]; nativeCheckInputs = with python3.pkgs; [
pytestCheckHook
];
pythonImportsCheck = [ "ffsubsync" ]; pythonImportsCheck = [
"ffsubsync"
];
meta = with lib; { meta = with lib; {
homepage = "https://github.com/smacke/ffsubsync"; homepage = "https://github.com/smacke/ffsubsync";

View File

@ -6,13 +6,13 @@
}: }:
buildGoModule rec { buildGoModule rec {
pname = "flottbot"; pname = "flottbot";
version = "0.13.0"; version = "0.13.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "target"; owner = "target";
repo = "flottbot"; repo = "flottbot";
rev = version; rev = version;
hash = "sha256-ldWE5QcLHyIqap5Qe6OTTIJZ1sshI+CVoJoRUxWHfxM="; hash = "sha256-Fv4ZBCQA7gwt11ULIiyFwn+QgoMNgu+1TM9yy2Jz7og=";
}; };
patches = [ patches = [
@ -24,7 +24,7 @@ buildGoModule rec {
}) })
]; ];
vendorHash = "sha256-XRcTp3ZnoPupzI1kjoM4oF5+VlNJFV0Bu+WAwfRWl7g="; vendorHash = "sha256-wOUQKFd2Xm/2rvLw8kw8Ejbcq/JUvup/BzZs0fllBYY=";
subPackages = [ "cmd/flottbot" ]; subPackages = [ "cmd/flottbot" ];

View File

@ -0,0 +1,31 @@
{ lib
, buildGoModule
, fetchFromGitHub
, stdenv
}:
let
finalAttrs = {
pname = "fm";
version = "0.16.0";
src = fetchFromGitHub {
owner = "mistakenelf";
repo = "fm";
rev = "v${finalAttrs.version}";
hash = "sha256-wiACaszbkO9jBYmIfeQpcx984RY41Emyu911nkJxUFY=";
};
vendorHash = "sha256-AfRGoKiVZGVIbsDj5pV1zCkp2FpcfWKS0t+cTU51RRc=";
meta = {
homepage = "https://github.com/mistakenelf/fm";
description = "A terminal based file manager";
changelog = "https://github.com/mistakenelf/fm/releases/tag/${finalAttrs.src.rev}";
license = with lib.licenses; [ mit ];
mainProgram = "fm";
maintainers = with lib.maintainers; [ AndersonTorres ];
};
};
in
buildGoModule finalAttrs

View File

@ -120,7 +120,7 @@ let
in in
stdenv.mkDerivation (finalAttrs: { stdenv.mkDerivation (finalAttrs: {
pname = "fwupd"; pname = "fwupd";
version = "1.9.13"; version = "1.9.14";
# libfwupd goes to lib # libfwupd goes to lib
# daemon, plug-ins and libfwupdplugin go to out # daemon, plug-ins and libfwupdplugin go to out
@ -131,7 +131,7 @@ stdenv.mkDerivation (finalAttrs: {
owner = "fwupd"; owner = "fwupd";
repo = "fwupd"; repo = "fwupd";
rev = finalAttrs.version; rev = finalAttrs.version;
hash = "sha256-h2e9MFTb777xbNRlzKWXc5GUdu/BHSkJTaogEE5byjo="; hash = "sha256-pG4pRksHw8p8rz99UnLURP+ROE+P+ySt4IlfmyRc1CQ=";
}; };
patches = [ patches = [

View File

@ -0,0 +1,29 @@
{ lib
, buildGoModule
, fetchFromGitHub
}:
buildGoModule rec {
pname = "go-errorlint";
version = "1.4.5";
src = fetchFromGitHub {
owner = "polyfloyd";
repo = "go-errorlint";
rev = "v${version}";
hash = "sha256-BU+3sLUGBCFA1JYFxTEyIan+iWB7Y7SaMFVomfNObMg=";
};
vendorHash = "sha256-xn7Ou4l8vbPD44rsN0mdFjTzOvkfv6QN6i5XR1XPxTE=";
ldflags = [ "-s" "-w" ];
meta = with lib; {
description = "A source code linter that can be used to find code that will cause problems with Go's error wrapping scheme";
homepage = "https://github.com/polyfloyd/go-errorlint";
changelog = "https://github.com/polyfloyd/go-errorlint/blob/${src.rev}/CHANGELOG.md";
license = licenses.mit;
maintainers = with maintainers; [ meain ];
mainProgram = "go-errorlint";
};
}

View File

@ -1,29 +1,29 @@
{ lib { lib
, stdenvNoCC
, fetchFromGitHub
, bash , bash
, coreutils , coreutils
, fetchFromGitHub
, findutils , findutils
, gettext , gettext
, gnused , gnused
, installShellFiles
, less , less
, ncurses , ncurses
, nixos-option , nixos-option
, stdenvNoCC
, unixtools , unixtools
, installShellFiles
, unstableGitUpdater , unstableGitUpdater
}: }:
stdenvNoCC.mkDerivation (finalAttrs: { stdenvNoCC.mkDerivation (finalAttrs: {
pname = "home-manager"; pname = "home-manager";
version = "unstable-2024-02-20"; version = "0-unstable-2024-02-24";
src = fetchFromGitHub { src = fetchFromGitHub {
name = "home-manager-source"; name = "home-manager-source";
owner = "nix-community"; owner = "nix-community";
repo = "home-manager"; repo = "home-manager";
rev = "517601b37c6d495274454f63c5a483c8e3ca6be1"; rev = "4ee704cb13a5a7645436f400b9acc89a67b9c08a";
hash = "sha256-tgZ38NummEdnXvxj4D0StHBzXgceAw8CptytHljH790="; hash = "sha256-MSbxtF3RThI8ANs/G4o1zIqF5/XlShHvwjl9Ws0QAbI=";
}; };
nativeBuildInputs = [ nativeBuildInputs = [
@ -40,6 +40,21 @@ stdenvNoCC.mkDerivation (finalAttrs: {
install -D -m755 home-manager/home-manager $out/bin/home-manager install -D -m755 home-manager/home-manager $out/bin/home-manager
install -D -m755 lib/bash/home-manager.sh $out/share/bash/home-manager.sh install -D -m755 lib/bash/home-manager.sh $out/share/bash/home-manager.sh
installShellCompletion --bash --name home-manager.bash home-manager/completion.bash
installShellCompletion --fish --name home-manager.fish home-manager/completion.fish
installShellCompletion --zsh --name _home-manager home-manager/completion.zsh
for pofile in home-manager/po/*.po; do
lang="''${pofile##*/}"
lang="''${lang%%.*}"
mkdir -p "$out/share/locale/$lang/LC_MESSAGES"
msgfmt -o "$out/share/locale/$lang/LC_MESSAGES/home-manager.mo" "$pofile"
done
runHook postInstall
'';
postFixup = ''
substituteInPlace $out/bin/home-manager \ substituteInPlace $out/bin/home-manager \
--subst-var-by bash "${bash}" \ --subst-var-by bash "${bash}" \
--subst-var-by DEP_PATH "${ --subst-var-by DEP_PATH "${
@ -57,19 +72,6 @@ stdenvNoCC.mkDerivation (finalAttrs: {
--subst-var-by HOME_MANAGER_LIB '${placeholder "out"}/share/bash/home-manager.sh' \ --subst-var-by HOME_MANAGER_LIB '${placeholder "out"}/share/bash/home-manager.sh' \
--subst-var-by HOME_MANAGER_PATH "${finalAttrs.src}" \ --subst-var-by HOME_MANAGER_PATH "${finalAttrs.src}" \
--subst-var-by OUT '${placeholder "out"}' --subst-var-by OUT '${placeholder "out"}'
installShellCompletion --bash --name home-manager.bash home-manager/completion.bash
installShellCompletion --fish --name home-manager.fish home-manager/completion.fish
installShellCompletion --zsh --name _home-manager home-manager/completion.zsh
for pofile in home-manager/po/*.po; do
lang="''${pofile##*/}"
lang="''${lang%%.*}"
mkdir -p "$out/share/locale/$lang/LC_MESSAGES"
msgfmt -o "$out/share/locale/$lang/LC_MESSAGES/home-manager.mo" "$pofile"
done
runHook postInstall
''; '';
passthru.updateScript = unstableGitUpdater { passthru.updateScript = unstableGitUpdater {
@ -86,8 +88,8 @@ stdenvNoCC.mkDerivation (finalAttrs: {
(non global) packages and dotfiles. (non global) packages and dotfiles.
''; '';
license = lib.licenses.mit; license = lib.licenses.mit;
mainProgram = "home-manager";
maintainers = with lib.maintainers; [ AndersonTorres ]; maintainers = with lib.maintainers; [ AndersonTorres ];
platforms = lib.platforms.unix; platforms = lib.platforms.unix;
mainProgram = "home-manager";
}; };
}) })

View File

@ -15,12 +15,16 @@
, openclSupport ? false , openclSupport ? false
, clblast , clblast
, blasSupport ? !rocmSupport && !cudaSupport , blasSupport ? builtins.all (x: !x) [ cudaSupport metalSupport openclSupport rocmSupport vulkanSupport ]
, openblas
, pkg-config , pkg-config
, metalSupport ? stdenv.isDarwin && stdenv.isAarch64 && !openclSupport , metalSupport ? stdenv.isDarwin && stdenv.isAarch64 && !openclSupport
, patchelf , vulkanSupport ? false
, static ? true # if false will build the shared objects as well , mpiSupport ? false # Increases the runtime closure by ~700M
, vulkan-headers
, vulkan-loader
, ninja
, git
, mpi
}: }:
let let
@ -28,42 +32,18 @@ let
# otherwise we get libstdc++ errors downstream. # otherwise we get libstdc++ errors downstream.
# cuda imposes an upper bound on the gcc version, e.g. the latest gcc compatible with cudaPackages_11 is gcc11 # cuda imposes an upper bound on the gcc version, e.g. the latest gcc compatible with cudaPackages_11 is gcc11
effectiveStdenv = if cudaSupport then cudaPackages.backendStdenv else stdenv; effectiveStdenv = if cudaSupport then cudaPackages.backendStdenv else stdenv;
in inherit (lib) cmakeBool cmakeFeature optionals;
effectiveStdenv.mkDerivation (finalAttrs: {
pname = "llama-cpp";
version = "2249";
src = fetchFromGitHub { darwinBuildInputs =
owner = "ggerganov"; with darwin.apple_sdk.frameworks;
repo = "llama.cpp"; [
rev = "refs/tags/b${finalAttrs.version}";
hash = "sha256-ikJUToUbA60u/8azR6dPmPyodq/nQe5L2aotlYBclaE=";
};
postPatch = ''
substituteInPlace ./ggml-metal.m \
--replace '[bundle pathForResource:@"ggml-metal" ofType:@"metal"];' "@\"$out/bin/ggml-metal.metal\";"
'';
nativeBuildInputs = [ cmake ] ++ lib.optionals blasSupport [ pkg-config ] ++ lib.optionals cudaSupport [
cudaPackages.cuda_nvcc
# TODO: Replace with autoAddDriverRunpath
# once https://github.com/NixOS/nixpkgs/pull/275241 has been merged
cudaPackages.autoAddOpenGLRunpathHook
];
buildInputs = lib.optionals effectiveStdenv.isDarwin
(with darwin.apple_sdk.frameworks; [
Accelerate Accelerate
CoreGraphics
CoreVideo CoreVideo
Foundation CoreGraphics
]) ]
++ lib.optionals metalSupport (with darwin.apple_sdk.frameworks; [ ++ optionals metalSupport [ MetalKit ];
MetalKit
]) cudaBuildInputs = with cudaPackages; [
++ lib.optionals cudaSupport (with cudaPackages; [
cuda_cccl.dev # <nv/target> cuda_cccl.dev # <nv/target>
# A temporary hack for reducing the closure size, remove once cudaPackages # A temporary hack for reducing the closure size, remove once cudaPackages
@ -74,65 +54,93 @@ effectiveStdenv.mkDerivation (finalAttrs: {
libcublas.dev libcublas.dev
libcublas.lib libcublas.lib
libcublas.static libcublas.static
]) ++ lib.optionals rocmSupport [
rocmPackages.clr
rocmPackages.hipblas
rocmPackages.rocblas
] ++ lib.optionals openclSupport [
clblast
] ++ lib.optionals blasSupport [
openblas
]; ];
rocmBuildInputs = with rocmPackages; [
clr
hipblas
rocblas
];
vulkanBuildInputs = [
vulkan-headers
vulkan-loader
];
in
effectiveStdenv.mkDerivation (finalAttrs: {
pname = "llama-cpp";
version = "2294";
src = fetchFromGitHub {
owner = "ggerganov";
repo = "llama.cpp";
rev = "refs/tags/b${finalAttrs.version}";
hash = "sha256-uZi4Bj03PgfFV+jS5M+A1sMCWC/GMY5IyyrlR1b4Sh4=";
};
postPatch = ''
substituteInPlace ./ggml-metal.m \
--replace '[bundle pathForResource:@"ggml-metal" ofType:@"metal"];' "@\"$out/bin/ggml-metal.metal\";"
'';
nativeBuildInputs = [ cmake ninja pkg-config git ]
++ optionals cudaSupport [
cudaPackages.cuda_nvcc
# TODO: Replace with autoAddDriverRunpath
# once https://github.com/NixOS/nixpkgs/pull/275241 has been merged
cudaPackages.autoAddOpenGLRunpathHook
];
buildInputs = optionals effectiveStdenv.isDarwin darwinBuildInputs
++ optionals cudaSupport cudaBuildInputs
++ optionals mpiSupport mpi
++ optionals openclSupport [ clblast ]
++ optionals rocmSupport rocmBuildInputs
++ optionals vulkanSupport vulkanBuildInputs;
cmakeFlags = [ cmakeFlags = [
"-DLLAMA_NATIVE=OFF" # -march=native is non-deterministic; override with platform-specific flags if needed
"-DLLAMA_BUILD_SERVER=ON" (cmakeBool "LLAMA_NATIVE" false)
(cmakeBool "BUILD_SHARED_SERVER" true)
(cmakeBool "BUILD_SHARED_LIBS" true)
(cmakeBool "BUILD_SHARED_LIBS" true)
(cmakeBool "LLAMA_BLAS" blasSupport)
(cmakeBool "LLAMA_CLBLAST" openclSupport)
(cmakeBool "LLAMA_CUBLAS" cudaSupport)
(cmakeBool "LLAMA_HIPBLAS" rocmSupport)
(cmakeBool "LLAMA_METAL" metalSupport)
(cmakeBool "LLAMA_MPI" mpiSupport)
(cmakeBool "LLAMA_VULKAN" vulkanSupport)
] ]
++ lib.optionals metalSupport [ ++ optionals cudaSupport [
"-DCMAKE_C_FLAGS=-D__ARM_FEATURE_DOTPROD=1" (
"-DLLAMA_METAL=ON" with cudaPackages.flags;
] cmakeFeature "CMAKE_CUDA_ARCHITECTURES" (
++ lib.optionals cudaSupport [ builtins.concatStringsSep ";" (map dropDot cudaCapabilities)
"-DLLAMA_CUBLAS=ON" )
] )
++ lib.optionals rocmSupport [ ]
"-DLLAMA_HIPBLAS=1" ++ optionals rocmSupport [
"-DCMAKE_C_COMPILER=hipcc" (cmakeFeature "CMAKE_C_COMPILER" "hipcc")
"-DCMAKE_CXX_COMPILER=hipcc" (cmakeFeature "CMAKE_CXX_COMPILER" "hipcc")
"-DCMAKE_POSITION_INDEPENDENT_CODE=ON"
]
++ lib.optionals openclSupport [
"-DLLAMA_CLBLAST=ON"
]
++ lib.optionals blasSupport [
"-DLLAMA_BLAS=ON"
"-DLLAMA_BLAS_VENDOR=OpenBLAS"
]
++ lib.optionals (!static) [
(lib.cmakeBool "BUILD_SHARED_LIBS" true)
];
installPhase = '' # Build all targets supported by rocBLAS. When updating search for TARGET_LIST_ROCM
runHook preInstall # in https://github.com/ROCmSoftwarePlatform/rocBLAS/blob/develop/CMakeLists.txt
# and select the line that matches the current nixpkgs version of rocBLAS.
# Should likely use `rocmPackages.clr.gpuTargets`.
"-DAMDGPU_TARGETS=gfx803;gfx900;gfx906:xnack-;gfx908:xnack-;gfx90a:xnack+;gfx90a:xnack-;gfx940;gfx941;gfx942;gfx1010;gfx1012;gfx1030;gfx1100;gfx1101;gfx1102"
]
++ optionals metalSupport [ (cmakeFeature "CMAKE_C_FLAGS" "-D__ARM_FEATURE_DOTPROD=1") ]
++ optionals blasSupport [ (cmakeFeature "LLAMA_BLAS_VENDOR" "OpenBLAS") ];
mkdir -p $out/bin # upstream plans on adding targets at the cmakelevel, remove those
${lib.optionalString (!static) '' # additional steps after that
mkdir $out/lib postInstall = ''
cp libggml_shared.so $out/lib mv $out/bin/main $out/bin/llama
cp libllama.so $out/lib mv $out/bin/server $out/bin/llama-server
''} mkdir -p $out/include
cp $src/llama.h $out/include/
for f in bin/*; do
test -x "$f" || continue
${lib.optionalString (!static) ''
${patchelf}/bin/patchelf "$f" --set-rpath "$out/lib"
''}
cp "$f" $out/bin/llama-cpp-"$(basename "$f")"
done
${lib.optionalString metalSupport "cp ./bin/ggml-metal.metal $out/bin/ggml-metal.metal"}
runHook postInstall
''; '';
passthru.updateScript = nix-update-script { passthru.updateScript = nix-update-script {
@ -144,9 +152,10 @@ effectiveStdenv.mkDerivation (finalAttrs: {
description = "Port of Facebook's LLaMA model in C/C++"; description = "Port of Facebook's LLaMA model in C/C++";
homepage = "https://github.com/ggerganov/llama.cpp/"; homepage = "https://github.com/ggerganov/llama.cpp/";
license = licenses.mit; license = licenses.mit;
mainProgram = "llama-cpp-main"; mainProgram = "llama";
maintainers = with maintainers; [ dit7ya elohmeier ]; maintainers = with maintainers; [ dit7ya elohmeier philiptaron ];
broken = (effectiveStdenv.isDarwin && effectiveStdenv.isx86_64) || lib.count lib.id [openclSupport blasSupport rocmSupport cudaSupport] == 0;
platforms = platforms.unix; platforms = platforms.unix;
badPlatforms = optionals (cudaSupport || openclSupport) lib.platforms.darwin;
broken = (metalSupport && !effectiveStdenv.isDarwin);
}; };
}) })

View File

@ -0,0 +1,46 @@
{ lib, stdenv, fetchurl, mfcj880dwlpr, makeWrapper, bash }:
stdenv.mkDerivation rec {
pname = "mfcj880dw-cupswrapper";
version = "1.0.0-0";
src = fetchurl {
url = "https://download.brother.com/welcome/dlf102044/mfcj880dw_cupswrapper_GPL_source_${version}.tar.gz";
sha256 = "bf291fe31d64afeaefb5b0e606f4baf80c41d80009e34b32b77d56f759e9cf94";
};
nativeBuildInputs = [ makeWrapper ];
buildInputs = [
bash # shebang
];
makeFlags = [ "-C" "brcupsconfig" "all" ];
installPhase = ''
runHook preInstall
TARGETFOLDER=$out/opt/brother/Printers/mfcj880dw/cupswrapper
mkdir -p $TARGETFOLDER
cp PPD/brother_mfcj880dw_printer_en.ppd $TARGETFOLDER
cp brcupsconfig/brcupsconfpt1 $TARGETFOLDER
cp cupswrapper/cupswrappermfcj880dw $TARGETFOLDER
sed -i -e '26,306d' $TARGETFOLDER/cupswrappermfcj880dw
substituteInPlace $TARGETFOLDER/cupswrappermfcj880dw \
--replace-fail "\$ppd_file_name" "$TARGETFOLDER/brother_mfcj880dw_printer_en.ppd"
CPUSFILTERFOLDER=$out/lib/cups/filter
mkdir -p $TARGETFOLDER $CPUSFILTERFOLDER
ln -s ${mfcj880dwlpr}/lib/cups/filter/brother_lpdwrapper_mfcj880dw $out/lib/cups/filter/brother_lpdwrapper_mfcj880dw
runHook postInstall
'';
meta = with lib; {
homepage = "http://www.brother.com/";
description = "Brother MFC-J880DW CUPS wrapper driver";
license = with licenses; gpl2;
platforms = with platforms; linux;
downloadPage = "https://support.brother.com/g/b/downloadlist.aspx?c=us&lang=en&prod=mfcj880dw_us_eu_as&os=128";
maintainers = with maintainers; [ _6543 ];
};
}

View File

@ -0,0 +1,94 @@
{ lib, stdenv, fetchurl, pkgsi686Linux, dpkg, makeWrapper, coreutils, gnused, gawk, file, cups, util-linux, xxd, runtimeShell
, ghostscript, a2ps, bash }:
# Why:
# The executable "brprintconf_mfcj880dw" binary is looking for "/opt/brother/Printers/%s/inf/br%sfunc" and "/opt/brother/Printers/%s/inf/br%src".
# Whereby, %s is printf(3) string substitution for stdin's arg0 (the command's own filename) from the 10th char forwards, as a runtime dependency.
# e.g. Say the filename is "0123456789ABCDE", the runtime will be looking for /opt/brother/Printers/ABCDE/inf/brABCDEfunc.
# Presumably, the binary was designed to be deployed under the filename "printconf_mfcj880dw", whereby it will search for "/opt/brother/Printers/mfcj880dw/inf/brmfcj880dwfunc".
# For NixOS, we want to change the string to the store path of brmfcj880dwfunc and brmfcj880dwrc but we're faced with two complications:
# 1. Too little room to specify the nix store path. We can't even take advantage of %s by renaming the file to the store path hash since the variable is too short and can't contain the whole hash.
# 2. The binary needs the directory it's running from to be r/w.
# What:
# As such, we strip the path and substitution altogether, leaving only "brmfcj880dwfunc" and "brmfcj880dwrc", while filling the leftovers with nulls.
# Fully null terminating the cstrings is necessary to keep the array the same size and preventing overflows.
# We then use a shell script to link and execute the binary, func and rc files in a temporary directory.
# How:
# In the package, we dump the raw binary as a string of search-able hex values using hexdump. We execute the substitution with sed. We then convert the hex values back to binary form using xxd.
# We also write a shell script that invoked "mktemp -d" to produce a r/w temporary directory and link what we need in the temporary directory.
# Result:
# The user can run brprintconf_mfcj880dw in the shell.
stdenv.mkDerivation rec {
pname = "mfcj880dwlpr";
version = "1.0.0-0";
src = fetchurl {
url = "https://download.brother.com/welcome/dlf102038/mfcj880dwlpr-${version}.i386.deb";
sha256 = "1680b301f660a407fe0b69f5de59c7473d2d66dc472a1589b0cd9f51736bfea7";
};
nativeBuildInputs = [ makeWrapper ];
buildInputs = [ cups ghostscript dpkg a2ps ];
dontUnpack = true;
brprintconf_mfcj880dw_script = ''
#!${runtimeShell}
cd $(mktemp -d)
ln -s @out@/usr/bin/brprintconf_mfcj880dw_patched brprintconf_mfcj880dw_patched
ln -s @out@/opt/brother/Printers/mfcj880dw/inf/brmfcj880dwfunc brmfcj880dwfunc
ln -s @out@/opt/brother/Printers/mfcj880dw/inf/brmfcj880dwrc brmfcj880dwrc
./brprintconf_mfcj880dw_patched "$@"
'';
installPhase = ''
dpkg-deb -x $src $out
substituteInPlace $out/opt/brother/Printers/mfcj880dw/lpd/filtermfcj880dw \
--replace-fail /opt "$out/opt"
substituteInPlace $out/opt/brother/Printers/mfcj880dw/lpd/psconvertij2 \
--replace-fail "GHOST_SCRIPT=`which gs`" "GHOST_SCRIPT=${ghostscript}/bin/gs"
substituteInPlace $out/opt/brother/Printers/mfcj880dw/inf/setupPrintcapij \
--replace-fail "/opt/brother/Printers" "$out/opt/brother/Printers" \
--replace-fail "printcap.local" "printcap"
patchelf --set-interpreter ${pkgsi686Linux.stdenv.cc.libc.out}/lib/ld-linux.so.2 \
--set-rpath $out/opt/brother/Printers/mfcj880dw/inf:$out/opt/brother/Printers/mfcj880dw/lpd \
$out/opt/brother/Printers/mfcj880dw/lpd/brmfcj880dwfilter
patchelf --set-interpreter ${pkgsi686Linux.stdenv.cc.libc.out}/lib/ld-linux.so.2 $out/usr/bin/brprintconf_mfcj880dw
#stripping the hardcoded path.
# /opt/brother/Printers/%s/inf/br%sfunc -> brmfcj880dwfunc
# /opt/brother/Printers/%s/inf/br%src -> brmfcj880dwrc
${util-linux}/bin/hexdump -ve '1/1 "%.2X"' $out/usr/bin/brprintconf_mfcj880dw | \
sed 's.2F6F70742F62726F746865722F5072696E746572732F25732F696E662F6272257366756E63.62726d66636a383830647766756e6300000000000000000000000000000000000000000000.' | \
sed 's.2F6F70742F62726F746865722F5072696E746572732F25732F696E662F627225737263.62726d66636a3838306477726300000000000000000000000000000000000000000000.' | \
${xxd}/bin/xxd -r -p > $out/usr/bin/brprintconf_mfcj880dw_patched
chmod +x $out/usr/bin/brprintconf_mfcj880dw_patched
#executing from current dir. segfaults if it's not r\w.
mkdir -p $out/bin
echo -n "$brprintconf_mfcj880dw_script" > $out/bin/brprintconf_mfcj880dw
chmod +x $out/bin/brprintconf_mfcj880dw
substituteInPlace $out/bin/brprintconf_mfcj880dw --replace-fail @out@ $out
# NOTE: opt/brother/Printers/mfcj880dw/lpd/brmfcj880dwfilter also has cardcoded paths, but we can not simply replace them
mkdir -p $out/lib/cups/filter/
ln -s $out/opt/brother/Printers/mfcj880dw/lpd/filtermfcj880dw $out/lib/cups/filter/brother_lpdwrapper_mfcj880dw
wrapProgram $out/opt/brother/Printers/mfcj880dw/lpd/psconvertij2 \
--prefix PATH ":" ${ lib.makeBinPath [ coreutils gnused gawk ] }
wrapProgram $out/opt/brother/Printers/mfcj880dw/lpd/filtermfcj880dw \
--prefix PATH ":" ${ lib.makeBinPath [ coreutils gnused file ghostscript a2ps ] }
'';
meta = with lib; {
description = "Brother MFC-J880DW LPR driver";
downloadPage = "https://support.brother.com/g/b/downloadlist.aspx?c=us&lang=en&prod=mfcj880dw_us_eu_as&os=128";
homepage = "http://www.brother.com/";
sourceProvenance = with sourceTypes; [ binaryNativeCode ];
license = with licenses; unfree;
maintainers = with maintainers; [ _6543 ];
platforms = with platforms; linux;
};
}

File diff suppressed because it is too large Load Diff

View File

@ -20,19 +20,19 @@
rustPlatform.buildRustPackage rec { rustPlatform.buildRustPackage rec {
pname = "niri"; pname = "niri";
version = "0.1.1"; version = "0.1.2";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "YaLTeR"; owner = "YaLTeR";
repo = "niri"; repo = "niri";
rev = "v${version}"; rev = "v${version}";
hash = "sha256-+Y7dnq8gwVxefwvRnamqGneCTI4uUXgAo0SEffIvNB0="; hash = "sha256-vO6ak5rT6ntBC20vYC36zcEcHv7Cki9y8A+c7ThfsUg=";
}; };
cargoLock = { cargoLock = {
lockFile = ./Cargo.lock; lockFile = ./Cargo.lock;
outputHashes = { outputHashes = {
"smithay-0.3.0" = "sha256-TWq4L7Pe4/s0+hGjvTixoOFQ3P6tJXzV4/VgKcJ0tWU="; "smithay-0.3.0" = "sha256-ZEWamojE5ZRlhPVv/DK2Mj+QIz7zudw9+AxFD7Onr9Q=";
}; };
}; };
@ -64,6 +64,22 @@ rustPlatform.buildRustPackage rec {
LIBCLANG_PATH = "${libclang.lib}/lib"; LIBCLANG_PATH = "${libclang.lib}/lib";
passthru.providedSessions = ["niri"];
postInstall = ''
mkdir -p $out/share/{systemd/user,wayland-sessions,xdg-desktop-portal}
cp ./resources/niri-session $out/bin/niri-session
cp ./resources/niri.service $out/share/systemd/user/niri.service
cp ./resources/niri-shutdown.target $out/share/systemd/user/niri-shutdown.target
cp ./resources/niri.desktop $out/share/wayland-sessions/niri.desktop
cp ./resources/niri-portals.conf $out/share/xdg-desktop-portal/niri-portals.conf
'';
postFixup = ''
sed -i "s#/usr#$out#" $out/share/systemd/user/niri.service
'';
meta = with lib; { meta = with lib; {
description = "A scrollable-tiling Wayland compositor"; description = "A scrollable-tiling Wayland compositor";
homepage = "https://github.com/YaLTeR/niri"; homepage = "https://github.com/YaLTeR/niri";

View File

@ -4,7 +4,7 @@
fetchurl, fetchurl,
jdk21, jdk21,
stdenv, stdenv,
undmg _7zz
}: }:
let let
pname = "nosql-workbench"; pname = "nosql-workbench";
@ -39,30 +39,19 @@ if stdenv.isDarwin then stdenv.mkDerivation {
sourceRoot = "."; sourceRoot = ".";
nativeBuildInputs = [ _7zz ];
buildInputs = [ jdk21 ]; buildInputs = [ jdk21 ];
# DMG file is using APFS which is unsupported by "undmg". # DMG file is using APFS which is unsupported by "undmg".
# Fix found: https://discourse.nixos.org/t/help-with-error-only-hfs-file-systems-are-supported-on-ventura/25873/8 # Instead, use "7zz" to extract the contents.
# "undmg" issue: https://github.com/matthewbauer/undmg/issues/4 # "undmg" issue: https://github.com/matthewbauer/undmg/issues/4
unpackCmd = '' unpackCmd = ''
echo "Creating temp directory" runHook preUnpack
mnt=$(TMPDIR=/tmp mktemp -d -t nix-XXXXXXXXXX)
function finish { 7zz x $curSrc
echo "Ejecting temp directory"
/usr/bin/hdiutil detach $mnt -force
rm -rf $mnt
}
# Detach volume when receiving SIG "0"
trap finish EXIT
# Mount DMG file runHook postUnpack
echo "Mounting DMG file into \"$mnt\""
/usr/bin/hdiutil attach -nobrowse -mountpoint $mnt $curSrc
# Copy content to local dir for later use
echo 'Copying extracted content into "sourceRoot"'
cp -a $mnt/NoSQL\ Workbench.app $PWD/
''; '';
installPhase = '' installPhase = ''

View File

@ -6,13 +6,13 @@
python3.pkgs.buildPythonApplication rec { python3.pkgs.buildPythonApplication rec {
pname = "oelint-adv"; pname = "oelint-adv";
version = "4.4.0"; version = "4.4.1";
format = "setuptools"; format = "setuptools";
src = fetchPypi { src = fetchPypi {
inherit version; inherit version;
pname = "oelint_adv"; pname = "oelint_adv";
hash = "sha256-Sg7qn/yZUJEJdMmaGm27kyL+fKkUsZo25eExZPOem40="; hash = "sha256-Yv0GCz0vZTVrnFjHFIl4XF/jbVD4DJ4J6V6+X5IllJ8=";
}; };
propagatedBuildInputs = with python3.pkgs; [ propagatedBuildInputs = with python3.pkgs; [

View File

@ -2,13 +2,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "outils"; pname = "outils";
version = "0.10"; version = "0.13";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "leahneukirchen"; owner = "leahneukirchen";
repo = pname; repo = "outils";
rev = "v${version}"; rev = "v${version}";
sha256 = "sha256-xYjILa0Km57q/xNP+M34r29WLGC15tzUNoUgPzQTtIs="; hash = "sha256-FokJytwQsbGsryBzyglpb1Hg3wti/CPQTOfIGIz9ThA=";
}; };
makeFlags = [ "PREFIX=$(out)" ]; makeFlags = [ "PREFIX=$(out)" ];

View File

@ -2,14 +2,14 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "scitokens-cpp"; pname = "scitokens-cpp";
version = "1.1.0"; version = "1.1.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "scitokens"; owner = "scitokens";
repo = "scitokens-cpp"; repo = "scitokens-cpp";
rev = "v1.1.0"; rev = "v1.1.1";
hash = "sha256-g97Ah5Oob0iOvMQegpG/AACLZCW37kA0RpSIcKOyQnE="; hash = "sha256-G3z9DYYWCNeA/rufNHQP3SwT5WS2AvUWm1rd8lx6XxA=";
}; };
nativeBuildInputs = [ cmake pkg-config ]; nativeBuildInputs = [ cmake pkg-config ];

View File

@ -73,6 +73,7 @@ python3.pkgs.toPythonModule (python3.pkgs.buildPythonApplication rec {
homepage = "https://github.com/searxng/searxng"; homepage = "https://github.com/searxng/searxng";
description = "A fork of Searx, a privacy-respecting, hackable metasearch engine"; description = "A fork of Searx, a privacy-respecting, hackable metasearch engine";
license = licenses.agpl3Plus; license = licenses.agpl3Plus;
mainProgram = "searxng-run";
maintainers = with maintainers; [ SuperSandro2000 _999eagle ]; maintainers = with maintainers; [ SuperSandro2000 _999eagle ];
}; };
}) })

View File

@ -2,7 +2,7 @@
, meson, ninja, pkg-config, wayland-scanner, scdoc , meson, ninja, pkg-config, wayland-scanner, scdoc
, libGL, wayland, libxkbcommon, pcre2, json_c, libevdev , libGL, wayland, libxkbcommon, pcre2, json_c, libevdev
, pango, cairo, libinput, gdk-pixbuf, librsvg , pango, cairo, libinput, gdk-pixbuf, librsvg
, wlroots_0_16, wayland-protocols, libdrm , wlroots, wayland-protocols, libdrm
, nixosTests , nixosTests
# Used by the NixOS module: # Used by the NixOS module:
, isNixOS ? false , isNixOS ? false
@ -11,19 +11,16 @@
, trayEnabled ? systemdSupport , trayEnabled ? systemdSupport
}: }:
let
wlroots = wlroots_0_16;
in
stdenv.mkDerivation (finalAttrs: { stdenv.mkDerivation (finalAttrs: {
pname = "sway-unwrapped"; pname = "sway-unwrapped";
version = "1.8.1"; version = "1.9";
inherit enableXWayland isNixOS systemdSupport trayEnabled; inherit enableXWayland isNixOS systemdSupport trayEnabled;
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "swaywm"; owner = "swaywm";
repo = "sway"; repo = "sway";
rev = finalAttrs.version; rev = finalAttrs.version;
hash = "sha256-WxnT+le9vneQLFPz2KoBduOI+zfZPhn1fKlaqbPL6/g="; hash = "sha256-/6+iDkQfdLcL/pTJaqNc6QdP4SRVOYLjfOItEu/bZtg=";
}; };
patches = [ patches = [
@ -34,11 +31,6 @@ stdenv.mkDerivation (finalAttrs: {
inherit swaybg; inherit swaybg;
}) })
(fetchpatch {
name = "LIBINPUT_CONFIG_ACCEL_PROFILE_CUSTOM.patch";
url = "https://github.com/swaywm/sway/commit/dee032d0a0ecd958c902b88302dc59703d703c7f.diff";
hash = "sha256-dx+7MpEiAkxTBnJcsT3/1BO8rYRfNLecXmpAvhqGMD0=";
})
] ++ lib.optionals (!finalAttrs.isNixOS) [ ] ++ lib.optionals (!finalAttrs.isNixOS) [
# References to /nix/store/... will get GC'ed which causes problems when # References to /nix/store/... will get GC'ed which causes problems when
# copying the default configuration: # copying the default configuration:

View File

@ -4,6 +4,7 @@
sway-unwrapped, sway-unwrapped,
stdenv, stdenv,
systemd, systemd,
wlroots_0_16,
# Used by the NixOS module: # Used by the NixOS module:
isNixOS ? false, isNixOS ? false,
enableXWayland ? true, enableXWayland ? true,
@ -18,6 +19,8 @@
systemdSupport systemdSupport
trayEnabled trayEnabled
; ;
wlroots = wlroots_0_16;
}).overrideAttrs (oldAttrs: rec { }).overrideAttrs (oldAttrs: rec {
pname = "swayfx-unwrapped"; pname = "swayfx-unwrapped";
version = "0.3.2"; version = "0.3.2";
@ -29,18 +32,6 @@
sha256 = "sha256-Gwewb0yDVhEBrefSSGDf1hLtpWcntzifPCPJQhqLqI0="; sha256 = "sha256-Gwewb0yDVhEBrefSSGDf1hLtpWcntzifPCPJQhqLqI0=";
}; };
# This patch was backported into SwayFX
# remove when next release is rebased on Sway 1.9
patches =
let
removePatches = [
"LIBINPUT_CONFIG_ACCEL_PROFILE_CUSTOM.patch"
];
in
builtins.filter
(patch: !builtins.elem (patch.name or null) removePatches)
(oldAttrs.patches or [ ]);
meta = with lib; { meta = with lib; {
description = "Sway, but with eye candy!"; description = "Sway, but with eye candy!";
homepage = "https://github.com/WillPower3309/swayfx"; homepage = "https://github.com/WillPower3309/swayfx";

View File

@ -0,0 +1,73 @@
{ lib
, fetchFromGitHub
, gcc12
, cmake
, git
, openssl
, pkg-config
, protobuf
, rustPlatform
, addOpenGLRunpath
, cudatoolkit
, nvidia ? true
}:
rustPlatform.buildRustPackage rec {
version = "0.7.0";
pname = "tabby";
src = fetchFromGitHub {
owner = "TabbyML";
repo = "tabby";
rev = "v${version}";
hash = "sha256-BTPJWvqO4IuQAiUEER9PYfu4aQsz5RI77WsA/gQu5Jc=";
fetchSubmodules = true;
};
cargoHash = "sha256-Du0ya9J+0tz72mSid5If0VFX2lLC7YtwNQ/MALpFv2M=";
# https://github.com/TabbyML/tabby/blob/v0.7.0/.github/workflows/release.yml#L39
cargoBuildFlags = [
"--release"
"--package" "tabby"
] ++ lib.optional nvidia [
"--features" "cuda"
];
OPENSSL_NO_VENDOR = 1;
nativeBuildInputs = [
pkg-config
protobuf
git
cmake
gcc12
] ++ lib.optional nvidia [
addOpenGLRunpath
];
buildInputs = [ openssl ]
++ lib.optional nvidia cudatoolkit
;
postInstall = ''
${if nvidia then ''
addOpenGLRunpath "$out/bin/tabby"
'' else ''
''}
'';
# Fails with:
# file cannot create directory: /var/empty/local/lib64/cmake/Llama
doCheck = false;
meta = with lib; {
homepage = "https://github.com/TabbyML/tabby";
changelog = "https://github.com/TabbyML/tabby/releases/tag/v${version}";
description = "Self-hosted AI coding assistant";
mainProgram = "tabby";
license = licenses.asl20;
maintainers = [ maintainers.ghthor ];
};
}

View File

@ -14,16 +14,16 @@
rustPlatform.buildRustPackage rec { rustPlatform.buildRustPackage rec {
pname = "uiua"; pname = "uiua";
version = "0.8.0"; version = "0.9.5";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "uiua-lang"; owner = "uiua-lang";
repo = "uiua"; repo = "uiua";
rev = version; rev = version;
hash = "sha256-JilYPIeJbVf9wgGpLTy8pbMwFRrW7Od+8y0tWwAXU84="; hash = "sha256-629hJLSGf0LJ+P1j1b87RV6XGgsDaWif1a6+Eo3NmMw=";
}; };
cargoHash = "sha256-oXO2TBdKmVIpZD0jLI1CK9b48r3SwdeygcJoUG6HGXo="; cargoHash = "sha256-ZRiDlsSZ5jjTrOrB/bg2xOcOTsCNFdP0jY0SwZ1zwGU=";
nativeBuildInputs = lib.optionals stdenv.isDarwin [ nativeBuildInputs = lib.optionals stdenv.isDarwin [
rustPlatform.bindgenHook rustPlatform.bindgenHook
@ -41,6 +41,7 @@ rustPlatform.buildRustPackage rec {
buildFeatures = lib.optional audioSupport "audio"; buildFeatures = lib.optional audioSupport "audio";
passthru.updateScript = ./update.sh;
passthru.tests.run = runCommand "uiua-test-run" { nativeBuildInputs = [ uiua ]; } '' passthru.tests.run = runCommand "uiua-test-run" { nativeBuildInputs = [ uiua ]; } ''
uiua init uiua init
diff -U3 --color=auto <(uiua run main.ua) <(echo '"Hello, World!"') diff -U3 --color=auto <(uiua run main.ua) <(echo '"Hello, World!"')

7
pkgs/by-name/ui/uiua/update.sh Executable file
View File

@ -0,0 +1,7 @@
#!/usr/bin/env nix-shell
#!nix-shell -i bash -p curl jq nix-update common-updater-scripts
nix-update uiua
EXT_VER=$(curl https://raw.githubusercontent.com/uiua-lang/uiua-vscode/main/package.json | jq -r .version)
update-source-version vscode-extensions.uiua-lang.uiua-vscode $EXT_VER

View File

@ -75,9 +75,9 @@ checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299"
[[package]] [[package]]
name = "anstream" name = "anstream"
version = "0.6.11" version = "0.6.12"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6e2e1ebcb11de5c03c67de28a7df593d32191b44939c482e97702baaaa6ab6a5" checksum = "96b09b5178381e0874812a9b157f7fe84982617e48f71f4e3235482775e5b540"
dependencies = [ dependencies = [
"anstyle", "anstyle",
"anstyle-parse", "anstyle-parse",
@ -147,9 +147,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711"
[[package]] [[package]]
name = "assert_cmd" name = "assert_cmd"
version = "2.0.13" version = "2.0.14"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "00ad3f3a942eee60335ab4342358c161ee296829e0d16ff42fc1d6cb07815467" checksum = "ed72493ac66d5804837f480ab3766c72bdfab91a65e565fc54fa9e42db0073a8"
dependencies = [ dependencies = [
"anstyle", "anstyle",
"bstr", "bstr",
@ -1587,25 +1587,21 @@ dependencies = [
"data-encoding", "data-encoding",
"distribution-filename", "distribution-filename",
"fs-err", "fs-err",
"fs2",
"goblin",
"indoc", "indoc",
"mailparse", "mailparse",
"once_cell", "once_cell",
"pathdiff",
"pep440_rs", "pep440_rs",
"platform-host", "platform-host",
"platform-info", "platform-info",
"plist", "plist",
"pyo3",
"pypi-types", "pypi-types",
"rayon",
"reflink-copy", "reflink-copy",
"regex", "regex",
"rustc-hash", "rustc-hash",
"serde", "serde",
"serde_json", "serde_json",
"sha2", "sha2",
"target-lexicon",
"tempfile", "tempfile",
"thiserror", "thiserror",
"tracing", "tracing",
@ -2193,6 +2189,12 @@ version = "1.0.14"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c"
[[package]]
name = "pathdiff"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd"
[[package]] [[package]]
name = "pep440_rs" name = "pep440_rs"
version = "0.5.0" version = "0.5.0"
@ -3189,18 +3191,18 @@ dependencies = [
[[package]] [[package]]
name = "serde" name = "serde"
version = "1.0.196" version = "1.0.197"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "870026e60fa08c69f064aa766c10f10b1d62db9ccd4d0abb206472bee0ce3b32" checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2"
dependencies = [ dependencies = [
"serde_derive", "serde_derive",
] ]
[[package]] [[package]]
name = "serde_derive" name = "serde_derive"
version = "1.0.196" version = "1.0.197"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "33c85360c95e7d137454dc81d9a4ed2b8efd8fbe19cee57357b32b9771fccb67" checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
@ -3209,9 +3211,9 @@ dependencies = [
[[package]] [[package]]
name = "serde_json" name = "serde_json"
version = "1.0.113" version = "1.0.114"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "69801b70b1c3dac963ecb03a364ba0ceda9cf60c71cfe475e99864759c8b8a79" checksum = "c5f09b1bd632ef549eaa9f60a1f8de742bdbc698e6cee2095fc84dde5f549ae0"
dependencies = [ dependencies = [
"itoa", "itoa",
"ryu", "ryu",
@ -3496,9 +3498,9 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369"
[[package]] [[package]]
name = "target-lexicon" name = "target-lexicon"
version = "0.12.13" version = "0.12.14"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "69758bda2e78f098e4ccb393021a0963bb3442eac05f135c30f61b7370bbafae" checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f"
[[package]] [[package]]
name = "task-local-extensions" name = "task-local-extensions"
@ -4131,7 +4133,7 @@ checksum = "f00cc9702ca12d3c81455259621e676d0f7251cec66a21e98fe2e9a37db93b2a"
[[package]] [[package]]
name = "uv" name = "uv"
version = "0.1.11" version = "0.1.12"
dependencies = [ dependencies = [
"anstream", "anstream",
"anyhow", "anyhow",
@ -4151,6 +4153,7 @@ dependencies = [
"fs-err", "fs-err",
"futures", "futures",
"gourgeist", "gourgeist",
"indexmap 2.2.3",
"indicatif", "indicatif",
"indoc", "indoc",
"insta", "insta",
@ -4493,12 +4496,15 @@ dependencies = [
"pep508_rs", "pep508_rs",
"platform-tags", "platform-tags",
"pypi-types", "pypi-types",
"pyproject-toml",
"rayon", "rayon",
"requirements-txt", "requirements-txt",
"rustc-hash", "rustc-hash",
"serde",
"tempfile", "tempfile",
"thiserror", "thiserror",
"tokio", "tokio",
"toml",
"tracing", "tracing",
"url", "url",
"uv-cache", "uv-cache",
@ -4518,9 +4524,11 @@ version = "0.0.1"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"cache-key", "cache-key",
"configparser",
"fs-err", "fs-err",
"indoc", "indoc",
"insta", "insta",
"install-wheel-rs",
"itertools 0.12.1", "itertools 0.12.1",
"once_cell", "once_cell",
"pep440_rs", "pep440_rs",

View File

@ -1,31 +1,25 @@
{ lib { lib
, cargo
, cmake , cmake
, darwin , darwin
, fetchFromGitHub , fetchFromGitHub
, libgit2
, openssl , openssl
, pkg-config , pkg-config
, python3
, rustPlatform , rustPlatform
, rustc
, stdenv , stdenv
, zlib
}: }:
python3.pkgs.buildPythonApplication rec { rustPlatform.buildRustPackage rec {
pname = "uv"; pname = "uv";
version = "0.1.11"; version = "0.1.12";
pyproject = true;
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "astral-sh"; owner = "astral-sh";
repo = "uv"; repo = "uv";
rev = version; rev = version;
hash = "sha256-0J6m/DgalYA+GGmgjFrNoo9KAv6WgMcx+gasgqG5v1Q="; hash = "sha256-tM8NX4BPGm8Xxlau+qpKSljTdSJutipsYFsZAdtmZuo=";
}; };
cargoDeps = rustPlatform.importCargoLock { cargoLock = {
lockFile = ./Cargo.lock; lockFile = ./Cargo.lock;
outputHashes = { outputHashes = {
"async_zip-0.0.16" = "sha256-M94ceTCtyQc1AtPXYrVGplShQhItqZZa/x5qLiL+gs0="; "async_zip-0.0.16" = "sha256-M94ceTCtyQc1AtPXYrVGplShQhItqZZa/x5qLiL+gs0=";
@ -34,25 +28,20 @@ python3.pkgs.buildPythonApplication rec {
}; };
nativeBuildInputs = [ nativeBuildInputs = [
cargo
cmake cmake
pkg-config pkg-config
rustPlatform.cargoSetupHook
rustPlatform.maturinBuildHook
rustc
]; ];
buildInputs = [ buildInputs = [
libgit2
openssl openssl
zlib
] ++ lib.optionals stdenv.isDarwin [ ] ++ lib.optionals stdenv.isDarwin [
darwin.apple_sdk.frameworks.SystemConfiguration darwin.apple_sdk.frameworks.SystemConfiguration
]; ];
dontUseCmakeConfigure = true; cargoBuildFlags = [ "--package" "uv" ];
pythonImportsCheck = [ "uv" ]; # Tests require network access
doCheck = false;
env = { env = {
OPENSSL_NO_VENDOR = true; OPENSSL_NO_VENDOR = true;
@ -61,7 +50,7 @@ python3.pkgs.buildPythonApplication rec {
meta = with lib; { meta = with lib; {
description = "An extremely fast Python package installer and resolver, written in Rust"; description = "An extremely fast Python package installer and resolver, written in Rust";
homepage = "https://github.com/astral-sh/uv"; homepage = "https://github.com/astral-sh/uv";
changelog = "https://github.com/astral-sh/uv/releases/tag/${version}"; changelog = "https://github.com/astral-sh/uv/blob/${src.rev}/CHANGELOG.md";
license = with licenses; [ asl20 mit ]; license = with licenses; [ asl20 mit ];
maintainers = with maintainers; [ marsam ]; maintainers = with maintainers; [ marsam ];
mainProgram = "uv"; mainProgram = "uv";

View File

@ -1,8 +1,4 @@
{ lib { lib
, stdenv
, pkgsBuildBuild
, fetchurl
, fetchpatch
, SDL , SDL
, SDL_image , SDL_image
, a52dec , a52dec
@ -11,6 +7,8 @@
, avahi , avahi
, dbus , dbus
, faad2 , faad2
, fetchpatch
, fetchurl
, ffmpeg , ffmpeg
, flac , flac
, fluidsynth , fluidsynth
@ -48,6 +46,7 @@
, libpulseaudio , libpulseaudio
, libraw1394 , libraw1394
, librsvg , librsvg
, libsForQt5
, libsamplerate , libsamplerate
, libspatialaudio , libspatialaudio
, libssh2 , libssh2
@ -65,23 +64,20 @@
, ncurses , ncurses
, perl , perl
, pkg-config , pkg-config
, pkgsBuildBuild
, protobuf , protobuf
, qtbase
, qtsvg
, qtwayland
, qtx11extras
, removeReferencesTo , removeReferencesTo
, samba , samba
, schroedinger , schroedinger
, speex , speex
, srt , srt
, stdenv
, systemd , systemd
, taglib , taglib
, unzip , unzip
, wayland , wayland
, wayland-protocols , wayland-protocols
, wrapGAppsHook , wrapGAppsHook
, wrapQtAppsHook
, xcbutilkeysyms , xcbutilkeysyms
, zlib , zlib
@ -98,7 +94,7 @@
# networking.firewall.allowedTCPPorts = [ 8010 ]; # networking.firewall.allowedTCPPorts = [ 8010 ];
let let
inherit (lib) optionalString optional optionals; inherit (lib) optionalString optionals;
in in
stdenv.mkDerivation (finalAttrs: { stdenv.mkDerivation (finalAttrs: {
pname = "${optionalString onlyLibVLC "lib"}vlc"; pname = "${optionalString onlyLibVLC "lib"}vlc";
@ -118,8 +114,8 @@ stdenv.mkDerivation (finalAttrs: {
unzip unzip
wrapGAppsHook wrapGAppsHook
] ]
++ optional chromecastSupport protobuf ++ optionals chromecastSupport [ protobuf ]
++ optionals withQt5 [ wrapQtAppsHook ] ++ optionals withQt5 [ libsForQt5.wrapQtAppsHook ]
++ optionals waylandSupport [ ++ optionals waylandSupport [
wayland wayland
wayland-protocols wayland-protocols
@ -191,8 +187,8 @@ stdenv.mkDerivation (finalAttrs: {
xcbutilkeysyms xcbutilkeysyms
zlib zlib
] ]
++ optional (!stdenv.hostPlatform.isAarch && !onlyLibVLC) live555 ++ optionals (!stdenv.hostPlatform.isAarch && !onlyLibVLC) [ live555 ]
++ optional jackSupport libjack2 ++ optionals jackSupport [ libjack2 ]
++ optionals chromecastSupport [ libmicrodns protobuf ] ++ optionals chromecastSupport [ libmicrodns protobuf ]
++ optionals skins2Support [ ++ optionals skins2Support [
freetype freetype
@ -201,8 +197,12 @@ stdenv.mkDerivation (finalAttrs: {
libXpm libXpm
] ]
++ optionals waylandSupport [ wayland wayland-protocols ] ++ optionals waylandSupport [ wayland wayland-protocols ]
++ optionals withQt5 [ qtbase qtsvg qtx11extras ] ++ optionals withQt5 (with libsForQt5; [
++ optional (waylandSupport && withQt5) qtwayland; qtbase
qtsvg
qtx11extras
])
++ optionals (waylandSupport && withQt5) [ libsForQt5.qtwayland ];
env = { env = {
# vlc depends on a c11-gcc wrapper script which we don't have so we need to # vlc depends on a c11-gcc wrapper script which we don't have so we need to
@ -218,51 +218,37 @@ stdenv.mkDerivation (finalAttrs: {
# upstream issue: https://code.videolan.org/videolan/vlc/-/issues/25473 # upstream issue: https://code.videolan.org/videolan/vlc/-/issues/25473
(fetchpatch { (fetchpatch {
url = "https://code.videolan.org/videolan/vlc/uploads/eb1c313d2d499b8a777314f789794f9d/0001-Add-lssl-and-lcrypto-to-liblive555_plugin_la_LIBADD.patch"; url = "https://code.videolan.org/videolan/vlc/uploads/eb1c313d2d499b8a777314f789794f9d/0001-Add-lssl-and-lcrypto-to-liblive555_plugin_la_LIBADD.patch";
sha256 = "0kyi8q2zn2ww148ngbia9c7qjgdrijf4jlvxyxgrj29cb5iy1kda"; hash = "sha256-qs3gY1ksCZlf931TSZyMuT2JD0sqrmcRCZwL+wVG0U8=";
}) })
]; ];
postPatch = '' postPatch = ''
substituteInPlace modules/text_renderer/freetype/platform_fonts.h --replace \ substituteInPlace modules/text_renderer/freetype/platform_fonts.h \
/usr/share/fonts/truetype/freefont ${freefont_ttf}/share/fonts/truetype --replace \
'' + lib.optionalString (!stdenv.hostPlatform.canExecute stdenv.buildPlatform) '' /usr/share/fonts/truetype/freefont \
# Upstream luac can't cross compile, so we have to install the lua ${freefont_ttf}/share/fonts/truetype
# sources, not bytecode: ''
# https://www.lua.org/wshop13/Jericke.pdf#page=39 # Upstream luac can't cross compile, so we have to install the lua sources
substituteInPlace share/Makefile.am --replace $'.luac \\\n' $'.lua \\\n' # instead of bytecode:
# https://www.lua.org/wshop13/Jericke.pdf#page=39
+ lib.optionalString (!stdenv.hostPlatform.canExecute stdenv.buildPlatform) ''
substituteInPlace share/Makefile.am \
--replace $'.luac \\\n' $'.lua \\\n'
''; '';
enableParallelBuilding = true; enableParallelBuilding = true;
dontWrapGApps = true; # to prevent double wrapping of Qtwrap and Gwrap dontWrapGApps = true; # to prevent double wrapping of Qtwrap and Gwrap
preFixup = ''
qtWrapperArgs+=("''${gappsWrapperArgs[@]}")
'';
# - Touch plugins (plugins cache keyed off mtime and file size:
# https://github.com/NixOS/nixpkgs/pull/35124#issuecomment-370552830
# - Remove references to the Qt development headers (used in error messages)
#
# pkgsBuildBuild is used here because buildPackages.libvlc somehow
# depends on a qt5.qttranslations that doesn't build, even though it
# should be the same as pkgsBuildBuild.qt5.qttranslations.
postFixup = ''
find $out/lib/vlc/plugins -exec touch -d @1 '{}' ';'
${if stdenv.buildPlatform.canExecute stdenv.hostPlatform then "$out" else pkgsBuildBuild.libvlc}/lib/vlc/vlc-cache-gen $out/vlc/plugins
'' + optionalString withQt5 ''
remove-references-to -t "${qtbase.dev}" $out/lib/vlc/plugins/gui/libqt_plugin.so
'';
# Most of the libraries are auto-detected so we don't need to set a bunch of # Most of the libraries are auto-detected so we don't need to set a bunch of
# "--enable-foo" flags here # "--enable-foo" flags here
configureFlags = [ configureFlags = [
"--enable-srt" # Explicit enable srt to ensure the patch is applied. "--enable-srt" # Explicit enable srt to ensure the patch is applied.
"--with-kde-solid=$out/share/apps/solid/actions" "--with-kde-solid=$out/share/apps/solid/actions"
] ]
++ optional onlyLibVLC "--disable-vlc" ++ optionals onlyLibVLC [ "--disable-vlc" ]
++ optional skins2Support "--enable-skins2" ++ optionals skins2Support [ "--enable-skins2" ]
++ optional waylandSupport "--enable-wayland" ++ optionals waylandSupport [ "--enable-wayland" ]
++ optionals chromecastSupport [ ++ optionals chromecastSupport [
"--enable-sout" "--enable-sout"
"--enable-chromecast" "--enable-chromecast"
@ -285,6 +271,24 @@ stdenv.mkDerivation (finalAttrs: {
cp -R share/hrtfs $out/share/vlc cp -R share/hrtfs $out/share/vlc
''; '';
preFixup = ''
qtWrapperArgs+=("''${gappsWrapperArgs[@]}")
'';
# - Touch plugins (plugins cache keyed off mtime and file size:
# https://github.com/NixOS/nixpkgs/pull/35124#issuecomment-370552830
# - Remove references to the Qt development headers (used in error messages)
#
# pkgsBuildBuild is used here because buildPackages.libvlc somehow
# depends on a qt5.qttranslations that doesn't build, even though it
# should be the same as pkgsBuildBuild.qt5.qttranslations.
postFixup = ''
find $out/lib/vlc/plugins -exec touch -d @1 '{}' ';'
${if stdenv.buildPlatform.canExecute stdenv.hostPlatform then "$out" else pkgsBuildBuild.libvlc}/lib/vlc/vlc-cache-gen $out/vlc/plugins
'' + optionalString withQt5 ''
remove-references-to -t "${libsForQt5.qtbase.dev}" $out/lib/vlc/plugins/gui/libqt_plugin.so
'';
meta = { meta = {
description = "Cross-platform media player and streaming server"; description = "Cross-platform media player and streaming server";
homepage = "https://www.videolan.org/vlc/"; homepage = "https://www.videolan.org/vlc/";

View File

@ -6,13 +6,13 @@
# Testing this requires a Thinkpad or the presence of /proc/acpi/ibm/fan # Testing this requires a Thinkpad or the presence of /proc/acpi/ibm/fan
stdenv.mkDerivation (finalAttrs: { stdenv.mkDerivation (finalAttrs: {
pname = "zcfan"; pname = "zcfan";
version = "1.2.1"; version = "1.3.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "cdown"; owner = "cdown";
repo = "zcfan"; repo = "zcfan";
rev = finalAttrs.version; rev = finalAttrs.version;
hash = "sha256-XngchR06HP2iExKJVe+XKBDgsv98AEYWOkl1a/Hktgs="; hash = "sha256-zpYQEHXt8LBNX+luM4YxP0dKH+hb2c8Z0BEeGP09oZo=";
}; };
postPatch = '' postPatch = ''

View File

@ -5,11 +5,11 @@
stdenvNoCC.mkDerivation rec { stdenvNoCC.mkDerivation rec {
pname = "lxgw-neoxihei"; pname = "lxgw-neoxihei";
version = "1.110"; version = "1.120";
src = fetchurl { src = fetchurl {
url = "https://github.com/lxgw/LxgwNeoXiHei/releases/download/v${version}/LXGWNeoXiHei.ttf"; url = "https://github.com/lxgw/LxgwNeoXiHei/releases/download/v${version}/LXGWNeoXiHei.ttf";
hash = "sha256-6KeKz8lJBCc/sc5pCkS2mSwMAQ8XpwDIMCjSbVXuyH4="; hash = "sha256-rQ+gbmUYr+iWm5WCUSqb+8+aMD5JZUsbPXZ0Nio2cl8=";
}; };
dontUnpack = true; dontUnpack = true;

View File

@ -3,12 +3,12 @@
let let
generator = pkgsBuildBuild.buildGoModule rec { generator = pkgsBuildBuild.buildGoModule rec {
pname = "v2ray-domain-list-community"; pname = "v2ray-domain-list-community";
version = "20240217140518"; version = "20240221053250";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "v2fly"; owner = "v2fly";
repo = "domain-list-community"; repo = "domain-list-community";
rev = version; rev = version;
hash = "sha256-7Voepx8+tFWpugtUKoRJ55nSX3cWtXgPhYiNDhE3OGs="; hash = "sha256-oPffStUx2CD4gfSNIYqCzLLj+IAhm3aGQknRsrauD+k=";
}; };
vendorHash = "sha256-azvMUi8eLNoNofRa2X4SKTTiMd6aOyO6H/rOiKjkpIY="; vendorHash = "sha256-azvMUi8eLNoNofRa2X4SKTTiMd6aOyO6H/rOiKjkpIY=";
meta = with lib; { meta = with lib; {

View File

@ -6,13 +6,13 @@
stdenvNoCC.mkDerivation (self: { stdenvNoCC.mkDerivation (self: {
name = "alacritty-theme"; name = "alacritty-theme";
version = "unstable-2024-02-25"; version = "unstable-2024-02-28";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "alacritty"; owner = "alacritty";
repo = "alacritty-theme"; repo = "alacritty-theme";
rev = "07c10441dae4d0490145a0f40178f8846b24e800"; rev = "4aefb7c079721474078b28bbf9f582b592749ca6";
hash = "sha256-aZlsKbFcm1bswx7k0cjwhj1MudR0Q0rD8sdHa7kQ0rY="; hash = "sha256-+35S6eQkxLBuS/fDKD5bglQDIuz2xeEc5KSaK6k7IjI=";
}; };
dontConfigure = true; dontConfigure = true;

View File

@ -9,13 +9,13 @@
stdenvNoCC.mkDerivation (finalAttrs: { stdenvNoCC.mkDerivation (finalAttrs: {
pname = "suru-icon-theme"; pname = "suru-icon-theme";
version = "20.05.1"; version = "2024.02.1";
src = fetchFromGitLab { src = fetchFromGitLab {
owner = "ubports"; owner = "ubports";
repo = "development/core/suru-icon-theme"; repo = "development/core/suru-icon-theme";
rev = finalAttrs.version; rev = finalAttrs.version;
hash = "sha256-jJ6J+SjSABZCgnCF9cIFBpeSXX2LMnV+nPLPpoXQv30="; hash = "sha256-7T9FILhZrs5bbdBEV/FszCOwUd/C1Rl9tbDt77SIzRk=";
}; };
strictDeps = true; strictDeps = true;
@ -50,6 +50,7 @@ stdenvNoCC.mkDerivation (finalAttrs: {
meta = with lib; { meta = with lib; {
description = "Suru Icon Theme for Lomiri Operating Environment"; description = "Suru Icon Theme for Lomiri Operating Environment";
homepage = "https://gitlab.com/ubports/development/core/suru-icon-theme"; homepage = "https://gitlab.com/ubports/development/core/suru-icon-theme";
changelog = "https://gitlab.com/ubports/development/core/suru-icon-theme/-/blob/${finalAttrs.version}/ChangeLog";
license = licenses.cc-by-sa-30; license = licenses.cc-by-sa-30;
maintainers = teams.lomiri.members; maintainers = teams.lomiri.members;
platforms = platforms.all; platforms = platforms.all;

View File

@ -57,7 +57,7 @@ let
# Defined in gdk-pixbuf setup hook # Defined in gdk-pixbuf setup hook
findGdkPixbufLoaders "${librsvg}" findGdkPixbufLoaders "${librsvg}"
${if to then "makeWrapper ${from} ${to}" else "wrapProgram ${from}"} \ ${if (builtins.isString to) then "makeWrapper ${from} ${to}" else "wrapProgram ${from}"} \
--set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \ --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
--argv0 factor \ --argv0 factor \
--prefix LD_LIBRARY_PATH : /run/opengl-driver/lib:${lib.makeLibraryPath runtimeLibs} \ --prefix LD_LIBRARY_PATH : /run/opengl-driver/lib:${lib.makeLibraryPath runtimeLibs} \
@ -72,7 +72,7 @@ let
passthru.runtimeLibs = runtimeLibs ++ interpreter.runtimeLibs; passthru.runtimeLibs = runtimeLibs ++ interpreter.runtimeLibs;
} }
(wrapFactorScript { (wrapFactorScript {
from = "${interpreter}/lib/factor/.factor.wrapped"; from = "${interpreter}/lib/factor/.factor-wrapped";
to = "$out/bin/factor"; to = "$out/bin/factor";
runtimeLibs = (runtimeLibs ++ interpreter.runtimeLibs); runtimeLibs = (runtimeLibs ++ interpreter.runtimeLibs);
}); });

View File

@ -1,20 +1,16 @@
{ lib { lib
, stdenv
, fetchFromRepoOrCz
, copyPkgconfigItems , copyPkgconfigItems
, fetchFromRepoOrCz
, makePkgconfigItem , makePkgconfigItem
, perl , perl
, stdenv
, texinfo , texinfo
, which , which
}: }:
let stdenv.mkDerivation (finalAttrs: {
# avoid "malformed 32-bit x.y.z" error on mac when using clang
isCleanVer = version: builtins.match "^[0-9]\\.+[0-9]+\\.[0-9]+" version != null;
in
stdenv.mkDerivation rec {
pname = "tcc"; pname = "tcc";
version = "unstable-2022-07-15"; version = "0.9.27-unstable-2022-07-15";
src = fetchFromRepoOrCz { src = fetchFromRepoOrCz {
repo = "tinycc"; repo = "tinycc";
@ -22,6 +18,8 @@ stdenv.mkDerivation rec {
hash = "sha256-jY0P2GErmo//YBaz6u4/jj/voOE3C2JaIDRmo0orXN8="; hash = "sha256-jY0P2GErmo//YBaz6u4/jj/voOE3C2JaIDRmo0orXN8=";
}; };
outputs = [ "out" "info" "man" ];
nativeBuildInputs = [ nativeBuildInputs = [
copyPkgconfigItems copyPkgconfigItems
perl perl
@ -29,23 +27,27 @@ stdenv.mkDerivation rec {
which which
]; ];
pkgconfigItems = [ strictDeps = true;
(makePkgconfigItem rec {
pkgconfigItems = let
libtcc-pcitem = {
name = "libtcc"; name = "libtcc";
inherit version; inherit (finalAttrs) version;
cflags = [ "-I${variables.includedir}" ]; cflags = [ "-I${libtcc-pcitem.variables.includedir}" ];
libs = [ libs = [
"-L${variables.libdir}" "-L${libtcc-pcitem.variables.libdir}"
"-Wl,--rpath ${variables.libdir}" "-Wl,--rpath ${libtcc-pcitem.variables.libdir}"
"-ltcc" "-ltcc"
]; ];
variables = rec { variables = {
prefix = "${placeholder "out"}"; prefix = "${placeholder "out"}";
includedir = "${prefix}/include"; includedir = "${placeholder "dev"}/include";
libdir = "${prefix}/lib"; libdir = "${placeholder "lib"}/lib";
}; };
description = "Tiny C compiler backend"; description = "Tiny C compiler backend";
}) };
in [
(makePkgconfigItem libtcc-pcitem)
]; ];
postPatch = '' postPatch = ''
@ -64,17 +66,19 @@ stdenv.mkDerivation rec {
"--config-musl" "--config-musl"
]; ];
preConfigure = '' preConfigure = let
# To avoid "malformed 32-bit x.y.z" error on mac when using clang
versionIsClean = version:
builtins.match "^[0-9]\\.+[0-9]+\\.[0-9]+" version != null;
in ''
${ ${
if stdenv.isDarwin && ! isCleanVer version if stdenv.isDarwin && ! versionIsClean finalAttrs.version
then "echo 'not overwriting VERSION since it would upset ld'" then "echo 'not overwriting VERSION since it would upset ld'"
else "echo ${version} > VERSION" else "echo ${finalAttrs.version} > VERSION"
} }
configureFlagsArray+=("--elfinterp=$(< $NIX_CC/nix-support/dynamic-linker)") configureFlagsArray+=("--elfinterp=$(< $NIX_CC/nix-support/dynamic-linker)")
''; '';
outputs = [ "out" "info" "man" ];
# Test segfault for static build # Test segfault for static build
doCheck = !stdenv.hostPlatform.isStatic; doCheck = !stdenv.hostPlatform.isStatic;
@ -84,7 +88,7 @@ stdenv.mkDerivation rec {
rm tests/tests2/{108,114}* rm tests/tests2/{108,114}*
''; '';
meta = with lib; { meta = {
homepage = "https://repo.or.cz/tinycc.git"; homepage = "https://repo.or.cz/tinycc.git";
description = "Small, fast, and embeddable C compiler and interpreter"; description = "Small, fast, and embeddable C compiler and interpreter";
longDescription = '' longDescription = ''
@ -108,13 +112,13 @@ stdenv.mkDerivation rec {
With libtcc, you can use TCC as a backend for dynamic code generation. With libtcc, you can use TCC as a backend for dynamic code generation.
''; '';
license = licenses.lgpl21Only; license = with lib.licenses; [ lgpl21Only ];
maintainers = with maintainers; [ joachifm AndersonTorres ]; mainProgram = "tcc";
platforms = platforms.unix; maintainers = with lib.maintainers; [ joachifm AndersonTorres ];
platforms = lib.platforms.unix;
# https://www.mail-archive.com/tinycc-devel@nongnu.org/msg10199.html # https://www.mail-archive.com/tinycc-devel@nongnu.org/msg10199.html
broken = stdenv.isDarwin && stdenv.isAarch64; broken = stdenv.isDarwin && stdenv.isAarch64;
}; };
} })
# TODO: more multiple outputs # TODO: more multiple outputs
# TODO: self-compilation # TODO: self-compilation
# TODO: provide expression for stable release

View File

@ -28,7 +28,6 @@ let
rev = googleapisRev; rev = googleapisRev;
hash = "sha256-4Qiz0pBgW3OZi+Z8Zq6k9E94+8q6/EFMwPh8eQxDjdI="; hash = "sha256-4Qiz0pBgW3OZi+Z8Zq6k9E94+8q6/EFMwPh8eQxDjdI=";
}; };
excludedTests = builtins.fromTOML (builtins.readFile ./skipped_tests.toml);
in in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "google-cloud-cpp"; pname = "google-cloud-cpp";
@ -106,16 +105,17 @@ stdenv.mkDerivation rec {
lib.optionalString doInstallCheck ( lib.optionalString doInstallCheck (
lib.optionalString (!staticOnly) '' lib.optionalString (!staticOnly) ''
export ${ldLibraryPathName}=${lib.concatStringsSep ":" additionalLibraryPaths} export ${ldLibraryPathName}=${lib.concatStringsSep ":" additionalLibraryPaths}
'' + ''
export GTEST_FILTER="-${lib.concatStringsSep ":" excludedTests.cases}"
'' ''
); );
installCheckPhase = lib.optionalString doInstallCheck '' installCheckPhase = lib.optionalString doInstallCheck ''
runHook preInstallCheck runHook preInstallCheck
# disable tests that contact the internet # Disable any integration tests, which need to contact the internet.
ctest --exclude-regex '^(${lib.concatStringsSep "|" excludedTests.whole})' # Also disable the `storage_benchmark_*` tests.
# With Protobuf < 23.x they require -DGOOGLE_CLOUD_CPP_ENABLE_CTYPE_WORKAROUND=ON.
# With Protobuf >= 23.x they require They require setting -DGOOGLE_CLOUD_CPP_ENABLE_CTYPE_WORKAROUND=OFF
ctest --label-exclude integration-test --exclude-regex storage_benchmarks_
runHook postInstallCheck runHook postInstallCheck
''; '';

View File

@ -1,139 +0,0 @@
whole = [
"common_samples_samples",
"common_internal_grpc_impersonate_service_account_integration_test",
"common_internal_unified_rest_credentials_integration_test",
"iam_samples_iam_credentials_samples",
"iam_samples_iam_samples",
"iam_admin_v1_samples_iam_client_samples",
"iam_credentials_v1_samples_iam_credentials_client_samples",
"iam_v1_samples_iam_policy_client_samples",
"iam_v2_samples_policies_client_samples",
"bigtable_admin_admin_iam_policy_integration_test",
"bigtable_bigtable_instance_admin_client_samples",
"bigtable_bigtable_table_admin_client_samples",
"bigtable_apply_read_latency_benchmark",
"bigtable_endurance_benchmark",
"bigtable_mutation_batcher_throughput_benchmark",
"bigtable_read_sync_vs_async_benchmark",
"bigtable_scan_throughput_benchmark",
"bigtable_admin_iam_policy_integration_test",
"bigtable_data_async_future_integration_test",
"bigtable_data_integration_test",
"bigtable_filters_integration_test",
"bigtable_mutations_integration_test",
"bigtable_table_sample_rows_integration_test",
"bigquery_samples_bigquery_read_samples",
"bigquery_analyticshub_v1_samples_analytics_hub_client_samples",
"bigquery_biglake_v1_samples_metastore_client_samples",
"bigquery_connection_v1_samples_connection_client_samples",
"bigquery_datapolicies_v1_samples_data_policy_client_samples",
"bigquery_datatransfer_v1_samples_data_transfer_client_samples",
"bigquery_migration_v2_samples_migration_client_samples",
"bigquery_reservation_v1_samples_reservation_client_samples",
"bigquery_storage_v1_samples_bigquery_read_client_samples",
"bigquery_storage_v1_samples_bigquery_write_client_samples",
"logging_quickstart",
"logging_v2_samples_config_service_v2_client_samples",
"logging_v2_samples_logging_service_v2_client_samples",
"logging_v2_samples_metrics_service_v2_client_samples",
"pubsub_endurance",
"pubsub_throughput",
"pubsub_subscriber_integration_test",
"pubsub_subscription_admin_integration_test",
"pubsub_topic_admin_integration_test",
"spanner_client_integration_test",
"spanner_client_stress_test",
"spanner_data_types_integration_test",
"spanner_database_admin_integration_test",
"spanner_instance_admin_integration_test",
"spanner_session_pool_integration_test",
"spanner_admin_database_admin_integration_test",
"spanner_admin_instance_admin_integration_test",
"spanner_database_admin_client_samples",
"spanner_instance_admin_client_samples",
"spanner_multiple_rows_cpu_benchmark",
"spanner_single_row_throughput_benchmark",
"storage_alternative_endpoint_integration_test",
"storage_auto_finalize_integration_test",
"storage_bucket_integration_test",
"storage_create_client_integration_test",
"storage_curl_sign_blob_integration_test",
"storage_decompressive_transcoding_integration_test",
"storage_grpc_bucket_acl_integration_test",
"storage_grpc_bucket_metadata_integration_test",
"storage_grpc_default_object_acl_integration_test",
"storage_grpc_integration_test",
"storage_grpc_object_acl_integration_test",
"storage_grpc_object_media_integration_test",
"storage_grpc_object_metadata_integration_test",
"storage_key_file_integration_test",
"storage_minimal_iam_credentials_rest_integration_test",
"storage_object_basic_crud_integration_test",
"storage_object_checksum_integration_test",
"storage_object_compose_many_integration_test",
"storage_object_file_integration_test",
"storage_object_hash_integration_test",
"storage_object_insert_integration_test",
"storage_object_insert_preconditions_integration_test",
"storage_object_integration_test",
"storage_object_list_objects_versions_integration_test",
"storage_object_media_integration_test",
"storage_object_parallel_upload_integration_test",
"storage_object_plenty_clients_serially_integration_test",
"storage_object_plenty_clients_simultaneously_integration_test",
"storage_object_read_headers_integration_test",
"storage_object_read_preconditions_integration_test",
"storage_object_read_range_integration_test",
"storage_object_read_stream_integration_test",
"storage_object_resumable_parallel_upload_integration_test",
"storage_object_resumable_write_integration_test",
"storage_object_rewrite_integration_test",
"storage_object_write_preconditions_integration_test",
"storage_object_write_stream_integration_test",
"storage_object_write_streambuf_integration_test",
"storage_service_account_integration_test",
"storage_signed_url_integration_test",
"storage_small_reads_integration_test",
"storage_thread_integration_test",
"storage_tracing_integration_test",
"storage_unified_credentials_integration_test",
"storage_aggregate_download_throughput_benchmark",
"storage_aggregate_upload_throughput_benchmark",
"storage_create_dataset",
"storage_storage_file_transfer_benchmark",
"storage_storage_parallel_uploads_benchmark",
"storage_storage_throughput_vs_cpu_benchmark",
"storage_throughput_experiment_test"
]
cases = [
"BackupExtraIntegrationTest.CreateBackupWithExpiredVersionTime",
"BackupExtraIntegrationTest.BackupWithExpiredVersionTime",
"BackupExtraIntegrationTest.BackupWithFutureVersionTime",
"BackupExtraIntegrationTest.CreateBackupWithFutureVersionTime",
"BlockingPublisherIntegrationTest.Basic",
"DatabaseAdminClientTest.CreateWithEncryptionKey",
"DatabaseAdminClientTest.CreateWithNonexistentEncryptionKey",
"DatabaseAdminClientTest.DatabaseBasicCRUD",
"DatabaseAdminClientTest.VersionRetentionPeriodCreate",
"DatabaseAdminClientTest.VersionRetentionPeriodCreateFailure",
"DatabaseAdminClientTest.VersionRetentionPeriodUpdate",
"DatabaseAdminClientTest.VersionRetentionPeriodUpdateFailure",
"ErrorParsingIntegrationTest.FailureContainsErrorInfo",
"GrpcServiceAccountIntegrationTest.GetServiceAccount",
"GrpcBucketMetadataIntegrationTest.ObjectMetadataCRUD",
"InstanceAdminClientTest.InstanceConfig",
"InstanceAdminClientTest.InstanceIam",
"InstanceAdminClientTest.InstanceReadOperations",
"LoggingIntegrationTest.ListMonitoredResourceDescriptors",
"LoggingIntegrationTest.WriteLogEntries",
"ObjectFileMultiThreadedTest.Download",
"ObjectReadLargeIntegrationTest.LimitedMemoryGrowth",
"SubscriberIntegrationTest.FireAndForget",
"SubscriberIntegrationTest.PublishOrdered",
"SubscriberIntegrationTest.PublishPullAck",
"SubscriberIntegrationTest.RawStub",
"SubscriberIntegrationTest.ReportNotFound",
"SubscriberIntegrationTest.StreamingSubscriptionBatchSource",
"SubscriptionAdminIntegrationTest.SubscriptionCRUD",
"TopicAdminIntegrationTest.TopicCRUD"
]

View File

@ -828,14 +828,14 @@ rec {
th_TH = th-th; th_TH = th-th;
th-th = mkDict { th-th = mkDict {
pname = "hunspell-dict-th-th"; pname = "hunspell-dict-th-th";
version = "experimental-2023-03-01"; version = "experimental-2024-02-27";
dictFileName = "th_TH"; dictFileName = "th_TH";
readmeFile = "README.md"; readmeFile = "README.md";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "SyafiqHadzir"; owner = "SyafiqHadzir";
repo = "Hunspell-TH"; repo = "Hunspell-TH";
rev = "9c09f1b7c0eb4d04b9f6f427901686c5c3d9fa54"; rev = "62d35f9211ca1eb4c367eac2ae57193efe6e88d2";
sha256 = "1wszpnbgj31k72x1vvcfkzcpmxsncdpqsi3zagah7swilpi7cqm4"; sha256 = "sha256-t4m4u+qIgJPrKz58Cu2Q+knYm/+cvrNLzQsiiSRTB1A=";
}; };
meta = with lib; { meta = with lib; {
description = "Hunspell dictionary for Central Thai (Thailand)"; description = "Hunspell dictionary for Central Thai (Thailand)";

View File

@ -2,13 +2,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "libgbinder"; pname = "libgbinder";
version = "1.1.36"; version = "1.1.37";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "mer-hybris"; owner = "mer-hybris";
repo = pname; repo = pname;
rev = version; rev = version;
sha256 = "sha256-QTlOiZG6qpNeicMJpOTMSTk2WwKbOzkaLulgmsxYaVI="; sha256 = "sha256-/XxWOaT2f6+0apv0NzMsPoYBf3GLuaXyPkmTMTDtOes=";
}; };
outputs = [ "out" "dev" ]; outputs = [ "out" "dev" ];

View File

@ -32,6 +32,11 @@ stdenv.mkDerivation rec {
sha256 = "+h0dKLECtvfsxwD5aRTIgiNI9jG/tortUJYFiYMe60g="; sha256 = "+h0dKLECtvfsxwD5aRTIgiNI9jG/tortUJYFiYMe60g=";
}; };
depsBuildBuild = [
# required to find native gi-docgen when cross compiling
pkg-config
];
nativeBuildInputs = [ nativeBuildInputs = [
gi-docgen gi-docgen
meson meson

View File

@ -42,7 +42,7 @@ let
qtModule = callPackage ./qtModule.nix { }; qtModule = callPackage ./qtModule.nix { };
qtbase = callPackage ./modules/qtbase.nix { qtbase = callPackage ./modules/qtbase.nix {
withGtk3 = true; withGtk3 = !stdenv.hostPlatform.isMinGW;
inherit (srcs.qtbase) src version; inherit (srcs.qtbase) src version;
inherit developerBuild; inherit developerBuild;
inherit (darwin.apple_sdk_11_0.frameworks) inherit (darwin.apple_sdk_11_0.frameworks)
@ -69,47 +69,49 @@ let
]; ];
}; };
env = callPackage ./qt-env.nix { }; env = callPackage ./qt-env.nix { };
full = callPackage ({ env, qtbase }: env "qt-full-${qtbase.version}" full = callPackage
# `with self` is ok to use here because having these spliced is unnecessary ({ env, qtbase }: env "qt-full-${qtbase.version}"
( with self;[ # `with self` is ok to use here because having these spliced is unnecessary
qt3d (with self;[
qt5compat qt3d
qtcharts qt5compat
qtconnectivity qtcharts
qtdatavis3d qtconnectivity
qtdeclarative qtdatavis3d
qtdoc qtdeclarative
qtgraphs qtdoc
qtgrpc qtgraphs
qthttpserver qtgrpc
qtimageformats qthttpserver
qtlanguageserver qtimageformats
qtlocation qtlanguageserver
qtlottie qtlocation
qtmultimedia qtlottie
qtmqtt qtmultimedia
qtnetworkauth qtmqtt
qtpositioning qtnetworkauth
qtsensors qtpositioning
qtserialbus qtsensors
qtserialport qtserialbus
qtshadertools qtserialport
qtspeech qtshadertools
qtquick3d qtspeech
qtquick3dphysics qtquick3d
qtquickeffectmaker qtquick3dphysics
qtquicktimeline qtquickeffectmaker
qtremoteobjects qtquicktimeline
qtsvg qtremoteobjects
qtscxml qtsvg
qttools qtscxml
qttranslations qttools
qtvirtualkeyboard qttranslations
qtwebchannel qtvirtualkeyboard
qtwebengine qtwebchannel
qtwebsockets qtwebengine
qtwebview qtwebsockets
] ++ lib.optionals (!stdenv.hostPlatform.isDarwin) [ qtwayland libglvnd ])) { }; qtwebview
] ++ lib.optionals (!stdenv.isDarwin) [ qtwayland libglvnd ]))
{ };
qt3d = callPackage ./modules/qt3d.nix { }; qt3d = callPackage ./modules/qt3d.nix { };
qt5compat = callPackage ./modules/qt5compat.nix { }; qt5compat = callPackage ./modules/qt5compat.nix { };
@ -162,11 +164,14 @@ let
GameController ImageCaptureCore LocalAuthentication GameController ImageCaptureCore LocalAuthentication
MediaAccessibility MediaPlayer MetalKit Network OpenDirectory Quartz MediaAccessibility MediaPlayer MetalKit Network OpenDirectory Quartz
ReplayKit SecurityInterface Vision; ReplayKit SecurityInterface Vision;
qtModule = callPackage ({ qtModule }: qtModule.override { qtModule = callPackage
stdenv = if stdenv.hostPlatform.isDarwin ({ qtModule }: qtModule.override {
then overrideSDK stdenv { darwinMinVersion = "10.13"; darwinSdkVersion = "11.0"; } stdenv =
else stdenv; if stdenv.isDarwin
}) { }; then overrideSDK stdenv { darwinMinVersion = "10.13"; darwinSdkVersion = "11.0"; }
else stdenv;
})
{ };
xcbuild = buildPackages.xcbuild.override { xcbuild = buildPackages.xcbuild.override {
productBuildVer = "20A2408"; productBuildVer = "20A2408";
}; };
@ -176,21 +181,25 @@ let
inherit (darwin.apple_sdk_11_0.frameworks) WebKit; inherit (darwin.apple_sdk_11_0.frameworks) WebKit;
}; };
wrapQtAppsHook = callPackage ({ makeBinaryWrapper }: makeSetupHook wrapQtAppsHook = callPackage
{ ({ makeBinaryWrapper }: makeSetupHook
name = "wrap-qt6-apps-hook"; {
propagatedBuildInputs = [ makeBinaryWrapper ]; name = "wrap-qt6-apps-hook";
} ./hooks/wrap-qt-apps-hook.sh) { }; propagatedBuildInputs = [ makeBinaryWrapper ];
} ./hooks/wrap-qt-apps-hook.sh)
{ };
qmake = callPackage ({ qtbase }: makeSetupHook qmake = callPackage
{ ({ qtbase }: makeSetupHook
name = "qmake6-hook"; {
propagatedBuildInputs = [ qtbase.dev ]; name = "qmake6-hook";
substitutions = { propagatedBuildInputs = [ qtbase.dev ];
inherit debug; substitutions = {
fix_qmake_libtool = ./hooks/fix-qmake-libtool.sh; inherit debug;
}; fix_qmake_libtool = ./hooks/fix-qmake-libtool.sh;
} ./hooks/qmake-hook.sh) { }; };
} ./hooks/qmake-hook.sh)
{ };
} // lib.optionalAttrs config.allowAliases { } // lib.optionalAttrs config.allowAliases {
# Convert to a throw on 03-01-2023 and backport the change. # Convert to a throw on 03-01-2023 and backport the change.
# Warnings show up in various cli tool outputs, throws do not. # Warnings show up in various cli tool outputs, throws do not.
@ -203,12 +212,13 @@ let
f = addPackages; f = addPackages;
}; };
bootstrapScope = baseScope.overrideScope(final: prev: { bootstrapScope = baseScope.overrideScope (final: prev: {
qtbase = prev.qtbase.override { qttranslations = null; }; qtbase = prev.qtbase.override { qttranslations = null; };
qtdeclarative = null; qtdeclarative = null;
}); });
finalScope = baseScope.overrideScope(final: prev: { finalScope = baseScope.overrideScope (final: prev: {
qttranslations = bootstrapScope.qttranslations; qttranslations = bootstrapScope.qttranslations;
}); });
in finalScope in
finalScope

View File

@ -4,6 +4,7 @@
, patches ? [ ] , patches ? [ ]
, version , version
, coreutils , coreutils
, buildPackages
, bison , bison
, flex , flex
, gdb , gdb
@ -79,6 +80,8 @@
, EventKit , EventKit
, GSS , GSS
, MetalKit , MetalKit
# mingw
, pkgsBuildBuild
# optional dependencies # optional dependencies
, cups , cups
, libmysqlclient , libmysqlclient
@ -96,6 +99,7 @@
let let
debugSymbols = debug || developerBuild; debugSymbols = debug || developerBuild;
isCrossBuild = !stdenv.buildPlatform.canExecute stdenv.hostPlatform;
in in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "qtbase"; pname = "qtbase";
@ -110,7 +114,6 @@ stdenv.mkDerivation rec {
openssl openssl
sqlite sqlite
zlib zlib
unixODBC
# Text rendering # Text rendering
harfbuzz harfbuzz
icu icu
@ -119,14 +122,16 @@ stdenv.mkDerivation rec {
libpng libpng
pcre2 pcre2
pcre pcre
libproxy
zstd zstd
double-conversion
libb2 libb2
md4c md4c
double-conversion
] ++ lib.optionals (!stdenv.hostPlatform.isMinGW) [
libproxy
dbus dbus
glib glib
# unixODBC drivers # unixODBC drivers
unixODBC
unixODBCDrivers.psql unixODBCDrivers.psql
unixODBCDrivers.sqlite unixODBCDrivers.sqlite
unixODBCDrivers.mariadb unixODBCDrivers.mariadb
@ -174,11 +179,16 @@ stdenv.mkDerivation rec {
EventKit EventKit
GSS GSS
MetalKit MetalKit
] ++ lib.optional libGLSupported libGL; ] ++ lib.optionals libGLSupported [
libGL
] ++ lib.optionals stdenv.hostPlatform.isMinGW [
vulkan-headers
vulkan-loader
];
buildInputs = [ buildInputs = lib.optionals (lib.meta.availableOn stdenv.hostPlatform at-spi2-core) [
at-spi2-core at-spi2-core
] ++ lib.optionals (!stdenv.hostPlatform.isDarwin) [ ] ++ lib.optionals (lib.meta.availableOn stdenv.hostPlatform libinput) [
libinput libinput
] ++ lib.optionals (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isx86_64) [ ] ++ lib.optionals (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isx86_64) [
AppKit AppKit
@ -186,9 +196,9 @@ stdenv.mkDerivation rec {
] ]
++ lib.optional withGtk3 gtk3 ++ lib.optional withGtk3 gtk3
++ lib.optional developerBuild gdb ++ lib.optional developerBuild gdb
++ lib.optional (cups != null) cups ++ lib.optional (cups != null && lib.meta.availableOn stdenv.hostPlatform cups) cups
++ lib.optional (libmysqlclient != null) libmysqlclient ++ lib.optional (libmysqlclient != null && !stdenv.hostPlatform.isMinGW) libmysqlclient
++ lib.optional (postgresql != null) postgresql; ++ lib.optional (postgresql != null && lib.meta.availableOn stdenv.hostPlatform postgresql) postgresql;
nativeBuildInputs = [ bison flex gperf lndir perl pkg-config which cmake xmlstarlet ninja ] nativeBuildInputs = [ bison flex gperf lndir perl pkg-config which cmake xmlstarlet ninja ]
++ lib.optionals stdenv.hostPlatform.isDarwin [ moveBuildTree ]; ++ lib.optionals stdenv.hostPlatform.isDarwin [ moveBuildTree ];
@ -203,7 +213,7 @@ stdenv.mkDerivation rec {
# https://bugreports.qt.io/browse/QTBUG-97568 # https://bugreports.qt.io/browse/QTBUG-97568
postPatch = '' postPatch = ''
substituteInPlace src/corelib/CMakeLists.txt --replace-fail "/bin/ls" "${coreutils}/bin/ls" substituteInPlace src/corelib/CMakeLists.txt --replace-fail "/bin/ls" "${buildPackages.coreutils}/bin/ls"
'' + lib.optionalString stdenv.hostPlatform.isDarwin '' '' + lib.optionalString stdenv.hostPlatform.isDarwin ''
substituteInPlace cmake/QtPublicAppleHelpers.cmake --replace-fail "/usr/bin/xcrun" "${xcbuild}/bin/xcrun" substituteInPlace cmake/QtPublicAppleHelpers.cmake --replace-fail "/usr/bin/xcrun" "${xcbuild}/bin/xcrun"
''; '';
@ -232,7 +242,11 @@ stdenv.mkDerivation rec {
] ++ lib.optionals stdenv.hostPlatform.isDarwin [ ] ++ lib.optionals stdenv.hostPlatform.isDarwin [
# error: 'path' is unavailable: introduced in macOS 10.15 # error: 'path' is unavailable: introduced in macOS 10.15
"-DQT_FEATURE_cxx17_filesystem=OFF" "-DQT_FEATURE_cxx17_filesystem=OFF"
] ++ lib.optional (qttranslations != null) "-DINSTALL_TRANSLATIONSDIR=${qttranslations}/translations"; ] ++ lib.optionals isCrossBuild [
"-DQT_HOST_PATH=${pkgsBuildBuild.qt6.qtbase}"
"-DQt6HostInfo_DIR=${pkgsBuildBuild.qt6.qtbase}/lib/cmake/Qt6HostInfo"
]
++ lib.optional (qttranslations != null && !isCrossBuild) "-DINSTALL_TRANSLATIONSDIR=${qttranslations}/translations";
env.NIX_LDFLAGS = toString (lib.optionals stdenv.hostPlatform.isDarwin [ env.NIX_LDFLAGS = toString (lib.optionals stdenv.hostPlatform.isDarwin [
# Undefined symbols for architecture arm64: "___gss_c_nt_hostbased_service_oid_desc" # Undefined symbols for architecture arm64: "___gss_c_nt_hostbased_service_oid_desc"
@ -253,6 +267,8 @@ stdenv.mkDerivation rec {
dontStrip = debugSymbols; dontStrip = debugSymbols;
dontWrapQtApps = true;
setupHook = ../hooks/qtbase-setup-hook.sh; setupHook = ../hooks/qtbase-setup-hook.sh;
meta = with lib; { meta = with lib; {
@ -260,6 +276,6 @@ stdenv.mkDerivation rec {
description = "A cross-platform application framework for C++"; description = "A cross-platform application framework for C++";
license = with licenses; [ fdl13Plus gpl2Plus lgpl21Plus lgpl3Plus ]; license = with licenses; [ fdl13Plus gpl2Plus lgpl21Plus lgpl3Plus ];
maintainers = with maintainers; [ milahu nickcao LunNova ]; maintainers = with maintainers; [ milahu nickcao LunNova ];
platforms = platforms.unix; platforms = platforms.unix ++ platforms.windows;
}; };
} }

View File

@ -1,19 +1,19 @@
From f0c4d3860b75cb064d066045907622d536044096 Mon Sep 17 00:00:00 2001 From 6f0e6fe1e13ca5844a93d3b97111b7ece7e60f0f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Milan=20P=C3=A4ssler?= <me@pbb.lc> From: =?UTF-8?q?Milan=20P=C3=A4ssler?= <me@pbb.lc>
Date: Sun, 10 May 2020 12:47:28 +0200 Date: Sun, 10 May 2020 12:47:28 +0200
Subject: [PATCH 11/11] qtbase: derive plugin load path from PATH Subject: [PATCH 11/11] qtbase: derive plugin load path from PATH
--- ---
src/corelib/kernel/qcoreapplication.cpp | 10 ++++++++++ src/corelib/kernel/qcoreapplication.cpp | 9 +++++++++
1 file changed, 10 insertions(+) 1 file changed, 9 insertions(+)
diff --git a/src/corelib/kernel/qcoreapplication.cpp b/src/corelib/kernel/qcoreapplication.cpp diff --git a/src/corelib/kernel/qcoreapplication.cpp b/src/corelib/kernel/qcoreapplication.cpp
index a80efbb5622..8cf9e85da43 100644 index a80efbb5622..0d41dabeed3 100644
--- a/src/corelib/kernel/qcoreapplication.cpp --- a/src/corelib/kernel/qcoreapplication.cpp
+++ b/src/corelib/kernel/qcoreapplication.cpp +++ b/src/corelib/kernel/qcoreapplication.cpp
@@ -2991,6 +2991,16 @@ QStringList QCoreApplication::libraryPathsLocked() @@ -3032,6 +3032,15 @@ QStringList QCoreApplication::libraryPathsLocked()
QStringList *app_libpaths = new QStringList; app_libpaths->append(installPathPlugins);
coreappdata()->app_libpaths.reset(app_libpaths); }
+ // Add library paths derived from PATH + // Add library paths derived from PATH
+ const QStringList paths = QFile::decodeName(qgetenv("PATH")).split(QStringLiteral(":")); + const QStringList paths = QFile::decodeName(qgetenv("PATH")).split(QStringLiteral(":"));
@ -24,10 +24,9 @@ index a80efbb5622..8cf9e85da43 100644
+ } + }
+ } + }
+ +
+ // If QCoreApplication is not yet instantiated,
auto setPathsFromEnv = [&](QString libPathEnv) { // make sure we add the application path when we construct the QCoreApplication
if (!libPathEnv.isEmpty()) { if (self) self->d_func()->appendApplicationPathToLibraryPaths();
QStringList paths = libPathEnv.split(QDir::listSeparator(), Qt::SkipEmptyParts);
-- --
2.42.0 2.43.1

View File

@ -7,7 +7,7 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "suitesparse-graphblas"; pname = "suitesparse-graphblas";
version = "9.0.1"; version = "9.0.2";
outputs = [ "out" "dev" ]; outputs = [ "out" "dev" ];
@ -15,7 +15,7 @@ stdenv.mkDerivation rec {
owner = "DrTimothyAldenDavis"; owner = "DrTimothyAldenDavis";
repo = "GraphBLAS"; repo = "GraphBLAS";
rev = "v${version}"; rev = "v${version}";
hash = "sha256-eNd6jlpW3KiRvOCKvNP5ttpgjPPXt2M2vLhk1Zn4gTE="; hash = "sha256-wPg5A1lwtRPDO5gPbllEFkRJFRIhkqqaVd4CBdPavKE=";
}; };
nativeBuildInputs = [ nativeBuildInputs = [

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