Commit graph

32598 commits

Author SHA1 Message Date
Maximilian Bosch 2282fa73a1
postgresql: implement opt-in JIT support
Closes #150801

Note: I decided against resuming directly on #150801 because the
conflict was too big (and resolving it seemed too error-prone to me).
Also the `this`-refactoring could be done in an easier manner, i.e. by
exposing JIT attributes with the correct configuration. More on that
below.

This patch creates variants of the `postgresql*`-packages with JIT[1]
support. Please note that a lot of the work was derived from previous
patches filed by other contributors, namely dasJ, andir and abbradar,
hence the co-authored-by tags below.

Effectively, the following things have changed:

* For JIT variants an LLVM-backed stdenv with clang is now used as
  suggested by dasJ[2]. We need LLVM and CLang[3] anyways to build the
  JIT-part, so no need to mix this up with GCC's stdenv. Also, using the
  `dev`-output of LLVM and clang's stdenv for building (and adding llvm
  libs as build-inputs) seems more cross friendly to me (which will
  become useful when cross-building for JIT-variants will actually be
  supported).

* Plugins inherit the build flags from the Makefiles in
  `$out/lib/pgxs/src` (e.g. `-Werror=unguarded-availability-new`). Since
  some of the flags are clang-specific (and stem from the use of the
  CLang stdenv) and don't work on gcc, the stdenv of `pkgs.postgresql`
  is passed to the plugins. I.e., plugins for non-JIT variants are built
  with a gcc stdenv on Linux and plugins for JIT variants with a clang
  stdenv.

  Since `plv8` hard-codes `gcc` as `$CC` in its Makefile[4], I marked it
  as broken for JIT-variants of postgresql only.

