···1250 directories, thus increasing the purity of the build.
1251 </para>
1252 </listitem>
00000000000001253 </itemizedlist>
1254 </section>
1255</section>
···1250 directories, thus increasing the purity of the build.
1251 </para>
1252 </listitem>
1253+ <listitem>
1254+ <para>
1255+ Three new options,
1256+ <link linkend="opt-xdg.mime.addedAssociations">xdg.mime.addedAssociations</link>,
1257+ <link linkend="opt-xdg.mime.defaultApplications">xdg.mime.defaultApplications</link>,
1258+ and
1259+ <link linkend="opt-xdg.mime.removedAssociations">xdg.mime.removedAssociations</link>
1260+ have been added to the
1261+ <link linkend="opt-xdg.mime.enable">xdg.mime</link> module to
1262+ allow the configuration of
1263+ <literal>/etc/xdg/mimeapps.list</literal>.
1264+ </para>
1265+ </listitem>
1266 </itemizedlist>
1267 </section>
1268</section>
+2
nixos/doc/manual/release-notes/rl-2111.section.md
···378379- `lua` and `luajit` interpreters have been patched to avoid looking into /usr/lib
380 directories, thus increasing the purity of the build.
00
···378379- `lua` and `luajit` interpreters have been patched to avoid looking into /usr/lib
380 directories, thus increasing the purity of the build.
381+382+- Three new options, [xdg.mime.addedAssociations](#opt-xdg.mime.addedAssociations), [xdg.mime.defaultApplications](#opt-xdg.mime.defaultApplications), and [xdg.mime.removedAssociations](#opt-xdg.mime.removedAssociations) have been added to the [xdg.mime](#opt-xdg.mime.enable) module to allow the configuration of `/etc/xdg/mimeapps.list`.
···4 version="5.0"
5 xml:id="module-services-pleroma">
6 <title>Pleroma</title>
7- <para><link xlink:href="https://pleroma.social/">Pleroma</link> is a lightweight activity pub server.</para>
8- <section xml:id="module-services-pleroma-getting-started">
9- <title>Quick Start</title>
10- <para>To get quickly started, you can use this sample NixOS configuration and adapt it to your use case.</para>
11- <para><programlisting>
12- {
13- security.acme = {
14- email = "root@tld";
15- acceptTerms = true;
16- certs = {
17- "social.tld.com" = {
18- webroot = "/var/www/social.tld.com";
19- email = "root@tld";
20- group = "nginx";
21- };
22- };
23- };
24- services = {
25- pleroma = {
26- enable = true;
27- secretConfigFile = "/var/lib/pleroma/secrets.exs";
28- configs = [
29- ''
30- import Config
0000000000000000000003132- config :pleroma, Pleroma.Web.Endpoint,
33- url: [host: "social.tld.com", scheme: "https", port: 443],
34- http: [ip: {127, 0, 0, 1}, port: 4000]
3536- config :pleroma, :instance,
37- name: "NixOS test pleroma server",
38- email: "pleroma@social.tld.com",
39- notify_email: "pleroma@social.tld.com",
40- limit: 5000,
41- registrations_open: true
4243- config :pleroma, :media_proxy,
44- enabled: false,
45- redirect_on_failure: true
46- #base_url: "https://cache.pleroma.social"
4748- config :pleroma, Pleroma.Repo,
49- adapter: Ecto.Adapters.Postgres,
50- username: "pleroma",
51- password: "${test-db-passwd}",
52- database: "pleroma",
53- hostname: "localhost",
54- pool_size: 10,
55- prepare: :named,
56- parameters: [
57- plan_cache_mode: "force_custom_plan"
58- ]
5960- config :pleroma, :database, rum_enabled: false
61- config :pleroma, :instance, static_dir: "/var/lib/pleroma/static"
62- config :pleroma, Pleroma.Uploaders.Local, uploads: "/var/lib/pleroma/uploads"
63- config :pleroma, configurable_from_database: false
64- ''
65- ];
66- };
67- postgresql = {
68- enable = true;
69- package = pkgs.postgresql_12;
70- };
71- nginx = {
72- enable = true;
73- addSSL = true;
74- sslCertificate = "/var/lib/acme/social.tld.com/fullchain.pem";
75- sslCertificateKey = "/var/lib/acme/social.tld.com/key.pem";
76- root = "/var/www/social.tld.com";
77- # ACME endpoint
78- locations."/.well-known/acme-challenge" = {
79- root = "/var/www/social.tld.com/";
80- };
81- virtualHosts."social.tld.com" = {
82- addSSL = true;
83- locations."/" = {
84- proxyPass = "http://127.0.0.1:4000";
85- extraConfig = ''
86- add_header 'Access-Control-Allow-Origin' '*' always;
87- add_header 'Access-Control-Allow-Methods' 'POST, PUT, DELETE, GET, PATCH, OPTIONS' always;
88- add_header 'Access-Control-Allow-Headers' 'Authorization, Content-Type, Idempotency-Key' always;
89- add_header 'Access-Control-Expose-Headers' 'Link, X-RateLimit-Reset, X-RateLimit-Limit, X-RateLimit-Remaining, X-Request-Id' always;
90- if ($request_method = OPTIONS) {
91- return 204;
92- }
93- add_header X-XSS-Protection "1; mode=block";
94- add_header X-Permitted-Cross-Domain-Policies none;
95- add_header X-Frame-Options DENY;
96- add_header X-Content-Type-Options nosniff;
97- add_header Referrer-Policy same-origin;
98- add_header X-Download-Options noopen;
99- proxy_http_version 1.1;
100- proxy_set_header Upgrade $http_upgrade;
101- proxy_set_header Connection "upgrade";
102- proxy_set_header Host $host;
103- client_max_body_size 16m;
104- '';
105- };
106- };
107- };
108- };
109- };
110- </programlisting></para>
111- <para>Note that you'll need to seed your database and upload your pleroma secrets to the path pointed by <literal>config.pleroma.secretConfigFile</literal>. You can find more informations about how to do that in the <link linkend="module-services-pleroma-generate-config">next</link> section.</para>
112- </section>
113- <section xml:id="module-services-pleroma-generate-config">
114- <title>Generating the Pleroma Config and Seed the Database</title>
115116- <para>Before using this service, you'll need to generate your
117-server configuration and its associated database seed. The
118-<literal>pleroma_ctl</literal> CLI utility can help you with that. You
119-can start with <literal>pleroma_ctl instance gen --output config.exs
120---output-psql setup.psql</literal>, this will prompt you some
121-questions and will generate both your config file and database initial
122-migration. </para>
123-<para>For more details about this configuration format, please have a look at the <link xlink:href="https://docs-develop.pleroma.social/backend/configuration/cheatsheet/">upstream documentation</link>.</para>
124-<para>To seed your database, you can use the <literal>setup.psql</literal> file you just generated by running
125<programlisting>
126- sudo -u postgres psql -f setup.psql
127-</programlisting></para>
128- <para>In regard of the pleroma service configuration you also just generated, you'll need to split it in two parts. The "public" part, which do not contain any secrets and thus can be safely stored in the Nix store and its "private" counterpart containing some secrets (database password, endpoint secret key, salts, etc.).</para>
129130- <para>The public part will live in your NixOS machine configuration in the <link linkend="opt-services.pleroma.configs">services.pleroma.configs</link> option. However, it's up to you to upload the secret pleroma configuration to the path pointed by <link linkend="opt-services.pleroma.secretConfigFile">services.pleroma.secretConfigFile</link>. You can do that manually or rely on a third party tool such as <link xlink:href="https://github.com/DBCDK/morph">Morph</link> or <link xlink:href="https://github.com/NixOS/nixops">NixOps</link>.</para>
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131 </section>
132</chapter>
···4 version="5.0"
5 xml:id="module-services-pleroma">
6 <title>Pleroma</title>
7+ <para>
8+ <link xlink:href="https://pleroma.social/">Pleroma</link> is a lightweight activity pub server.</para>
9+ <section xml:id="module-services-pleroma-generate-config">
10+ <title>Generating the Pleroma config</title>
11+ <para>The <literal>pleroma_ctl</literal> CLI utility will prompt you some questions and it will generate an initial config file. This is an example of usage
12+<programlisting>
13+<prompt>$ </prompt>mkdir tmp-pleroma
14+<prompt>$ </prompt>cd tmp-pleroma
15+<prompt>$ </prompt>nix-shell -p pleroma-otp
16+<prompt>$ </prompt>pleroma_ctl instance gen --output config.exs --output-psql setup.psql
17+</programlisting>
18+ </para>
19+ <para>The <literal>config.exs</literal> file can be further customized following the instructions on the <link xlink:href="https://docs-develop.pleroma.social/backend/configuration/cheatsheet/">upstream documentation</link>. Many refinements can be applied also after the service is running.</para>
20+ </section>
21+ <section xml:id="module-services-pleroma-initialize-db">
22+ <title>Initializing the database</title>
23+ <para>First, the Postgresql service must be enabled in the NixOS configuration
24+<programlisting>
25+services.postgresql = {
26+ enable = true;
27+ package = pkgs.postgresql_13;
28+};
29+</programlisting>
30+and activated with the usual
31+<programlisting>
32+<prompt>$ </prompt>nixos-rebuild switch
33+</programlisting>
34+ </para>
35+ <para>Then you can create and seed the database, using the <literal>setup.psql</literal> file that you generated in the previous section, by running
36+<programlisting>
37+<prompt>$ </prompt>sudo -u postgres psql -f setup.psql
38+</programlisting>
39+ </para>
40+ </section>
41+ <section xml:id="module-services-pleroma-enable">
42+ <title>Enabling the Pleroma service locally</title>
43+ <para>In this section we will enable the Pleroma service only locally, so its configurations can be improved incrementally.</para>
44+ <para>This is an example of configuration, where <link linkend="opt-services.pleroma.configs">services.pleroma.configs</link> option contains the content of the file <literal>config.exs</literal>, generated <link linkend="module-services-pleroma-generate-config">in the first section</link>, but with the secrets (database password, endpoint secret key, salts, etc.) removed. Removing secrets is important, because otherwise they will be stored publicly in the Nix store.
45+<programlisting>
46+services.pleroma = {
47+ enable = true;
48+ secretConfigFile = "/var/lib/pleroma/secrets.exs";
49+ configs = [
50+ ''
51+ import Config
5253+ config :pleroma, Pleroma.Web.Endpoint,
54+ url: [host: "pleroma.example.net", scheme: "https", port: 443],
55+ http: [ip: {127, 0, 0, 1}, port: 4000]
5657+ config :pleroma, :instance,
58+ name: "Test",
59+ email: "admin@example.net",
60+ notify_email: "admin@example.net",
61+ limit: 5000,
62+ registrations_open: true
6364+ config :pleroma, :media_proxy,
65+ enabled: false,
66+ redirect_on_failure: true
06768+ config :pleroma, Pleroma.Repo,
69+ adapter: Ecto.Adapters.Postgres,
70+ username: "pleroma",
71+ database: "pleroma",
72+ hostname: "localhost"
0000007374+ # Configure web push notifications
75+ config :web_push_encryption, :vapid_details,
76+ subject: "mailto:admin@example.net"
00000000000000000000000000000000000000000000000000007778+ # ... TO CONTINUE ...
79+ ''
80+ ];
81+};
82+</programlisting>
83+ </para>
84+ <para>Secrets must be moved into a file pointed by <link linkend="opt-services.pleroma.secretConfigFile">services.pleroma.secretConfigFile</link>, in our case <literal>/var/lib/pleroma/secrets.exs</literal>. This file can be created copying the previously generated <literal>config.exs</literal> file and then removing all the settings, except the secrets. This is an example
0085<programlisting>
86+# Pleroma instance passwords
008788+import Config
89+90+config :pleroma, Pleroma.Web.Endpoint,
91+ secret_key_base: "<the secret generated by pleroma_ctl>",
92+ signing_salt: "<the secret generated by pleroma_ctl>"
93+94+config :pleroma, Pleroma.Repo,
95+ password: "<the secret generated by pleroma_ctl>"
96+97+# Configure web push notifications
98+config :web_push_encryption, :vapid_details,
99+ public_key: "<the secret generated by pleroma_ctl>",
100+ private_key: "<the secret generated by pleroma_ctl>"
101+102+# ... TO CONTINUE ...
103+</programlisting>
104+ Note that the lines of the same configuration group are comma separated (i.e. all the lines end with a comma, except the last one), so when the lines with passwords are added or removed, commas must be adjusted accordingly.</para>
105+106+ <para>The service can be enabled with the usual
107+<programlisting>
108+<prompt>$ </prompt>nixos-rebuild switch
109+</programlisting>
110+ </para>
111+ <para>The service is accessible only from the local <literal>127.0.0.1:4000</literal> port. It can be tested using a port forwarding like this
112+<programlisting>
113+<prompt>$ </prompt>ssh -L 4000:localhost:4000 myuser@example.net
114+</programlisting>
115+and then accessing <link xlink:href="http://localhost:4000">http://localhost:4000</link> from a web browser.</para>
116+ </section>
117+ <section xml:id="module-services-pleroma-admin-user">
118+ <title>Creating the admin user</title>
119+ <para>After Pleroma service is running, all <link xlink:href="https://docs-develop.pleroma.social/">Pleroma administration utilities</link> can be used. In particular an admin user can be created with
120+<programlisting>
121+<prompt>$ </prompt>pleroma_ctl user new <nickname> <email> --admin --moderator --password <password>
122+</programlisting>
123+ </para>
124+ </section>
125+ <section xml:id="module-services-pleroma-nginx">
126+ <title>Configuring Nginx</title>
127+ <para>In this configuration, Pleroma is listening only on the local port 4000. Nginx can be configured as a Reverse Proxy, for forwarding requests from public ports to the Pleroma service. This is an example of configuration, using
128+<link xlink:href="https://letsencrypt.org/">Let's Encrypt</link> for the TLS certificates
129+<programlisting>
130+security.acme = {
131+ email = "root@example.net";
132+ acceptTerms = true;
133+};
134+135+services.nginx = {
136+ enable = true;
137+ addSSL = true;
138+139+ recommendedTlsSettings = true;
140+ recommendedOptimisation = true;
141+ recommendedGzipSettings = true;
142+143+ recommendedProxySettings = false;
144+ # NOTE: if enabled, the NixOS proxy optimizations will override the Pleroma
145+ # specific settings, and they will enter in conflict.
146+147+ virtualHosts = {
148+ "pleroma.example.net" = {
149+ http2 = true;
150+ enableACME = true;
151+ forceSSL = true;
152+153+ locations."/" = {
154+ proxyPass = "http://127.0.0.1:4000";
155+156+ extraConfig = ''
157+ etag on;
158+ gzip on;
159+160+ add_header 'Access-Control-Allow-Origin' '*' always;
161+ add_header 'Access-Control-Allow-Methods' 'POST, PUT, DELETE, GET, PATCH, OPTIONS' always;
162+ add_header 'Access-Control-Allow-Headers' 'Authorization, Content-Type, Idempotency-Key' always;
163+ add_header 'Access-Control-Expose-Headers' 'Link, X-RateLimit-Reset, X-RateLimit-Limit, X-RateLimit-Remaining, X-Request-Id' always;
164+ if ($request_method = OPTIONS) {
165+ return 204;
166+ }
167+ add_header X-XSS-Protection "1; mode=block";
168+ add_header X-Permitted-Cross-Domain-Policies none;
169+ add_header X-Frame-Options DENY;
170+ add_header X-Content-Type-Options nosniff;
171+ add_header Referrer-Policy same-origin;
172+ add_header X-Download-Options noopen;
173+ proxy_http_version 1.1;
174+ proxy_set_header Upgrade $http_upgrade;
175+ proxy_set_header Connection "upgrade";
176+ proxy_set_header Host $host;
177+178+ client_max_body_size 16m;
179+ # NOTE: increase if users need to upload very big files
180+ '';
181+ };
182+ };
183+ };
184+};
185+</programlisting>
186+ </para>
187 </section>
188</chapter>
···170 url = "https://raw.githubusercontent.com/input-output-hk/haskell.nix/122bd81150386867da07fdc9ad5096db6719545a/overlays/patches/ghc/cabal-host.patch";
171 sha256 = "sha256:0yd0sajgi24sc1w5m55lkg2lp6kfkgpp3lgija2c8y3cmkwfpdc1";
172 })
000000000173 ] ++ lib.optionals stdenv.isDarwin [
174 # Make Block.h compile with c++ compilers. Remove with the next release
175 (fetchpatch {
···170 url = "https://raw.githubusercontent.com/input-output-hk/haskell.nix/122bd81150386867da07fdc9ad5096db6719545a/overlays/patches/ghc/cabal-host.patch";
171 sha256 = "sha256:0yd0sajgi24sc1w5m55lkg2lp6kfkgpp3lgija2c8y3cmkwfpdc1";
172 })
173+174+ # In order to build ghcjs packages, the Cabal of the ghc used for the ghcjs
175+ # needs to be patched. Ref https://github.com/haskell/cabal/pull/7575
176+ (fetchpatch {
177+ url = "https://github.com/haskell/cabal/commit/369c4a0a54ad08a9e6b0d3bd303fedd7b5e5a336.patch";
178+ sha256 = "120f11hwyaqa0pq9g5l1300crqij49jg0rh83hnp9sa49zfdwx1n";
179+ stripLen = 3;
180+ extraPrefix = "libraries/Cabal/Cabal/";
181+ })
182 ] ++ lib.optionals stdenv.isDarwin [
183 # Make Block.h compile with c++ compilers. Remove with the next release
184 (fetchpatch {
+6-7
pkgs/development/compilers/ghc/head.nix
···40, # Whether to build terminfo.
41 enableTerminfo ? !stdenv.targetPlatform.isWindows
4243-, version ? "9.3.20210806"
44, # What flavour to build. An empty string indicates no
45 # specific flavour and falls back to ghc default values.
46 ghcFlavour ? lib.optionalString (stdenv.targetPlatform != stdenv.hostPlatform)
···153154 src = fetchgit {
155 url = "https://gitlab.haskell.org/ghc/ghc.git/";
156- rev = "5d651c78fed7e55b3b3cd21a04499d1a2f75204d";
157- sha256 = "1z9xg8jsqr9id985wxfhkjyb3kpyrmr7vjdqzfv42cpxynd483r8";
158 };
159160 enableParallelBuilding = true;
···194 export NIX_LDFLAGS+=" -rpath $out/lib/ghc-${version}"
195 '' + lib.optionalString stdenv.isDarwin ''
196 export NIX_LDFLAGS+=" -no_dtrace_dof"
000197 '' + lib.optionalString targetPlatform.useAndroidPrebuilt ''
198 sed -i -e '5i ,("armv7a-unknown-linux-androideabi", ("e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64", "cortex-a8", ""))' llvm-targets
199 '' + lib.optionalString targetPlatform.isMusl ''
···256 ghc bootPkgs.alex bootPkgs.happy bootPkgs.hscolour
257 ] ++ lib.optionals enableDocs [
258 sphinx
259- ] ++ lib.optionals stdenv.isDarwin [
260- # TODO(@sternenseemann): use XATTR env var once we have
261- # https://gitlab.haskell.org/ghc/ghc/-/merge_requests/6447
262- xattr
263 ];
264265 # For building runtime libs
···40, # Whether to build terminfo.
41 enableTerminfo ? !stdenv.targetPlatform.isWindows
4243+, version ? "9.3.20210913"
44, # What flavour to build. An empty string indicates no
45 # specific flavour and falls back to ghc default values.
46 ghcFlavour ? lib.optionalString (stdenv.targetPlatform != stdenv.hostPlatform)
···153154 src = fetchgit {
155 url = "https://gitlab.haskell.org/ghc/ghc.git/";
156+ rev = "64923cf295ea914db458547432237a5ed1eff571";
157+ sha256 = "1s9sm4gf4r71lk0s7h9v217rxfwjf435q1jji90hlxz23wvmhr6d";
158 };
159160 enableParallelBuilding = true;
···194 export NIX_LDFLAGS+=" -rpath $out/lib/ghc-${version}"
195 '' + lib.optionalString stdenv.isDarwin ''
196 export NIX_LDFLAGS+=" -no_dtrace_dof"
197+198+ # GHC tries the host xattr /usr/bin/xattr by default which fails since it expects python to be 2.7
199+ export XATTR=${lib.getBin xattr}/bin/xattr
200 '' + lib.optionalString targetPlatform.useAndroidPrebuilt ''
201 sed -i -e '5i ,("armv7a-unknown-linux-androideabi", ("e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64", "cortex-a8", ""))' llvm-targets
202 '' + lib.optionalString targetPlatform.isMusl ''
···259 ghc bootPkgs.alex bootPkgs.happy bootPkgs.hscolour
260 ] ++ lib.optionals enableDocs [
261 sphinx
0000262 ];
263264 # For building runtime libs
···1-New build system for GHCJS 8.2
2----
3-4-`ghcjs-8.2` reworked the build system, and now comes with its own
5-small package set of dependencies. This involves autogenerating
6-several sources and cabal files, based on a GHC
7-checkout. `callCabal2nix` is off limits, since we don't like "import
8-from derivation" in nixpkgs. So there is a derivation that builds the
9-nix expression that should be checked in whenever GHCJS is updated.
10-11-Updating
12----
13-14-```
15-$ nix-prefetch-git https://github.com/ghcjs/ghcjs --rev refs/heads/ghc-8.4 \
16- | jq '{ url, rev, fetchSubmodules, sha256 }' \
17- > 8.4/git.json
18-$ cat $(nix-build ../../../.. -A haskell.compiler.ghcjs82.genStage0 --no-out-link) > 8.4/stage0.nix
19-$ cabal2nix --compiler ghcjs git://github.com/ghcjs/ghcjs-base > ghcjs-base.nix
20-```
21-
···1+{ perl
2+, autoconf
3+, automake
4+, python3
5+, gcc
6+, cabal-install
7+, runCommand
8+, lib
9+, stdenv
10+11+, ghc
12+, happy
13+, alex
14+15+, ghcjsSrc
16+, version
17+}:
18+19+runCommand "configured-ghcjs-src" {
20+ nativeBuildInputs = [
21+ perl
22+ autoconf
23+ automake
24+ python3
25+ ghc
26+ happy
27+ alex
28+ cabal-install
29+ ] ++ lib.optionals stdenv.isDarwin [
30+ gcc # https://github.com/ghcjs/ghcjs/issues/663
31+ ];
32+ inherit ghcjsSrc;
33+} ''
34+ export HOME=$(pwd)
35+ mkdir $HOME/.cabal
36+ touch $HOME/.cabal/config
37+ cp -r "$ghcjsSrc" "$out"
38+ chmod -R +w "$out"
39+ cd "$out"
40+41+ # TODO: Find a better way to avoid impure version numbers
42+ sed -i 's/RELEASE=NO/RELEASE=YES/' ghc/configure.ac
43+44+ # These files are needed by ghc-boot package, and these are generated by the
45+ # make/hadrian build system when compiling ghc. Since we dont have access to
46+ # the generated code of the ghc while it got built, here is a little hack to
47+ # generate these again.
48+ runhaskell ${./generate_host_version.hs}
49+ mkdir -p utils/pkg-cache/ghc/libraries/ghc-boot/dist-install/build/GHC/Platform
50+ mv Host.hs utils/pkg-cache/ghc/libraries/ghc-boot/dist-install/build/GHC/Platform/Host.hs
51+ mv Version.hs utils/pkg-cache/ghc/libraries/ghc-boot/dist-install/build/GHC/Version.hs
52+53+ # The ghcjs has the following hardcoded paths of lib dir in its code. Patching
54+ # these to match the path expected by the nixpkgs's generic-builder, etc.
55+ sed -i 's/libSubDir = "lib"/libSubDir = "lib\/ghcjs-${version}"/' src-bin/Boot.hs
56+ sed -i 's@let libDir = takeDirectory haddockPath </> ".." </> "lib"@let libDir = takeDirectory haddockPath </> ".." </> "lib/ghcjs-${version}"@' src-bin/HaddockDriver.hs
57+58+ patchShebangs .
59+ ./utils/makePackages.sh copy
60+''
···1355 # 2021-06-20: Tests fail: https://github.com/haskell/haskell-language-server/issues/1949
1356 hls-refine-imports-plugin = dontCheck super.hls-refine-imports-plugin;
13571358- # 2021-03-09: Golden tests seem to be missing in hackage release:
1359- # https://github.com/haskell/haskell-language-server/issues/1536
1360- hls-tactics-plugin = dontCheck (super.hls-tactics-plugin.override { refinery = self.refinery_0_3_0_0; });
13611362 # 2021-03-21 Test hangs
1363 # https://github.com/haskell/haskell-language-server/issues/1562
1364- # Jailbreak because of: https://github.com/haskell/haskell-language-server/pull/1595
1365- ghcide = doJailbreak (dontCheck super.ghcide);
1366-1367- # 2020-03-09: Tests broken in hackage release
1368- # fixed on upstream, but not released in hiedb 0.3.0.1
1369- # https://github.com/wz1000/HieDb/issues/30
1370- hiedb = dontCheck super.hiedb;
13711372 data-tree-print = doJailbreak super.data-tree-print;
1373···1444 # compatible with Cabal 3. No upstream repository found so far
1445 readline = appendPatch super.readline ./patches/readline-fix-for-cabal-3.patch;
14461447- # 2020-12-05: http-client is fixed on too old version
1448- essence-of-live-coding-warp = doJailbreak (super.essence-of-live-coding-warp.override {
1449- http-client = self.http-client_0_7_8;
1450- });
14511452 # 2020-12-06: Restrictive upper bounds w.r.t. pandoc-types (https://github.com/owickstrom/pandoc-include-code/issues/27)
1453 pandoc-include-code = doJailbreak super.pandoc-include-code;
···1843 testFlags = [ "--pattern" "!/[NOCI]/" ];
1844 };
18451846- # Tests require to run a binary which isn't built
1847- lsp-test = dontCheck super.lsp-test;
1848-1849 # 2021-05-22: Tests fail sometimes (even consistently on hydra)
1850 # when running a fs-related test with >= 12 jobs. To work around
1851 # this, run tests with only a single job.
···19241925 # Needs Cabal >= 3.4
1926 chs-cabal = super.chs-cabal.override {
1927- Cabal = self.Cabal_3_6_0_0;
1928 };
19291930 # 2021-08-18: streamly-posix was released with hspec 2.8.2, but it works with older versions too.
···19321933 # 2021-09-06: hadolint depends on language-docker >= 10.1
1934 hadolint = super.hadolint.override {
1935- language-docker = self.language-docker_10_1_1;
1936 };
0000000000019371938} // import ./configuration-tensorflow.nix {inherit pkgs haskellLib;} self super
···1355 # 2021-06-20: Tests fail: https://github.com/haskell/haskell-language-server/issues/1949
1356 hls-refine-imports-plugin = dontCheck super.hls-refine-imports-plugin;
13571358+ # 2021-09-14: Tests are broken because of undeterministic variable names
1359+ hls-tactics-plugin = dontCheck super.hls-tactics-plugin;
013601361 # 2021-03-21 Test hangs
1362 # https://github.com/haskell/haskell-language-server/issues/1562
1363+ ghcide = dontCheck super.ghcide;
00000013641365 data-tree-print = doJailbreak super.data-tree-print;
1366···1437 # compatible with Cabal 3. No upstream repository found so far
1438 readline = appendPatch super.readline ./patches/readline-fix-for-cabal-3.patch;
14391440+ # 2020-12-05: this package requires a newer version of http-client,
1441+ # but it still compiles with older version:
1442+ # https://github.com/turion/essence-of-live-coding/pull/86
1443+ essence-of-live-coding-warp = doJailbreak super.essence-of-live-coding-warp;
14441445 # 2020-12-06: Restrictive upper bounds w.r.t. pandoc-types (https://github.com/owickstrom/pandoc-include-code/issues/27)
1446 pandoc-include-code = doJailbreak super.pandoc-include-code;
···1836 testFlags = [ "--pattern" "!/[NOCI]/" ];
1837 };
18380001839 # 2021-05-22: Tests fail sometimes (even consistently on hydra)
1840 # when running a fs-related test with >= 12 jobs. To work around
1841 # this, run tests with only a single job.
···19141915 # Needs Cabal >= 3.4
1916 chs-cabal = super.chs-cabal.override {
1917+ Cabal = self.Cabal_3_6_1_0;
1918 };
19191920 # 2021-08-18: streamly-posix was released with hspec 2.8.2, but it works with older versions too.
···19221923 # 2021-09-06: hadolint depends on language-docker >= 10.1
1924 hadolint = super.hadolint.override {
1925+ language-docker = self.language-docker_10_1_2;
1926 };
1927+1928+ # 2021-09-13: hls 1.3 needs a newer lsp than stackage-lts. (lsp >= 1.2.0.1)
1929+ # (hls is nearly the only consumer, but consists of 18 packages, so we bump lsp globally.)
1930+ lsp = doDistribute self.lsp_1_2_0_1;
1931+ lsp-types = doDistribute self.lsp-types_1_3_0_1;
1932+ # Not running the "example" test because it requires a binary from lsps test
1933+ # suite which is not part of the output of lsp.
1934+ lsp-test = doDistribute (overrideCabal self.lsp-test_0_14_0_1 (old: { testTarget = "tests func-test"; }));
1935+1936+ # 2021-09-14: Tests are flaky.
1937+ hls-splice-plugin = dontCheck super.hls-splice-plugin;
19381939} // import ./configuration-tensorflow.nix {inherit pkgs haskellLib;} self super
···252 # remove integer-simple because it appears to be broken with
253 # musl and non-static-linking.
254 integer-simple = {};
000255 };
256257 # Get some cache going for MUSL-enabled GHC.
···300 # package sets (like Cabal, jailbreak-cabal) are
301 # working as expected.
302 cabal-install = all;
303- Cabal_3_6_0_0 = with compilerNames; [ ghc884 ghc8107 ];
304 cabal2nix-unstable = all;
305 funcmp = all;
306 # Doesn't currently work on ghc-9.0:
···252 # remove integer-simple because it appears to be broken with
253 # musl and non-static-linking.
254 integer-simple = {};
255+256+ ghcjs = {};
257+ ghcjs810 = {};
258 };
259260 # Get some cache going for MUSL-enabled GHC.
···303 # package sets (like Cabal, jailbreak-cabal) are
304 # working as expected.
305 cabal-install = all;
306+ Cabal_3_6_1_0 = with compilerNames; [ ghc884 ghc8107 ghc901 ghc921 ];
307 cabal2nix-unstable = all;
308 funcmp = all;
309 # Doesn't currently work on ghc-9.0: