Merge master into haskell-updates

This commit is contained in:
github-actions[bot] 2022-10-14 00:21:48 +00:00 committed by GitHub
commit 9602cb4aa1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
419 changed files with 6841 additions and 3345 deletions

View File

@ -19,8 +19,8 @@ jobs:
# we don't limit this action to only NixOS repo since the checks are cheap and useful developer feedback
steps:
- uses: actions/checkout@v3
- uses: cachix/install-nix-action@v17
- uses: cachix/cachix-action@v10
- uses: cachix/install-nix-action@v18
- uses: cachix/cachix-action@v11
with:
# This cache is for the nixpkgs repo checks and should not be trusted or used elsewhere.
name: nixpkgs-ci

View File

@ -28,7 +28,7 @@ jobs:
with:
# pull_request_target checks out the base branch by default
ref: refs/pull/${{ github.event.pull_request.number }}/merge
- uses: cachix/install-nix-action@v17
- uses: cachix/install-nix-action@v18
with:
# nixpkgs commit is pinned so that it doesn't break
# editorconfig-checker 2.4.0

View File

@ -18,11 +18,11 @@ jobs:
with:
# pull_request_target checks out the base branch by default
ref: refs/pull/${{ github.event.pull_request.number }}/merge
- uses: cachix/install-nix-action@v17
- uses: cachix/install-nix-action@v18
with:
# explicitly enable sandbox
extra_nix_config: sandbox = true
- uses: cachix/cachix-action@v10
- uses: cachix/cachix-action@v11
with:
# This cache is for the nixpkgs repo checks and should not be trusted or used elsewhere.
name: nixpkgs-ci

View File

@ -18,11 +18,11 @@ jobs:
with:
# pull_request_target checks out the base branch by default
ref: refs/pull/${{ github.event.pull_request.number }}/merge
- uses: cachix/install-nix-action@v17
- uses: cachix/install-nix-action@v18
with:
# explicitly enable sandbox
extra_nix_config: sandbox = true
- uses: cachix/cachix-action@v10
- uses: cachix/cachix-action@v11
with:
# This cache is for the nixpkgs repo checks and should not be trusted or used elsewhere.
name: nixpkgs-ci

View File

@ -18,11 +18,11 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: cachix/install-nix-action@v17
- uses: cachix/install-nix-action@v18
with:
# explicitly enable sandbox
extra_nix_config: sandbox = true
- uses: cachix/cachix-action@v10
- uses: cachix/cachix-action@v11
with:
# This cache is for the nixpkgs repo checks and should not be trusted or used elsewhere.
name: nixpkgs-ci

View File

@ -19,7 +19,7 @@ jobs:
with:
# pull_request_target checks out the base branch by default
ref: refs/pull/${{ github.event.pull_request.number }}/merge
- uses: cachix/install-nix-action@v17
- uses: cachix/install-nix-action@v18
- name: Check DocBook files generated from Markdown are consistent
run: |
nixos/doc/manual/md-to-db.sh

View File

@ -17,7 +17,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: cachix/install-nix-action@v17
- uses: cachix/install-nix-action@v18
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: setup

View File

@ -0,0 +1,4 @@
### Autoconf {#setup-hook-autoconf}
The `autoreconfHook` derivation adds `autoreconfPhase`, which runs autoreconf, libtoolize and automake, essentially preparing the configure script in autotools-based builds. Most autotools-based packages come with the configure script pre-generated, but this hook is necessary for a few packages and when you need to patch the packages configure scripts.

View File

@ -0,0 +1,4 @@
### Automake {#setup-hook-automake}
Adds the `share/aclocal` subdirectory of each build input to the `ACLOCAL_PATH` environment variable.

View File

@ -0,0 +1,12 @@
### autoPatchelfHook {#setup-hook-autopatchelfhook}
This is a special setup hook which helps in packaging proprietary software in that it automatically tries to find missing shared library dependencies of ELF files based on the given `buildInputs` and `nativeBuildInputs`.
You can also specify a `runtimeDependencies` variable which lists dependencies to be unconditionally added to rpath of all executables. This is useful for programs that use dlopen 3 to load libraries at runtime.
In certain situations you may want to run the main command (`autoPatchelf`) of the setup hook on a file or a set of directories instead of unconditionally patching all outputs. This can be done by setting the `dontAutoPatchelf` environment variable to a non-empty value.
By default `autoPatchelf` will fail as soon as any ELF file requires a dependency which cannot be resolved via the given build inputs. In some situations you might prefer to just leave missing dependencies unpatched and continue to patch the rest. This can be achieved by setting the `autoPatchelfIgnoreMissingDeps` environment variable to a non-empty value. `autoPatchelfIgnoreMissingDeps` can be set to a list like `autoPatchelfIgnoreMissingDeps = [ "libcuda.so.1" "libcudart.so.1" ];` or to simply `[ "*" ]` to ignore all missing dependencies.
The `autoPatchelf` command also recognizes a `--no-recurse` command line flag, which prevents it from recursing into subdirectories.

View File

@ -0,0 +1,18 @@
### breakpointHook {#breakpointhook}
This hook will make a build pause instead of stopping when a failure happens. It prevents nix from cleaning up the build environment immediately and allows the user to attach to a build environment using the `cntr` command. Upon build error it will print instructions on how to use `cntr`, which can be used to enter the environment for debugging. Installing cntr and running the command will provide shell access to the build sandbox of failed build. At `/var/lib/cntr` the sandboxed filesystem is mounted. All commands and files of the system are still accessible within the shell. To execute commands from the sandbox use the cntr exec subcommand. `cntr` is only supported on Linux-based platforms. To use it first add `cntr` to your `environment.systemPackages` on NixOS or alternatively to the root user on non-NixOS systems. Then in the package that is supposed to be inspected, add `breakpointHook` to `nativeBuildInputs`.
```nix
nativeBuildInputs = [ breakpointHook ];
```
When a build failure happens there will be an instruction printed that shows how to attach with `cntr` to the build sandbox.
::: {.note}
::: {.title}
Caution with remote builds
:::
This wont work with remote builds as the build environment is on a different machine and cant be accessed by `cntr`. Remote builds can be turned off by setting `--option builders ''` for `nix-build` or `--builders ''` for `nix build`.
:::

View File

@ -0,0 +1,4 @@
### cmake {#cmake}
Overrides the default configure phase to run the CMake command. By default, we use the Make generator of CMake. In addition, dependencies are added automatically to `CMAKE_PREFIX_PATH` so that packages are correctly detected by CMake. Some additional flags are passed in to give similar behavior to configure-based packages. You can disable this hooks behavior by setting `configurePhase` to a custom value, or by setting `dontUseCmakeConfigure`. `cmakeFlags` controls flags passed only to CMake. By default, parallel building is enabled as CMake supports parallel building almost everywhere. When Ninja is also in use, CMake will detect that and use the ninja generator.

View File