* Added a test-matrix to confirm that JIT works fine on each
  `pkgs.postgresql_*_jit` (thanks Andi for the original test in
  #124804!).

* For each postgresql version, a new attribute
  `postgresql_<version>_jit` (and a corresponding
  `postgresqlPackages<version>JitPackages`) are now exposed for better
  discoverability and prebuilt artifacts in the binary cache.

* In #150801 the `this`-argument was replaced by an internal recursion.
  I decided against this approach because it'd blow up the diff even
  more which makes the readability way harder and also harder to revert
  this if necessary.

  Instead, it is made sure that `this` always points to the correct
  variant of `postgresql` and re-using that in an additional
  `.override {}`-expression is trivial because the JIT-variant is
  exposed in `all-packages.nix`.

* I think the changes are sufficiently big to actually add myself as
  maintainer here.

* Added `libxcrypt` to `buildInputs` for versions <v13. While
  building things with an LLVM stdenv, these versions complained that
  the extern `crypt()` symbol can't be found. Not sure what this is
  exactly about, but since we want to switch to libxcrypt for `crypt()`
  usage anyways[5] I decided to add it. For >=13 it's not relevant
  anymore anyways[6].

* JIT support doesn't work with cross-compilation. It is attempted to
  build LLVM-bytecode (`%.bc` is the corresponding `make(1)`-rule) for
  each sub-directory in `backend/` for the JIT apparently, but with a
  $(CLANG) that can produce binaries for the build, not the host-platform.

  I managed to get a cross-build with JIT support working with
  `depsBuildBuild = [ llvmPackages.clang ] ++ buildInputs`, but
  considering that the resulting LLVM IR isn't platform-independent this
  doesn't give you much. In fact, I tried to test the result in a VM-test,
  but as soon as JIT was used to optimize a query, postgres would
  coredump with `Illegal instruction`.

A common concern of the original approach - with llvm as build input -
was the massive increase of closure size. With the new approach of using
the LLVM stdenv directly and patching out references to the clang drv in
`$out` the effective closure size changes are:

    $ nix path-info -Sh $(nix-build -A postgresql_14)
    /nix/store/kssxxqycwa3c7kmwmykwxqvspxxa6r1w-postgresql-14.7	306.4M
    $ nix path-info -Sh $(nix-build -A postgresql_14_jit)
    /nix/store/xc7qmgqrn4h5yr4vmdwy56gs4bmja9ym-postgresql-14.7	689.2M

Most of the increase in closure-size stems from the `lib`-output of
LLVM

    $ nix path-info -Sh /nix/store/5r97sbs5j6mw7qnbg8nhnq1gad9973ap-llvm-11.1.0-lib
    /nix/store/5r97sbs5j6mw7qnbg8nhnq1gad9973ap-llvm-11.1.0-lib	349.8M

which is why this shouldn't be enabled by default.

While this is quite much because of LLVM, it's still a massive
improvement over the simple approach of adding llvm/clang as
build-inputs and building with `--with-llvm`:

    $ nix path-info -Sh $(nix-build -E '
	with import ./. {};
	postgresql.overrideAttrs ({ configureFlags ? [], buildInputs ? [], ... }: {
	  configureFlags = configureFlags ++ [ "--with-llvm" ];
	  buildInputs = buildInputs ++ [ llvm clang ];
	})' -j0)
    /nix/store/i3bd2r21c6c3428xb4gavjnplfqxn27p-postgresql-14.7	  1.6G

Co-authored-by: Andreas Rammhold <andreas@rammhold.de>
Co-authored-by: Janne Heß <janne@hess.ooo>
Co-authored-by: Nikolay Amiantov <ab@fmap.me>

[1] https://www.postgresql.org/docs/current/jit-reason.html
[2] https://github.com/NixOS/nixpkgs/pull/124804#issuecomment-864616931
    & https://github.com/NixOS/nixpkgs/pull/150801#issuecomment-1467868321
[3] This fails with the following error otherwise:
    ```
    configure: error: clang not found, but required when compiling --with-llvm, specify with CLANG=
    ```
[4] https://github.com/plv8/plv8/blob/v3.1.5/Makefile#L14
[5] https://github.com/NixOS/nixpkgs/pull/181764
[6] c45643d618
2023-03-29 08:39:46 +02:00
Peter Simons 7942e2e38f
Merge pull request #221108 from mrobbetts/bind_remove_allow_query
bind: remove hard-coded `allow-query` config setting
2023-03-29 07:50:47 +02:00
Garry Filakhtov d86e9911cd
nixos/modules/config/resolvconf.nix: skip systemPackages if disabled
A change made in #166308 added `networking.resolvconf.package` to the
`environment.systemPackages` list, so it is installed as part of the
system image. However it does so unconditionally, meaning that even if
the `config.networking.resolvconf.enable` is set to false the package
listed in the `networking.resolvconf.package` would still be intalled.

This change makes it so the package installation will depend on the
status of the `config.networking.resolvconf.enable` option instead.
2023-03-29 09:31:09 +11:00
Martin Weinelt 0a33e0d071
Merge pull request #223479 from dotlambda/vaultwarden-1.28.0
vaultwarden: 1.27.0 -> 1.28.0
2023-03-28 22:50:12 +02:00
Sandro fd46812f7e
Merge pull request #222667 from chuangzhu/proxychains-package 2023-03-28 22:19:38 +02:00
Daniel Nagy e1a383102f
nixos/x11: set XKB_CONFIG_ROOT from config
The motivation is to make overriding `services.xserver.xkbDir` easier.
2023-03-28 20:00:00 +02:00
Kasper Gałkowski 9a26e2dea9 merge master 2023-03-28 19:43:40 +02:00
Robert Schütz f672b32b2e vaultwarden: 1.27.0 -> 1.28.0
Diff: https://github.com/dani-garcia/vaultwarden/compare/1.27.0..1.28.0

Changelog: https://github.com/dani-garcia/vaultwarden/releases/tag/1.28.0
2023-03-28 10:15:39 -07:00
Atemu 91f5aa3446
Merge pull request #213378 from Atemu/steam-env-vars
steam: add extraEnv argument
2023-03-28 17:25:14 +02:00
Sandro 1625c82884
Merge pull request #221297 from MrFreezeex/bridge-update
protonmail-bridge: 3.0.18 -> 3.0.21
2023-03-28 14:25:49 +02:00
Arthur Outhenin-Chalandre c492acd865
protonmail-bridge: rename back the binary to protonmail-bridge
`bridge` is used by iproute2, so using this name for protonmail-bridge
made it very likely to produce a name "conflict".
Also `bridge` is used in the Makefile by upstream project Makefile but
it apparently is renamed later on when packaged in rpm/deb so even for
coherence purposes it does make sense to revert it back to the name
`protonmail-bridge` that were previously being used.

Signed-off-by: Arthur Outhenin-Chalandre <arthur.outhenin-chalandre@proton.ch>
2023-03-28 13:12:26 +02:00
enc0urage a76bd96e4b nixos/malloc: set vm.max_map_count when using graphene-hardened 2023-03-28 10:18:20 +00:00
r-vdp 982ea4295b
NixOS/opengl: Use the default Mesa package by default.
Fixes #223458
Fixes #223331
2023-03-28 11:06:07 +02:00
Nick Cao ca7c52c4f5
Merge pull request #222762 from Kiskae/nvidia/530.41.03
linuxPackages.nvidia_x11: 525.89.02 -> 530.41.03
2023-03-28 08:23:48 +08:00
Ryan Lahfa 6fcf40805a
Merge pull request #223439 from mjlbach/fix/garage
garage: fix missing stateVersion and default pkg
2023-03-28 00:26:47 +02:00
Michael Lingelbach e6854e7d3a garage: fix missing stateVersion and default pkg
* stateVersion was not in scope, added config.system.systemVersion
* garage_0_8_0 -> garage_0_8, the former does not exist
2023-03-27 13:18:33 -07:00
Ryan Lahfa 16f67c4afc
Merge pull request #223242 from panicgh/nitrokey-libnitrokey
libnitrokey: init at 3.8
2023-03-27 22:07:24 +02:00
Ryan Lahfa 482c735228
Merge pull request #223388 from 06kellyjac/authelia-move
authelia: move module under security and minor fixes
2023-03-27 21:59:57 +02:00
Ryan Lahfa 90b5f42ec9
Merge pull request #222946 from RaitoBezarius/zfs-6_2-6_3-compat
zfsUnstable: make it compatible again with 6.2.8 and potentially 6.3
2023-03-27 21:11:41 +02:00
K900 e74d28259d
Merge pull request #162479 from stuebinm/feature/mattermost-secrets
nixos/mattermost: add secretFile option for declarative configs (again)
2023-03-27 21:50:18 +03:00
stuebinm c29ca6704d mattermost: add environmentFile option to allow declarative secrets
This adds an option `services.mattermost.environmentFile`, intended to be
useful especially when `services.mattermost.mutableConfig` is set to `false`.
Since all mattermost configuration options can also be set by environment
variables, this allows managing secret configuration values in a declarative
manner without placing them in the nix store.
2023-03-27 20:46:01 +02:00
Raito Bezarius 56fa7ab066 nixos/tests/zfs: add zfsUnstable test for systemd-stage 1 2023-03-27 18:18:59 +02:00
Sandro fc7d893822
Merge pull request #222592 from Luflosi/update/kubo
kubo: 0.18.1 -> 0.19.0
2023-03-27 15:24:34 +02:00
Lily Foster 6f07da7277
Merge pull request #220450 from arjan-s/qtile-options
qtile: add more options to NixOS module and expose unwrapped package
2023-03-27 07:23:15 -04:00
06kellyjac 9b60eef4bd authelia: move module under security and minor fixes
Fixed test access to lib
Added nixos test to passthru
2023-03-27 12:00:07 +01:00
Maximilian Bosch 3351d1bdb2
Merge pull request #223294 from SuperSandro2000/synapse.nix
nixos/synapse: fix path
2023-03-27 10:43:25 +02:00
Nicolas Benes 771d39638b nitrokey-udev-rules: replace with libnitrokey 2023-03-27 04:02:13 +02:00
Sandro 8c426b77f5
Merge pull request #222584 from IndeedNotJames/nixos-consul 2023-03-27 01:26:44 +02:00
Sandro Jäckel 40c8cebade
nixos/synapse: Fix incorrect module path after it was moved
Fixes: 22f3d4e4db ("nixos: move matrix services into their category")
2023-03-27 00:49:38 +02:00
Sandro Jäckel 056be64f11 nixos/podman: add example to enable network dns 2023-03-27 08:42:29 +10:00
Sandro 6f558d3009
Merge pull request #212599 from SuperSandro2000/podman-cleanup 2023-03-27 00:05:30 +02:00
Sandro 97d67f4a5f
Merge pull request #221643 from Tungsten842/wireshark-capabilities 2023-03-26 22:31:40 +02:00
Jian Lin b0fd7a3179
nixos/nftables: add release notes for checkRuleset option (#223283) 2023-03-26 19:51:14 +02:00
github-actions[bot] 665b0409ad
Merge master into staging-next 2023-03-26 16:02:07 +00:00
Atemu 1f27e0b77a steam: add extraEnv option 2023-03-26 17:19:33 +02:00
Atemu 4731598712 nixos/steam: always apply extraLibraries and make them additive
Before, setting {option}`programs.steam.package` would result in a steam without
the {option}`hardware.opengl.package`, {option}`hardware.opengl.extraPackages`
etc. You had to manually add them yourself.

Additionally, overlaying `steam = prev.steam.override { extraLibraries = [ ... ]; }`
resulted in those extra libraries not actually being put into the fhsenv because
they'd be fully overridden by the option's default.

Now, the user can supply a custom steam to {option}`programs.steam.package` with
its own list of extraLibraries which will not be overridden and overlays work as
expected too.
2023-03-26 17:19:33 +02:00
Maximilian Bosch 0680f297f1
Merge pull request #223182 from dotlambda/nextcloud-x-robots-tag
nixos/nextcloud: set X-Robots-Tag to "noindex, nofollow"
2023-03-26 15:29:55 +02:00
github-actions[bot] 055dd6c5e5
Merge master into staging-next 2023-03-26 13:21:11 +00:00
K900 52038a5e50
Merge pull request #185528 from alois31/gdk-pixbuf-modules
nixos/gdk-pixbuf: move GDK_PIXBUF_MODULE_FILE to sessionVariables
2023-03-26 15:51:52 +03:00
mdarocha 43f7cc0df7 dotnet-sdk_3: remove
Also remove all reference to outdated .NET versions.
2023-03-26 14:24:49 +02:00
K900 88edefb1b8
Merge pull request #223234 from Atemu/mesa-multi-version
nixos/opengl: fix wrong function application
2023-03-26 15:22:42 +03:00
Atemu 1d19eeefee nixos/opengl: fix wrong function application
No idea how that one slipped through. Thanks for catching @maxeaubrey!
2023-03-26 14:20:32 +02:00
Vladimír Čunát b544cd986c
Merge branch 'master' into staging-next 2023-03-26 11:38:50 +02:00
K900 22609a5d55
Merge pull request #217883 from Atemu/mesa-multi-version
mesa_23: init at 23.0.1
2023-03-26 11:53:44 +03:00
Robert Schütz 15b859cefe nixos/nextcloud: set X-Robots-Tag to "noindex, nofollow"
Upstream did so in https://github.com/nextcloud/server/pull/36689 and
Nextcloud now complains that

    The "X-Robots-Tag" HTTP header is not set to "noindex, nofollow".
    This is a potential security or privacy risk, as it is recommended
    to adjust this setting accordingly.
2023-03-25 19:48:13 -07:00
github-actions[bot] 07fb9cae4e
Merge master into staging-next 2023-03-26 00:02:45 +00:00
Atemu d8f58908ce nixos/opengl: mesa_22 -> mesa_23 2023-03-25 21:08:50 +01:00
Atemu 33a700b406 mesa: provide patch versions
This allows us to bump the mesa attribute (used by many packages, see
https://github.com/NixOS/nixpkgs/issues/218232) independently from the packages
used by NixOS users.
2023-03-25 21:08:50 +01:00
Atemu bf1785d0a9 nixos/opengl: add mesaPackage option 2023-03-25 21:08:50 +01:00
Lin Jian 4482c70530 nixos/kanata: notify systemd when starting up is finished
- set service type to notify
- allow unix socket which is needed by systemd notify
2023-03-25 20:56:48 +01:00
github-actions[bot] 392b3f3dc3
Merge master into staging-next 2023-03-25 18:01:17 +00:00
pennae dce79b3cb1
Merge pull request #221877 from ambroisie/woodpecker-agents
nixos/woodpecker: refactor to multi-agents setup
2023-03-25 16:32:55 +01:00
github-actions[bot] 6a3acb9982
Merge master into staging-next 2023-03-25 06:05:24 +00:00
Nick Cao 851cd65a21
Merge pull request #220776 from Vonfry/deprecated/fcitx4
fcitx: remove version 4
2023-03-25 10:23:06 +08:00
06kellyjac 818e73fc43 nixos/authelia: init tests 2023-03-24 21:23:41 -03:00
06kellyjac 6373a3966b nixos/authelia: init module
Co-authored-by: Martin Weinelt <hexa@darmstadt.ccc.de>
2023-03-24 21:23:41 -03:00
github-actions[bot] cead7e3e73
Merge master into staging-next 2023-03-25 00:02:20 +00:00
Martin Weinelt e56ea3c325
Merge pull request #222701 from jopejoe1/firefox
firefox-{beta,devedition}-unwrapped: init at 112.0b6
2023-03-24 21:34:31 +01:00
Kevin Mehall fef4baca37
nixos/ssh: Update github.com host key in programs.ssh.knownHostsFiles example
The `programs.ssh.knownHostsFiles` option documentation uses github.com's host keys as an example. GitHub recently announced that the ssh-rsa key has been compromised and rotated it.

The new key can be checked against
https://github.blog/2023-03-23-we-updated-our-rsa-ssh-host-key/
https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/githubs-ssh-key-fingerprints
2023-03-24 11:51:46 -07:00
jopejoe1 8a5a08373f firefox-beta-unwrapped: init at 112.0b6 2023-03-24 14:18:26 +01:00
jopejoe1 80168addbe firefox-devedition-unwrapped: init at 112.0b6 2023-03-24 14:16:22 +01:00
github-actions[bot] f2ead7fbda
Merge master into staging-next 2023-03-24 12:01:43 +00:00
Ryan Lahfa a119bfc80d
Merge pull request #211603 from farcaller/fish
Assert that fish configuration is enabled if any user has fish as their shell
2023-03-24 12:05:22 +01:00
Kiskae c3ce711249 nixos/nvidia: re-enable IBT for newer drivers 2023-03-24 11:37:35 +01:00
Vladimír Čunát 12dd95fbb1
Merge branch 'master' into staging-next 2023-03-24 09:07:41 +01:00
Will Fancher 5a9b9e620d
Merge pull request #176828 from therishidesai/luks-multi-key-files
nixos/luksroot: add tryEmptyPassphrase option
2023-03-24 03:02:20 -04:00
Bruno BELANYI 6048912d8b nixos/woodpecker-*: add myself as maintainer 2023-03-23 21:33:21 +00:00
Bruno BELANYI 67de7d105e nixos/woodpecker-agents: per-agent 'enable' option 2023-03-23 21:33:20 +00:00
Matt Melling 177b6a4bc3
cloudlog: remove import-from-derivation in config 2023-03-23 21:21:57 +00:00
Bruno Bigras 022436c47b nixos/logrotate: fix typo 2023-03-23 16:09:47 -04:00
K900 fae7294cf5
Merge pull request #222689 from K900/bye-dpi-2
nixos/hidpi: remove harder
2023-03-23 22:13:06 +03:00
K900 c9a74cf40f nixos/fontconfig: time capsule 2023-03-23 22:03:35 +03:00
Chuang Zhu 46344c77b3 nixos/proxychains: add package option 2023-03-24 02:55:11 +08:00
K900 8454084ffc nixos/hidpi: remove harder
We can't agree on what the right settings are (see #222236), so let's make the users choose.
2023-03-23 21:50:45 +03:00
github-actions[bot] 307b719414
Merge master into staging-next 2023-03-23 18:01:20 +00:00
K900 382c756097
Merge pull request #217205 from linj-fork/fix-zsh-set-env
zsh: set environment variables in zshenv instead of zprofile
2023-03-23 18:57:40 +03:00
Jan Tojnar 598cf2090c
Merge pull request #218990 from SuperSandro2000/dgraph
dgraph: use --prefix to prefix PATH
2023-03-23 16:40:43 +01:00
Ryan Lahfa e774156726
Merge pull request #222269 from SuperSandro2000/gitea-disable-updater
nixos/gitea: disable updater by default
2023-03-23 15:23:49 +01:00
Bruno BELANYI cd116db45e nixos/woodpecker-agents: bind network files
Otherwise the agent might experience trouble with DNS resolution [1].

[1]: https://github.com/woodpecker-ci/plugin-git/issues/65
2023-03-23 14:16:45 +00:00
Bruno BELANYI eb3bea6359 nixos/woodpecker-agents: simplify 'extraGroups' handling 2023-03-23 14:16:45 +00:00
Bruno BELANYI c3afdb82db nixos/woodpecker-agents: use list for environment files 2023-03-23 14:16:44 +00:00
Sandro Jäckel 20842ac039
nixos/gitea: disable updater by default 2023-03-23 14:46:51 +01:00
Sandro 995f9d1c95
Merge pull request #213874 from SuperSandro2000/nginx-zstd
nixos/nginx: add recommendedZstdSettings
2023-03-23 14:11:35 +01:00
Sandro df9856c9b3
Merge pull request #222110 from SuperSandro2000/root-slice
systemd-lib: fix building -.slice (root slice)
2023-03-23 14:10:24 +01:00
Bruno BELANYI e4f5f1b718 nixos/woodpecker: refactor to multi-agents setup
The module file has been renamed from `agent.nix` to `agents.nix` to
mirror the change.
2023-03-23 12:47:47 +00:00
Vladimír Čunát 09c3a593df
Merge branch 'master' into staging-next 2023-03-23 11:13:46 +01:00
Weijia Wang 52ee7a6a92
Merge pull request #203236 from Flakebi/fail2ban
fail2ban: 0.11.2 -> 1.0.2
2023-03-23 10:36:14 +02:00
Jacek Galowicz 09ad6a7235
Merge pull request #222557 from alyssais/nixos-test-driver-screenshot-charset
nixos/test-driver: accept non-\w* filenames
2023-03-23 07:45:01 +01:00
github-actions[bot] 705ac3185e
Merge master into staging-next 2023-03-23 06:01:22 +00:00
Nick Cao 72a8c49415
Merge pull request #222311 from NickCao/qt6-vf
qt6.qtbase: add patch to fix handling of variable fonts
2023-03-23 13:33:22 +08:00
Nick Cao 1285c0a09b
Merge pull request #222205 from NickCao/zram-writeback-device
nixos/zram: add writebackDevice option and corresponding test
2023-03-23 13:14:08 +08:00
github-actions[bot] 6a3714135d
Merge master into staging-next 2023-03-23 00:02:14 +00:00
Maximilian Bosch c042a318a7
Merge pull request #222372 from NixOS/nextcloud26
nextcloud26: init at 26.0.0
2023-03-22 23:35:31 +01:00
Christoph Heiss c9c9abc608 openssh: fix 'undefined variable' error
Signed-off-by: Christoph Heiss <christoph@c8h4.io>
2023-03-22 22:38:14 +01:00
Maximilian Bosch 42c78ccc6b nixos/nextcloud: release notes 2023-03-22 22:37:17 +01:00
Maximilian Bosch cbc539c19f nixos/nextcloud: minor fixups
* Apply review comments.
* Default to PHP 8.2 for v26.
2023-03-22 22:37:17 +01:00
Maximilian Bosch 6a0b0a5de9 nextcloud: remove compat references to v23
This is not needed anymore because the version is EOL for almost a year
now and we don't even have the packages anymore, only the attributes for
compatibility for upgrades from older NixOS versions.
2023-03-22 22:37:17 +01:00
Raito Bezarius dd96b7d8b4 nextcloud26, nixos/web-apps/nextcloud: drop the autocreate db user patch and wire the default in the NixOS module 2023-03-22 22:37:16 +01:00
Raito Bezarius d7a27b38a2 nixos/tests/nextcloud: do not expect failure on NC ≥26 with respect to RC4 bug 2023-03-22 22:37:16 +01:00
Raito Bezarius 5e5c4c975a nixos/web-apps/nextcloud: introduce nextcloud26 2023-03-22 22:37:13 +01:00