···304 </listitem>
305 <listitem>
306 <para>
00000000307 <literal>llvmPackages_rocm.llvm</literal> will not contain
308 <literal>clang</literal> or <literal>compiler-rt</literal>.
309 <literal>llvmPackages_rocm.clang</literal> will not contain
···356 under 10 packages in nixpkgs, largely unmaintained upstream as
357 well, however, out-of-tree package expressions may need to be
358 updated manually.
00000000000359 </para>
360 </listitem>
361 <listitem>
···304 </listitem>
305 <listitem>
306 <para>
307+ The <literal>wordpress</literal> derivation no longer contains
308+ any builtin plugins or themes. If you need them you have to
309+ add them back to prevent your site from breaking. You can find
310+ them in <literal>wordpressPackages.{plugins,themes}</literal>.
311+ </para>
312+ </listitem>
313+ <listitem>
314+ <para>
315 <literal>llvmPackages_rocm.llvm</literal> will not contain
316 <literal>clang</literal> or <literal>compiler-rt</literal>.
317 <literal>llvmPackages_rocm.clang</literal> will not contain
···364 under 10 packages in nixpkgs, largely unmaintained upstream as
365 well, however, out-of-tree package expressions may need to be
366 updated manually.
367+ </para>
368+ </listitem>
369+ <listitem>
370+ <para>
371+ The
372+ <link linkend="opt-services.wordpress.sites._name_.plugins">services.wordpress.sites.<name>.plugins</link>
373+ and
374+ <link linkend="opt-services.wordpress.sites._name_.themes">services.wordpress.sites.<name>.themes</link>
375+ options have been converted from sets to attribute sets to
376+ allow for consumers to specify explicit install paths via
377+ attribute name.
378 </para>
379 </listitem>
380 <listitem>
+4
nixos/doc/manual/release-notes/rl-2305.section.md
···7778- `tut` has been updated from 1.0.34 to 2.0.0, and now uses the TOML format for the configuration file instead of INI. Additional information can be found [here](https://github.com/RasmusLindroth/tut/releases/tag/2.0.0).
790080- `llvmPackages_rocm.llvm` will not contain `clang` or `compiler-rt`. `llvmPackages_rocm.clang` will not contain `llvm`. `llvmPackages_rocm.clangNoCompilerRt` has been removed in favor of using `llvmPackages_rocm.clang-unwrapped`.
8182- The EC2 image module previously detected and automatically mounted ext3-formatted instance store devices and partitions in stage-1 (initramfs), storing `/tmp` on the first discovered device. This behaviour, which only catered to very specific use cases and could not be disabled, has been removed. Users relying on this should provide their own implementation, and probably use ext4 and perform the mount in stage-2.
···88- Calling `makeSetupHook` without passing a `name` argument is deprecated.
8990- Qt 5.12 and 5.14 have been removed, as the corresponding branches have been EOL upstream for a long time. This affected under 10 packages in nixpkgs, largely unmaintained upstream as well, however, out-of-tree package expressions may need to be updated manually.
009192- In `mastodon` it is now necessary to specify location of file with `PostgreSQL` database password. In `services.mastodon.database.passwordFile` parameter default value `/var/lib/mastodon/secrets/db-password` has been changed to `null`.
93
···7778- `tut` has been updated from 1.0.34 to 2.0.0, and now uses the TOML format for the configuration file instead of INI. Additional information can be found [here](https://github.com/RasmusLindroth/tut/releases/tag/2.0.0).
7980+- The `wordpress` derivation no longer contains any builtin plugins or themes. If you need them you have to add them back to prevent your site from breaking. You can find them in `wordpressPackages.{plugins,themes}`.
81+82- `llvmPackages_rocm.llvm` will not contain `clang` or `compiler-rt`. `llvmPackages_rocm.clang` will not contain `llvm`. `llvmPackages_rocm.clangNoCompilerRt` has been removed in favor of using `llvmPackages_rocm.clang-unwrapped`.
8384- The EC2 image module previously detected and automatically mounted ext3-formatted instance store devices and partitions in stage-1 (initramfs), storing `/tmp` on the first discovered device. This behaviour, which only catered to very specific use cases and could not be disabled, has been removed. Users relying on this should provide their own implementation, and probably use ext4 and perform the mount in stage-2.
···90- Calling `makeSetupHook` without passing a `name` argument is deprecated.
9192- Qt 5.12 and 5.14 have been removed, as the corresponding branches have been EOL upstream for a long time. This affected under 10 packages in nixpkgs, largely unmaintained upstream as well, however, out-of-tree package expressions may need to be updated manually.
93+94+- The [services.wordpress.sites.<name>.plugins](#opt-services.wordpress.sites._name_.plugins) and [services.wordpress.sites.<name>.themes](#opt-services.wordpress.sites._name_.themes) options have been converted from sets to attribute sets to allow for consumers to specify explicit install paths via attribute name.
9596- In `mastodon` it is now necessary to specify location of file with `PostgreSQL` database password. In `services.mastodon.database.passwordFile` parameter default value `/var/lib/mastodon/secrets/db-password` has been changed to `null`.
97
+23-40
nixos/modules/services/web-apps/wordpress.nix
···32 # Since hard linking directories is not allowed, copying is the next best thing.
3334 # copy additional plugin(s), theme(s) and language(s)
35- ${concatMapStringsSep "\n" (theme: "cp -r ${theme} $out/share/wordpress/wp-content/themes/${theme.name}") cfg.themes}
36- ${concatMapStringsSep "\n" (plugin: "cp -r ${plugin} $out/share/wordpress/wp-content/plugins/${plugin.name}") cfg.plugins}
37 ${concatMapStringsSep "\n" (language: "cp -r ${language} $out/share/wordpress/wp-content/languages/") cfg.languages}
38 '';
39 };
···130 };
131132 plugins = mkOption {
133- type = types.listOf types.path;
134- default = [];
0000135 description = lib.mdDoc ''
136- List of path(s) to respective plugin(s) which are copied from the 'plugins' directory.
137138 ::: {.note}
139 These plugins need to be packaged before use, see example.
140 :::
141 '';
142 example = literalExpression ''
143- let
144- # Wordpress plugin 'embed-pdf-viewer' installation example
145- embedPdfViewerPlugin = pkgs.stdenv.mkDerivation {
146- name = "embed-pdf-viewer-plugin";
147- # Download the theme from the wordpress site
148- src = pkgs.fetchurl {
149- url = "https://downloads.wordpress.org/plugin/embed-pdf-viewer.2.0.3.zip";
150- sha256 = "1rhba5h5fjlhy8p05zf0p14c9iagfh96y91r36ni0rmk6y891lyd";
151- };
152- # We need unzip to build this package
153- nativeBuildInputs = [ pkgs.unzip ];
154- # Installing simply means copying all files to the output directory
155- installPhase = "mkdir -p $out; cp -R * $out/";
156- };
157- # And then pass this theme to the themes list like this:
158- in [ embedPdfViewerPlugin ]
159 '';
160 };
161162 themes = mkOption {
163- type = types.listOf types.path;
164- default = [];
00000165 description = lib.mdDoc ''
166- List of path(s) to respective theme(s) which are copied from the 'theme' directory.
167168 ::: {.note}
169 These themes need to be packaged before use, see example.
170 :::
171 '';
172 example = literalExpression ''
173- let
174- # Let's package the responsive theme
175- responsiveTheme = pkgs.stdenv.mkDerivation {
176- name = "responsive-theme";
177- # Download the theme from the wordpress site
178- src = pkgs.fetchurl {
179- url = "https://downloads.wordpress.org/theme/responsive.3.14.zip";
180- sha256 = "0rjwm811f4aa4q43r77zxlpklyb85q08f9c8ns2akcarrvj5ydx3";
181- };
182- # We need unzip to build this package
183- nativeBuildInputs = [ pkgs.unzip ];
184- # Installing simply means copying all files to the output directory
185- installPhase = "mkdir -p $out; cp -R * $out/";
186- };
187- # And then pass this theme to the themes list like this:
188- in [ responsiveTheme ]
189 '';
190 };
191
···32 # Since hard linking directories is not allowed, copying is the next best thing.
3334 # copy additional plugin(s), theme(s) and language(s)
35+ ${concatStringsSep "\n" (mapAttrsToList (name: theme: "cp -r ${theme} $out/share/wordpress/wp-content/themes/${name}") cfg.themes)}
36+ ${concatStringsSep "\n" (mapAttrsToList (name: plugin: "cp -r ${plugin} $out/share/wordpress/wp-content/plugins/${name}") cfg.plugins)}
37 ${concatMapStringsSep "\n" (language: "cp -r ${language} $out/share/wordpress/wp-content/languages/") cfg.languages}
38 '';
39 };
···130 };
131132 plugins = mkOption {
133+ type = with types; coercedTo
134+ (listOf path)
135+ (l: warn "setting this option with a list is deprecated"
136+ listToAttrs (map (p: nameValuePair (p.name or (throw "${p} does not have a name")) p) l))
137+ (attrsOf path);
138+ default = {};
139 description = lib.mdDoc ''
140+ Path(s) to respective plugin(s) which are copied from the 'plugins' directory.
141142 ::: {.note}
143 These plugins need to be packaged before use, see example.
144 :::
145 '';
146 example = literalExpression ''
147+ {
148+ inherit (pkgs.wordpressPackages.plugins) embed-pdf-viewer-plugin;
149+ }
0000000000000150 '';
151 };
152153 themes = mkOption {
154+ type = with types; coercedTo
155+ (listOf path)
156+ (l: warn "setting this option with a list is deprecated"
157+ listToAttrs (map (p: nameValuePair (p.name or (throw "${p} does not have a name")) p) l))
158+ (attrsOf path);
159+ default = { inherit (pkgs.wordpressPackages.themes) twentytwentythree; };
160+ defaultText = literalExpression "{ inherit (pkgs.wordpressPackages.themes) twentytwentythree; }";
161 description = lib.mdDoc ''
162+ Path(s) to respective theme(s) which are copied from the 'theme' directory.
163164 ::: {.note}
165 These themes need to be packaged before use, see example.
166 :::
167 '';
168 example = literalExpression ''
169+ {
170+ inherit (pkgs.wordpressPackages.themes) responsive-theme;
171+ }
0000000000000172 '';
173 };
174
···321 && !(stdenv.targetPlatform.useLLVM or false)
322 && gccForLibs != null) ''
323 echo "--gcc-toolchain=${gccForLibs}" >> $out/nix-support/cc-cflags
324+325+ # Pull in 'cc.out' target to get 'libstdc++fs.a'. It should be in
326+ # 'cc.lib'. But it's a gcc package bug.
327+ # TODO(trofi): remove once gcc is fixed to move libraries to .lib output.
328+ echo "-L${gccForLibs}/${optionalString (targetPlatform != hostPlatform) "/${targetPlatform.config}"}/lib" >> $out/nix-support/cc-ldflags
329 ''
330331 ##
···1-# when changing this expression convert it from 'fetchzip' to 'stdenvNoCC.mkDerivation'
2-{ lib, fetchzip }:
34# Source Sans Pro got renamed to Source Sans 3 (see
5# https://github.com/adobe-fonts/source-sans/issues/192). This is the
6# last version named "Pro". It is useful for backward compatibility
7# with older documents/templates/etc.
8-let
009 version = "3.006";
10-in (fetchzip {
11- name = "source-sans-pro-${version}";
0000001213- url = "https://github.com/adobe-fonts/source-sans/archive/${version}R.zip";
001415- sha256 = "sha256-uWr/dFyLF65v0o6+oN/3RQoe4ziPspzGB1rgiBkoTYY=";
01617 meta = with lib; {
18 homepage = "https://adobe-fonts.github.io/source-sans/";
···21 platforms = platforms.all;
22 maintainers = with maintainers; [ ttuegel ];
23 };
24-}).overrideAttrs (_: {
25- postFetch = ''
26- mkdir -p $out/share/fonts/{opentype,truetype,variable}
27- unzip -j $downloadedFile "*/OTF/*.otf" -d $out/share/fonts/opentype
28- unzip -j $downloadedFile "*/TTF/*.ttf" -d $out/share/fonts/truetype
29- unzip -j $downloadedFile "*/VAR/*.otf" -d $out/share/fonts/variable
30- '';
31-})
···1+{ lib, stdenvNoCC, fetchzip }:
023# Source Sans Pro got renamed to Source Sans 3 (see
4# https://github.com/adobe-fonts/source-sans/issues/192). This is the
5# last version named "Pro". It is useful for backward compatibility
6# with older documents/templates/etc.
7+8+stdenvNoCC.mkDerivation rec {
9+ name = "source-sans-pro-${version}";
10 version = "3.006";
11+12+ src = fetchzip {
13+ url = "https://github.com/adobe-fonts/source-sans/archive/${version}R.zip";
14+ hash = "sha256-1Savijgq3INuUN89MR0t748HOuGseXVw5Kd4hYwuVas=";
15+ };
16+17+ installPhase = ''
18+ runHook preInstall
1920+ install -Dm444 OTF/*.otf -t $out/share/fonts/opentype
21+ install -Dm444 TTF/*.ttf -t $out/share/fonts/truetype
22+ install -Dm444 VAR/*.otf -t $out/share/fonts/variable
2324+ runHook postInstall
25+ '';
2627 meta = with lib; {
28 homepage = "https://adobe-fonts.github.io/source-sans/";
···31 platforms = platforms.all;
32 maintainers = with maintainers; [ ttuegel ];
33 };
34+}
0000000
+17-15
pkgs/data/fonts/source-sans/default.nix
···1-# when changing this expression convert it from 'fetchzip' to 'stdenvNoCC.mkDerivation'
2-{ lib, fetchzip }:
34-let
05 version = "3.046";
6-in (fetchzip {
7- name = "source-sans-${version}";
89- url = "https://github.com/adobe-fonts/source-sans/archive/${version}R.zip";
0001011- sha256 = "1wxdinnliq0xqbjrs0sqykwaggkmyqawfq862d9xn05g1pnxda94";
000000001213 meta = with lib; {
14 homepage = "https://adobe-fonts.github.io/source-sans/";
···17 platforms = platforms.all;
18 maintainers = with maintainers; [ ttuegel ];
19 };
20-}).overrideAttrs (_: {
21- postFetch = ''
22- mkdir -p $out/share/fonts/{opentype,truetype,variable}
23- unzip -j $downloadedFile "*/OTF/*.otf" -d $out/share/fonts/opentype
24- unzip -j $downloadedFile "*/TTF/*.ttf" -d $out/share/fonts/truetype
25- unzip -j $downloadedFile "*/VAR/*.otf" -d $out/share/fonts/variable
26- '';
27-})
···1-# when changing this expression convert it from 'fetchzip' to 'stdenvNoCC.mkDerivation'
2-{ lib, fetchzip }:
34-let
05 version = "unstable-2018-09-11";
6-in
7-(fetchzip {
8- name = "times-newer-roman-${version}";
000000910- url = "https://web.archive.org/web/20210609022835/https://timesnewerroman.com/assets/TimesNewerRoman.zip";
01112- hash = "sha256-Hx59RYLLwfimEQjEEes0lCpg6iql46DFwhQ7kVGiEzc=";
01314 meta = with lib; {
15 description = "A font that looks just like Times New Roman, except each character is 5-10% wider";
···18 maintainers = with maintainers; [ ];
19 platforms = platforms.all;
20 };
21-}).overrideAttrs (_: {
22- postFetch = ''
23- mkdir -p $out/share/fonts/opentype
24- unzip -j $downloadedFile \*.otf -d $out/share/fonts/opentype
25- '';
26-})
···1+{ lib, stdenvNoCC, fetchzip }:
023+stdenvNoCC.mkDerivation {
4+ pname = "times-newer-roman";
5 version = "unstable-2018-09-11";
6+7+ src = fetchzip {
8+ url = "https://web.archive.org/web/20210609022835/https://timesnewerroman.com/assets/TimesNewerRoman.zip";
9+ stripRoot = false;
10+ hash = "sha256-wO4rxyJNQyhRLpswCYKXdeiXy5G+iWyxulYCHZb60QM=";
11+ };
12+13+ installPhase = ''
14+ runHook preInstall
1516+ mkdir -p $out/share/fonts/opentype
17+ cp *.otf $out/share/fonts/opentype
1819+ runHook postInstall
20+ '';
2122 meta = with lib; {
23 description = "A font that looks just like Times New Roman, except each character is 5-10% wider";
···26 maintainers = with maintainers; [ ];
27 platforms = platforms.all;
28 };
29+}
00000
···1+diff --git a/lldb/cmake/modules/LLDBConfig.cmake b/lldb/cmake/modules/LLDBConfig.cmake
2+index 37364341ff8b..7f74c1a3e257 100644
3+--- a/cmake/modules/LLDBConfig.cmake
4++++ b/cmake/modules/LLDBConfig.cmake
5+@@ -257,7 +257,7 @@ if (NOT TARGET clang-resource-headers)
6+ # Iterate over the possible places where the external resource directory
7+ # could be and pick the first that exists.
8+ foreach(CANDIDATE "${Clang_DIR}/../.." "${LLVM_DIR}" "${LLVM_LIBRARY_DIRS}"
9+- "${LLVM_BUILD_LIBRARY_DIR}"
10++ "${LLVM_BUILD_LIBRARY_DIR}" "@clangLibDir@"
11+ "${LLVM_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX}")
12+ # Build the resource directory path by appending 'clang/<version number>'.
13+ set(CANDIDATE_RESOURCE_DIR "${CANDIDATE}/clang/${LLDB_CLANG_RESOURCE_DIR_NAME}")
···1+{ lib, stdenv, llvm_meta
2+, pkgsBuildBuild
3+, monorepoSrc
4+, runCommand
5+, fetchpatch
6+, cmake
7+, darwin
8+, ninja
9+, python3
10+, python3Packages
11+, libffi
12+, libbfd
13+, libpfm
14+, libxml2
15+, ncurses
16+, version
17+, release_version
18+, zlib
19+, which
20+, sysctl
21+, buildLlvmTools
22+, debugVersion ? false
23+, doCheck ? (!stdenv.isx86_32 /* TODO: why */) && (!stdenv.hostPlatform.isMusl)
24+ && (stdenv.hostPlatform == stdenv.buildPlatform)
25+, enableManpages ? false
26+, enableSharedLibraries ? !stdenv.hostPlatform.isStatic
27+, enablePFM ? stdenv.isLinux /* PFM only supports Linux */
28+ # broken for Ampere eMAG 8180 (c2.large.arm on Packet) #56245
29+ # broken for the armv7l builder
30+ && !stdenv.hostPlatform.isAarch
31+, enablePolly ? true
32+} @args:
33+34+let
35+ inherit (lib) optional optionals optionalString;
36+37+ # Used when creating a version-suffixed symlink of libLLVM.dylib
38+ shortVersion = with lib;
39+ concatStringsSep "." (take 1 (splitString "." release_version));
40+41+ # Ordinarily we would just the `doCheck` and `checkDeps` functionality
42+ # `mkDerivation` gives us to manage our test dependencies (instead of breaking
43+ # out `doCheck` as a package level attribute).
44+ #
45+ # Unfortunately `lit` does not forward `$PYTHONPATH` to children processes, in
46+ # particular the children it uses to do feature detection.
47+ #
48+ # This means that python deps we add to `checkDeps` (which the python
49+ # interpreter is made aware of via `$PYTHONPATH` – populated by the python
50+ # setup hook) are not picked up by `lit` which causes it to skip tests.
51+ #
52+ # Adding `python3.withPackages (ps: [ ... ])` to `checkDeps` also doesn't work
53+ # because this package is shadowed in `$PATH` by the regular `python3`
54+ # package.
55+ #
56+ # So, we "manually" assemble one python derivation for the package to depend
57+ # on, taking into account whether checks are enabled or not:
58+ python = if doCheck then
59+ # Note that we _explicitly_ ask for a python interpreter for our host
60+ # platform here; the splicing that would ordinarily take care of this for
61+ # us does not seem to work once we use `withPackages`.
62+ let
63+ checkDeps = ps: with ps; [ psutil ];
64+ in pkgsBuildBuild.targetPackages.python3.withPackages checkDeps
65+ else python3;
66+67+in stdenv.mkDerivation (rec {
68+ pname = "llvm";
69+ inherit version;
70+71+ src = runCommand "${pname}-src-${version}" {} (''
72+ mkdir -p "$out"
73+ cp -r ${monorepoSrc}/cmake "$out"
74+ cp -r ${monorepoSrc}/${pname} "$out"
75+ cp -r ${monorepoSrc}/third-party "$out"
76+ '' + lib.optionalString enablePolly ''
77+ chmod u+w "$out/${pname}/tools"
78+ cp -r ${monorepoSrc}/polly "$out/${pname}/tools"
79+ '');
80+81+ sourceRoot = "${src.name}/${pname}";
82+83+ outputs = [ "out" "lib" "dev" "python" ];
84+85+ nativeBuildInputs = [ cmake ninja python ]
86+ ++ optionals enableManpages [
87+ # Note: we intentionally use `python3Packages` instead of `python3.pkgs`;
88+ # splicing does *not* work with the latter. (TODO: fix)
89+ python3Packages.sphinx python3Packages.recommonmark
90+ ];
91+92+ buildInputs = [ libxml2 libffi ]
93+ ++ optional enablePFM libpfm; # exegesis
94+95+ propagatedBuildInputs = [ ncurses zlib ];
96+97+ nativeCheckInputs = [
98+ which
99+ ] ++ lib.optional stdenv.isDarwin sysctl;
100+101+ patches = [
102+ ./gnu-install-dirs.patch
103+104+ # Running the tests involves invoking binaries (like `opt`) that depend on
105+ # the LLVM dylibs and reference them by absolute install path (i.e. their
106+ # nix store path).
107+ #
108+ # Because we have not yet run the install phase (we're running these tests
109+ # as part of `checkPhase` instead of `installCheckPhase`) these absolute
110+ # paths do not exist yet; to work around this we point the loader (`ld` on
111+ # unix, `dyld` on macOS) at the `lib` directory which will later become this
112+ # package's `lib` output.
113+ #
114+ # Previously we would just set `LD_LIBRARY_PATH` to include the build `lib`
115+ # dir but:
116+ # - this doesn't generalize well to other platforms; `lit` doesn't forward
117+ # `DYLD_LIBRARY_PATH` (macOS):
118+ # + https://github.com/llvm/llvm-project/blob/0d89963df354ee309c15f67dc47c8ab3cb5d0fb2/llvm/utils/lit/lit/TestingConfig.py#L26
119+ # - even if `lit` forwarded this env var, we actually cannot set
120+ # `DYLD_LIBRARY_PATH` in the child processes `lit` launches because
121+ # `DYLD_LIBRARY_PATH` (and `DYLD_FALLBACK_LIBRARY_PATH`) is cleared for
122+ # "protected processes" (i.e. the python interpreter that runs `lit`):
123+ # https://stackoverflow.com/a/35570229
124+ # - other LLVM subprojects deal with this issue by having their `lit`
125+ # configuration set these env vars for us; it makes sense to do the same
126+ # for LLVM:
127+ # + https://github.com/llvm/llvm-project/blob/4c106cfdf7cf7eec861ad3983a3dd9a9e8f3a8ae/clang-tools-extra/test/Unit/lit.cfg.py#L22-L31
128+ #
129+ # !!! TODO: look into upstreaming this patch
130+ ./llvm-lit-cfg-add-libs-to-dylib-path.patch
131+132+ # `lit` has a mode where it executes run lines as a shell script which is
133+ # constructs; this is problematic for macOS because it means that there's
134+ # another process in between `lit` and the binaries being tested. As noted
135+ # above, this means that `DYLD_LIBRARY_PATH` is cleared which means that our
136+ # tests fail with dyld errors.
137+ #
138+ # To get around this we patch `lit` to reintroduce `DYLD_LIBRARY_PATH`, when
139+ # present in the test configuration.
140+ #
141+ # It's not clear to me why this isn't an issue for LLVM developers running
142+ # on macOS (nothing about this _seems_ nix specific)..
143+ ./lit-shell-script-runner-set-dyld-library-path.patch
144+ ] ++ lib.optionals enablePolly [
145+ ./gnu-install-dirs-polly.patch
146+147+ # Just like the `llvm-lit-cfg` patch, but for `polly`.
148+ ./polly-lit-cfg-add-libs-to-dylib-path.patch
149+ ];
150+151+ postPatch = optionalString stdenv.isDarwin ''
152+ substituteInPlace cmake/modules/AddLLVM.cmake \
153+ --replace 'set(_install_name_dir INSTALL_NAME_DIR "@rpath")' "set(_install_name_dir)" \
154+ --replace 'set(_install_rpath "@loader_path/../''${CMAKE_INSTALL_LIBDIR}''${LLVM_LIBDIR_SUFFIX}" ''${extra_libdir})' ""
155+156+ # As of LLVM 15, marked as XFAIL on arm64 macOS but lit doesn't seem to pick
157+ # this up: https://github.com/llvm/llvm-project/blob/c344d97a125b18f8fed0a64aace73c49a870e079/llvm/test/MC/ELF/cfi-version.ll#L7
158+ rm test/MC/ELF/cfi-version.ll
159+160+ # This test tries to call `sw_vers` by absolute path (`/usr/bin/sw_vers`)
161+ # and thus fails under the sandbox:
162+ substituteInPlace unittests/Support/Host.cpp \
163+ --replace '/usr/bin/sw_vers' "${(builtins.toString darwin.DarwinTools) + "/bin/sw_vers" }"
164+ '' + optionalString (stdenv.isDarwin && stdenv.hostPlatform.isx86) ''
165+ # This test tries to call the intrinsics `@llvm.roundeven.f32` and
166+ # `@llvm.roundeven.f64` which seem to (incorrectly?) lower to `roundevenf`
167+ # and `roundeven` on x86_64 macOS.
168+ #
169+ # However these functions are glibc specific so the test fails:
170+ # - https://www.gnu.org/software/gnulib/manual/html_node/roundevenf.html
171+ # - https://www.gnu.org/software/gnulib/manual/html_node/roundeven.html
172+ #
173+ # TODO(@rrbutani): this seems to run fine on `aarch64-darwin`, why does it
174+ # pass there?
175+ substituteInPlace test/ExecutionEngine/Interpreter/intrinsics.ll \
176+ --replace "%roundeven32 = call float @llvm.roundeven.f32(float 0.000000e+00)" "" \
177+ --replace "%roundeven64 = call double @llvm.roundeven.f64(double 0.000000e+00)" ""
178+179+ # This test fails on darwin x86_64 because `sw_vers` reports a different
180+ # macOS version than what LLVM finds by reading
181+ # `/System/Library/CoreServices/SystemVersion.plist` (which is passed into
182+ # the sandbox on macOS).
183+ #
184+ # The `sw_vers` provided by nixpkgs reports the macOS version associated
185+ # with the `CoreFoundation` framework with which it was built. Because
186+ # nixpkgs pins the SDK for `aarch64-darwin` and `x86_64-darwin` what
187+ # `sw_vers` reports is not guaranteed to match the macOS version of the host
188+ # that's building this derivation.
189+ #
190+ # Astute readers will note that we only _patch_ this test on aarch64-darwin
191+ # (to use the nixpkgs provided `sw_vers`) instead of disabling it outright.
192+ # So why does this test pass on aarch64?
193+ #
194+ # Well, it seems that `sw_vers` on aarch64 actually links against the _host_
195+ # CoreFoundation framework instead of the nixpkgs provided one.
196+ #
197+ # Not entirely sure what the right fix is here. I'm assuming aarch64
198+ # `sw_vers` doesn't intentionally link against the host `CoreFoundation`
199+ # (still digging into how this ends up happening, will follow up) but that
200+ # aside I think the more pertinent question is: should we be patching LLVM's
201+ # macOS version detection logic to use `sw_vers` instead of reading host
202+ # paths? This *is* a way in which details about builder machines can creep
203+ # into the artifacts that are produced, affecting reproducibility, but it's
204+ # not clear to me when/where/for what this even gets used in LLVM.
205+ #
206+ # TODO(@rrbutani): fix/follow-up
207+ substituteInPlace unittests/Support/Host.cpp \
208+ --replace "getMacOSHostVersion" "DISABLED_getMacOSHostVersion"
209+210+ # This test fails with a `dysmutil` crash; have not yet dug into what's
211+ # going on here (TODO(@rrbutani)).
212+ rm test/tools/dsymutil/ARM/obfuscated.test
213+ '' + ''
214+ # FileSystem permissions tests fail with various special bits
215+ substituteInPlace unittests/Support/CMakeLists.txt \
216+ --replace "Path.cpp" ""
217+ rm unittests/Support/Path.cpp
218+ substituteInPlace unittests/IR/CMakeLists.txt \
219+ --replace "PassBuilderCallbacksTest.cpp" ""
220+ rm unittests/IR/PassBuilderCallbacksTest.cpp
221+ rm test/tools/llvm-objcopy/ELF/mirror-permissions-unix.test
222+ '' + optionalString stdenv.hostPlatform.isMusl ''
223+ patch -p1 -i ${../../TLI-musl.patch}
224+ substituteInPlace unittests/Support/CMakeLists.txt \
225+ --replace "add_subdirectory(DynamicLibrary)" ""
226+ rm unittests/Support/DynamicLibrary/DynamicLibraryTest.cpp
227+ # valgrind unhappy with musl or glibc, but fails w/musl only
228+ rm test/CodeGen/AArch64/wineh4.mir
229+ '' + optionalString stdenv.hostPlatform.isAarch32 ''
230+ # skip failing X86 test cases on 32-bit ARM
231+ rm test/DebugInfo/X86/convert-debugloc.ll
232+ rm test/DebugInfo/X86/convert-inlined.ll
233+ rm test/DebugInfo/X86/convert-linked.ll
234+ rm test/tools/dsymutil/X86/op-convert.test
235+ rm test/tools/gold/X86/split-dwarf.ll
236+ rm test/tools/llvm-dwarfdump/X86/prettyprint_types.s
237+ rm test/tools/llvm-dwarfdump/X86/simplified-template-names.s
238+239+ # !!! Note: these tests are removed in LLVM 16.
240+ #
241+ # See here for context: https://github.com/NixOS/nixpkgs/pull/194634#discussion_r999790443
242+ rm test/CodeGen/RISCV/rv32zbp.ll
243+ rm test/CodeGen/RISCV/rv64zbp.ll
244+ '' + optionalString (stdenv.hostPlatform.system == "armv6l-linux") ''
245+ # Seems to require certain floating point hardware (NEON?)
246+ rm test/ExecutionEngine/frem.ll
247+ '' + ''
248+ patchShebangs test/BugPoint/compile-custom.ll.py
249+ '';
250+251+ preConfigure = ''
252+ # Workaround for configure flags that need to have spaces
253+ cmakeFlagsArray+=(
254+ -DLLVM_LIT_ARGS="-svj''${NIX_BUILD_CORES} --no-progress-bar"
255+ )
256+ '';
257+258+ # Defensive check: some paths (that we make symlinks to) depend on the release
259+ # version, for example:
260+ # - https://github.com/llvm/llvm-project/blob/406bde9a15136254f2b10d9ef3a42033b3cb1b16/clang/lib/Headers/CMakeLists.txt#L185
261+ #
262+ # So we want to sure that the version in the source matches the release
263+ # version we were given.
264+ #
265+ # We do this check here, in the LLVM build, because it happens early.
266+ postConfigure = let
267+ v = lib.versions;
268+ major = v.major release_version;
269+ minor = v.minor release_version;
270+ patch = v.patch release_version;
271+ in ''
272+ # $1: part, $2: expected
273+ check_version() {
274+ part="''${1^^}"
275+ part="$(cat include/llvm/Config/llvm-config.h | grep "#define LLVM_VERSION_''${part} " | cut -d' ' -f3)"
276+277+ if [[ "$part" != "$2" ]]; then
278+ echo >&2 \
279+ "mismatch in the $1 version! we have version ${release_version}" \
280+ "and expected the $1 version to be '$2'; the source has '$part' instead"
281+ exit 3
282+ fi
283+ }
284+285+ check_version major ${major}
286+ check_version minor ${minor}
287+ check_version patch ${patch}
288+ '';
289+290+ # E.g. mesa.drivers use the build-id as a cache key (see #93946):
291+ LDFLAGS = optionalString (enableSharedLibraries && !stdenv.isDarwin) "-Wl,--build-id=sha1";
292+293+ cmakeFlags = with stdenv; let
294+ # These flags influence llvm-config's BuildVariables.inc in addition to the
295+ # general build. We need to make sure these are also passed via
296+ # CROSS_TOOLCHAIN_FLAGS_NATIVE when cross-compiling or llvm-config-native
297+ # will return different results from the cross llvm-config.
298+ #
299+ # Some flags don't need to be repassed because LLVM already does so (like
300+ # CMAKE_BUILD_TYPE), others are irrelevant to the result.
301+ flagsForLlvmConfig = [
302+ "-DLLVM_INSTALL_PACKAGE_DIR=${placeholder "dev"}/lib/cmake/llvm"
303+ "-DLLVM_ENABLE_RTTI=ON"
304+ ] ++ optionals enableSharedLibraries [
305+ "-DLLVM_LINK_LLVM_DYLIB=ON"
306+ ];
307+ in flagsForLlvmConfig ++ [
308+ "-DCMAKE_BUILD_TYPE=${if debugVersion then "Debug" else "Release"}"
309+ "-DLLVM_INSTALL_UTILS=ON" # Needed by rustc
310+ "-DLLVM_BUILD_TESTS=${if doCheck then "ON" else "OFF"}"
311+ "-DLLVM_ENABLE_FFI=ON"
312+ "-DLLVM_HOST_TRIPLE=${stdenv.hostPlatform.config}"
313+ "-DLLVM_DEFAULT_TARGET_TRIPLE=${stdenv.hostPlatform.config}"
314+ "-DLLVM_ENABLE_DUMP=ON"
315+ ] ++ optionals stdenv.hostPlatform.isStatic [
316+ # Disables building of shared libs, -fPIC is still injected by cc-wrapper
317+ "-DLLVM_ENABLE_PIC=OFF"
318+ "-DLLVM_BUILD_STATIC=ON"
319+ "-DLLVM_LINK_LLVM_DYLIB=off"
320+ # libxml2 needs to be disabled because the LLVM build system ignores its .la
321+ # file and doesn't link zlib as well.
322+ # https://github.com/ClangBuiltLinux/tc-build/issues/150#issuecomment-845418812
323+ "-DLLVM_ENABLE_LIBXML2=OFF"
324+ ] ++ optionals enableManpages [
325+ "-DLLVM_BUILD_DOCS=ON"
326+ "-DLLVM_ENABLE_SPHINX=ON"
327+ "-DSPHINX_OUTPUT_MAN=ON"
328+ "-DSPHINX_OUTPUT_HTML=OFF"
329+ "-DSPHINX_WARNINGS_AS_ERRORS=OFF"
330+ ] ++ optionals (!isDarwin) [
331+ "-DLLVM_BINUTILS_INCDIR=${libbfd.dev}/include"
332+ ] ++ optionals isDarwin [
333+ "-DLLVM_ENABLE_LIBCXX=ON"
334+ "-DCAN_TARGET_i386=false"
335+ ] ++ optionals (stdenv.hostPlatform != stdenv.buildPlatform) [
336+ "-DCMAKE_CROSSCOMPILING=True"
337+ "-DLLVM_TABLEGEN=${buildLlvmTools.llvm}/bin/llvm-tblgen"
338+ (
339+ let
340+ nativeCC = pkgsBuildBuild.targetPackages.stdenv.cc;
341+ nativeBintools = nativeCC.bintools.bintools;
342+ nativeToolchainFlags = [
343+ "-DCMAKE_C_COMPILER=${nativeCC}/bin/${nativeCC.targetPrefix}cc"
344+ "-DCMAKE_CXX_COMPILER=${nativeCC}/bin/${nativeCC.targetPrefix}c++"
345+ "-DCMAKE_AR=${nativeBintools}/bin/${nativeBintools.targetPrefix}ar"
346+ "-DCMAKE_STRIP=${nativeBintools}/bin/${nativeBintools.targetPrefix}strip"
347+ "-DCMAKE_RANLIB=${nativeBintools}/bin/${nativeBintools.targetPrefix}ranlib"
348+ ];
349+ # We need to repass the custom GNUInstallDirs values, otherwise CMake
350+ # will choose them for us, leading to wrong results in llvm-config-native
351+ nativeInstallFlags = [
352+ "-DCMAKE_INSTALL_PREFIX=${placeholder "out"}"
353+ "-DCMAKE_INSTALL_BINDIR=${placeholder "out"}/bin"
354+ "-DCMAKE_INSTALL_INCLUDEDIR=${placeholder "dev"}/include"
355+ "-DCMAKE_INSTALL_LIBDIR=${placeholder "lib"}/lib"
356+ "-DCMAKE_INSTALL_LIBEXECDIR=${placeholder "lib"}/libexec"
357+ ];
358+ in "-DCROSS_TOOLCHAIN_FLAGS_NATIVE:list="
359+ + lib.concatStringsSep ";" (lib.concatLists [
360+ flagsForLlvmConfig
361+ nativeToolchainFlags
362+ nativeInstallFlags
363+ ])
364+ )
365+ ];
366+367+ postInstall = ''
368+ mkdir -p $python/share
369+ mv $out/share/opt-viewer $python/share/opt-viewer
370+ moveToOutput "bin/llvm-config*" "$dev"
371+ substituteInPlace "$dev/lib/cmake/llvm/LLVMExports-${if debugVersion then "debug" else "release"}.cmake" \
372+ --replace "\''${_IMPORT_PREFIX}/lib/lib" "$lib/lib/lib" \
373+ --replace "$out/bin/llvm-config" "$dev/bin/llvm-config"
374+ substituteInPlace "$dev/lib/cmake/llvm/LLVMConfig.cmake" \
375+ --replace 'set(LLVM_BINARY_DIR "''${LLVM_INSTALL_PREFIX}")' 'set(LLVM_BINARY_DIR "'"$lib"'")'
376+ ''
377+ + optionalString (stdenv.isDarwin && enableSharedLibraries) ''
378+ ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${shortVersion}.dylib
379+ ln -s $lib/lib/libLLVM.dylib $lib/lib/libLLVM-${release_version}.dylib
380+ ''
381+ + optionalString (stdenv.buildPlatform != stdenv.hostPlatform) ''
382+ cp NATIVE/bin/llvm-config $dev/bin/llvm-config-native
383+ '';
384+385+ inherit doCheck;
386+387+ checkTarget = "check-all";
388+389+ # For the update script:
390+ passthru.monorepoSrc = monorepoSrc;
391+392+ requiredSystemFeatures = [ "big-parallel" ];
393+ meta = llvm_meta // {
394+ homepage = "https://llvm.org/";
395+ description = "A collection of modular and reusable compiler and toolchain technologies";
396+ longDescription = ''
397+ The LLVM Project is a collection of modular and reusable compiler and
398+ toolchain technologies. Despite its name, LLVM has little to do with
399+ traditional virtual machines. The name "LLVM" itself is not an acronym; it
400+ is the full name of the project.
401+ LLVM began as a research project at the University of Illinois, with the
402+ goal of providing a modern, SSA-based compilation strategy capable of
403+ supporting both static and dynamic compilation of arbitrary programming
404+ languages. Since then, LLVM has grown to be an umbrella project consisting
405+ of a number of subprojects, many of which are being used in production by
406+ a wide variety of commercial and open source projects as well as being
407+ widely used in academic research. Code in the LLVM project is licensed
408+ under the "Apache 2.0 License with LLVM exceptions".
409+ '';
410+ };
411+} // lib.optionalAttrs enableManpages {
412+ pname = "llvm-manpages";
413+414+ propagatedBuildInputs = [];
415+416+ ninjaFlags = [ "docs-llvm-man" ];
417+ installTargets = [ "install-docs-llvm-man" ];
418+419+ postPatch = null;
420+ postInstall = null;
421+422+ outputs = [ "out" ];
423+424+ doCheck = false;
425+426+ meta = llvm_meta // {
427+ description = "man pages for LLVM ${version}";
428+ };
429+})
···1+diff --git a/utils/lit/lit/TestRunner.py b/utils/lit/lit/TestRunner.py
2+index 0242e0b75af3..d732011306f7 100644
3+--- a/utils/lit/lit/TestRunner.py
4++++ b/utils/lit/lit/TestRunner.py
5+@@ -1029,6 +1029,12 @@ def executeScript(test, litConfig, tmpBase, commands, cwd):
6+ f.write('@echo off\n')
7+ f.write('\n@if %ERRORLEVEL% NEQ 0 EXIT\n'.join(commands))
8+ else:
9++ # This env var is *purged* when invoking subprocesses so we have to
10++ # manually set it from within the bash script in order for the commands
11++ # in run lines to see this var:
12++ if "DYLD_LIBRARY_PATH" in test.config.environment:
13++ f.write(f'export DYLD_LIBRARY_PATH="{test.config.environment["DYLD_LIBRARY_PATH"]}"\n')
14++
15+ for i, ln in enumerate(commands):
16+ match = re.match(kPdbgRegex, ln)
17+ if match:
18+@@ -1363,7 +1369,7 @@ def applySubstitutions(script, substitutions, conditions={},
19+ return processed
20+21+ process = processLine if recursion_limit is None else processLineToFixedPoint
22+-
23++
24+ return [unescapePercents(process(ln)) for ln in script]
25+26+
···36, CoreServices
37, Foundation
38, Combine
039, CLTools_Executables
40}:
41···169 chmod a+x "$targetFile"
170 '';
171000000000000000172in stdenv.mkDerivation {
173 pname = "swift";
174 inherit (sources) version;
···263 patch -p1 -d swift -i ${./patches/swift-wrap.patch}
264 patch -p1 -d swift -i ${./patches/swift-nix-resource-root.patch}
265 patch -p1 -d swift -i ${./patches/swift-linux-fix-linking.patch}
266- patch -p1 -d swift -i ${./patches/swift-darwin-fix-bootstrap.patch}
267 patch -p1 -d swift -i ${substituteAll {
268 src = ./patches/swift-darwin-plistbuddy-workaround.patch;
269 inherit swiftArch;
···395 "
396 buildProject llvm llvm-project/llvm
397000000000000398 # Some notes:
399- # - Building with libswift defaults to OFF in CMake, but is enabled in
400- # standard builds, so we enable it as well.
00401 # - Experimental features are OFF by default in CMake, but some are
402 # required to build the stdlib.
403 # - SWIFT_STDLIB_ENABLE_OBJC_INTEROP is set explicitely because its check
···405 # Fixed in: https://github.com/apple/swift/commit/84083afef1de5931904d5c815d53856cdb3fb232
406 cmakeFlags="
407 -GNinja
408- -DBOOTSTRAPPING_MODE=BOOTSTRAPPING
409 -DSWIFT_ENABLE_EXPERIMENTAL_CONCURRENCY=ON
410 -DLLVM_DIR=$SWIFT_BUILD_ROOT/llvm/lib/cmake/llvm
411 -DClang_DIR=$SWIFT_BUILD_ROOT/llvm/lib/cmake/clang
···417 -DSWIFT_STDLIB_ENABLE_OBJC_INTEROP=${if stdenv.isDarwin then "ON" else "OFF"}
418 "
419 buildProject swift
000000420421 # These are based on flags in `utils/build-script-impl`.
422 #
···36, CoreServices
37, Foundation
38, Combine
39+, MacOSX-SDK
40, CLTools_Executables
41}:
42···170 chmod a+x "$targetFile"
171 '';
172173+ # On Darwin, we need to use BOOTSTRAPPING-WITH-HOSTLIBS because of ABI
174+ # stability, and have to provide the definitions for the system stdlib.
175+ appleSwiftCore = stdenv.mkDerivation {
176+ name = "apple-swift-core";
177+ dontUnpack = true;
178+179+ installPhase = ''
180+ mkdir -p $out/lib/swift
181+ cp -r \
182+ "${MacOSX-SDK}/usr/lib/swift/Swift.swiftmodule" \
183+ "${MacOSX-SDK}/usr/lib/swift/libswiftCore.tbd" \
184+ $out/lib/swift/
185+ '';
186+ };
187+188in stdenv.mkDerivation {
189 pname = "swift";
190 inherit (sources) version;
···279 patch -p1 -d swift -i ${./patches/swift-wrap.patch}
280 patch -p1 -d swift -i ${./patches/swift-nix-resource-root.patch}
281 patch -p1 -d swift -i ${./patches/swift-linux-fix-linking.patch}
0282 patch -p1 -d swift -i ${substituteAll {
283 src = ./patches/swift-darwin-plistbuddy-workaround.patch;
284 inherit swiftArch;
···410 "
411 buildProject llvm llvm-project/llvm
412413+ '' + lib.optionalString stdenv.isDarwin ''
414+ # Add appleSwiftCore to the search paths. We can't simply add it to
415+ # buildInputs, because it is potentially an older stdlib than the one we're
416+ # building. We have to remove it again after the main Swift build, or later
417+ # build steps may fail. (Specific case: Concurrency backdeploy uses the
418+ # Sendable protocol, which appears to not be present in the macOS 11 SDK.)
419+ OLD_NIX_SWIFTFLAGS_COMPILE="$NIX_SWIFTFLAGS_COMPILE"
420+ OLD_NIX_LDFLAGS="$NIX_LDFLAGS"
421+ export NIX_SWIFTFLAGS_COMPILE+=" -I ${appleSwiftCore}/lib/swift"
422+ export NIX_LDFLAGS+=" -L ${appleSwiftCore}/lib/swift"
423+ '' + ''
424+425 # Some notes:
426+ # - BOOTSTRAPPING_MODE defaults to OFF in CMake, but is enabled in standard
427+ # builds, so we enable it as well. On Darwin, we have to use the system
428+ # Swift libs because of ABI-stability, but this may be trouble if the
429+ # builder is an older macOS.
430 # - Experimental features are OFF by default in CMake, but some are
431 # required to build the stdlib.
432 # - SWIFT_STDLIB_ENABLE_OBJC_INTEROP is set explicitely because its check
···434 # Fixed in: https://github.com/apple/swift/commit/84083afef1de5931904d5c815d53856cdb3fb232
435 cmakeFlags="
436 -GNinja
437+ -DBOOTSTRAPPING_MODE=BOOTSTRAPPING${lib.optionalString stdenv.isDarwin "-WITH-HOSTLIBS"}
438 -DSWIFT_ENABLE_EXPERIMENTAL_CONCURRENCY=ON
439 -DLLVM_DIR=$SWIFT_BUILD_ROOT/llvm/lib/cmake/llvm
440 -DClang_DIR=$SWIFT_BUILD_ROOT/llvm/lib/cmake/clang
···446 -DSWIFT_STDLIB_ENABLE_OBJC_INTEROP=${if stdenv.isDarwin then "ON" else "OFF"}
447 "
448 buildProject swift
449+450+ '' + lib.optionalString stdenv.isDarwin ''
451+ # Restore search paths to remove appleSwiftCore.
452+ export NIX_SWIFTFLAGS_COMPILE="$OLD_NIX_SWIFTFLAGS_COMPILE"
453+ export NIX_LDFLAGS="$OLD_NIX_LDFLAGS"
454+ '' + ''
455456 # These are based on flags in `utils/build-script-impl`.
457 #
···1-This patch fixes dylib references during bootstrapping. It's possible
2-`LIBSWIFT_BUILD_MODE=BOOTSTRAPPING` is not really well tested on Darwin,
3-because official builds don't use it.
4-5-In the near future, Swift will require an existing Swift toolchain to
6-bootstrap, and we will likely have to replace this any way.
7-8---- a/stdlib/cmake/modules/AddSwiftStdlib.cmake
9-+++ b/stdlib/cmake/modules/AddSwiftStdlib.cmake
10-@@ -1035,6 +1035,10 @@ function(add_swift_target_library_single target name)
11- set(install_name_dir "${SWIFTLIB_SINGLE_DARWIN_INSTALL_NAME_DIR}")
12- endif()
13-14-+ if(DEFINED SWIFTLIB_SINGLE_BOOTSTRAPPING)
15-+ set(install_name_dir "${lib_dir}/${output_sub_dir}")
16-+ endif()
17-+
18- set_target_properties("${target}"
19- PROPERTIES
20- INSTALL_NAME_DIR "${install_name_dir}")
···47 longDescription = "Sphinx AutoAPI provides 'autodoc' style documentation for multiple programming languages without needing to load, run, or import the project being documented.";
48 license = licenses.mit;
49 maintainers = with maintainers; [ karolchmist ];
50- broken = stdenv.isDarwin;
51 };
52}
···47 longDescription = "Sphinx AutoAPI provides 'autodoc' style documentation for multiple programming languages without needing to load, run, or import the project being documented.";
48 license = licenses.mit;
49 maintainers = with maintainers; [ karolchmist ];
050 };
51}
···1-{ lib, buildPythonPackage, fetchPypi,
2- click, colorama, flask, requests, yt-dlp }:
000000000034buildPythonPackage rec {
5 pname = "yark";
6- version = "1.2.3";
0078 src = fetchPypi {
9 inherit pname version;
10- sha256 = "sha256-KMnQpEH2Z19Y0jBjqx2rZjmlle2M9bcuDCjDIljQEYY=";
11 };
1200000000013 propagatedBuildInputs = [
14- click colorama flask requests yt-dlp
0000015 ];
1617 # There aren't any unit tests. If test discovery runs, it will crash, halting the build.
18 # When upstream adds unit tests, please configure them here. Thanks! ~ C.
19 doCheck = false;
20000021 meta = with lib; {
22 description = "YouTube archiving made simple";
23 homepage = "https://github.com/Owez/yark";
24 license = licenses.mit;
025 };
26}
···1+{ lib
2+, buildPythonPackage
3+, fetchPypi
4+, poetry-core
5+, pythonRelaxDepsHook
6+, click
7+, colorama
8+, flask
9+, requests
10+, yt-dlp
11+, progress
12+}:
1314buildPythonPackage rec {
15 pname = "yark";
16+ version = "1.2.4";
17+18+ format = "pyproject";
1920 src = fetchPypi {
21 inherit pname version;
22+ sha256 = "fdd50d0e832b4522cbe24433f42ed571a1f199f571c1d0c98472b94a501db9cf";
23 };
2425+ pythonRelaxDeps = [
26+ "requests"
27+ ];
28+29+ nativeBuildInputs = [
30+ poetry-core
31+ pythonRelaxDepsHook
32+ ];
33+34 propagatedBuildInputs = [
35+ click
36+ colorama
37+ flask
38+ progress
39+ requests
40+ yt-dlp
41 ];
4243 # There aren't any unit tests. If test discovery runs, it will crash, halting the build.
44 # When upstream adds unit tests, please configure them here. Thanks! ~ C.
45 doCheck = false;
4647+ pythonImportsCheck = [
48+ "yark"
49+ ];
50+51 meta = with lib; {
52 description = "YouTube archiving made simple";
53 homepage = "https://github.com/Owez/yark";
54 license = licenses.mit;
55+ maintainers = [ ];
56 };
57}
+3-3
pkgs/development/tools/buf/default.nix
···1011buildGoModule rec {
12 pname = "buf";
13- version = "1.12.0";
1415 src = fetchFromGitHub {
16 owner = "bufbuild";
17 repo = pname;
18 rev = "v${version}";
19- hash = "sha256-tEeAr1QSec1Sayfg2/erk5u6wBZDodZIMYq9MaU7ATA=";
20 };
2122- vendorHash = "sha256-FCAxqyacDdt3mR628/sguvrBx+nG10648XqF5hA8z+s=";
2324 patches = [
25 # Skip a test that requires networking to be available to work.
···1011buildGoModule rec {
12 pname = "buf";
13+ version = "1.13.1";
1415 src = fetchFromGitHub {
16 owner = "bufbuild";
17 repo = pname;
18 rev = "v${version}";
19+ hash = "sha256-FEc83SVFCsGDrCg7IYmn8iZ6NozYFsIUJ3QORBYUdMI=";
20 };
2122+ vendorHash = "sha256-Zmias6mJWYh+PCyBdnRlNyKIoFqEYJZNF19i559SGTI=";
2324 patches = [
25 # Skip a test that requires networking to be available to work.
+3-3
pkgs/development/tools/cocogitto/default.nix
···23rustPlatform.buildRustPackage rec {
4 pname = "cocogitto";
5- version = "5.3.0";
67 src = fetchFromGitHub {
8 owner = "oknozor";
9 repo = pname;
10 rev = version;
11- sha256 = "sha256-BqyV4hJw7H9yN5Kj/XwhYS6hElXdKUJEUi5M/PNlPO0=";
12 };
1314- cargoHash = "sha256-MA3XW2tPn0qVx7ve+UqCoG4nQ7UyuvXEebrPuLKqS4g=";
1516 # Test depend on git configuration that would likly exist in a normal user enviroment
17 # and might be failing to create the test repository it works in.
···23rustPlatform.buildRustPackage rec {
4 pname = "cocogitto";
5+ version = "5.3.1";
67 src = fetchFromGitHub {
8 owner = "oknozor";
9 repo = pname;
10 rev = version;
11+ sha256 = "sha256-Z0snC5NomUWzxI2qcRMxdZbC1aOQ8P2Ll9EdVfhP7ZU=";
12 };
1314+ cargoHash = "sha256-P/xwE3oLVsIoxPmG+S0htSHhZxCj79z2ARGe2WzWCEo=";
1516 # Test depend on git configuration that would likly exist in a normal user enviroment
17 # and might be failing to create the test repository it works in.
···20 ]
21 },
22 "contacts": {
23- "sha256": "0qv3c7wmf9j74562xbjvhk6kbpna6ansiw3724dh4w8j5sldqysd",
24- "url": "https://github.com/nextcloud-releases/contacts/releases/download/v4.2.3/contacts-v4.2.3.tar.gz",
25- "version": "4.2.3",
26 "description": "The Nextcloud contacts app is a user interface for Nextcloud's CardDAV server. Easily sync contacts from various devices with your Nextcloud and edit them online.\n\n* 🚀 **Integration with other Nextcloud apps!** Currently Mail and Calendar – more to come.\n* 🎉 **Never forget a birthday!** You can sync birthdays and other recurring events with your Nextcloud Calendar.\n* 👥 **Sharing of Adressbooks!** You want to share your contacts with your friends or coworkers? No problem!\n* 🙈 **We’re not reinventing the wheel!** Based on the great and open SabreDAV library.",
27 "homepage": "https://github.com/nextcloud/contacts#readme",
28 "licenses": [
···110 ]
111 },
112 "news": {
113- "sha256": "0pnriarr2iqci2v2hn6vpvszf4m4pkcxsd2i13bp7n1zqkg6swd7",
114- "url": "https://github.com/nextcloud/news/releases/download/20.0.0/news.tar.gz",
115- "version": "20.0.0",
116 "description": "📰 A RSS/Atom Feed reader App for Nextcloud\n\n- 📲 Synchronize your feeds with multiple mobile or desktop [clients](https://nextcloud.github.io/news/clients/)\n- 🔄 Automatic updates of your news feeds\n- 🆓 Free and open source under AGPLv3, no ads or premium functions\n\n**System Cron is currently required for this app to work**\n\nRequirements can be found [here](https://nextcloud.github.io/news/install/#dependencies)\n\nThe Changelog is available [here](https://github.com/nextcloud/news/blob/master/CHANGELOG.md)\n\nCreate a [bug report](https://github.com/nextcloud/news/issues/new/choose)\n\nCreate a [feature request](https://github.com/nextcloud/news/discussions/new)\n\nReport a [feed issue](https://github.com/nextcloud/news/discussions/new)",
117 "homepage": "https://github.com/nextcloud/news",
118 "licenses": [
···140 ]
141 },
142 "polls": {
143- "sha256": "b6ef0e8b34cdb5169341e30340bc9cefaa1254a1a6020e951f86e828f8591a11",
144- "url": "https://github.com/nextcloud/polls/releases/download/v3.8.3/polls.tar.gz",
145- "version": "3.8.3",
146 "description": "A polls app, similar to Doodle/Dudle with the possibility to restrict access (members, certain groups/users, hidden and public).",
147 "homepage": "https://github.com/nextcloud/polls",
148 "licenses": [
···160 ]
161 },
162 "spreed": {
163- "sha256": "0frilxny4mvp34fxw0k8al3r5apy3q6vq7z35jkph3vaq1889m9k",
164- "url": "https://github.com/nextcloud-releases/spreed/releases/download/v14.0.7/spreed-v14.0.7.tar.gz",
165- "version": "14.0.7",
166 "description": "Chat, video & audio-conferencing using WebRTC\n\n* 💬 **Chat integration!** Nextcloud Talk comes with a simple text chat. Allowing you to share files from your Nextcloud and mentioning other participants.\n* 👥 **Private, group, public and password protected calls!** Just invite somebody, a whole group or send a public link to invite to a call.\n* 💻 **Screen sharing!** Share your screen with participants of your call. You just need to use Firefox version 66 (or newer), latest Edge or Chrome 72 (or newer, also possible using Chrome 49 with this [Chrome extension](https://chrome.google.com/webstore/detail/screensharing-for-nextclo/kepnpjhambipllfmgmbapncekcmabkol)).\n* 🚀 **Integration with other Nextcloud apps** like Files, Contacts and Deck. More to come.\n\nAnd in the works for the [coming versions](https://github.com/nextcloud/spreed/milestones/):\n* ✋ [Federated calls](https://github.com/nextcloud/spreed/issues/21), to call people on other Nextclouds",
167 "homepage": "https://github.com/nextcloud/spreed",
168 "licenses": [
···20 ]
21 },
22 "contacts": {
23+ "sha256": "1996f97w74slmh7ihv8p1lxl32rri5nnzp90mbb1imclpgac2i63",
24+ "url": "https://github.com/nextcloud-releases/contacts/releases/download/v4.2.4/contacts-v4.2.4.tar.gz",
25+ "version": "4.2.4",
26 "description": "The Nextcloud contacts app is a user interface for Nextcloud's CardDAV server. Easily sync contacts from various devices with your Nextcloud and edit them online.\n\n* 🚀 **Integration with other Nextcloud apps!** Currently Mail and Calendar – more to come.\n* 🎉 **Never forget a birthday!** You can sync birthdays and other recurring events with your Nextcloud Calendar.\n* 👥 **Sharing of Adressbooks!** You want to share your contacts with your friends or coworkers? No problem!\n* 🙈 **We’re not reinventing the wheel!** Based on the great and open SabreDAV library.",
27 "homepage": "https://github.com/nextcloud/contacts#readme",
28 "licenses": [
···110 ]
111 },
112 "news": {
113+ "sha256": "0iz1yrl7h60yhc1d1gkalkzc5vlj8sq6lff0ggns6a6qpsdpn9c5",
114+ "url": "https://github.com/nextcloud/news/releases/download/20.0.1/news.tar.gz",
115+ "version": "20.0.1",
116 "description": "📰 A RSS/Atom Feed reader App for Nextcloud\n\n- 📲 Synchronize your feeds with multiple mobile or desktop [clients](https://nextcloud.github.io/news/clients/)\n- 🔄 Automatic updates of your news feeds\n- 🆓 Free and open source under AGPLv3, no ads or premium functions\n\n**System Cron is currently required for this app to work**\n\nRequirements can be found [here](https://nextcloud.github.io/news/install/#dependencies)\n\nThe Changelog is available [here](https://github.com/nextcloud/news/blob/master/CHANGELOG.md)\n\nCreate a [bug report](https://github.com/nextcloud/news/issues/new/choose)\n\nCreate a [feature request](https://github.com/nextcloud/news/discussions/new)\n\nReport a [feed issue](https://github.com/nextcloud/news/discussions/new)",
117 "homepage": "https://github.com/nextcloud/news",
118 "licenses": [
···140 ]
141 },
142 "polls": {
143+ "sha256": "0qdm0hnljkv0df1s929awyjj1gsp3d6xv9llr52cxv66kkfx086y",
144+ "url": "https://github.com/nextcloud/polls/releases/download/v3.8.4/polls.tar.gz",
145+ "version": "3.8.4",
146 "description": "A polls app, similar to Doodle/Dudle with the possibility to restrict access (members, certain groups/users, hidden and public).",
147 "homepage": "https://github.com/nextcloud/polls",
148 "licenses": [
···160 ]
161 },
162 "spreed": {
163+ "sha256": "0c5b46g5vi8fsjcd2r0wqza7iqyvbgznwww5zcyajf29a32950c6",
164+ "url": "https://github.com/nextcloud-releases/spreed/releases/download/v14.0.8/spreed-v14.0.8.tar.gz",
165+ "version": "14.0.8",
166 "description": "Chat, video & audio-conferencing using WebRTC\n\n* 💬 **Chat integration!** Nextcloud Talk comes with a simple text chat. Allowing you to share files from your Nextcloud and mentioning other participants.\n* 👥 **Private, group, public and password protected calls!** Just invite somebody, a whole group or send a public link to invite to a call.\n* 💻 **Screen sharing!** Share your screen with participants of your call. You just need to use Firefox version 66 (or newer), latest Edge or Chrome 72 (or newer, also possible using Chrome 49 with this [Chrome extension](https://chrome.google.com/webstore/detail/screensharing-for-nextclo/kepnpjhambipllfmgmbapncekcmabkol)).\n* 🚀 **Integration with other Nextcloud apps** like Files, Contacts and Deck. More to come.\n\nAnd in the works for the [coming versions](https://github.com/nextcloud/spreed/milestones/):\n* ✋ [Federated calls](https://github.com/nextcloud/spreed/issues/21), to call people on other Nextclouds",
167 "homepage": "https://github.com/nextcloud/spreed",
168 "licenses": [
+15-15
pkgs/servers/nextcloud/packages/25.json
···10 ]
11 },
12 "calendar": {
13- "sha256": "04g1xm3q46j7harxr0n56r7kkkqjxvah7xijddyq5fj7icr6qf5d",
14- "url": "https://github.com/nextcloud-releases/calendar/releases/download/v4.2.1/calendar-v4.2.1.tar.gz",
15- "version": "4.2.1",
16 "description": "The Calendar app is a user interface for Nextcloud's CalDAV server. Easily sync events from various devices with your Nextcloud and edit them online.\n\n* 🚀 **Integration with other Nextcloud apps!** Currently Contacts - more to come.\n* 🌐 **WebCal Support!** Want to see your favorite team’s matchdays in your calendar? No problem!\n* 🙋 **Attendees!** Invite people to your events\n* ⌚️ **Free/Busy!** See when your attendees are available to meet\n* ⏰ **Reminders!** Get alarms for events inside your browser and via email\n* 🔍 Search! Find your events at ease\n* ☑️ Tasks! See tasks with a due date directly in the calendar\n* 🙈 **We’re not reinventing the wheel!** Based on the great [c-dav library](https://github.com/nextcloud/cdav-library), [ical.js](https://github.com/mozilla-comm/ical.js) and [fullcalendar](https://github.com/fullcalendar/fullcalendar) libraries.",
17 "homepage": "https://github.com/nextcloud/calendar/",
18 "licenses": [
···20 ]
21 },
22 "contacts": {
23- "sha256": "097a71if6kkc7nphfc8b6llqlsskjwp1vg83134hzgfscvllvaj8",
24- "url": "https://github.com/nextcloud-releases/contacts/releases/download/v5.0.2/contacts-v5.0.2.tar.gz",
25- "version": "5.0.2",
26 "description": "The Nextcloud contacts app is a user interface for Nextcloud's CardDAV server. Easily sync contacts from various devices with your Nextcloud and edit them online.\n\n* 🚀 **Integration with other Nextcloud apps!** Currently Mail and Calendar – more to come.\n* 🎉 **Never forget a birthday!** You can sync birthdays and other recurring events with your Nextcloud Calendar.\n* 👥 **Sharing of Adressbooks!** You want to share your contacts with your friends or coworkers? No problem!\n* 🙈 **We’re not reinventing the wheel!** Based on the great and open SabreDAV library.",
27 "homepage": "https://github.com/nextcloud/contacts#readme",
28 "licenses": [
···90 ]
91 },
92 "news": {
93- "sha256": "0pnriarr2iqci2v2hn6vpvszf4m4pkcxsd2i13bp7n1zqkg6swd7",
94- "url": "https://github.com/nextcloud/news/releases/download/20.0.0/news.tar.gz",
95- "version": "20.0.0",
96 "description": "📰 A RSS/Atom Feed reader App for Nextcloud\n\n- 📲 Synchronize your feeds with multiple mobile or desktop [clients](https://nextcloud.github.io/news/clients/)\n- 🔄 Automatic updates of your news feeds\n- 🆓 Free and open source under AGPLv3, no ads or premium functions\n\n**System Cron is currently required for this app to work**\n\nRequirements can be found [here](https://nextcloud.github.io/news/install/#dependencies)\n\nThe Changelog is available [here](https://github.com/nextcloud/news/blob/master/CHANGELOG.md)\n\nCreate a [bug report](https://github.com/nextcloud/news/issues/new/choose)\n\nCreate a [feature request](https://github.com/nextcloud/news/discussions/new)\n\nReport a [feed issue](https://github.com/nextcloud/news/discussions/new)",
97 "homepage": "https://github.com/nextcloud/news",
98 "licenses": [
···120 ]
121 },
122 "polls": {
123- "sha256": "1amywiw91acp4g90wazmqmnw51s7z6rf27bdrzxrcqryd8igsniq",
124- "url": "https://github.com/nextcloud/polls/releases/download/v4.1.0-beta4/polls.tar.gz",
125- "version": "4.1.0-beta4",
126 "description": "A polls app, similar to Doodle/Dudle with the possibility to restrict access (members, certain groups/users, hidden and public).",
127 "homepage": "https://github.com/nextcloud/polls",
128 "licenses": [
···140 ]
141 },
142 "spreed": {
143- "sha256": "1w5v866lkd0skv666vhz75zwalr2w83shrhdvv354kill9k53awh",
144- "url": "https://github.com/nextcloud-releases/spreed/releases/download/v15.0.2/spreed-v15.0.2.tar.gz",
145- "version": "15.0.2",
146 "description": "Chat, video & audio-conferencing using WebRTC\n\n* 💬 **Chat integration!** Nextcloud Talk comes with a simple text chat. Allowing you to share files from your Nextcloud and mentioning other participants.\n* 👥 **Private, group, public and password protected calls!** Just invite somebody, a whole group or send a public link to invite to a call.\n* 💻 **Screen sharing!** Share your screen with participants of your call. You just need to use Firefox version 66 (or newer), latest Edge or Chrome 72 (or newer, also possible using Chrome 49 with this [Chrome extension](https://chrome.google.com/webstore/detail/screensharing-for-nextclo/kepnpjhambipllfmgmbapncekcmabkol)).\n* 🚀 **Integration with other Nextcloud apps** like Files, Contacts and Deck. More to come.\n\nAnd in the works for the [coming versions](https://github.com/nextcloud/spreed/milestones/):\n* ✋ [Federated calls](https://github.com/nextcloud/spreed/issues/21), to call people on other Nextclouds",
147 "homepage": "https://github.com/nextcloud/spreed",
148 "licenses": [
···10 ]
11 },
12 "calendar": {
13+ "sha256": "0yqpfp5nbzd7zar2rbcx3bhfgjxrp1sy6a57fdagndfi4y0r56hq",
14+ "url": "https://github.com/nextcloud-releases/calendar/releases/download/v4.2.2/calendar-v4.2.2.tar.gz",
15+ "version": "4.2.2",
16 "description": "The Calendar app is a user interface for Nextcloud's CalDAV server. Easily sync events from various devices with your Nextcloud and edit them online.\n\n* 🚀 **Integration with other Nextcloud apps!** Currently Contacts - more to come.\n* 🌐 **WebCal Support!** Want to see your favorite team’s matchdays in your calendar? No problem!\n* 🙋 **Attendees!** Invite people to your events\n* ⌚️ **Free/Busy!** See when your attendees are available to meet\n* ⏰ **Reminders!** Get alarms for events inside your browser and via email\n* 🔍 Search! Find your events at ease\n* ☑️ Tasks! See tasks with a due date directly in the calendar\n* 🙈 **We’re not reinventing the wheel!** Based on the great [c-dav library](https://github.com/nextcloud/cdav-library), [ical.js](https://github.com/mozilla-comm/ical.js) and [fullcalendar](https://github.com/fullcalendar/fullcalendar) libraries.",
17 "homepage": "https://github.com/nextcloud/calendar/",
18 "licenses": [
···20 ]
21 },
22 "contacts": {
23+ "sha256": "181lycyz4v7v1yir6ylmblgha625sn23nf3661g3izq1whi0wgr9",
24+ "url": "https://github.com/nextcloud-releases/contacts/releases/download/v5.0.3/contacts-v5.0.3.tar.gz",
25+ "version": "5.0.3",
26 "description": "The Nextcloud contacts app is a user interface for Nextcloud's CardDAV server. Easily sync contacts from various devices with your Nextcloud and edit them online.\n\n* 🚀 **Integration with other Nextcloud apps!** Currently Mail and Calendar – more to come.\n* 🎉 **Never forget a birthday!** You can sync birthdays and other recurring events with your Nextcloud Calendar.\n* 👥 **Sharing of Adressbooks!** You want to share your contacts with your friends or coworkers? No problem!\n* 🙈 **We’re not reinventing the wheel!** Based on the great and open SabreDAV library.",
27 "homepage": "https://github.com/nextcloud/contacts#readme",
28 "licenses": [
···90 ]
91 },
92 "news": {
93+ "sha256": "0iz1yrl7h60yhc1d1gkalkzc5vlj8sq6lff0ggns6a6qpsdpn9c5",
94+ "url": "https://github.com/nextcloud/news/releases/download/20.0.1/news.tar.gz",
95+ "version": "20.0.1",
96 "description": "📰 A RSS/Atom Feed reader App for Nextcloud\n\n- 📲 Synchronize your feeds with multiple mobile or desktop [clients](https://nextcloud.github.io/news/clients/)\n- 🔄 Automatic updates of your news feeds\n- 🆓 Free and open source under AGPLv3, no ads or premium functions\n\n**System Cron is currently required for this app to work**\n\nRequirements can be found [here](https://nextcloud.github.io/news/install/#dependencies)\n\nThe Changelog is available [here](https://github.com/nextcloud/news/blob/master/CHANGELOG.md)\n\nCreate a [bug report](https://github.com/nextcloud/news/issues/new/choose)\n\nCreate a [feature request](https://github.com/nextcloud/news/discussions/new)\n\nReport a [feed issue](https://github.com/nextcloud/news/discussions/new)",
97 "homepage": "https://github.com/nextcloud/news",
98 "licenses": [
···120 ]
121 },
122 "polls": {
123+ "sha256": "0mqc9zmxrm98byy6v13si3hwii8hx85998c4kv91vk6ad0sfxjhb",
124+ "url": "https://github.com/nextcloud/polls/releases/download/v4.1.2/polls.tar.gz",
125+ "version": "4.1.2",
126 "description": "A polls app, similar to Doodle/Dudle with the possibility to restrict access (members, certain groups/users, hidden and public).",
127 "homepage": "https://github.com/nextcloud/polls",
128 "licenses": [
···140 ]
141 },
142 "spreed": {
143+ "sha256": "07nh7nlz8di69ms1156fklj29526i3phlvki5vf2mxnlcz8ihg27",
144+ "url": "https://github.com/nextcloud-releases/spreed/releases/download/v15.0.3/spreed-v15.0.3.tar.gz",
145+ "version": "15.0.3",
146 "description": "Chat, video & audio-conferencing using WebRTC\n\n* 💬 **Chat integration!** Nextcloud Talk comes with a simple text chat. Allowing you to share files from your Nextcloud and mentioning other participants.\n* 👥 **Private, group, public and password protected calls!** Just invite somebody, a whole group or send a public link to invite to a call.\n* 💻 **Screen sharing!** Share your screen with participants of your call. You just need to use Firefox version 66 (or newer), latest Edge or Chrome 72 (or newer, also possible using Chrome 49 with this [Chrome extension](https://chrome.google.com/webstore/detail/screensharing-for-nextclo/kepnpjhambipllfmgmbapncekcmabkol)).\n* 🚀 **Integration with other Nextcloud apps** like Files, Contacts and Deck. More to come.\n\nAnd in the works for the [coming versions](https://github.com/nextcloud/spreed/milestones/):\n* ✋ [Federated calls](https://github.com/nextcloud/spreed/issues/21), to call people on other Nextclouds",
147 "homepage": "https://github.com/nextcloud/spreed",
148 "licenses": [
···1+{
2+ "calendar": {
3+ "sha256": "0yqpfp5nbzd7zar2rbcx3bhfgjxrp1sy6a57fdagndfi4y0r56hq",
4+ "url": "https://github.com/nextcloud-releases/calendar/releases/download/v4.2.2/calendar-v4.2.2.tar.gz",
5+ "version": "4.2.2",
6+ "description": "The Calendar app is a user interface for Nextcloud's CalDAV server. Easily sync events from various devices with your Nextcloud and edit them online.\n\n* 🚀 **Integration with other Nextcloud apps!** Currently Contacts - more to come.\n* 🌐 **WebCal Support!** Want to see your favorite team’s matchdays in your calendar? No problem!\n* 🙋 **Attendees!** Invite people to your events\n* ⌚️ **Free/Busy!** See when your attendees are available to meet\n* ⏰ **Reminders!** Get alarms for events inside your browser and via email\n* 🔍 Search! Find your events at ease\n* ☑️ Tasks! See tasks with a due date directly in the calendar\n* 🙈 **We’re not reinventing the wheel!** Based on the great [c-dav library](https://github.com/nextcloud/cdav-library), [ical.js](https://github.com/mozilla-comm/ical.js) and [fullcalendar](https://github.com/fullcalendar/fullcalendar) libraries.",
7+ "homepage": "https://github.com/nextcloud/calendar/",
8+ "licenses": [
9+ "agpl"
10+ ]
11+ },
12+ "files_texteditor": {
13+ "sha256": "0rmk14iw34pd81snp3lm01k07wm5j2nh9spcd4j0m43l20b7kxss",
14+ "url": "https://github.com/nextcloud-releases/files_texteditor/releases/download/v2.15.0/files_texteditor.tar.gz",
15+ "version": "2.15.0",
16+ "description": "This application enables Nextcloud users to open, save and edit text files in the web browser. If enabled, an entry called \"Text file\" in the \"New\" button menu at the top of the web browser appears. When clicked, a new text file opens in the browser and the file can be saved into the current Nextcloud directory. Further, when a text file is clicked in the web browser, it will be opened and editable. If the privileges allow, a user can also edit shared files and save these changes back into the web browser.\nMore information is available in the text editor documentation.",
17+ "homepage": "https://github.com/nextcloud/files_texteditor",
18+ "licenses": [
19+ "agpl"
20+ ]
21+ },
22+ "mail": {
23+ "sha256": "",
24+ "url": "https://github.com/nextcloud-releases/mail/releases/download/v2.2.2/mail-v2.2.2.tar.gz",
25+ "version": "2.2.2",
26+ "description": "**💌 A mail app for Nextcloud**\n\n- **🚀 Integration with other Nextcloud apps!** Currently Contacts, Calendar & Files – more to come.\n- **📥 Multiple mail accounts!** Personal and company account? No problem, and a nice unified inbox. Connect any IMAP account.\n- **🔒 Send & receive encrypted mails!** Using the great [Mailvelope](https://mailvelope.com) browser extension.\n- **🙈 We’re not reinventing the wheel!** Based on the great [Horde](https://horde.org) libraries.\n- **📬 Want to host your own mail server?** We do not have to reimplement this as you could set up [Mail-in-a-Box](https://mailinabox.email)!",
27+ "homepage": "https://github.com/nextcloud/mail#readme",
28+ "licenses": [
29+ "agpl"
30+ ]
31+ },
32+ "notes": {
33+ "sha256": "1jcgv3awr45jq3n3qv851qlpbdl2plixba0iq2s54dmhciypdckl",
34+ "url": "https://github.com/nextcloud/notes/releases/download/v4.6.0/notes.tar.gz",
35+ "version": "4.6.0",
36+ "description": "The Notes app is a distraction free notes taking app for [Nextcloud](https://www.nextcloud.com/). It provides categories for better organization and supports formatting using [Markdown](https://en.wikipedia.org/wiki/Markdown) syntax. Notes are saved as files in your Nextcloud, so you can view and edit them with every Nextcloud client. Furthermore, a separate [REST API](https://github.com/nextcloud/notes/blob/master/docs/api/README.md) allows for an easy integration into third-party apps (currently, there are notes apps for [Android](https://github.com/stefan-niedermann/nextcloud-notes), [iOS](https://github.com/owncloud/notes-iOS-App) and the [console](https://git.danielmoch.com/nncli/about) which allow convenient access to your Nextcloud notes). Further features include marking notes as favorites.",
37+ "homepage": "https://github.com/nextcloud/notes",
38+ "licenses": [
39+ "agpl"
40+ ]
41+ },
42+ "tasks": {
43+ "sha256": "0jm13d6nm7cfsw27yfiq1il9xjlh0qrq8xby2yz9dmggn7lk1dx5",
44+ "url": "https://github.com/nextcloud/tasks/releases/download/v0.14.5/tasks.tar.gz",
45+ "version": "0.14.5",
46+ "description": "Once enabled, a new Tasks menu will appear in your Nextcloud apps menu. From there you can add and delete tasks, edit their title, description, start and due dates and mark them as important. Tasks can be shared between users. Tasks can be synchronized using CalDav (each task list is linked to an Nextcloud calendar, to sync it to your local client: Thunderbird, Evolution, KDE Kontact, iCal … - just add the calendar as a remote calendar in your client). You can download your tasks as ICS files using the download button for each calendar.",
47+ "homepage": "https://github.com/nextcloud/tasks/",
48+ "licenses": [
49+ "agpl"
50+ ]
51+ },
52+ "unsplash": {
53+ "sha256": "17qqn6kwpvkq21c92jyy3pfvjaj5xms1hr07fnn39zxg0nmwjdd8",
54+ "url": "https://github.com/nextcloud/unsplash/releases/download/v2.1.1/unsplash.tar.gz",
55+ "version": "2.1.1",
56+ "description": "Show a new random featured nature photo in your nextcloud. Now with choosable motives!",
57+ "homepage": "https://github.com/nextcloud/unsplash/",
58+ "licenses": [
59+ "agpl"
60+ ]
61+ }
62+}
···1+From fc3e14155b3c4300b691ab46579830e725457a54 Mon Sep 17 00:00:00 2001
2+From: Maximilian Bosch <maximilian@mbosch.me>
3+Date: Sat, 10 Sep 2022 15:18:05 +0200
4+Subject: [PATCH] Setup: remove custom dbuser creation behavior
5+6+Both PostgreSQL and MySQL can be authenticated against from Nextcloud by
7+supplying a database password. Now, during setup the following things
8+happen:
9+10+* When using postgres and the db user has elevated permissions, a new
11+ unprivileged db user is created and the settings `dbuser`/`dbpass` are
12+ altered in `config.php`.
13+14+* When using MySQL, the password is **always** regenerated since
15+ 24.0.5/23.0.9[1].
16+17+I consider both cases problematic: the reason why people do configuration
18+management is to have it as single source of truth! So, IMHO any
19+application that silently alters config and thus causes deployed
20+nodes to diverge from the configuration is harmful for that.
21+22+I guess it was sheer luck that it worked for so long in NixOS because
23+nobody has apparently used password authentication with a privileged
24+user to operate Nextcloud (which is a good thing in fact).
25+26+[1] https://github.com/nextcloud/server/pull/33513
27+---
28+ lib/private/Setup/MySQL.php | 53 --------------------------------
29+ lib/private/Setup/PostgreSQL.php | 37 ----------------------
30+ 2 files changed, 90 deletions(-)
31+32+diff --git a/lib/private/Setup/MySQL.php b/lib/private/Setup/MySQL.php
33+index e3004c269bc..bc958e84e44 100644
34+--- a/lib/private/Setup/MySQL.php
35++++ b/lib/private/Setup/MySQL.php
36+@@ -141,62 +141,6 @@
37+ $rootUser = $this->dbUser;
38+ $rootPassword = $this->dbPassword;
39+40+- //create a random password so we don't need to store the admin password in the config file
41+- $saveSymbols = str_replace(['\"', '\\', '\'', '`'], '', ISecureRandom::CHAR_SYMBOLS);
42+- $password = $this->random->generate(22, ISecureRandom::CHAR_ALPHANUMERIC . $saveSymbols)
43+- . $this->random->generate(2, ISecureRandom::CHAR_UPPER)
44+- . $this->random->generate(2, ISecureRandom::CHAR_LOWER)
45+- . $this->random->generate(2, ISecureRandom::CHAR_DIGITS)
46+- . $this->random->generate(2, $saveSymbols)
47+- ;
48+- $this->dbPassword = str_shuffle($password);
49+-
50+- try {
51+- //user already specified in config
52+- $oldUser = $this->config->getValue('dbuser', false);
53+-
54+- //we don't have a dbuser specified in config
55+- if ($this->dbUser !== $oldUser) {
56+- //add prefix to the admin username to prevent collisions
57+- $adminUser = substr('oc_' . $username, 0, 16);
58+-
59+- $i = 1;
60+- while (true) {
61+- //this should be enough to check for admin rights in mysql
62+- $query = 'SELECT user FROM mysql.user WHERE user=?';
63+- $result = $connection->executeQuery($query, [$adminUser]);
64+-
65+- //current dbuser has admin rights
66+- $data = $result->fetchAll();
67+- $result->closeCursor();
68+- //new dbuser does not exist
69+- if (count($data) === 0) {
70+- //use the admin login data for the new database user
71+- $this->dbUser = $adminUser;
72+- $this->createDBUser($connection);
73+-
74+- break;
75+- } else {
76+- //repeat with different username
77+- $length = strlen((string)$i);
78+- $adminUser = substr('oc_' . $username, 0, 16 - $length) . $i;
79+- $i++;
80+- }
81+- }
82+- } else {
83+- // Reuse existing password if a database config is already present
84+- $this->dbPassword = $rootPassword;
85+- }
86+- } catch (\Exception $ex) {
87+- $this->logger->info('Can not create a new MySQL user, will continue with the provided user.', [
88+- 'exception' => $ex,
89+- 'app' => 'mysql.setup',
90+- ]);
91+- // Restore the original credentials
92+- $this->dbUser = $rootUser;
93+- $this->dbPassword = $rootPassword;
94+- }
95+-
96+ $this->config->setValues([
97+ 'dbuser' => $this->dbUser,
98+ 'dbpassword' => $this->dbPassword,
99+diff --git a/lib/private/Setup/PostgreSQL.php b/lib/private/Setup/PostgreSQL.php
100+index af816c7ad04..e49e5508e15 100644
101+--- a/lib/private/Setup/PostgreSQL.php
102++++ b/lib/private/Setup/PostgreSQL.php
103+@@ -45,43 +45,6 @@ class PostgreSQL extends AbstractDatabase {
104+ $connection = $this->connect([
105+ 'dbname' => 'postgres'
106+ ]);
107+- //check for roles creation rights in postgresql
108+- $builder = $connection->getQueryBuilder();
109+- $builder->automaticTablePrefix(false);
110+- $query = $builder
111+- ->select('rolname')
112+- ->from('pg_roles')
113+- ->where($builder->expr()->eq('rolcreaterole', new Literal('TRUE')))
114+- ->andWhere($builder->expr()->eq('rolname', $builder->createNamedParameter($this->dbUser)));
115+-
116+- try {
117+- $result = $query->execute();
118+- $canCreateRoles = $result->rowCount() > 0;
119+- } catch (DatabaseException $e) {
120+- $canCreateRoles = false;
121+- }
122+-
123+- if ($canCreateRoles) {
124+- $connectionMainDatabase = $this->connect();
125+- //use the admin login data for the new database user
126+-
127+- //add prefix to the postgresql user name to prevent collisions
128+- $this->dbUser = 'oc_' . strtolower($username);
129+- //create a new password so we don't need to store the admin config in the config file
130+- $this->dbPassword = \OC::$server->getSecureRandom()->generate(30, ISecureRandom::CHAR_ALPHANUMERIC);
131+-
132+- $this->createDBUser($connection);
133+-
134+- // Go to the main database and grant create on the public schema
135+- // The code below is implemented to make installing possible with PostgreSQL version 15:
136+- // https://www.postgresql.org/docs/release/15.0/
137+- // From the release notes: For new databases having no need to defend against insider threats, granting CREATE permission will yield the behavior of prior releases
138+- // Therefore we assume that the database is only used by one user/service which is Nextcloud
139+- // Additional services should get installed in a separate database in order to stay secure
140+- // Also see https://www.postgresql.org/docs/15/ddl-schemas.html#DDL-SCHEMAS-PATTERNS
141+- $connectionMainDatabase->executeQuery('GRANT CREATE ON SCHEMA public TO ' . addslashes($this->dbUser));
142+- $connectionMainDatabase->close();
143+- }
144+145+ $this->config->setValues([
146+ 'dbuser' => $this->dbUser,
147+--
148+2.38.1
149+