@ -0,0 +1,4 @@
### gdk-pixbuf {#setup-hook-gdk-pixbuf}
Exports `GDK_PIXBUF_MODULE_FILE` environment variable to the builder. Add librsvg package to `buildInputs` to get svg support. See also the [setup hook description in GNOME platform docs](#ssec-gnome-hooks-gdk-pixbuf).

4
doc/hooks/ghc.section.md Normal file
View File

@ -0,0 +1,4 @@
### GHC {#ghc}
Creates a temporary package database and registers every Haskell build input in it (TODO: how?).

View File

@ -0,0 +1,4 @@
### GNOME platform {#gnome-platform}
Hooks related to GNOME platform and related libraries like GLib, GTK and GStreamer are described in [](#sec-language-gnome).

View File

@ -6,5 +6,31 @@
<para>
Nixpkgs has several hook packages that augment the stdenv phases.
</para>
<para>
The stdenv built-in hooks are documented in <xref linkend="ssec-setup-hooks"/>.
</para>
<xi:include href="./autoconf.section.xml" />
<xi:include href="./automake.section.xml" />
<xi:include href="./autopatchelf.section.xml" />
<xi:include href="./breakpoint.section.xml" />
<xi:include href="./cmake.section.xml" />
<xi:include href="./gdk-pixbuf.section.xml" />
<xi:include href="./ghc.section.xml" />
<xi:include href="./gnome.section.xml" />
<xi:include href="./installShellFiles.section.xml" />
<xi:include href="./libiconv.section.xml" />
<xi:include href="./libxml2.section.xml" />
<xi:include href="./meson.section.xml" />
<xi:include href="./ninja.section.xml" />
<xi:include href="./perl.section.xml" />
<xi:include href="./pkg-config.section.xml" />
<xi:include href="./postgresql-test-hook.section.xml" />
<xi:include href="./python.section.xml" />
<xi:include href="./qt-4.section.xml" />
<xi:include href="./scons.section.xml" />
<xi:include href="./tetex-tex-live.section.xml" />
<xi:include href="./unzip.section.xml" />
<xi:include href="./validatePkgConfig.section.xml" />
<xi:include href="./waf.section.xml" />
<xi:include href="./xcbuild.section.xml" />
</chapter>

View File

@ -0,0 +1,26 @@
### `installShellFiles` {#installshellfiles}
This hook helps with installing manpages and shell completion files. It exposes 2 shell functions `installManPage` and `installShellCompletion` that can be used from your `postInstall` hook.
The `installManPage` function takes one or more paths to manpages to install. The manpages must have a section suffix, and may optionally be compressed (with `.gz` suffix). This function will place them into the correct directory.
The `installShellCompletion` function takes one or more paths to shell completion files. By default it will autodetect the shell type from the completion file extension, but you may also specify it by passing one of `--bash`, `--fish`, or `--zsh`. These flags apply to all paths listed after them (up until another shell flag is given). Each path may also have a custom installation name provided by providing a flag `--name NAME` before the path. If this flag is not provided, zsh completions will be renamed automatically such that `foobar.zsh` becomes `_foobar`. A root name may be provided for all paths using the flag `--cmd NAME`; this synthesizes the appropriate name depending on the shell (e.g. `--cmd foo` will synthesize the name `foo.bash` for bash and `_foo` for zsh). The path may also be a fifo or named fd (such as produced by `<(cmd)`), in which case the shell and name must be provided.
```nix
nativeBuildInputs = [ installShellFiles ];
postInstall = ''
installManPage doc/foobar.1 doc/barfoo.3
# explicit behavior
installShellCompletion --bash --name foobar.bash share/completions.bash
installShellCompletion --fish --name foobar.fish share/completions.fish
installShellCompletion --zsh --name _foobar share/completions.zsh
# implicit behavior
installShellCompletion share/completions/foobar.{bash,fish,zsh}
# using named fd
installShellCompletion --cmd foobar \
--bash <($out/bin/foobar --bash-completion) \
--fish <($out/bin/foobar --fish-completion) \
--zsh <($out/bin/foobar --zsh-completion)
'';
```

View File

@ -0,0 +1,4 @@
### libiconv, libintl {#libiconv-libintl}
A few libraries automatically add to `NIX_LDFLAGS` their library, making their symbols automatically available to the linker. This includes libiconv and libintl (gettext). This is done to provide compatibility between GNU Linux, where libiconv and libintl are bundled in, and other systems where that might not be the case. Sometimes, this behavior is not desired. To disable this behavior, set `dontAddExtraLibs`.

View File

@ -0,0 +1,4 @@
### libxml2 {#setup-hook-libxml2}
Adds every file named `catalog.xml` found under the `xml/dtd` and `xml/xsl` subdirectories of each build input to the `XML_CATALOG_FILES` environment variable.

View File

@ -0,0 +1,26 @@
### Meson {#meson}
Overrides the configure phase to run meson to generate Ninja files. To run these files, you should accompany Meson with ninja. By default, `enableParallelBuilding` is enabled as Meson supports parallel building almost everywhere.
#### Variables controlling Meson {#variables-controlling-meson}
##### `mesonFlags` {#mesonflags}
Controls the flags passed to meson.
##### `mesonBuildType` {#mesonbuildtype}
Which [`--buildtype`](https://mesonbuild.com/Builtin-options.html#core-options) to pass to Meson. We default to `plain`.
##### `mesonAutoFeatures` {#mesonautofeatures}
What value to set [`-Dauto_features=`](https://mesonbuild.com/Builtin-options.html#core-options) to. We default to `enabled`.
##### `mesonWrapMode` {#mesonwrapmode}
What value to set [`-Dwrap_mode=`](https://mesonbuild.com/Builtin-options.html#core-options) to. We default to `nodownload` as we disallow network access.
##### `dontUseMesonConfigure` {#dontusemesonconfigure}
Disables using Mesons `configurePhase`.

View File

@ -0,0 +1,4 @@
### ninja {#ninja}
Overrides the build, install, and check phase to run ninja instead of make. You can disable this behavior with the `dontUseNinjaBuild`, `dontUseNinjaInstall`, and `dontUseNinjaCheck`, respectively. Parallel building is enabled by default in Ninja.

View File

@ -0,0 +1,4 @@
### Perl {#setup-hook-perl}
Adds the `lib/site_perl` subdirectory of each build input to the `PERL5LIB` environment variable. For instance, if `buildInputs` contains Perl, then the `lib/site_perl` subdirectory of each input is added to the `PERL5LIB` environment variable.

View File

@ -0,0 +1,4 @@
### pkg-config {#setup-hook-pkg-config}
Adds the `lib/pkgconfig` and `share/pkgconfig` subdirectories of each build input to the `PKG_CONFIG_PATH` environment variable.

View File

@ -0,0 +1,4 @@
### Python {#setup-hook-python}
Adds the `lib/${python.libPrefix}/site-packages` subdirectory of each build input to the `PYTHONPATH` environment variable.

View File

@ -0,0 +1,4 @@
### Qt 4 {#qt-4}
Sets the `QTDIR` environment variable to Qts path.

View File

@ -0,0 +1,4 @@
### scons {#scons}
Overrides the build, install, and check phases. This uses the scons build system as a replacement for make. scons does not provide a configure phase, so everything is managed at build and install time.

View File

@ -0,0 +1,4 @@
### teTeX / TeX Live {#tetex-tex-live}
Adds the `share/texmf-nix` subdirectory of each build input to the `TEXINPUTS` environment variable.

View File

@ -0,0 +1,4 @@
### unzip {#unzip}
This setup hook will allow you to unzip .zip files specified in `$src`. There are many similar packages like `unrar`, `undmg`, etc.

View File

@ -0,0 +1,4 @@
### validatePkgConfig {#validatepkgconfig}
The `validatePkgConfig` hook validates all pkg-config (`.pc`) files in a package. This helps catching some common errors in pkg-config files, such as undefined variables.

4
doc/hooks/waf.section.md Normal file
View File

@ -0,0 +1,4 @@
### wafHook {#wafhook}
Overrides the configure, build, and install phases. This will run the “waf” script used by many projects. If `wafPath` (default `./waf`) doesnt exist, it will copy the version of waf available in Nixpkgs. `wafFlags` can be used to pass flags to the waf script.

View File

@ -0,0 +1,4 @@
### xcbuildHook {#xcbuildhook}
Overrides the build and install phases to run the "xcbuild" command. This hook is needed when a project only comes with build files for the XCode build system. You can disable this behavior by setting buildPhase and configurePhase to a custom value. xcbuildFlags controls flags passed only to xcbuild.

View File

@ -1109,13 +1109,15 @@ This setup hook moves any libraries installed in the `lib64/` subdirectory into
This setup hook moves any systemd user units installed in the `lib/` subdirectory into `share/`. In addition, a link is provided from `share/` to `lib/` for compatibility. This is needed for systemd to find user services when installed into the user profile.
This hook only runs when compiling for Linux.
### `set-source-date-epoch-to-latest.sh` {#set-source-date-epoch-to-latest.sh}
This sets `SOURCE_DATE_EPOCH` to the modification time of the most recent file.
### Bintools Wrapper {#bintools-wrapper}
### Bintools Wrapper and hook {#bintools-wrapper}
The Bintools Wrapper wraps the binary utilities for a bunch of miscellaneous purposes. These are GNU Binutils when targetting Linux, and a mix of cctools and GNU binutils for Darwin. \[The “Bintools” name is supposed to be a compromise between “Binutils” and “cctools” not denoting any specific implementation.\] Specifically, the underlying bintools package, and a C standard library (glibc or Darwins libSystem, just for the dynamic loader) are all fed in, and dependency finding, hardening (see below), and purity checks for each are handled by the Bintools Wrapper. Packages typically depend on CC Wrapper, which in turn (at run time) depends on the Bintools Wrapper.
The Bintools Wrapper wraps the binary utilities for a bunch of miscellaneous purposes. These are GNU Binutils when targeting Linux, and a mix of cctools and GNU binutils for Darwin. \[The “Bintools” name is supposed to be a compromise between “Binutils” and “cctools” not denoting any specific implementation.\] Specifically, the underlying bintools package, and a C standard library (glibc or Darwins libSystem, just for the dynamic loader) are all fed in, and dependency finding, hardening (see below), and purity checks for each are handled by the Bintools Wrapper. Packages typically depend on CC Wrapper, which in turn (at run time) depends on the Bintools Wrapper.
The Bintools Wrapper was only just recently split off from CC Wrapper, so the division of labor is still being worked out. For example, it shouldnt care about the C standard library, but just take a derivation with the dynamic loader (which happens to be the glibc on linux). Dependency finding however is a task both wrappers will continue to need to share, and probably the most important to understand. It is currently accomplished by collecting directories of host-platform dependencies (i.e. `buildInputs` and `nativeBuildInputs`) in environment variables. The Bintools Wrappers setup hook causes any `lib` and `lib64` subdirectories to be added to `NIX_LDFLAGS`. Since the CC Wrapper and the Bintools Wrapper use the same strategy, most of the Bintools Wrapper code is sparsely commented and refers to the CC Wrapper. But the CC Wrappers code, by contrast, has quite lengthy comments. The Bintools Wrapper merely cites those, rather than repeating them, to avoid falling out of sync.
@ -1123,173 +1125,20 @@ A final task of the setup hook is defining a number of standard environment vari
A problem with this final task is that the Bintools Wrapper is honest and defines `LD` as `ld`. Most packages, however, firstly use the C compiler for linking, secondly use `LD` anyways, defining it as the C compiler, and thirdly, only so define `LD` when it is undefined as a fallback. This triple-threat means Bintools Wrapper will break those packages, as LD is already defined as the actual linker which the package wont override yet doesnt want to use. The workaround is to define, just for the problematic package, `LD` as the C compiler. A good way to do this would be `preConfigure = "LD=$CC"`.
### CC Wrapper {#cc-wrapper}
### CC Wrapper and hook {#cc-wrapper}
The CC Wrapper wraps a C toolchain for a bunch of miscellaneous purposes. Specifically, a C compiler (GCC or Clang), wrapped binary tools, and a C standard library (glibc or Darwins libSystem, just for the dynamic loader) are all fed in, and dependency finding, hardening (see below), and purity checks for each are handled by the CC Wrapper. Packages typically depend on the CC Wrapper, which in turn (at run-time) depends on the Bintools Wrapper.
Dependency finding is undoubtedly the main task of the CC Wrapper. This works just like the Bintools Wrapper, except that any `include` subdirectory of any relevant dependency is added to `NIX_CFLAGS_COMPILE`. The setup hook itself contains some lengthy comments describing the exact convoluted mechanism by which this is accomplished.
Dependency finding is undoubtedly the main task of the CC Wrapper. This works just like the Bintools Wrapper, except that any `include` subdirectory of any relevant dependency is added to `NIX_CFLAGS_COMPILE`. The setup hook itself contains elaborate comments describing the exact mechanism by which this is accomplished.
Similarly, the CC Wrapper follows the Bintools Wrapper in defining standard environment variables with the names of the tools it wraps, for the same reasons described above. Importantly, while it includes a `cc` symlink to the c compiler for portability, the `CC` will be defined using the compilers “real name” (i.e. `gcc` or `clang`). This helps lousy build systems that inspect on the name of the compiler rather than run it.
Here are some more packages that provide a setup hook. Since the list of hooks is extensible, this is not an exhaustive list. The mechanism is only to be used as a last resort, so it might cover most uses.
### Perl {#setup-hook-perl}
### Other hooks
Adds the `lib/site_perl` subdirectory of each build input to the `PERL5LIB` environment variable. For instance, if `buildInputs` contains Perl, then the `lib/site_perl` subdirectory of each input is added to the `PERL5LIB` environment variable.
### Python {#setup-hook-python}
Adds the `lib/${python.libPrefix}/site-packages` subdirectory of each build input to the `PYTHONPATH` environment variable.
### pkg-config {#setup-hook-pkg-config}
Adds the `lib/pkgconfig` and `share/pkgconfig` subdirectories of each build input to the `PKG_CONFIG_PATH` environment variable.
### Automake {#setup-hook-automake}
Adds the `share/aclocal` subdirectory of each build input to the `ACLOCAL_PATH` environment variable.
### Autoconf {#setup-hook-autoconf}
The `autoreconfHook` derivation adds `autoreconfPhase`, which runs autoreconf, libtoolize and automake, essentially preparing the configure script in autotools-based builds. Most autotools-based packages come with the configure script pre-generated, but this hook is necessary for a few packages and when you need to patch the packages configure scripts.
### libxml2 {#setup-hook-libxml2}
Adds every file named `catalog.xml` found under the `xml/dtd` and `xml/xsl` subdirectories of each build input to the `XML_CATALOG_FILES` environment variable.
### teTeX / TeX Live {#tetex-tex-live}
Adds the `share/texmf-nix` subdirectory of each build input to the `TEXINPUTS` environment variable.
### Qt 4 {#qt-4}
Sets the `QTDIR` environment variable to Qts path.
### gdk-pixbuf {#setup-hook-gdk-pixbuf}
Exports `GDK_PIXBUF_MODULE_FILE` environment variable to the builder. Add librsvg package to `buildInputs` to get svg support. See also the [setup hook description in GNOME platform docs](#ssec-gnome-hooks-gdk-pixbuf).
### GHC {#ghc}
Creates a temporary package database and registers every Haskell build input in it (TODO: how?).
### GNOME platform {#gnome-platform}
Hooks related to GNOME platform and related libraries like GLib, GTK and GStreamer are described in [](#sec-language-gnome).
### autoPatchelfHook {#setup-hook-autopatchelfhook}
This is a special setup hook which helps in packaging proprietary software in that it automatically tries to find missing shared library dependencies of ELF files based on the given `buildInputs` and `nativeBuildInputs`.
You can also specify a `runtimeDependencies` variable which lists dependencies to be unconditionally added to rpath of all executables. This is useful for programs that use dlopen 3 to load libraries at runtime.
In certain situations you may want to run the main command (`autoPatchelf`) of the setup hook on a file or a set of directories instead of unconditionally patching all outputs. This can be done by setting the `dontAutoPatchelf` environment variable to a non-empty value.
By default `autoPatchelf` will fail as soon as any ELF file requires a dependency which cannot be resolved via the given build inputs. In some situations you might prefer to just leave missing dependencies unpatched and continue to patch the rest. This can be achieved by setting the `autoPatchelfIgnoreMissingDeps` environment variable to a non-empty value. `autoPatchelfIgnoreMissingDeps` can be set to a list like `autoPatchelfIgnoreMissingDeps = [ "libcuda.so.1" "libcudart.so.1" ];` or to simply `[ "*" ]` to ignore all missing dependencies.
The `autoPatchelf` command also recognizes a `--no-recurse` command line flag, which prevents it from recursing into subdirectories.
### breakpointHook {#breakpointhook}
This hook will make a build pause instead of stopping when a failure happens. It prevents nix from cleaning up the build environment immediately and allows the user to attach to a build environment using the `cntr` command. Upon build error it will print instructions on how to use `cntr`, which can be used to enter the environment for debugging. Installing cntr and running the command will provide shell access to the build sandbox of failed build. At `/var/lib/cntr` the sandboxed filesystem is mounted. All commands and files of the system are still accessible within the shell. To execute commands from the sandbox use the cntr exec subcommand. `cntr` is only supported on Linux-based platforms. To use it first add `cntr` to your `environment.systemPackages` on NixOS or alternatively to the root user on non-NixOS systems. Then in the package that is supposed to be inspected, add `breakpointHook` to `nativeBuildInputs`.
```nix
nativeBuildInputs = [ breakpointHook ];
```
When a build failure happens there will be an instruction printed that shows how to attach with `cntr` to the build sandbox.
::: {.note}
::: {.title}
Caution with remote builds
:::
This wont work with remote builds as the build environment is on a different machine and cant be accessed by `cntr`. Remote builds can be turned off by setting `--option builders ''` for `nix-build` or `--builders ''` for `nix build`.
:::
### installShellFiles {#installshellfiles}
This hook helps with installing manpages and shell completion files. It exposes 2 shell functions `installManPage` and `installShellCompletion` that can be used from your `postInstall` hook.
The `installManPage` function takes one or more paths to manpages to install. The manpages must have a section suffix, and may optionally be compressed (with `.gz` suffix). This function will place them into the correct directory.
The `installShellCompletion` function takes one or more paths to shell completion files. By default it will autodetect the shell type from the completion file extension, but you may also specify it by passing one of `--bash`, `--fish`, or `--zsh`. These flags apply to all paths listed after them (up until another shell flag is given). Each path may also have a custom installation name provided by providing a flag `--name NAME` before the path. If this flag is not provided, zsh completions will be renamed automatically such that `foobar.zsh` becomes `_foobar`. A root name may be provided for all paths using the flag `--cmd NAME`; this synthesizes the appropriate name depending on the shell (e.g. `--cmd foo` will synthesize the name `foo.bash` for bash and `_foo` for zsh). The path may also be a fifo or named fd (such as produced by `<(cmd)`), in which case the shell and name must be provided.
```nix
nativeBuildInputs = [ installShellFiles ];
postInstall = ''
installManPage doc/foobar.1 doc/barfoo.3
# explicit behavior
installShellCompletion --bash --name foobar.bash share/completions.bash
installShellCompletion --fish --name foobar.fish share/completions.fish
installShellCompletion --zsh --name _foobar share/completions.zsh
# implicit behavior
installShellCompletion share/completions/foobar.{bash,fish,zsh}
# using named fd
installShellCompletion --cmd foobar \
--bash <($out/bin/foobar --bash-completion) \
--fish <($out/bin/foobar --fish-completion) \
--zsh <($out/bin/foobar --zsh-completion)
'';
```
### libiconv, libintl {#libiconv-libintl}
A few libraries automatically add to `NIX_LDFLAGS` their library, making their symbols automatically available to the linker. This includes libiconv and libintl (gettext). This is done to provide compatibility between GNU Linux, where libiconv and libintl are bundled in, and other systems where that might not be the case. Sometimes, this behavior is not desired. To disable this behavior, set `dontAddExtraLibs`.
### validatePkgConfig {#validatepkgconfig}
The `validatePkgConfig` hook validates all pkg-config (`.pc`) files in a package. This helps catching some common errors in pkg-config files, such as undefined variables.
### cmake {#cmake}
Overrides the default configure phase to run the CMake command. By default, we use the Make generator of CMake. In addition, dependencies are added automatically to `CMAKE_PREFIX_PATH` so that packages are correctly detected by CMake. Some additional flags are passed in to give similar behavior to configure-based packages. You can disable this hooks behavior by setting `configurePhase` to a custom value, or by setting `dontUseCmakeConfigure`. `cmakeFlags` controls flags passed only to CMake. By default, parallel building is enabled as CMake supports parallel building almost everywhere. When Ninja is also in use, CMake will detect that and use the ninja generator.
### xcbuildHook {#xcbuildhook}
Overrides the build and install phases to run the "xcbuild" command. This hook is needed when a project only comes with build files for the XCode build system. You can disable this behavior by setting buildPhase and configurePhase to a custom value. xcbuildFlags controls flags passed only to xcbuild.
### Meson {#meson}
Overrides the configure phase to run meson to generate Ninja files. To run these files, you should accompany Meson with ninja. By default, `enableParallelBuilding` is enabled as Meson supports parallel building almost everywhere.
#### Variables controlling Meson {#variables-controlling-meson}
##### `mesonFlags` {#mesonflags}
Controls the flags passed to meson.
##### `mesonBuildType` {#mesonbuildtype}
Which [`--buildtype`](https://mesonbuild.com/Builtin-options.html#core-options) to pass to Meson. We default to `plain`.
##### `mesonAutoFeatures` {#mesonautofeatures}
What value to set [`-Dauto_features=`](https://mesonbuild.com/Builtin-options.html#core-options) to. We default to `enabled`.
##### `mesonWrapMode` {#mesonwrapmode}
What value to set [`-Dwrap_mode=`](https://mesonbuild.com/Builtin-options.html#core-options) to. We default to `nodownload` as we disallow network access.
##### `dontUseMesonConfigure` {#dontusemesonconfigure}
Disables using Mesons `configurePhase`.
### ninja {#ninja}
Overrides the build, install, and check phase to run ninja instead of make. You can disable this behavior with the `dontUseNinjaBuild`, `dontUseNinjaInstall`, and `dontUseNinjaCheck`, respectively. Parallel building is enabled by default in Ninja.
### unzip {#unzip}
This setup hook will allow you to unzip .zip files specified in `$src`. There are many similar packages like `unrar`, `undmg`, etc.
### wafHook {#wafhook}
Overrides the configure, build, and install phases. This will run the “waf” script used by many projects. If `wafPath` (default `./waf`) doesnt exist, it will copy the version of waf available in Nixpkgs. `wafFlags` can be used to pass flags to the waf script.
### scons {#scons}
Overrides the build, install, and check phases. This uses the scons build system as a replacement for make. scons does not provide a configure phase, so everything is managed at build and install time.
Many other packages provide hooks, that are not part of `stdenv`. You can find
these in the [Hooks Reference](#chap-hooks).
## Purity in Nixpkgs {#sec-purity-in-nixpkgs}

View File

@ -262,7 +262,8 @@ rec {
};
unspecified = mkOptionType {
name = "unspecified value";
name = "unspecified";
description = "unspecified value";
descriptionClass = "noun";
};

View File

@ -1550,6 +1550,12 @@
githubId = 576355;
name = "Bas van Dijk";
};
BattleCh1cken = {
email = "BattleCh1cken@larkov.de";
github = "BattleCh1cken";
githubId = 75806385;
name = "Felix Hass";
};
Baughn = {
email = "sveina@gmail.com";
github = "Baughn";
@ -6391,6 +6397,15 @@
githubId = 1204734;
name = "Emil Karlson";
};
jlamur = {
email = "contact@juleslamur.fr";
github = "jlamur";
githubId = 7054317;
name = "Jules Lamur";
keys = [{
fingerprint = "B768 6CD7 451A 650D 9C54 4204 6710 CF0C 1CBD 7762";
}];
};
jlesquembre = {
email = "jl@lafuente.me";
github = "jlesquembre";
@ -7330,6 +7345,12 @@
githubId = 2037002;
name = "Konstantinos";
};
kouyk = {
email = "skykinetic@stevenkou.xyz";
github = "kouyk";
githubId = 1729497;
name = "Steven Kou";
};
kovirobi = {
email = "kovirobi@gmail.com";
github = "KoviRobi";
@ -7475,6 +7496,10 @@
githubId = 72546287;
name = "L3af";
};
laalsaas = {
email = "laalsaas@systemli.org";
name = "laalsaas";
};
lach = {
email = "iam@lach.pw";
github = "CertainLach";

View File

@ -11,6 +11,13 @@
has the following highlights:
</para>
<itemizedlist>
<listitem>
<para>
GNOME has been upgraded to 43. Please take a look at their
<link xlink:href="https://release.gnome.org/43/">Release
Notes</link> for details.
</para>
</listitem>
<listitem>
<para>
During cross-compilation, tests are now executed if the test
@ -618,6 +625,47 @@
instead.
</para>
</listitem>
<listitem>
<para>
<literal>systemd-networkd</literal> v250 deprecated, renamed,
and moved some sections and settings which leads to the
following breaking module changes:
</para>
<itemizedlist spacing="compact">
<listitem>
<para>
<literal>systemd.network.networks.&lt;name&gt;.dhcpV6PrefixDelegationConfig</literal>
is renamed to
<literal>systemd.network.networks.&lt;name&gt;.dhcpPrefixDelegationConfig</literal>.
</para>
</listitem>
<listitem>
<para>
<literal>systemd.network.networks.&lt;name&gt;.dhcpV6Config</literal>
no longer accepts the
<literal>ForceDHCPv6PDOtherInformation=</literal> setting.
Please use the <literal>WithoutRA=</literal> and
<literal>UseDelegatedPrefix=</literal> settings in your
<literal>systemd.network.networks.&lt;name&gt;.dhcpV6Config</literal>
and the <literal>DHCPv6Client=</literal> setting in your
<literal>systemd.network.networks.&lt;name&gt;.ipv6AcceptRAConfig</literal>
to control when the DHCPv6 client is started and how the
delegated prefixes are handled by the DHCPv6 client.
</para>
</listitem>
<listitem>
<para>
<literal>systemd.network.networks.&lt;name&gt;.networkConfig</literal>
no longer accepts the <literal>IPv6Token=</literal>
setting. Use the <literal>Token=</literal> setting in your
<literal>systemd.network.networks.&lt;name&gt;.ipv6AcceptRAConfig</literal>
instead. The
<literal>systemd.network.networks.&lt;name&gt;.ipv6Prefixes.*.ipv6PrefixConfig</literal>
now also accepts the <literal>Token=</literal> setting.
</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>
The <literal>meta.mainProgram</literal> attribute of packages

View File

@ -6,6 +6,9 @@ Support is planned until the end of June 2023, handing over to 23.05.
In addition to numerous new and upgraded packages, this release has the following highlights:
- GNOME has been upgraded to 43. Please take a look at their [Release
Notes](https://release.gnome.org/43/) for details.
- During cross-compilation, tests are now executed if the test suite can be executed
by the build platform. This is the case when doing “native” cross-compilation
where the build and host platforms are largely the same, but the nixpkgs' cross
@ -207,6 +210,12 @@ Available as [services.patroni](options.html#opt-services.patroni.enable).
- The `aws` package has been removed due to being abandoned by the upstream. It is recommended to use `awscli` or `awscli2` instead.
- `systemd-networkd` v250 deprecated, renamed, and moved some sections and settings which leads to the following breaking module changes:
* `systemd.network.networks.<name>.dhcpV6PrefixDelegationConfig` is renamed to `systemd.network.networks.<name>.dhcpPrefixDelegationConfig`.
* `systemd.network.networks.<name>.dhcpV6Config` no longer accepts the `ForceDHCPv6PDOtherInformation=` setting. Please use the `WithoutRA=` and `UseDelegatedPrefix=` settings in your `systemd.network.networks.<name>.dhcpV6Config` and the `DHCPv6Client=` setting in your `systemd.network.networks.<name>.ipv6AcceptRAConfig` to control when the DHCPv6 client is started and how the delegated prefixes are handled by the DHCPv6 client.
* `systemd.network.networks.<name>.networkConfig` no longer accepts the `IPv6Token=` setting. Use the `Token=` setting in your `systemd.network.networks.<name>.ipv6AcceptRAConfig` instead. The `systemd.network.networks.<name>.ipv6Prefixes.*.ipv6PrefixConfig` now also accepts the `Token=` setting.
- The `meta.mainProgram` attribute of packages in `wineWowPackages` now defaults to `"wine64"`.
- The `paperless` module now defaults `PAPERLESS_TIME_ZONE` to your configured system timezone.

View File

@ -391,9 +391,9 @@
./services/desktops/pipewire/pipewire-media-session.nix
./services/desktops/pipewire/wireplumber.nix
./services/desktops/gnome/at-spi2-core.nix
./services/desktops/gnome/chrome-gnome-shell.nix
./services/desktops/gnome/evolution-data-server.nix
./services/desktops/gnome/glib-networking.nix
./services/desktops/gnome/gnome-browser-connector.nix
./services/desktops/gnome/gnome-initial-setup.nix
./services/desktops/gnome/gnome-keyring.nix
./services/desktops/gnome/gnome-online-accounts.nix

View File

@ -1,41 +0,0 @@
# Chrome GNOME Shell native host connector.
{ config, lib, pkgs, ... }:
with lib;
{
meta = {
maintainers = teams.gnome.members;
};
# Added 2021-05-07
imports = [
(mkRenamedOptionModule
[ "services" "gnome3" "chrome-gnome-shell" "enable" ]
[ "services" "gnome" "chrome-gnome-shell" "enable" ]
)
];
###### interface
options = {
services.gnome.chrome-gnome-shell.enable = mkEnableOption (lib.mdDoc ''
Chrome GNOME Shell native host connector, a DBus service
allowing to install GNOME Shell extensions from a web browser.
'');
};
###### implementation
config = mkIf config.services.gnome.chrome-gnome-shell.enable {
environment.etc = {
"chromium/native-messaging-hosts/org.gnome.chrome_gnome_shell.json".source = "${pkgs.chrome-gnome-shell}/etc/chromium/native-messaging-hosts/org.gnome.chrome_gnome_shell.json";
"opt/chrome/native-messaging-hosts/org.gnome.chrome_gnome_shell.json".source = "${pkgs.chrome-gnome-shell}/etc/opt/chrome/native-messaging-hosts/org.gnome.chrome_gnome_shell.json";
};
environment.systemPackages = [ pkgs.chrome-gnome-shell ];
services.dbus.packages = [ pkgs.chrome-gnome-shell ];
nixpkgs.config.firefox.enableGnomeExtensions = true;
};
}

View File

@ -0,0 +1,47 @@
{ config, lib, pkgs, ... }:
let
inherit (lib) mdDoc mkEnableOption mkIf mkRenamedOptionModule teams;
in
{
meta = {
maintainers = teams.gnome.members;
};
imports = [
# Added 2021-05-07
(mkRenamedOptionModule
[ "services" "gnome3" "chrome-gnome-shell" "enable" ]
[ "services" "gnome" "gnome-browser-connector" "enable" ]
)
# Added 2022-07-25
(mkRenamedOptionModule
[ "services" "gnome" "chrome-gnome-shell" "enable" ]
[ "services" "gnome" "gnome-browser-connector" "enable" ]
)
];
options = {
services.gnome.gnome-browser-connector.enable = mkEnableOption (mdDoc ''
Native host connector for the GNOME Shell browser extension, a DBus service
allowing to install GNOME Shell extensions from a web browser.
'');
};
config = mkIf config.services.gnome.gnome-browser-connector.enable {
environment.etc = {
"chromium/native-messaging-hosts/org.gnome.browser_connector.json".source = "${pkgs.gnome-browser-connector}/etc/chromium/native-messaging-hosts/org.gnome.browser_connector.json";
"opt/chrome/native-messaging-hosts/org.gnome.browser_connector.json".source = "${pkgs.gnome-browser-connector}/etc/opt/chrome/native-messaging-hosts/org.gnome.browser_connector.json";
# Legacy paths.
"chromium/native-messaging-hosts/org.gnome.chrome_gnome_shell.json".source = "${pkgs.gnome-browser-connector}/etc/chromium/native-messaging-hosts/org.gnome.chrome_gnome_shell.json";
"opt/chrome/native-messaging-hosts/org.gnome.chrome_gnome_shell.json".source = "${pkgs.gnome-browser-connector}/etc/opt/chrome/native-messaging-hosts/org.gnome.chrome_gnome_shell.json";
};
environment.systemPackages = [ pkgs.gnome-browser-connector ];
services.dbus.packages = [ pkgs.gnome-browser-connector ];
nixpkgs.config.firefox.enableGnomeExtensions = true;
};
}

View File

@ -389,8 +389,8 @@ in
++ utils.removePackagesByName optionalPackages config.environment.gnome.excludePackages;
services.colord.enable = mkDefault true;
services.gnome.chrome-gnome-shell.enable = mkDefault true;
services.gnome.glib-networking.enable = true;
services.gnome.gnome-browser-connector.enable = mkDefault true;
services.gnome.gnome-initial-setup.enable = mkDefault true;
services.gnome.gnome-remote-desktop.enable = mkDefault true;
services.gnome.gnome-settings-daemon.enable = true;
@ -520,7 +520,7 @@ in
# Let nautilus find extensions
# TODO: Create nautilus-with-extensions package
environment.sessionVariables.NAUTILUS_EXTENSION_DIR = "${config.system.path}/lib/nautilus/extensions-3.0";
environment.sessionVariables.NAUTILUS_4_EXTENSION_DIR = "${config.system.path}/lib/nautilus/extensions-4";
# Override default mimeapps for nautilus
environment.sessionVariables.XDG_DATA_DIRS = [ "${mimeAppsList}/share" ];

View File

@ -285,7 +285,7 @@ in
elementary-music
elementary-photos
elementary-screenshot
elementary-tasks
# elementary-tasks
elementary-terminal
elementary-videos
epiphany

View File

@ -228,6 +228,14 @@ in
is not strictly required for Plasma Mobile to run.
'';
};
bigscreen.enable = mkOption {
type = types.bool;
default = false;
description = lib.mdDoc ''
Enable support for running the Plasma Bigscreen session.
'';
};
};
imports = [
@ -237,7 +245,7 @@ in
config = mkMerge [
# Common Plasma dependencies
(mkIf (cfg.enable || cfg.mobile.enable) {
(mkIf (cfg.enable || cfg.mobile.enable || cfg.bigscreen.enable) {
security.wrappers = {
kscreenlocker_greet = {
@ -595,5 +603,29 @@ in
services.xserver.displayManager.sessionPackages = [ pkgs.libsForQt5.plasma5.plasma-mobile ];
})
# Plasma Bigscreen
(mkIf cfg.bigscreen.enable {
environment.systemPackages =
with pkgs.plasma5Packages;
[
plasma-nano
plasma-settings
plasma-bigscreen
plasma-remotecontrollers
aura-browser
plank-player
plasma-pa
plasma-nm
kdeconnect-kde
];
services.xserver.displayManager.sessionPackages = [ pkgs.plasma5Packages.plasma-bigscreen ];
# required for plasma-remotecontrollers to work correctly
hardware.uinput.enable = true;
})
];
}

View File

@ -501,7 +501,6 @@ let
"LinkLocalAddressing"
"IPv4LLRoute"
"DefaultRouteOnDevice"
"IPv6Token"
"LLMNR"
"MulticastDNS"
"DNSOverTLS"
@ -526,7 +525,7 @@ let
"IPv6ProxyNDP"
"IPv6ProxyNDPAddress"
"IPv6SendRA"
"DHCPv6PrefixDelegation"
"DHCPPrefixDelegation"
"IPv6MTUBytes"
"Bridge"
"Bond"
@ -569,12 +568,11 @@ let
(assertValueOneOf "IPv4ProxyARP" boolValues)
(assertValueOneOf "IPv6ProxyNDP" boolValues)
(assertValueOneOf "IPv6SendRA" boolValues)
(assertValueOneOf "DHCPv6PrefixDelegation" boolValues)
(assertValueOneOf "DHCPPrefixDelegation" boolValues)
(assertByteFormat "IPv6MTUBytes")
(assertValueOneOf "ActiveSlave" boolValues)
(assertValueOneOf "PrimarySlave" boolValues)
(assertValueOneOf "ConfigureWithoutCarrier" boolValues)
(assertValueOneOf "IgnoreCarrierLoss" boolValues)
(assertValueOneOf "KeepConfiguration" (boolValues ++ ["static" "dhcp-on-stop" "dhcp"]))
];
@ -619,6 +617,7 @@ let
"User"
"SuppressPrefixLength"
"Type"
"SuppressInterfaceGroup"
])
(assertInt "TypeOfService")
(assertRange "TypeOfService" 0 255)
@ -632,6 +631,7 @@ let
(assertInt "SuppressPrefixLength")
(assertRange "SuppressPrefixLength" 0 128)
(assertValueOneOf "Type" ["blackhole" "unreachable" "prohibit"])
(assertRange "SuppressInterfaceGroup" 0 2147483647)
];
sectionRoute = checkUnitConfig "Route" [
@ -711,6 +711,9 @@ let
"BlackList"
"RequestOptions"
"SendOption"
"FallbackLeaseLifetimeSec"
"Label"
"Use6RD"
])
(assertValueOneOf "UseDNS" boolValues)
(assertValueOneOf "RoutesToDNS" boolValues)
@ -733,6 +736,8 @@ let
(assertPort "ListenPort")
(assertValueOneOf "SendRelease" boolValues)
(assertValueOneOf "SendDecline" boolValues)
(assertValueOneOf "FallbackLeaseLifetimeSec" ["forever" "infinity"])
(assertValueOneOf "Use6RD" boolValues)
];
sectionDHCPv6 = checkUnitConfig "DHCPv6" [
@ -745,7 +750,6 @@ let
"MUDURL"
"RequestOptions"
"SendVendorOption"
"ForceDHCPv6PDOtherInformation"
"PrefixDelegationHint"
"WithoutRA"
"SendOption"
@ -754,27 +758,33 @@ let
"DUIDType"
"DUIDRawData"
"IAID"
"UseDelegatedPrefix"
])
(assertValueOneOf "UseAddress" boolValues)
(assertValueOneOf "UseDNS" boolValues)
(assertValueOneOf "UseNTP" boolValues)
(assertInt "RouteMetric")
(assertValueOneOf "RapidCommit" boolValues)
(assertValueOneOf "ForceDHCPv6PDOtherInformation" boolValues)
(assertValueOneOf "WithoutRA" ["solicit" "information-request"])
(assertValueOneOf "WithoutRA" ["no" "solicit" "information-request"])
(assertRange "SendOption" 1 65536)
(assertInt "IAID")
(assertValueOneOf "UseDelegatedPrefix" boolValues)
];
sectionDHCPv6PrefixDelegation = checkUnitConfig "DHCPv6PrefixDelegation" [
sectionDHCPPrefixDelegation = checkUnitConfig "DHCPPrefixDelegation" [
(assertOnlyFields [
"UplinkInterface"
"SubnetId"
"Announce"
"Assign"
"Token"
"ManageTemporaryAddress"
"RouteMetric"
])
(assertValueOneOf "Announce" boolValues)
(assertValueOneOf "Assign" boolValues)
(assertValueOneOf "ManageTemporaryAddress" boolValues)
(assertRange "RouteMetric" 0 4294967295)
];
sectionIPv6AcceptRA = checkUnitConfig "IPv6AcceptRA" [
@ -792,6 +802,10 @@ let
"RouteAllowList"
"DHCPv6Client"
"RouteMetric"
"UseMTU"
"UseGateway"
"UseRoutePrefix"
"Token"
])
(assertValueOneOf "UseDNS" boolValues)
(assertValueOneOf "UseDomains" (boolValues ++ ["route"]))
@ -799,6 +813,9 @@ let
(assertValueOneOf "UseAutonomousPrefix" boolValues)
(assertValueOneOf "UseOnLinkPrefix" boolValues)
(assertValueOneOf "DHCPv6Client" (boolValues ++ ["always"]))
(assertValueOneOf "UseMTU" boolValues)
(assertValueOneOf "UseGateway" boolValues)
(assertValueOneOf "UseRoutePrefix" boolValues)
];
sectionDHCPServer = checkUnitConfig "DHCPServer" [
@ -874,6 +891,7 @@ let
"Prefix"
"PreferredLifetimeSec"
"ValidLifetimeSec"
"Token"
])
(assertValueOneOf "AddressAutoconfiguration" boolValues)
(assertValueOneOf "OnLink" boolValues)
@ -1338,12 +1356,17 @@ let
};
dhcpV6PrefixDelegationConfig = mkOption {
visible = false;
apply = _: throw "The option `systemd.network.networks.<name>.dhcpV6PrefixDelegationConfig` has been renamed to `systemd.network.networks.<name>.dhcpPrefixDelegationConfig`.";
};
dhcpPrefixDelegationConfig = mkOption {
default = {};
example = { SubnetId = "auto"; Announce = true; };
type = types.addCheck (types.attrsOf unitOption) check.network.sectionDHCPv6PrefixDelegation;
type = types.addCheck (types.attrsOf unitOption) check.network.sectionDHCPPrefixDelegation;
description = lib.mdDoc ''
Each attribute in this set specifies an option in the
`[DHCPv6PrefixDelegation]` section of the unit. See
`[DHCPPrefixDelegation]` section of the unit. See
{manpage}`systemd.network(5)` for details.
'';
};
@ -1789,9 +1812,9 @@ let
[DHCPv6]
${attrsToSection def.dhcpV6Config}
''
+ optionalString (def.dhcpV6PrefixDelegationConfig != { }) ''
[DHCPv6PrefixDelegation]
${attrsToSection def.dhcpV6PrefixDelegationConfig}
+ optionalString (def.dhcpPrefixDelegationConfig != { }) ''
[DHCPPrefixDelegation]
${attrsToSection def.dhcpPrefixDelegationConfig}
''
+ optionalString (def.ipv6AcceptRAConfig != { }) ''
[IPv6AcceptRA]

View File

@ -486,6 +486,7 @@ in {
phylactery = handleTest ./web-apps/phylactery.nix {};
pict-rs = handleTest ./pict-rs.nix {};
pinnwand = handleTest ./pinnwand.nix {};
plasma-bigscreen = handleTest ./plasma-bigscreen.nix {};
plasma5 = handleTest ./plasma5.nix {};
plasma5-systemd-start = handleTest ./plasma5-systemd-start.nix {};
plausible = handleTest ./plausible.nix {};

View File

@ -101,7 +101,6 @@ in
json-glib = callInstalledTest ./json-glib.nix {};
ibus = callInstalledTest ./ibus.nix {};
libgdata = callInstalledTest ./libgdata.nix {};
librsvg = callInstalledTest ./librsvg.nix {};
glib-testing = callInstalledTest ./glib-testing.nix {};
libjcat = callInstalledTest ./libjcat.nix {};
libxmlb = callInstalledTest ./libxmlb.nix {};

View File

@ -1,9 +0,0 @@
{ pkgs, makeInstalledTest, ... }:
makeInstalledTest {
tested = pkgs.librsvg;
testConfig = {
virtualisation.memorySize = 2047;
};
}

View File

@ -0,0 +1,38 @@
import ./make-test-python.nix ({ pkgs, ...} :
{
name = "plasma-bigscreen";
meta = with pkgs.lib.maintainers; {
maintainers = [ ttuegel k900 ];
};
nodes.machine = { ... }:
{
imports = [ ./common/user-account.nix ];
services.xserver.enable = true;
services.xserver.displayManager.sddm.enable = true;
services.xserver.displayManager.defaultSession = "plasma-bigscreen-x11";
services.xserver.desktopManager.plasma5.bigscreen.enable = true;
services.xserver.displayManager.autoLogin = {
enable = true;
user = "alice";
};
users.users.alice.extraGroups = ["uinput"];
};
testScript = { nodes, ... }: let
user = nodes.machine.users.users.alice;
xdo = "${pkgs.xdotool}/bin/xdotool";
in ''
with subtest("Wait for login"):
start_all()
machine.wait_for_file("${user.home}/.Xauthority")
machine.succeed("xauth merge ${user.home}/.Xauthority")
with subtest("Check plasmashell started"):
machine.wait_until_succeeds("pgrep plasmashell")
machine.wait_for_window("Plasma Big Screen")
'';
})

View File

@ -227,7 +227,7 @@ import ./make-test-python.nix ({ pkgs, lib, ... }: {
IPv6AcceptRA = false;
# Delegate prefixes from the DHCPv6 PD pool.
DHCPv6PrefixDelegation = true;
DHCPPrefixDelegation = true;
IPv6SendRA = true;
};

View File

@ -2,14 +2,14 @@
python3Packages.buildPythonApplication rec {
pname = "Mopidy-MPD";
version = "3.2.0";
version = "3.3.0";
src = python3Packages.fetchPypi {
inherit pname version;
sha256 = "sha256-oZvKr61lyu7CmXP2A/xtYng1FIUPyveVJMqUuv6UnaM=";
sha256 = "sha256-CeLMRqj9cwBvQrOx7XHVV8MjDjwOosONVlsN2o+vTVM=";
};
propagatedBuildInputs = [mopidy];
propagatedBuildInputs = [ mopidy ];
# no tests implemented
doCheck = false;

View File

@ -2,92 +2,113 @@
, lib
, ctags
, cmark
, appstream-glib
, desktop-file-utils
, editorconfig-core-c
, fetchurl
, fetchpatch
, flatpak
, gnome
, libgit2-glib
, gi-docgen
, gobject-introspection
, glade
, gspell
, gtk3
, gtksourceview4
, enchant
, icu
, gtk4
, gtksourceview5
, json-glib
, jsonrpc-glib
, libdazzle
, libhandy
, libadwaita
, libpanel
, libpeas
, libportal-gtk3
, libportal-gtk4
, libxml2
, meson
, ninja
, ostree
, pcre
, d-spy
, pcre2
, pkg-config
, python3
, sysprof
, template-glib
, vala
, vte
, webkitgtk
, wrapGAppsHook
, vte-gtk4
, webkitgtk_5_0
, wrapGAppsHook4
, dbus
, xvfb-run
}:
stdenv.mkDerivation rec {
pname = "gnome-builder";
version = "42.1";
version = "43.2";
outputs = [ "out" "devdoc" ];
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "XU1RtwKGW0gBcgHwxgfiSifXIDGo9ciNT86HW1VFZwo=";
sha256 = "dzIhF6ERsnR7zOitYFeKZ5wgIeSGkRz29OY0FjKKuzM=";
};
patches = [
# The test environment hardcodes `GI_TYPELIB_PATH` environment variable to direct dependencies of libide & co.
# https://gitlab.gnome.org/GNOME/gnome-builder/-/commit/2ce510b0ec0518c29427a29b386bb2ac1a121edf
# https://gitlab.gnome.org/GNOME/gnome-builder/-/commit/2964f7c2a0729f2f456cdca29a0f5b7525baf7c1
#
# But Nix does not have a fallback path for typelibs like /usr/lib on FHS distros and relies solely
# on `GI_TYPELIB_PATH` environment variable. So, when Ide started to depend on Vte, which
# depends on Pango, among others, GIrepository was unable to find these indirect dependencies
# and crashed with:
#
# Typelib file for namespace 'Pango', version '1.0' not found (g-irepository-error-quark, 0)
./fix-finding-test-typelibs.patch
];
nativeBuildInputs = [
appstream-glib
desktop-file-utils
gi-docgen
(gi-docgen.overrideAttrs (attrs: {
patches = attrs.patches ++ [
(fetchpatch {
url = "https://gitlab.gnome.org/GNOME/gi-docgen/-/commit/f4ff4787cce962b705fb2588b31f2988c5063c13.patch";
sha256 = "11VGFFb2PLVxnX/qUQdLPLfhGQWx4sf4apBP7R2JWjA=";
})
];
}))
gobject-introspection
meson
ninja
pkg-config
python3
python3.pkgs.wrapPython
wrapGAppsHook
wrapGAppsHook4
];
buildInputs = [
ctags
cmark
editorconfig-core-c
flatpak
gnome.devhelp
glade
libgit2-glib
libpeas
libportal-gtk3
vte
gspell
gtk3
gtksourceview4
libportal-gtk4
vte-gtk4
enchant
icu
gtk4
gtksourceview5
json-glib
jsonrpc-glib
libdazzle
libhandy
libadwaita
libpanel
libxml2
ostree
pcre
d-spy
pcre2
python3
sysprof
template-glib
vala
webkitgtk
webkitgtk_5_0
];
checkInputs = [
@ -110,6 +131,8 @@ stdenv.mkDerivation rec {
postPatch = ''
patchShebangs build-aux/meson/post_install.py
substituteInPlace build-aux/meson/post_install.py \
--replace "gtk-update-icon-cache" "gtk4-update-icon-cache"
'';
checkPhase = ''

View File

@ -0,0 +1,13 @@
diff --git a/src/meson.build b/src/meson.build
index c9a44e418..cd9e466d6 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -35,7 +35,7 @@ foreach test_typelib_dep: test_typelib_deps
test_gi_typelib_path += [join_paths(test_typelib_dep.get_variable('libdir'), 'girepository-1.0')]
endforeach
test_env = [
- 'GI_TYPELIB_PATH=@0@'.format(':'.join(test_gi_typelib_path)),
+ 'GI_TYPELIB_PATH=@0@:@1@'.format(':'.join(test_gi_typelib_path), run_command('sh', ['-c', 'echo "$GI_TYPELIB_PATH"']).stdout().strip()),
'G_TEST_SRCDIR=@0@/tests'.format(meson.current_source_dir()),
'G_TEST_BUILDDIR=@0@/tests'.format(meson.current_build_dir()),
'G_DEBUG=gc-friendly',

View File

@ -15,18 +15,18 @@
, gnome
, glib
, pkg-config
, intltool
, gettext
, itstool
, libxml2
}:
stdenv.mkDerivation rec {
version = "3.40.0";
version = "3.41.2";
pname = "gnome-latex";
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "xad/55vUDjeOooyPRaZjJ/vIzFw7W48PCcAhfufMCpA=";
sha256 = "8xDwoUUEmfDP92y5+cXWaZGpUGH6s9bmcMSlZHOF1jM=";
};
nativeBuildInputs = [
@ -37,7 +37,7 @@ stdenv.mkDerivation rec {
gobject-introspection
wrapGAppsHook
itstool
intltool
gettext
];
buildInputs = [

View File

@ -86,6 +86,22 @@ let
};
});
buildGateway = { pname, version, src, license, description, wmClass, ... }:
(mkJetBrainsProduct {
inherit pname version src wmClass jdk;
product = "Gateway";
meta = with lib; {
homepage = "https://www.jetbrains.com/remote-development/gateway/";
inherit description license platforms;
longDescription = ''
JetBrains Gateway is a lightweight launcher that connects a remote
server with your local machine, downloads necessary components on the
backend, and opens your project in JetBrains Client.
'';
maintainers = with maintainers; [ kouyk ];
};
});
buildGoland = { pname, version, src, license, description, wmClass, ... }:
(mkJetBrainsProduct {
inherit pname version src wmClass jdk;
@ -301,6 +317,19 @@ in
update-channel = products.datagrip.update-channel;
};
gateway = buildGateway rec {
pname = "gateway";
version = products.gateway.version;
description = "Your single entry point to all remote development environments";
license = lib.licenses.unfree;
src = fetchurl {
url = products.gateway.url;
sha256 = products.gateway.sha256;
};
wmClass = "jetbrains-gateway";
update-channel = products.gateway.update-channel;
};
goland = buildGoland rec {
pname = "goland";
version = products.goland.version;

View File

@ -80,6 +80,7 @@ with stdenv; lib.makeOverridable mkDerivation (rec {
--set-default JDK_HOME "$jdk" \
--set-default ANDROID_JAVA_HOME "$jdk" \
--set-default JAVA_HOME "$jdk" \
--set-default JETBRAINSCLIENT_JDK "$jdk" \
--set ${hiName}_JDK "$jdk" \
--set ${hiName}_VM_OPTIONS ${vmoptsFile}

View File

@ -18,6 +18,15 @@
"version-major-minor": "2022.1.1",
"build_number": "222.4345.5"
},
"gateway": {
"update-channel": "Gateway EAP",
"url-template": "https://download.jetbrains.com/idea/gateway/JetBrainsGateway-{version}.tar.gz",
"version": "2022.3 EAP",
"sha256": "4868baed9350065c1db760f07a09badd1473132af640cc19330e20c8a0940d7d",
"url": "https://download.jetbrains.com/idea/gateway/JetBrainsGateway-223.6646.21.tar.gz",
"version-major-minor": "2022.3",
"build_number": "223.6646.21"
},
"goland": {
"update-channel": "GoLand RELEASE",
"url-template": "https://download.jetbrains.com/go/goland-{version}.tar.gz",
@ -128,6 +137,15 @@
"version-major-minor": "2022.1.1",
"build_number": "222.4345.5"
},
"gateway": {
"update-channel": "Gateway EAP",
"url-template": "https://download.jetbrains.com/idea/gateway/JetBrainsGateway-{version}.dmg",
"version": "2022.3 EAP",
"sha256": "2db71a052501db41d5cfe142f1a6e3178fe02830f0da127d00fbf93a4629c61b",
"url": "https://download.jetbrains.com/idea/gateway/JetBrainsGateway-223.6646.21.dmg",
"version-major-minor": "2022.3",
"build_number": "223.6646.21"
},
"goland": {
"update-channel": "GoLand RELEASE",
"url-template": "https://download.jetbrains.com/go/goland-{version}.dmg",
@ -238,6 +256,15 @@
"version-major-minor": "2022.1.1",
"build_number": "222.4345.5"
},
"gateway": {
"update-channel": "Gateway EAP",
"url-template": "https://download.jetbrains.com/idea/gateway/JetBrainsGateway-{version}-aarch64.dmg",
"version": "2022.3 EAP",
"sha256": "513d3a271c5ff20fdc5c22f6e28eb21cfbb283d01ade2d11f33bb7eb79317410",
"url": "https://download.jetbrains.com/idea/gateway/JetBrainsGateway-223.6646.21-aarch64.dmg",
"version-major-minor": "2022.3",
"build_number": "223.6646.21"
},
"goland": {
"update-channel": "GoLand RELEASE",
"url-template": "https://download.jetbrains.com/go/goland-{version}-aarch64.dmg",

View File

@ -18,17 +18,17 @@ let
archive_fmt = if stdenv.isDarwin then "zip" else "tar.gz";
sha256 = {
x86_64-linux = "0ar8gpklaa0aa3k1934jyg2vh65hzncx0awl1f0wz8n4fjasfrpc";
x86_64-darwin = "0jkpzyg2pk2d88w2ffrp2lr0qadss7ccycx4vpmjmw62d3sap8n1";
aarch64-linux = "1g7lzqghagz63pljg4wy34z706j70vjmk49cl8v27jbnsgnva56a";
aarch64-darwin = "132ml95xlyv5c343bfv0gpgr8rmk85xspsy9baninlmhnmy7mivv";
armv7l-linux = "04anb6r7hkk3y3vahx32nxj5dz2i66rrnl0561xkcjr4cqvxykiw";
x86_64-linux = "0hj6rpg65ivnnvzfjm16vjpjzzqbabpw5ldrr78x7ddrr06h02z6";
x86_64-darwin = "01gskihfp5s0j4dw8nxmfsp0sav1zqlmylmvwhi1y2qqq4y9c3w9";
aarch64-linux = "07n1svlkd2ji4b6yvhci6qvx429xipp8y418cqq3173gw8v59lws";
aarch64-darwin = "0gr94l7lk54fhhhqbiv23hd7d25xilqlwla2dbs5c171nj9pz325";
armv7l-linux = "0nxnjrzwfvma9zl4x11r45qwqq8mk91cxg47mg33qgr22lvbgz63";
}.${system} or throwSystem;
in
callPackage ./generic.nix rec {
# Please backport all compatible updates to the stable release.
# This is important for the extension ecosystem.
version = "1.71.2";
version = "1.72.1";
pname = "vscode";
executableName = "code" + lib.optionalString isInsiders "-insiders";

View File

@ -15,11 +15,11 @@ let
archive_fmt = if stdenv.isDarwin then "zip" else "tar.gz";
sha256 = {
x86_64-linux = "1ajls31iqvrcnydwdn2fhajz76j60vsqhn343237jgwfbvaklvav";
x86_64-darwin = "100p494k1gfzhd86nj9hvh0w73i4wjn2vy6jdpb66rrmswy2hr40";
aarch64-linux = "066g825s79hmwl5yl7yl0yf6vzr3nagb44bcqw1zp1iqv54f40c6";
aarch64-darwin = "02aln53zcjp689ivq3ypid2gk9pwbqs24n1ay0hibvrpkx3v4y8k";
armv7l-linux = "1qvz1233k31baw09p45x67cfadsgm1jnnfc4r8yvrh75iplcspgl";
x86_64-linux = "01b6w97miai191b2d1lr7cwv36vjvwv1hjggr0g9gfr5j99yzdw3";
x86_64-darwin = "1vf6sdm19r1d6a6ljz3jlvqddgyrdqcxpha4x80ar3kwddy254kb";
aarch64-linux = "1i48lck395i6lzcxwzfhijs5d141wnxbxg5rzgprm2hgkqx836nr";
aarch64-darwin = "02xvb41i8ri8l9w8cxxviz63mkskkmxn6rwprpbglpbpxncsxgbn";
armv7l-linux = "0s0zlql652fwfz94bqmnrl77agd8gf6i5w1y09jpvcc33wv0zlgw";
}.${system} or throwSystem;
sourceRoot = if stdenv.isDarwin then "" else ".";
@ -29,7 +29,7 @@ in
# Please backport all compatible updates to the stable release.
# This is important for the extension ecosystem.
version = "1.71.2.22258";
version = "1.72.1.22284";
pname = "vscodium";
executableName = "codium";

View File

@ -1,4 +1,5 @@
{ lib, stdenv
{ stdenv
, lib
, fetchurl
, at-spi2-core
, babl
@ -7,22 +8,19 @@
, dleyna-renderer
, gdk-pixbuf
, gegl
, geocode-glib
, geocode-glib_2
, gettext
, gexiv2
, gfbgraph
, glib
, gnome-online-accounts
, gnome
, gobject-introspection
, grilo
, grilo-plugins
, gsettings-desktop-schemas
, gtk3
, itstool
, libdazzle
, libportal-gtk3
, libhandy
, libgdata
, libxml2
, meson
, ninja
@ -36,13 +34,13 @@
stdenv.mkDerivation rec {
pname = "gnome-photos";
version = "42.0";
version = "43.0";
outputs = [ "out" "installedTests" ];
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "JcsoFCUZnex7BF8T8y+PlgNMsMuLlNlvnf+vT1vmhVE=";
sha256 = "x6x0WNUz8p2VUBHHS3YiTXnqMbzBLp1tDOe2w3BNCOE=";
};
patches = [
@ -73,18 +71,15 @@ stdenv.mkDerivation rec {
dleyna-renderer
gdk-pixbuf
gegl
geocode-glib
geocode-glib_2
gexiv2
gfbgraph
glib
gnome-online-accounts
grilo
grilo-plugins
gsettings-desktop-schemas
gtk3
libdazzle
libportal-gtk3
libhandy
libgdata
tracker
tracker-miners # For 'org.freedesktop.Tracker.Miner.Files' GSettings schema

View File

@ -6,11 +6,11 @@
, libexif
, libgphoto2
, libwebp
, libsoup
, libsoup_3
, libxml2
, vala
, sqlite
, webkitgtk
, webkitgtk_4_1
, pkg-config
, gnome
, gst_all_1
@ -30,7 +30,6 @@
, wrapGAppsHook
, gobject-introspection
, itstool
, libgdata
, libchamplain
, libsecret
, gsettings-desktop-schemas
@ -41,11 +40,11 @@
stdenv.mkDerivation rec {
pname = "shotwell";
version = "0.30.16";
version = "0.31.5";
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "sha256-yYgs+9rTA8uBYbFJrLtMYX++fKn2q24i0XTiRH51GPo=";
sha256 = "sha256-OwSPxs6ZsjLR4OqbjbB0CDyGyI07bWMTaiz4IXqkXBk=";
};
nativeBuildInputs = [
@ -66,10 +65,10 @@ stdenv.mkDerivation rec {
libexif
libgphoto2
libwebp
libsoup
libsoup_3
libxml2
sqlite
webkitgtk
webkitgtk_4_1
gst_all_1.gstreamer
gst_all_1.gst-libav
gst_all_1.gst-plugins-base
@ -87,7 +86,6 @@ stdenv.mkDerivation rec {
librest
gcr
gnome.adwaita-icon-theme
libgdata
libchamplain
libsecret
];

View File

@ -5,15 +5,15 @@
, atk
, cairo
, desktop-file-utils
, evolution-data-server
, evolution-data-server-gtk4
, evolution
, gcr
, gcr_4
, gettext
, glib
, gnome
, gpgme
, gtk3
, gtksourceview3
, gtksourceview4
, gtkspell3
, libcryptui
, libxml2
@ -42,6 +42,20 @@ stdenv.mkDerivation rec {
url = "https://gitlab.gnome.org/GNOME/almanah/-/commit/8c42a67695621d1e30cec933a04e633e6030bbaf.patch";
sha256 = "qyqFgYSu4emFDG/Mjwz1bZb3v3/4gwQSKmGCoPPNYCQ=";
})
# Port to Gcr 4
# https://gitlab.gnome.org/GNOME/almanah/-/merge_requests/14
(fetchpatch {
url = "https://gitlab.gnome.org/GNOME/almanah/-/commit/cd44b476f4ffbf37c5d5f5b996ecd711db925576.patch";
sha256 = "wJ1035NxgeTwUa0LoNcB6TSLxffoXBR3WbGAGkfggYY=";
})
# Port to GtkSourceView 4
# https://gitlab.gnome.org/GNOME/almanah/-/merge_requests/15
(fetchpatch {
url = "https://gitlab.gnome.org/GNOME/almanah/-/commit/0ba7f05cba7feaf2ae2c220596aead5dfc676675.patch";
sha256 = "5uvHTPzQloEq8SVt3EnZ+8mziBdXsDmu/e92/RtyFzE=";
})
];
nativeBuildInputs = [
@ -58,13 +72,13 @@ stdenv.mkDerivation rec {
buildInputs = [
atk
cairo
evolution-data-server
gcr
evolution-data-server-gtk4
gcr_4
glib
evolution
gpgme
gtk3
gtksourceview3
gtksourceview4
gtkspell3
libcryptui
sqlite

View File

@ -0,0 +1,41 @@
{ stdenv
, lib
, fetchFromSourcehut
, meson
, ninja
, pkg-config
, wrapQtAppsHook
, qtbase
}:
stdenv.mkDerivation rec {
pname = "bfcal";
version = "1.0";
src = fetchFromSourcehut {
owner = "~bitfehler";
repo = "bfcal";
rev = "v${version}";
sha256 = "sha256-2z5ICVEZ55omwcoVWpac/HPwyKF9jDCYO78S9p21VMU=";
};
nativeBuildInputs = [
meson ninja pkg-config wrapQtAppsHook
];
buildInputs = [
qtbase
];
postInstall = ''
mkdir -p $out/bin
install bfcal $out/bin
'';
meta = with lib; {
description = "Quickly display a calendar";
homepage = "https://git.sr.ht/~bitfehler/bfcal";
license = licenses.gpl3Plus;
maintainers = with maintainers; [ laalsaas ];
};
}

View File

@ -5,8 +5,7 @@
, meson
, ninja
, pkg-config
, python3
, wrapGAppsHook
, wrapGAppsHook4
, gettext
, gnome
, glib
@ -17,24 +16,24 @@
, gnome-online-accounts
, gsettings-desktop-schemas
, libportal-gtk4
, evolution-data-server
, evolution-data-server-gtk4
, libical
, librest
, json-glib
, itstool
, unstableGitUpdater
, gitUpdater
}:
stdenv.mkDerivation rec {
pname = "gnome-todo";
version = "unstable-2022-06-12";
pname = "endeavour";
version = "42.0";
src = fetchFromGitLab {
domain = "gitlab.gnome.org";
owner = "GNOME";
repo = "gnome-todo";
rev = "ad4e15f0b58860caf8c6d497795b83b594a9c3e5";
sha256 = "HRufLoZou9ssQ/qoDG8anhOAtl8IYvFpyjq/XJlsotQ=";
owner = "World";
repo = "Endeavour";
rev = "v${version}";
sha256 = "U91WAoyIeQ0WbFbOCrbFJjbWe2eT7b/VL2M1hNXxyzQ=";
};
patches = [
@ -45,6 +44,20 @@ stdenv.mkDerivation rec {
extraPrefix = "";
name = "gnome-todo_meson-build.patch";
})
# build: Fix building with -Werror=format-security
# https://gitlab.gnome.org/World/Endeavour/-/merge_requests/132
(fetchpatch {
url = "https://gitlab.gnome.org/World/Endeavour/-/commit/3bad03e90fcc28f6e3f87f2c90df5984dbeb0791.patch";
sha256 = "sha256-HRkNfhn+EH0Fc+KBDdX1Q+T9QWSctTOn1cvecP2N0zo=";
})
# build: Use GNOME module post_install()
# https://gitlab.gnome.org/World/Endeavour/-/merge_requests/135
(fetchpatch {
url = "https://gitlab.gnome.org/World/Endeavour/-/commit/a8daa1d8acd0a5da7aef54d6e16d8a585c71e555.patch";
sha256 = "sha256-zUTQ36eUMOY9ODAgwSKUhSlB9Cj0Yu/60KjFFW5fx2I=";
})
];
nativeBuildInputs = [
@ -52,8 +65,7 @@ stdenv.mkDerivation rec {
ninja
pkg-config
gettext
python3
wrapGAppsHook
wrapGAppsHook4
itstool
];
@ -69,26 +81,22 @@ stdenv.mkDerivation rec {
# Plug-ins
libportal-gtk4 # background
evolution-data-server # eds
evolution-data-server-gtk4 # eds
libical
librest # todoist
json-glib # todoist
];
postPatch = ''
chmod +x build-aux/meson/meson_post_install.py
patchShebangs build-aux/meson/meson_post_install.py
'';
passthru = {
updateScript = unstableGitUpdater {
url = "https://gitlab.gnome.org/GNOME/gnome-todo.git";
updateScript = gitUpdater {
inherit pname version;
rev-prefix = "v";
};
};
meta = with lib; {
description = "Personal task manager for GNOME";
homepage = "https://wiki.gnome.org/Apps/Todo";
homepage = "https://gitlab.gnome.org/World/Endeavour";
license = licenses.gpl3Plus;
maintainers = teams.gnome.members;
platforms = platforms.linux;

View File

@ -34,13 +34,13 @@
buildPythonApplication rec {
pname = "orca";
version = "42.3";
version = "43.0";
format = "other";
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "+ty6C/6uHmZyJmJk529j/lq/jw77NL4Ri1qXP7by9yQ=";
sha256 = "HKdaAMSoUSoJ5KJuszn615RNHtQayjL3D2lickQhglA=";
};
patches = [

View File

@ -93,5 +93,6 @@ stdenv.mkDerivation rec {
homepage = "https://github.com/bleakgrey/tootle";
license = licenses.gpl3;
maintainers = with maintainers; [ dtzWill ];
broken = true;
};
}

View File

@ -4,7 +4,7 @@
## various stuff that can be plugged in
, ffmpeg_5, xorg, alsa-lib, libpulseaudio, libcanberra-gtk3, libglvnd, libnotify, opensc
, gnome/*.gnome-shell*/
, browserpass, chrome-gnome-shell, uget-integrator, plasma5Packages, bukubrow, pipewire
, browserpass, gnome-browser-connector, uget-integrator, plasma5Packages, bukubrow, pipewire
, tridactyl-native
, fx_cast_bridge
, udev
@ -65,7 +65,7 @@ let
++ lib.optional (cfg.enableBrowserpass or false) (lib.getBin browserpass)
++ lib.optional (cfg.enableBukubrow or false) bukubrow
++ lib.optional (cfg.enableTridactylNative or false) tridactyl-native
++ lib.optional (cfg.enableGnomeExtensions or false) chrome-gnome-shell
++ lib.optional (cfg.enableGnomeExtensions or false) gnome-browser-connector
++ lib.optional (cfg.enableUgetIntegrator or false) uget-integrator
++ lib.optional (cfg.enablePlasmaBrowserIntegration or false) plasma5Packages.plasma-browser-integration
++ lib.optional (cfg.enableFXCastBridge or false) fx_cast_bridge

View File

@ -0,0 +1,26 @@
{ lib, stdenv, fetchzip
}:
stdenv.mkDerivation rec {
pname = "widevine-cdm";
version = "4.10.2449.0";
src = fetchzip {
url = "https://dl.google.com/widevine-cdm/${version}-linux-x64.zip";
sha256 = "sha256-f2kAkP+s3fB+krEZsiujEoI4oznkzSyaIB/CRJZWlXE=";
stripRoot = false;
};
installPhase = ''
install -vD libwidevinecdm.so $out/libwidevinecdm.so
'';
meta = with lib; {
description = "Widevine CDM";
homepage = "https://www.widevine.com";
sourceProvenance = with sourceTypes; [ binaryNativeCode ];
license = licenses.unfree;
maintainers = with maintainers; [ jlamur ];
platforms = [ "x86_64-linux" ];
};
}

View File

@ -31,14 +31,14 @@ let
in
stdenv.mkDerivation (finalAttrs: {
pname = "offpunk";
version = "1.5";
version = "1.6";
src = fetchFromGitea {
domain = "notabug.org";
owner = "ploum";
repo = "offpunk";
rev = "v${finalAttrs.version}";
sha256 = "1zg13wajsfrl3hli6sihn47db08w037jjq9vgr6m5sjh8r1jb9iy";
sha256 = "1pfafb96xk7vis26zhfq254waz1ic9p0zdkxwpqs84p3vsmny775";
};
nativeBuildInputs = [ makeWrapper ];

View File

@ -12,6 +12,8 @@
, qtbase ? null
, qtwebengine ? null
, wrapGAppsHook ? null
, enableWideVine ? false
, widevine-cdm
}: let
isQt6 = mkDerivationWith == null;
@ -149,6 +151,7 @@ buildPythonApplication {
--add-flags '--backend ${backend}'
--set QUTE_QTWEBENGINE_VERSION_OVERRIDE "${lib.getVersion qtwebengine}"
${lib.optionalString (pipewireSupport && backend == "webengine") ''--prefix LD_LIBRARY_PATH : ${libPath}''}
${lib.optionalString enableWideVine ''--add-flags "--qt-flag widevine-path=${widevine-cdm}/libwidevinecdm.so"''}
)
'';
@ -157,6 +160,6 @@ buildPythonApplication {
description = "Keyboard-focused browser with a minimal GUI";
license = licenses.gpl3Plus;
maintainers = with maintainers; [ jagajaga rnhmjoj ebzzry dotlambda ];
inherit (backendPackage.meta) platforms;
platforms = if enableWideVine then [ "x86_64-linux" ] else backendPackage.meta.platforms;
};
}

View File

@ -2,15 +2,15 @@
buildGoModule rec {
pname = "kubernetes-helm";
version = "3.10.0";
version = "3.10.1";
src = fetchFromGitHub {
owner = "helm";
repo = "helm";
rev = "v${version}";
sha256 = "sha256-oYM7T0t/U7Y/O4u3t9eDjfoxjVeNFBPJdlPs+p9PXOM=";
sha256 = "sha256-OyU97zyN7fZMZAD2BEp8TW2z2E9Rl/yeiVkQaJ1GWZk=";
};
vendorSha256 = "sha256-cyqTed3IZ5JFHYTphrOzSmcAc9xyre2LuMC3p0rfh/Y=";
vendorSha256 = "sha256-vyHT/N5lat/vqM2jK4Q+jJOtZpS52YCYGcJqfa5e0KM=";
subPackages = [ "cmd/helm" ];
ldflags = [

View File

@ -0,0 +1,49 @@
{ lib
, stdenv
, buildGoModule
, fetchFromGitHub
, testers
, kubedog
}:
buildGoModule rec {
pname = "kubedog";
version = "0.9.6";
src = fetchFromGitHub {
owner = "werf";
repo = "kubedog";
rev = "v${version}";
hash = "sha256-mwITvv2MuqzH1aB4iTVaFfZljyqOAu7vl4cORHT/OXQ=";
};
vendorHash = "sha256-HBo26cPiWJPDpsjPYUEBraHB2SZsUttrlBKpB9/SS6o=";
subPackages = [ "cmd/kubedog" ];
ldflags = [
"-s"
"-w"
"-X github.com/werf/kubedog.Version=${src.rev}"
];
# There are no tests.
doCheck = false;
passthru.tests.version = testers.testVersion {
package = kubedog;
command = "kubedog version";
version = src.rev;
};
meta = with lib; {
description = ''
A tool to watch and follow Kubernetes resources in CI/CD deployment
pipelines
'';
homepage = "https://github.com/werf/kubedog";
changelog = "https://github.com/werf/kubedog/releases/tag/${src.rev}";
license = licenses.asl20;
maintainers = with maintainers; [ azahi ];
};
}

View File

@ -2,13 +2,13 @@
buildGoModule rec {
pname = "multus-cni";
version = "3.9.1";
version = "3.9.2";
src = fetchFromGitHub {
owner = "k8snetworkplumbingwg";
repo = pname;
rev = "v${version}";
sha256 = "sha256-U5Ji+f7ckynBVMb4xsmoRZzYJx8obMO+bO9TU6GqcW0=";
sha256 = "sha256-AYSUJEoNYt4DYNcPynRBal5c5QAzRVltkjwoEM66VcY=";
};
ldflags = [

View File

@ -423,13 +423,13 @@
"version": "2.2.0"
},
"github": {
"hash": "sha256-NJ5HvW3LOvshzea7t0/sAsp3SqiXErXd32Ej0Qp4zsk=",
"hash": "sha256-XivwHkibeaoFTeJRtTF8xqt2IwXbzcKtKwAmwCf8Ll4=",
"owner": "integrations",
"provider-source-address": "registry.terraform.io/integrations/github",
"repo": "terraform-provider-github",
"rev": "v5.3.0",
"rev": "v5.4.0",
"vendorHash": null,
"version": "5.3.0"
"version": "5.4.0"
},
"gitlab": {
"hash": "sha256-eNd1o0UjG6A9OTRmcJfcPLLtWIJmdZ+viDnSZhyHpgY=",
@ -497,13 +497,13 @@
"version": "1.35.2"
},
"helm": {
"hash": "sha256-oX6pchJcgv9w5xLGe09GBzngz9+a/OZn6FTBWURgiLk=",
"hash": "sha256-s8ZOzTG3qux+4Yh1wj3ArjB1uJ32bdGhxY9iSL5LOK8=",
"owner": "hashicorp",
"provider-source-address": "registry.terraform.io/hashicorp/helm",
"repo": "terraform-provider-helm",
"rev": "v2.7.0",
"rev": "v2.7.1",
"vendorHash": null,
"version": "2.7.0"
"version": "2.7.1"
},
"heroku": {
"hash": "sha256-V6jShbhVwsUTxj2tp2msIseZnckHgB7bBswqIRlrwjQ=",
@ -1075,13 +1075,13 @@
"version": "0.7.1"
},
"spotinst": {
"hash": "sha256-D/HFeozi5IRj7G+pRzY/V98+oejfmQlW4y6ddob7OBI=",
"hash": "sha256-hlTeN8dQWHU4yHDUqCeBbfapDI1lbxj05FlUN+vUOuM=",
"owner": "spotinst",
"provider-source-address": "registry.terraform.io/spotinst/spotinst",
"repo": "terraform-provider-spotinst",
"rev": "v1.84.0",
"rev": "v1.85.0",
"vendorHash": "sha256-BDYX/4D3R2A1w3k14mON/2KZUg2kPbwePXQQpVanqdU=",
"version": "1.84.0"
"version": "1.85.0"
},
"stackpath": {
"hash": "sha256-nTR9HgSmuNCt7wxE4qqIH2+HA2igzqVx0lLRx6FoKrE=",
@ -1111,13 +1111,13 @@
"version": "2.19.1"
},
"tencentcloud": {
"hash": "sha256-SoCXh0pRqEkto2K+ZfN7ncVGDVC32zDElS+rBdOfa0g=",
"hash": "sha256-kAbLfuENWHxu51Eu+7X1X4HiWkD8KAL4awZpGRg0BaU=",
"owner": "tencentcloudstack",
"provider-source-address": "registry.terraform.io/tencentcloudstack/tencentcloud",
"repo": "terraform-provider-tencentcloud",
"rev": "v1.78.3",
"rev": "v1.78.4",
"vendorHash": null,
"version": "1.78.3"
"version": "1.78.4"
},
"tfe": {
"hash": "sha256-jh5bRe/3OsdgvSpraYEc1NgvBmYb1tFuVSPQ2ZAesSY=",

View File

@ -1,5 +1,6 @@
{ lib, stdenv
, substituteAll
, autoreconfHook
, pkg-config
, fetchurl
, python3
@ -28,6 +29,10 @@ stdenv.mkDerivation {
strictDeps = true;
patches = [
# Fix extension for Nautilus 43
# https://github.com/dropbox/nautilus-dropbox/pull/105
./nautilus-43.patch
(substituteAll {
src = ./fix-cli-paths.patch;
inherit dropboxd;
@ -35,6 +40,7 @@ stdenv.mkDerivation {
];
nativeBuildInputs = [
autoreconfHook
pkg-config
gobject-introspection
gdk-pixbuf

View File

@ -0,0 +1,195 @@
diff --git a/configure.ac b/configure.ac
index 025289c..42b49fa 100644
--- a/configure.ac
+++ b/configure.ac
@@ -12,7 +12,7 @@ AM_CONFIG_HEADER(config.h)
#AC_PROG_INTLTOOL([0.29])
# Dependency checks
-NAUTILUS_REQUIRED=2.16.0
+NAUTILUS_REQUIRED=43.rc
GLIB_REQUIRED=2.14.0
# Used programs
@@ -26,8 +26,11 @@ if test "x$HAVE_PKGCONFIG" = "xno"; then
AC_MSG_ERROR(you need to have pkgconfig installed !)
fi
-PKG_CHECK_MODULES(NAUTILUS, libnautilus-extension >= $NAUTILUS_REQUIRED)
+PKG_CHECK_MODULES(NAUTILUS, libnautilus-extension-4 >= $NAUTILUS_REQUIRED)
PKG_CHECK_MODULES(GLIB, glib-2.0 >= $GLIB_REQUIRED)
+PKG_CHECK_MODULES(GTK, gtk4 >= 4.6.0)
+
+AC_SUBST(GTK_CFLAGS)
AC_PATH_PROG([PYTHON3], [python3])
@@ -84,10 +87,10 @@ AC_MSG_CHECKING([for nautilus extension directory])
if test -n "$with_nautilus_extension_dir"; then
NAUTILUS_EXTENSION_DIR=$with_nautilus_extension_dir
else
- NAUTILUS_EXTENSION_DIR=`$PKG_CONFIG --variable=extensiondir libnautilus-extension`
+ NAUTILUS_EXTENSION_DIR=`$PKG_CONFIG --variable=extensiondir libnautilus-extension-4`
fi
if test -z "$NAUTILUS_EXTENSION_DIR"; then
- NAUTILUS_EXTENSION_DIR='${exec_prefix}/lib/nautilus/extension-1.0'
+ NAUTILUS_EXTENSION_DIR='${exec_prefix}/lib/nautilus/extension-4'
fi
AC_MSG_RESULT([${NAUTILUS_EXTENSION_DIR}])
diff --git a/src/Makefile.am b/src/Makefile.am
index 15d6687..c521ec5 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -13,6 +13,7 @@ libnautilus_dropbox_la_CFLAGS = \
$(WARN_CFLAGS) \
$(DISABLE_DEPRECATED_CFLAGS) \
$(NAUTILUS_CFLAGS) \
+ $(GTK_CFLAGS) \
$(GLIB_CFLAGS)
if DEBUG
diff --git a/src/dropbox.c b/src/dropbox.c
index 0d59559..8162aa9 100644
--- a/src/dropbox.c
+++ b/src/dropbox.c
@@ -27,9 +27,6 @@
#include <glib-object.h>
-#include <gdk/gdk.h>
-#include <gtk/gtk.h>
-
#include "nautilus-dropbox.h"
static GType type_list[1];
@@ -41,9 +38,6 @@ nautilus_module_initialize (GTypeModule *module) {
nautilus_dropbox_register_type (module);
type_list[0] = NAUTILUS_TYPE_DROPBOX;
- dropbox_use_nautilus_submenu_workaround
- = (NAUTILUS_VERSION_MAJOR < 2 ||
- (NAUTILUS_VERSION_MAJOR == 2 && NAUTILUS_VERSION_MINOR <= 22));
dropbox_use_operation_in_progress_workaround = TRUE;
}
diff --git a/src/nautilus-dropbox.c b/src/nautilus-dropbox.c
index c75ccbf..b9c10b4 100644
--- a/src/nautilus-dropbox.c
+++ b/src/nautilus-dropbox.c
@@ -37,9 +37,7 @@
#include <glib-object.h>
#include <gtk/gtk.h>
-#include <libnautilus-extension/nautilus-extension-types.h>
-#include <libnautilus-extension/nautilus-menu-provider.h>
-#include <libnautilus-extension/nautilus-info-provider.h>
+#include <nautilus-extension.h>
#include "g-util.h"
#include "dropbox-command-client.h"
@@ -49,7 +47,7 @@
static char *emblems[] = {"dropbox-uptodate", "dropbox-syncing", "dropbox-unsyncable"};
gchar *DEFAULT_EMBLEM_PATHS[2] = { EMBLEMDIR , NULL };
-gboolean dropbox_use_nautilus_submenu_workaround;
+
gboolean dropbox_use_operation_in_progress_workaround;
static GType dropbox_type = 0;
@@ -630,13 +628,6 @@ nautilus_dropbox_parse_menu(gchar **options,
g_object_set_property (G_OBJECT(item), "sensitive", &sensitive);
}
- /* taken from nautilus-file-repairer (http://repairer.kldp.net/):
- * this code is a workaround for a bug of nautilus
- * See: http://bugzilla.gnome.org/show_bug.cgi?id=508878 */
- if (dropbox_use_nautilus_submenu_workaround) {
- toret = g_list_append(toret, item);
- }
-
g_object_unref(item);
g_string_free(new_action_string, TRUE);
ret++;
@@ -661,7 +652,6 @@ get_file_items_callback(GHashTable *response, gpointer ud)
static GList *
nautilus_dropbox_get_file_items(NautilusMenuProvider *provider,
- GtkWidget *window,
GList *files)
{
/*
@@ -778,14 +768,13 @@ add_emblem_paths(GHashTable* emblem_paths_response)
gchar **emblem_paths_list;
int i;
-
- GtkIconTheme *theme = gtk_icon_theme_get_default();
+ GtkIconTheme *theme = gtk_icon_theme_get_for_display (gdk_display_get_default ());
if (emblem_paths_response &&
(emblem_paths_list = g_hash_table_lookup(emblem_paths_response, "path"))) {
for (i = 0; emblem_paths_list[i] != NULL; i++) {
if (emblem_paths_list[i][0])
- gtk_icon_theme_append_search_path(theme, emblem_paths_list[i]);
+ gtk_icon_theme_add_search_path(theme, emblem_paths_list[i]);
}
}
g_hash_table_unref(emblem_paths_response);
@@ -804,15 +793,14 @@ remove_emblem_paths(GHashTable* emblem_paths_response)
goto exit;
// We need to remove the old paths.
- GtkIconTheme * icon_theme = gtk_icon_theme_get_default();
gchar ** paths;
- gint path_count;
+ GtkIconTheme *theme = gtk_icon_theme_get_for_display (gdk_display_get_default ());
- gtk_icon_theme_get_search_path(icon_theme, &paths, &path_count);
+ paths = gtk_icon_theme_get_search_path(theme);
gint i, j, out = 0;
gboolean found = FALSE;
- for (i = 0; i < path_count; i++) {
+ for (i = 0; paths[i] != NULL; i++) {
gboolean keep = TRUE;
for (j = 0; emblem_paths_list[j] != NULL; j++) {
if (emblem_paths_list[j][0]) {
@@ -834,7 +822,7 @@ remove_emblem_paths(GHashTable* emblem_paths_response)
accomodate the changes */
if (found) {
paths[out] = NULL; /* Clear the last one */
- gtk_icon_theme_set_search_path(icon_theme, (const gchar **)paths, out);
+ gtk_icon_theme_set_search_path(theme, (const gchar **)paths);
}
g_strfreev(paths);
@@ -888,13 +876,13 @@ on_disconnect(NautilusDropbox *cvs) {
static void
-nautilus_dropbox_menu_provider_iface_init (NautilusMenuProviderIface *iface) {
+nautilus_dropbox_menu_provider_iface_init (NautilusMenuProviderInterface *iface) {
iface->get_file_items = nautilus_dropbox_get_file_items;
return;
}
static void
-nautilus_dropbox_info_provider_iface_init (NautilusInfoProviderIface *iface) {
+nautilus_dropbox_info_provider_iface_init (NautilusInfoProviderInterface *iface) {
iface->update_file_info = nautilus_dropbox_update_file_info;
iface->cancel_update = nautilus_dropbox_cancel_update;
return;
diff --git a/src/nautilus-dropbox.h b/src/nautilus-dropbox.h
index 65734be..44faa27 100644
--- a/src/nautilus-dropbox.h
+++ b/src/nautilus-dropbox.h
@@ -27,7 +27,7 @@
#include <glib.h>
#include <glib-object.h>
-#include <libnautilus-extension/nautilus-info-provider.h>
+#include <nautilus-extension.h>
#include "dropbox-command-client.h"
#include "nautilus-dropbox-hooks.h"

View File

@ -87,5 +87,7 @@ stdenv.mkDerivation rec {
license = licenses.gpl3Plus;
maintainers = with maintainers; [ dotlambda tomfitzhenry ];
platforms = platforms.linux;
# Requires upgrade to libsoup3
broken = true;
};
}

View File

@ -1,7 +1,7 @@
{
"version": "1.11.8",
"desktopSrcHash": "l6IwztPEPSo3WgdUBPO4ZNgfoLts8NaqvoHekAhfVGg=",
"desktopYarnHash": "105xj2xwc9g8cfiby0x93gy8w8w5c76mzzxck5mgvawcc6qpvmrc",
"webSrcHash": "Etxlq2TEaZM9Qz4ig5H00DsshJoFH6+wtt+RL1dR2n4=",
"webYarnHash": "1q05r2shv1c3kghwksjzrh9rl25ins6r2y46ng7smdml4f9vdcc0"
"version": "1.11.10",
"desktopSrcHash": "cywTZ5OgKaFkHh3i3KLfb8HH8ZlIAOY3Xn2WHyY0fNM=",
"desktopYarnHash": "1xwnw9hbbrr72xs2d43qwhbmhfk3w4z80cipyrmdj5y248y8sz84",
"webSrcHash": "r7WZUWgPDEBS9xpc1YmmPVGch7B2ouJOFAoKdcC/55Q=",
"webYarnHash": "0s8wxf13jc9x4zykhm4abgq3a38mjya7z43kjsags1fxhilf09bc"
}

View File

@ -28,7 +28,7 @@
, tl-expected
, hunspell
, glibmm
, webkitgtk
, webkitgtk_4_1
, jemalloc
, rnnoise
, abseil-cpp
@ -93,7 +93,7 @@ env.mkDerivation rec {
substituteInPlace Telegram/ThirdParty/libtgvoip/os/linux/AudioPulse.cpp \
--replace '"libpulse.so.0"' '"${libpulseaudio}/lib/libpulse.so.0"'
substituteInPlace Telegram/lib_webview/webview/platform/linux/webview_linux_webkit_gtk.cpp \
--replace '"libwebkit2gtk-4.0.so.37"' '"${webkitgtk}/lib/libwebkit2gtk-4.0.so.37"'
--replace '"libwebkit2gtk-4.1.so.0"' '"${webkitgtk_4_1}/lib/libwebkit2gtk-4.1.so.0"'
'';
# We want to run wrapProgram manually (with additional parameters)
@ -131,7 +131,7 @@ env.mkDerivation rec {
tl-expected
hunspell
glibmm
webkitgtk
webkitgtk_4_1
jemalloc
rnnoise
tg_owt

View File

@ -1,27 +1,50 @@
{ lib, stdenv, fetchurl, gnome, cmake, gettext, intltool, pkg-config, evolution-data-server, evolution
, sqlite, gtk3, webkitgtk, libgdata, libmspack }:
{ stdenv
, lib
, fetchurl
, gnome
, cmake
, gettext
, intltool
, pkg-config
, evolution-data-server
, evolution
, gtk3
, libsoup_3
, libical
, json-glib
, libmspack
, webkitgtk_4_1
}:
stdenv.mkDerivation rec {
pname = "evolution-ews";
version = "3.44.4";
version = "3.46.0";
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "TxgrBaE6wbezOwj7Bm6DlcqpW6fagIiGqpGxQp1tfbM=";
sha256 = "vZe6IFzEW60SmXvuE0ii+R2LAtcUWD159PrheU2sG4A=";
};
nativeBuildInputs = [ cmake gettext intltool pkg-config ];
nativeBuildInputs = [
cmake
gettext
intltool
pkg-config
];
buildInputs = [
evolution-data-server evolution
sqlite libgdata
gtk3 webkitgtk
evolution-data-server
evolution
gtk3
libsoup_3
libical
json-glib
libmspack
# For evolution-shell-3.0
webkitgtk_4_1
];
cmakeFlags = [
# Building with libmspack as recommended: https://wiki.gnome.org/Apps/Evolution/Building#Build_evolution-ews
"-DWITH_MSPACK=ON"
# don't try to install into ${evolution}
"-DFORCE_INSTALL_PREFIX=ON"
];

View File

@ -5,7 +5,7 @@
, intltool
, fetchurl
, libxml2
, webkitgtk
, webkitgtk_4_1
, highlight
, pkg-config
, gtk3
@ -14,7 +14,6 @@
, libpst
, gspell
, evolution-data-server
, libgdata
, libgweather
, glib-networking
, gsettings-desktop-schemas
@ -23,7 +22,6 @@
, shared-mime-info
, libical
, db
, gcr
, sqlite
, gnome
, gnome-desktop
@ -34,7 +32,7 @@
, nspr
, icu
, libcanberra-gtk3
, geocode-glib
, geocode-glib_2
, cmark
, bogofilter
, gst_all_1
@ -46,11 +44,11 @@
stdenv.mkDerivation rec {
pname = "evolution";
version = "3.44.4";
version = "3.46.0";
src = fetchurl {
url = "mirror://gnome/sources/evolution/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "8LFuerrTx5RaKcMi8X2rSgjWHpm9fMkbjfNQU8XBLow=";
sha256 = "4J6Sdrxrmr8NrTpOgT7qHQJfT2qvH6w7ew+IiVdCkT8=";
};
nativeBuildInputs = [
@ -68,7 +66,6 @@ stdenv.mkDerivation rec {
bogofilter
db
evolution-data-server
gcr
gdk-pixbuf
glib
glib-networking
@ -81,9 +78,8 @@ stdenv.mkDerivation rec {
highlight
icu
libcanberra-gtk3
geocode-glib
geocode-glib_2
cmark
libgdata
libgweather
libical
libnotify
@ -97,7 +93,7 @@ stdenv.mkDerivation rec {
procps
shared-mime-info
sqlite
webkitgtk
webkitgtk_4_1
];
propagatedUserEnvPkgs = [
@ -106,13 +102,11 @@ stdenv.mkDerivation rec {
cmakeFlags = [
"-DENABLE_AUTOAR=OFF"
"-DENABLE_LIBCRYPTUI=OFF"
"-DENABLE_YTNEF=OFF"
"-DWITH_SPAMASSASSIN=${spamassassin}/bin/spamassassin"
"-DWITH_SA_LEARN=${spamassassin}/bin/sa-learn"
"-DWITH_BOGOFILTER=${bogofilter}/bin/bogofilter"
"-DWITH_OPENLDAP=${openldap}"
"-DWITH_GWEATHER4=ON"
];
requiredSystemFeatures = [
@ -128,6 +122,7 @@ stdenv.mkDerivation rec {
};
};
PKG_CONFIG_CAMEL_1_2_CAMEL_PROVIDERDIR = "${placeholder "out"}/lib/evolution-data-server/camel-providers";
PKG_CONFIG_LIBEDATASERVERUI_1_2_UIMODULEDIR = "${placeholder "out"}/lib/evolution-data-server/ui-modules";
meta = with lib; {

View File

@ -52,13 +52,13 @@ let
in
stdenv.mkDerivation rec {
pname = "freerdp";
version = "2.8.0";
version = "2.8.1";
src = fetchFromGitHub {
owner = "FreeRDP";
repo = "FreeRDP";
rev = version;
sha256 = "sha256-bVq/99jMkxTjckMjWoK4pBa0jD/AYezgKUPJziNSqI0=";
sha256 = "sha256-0heCwXFms6Ni/F1TaS5QEK+ePlR9DXUrzVj3vA5DvCk=";
};
postPatch = ''

View File

@ -3,7 +3,7 @@
, freerdp, libssh, libgcrypt, gnutls, vte
, pcre2, libdbusmenu-gtk3, libappindicator-gtk3
, libvncserver, libpthreadstubs, libXdmcp, libxkbcommon
, libsecret, libsoup, spice-protocol, spice-gtk, libepoxy, at-spi2-core
, libsecret, libsoup, spice-protocol, spice-gtk_libsoup2, libepoxy, at-spi2-core
, openssl, gsettings-desktop-schemas, json-glib, libsodium, webkitgtk, harfbuzz
# The themes here are soft dependencies; only icons are missing without them.
, gnome
@ -31,7 +31,10 @@ stdenv.mkDerivation rec {
freerdp libssh libgcrypt gnutls
pcre2 libdbusmenu-gtk3 libappindicator-gtk3
libvncserver libpthreadstubs libXdmcp libxkbcommon
libsoup spice-protocol spice-gtk libepoxy at-spi2-core
libsoup spice-protocol
# https://gitlab.com/Remmina/Remmina/-/issues/2754
spice-gtk_libsoup2
libepoxy at-spi2-core
openssl gnome.adwaita-icon-theme json-glib libsodium webkitgtk
harfbuzz python3
] ++ optionals withLibsecret [ libsecret ]

View File

@ -99,6 +99,7 @@ stdenv.mkDerivation rec {
maintainers = with maintainers; [ dtzWill ] ++ teams.pantheon.members;
platforms = platforms.linux;
mainProgram = "com.github.alainm23.planner";
broken = true; # https://github.com/alainm23/planner/issues/928
};
}

View File

@ -7,11 +7,11 @@ let
inherit (python3Packages) python pygobject3;
in stdenv.mkDerivation rec {
pname = "gnumeric";
version = "1.12.52";
version = "1.12.53";
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "c89zBJoiodgoUGJ1ssk3jsN8X/N7aLsfL0lPDWQAgjs=";
sha256 = "VWjkyNzqu5Ao8TYdEEVSL5Xwpx2qWelzy90tObrdTwI=";
};
configureFlags = [ "--disable-component" ];

View File

@ -12,13 +12,13 @@
stdenv.mkDerivation rec {
pname = "treesheets";
version = "unstable-2022-09-26";
version = "unstable-2022-10-11";
src = fetchFromGitHub {
owner = "aardappel";
repo = "treesheets";
rev = "4778c343ac78a3b3ccdaf079187b53d8cd64e235";
sha256 = "UyltzT9B+7/hME7famQa/XgrDPaNw3apwchKgxwscOo=";
rev = "be79e537c148d961d40137a7f83d7bdcc4119dd6";
sha256 = "GKRxb6W9PDY7nzgPTPRPmA9GBvD4zLaZwnalZan3+m0=";
};
nativeBuildInputs = [

View File

@ -54,16 +54,16 @@ let
in
rustPlatform.buildRustPackage rec {
pname = "alacritty";
version = "0.11.0-rc2";
version = "0.11.0";
src = fetchFromGitHub {
owner = "alacritty";
repo = pname;
rev = "refs/tags/v${version}";
hash = "sha256-svo7DIPgNQy+MkIrRtRQjKQ2ND0CRfofSCiXJqoWby0=";
hash = "sha256-2jNE0UdPXfOyAfPPVKhdBpuVVw4IpwWQ+RLQlJNnK0Y=";
};
cargoSha256 = "sha256-ClAW7WjnDs4Peu+UqcOwtuDDkWYWACMQU5p39CiIFm0=";
cargoSha256 = "sha256-t6ckX0PYI8UHfXhGRpcX8ly3DzE9A6i9P6f3Ny3DBzw=";
nativeBuildInputs = [
cmake

View File

@ -0,0 +1,72 @@
{ lib
, stdenv
, fetchFromGitLab
, fetchurl
, meson
, ninja
, pkg-config
, vala
, gtk4
, vte-gtk4
, json-glib
, sassc
, libadwaita
, pcre2
, libxml2
, librsvg
, callPackage
, python3
, gtk3
, desktop-file-utils
, wrapGAppsHook
}:
let
marble = callPackage ./marble.nix { };
in
stdenv.mkDerivation rec {
pname = "blackbox";
version = "0.12.0";
src = fetchFromGitLab {
domain = "gitlab.gnome.org";
owner = "raggesilver";
repo = "blackbox";
rev = "v${version}";
sha256 = "sha256-8u4qHC8+3rKDFNdg5kI48dBgAm3d6ESXN5H9aT/nIBY=";
};
postPatch = ''
patchShebangs build-aux/meson/postinstall.py
'';
nativeBuildInputs = [
meson
ninja
pkg-config
vala
sassc
wrapGAppsHook
python3
gtk3 # For gtk-update-icon-cache
desktop-file-utils # For update-desktop-database
];
buildInputs = [
gtk4
vte-gtk4
json-glib
marble
libadwaita
pcre2
libxml2
librsvg
];
meta = with lib; {
description = "Beautiful GTK 4 terminal";
homepage = "https://gitlab.gnome.org/raggesilver/blackbox";
license = licenses.gpl3Plus;
maintainers = with maintainers; [ chuangzhu ];
platforms = platforms.linux;
};
}

View File

@ -0,0 +1,45 @@
{ lib
, stdenv
, fetchFromGitLab
, meson
, ninja
, pkg-config
, vala
, gobject-introspection
, gtk4
, gtk3
, desktop-file-utils
}:
stdenv.mkDerivation {
pname = "marble";
version = "unstable-2022-04-20";
src = fetchFromGitLab {
domain = "gitlab.gnome.org";
owner = "raggesilver";
repo = "marble";
# Latest commit from the 'wip/gtk4' branch
rev = "6dcc6fefa35f0151b0549c01bd774750fe6bdef8";
sha256 = "sha256-0VJ9nyjWOOdLBm3ufleS/xcAS5YsSedJ2NtBjyM3uaY=";
};
nativeBuildInputs = [
meson
ninja
pkg-config
vala
gtk3 # For gtk-update-icon-cache
desktop-file-utils # For update-desktop-database
gobject-introspection # For g-ir-compiler
];
buildInputs = [ gtk4 ];
meta = with lib; {
description = "Raggesilver's GTK library";
homepage = "https://gitlab.gnome.org/raggesilver/marble";
license = licenses.gpl3Plus;
maintainers = with maintainers; [ chuangzhu ];
platforms = platforms.linux;
};
}

View File

@ -23,6 +23,7 @@
stdenv.mkDerivation rec {
pname = "gnome-console";
# Do not upgrade until https://gitlab.gnome.org/GNOME/vte/-/issues/2584 is resolved!
version = "42.2";
src = fetchurl {
@ -45,8 +46,6 @@ stdenv.mkDerivation rec {
libhandy
pcre2
vte
] ++ lib.optionals stdenv.isLinux [
gnome.nautilus
];
nativeBuildInputs = [
@ -61,7 +60,7 @@ stdenv.mkDerivation rec {
wrapGAppsHook
];
mesonFlags = lib.optionals (!stdenv.isLinux) [
mesonFlags = [
"-Dnautilus=disabled"
];

View File

@ -33,6 +33,7 @@
, libxkbcommon
, orc
, pcre
, pcre2
, udev
, util-linux
, xorg
@ -94,7 +95,8 @@ stdenv.mkDerivation rec {
libunwind
libxkbcommon
orc
pcre
pcre # required by libselinux before we USE_PCRE2
pcre2 # required by glib-2.0
udev
util-linux
zstd

View File

@ -3,7 +3,6 @@
, fetchFromGitLab
, fetchpatch
, rustPlatform
, gnome
, pkg-config
, meson
, wrapGAppsHook4

View File

@ -0,0 +1,371 @@
From 8ab70b8958a8f9cb9bd316eecd3ccbcf05c06614 Mon Sep 17 00:00:00 2001
From: Linus Heckemann <git@sphalerite.org>
Date: Tue, 4 Oct 2022 12:41:21 +0200
Subject: [PATCH] 9pfs: use GHashTable for fid table
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
The previous implementation would iterate over the fid table for
lookup operations, resulting in an operation with O(n) complexity on
the number of open files and poor cache locality -- for every open,
stat, read, write, etc operation.
This change uses a hashtable for this instead, significantly improving
the performance of the 9p filesystem. The runtime of NixOS's simple
installer test, which copies ~122k files totalling ~1.8GiB from 9p,
decreased by a factor of about 10.
Signed-off-by: Linus Heckemann <git@sphalerite.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Reviewed-by: Greg Kurz <groug@kaod.org>
[CS: - Retain BUG_ON(f->clunked) in get_fid().
- Add TODO comment in clunk_fid(). ]
Message-Id: <20221004104121.713689-1-git@sphalerite.org>
[CS: - Drop unnecessary goto and out: label. ]
Signed-off-by: Christian Schoenebeck <qemu_oss@crudebyte.com>
---
hw/9pfs/9p.c | 194 +++++++++++++++++++++++++++++----------------------
hw/9pfs/9p.h | 2 +-
2 files changed, 112 insertions(+), 84 deletions(-)
diff --git a/hw/9pfs/9p.c b/hw/9pfs/9p.c
index aebadeaa03..9bf13133e5 100644
--- a/hw/9pfs/9p.c
+++ b/hw/9pfs/9p.c
@@ -256,7 +256,8 @@ static size_t v9fs_string_size(V9fsString *str)
}
/*
- * returns 0 if fid got re-opened, 1 if not, < 0 on error */
+ * returns 0 if fid got re-opened, 1 if not, < 0 on error
+ */
static int coroutine_fn v9fs_reopen_fid(V9fsPDU *pdu, V9fsFidState *f)
{
int err = 1;
@@ -282,33 +283,32 @@ static V9fsFidState *coroutine_fn get_fid(V9fsPDU *pdu, int32_t fid)
V9fsFidState *f;
V9fsState *s = pdu->s;
- QSIMPLEQ_FOREACH(f, &s->fid_list, next) {
+ f = g_hash_table_lookup(s->fids, GINT_TO_POINTER(fid));
+ if (f) {
BUG_ON(f->clunked);
- if (f->fid == fid) {
- /*
- * Update the fid ref upfront so that
- * we don't get reclaimed when we yield
- * in open later.
- */
- f->ref++;
- /*
- * check whether we need to reopen the
- * file. We might have closed the fd
- * while trying to free up some file
- * descriptors.
- */
- err = v9fs_reopen_fid(pdu, f);
- if (err < 0) {
- f->ref--;
- return NULL;
- }
- /*
- * Mark the fid as referenced so that the LRU
- * reclaim won't close the file descriptor
- */
- f->flags |= FID_REFERENCED;
- return f;
+ /*
+ * Update the fid ref upfront so that
+ * we don't get reclaimed when we yield
+ * in open later.
+ */
+ f->ref++;
+ /*
+ * check whether we need to reopen the
+ * file. We might have closed the fd
+ * while trying to free up some file
+ * descriptors.
+ */
+ err = v9fs_reopen_fid(pdu, f);
+ if (err < 0) {
+ f->ref--;
+ return NULL;
}
+ /*
+ * Mark the fid as referenced so that the LRU
+ * reclaim won't close the file descriptor
+ */
+ f->flags |= FID_REFERENCED;
+ return f;
}
return NULL;
}
@@ -317,12 +317,11 @@ static V9fsFidState *alloc_fid(V9fsState *s, int32_t fid)
{
V9fsFidState *f;
- QSIMPLEQ_FOREACH(f, &s->fid_list, next) {
+ f = g_hash_table_lookup(s->fids, GINT_TO_POINTER(fid));
+ if (f) {
/* If fid is already there return NULL */
BUG_ON(f->clunked);
- if (f->fid == fid) {
- return NULL;
- }
+ return NULL;
}
f = g_new0(V9fsFidState, 1);
f->fid = fid;
@@ -333,7 +332,7 @@ static V9fsFidState *alloc_fid(V9fsState *s, int32_t fid)
* reclaim won't close the file descriptor
*/
f->flags |= FID_REFERENCED;
- QSIMPLEQ_INSERT_TAIL(&s->fid_list, f, next);
+ g_hash_table_insert(s->fids, GINT_TO_POINTER(fid), f);
v9fs_readdir_init(s->proto_version, &f->fs.dir);
v9fs_readdir_init(s->proto_version, &f->fs_reclaim.dir);
@@ -424,12 +423,12 @@ static V9fsFidState *clunk_fid(V9fsState *s, int32_t fid)
{
V9fsFidState *fidp;
- QSIMPLEQ_FOREACH(fidp, &s->fid_list, next) {
- if (fidp->fid == fid) {
- QSIMPLEQ_REMOVE(&s->fid_list, fidp, V9fsFidState, next);
- fidp->clunked = true;
- return fidp;
- }
+ /* TODO: Use g_hash_table_steal_extended() instead? */
+ fidp = g_hash_table_lookup(s->fids, GINT_TO_POINTER(fid));
+ if (fidp) {
+ g_hash_table_remove(s->fids, GINT_TO_POINTER(fid));
+ fidp->clunked = true;
+ return fidp;
}
return NULL;
}
@@ -439,10 +438,15 @@ void coroutine_fn v9fs_reclaim_fd(V9fsPDU *pdu)
int reclaim_count = 0;
V9fsState *s = pdu->s;
V9fsFidState *f;
+ GHashTableIter iter;
+ gpointer fid;
+
+ g_hash_table_iter_init(&iter, s->fids);
+
QSLIST_HEAD(, V9fsFidState) reclaim_list =
QSLIST_HEAD_INITIALIZER(reclaim_list);
- QSIMPLEQ_FOREACH(f, &s->fid_list, next) {
+ while (g_hash_table_iter_next(&iter, &fid, (gpointer *) &f)) {
/*
* Unlink fids cannot be reclaimed. Check
* for them and skip them. Also skip fids
@@ -514,72 +518,85 @@ void coroutine_fn v9fs_reclaim_fd(V9fsPDU *pdu)
}
}
+/*
+ * This is used when a path is removed from the directory tree. Any
+ * fids that still reference it must not be closed from then on, since
+ * they cannot be reopened.
+ */
static int coroutine_fn v9fs_mark_fids_unreclaim(V9fsPDU *pdu, V9fsPath *path)
{
- int err;
+ int err = 0;
V9fsState *s = pdu->s;
- V9fsFidState *fidp, *fidp_next;
+ V9fsFidState *fidp;
+ gpointer fid;
+ GHashTableIter iter;
+ /*
+ * The most common case is probably that we have exactly one
+ * fid for the given path, so preallocate exactly one.
+ */
+ g_autoptr(GArray) to_reopen = g_array_sized_new(FALSE, FALSE,
+ sizeof(V9fsFidState *), 1);
+ gint i;
- fidp = QSIMPLEQ_FIRST(&s->fid_list);
- if (!fidp) {
- return 0;
- }
+ g_hash_table_iter_init(&iter, s->fids);
/*
- * v9fs_reopen_fid() can yield : a reference on the fid must be held
- * to ensure its pointer remains valid and we can safely pass it to
- * QSIMPLEQ_NEXT(). The corresponding put_fid() can also yield so
- * we must keep a reference on the next fid as well. So the logic here
- * is to get a reference on a fid and only put it back during the next
- * iteration after we could get a reference on the next fid. Start with
- * the first one.
+ * We iterate over the fid table looking for the entries we need
+ * to reopen, and store them in to_reopen. This is because
+ * v9fs_reopen_fid() and put_fid() yield. This allows the fid table
+ * to be modified in the meantime, invalidating our iterator.
*/
- for (fidp->ref++; fidp; fidp = fidp_next) {
+ while (g_hash_table_iter_next(&iter, &fid, (gpointer *) &fidp)) {
if (fidp->path.size == path->size &&
!memcmp(fidp->path.data, path->data, path->size)) {
- /* Mark the fid non reclaimable. */
- fidp->flags |= FID_NON_RECLAIMABLE;
-
- /* reopen the file/dir if already closed */
- err = v9fs_reopen_fid(pdu, fidp);
- if (err < 0) {
- put_fid(pdu, fidp);
- return err;
- }
- }
-
- fidp_next = QSIMPLEQ_NEXT(fidp, next);
-
- if (fidp_next) {
/*
- * Ensure the next fid survives a potential clunk request during
- * put_fid() below and v9fs_reopen_fid() in the next iteration.
+ * Ensure the fid survives a potential clunk request during
+ * v9fs_reopen_fid or put_fid.
*/
- fidp_next->ref++;
+ fidp->ref++;
+ fidp->flags |= FID_NON_RECLAIMABLE;
+ g_array_append_val(to_reopen, fidp);
}
+ }
- /* We're done with this fid */
- put_fid(pdu, fidp);
+ for (i = 0; i < to_reopen->len; i++) {
+ fidp = g_array_index(to_reopen, V9fsFidState*, i);
+ /* reopen the file/dir if already closed */
+ err = v9fs_reopen_fid(pdu, fidp);
+ if (err < 0) {
+ break;
+ }
}
- return 0;
+ for (i = 0; i < to_reopen->len; i++) {
+ put_fid(pdu, g_array_index(to_reopen, V9fsFidState*, i));
+ }
+ return err;
}
static void coroutine_fn virtfs_reset(V9fsPDU *pdu)
{
V9fsState *s = pdu->s;
V9fsFidState *fidp;
+ GList *freeing;
+ /*
+ * Get a list of all the values (fid states) in the table, which
+ * we then...
+ */
+ g_autoptr(GList) fids = g_hash_table_get_values(s->fids);
- /* Free all fids */
- while (!QSIMPLEQ_EMPTY(&s->fid_list)) {
- /* Get fid */
- fidp = QSIMPLEQ_FIRST(&s->fid_list);
- fidp->ref++;
+ /* ... remove from the table, taking over ownership. */
+ g_hash_table_steal_all(s->fids);
- /* Clunk fid */
- QSIMPLEQ_REMOVE(&s->fid_list, fidp, V9fsFidState, next);
+ /*
+ * This allows us to release our references to them asynchronously without
+ * iterating over the hash table and risking iterator invalidation
+ * through concurrent modifications.
+ */
+ for (freeing = fids; freeing; freeing = freeing->next) {
+ fidp = freeing->data;
+ fidp->ref++;
fidp->clunked = true;
-
put_fid(pdu, fidp);
}
}
@@ -3205,6 +3222,8 @@ static int coroutine_fn v9fs_complete_rename(V9fsPDU *pdu, V9fsFidState *fidp,
V9fsFidState *tfidp;
V9fsState *s = pdu->s;
V9fsFidState *dirfidp = NULL;
+ GHashTableIter iter;
+ gpointer fid;
v9fs_path_init(&new_path);
if (newdirfid != -1) {
@@ -3238,11 +3257,13 @@ static int coroutine_fn v9fs_complete_rename(V9fsPDU *pdu, V9fsFidState *fidp,
if (err < 0) {
goto out;
}
+
/*
* Fixup fid's pointing to the old name to
* start pointing to the new name
*/
- QSIMPLEQ_FOREACH(tfidp, &s->fid_list, next) {
+ g_hash_table_iter_init(&iter, s->fids);
+ while (g_hash_table_iter_next(&iter, &fid, (gpointer *) &tfidp)) {
if (v9fs_path_is_ancestor(&fidp->path, &tfidp->path)) {
/* replace the name */
v9fs_fix_path(&tfidp->path, &new_path, strlen(fidp->path.data));
@@ -3320,6 +3341,8 @@ static int coroutine_fn v9fs_fix_fid_paths(V9fsPDU *pdu, V9fsPath *olddir,
V9fsPath oldpath, newpath;
V9fsState *s = pdu->s;
int err;
+ GHashTableIter iter;
+ gpointer fid;
v9fs_path_init(&oldpath);
v9fs_path_init(&newpath);
@@ -3336,7 +3359,8 @@ static int coroutine_fn v9fs_fix_fid_paths(V9fsPDU *pdu, V9fsPath *olddir,
* Fixup fid's pointing to the old name to
* start pointing to the new name
*/
- QSIMPLEQ_FOREACH(tfidp, &s->fid_list, next) {
+ g_hash_table_iter_init(&iter, s->fids);
+ while (g_hash_table_iter_next(&iter, &fid, (gpointer *) &tfidp)) {
if (v9fs_path_is_ancestor(&oldpath, &tfidp->path)) {
/* replace the name */
v9fs_fix_path(&tfidp->path, &newpath, strlen(oldpath.data));
@@ -4226,7 +4250,7 @@ int v9fs_device_realize_common(V9fsState *s, const V9fsTransport *t,
s->ctx.fmode = fse->fmode;
s->ctx.dmode = fse->dmode;
- QSIMPLEQ_INIT(&s->fid_list);
+ s->fids = g_hash_table_new(NULL, NULL);
qemu_co_rwlock_init(&s->rename_lock);
if (s->ops->init(&s->ctx, errp) < 0) {
@@ -4286,6 +4310,10 @@ void v9fs_device_unrealize_common(V9fsState *s)
if (s->ctx.fst) {
fsdev_throttle_cleanup(s->ctx.fst);
}
+ if (s->fids) {
+ g_hash_table_destroy(s->fids);
+ s->fids = NULL;
+ }
g_free(s->tag);
qp_table_destroy(&s->qpd_table);
qp_table_destroy(&s->qpp_table);
diff --git a/hw/9pfs/9p.h b/hw/9pfs/9p.h
index 994f952600..10fd2076c2 100644
--- a/hw/9pfs/9p.h
+++ b/hw/9pfs/9p.h
@@ -339,7 +339,7 @@ typedef struct {
struct V9fsState {
QLIST_HEAD(, V9fsPDU) free_list;
QLIST_HEAD(, V9fsPDU) active_list;
- QSIMPLEQ_HEAD(, V9fsFidState) fid_list;
+ GHashTable *fids;
FileOperations *ops;
FsContext ctx;
char *tag;
--
2.36.2

View File

@ -3,7 +3,7 @@
, bison, lzo, snappy, libaio, libtasn1, gnutls, nettle, curl, ninja, meson, sigtool
, makeWrapper, runtimeShell, removeReferencesTo
, attr, libcap, libcap_ng, socat
, CoreServices, Cocoa, Hypervisor, rez, setfile
, CoreServices, Cocoa, Hypervisor, rez, setfile, vmnet
, guestAgentSupport ? with stdenv.hostPlatform; isLinux || isSunOS || isWindows
, numaSupport ? stdenv.isLinux && !stdenv.isAarch32, numactl
, seccompSupport ? stdenv.isLinux, libseccomp
@ -60,7 +60,7 @@ stdenv.mkDerivation rec {
gnutls nettle curl
]
++ lib.optionals ncursesSupport [ ncurses ]
++ lib.optionals stdenv.isDarwin [ CoreServices Cocoa Hypervisor rez setfile ]
++ lib.optionals stdenv.isDarwin [ CoreServices Cocoa Hypervisor rez setfile vmnet ]
++ lib.optionals seccompSupport [ libseccomp ]
++ lib.optionals numaSupport [ numactl ]
++ lib.optionals alsaSupport [ alsa-lib ]
@ -111,6 +111,7 @@ stdenv.mkDerivation rec {
sha256 = "sha256-oC+bRjEHixv1QEFO9XAm4HHOwoiT+NkhknKGPydnZ5E=";
revert = true;
})
./9pfs-use-GHashTable-for-fid-table.patch
]
++ lib.optional nixosTestRunner ./force-uid0-on-9p.patch;

View File

@ -19,7 +19,8 @@
, pkg-config
, python3
, shared-mime-info
, spice-gtk ? null
# https://gitlab.com/virt-viewer/virt-viewer/-/issues/88
, spice-gtk_libsoup2 ? null
, spice-protocol ? null
, spiceSupport ? true
, vte
@ -29,7 +30,7 @@
assert spiceSupport -> (
gdbm != null
&& libcap != null
&& spice-gtk != null
&& spice-gtk_libsoup2 != null
&& spice-protocol != null
);
@ -78,12 +79,12 @@ stdenv.mkDerivation rec {
] ++ optionals spiceSupport [
gdbm
libcap
spice-gtk
spice-gtk_libsoup2
spice-protocol
];
# Required for USB redirection PolicyKit rules file
propagatedUserEnvPkgs = optional spiceSupport spice-gtk;
propagatedUserEnvPkgs = optional spiceSupport spice-gtk_libsoup2;
strictDeps = true;

View File

@ -1,52 +1,60 @@
{ stdenv, maven, runCommand, writeText, fetchurl, lib, requireFile }:
/* Takes an info file generated by mvn2nix
* (https://github.com/NixOS/mvn2nix-maven-plugin) and builds the maven
* project with it.
*
* repo: A local maven repository with the project's dependencies.
*
* settings: A settings.xml to pass to maven to use the repo.
*
* build: A simple build derivation that uses mvn compile and package to build
* the project.
*/
infoFile: let
{ stdenv, maven, runCommand, writeText, fetchurl, lib, requireFile, linkFarm }:
# Takes an info file generated by mvn2nix
# (https://github.com/NixOS/mvn2nix-maven-plugin) and builds the maven
# project with it.
#
# repo: A local maven repository with the project's dependencies.
#
# settings: A settings.xml to pass to maven to use the repo.
#
# build: A simple build derivation that uses mvn compile and package to build
# the project.
#
# @example
# project = pkgs.buildMaven ./project-info.json
infoFile:
let
info = lib.importJSON infoFile;
script = writeText "build-maven-repository.sh" ''
${lib.concatStrings (map (dep: let
dependencies = lib.flatten (map (dep:
let
inherit (dep) sha1 groupId artifactId version metadata repository-id;
versionDir = dep.unresolved-version or version;
authenticated = dep.authenticated or false;
url = dep.url or "";
fetch = if (url != "") then ((if authenticated then requireFile else fetchurl) {
fetch = if (url != "") then
((if authenticated then requireFile else fetchurl) {
inherit url sha1;
}) else "";
})
else
"";
fetchMetadata = (if authenticated then requireFile else fetchurl) {
inherit (metadata) url sha1;
};
in ''
dir=$out/$(echo ${groupId} | sed 's|\.|/|g')/${artifactId}/${versionDir}
mkdir -p $dir
${lib.optionalString (fetch != "") ''
ln -sv ${fetch} $dir/${fetch.name}
''}
${lib.optionalString (dep ? metadata) ''
ln -svf ${fetchMetadata} $dir/maven-metadata-${repository-id}.xml
${lib.optionalString (fetch != "") ''
ln -sv ${fetch} $dir/$(echo ${fetch.name} | sed 's|${version}|${dep.unresolved-version}|')
''}
''}
'') info.dependencies)}
'';
layout = "${
builtins.replaceStrings [ "." ] [ "/" ] groupId
}/${artifactId}/${versionDir}";
in lib.optional (url != "") {
layout = "${layout}/${fetch.name}";
drv = fetch;
} ++ lib.optionals (dep ? metadata) ([{
layout = "${layout}/maven-metadata-${repository-id}.xml";
drv = fetchMetadata;
}] ++ lib.optional (fetch != "") {
layout = "${layout}/${
builtins.replaceStrings [ version ] [ dep.unresolved-version ]
fetch.name
}";
drv = fetch;
})) info.dependencies);
repo = runCommand "maven-repository" {} ''
bash ${script}
'';
repo = linkFarm "maven-repository" (lib.forEach dependencies (dependency: {
name = dependency.layout;
path = dependency.drv;
}));
settings = writeText "settings.xml" ''
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
@ -65,9 +73,8 @@ in {
name = "${info.project.artifactId}-${info.project.version}.jar";
src = builtins.filterSource (path: type:
(toString path) != (toString (src + "/target")) &&
(toString path) != (toString (src + "/.git"))
) src;
(toString path) != (toString (src + "/target")) && (toString path)
!= (toString (src + "/.git"))) src;
buildInputs = [ maven ];

View File

@ -984,33 +984,34 @@ rec {
# following lines, double-check that your code behaves properly
# when the number of layers equals:
# maxLayers-1, maxLayers, and maxLayers+1, 0
store_layers="$(
paths |
jq -sR '
rtrimstr("\n") | split("\n")
| (.[:$maxLayers-1] | map([.])) + [ .[$maxLayers-1:] ]
| map(select(length > 0))
' \
--argjson maxLayers "$availableLayers"
)"
--argjson maxLayers "$availableLayers" > store_layers.json
# The index on $store_layers is necessary because the --slurpfile
# automatically reads the file as an array.
cat ${baseJson} | jq '
. + {
"store_dir": $store_dir,
"from_image": $from_image,
"store_layers": $store_layers,
"store_layers": $store_layers[0],
"customisation_layer", $customisation_layer,
"repo_tag": $repo_tag,
"created": $created
}
' --arg store_dir "${storeDir}" \
--argjson from_image ${if fromImage == null then "null" else "'\"${fromImage}\"'"} \
--argjson store_layers "$store_layers" \
--slurpfile store_layers store_layers.json \
--arg customisation_layer ${customisationLayer} \
--arg repo_tag "$imageName:$imageTag" \
--arg created "$created" |
tee $out
'';
result = runCommand "stream-${baseName}"
{
inherit (conf) imageName;

View File

@ -9,11 +9,11 @@
stdenv.mkDerivation rec {
pname = "gnome-user-docs";
version = "42.0";
version = "43.0";
src = fetchurl {
url = "mirror://gnome/sources/gnome-user-docs/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "srJ9oEEAu90vTw5bw48tBW2V+jZWcgFj9kNqMWfV6QU=";
sha256 = "NgcWDv/W+R4lqHmLV977IJndcLj+5Ofi8g8mN6woyu4=";
};
nativeBuildInputs = [

View File

@ -34,13 +34,13 @@
stdenv.mkDerivation rec {
pname = "cheese";
version = "41.1";
version = "43.alpha";
outputs = [ "out" "man" "devdoc" ];
src = fetchurl {
url = "mirror://gnome/sources/cheese/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "UilgyihzD/ZkOQcLBEGMngpLtVVg11v+CLIY2ixn5Uc=";
sha256 = "utrp972m+lch2regi4I3p15TJcDJpmlJj/VPdyFG5M8=";
};
nativeBuildInputs = [

View File

@ -1,6 +1,7 @@
{ lib
, stdenv
, fetchurl
, fetchpatch
, desktop-file-utils
, gettext
, glibcLocales
@ -12,29 +13,26 @@
, python3
, wrapGAppsHook
, cpio
, file
, glib
, gnome
, gtk3
, libhandy
, json-glib
, libarchive
, libnotify
, libportal-gtk3
, nautilus
, unzip
}:
stdenv.mkDerivation rec {
pname = "file-roller";
version = "3.42.0";
version = "43.0";
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "HEOObVPsEP9PLrWyLXu/KKfCqElXq2SnUcHN88UjAsc=";
url = "mirror://gnome/sources/file-roller/${lib.versions.major version}/file-roller-${version}.tar.xz";
sha256 = "KYcp/b252oEywLvGCQdRfWVoWwVhiuBRZzNeZIT1c6E=";
};
LANG = "en_US.UTF-8"; # postinstall.py
nativeBuildInputs = [
desktop-file-utils
gettext
@ -50,22 +48,16 @@ stdenv.mkDerivation rec {
buildInputs = [
cpio
file
glib
gnome.adwaita-icon-theme
gtk3
libhandy
json-glib
libarchive
libnotify
libportal-gtk3
nautilus
];
PKG_CONFIG_LIBNAUTILUS_EXTENSION_EXTENSIONDIR = "${placeholder "out"}/lib/nautilus/extensions-3.0";
postPatch = ''
chmod +x postinstall.py # patchShebangs requires executable file
patchShebangs postinstall.py
patchShebangs data/set-mime-type-entry.py
'';

View File

@ -25,11 +25,11 @@
stdenv.mkDerivation rec {
pname = "gedit";
version = "42.2";
version = "43.alpha";
src = fetchurl {
url = "mirror://gnome/sources/gedit/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "PGIpER8KwGauRJZJIHkdEmX1u7VrC9lJppt7EmH8j8o=";
sha256 = "K3iOqhbYeeOVdGmS/OdmC5WtIpQ5OgHs0t5CzdWW95o=";
};
patches = [

View File

@ -12,21 +12,23 @@
, itstool
, libxml2
, gtk4
, libadwaita
, glib
, atk
, gobject-introspection
, vala
, wrapGAppsHook4
}:
stdenv.mkDerivation rec {
pname = "ghex";
version = "42.3";
version = "43.0";
outputs = [ "out" "dev" "devdoc" ];
src = fetchurl {
url = "mirror://gnome/sources/ghex/${lib.versions.major version}/${pname}-${version}.tar.xz";
sha256 = "rdQPirJJIdsw0nvljwAnMgGXfYf9yNeezq36iw41Te8=";
sha256 = "hmwGIsZv21rSpHXpz8zLIZocZDHwCayyKR1D8hQLFH4=";
};
nativeBuildInputs = [
@ -38,11 +40,13 @@ stdenv.mkDerivation rec {
pkg-config
gi-docgen
gobject-introspection
vala
wrapGAppsHook4
];
buildInputs = [
gtk4
libadwaita
atk
glib
];
@ -54,6 +58,7 @@ stdenv.mkDerivation rec {
mesonFlags = [
"-Dgtk_doc=true"
"-Dvapi=true"
] ++ lib.optionals stdenv.isDarwin [
# mremap does not exist on darwin
"-Dmmap-buffer-backend=false"

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