Compare commits

...

2 commits

Author SHA1 Message Date
f0381076a4 Merge commit '4a76db24018f6ce64d2097415750bd8555211cdd' into HEAD 2024-11-16 15:43:04 +00:00
4a76db2401 Squashed 'third_party/nixpkgs/' changes from 76612b17c0ce..dc460ec76cbf
dc460ec76cbf Remove obsolete libXrandr inputs from programs using winit (#354847)
f1b26f503aac nitrokey-udev-rules: init at 1.0.0 (#352481)
a4761c00db07 smartcat: 1.7.1 -> 2.1.0 (#354016)
60533322e317 protonvpn-gui: 4.6.0 -> 4.7.3 (#354170)
ab599469897c yosys: 0.46 -> 0.47 (#354226)
736b36d5719f niri: 0.1.9 -> 0.1.10 (#355047)
547ac36fb30e spotify-player: 0.20.0 -> 0.20.1 (#354593)
6c3d0282c839 netbird: 0.30.2 -> 0.31.0 (#354756)
fcfcc8e0f43d proton-ge-bin: GE-Proton9-18 -> GE-Proton9-20 (#354849)
2e3b9c403874 miriway: 24.09 -> 24.10.1 (#353939)
c598a008a26b gfn-electron: init at 2.1.2 (#353887)
fcf7e79c02e9 python312Packages.anthropic: 0.35.0 -> 0.39.0 (#354808)
9e9dc89f01d1 python312Packages.githubkit: 0.11.11 -> 0.11.14 (#354763)
3d7216f0da32 nzportable: init at 2.0.0-indev+20241012190425 (#312424)
1d4a687f62fc python312Packages.scikit-rf: 1.3.0 -> 1.4.1 (#354453)
566bf556282a typos: 1.26.0 -> 1.27.3 (#354980)
9a7641474d1c python312Packages.google-generativeai: 0.8.2 -> 0.8.3 (#354919)
76e387b03039 python312Packages.{localstack-ext,localstack}: fix build and refactor (#354962)
d056782c98a1 python3Packages.globus-sdk: fix test (#354988)
1ce8fcbc506b hyprlandPlugins: update plugins (#355037)
43c84259fd1b python312Packages.tensorflow-probability: 0.24.0 -> 0.25.0 (#355007)
8c79491aea4c obsidian: remove white background from icons (#354945)
b3057fce636d niri: add patch for scrolling without mouse config
97ca8ccb1551 nixos/roundcube: add example for `database.passwordFile` (#348166)
f0b14e4fb4be niri: install dinit service files
172f0cee3628 python312Packages.wordcloud: 1.9.3 -> 1.9.4 (#355027)
cf81310c69b9 prettypst: unstable-2023-12-06 -> unstable-2024-10-20 (#354972)
4d9d042055b6 cvise: 2.10.0 -> 2.11.0 (#354970)
7514add1990f python312Packages.google-ai-generativelanguage: 0.6.10 -> 0.6.12 (#354917)
66eab41e34dd python312Packages.tencentcloud-sdk-python: 3.0.1262 -> 3.0.1263 (#354909)
2ec42a007584 python312Packages.pyswitchbot: add pytest-asyncio (#354911)
fa1b67747b3b  ggshield: 1.32.2 -> 1.33.0  (#354912)
918a840f93bf python312Packages.reolink-aio: 0.10.4 -> 0.11.0b1 (#354910)
f5c93dd4908f python312Packages.google-cloud-bigquery-logging: 1.4.5 -> 1.5.0 (#354918)
9e48e1749f0a python312Packages.soco: 0.30.5 -> 0.30.6 (#354943)
12569c191eb1 completely: 0.5.2 -> 0.6.3, move to by-name (#354974)
2049461e5435 python3Packages.protobuf4: disable tests that fail on 32bit (#354992)
3f42f0b61e6c linux-firmware: 20241017 -> 20241110 (#355130)
4c3539c70b79 linux-firmware: 20241017 -> 20241110
7ff8d0f160be vaultwarden: 1.32.3 -> 1.32.4 (#355129)
7d4246729b44 vaultwarden: 1.32.3 -> 1.32.4
e635cf8d9fb5 netsurf.browser: fix darwin builds (#355038)
8feb5e84c9e9 libskk: fix parse error (#355005)
b71ccf87b23c gnuplot: fix build with `withTeXLive = true` (#352768)
96e1c83061ff pyamlboot.tests: fix the eval (#352825)
87e380382121 nix-unit: 2.24.0 -> 2.24.1 (#355104)
f257cb5e5ee1 kubectl-graph: init at 0.7.0, add maintainer rksm (#348297)
b3dc0d06fdad buck2: Add shell completions (#354758)
9d2100929da8 rapidfuzz-cpp: 3.0.5 -> 3.1.1 (#351052)
3f334c14975e scopehal-apps: darwin support (#354815)
f03a58a929b4 roboto-flex: init at 3.200 (#353851)
5c1e2db52711 libnvme: 1.10 -> 1.11 (#352703)
f94a3e0cd12e nix-unit: 2.24.0 -> 2.24.1
628110078b5c libdatachannel: 0.21.2 -> 0.22.2 (#350821)
db0b0737bfdc obs-studio-plugins.obs-hyperion: patch stateChanged deprecation (#349326)
b3c4badad7e2 roboto-flex: init at 3.200
5812399690b8 gcsfuse: 2.4.0 -> 2.5.1 (#351360)
771d3917283d azure-storage-azcopy: 10.26.0 -> 10.27.0 (#352775)
a8489059c4eb signal-desktop: remove stdenv.cc.cc from runtimeDeps (#354924)
f475d7505046 python3Packages.pywebview: build fix for tests (#353833)
5b27ef3c5495 pantheon.elementary-onboarding: 8.0.1 -> 8.0.2 (#354896)
a0c28de3e7d7 phonemizer: fix build (#354946)
802cb21f2a2a python3Packages.us: switch to pyproject (#354950)
99ad7da9e313 nixosTests.frr: fix node.router.config warning (#354710)
a44589e11da3 python312Packages.phonopy: 2.28.0 -> 2.29.1, fix build (#354523)
cb9613de4c67 python312Packages.tskit: relax numpy build-time constraint, unbreak (#354512)
bc1a933e128d evcc: 0.131.4 -> 0.131.5 (#355083)
20ee59317101 nixos/frigate: Set SyslogIdentifier for better log entries (#355088)
503b5b4c8cba rime-zhwiki: init at 20240909 (#354931)
dac96aac49af nixos/frigate: Set SyslogIdentifier for better log entries
871087c18d34 nixos/acme: do not limit credentials functionality to DNS/S3 config (#348344)
8c164faef4d4 nixos/nextcloud-notify_push: fix defaultText rendering (#352479)
8209b0d9b9b0 netclient: 0.25.0 -> 0.26.0 (#354525)
96115f656695 python312Packages.pytest-flake8: 1.2.2 -> 1.3.0 (#354743)
6b5935539883 texlivePackages.xetex: force XeTeX to use fontconfig on Darwin (#354963)
32e064f48c2b evcc: 0.131.4 -> 0.131.5
1593115346ba piano-rs: init at 0.2.0 (#336405)
a67e90c4928a wibo: 0.4.2 -> 0.6.14 (#291723)
5b74eb9b909e scopehal-apps: darwin support
71734a22978f pypy3Packages.home-assistant-chip-clusters: fix the eval (#355051)
ab58dcfaf4c5 maintainers/README: add guidelines for committers (#351744)
95855a90f9d0 aquamarine: 0.4.3 -> 0.4.4 (#355030)
34ed0c9cc1bb scarab: Apply scaling factor in Wayland (#348427)
ae725bafb39b python312Packages.debugpy: 1.8.7 -> 1.8.8 (#354925)
eba346ebfead teamspeak3: modernise (#354161)
673033d742b2 yubioath-flutter: 7.1.0 -> 7.1.1 (#352448)
8f0c9853d549 pypy3Packages.home-assistant-chip-clusters: fix the eval
e80622178221 niri: 0.1.9 -> 0.1.10
8aed22ecd71e quarto: 1.6.30 -> 1.6.33 and apply patch (#354672)
0198cfb7673a hyprlandPlugins.hyprsplit: 0.44.1 -> 0.45.0
f3f9fcf93c8d hyprlandPlugins.hyprspace: 0-unstable-2024-09-16 -> 0-unstable-2024-11-02
cbc60c36101f hyprlandPlugins.hyprscroller: 0-unstable-2024-10-10 -> 0-unstable-2024-11-09
d9e2143b3e56 hyprlandPlugins.hyprgrass: 0.8.2 -> 0.8.2-unstable-2024-10-30
9739ac3afe95 hyprlandPlugins.hyprfocus: 0-unstable-2024-05-30 -> 0-unstable-2024-10-09
7804dcce6c5b hyprlandPlugins.hypr-dynamic-cursors: 0-unstable-2024-10-10 -> 0-unstable-2024-11-10
7c6c04825999 hyprlandPlugins/hyprland-plugins: 0.44.0 -> 0.45.0
e2b798c525ac hyprlandPlugins.hy3: 0.44.0 -> 0.45.0
e575fc8ffa4b hyprland: 44.1 -> 45.0 (#354900)
62d3c4fb592b netsurf.browser: fix darwin builds
0ef26b5dd615 Merge: Linux Hardened Kernel Updates for 2024-11-10 (#355023)
a6f2dfc2572d pylyzer: 0.0.69 -> 0.0.70 (#354954)
91333a0e6dcd team-list: establish java team (#352938)
6b0d4d7f4e8e aquamarine: 0.4.3 -> 0.4.4
3024a6807634 python3Packages.subliminal: mark as not broken (#353672)
fa1ebbeeff0a python312Packages.wordcloud: 1.9.3 -> 1.9.4
4fee2cde561f brave: 1.71.121 -> 1.71.123; refactor and nixfmt-rfc-style (#354114)
44bbe5ddad08 nixos/{boinc,guix}: Use exec to start the payload binary of the service (#297526)
9bd781e73301 linux/hardened/patches/6.6: v6.6.59-hardened1 -> v6.6.60-hardened1
3b3ea3ac4b03 linux/hardened/patches/6.11: v6.11.6-hardened1 -> v6.11.7-hardened1
d9b6a745b265 linux/hardened/patches/6.1: v6.1.115-hardened1 -> v6.1.116-hardened1
c367b19a22b7 linux/hardened/patches/5.4: v5.4.284-hardened1 -> v5.4.285-hardened1
fc9089929ad5 linux/hardened/patches/5.15: v5.15.170-hardened1 -> v5.15.171-hardened1
edb9a963e6ea linux/hardened/patches/5.10: v5.10.228-hardened1 -> v5.10.229-hardened1
8db0ec767e6d home-assistant-custom-components.better_thermostat: 1.6.0 -> 1.6.1 (#355021)
2544da75c5bf home-assistant-custom-lovelace-modules.dirigera_platform: init at 2.6.4 (#350542)
799b1af3b445 cfn-nag: fix gemfile so that binaries are generated (#353735)
8339db676638 home-assistant-custom-components.better_thermostat: 1.6.0 -> 1.6.1
9e1f7a1fc712 libvirt: 10.5.0 -> 10.9.0 (#353684)
6977c6b6c48e piano-rs: init at 0.2.0
e4c62c1fc494 pylyzer: 0.0.69 -> 0.0.70
fd214590b6ac rime-zhwiki: init at 20240909
f5f87e7240f5 dashy-ui: init at 3.1.1-unstable-2024-07-14 (#349149)
08e65e669ae3 python312Packages.tensorflow-probability: 0.24.0 -> 0.25.0
608a4a6e7042 libsForQt5.accounts-qml-module,lomiri.*: Enable qdoc docs (#352601)
f4a76ebd1330 waylock: 1.2.1 -> 1.3.0 (#354685)
6eafb43ca667 python312Packages.androidtv: 0.0.74 -> 0.0.75 (#354948)
926dbc8e1c6a jasp-desktop: add patch to fix crash when using qt 6.8 (#352505)
60190159408f gfn-electron: init at 2.1.2
9a333460f50c Merge: postgresql: improve passthru.tests (#352966)
0598c612417e python312Packages.bsdiff4: 1.2.4 -> 1.2.5 (#352452)
d40ed47baac0 python312Packages.pyftgl: fix build on darwin; fix source; refactor and modenize (#354973)
d77a2129f3e2 zed-editor: make node-based built-in LSPs work on NixOS (#354063)
4e73fc3d5304 release: block on `aarch64` on `*-darwin` channels (#262038)
37c3c1a32edf python312Packages.morecantile: 5.4.2 -> 6.0.0 (#349069)
43544b405735 containerlab: 0.58.0 -> 0.59.0 (#353113)
3e9874330416 regripper: update-2023-07-23 -> 0-unstable-2024-11-02 (#353377)
88b78b3d1881 gtree: 1.10.11 -> 1.10.12 (#354521)
83d30478782d python312Packages.kornia: 0.7.3 -> 0.7.4 (#354350)
93472981d1ff nest-cli: 10.4.5 -> 10.4.7 (#354452)
886b26bad3d5 vassal: 3.7.14 -> 3.7.15 (#354462)
b1d782c6fbb9 kube-state-metrics: 2.13.0 -> 2.14.0 (#354503)
3e3d0f2c68cf openlibm: 0.8.3 -> 0.8.4 (#354964)
38ed0b172a2e compose2nix: 0.2.3 -> 0.3.1 (#354858)
c8af02ff2edb kine: 0.13.2 -> 0.13.3 (#354916)
3a92760aa3f9 stardust-xr-kiara: 0-unstable-2024-07-07 -> 0-unstable-2024-07-13 (#354775)
b6077e3f6067 python312Packages.dinghy: 1.3.2 -> 1.3.3 (#354801)
84db55f55e00 erg: 0.6.45 -> 0.6.47 (#354818)
d932f3609c38 python312Packages.xml2rfc: 3.23.2 -> 3.24.0 (#354827)
cb0631fce111 dotenvx: 1.14.2 -> 1.22.0 (#354838)
1c7bb9a36ff7 jan: 0.5.6 -> 0.5.7 (#354845)
9dcf68f72882 pik: 0.9.0 -> 0.10.0 (#354901)
85a894514e94 dbmate: 2.21.0 -> 2.22.0 (#354985)
77c379fc15b1 maintainers/README: add guidelines for committers
aebe24954483 ox: 0.6.7 -> 0.6.10 (#354280)
2b05865a6fa6 glfw3: added vulkan support (#354761)
72d2fc0fe01c python312Packages.polars: 1.7.1 -> 1.12.0 (#354656)
57fa23936966 python3Packages.globus-sdk: fix test
4b239e8fff18 python3Packages.globus-sdk: add bot-wxt1221 as maintainers
2b76729d1341 python312Packages.aiogram: 3.13.1 → 3.14.0 (#354881)
3bfe9c23d14e clickhouse-backup: 2.6.2 -> 2.6.3 (#354882)
67e295df4455 python312Packages.chess: 1.11.0 -> 1.11.1 (#354892)
123c88831bff komga: 1.14.0 -> 1.14.1 (#354826)
57fb3a800a9a xml2rfc: 3.23.2 -> 3.24.0 (#354829)
c9ba25afb896 go-mockery: 2.46.0 -> 2.46.3 (#354844)
9d40f67872f2 octoprint: 1.10.2 -> 1.10.3 (#354848)
1d2941554a10 dbmate: 2.21.0 -> 2.22.0
45f61aa9a947 python312Packages.stravalib: 2.0 → 2.1 (#354851)
e01ca8d232a0 wit-bindgen: 0.33.0 -> 0.34.0 (#354853)
090349a58995 nwg-drawer: 0.5.0 -> 0.5.2 (#354856)
a7fcea08bca8 miriway: 24.09 -> 24.10.1
8025d6d17bcd typos: 1.26.0 -> 1.27.3
da9757048d7d buck2: Use stdenvNoCC
982ff0b08e25 buck2: Install completions for bash and zsh
8213a8a557f8 surreal-engine: init at 0-unstable-2024-11-08 (#337069)
6d4ddefd7161 positron-bin: fix darwin not unpacking the dmg (#354846)
494908f0fe86 python312Packages.localstack: fix build and refactor
54394a0c0b71 python312Packages.localstack-ext: fix build and refactor
5b916fd89714 nixos/openvpn3: add `/etc/openvpn3/configs` to `systemd.tmpfiles` (#353832)
822590d06248 python3Packages.protobuf4: disable tests that fail on 32bit
e9c53bdf9a56 nixos/localsend: add package option & allow udp port (#333485)
da404cffefb6 vgmtrans: init at 1.2, libbassmidi: init at 2.4.15.3 (#321129)
551bd11c42de python312Packages.pyftgl: refactor and modenize
beceecb51336 python312Packages.pyftgl: fix source
8618fe6f96b9 python312Packages.pyftgl: fix build on darwin
9828bad63a49 completely: 0.5.2 -> 0.6.3
8f8f60bee8e5 cvise: 2.10.0 -> 2.11.0
66c47da4338c prettypst: unstable-2023-12-06 -> unstable-2024-10-20
88b620a72b65 completely: move to by-name
00cd61f517aa cartridges: 2.9.3 -> 2.10.1 (#354306)
6cd1dd3dc5e6 vscode-extensions.esbenp.prettier-vscode: 10.4.0 -> 11.0.0 (#335742)
f7911fc460e9 vscode-extensions.continue.continue: 0.8.44 -> 0.8.54 (#342514)
f69f13279107 vscode-extensions.sainnhe.gruvbox-material: init at 6.5.2 (#350464)
e065e550b153 python3Packages.us: add bot-wxt1221 as maintainers
ef21cc74e2f1 python3Packages.us: switch to pyproject
925510d32cab vscode-extensions.streetsidesoftware.code-spell-checker: 4.0.14 -> 4.0.15 (#353989)
dbb60b6319f3 vscode-extensions.shd101wyy.markdown-preview-enhanced: 0.8.14 -> 0.8.15 (#354447)
f696e0dc331c crates-tui: init at 0.1.20 (#354307)
46bbcb7efef5 vgmtrans: init at 1.2
07ca74e13487 teamviewer: add services.teamviewer.package Option + misc improvemens (#346365)
fc94ad90fb0e phonemizer: add bot-wxt1221 as maintainers
42be8c49fb89 phonemizer: fix build
1531e7712628 typos-lsp: 0.1.27 -> 0.1.30 (#354872)
e19b3c8cd386 python312Packages.netifaces2: init at 0.0.22 (#354736)
fc1d56201e17 openlibm: 0.8.3 -> 0.8.4
b306e97ffe30 Libreoffice updates (#354456)
62fa59a63947 doc: revise Darwin SDK documentation (#353439)
29ba5b9a2985 xcodes: 1.5.0 -> 1.6.0, move to `by name`, `with lib;` cleanup, RFC format (#354932)
eee079f7e129 xcodes: nix-rfc-format
b45f61402b8a xcodes: with lib; cleanup
7531c8e01dc8 xcodes: 1.5.0 -> 1.6.0
3912015f1d0d python312Packages.androidtv: 0.0.74 -> 0.0.75
d420f2c9502f maintainers: add llakala (#354625)
757189b3e6b0 vscode-extensions.ms-windows-ai-studio.windows-ai-studio: init at 0.6.1 (#354817)
214d9423dca6 python312Packages.langgraph: Use correct test directory (#354345)
647624dca6a1 wine-discord-ipc-bridge: unstable-2023-08-09 -> 0.0.3 (#353900)
4c78072d2f27 python312Packages.guidata: 3.6.3 -> 3.7.1 (#354168)
3efeb317473e git-warp-time: init at 0.8.4 (#354046)
35305f29a7e3 xar: fix Linux build on staging-next (#352507)
01ddc69668f5 obsidian: remove white background from icons
903f42960df7 fishPlugins.*: fix versions (#354729)
b0b3a70891e6 buildFHSEnv: use LOCALE_ARCHIVE from environment if present (#354899)
c188d417cf07 python312Packages.soco: 0.30.5 -> 0.30.6
d3cba66b117d python312Packages.millheater: 0.11.8 -> 0.12.0 (#354797)
4af121e6ac0f ov: 0.36.0 -> 0.37.0 (#354807)
96e67743abd9 ox: switch to the new darwin sdk pattern
992c80c02e1f ox: 0.6.7 -> 0.6.10
757df4a1b42e xcodes: move to by-name
ae21c33fafab python312Packages.debugpy: 1.8.7 -> 1.8.8
1bd58487d015 python312Packages.scikit-rf: 1.3.0 -> 1.4.1
343b0a222530 adolc: modernize; fix clang build (#354642)
27235e1e6da6 python312Packages.google-generativeai: 0.8.2 -> 0.8.3
1e6362fe068f python312Packages.google-ai-generativelanguage: 0.6.10 -> 0.6.12
9d3096074f3e vale: 3.8.0 -> 3.9.0 (#354444)
9e960c976873 python312Packages.google-cloud-bigquery-logging: 1.4.5 -> 1.5.0
16107665062c dolphin-emu-primehack: 1.0.6a -> 1.0.7a, qt5 -> qt6, unpin fmt (#350053)
b3765ba04029 d2: 0.6.7 -> 0.6.8 (#354459)
012a679db0f8 python312Packages.stripe: 11.1.0 -> 11.2.0 (#354852)
6ffb12c9f9c3 kine: 0.13.2 -> 0.13.3
27a103786c88 doc/hooks/aws-c-common: init (#351394)
660022ee302b newlib: enable parallel build (#354520)
acf406372cf8 linux_xanmod, linux_xanmod_latest: 2024-11-08 (#354617)
ab244d13144a python312Packages.aiogram: update disabled
bb00b359cce7 ggshield: 1.32.2 -> 1.33.0
b39ea623743c python312Packages.tencentcloud-sdk-python: 3.0.1262 -> 3.0.1263
4c4420b29b66 python312Packages.pyswitchbot: add pytest-asyncio
b1d0a1aafff5 python312Packages.reolink-aio: 0.10.4 -> 0.11.0b1
465eab85d222  python312Packages.playwrightcapture: 1.26.3 -> 1.27.0, python312Packages.lacuscore: 1.11.3 -> 1.12.0 (#353963)
85c8b5ba7879 esphome: 2024.10.2 -> 2024.10.3 (#354880)
c00d32f28515 beszel: init at 0.6.2 (#345444)
652fd5119056 pik: 0.9.0 -> 0.10.0
a59e625bb474 buildFHSEnv: use LOCALE_ARCHIVE from environment if present
f8a4abdc2ed1 python312Packages.pytest-flake8: 1.2.2 -> 1.3.0
e20360e289da leo-editor: 6.8.1 -> 6.8.2 (#354519)
eacbe35bf009 python312Packages.babelfont: 3.0.5 -> 3.0.6 (#354574)
72a790c6fc77 prusa-slicer, super-slicer, mediathekview: remove Moredread as mainta… (#354794)
de131566b6e4 gh-dash: 4.7.0 -> 4.7.1 (#354813)
12fe26865622 python312Packages.magic-wormhole-transit-relay: 0.3.1 -> 0.4.0 (#354726)
176eb0a3d99e doc/hooks/aws-c-common: init
8df19efae58d kubelogin-oidc: 1.30.1 -> 1.31.0 (#353577)
f0000fe56d08 lib/minver: bump to 2.3.17 (#354586)
09efcc6e4be9 libvirt-glib: relax max stack size limit
f91d2228a0b7 pantheon.elementary-onboarding: 8.0.1 -> 8.0.2
74d1b07edbf2 htcondor: 23.10.1 -> 24.1.1 (#353342)
28f456e3131c GNOME updates 2024-11-05 (#353824)
59ed3fa2c48d scarab: Apply scaling factor in Wayland
0a0d12f6626d gtree: 1.10.11 -> 1.10.12
1a4eb8b7a96e libnvme: 1.10 -> 1.11
35110b71bd78 azure-storage-azcopy: 10.26.0 -> 10.27.0
464b1e80245f maintainers: add llakala
d1444b4947b4 python312Packages.chess: 1.11.0 -> 1.11.1
08c2eb8e894e nest-cli: 10.4.5 -> 10.4.7
061f86ca2988 vassal: 3.7.14 -> 3.7.15
ca3eca77cd85 gcsfuse: mark as broken on darwin
64b28c617d26 gcsfuse: 2.4.0 -> 2.5.1
2ff82ba8deea libdatachannel: 0.21.2 -> 0.22.2
8ff9d62e81f6 yubioath-flutter: 7.1.0 -> 7.1.1
b49da1f76456 scarab: Remove unused inputs
df10ec72acee mysql-shell: add libutil on darwin; refactor to new SDK pattern (#354735)
b9c73c537391 python311Packages.tsfresh: fix build on darwin (#354667)
ae7f0eebdb3b python311Packages.qutip: relax numpy build-time constraint, unbreak (#354592)
6e82927b9473 python312Packages.phonopy: 2.28.0 -> 2.29.1, fix build
dde8f5051682 bsc: remove axv2 when building on non x86 system (#354473)
55242bf389de hyprland: 44.1 -> 45.0
97a1ad0df003 tulip: fix build (#354236)
b322800344d5 python312Packages.rapidfuzz: 3.10.0 -> 3.10.1
ff18a1b2578d rapidfuzz-cpp: 3.0.5 -> 3.1.1
0dc5bb1584a5 mesonlsp: 4.3.5 -> 4.3.7 (#345407)
7135b364b6e3 brave: 1.71.121 -> 1.71.123
301751f1c1bb brave: format with nixfmt-rfc-style
d037904ba3ed brave: refactor package.nix to allow more architectures
e3d50903923e hickory-dns: 0.25.0-alpha.2 -> 0.25.0-alpha.3 (#354793)
b83eab78d7ec libvirt: increase timeout on darwin
b5aaa1df2248 python312Packages.redis-om: 0.3.2 -> 0.3.3 (#354393)
a96052fe5ffb virt-manager: disable testCLI0263virt_xml
df6ffb01522b perlPackages.SysVirt: 10.2.0 -> 10.9.0
e6f77dadc335 python312Packages.libvirt: 10.5.0 -> 10.9.0
69119368fdc5 libvirt: 10.5.0 -> 10.9.0
ed887863a6d6 clickhouse-backup: 2.6.2 -> 2.6.3
06486aa31e8c python312Packages.aiogram: 3.13.1 → 3.14.0
7f76ced7336f nixos/dashy: init module
60bc80aa5cd7 dashy-ui: 3.1.1-unstable-2024-07-14
ec1f3c7390de wttrbar: 0.10.6 -> 0.11.0 (#354778)
372f9fa1b449 esphome: 2024.10.2 -> 2024.10.3
1546e0871c1d nomad_1_9: 1.9.0 -> 1.9.2 (#354300)
3cebba8819f4 spotify-player: 0.20.0 -> 0.20.1
3a83ddd0062b vimPlugins.neoconf-nvim: add dependencies (#354673)
e6ffd9960ec9 python3Packages.{mirakuru,pgsanity}: fix builds (#354774)
8bee32d8bfa3 maintainers: add caperren
06be8564e527 immich: 1.119.1 -> 1.120.1 (#354083)
6648da3db4c4 darwin.openwith: remove apple_sdk.frameworks (#354766)
bbdf7817f839 wibo: 0.4.2 -> 0.6.14
a329ca6aea6e immich: unvendor exiftool
ee1cffa25c45 immich: 1.119.1 -> 1.120.1
d6899545c5bf typos-lsp: 0.1.27 -> 0.1.30
73e03e065ec8 luaPackages.toml-edit: 0.6.0 -> 0.6.1
2b3acacf0856 pyton312Packages.arelle: 18.3 -> 2.30.25, unbreak, refactor (#337284)
d55bf75cb9fe python312Packages.uuid6: fix package version metadata (#354857)
5e5ec22c6f3d skia: unbreak darwin (#354557)
c00cc16b63b0 home-assistant-custom-components.moonraker: 1.3.7 -> 1.4.0 (#354863)
93a01b05975a teamspeak3: drop 'arch' variable
2ad379b1c350 panoply: 5.5.4 -> 5.5.5 (#354771)
10a4498042d9 home-assistant-custom-components.moonraker: 1.3.7 -> 1.4.0
c48cd19fe52a python312Packages.uuid6: fix package version metadata
25628a6ed53a python3Packages.{consonance,yowsup}: fix build; refactor (#354690)
3bb8fc0f8844 compose2nix: 0.2.3 -> 0.3.1
e4ea814f0c8e teamspeak3: avoid `with lib;`
585c5ae3bcfa teamspeak3: remove NIX_REDIRECTS
4d98fc18e856 teamspeak3: rename from teamspeak_client
05eff5c687c1 python3Packages.torch: switch to apple-sdk_13 (#351778)
e5017770eb89 teamspeak_client: run installer script without -x by default
2568cfa34889 teamspeak_client: install to opt/ subdirectory
3830a3dbf641 teamspeak_client: modernise installPhase
49a5c6431cb9 teamspeak_client: remove unnecessary dependencies
9db530c94c90 teamspeak_client: use autoPatchelfHook rather than manual patchelf
cba4002e45b3 teamspeak_client: refactor libquazip patching
1a5940c3e8b3 teamspeak_client: use wrapQtAppsHook
56a739f756c9 teamspeak_client: make libredirect a regular runtimeDep
0f029a19c62b teamspeak_client: run phase hooks
cdd40cb89c34 teamspeak_client: refactor QT deps
c056c7dd7a11 teamspeak_client: use regular libcxx
f3840380fd31 teamspeak_client: don't wrap with cc's libdir
168a80a4eaea nwg-drawer: 0.5.0 -> 0.5.2
e3893e5c3c76 python312Packages.python-axolotl-curve25519: fix build (#354706)
031786067bea slint-lsp: remove obsolete libXrandr input
e70954dca60d alacritty: remove obsolete libXrandr input
3690e2cfea0d python312Packages.mypy-boto3-*: updates (#354714)
414bf9701593 python312Packages.chromadb: 0.5.17 -> 0.5.18 (#354715)
ce51df0a5ba5 python312Packages.gehomesdk: 0.5.28 -> 0.5.29 (#354716)
cec3c09abdec cnspec: 11.28.1 -> 11.29.0 (#354722)
8bfbd4e1f8d3 python312Packages.cyclopts: 2.9.9 -> 3.0.0 (#354719)
b003bd16857f wit-bindgen: 0.33.0 -> 0.34.0
32cd6d84d744 python312Packages.msgraph-sdk: 1.11.0 -> 1.12.0 (#354816)
63a139ae1c3c python312Packages.millheater: refactor
bcbe1d7185f3 python311Packages.angr: 9.2.126 -> 9.2.127 (#354742)
92e125410c20 python312Packages.stripe: 11.1.0 -> 11.2.0
acc043c769ce python312Packages.stravalib: 2.0 → 2.1
43fa5ea2c9aa sketchybar-app-font: 2.0.25 -> 2.0.27 (#354779)
8540b13b1d20 josm: 19230 → 19253 (#354506)
f8486a3f1d9c vscode-extensions.sourcery.sourcery: 1.23.0 -> 1.24.0 (#354612)
d87258ad94bd python311Packages.pymc: fix hash (#354840)
13c119bf1a64 .github: Add a "Module requests" issue template (#342713)
2212fad7704e laravel: 5.8.3 -> 5.9.2 (#354696)
ebc1473d52f3 octoprint: 1.10.2 -> 1.10.3
d429e8592fb8 python312Packages.wtforms: 3.1.2 -> 3.2.1 (#350180)
da39eb7dd037 treewide: use dontCargo{Build,Check,Install} (#354024)
0120ed5ea9f1 ruffle: remove obsolete libXrandr input
77c0b0b54457 halloy: remove obsolete libXrandr input
68d10c6cc3bb cosmic-term: remove obsolete libXrandr input
86d824132693 cosmic-edit: remove obsolete libXrandr input
f641f65b03b4 chiptrack: init at 0.3.1 (#320790)
d91e9dd0faa5 cosmic-comp: remove obsolete libXrandr input
a0bc021caebf coppwr: remove obsolete libXrandr input
2dcf8afc6007 aider-chat: add playwright version (#354796)
499926182ad1 positron-bin: fix darwin not unpacking the .dmg
3d3185b49655 proton-ge-bin: GE-Proton9-18 -> GE-Proton9-20
52c3ce5d48fe qownnotes: 24.9.8 -> 24.11.1 (#354770)
7cb44f20f6b3 zed-editor: make node-based built-in LSPs work on NixOS
658a8762ea0d jan: 0.5.6 -> 0.5.7
b2f43234a2c3 adolc: fix clang build
5186ad13f487 adolc: modernize
c880f1f46bfe adolc: format
f3cced0b682e python312Packages.pyosmium: 4.0.1 -> 4.0.2 (#354831)
a806a3b2e597 python311Packages.pymc: fix hash
9a695a958884 go-mockery: 2.46.0 -> 2.46.3
1cd03b9a6446 dotenvx: 1.14.2 -> 1.22.0
50cff47c417c bootterm: init at 0.5 (#352951)
0927ff824cde python3Packages.rioxarray: 0.17.0 -> 0.18.1 (#354630)
e42a71a5de98 krabby: 0.2.0 -> 0.2.1 (#354812)
df1e170e33c5 python312Packages.pyosmium: 4.0.1 -> 4.0.2
92c3f8cf92c0 wasmer: 5.0.0 -> 5.0.1 (#354116)
8ac37da4f6ed xml2rfc: 3.23.2 -> 3.24.0
7ecad5abbd99 maintainers: add therealgramdalf
fe17e8dfaa6b python312Packages.xml2rfc: 3.23.2 -> 3.24.0
b323e1c5c4e2 komga: 1.14.0 -> 1.14.1
c04d7170e047 team-list: establish java team
8b2a02dc9de8 vscode-extensions.ms-windows-ai-studio.windows-ai-studio: init at 0.6.1
146c62ba33a4 vscode-extensions.ms-vscode-remote.vscode-remote-extensionpack: init at 0.26.0
5c44f6f77c96 nanoflann: 1.6.1 -> 1.6.2 (#354423)
21069db14d33 python312Packages.weblate-language-data: 2024.8 -> 2024.13
b71a8b49f59b live-server: 0.8.0 -> 0.9.0 (#354395)
f5e91559fddc python312Packages.cmsdials: 1.3.0 -> 1.4.0 (#354397)
286db1ef230d wasmtime: 26.0.0 -> 26.0.1 (#354412)
939318029769 erg: 0.6.45 -> 0.6.47
45cef36e39b2 nixosTests.postgresql: run nixfmt
128244b59818 nixosTests.postgresql: use a common pattern throughout all tests
9035573855d9 nixosTests.postgresql: move all postgresql related nixosTests into one folder
db2d6a00abe5 postgresqlPackages.anonymizer: make passthru.tests work with correct package
23c19a255fab postgresqlPackages.timescaledb: make passthru.tests work with correct package
6d7da20a9044 postgresqlPackages.tsja: make passthru.tests work with correct package
a5c41ae80a2f postgresqlPackages.pgvecto-rs: make passthru.tests work with correct package
0af934adf740 postgresqlPackages.pgjwt: make passthru.tests work with correct package
ecffab1fdaf8 postgresqlPackages.postgis: move nixosTests.postgis into package
aded718a9824 postgresqlPackages.apache_datasketches: move nixosTests.apache_datasketches into package
139c5466764b postgresql: add passthru.tests.postgresql-tls-client-cert
f6c2de926290 postgresql: add passthru.tests.postgresql
319d82d5c218 nixosTests.postgresql-wal2json: avoid manual imports
65ef7381c8d7 nixosTests.postgresql-jit: avoid manual imports
a1ae4377e090 nixosTests.postgresql-wal-receiver: avoid manual imports
75d51c588914 postgresqlVersions: init
d3feaaebea18 nixosTests.pgjwt: fix test
e2636cf342ea python312Packages.msgraph-sdk: 1.11.0 -> 1.12.0
3bf6a063b3c7 Merge: postgresqlPackages: fix some builds on darwin (#354748)
059fc0f2dea1 gh-dash: 4.7.0 -> 4.7.1
8f55df5aa879 krabby: 0.2.0 -> 0.2.1
f11b5ff8a21a Merge: pg-dump-anon: use latest postgresql available (#354526)
0a7544a42300 python312Packages.anthropic: 0.35.0 -> 0.39.0
b01d3ee0239c python312Packages.polars: 1.9.0 -> 1.12.0
8f3dad550fd1 python312Packages.lacuscore: 1.11.3 -> 1.12.1
446aa3f0b262 python312Packages.playwrightcapture: 1.26.3 -> 1.27.0
635e9d2ebb5b sile: switch to the zstd based source
172cb3ef53e1 openpgp-card-tools: Add shell completions and man pages (#354287)
91e4660ed8fc git-warp-time: init at 0.8.4
d60f27f889da ov: 0.36.0 -> 0.37.0
b35c45a2c174 python312Packages.imap-tools: 1.7.3 -> 1.7.4 (#354754)
31aa6f6edf2b python312Packages.nice-go: 0.3.9 -> 0.3.10 (#354750)
bba140c5a34b python312Packages.free-proxy: 1.1.2 -> 1.1.3 (#354539)
c61adda6befd python312Packages.dinghy: 1.3.2 -> 1.3.3
6430e02e54ef cotp: 1.9.1 -> 1.9.2 (#354558)
9139ad63f22f granted: 0.36.0 -> 0.36.1 (#354572)
275614510a2c python312Packages.ucsmsdk: 0.9.20 -> 0.9.21 (#354596)
cff5cbc5a1d9 python312Packages.aiortm: 0.9.24 -> 0.9.25 (#354607)
043d2cb44863 python312Packages.whenever: 0.6.10 -> 0.6.12 (#354613)
646347d50787 pulumi-bin: 3.137.0 -> 3.138.0 (#354618)
807e43e55923 msi-ec: 0-unstable-2024-09-19 -> 0-unstable-2024-11-04 (#353627)
02e3707a2cae python312Packages.jedi-language-server: 0.41.4 -> 0.42.0 (#354713)
d8a18ae783d8 python312Packages.mitogen: 0.3.16 -> 0.3.18 (#354717)
b276bfa32bff python312Packages.multiscale-spatial-image: 2.0.0 -> 2.0.1 (#354720)
df67f3f7b25a helix-gpt: 0.31.0 -> 0.34.0 (#354767)
7307a896451d home-assistant-custom-lovelace-modules.mushroom: 4.0.8 -> 4.1.0 (#354787)
9559e9044e8a python312Packages.qbittorrent-api: 2024.9.67 -> 2024.10.68 (#354681)
45d7d8c8b3cd python312Packages.millheater: 0.11.8 -> 0.12.0
3061dbd29c06 ab-av1: 0.7.18 -> 0.7.19 (#354684)
3be1322ad99d python312Packages.objprint: 0.2.3 -> 0.3.0 (#354693)
a8e970898daa ccls: 0.20240505 -> 0.20241108 (#354698)
d5df6af63621 python312Packages.tencentcloud-sdk-python: 3.0.1261 -> 3.0.1262 (#354699)
2bac553f5a50 okteto: 3.0.0 -> 3.1.0 (#354702)
d7a60669490e ocamlPackages.http-mirage-client: 0.0.7 -> 0.0.8 (#354650)
011f48fb221a fluent-bit: 3.1.9 -> 3.1.10 (#354664)
f8ba284376ec python312Packages.guidata: 3.7.0 -> 3.7.1
d9353697ca64 tile38: 1.33.3 -> 1.33.4 (#354674)
4f101cae7065 aider-chat: add playwright version
7953deea2419 keybase-gui: 6.2.4 -> 6.4.0 (#336886)
20e8995972d4 thunderbird: 128.4.0esr -> 128.4.2esr (#354213)
312ce1b65c40 hickory-dns: 0.25.0-alpha.2 -> 0.25.0-alpha.3
b89f8a710d16 prusa-slicer, super-slicer, mediathekview: remove Moredread as maintainer
d2d4c4f350b9 restic: 0.17.2 -> 0.17.3 (#354582)
38a52bbfd430 restic: disable tests on non-linux
c98b0cad092c home-assistant-custom-lovelace-modules.mushroom: 4.0.8 -> 4.1.0
70ca880f3511 gnome-online-accounts: 3.52.0 → 3.52.1
247ee3b0379e mutter: 47.0 → 47.1
6b438be4d92a gvfs: 1.56.0 → 1.56.1
748ada2ba6e0 gnome-shell-extensions: 47.0 → 47.1
b3b9989a367d gnome-shell: 47.0 → 47.1
d45192210e86 gnome-remote-desktop: 47.0 → 47.1
ea1a562cb95a gnome-control-center: 47.0.1 → 47.1.1
9b6dabf3f2ff kubelogin-oidc: switch to recommended pattern for implicit attr defaults
4d089cffa925 kubelogin-oidc: 1.30.1 -> 1.31.0
f0bee68628ec robo: 5.0.0 -> 5.1.0 (#354707)
6fb6032d36ef roave-backward-compatibility-check: 8.9.0 -> 8.10.0 (#354705)
04f72b6930e8 ispc: 1.25.0 -> 1.25.3 (#354585)
a4e298635f25 waylock: 1.2.1 -> 1.3.0
7fa514f53139 waylock: port update script to bash
a9669e1be8c7 d2: 0.6.7 -> 0.6.8
a31f2a7b37f2 pluginupdate.py: fix bugs and add improvements; vimPlugins: sort properly (#353786)
8d9c4bfb9851 helix-gpt: 0.31 -> 0.34
2ef132b3585e gifski: 1.14.4 -> 1.32.0 (#346255)
e02828f01cd1 python312Packages.scikit-fmm: remove stale substituteInPlace, unbreak (#354509)
7bb5dfe0e470 sketchybar-app-font: 2.0.25 -> 2.0.27
894ab7c90845 wttrbar: 0.10.6 -> 0.11.0
bc63a2f7c3c8 lapce: unbreak x86_64-darwin (#354566)
dcdd61e5e5b2 whitesur-kde: 2022-05-01-unstable-2024-09-26 -> 2022-05-01-unstable-2… (#353112)
67fa71469a6b python3Packages.pgsanity: fix build
e07f6a75653d python3Packages.mirakuru: fix build on darwin in sandbox
1b89b9a99d80 python3Packages.mirakuru: fix build on darwin
2515edf5369e qogir-kde: 0-unstable-2024-09-21 -> 0-unstable-2024-10-30 (#352723)
5f45ecf05c14 python312Packages.docling-parse: 2.0.2 -> 2.0.3 (#354691)
cf6a8c9b4b9f chore: update references to `nix-review` to `nixpkgs-review`
bc5b75eb11b1 mysql80: 8.0.39 -> 8.0.40 (#350248)
9bcab985ab58 stardust-xr-kiara: 0-unstable-2024-07-07 -> 0-unstable-2024-07-13
ea5908112814 python3Packages.mirakuru: 2.5.2 -> 2.5.3
a2dc61cee92a panoply: 5.5.4 -> 5.5.5
9ba75eb753b5 mysql-shell-innovation: add libutil on darwin; refactor to new SDK pattern
194e35dd632a mysql-shell: add libutil on darwin; refactor to new SDK pattern
54953ef09a04 qownnotes: 24.9.8 -> 24.11.1
8091ea3f24bb Merge: postgresql_17: fix build (#354571)
274d5afbc552 python312Packages.githubkit: 0.11.11 -> 0.11.14
3b91a81423cd treewide: remove redundant patches and locks (#354215)
c4f452f621f6 vimPlugins.neoconf-nvim: add dependencies
c701c72b71f7 wl-gammarelay-rs: 0.4.1 -> 1.0.0 (#353023)
b11943b30173 nhost-cli: 1.24.5 -> 1.27.0 (#352589)
82f6fe5a5762 OWNERS: correct path after 1st by-name migration (#354753)
44800d7c800e .git-blame-ignore-revs: add 'treewide: migrate packages to pkgs/by-name, take 1'
7a56cc79c651 marwaita-red: 22 -> 22.2 (#354662)
fa2cae8e77f8 treewide: migrate packages to pkgs/by-name, take 1 (#354531)
8f29f19bc162 mysql-shell: 8.4.1 -> 8.4.3, mysql-shell-innovation: 9.0.1 -> 9.1.0 (#349181)
8c2c5fa14d77 nixos/nzbget: add option to override package (#302204)
f8bb0b875ad8 factorio: 2.0.14 -> 2.0.15 (#354040)
ff0df8fe7aee php: 8.4.0RC3 -> 8.4.0RC4, 8.3.12 -> 8.3.13 (#354562)
751912c95af1 OWNERS: correct path after 1st by-name migration
648e59c8a3ce python312Packages.imap-tools: 1.7.3 -> 1.7.4
be978743512b Fix: use lib.mkPackageOption
ba83a0dba006 Merge branch 'master' into patch-1
a96dce89d048 PR feedback: Replace pkg variable, move package statement
571c71e6f73a treewide: migrate packages to pkgs/by-name, take 1
b5f67acfbf3c nix-forecast: init at 0.1.0 (#354661)
bfd5f3d9ffca glfw3: added vulkan support
e98f8506648f python312Packages.nice-go: 0.3.9 -> 0.3.10
e79b71782a4c budgie-media-player-applet: 1.0.1 -> 1.1.1 (#354308)
4801d0c2a3a5 postgresql17Packages.{pg_cron,pg_hll}: fix build on x86_64-darwin
b9cf08c8e5ec cargo-mobile2: 0.17.3 -> 0.17.4 (#354677)
dde21924f83f vimPlugins.quarto-nvim: add dependencies (#354634)
df20742283ba ombi: allow overriding package in module (#345814)
a50d7295727e darwin.openwith: remove apple_sdk.frameworks
112d505ce4a2 clickhouse: fix compilation on aarch64-linux (#353983)
3fe7c149cbbb libreoffice: disable tests on Qt5
2be7c57b9325 python312Packages.ruff: 0.7.2 -> 0.7.3 (#354580)
eeb4b7041961 nixos/hebbot: Fix systemd service (#354098)
dde890851a3c python311Packages.angr: 9.2.126 -> 9.2.127
58e6cb8ad805 python312Packages.cle: 9.2.126 -> 9.2.127
7a83dade0a7d python312Packages.claripy: 9.2.126 -> 9.2.127
82870db16ad2 python312Packages.pyvex: 9.2.126 -> 9.2.127
1e20869209d8 python312Packages.ailment: 9.2.126 -> 9.2.127
5a5694d2ff97 python312Packages.archinfo: 9.2.126 -> 9.2.127
bf11ccc0e233 clouddrive2: 0.7.21 -> 0.8.3 (#354273)
951d196036af stardust-xr-magnetar: init at 0-unstable-2024-08-31 (#354623)
18f2cc30ef90 stardust-xr-gravity: init at 0-unstable-2024-08-20 (#354616)
90f890e79327 stardust-xr-atmosphere: init at 0-unstable-2024-08-22 (#354633)
fd3e1541866a libreoffice-still: 24.2.5.2 -> 24.2.7.2
b60b7b6b05c1 libreoffice-fresh: 24.8.0.3 -> 24.8.2.1
dc31ff18ec84 stardust-xr-phobetor: init at 0-unstable-2024-02-10 (#354637)
996e9d64594d python311Packages.pysnow: fix deps and tests, unbreak (#354464)
5f8f11ff862b stardust-xr-protostar: init at 0-unstable-2024-07-19 (#354614)
f3e2ba5038e9 stardust-xr-sphereland: init at 0-unstable-2023-11-06 (#354638)
99d3107b49fe stardust-xr-flatland: init at 0-unstable-2024-04-13 (#324395)
780275051aa2 stardust-xr-kiara: init at 0-unstable-2024-07-07 (#324404)
ff09150750be basedpyright: 1.19.0 -> 1.21.0 (#354204)
aff0cebe5ab3 fishPlugins.*: fix versions
8b4272426c92 python312Packages.magic-wormhole-transit-relay: 0.3.1 -> 0.4.0
54baabae77a7 ssh-tools: 1.8-unstable-2024-03-18 -> 1.9 (#353042)
972dfa3efafc python312Packages.objprint: add changelog to meta
ca6c07d985d5 cnspec: 11.28.1 -> 11.29.0
788591e73b39 python312Packages.cyclopts: 2.9.9 -> 3.0.0
b156e982136d .github: Add a "Module requests" issue template
1df32493a41c python312Packages.mypy-boto3-verifiedpermissions: 1.35.30 -> 1.35.55
25114110f49e python312Packages.mypy-boto3-synthetics: 1.35.18 -> 1.35.56
dd882eb62402 python312Packages.mypy-boto3-s3control: 1.35.12 -> 1.35.55
aede3250222f python312Packages.mypy-boto3-resource-explorer-2: 1.35.25 -> 1.35.56
ddb9a7fcd1d7 python312Packages.mypy-boto3-quicksight: 1.35.43 -> 1.35.56
6db171d873a5 python312Packages.mypy-boto3-pinpoint-sms-voice-v2: 1.35.43 -> 1.35.57
c548504474ae nzportable: init at 2.0.0-indev+20241012190425
47904c8dd760 python312Packages.mypy-boto3-lambda: 1.35.49 -> 1.35.57
1e7b5db19091 python312Packages.mypy-boto3-lakeformation: 1.35.0 -> 1.35.55
f04bedb8b097 python312Packages.mypy-boto3-guardduty: 1.35.39 -> 1.35.55
f696f2da0ac9 python312Packages.mypy-boto3-firehose: 1.35.0 -> 1.35.57
815da64d5641 python312Packages.mypy-boto3-eks: 1.35.45 -> 1.35.57
da42eb80266f python312Packages.mypy-boto3-codebuild: 1.35.49 -> 1.35.55
f283f98e923e python312Packages.mypy-boto3-cleanrooms: 1.35.51 -> 1.35.56
764ae6081bc7 python312Packages.mypy-boto3-chime-sdk-media-pipelines: 1.35.0 -> 1.35.57
df705189ee44 python312Packages.mypy-boto3-batch: 1.35.53 -> 1.35.57
a4a1020e7137 python312Packages.mypy-boto3-autoscaling: 1.35.53 -> 1.35.56
e770aff17974 python312Packages.multiscale-spatial-image: 2.0.0 -> 2.0.1
f396caa8d752 python312Packages.chromadb: 0.5.17 -> 0.5.18
2160918a0b90 python312Packages.jedi-language-server: 0.41.4 -> 0.42.0
cb5a79de97b2 python312Packages.gehomesdk: 0.5.28 -> 0.5.29
ac3c8ae13d0a python312Packages.mitogen: 0.3.16 -> 0.3.18
b7c678532145 nix-update: 1.5.2 -> 1.6.0 (#354708)
1cc81439e761 nixosTests.frr: fix warning, use nodes.router instead of nodes.router.config
f93219dfa08f nixosTests.frr: format using nixfmt
df11922a6da8 nix-update: 1.5.2 -> 1.6.0
63d9179dd4e9 python312Packages.python-axolotl-curve25519: refactor
533fffa449e4 python312Packages.python-axolotl-curve25519: fix build on darwin
45dd2b73eacf python312Packages.tencentcloud-sdk-python: 3.0.1261 -> 3.0.1262
7c69e10ceb1b okteto: 3.0.0 -> 3.1.0
83d18d4dc3ee python311Packages.yowsup: refactor
c0ec6c8c3c3c python311Packages.yowsup: fix build
a0f0aac19598 ccls: 0.20240505 -> 0.20241108
5abc7f27a20e python312Packages.objprint: 0.2.3 -> 0.3.0
1fa9b80b0afd release: block on `aarch64` on `*-darwin` channels
ab7489d373ff python311Packages.consonance: refactor
c76f00a4efe6 python311Packages.consonance: fix build
f323f1ccfef7 nix-forecast: init at 0.1.0
bdfa0f011297 python3Packages.pywebview: build fix for tests
78b5698555d8 ab-av1: 0.7.18 -> 0.7.19
8dfa246bb10c python312Packages.qbittorrent-api: 2024.9.67 -> 2024.10.68
4c7aa6428fe9 cargo-mobile2: 0.17.3 -> 0.17.4
df3d7683fed1 tile38: 1.33.3 -> 1.33.4
4f0337923244 quarto: apply deno 2 compatibility patch
69cc148de30a quarto: 1.6.30 -> 1.6.33
39769f9fc86f python311Packages.tsfresh: fix build on darwin
80335810c8c6 wl-gammarelay-rs: 0.4.1 -> 1.0.0
cf772c1b5608 fluent-bit: 3.1.9 -> 3.1.10
3603e0d5ea48 marwaita-red: 22 -> 22.2
5a82dc34b00e nhost-cli: 1.24.5 -> 1.27.0
40641c90b547 python312Packages.polars: 1.7.1 -> 1.9.0
b5f7f510393d ocamlPackages.http-mirage-client: 0.0.7 -> 0.0.8
a784f38df795 stardust-xr-sphereland: init at 0-unstable-2023-11-06
2c31f63228ab stardust-xr-phobetor: init at 0-unstable-2024-02-10
66bb24d74424 vimPlugins.quarto-nvim: add dependencies
02871d95ebeb mesonlsp: fix aarch64-darwin build, mark as broken on x86_64-darwin
2e2d6027352b stardust-xr-atmosphere: init at 0-unstable-2024-08-22
e9b1d2d5ac63 vimPlugins: sort properly
a6fe798a015a pluginupdate.py: fix bugs and add improvements
8b503ec432ce pluginupdate.py: reformat with ruff
d339f93f3225 bsc: remove axv2 when building on non x86 system
385eb6ae4dff python3Packages.rioxarray: 0.17.0 -> 0.18.1
5a1e1f65a908 stardust-xr-flatland: init at 0-unstable-2024-04-13
4b02cabbbe0c stardust-xr-protostar: init at 0-unstable-2024-07-19
839ecef9050e stardust-xr-gravity: init at 0-unstable-2024-08-20
c3fd31e2c4ad stardust-xr-magnetar: init at 0-unstable-2024-08-31
a90b34f9e76b keybase{-gui}: add myself as maintainer
265d9a2adb8b keybase-gui: add `NIXOS_OZONE_WL` support
a024f81d841c keybase-gui: 6.2.4 -> 6.4.0
562758261fd4 pulumi-bin: 3.137.0 -> 3.138.0
71330f93ee9e linux_xanmod_latest: 6.11.6 -> 6.11.7
efa0718e7482 linux_xanmod: 6.6.59 -> 6.6.60
61220d768de8 python3Packages.torch: switch to apple-sdk_13
afbbb9aaeb0d python312Packages.aiortm: 0.9.24 -> 0.9.25
ac5aaaa7336f python312Packages.whenever: 0.6.10 -> 0.6.12
086bfa238585 lib/minver: bump to 2.3.17
a5b695b34b6b python312Packages.ucsmsdk: 0.9.20 -> 0.9.21
c3afba78f24e python311Packages.qutip: relax numpy build-time constraint, unbreak
0a48b45c5af7 xar: fix Linux build on staging-next
1754ed842e2d ispc: 1.25.0 -> 1.25.3
b8e62002b5d3 python312Packages.msprime: relax numpy build-time constraint, unbreak
226843be6a9f python312Packages.pysnow: patch tests, unbreak
b8b4cdc90390 doc: revise Darwin SDK documentation
5db8bf44deb0 openpgp-card-tools: Add shell completions and man pages
120103ec7cc9 restic: 0.17.2 -> 0.17.3
80458ba97944 stardust-xr-kiara: init at 0-unstable-2024-07-07
676db521744e postgresql_17: fix build
b2945bc0a84f python312Packages.langgraph: Fix unit tests that were breaking Hydra
c64c064437f5 python312Packages.babelfont: 3.0.5 -> 3.0.6
c26249be9a66 lapce: format with nixfmt-rfc-style
896db32853f5 lapce: unbreak x86_64-darwin
3e9c905d355a nomad_1_9: 1.9.0 -> 1.9.2
4a1393afe0f1 python312Packages.ruff: 0.7.2 -> 0.7.3
78705eaeb106 skia: unbreak darwin
d1478e78c0ac postgresqlPackages.system_stats: fix build on darwin
af11b38d2131 cotp: 1.9.1 -> 1.9.2
c78b55b3b684 protonvpn-gui: 4.6.0 -> 4.7.3
29d02718132f wasmtime: 26.0.0 -> 26.0.1
1af3b8486fb2 granted: 0.36.0 -> 0.36.1
1bb3362ddfb5 python312Packages.free-proxy: 1.1.2 -> 1.1.3
dd59f2cfe919 budgie-media-player-applet: 1.0.1 -> 1.1.1
0418996c9685 pg-dump-anon: use latest postgresql available
6ec5b8d597ba netclient: 0.25.0 -> 0.26.0
e600b8b00b33 newlib: enable parallel build
16518a3f3d4b factorio: 2.0.14 -> 2.0.15
6c2d6fa844bc leo-editor: 6.8.1 -> 6.8.2
84b68b839ac3 python312Packages.tskit: relax numpy build-time constraint, unbreak
bd2ea530520b python312Packages.scikit-fmm: run checkPhase hooks, echo check command
1c418186cfd2 python312Packages.scikit-fmm: remove stale substituteInPlace, unbreak
ee27c02106f3 kube-state-metrics: 2.13.0 -> 2.14.0
0465be1b8f0e python311Packages.pysnow: fix deps, unbreak
eeb52b79d149 vscode-extensions.shd101wyy.markdown-preview-enhanced: 0.8.14 -> 0.8.15
19595c35d78c crates-tui: init at 0.1.20
92647d759237 vale: 3.8.0 -> 3.9.0
44992762f0cc basedpyright: 1.19.0 -> 1.21.0
27c93e95f9a8 tulip: fix compilation by adding the `-fpermissive` flag A typecast from unsigned char* to char* in the source broke the build
987c737557b1 python312Packages.guidata: 3.6.3 -> 3.7.0
07d2ee58bae2 nanoflann: 1.6.1 -> 1.6.2
b74fdd238641 treewide: remove redundant patches and locks
a588dee7465d python312Packages.cmsdials: 1.3.0 -> 1.4.0
b75334c2f965 live-server: 0.8.0 -> 0.9.0
86fbc2f2d8c6 python312Packages.redis-om: 0.3.2 -> 0.3.3
00cc5342828c python312Packages.kornia: 0.7.3 -> 0.7.4
831c38e31987 python3Packages.fastcrc: init at 0.3.2
a01b23fa72ac cartridges: run meson checks
57f23ed8b1a8 cartridges: 2.9.3 -> 2.10.1
cea2eef9fa5d clouddrive2: 0.7.21 -> 0.8.3
b62797a3d7ed tulip: format using nixfmt
fb358db1b51f thunderbird-128-unwrapped: 128.4.0esr -> 128.4.2esr
d56656e48729 yosys: 0.46 -> 0.47
43d0f16226c8 pyton312Packages.arelle: 18.3 -> 2.30.25, unbreak, refactor
0e174ba654b7 python3Packages.proton-vpn-network-manager: 0.9.1 -> 0.9.4
f4485f7c41af python3Packages.proton-vpn-api-core: 0.35.5 -> 0.36.4
074f93408e5a proton-vpn-local-agent: 0-unstable-2024-10-10 -> 1.0.0
da0bfe800600 signal-desktop: remove stdenv.cc.cc from runtimeDeps
de8c3feb7fbf wasmer: 5.0.0 -> 5.0.1
16970e3252d0 nixos/hebbot: Fix systemd service
9e1b88a44350 libbassmidi: init at 2.4.15.3
05ac36fa30a3 treewide: use dontCargo{Build,Check,Install}
3e646301a07e smartcat: 1.7.1 -> 2.1.0
9609ea875774 vscode-extensions.streetsidesoftware.code-spell-checker: 4.0.14 -> 4.0.15
975f4c45ae5c beszel: init at 0.6.2
887a74fd5784 clickhouse: fix compilation on aarch64-linux
3f2bbfd68b79 nixos/openvpn3: add `/etc/openvpn3/configs` to `systemd.tmpfiles`
9642cf41060a cfn-nag: added mathstlouis to maintainers
abcf5fb9b943 maintainer-list: added mathstlouis
c771f151f8bf cfn-nag: added meta.mainProgram
ff17208a821a cfn-nag: fix gemfile so that binaries are generated
dd086ca40200 msi-ec: 0-unstable-2024-09-19 -> 0-unstable-2024-11-04
4b13779f3321 python3Packages.subliminal: mark as not broken
9b7877aa1fc7 kubectl-graph: init at 0.7.0
aebe9a354b7b regripper: update-2023-07-23 -> 0-unstable-2024-11-02
db15554b6954 htcondor: 23.10.1 -> 24.1.1
d90f320eb26d bootterm: init at 0.5
45d7127c77df mesonlsp: 4.3.5 -> 4.3.7
1a774a95d219 python312Packages.wtforms: 3.1.2 -> 3.2.1
682d4d76aa8c containerlab: 0.58.0 -> 0.59.0
7abbb28c59b9 whitesur-kde: 2022-05-01-unstable-2024-09-26 -> 2022-05-01-unstable-2024-11-01
b9e3b9dbb22b ssh-tools: 1.8-unstable-2024-03-18 -> 1.9
4eceb5ba2fef maintainers: add deadbaed
c952a4bfdbec vscode-extensions.sainnhe.gruvbox-material: init at 6.5.2
d4e2d6e00c84 maintainers: add thtrf
1301e4f0b024 pyamlboot.tests: fix the eval
6030ff068ad7 gnuplot: fix build with `withTeXLive = true`
b6cf7b27b7c0 qogir-kde: 0-unstable-2024-09-21 -> 0-unstable-2024-10-30
4d8081767bc5 lomiri.lomiri-content-hub: nixfmt, modernise
4ce2e1df58ec lomiri.lomiri-download-manager: nixfmt, modernise
5cc3c54a6425 lomiri.lomiri-ui-toolkit: nixfmt, modernise
ba59f61a725a lomiri.u1db-qt: Add meta.changelog
95c0233ed962 lomiri.lomiri-action-api: nixfmt, modernise
bafb37491e96 libsForQt5.accounts-qml-module: Fix version
b8c432b54a5a libsForQt5.accounts-qml-module: nixfmt, modernise
8a5f86237dba lomiri.lomiri-content-hub: Enable qdoc docs
03b310e94cbc lomiri.lomiri-indicator-network: Enable qdoc docs
e0d5bd98ffbc lomiri.lomiri-download-manager: Enable qdoc docs
d04843ce6096 lomiri.lomiri-ui-toolkit: Enable qdoc docs
ac976c912dfb jasp-desktop: add patch to fix crash when using qt 6.8
8f74b6cdaf78 lomiri.lomiri-action-api: Enable qdoc docs
eeea8d648db2 lomiri.u1db-qt: Enable qdoc docs
4442e5ac9161 libsForQt5.accounts-qml-module: Enable qdoc docs
9dd1f943ecd1 nixos/nextcloud-notify_push: fix defaultText rendering
bed43b44613d nixos/hardware.nitrokey: update documentation
38ec993a582f nixos/hardware.nitrokey: replace libnitrokey with nitrokey-udev-rules
d43f004d1fe4 nitrokey-udev-rules: init at 1.0.0
8ffcca7fd0a0 maintainers: add robinkrahl
2280b9bf4a98 python312Packages.bsdiff4: 1.2.4 -> 1.2.5
9ce864871fdc python312Packages.rio-tiler: 6.7.0 → 7.0.1
1caf42170d5a vscode-extensions.continue.continue: 0.8.44 -> 0.8.54
d931f342a429 mysql80: 8.0.39 -> 8.0.40
07c81867c907 dolphin-emu-primehack: 1.0.6a -> 1.0.7a, qt5 -> qt6, unpin fmt
c3ceedeac1ac obs-studio-plugins.obs-hyperion: patch stateChanged deprecation
cbcee2460787 mysql-shell-innovation: 9.0.1 -> 9.1.0
c7a381c92a79 mysql-shell: 8.4.1 -> 8.4.3
933ccc51f4a5 maintainers: add rksm
1a48ff707293 python312Packages.morecantile: 5.4.2 -> 6.0.0
c02e155285ef vscode-extensions.esbenp.prettier-vscode: 10.4.0 -> 11.0.0
6e6fc7ca2658 nixos/acme: do not limit credentials functionality to DNS/S3 config
7467f7d59f13 nixos/roundcube: add example for `database.passwordFile`
04dbbd436515 teamviewer: introduce services.teamviewer.package option
2928912a7c74 teamviewer: remove "with lib;"
89ecd0313160 teamviewer: format file
5146c143bbf1 gifski: 1.14.4 -> 1.32.0
a44e0fe3dc9f pyton312Packages.sphinx-autodoc2: init at 0.5.0
0b097987fe34 nixos/localsend: allow udp port
9ac4777d98d0 nixos/localsend: add package option
a3843a7ee564 chiptrack: init at 0.3.1
5d49d4cfa1a4 nixos/guix: use exec to start the payload binary
410ae87bf5e2 nixos/boinc: use exec to start the payload binary
e8a9775a6167 nixos/nzbget: add option to override package

git-subtree-dir: third_party/nixpkgs
git-subtree-split: dc460ec76cbff0e66e269457d7b728432263166c
2024-11-16 15:43:04 +00:00
11608 changed files with 30851 additions and 40846 deletions

View file

@ -203,3 +203,6 @@ ce21e97a1f20dee15da85c084f9d1148d84f853b
# sqlc: format with nixfmt # sqlc: format with nixfmt
2bdec131b2bb2c8563f4556d741d34ccb77409e2 2bdec131b2bb2c8563f4556d741d34ccb77409e2
# treewide: migrate packages to pkgs/by-name, take 1
571c71e6f73af34a229414f51585738894211408

View file

@ -0,0 +1,27 @@
---
name: Module requests
about: For NixOS modules that you would like to see
title: 'Module request: MODULENAME'
labels: '9.needs: module (new)'
assignees: ''
---
### Description
<!-- Describe what the module should accomplish: -->
### Notify maintainers
<!-- If applicable, tag the maintainers of the package that corresponds to the module. If the search.nixos.org result shows no maintainers, tag the person that last updated the package. -->
-----
Note for maintainers: Please tag this issue in your PR.
---
Add a :+1: [reaction] to [issues you find important].
[reaction]: https://github.blog/2016-03-10-add-reactions-to-pull-requests-issues-and-comments/
[issues you find important]: https://github.com/NixOS/nixpkgs/issues?q=is%3Aissue+is%3Aopen+sort%3Areactions-%2B1-desc

View file

@ -206,6 +206,12 @@ pkgs/data/misc/cacert/ @ajs124 @lukegb @mweinelt
pkgs/development/libraries/nss/ @ajs124 @lukegb @mweinelt pkgs/development/libraries/nss/ @ajs124 @lukegb @mweinelt
pkgs/development/python-modules/buildcatrust/ @ajs124 @lukegb @mweinelt pkgs/development/python-modules/buildcatrust/ @ajs124 @lukegb @mweinelt
# Java
/doc/languages-frameworks/java.section.md @NixOS/java
/doc/languages-frameworks/gradle.section.md @NixOS/java
/doc/languages-frameworks/maven.section.md @NixOS/java
/pkgs/top-level/java-packages.nix @NixOS/java
# Jetbrains # Jetbrains
/pkgs/applications/editors/jetbrains @edwtjo /pkgs/applications/editors/jetbrains @edwtjo
@ -229,7 +235,7 @@ pkgs/development/python-modules/buildcatrust/ @ajs124 @lukegb @mweinelt
/pkgs/servers/sql/postgresql @NixOS/postgres /pkgs/servers/sql/postgresql @NixOS/postgres
/nixos/modules/services/databases/postgresql.md @NixOS/postgres /nixos/modules/services/databases/postgresql.md @NixOS/postgres
/nixos/modules/services/databases/postgresql.nix @NixOS/postgres /nixos/modules/services/databases/postgresql.nix @NixOS/postgres
/nixos/tests/postgresql.nix @NixOS/postgres /nixos/tests/postgresql @NixOS/postgres
# Hardened profile & related modules # Hardened profile & related modules
/nixos/modules/profiles/hardened.nix @joachifm /nixos/modules/profiles/hardened.nix @joachifm
@ -248,13 +254,13 @@ pkgs/development/python-modules/buildcatrust/ @ajs124 @lukegb @mweinelt
# Network Time Daemons # Network Time Daemons
/pkgs/by-name/ch/chrony @thoughtpolice /pkgs/by-name/ch/chrony @thoughtpolice
/pkgs/tools/networking/ntp @thoughtpolice /pkgs/by-name/nt/ntp @thoughtpolice
/pkgs/tools/networking/openntpd @thoughtpolice /pkgs/by-name/op/openntpd @thoughtpolice
/nixos/modules/services/networking/ntp @thoughtpolice /nixos/modules/services/networking/ntp @thoughtpolice
# Network # Network
/pkgs/tools/networking/kea/default.nix @mweinelt /pkgs/by-name/ke/kea @mweinelt
/pkgs/tools/networking/babeld/default.nix @mweinelt /pkgs/by-name/ba/babeld @mweinelt
/nixos/modules/services/networking/babeld.nix @mweinelt /nixos/modules/services/networking/babeld.nix @mweinelt
/nixos/modules/services/networking/kea.nix @mweinelt /nixos/modules/services/networking/kea.nix @mweinelt
/nixos/modules/services/networking/knot.nix @mweinelt /nixos/modules/services/networking/knot.nix @mweinelt
@ -407,12 +413,12 @@ pkgs/by-name/lx/lxc* @adamcstephens
# GNU Tar & Zip # GNU Tar & Zip
/pkgs/tools/archivers/gnutar @RossComputerGuy /pkgs/tools/archivers/gnutar @RossComputerGuy
/pkgs/tools/archivers/zip @RossComputerGuy /pkgs/by-name/zi/zip @RossComputerGuy
# SELinux # SELinux
/pkgs/os-specific/linux/checkpolicy @RossComputerGuy /pkgs/by-name/ch/checkpolicy @RossComputerGuy
/pkgs/os-specific/linux/libselinux @RossComputerGuy /pkgs/by-name/li/libselinux @RossComputerGuy
/pkgs/os-specific/linux/libsepol @RossComputerGuy /pkgs/by-name/li/libsepol @RossComputerGuy
# installShellFiles # installShellFiles
/pkgs/by-name/in/installShellFiles/* @Ericson2314 /pkgs/by-name/in/installShellFiles/* @Ericson2314

View file

@ -0,0 +1,4 @@
# `aws-c-common` {#aws-c-common}
This hook exposes its own [CMake](#cmake) modules by setting [`CMAKE_MODULE_PATH`](https://cmake.org/cmake/help/latest/variable/CMAKE_MODULE_PATH.html) through [the `cmakeFlags` variable](#cmake-flags)
to the nonstandard `$out/lib/cmake` directory, as a workaround for [an upstream bug](https://github.com/awslabs/aws-c-common/issues/844).

View file

@ -8,6 +8,7 @@ The stdenv built-in hooks are documented in [](#ssec-setup-hooks).
autoconf.section.md autoconf.section.md
automake.section.md automake.section.md
autopatchelf.section.md autopatchelf.section.md
aws-c-common.section.md
bmake.section.md bmake.section.md
breakpoint.section.md breakpoint.section.md
cernlib.section.md cernlib.section.md

View file

@ -2,100 +2,94 @@
## Darwin (macOS) {#sec-darwin} ## Darwin (macOS) {#sec-darwin}
Some common issues when packaging software for Darwin: The Darwin `stdenv` differs from most other ones in Nixpkgs in a few key ways.
These differences reflect the default assumptions for building software on that platform.
In many cases, you can ignore these differences because the software you are packaging is already written with them in mind.
When you do that, write your derivation as normal. You dont have to include any Darwin-specific special cases.
The easiest way to know whether your derivation requires special handling for Darwin is to write it as if it doesnt and see if it works.
If it does, youre done; skip the rest of this.
- The Darwin `stdenv` uses clang instead of gcc. When referring to the compiler `$CC` or `cc` will work in both cases. Some builds hardcode gcc/g++ in their build scripts, that can usually be fixed with using something like `makeFlags = [ "CC=cc" ];` or by patching the build scripts. - Darwin uses Clang by default instead of GCC. Packages that refer to `$CC` or `cc` should just work in most cases.
Some packages may hardcode `gcc` or `g++`. You can usually fix that by setting `makeFlags = [ "CC=cc" "CXX=C++" ]`.
If that does not work, you will have to patch the build scripts yourself to use the correct compiler for Darwin.
- Darwin needs an SDK to build software.
The SDK provides a default set of frameworks and libraries to build software, most of which are specific to Darwin.
There are multiple versions of the SDK packages in Nixpkgs, but one is included by default in the `stdenv`.
Usually, you dont have to change or pick a different SDK. When in doubt, use the default.
- The SDK used by your build can be found using the `DEVELOPER_DIR` environment variable.
There are also versions of this variable available when cross-compiling depending on the SDKs role.
The `SDKROOT` variable is also set with the path to the SDKs libraries and frameworks.
`SDKROOT` is always a sub-folder of `DEVELOPER_DIR`.
- Darwin includes a platform-specific tool called `xcrun` to help builds locate binaries they need.
A version of `xcrun` is part of the `stdenv` on Darwin.
If your package invokes `xcrun` via an absolute path (such as `/usr/bin/xcrun`), you will need to patch the build scripts to use `xcrun` instead.
To reiterate: you usually dont have to worry about this stuff.
Start with writing your derivation as if everything is already set up for you (because in most cases it already is).
If you run into issues or failures, continue reading below for how to deal with the most common issues you may encounter.
### Darwin Issue Troubleshooting {#sec-darwin-troubleshooting}
#### Package requires a non-default SDK or fails to build due to missing frameworks or symbols {#sec-darwin-troubleshooting-using-sdks}
In some cases, you may have to use a non-default SDK.
This can happen when a package requires APIs that are not present in the default SDK.
For example, Metal Performance Shaders were added in macOS 12.
If the default SDK is 11.3, then a package that requires Metal Performance Shaders will fail to build due to missing frameworks and symbols.
To use a non-default SDK, add it to your derivations `buildInputs`.
It is not necessary to override the SDK in the `stdenv` nor is it necessary to override the SDK used by your dependencies.
If your derivation needs a non-default SDK at build time (e.g., for a `depsBuildBuild` compiler), see the cross-compilation documentation for which input you should use.
When determining whether to use a non-default SDK, consider the following:
- Try building your derivation with the default SDK. If it works, youre done.
- If the package specifies a specific version, use that. See below for how to map Xcode version to SDK version.
- If the packages documentation indicates it supports optional features on newer SDKs, consider using the SDK that enables those features.
If youre not sure, use the default SDK.
Note: It is possible to have multiple, different SDK versions in your inputs.
When that happens, the one with the highest version is always used.
```nix ```nix
stdenv.mkDerivation { stdenv.mkDerivation {
name = "libfoo-1.2.3"; name = "libfoo-1.2.3";
# ... # ...
buildPhase = '' buildInputs = [ apple-sdk_14 ];
$CC -o hello hello.c
'';
} }
``` ```
- On Darwin, libraries are linked using absolute paths, libraries are resolved by their `install_name` at link time. Sometimes packages wont set this correctly causing the library lookups to fail at runtime. This can be fixed by adding extra linker flags or by running `install_name_tool -id` during the `fixupPhase`. #### What is a “deployment target” (or minimum version)? {#sec-darwin-troubleshooting-using-deployment-targets}
The “deployment target” refers to the minimum version of macOS that is expected to run an application.
In most cases, the default is fine, and you dont have to do anything else.
If youre not sure, dont do anything, and that will probably be fine.
Some packages require setting a non-default deployment target (or minimum version) to gain access to certain APIs.
You do that using the `darwinMinVersionHook`, which takes the deployment target version as a parameter.
There are primarily two ways to determine the deployment target.
- The upstream documentation will specify a deployment target or minimum version. Use that.
- The build will fail because an API requires a certain version. Use that.
- In all other cases, you probably dont need to specify a minimum version. The default is usually good enough.
```nix ```nix
stdenv.mkDerivation { stdenv.mkDerivation {
name = "libfoo-1.2.3"; name = "libfoo-1.2.3"; # Upstream specifies the minimum supported version as 12.5.
# ... buildInputs = [ (darwinMinVersionHook "12.5") ];
makeFlags = lib.optional stdenv.hostPlatform.isDarwin "LDFLAGS=-Wl,-install_name,$(out)/lib/libfoo.dylib";
} }
``` ```
- Even if the libraries are linked using absolute paths and resolved via their `install_name` correctly, tests can sometimes fail to run binaries. This happens because the `checkPhase` runs before the libraries are installed. Note: It is possible to have multiple, different instances of `darwinMinVerisonHook` in your inputs.
When that happens, the one with the highest version is always used.
This can usually be solved by running the tests after the `installPhase` or alternatively by using `DYLD_LIBRARY_PATH`. More information about this variable can be found in the *dyld(1)* manpage. #### Picking an SDK version {#sec-darwin-troubleshooting-picking-sdk-version}
``` The following is a list of Xcode versions, the SDK version in Nixpkgs, and the attribute to use to add it.
dyld: Library not loaded: /nix/store/7hnmbscpayxzxrixrgxvvlifzlxdsdir-jq-1.5-lib/lib/libjq.1.dylib Check your packages documentation (platform support or installation instructions) to find which Xcode or SDK version to use.
Referenced from: /private/tmp/nix-build-jq-1.5.drv-0/jq-1.5/tests/../jq Generally, only the last SDK release for a major version is packaged (each _x_ in 10._x_ until 10.15 is considered a major version).
Reason: image not found
./tests/jqtest: line 5: 75779 Abort trap: 6
```
```nix | Xcode version | SDK version | Nixpkgs attribute |
stdenv.mkDerivation {
name = "libfoo-1.2.3";
# ...
doInstallCheck = true;
installCheckTarget = "check";
}
```
- Some packages assume Xcode is available and use `xcrun` to resolve build tools like `clang`, etc. The Darwin stdenv includes `xcrun`, and it will return the path to any binary available in a build.
```nix
stdenv.mkDerivation {
name = "libfoo-1.2.3";
# ...
nativeBuildInputs = [ bison ];
buildCommand = ''
xcrun bison foo.y # produces foo.tab.c
# ...
'';
}
```
The package `xcbuild` can be used to build projects that really depend on Xcode. However, this replacement is not 100% compatible with Xcode and can occasionally cause issues.
Note: Some packages may hardcode an absolute path to `xcrun`, `xcodebuild`, or `xcode-select`. Those paths should be removed or replaced.
```nix
stdenv.mkDerivation {
name = "libfoo-1.2.3";
prePatch = ''
substituteInPlace Makefile \
--replace-fail /usr/bin/xcrun xcrun
# or: --replace-fail /usr/bin/xcrun '${lib.getExe' buildPackages.xcbuild "xcrun"}'
'';
}
```
- Multiple SDKs are available for use in nixpkgs. Each platform has a default SDK (10.12.2 for x86_64-darwin and 11.3 for aarch64-darwin), which is available as the `apple-sdk` package.
The SDK provides the necessary headers and text-based stubs to link common frameworks and libraries (such as libSystem, which is effectively Darwins libc). Projects will sometimes indicate which SDK to use by the Xcode version. As a rule of thumb, subtract one from the Xcode version to get the available SDK in nixpkgs.
The `DEVELOPER_DIR` variable in the build environment has the path to the SDK in the build environment. The `SDKROOT` variable there contains a sysroot with the framework, header, and library paths. You can reference an SDKs sysroot from Nix using the `sdkroot` attribute on the SDK package. Note that it is preferable to use `SDKROOT` because the latter will be resolved to the highest SDK version of any available to your derivation.
```nix
stdenv.mkDerivation {
name = "libfoo-1.2.3";
# ...
env.PACKAGE_SPECIFIC_SDK_VAR = apple-sdk_10_15.sdkroot;
# or
buildInputs = [ apple-sdk_10_15 ];
postPatch = ''
export PACKAGE_SPECIFIC_SDK_VAR=$SDKROOT
'';
}
```
The following is a list of Xcode versions, the SDK version in nixpkgs, and the attribute to use to add it. Generally, only the last SDK release for a major version is packaged (each _x_ in 10._x_ until 10.15 is considered a major version).
| Xcode version | SDK version | nixpkgs attribute |
|--------------------|---------------------------------------------------|-------------------| |--------------------|---------------------------------------------------|-------------------|
| Varies by platform | 10.12.2 (x86_64-darwin)<br/>11.3 (aarch64-darwin) | `apple-sdk` | | Varies by platform | 10.12.2 (x86_64-darwin)<br/>11.3 (aarch64-darwin) | `apple-sdk` |
| 8.08.3.3 | 10.12.2 | `apple-sdk_10_12` | | 8.08.3.3 | 10.12.2 | `apple-sdk_10_12` |
@ -108,113 +102,182 @@ Some common issues when packaging software for Darwin:
| 15.015.4 | 14.4 | `apple-sdk_14` | | 15.015.4 | 14.4 | `apple-sdk_14` |
| 16.0 | 15.0 | `apple-sdk_15` | | 16.0 | 15.0 | `apple-sdk_15` |
To use a non-default SDK, add it to your build inputs.
#### Darwin Default SDK versions {#sec-darwin-troubleshooting-darwin-defaults}
The current default versions of the deployment target (minimum version) and SDK are indicated by Darwin-specific attributes on the platform. Because of the ways that minimum version and SDK can be changed that are not visible to Nix, they should be treated as lower bounds.
If you need to parameterize over a specific version, create a function that takes the version as a parameter instead of relying on these attributes.
- `darwinMinVersion` defaults to 10.12 on x86_64-darwin and 11.0 on aarch64-darwin.
It sets the default deployment target.
- `darwinSdkVersion` defaults to 10.12 on x86-64-darwin and 11.0 on aarch64-darwin.
Only the major version determines the SDK version, resulting in the 10.12.2 and 11.3 SDKs being used on these platforms respectively.
#### `xcrun` cannot find a binary {#sec-darwin-troubleshooting-xcrun}
`xcrun` searches `PATH` and the SDKs toolchain for binaries to run.
If it cannot find a required binary, it will fail. When that happens, add the package for that binary to your derivations `nativeBuildInputs` (or `nativeCheckInputs` if the failure is happening when running tests).
```nix ```nix
stdenv.mkDerivation { stdenv.mkDerivation {
name = "libfoo-1.2.3"; name = "libfoo-1.2.3";
# ... # ...
buildInputs = [ apple-sdk_15 ]; # Uses the 15.0 SDK instead of the default SDK for the platform. nativeBuildInputs = [ bison ];
} buildCommand = ''
``` xcrun bison foo.y # produces foo.tab.c
If your derivation has multiple SDKs its inputs (e.g., because they have been propagated by its dependencies), it will use the highest SDK version available.
```nix
stdenv.mkDerivation {
name = "libfoo-1.2.3"; # Upstream specifies that it needs Xcode 12 to build, so use the 11.3 SDK.
# ... # ...
buildInputs = [ apple-sdk_11 ]; '';
nativeBuildInputs = [ swift ]; # Propagates the 13.3 SDK, so the 13.3 SDK package will be used instead of the 11.3 SDK.
} }
``` ```
- When a package indicates a minimum supported version, also called the deployment target, you can set it in your derivation using `darwinMinVersionHook`. If you need to set a minimum version higher than the default SDK, you should also add the corresponding SDK to your `buildInputs`. #### Package requires `xcodebuild` {#sec-darwin-troubleshooting-xcodebuild}
The deployment target controls how Darwin handles availability and access to some APIs. In most cases, if a deployment target is newer than the first availability of an API, that API will be linked directly. Otherwise, the API will be weakly linked and checked at runtime. The xcbuild package provides an `xcodebuild` command for packages that really depend on Xcode.
This replacement is not 100% compatible and may run into some issues, but it is able to build many packages.
To use `xcodebuild`, add `xcbuildHook` to your packages `nativeBuildInputs`.
It will provide a `buildPhase` for your derivation.
You can use `xcbuildFlags` to specify flags to `xcodebuild` such as the required schema.
If a schema has spaces in its name, you must set `__structuredAttrs` to `true`.
See MoltenVK for an example of setting up xcbuild.
```nix ```nix
stdenv.mkDerivation { stdenv.mkDerivation {
name = "libfoo-1.2.3"; # Upstream specifies the minimum supported version as 12.5. name = "libfoo-1.2.3";
buildInputs = [ (darwinMinVersionHook "12.5") ]; xcbuildFlags = [
"-configuration"
"Release"
"-project"
"libfoo-project.xcodeproj"
"-scheme"
"libfoo Package (macOS only)"
];
__structuredAttrs = true;
} }
``` ```
If your derivation has multiple versions of this hook in its inputs (e.g., because it has been propagated by one of your dependencies), it will use the highest deployment target available. ##### Fixing absolute paths to `xcodebuild`, `xcrun`, and `PlistBuddy` {#sec-darwin-troubleshooting-xcodebuild-absolute-paths}
Many build systems hardcode the absolute paths to `xcodebuild`, `xcrun`, and `PlistBuddy` as `/usr/bin/xcodebuild`, `/usr/bin/xcrun`, and `/usr/libexec/PlistBuddy` respectively.
These paths will need to be replaced with relative paths and the xcbuild package if `xcodebuild` or `PListBuddy` are used.
```nix ```nix
stdenv.mkDerivation { stdenv.mkDerivation {
name = "libfoo-1.2.3"; # Upstream specifies the minimum supported version as 10.15. name = "libfoo-1.2.3";
buildInputs = [ qt6.qtbase (darwinMinVersionHook "10.15") ]; postPatch = ''
} subsituteInPlace Makefile \
# Qt 6 specifies a minimum version of 12.0, so the minimum version resolves to 12.0. --replace-fail '/usr/bin/xcodebuild' 'xcodebuild' \
``` --replace-fail '/usr/bin/xcrun' 'xcrun' \
--replace-fail '/usr/bin/PListBuddy' 'PListBuddy'
'';
- You should rely on the default SDK when possible. If a package specifies a required SDK version, use that version (e.g., libuv requires 11.0, so it should use `apple-sdk_11`). When a package supports multiple SDKs, determine which SDK package to use based on the following rules of thumb:
- If a package supports multiple SDK versions, use the lowest supported SDK version by the package (but no lower than the default SDK). That ensures maximal platform compatibility for the package.
- If a package specifies a range of supported SDK versions _and_ a minimum supported version, assume the package is using availability checks to support the indicated minimum version. Add the highest supported SDK and a `darwinMinVersionHook` set to the minimum version supported by the upstream package.
Warning: Avoid using newer SDKs than an upstream package supports. When a binary is linked on Darwin, the SDK version used to build it is recorded in the binary. Runtime behavior can vary based on the SDK version, which may work fine but can also result in unexpected behavior or crashes when building with an unsupported SDK.
```nix
stdenv.mkDerivation {
name = "foo-1.2.3";
# ...
buildInputs = [ apple-sdk_15 (darwinMinVersionHook "10.15") ]; # Upstream builds with the 15.0 SDK but supports 10.15.
} }
``` ```
- Libraries that require a minimum version can propagate an appropriate SDK and `darwinMinVersionHook`. Derivations using that library will automatically use an appropriate SDK and minimum version. Even if the library builds with a newer SDK, it should propagate the minimum supported SDK. Derivations that need a newer SDK can add it to their `buildInputs`. #### How to use libiconv on Darwin {#sec-darwin-troubleshooting-libiconv}
The libiconv package is included in the SDK by default along with libresolv and libsbuf.
You do not need to do anything to use these packages. They are available automatically.
If your derivation needs the `iconv` binary, add the `libiconv` package to your `nativeBuildInputs` (or `nativeCheckInputs` for tests).
#### Library install name issues {#sec-darwin-troubleshooting-install-name}
Libraries on Darwin are usually linked with absolute paths.
This is determined by something called an “install name”, which is resolved at link time.
Sometimes packages will not set this correctly, causing binaries linking to it not to find their libraries at runtime.
This can be fixed by adding extra linker flags or by using `install_name_tool` to set it in `fixupPhase`.
##### Setting the install name via linker flags {#sec-darwin-troubleshooting-install-name-linker-flags}
```nix ```nix
stdenv.mkDerivation { stdenv.mkDerivation {
name = "libfoo-1.2.3"; name = "libfoo-1.2.3";
# ... # ...
buildInputs = [ apple-sdk_15 ]; # Upstream builds with the 15.0 SDK but supports 10.15. makeFlags = lib.optional stdenv.hostPlatform.isDarwin "LDFLAGS=-Wl,-install_name,$(out)/lib/libfoo.dylib";
propagatedBuildInputs = [ apple-sdk_10_15 (darwinMinVersionHook "10.15") ];
}
# ...
stdenv.mkDerivation {
name = "bar-1.2.3";
# ...
buildInputs = [ libfoo ]; # Builds with the 10.15 SDK
}
# ...
stdenv.mkDerivation {
name = "baz-1.2.3";
# ...
buildInputs = [ apple-sdk_12 libfoo ]; # Builds with the 12.3 SDK
} }
``` ```
- Many SDK libraries and frameworks use text-based stubs to link against system libraries and frameworks, but several are built from source (typically corresponding to the source releases for the latest release of macOS). Several of these are propagated to your package automatically. They can be accessed via the `darwin` package set along with others that are not propagated by default. ##### Setting the install name using `install_name_tool` {#sec-darwin-troubleshooting-install-name-install_name_tool}
- libiconv ```nix
- libresolv stdenv.mkDerivation {
- libsbuf name = "libfoo-1.2.3";
# ...
postFixup = ''
# `-id <install_name>` takes the install name. The last parameter is the path to the library.
${stdenv.cc.targetPrefix}install_name_tool -id "$out/lib/libfoo.dylib" "$out/lib/libfoo.dylib"
'';
}
```
Other common libraries are available in Darwin-specific versions with modifications from Apple. Note that these packages may be made the default on Darwin in the future. Even if libraries are linked using absolute paths and resolved via their install name correctly, tests in `checkPhase` can sometimes fail to run binaries because they are linked against libraries that have not yet been installed.
This can usually be solved by running the tests after the `installPhase` or by using `DYLD_LIBRARY_PATH` (see {manpage}`dyld(1)` for more on setting `DYLD_LIBRARY_PATH`).
- ICU (compatible with the top-level icu package, but it also provides `libicucore.B.dylib` with an ABI compatible with the Darwin system version) ##### Setting the install name using `fixDarwinDylibNames` hook {#sec-darwin-troubleshooting-install-name-fixDarwinDylibNames}
- libpcap (compatible with the top-level libpcap, but it includes Darwin-specific extensions)
- The legacy SDKs packages are still available in the `darwin` package set under their existing names, but all packages in these SDKs (frameworks, libraries, etc) are stub packages for evaluation compatibility. If your package has numerous dylibs needing fixed, while it is preferable to fix the issue in the packages build, you can update them all by adding the `fixDarwinDylibNames` hook to your `nativeBuildInputs`.
This hook will scan your packages outputs for dylibs and correct their install names.
Note that if any binaries in your outputs linked those dylibs, you may need to use `install_name_tool` to replace references to them with the correct paths.
In most cases, a derivation can be updated by deleting all of its SDK inputs (frameworks, libraries, etc). If you had to override the SDK, see below for how to do that using the new SDK pattern. If your derivation depends on the layout of the old frameworks or other internal details, you have more work to do. #### Propagating an SDK (advanced, compilers-only) {#sec-darwin-troubleshooting-propagating-sdks}
When a package depended on the location of frameworks, references to those framework packages can usually be replaced with `${apple-sdk.sdkroot}/System` or `$SDKROOT/System`. For example, if you substituted `${darwin.apple_sdk.frameworks.OpenGL}/Library/Frameworks/OpenGL.framework` in your derivation, you should replace it with `${apple-sdk.sdkroot}/System/Library/Frameworks/OpenGL.framework` or `$SDKROOT/System/Library/Frameworks`. The latter is preferred because it supports using the SDK that is resolved when multiple SDKs are propagated (see above). The SDK is a package, and it can be propagated.
`darwinMinVersionHook` with a version specified can also be propagated.
However, most packages should *not* do this.
The exception is compilers.
When you propagate an SDK, it becomes part of your derivations public API, and changing the SDK or removing it can be a breaking change.
That is why propagating it is only recommended for compilers.
Note: the new SDK pattern uses the name `apple-sdk` to better align with nixpkgs naming conventions. The old SDK pattern uses `apple_sdk`. When authoring a compiler derivation, propagate the SDK only for the ways you expect users to use your compiler.
Depending on your expected use cases, you may have to do one or all of these.
- There are two legacy patterns that are being phased out. These patterns were used in the past to change the SDK version. They have been reimplemented to use the `apple-sdk` packages. - Put it in `depsTargetTargetPropagated` when your compiler is expected to be added to `nativeBuildInputs`.
That will ensure the SDK is effectively part of the target derivations `buildInputs`.
- If your compiler uses a hook, put it in the hooks `depsTargetTargetPropagated` instead.
The effect should be the same as the above.
- If your package uses the builder pattern, update your builder to add the SDK to the derivations `buildInputs`.
- `pkgs.darwin.apple_sdk_11_0.callPackage` - this pattern was used to provide frameworks from the 11.0 SDK. It now adds the `apple-sdk_11` package to your derivations build inputs. If youre not sure whether to propagate an SDK, dont.
- `overrideSDK` - this stdenv adapter would try to replace the frameworks used by your derivation and its transitive dependencies. It now adds the `apple-sdk_11` package for `11.0` or the `apple-sdk_12` package for `12.3`. If `darwinMinVersion` is specified, it will add `darwinMinVersionHook` with the specified minimum version. No other SDK versions are supported. If your package is a compiler or language, and youre not sure, ask @NixOS/darwin-maintainers for help deciding.
- Darwin supports cross-compilation between Darwin platforms. Cross-compilation from Linux is not currently supported but may be supported in the future. To cross-compile to Darwin, you can set `crossSystem` or use one of the Darwin systems in `pkgsCross`. The `darwinMinVersionHook` and the SDKs support cross-compilation. If you need to specify a different SDK version for a `depsBuildBuild` compiler, add it to your `nativeBuildInputs`. ### Dealing with `darwin.apple_sdk.frameworks` {#sec-darwin-legacy-frameworks}
You may see references to `darwin.apple_sdk.frameworks`.
This is the legacy SDK pattern, and it is being phased out.
All packages in `darwin.apple_sdk`, `darwin.apple_sdk_11_0`, and `darwin.apple_sdk_12_3` are stubs that do nothing.
If your derivation references them, you can delete them. The default SDK should be enough to build your package.
Note: the new SDK pattern uses the name `apple-sdk` to better align with Nixpkgs naming conventions.
The legacy SDK pattern uses `apple_sdk`.
You always know you are using the old SDK pattern if the name is `apple_sdk`.
Some derivations may depend on the location of frameworks in those old packages.
To update your derivation to find them in the new SDK, use `$SDKROOT` instead in `preConfigure`.
For example, if you substitute `${darwin.apple_sdk.frameworks.OpenGL}/Library/Frameworks/OpenGL.framework` in `postPatch`, replace it with `$SDKROOT/System/Library/Frameworks/OpenGL.framework` in `preConfigure`.
Note that if your derivation is changing a system path (such as `/System/Library/Frameworks/OpenGL.framework`), you may be able to remove the path.
Compilers and binutils targeting Darwin look for system paths in the SDK sysroot.
Some of them (such as Zig or `bindgen` for Rust) depend on it.
#### Updating legacy SDK overrides {#sec-darwin-legacy-frameworks-overrides}
The legacy SDK provided two ways of overriding the default SDK.
These are both being phased out along with the legacy SDKs.
They have been updated to set up the new SDK for you, but you should replace them with doing that directly.
- `pkgs.darwin.apple_sdk_11_0.callPackage` - this pattern was used to provide frameworks from the 11.0 SDK.
It now adds the `apple-sdk_11` package to your derivations build inputs.
- `overrideSDK` - this stdenv adapter would try to replace the frameworks used by your derivation and its transitive dependencies.
It now adds the `apple-sdk_11` package for `11.0` or the `apple-sdk_12` package for `12.3`.
If `darwinMinVersion` is specified, it will add `darwinMinVersionHook` with the specified minimum version.
No other SDK versions are supported.
### Darwin Cross-Compilation {#sec-darwin-legacy-cross-compilation}
Darwin supports cross-compilation between Darwin platforms.
Cross-compilation from Linux is not currently supported but may be supported in the future.
To cross-compile to Darwin, you can set `crossSystem` or use one of the Darwin systems in `pkgsCross`.
The `darwinMinVersionHook` and the SDKs support cross-compilation.
If you need to specify a different SDK version for a `depsBuildBuild` compiler, add it to your `nativeBuildInputs`.
```nix ```nix
stdenv.mkDerivation { stdenv.mkDerivation {
@ -225,7 +288,7 @@ Some common issues when packaging software for Darwin:
buildInputs = [ apple-sdk_13 ]; buildInputs = [ apple-sdk_13 ];
depsTargetTargetPropagated = [ apple-sdk_14 ]; depsTargetTargetPropagated = [ apple-sdk_14 ];
} }
# The build-build clang will use the 12.3 SDK while the package build itself will use the 13.3 SDK. # The build-build `clang` will use the 12.3 SDK while the package build itself will use the 13.3 SDK.
# Derivations that add this package as an input will have the 14.4 SDK propagated to them. # Derivations that add this package as an input will have the 14.4 SDK propagated to them.
``` ```
@ -235,9 +298,5 @@ Some common issues when packaging software for Darwin:
- `DEVELOPER_DIR` and `MACOSX_DEPLOYMENT_TARGET` for the host platform; and - `DEVELOPER_DIR` and `MACOSX_DEPLOYMENT_TARGET` for the host platform; and
- `DEVELOPER_DIR_FOR_TARGET` and `MACOSX_DEPLOYMENT_TARGET_FOR_TARGET` for the build platform. - `DEVELOPER_DIR_FOR_TARGET` and `MACOSX_DEPLOYMENT_TARGET_FOR_TARGET` for the build platform.
In static compilation situations, it is possible for the build and host platform to be the same platform but have different SDKs with the same version (one dynamic and one static). cc-wrapper takes care of handling this distinction. In static compilation situations, it is possible for the build and host platform to be the same platform but have different SDKs with the same version (one dynamic and one static).
cc-wrapper and bintools-wrapper take care of handling this distinction.
- The current default versions of the deployment target (minimum version) and SDK are indicated by Darwin-specific attributes on the platform. Because of the ways that minimum version and SDK can be changed that are not visible to Nix, they should be treated as lower bounds. If you need to parameterize over a specific version, create a function that takes the version as a parameter instead of relying on these attributes.
- `darwinMinVersion` defaults to 10.12 on x86_64-darwin and 11.0 on aarch64-darwin. It sets the default `MACOSX_DEPLOYMENT_TARGET`.
- `darwinSdkVersion` defaults to 10.12 on x86-64-darwin and 11.0 on aarch64-darwin. Only the major version determines the SDK version, resulting in the 10.12.2 and 11.3 SDKs being used on these platforms respectively.

View file

@ -1,2 +1,2 @@
# Expose the minimum required version for evaluating Nixpkgs # Expose the minimum required version for evaluating Nixpkgs
"2.3" "2.3.17"

View file

@ -175,3 +175,54 @@ for further information.
# nixpkgs-merge-bot # nixpkgs-merge-bot
To streamline autoupdates, leverage the nixpkgs-merge-bot by commenting `@NixOS/nixpkgs-merge-bot merge` if the package resides in pkgs-by-name and the commenter is among the package maintainers. The bot ensures that all ofborg checks, except for darwin, are successfully completed before merging the pull request. Should the checks still be underway, the bot patiently waits for ofborg to finish before attempting the merge again. To streamline autoupdates, leverage the nixpkgs-merge-bot by commenting `@NixOS/nixpkgs-merge-bot merge` if the package resides in pkgs-by-name and the commenter is among the package maintainers. The bot ensures that all ofborg checks, except for darwin, are successfully completed before merging the pull request. Should the checks still be underway, the bot patiently waits for ofborg to finish before attempting the merge again.
# Guidelines for Committers
When merging pull requests, care must be taken to reduce impact to the `master`
branch. If a commit breaks evaluation, it will affect Ofborg evaluation results
in other pull requests and block Hydra CI, thus introducing chaos to our
workflow.
One approach to avoid merging such problematic changes is to wait for
successful Ofborg evaluation. Additionally, using tools like
[nixpkgs-review](https://github.com/Mic92/nixpkgs-review) can help spot issues
early, before Ofborg finishes evaluation.
## Breaking changes
In general breaking changes to `master` and `staging` branches are permitted,
as long as they are documented in the release notes. Though restrictions might
apply towards the end of a NixOS release cycle, due to our feature freeze
mechanism. This is to avoid large-scale breakages shortly before and during
a Zero Hydra Failures (ZHF) campaign. These restrictions also intend to
decrease the likelihood of a delayed NixOS release. The feature freeze period
is documented in the announcement of each release schedule.
> These are some example changes and if they are considered a breaking change
> during a freeze period:
>
> - `foo: 1.2.3 -> 1.2.4` - Assuming this package follows semantic versioning
> and none of its dependent packages fail to build because of this change, it
> can be safely merged. Otherwise, if it can be confirmed that there is no
> major change in its functionality or API, but only adding new features or
> fixing bugs, it
> can also be merged.
> - `unmaintained-software: drop` - If this PR removes a leaf package or the
> removal doesn't otherwise break other packages, it can be merged.
> - `cool-tool: rename from fancy-tool` - As long as this PR replaces all
> references to the old attribute name with the new name and adds an alias,
> it can be merged.
> - `libpopular: 4.3.2 -> 5.0.0` - If this PR would trigger many rebuilds
> and/or target `staging`, it should probably be delayed until after the
> freeze-period is over. Alternatively, if this PR is for a popular package
> and doesn't cause many rebuilds, it should also be delayed to reduce risk
> of breakage. If a PR includes important changes, such as security fixes, it
> should be brought up to
> release managers.
> - `nixos/transmission: refactor` - If this PR adjusts the type, default value
> or effect of options in the NixOS module, so that users must rewrite their
> configuration to keep the current behavior unchanged, it should not be
> merged, as we don't have enough time to collect user feedback and avoid
> possible breakage. However, it should be accepted if the current behavior
> is
> considered broken and is fixed by the PR.

View file

@ -3536,6 +3536,12 @@
github = "scaredmushroom"; github = "scaredmushroom";
githubId = 45340040; githubId = 45340040;
}; };
caperren = {
name = "Corwin Perren";
email = "caperren@gmail.com";
github = "caperren";
githubId = 4566591;
};
CaptainJawZ = { CaptainJawZ = {
email = "CaptainJawZ@outlook.com"; email = "CaptainJawZ@outlook.com";
name = "Danilo Reyes"; name = "Danilo Reyes";
@ -5126,6 +5132,11 @@
githubId = 130508846; githubId = 130508846;
name = "Elliot Cameron"; name = "Elliot Cameron";
}; };
deadbaed = {
name = "Philippe Loctaux";
github = "deadbaed";
githubId = 8809909;
};
dearrude = { dearrude = {
name = "Ebrahim Nejati"; name = "Ebrahim Nejati";
email = "dearrude@tfwno.gf"; email = "dearrude@tfwno.gf";
@ -12538,6 +12549,12 @@
githubId = 40217331; githubId = 40217331;
name = "LizeLive"; name = "LizeLive";
}; };
llakala = {
email = "elevenaka11@gmail.com";
github = "llakala";
githubId = 78693624;
name = "llakala";
};
lluchs = { lluchs = {
email = "lukas.werling@gmail.com"; email = "lukas.werling@gmail.com";
github = "lluchs"; github = "lluchs";
@ -13498,6 +13515,12 @@
githubId = 322214; githubId = 322214;
name = "Mathnerd314"; name = "Mathnerd314";
}; };
mathstlouis = {
email = "matfino+gh@gmail.com";
github = "mathstlouis";
githubId = 35696151;
name = "mathstlouis";
};
matklad = { matklad = {
email = "aleksey.kladov@gmail.com"; email = "aleksey.kladov@gmail.com";
github = "matklad"; github = "matklad";
@ -18596,6 +18619,16 @@
{ fingerprint = "C0A7 A9BB 115B C857 4D75 EA99 BBB7 A680 1DF1 E03F"; } { fingerprint = "C0A7 A9BB 115B C857 4D75 EA99 BBB7 A680 1DF1 E03F"; }
]; ];
}; };
ritiek = {
name = "Ritiek Malhotra";
email = "ritiekmalhotra123@gmail.com";
matrix = "@ritiek:matrix.org";
github = "ritiek";
githubId = 20314742;
keys = [
{ fingerprint = "66FF 6099 7B04 845F F4C0 CB4F EB6F C9F9 FC96 4257"; }
];
};
rixed = { rixed = {
email = "rixed-github@happyleptic.org"; email = "rixed-github@happyleptic.org";
github = "rixed"; github = "rixed";
@ -18638,6 +18671,12 @@
githubId = 82817; githubId = 82817;
name = "Robert Kreuzer"; name = "Robert Kreuzer";
}; };
rksm = {
email = "robert@kra.hn";
github = "rksm";
githubId = 467450;
name = "Robert Krahn";
};
rlupton20 = { rlupton20 = {
email = "richard.lupton@gmail.com"; email = "richard.lupton@gmail.com";
github = "rlupton20"; github = "rlupton20";
@ -18732,6 +18771,13 @@
githubId = 521306; githubId = 521306;
name = "Rob Glossop"; name = "Rob Glossop";
}; };
robinkrahl = {
email = "nix@ireas.org";
github = "robinkrahl";
githubId = 165115;
keys = [ { fingerprint = "EC7E F0F9 B681 4C24 6236 3842 B755 6972 702A FD45"; } ];
name = "Robin Krahl";
};
roblabla = { roblabla = {
email = "robinlambertz+dev@gmail.com"; email = "robinlambertz+dev@gmail.com";
github = "roblabla"; github = "roblabla";
@ -21761,6 +21807,12 @@
githubId = 57180880; githubId = 57180880;
name = "Ansh Tyagi"; name = "Ansh Tyagi";
}; };
therealgramdalf = {
email = "gramdalftech@gmail.com";
github = "TheRealGramdalf";
githubId = 79593869;
name = "Gramdalf";
};
therealr5 = { therealr5 = {
email = "rouven@rfive.de"; email = "rouven@rfive.de";
github = "therealr5"; github = "therealr5";
@ -21891,6 +21943,12 @@
githubId = 1391883; githubId = 1391883;
name = "Tom Hall"; name = "Tom Hall";
}; };
thtrf = {
email = "thtrf@proton.me";
github = "thtrf";
githubId = 82712122;
name = "thtrf";
};
Thunderbottom = { Thunderbottom = {
email = "chinmaydpai@gmail.com"; email = "chinmaydpai@gmail.com";
github = "Thunderbottom"; github = "Thunderbottom";

View file

@ -4,7 +4,7 @@
# - pkgs/development/lua-modules/updater/updater.py # - pkgs/development/lua-modules/updater/updater.py
# format: # format:
# $ nix run nixpkgs#black maintainers/scripts/pluginupdate.py # $ nix run nixpkgs#ruff maintainers/scripts/pluginupdate.py
# type-check: # type-check:
# $ nix run nixpkgs#python3.pkgs.mypy maintainers/scripts/pluginupdate.py # $ nix run nixpkgs#python3.pkgs.mypy maintainers/scripts/pluginupdate.py
# linted: # linted:
@ -142,7 +142,7 @@ class Repo:
return loaded return loaded
def prefetch(self, ref: Optional[str]) -> str: def prefetch(self, ref: Optional[str]) -> str:
print("Prefetching %s", self.uri) log.info("Prefetching %s", self.uri)
loaded = self._prefetch(ref) loaded = self._prefetch(ref)
return loaded["sha256"] return loaded["sha256"]
@ -195,7 +195,7 @@ class RepoGitHub(Repo):
xml = req.read() xml = req.read()
# Filter out illegal XML characters # Filter out illegal XML characters
illegal_xml_regex = re.compile(b"[\x00-\x08\x0B-\x0C\x0E-\x1F\x7F]") illegal_xml_regex = re.compile(b"[\x00-\x08\x0b-\x0c\x0e-\x1f\x7f]")
xml = illegal_xml_regex.sub(b"", xml) xml = illegal_xml_regex.sub(b"", xml)
root = ET.fromstring(xml) root = ET.fromstring(xml)
@ -256,13 +256,7 @@ class PluginDesc:
@property @property
def name(self): def name(self):
if self.alias is None: return self.alias or self.repo.name
return self.repo.name
else:
return self.alias
def __lt__(self, other):
return self.repo.name < other.repo.name
@staticmethod @staticmethod
def load_from_csv(config: FetchConfig, row: Dict[str, str]) -> "PluginDesc": def load_from_csv(config: FetchConfig, row: Dict[str, str]) -> "PluginDesc":
@ -270,7 +264,12 @@ class PluginDesc:
branch = row["branch"] branch = row["branch"]
repo = make_repo(row["repo"], branch.strip()) repo = make_repo(row["repo"], branch.strip())
repo.token = config.github_token repo.token = config.github_token
return PluginDesc(repo, branch.strip(), row["alias"]) return PluginDesc(
repo,
branch.strip(),
# alias is usually an empty string
row["alias"] if row["alias"] else None,
)
@staticmethod @staticmethod
def load_from_string(config: FetchConfig, line: str) -> "PluginDesc": def load_from_string(config: FetchConfig, line: str) -> "PluginDesc":
@ -328,12 +327,11 @@ def load_plugins_from_csv(
return plugins return plugins
def run_nix_expr(expr, nixpkgs: str, **args): def run_nix_expr(expr, nixpkgs: str, **args):
''' """
:param expr nix expression to fetch current plugins :param expr nix expression to fetch current plugins
:param nixpkgs Path towards a nixpkgs checkout :param nixpkgs Path towards a nixpkgs checkout
''' """
with CleanEnvironment(nixpkgs) as nix_path: with CleanEnvironment(nixpkgs) as nix_path:
cmd = [ cmd = [
"nix", "nix",
@ -382,16 +380,14 @@ class Editor:
fetch_config = FetchConfig(args.proc, args.github_token) fetch_config = FetchConfig(args.proc, args.github_token)
editor = self editor = self
for plugin_line in args.add_plugins: for plugin_line in args.add_plugins:
log.debug("using plugin_line", plugin_line) log.debug("using plugin_line %s", plugin_line)
pdesc = PluginDesc.load_from_string(fetch_config, plugin_line) pdesc = PluginDesc.load_from_string(fetch_config, plugin_line)
log.debug("loaded as pdesc", pdesc) log.debug("loaded as pdesc %s", pdesc)
append = [pdesc] append = [pdesc]
editor.rewrite_input( editor.rewrite_input(
fetch_config, args.input_file, editor.deprecated, append=append fetch_config, args.input_file, editor.deprecated, append=append
) )
plugin, _ = prefetch_plugin( plugin, _ = prefetch_plugin(pdesc)
pdesc,
)
autocommit = not args.no_commit autocommit = not args.no_commit
if autocommit: if autocommit:
commit( commit(
@ -406,9 +402,9 @@ class Editor:
# Expects arguments generated by 'update' subparser # Expects arguments generated by 'update' subparser
def update(self, args): def update(self, args):
"""CSV spec""" """CSV spec"""
print("the update member function should be overriden in subclasses") print("the update member function should be overridden in subclasses")
def get_current_plugins(self, nixpkgs) -> List[Plugin]: def get_current_plugins(self, nixpkgs: str) -> List[Plugin]:
"""To fill the cache""" """To fill the cache"""
data = run_nix_expr(self.get_plugins, nixpkgs) data = run_nix_expr(self.get_plugins, nixpkgs)
plugins = [] plugins = []
@ -440,6 +436,7 @@ class Editor:
plugins, redirects = check_results(results) plugins, redirects = check_results(results)
plugins = sorted(plugins, key=lambda v: v[1].normalized_name)
self.generate_nix(plugins, outfile) self.generate_nix(plugins, outfile)
return redirects return redirects
@ -559,6 +556,7 @@ class Editor:
parser = self.create_parser() parser = self.create_parser()
args = parser.parse_args() args = parser.parse_args()
command = args.command or "update" command = args.command or "update"
logging.basicConfig()
log.setLevel(LOG_LEVELS[args.debug]) log.setLevel(LOG_LEVELS[args.debug])
log.info("Chose to run command: %s", command) log.info("Chose to run command: %s", command)
self.nixpkgs = args.nixpkgs self.nixpkgs = args.nixpkgs
@ -591,25 +589,24 @@ def prefetch_plugin(
p: PluginDesc, p: PluginDesc,
cache: "Optional[Cache]" = None, cache: "Optional[Cache]" = None,
) -> Tuple[Plugin, Optional[Repo]]: ) -> Tuple[Plugin, Optional[Repo]]:
repo, branch, alias = p.repo, p.branch, p.alias
name = alias or p.repo.name
commit = None commit = None
log.info(f"Fetching last commit for plugin {name} from {repo.uri}@{branch}") log.info(f"Fetching last commit for plugin {p.name} from {p.repo.uri}@{p.branch}")
commit, date = repo.latest_commit() commit, date = p.repo.latest_commit()
cached_plugin = cache[commit] if cache else None cached_plugin = cache[commit] if cache else None
if cached_plugin is not None: if cached_plugin is not None:
log.debug("Cache hit !") log.debug(f"Cache hit for {p.name}!")
cached_plugin.name = name cached_plugin.name = p.name
cached_plugin.date = date cached_plugin.date = date
return cached_plugin, repo.redirect return cached_plugin, p.repo.redirect
has_submodules = repo.has_submodules() has_submodules = p.repo.has_submodules()
log.debug(f"prefetch {name}") log.debug(f"prefetch {p.name}")
sha256 = repo.prefetch(commit) sha256 = p.repo.prefetch(commit)
return ( return (
Plugin(name, commit, has_submodules, sha256, date=date), Plugin(p.name, commit, has_submodules, sha256, date=date),
repo.redirect, p.repo.redirect,
) )
@ -624,7 +621,7 @@ def print_download_error(plugin: PluginDesc, ex: Exception):
def check_results( def check_results(
results: List[Tuple[PluginDesc, Union[Exception, Plugin], Optional[Repo]]] results: List[Tuple[PluginDesc, Union[Exception, Plugin], Optional[Repo]]],
) -> Tuple[List[Tuple[PluginDesc, Plugin]], Redirects]: ) -> Tuple[List[Tuple[PluginDesc, Plugin]], Redirects]:
""" """ """ """
failures: List[Tuple[PluginDesc, Exception]] = [] failures: List[Tuple[PluginDesc, Exception]] = []
@ -642,10 +639,9 @@ def check_results(
print(f"{len(results) - len(failures)} plugins were checked", end="") print(f"{len(results) - len(failures)} plugins were checked", end="")
if len(failures) == 0: if len(failures) == 0:
print()
return plugins, redirects return plugins, redirects
else: else:
print(f", {len(failures)} plugin(s) could not be downloaded:\n") log.error(f", {len(failures)} plugin(s) could not be downloaded:\n")
for plugin, exception in failures: for plugin, exception in failures:
print_download_error(plugin, exception) print_download_error(plugin, exception)
@ -738,10 +734,7 @@ def rewrite_input(
append: List[PluginDesc] = [], append: List[PluginDesc] = [],
): ):
log.info("Rewriting input file %s", input_file) log.info("Rewriting input file %s", input_file)
plugins = load_plugins_from_csv( plugins = load_plugins_from_csv(config, input_file)
config,
input_file,
)
plugins.extend(append) plugins.extend(append)
@ -753,15 +746,25 @@ def rewrite_input(
deprecations = json.load(f) deprecations = json.load(f)
# TODO parallelize this step # TODO parallelize this step
for pdesc, new_repo in redirects.items(): for pdesc, new_repo in redirects.items():
log.info("Rewriting input file %s", input_file) log.info("Resolving deprecated plugin %s -> %s", pdesc.name, new_repo.name)
new_pdesc = PluginDesc(new_repo, pdesc.branch, pdesc.alias) new_pdesc = PluginDesc(new_repo, pdesc.branch, pdesc.alias)
old_plugin, _ = prefetch_plugin(pdesc) old_plugin, _ = prefetch_plugin(pdesc)
new_plugin, _ = prefetch_plugin(new_pdesc) new_plugin, _ = prefetch_plugin(new_pdesc)
if old_plugin.normalized_name != new_plugin.normalized_name: if old_plugin.normalized_name != new_plugin.normalized_name:
deprecations[old_plugin.normalized_name] = { deprecations[old_plugin.normalized_name] = {
"new": new_plugin.normalized_name, "new": new_plugin.normalized_name,
"date": cur_date_iso, "date": cur_date_iso,
} }
# remove plugin from index file, so we won't add it to deprecations again
for i, plugin in enumerate(plugins):
if plugin.name == pdesc.name:
plugins.pop(i)
break
plugins.append(new_pdesc)
with open(deprecated, "w") as f: with open(deprecated, "w") as f:
json.dump(deprecations, f, indent=4, sort_keys=True) json.dump(deprecations, f, indent=4, sort_keys=True)
f.write("\n") f.write("\n")
@ -772,7 +775,7 @@ def rewrite_input(
fieldnames = ["repo", "branch", "alias"] fieldnames = ["repo", "branch", "alias"]
writer = csv.DictWriter(f, fieldnames, dialect="unix", quoting=csv.QUOTE_NONE) writer = csv.DictWriter(f, fieldnames, dialect="unix", quoting=csv.QUOTE_NONE)
writer.writeheader() writer.writeheader()
for plugin in sorted(plugins): for plugin in sorted(plugins, key=lambda x: x.name):
writer.writerow(asdict(plugin)) writer.writerow(asdict(plugin))
@ -792,9 +795,11 @@ def update_plugins(editor: Editor, args):
log.info("Start updating plugins") log.info("Start updating plugins")
if args.proc > 1 and args.github_token == None: if args.proc > 1 and args.github_token == None:
log.warning("You have enabled parallel updates but haven't set a github token.\n" log.warning(
"You have enabled parallel updates but haven't set a github token.\n"
"You may be hit with `HTTP Error 429: too many requests` as a consequence." "You may be hit with `HTTP Error 429: too many requests` as a consequence."
"Either set --proc=1 or --github-token=YOUR_TOKEN. ") "Either set --proc=1 or --github-token=YOUR_TOKEN. "
)
fetch_config = FetchConfig(args.proc, args.github_token) fetch_config = FetchConfig(args.proc, args.github_token)
update = editor.get_update(args.input_file, args.outfile, fetch_config) update = editor.get_update(args.input_file, args.outfile, fetch_config)
@ -810,11 +815,9 @@ def update_plugins(editor: Editor, args):
if autocommit: if autocommit:
try: try:
repo = git.Repo(os.getcwd()) repo = git.Repo(os.getcwd())
updated = datetime.now(tz=UTC).strftime('%Y-%m-%d') updated = datetime.now(tz=UTC).strftime("%Y-%m-%d")
print(args.outfile) print(args.outfile)
commit(repo, commit(repo, f"{editor.attr_path}: update on {updated}", [args.outfile])
f"{editor.attr_path}: update on {updated}", [args.outfile]
)
except git.InvalidGitRepositoryError as e: except git.InvalidGitRepositoryError as e:
print(f"Not in a git repository: {e}", file=sys.stderr) print(f"Not in a git repository: {e}", file=sys.stderr)
sys.exit(1) sys.exit(1)

View file

@ -497,6 +497,19 @@ with lib.maintainers;
shortName = "Input-Output Global employees"; shortName = "Input-Output Global employees";
}; };
java = {
githubTeams = [ "java" ];
members = [
chayleaf
fliegendewurst
infinidoge
tomodachi94
];
shortName = "Java";
scope = "Maintainers of the Nixpkgs Java ecosystem (JDK, JVM, Java, Gradle, Maven, Ant, and adjacent projects)";
enableFeatureFreezePing = true;
};
jitsi = { jitsi = {
members = [ members = [
cleeyv cleeyv

View file

@ -109,6 +109,8 @@
- [Firefly-iii Data Importer](https://github.com/firefly-iii/data-importer), a data importer for Firefly-III. Available as [services.firefly-iii-data-importer](options.html#opt-services.firefly-iii-data-importer.enable). - [Firefly-iii Data Importer](https://github.com/firefly-iii/data-importer), a data importer for Firefly-III. Available as [services.firefly-iii-data-importer](options.html#opt-services.firefly-iii-data-importer.enable).
- [Dashy](https://dashy.to), an open source, highly customizable, easy to use, privacy-respecting dashboard app. Available as [services.dashy](options.html#opt-services.dashy).
- [QGroundControl], a ground station support and configuration manager for the PX4 and APM Flight Stacks. Available as [programs.qgroundcontrol](options.html#opt-programs.qgroundcontrol.enable). - [QGroundControl], a ground station support and configuration manager for the PX4 and APM Flight Stacks. Available as [programs.qgroundcontrol](options.html#opt-programs.qgroundcontrol.enable).
- [Eintopf](https://eintopf.info), a community event and calendar web application. Available as [services.eintopf](options.html#opt-services.eintopf.enable). - [Eintopf](https://eintopf.info), a community event and calendar web application. Available as [services.eintopf](options.html#opt-services.eintopf.enable).
@ -195,6 +197,8 @@
## Backward Incompatibilities {#sec-release-24.11-incompatibilities} ## Backward Incompatibilities {#sec-release-24.11-incompatibilities}
- Nixpkgs now requires Nix 2.3.17 or newer to allow for zstd compressed binary artifacts.
- The `sound` options have been removed or renamed, as they had a lot of unintended side effects. See [below](#sec-release-24.11-migration-sound) for details. - The `sound` options have been removed or renamed, as they had a lot of unintended side effects. See [below](#sec-release-24.11-migration-sound) for details.
- The NVIDIA driver no longer defaults to the proprietary kernel module with versions >= 560. You will need to manually set `hardware.nvidia.open` to select the proprietary or open modules. - The NVIDIA driver no longer defaults to the proprietary kernel module with versions >= 560. You will need to manually set `hardware.nvidia.open` to select the proprietary or open modules.

View file

@ -11,14 +11,12 @@ in
type = lib.types.bool; type = lib.types.bool;
default = false; default = false;
description = '' description = ''
Enables udev rules for Nitrokey devices. By default grants access Enables udev rules for Nitrokey devices.
to users in the "nitrokey" group. You may want to install the
nitrokey-app package, depending on your device and needs.
''; '';
}; };
}; };
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {
services.udev.packages = [ pkgs.libnitrokey ]; services.udev.packages = [ pkgs.nitrokey-udev-rules ];
}; };
} }

View file

@ -12,14 +12,19 @@ in
options.programs.localsend = { options.programs.localsend = {
enable = lib.mkEnableOption "localsend, an open source cross-platform alternative to AirDrop"; enable = lib.mkEnableOption "localsend, an open source cross-platform alternative to AirDrop";
openFirewall = lib.mkEnableOption "opening the firewall port ${toString firewallPort} for receiving files" // { package = lib.mkPackageOption pkgs "localsend" { };
openFirewall =
lib.mkEnableOption "opening the firewall port ${toString firewallPort} for receiving files"
// {
default = true; default = true;
}; };
}; };
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {
environment.systemPackages = [ pkgs.localsend ]; environment.systemPackages = [ cfg.package ];
networking.firewall.allowedTCPPorts = lib.optionals cfg.openFirewall [ firewallPort ]; networking.firewall.allowedTCPPorts = lib.optionals cfg.openFirewall [ firewallPort ];
networking.firewall.allowedUDPPorts = lib.optionals cfg.openFirewall [ firewallPort ];
}; };
meta.maintainers = with lib.maintainers; [ pandapip1 ]; meta.maintainers = with lib.maintainers; [ pandapip1 ];

View file

@ -101,7 +101,12 @@ in {
}; };
}; };
systemd.packages = [ cfg.package ]; systemd = {
packages = [ cfg.package ];
tmpfiles.rules = [
"d /etc/openvpn3/configs 0750 openvpn openvpn - -"
];
};
}; };
meta.maintainers = with lib.maintainers; [ shamilton progrm_jarvis ]; meta.maintainers = with lib.maintainers; [ shamilton progrm_jarvis ];

View file

@ -183,7 +183,6 @@ let
certToConfig = cert: data: let certToConfig = cert: data: let
acmeServer = data.server; acmeServer = data.server;
useDns = data.dnsProvider != null; useDns = data.dnsProvider != null;
useDnsOrS3 = useDns || data.s3Bucket != null;
destPath = "/var/lib/acme/${cert}"; destPath = "/var/lib/acme/${cert}";
selfsignedDeps = lib.optionals (cfg.preliminarySelfsigned) [ "acme-selfsigned-${cert}.service" ]; selfsignedDeps = lib.optionals (cfg.preliminarySelfsigned) [ "acme-selfsigned-${cert}.service" ];
@ -367,13 +366,11 @@ let
"/var/lib/acme/.lego/${cert}/${certDir}:/tmp/certificates" "/var/lib/acme/.lego/${cert}/${certDir}:/tmp/certificates"
]; ];
EnvironmentFile = lib.mkIf useDnsOrS3 data.environmentFile; EnvironmentFile = lib.mkIf (data.environmentFile != null) data.environmentFile;
Environment = lib.mkIf useDnsOrS3 Environment = lib.mapAttrsToList (k: v: ''"${k}=%d/${k}"'') data.credentialFiles;
(lib.mapAttrsToList (k: v: ''"${k}=%d/${k}"'') data.credentialFiles);
LoadCredential = lib.mkIf useDnsOrS3 LoadCredential = lib.mapAttrsToList (k: v: "${k}:${v}") data.credentialFiles;
(lib.mapAttrsToList (k: v: "${k}:${v}") data.credentialFiles);
# Run as root (Prefixed with +) # Run as root (Prefixed with +)
ExecStartPost = "+" + (pkgs.writeShellScript "acme-postrun" '' ExecStartPost = "+" + (pkgs.writeShellScript "acme-postrun" ''

View file

@ -95,7 +95,7 @@ in
after = ["network.target"]; after = ["network.target"];
wantedBy = ["multi-user.target"]; wantedBy = ["multi-user.target"];
script = '' script = ''
${fhsEnvExecutable} --dir ${cfg.dataDir} ${allowRemoteGuiRpcFlag} exec ${fhsEnvExecutable} --dir ${cfg.dataDir} ${allowRemoteGuiRpcFlag}
''; '';
serviceConfig = { serviceConfig = {
User = "boinc"; User = "boinc";

View file

@ -55,7 +55,12 @@ in
default = ""; default = "";
}; };
passwordFile = lib.mkOption { passwordFile = lib.mkOption {
type = lib.types.str; type = lib.types.path;
example = lib.literalExpression ''
pkgs.writeText "roundcube-postgres-passwd.txt" '''
hostname:port:database:username:password
'''
'';
description = '' description = ''
Password file for the postgresql connection. Password file for the postgresql connection.
Must be formatted according to PostgreSQL .pgpass standard (see https://www.postgresql.org/docs/current/libpq-pgpass.html) Must be formatted according to PostgreSQL .pgpass standard (see https://www.postgresql.org/docs/current/libpq-pgpass.html)

View file

@ -70,7 +70,7 @@ in
LoadCredential = "bot-password-file:${cfg.botPasswordFile}"; LoadCredential = "bot-password-file:${cfg.botPasswordFile}";
RestartSec = "10s"; RestartSec = "10s";
StateDirectory = "hebbot"; StateDirectory = "hebbot";
WorkingDirectory = "hebbot"; WorkingDirectory = "/var/lib/hebbot";
}; };
}; };
}; };

View file

@ -275,7 +275,7 @@ in
systemd.services.guix-daemon = { systemd.services.guix-daemon = {
environment = serviceEnv; environment = serviceEnv;
script = '' script = ''
${lib.getExe' package "guix-daemon"} \ exec ${lib.getExe' package "guix-daemon"} \
--build-users-group=${cfg.group} \ --build-users-group=${cfg.group} \
${lib.optionalString (cfg.substituters.urls != [ ]) ${lib.optionalString (cfg.substituters.urls != [ ])
"--substitute-urls='${lib.concatStringsSep " " cfg.substituters.urls}'"} \ "--substitute-urls='${lib.concatStringsSep " " cfg.substituters.urls}'"} \
@ -384,7 +384,7 @@ in
} }
''; '';
script = '' script = ''
${lib.getExe' package "guix"} publish \ exec ${lib.getExe' package "guix"} publish \
--user=${cfg.publish.user} --port=${builtins.toString cfg.publish.port} \ --user=${cfg.publish.user} --port=${builtins.toString cfg.publish.port} \
${lib.escapeShellArgs cfg.publish.extraArgs} ${lib.escapeShellArgs cfg.publish.extraArgs}
''; '';
@ -440,12 +440,10 @@ in
description = "Guix garbage collection"; description = "Guix garbage collection";
startAt = cfg.gc.dates; startAt = cfg.gc.dates;
script = '' script = ''
${lib.getExe' package "guix"} gc ${lib.escapeShellArgs cfg.gc.extraArgs} exec ${lib.getExe' package "guix"} gc ${lib.escapeShellArgs cfg.gc.extraArgs}
''; '';
serviceConfig = { serviceConfig = {
Type = "oneshot"; Type = "oneshot";
PrivateDevices = true; PrivateDevices = true;
PrivateNetwork = true; PrivateNetwork = true;
ProtectControlGroups = true; ProtectControlGroups = true;

View file

@ -1,7 +1,6 @@
{ config, pkgs, lib, ... }: { config, pkgs, lib, ... }:
let let
cfg = config.services.nzbget; cfg = config.services.nzbget;
pkg = pkgs.nzbget;
stateDir = "/var/lib/nzbget"; stateDir = "/var/lib/nzbget";
configFile = "${stateDir}/nzbget.conf"; configFile = "${stateDir}/nzbget.conf";
configOpts = lib.concatStringsSep " " (lib.mapAttrsToList (name: value: "-o ${name}=${lib.escapeShellArg (toStr value)}") cfg.settings); configOpts = lib.concatStringsSep " " (lib.mapAttrsToList (name: value: "-o ${name}=${lib.escapeShellArg (toStr value)}") cfg.settings);
@ -24,6 +23,8 @@ in
services.nzbget = { services.nzbget = {
enable = lib.mkEnableOption "NZBGet, for downloading files from news servers"; enable = lib.mkEnableOption "NZBGet, for downloading files from news servers";
package = lib.mkPackageOption pkgs "nzbget" { };
user = lib.mkOption { user = lib.mkOption {
type = lib.types.str; type = lib.types.str;
default = "nzbget"; default = "nzbget";
@ -64,8 +65,8 @@ in
InfoTarget = "screen"; InfoTarget = "screen";
DetailTarget = "screen"; DetailTarget = "screen";
# required paths # required paths
ConfigTemplate = "${pkg}/share/nzbget/nzbget.conf"; ConfigTemplate = "${cfg.package}/share/nzbget/nzbget.conf";
WebDir = "${pkg}/share/nzbget/webui"; WebDir = "${cfg.package}/share/nzbget/webui";
# nixos handles package updates # nixos handles package updates
UpdateCheck = "none"; UpdateCheck = "none";
}; };
@ -81,7 +82,7 @@ in
preStart = '' preStart = ''
if [ ! -f ${configFile} ]; then if [ ! -f ${configFile} ]; then
${pkgs.coreutils}/bin/install -m 0700 ${pkg}/share/nzbget/nzbget.conf ${configFile} ${pkgs.coreutils}/bin/install -m 0700 ${cfg.package}/share/nzbget/nzbget.conf ${configFile}
fi fi
''; '';
@ -92,8 +93,8 @@ in
Group = cfg.group; Group = cfg.group;
UMask = "0002"; UMask = "0002";
Restart = "on-failure"; Restart = "on-failure";
ExecStart = "${pkg}/bin/nzbget --server --configfile ${stateDir}/nzbget.conf ${configOpts}"; ExecStart = "${cfg.package}/bin/nzbget --server --configfile ${stateDir}/nzbget.conf ${configOpts}";
ExecStop = "${pkg}/bin/nzbget --quit"; ExecStop = "${cfg.package}/bin/nzbget --quit";
}; };
}; };

View file

@ -12,6 +12,8 @@ in {
on how to set up a reverse proxy on how to set up a reverse proxy
''; '';
package = lib.mkPackageOption pkgs "ombi" { };
dataDir = lib.mkOption { dataDir = lib.mkOption {
type = lib.types.str; type = lib.types.str;
default = "/var/lib/ombi"; default = "/var/lib/ombi";
@ -58,7 +60,7 @@ in {
Type = "simple"; Type = "simple";
User = cfg.user; User = cfg.user;
Group = cfg.group; Group = cfg.group;
ExecStart = "${pkgs.ombi}/bin/Ombi --storage '${cfg.dataDir}' --host 'http://*:${toString cfg.port}'"; ExecStart = "${lib.getExe cfg.package} --storage '${cfg.dataDir}' --host 'http://*:${toString cfg.port}'";
Restart = "on-failure"; Restart = "on-failure";
}; };
}; };

View file

@ -1,37 +1,31 @@
{ config, lib, pkgs, ... }: { config, lib, pkgs, ... }:
with lib;
let let
cfg = config.services.teamviewer; cfg = config.services.teamviewer;
in in
{ {
###### interface
options = { options = {
services.teamviewer = {
services.teamviewer.enable = mkEnableOption "TeamViewer daemon"; enable = lib.mkEnableOption "TeamViewer daemon & system package";
package = lib.mkPackageOption pkgs "teamviewer" { };
};
}; };
###### implementation config = lib.mkIf (cfg.enable) {
environment.systemPackages = [ cfg.package ];
config = mkIf (cfg.enable) { services.dbus.packages = [ cfg.package ];
environment.systemPackages = [ pkgs.teamviewer ];
services.dbus.packages = [ pkgs.teamviewer ];
systemd.services.teamviewerd = { systemd.services.teamviewerd = {
description = "TeamViewer remote control daemon"; description = "TeamViewer remote control daemon";
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
wants = [ "network-online.target" ]; wants = [ "network-online.target" ];
after = [ "network-online.target" "network.target" "dbus.service" ]; after = [
"network-online.target"
"network.target"
"dbus.service"
];
requires = [ "dbus.service" ]; requires = [ "dbus.service" ];
preStart = "mkdir -pv /var/lib/teamviewer /var/log/teamviewer"; preStart = "mkdir -pv /var/lib/teamviewer /var/log/teamviewer";
@ -39,12 +33,11 @@ in
startLimitBurst = 10; startLimitBurst = 10;
serviceConfig = { serviceConfig = {
Type = "simple"; Type = "simple";
ExecStart = "${pkgs.teamviewer}/bin/teamviewerd -f"; ExecStart = "${cfg.package}/bin/teamviewerd -f";
PIDFile = "/run/teamviewerd.pid"; PIDFile = "/run/teamviewerd.pid";
ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID"; ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
Restart = "on-abort"; Restart = "on-abort";
}; };
}; };
}; };
} }

View file

@ -526,6 +526,7 @@ in
ExecStartPre = "-rm /var/cache/frigate/*.mp4"; ExecStartPre = "-rm /var/cache/frigate/*.mp4";
ExecStart = "${cfg.package.python.interpreter} -m frigate"; ExecStart = "${cfg.package.python.interpreter} -m frigate";
Restart = "on-failure"; Restart = "on-failure";
SyslogIdentifier = "frigate";
User = "frigate"; User = "frigate";
Group = "frigate"; Group = "frigate";

View file

@ -0,0 +1,173 @@
{
config,
lib,
pkgs,
...
}:
let
inherit (lib.types) package str;
inherit (lib)
mkIf
mkOption
mkEnableOption
mkPackageOption
;
cfg = config.services.dashy;
in
{
options.services.dashy = {
enable = mkEnableOption ''
Dashy, a highly customizable, easy to use, privacy-respecting dashboard app.
Note that this builds a static web app as opposed to running a full node server, unlike the default docker image.
Writing config changes to disk through the UI, triggering a rebuild through the UI and application status checks are
unavailable without the node server; Everything else will work fine.
See the deployment docs for [building from source](https://dashy.to/docs/deployment#build-from-source), [hosting with a CDN](https://dashy.to/docs/deployment#hosting-with-cdn) and [CDN cloud deploy](https://dashy.to/docs/deployment#cdn--cloud-deploy) for more information.
'';
virtualHost = {
enableNginx = mkEnableOption "a virtualhost to serve dashy through nginx";
domain = mkOption {
description = ''
Domain to use for the virtual host.
This can be used to change nginx options like
```nix
services.nginx.virtualHosts."$\{config.services.dashy.virtualHost.domain}".listen = [ ... ]
```
or
```nix
services.nginx.virtualHosts."example.com".listen = [ ... ]
```
'';
type = str;
};
};
package = mkPackageOption pkgs "dashy-ui" { };
finalDrv = mkOption {
readOnly = true;
default =
if cfg.settings != { } then cfg.package.override { inherit (cfg) settings; } else cfg.package;
defaultText = ''
if cfg.settings != {}
then cfg.package.override {inherit (cfg) settings;}
else cfg.package;
'';
type = package;
description = ''
Final derivation containing the fully built static files
'';
};
settings = mkOption {
default = { };
description = ''
Settings serialized into `user-data/conf.yml` before build.
If left empty, the default configuration shipped with the package will be used instead.
Note that the full configuration will be written to the nix store as world readable, which may include secrets such as [password hashes](https://dashy.to/docs/configuring#appconfigauthusers-optional).
To add files such as icons or backgrounds, you can reference them in line such as
```nix
icon = "$\{./icon.png}";
```
This will add the file to the nix store upon build, referencing it by file path as expected by Dashy.
'';
example = ''
{
appConfig = {
cssThemes = [
"example-theme-1"
"example-theme-2"
];
enableFontAwesome = true;
fontAwesomeKey = "e9076c7025";
theme = "thebe";
};
pageInfo = {
description = "My Awesome Dashboard";
navLinks = [
{
path = "/";
title = "Home";
}
{
path = "https://example.com";
title = "Example 1";
}
{
path = "https://example.com";
title = "Example 2";
}
];
title = "Dashy";
};
sections = [
{
displayData = {
collapsed = true;
cols = 2;
customStyles = "border: 2px dashed red;";
itemSize = "large";
};
items = [
{
backgroundColor = "#0079ff";
color = "#00ffc9";
description = "Source code and documentation on GitHub";
icon = "fab fa-github";
target = "sametab";
title = "Source";
url = "https://github.com/Lissy93/dashy";
}
{
description = "View currently open issues, or raise a new one";
icon = "fas fa-bug";
title = "Issues";
url = "https://github.com/Lissy93/dashy/issues";
}
{
description = "Live Demo #1";
icon = "fas fa-rocket";
target = "iframe";
title = "Demo 1";
url = "https://dashy-demo-1.as93.net";
}
{
description = "Live Demo #2";
icon = "favicon";
target = "newtab";
title = "Demo 2";
url = "https://dashy-demo-2.as93.net";
}
];
name = "Getting Started";
}
];
}
'';
inherit (pkgs.formats.json { }) type;
};
};
config = mkIf cfg.enable {
services.nginx = mkIf cfg.virtualHost.enableNginx {
enable = true;
virtualHosts."${cfg.virtualHost.domain}" = {
locations."/" = {
root = cfg.finalDrv;
tryFiles = "$uri /index.html ";
};
};
};
};
meta.maintainers = [
lib.maintainers.therealgramdalf
];
}

View file

@ -116,7 +116,7 @@ in
description = '' description = ''
Configuration for Immich. Configuration for Immich.
See <https://immich.app/docs/install/config-file/> or navigate to See <https://immich.app/docs/install/config-file/> or navigate to
<https://your-immich-domain/admin/system-settings> for <https://my.immich.app/admin/system-settings> for
options and defaults. options and defaults.
Setting it to `null` allows configuring Immich in the web interface. Setting it to `null` allows configuring Immich in the web interface.
''; '';
@ -270,7 +270,7 @@ in
let let
postgresEnv = postgresEnv =
if isPostgresUnixSocket then if isPostgresUnixSocket then
{ DB_URL = "socket://${cfg.database.host}?dbname=${cfg.database.name}"; } { DB_URL = "postgresql:///${cfg.database.name}?host=${cfg.database.host}"; }
else else
{ {
DB_HOSTNAME = cfg.database.host; DB_HOSTNAME = cfg.database.host;
@ -317,6 +317,11 @@ in
after = [ "network.target" ]; after = [ "network.target" ];
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
inherit (cfg) environment; inherit (cfg) environment;
path = [
# gzip and pg_dumpall are used by the backup service
pkgs.gzip
config.services.postgresql.package
];
serviceConfig = commonServiceConfig // { serviceConfig = commonServiceConfig // {
ExecStart = lib.getExe cfg.package; ExecStart = lib.getExe cfg.package;

View file

@ -48,7 +48,7 @@ in
] ( ] (
opt: options.services.nextcloud.config.${opt} // { opt: options.services.nextcloud.config.${opt} // {
default = config.services.nextcloud.config.${opt}; default = config.services.nextcloud.config.${opt};
defaultText = "config.services.nextcloud.config.${opt}"; defaultText = lib.literalExpression "config.services.nextcloud.config.${opt}";
} }
) )
); );

View file

@ -775,13 +775,10 @@ in {
peering-manager = handleTest ./web-apps/peering-manager.nix {}; peering-manager = handleTest ./web-apps/peering-manager.nix {};
peertube = handleTestOn ["x86_64-linux"] ./web-apps/peertube.nix {}; peertube = handleTestOn ["x86_64-linux"] ./web-apps/peertube.nix {};
peroxide = handleTest ./peroxide.nix {}; peroxide = handleTest ./peroxide.nix {};
pg_anonymizer = handleTest ./pg_anonymizer.nix {};
pgadmin4 = handleTest ./pgadmin4.nix {}; pgadmin4 = handleTest ./pgadmin4.nix {};
pgbouncer = handleTest ./pgbouncer.nix {}; pgbouncer = handleTest ./pgbouncer.nix {};
pghero = runTest ./pghero.nix; pghero = runTest ./pghero.nix;
pgjwt = handleTest ./pgjwt.nix {};
pgmanage = handleTest ./pgmanage.nix {}; pgmanage = handleTest ./pgmanage.nix {};
pgvecto-rs = handleTest ./pgvecto-rs.nix {};
phosh = handleTest ./phosh.nix {}; phosh = handleTest ./phosh.nix {};
photonvision = handleTest ./photonvision.nix {}; photonvision = handleTest ./photonvision.nix {};
photoprism = handleTest ./photoprism.nix {}; photoprism = handleTest ./photoprism.nix {};
@ -814,13 +811,7 @@ in {
postfix = handleTest ./postfix.nix {}; postfix = handleTest ./postfix.nix {};
postfix-raise-smtpd-tls-security-level = handleTest ./postfix-raise-smtpd-tls-security-level.nix {}; postfix-raise-smtpd-tls-security-level = handleTest ./postfix-raise-smtpd-tls-security-level.nix {};
postfixadmin = handleTest ./postfixadmin.nix {}; postfixadmin = handleTest ./postfixadmin.nix {};
postgis = handleTest ./postgis.nix {}; postgresql = handleTest ./postgresql {};
apache_datasketches = handleTest ./apache_datasketches.nix {};
postgresql = handleTest ./postgresql.nix {};
postgresql-jit = handleTest ./postgresql-jit.nix {};
postgresql-wal-receiver = handleTest ./postgresql-wal-receiver.nix {};
postgresql-tls-client-cert = handleTest ./postgresql-tls-client-cert.nix {};
postgresql-wal2json = handleTest ./postgresql-wal2json.nix {};
powerdns = handleTest ./powerdns.nix {}; powerdns = handleTest ./powerdns.nix {};
powerdns-admin = handleTest ./powerdns-admin.nix {}; powerdns-admin = handleTest ./powerdns-admin.nix {};
power-profiles-daemon = handleTest ./power-profiles-daemon.nix {}; power-profiles-daemon = handleTest ./power-profiles-daemon.nix {};
@ -1047,7 +1038,6 @@ in {
tiddlywiki = handleTest ./tiddlywiki.nix {}; tiddlywiki = handleTest ./tiddlywiki.nix {};
tigervnc = handleTest ./tigervnc.nix {}; tigervnc = handleTest ./tigervnc.nix {};
tika = runTest ./tika.nix; tika = runTest ./tika.nix;
timescaledb = handleTest ./timescaledb.nix {};
timezone = handleTest ./timezone.nix {}; timezone = handleTest ./timezone.nix {};
timidity = handleTestOn ["aarch64-linux" "x86_64-linux"] ./timidity {}; timidity = handleTestOn ["aarch64-linux" "x86_64-linux"] ./timidity {};
tinc = handleTest ./tinc {}; tinc = handleTest ./tinc {};
@ -1067,7 +1057,6 @@ in {
trezord = handleTest ./trezord.nix {}; trezord = handleTest ./trezord.nix {};
trickster = handleTest ./trickster.nix {}; trickster = handleTest ./trickster.nix {};
trilium-server = handleTestOn ["x86_64-linux"] ./trilium-server.nix {}; trilium-server = handleTestOn ["x86_64-linux"] ./trilium-server.nix {};
tsja = handleTest ./tsja.nix {};
tsm-client-gui = handleTest ./tsm-client-gui.nix {}; tsm-client-gui = handleTest ./tsm-client-gui.nix {};
ttyd = handleTest ./web-servers/ttyd.nix {}; ttyd = handleTest ./web-servers/ttyd.nix {};
txredisapi = handleTest ./txredisapi.nix {}; txredisapi = handleTest ./txredisapi.nix {};

View file

@ -1,29 +0,0 @@
import ./make-test-python.nix ({ pkgs, ...} : {
name = "postgis";
meta = with pkgs.lib.maintainers; {
maintainers = [ lsix ]; # TODO: Who's the maintener now?
};
nodes = {
master =
{ pkgs, ... }:
{
services.postgresql = let mypg = pkgs.postgresql_15; in {
enable = true;
package = mypg;
extraPlugins = with mypg.pkgs; [
apache_datasketches
];
};
};
};
testScript = ''
start_all()
master.wait_for_unit("postgresql")
master.sleep(10) # Hopefully this is long enough!!
master.succeed("sudo -u postgres psql -c 'CREATE EXTENSION datasketches;'")
master.succeed("sudo -u postgres psql -c 'SELECT hll_sketch_to_string(hll_sketch_build(1));'")
'';
})

View file

@ -5,10 +5,11 @@
# #
# All interfaces are in OSPF Area 0. # All interfaces are in OSPF Area 0.
import ./make-test-python.nix ({ pkgs, ... }: import ./make-test-python.nix (
{ pkgs, ... }:
let let
ifAddr = node: iface: (pkgs.lib.head node.config.networking.interfaces.${iface}.ipv4.addresses).address; ifAddr = node: iface: (pkgs.lib.head node.networking.interfaces.${iface}.ipv4.addresses).address;
ospfConf1 = '' ospfConf1 = ''
router ospf router ospf
@ -48,7 +49,10 @@ import ./make-test-python.nix ({ pkgs, ... }:
router1 = router1 =
{ ... }: { ... }:
{ {
virtualisation.vlans = [ 1 2 ]; virtualisation.vlans = [
1
2
];
boot.kernel.sysctl."net.ipv4.ip_forward" = "1"; boot.kernel.sysctl."net.ipv4.ip_forward" = "1";
networking.firewall.extraCommands = "iptables -A nixos-fw -i eth2 -p ospfigp -j ACCEPT"; networking.firewall.extraCommands = "iptables -A nixos-fw -i eth2 -p ospfigp -j ACCEPT";
services.frr = { services.frr = {
@ -64,7 +68,10 @@ import ./make-test-python.nix ({ pkgs, ... }:
router2 = router2 =
{ ... }: { ... }:
{ {
virtualisation.vlans = [ 3 2 ]; virtualisation.vlans = [
3
2
];
boot.kernel.sysctl."net.ipv4.ip_forward" = "1"; boot.kernel.sysctl."net.ipv4.ip_forward" = "1";
networking.firewall.extraCommands = "iptables -A nixos-fw -i eth2 -p ospfigp -j ACCEPT"; networking.firewall.extraCommands = "iptables -A nixos-fw -i eth2 -p ospfigp -j ACCEPT";
services.frr = { services.frr = {
@ -98,7 +105,7 @@ import ./make-test-python.nix ({ pkgs, ... }:
for gw in client, router1, router2, server: for gw in client, router1, router2, server:
gw.wait_for_unit("frr") gw.wait_for_unit("frr")
router1.succeed("${nodes.router1.config.system.build.toplevel}/specialisation/ospf/bin/switch-to-configuration test >&2") router1.succeed("${nodes.router1.system.build.toplevel}/specialisation/ospf/bin/switch-to-configuration test >&2")
with subtest("Wait for OSPF to form adjacencies"): with subtest("Wait for OSPF to form adjacencies"):
for gw in router1, router2: for gw in router1, router2:
@ -108,4 +115,5 @@ import ./make-test-python.nix ({ pkgs, ... }:
with subtest("Test ICMP"): with subtest("Test ICMP"):
client.wait_until_succeeds("ping -4 -c 3 server >&2") client.wait_until_succeeds("ping -4 -c 3 server >&2")
''; '';
}) }
)

View file

@ -16,6 +16,7 @@ import ./make-test-python.nix (
machine.wait_for_open_port(53317) machine.wait_for_open_port(53317)
machine.wait_for_window("LocalSend", 10) machine.wait_for_window("LocalSend", 10)
machine.succeed("netstat --listening --program --tcp | grep -P 'tcp.*53317.*localsend'") machine.succeed("netstat --listening --program --tcp | grep -P 'tcp.*53317.*localsend'")
machine.succeed("netstat --listening --program --udp | grep -P 'udp.*53317.*localsend'")
''; '';
} }
) )

View file

@ -1,94 +0,0 @@
import ./make-test-python.nix ({ pkgs, lib, ... }: {
name = "pg_anonymizer";
meta.maintainers = lib.teams.flyingcircus.members;
nodes.machine = { pkgs, ... }: {
environment.systemPackages = [ pkgs.pg-dump-anon ];
services.postgresql = {
enable = true;
extraPlugins = ps: [ ps.anonymizer ];
settings.shared_preload_libraries = [ "anon" ];
};
};
testScript = ''
start_all()
machine.wait_for_unit("multi-user.target")
machine.wait_for_unit("postgresql.service")
with subtest("Setup"):
machine.succeed("sudo -u postgres psql --command 'create database demo'")
machine.succeed(
"sudo -u postgres psql -d demo -f ${pkgs.writeText "init.sql" ''
create extension anon cascade;
select anon.init();
create table player(id serial, name text, points int);
insert into player(id,name,points) values (1,'Foo', 23);
insert into player(id,name,points) values (2,'Bar',42);
security label for anon on column player.name is 'MASKED WITH FUNCTION anon.fake_last_name();';
security label for anon on column player.points is 'MASKED WITH VALUE NULL';
''}"
)
def get_player_table_contents():
return [
x.split(',') for x in machine.succeed("sudo -u postgres psql -d demo --csv --command 'select * from player'").splitlines()[1:]
]
def check_anonymized_row(row, id, original_name):
assert row[0] == id, f"Expected first row to have ID {id}, but got {row[0]}"
assert row[1] != original_name, f"Expected first row to have a name other than {original_name}"
assert not bool(row[2]), "Expected points to be NULL in first row"
def find_xsv_in_dump(dump, sep=','):
"""
Expecting to find a CSV (for pg_dump_anon) or TSV (for pg_dump) structure, looking like
COPY public.player ...
1,Shields,
2,Salazar,
\.
in the given dump (the commas are tabs in case of pg_dump).
Extract the CSV lines and split by `sep`.
"""
try:
from itertools import dropwhile, takewhile
return [x.split(sep) for x in list(takewhile(
lambda x: x != "\\.",
dropwhile(
lambda x: not x.startswith("COPY public.player"),
dump.splitlines()
)
))[1:]]
except:
print(f"Dump to process: {dump}")
raise
def check_original_data(output):
assert output[0] == ['1','Foo','23'], f"Expected first row from player table to be 1,Foo,23; got {output[0]}"
assert output[1] == ['2','Bar','42'], f"Expected first row from player table to be 2,Bar,42; got {output[1]}"
def check_anonymized_rows(output):
check_anonymized_row(output[0], '1', 'Foo')
check_anonymized_row(output[1], '2', 'Bar')
with subtest("Check initial state"):
check_original_data(get_player_table_contents())
with subtest("Anonymous dumps"):
check_original_data(find_xsv_in_dump(
machine.succeed("sudo -u postgres pg_dump demo"),
sep='\t'
))
check_anonymized_rows(find_xsv_in_dump(
machine.succeed("sudo -u postgres pg_dump_anon -U postgres -h /run/postgresql -d demo"),
sep=','
))
with subtest("Anonymize"):
machine.succeed("sudo -u postgres psql -d demo --command 'select anon.anonymize_database();'")
check_anonymized_rows(get_player_table_contents())
'';
})

View file

@ -1,35 +0,0 @@
import ./make-test-python.nix ({ pkgs, lib, ...}:
with pkgs; {
name = "pgjwt";
meta = with lib.maintainers; {
maintainers = [ spinus willibutz ];
};
nodes = {
master = { ... }:
{
services.postgresql = {
enable = true;
extraPlugins = ps: with ps; [ pgjwt pgtap ];
};
};
};
testScript = { nodes, ... }:
let
sqlSU = "${nodes.master.services.postgresql.superUser}";
pgProve = "${pkgs.perlPackages.TAPParserSourceHandlerpgTAP}";
inherit (nodes.master.services.postgresql.package.pkgs) pgjwt;
in
''
start_all()
master.wait_for_unit("postgresql")
master.succeed(
"${pkgs.gnused}/bin/sed -e '12 i CREATE EXTENSION pgcrypto;\\nCREATE EXTENSION pgtap;\\nSET search_path TO tap,public;' ${pgjwt.src}/test.sql > /tmp/test.sql"
)
master.succeed(
"${pkgs.sudo}/bin/sudo -u ${sqlSU} PGOPTIONS=--search_path=tap,public ${pgProve}/bin/pg_prove -d postgres -v -f /tmp/test.sql"
)
'';
})

View file

@ -1,76 +0,0 @@
# mostly copied from ./timescaledb.nix which was copied from ./postgresql.nix
# as it seemed unapproriate to test additional extensions for postgresql there.
{ system ? builtins.currentSystem
, config ? { }
, pkgs ? import ../.. { inherit system config; }
}:
with import ../lib/testing-python.nix { inherit system pkgs; };
with pkgs.lib;
let
postgresql-versions = import ../../pkgs/servers/sql/postgresql pkgs;
# Test cases from https://docs.pgvecto.rs/use-cases/hybrid-search.html
test-sql = pkgs.writeText "postgresql-test" ''
CREATE EXTENSION vectors;
CREATE TABLE items (
id bigserial PRIMARY KEY,
content text NOT NULL,
embedding vectors.vector(3) NOT NULL -- 3 dimensions
);
INSERT INTO items (content, embedding) VALUES
('a fat cat sat on a mat and ate a fat rat', '[1, 2, 3]'),
('a fat dog sat on a mat and ate a fat rat', '[4, 5, 6]'),
('a thin cat sat on a mat and ate a thin rat', '[7, 8, 9]'),
('a thin dog sat on a mat and ate a thin rat', '[10, 11, 12]');
'';
make-postgresql-test = postgresql-name: postgresql-package: makeTest {
name = postgresql-name;
meta = with pkgs.lib.maintainers; {
maintainers = [ diogotcorreia ];
};
nodes.machine = { ... }:
{
services.postgresql = {
enable = true;
package = postgresql-package;
extraPlugins = ps: with ps; [
pgvecto-rs
];
settings.shared_preload_libraries = "vectors";
};
};
testScript = ''
def check_count(statement, lines):
return 'test $(sudo -u postgres psql postgres -tAc "{}"|wc -l) -eq {}'.format(
statement, lines
)
machine.start()
machine.wait_for_unit("postgresql")
with subtest("Postgresql with extension vectors is available just after unit start"):
machine.succeed(check_count("SELECT * FROM pg_available_extensions WHERE name = 'vectors' AND default_version = '${postgresql-package.pkgs.pgvecto-rs.version}';", 1))
machine.succeed("sudo -u postgres psql -f ${test-sql}")
machine.succeed(check_count("SELECT content, embedding FROM items WHERE to_tsvector('english', content) @@ 'cat & rat'::tsquery;", 2))
machine.shutdown()
'';
};
applicablePostgresqlVersions = filterAttrs (_: value: versionAtLeast value.version "14") postgresql-versions;
in
mapAttrs'
(name: package: {
inherit name;
value = make-postgresql-test name package;
})
applicablePostgresqlVersions

View file

@ -1,38 +0,0 @@
import ./make-test-python.nix ({ pkgs, ...} : {
name = "postgis";
meta = with pkgs.lib.maintainers; {
maintainers = [ lsix ];
};
nodes = {
master =
{ pkgs, ... }:
{
services.postgresql = {
enable = true;
package = pkgs.postgresql;
extraPlugins = ps: with ps; [
postgis
];
};
};
};
testScript = ''
start_all()
master.wait_for_unit("postgresql")
master.sleep(10) # Hopefully this is long enough!!
master.succeed("sudo -u postgres psql -c 'CREATE EXTENSION postgis;'")
master.succeed("sudo -u postgres psql -c 'CREATE EXTENSION postgis_raster;'")
master.succeed("sudo -u postgres psql -c 'CREATE EXTENSION postgis_topology;'")
master.succeed("sudo -u postgres psql -c 'select postgis_version();'")
master.succeed("[ \"$(sudo -u postgres psql --no-psqlrc --tuples-only -c 'select postgis_version();')\" = \" ${
pkgs.lib.versions.major pkgs.postgis.version
}.${
pkgs.lib.versions.minor pkgs.postgis.version
} USE_GEOS=1 USE_PROJ=1 USE_STATS=1\" ]")
# st_makepoint goes through c code
master.succeed("sudo -u postgres psql --no-psqlrc --tuples-only -c 'select st_makepoint(1, 1)'")
'';
})

View file

@ -1,55 +0,0 @@
{ system ? builtins.currentSystem
, config ? {}
, pkgs ? import ../.. { inherit system config; }
, package ? null
}:
with import ../lib/testing-python.nix { inherit system pkgs; };
let
inherit (pkgs) lib;
packages = builtins.attrNames (import ../../pkgs/servers/sql/postgresql pkgs);
mkJitTestFromName = name:
mkJitTest pkgs.${name};
mkJitTest = package: makeTest {
name = package.name;
meta.maintainers = with lib.maintainers; [ ma27 ];
nodes.machine = { pkgs, lib, ... }: {
services.postgresql = {
inherit package;
enable = true;
enableJIT = true;
initialScript = pkgs.writeText "init.sql" ''
create table demo (id int);
insert into demo (id) select generate_series(1, 5);
'';
};
};
testScript = ''
machine.start()
machine.wait_for_unit("postgresql.service")
with subtest("JIT is enabled"):
machine.succeed("sudo -u postgres psql <<<'show jit;' | grep 'on'")
with subtest("Test JIT works fine"):
output = machine.succeed(
"cat ${pkgs.writeText "test.sql" ''
set jit_above_cost = 1;
EXPLAIN ANALYZE SELECT CONCAT('jit result = ', SUM(id)) FROM demo;
SELECT CONCAT('jit result = ', SUM(id)) from demo;
''} | sudo -u postgres psql"
)
assert "JIT:" in output
assert "jit result = 15" in output
machine.shutdown()
'';
};
in
if package == null then
lib.genAttrs packages mkJitTestFromName
else
mkJitTest package

View file

@ -1,141 +0,0 @@
{ system ? builtins.currentSystem
, config ? { }
, pkgs ? import ../.. { inherit system config; }
, package ? null
}:
with import ../lib/testing-python.nix { inherit system pkgs; };
let
lib = pkgs.lib;
# Makes a test for a PostgreSQL package, given by name and looked up from `pkgs`.
makeTestAttribute = name:
{
inherit name;
value = makePostgresqlTlsClientCertTest pkgs."${name}";
};
makePostgresqlTlsClientCertTest = pkg:
let
runWithOpenSSL = file: cmd: pkgs.runCommand file
{
buildInputs = [ pkgs.openssl ];
}
cmd;
caKey = runWithOpenSSL "ca.key" "openssl ecparam -name prime256v1 -genkey -noout -out $out";
caCert = runWithOpenSSL
"ca.crt"
''
openssl req -new -x509 -sha256 -key ${caKey} -out $out -subj "/CN=test.example" -days 36500
'';
serverKey =
runWithOpenSSL "server.key" "openssl ecparam -name prime256v1 -genkey -noout -out $out";
serverKeyPath = "/var/lib/postgresql";
serverCert =
runWithOpenSSL "server.crt" ''
openssl req -new -sha256 -key ${serverKey} -out server.csr -subj "/CN=db.test.example"
openssl x509 -req -in server.csr -CA ${caCert} -CAkey ${caKey} \
-CAcreateserial -out $out -days 36500 -sha256
'';
clientKey =
runWithOpenSSL "client.key" "openssl ecparam -name prime256v1 -genkey -noout -out $out";
clientCert =
runWithOpenSSL "client.crt" ''
openssl req -new -sha256 -key ${clientKey} -out client.csr -subj "/CN=test"
openssl x509 -req -in client.csr -CA ${caCert} -CAkey ${caKey} \
-CAcreateserial -out $out -days 36500 -sha256
'';
clientKeyPath = "/root";
in
makeTest {
name = "postgresql-tls-client-cert-${pkg.name}";
meta.maintainers = with lib.maintainers; [ erictapen ];
nodes.server = { ... }: {
system.activationScripts = {
keyPlacement.text = ''
mkdir -p '${serverKeyPath}'
cp '${serverKey}' '${serverKeyPath}/server.key'
chown postgres:postgres '${serverKeyPath}/server.key'
chmod 600 '${serverKeyPath}/server.key'
'';
};
services.postgresql = {
package = pkg;
enable = true;
enableTCPIP = true;
ensureUsers = [
{
name = "test";
ensureDBOwnership = true;
}
];
ensureDatabases = [ "test" ];
settings = {
ssl = "on";
ssl_ca_file = toString caCert;
ssl_cert_file = toString serverCert;
ssl_key_file = "${serverKeyPath}/server.key";
};
authentication = ''
hostssl test test ::/0 cert clientcert=verify-full
'';
};
networking = {
interfaces.eth1 = {
ipv6.addresses = [
{ address = "fc00::1"; prefixLength = 120; }
];
};
firewall.allowedTCPPorts = [ 5432 ];
};
};
nodes.client = { ... }: {
system.activationScripts = {
keyPlacement.text = ''
mkdir -p '${clientKeyPath}'
cp '${clientKey}' '${clientKeyPath}/client.key'
chown root:root '${clientKeyPath}/client.key'
chmod 600 '${clientKeyPath}/client.key'
'';
};
environment = {
variables = {
PGHOST = "db.test.example";
PGPORT = "5432";
PGDATABASE = "test";
PGUSER = "test";
PGSSLMODE = "verify-full";
PGSSLCERT = clientCert;
PGSSLKEY = "${clientKeyPath}/client.key";
PGSSLROOTCERT = caCert;
};
systemPackages = [ pkg ];
};
networking = {
interfaces.eth1 = {
ipv6.addresses = [
{ address = "fc00::2"; prefixLength = 120; }
];
};
hosts = { "fc00::1" = [ "db.test.example" ]; };
};
};
testScript = ''
server.wait_for_unit("multi-user.target")
client.wait_for_unit("multi-user.target")
client.succeed("psql -c \"SELECT 1;\"")
'';
};
in
if package == null then
# all-tests.nix: Maps the generic function over all attributes of PostgreSQL packages
builtins.listToAttrs (map makeTestAttribute (builtins.attrNames (import ../../pkgs/servers/sql/postgresql pkgs)))
else
# Called directly from <package>.tests
makePostgresqlTlsClientCertTest package

View file

@ -1,124 +0,0 @@
{ system ? builtins.currentSystem,
config ? {},
pkgs ? import ../.. { inherit system config; },
package ? null
}:
with import ../lib/testing-python.nix { inherit system pkgs; };
let
lib = pkgs.lib;
# Makes a test for a PostgreSQL package, given by name and looked up from `pkgs`.
makeTestAttribute = name:
{
inherit name;
value = makePostgresqlWalReceiverTest pkgs."${name}";
};
makePostgresqlWalReceiverTest = pkg:
let
postgresqlDataDir = "/var/lib/postgresql/${pkg.psqlSchema}";
replicationUser = "wal_receiver_user";
replicationSlot = "wal_receiver_slot";
replicationConn = "postgresql://${replicationUser}@localhost";
baseBackupDir = "/var/cache/wals/pg_basebackup";
walBackupDir = "/var/cache/wals/pg_wal";
recoveryFile = pkgs.writeTextDir "recovery.signal" "";
in makeTest {
name = "postgresql-wal-receiver-${pkg.name}";
meta.maintainers = with lib.maintainers; [ pacien ];
nodes.machine = { ... }: {
systemd.tmpfiles.rules = [
"d /var/cache/wals 0750 postgres postgres - -"
];
services.postgresql = {
package = pkg;
enable = true;
settings = {
max_replication_slots = 10;
max_wal_senders = 10;
recovery_end_command = "touch recovery.done";
restore_command = "cp ${walBackupDir}/%f %p";
wal_level = "archive"; # alias for replica on pg >= 9.6
};
authentication = ''
host replication ${replicationUser} all trust
'';
initialScript = pkgs.writeText "init.sql" ''
create user ${replicationUser} replication;
select * from pg_create_physical_replication_slot('${replicationSlot}');
'';
};
services.postgresqlWalReceiver.receivers.main = {
postgresqlPackage = pkg;
connection = replicationConn;
slot = replicationSlot;
directory = walBackupDir;
};
# This is only to speedup test, it isn't time racing. Service is set to autorestart always,
# default 60sec is fine for real system, but is too much for a test
systemd.services.postgresql-wal-receiver-main.serviceConfig.RestartSec = lib.mkForce 5;
systemd.services.postgresql.serviceConfig.ReadWritePaths = [ "/var/cache/wals" ];
};
testScript = ''
# make an initial base backup
machine.wait_for_unit("postgresql")
machine.wait_for_unit("postgresql-wal-receiver-main")
# WAL receiver healthchecks PG every 5 seconds, so let's be sure they have connected each other
# required only for 9.4
machine.sleep(5)
machine.succeed(
"${pkg}/bin/pg_basebackup --dbname=${replicationConn} --pgdata=${baseBackupDir}"
)
# create a dummy table with 100 records
machine.succeed(
"sudo -u postgres psql --command='create table dummy as select * from generate_series(1, 100) as val;'"
)
# stop postgres and destroy data
machine.systemctl("stop postgresql")
machine.systemctl("stop postgresql-wal-receiver-main")
machine.succeed("rm -r ${postgresqlDataDir}/{base,global,pg_*}")
# restore the base backup
machine.succeed(
"cp -r ${baseBackupDir}/* ${postgresqlDataDir} && chown postgres:postgres -R ${postgresqlDataDir}"
)
# prepare WAL and recovery
machine.succeed("chmod a+rX -R ${walBackupDir}")
machine.execute(
"for part in ${walBackupDir}/*.partial; do mv $part ''${part%%.*}; done"
) # make use of partial segments too
machine.succeed(
"cp ${recoveryFile}/* ${postgresqlDataDir}/ && chmod 666 ${postgresqlDataDir}/recovery*"
)
# replay WAL
machine.systemctl("start postgresql")
machine.wait_for_file("${postgresqlDataDir}/recovery.done")
machine.systemctl("restart postgresql")
machine.wait_for_unit("postgresql")
# check that our records have been restored
machine.succeed(
"test $(sudo -u postgres psql --pset='pager=off' --tuples-only --command='select count(distinct val) from dummy;') -eq 100"
)
'';
};
in
if package == null then
# all-tests.nix: Maps the generic function over all attributes of PostgreSQL packages
builtins.listToAttrs (map makeTestAttribute (builtins.attrNames (import ../../pkgs/servers/sql/postgresql pkgs)))
else
# Called directly from <package>.tests
makePostgresqlWalReceiverTest package

View file

@ -1,60 +0,0 @@
{
system ? builtins.currentSystem,
config ? { },
pkgs ? import ../.. { inherit system config; },
postgresql ? null,
}:
let
makeTest = import ./make-test-python.nix;
# Makes a test for a PostgreSQL package, given by name and looked up from `pkgs`.
makeTestAttribute = name: {
inherit name;
value = makePostgresqlWal2jsonTest pkgs."${name}";
};
makePostgresqlWal2jsonTest =
postgresqlPackage:
makeTest {
name = "postgresql-wal2json-${postgresqlPackage.name}";
meta.maintainers = with pkgs.lib.maintainers; [ euank ];
nodes.machine = {
services.postgresql = {
package = postgresqlPackage;
enable = true;
extraPlugins = with postgresqlPackage.pkgs; [ wal2json ];
settings = {
wal_level = "logical";
max_replication_slots = "10";
max_wal_senders = "10";
};
};
};
testScript = ''
machine.wait_for_unit("postgresql")
machine.succeed(
"sudo -u postgres psql -qAt -f ${./postgresql/wal2json/example2.sql} postgres > /tmp/example2.out"
)
machine.succeed(
"diff ${./postgresql/wal2json/example2.out} /tmp/example2.out"
)
machine.succeed(
"sudo -u postgres psql -qAt -f ${./postgresql/wal2json/example3.sql} postgres > /tmp/example3.out"
)
machine.succeed(
"diff ${./postgresql/wal2json/example3.out} /tmp/example3.out"
)
'';
};
in
# By default, create one test per postgresql version
if postgresql == null then
builtins.listToAttrs (
map makeTestAttribute (builtins.attrNames (import ../../pkgs/servers/sql/postgresql pkgs))
)
# but if postgresql is set, we're being made as a passthru test for a specific postgres + wal2json version, just run one
else
makePostgresqlWal2jsonTest postgresql

View file

@ -1,226 +0,0 @@
{ system ? builtins.currentSystem,
config ? {},
pkgs ? import ../.. { inherit system config; }
}:
with import ../lib/testing-python.nix { inherit system pkgs; };
with pkgs.lib;
let
postgresql-versions = import ../../pkgs/servers/sql/postgresql pkgs;
test-sql = pkgs.writeText "postgresql-test" ''
CREATE EXTENSION pgcrypto; -- just to check if lib loading works
CREATE TABLE sth (
id int
);
INSERT INTO sth (id) VALUES (1);
INSERT INTO sth (id) VALUES (1);
INSERT INTO sth (id) VALUES (1);
INSERT INTO sth (id) VALUES (1);
INSERT INTO sth (id) VALUES (1);
CREATE TABLE xmltest ( doc xml );
INSERT INTO xmltest (doc) VALUES ('<test>ok</test>'); -- check if libxml2 enabled
'';
make-postgresql-test = postgresql-name: postgresql-package: backup-all: makeTest {
name = postgresql-name;
meta = with pkgs.lib.maintainers; {
maintainers = [ zagy ];
};
nodes.machine = {...}:
{
services.postgresql = {
enable = true;
package = postgresql-package;
};
services.postgresqlBackup = {
enable = true;
databases = optional (!backup-all) "postgres";
};
};
testScript = let
backupName = if backup-all then "all" else "postgres";
backupService = if backup-all then "postgresqlBackup" else "postgresqlBackup-postgres";
backupFileBase = "/var/backup/postgresql/${backupName}";
in ''
def check_count(statement, lines):
return 'test $(sudo -u postgres psql postgres -tAc "{}"|wc -l) -eq {}'.format(
statement, lines
)
machine.start()
machine.wait_for_unit("postgresql")
with subtest("Postgresql is available just after unit start"):
machine.succeed(
"cat ${test-sql} | sudo -u postgres psql"
)
with subtest("Postgresql survives restart (bug #1735)"):
machine.shutdown()
import time
time.sleep(2)
machine.start()
machine.wait_for_unit("postgresql")
machine.fail(check_count("SELECT * FROM sth;", 3))
machine.succeed(check_count("SELECT * FROM sth;", 5))
machine.fail(check_count("SELECT * FROM sth;", 4))
machine.succeed(check_count("SELECT xpath('/test/text()', doc) FROM xmltest;", 1))
with subtest("Backup service works"):
machine.succeed(
"systemctl start ${backupService}.service",
"zcat ${backupFileBase}.sql.gz | grep '<test>ok</test>'",
"ls -hal /var/backup/postgresql/ >/dev/console",
"stat -c '%a' ${backupFileBase}.sql.gz | grep 600",
)
with subtest("Backup service removes prev files"):
machine.succeed(
# Create dummy prev files.
"touch ${backupFileBase}.prev.sql{,.gz,.zstd}",
"chown postgres:postgres ${backupFileBase}.prev.sql{,.gz,.zstd}",
# Run backup.
"systemctl start ${backupService}.service",
"ls -hal /var/backup/postgresql/ >/dev/console",
# Since nothing has changed in the database, the cur and prev files
# should match.
"zcat ${backupFileBase}.sql.gz | grep '<test>ok</test>'",
"cmp ${backupFileBase}.sql.gz ${backupFileBase}.prev.sql.gz",
# The prev files with unused suffix should be removed.
"[ ! -f '${backupFileBase}.prev.sql' ]",
"[ ! -f '${backupFileBase}.prev.sql.zstd' ]",
# Both cur and prev file should only be accessible by the postgres user.
"stat -c '%a' ${backupFileBase}.sql.gz | grep 600",
"stat -c '%a' '${backupFileBase}.prev.sql.gz' | grep 600",
)
with subtest("Backup service fails gracefully"):
# Sabotage the backup process
machine.succeed("rm /run/postgresql/.s.PGSQL.5432")
machine.fail(
"systemctl start ${backupService}.service",
)
machine.succeed(
"ls -hal /var/backup/postgresql/ >/dev/console",
"zcat ${backupFileBase}.prev.sql.gz | grep '<test>ok</test>'",
"stat ${backupFileBase}.in-progress.sql.gz",
)
# In a previous version, the second run would overwrite prev.sql.gz,
# so we test a second run as well.
machine.fail(
"systemctl start ${backupService}.service",
)
machine.succeed(
"stat ${backupFileBase}.in-progress.sql.gz",
"zcat ${backupFileBase}.prev.sql.gz | grep '<test>ok</test>'",
)
with subtest("Initdb works"):
machine.succeed("sudo -u postgres initdb -D /tmp/testpostgres2")
machine.log(machine.execute("systemd-analyze security postgresql.service | grep -v ")[1])
machine.shutdown()
'';
};
mk-ensure-clauses-test = postgresql-name: postgresql-package: makeTest {
name = postgresql-name;
meta = with pkgs.lib.maintainers; {
maintainers = [ zagy ];
};
nodes.machine = {...}:
{
services.postgresql = {
enable = true;
package = postgresql-package;
ensureUsers = [
{
name = "all-clauses";
ensureClauses = {
superuser = true;
createdb = true;
createrole = true;
"inherit" = true;
login = true;
replication = true;
bypassrls = true;
};
}
{
name = "default-clauses";
}
];
};
};
testScript = let
getClausesQuery = user: pkgs.lib.concatStringsSep " "
[
"SELECT row_to_json(row)"
"FROM ("
"SELECT"
"rolsuper,"
"rolinherit,"
"rolcreaterole,"
"rolcreatedb,"
"rolcanlogin,"
"rolreplication,"
"rolbypassrls"
"FROM pg_roles"
"WHERE rolname = '${user}'"
") row;"
];
in ''
import json
machine.start()
machine.wait_for_unit("postgresql")
with subtest("All user permissions are set according to the ensureClauses attr"):
clauses = json.loads(
machine.succeed(
"sudo -u postgres psql -tc \"${getClausesQuery "all-clauses"}\""
)
)
print(clauses)
assert clauses['rolsuper'], 'expected user with clauses to have superuser clause'
assert clauses['rolinherit'], 'expected user with clauses to have inherit clause'
assert clauses['rolcreaterole'], 'expected user with clauses to have create role clause'
assert clauses['rolcreatedb'], 'expected user with clauses to have create db clause'
assert clauses['rolcanlogin'], 'expected user with clauses to have login clause'
assert clauses['rolreplication'], 'expected user with clauses to have replication clause'
assert clauses['rolbypassrls'], 'expected user with clauses to have bypassrls clause'
with subtest("All user permissions default when ensureClauses is not provided"):
clauses = json.loads(
machine.succeed(
"sudo -u postgres psql -tc \"${getClausesQuery "default-clauses"}\""
)
)
assert not clauses['rolsuper'], 'expected user with no clauses set to have default superuser clause'
assert clauses['rolinherit'], 'expected user with no clauses set to have default inherit clause'
assert not clauses['rolcreaterole'], 'expected user with no clauses set to have default create role clause'
assert not clauses['rolcreatedb'], 'expected user with no clauses set to have default create db clause'
assert clauses['rolcanlogin'], 'expected user with no clauses set to have default login clause'
assert not clauses['rolreplication'], 'expected user with no clauses set to have default replication clause'
assert not clauses['rolbypassrls'], 'expected user with no clauses set to have default bypassrls clause'
machine.shutdown()
'';
};
in
concatMapAttrs (name: package: {
${name} = make-postgresql-test name package false;
${name + "-backup-all"} = make-postgresql-test "${name + "-backup-all"}" package true;
${name + "-clauses"} = mk-ensure-clauses-test name package;
}) postgresql-versions

View file

@ -0,0 +1,116 @@
{
pkgs,
makeTest,
}:
let
inherit (pkgs) lib;
makeTestFor =
package:
makeTest {
name = "postgresql_anonymizer-${package.name}";
meta.maintainers = lib.teams.flyingcircus.members;
nodes.machine =
{ pkgs, ... }:
{
environment.systemPackages = [ pkgs.pg-dump-anon ];
services.postgresql = {
inherit package;
enable = true;
extraPlugins = ps: [ ps.anonymizer ];
settings.shared_preload_libraries = [ "anon" ];
};
};
testScript = ''
start_all()
machine.wait_for_unit("multi-user.target")
machine.wait_for_unit("postgresql.service")
with subtest("Setup"):
machine.succeed("sudo -u postgres psql --command 'create database demo'")
machine.succeed(
"sudo -u postgres psql -d demo -f ${pkgs.writeText "init.sql" ''
create extension anon cascade;
select anon.init();
create table player(id serial, name text, points int);
insert into player(id,name,points) values (1,'Foo', 23);
insert into player(id,name,points) values (2,'Bar',42);
security label for anon on column player.name is 'MASKED WITH FUNCTION anon.fake_last_name();';
security label for anon on column player.points is 'MASKED WITH VALUE NULL';
''}"
)
def get_player_table_contents():
return [
x.split(',') for x in machine.succeed("sudo -u postgres psql -d demo --csv --command 'select * from player'").splitlines()[1:]
]
def check_anonymized_row(row, id, original_name):
assert row[0] == id, f"Expected first row to have ID {id}, but got {row[0]}"
assert row[1] != original_name, f"Expected first row to have a name other than {original_name}"
assert not bool(row[2]), "Expected points to be NULL in first row"
def find_xsv_in_dump(dump, sep=','):
"""
Expecting to find a CSV (for pg_dump_anon) or TSV (for pg_dump) structure, looking like
COPY public.player ...
1,Shields,
2,Salazar,
\.
in the given dump (the commas are tabs in case of pg_dump).
Extract the CSV lines and split by `sep`.
"""
try:
from itertools import dropwhile, takewhile
return [x.split(sep) for x in list(takewhile(
lambda x: x != "\\.",
dropwhile(
lambda x: not x.startswith("COPY public.player"),
dump.splitlines()
)
))[1:]]
except:
print(f"Dump to process: {dump}")
raise
def check_original_data(output):
assert output[0] == ['1','Foo','23'], f"Expected first row from player table to be 1,Foo,23; got {output[0]}"
assert output[1] == ['2','Bar','42'], f"Expected first row from player table to be 2,Bar,42; got {output[1]}"
def check_anonymized_rows(output):
check_anonymized_row(output[0], '1', 'Foo')
check_anonymized_row(output[1], '2', 'Bar')
with subtest("Check initial state"):
check_original_data(get_player_table_contents())
with subtest("Anonymous dumps"):
check_original_data(find_xsv_in_dump(
machine.succeed("sudo -u postgres pg_dump demo"),
sep='\t'
))
check_anonymized_rows(find_xsv_in_dump(
machine.succeed("sudo -u postgres pg_dump_anon -U postgres -h /run/postgresql -d demo"),
sep=','
))
with subtest("Anonymize"):
machine.succeed("sudo -u postgres psql -d demo --command 'select anon.anonymize_database();'")
check_anonymized_rows(get_player_table_contents())
'';
};
in
lib.recurseIntoAttrs (
lib.concatMapAttrs (n: p: { ${n} = makeTestFor p; }) (
lib.filterAttrs (_: p: !p.pkgs.anonymizer.meta.broken) pkgs.postgresqlVersions
)
// {
passthru.override = p: makeTestFor p;
}
)

View file

@ -0,0 +1,26 @@
{
system ? builtins.currentSystem,
config ? { },
pkgs ? import ../../.. { inherit system config; },
}:
with import ../../lib/testing-python.nix { inherit system pkgs; };
let
importWithArgs = path: import path { inherit pkgs makeTest; };
in
{
# postgresql
postgresql = importWithArgs ./postgresql.nix;
postgresql-jit = importWithArgs ./postgresql-jit.nix;
postgresql-wal-receiver = importWithArgs ./postgresql-wal-receiver.nix;
postgresql-tls-client-cert = importWithArgs ./postgresql-tls-client-cert.nix;
# extensions
anonymizer = importWithArgs ./anonymizer.nix;
pgjwt = importWithArgs ./pgjwt.nix;
pgvecto-rs = importWithArgs ./pgvecto-rs.nix;
timescaledb = importWithArgs ./timescaledb.nix;
tsja = importWithArgs ./tsja.nix;
wal2json = importWithArgs ./wal2json.nix;
}

View file

@ -0,0 +1,57 @@
{
pkgs,
makeTest,
}:
let
inherit (pkgs) lib;
makeTestFor =
package:
makeTest {
name = "pgjwt-${package.name}";
meta = with lib.maintainers; {
maintainers = [
spinus
willibutz
];
};
nodes.master =
{ ... }:
{
services.postgresql = {
inherit package;
enable = true;
extraPlugins =
ps: with ps; [
pgjwt
pgtap
];
};
};
testScript =
{ nodes, ... }:
let
sqlSU = "${nodes.master.services.postgresql.superUser}";
pgProve = "${pkgs.perlPackages.TAPParserSourceHandlerpgTAP}";
inherit (nodes.master.services.postgresql.package.pkgs) pgjwt;
in
''
start_all()
master.wait_for_unit("postgresql")
master.succeed(
"${pkgs.sudo}/bin/sudo -u ${sqlSU} ${pgProve}/bin/pg_prove -d postgres -v -f ${pgjwt.src}/test.sql"
)
'';
};
in
lib.recurseIntoAttrs (
lib.concatMapAttrs (n: p: { ${n} = makeTestFor p; }) (
lib.filterAttrs (_: p: !p.pkgs.pgjwt.meta.broken) pkgs.postgresqlVersions
)
// {
passthru.override = p: makeTestFor p;
}
)

View file

@ -0,0 +1,81 @@
{
pkgs,
makeTest,
}:
let
inherit (pkgs) lib;
# Test cases from https://docs.pgvecto.rs/use-cases/hybrid-search.html
test-sql = pkgs.writeText "postgresql-test" ''
CREATE EXTENSION vectors;
CREATE TABLE items (
id bigserial PRIMARY KEY,
content text NOT NULL,
embedding vectors.vector(3) NOT NULL -- 3 dimensions
);
INSERT INTO items (content, embedding) VALUES
('a fat cat sat on a mat and ate a fat rat', '[1, 2, 3]'),
('a fat dog sat on a mat and ate a fat rat', '[4, 5, 6]'),
('a thin cat sat on a mat and ate a thin rat', '[7, 8, 9]'),
('a thin dog sat on a mat and ate a thin rat', '[10, 11, 12]');
'';
makeTestFor =
postgresqlPackage:
makeTest {
name = "pgvecto-rs-${postgresqlPackage.name}";
meta = with lib.maintainers; {
maintainers = [ diogotcorreia ];
};
nodes.machine =
{ ... }:
{
services.postgresql = {
enable = true;
package = postgresqlPackage;
extraPlugins =
ps: with ps; [
pgvecto-rs
];
settings.shared_preload_libraries = "vectors";
};
};
testScript =
{ nodes, ... }:
let
inherit (nodes.machine.services.postgresql.package.pkgs) pgvecto-rs;
in
''
def check_count(statement, lines):
return 'test $(sudo -u postgres psql postgres -tAc "{}"|wc -l) -eq {}'.format(
statement, lines
)
machine.start()
machine.wait_for_unit("postgresql")
with subtest("Postgresql with extension vectors is available just after unit start"):
machine.succeed(check_count("SELECT * FROM pg_available_extensions WHERE name = 'vectors' AND default_version = '${pgvecto-rs.version}';", 1))
machine.succeed("sudo -u postgres psql -f ${test-sql}")
machine.succeed(check_count("SELECT content, embedding FROM items WHERE to_tsvector('english', content) @@ 'cat & rat'::tsquery;", 2))
machine.shutdown()
'';
};
in
lib.recurseIntoAttrs (
lib.concatMapAttrs (n: p: { ${n} = makeTestFor p; }) (
lib.filterAttrs (_: p: !p.pkgs.pgvecto-rs.meta.broken) pkgs.postgresqlVersions
)
// {
passthru.override = p: makeTestFor p;
}
)

View file

@ -0,0 +1,58 @@
{
pkgs,
makeTest,
}:
let
inherit (pkgs) lib;
makeTestFor =
package:
makeTest {
name = "postgresql-jit-${package.name}";
meta.maintainers = with lib.maintainers; [ ma27 ];
nodes.machine =
{ pkgs, ... }:
{
services.postgresql = {
inherit package;
enable = true;
enableJIT = true;
initialScript = pkgs.writeText "init.sql" ''
create table demo (id int);
insert into demo (id) select generate_series(1, 5);
'';
};
};
testScript = ''
machine.start()
machine.wait_for_unit("postgresql.service")
with subtest("JIT is enabled"):
machine.succeed("sudo -u postgres psql <<<'show jit;' | grep 'on'")
with subtest("Test JIT works fine"):
output = machine.succeed(
"cat ${pkgs.writeText "test.sql" ''
set jit_above_cost = 1;
EXPLAIN ANALYZE SELECT CONCAT('jit result = ', SUM(id)) FROM demo;
SELECT CONCAT('jit result = ', SUM(id)) from demo;
''} | sudo -u postgres psql"
)
assert "JIT:" in output
assert "jit result = 15" in output
machine.shutdown()
'';
};
in
lib.recurseIntoAttrs (
lib.concatMapAttrs (n: p: { ${n} = makeTestFor p; }) (
lib.filterAttrs (n: _: lib.hasSuffix "_jit" n) pkgs.postgresqlVersions
)
// {
passthru.override = p: makeTestFor p;
}
)

View file

@ -0,0 +1,135 @@
{
pkgs,
makeTest,
}:
let
inherit (pkgs) lib;
runWithOpenSSL =
file: cmd:
pkgs.runCommand file {
buildInputs = [ pkgs.openssl ];
} cmd;
caKey = runWithOpenSSL "ca.key" "openssl ecparam -name prime256v1 -genkey -noout -out $out";
caCert = runWithOpenSSL "ca.crt" ''
openssl req -new -x509 -sha256 -key ${caKey} -out $out -subj "/CN=test.example" -days 36500
'';
serverKey = runWithOpenSSL "server.key" "openssl ecparam -name prime256v1 -genkey -noout -out $out";
serverKeyPath = "/var/lib/postgresql";
serverCert = runWithOpenSSL "server.crt" ''
openssl req -new -sha256 -key ${serverKey} -out server.csr -subj "/CN=db.test.example"
openssl x509 -req -in server.csr -CA ${caCert} -CAkey ${caKey} \
-CAcreateserial -out $out -days 36500 -sha256
'';
clientKey = runWithOpenSSL "client.key" "openssl ecparam -name prime256v1 -genkey -noout -out $out";
clientCert = runWithOpenSSL "client.crt" ''
openssl req -new -sha256 -key ${clientKey} -out client.csr -subj "/CN=test"
openssl x509 -req -in client.csr -CA ${caCert} -CAkey ${caKey} \
-CAcreateserial -out $out -days 36500 -sha256
'';
clientKeyPath = "/root";
makeTestFor =
package:
makeTest {
name = "postgresql-tls-client-cert-${package.name}";
meta.maintainers = with lib.maintainers; [ erictapen ];
nodes.server =
{ ... }:
{
system.activationScripts = {
keyPlacement.text = ''
mkdir -p '${serverKeyPath}'
cp '${serverKey}' '${serverKeyPath}/server.key'
chown postgres:postgres '${serverKeyPath}/server.key'
chmod 600 '${serverKeyPath}/server.key'
'';
};
services.postgresql = {
inherit package;
enable = true;
enableTCPIP = true;
ensureUsers = [
{
name = "test";
ensureDBOwnership = true;
}
];
ensureDatabases = [ "test" ];
settings = {
ssl = "on";
ssl_ca_file = toString caCert;
ssl_cert_file = toString serverCert;
ssl_key_file = "${serverKeyPath}/server.key";
};
authentication = ''
hostssl test test ::/0 cert clientcert=verify-full
'';
};
networking = {
interfaces.eth1 = {
ipv6.addresses = [
{
address = "fc00::1";
prefixLength = 120;
}
];
};
firewall.allowedTCPPorts = [ 5432 ];
};
};
nodes.client =
{ ... }:
{
system.activationScripts = {
keyPlacement.text = ''
mkdir -p '${clientKeyPath}'
cp '${clientKey}' '${clientKeyPath}/client.key'
chown root:root '${clientKeyPath}/client.key'
chmod 600 '${clientKeyPath}/client.key'
'';
};
environment = {
variables = {
PGHOST = "db.test.example";
PGPORT = "5432";
PGDATABASE = "test";
PGUSER = "test";
PGSSLMODE = "verify-full";
PGSSLCERT = clientCert;
PGSSLKEY = "${clientKeyPath}/client.key";
PGSSLROOTCERT = caCert;
};
systemPackages = [ package ];
};
networking = {
interfaces.eth1 = {
ipv6.addresses = [
{
address = "fc00::2";
prefixLength = 120;
}
];
};
hosts = {
"fc00::1" = [ "db.test.example" ];
};
};
};
testScript = ''
server.wait_for_unit("multi-user.target")
client.wait_for_unit("multi-user.target")
client.succeed("psql -c \"SELECT 1;\"")
'';
};
in
lib.recurseIntoAttrs (
lib.concatMapAttrs (n: p: { ${n} = makeTestFor p; }) pkgs.postgresqlVersions
// {
passthru.override = p: makeTestFor p;
}
)

View file

@ -0,0 +1,115 @@
{
pkgs,
makeTest,
}:
let
inherit (pkgs) lib;
makeTestFor =
package:
let
postgresqlDataDir = "/var/lib/postgresql/${package.psqlSchema}";
replicationUser = "wal_receiver_user";
replicationSlot = "wal_receiver_slot";
replicationConn = "postgresql://${replicationUser}@localhost";
baseBackupDir = "/var/cache/wals/pg_basebackup";
walBackupDir = "/var/cache/wals/pg_wal";
recoveryFile = pkgs.writeTextDir "recovery.signal" "";
in
makeTest {
name = "postgresql-wal-receiver-${package.name}";
meta.maintainers = with lib.maintainers; [ pacien ];
nodes.machine =
{ ... }:
{
systemd.tmpfiles.rules = [
"d /var/cache/wals 0750 postgres postgres - -"
];
services.postgresql = {
inherit package;
enable = true;
settings = {
max_replication_slots = 10;
max_wal_senders = 10;
recovery_end_command = "touch recovery.done";
restore_command = "cp ${walBackupDir}/%f %p";
wal_level = "archive"; # alias for replica on pg >= 9.6
};
authentication = ''
host replication ${replicationUser} all trust
'';
initialScript = pkgs.writeText "init.sql" ''
create user ${replicationUser} replication;
select * from pg_create_physical_replication_slot('${replicationSlot}');
'';
};
services.postgresqlWalReceiver.receivers.main = {
postgresqlPackage = package;
connection = replicationConn;
slot = replicationSlot;
directory = walBackupDir;
};
# This is only to speedup test, it isn't time racing. Service is set to autorestart always,
# default 60sec is fine for real system, but is too much for a test
systemd.services.postgresql-wal-receiver-main.serviceConfig.RestartSec = lib.mkForce 5;
systemd.services.postgresql.serviceConfig.ReadWritePaths = [ "/var/cache/wals" ];
};
testScript = ''
# make an initial base backup
machine.wait_for_unit("postgresql")
machine.wait_for_unit("postgresql-wal-receiver-main")
# WAL receiver healthchecks PG every 5 seconds, so let's be sure they have connected each other
# required only for 9.4
machine.sleep(5)
machine.succeed(
"${package}/bin/pg_basebackup --dbname=${replicationConn} --pgdata=${baseBackupDir}"
)
# create a dummy table with 100 records
machine.succeed(
"sudo -u postgres psql --command='create table dummy as select * from generate_series(1, 100) as val;'"
)
# stop postgres and destroy data
machine.systemctl("stop postgresql")
machine.systemctl("stop postgresql-wal-receiver-main")
machine.succeed("rm -r ${postgresqlDataDir}/{base,global,pg_*}")
# restore the base backup
machine.succeed(
"cp -r ${baseBackupDir}/* ${postgresqlDataDir} && chown postgres:postgres -R ${postgresqlDataDir}"
)
# prepare WAL and recovery
machine.succeed("chmod a+rX -R ${walBackupDir}")
machine.execute(
"for part in ${walBackupDir}/*.partial; do mv $part ''${part%%.*}; done"
) # make use of partial segments too
machine.succeed(
"cp ${recoveryFile}/* ${postgresqlDataDir}/ && chmod 666 ${postgresqlDataDir}/recovery*"
)
# replay WAL
machine.systemctl("start postgresql")
machine.wait_for_file("${postgresqlDataDir}/recovery.done")
machine.systemctl("restart postgresql")
machine.wait_for_unit("postgresql")
# check that our records have been restored
machine.succeed(
"test $(sudo -u postgres psql --pset='pager=off' --tuples-only --command='select count(distinct val) from dummy;') -eq 100"
)
'';
};
in
lib.recurseIntoAttrs (
lib.concatMapAttrs (n: p: { ${n} = makeTestFor p; }) pkgs.postgresqlVersions
// {
passthru.override = p: makeTestFor p;
}
)

View file

@ -0,0 +1,244 @@
{
pkgs,
makeTest,
}:
let
inherit (pkgs) lib;
makeTestFor =
package:
lib.recurseIntoAttrs {
postgresql = makeTestForWithBackupAll package false;
postgresql-backup-all = makeTestForWithBackupAll package true;
postgresql-clauses = makeEnsureTestFor package;
};
test-sql = pkgs.writeText "postgresql-test" ''
CREATE EXTENSION pgcrypto; -- just to check if lib loading works
CREATE TABLE sth (
id int
);
INSERT INTO sth (id) VALUES (1);
INSERT INTO sth (id) VALUES (1);
INSERT INTO sth (id) VALUES (1);
INSERT INTO sth (id) VALUES (1);
INSERT INTO sth (id) VALUES (1);
CREATE TABLE xmltest ( doc xml );
INSERT INTO xmltest (doc) VALUES ('<test>ok</test>'); -- check if libxml2 enabled
'';
makeTestForWithBackupAll =
package: backupAll:
makeTest {
name = "postgresql${lib.optionalString backupAll "-backup-all"}-${package.name}";
meta = with lib.maintainers; {
maintainers = [ zagy ];
};
nodes.machine =
{ ... }:
{
services.postgresql = {
inherit (package) ;
enable = true;
};
services.postgresqlBackup = {
enable = true;
databases = lib.optional (!backupAll) "postgres";
};
};
testScript =
let
backupName = if backupAll then "all" else "postgres";
backupService = if backupAll then "postgresqlBackup" else "postgresqlBackup-postgres";
backupFileBase = "/var/backup/postgresql/${backupName}";
in
''
def check_count(statement, lines):
return 'test $(sudo -u postgres psql postgres -tAc "{}"|wc -l) -eq {}'.format(
statement, lines
)
machine.start()
machine.wait_for_unit("postgresql")
with subtest("Postgresql is available just after unit start"):
machine.succeed(
"cat ${test-sql} | sudo -u postgres psql"
)
with subtest("Postgresql survives restart (bug #1735)"):
machine.shutdown()
import time
time.sleep(2)
machine.start()
machine.wait_for_unit("postgresql")
machine.fail(check_count("SELECT * FROM sth;", 3))
machine.succeed(check_count("SELECT * FROM sth;", 5))
machine.fail(check_count("SELECT * FROM sth;", 4))
machine.succeed(check_count("SELECT xpath('/test/text()', doc) FROM xmltest;", 1))
with subtest("Backup service works"):
machine.succeed(
"systemctl start ${backupService}.service",
"zcat ${backupFileBase}.sql.gz | grep '<test>ok</test>'",
"ls -hal /var/backup/postgresql/ >/dev/console",
"stat -c '%a' ${backupFileBase}.sql.gz | grep 600",
)
with subtest("Backup service removes prev files"):
machine.succeed(
# Create dummy prev files.
"touch ${backupFileBase}.prev.sql{,.gz,.zstd}",
"chown postgres:postgres ${backupFileBase}.prev.sql{,.gz,.zstd}",
# Run backup.
"systemctl start ${backupService}.service",
"ls -hal /var/backup/postgresql/ >/dev/console",
# Since nothing has changed in the database, the cur and prev files
# should match.
"zcat ${backupFileBase}.sql.gz | grep '<test>ok</test>'",
"cmp ${backupFileBase}.sql.gz ${backupFileBase}.prev.sql.gz",
# The prev files with unused suffix should be removed.
"[ ! -f '${backupFileBase}.prev.sql' ]",
"[ ! -f '${backupFileBase}.prev.sql.zstd' ]",
# Both cur and prev file should only be accessible by the postgres user.
"stat -c '%a' ${backupFileBase}.sql.gz | grep 600",
"stat -c '%a' '${backupFileBase}.prev.sql.gz' | grep 600",
)
with subtest("Backup service fails gracefully"):
# Sabotage the backup process
machine.succeed("rm /run/postgresql/.s.PGSQL.5432")
machine.fail(
"systemctl start ${backupService}.service",
)
machine.succeed(
"ls -hal /var/backup/postgresql/ >/dev/console",
"zcat ${backupFileBase}.prev.sql.gz | grep '<test>ok</test>'",
"stat ${backupFileBase}.in-progress.sql.gz",
)
# In a previous version, the second run would overwrite prev.sql.gz,
# so we test a second run as well.
machine.fail(
"systemctl start ${backupService}.service",
)
machine.succeed(
"stat ${backupFileBase}.in-progress.sql.gz",
"zcat ${backupFileBase}.prev.sql.gz | grep '<test>ok</test>'",
)
with subtest("Initdb works"):
machine.succeed("sudo -u postgres initdb -D /tmp/testpostgres2")
machine.log(machine.execute("systemd-analyze security postgresql.service | grep -v ")[1])
machine.shutdown()
'';
};
makeEnsureTestFor =
package:
makeTest {
name = "postgresql-clauses-${package.name}";
meta = with lib.maintainers; {
maintainers = [ zagy ];
};
nodes.machine =
{ ... }:
{
services.postgresql = {
inherit package;
enable = true;
ensureUsers = [
{
name = "all-clauses";
ensureClauses = {
superuser = true;
createdb = true;
createrole = true;
"inherit" = true;
login = true;
replication = true;
bypassrls = true;
};
}
{
name = "default-clauses";
}
];
};
};
testScript =
let
getClausesQuery =
user:
lib.concatStringsSep " " [
"SELECT row_to_json(row)"
"FROM ("
"SELECT"
"rolsuper,"
"rolinherit,"
"rolcreaterole,"
"rolcreatedb,"
"rolcanlogin,"
"rolreplication,"
"rolbypassrls"
"FROM pg_roles"
"WHERE rolname = '${user}'"
") row;"
];
in
''
import json
machine.start()
machine.wait_for_unit("postgresql")
with subtest("All user permissions are set according to the ensureClauses attr"):
clauses = json.loads(
machine.succeed(
"sudo -u postgres psql -tc \"${getClausesQuery "all-clauses"}\""
)
)
print(clauses)
assert clauses['rolsuper'], 'expected user with clauses to have superuser clause'
assert clauses['rolinherit'], 'expected user with clauses to have inherit clause'
assert clauses['rolcreaterole'], 'expected user with clauses to have create role clause'
assert clauses['rolcreatedb'], 'expected user with clauses to have create db clause'
assert clauses['rolcanlogin'], 'expected user with clauses to have login clause'
assert clauses['rolreplication'], 'expected user with clauses to have replication clause'
assert clauses['rolbypassrls'], 'expected user with clauses to have bypassrls clause'
with subtest("All user permissions default when ensureClauses is not provided"):
clauses = json.loads(
machine.succeed(
"sudo -u postgres psql -tc \"${getClausesQuery "default-clauses"}\""
)
)
assert not clauses['rolsuper'], 'expected user with no clauses set to have default superuser clause'
assert clauses['rolinherit'], 'expected user with no clauses set to have default inherit clause'
assert not clauses['rolcreaterole'], 'expected user with no clauses set to have default create role clause'
assert not clauses['rolcreatedb'], 'expected user with no clauses set to have default create db clause'
assert clauses['rolcanlogin'], 'expected user with no clauses set to have default login clause'
assert not clauses['rolreplication'], 'expected user with no clauses set to have default replication clause'
assert not clauses['rolbypassrls'], 'expected user with no clauses set to have default bypassrls clause'
machine.shutdown()
'';
};
in
lib.recurseIntoAttrs (
lib.concatMapAttrs (n: p: { ${n} = makeTestFor p; }) pkgs.postgresqlVersions
// {
passthru.override = p: makeTestFor p;
}
)

View file

@ -0,0 +1,100 @@
{
pkgs,
makeTest,
}:
let
inherit (pkgs) lib;
test-sql = pkgs.writeText "postgresql-test" ''
CREATE EXTENSION timescaledb;
CREATE EXTENSION timescaledb_toolkit;
CREATE TABLE sth (
time TIMESTAMPTZ NOT NULL,
value DOUBLE PRECISION
);
SELECT create_hypertable('sth', 'time');
INSERT INTO sth (time, value) VALUES
('2003-04-12 04:05:06 America/New_York', 1.0),
('2003-04-12 04:05:07 America/New_York', 2.0),
('2003-04-12 04:05:08 America/New_York', 3.0),
('2003-04-12 04:05:09 America/New_York', 4.0),
('2003-04-12 04:05:10 America/New_York', 5.0)
;
WITH t AS (
SELECT
time_bucket('1 day'::interval, time) AS dt,
stats_agg(value) AS stats
FROM sth
GROUP BY time_bucket('1 day'::interval, time)
)
SELECT
average(stats)
FROM t;
SELECT * FROM sth;
'';
makeTestFor =
package:
makeTest {
name = "timescaledb-${package.name}";
meta = with lib.maintainers; {
maintainers = [ typetetris ];
};
nodes.machine =
{ ... }:
{
services.postgresql = {
inherit package;
enable = true;
extraPlugins =
ps: with ps; [
timescaledb
timescaledb_toolkit
];
settings = {
shared_preload_libraries = "timescaledb, timescaledb_toolkit";
};
};
};
testScript = ''
def check_count(statement, lines):
return 'test $(sudo -u postgres psql postgres -tAc "{}"|wc -l) -eq {}'.format(
statement, lines
)
machine.start()
machine.wait_for_unit("postgresql")
with subtest("Postgresql with extensions timescaledb and timescaledb_toolkit is available just after unit start"):
machine.succeed(
"sudo -u postgres psql -f ${test-sql}"
)
machine.fail(check_count("SELECT * FROM sth;", 3))
machine.succeed(check_count("SELECT * FROM sth;", 5))
machine.fail(check_count("SELECT * FROM sth;", 4))
machine.shutdown()
'';
};
in
# Not run by default, because this requires allowUnfree.
# To run these tests:
# NIXPKGS_ALLOW_UNFREE=1 nix-build -A nixosTests.postgresql.timescaledb
lib.dontRecurseIntoAttrs (
lib.concatMapAttrs (n: p: { ${n} = makeTestFor p; }) (
lib.filterAttrs (_: p: !p.pkgs.timescaledb.meta.broken) pkgs.postgresqlVersions
)
// {
passthru.override = p: makeTestFor p;
}
)

View file

@ -0,0 +1,50 @@
{
pkgs,
makeTest,
}:
let
inherit (pkgs) lib;
makeTestFor =
package:
makeTest {
name = "tsja-${package.name}";
meta = {
maintainers = with lib.maintainers; [ chayleaf ];
};
nodes.master =
{ ... }:
{
services.postgresql = {
inherit package;
enable = true;
extraPlugins =
ps: with ps; [
tsja
];
};
};
testScript = ''
start_all()
master.wait_for_unit("postgresql")
master.succeed("sudo -u postgres psql -f /run/current-system/sw/share/postgresql/extension/libtsja_dbinit.sql")
# make sure "日本語" is parsed as a separate lexeme
master.succeed("""
sudo -u postgres \\
psql -c "SELECT * FROM ts_debug('japanese', 'PostgreSQL')" \\
| grep "{}"
""")
'';
};
in
lib.recurseIntoAttrs (
lib.concatMapAttrs (n: p: { ${n} = makeTestFor p; }) (
lib.filterAttrs (_: p: !p.pkgs.tsja.meta.broken) pkgs.postgresqlVersions
)
// {
passthru.override = p: makeTestFor p;
}
)

View file

@ -0,0 +1,52 @@
{
pkgs,
makeTest,
}:
let
inherit (pkgs) lib;
makeTestFor =
package:
makeTest {
name = "wal2json-${package.name}";
meta.maintainers = with pkgs.lib.maintainers; [ euank ];
nodes.machine = {
services.postgresql = {
inherit package;
enable = true;
extraPlugins = with package.pkgs; [ wal2json ];
settings = {
wal_level = "logical";
max_replication_slots = "10";
max_wal_senders = "10";
};
};
};
testScript = ''
machine.wait_for_unit("postgresql")
machine.succeed(
"sudo -u postgres psql -qAt -f ${./wal2json/example2.sql} postgres > /tmp/example2.out"
)
machine.succeed(
"diff ${./wal2json/example2.out} /tmp/example2.out"
)
machine.succeed(
"sudo -u postgres psql -qAt -f ${./wal2json/example3.sql} postgres > /tmp/example3.out"
)
machine.succeed(
"diff ${./wal2json/example3.out} /tmp/example3.out"
)
'';
};
in
lib.recurseIntoAttrs (
lib.concatMapAttrs (n: p: { ${n} = makeTestFor p; }) (
lib.filterAttrs (_: p: !p.pkgs.wal2json.meta.broken) pkgs.postgresqlVersions
)
// {
passthru.override = p: makeTestFor p;
}
)

View file

@ -1,93 +0,0 @@
# mostly copied from ./postgresql.nix as it seemed unapproriate to
# test additional extensions for postgresql there.
{ system ? builtins.currentSystem
, config ? { }
, pkgs ? import ../.. { inherit system config; }
}:
with import ../lib/testing-python.nix { inherit system pkgs; };
with pkgs.lib;
let
postgresql-versions = import ../../pkgs/servers/sql/postgresql pkgs;
test-sql = pkgs.writeText "postgresql-test" ''
CREATE EXTENSION timescaledb;
CREATE EXTENSION timescaledb_toolkit;
CREATE TABLE sth (
time TIMESTAMPTZ NOT NULL,
value DOUBLE PRECISION
);
SELECT create_hypertable('sth', 'time');
INSERT INTO sth (time, value) VALUES
('2003-04-12 04:05:06 America/New_York', 1.0),
('2003-04-12 04:05:07 America/New_York', 2.0),
('2003-04-12 04:05:08 America/New_York', 3.0),
('2003-04-12 04:05:09 America/New_York', 4.0),
('2003-04-12 04:05:10 America/New_York', 5.0)
;
WITH t AS (
SELECT
time_bucket('1 day'::interval, time) AS dt,
stats_agg(value) AS stats
FROM sth
GROUP BY time_bucket('1 day'::interval, time)
)
SELECT
average(stats)
FROM t;
'';
make-postgresql-test = postgresql-name: postgresql-package: makeTest {
name = postgresql-name;
meta = with pkgs.lib.maintainers; {
maintainers = [ typetetris ];
};
nodes.machine = { ... }:
{
services.postgresql = {
enable = true;
package = postgresql-package;
extraPlugins = ps: with ps; [
timescaledb
timescaledb_toolkit
];
settings = { shared_preload_libraries = "timescaledb, timescaledb_toolkit"; };
};
};
testScript = ''
def check_count(statement, lines):
return 'test $(sudo -u postgres psql postgres -tAc "{}"|wc -l) -eq {}'.format(
statement, lines
)
machine.start()
machine.wait_for_unit("postgresql")
with subtest("Postgresql with extensions timescaledb and timescaledb_toolkit is available just after unit start"):
machine.succeed(
"sudo -u postgres psql -f ${test-sql}"
)
machine.fail(check_count("SELECT * FROM sth;", 3))
machine.succeed(check_count("SELECT * FROM sth;", 5))
machine.fail(check_count("SELECT * FROM sth;", 4))
machine.shutdown()
'';
};
applicablePostgresqlVersions = filterAttrs (_: value: versionAtLeast value.version "14") postgresql-versions;
in
mapAttrs'
(name: package: {
inherit name;
value = make-postgresql-test name package;
})
applicablePostgresqlVersions

View file

@ -1,32 +0,0 @@
import ./make-test-python.nix ({ pkgs, lib, ...} : {
name = "tsja";
meta = {
maintainers = with lib.maintainers; [ chayleaf ];
};
nodes = {
master =
{ config, ... }:
{
services.postgresql = {
enable = true;
extraPlugins = ps: with ps; [
tsja
];
};
};
};
testScript = ''
start_all()
master.wait_for_unit("postgresql")
master.succeed("sudo -u postgres psql -f /run/current-system/sw/share/postgresql/extension/libtsja_dbinit.sql")
# make sure "日本語" is parsed as a separate lexeme
master.succeed("""
sudo -u postgres \\
psql -c "SELECT * FROM ts_debug('japanese', 'PostgreSQL')" \\
| grep "{}"
""")
'';
})

View file

@ -31,21 +31,30 @@ import ../make-test-python.nix (
machine.succeed("curl --fail http://localhost:2283/") machine.succeed("curl --fail http://localhost:2283/")
machine.succeed(""" machine.succeed("""
curl -H 'Content-Type: application/json' --data '{ "email": "test@example.com", "name": "Admin", "password": "admin" }' -X POST http://localhost:2283/api/auth/admin-sign-up curl -f --json '{ "email": "test@example.com", "name": "Admin", "password": "admin" }' http://localhost:2283/api/auth/admin-sign-up
""") """)
res = machine.succeed(""" res = machine.succeed("""
curl -H 'Content-Type: application/json' --data '{ "email": "test@example.com", "password": "admin" }' -X POST http://localhost:2283/api/auth/login curl -f --json '{ "email": "test@example.com", "password": "admin" }' http://localhost:2283/api/auth/login
""") """)
token = json.loads(res)['accessToken'] token = json.loads(res)['accessToken']
res = machine.succeed(""" res = machine.succeed("""
curl -H 'Content-Type: application/json' -H 'Cookie: immich_access_token=%s' --data '{ "name": "API Key", "permissions": ["all"] }' -X POST http://localhost:2283/api/api-keys curl -f -H 'Cookie: immich_access_token=%s' --json '{ "name": "API Key", "permissions": ["all"] }' http://localhost:2283/api/api-keys
""" % token) """ % token)
key = json.loads(res)['secret'] key = json.loads(res)['secret']
machine.succeed(f"immich login http://localhost:2283/api {key}") machine.succeed(f"immich login http://localhost:2283/api {key}")
res = machine.succeed("immich server-info") res = machine.succeed("immich server-info")
print(res) print(res)
machine.succeed("""
curl -f -X PUT -H 'Cookie: immich_access_token=%s' --json '{ "command": "start" }' http://localhost:2283/api/jobs/backupDatabase
""" % token)
res = machine.succeed("""
curl -f -H 'Cookie: immich_access_token=%s' http://localhost:2283/api/jobs
""" % token)
assert json.loads(res)["backupDatabase"]["jobCounts"]["active"] == 1
machine.wait_until_succeeds("ls /var/lib/immich/backups/*.sql.gz")
''; '';
} }
) )

View file

@ -39,9 +39,9 @@ rustPlatform.buildRustPackage.override { inherit stdenv; } rec {
# Use the stdenv default phases (./configure; make) instead of the # Use the stdenv default phases (./configure; make) instead of the
# ones from buildRustPackage. # ones from buildRustPackage.
configurePhase = "configurePhase"; configurePhase = "configurePhase";
buildPhase = "buildPhase"; dontCargoBuild = true;
checkPhase = "checkPhase"; dontCargoCheck = true;
installPhase = "installPhase"; dontCargoInstall = true;
postPatch = '' postPatch = ''
# Have to do this here instead of in preConfigure because # Have to do this here instead of in preConfigure because

View file

@ -2,17 +2,17 @@
#!nix-shell update-shell.nix -i python3 #!nix-shell update-shell.nix -i python3
# format: # format:
# $ nix run nixpkgs.python3Packages.black -c black update.py # $ nix run nixpkgs#python3Packages.ruff -- update.py
# type-check: # type-check:
# $ nix run nixpkgs.python3Packages.mypy -c mypy update.py # $ nix run nixpkgs#python3Packages.mypy -- update.py
# linted: # linted:
# $ nix run nixpkgs.python3Packages.flake8 -c flake8 --ignore E501,E265,E402 update.py # $ nix run nixpkgs#python3Packages.flake8 -- --ignore E501,E265,E402 update.py
import inspect import inspect
import os import os
import sys import sys
from typing import List, Tuple
from pathlib import Path from pathlib import Path
from typing import List, Tuple
# Import plugin update library from maintainers/scripts/pluginupdate.py # Import plugin update library from maintainers/scripts/pluginupdate.py
ROOT = Path(os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))) # type: ignore ROOT = Path(os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))) # type: ignore
@ -21,30 +21,44 @@ sys.path.insert(
) )
import pluginupdate import pluginupdate
GET_PLUGINS = f"""(with import <localpkgs> {{}}; GET_PLUGINS = f"""(
with import <localpkgs> {{ }};
let let
inherit (kakouneUtils.override {{ }}) buildKakounePluginFrom2Nix; inherit (kakouneUtils.override {{ }}) buildKakounePluginFrom2Nix;
generated = callPackage {ROOT}/generated.nix {{ generated = callPackage {ROOT}/generated.nix {{
inherit buildKakounePluginFrom2Nix; inherit buildKakounePluginFrom2Nix;
}}; }};
hasChecksum = value: lib.isAttrs value && lib.hasAttrByPath ["src" "outputHash"] value; hasChecksum =
getChecksum = name: value: value:
if hasChecksum value then {{ lib.isAttrs value
&& lib.hasAttrByPath [
"src"
"outputHash"
] value;
getChecksum =
name: value:
if hasChecksum value then
{{
submodules = value.src.fetchSubmodules or false; submodules = value.src.fetchSubmodules or false;
sha256 = value.src.outputHash; sha256 = value.src.outputHash;
rev = value.src.rev; rev = value.src.rev;
}} else null; }}
else
null;
checksums = lib.mapAttrs getChecksum generated; checksums = lib.mapAttrs getChecksum generated;
in lib.filterAttrs (n: v: v != null) checksums)""" in
lib.filterAttrs (n: v: v != null) checksums
)"""
HEADER = "# This file has been @generated by ./pkgs/applications/editors/kakoune/plugins/update.py. Do not edit!"
HEADER = "# This file has been generated by ./pkgs/applications/editors/kakoune/plugins/update.py. Do not edit!"
class KakouneEditor(pluginupdate.Editor): class KakouneEditor(pluginupdate.Editor):
def generate_nix(
self,
def generate_nix(self, plugins: List[Tuple[pluginupdate.PluginDesc, pluginupdate.Plugin]], outfile: str): plugins: List[Tuple[pluginupdate.PluginDesc, pluginupdate.Plugin]],
sorted_plugins = sorted(plugins, key=lambda v: v[1].name.lower()) outfile: str,
):
with open(outfile, "w+") as f: with open(outfile, "w+") as f:
f.write(HEADER) f.write(HEADER)
f.write( f.write(
@ -54,7 +68,7 @@ let
packages = ( self: packages = ( self:
{""" {"""
) )
for pluginDesc, plugin in sorted_plugins: for pluginDesc, plugin in plugins:
f.write( f.write(
f""" f"""
{plugin.normalized_name} = buildKakounePluginFrom2Nix {{ {plugin.normalized_name} = buildKakounePluginFrom2Nix {{

View file

@ -1,28 +1,25 @@
{ lib {
, stdenv lib,
, fetchFromGitHub stdenv,
, nix-update-script fetchFromGitHub,
, rustPlatform nix-update-script,
, cmake rustPlatform,
, pkg-config cmake,
, perl pkg-config,
, python3 perl,
, fontconfig python3,
, glib fontconfig,
, gtk3 glib,
, openssl gtk3,
, libGL openssl,
, libobjc libGL,
, libxkbcommon libobjc,
, Security libxkbcommon,
, CoreServices wrapGAppsHook3,
, ApplicationServices wayland,
, Carbon gobject-introspection,
, AppKit xorg,
, wrapGAppsHook3 apple-sdk_11,
, wayland
, gobject-introspection
, xorg
}: }:
let let
rpathLibs = lib.optionals stdenv.hostPlatform.isLinux [ rpathLibs = lib.optionals stdenv.hostPlatform.isLinux [
@ -85,29 +82,33 @@ rustPlatform.buildRustPackage rec {
gobject-introspection gobject-introspection
]; ];
buildInputs = rpathLibs ++ [ buildInputs =
rpathLibs
++ [
glib glib
gtk3 gtk3
openssl openssl
] ++ lib.optionals stdenv.hostPlatform.isLinux [ ]
++ lib.optionals stdenv.hostPlatform.isLinux [
fontconfig fontconfig
] ++ lib.optionals stdenv.hostPlatform.isDarwin [ ]
++ lib.optionals stdenv.hostPlatform.isDarwin [
libobjc libobjc
Security apple-sdk_11
CoreServices
ApplicationServices
Carbon
AppKit
]; ];
postInstall = if stdenv.hostPlatform.isLinux then '' postInstall =
if stdenv.hostPlatform.isLinux then
''
install -Dm0644 $src/extra/images/logo.svg $out/share/icons/hicolor/scalable/apps/dev.lapce.lapce.svg install -Dm0644 $src/extra/images/logo.svg $out/share/icons/hicolor/scalable/apps/dev.lapce.lapce.svg
install -Dm0644 $src/extra/linux/dev.lapce.lapce.desktop $out/share/applications/lapce.desktop install -Dm0644 $src/extra/linux/dev.lapce.lapce.desktop $out/share/applications/lapce.desktop
$STRIP -S $out/bin/lapce $STRIP -S $out/bin/lapce
patchelf --add-rpath "${lib.makeLibraryPath rpathLibs}" $out/bin/lapce patchelf --add-rpath "${lib.makeLibraryPath rpathLibs}" $out/bin/lapce
'' else '' ''
else
''
mkdir $out/Applications mkdir $out/Applications
cp -r extra/macos/Lapce.app $out/Applications cp -r extra/macos/Lapce.app $out/Applications
ln -s $out/bin $out/Applications/Lapce.app/Contents/MacOS ln -s $out/bin $out/Applications/Lapce.app/Contents/MacOS
@ -124,7 +125,5 @@ rustPlatform.buildRustPackage rec {
license = with licenses; [ asl20 ]; license = with licenses; [ asl20 ];
maintainers = with maintainers; [ elliot ]; maintainers = with maintainers; [ elliot ];
mainProgram = "lapce"; mainProgram = "lapce";
# Undefined symbols for architecture x86_64: "_NSPasteboardTypeFileURL"
broken = stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isx86_64;
}; };
} }

View file

@ -2,13 +2,13 @@
mkDerivation rec { mkDerivation rec {
pname = "leo-editor"; pname = "leo-editor";
version = "6.8.1"; version = "6.8.2";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "leo-editor"; owner = "leo-editor";
repo = "leo-editor"; repo = "leo-editor";
rev = version; rev = version;
sha256 = "sha256-YhZSmk2n/Tg0zx1xuy0LtABNiBB3LmXYlhXoK7/b2tQ="; sha256 = "sha256-LfeqQjzrWzqJ/iTuMOWLnxEZ+SNPVcutNPI+T3WEKnM=";
}; };
dontBuild = true; dontBuild = true;

File diff suppressed because it is too large Load diff

View file

@ -1532,6 +1532,13 @@ in
dependencies = with self; [ ultisnips ]; dependencies = with self; [ ultisnips ];
}; };
neoconf-nvim = super.neoconf-nvim.overrideAttrs {
dependencies = with self; [ nvim-lspconfig ];
doInstallCheck = true;
nvimRequireCheck = "neoconf";
};
neogit = super.neogit.overrideAttrs { neogit = super.neogit.overrideAttrs {
dependencies = with self; [ plenary-nvim ]; dependencies = with self; [ plenary-nvim ];
nvimRequireCheck = "neogit"; nvimRequireCheck = "neogit";
@ -2261,6 +2268,16 @@ in
dependencies = with self; [ telescope-nvim ]; dependencies = with self; [ telescope-nvim ];
}; };
quarto-nvim = super.quarto-nvim.overrideAttrs {
dependencies = with self; [
nvim-lspconfig
otter-nvim
];
nvimRequireCheck = "quarto";
doInstallCheck = true;
};
telescope-zoxide = super.telescope-zoxide.overrideAttrs { telescope-zoxide = super.telescope-zoxide.overrideAttrs {
dependencies = with self; [ telescope-nvim ]; dependencies = with self; [ telescope-nvim ];

View file

@ -3,7 +3,7 @@
# run with: # run with:
# $ nix run .\#vimPluginsUpdater # $ nix run .\#vimPluginsUpdater
# format: # format:
# $ nix run nixpkgs#python3Packages.black -- update.py # $ nix run nixpkgs#python3Packages.ruff -- update.py
# type-check: # type-check:
# $ nix run nixpkgs#python3Packages.mypy -- update.py # $ nix run nixpkgs#python3Packages.mypy -- update.py
# linted: # linted:
@ -19,30 +19,24 @@
# #
import inspect import inspect
import os
import logging
import textwrap
import json import json
import logging
import os
import subprocess import subprocess
from typing import List, Tuple import textwrap
from pathlib import Path from pathlib import Path
from typing import List, Tuple
log = logging.getLogger("vim-updater") log = logging.getLogger("vim-updater")
sh = logging.StreamHandler()
formatter = logging.Formatter("%(name)s:%(levelname)s: %(message)s")
sh.setFormatter(formatter)
log.addHandler(sh)
# Import plugin update library from maintainers/scripts/pluginupdate.py # Import plugin update library from maintainers/scripts/pluginupdate.py
ROOT = Path(os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))) ROOT = Path(os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe()))))
import pluginupdate
import importlib import importlib
from pluginupdate import run_nix_expr, PluginDesc
treesitter = importlib.import_module('nvim-treesitter.update') import pluginupdate
from pluginupdate import PluginDesc, run_nix_expr
treesitter = importlib.import_module("nvim-treesitter.update")
HEADER = ( HEADER = (
@ -56,17 +50,14 @@ class VimEditor(pluginupdate.Editor):
nvim_treesitter_updated = False nvim_treesitter_updated = False
def generate_nix( def generate_nix(
self, self, plugins: List[Tuple[PluginDesc, pluginupdate.Plugin]], outfile: str
plugins: List[Tuple[PluginDesc, pluginupdate.Plugin]],
outfile: str
): ):
log.info("Generating nix code") log.info("Generating nix code")
sorted_plugins = sorted(plugins, key=lambda v: v[0].name.lower())
log.debug("Loading nvim-treesitter revision from nix...") log.debug("Loading nvim-treesitter revision from nix...")
nvim_treesitter_rev = pluginupdate.run_nix_expr( nvim_treesitter_rev = pluginupdate.run_nix_expr(
"(import <localpkgs> { }).vimPlugins.nvim-treesitter.src.rev", "(import <localpkgs> { }).vimPlugins.nvim-treesitter.src.rev",
self.nixpkgs, self.nixpkgs,
timeout=10 timeout=10,
) )
GET_PLUGINS_LUA = """ GET_PLUGINS_LUA = """
@ -98,7 +89,7 @@ class VimEditor(pluginupdate.Editor):
""" """
) )
) )
for pdesc, plugin in sorted_plugins: for pdesc, plugin in plugins:
content = self.plugin2nix(pdesc, plugin, _isNeovimPlugin(plugin)) content = self.plugin2nix(pdesc, plugin, _isNeovimPlugin(plugin))
f.write(content) f.write(content)
if ( if (
@ -109,8 +100,9 @@ class VimEditor(pluginupdate.Editor):
f.write("\n}\n") f.write("\n}\n")
print(f"updated {outfile}") print(f"updated {outfile}")
def plugin2nix(self, pdesc: PluginDesc, plugin: pluginupdate.Plugin, isNeovim: bool) -> str: def plugin2nix(
self, pdesc: PluginDesc, plugin: pluginupdate.Plugin, isNeovim: bool
) -> str:
repo = pdesc.repo repo = pdesc.repo
content = f" {plugin.normalized_name} = " content = f" {plugin.normalized_name} = "
@ -138,19 +130,25 @@ class VimEditor(pluginupdate.Editor):
if self.nvim_treesitter_updated: if self.nvim_treesitter_updated:
print("updating nvim-treesitter grammars") print("updating nvim-treesitter grammars")
cmd = [ cmd = [
"nix", "build", "nix",
"vimPlugins.nvim-treesitter.src", "-f", self.nixpkgs "build",
, "--print-out-paths" "vimPlugins.nvim-treesitter.src",
"-f",
self.nixpkgs,
"--print-out-paths",
] ]
log.debug("Running command: %s", " ".join(cmd)) log.debug("Running command: %s", " ".join(cmd))
nvim_treesitter_dir = subprocess.check_output(cmd, text=True, timeout=90).strip() nvim_treesitter_dir = subprocess.check_output(
cmd, text=True, timeout=90
).strip()
generated = treesitter.update_grammars(nvim_treesitter_dir) generated = treesitter.update_grammars(nvim_treesitter_dir)
treesitter_generated_nix_path = os.path.join( treesitter_generated_nix_path = os.path.join(
NIXPKGS_NVIMTREESITTER_FOLDER, NIXPKGS_NVIMTREESITTER_FOLDER, "generated.nix"
"generated.nix" )
open(os.path.join(args.nixpkgs, treesitter_generated_nix_path), "w").write(
generated
) )
open(os.path.join(args.nixpkgs, treesitter_generated_nix_path), "w").write(generated)
if self.nixpkgs_repo: if self.nixpkgs_repo:
index = self.nixpkgs_repo.index index = self.nixpkgs_repo.index

View file

@ -116,9 +116,10 @@ https://github.com/AndrewRadev/bufferize.vim/,HEAD,
https://github.com/akinsho/bufferline.nvim/,, https://github.com/akinsho/bufferline.nvim/,,
https://github.com/kwkarlwang/bufjump.nvim/,HEAD, https://github.com/kwkarlwang/bufjump.nvim/,HEAD,
https://github.com/bullets-vim/bullets.vim/,, https://github.com/bullets-vim/bullets.vim/,,
https://github.com/mattn/calendar-vim/,,mattn-calendar-vim
https://github.com/itchyny/calendar.vim/,, https://github.com/itchyny/calendar.vim/,,
https://github.com/bkad/camelcasemotion/,, https://github.com/bkad/camelcasemotion/,,
https://github.com/catppuccin/nvim/,,catppuccin-nvim
https://github.com/catppuccin/vim/,HEAD,catppuccin-vim
https://github.com/tyru/caw.vim/,, https://github.com/tyru/caw.vim/,,
https://github.com/uga-rosa/ccc.nvim/,HEAD, https://github.com/uga-rosa/ccc.nvim/,HEAD,
https://github.com/Eandrju/cellular-automaton.nvim/,HEAD, https://github.com/Eandrju/cellular-automaton.nvim/,HEAD,
@ -299,6 +300,7 @@ https://github.com/direnv/direnv.vim/,,
https://github.com/chipsenkbeil/distant.nvim/,HEAD, https://github.com/chipsenkbeil/distant.nvim/,HEAD,
https://github.com/doki-theme/doki-theme-vim/,, https://github.com/doki-theme/doki-theme-vim/,,
https://github.com/NTBBloodbath/doom-one.nvim/,, https://github.com/NTBBloodbath/doom-one.nvim/,,
https://github.com/dracula/vim/,,dracula-vim
https://github.com/Mofiqul/dracula.nvim/,HEAD, https://github.com/Mofiqul/dracula.nvim/,HEAD,
https://github.com/stevearc/dressing.nvim/,, https://github.com/stevearc/dressing.nvim/,,
https://github.com/Bekaboo/dropbar.nvim/,HEAD, https://github.com/Bekaboo/dropbar.nvim/,HEAD,
@ -313,6 +315,7 @@ https://github.com/creativenull/efmls-configs-nvim/,,
https://github.com/elixir-tools/elixir-tools.nvim/,HEAD, https://github.com/elixir-tools/elixir-tools.nvim/,HEAD,
https://github.com/elmcast/elm-vim/,, https://github.com/elmcast/elm-vim/,,
https://github.com/dmix/elvish.vim/,, https://github.com/dmix/elvish.vim/,,
https://github.com/embark-theme/vim/,,embark-vim
https://github.com/mattn/emmet-vim/,, https://github.com/mattn/emmet-vim/,,
https://github.com/vim-scripts/emodeline/,, https://github.com/vim-scripts/emodeline/,,
https://github.com/vim-scripts/errormarker.vim/,, https://github.com/vim-scripts/errormarker.vim/,,
@ -361,6 +364,7 @@ https://github.com/gfanto/fzf-lsp.nvim/,,
https://github.com/ibhagwan/fzf-lua/,HEAD, https://github.com/ibhagwan/fzf-lua/,HEAD,
https://github.com/junegunn/fzf.vim/,, https://github.com/junegunn/fzf.vim/,,
https://github.com/NTBBloodbath/galaxyline.nvim/,, https://github.com/NTBBloodbath/galaxyline.nvim/,,
https://github.com/gbprod/nord.nvim/,,gbprod-nord
https://github.com/jsfaint/gen_tags.vim/,, https://github.com/jsfaint/gen_tags.vim/,,
https://github.com/gentoo/gentoo-syntax/,, https://github.com/gentoo/gentoo-syntax/,,
https://github.com/ndmitchell/ghcid/,, https://github.com/ndmitchell/ghcid/,,
@ -389,9 +393,9 @@ https://github.com/liuchengxu/graphviz.vim/,,
https://github.com/cbochs/grapple.nvim/,HEAD, https://github.com/cbochs/grapple.nvim/,HEAD,
https://github.com/blazkowolf/gruber-darker.nvim/,, https://github.com/blazkowolf/gruber-darker.nvim/,,
https://github.com/MagicDuck/grug-far.nvim/,, https://github.com/MagicDuck/grug-far.nvim/,,
https://github.com/gruvbox-community/gruvbox/,,gruvbox-community
https://github.com/morhetz/gruvbox/,, https://github.com/morhetz/gruvbox/,,
https://github.com/luisiacc/gruvbox-baby/,HEAD, https://github.com/luisiacc/gruvbox-baby/,HEAD,
https://github.com/gruvbox-community/gruvbox/,,gruvbox-community
https://github.com/eddyekofo94/gruvbox-flat.nvim/,, https://github.com/eddyekofo94/gruvbox-flat.nvim/,,
https://github.com/sainnhe/gruvbox-material/,, https://github.com/sainnhe/gruvbox-material/,,
https://github.com/f4z3r/gruvbox-material.nvim/,HEAD, https://github.com/f4z3r/gruvbox-material.nvim/,HEAD,
@ -404,8 +408,8 @@ https://github.com/junegunn/gv.vim/,,
https://github.com/TheSnakeWitcher/hardhat.nvim/,HEAD, https://github.com/TheSnakeWitcher/hardhat.nvim/,HEAD,
https://github.com/m4xshen/hardtime.nvim/,HEAD, https://github.com/m4xshen/hardtime.nvim/,HEAD,
https://git.sr.ht/~sircmpwn/hare.vim,HEAD, https://git.sr.ht/~sircmpwn/hare.vim,HEAD,
https://github.com/ThePrimeagen/harpoon/,harpoon2,harpoon2
https://github.com/ThePrimeagen/harpoon/,master, https://github.com/ThePrimeagen/harpoon/,master,
https://github.com/ThePrimeagen/harpoon/,harpoon2,harpoon2
https://github.com/kiyoon/haskell-scope-highlighting.nvim/,HEAD, https://github.com/kiyoon/haskell-scope-highlighting.nvim/,HEAD,
https://github.com/mrcjkb/haskell-snippets.nvim/,HEAD, https://github.com/mrcjkb/haskell-snippets.nvim/,HEAD,
https://github.com/neovimhaskell/haskell-vim/,, https://github.com/neovimhaskell/haskell-vim/,,
@ -434,7 +438,6 @@ https://github.com/idris-hackers/idris-vim/,,
https://github.com/ShinKage/idris2-nvim/,, https://github.com/ShinKage/idris2-nvim/,,
https://github.com/edwinb/idris2-vim/,, https://github.com/edwinb/idris2-vim/,,
https://github.com/3rd/image.nvim/,HEAD, https://github.com/3rd/image.nvim/,HEAD,
https://github.com/samodostal/image.nvim/,HEAD,samodostal-image-nvim
https://github.com/HakonHarnes/img-clip.nvim/,HEAD, https://github.com/HakonHarnes/img-clip.nvim/,HEAD,
https://github.com/lewis6991/impatient.nvim/,, https://github.com/lewis6991/impatient.nvim/,,
https://github.com/backdround/improved-search.nvim/,HEAD, https://github.com/backdround/improved-search.nvim/,HEAD,
@ -447,7 +450,6 @@ https://github.com/Darazaki/indent-o-matic/,,
https://github.com/Yggdroot/indentLine/,, https://github.com/Yggdroot/indentLine/,,
https://github.com/ciaranm/inkpot/,, https://github.com/ciaranm/inkpot/,,
https://github.com/jbyuki/instant.nvim/,HEAD, https://github.com/jbyuki/instant.nvim/,HEAD,
https://github.com/jbyuki/one-small-step-for-vimkind/,HEAD,
https://github.com/pta2002/intellitab.nvim/,HEAD, https://github.com/pta2002/intellitab.nvim/,HEAD,
https://github.com/parsonsmatt/intero-neovim/,, https://github.com/parsonsmatt/intero-neovim/,,
https://github.com/keith/investigate.vim/,, https://github.com/keith/investigate.vim/,,
@ -544,6 +546,7 @@ https://github.com/williamboman/mason.nvim/,HEAD,
https://github.com/vim-scripts/matchit.zip/,, https://github.com/vim-scripts/matchit.zip/,,
https://github.com/marko-cerovac/material.nvim/,, https://github.com/marko-cerovac/material.nvim/,,
https://github.com/kaicataldo/material.vim/,HEAD, https://github.com/kaicataldo/material.vim/,HEAD,
https://github.com/mattn/calendar-vim/,,mattn-calendar-vim
https://github.com/vim-scripts/mayansmoke/,, https://github.com/vim-scripts/mayansmoke/,,
https://github.com/chikamichi/mediawiki.vim/,HEAD, https://github.com/chikamichi/mediawiki.vim/,HEAD,
https://github.com/savq/melange-nvim/,, https://github.com/savq/melange-nvim/,,
@ -602,7 +605,6 @@ https://github.com/miikanissi/modus-themes.nvim/,HEAD,
https://github.com/tomasr/molokai/,, https://github.com/tomasr/molokai/,,
https://github.com/benlubas/molten-nvim/,HEAD, https://github.com/benlubas/molten-nvim/,HEAD,
https://github.com/loctvl842/monokai-pro.nvim/,HEAD, https://github.com/loctvl842/monokai-pro.nvim/,HEAD,
https://github.com/shaunsingh/moonlight.nvim/,,pure-lua
https://github.com/leafo/moonscript-vim/,HEAD, https://github.com/leafo/moonscript-vim/,HEAD,
https://github.com/yegappan/mru/,, https://github.com/yegappan/mru/,,
https://github.com/smoka7/multicursors.nvim/,HEAD, https://github.com/smoka7/multicursors.nvim/,HEAD,
@ -673,7 +675,6 @@ https://github.com/stevanmilic/neotest-scala/,HEAD,
https://github.com/shunsambongi/neotest-testthat/,HEAD, https://github.com/shunsambongi/neotest-testthat/,HEAD,
https://github.com/marilari88/neotest-vitest/,HEAD, https://github.com/marilari88/neotest-vitest/,HEAD,
https://github.com/lawrence-laz/neotest-zig/,HEAD, https://github.com/lawrence-laz/neotest-zig/,HEAD,
https://github.com/rose-pine/neovim/,main,rose-pine
https://github.com/Shatur/neovim-ayu/,, https://github.com/Shatur/neovim-ayu/,,
https://github.com/cloudhead/neovim-fuzzy/,, https://github.com/cloudhead/neovim-fuzzy/,,
https://github.com/jeffkreeftmeijer/neovim-sensible/,, https://github.com/jeffkreeftmeijer/neovim-sensible/,,
@ -688,6 +689,7 @@ https://github.com/fiatjaf/neuron.vim/,,
https://github.com/Olical/nfnl/,main, https://github.com/Olical/nfnl/,main,
https://github.com/chr4/nginx.vim/,, https://github.com/chr4/nginx.vim/,,
https://github.com/oxfist/night-owl.nvim/,, https://github.com/oxfist/night-owl.nvim/,,
https://github.com/bluz71/vim-nightfly-colors/,,nightfly
https://github.com/EdenEast/nightfox.nvim/,, https://github.com/EdenEast/nightfox.nvim/,,
https://github.com/Alexis12119/nightly.nvim/,, https://github.com/Alexis12119/nightly.nvim/,,
https://github.com/zah/nim.vim/,, https://github.com/zah/nim.vim/,,
@ -699,7 +701,7 @@ https://github.com/shortcuts/no-neck-pain.nvim/,HEAD,
https://github.com/kartikp10/noctis.nvim/,, https://github.com/kartikp10/noctis.nvim/,,
https://github.com/folke/noice.nvim/,HEAD, https://github.com/folke/noice.nvim/,HEAD,
https://github.com/nvimtools/none-ls.nvim/,HEAD, https://github.com/nvimtools/none-ls.nvim/,HEAD,
https://github.com/gbprod/nord.nvim/,,gbprod-nord https://github.com/nordtheme/vim/,,nord-vim
https://github.com/shaunsingh/nord.nvim/,, https://github.com/shaunsingh/nord.nvim/,,
https://github.com/andersevenrud/nordic.nvim/,, https://github.com/andersevenrud/nordic.nvim/,,
https://github.com/vigoux/notifier.nvim/,HEAD, https://github.com/vigoux/notifier.nvim/,HEAD,
@ -708,8 +710,8 @@ https://github.com/MunifTanjim/nui.nvim/,main,
https://github.com/jose-elias-alvarez/null-ls.nvim/,, https://github.com/jose-elias-alvarez/null-ls.nvim/,,
https://github.com/nacro90/numb.nvim/,, https://github.com/nacro90/numb.nvim/,,
https://github.com/nvchad/nvchad/,HEAD, https://github.com/nvchad/nvchad/,HEAD,
https://github.com/nvchad/ui/,HEAD,nvchad-ui
https://github.com/ChristianChiarulli/nvcode-color-schemes.vim/,, https://github.com/ChristianChiarulli/nvcode-color-schemes.vim/,,
https://github.com/catppuccin/nvim/,,catppuccin-nvim
https://github.com/AckslD/nvim-FeMaco.lua/,HEAD, https://github.com/AckslD/nvim-FeMaco.lua/,HEAD,
https://github.com/nathanmsmith/nvim-ale-diagnostic/,, https://github.com/nathanmsmith/nvim-ale-diagnostic/,,
https://github.com/windwp/nvim-autopairs/,, https://github.com/windwp/nvim-autopairs/,,
@ -825,6 +827,7 @@ https://github.com/nomnivore/ollama.nvim/,HEAD,
https://github.com/yonlu/omni.vim/,, https://github.com/yonlu/omni.vim/,,
https://github.com/Hoffs/omnisharp-extended-lsp.nvim/,HEAD, https://github.com/Hoffs/omnisharp-extended-lsp.nvim/,HEAD,
https://github.com/Th3Whit3Wolf/one-nvim/,, https://github.com/Th3Whit3Wolf/one-nvim/,,
https://github.com/jbyuki/one-small-step-for-vimkind/,HEAD,
https://github.com/navarasu/onedark.nvim/,, https://github.com/navarasu/onedark.nvim/,,
https://github.com/joshdick/onedark.vim/,, https://github.com/joshdick/onedark.vim/,,
https://github.com/LunarVim/onedarker.nvim/,, https://github.com/LunarVim/onedarker.nvim/,,
@ -854,6 +857,7 @@ https://github.com/olimorris/persisted.nvim/,HEAD,
https://github.com/folke/persistence.nvim/,, https://github.com/folke/persistence.nvim/,,
https://github.com/pest-parser/pest.vim/,HEAD, https://github.com/pest-parser/pest.vim/,HEAD,
https://github.com/lifepillar/pgsql.vim/,, https://github.com/lifepillar/pgsql.vim/,,
https://github.com/phha/zenburn.nvim/,,phha-zenburn
https://github.com/motus/pig.vim/,, https://github.com/motus/pig.vim/,,
https://github.com/weirongxu/plantuml-previewer.vim/,HEAD, https://github.com/weirongxu/plantuml-previewer.vim/,HEAD,
https://github.com/aklt/plantuml-syntax/,, https://github.com/aklt/plantuml-syntax/,,
@ -873,6 +877,7 @@ https://github.com/ahmedkhalf/project.nvim/,,
https://github.com/kevinhwang91/promise-async/,HEAD, https://github.com/kevinhwang91/promise-async/,HEAD,
https://github.com/frigoeu/psc-ide-vim/,, https://github.com/frigoeu/psc-ide-vim/,,
https://github.com/Shougo/pum.vim/,HEAD, https://github.com/Shougo/pum.vim/,HEAD,
https://github.com/shaunsingh/moonlight.nvim/,,pure-lua
https://github.com/purescript-contrib/purescript-vim/,, https://github.com/purescript-contrib/purescript-vim/,,
https://github.com/python-mode/python-mode/,, https://github.com/python-mode/python-mode/,,
https://github.com/vim-python/python-syntax/,, https://github.com/vim-python/python-syntax/,,
@ -905,6 +910,7 @@ https://github.com/gu-fan/riv.vim/,,
https://github.com/kevinhwang91/rnvimr/,, https://github.com/kevinhwang91/rnvimr/,,
https://github.com/mfukar/robotframework-vim/,, https://github.com/mfukar/robotframework-vim/,,
https://github.com/ron-rs/ron.vim/,, https://github.com/ron-rs/ron.vim/,,
https://github.com/rose-pine/neovim/,main,rose-pine
https://github.com/jmederosalvarado/roslyn.nvim/,HEAD, https://github.com/jmederosalvarado/roslyn.nvim/,HEAD,
https://github.com/keith/rspec.vim/,, https://github.com/keith/rspec.vim/,,
https://github.com/ccarpita/rtorrent-syntax-file/,, https://github.com/ccarpita/rtorrent-syntax-file/,,
@ -912,6 +918,7 @@ https://github.com/simrat39/rust-tools.nvim/,,
https://github.com/rust-lang/rust.vim/,, https://github.com/rust-lang/rust.vim/,,
https://github.com/hauleth/sad.vim/,, https://github.com/hauleth/sad.vim/,,
https://github.com/vmware-archive/salt-vim/,, https://github.com/vmware-archive/salt-vim/,,
https://github.com/samodostal/image.nvim/,HEAD,samodostal-image-nvim
https://github.com/lewis6991/satellite.nvim/,HEAD, https://github.com/lewis6991/satellite.nvim/,HEAD,
https://github.com/davidgranstrom/scnvim/,HEAD, https://github.com/davidgranstrom/scnvim/,HEAD,
https://github.com/tiagovla/scope.nvim/,HEAD, https://github.com/tiagovla/scope.nvim/,HEAD,
@ -935,8 +942,8 @@ https://github.com/mrjones2014/smart-splits.nvim/,,
https://github.com/m4xshen/smartcolumn.nvim/,, https://github.com/m4xshen/smartcolumn.nvim/,,
https://github.com/gorkunov/smartpairs.vim/,, https://github.com/gorkunov/smartpairs.vim/,,
https://github.com/ibhagwan/smartyank.nvim/,, https://github.com/ibhagwan/smartyank.nvim/,,
https://github.com/camspiers/snap/,,
https://github.com/folke/snacks.nvim/,HEAD, https://github.com/folke/snacks.nvim/,HEAD,
https://github.com/camspiers/snap/,,
https://github.com/norcalli/snippets.nvim/,, https://github.com/norcalli/snippets.nvim/,,
https://github.com/shaunsingh/solarized.nvim/,HEAD, https://github.com/shaunsingh/solarized.nvim/,HEAD,
https://github.com/sainnhe/sonokai/,, https://github.com/sainnhe/sonokai/,,
@ -1068,7 +1075,6 @@ https://github.com/jose-elias-alvarez/typescript.nvim/,,
https://github.com/MrPicklePinosaur/typst-conceal.vim/,HEAD, https://github.com/MrPicklePinosaur/typst-conceal.vim/,HEAD,
https://github.com/chomosuke/typst-preview.nvim/,HEAD, https://github.com/chomosuke/typst-preview.nvim/,HEAD,
https://github.com/kaarmu/typst.vim/,HEAD, https://github.com/kaarmu/typst.vim/,HEAD,
https://github.com/nvchad/ui/,HEAD,nvchad-ui
https://github.com/altermo/ultimate-autopair.nvim/,HEAD, https://github.com/altermo/ultimate-autopair.nvim/,HEAD,
https://github.com/SirVer/ultisnips/,, https://github.com/SirVer/ultisnips/,,
https://github.com/mbbill/undotree/,, https://github.com/mbbill/undotree/,,
@ -1084,11 +1090,6 @@ https://github.com/junegunn/vader.vim/,,
https://github.com/jbyuki/venn.nvim/,, https://github.com/jbyuki/venn.nvim/,,
https://github.com/vhda/verilog_systemverilog.vim/,, https://github.com/vhda/verilog_systemverilog.vim/,,
https://github.com/vifm/vifm.vim/,, https://github.com/vifm/vifm.vim/,,
https://github.com/catppuccin/vim/,HEAD,catppuccin-vim
https://github.com/dracula/vim/,,dracula-vim
https://github.com/embark-theme/vim/,,embark-vim
https://github.com/nordtheme/vim/,,nord-vim
https://github.com/inkarkat/vim-AdvancedSorters/,,vim-advanced-sorters
https://github.com/Konfekt/vim-CtrlXA/,, https://github.com/Konfekt/vim-CtrlXA/,,
https://github.com/konfekt/vim-DetectSpellLang/,, https://github.com/konfekt/vim-DetectSpellLang/,,
https://github.com/dpelle/vim-LanguageTool/,, https://github.com/dpelle/vim-LanguageTool/,,
@ -1115,6 +1116,7 @@ https://github.com/MarcWeber/vim-addon-sql/,,
https://github.com/MarcWeber/vim-addon-syntax-checker/,, https://github.com/MarcWeber/vim-addon-syntax-checker/,,
https://github.com/MarcWeber/vim-addon-toggle-buffer/,, https://github.com/MarcWeber/vim-addon-toggle-buffer/,,
https://github.com/MarcWeber/vim-addon-xdebug/,, https://github.com/MarcWeber/vim-addon-xdebug/,,
https://github.com/inkarkat/vim-AdvancedSorters/,,vim-advanced-sorters
https://github.com/junegunn/vim-after-object/,, https://github.com/junegunn/vim-after-object/,,
https://github.com/danilo-augusto/vim-afterglow/,HEAD, https://github.com/danilo-augusto/vim-afterglow/,HEAD,
https://github.com/msuperdock/vim-agda/,HEAD, https://github.com/msuperdock/vim-agda/,HEAD,
@ -1191,6 +1193,7 @@ https://github.com/kristijanhusak/vim-dirvish-git/,,
https://github.com/tpope/vim-dispatch/,, https://github.com/tpope/vim-dispatch/,,
https://github.com/radenling/vim-dispatch-neovim/,, https://github.com/radenling/vim-dispatch-neovim/,,
https://github.com/jhradilek/vim-docbk/,, https://github.com/jhradilek/vim-docbk/,,
https://github.com/jhradilek/vim-snippets/,,vim-docbk-snippets
https://github.com/tpope/vim-dotenv/,, https://github.com/tpope/vim-dotenv/,,
https://github.com/junegunn/vim-easy-align/,, https://github.com/junegunn/vim-easy-align/,,
https://github.com/zhou13/vim-easyescape/,, https://github.com/zhou13/vim-easyescape/,,
@ -1344,7 +1347,6 @@ https://github.com/jistr/vim-nerdtree-tabs/,,
https://github.com/nfnty/vim-nftables/,, https://github.com/nfnty/vim-nftables/,,
https://github.com/kana/vim-niceblock/,, https://github.com/kana/vim-niceblock/,,
https://github.com/nickel-lang/vim-nickel/,main, https://github.com/nickel-lang/vim-nickel/,main,
https://github.com/bluz71/vim-nightfly-colors/,,nightfly
https://github.com/tommcdo/vim-ninja-feet/,, https://github.com/tommcdo/vim-ninja-feet/,,
https://github.com/LnL7/vim-nix/,, https://github.com/LnL7/vim-nix/,,
https://github.com/symphorien/vim-nixhash/,, https://github.com/symphorien/vim-nixhash/,,
@ -1436,7 +1438,6 @@ https://github.com/bohlender/vim-smt2/,,
https://github.com/justinmk/vim-sneak/,, https://github.com/justinmk/vim-sneak/,,
https://github.com/garbas/vim-snipmate/,, https://github.com/garbas/vim-snipmate/,,
https://github.com/honza/vim-snippets/,, https://github.com/honza/vim-snippets/,,
https://github.com/jhradilek/vim-snippets/,,vim-docbk-snippets
https://github.com/lifepillar/vim-solarized8/,HEAD, https://github.com/lifepillar/vim-solarized8/,HEAD,
https://github.com/tomlion/vim-solidity/,, https://github.com/tomlion/vim-solidity/,,
https://github.com/christoomey/vim-sort-motion/,, https://github.com/christoomey/vim-sort-motion/,,
@ -1565,7 +1566,6 @@ https://github.com/Lilja/zellij.nvim/,HEAD,
https://github.com/folke/zen-mode.nvim/,, https://github.com/folke/zen-mode.nvim/,,
https://github.com/zenbones-theme/zenbones.nvim/,HEAD, https://github.com/zenbones-theme/zenbones.nvim/,HEAD,
https://github.com/jnurmine/zenburn/,, https://github.com/jnurmine/zenburn/,,
https://github.com/phha/zenburn.nvim/,,phha-zenburn
https://github.com/nvimdev/zephyr-nvim/,, https://github.com/nvimdev/zephyr-nvim/,,
https://github.com/ziglang/zig.vim/,, https://github.com/ziglang/zig.vim/,,
https://github.com/zk-org/zk-nvim/,HEAD, https://github.com/zk-org/zk-nvim/,HEAD,

View file

@ -1049,26 +1049,26 @@ let
sources = { sources = {
"x86_64-linux" = { "x86_64-linux" = {
arch = "linux-x64"; arch = "linux-x64";
hash = "sha256-X6Oszc88F0ENABwX63uwxbJ4VPQOQzZbJA87znVg5d8="; hash = "sha256-+/0ZQkRS6AD8u5+t2hiPwQxzwhEc+n2F0GVk1s0n74U=";
}; };
"x86_64-darwin" = { "x86_64-darwin" = {
arch = "darwin-x64"; arch = "darwin-x64";
hash = "sha256-NH3kGmNZpKofNplw+FRJFvV3m36HRuIqGR3zt6X5x60="; hash = "sha256-FZbTBPn12pv9bQWqfWwPapFLTpp5nclp0RH/WZc6/r4=";
}; };
"aarch64-linux" = { "aarch64-linux" = {
arch = "linux-arm64"; arch = "linux-arm64";
hash = "sha256-hlFAMz17cl2/1CK7/dgrLktcPZYAcccIWIpkAVdwpkI="; hash = "sha256-e6zfflFgxVuikWwQuU6ImEuVk8xgi2HyY8uZwBoQiLU=";
}; };
"aarch64-darwin" = { "aarch64-darwin" = {
arch = "darwin-arm64"; arch = "darwin-arm64";
hash = "sha256-oVkmdw0sHv5Y+ysT4zWW6qFDh/h4/TcgSAauh1KrE1c="; hash = "sha256-SfA9wkvYT2Vb3GpJRjWE6lzZAXdFCnEKoKl0hjT0Llw=";
}; };
}; };
in in
{ {
name = "continue"; name = "continue";
publisher = "Continue"; publisher = "Continue";
version = "0.8.44"; version = "0.8.54";
} }
// sources.${stdenv.system}; // sources.${stdenv.system};
nativeBuildInputs = lib.optionals stdenv.hostPlatform.isLinux [ autoPatchelfHook ]; nativeBuildInputs = lib.optionals stdenv.hostPlatform.isLinux [ autoPatchelfHook ];
@ -1740,8 +1740,8 @@ let
mktplcRef = { mktplcRef = {
name = "prettier-vscode"; name = "prettier-vscode";
publisher = "esbenp"; publisher = "esbenp";
version = "10.4.0"; version = "11.0.0";
hash = "sha256-8+90cZpqyH+wBgPFaX5GaU6E02yBWUoB+T9C2z2Ix8c="; hash = "sha256-pNjkJhof19cuK0PsXJ/Q/Zb2H7eoIkfXJMLZJ4lDn7k=";
}; };
meta = { meta = {
changelog = "https://marketplace.visualstudio.com/items/esbenp.prettier-vscode/changelog"; changelog = "https://marketplace.visualstudio.com/items/esbenp.prettier-vscode/changelog";
@ -3627,8 +3627,14 @@ let
}; };
}; };
ms-vscode-remote.vscode-remote-extensionpack =
callPackage ./ms-vscode-remote.vscode-remote-extensionpack
{ };
ms-vsliveshare.vsliveshare = callPackage ./ms-vsliveshare.vsliveshare { }; ms-vsliveshare.vsliveshare = callPackage ./ms-vsliveshare.vsliveshare { };
ms-windows-ai-studio.windows-ai-studio = callPackage ./ms-windows-ai-studio.windows-ai-studio { };
mshr-h.veriloghdl = buildVscodeMarketplaceExtension { mshr-h.veriloghdl = buildVscodeMarketplaceExtension {
mktplcRef = { mktplcRef = {
name = "veriloghdl"; name = "veriloghdl";
@ -4151,6 +4157,23 @@ let
}; };
}; };
sainnhe.gruvbox-material = buildVscodeMarketplaceExtension {
mktplcRef = {
name = "gruvbox-material";
publisher = "sainnhe";
version = "6.5.2";
hash = "sha256-D+SZEQQwjZeuyENOYBJGn8tqS3cJiWbEkmEqhNRY/i4=";
};
meta = {
changelog = "https://marketplace.visualstudio.com/items/sainnhe.gruvbox-material/changelog";
description = "Gruvbox Material theme VSCode extension with Material palette";
downloadPage = "https://marketplace.visualstudio.com/items?itemName=sainnhe.gruvbox-material";
homepage = "https://github.com/sainnhe/gruvbox-material-vscode";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ thtrf ];
};
};
samuelcolvin.jinjahtml = buildVscodeMarketplaceExtension { samuelcolvin.jinjahtml = buildVscodeMarketplaceExtension {
mktplcRef = { mktplcRef = {
name = "jinjahtml"; name = "jinjahtml";
@ -4301,8 +4324,8 @@ let
mktplcRef = { mktplcRef = {
publisher = "shd101wyy"; publisher = "shd101wyy";
name = "markdown-preview-enhanced"; name = "markdown-preview-enhanced";
version = "0.8.14"; version = "0.8.15";
hash = "sha256-vCuuPB/GTkM2xCBn1UF3CZwP49Ge/8eelHhg67EG7tQ="; hash = "sha256-aW2Ri73xIl/1q/Yoi5qg25fjx7l55QfXAn+M+JuoN+A=";
}; };
meta = { meta = {
description = "Provides a live preview of markdown using either markdown-it or pandoc"; description = "Provides a live preview of markdown using either markdown-it or pandoc";
@ -4531,8 +4554,8 @@ let
mktplcRef = { mktplcRef = {
name = "code-spell-checker"; name = "code-spell-checker";
publisher = "streetsidesoftware"; publisher = "streetsidesoftware";
version = "4.0.14"; version = "4.0.15";
hash = "sha256-b87sBCprMMfxsP8lyMM3yI82YvKZd5Jc+Z/x7uflnL0="; hash = "sha256-Zow0laXwORa3V5Hy40pWDa/+Xq7kQbgn/Ia6PrJxI6E=";
}; };
meta = { meta = {
changelog = "https://marketplace.visualstudio.com/items/streetsidesoftware.code-spell-checker/changelog"; changelog = "https://marketplace.visualstudio.com/items/streetsidesoftware.code-spell-checker/changelog";

View file

@ -0,0 +1,20 @@
{
lib,
vscode-utils,
}:
vscode-utils.buildVscodeMarketplaceExtension {
mktplcRef = {
name = "vscode-remote-extensionpack";
publisher = "ms-vscode-remote";
version = "0.26.0";
hash = "sha256-YUo0QbJILa9BzWub6Wi6cDD/Zsy/H8LZ8j+9H+5pVHY=";
};
meta = {
description = "A Visual Studio Code extension pack that lets you open any folder in a container, on a remote machine, or in WSL and take advantage of VS Code's full feature set";
homepage = "https://github.com/Microsoft/vscode-remote-release";
license = lib.licenses.unfree;
maintainers = with lib.maintainers; [ drupol ];
};
}

View file

@ -0,0 +1,20 @@
{
lib,
vscode-utils,
}:
vscode-utils.buildVscodeMarketplaceExtension {
mktplcRef = {
name = "windows-ai-studio";
publisher = "ms-windows-ai-studio";
version = "0.6.1";
hash = "sha256-BAA7wSfyJ4y8how+NnaGdCf/BCU6aOmI8ew8qpcQCnY=";
};
meta = {
description = "A Visual Studio Code an extension to help developers and AI engineers to easily build AI apps through developing and testing with generative AI models locally or in the cloud";
homepage = "https://github.com/Microsoft/windows-ai-studio";
license = lib.licenses.unfree;
maintainers = with lib.maintainers; [ drupol ];
};
}

View file

@ -10,8 +10,8 @@ vscode-utils.buildVscodeMarketplaceExtension {
mktplcRef = { mktplcRef = {
name = "sourcery"; name = "sourcery";
publisher = "sourcery"; publisher = "sourcery";
version = "1.23.0"; version = "1.24.0";
hash = "sha256-wMky9whajltZYD3PUG+LCzuK9S5t55+3tRjTyA8kFcY="; hash = "sha256-T2AbGxBytHXWP/ZKBhglRRbvPZ6px90XnSadwZTe/BM=";
}; };
postPatch = '' postPatch = ''

View file

@ -5,6 +5,7 @@
, cmake , cmake
, wrapQtAppsHook , wrapQtAppsHook
, qtbase , qtbase
, qtsvg
, bluez , bluez
, ffmpeg , ffmpeg
, libao , libao
@ -48,13 +49,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "dolphin-emu-primehack"; pname = "dolphin-emu-primehack";
version = "1.0.6a"; version = "1.0.7a";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "shiiion"; owner = "shiiion";
repo = "dolphin"; repo = "dolphin";
rev = version; rev = version;
hash = "sha256-gc4+ofoLKR+cvm+SaWEnGaKrSjWMKq7pF6pEIi75Rtk="; hash = "sha256-vuTSXQHnR4HxAGGiPg5tUzfiXROU3+E9kyjH+T6zVmc=";
fetchSubmodules = true; fetchSubmodules = true;
}; };
@ -93,6 +94,7 @@ stdenv.mkDerivation rec {
fmt fmt
xz xz
qtbase qtbase
qtsvg
] ++ lib.optionals stdenv.hostPlatform.isLinux [ ] ++ lib.optionals stdenv.hostPlatform.isLinux [
bluez bluez
udev udev

View file

@ -9,13 +9,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "wibo"; pname = "wibo";
version = "0.4.2"; version = "0.6.14";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "decompals"; owner = "decompals";
repo = "wibo"; repo = "wibo";
rev = version; rev = version;
hash = "sha256-oq/i0Hb2y5pwDEvaqSyC4+6LH1oUbvDZ/62l+V3S7Uk="; hash = "sha256-6YcraHBFWmm8TBfuFHbM9jGvUm9KvTOplJrFSTQkt70=";
}; };
nativeBuildInputs = [ nativeBuildInputs = [
@ -29,8 +29,8 @@ stdenv.mkDerivation rec {
gc = srcOnly { gc = srcOnly {
name = "GC_WII_COMPILERS"; name = "GC_WII_COMPILERS";
src = fetchzip { src = fetchzip {
url = "https://cdn.discordapp.com/attachments/727918646525165659/917185027656286218/GC_WII_COMPILERS.zip"; url = "https://files.decomp.dev/compilers_20230715.zip";
hash = "sha256-o+UrmIbCsa74LxtLofT0DKrTRgT0qDK5/V7GsG2Zprc="; hash = "sha256-IX3byvEUVJB6Rmc+NqO9ZNt1jl95nQpEIqxbHI+uUio=";
stripRoot = false; stripRoot = false;
}; };
meta.license = lib.licenses.unfree; meta.license = lib.licenses.unfree;

View file

@ -1,12 +0,0 @@
diff --git a/intern/smoke/intern/WAVELET_NOISE.h b/intern/smoke/intern/WAVELET_NOISE.h
index fce901b..1f73c5e 100644
--- a/intern/smoke/intern/WAVELET_NOISE.h
+++ b/intern/smoke/intern/WAVELET_NOISE.h
@@ -43,6 +43,7 @@
#ifndef WAVELET_NOISE_H
#define WAVELET_NOISE_H
+#include <string.h>
#include <MERSENNETWISTER.h>
#ifdef WIN32

View file

@ -8,16 +8,16 @@
rustPlatform.buildRustPackage rec { rustPlatform.buildRustPackage rec {
pname = "cotp"; pname = "cotp";
version = "1.9.1"; version = "1.9.2";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "replydev"; owner = "replydev";
repo = "cotp"; repo = "cotp";
rev = "v${version}"; rev = "v${version}";
hash = "sha256-U5x8szvouoxJ+DZUlrn5wtXt+6vs62tzcWICQW3B21U="; hash = "sha256-5wVIjh16AYwrzjbPgvjsQhihu/vwdQfzU2kZS6eSTWs=";
}; };
cargoHash = "sha256-o9LRXbx77EXXO7rEmpBrx2nommJgG0ikw1YzdeB0Gug="; cargoHash = "sha256-DMswC+Qp6w7Dcp5YYV4EGWUylv/ouG0ukAdCdDnOA/8=";
buildInputs = lib.optionals stdenv.hostPlatform.isLinux [ libxcb ] buildInputs = lib.optionals stdenv.hostPlatform.isLinux [ libxcb ]
++ lib.optionals stdenv.hostPlatform.isDarwin [ AppKit ]; ++ lib.optionals stdenv.hostPlatform.isDarwin [ AppKit ];

View file

@ -208,7 +208,7 @@ stdenv.mkDerivation (finalAttrs: {
description = "G-code generator for 3D printer"; description = "G-code generator for 3D printer";
homepage = "https://github.com/prusa3d/PrusaSlicer"; homepage = "https://github.com/prusa3d/PrusaSlicer";
license = licenses.agpl3Plus; license = licenses.agpl3Plus;
maintainers = with maintainers; [ moredread tweber tmarkus ]; maintainers = with maintainers; [ tweber tmarkus ];
platforms = platforms.unix; platforms = platforms.unix;
} // lib.optionalAttrs (stdenv.hostPlatform.isDarwin) { } // lib.optionalAttrs (stdenv.hostPlatform.isDarwin) {
mainProgram = "PrusaSlicer"; mainProgram = "PrusaSlicer";

View file

@ -88,7 +88,7 @@ let
inherit description; inherit description;
homepage = "https://github.com/supermerill/SuperSlicer"; homepage = "https://github.com/supermerill/SuperSlicer";
license = licenses.agpl3Plus; license = licenses.agpl3Plus;
maintainers = with maintainers; [ cab404 moredread tmarkus ]; maintainers = with maintainers; [ cab404 tmarkus ];
mainProgram = "superslicer"; mainProgram = "superslicer";
}; };

View file

@ -1,77 +0,0 @@
From 9dd8048e28b65da0b904dfbace482f70ae768fd8 Mon Sep 17 00:00:00 2001
From: Jeff Muizelaar <jmuizelaar@mozilla.com>
Date: Tue, 5 Mar 2024 04:12:28 +0100
Subject: [PATCH] Bug 1882291. Switch to stdarch_arm_neon_intrinsics feature on
rust >=1.78. r=glandium
We only need this on ARM32 because the ARM64 intrinsics are stable.
stdarch_arm_neon_intrinsics was split out from stdsimd here:
https://github.com/rust-lang/stdarch/pull/1486
Differential Revision: https://phabricator.services.mozilla.com/D203039
---
Cargo.lock | 1 +
gfx/qcms/Cargo.toml | 3 +++
gfx/qcms/build.rs | 7 +++++++
gfx/qcms/src/lib.rs | 6 ++++--
4 files changed, 15 insertions(+), 2 deletions(-)
create mode 100644 gfx/qcms/build.rs
diff --git a/Cargo.lock b/Cargo.lock
index aba397832e..8f0a879a87 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -4276,6 +4276,7 @@ name = "qcms"
version = "0.2.0"
dependencies = [
"libc",
+ "version_check",
]
[[package]]
diff --git a/gfx/qcms/Cargo.toml b/gfx/qcms/Cargo.toml
index e976054a7b..f50d6623a1 100644
--- a/gfx/qcms/Cargo.toml
+++ b/gfx/qcms/Cargo.toml
@@ -20,3 +20,6 @@ cmyk = []
[dependencies]
libc = {version = "0.2", optional = true }
+
+[build-dependencies]
+version_check = "0.9"
diff --git a/gfx/qcms/build.rs b/gfx/qcms/build.rs
new file mode 100644
index 0000000000..6810a8828e
--- /dev/null
+++ b/gfx/qcms/build.rs
@@ -0,0 +1,7 @@
+extern crate version_check as rustc;
+
+fn main() {
+ if rustc::is_min_version("1.78.0").unwrap_or(false) {
+ println!("cargo:rustc-cfg=stdsimd_split");
+ }
+}
diff --git a/gfx/qcms/src/lib.rs b/gfx/qcms/src/lib.rs
index c311964ee3..fc496816a8 100644
--- a/gfx/qcms/src/lib.rs
+++ b/gfx/qcms/src/lib.rs
@@ -7,9 +7,11 @@
#![allow(non_upper_case_globals)]
// These are needed for the neon SIMD code and can be removed once the MSRV supports the
// instrinsics we use
-#![cfg_attr(feature = "neon", feature(stdsimd))]
+#![cfg_attr(all(stdsimd_split, target_arch = "arm", feature = "neon"), feature(stdarch_arm_neon_intrinsics))]
+#![cfg_attr(all(stdsimd_split, target_arch = "arm", feature = "neon"), feature(stdarch_arm_feature_detection))]
+#![cfg_attr(all(not(stdsimd_split), target_arch = "arm", feature = "neon"), feature(stdsimd))]
#![cfg_attr(
- feature = "neon",
+ all(target_arch = "arm", feature = "neon"),
feature(arm_target_feature, raw_ref_op)
)]
--
2.44.0

View file

@ -109,6 +109,8 @@ stdenv.mkDerivation (finalAttrs: {
env.CFLAGS = lib.optionalString stdenv.hostPlatform.isDarwin "-D_DARWIN_C_SOURCE"; env.CFLAGS = lib.optionalString stdenv.hostPlatform.isDarwin "-D_DARWIN_C_SOURCE";
env.NIX_LDFLAGS = lib.optionalString stdenv.hostPlatform.isDarwin "-liconv";
patchPhase = lib.optionalString stdenv.cc.isClang '' patchPhase = lib.optionalString stdenv.cc.isClang ''
runHook prePatch runHook prePatch

View file

@ -27,6 +27,12 @@ let
nativeBuildInputs = [ installShellFiles ]; nativeBuildInputs = [ installShellFiles ];
ldflags = [
"-X github.com/hashicorp/nomad/version.Version=${version}"
"-X github.com/hashicorp/nomad/version.VersionPrerelease="
"-X github.com/hashicorp/nomad/version.BuildDate=1970-01-01T00:00:00Z"
];
# ui: # ui:
# Nomad release commits include the compiled version of the UI, but the file # Nomad release commits include the compiled version of the UI, but the file
# is only included if we build with the ui tag. # is only included if we build with the ui tag.
@ -89,9 +95,9 @@ rec {
nomad_1_9 = generic { nomad_1_9 = generic {
buildGoModule = buildGo123Module; buildGoModule = buildGo123Module;
version = "1.9.0"; version = "1.9.2";
sha256 = "sha256-MJNPYSH3KsRmGQeOcWw4VvDeFGinfsyGSo4q3OdOZo8="; sha256 = "sha256-HIyRzujAGwhB2anbxidhq5UpWYHkigyyHfxIUwMF5X8=";
vendorHash = "sha256-Ss/qwQ14VUu40nXaIgTfNuj95ekTTVrY+zcStFDSCyI="; vendorHash = "sha256-YIOTdD+oRDdEHkBzQCUuKCz7Wbj4mFjrZY0J3Cte400=";
license = lib.licenses.bsl11; license = lib.licenses.bsl11;
passthru.tests.nomad = nixosTests.nomad; passthru.tests.nomad = nixosTests.nomad;
preCheck = '' preCheck = ''

View file

@ -175,7 +175,6 @@ stdenv.mkDerivation rec {
libnotify libnotify
libdbusmenu libdbusmenu
pipewire pipewire
stdenv.cc.cc
xdg-utils xdg-utils
wayland wayland
]; ];

View file

@ -1,168 +0,0 @@
{
lib,
stdenv,
fetchurl,
fetchzip,
makeWrapper,
makeDesktopItem,
zlib,
glib,
libpng,
freetype,
openssl,
xorg,
fontconfig,
qtbase,
qtwebengine,
qtwebchannel,
qtsvg,
qtwebsockets,
xkeyboard_config,
alsa-lib,
libpulseaudio ? null,
libredirect,
quazip,
which,
perl,
llvmPackages,
}:
let
arch = "amd64";
libDir = "lib64";
deps = [
zlib
glib
libpng
freetype
xorg.libSM
xorg.libICE
xorg.libXrender
openssl
xorg.libXrandr
xorg.libXfixes
xorg.libXcursor
xorg.libXinerama
xorg.libxcb
fontconfig
xorg.libXext
xorg.libX11
alsa-lib
qtbase
qtwebengine
qtwebchannel
qtsvg
qtwebsockets
libpulseaudio
quazip
llvmPackages.libcxx
];
desktopItem = makeDesktopItem {
name = "teamspeak";
exec = "ts3client";
icon = "teamspeak";
comment = "The TeamSpeak voice communication tool";
desktopName = "TeamSpeak";
genericName = "TeamSpeak";
categories = [ "Network" ];
};
in
stdenv.mkDerivation rec {
pname = "teamspeak-client";
version = "3.6.2";
src = fetchurl {
url = "https://files.teamspeak-services.com/releases/client/${version}/TeamSpeak3-Client-linux_${arch}-${version}.run";
hash = "sha256-WfEQQ4lxoj+QSnAOfdCoEc+Z1Oa5dbo6pFli1DsAZCI=";
};
# grab the plugin sdk for the desktop icon
pluginsdk = fetchzip {
url = "https://files.teamspeak-services.com/releases/sdk/3.3.1/ts_sdk_3.3.1.zip";
hash = "sha256-wx4pBZHpFPoNvEe4xYE80KnXGVda9XcX35ho4R8QxrQ=";
};
nativeBuildInputs = [
makeWrapper
which
perl # Installer script needs `shasum`
];
# This just runs the installer script. If it gets stuck at something like
# ++ exec
# + PAGER_PATH=
# it's looking for a dependency and didn't find it. Check the script and make sure the dep is in nativeBuildInputs.
unpackPhase = ''
echo -e '\ny' | PAGER=cat sh -xe $src
cd TeamSpeak*
'';
buildPhase = ''
mv ts3client_linux_${arch} ts3client
echo "patching ts3client..."
patchelf --replace-needed libquazip.so ${quazip}/lib/libquazip1-qt5.so ts3client
patchelf \
--interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
--set-rpath ${lib.makeLibraryPath deps}:$(cat $NIX_CC/nix-support/orig-cc)/${libDir} \
--force-rpath \
ts3client
'';
installPhase =
''
# Delete unecessary libraries - these are provided by nixos.
rm *.so.* *.so
rm QtWebEngineProcess
rm qt.conf
rm -r platforms # contains libqxcb.so
# Install files.
mkdir -p $out/lib/teamspeak
mv * $out/lib/teamspeak/
# Make a desktop item
mkdir -p $out/share/applications/ $out/share/icons/hicolor/64x64/apps/
cp ${pluginsdk}/doc/_static/logo.png $out/share/icons/hicolor/64x64/apps/teamspeak.png
cp ${desktopItem}/share/applications/* $out/share/applications/
# Make a symlink to the binary from bin.
mkdir -p $out/bin/
ln -s $out/lib/teamspeak/ts3client $out/bin/ts3client
wrapProgram $out/bin/ts3client \
--set LD_PRELOAD "${libredirect}/lib/libredirect.so" \
--set QT_PLUGIN_PATH "${qtbase}/${qtbase.qtPluginPrefix}" \
'' # wayland is currently broken, remove when TS3 fixes that
+ ''
--set QT_QPA_PLATFORM xcb \
--set NIX_REDIRECTS /usr/share/X11/xkb=${xkeyboard_config}/share/X11/xkb
'';
dontStrip = true;
dontPatchELF = true;
meta = with lib; {
description = "TeamSpeak voice communication tool";
homepage = "https://teamspeak.com/";
sourceProvenance = with sourceTypes; [ binaryNativeCode ];
license = {
# See distribution-permit.txt for a confirmation that nixpkgs is allowed to distribute TeamSpeak.
fullName = "Teamspeak client license";
url = "https://www.teamspeak.com/en/privacy-and-terms/";
free = false;
};
maintainers = with maintainers; [
lhvwb
lukegb
atemu
];
mainProgram = "ts3client";
platforms = [ "x86_64-linux" ];
};
}

View file

@ -1,11 +0,0 @@
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1535,7 +1535,7 @@ checksum = "7300fbefb4dadc1af235a9cef3737cea692a9d97e1b9cbcd4ebdae6f8868e6fb"
[[package]]
name = "tiny"
-version = "0.10.0"
+version = "0.11.0"
dependencies = [
"clap",
"dirs",

View file

@ -69,8 +69,8 @@ in rec {
thunderbird-esr = thunderbird-128; thunderbird-esr = thunderbird-128;
thunderbird-128 = common { thunderbird-128 = common {
version = "128.4.0esr"; version = "128.4.2esr";
sha512 = "ad031b3a9b738598358cead23cf8438435016222cd9a474c31892dc1b3db43d2d5d3a10c9639df770dc76eb3c0bc9db8be8beab84828d54ee50fc1e03f0da0a5"; sha512 = "4e37b77eb4652bc36585656bd3fe5416053f6a1a96ed1ca64c17d8d73031c746cb3832fd275d25f1283d20e18aa3e7b1df6d67864ced21b5f73042a42767cb45";
updateScript = callPackage ./update.nix { updateScript = callPackage ./update.nix {
attrPath = "thunderbirdPackages.thunderbird-128"; attrPath = "thunderbirdPackages.thunderbird-128";

View file

@ -21,14 +21,14 @@
buildPythonApplication rec { buildPythonApplication rec {
pname = "protonvpn-gui"; pname = "protonvpn-gui";
version = "4.6.0"; version = "4.7.3";
pyproject = true; pyproject = true;
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "ProtonVPN"; owner = "ProtonVPN";
repo = "proton-vpn-gtk-app"; repo = "proton-vpn-gtk-app";
rev = "refs/tags/v${version}"; rev = "refs/tags/v${version}";
hash = "sha256-GCfr6x0KbIJr2r4UcFtMjuyHZVyDLKPvgtjdpTCb5Ro="; hash = "sha256-LcHloc4iHDgP6RCwFvJM6GfzTRd3RqYo0medjEhmj6M=";
}; };
nativeBuildInputs = [ nativeBuildInputs = [

View file

@ -548,7 +548,9 @@ in stdenv.mkDerivation (finalAttrs: {
buildTargets = [ "build-nocheck" ]; buildTargets = [ "build-nocheck" ];
doCheck = true; # Disable tests for the Qt5 build, as they seem even more flaky
# than usual, and we will drop the Qt5 build after 24.11 anyway.
doCheck = !(kdeIntegration && qtMajor == "5");
preCheck = '' preCheck = ''
export HOME=$(pwd) export HOME=$(pwd)

View file

@ -105,11 +105,11 @@
md5name = "89c5c6665337f56fd2db36bc3805a5619709d51fb136e51937072f63fcc717a7-cppunit-1.15.1.tar.gz"; md5name = "89c5c6665337f56fd2db36bc3805a5619709d51fb136e51937072f63fcc717a7-cppunit-1.15.1.tar.gz";
} }
{ {
name = "curl-8.9.0.tar.xz"; name = "curl-8.10.1.tar.xz";
url = "https://dev-www.libreoffice.org/src/curl-8.9.0.tar.xz"; url = "https://dev-www.libreoffice.org/src/curl-8.10.1.tar.xz";
sha256 = "ff09b2791ca56d25fd5c3f3a4927dce7c8a9dc4182200c487ca889fba1fdd412"; sha256 = "73a4b0e99596a09fa5924a4fb7e4b995a85fda0d18a2c02ab9cf134bebce04ee";
md5 = ""; md5 = "";
md5name = "ff09b2791ca56d25fd5c3f3a4927dce7c8a9dc4182200c487ca889fba1fdd412-curl-8.9.0.tar.xz"; md5name = "73a4b0e99596a09fa5924a4fb7e4b995a85fda0d18a2c02ab9cf134bebce04ee-curl-8.10.1.tar.xz";
} }
{ {
name = "libe-book-0.1.3.tar.xz"; name = "libe-book-0.1.3.tar.xz";
@ -147,11 +147,11 @@
md5name = "b430435a6e8487888b761dc848b7981626eb814884963ffe25eb26a139301e9a-libetonyek-0.1.10.tar.xz"; md5name = "b430435a6e8487888b761dc848b7981626eb814884963ffe25eb26a139301e9a-libetonyek-0.1.10.tar.xz";
} }
{ {
name = "expat-2.6.2.tar.xz"; name = "expat-2.6.3.tar.xz";
url = "https://dev-www.libreoffice.org/src/expat-2.6.2.tar.xz"; url = "https://dev-www.libreoffice.org/src/expat-2.6.3.tar.xz";
sha256 = "ee14b4c5d8908b1bec37ad937607eab183d4d9806a08adee472c3c3121d27364"; sha256 = "274db254a6979bde5aad404763a704956940e465843f2a9bd9ed7af22e2c0efc";
md5 = ""; md5 = "";
md5name = "ee14b4c5d8908b1bec37ad937607eab183d4d9806a08adee472c3c3121d27364-expat-2.6.2.tar.xz"; md5name = "274db254a6979bde5aad404763a704956940e465843f2a9bd9ed7af22e2c0efc-expat-2.6.3.tar.xz";
} }
{ {
name = "Firebird-3.0.7.33374-0.tar.bz2"; name = "Firebird-3.0.7.33374-0.tar.bz2";
@ -658,11 +658,11 @@
md5name = "bb2dc4898180bea79863d5487e5f9c7c34297414bad54bcd0f0852aee9cfdb87-lxml-5.2.2.tar.gz"; md5name = "bb2dc4898180bea79863d5487e5f9c7c34297414bad54bcd0f0852aee9cfdb87-lxml-5.2.2.tar.gz";
} }
{ {
name = "mariadb-connector-c-3.3.8-src.tar.gz"; name = "mariadb-connector-c-3.3.11-src.tar.gz";
url = "https://dev-www.libreoffice.org/src/mariadb-connector-c-3.3.8-src.tar.gz"; url = "https://dev-www.libreoffice.org/src/mariadb-connector-c-3.3.11-src.tar.gz";
sha256 = "f9f076b4aa9fb22cc94b24f82c80f9ef063805ecd6533a2eb5d5060cf93833e8"; sha256 = "f7ba02f70aa2ae2b13e9ee5acc78423f6bede38998afb91326a62be46cf5956a";
md5 = ""; md5 = "";
md5name = "f9f076b4aa9fb22cc94b24f82c80f9ef063805ecd6533a2eb5d5060cf93833e8-mariadb-connector-c-3.3.8-src.tar.gz"; md5name = "f7ba02f70aa2ae2b13e9ee5acc78423f6bede38998afb91326a62be46cf5956a-mariadb-connector-c-3.3.11-src.tar.gz";
} }
{ {
name = "mdds-2.1.1.tar.xz"; name = "mdds-2.1.1.tar.xz";
@ -742,11 +742,11 @@
md5name = "48969323e94e3be3b03c6a132942dcba7ef8d545f2ad35401709019f696c3c4e-openldap-2.6.8.tgz"; md5name = "48969323e94e3be3b03c6a132942dcba7ef8d545f2ad35401709019f696c3c4e-openldap-2.6.8.tgz";
} }
{ {
name = "openssl-3.0.14.tar.gz"; name = "openssl-3.0.15.tar.gz";
url = "https://dev-www.libreoffice.org/src/openssl-3.0.14.tar.gz"; url = "https://dev-www.libreoffice.org/src/openssl-3.0.15.tar.gz";
sha256 = "eeca035d4dd4e84fc25846d952da6297484afa0650a6f84c682e39df3a4123ca"; sha256 = "23c666d0edf20f14249b3d8f0368acaee9ab585b09e1de82107c66e1f3ec9533";
md5 = ""; md5 = "";
md5name = "eeca035d4dd4e84fc25846d952da6297484afa0650a6f84c682e39df3a4123ca-openssl-3.0.14.tar.gz"; md5name = "23c666d0edf20f14249b3d8f0368acaee9ab585b09e1de82107c66e1f3ec9533-openssl-3.0.15.tar.gz";
} }
{ {
name = "liborcus-0.19.2.tar.xz"; name = "liborcus-0.19.2.tar.xz";
@ -777,25 +777,25 @@
md5name = "ea1480efada2fd948bc75366f7c349e1c96d3297d09a3fe62626e38e234a625e-pixman-0.42.2.tar.gz"; md5name = "ea1480efada2fd948bc75366f7c349e1c96d3297d09a3fe62626e38e234a625e-pixman-0.42.2.tar.gz";
} }
{ {
name = "libpng-1.6.43.tar.xz"; name = "libpng-1.6.44.tar.xz";
url = "https://dev-www.libreoffice.org/src/libpng-1.6.43.tar.xz"; url = "https://dev-www.libreoffice.org/src/libpng-1.6.44.tar.xz";
sha256 = "6a5ca0652392a2d7c9db2ae5b40210843c0bbc081cbd410825ab00cc59f14a6c"; sha256 = "60c4da1d5b7f0aa8d158da48e8f8afa9773c1c8baa5d21974df61f1886b8ce8e";
md5 = ""; md5 = "";
md5name = "6a5ca0652392a2d7c9db2ae5b40210843c0bbc081cbd410825ab00cc59f14a6c-libpng-1.6.43.tar.xz"; md5name = "60c4da1d5b7f0aa8d158da48e8f8afa9773c1c8baa5d21974df61f1886b8ce8e-libpng-1.6.44.tar.xz";
} }
{ {
name = "tiff-4.6.0t.tar.xz"; name = "tiff-4.7.0.tar.xz";
url = "https://dev-www.libreoffice.org/src/tiff-4.6.0t.tar.xz"; url = "https://dev-www.libreoffice.org/src/tiff-4.7.0.tar.xz";
sha256 = "d6da35c9986a4ec845eb96258b3693f8df515f7eb4c1e597ceb03e22788f305b"; sha256 = "273a0a73b1f0bed640afee4a5df0337357ced5b53d3d5d1c405b936501f71017";
md5 = ""; md5 = "";
md5name = "d6da35c9986a4ec845eb96258b3693f8df515f7eb4c1e597ceb03e22788f305b-tiff-4.6.0t.tar.xz"; md5name = "273a0a73b1f0bed640afee4a5df0337357ced5b53d3d5d1c405b936501f71017-tiff-4.7.0.tar.xz";
} }
{ {
name = "poppler-24.06.0.tar.xz"; name = "poppler-24.08.0.tar.xz";
url = "https://dev-www.libreoffice.org/src/poppler-24.06.0.tar.xz"; url = "https://dev-www.libreoffice.org/src/poppler-24.08.0.tar.xz";
sha256 = "0cdabd495cada11f6ee9e75c793f80daf46367b66c25a63ee8c26d0f9ec40c76"; sha256 = "97453fbddf0c9a9eafa0ea45ac710d3d49bcf23a62e864585385d3c0b4403174";
md5 = ""; md5 = "";
md5name = "0cdabd495cada11f6ee9e75c793f80daf46367b66c25a63ee8c26d0f9ec40c76-poppler-24.06.0.tar.xz"; md5name = "97453fbddf0c9a9eafa0ea45ac710d3d49bcf23a62e864585385d3c0b4403174-poppler-24.08.0.tar.xz";
} }
{ {
name = "poppler-data-0.4.12.tar.gz"; name = "poppler-data-0.4.12.tar.gz";
@ -805,18 +805,18 @@
md5name = "c835b640a40ce357e1b83666aabd95edffa24ddddd49b8daff63adb851cdab74-poppler-data-0.4.12.tar.gz"; md5name = "c835b640a40ce357e1b83666aabd95edffa24ddddd49b8daff63adb851cdab74-poppler-data-0.4.12.tar.gz";
} }
{ {
name = "postgresql-13.15.tar.bz2"; name = "postgresql-13.16.tar.bz2";
url = "https://dev-www.libreoffice.org/src/postgresql-13.15.tar.bz2"; url = "https://dev-www.libreoffice.org/src/postgresql-13.16.tar.bz2";
sha256 = "42edd415446d33b8c242be76d1ad057531b2264b2e86939339b7075c6e4ec925"; sha256 = "c9cbbb6129f02328204828066bb3785c00a85c8ca8fd329c2a8a53c1f5cd8865";
md5 = ""; md5 = "";
md5name = "42edd415446d33b8c242be76d1ad057531b2264b2e86939339b7075c6e4ec925-postgresql-13.15.tar.bz2"; md5name = "c9cbbb6129f02328204828066bb3785c00a85c8ca8fd329c2a8a53c1f5cd8865-postgresql-13.16.tar.bz2";
} }
{ {
name = "Python-3.9.19.tar.xz"; name = "Python-3.9.20.tar.xz";
url = "https://dev-www.libreoffice.org/src/Python-3.9.19.tar.xz"; url = "https://dev-www.libreoffice.org/src/Python-3.9.20.tar.xz";
sha256 = "d4892cd1618f6458cb851208c030df1482779609d0f3939991bd38184f8c679e"; sha256 = "6b281279efd85294d2d6993e173983a57464c0133956fbbb5536ec9646beaf0c";
md5 = ""; md5 = "";
md5name = "d4892cd1618f6458cb851208c030df1482779609d0f3939991bd38184f8c679e-Python-3.9.19.tar.xz"; md5name = "6b281279efd85294d2d6993e173983a57464c0133956fbbb5536ec9646beaf0c-Python-3.9.20.tar.xz";
} }
{ {
name = "libqxp-0.0.2.tar.xz"; name = "libqxp-0.0.2.tar.xz";

View file

@ -1,5 +1,5 @@
{ fetchurl, ... }: { fetchurl, ... }:
fetchurl { fetchurl {
sha256 = "1vbi2qbap3ccychc0sfn32z46klyzjh0hhk4in0sd7qkl97y6lvn"; sha256 = "1xlfs1380h9axqx37kp9nwq4bwlg08rm136ayzglaz57vx87vxsg";
url = "https://download.documentfoundation.org/libreoffice/src/24.8.0/libreoffice-help-24.8.0.3.tar.xz"; url = "https://download.documentfoundation.org/libreoffice/src/24.8.2/libreoffice-help-24.8.2.1.tar.xz";
} }

View file

@ -1,5 +1,5 @@
{ fetchurl, ... }: { fetchurl, ... }:
fetchurl { fetchurl {
sha256 = "1hbqgpgih3j9ic1dljxz3mz0rsjf0iyws7qm7g1hb35ns664c4av"; sha256 = "1ky4ph9g7x9k68px6x4dgfnf5wqbxqabkp75pjhsj521nsp1nc5b";
url = "https://download.documentfoundation.org/libreoffice/src/24.8.0/libreoffice-24.8.0.3.tar.xz"; url = "https://download.documentfoundation.org/libreoffice/src/24.8.2/libreoffice-24.8.2.1.tar.xz";
} }

View file

@ -1,5 +1,5 @@
{ fetchurl, ... }: { fetchurl, ... }:
fetchurl { fetchurl {
sha256 = "0p75xijrmp44kcda33xg5dr06xl1fcxwhxgvlcj396rkn2k0c9sy"; sha256 = "1yvfcwj9dr2216b9fyi89849jy4lw3jg2yqrx4dm30qdn07jqf3j";
url = "https://download.documentfoundation.org/libreoffice/src/24.8.0/libreoffice-translations-24.8.0.3.tar.xz"; url = "https://download.documentfoundation.org/libreoffice/src/24.8.2/libreoffice-translations-24.8.2.1.tar.xz";
} }

View file

@ -1 +1 @@
"24.8.0.3" "24.8.2.1"

View file

@ -105,11 +105,11 @@
md5name = "89c5c6665337f56fd2db36bc3805a5619709d51fb136e51937072f63fcc717a7-cppunit-1.15.1.tar.gz"; md5name = "89c5c6665337f56fd2db36bc3805a5619709d51fb136e51937072f63fcc717a7-cppunit-1.15.1.tar.gz";
} }
{ {
name = "curl-8.7.1.tar.xz"; name = "curl-8.10.1.tar.xz";
url = "https://dev-www.libreoffice.org/src/curl-8.7.1.tar.xz"; url = "https://dev-www.libreoffice.org/src/curl-8.10.1.tar.xz";
sha256 = "6fea2aac6a4610fbd0400afb0bcddbe7258a64c63f1f68e5855ebc0c659710cd"; sha256 = "73a4b0e99596a09fa5924a4fb7e4b995a85fda0d18a2c02ab9cf134bebce04ee";
md5 = ""; md5 = "";
md5name = "6fea2aac6a4610fbd0400afb0bcddbe7258a64c63f1f68e5855ebc0c659710cd-curl-8.7.1.tar.xz"; md5name = "73a4b0e99596a09fa5924a4fb7e4b995a85fda0d18a2c02ab9cf134bebce04ee-curl-8.10.1.tar.xz";
} }
{ {
name = "libe-book-0.1.3.tar.xz"; name = "libe-book-0.1.3.tar.xz";
@ -147,11 +147,11 @@
md5name = "b430435a6e8487888b761dc848b7981626eb814884963ffe25eb26a139301e9a-libetonyek-0.1.10.tar.xz"; md5name = "b430435a6e8487888b761dc848b7981626eb814884963ffe25eb26a139301e9a-libetonyek-0.1.10.tar.xz";
} }
{ {
name = "expat-2.6.2.tar.xz"; name = "expat-2.6.3.tar.xz";
url = "https://dev-www.libreoffice.org/src/expat-2.6.2.tar.xz"; url = "https://dev-www.libreoffice.org/src/expat-2.6.3.tar.xz";
sha256 = "ee14b4c5d8908b1bec37ad937607eab183d4d9806a08adee472c3c3121d27364"; sha256 = "274db254a6979bde5aad404763a704956940e465843f2a9bd9ed7af22e2c0efc";
md5 = ""; md5 = "";
md5name = "ee14b4c5d8908b1bec37ad937607eab183d4d9806a08adee472c3c3121d27364-expat-2.6.2.tar.xz"; md5name = "274db254a6979bde5aad404763a704956940e465843f2a9bd9ed7af22e2c0efc-expat-2.6.3.tar.xz";
} }
{ {
name = "Firebird-3.0.7.33374-0.tar.bz2"; name = "Firebird-3.0.7.33374-0.tar.bz2";
@ -630,11 +630,11 @@
md5name = "4003c56b3d356d21b1db7775318540fad6bfedaf5f117e8f7c010811219be3cf-xmlsec1-1.3.2.tar.gz"; md5name = "4003c56b3d356d21b1db7775318540fad6bfedaf5f117e8f7c010811219be3cf-xmlsec1-1.3.2.tar.gz";
} }
{ {
name = "libxml2-2.12.8.tar.xz"; name = "libxml2-2.12.9.tar.xz";
url = "https://dev-www.libreoffice.org/src/libxml2-2.12.8.tar.xz"; url = "https://dev-www.libreoffice.org/src/libxml2-2.12.9.tar.xz";
sha256 = "43ad877b018bc63deb2468d71f95219c2fac196876ef36d1bee51d226173ec93"; sha256 = "59912db536ab56a3996489ea0299768c7bcffe57169f0235e7f962a91f483590";
md5 = ""; md5 = "";
md5name = "43ad877b018bc63deb2468d71f95219c2fac196876ef36d1bee51d226173ec93-libxml2-2.12.8.tar.xz"; md5name = "59912db536ab56a3996489ea0299768c7bcffe57169f0235e7f962a91f483590-libxml2-2.12.9.tar.xz";
} }
{ {
name = "libxslt-1.1.39.tar.xz"; name = "libxslt-1.1.39.tar.xz";
@ -658,11 +658,11 @@
md5name = "2455cfaeb7ac70338b3257f41e21f0724f4b5b0c0e7702da67ee6c3640835b67-lxml-4.9.2.tgz"; md5name = "2455cfaeb7ac70338b3257f41e21f0724f4b5b0c0e7702da67ee6c3640835b67-lxml-4.9.2.tgz";
} }
{ {
name = "mariadb-connector-c-3.3.8-src.tar.gz"; name = "mariadb-connector-c-3.3.11-src.tar.gz";
url = "https://dev-www.libreoffice.org/src/mariadb-connector-c-3.3.8-src.tar.gz"; url = "https://dev-www.libreoffice.org/src/mariadb-connector-c-3.3.11-src.tar.gz";
sha256 = "f9f076b4aa9fb22cc94b24f82c80f9ef063805ecd6533a2eb5d5060cf93833e8"; sha256 = "f7ba02f70aa2ae2b13e9ee5acc78423f6bede38998afb91326a62be46cf5956a";
md5 = ""; md5 = "";
md5name = "f9f076b4aa9fb22cc94b24f82c80f9ef063805ecd6533a2eb5d5060cf93833e8-mariadb-connector-c-3.3.8-src.tar.gz"; md5name = "f7ba02f70aa2ae2b13e9ee5acc78423f6bede38998afb91326a62be46cf5956a-mariadb-connector-c-3.3.11-src.tar.gz";
} }
{ {
name = "mdds-2.1.1.tar.xz"; name = "mdds-2.1.1.tar.xz";
@ -700,11 +700,11 @@
md5name = "19279f70707bbe5ffa619f2dc319f888cec0c4a8d339dc0a21330517bd6f521d-mythes-1.2.5.tar.xz"; md5name = "19279f70707bbe5ffa619f2dc319f888cec0c4a8d339dc0a21330517bd6f521d-mythes-1.2.5.tar.xz";
} }
{ {
name = "nss-3.99-with-nspr-4.35.tar.gz"; name = "nss-3.101.2-with-nspr-4.35.tar.gz";
url = "https://dev-www.libreoffice.org/src/nss-3.99-with-nspr-4.35.tar.gz"; url = "https://dev-www.libreoffice.org/src/nss-3.101.2-with-nspr-4.35.tar.gz";
sha256 = "5f29fea64b3234b33a615b6df40469e239a4168ac0909106bd00e6490b274c31"; sha256 = "ff602c1fa86a4f841b27109918dfff60f41582e1caf6dbd651cfa72bdc8a64aa";
md5 = ""; md5 = "";
md5name = "5f29fea64b3234b33a615b6df40469e239a4168ac0909106bd00e6490b274c31-nss-3.99-with-nspr-4.35.tar.gz"; md5name = "ff602c1fa86a4f841b27109918dfff60f41582e1caf6dbd651cfa72bdc8a64aa-nss-3.101.2-with-nspr-4.35.tar.gz";
} }
{ {
name = "libodfgen-0.1.8.tar.xz"; name = "libodfgen-0.1.8.tar.xz";
@ -742,11 +742,11 @@
md5name = "cd775f625c944ed78a3da18a03b03b08eea73c8aabc97b41bb336e9a10954930-openldap-2.6.7.tgz"; md5name = "cd775f625c944ed78a3da18a03b03b08eea73c8aabc97b41bb336e9a10954930-openldap-2.6.7.tgz";
} }
{ {
name = "openssl-3.0.14.tar.gz"; name = "openssl-3.0.15.tar.gz";
url = "https://dev-www.libreoffice.org/src/openssl-3.0.14.tar.gz"; url = "https://dev-www.libreoffice.org/src/openssl-3.0.15.tar.gz";
sha256 = "eeca035d4dd4e84fc25846d952da6297484afa0650a6f84c682e39df3a4123ca"; sha256 = "23c666d0edf20f14249b3d8f0368acaee9ab585b09e1de82107c66e1f3ec9533";
md5 = ""; md5 = "";
md5name = "eeca035d4dd4e84fc25846d952da6297484afa0650a6f84c682e39df3a4123ca-openssl-3.0.14.tar.gz"; md5name = "23c666d0edf20f14249b3d8f0368acaee9ab585b09e1de82107c66e1f3ec9533-openssl-3.0.15.tar.gz";
} }
{ {
name = "liborcus-0.19.2.tar.xz"; name = "liborcus-0.19.2.tar.xz";
@ -777,25 +777,25 @@
md5name = "ea1480efada2fd948bc75366f7c349e1c96d3297d09a3fe62626e38e234a625e-pixman-0.42.2.tar.gz"; md5name = "ea1480efada2fd948bc75366f7c349e1c96d3297d09a3fe62626e38e234a625e-pixman-0.42.2.tar.gz";
} }
{ {
name = "libpng-1.6.43.tar.xz"; name = "libpng-1.6.44.tar.xz";
url = "https://dev-www.libreoffice.org/src/libpng-1.6.43.tar.xz"; url = "https://dev-www.libreoffice.org/src/libpng-1.6.44.tar.xz";
sha256 = "6a5ca0652392a2d7c9db2ae5b40210843c0bbc081cbd410825ab00cc59f14a6c"; sha256 = "60c4da1d5b7f0aa8d158da48e8f8afa9773c1c8baa5d21974df61f1886b8ce8e";
md5 = ""; md5 = "";
md5name = "6a5ca0652392a2d7c9db2ae5b40210843c0bbc081cbd410825ab00cc59f14a6c-libpng-1.6.43.tar.xz"; md5name = "60c4da1d5b7f0aa8d158da48e8f8afa9773c1c8baa5d21974df61f1886b8ce8e-libpng-1.6.44.tar.xz";
} }
{ {
name = "tiff-4.6.0.tar.xz"; name = "tiff-4.7.0.tar.xz";
url = "https://dev-www.libreoffice.org/src/tiff-4.6.0.tar.xz"; url = "https://dev-www.libreoffice.org/src/tiff-4.7.0.tar.xz";
sha256 = "e178649607d1e22b51cf361dd20a3753f244f022eefab1f2f218fc62ebaf87d2"; sha256 = "273a0a73b1f0bed640afee4a5df0337357ced5b53d3d5d1c405b936501f71017";
md5 = ""; md5 = "";
md5name = "e178649607d1e22b51cf361dd20a3753f244f022eefab1f2f218fc62ebaf87d2-tiff-4.6.0.tar.xz"; md5name = "273a0a73b1f0bed640afee4a5df0337357ced5b53d3d5d1c405b936501f71017-tiff-4.7.0.tar.xz";
} }
{ {
name = "poppler-23.09.0.tar.xz"; name = "poppler-24.08.0.tar.xz";
url = "https://dev-www.libreoffice.org/src/poppler-23.09.0.tar.xz"; url = "https://dev-www.libreoffice.org/src/poppler-24.08.0.tar.xz";
sha256 = "80d1d44dd8bdf4ac1a47d56c5065075eb9991790974b1ed7d14b972acde88e55"; sha256 = "97453fbddf0c9a9eafa0ea45ac710d3d49bcf23a62e864585385d3c0b4403174";
md5 = ""; md5 = "";
md5name = "80d1d44dd8bdf4ac1a47d56c5065075eb9991790974b1ed7d14b972acde88e55-poppler-23.09.0.tar.xz"; md5name = "97453fbddf0c9a9eafa0ea45ac710d3d49bcf23a62e864585385d3c0b4403174-poppler-24.08.0.tar.xz";
} }
{ {
name = "poppler-data-0.4.12.tar.gz"; name = "poppler-data-0.4.12.tar.gz";
@ -805,18 +805,18 @@
md5name = "c835b640a40ce357e1b83666aabd95edffa24ddddd49b8daff63adb851cdab74-poppler-data-0.4.12.tar.gz"; md5name = "c835b640a40ce357e1b83666aabd95edffa24ddddd49b8daff63adb851cdab74-poppler-data-0.4.12.tar.gz";
} }
{ {
name = "postgresql-13.14.tar.bz2"; name = "postgresql-13.16.tar.bz2";
url = "https://dev-www.libreoffice.org/src/postgresql-13.14.tar.bz2"; url = "https://dev-www.libreoffice.org/src/postgresql-13.16.tar.bz2";
sha256 = "b8df078551898960bd500dc5d38a177e9905376df81fe7f2b660a1407fa6a5ed"; sha256 = "c9cbbb6129f02328204828066bb3785c00a85c8ca8fd329c2a8a53c1f5cd8865";
md5 = ""; md5 = "";
md5name = "b8df078551898960bd500dc5d38a177e9905376df81fe7f2b660a1407fa6a5ed-postgresql-13.14.tar.bz2"; md5name = "c9cbbb6129f02328204828066bb3785c00a85c8ca8fd329c2a8a53c1f5cd8865-postgresql-13.16.tar.bz2";
} }
{ {
name = "Python-3.8.19.tar.xz"; name = "Python-3.8.20.tar.xz";
url = "https://dev-www.libreoffice.org/src/Python-3.8.19.tar.xz"; url = "https://dev-www.libreoffice.org/src/Python-3.8.20.tar.xz";
sha256 = "d2807ac69f69b84fd46a0b93bbd02a4fa48d3e70f4b2835ff0f72a2885040076"; sha256 = "6fb89a7124201c61125c0ab4cf7f6894df339a40c02833bfd28ab4d7691fafb4";
md5 = ""; md5 = "";
md5name = "d2807ac69f69b84fd46a0b93bbd02a4fa48d3e70f4b2835ff0f72a2885040076-Python-3.8.19.tar.xz"; md5name = "6fb89a7124201c61125c0ab4cf7f6894df339a40c02833bfd28ab4d7691fafb4-Python-3.8.20.tar.xz";
} }
{ {
name = "libqxp-0.0.2.tar.xz"; name = "libqxp-0.0.2.tar.xz";

View file

@ -1,5 +1,5 @@
{ fetchurl, ... }: { fetchurl, ... }:
fetchurl { fetchurl {
sha256 = "090pi8dnj5izpvng94hgmjid14n7xvy3rlqqvang3pqdn35xnpsl"; sha256 = "0g31xfmmxjd5c1xg203gflzvq2d2jlgfi9gmg1wxl18l9gjk4hds";
url = "https://download.documentfoundation.org/libreoffice/src/24.2.5/libreoffice-help-24.2.5.2.tar.xz"; url = "https://download.documentfoundation.org/libreoffice/src/24.2.7/libreoffice-help-24.2.7.2.tar.xz";
} }

View file

@ -1,5 +1,5 @@
{ fetchurl, ... }: { fetchurl, ... }:
fetchurl { fetchurl {
sha256 = "03halzc9w4z8pfs8krpswp2qzrqq9rhnmms8v8ny88am87vy85lw"; sha256 = "1r8h8g5fs7z0fvf7f6fq44rw90q4v2z23kkwzdh1s8gaxlnb3sgm";
url = "https://download.documentfoundation.org/libreoffice/src/24.2.5/libreoffice-24.2.5.2.tar.xz"; url = "https://download.documentfoundation.org/libreoffice/src/24.2.7/libreoffice-24.2.7.2.tar.xz";
} }

View file

@ -1,5 +1,5 @@
{ fetchurl, ... }: { fetchurl, ... }:
fetchurl { fetchurl {
sha256 = "0fri41y59zhm8lq0kh6hvf5rpdjdqx0lg1sl40mhh1d6lf1izc1w"; sha256 = "0g2wp8s3gxhy3l685jv3h63gzaljfclgcah437922dl60kpm9yjq";
url = "https://download.documentfoundation.org/libreoffice/src/24.2.5/libreoffice-translations-24.2.5.2.tar.xz"; url = "https://download.documentfoundation.org/libreoffice/src/24.2.7/libreoffice-translations-24.2.7.2.tar.xz";
} }

View file

@ -1 +1 @@
"24.2.5.2" "24.2.7.2"

View file

@ -20,14 +20,14 @@
let let
pname = "qownnotes"; pname = "qownnotes";
appname = "QOwnNotes"; appname = "QOwnNotes";
version = "24.9.8"; version = "24.11.1";
in in
stdenv.mkDerivation { stdenv.mkDerivation {
inherit pname version; inherit pname version;
src = fetchurl { src = fetchurl {
url = "https://github.com/pbek/QOwnNotes/releases/download/v${version}/qownnotes-${version}.tar.xz"; url = "https://github.com/pbek/QOwnNotes/releases/download/v${version}/qownnotes-${version}.tar.xz";
hash = "sha256-G5PLz1GzjfPM5tj3rtwJt4hR3v+oSq2bVr/llTSFbNk="; hash = "sha256-OQ6p5VCdQZ2P1UFiCPtK+HogIgaoBQKdKO1tEDCA/5I=";
}; };
nativeBuildInputs = [ nativeBuildInputs = [

View file

@ -1,13 +0,0 @@
diff --git c/src/cgraphicsscene.cpp i/src/cgraphicsscene.cpp
index ac2929a..c399706 100644
--- c/src/cgraphicsscene.cpp
+++ i/src/cgraphicsscene.cpp
@@ -1436,7 +1436,7 @@ namespace Caneda
QPointF newPos = m_currentWiringWire->mapFromScene(pos);
QPointF refPos = m_currentWiringWire->port1()->pos();
- if( abs(refPos.x()-newPos.x()) > abs(refPos.y()-newPos.y()) ) {
+ if( (refPos.x()-newPos.x()) > (refPos.y()-newPos.y()) ) {
m_currentWiringWire->movePort2(QPointF(newPos.x(), refPos.y()));
}
else {

View file

@ -1,6 +1,20 @@
{ lib, stdenv, fetchurl, libxml2, freetype, libGLU, libGL, glew {
, qtbase, wrapQtAppsHook, autoPatchelfHook, python3 lib,
, cmake, libjpeg, llvmPackages }: stdenv,
fetchurl,
libxml2,
freetype,
libGLU,
libGL,
glew,
qtbase,
wrapQtAppsHook,
autoPatchelfHook,
python3,
cmake,
libjpeg,
llvmPackages,
}:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "tulip"; pname = "tulip";
@ -11,21 +25,37 @@ stdenv.mkDerivation rec {
hash = "sha256-7z21WkPi1v2AGishDmXZPAedMjgXPRnpUiHTzEnc5LY="; hash = "sha256-7z21WkPi1v2AGishDmXZPAedMjgXPRnpUiHTzEnc5LY=";
}; };
nativeBuildInputs = [ cmake wrapQtAppsHook ] nativeBuildInputs = [
++ lib.optionals stdenv.hostPlatform.isLinux [ autoPatchelfHook ]; cmake
wrapQtAppsHook
] ++ lib.optionals stdenv.hostPlatform.isLinux [ autoPatchelfHook ];
buildInputs = [ libxml2 freetype glew libjpeg qtbase python3 ] buildInputs =
[
libxml2
freetype
glew
libjpeg
qtbase
python3
]
++ lib.optionals stdenv.hostPlatform.isDarwin [ llvmPackages.openmp ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ llvmPackages.openmp ]
++ lib.optionals stdenv.hostPlatform.isLinux [ libGLU libGL ]; ++ lib.optionals stdenv.hostPlatform.isLinux [
libGLU
libGL
];
qtWrapperArgs = [ ''--prefix PATH : ${lib.makeBinPath [ python3 ]}'' ]; qtWrapperArgs = [ ''--prefix PATH : ${lib.makeBinPath [ python3 ]}'' ];
env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.hostPlatform.isDarwin (toString [ env.NIX_CFLAGS_COMPILE =
# error: invalid conversion from 'unsigned char*' to 'char*'
"-fpermissive "
+ (lib.optionalString stdenv.hostPlatform.isDarwin (toString [
# fatal error: 'Python.h' file not found # fatal error: 'Python.h' file not found
"-I${python3}/include/${python3.libPrefix}" "-I${python3}/include/${python3.libPrefix}"
# error: format string is not a string literal (potentially insecure) # error: format string is not a string literal (potentially insecure)
"-Wno-format-security" "-Wno-format-security"
]); ]));
# FIXME: "make check" needs Docbook's DTD 4.4, among other things. # FIXME: "make check" needs Docbook's DTD 4.4, among other things.
doCheck = false; doCheck = false;

View file

@ -0,0 +1,13 @@
diff --git a/src/HyperionProperties.cpp b/src/HyperionProperties.cpp
index b585702..3fd308c 100644
--- a/src/HyperionProperties.cpp
+++ b/src/HyperionProperties.cpp
@@ -59,7 +59,7 @@ HyperionProperties::HyperionProperties(QWidget *parent)
signal_handler_connect(handler, "log", logger_message, this);
connect(ui->ButtonStart, &QPushButton::clicked, this, &HyperionProperties::saveSettings);
- connect(ui->AutoStart, &QCheckBox::stateChanged, this, &HyperionProperties::saveSettings);
+ connect(ui->AutoStart, &QCheckBox::checkStateChanged, this, &HyperionProperties::saveSettings);
connect(ui->ButtonStart, &QPushButton::clicked, this, &HyperionProperties::onStart);
connect(ui->ButtonStop, &QPushButton::clicked, this, &HyperionProperties::onStop);

View file

@ -17,6 +17,8 @@ stdenv.mkDerivation rec {
dontWrapQtApps = true; dontWrapQtApps = true;
patches = [ ./check-state-changed.patch ];
cmakeFlags = [ cmakeFlags = [
"-DOBS_SOURCE=${obs-studio.src}" "-DOBS_SOURCE=${obs-studio.src}"
"-DGLOBAL_INSTALLATION=ON" "-DGLOBAL_INSTALLATION=ON"

View file

@ -97,6 +97,7 @@ python3.pkgs.buildPythonApplication rec {
"test_misc_nonpredicatble_generate" "test_misc_nonpredicatble_generate"
"test_disk_dir_searchable" # does something strange with permissions "test_disk_dir_searchable" # does something strange with permissions
"testCLI0001virt_install_many_devices" # expects /var to exist "testCLI0001virt_install_many_devices" # expects /var to exist
"testCLI0263virt_xml" # depends on a specific libvirt version
]; ];
preCheck = '' preCheck = ''

View file

@ -4,22 +4,25 @@
fetchFromGitHub, fetchFromGitHub,
hyprland, hyprland,
mkHyprlandPlugin, mkHyprlandPlugin,
nix-update-script,
}: }:
mkHyprlandPlugin hyprland rec { mkHyprlandPlugin hyprland rec {
pluginName = "hy3"; pluginName = "hy3";
version = "0.44.0"; version = "0.45.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "outfoxxed"; owner = "outfoxxed";
repo = "hy3"; repo = "hy3";
rev = "refs/tags/hl${version}"; rev = "refs/tags/hl${version}";
hash = "sha256-6TVaB+nWVanqZWqievg+m7tVNrSpQ9CQcwXJQeyU/Q0="; hash = "sha256-b3PuEtRHTSxV809RLUiZVQhDQZ8NxxpWUjboTe9QAAY=";
}; };
nativeBuildInputs = [ cmake ]; nativeBuildInputs = [ cmake ];
dontStrip = true; dontStrip = true;
passthru.updateScript = nix-update-script { };
meta = { meta = {
homepage = "https://github.com/outfoxxed/hy3"; homepage = "https://github.com/outfoxxed/hy3";
description = "Hyprland plugin for an i3 / sway like manual tiling layout"; description = "Hyprland plugin for an i3 / sway like manual tiling layout";

View file

@ -8,13 +8,13 @@
mkHyprlandPlugin hyprland { mkHyprlandPlugin hyprland {
pluginName = "hypr-dynamic-cursors"; pluginName = "hypr-dynamic-cursors";
version = "0-unstable-2024-10-10"; version = "0-unstable-2024-11-10";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "VirtCode"; owner = "VirtCode";
repo = "hypr-dynamic-cursors"; repo = "hypr-dynamic-cursors";
rev = "3ff4c2a053f7673b3b8cd45ada0886cbda13ebcc"; rev = "a3427f2a7f1dc70236dbaa870eadead03d9807a6";
hash = "sha256-XMR9wDNXmY3pPp3imT5vA4Gc6yC3R2Fatp4B53uLHzI="; hash = "sha256-7nznQzeq0rzvTos2axd4LvzLJ64n0erP3WxMIpCE5Ew=";
}; };
dontUseCmakeConfigure = true; dontUseCmakeConfigure = true;

View file

@ -7,13 +7,13 @@
mkHyprlandPlugin hyprland { mkHyprlandPlugin hyprland {
pluginName = "hyprfocus"; pluginName = "hyprfocus";
version = "0-unstable-2024-05-30"; version = "0-unstable-2024-10-09";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "pyt0xic"; owner = "pyt0xic";
repo = "hyprfocus"; repo = "hyprfocus";
rev = "aa7262d3a4564062f97b9cfdad47fd914cfb80f2"; rev = "bead5b77d80f222c006d1a6c6f44ee8b02021d73";
hash = "sha256-R1ZgNhQkoS6ZHRRKB+j5vYgRANfYO//sHbrD7moUTx0="; hash = "sha256-qIl7opF7fA1ZmC91TGQ7D12tB7kHc6Sn9DrfUN6sbBY=";
}; };
installPhase = '' installPhase = ''

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